eMMC后台操作(eMMC5.1)

后台操作

  • 在正常情况下,主机对eMMC设备的操作通常为读写操作(被称为前台操作),但是,在进行读写操作时,会在eMMC设备上产生一定的读写碎片,就需要eMMC设备进行碎片回收,这便是设备内部进行的各种维护操作(被称为后台操作)。后台操作有助于减少读写等时间紧迫性操作的延迟(进行后台操作时,设备处于忙碌状态)。所以,为了提高设备读写性能,最好在设备没有进行读写操作时进行后台操作。后台操作可以手动启动或自动启动。

  • 手动启动的方法:为了使设备知道主机何时不进行读写操作,并可以执行后台操作,主机应将任何值写入BKOPS_START(EXT_CSD字节[164])以手动启动后台操作。 在处理完后台操作之前,设备将一直保持忙碌状态。

  • 由于前台操作的优先级高于后台操作,因此主机可以使用高优先级中断机制来中断正在进行的后台操作。 为了使设备知道主机是会定期启动后台操作,主机应置位BKOPS_EN(EXT_CSD字节[163])的位0(MANUAL_EN),以指示其将要定期写入BKOPS_START。 然后,该设备可能会将某些维护操作延迟到主机写入BKOPS_START时。

  • 设备以BKOPS_STATUS的位[1:0](EXT_CSD字节[246])报告其后台操作状态,该状态可以为以下四个可能的级别之一:0x0:不需要任何操作,0x1:非紧急,0x2:性能受到影响,0x3:紧急。

  • 主机应定期检查状态,并根据需要启动后台操作,以便设备有足够的时间进行维护操作,以帮助减少前台操作期间的等待时间。 如果状态为级别3(“严重”),则由于维护操作无法再延迟,某些操作可能会超出其原始超时。 主机应给设备足够的时间进行后台操作,以避免一开始就达到此级别。

  • 为了使主机能够快速检测到更高的级别,只要级别为2或3,就将EXCEPTION_EVENTS_STATUS中的URGENT_BKOPS位置1。这会自动在设备状态中设置EXCEPTION_BIT。 这使主机可以检测每个R1类型响应的紧急级别。 主机仍应定期从BKOPS_STATUS字节中读取完整状态,并根据需要启动后台操作。

  • 对于本规范,后台操作功能是必需的。 BKOPS_SUPPORT的位0(EXT_CSD字节[502])应置1。

  • 自主发起的方法; 要使设备能够在设备空闲时间内执行后台操作的主机,应通过将BKOPS_EN字段[EXT_CSD字节163]中的AUTO_EN设置为1b来向设备发送信号。 设置此位后,只要设备认为合适,设备就可以启动或停止后台操作,而无需通知主机。

  • 当AUTO_EN位置1时,主机应保持设备电源处于活动状态。 主机可以根据其功率限制或其他考虑,随时设置或清除该位。

高优先级中断

  • 在某些情况下,设备上不同类型的数据对于主机可能具有不同的优先级。 例如,写操作可能很耗时,因此可能需要抑制写操作以允许按需分页请求,以便在用户请求时启动进程。

  • 高优先级中断(HPI)机制通过允许设备在OUT_OF_INTERRUPT_TIME超时内实际完成低优先级操作之前将其中断,从而能够满足高优先级请求。 主机可能需要重复中断的操作或部分中断操作才能完成原始请求。

  • HPI命令在设备中可能具有以下两种实现之一:

    • CMD12 –当其参数中的HPI位置1时,基于STOP_TRANSMISSION命令。
    • CMD13 –基于SEND_STATUS命令,当其参数中的HPI位置1时。
  • 主机应检查HPI_FEATURES中的只读HPI_IMPLEMENTATION位(EXT_CSD字节[503]),并相应地使用适当的命令索引。

  • 如果将CMD12与HPI位置1一起使用,则它与非HPI命令的不同之处在于允许的状态转换。

  • HPI仅在prg状态下执行。 然后,它指示设备优先级较高的命令正在等待处理,因此它应中断当前操作并尽快以不同的超时值返回到转换状态。

  • 如果在prg-state以外的其他状态下收到HPI,则在表60中定义了设备行为。 如果允许状态转换,则发送响应,但忽略HPI位。 如果不允许状态转换,则该命令被视为非法命令。

  • 在prg-state中,HPI命令被接受为合法命令。 但是,仅某些命令可能会被HPI中断。 如果在不可中断的命令期间收到HPI,则会发送响应,但HPI命令无效,原始命令正常完成,可能超过OUT_OF_INTERRUPT_TIME定义的超时时间。 表36显示了可中断的命令和不可中断的命令。
    在这里插入图片描述

  • 在执行WRITE_MULTIPLE_BLOCK命令(CMD25)之后,设备将使用成功写入设备的512B扇区数来更新CORRECTLY_PRG_SECTORS_NUM字段(EXT_CSD字节[245:242])。 主机在进行被中断的写命令时可以使用此信息-不需要再次重新写所有数据扇区,它可以跳过正确编程的扇区,并仅继续写尚未编程的其余数据。

  • 如果HPI中断了作为打包写入命令一部分的CMD25(请参见6.6.29),则CORRECTLY_PRG_SECTORS_NUM字段将反映已传输的累积打包扇区(加上报头)–主机可以从该编号计算可中断的索引。 单个命令及其中断的偏移量。

  • 如果在可靠写入命令期间接收到HPI,则第一个CORRECTLY_PRG_SECTORS_NUM个扇区应包含新数据,而其余所有扇区应包含旧数据。

  • 通过设置HPI_MGMT字段中的HPI_EN位(EXT_CSD字节[161]),应先启用HPI机制。 HPI功能对于此规范是必需的。 所有设备应在HPI_FEATURES字段中设置HPI_SUPPORT位(EXT_CSD字节[503])。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值