Intel Core - pohled na architekturu II
3.5.2006, Eagle , článek
Po včerejším povídáním o dekódování a Out-of-Order zpracování se dnes zaměříme na výpočetní část, práci s pamětí, prefetch, termální management a konečně i na spekulativní vykonávání instrukcí. Věděli jste, že Core je silně zaměřen na multimediální aplikace?
Kapitoly článku:
Na závěr článku jsem si nechal některá menší vylepšení týkající se všemožných částí čipu.
Predikce větvení
Větvení kódu na základě podmínek patří mezi nejobtížněji zpracovatelné záležitosti. V Out-of-Order procesoru totiž významně zesložiťuje přeskládání instrukcí do optimálního pořadí - jakmile čip narazí na podmínku, má před sebou dvě možné cesty kódu, z nichž neví, která je ta správná (protože ještě nevyhodnotil podmínku). Kdyby měl čekat, až dojde k určení stavu podmínky, bude mu to trvat příliš dlouho a ztratí drahocenný čas. Instrukce by se totiž musela nejdříve dekódovat a následně vykonat, tedy projít skoro celou pipeline s dobou trvání mnoho hodinových cyklů. Proto se vývoj podmínky odhaduje. To se provádí tak, že Branch Predictor (část procesoru zodpovědná za odhad) sleduje chování programu a snaží se v něm najít určité schéma - pokud například po podmínce v posledních deseti případech následoval první kód, pak je poměrně nepravděpodobné, že by najednou měl následovat kód druhý.
Na základě toho, jak je podmínka odhadnuta, se Front-End (dekódování) rozhodne, že začne sypat do pipeline instrukce z jedné či druhé větve po podmínce. Jakmile je podmínka skutečně vyhodnocena, je porovnána s předpokladem. Pokud se Branch Predictor trefil, již je vykonáno mnoho kódu a program může bez problémů pokračovat. V případě, kdy se netrefí, je nutné odstranit z pipeline "chybné" instrukce a zahájit celou operaci dekódování a zpracování druhé větve. Přesnost odhadů dnes bývá nad 95 %.
Jedním ze slabších míst při detekci stále zůstávají cykly. To je část kódu (nějaká sekvence instrukcí), která se vykonává mnohokrát dokola, až je dosaženo určité podmínky, která zacyklení ukončí. Obvykle je cyklus řízen pomocí proměnné, která počítá od jedničky až do nějakého čísla, při jehož dosažení se cyklus ukončí (řekneme, že cyklus se opakuje 100x, pak proměnná bude počítat od jedničky do stovky). Core, stejně jako Pentium M, obsahuje speciální předpovídání vývoje podmínek v cyklech - loop detector. Jeho úlohou je v kódu nalézt ty podmínky, které jsou zodpovědné za ukončení cyklu. Po jejich nalezení je na základě výsledků z výpočetní části stanoven čítač opakování, který stanoví, kolik ještě opakování zbývá do skončení zacyklení. Při jednoduchých cyklech pak může být průběh odhadnut s téměř 100% přesností.
Procesor zároveň obsahuje také hardware pro předpovídání nepřímého větvení, tedy takového, u nějž není umístění následného kódu přesně dáno, ale které naopak zjišťuje adresu další instrukce výpočtem. Tento indirect branch predictor si pamatuje, jaká adresa se použila v minulosti a snaží se odhadnout, zda bude použita i tentokrát. Pokud ano, Front-End zahájí dekódování na základě předpověděné adresy.
Stack management
Stejně jako Pentium M obsahuje Core speciální jednotku na operace s tzv. stack. Stack je v podstatě jakási paměť, která slouží k tomu, aby se do ní ukládal obsah registrů (instukce Push), případně aby se z ní obsah registrů obnovoval (instrukce Pop). Díky tomu je možné získat nějaký datový prostor pro výpočty. Kromě uložení, resp. vyzvednutí dat manipulují tyto instrukce s ukazatelem (pointerem) na vrchol stack. Dřívější procesory generovaly pro provedení této činnosti microOP, kterou následně vykonala ALU jednotka. Pentium M a architektura Core pak obsahují speciální jednotku nezávislou na microOPs, díky níž ubude počet microOPs k vykonání kódu, tj. podobně jako u Macro-fusion a microOPs fusion se ušetří výpočetní zdroje a tím zvýší možnosti paralelizace.
SSE4
Core bude také podporovat nové instrukce. Sada by měla být pojmenována Streaming SIMD Instructions 4 (SSE4). Prý by měly přinést nějaká minoritní vylepšení, avšak nic převratně významného.
Front Side Bus, sockety, kompatibilita
Procesory Conroe, Woodcrest a Merom použijí pro spojení se světem již mnoho let ověřenou technologii FSB (Front Side Bus) známou z NetBurstu. Ta umožňuje při dané frekvenci přenést za jeden hodinový cyklus dvě adresy a čtyři data. Narozdíl od současných modelů ale poběží tyto sběrnice výrazně rychleji.
Conroe řady E4000 (low-end model) - FSB800 (reálně 200 MHz)
Conroe řady E6000 (mid-range model) - FSB1066 (reálně 266 MHz)
Conroe řady E8000 (Extreme Edition) - FSB1333 (reálně 333 MHz)
Procesor Conroe určený pro stolní počítače bude kompatibilní s čipovými sadami Intel 965 "Broadwater" a Intel 975 "Wyloway", přičemž bude vyžadovat nové napájecí okruhy základní desky. Kvůli tomu nepoběží na starších deskách s čipsetem Intel 975. Socket LGA775 zůstává.
Merom T5000 (jednojádrový) a T7000 (dvoujádrový) - FSB667 (reálně 166 MHz)
Merom určený pro notebooky bude kompatibilní se současnou infrastrukturou procesoru Core Duo (Yonah). Ta je již připravena na nové napájení a má kompatibilní čipsety Intel 945PM a Intel 945GM "Calistoga".
Woodcrest řady 5100 - FSB1333 (reálně 333 MHz)
Serverový Woodcrest dostane zcela novou platformu. Nový bude socket (LGA771) i čipset. Ten totiž bude muset zvládnout velmi vysokou frekvenci FSB.
Intel s architekturou Core vykročil zcela novým směrem, takovým, který v minulosti patrně vůbec neplánoval. Novinka sice zakládá na již ověřené technologii Pentia M, a proto jí nemůžeme hodnotit jako vysloveně převratnou, přináší ale tolik inovací, že můžeme s klidem prohlásit, že Intel udělal obrovský skok vpřed. Zaměření se na slabá místa a jejich značné posílení patrně umožní této architektuře ovládnout první příčky pomyslného výkonnostního trůnu. V některých oblastech bude patrně dosaženo takového nárůstu výkonu, který za posledních mnoho let nepamatujeme. Pokud Intel v budoucnu dále čip vylepší o integrovaný paměťový řadič a přidá další jednotku pro práci s čísly s desetinnou čárkou na Issue Portu 2, má Core šanci stát se po všech stránkách extrémně silným soupeřem. Jedno je přitom jasné - už dnešní Core má taková zlepšení, že jeho potenciálnímu přemožiteli nebude stačit pouze minoritní úprava některého ze současných designů.
Literatura
David Kanter, Real World Technologies - Intel's Next Generation Microarchitecture
John Stokes, Ars Technica - Intel's next-generation microarchitecture
Bob Valentine, Jack Doweck, Intel Corporation - Inside the Intel Core Microarchitecture
Ofri Wechsler, Intel Corporation - Inside Intel Core Microarchitecture: Setting New Standards for Energy-Efficient Processor
IA32 Intel Architecture Optimization Reference Manual
Predikce větvení
Větvení kódu na základě podmínek patří mezi nejobtížněji zpracovatelné záležitosti. V Out-of-Order procesoru totiž významně zesložiťuje přeskládání instrukcí do optimálního pořadí - jakmile čip narazí na podmínku, má před sebou dvě možné cesty kódu, z nichž neví, která je ta správná (protože ještě nevyhodnotil podmínku). Kdyby měl čekat, až dojde k určení stavu podmínky, bude mu to trvat příliš dlouho a ztratí drahocenný čas. Instrukce by se totiž musela nejdříve dekódovat a následně vykonat, tedy projít skoro celou pipeline s dobou trvání mnoho hodinových cyklů. Proto se vývoj podmínky odhaduje. To se provádí tak, že Branch Predictor (část procesoru zodpovědná za odhad) sleduje chování programu a snaží se v něm najít určité schéma - pokud například po podmínce v posledních deseti případech následoval první kód, pak je poměrně nepravděpodobné, že by najednou měl následovat kód druhý.
Na základě toho, jak je podmínka odhadnuta, se Front-End (dekódování) rozhodne, že začne sypat do pipeline instrukce z jedné či druhé větve po podmínce. Jakmile je podmínka skutečně vyhodnocena, je porovnána s předpokladem. Pokud se Branch Predictor trefil, již je vykonáno mnoho kódu a program může bez problémů pokračovat. V případě, kdy se netrefí, je nutné odstranit z pipeline "chybné" instrukce a zahájit celou operaci dekódování a zpracování druhé větve. Přesnost odhadů dnes bývá nad 95 %.
Jedním ze slabších míst při detekci stále zůstávají cykly. To je část kódu (nějaká sekvence instrukcí), která se vykonává mnohokrát dokola, až je dosaženo určité podmínky, která zacyklení ukončí. Obvykle je cyklus řízen pomocí proměnné, která počítá od jedničky až do nějakého čísla, při jehož dosažení se cyklus ukončí (řekneme, že cyklus se opakuje 100x, pak proměnná bude počítat od jedničky do stovky). Core, stejně jako Pentium M, obsahuje speciální předpovídání vývoje podmínek v cyklech - loop detector. Jeho úlohou je v kódu nalézt ty podmínky, které jsou zodpovědné za ukončení cyklu. Po jejich nalezení je na základě výsledků z výpočetní části stanoven čítač opakování, který stanoví, kolik ještě opakování zbývá do skončení zacyklení. Při jednoduchých cyklech pak může být průběh odhadnut s téměř 100% přesností.
Procesor zároveň obsahuje také hardware pro předpovídání nepřímého větvení, tedy takového, u nějž není umístění následného kódu přesně dáno, ale které naopak zjišťuje adresu další instrukce výpočtem. Tento indirect branch predictor si pamatuje, jaká adresa se použila v minulosti a snaží se odhadnout, zda bude použita i tentokrát. Pokud ano, Front-End zahájí dekódování na základě předpověděné adresy.
Stack management
Stejně jako Pentium M obsahuje Core speciální jednotku na operace s tzv. stack. Stack je v podstatě jakási paměť, která slouží k tomu, aby se do ní ukládal obsah registrů (instukce Push), případně aby se z ní obsah registrů obnovoval (instrukce Pop). Díky tomu je možné získat nějaký datový prostor pro výpočty. Kromě uložení, resp. vyzvednutí dat manipulují tyto instrukce s ukazatelem (pointerem) na vrchol stack. Dřívější procesory generovaly pro provedení této činnosti microOP, kterou následně vykonala ALU jednotka. Pentium M a architektura Core pak obsahují speciální jednotku nezávislou na microOPs, díky níž ubude počet microOPs k vykonání kódu, tj. podobně jako u Macro-fusion a microOPs fusion se ušetří výpočetní zdroje a tím zvýší možnosti paralelizace.
SSE4
Core bude také podporovat nové instrukce. Sada by měla být pojmenována Streaming SIMD Instructions 4 (SSE4). Prý by měly přinést nějaká minoritní vylepšení, avšak nic převratně významného.
Front Side Bus, sockety, kompatibilita
Procesory Conroe, Woodcrest a Merom použijí pro spojení se světem již mnoho let ověřenou technologii FSB (Front Side Bus) známou z NetBurstu. Ta umožňuje při dané frekvenci přenést za jeden hodinový cyklus dvě adresy a čtyři data. Narozdíl od současných modelů ale poběží tyto sběrnice výrazně rychleji.
Conroe řady E4000 (low-end model) - FSB800 (reálně 200 MHz)
Conroe řady E6000 (mid-range model) - FSB1066 (reálně 266 MHz)
Conroe řady E8000 (Extreme Edition) - FSB1333 (reálně 333 MHz)
Procesor Conroe určený pro stolní počítače bude kompatibilní s čipovými sadami Intel 965 "Broadwater" a Intel 975 "Wyloway", přičemž bude vyžadovat nové napájecí okruhy základní desky. Kvůli tomu nepoběží na starších deskách s čipsetem Intel 975. Socket LGA775 zůstává.
Merom T5000 (jednojádrový) a T7000 (dvoujádrový) - FSB667 (reálně 166 MHz)
Merom určený pro notebooky bude kompatibilní se současnou infrastrukturou procesoru Core Duo (Yonah). Ta je již připravena na nové napájení a má kompatibilní čipsety Intel 945PM a Intel 945GM "Calistoga".
Woodcrest řady 5100 - FSB1333 (reálně 333 MHz)
Serverový Woodcrest dostane zcela novou platformu. Nový bude socket (LGA771) i čipset. Ten totiž bude muset zvládnout velmi vysokou frekvenci FSB.
Závěr
Intel s architekturou Core vykročil zcela novým směrem, takovým, který v minulosti patrně vůbec neplánoval. Novinka sice zakládá na již ověřené technologii Pentia M, a proto jí nemůžeme hodnotit jako vysloveně převratnou, přináší ale tolik inovací, že můžeme s klidem prohlásit, že Intel udělal obrovský skok vpřed. Zaměření se na slabá místa a jejich značné posílení patrně umožní této architektuře ovládnout první příčky pomyslného výkonnostního trůnu. V některých oblastech bude patrně dosaženo takového nárůstu výkonu, který za posledních mnoho let nepamatujeme. Pokud Intel v budoucnu dále čip vylepší o integrovaný paměťový řadič a přidá další jednotku pro práci s čísly s desetinnou čárkou na Issue Portu 2, má Core šanci stát se po všech stránkách extrémně silným soupeřem. Jedno je přitom jasné - už dnešní Core má taková zlepšení, že jeho potenciálnímu přemožiteli nebude stačit pouze minoritní úprava některého ze současných designů.
Literatura
David Kanter, Real World Technologies - Intel's Next Generation Microarchitecture
John Stokes, Ars Technica - Intel's next-generation microarchitecture
Bob Valentine, Jack Doweck, Intel Corporation - Inside the Intel Core Microarchitecture
Ofri Wechsler, Intel Corporation - Inside Intel Core Microarchitecture: Setting New Standards for Energy-Efficient Processor
IA32 Intel Architecture Optimization Reference Manual