> On Nov 29, 2015, at 1:13 PM, Warner Losh <i...@bsdimp.com> wrote:
> 
> ...
> A similar thing was implemented on the old DEC Rainbow 100 (though
> I'm sure others). To give the software a chance to do some minor things
> while processing, it physically laid out the 10 sectors as 0 2 3 4 6 8 1 3
> 5 7 9
> so that when reading sequentially, you had half a disk rotation to get your
> act
> together to read the next sector. This turned out to be only a small
> performance win, and was a pita for interoperability, so was done only in
> the earliest versions. Since these were RX50 disks, I suspected its origins
> were in the PDP-11s and VAXen that the drives were also attached to.

I didn't know Rainbow did this, but it's familar from the PRO floppy 
controller.  Those use a primitive controller (in fact, *all* PRO controllers 
are horribly primitive) where the CPU has to pull data from the device, with 
program I/O.  So you'd likely have to use interleaving for decent performance.  
In any case, it does so.  And the track start is offset by 3 sectors per track. 
 And, last but not least, for some strange reason sector 0 is in physical track 
1, while physical track 0 contains the highest 10 sectors.

Presumably later devices used the same layout for compatibility.

The PRO hard drive controller was also programmed I/O, but did't use 
interleave.  And the Ethernet controller had a chip that did DMA (somewhat 
reliably) but only to on-card memory, so you either had to use that memory for 
network buffer space, or copy from the card to host memory.

        paul


Reply via email to