![Život po x86 aneb kam dále s procesorovými architekturami?](https://storage.googleapis.com/pctuning-cz/media/images/ykb42jtjt72ub4m6692827f521bd952576012.webp)
Život po x86 aneb kam dále s procesorovými architekturami?
Seznam kapitol
Tvrzení, že architektura x86 je „stará“ anebo „přežilá“ architektura, jsou přehnaná. Faktem ale je, že si tato architektura táhne až příliš bohaté dědictví – a vývojáři se opakovaně pokouší o něco jiného a lepšího. Otázka ale je, zda to je opravdu o tolik lepší.
Na architektuře x86 není až tolik revolučního, ale taky ne moc démonického. Spousta problémů, které se během let objevily, spočívala v tom, že se v čase radikálně měnila představa, jaké požadavky mají splňovat malé procesory – a taky to, že vývoj komponent probíhal nerovnoměrně a to, co se zdálo jako super nápad v jedné generaci, byla katastrofa pro tu další. A ano, mluvím o té relativně přehlížené komponentě, totiž o paměti.
Většina uživatelů se o paměť zajímá pouze v tom smyslu, zda jí mají dost – a její rychlost moc neřeší, protože drtivou většinu kritických případů pokrývá mnohovrstvá architektura pamětí cache. Ti pokročilejší uživatelé vědí, že ona to s paměťmi není až taková legrace a že u výkonných komponent šířka paměťové sběrnice, latence a propustnost může znamenat rozdíl celé jedné třídy procesorů anebo grafik.
Ti, kteří se zabývají velkými výpočetními architekturami, obvykle lámou rukama, snaží se mít v serverových procesorech celý les řadičů pamětí a z mnoha praktických důvodů měří výkonnost paměťového subsystému nikoliv v rychlosti kontinuálního přenosu dat, ale v transakcích za sekundu. A pokud jde o vývojáře subsystémů cache… no, ti se ocitají na prahu šílenství, který smetl řadu opravdu, ale opravdu parádních nápadů – tedy ony alespoň vypadaly parádně teoreticky.
Ano, mluvím o paměťově orientované architektuře procesorů. V roce 1974 se objevil nádherný, téměř didakticky čistý design Motoroly 6800, která měla registr A, registr B, indexregistr, ukazatel zásobníku, programový čítač a flagy – a to bylo všechno. Tento procesor počítal s tím, že všechno ostatní bude v paměti včetně paměťově orientovaných vstupů a výstupů, kdy jste výstup dělali tak, že jste zapsali na speciální paměťovou buňku a čtení vstupu jste dělali tak, že jste přečetli speciální paměťovou buňku. Bylo to čisté a parádní – absolutní nádhera oproti všelijakým osmibitovým, zdvojeným a šestnáctibitovým registrům, se kterými přišel Intel – a také se systémem portů a vstupně výstupních instrukcí IN, OUT a další věci, které dělaly z jeho instrukční sady chaos.
Paměťově orientovaný design počítal s tím, že zdrojem i cílem operace je paměť, přičemž registry A a B, zvané „akumulátory“ sloužily jen pro zápis mezivýsledků. Je to elegantní, ale taky to je založené na představě, že paměť není o moc pomalejší než procesor, či, přesněji řečeno, paměť dokáže držet s procesorem krok a když si procesor o něco řekne, tak to taky dostane. Což funguje jenom v oblasti nejméně výkonných komponent, tedy tam, kde procesor jede 1 MHz až 2 MHz. Pokud začneme zrychlovat, tak zjistíme, že s procesorem máme kapku potíže, ale s pamětí jsou potíže mnohem větší, přičemž problémy rostou s tím, jak se kapacita paměti zvětšuje.