eMMC深入浅出 第四章 eMMC指令 第六节 保养 CMD38
Section 6 CMD38 maintenance
第六节 CMD38 保养
CMD38 has different arguments, like the different maintenance packages, among which Discard is the most popular one now. This operation could help eMMC device to identify the useless data which could be removed so that the space occupied could be reclaimed.
CMD38有不同的参数,就像不同的保养套餐,其中Discard是现在最常用的一个。这个操作可以帮助eMMC器件识别不用的可以被去除的数据从而释放占用的空间。
The official name for CMD38 is the Erase which might probably come after NAND Flash Erase operation. But eMMC erase is totally different from NAND Flash erase. eMMC erase is a logical operation which has different arguments to implement different kinds of erase, like erase, trim or discard, basic unit is Erase Groups. While NAND Flash erase is a physical operation of which basic unit is Flash Block. The key points here are logical or physical operation, and also basic unit size. Write block is usually 512Bytes, Erase Groups is several 512 Bytes, Flash Block is much bigger to several or even tens of megabytes based on the different NAND Flash technology generation.
CMD38的官方名字是擦除,来源可能是因为NAND闪存的擦除操作。但是eMMC的擦除操作和NAND闪存的擦除操作完全不同。eMMC的擦除操作是一个有着多种参数实现不同擦除的逻辑操作,比如erase,trim,discard,基本单位是擦除组。但是NAND闪存是一个以闪存块为基本单位的物理操作。这里的重点是逻辑操作还是物理操作还有基本操作单位的大小。写入块通常是512字节,擦除块大小是几个512字节,闪存块要大不少,不同代的NAND闪存技术的块大小可以是几兆甚至几十兆字节。
The main function of Erase operation to release the memory space by removing those invalid data. For the NAND flash, the erase operation is to do a physical data removal based on the Flash block of which size is large, the physical removal operation will usually take quite a long time compared to the read and write operation.
擦除操作的主要功能是移除那些无效的数据来释放空间。对于NAND闪存,擦除操作是基于闪存块的物理移除操作,闪存块比较大,相比较读写操作来说需要非常长的时间。
In order to better utilize this feature and response to Host read and write request with lower latency, logical removal operation CMD38 is used in the eMMC. The logical here means not to removal the data in the real time, just mark the useless data invalid which make host think the data already gone. Then eMMC controller will choose some other convenient time for the physical removal operation when Host is doing something else and not accessing the eMMC device, we call it BKOPS(background operation)garbage collection during Host IDLE time.
为了更好的利用这个特性以及低延迟的响应主机的读或者写请求,eMMC使用逻辑移除操作的CMD38。这里逻辑的意思是没有实时的移除数据,只是标记无用数据为无效让主机认为这些数据已经没了。之后eMMC控制器会选择其他一些在主机忙其他事情没有访问eMMC器件的适宜的时间去做物理移除操作,我们称之为主机空闲时间的BKOPS(后台操作)垃圾回收。
There are total 3 kinds of argument with CMD38, indicated by the lowest two bit of the 32-bit argument, bit 0 and bit 1. ‘0’’0’ is normal erase, ‘0’’1’ is trim, ‘1’’1’ is discard. Normal erase operation unit is called Erase Group, composed of several writable blocks, each writable block normally represents a 512-Byte in eMMC, the same meaning as sector.
一共有三种参数的CMD38,用32比特参数的最低两位比特0和比特1来表示。‘0’‘0’是普通擦除操作,’0’‘1’是trim,‘1’‘1’是discard。普通的erase操作单位是擦除组,由过干个写入块组成,在eMMC中每个写入块的大小通常是512字节,和Sector的意思一样。
The second feature of normal erase is the logical data pattern after removal, normally it should be all zero as it is more readable by human being. This two features are the main driving force for the evolution to trim and discard. Trim only change one feature of normal erase to use writable block as the basic unit since Erase group size is large. Discard not only change the basic operation unit to writable block, but also keep the data in the removal area logically unchanged since it will save eMMC device response time to CMD38 and it might be unnecessary to logically change those data to a fixed pattern all zero in most cases.
普通擦除的第二个特性是移除之后的逻辑数据样式,通常是全零,因为对于人们来说这样可读性更好。这两个特性是演进出trim和discard的主要驱动力。Trim只改了普通擦除其中一个特性,因为擦除组的比较大所以换用写入块作为基本操作单位。Discard则不仅仅是改了基本操作单位为写入块,而且保持移除数据区域的数据逻辑上不变,这样可以节省eMMC器件对CMD38的响应时间而且在绝大多数场合也没那么必要把这些数据逻辑上改为固定格式的全‘0’。
Before CMD38, there will always be CMD35 and CMD36 as a pair to defined the erase operation start LBA and end LBA.
CMD38之前,CMD35和CMD36总是成对出现来定义擦除操作的起始LBA和结束LBA。
There are two more bit setting in the CMD38 argument to define the secure erase and force garbage collection. Just ignore them and do not use this two setting. Secure erase will do physically data removal directly instead of logical removal and bypassing the eMMC controller management. Force garbage collection also has the same issue that the order comes from Host directly which should be BKOPS and better handled by eMMC itself. This will make the background operation managed by eMMC controller to the foreground operation controlled by the Host. This does not quite make sense as eMMC controller knows better when exactly to do those kind of operation.
在CMD38参数里面还有两个比特来定义安全擦除以及强制垃圾回收。别理会他们也别用这两个设置。安全擦除会跳过eMMC控制器的管理直接做物理擦除而不是逻辑擦除。强制垃圾回收也有同样的问题,那就是那些本该是BKOPS,由eMMC自己管理更好的命令直接来自于主机。这会让eMMC管理的后台操作变成主机管理的前台操作。这样做不太合理因为eMMC控制器更准确知道什么时候去做这类操作。
Further thinking on the secure erase feature from the security point of view, on the one hand we need this security feature to make sure the data could be real time physically removal in some scenario, on the other hand this secure erase operation could not be interrupted until the physical operation done which might be too long latency for an embed system. eMMC specification makes the complement of the secure erase operation shortage to introduce a total new concept of Sanitize operation in the eMMC specification 4.5. Sanitize operation is not using CMD38 anymore, but go through Ext_CSD byte 165 by CMD6. If even higher security level is required, host could use RPMB (Relay Protected Memory Block) area to access the data with the specific key.
从安全角度来看对安全特性做进一步的思考,一方面我们在某些场合需要这样的特性来保证数据可以被实时物理擦除,另一方面这个安全擦除操作在结束前不能被打断直到物理擦除做完,这个延迟时间对于嵌入式系统来说太长了。eMMC规范在4.5协议中弥补了安全擦除的这个缺点而引入了Sanitize的概念。Sanitize不再用CMD38而是通过CMD6设置Ext_CSD的字节165。如果需要更高安全级别,主机可以用特定的密钥来使用RPMB(重放保护存储块)区域访问数据。
一文对比DRAM、FLASH和DDR
定义
DRAM
DRAM(Dynamic Random Access Memory),即动态随机存取存储器,最为常见的系统内存。DRAM 只能将数据保持很短的时间。为了保持数据,DRAM使用电容存储,所以必须隔一段时间刷新(refresh)一次,如果存储单元没有被刷新,存储的信息就会丢失。 (关机就会丢失数据)。
Flash内存
Flash内存即Flash Memory,全名叫Flash EEPROM Memory,又名闪存,是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位,区块大小一般为256KB到20MB。闪存是电子可擦除只读存储器(EEPROM)的变种,EEPROM与闪存不同的是,它能在字节水平上进行删除和重写而不是按区块擦写,这样闪存就比EEPROM的更新速度快,所以被称为Flash erase EEPROM,或简称为Flash Memory。由于其断电时仍能保存数据,闪存通常被用来保存设置信息,如在电脑的BIOS(基本输入输出程序)、PDA(个人数字助理)、数码相机中保存资料等。另一方面,闪存不像RAM(随机存取存储器)一样以字节为单位改写数据,因此不能取代RAM。
NOR Flash和NAND Flash
NOR Flash和NAND Flash是现在市场上两种主要的非易失闪存技术。
Intel于1988年首先开发出NOR Flash 技术,彻底改变了原先由EPROM(Erasable Programmable Read-Only-Memory电可编程序只读存储器)和EEPROM(电可擦只读存储器Electrically Erasable Programmable Read - Only Memory)一统天下的局面。
紧接着1989年,东芝公司发表了NAND Flash 结构,强调降低每比特的成本,有更高的性能,并且像磁盘一样可以通过接口轻松升级。
NOR Flash 的特点是芯片内执行(XIP ,eXecute In Place),这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。NOR 的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响到它的性能。NAND的结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于Flash的管理和需要特殊的系统接口。通常读取NOR的速度比NAND稍快一些,而NAND的写入速度比NOR快很多,在设计中应该考虑这些情况。
DDR
DDR=Double Data Rate双倍速率同步动态随机存储器。严格的说DDR应该叫DDR SDRAM,人们习惯称为DDR,其中,SDRAM 是Synchronous Dynamic Random Access Memory的缩写,即同步动态随机存取存储器。而DDR SDRAM是Double Data Rate SDRAM的缩写,是双倍速率同步动态随机存储器的意思。DDR内存是在SDRAM内存基础上发展而来的,仍然沿用SDRAM生产体系,因此对于内存厂商而言,只需对制造普通SDRAM的设备稍加改进,即可实现DDR内存的生产,可有效的降低成本。
DDR2
DDR2(Double Data Rate 2) SDRAM是由JEDEC(电子设备工程联合委员会)进行开发的新生代内存技术标准,它与上一代DDR内存技术标准最大的不同就是,虽然同是采用了在时钟的上升/下降延同时进行数据传输的基本方式,但DDR2内存却拥有两倍于上一代DDR内存预读取能力(即:4bit数据读预取)。换句话说,DDR2内存每个时钟能够以4倍外部总线的速度读/写数据,并且能够以内部控制总线4倍的速度运行。
此外,由于DDR2标准规定所有DDR2内存均采用FBGA封装形式,而不同于目前广泛应用的TSOP/TSOP-II封装形式,FBGA封装可以提供了更为良好的电气性能与散热性,为DDR2内存的稳定工作与未来频率的发展提供了坚实的基础。回想起DDR的发展历程,从第一代应用到个人电脑的DDR200经过DDR266、DDR333到今天的双通道DDR400技术,第一代DDR的发展也走到了技术的极限,已经很难通过常规办法提高内存的工作速度;随着Intel最新处理器技术的发展,前端总线对内存带宽的要求是越来越高,拥有更高更稳定运行频率的DDR2内存将是大势所趋。
DDR3
DDR3是一种计算机内存规格。它属于SDRAM家族的内存产品,提供了相较于DDR2 SDRAM更高的运行效能与更低的电压,是DDR2 SDRAM(四倍资料率同步动态随机存取内存)的后继者(增加至八倍),也是现时流行的内存产品规格。
主要特点:
(1)功耗和发热量较小:吸取了DDR2的教训,在控制成本的基础上减小了能耗和发热量,使得DDR3更易于被用户和厂家接受。
(2)工作频率更高:由于能耗降低,DDR3可实现更高的工作频率,在一定程度弥补了延迟时间较长的缺点,同时还可作为显卡的卖点之一,这在搭配DDR3显存的显卡上已有所表现。
(3)降低显卡整体成本:DDR2显存颗粒规格多为16M X 32bit,搭配中高端显卡常用的128MB显存便需8颗。而DDR3显存颗粒规格多为32M X 32bit,单颗颗粒容量较大,4颗即可构成128MB显存。如此一来,显卡PCB面积可减小,成本得以有效控制,此外,颗粒数减少后,显存功耗也能进一步降低。
(4)通用性好:相对于DDR变更到DDR2,DDR3对DDR2的兼容性更好。由于针脚、封装等关键特性不变,搭配DDR2的显示核心和公版设计的显卡稍加修改便能采用DDR3显存,这对厂商降低成本大有好处。
目前,DDR3显存在新出的大多数中高端显卡上得到了广泛的应用。 现在许多低端的显卡也有采用DDR3显存的
DDR4
DDR,英文全称为:Dual Data Rate,是一种双倍速率同步动态随机存储器。严格的说,DDR应该叫DDR SDRAM,人们习惯称为DDR,其中,SDRAM 是Synchronous Dynamic Random Access Memory的缩写,即同步动态随机存取存储器,而DDR SDRAM是Double Data Rate SDRAM的缩写,是双倍速率同步动态随机存储器的意思。
简单来说,DDR4就是第二代内存的意思,目前不少智能手机与电脑都用上了新一代DDR4内存,它属于我们熟知的DDR3内存的下一代版本,带来了更低的功耗与更出色的性能。
区别
NAND flash和NOR flash
一、NAND flash和NOR flash的性能比较
flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。
NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。执行擦除时块尺寸的不同进一步拉大了NOR和NADN之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于NOR的单元中进行。
这样,当选择存储解决方案时,设计师必须权衡以下的各项因素。
1、NOR的读速度比NAND稍快一些。
2、NAND的写入速度比NOR快很多。
3、NAND的4ms擦除速度远比NOR的5s快。
4、大多数写入操作需要先进行擦除操作。
5、NAND的擦除单元更小,相应的擦除电路更少。
二、NAND flash和NOR flash的接口差别
NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。
NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。
三、NAND flash和NOR flash的容量和成本
NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。
NOR flash占据了容量为1~16MB闪存市场的大部分,而NAND flash只是用在8~128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储,NAND在CompactFlash、Secure Digital、PC Cards和MMC存储卡市场上所占份额最大。
四、NAND flash和NOR flash的可靠性和耐用性
采用flahs介质时一个需要重点考虑的问题是可靠性。对于需要扩展MTBF的系统来说,Flash是非常合适的存储方案。可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。
五、NAND flash和NOR flash的寿命(耐用性)
在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。
六、位交换
所有flash器件都受位交换现象的困扰。在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特位会发生反转或被报告反转了。一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用
七、EDC/ECC算法
这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可靠性。
八、坏块处理
NAND器件中的坏块是随机分布的。以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。
NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。
九、易于使用
可以非常直接地使用基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码。
由于需要I/O接口,NAND要复杂得多。各种NAND器件的存取方法因厂家而异。在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND器件写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。
十、软件支持
当讨论软件支持的时候,应该区别基本的读/写/擦操作和高一级的用于磁盘仿真和闪存管理算法的软件,包括性能优化。
在NOR器件上运行代码不需要任何的软件支持,在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),NAND和NOR器件在进行写入和擦除操作时都需要MTD。
使用NOR器件时所需要的MTD要相对少一些,许多厂商都提供用于NOR器件的更高级软件,这其中包括M-System的TrueFFS驱动,该驱动被Wind River System、Microsoft、QNX Software System、Symbian和Intel等厂商所采用。
驱动还用于对DiskOnChip产品进行仿真和NAND闪存的管理,包括纠错、坏块处理和损耗平衡。
DDR与DDR2
DDR与DDR2区别一览表
DDR2与DDR3
特性区别:
1、逻辑Bank数量
DDR2 SDRAM中有4Bank和8Bank的设计,目的就是为了应对未来大容量芯片的需求。而DDR3很可能将从2Gb容量起步,因此起始的逻辑Bank就是8个,另外还为未来的16个逻辑Bank做好了准备。
2、封装(Packages)
由于DDR3新增了一些功能,在引脚方面会有所增加,8bit芯片采用78球FBGA封装,16bit芯片采用96球FBGA封装,而DDR2则有60/68/84球FBGA封装三种规格。并且DDR3必须是绿色封装,不能含有任何有害物质。
3、突发长度(BL,Burst Length)
由于DDR3的预取为8bit,所以突发传输周期(BL,Burst Length)也固定为8,而对于DDR2和早期的DDR架构的系统,BL=4也是常用的,DDR3为此增加了一个4-bit Burst Chop(突发突变)模式,即由一个BL=4的读取操作加上一个BL=4的写入操作来合成一个BL=8的数据突发传输,届时可通过A12地址线来控制这一突发模式。
4、寻址时序(Timing)
就像DDR2从DDR转变而来后延迟周期数增加一样,DDR3的CL周期也将比DDR2有所提高。DDR2的CL范围一般在2至5之间,而DDR3则在5至11之间,且附加延迟(AL)的设计也有所变化。DDR2时AL的范围是0至4,而DDR3时AL有三种选项,分别是0、CL-1和CL-2。另外,DDR3还新增加了一个时序参数——写入延迟(CWD),这一参数将根据具体的工作频率而定。
DDR3与DDR4
主要区别:
1、外观改变
DDR4内存条外观变化明显,金手指变成弯曲状,这意味着,DDR4内存不再兼容DDR3,老平台电脑无法升级DDR4内存,除非将CPU和主板都更换为新平台。
2、DDR4内存频率与带宽提升明显
频率方面,DDR3内存起始频率为800,最高频率达到了2133。DDR4内存起始频率就达到了2133,量产产品最高频率达到了3000,从内存频率来看,DDR4相比DDR3提升很大。
带宽方面,DDR4内存的每个针脚都可以提供2Gbps(256MB/S)的带宽,DDR4-3200那就是51.2GB/s,比之DDR3-1866高出了超过70%。
综合来看,DDR4内存性能最大幅度可比DDR3提升高达70%,甚至更高。
3、DDR4内存容量提升明显,可达128GB
上一代DDR3内存,最大单挑容量为64GB,实际能买到的基本是16GB/32GB,而新一代DDR4内存,单条容量最大可以达到128GB,媲美SSD了。
4、DDR4功耗明显降低,电压达到1.2V、甚至更低。上一代DDR3内存,采用1.5V标准电压,而DDR4内存则降低为1.2V,甚至可以做到更低,功耗下降了,更省电,并且可以减少内存的发热。
简单总结:DRAM、FLASH和DDR等都是目前主流的存储器,在服务器三大件中占了重要的占比。在酷热炎暑,客户数据中心的冷却电力成本更是达到了年度高峰,如果您的数据中已经全部FLASH化,冷却电力成本会大幅度下降。非洲估计也很热吧。
文章及配图来源:ittbank
相关问答
Mswwinlm是什么软件?是一款编程工具软件,可用于解决LM开发板的JTAG连接失效问题,用于解锁JTAG管脚。解锁操作的具体步骤是:1.运行LMFlashProgrammer软件,把JTAGSpeed(Hz)调.....
手机所谓的刷机是什么意思? - 155****2934 的回答 - 懂得一般购买水货手机显示中文的都是已经被经销商刷完的,自己刷机主要是因为版本底刷高版本,或者刷稳定版本。行货也存在刷机的问题。去下软件可以就刷,...
odin三星刷机工具?为了方便大家对三星Odin刷机工具功能更快的了解,就按照序号来一一介绍其功能和作用。1、这里显示的是【ID:COM】上面会显示刷机的进度,下面会显示软件是...
r write *.bin firmwware命令后返回failed to erase block怎么解决?建议如果有一定焊接基础的买一块Flash芯片(或者拆下来),位置在这里然后刷原厂固件(在偏移0001FC00处的前六位改成路由器上的MAC地址)刷进Flash,装回去就可...
红米note手机进入fastboot模式后怎么处理?-ZOL问答手机小米小米红米Note讨论回答(5)红米Note手机进入fastboot模式后的解决方...然后将手机连接到电脑上,并在电脑上安装Miflash软件。2.在电脑的D盘创建一...
fdisk的使用方法?CZ80用过一段时间以后会掉速,表现是写入速度极低且不稳定解决方法一找闪迪换货(终生质保)方法二低级格式化(很慢)方法三让主控直接擦除Flash。这个过程...
如何查看linux根分区下全部目录及文件的大小-ZOL问答搜索《linux就该这么学》,第6章存储结构与磁盘划分参考下!有用(0)回复jqmgls|xargs-I{}du-s{}希望对你有帮助。有用(0)回复313300你可...
cg100编程器怎样恢复原始数据?恢复原始数据的方法是通过使用cg100编程器中的“Erase”命令进行操作,此命令可以将所有的数据清空,恢复到初始状态,具体步骤如下:1.连接cg100编程器和目标设...
Cisco 2900路由器密码忘记了?1.在路由器的console口接上一个终端或用安装仿真终端软件的PC机。2.输入showversion命令,然后记下寄存器值,通常是0x2102or0x102。这个值显示在最后一...
cisco3560交换机如何恢复出厂设置?Switch#erasestartup-configSwitch#deleteflash:vlan.datSwitch#reload最后当系统提示是否保存配置时,选择noSwitch#er...