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.