I've heard the term 'DMA' being used a lot in reference to older consoles. My very basic understanding is that it's a way for the console to access memory directly. But directly as apposed to what? isn't RAM always accessed directly?

  • 1
    This is off-topic because it’s not specifically about retro-computing, but briefly put, DMA (direct memory access) allows peripherals to access memory directly. See Wikipedia for details. – Stephen Kitt Oct 24 at 13:46
  • 1
    @JackKasbrack DMA is the BASE for any modern system. As stephen says, there is nothing specific retro about - at least not more as with the terms RAM, CPU or Keyboard. – Raffzahn Oct 24 at 13:51
  • 4
    I guess the term was thrown around much more in retro terms because back then its implementation was worth shouting about — e.g. the Atari ST using DMA for its floppy disk is a big step forwards from most of the previous home computers which required the CPU to go into a busy poll loop, to the exclusion of all other work. Nowadays it's unimaginable that media access would block all OS activity. – Tommy Oct 24 at 14:45
  • 1
    @Smock nope, not a chance – Jack Kasbrack Oct 24 at 14:54
  • 3
    After some thought, I've decided I feel this question is on-topic for RCSE because you need to know the answer to know that DMA is not just a retrocomputing thing. I've made a meta post for detailed discussion of this, and voted to re-open. – Curt J. Sampson Oct 25 at 6:54

"The console" (or other computer) is made up of various parts, including the processor, the memory, and peripherals such as video display controllers, I/O chips to read from a keyboard or joystick, disk controllers, and so on.

When using "programmed I/O," the CPU reads data from or writes data to a peripheral and, if the data need to be stored in memory, the CPU does that as well. So the CPU might read a byte from the disk controller, store that byte into a buffer in memory, and repeat that to read an entire sector from disk.

DMA allows the CPU to be paused and/or disconnected from the memory bus so that peripherals can directly read data from or write data to the memory without the involvement of the CPU. Thus, instead of the example given above, a disk controller could write its bytes directly to memory while the CPU waits, which is faster because rather than "read byte then write byte" by the CPU there's just "write byte" by the peripheral.

  • Nice and simple +1 but I just need to add ... while copying by CPU there must be also some instructions used to copy so the CPU is accessing also program memory to read the instructions while copying lowering the speed much much more ... here nice example of the difference: Breakeven number of bytes for programmable DMA – Spektre Oct 27 at 8:07

(Too long for a comment)

DMA is not in any way console or retro computing related. It is actual technology and today used more than ever. Each of your disk reads and writes, each transfer to your graphics or network card will usually involve DMA.

DMA describes the access of components, other than the CPU, on (a CPU's) memory. In general it's the ability to run a multi master bus system. Further information can be found at the corresponding Wiki page and next to endless other resources on the web.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.