Můj učitel řekl, že mikroprocesor Intel 8086 má 16bitovou adresu a 20bitovou fyzickou adresu. Jaký je rozdíl mezi adresou a fyzickou adresou?


Odpověď 1:

To znamená, že v 8086 jsou adresy používané v programech (logická nebo virtuální adresa, jak ji nazýváte) 16 bitů, ale skutečná adresa, kterou 8086 odesílá do RAM, je 20 bitů.

Proč? Protože 16 bitů = 64 KB adresního prostoru, kde jako 20 bitů adresy = 1 MB paměti. Díky adresnému obyčejnému 16bitovému adresování (v tomto případě 16krát více paměti) můžete tedy oslovit více paměti, než co je možné.

Jak? Vyvolejte schéma segmentovaného adresování v reálném režimu. V roce 8086 adresa odeslaná do RAM = segmentový registr * 16 + offset (nahraďte segmentový registr a offset za cs: ip, ds: si, es: di atd.)

Ačkoli tedy segmentové registry a posuny mají 16 bitů, můžeme mít fyzickou adresu, která je 20 bitů dlouhá.

(Pokud si všimnete, násobení 16 je stejné jako posun doleva o 4. 16bitová adresa posunutá o 4 se stane 20bitovou adresou (offset ještě nebyl přidán))


Odpověď 2:

Jedním z nejdůležitějších cílů, kterým musí elektrotechničtí pracovníci věnovat pozornost, když jim je řečeno, že něco navrhnou, je to, kolik to bude stát, když bude navrženo postaveno a prodáno. A někdy to znamená, že datové a adresové sběrnice v počítači jsou multiplexovány, aby se ušetřily peníze. Normálně bychom uvažovali o 20bitové sběrnici adres, která má 20 samostatných vodičů, z nichž každý nese 1 bit dat na sběrnici adres. Je možné mít 16 vodičů mluvících k adresové sběrnici, když jsou 4 bity vysokého řádu řízeny registrem segmentů. To má za následek existenci architektury paměti, která je 1 megabajt, která je adresována jako 16 bank o 64 kB. 16bitová adresa sběrnice bude vybírat adresy od 0 do 64 kB a musíte změnit obsah registru pro výběr bank, abyste mohli mluvit s úspěšnými skupinami paměti o velikosti 64 kB až k hranici 1 megabajtu. CPU, která mají méně adresních řádků než podporovaná velikost paměti, obvykle mají segmentové registry, takže kód jádra nebo operačního systému může sledovat a podle potřeby přepínat registr výběru bank.

To nakonec vytváří situaci, kdy je daná fyzická adresa paměti nalezena 4bitovým segmentovým registrem + 16bitová adresa sběrnice = 20bitová fyzická adresa pro komunikaci s 1 megabajtovou pamětí. Naštěstí už dávno uplynuly dny sedmdesátých let, kdy návrháři čipů váhali dát cpus do balíčků s více než 40 kolíky, takže multiplexování adresové sběrnice není třeba tak často.