V první části tohoto seriálu jsme se zabývali hardwarem AMD64 serveru. V dnešním článku se podíváme na některé vlastnosti AMD64 a také na to, jak v současnosti vypadá podpora v Linuxu.
10.5.2004 23:00 | Jan Houštěk | přečteno 24318×
Kolem jmen této architektury je celkem zmatek. Původně se nazývala x86-64, a na poslední chvíli se u AMD rozhodli pro poněkud samolibý název AMD64. Původní x86-64 bude ještě dlouho k nalezení v software i dokumentaci, ovšem postupně by mělo být nahrazeno novým názvem. Něco málo o tom píše Marc Miller z AMD do listu discuss@x86-64.org.
Varianta s podtržítkem je taktéž zmatečná. Není v tom žádný vyšší princip, pouze nutnost nahradit v některých případech spojovník. Jako hlavní důvod je většinou vytahován termín "filesystem conventions", osobně se domnívám, že ve skutečnosti jde hlavně o autoconf/configure, které se neumí vypořádat se spojovníkem v názvu architektury. Není divu, pokud bychom v zápisu x86_64-gnu-linux-pc nahradili podtržítko spojovníkem, nebylo by možné určit architekturu bez předchozí znalosti všech možností obsahujících spojovník.
Ve světě x86 se již hodně dlouho neudála žádná zásadní změna, pouze se zrychlovaly šváby a sem tam se přidala nějaká ta instrukce (MMX, SSE apod.). Klíčové vlastnosti jako adresace instrukcí, segmentace paměti, či instrukční sada se nezměnily od i386, jenž lze považovat za poslední opravdu revoluční procesor.
Nejpodstatnější (a někým též nejzatracovanější) vlastností nové platformy AMD64 je 100% kompatibilita s x86. Pro stávající 32bitové aplikace se nic nemění, lze je provozovat v 64bitovém OS nebo dokonce použít celý stávající 32bitový OS. AMD tvrdí, že cena za tuto kompatibilitu není velká, údajně nemá žádný vliv na výkon 64bitových aplikací a počet tranzistorů zvyšuje jen o 2%–3% (tomu druhému by se dalo i věřit vzhledem k tomu, že většina tranzistorů je v L2 cache :). 32bitové aplikace přitom stále mohou profitovat z některých inovací, jako je rychlý přístup do paměti, takže poběží o něco rychleji, než na srovnatelných 32bitových Athlonech.
Podívejme se nyní, jak je 64bitové rozšíření x86 realizováno. Je přidán nový režim procesoru nazvaný prozaicky long mode. Tento režim je kontrolován obsahem bitu zvaného LMA (Long Mode Active). Je-li LMA = 0, procesor se chová jako standardní x86 procesor a je kompatibilní se všemi možnými i nemožnými 32bitovými a 16bitovými aplikacemi. Long mode se dělí ještě na dva sub-režimy, 64-bit mode a compatibility mode. Compatibility mode i legacy mode umožňují spouštění 16 a 32bitových aplikací, rozdíl je ten, že na compatibility mode je potřeba 64bitový OS a není možné použít takové archaismy jako reálný režim nebo virtuální 8086 režim.
64bitový režim přidává mj. tyto vlastnosti:
Co tedy skutečné AMD64 procesory umí? Kromě ne tak zajímavých vylepšení jako je 1MB L2 cache u Opteronů, non-executable pages, IOMMU a další, máme zde dvě podstatné až revoluční inovace – integrovaná řadič paměti a HyperTransport sběrnice.
Ve stávajících x86 systémech spočívá přístup CPU do paměti v několika krocích. CPU je přímo připojeno na FSB sběrnici (Front-Side Bus) pracující na podstatně nižší frekvenci než samotné procesorové jádro. FSB připojuje CPU k čipu zvanému NorthBridge, který teprve integruje řadič paměti. Tento přístup má dva nedostatky; FSB přestává stačit potřebám dnešních procesorů a škáluje se jen velmi špatně, jediná možnost, jak toho dosáhnout, je zvyšováním taktovací frekvence, což není tak snadné, protože se tomu musí přizpůsobit všechny připojené subsystémy. Druhý problém je, že existence "prostředníka" přidává jisté zpoždění (navíc občas je dokonce třeba na NorthBridge čekat).
Řešení, se kterým AMD přišla, je vskutku zajímavé. Opteron a Athlon64 mají řadič paměti integrovaný přímo v CPU. Kromě zjevných výhod má toto i jeden podstatný důsledek pro víceprocesorové systémy. Zatímco řešení se společným řadičem paměti je jako dělané pro SMP architekturu, řešení s integrovaným řadičem v procesoru připomíná NUMA. Obecně lze toto považovat za posun správným směrem, NUMA se totiž podstatně lépe škáluje a s dobře navrženými aplikacemi má většinou i lepší výkon. Většina aplikací a OS ale očekává SMP. Proto AMD přišla s hybridním přístupem zvaným SUMO (Sufficiently Uniform Memory Organization), což je zjednodušeně řešeno způsob, jak zařídit, aby se systém s fyzickou NUMA architekturou tvářil jako SMP (stále je přitom možné těžit z výhod NUMA). SMP "emulace" je zajištěna rychlou komunikací mezi procesory, která je realizované zcela novou sběrnicí jménem HyperTransport.
HyperTransport je vysokorychlostní fullduplexní point-to-point spoj mezi integrovanými obvody. Má jednoduchý návrh, vysokou rychlost, nízké latence a je dobře škálovatelný. Jednotlivé linky lze škálovat jak ve frekvenci, tak šířce přenosu. Základní frekvence je 200MHz, současné implementace používají většinou 800MHz. Další flexibilita je dosažena možností použit různou šířku přenosu pro jednotlivé linky (2, 4, 8, 16 nebo 32 bitů). 16bitové HyperTransport zařízení lze spojit s okolím pomocí 2, 4, 8 nebo 16bitového linku. Nejrychlejší 32bitový link dokáže přenášet až úctyhodných 12,8 GB/s (součet v obou směrech).
Opteron má 3 16bitové HT linky a jeden 8bitový. Ve dvouprocesorových systémech je 8bitový link (3,2 GB/s) použit na připojení pomalejších IO zařízení (včetně 32bitové PCI sběrnice), jeden 16bitový link na připojení rychlých IO zařízení (např. PCI-X) a zbývající dva linky jsou spojeny do jednoho 32bitového a použity ke vzájemnému propojení procesorů. Levnější Athlony64 mají pouze jeden 8bitový a jeden 16bitový link. To stále umožňuje použít je v 2-way konfiguraci. S Opterony jsou pochopitelně realizovatelné i více než dvouprocesorové systémy, na obrázku je znázorněno, jak vypadá zapojení HT linků se čtyřmi Opterony.
Následující diagram demonstruje škálovatelnost HyperTransport sběrnice.
AMD64 bude velmi pravděpodobně vhodné v následujících případech:
Kryptografické a příbuzné aplikace, které intenzivně používají operace s velkými čísly, zaznamenají patrně na AMD64 dramatický nárůst výkonu. Např. jedna aritmetická operace se 128bitovým číslem potřebuje na x86 60 instrukcí (16 mul, 29 adc, 15 add), zatímco na AMD64 stačí pouhých 12 (4 mul, 5 adc, 3 add). Doba vykonání se sice nepatrně liší pro 32bitové a 64bitové operandy, i tak je ale význam 64bitů pro kryptografii více než zřejmý. Pro vysokorychlostní VPN router či server poskytující velké množství šifrovaných dat je AMD64 jasná volba.
V další části se na toto podíváme podrobněji a provedeme několik benchmarků na serveru popsaném v minulém dílu.
Jak bylo již zmíněno, libovolný x86 operační systém je schopný fungovat na AMD64 v legacy režimu, použití AMD64 je v takovém případě ovšem jaksi zbytečné. Podívejme se tedy na nabídku skutečně 64bitových systémů. Microsoft již delší dobu pracuje na 64bitové verzi Windows (nyní – květen 2004 – je k dispozici betaverze, zlí jazykové tvrdí, že na release 64bitových Windows si budeme muset počkat ještě 64 let :) SUN má Solaris 10 a vývojové verze FreeBSD a NetBSD taktéž podporují AMD64.
Linux běží na AMD64 velmi dobře (není tajemstvím, že v současné době ze všech podporovaných systémů nejlépe). Poslední verze kernelu 2.4 obsahují podporu AMD64, jsou ovšem postupně vytlačovány verzí 2.6, která by teprve měla ukázat AMD64 v plné síle. Téměř všechny velké linuxové distribuce mají AMD64 verze. Některé jsou v následujícím seznamu spolu s dostupností (uvažovali jsme jen oficiální stabilní verze).
Slackware zatím AMD64 nepodporuje a ani se o to v současné době vývojáři nijak nesnaží. Debian má silně vývojovou verzi (v tomto okamžiku je již zkompilována většina balíčků, ovšem seznam chyb a problémů je pekelně dlouhý). Není ovšem vyloučeno, že nová stabilní verze přidá další položku do seznamu podporovaných platforem.
Tento server včetně nainstalovaného a nakonfigurovaného Linuxu nabízíme v našem Linux CD Shopu za 89 000 Kč včetně DPH.