Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

Intel oznámil novou architekturu - co bude umět?

30.8.2005, Eagle , článek
Intel oznámil novou architekturu - co bude umět?
Minulý týden došlo na Intel Developer Forum k oznámení nové architektury procesorů. Ta po 5 letech nahradí dnes již nevhodný NetBurst použitý u Pentií 4. Namísto vysokých frekvencí se Intel soustředí na jiné oblasti. Dá se říct, že udělal otočku o 180 stupňů.
Kapitoly článku:
  1. Intel oznámil novou architekturu - co bude umět?
  2. Nová architektura pro rok 2006
NetBurst alias Pentium 4

Současná generace procesorů architektury NetBurst byla uvedena v listopadu roku 2000. První jádro Willamette bylo poměrně podařené. Přestože nejrychlejší 2 GHz model dosahoval špičkové spotřeby přes 90W, byl to první čip, který dokázal konkurenčnímu AMD pořádně zavařit. Zatímco konkurence se trápila s hřejícím jádrem Palomino, Intel si přebral titul výrobce nejrychlejšího procesoru na trhu. V lednu roku 2002 dále torpédoval vše okolo jádrem Northwood, které bez problémů šlapalo na frekvencích vyšších než 3 GHz. V jednom okamžiku dokonce soupeřilo Pentium 4 2.8 GHz s Athlonem XP 2200+, tj. o jeden GHz pomalejším procesorem. Rozdíl výkonu byl velmi významný. Ne nadarmo se ale říká, že kdo se směje naposledy, ten se směje nejlépe. Architektura založená na vysokých frekvencích si vybrala svou daň v podobě vysoké spotřeby. Jistě, moře gigahertzů bylo pro marketing ideální, z fyzikálního hlediska to ale zas tak úžasné nebylo. A tak poslední kusy Northwoodu a vše založené na novém jádře Prescott je známé jako "ústřední topení", "opekáč topinek", "varná konvice"... zatímco Willamette se přezdívalo "Wilík", Northwoodu "Norty", Prescott si odnesl hanlivé "Prskot". Vše je založeno na tom, že nejrychlejší Pentia 4 mají cca. 10x tak velký proudový odběr než v roce 1998 uvedené jádro Coppermine Pentia III. Odběr přes 100 Ampér je cca. pětinou toho, co potřebuje při rozjezdu 40 tunová tramvaj.

Architektura Pentia 4 nazvaná NetBurst byla ve své době převratná. Čip má 39 stupňovou pipeline (v případě Northwoodu a Willamette "jen" 28 stupňovou), což je zhruba 3x tolik než vše okolo.



Základem jsou tři jednotky pro počítání celých čísel (ALU), z nichž jedna je pro komplexní operace a dvě jsou pro jednoduché operace. Tyto dvě pak běží na dvojnásobné frekvenci jádra, tj. dnes až na 7.6 GHz. Dále jsou zde dvě jednotky pro počítání s čísly s desetinnou čárkou (FPU) - jedna umí instrukce x87 a všechny SIMD (Single Instruction Multiple Data), další umí pouze x87. V těchto jednotkách dochází k samotným výpočtům a NetBurst v tomto není nijak odlišný od typického uspořádání.

Největší zvláštnost NetBurstu se nachází v oblasti dekódování instrukcí. Za normálních okolností procesor načítá instrukce x86 (a x87, MMX...) do dekodéru, kde se z nich vytvoří vnitřní microOPs - maličké jednoduché operace, kterým jednotky ALU a FPU rozumí. Jedna poměrně složitá x86 operace tak je rozložena do jedné či více microOPs. Tyto microOPs jsou pak další částí - schedulerem - distribuovány do jednotek tak, aby se jich v jednom okamžiku využilo pokud možno co nejvíce. Přitom je využíváno toho, že instrukce nemusí být zpracovány přesně v tom pořadí, v jakém se nachází v programu (Out-of-Order execution).



NetBurst: 8 stupňů Front End s Trace cache a 31 stupňů Execution

NetBurst se liší v tom, že microOPs nejsou do scheduleru a výpočetních jednotek dodávány přímo z dekodérů, ale z cache. Zatímco běžné procesory uchovávají instrukce v L1 instrukční cache, Pentium 4 žádnou takovou nemá. Namísto toho si dekodér tahá instrukce přímo z L2 cache a dekódované microOPs ukládá ve speciální paměti nazvané Trace cache. Ta má možnost uchovat až 12 tisíc těchto microOPs. Nápad s Trace cache vychází z toho, že některé instrukce již nebude potřeba dekódovat. Pokud už je procesor dekódoval dříve, budou stále v Trace cache, odkud je bude možné vyslat bez dalšího dekódování. (Jediný) Dekodér se tak bude moct věnovat jiným činnostem. Nelze říct, že tento přístup je ten pravý, ale ani ho nemůžeme zavrhnout. Je prostě jiný. Zatímco u ostatních architektur se liší počet microOPs dodaných v každém cyklu (dle složitosti dekódovaných x86 instrukcí), Trace cache může dodat stabilně v každém cyklu až 3 microOPs.

Instrukce se tedy nejdříve načtou z L2 cache do dekodéru, odkud putují jakožto microOPs do Trace cache. V Trace cache jsou uloženy v pořadí, v jakém se vyskytovaly v originálním programu (In-Order). Odtud putují tři microOPs za takt do scheduleru. Ten je rozhází do takového pořadí, aby se co nejvíce využilo dostupných jednotek ALU a FPU (Out-of-Order). Scheduler v jednom okamžiku kontroluje distribuci až 126 microOPs. Některé pozdrží (pokud to vyžadují závislosti na výsledcích mezi instrukcemi), některé vysílá do jednotek. Scheduler přitom může vyslat až 6 microOPs za takt.

Instrukce jsou dále prováděny v ALU a FPU jednotkách. Dvě rychlé ALU na dvojnásobné frekvenci jádra umí zpracovat dvě microOPs za takt. FPU jednotka obvykle zvládne jednu microOPs za dva takty. Data k instrukcím pocházejí z instrukční L1 cache. Ta má u starších jader Willamette a Northwood poměrně malou velikost 8 kB (odpovídá procesorům 486) se schopností dodat data každé dva takty. Novější Prescott má dvojnásobnou velikost 16 kB, ale také dvoujnásobnou latenci 4 takty. Data se do této L1 cache dodávají z L2 cache přes 256 bitovou sběrnici. L2 cache má velikost 512 kB až 2 MB, její latence je ale dost vysoká - kolem 15 až 20 cyklů. Po skončení výpočtů jsou microOPs opět poskládány do původního pořadí (In-Order) a odstraněny z pipeline. To se děje v Reorder Bufferu (ROB), který umí poskládat tři microOPs za takt.

NetBurst byl tedy navržen s ohledem na vysoké frekvence. Používá převratný koncept Trace cache a extrémně dlouhé pipeline, což mu umožňuje dosahovat frekvencí až kolem 5 GHz. Jádro je schopné udržitelným tempem zpracovat tři microOPs za takt, nárazově pak až šest. Bohužel ale je doplněno pomalými cache - při vysoké frekvenci bylo neudržitelné ponechat latenci na nízkých hodnotách. Zároveň je zde slabina v podobě jediné ALU jednotky pro náročné operace - pokud se v programu setká několik složitých instrukcí, výkon nebude příliš povzbudivý. A především dlouhá pipeline znamená velké limitace v řazení microOPs. Scheduler nemůže pustit do oběhu takové microOPs, které k sobě vyžadují data, která jsou výsledky předchozích microOPs. Protože pipeline je dlouhá, trvá hodně cyklů, než jsou výsledky dostupné. A to znamená, že v pipeline často dochází k "bublinám" (pipeline stall), kdy není co počítat. NetBurst se snaží vyvážit tento problém velkým počtem současně zpracovávaných 126 microOPs. Ne vždy to ale pomůže. Celkově tedy není průměrný počet instrukcí vykonaných za takt (IPC - Instructions Per Clock) nikterak vysoký.

Velkým problémem návrhu je spotřeba. Vysoké frekvence způsobují vysoký proudový odběr a vysoké zahřívání. Patrně největším ohništěm jsou pak ony dvě ALU jednotky pracující na dvojnásobné frekvenci jádra - jejich frekvence je příliš vysoká, musí používat diferenciální signaling a hodně se hřejí. NetBurst pak také nemá žádné technologie pro úsporu energie.

Vyladěná P6 alias Pentium M

Druhá architektura v současnosti používaná je ta z procesorů Pentium M. Intel jí nikdy nepojmenoval, avšak podle CPUID instrukce je zřejmé, že se jedná o doladěnou architekturu P6 známou z generace Pentia Pro až Pentia III.



Pentium M: cca. 12 až 14 stupňů

Narozdíl od NetBurstu používá Pentium M klasické uspořádání s instrukční cache. Na ní jsou napojeny tři dekodéry, z nichž jeden je schopen dekódovat všechny instrukce a to až do úrovně čtyř microOPs za takt. Další dva umí jen jednoduché instrukce, které se rozloží do jediné microOPs (Pentium III mělo, jen tak mimochodem, také uspořádání 1+2). Celkově jsou tedy dekodéry Pentia M schopné dodat až šest microOPs za takt. Dlouhodobě udržitelný počet microOPs je ale pouze tři, protože to je přesně počet, který zvládne Reorder buffer na konci pipeline.

MicroOPs míří do scheduleru, který je přehází do Out-of-Order pořadí. Za takt je schopen vyslat až pět microOPs. Zde se nachází jedna specialita - microOPs fusion (fůzování / slučování microOPs). Scheduler a Reorder buffer udržují dohled nad určitým počtem microOPs, které jsou vysílány do ALU / FPU jednotek (přesné číslo není známo, odhaduje se 40). Počet je omezen, přesto je to ale jedním z nejvýznamnějších faktorů pro dosažení paralelismu. Pentium M proto na úrovni dekodéru provádí slučování microOPs do větších celků. Takže například pokud x86 instrukce požaduje zápis dat do paměti, je tato operace rozdělena do dvou microOPs - výpočet adresy a samotné uložení. Operace spolu přímo souvisí. Scheduler je proto považuje za jednu a pošle je do jednotek současně. Do každé z jednotek dorazí samostaná microOPs, avšak odstranění z pipeline v Reorder bufferu se opět děje, jako kdyby se jednalo o jednu operaci. K čemu je toto dobré? Umožňuje to posílat do jednotek více microOPs, než kolik má Reorder buffer k dispozici záznamů - ROB si prostě pamatuje, že tyto dvě microOPs byly ihned za sebou a přesně tak s nimi zachází. Dvě microOPs takto zaberou v paměti Reorder bufferu místo jako jedna. Údajně je takto možné v průměru ušetřit kolem 10 procent kapacity záznamů. Díky tomu je možné dosáhnout lepšího paralelismu (více vyslaných microOPs se stejnými zdroji), což by mělo v průměru přinášet pětiprocentní zlepšení u celočíselných operací a devítiprocentní zlepšení u operací s desetinnou čárkou.



Odhadovaný počet jednotek (zdroj: Ars Technica)

Pentium M je vybaveno podobně jako Pentium III. Přesný počet jednotek a uspořádání Intel nikdy nezveřejnil. Očekává se, že jsou zde dvě plnohodnotné jednotky ALU, jedna FPU jednotka a další jednotka pro zpracování SIMD operací. Čistě porovnáním s Pentiem 4 má Pentium M méně jednotek pro celočíselné operace a stejně jednotek pro operace s desetinnou čárkou. Co se vyrovnávacích pamětí cache týče, je na tom procesor opravdu dobře. Datová cache první úrovně o velikosti 32 kB má latenci přijatelné 3 cykly. Veliká L2 cache 1 či 2 MB pak má neuvěřitelně nízké zpoždění 9 cyklů. Pokud to porovnáme s Pentiem 4, pak 2 GHz Pentium M má asi tak rychlou L2 cache jako 4 GHz Pentium 4.

Protože Pentium M má zároveň mnohem kratší pipeline, trvá mu zpracování instrukcí kratší dobu.



S přesnými údaji se Intel příliš nechlubí, nicméně jedno porovnání v tabulce výše je - instrukce IMUL (Signed Multiply - celočíselné násobení se znaménkem). Zatímco u jádra Northwood z Pentia 4 trvá první výpočet 14 cyklů a u jádra Prescott 10 cyklů, Pentium M je hotové za čtyři cykly. I když porovnáme frekvence, je jasně vidět, že Pentium M na 2 GHz je v tomto případě asi tak rychlé jako Pentium 4 na 5 GHz.

Zdokonalená architektura P6 původem z Pentia III byla navržena především s ohledem na nízkou spotřebu. Využívá staré známé jádro, které nemá věci jako Trace cache nebo jednotky pracující na dvojnásobné frekvenci. Zároveň je vybaveno řadou úsporných režimů - jednotky jsou při nevytížení vypínány. To sice snižuje výkon (při požadavku je nutné je opět zapnout a to chvíli trvá), zároveň to ale významně spoří energii. Pentium M je tak v podstatě stará známá věc s tím, že má nově podporu instrukcí SSE2 a některé novinky jako fůzování microOPs (dalšími novinkami jsou například zlepšená předpověď větvení, dedikovaný hardware na operace se stack). Z hlediska výpočetní části se toho ale tolik nezměnilo. Procesor umí kontinuálně jen tři microOPs, což je stejně jako u Pentia 4 - přitom má ale podstatně nižší frekvenci. Většina programů mu ale evidentně sedne více než NetBurstu, takže jeho IPC je o hodně vyšší. Krátká pipeline a rychlé velké cache se ukázaly být v řadě případů více než obstojným soupeřem.

Athlon 64

O konkurenci v podobě Athlonu 64 od AMD se tentokrát zmíníme pouze krátce. Je totiž velmi podobná Pentiu M. Liší se jen v tom, že nemá microOPs fusion, za to je mnohem našlapanější, co se výpočetní části týče.



Athlon 64: 12 stupňů


Procesor používá klasické uspořádání s instrukční cache. Ta je velká 64 kB (u Pentia M jen 32 kB) a za ní následují tři dekodéry. Narozdíl od Pentia M tyto dekodéry umí dekódovat libovolné instrukce. Počet dodávaných microOPs za takt AMD neuvádí, stejně jako neuvádí, kolik jich je schopen dodat za takt scheduler. Za dekodéry následují tři jednotky pro výpočet celých čísel (ALU) a tři jednotky pro výpočty s desetinnou čárkou (FPU). Celkový počet microOPs sledovaných v pipeline je 72, tedy zhruba někde mezi Pentiem M a Pentiem 4.

Jádro je doplněno také 64 kB datovou cache s rychlostí úctyhodné pouze tři cykly. Na svou velikost je to vynikající výsledek, obzvlášť přihlédneme-li k tomu, že procesor je schopen dosahovat frekvencí přes 3 GHz. Protože pipeline je dlouhá pouze 12 stupňů, je rychlost provádění jednotlivých instrukcí porovnatelná s rychlostí u Pentia M. Narozdíl od něj je ale Athlon 64 schopen s dobře optimalizovaným kódem dosahovat mnohem vyššího výkonu - jeho jádro má více jednotek. Především výkon u čísel s desetinnou čárkou je vynikající.