On 24 Jun 2009 at 10:43, Dave McGuire wrote:
Setting the interleave properly for your particular
model of
controller can result in significant data transfer rate improvements.
Setting it too low can slow things down a *lot*. The best
controllers, of course, will handle 1:1 interleave (a.k.a. "no
interleave").
I've always been a little peeved at the disk drive utilities that
determine "optimum" interleave for an AT-style MFM controller.
There are really two dimensions to the problem--and no interleave
"optimizer" that I know of deals effectively with them.
The first, of course, is how fast your PC and controller can get data
off of a drive. Choosing a too-small interleave can have disastrous
effects on performance because you can get to the point where only a
single sector per rev is being transferred. A too-large interleave
has a much lesser effect on performance, since the PC is waiting only
a sector time or two to get the next sector. In other words, on may
not notice a large subjective difference in performance if the
interleave is at 4:1 instead of 3:1.
The other aspect of the problem is how fast an application can read
data--that is, how much processing is going on between disk accesses.
Setting the interleave to a value that an optimizer comes up with can
have the same effect as a too-small interleave. That is, the
application must wait a whole revolution before data is available.
Some old CP/M systems used three interleaves (I've got at least one
sample of this in my collection). The boot tracks are formatted with
a 1:1 interleave, as they're simply streamed into memory with no
processing; the directory area is formatted at 2:1 because directory
searches aren't usually processor-intensive and the remainder (data
area) of the disk is formatted at at 3:1.
Ultimately, the solution is a controller with a large buffer or cache
or a cache driver in the PC. Then the controller essentially becomes
the limiting factor and the "optimum" interleave determined by a
utility is essentially the correct one, since reads are occurring a
track at a time.
But for non-cache, sector-at-a-time setups, it's better to choose an
interleave that's slightly larger than recommended.
Similarly, if a controller can support multi-sector reads at unity
interleave, it makes sense to interleave clusters rather than
sectors.
FWIW,
--Chuck