Hirdetés

Processzorok 64 biten

64 bites processzorok

Már több mint négy éve jelent meg az első 64 bites x86-os processzor, az Athlon 64, mégsem foglalkoztunk különösebben a 64 bites kiterjesztés témájával. Minek az, mire jó, és különben is, mi az? Amikor az AMD előállt az Athlon 64-gyel, még nem vehettük biztosra, hogy mi fog történni, hiszen aki kicsit is jártas volt a témában, tudhatta, hogy az Intel bizony másképpen képzelte el a 64 bitre való migrálást. És ha az Intel valamit elképzel, akkor az az esetek többségében később úgy is lesz. Ezúttal viszont nem jött be a papírforma.

Az Intel 1978-ban legyártotta az első 8086-ost, az első 16 bites x86-os processzort. 16 bites volt, mert a belső regiszterkészlet 16 bit méretű adatok tárolására volt képes, és a végrehajtó egységek már fel tudtak dolgozni 16 bites adatokat (a memóriacímzés 20 bites volt, de ez most mellékes). Egy évvel később az IBM PC-ben a 8088 debütált, mint a 8086 keskenyebb (16 helyett 8 bit széles) adatbusszal ellátott változata, és gyakorlatilag innentől kezdve számítjuk az x86 felemelkedését. Ezután jött a 286-os, amely a „bitesség” kérdésében nem nyújtott újat, de jóval több memóriát volt képes megcímezni. 1985-ben elkészült az Intel 386DX, az első 32 bites x86-os processzor. 32 bites volt, mert regiszterkészlete 32 bit méretű adategységek tárolására lett felkészítve, ráadásul már 32 biten címezte a (maximum 4 GB) memóriát is, így akkortájt igazi fenevadnak számított. A számítástechnika ezekben az időkben nem fejlődött olyan gyorsan, mint mostanság, ezért a 386, később a 486 és a Pentium egyes verziói egy–három év különbséggel debütáltak.

Hirdetés

Szépen telt-múlt az idő, míg 1989-ben az Intel mérnökeinek agyából kipattant az ötlet, hogy kreálni kellene egy teljesen új, 64 bites architektúrát. Ennek okát két tényezőben látták: egyrészt ekkor már javában folyt az első x86-os szuperskalár processzor fejlesztése, és úgy gondolták, hogy az x86-os architektúrák a későbbiekben túlságosan komplexszé válnak, ami gátat fog szabni az órajelemelésnek, így a teljesítménynövelésnek. Másrészt Moore törvényéből kiindulva azt gondolták, hogy 10 évvel később olyan tranzisztorszám-büdzsé áll majd rendelkezésükre, amiből könnyedén kigazdálkodhatnak majd egy nagyon erős, utasításszinten párhuzamosított architektúrát. Ezért az Intel 1989-ben elkezdett dolgozni az EPIC-en, amely a mai IA-64 alapjául szolgál az Itanium processzorokban. Erre később még visszatérünk.

Az évek folyamán egyre több architektúrába építették be a 64 bit támogatását, a MIPS 1991-ben, a DEC 1992-ben, a SPARC 1995-ben, a PowerPC 1997-ben, a Power 1998-ban gazdagodott ezzel, de az x86-ról nem szóltak a hírek. Ehelyett az Intel 94-ben tudomásunkra hozta, hogy dolgozik az IA-64-en, melyet az x86 leváltójaként vizionált. Az Intel úgy tervezte, hogy mint az x86 megalkotója, ő lesz annak eltiprója is, és helyette az IA-64-et fogja befuttatni. A probléma ezzel csupán csak az volt, hogy az x86-alapú processzorok az asztali PC-kben egyre csak terjedtek, ezért az x86 eldobásával szükségszerű lett volna az összes már megírt alkalmazás újraírása, újrafordítása. Ez természetesen senkinek nem lett volna ínyére, hiszen csak azért, mert az Intel azt mondja, nem öltek volna újabb milliókat már megírt alkalmazásokba. Ráadásul ekkor már nem csak az Intel gyártott x86-os processzorokat, ott volt az AMD, a Cyrix, később VIA stb.

Ismét ugorva picit az időben, 1999-be jutunk, amikor az Intel nyilvánosságra hozta a IA-64 utasításkészletet (ISA), és már azt hihették, hogy minden rendben megy, amikor az AMD előállt az x86-64 ötletével. Az Intelnek ennek ellenére is eltökélt szándéka volt az x86 leváltása, ezért az Itaniumot úgy tervezte meg, hogy az x86-tal kompatibilis legyen. Igaz, az Itanium sebessége x86-os kódot futtatva egy Pentiuméval egyezett meg, de ez nem okozott gondot számukra, mert csak egy átmeneti időszakban lett volna szükség erre az emulátorra, később az IA-64-gyel az Intel teljesen uralma alá vette volna a PC-piacot, így mint egyedüli és kizárólagos IA-64-tulajdonos, busás pénz ütötte volna a markát, miközben a kisebb processzorgyártók eltűntek volna a süllyesztőben. Az Intel terve meghiúsult, és ennek egyedül az AMD az oka, hiszen az AMD állt elő az x86 64 bites kiterjesztésével, amellyel most közelebbről is megismerkedünk.

Mitől 64 bit a 64 bit?

Amikor arról van szó, hogy egy adott processzor 16, 32 vagy 64 bites, az mindössze annyit jelent, hogy az általános célú (GP, azaz general purpose) regiszterek 16, 32 vagy 64 bit szélesek, azaz ennyi egymás mellett elhelyezkedő 1-est és 0-t képesek eltárolni egy egységként. Ebből következően a processzor végrehajtó egységei (VE) képesek az adott szélességű adatok feldolgozására. Remélhetőleg a bináris számrendszert a Prohardver! olvasóinak már nem kell bemutatni, de ha már itt tartunk, akkor megemlítjük, hogy 32 biten – ha nem alkalmazunk különféle számábrázolási trükköket – 232–1-ig lehet elszámlálni, míg egy 64 bites processzor esetében ez az egész szám maximálisan 264–1-re emelkedik. A regiszterek felelősek az egész számok és a memóriacímek (melyek egyébként ugyancsak egész számok) tárolásáért. Ezek a processzorban található, nagyon kis méretű memóriarekeszek, melyek a processzor órajelén járnak, ebből következően a központi egység gyakorlatilag egyetlen órajel alatt képes belőlük adatot kiolvasni, vagy beléjük adatot írni, tehát a leggyorsabb memóriáról van szó, amivel találkozhatunk egy rendszerben. Amikor 64 bites programról vagy kódról beszélünk, akkor az annyit jelent, hogy az a program 64 bites adatokkal dolgozik. Ugyanez igaz az utasításokra is, a 16, 32 vagy 64 bites utasítások 16, 32 vagy 64 bites adatokon, operandusokon végeznek el különböző műveleteket.


32 bit

Megpróbáltuk egyszerűen ábrázolni, hogy miről szól ez az egész. Amikor elindítunk egy alkalmazást, az a memóriába kerül utasítások és adatok folyamaként. A processzor ezeket az adatokat és utasításokat dolgozza fel. Amikor egy 32 bites processzorról beszélünk, az egész számok kezelése és a memória megcímzése 32 biten történik, tehát az adatok 32 bit szélesek. Az utasítások mérete nem lényeges, mert azok (szinte) ugyanakkorák 64 biten is. Az adatok/utasítások a memóriából a rendszerbuszon keresztül a processzorba kerülnek (tekintsünk el a hiányzó másodszintű gyorsítótártól az egyszerűség kedvéért), a processzoron belül az adatok az adatcache-be, az utasítások az utasításcache-be kerülnek. Az adatcache-ből az adatok tovább vándorolnak a regiszterek felé (melyek egyelőre 32 bit szélesek), majd innen a végrehajtó egységek felé veszik az irányt, amelyek az utasítások által meghatározott módon egy, két vagy akár több adaton, vagyis operanduson elvégzik a műveletet. Az eredmény szépen visszakerül a regiszterekbe, illetve a cache-be, és a folyamat kezdődik elölről.


64 bit

Egy 64 bites processzorban 64 bit széles általános használatú regiszterek vannak, tehát a processzor képessé válik a 64 bites adatok feldolgozására. Az alkalmazás a memóriába kerül, itt már 32 és 64 bit széles adatokat is találhatunk. Az adatok és utasítások eljutnak a processzor gyorsítótárjaiba, innen ismét kétfelé veszik az irányt. Az adatok a regiszterekbe kerülnek, és itt lényeges, hogy a 64 bites adatok tárolására már rendelkezésre állnak 64 bites regiszterek is, melyek később az utasításokkal „párosítva” ismét a végrehajtó egységekben landolnak, ahol vegyesen 32 és 64 bit széles adatok keletkeznek. A képen az is jól látszik, hogy a szélesebb operandusok szállításához, tárolásához gyorsabb, szélesebb és nagyobb memóriára, rendszerbuszra és gyorsítótárakra van szükség.

A cikk még nem ért véget, kérlek, lapozz!

Hirdetés

Előzmények

Hirdetés