Mass Storage Control Protocol
|This article does not cite any references or sources. (December 2009)|
First implemented in the HSC50 hierarchical storage controller, the protocol quickly spread throughout the entire line of mass storage controllers built by DEC. The UDA50 was an implementation of MSCP built on a Unibus card; other implementations (for example, the RQDX) stretched down to the Q-bus and small, 5 megabyte disk drives and even diskettes.
Designed to minimize the amount of CPU involvement, the protocol depended upon two queues. Into one queue were placed packets which fully described the commands to be executed by the mass storage subsystem. To initiate an I/O request, the CPU had only to create a small data structure in memory, append it to a "send" queue, and if that was the first packet in the send queue, wake the MSCP controller. After the command was executed, an appropriate status packet would be placed into the second queue to be read by the CPU.
Interrupts to the CPU (a costly operation) were not needed so long as further command packets remained in the command queue and the response queue was not in danger of over-flowing. I/O-space reads and writes to the MSCP controller, a less-expensive but still-costly operation, were similarly minimized.
Because MSCP packets were deliberately designed to resemble the packets exchanged on the VMScluster interconnects, it was a very inexpensive operation to ship storage requests around a VMScluster for remote execution; this greatly facilitated the creation of large-scale VMSclusters. The dependence upon in-memory packets and the minimization of interrupts and I/O-space reads and writes greatly facilitated remote operations.