为什么硬盘驱动器的大小都是 100 的倍数,而闪存驱动器的大小通常都是 2 的倍数?
我看到的每个硬盘的容量都是 100GB、250GB、500GB、2000GB 之类的数字,以零结尾。
但基于闪存的设备几乎总是大小为 2 的倍数,例如 64GB、128GB
直到最近我才看到一些 120GB 或 200GB 大小的 SSD。
这是有什么原因吗?我一直想知道为什么,但从来没有机会找到答案。
答案1
RAM 的大小为 2 的幂是有充分理由的,因为它的制造方式和寻址方式。(我知道,您问的是闪存驱动器。请耐心听我说。)它通过出现在从 CPU 出来的总线上的二进制数进行寻址,并且所有 RAM 模块都连接到总线上的所有位。
假设一个模块中有 4 GB 的 RAM。地址从十六进制的 0 到 FFFFFFFF(即连续的 32 个 1)。如果再添加一个 4 GB 模块,内存数量当然会翻倍。由于每个二进制数字代表乘以 2(就像每个十进制数字代表乘以 10 一样),因此最大地址现在就是 1FFFFFFFF。内存控制器可以通过将地址 0 到 FFFFFFFF 发送到第一个模块,将地址 100000000 到 1FFFFFFFF 发送到第二个模块来处理这个问题。(实际上,它并不是那么简单,但这就是想法。)随着芯片的容量越来越大,RAM 模块中的工作方式也相同。系统中的所有 RAM 都可以轻松地组合成一个连续的地址块,这非常方便,如果模块的大小为 2 的幂,这在硬件级别上最容易实现。
硬盘驱动器的扇区数与 2 的幂没有对应关系。可记录表面的数量、每条磁道的扇区数和每条表面的磁道数不是基于二进制的;它们只是“任何合适的数”。(每条磁道 17 个扇区是早期 PC 硬盘驱动器的常见数字。)在现代硬盘驱动器中,每条磁道的扇区数甚至从最外层磁道到最内层磁道都不一样。
因此,硬盘没有理由采用 1024 的幂容量。至于跨多个驱动器寻址,由于卷和文件系统的工作方式,完全没有必要将系统中的所有磁盘存储聚合到一个具有连续块地址集的块阵列中。即使这是可取的,操作系统中存储驱动程序堆栈中的软件也不会遇到任何问题,可以跟踪“块 0 到 3906259999 在驱动器 0 上,3906260000 到驱动器 1 上”等。事实上,现在有许多存储软件系统可以做到这一点(例如,Windows 中的动态磁盘和存储空间),从而将具有任意大小的磁盘驱动器集合组合成一个“卷”。
在解释闪存的大小之前,我们必须确保了解有关 RAM 和硬盘大小的另一个细节:
您可能知道,RAM 大小几乎总是使用“二进制前缀”来表示,例如“4 GB RAM”表示 4 乘以 2 的 30 次方 - 或者更方便地说,4 乘以 1024 的 3 次方,即 4 x 1024 x 1024 x 1024 = 4,294,967,296。但是当您购买硬盘时,“GB”表示 1,000,000,000 字节。
顺便说一句,这并不是硬盘制造商最近做出的改变,他们试图以更高的价格向我们出售更少的容量。硬盘一直都是这样报价的;在 RAM 以兆字节为单位之前,硬盘就使用“十进制兆字节”,千兆和兆兆也是如此。最早的硬盘是 IBM 350 RAMAC,容量为 5,000,000 个字符,存储在五十盘片。瞧,当混合中含有“5”这样的素数因子时,很难得到纯 2 的幂。但除此之外……
这副牌中的王牌是固态硬盘,包括 USB“钥匙”、SD 卡等:是的,“单位前的数字”通常是 2 的小幂,比如 64。但是“G”表示 1,000,000,000,就像硬盘上的一样。
如果您不相信这一点,请将一个插入计算机,让它告诉您驱动器上有多少字节(不带前缀)。如果您的“64 GB”闪存驱动器实际上是 64 个二进制千兆字节,则该数字将是 68,719,476,736(Windows 会将其显示为“64 GB”)。但制造商的细则会说“1 GB = 10 亿字节”或类似内容,因此实际上只能保证 64,000,000,000,Windows 会说它是 59.6 GB(因为 Windows 使用硬盘的二进制前缀,尽管它不应该这样做)。但是,如果您记得那里的“G”表示 1024 的立方,即 1,073,741,824,那么 59.6 GB 是正确的。
现在,奇怪的是:额外的容量在哪里?你看,USB 密钥和 mSATA 设备内的闪存 RAM 芯片都是“二进制大小”。因此,在“64 GB”闪存驱动器中,实际闪存 RAM 可能为“64 GiB”(二进制千兆字节)。但您只能使用 64,000,000,000 字节。其余的在哪里?嗯,闪存需要大量备用空间才能工作。“64 GB”闪存驱动器使用 68,719,476,736 和 64,000,000,000 之间的差值作为备用空间。
是的,最近的闪存驱动器,尤其是 HD 替代品,都出现了类似硬盘的大小。我想它们会使用额外的空间来获得更多的备用空间,从而延长使用寿命。例如,“120 GB”闪存驱动器为用户提供 120,000,000,000 字节,但芯片的容量可能为 137,438,953,472 字节。这比驱动器向用户提供 128,000,000,000 字节的备用空间要多得多。