Каковы отношения между портами ввода-вывода и регистрами в контроллере устройства?
Следующие две ссылки дают разные утверждения о связях между портами ввода-вывода и регистрами в контроллере устройства? Каковы их отношения на самом деле?
Означает ли следующая цитата из 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
Означает ли следующая цитата [...], что в контроллере устройства для каждого регистра имеется ровно один порт ввода-вывода, а для каждого порта ввода-вывода - ровно один регистр?
Я бы сказал " нет " - это подразумевает, что для модуля ввода / вывода будет по крайней мере какая-то форма интерфейса данных, управления и статуса.
Помните, что многие учебные материалы представляют собой модель, которую легко понять, прежде чем лишить ее законной силы, представив предостережения и техническую сложность, которые действительно существуют.
Означает ли следующая цитата из Концепции операционной системы, что в контроллере устройства порт ввода-вывода имеет четыре регистра?
Опять же, я бы сказал " нет "... Это дает " типичное " / " базовое " ожидание того, из чего что-то может состоять.
