报价
HOME
报价
正文内容
nand flash 无法擦除 作为嵌入式工程师的你,这些FLASH你应该明白吧
发布时间 : 2024-11-26
作者 : 小编
访问数量 : 23
扫码分享至微信

作为嵌入式工程师的你,这些FLASH你应该明白吧

嵌入式开发得弄明白各种Flash

1、Flash Memory的简介

大家好,我是一哥,今天来介绍下嵌入式的各种Flash。所谓Flash,是内存(Memory)的一种,但兼有RAM和ROM 的优点,是一种可在系统(In-System)进行电擦写,掉电后信息不丢失的存储器,同时它的高集成度和低成本使它成为市场主流。

Flash 芯片是由内部成千上万个存储单元组成的,每个单元存储一个bit。具有低功耗、大容量、擦写速度快、可整片或分扇区在系统编程(烧写)、擦除等特点,并且可由内部嵌入的算法完成对芯片的操作,因而在各种嵌入式系统中得到了广泛的应用。

作为一种非易失性存储器,Flash在系统中通常用于存放 程序 代码、常量表以及一些在系统掉电后需要保存的用户数据等。

///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程和毕业设计指导,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像白色字体加我也能领取哦,记得回复一哥///

常用的Flash为8位或16位的数据宽度,编程电压为单3.3V。主要的生产厂商为INTEL、ATMEL、AMD、HYUNDAI等。Flash 技术根据不同的应用场合也分为不同的发展方向,有擅长存储代码的NOR Flash和擅长存储数据的NAND Flash。一下对NOR Flash和NAND Flash的技术分别作了相应的介绍。

2、Flash Memory主要特性

与传统的硬盘存储器相比,Flash Memory 具有质量轻、能耗低、体积小、抗震能力强等的优点,但也有不少局限性,主要如下:

///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程和毕业设计指导,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像白色字体加我也能领取哦,记得回复一哥///

.需要先擦除再写入Flash Memory 写入数据时有一定的限制。它只能将当前为 1 的比特改写为 0,而无法将已经为 0 的比特改写为 1,只有在擦除的操作中,才能把整块的比特改写为 1。

块擦除次数有限Flash Memory 的每个数据块都有擦除次数的限制(十万到百万次不等),擦写超过一定次数后,该数据块将没法可靠存储数据,成为坏块。

为了最大化的延长 Flash Memory 的寿命,在软件上须要做擦写均衡(Wear Leveling),通过分散写入、动态映射等伎俩均衡使用各个数据块。同时,软件还须要进行坏块管理(Bad Block Management,BBM),标识坏块,不让坏块参与数据存储。(注:除了擦写导致的坏块外,Flash Memory 在出产过程也会产生坏块,即固有坏块。)

.读写干扰由于硬件实现上的物理特性,Flash Memory 在进行读写操作时,有可能会导致邻近的其他比特发生位翻转,导致数据异常。这种异常可以通过重新擦除来恢复。Flash Memory 应用中通常会使用 ECC 等算法进行错误检测和数据修正。

.电荷泄漏存储在 Flash Memory 存储单元的电荷,如果长期没有使用,会发生电荷泄漏,导致数据错误。不过这个时间比较长,一般十年左右。此种异常是非永久性的,重新擦除可以恢复。

3、Nor Flash 和 Nand Flash

根据硬件上存储原理的不同,Flash Memory 主要可以分为 NOR Flash 和 NAND Flash 两类。主要的差异如下所示:

·NAND Flash 读取速度与 NOR Flash 相近,根据接口的不同有所差异;

·NAND Flash 的写入速度比 NOR Flash 快很多;

·NAND Flash 的擦除速度比 NOR Flash 快很多;

·NAND Flash 最大擦次数比 NOR Flash 多;

·NOR Flash 支持片上执行,可以在上面直接运行代码;

·NOR Flash 软件驱动比 NAND Flash 简单;

·NOR Flash 可以随机按字节读取数据,NAND Flash 需要按块进行读取。

·大容量下 NAND Flash 比 NOR Flash 成本要低很多,体积也更小;(注:NOR Flash 和 NAND Flash 的擦除都是按块块进行的,执行一个擦除或者写入操作时,NOR Flash 大约需要 5s,而 NAND Flash 通常不超过 4ms。)

1、NOR Flash

NOR Flash 依据与 CPU 端接口的不同,能够分为 Parallel NOR Flash 和 Serial NOR Flash 两类。

Parallel NOR Flash 能够接入到 Host 的 SRAM/DRAM Controller 上,所存储的内容能够直接映射到 CPU 地址空间,不须要拷贝到 RAM 中即可被 CPU 访问,因而支持片上执行。Serial NOR Flash 的成本比 Parallel NOR Flash 低,主要通过 SPI 接口与 Host 连接。

鉴于 NOR Flash 擦写速度慢,成本高等特性,NOR Flash 主要应用于小容量、内容更新少的场景,例如 PC 主板 BIOS、路由器系统存储等。

2、NAND Flash

NAND Flash 需要通过专门的 NFI(NAND Flash Interface)与 Host 端进行通信,如下图所示:

NAND Flash 依据每个存储单元内存储比特个数的不同,能够分为 SLC(Single-Level Cell)、MLC(Multi-Level Cell) 和 TLC(Triple-Level Cell) 三类。其中,在一个存储单元中,SLC 能够存储 1 个比特,MLC 能够存储 2 个比特,TLC 则能够存储 3 个比特。

NAND Flash 的一个存储单元内部,是通过不同的电压等级,来表示其所存储的信息的。在 SLC 中,存储单元的电压被分为两个等级,分别表示 0 和 1 两个状态,即 1 个比特。在 MLC 中,存储单元的电压则被分为 4 个等级,分别表示 00 01 10 11 四个状态,即 2 个比特位。同理,在 TLC 中,存储单元的电压被分为 8 个等级,存储 3 个比特信息。

NAND Flash 的单个存储单元存储的比特位越多,读写性能会越差,寿命也越短,但是成本会更低。Table 1 中,给出了特定工艺和技术水平下的成本和寿命数据。

相比于 NOR Flash,NAND Flash 写入性能好,大容量下成本低。目前,绝大部分手机和平板等移动设备中所使用的 eMMC 内部的 Flash Memory 都属于 NAND Flash。PC 中的固态硬盘中也是使用 NAND Flash。

4、ROW Flash和Managed Flash

由于 Flash Memory 存在按块擦写、擦写次数的限制、读写干扰、电荷泄露等的局限,为了最大程度的发挥 Flash Memory 的价值,通常需要有一个特殊的软件层次,实现坏块管理、擦写均衡、ECC、垃圾回收等的功能,这一个软件层次称为 FTL(Flash Translation Layer)。

在具体实现中,根据 FTL 所在的位置的不同,可以把 Flash Memory 分为 Raw Flash 和 Managed Flash 两类。

1、Raw Flash

在此类应用中,在 Host 端通常有专门的 FTL 或者 Flash 文件系统来实现坏块管理、擦写均衡等的功能。Host 端的软件复杂度较高,但是整体方案的成本较低,常用于价格敏感的嵌入式产品中。

通常我们所说的 NOR Flash 和 NAND Flash 都属于这类型。

2、Managed Flash

Managed Flash 在其内部集成了 Flash Controller,用于完成擦写均衡、坏块管理、ECC校验等功能。相比于直接将 Flash 接入到 Host 端,Managed Flash 屏蔽了 Flash 的物理特性,对 Host 提供规范化的接口,能够减少 Host 端软件的复杂度,让 Host 端专注于上层业务,省去对 Flash 进行特殊的处理。

想要学习单片机的朋友 ,做毕业设计的同学,关注我们,回复一哥,与导师一起学习成长,共同进步,还有更多资料领取。

说了这么多,大家记得留意下方评论第一条(或者私信我)有干货~

-END-

*本文系网络转载,版权归原作者所有,如有侵权请联系删除

SSD新范式 |数据中心SSD测试 之Windows篇(一)

数据中心/企业级SSD的测试是一个非常庞杂的工程,但许多用户和经销商并没有充分理解这一点。为了让大家对数据中心SSD的测试有更深入的了解,我们准备了本系列的文章。

环境与工具

数据中心SSD通常是用在服务器或者工作站当中的。主要的运行环境(操作系统)是Windows、Windows Server,以及各式Linux系统,如CentOS、Ubuntu,还有国产的OpenEuler、龙蜥、OpenCloudOS等。

Linux是大多数服务器使用的操作系统,Linux系统下最常用的测试软件是FIO。但考虑到Linux的部署、命令行操作还是有一定的操作门槛,这方面的内容我们将来再做展开。

在多数人更为熟悉的Windows系统下,常用于数据中心SSD测试的工具软件是IOmeter。IOmeter不需要安装,压缩包内只有两个文件,直接运行其中的“IOmeter.exe”文件即可。

一些数码大V在消费类SSD中也会使用IOmeter以体现其专业度。这种“专业”会包括两方面:其一,IOmeter的界面比CystalDiskMark、TxBENCH、AS SSD等“快餐”测试软件要复杂得多,会给人营造艰深晦涩的感觉。

其二,IOmeter确实可以提供“快餐”软件所缺乏的数据,典型的成果包括诸如“万秒图”之类的。“万秒”意味着可以给SSD比较重的负荷,说服力也会高很多。而工作负荷的轻重,不仅仅是高低档消费类SSD的区别,也是数据中心SSD与消费类SSD的根本区别。

SSD工作负荷的轻重,主要体现在几个方面:

1、 队列深度

2、 混合读写

3、 持续时间

这几方面的内容我们会在相关的测试项目中逐步展开。同时,我们先通过消费者熟悉的快餐测试软件帮助读者理解测试项目的内涵,并在此基础上逐步过渡到IOmeter,再进阶到FIO的应用。

测试最基本的设置:

数据包大小

略有SSD测试常识的人都知道,需要考察几种性能:顺序读、顺序写、随机读、随机写。

那么,顺序和随机的定义是什么?

先说随机。现代操作系统的内存和文件系统都是页式管理,以4KB为单位。基于磁盘的512Byte扇区概念对SSD而言意义不大。因为NAND Flash的基本存储单元是页,容量一般为2KB或者4KB,这是最小的读写单元。因此,综合操作系统和NAND Flash的特点,4KB的数据块会被看做是最基本、最通用的操作单元,公认用这个容量的数据包当做“随机”读写的代表。

考虑到应用或者SSD的特点,在某些测试中8KB、16KB这样的数据会更有实际意义。譬如Oracle数据库的默认块大小是8KB,也可以被设为2KB~64KB不等。再譬如Solidigm D5-P5316、P5336等大容量SSD使用了64KB或者16KB大小的间接单元(IU,indirection unit),它们可以接受4KB的写入,但使用更大的数据单元会更有效率。使用这些软硬件的用户都会进行针对性的优化,对应的,测试软件在考察随机性能时也应该进行相应的设置。

刚才说的是“随机”读写的尺度与“页”相关,那么,“顺序”读写的尺度就与块相关了。若干NAND Flash的页会组成一个块,典型的是64个页。常见的块容量可能是128KB、256KB、512KB。NAND Flash的擦除是以块为单位的。因此,128KB数据包的读写可以看作是顺序操作的最小单元,1到4个数据块正好填满一个块。也有的测试会使用较大的单元,如IOmeter的预设是256KB,CrystalDiskMark预设了1MB等,这些数据包的容量可能更接近NAND Flash的实际块容量。

以人们熟悉的CrystalDiskMark为例,左侧的色块是SEQ1M、SEQ128K、RND4K,代表的就是顺序读写(1MB数据包)、顺序读写(128KB数据包)、随机读写(4KB数据包)。

综上,设置正确的数据包大小,就是考察SSD的随机或顺序读写的性能。最普适的设置是4KB和128KB,酌情按照需要额外增加特定的数据包大小。

对测试成绩影响最大的设置:

队列深度

要想在SSD测试中获得理想的成绩,最值得留意的重点是设置适宜的队列深度。

对于个人电脑,需要同时访问SSD的应用程序并不多,主要就是前台运行的软件(如游戏、图形图像软件)会断续读写较大的文件,以及后台运行的通讯工具(包括电子邮箱、即时通讯工具)偶尔接收信息,持续时间较长但吞吐量比较小的行为主要是后台上传下载一些文件或者系统更新等。整体而言,消费类SSD的工作队列深度在1~4之间。

服务器面对的情况就不一样,其会同时服务多个用户/租户,其并行操作的规模要大得多,平均到每个SSD的工作队列深度通常在16~64的水平。

常用的测试软件大多可以模拟比较大规模的访问,譬如CystalDiskMark,其4KB随机写测试的默认设置是线程数为1,队列32——ATA协议的最大队列深度就是32。而针对NVMe SSD的预设为线程16、队列32,也就是界面中简写的“Q32T16”。

实际的队列深度就是队列数乘以线程数,Q32T16就是32×16=512,总共可以向SSD发出512队列深度的操作请求。NVMe协议可以接受64K之多的队列,而且还可以优化操作顺序,原则上队列深度越大,平摊下来的指令延迟相对越小,IOPS会越高。因此,在使用CystalDiskMark做测试时,如果忘记选择NVMe模式,那就是使用较小的32队列深度进行随机测试,成绩就会差一些。

深究一下队列和线程

队列深度是我们设置的队列数和线程数的积。理论上来说,对于SSD而言,线程1×队列512,与线程16×队列32,由于乘积相同,其实是等效的。

较多的线程可以充分发挥现代处理器核心数量的优势,有可能带来更优的测试数据,但这并不绝对,这是因为跨处理器内核甚至跨插槽的操作也可能会带来预期以外的结果。相对而言,线程1得到的测试数据更容易复现。因此,在实际的测试当中,我们会建议分别考察1个线程和8/16个线程的结果。

多线程的测试还有更为复杂的设置技巧,譬如让不同线程写入不同的区域,这会带来更可靠的性能。

较大的队列深度有利于获得更高的IOPS,让数据更好看。但对于消费类SSD,深队列的测试数据参考价值不高,大家还是看浅队列(Q1T1)的数据更有参考价值。对于数据中心SSD,一般官方公布的4KB随机读写测试的数据是在256队列深度下的。更大的队列深度,如512,可以体现特别极端的情况,但实际应用中很少发生,因为积压太多请求也意味着累积的延迟非常大,会拖慢整个系统的响应。如果服务器真的会有这么大的负荷,那应该建议配置更多的SSD来分担。

小结

今天,大家对SSD测试的基本参数就算入门了,对常见测试软件提供的预设信息可以做到“知其然,知其所以然”。对于IOmeter,我们只是初步展示其界面,其中有许多的预设项目,经过本节文章,大家也能够有所理解。下一节,我们将详细讲解IOmeter的设置,以及一些稍微高级的测试设计技巧。

关于 Solidigm

Solidigm 是全球领先的创新 NAND 闪存解决方案提供商。Solidigm致力于成就客户,激发数据无限潜能,推动人类发展进步。源自于英特尔出售的NAND和SSD业务,Solidigm公司于 2021 年 12 月正式成立,目前是半导体领导者SK 海力士在美国的独立子公司。Solidigm 总部位于美国加州兰乔科尔多瓦,拥有 2000 多名员工,在全球 20 个地区设有办事机构。如欲了解有关 Solidigm 的更多信息,请访问[https://solidigm.com],或关注微信公众号[SolidigmChina]。"Solidigm"是SK hynix NAND Product Solutions Corp (d/b/a Solidigm) 的商标。

相关问答

为何 flash 橡皮擦工具不能 擦除 基本矩形工具和基本椭圆工具? -...

如果觉的我答案有用,请点赞。鼠标点击矩形工具不放,右边便出现椭圆工具,,鼠标移到椭圆工具上松开。

FLASH 10c..ocx正在运行 没法删除-ZOL问答

点击开始--点运行---输入regsvr32/uFLASH10c.ocx注销掉这个控件在注销之前记得结束进程里面与FLASH有关的进程,然后在注销spanname=whlmid=whlm...

cc2530 擦除flash 后收不到数据?

解决方法:片内flash擦除及写入的时序由芯片内自动控制,当发出擦除或写入指令时。CPU暂时停止工作,外围设备(串行口、ADC、Timer等仍处于活动状态)。外围设...

迪优美特X5 1G/8G版开不了机,刷机 擦除FLASH 提示等待maskrom...

开机一直卡在yunos界面,主控是RK3128a,有谁知道怎么解决,跪谢!!!手机MotoMotoFLASH5人讨论1.1w次围观关注问题写回答讨论回答(5)syl52471、...

sdkflash怎么 擦除 ?

flash的特性是,写数据只能将1写为0,0不能写为1.擦除数据是将所有数据都写为1.因此如果想在已经数据的flash上写入新的数据,则必须先擦除。sdcard则没有这个特...

酷喵影视要清除 flash 数据才能播放是什么原因?

一般当网站更新网页播放器时需要用户刷新浏览器先前浏览所产生的缓存,这样清除(刷新)缓存之后用户浏览器会接收新的网页播放器程序进行缓存(更新),而刷新缓...

Nandflash 和norflash的区别?

nandflash和norflash的区别如下:1、开发的公司不同:NORflash是intel公司1988年开发出了NORflash技术。NOR的特点是芯片内执行(XIP,eXecute...

windows10 flash 插件异常解决方案?

Windows10flash插件异常解决方案如下:使用其他浏览器。例如火狐浏览器或者IE浏览器。手动启用flash插件。在浏览器地址栏中输入"chrome://settings/co...

Serial flash 和nor flash nand flash 有什么区别?

性能差别:对于Flash的写入速度,其实是写入和擦除的综合速度,NandFlash擦除很简单,而NorFlash需要将所有位全部写0(这里要说明一下,Flash器件写入只能把1写为0...

我明明下载了 Flash ,为什么没用?

可能原因:防火墙限制:如果您的防火墙限制了Flash的使用,请将其从防火墙的黑名单中删除。浏览器缓存:有时,浏览器缓存可能导致问题。请尝试清除浏览器缓...

 大麻雀  the x factor 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部