Přidání poznámek z POT k architekturám počítačů
This commit is contained in:
parent
64c6ab374e
commit
5c4cfc644b
1 changed files with 128 additions and 0 deletions
128
KIV POT/16. Architektury počítačů.md
Normal file
128
KIV POT/16. Architektury počítačů.md
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
# Architektury počítačů
|
||||||
|
|
||||||
|
**Hierarchie paměťového systému**
|
||||||
|
- s rychlostí paměti roste její cena (rychlá paměť nemůže být velká)
|
||||||
|
- od nejrychlejších po nejpomalejší
|
||||||
|
- registry
|
||||||
|
- cache
|
||||||
|
- hlavní paměť
|
||||||
|
- virtuální paměť
|
||||||
|
- externí (disková) paměť
|
||||||
|
- archívní pásky
|
||||||
|
|
||||||
|
**Cache** (plně asociativní)
|
||||||
|
- koncepce vychází z časové a prostorové lokality výpočtu
|
||||||
|
- referovaná adresa v paměti bude pravděpodobně použita opakovaně
|
||||||
|
- pravděpodobně bude použito i blízké okolí referované adresy
|
||||||
|
- cache obsahuje kopie naposled použitých slov paměti a okolních adres
|
||||||
|
- u každé položky v cache je i adresa hlavní paměti, odkud byla kopírována
|
||||||
|
|
||||||
|
**Cache na principu rychlé SRAM**
|
||||||
|
- obvykle rozdělena na několik částí (cest)
|
||||||
|
- Tag, Index, Slovo
|
||||||
|
- část adresy z CPU (index) vybere řádku ve všech cestách současně
|
||||||
|
- zbytek adresy (tag) se porovná komparátory s adresou u dané řádky
|
||||||
|
- není-li shoda v žádném komparátoru, nahradí se celý blok ve zvolené cestě novými daty
|
||||||
|
- příklad uložení dat v jednocestné cache
|
||||||
|
- čtení z adresy `A1231C80` přepíše původní blok z adresy `50001C80` na indexu `1C8`
|
||||||
|
- dvoucestná cache by mohla mít `A1231C80` v jedné cestě a `50001C80` ve druhé
|
||||||
|
- příklad: situace cache hit
|
||||||
|
- cesta má na indexu `1C6` stejný tag jako je v adrese vystavené procesorem
|
||||||
|
- příklad: situace cache miss
|
||||||
|
- elektronika cache vybere některou z cest a nahradí data na indexu `1C6` daty z adresy `033E1C65`
|
||||||
|
|
||||||
|
**Zápis do cache**
|
||||||
|
- Write Back
|
||||||
|
- data se zapisují jen do cache
|
||||||
|
- do RAM se zapíší až při výměně bloku za jiný
|
||||||
|
- Write Through
|
||||||
|
- data se zapisují do cache i do RAM
|
||||||
|
|
||||||
|
**Problémy koherence**
|
||||||
|
- oba procesory mohou mít v cache kopii stejné adresy
|
||||||
|
- při změně obsahu jedním z nich je potřeba další kopie zneplatnit
|
||||||
|
- alternativa: neukládat sdílenou oblast paměti do cache
|
||||||
|
|
||||||
|
**Paralelní výpočty**
|
||||||
|
- klasické rozdělené výpočtů podle způsobu provádění
|
||||||
|
- SISD (Single Instruction, Single Data)
|
||||||
|
- výpočet provádí jeden procesor jednoduchou operační jednotkou
|
||||||
|
- SIMD (Single Instruction, Multiple Data)
|
||||||
|
- výpočet provádí jeden procesor, několik stejných operačních jednotek provádí tutéž instrukci s různými daty
|
||||||
|
- MIMD (Multiple Instruction, Multiple Data)
|
||||||
|
- výpočet provádí několik procesorů, každý podle svého programu se svými daty
|
||||||
|
- Data Flow
|
||||||
|
- instrukce nejsou v programu zapsány sekvenčně, ale je dána množina požadovaných operací, které se provádí, jsou-li k dispozici požadovaná data
|
||||||
|
|
||||||
|
**Proudové zpracování** (pipeline)
|
||||||
|
- každá instrukce postupně zpracovávána v několika stupních
|
||||||
|
- kompletní zpracování instrukce vyžaduje několik taktů CLK
|
||||||
|
- v procesoru je současně v různých fázích zpracováváno několik instrukcí
|
||||||
|
- v každém taktu procesor dokončí jednu instrukci
|
||||||
|
- problémy
|
||||||
|
- přístup k datům v paměti vyžaduje větší počet taktů
|
||||||
|
- instrukce skoku a podmíněných skoků naušují pipeline
|
||||||
|
|
||||||
|
**Superskalární procesor**
|
||||||
|
- procesor provádí několik instrukcí současně
|
||||||
|
- má je ve frontě a rozpozná možnost paralelního provedení
|
||||||
|
- problémy s různě dlouhými instrukcemi
|
||||||
|
- instrukce mohou pracovat s nezávislými operandy
|
||||||
|
- vhodným pořadím instrukcí v programu (optimalizujícím překladačem) lze podpořit jejich paralelní provádění
|
||||||
|
|
||||||
|
**Paralelismus na bázi mikrooperací**
|
||||||
|
- provádění mikrooperací v přeházeném pořadí (out of order)
|
||||||
|
- několik instrukcí paralelně rozloženo
|
||||||
|
- několik operačních jednotek (EU) provádí nezávislé mikrooperace v libovolném pořadí, pokud jsou k dispozici potřebné operandy
|
||||||
|
|
||||||
|
**Podpora více vláken**
|
||||||
|
- každé vlákno provádí procesor s vlastní sadou registrů
|
||||||
|
- paralelně prováděné části programu (vlákna/procesy) určí programátor resp. operační systém
|
||||||
|
- vlákna (thread) - společné adresní prostory
|
||||||
|
- procesy (process) - oddělené adresní prostory
|
||||||
|
|
||||||
|
**SMT** (Simultaneous MultiThreading)
|
||||||
|
- dvě nebo více vláken sdílí společné Execution Units (EU)
|
||||||
|
- výhoda: větší pravděpodobnost nezávislých mikrooperací
|
||||||
|
- každé vlákno pracuje se svým nezávislým logickým procesorem
|
||||||
|
- skutečné pracovní registry jsou součástí fytického procesoru
|
||||||
|
|
||||||
|
**SMT: HyperThreading** (Intel)
|
||||||
|
- každé jádro schopno provádět 2 vlákna
|
||||||
|
- oba procesory maj společenou EU (Execution Unit)
|
||||||
|
- paralelní běh T1 || T2 je jiný než T1 || T3
|
||||||
|
|
||||||
|
### Charakteristiky procesorů Core i7
|
||||||
|
|
||||||
|
- obsahují několik jader
|
||||||
|
- každé vlákno může paralelně provádět 2 vlákna
|
||||||
|
- jádra mají společnou L3 cache
|
||||||
|
- na čipu trojnásobný kanál pro připojení DRAM
|
||||||
|
- pro komunikaci s dalšími procesory nebo vzdálenými DRAM slouží kanály (sběrnice) QPI (Quick Path Interconnect)
|
||||||
|
|
||||||
|
**Stupně instrukcí v jádře**
|
||||||
|
- pořadí dané programem
|
||||||
|
- čtení instrukcí a řazení do fronty
|
||||||
|
- dekódování instrukcí
|
||||||
|
- současné ukládání 2 vláken do fronty
|
||||||
|
- pořadí out of order
|
||||||
|
- několik instrukcí paralelně rozloženo na mikrooperace
|
||||||
|
- několik operačních jednotek (EU) provádí nezávislé mikrooperace v libovolném pořadí, pokud jsou k dispozici příslušné operandy
|
||||||
|
|
||||||
|
**Predikce skoků**
|
||||||
|
- maximální výkon architektury i7 je dosažen při plynulém čtení instrukcí z paměti
|
||||||
|
- podmíněné skoky mohou podle výsledku testu vést k nutnosti zrušit část obsahu fronty instrukcí atd.
|
||||||
|
- predikce skoků se snaží podle adresy a cíle skokové instrukce a podle historie predikovat, zda se skok provede nebo ne
|
||||||
|
|
||||||
|
**Detekce krátkých cyklů**
|
||||||
|
- krátké cykly jsou detekovány na úrovni mikrooperací
|
||||||
|
- instrukce v cyklu nejsou znovu čteny a dekódovány
|
||||||
|
|
||||||
|
**Instrukce SIMD**
|
||||||
|
- stejná instrukce se provádí s více daty
|
||||||
|
- vhodné pro vektorové a maticové operace, grafické aplikace, ...
|
||||||
|
|
||||||
|
**Cache paměti**
|
||||||
|
- L1 cache: oddělená datová a kódová cache, samostatná pro každé jádro
|
||||||
|
- L2 cache: společná pro kód a data, samostatná pro každé jádro
|
||||||
|
- L3 cache: společná pro kód a data, společná pro všechna jádra
|
Loading…
Reference in a new issue