Browse Prior Art Database

Multi-Thread Sequencing in a Small Computer System Interface Environment

IP.com Disclosure Number: IPCOM000113689D
Original Publication Date: 1994-Sep-01
Included in the Prior Art Database: 2005-Mar-27
Document File: 4 page(s) / 127K

Publishing Venue

IBM

Related People

Keener, DS: AUTHOR [+3]

Abstract

Described is a hardware/firmware implementation to provide Personal Computers (PCs) with a means of sequencing multi-threads in a Small Computer System Interface (SCSI) environment. The implementation utilizes host gate array and gate array firmware to control the order sequence of SCSI commands for a given SCSI device, or set of SCSI devices.

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

Multi-Thread Sequencing in a Small Computer System Interface Environment

      Described is a hardware/firmware implementation to provide
Personal Computers (PCs) with a means of sequencing multi-threads in
a Small Computer System Interface (SCSI) environment.  The
implementation utilizes host gate array and gate array firmware to
control the order sequence of SCSI commands for a given SCSI device,
or set of SCSI devices.

      The American National Standards Institute (ANSI) SCSI
specification defines a structure to allow multiple SCSI commands to
be concurrently active at a target SCSI device.  The structure is
called Tagged Command Queuing.  Following the selection of a target
device initiator, the controller sending the SCSI command passes a
two byte message to the target device.  This two byte message
uniquely identifies the SCSI command by way of a queue tag number
(*).  The queue tag message format is as follows:
             Bit 7  6  5  4  3  2  1  0
            Byte
             0     Message code (20h, 21h, 22h)
             1     Queue Tag (00h - FFh)

The first byte is the message code which can be a 20h, 21h, or 22h.
The byte one of queue tag message is as follows:
             Message Code      Description
                  20th          Simple Queue Tag
                  21h           Head of Queue Tag
                  22h       Ordered Queue Tag

      The second byte is a unique identifier for that command which
can be any number from 0 to FFh.  The SCSI bus can have multiple
target devices and each target device can have multiple commands
active.  Each command on a given target device, if tagged, is
uniquely identified from other commands on a given target device by
byte two of the queue tag message.

      A multi-thread SCSI controller array must have a method of
controlling the order of active commands for a given target device.
One method would be to have the gate array keep track of each target
device which has one or more active commands.  For each active target
device, a linked list could be kept to order the commands in a given
sequence, depending on byte one of the queue tag message.  For a
simple queue tag, or an ordered queue tag, the command could be
placed at the end of the list.  For a head of queue tag, the command
could be placed immediately ahead of the first waiting command.  This
method, however, requires significant queue management within the
hardware.  Also, it requires significant hardware/firmware
interaction to delete a member of a given list.

      The concept described herein provides a structure and a method
which implements the queue tag message structure with minimum of
hardware and firmware overhead.  The hardware method consists of an
after mode bit, an after thread register and a thread start bit.  The
...