6.6.28 Data Tag Mechanism 数据标记机制
这种方式能够使EMMC从host接收相关特定数据类型的信息(例如文件系统元数据、时间戳、配置参数等)。在进行写多个块操作(host 下发CMD25)之前,信息会以明确定义好的地址传递。通过接收此信息,EMMC可以提高后续读取和更新操作的访问速率,并提供更可靠和稳健的存储。
host对管理标签(包括标签分配、标签-设备逻辑地址映射等)负责。如果SYSTEM_DATA_TAG_SUPPORT(ext_csd 寄存器的第499字节)字段设置为1,则EMMC支持所有“默认”类型分区上的功能(包括用户数据区域未定义为增强用户数据区域的区域和配置了“默认”属性的通用分区)。
host可以在可寻址空间中标记一个数据段(标记单元),其长度以字节进行表示,由ext_csd寄存器的参数TAG_UNIT_SIZE确定(且该size是sector的倍数)。标记操作必须与标记单元对齐,并具有标记单元的粒度。
如果Write Multiple Blocks命令的地址没有和标记单元对齐,而是落在标记单元的中间,则为了包含系统数据,会将整个标记单元均被标记。
请求对标记单元的标记或一系列标记单元需要的操作可通过host下发CMD23(SET_BLOCK_COUNT)命令实现。
任何更改数据的命令(例如Trim、Erase、普通/可靠写入等)都会发送到由之前标记机制编写的系统数据的逻辑地址上,确定新数据作为系统数据而不受更改。在发送这些命令时应该包括覆盖单个标记单元或多个标记单元。
由于分配给EMMC的空间资源去标记系统数据标的数据资源可能是有限的。EMMC会通过在内部资源耗尽事件后提供作为响应的第一个R1、R1b命令中的EXCEPTION_EVENT位来说明异常。收到该消息后,host检查ext_csd寄存器的中的EXCEPTION_EVENTS_STATUS字段来检索和标记机制分配的资源耗尽相关的信息。
须注意:在这种情况下,ext_csd寄存器中EXCEPTION_EVENTS_CTRL字段中的SYSPOOL_EVENT_EN位应开启,便于获取异常事件指示。
host应管理标记操作计数,避免资源耗尽。如果发生资源不足的情况,host应进行相关操作从而释放一些资源的操作(例如,在某些包含系统数据的地址上发出Trim命令)。
6.6.29 Packed Commands 压缩命令
读取和写入命令可以被打包成命令组(要么全读,要么全写),接着将组内所有命令的数据在总线上一次传输,以减少开销。
打包的写命令可通过host下发CMD23命令(设置块数量)并设置PACKED标志将多个写多块命令进行分组,接着host 下发CMD25命令(WRITE_MULTIPLE_BLOCK命令),第一个块中包含下文提到的打包命令头。
然后,所有个别打包命令的数据扇区在头部之后附加在一起发送,按照头部中出现的顺序。在这种情况下,在CMD23指定的块计数包括所有单独写入的块计数之和加上一个头部块数量。
读取命令打包可通过使用设置块计数命令(CMD23)并设置PACKED标志且设置块计数为1,将多个读取多块命令分组。接着host下发只包含头部的CMD25命令(WRITE_MULTIPLE_BLOCK),再次发送CMD23ÿ