|Hard Drive Interface Evolution|
Hard Drive Interface Evolution from ST412 to IDE
Disk drive interfaces were standardized early on. As we will see, as the interfaces developped, functionality moves into the disk conmensurate with the ubiquity of computing power. The exception to this trend is the IDE interface, which does not implement SCSI type abstraction.
The ST412/506 interface received it name from two Seagate disks from 1980 and 1981. The interface was standardized by adoption by IBM for PCs. The disk controller resides on an adapter card that is connected by a 20 pin data or B cable and a 34 pin controller or A cable. The ST412/506 is a signal interface only. The hard drive only accomodates control circuitry for stabilizing the disk rotation and the head position. All other functions are done by the controller. To give a flavor of this interface, we look at a typical write operation: The drive operation uses a signal (A22) to indicate that it is ready. The controller sets signals to specify the drive (up to four can be connected for ST506) and the head. The controller knows the track and uses the direction signal and the step signal to move the head one track at a time. If the controller lost the track position, the controller moves the head outwards until the drive indicates with the Track 00 signal that the head is over the outmost track. The sector identification is in the header for each sector. Thus, once the head is over the right track, the controller uses read data to find the correct sector. However, for formatting, the drive helps by setting the INDEX signal if the head is over the first sector. Once the correct sector is reached, the controller sends over the write current. In principle, any type of magnetic code can be used, though MFM and for better capacity RLL 7,2 were used historically resulting in data rates of 5MHz and 7.5MHz resp..
ESDI is an improvement to ST412/506 motivated primarily by the bandwidth between controller and drive. The ESDI transfers data in digital form between controller and drive. The drive is responsible for finding the correct track and sector as well as for the actual magnetic encoding. The interface presents to the controller a view of the drive as divided into cylinders, tracks, and sectors. ESDI has a defect list, that lists unusable sectors, stored directly on the drive.
The IDE interface began in 1984 when Compaq asked Western Digital to produce an ST506 controller embedded in the hard drive itself and connected to the system bus via a 40 pin cable. IDE is standardized as the ATA standard.
Figure 1 IDE configuration for AT compatible. (IDE limits the number of disks to two.)
The IDE controller implements a register model. To the host system, the IDE controller looks like two blocks of I/O registers in the I/O space of the ISA bus. The registers allow the host to control the hard drive, transfer data (via PIO or DMA), and receive status messages. Instead of giving the rather involved interface, we limit ourselves to an example: A PIO write command first sets up the register block, writing the IDE address register, the drive / head register (which contains bits for the head number), the sector count register, the feature register etc. Then the host sends the write command to the disk. The drive responds by setting the DRIVE READY bit in the status register. The host writes the data via the data register to the sector buffer. When the sector buffer is full, then the disk drive sets the BUSY bit in the status register. As soon as the data in the buffer has been written to the medium, the drive deasserts the BUSY bit and sets the INTRQ bit. The latter signals to the host to read the status register, that hopefully indicates that the operation completed successfully.
IDE uses two addressing modes, the Physical Addressing Mode (CHS) where cylinder, head, and sector uniquely identify the data block on the disk, or the Logical Addressing Mode (LBA, Logical Block Address) where all blocks are numbered according to the simple formula below or one more complicated that takes banding into account:
LBA = (CylinderNumber*HeadCount+HeadNumber)*SectorCount + SectorNumber - 1.
|© 2003 Thomas Schwarz, S.J., COEN, SCU SCU COEN T. Schwarz COEN 180|