Browse Prior Art Database

Queue Driven Device Driver Algorithm

IP.com Disclosure Number: IPCOM000061781D
Original Publication Date: 1986-Sep-01
Included in the Prior Art Database: 2005-Mar-09
Document File: 3 page(s) / 43K

Publishing Venue

IBM

Related People

Greenberg, MS: AUTHOR [+2]

Abstract

A method is described to maximize throughput to hardware devices by queueing multiple commands to the device and by overlapping the start of processing of a command with the completion of processing of the previous command. To achieve the maximum performance, or throughput, from hardware devices, it is necessary for software to feed commands to the device as fast as they can be accepted. If significant software overhead occurs between commands, performance is degraded. For some devices, performance degrades dramatically if the delay between commands exceeds a specific time interval. For example, when a disk adapter is reading consecutive sectors from a track, it needs to be notified (via software command) of the location of the memory buffer into which each sector is to be read.

This text was extracted from a PDF file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 52% of the total text.

Page 1 of 3

Queue Driven Device Driver Algorithm

A method is described to maximize throughput to hardware devices by queueing multiple commands to the device and by overlapping the start of processing of a command with the completion of processing of the previous command. To achieve the maximum performance, or throughput, from hardware devices, it is necessary for software to feed commands to the device as fast as they can be accepted. If significant software overhead occurs between commands, performance is degraded. For some devices, performance degrades dramatically if the delay between commands exceeds a specific time interval. For example, when a disk adapter is reading consecutive sectors from a track, it needs to be notified (via software command) of the location of the memory buffer into which each sector is to be read. If the software does not supply the next command to the adapter within the time it takes the next sector to rotate into position under the read/write head, the adapter must wait for the sector to rotate all the way around again. The time wasted (one revolution) is much greater than the time it takes to transfer the data; hence, performance drops significantly. Another example is provided by communications adapters. As an adapter is receiving data from the communications line, it puts the data into a buffer. When the buffer becomes full, software must give the adapter a new buffer to use. The adapter can store up some data while waiting for the command telling it where the next buffer is, but it can't wait very long. If the software does not respond quickly enough, data will be lost and must be re-transmitted, which can waste a significant amount of time. The Virtual Resource Manager (VRM) maintains queues of commands for devices, so that as one command is completed, the next is ready to go. This technique has been used effectively in many systems. The time between commands is limited to the time it takes to remove a completed command from the queue, notify the sender of the command that it has been completed, and then pass the next command in the queue to the device driver. The present method goes one step further, overlapping the completion of one command with the start of processing of the next, thus further reducing the time it takes to get the next command out to the adapter. Assume there are two layers in the VRM I/O subsystem, a layer...