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 boundarySymptoms
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 Plus 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 Plus loads drivers before the
operating system is loaded. The latest version of MaxBlast
Plus 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
Plus (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