x86-64™ z pohledu programátora

Když už se nám tady tak rozjelo téma připravované rodiny procesorů Hammer od AMD, měli bychom se také zmínit o tom, co se vlastně skrývá za tajemným názvem x86-64 a které aplikace dokážou z tohoto rozšíření dnes používané instrukční sady profitovat. Když se totiž podíváte zpět, tak zjistíte, že 32 bitový software sice znamenal určitý nárůst výkonu, ale ne tak drtivý (navíc jeho implementace trvala víc než 10 let). Je x86-64 pouze dalším krokem nebo se jedná o něco víc?

Když Intel uváděl Itanium (alias Merced), všichni se divili, jak je možné, že tento procesor pracuje na frekvenci "pouze" 800MHz, má tepelný výkon až 140W (!) a přitom reálný výpočetní výkon v 32bit aplikacích je někde na úrovni 100MHz Pentia P54C. Pro mnohé byl nový 64bit procesor Intelu probuzením se ze snu o supersilném a cenově dostupném CPU. Naproti tomu společnost AMD představila svou vlastní vizi šedesátičtyřbitového procesoru SledgeHammer a ClawHammer založených na rozšíření v současnosti používané instrukční sady (x86 + x87 + variace na téma SIMD). Architektura nazvaná jednoduše x68-64 se má během několika let stát masovou záležitostí.

AMD vs. Intel ?

Vzešlá situace opět vypadá jako již dva roky probíhající cenový a frekvenční souboj mezi nemotorným, ale silným obrem a mrštným, ale slabým trpaslíkem. Je toto další kolo?

Pravdou je, že souboj o "první" 64bit procesor není a s největší pravděpodobností ani nebude. Proč? Jednoduše kvůli tomu, že Itanium není procesor pro masy. Jedná se o konkurenci high-end RISC procesorům Alpha a podobným speciálům, které běžný uživatel v životě ani neuvidí, natož aby měl možnost na nich pracovat. Itanium si nezakládá na současné instrukční sadě, je to zcela nový procesor se zcela novou instrukční sadou (dokumentaci stahujte zde, zde, zde a zde - cca 17,5MB v PDF, 1500 stran). Přestože tento procesor má frekvenci pouze 800MHz, jeho výkon je drtivý. Čtyři ALU jednotky (brzy jich bude šest) a až 4MB Level 3 cache, čipová sada s podporou 64GB DRAM. Itanium je směřováno čistě jako high-end a zpětná kompatibilita s x68 je realizována jako překlad x68 instrukcí do nativních instrukcí Itania (proto ten propad ve výkonu).

x68-64 je cíleno jako mid-range, "drobné" rozšíření současné instrukční sady. Nejedná se tedy o žádný high-end. Technologie x68-64 je v principu stejná, jako kdysi Intelem uvedený mikroprocesor 386 - rozšíření několika registrů, nové adresování, několik nových instrukcí a toť vše.

Co přináší x68-64 ?

V zásadě se novinky dají shrnout takto:

  • 64bit flat adresování
  • 8 nových general-purpose registrů (GPR)
  • 8 nových registrů pro streaming SIMD instrukce (SSE)
  • GPR a instruction pointer rozšířené na 64 bitů

Rozšíření se tedy netýkají čistě jen 64 bitů, ale snaží se odstranit problém současné instrukční sady v podobě nedostatku registrů.

Long Mode

Klepněte pro větší obrázek

K využití nových vlastností je třeba, aby procesor pracoval v novém režimu nazvaném Long Mode. Ten umožňuje, v kombinaci s 64bit Long Mode enabled operačním systémem, spouštění buďto nativních 64bit aplikací nebo práci v kompatibilním módu.

V režimu 64bitů je možné využít potenciál 64bit adresování (teoreticky 264 bitových adres, což je 16777216 TB), jakož i 64bit registry včetně nových registrů. V kompatibilním režimu se procesor chová jako běžný x86, tj. žádná vylepšení se nekonají (max. 4 GB RAM). Přepínání mezi oběma režimy je možné stejně dobře, jako když dnes spouštíte pod Windows DOSové aplikace, tj. chodí to, ale můžete narazit na nestandardní chování, chyby v programu apod.

Legacy mód je standardní x86 mód (protected nebo real), kdy stačí současný operační systém, ale není možné se přepnout do Long Módu a využít vylepšení.

Adresování

Klepněte pro větší obrázek

Z výše uvedeného obrázku je patrné, jakým způsobem dnešní procesory pracují s pamětí. Buďto se používá přímé Linear adresování nebo se k paměti přistupuje jako k segmentům, když je např. potřeba ke zvýšení spolehlivosti umístit stack do jednoho segmentu a data do druhého, aby nedošlo k nechtěnému přepsání informací. Režim Real-Address se dnes používá málokdy (v DOSu), je to totiž pozůstatek z procesoru 8086.

V režimu x68-64 se 64bit rozšíření týká pouze přímého režimu adresování, segmentované adresování není podporováno, což mě osobně příliš netěší (chápu, že implementovat segmentované adresování na gigantický datový prostor by nebylo právě nejjednodušší).

Nové registry a rozšíření stávajících

Velkým problémem dnešních x86 mikroprocesorů je fakt, že k dispozici máte v zásadě pouze čtyři GPR. Teoreticky je jich osm, avšak některé jsou využívány různými instrukcemi, takže pokud chcete mít zcela spolehlivý kód, musíte si vystačit s EAX, EBX, ECX a EDX, protože zbylé ESI, EDI, ESP a EBP jsou často využívány jako ukazatele.

Klepněte pro větší obrázek

Šedou barvou je znázorněno rozšíření v Long Mode x68-64. General-purpose registry jsou rozšířeny z 32 bitů na 64 a přibyly registry R8 až R15 (pouze 64bit). Registry pro MMX (MM0-7), jakož i floating-point zůstávají beze změny. K osmi 128bit registrům SSE (XMM0-7) přibylo dalších osm. Instruction Pointer je rozšířen na 64 bitů.

GPR si zachovaly původní názvy a přibyly názvy pro 64 bit.

Klepněte pro větší obrázek

Registr RAX se skládá ze spodních osmi bitů AL, horních osmi bitů AH, spodních 16 bitů se označuje AX a spodních 32 bitů pak EAX (zde tedy žádná změna). Celý registr má název RAX.

Co se týče přechodů mezi jednotlivými režimy, tak při přechodu z Long Mode na kompatibilní mód se horních 32 bitů RAX ztratí a v 64 bit režimu jsou 32bit data automaticky doplněna nulami do 64 bitů.

Defaultní operandy jsou následující:

Klepněte pro větší obrázek

Defaultním operandem v 64bit módu je operand dvaatřicetibitový. Někdy je tudíž nutné použít příslušný prefix (v tomto případě REX).

Shrnutí (a co se mi nelíbí)

Pominu-li uveřejněnou specifikaci prvních procesorů rodiny Hammer (ke které mám určité výhrady) a budu se soustředit pouze na papírovou specifikaci, tak mohu jen konstatovat, že x86-64 je dobrý nápad, který by opravdu mohl ve výpočetně náročných aplikacích přinést díky dalším registrům opravdu velká zrychlení. Teorie je ovšem jedna věc, praxe druhá a zde musím všechny příznivce AMD upozornit, že tato firma doposud udělala pro vývojáře softwaru minimum. Ať bude záměr dobrý jak jen může být, pokud zde nebudou kvalitní kompilátory a podpora ze strany firem jako Microsoft nebo Borland, tak se ze zajímavého konceptu stane jen papírový nesmysl bez užitku. AMD bude muset něco udělat, a to dost rychle. Nejenže AMD dosud nebylo schopné dodat veškerou dokumentaci ke svému hardwaru, oni nebyli dosud (!) schopni uveřejnit dokumentaci k x86 procesorům, které vyrábějí již kolik desetiletí. Typickým argumentem marketingu AMD je, že pro Itanium je nutné programy rekompilovat, zatímco pro x86-64 ne. Pánové z AMD by se však měli podívat na http://developer.intel.com, kde by zjistili, že Intel své kompilátory pro Itanium má, stejně jako má kompilátory pro IA-32. A nutno říct, že jsou výborné (slovem výborné rozumím v některých případech i 100% zrychlení oproti Visual C++ 6.0 SP5... a to jen díky vhodné optimalizaci x68 kódu). Stejně tak dokumentace k IA-32 i IA-64 je u Intelu vynikající. Prostě a jednoduše - Intel má skvělou podporu, skupinu výborných programátorů a navíc ovládá 3/4 trhu. AMD rozhodně nebude mít lehkou pozici.

Eagle

Diskuze (40) Další článek: Superrychlý disk WD-1000BB-SE

Témata článku: Software, x86, Lehký problém, Nativní aplikace, Rozšíření, Pohled, Režim, Programátor, High Point, Flat, Nová sada, Floating, General, Reálný výpočet, Jednotlivé režimy, Zbylý prostor, Trpaslík, Nechtěná data, Pointer, Hammer, Eagle


Určitě si přečtěte

Měření rychlosti internetu: Populární Speedtest.net neřekne o skutečné rychlosti internetu téměř nic

Měření rychlosti internetu: Populární Speedtest.net neřekne o skutečné rychlosti internetu téměř nic

** Speedtest stále častěji měří jen rychlost na poslední míli ** Ta však ale neodpovídá reálnému surfování ** Jak se tedy pokusit změřit tu skutečnou?

Jakub Čížek | 85

USA rozdávají chudým dotované telefony s Androidem. Jsou z Číny a plné virů

USA rozdávají chudým dotované telefony s Androidem. Jsou z Číny a plné virů

** Chudí Američané mohou dosáhnout na dotovaný mobil ** Jeden takový rozdává třeba tamní Virgin Mobile ** Má to jeden háček. Je prošpikovaný malwarem

Jakub Čížek | 42



Aktuální číslo časopisu Computer

Test 9 bezdrátových reproduktorů

Jak ovládnout Instagram

Test levných 27" herních monitorů

Jak se zbavit nepotřebných věcí na internetu