PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

SandForce主控进一步深入研究。

  [复制链接]
跳转到指定楼层
1#
点击数:50204|回复数:82
不是很了解的可以先看这篇:

Sandforce算法


按照上面帖子里的图我再解释清楚点。


第一部分:



如果你在硬盘里有个10MB的excel文档,这个文档我假设能压缩到原本的20%,也就是压缩到2MB。
你现在决定复制这个文件到你的SandForce主控的SSD里,随着你的“复制”命令,这个文件从硬盘读取出10MB,然后以硬盘的速度传输到SSD,当这个10MB的文件进入了SSD主控后,被压缩到了2MB,然后这个2MB的数据被写入了NAND颗粒。但是在操作系统里仍然看到的是10MB的占用率,因为操作系统记录的LBA还是10MB地址。其实SSD只用了2MB的NAND颗粒存储了这个数据,所以对于这个SSD来说,另外的8MB多出来的动态空间就像SSD的Trim操作后多出来的空白空间一样,可以作为GC和磨损算法的使用。
已经被加密或者压缩过的数据一般是不能再被压缩的(至少是很难压缩,压缩率很低),所以这类文件在SandForce的算法下,只能跑出接近Raw的速度(原始颗粒速度)
现在,继续模拟操作10MB的Excel文档,如果之后,你准备从SSD里打开这个文件时,从NAND颗粒里读出2MB的数据,进入主控里解压缩然后送进系统内存,让我们假设我们花了10ms读取了这个2MB的文件,那么就是200MB/s的读取速度,但是在主控里,他被解压成了10MB,也就是大了5倍,看上去就变成了1000MB/s的速度,但由于SATA 3Gbp/s的限制在280~290MB/s,所以花了约34ms来传输到内存,如果这个SSD的外部总线是SATA 6Gbp/s,那么就能有2倍的速度,也就是550-600MB/s,就是17ms左右(前提是要SSD主控制器有这个解压缩处理能力)。
继续,如果你把这个10MB的文档编辑后再保存到SSD里,那么就是从内存往SSD里写入,我们知道颗粒原始速度Raw为140MB/s写入,然后可以压缩5被,也就是700MB/s的速度,但是SATA 3Gbp/s接口的速度是280MB~290MB/s。所以写入SSD里需要34ms的时间,如果用了SATA 6Gbp/s的外部接口,就只需要17ms了。(同样的前提要SSD主控制器有这个压缩处理能力)




第二部分: SandForce几个主要数据,想买的人应该要知道的,厂商不愿告诉你的。(我自己得出的真实数据,非官方宣传数据)

1,主控能力为220-240MB/s的读取和130-140MB/s的写入。(此速度为颗粒物理速度,Raw速度,原始速度,可以理解为不压缩和解压的速度)
     主控可以做到CPU到SATA总线280MB/s读,270MB/s写入的速度,这也是官方数据,但是这个是要有前提条件的,就是数据要可以被压缩接近2倍,(官方说SandForce的写入放大平均为0.55附近,也接近2倍的说法),所以以这个指标标性能也不算太过分,你如果真想看这个成绩YY的,就跑下ATTO测试。当然这个速度只是持续的速度,所以是被SATA总线给限制了,但是随机小文件的速度是达不到的,是真正被主控制器里限制的,这个的话我们很容易看到,OCZ的Vertex 2固件4K随机写入可以达到30000IOPS,别的牌子只能跑10000IOPS,这个就是固件限制主控,主控限制IOPS造成的。(其实这个主控能力能接近50000IOPS的能力,我自己有测试过,IOMETER下跑4K随机64位深度下48000多的IOPS)。

2. 如果压缩率能到2倍,那么这个SSD就能以240MB/s到280MB/s的速度持续写入。

3. 官方数据显示写入放大为0.55的意思是,当数据写入到颗粒时候,LBA占用的和写入大小相同,但是物理颗粒上却只占了1半多点点,也就是压缩到了原本的约1:2

4. 对于解压数据,如果数据的压缩率大于1.4倍的话就能以全3Gbp/s SATA外部总线速度传输到内存,如果不可压缩的数据就是约220MB-240MB/s

5. 假设100G容量的SSD,这个SSD方案是采用了128G颗粒,工艺为34nm的工艺,Intel颗粒的话就是2GB一个DIE,那么就是4个DIE组成1个8G的颗粒,正反16颗。当中多出来的28GB里被作为了RAISE(Redundant Array of Independent Silicon Elements.)类似内部冗余和磨损平衡用于(静态)。我不清楚有多少做了内部冗余,不过按照最新的SF方案出现了64G颗粒有60G的容量来说,1个DIE作为冗余让我觉得更为理解,也就是2GB.(你可以理解为全盘做了类似RAID 5,不要怀疑这个主控的能力,足够强大处理这个,这个也可能是为啥写入相比读取差了那么多的道理,RAID 5的写入本来就是弱项)。这样冗余后,提升了数据的纠错能力,数据安全奠定了基础。而对于没用于冗余算法的那部分,被用来做了磨损平衡(静态,固定的容量),从前面第一部分得知,这个主控的磨损平衡可以从几方面得到实惠。1.这部分不用的静态空间。2.数据被压缩后那些没用到的颗粒空间(动态,视数据多少和压缩率变化)。3.Trim指令过后清空的部分。



第三部分: 关于SandForce的主控方案SSD测试。

我们既然知道SandForce的主要法宝就是“压”,那么测试软件的挑选上就要有所选择。
按照SandForce的“压”原理,我把测试软件分为了3类,1.高压。 2.低压。 3.日常。

1.何谓高压? AS SSD Benchmark 和 Crystal DiskMark 默认测试。

也就是测试的数据是非常难压缩的数据。

2.那么不说也知道低压就是意味着测试数据是非常好压缩的。 例如 ATTO, IOMETER, HD Tach, Crystal DiskMark里开启0fill模式。

3. 日常就是混合了各种环境的数据,高压低压都有,那么就是以PCMARK为代表的程序,从视频,文档,音乐,程序来测试。

不说也知道在高压软件下SandForce的SSD表现不佳,只能出现Raw速度,而低压软件下能跑出峰值速度(外部总线SATA 3Gbp/s),而日常混合测试中跑出的分数也是比较高的,不得不说主控能力比较强悍。

这里就给2个图,很好的比较了这个主控最好和最坏的2个情况。





这2个成绩是在比较干净的情况下跑的,安装了win7 64bit和office 2010还有CS5全套,用了29G空间。
相同的SSD盘,同个系统,换个参数就完全不同的成绩,确实很玄妙哦。


第四部分: 把SSD颗粒弄脏后的SandForce主控性能。

要把SandForce弄脏的话其实不容易,不过这里我就模拟下吧(我可怜的SSD....算了,反正我买来第二天就拆了。。。)

先来2个图吧,干净的和弄脏的SSD区别。






如何,写入速度差距很明显吧。

我是如何弄脏SSD的?



从图中看到我测的默认CDM 4000MB,9次。 那么就是一共写入了4000MBX9X4= 144GB数据。(无法压缩的数据)
图中看到在进行到第二行写入测试的时候速度已经跌到83MB/s了,那么也就是说在第一行的时候已经弄脏了,(CDM取最高成绩)4000MBX9=36G数据。
想了想,我这个是128G的颗粒,28G里2G做了冗余,那么还有26G做了磨损平衡,那么我就会这么理解。
SandForce把难压缩的文件放在了后部26G里来保持速度,把可被压缩的文件放在之前的100G里。(我猜的,反正就是2块区域。)假如难压缩数据占用满了所有的后部空间,那么再次写入数据的时候就要写入到前面的部分去了(而前面的部分很多是曾经被用过的颗粒,这样改写就要先删再写,性能就下来了,这样的话颗粒性能下降也就能理解了,也就是说SandForce的颗粒写入能力最差能到80MB/s附近,这个也是我们常说的Settle In 速度。真的是最最低的速度了,已经只能写入被写过数据的颗粒了,数据还是不能压缩,一点油水也没法拿到。)

这个从这个图中可以看到。



这张图是我弄脏SSD后跑的CDM 0 fill,很明显看到写入没被限制,其实想想也明白,就算写入跌到了80MB.如果数据能压缩很多倍,乘一下也就上来了。


这个写入80MB/s就是SandForce SSD的最低速度了,不会有比这个速度再低的了,我思考了良久,想到几条来解释这个成绩:
1,可能是一种主控的保护机制,防止颗粒的磨损,特意限制了写入速度,因为一下子写入了太多重复的难压缩的数据,会给SSD的寿命造成很大打击。
2,可能是真如我前面所说,先删除再改写,造成写入速度下降。(但是这样也有点说不太过去,因为照例说我并没有写满这个SSD容量)
3,可能是NTFS文件系统的特性造成的,NTFS的文件缓存机制造成延迟写。
总之,如果你的SSD到了这个状态,目前除了HDD ERASE,别的办法都很难恢复性能。

当然,这个条件也不是很容易达到,谁没事会往SSD里一下子写入几十GB的难压缩重复文件?因为SSD有垃圾回收等自我优化功能,所以如果写入的难压缩数据不是一下子太大,这个情况基本是不可能发生的。
只是这里给大家用SandForce的同志们一个警钟,别没事跑CDM(之类高压测试软件),特别是1000MB以上,会弄脏你的SSD颗粒的,如果真要测了秀给朋友看,建议跑个50MB和100MB就好了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 2活跃度 +70 收起 理由
流水小東東 + 50 学习了~~
无心飘落 + 20 感谢分享~

查看全部评分

2#
neeyuese  楼主| 发表于 2010-7-6 12:30 | 显示全部楼层
Trim不是万能的,而且这个主控尤其特别,压缩算法嘛。
3#
neeyuese  楼主| 发表于 2010-7-6 16:12 | 显示全部楼层
Trim的作用是提前将可用的块清空,而不用等到新数据写入到标记为可用块时再做此操作。
按照这个原理 ...
ovortune 发表于 6/7/2010 16:48


咋说哪,我这样解释你应该更清楚点。
以CDM为例,假设我测的是5次1000MB。
那么结果就是在持续,512K,4K,4KQ32里的写入测试里一共写入了5X1000MBX4次=20G的数据。
而对系统来说,识别的是初期为了测试而预先生成的1000MB的单个文件。
而对SSD主控来说,为了磨损平衡,用了大于1000MB的颗粒来保证速度。
这样测完之后系统删除了这个1000MB的文件没错,但是在主控里还有那些多用的脏颗粒找谁去清理回来?
你认为这样只靠系统的Trim有用吗?
所以这时候就要用Intel的Toolbox做次全盘Trim,也就是全盘写满再一次性删除。
4#
neeyuese  楼主| 发表于 2010-7-7 11:12 | 显示全部楼层
Toolbox是Intel独有的工具,主要是能发送Trim指令给SSD主控,然后全盘填充再删除达到全盘手动Trim的目的(适合非Win7系统)。
5#
neeyuese  楼主| 发表于 2010-7-7 11:47 | 显示全部楼层
无法完全弄干净,因为压缩的关系。这个晚上我再专门写一篇关于SSD的写入放大和GC的。
6#
neeyuese  楼主| 发表于 2010-7-9 04:02 | 显示全部楼层
回复  ovortune


    SandForce有自己的工具可用
浮云 发表于 9/7/2010 00:06


请问是哪个工具? OCZ TOOLBOX?
7#
neeyuese  楼主| 发表于 2010-7-10 04:53 | 显示全部楼层
呵呵,OCZ 的TOOLBOX我看到的时候是0.35版,不过如果真是只有这些功能的话,我也不是很期待。
8#
neeyuese  楼主| 发表于 2010-7-11 08:05 | 显示全部楼层
我不认为他们会做这个功能,因为我手头早有了这类工具,对Sandforce没啥大效果(不是没效果),他们的东西太特别了。
9#
neeyuese  楼主| 发表于 2011-6-8 17:14 | 显示全部楼层
方案公司那里肯定有,如果你是业内,不应该来这问,如果你和我一样只是玩家,问了也是白问不是吗?
10#
neeyuese  楼主| 发表于 2011-6-10 16:19 | 显示全部楼层
上面的从你回复里说明你还是没看懂。
11#
neeyuese  楼主| 发表于 2011-6-10 16:29 | 显示全部楼层
不行,因为文件压缩比都是不同,如果你显示300G,之后放入的文件全是视频文件咋办?文件系统层面上又如何操作?
12#
neeyuese  楼主| 发表于 2011-6-10 20:24 | 显示全部楼层
是的,为了保证兼容性,省下的空间做为磨损消耗,提高寿命。
13#
neeyuese  楼主| 发表于 2013-8-4 15:27 | 显示全部楼层
haierccc 发表于 2013-8-4 16:24
其实你可以这样想:
数据被压缩了,那么就有多余的容量被腾出来了,这些被腾出的容量该怎么用呢?
方法1: ...

你最近挖坟比较频繁。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部