User-Level DMA without Operating System Kernel Modification

  • Authors:
  • Evangelos P. Markatos;Manolis G. H. Katevenis

  • Affiliations:
  • -;-

  • Venue:
  • HPCA '97 Proceedings of the 3rd IEEE Symposium on High-Performance Computer Architecture
  • Year:
  • 1997

Quantified Score

Hi-index 0.01

Visualization

Abstract

Direct Memory Access (DMA) is frequently used to transfer data between the main memory of a host computer and the interconnection network, in order to free the host processor from the burden of the transfer. Starting DMA operations is traditionally being done by the operating system kernel, mainly to prevent one application from tampering with another applications' data. Recent architecture trends suggest that interconnection networks gets faster, while operating systems get slower (compared to processor speeds). These trends imply that the initiation of a DMA operation becomes slower (due to operating system involvement), while the DMA data transfer itself becomes faster with time. Today, the operating system overhead associated with starting a DMA operation is usually larger than the data transfer itself, esp. for small transfers. This situation is only going to get worse in the future. In this paper, we propose several algorithms that allow user-level applications to start DMA operating without the involvement of the operating system. Our algorithms allow user applications to have direct (but controlled) access to the DMA engine registers. Our algorithms achieve low overhead user-level DMA, without compromising protection, and without requiring changes to the underlying operating system kernel. Using our proposed algorithms, a DMA operation can be initiated in 2-5 assembly instructions - a 3 orders of magnitude improvement over the current state-of-the-art: operating system-based initiation of DMA requires thousands of assembly instructions.