首页 > 其他 > 详细

Nor Flash的理论性能

时间:2019-12-09 15:56:43      阅读:122      评论:0      收藏:0      [点我收藏+]

简介

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

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

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

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

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

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

理论性能

关键词说明如下:

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

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

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

综合上擦除和写的时间:

Time(ms)  = EraseTime + WriteTime * WriteCount

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

因此,理论性能应该为:

Speed = EraseSize / (EraseTime + WriteTime * WriteCount)

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

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

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

型号 厂家 4K擦除 32K擦除 64K擦除
MX25L12833F MXIC 132.10 176.23 191.34
W25Q128JV Winbond 71.17 153.70 194.41
GD25Q127C GD 68.97 142.86 149.53
EN25QH128A ESMT 83.33 121.67 149.53

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

型号 厂家 4K擦除
MX25L12833F MXIC 131
W25Q128JV Winbond 106
GD25Q127C GD 90
EN25QH128A ESMT 109

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

Nor Flash的理论性能

原文:https://www.cnblogs.com/gmpy/p/12011436.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!