Mano mokytojas sakė, kad 8086 „Intel“ mikroprocesorius turi 16 bitų adresą ir 20 bitų fizinį adresą. Kuo skiriasi adresas nuo fizinio adreso?


Atsakymas 1:

Tai reiškia, kad 8086 m. Programose naudojami adresai (loginis ar virtualus adresas, kaip jūs jį vadinate) yra 16 bitų, tačiau tikrasis adresas, kurį 8086 siunčia RAM, yra 20 bitų.

Kodėl? Nes 16 bitų = 64 KB adresų vietos, kai kaip 20 bitų adreso = 1 MB atminties. Taigi galite adresuoti daugiau atminties nei įmanoma naudojant paprastą 16 bitų adresą (tokiu atveju 16 kartų daugiau atminties).

Kaip? Prisiminkite realaus režimo segmentinę adresų schemą. 8086 m. Adresas išsiųstas RAM = segmentų registras * 16 + poslinkis (segmentų registrą ir poslinkį pakeiskite cs: ip, ds: si, es: di ir tt)

Taigi, nors segmentų registrai ir poslinkiai yra 16 bitų, fizinis adresas gali būti 20 bitų.

(Jei pastebėjote, padauginti iš 16 yra tas pats, kaip poslinkį į kairę iš 4. 16 kairės dalies 16 bitų adresas, perkeltas 4, tampa 20 bitų adresu (ofsetas dar nepridėtas))


Atsakymas 2:

Vienas iš svarbiausių tikslų, į kurį elektros inžinieriai turi atkreipti dėmesį, kai jiems nurodoma ką nors suprojektuoti, yra tai, kiek daiktas kainuos, kai jis bus suprojektuotas pastatytas ir parduotas. O kartais tai reiškia, kad norint sutaupyti pinigų, kompiuterio duomenys ir adresų magistralės yra multipleksuojamos. Paprastai mes galvojame apie 20 bitų adresų magistralę, kaip turinčią 20 atskirų laidų, iš kurių kiekvienas turi 1 bitą duomenų adresų magistralėje. Galima turėti 16 laidų, kalbinančių adresų magistralę, kai didelės eilės 4 bitus valdo segmentų registras. Dėl to yra 1 megabaito atminties architektūra, skirta 16 bankomatų 64kilobitų. 16 bitų adresų magistralė pasirinks adresus nuo 0 iki 64 k, ir jūs turite pakeisti banko pasirinkimo registro turinį, kad galėtumėte kalbėtis su didelėmis 64 k atminties grupėmis iki pat 1 megės ribos. Centriniai procesoriai, turintys mažiau adresų eilučių nei palaikomos atminties dydis, paprastai turi segmentų registrus, kad branduolio arba operacinės sistemos kodas galėtų sekti ir prireikus perjungti banko pasirinktą registrą.

Tai galiausiai sukuria situaciją, kai duotą fizinės atminties adresą randa 4 bitų segmentų registras + 16 bitų adreso magistralė = 20 bitų fizinis adresas kalbėtis su 1 megabaito atmintimi. Laimei, mes jau seniai praėjome aštuntojo dešimtmečio dienas, kai mikroschemų dizaineriai nesiryžo pakuoti cpus į paketus, kuriuose yra daugiau nei 40 kaiščių, todėl adresų magistralė nėra reikalinga taip dažnai.