Hlavní stránka Hardware Procesory, paměti 64 bitů - revoluce nebo jen marketing?
64 bitů - revoluce nebo jen marketing?
autor: Petr Koc , publikováno 4.9.2006
64 bitů - revoluce nebo jen marketing?

64 bitové čipy jsou, společně s dvoujádrovými procesory typu 2-in-1, bezesporu největší inovací v oblasti procesorů určených pro osobní počítače, která proběhla za posledních deset let. Vzhledem k tom, že 64 bitů vyvolává "optický dojem", že se jedná o dvojnásobek 32 bitů, slibují si někteří uživatelé od těchto procesorů až 2x vyšší výkon, než který podávají dnešní procesory v 32 bitovém režimu. Proč se 64 bitové procesory prosazují tak pomalu? Hraje se s námi nekalá hra?


AMD64 - rozšíření PC na 64bit

Přechod z 32 bitů na 64 bitů není z hlediska software jen tak. Nelze převzít současný program, spustit ho na 64bit procesoru a najednou očekávat, že 64bit čísla bude počítat nativně a ne přepočítáváním a že bude hned adresovat dvě na čtyřicátou paměti. Pro přechod na 64bit je zapotřebí nová instrukční sada.

U PC kompatibilních procesorů přišlo jako první s 64bit sadou AMD a to v roce 2003. Ta se původně jmenovala x86-64, což značilo jakousi nadstavbu sady x86. Později ale byla přejmenována na AMD64 a (bohužel) bývá často nesprávně zaměňována s Athonem 64.

64 bitů - revoluce nebo jen marketing?
Velikost registru byla navýšena na 64 bitů. Nové značení je RAX, RBX...

AMD64 je, stejně jako x87, MMX, 3Dnow! a SSE, plnohodnotná přídavná sada instrukcí k x86. Není tak pravda, že by to byl jakýsi emulační režim či cosi podobného (není to prostě jako Windows 95 alias nadstavba DOSu). AMD64 je v zásadě stejný princip, který byl použit u kteréhokoli jiného 64bit procesoru. Procesory podporující AMD64 jsou plnohodnotné šedesátičtyřbitové čipy.

O tom, že je sada AMD64 nedomyšlená a nikdy neměla být vytvořena, hovoří řada "diskutérů". Ti často poukazují na to, že se měl vývoj ubírat směrem k Itaniu od Intelu a jeho Very Long Instruction Word (VLIW) architektuře, protože ta je prý úžasná, nemusí zachovávat kompatibilitu a poskytuje skvělý výkon. Pravdou ale je, že Itanium kvůli svému návrhu instrukcí nemá v consumer počítačích žádnou šanci. Předpokládá totiž tvorbu programů přímo na daný procesor, což je v realitě hodně velká fantasie.

Jaké jsou přínosy? AMD64 stanovuje plně 64bit ALU pipelines. Je tak možné nativně počítat s 64bit čísly. Tím také rozšiřuje pointer na 64 bitů, tj. umožňuje adresovat obrovská množství paměti. Novinky ale nekončí jen tady. Toto samotné by totiž vyšší výkon přineslo stěží, v současnosti nejspíše jen u velkých databází kvůli více paměti RAM. Jedním z nejdůležitějších prvků je proto dvojnásobný počet registrů. Registr je paměť uvnitř čipu, na které je vykonáván samotný výpočet. Pro programátora je registr viditelný.

64 bitů - revoluce nebo jen marketing?

Instrukce pracují s daty uloženými v registrech. Například operace inc eax zvýší hodnotu celého čísla uloženého v registru eax o jedničku. Počet dostupných registrů určuje, jak moc se musí vyměňovat čísla mezi registry a pamětí (resp. cache, která jí z části zrcadlí). Čím více registrů, tím efektivnější práce. Je to podobné jako s rozlišením monitoru - čím vyšší je, tím více programů se na obrazovku vejde a tím méně musíte přepínat.

Rozšíření se dostalo všem důležitým registrům::

  • Celočíselné registry pro ALU byly navýšeny z 32bit na 64bit. Nové značení začíná Rxx (např. RAX). U původních osmi registrů je stále možné pracovat s menší bitovou velikostí pomocí značení EAX (32bit), AX (16bit), AH (8bit high register) a AL (8bit low register), kdy tato kapacita je sdílena. Nových osm registrů je značeno R8 až R15 a dovolují pouze 64bit přístup.
  • Přibylo dalších osm registrů pro SSE instrukce. Značí se XMM8 až XMM15.

Menší nevýhoda je, že aby bylo možné přistupovat k novým registrům, je nutné použít u instrukcí prefix. To činí samotnou instrukci delší, což má ve výsledku určité negativní dopady na hardware..

Poznámka: nové registry je možné využít pouze v 64bit režimu (Long Mode).

Operační módy procesoru AMD64 (platí pro ekvivalentní EM64T firmy Intel - viz. dodatek)

operační módyoperační systémpřeklad aplikace vyžadovándefault velikost adresydefault velikost operandurozšíření registrůtypická šířka operace
Long mode64-bit modenové 64-bit (x86-64) OSano6432ano64
Compatibility modene3232ne32
161616
Legacy ModeProtected Mode16-bit nebo 32-bit OSSne3232ne32
161616
Virtual 8086 mode161616
Real mode16-bit OS

Hardwarový návrh - problémová část

Zavedení 64bit instrukční sady předpokládá změny v hardware. Ty jsou nutné a poměrně radikální, neboť aktuální hardware nedokáže bez rozsáhlých změn pracovat s novými instrukcemi. Celočíselné jednotky ALU musí být bitově rozšířeny na 64bit tak, aby zvládly spočítat celé číslo naráz. To s sebou bohužel přináší nutnost výrazného navýšení počtu transistorů a také kovových transistorových mezispojů. Celkově je návrh čipu výrazně složitější a vede také k vyšší spotřebě elektrické energie.

64 bitů - revoluce nebo jen marketing?
ALU jednotky (zdroj: Chip Architect)

Vyjma samotných jednotek musí být přepracovány i všechny další části. Je nutné zavést podporu nových instrukcí, předělat jednotky počítající reálnou adresu z virtuální atd. Změny vyžaduje i SRAM paměť registrového pole pro out-of-order řazení. Všechno je komplikovanější. Plyne z toho v zásadě to, že počítání s 64bit čísly může být pomalejší. Jednotka například může být optimalizována tak, aby 32 bitů zpracovávala rychle, zatímco 64 bitů "téměř rychle".

64 bitů - revoluce nebo jen marketing?

Například u Athlonu 64 trvá celočíselné násobení osmi a šestnácti bitů tři cykly. U 32bit je na tom čip stejně - také tři cykly. Jak je ale z tabulky vidět, provedení 64bit násobení trvá cykly čtyři, tudíž práce s takto velkým číslem je o nějakých 33 % pomalejší.

Použití 64bit operačního systému a 64bit programů má další negativa ve spojení s cache a pamětí. Faktem totiž je, že v programech poměrně hodně využívané pointery mají nyní dvojnásobnou velikost, tudíž zabírají větší množství paměti. Protože cache umístěná v procesoru je částečným zrcadlem paměti RAM, při zvětšujících se požadavcích datových typů klesá její účinnost. Jinými slovy 64bit aplikace kladou větší zátěž jak na velikost paměti RAM, tak na velikost paměti cache. Také požadují větší propustnost (vyšší rychlost cache i RAM), neboť čtení / zápis jednoho pointeru teď vyžaduje dvojnásobné množství dodaných dat. Také prefetch (spekulativní dodávka dat) musí být agresivnější. Není například tajemstvím, že nový procesor Core 2 Duo může mít v 64bit režimu potíže s dosahováním optimálního výkonu, neboť instrukce odkazující se na některý z dodatečných registrů zvětšují o 1 byte délku celé operace, přičemž prefetch k dekodérům nebyl nijak zintenzívněn - pokud se sejde kombinace instrukcí, kdy jejich délka činí více než 16 bytů, procesor není schopen udržet dekódovací tempo čtyř instrukcí za hodinový cyklus a jeho výkon klesá.

Přínos dodatečných registrů nemusí být zdaleka tak veliký, jak od něj většina lidí očekává. Moderní out-of-order procesory totiž dávno obsahují mnohem větší počet registrů, které dynamicky mapují na pro programátora viditelné "názvy". Tento register renaming mechanismus se dodáním dalších viditelných registrů nijak nemění, tj. počet hardwarových registrů zůstává stejný. To způsobuje, že vyššího výkonu lze obecně dosáhnout pouze tehdy, pokud distribuce dat mezi viditelné registry bude lepší, než hardwarové mapování v registrovém poli..

Menší výhodou AMD64 naopak může být to, že všechny 64bit procesory podporují SIMD sadu SSE2, tudíž je možné kompilátor instruovat k jejímu použití, aniž by bylo nutné vytvářet separátní (a jinak také zpomalující) kód pro čipy, které tuto sadu neumí. Tímto je možné kompenzovat určité ztráty plynoucí z ostatních faktorů zmíněných výše.



 
Komentáře naleznete na konci poslední kapitoly.
828 čtenářů navrhlo autorovi prémii: 401.2Kč Prémie tohoto článku jsou již uzavřené, děkujeme za váš zájem.
Tento web používá k poskytování služeb soubory cookie.