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

SandForce主控进一步深入研究。

  [复制链接]
跳转到指定楼层
1#
neeyuese 发表于 2010-7-5 18:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
点击数:50090|回复数: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#
DR.tang 发表于 2010-7-5 18:39 | 只看该作者
{:4_146:}认真学习
3#
overthink 发表于 2010-7-5 18:41 | 只看该作者
来晚 沙发没有了  坐板凳学习一下
4#
royalk 发表于 2010-7-5 18:53 | 只看该作者
产品上市前先学习
5#
DR.tang 发表于 2010-7-5 18:56 | 只看该作者
浴室对G3的看法是如何?
6#
smatk768 发表于 2010-7-5 19:22 | 只看该作者
学习了。。精贴
7#
magicspectre 发表于 2010-7-5 20:00 | 只看该作者
...orz  好深奥
8#
无心飘落 发表于 2010-7-5 20:16 | 只看该作者
:$我是白痴
9#
flyerwang 发表于 2010-7-5 20:48 | 只看该作者
看懂了一半
10#
badaa 发表于 2010-7-5 20:56 | 只看该作者
李司令
11#
badaa 发表于 2010-7-5 20:56 | 只看该作者
李司令
12#
神游 发表于 2010-7-5 21:27 | 只看该作者
打这么多字真是辛苦啊
13#
彩虹糖 发表于 2010-7-5 22:29 | 只看该作者
看懂最后一段.....
14#
bill5267 发表于 2010-7-5 22:40 | 只看该作者
浴室辛苦了,注意身体~~
15#
ovortune 发表于 2010-7-6 12:21 | 只看该作者
那么对于这种支持Trim的主控,颗粒被“弄脏了”之后闲置一段时间让系统自动执行Tim指令后应该就能“自愈”了吧?
16#
无心飘落 发表于 2010-7-6 12:26 | 只看该作者
那么对于这种支持Trim的主控,颗粒被“弄脏了”之后闲置一段时间让系统自动执行Tim指令后应该就能“自愈” ...
ovortune 发表于 2010-7-6 12:21



    那个是后台GC,TRIM只是针对系统的写入优化。

颗粒被弄脏的原因不再这里,所有不能靠TRIM自愈的
17#
neeyuese  楼主| 发表于 2010-7-6 12:30 | 只看该作者
Trim不是万能的,而且这个主控尤其特别,压缩算法嘛。
18#
gmx168 发表于 2010-7-6 12:35 | 只看该作者
{:4_138:}顶顶,找时间仔细看。
19#
而立之男 发表于 2010-7-6 12:50 | 只看该作者
怪事。弄脏了会这样
20#
James007ss 发表于 2010-7-6 13:25 | 只看该作者
老大的帖子等顶,用这个方案的SSD貌似现在都不便宜得去哪吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部