Вопрос Как память сопоставляется с определенным оборудованием? Как точно работает MMIO?


Поймите, что я НЕ спрашиваю о том, как настроен MMIO (ввод / вывод данных с памятью), но спрашивая, как он отображается, I.e, что именно отображает его? Не то, что сопоставлено с чем, я могу Google карту памяти для этого.

Я хочу знать, например, как только вы впервые включите компьютер, что именно «отображает» память или как это работает?

В принципе, что устанавливает память или «отображает» ее для определенных целей?

Первоначально я думал, что это прошивка для загрузки, например BIOS или EFI / UEFI, но другой пользователь на другом сайте сказал мне, что это связано с контроллером памяти. Это правда?

Но как, если более подробно, если не слишком много, чтобы спросить? Большое спасибо всем, кто разъясняет!


3
2018-05-15 01:31


происхождения


«Отображение» выполняется на аппаратном уровне, в частности, на декодере адресов. Конкретный адрес или диапазон адресов, которые соответствуют устройству, генерируют сигнал CS (выбор микросхемы) для этого устройства. - sawdust
Не совсем ясно. - Dinosaur pawz


ответы:


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

В целом, BIOS:

  1. Обнаруживает БАР устройства (регистр базового адреса). Каждое устройство может иметь до шести БАР.

  2. Для каждого BAR запрашивает BAR, сколько адресного пространства ему нужно.

  3. Назначает BAR блок адресного пространства.

  4. Программа BAR с базовым адресом выбранного блока адресного пространства памяти.

Декодер адреса устройства теперь реагирует на чтение и запись внутри этого блока адресного пространства. С этого момента, когда процессор (или любое устройство в системе, способной к DMA) считывает или записывает на любой адрес внутри этого диапазона, устройство будет отвечать на запрос.

Обратите внимание, что нет Память назначается устройству. Память на Устройство. Это адресное пространство памяти, которое назначено устройству.

Конечно, вы можете найти процесс, подробно описанный в Википедии. Конфигурационное пространство PCI стр.


7
2018-05-15 04:17



Поэтому я был прав; это прошивка, которая это делает. Благодаря! - Dinosaur pawz
Это PC-ориентированный ответ, который описывает только то, как PCI устанавливает сопоставление памяти для карты. PCI - это шина для карт, которые являются «подключи и играй» и предназначены для самостоятельной настройки. Чаще всего устройства назначают свои адреса, когда материнская плата или SBC или SoC спроектированы, а затем жестко подключены (или запрограммированы в FPGA) в адресный декодер. Интегрированные устройства просто не нуждаются в динамическом назначении своих адресов, таких как PCI-карта. - sawdust
Это был ПК-ориентированный вопрос. - David Schwartz
Мне больше нравится ответ опилок; он / она делали лучше. - Dinosaur pawz