на главную
DMA
Direct Memory Access - "прямой доступ к памяти". Он осуществляется через DMA-контроллер - специальный чип, получающий первоначальную команду на перенос данных от центрального процессора. Каналы DMA предназначены для передачи массивов информации по 8- или 16-битным шинам одновременно. В отличие от портов ввода/вывода каналы DMA непосредственно не сообщаются с центральным процессором, они работают напрямую с системной памятью. Всего каналов DMA - 8 (от 0 до 7). Первоначально DMA-контроллер задумывался, прежде всего, для разгрузки CPU от тривиальных задач, например, контроля флоппи- дисководов или жестких дисков. Начиная с компьютеров PC/AT передача данных от жестких дисков и к ним стала осуществляться уже не через каналы DMA, а через программируемый ввод/вывод. Начиная с Intel 80386, процессоры располагают собственным устройством управления памятью (MMU - Memory Management Unit), которое пересчитывает логические адреса в физические. DMA-контроллеры "ничего не знают" о разрядности адресов. Поэтому, чтобы иметь возможность применять DMA вместе с управлением виртуальной памятью, нужно зарезервировать в качестве DMA-буфера какую-то область памяти в первом мегабайте адресного пространства, где логические и физические адреса совпадают. В эту область DMA-контроллер записывает данные, прежде чем они будут скопированы процессором из этого буфера. Эта технология, называемая двойной буферизацией, неэффективна. Основными "потребителями" каналов DMA являются звуковые карты, CD-ROM-дисководы более ранних выпусков. В обоих случаях скорость передачи не превышает 500 Кб/с. Максимально возможная скорость передачи данных по DMA-каналам (около 2 Мб/с) значительно перекрывает потребности 8-битной звуковой карты. Если же необходимо осуществить быстрый обмен информацией, то в этом случае DMA не используется - процессор берет на себя управление процессом переноса информации, перекрывая все допустимые способности DMA-каналов.