Цитата(GrAlexI @ Dec 28 2011, 18:14)

Огромное спасибо за разьяснение!!!!!
А не подскажишь при обращении к памяти ввода-вывода по типу операции C/BE = "0110" или "0111" (чтение, запись памяти), как программно обратится по этим операции. Точнее чтобы обратиться к блоку памяти имеются команды процессора или это реализуется на DMA? Я знаю для обращения к порту имеются команды inb, inw, outl и т.д., а как обратися к памяти?
Я не программер )
Но с точки зрения хоста, обращение в Cfg делается так (в интелах и большинстве мипсов, очень распостраненный способ): есть регистр адреса - задаем адрес, функцию и команду. И есть регистр данных - туда кладем данные которые надо записать, и оттуда считываем если надо прочитать. Вероятно это и делают команды которые вы описали.
А вот пространство Memory просто мэппится в адресное пр-во процессора, возможно страничным способом, возможно напрямую. Опять же для настройки мэппинга у хоста есть регистр базового адреса ... впрочем тут лучше почитать литературу, как окна настраиваются, могу ошибиться; обычно этим занимается биос. Но резюмируя, в рабочей настроенной системе весь PCI Memory вы должны видеть в виде адресов процессора, т.е. прямой адресацией. И доступ тут может быть двумя способами: процессорный ввод/вывод (самый медленный способ), и DMA (т.е. сторонний мастер) который может выжать из PCI по максимуму. Про процессорный ввод/вывод писал выше - прямая адресация и т.д., а вот как DMA настраивается, это надо читать доку на контроллер DMA, которых может быть в системе несколько. В принципе, теоретически, типовой DMA контроллер должен программироваться - базовым адресом откуда_читать, базовым адресом в памяти куда_класть, и размером копируемой области. Кроме того, у контроллера DMA есть пара статусов о работе/ошибках и т.д., и обычно настраивается прерывание об окончании/сбое DMA.
Но, опять же, я железячник а не программер, и с интелами давно не работаю. Как это далется в вашей ОС и SDK, и тем более сточки зрения названий функций, я не знаю ) Поспрашивайте у программеров, этот вопрос уже лет 15 должен быть разжеван )