Nor Flash的理论性能

简介#

为了评估Nor性能优化空间,我需要根据Spec计算出极限情况下,Nor Flash的性能理论值。

在全志的R**相关项目中分别支持ESMT、MXIC、Winbond、GD这4个厂家的Nor Flash,具体型号不方便透露,其规格书参数如下:

厂家 写(ms) 4K擦除(ms) 32K擦除(ms) 64K擦除(ms) 全盘擦除(s)
MXIC 0.33~1.2 25~120 140~650 250~650 26~60
Winbond 0.7~3 45~400 120~1600 150~2000 40~200
GD 0.5~2.4 50~400 160~800 300~1200 50~120
ESMT 0.5~3 40~300 200~1000 300~2000 60~200

上表是Spec中记录的典型时间到最大时间。

Flash有写前必须擦除的特性,为了简化计算,我们忽略除了擦除、写外的损耗,例如WREN:Write Enable等,例如传输损耗。由此计算出的性能会比实际性能略高,但也足以让我们对其性能有个直观认识。

我以性能较高的MXIC的Nor Flash为例,计算理论性能

理论性能#

关键词说明如下:

 

Copy

EraseTime: 擦除(erase)时间 EraseSize: 擦除的大小 WriteTime: 写(write)时间 WriteCount: 一次擦除可以写多少笔数据 BlockSize: 块大小

Flash的特性要求必须先擦除后写,Nand如此,Nor也如此。

在spiffs的代码中,我们可以看到对nor的一个特殊应用:某些标志bit不擦除,直接写。是的,Nor也支持不擦除直接写,但只支持1->0的编程,因此spiffs中只用作某个1->0的标志bit也是可以的。但对大多数情况,为了不丢失数据,我们务必擦除后再写

综合上擦除和写的时间:

 

Copy

Time(ms) = EraseTime + WriteTime * WriteCount

在Nor中,我们假设每次写256B的数据(1Page),那么1次4K擦除可以写16笔数据,1次32K擦除可以写128笔数据,1次64K擦除可以写256笔数据。

因此,理论性能应该为:

 

Copy

Speed = EraseSize / (EraseTime + WriteTime * WriteCount)

以MXIC的4K大小擦除块为例:

 

Copy

性能 = 4KB / (25ms + 0.33ms * (4KB / 256B)) = 4 KB / 30.28ms = 132.1 KB/s

类似的,根据上述的计算方法,我们统计的各厂家理论性能如下(KB/s):

厂家 4K擦除 32K擦除 64K擦除
MXIC 132.10 176.23 191.34
Winbond 71.17 153.70 194.41
GD 68.97 142.86 149.53
ESMT 83.33 121.67 149.53

务必注意的是,上述理论性能是按Spec的Typ时间计算的,实际使用中,擦除和写的耗时随着使用寿命的增加而增加。而对于一块全新Flash来说,其写和擦除的耗时应该会比Spec的Typ时间要少。因此也就不奇怪我实测的性能会比Spec的理论性能要略高:

厂家 4K擦除
MXIC 140
Winbond 117
GD 88
ESMT 101

上述测试的性能,是不经过FS的裸设备操作性能,且驱动中完全无buffer,文件系统/驱动的缓存对性能还是有比较大影响的。此外除了硬件损耗之外,驱动软件在检查Busy标志的延时精度也会造成一些损耗。

作者: 广漠飘羽

出处:https://www.cnblogs.com/gmpy/p/12011436.html

本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。

Nor Flash的理论性能相关推荐

  1. android os5.0 优点,Funtouch OS升级安卓5.0 理论性能大幅提升

    最新消息显示vivo X5Pro将搭载基于Android5.0深度定制的Funtouch OS 2.1,之前我们曾报道过Funtouch OS 2.1在锁屏界面上加入了可以显示信息详细内容的消息通知栏 ...

  2. TNN行业首发Arm 32位 FP16指令加速,理论性能翻倍

    转自:https://cloud.tencent.com/developer/article/1774206 https://www.cnblogs.com/zhangshenghui/p/11825 ...

  3. 【android studio】测试不同buf下flash的读写性能2

    把之前测试performance的写完,和androbench测出来的有些差距,有一些小问题,以后有时间再补上.暂时不搞这个了,接下来专心研究文件系统. package com.example.sin ...

  4. [转]优化Flash性能

    原文:http://www.adobe.com/devnet/flash/articles/optimizing-flash-performance.html 翻译:http://bbs.9ria.c ...

  5. 优化 Flash 性能

    原文:http://www.adobe.com/cn/devnet/flash/articles/optimizing-flash-performance.html 在本文中,您将找到使用 Flash ...

  6. 大数据存储系统I/O性能优化技术研究进展

    大数据存储系统I/O性能优化技术研究进展 肖利民,霍志胜 北京航空航天大学计算机学院,北京 100191 摘要:大数据存储系统的I/O性能是影响大数据应用整体性能的关键因素之一,总结了当前在存储系统架 ...

  7. t420i升级固态硬盘提升_老主机升级东芝RC500 NVMe固态硬盘,性能提升有多少?

    现在装机大家基本上都会选择固态硬盘,固态硬盘一般分为PCI-E通道和SATA通道,但是一年前固态硬盘还是很贵的尤其是PCI-E.M.2接口的固态硬盘,很多人装机往往选择的是比较便宜的SATA接口硬盘, ...

  8. matlab通信物理层仿真,通信小精灵(物理层仿真工具) 可计算仿真误码率、理论误...

    该软件最大的特点是可扩展性.该软件在纵向上划分为四个层次.图形界面层管理图形 界面,调度层调用各个独立模块,接口层负责转换底层函数的接口,执行层执行具体功能. 接口层相当于该软件各个模块的插口,可以随 ...

  9. 即插即用新卷积:提升CNN性能、速度翻倍

    https://www.toutiao.com/a6680702791851180555/ 2019-04-17 17:00:41 近期,来自 Facebook AI.新加坡国立大学.奇虎 360 的 ...

最新文章

  1. 产生BFC环境的几种方式
  2. 基于视觉Transformer的目标检测
  3. Ubuntu 更新后 VirtualBox 无法启动
  4. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)的一些理解
  5. Hibernate面试总结
  6. Android之本地摄像头,Android之调用本地摄像头
  7. Python open()函数文件打开、读、写基础操作
  8. keil4 c51安装教程
  9. 星起航:亚马逊卖家利用一件代发模式实现跨境电商飞速发展
  10. Foxdisk11-小字库显示汉字2
  11. 【Win】KMS 激活命令记录
  12. sipdroid软件直接使用andriod打网络电话
  13. Google Dremel 原理 – 如何能 3 秒分析 1PB
  14. JVM参数-XX:+HeapDumpOnOutOfMemoryError使用方法
  15. 一级造价工程师课件下载和备考内容及学习方法总结汇总!
  16. Appium-Press keycode(按键代码)
  17. 修改微信文件的默认保存位置
  18. 缺陷检测|自动检测道路坑洼、裂纹!
  19. rageframe(PHP微擎)树分类(curd)
  20. 球差电镜测试常见的问题及解答(一)

热门文章

  1. 计算机ps2级证书英语,全国计算机等级PHOTOSHOP一级证书
  2. OAI项目GDB调试及代码分析
  3. 【达梦数据库】数据实时同步软件 + 数据对比工具
  4. JDK8 HashMap源码
  5. 联想电脑Z460安装Win7
  6. MATLAB中 Command Window 常用的命令及功能
  7. 记录jmeter打开报错
  8. c语言引用类型,c语言 引用符号
  9. 软考A计划-试题模拟含答案解析-卷二
  10. 100集华为HCIE安全培训视频教材整理 | 流量型攻击防范技术-UDP