PCEVA,PC绝对领域,探寻真正的电脑知识
  • 内容展现
  • 最新评论
决定SSD速度的又一因素,NAND探秘
2010-12-30 00:03| 发布者: neeyuese| 查看: 3302| 评论: 0
摘要: 发觉这1年多来自己看了太多主控的特性,对闪存反而开始有点陌生了,前段时间对SandForce的写入表现一直感触很深,分别看了1565搭配SLC的表现和1232搭配MLC的成绩,终于不得不承认一个事实:NAND是原材料,主控只是加 ...

发觉这1年多来自己看了太多主控的特性,对闪存反而开始有点陌生了,前段时间对SandForce的写入表现一直感触很深,分别看了1565搭配SLC的表现和1232搭配MLC的成绩,终于不得不承认一个事实:NAND是原材料,主控只是加工师傅,没有好的原材料,本事再大也没有用。

这里我先举几个例子,太学术性的东西我也不懂,你们也不喜欢看,就从稍微简单点的说。

1.我先拿Indilinx公司的主控SSD来说事,就弄个大家熟悉的厂牌OCZ产品。

OCZ Onyx Series SATA II 2.5" SSD 32G

型号 OCZSSD2-1ONYX32G

玛瑙系列一直是OCZ的低端,这个是采用Indilinx Amigos主控的SSD。






从图中可以看到,颗粒是8颗Intel JS29F32G08AAMDB(4GB)

从Intel的颗粒DATASHEET里了解到,这个颗粒主要参数如下:

Product Features
Open NAND Flash Interface (ONFI) 2.0

Compliant
Multilevel cell (MLC) technology

Organization:
— Page size: 4,320 bytes (4,096 + 224 bytes)
— Block size: 256 pages (1,024K + 56K bytes)
— Plane size: 2,048 blocks

Read performance
— Random read: 50 μs
— Sequential read: 20 ns

Write performance
— Page program: 900 μs (TYP)
— Block erase: 2 ms (TYP)

Endurance:
— 5,000 PROGRAM/ERASE cycles

大致如下:

页大小:4KB。 块大小:256页=1MB。Plane大小: 2048块=2GB。
随机读取:50μs 。持续读取:20 ns 。页编程:900μs。块擦除:2 ms。
JS29F32G08AAMDB由2个Plane组成,支持Multi-plane 指令。

拿到了数据我们就来算算这个颗粒的速度吧。
read Operations.jpg

上图为NAND的标准读取时钟图,有了这个图即可计算读取消耗的时间并得出传输率。

以上图为例:
                                            重复次数             周期时间             总时间消耗
COMMAND LATCH (00h)               1                   20 ns                    20 ns  
ADDRESS LATCH                        5                    20 ns                   100 ns  
COMMAND LATCH (30h)               1                    20 ns                   20 ns  
R/B# LOW (tR)                           1                    50 μs                    50 μs
数据输出周期                              4,320               20 ns                    86.4 μs
读取一个page需要的时间                                                                 136.54 μs
数据传输率                                                                                    约30MB/s

流程是这样,发送指令00h,1个时钟周期,发送地址,5个时钟周期,并发送指令30h结束,1个时钟周期,tR(读取)消耗50  μs,开始读取(数据输入),4320字节,1个字节1个时钟周期,所以总共86.4  μs,最终得出一个page读取需要花费136.54  μs,用1秒去除以这个时间,得出数据传输率约30MB/s。

这个就是纯读取一个page(无缓存)模式下的速度,很像我们用CDM测试里SSD的4KB QD1下的速度吧。

我们再来看看写入速度:

PROGRAM and READ STATUS Operation.jpg
上图为NAND的标准编程时钟图,有了这个图即可计算编程消耗的时间并得出传输率。

以上图为例:
                                            重复次数             周期时间             总时间消耗
COMMAND LATCH (80h)               1                   20 ns                    20 ns  
ADDRESS LATCH                        5                    20 ns                   100 ns  
COMMAND LATCH (10h)               1                    20 ns                   20 ns  
R/B# LOW (tPROG)                     1                    900 μs                  900 μs
数据输入周期                              4,320               20 ns                    86.4 μs
编程一个page需要的时间                                                                 986.54 μs
数据传输率                                                                                    约4.15MB/s

流程是这样,发送指令80h,1个时钟周期,发送地址,5个时钟周期,数据输入数据寄存器,4320字节,1个字节1个时钟周期,所以总共86.4  μs,发送指令10h结束,1个时钟周期,tPROG(编程)消耗900  μs,最终得出一个page读取需要花986.54  μs,用1秒去除以这个时间,得出数据传输率约4.15MB/s。

由于一个LUN(闪存逻辑单元,DIe)分成2个Plane,每个Plane包含一个page大小的数据寄存器和一个page大小的cache寄存器,每个Plane包含2048个Block。而Intel的34nm MLC L63B支持Muti-Plane操作来提升性能。

对于读取,2个Plane可以一次操作8KB(每个Plane 里4KB),这样直接发送2个Plane的地址可以省下1次tR的时间,最终读取速度可以提升到约35MB/s附近每个LUN(DIe),而写入可以省下一次tPROG时间,达到约7.4MB/s的速度。

既然如此,我们来看看实际速度是不是和上面的速度吻合。




我们上面得出的速度是7.4MB/s X 8颗粒 = 59.2MB/s ,去掉接口,传输等延迟损耗,CDM持续写入速度54.99MB/s,这个速度就这么出来了。

Amigos是个支持2通道8路交错16位位宽的ARM7主控。上面这8个颗粒在PCB正面排列就会是这样的样子:(2通4路)

amigo32G.jpg

Intel ONFi2.0 异步通道速率为50MT/s,16bit就是100MB/s,2通道16bit即可带来200MB/s的带宽。

我们来算读取,上图中颗粒(8bit)1和2组成16bit接口,多plane操作下读取约70MB/s。颗粒(8bit)3和4组成16bit接口(70MB/s),由于主控只有2通道,所以内部传输率就为70MB/s X 2通道 = 140MB/s最大。去掉接口,传输等延迟,上面CDM的速度 129MB/s也就可以想象了。

-------------------------------------

如果我们不换颗粒,就只把主控换成barefoot,会不会有提升?答案是读取有提升,因为按照上面的Amigo方案来说,读取被通道数限制了。

那么和OCZ ONYX采用相同颗粒但是却用的barefoot主控的是哪款?

30GB (32GB) - OCZSSD2-2SLD30G     ocz solid 2 30G








主控换成了没阉割过的Barefoot,其他的都没变,让我们看看速度。




主控为IDX110M01-LC  是个4通道8路交错16位位宽的ARM7主控

barefoot_32G.jpg

相比Amigo主控,我们有了4个通道,每个通道100MT/s的带宽(16bit),综合起来就是400MB/s总带宽,已经超过SATA 3Gbps的接口带宽,所以已经没有瓶颈。

同样的Barefoot除了通道增加了外,也只支持8路交错(上图32G方案里是4通2路),由于之前看到写入瓶颈不是通道带宽而是颗粒速度,所以写入上换了主控没区别,而读取因为4个通道的关系,提升较明显,不过主控优化的关系并不如字面上的强。

上面只是换了个主控(其实就加了2通道),就能提升读取能力。

那么接下来我们再看看如果增加颗粒会如何?

60GB (64GB) - OCZSSD2-2SLD60G     ocz solid 2 60G



背面再加上8个颗粒。组成了4通4路工作模式。如图:

barefoot_64G.jpg




写入自然提高1倍(颗粒多了1倍),读取提升不大,主要是因为主控优化的问题。(越接近外部带宽速度提升越难)

结论: 闪存的容量和性能是息息相关的,特别是MLC的写入性能偏低,没有一定容量的话是上不去的。这个和主控没关系,主控最多限制闪存的发挥,但是原材料不行,再如何加工也没办法的。

收藏 邀请
0
本文版权归 PCEVA,PC绝对领域,探寻真正的电脑知识 原作者所有 转载请注明出处

最新评论

热门评论
    热门评论
      返回顶部