(Sortof starting a new thread)
There have been a discussion about the ineffectiveness of MSCP recently,
especially compared to a dumb controller interface.
To make a few comments on this; yes the MSCP controller is much more
intelligent. But noone have yet talked about what this means.
The overhead for playing with the MSCP controller is way much more than for a
simple, and stupid controller. However, there is also a big speed gain in some
situations.
Jerome Fines observations are correct. Under a single-user system such as RT-11
(especially of the software acts in a naive way) much of the advantages of MSCP
is lost. The fact that it can deal with large disks (or disks with different
sizes) can hardle be called "intelligent". That's really primitive.
Things that the MSCP protocol do handle, however, and where the HD: driver will
suffer and loose, is when we get into more advanced stuff.
The MSCP controller can have many I/O requests outstanding at the same time.
Once one operation is completed, it can immediately start the next one. You
actually have a zero setup time with MSCP. So if you're doing several I/O
operations in sequence, a good driver, in combination with a good program, will
be able to get more performance out of the MSCP controller than the HD: driver,
which each new operation can only be programmed once the previous operation is
completed.
The MSCP controller can also complete several I/O requests with just one
interrupt. No need for one interrupt for each I/O operation that completes.
The MSCP controller can also reorder I/O operations for better efficiency. If
you have three requests, jumping back and forth over the disk, it makes sense to
actually do the two operations on one end, before doing the operation at the
other end. This can be implemented in software by the HD: controller, but then
we now have more software that must run before each I/O request is issued.
The MSCP controller handles bad block replacement without the involvement of the
software. It always present a disk without bad blocks. In real life, all disks
have bad blocks, so somewhere this always needs to be handled. Now, if you have
a simulated PDP-11, the disk is actually a file on that OS, so the underlaying
OS will handle bad blocks for you, so it isn't necceasry for the PDP-11
controller to do this anymore, but MSCP was designed for raw disks, not emulated
systems. Dealing with bad blocks on the HD: driver would cost a lot.
The MSCP controller can do I/O to several disks in parallel. In real life,
controllers like the HD: driver pretends to talk to exists as well. One problem
with these are that if you have several disks, you can only do I/O to one disk
at a time. Some of these controllers could allow you to do seeks on other disks
while I/O was performed on one disk. However, things started getting complicated
with this.
The MSCP controller have pretty advanced error detection and handling. Including
extensive reports to the software on problems.
Now, those things are why it's more intelligent. And more intelligent means it
also takes more software to talk to it. :-)
MSCP is really like serial SCSI (or serial ATA), only done 20 years earlier.
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt at softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol