Tavujärjestys
Tavujärjestys (engl. byte order, myös engl. endianness) tietokoneessa tarkoittaa sitä, missä järjestyksessä tietokoneen suoritin käsittelee suurempia kuin yhden tavun pituisia kokonaisuuksia.
Esimerkiksi neljästä 8-bittisestä tavusta muodostuva 32-bittinen sana voidaan tallentaa tietokoneen muistiin useilla eri tavoilla. Asian havainnollistamiseksi eri tavuihin kuuluvat bitit on tässä merkitty kirjaimin A–D, joista A edustaa suurinta eli eniten merkitsevää tavua.
Historia
muokkaaUnix-käyttöjärjestelmä siirrettiin PDP-11-tietokoneilta IBM Series 1 -minitietokoneille. Sananpituus oli molemmissa sama, mutta tavut vaihtoivat paikkaansa. Käyttöjärjestelmän käynnistyttyä se ilmoitti olevansa NUXI, jonka vuoksi ongelmaa on kutsuttu myös NUXI-ongelmaksi.[1]
Intel 8008-suorittimen tavujärjestys oli little endian eli vähemmän merkityksellinen tavu oli ensin: syynä tähän oli JUMP
-käskyn muoto yhteensopivana Datapoint 2200:n kanssa.[2] Tämä on vaikuttanut myöhempään x86-arkkitehtuuriin.[2]
Danny Cohen tunnustetaan termien big endian ja little endian esittämisestä artikkelissaan On Holy Wars and a Plea for Peace.[3][4]
Big endian
muokkaaBig endian -muodossa (laskeva tavujärjestys) sanan merkitsevimmät tavut tallentuvat ensin eli alempiin muistiosoitteisiin:
- AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDD
Tämä vastaa tavallisesti käytettyjä lukujärjestelmiä, joissa suurin eli merkitsevin arvo ilmoitetaan ensimmäiseksi (esimerkiksi luvussa 256 numero 2 edustaa satoja, joten se on merkitsevämpi kuin kymmeniä edustava numero 5, joka puolestaan merkitsee enemmän kuin ykkösiä edustava numero 6). Tätä tavujärjestystä käyttävät monien tietokonevalmistajien suorittimet, ja se on myös Internetissä käytettävän IP-protokollan otsikkotiedoissa käytetty tavujärjestys (engl. network byte order).
Little endian
muokkaaLittle endian -muodossa (nouseva tavujärjestys) sanan vähiten merkitsevät tavut tallentuvat ensin:
- DDDDDDDDCCCCCCCCBBBBBBBBAAAAAAAA
Tämän voi rinnastaa tyypilliseen suomalaiseen tapaan esittää päivämäärät järjestyksessä, jossa ensin ilmoitetaan päivä, sitten kuukausi ja lopulta vuosiluku. Tällaista tavujärjestystä käyttävät Intelin suorittimet, PDP-11, VAX ja useat sulautetut järjestelmät.
Tavujärjestys on oleellista tietää käsiteltäessä binaarimuodossa olevia tiedostoja. Unicoden myötä sama tarve on tullut esiin myös tekstitiedostoissa.
Bi-endian
muokkaaBi-endian suoritin voi toimia kummassakin tilassa. Tietyissä suorittimissa tämä on mahdollista asettaa suorittimen resetoinnin yhteydessä. Esimerkki bi-endian-suorittimesta on ARM.[5]
ISO 9660 -tiedostojärjestelmässä useampitavuiset arvot ovat tallennettu kummassakin (little, big) tavujärjestyksessä, joten sitä voi kutsua myös bi-endian-tavujärjestykseksi.[6][7]
Middle-endian
muokkaaMiddle-endian on yleistermi muille vaihtoehdoille. Esimerkiksi PDP-11:n ohjelmakääntäjä tallentaa 32-bittiset arvot vaihtamalla 16-bittisten puoliskojen järjestystä ennakoidusta little-endian muodosta. Tälle on myös nimitys PDP-endian.[8] Esimerkiksi jos little- ja big-endian muodoissa "ABCD" ja "DCBA" ovat normaaleja, PDP-muodossa arvo olisi "BADC".[8]
Lähteet
muokkaa- ↑ Libes, Don; Ressler, Sandy: Life With UNIX, s. 9−10. Prentice Hall, 1989.
- ↑ a b Stanley Mazor: The History of the Microcomputer-Invention and Evolution (PDF) citeseerx.ist.psu.edu. Viitattu 24.10.2021. (englanniksi)
- ↑ Danny Cohen internethalloffame.org. Viitattu 25.10.2021. (englanniksi)
- ↑ Danny Cohen: ON HOLY WARS AND A PLEA FOR PEACE rfc-editor.org. 1.4.1980. Viitattu 25.10.2021. (englanniksi)
- ↑ Memory endianness ARM. Viitattu 1.2.2017.
- ↑ ISO Disk Image File Format Sustainability of Digital Formats Planning for Library of Congress Collections. Viitattu 1.2.2017.
- ↑ The ISO 9660 File System users.telenet.be. Arkistoitu 3.3.2017. Viitattu 1.2.2017.
- ↑ a b PDP-endian en.chys.info. Arkistoitu 29.10.2016. Viitattu 1.2.2017.
Aiheesta muualla
muokkaa- Kuvia tai muita tiedostoja aiheesta Tavujärjestys Wikimedia Commonsissa