31 bites számítástechnika - 31-bit computing

A számítógépes architektúra , a 31 bites egészek , memória címeket , vagy egyéb adat egységek azok, amelyek 31 bites széles.

1983-ban az IBM bevezette a 31 bites címzést a System / 370 -XA mainframe architektúrában a korábbi modellek 24 bites fizikai és virtuális, valamint átmeneti 24 bites virtuális / 26 bites fizikai címzésének frissítéseként . Ez a fejlesztés lehetővé tette, hogy a címterek 128-szor nagyobbak legyenek, lehetővé téve a programok számára, hogy 16 MB feletti memóriát  címezzenek (a továbbiakban "a vonal felett"). A COBOL , a FORTRAN és később a Linux / 390 támogatása is benne volt.

Az 1980-as évek elején bemutatták a Motorola 68012- t; 32 bites adat- és címregiszterekkel rendelkezett, mint a Motorola 68010 , de ahelyett, hogy a cím alsó 24 bitjét megadta volna a címzettüskéken , a címzettűkön a 30. bit kivételével az összeset megadta.

31 bites IBM nagyszámítógépek

Építészet

A System / 360-ban , a 360/67 és a korai System / 370 architektúrákon kívül, az általános célú regiszterek 32 bites szélességűek voltak, a gép 32 bites aritmetikai műveleteket hajtott végre, és a címeket mindig 32 bites szavakban tárolták, tehát az architektúrát 32 bitesnek tekintették , de a gépek figyelmen kívül hagyták a cím felső 8 bitjét, ami 24 bites címzést eredményezett. Az XA kiterjesztésnél csak a szó magas szintű bitjét (0 bit) hagyták figyelmen kívül a címzésnél. Kivételt képez az, hogy az üzemmódváltási utasítások a 0. bitet is használták. Legalább két oka volt annak, hogy az IBM nem hajtotta végre a 360/67-es 32 bites címzését.

  1. A BXH és BXLE hurokvezérlő utasítások aláírták az összehasonlításokat.
  2. A meglévő szoftverek nagy része a 0. bitet használta a lista végének jelzőjeként.

Átmenet

Az átállás bonyolult volt: az összeszerelő nyelv programozói, köztük az IBM saját operációs rendszerének építészei és fejlesztői, majdnem húsz éve használták a zászlók címének tetején lévő tartalék bájtot. Az IBM a címzés két formáját választotta a fájdalom minimalizálása érdekében: ha egy 32 bites cím legjelentősebb bitje (0. bit) be van kapcsolva, akkor a következő 31 bitet virtuális címként értelmezzük. Ha a legjelentősebb bit ki volt kapcsolva, akkor csak az alsó 24 bitet kezelték virtuális címként (ugyanúgy, mint az XA előtti rendszereknél). Így a programok továbbra is használhatják a felső bájt hét alacsony sorrendű bitjét más célokra, amíg a felső bitet elhagyják. Az egyetlen módosítást igénylő programok azok voltak, amelyek a címet tartalmazó szó legfelső (bal szélső) bitjét állították be. Ez hatással volt a címek összehasonlítására is: A szó bal szélső bitjét előjelbitként is értelmezzük a 2-es komplementaritmusban, negatív számot jelölve, ha a 0 bit be van kapcsolva. Azok a programok, amelyek aláírt számtani összehasonlítási utasításokat használnak, megfordított eredményeket kaphatnak. Két egyenértékű címet összehasonlíthatnánk nem egyenlőnek, ha az egyiknél bekapcsolnánk a jelbitet, még akkor is, ha a többi bit azonos. Ennek nagy része láthatatlan volt olyan programozók számára, akik olyan magas szintű nyelveket használnak, mint a COBOL vagy a FORTRAN , és az IBM egy ideig kettős módú hardverrel segítette az átállást.

Bizonyos gépi utasítások ebben a 31 bites címzési módban esetleg szándékos mellékhatásként megváltoztatják a címzési mód bitjét. Például az eredeti szubrutin hívási utasítások, a BAL, a Branch and Link és annak regiszter-regiszter megfelelője, a BALR, a Branch and Link Register, bizonyos állapotinformációkat, az utasítás hosszának kódját, a feltétel kódját és a program maszkját a felső bájtban tárolják. a visszaküldési cím. A BAS, Branch és Save utasítás hozzáadódott a 31 bites visszatérési címek engedélyezéséhez. A BAS és annak nyilvántartási regiszter megfelelője, a BASR, a Branch and Save Register a System / 360 Model 67 utasításkészletének része volt , amely az egyetlen System / 360 modell, amely 24 bitnél hosszabb címeket engedélyezett. Ezeket az utasításokat fenntartották, de módosították és kibővítették a 31 bites címzéshez.

A 24/31-bites címzést támogató további utasítások között szerepel két új regisztráció-regisztráció hívás / visszaküldési utasítás, amelyek egyben a címzési mód megváltoztatását is eredményezik (pl. Ágazási és Mentési és Beállítási Mód, BASSM, a hívás 24/31 bites verziója, ahol a az üzemmódot tartalmazó összekapcsolási cím elmentésre kerül, és egy ág egy esetleg eltérő módban lévő címre kerül, és a BSM, az Ágazat és a Beállított mód, a visszatérés 24/31 bites változata, ahol a visszatérés közvetlenül az előzőleg mentett összekapcsolási címre irányul. és az előző módban). A BASSM és a BSM együttvéve lehetővé teszi a 24 bites hívások 31 bites (és visszatérés a 24 bites), 31 bites hívások 24 bites (és visszatérés 31 bites), 24 bites hívások 24 bites ( és visszatér a 24 bitesre) és a 31 bites hívások 31 bitesre (és visszatér a 31 bitesre).

A BALR 14,15-hez hasonlóan (a hívás csak 24 bites formája), a BASSM-et 14,15 BASSM-ként használják, ahol az összekapcsolási címet és módot a 14 regisztrációba mentik, és egy ágat visznek az alprogram címére és módjára. némileg hasonló a BCR 15,14-hez (a feltétel nélküli visszatérés csak 24 bites formája), a BSM-et 0,14 BSM-ként használják, ahol 0 azt jelzi, hogy az aktuális mód nincs elmentve (a program távozik a szubrutin egyébként), és vissza kell térni a hívóhoz a 14. regiszterben megadott címen és módban. A BAS, a BASR, a BASSM és a BSM használatának átfogó példáit lásd az IBM MVS / Extended Architecture System Programming Library: 31-Bit Addressing, GC28-1158-1 kiadványában, különösen a 29–30.

370 / ESA architektúra

A kilencvenes években az IBM bevezette a 370 / ESA architektúrát (később 390 / ESA névre keresztelték, végül pedig az ESA / 390 vagy a System / 390, röviden S / 390 néven), befejezve a teljes 31 bites virtuális címzés kialakulását és megtartva ezt a címzési módot. Ezek a későbbi architektúrák több mint 2 GB fizikai memóriát tesznek lehetővé, és egyidejűleg több, egyenként 2 GB méretű címteret tesznek lehetővé. 2006 közepén túl sok programot indokolatlanul korlátozott ez a többszörös 31 bites címzési mód.

z / Építészet

Az IBM 2000-ben az első 64 bites z / Architecture rendszer, az IBM zSeries Model 900 bevezetésével megszüntette a 2 GB-os lineáris címzési korlátot ("a sávot") . Az XA átmenettel ellentétben a z / Architecture nem tart fenn felső bitet a korábbi kód azonosításához. A z / Architecture fenntartja a kompatibilitást a 24 és 31 bites kódokkal, még a régebbi kódok is futnak egyidejűleg az újabb 64 bites kódokkal.

Linux / 390

Mivel a Linux / 390- t 1999-ben adták ki először a meglévő 32 bites adat / 31 bites címzési hardverhez, a pre-z / Architecture módban összeállított kezdeti nagyszámú Linux-alkalmazások szintén a 31 bites címzésre korlátozódnak. Ez a korlátozás eltűnt a 64 bites hardverrel, az IBM Z 64 bites Linuxjával és a 64 bites Linux alkalmazásokkal. A 64 bites Linux disztribúciók továbbra is 32 bites adat / 31 bites címzési programokat futtatnak. Az IBM 31 bites címzése lehetővé teszi a 31 bites kód számára, hogy további memóriát használjon fel. Bármelyik pillanatban azonban legfeljebb 2 GB van minden működő címtérben. 31 bites címzésű processzorokon a nem 64 bites Linux esetén RAM-lemezként a 2 GB-os sáv feletti memória rendelhető hozzá. A 31 bites Linux kernel (nem a felhasználói tér) támogatást eltávolították a 4.1-es verzióból.

Ruby & Smalltalk

A Ruby és a Smalltalk nyelv tolmácsai a legalacsonyabb bitet használják annak megállapítására, hogy egy érték doboz nélküli egész szám-e vagy sem. Ez azt jelenti, hogy a 32 bites gépeken (vagy a 16 bites, 32 bites mutatóval rendelkező gépeken) a 31 bites egész számok nincsenek dobozolva. Túlcsordulás esetén az eredmény egy dobozos objektumba illeszkedik, ami azt jelenti, hogy el kell osztani és szemetet kell gyűjteni. Így ha 32 bites értékei vannak, amelyek nem illeszkednek a 31 bites aláírt formátumba, akkor ezekben az értelmezőkben nagyon hatástalanok lesznek. Ugyanez vonatkozik a 64 bites számítógépek 63 bites, nem dobozos egészére is. Hasonló tervek találhatók a LISP-ben és néhány más nyelvben, amelyek változói bármilyen típusú értéket felvehetnek. Bizonyos esetekben hardveres támogatást nyújtott az ilyen jellegű kialakításhoz: lásd Címkézett architektúra és Lisp gép .

Hivatkozások