разница между портами ввода / вывода и памятью ввода / вывода - PullRequest
8 голосов
/ 27 декабря 2011

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

1 Ответ

10 голосов
/ 27 декабря 2011

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

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

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

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

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

...