26 bit
Az ARM processzor architektúrában a 26 bit az eredeti ARM processzorok egyik tervezési sajátosságára vonatkozik, mikor is a programszámláló (PC) és az állapotregiszter (PSR, processor status register) egyetlen regiszterbe van összevonva, ill. a kettő egyetlen 32 bites processzor-regisztert alkot, az R15-öst; amelyben az állapotbitek a felső 4 és az alsó 2 bitet foglalják el, a programszámláló pedig a maradék 26 bitet használja.
Az ARM2 processzor tervezésekor a címmezőt egyszerűen 26 bitesnek választották, ami 64 MiB memória címzését teszi lehetővé. A programszámlálónak a memóriában lévő utasításokat kell címeznie, ezért ennek mérete is szükségszerűen 26 bit. Azonban az eredeti ARM architektúrában az utasítások mérete rögzített 32 bit, azaz 4 bájt, és az utasításoknak szükségszerűen a négybájtos szóhatárra igazítva kell a memóriában elhelyezkedniük, ezért az utasítások címzésekor a programszámláló alsó 2 bitje mindig nulla. Ezt kihasználva a tervezők úgy döntöttek, hogy erre a két bitnyi helyre a processzor üzemmódbitjeit helyezik el, amely négy értéket kódolhat, azaz négy üzemmód jelzésére alkalmas. A négy üzemmód a USR26, SVC26, IRQ26, FIQ26 jelű, ellentétben a modern ARM processzorok 32 üzemmódjával (5 bit), amelyet már a programszámlálótól elkülönített programállapotszóban tárolnak az újabb ARM architektúrákban.
Ez a kialakítás hatékonyabb programvégrehajtást tett lehetővé, mivel a programszámláló és az állapotbitek egyetlen művelettel elmenthető vagy visszatölthető, ami gyorsabb szubrutinhívásokat és a megszakításokra való gyorsabb reagálást eredményezett a tradicionális kialakításokkal ellentétben, amelyekben két regiszter tartalmát kell elmenteni a szubrutinhívások esetén.
Rövid történet
[szerkesztés]Annak ellenére, hogy az ARM architektúra 32 bites, az architektúra 1-es és 2-es változatában a programszámláló és a processzor címsíne csak 26 bites, ami következésképpen 64 MiB-ra korlátozta a címezhető RAM méretét. Ez a csipek megjelenésekor még mindig hatalmas méretű memóriának számított, ám az architektúra későbbi változatai különböző módszerekkel igyekeznek elkerülni ezt a korlátozást.
Az ARM architektúra 3-as változatában bevezették a 32 bites PC-t és a különálló PSR regisztert, valamint a 32 bites címsínt, ami 4 GiB memória címzését engedi meg. Ez a változtatás a PC/PSR regiszterek elrendezésében inkompatibilitást okozott a korábbi architektúrákra írt programoknál, ezért az újabb processzoroknak van egy 26 bites kompatibilitási üzemmódjuk is, amelyben a korábbi PC/PSR kombinációt alkalmazzák. A processzor ebben a módban még mindig 4 MiB címzésére képes, azonban nem tud semmit végrehajtani a 3FFFFFC cím (64 MB) fölött. Ezt az üzemmódot használja az újabb processzorokkal szerelt Acorn Risc PC-ken futó RISC OS is, kihasználva az újabb processzorokat és megtartva a kompatibilitást a régebbi programokkal.
Az ARM architektúra 4-es változatában a 26 bites üzemmód támogatását opcionálissá (választhatóvá) tették, és az ARM architektúra 5-ös változatától kezdve teljesen el is hagyták, tehát ez az 5-ös és későbbi típusokból teljesen hiányzik.
MIPS
[szerkesztés]A MIPS-architektúra nem tartalmazott ilyen korlátokat, de a 26 bit ennél is felbukkan az egyik utasítás formátumában: a 32 bites MIPS architektúrákban az elágazási utasítások ill. a programvezérlő utasítások J típusú utasításaiban szintén a 6+26 bites elrendezést alkalmazzák: ezekben a 6 felső bit kódolja az utasítást és a maradék 26 bit tárolja az ugrás v. elágazás célcímét, amely érdekes módon nem a PC-hez viszonyított relatív címkülönbség (ofszet), hanem egy 256 MiB-os szegmensen belüli abszolút cím. A cím kiszámításához az értéket még 4-gyel meg kell szorozni, mivel a MIPS utasítások szintén 4 bájtosak és a 32 bites szóhatárra igazítva tárolódnak a memóriában, így a címnek nem bájtra, hanem (32 bites) szóra kell mutatnia, és a legalsó 2 bit itt is elhagyható. Ez 228, azaz 256 MiB címzését engedi meg; a teljes 32 bites címet a processzor úgy képzi, hogy ezt a 28 bitet kiegészíti az éppen aktuális programszámláló legfelső 4 bitjével.[1]
A szegmenshatárokon átnyúló ugrásokra másfajta utasítások szolgálnak, amelyek regiszterben tárolt címeket használnak.[1]
Saturn Launch Vehicle Digital Computer
[szerkesztés]Mindezeket időben megelőzte a Saturn Launch Vehicle Digital Computer, amely a NASA egy konstrukciója, az 1960-as és 1970-es években volt üzemben a Saturn V rakéták automata vezérlőegységében. Ebben a gépben 13+1 bites memóriaszavakat használtak, amelyeket szótagoknak – syllable – neveztek. A szótagban 13 bit tárolta az értékes adatot és 1 bit pedig a paritásellenőrzést szolgálta. Az utasítások egy szótag, az adatszavak két szótag méretűek voltak, tehát egy adatszó mérete ebben a gépben is 26 bites volt. A memória ebben a gépben mágnesmagos kialakítású volt.
Jegyzetek
[szerkesztés]- ↑ a b 1.5.2 Addressing and Memory Accesses. In Dominic Sweetman: See MIPS Run. (angolul) 2. kiad. (hely nélkül): Morgan Kaufman, Elsevier. 2007. 24–25. o. ISBN 978-0-12-088421-6, ISBN 0-12-088421-6 „Rather than make this branch PC relative, this is interpreted as an absolute address within a 256-MB segment.”
Fordítás
[szerkesztés]Ez a szócikk részben vagy egészben a(z) 26-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.
További információk
[szerkesztés]- Differences Between ARM6 and Earlier ARM Processors
- "Using the Acorn C/C++ Development Environment to write 32-bit RISC OS software" - Details on the architectural changes and converting code between 26-bit and 32-bit.
- http://www.heyrick.co.uk/assembler/32bit.html - Information on converting assembler to 32-bit