Может кто-нибудь объяснить, почему некоторый объем памяти всегда зарезервирован для оборудования? Как это связано с адресацией памяти?
2 ответа
why some amount of memory always reserved for hardware?
Потому что это часть современной архитектуры персональных компьютеров, которая называется "PCI", Peripheral Component Interconnect. Эта архитектура была изначально разработана в начале 1990-х годов, чтобы добиться прогресса в конфигурации и производительности для расширения числа дополнительных устройств для ПК, а также для обеспечения функциональности Plug-and-Play (для устранения неудобного процесса явной настройки и автоматического распределения периферийных ресурсов).
Каждому периферийному устройству нужны средства для связи с процессором, для передачи данных туда и обратно. Таким образом, архитектура PCI обеспечивает унаследованное пространство доступа ввода / вывода (устаревшая форма периферийной связи в архитектуре X86, которая используется все реже и реже) и пространство MEMORY-MAPPED, которое обеспечивает гораздо более быстрый доступ и обмен данными. Очевидно, что если какое-то окно связи отображается в общее пространство памяти, оно исключается из адресной области обычной оперативной памяти. Хотя эта схема выделения ресурсов является гибкой, существуют некоторые архитектурные ограничения (я полагаю и на уровне ОС), как декодировать и отображать это пространство, поэтому некоторая часть верхней памяти "зарезервирована".
Многое зависит от того, 32-х или 64-х битная ОС.
В 64-битной ОС самым крупным пользователем аппаратной зарезервированной памяти обычно является видеосистема. Из соображений экономии многие видеосистемы не имеют или имеют очень мало собственной памяти, но полагаются на системную память для своих нужд. Это особенно распространено в ноутбуках. Эта память будет зарезервирована BIOS для использования видео до запуска Windows.
Все вышеперечисленное относится к 32-битной ОС, но есть дополнительный фактор. 32-разрядная ОС имеет фиксированное физическое адресное пространство 4 ГБ. ОЗУ является крупнейшим пользователем этого адресного пространства, но не единственным. По соображениям производительности значительная часть этого пространства используется для ввода-вывода с отображением в памяти. Это позволяет ЦПУ быстро обмениваться данными с аппаратными устройствами, считывая и записывая их так же, как это происходит с памятью. Обычно для этого требуется около 500 МБ и более адресного пространства. Существуют и другие методы, но они слишком медленные для высокопроизводительных устройств, таких как видео.
Память IO отображается в том же адресном пространстве, что и RAM. Это создает проблему. Вы не можете иметь 4 ГБ ОЗУ и 500 МБ + устройств с отображенной памятью в адресном пространстве 4 ГБ. Это просто не подходит. Таким образом, все пространство, используемое для отображаемых в память устройств, недоступно для использования ОЗУ. Обычно от 500 до 750 МБ теряется, но точный объем зависит от оборудования.
64-разрядные операционные системы имеют физическое адресное пространство, измеряемое в терабайтах, так что есть много места для оперативной памяти и сопоставленного ввода-вывода памяти.