FAV-ZCU/KIV POT/16. Architektury počítačů.md

6 KiB

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