2011-12-27 3 views
8

Я просто хочу знать разницу между портами ввода-вывода и памятью ввода-вывода, потому что я довольно смущен. И если кто-то объяснит это, это будет здорово. И при использовании я имею в виду, когда порты ввода/вывода предпочтительнее и когда предпочтительна память ввода/вывода.разница между портами ввода-вывода и памятью ввода-вывода

ответ

10

Там нет концептуального различия между областями памяти и вводом/вывода областями: оба из них получают доступ утверждать электрические сигналы на шину адреса и шине управления

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

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

Даже если периферийная шина имеет отдельное адресное пространство для портов ввода/вывода, не все устройства отображают свои регистры на порты ввода-вывода. Хотя использование портов ввода/вывода является обычным явлением для периферийных плат ISA, большинство устройств PCI переписывают регистры в область адресов памяти. Такой подход к памяти ввода/вывода обычно является предпочтительным, поскольку он не требует использования специальных инструкций процессора; ЦП ядра обеспечивает более эффективную память, а у компилятора гораздо больше свободы при распределении регистров и выборе режима адресации при доступе к памяти.

Подробнее на http://www.makelinux.net/ldd3/chp-9-sect-1

Смежные вопросы