Direct Memory Access (DMA)

Why Trust Techopedia

What is Direct Memory Access (DMA)?

Direct memory access (DMA) is a standard hardware feature that allows a peripheral device to interact directly with its host’s main memory without requiring the central processing unit (CPU) to manage every step of the data transfer process.

Advertisements

Direct memory access uses a dedicated hardware component called a DMA controller (DMAC) to manage data transfer tasks. This allows the host’s CPU to perform other tasks while data is being transferred in the background.

What is Direct Memory Access (DMA)

Key Takeaways

  • Direct memory access allows a peripheral device to interact directly with a host computer’s RAM.
  • DMA uses a dedicated hardware component called a DMA controller to manage the data transfer process.
  • Before DMA became a standard feature, the host’s CPU had to handle every step of a data transfer.
  • The overhead created by CPU interrupts and context switching during data transfers made it difficult for the CPU to perform other tasks.
  • DMA was developed so the host’s central processing unit could handle other tasks while data was being transferred in the background.

How Direct Memory Access Works

When a peripheral device needs to transfer data to or from its host computer‘s memory, its device driver requests a DMA channel from the host’s operating system (OS).

Once a DMA channel is allocated, the OS and device driver set up the transfer by providing the DMA controller with basic information like the memory location, the size of the data, and whether the transfer is to or from memory.

At this point, the DMA controller takes control of the transfer process, and the CPU is free to perform other tasks.

Once the data transfer is complete, the DMA controller triggers an interrupt to notify the CPU and its OS that the transfer is complete. The OS then releases the DMA channel and makes it available for future use by other peripherals.

How Direct Access Memory Works

DMA Types

Over the years, different types of DMA have evolved to optimize data transfer for various situations and hardware capabilities.

Single transfer DMA
The DMAC moves one unit of data and then returns control to the CPU.
Block transfer DMA
The DMA controller moves one block of data and then returns control to the CPU.
Scatter-gather DMA
The DMAC transfers data between non-contiguous memory locations in a single operation.

Direct Memory Access Modes

DMA modes are variations or settings within a DMA type that fine-tune how the transfer is performed.

Burst mode DMA
The DMA controller transfers a block of data in a single, uninterrupted burst.
Cycle stealing mode DMA
The DMAC takes control of the system bus for short intervals between bus cycles and transfers one byte or word at a time.
Transparent mode DMA
The DMA controller only transfers data when the CPU is not using the bus.
Demand mode DMA
The DMA controller starts, stops, and resumes transfers based on the peripheral’s status.
Fly-by DMA mode
Once the DMAC sets up a transfer, the peripheral device reads/writes data to/from memory directly without any further assistance from the DMAC or the CPU.

DMA Principles

Arguably, there are two general principles that have guided the development and use of direct memory access.

  • Minimize CPU involvement by allowing the DMA controller to temporarily become the bus master.
  • Include mechanisms that ensure DMA transfers use memory and system resources efficiently.

While most operating systems (OS) enable DMA by default, it’s not a universal principle in the design of DMA itself. Generally speaking, however, most people who use computers have reaped the benefits of DMA without even knowing it.

DMA vs. RDMA

DMA stands for direct memory access and RDMA stands for remote direct memory access. The two terms sound similar because they both involve direct memory access, but DMA is a standard feature, and RDMA is still evolving.

Essentially, RDMA has extended the concept of DMA to data transfers between different computers over a local area network (LAN) or a wide area network (WAN) that may (or may not) include third-party data centers in the cloud.

DMA uses a dedicated controller to offload continuous interactions with the host CPU. RDMA uses special Network Interface Cards (NICs) to bypass the CPUs of both systems involved and enable fast, low-latency data transfers.

Feature DMA RDMA
Scope Minimize CPU involvement when transferring data between a peripheral device and its host. Minimize CPU involvement when transferring data between two different computers over a network.
Data transfer Between a peripheral device and its host’s memory. Between memories of different computers.
CPU involvement The host’s CPU is freed up to complete other tasks during data transmission. The CPUs for both sending and receiving computers are freed up to complete other tasks during data transmission.
OS Involvement The OS initiates DMA transfers, but the actual data transfer is handled by the DMAC. The OS initiates DMA transfers, but the actual data transfer is handled by special NICs.
Network Requirement Does not require network connectivity. Requires network connectivity supported by a high-speed network infrastructure.
Complexity Relatively simple to implement with commodity hardware. More complex; requires special RDMA-capable NICs and switches.
Maturity Has become a standard feature for personal computing. Used for high-performance computing (HPC) and cloud data centers, but protocols and hardware are still evolving.

DMA Pros and Cons

DMA has its advantages and disadvantages, but in general, the benefits of DMA outweigh its drawbacks.

Pros
  • Facilitates faster data transfers by eliminating the CPU’s involvement after initialization
  • Allows the CPU to focus on other tasks while data is being transferred in the background
  • Permits large data transfers without slowing operations down
Cons
  • DMA transfers bypass the CPU’s cache and can lead to inconsistencies between the data in the cache and the data in the main memory
  • DMA can potentially be exploited by threat actors to gain unauthorized access to system memory. VPN can add an additional layer of security and make it more difficult for an attacker to exploit DMA vulnerabilities remotely

The Bottom Line

Direct memory access definitions like this one cannot overstate how important it is to minimize CPU interrupts by offloading control for data transfers to the DMAC. Each interrupt introduces overhead and can degrade system performance by requiring the CPU to pause its current task, save its state, handle the interrupt, and then resume its previous task.

Eliminating the need for continuous CPU interactions by allowing a DMAC to transfer data directly not only improves transfer speeds, it also improves system performance by allowing the CPU to complete other tasks.

FAQs

What is direct memory access in simple terms?

How does a DMA work?

What is a DMA card used for?

What are the modes of transfer in DMA?

When should I use DMA?

What is the difference between DMA and DVMA?

Advertisements

Related Terms

Margaret Rouse
Technology Expert
Margaret Rouse
Technology Expert

Margaret is an award-winning technical writer and teacher known for her ability to explain complex technical subjects to a non-technical business audience. Over the past twenty years, her IT definitions have been published by Que in an encyclopedia of technology terms and cited in articles by the New York Times, Time Magazine, USA Today, ZDNet, PC Magazine, and Discovery Magazine. She joined Techopedia in 2011. Margaret's idea of a fun day is helping IT and business professionals learn to speak each other’s highly specialized languages.