Hard Drive Size Limitations and Barriers
There's nothing more frustrating than trying to add a new hard drive only to be confronted by the inability to use it's entire capacity. This inability to use the entire drive capacity is referred to as a Limitation or Barrier, but bear in mind though that it is not a limitation of the drive itself, but rather a limitation imposed by one or more other factors that have arisen during the development of computers in general.
When we began preparing this segment, we realized that hard drives, especially IDE/ATA type drives, were in a constant state of development, therefore new limitations and barriers would be discovered even as this segment was being completed. With this in mind, we decided to break this segment into two parts. The first segment, that which you are now reading, begins with the background behind some of these limitations and barriers that arose as computer systems evolve and proceed through the design and redesign process. In the second segment, we will take an in-depth look at each barrier or limitation, and that segment will evolve as new drive development occurs and new computer systems evolve.
Capacity barriers are not new to the computer industry, in fact, limitations began surfacing the the first time hard drive sizes rose above 528MB. As larger and larger disk capacities emerge in the market, end users are realizing that their older motherboard BIOS's and/or operating systems do not support the increased capacity of these new drives.
We hope the following will provide you with a better understanding of the limitations and barriers associated with higher capacity disk drives, along with some of the solutions being implemented to solve them.
Understanding the history behind the problem!
The I/O (input/output) system for disk drives that is in use today is still based on the original DOS-BIOS (Disk Operating System - Basic Input/Output System) developed decades ago, although this is about to change. Yes, you read it correctly, DOS-BIOS, but if you're thinking about files systems, especially the NTFS file system that is part of Windows NT/2000/XP and are thinking that this information doesn't apply to you, think again! We're not referring to the operating system and its file system here, we're referring to the I/O system that was designed around a DOS-BIOS.
Figure 1 below shows a layered model of the DOS-BIOS. This Basic I/O system remains largely unchanged from that originally developed by IBM.
DOS-BIOS layered model
Applications that in any manner store or retrieve data, do so in the form of named files. As an example, when a word processing application wishes to save a document, the document is saved as a named file, and when that same application later retrieves the document, it retrieves it as a named file.
File managers, a regular part of the underlying operating system, handle the mapping of named files to locations on the disk drive, issuing read and write commands via the Int 13 (Interrupt 13) API (Application Programming Interface) to store or retrieve those files. When a file is to be written, *the file manager reads the current directory on the disk to determine where the file may be written, adds an entry to the directory for the file, and then writes the file to the disk. When a file is read, the file manager reads the directory to locate the file on the disk and then reads the file. This Int 13 API interface is operating system independent so that the two upper layers (Figure 1) could be MS-DOS® based, Windows® based, Apple® MAC, Linux or some other operating system along with its associated file system.
*Note: Although we will later discuss the finite details of how data is stored on a hard drive, you should be aware that larger files may be broken up and stored in numerous locations on the hard drive rather than in any specific segment. When those large files are later retrieved, the file manager collects all of the various segments or parts of the file, and then provides them as a complete file to the application making the retrieval request.
The BIOS disk services converts the Int 13 API requests into ATA interface requests for the disk drive and then executes the actual data transfer to or from the disk drive.
Let's take look at the ATA interface and the Int 13 API interface in more detail.
The ATA Interface
The ATA interface is a register driven, parallel bus. Today, this is more commonly referred to as Parallel ATA. You will see this used more often as we discuss new technologies such as Serial ATA. To transfer data, the BIOS writes the data to defined register locations in order to set the starting address of the data on the disk and the full length of the data transfer. It then writes either a read or write command to another register location to cause the transfer of data to occur. The data on the disk is usually formatted into 512 byte sectors, and all transfers are an integer number of sectors in length.
Most, if not all, of today's disk drives support both Logical Block Addressing (LBA) and Cylinder Head Sector addressing (CHS), however history shows us that BIOS's have used CHS addressing. With CHS addressing, the starting address for a data transfer is written into 8-bit registers as shown in Figure 2.
|Device / Head|
Understanding ATA address registers can be confusing at best, so take your time and re-read the explanation as necessary. Having a basic understanding of address registers will help you later in our discussions. The disk address is viewed as a number of cylinders, each of which has a specified number of heads. Each head can read or write to a number of sectors on each cylinder.
The cylinder address is a 16-bit value, broken down into two 8-bit segments. The least significant 8-bit segment is defined as the Cylinder Low register, and the most significant 8-bit segment is defined as the Cylinder High register. The head address is a 4-bit value, and is defined in the lower four bits of the Device/Head register. The sector address is an 8-bit value, and is defined in the Sector Number register. It is important to note that the first sector is defined as sector number 1 as no sector 0 (zero) exists.
Theoretically, we should be able to address up to 65,536 cylinders (216), address up to 16 heads (24) and address up to 255 sectors (28-1). Therefore, up to 267,386,880 sectors (65,536 x 16 x 255) can be addressed. At 512 bytes per sector, this yields a maximum theoretical capacity of about 136.9 GB.
With LBA addressing, the 28 available address bits (16 + 8 + 4) are viewed as a single LBA number. Since the value zero is included, up to 268,435,456 sectors (216 x 24 x 28) can be addressed for a maximum capacity of about 137.4 GB. The 137-138GB limitation most system builders face today!
The Int 13 API Interface
The Int 13 API interface is also a register driven interface. The higher layer, noted as the file manager layer in Figure 1, places a data transfer command and the parameters for that command into the host processor registers. This layer then causes an Interrupt 13 which activates the BIOS disk services causing it to execute the transfer. The starting address for the transfer is written into 8-bit registers as shown in Figure 3 immediately below.
|Cylinder High/Sector number|
The Cylinder Low register contains the least significant eight bits of the total 16-bit cylinder address. The Cylinder High/Sector number register contains the two most significant bits of the entire cylinder address in addition to a 6-bit sector number value. The Head number register contains an 8-bit head number.
As noted earlier, up to 1,024 cylinders (210) can be addressed, up to 256 heads (28) can be addressed, and up to 63 sectors (26-1) can be addressed. Essentially, up to 16,515,072 sectors (1,024 x 256 x 63) can be addressed. At 512 bytes per sector, this yields a maximum theoretical capacity of about 8.456 GB. As you will see further on, 8GB happened to be one of the more recent size barriers.
With LBA addressing, the 24 available address bits (10 + 6 + 8) are viewed as a single LBA number. Since the value zero is included, up to 16,777,216 sectors (210x 26 x 28) can be addressed for a maximum capacity of about 8.601 GB.
In our next segment we will dig deeper into each of the various Hard Drive Size Barriers and Limitations.
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-2003 DEW Associates Corporation. All rights reserved.