Каковы отношения между портами ввода-вывода и регистрами в контроллере устройства?

Следующие две ссылки дают разные утверждения о связях между портами ввода-вывода и регистрами в контроллере устройства? Каковы их отношения на самом деле?

Означает ли следующая цитата из https://cs.nyu.edu/courses/fall10/V22.0436-001/lecture24.html что в контроллере устройства имеется ровно один порт ввода-вывода для каждого регистра, и существует ровно один зарегистрироваться для каждого порта ввода-вывода?

Каждое устройство ввода / вывода подключается к шине ввода / вывода через контроллер. Простой контроллер будет иметь как минимум 3 адреса (порта) на шине, каждый из которых соответствует регистру в контроллере.

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

Более сложные устройства (например, диски) будут иметь несколько регистров управления и состояния

Означает ли следующая цитата из Концепции операционной системы, что в контроллере устройства порт ввода-вывода имеет четыре регистра?

Порт ввода / вывода обычно состоит из четырех регистров, называемых регистрами состояния, управления, ввода и вывода данных.

• Регистр ввода данных считывается хостом для получения ввода.

• Регистр вывода данных записывается хостом для отправки вывода.

• Регистр состояния содержит биты, которые могут быть прочитаны хостом.

• Контрольный регистр....

Благодарю.

2 ответа

То, что вы описываете в своем посте, является "типичным" сценарием, особенно если ввод-вывод находится на другой шине, нежели ЦП (хороший пример -PCI / PCI), или вы говорите с контроллером, а не с реальным устройством ввода-вывода., Реальность, конечно, намного сложнее.

Аппаратное обеспечение может быть спроектировано так, чтобы реагировать любым способом, который разработчик аппаратного обеспечения хочет прочитать / записать запросы от ЦП.

Например, можно:

  • Сделайте так, чтобы простой доступ (чтение или запись) к адресу ввода-вывода заставлял устройство что-то делать.

  • Сделайте так, чтобы чтение и запись на один и тот же адрес ввода / вывода фактически обеспечивали доступ к различным регистрам или функциям на устройстве.

  • Простые устройства могут не нуждаться в регистре данных, управления и статуса. Параллельный порт ПК является примером. Он управляется одним байтом в адресном пространстве ввода / вывода.

Конечно, любые такие устройства будут напрямую адресованы процессором, а не "позади" контроллера. Параллельный порт, являющийся устройством ISA старой школы. Хотя в наши дни это на самом деле шина LPC, но LPC разработан, чтобы работать как ISA.

Вышеупомянутое было гораздо более распространенным явлением в эпоху до появления ПК, и я считаю, что оно распространено на платформах, отличных от x86, таких как ARM и MIPS.

Сложным контроллерам (большинству из них) понадобится дополнительный механизм, позволяющий вам указать, с каким устройством, подключенным к контроллеру, вы хотите общаться. I2C такой.

IP обычно проектируется как модули с четко определенными границами... часто они находятся в адресном пространстве ядра процессора. Можно было бы разработать блок ввода-вывода с одним входным или выходным выводом, который имеет один бит регистра, подключенный либо для чтения входного значения, либо для установки выходного значения... но это бесполезно и довольно расточительно в адресном пространстве.

Вместо этого модули разработаны так, чтобы быть более " функциональными " и, следовательно, в некоторых случаях более параллельными - модули ввода / вывода AVR имеют 8 входов / выходов, а модуль ввода / вывода STM32 имеет 16 контактов. AVR обеспечивает базовую функциональность ввода-вывода, в то время как STM32 имеет управление скоростью нарастания и альтернативные функции, которые могут быть отображены на драйверы, предоставляемые контактами ввода-вывода.

Рассмотрим порты ввода / вывода следующего:

AVR

STM32


Означает ли следующая цитата [...], что в контроллере устройства для каждого регистра имеется ровно один порт ввода-вывода, а для каждого порта ввода-вывода - ровно один регистр?

Я бы сказал " нет " - это подразумевает, что для модуля ввода / вывода будет по крайней мере какая-то форма интерфейса данных, управления и статуса.

Помните, что многие учебные материалы представляют собой модель, которую легко понять, прежде чем лишить ее законной силы, представив предостережения и техническую сложность, которые действительно существуют.

Означает ли следующая цитата из Концепции операционной системы, что в контроллере устройства порт ввода-вывода имеет четыре регистра?

Опять же, я бы сказал " нет "... Это дает " типичное " / " базовое " ожидание того, из чего что-то может состоять.

Другие вопросы по тегам