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中。这样的好处是:最大化带宽和降低干扰。
上述设备的参数具体情况如下:
下面以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.8 us = 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字节计数加1,Flash写锁存关闭,读fifo时钟置1,判断4k字节是否写完,如果没写完则继续写,如果写完4K字节,则
命令11H或者10H
写无效命令无效,如果是0面则等待tDBSY,面加1,如果是1面则直接面加1,加1后没有到第111层,则继续写该层该页的地址读该页的数据。如果到了第111层,则加页再执行0到7层的页写。如果64页写满了,块地址加1,块地址加之后需要判断是否为无效块,再进行页写。
NAND FLASH读写速度计算方法详解相关推荐
- mmc命令 uboot_uboot mmc命令详解Nand flash uboot 命令详解
uboot mmc命令详解 一:mmc的命令如下: 1:对mmc读操作 mmc read addr blk# cnt 2:对mmc写操作 mmc write addr blk# cnt 3:对mmc擦 ...
- Arm 2440——Nand flash启动模式详解(LED程序为例)
断断续续的研究arm也有2个月了,现在才感觉理解了arm在Nand flash模式下的启动过程,现在来这里记录下来以表达我无比喜悦的心情.闲话少说,趁着还没有忘记学习过程中的感受,直接进入正题. 大家 ...
- R语言中如何计算C-Statistics?几种计算方法详解
R语言中如何计算C-Statistics?几种计算方法详解 目录 R语言中如何计算C-Statistics? #包导入 #数据加载编码
- python读取遥感 dat_基于python批量处理dat文件及科学计算方法详解
摘要:主要介绍一些python的文件读取功能,文件内容修改,文件名后缀更改等操作. 批处理文件功能 import os path1 = 'C:\\Users\\awake_ljw\\Documents ...
- php计算股票均线,均线怎么算?均线的计算方法详解
均线怎么算?均线的计算方法详解 学习股票知识首先需要了解各大技术指标,股票均线是最常用的技术指标,新股民学习股票均线肯定有很多不了解的地方,今天股票知识就给大家讲解一下股票均线是怎么来的? 日均线的计 ...
- Python计算向量夹角:向量夹角计算方法详解
Python计算向量夹角:向量夹角计算方法详解 在数值分析和几何学中,我们经常需要计算两个向量之间的夹角.在Python中,我们可以使用numpy库中的函数来计算向量之间的夹角. 首先,我们需要将向量 ...
- freescale飞思卡尔 HC9S12 系列单片机 Flash擦写详解(三)之Flash控制器指令执行
前面我们介绍了Flash主要的几个寄存器,如果还有其他的疑问可以再返回去看看或者直接查阅S12系列单片机的手册中相关的内容.这一节我将介绍Flash控制器指令执行的过程,并举出相关的例子,希望能够起到 ...
- flash的坐标系详解
[一.前期设置] 我们在舞台上做如下设计: 1.用矩形工具,在舞台上绘制一个无边框的矩形 2.用选择工具单击该矩形,看其属性面板 [二.具体讲解] 在属性面板内给出了这个矩形的很多参数.本节课我们只研 ...
- freescale飞思卡尔 HC9S12 系列单片机 Flash擦写详解(一)之时钟设置
Flash擦写的内容,个人做HC9S12系列单片机时觉得应该是各模块内容中最难而且是最麻烦的一步了.只有能够对Flash进行擦写以后,所做的Bootloader才有真正手段将串口或者其他通讯手段接收到 ...
最新文章
- VBA【遍历每个工作表并将工作表表名赋予B2单元格】
- 把一个表中的数据插入到另一个表
- 蓝桥杯审核要多久_商标审核要多久?
- MySQL入门系列:查询简介(四)之类型转换和分组查询
- ubuntu系统安装gedit
- Beaglebone Black 运行QNX
- ASP.NET Core 2.0 全局配置项
- 关于Memcache使用的工具类
- 百度app不支持popstate_这一次谷歌很强硬,从现在起你的 App 再不支持,将拒绝上架!...
- 部署前端项目 Linux系统的nginx配置
- 在线段裁剪算法中是否能对区域编码算法进行优化实现模式的唯一判别呢
- VS2017 C++解决方案和项目目录文件夹
- python3 输出 26个大小写英文字母
- 港澳台、大陆身份证正则表达式
- win10 powershell无法激活conda v4.9环境
- 软件测试可以分为哪几个类型?
- Erlang数据结构篇 -- array
- python-科研绘图系列(2)-等高线图
- 哈夫曼树(最优二叉树)、哈夫曼编码
- web项目中使用标签打印机打印条形码及二维码