JESD B5.1 EMMC协议介绍(十六)

本文介绍了JESD B5.1 EMMC协议中的Cache Enhancement Barrier,强调了缓存增强屏障在延迟数据刷新中的作用,以及如何通过设置屏障位和缓存刷新策略来保证数据顺序。此外,还详细讲解了EMMC的命令队列机制,包括队列任务参数、地址、读写任务执行和任务管理,以及异常处理和命令支持情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6.6.37 Cache Enhancement Barrier (缓存增强屏障)

Barrier功能提供了一种延迟有序刷新缓存数据的方法。使用屏障命令的主要目的是避免执行刷新命令引入的长时间延迟。在某些情况下,host不想立即刷新数据,但是希望在不同的缓存数据到达前后保持顺序。屏障命令使hos能够实现有序目标,但不需要花费额外的刷新延迟,因为实际的刷新可以通过EMMC推迟到稍后的空闲时间。屏障规则的正式定义如下:

假设在请求R_x和R_x+1(0<x<N)之间存在一个屏障,则必须在请求Rx+1..RN之前将所有请求R0..Rx刷新到非易失性存储器中。

在两个屏障之间,EMMC可以按任意顺序将数据写入非易失性存储器。如果host想要保留特定的顺序,它应该刷新缓存或在重要的位置设置另一个屏障。

通过向FLUSH_CACHE字节(ext_csd寄存器的第32位字节)的BARRIER位写入来设置障碍。完成编程后,host下发CMD13命令从状态寄存器中读取任何错误,该错误与普通写请求的定义相同。错误可能会影响自上次刷新操作以来缓存中写入的任何数据。

EMMC应支持在两个刷新命令之间的设置任意数量的障碍命令。在两个刷新命令之间存在多个障碍命令的情况下,根据障碍规则,可以将缓存数据的子集提交到非易失性存储器中。在内部,EMMC可能有一个障碍量的上限,它可以吸收而无需刷新缓存。也就是说,如果host超过了这个障碍量,EMMC可能会在内部发出正常的刷新命令。

EMMC应通过BARRIER_SUPPORT字节(est_csd寄存器的486字节)公开其是否支持屏障功能。如果EMMC不支持障碍功能,则该寄存器应为零。如果EMMC支持障碍功能,则该寄存器应设置为1。

假设EMMC支持障碍功能,如果FLUSH_CACHE字节的BARRIER位被设置,则应继续执行障碍操作。

如果缓存完全满了和/或缓存无法接收下一个访问的数据(根据CMD23中指示的块计数或一般启动的单个/开放式多块写入),那么EMMC还需要存储下一个访问的数据且必须在本规范的其他地方指定的超时内完成。处理新数据和可能刷新一些旧的缓存数据的实际算法留给设计人员实现。

注意:当发出强制编程写请求(CMD23的第24位打开)或可靠写请求(CMD23的第31位打开)时,host应了解到数据将被写入非易失性存储器,即使已发出障碍命令,可能会在任何缓存数据操作之前写入。

因此,写入非易失性存储器的顺序显得特别重要,对host来讲,需要在强制编程或可靠写请求之前发出刷新命令。

host通过设置BARRIER_EN的第0位(ext_csd寄存器的第31字节)来决定是否设置障碍功能。

6.6.38 Cache Flushing Policy 缓存刷新策略

host会要求EMMC按顺序从缓存中刷新数据。为了保证按顺序刷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南风轻拂_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值