On Tue, 08 Jan 2019 22:45:31 -0700 Warner Losh <imp(a)bsdimp.com> wrote:
For
example, I could envisage a disk where the sectors are deliberately
not numbered sequentially i.e. they've taken rotational latency into
account for you?
We did in fact use an interleave factor of more than 1 (skip
more than 1 block for consecutively numbered sectors) to
improve throughput but that had to do with slow processing.
We did discuss "dead reckoning" (invoking the service routine
right when the N+1 numbered sector was near the r/w heads) but
I don't think we implemented it.
For floppy drivers that I've seen the source to in early unixes, this was
often the case. One minor device would be to access the 'raw' device, while
another would be to access the 'cooked' sector numbers where the mapping
was anything but linear. you'd have an interleave of, say, 4 or so, and
then a 'slip' from track to track. The interleave factor was based on how
We used interleaving on the hard disk because a 5Mbps ST412
drive could stream data faster than typical user program could
handle (on a 5.6Mhz bus machine). We used h/w support as the
machine was already too slow to do any s/w interleaving!
Example: for an interleave of 1, at the time formatting the
disk, sector ids would be written in this sequence:
1 8 2 9 3 A 4 B 5 C 6 D 7 E
We picked the interleave number based on some typical use
cases at the time.
The floppy driver was was a completely separate driver for
various reasons.