& ?- b2 h7 ?& |1 s* S; V就像这条2TB的宏碁掠夺者GM7000,在PCB板的正面,分别放置了NAND闪存颗粒、主控芯片和一枚1GB的DRAM缓存颗粒: 9 t; C& ~/ V r5 f" h; b同时在GM7000的背面,还有NAND闪存颗粒和DRAM缓存颗粒,也就是我们常说的双面颗粒布局: 7 U; s6 z/ _$ z% M4 M/ f其实DRAM缓存并不神秘,其本质就是咱们在电脑内存条上可以看到的内存颗粒而已;与之相反的是,SLC缓存只是一个算法上的概念,并非是具备实体的硬件。 9 G, Y1 l8 l/ f0 M8 H3 ` 9 |# S7 p7 c& H& Y8 t$ p- i* h k* d5 k2 h! u7 E
“那么,古尔丹,代价是什么呢?” 4 E9 A$ k+ [/ T9 n有缓SSD虽然在性能方面更好些,但也不是没有代价的。额外的DRAM缓存颗粒会带来更大的功耗,对主控的性能也提出了更高的要求,由此也带来了更大发热和更高的温度,在价格方面整体也要相比DRAM-Less无缓盘更贵些。9 D# @( U8 q7 m; V+ ]' q
' n4 t+ n3 l1 f+ T5 S
而无缓SSD是啥样的? 3 [, M2 N$ |% l4 N9 P7 o2 k顾名思义,没有独立DRAM缓存的SSD则称之为DRAM-Less无缓SSD,例如致态TiPlus7100、宏碁掠夺者GM7等等都属于这个范畴。3 h2 ^; _# Q) D% v+ F
目前国产SSD大量采用了搭载联芸MAP1602系列主控的最新无缓方案,会采用HMB技术,通过占用一小部分电脑内存(一般在40MB以内)来替代SSD上的独立DRAM缓存颗粒,以达成存储简化版的FTL映射表的目的。, L4 ^% I$ s6 i. S) W. k E( @$ ~
) I' Z; Q8 p3 P" x& N t( _: D5 Z
事实上,由于消费级SSD普遍有着SLC Cache技术的加持,所以在SLC Cache容量范围内可以提供更加精简的FTL映射结构、更低的读写延迟和更高的混合性能,这也使得HMB技术得以借用较小的主机内存容量,来达成接近有缓SSD的FTL映射表查找效率。9 W0 Y2 F+ r1 l. Q
DRAM-Less无缓SSD在随机读写性能方面稍弱于有缓SSD,不过在目前日趋成熟的HMB技术和SLC Cache机制的加持下,二者在中轻度负载场景中的使用体验已经非常接近了。 7 {1 J- Z, E8 J$ L( i 1 F3 T+ l' B# m: ^- ?同时,无缓SSD还有价格便宜、发热更低的优点,尤其特别适合适合笔记本、迷你主机等散热空间狭小的设备,这也是目前更推荐大家入手的SSD种类。 ' y; K/ }3 e) C4 G" K% V& B$ ]% ]. R4 h( L7 W- \9 M: @6 U. i
宏碁掠夺者GM7这款DRAM-Less无缓SSD,可以看到在GM7的PCB板上没有DRAM颗粒,只有一枚主控芯片和四枚NAND闪存颗粒: ! s) p* }. [8 x8 s9 v' m对比宏碁掠夺者GM7000和GM7的背面,可以看到身为无缓SSD的GM7只有一枚标签贴纸,并没有其他零件了:* [% L8 n# r/ }$ H# v) L! f% O
; P/ e' _0 l+ N
- ]8 _' N+ z7 }5 e- Z
综合来看,旗舰有缓SSD虽然性能更强,但是个人觉得其实更适合发烧友和生产力用户选择,像家用、办公以及玩游戏等需求的话,其实发挥不出有缓SSD的性能优势来。 t3 f2 e* @3 ~2 D) m
/ K% F; I# k- b9 U% y9 o; ^9 u
二、DRAM缓存的作用是什么?0 j% T! }9 P# G% T$ k2 i" M
上一节只是简要介绍了SSD的有缓/无缓方案,下面我们就从技术的角度分析,来看看DRAM缓存的作用到底是什么。# w% c/ k5 ? ^2 S# Z( u, m
该部分内容有点枯燥,看不进去的朋友可以直接跳转至结尾看选购总结哈。& U9 e+ ?. {0 `
1.DRAM缓存可以存储FTL闪存映射表) h0 _, R8 L7 ~; X* k) @+ k
闪存颗粒的物理特性决定了它不能覆盖写入,一般来说,其擦除以Block(块)为单位,而写入以Page(页)为单位。 , h# {! l# H/ W% b) i" jPage中含有非常多的存储单元,是闪存颗粒写入数据的最小单位: 8 i- X" k- K! \9 ]8 I. X' Y2 W v6 a: u$ a" I k
同时Block是Page的上级单位,一个Block中有很多个Page:* W; w9 R* J* i: e2 `1 ?! f8 o
7 W4 B1 p p' [8 }一般来讲,足量的消费级有缓SSD中,DRAM缓存的主要作用是存储FTL闪存映射表,其与闪存颗粒的容量比例为1:1000,FTL映射表在SSD中就像一本书的目录一样,储存着数据从逻辑地址到物理地址的映射关系。 6 K- c% P, S: l4 C E 6 {. D9 R6 y; {- B# k当主机发来读命令时,SSD能根据需要读取的逻辑数据块查找FTL映射表,获取这些逻辑数据在闪存空间所在的位置,后端便能从闪存上把对应数据读到SSD内部缓存空间,然后前端负责把这些数据返回给主机。% l. E5 e" j: R+ _* i
n6 e$ f- |3 `9 o2 ~
由于DRAM缓存的读写性能和低延迟表现要远远优于闪存颗粒,所以有缓SSD会充分利用这个特性,在SSD通电时将保存在SSD预留空间中的FTL映射表写入DRAM颗粒中。" a) J5 _ `0 H# R
A0 t3 `3 _# d( ]; N. [
咱们想要读写闪存颗粒中的数据时,可以通过DRAM缓存中保存的FTL快速找到相应位置,从而提高一块固态硬盘的随机读写速度、降低查找数据保存位置时的延迟。清注意,这个机制对于随机读写的加成较大,对顺序读写的性能影响很小很小。+ f& ]$ v/ Y1 {2 k" K( n
2.DRAM缓存还可以在脏盘状态下提高读写性能: }+ z, C5 ~0 ]) n6 { r( W
在使用闪存颗粒作为存储介质的SSD中,如果我们要对一个已有数据的Page进行写入,那么必须先要把这个Page所在的Block中的数据读出,暂时保存到一个空白的Block中,待第一个Block清空后再把所有数据写进去。 / b7 Y+ ^5 z' q# v* f在我们眼里一个简单的对SSD的写入数据操作,一旦遇到脏盘情况下,就会分解成先读再擦后写(READ-ERASE-WRITE)三个步骤,并在过程中会造成写入放大问题。 2 H$ @* q2 T! h5 _ A. J. N( ?& V0 O9 g! S
显而易见的,这会增加闪存颗粒的写入量,消耗写入寿命,同时在写入过程中还会提高写入延迟、影响写入速度。) s. \) D. t0 O
如果在这个写入过程中,SSD上还有我们在操作系统中已经删除、但是只做了标记但未实际进行擦除的数据的话,还需要经过一个更加复杂的垃圾回收+擦写操作,进一步影响SSD的写入量和性能。% r% }: I* e8 w
而有缓SSD中的DRAM缓存由于速度、延迟等方面的性能明显要好于闪存颗粒,所以在向一个Block写入数据的过程中,如果Block中的Page中已有数据,那么可以使用DRAM作为中转站,先将Page中的数据转移到DRAM中,然后将Block整个擦成空白块后填入需要写入的新数据,最后将DRAM中转站里保存的原Page数据挪到其他Block里。2 t) _. m1 h2 r+ Q4 n
# p8 o1 R9 L, r0 N) H4 q" l发现了吗?在这个过程中由于DRAM的参与,还减少了一部分对闪存颗粒的写入量,同时还加快了整个R-E-W的过程,减少了写入延迟。 1 t- g# @. P. N) u3 o& ?接下来让我们把问题进一步复杂化,当SLC Cache容量耗尽时,有一个需要将原本SLC Cache空间内的数据重写回TLC模式的过程,我们称之为SLC Cache释放,在这其中要面临大量擦写操作。而在固件的加持下,部分SSD的DRAM缓存也能在这个过程中起到缓解写入放大的作用。 9 ^0 p6 T0 S! O+ w这也即是说,独立DRAM缓存在SSD中其实起着万金油的作用,这也是各大存储厂商的消费级旗舰SSD以及更加昂贵的企业级SSD一般都会采用有缓方案的原因。 . x' j z3 q4 C: { B5 ]+ d1 `$ {% U* g* b5 I! p5 I. e1 L7 ]2 _/ A2 ^( Y3 e: q( a
三、有缓SSD、无缓SSD,用起来有啥区别? * M( x/ w+ c( E现在技术原理我们已经了解了,那么有缓SSD和无缓SSD在我们实际使用过程中,到底有啥不一样的体验呢?' X9 R7 u F V( r/ h5 H" L$ C5 z
1.性能 / X; `# ]' c5 F' ], [有一个冷酷的事实是,有缓SSD与无缓SSD在中轻度使用场景中很难有可察觉的区别。 # V0 N3 J. O& g @6 B% k$ Z像CrystalDiskMark这类测试软件,在进行测试前会先向SSD中写入一个测试文件,然后在这个测试文件的范围内进行一系列读写操作,这也意味着我们看到测速结果,都是基于刚刚写入SLC Cache中的状态。 2 O9 G4 h v7 C3 X" E! [前面我们已经讲过,由于SLC Cache对于FTL的精简效应等优势,在此范围内无论顺序还是随机读写都会有所加成。 & h* [# p. x2 g% O这也是有缓SSD与无缓SSD在CrystalDiskMark测试项目中,并不会拉开太大差距的主要原因。 & j4 M# w" o4 i" w$ U2 h& x% l0 r* b
以宏碁掠夺者GM7000和GM7为例,其二者在CrystalDiskMark的测试结果就堪称相差无几,顺序读取速度均能达到Intel平台的7150MB/s上限附近,顺序写入速度也能达到6500MB/s左右,甚至GM7凭借优秀的固件和算法加成,在Q1T1 4K随机写入速度上还反超了GM7000一筹,达到了94MB/s。 % W; ]( J3 w4 N. h/ V大家平时使用SSD时,最常用到的高负载场景应该就是大文件拷贝的场景吧,而在这种场景下,有缓SSD与无缓SSD其实也拉不开什么差距——大家都是消费级SSD,都针对低队列读写有专门优化,在速度方面其实相差无几。, v7 N. s& n' Z! ~1 v
2 D; {; `- s7 j8 d% v. i, ^. x2 ]. F$ O而有些新手朋友在意的能持续写入多大容量不掉速的能力,其实更多的是与不同SSD之间的SLC Cache方案有关系,这基本上依赖于厂家对于SSD固件策略的调校。% G1 k) K- h. c8 U/ {' H! ]& e; V1 {( I
5 H0 x& p" C* i* X
在SSD容量足够大的前提下,成熟的SLC Cache策略给用户带来的不止是爆发式写入性能的提升,而且更加精简的FTL映射结构、更低的延迟和更高的混合读写性能,以及在SSD高占用状态下降低频繁R-E-W擦写造成的性能与寿命损耗问题都是重要关键。6 t, f: u9 n. s' a
以宏碁掠夺者GM7000 2TB为例,下图为RAW格式下全盘顺序读写测试(128KB,Q32T1)的曲线图。可以看到,GM7000在全盘范围内的顺序读取曲线都相当稳定,基本全程都能保持在6800MB/s左右。而写入曲线方面,GM7000的缓内写入速度能稳定在6400MB/s,并且SLC Cache为650GB左右,占据了全盘可用容量的1/3,明显是和SN850X类似的典型全盘模拟SLC方案。 ^7 D! U9 ~2 M- O% u$ R- M
在SLC Cache写满之后,随后而来的是大约150GB的TLC直写过程,速度能达到2000MB/s左右。那么在SLC Cache已经耗尽的情况下,是如何实现这一小段TLC直写的呢?从数据写入量上来推测,个人盲猜GM7000应该是将总容量7%左右的一级OP也拿出来提供写入了,与此同时主控还在进行SLC Cache释放的操作,最终实现了比一级OP略大的TLC直写阶段。+ {# C! p0 @9 i: [6 s& m% Q+ O
3 `! Y5 ]2 l: E. e, O
在全盘写入的最后第三段,GM7000的主控要同时进行SLC Cache释放和新数据写入的操作,负载压力达到了最大化,所以写入速度进一步下降。在此过程中,前半程由于主控释放SLC Cache的Write Back操作非常积极,使得部分写入数据落入了空白块中,写入速度有短暂回升到TLC直写速度的波动,最后随着空白块耗尽,终于进入了稳定的Write Back+R-E-W低速区间,速度在750MB/s左右。9 p: H9 r' U8 ^/ `% P8 C% }( [4 Y/ n
) Q6 y& ~- l- `0 y/ R m9 k接下来我们看看宏碁掠夺者GM7的表现,同为优秀的国产SSD,这款SSD采用了另一套不同的SLC Cache方案。 + T R, m- ]& v, V% d3 A1 E% X9 v% p
宏碁掠夺者GM7与致态TiPlus7100类似,SLC缓存容量给的是国产SSD中比较少的,空盘状态下也只提供了10%左右的空闲容量进行SLC Cache模拟,而没有使用的半盘模拟方案。 " j* G9 l0 z8 a: {/ fSLC Cache容量并非越大越好,用于模拟SLC的容量越大,可提供的爆发式写入时间越长,但是也会使得垃圾回收阶段压力更大,进而导致全盘平均写入速度越慢。 & l: `' x$ U) }宏碁掠夺者GM7的SLC Cache方案更像是综合了性能与体验之后的折中选择,整体主控调校方向更倾向于优化平均写入速度。 . R4 j) x' q; L说起来,200G的SLC Cache对于普通家用用户完全是足够用的了,再强行加大SLC Cache也不会带来什么体验上的提升,反而不如充分利用长江存储颗粒强悍的直写性能,给主控腾出手来,减少一段速度最慢的垃圾回收阶段浪费的时间。 7 A7 d$ z5 {4 o ! c. O% Z' i4 U1 c. c可以看到第二段曲线显示的是TLC颗粒的直接写入性能,此时没有了SLC Cache的干扰,我们可以发现宏碁掠夺者GM7的直写性能极强,平均速度能达到3500MB/s左右,这个速度表现和致态TiPlus7100 2TB非常类似,在我测试过的国产SSD中妥妥的属于T0梯队——使用232L X3-9070颗粒的其他国产SSD,在TLC直写阶段的速度一般只有2500MB/s左右。) @* Y' _' b0 e3 Z o1 C5 t# P
而同样在主控压力最大的第三段写入曲线,宏碁掠夺者GM7依然能维持在900MB/s左右,这在国产SSD中也是第一梯队的速度了。 5 L, J4 p' N) v* w6 Q& U$ f7 D& _9 i1 a0 a$ }6 Y4 A$ d5 k# A
; W- ~- w5 d' ]6 B. @; V9 B3 J. ~% @
那二者到底啥时候能用出区别?( h" V' @* ~6 o% H% ?6 {
众所周知,我们在日常使用电脑时,操作系统会在后台不定时读取许多零碎的小文件,而这也就意味着SSD的随机读取性能是影响我们日常使用流畅性的关键。虽然SSD的真实运行过程是各种粒度、各种读写比例混杂的复杂流程,但是从4K小粒度随机读写的性能中,我们可以管中窥豹。图片# l5 m9 N4 n0 i" B* D
在实际场景中,写入SLC Cache的数据并不是始终享受到加速福利的。一般来讲,SSD主控会随着时间推移,将这部分数据释放到TLC区域内,只不过各家主控和固件不同,释放SLC Cache的积极性也有所区别而已。 & n4 k, g& ^% ~4 D' d所以说,我们日常使用电脑时,打开软件或者加载游戏等操作,所访问的基本都是已经被挪出SLC Cache外、TLC区域内的数据,示意图如下: 4 x& ]$ z9 x: D4 _在这种情况下,有着DRAM缓存的SSD就能在真实的4K随机读取性能方面取得优势。鉴于此,我们对宏碁掠夺者GM7 2T和GM7000 2T的缓外4K随机直读性能进行了测试。% v1 @ k* [+ |, s
: w) L; [3 p1 l0 n! p' H& A其中GM7 2T的平均速度为32.27MB/s左右,与致态TiPlus7100 2T基本一致,而GM7000 2TB的SLC缓外真实4K随机读取速度在51MB/s左右,明显高得多。 ~# ~, c5 y/ x 2 _: l. I9 V/ \, b这也使得带有独立DRAM缓存的SSD在工业软件、数据库应用、大量修图剪辑等重度生产力场景中才能更好地发挥出优势,普通玩家其实不太需要在意这个有缓/无缓的问题。 ( [ v: E T) D. G而在游戏应用环境中,传统理论认为,在游戏加载过程中会加载大量碎片化小文件,所以SSD的随机读取能力会极大地影响载入速度。1 ~% i& w7 ?: r% L1 X" v% Q
不过游戏厂商也注意到了这个问题,已经对此进行了优化。7 u$ t1 k. k2 S) {! x. s: ?
当前大多数游戏在载入时会有CPU参与对游戏文件进行解压,然后以类似顺序读取的方式载入游戏数据,这也使得旗舰机有缓SSD在游戏载入方面虽然有一些优势,但其实并不明显,可能得掐着秒表才能察觉出来这个样子。 # y; u0 ^0 o# \) _! V# o还是以宏碁掠夺者GM7和GM7000为例,二者在载入原神时,GM7在载入原神时已经很快了,我这儿实测速度能压到10s以内,达到9.6s。而GM7000作为有缓SSD,也就比GM7快了1s而已,这点差距其实说不上大。$ h5 a! q7 d: U
X% U# w" s9 k' A) r7 J2.温度 6 v7 _. Y7 }2 Z2 C. v5 b+ S与性能相反,有缓SSD和无缓SSD在功耗和发热方面的表现会有更加明显的差别。# e/ v: w6 J1 w0 Q& x
最明显的案例是,宏碁掠夺者GM7和GM7000作为同门师兄弟,在出厂散热方面的待遇截然不同。 3 K* B. J z9 z宏碁掠夺者GM7的发热较小,温度控制得极佳,所以在出厂时只需要在正面贴一张石墨烯散热贴纸就能很好的进行均热和散热工作了,不仅更加轻薄,用起来也更加放心:4 ]( P X& z. S7 ~8 s( N: E
宏碁掠夺者GM7000作为有缓SSD,厂商考虑到玩家可能会担心散热贴纸压不住发热的情况,干脆将散热贴片和本体分开包装,方便咱们自行使用金属散热装甲之类进行压制。( M8 G4 K* S9 Z. F! n5 d M8 i
% B. K3 M8 z+ X$ ?
不仅如此,GM7000就连附赠的石墨烯散热贴片都要比GM7厚得多,目测都快有1mm厚了。8 E3 P. q9 R* G3 z* N D/ K( ]- W. _