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

<{ForumPost(poster="Zulgot", timestamp=2016-06-02 22:49:40)}>
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
<{/ForumPost}>

