Если BIOS представляет собой 16-разрядную программу, работающую в реальном режиме, и в этом режиме возможно обращение только к 1 МБ, как BIOS определяет объем доступной оперативной памяти, например, 1 ГБ?
1 ответ
BIOS представляет собой 16-разрядную программу, работающую в реальном режиме, и в этом режиме можно адресовать только 1 МБ.
Это неверно
16-битный реальный режим не ограничивает процессор до 1 МБ памяти.
Хотя процессор x86 запускается в реальном режиме и по умолчанию использует 16-битный набор инструкций 8086, в наборе инструкций 80286 есть расширения. Если вы префикс 8086 инструкции с байтом 0x67, это позволит этой инструкции доступ к 32-битному регистру, который имеет доступ к 2 32 байта или 4 ГБ памяти.
Если вы используете 64-разрядный процессор, процессор может использовать PAE (расширение физических адресов), которое дает процессору доступ к 2 52 байтам памяти, что больше, чем можно физически установить на любой современной материнской плате.
Источник Как BIOS может определить полный объем расширенной памяти
Как BIOS определяет объем доступной оперативной памяти, например, 1 ГБ?
Он использует методы, которые описаны в таблицах данных для контроллера памяти (северный мост).
Большинство BIOS не могут использовать ОЗУ до тех пор, пока они не определят тип установленной ОЗУ, затем определят размер каждого модуля памяти, а затем сконфигурируют набор микросхем для использования обнаруженной ОЗУ.
Все это зависит от конкретных методов набора микросхем и обычно документируется в таблицах данных для контроллера памяти (северный мост).
ОЗУ непригодно для запуска программ во время этого процесса. BIOS изначально запускается из ПЗУ, поэтому он может играть в необходимые игры с чипами ОЗУ. Но это совершенно невозможно сделать из любой другой программы.
Память обнаружения источника (x86)