Nor Flash的理论性能
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的理论性能相关推荐
- android os5.0 优点,Funtouch OS升级安卓5.0 理论性能大幅提升
最新消息显示vivo X5Pro将搭载基于Android5.0深度定制的Funtouch OS 2.1,之前我们曾报道过Funtouch OS 2.1在锁屏界面上加入了可以显示信息详细内容的消息通知栏 ...
- TNN行业首发Arm 32位 FP16指令加速,理论性能翻倍
转自:https://cloud.tencent.com/developer/article/1774206 https://www.cnblogs.com/zhangshenghui/p/11825 ...
- 【android studio】测试不同buf下flash的读写性能2
把之前测试performance的写完,和androbench测出来的有些差距,有一些小问题,以后有时间再补上.暂时不搞这个了,接下来专心研究文件系统. package com.example.sin ...
- [转]优化Flash性能
原文:http://www.adobe.com/devnet/flash/articles/optimizing-flash-performance.html 翻译:http://bbs.9ria.c ...
- 优化 Flash 性能
原文:http://www.adobe.com/cn/devnet/flash/articles/optimizing-flash-performance.html 在本文中,您将找到使用 Flash ...
- 大数据存储系统I/O性能优化技术研究进展
大数据存储系统I/O性能优化技术研究进展 肖利民,霍志胜 北京航空航天大学计算机学院,北京 100191 摘要:大数据存储系统的I/O性能是影响大数据应用整体性能的关键因素之一,总结了当前在存储系统架 ...
- t420i升级固态硬盘提升_老主机升级东芝RC500 NVMe固态硬盘,性能提升有多少?
现在装机大家基本上都会选择固态硬盘,固态硬盘一般分为PCI-E通道和SATA通道,但是一年前固态硬盘还是很贵的尤其是PCI-E.M.2接口的固态硬盘,很多人装机往往选择的是比较便宜的SATA接口硬盘, ...
- matlab通信物理层仿真,通信小精灵(物理层仿真工具) 可计算仿真误码率、理论误...
该软件最大的特点是可扩展性.该软件在纵向上划分为四个层次.图形界面层管理图形 界面,调度层调用各个独立模块,接口层负责转换底层函数的接口,执行层执行具体功能. 接口层相当于该软件各个模块的插口,可以随 ...
- 即插即用新卷积:提升CNN性能、速度翻倍
https://www.toutiao.com/a6680702791851180555/ 2019-04-17 17:00:41 近期,来自 Facebook AI.新加坡国立大学.奇虎 360 的 ...
最新文章
- 产生BFC环境的几种方式
- 基于视觉Transformer的目标检测
- Ubuntu 更新后 VirtualBox 无法启动
- void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)的一些理解
- Hibernate面试总结
- Android之本地摄像头,Android之调用本地摄像头
- Python open()函数文件打开、读、写基础操作
- keil4 c51安装教程
- 星起航:亚马逊卖家利用一件代发模式实现跨境电商飞速发展
- Foxdisk11-小字库显示汉字2
- 【Win】KMS 激活命令记录
- sipdroid软件直接使用andriod打网络电话
- Google Dremel 原理 – 如何能 3 秒分析 1PB
- JVM参数-XX:+HeapDumpOnOutOfMemoryError使用方法
- 一级造价工程师课件下载和备考内容及学习方法总结汇总!
- Appium-Press keycode(按键代码)
- 修改微信文件的默认保存位置
- 缺陷检测|自动检测道路坑洼、裂纹!
- rageframe(PHP微擎)树分类(curd)
- 球差电镜测试常见的问题及解答(一)