After the discovery of the 504 MiB BIOS barrier,
the normal way of getting around that problem was to make use of BIOS geometry
translation. (This continued until hard drives
exceeded about 8 GB in size and the whole IDE/ATA geometry scheme had to be abandoned
altogether.) In a nutshell, this translation works by dividing the hard disk's number of
cylinders by a binary number such as 2, 4, 8 or 16, and multiplying the number of heads by
the same number. This lets the number of cylinders that the BIOS sees fall below the Int13h limit of 1,024. This translation however causes a
problem in some systems when using a hard disk over about 4 GB in size.
Note: To understand how
translation causes this particular new barrier to arise, you need to understand how BIOS
translation works. See here for an explanation if you are not
familiar with this.
When the number of cylinders on the drive is between 8,192 and 16,383, the number
typically used for translation is 16. Here's an example of how this might work with a
theoretical 6.4 GB hard disk if it used the normal way that IDE/ATA drives are specified,
with 16 heads and 63 sectors per track:
| |
Cylinders |
Heads |
Sectors |
Capacity |
IDE/ATA Limits |
65,536 |
16 |
256 |
137 GB |
Hard Disk Logical
Geometry |
12,496 |
16 |
63 |
6.45 GB |
BIOS Translation
Factor |
divide by 16 |
multiply by 16 |
-- |
-- |
BIOS Translated
Geometry |
781 |
256 |
63 |
6..45 GB |
BIOS Int 13h Limits |
1,024 |
256 |
63 |
7.88 GB |
This should actually work just fine; it overcomes the BIOS issues and results
in geometry that falls within acceptable limits. However, there's an unfortunate gotcha
that was discovered when drives first exceeded 8,192 cylinders in around 1997: MS-DOS and
early versions of Windows choked when presented with a drive that had (apparently) 256
heads! Thus, this is actually a barrier that is due to both the operating system and the
system BIOS: the operating system should have been able to handle 256 heads, but the BIOS
was creating the problem due to its translation.
It was decided that the easiest way to deal with this problem was to change the
way the BIOS did translation. As a result, BIOSes stopped creating translated geometries
that had 256 heads. One common way that this was done was to use 15 as the translation
factor instead of 16, resulting in this sort of conversion:
| |
Cylinders |
Heads |
Sectors |
Capacity |
IDE/ATA Limits |
65,536 |
16 |
256 |
137 GB |
Hard Disk Logical Geometry |
12,496 |
16 |
63 |
6.45 GB |
BIOS Translation Factor |
divide by 15 |
multiply by 15 |
-- |
-- |
BIOS Translated Geometry |
833 |
240 |
63 |
6..45 GB |
BIOS Int 13h Limits |
1,024 |
256 |
63 |
7.88 GB |
Of course, if you have a BIOS that doesn't know about the 256 head problem, you
will need to address this with either a hardware or software solution. To help avoid some
of these problems, many hard disk manufacturers also changed their specified geometries to
use only 15 heads instead of 16. So instead of the example drive above being specified
with 12,496 cylinders, 16 heads and 63 sectors, it might have been 13,329 cylinders, 15
heads and 63 sectors. With these parameters, even if the BIOS uses a translation factor of
16, the resulting number of heads will be only 240.
Next: The 240 Head Int 13 Interface (7.38 GiB / 7.93 GB) Barrier