DMA Controllers
Explanation: The system has detected an error associated with the direct memory access (DMA) controller(s) on the system motherboard.
Diagnosis: In almost all cases, this a motherboard problem, but it might can also be caused by a bad expansion or add-in card as well. If the DMA controller number is supplied as part of the error message, that may help you narrow down the DMA channel where the problem was detected, if applicable. DMA controller #1 handles DMA channels 0 to 3, and controller #2 handles channels 5 to 7 (channel 4 is the cascade between the two controllers).
Recommendation:
- First, troubleshoot as a generic expansion or add-in card issue.
- Second, troubleshoot the motherboard itself.
More Information on DMA Channels
Direct Memory Access (DMA) Channels
Direct memory access (DMA) channels are basically what the name implies, the system pathway used by devices to transfer information directly to and from memory. DMA channel problems are not nearly as frequent as IRQ issues, however they do occur. This is probably due to the fact that there are fewer of them and they are used by far fewer devices. Hence they usually cause fewer problems with system setup. Conflicts on DMA channels can often cause very strange system problems and at times can be very difficult to diagnose. DMA channels are used most commonly by floppy and tape drives and sound cards.
In early computers, the processor did almost everything, running programs, transferring data to and from peripherals etc. Unfortunately, having the processor perform these transfers is very inefficient, as it is then unable to do much else.
The development of DMA channeling enabled the devices to leave the processor out of the loop, thereby allowing it to do other work and the peripherals to transfer data themselves, which obviously leads to increased performance. Special channels were created, along with their controlling circuitry, that allowed the transfer of information without the processor controlling every aspect of the transfer. This circuitry is normally part of the system chipset on the motherboard. Note that DMA channels are only on the ISA bus along with their derivatives, EISA and VLB. PCI devices do not use standard DMA channels at all.
Third-Party and First-Party DMA (Bus Mastering)
Standard DMA is sometimes referred to as “third party” DMA, and as such the system DMA controller is actually doing the transfer (the first two parties are the sender and receiver of the transfer). There is also a type of DMA called “first party” DMA. In this situation, the peripheral doing the transfer actually takes control of the system bus to perform the transfer. This is also called bus mastering.
Bus mastering provides much better performance than regular DMA because modern devices have much smarter and faster DMA circuitry than that which existed in the old standard ISA DMA controller. Newer DMA modes are now available, such as Ultra DMA (mode 3 or DMA-33, mode 4 or DMA-66 etc) that provide for very high transfer rates.
Limitations of Standard DMA
While DMA provided a significant improvement over processor-controlled data transfers, it was eventually recognized as a limiting factor in overall system performance. DMA on the ISA bus has remained at the same performance level for more than 10 years. In an old 10 MB XT hard disk, DMA was a top performer, but in a modern 80 GB hard disk, that’s trying to transfer multiple megabytes per second, DMA is insufficient.
On newer machines, disks are controlled using either programmed I/O (PIO) or first-party DMA (bus mastering) on the PCI bus, and not the standard ISA DMA that is used for devices like sound cards. This type of DMA does not rely on the slow ISA DMA controllers, and allows these high-performance devices the bandwidth they need. In fact, many of the devices that formerly used DMA on the ISA bus use bus mastering over the PCI bus for faster performance. This includes even some of the newer high-end SCSI cards, as well as network and video cards.
DMA Controllers
Standard DMA transfers are managed by the DMA controller, built into the systems motherboard chipset on most modern PCs. On early PC and XT, they had one of these controllers which only supported 4 DMA channels, 0 to 3.
Starting with the IBM AT, a second DMA controller was added, and much in the same way that the second interrupt controller was cascaded with the first, the first DMA controller is cascaded to the second. The difference is that with IRQs, the second controller is cascaded to the first, but with DMA the first is cascaded to the second. As a result, there are 8 DMA channels, 0 to 7, but DMA 4 is not usable. There is no rerouting permitted as with IRQ2 and IRQ9 here, because all of the original DMA channels (0 to 3) are still usable directly.
DMA Channels and the System Bus
As noted above, all of the DMA channels except channel 4 are accessible to devices on the ISA system bus. Channel 4 is used to cascade the two DMA controllers together. PCI devices do not use standard system DMA channels.
As was the case with IRQs, the second DMA controller was added when the ISA bus was expanded to 16 bits with the creation of the AT. The lines to access these extra DMA channels were placed on the second part of the AT slot that is used by 16-bit cards. This means that only 16-bit cards can access DMA channels 5, 6 or 7. Unfortunately, many devices even today are still only 8-bit cards. You can tell by looking at them and noting that they only use the first part of the two-part ISA bus connector on the motherboard.
DMA Request (DRQ) and DMA Acknowledgment (DACK)
Each DMA channel is comprised of two signals: the DMA request signal (DRQ) and the DMA acknowledgment signal (DACK). Some peripheral cards have separate jumpers for these instead of a single DMA channel jumper. If this is the case, make sure that the DRQ and DACK are set to the same number, otherwise the device won’t work!
DMA, Multiple Devices and Conflicts
Like interrupts, DMA channels are single-device resources. If two devices try to use the same DMA channel at the same time, information will become combined between the two devices, and any number of problems can result.
It is possible to share a DMA channel among more than one device, but only under limited conditions. In essence, if you have two devices that you seldom use, and you never use them simultaneously, you may be able to have them share a channel. However, this is not the preferred method since it is much more prone to problems than just giving each device its own resource.
One problem area with DMA channels is that most devices want to use DMA channels with numbers 0 to 3 (the first DMA controller). DMA channels 5 to 7 are relatively unused because they require 16-bit cards. Considering that DMA channel 0 is never available, and DMA 2 is used for the floppy disk controller, that doesn’t leave you with many options. As an example, let’s say that we were going to setup an ECP parallel port, a tape accelerator, a voice modem and a sound card on the same system. You would run out of DMA channels between 1 and 3 very quickly even though you would still have DMA channels 6 and 7 open. Why? Simple, all of the devices you would I want to use would be either 8-bit cards or wouldn’t support the higher numbers for software reasons.
Speaking of the ECP parallel port, this is another new area of concern regarding DMA resource conflicts. Many people don’t realize that this high-speed parallel port option requires the use of a DMA channel. Your BIOS setup will usually have a setting to select the DMA channel, right around where you enable ECP. This is a good hint, but many people don’t notice it. The usual default for this port is DMA 3, which is also used by many other types of devices.
Summary of DMA Channels and their typical uses
The following table provides a summary of information about the 8 DMA channel numbers in a typical computer. You may find this information useful when you try and determine how to configure your system, or you are attempting to resolve DMA conflicts.
DMA |
Bus Line? |
Typical Default Use |
Other Common Uses |
0 |
no |
Memory Refresh |
None |
1 |
8/16-bit |
Sound card (low DMA) |
SCSI host adapters, ECP parallel ports, tape accelerator cards, network cards, voice modems |
2 |
8/16-bit |
Floppy disk controller |
Tape accelerator cards |
3 |
8/16-bit |
None |
ECP parallel ports, SCSI host adapters, tape accelerator cards, sound card (low DMA), network cards, voice modems, hard disk controller on old PC/XT |
4 |
no |
None; Cascade for DMA 0-3 |
None |
5 |
16-bit only |
Sound card (high DMA) |
SCSI host adapters, network cards |
6 |
16-bit only |
None |
Sound cards (high DMA), network cards |
7 |
16-bit only |
None |
Sound cards (high DMA), network cards |
Notice: Windows® 95, Windows® 98, Windows® NT, Windows® 2000 and Microsoft® Office are registered trademarks or trademarks of the Microsoft Corporation.
All other trademarks are the property of their respective owners.