Мой настаўнік сказаў, што мікрапрацэсар 8086 Intel мае 16-бітны адрас і 20-бітны фізічны адрас. У чым розніца паміж адрасам і фізічным адрасам?


адказ 1:

Гэта азначае, што ў 8086 адрасах, якія выкарыстоўваюцца ў праграмах (лагічны ці віртуальны адрас, як вы іх называеце), ёсць 16 біт, але фактычны адрас, які 8086 адпраўляе ў аператыўную памяць, складае 20 біт.

Чаму? Таму што 16 біт = 64 кб адраснай прасторы, дзе 20 біт адрас = 1 Мб памяці. Гэта азначае, што вы можаце адрасаваць больш памяці, чым магчыма, пры простым 16-бітным адрасаванні (у гэтым выпадку ў 16 разоў больш памяці).

Як? Выклікайце схему сегментаванага адрасавання ў рэальным рэжыме. Адпраўлена ў аператыўную памяць у 8086 адрасе = рэгістр сегмента * 16 + зрушэнне (заменіце сегментны рэгістр і зрушэнне на cs: ip, ds: si, es: di і г.д.)

Хоць сегментныя рэгістры і зрушэнні складаюцца з 16 біт, у нас можа быць фізічны адрас, які складае 20 біт.

(Калі вы заўважылі, што памнажэнне на 16 эквівалентна зрушэнню ўлева на 4. 16-бітны адрас, зрушаны на 4, становіцца 20-бітным адрасам (зрушэнне яшчэ не дададзена))


адказ 2:

Адзін з найважнейшых задач электратэхнікаў, на які трэба звярнуць увагу, калі яго просяць нешта праектаваць, - колькі гэта будзе каштаваць пры яго будаўніцтве і продажы. А часам гэта азначае, што шыны дадзеных і адрасы мультыплексаваны ў адным кампутары, каб зэканоміць грошы. Звычайна мы ўяўляем 20-бітную адрасную шыну з 20 асобнымі правадамі, кожны з якіх перадае 1-бітныя дадзеныя па адраснай шыне. 16 адрасных правадоў могуць пагаварыць з адраснай шынай, калі 4 біты больш высокага парадку кіруюцца рэгістрам сегмента. Гэта прыводзіць да архітэктуры памяці 1 мегабайт, які адрасаваны 16 банкам з 64 кілабайтамі. 16-бітная адрасная шына выбірае адрасы ад 0 да 64 Кб, і вы павінны змяніць змесціва банкаўскага рэестра выбару для зносін з паслядоўнымі групамі ў 64 КБ памяці да ліміту 1 мега. Працэсарныя працэсары з меншай колькасцю радкоў памяці, чым падтрымліваецца памер памяці, звычайна маюць рэгістры сегментаў, таму асноўны код або аперацыйная сістэма могуць адсочваць і пераключаць рэестр выбару банка па меры неабходнасці.

Гэта ў канчатковым выніку стварае сітуацыю, пры якой дадзены рэестр фізічнай памяці знаходзіць 4-бітны сегментны рэгістр + 16-бітная адрасная шына = 20-бітны фізічны адрас для размовы з 1-мегабайтнай памяццю. На шчасце, мы даўно пакінулі часы 1970-х, калі канструктары чыпаў неахвотна спакавалі працэсар у пакеты з больш чым 40 штыфтамі, таму мультыплексаванне адраснай шыны не патрабуецца так часта.