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

376
Tim

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

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

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

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

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

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

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

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

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

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

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

Благодарю.

-3
Я предлагаю вам просмотреть некоторые таблицы реального оборудования, чтобы лучше понять, что может произойти. Хотя это правильно описывает основную идею, реальные чипы странные, и вы не поверите всему спектру идей, которые есть у разработчиков оборудования ... dirkt 5 лет назад 0
Тим, пожалуйста, прочитайте вопрос ближе к тексту. Эта категория вопросов ** не по теме ** здесь, на SU. Twisty Impersonator 5 лет назад 0
@TwistyImpersonator Я не прошу «рекомендации по продукту, услуге или учебному материалу». Мой вопрос действителен. (Я забыл "не" в моем предыдущем комментарии) Tim 5 лет назад 0
@ Тим Лол ... хорошо, я подумал, могло ли это быть так. Twisty Impersonator 5 лет назад 0
@TwistyImpersonator К сожалению об этом. Не могли бы вы дать возобновить голосование? Tim 5 лет назад 0
Ну, я не VTC на основе вашего комментария, а скорее ваш вопрос. В его нынешнем виде не может оправдать возобновить голосование. Ваш вопрос может быть лучше, если вы отредактируете его, чтобы описать реальную проблему, которую вы пытаетесь решить. Twisty Impersonator 5 лет назад 1
@ Я не понимаю твою просьбу. Разве мой пост не является той проблемой, которую я пытаюсь решить? Похоже, ты лучше знаешь, в чем моя настоящая проблема, чем я. Tim 5 лет назад 0

2 ответа на вопрос

2
LawrenceC

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

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

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

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

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

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

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

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

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

1
Attie

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

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

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

AVR

avr i/o registers

STM32

stm32 i/o registers


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

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

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

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

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

Похожие вопросы