Browse Prior Art Database

Virtual Direct Memory Access

IP.com Disclosure Number: IPCOM000117478D
Original Publication Date: 1996-Mar-01
Included in the Prior Art Database: 2005-Mar-31
Document File: 2 page(s) / 68K

Publishing Venue

IBM

Related People

Rawson III, FL: AUTHOR

Abstract

Disclosed is a method for effectively removing the code found in many device drivers to support hardware devices using the Programmed Input/Output (PIO) technique to do I/O transfers. With this method, a standardized service is defined in the operating system microkernel to act as a virtual Direct Memory Access (DMA) engine. This service uses the processor to do data transfers but hides that fact from the device driver and other system code, so that all I/O transfers appear to be DMA transfers.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 52% of the total text.

Virtual Direct Memory Access

      Disclosed is a method for effectively removing the code
found in many device drivers to support hardware devices using the
Programmed Input/Output (PIO) technique to do I/O transfers.  With
this method, a standardized service is defined in the operating
system microkernel to act as a virtual Direct Memory Access (DMA)
engine.  This service uses the processor to do data transfers but
hides that fact from the device driver and other system code, so that
all I/O transfers appear to be DMA transfers.

      Conventionally, there are two methods to transfer data between
main memory and devices.  The first of these methods, direct memory
access, uses either a special DMA controller chip or hardware logic
in the device adapter to move data between memory and the device.
The other of these methods, programmed I/O, uses the processor to
copy data between memory and the device.  This PIO method leads to
pervasive programming constructs which are particularly undesirable
on systems containing modern RISC processors.  However, many low-cost
I/O circuit cards use PIO transfer to move data between memory and a
device.  Such data movement requires virtual addressability, which
can be complex and expensive using a modern RISC processor.
Furthermore, the device drivers for PIO devices are more complex and
often less optimized than those for DMA devices, since they typically
include a loop that transfers data between memory and the device.

      The presently-disclosed method adds a virtual DMA engine to the
operating system kernel.  The virtual DMA engine, which converts DMA
transfers to PIO transfers for PIO devices, is implemented as through
the platform had an additi...