12 Processor devices

12.1 Model for processor devices

The SCSI processor device is a target with the characteristics of a primary computing device, typically a personal computer, minicomputer, mainframe computer, or auxiliary computing device or server. Such a primary computing device is often called a host. The processor device receives or provides packets of data as requested by the initiator.

In the SCSI processor device, the target accepts and provides the data packets transferred according to the commands of the initiator. The initiator and the processor device are both assumed to know the rules by which information is exchanged between them, how the information is interpreted by the processor device, and when it is allowable to exchange the information. These rules are not specified by this International Standard.

The initiator requests that the processor device accept a packet of data by transmitting a SEND command. The initiator requests that the processor device return a packet of data by transmitting a RECEIVE command. A COPY command can also be transmitted to the processor device to request that it serve as a copy manager. The actual data flow can be between the processor device and another SCSI device or can be between two SCSI devices under control of the processor device acting as a copy manager.

If a processor device temporarily has no resource available to manage a data packet from the initiator, has no data packet to provide to the initiator, or has no resources assigned to perform the operation, the device may then choose one of the following responses:

More than one logical unit can be implemented by a processor device. Logical units can serve as additional paths to a single resource, and/or each logical unit can serve as a path to different resources within the device. A single logical unit may also serve as a path to multiple resources if the processor device can interpret information within the data packet and route the packet to the appropriate resource. If the logical unit addressed by the initiator does not have an available resource or data packet associated with it, the processor device may choose to treat the logical unit as an invalid logical unit (see 7.5.3) or respond as described in the previous paragraph.

If the processor device determines that an error or unusual condition has occurred while performing an operation specified by the contents of a data packet, the information describing the condition is normally returned as a part of a data packet. If the processor device determines that an error or unusual condition has occurred while executing the SCSI command from the initiator, the command is terminated with a CHECK CONDITION and the failures are identified through a REQUEST SENSE command.

The SCSI processor device is distinguished from a SCSI communications device by the fact that the primary destination of the data packets is within the target device. A SCSI communications device, in contrast, passes the data on to an ultimate destination outside the target through a network. Many types of devices may find it convenient to function as processor devices if no other suitable SCSI device type exists and if the packet exchange protocol dictated by the processor device model meets their functional requirements. Devices requiring totally incompatible protocols and command sets should be examined carefully to ensure that the incompatibilities are based on functional requirements. If they are, they should be treated as vendor-unique device types.

Several examples of processor device implementations are provided to clarify the range of utility of the SCSI processor device.

12.1.1 Host-to-host communication, SEND only

A host system, (host A), takes the initiator role and selects a processor device (host B), transmitting a packet to host B using the SEND command. The SEND command contains an operating system call that requests data from the local storage devices attached to host B. After performing the functions required by the data packet, Host B assumes the initiator mode and selects host A as a processor device and uses a SEND command to transmit the requested data back to host A. Host A thus acts as a primary computer and host B acts as a specialized data server computer. Note that the SEND command is sufficient to perform a complete transaction if both host A and host B are capable of acting as initiators. This provides the capability of a high bandwidth inter- communication among nearby host processors.

12.1.2 Host-to-host communication, SEND and RECEIVE

A host system (host A) takes the initiator role and selects a processor device (host B), transmitting a packet using the SEND command to host B containing instructions about an operation to be performed. Host A again takes the initiator role and sends the data to be used by host B in the operation. Host A then assumes that a result will be obtained consistent with rules understood by both devices. Host A generates a RECEIVE command to obtain the result from host B. If the result is not yet ready, host B may disconnect until the calculation is complete and the requested data packet can be returned to host A.

NOTE 168 Host A need not support target mode and host B need not support initiator mode to successfully complete an exchange between the two devices.

12.1.3 Host-to-special-output peripheral

A special co-processor device which can use the processor device command set is a high-performance graphics display terminal. The initiator sends to the display terminal control and data packets that contain the image to be displayed. Only the SEND command is required. A peripheral failure should be indicated through the normal CHECK CONDITION / REQUEST SENSE protocol.

12.1.4 Host-to-special-input peripheral

A second special co-processor device that can use the processor device command set is a data acquisition subsystem. Such subsystems may multiplex and compact streams of data from many sources. A host could control the data acquisition modes and the selection of data streams by transmitting control packets to the processor device using the SEND command. The host could then obtain the acquired data by executing a series of RECEIVE commands. The data acquisition device could also serve as an initiator, selecting peripheral storage devices and storing the compacted acquired data there for later access directly by the host or through host to host communication protocols. A peripheral failure would be indicated through the normal CHECK CONDITION / REQUEST SENSE protocol.

12.2 Commands for processor devices

The commands for processor devices shall be as shown in table 229.

Table 229 - Commands for processor devices

+=====================================-============-======-============+
|  Command name                       | Operation  | Type |  Subclause |
|                                     |   code     |      |            |
|-------------------------------------+------------+------+------------|
| CHANGE DEFINITION                   |    40h     |   O  |   8.2.1    |
| COMPARE                             |    39h     |   O  |   8.2.2    |
| COPY                                |    18h     |   O  |   8.2.3    |
| COPY AND VERIFY                     |    3Ah     |   O  |   8.2.4    |
| INQUIRY                             |    12h     |   M  |   8.2.5    |
| LOG SELECT                          |    4Ch     |   O  |   8.2.6    |
| LOG SENSE                           |    4Dh     |   O  |   8.2.7    |
| READ BUFFER                         |    3Ch     |   O  |   8.2.12   |
| RECEIVE                             |    08h     |   O  |  12.2.1    |
| RECEIVE DIAGNOSTIC RESULTS          |    1Ch     |   O  |   8.2.13   |
| REQUEST SENSE                       |    03h     |   M  |   8.2.14   |
| SEND                                |    0Ah     |   M  |  12.2.2    |
| SEND DIAGNOSTIC                     |    1Dh     |   M  |   8.2.15   |
| TEST UNIT READY                     |    00h     |   M  |   8.2.16   |
| WRITE BUFFER                        |    3Bh     |   O  |   8.2.17   |
|----------------------------------------------------------------------|
|Key:  M = command implementation is mandatory.                        |
|      O = command implementation is optional.                         |
+======================================================================+ 
The following operation codes are vendor-specific: 02h, 05h, 06h, 09h, 0Ch, 0Dh, 0Eh, 0Fh, 10h, 11h, 13h, 14h, 19h, C0h through FFh. All remaining operation codes for processor devices are reserved for future standardization.

12.2.1 RECEIVE command

The RECEIVE command (see table 230) requests that the target transfer data to the initiator. The contents of the data are not defined by this International Standard.

Table 230 - RECEIVE command

+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (08h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Allocation length                           |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+ 

12.2.2 SEND command

The SEND command (see table 231) requests that the target transfer data from the initiator.

Table 231 - SEND command

+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (0Ah)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved         |  AEN   |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Transfer length                             |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+ 
An asynchronous event notification (AEN) bit of one indicates that the data to be transferred conforms to AEN data format as defined in table 232. A SEND command with an AEN bit of one shall be only issued to logical unit zero.

Table 232 - SEND command - AEN data format

+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=================+========+=================+==========================|
| 0   |     Reserved    | LUNTAR |     Reserved    |          LUNTRN          |
|-----+-----------------------------------------------------------------------|
| 1   |                               Reserved                                |
|-----+-----------------------------------------------------------------------|
| 2   |                               Reserved                                |
|-----+-----------------------------------------------------------------------|
| 3   |                               Reserved                                |
|-----+-----------------------------------------------------------------------|
| 4   |                               Sense data byte (0)                     |
|- - -+---                                                                 ---|
| n+4 |                               Sense data byte (n)                     |
+=============================================================================+ 
An AEN bit of zero indicates that the data to be transferred are vendor-specific.

The transfer length specifies the length in bytes of data that shall be sent during the DATA OUT phase. A transfer length of zero indicates that no data shall be sent. This condition shall not be considered an error.

A logical unit target (LUNTAR) bit of zero specifies that the asynchronous event occurred on a logical unit. A LUNTAR bit of one specifies that the asynchronous event occurred on a target routine.

If the LUNTAR bit is zero, the logical unit number target routine number (LUNTRN) field specifies the logical unit on which the asynchronous event occurred. If the LUNTAR bit is one, the LUNTRN field specifies on the routine on which the asynchronous event occurred.

The sense data bytes are defined in table 65.

12.3 Parameters for processor devices

12.3.1 Diagnostic parameters

This subclause defines the descriptors and pages for diagnostic parameters used with processor devices.

The diagnostic page codes for processor devices are defined in table 233.

Table 233 - Diagnostic page codes

+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     00h     |  List of supported parameters page               |  8.3.1.1   |
|  01h - 3Fh  |  Reserved (for all device type pages)            |            |
|  40h - 7Fh  |  Reserved                                        |            |
|  80h - FFh  |  Vendor-specific pages                           |            |
+=============================================================================+ 

12.3.2 Log parameters

This subclause defines the descriptors and pages for log parameters used with processor devices.

The log page codes for processor devices are defined in table 234.

Table 234 - Log page codes

+=============-==================================================-============+
|  Page code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     01h     |  Buffer over-run/under-run page                  |  8.3.2.1   |
|     07h     |  Last n error events page                        |  8.3.2.3   |
|     00h     |  List of supported parameters page               |  8.3.2.5   |
|     06h     |  Non-medium error page                           |  8.3.2.4   |
|  02h - 05h  |  Reserved                                        |            |
|  08h - 2Fh  |  Reserved                                        |            |
|  30h - 3Eh  |  Vendor-specific pages                           |            |
|     3Fh     |  Reserved                                        |            |
+=============================================================================+ 

12.4 Definitions specific to processor devices

12.4.1 host:

A device with the characteristics of a primary computing device, typically a personal computer, workstation, minicomputer, mainframe computer, or auxiliary computing device or server.

12.4.2 data packet:

The data transferred during the DATA IN phase of a RECEIVE command, or during the DATA OUT phase of a SEND command. A data packet often contains information at the beginning or end of the packet that describes the contents of the packet. A data packet might contain control or status information for the destination device.

12.4.3 resource:

A part of the device required to operate on or store the data packet.