The 1,024 Cylinder (504 MiB / 528 MB) Barrier

If you have arrived here through a search engine, and there's no menu to the left click here!

The first of the hard disk barriers was the 504 MiB limitation for standard IDE/ATA hard disks, which began showing up in systems some time in 1994. Due to this barrier, a hard disk over 504 MiB will normally appears as having 504 MiB under some circumstances. This problem is a result of combining the geometry-specification limitations of the IDE/ATA standard and the BIOS Interrupt 13h standard. This barrier is alternatively referred to as the 504 MB or the 528 MB barrier, depending on whether you are looking at binary or decimal megabyte values.

Note: Computer measurements are expressed in both binary and decimal terms, often using the same notation. Due to a mathematical coincidence, the fact that 2^10 (1024) is almost the same number as 10^3 (1000), they appear similar but yet they are different ways to express a megabyte or a gigabyte.

The difficulties with binary and decimal values are more noticeable in the area of hard disk capacity than anywhere else. Hard disk manufacturers have always used decimal values to describe their drive capacities. As an example, a 40 GB hard disk has about 40,000,000,000 bytes of storage. However, hard disk makers also use binary numbers where they are normally used, for example, they describe buffer capacities in binary kilobytes or megabytes, and the same notation "kB" or "MB" is used as for decimal figures. Hard disks are large, and larger numbers cause the discrepancy between decimal and binary values to become exaggerated. As an example, a 40 GB hard disk, expressed in binary terms, is "only" 38.9 GB. Since most software uses binary terms, this difference in numbers is the source of frequent confusion as to where the rest of the gigabytes went. Truthfully, they haven't gone anywhere, it's just a different way of expressing the same value.

Now that you have had the technical terms, we'll try explaining it in non-technical terms. Every hard disk has its own geometry, which tells the BIOS how many cylinders, heads and sectors the disk uses. This is the manner in which the hard disk is addressed, when a sector needs to be read or written. The geometry that a modern hard disk uses for the BIOS is normally referred to as its logical geometry, and not the physical geometry actually inside the hard disk itself.

When your BIOS performs a drive parameter auto-detection, or you look up the values for your new IDE/ATA hard disk in its manual you are seeing the logical geometry values that the hard disk manufacturer has specified for the drive. Since today's drives use zoned bit recording, and therefore have ten or more values for sectors per track depending on which region of the disk is being examined, it is not possible to set up the disk in the BIOS using the physical geometry. This is usually referred to as User Defined Settings. Keep in mind that the BIOS has a limit of 63 sectors per track, and all newer hard disks average more than 100 sectors per track, so even without zoned bit recording, there would be a problem.

Various software structures reserve a certain amount of space for specifying each of the three parameters that make up the hard disk geometry. The amount of space reserved is dictated by standards that control how IDE/ATA hard disks are supposed to work, and also how the BIOS sees hard disks through its Interrupt 13h software interface. Due to poor coordination, the standards are not the same, with each reserving different numbers of bits for the geometry. In order to use an IDE/ATA hard disk with the standard BIOS disk routines, the limitations of both standards must be observed, which means that only the smaller of each geometry number can be used.

This is how the two standards allocate bits for the geometry:

Standard

Bits For Cylinder Number

Bits for Head Number

Bits for Sector Number

Total Bits for Geometry

IDE/ATA

16

4

8

28

BIOS Int 13h

10

8

6

24

Combination (Smaller of Each)

10

4

6

20

Since each geometry figure is a binary number with a number of bits as indicated above, this means that the maximum number supported for any parameter is 2^N, where N is the number in the above table. As an example, under IDE/ATA, 2^16 or 65,536 cylinders are supported. We can then multiply all the figures together to get a total number of sectors supported, and then multiply that by 512 bytes per sector to get the maximum supported capacity:

Standard

Maximum Cylinders

Maximum Heads

Maximum Sectors

Maximum Capacity

IDE/ATA

65,536

16

256

128 GiB

BIOS Int 13h

1,024

256

63

7.88 GiB

Combination (Smaller of Each)

1,024

16

63

504 MiB

The BIOS Interrupt 13h limit for sectors is 63, and not 64, because by convention sectors are numbered starting at 1 and not 0.

As you can see, the 504 MiB figure is just 1,024 * 16 * 63 * 512, which equals 528,482,304 (528MB). The major problem is in the combination of the limitations of the two standards. Due to the 16-head limitation of IDE/ATA, no IDE hard disk is ever specified with more than 16 logical heads, instead they always have a large number of cylinders. The problem occurs when you put the disk in a machine with a standard, non-translating BIOS, as it can't see more than 1,024 of the cylinders.

The normal solution to the 504 MiB problem is to use a system that supports BIOS translation. This will enable you to work around the problem by using a software trick, and it does work! Software drive overlays will also avoid the problem, but at a cost!

Notice: Windows® 95, Windows® 98, Windows® NT, Windows® 2000, Windows® XP and
Microsoft® Office are registered trademarks or trademarks of the Microsoft Corporation.
All other trademarks are the property of their respective owners.

Copyright ©1995-2002 DEW Associates Corporation. All rights reserved.