NAND FLASH读写速度计算方法详解
Nand Flash讀寫速度的計算方法
在下面的部分,我們以Micron的Nand Flash芯片為例,看一下Nand Flash的訪問速度(Write / Read)是如何計算的?我們可以利用Datasheet提供的Read / Program / Erase操作時序圖進行逐項累加,并通過一定的公式推導來完成。
?
?
以下圖為例,這是一個相當復雜的圖示。它包含兩部分(target)。每個target有兩個LUNs (Logic Unit)。每個都是完全獨立的。但LUNs can do interleaved operations.?如下圖所示:LUN1 和LUN2?在同一個target中。這樣的好處是:最大化帶寬和降低干擾。
?
?
上述設備的參數(shù)具體情況如下:
?
?
?
下面以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的上升沿和下降沿同時采集數(shù)據(jù)來進行傳輸。
?
<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是完全獨立的,因此相應的速度在理論上為倍數(shù)關(guān)系。
此種情況下的訪問速度為倍數(shù)關(guān)系: 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
先送命令和數(shù)據(jù)到4 planes,然后執(zhí)行寫操作。
整個寫的時間消耗為:
[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是完全獨立的,因此相應的速度在理論上為倍數(shù)關(guān)系。
即: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.8?us = 1472.2MB/s
?
<3> Two target 4-plane erase operation
每個target是完全獨立的,因此相應的速度在理論上為倍數(shù)關(guān)系。
即:2 * 1472.2MB/s =?2944.4 MB/s
?
?
?
寫狀態(tài):
首先將壞塊管理中的地址與當前塊地址對照,排除無效塊。
?????無效塊讀時鐘置0,定義輸出地址信號從輸出地址端口輸出
?????無效塊讀時鐘置1,輸出地址加1,將當前地址下的數(shù)據(jù)輸出(此處的數(shù)據(jù)就是存儲的無效塊地址),判斷如果壞塊管理中心輸出的壞塊地址大于當前訪問的塊地址,則證明該地址為有效塊(壞塊肯定是少數(shù),如果不是第一塊則就是后面的,地址肯定大于當前有效塊地址)
命令80H或者81H
之后寫五個循環(huán)地址,
之后等待一個ADL時間,
然后將一頁4K的數(shù)據(jù)從fifo中輸入到flash中
???讀fifo時鐘置1,保證fifo寫地址大于讀地址(此處fifo讀地址就是我們當前flash的寫地址),flash寫有效,flash數(shù)據(jù)口輸出當前fifo數(shù)據(jù)寫完一個字節(jié),讀fifo時鐘置0,也就是說在讀fifo時鐘為1的時候才能進行fifo數(shù)據(jù)的往flash中的寫操作。Fifo讀地址加1,且4k字節(jié)計數(shù)加1,Flash寫鎖存關(guān)閉,讀fifo時鐘置1,判斷4k字節(jié)是否寫完,如果沒寫完則繼續(xù)寫,如果寫完4K字節(jié),則
命令11H或者10H
寫無效命令無效,如果是0面則等待tDBSY,面加1,如果是1面則直接面加1,加1后沒有到第111層,則繼續(xù)寫該層該頁的地址讀該頁的數(shù)據(jù)。如果到了第111層,則加頁再執(zhí)行0到7層的頁寫。如果64頁寫滿了,塊地址加1,塊地址加之后需要判斷是否為無效塊,再進行頁寫。
總結(jié)
以上是生活随笔為你收集整理的NAND FLASH读写速度计算方法详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个 NAND flash写函数
- 下一篇: 终于有人讲透了芯片是什么(电子行业人士必