Datasheet
2.4 Command Queuing Function
C141-C008 2-17
Note:
Through the operation of the command queuing function, except for exceptions
described on this page, the IDD does not respond to commands issued by the
INIT with a BUSY status. This function is applied under the multi-initiator
environment, and overhead for re-issuing commands caused by the BUSY status
is unnecessary. Normally, the INIT does not have to be aware of the existence of
a queuing function, but it is necessary to exercise caution in the following items
when controlling input/output processing.
1) When a command is queued, the time from the queuing of the command to its
actual execution will vary depending on the commands already in the queue,
or on the content of the processing currently being executed. Particularly in
cases where the FORMAT UNIT command and START/STOP UNIT
command (Immed = 0), and data access commands which specify large
processing block counts, are already queued or being executed, the newly
queued command will be forced to wait a long time until it is executed.
2) In the following cases, a command may not be executed even after it has been
queued.
a) When there is an error in the CDB, the IDD responds with a CHECK
CONDITION status at the point when that command is fetched from the
queue.
b) If the IDD is in the not ready state at the point when the queued
command is fetched, it responds with a CHECK CONDITION status.
c) If a UNIT ATTENTION condition is generated before the queued
command is fetched, a CHECK CONDITION status may be replied.
2.4.2 Tagged queuing
Through the tagged queuing function, the IDD can receive multiple commands
from the same INIT or from different INITs until the command queue is full. The
number of commands that can be received by the IDD is 128 per IDD, without
relation to the INIT. When the IDD receives a new command, if the command
queue is full, the new command is responded to with the TASK SET FULL status.
The IDD controls the command queue, but it is possible for the INIT to delete
commands from the queue by adding a command. When adding a command to the
queue, it is possible for the INIT to specify to the IDD the command execution
sequence and the command to be executed next.
An inherent tag (OX_ID) is added to each exchange. As long as a single INIT has
inherent OX_IDs for respective exchanges. It can issue multiple exchanges to the
IDD.
So that an INIT does not issue duplicate tags (OX_ID) for each of the exchanges
it issues, it is necessary to control the tags.