Hard Disks


Hard disks have been around in some form or other since the 1960s, but the first hard disks that appeared in a PC were those introduced with the IBM PC/XT (eXtended Technology) in 1983. This computer came with a Western Digital 10 MB hard disk as standard. However, due to the high cost of hard disk drives in PCs right up to the mid-80s, it was relatively uncommon for a non-business PC to have a hard disk until around 1986. It wasn't until 1989 that hard disk prices had dropped to a price point that most home PC buyers could really afford - a 20 MB Seagate ST-225 then had a retail price of $230, and if you were better off, an 80 MB ST-4096 from Seagate had a price tag of $630.

Incidentally, I want to mention that the term "hard disk" and "hard drive" are the same. It's a bit strange, but whatever you learned to call it is what you continue to say today - to me they are hard disks, but then for floppies I would say floppy drives (into which you insert a disk) - I know, weird right? But there we go! Moving on...

These first hard disks were sometimes called "Winchester" disks due to their historical name from mainframe days, and were also often referred to as a "fixed disk" to distinguish it from a "floppy disk". They took up two 5.25" drive bays, one above the other (see pic above) - the same as the first floppy disk drives, which was later referred to as "full height". The 5.25" here means the drive itself has a physical width of 5.25". Early desktop PCs like the first IBM PC, XT and AT tended to have up to four 5.25" drive bays, so a full-height hard drive would take up two of these. Coinciding with capacities of 20MB and higher, manufacturers started to introduce "half-height" hard drives (see pic to the right). These took up just one 5.25" drive bay. The same form factor was also later adopted for CD-ROM drives due to the already prevalent adoption of this physical size for floppy and hard disk drive bays in PC cases.

Only with the introduction of the IBM PS/2 range did PCs start to appear with smaller 3.5" drive bays (3.5" wide) to support the new floppy disk format. These days all hard drives are either 3.5" (for desktops and servers), or 2.5" (typically for laptops) in width. During the transition from 5.25" to 3.5" it was quite common to have 3.5" drives sit inside a 5.25" bracket within the drive bay, and in the case of floppy drives, also have a plastic bezel around the drive's front so that it looked "ok" in the 5.25" bay.


Early PC hard disk drives used MFM (Modified Frequency Modulation) encoding to store data on the disk surface, the same as PC floppy drives did, and always have. Shortly after hard disks became more common, a similar encoding scheme came around, called RLL (Run Length Limited). Whilst MFM was quite simple to implement and robust, RLL used the same electrical interface and cables but by using a different data format was able to squeeze the data onto the disk more tightly, thus giving a 50% higher formatted capacity on the same number of disk platters (see image below). So a 20 MB MFM hard disk, when formatted using an RLL hard disk controller card, would result in 30 MB of formatted space. However, RLL did require a very accurate drive mechanism and early attempts to format older MFM drives using an RLL controller often resulted in data corruption. Later on, hard disk manufacturers introduced special RLL-certified models, such as Seagate's ST-238R.

A Seagate ST-251-1 hard disk with the lid off!
Note the three separate "platters" onto which data is stored

Technically, there was no such thing as an "RLL drive" - the drive type ("MFM" or "RLL") was solely determined by the low-level format which itself determined how data would be written to the disk, and this in turn, depended on the drive controller card. Although as mentioned, RLL requires an accurate drive mechanism, so I'm sure it wasn't uncommon for drive manufacturers to brand a drive either RLL-capable or only MFM-capable, based on the results of their quality control tests before shipping!

More modern hard disks (IDE or SCSI) have an embedded "controller card" built into the drive itself - IDE stands for "Integrated Drive Electronics". The card we previously called the 'controller card', or 'hard disk controller' was actually just an interface between the drive controller proper (on the drive itself) and the PC bus. It should have really been called a 'host adapter'. (Since 486 days this interface is integrated into the motherboard - it's very unusual to have an 'IDE host adapter' as a separate, plug-in component, since the point of IDE is to eliminate the controller card entirely!).

You only have to examine an old MFM or RLL hard disk, and you will find very little actual circuitry there. A stepper motor, sure. Some glue logic here and there, ok. But no full-on circuit board like you find on more modern IDE drives where the entire underside is a PCB:

OK, you can't really see the difference, but trust me.. the drive on the left (ST-412 10 MB) needs a separate controller card. The drive on the right (IBM 160 MB) well.. you're looking at the controller card.

Until the mid-1990s, all IDE and SCSI drives actually used RLL encoding internally. IDE and SCSI electronics are 'smart' enough to take care of encoding in such a way that we no longer need to know the details. The ATA (AT Attachment) designation (often used synonymously with the term IDE) refers to the fact that this interface was originally designed to connect a combined drive-and-controller directly to the 16-bit AT (aka ISA) bus found in the 1984 vintage IBM PC-AT (Advanced Technology) and compatible computers.

Hard Disk Controllers

In the same way that a PC required a floppy disk controller card in order to connect a floppy disk drive to your PC's motherboard, so too did a hard disk. It wasn't too much later after the ATA (IDE) industry-accepted standard that the circuitry that made up the "controller" would no longer reside on the bottom of the hard disk itself - instead being absorbed into part of the PC's motherboard circuitry.

But I'm jumping ahead... whilst the early pre-IDE (MFM and RLL) hard disk controller cards started off as almost full-length cards, as technology developed these were shrunk down drastically, with most of the components eventually embedded onto single chips. Third-party peripheral card manufacturers put these on what would be called "multi I/O cards" which incorporated both a floppy and hard disk controller onto a single card, and often would also have at least one RS232 serial port, a parallel port, and maybe even a game port (for a joystick) as an added bonus to help sell their card.


A Goldstar Prime-2 "Multi I/O" card


With MFM and RLL encoded drives the cabling that was used to connect the drive to the controller card was different to modern-day IDE drives. The drives had two edge connectors which connected to: (1) an IDC 20-pin cable for power, and (2) an IDC 34-pin cable for data. These are illustrated in the image to the left.

Hard Cards!

Around 1987 we saw a rather clever invention come onto the PC scene: hard cards. These were basically a hard disk installed "side-on" on a very long ISA expansion card, right next to its controller circuitry. The main reason why there was a market for such things at the time was because PC manufacturers often did not provide the same amount of disk expansion capabilities as IBM did in their PC, XT or AT computers. These all had 4 "drive bays" (2 if they were "full-height"), but as clones started arriving on the scene, quite often these would have only two half-height bays available which usually would get used up by two floppy disk drives - maybe one 5.25" and one 3.5", or two of a single size. This left no space for any hard disk. Enter the hard card! With a hard card, the hard disk became part of the hard disk controller card itself, which was sat in a spare ISA slot, so it did not use up a valuable drive bay! A hard drive's mechanisms were equally happy oriented either horizontally or vertically, so this would not have had a detrimental effect on the lifespan of a drive.


A typical hard card - a hard disk drive and its controller card,
all mounted vertically on a single ISA expansion card


Hard Disk Capacities Over the Years

Something that's useful for those building a vintage PC these days is to have an understanding of what was typical during a particular era, or in any given year. The table below gives some indication as to what hard disk types and capacities were typically available for the average home user during certain years, and their technology.

Year Capacity Information
1983-1986 10-20 MB MFM encoding. Hard disk was connected to a hard disk controller card (8-bit ISA). "Hard cards" arrived late 1985 (hard disk physically mounted on a long controller card in the ISA slot).
First IDE interface created in 1986 (ATA-1).
1987-1989 20-65 MB MFM or RLL encoding. Hard disk was connected to a hard disk controller card (8-bit or 16-bit ISA).
1990 20-85 MB MFM or RLL encoding is still common.
1991 40-120 MB ATA (IDE) hard disks become more commonplace.
1992 40-160 MB IDE hard disks taking over. MFM/RLL not seen anymore.
1993 40-300 MB IDE hard disks supporting ATA Mode 4 standard. Motherboards start to appear with embedded IDE sockets, so no need for a separate hard disk controller card using up an expansion slot.
1994 300-500 MB EIDE (Enhanced IDE) arrives - some manufacturers make their own versions called "Fast ATA" or "Fast ATA-2".
1995 300 MB-1 GB Motherboards now almost universally come as standard with IDE sockets
1996 300 MB-1.5 GB  
1997 300 MB-2 GB  

Capacity Limits

As hard disk drive technology has developed, occasionally it is possible to hit problems where your operating system or your BIOS does not recognise the full capacity of your hard disk, or even the existence of the drive at all!

In the past the PC accessed each sector on the hard drive simply by using its physical location. So to load or store a given sector of data the PC would need to give the hard disk controller 3 pieces of information: which side of the disk, which track and which sector within this track the program wants to load or store - something like “hey controller, give me the 512 bytes of information that is stored on sector 5 from track 10 on side 1”. This method of locating data is often referred to as "CHS", or "Cylinder, Head and Sector".

CHS drive information shown in an Award BIOS screen

The problem is that PCs had a limitation on the highest cylinder (track) number, the highest head and the highest sector number on each cylinder they could access. In fact, there were two limits: the first was in the computer BIOS – which is a program stored in the computer’s ROM memory that teaches the CPU how to recognise basic peripherals like the floppy disk drive and the hard disk drive – and another limit is on the hard disk's ATA (AT Attachment) interface, which is the interface used to connect the hard disk drive to the PC (this interface is also known by other names like PATA, parallel ATA or IDE).

This table gives shows the various limits:

  Cylinders (tracks) Heads Sectors Maximum Capacity
BIOS limit 1,024 255 63 7.84 GB, aka the "8 GB limit"
ATA Interface limit 65,536 16 255 127.5 GB, aka the "128 GB limit"
Hard Disk Drive limit 1,024 16 63 504 MB
DOS limit varies varies varies DOS 2.x: 16 MB
DOS 3.x: 32 MB max. partition size
DOS 4.0 up to 6.22: 2 GB
DOS 7.1 (Win95B OSR2): 124.5 GB

Let's have a closer look at each of these limits to fully understand why they exist...

The DOS Limit

DOS versions prior to MS-DOS version 3.31 could only support a maximum disk size of 32 MB. This was due to the 16-bit width of the address of each logical sector number, resulting in a maximum of 65,535 sectors that could be individually addressed. At 512 bytes per sector (the norm at the time), this resulted in 65535 x 512 = 33,553,920 bytes, or 32 MB.

With Microsoft's introduction of MS-DOS 3.31 in November 1987, the address width of a sector could be 16- or 32-bit, meaning a new limit of 512 MB.



The 8 GB Limit

The original BIOS used on the IBM PC could access only up to 1,024 tracks, 255 sides and 63 sectors. Why? Let's multiply these numbers together: 1024 x 255 = 261,120 is the highest track number it can access. We can get the total number of sectors the BIOS can access on the hard disk drive by multiplying this number by 512: 261,120 tracks x 63 sectors per track = 16,450,560. Then, finally, to get the total hard disk drive capacity, in bytes since there are usually 512 bytes per sector... 16,450,560 x 512 = 8,422,686,720 bytes, which is 8032.5 megabytes or 7.84 gigabytes. Thus the original BIOS used on the PC could access hard disk drives only up to 7.84 GB.

Keep in mind that when the IDE/ATA standard was created back in 1986 people thought that this limit was almost impossible to ever reach, as at that time the most high-end hard disk drive was 40 MB in capacity! This limit, also known as the 8 GB limit (because of the wrong definition of gigabyte being 1,000 bytes rather than 1,024), can sometimes be solved with a BIOS upgrade, and affects computers built up to 1999, give or take. You could buy a hard disk larger than 8 GB in 1997, but it was by no means commonplace and was certainly cost-prohibitive for most - for $680 USD you could pick up a Maxtor 8 GB internal hard disk.

It is important to know that even with a BIOS upgrade MS-DOS up to 6.22 cannot recognise extra space on a disk above 8 GB (Windows 3.11+, NT, and Linux, etc, only use the BIOS settings to be able to boot into Windows - after boot-up Windows 3.11+/NT and Linux uses its own special drivers to access the full disk, so only the OS data has to reside below this 8 GB barrier for it to load properly).

Windows NT also has a limitation where it can’t boot from the first partition if it is larger than 7.84 GB, but this is an operating system limitation and not the BIOS limitation explained above.


The 504 MB (or 528 MB) Limit

Then there is another limit that affected computers built up to around 1995, which is the 504 MB limit (or 528 MB, if you use the wrong definition of megabyte). This limit existed because the computer needed to respect both BIOS and ATA limits at the same time. For example, even though the ATA standard allowed addressing up to 65,536 tracks, the BIOS did not, so the computer addressing capability was limited to the lowest of the two - the 1,024 BIOS track limit. The same goes for heads and sectors, as you can see on the table.

Once again the solution for this was a BIOS upgrade to allow a new method of addressing areas of the disk. Still a standard today for parallel hard disk drives, LBA or "Logical Block Addressing", allowed the computer to be able to address each sector of the disk sequentially instead of using its physical CHS (Cylinder-Head-Sector) values. So with LBA, instead of having to ask for sector 5 from track 16 on side 1, the system only needs to ask “hey, give me sector 1,186,612.”.

Another alternative to overcome this limit if your BIOS doesn't support LBA is to run what's called "Dynamic Drive Overlay" software, which allows the system to "see" drives larger than 528 MB. I don't know precisely how this works, but I would assume it's simply "LBA in software" so the overlay software talks to the hard disk using low-level commands, avoiding BIOS commands, device drivers and other abstraction layers. Some examples of DDO software are EZ-Drive, OnTrack Disk Manager, and Seagate DiskWizard.


The 128 GB (ATA) Limit

Since these days LBA mode is widely used, you could make the assumption that there are no more limitations when accessing the highest of hard disk drive capacities. Well, sadly there is one more limitation.... the ATA interface uses a 28-bit variable to address sectors in LBA mode, creating a 128 GB (or 137 GB if you use the wrong definition of gigabyte) limit (2^28 x 512 bytes per sector).

The ATA-6 standard (a.k.a. ATA/100) increased the size of the LBA variable to 48 bits, pushing the size limit up to 128 PB (petabytes, one petabyte is 2^50, so 128 PB is equal to 131,072 TB) a limit that seems impossible to reach (let’s see 10 years from now if this statement continues to be true!). By the way, this limit is also known as 144 PB limit, if the wrong definition of petabyte is used.

To solve this 128 GB limitation, two things are needed. First, update the motherboard BIOS to the latest version available. Second, run Maxtor's “Big Drive Enabler,” a Windows program to enable 48-bit LBA addressing, in Windows ME, NT, 2000 and XP SP1 or SP2. These by default don't recognize hard drives over 128 GB as they only support 24-bit LBA addressing. For Windows 95 there's a further problem in that it doesn’t support hard drives above 32 GB due to a system limitation that isn’t related to what we are describing here, and Windows 98 doesn’t support hard disk drives over 128 GB also due to another unrelated problem, so with 95 or 98, there is no solution to the 128 GB limit).



Advanced Technology Attachment (ATA) was a new storage interface standard introduced in 1994. These days we still use the term ATA when we refer to modern hard disks that use SATA (Serial ATA) to communicate with the hard disk. The original ATA standard ran in parallel (now referred to as PATA to distinguish it from the more modern SATA).

By contrast, IDE, which stands for Integrated Drive Electronics, is simply the drive type that took over from the older types of hard disk which required a seperate disk controller card. With IDE drives, the circuitry needed for the motherboard to communicate with the drive mechanism was integrated into the drive itself, thus eliminating the need for a seperate "disk controller" card using up one of your expansion slots.

The terms ATA and IDE are often used interchangeably, and I'm pretty OK with that. We all know what you mean when you say IDE drive!

The ATA standard was extended and enhanced, but always remained backwardly-compatible with older versions of the ATA standard, so any Parallel ATA hard disk can be used on any motherboard that supports a version of ATA - you just might not be getting all the features the drive supports if using an older motherboard. The table below summarises the evolution of the AT Attachment standard.

  PIO* Modes Supported Highest data transfer rate (Megabits per second) Notes
ATA and ATA-1 (1994) 0, 1 and 2 8.3  
ATA-2, EIDE, Fast ATA/IDE, Ultra ATA (1996) 0 - 4 16.6 Introduced LBA for larger drives up to 8.4 GB
ATA-3 (1997) 0 - 4 16.6 Introduced S.M.A.R.T. for hard disk health monitoring
ATA-4 (1998) 0 - 4 33 Introduced UDMA/33
ATA-5 (2000) 0 - 4 66 Introduced UDMA/66, which used a new 80-wire cable over the previous 40-wire.
ATA-6 (2001) 0 - 4 100 Introduced UDMA/100. LBA now 48 bits long, allowing for up to 128 PB (petabytes) of theoretically accessible storage.

PIO, or Programmed Input/Output is a means of transferring data from one device to another without using main memory or DMA (Direct Memory Access) - the data goes via the CPU only. It is slower than DMA, so whenever possible it's best to configure your IDE interface to run in DMA or UDMA mode. PIO Mode 0 supported data transfer speeds up to 3.3 MB/sec, mode 1 up to 5.2 MB/sec, mode 2 up to 8.3 MB/sec, mode 3 up to 11.1 MB/sec, and mode 4 up to 16.6 MB/sec.

"Why use PIO mode?" I hear you say! Well, unless your motherboard supports ATA-4 or higher, you have no choice! The use of DMA for hard disk data transfers was only introduced with ATA-4.

UDMA/33 or Ultra DMA/33, introduced with the ATA-4 standard in 1998 brought twice the speed of the previous DMA interface - up to 33 Mbps (megabits per second). UDMA/66 and UDMA/100 introduced later further pushed the performaance of the Parallel ATA interface until the move to Serial ATA in 2000.

To get the best possible speed out of your hard disk, use the highest UDMA both your hard disk and motherboard supports, and if UDMA isn't supported at all, use the highest PIO mode they both support.