Method to allow hardware configurable data structures

Electrical computers and digital data processing systems: input/ – Input/output data processing – Data transfer specifying

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C710S022000, C710S023000, C710S033000, C710S052000, C710S104000, C709S241000, C709S241000

Reexamination Certificate

active

06292855

ABSTRACT:

BACKGROUND OF THE INVENTION
1. Technical Field
The present invention relates generally to interaction between data processing system operating systems and in particular to input/output data transactions between an operating system and storage hardware within a data processing system. Still more particularly, the present invention relates to software configuration of hardware to conform to different operating system data structures for input/output transactions.
2. Description of the Related Art
Every operating system employs a different data structure to represent an input/output (I/O) request to an independent, standard architecture I/O subsystem such as Small Computer Serial Interface (SCSI), Peripheral Component Interconnect (PCI), fiber channel and the like. However, each data structure typically contains common data for a given I/O class, varying only in organization. For example, all SCSI I/O requests include a SCSI Command Descriptor Block (CDB), a target identifier (ID) and Logical Unit Number (LUN), a scatter/gather list for data transfer, etc.
For example, the SCSI data structures employed by the Windows NT™ operating system available from Microsoft Corporation of Redmond Washington includes an I/O request (“SCSI_REQUEST_BLOCK”) data structure defined as follows:
typedef struct_SCSI_REQUEST_BLOCK {
/* Offset */
USHORT Length;
/* 0x00 */
UCHAR Function;
/* 0x02 */
UCHAR SrbStatus;
/* 0x03 */
UCHAR ScsiStatus;
/* 0x04 */
UCHAR PathId;
/* 0x05 */
UCHAR TargetId;
/* 0x06 */
UCHAR Lun;
/* 0x07 */
UCHAR QueueTag;
/* 0x08 */
UCHAR QueueAction;
/* 0x09 */
UCHAR CdbLength;
/* 0x0A */
UCHAR SenseInfoBufferLength;
/* 0x0B */
ULONG SrbFlags;
/* 0x0C */
ULONG DataTransferLength;
/* 0x10 */
ULONG TimeOutValue;
/* 0x14 */
PVOID DataBuffer;
/* 0x18 */
PVOID SenseInfoBuffer;
/* 0x1C */
struct_SCSI_REQUEST_BLOCK *NextSrb;
/* 0x20 */
PVOID OriginalRequest;
/* 0x24 */
PVOID SrbExtension;
/* 0x28 */
ULONG QueueSortKey;
/* 0x2C */
UCHAR Cdb[16];
/* 0x30 */
} SCSI_REQUEST_BLOCK, *PSCSI_REQUEST_BLOCK;
The data structure above has been annotated with the offsets employed by the operating system in order to make the data more understandable. The offsets given are from the beginning of the data structure and are expressed in hexadecimal.
A corresponding device data structure for a SCSI controller available from LSI Logic, Inc. of Milpitas, Calif. is as follows:
typedef struct_SVDT
/* Offset */
{
SVDT_CONTEXT
Context;
/* 0x00 */
SALI_UINT32
CumulativeByteCount;
/* 0x04 */
SALI_UINT32
PhyPtrDataMove;
/* 0x08 */
SALI_UINT32
SavedDataPointer;
/* 0x0C */
SALI_UINT32
Reserved;
/* 0x10 */
SALI_UINT8
TargetId;
/* 0x14 */
SALI_UINT8
TargetLun;
/* 0x15 */
SALI_UINT8
DwtFlags;
/* 0x16 */
SALI_UINT8
ReservedFlag;
/* 0x17 */
DSA_TABLE_SELECTION_ENTRY
DeviceDescriptor;
/* 0x18 */
SALI_UINT8
Reserved1;
/* 0x18 */
SALI_UINT8
Sxfer;
/* 0x19 */
SALI_UINT8
TargetId;
/* 0x1A */
SALI_UINT8
Scnt13;
/* 0x1B */
DSA_TABLE_MOVE_ENTRY
MsgOutBufDescriptor;
/* 0x20 */
SALI_UINT32
ByteCount;
/* 0x20 */
SALI_PHYSCIAL_ADDRESS
PhyPtrBuffer;
/* 0x24 */
DSA_TABLE_MOVE_ENTRY
CdbBufDescriptor;
/* 0x28 */
SALI_UINT32
ByteCount;
/* 0x28 */
SALI_PHYSCIAL_ADDRESS
PhyPtrBuffer;
/* 0x2C */
DSA_TABLE_MOVE_ENTRY
StatusBufDescriptor;
/* 0x30 */
SALI_UINT32
ByteCount;
/* 0x30 */
SALI_PHYSCIAL_ADDRESS
PhyPtrBuffer;
/* 0x3C */
} SVDT, * PTR_SVDT;
The differences between the operating system data structure and the hardware data structure must be resolved in order for the operating system to perform I/O transactions with the hardware. Normally, software drivers for an I/O sub-system running within the operating system will translate the operating system data structure for I/O transactions from the operating system format to a hardware specific format. Data within the I/O transaction data structure is rearranged to be understandable to the I/O subsystem hardware.
For instance, in order to allow the Windows operating system to perform I/O operations with the LSI Logic SCSI controller with the above-described data structures, the operating system device driver must copy the request data from the NT data structure SCSI_REQUEST_BLOCK to the LSI Logic hardware data structure SVDT. The data copied in this example might include:
Source data
Destination data
ScsiStatus
StatusBufDescriptor.PhyPtrBuffer address
TargetId
DeviceDescriptor.TargetId
Lun
to Message out buffer byte 0
QueueTag
to Message out buffer byte 2
QueueAction
to Message out buffer byte 1
CdbLength
CdbBufDescriptor.ByteCount
SrbFlags
DwtFlags
DataTransferLength
CumulativeByteCount
DataBuffer
PhyPtrDataMove
Cdb [16]
CdbBufDescriptor.PhyPtrBuffer address
This software translation is a time consuming process requiring significant processor and system resources to be expended. Translation is required only because the hardware and operating system data structures are incongruent and the hardware cannot be configured to directly understand the operating system data structure. The requirement for data structure translation compels processor utilization for I/O transactions and poses a limiting factor on I/O throughput.
It would be desirable, therefore, to eliminate the overhead required for translation of I/O transaction data structures during operation of a data processing system. It would further be advantageous for the mechanism eliminating the translation overhead to remain capable of configuration for compatibility with various hardware data structures for a given I/O architecture.
SUMMARY OF THE INVENTION
A set of registers are provided for a protocol engine driving I/O transactions requested by a host. A fixed set of defined data elements are determined for the protocol under which the I/O transaction is to be performed. Each register maps to a data structure base address or to a different data element offset or byte count. During initialization, the registers are programmed by an operating system device driver with offsets from a base address and byte counts for each data element within the defined set as those data elements are found within an operating system specific data structure for the I/O transaction, although data elements having a fixed size for each operating system may not require the byte count to be specified. For each I/O transaction requested, the base address in the host memory of the operating system specific data structure is programmed by the device driver into a register. The I/O protocol engine utilizes the base address together with the offset and byte count information to commence the requested I/O transaction. The base address is programmed by the device driver into the appropriate register on an each I/O basis, without requiring translation of the entire data structure. By permitting the hardware to be configured to effectively utilize the operating system data structure, the need for data structure translation is eliminated, CPU utilization is reduced, and increased I/O throughput is achieved.


REFERENCES:
patent: 5257368 (1993-10-01), Benson et al.
patent: 5257379 (1993-10-01), Cwiakala et al.
patent: 5307491 (1994-04-01), Feriozi et al.
patent: 5519870 (1996-05-01), Kannan et al.
patent: 5574915 (1996-11-01), Lemon et al.
patent: 5675748 (1997-10-01), Ross
patent: 5689702 (1997-11-01), Bulusu
patent: 5715456 (1998-02-01), Bennett et al.
patent: 5727212 (1998-03-01), Dinallo
patent: 5734852 (1998-03-01), Zias et al.
patent: 5745762 (1998-04-01), Celi, Jr. et al.
patent: 5752032 (1998-05-01), Keller et al.
patent: 5778226 (1998-07-01), Adams et al.
patent: 5860130 (1999-01-01), Yamanaka et al.
patent: 6081854 (2000-06-01), Priem et al.
patent: 6092124 (2000-07-01), Priem et al.

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Method to allow hardware configurable data structures does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Method to allow hardware configurable data structures, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method to allow hardware configurable data structures will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2440802

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.