Прямой доступ к памяти и система памяти

Когда DMA встроен в систему ввода-вывода, отношения между системой памяти и процессором изменяются. Без DMA все обращения к системе памяти исходят из. процессора и поэтому обрабатываются путем преобразования адреса и обращения к кэш-памяти, как будто процессор сгенерировал ссылки. При наличии DMA появляется еще один путь к системе памяти, который не проходит через механизм преобразования адреса или через иерархию кэш-памяти. Это отличие создает ряд проблем как в системах с виртуальной памятью, так и в системах с устройством кэш-памяти. Эти проблемы обычно решаются с помощью сочетания аппаратных технологий и программной поддержки.
Сложности, создаваемые DMA в системе виртуальной памяти, возникают из-за того, что страницы имеют как физические, так и виртуальные адреса. DMA также создает проблемы для систем, использующих устройства кэш-памяти, потому что могут быть две копии элемента данных: один в кэш-памяти, а другой в оперативной памяти. Поскольку DMA-процессор выдает запросы к памяти напрямую, а не через кэш-память основного процессора, значения в том месте памяти, которое видит блок DMA и процессор, могут различаться. Рассмотрим чтение с диска, результаты которого блок DMA помещает непосредственно в память. Если некоторые из мест, в которые блок DMA ведет запись, находятся в кэш-памяти, то процессор при чтении получит старое значение. Точно так же, если кэш-память использует отложенную запись, блок DMA может читать значение непосредственно из памяти, в то время как более свежее значение находится в кэш-памяти, и это значение еще не возвращено в оперативную память. Это называется проблемой поддержки целостности данных в кэш-памяти.





Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: