Pipedija - tautosaka, gandai, kliedesiai ir jokios tiesos! Durniausia wiki enciklopedija durnapedija!


Little Endian

Iš Pipedijos - durniausios enciklopedijos.
Jump to navigation Jump to search

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.

Gal tai neturėtų didelio skirtumo, bet jei duomenų magistralėje yra mažiau bitų, nei procesoriaus registruose, tai šitas reikalas jau tampa netgi labai svarbiu. O būtent taip būdavo pigiose x86 sistemose, kur 8088 buvo 16 bitų, tačiau turėjo 8 bitų magistralę.

Žodžiu, ta atbula baitų tvarka Little Endian sistemose reiškia, kad galima panaudoti šiokias tokias paprastas aparatinio optimizavimo priemones, kurias Big Endian sistemose naudoti būtų žymiai sudėtingiau.

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