NonStop S-Series Server Description Manual (G06.24+)
Input/Output Operations
HP NonStop S-Series Server Description Manual—520331-003
10-10
Storage Operation Queuing
Storage Operation Queuing
As mentioned previously, it is the module driver that takes generalized I/O requests 
and formulates specific commands for driving I/O devices. Figure 10-5 shows a close-
up view of how such commands are queued and delivered to the controllers.
As shown in Figure 10-5, request queues are located in two places, both on the same 
I/O board: either a ServerNet adapter or a multifunction I/O board (MFIOB). These two 
locations are identified as global and local request queues. A request queue is a 
circular list of 64-byte command entries (see next topic).
The global request queues are allocated out of global SRAM memory space from a 
pool of queues. Each module driver performs such allocations, using a separate and 
private protocol interface. The module driver organizes the queues in such a way that 
there is one queue for each processor that a given controller might communicate with. 
Because the module driver allocates these queues, it knows their ServerNet addresses 
when it comes time to transmit command information to any given queue. Both the 
module driver and the controllers maintain pointers to the head and tail of each global 
queue with which it is associated. (The I/O process is limited in the number of 
outstanding requests it can issue, so that it cannot overrun the space allocated for a 
queue.)
When the module driver forms a command entry, it transmits it as a single packet 
through the ServerNet hardware (by means of ServerNet services and the BTE, 
omitted for simplicity) to the ServerNet bus interface (SBI) on the adapter board. The 
SBI, taking the address from the packet, stores the command entry (CE) in the 
appropriate queue. The example in the figure assumes that the packet came from 
processor 2 and is destined for controller 1 on the adapter board.
Periodically, the controller 1 firmware polls its global queues and discovers that the 
sequence number of the newest entry differs from its own record of sequence 
numbers. Therefore the controller copies the entry (or entries) from the global queue to 
its own local request queue in its own local memory. In the case of SCSI storage 
devices, such as are on the MFIOB, the transmitted information passes through an S 
bus converter for electrical compatibility with S bus devices.
The controller now can operate on the command entries in its request queue. Although 
the controller receives the command entries in chronological order, it can choose to 
execute the commands in some other order.
When the I/O operation is completed, the controller sends a completion status 
message back to the module driver to signify successful (or other) results. This 
message arrives at the module driver by an indirect route. First the controller sends an 
interrupt packet to the interrupt queue in the processor in which the module driver is 
located. Later, when the interrupt is processed, the completion status is delivered to 
the module driver.










