6.6.25 Background Operations 后台操作
EMMC需要进行各种内部的维护操作。为了在读写等时间关键操作时减少延迟,最好在host 没有启动服务时,执行维护操作。其操作分为两种类型:
前台操作 - EMMC执行host命令的操作,例如读取或写入命令;
后台操作 - EMMC不执行host服务时的操作;根据它们如何启动,后台操作分为两种类型:手动启动的后台操作和自主启动的后台操作。
手动启动方法:为了让EMMC知道host不需要它并且可以执行后台操作,host应向BKOPS_START(ext_csd寄存器的第[164]字节)写入任何值从而手动启动后台操作。EMMC将一直保持繁忙状态,直到后台动作执行结束
由于前台操作比后台操作具有更高的优先级,host可以使用高优先级中断机制(参见6.6.26)中断正在进行的后台操作。为了让EMMC知道host是否会定期启动后台操作,host应将BKOPS_EN(ext_csd寄存器的第163字节)的第0位(MANUAL_EN)设置从而表示host将定期写入BKOPS_START。然后,EMMC可以将一些维护操作推迟到host写入BKOPS_START的间隙进行处理。
EMMC在BKOPS_STATUS(ext_csd寄存器的第246字节)的位[1:0]中说明其后台操作状态,通过四个可能的级别之一进行表示:0x0:不需要操作;0x1:有未完成的操作-非关键;0x2:有未完成的操作-性能受到影响;0x3:有未完成的操作-关键。
host应定期检查状态并根据需要启动后台操作,以便EMMC有足够的时间进行维护操作,从而帮助减少前台操作的延迟。如果状态为3级(“关键”),某些操作可能会超出原始超时时间,因为不能再延迟维护操作。host应该给EMMC足够的时间进行后台操作,以避免首先达到这个级别。
为了使host能够快速检测到更高的级别,每当级别为2或3时,EXCEPTION_EVENTS_STATUS中的URGENT_BKOPS位都会被设置。这会自动设置EMMC状态中的EXCEPTION_BIT。这使得host能够在每个R1类型的响应中检测到紧急级别。host仍应定期从BKOPS_STATUS字节中读取完整状态,并根据需要启动后台操作。
后台操作功能是此规范的强制要求。BKOPS_SUPPORT的第0位(即ext_csd寄存器的第502字节)应该被设置。
自主启动方法;如果host想要在EMMC空闲时间执行后台操作,则应通过将BKOPS_EN字段(即ext_csd寄存器的第163字节)中的AUTO_EN设置为1b,来向EMMC发出信号。当设置了此位时,EMMC可以在适当的时候启动或停止后台操作,而无需向host发出任何通知。
当设置了AUTO_EN位时,host应保持EMMC电源有效。host可以根据其电源限制或其他考虑因素随时设置或清除此位。
6.6.26 High Priority Interrupt (HPI) 高优先