First post, by Swiego
As I understand it, DMA is possible with some cards such as sound cards, however no drive controller or host bus adapter supports it. Am I misunderstanding this? If not, what is the reason for this?
As I understand it, DMA is possible with some cards such as sound cards, however no drive controller or host bus adapter supports it. Am I misunderstanding this? If not, what is the reason for this?
There are two relevant types of DMA. Classical PC-XT style "ISA" DMA and "PCI" bus-mastering DMA.
ISA DMA is horribly inefficient. DMA clock is typically 4.77 MHz and has several limitations which make it unsuitable for hard-disks.
IBM-XT actually used DMA for its ST-506/MFM disk interface. However, in AT they switched to PIO for ATA which lead to much faster transfer speeds.
ATA single-word DMA, ATA multiword DMA and UDMA are all PCI Busmastering DMA types.
Also, the fact that you can free-up CPU by DMA wasn't that great advantage for contemporary software to balance disadvantages. In those days you first loaded programs to memory and then ran them. So you wanted a fast loading time more than low CPU usage during I/O. Freeing up CPU started to be important later when OS got multi-tasked or when people were trying to play first videos which really become a thing in PCI days.