В чем разница между отображением памяти IO и IO отображения IO - PullRequest
11 голосов
/ 08 октября 2010

Пожалуйста, объясните разницу между IO, отображенным в память, и IO, отображенным в IO

Ответы [ 5 ]

8 голосов
/ 08 октября 2010

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

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

Там также отображается сопоставленный ввод-вывод, который означает, что вы берете (скажем) файл, и часть операционной системы загружает его в память для более быстрого доступа в дальнейшем.В Unix это можно сделать через mmap().

Надеюсь, это помогло.

6 голосов
/ 22 марта 2014

Введенный в память ввод-вывод отображается в том же адресном пространстве, что и память программ и / или пользовательская память, и доступ к нему осуществляется аналогично.

Ввод-вывод с отображением портов использует отдельное выделенное адресное пространство и доступен через выделенный набор инструкций микропроцессора.

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

Таким образом, стало все более практичным использовать преимущества ввода-вывода с отображением в памяти.

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

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

Ссылка: - Проверить эту ссылку

6 голосов
/ 09 октября 2010

На x86 есть два разных адресных пространства, одно для памяти, а другое для портов ввода / вывода.

Адресное пространство порта ограничено 65536 портами и доступно с помощью инструкций IN / OUT.

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

Другие архитектуры ЦП имеют только одно адресное пространство. В этих архитектурах все устройства отображаются в память.

1 голос
/ 17 апреля 2011

У меня есть еще одно явное различие между ними.Устройство ввода-вывода с отображением в памяти является тем устройством ввода-вывода, которое реагирует, когда IO / M является низким.В то время как устройство ввода-вывода (или периферийное устройство) является устройством ввода-вывода, которое реагирует при высоком значении ввода-вывода.

0 голосов
/ 16 июня 2018

Введенный в память ввод-вывод отображается в том же адресном пространстве, что и память программ и / или пользовательская память, и доступ к нему осуществляется аналогично.

I / O Mapped I / O использует отдельное выделенное адресное пространство и доступ к нему осуществляется через специальный набор инструкций микропроцессора.

Разница между этими двумя схемами происходит в микропроцессоре / микроконтроллере. Корпорация Intel по большей части использовала схему сопоставления ввода / вывода для своих микропроцессоров, а Motorola использовала схему сопоставления памяти.

https://techdhaba.com/2018/06/16/memory-mapped-i-o-vs-i-o-mapped-i-o/

...