Little Endian

Little Endian - tai procesorių architektūra, kur žodžių tvarka eina į vieną pusę, o baitų tvarka eina į kitą pusę.

Visa Kai procesoriaus apdirbamo duomenų žodžio ilgis būna daugiau, kaip vieno baito, baitų tvarka žodyje gali turėti ir tą pačią kryptį, kaip ir žodžiai, ir atvirkščią. Jei tvarka yra nuosekli ir eina ta pačia kryptimi - procesorius vadinamas Big Endian. Jei tvarka yra atvirkščia - tai vadinamas Little Endian.

Jei bus, pvz., 16 bitų procesorius, kur žodžių tvarka bus Little Endian, tai žodžiai operacinėje atmintyje eis taip: "Ž0, Ž1, Ž2...", tačiau baitai eis atvirkščiai - pirma "b1, b0", paskui "b3, b2", tada "b5, b4". Taigi, viskas bus atbulai.

Tame yra vienas privalumas - kai yra adresuojami skirtingo dydžio žodžiai, tai adresuojama pagal žodžio ribas, todėl gaunasi taip, kad asembleryje ir 8, ir 16, ir 32, ir 64 bitų kintamasis gali turėti tą patį adresą. Dėl tos priežasties, jei procesorius yra labai silpnas, pvz., 8 bitų, norint aparatiškai optimizuoti jo darbą, apsimoka su dalimi veiksmų naudoti pirmiausiai tik dalį žodžio (mažesnį baitą), ir tik dalim atvejų paskui naudoti didesnį. Kaip pvz., kam krauti du baitus, jei norint patikrinti, ar skaičius lyginis, ar nelyginis, pakanka pažiūrėti mažesnį baitą? Arba, pvz., jei pridedamas skaičius, kuris mažiau, kaip 255, gali būti, kad sudėčiai pakaks vieno baito, ir tik jei skaičių suma viršys vieną baitą, prireiks antro baito.

Tai reiškia, kad galima panaudoti šiokias tokias paprastas aparatinio optimizavimo priemones.

Galingiems ir sudėtingiems šių laikų procesoriams tokie gudravimai neturi didelės reikšmės, tačiau senais laikais tai gerokai praversdavo. Kartais jomis papiktnaudžiaudavo ir naujų, galingesnių procesorių kūrėjai, bandydami išspausti dar papildomus 1-2% greičio. Štai taip ir išliko tas balaganas su Little Endian baitų sekomis.

Little Endian architektūros pridaro ypatingai bjaurių problemų, kai žodžiai yra dideli, daug bitų - pvz., paprasta 32 bitų Little Endian žodžiams "Ž0, Ž1" turės baitų seką "b3, b2, b1, b0", o paskui "b7, b6, b5, b4", tačiau jei žodžiai bus dalinami į pusžodžius, išlaikant suderinamumą su 16 bitų, tai gali gautis "b1, b0", "b3, b2", "b5, b4", "b7, b6". Žodžiu, pasidaryti gali toksai balaganas, kad paskui visi prasikeiks.

Įprastos Little Endian sistemos - tai visokie x86 ir x86 64.


Dar žr.

  • Big Endian - čia gerokai detaliau aprašyta šitų pavadinimų kilmė
  • NUXI - klasikinė suderinamumo problema