1、528MB限制
早期的BIOS并没预料到硬盘的容量会超过 500MB,因此,当把地址从Int13的地址寄存器转换为ATA的地址寄存器时,只是把INT13中10位的柱面地址拿过来往ATA界面中的16位柱面 寄存器里放,其中柱面高位寄存器的高6位填0。把6位的扇区地址拿过来往ATA的8位扇区寄存器里放,其中高2为填0。而且那时的BIOS认为磁头数不会 超过16(2的四次方),所以只把INT13磁头寄存器的低4位往ATA里传递。这时,柱面的最大数是1024(2的十次方),磁头的最大数是16(2的 四次方),扇区的最大数是63(2的六次方-1)。所以,能寻址的扇区数是1,032,192(1,024x16x63)。一扇区是512字节,也就是说 如果以CHS寻址方式,IDE硬盘的最大容量为528.4MB。这就是著名的“528MB限制”的由来。
2、2.1GB限制
为了 解决“528MB限制”,不同的BIOS生产商使用不同的方法。其中一个就是将INT13的磁头寄存器的高2位保留给柱面数的11、12位使用。这样,最 大的磁头数就是64(2的六次方)。但是一般的操作系统不使用这种转换方法,它认为磁头寄存器的所有位数只记录磁头数。比如,为了正确地转换柱面数为 4,096、磁头数为32的硬盘,就需要操作系统把柱面数除以4(1024个逻辑柱面数),磁头数乘以4(128个逻辑磁头数)。可因为上述的BIOS使 用磁头数寄存器的高2位记录柱面数,所以就没法存储128的磁头数。有这种BIOS的机器在使用大于2.1G的硬盘时,可能会在加电自检时执行硬盘确认命 令并在试图设置CHS值时死机。
2.1GB限制问题更多是由操作系统引起。长期以来DOS操作系统的文件分配表(FAT)处理存储空间是以簇 为单位的,它处理一簇的最大长度是32,768字节,最多能处理65,536个簇,如果将两个数字相乘,就会得到DOS的最大分区界限值是 2,147,483,648字节=2.1G。所以在使用DOS操作系统的机器上,一个分区的大小无法超过2.1G。
3、8.4GB
尽管EIDE接口对普通IDE接口进行了扩展,它支 持LBA存取方式,突破了528MB的容量限制。理论上可以支持到128G的硬盘容量。但老式的BOIS却使用10bit表示柱面数,8bit表示磁头 数,6bit表示扇区数,因此老式BOIS最多可以支持8.4GB的容量(512×63×255×1024=8.4GB)。
(二)、各种操作系统下的容量界限
因为硬盘使用的最高逻辑层就是操作系统,我们还要看看各种操作系统下的容量界 限。即使操作系统支持大于8.4GB的硬盘容量,整个电脑系统也有可能不认全部的硬盘。这时需要使用分区软件如MaxBlast,或购买支持扩展 INT13的升级卡。另外,有些操作系统还有分区大小的限制,这时需要创建多个分区以达到硬盘的全部使用。
1、DOS6.22或更低的版本:不支持大于8.4GB的硬盘,目前无解决办法。
2、Windows95(标准版):支持扩展INT13,所以支持大于8.4GB的硬盘。但因为FAT16的分区限制,要使用大于8.4G的硬盘,至少要创建5个分区。随着硬盘容量的增大,分区数也要增多(如:11MB的硬盘需要6个分区)。
3、Windows95B/OSR2:支持扩展INT13,所以支持大于8.4GB的硬盘。它的FAT32文件系统可以让一个分区包括整个硬盘。不过,只有分区容量大于512MB时,FAT32分区才能被创建。
4、Windows98:支持扩展INT13,所以也支持大于8.4GB的硬盘。它的FAT32文件系统可以让一个分区包括整个硬盘。不过,只有分区容量大于512MB时,FAT32分区才能被创建。
5、WindowsNT3.5x:不支持大于8.4GB的硬盘,目前无解决办法。
6、WindowsNT4.0:支持大于8.4GB的硬盘。可如果当启动分区的容量大于8.4GB时,NT就不能使用超过8.4GB的其它硬盘空间了,这是NT的一个缺陷。据微软说已有相关的“补丁”程序推出。
7、WindowsNT5.0(BETA版):支持大于8.4GB的硬盘。使用NTFS文件系统可以使单个分区容量大于8.4GB,不会出现类似NT4.0的问题了。
8、OS/2Warp3和4:OS/2有些版本的启动分区不能大于3.1GB或4.3GB,用户可从IBM下栽有关的最新设备驱动软件(文件名是 idedasd.exe)来解决,这个软件能让启动分区达到8.4GB。OS/2的HPFS文件系统能支持高达64GB的硬盘容量。
9、Novell:Novell的NetWare4.0不支持大于8.4GB的硬盘,因为它还没有使用扩展的INT13磁盘中断,不过据说他们现在已经开发出4.0的设备驱动升级文件。而Novell4.12和以后的版本就支持超过8.4GB的硬盘。
(三)、三种硬盘工作模式:NORMAL、LBA和LARGE模式。
1、NORMAL普通模式,是最早的IDE方式。在此方式下对硬盘访问 时,BIOS和IDE控制器对参数不作任何转换。该模式支持的最大柱面数为1024,最大磁头数为16,最大扇区数为63,每扇区字节数为512。因此支 持最大硬盘容量为:512×63×16×1024=528MB。在此模式下即使硬盘的实际物理容量更大,但可访问的硬盘空间也只能是528MB。
2、LARGE大硬盘模式。当硬盘的柱面超过1024而又不为LBA支持时可采 用此种模式。LARGE模式采取的方法是把柱面数除以2,把磁头数乘以2,其结果总容量不变。例如,在NORMAL模式下柱面数为1220,磁头数为 16,进入LARGE模式则柱面数为610,磁头数为32。这样在DOS看来柱面数小于1024,即可正常工作。
3、LBA(Logical Block Addressing) 逻辑块寻址模式。这种模式所管理的硬盘空间突破了528KB的瓶颈,可达8.4GB。在LBA模式下,设置的柱面、磁头、扇区等参数并不是实际硬盘的物理 参数。在访问硬盘时,由IDE控制器把由柱面、磁头、扇区等参数确定的逻辑地址转换为实际硬盘的物理地址。在LBA模式下,可设置的最大磁头数为255, 其余参数与普通模式相同。由此可计算出可访问的硬盘容量为:512×63×255×1024=8.4GB 。目前基本上只有LBA有实际意义了。
(四)、有关硬盘容量的问题
硬盘容量是硬盘最重要的参数之一,大家在购买和使用硬盘时,常会发现这样的问题 ∶同样一个盘在不同的机器上或使用不同的测试软件所报告的容量各不相同,但均不大于硬盘的标称容量,在大容量硬盘上这个问题更明显,举例来说标称6.4G 的盘在安装格式化完后,往往只有5.99G的容量。
造成这种情况的主要原因是,生产厂家一般按每兆1000K字节计算容量,而大多数主板的 BIOS及测试软件是以1048K为一兆计算。这样一来二者间便出现了大约5%的差异。而硬盘容量又有纯粹由磁头数、柱面数等物理参数计算得到的物理盘容 量以及在经过分区、格式化等操作后实际可用空间的逻辑盘容量之分。此外在CMOS中选择不同的工作模式(NORMA、LBA、LARGE),也会造成容量 的不一致。
由于有这些因素的影响,一般而言硬盘测试容量与标称容量存在5%-10%左右的差距是基本正常的。