EraseTrim Discard Sanitize详解

JESD B5.1 EMMC协议介绍(九) JESD B51 EMMC协议解读 阅读详情

EraseTrim Discard Sanitize详解

针对JEDEC协议中几个抹除资料的命令,大家都很容易将其混淆。现在就这四个抹除命令作详细介绍,希望能帮助大家分清各个命令的具体含义及用法。


  1. Erase

1.1擦除组(EraseGroup

Erase翻译过来是抹去、擦除的意思。eMMC中可擦除的单位称为“擦除组”,擦除组是用写入块(writeblocks,Device的基本可写单位)来测量的。擦除组的大小是一个设备特殊参数,当ERASE_GROUP_DEF设置为不可用的时候,擦除组的大小在CSD中定义;当ERASE_GROUP_DEF设置为可用的时候,擦除组的大小在EXT_CSD中定义。

ERASE_GROUP_DEF(EXT_CSD[175])=0

size of erasableunit = (ERASE_GRP_SIZE + 1) * (ERASE_GRP_MULT+ 1)

size of writeprotect = (WP_GRP_SIZE+1)

ERASE_GROUP_DEF(EXT_CSD[175])=1

size of erasableunit = 512Kbyte × HC_ERASE_GRP_SIZE

size of writeprotect = 512KB * HC_ERASE_GRP_SIZE *HC_WP_GRP_SIZE

    1. Erase的原理

一旦擦除的命令成功完成,擦除掉的映射地址范围用写满01的形式表现出来。擦除命令的作用就是简单的将映射地址范围移动到未映射的地址范围。


    1. Erase的过程

Erase的过程分三个步骤:

  1. 首先host通过ERASE_GROUP_START(CMD35)命令定义地址范围的开始地址

  2. Host再通过ERASE_GROUP_END(CMD36)命令定义地址范围的终止地址

  3. 通过ERASE(CMD38)命令将参数全部设置为0ERASE命令的地址段是一个擦除组地址)

如果erase命令(CMD35,CMD36.CMD38)接收到的命令顺序与Erase步骤不同,Device端将在状态寄存器中设置一个ERASE_SEQ_ERROR位并重置整个顺序。

如果host提供一个范围外的地址作为CMD35CMD36的参数值,Device将会拒绝这个命令,回复一个ADDRESS_OUT_OF_RANGE的提示并重置整个擦除顺序。

如果接收到一个“非擦除”(不是CMD35,CMD36,CMD38CMD13)的命令,Device将会回复一个ERASE_RESET位,重置擦除顺序并执行最后一个命令。对于所选设备的非地址范围的命令将不会终止整个擦除顺序。

如果擦除的范围包含写保护块,写保护块将会完整保留,只会擦除未写保护的数据块。WP_ERASE_RESET位将会在状态寄存器中设置。

具体流程图如下所示:


  1. TRIM

2.1TRIM单位—写入块(writeblock)

Trim的可擦除单位是写入块,而非擦除组。定义了三种多块写入的类型:

Open-ended Multiple-block write ,Multiple-block write with pre-defined block count,

Reliable Write

Host可以通过多块操作在任意时间中止写动作。Host通过发送一个传输命令中止动作。


2.2 TRIM的原理

一旦Trim的命令成功完成,Trim掉的映射地址范围用写满01的形式表现出来。Trim命令的作用就是简单的将映射地址范围移动到未映射的地址范围。


2.3 TRIM的过程

TRIM的过程分三个步骤:

  1. 首先host通过ERASE_GROUP_START(CMD35)命令定义地址范围的开始地址

  2. Host再通过ERASE_GROUP_END(CMD36)命令定义地址范围的终止地址

  3. 通过ERASE(CMD38)命令将参数bit0设置为1,其他的bit都设置为0.(在TRIM操作中CMD35CMD36地址的识别都是通过写入块实现的)

如果Trim命令(CMD35,CMD36CMD38)中的一个元素接收到与既定TRIM步骤不同的顺序,Device端将在状态寄存器中设置一个ERASE_SEQ_ERROR位并重置整个顺序。

如果host提供一个范围外的地址作为CMD35CMD36的参数值,Device将会拒绝这个命令,回复一个ADDRESS_OUT_OF_RANGE的提示并重置整个TRIM顺序。

如果接收到一个“非擦除”(不是CMD35,CMD36,CMD38CMD13)的命令,Device将会回复一个ERASE_RESET位,重置擦除顺序并执行最后一个命令。对于所选设备的非地址范围的命令将不会终止整个擦除顺序。

如果TRIM的范围包含写保护块,写保护块将会完整保留,只会擦除未写保护的数据块。WP_ERASE_RESET位将会在状态寄存器中设置。

Host应该慎重执行Trim命令以防止非故意的数据丢失。

重置Device(使用CMD0,CMD15,或使用eMMC的硬件重置)或电源故障将终止任何挂起和运行中的Trim命令,这样将会导致在这样操作中的数据处在一个未知的状态。


  1. Discard

3.1Discard单位-写入块(writeblock)

Discard的可擦除单位是写入块,而非擦除组


3.2 Discard的原理

Host端不关心Discard的映射地址范围的表现形式,不像ERASETRIM根据内存技术的不同需要写满01,它的表现形式可以是一些或全部的原始数据。它的作用也是简单的将映射地址范围移动到未映射的地址范围。


3.3 Discard的过程

Discard的过程分三个步骤:

  1. 首先host通过ERASE_GROUP_START(CMD35)命令定义地址范围的开始地址

  2. Host再通过ERASE_GROUP_END(CMD36)命令定义地址范围的终止地址

  3. 通过ERASE(CMD38)命令将参数bit0bit1设置为1,其他的bit都设置为0.(在Discard操作中CMD35CMD36地址的识别都是通过写入块实现的)

如果Discard命令(CMD35,CMD36CMD38)中的一个元素接收到与既定Discard步骤不同的顺序,Device端将在状态寄存器中设置一个ERASE_SEQ_ERROR位并重置整个顺序。

如果host提供一个范围外的地址作为CMD35CMD36的参数值,Device将会拒绝这个命令,回复一个ADDRESS_OUT_OF_RANGE的提示并重置整个Discard顺序。

如果接收到一个“非擦除”(不是CMD35,CMD36,CMD38CMD13)的命令,Device将会回复一个ERASE_RESET位,重置擦除顺序并执行最后一个命令。对于所选设备的非地址范围的命令将不会终止整个擦除顺序。

如果Discard的范围包含写保护块,写保护块将会完整保留,只会擦除未写保护的数据块。WP_ERASE_RESET位将会在状态寄存器中设置。

Host应该慎重执行Discard命令以防止非故意的数据丢失。

重置Device(使用CMD0,CMD15,或使用eMMC的硬件重置)或电源故障将终止任何挂起和运行中的Trim命令,这样将会导致在这样操作中的数据处在一个未知的状态。


  1. Sanitize

Sanitize操作是一个功能,它不同于TrimErase将映射地址范围移动到未映射的地址范围。而是要求Device直接从未映射地址范围空间的数据物理移除。

Sanitize通过extendedCSD[165]SANITIZE_START写入一个值发起,当device在进行Sanitize操作时,Device进入到busy状态。直到下列操作发生时,Sanitize操作才会停止:

Sanitizeoperation is complete.

AnHPI is used to abort the operation

Apower failure.

Ahardware reset.

Sanitize操作完成了之后,在未映射的host地址空间内将不会有数据存在。当Sanitize操作被HPIPowerfailure中断后,未映射的host地址空间状态将无法得到保护,Host必须写入extendedCSD[165]SANITIZE_START来重新初始化Sanitize操作并允许Sanitize操作来确保未映射的host地址空间里的数据已被清除。

Host无法对该域进行Sanitize操作时,应用程序必须配合Device生厂商正确地实现该操作以确保device的可靠性。


  1. ERASE/TRIM/DISCARD/SANITIZE的区别

总体上来说,ERASE/TRIM/DISCARD三者很相似,SANTIZE差异比较大。总体区别如下图表格所示:


擦除命令


Erase

Trim

Discard

Sanitize

argument

0x00000000

0x00000001

0x00000003

N/A

unit

Erase group

Write block

Write block

N/A

Operation

moving the mapped host address range to the unmappedhost address range

moving the mapped host address range to the unmappedhost address range

moving the mapped host address range to the unmappedhost address range

Removedfrom unmapped user address space


Read the region applied

All 0 or 1 (depending on memory tech.)

All 0 or 1 (depending on memory tech.)

Don’t care (Some or all of the original data)

N/A

Interrupt

N/A

重置Device(使CMD0,CMD15,或使用eMMC的硬件重置)或电源故障将终止任何挂起和运行中的Trim命令,这样将会导致在这样操作中的数据处在一个未知的状态。

重置Device(使CMD0,CMD15,或使用eMMC的硬件重置)或电源故障将终止任何挂起和运行中的Discard命令,这样将会导致在这样操作中的数据处在一个未知的状态。

Sanitize操作完成了之后,在未映射的host地址空间内将不会有数据存在。当Sanitize操作被HPIPowerfailure中断后,未映射的host地址空间状态将无法得到保护,Host必须写入extendedCSD[165]SANITIZE_START来重新初始化Sanitize操作并允许Sanitize操作来确保未映射的host地址空间里的数据已被清除。


eMMC数据擦除的方式 接下来主要是讲解erase、trim、discard的差异,涉及的command有CMD35、CMD36、CMD38。一般用来擦除整卡或者某些分区,如果只想擦除一个。以下是device status的部分解释。eMMC的数据擦除方式有6种,分别是。将会跳过写保护,只执行其他的范围。Discard的命令序列是。Erase的命令序列是。的范围有包含写保护,Trim的命令序列是。 阅读详情

相关推荐

eMMC编程基础 - (一)eMMC相关术语和概念

the area of the e•MMC device that can be accessed by a read command from the host software(可以通过主机软件读取命令访问eMMC设备的区域。).

天使之翼 1585

应用在SSD中数据销毁命令介绍(Write zero cmd、Trim、Format与Sanitize

数据销毁命令介绍

emmc FITRIM/discard命令在android系统中提升write performance的运用

SSD/emmc 存储设备discard命令的使用意义及使用方法,请参考xfs官网上的这篇文章,描述详细。  http://xfs.org/index.php/FITRIM/discard   FITRIM/discard我的理解是:discard命令,只是将page标识为dirty状态,并未做真正的block erase操作。 而当一个block大部份page都标识为dirty时,为重新...

Fybon的专栏 6338

黑猫带你学eMMC协议第11篇:eMMC擦除详解(erase/trim/discard/sanitize/secure erase/secure trim...)

erase命令单位是擦除组,那么一个擦出组包含多个写块,不同写块有不同信息,主机擦除之前,必须进行确定好这些写块中的信息没有用了。所以通常erase用来擦除整个设备或分区。erase完成后,将erase的区域都要么是全0,要么是全1。那么到底是0还是1呢,根据不同的工艺有所不同,但是别担心,在ecsd[181]中会有说明到底是1还是0。erase命令的作用就是简单的将映射地址范围移动到未映射的地址范围。

黑猫奥利奥的博客 7708

EMMC5.1协议讲解(3功能描述)

本节讲emmc的启动操作的全部流程

SUNtao99的博客 7296

eMMC协议】6.6.11 - 6.6.14

Sanitize操作的使用要求设备从未映射的用户地址空间中物理删除数据。通过向ECSD[165]Sanitize_START写入值来启动Sanitize操作。当设备正在执行Sanitize操作时,busy bit置位。除TRIM和Erase之外,Sanitize操作是用于根据安全删除类型从设备中删除数据的功能。

Blank_time的博客 1644

TrustZone初探 (二)

TrustZone技术中,TEE系统代码开发才是大头,现有的开源项目如openvirtualization以及Op-Tee可以提供不少参考 http://blog.sina.com.cn/s/blog_4ce016230102v7xf.html

u013083918的博客 371

NVMe1.4b—Sanitize命令

Sanitize command – NVM Command Set SpecificSanitize简介 Sanitize简介 Sanitize命令用于启动Sanitize操作或从以前失败的Sanitize操作中恢复。可能支持的Sanitize类型是块擦除、加密擦除和覆盖(overwrite)。所有Sanitize操作都在后台处理(即,Sanitize命令的完成并不表示Sanitize操作的完成)。有关Sanitize操作的详细信息,请参阅8.15节。 三种Sanitize方式 Block Eras

mm624191030的博客 7869

eMMC为什么会用discard cmd来替代erase cmd 和 trim cmd?

根据JEDEC EMMC5.1 standard,erase和trim的区别是,erase的操作单元是erase group,这个大小是定义在CSD/ext_CSD中;而trim的操作单元是write block,即512 bytes. 而discard CMD和trim CMD非常相似,唯一的区别在于host发出CMD,而device执行完成之后,host再去读取被"擦除"的地址,trim之后的...

comeonbestxiaohe的博客 5844

linux 文件擦除,linux文件系统如何使用emmc的擦除功能(Erase Trim Discard Sanitize)达到最优performance...

1、android init.rc中可以看到, 系统启动mount /data 目录时,mount命令添加了参数:discardmount ext4 /emmc@usrdata /data noatime nosuid nodev wait noauto_da_alloc,discard2、mount的discard参数传递到ext4_mount函数的flags参数//kernel/fs/ext4...

weixin_30405507的博客 1150

eMMC的五种操作模式

eMMC的五种操作模式:开机模式、ID辨识模式、中断模式、数据传输模式、无效模式。 开机模式 Boot mode Power ON后,卡若收到CMD0(GO_Idle_State)并带argument(0xF0F0F0F0),此时Card若支持Boot Mode则会进入Boot Mode,否则进入identification mode。 ID辨识模式 Card identification Power ON 后,经过

wangtt 1万+

Erase/Trim/Discard/Sanitize 区别详解

 针对JEDEC协议中几个抹除资料的命令,大家都很容易将其混淆。现在就这四个抹除命令作详细介绍,希望能帮助大家分清各个命令的具体含义及用法。 Erase 1.1擦除组(EraseGroup) Erase翻译过来是抹去、擦除的意思。eMMC中可擦除的单位称为“擦除组”,擦除组是用写入块(writeblocks,Device的基本可写单位)来测量的。擦除组的大小是一个设

Gick 1万+

SSD学习_hdparm中的sanitize和security erase的区别

摘抄学习SSD

weixin_47727407的博客 2498

eMMC Spec —— 1.eMMC前言介绍

一、前言 1、e•MMC通信基于11根信号总线。(clock, Data Strobe, 1 bit command, 8 bit data bus) and a hardware reset. (1) 时钟频率0-200MHz (2) 三种不同的数据总线宽度模式:1位(默认),4位和8位 (3)数据保护机制:密码、永久、开机、临时 (4)不同类型的受错误保护的读写模式:单块、多块 (5)数据删除...

dylan的博客 2041

SSD Sanitize 和 Format

SSD format和Sanitize区别

Zander0的博客 3637

Sanitize小知识

增强数据安全擦除 Sanitize 安全擦除SSD中存储的数据,在一些场景下是非常必要的功能。譬如你手中有一块NVMe SSD想重新用做其他业务,或者设备折旧退役,为保证之前SSD的数据不被泄露,安全擦除SSD中的数据,避免通过某些工具恢复旧数据成为必需。 Tips: 内容概览: 1.Sanitize如何实现数据安全擦除? 2.Sanitize 和Secure Erase的主要区别? 3.Sanitize执行时间为什么比Format短? 4.如何查看Sanitize的执行情况? 5.使用Sa

mm624191030的博客 8416

sanitize---硬盘数据的防护衣

在今年5月份发布的NVMe Spec 1.3中,对数据安全方面增加了一个“Sanitize”功能,如下图。其实,Sanitize清除功能并不是NVMe新创,SATA和SAS硬盘早已支持的这个功能,现在终于加入到NVMe协议上面了。 当你手上有一块NVMe SSD不想使用或者想改换其他用途,为了保证SSD的数据不被泄露,你可能会想到用Secure Erase安全擦除的命令。但是

Gick 4525
上一篇: android getevent、sendevent、input keyevent 使用说明
下一篇: ARM Linux 3.x的设备树(Device Tree)
Fybon
博客等级 码龄18年 385粉丝 94原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值