下一页 上一页 目录

4. BIOS 和 IDE 限制的历史

ATA 规范(针对 IDE 硬盘)- 137 GB 限制

最多 65536 个柱面(编号 0-65535),16 个磁头(编号 0-15),每磁道 255 个扇区(编号 1-255),最大总容量为 267386880 个扇区(每个扇区 512 字节),即 136902082560 字节(137 GB)。 2001 年 9 月,首批大于此容量的硬盘(160 GB Maxtor Diamondmax)面世。

BIOS Int 13 - 8.5 GB 限制

最多 1024 个柱面(编号 0-1023),256 个磁头(编号 0-255),每磁道 63 个扇区(编号 1-63),最大总容量为 8455716864 字节(8.5 GB)。 这在今天是一个严重的限制。 这意味着 DOS 无法使用当今的大容量硬盘。

528 MB 限制

如果 BIOS Int 13 调用和 IDE 硬盘 I/O 使用相同的 c、h、s 值,则两个限制会结合起来,最多可以使用 1024 个柱面、16 个磁头、每磁道 63 个扇区,最大总容量为 528482304 字节(528MB),即老式 BIOS 的 DOS 中臭名昭著的 504 MiB 限制。 这在 1993 年左右开始成为问题,人们开始采用各种技巧,包括硬件(LBA)、固件(BIOS 转换)和软件(磁盘管理器)。 “转换”的概念于 1994 年被发明:BIOS 在与硬盘通信时可以使用一种几何结构,而在与 DOS 通信时可以使用另一种伪造的几何结构,并在两者之间进行转换。

2.1 GB 限制(1996 年 4 月)

一些较旧的 BIOS 只为 CMOS RAM 中给出柱面数的字段分配 12 位。 因此,该数字最多为 4095,并且只能访问 4095*16*63*512=2113413120 字节。 拥有更大硬盘的效果是在启动时挂起。 这使得几何结构为 4092/16/63 的硬盘非常流行。 即使在今天,许多大容量硬盘驱动器仍然配备跳线,使其显示为 4092/16/63。 另请参见 over2gb.htm其他 BIOS 不会挂起,但只会检测到小得多的硬盘,例如 429 MB 而不是 2.5 GB。

3.2 GB 限制

Phoenix 4.03 和 4.04 BIOS 固件中存在一个错误,该错误会导致容量超过 3277 MB 的驱动器在 CMOS 设置中锁定系统。 请参阅 over3gb.htm

4.2 GB 限制(1997 年 2 月)

简单的 BIOS 转换(ECHS=扩展 CHS,有时称为“大容量硬盘支持”或简称为“Large”)的工作原理是重复将磁头数加倍,并将显示给 DOS 的柱面数减半,直到柱面数最多为 1024。 现在 DOS 和 Windows 95 无法处理 256 个磁头,在硬盘报告 16 个磁头的常见情况下,这意味着这种简单的机制仅适用于高达 8192*16*63*512=4227858432 字节(具有 1024 个柱面、128 个磁头、每磁道 63 个扇区的伪造几何结构)。 请注意,ECHS 不会更改每磁道扇区数,因此如果不是 63,则限制会更低。 请参阅 over4gb.htm

7.9 GB 限制

稍微智能的 BIOS 通过首先将磁头数调整为 15(“修订后的 ECHS”)来避免之前的问题,这样可以获得具有 240 个磁头的伪造几何结构,适用于 1024*240*63*512=7927234560 字节。

8.4 GB 限制

最后,如果 BIOS 尽一切努力使此转换成功,并使用 255 个磁头和每磁道 63 个扇区(“辅助 LBA”或简称为“LBA”),则可以达到 1024*255*63*512=8422686720 字节,略小于之前的 8.5 GB 限制,因为必须避免使用 256 个磁头的几何结构。 (此转换将使用序列 16、32、64、128、255 中的第一个值 H 作为磁头数,总硬盘容量适合 1024*H*63*512,然后计算柱面数 C 为总容量除以 (H*63*512))。

33.8 GB 限制(1999 年 8 月)

下一个障碍出现在超过 33.8 GB 的容量时。 问题在于,使用默认的 16 个磁头和每磁道 63 个扇区,这对应于超过 65535 的柱面数,这不适合 short 类型。 许多 BIOS 无法处理此类硬盘。(例如,请参阅 华硕升级 以获取可用的新闪存映像。) 早于 2.2.14 / 2.3.21 的 Linux 内核需要补丁。 请参阅下面的 34+ GB 硬盘的 IDE 问题

137 GB 限制(2001 年 9 月)

如上所述,旧的 ATA 协议使用 16+4+8 = 28 位来指定扇区号,因此无法寻址超过 2^28 个扇区。 ATA-6 描述了一种扩展,允许寻址 2^48 个扇区,是之前的百万倍。 最新内核中已提供支持。

2 TiB 限制

使用 32 位扇区号,可以寻址 2 TiB。 一旦硬盘变得更大,许多软件将需要重写。

容量超过 8.4 GB 的硬盘驱动器应该将其几何结构报告为 16383/16/63。 这实际上意味着“几何结构”已过时,总硬盘大小不能再从几何结构计算出来,而是在 IDENTIFY 命令 返回的 LBA 容量字段中找到。 容量超过 137.4 GB 的硬盘驱动器应该报告 LBA 容量为 0xfffffff = 268435455 个扇区(137438952960 字节)。 现在,实际硬盘大小在新 48 位容量字段中找到。


下一页 上一页 目录