Intel Core - pohled na architekturu I
2.5.2006, Eagle , článek
![Intel Core - pohled na architekturu I](navstevnost-a-redakce/1/img/website-800.jpg)
Již za několik měsíců se do obchodů dostaví první procesory založené na nové architektuře Intel Core. Čipy Conroe, Merom a Woodcrest znamenají dramatickou změnu ve vývoji. Dnes zahájíme povídání o tom, jak nové procesory fungují a co zajímavého přinesou.
Kapitoly článku:
Out-of-Order
Architektura Core je, stejně jako všechny dnešní procesory s pokročilým návrhem, tzv. Out-of-Order. Umožňuje tedy zpracování instrukcí mimo v programu stanoveném pořadí tak, aby se co nejvíce využilo dostupného výpočetního výkonu. Out-of-Order probíhá následovně:
Out-of-Order zpracování probíhá pomocí microOPs, které, jak už bylo řečeno, reprezentují jednoduché operace původně přikázané instrukcemi jako x86, x87, SSE atp..
![](intel-core-pohled-na-architekturu-i/13984/img/body-0.3E0.gif)
Řízení Out-of-Order řazení následuje ihned za dekódováním. Z microOPs Bufferu jsou převzaty až čtyři microOPs za hodinový cyklus a následně poslány do jednotky zodpovědné za přiřazení registru (Register Alias Table, Allocator).
Operace počítačů PC probíhají s daty v registrech. To je několik extrémně rychlých paměti o velikosti 8 až 64 bitů (resp. až 128 bitů u SSE, ale to je trochu specifický případ), z nichž jsou přímo zásobovány výpočetní jednotky. Registry jsou značeny eax, ebx atd. a jejich počet se liší v závislosti na použitém režimu (64 bit režim má těchto registrů nejvíc). Protože po sobě následující instrukce často vyžadují stejný registr (programátor to tak prostě vymyslel), nebylo by možné vykonávat tyto instrukce paralelně, aniž by došlo k přejmenování. Registr eax se tak ocitne někde v interní paměti procesoru hned několikrát, pokaždé s jinou adresou, ale pokaždé (z hlediska instrukce) pojmenovaný eax. V zásadě je totiž úplně jedno, kde data jsou, důležité je, že jsou přiřazeny ke správné instrukci.
Po přejmenování registrů jsou microOPs upraveny tak, aby odkazovaly na konkrétní datové místo v Register Alias Table. Následně putují do Reorder Buffer, což je paměť, v níž se microOPs přeřadí tak, aby je bylo možné vykonávat co možná nejvíc paralelně. Velikost tohoto bufferu je určující pro tzv. "in-flight microOPs" (někdy také "in-flight (micro)instructions" nebo "instruction window"), což by se dalo přeložit jako "počet najednou přeřazených microOPs". Tento počet je jedním z největších determinantů výkonu.
Typický počítačový program pracuje s několika po sobě jdoucími instrukcemi a daty. Jak už bylo řečeno, procesor instrukce převádí na microOPs, načež je následně posílá k výpočtu. Výpočet může proběhnout v několika jednotkách k tomu určených a to tak, že za ideálních podmínek probíhá v jednom hodinovém cyklu více výpočtů najednou, tj. je dosahováno instrukčního paralelismu (ILP - Instruction Level Paralelism).
![](intel-core-pohled-na-architekturu-i/13984/img/body-0.4016.gif)
Sekvence instrukcí (zápis v Assembleru):
operace s registry eax, ebx, ecx, edx, edi a esi
Počet instrukcí, které je možné najednou přeřazovat z původního pořadí do optimalizovaného pořadí, ovlivňuje výkon v tom smyslu, že při velkých počtech obchází závislosti, které znemožňují paralelismus. Typický program má tendenci provádět výpočty v ucelených blocích - jednoduše řečeno programátor problém rozdělí do více podproblémů a ke každému napíše kód a ten pak poskládá za sebe. Pokud třeba počítá determinant Sarusovým pravidlem, může třeba nejprve sečíst kladné diagonály a následně sečíst záporné diagonály (... které potom odečte). V reálném programu to samozřejmě není takto triviální snadno paralelizovatelná úloha o pár krocích, ale často až desítky instrukcí, které se točí kolem jedněch dat.
Limitace paralelismu plyne z toho, že v rámci podproblémů se často nachází značné datové závislosti, takže úlohy nelze vykonávat najednou. Pokud procesor není schopen přeřadit hodně instrukcí, je tímto silně degradován jeho výkon. Pokud má ale velké zdroje, je schopen pracovat najednou třeba na několika podproblémech, které jdou v kódu za sebou. Díky tomu pak optimálně využívá svůj potenciál.
Architektura Core umožňuje v jednom okamžiku nakládání a přeřazování až 96 microOPs. To je více než dvojnásobek oproti Pentiu M, které umí 40. Zároveň je to o hodně víc, než umí konkurenční Athlon 64 (72 microOPs). Jediná architektura, která má ještě větší možnosti, je NetBurst se 126 záznamy. Důležité je ale uvědomit si, že Core má narozdíl od NetBurstu tři podstatné výhody, které oněch 96 záznamů v reálu natáhnou na víc - již zmíně Macro-fusion a microOPs fusion a také speciální jednotku na Stack operace (o tom si povíme dále). Díky těmto technologiím jedna microOP udělá stejnou práci jako více microOPs v ostatních procesorech. V praxi se tak Core NetBurstu silně přibližuje a jeho schopnosti Out-of-Order přeřazování jsou zhruba o polovinu větší než má Athlon 64.
Po přeřazení putují microOPs do Reservation Station, kde čekají na dodávku dat k nim přiřazených. Počet takto čekajících instrukcí činí až 32, což je opět více, než umožňuje Pentium M (24). Po získání dat již putují do výpočetních jednotek ke zpracování.
Poslední fází zpracování microOPs je jejich opětovné přeřazení do původního pořadí a odstranění z pipeline (Retirement). Procesor posune instrukční ukazatel, čímž dá navenek najevo, že daná x86 (či x87, SSE...) instrukce byla dokončena. Počet takto přeřaditelných microOPs do původního pořadí činí opět čtyři za takt.
Schopností pracovat se čtyřmi microOPs za takt získává Conroe náskok oproti své konkurenci. Všechny ostatní procesory totiž zvládají pouze tři.
Architektura Core je, stejně jako všechny dnešní procesory s pokročilým návrhem, tzv. Out-of-Order. Umožňuje tedy zpracování instrukcí mimo v programu stanoveném pořadí tak, aby se co nejvíce využilo dostupného výpočetního výkonu. Out-of-Order probíhá následovně:
Přeřazení do optimálního pořadí -> vykonání výpočtu -> seřazení zpět do pořadí
Out-of-Order zpracování probíhá pomocí microOPs, které, jak už bylo řečeno, reprezentují jednoduché operace původně přikázané instrukcemi jako x86, x87, SSE atp..
![](intel-core-pohled-na-architekturu-i/13984/img/body-0.3E0.gif)
Řízení Out-of-Order řazení následuje ihned za dekódováním. Z microOPs Bufferu jsou převzaty až čtyři microOPs za hodinový cyklus a následně poslány do jednotky zodpovědné za přiřazení registru (Register Alias Table, Allocator).
Operace počítačů PC probíhají s daty v registrech. To je několik extrémně rychlých paměti o velikosti 8 až 64 bitů (resp. až 128 bitů u SSE, ale to je trochu specifický případ), z nichž jsou přímo zásobovány výpočetní jednotky. Registry jsou značeny eax, ebx atd. a jejich počet se liší v závislosti na použitém režimu (64 bit režim má těchto registrů nejvíc). Protože po sobě následující instrukce často vyžadují stejný registr (programátor to tak prostě vymyslel), nebylo by možné vykonávat tyto instrukce paralelně, aniž by došlo k přejmenování. Registr eax se tak ocitne někde v interní paměti procesoru hned několikrát, pokaždé s jinou adresou, ale pokaždé (z hlediska instrukce) pojmenovaný eax. V zásadě je totiž úplně jedno, kde data jsou, důležité je, že jsou přiřazeny ke správné instrukci.
Po přejmenování registrů jsou microOPs upraveny tak, aby odkazovaly na konkrétní datové místo v Register Alias Table. Následně putují do Reorder Buffer, což je paměť, v níž se microOPs přeřadí tak, aby je bylo možné vykonávat co možná nejvíc paralelně. Velikost tohoto bufferu je určující pro tzv. "in-flight microOPs" (někdy také "in-flight (micro)instructions" nebo "instruction window"), což by se dalo přeložit jako "počet najednou přeřazených microOPs". Tento počet je jedním z největších determinantů výkonu.
Typický počítačový program pracuje s několika po sobě jdoucími instrukcemi a daty. Jak už bylo řečeno, procesor instrukce převádí na microOPs, načež je následně posílá k výpočtu. Výpočet může proběhnout v několika jednotkách k tomu určených a to tak, že za ideálních podmínek probíhá v jednom hodinovém cyklu více výpočtů najednou, tj. je dosahováno instrukčního paralelismu (ILP - Instruction Level Paralelism).
![](intel-core-pohled-na-architekturu-i/13984/img/body-0.4016.gif)
Sekvence instrukcí (zápis v Assembleru):
operace s registry eax, ebx, ecx, edx, edi a esi
Počet instrukcí, které je možné najednou přeřazovat z původního pořadí do optimalizovaného pořadí, ovlivňuje výkon v tom smyslu, že při velkých počtech obchází závislosti, které znemožňují paralelismus. Typický program má tendenci provádět výpočty v ucelených blocích - jednoduše řečeno programátor problém rozdělí do více podproblémů a ke každému napíše kód a ten pak poskládá za sebe. Pokud třeba počítá determinant Sarusovým pravidlem, může třeba nejprve sečíst kladné diagonály a následně sečíst záporné diagonály (... které potom odečte). V reálném programu to samozřejmě není takto triviální snadno paralelizovatelná úloha o pár krocích, ale často až desítky instrukcí, které se točí kolem jedněch dat.
Limitace paralelismu plyne z toho, že v rámci podproblémů se často nachází značné datové závislosti, takže úlohy nelze vykonávat najednou. Pokud procesor není schopen přeřadit hodně instrukcí, je tímto silně degradován jeho výkon. Pokud má ale velké zdroje, je schopen pracovat najednou třeba na několika podproblémech, které jdou v kódu za sebou. Díky tomu pak optimálně využívá svůj potenciál.
Architektura Core umožňuje v jednom okamžiku nakládání a přeřazování až 96 microOPs. To je více než dvojnásobek oproti Pentiu M, které umí 40. Zároveň je to o hodně víc, než umí konkurenční Athlon 64 (72 microOPs). Jediná architektura, která má ještě větší možnosti, je NetBurst se 126 záznamy. Důležité je ale uvědomit si, že Core má narozdíl od NetBurstu tři podstatné výhody, které oněch 96 záznamů v reálu natáhnou na víc - již zmíně Macro-fusion a microOPs fusion a také speciální jednotku na Stack operace (o tom si povíme dále). Díky těmto technologiím jedna microOP udělá stejnou práci jako více microOPs v ostatních procesorech. V praxi se tak Core NetBurstu silně přibližuje a jeho schopnosti Out-of-Order přeřazování jsou zhruba o polovinu větší než má Athlon 64.
Po přeřazení putují microOPs do Reservation Station, kde čekají na dodávku dat k nim přiřazených. Počet takto čekajících instrukcí činí až 32, což je opět více, než umožňuje Pentium M (24). Po získání dat již putují do výpočetních jednotek ke zpracování.
Poslední fází zpracování microOPs je jejich opětovné přeřazení do původního pořadí a odstranění z pipeline (Retirement). Procesor posune instrukční ukazatel, čímž dá navenek najevo, že daná x86 (či x87, SSE...) instrukce byla dokončena. Počet takto přeřaditelných microOPs do původního pořadí činí opět čtyři za takt.
Schopností pracovat se čtyřmi microOPs za takt získává Conroe náskok oproti své konkurenci. Všechny ostatní procesory totiž zvládají pouze tři.