ATA Drive Capacity Limitations


ATA interface versions up through ATA-5 suffered from a drive capacity limitation of about 137GB (billion bytes). Depending on the BIOS used, this limitation can be further reduced to 8.4GB, or even as low as 528MB (million bytes). This is due to limitations in both the BIOS and the ATA interface, which when combined create even further limitations. To understand these limits, you have to look at the BIOS (software) and ATA (hardware) interfaces together.

Note

In addition to the BIOS/ATA limitations discussed in this section, various operating system limitations also exist. These are described later in this chapter.


The limitations when dealing with ATA drives are those of the ATA interface itself as well as the BIOS interface used to talk to the drive. A summary of the limitations is shown in Table 7.13.

Table 7.13. ATA/IDE Capacity Limitations for Various Sector Addressing Methods

Sector Addressing Method

Total Sectors Calculation

Max. Total Sectors

Maximum Capacity (Bytes)

Capacity (Decimal)

Capacity (Binary)

CHS: BIOS w/o TL

1024x16x63

1,032,192

528,482,304

528.48MB

504.00MiB

CHS: BIOS w/bit-shift TL

1024x240x63

15,482,880

7,927,234,560

7.93GB

7.38GiB

CHS: BIOS w/LBA-assist TL

1024x255x63

16,450,560

8,422,686,720

8.42GB

7.84GiB

CHS: BIOS INT13h

1024x256x63

16,515,072

8,455,716,864

8.46GB

7.88GiB

CHS: ATA-1/ATA-5

65536x16x255

267,386,880

136,902,082,560

136.90GB

127.50GiB

LBA: ATA-1/ATA-5

228

268,435,456

137,438,953,472

137.44GB

128.00GiB

LBA: ATA-6+

248

281,474,976,710,655

144,115,188,075,855,872

144.12PB

128.00PiB

LBA: EDD BIOS

264

18,446,744,073,709,551,616

9,444,732,965,739,290,427,392

9.44ZB

8.00ZiB

BIOS = Basic input output system

ATA = AT Attachment (IDE)

CHS = Cylinder head sector

LBA = Logical block (sector) address

w/ = with

w/o = without

TL = Translation

INT13h = Interrupt 13 hex

EDD = Enhanced Disk Drive specification (Phoenix/ATA)

MB = megabyte (million bytes)

MiB = mebibyte

GB = gigabyte (billion bytes)

GiB = gibibyte

PB = petabyte (quadrillion bytes)

PiB = pebibyte

ZB = zettabyte (sextillion bytes)

ZiB = zebibyte


This section details the differences between the various sector addressing methods and the limitations incurred by using them.

Prefixes for Decimal and Binary Multiples

Many readers are unfamiliar with the MiB (mebibyte), GiB (gibibyte), and so on designations I am using in this section and throughout the book. These are part of a standard designed to eliminate confusion between decimal- and binary-based multiples, especially in computer systems. Standard SI (system international or metric system) units are based on multiples of 10. This worked well for most things, but not for computers, which operate in a binary world where most numbers are based on powers of 2. This has resulted in different meanings being assigned to the same prefixfor example 1KB (kilobyte) could mean either 1,000 (103) bytes or 1,024 (210) bytes. To eliminate confusion, in December 1998 the International Electrotechnical Commission (IEC) approved as an international standard the prefix names and symbols for binary multiples used in data processing and transmission. Some of these prefixes are shown in Table 7.14.

Table 7.14. Standard Prefix Names and Symbols for Decimal and Binary Multiples

Decimal Prefixes:

Binary Prefixes:

Factor

Symbol

Name

Value

Factor

Symbol

Name

Derivation

Value

103

k

Kilo

1,000

210

Ki

Kibi

Kilobinary

1,024

106

M

Mega

1,000,000

220

Mi

Mebi

Megabinary

1,048,576

109

G

Giga

1,000,000,000

230

Gi

Gibi

Gigabinary

1,073,741,824

1012

T

Tera

1,000,000,000,000

240

Ti

Tebi

Terabinary

1,099,511,627,776

1015

P

Peta

1,000,000,000,000,000

250

Pi

Pebi

Petabinary

1,125,899,906,842,624

1018

E

Exa

1,000,000,000,000,000,000

260

Ei

Exbi

Exabinary

1,152,921,504,606,846,976

1021

Z

Zetta

1,000,000,000,000,000,000,000

270

Zi

Zebi

Zettabinary

1,180,591,620,717,411,303,424

Note that the symbol for kilo (k) is in lowercase (which is technically correct according to the SI standard), whereas all other decimal prefixes are uppercase.


Under this standard terminology, an MB (megabyte) would be 1,000,000 bytes, whereas an MiB (mebibyte) would be 1,048,576 bytes.

Note

For more information on these industry-standard decimal and binary prefixes, check out the National Institute for Standards and Technology (NIST) website at physics.nist.gov/cuu/Units/prefixes.html.


BIOS Limitations

Motherboard ROM BIOSs have been updated throughout the years to support larger and larger drives. Table 7.15 shows the most important relative dates when drive capacity limits were changed.

Table 7.15. Dates of Changes to Drive Capacity Limitations in the ROM BIOS

BIOS Date

Capacity Limit

August 1994

528MB

January 1998

8.4GB

September 2002

137GB


These are when the limits were broken, such that BIOSs older than August 1994 are generally limited to drives of up to 528MB, whereas BIOSs older than January 1998 are generally limited to 8.4GB. Most BIOSs dated 1998 or newer support drives up to 137GB, and those dated September 2002 or newer should support drives larger than 137GB. These are only general guidelines, though; to accurately determine this for a specific system, you should check with your motherboard manufacturer. You can also use the BIOS Wizard utility from http://www.unicore.com/bioswiz/index2.html, which will tell you the BIOS date from your system and specifically whether your system supports the Enhanced Hard Disk Drive specification (which means drives over 8.4GB).

If your BIOS does not support EDD (drives over 8.4GB), the three possible solutions are

  • Upgrade your motherboard BIOS to a 1998 or newer version that supports >8.4GB.

  • Install a BIOS upgrade card, such as the Ultra ATA 133 PCI card from www.maxstore.com.

  • Install a software patch to add >8.4GB support.

Of these, the first one is the most desirable because it is usually free. Visit your motherboard manufacturer's website to see whether it has any newer BIOSs available for your motherboard that will support large drives. If it doesn't, the next best thing is to use a card such as the LBA Pro card from eSupport.com or the Ultra ATA 133 PCI card from Maxtor. I almost never recommend the last solution because it merely installs a software patch in the boot sector area of the hard drive, which can result in numerous problems when booting from different drives, installing new drives, or recovering data.

CHS Versus LBA

There are two primary methods to address (or number) sectors on an ATA drive. The first method is called CHS (cylinder head sector) after the three respective coordinate numbers used to address each sector of the drive. The second method is called LBA (logical block address) and uses a single number to address each sector on a drive. CHS was derived from the physical way drives were constructed (and is how they work internally), whereas LBA evolved as a simpler and more logical way to number the sectors regardless of the internal physical construction.

For more information on cylinders, heads, and sectors as they are used internally within the drive, see "Hard Disk Drive Operation," p. 628.


When reading a drive sequentially in CHS mode, the process starts with cylinder 0, head 0, and sector 1 (which is the first sector on the disk). Next, all the remaining sectors on that first track are read; then the next head is selected; and then all the sectors on that track are readand so on until all the heads on the first cylinder are read. Then the next cylinder is selected, and the sequence starts again. Think of CHS as an odometer of sorts: The sector numbers must roll over before the head number can change, and the head numbers must roll over before the cylinder can change.

When reading a drive sequentially in LBA mode, the process starts with sector 0, then read 1, then 2, and so on. The first sector on the drive in CHS mode would be 0,0,1, and the same sector in LBA mode would be 0.

As an example, imagine a drive with one platter, two heads (both sides of the platter are used), two tracks on each platter (cylinders), and two sectors on each track. We would say the drive has two cylinders (tracks per side), two heads (sides), and two sectors per track. This would result in a total capacity of eight (2x2x2) sectors. Noting that cylinders and heads begin numbering from 0whereas physical sectors on a track number from 1using CHS addressing, we would say the first sector on the drive is cylinder 0, head 0, sector 1 (0,0,1); the second sector is 0,0,2; the third sector is 0,1,1; the fourth sector is 0,1,2; and so on until we get to the last sector, which would be 1,1,2.

Now imagine that we could take the eight sectors and, rather than refer directly to the physical cylinder, head, and sector, number the sectors in order from 0 to 7. Thus, if we wanted to address the fourth sector on the drive, we could reference it as sector 0,1,2 in CHS mode or as sector 3 in LBA mode. Table 7.16 shows the correspondence between CHS and LBA sector numbers for this eight-sector imaginary drive.

Table 7.16. CHS and LBA Sector Numbers for an Imaginary Drive with Two Cylinders, Two Heads, and Two Sectors per Track (Eight Sectors Total)

Mode

Equivalent Sector Numbers

CHS:

0,0,1

0,0,2

0,1,1

0,1,2

1,0,1

1,0,2

1,1,1

1,1,2

LBA:

0

1

2

3

4

5

6

7


As you can see from this example, using LBA numbers is simpler and generally easier to handle; however, when the PC was first developed, all BIOS and ATA drive-level addressing was done using CHS addressing.

CHS/LBA and LBA/CHS Conversions

You can address the same sectors in either CHS or LBA mode. The conversion from CHS to LBA is always consistent in that for a given drive, a particular CHS address always converts to a given LBA address, and vice versa. The ATA-1 document specifies a simple formula that can be used to convert CHS parameters to LBA:

LBA = (((CxHPC) + H)xSPT) + S - 1

By reversing this formula, you can convert the other waythat is, from LBA back to CHS:

C = int (LBA / SPT / HPC)

H = int ((LBA / SPT) mod HPC)

S = (LBA mod SPT) + 1

For these formulae, the abbreviations are defined as follows:

LBA = Logical block address

C = Cylinder

H = Head

S = Sector

HPC = Heads per cylinder (total number of heads)

SPT = Sectors per track

int X = Integer portion of X

X mod Y = Modulus (remainder) of X/Y

Using these formulas you can calculate the LBA for any given CHS address, and vice versa. Given a drive of 16,383 cylinders, 16 heads, and 63 sectors per track, Table 7.17 shows the equivalent CHS and LBA addresses.

Table 7.17. Equivalent CHS and LBA Sector Numbers for a Drive with 16,383 Cylinders, 16 Heads, and 63 Sectors per Track (16,514,064 Sectors Total)

Cylinder

Head

Sector

LBA

0

0

1

0

0

0

63

62

0

1

0

63

999

15

63

1,007,999

1,000

0

1

1,008,000

9,999

15

63

10,079,999

10,000

0

1

10,080,000

16,382

15

63

16,514,063


BIOS Commands Versus ATA Commands

In addition to the two methods of sector addressing (CHS or LBA), there are two levels of interface where sector addressing occurs. One interface is where the operating system talks to the BIOS (using BIOS commands); the other is where the BIOS talks to the drive (using ATA commands). The specific commands at these levels are different, but both support CHS and LBA modes. Figure 7.13 illustrates the two interface levels.

Figure 7.13. The relationship between BIOS and physical sector addressing. (In this figure, L-CHS stands for Logical CHS and P-CHS stands for Physical CHS.)


When the operating system talks to the BIOS to read or write sectors, it issues commands via software interrupt (not the same as an IRQ) INT13h, which is how the BIOS subroutines for disk access are called. Various INT13h subfunctions allow sectors to be read or written using either CHS or LBA addressing. The BIOS routines then convert the BIOS commands into ATA hardware-level commands, which are sent over the bus I/O ports to the drive controller. Commands at the ATA hardware level can also use either CHS or LBA addressing, although the limitations are different. Whether your BIOS and drive use CHS or LBA addressing depends on the drive capacity, age of the BIOS and drive, BIOS Setup settings used, and operating system used.

CHS Limitations (the 528MB Barrier)

The original BIOS-based driver for hard disks is accessed via software interrupt 13h (13 hex) and offers functions for reading and writing drives at the sector level. Standard INT13h functions require that a particular sector be addressed by its cylinder, head, and sector locationotherwise known as CHS addressing. This interface is used by the operating system and low-level disk utilities to access the drive. IBM originally wrote the INT13h interface for the BIOS on the PC XT hard disk controller in 1983, and in 1984, incorporated it into the AT motherboard BIOS. This interface used numbers to define the particular cylinder, head, and sector being addressed. Table 7.18, which shows the standard INT13h BIOS CHS parameter limits, includes the maximum values for these numbers.

Table 7.18. INT13h BIOS CHS Parameter Limits

Field

Field Size

Maximum Value

Range

Total Usable

Cylinder

10 bits

1024

01023

1024

Head

8 bits

256

0255

256

Sector

6 bits

64

163

63


The concept of a maximum value given a number of digits is simple: If you had, for example, a hotel with two-digit decimal room numbers, you could have only 100 (102) rooms, numbered 099. The CHS numbers used by the standard BIOS INT13h interface are binary, and with a 10-bit number being used to count cylinders, you can have only 1,024 (210) maximum, numbered 01023. Because the head is identified by an 8-bit number, the maximum number of heads is 256 (28), numbered 0255. Finally, with sectors per track there is a minor difference. Sectors on a track are identified by a 6-bit number, which would normally allow a maximum of 64 (26) sectors; however, because sectors are numbered starting with 1 (instead of 0), the range is limited to 163, which means a total of 63 sectors per track is the maximum the BIOS can handle.

These BIOS limitations are true for all BIOS versions or programs that rely on CHS addressing. Using the maximum numbers possible for CHS at the BIOS level, you can address a drive with 1,024 cylinders, 256 heads, and 63 sectors per track. Because each sector is 512 bytes, the math works out as follows:

                Max. Values ---------------------------     Cylinders         1,024         Heads           256 Sectors/Track            63 =========================== Total Sectors    16,515,072 --------------------------- Total Bytes   8,455,716,864 Megabytes (MB)        8,456 Mebibytes (MiB)       8,064 Gigabytes (GB)          8.4 Gibibytes (GiB)         7.8 


From these calculations, you can see that the maximum capacity drive addressable via the standard BIOS INT13h interface is about 8.4GB (where GB equals roughly 1 billion bytes), or 7.8GiB (where GiB means gigabinarybytes).

Unfortunately, the BIOS INT13h limits are not the only limitations that apply. Limits also exist in the ATA interface itself. The ATA CHS limits are shown in Table 7.19.

Table 7.19. Standard ATA CHS Parameter Limitations

Field

Field Size

Maximum Value

Range

Total Usable

Cylinder

16 bits

65536

065535

65536

Head

4 bits

16

015

16

Sector

8 bits

256

1255

255


As you can see, the ATA interface uses different sized fields to store CHS values. Note that the ATA limits are higher than the BIOS limits for cylinders and sectors but lower than the BIOS limit for heads. The CHS limits for capacity according to the ATA-1 through ATA-5 specification are as follows:

                  Max. Values -----------------------------     Cylinders          65,536         Heads              16 Sectors/Track             255 ============================= Total Sectors     267,386,880 ----------------------------- Total Bytes   136,902,082,560 Megabytes (MB)        136,902 Mebibytes (MiB)       130,560 Gigabytes (GB)          136.9 Gibibytes (GiB)         127.5 


When you combine the limitations of the BIOS and ATA CHS parameters, you end up with the situation shown in Table 7.20.

Table 7.20. Combined BIOS and ATA CHS Parameter Limits

Field

BIOS CHS Parameter Limits

ATA CHS Parameter Limits

Combined CHS Parameter Limits

Cylinder

1,024

65,536

1,024

Head

256

16

16

Sector

63

255

63

Total Sectors

16,515,072

267,386,880

1,032,192

Maximum Capacity

8.4GB

136.9GB

528MB


As you can see, the lowest common denominator of the combined CHS limits results in maximum usable parameters of 1,024 cylinders, 16 heads, and 63 sectors, which results in a maximum drive capacity of 528MB. This became known as the 528MB barrier (also called the 504MiB barrier), and it affects virtually all PCs built in 1993 or earlier.

CHS Translation (Breaking the 528MB Barrier)

Having a barrier limiting drive capacity to 528MB or less wasn't a problem when the largest drives available were smaller than that. But by 1994, drive technology had developed such that making drives larger than what the combined BIOS and ATA limitations could address was possible. Clearly a fix for the problem was needed.

Starting in 1993, the BIOS developer Phoenix Technologies began working on BIOS extensions to work around the combined CHS limits. In January 1994, it released the BIOS Enhanced Disk Drive (EDD) Specification, which was later republished by the T13 committee (also responsible for ATA) as "BIOS Enhanced Disk Drive Services (EDD)." The EDD documents detail several methods for circumventing the limitations of previous BIOSs without causing compatibility problems with existing software. These include

  • BIOS INT13h extensions supporting 64-bit LBA

  • Bit-shift geometric CHS translation

  • LBA-assist geometric CHS translation

The method for dealing with the CHS problem was called translation because it enabled additional subroutines in the BIOS to translate CHS parameters from ATA maximums to BIOS maximums (and vice versa). In an effort to make its methods standard among the entire PC industry, Phoenix released the EDD document publicly and allowed the technology to be used free of charge, even among its competitors such as AMI and Award. The T13 committee in charge of ATA subsequently adopted the EDD standard and incorporated it into official ATA documents.

Starting in 1994, most BIOSs began implementing the Phoenix-designed CHS translation methods, which enabled drives up to the BIOS limit of 8.4GB to be supported. The fix involved what is termed parameter translation at the BIOS level, which adapted or translated the cylinder, head, and sector numbers to fit within the allowable BIOS parameters. There are two types of translation: One works via a technique called CHS bit-shift (usually called "Large" or "Extended CHS" in the BIOS Setup), and the other uses a technique called LBA-assist (usually called "LBA" in the BIOS Setup). These refer to the different mathematical methods of doing essentially the same thing: converting one set of CHS numbers to another.

CHS bit-shift translation manipulates the cylinder and head numbers but does not change the sector number. It begins with the physical (drive reported) cylinders and heads and, using some simple division and multiplication, comes up with altered numbers for the cylinders and heads. The sectors per track value is not translated and is passed unaltered. The term bit-shift is used because the division and multiplication math is actually done in the BIOS software by shifting bits in the CHS address.

With CHS bit-shift translation, the drive reported (physical) parameters are referred to as P-CHS and the BIOS altered logical parameters are referred to as L-CHS. After the settings are made in the BIOS Setup, L-CHS addresses are automatically translated to P-CHS at the BIOS level. This enables the operating system to send commands to the BIOS using L-CHS parameters, which the BIOS automatically converts to P-CHS when it talks to the drive using ATA commands. Table 7.21 shows the rules for calculating CHS bit-shift translation.

Table 7.21. CHS Bit-Shift Translation Rules

Physical (Drive Reported) Cylinders

Physical Heads

Logical Cylinders

Logical Heads

Max. Capacity

1 < C <= 1,024

1 < H <= 16

C = C

H = H

528MB

1,024 < C <= 2,048

1 < H <= 16

C = C/2

H = Hx2

1GB

2,048 < C <= 4,096

1 < H <= 16

C = C/4

H = Hx4

2.1GB

4,096 < C <= 8,192

1 < H <= 16

C = C/8

H = Hx8

4.2GB

8,192 < C <= 16,384

1 < H <= 16

C = C/16

H = Hx16

8.4GB

The drive reported sector count is not translated.

The logical heads value can't exceed 255 with some operating systems, such as DOS/Win9x/Me.


CHS bit-shift translation is based on dividing the physical cylinder count by a power of 2 to bring it under the 1,024 cylinder BIOS INT13h limit and then multiplying the heads by the same power of 2, leaving the sector count unchanged. The power of 2 used depends on the cylinder count, as indicated in Table 7.21.

Here is an example of CHS bit-shift translation:

                                     Bit-shift                           P-CHS          L-CHS                      Parameters     Parameters ----------------------------------------------        Cylinders          8,000          1,000            Heads             16            128    Sectors/Track             63             63 ==============================================    Total Sectors      8,064,000      8,064,000 ----------------------------------------------      Total Bytes  4,128,768,000  4,128,768,000   Megabytes (MB)          4,129          4,129  Mebibytes (MiB)          3,938          3,938   Gigabytes (GB)           4.13           4.13  Gibibytes (GiB)           3.85           3.85 


This example shows a drive with 8,000 cylinders and 16 heads. The physical cylinder count is way above the BIOS limit of 1,024, so if CHS bit-shift translation is selected in the BIOS Setup, the BIOS then divides the cylinder count by 2, 4, 8, or 16 to bring it below 1,024. In this case it would divide by 8, which results in a new logical cylinder count of 1,000which is below the 1,024 maximum. Because the cylinder count is divided by 8, the head count is then multiplied by the same number, resulting in 128 logical heads, which is also below the limit the BIOS can handle.

So, although the drive reports having 8,000 cylinders and 16 heads, the BIOS and all software (including the operating system) instead see the drive as having 1,000 cylinders and 128 heads. Note that the 63 sectors/track figure is simply carried over without change. The result is that by using the logical parameters, the BIOS can see the entire 4.13GB drive and won't be limited to just the first 528MB.

When you install a drive, you don't have to perform the translation math to convert the cylinders and heads; the BIOS does that for you automatically. All you have to do is allow the BIOS to autodetect the P-CHS parameters and then enable the translation in the BIOS Setup. Selecting Large or ECHS translation in the BIOS Setup enables the CHS bit-shift. The BIOS does the rest of the work for you.

CHS bit-shift is a simple and fast (code-wise) scheme that can work with all drives, but unfortunately it can't properly translate all theoretically possible drive geometries for drives under 8.4GB. To solve this, an addendum was added to the ATA-2 specification to specifically require drives to report certain ranges of geometries to allow bit-shift translation to work. Thus, all drives that conform to the ATA-2 specification (or higher) can be translated using this method.

The 2.1GB Barrier

Some BIOSs incorrectly allocated only 12 bits for the P-CHS cylinder field, thereby allowing a maximum of 4,096 cylinders. Combined with the standard 16-head and 63-sector limits, this resulted in the inability to support any drives over 2.1GB in capacity. Fortunately, this BIOS defect affected only a limited number of systems with BIOS dates prior to about mid-1996.

The 4.2GB Barrier

Even so, some problems still existed with bit-shift translation. Because of the way DOS and Windows 9x/Me were written, they could not properly handle a drive with 256 heads. This was a problem for drives larger than 4.2GB because the CHS bit-shift translation rules typically resulted in 256 heads as a logical value, as seen in the following example:

                                     Bit-shift                           P-CHS          L-CHS                      Parameters     Parameters ----------------------------------------------        Cylinders         12,000            750            Heads             16            256    Sectors/Track             63             63 ==============================================    Total Sectors     12,096,000     12,096,000 ----------------------------------------------      Total Bytes  6,193,152,000  6,193,152,000   Megabytes (MB)          6,193          6,193  Mebibytes (MiB)          5,906          5,906   Gigabytes (GB)           6.19           6.19  Gibibytes (GiB)           5.77           5.77 


This scheme failed when you tried to install Windows 9x/Me (or DOS) on a drive larger than 4.2GB because the L-CHS parameters included 256 heads. Any BIOS that implemented this scheme essentially had a 4.2GB barrier, so installing a drive larger than that and selecting CHS bit-shift translation caused the drive to fail. Note that this was not a problem for Windows NT/2000/XP.

Note

It is interesting to note that the BIOS is not actually at fault here; the problem instead lies with the DOS/Win9x/Me file system code, which stores the sector per track number as an 8-bit value. The number 256 causes a problem because 256 = 100000000b, which takes 9 bits to store. The value 255 = 11111111b is the largest value that can fit in an 8-bit binary register and is therefore the maximum number of heads those operating systems can support.


To solve this problem, CHS bit-shift translation was revised by adding a rule such that if the drive reported 16 heads and more than 8,192 cylinders (which would result in a 256-head translation), the P-CHS head value would be assumed to be 15 (instead of 16) and the P-CHS cylinder value would be multiplied by 16/15 to compensate. These adjusted cylinder and head values would then be translated. The following example shows the results:

                                     Bit-shift   Revised Bit-                           P-CHS          L-CHS    shift L-CHS                      Parameters     Parameters     Parameters -------------------------------------------------------------        Cylinders         12,000            750            800            Heads             16            256            240    Sectors/Track             63             63             63 =============================================================    Total Sectors     12,096,000     12,096,000     12,096,000 -------------------------------------------------------------      Total Bytes  6,193,152,000  6,193,152,000  6,193,152,000   Megabytes (MB)          6,193          6,193          6,193  Mebibytes (MiB)          5,906          5,906          5,906   Gigabytes (GB)           6.19           6.19           6.19  Gibibytes (GiB)           5.77           5.77           5.77 


As you can see from this example, a drive with 12,000 cylinders and 16 heads translates to 750 cylinders and 256 heads using the standard CHS bit-shift scheme. The revised CHS bit-shift scheme rule does a double translation in this case, first changing the 16 heads to 15 and then multiplying the 12,000 cylinders by 16/15, resulting in 12,800 cylinders. Then, the new cylinder value is CHS bit-shift translated by dividing it by 16, resulting in 800 logical cylinders. Likewise, the 15 heads are multiplied by 16, resulting in 240 logical heads. If the logical cylinder count calculates to over 1,024 then it is truncated to 1,024. In this case, what started out as 12,000 cylinders and 16 heads P-CHS becomes 800 cylinders and 240 heads (instead of 750 cylinders and 256 heads) L-CHS, which works around the bug in the DOS/Win9x/Me operating systems.

So far, all my examples have been very cleanthat is, the L-CHS parameters have calculated to the same capacity as the P-CHS parameters. Unfortunately, it doesn't always work out that way. The following example shows a more typical example in the real world. Several 8.4GB drives from Maxtor, Quantum, Seagate, and others report 16,383 cylinders and 16 heads P-CHS. For those drives, the translations would work out as follows:

                                     Bit-shift   Revised Bit-                           P-CHS          L-CHS    shift L-CHS                      Parameters     Parameters     Parameters -------------------------------------------------------------        Cylinders         16,383          1,023          1,024            Heads             16            256            240    Sectors/Track             63             63             63 =============================================================    Total Sectors     16,514,064     16,498,944     15,482,880 -------------------------------------------------------------      Total Bytes  8,455,200,768  8,447,459,328  7,927,234,560   Megabytes (MB)          8,455          8,447          7,927  Mebibytes (MiB)          8,064          8,056          7,560   Gigabytes (GB)           8.46           8.45           7.93  Gibibytes (GiB)           7.87           7.87           7.38 


Note that the revised CHS bit-shift translation rules result in supporting only 7.93GB of the 8.46GB total on the drive. In fact, the parameters shown (with 240 heads) are the absolute maximum that revised CHS bit-shift supports. Fortunately, another translation mode is available that improves this situation.

LBA-Assist Translation

The LBA-assist translation method places no artificial limits on the reported drive geometries, but it works only on drives that support LBA addressing at the ATA interface level. Fortunately, though, virtually all ATA drives larger than 2GB support LBA. LBA-assist translation takes the CHS parameters the drive reports, multiplies them together to get a calculated LBA maximum value (total number of sectors), and then uses this calculated LBA number to derive the translated CHS parameters. Table 7.22 shows the rules for LBA-assist translation.

Table 7.22. LBA-Assist Translation Rules

Total Sectors

Logical Cylinders

Logical Heads

Logical Sectors

1 < T <= 1,032,192

T/1,008

16

63

1,032,192 < T <= 2,064,384

T/2,016

32

63

2,064,384 < T <= 4,128,768

T/4,032

64

63

4,128,768 < T <= 8,257,536

T/8,064

128

63

8,257,536 < T <= 16,450,560

T/16,065

255

63

T = Total sectors, calculated by multiplying the drive-reported P-CHS parameters (CxHxS)


LBA-assist translation fixes the sectors at 63 no matter what and divides and multiplies the cylinders and heads by predetermined values depending on the total number of sectors. This results in a set of L-CHS parameters the operating system uses to communicate with the BIOS. The L-CHS numbers are then translated to LBA numbers at the ATA interface level. Because LBA mode is more flexible at translating, it should be used in most cases instead of CHS bit-shift.

Normally, both the CHS bit-shift and LBA-assist translations generate the same L-CHS geometry for a given drive. This should always be true if the drive reports 63 sectors per track and 4, 8, or 16 heads. In the following example both translation schemes result in identical L-CHS values:

                                  Revised bit-     LBA-assist                           P-CHS    shift L-CHS          L-CHS                      Parameters     Parameters     Parameters -------------------------------------------------------------        Cylinders          8,192          1,024          1,024            Heads             16            128            128    Sectors/Track             63             63             63 =============================================================    Total Sectors      8,257,536      8,257,536      8,257,536 -------------------------------------------------------------      Total Bytes  4,227,858,432  4,227,858,432  4,227,858,432   Megabytes (MB)          4,228          4,228          4,228  Mebibytes (MiB)          4,032          4,032          4,032   Gigabytes (GB)           4.23           4.23           4.23  Gibibytes (GiB)           3.94           3.94           3.94 


However, if the drive reports a value other than 63 sectors per track or has other than 4, 8, or 16 heads, LBA-assist translation does not result in the same parameters as CHS bit-shift translation. In the following example, different translations result:

                                  Revised bit-     LBA-assist                           P-CHS    shift L-CHS          L-CHS                      Parameters     Parameters     Parameters -------------------------------------------------------------        Cylinders         16,383          1,024          1,024            Heads             16            240            255    Sectors/Track             63             63             63 =============================================================    Total Sectors     16,514,064     15,482,880     16,450,560 -------------------------------------------------------------      Total Bytes  8,455,200,768  7,927,234,560  8,422,686,720   Megabytes (MB)          8,455          7,927          8,423  Mebibytes (MiB)          8,064          7,560          8,033   Gigabytes (GB)           8.46           7.93           8.42  Gibibytes (GiB)           7.87           7.38           7.84 


The LBA-assist translation supports 8.42GB, which is nearly 500MB more than the revised CHS bit-shift translation. More importantly, these translations are different, which can result in problems if you change translation modes with data on the drive. If you were to set up and format a drive using CHS bit-shift translation and then change to LBA-assist translation, the interpreted geometry could change and the drive could then become unreadable until it is repartitioned and reformatted (which would destroy all the data). Bottom line: After you select a translation method, don't plan on changing it unless you have your data securely backed up.

Virtually all PC BIOSs since 1994 have translation capability in the BIOS Setup, and virtually all offer both translation modes as well as an option to disable translation entirely. If both CHS bit-shift and LBA-assist translation modes are offered, you should probably choose the LBA method of translation because it is the more efficient and flexible of the two. LBA-assist translation also gets around the 4.2GB operating system bug because it is designed to allow a maximum of 255 logical heads no matter what.

You usually can tell whether your BIOS supports translation by the capability to specify more than 1,024 cylinders in the BIOS Setup, although this can be misleading. The best clue is to look for the translation setting parameters in the ATA/IDE drive setup page in the BIOS Setup. See Chapter 5, "BIOS," for more information on how to enter the BIOS Setup on your system. If you see drive-related settings, such as LBA or ECHS (sometimes called Large or Extended), these are telltale signs of a BIOS with translation support. Most BIOSs with a date of 1994 or later include this capability, although some AMI BIOS versions from the mid-1990s locate the LBA setting on a screen different from the hard drive configuration screen. If your system currently does not support parameter translation, you might be able to get an upgrade from your motherboard manufacturer or install a BIOS upgrade card with this capability, such as the LBA Pro card from eSupport.com.

Table 7.23 summarizes the four ways today's BIOSs can handle addressing sectors on the drive: Standard CHS (no translation), Extended CHS translation, LBA translation, and pure LBA addressing.

Table 7.23. Drive Sector Addressing Methods

BIOS Mode

OS to BIOS

BIOS to Drive

Standard (Normal) - No Translation

P-CHS

P-CHS

CHS Bit-Shift (ECHS) Translation

L-CHS

P-CHS

LBA-Assist (LBA) Translation

L-CHS

LBA

Pure LBA (EDD BIOS)

LBA

LBA


In Standard CHS, there is only one possible translation step internal to the drive. The drive's actual physical geometry is completely invisible from the outside with all zoned recorded ATA drives today. The cylinders, heads, and sectors printed on the label for use in the BIOS Setup are purely logical geometry and do not represent the actual physical parameters. Standard CHS addressing is limited to 16 heads and 1,024 cylinders, which provides a limit of 504MiB (528MB).

This is often called "Normal" in the BIOS Setup and causes the BIOS to behave like an old-fashioned one without translation. Use this setting if your drive has fewer than 1,024 cylinders or if you want to use the drive with a non-DOS operating system that doesn't understand translation.

ECHS or Large in the BIOS Setup is CHS bit-shift, and most BIOSs from 1997 and later use the revised method (240 logical heads maximum).

LBA, as selected in the BIOS Setup, indicates LBA-assist translation, not pure LBA mode. This enables software to operate using L-CHS parameters while the BIOS talks to the drive in LBA mode.

The only way to select a pure LBA mode, from the OS to the BIOS as well as from the BIOS to the drive, is with a drive that is over 8.4GB. All drives over 137GB must be addressed via LBA at both the BIOS and drive levels, and most PC BIOSs automatically address any drive over 8.4GB in that manner, as well. In that case no special BIOS Setup settings are necessary, other than setting the type to auto or autodetect.

Caution

A word of warning with these BIOS translation settings: If you have a drive 8.4GB or less in capacity and switch between Standard CHS, ECHS, or LBA, the BIOS can change the (translated) geometry. The same thing can happen if you transfer a disk that has been formatted on an old, non-LBA computer to a new one that uses LBA. This causes the logical CHS geometry seen by the operating system to change and the data to appear in the wrong location from where it actually is! This can cause you to lose access to your data if you are not careful. I always recommend recording the CMOS Setup screens associated with the hard disk configuration so you can properly match the setup of a drive to the settings to which it was originally set. This does not affect drives over 8.4GB because in those cases pure LBA is automatically selected.


The 8.4GB Barrier

Although CHS translation breaks the 528MB barrier, it runs into another barrier at 8.4GB. Supporting drives larger than 8.4GB requires leaving CHS behind and changing from CHS to LBA addressing at the BIOS level. The ATA interface had always supported LBA addressing, even in the original ATA-1 specification. One problem was that LBA support at the ATA level originally was optional, but the main problem was that there was no LBA support at the BIOS interface level. You could set LBA-assist translation in the BIOS Setup, but all that did was convert the drive LBA numbers to CHS numbers at the BIOS interface level.

Phoenix Technologies recognized that the BIOS interface needed to move from CHS to LBA early on and, beginning in 1994, published the "BIOS Enhanced Disk Drive Specification (EDD)," which addressed this problem with new extended INT13h BIOS services that worked with LBA rather than CHS addresses.

To ensure industry-wide support and compatibility for these new BIOS functions, in 1996 Phoenix turned this document over to the InterNational Committee on Information Technology Standards (INCITS) T13 technical committee for further enhancement and certification as a standard called the "BIOS Enhanced Disk Drive Specification (EDD)." Starting in 1998, most of the other BIOS manufacturers began installing EDD support in their BIOSs, enabling BIOS-level LBA mode support for ATA drives larger than 8.4GB. Coincidentally (or not), this support arrived just in time because ATA drives of that size and larger became available that same year.

The EDD document describes new extended INT13h BIOS commands that allow LBA addressing up to 264 sectors, which results in a theoretical maximum capacity of more than 9.44ZB (zettabytes, or quadrillion bytes). That is the same as saying 9.44 trillion GB: 9.44x1021 bytes or, to be more precise, 9,444,732,965,739,290,427,392 bytes! I say theoretical capacity because even though by 1998 the BIOS could handle up to 264 sectors, ATA drives were still using only 28-bit addressing (228 sectors) at the ATA interface level. This limited an ATA drive to 268,435,456 sectors, which was a capacity of 137,438,953,472 bytes, or 137.44GB. Thus, the 8.4GB barrier had been broken, but another barrier remained at 137GB because of the 28-bit LBA addressing used in the ATA interface. The numbers work out as follows:

                      Max. Values --------------------------------- Total Sectors         268,435,456 --------------------------------- Total Bytes       137,438,953,472 Megabytes (MB)            137,439 Mebibytes (MiB)           131,072 Gigabytes (GB)             137.44 Gibibytes (GiB)            128.00 


By using the new extended INT13h 64-bit LBA mode commands at the BIOS level, as well as the existing 28-bit LBA mode commands at the ATA level, no translation would be required and the LBA numbers would be passed unchanged. The combination of LBA at the BIOS as well as the ATA interface levels meant that the clumsy CHS addressing could finally die. This also means that when you install an ATA drive larger than 8.4GB in a PC that has an EDD-capable BIOS (1998 or newer), both the BIOS and the drive are automatically set to use LBA mode.

An interesting quirk is that to allow backward-compatibility when you boot an older operating system that doesn't support LBA mode addressing (DOS or the original release of Win95, for example), most drives larger than 8.4GB report 16,383 cylinders, 16 heads, and 63 sectors per track, which is 8.4GB. For example, this enables a 120GB drive to be seen as an 8.4GB drive by older BIOSs or operating systems. That sounds strange, but I guess having a 120GB drive being recognized as an 8.4GB is better than not having it work at all. If you did want to install a drive larger than 8.4GB into a system dated before 1998, the recommended solution is either a motherboard BIOS upgrade or an add-on BIOS card with EDD support.

The 137GB Barrier and Beyond

By 2001, the 137GB barrier had become a problem because 3 1/2" hard drives were poised to breach that capacity level. The solution came in the form of ATA-6, which was being developed during that year. To enable the addressing of drives of greater capacity, ATA-6 upgraded the LBA functions from using 28-bit numbers to using larger 48-bit numbers.

The ATA-6 specification extends the LBA interface such that it can use 48-bit sector addressing. This means that the maximum capacity is increased to 248 (281,474,976,710,656) total sectors. Because each sector stores 512 bytes, this results in a maximum drive capacity of

                           Max. Values -------------------------------------- Total Sectors      281,474,976,710,656 -------------------------------------- Total Bytes    144,115,188,075,855,872 Megabytes (MB)         144,115,188,076 Mebibytes (MiB)        137,438,953,472 Gigabytes (GB)             144,115,188 Gibibytes (GiB)            134,217,728 Terabytes (TB)                 144,115 Tebibytes (TiB)                131,072 Petabytes (PB)                  144.12 Pebibytes (PiB)                 128.00 


As you can see, the 48-bit LBA in ATA-6 allows a capacity of just over 144PB (petabytes = quadrillion bytes)!

Because the EDD BIOS functions use a 64-bit LBA number, they have a much larger limit:

                                  Max. Values --------------------------------------------- Total Sectors      18,446,744,073,709,551,616 --------------------------------------------- Total Bytes     9,444,732,965,739,290,427,392 Megabytes (MB)          9,444,732,965,739,290 Mebibytes (MiB)         9,007,199,254,740,992 Gigabytes (GB)              9,444,732,965,739 Gibibytes (GiB)             8,796,093,022,208 Terabytes (TB)                  9,444,732,966 Tebibytes (TiB)                 8,589,934,592 Petabytes (PB)                      9,444,733 Pebibytes (PiB)                     8,388,608 Exabytes (EB)                           9,445 Exbibytes (EiB)                         8,192 Zettabytes (ZB)                          9.44 Zebibytes (ZiB)                          8.00 


Although the BIOS services use 64-bit LBA (allowing up to 264 sectors) for even greater capacity, the 144 petabyte ATA-6 limitation is the lower of the two that applies. Still, that should hold us for some time to come.

Because hard disk drives have been doubling in capacity every 1.52 years (Moore's Law), and considering that 400GB ATA drives were available in 2004, I estimate that it will take us until between the years 2031 and 2041 before we reach the 144PB barrier (assuming hard disk technology hasn't been completely replaced by then). Similarly, I estimate that the 9.44ZB EDD BIOS barrier won't be reached until between the years 2055 and 2073! Phoenix originally claimed that the EDD specification would hold us until 2020, but it seems they were being quite conservative.

The 137GB barrier proved a bit more complicated than previous barriers because, in addition to BIOS issues, operating system issues also had to be considered.

Internal ATA drives larger than 137GB require 48-bit LBA (logical block address) support. This support absolutely needs to be provided in the OS, but it can also be provided in the BIOS. It is best if both OS and BIOS support it, but it can be made to work if only the OS has the support.

To have 48-bit LBA support in the OS requires one of the following:

  • Windows XP with Service Pack 1 (SP1) or later.

  • Windows 2000 with Service Pack 4 (SP4) or later.

  • Windows 98/98SE/Me or NT 4.0 with the Intel Application Accelerator (IAA) loaded. This solution works only if your motherboard has an IAA-supported chipset. See www.intel.com/support/chipsets/IAA/instruct.htm for more information.

To have 48-bit LBA support in the BIOS requires either

  • A motherboard BIOS with 48-bit LBA support (most of those dated September 2002 or later)

  • An ATA host adapter card with onboard BIOS that includes 48-bit LBA support

If your motherboard BIOS does not have the support and an update is not available from your motherboard manufacturer, you can use a card. Cards that offer 48-bit LBA support include the LBA Pro ISA card from eSupport (www.esupport.com) and the Maxtor SATA/150 and ATA/133 Combo PCI card (www.maxtor.com). The Maxtor card plugs in to a PCI slot and has an ATA port and two SATA ports that can support up to two ATA and two SATA drives. The eSupport card, on the other hand, plugs in to an ISA slot and has only a BIOS with no additional drive ports. In both cases, you could continue to use your existing motherboard ports; the BIOS on the cards would allow 48-bit LBA support for both motherboard-based and card-based ports.

Note that if you have both BIOS and OS support as well, you can simply install and use the drive like any other. If you have no BIOS support, but you do have OS support, portions of the drive past 137GB are not recognized or accessible until the OS is loaded. If you are installing the OS to a blank hard drive and booting from an original XP (pre-SP1) CD or earlier, you need to partition and install up to the first 137GB of the drive at installation time. After installing the OS and then the SP1 update, you can either partition the remainder of the drive using standard partitioning software or use a third-party partitioning program such as PartitionMagic or Partition Commander to resize the first partition to use the full drive. If you are booting from an XP SP1 or later CD, you can recognize and access the entire drive during the OS installation and partition the entire drive as a single partition greater than 137GB, if you want.

Finally, keep in mind that the original version of Windows XP, as well as Windows 2000/NT or Windows 95/98/Me, does not provide native support for ATA hard drives that are larger than 137GB. However, as indicated earlier, that can easily be solved by loading the appropriate service packs or the Intel Application Accelerator.

Operating System and Other Software Limitations

Note that if you use older software including utilities, applications, or even operating systems that rely exclusively on CHS parameters, they will see all drives over 8.4GB as 8.4GB only. You will need not only a newer BIOS, but also newer software designed to handle the direct LBA addressing to work with drives over 8.4GB. Operating system limitations with respect to drives over 8.4GB are shown in Table 7.24.

Table 7.24. Operating System Limitations

Operating System

Limitations for Hard Drive Size

DOS/Windows 3x

DOS 6.22 or lower can't support drives greater than 8.4GB. DOS 7.0 or higher (included with Windows 95 or later) is required to recognize a drive over 8.4GB.

Windows 9x/Me

Windows 95a (original version) does support the INT13h extensions, which means it does support drives over 8.4GB; however, due to limitations of the FAT16 file system, the maximum individual partition size is limited to 2GB. Windows 95B/OSR2 or later (including Windows 98/Me) supports the INT13h extensions, which allows drives over 8.4GB, and also supports FAT32, which allows partition sizes up to the maximum capacity of the drive. However, Windows 95 doesn't support hard drives larger than 32GB because of limitations in its design. Windows 98 requires an update to FDISK to partition drives larger than 64GB.

Windows NT

Windows NT 3.5x does not support drives greater than 8.4GB. Windows NT 4.0 does support drivers greater than 8.4GB; however, when a drive larger than 8.4GB is being used as the primary bootable device, Windows NT will not recognize more than 8.4GB. Microsoft has released Service Pack 4, which corrects this problem.

Windows 2000/XP

Windows 2000/XP supports drives greater than 8.4GB.

OS/2 Warp

Some versions of OS/2 are limited to a boot partition size of 3.1GB or 4.3GB. IBM has a Device Driver Pack upgrade that enables the boot partition to be as large as 8.4GB. The HPFS file system in OS/2 will support drives up to 64GB.

Novell

NetWare 5.0 or later supports drives greater than 8.4GB.


In the case of operating systems that support drives over 8.4GB, the maximum drive size limitations are dependent on the BIOS and hard drive interface standard, not the OS. Instead, other limitations come into play for the volumes (partitions) and files that can be created and managed by the various operating systems. These limitations are dependent on not only the operating system involved, but also the file system that is used for the volume. Table 7.25 shows the minimum and maximum volume (partition) size and file size limitations of the various Windows operating systems. As noted in the previous section, the original version of XP, as well as Windows 2000/NT or Windows 95/98/Me, does not currently provide native support for ATA hard drives that are larger than 137GB. You will need to use XP and ensure you have Service Pack 1 or later installed to use an ATA drive over 137GB. This does not affect drives interfaced via USB, FireWire, SCSI, or other interfaces.

Table 7.25. Operating System Volume/File Size Limitations by File System

OS Limitations by File System

FAT16

FAT32

NTFS

Min. Volume Size (9x/Me)

2.092MB

33.554MB

Max. Volume Size (95)

2.147GB

33.554MB

Max. Volume Size (98)

2.147GB

136.902GB

Max. Volume Size (Me)

2.147GB

8.796TB

Min. Volume Size (NT/2000/XP)

2.092MB

33.554MB

1.000MB

Max. Volume Size (NT/2000/XP)

4.294GB

8.796GB

281.475TB

Max. File Size (all)

4.294GB

4.294GB

16.384TB

= not applicable

MB = megabyte = 1,000,000 bytes

GB = gigabyte = 1,000,000,000 bytes

TB = terabyte = 1,000,000,000,000 bytes





Upgrading and Repairing PCs
Upgrading and Repairing PCs (17th Edition)
ISBN: 0789734044
EAN: 2147483647
Year: 2006
Pages: 283
Authors: Scott Mueller

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net