31 bites architektúra
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 | |||||||||||||||
x½ | 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 (3,875 oktett) 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]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 címtartomány 2 GiB-ra bővüljön (31 kihasznált címbit).
Átállás
[szerkesztés]Az átállás nehéznek 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.
A CPU két különböző üzemmódban képes működni, amelyek között a BASSM (Branch And Save [return address] and Set Mode) és a BSM (Branch and Set Mode) utasításokkal lehet átváltani.
24 bites módban a címek felső 8 bitje figyelmen kívül marad; minden kód- és adatterület az alső 16 MiB-os tartományban kell elhelyezkedjen; a BAL és BALR utasítások a visszatérési cím felső byte-jába más információt helyeznek (pl. a programmaszk értékét); az új BAS és BASR utasítások a visszatérési cím legfelső bájtját nullára állítják (az MSB 0 értéke a CPU 24 bites üzemmódját jelzi, a következő hét nulla értékű bit a 31 bites cím része).
31 bites módban a címek legfelső bitje figyelmen kívül marad; az adat- és kódterületek tetszőleges helyen lehetnek a teljes 2 GiB-os címtartományban; a BAL, BALR, BAS és BASR utasítások a visszatérési cím legfelső bitjét 1-re állítják, ami a CPU 31 bites üzemmódját jelenti.
Kompatibilitási probléma akkor léphet fel, amikor 24 bites módban BAL/BALR utasítással előállított címet 31 bites módban akarunk használni: a legfelső bájtban lévő „szemét” miatt a cím érvénytelen.
Kompatibilis programozáshoz a BAL/BALR helyett BAS/BASR-t kell használni (vagy esetleg egy LA (load address) és egy B/BR (branch) utasításból álló párt); a címeket mindig négy bájton tárolni, ideértve a saját és a külső komponenseket, például a rendszerhívásokat.
További tudnivaló, hogy az egyes CSECT-ek két új attribútumot kaptak: AMODE (címzési mód: milyen CPU üzemmódban futtatható a kód (ha a CSECT kódot tartalmaz)) és RMODE (elhelyezkedés: a címtartományban hová kerülhet a CSECT). AMODE lehetséges értékei 24, 31 és ANY (bármelyik); RMODE lehetséges értékei 24 és ANY. Gyakran használt kombinációk: AMODE=RMODE=24 és AMODE=RMODE=ANY. Érvénytelen kombináció: AMODE=24 és RMODE=ANY. A többi három kombináció speciális alkalmazásokhoz használható.
370/ESA architektúra
[szerkesztés]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]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]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]Fordítás
[szerkesztés]- 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. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.