NonStop S-Series Server Description Manual (G06.24+)

Input/Output Operations
HP NonStop S-Series Server Description Manual520331-003
10-14
Storage Read Request Processing
Storage Read Request Processing
When an I/O process in a processor requests a read from a storage device, the only
action that the processor initiates is to send the command to the controller. Thereafter,
it is the responsibility of the controller to transfer the data, pushing the data to the
processor as if the controller is the originator of the request. The resultant sequence
consists of three phases, illustrated in Figure 10-7.
In the request phase, the module driver first of all assigns the data buffer a ServerNet
address and makes an entry in the access validation and translation table (AVTT).
Then the I/O process (1) builds a command descriptor block (CDB) and (2) embeds the
CDB in a command entry (CE). The CE includes addresses of the client buffers for
reception of the data that is to come later. Then the I/O process, through the XIO
kernel, calls the module driver to create and send a ServerNet packet to a certain
ServerNet addressable controller (3). The header of the created packet contains the
destination and source ServerNet IDs, and the address field contains the ServerNet
address of the next available slot in the appropriate global request buffer in the
ServerNet adapter.
The module driver forwards the packet to ServerNet services, which transmits the
packet to the ServerNet adapter (4), through the hardware of the block transfer engine
(BTE) as a ServerNet write request. The ServerNet bus interface (SBI) returns a
simple response packet back to the BTE and writes the packet data (the CE) into the
addressed global request queue.
When the controller polls its global request queues, it finds the new request and
transfers it to its local request queue (5). At this point, the controller discovers that the
CDB it has received is requesting a read transfer (6).
In the data transfer phase, the controller commands the storage I/O device to read
the requested data (1) and stores the received data in its own local memory (2). The
controller then issues multiple write requests, along with the supplied ServerNet
address of a client buffer, to the SBI (3). The SBI converts these controller requests to
ServerNet packets and sends the packets through the ServerNet hardware (4) to the
access validation and translation (AVT) logic in the processor.
The AVT logic validates the supplied ServerNet address, translates that address to a
physical address, and stores the data of each received packet in the client’s data buffer
(5).
At the end of the data transfer, the controller initiates the interrupt phase. The
controller creates an interrupt packet that it issues to the SBI as a ServerNet write
request (1). For this packet, the controller uses a specific ServerNet address in
processor memory that the module driver has allocated as an interrupt location. The
AVT in the processor receives this packet (2) and puts it into an interrupt queue (3).
When the interrupt is serviced, the I/O process is notified that the transfer has been
completed.