> 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