У меня современный 64-битный процессор. Мой BIOS все еще работает в 16-битном РЕАЛЬНОМ режиме?

1639
unixman83

Поскольку все еще требуется загрузка, мне интересно, в 64-битной системе x64 / AMD64 использует ли BIOS 16-битные инструкции? Также он работает в РЕАЛЬНОМ РЕЖИМЕ?

10
Википедия: «* Ограничения BIOS (режим 16-разрядного процессора, адресное пространство только 1 МБ, аппаратные зависимости ПК AT и т. Д.) Были сочтены явно неприемлемыми для новых компьютерных платформ. Расширяемый интерфейс встроенного ПО (EFI) - это спецификация, которая заменяет интерфейс времени выполнения устаревшего BIOS. * " Daniel Beck 13 лет назад 0
@ Даниэль Бек, я думал, что EFI только для Mac и Itanium. unixman83 13 лет назад 0
@ unixman83 - Большинство новых материнских плат Intel работают на EFI с момента появления Sandy Bridge. AMD, вероятно, последует их примеру, когда выйдет бульдозер. Настоящим препятствием было то, что диски, отформатированные с помощью MFT, не могут быть загружаемыми, если их размер превышает 2 ТБ ... предел, который только что начал широко использоваться. Вам нужен EFI для загрузки с диска, отформатированного в GPT (который может быть намного больше) Shinrai 13 лет назад 7
@ unixman83: я удалил ваш «ответ», потому что это не ответ, а просто копия / вставка комментария Шинрея. studiohack 13 лет назад 0
Ничто не мешает BIOS читать и понимать GPT, и загрузчики могут также получить доступ к более чем 2 ТБ с помощью вызовов BIOS, поэтому «потребность в EFI» для больших дисков - это (к сожалению, широко распространенный) миф. Patrick Georgi 13 лет назад 0

1 ответ на вопрос

6
Patrick Georgi

x86 processors still start out in real mode. BIOSes are free (and sometimes forced) to switch to protected or long modes while they initialize their hardware, but when they hand over control to the Operating System (or rather its bootloader), they have to revert back to real mode, because that's what these loaders expect the system to be in.

coreboot and UEFI switch to protected mode rather early, while for PCBIOSes (phoenix/award, ami and so on), we can't tell. They're closed source and generally don't tell much about their internals, and their interfaces are all specified as real mode.

For systems that run with ECC RAM, you can be relatively sure that they switch to some mode that's capable of addressing all RAM, so they go at least to protected mode - that's because they need to initialize the memory (write some value to each address) on boot or the system would halt if some later code reads addresses that were never written to (due to error detection that might produce a false positive). But as said, that's internal to the BIOS, and nothing that mere mortals can figure out easily or that they'd need to think about.

tl;dr: BIOS is in real mode at all points where it's externally visible, so for all intents and purposes it might just run in real mode all the time.

Даже оригинальный IBM PC AT BIOS переключился в защищенный режим для тестирования памяти. Yuhong Bao 11 лет назад 1

Похожие вопросы