高手速成:读懂固态硬盘中的“黑话”
正所谓"外行看热闹,内行看门道",很多朋友搜寻一款固态硬盘的信息主要看性能跑分,而知识更加丰富的玩家则会重点关注这款固态硬盘的硬件架构,闪存规格以及主控、固件的口碑。毕竟除了跑分,还有很多因素影响着固态硬盘到底是否好用。
今天存储极客就将带你深入到固态硬盘以及闪存的基础知识当中,带你看懂行业"黑话",不再一脸懵逼。
Channel:通道提到一个固态硬盘的通道数量,多数时候说的是闪存通道,但M.2 NVMe固态硬盘会有PCIE通道的参数。我们这里谈的是前者。
闪存通道数量直接反映了固态硬盘的并发读写能力。可以简单理解为马路上有多少条车道,显然通道数量越多,理论性能越好。当然,还有很多影响因素,通道数量只是一个底子。
CE:片选信号紧跟闪存通道之后的往往就是CE数量。经常可以在一些固态硬盘评测中看到这样的介绍,某某主控支持X通道,每通道支持Y CE。CE是Chip Enable片选的缩写,下图是一个东芝闪存颗粒的逻辑结构,2 Die封装,拥有两个CE信号。
除了通道可以并行提升吞吐量之外,多CE交错也可以提高固态硬盘性能。主控的闪存通道以及每通道支持的CE数量还会影响它最终能够提供多大的固态硬盘容量。
Package:封装
我们能够看到的一颗闪存就是一个Package封装,它有TSOP或者BGA两种形态,前者的引脚在封装两侧引出,后者则在封装的底部拥有一个球栅阵列。下图是东芝TR200固态硬盘中使用的TSOP封装闪存颗粒。TSOP和BGA本身没有好坏之分,通常在空间足够的情况下使用TSOP,而M.2固态硬盘则大都选择封装密度更高的BGA形态。BGA封装还有一个优势:每个颗粒能支持2个甚至4个闪存通道,而TSOP只能支持1个。
我们在上边看到的黑色颗粒并不是闪存的本来面目,那只是一到多个芯片通过引线键合或者TSV硅通孔工艺完成连接之后,再用树脂材料封装并引出针脚。而芯片则是从闪存晶圆中摘下的一小片合格晶粒。
俗称的原片就是由原厂检测并封装、打上原厂商标的高品质颗粒,原厂固态硬盘,比如上面提到的东芝TR200当中使用的就是这种类型的闪存。而白片则是未经原厂认证的不明体制闪存芯片封装成的闪存颗粒;黑片是在检测中明确被淘汰的下脚料,被利益熏心的人低价回收后赌人品。
Die:这里并不是死的意思
Die也被称作LUN(逻辑单元),也是闪存内可执行命令并回报自身状态的最小独立单元。下图是由4个Plane组成两个Die,两个die组成的芯片。
单Die容量是衡量闪存技术先进性的一个指标。单Die容量越大意味着闪存存储密度越高,做出来的固态硬盘容量也就越大。目前东芝第三代3D TLC闪存已经实现512Gb的单Die容量,如果是QLC类型,则能达到768Gb的水平。
Plane:面
一个闪存Die可以拥有1到多个Plane面。下图是东芝BiCS3闪存的一个512Gb Die,包含了两个256Gb容量的Plane面,总容量512Gb。
Block:块
接下来就到了微观领域,通常是无法直接看到外观的层级。NAND闪存自问世那一刻起就有一个恒定不变的使用要求:写入(Program)数据前必须先进行擦除(Erase),而闪存的最小擦除单位就是Block块。
Page:页
每个Block都是由数百乃是数千个Page页组成的,而Page的意义也非比寻常,它是闪存当中能够读取合写入的最小单位。当前闪存的一个Page通常是16KB,如果你需要读取512字节的数据,那在闪存层面上就必须把包含这512字节数据的整个Page页内容全部读出(实际发生的读取16KB)。
Cell:单元
每个16KB的Page页又是由大量的Cell单元构成。Cell是闪存的最小工作单位,执行数据存储的任务。闪存根据每个单元内可存储的数据量分成SLC(1bit/Cell)、MLC(2bit/Cell)、TLC(3bit/Cell)和QLC(4bit/Cell),成本依次降低,容量依次增大,耐用度也依次降低。目前3D TLC是闪存的主力类型,优质的原厂闪存配合具备LDPC纠错的主控,可以实现3000次左右的擦写寿命,与过去2D平面MLC闪存接近。
篇幅所限,本文中只能简单介绍闪存的知识,更多内容敬请收藏并关注存储极客的头条号。
这块SSD为何获评表面固态硬盘?解密光鲜跑分背后的秘密
固态硬盘应该怎么选?佛系用户的答案是不是随便买,都行都可以,没关系,只要便宜就好?
1元1GB还要什么自行车?有玩家上了秋名山“老司机”的车却又中途跳车,699元开车的七彩虹SL500 640G中究竟发生了什么,让他发出“表面固态”的长文批判?这块固态硬盘辗转到达了PCEVA手中,让我们一起来看其中奥妙。
既然是表面固态,先来看看它的表面成绩吧。它的AS测试成绩还凑合,秋名山也把AS 10G测试当作了卖点。这是因为SL500 640G使用了全盘SLC Cache,空盘条件下等同全跑在SLC缓存里,空盘即便连续写上200GB都不会掉速,又何惧你10GB写入测试?
然而有细心玩家发现,实际使用中这块固态硬盘卡顿明显,经过空盘和使用250G以上容量后的对比测试,终于发现这是一张拥有两张脸的表面固态硬盘。
空盘PC Mark 7成绩5053分,比金士顿入门级的A400 240G还要低一些,不过还算凑合能看的水平。
再看空盘条件下PC Mark 8成绩,七彩虹SL500 640G能够拿到4924分,勉强取得入门级中流水平,这已经是它能够拿出的最好成绩了。
看到这里佛系用户也许还会说都行,可以,没关系。不要紧,继续往下看。
作为一张格式化后596GB的固态硬盘,当盘内已使用空间达到256GB以上时,七彩虹SL500 640G的PC Mark 7存储测试成绩直降366分,变成了4687。这时我在大厂固态硬盘中已经找不到能和它匹配的型号了,哪怕是120GB也没有这么慢的。
盘内已使用空间达到256GB以上时,PC Mark 8存储测试评分4615分,相比空盘时成绩降低了309分,直接落入比丐中丐还要低的水平,而这才是七彩虹SL500 640G真正的日常使用性能体现。
入门级120G固态硬盘的PCM8得分基本都在4850分以上,在50分就能差出一个等级的PC Mark 8存储测试当中,4615分是一个表面固态硬盘该有的分数。
为何七彩虹SL500 640G使用“BGA封装、Intel原装3D闪存”这样高大上的硬件,却提供了如此不堪的两面派表现?简单说就是这款佛系固态硬盘虽然使用了3D闪存,但却只有两个闪存通道;虽然闪存实际拥有高达768GB的物理容量,但却只搭配了无外置缓存的SMI 2258XT主控;虽然努力用全盘SLC算法营造了一个漂亮的外表性能,但却为了保命放弃了固态硬盘最最基本的闲置垃圾回收机制。
好了关于七彩虹SL500 640G最基本的问题我已经回答完毕,如果你还对这块固态硬盘深层次的内幕有兴趣,请继续读下去,文章比较长是为了让大家从深层次看透这块固态硬盘,如果你现在没有时间,可以用佛系心态先收藏起来慢慢品读。
针对SL500 640G的三大罪一条一条分析,首先是虽然使用了3D闪存,但却只有两个闪存通道。 拆解图中明白可见它只有一颗闪存颗粒,这里先不纠为何“原装闪存”会出现批号数字间隔不同这种细节,七彩虹肯定能给大家很多种解释的。
通过随处可得的SMI开卡工具可知SL500 640G是将MLC类型的L06B闪存开成了TLC类型的TLC类型的B0KB使用。这并不是七彩虹的独家秘籍,而是Intel/美光的这款闪存原本就被设计为MLC/TLC两用。如果仅仅是把MLC开成TLC还不足以造成如此恶劣的后果,但一颗闪存仅能利用主控4个闪存通道其中的2个,这无疑让性能恶化变得雪上加霜。
29F04T2AWCMG2使用了16Die封装,如果按MLC类型的L06B开卡的话它有512GB容量,七彩虹SL500 640G是按TLC类型的B0KB去开卡,因此闪存总容量有768GB,但是它仅仅开放了640G给用户使用。
七彩虹SL500 640G的第二个问题:虽然闪存实际拥有高达768GB的物理容量,但却只搭配了无外置缓存的SMI 2258XT主控。 无外置缓存方案通常适合小容量固态硬盘使用,而搭配大容量闪存时FTL闪存映射表体积过大,将映射表在闪存与主控内置SRAM之间交换容易产生一些问题体现在SL500 640G当中就是,当QD队列深度大于等于2时,普通的纯随机读取都会发生明显的数据传输中断与无响应状况:
虽说七彩虹SL500 640G使用无外置缓存方案不擅长随机读写,但类似BUG并没有发生在其他同样采用无外置缓存方案的固态硬盘当中。遭遇过固态硬盘卡顿BUG的朋友应该都有印象,时不时的卡顿会让固态硬盘用起来比机械盘还难受。由于慧荣采取了和群联截然不同的销售方式,使用SMI主控的非原厂品牌固态硬盘较少有可能获得固件更新和维护,这个BUG或将伴随SL500 640G终身。
除了上边提到的BUG之外,混合读写性能差也极大影响了SL500 640G实际使用性能,甚至于以空盘状态下的读写性能也不比普通TLC固态硬盘好到哪里去。
4K随机读取,队列深度为1时, 80%读取20%写入的条件下性能就会降到16.38MB/s读取、4.03MB/s写入的水平。60%读取40%写入的情况下就更糟糕了,读取和写入带宽加一起还不到20MB/s。
接下来看4K随机读写,队列深度等于32的情况。或许有人会说,七彩虹SL500 640G使用的是无外置缓存的主控,你这样测混合读写是吹毛求疵啊,还真不是,像七彩虹这样烂的性能并不多见。这里的测试区间只有512MB,还没有测到SLC缓存用完后强制垃圾回收的表现,那样的话就完全不能看了。
混合读写是直接影响日常使用体验的——电脑实际使用中不是像理论跑分软件那样读取的时候只读取,写入的时候只写入。Windows作为多任务操作系统,很多程序和后台服务进程同时运行,即便再轻度的使用,实际对于硬盘来说都是读取和写入混杂进行。这也是只看表面AS SSD Benchmark跑分发现不了日常使用速度慢的原因。
七彩虹SL500 640G的第三个问题:努力用全盘SLC算法营造了一个漂亮的外表性能,但却为了保命放弃了固态硬盘最基本的闲置垃圾回收机制。 外表性能和实用性能的巨大差异前边已经说过了,这里来分析SL500奇葩的垃圾回收机制。
固态硬盘和优盘主要有两个不同:优盘通常最多2个闪存通道,而固态硬盘通常有4到8个通道;优盘通常不设闲置垃圾回收机制以避免突然拔掉优盘时数据出错,而固态硬盘为了性能大都会在闲置时进行主动垃圾回收,提前擦除无效数据块,整理出空白块以备数据写入时直接使用。
在七彩虹SL500 640G身上,它只具备优盘级别的2个闪存通道,同优盘一样靠被动强制GC垃圾回收来降低写入放大率。由于应用了全盘SLC模式,不设闲置垃圾回收意味着被写入的数据有机会在被强制GC为TLC态之前就被删除掉,这样就不会消耗闪存的TLC擦写次数,通过龟缩式防守提升理论写入寿命。
SL500 640G非常大胆地在TLC闪存上使用了全盘SLC模式。768GB的闪存容量理论上可以模拟成256GB的SLC缓存,在缓存内以SLC形式写入可达到450MB/s的高速度。而超出缓存之后就需要将部分数据释放为TLC状态,省出空间后再写入,边GC边写入造成了SL500 640G在SLC缓存外的写入性能奇差,尤其是性能一致性劣化到几乎无从谈起的地步。
上图HDTach展示了全盘范围的写入速度变化,由于SL500 640G按照TLC开卡后闪存容量实际有768GB,全盘SLC模式理论上能够提供256GB的全速写入空间,而在这之后就是边GC边写入。
全盘SLC模式是一个比较激进的策略,在此之前只有部分MLC闪存固态硬盘应用,并且SLC缓存的范围会随着用户使用容量的变化的自动调整:当用户写入停下时自动将已写为SLC状态的数据释放回MLC状态,剩余空间继续做SLC模式接受新的写入。
不过在SL500 640G这里,七彩虹做出了一个堪称前无古人的疯狂举动:它不会主动释放SLC缓存,只会在闪存无处可写时才进行实时的GC释放。实时GC释放会造成性能极度恶化,尤其在SM2258XT这种无外置缓存的低端主控上更为明显,当缓存用尽时,固态硬盘会进入持续100%占用状态,每隔20秒左右才会响应一次:
如何形容这种酸爽?桌面程序挨个点,一点反映都没有,等上20秒才拖拖拉拉的开始出现软件界面,这给人的使用体验是非常糟糕的。过去机械硬盘速度慢,但是硬盘工作时发出的噪音会提示用户当前正在工作,而固态硬盘工作是无声的,加上现在很多品牌机都取消了硬盘读写指示灯,用户在固态硬盘卡住的时候得不到任何电脑仍在工作中的提示,就那么卡在那里动弹不得,比CPU满载更容易让人抓狂。
有朋友肯定会说,轻度写入的家庭用户是不是就没有这种问题了呢?表面上看是的,七彩虹SL500 640G在盘内空间使用超过256GB之后会保留至多8GB左右的SLC空间可直接写入。
但在这部分小容量SLC缓存之外,七彩虹SL500 640G并不会进行闲置垃圾回收了。无论你的使用负载有多轻,给它多久的休息时间,它都不会进行垃圾回收工作,以此来尽可能让写入的数据保持在SLC状态,避免写入放大的提升,减少闪存磨损,即便这样会给性能造成极大伤害也在所不惜。
前边已经展示过的PC Mark 8测试成绩已经能够代表七彩虹SL500 640G的家用轻度使用性能,比之当前市售的丐中丐产品还要更慢,减少写入负载也无法弥补它混合读写性能差的缺陷。
更多的延伸测试:为已经上车的朋友找出路
七彩虹用768GB的NAND容量做了全盘SLC模式,那么如果增设用户OP,直接把SL500 640G当成完整SLC使用能解决性能稀烂的问题吗?使用HDAT2或者ATATool可以给固态硬盘增设OP预留空间,现在将七彩虹SL500 640G进行Secure Erase,然后OP缩减成240GB容量,理论上现在就是完全SLC模式了。
现在来看SL500 640G OP到240GB之后的性能表现,持续写入不再掉速,看起来是不是漂亮多了?不过699元原本就能买到更高性能的原厂240GB MLC闪存固态硬盘,谁还会选一款存在天生缺陷的产品呢?
即便完全以SLC模式工作,混合读写性能差的缺陷也决定了它只能发挥出一款入门固态硬盘的中等性能水平,这已经是它最好的结局了。
从测试过程也能发现,这张七彩虹SL500 640G的SLC写入部分是不计入NAND写入量的,当主机写入增加了940G的时候,NAND写入量只增长了48GB,写放大远小于1。闪存以SLC模式使用虽然寿命相比TLC使用会提升,但却也无法与真正的SLC闪存相提并论。这里NAND写入量统计不再能真正体现它的闪存磨损水平。
699元的240G真的一抓一大把,完全有的挑。七彩虹之所以要做这么个奇葩容量出来,其实就是牺牲实际使用性能,搞出一个空盘测试看似性价比爆棚的噱头出来吸引眼球。真正走量的可能是按MLC开卡成480GB的型号,至于那块盘怎么样,有网友反应也存在类似的问题,如有网友想深究可以发盘来给我们测。
我们已经测试过两种SM2258XT主控搭配Intel 3D闪存的固态硬盘,一个是台电S500 128G,结果发现它没有磨损均衡;另一个是七彩虹SL500 640G,结果发现它没有闲置GC垃圾回收。两个硬伤究竟是固件疏忽,还是有意而为,或许只有慧荣自己明白了。
最后让我们脑补一下七彩虹这个奇葩硬件方案诞生的原因:美光的第一代3D闪存有一个比较大的缺陷那就是不支持Copy Back,导致SLC缓存释放效率非常低,缓存用尽后写入速度低下并且波动地很厉害。这一点我们在Intel 600p上就能非常清楚的看到:
在MX300当中美光通过全盘动态SLC来掩盖这个问题,MX300拥有4个闪存通道,并且拥有闲置GC垃圾回收,会主动释放SLC缓存确保家用条件可持续的性能发挥。而只有2个闪存通道的台电和七彩虹的SM2258XT固件也应用了全盘SLC算法,这个算法有写入放大方面的劣势,所以七彩虹在SL500 640G里干脆不做闲置垃圾回收,通过被动强制垃圾回收策略让尽可能多的数据保持在SLC状态,牺牲性能全力保命。SL500同时还使用了无外置缓存的硬件方案,在搭配大容量闪存时FTL闪存映射表的管理也会遇到一些麻烦,最终各种不利因素合并在一起,共同造成了SL500 640G综合性能惨不忍睹的结局。
相关问答
flash烧录和ic烧录?,IC烧录设备该怎么选,都来说说?[回答](烧uboot和内核)比如直接nanderase全擦除。然后再把文件写到内存tftp内存地址文件名然后再nandwrite进去的。根文件系统是把板子分区挂载起来后再烧...
CAD中trim命令怎么用?修剪Trim的字面意思是修剪、整理。Trim指令的作用就是在电脑删除文件的时候,额外通过它直接通知到固态硬盘,具体哪些地址的数据已经被删除、可以从闪存当中清...
用了两年的固态,掉速严重,上网卡顿,怎么才能恢复原来的速度?现在有些主板BIOS里面就带有SecureErase功能还有一种SSD用久后掉速的可能,特别是那种用全盘SLCCache方案的,SSD用久后里面数据越来越多,可用空间减少,划...所...