> напомню - что DMA controller - это был контроллер на материке подключенный
> к ISA шине. Который выполнял сам арбитраж шины - для передачи
> девайс<>память, девайс<>девайс.Напомню что многие PCI железки сейчас являют собой нефиговый программно аппаратный комплекс, с своим софтом, процами, памятью и адресными пространствами, а то и VM/paging/mmu, и чем там еще. И в этом смысле DMA может быть и с их стороны, в том смысле что оно не отвлекается на каждую операцию с шиной - а заряжает такой же хардварный автомат со своей стороны, и дальше тот интерфейс шины секвенсит все как надо для вон того сам, так что процы железки не отвлекаются на каждый дерг PCI. Это тоже DMA - с другой стороны и другим контроллером. А хост об этом вообще может ничего не знать, единственный критерий чтобы это все не было внезапностью.
> в реалиях PCI v2.0+ - централизованного контроллера не существует (с некоторым натягом
> IO-AT можно считать таковым) - поэтому каждой карте предлагается как-то реализовывать
> арбитраж самому через режим bus mastering.
PCI уже давно не 2.0 да и вообще Express обычно - и там все стало немного сложнее. Но многие понятия остались.
> Так что эта.. просьба показать DMA controller централизованный в районе PCI root
DMA контроллеру вообще не обязательно быть в конкретном месте. В типовой системе PCI девайсы висят как регионы памяти в системе, системный DMA может в эти регионы лазить не хуже чем в остальное. Где этот DMA технически находится и как это по факту реализовано в железе - а какая разница? Соврменных систем где нет DMA <-> PCI я не знаю, такие потоки никто в здравом уме без DMA ворочать не станет.
А вон то про "инверсный" вариант фокуса, когда железка делает на своей стороне оффлоад своим транзакциям, своим DMA контроллером.
> complex - который выполняет теже функции что и старый на ISA.
ISA на PCI вообще не особо похож, расскажите вон тому MIPS с MINI-PCI слотом про нее? А PCI - и DMA там таки есть. И на вон том арме с PCIe сразу из проца - аналогично. И если б оно DMA не умело это был бы ацкий эпикфейл по перфомансу. Так что система без DMA но с PCI - может и возможна теоретически в какой-то ультра минимальной реализации но практически я ни разу такое не встречал.
> И в PCI spec нету ничего с DMA, зато есть bus mastering.
А почему PCI spec должен рассказывать платформе как DMA имплементить? Там в общем случае вывешивают железку как регион памяти - ну а дальше DMA и платформа уже как-нибудь сами разбираются как это. Если вы хотите сказать что теоретически возможна имплементация PCI без DMA контроллера в систему - ну, может быть. Практически я однако такого позора ни разу не видел. Даже на очень мелких платформах. Если железка достаточно большая чтобы PCI(-e) отрастить там гарантированно есть и какие-то DMA контроллеры и они ессно могут с PCI работать, иначе толку с такого PCI...
> То что через этот режим можно обращаться напрямую в память
> - ничего не меняет.
А ничего что это тоже получается DMA по смыслу, хоть и иными средствами? DMA означает всего лишь direct memory access. Как именно и чем этот access реализуется - да возможно дочерта вариантов на самом деле. А DMA лишь собирательное название группы технологий где доступ к памяти случется без участия проца.