White Paper
| Subject: |
IDE Hard Drive Capacity Barriers |
| Number: |
63001 |
Revision: |
00 |
Date: |
4 August 1999 |
| Disclaimer: |
This Document is provided as is without any warranty
of any kind, either expressed or implied. In no event will MAXTOR CORPORATION be liable to you
for any damages, including any loss of profit or savings, arising out of the use or inability to
use the information contained in this document. Maxtor Corporation makes no representations or
warranties with respect to the contents hereof and specifically disclaims any implied warranties
of merchantability or fitness for any particular purpose. |
Introduction
Capacity barriers, in reference to installing IDE hard drives, are nothing new to the PC industry.
As higher capacity disk drives emerge in the market, end users have become frustrated when trying
to install these higher capacity drives into systems where the BIOS and/or operating system's do
not support the full capacity of the hard drive.
This paper will describe past, current, and future capacity barriers associated with higher capacity disk drives and describe the solutions being implemented to solve them.
Background
To understand the problem, one must first understand the history. Today's I/O for disk drives is based on the original DOS-BIOS (Disk operating system - Basic Input/Output System). Figure 1 shows the DOS-BIOS as a layered model.
Figure 1 - DOS-BIOS layered model
Application programs deal with data to be stored to or retrieved from the disk as named files. That is, when a word processing application wishes to save a document, the document is saved as a named file. When the application wishes to retrieve the document at a later date, the document is requested as a named file.
The file manager manages the mapping from named files to locations on the disk drive and then issues read and write commands via the Int 13 API to store or retrieve 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 entries 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. The Int 13 API interface is in fact operating system independent so that the two upper layers could be MAC or some other operating system with its associated file system.
The BIOS disk services convert the Int 13 API requests into ATA interface requests for the disk drive and execute the actual data transfer to or from the disk drive.
Let's 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. To transfer data, the BIOS writes to defined register locations to set the starting address of the data on the disk and the length of the data transfer, then writes the command (read or write) to another register location to cause the transfer of disk data to occur. The data on the disk is formatted into 512 byte sectors and all transfers are an integer number of sectors in length.
While today's disk drives support both Logical Block Addressing (LBA) and Cylinder Head Sector addressing (CHS), historically 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.
| Register |
| Cylinder Low |
| Cylinder High |
| Sector Number |
| Device / Head |
Figure 2 - ATA address registers
The disk address is viewed as a number of cylinders each of which has a number of heads. Each head can read or write a number of sectors on each cylinder. The cylinder address is a 16-bit value, the least significant 8-bits of which is defined in the Cylinder Low register and the most significant 8-bits of which is defined in the Cylinder High register. The head address is a 4-bit value which is defined in the lower four bits of the Device/Head register. The sector address is an 8-bit value which is defined in the Sector Number register, however, the first sector is defined as sector number 1. No sector 0 exists.
Therefore, up to 65,536 cylinders (216) can be addressed, up to 16 heads (24) can be addressed, and up to 255 sectors (28-1) can be addressed. This says that 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 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 the command into host processor registers. It then causes an Interrupt 13 which activates the BIOS disk services to execute the transfer. The starting address for the transfer is written into 8-bit registers as shown in figure 3.
| Register |
| Cylinder Low |
| Cylinder High/Sector number |
| Head number |
Figure 3 - Int 13 API address registers
The Cylinder Low register contains the least significant eight bits of the cylinder address. The Cylinder High/Sector number register contains the two most significant bits of the cylinder address plus a 6-bit sector number value. The Head number register contains an 8-bit head number.
Therefore, 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. This says that 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.
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.
Capacity Barriers
The 528 MB boundary
Symptoms
Solutions
Early BIOS's had no idea that the capacity of a disk drive would ever exceed 500 MB. As a result, when translating addresses from the Int 13 API to the ATA registers they simply took the 10-bit cylinder address and placed it into the ATA Cylinder High and Cylinder Low registers always zero filling the upper six bits of the Cylinder High register. They took the 6-bit sector number address and placed it into the ATA Sector Number register always zero filling the upper two bits. Finally, they assumed that the head address never had more than four significant bits so they took the lower four bits and placed them in the ATA Device/Head register.
Therefore, up to 1,024 cylinders (210) could be addressed, up to 16 heads (24) could be addressed, and up to 63 sectors (26-1) could be addressed. Up to 1,032,192 sectors (1,024 x 16 x 63) could be addressed. At 512 bytes per sector, this yields a maximum theoretical capacity of about 528.4 MB. This was the cause of the "528 MB problem".
To overcome this, BIOS's implemented one of two new algorithms for converting the Int 13 API address to the ATA address.
Since at that time many disk drives did not support LBA addressing, the first and most prevalent algorithm was known as Bit Shift Translation. This involved translating the cylinder and head addresses so that the total number of sectors remained the same but the addresses would fit within the register space. Table 1 describes the translations.
Table 1 - Bit shift translation
| ATA cylinder max address |
ATA head max address |
Int 13 cylinder max address |
Int 13 head max address |
Theoretical maximum capacity |
| 1C1,024 |
1H16 |
C=C |
H=H |
528.4 MB |
| 1,024C2048 |
1H16 |
C=C/2 |
H=H*2 |
1.057 GB |
| 2048C4096 |
1H16 |
C=C/4 |
H=H*4 |
2.114 GB |
| 4096C8192 |
1H16 |
C=C/8 |
H=H*8 |
4.228 GB |
| 8192C16384 |
1H16 |
C=C/16 |
H=H*16 |
8.456 GB |
| 16384C32768 |
1H8 |
C=C/32 |
H=H*32 |
8.456 GB |
| 32768C65536 |
1H4 |
C=C/64 |
H=H*64 |
8.456 GB |
For example, if the disk drive reports 16,384 cylinders and 16 heads to the BIOS disk services, the BIOS disk services reports that it has 1,048 cylinders and 256 heads to the upper layers. Note that this yields the same number of total sectors on the disk but the addresses for cylinder and head now fit within the ten bits and eight bits of the Int 13 register fields. The BIOS disk services then translates these values of sixteen and four bits when passing them to the ATA registers. These translations yield the theoretical maximum capacities shown in table 1. The reader should note that if the disk drive cannot be configured with the number of cylinders and heads that fit into one of the translations shown in table 1, the bit shift translation will not work. Also, since the bit shift translation only translates the cylinder and head values, if the number of sectors the drive reports is less than 63, the theoretical maximum capacity cannot be achieved.
The second translation method is the LBA assist translation. This translation can be utilized only if the disk drive supports LBA addressing. With this translation, the BIOS disk services first determines the total number of sectors reported by the disk drive by multiplying the number of cylinders by the number of heads by the number of sectors reported by the drive. It then reports to the upper layers a configuration as shown in table 2.
Table 2 - LBA assist translation
| Total number of sectors reported |
Number of sectors reported |
Number of heads reported |
Number of cylinders reported |
Theoretical maximum capacity |
| 1 X 1,032,192 |
63 |
16 |
X/(63*16) |
528.4 MB |
| 1,032,192 X 2,064,384 |
63 |
32 |
X/(63*32) |
1.057 GB |
| 2,064,384 X 4,128,768 |
63 |
64 |
X/(63*64) |
2.114 GB |
| 4,128,768 X 8,257,536 |
63 |
128 |
X/(63*128) |
4.228 GB |
| 8,257,536 X 16,450,560 |
63 |
255 |
X/(63*255) |
8.422 GB |
With this translation the cylinder, head and sector address values always fit into the Int 13 API registers. When the BIOS disk services get the Int 13 address, it multiplies the three values getting a valid LBA address for the disk drive. It then issues the command to the drive using LBA addressing. Note that this translates the cylinder, head and sector so that the entire capacity of the disk drive can be realized.
The 2.1 GB Barrier
Symptoms
Solutions
This barrier covers two distinct barrier's, hardware and software. First the hardware. In order to solve the 528 MB problems, different BIOS manufactures used different methods to do so. One such solution was to take the top 2 bits from the Int 13h head register and use them for bits 11 and 12 of the cylinder count. In doing this, the maximum head value that could be stored in the remaining 6 bits of the head register was 63 (64 heads total). No operating systems widely used this method of translation. All bits of the head register are now assumed to define the logical head count. In order to properly translate a drive with 4,096 physical cylinders you must divide the cylinder count by four (1,024 logical cylinders) and multiply the head count by four (128 logical heads). But, since some BIOS use the top two bits of the head register as part of the cylinders count, there is no way in which to define 128 heads. BIOS that handle drives in this fashion may hang during POST, in which the BIOS does an Identify Drive command and tries to set the CHS values.
Now the software. The DOS partition limitation is derived from the File Allocation Table (FAT) that DOS uses to keep track of hard disk space. The FAT is only capable of working with 32,768 bytes per cluster and no more than 65,536 clusters. If you multiply the two numbers together you get the maximum partition size that DOS can use of 2,147,483,648 bytes or 2,048 MB (2,147,483,648 / 1,0242).
The 4.2 GB Barrier
Symptoms
Solutions
Unfortunately, some systems store the number of heads reported as an 8-bit value. Hence if the BIOS reports 256 heads, then these systems save only the lower eight bits resulting in a value of zero and the disk drive will not configure. Referring to table 1, this occurs any time the device reports 16 heads and greater than 8,192 cylinders to the Bit Shift translation. Therefore, when the bit shift translation is used with one these operating systems, the maximum capacity that can be configured is 4.2 GB. Note that the LBA assist translation never reports more than 255 heads so the problem does not exist with the LBA assist translation.
The Latest Capacity Barrier
8.4 GB
Symptoms
Solutions
Both LBA translation methods discussed earlier use ID words 1,3 and 6 of the identify drive command. The maximum values for these are 16,383 cylinders, 16 heads and 63 sectors for a capacity of 8.456 GB. To go beyond these boundaries, new extended INT 13 functions have been defined. These new Int 13 functions do not pass the disk drive addressing via the host registers. Instead the address of a Device address packet in host memory is passed. The BIOS disk services then reads this packet to determine the disk address. The address provided in the Device address packet is a 64-bit LBA address. If the disk drive supports LBA addressing the lower 28 bits of this address may be passed directly to the ATA registers. If the device does not support LBA addressing, the host converts the LBA address to a CHS address and places that in the ATA registers. In this way, the entire 136.9 GB capacity addressable via CHS or 137.4 GB addressable via LBA can be unitized over the ATA bus.
The Symptom of Each Barrier
528 MB Barrier
Symptom: The total disk space reported to the operating system will be 528 MB or less.
2.1 GB Barrier
Symptom: System hang occurs when the BIOS has a problem translating the cylinders and heads and locks the system during POST (power on self test).
NOTE: If the user is using an operating
system that uses the FAT 16 file system, multiple partitions will have to be created to obtain the full size of the hard drive.
4.2 GB Barrier
Symptom: System hangs at boot after the creation of partitions on the drive.
8.4 GB Barrier
Symptoms: Since this is a new barrier, not all symptoms may be known at this time.
This a list a known issues when installing drives greater than 8.4 GB:
- The total disk capacity reported to the operating system is 8.4 GB or less.
- System hang occurs when the BIOS has a problem translating the cylinders and heads and
locks the system during POST (power on self test).
- When attempting a format of the drive, errors occur. Usually the operating system
reports that there is bad sectors (trying to recover lost allocation units) on the drive
when in fact the drive is fine.
Solutions
Hardware solution:
Upgrade the system BIOS or use an Enhanced IDE (EIDE) Interface or BIOS
Extender card that provides the correct LBA support for large capacity disk drives.
Software solution:
For those systems that do not provide the LBA BIOS feature, Maxtor has
had a solution since 1993, that is to use the MaxBlast software. Software translation is an effective,
non-conventional means of translating sector addresses of large capacity hard disk drives. Instead of
loading a driver in the start-up files, MaxBlast loads drivers before the operating system is loaded.
The latest version of MaxBlast can be obtained
from Maxtor's Internet site, www.maxtor.com.
Below is a list of BIOS, EIDE interface card manufacturers and operating systems and the capacity range of each:
SYSTEM BIOS
NOTE: The BIOS listed below are all "CORE" BIOS. Even though a BIOS is dated correctly or is the current version, it may not be able to support extended interrupt 13 because of modification done to the "CORE" of the BIOS from the motherboard manufacturer. Sometimes the manufacturer does not consult BIOS manufacturers on updating the BIOS correctly. This sometimes causes extended interrupt 13 to work in-correctly. The result can be either not seeing the full capacity of the drive in FDISK or the drive working fine for any amount of time then data will "wrap around" at the BIOS limit and corrupt the boot sector of drive. If either one of these results may occur if the BIOS CORE has been changed. The motherboard manufacturer needs to be contacted to receive a BIOS upgrade for that specific motherboard. The BIOS manufacturer CORE update will not fix these issues because the of the possible modifications of the motherboard manufacturer.
Phoenix: Version 4 Revision 6 or version 4 Revision 6 or greater can support capacities greater than 8.4 GB. If the BIOS is revision 5.12, it does not support extended interrupt 13. All Phoenix BIOS are Version 4, so 5.12 is an older release than 6. Phoenix recommends
Micro Firmware (877-629-2467) for BIOS upgrades.
Award: BIOS dated after November 1997 will support drives greater than 8.4 GB. Award recommends
Unicore (800-800-2467) for BIOS upgrades.
American Megatrends INC., (AMI): BIOS versions with a date of January 1, 1998 or greater support drives greater than 8.4 GB.
BIOS Upgrades and Controller Cards
BIOS upgrades can either be a controller card, a EPROM chip or a card with just the BIOS on it. The cards, when set up correctly, are able to override the current BIOS of the computer and large capacity hard disk drives.
Micro Firmware: (877-629-2467) Micro Firmware creates 3 types of upgrades: an EPROM, a flash BIOS software and a controller card. Product purchased from Micro Firmware starting January 1, 1998 and greater will support extended interrupt 13. Existing customers should contact Micro Firmware regarding flash BIOS upgrades.
Operating Systems
NOTE: Even though an operating system supports drives greater than 8.4 GB, the computer may still not support the larger drive. In this case a user must use MaxBlast (included with retail kits or can be downloaded from Maxtor's Internet site, www.maxtor.com) or purchase a controller card that supports extended interrupt 13. Some operating systems also have limits on partition size. The user may need to make multiple partitions on the drive to receive its full capacity.
DOS 6.22 or Less: DOS 6.22 or less does not support drives greater 8.4 GB. There are no solutions at this time.
Windows 95: Windows 95 version A (standard version) does support extended interrupt 13 so it can support drives with capacities greater than 8.4 GB. Because of the limitations of the FAT 16 file system, a minimum of five partitions will need to be created on the hard drive. This is caused by the 2.048 GB partition limitation of a FAT 16 Operating System. Partition quantities will increase as the hard drive's capacity increases (e.g., an 11 GB hard drive WILL require a minimum of six partitions).
NOTE: The Windows 95 Upgrade is NOT considered a standard version. It requires that MS-DOS or Windows 3.1x be installed. This means that a Windows Upgrade will NOT support drive capacities greater than 8.4 GB.
Windows 95B / OSR2, Windows 95C and Windows 98: Windows 95B (OSR2), Windows 95C and Windows 98
does support extended interrupt 13 which allows the operating system to support drives larger than 8.4 GB.
These operating systems also support FAT 32. This file system lets the user create partitions larger than
2.048 GB. FAT 32 can only be used on hard drives whose capacity exceeds 512 megabytes.
Windows NT 3.51: Windows NT 3.51 does not support drives greater than 8.4 GB.
Windows NT 4.0: Windows NT 4.0 WILL support drive capacities greater than
8.4 GB provided:
- NT 4.0 Service Pack 3 is used along with the ATAPI.SYS file linked to in
Article # Q183654
on the Microsoft Website.
- The system is upgraded to NT 4.0 Service Pack 4 (or greater).
NOTE: Reference
Article # Q197667
"Installing Windows NT Server on a Large IDE Hard Disk" for proper installation/upgrade
procedures.
OS/2 Warp 3 and 4: Some versions are limited to a boot partition size of 3.1 GB or 4.3 GB.
This issue can be resolved by obtaining the latest Device Driver Pack from
IBM.
Novell NetWare: Currently, Novell NetWare versions 5 and 4.11 will support drive capacities
greater than 8.4 GB. This is accomplished with the following drivers:
- IDEATA.HAM (Host Adapter Module) dated 8-25-98
- IDEHD.CDM (Custom Device Module) dated 8-5-98
NOTE: It is not known if Novell intends
to develop driver updates for earlier versions of NetWare. Customers
will need to contact either a Novell Authorized Reseller or Novell
directly for further information on driver updates and support for
older NetWare versions. Reference "Q&A
- Novell NetWare" for further information. Users can also
obtain more in-depth information on Novell NetWare at: http://www.novell.com/
Red Hat Linux 5.2: Red Hat Linux will support hard drive capacities greater than
8.4 GB provided:
- Linux Kernel version 2.0.35 is used
- LILO resides in the first 1023 cylinders of the primary master hard drive.
- The /root partition must reside in the first 8.4 GB of the primary master hard drive.
The /root partition CANNOT exceed 8.4 GB.
NOTE: Reference "
Q&A - Red Hat Linux and IDE/EIDE Hard Drives" for further
information. Users can also obtain more in-depth information on Linux
at: http://www.redhat.com/
Return To Previous Page