AMD Opteron
Michal Ludvig <michal@logix.cz> (c) 2003
Dnes, 22.dubna 2003 uvádí firma AMD na trh 64-bitový procesor nové generace zvaný Opteron, který je založen na architektuře x86-64, nedávno přejmenované na AMD64. Možná je vám též povědomé jméno Hammer nebo SledgeHammer. Ale ať se dnes jmenuje jakkoliv, podívejme se, co nového nám přináší.
Architektura AMD64
V zásadě lze říct, že architektura AMD64 je pouhým 64-bitovým rozšířením konceptu ia32 na kterém jsou založeny všechny procesory od obstarožního 386SX až po nejnovější Pentium IV či Athlon XP.
Zpětná kompatibilita
Z nějakého důvodu se lidé zpočátku neptají, co nového AMD64
přináší, ale jestli je kompatibilní s jejich starými programy.
Odpověď je jednoduchá: Ano, je.
Procesory řady AMD64 jdou se zpětnou kompatibilitou tak daleko, že po zapnutí systému začnou pracovat ve starém dobrém 16bitovém reálném módu, který známe již od dob procesoru i8086, neboli PC XT z doby před mnoha a mnoha lety. Z toho plyne, že můžete vzít svou starou bootovací disketu a nejnovější výkřik techniky v podobě AMD Opteronu nabootovat do MS DOSu :-)
Jelikož reálný mód dnes již nikoho nenadchne, jistě záhy zatoužíte po 32-bitovém protected módu. K tomuto účelu vám dobře poslouží jakákoliv běžná distribuce Linuxu, kterou prostě vezmete, nainstalujete a spustíte. Jenže to pořád není ono - komu by dnes kupříkladu stačily 4GB RAM, že?
Takže vaším cílem bude 64-bitový long mode. Samozřejmě musíte mít operační systém, který tento režim podporuje. V případě linuxu je potřeba jádro - nejnovější verze v řadách 2.4 i 2.5 již podporu pro AMD64 obsahují (ovšem pod starším jménem x86-64) - a pár základních systémových utilit portovaných na 64-bitů. Zbytek klidně může zůstat 32-bitový.
Takže se podívejme, co v long módu mimo jiné najdeme...
Více větších registrů
Jelikož se zdvojnásobila velikost adresy ze 32 na 64 bitů, muselo AMD zvětšit registry procesoru, aby tyto adresy bylo kam dát. Aby bylo možné rozlišit mezi 32-bitovou a 64-bitovou verzí toho kterého registru, změnilo se lehce jejich značení. Například registr, který se v dobách i8086 jmenoval AX byl s příchodem i386 přejmenován na EAX. Pokud ho nyní budete chtít využít v celé jeho 64-bitové kráse, nazvěte ho RAX. Obdobně se změnilo jméno všech dalších registrů, takže adresa aktuální instrukce již není v IP, nebo v EIP, ale v RIP, a adresu konce zásobníku najdeme v RSP.
A protože se tvůrcům nového procesoru zdálo, že 8 GPRs (General Purpose Registers - tedy obecné registry) je málo, připravili nám jako bonus dalších 8 se jmény R8 až R15.
Pokud nám ale stačí počítání se 32 bity, nic nám nebrání i v long módu používat jména "kratších" verzí. Takže odkazovat se na EAX, AX, nebo dokonce jen na AL je v mnoha případech zcela v pořádku.
SSE & SSE2
Stejně jako se rozšířil počet registrů pro obecné použití, máme k dispozici i více registrů pro počítání v plovoucí řádové čárce. Preferovaným způsobem je nyní používání instrukcí SSE2, které mohou využívat šestnáct 128bitových registrů XMM0 až XMM15, což je o 8 více, než na Pentiu IV, které jako jediný procesor řady ia32 také nabízí SSE2 instrukce. Samozřejmě je stále dostupný i matematický koprocesor x87 FPU, ale jeho požití je až na vyjímky méně výhodné.
Non-eXecutable pages
Pěknou vlastností v oblasti bezpečnosti je možnost nastavit každé paměťové stránce tzv. Executable flag. Tím je možné zabránit spuštění kódu na stacku a tedy zajistit ochranu před většinou současných exploitů. Samozřejmě vždy existuje způsob, jak se do systému neoprávněně vlámat, ale s použitím tohoto mechanismu to bude o něco složitější.
Co umí skutečné Opterony
Takže některé zajímavé obecné vlastnosti architektury AMD64 už známe a nyní se podíváme, jak může vypadat systém s procesory AMD Opteron v praxi.
Integrovaný NorthBridge
Současné procesory jsou tak rychlé (a Opteron není vyjímkou), že je v rozletu omezuje jejich okolí. Často musí čekat na paměť, nebo dokonce i jen na přístup k řadiči paměti (memory controller). Aby toto zpoždění bylo co nejmenší, integrovalo AMD tzv. NorthBridge spolu s memory controllerem přímo do procesoru. Z toho plyne, že z Opteronu již nečouhá pomalý Front Side Bus, ale přímo dráty připojující paměť. Tento přístup má jeden zajímavý důsledek pro víceprocesorové systémy...
NUMA
... každý procesor má vlastní paměť. Nejedná se tedy o klasickou SMP architekturu, kde se mnoho procesorů pere o jeden memory controller a o jednu paměť, ale připomíná spíše tzv. NUMA architekturu (NUMA znamená Non uniform memory access).
Pokud se na klasickém SMP systému spustí proces na procesoru A a po čase je přemístěn na procesor B, celkem nic se neděje - paměť je v obou případech přístupná stejně rychle přes FSB, NorthBridge a memory controller.
Ovšem v NUMA systému je to jinak. Pokud proces spustíte na procesoru A, budou jeho data, kód, atd. nejspíš také v paměti náležící procesoru A. K této paměti bude mít proces rychlejší přístup než v ne-NUMA systému, protože se nebude muset prát s procesy z ostatních procesorů. Problém nastane, když proces odmigruje na procesor B - aby se dostal ke svým datům, obrátí se samozřejmě na svůj procesor (B), ten se ale bude muset spojit s procesorem A a vyhádat si u něj přístup do jeho paměti. Z hlediska uživatelského procesu je tento postup transparentní, ale pochopitelně pomalejší. Slušný operační systém by tedy měl udržovat procesy na jejich procesorech a zbytečně je nemigrovat pryč.
SUMO
Bohužel má NUMA jeden problém - běžný operační systém, který byl až doposud zvyklý běhat na SMP systémech, by z ní nebyl příliš nadšen. Takže AMD přišlo s jakýmsi hybridem zvaným SUMO (Sufficiently uniform memory organization) - fyzická architektura je podobná jako NUMA, ale pro operační systém se tváří jako SMP. Vhodným nastavením v BIOSu lze určit, zda se systém má tvářit víc jako SMP nebo víc jako NUMA. Pokud zvolíte druhou variantu a budete mít vhodný kernel se zapnutou NUMA optimalizací, můžete dosáhnout vyššího výkonu. Výhodou je, že i ne-NUMA kernel bude fungovat.
HyperTransport
Z předchozích odstavců je jasné, že je vhodné spojit procesory co nejrychlejším způsobem. Aby v procesoru těch novinek nebylo málo, vymyslelo AMD sběrnici zvanou HyperTransport.
HyperTransport (HT) je full-duplexní sběrnice připojená na integrovaný NorthBridge, která je schopná provést až 1.6GT/s (tedy GigaTransakcí za sekundu) v každém směru. Transakce znamená přenos jednoho bitu po jednom drátu. V případě 16-bitové sběrnice se tedy jedná o rychlost 3.2GB/s v každém směru. "Jednotkou" HT sběrnice je právě tato 16-bitová linka. Každý Opteron má k dispozici tři a půl HT sběrnice, tedy tři 16-bitové a jednu 8-bitovou (což je ta půlka :-). Desktopový Athlon64 bude mít k dispozici pravděpodobně jeden a půl sběrnice a díky tomu bude možné stavět dvouprocesorové desktopy bez nutnosti používání dražších Opteronů.
Poloviční, 8-bitová sběrnice se používá pro připojení SouthBridge, plnokrevnými, 16-bitovými sběrnicemi jsou vzájemně spojeny procesory. Pokud systém obsahuje jen dva Opterony, lze dvě sběrnice spojit a tak získat 32-bitové full-duplexní propojení s celkovou propustností 12.8GB/s, což je, jak jistě uznáte, celkem fofr.
Atd...
Mezi další lahůdky se kterými se budete moci setkat v systémech s Opterony
patří např. 64-bitová PCI-X HotPlug sběrnice s možností výměny
karet za běhu, nebo vylepšený power management s podporou ACPI 2.0.
Linux
Abyste mohli ochutnat všechna lákadla, která vám AMD se svým Opteronem
přináší, musíte mít operační systém, který je dokáže zpřístupnit.
Ačkoliv již i
Microsoft
oznámil, že zanedlouho vydá své Windows XP pro architekturu
AMD64, vás jistě zajímá, jak vypadá podpora v Linuxu.
Stručně řečeno: velice dobře :-)
Základní systém
Pro základní nabootování Opteronu potřebujete alespoň kernel. Můžete si vybrat mezi řadou 2.4 a 2.5. Kernel umí všechno na co jste zvyklí ze svých 32-bitových strojů, včetně všech libůstek typu Frame buffer, SW suspend nebo podpora 64-bitových PCI karet.
Běžící kernel je príma, ale chtělo by to něco víc - co třeba XFree86 v 64 bitech s akcelerací? Grafika na AGP 8X jistě nezklame, takže nyní je jen na vás, zda se rozhodnete pro 64-bitová KDE, nebo jako já zůstanete u svého oblíbeného WindowMakeru.
Takže co vám ještě chybí? Aha, Mozilla... Je pravda, že na www.mozilla.org ještě 64-bitovou verzi neseženete, ale zkompilovat sami si jí můžete. Nebo si ji pusťte ve 32 bitech - i tak funguje v 64-bitových X-kách moc pěkně.
Podpora 32-bitových procesů
Kernel pochopitelně umí spouštět jak 64-bitové, tak staré 32-bitové aplikace. Aby však ty starší programy mohly běžet, je nutné jim poskytnout 32-bitové sdílené knihovny, např. /lib/libc.so.6. Předpokládám, že linuxové distribuce budou obsahovat alespoň základní sadu těchto knihoven. Mimochodem, aby nedocházelo ke konfliktům, žijí nové knihovny v adresářích /lib64 a /usr/lib64.
64-bitový SuSE Linux
O portování linuxu na AMD64 se starali především vývojáři firmy SuSE a jistě není bez zajímavosti, že první prototyp počítače procesorem řady AMD64, který se objevil v Evropě, dorazil právě do Německé centrály této společnosti (i když tenkrát se těm procesorům ještě říkalo Hammery a architektura se jmenovala x86-64 :-)
Díky těsným vztahům s firmou AMD má nyní SuSE jako jediná linuxová firma k dispozici plně 64-bitovou distribuci pro AMD64 s názvem SuSE Linux Enterprise Server 8, kde pomalu nezavadíte o 32-bitový program (až na pár closed-source vyjímek typu Acrobat Reader). Jakmile AMD představí desktopové procesory Athlon64, bude na trh pravděpodobně uvedena i desktopová verze SuSE Linuxu.
A co dál?
Zájemcům o další informace doporučuji především následující odkazy:
- x86-64 Technology
- Stránky na serveru firmy AMD věnované procesorům AMD64 (nebo x86-64? Kdo se v tom má vyznat...). Je zde též online dostupný pětisvazkový AMD x86-64 Architecture Programmer's Manual.
- x86-64.org
- Stránka věnovaná Open Source projektům podporujícím AMD64. Najdete zde třeba popis ABI (Application binary interface), což je souhrn konvencí, jak volat funkce v programu, jak jim předávat parametry, nebo jsou stavěny sdílené knihovny. Pokud hodláte pro AMD64 programovat, měli byste si tento dokument alespoň prolistovat.
- SledgeHammer
- Jedno pěkné video, které mohlo být využito v marketingové kampani. Škoda, že AMD nakonec opustilo úderný název Hammer a zavedlo nic neříkající slovo Opteron.
A nyní nám již nezbývá, než se těšit, až každý budeme mít svého Opterona, nebo Athlona64 doma pod stolem :-)