Seagate Ultra 320 ユーザーズマニュアル

ページ / 186
110  
                                                      Parallel SCSI Interface Product Manual, Rev. A 
• Active pointers (one set per initiator only).
• Saved pointers (one or more sets per initiator, up to fifteen sets total).
The use of these two types of pointers is described in the following paragraphs.
5.5.2
Active pointers
Active pointers represent the current state of the interface between the initiator and the target that the initiator 
is currently connected to and servicing. The pointers for the current task remain in the initiator Active Pointer 
registers from the time they are put there after the completion of all activities associated with the previous task, 
until the logic of the Initiator dictates a new task shall be executed. Normally, successful receipt by the initiator 
of good status associated with the current task triggers the initiator to insert a new set of the three Active point-
ers for the next task. The initiator does not wait for the TASK COMPLETE message before deciding whether to 
retry the Active task or transfer in new task pointers. If the current task was never satisfactorily completed, the 
initiator logic may dictate that some special response action be taken, such as restoring the values in the 
Active pointer registers to their beginning values so the current task can be restarted (see note following). The 
initiator may choose to send a command such as a REQUEST SENSE command to the target, or the initiator 
could ignore the unsatisfactorily completed task and start the next originally scheduled task.
Note.
For example, if the drive detects a parity error in the data out from the current command, it sends the 
RESTORE POINTERS message to the initiator. In this case, the Restore Pointers request causes the 
initiator to restore as the active pointers the values existing at the beginning of the current task so the 
current task can be resent. The “beginning” pointer values point to the first byte of the current task 
(very likely a command descriptor block), the first byte of the area set aside for status to be returned 
and the first byte of the area set aside for data associated with the current task. (See Section 4.3.14 for 
a detailed description of operations resulting from the RESTORE POINTERS message).
5.5.3
Saved pointers
Saved pointers point to initiator storage locations where command, status and data information are stored for a 
task that was saved at some point in the past. There is one set of saved pointers for the current task for each 
target on the interface bus that is currently active (whether or not it is currently connected to the initiator). The 
saved command pointer always points to the first byte of the Command Descriptor Block (see Section 7.2) for 
the “current” task for each target, the saved status pointer always points to the first byte of the area used for the 
status associated with the command, and the saved data pointer points to some location (not necessarily the 
beginning) in the area used for data associated with the command. When a SCSI target port disconnects the 
initiator saves the current pointers. Before a SCSI target port disconnects it may send a SAVE DATA POINT-
ERS message to the initiator, which copies the data pointer that is for the current command for that target into 
the location set aside for the target’s saved pointers. When a SCSI target port reconnects, the initiator performs 
a restore pointers operation that copies the saved pointers for the reconnected target into the initiator current 
pointer registers so that the current command for that target may continue its operation from where it left off 
before disconnecting. If the target had sent a Save Data Pointer message previously, the current data pointer 
points to the place in the data store area where operations left off. The data pointer otherwise points to the 
beginning of the data area, unless the data pointers were modified by a MODIFY DATA POINTERS message 
from the target prior to disconnecting. The MODIFY DATA POINTERS message adds a value to the data 
pointer that allows data to be taken, upon reconnection, from a location before or after the last byte transferred 
location.
Since the data pointer value may be modified by the target before the task ends, it should not be used to test 
for actual transfer length, because the value may no longer be valid for that purpose.