Latence orientovaná architektura procesoru - Latency oriented processor architecture

Latence orientovaná architektura procesoru je mikroarchitektura a mikroprocesor navržen tak, aby sloužil sériovému výpočtu vlákno s nízkou latencí. To je typické pro většinu Centrální jednotky zpracování (CPU) vyvíjený od 70. let. Tyto architektury mají obecně za cíl v daném časovém období provést co nejvíce instrukcí náležejících k jednomu sériovému vláknu; čas na úplné provedení jedné instrukce od fáze načtení do fáze vyřazení se však může lišit od několika cyklů až po několik stovek cyklů v některých případech.[1][stránka potřebná ] Latence orientované architektury procesorů jsou opakem procesorů orientovaných na propustnost, které se více zabývají celkem propustnost systému, spíše než služby latence pro všechna jednotlivá vlákna, na kterých pracují.[2][stránka potřebná ][3]

Flynnova taxonomie

Latence orientované architektury procesorů by normálně spadaly do kategorie SISD klasifikace podle flynnovy taxonomie. To implikuje, že typickou charakteristikou architektur procesorů orientovaných na latenci je provedení jedné úlohy pracující na jediném datovém proudu. Nějaký SIMD stylová multimediální rozšíření populárních instrukčních sad, například Intel MMX a SSE instrukce by rovněž měly spadat do kategorie architektur procesorů orientovaných na latenci;[2] protože i když fungují na velké datové sadě, jejich primárním cílem je také snížit celkovou latenci pro celý daný úkol.

Implementační techniky

Existuje mnoho architektonických technik používaných ke snížení celkové latence pro jeden výpočetní úkol. Ty obvykle zahrnují přidání dalšího hardwaru do potrubí obsluhovat pokyny, jakmile jsou získány z Paměť nebo mezipaměť instrukcí. Pozoruhodnou charakteristikou těchto architektur je, že významná oblast čipu je spotřebována v jiných částech než Exekuční jednotky oni sami. Důvodem je zkrácení doby potřebné k dokončení „typického“ úkolu ve výpočetním prostředí. Typickou výpočetní úlohou je sériová sada instrukcí, kde je vysoká závislost na výsledcích vytvořených předchozími instrukcemi stejné úlohy. Dává tedy smysl, že mikroprocesor bude trávit čas prováděním mnoha dalších úkolů kromě výpočtů požadovaných samotnými jednotlivými pokyny. Pokud nebezpečí během výpočtu nejsou rychle vyřešeny, pak se latence vlákna zvýší. Důvodem je to, že provedení následných instrukcí zablokuje nebezpečí a v závislosti na implementaci kanálu může buď zcela zastavit postup, dokud nebude závislost vyřešena, nebo povede k lavině dalších nebezpečí v budoucích pokynech; což dále zhoršuje dobu provádění vlákna.[4][5]

Návrhový prostor mikroarchitektonických technik je velmi velký. Níže jsou uvedeny některé z nejčastěji používaných technik ke snížení celkové latence vlákna.

Architektura instrukční sady (ISA)

Většina architektur dnes používá kratší a jednodušší pokyny, například načíst / uložit architekturu, které pomáhají optimalizovat potrubí instrukcí pro rychlejší provedení. Pokyny jsou obvykle všechny stejné velikosti, což také pomáhá při optimalizaci logiky načítání instrukcí. Takový ISA se nazývá a RISC architektura.[6]

Pokyn potrubí

Pipelining překrývá provedení více instrukcí ze stejného provádějícího vlákna za účelem zvýšení taktovací frekvence nebo zvýšení počtu instrukcí, které se dokončí za jednotku času; čímž se zkrátí celková doba spuštění vlákna. Místo čekání na to, aby jedna instrukce dokončila všechny její fáze provádění, je zpracováno více instrukcí současně, v jejich příslušných fázích uvnitř kanálu. [A]

Přejmenování registru

Tato technika se používá k efektivnímu zvýšení celkové velikosti souboru registru, než je uvedeno v ISA programátorům, a k eliminaci falešných závislostí. Předpokládejme, že máme dvě po sobě jdoucí pokyny, které odkazují na stejný registr. První čte registr, zatímco druhý do něj zapisuje. Aby byla zachována správnost programu, je nezbytné zajistit, aby druhá instrukce nezapisovala do registru, než první bude moci přečíst svou původní hodnotu. Toto je příklad a Zápis po přečtení (WAR) závislost. Aby byla tato závislost vyloučena, kanál by interně „přejmenoval“ instrukci tak, že ji přiřadí k internímu registru. Instrukce je tedy povolena k provádění a výsledky vytvořené touto instrukcí budou nyní okamžitě k dispozici všem následným instrukcím, přestože skutečný cílový registr určený programem bude zapsán později. Podobně, pokud obě instrukce jednoduše znamenaly zápis do stejného registru Write-After-Write (WAW), kanál by je přejmenoval a zajistil, aby jejich výsledky byly k dispozici budoucím instrukcím bez nutnosti serializace jejich provádění. [b]

Organizace paměti

Různé úrovně paměti, které zahrnuje mezipaměti, hlavní paměť a energeticky nezávislé úložiště jako pevné disky (kde jsou uloženy pokyny k programu a data), jsou určeny k využití prostorová lokalita a časová lokalita snížit celkový doba přístupu do paměti. Čím méně času procesor stráví čekáním na načtení dat z paměti, tím nižší počet instrukcí spotřebovává prostředky kanálu, zatímco nečinně sedí a nedělá žádnou užitečnou práci. Potrubí instrukcí bude zcela zastaveno, pokud budou všechny jeho vnitřní vyrovnávací paměti (například rezervační stanice ) jsou plněny do svých příslušných kapacit. Pokud tedy instrukce spotřebovávají méně nečinných cyklů uvnitř potrubí, existuje větší šance na zneužití Paralela na úrovni instrukcí (ILP), protože logika načítání může za jednotku času získat větší počet pokynů z mezipaměti / paměti. [C]

Spekulativní provedení

Hlavní příčinou stání potrubí jsou závislosti na řízení toku, tj. Když není předem znám výsledek větvové instrukce (což je obvykle případ). Mnoho architektur dnes používá komponenty prediktoru větve k uhodnutí výsledku větve. Provádění pokračuje po předpokládané cestě programu, ale pokyny jsou označeny jako spekulativní. Pokud se odhad ukáže jako správný, je povoleno úspěšně dokončit pokyny a aktualizovat jejich výsledky zpět, aby se zaregistroval soubor / paměť. Pokud byl odhad nesprávný, jsou z kanálu vypuštěny všechny spekulativní pokyny a spuštění (znovu) začne po skutečné správné cestě k programu. Udržováním vysoké přesnosti předpovědi je kanál schopen výrazně zvýšit propustnost provádějícího vlákna. [d]

Out-of-order provedení

Ne všechny pokyny ve vlákně se provádějí stejně dlouho. Superskalární kanály mají obvykle několik možných cest pro pokyny v závislosti na aktuálním stavu a samotném typu instrukce. Proto se zvyšuje pokyny na cyklus (IPC) kanál umožňuje provádění pokynů mimo pořadí, takže pokyny později v programu nejsou pozastaveny kvůli instrukci, jejíž dokončení bude trvat déle. Všechny pokyny jsou registrovány ve vyrovnávací paměti pro opětovné objednání, když jsou načteny potrubím a je jim umožněno odejít (tj. Zapsat zpět jejich výsledky) v pořadí původního programu, aby byla zachována správnost. [E]

Superskalární provedení

Super-skalární instrukční potrubí přitahuje více instrukcí v každém hodinovém cyklu, na rozdíl od jednoduchého skalárního kanálu. To se zvyšuje Paralela na úrovni instrukcí (ILP) tolikrát, kolikrát byly načteny instrukce v každém cyklu, s výjimkou případů, kdy je kanál zastaven kvůli závislostem dat nebo toku toku. I když je rychlost vyřazení superskalárních kanálů obvykle menší než jejich rychlost načítání, celkový počet instrukcí provedených za jednotku času (> 1) je obecně větší než skalární kanál. [F]

Kontrastujte s propustností orientovanými architekturami procesorů

Naproti tomu a propustnost Orientovaná architektura procesoru je navržena tak, aby maximalizovala množství „užitečné práce“ provedené ve významném časovém období. Užitečná práce se týká velkých výpočtů významného množství dat. Dělají to paralelizací pracovního zatížení, aby bylo možné provádět mnoho výpočtů současně. Výpočty mohou patřit k jednomu úkolu nebo omezenému počtu více úkolů. Celkový čas potřebný k dokončení 1 provedení je podstatně větší než u architektury procesoru orientované na latenci, ale celkový čas potřebný k dokončení velké sady výpočtů je výrazně snížen. Latence se často obětuje, aby se dosáhlo vyšší propustnosti za cyklus.[3] Výsledkem je, že procesor orientovaný na latenci může dokončit jeden výpočet výrazně rychleji než procesor orientovaný na propustnost; procesor orientovaný na propustnost by však mohl být částečně přes stovky takových výpočtů v době, kdy procesor orientovaný na latenci dokončí 1 výpočet.[2]

Latence orientované procesory vynakládají značnou oblast čipů na sofistikované řídicí struktury, jako je predikce větví, předávání dat, vyrovnávací paměť pro opětovné objednání, velké registrační soubory a mezipaměti v každém procesoru. Tyto struktury pomáhají snižovat provozní latenci a dobu přístupu do paměti na instrukci a výsledky zpřístupňují co nejdříve. Na druhou stranu architektury orientované na propustnost mají obvykle velké množství procesorů s mnohem menšími mezipaměti a jednodušší logikou řízení. To pomáhá efektivně využívat šířku pásma paměti a zvýšit celkový počet z celkového počtu prováděcích jednotek ve stejné oblasti čipu.[3]

GPU jsou typickým příkladem architektur procesorů orientovaných na propustnost.

Poznámky

  1. ^ Organizace a design počítače: Hardwarové / softwarové rozhraní, Kapitola 4[5]
  2. ^ Počítačová architektura: kvantitativní přístup, Oddíl 3.1[4]
  3. ^ Organizace a design počítače: Hardwarové / softwarové rozhraní, Kapitola 5[5]
  4. ^ Počítačová architektura: kvantitativní přístup, Oddíl 3.3[4]
  5. ^ Počítačová architektura: kvantitativní přístup, Oddíly 3.4, 3.5[4]
  6. ^ Počítačová architektura: kvantitativní přístup, Oddíly 3.6-3.8[4]

Reference

  1. ^ John Paul Shen; Mikko H. Lipasti (2013). Moderní design procesoru. McGraw-Hill Professional. ISBN  978-1478607830.
  2. ^ A b C Yan Solihin (2016). Základy paralelní vícejádrové architektury. Chapman & Hall / CRC Computational Science. ISBN  978-1482211184.
  3. ^ A b C Michael Garland; David B. Kirk (2010). „Porozumění architekturám orientovaným na propustnost“. Komunikace ACM. 53 (11): 58–66. doi:10.1145/1839676.1839694.
  4. ^ A b C d E John L. Hennessy; David A. Patterson (2013). Počítačová architektura: kvantitativní přístup (Páté vydání.). Nakladatelé Morgan Kaufmann. ISBN  978-0123838728.
  5. ^ A b C David A. Patterson; John L. Hennessy (2013). Organizace a design počítače: Hardwarové / softwarové rozhraní (Páté vydání.). Nakladatelé Morgan Kaufmann. ISBN  9780124078864.
  6. ^ Bhandarkar, Dileep; Clark, Douglas W. (1. ledna 1991). Výkon z architektury: Porovnání RISC a CISC s obdobnou hardwarovou organizací. Sborník příspěvků ze čtvrté mezinárodní konference o architektonické podpoře programovacích jazyků a operačních systémů. ACM. 310–319. doi:10.1145/106972.107003.