[元带你学: eMMC协议详解 18] eMMC的后台操作(Background Operations)

news2024/12/27 10:24:08

依JEDEC eMMC 5.1及经验辛苦整理,付费内容,禁止转载

所在专栏 《元带你学: eMMC协议详解》

内容摘要

全文 1800 字, 主要内容

1、后台操作/前台操作区别?

2、如何进行手动后台操作?

3、自动后台启动和停止方法?

4.   进入自动后台操作时间阈值


1  什么是后台操作

emmc内部需要执行一些维护操作。当host不对emmc下命令的时候,emmc内部可能依旧会进行部分操作,比如垃圾回收/数据搬运等,这些就称之为后台操作。

对于一些关键的操作(例如读写),为了减少延迟时间,emmc最好在不需要服务host时候进行这些后台操作。

在spec中强制规定了后台操作,也就是不允许又emmc不支持后台操作。BKOPS_SUPPORT (EXT_CSD byte [502]) 的Bit 0 应该被置位。

2 前台操作和后台操作区别

按照是否服务于host分类:

(1)前台操作(Foreground operations):需要服务于host,例如读写等。

(2)后台操作(Background operations):emmc内部自己执行一些操作,不需要服务于host。<

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

3 手动后台操作启动的方法

为了使设备知道主机何时不进行读写操作,并可以执行后台操作,主机应将任何值写入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。

4 自主后台

4.1 自主后台操作发起的方法

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

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

设备一般是判断主机长时间没有操作, 进入空闲状态, 如果Device 有垃圾回收等任务要做, 设备自动进入AUTO 后台操作。

一些闪存存储器系统具有自动后台操作功能。通常,这样的存储器系统的控制器使用预定的时间阈值编程,并且如果存储器比预时间间阈值更长地处于空闲(例如,由于主机不活动),控制器将存储器系统置于后台操作模式,以降低存储器系统消耗的电流和功率。

如果设备有后台任务做,控制器通常执行各种任务,诸如将来自易失性存储器的用户数据和管理数据保存到非易失性存储器,垃圾回收等。

4.2 自主后台操作退出的方法

退出有两种场景

  • 后台任务完成, 没有新的后台任务需要做
  • 新的命令, HPI 退出

后台任务完成

如果后台任务完成, 而且 host 也没有任务, 一般会进到自动休眠模式,关闭(poweroff)硬件部件。

新命令HPI

当控制器感测到来自主机的新命令时,控制器通常进行各种任务以从后台任务退出,诸如停止当前的后台, 将它挂起, 去响应主机的新命令。

4.3 自动进后台操作的时间阈值

所以进入自动进入后台操作的时间阈值设置也和有门道。

  • 如果设置阈值很小, 可能很容易进到后台操作, 但很快host 来了新的命令退出后台操作。

这就是本来猜测 host 空闲了, 但猜错了。 这样频繁启动后台操作和挂起后台操作是非常低效的,要额外多一些开销, 而且主机命令不能立马响应, 这样Host 读写速度也受到影响,这就得不偿失了。

  • 如果设置阈值很大,主机的空闲时间可能是比较零散的时间, 阈值很大可能很多时间片利用不上。

一方面要经验, 另一方面需要研究比较多的平台行为来定这个值比较合适。


参考

[1] https://blog.csdn.net/swanghn/article/details/113195600

[2] 用于自适应自动休眠和后台操作的存储器系统及方法与流程

免责声明

本文根据公开信息整理,旨在介绍更多的存储知识,所载文章仅为作者观点,不构成投资或商用建议。本文仅用于学习交流, 不允许商用。若有疑问或有侵权行为请联系作者处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/660980.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Redis基础】

Redis基础 Redis基础Note Redis基础1.初识Redis1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结 1.2.认识Redis1.3.安装Redis1.3.1.依赖库1.3.2.上传安装包并解压1.3.3.启动1.3.4.默认启动1.3.5.指定配置启动1.3.6.开机自启1.3.7.wi…

web安全自学笔记

Web 安全方面的基本知识是有很必要的&#xff0c;未必就要深入理解。本文主要介绍常见的网络攻击类型&#xff0c;不作深入探讨。 正文 网络攻击的形式种类繁多&#xff0c;从简单的网站敏感文件扫描、弱口令暴力破解&#xff0c;到 SQL 注入&#xff0c;再到复杂的网络劫持等…

基于Web的影院信息管理系统设计与实现(论文+源码)_kaic

摘要 随着文化产业的发展&#xff0c;电影行业迎来了发展的黄金期&#xff0c;而且人民生活水平的 不断提高&#xff0c;观众对影院的服务要求也越来越高。传统的服务模式&#xff0c;已经不能满足 观众的需求&#xff0c;随着信息技术的发展&#xff0c;越来越多的影院将信息技…

Qt 中动态加载窗口

在编程中&#xff0c;我经常会遇见要根据用户触发按钮&#xff0c;动态生成窗口的情况。在此有两种方法可以动态生成窗口&#xff1a;一&#xff1a;直接在槽函数中调用窗口类。二&#xff1a;将 **.ui 添加到资源文件&#xff0c;通过 QUiLoader 加载。 现将两种方法介绍如下…

LAMPDISCUZ论坛

目录 1.1 LAMP 1.2 LAMP架构搭建 2. 关闭防火墙&#xff0c;将安装Apache所需软件包传到/opt目录下 APache的源码编译安装涉及到的软件包&#xff1a; 2.2 安装环境依赖包 2.3 配置软件模块 2.4 添加httpd系统服务 2.5 修改httpd 服务配置文件 3.编译安装mysqld 服务 3.1 …

1. CSS的三大特性

CSS有三个非常重要的三个特性&#xff1a;层叠性、继承性、优先级 1.1层叠性 相同选择器给设置相同的样式&#xff0c;此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突 的问题 层叠性原则: ●样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行哪个…

记一次Windows 下Microsoft Store应用权限问题

关键字&#xff1a;windows、 microsoft store 画图 mspaint 终端 terminal Windows11 锁屏界面黑屏 起因 情不知所起&#xff0c;额走错片场了。。。 具体原因无法确定&#xff0c;猜测是由于之前磁盘故障后进行修复导致的权限丢失异常 表象 几乎是所有的Microsoft store的…

Java-反射机制(超详解)

Java反射机制概述 前言一、Java反射机制概述1. Java Reflection2. 动态语言 vs 静态语言二、 Class类的理解1. 类的加载过程1.1 初步了解1.2 类的加载过程图解1.3 了解&#xff1a;什么时候会发生类初始化&#xff1f;1.4 类加载器的作用1.5 JVM中不同类型的类的加载器1.6 代码…

SpringMVC系列-1 使用方式和启动流程

背景 SpringMVC作为SSM组件之一&#xff0c;Java开发有必要了解SpringMVC是如何被集成到Spring框架以及整个项目的启动流程。本文以Tomcat作为Servlet容器进行介绍&#xff0c;默认认为读者使用过Tomcat且对Tomcat内部组件有足够的理解。 1.启动流程 当Tomcat被部署到服务器…

node的安装配置

这个是官网下载地址 推荐选择下载LTS版本的下载&#xff0c;不推荐下载最新版的&#xff0c;下载完成之后&#xff0c;在安装过程中更改安装路径默认是c盘的&#xff0c;如果c盘空间大当我没说&#xff0c;接着一路傻瓜式安装默认点击下一步&#xff0c;直到安装完成。 创建文…

chatgpt赋能python:Python怎样设置字体大小

Python 怎样设置字体大小 作为一名Python工程师&#xff0c;我们经常需要在论文或文档中使用Python进行数据分析&#xff0c;数据可视化和数据科学等方面的工作。在这些文档中&#xff0c;字体大小的设置是非常重要的&#xff0c;因为它直接影响阅读体验和文档的可读性。因此&…

幸运九宫格抽奖码九宫格抽奖系统独立版源码php修复版

&#x1f389; 有需要的朋友记得关赞评&#xff0c;文章底部来交流&#xff01;&#xff01;&#xff01; &#x1f389; ✨ 源码介绍 1.本程序在PHP5.3 ~ PHP5.6环境 2.后台访问地址&#xff1a;域名/admin/index.php U:admin P:admin 手动安装 1.导入1776.sql到数据库 …

【文件操作与IO】认识文件

目录 认识文件 狭义上的文件 广义上的文件 树形结构组织和目录 文件路径&#xff08;Path&#xff09; 其他知识 认识文件 狭义上的文件 硬盘上保存的数据&#xff0c;都是“文件”来组织的&#xff0c;本质上都是二进制或是字符组织的数组&#xff0c;被打包成一个文件…

Git学习笔记(上篇)

导航小助手 一、Git初识 1.1 场景 1.2 版本控制器 1.3 注意事项 二、Git安装 2.1 Linux-centos 2.2 Linux-ubuntu 三、Git基本操作 3.1 创建Git本地仓库 3.2 配置Git本地仓库 3.3 认识工作区、暂存区、版本库 3.3.1 添加文件—场景一 3.3.2 添加文件—场景二 3.4…

chatgpt赋能python:Python怎么重新执行代码

Python怎么重新执行代码 如果你正在学习编程&#xff0c;你可能已经意识到Python是一种非常流行的语言。Python是一种如此强大的编程语言&#xff0c;可以应用于许多领域&#xff0c;从数据分析到游戏开发&#xff0c;甚至是Web开发。但是&#xff0c;在编写Python代码时&…

026.【图形结构算法】

1. 图的定义 树形结构用于描述节点和节点之间的层次关系&#xff0c;而图形结构用于描述两个顶点之间是否连通的关系。在计算机科学中&#xff0c;图形结构是最灵活的数据结构之一&#xff0c;很多问题都可以使用图来求解。 无向图是每条边都没有方向的图&#xff0c;同一个边…

chatgpt赋能python:重新安装Python——让你的编程之路更畅通

重新安装Python——让你的编程之路更畅通 Python是一种高级编程语言&#xff0c;广泛应用于软件开发、数据科学、机器学习等领域&#xff0c;因其易学易用、拥有丰富的第三方库和社区支持而备受程序员们的喜爱。但是&#xff0c;有时候你可能会遇到无法解决的Python问题&#…

Linux 4.10当中将带来深远影响的三项小改变

Linux的演进永不停歇。Linus Torvalds一直在努力工作&#xff0c;希望能够在新的内核版本当中(4.11)融入更多变化。不过在目前的Linux 4.10中&#xff0c;我们同样发现了三组能够有效提升性能并实现多种前所未有功能集的变更。 下面&#xff0c;我们将共同了解这些可能对您、您…

0006-TIPS-2020-hxp-kernel-rop : bypass-KASLR-with-offset_leak

内核默认加载地址&#xff08;不开启KASLR&#xff09; kernel text mapping 在内核linux-5.9/Documentation/x86/x86_64/mm.rst文档中记录了 x86_64虚拟地址空间布局 其中0xffffffff80000000~0xffffffff9fffffff用于存放内核代码段、全局变量、BSS等 ffffffff80000000 | -…

华为OD机试真题 JavaScript 实现【字符串序列判定】【2022Q4 100分】,附详细解题思路

一、题目描述 输入两个字符串a和b&#xff0c;都只包含英文小写字母。a长度<100&#xff0c;b长度<500,000。 判定a是否是b的有效子串。 判定规则&#xff1a; a中的每个字符在b中都能找到&#xff08;可以不连续&#xff09;&#xff0c;且a在b中字符的前后顺序与a中…