Разница между сопоставленным портом и сопоставленным доступом к памяти?

может ли кто-нибудь объяснить, в чем разница между отображением портов и отображением памяти, и что делает оба? Почему существует сопоставление портов, как оно отличается по структуре от карт памяти, и есть ли причина, по которой многие архитектуры используют оба? Кроме того, что такое "порт" в этом смысле, потому что порт может означать разные вещи в разных контекстах?

пример: перенаправление портов, порт в качестве конечной точки связи,"сопоставление портов".

скажем, я пишу в порт 400h (фиктивный; как раз например) (как в x86-64, etc.).

Что или куда я пишу, если это не в памяти? Как" порт " отображается, и что это в этом смысле?

25
задан Varaquilex
08.04.2023 3:38 Количество просмотров материала 2749
Распечатать страницу

2 ответа

памяти ввода/вывода и порта ввода-вывода, отображенных являются двумя взаимодополняющими методами ввода/вывода.

Памяти Ввода/Вывода

в системах с отображением памяти устройство ввода-вывода доступно, как часть памяти. Load и Store команды выполняются для чтения и записи на устройства ввода-вывода, так же, как они используются для памяти (port-mapped имеет специальные команды для ввода-вывода). Это означает, что устройства ввода-вывода используют ту же адресную шину, что и память, что означает, что ЦП может ссылаться на память или устройство ввода/вывода на основе значения адреса. Такой подход требует изоляции в адресном пространстве, то есть адреса, зарезервированные для ввода-вывода, не должны быть доступны физической памяти.

ниже изображение простая, базовая компьютерная система. В современных системах дело обстоит гораздо сложнее.

enter image description here


Port-Mapped I / O

по данным Википедия

порт-сопоставленный ввод-вывод часто использует специальный класс инструкций ЦП специально для выполнения ввода-вывода находится на Intel микропроцессоры, с инструкций in и out. Следующие инструкции может читать и писать от одного до четырех байт (занять сист, outw, д) ввода/вывода устройство. Устройства ввода/вывода имеют отдельное адресное пространство общей памяти, либо выполняется с помощью дополнительного вывода ввода-вывода на физическом процессоре интерфейс, или весь предназначенный автобус к I / O. потому что адрес пространство для ввода / вывода изолировано от пространства для основной памяти, иногда называется изолированным вводом-выводом


что касается преимуществ и недостатков: поскольку периферийные устройства медленнее, чем память, совместное использование данных и адресных шин может замедлить доступ к памяти. С другой стороны, благодаря простоте ввода-вывода, обеспечиваемой системами с отображением памяти, ЦП требует меньше внутренней логики, и это помогает быстрее, дешевле и потребляет меньше энергии Процессоры должны быть реализованы. Логика аналогична RISC-системам: уменьшите сложность, получите более специализированную и надежную систему, которая, например, очень удобна для встраиваемых систем.

наоборот (опять из Wiki):

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

я настоятельно рекомендую вам прочитать эту статью wiki для получения дополнительной информации.


ответить на один из ваших вопросов:

что или куда я пишу, если это не в памяти?

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

enter image description here

20
отвечен Varaquilex 2023-04-09 11:26

в памяти отображается ввода / вывода (просто MMIO) , устройства доступны через инструкции, которые на самом деле предназначены для доступа к памяти. Каждое устройство получает определенный адрес(адреса) памяти. Однако, когда вы пытаетесь прочитать или записать в эту часть памяти , определенное устройство (вероятно, Северный мост) просто передает его связанному устройству вместо этого. Даже если компьютеру не хватает памяти для такого адреса (так как адреса MMIO обычно очень высоки), это не имеет значения как физическая память (то есть вы видите, когда вы смотрите на материнскую плату, тот, который известен как RAM), даже не связан. Если у вас достаточно оперативной памяти для адреса, он либо сопоставлен более высокому не-I / O , либо просто потерял смысл, в который вы не можете читать или писать.

Port-Mapped I/O (просто PMIO) очень отличается. У вас есть различные инструкции, используемые для чтения и записи в порты. Существует адресное пространство порта так же, как адресное пространство памяти, где адреса являются или адресами ввода-вывода, которые фактически связываются с устройства или просто недействительны. PMIO можно существенно думать как MMIO с отдельно адресным пространством памяти как раз для I/O.

1
отвечен Ahmet Zahit Can 2023-04-09 13:43

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

computer-architecture
cpu
io
memory
port
Вверх