From: wolff@zen.et.tudelft.nl (Rogier Wolff) Subject: Re: Linux or 386BSD? Date: Thu, 11 Feb 1993 22:54:21 GMT
blymn@awadi.com.au (Brett Lymn) writes:
>E> 1024 cylinders, and because many drives still translate with mapping
>E> turned off, because they use variable track sizes (Zone Bit
>E> Recording?)).
>What is wrong with drives having more than 1024 cylinders? The only
>reason is that MS-DOS cannot handle drives with more than 1024
>cylinders so the drive manufacturers kludged their drive firmware to
>pretend to DOS that they have less cylinders and more heads than they
>really have. Geometry mapping is unnecessary in an OS because they do
>not have the brain-dead limitation. Sure ZBR stuffs up the sectors/track
>somewhat but if you can get it almost right you get a win in regards
>to queuing your seeks for the minimum head movement, which is nearly
>impossible when the drive lies about it's actual geometry.
>--
>Brett Lymn
The problem is that the IDE interface towards the drive has a register
specification which allocates 6 bits for the sector number, 4 bits for
the head, and 10 for the cylinder. This is why DOS doesn't work very
well with a drive that insists on having more than 1024 cylinders. Neither
does Linux or any other OS. (It could be that since DOS doesn't expect other
than IDE, it also limits SCSI disks to less than 1024 cylinders, but I doubt
that.....)
About minimizing head movement I have two points. First the head movement
is minimized to almost optimal when you pretend the disk is just one large
array of blocks, knowing nothing about where exactly the cylinder boundaries
are. Blocks further away from each other tend to take more time to reach,
Secondly I optimized fsck not to seek so much, and implemented a disk seek
optimizing algorithm. Instead of seeking almost randomly for about 30 seconds
my disk now sweeps the surface about 6 times before having read all the blocks
the fsck needs. This takes only :-) 26 seconds. Almost no improvement. This
stems from the fact that current 100+ Mb drives have voice coils. This makes
seek time to be not 3ms*ntracks (as in old stepper motor drives), but more like
10ms+0.05ms*ntracks. As you can see: very little penalty for longer seeks.
just the facct that there is a seek at all is important. Also everybody always
quotes the seek time. Once the average seek time is below 20ms, the
average rotational latency of around 8ms becomes important too!
Roger.
-- **** a 486 in V86 mode is like a VW buggy with a 6 litre V12 motor. **** EMail: wolff@duteca.et.tudelft.nl ** Tel +31-15-783643 or +31-15-142371