In the past the PC addressed each sector on the hard drive through its physical location. I.e. to load (or store) a given sector, the PC would need to inform the hard disk controller which side, which track and which sector within this track the program wants to load or store (something like “hey controller, give me the 512 bytes of information that is stored on sector 5 from track 10 on side 1”). This system is also known as CHS (Cylinder, Head and Sector).
The problem is that PCs had a limit on the highest track, highest head and highest sector they could access. In fact, there were two limits. One for the computer BIOS – which is a program stored in the computer’s ROM memory that teaches the CPU how to deal with basic peripherals like the floppy disk drive and the hard disk drive – and another for the ATA interface, which is the interface used to connect the hard disk drive to the PC (this interface is also known by other names like PATA, parallel ATA or IDE).
These limits are shown in the table below.
As you can see, the original BIOS used on the PC could access only to 1,024 tracks, 255 sides and 63 sectors. Like we explained in the previous page, if we multiply these three numbers we will come up with the total number of sectors on the hard disk drive, and multiplying this number by 512 we have the total hard disk drive capacity, in bytes. Thus the original BIOS used on the PC could access hard disk drives only up to 7.84 GB. Keep in mind that when the IDE/ATA standard was created back in 1986 people thought that this limit was almost impossible to be reached, as at that time the most high-end hard disk drive had 40 MB in capacity. This limit, also known as 8 GB limit (because of the wrong definition of gigabyte explained before), can be solved with a BIOS upgrade (click here to learn how to do that) and affects computers built up to 1999 more or less. It is important to know that even with a BIOS upgrade MS-DOS up to 6.22 cannot recognize disks above this limit.
Windows NT has a limitation where it can’t boot from the first partition if it is larger than 7.84 GB, but this is a operating system limitation and not the hardware limitation explained above. We will discuss this problem later.
We also have the ATA interface limits, shown on the above table, which is of 127.5 GB (or 136 GB if you use the wrong definition of gigabyte). This limit deserves more attention and will explain it better in just a moment.
Then there is another limit that affected computers built up to around 1995, which is the 504 MB (or 528 MB, if you use the wrong definition of megabyte) limit. This limit existed because the computer needed to respect both BIOS and ATA limits at the same time. For example, even though ATA standard allowed addressing up to 65,536 tracks, the BIOS didn’t, so the computer addressing capability was limited to 1,024 tracks. The same goes for heads and sectors, as you can see on the table. Once again the solution was a BIOS upgrade to allow a new mode introduced at that time (and which is standard today for parallel hard disk drives) called LBA (Logical Block Addressing), which made the computer to address each sector of the disk sequentially instead of using its physical (i.e., CHS) location. So today instead of having to ask for sector 5 from track 16 on side 1, the system only needs to ask “hey, give me sector 1,186,612.”
Since nowadays LBA mode is used, you could think that there is no more limitation in hardware for the maximum hard disk drive capacity. However, ATA interface uses a 28-bit variable to address sectors under LBA mode, creating a 128 GB (or 137 GB if you use the wrong definition of gigabyte) limit (2^28 x 512 bytes).
ATA-6 standard (a.k.a. ATA/100) increased the size of the LBA variable to 48 bits, pushing the size limit up to 128 PB (petabytes, one petabyte is 2^50, so 128 PB is equal to 131,072 TB) a limit that seems impossible to reach (let’s see 10 years from now if this statement continues to be true). By the way, this limit is also known as 144 PB limit, if the wrong definition of petabyte is used.
To solve this 128 GB limitation, two things are needed. First, update the motherboard BIOS to the latest version available (read our tutorial on this subject). Second, run a program on Windows to enable 48-bit LBA addressing, because Windows ME, NT, 2000 and XP without SP1 or SP2 don't recognize hard drives over 128 GB as they don’t support 48-bit LBA addressing (Windows 95 doesn’t support hard drives above 32 GB due to a system limitation that isn’t related to what we are describing and Windows 98 doesn’t support hard disk drives over 128 GB also due to another unrelated problem, so with this system there is no solution to the 128 GB limit).