Адреса памяти PCI-бара

быстрый вопрос, я читал страницу Osdev Wiki относительно PCI, и она говорит следующее -

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

Я не понимаю, где он говорит:memory address BARs need to be located in physical ram. Весь смысл MMIO в том, что ему назначается адрес памяти, так что он будет направлен на устройство, а не в физическую память. Что это означает, что он должен быть расположен в физической оперативной памяти?

не было бы это просто адрес между 3Gb-4GB адресное пространство, независимо от того, сколько физической памяти установлено?

это ошибка на сайте OSDev или я неправильно понял?

link - примерно на полпути вниз, под заголовком База адресов регистров

14
задан Cfinley
09.03.2023 17:40 Количество просмотров материала 3518
Распечатать страницу

1 ответ

Я считаю, что здесь какая-то путаница, так как есть разница между I/O и не-устройства ввода/вывода.

Из Википедии памяти ввода-вывода (MMIO):

памяти ввода/вывода использует ту же шину адреса для обращения к памяти и устройствам ввода-вывода - память и регистры устройств ввода-вывода сопоставляются с (связанными с) значения адреса. Поэтому, когда к адресу обращается ЦП, он может относиться к части физической оперативной памяти, но может также ссылаться память устройства ввода/вывода. Таким образом, инструкции процессора, используемые для доступа память также может использоваться для доступа к устройству. каждый прибор и / о контролирует шину адреса ЦП и отвечает на любой доступ ЦП к адрес, назначенный этому устройству, подключения шины данных в регистр оборудования нужного устройства. Приспособить приборы I / O, области адресов, используемых ЦП, должны быть зарезервированы для ввода-вывода и не должен быть доступен для нормальной физической память.

из вашей статьи :

регистры базового адреса (или бары) могут использоваться для хранения адресов памяти используется устройством или смещениями для адресов портов. Обычно память адресные строки должны быть расположены в физической оперативной памяти пока космос I/O Бары могут находиться на любой адрес памяти (даже за пределами физической памяти).

image

поле Тип памяти макет бар указывает размер базовый регистр и где в памяти он может быть сопоставлен. Если он имеет значение 0x00, то базовый регистр имеет ширину 32 бита и может быть соотнесенные в любом месте 32-битной памяти. Значение 0x02-базовая регистр 64-битный и может быть карту везде в 64-битной Пространство Памяти (64-разрядный регистр базового адреса использует 2 базы регистры адреса доступные).

таким образом, нет никакого конфликта между двумя, как это все зависит от устройства. Если устройство перехватывает ссылку на память на шине, то адрес является виртуальным. Если это не так, то это реальный физический адрес, который используется для связи с устройством (например, NVRAM).

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

Это является причиной хорошо известной проблемы 32-разрядных компьютеров Windows казалось бы, не в состоянии использовать весь 4 ГБ памяти. Причина в том, что Windows, будучи 32-битной, выделяет память устройства с помощью реальных адресов, который затем стал недоступен для обоих случаев: действительно ли использовалась адресованная память, или не используется, так как перехватывается устройством.

еще одна полезная статья в Википедии : пространство конфигурации PCI.

3
отвечен harrymc 2023-03-11 01:28

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх