Staré písemky - Bulej, zápisky + 31.5.2016 Bulej

Zulgot
Matfyz(ák|ačka) level I
Příspěvky: 4
Registrován: 2. 6. 2016 22:38
Typ studia: Informatika Bc.

Staré písemky - Bulej, zápisky + 31.5.2016 Bulej

Příspěvek od Zulgot »

Aloha,
post obsahuje: staré písemky z fora + co jsem si vzpoměl ze 31.5.2016 s Bulejem, dále zápisky z jeho slajdů.
Btw na zkoušku doporučuji přečíst si něco z knihy D. A. Patterson, J. L. Hennessy: Computer Organization and Design - dobrá je část o cache a pipeline (dohromady stačí přečíst tak 150 stránek a jde to rychle, je tam ranec obrázků :D :D )

2015
Zadáni tak po paměti, pokud někdo víte přesně, klidně pište: (Body spíš odhadem)
1) Jak ovlivňuje rychlost procesor a paměťový subsystém? (1)
2) Jak se zjistí kam se má program vrátit po ukončení funkce (při příkazu return) (1)
3) Rozdíl mezi Write-Through a Write-back (2)
4) Popište přístup do plně asociativní cache. (2)
5) Co dělá řadič pipeline-y? (2)
6) Jak se chová procesor při vyvolání výjimky nebo přerušeni? (2)
7) Co ovlivňuje počet vnořených funkcí? (1)
8 ) Velmi podobná šestce. Kdy v rámci zpracování instrukce se procesor dozví, že došlo k přerušení či výjimce a co s tou instrukcí udělá. (1)
9) Něco k forwardingu/bypassingu (1)
10) Zadané tři procesory s frekvencí, počtem instrukcí a celkovým časem. Jak se musí změnit frekvence jednoho procesoru, aby běžel tak dlouho jako ten druhý? (1)
11) Výhody Von Neummanovy architektury. (2)
12) Mějme program jež běží na 16 počítačích a 20% času trvá rozdělení práce mezi počítače. Jak dlouho bude běžet na 32 počítačích? (1)
13) Jak procesor čte instrukce? Jak pozná co je operand v instrukci a co je instrukce (nebo něco takového) (1)
14) Napište ve vlastním asssembleru jak byste od 5bitu do 10 bitu nějakého Intu zapsali 5 bitové číslo. (2)

2015
1) jakým způsobem ovlivňuje překladač, programovací jazyk a architektura procesoru rychlost vykonávání programu (1 bod)
2) Nakreslit schéma množinově asociativní cache a popsat jak funguje (2 body)
3) odvodit vzorec pro vztah zrychlení celého programu při zrychlení části programu (1 bod)
4) výhody von-neumannovy architektury (1 bod)
5) jak se zpracovává výjimka/přerušení (1 bod)
6) na dané architektuře procesoru s daným programem je 10% instrukcí skoku, používá se statický always-not-taken prediktor s úspěšností predikce 60%, pipeline má 5 stupňů (IF,ID,EX,MA,WB), skok se vyhodnotí v EX. Jak přispějí neúspěšné predikce skoku k CPI v tomto programu, za předpokladu, že nenastávají datové hazardy, ani jiná zpoždění? (2 body)
7) jak funguje statická predikce skoku a proč je nevhodná pro vnořené cykly (2 body)
8) nejsem si uplně jistý, asi jak funguje vícecyklová datová cesta a jaké jsou limity jejího zrychlování (2 body)
9) jak se chová write-back a write-through cache pri write-missu (2 body)
10) proč je DRAM vhodnější než SRAM pro realizaci operační paměti (1 bod)
11) převod čísla z dvojkové do šestnáctkové soustavy (1 bod)
12) co ovlivňuje maximální hloubku rekurzivních volání funkcí (1 bod)
13) jaké specifické problémy nastávají u superskalární out-of-order pipeline při zpracování vyjímek/přerušení a jak se řeší (1 bod)
14) v nějakém vlastním assembleru implementujte program, který bude od proměnné uložené v paměti odčítat jedničku, dokud nebude nula, popište jaké typy instrukcí jsou k tomu potřeba (2 body)

2015
Otázky (jak si je pamatuju, nemusí stoprocentně sedět):
1) Odvoďte zrychlení programu při zrychlení jeho části (ne rychlost, zrychlení).
2) Převeďte nechutně dlouhé číslo z osmičkové soustavy do dvojkové.
3) Jak ovlivňuje zvolený algoritmus rychlost programu (nebo tak nějak)?
4) V čem je SRAM výhodnější pro cache v procesoru než DRAM?
5) Intel vzal číslo (0x1E1010) z registru, uložil ho do paměti. Tam si ho přečet MIPS, zvětšil o jedna a uložil zpátky. Pak ho Intel přečet zpátky, ale číslo se zkazilo, tj. nebylo o jedna větší (0x1F1010). Proč se tak stalo?
6) Jak funguje vonNeumanova architektura (použití, výhody, ...)
7) Jak funguje write-back princip u cache a jak ovlivňuje rychlost přístupu k cachi.
8) Jak procesor obhospodařuje výjimky a přerušení, plus co to je.
9) Jak ovlivní zvětšení cache line hity / missy a přístupové doby.
10) Máte program, který vezme i-tý prvek pole A, přičte k němu jedna a uloží ho do i+1 prvku pole A. Napište takový program ve vlastním assembleru a řekněte, jaké instrukce na to potřebujete (popište je).
11) Popište (pořádně!) přístup do přímo mapované cache.
12) Co je to asociativní paměť a kde se používá v procesoru?
13) Jak pomáhá paměťová hierarchie řešit problém vysoké latence cache? (možná v té otázce bylo i něco o prost. a čas. lokalitě algoritmů (odpovídal jsem na to, tak nevím)).
14) Co je to forwarding a bypassing v pipelajnovém procesoru.

31.5.2016
Zhruba:
write-through a write-back miss,
výpočet frekvence když znáš CPI a chceš 20% časové úspory,
význam lokálních proměnných a jak se handlujou,
SRAM vs DRAM,
nakreslit schéma plně-asociativní cache a jak funguje,
řídící hazard - co to je a příklad,
forwarding a bypassing,
jak ti cache urychluje paměť,
popis pipeline a komponent

ještě pár, ale už si nemůžu vzpomenout :D






Zápisky:



2) Výkonnost:
Mooreuv zákon - Množství tranzistorů na čipu se zdvojnásobí každé dva roky (nebo jiné technologie).
Výkonnost programu ovlivňuje:
Algoritmus - počet základních operací a I/O.
Programovací jazyk, překladač, architektura kompu - počet instrukcí na základní operaci
Procesor, paměť - rychlost provádění instrukcí
I/O subsystém - rychlost provádění I/O operací

Výkonnost - má cenu se jí zabývat kvůli vylepšení produktu a ceny, dále kvůli zkoumání vlivu architektury na výkon (zda se jedná o pokrok).

Kritéria výkonnosti - co porovnáváme, co potřebujeme.
Měřítka výkonnosti - ke kritériím udávají způsob, jak je měřit a porovnávat.

Základní metriky: doba běhu, doba odezvy, propustnost (množství práce vykonané za jednotku času).
Z pohledu uživatele: Celkový čas, procesorový čas.
Z pohledu návrháře: Rychlost provádění instrukcí - clock rate a clock cycle (jak dlouho trvá).
Z pohledu překladače: clock cycles per instruction (CPI)

Jedinným úplným a spolehlivým měřítkem je empiricky změřený reálný procesorový čas.
Není však vypovídající o procesorových časech jiných programů.

Výkonnost programu ovlivňuje:
Algoritmus - počet instrukcí, CPI - počet základních operací, datové typy
Programovací jazyk - počet instrukcí, CPI - typ základních operací, abstraktní datové typy
překladač - počet instrukcí, CPI - způsob překladu základních operací na instrukce
architektura - počet instrukcí, CPI, taktovací frekvence - instrukce potřebné k vyjádření algu, technologie (max takt. frek.), doba provádění instrukcí.

Zvyšuje se ztrátový výkon (asi prostě ztráty).
Dynamický ztrátový výkon - minimální spotřeba v klidovém stavu.
Snížilo se naptětí z 5v na 1v - energetická zeď - nelze neustále snižovat napětí (šum, tunelování elektronů).
Chlazení není snadné zlepšovat.

Částečné řešení - přechod od 1 procesorových k více-procesorovým arch.
Dříve - více samostatných proc., nyní více jádrové proc.
Zvyšují propustnost, zůstává taktovací frekvence a CPI - sekvenční algy se nemění.
Programi se nezlepší samy (jen občas díky API).
Je třeba psát programy explicitně paralelní.

Měření výkonnosti:
Pomocí benchmarků - SPEC (Standard Performance Evaluation Corporation) se tím zabývá.
SPEC CPU - celočíselné výpočty, výpočty s plovoucí čárkou, SPECRatio

Bludy:
1. Při zlepšení části systému nedojde k úměrnému zlepšení výkonnosti celého systému!
Amdahlův zákon: Zvýšení výkonnosti dosažitelé nějakým zlepšením je omezené mírou používání tohoto zlepšení.
Optimalizace má největší užitek pro nejčastější případy!
2. Nestačí použít podmnožinu faktorů (taktovací frekvence, CPI, počet instrukcí) jako samostatné metriky!
Např. špatné měřítko: MIPS (Milion instructions per second) - nelze porovnávat kompy s různou instr. sadou, liší se dle instrukčního mixu daného programu



3) Procesor:

Digitální počítač - 2 úrovně napětí -> vyšší 1, nižší 0
Kombinační obvody - výstup závisí pouze na vstupu (není paměť), reprezentace logických funkcí
Sekvenční obvody - výstup závisí na vstupu a vnitřním stavu (paměť), umožňují posloupnost kroků výpočtu

Logická funkce - výstupní hodnota je funkcí vstupních hodnot, pravidvostní tabulka - pro k vstupů 2^k výsledků
Booleova algebra - proměnné s hodnotami {0,1}, logické operátory (primitivní log. funkce) - not, and, or (nebo jen nand nebo nor).
Axiomy booleovy algebry - viz slajdy, ale jsou fakt triviální.

Rozšíření log. funkcí na operace s konečnými posloupnosti bitů:
Slovo= posloupnost bitů f:(B^n)^k->B^n, kde B náleží {0,1}, k náleží N (arita), n náleží N (délka slova)
Typické logické operace: logický součin, součet, negace, posuny v levo a v pravo,

Hradla:
Fyzická realizace logických operátorů - log signály jako proměnné, hradla jako operátory
V praxi nejčastěji kombinace nand a nor.
Funkční blok - seskupení log obvodů do většího celku
Abstrakce vnitřní struktury.

Logické obvody: - tady naučit předpisy i schémata
Jednoduchá sčítačka pro 1 bitová čísla
Sčítačka pro 1 bitová čísla s přenosem
Kompletní sčítačka pro n bitová čísla

Reprezentace přirozených čísel:
Znaménkový bit
Dvojkový doplňěk, výpočet doplňku
Reprezentace s posunutím nuly
Reprezentace v jedničkovém doplňku - předchůdce dvojkového, už se nepoužívá (odčítání potřebuje krok navíc).
Přetečení - buď ignorováno, nebo vyvolání výjimky

ALU pro sčítání a odčítání
Logický obvod znaménkového rozšíření

Násobení celých čísel - přirozená čísla jasný, celá čísla -> znaménkové rozšíření + úsporný alg.
Dělení přirozených čísel - nejsložitější aritmetická operace, nalezení celočíselného podílu a zbytku

Čísla s pevnou řádovou čárou
Vědecká notace -čísla s plovoucí řádovou čárkou
nenormalizovaná a normalizovaná mantisa
některé hodnoty nelze reprezentovat přesně
Formáty:
single, double precission
single extended, double extended
quad precision, half precision
Nekonečno, NaN

Sčítání, odčítání ve vědecké notaci
Rozdíl oproti reálným číslům
Relativní chyba při odčítání
Násobení ve vědecké notaci

Sekvenční obvody
Kombinančí obvody + paměťové prvky
Synchronní sekvenční obvody
Paměťové prvky
Dvojice invertorů se zpětnou vazbou
Klopný obvod Set-Reset
Další klopné obvody

Registr pomocí klopných obvodů
Posuvný registr pomocí klopných obvodů
32-bitová sekvenční násobička
32-bitová sekvenční dělička

Instrukční sady:
Zásobníková
Akumulátorová
Registrová
Rodiná instrukčních sad CISC (např. x86, x86-64) - velká instr sada a variabilata, různě složité funkce, proměnná délka kódování instr, složitá implementace a optimalizace
-Adresní režimy
Rodina instrukčních sad RISC - omezenější instr sada, příštup do paměti jen přes load/store, konstantní délka kódovaní instr, pevný význam jednotlivých bitů instr., snadná optimalizace

Návrh instrukční sady
pravidelnost = jednoduchost (tříoperandová, dvouoperandová aritmetika)
menší = rychlejší
little vs big endian
nejčastější = nejrychlejší
dobrý návrh = dobré kompromisy

MIPS - type immediate, jump, register
!!!!ABI
Volání podprogramů

Bludy:
Mocnejší instrukce nevedou k vyššímu výkonu!
Nejvyšší výkon nezískáme psaním v assembleru!
Neplatí, že by kvůli zpětné kompatibilitě úspěšné instrukční sady neměnili!



4) Implementace

Archiktetura MIPS
Jednocyklová datová cesta - spojení kombinačních a sekvenčních obvodů, veškeré operace v 1 cyklu
Zjednodušení: Harvardská arch (oddělena instrukční paměť)
Kroky zpracování instr

Schémata:
Sekvenční obvod úro čtení instr (fetch)
Registrové operce
Podpora registrových operací
Operace s přímými operandy
Znaménkové rozšíření
Podpora přímých operandů
Multiplexer (mux)
Binární dekódér
Přepínač vstupů
Čtení dat z paměti
Zápis dat do paměti
Podpora přístupu do paměti
Podmíněný skok s relativní adresou
Podpora podmíněného skoku
Nepodmíněný absolutní skok
Řízení jednocyklové datové cesty - řízení průchodu dat, generování řídících signálů

Řadič datové cesty - logický obvod generující řídící signály
Řadič pomocí ROM - řadič s řídící pamětí
Mips má zhruba 100 instrukcí a 300 řídících signálů (řídící ROM kapacita 4KB) - problém jak vyrobit ROM rychlejší než datovou cestu
Řadič pomocí kombinačního obvodu - rychlejší alternativa ROM - obsah ROM lze reprezentovat logickými funkcemi

Průběh hodinového cyklu - datová cesta s nepřetržitým čtením
U jednocyklového procesoru každá instrukce trvá právě 1 takt - délka cyklu= délka nejdelší instrukce, datová cesta obsahuje duplicitní prvky (2 sčítačky navíc)

Více cyklová datová cesta:
Proměnná doba zpracování instrukcí - jednoduché by neměli trvat stejně dlouho jako složité
Perioda hodinového signálu je konstantní - zpracování instrukce rozděleno na více kroků
Perioda hodinového signálu odpovídá délce kroku
Výkon více cyklového proc.

Rozdělení instrukce do kroků:
1. čtení insturkce
2. dekódování instrukce, čteční registrů
3. vykonávání operace / výpočet adresy / dokončení větvení
4. zápis výsledku / přístup do paměti
5. dokončení čtení z paměti

Princip implementace - rozdělení zpracování instrukce do kroků, izolace korků pomocí registrů pro mezivýslekdy.
řadič musí zajistit návaznost kroků v datové cestě, některé instr. mohou kroky přeskočit a skončit dříve.

1. čtení instr:
Současně probíhá: IR <- Memory[PC] a PC <- PC + 4
2. dekódování, čtení reg.:
Současně probíhá: A <- Reg[IR.rs], B <- Reg[IR.rt], ALUOUt <- PC + (SignExtend(IR.addr)<<2) (výpočet adresy podmíněného skoku, pokud instr není skok, výsledek se nepoužije)
Další kroky se liší dle typu instr.
3. vykonání operace, výpočet adr:
instr podmíněného skoku (konec) - (A==B) => PC <- ALUOut
instr nepodmíněného skoku (konec) - PC <- PC[31:28] + (IR[25:0] << 2)
Aritmeticko-logická operace - ALUOut <- A funct B
Aritmeticko-logická operace - ALUOut <- A funct SignExtend(IR[15:0])
4. Zápis výsledku / přístup do paměti:
Aritmeticko-logická operace - Reg[IR.rd] <- ALUOut
Zápis do paměti (konec) - Memory[ALUOut] ‹ B
Čtení z paměti - DR ‹ Memory[ALUOut]
5. Dokončení čtení z paměti:
Reg[IR.rt] <- DR

Schéma implementace vícecyklové datové cesty

Řízení více cyklové datové cesty:
Sekvenční proces - zpraocávní instrukcí ve více hodinových cyklech.

Schémata:
Instruction fetch/decode, register fetch
Memory access instructions
R-type instructions
Branchi nstruction
Jump instruction
Řízení vícecyklové datové cesty - schéma

Tok prováděných instrukcí:
Sekvenční očekávané řízení toku, neočekávaná změna toku (exception/trap, nebo vnější příčina)
Hardwarová podpora - zastavení vykonávaní instrukce, identifikace přičiny, uchování adresy instrukce výjimky, skok na adresu obslužné rutiny

Schémata:
Podpora výjimky přetečení
Podpora neplatné instrukce

Softwarová podpora:
Uchování stavu původního výpočtu, zjištění příčiny, obsluha příslušného typu výjimky, obnovení stavu původního výpočtu, návrat do původního výpočtu

Výkon více cyklové datové cesty
Realizace vícecyklového řadiče
Obvodový řadič
Mikroprogramový řadič
Horizontální formát mikroinstrukcí
Horizontální formát mikrosintrukcí
Nanoprogramování


5) Zvyšování výkonnost:

Faktory omezující výkon procesoru - délka strojového cyklu, CPI (latence vs propustnost), pipelining
Výkon zřetězeného procesoru
Schema:
Datová cesta pro zřetězené zpracování - rozdělena do k úseků (stages), v každém úseku jiná instrukce.
Nejpomalejší úsek určuje rychlost pipeline, mezi úseky registry (latches)
Ideální stav CPI (v každém cyklu opustí pipeline jedna instr.) - reálně CPI > 1

Schema:
Datová cesta pro zřetězené zpracování pokračování - KOLIZE a oprava

Skalární pipeline - v každém úseku se zpracuje 1 instrukce
Superskalární pipeline - v některých úsecích lze zpracovávat více instrukcí současně
Zpracování podle pořadí - podle pořadí v paměti
Zpracování mimo pořadí - pipeline může prohazovat pořadí prováděných instr.
Hloubka pipeline (pipeline depth) - počet stages

Schema:Zpracování 3 instrukcí

Scheoma Řízení pipeline - použití jednocyklového řadiče (každé instr si nese řídící signály s sebou)
využití vícecyklového řadiče - komplikované řešení

Výkonnost zřetězené datové cesty
Proč nelze dosáhnout CPI=1? (stall, hazard)

Typy hazardů v pipeline:
-Strukturální hazard - hardware nepodporuje danou kombinaci instrukcí, současné použítí sdíleného prostředku z více stupnňů pipeline
Řešení u nás - oddělené instrukční a datové paměti
Reálně - oddělení instrukční a datová cache
-Datový hazard - instrukce nemá k dispozici data pro vykonání (hodnoty argumentů jsou výsledky operací instrukce, která je ještě stále v pipeline)
nutnost počkat na předchozí instr
-Řídící hazard - nutno učinit rozhodnutí před vykonáním instrukce, podmíněný skok je zpracován až ve 3. kroku
v té době už pipeline zpracovává 2 další instr.

Pipeline diagramy:
všechny úseky trvají právě 1 cyklus

Datový hazard - operand je výsledek operace předchozí instrukce, operand je obsah paměti čtený předchozí instrkucí
Zjišťování závislostí (při návrhu) - graf
Zjišťování závislostí (v hardwaru) - vyhodnocování čísel registrů a paměťových adres všech instrukcí právě prováděných v pipeline.
Ošetření datových hazardů:
-na úrovni překladače (software interlock) - řazení instr tak, aby došly do pipeline až v okamžiku, kdy mají k dispozici všechny operandy
Mezi dvojici závislých instr. vložit nezávislou instr. (nepotřebuje žádný registr, který je předmětem závislosti)
Nevhodné řešení z hlediska kompatibility
MIPS = Microprocessor without iInterloced Pipeline Stages
-Forwarding/bypassing - poskytnutí mezivýsledku následující instrukci
Forwarding unit - zdrojový operand vykonávané instrukce je cílový operand výsledku dřívější instrukce
-Zpoždění instrukce v pipeline - v případě použití operandu (registru) bezprostředně po jeho načtení z paměti (load / use dependency)
Hazard detection unit - testování, zda zdrojový operand dekodované isntrukce je cílový operand dřívější instrukce čtení z paměti

Řídící hazard -
Ošetření řídícího hazardu:
Zpozdit pipeline do dokončení skoku (špatný řešení)
Snaha udržet stále plnou pipeline
Odkud číst další instr:
Zrychlené vyhodnocení skoku
-výpočet adresy skoku a vyhodnocení podmínky v úseku EX do ID
-Forwardování mezivýsledků
-Předpokladem je jednoduchá podmínka skoku (např. test na rovnost)
-Zpoždění 1 cyklus při skoku
Zpožděný skok (branch delay slot)
-Vždy se vykoná 1 instrukce po instrukci skok
Branch target buffer
-Cache cílových adres specifických instrukcí
Spekulativní provádění instrukcí
-Provádění instr. naslepo bez vyhodnocení podmínky skoku
-Pokud se později zjistí, že se má provádět jiná varianta, pipeline se vyprázdní (rollback)
-U složitých procesorů může znamenat částečnou virtualizaci regostrového souboru a store bufferů (zápisky do paměti)

Predikce skoku:
Statická predikce - nezávisí na historii
bez nápovědy (heuristika určena hardwarem, obvykle se předpokládá, že se skok neprovede)
s nápovědou - pravděpodobnější chování skoku určeno bitem v instrukci
Dynamická predikce - predikce na základě historie
Branch prediction buffer (history table) - predikce stejného chování jako v minulosti, cykly většinou skáčí na začátek, může být vylepšeno nápovědou
2-bitový prediktor - musí se 2x splést, než změní "názor"

Schema:
Branch history table:
Základní prediktor - tabulka bitů predikce indexována částí PC
Rozšíření - vícebitový prediktor, krelující prediktor soutěžící prediktor, branch target buffer
Podmíněné instr. Vadí různé hodnoty PC se stejnými nižšími bity? Jak je to s vnořenými cykly?

Zřetězení zpracovávání výjimky (v pipeline je k instrukcí současně)
- která instr způsobila výjimku? Info se musí propagovat v pipeline registrech
- když nastane více výjimek, kterou obsloužit dříve? Dříve v pořadí
- Obsluha výjimky - důraz na zachování konzistentního stavu procesoru
- Před obsluhou rollback (vyprázdnění)

Trend: delší pipeline - důsledky: vyšší takt frek, obecně vyšší CPI
Flynn bottleneck - teoretické omezení skalární pipeline
Superskalární pipeline - procesory typicky 4 pipeline
Paralelismus na úrovni instrukcí
Simultaneous multithreading - zpracování více nezávislých vláken současně
Temporal multithreading - úprava principů SMT pro jednu pipeline
Typická superskalární pipeline
Static multiple issue - plánování superskalární pipeline překladačem
Multiple issue MIPS
Dynamic multiple issue- dynamické plánování instr. v pipeline - optimální využití paralelismu, eliminace hazardů a prostojů
Spekulativní provádění instr.
Out-of-order execution - RAW, WAW, WAR
Out-of-oreder a výjimky - není snadné definovat místo přerušení výpočtu
Spekulativní provádění instrukcí - odhadnutí vlastností / výsledků instrukce
Návrh optimální instrukční sady
Post-RISC procesory




6) Paměťová hiearchie:

Paměťová zeď - výkon procesoru omezen výkonem paměti, paměť stejně rychlá jako proc. s dostatečnou kapacitou a rozumnou cenou je nereálná
Překonání pomocí lokality přístupu do paměti - časová lokalita (nedávná data uložit do malé, rychlé paměti), prostorová lokalita (nejspíš budeme potřebovat data poblíž těch, co jsme potřebovali nedávno - brát data po blocích)

SRAM (static) - primární cíl rychlost, sekundární kapacita, není třeba obnovovat obsah, dobře se kombinuje s ostatní proc. logikou
Schéma:
Statická RAM - klopný obvod typu D
Buňka statické RAM
6 tranzistorů na bit
Statická RAM v maticovém uspořádání

DRAM (dynamic) - primární cíl hustota (cena za bit), vysoká latence, obsah nutno občerstvovat, neze snadno kombit s logikou procu,
1 tranzistor a 1 kondenzátor na bit
Schéma:
Buňka dynamické RAM - čtení je destruktivní
Zvyšování výkonu DRAM - nejdéle trvá čtení řádku DRAM (obsahuje více dat, než je požadované slovo)
- Amortizace ceny čtení řádku - použít více slov z jednoho přečteného řádku
- Pipelining výstupu dat a výběru nového řádku

Využití lokality přístupu -
- Vyšší vrstvy: Rychlé, malé drahé
- Nižší vrstvy: Pomalé, velké, levné
- Vzájemné propojení sběrnicemi (přidávají latenci, omezují propustnost)
- Vyšší vrstvy - používanější data

Hiearchie paměťových komponent

Cache: Iluze velké a rychlé paměti - přesun dat mezi vrstvami cache řídí hardware
Přímé mapování paměti do cache
- zákl. struktura -> pole řádek (cache lines), hardwarová hashovací tabulka
- nalezení správných dat - v každém řádku může být 2^16 bloků operační paměti - kolize hashovací funkce, detekce správných dat
- Alg - přečteme řádek s indexem, pokud je nastaven valid bit a tag se shoduje s bity v adrese, jedná se ho cache hit, jinak se jedná cache miss
Režie tagů a valid bitů
Obsluha výpadku cache
Výkonnost cache - miss rate, t_hit, t_miss
Snížení miss rate - zvyšování kapacity (přímá cesta), změna organizace cache (složitější cesta)
Organizace cache: Velikost řádku - zvětšení řádku a důsledky
Vliv velikosti řádku na miss rate
Vliv velikosti řádku na plnění cache
Asociativní mapování paměti do cache + Alg
Vliv asociativity na miss rate
Plně asociativní cache
3C Model
Miss rate: ABC
Čtení dat z cache
Zápis dat do cache - Write hit (Write-through a Write-back), Write miss (Write allocate, no write allocate), Write miss v případě write-back cache
Víceúrovňové cache
Význam cache
Shrnutí


7) Paralelni zpracování

Flynnova taxonomie: SISD, SIMD, MISD, MIMD
Vektorové zpracování
Víceprocesorové systémy - SMP, NUMA, IaaS
Masivně paralelní zpracování
Evoluce GPU
Odlišnosti CPU a GPU
Odpovědět

Zpět na „NSWI143 Architektura počítačů“