NAND FLASH读写速度计算方法详解

来源:互联网 发布:windows登录界面壁纸 编辑:程序博客网 时间:2024/06/06 14:12

Nand Flash读写速度的计算方法

在下面的部分,我们以MicronNand Flash芯片为例,看一下Nand Flash的访问速度(Write / Read)是如何计算的?我们可以利用Datasheet提供的Read / Program / Erase操作时序图进行逐项累加,并通过一定的公式推导来完成。

 

 

以下图为例,这是一个相当复杂的图示。它包含两部分(target)。每个target有两个LUNs (Logic Unit)。每个都是完全独立的。但LUNs can do interleaved operations. 如下图所示:LUN1 和LUN2在同一个target中。这样的好处是:最大化带宽和降低干扰。

 

 

上述设备的参数具体情况如下:

 

 

 

下面以Synchronous Interface为例进行Nand Flash访问速度的计算:

 

1. Read operation

<1> Read a single page

 

消耗时间计算如下:

7 * tCAD (Send address and command) + (tWB + tR) (Read data from the NAND Flash Array into the data register) + tdqs * 4320(Transfer a page of data out)

 

 

tCAD = 25ns

tWB = 100ns

tR = 25us

tdqs = 0.5 tCK (minimum)

tCK = 12ns (minimum)

Total Time: 7 * 25ns + 100ns + 25000ns + 0.5 * 12ns * 4320 = 51195ns

Data Transferred: 4320 bytes

Bandwidth: 4320 bytes /51.195us = 84.4MB/s

主要特性:

1) 页大小为: 4K + 224 Bytes

2) 采用DQS的上升沿和下降沿同时采集数据来进行传输。

 

<2>  2 LUN Four-plane page read

 

The time needed:

[ (7 * tCAD + tWB + tDBSY) * 3 + (7 * tCAD + tWB + tDBSY) * 3 + (7 * tCAD + tWB) + (7 * tCAD + tWB + tR) + [(7 * tCAD + tCCS + tDQSCK + tdqs * 4320)] * 8

Note:

tCAD = 25ns

tWB = 100ns

tDBSY = 0.5us = 500ns

tR = 30us = 30000ns (for multi-plane read)

tdqs = 0.5tCK

tCK = 12ns

tCCS = 200ns

tDQSCK = 20ns

 

tTime = [ (175ns + 100ns + 500ns) * 3 + (175ns + 100ns + 500ns) * 3 + (175ns + 100ns) + (175ns + 100ns + 30000ns) + [(175ns + 200ns + 20ns + 0.5 * 12ns * 4320)] * 8

          = 2325ns + 2325ns + 30550ns + 210520ns

          = 245720ns

Data transferred: 4320 * 4 * 2 = 34560bytes

Bandwidth: 34560 bytes / 245.720us =140.6MB/s

 

<3> Device that has 2 independent targets

每个target是完全独立的,因此相应的速度在理论上为倍数关系。

此种情况下的访问速度为倍数关系: 2 * 140.6MB/s = 281.2MB/s.

 

2. Program operation

<1> Single program operation

 

写操作的时间消耗为:

6 * tCAD (Send address and command) + tADL + tDQSS + tdqs * 4320(Transfer the data into the Flash) + tCAD (Program confirm command) + tWB + tPROG (Program the Flash Array time) =

 

tCAD = 25ns

tADL = 70ns (Minimum)

tDQSS = 0.75tCK(minimum)

tdqs = 0.2tCK (minimum)

tWB = 100ns

tPROG = 160us

tCK = 12ns

tTime = 150ns + 70ns + 0.75tCK + 0.2tCK * 4320 + 25ns + 100ns + 160us =

      = 150ns + 70ns + 9ns + 10368 ns + 25ns + 100ns + 160000ns = 170728ns

      = 170.722us

Data transferred: 4320bytes

Bandwidth = 4320bytes / 170.722us = 25.3MB/s

 

<2>  2 LUN Four-plane program operation

先送命令和数据到4 planes,然后执行写操作。

整个写的时间消耗为:

[tCAD + 4 * tCAD + tADL + tDQSS + tdqs * 4320 + tCAD + tWB + tDBSY] * 3 +

[tCAD + 4 * tCAD + tADL + tDQSS + tdqs * 4320 + tCAD + tWB] +

[tCAD + 4 * tCAD + tADL + tDQSS + tdqs * 4320 + tCAD + tWB + tDBSY] * 3 +

[tCAD + 4 * tCAD + tADL + tDQSS + tdqs * 4320 + tCAD + tWB + tPROG] =

= [tCAD + 4 * tCAD + tADL + tDQSS + tdqs * 4320 + tCAD + tWB + tDBSY] * 6 +

 [tCAD + 4 * tCAD + tADL + tDQSS + tdqs * 4320 + tCAD + tWB] * 2 +

tPROG

 

 

 

tCAD = 25ns

tADL = 70ns(Minimum)

tDQSS = 0.75tCK

tdq = 0.2tCK

tCK = 12ns

tPROG = 160000ns

tDBSY = 500ns

tWB = 100ns

Total time needed:

[125ns + 70ns + 0.75 * 12ns + 0.2 * 12ns * 4320 + 25ns + 100ns + 500ns] * 6 +

[125ns + 70ns + 0.75 * 12ns + 0.2 * 12ns * 4320 + 25ns + 100ns] * 2 + 160000ns

= 67182ns + 21376 + 160000ns = 248558ns

 

Data transferred: 4320 bytes * 4 * 2 = 34560 bytes

Bandwidth: 34560 bytes / 248.558 us = 139.0MB/s

 

<3> Device that has 2 targets

每个target是完全独立的,因此相应的速度在理论上为倍数关系。

即:139.0 MB/s * 2 = 278.2MB/s

 

3. Erase operation

<1> Erase a single block (See Figure 78 at page 99)

Erase的时间消耗为:

5 * tCAD (Send command and block address) + tWB + tBERS (Block erase time)

 

 

tCAD = 25ns

tWB = 100ns

tBERS = 3ms

tTime = 5 * 25ns + 100ns + 3000000ns = 3000225ns = 3000.225us

Data erased: 128 pages * 4320 bytes/page = 552960bytes

Bandwidth = 552960 bytes / 3000.225us = 184.3MB/s

 

<2> 2 LUN Erase 4-plane block operation

整个Erase操作的时间消耗为:

(5 * tCAD + tWB + tDBSY) * 3 + (5 * tCAD + tWB) +

(5 * tCAD + tWB + tDBSY) * 3 + (5 * tCAD + tWB + tBERS) =

 

 

 

tCAD = 25ns

tWB = 100ns

tDBSY = 0.5us = 500ns

tBERS = 3ms = 3000000ns

 

tTime = 6 * (125ns + 100ns + 500ns) + (125ns + 100ns) * 2 + 3000000ns

      = 4350ns + 450ns +3000000ns

      = 3004800ns = 3004.800us

Data Erased: 2 * 128 pages * 4320 bytes/page * 4 planes = 4423680 bytes

Bandwidth = 4423680 bytes / 3004.8us = 1472.2MB/s

 

<3> Two target 4-plane erase operation

每个target是完全独立的,因此相应的速度在理论上为倍数关系。

即:2 * 1472.2MB/s = 2944.4 MB/s

 

 

 

写状态:

首先将坏块管理中的地址与当前块地址对照,排除无效块。

     无效块读时钟置0,定义输出地址信号从输出地址端口输出

     无效块读时钟置1,输出地址加1,将当前地址下的数据输出(此处的数据就是存储的无效块地址),判断如果坏块管理中心输出的坏块地址大于当前访问的块地址,则证明该地址为有效块(坏块肯定是少数,如果不是第一块则就是后面的,地址肯定大于当前有效块地址)

命令80H或者81H

之后写五个循环地址,

之后等待一个ADL时间,

然后将一页4K的数据从fifo中输入到flash

   fifo时钟置1,保证fifo写地址大于读地址(此处fifo读地址就是我们当前flash的写地址),flash写有效,flash数据口输出当前fifo数据写完一个字节,读fifo时钟置0,也就是说在读fifo时钟为1的时候才能进行fifo数据的往flash中的写操作。Fifo读地址加1,且4k字节计数加1Flash写锁存关闭,读fifo时钟置1,判断4k字节是否写完,如果没写完则继续写,如果写完4K字节,则

命令11H或者10H

写无效命令无效,如果是0面则等待tDBSY,面加1,如果是1面则直接面加1,加1后没有到第111层,则继续写该层该页的地址读该页的数据。如果到了第111层,则加页再执行07层的页写。如果64页写满了,块地址加1,块地址加之后需要判断是否为无效块,再进行页写。

 

0 0
原创粉丝点击