闪存是以二进制为基础,但市面上贩卖的固态硬盘容量,却有二进制以外的选择。以200GB左右的固态硬盘为例,有200GB、240GB、250GB、和256GB的产品。这些固态硬盘使用的闪存,容量大都是二进制的。那么除了256GB, 其他不足容量(200/240/250 GB)的产品,所为何来,是不是容量越大就越划算?让我们用不同的角度来揭开这个面纱。
闪存最小的读写单位为PAGE,有2KB, 4KB, 8KB, 和目前的主流16KB。 因为闪存的储存电荷电压,经过时间会慢慢的流失,用久了也会有损坏,还有闪存电性的本质,会造成数据读取时,可能会有错误发生,因此固态硬盘有数据除错的需求。主控用ECC来校验纠错,保证了读写性能和数据安全、延长硬盘使用寿命。为此,闪存在每个PAGE的用户容量外,会提供多余的空间,例如美光64层 3D TLC 配置 (16KB+2208B) PAGE,多出的2208B,可用来储存ECC校验码。这个空间越大,ECC 能支援的Code Rate越低,除错能力越好,但是闪存芯片面积就会增大,成本增加。当然,用户是无法使用到这个多余的储存空间。
PAGE上层的单位是块BLOCK,它是最小的擦除ERASE单位。一个块由上百或千的PAGE 组成。闪存在生产和使用过程中,会产生坏块 BAD BLOCK。坏块分为两种,一种是出厂时就存在,出厂测试时,会把太多坏块的颗粒视为不良品。另一种是随使用时间的增加,闪存会有磨损WEAR的问题,造成坏块逐渐出现,可使用的闪存空间就会慢慢变少。所以闪存在设计的时候,会比宣称的容量,增加多余的块 (例如10%),来应付坏块还有OP的需求。
固态硬盘的固件需要另外额外的空间,来储存系统数据,和执行垃圾回收GC。这些额外的预留空间,称为OP (Over Provisioning)。OP越大,随机速度越好,写入放大(Write Amplification) 越低,固态硬盘使用寿命越长, 但却要占了更多的闪存空间。在执行垃圾回收时,OP的大小就像玩数字推盘游戏的空位,空位越多,需要移动的步数越少,解法越快越有效率。OP大小对垃圾回收的效率关系也是类似。通常企业级或高端的固态硬盘,需要大的OP,以较高的成本,来满足速度和使用寿命的要求。
再来我们厘清一下GB (Gigabyte) 和GiB (Gibibyte) 这两个单位的差别。市面上的储存产品,例如固态硬盘的容量,是以GB或TB为单位,而闪存或内存,是以GiB或TiB为单位。一个是十进制,一个是二进制:
由上表可知,1GiB实际上比1GB多了 7.37%的容量。这个多余的容量,可为固件提供基本的OP空间。例如一个足容的固态硬盘产品,固件实际仍有至少7.37%的OP可用。
至于容量的标准,固态技术协会JEDEC在它的JESD218A的标准中,明确定义固态硬盘容量和逻辑块LB数目的关系。以4KB 逻辑块大小为例,
4KB逻辑块数目
= 2646 + (244188 x 用户可用容量 GB)
例如256GB固态硬盘, 用户可寻址到2646 + (244188 x 256) = 62514774 个4KB逻辑块
在市面上不足容的固态硬盘产品中,除了OP的原因,另外是采用出厂时有较多坏块的闪存颗粒,所谓黑片白片,而非原厂正片的闪存颗粒。 这样的闪存,如果搭配适当的固件调适,还是可以应用在以成本为取向的低阶固态硬盘市场。
固件可利用动态的剩余空间,做为OP使用。如果用户追求的是效能和寿命,而不是容量, 可以在新盘做分区(Drive Partition) 时,设定总用户容量小于产品容量,这样就可以确保留下分区外的空间,再多给固件当作OP使用,进而增加硬盘效能和使用寿命。产品容量是市场的规格,不能因为坏块逐步增加而改变。随着时间增加的坏块,只会让可用的OP 空间逐渐减少。通常固件会侦测,一旦可用OP 空间低于一定的值,这个固态硬盘就无法再使用了。
总结来说固态硬盘容量,取决于使用的闪存颗粒 ,OP的大小和产品的定位。高端的产品 使用较大的OP ,来满足性能上的需求。所以固态硬盘容量不一定越高越好,用户在选购时,可以多思考比较,把钱花在对的需求上。