-4

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

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

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

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

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

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

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

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

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

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

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

Благодарю.

2 ответа2

2

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

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

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

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

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

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

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

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

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

1

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

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

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

AVR

AVR регистры ввода / вывода

STM32

регистры ввода / вывода stm32


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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .