Mass Storage Control Protocol


The Mass Storage Control Protocol is a protocol that was designed by Digital Equipment Corporation of Maynard, Massachusetts for the purposes of controlling their high-end mass storage options.
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 is an implementation of MSCP built on a Unibus card; other implementations stretch down to the Q-bus and small, 5 megabyte disk drives and even diskettes.
Designed to minimize the amount of CPU involvement, the protocol depends upon two queues. Into one queue are placed packets which fully describe the commands to be executed by the mass storage subsystem. To initiate an I/O request, the CPU has only to create a small data structure in memory, append it to a "send" queue, and if that is the first packet in the send queue, wake the MSCP controller. After the command has been executed, an appropriate status packet is placed into the second queue to be read by the CPU.
Interrupts to the CPU are not needed so long as further command packets remain in the command queue and the response queue is not in danger of over-flowing. I/O-space reads and writes to the MSCP controller, a less-expensive but still-costly operation, are similarly minimized.
Because MSCP packets were deliberately designed to resemble the packets exchanged on the VMScluster interconnects, it is a very inexpensive operation to ship storage requests around a VMScluster for remote execution; this greatly facilitates 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 facilitates remote operations.