Относительно адресации физической памяти в реальном режиме - PullRequest
1 голос
/ 14 апреля 2011

Я и мой друг проводили мозговой штурм по вопросу, касающемуся физической адресации в реальном режиме, и мы не могли обернуться вокруг этого.Здесь идет.

В реальном режиме 16 умножается на регистр селектора сегмента и добавляется в регистр смещения для получения 20-битного физического адреса.Следовательно, это приводит к возможности перекрытия сегментов.

EG "Селектор сегмента -> 0040 & смещение -> 0010" = "Селектор сегмента -> 0030 & смещение -> 0110"

* 1006мы понимаем, что селектор сегмента сдвигается на 4 бита перед добавлением к смещению.Поэтому, чтобы избежать этой сегментации, почему они просто не сместили селектор сегмента на 6 (умножьте его на 64), прежде чем добавить его к смещению.На наш взгляд, это исключило бы возможность совпадения памяти.

Связано ли это с какими-либо аппаратными ограничениями, с которыми они сталкивались в течение этого времени, или это просто проектное решение.

Ответы [ 2 ]

1 голос
/ 14 апреля 2011

Сдвиг на 4 дал вам адресное пространство целого мегабайта.Ух ты!

Дизайн был сделан в то время, когда 8-битные системы были сконфигурированы с 64 кБ, для тех, кто достаточно богат, чтобы покупать столько памяти.И с достаточно большой коробкой, чтобы вместить все эти платы памяти.

Вот как выглядит 16 КБ: http://www.s100computers.com/Hardware%20Folder/CCS/16K%20RAM/16K%20RAM.htm

Если бы вы установили 4 МБ, вам сначала пришлось бы арендовать другуюкомната для хранения плат памяти!

1 голос
/ 14 апреля 2011

Это связано с конструктивными ограничениями. У них была 20-битная адресная шина, проще всего было сделать так, чтобы регистр сегмента выделил абзац, затем добавил к нему смещение (а для частей, которые превышают 20-битную адресную шину, он оборачивается в дно памяти).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...