Datasheet

Command Processing
2-16 C141-C008
2.4 Command Queuing Function
The IDD is equipped with the command queuing function. Through command
queuing, the IDD can receive multiple commands in advance and can execute them.
For the queuing function, there are two methods, tagged and untagged. In tagged
queuing, it is possible to receive multiple commands from each INIT.
2.4.1 Untagged queuing
Using untagged queuing, the IDD can receive a command from an INIT while it
is executing processing of a command from another INIT. The IDD can receive
one command at a time from each INIT. It is the role of the INIT to confirm that
only one command is issued every time.
When the IDD receives a new command from an INIT, if it is processing another
command from a different INIT, or if it is currently executing its initial self-
diagnosis, that command is queued in the command queue. In this case, the IDD
executes disconnect processing after command queuing processing is completed.
After the IDD finishes executing the current processing command, if there is a
command in the queue, it fetches that command and executes it. If there are
multiple commands in the queue, they are fetched and executed in the order in
which they were received.
When a command is in the queued state, if an IDD receives LIP (YX), or if the
IDD receives a TARGET RESET message from any INIT, it clears all the
commands in the queue. At this time, the IDD generates on UNIT ATTENTION
condition for all the INITs.
Untagged queuing exception processing (events and operations executed by the
IDD) is shown below.
If the TEST UNIT READY, REQUEST SENSE or INQUIRY or Report LUN
command is received.
When one of these commands is received, if there is no link instruction in
that command, the IDD executes that command immediately without queuing
the command or executing disconnect processing. At this time, there is no
effect on the commands from other INITs which are currently being
executed, or on the commands in the queue.
If the IDD is reserved
If the IDD has been reserved by an INIT using the RESERVE command and
receives a TEST UNIT READY command after that, when that command
conflicts with the reserved state, it responds with a RESERVATION
CONFLICT status. Commands after that are queued, and the reserved state is
checked when a command is fetched from the queue. Conflicts with the
reserved state are explained in the description of the RESERVE command
(Section 4.1.11).