1. Technical Field
The present invention relates to input/output (I/O) adaptor optimization. More specifically, it relates to a method and system for allowing dynamic allocation of Direct Memory Access (DMA) buffers in DRAM banks of I/O adaptors.
2. Background Information
An I/O adaptor denotes a functional assembly that is adapted to provide an interface between a CPU and an input/output device or aggregate of devices adapted to compute, process, transmit, receive, retrieve, store, display, detect, record, reproduce, or utilize any form of information, intelligence or data. It acts as a translator between the computer and various input/output devices. I/O adaptors manage the communication between such devices and the computer so that the CPU is free to perform other tasks. I/O adaptors of one type or another can be found for diskette drives, hard drives, CD-ROM drives, Redundant Array of Independent Disks (RAID), high performance communications (e.g., Ethernet) and many other components.
Modern computer systems and networks require reliable and effective means for the processing, transmission, reception and storage of data. Customer requirements are usually highly application-dependent. For example, RAID systems vary in their interconnection architectures, physical packaging and dimensions, redundancy methods, fail-safe mechanisms, and the like. And the disk drives available for use within RAID systems also vary in their physical specifications, storage capacities, performance capabilities, and electrical interfaces. Therefore, a great deal of flexibility is required of I/O adaptors. I/O adaptors must also have good fault tolerance. A defective component of the I/O adaptor thus should have no or only minimum impact on the whole adaptor.
DMA is the hardware mechanism that allows peripheral components to transfer their I/O data directly to and from main memory without the need to involve the system processor. Use of this mechanism can greatly increase throughput to and from a device, because a great deal of computational overhead is eliminated. Data transfer can be triggered in two ways: either the software asks for data or the hardware asynchronously pushes data to the system. In either case, the driver method allocates a DMA buffer so that the data can be effectively transferred between system memory and I/O devices. A DMA mapping is a combination of allocating a DMA buffer and generating an address for that buffer that is accessible by the device.