闪存芯片NOR Flash、NAND Flash傻傻分不清楚 ICMAX帮你搞定
通过前天的文章介绍,我们知道eMMC 是 Flash Memory 的一类,eMMC的内部组成是NAND flash+主控IC,那什么是Flash Memory、NOR Flash、NAND Flash,宏旺半导体就和大家好好捋一捋它们几者之间的关系。
Flash Memory 是一种非易失性的存储器。在嵌入式系统中通常用于存放系统、应用和数据等。在 PC 系统中,则主要用在固态硬盘以及主板 BIOS 中。另外,绝大部分的 U 盘、SDCard 等移动存储设备也都是使用 Flash Memory 作为存储介质。
1. 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 存储单元的电荷,如果长期没有使用,会发生电荷泄漏,导致数据错误,不过这个时间比较长,一般十年左右,此种异常是非永久性的,重新擦除可以恢复。
2. 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。)
2.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 连接。
图片: Parallel NOR Flash 与 Serial NOR Flash
鉴于 NOR Flash 擦写速度慢,成本高等特性,NOR Flash 主要应用于小容量、内容更新少的场景,例如 PC 主板 BIOS、路由器系统存储等。
2.2 NAND Flash
NAND Flash 需要通过专门的 NFI(NAND Flash Interface)与 Host 端进行通信,如下图所示:
图片:NAND Flash Interface
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 个比特信息。
图片: SLC、MLC 与 TLC
NAND Flash 的单个存储单元存储的比特位越多,读写性能会越差,寿命也越短,但是成本会更低。下图 中,给出了特定工艺和技术水平下的成本和寿命数据。
相比于 NOR Flash,NAND Flash 写入性能好,大容量下成本低。目前,绝大部分手机和平板等移动设备中所使用的 eMMC 内部的 Flash Memory 都属于 NAND Flash,PC 中的固态硬盘中也是使用 NAND Flash。
3. Raw Flash 和 Managed Flash
由于 Flash Memory 存在按块擦写、擦写次数的限制、读写干扰、电荷泄露等的局限,为了最大程度的发挥 Flash Memory 的价值,通常需要有一个特殊的软件层次,实现坏块管理、擦写均衡、ECC、垃圾回收等的功能,这一个软件层次称为 FTL(Flash Translation Layer)。
在具体实现中,根据 FTL 所在的位置的不同,可以把 Flash Memory 分为 Raw Flash 和 Managed Flash 两类。
图片: Raw Flash 和 Managed Flash
Raw Flash
在此类应用中,在 Host 端通常有专门的 FTL 或者 Flash 文件系统来实现坏块管理、擦写均衡等的功能。Host 端的软件复杂度较高,但是整体方案的成本较低,常用于价格敏感的嵌入式产品中。通常我们所说的 NOR Flash 和 NAND Flash 都属于这类型。
Managed Flash
Managed Flash 在其内部集成了 Flash Controller,用于完成擦写均衡、坏块管理、ECC校验等功能。相比于直接将 Flash 接入到 Host 端,Managed Flash 屏蔽了 Flash 的物理特性,对 Host 提供标准化的接口,可以减少 Host 端软件的复杂度,让 Host 端专注于上层业务,省去对 Flash 进行特殊的处理。eMMC、SD Card、UFS、U 盘等产品是属于 Managed Flash 这一类。
看完这篇文章,相信对Flash memory都会有一个全面的了解,无论是其原理,还是NOR Flash 和 NAND Flash、Raw Flash 和 Managed Flash 之间的异同,欢迎关注宏旺半导体,会持续带来存储领域更专业的文章。
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) 的商标。
相关问答
Serial flash 和nor flash nand flash 有什么区别?性能差别:对于Flash的写入速度,其实是写入和擦除的综合速度,NandFlash擦除很简单,而NorFlash需要将所有位全部写0(这里要说明一下,Flash器件写入只能把1写为0...
怎样防止芯片 flash 反复 擦除写 入?方法一:从flash旧扇区,取出1k数据到ram,放到flash新的扇区;从flash旧扇区,取出第2个1k数据到ram,放到flash新的扇区;重复至取完,然后再擦除flash旧扇...方....
在 flash 8.0中去除图形的笔触的方法,至少3种?1、选择图形帧,点选工具栏“笔触颜色”,设为无。2、点击黑色箭头工具(选择工具),将鼠标指针移动至图形笔触边缘,当右下方出现弧形时,双击鼠标,按DELETE...1...
adobe flash playernpapi可以删除吗?NPAPI对于下列浏览器有效,如果没有这些浏览器,就可以删除了:Firefox(火狐)Safari(苹果)Opera(欧朋12.17以下版本)Maxthon(傲游3.0以上版本)其.....
嵌入式设计中有必要同时具备nor flash 和 nand flash 吗?性能差别:于Flash写入速度其实写入擦除综合速度NandFlash擦除简单NorFlash需要所位全部写0(要说明Flash器件写入能1写0能0写1,说其写入式按照逻辑与进行譬原...
adobe如何清理残留?1.先使用常规方式在控制面板中卸载关闭所有的Adobe软件。2.运行AdobeCreativeCloudCleanerTool选择程序语言。3.输入e按回车键会进入英文界面模式,接....
NANDflash 和NORflash的区别?1、存储架构不同NORFlash架构提供足够的地址线来映射整个存储器范围。这提供了随机访问和短读取时间的优势,这使其成为代码执行的理想选择。另一个优点是100%...
flash 双击橡皮擦可以清除什么?可以清除写出来的东西可以清除写出来的东西
nand flash 可以同时读写吗?答:不可以虽然NAND不能同时执行读写操作,它可以采用称为"映射(shadowing)"的方法,在系统级实现这一点。NAND闪存阵列分为一系列128kB的区块(block),...
FLASH 中怎么把多余的帧删掉?1、按住SHIFT键,点击图层上需要删除的所有帧的左侧帧。2、按住SHIFT键不放,点击图层上需要删除的所有帧的右侧帧。此时,多余的帧已经被全选。3、按“DELETE...