В чем разница между отображением памяти IO и IO сопоставления IO
Пожалуйста, объясните разницу между IO и IO
5 ответов
На x86 есть два разных адресных пространства, одно для памяти, другое для портов ввода / вывода.
Адресное пространство порта ограничено 65536 портами и доступно с помощью инструкций IN/OUT.
Например, к VGA-функциональности видеокарты можно получить доступ через некоторые порты ввода / вывода, но кадровый буфер отображен в памяти.
Другие архитектуры ЦП имеют только одно адресное пространство. В этих архитектурах все устройства отображаются в память.
Хм... если я не понял неправильно, вы говорите о двух совершенно разных вещах. Я дам вам два очень коротких объяснения, чтобы вы могли найти в Google то, что вам нужно сейчас.
Отображаемый в память ввод-вывод означает отображение памяти устройств ввода-вывода в основную карту памяти. То есть в памяти компьютера будут адреса, которые на самом деле не будут соответствовать вашей оперативной памяти, а будут внутренними регистрами и памятью периферийных устройств. Это архитектура машины, о которой говорил Пойнти.
Существует также сопоставленный ввод / вывод, который означает, что вы берете (скажем) файл, а ОС загружает его части в память для более быстрого доступа в дальнейшем. В Unix это можно сделать через mmap()
,
Я надеюсь, что это помогло.
Ввод / вывод, отображаемый в память, отображается в том же адресном пространстве, что и память программ и / или пользовательская память, и доступ к ним осуществляется таким же образом.
Порт ввода-вывода с отображением портов использует отдельное выделенное адресное пространство и доступ к нему осуществляется через выделенный набор инструкций микропроцессора.
Поскольку 16-разрядные процессоры будут постепенно устаревать и заменяться на 32-разрядные и 64-разрядные в общем использовании, резервирование диапазонов адресного пространства памяти для операций ввода-вывода представляет меньшую проблему, поскольку адресное пространство памяти процессора обычно значительно больше, чем требуется для всех устройств памяти и ввода-вывода в системе.
Поэтому все чаще стало практичным использовать преимущества сопоставленного с памятью ввода-вывода.
Недостатком этого метода является то, что вся адресная шина должна быть полностью декодирована для каждого устройства. Например, машине с 32-битной адресной шиной потребовались бы логические вентили для разрешения состояния всех 32 адресных линий, чтобы правильно декодировать конкретный адрес любого устройства. Это увеличивает стоимость добавления аппаратного обеспечения к машине.
Преимущество системы IO Mapped IO состоит в том, что для декодирования дискретного адреса требуется меньше логики и, следовательно, меньше затрат на добавление аппаратных устройств к машине. Однако могут потребоваться дополнительные инструкции.
Ссылка:- Проверить эту ссылку
У меня есть еще одно явное различие между ними. Устройство ввода-вывода с отображением в памяти является тем устройством ввода-вывода, которое реагирует, когда IO/M является низким. В то время как устройство ввода-вывода (или периферийное устройство) является тем, которое реагирует, когда IO/M является высоким.
Операции ввода-вывода с отображением в память отображаются в том же адресном пространстве, что и память программ и / или память пользователя, и к ним осуществляется доступ таким же образом.
I /O Mapped I /O использует отдельное выделенное адресное пространство и доступ к нему осуществляется через специальный набор инструкций микропроцессора.
Разница между этими двумя схемами происходит внутри микропроцессора / микроконтроллера. Корпорация Intel по большей части использовала схему отображения ввода / вывода для своих микропроцессоров, а Motorola - схему отображения памяти.
https://techdhaba.com/2018/06/16/memory-mapped-i-o-vs-i-o-mapped-i-o/