Dual drive configuration. The Parallel ATA IDE protocol allows a controller to control 2 drives. One must be ided as device 0 (master) and the other as a device 1 (slave). Device 0 usually maps as drive C: in Microsoft environment. Jumper or switch on drives allow user to configure master/slave. Usually 3 or 4 options. Master - dual drive. Single drive - some drives only offer master for either single or dual. Slave - dual drive. Cable select - cable design allows selection of master. Slave drives will often spin up a little later than the master to lessen load on power supply. Driver software invoked by is is actual master and both drives function equally with interface. (But both must share cable.) With older OSes, Windows 98 and older, OS had to be on primary drive. Limits(barriers) and conflicts 4 limits Recording mechanism - drive technology and encoding FM -> MFM -> RLL Drive Bios limits With IDE style, improvements synchronized with drive size improvements. System Bios limits. System bios independent of OS. Until recently, even OSes able to handle larger drives, had to have their boot/initial OS routines in the 1st 1024 cylinders of drive. OS Filesystem limits. Pointer size and data structures for tracking files. Limits mismatches Although most of the control now done on the interface, some still the responsibility of the OS. Mirosoft and IBM in their initial design chose an BIOS/OS that recognized: Bios Int 13h (24 bit chs) - 58 functions 1024 cylinders(10 bit), 256 heads(8 bit), 63 sectors of 512 bytes(6 bit) as a maximum possible configuration, so coded the BIOS as such. 1024*256*63*512 = 8455716864 or 8.4 GB or 7.8 GiB. The standard IDE Bios interface provided for: (28 bit) 65536 cylinders(16 bit), 16 heads(4 bit), 255 sectors(8 bit) of 512 bytes. or 136 902 082 560 -- 2^28 * 512 - 2^20 * 512or < 128GiB (2^37) However when the two interact, only the lower value in each used. 1024 256 63 65536 16 255 1024 cylinders, 16 heads, 63 sectors. 1024*16*63*512 = 528482304 or 528 MB (decimal) or 504 MiB(binary) Bios extenders Patches implemented as software replacing firmware routines. (INT13H) After boot up. Installed an alternative Int13H with better chs ratios. Alternative BIOSes. In 1994, Phoenix Technologies produced a bios for handling larger drives. The bios is copyrighted software. However, its actions are not (look and feel). 4.2 GB - another barrier. CHS addressing differences between bios and os. Int 13h rewritten 64bit LBA - conversion to chs handled on drive allowing 8 GB. 8GB still max at the time. 1996 - Phoenix turned over their BIOS protocol called BIOS Enhanced Disk Drive Specification (EDD) to InterNational Committee on Information Technology Standards (INCITS) Provides a LBA count of 2^64 (9.44 ZB) But disks (AT-IDE) still had a 2^28 count (138GB) To break the 137GB boundry ATA-6 allowing up to 2^64 sectors (LBA). Current drives > 137GB use a 48 bit LBA. That must also be supported by the OS. Filesystem limits The MS-OS must track the location of files. As the drives grew, the tracking system of the OS did not. To overcome the size limits on the os side, Os began to access data from drive in clusters of sequential sectors. Bios handles sequential access of sectors in addressed cluster. Cluster size from 1 sector to 64K blocks depending on size of drive. A stored file takes one or more clusters. If file is 1K and cluster is 4K, drive will reserve 4K for file. Some bios extenders allowed for clusters > 64K but caused compatibility issues with other systems. Filesystem limits Dos/Win3x - Dos 6.22 < 8.4 GB Need Dos 7 or up (Win 95) for > 8.4 GB Win 9x/ME - supports > 8.4 GB but FAT 16 limits partitions to 2GB. Win 95B/OSR2 - supports > 8.4 GB and Fat 32. Win 95 at 32GB limit. Win 98 up to 64GB (with fdisk upgrade). Win 2000/XP - supports > 8.4 GB. If fat 32, clusters up to 64K. Switch from FAT to NTFS allows large drives of 128GB or more. 32 bit OS 2 TB. OS can support 16 exabytes (16 million TB) but partition drive table limited to 2 TB New version of partition table protocol gets around this. Vista - uses NTFS os and supports huge drives. OS/2 - boot partions 3.1GB (or 4.3GB). Driver upgrade allows for 8GB. Non-boot portion of drive - rest of a 64GB size. Unix OSes often had fewer limits because different sector counter system. More on limits Extended - EIDE and ATA-IDE Advanced versions of IDE - competing protocol to ATA But close enough that drives designed to handle both. Parallel IDE Lectures