31 bites architektúra

A Wikipédiából, a szabad enciklopédiából
Bit
1 4 8 12 16 18 24 31 32 36 48 60 64 128 256 512
Alkalmazás
16 32 64
Lebegőpontos számítás pontossága
x1 x2 x4
Lebegőpontos számítás decimális pontossága
32 64 128

A számítógép-architektúrák területén 31 bites egészek, memóriacímek és más adategységek azok, melyek legfeljebb 31 biten (0,96875) kifejezhetők, illetve ilyen szélesek. 31 bites mikroprocesszor-, illetve ALU-architektúrák továbbá azok, melyek ilyen méretű regisztereket, címsíneket és adatsíneket használnak.

Talán az egyetlen, 31 bites címzéssel rendelkező architektúra egyben a számítástechnika történetének leghíresebb és legtöbb jövedelmet hajtó gépcsaládja volt. Az IBM 1983-ban mutatta be a 31 bites címzésű System/370-XA mainframe-architektúrát a korábbi, 24 bites modellek frissítéseként. Ez a bővítés 128-szorosára növelte a megcímezhető memória méretét, lehetővé téve a programoknak a 16 MiB fölötti (a „vonal fölötti” az akkori technikai anyagokban) memória megcímzését.

Architektúra[szerkesztés | forrásszöveg szerkesztése]

A System/360- és a korai System/370-architektúrák általános célú regiszterei 32 bit szélesek voltak, 32 bites aritmetikai utasításokat támogattak és a címeket is 32 bites szavakban tárolták, így az architektúrát 32 bitesnek lehet tekinteni, de a gépek figyelmen kívül hagyták a címek felső 8 bitjét, így valójában 24 bites címzésről volt szó. Az XA kiterjesztéssel elérték, hogy a szó egyetlen bitjét se kelljen ignorálni.

Átállás[szerkesztés | forrásszöveg szerkesztése]

Az átállás trükkösnek bizonyult: az assembly programozók a cím 32 bitjének felső, szabad bájtját csaknem 20 éven keresztül jelzőbitekre használták el. Az IBM-nél kettős címzési forma támogatása mellett döntöttek, hogy az átállás a lehető legfájdalommentesebb legyen: ha a 32 bites cím legértékesebb bitje (MSB, bit 0) be van kapcsolva, a következő 31 bitet virtuális címként kell értelmezni. Ha az MSB ki van kapcsolva, akkor csak az alsó 24 bitet tekintik a cím részének, ahogy az XA előtti rendszereken volt szokásos. Így a programok továbbra is használhatták a felső bájt hét, legalsó helyiértékű bitjét egyéb célokra csak arra kellett figyelniük, hogy a legfelső bitet kikapcsolva hagyják. Csak azokat a programokat kellett módosítani, amik a címet tartalmazó szó legfölső (balszélső) bitjét 1-re állították. Ez érintette a címekkel végzett összehasonlításokat is: a szó balszélső bitje előjelbitként is értelmezhető, aminek 0 értéke negatív számra utal. Az aritmetikai összehasonlításokat végző programok fordított eredményeket kaphattak. Két, különben azonos címet különbözőnek találhattak, ha éppen az egyik előjelbitje be volt kapcsolva, még ha a többi bitjeik pontosan meg is egyeztek. Szerencsére ezek a problémák a legtöbb, magas szintű nyelvet (leginkább COBOL-t vagy FORTRAN-t) használó programozó számára láthatatlanok maradtak. Az IBM ráadásul az átállás időszakában egy ideig mindkét üzemmódot támogató hardvert gyártottak.

Ebben a 31 bites címzési módban egyes gépi kódú utasítások megváltoztatták a címzési mód bitjét, talán szándékoltan, talán nem. Például az eredeti szubrutinhívó utasítás, a BAL (Branch and Link) egyes állapotinformációkat a visszatérési cím legfelső bájtjában tárol. Az újonnan bevezetett BAS (Branch and Save) utasítás már fel volt készítve a 31 bites visszatérési címekre. A BAS, és regiszter-regiszter közötti megfelelője, a BASR (Branch and Save Register) a System/360 Model 67 utasításkészletének része volt – az egyetlen System/360 modellé, ami 24 bitesnél hosszabb címeket támogatott. Léteztek más, a 31 bites címzés támogatása céljából bevezetett utasítások is, köztük több call/return utasítás (pl. Branch and Set Mode, Branch and Store and Set Mode).

370/ESA architektúra[szerkesztés | forrásszöveg szerkesztése]

Az IBM az 1990-es években bemutatott 370/ESA architektúrájával (későbbi nevén 390/ESA, végül ESA/390 vagy System/390, röviden S/390) teljesedett ki a 31 bites virtuális címzésre való áttérés, a címzési módot jelző bit megtartásával. Ezek a későbbi architektúrák 2 GiB fizikai memóriánál többet is tartalmazhatnak, és támogatják több, legfeljebb 2 GiB méretű címzési tér egyidejű használatát. 2006 közepén még mindig nem túl sok program volt, amit komolyan korlátozott volna ezen többszörös 31 bites címzési mód elégtelensége.

Z/architecture[szerkesztés | forrásszöveg szerkesztése]

Ennek ellenére az IBM az ezredfordulóra áttörte a 2 GiB-os lineáris címzési korlátot, az első 64 bites z/Architecture rendszer, az IBM zSeries Model 900 2000-es megjelentetésével. Az XA-átállástól eltérően, a z/Architecture nem használja a legfelső bitet a korábbi kódok detektálására. Mégis, a z/Architecture fenntartja a kompatibilitást a korábbi 31 bites, sőt 24 bites kódokkal, akár az új, 64 bites kódokkal egyidőben futtatva is.

Linux/390[szerkesztés | forrásszöveg szerkesztése]

Miután a Linux/390 1999-es megjelenésekor az akkori 32 bites adatot/31 bites címet támogató hardver volt elérhető, a z/Architecture előtti, kezdeti nagygépes Linux-alkalmazások 31 bites címzésre voltak korlátozva. Ez a korlát eltűnt a 64 bites hardver, a 64 bites Linux on zSeries és a 64 bites Linux-alkalmazások megjelenésével. Az IBM 31 bites címzési módja támogatja a kibővített tárterületet a 31 bites alkalmazások számára, azonban egy-egy alkalmazáspéldány számára csak 2 GiB munkaterület áll rendelkezésre. A 31 bites címzésű hardveren futó, nem 64 bites Linuxokon a 2 GiB fölötti memóriaterület RAM diskként használható.

Jegyzetek[szerkesztés | forrásszöveg szerkesztése]

Fordítás[szerkesztés | forrásszöveg szerkesztése]

  • Ez a szócikk részben vagy egészben a 31-bit című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel.

További információk[szerkesztés | forrásszöveg szerkesztése]