CN114443526A - 一种数据读/写控制方法及电子设备 - Google Patents
一种数据读/写控制方法及电子设备 Download PDFInfo
- Publication number
- CN114443526A CN114443526A CN202111605364.9A CN202111605364A CN114443526A CN 114443526 A CN114443526 A CN 114443526A CN 202111605364 A CN202111605364 A CN 202111605364A CN 114443526 A CN114443526 A CN 114443526A
- Authority
- CN
- China
- Prior art keywords
- emmc
- thread
- information
- host controller
- interval
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
本申请提供一种数据读/写控制方法及电子设备,涉及终端技术领域。解决了数据读/写过程中长期占用CPU资源的问题。具体方案为:第一线程在占用第一CPU资源的情况下,指示eMMC主机控制器向eMMC设备发送第一访问信息。其中,第一访问信息用于指示eMMC设备处理第一访问任务。第一线程释放第一CPU资源。在第一时长之后,第一线程占用第二CPU资源,并指示eMMC主机控制器向eMMC设备发送第一轮询信息,用于查询eMMC设备是否执行完第一访问任务。这样,完成第一访问任务的过程中,减少第一线程占用CPU资源的时长,提高读/写数据的性能。
Description
技术领域
本申请涉及终端技术领域,尤其涉及一种数据读/写控制方法及电子设备。
背景技术
电子设备正常运行,离不开针对数据的读/写操作。大部分电子设备包括芯片平台(system-on-a-chip,SOC)和存储器件(如,存储芯片)。在遵循嵌入式多媒体卡(embeddedmulti media card,eMMC)协议的前提下,电子设备中的SOC和存储器件可以协同实现数据的读/写操作。
然而,在SOC与存储器件协同执行读/写任务期间,SOC的中央处理器(centralprocessing unit,CPU)资源将被长期占用,直接影响电子设备中其他关键进程调度CPU资源,进而影响电子设备的性能。
发明内容
本申请实施例提供一种数据读/写控制方法及电子设备,用于解决数据读/写过程中,对CPU资源的长期占用问题。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,本申请实施例提供的一种数据读/写控制方法,应用于电子设备。其中,电子设备包括第一线程、eMMC主机控制器和eMMC设备。在一些实施例中,该方法可以包括:第一线程在占用第一CPU资源的情况下,指示eMMC主机控制器向eMMC设备发送第一访问信息,第一访问信息用于指示eMMC设备处理第一访问任务。之后,第一线程释放第一CPU资源。在释放第一CPU资源的第一时长之后,第一线程占用第二CPU资源,并指示eMMC主机控制器向eMMC设备发送第一轮询信息;其中,第一轮询信息用于查询eMMC设备是否处理完第一访问任务。
示例性地,上述第一线程可以是命令队列CMDQ线程。在第一线程初始化之后,第一线程可以运行于CPU核上。第一线程运行期间,第一线程需要占用第一CPU资源。可选地,上述第一CPU资源可以包括CPU核提供的部分计算资源、CPU提供的部分传输资源及CPU提供的部分存储资源等。
在第一线程占用第一CPU资源期间,可以指示eMMC主机控制器向eMMC设备发送第一访问信息。该第一访问信息可以用于指示eMMC设备处理第一访问任务。在第一访问任务是指示读取数据的任务时,按照eMMC协议的规定,上述第一访问信息可以是指示执行第一访问任务的CMD46。在第一访问任务是指示写入数据的任务时,按照eMMC协议的规定,上述第一访问信息可以是指示执行第一访问任务的CMD47。
在上述实施例中,在第一访问信息发出之后,第一线程可以释放所占用的第一CPU资源,进入休眠状态。可以理解的,释放出的第一CPU资源可以被其他线程调度,这样,提高CPU资源的利用率。然后,在第一线程休眠的时长达到第一时长后,第一线程再调度第二CPU资源,实现指示eMMC主机控制器轮询eMMC设备是否处理完第一访问任务。另外,第一CPU资源和第二CPU资源可以是相同的CPU资源,当然,在第一线程休眠期间,第一CPU资源被其他线程占用的情况下,第二CPU资源可以是与第一CPU资源不同的CPU资源。
这样,在兼顾及时确定eMMC设备是否处理完第一访问任务的同时,还能够有效缩短第一线程占用CPU资源的时长,提高CPU资源的使用效率。
在一些实施例中,电子设备包括存储模块、计时模块及第一线程对应的缓存区域,缓存区域中包括第一时长;第一时长与第一区间对应;第一区间是用于指示数据体积的数值区间;在第一线程释放第一CPU资源之前,上述方法还包括:第一线程确定第一数据块属于第一区间;其中,第一数据块是第一访问任务指示读/写的数据块;第一线程通过存储模块,从缓存区域中,读取第一区间对应的第一时长;第一线程向计时模块发送第一信息;其中,第一信息包括第一时长;第一信息用于指示计时模块启动第一计时器。
在第一线程释放第一CPU资源之后,上述方法还包括:在第一计时器的计时时间达到第一时长的情况下,计时模块向第一线程发送第二信息;第一线程占用第二CPU资源,包括:第一线程响应于第二信息,调度并绑定第二CPU资源。
在上述实施例中,第一线程通过存储模块和计时模块的配合,在第一线程休眠期间,可以记录实际的休眠时间,在实际的休眠时间达到第一时长的情况下,触发第一线程及时调用CPU资源。另外,第一时长与第一数据块所属的第一区间相关。换句话说,第一时长可以是第一区间对应的休眠时长。不同区间所对应的休眠时长可以不同。这样,面对不同的访问任务,第一线程可以灵活地调整休眠时长,改善休眠过久以及休眠过短的问题。
在一些实施例中,在指示eMMC主机控制器向eMMC设备发送第一访问信息之前,方法还包括:第一线程指示eMMC主机控制器向eMMC设备发送第二访问信息;其中,第二访问信息用于指示eMMC设备处理第二访问任务。在该实施例中,上述第二访问任务是第一线程初始化之后,指示eMMC设备处理的第m条与第一区间对应的访问任务。
可以理解地,与第一区间对应的访问任务可以是:指示读/写的数据块大小属于第一区间的访问任务。另外,m是1到N之间的任一整数值;N是正整数。上述第二访问任务可以指代前N条与第一区间对应的访问任务。
在指示eMMC设备处理第二访问任务之后,第一线程可以向计时模块发送第三信息,并指示eMMC主机控制器,向eMMC设备发送第二轮询信息。其中,第三信息用于指示计时模块启动第二计时器;第二轮询信息用于查询eMMC设备是否执行完第二访问任务;在eMMC设备执行完第二访问任务的情况下,eMMC设备响应于第二轮询信息,向eMMC主机控制器发送第一轮询响应;eMMC主机控制器响应于第一轮询响应,向第一线程发送第一通知信息;其中,第一通知信息用于指示eMMC设备已执行完第二访问任务;第一线程响应于第一通知信息,通过计时模块读取第二计时器的计时时间,作为与第一区间相关联的一个完成时耗;在得到N个与第一区间相关联的完成时耗之后,第一线程确定与第一区间对应的第一时长;其中,第一时长是N个完成时耗中的最小值;第一线程指示存储模块,将第一区间对应的第一时长,写入缓存区域。
在上述实施例中,在第一线程初始化之后,对于前N条与第一区间对应的第二访问任务,均可按照上述流程进行处理。处理过程中,第一线程可以持续占用的CPU资源(如称为第三CPU资源)。在第一线程占用第三CPU资源期间,可以不间断地指示eMMC主机控制器查询eMMC设备是否处理完第二访问任务。这样,配合第二计时器,第一线程可以得到每条第二访问任务的准确完成时耗。在得到N个完成时耗之后,第一线程可以确定第一区间所对应的第一时长,例如,该第一时长可以是N个完成时耗中的最小值。
如此,面对同样与第一区间对应的第一访问任务时,第一线程可以得到与eMMC设备实际处理性能匹配的休眠时间。这样,第一线程可以实现精准的休眠。不仅缩短第一线程占用CPU资源的时间,还可以提高轮询的命中率,减少发送第一轮询信息的次数。
另外,需要说明的是,其他指示数据体积的数值区间,也可以采用相同的方式,确定对应的休眠时长。
在一些实施例中,在指示eMMC主机控制器向eMMC设备发送第一访问信息之前,方法还包括:在第一线程占用第三CPU资源的情况下,指示eMMC主机控制器向eMMC设备发送第二访问信息;其中,第二访问信息用于指示eMMC设备处理第二访问任务;第二访问任务是第一线程初始化之后,指示eMMC设备处理的第m条与第一区间对应的访问任务;第二访问任务指示读/写的第二数据块属于第一区间;m是1到N之间的任一整数值;N是正整数;第一线程向计时模块发送第三信息,并释放第三CPU资源;第三信息,用于指示计时模块启动第二计时器;在eMMC设备执行完第二访问任务之后,eMMC设备向eMMC主机控制器发送第一中断信息;eMMC主机控制器响应于第一中断信息,向第一线程发送第一通知信息;其中,第一通知信息用于指示eMMC设备执行完第二访问任务;第一线程响应于第一通知信息,通过计时模块读取第二计时器的计时时间,作为与第一区间相关联的一个完成时耗;在得到N个与第一区间相关联的完成时耗之后,第一线程确定与第一区间对应的第一时长;其中,第一时长是N个完成时耗中的最小值;第一线程指示存储模块,将第一区间对应的所述第一时长,写入所述缓存区域。
在上述实施例中,在第一线程初始化之后,对于前N条与第一区间对应的第二访问任务,均可按照上述流程进行处理。处理过程中,第一线程可以指示eMMC设备处理第二访问任务之后,就可以释放CPU资源。在eMMC设备处理完第二访问任务之后,由eMMC设备主动反馈。这样,进一步减少第一线程占用CPU资源的时长。此外,再配合第二计时器,第一线程可以得到每条第二访问任务的准确完成时耗。在得到N个完成时耗之后,第一线程可以确定第一区间所对应的第一时长,例如,该第一时长可以是N个完成时耗中的最小值。
如此,面对同样与第一区间对应的第一访问任务时,第一线程可以得到与eMMC设备实际处理性能匹配的休眠时间。这样,第一线程可以实现精准的休眠。不仅缩短第一线程占用CPU资源的时间,还可以提高轮询的命中率,减少发送第一轮询信息的次数。
在一些实施例中,上述方法还包括:在eMMC设备执行完第一访问任务的情况下,eMMC设备响应于第一轮询信息,向eMMC主机控制器发送第二轮询响应;eMMC主机控制器响应于第二轮询响应,向第一线程发送第二通知信息;其中,第二通知信息用于指示eMMC设备已执行完第一访问任务;第一线程响应于第二通知信息,指示eMMC主机控制器向eMMC设备发送第三访问信息;第三访问信息用于指示eMMC设备处理第三访问任务。
在上述实施例中,在第一线程减少占用CPU资源时长的情况下,也能够在eMMC设备处理完第一访问任务之后,及时指示eMMC设备处理下一个访问任务,如,第三访问任务,提高读/写性能。
在一些实施例中,在指示eMMC主机控制器向eMMC设备发送第三访问信息之后,方法还包括:第一线程确定第三数据块属于第二区间;其中,第三数据块是第三访问任务指示读/写的数据块;第二区间是用于指示数据体积的数值区间;第一线程确定与第二区间对应的第二时长;第一线程释放第二CPU资源;在第二时长之后,第一线程占用第四CPU资源,并指示eMMC主机控制器向eMMC设备发送第三轮询信息;其中,第三轮询信息用于查询eMMC设备是否执行完第三访问任务。
在上述实施例中,面对不同的第一访问任务和第三访问任务,第一线程可以采用不同的休眠时长,灵活地休眠时间,更加适宜不同的访问任务,也能改善休眠时间过短和休眠时间过长的问题。
在一些实施例中,电子设备还包括计时模块,在第一线程占用第四CPU资源,并指示eMMC主机控制器向eMMC设备发送第三轮询信息之后,方法还包括:第一线程向计时模块发送第四信息;第四信息包括轮询时长;计时模块响应于第四信息,启动第三计时器;在第三计时器的计时时间达到轮询时长时,计时模块向第一线程发送第五信息;在接收到第五信息的情况下,第一线程确定eMMC设备未执行完第三访问任务;第一线程指示eMMC主机控制器向eMMC设备发送第一指示信息,并释放第四CPU资源;在eMMC设备接收到第一指示信息之后,eMMC设备启用中断模式;在启用中断模式期间,eMMC设备确定已执行完第三访问任务;eMMC设备向eMMC主机控制器发送第二中断信息;eMMC主机控制器响应于第二中断信息,向第一线程发送第三通知信息,其中,第三通知信息用于指示eMMC设备已执行完第三访问任务。
在上述实施例中,配合使用轮询机制和中断机制,针对处理时间较长的访问任务,可以进一步减少第一线程占用CPU资源的时长。
在一些实施例中,电子设备内包括与第一区间对应的轮询时长;在第一线程向计时模块发送第四信息之前,方法还包括:第一线程确定第一数据块属于第一区间;其中,第一数据块是第一访问任务指示读/写的数据块;第一线程获取第一区间对应的轮询时长。
在上述实施例中,面对不同的访问任务,对应的轮询时长可以不同。确保轮询周期内的命中率。改善了轮询时间过短,导致命中率低的问题,也改善轮询时间过长,长期占用CPU资源的问题。
在一些实施例中,电子设备包括计时模块、存储模块和第一线程对应的缓存区域,缓存区域中包括第二时长,第二时长与第二区间对应;第二区间是用于指示数据体积的数值区间;在指示eMMC主机控制器向eMMC设备发送第三访问信息之后,方法还包括:第一线程确定第三数据块属于第二区间;其中,第三数据块是第三访问任务指示读/写的数据块;第一线程通过存储模块,从缓存区域中,读取第二区间对应的第二时长;第一线程向计时模块发送第六信息;其中,第六信息包括第二时长;第六信息用于指示计时模块启动第四计时器;第一线程释放第二CPU资源;在第四计时器的计时时间未超过第二时长的情况下,eMMC设备处理完第三访问任务;eMMC设备向eMMC主机控制器发送第三中断信息;eMMC主机控制器响应于第三中断信息,向第一线程发送第三通知信息;其中,第三通知信息用于指示eMMC设备已执行完第三访问任务;第一线程响应第三通知信息,占用第五CPU资源,并通过计时模块,读取第四计时器的计时时长;第一线程将读取到的计时时间,写入缓存区域,替代第二区间对应的第二时长。
在上述实施例中,可以不断迭代第二区间的第二时长,提高第二时长的准确性。另外,上述迭代第二时长的方法,也适用于迭代第一区间的第一时长,在此不再赘述。
在一些实施例中,在指示eMMC主机控制器向eMMC设备发送第一访问信息之前,方法还包括:第一线程指示eMMC主机控制器,向eMMC设备发送第一访问任务的读/写描述信息;其中,读/写描述信息包括eMMC协议中规定的指令CMD44及CMD45。
在一些实施例中,在指示eMMC主机控制器向eMMC设备发送第一访问信息之前,方法还包括:第一线程指示eMMC主机控制器,向eMMC设备发送第三访问任务的读/写描述信息。
在另一些实施例中,第一线程还可以在占用第二CPU资源期间,指示eMMC主机控制器,向eMMC设备发送第三访问任务的读/写描述信息。
在一些实施例中,上述第一CPU资源、第二CPU资源、第三CPU资源和第四CPU资源可以是相同的资源,也可以是不同的资源。
第二方面,本申请实施例提供的一种电子设备,电子设备包括一个或多个处理器、存储器、eMMC主机控制器和eMMC设备;存储器与处理器耦合,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,一个或多个处理器,用于调度第一CPU资源指示eMMC主机控制器向eMMC设备发送第一访问信息,第一访问信息用于指示eMMC设备处理第一访问任务;释放第一CPU资源;在第一时长之后,调度第二CPU资源,指示eMMC主机控制器向eMMC设备发送第一轮询信息;其中,第一轮询信息用于查询eMMC设备是否处理完第一访问任务。
在一些实施例中,电子设备包括缓存区域,该缓存区域中包括第一时长;第一时长与第一区间对应;第一区间是用于指示数据体积的数值区间;在释放第一CPU资源之前,一个或多个处理器,用于确定第一数据块属于第一区间;其中,第一数据块是第一访问任务指示读/写的数据块;从缓存区域中,读取第一区间对应的第一时长;指示启动第一计时器。在第一线程释放第一CPU资源之后,一个或多个处理器,用于在第一计时器的计时时间达到所述第一时长的情况下,调度并绑定第二CPU资源。
在一些实施例中,在指示eMMC主机控制器向eMMC设备发送第一访问信息之前,一个或多个处理器,用于指示eMMC主机控制器向eMMC设备发送第二访问信息;其中,第二访问信息用于指示eMMC设备处理第二访问任务;第二访问任务是电子设备初始化之后,指示eMMC设备处理的第m条与第一区间对应的访问任务;第二访问任务指示读/写的第二数据块属于第一区间;m是1到N之间的任一整数值;N是正整数;指示启动第二计时器,并指示eMMC主机控制器,向eMMC设备发送第二轮询信息;第二轮询信息,用于查询eMMC设备是否执行完第二访问任务;在eMMC设备执行完第二访问任务的情况下,eMMC设备,用于响应第二轮询信息,向eMMC主机控制器发送第一轮询响应;eMMC主机控制器,用于响应第一轮询响应,向处理器发送第一通知信息;其中,第一通知信息用于指示eMMC设备已执行完第二访问任务;一个或多个处理器,用于响应第一通知信息,读取第二计时器的计时时间,并作为与第一区间相关联的一个完成时耗;在得到N个与第一区间相关联的完成时耗之后,一个或多个处理器,用于确定与第一区间对应的第一时长;其中,第一时长是N个完成时耗中的最小值;一个或多个处理器,还用于将第一区间对应的第一时长,写入缓存区域。
在一些实施例中,在指示所述eMMC主机控制器向eMMC设备发送第一访问信息之前,一个或多个处理器,还用于调度第三CPU资源指示eMMC主机控制器向eMMC设备发送第二访问信息;其中,第二访问信息用于指示eMMC设备处理第二访问任务;第二访问任务是电子设备初始化之后,指示eMMC设备处理的第m条与第一区间对应的访问任务;第二访问任务指示读/写的第二数据块属于第一区间;m是1到N之间的任一整数值;N是正整数;一个或多个处理器,用于启动第二计时器,并释放第三CPU资源;在eMMC设备执行完第二访问任务之后,eMMC设备,用于向eMMC主机控制器发送第一中断信息;eMMC主机控制器,还用于响应第一中断信息,向第一线程发送第一通知信息;其中,第一通知信息用于指示eMMC设备执行完第二访问任务;一个或多个处理器,还用于响应第一通知信息,读取第二计时器的计时时间,作为与第一区间相关联的一个完成时耗;在得到N个与第一区间相关联的完成时耗之后,第一线程确定与第一区间对应的第一时长;其中,第一时长是N个完成时耗中的最小值;一个或多个处理器,还用于将第一区间对应的第一时长,写入缓存区域。
在一些实施例中,在eMMC设备执行完第一访问任务的情况下,eMMC设备,还用于响应于第一轮询信息,向eMMC主机控制器发送第二轮询响应;eMMC主机控制器,还用于响应第二轮询响应,向第一线程发送第二通知信息;其中,第二通知信息用于指示eMMC设备已执行完第一访问任务;一个或多个处理器,还用于响应第二通知信息,指示eMMC主机控制器向eMMC设备发送第三访问信息;第三访问信息,用于指示eMMC设备处理第三访问任务。
在一些实施例中,在指示eMMC主机控制器向eMMC设备发送第三访问信息之后,一个或多个处理器,还用于确定第三数据块属于第二区间;其中,第三数据块是第三访问任务指示读/写的数据块;第二区间是用于指示数据体积的数值区间;确定与第二区间对应的第二时长;释放调度的第二CPU资源;在第二时长之后,调度第四CPU资源,并指示eMMC主机控制器向eMMC设备发送第三轮询信息;其中,第三轮询信息用于查询eMMC设备是否执行完第三访问任务。
在一些实施例中,在处理器调度第四CPU资源指示eMMC主机控制器向eMMC设备发送第三轮询信息之后,一个或多个处理器,还用于启动第三计时器;在第三计时器的计时时间达到轮询时长时,确定eMMC设备未执行完第三访问任务;指示eMMC主机控制器向eMMC设备发送第一指示信息,并释放第四CPU资源;在eMMC设备接收到第一指示信息之后,eMMC设备,用于确定已执行完第三访问任务;eMMC设备,用于向eMMC主机控制器发送第二中断信息;eMMC主机控制器,用于响应第二中断信息,向处理器发送第三通知信息,其中,第三通知信息用于指示eMMC设备已执行完第三访问任务。
在一些实施例中,电子设备内包括与第一区间对应的轮询时长;一个或多个处理器,还用于确定第一数据块属于第一区间;其中,第一数据块是第一访问任务指示读/写的数据块;第一线程获取第一区间对应的轮询时长。
在一些实施例中,缓存区域中包括第二时长,第二时长与第二区间对应;第二区间是用于指示数据体积的数值区间;一个或多个处理器,还用于确定第三数据块属于第二区间;其中,第三数据块是第三访问任务指示读/写的数据块;从缓存区域中,读取第二区间对应的第二时长;指示启动第四计时器,并释放第二CPU资源;在第四计时器的计时时间未超过第二时长的情况下,eMMC设备,用于处理完第三访问任务;eMMC设备,用于向eMMC主机控制器发送第三中断信息;eMMC主机控制器,用于响应第三中断信息,向处理器发送第三通知信息;其中,第三通知信息用于指示eMMC设备已执行完第三访问任务;一个或多个处理器,还用于响应第三通知信息,调度第五CPU资源读取第四计时器的计时时长;将读取到的计时时间,写入所述缓存区域,替代第二区间对应的所述第二时长。
在一些实施例中,一个或多个处理器,还用于指示eMMC主机控制器,向eMMC设备发送第一访问任务的读/写描述信息;其中,读/写描述信息包括eMMC协议中规定的指令CMD44及CMD45。
第三方面,本申请实施例提供的一种计算机存储介质,包括计算机指令,当所述计算机指令在电子设备上运行时,使得电子设备执行上述第一方面及其可能的实施例中所述的方法。
第四方面,本申请提供一种计算机程序产品,当计算机程序产品在上述电子设备上运行时,使得电子设备执行上述第一方面及其可能的实施例中所述的方法。
可以理解地,上述各个方面所提供的电子设备、计算机可读存储介质以及计算机程序产品均应用于上文所提供的对应方法,因此,其所能达到的有益效果可参考上文所提供的对应方法中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种电子设备的系统架构示意图;
图2为一些实施例中电子设备执行读/写任务的交互示例图;
图3为图2所示的方法执行过程中,命令队列(command queue,CMDQ)线程占用CPU资源的时长示例图;
图4为本申请实施例提供的一种电子设备的软件架构示意图;
图5为本申请实施例提供的CMDQ模块的软件架构示意图;
图6为本申请实施例提供的数据读/写控制方法的信令交互示例图之一;
图7为本申请实施例提供的数据读/写控制方法的信令交互示例图之二;
图8为本申请实施例提供的数据读/写控制方法的信令交互示例图之三;
图9概念性地展示了确定休眠时长的原理示例图;
图10概念性地展示了确定轮询时长的原理示例图;
图11为图6所示的方法执行过程中,CMDQ线程占用CPU资源的时长示例图;
图12为本申请实施例提供的数据读/写控制方法的信令交互示例图之四;
图13为图12所示的方法执行过程中,CMDQ线程占用CPU资源的时长示例图;
图14为本申请实施例提供的数据读/写过程的流程图;
图15为本申请实施例提供的数据读/写控制方法的流程图;
图16为本申请实施例提供的一种芯片系统的组成示意图。
具体实施方式
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
下面将结合附图对本实施例的实施方式进行详细描述。
本申请实施例提供了一种数据读/写控制方法,应用于包括芯片平台(system-on-a-chip,SOC)的电子设备。
其中,SOC中集成了电子设备中的大量核心部件,比如,处理器(中央处理器、图像处理器等)、内存以及多类主机控制器(host control)等。SOC的高集成度有助于缩小电子设备的物理空间。对于逐步追求轻量化、便携化的电子设备而言,SOC应用越来越广泛。
在具体实现中,配置有SOC的电子设备可以是桌面型、膝上型、平板电脑、手持计算机、手机、笔记本电脑、超级移动个人计算机(Ultra-mobile Personal Computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(Personal Digital Assistant,PDA)、电视机、VR设备、AR设备等等。
可参考图1,图1示出了上述电子设备的系统架构图。如图1所示,上述电子设备100包括SOC和嵌入式多媒体卡(embedded multi media card,eMMC)设备。
其中,eMMC设备可以是遵循eMMC协议的存储设备,如,遵循eMMC协议的存储芯片。上述eMMC设备可用于实现数据的存储。可以理解的,eMMC设备为电子设备100中可能存在的嵌入式器件的示例。在实际实现中,电子设备100还可以包括具有其他功能的嵌入式的器件,如,用于实现通信的通信芯片等。
另外,如图1所示,SOC可以包括处理器110、内部存储器120、eMMC主机控制器130及总线140。在一些实施例中,处理器110、内部存储器120之间通过总线140进行通信。另外,eMMC主机控制器130也可以通过主机控制接口(host controller interface,HCI)接入总线140,从而与处理器110、内部存储器120之间实现数据的交互。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
在一些示例中,处理器110可以包括一个或多个处理单元,例如:处理器110可以包括中央处理器(central processing unit,CPU),应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-networkprocessing unit,NPU)等。
以CPU为例,上述CPU可以包括至少一个CPU核。上述CPU核上可以运行至少一个线程。在一些实施例中,CPU核可以提供计算资源,该计算资源具备处理能力,如,一个CPU核提供的计算资源,每秒可执行10万次运算。可以理解地,运行于CPU核的线程,需要占用该CPU核的计算资源,执行与该线程相关的运算。当然,同时段下,不同线程所占用的计算资源不同。
另外,线程所占用的计算资源又可称为该线程占用的CPU资源。可以理解地,线程实际占用的CPU资源除了CPU核提供的计算资源之外,还可以包括CPU中的传输资源、存储资源等。与计算资源一样,同时段下,不同线程占用的其他CPU资源也不同。
内部存储器120包括用于存储计算机可执行程序代码的存储介质,如,双倍速率同步动态随机存储器(double data rate synchronous dynamic random access memory,DDR SDRAM)。其中,DDR SDRAM所存储的可执行程序代码包括指令和各类控制器所对应的软件驱动,例如,eMMC设备对应的eMMC驱动程序。这样,处理器110可以通过运行存储在DDRSDRAM的可执行程序代码,从而执行SOC的各种功能应用以及数据处理。
另外,内部存储器120可以是,但不限于随机存取存储器(random access memory,RAM)、闪存、只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、寄存器或DDR SDRAM等。
在另一些实施例中,SOC内还可以包括硬盘(Disk)。硬盘可以是,但不限于机械硬盘(hard disk drive,HDD)、固态硬盘(solid state drives,SSD)或磁盘阵列(redundantarrays of independent disks,RAID)等。
eMMC主机控制器130是SOC中主机控制器的一类示例。该eMMC主机控制器可以基于eMMC协议与eMMC设备150进行数据交互。如,eMMC主机控制器130可以基于eMMC协议,从eMMC设备150中读取数据,或者,向eMMC设备150写入数据。
在一些实施例中,eMMC主机控制器130可以是在eMMC驱动程序的驱动下,实现访问eMMC设备,如,从eMMC设备150中读取数据,再如,向eMMC设备150写入数据。
在一些实施例中,eMMC驱动程序可以包括CMDQ模块。其中,CMDQ模块是用于实现CMDQ功能的程序段。在电子设备100初始化阶段,如,电子设备100开机期间,SOC可以运行eMMC驱动程序。在运行eMMC驱动程序的过程中,SOC可以创建CMDQ模块对应的CMDQ线程。该CMDQ线程可以调度CPU资源,实现驱动eMMC主机控制器130实现CMDQ功能。
在一些实施例中,如图2所示,eMMC驱动程序驱动eMMC设备进行读/写操作的过程如下:
S1,CMDQ线程指示eMMC主机控制器查询eMMC设备的状态。
在一些实施例中,CMDQ线程可以利用SOC的总线,向eMMC主机控制器发送指示信息1,该指示信息1用于指示eMMC主机控制器向eMMC设备发送状态查询信息1。
S2,eMMC主机控制器向eMMC设备发送状态查询信息1,用于查询eMMC设备是否处于空闲状态。
作为一种示例,按照eMMC协议的规定,上述状态查询信息1可以是指令(command,CMD)13。也就是,eMMC主机控制器可以响应于指示信息1,向eMMC设备发送CMD13。通过发送CMD13,eMMC主机控制器可以查询eMMC设备的队列状态寄存器。可以理解地,队列状态寄存器与eMMC设备中的任务队列相对应,队列状态寄存器包括多个指示位。其中,多个指示位中可以包括与读/写任务1对应的指示位1。读/写任务1是指任务队列中未实际执行的读/写任务。上述读/写任务包括指示读数据的任务或指示写入数据的任务,又可称为访问任务。
另外,该指示位1可以指示读/写任务1在eMMC设备中的状态。示例性地,在指示位1为第一值时,指示eMMC设备已就绪且具备执行读/写任务1的条件。在指示位1为第二值时,指示eMMC设备未准备好,不具备执行读/写任务1的条件。另外,指示位1还可以包括一个或多个,不同的指示位1可以对应不同的读/写任务1。在一些实施例中,上述指示位1所对应的取值可以根据eMMC设备的实际情况而变更,这样,队列状态寄存器可以实时指示eMMC设备是否处于空闲状态。
在一些实施例中,在上述多个指示位中可以包括指示位1的场景下,若所有指示位1均为第一值,指示eMMC设备处于空闲状态。在多个指示位中可以不包括指示位1的场景下,也可以指示eMMC设备处于空闲状态。
换句话说,eMMC主机控制器通过查询eMMC设备的队列状态寄存器,可以确定eMMC设备是否处于空闲状态。
通过上述S1和S2,实现驱动eMMC主机控制器查询eMMC设备的状态。
S3,CMDQ线程指示eMMC主机控制器向eMMC设备发送IO描述信息。
其中,上述IO描述信息,用于描述IO请求的情况,以便于eMMC设备做好处理IO请求的准备工作。另外,上述IO请求是指eMMC主机控制器还未向eMMC设备发送的IO请求,又可称为即将下发的IO请求,如,IO请求1和IO请求2等。
在一些实施例中,上述IO描述信息可以是IO请求对应的读/写任务信息。示例性地,该读/写任务信息可以包括IO请求的读/写类型、优先级、TASK ID、指示读/写的数据块大小以及指定命令地址。其中,指定命令地址是eMMC设备中的存储地址。在IO请求用于指示读取数据时,该指定命令地址用于指示eMMC设备执行数据读取的存储地址。在IO请求用于指示写入数据时,该指定命令地址用于指示eMMC设备执行数据写入的存储地址。
在一些实施例中,CMDQ线程可以向eMMC主机控制器发送指示信息2,通过指示信息2驱动eMMC主机控制器发送IO描述信息。
S4,eMMC主机控制器向eMMC设备发送IO描述信息,包括IO请求1和IO请求2的读/写任务信息。
作为一种示例,按照eMMC协议的规定,上述读/写任务信息可以包括即将下发的IO请求的CMD44和CMD45。如,IO请求1的CMD44、CMD45和IO请求2的CMD44、CMD45。
以发送IO请求1的CMD44和CMD45为例。eMMC主机控制器可以向eMMC设备发送CMD44,用于向eMMC设备描述IO请求1所对应的读/写任务的基本情况。例如,eMMC主机控制器可以通过CMD44向eMMC设备描述:IO请求1用于指示写入数据、IO请求1对应的优先级、TASK ID以及指示写入的数据块大小等。在eMMC设备接收到CMD44之后,可以响应于CMD44,向eMMC主机控制器反馈对应的响应(response)。在eMMC主机控制器接收到CMD44对应的response之后,还可以向eMMC设备发送CMD45,用于向eMMC设备发送IO请求1对应的指定命令地址,也就是,该IO请求1指示数据所需写入的存储地址。
在eMMC设备接收到CMD45之后,eMMC设备可以预处理IO请求1所对应的读/写任务,预处理的过程可参考eMMC协议的规定,在此不再赘述。同时,eMMC设备还可以将IO请求1的读/写任务放入任务队列中,进行排队,等待被处理。此时,IO请求1的读/写任务在队列状态寄存处中对应有一个指示位1,后续实施例中可简称为IO请求1的指示位1。
另外,在eMMC设备接收到CMD45之后,eMMC设备还可以响应于CMD45,向eMMC主机控制器反馈对应的response。
这样,通过上述S3和S4,可以实现驱动eMMC主机控制器提前向eMMC设备描述即将下发的IO请求,以便于eMMC设备提前做好执行该IO请求的准备工作。
在一些示例中,通过S3和S4,驱动eMMC主机控制器向eMMC设备依次发送多条IO请求所对应的CMD44和CMD45,比如,将IO请求1的CMD44和CMD45向eMMC设备发送,再将IO请求2的CMD44和CMD45向eMMC设备发送。这样,eMMC设备的任务队列中可以包括IO请求1的读/写任务和IO请求2的读/写任务。
在另一些示例中,通过S3和S4,驱动eMMC主机控制器也可以仅向eMMC设备发送一条IO请求所对应的CMD44和CMD45。比如,将IO请求1所对应的CMD44和CMD45向eMMC设备发送。
另外,在eMMC设备接收到状态查询信息1之后,若eMMC设备处于空闲状态,流程还可以进入S5。
S5,eMMC设备响应于状态查询信息1,向eMMC主机控制器发送状态响应信息1。
其中,状态响应信息1可以包括队列状态寄存器中各指示位的值。状态响应信息1通过携带的各指示位的值,可以指示eMMC设备处于空闲状态。
在一些实施例中,上述S5与S3之间没有必然的先后顺序。
也就是,在一些实现过程中,在S2之后,若eMMC设备处于空闲状态,eMMC设备可以向eMMC主机控制器发送状态响应信息1。然后,再通过上述S3和S4,驱动eMMC主机控制器向eMMC设备描述即将下发的IO请求。
S6,eMMC主机控制器通知CMDQ线程,当前eMMC设备处于空闲状态。
在一些实施例中,eMMC主机控制器可以通过软件中断的方式,向CMDQ线程通知eMMC设备已处于空闲状态。例如,eMMC主机控制器向CMDQ线程发送通知信息1,用于指示eMMC设备处于空闲。
S7,CMDQ线程指示eMMC主机控制器向eMMC设备发送IO请求1的执行信息1。
在一些实施例中,CMDQ线程向eMMC主机控制器发送指示信息3。该指示信息3用于指示eMMC主机控制器向eMMC设备发送IO请求1的执行信息1。该执行信息1可用于指示eMMC设备处理IO请求1对应的读/写任务。
S8,eMMC主机控制器向eMMC设备发送执行信息1,用于指示eMMC设备实际执行IO请求1对应的读/写任务。
示例性地,IO请求1指示写入数据的任务时,执行信息1可以是指示写入数据的指令。例如,按照eMMC协议的规定,可以是CMD47。又示例性地,IO请求1指示读取数据的任务时,执行信息1也可以是指示读取数据的指令,例如,按照eMMC协议的规定,可以是CMD46。
S9,eMMC设备执行IO请求1所对应的读/写任务。
在一些实施例中,IO请求1对应指示读取数据的任务时,eMMC设备可以从IO请求1对应的指定命令地址中读取数据,并传递给eMMC主机控制器。另外,IO请求1对应指示写入数据的任务时,eMMC设备可以接收IO请求1对应的数据块,并写入IO请求1对应的指定命令地址中。
通过上述S7和S8的配合,可以驱动eMMC主机控制器指示eMMC设备实际执行IO请求1所对应的读/写任务。另外,eMMC设备执行IO请求1所对应的读/写任务又可简称为eMMC设备执行IO请求1。
在驱动eMMC主机控制器发送执行信息1之后,如,在上述S7之后,CMDQ线程还可以周期性地指示eMMC主机控制器查询eMMC设备是否执行完IO请求1所对应的读/写任务,并再次进入空闲状态。
S10,CMDQ线程指示eMMC主机控制器查询eMMC设备的状态。
S11,eMMC主机控制器向eMMC设备发送状态查询信息2,用于查询eMMC设备是否处于空闲状态。
在一些实施例中,上述S10和S11的实现原理与S1和S2相同,状态查询信息1和状态查询信息2均可以是CMD13,在此不再赘述。
另外,在eMMC设备接收到状态查询信息2之后,若eMMC设备未处于空闲状态,流程还可以进入S12。若eMMC设备处于空闲状态,流程还可以进入S16。
S12,eMMC设备向eMMC主机控制器发送状态响应信息2,用于指示eMMC设备未处于空闲状态。
其中,状态响应信息2也包括队列状态寄存器中各指示位的值。状态响应信息2携带的各指示位的值,可指示eMMC设备未处于空闲状态。可以理解的,在队列状态寄存器中包括至少一个指示位1为第二值时,可指示eMMC设备未处于空闲状态。
S13,eMMC主机控制器通知CMDQ线程,当前eMMC设备未处于空闲状态。
在一些实施例中,eMMC主机控制器可以通过软件中断的方式,如,eMMC主机控制器向CMDQ线程发送通知信息2,向CMDQ线程通知eMMC设备未处于空闲状态。然后,流程进入S14。
在其他可能的实施例中,还可以不包括S13。这样,S12之后,若CMDQ线程未接收到指示eMMC设备已处于空闲状态的通知,流程自动进入S14。
S14,CMDQ线程指示eMMC主机控制器查询eMMC设备的状态。
S15,eMMC主机控制器向eMMC设备发送状态查询信息3,用于查询eMMC设备是否处于空闲状态。
在一些实施例中,上述S10和S11的实现原理与S1和S2相同,在此不再赘述。另外,通过S10、S11、S14和S15,实现驱动eMMC主机控制器轮询eMMC设备的状态。其中,S10和S11为指示eMMC设备执行IO请求1之后的第一次轮询,而S14和S15为指示eMMC设备执行IO请求1之后的最后一次轮询。在实际运行过程中,第一次轮询和最后一次轮询之间还可以包括多次轮询,当然,上述多次轮询所得到的结果均为eMMC设备依然未处于空闲状态。
轮询状态将持续到确定eMMC设备再次进入空闲状态。
同样地,在eMMC设备接收到状态查询信息3之后,若eMMC设备未处于空闲状态,eMMC设备继续向eMMC主机控制器发送状态响应信息2。若eMMC设备处于空闲状态,流程还可以进入S16。
S16,eMMC设备再次向eMMC主机控制器发送状态响应信息1,用于指示eMMC设备处于空闲状态。
S17,eMMC主机控制器通知CMDQ线程,当前eMMC设备处于空闲状态。
S18,CMDQ线程指示eMMC主机控制器向eMMC设备发送IO请求2的执行信息2。
可以理解的,在上述S4中,已发送IO请求2的CMD44和CMD45时,CMDQ线程确定eMMC设备已处于空闲状态之后,便可以指示eMMC主机控制器向eMMC设备发送IO请求2的执行信息2。
在另一些实施例中,若上述S4中未发送IO请求2的CMD44和CMD45,那么在轮询eMMC设备期间,CMDQ线程还可以指示eMMC主机控制器向eMMC设备发送IO请求2的CMD44和CMD45。
S19,eMMC主机控制器向eMMC设备发送执行信息2,用于指示eMMC设备实际执行IO请求2对应的读/写任务。
S20,eMMC设备执行IO请求2所指示的读/写任务。
可以理解的,eMMC主机控制器向eMMC设备发送IO请求包括:发送IO请求的读/写任务信息(又称阶段1)和发送IO请求的执行信息(又称为阶段2)。其中,阶段1只需要在阶段2之前执行即可,无需等待eMMC设备进入空闲。而阶段2必须在eMMC设备进入空闲状态之后才可以执行。另外,eMMC主机控制器发送IO请求的执行信息之后,才可视为eMMC主机控制器完成向eMMC设备发送了IO请求。在后续实施例中,提到的发送IO请求可以是指发送IO请求对应的执行信息。另外,提到的执行IO请求,可以是指执行IO请求对应的读/写任务。
另外,在实现驱动eMMC主机控制器向eMMC设备发送IO请求1和IO请求2的过程中,如图3所示,CMDQ线程会一直占用CPU所提供的资源,具体过程如下:
首先,CMDQ线程占用CPU资源,指示eMMC主机控制器向eMMC设备发出IO请求1。在IO请求1发出之后,eMMC设备执行IO请求1所对应的读/写任务。另外,在IO请求1发出之后,CMDQ线程继续占用CPU资源,周期性地轮询eMMC设备是否处理完IO请求1所指示的读/写任务。例如,上述S10、S11、S14和S15所示,CMDQ线程可以重复地指示eMMC主机控制器向eMMC设备发送CMD13。
在轮询到eMMC设备处理完IO请求1之后,CMDQ线程继续占用CPU资源,指示eMMC主机控制器向eMMC设备发送下一条IO请求,如称为IO请求2。在IO请求2发出之后,同样需要继续轮询eMMC设备是否完成IO请求2。
显然,在IO请求都被eMMC设备处理完毕之前,CMDQ线程会持续占用CPU资源。从而,导致电子设备100中其他关键进程不能及时调度CPU资源,进程等待时间过久。
为了改善上述问题,本申请实施例提供了一种数据读/写控制方法。该方法可以在电子设备100上实现。电子设备100中的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。以采用分层架构的Android系统为例,电子设备100的软硬件架构可以如图4所示。
如图4所示,电子设备100从上至下可以分成应用程序层(简称应用层),应用程序框架层(简称框架层),核心库和运行时(libraries&android runtime)层,内核(Kernel)层(也称为驱动层)以及硬件(Hardwork)层等若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。
其中,应用层可以包括一系列应用程序包。如图4所示,应用层可以包括相机应用、图库应用、视频应用等多个应用程序包。
一般而言,应用程序是使用Java语言开发,通过调用应用程序框架层所提供的应用程序编程接口(application programming interface,API)和编程框架来完成。示例性地,应用程序框架层包括一些预先定义的函数。
如图4所示,应用程序框架层可以包括内容提供器、资源管理器、通知管理器、窗口管理器、视图系统、电话管理器等,本申请实施例对此不做任何限制。
其中,上述内容提供器,用来存放和获取数据,并使这些数据可以被应用本身或其他应用程序访问。此外,内容提供器还可以获取其他应用程序所共享的数据。其中,上述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
上述资源管理器,用于读取应用程序所需的非代码资源,如,字符串、图形和布局文件(layout file)等。
如图4所示,系统库可以包括多个功能模块。例如:图层整合器(SurfaceFlinger),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),二维图形引擎(例如:SGL)等。SurfaceFlinger用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。2D图形引擎是2D绘图的绘图引擎。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
内核层是硬件和软件之间的层。内核层至少包含eMMC驱动程序、摄像头驱动程序,音频驱动程序,传感器驱动程序等驱动软件,本申请实施例对此不做任何限制。
内核层中的驱动软件程序可以驱动硬件层中对应的硬件模块,实现对应的功能。
例如,摄像头驱动程序可以驱动电子设备100的摄像头执行图像采集,从而,实现拍照功能。再例如,eMMC驱动程序可以驱动eMMC主机控制器执行向eMMC设备写入数据,或者从eMMC设备读取数据,从而,实现数据读/写功能。
另外,图4中还示例性地展示了硬件层中可以被驱动的硬件模块,如CPU、内部存储器、eMMC主机控制器和eMMC设备等。当然,硬件层中还可包括图4未示出的硬件模块,如,摄像机等。
在本申请实施例中,如图4所示,eMMC驱动程序包括CMDQ模块。CMDQ模块是eMMC驱动程序中的一部分程序段。在本申请实施例中,CMDQ模块中还可以包括计时模块和存储模块。
在一些实施例中,如图5所示,除了计时模块和存储模块之外,CMDQ模块还可以包括CMDQ任务级协议、任务描述列表、队列屏障(queue-barrier,QBR)优先级管理、任务下发管理及直接命令(direct-command,DCMD)。其中,eMMC协议中规定的命令CMD44/CMD45/CMD46/CMD47,可以在CMDQ任务级协议、任务描述列表、QBR优先级管理、任务下发管理及DCMD命令的配合下,向eMMC设备发送,具体的实现过程可参考eMMC协议5.1,在此不再赘述。
另外,如图5所示,CMDQ模块还可以包括队列状态寄存器(queue statusregister,QSR)状态通知、任务完成中断和发送队列状态(send queue status,SQS)队列状态请求。其中,eMMC协议中规定,在QSR状态通知、任务完成中断和SQS队列状态请求的配合下,可以通过发送CMD13实现轮询eMMC设备的状态,具体的实现过程可参考eMMC协议5.1,在此不再赘述。
在eMMC驱动程序被初始化之后,电子设备100可以创建CMDQ模块对应的CMDQ线程。
其中,CMDQ线程可以用于指示eMMC主机控制器访问eMMC设备。CMDQ线程还可以指示eMMC主机控制器轮询eMMC设备的状态。
在一些实施例中,计时模块可以控制至少一个计时器。上述计时模块可以在CMDQ线程的指示下,启用计时器,实现计时。如,在CMDQ线程的指示下,计时模块可以触发计时器累计CMDQ线程的休眠时长或累计轮询eMMC设备的轮询时长。另外,在eMMC驱动程序被初始化之后,还可以在内部存储器中确定出一块缓存区域。该缓存区域可以用于存储CMDQ线程运行过程中涉及的到参数,如,休眠时长、轮询时长等。另外,上述存储模块可以是用于读取缓存区域中数据或者往缓存区域中存储数据的软件接口。也就是,上述存储模块可以协助CMDQ线程从缓存区域中取出所需的参数,也可以协助CMDQ线程往缓存区域中写入相关参数。
可以理解地,在应用层的应用程序与用户交互的过程中,可以产生大量的指示数据读/写的业务需求。响应于指示数据读/写的业务需求,CMDQ线程可以协同计时模块和存储模块,驱动eMMC主机控制器将该业务需求所对应的数据块写入eMMC设备中,或者从eMMC设备中读出该业务需求所对应的数据块。例如,通过驱动eMMC主机控制器向eMMC设备发送IO请求的方式,实现访问eMMC设备。
以相机应用与用户交互为例。电子设备100可以响应用户针对相机应用的操作,进行照片的拍摄。在拍摄到照片之后,相机应用可以产生存储照片的业务需求。相机应用响应于该业务需求,可以调度应用框架层中用于存储照片的API,以实现照片的存储。
在相机应用调度用于存储照片的API时,该API可以调度CMDQ线程将该照片写入eMMC设备,过程可以如下:CMDQ线程指示eMMC主机控制器生成指示存储照片的IO请求。然后,CMDQ线程指示eMMC主机控制器向eMMC控制器发送该IO请求,从而,实现将照片写入eMMC设备中。
在电子设备100实际运行过程中,还会出现其他涉及数据读/写的场景。比如,电子设备100开机时,会出现系统文件的读取场景。再比如,电子设备100播放视频数据时,也会出现视频数据的读取场景。再比如,电子设备100下载文件数据时,会出现文件数据的写入场景等。在上述场景中,都会出现指示数据读/写的业务需求。
在上述业务场景中,均会出现指示数据读/写的业务需求。另外,在同一业务需求下,可以对应有多条IO请求。例如,需读/写较大数据块时,可以将需读/写的数据块,分为多个小块,并生成多条IO请求,每一条IO请求对应一个指示读取数据的读/写任务。这样,在CMDQ线程、计时模块和存储模块的配合下,可以驱动eMMC主机控制器向eMMC设备依次发送多条IO请求,从而,完成指示数据读/写的业务需求。
下面结合附图,以电子设备100处理IO请求1和IO请求2所对应的读/写任务为例,描述本申请实施例提供的数据读/写控制方法的实现过程。如图6所示,电子设备100中包括SOC和eMMC设备。SOC中包括CMDQ线程、计时模块、存储模块和eMMC主机控制器。其中,CMDQ线程运行于CPU中的CPU核,并占用部分CPU资源,又称为第一CPU资源,如,部分计算资源、传输资源及存储资源。如图6所示,方法包括:
B1,CMDQ线程指示eMMC主机控制器发送IO请求1对应的执行信息1。
在一些实施例中,在B1之前,eMMC设备已接收到IO请求1对应的读/写任务信息,并且CMDQ线程(又称为第一线程)已确定eMMC设备处于空闲状态。当然,上述过程可参考图2中的S1~S4,在此不再赘述。可以理解地,无论eMMC设备是否处于空闲状态,eMMC主机控制器均可以向eMMC设备发送IO请求1的读/写任务信息。在一些实施例中,上述B1的实现可参考前述实施例中的S7,在此不再赘述。
B2,eMMC主机控制器向eMMC设备发送执行信息1,用于指示eMMC设备执行IO请求1所对应的读/写任务。
在一些实施例中,上述执行信息1又可称为第一访问信息,上述执行信息1可以是指示执行IO请求1的CMD46或CMD47。例如,IO请求1指示写入数据的读/写任务时,执行信息1可以是CMD47。例如,IO请求1指示读取数据的读/写任务时,执行信息1可以是CMD46。为了方便描述,IO请求1对应的读/写任务又可称为第一访问任务。
B3,eMMC设备执行IO请求1所对应的读/写任务。
在一些实施例中,上述B3的实现可参考前述实施例中的S9,在此不再赘述。
B4,CMDQ线程通过存储模块读取IO请求1对应的休眠时长1。
在一些实施例其中,上述B4与B1、B2、B3之间没有必然的先后顺序。在一些示例中,B4可以在B1之前执行。在另一些示例中,B4也可以与B1同步执行。在其他示例中,B4还可以在B1之后立即执行。
另外,上述存储模块可以响应于CMDQ线程的触发,从预先开辟的缓存区域中读取IO请求1对应的休眠时长1。休眠时长1是缓存区域中与IO请求1匹配的休眠时长。
在一些实施例中,缓存区域中可以存储有多个休眠时长。上述休眠时长可以是B1之后,CMDQ线程可以释放CPU资源的时长。
在一些实施例中,上述休眠时长与IO请求指示读/写的数据块,如称为数据块a或第一数据块的大小相关。
可以理解的,在eMMC设备执行完读/写数据块a之前,CMDQ线程轮询eMMC设备,得到的轮询结果均为未完成。可见,在此期间,CMDQ线程占用CPU资源执行轮询操作的意义不大。另外,为了及时确定eMMC设备是否读/写完数据块a,CMDQ线程开始轮询的时间节点不晚于eMMC设备实际读/写完数据块a的时间点。这样,在指示向eMMC设备发送IO请求所对应的执行信息之后,到CMDQ线程指示开始轮询eMMC设备之间,可以具有一段休眠时长。另外,数据块a越小,eMMC设备读/写数据块a的速度越快,也就是,eMMC设备处理该IO请求的速度越快。数据块a越大,eMMC设备读/写数据块a的速度越慢,也就是,eMMC设备处理IO请求的速度越慢。这样,数据块a越小,在指示发出IO请求的执行信息之后,CMDQ线程可以休眠的时长就越短,也就是,该IO请求对应的休眠时长越短。反之,数据块a越大,在指示发出IO请求的执行信息之后,CMDQ线程可以休眠的时长则越长,也就是,该IO请求对应的休眠时长越长。
在一些实施例中,CMDQ线程首先可以确定出i个数据大小区间,其中,数据大小区间是用于指示数据体积的数值区间,i为大于1的正整数。示例性地,可以在0k与单次读/写上限值之间,划分出i个数据大小区间。其中,单次读/写上限值是指SOC指示eMMC设备单次可读/写的数据块的最大体积,例如,单次读/写上限值可以是512k,那么可以依据0k~512k,划分出区间0~4k、区间4k~8k……区间508k~512k等128个区间。然后,再确定不同数据大小区间所对应的休眠时长。另外,上述举例中,划分区间的步长为4k,可以理解的,4k的步长仅为一个举例,在其他可能的示例中,划分区间的步长还可以是8k、16k、2k等,本申请实施例对此不作限定。
然后,CMDQ线程可以确定每个数据大小区间对应的休眠时长,并通过存储模块存储于对应的缓存区域中。示例性地,CMDQ线程可以依据属于数据大小区间的IO请求,确定数据大小区间所对应的休眠时长。其中,在IO请求所对应的数据块大小属于数据大小区间的情况下,可以简称该IO请求属于该数据大小区间。比如,IO请求a指示读取512k的数据块,512k的数据块属于区间508k~512k,那么该IO请求a与区间508k~512k对应,也可以称IO请求a属于区间508k~512k。
示例性地,CMDQ线程可以根据各IO请求的完成时耗,确定对应的该数据大小区间的休眠时长。可以理解地,完成时耗是指CMDQ线程指示eMMC主机控制器发出执行信息,与eMMC设备执行完对应的读/写任务之间的时间间隔。例如,CMDQ线程指示eMMC主机控制器发出IO请求a的执行信息之后,到CMDQ线程轮询到eMMC设备已完成IO请求a之间的时间间隔,可作为IO请求a的完成时耗。
作为一种实现方式,在电子设备100开机的过程中,CMDQ线程可以确定各数据大小区间所对应的休眠时长。下面以确定区间508k~512k所对应的休眠时长为例,描述获得数据大小区间所对应的休眠时长。其中,示例中提到的IO请求a,是电子设备100开机后,也即,CMDQ线程初始化之后,eMMC设备需要执行的第m条属于区间508k~512k的IO请求。其中,m的取值可以是1到N中的任一整数值,N为正整数。换句话说,IO请求a也就是eMMC设备需要执行的前N条属于区间508k~512k的IO请求之一。例如,N等于3时,IO请求a可以是需要执行的第1条属于区间508k~512k的IO请求,也可以是需要执行的第2条属于区间508k~512k的IO请求,还可以是需要执行的第3条属于区间508k~512k的IO请求。也就是,IO请求a可以是电子设备执行的前3条属于区间508k~512k的IO请求中的一条。另外,如图7所示,包括:
A1,CMDQ线程指示eMMC主机控制器发送IO请求a对应的执行信息a。
其中,执行信息a又可称为第二访问信息。
A2,eMMC主机控制器向eMMC设备发送执行信息a,用于指示eMMC设备执行IO请求a对应的读/写任务a。
其中,读/写任务a又可称为第二访问任务。
A3,eMMC设备执行读/写任务a。
A4,CMDQ线程指示计时模块启动计时。
在一些实施例中,上述A4与A2、A3之间没有必然的先后顺序。比如,A1和A4可以同步进行。再比如,A4可以在A1之后立即执行。CMDQ线程可以向计时模块发送指令信息a,又称为第三信息,而计时模块响应于该指令信息a,启动计时器,如启动第二计时器,开始累计时间。
A5,CMDQ线程指示eMMC主机控制器轮询eMMC设备的状态。
A6,eMMC主机控制器向eMMC设备发送状态查询信息a,用于查询eMMC设备是否再次进入空闲状态。
在一些实施例中,状态查询信息a又称为第二轮询信息。上述A5和A6的实现,可参考前述实施例中的S11和S11,在此不再赘述。
A7,eMMC设备向eMMC主机控制器发送状态响应信息a,用于指示eMMC设备已处于空闲状态。
可以理解地,在eMMC设备执行完IO请求a之后,eMMC设备才会响应状态查询信息a,向eMMC主机控制器反馈状态响应信息a,该状态响应信息a又称为第一轮询响应。在eMMC设备未执行完IO请求a的情况下,eMMC设备可以向eMMC主机控制器反馈状态响应信息b,用于指示eMMC设备未处于空闲状态。然后,流程继续重复A5~A6,继续指示eMMC主机控制器轮询eMMC设备的状态。
也就是说,虽然上述示例中枚举了经过一次轮询,如,执行一次A5~A6之后,流程则进入A7。但是,实际运行过程中,也可能经过多次轮询,也即,需要经过多次A5~A6,流程才会进入A7。
A8,eMMC主机控制器通知CMDQ线程,当前eMMC设备处于空闲状态。
在一些实施例中,上述A8的实现可参考前述实施例中的S17,如,向CMDQ线程发送第一通知信息,该第一通知信息用于指示第二访问任务已处理完毕,详情在此不再赘述。
A9,CMDQ线程通过计时模块获取计时结果,作为区间508k~512k对应的完成时耗。
在一些实施例中,上述计时结果也就是计时器当前的计时时间。CMDQ线程可以调度计时模块获取该计时结果,并将该计时结果确定为IO请求a的完成时耗,也可称为区间508k~512k对应的完成时耗。另外,CMDQ线程还可以指示计时器停止计时,并置零。
针对前N条属于区间508k~512k的IO请求,均可以通过上述方法,也即A1~A9,获得对应的完成时耗。这样,CMDQ线程可以得到属于区间508k~512k的前N个完成时耗。
A10,CMDQ线程从区间508k~512k对应的前N条完成时耗中,确定区间508k~512k对应的休眠时长。
在一些实施例中,CMDQ线程可以从前N个完成时耗中确定出最小值,作为区间508k~512k对应的休眠时长。
A11,CMDQ线程指示存储模块,将区间508k~512k对应的休眠时长写入对应的缓存区域。
当然,在确定其他数据大小区间所对应的休眠时长的方式,可参考上述A1~A11,在此不再赘述。如此,缓存区域中可以包括不同数据大小区间所对应的休眠时长,同时,存储模块也可以在CMDQ线程的调度下,读取到不同数据大小区间的休眠时长。
在另一些实施例中,同一数据大小区间还可以对应有读任务的休眠时长和写任务的休眠时长。例如,可以获取属于该数据大小区间的前N条读请求,然后,依据前N条读请求的完成时耗,确定出该数据大小区间的读任务对应的休眠时长。再例如,可以获取属于该数据大小区间的前N条写请求,然后,依据前N条写请求的完成时耗,确定出该数据大小区间的写任务对应的休眠时长。
以上述示例,CMDQ线程通过指示eMMC主机控制器轮询eMMC设备的方式,确定各数据大小区间的休眠时长。在其他示例中,还可以是CMDQ线程依据eMMC设备主动触发的硬件中断,确定各数据大小区间的休眠时长。
示例性地,如图8所示,在A1~A4的基础上,CMDQ线程占用第三CPU资源的情况下,指示eMMC设备处理IO请求a所指示的第二访问任务,在eMMC设备完成IO请求a所指示的第二访问任务之后,还包括:
A12,eMMC设备向eMMC主机控制器发送IO响应a。
在一些实施例中,eMMC设备可以通过硬件中断的方式,向eMMC主机控制器反馈IO响应a。该IO响应a是针对IO请求a的响应,用于指示eMMC设备已执行完IO请求a。
A13,eMMC主机控制器通知CMDQ线程,当前eMMC设备处于空闲状态。
在一些实施例中,上述A13的实现可参考前述实施例中的S17,在此不再赘述。
A14,CMDQ线程通过计时模块获取计时结果,作为区间508k~512k对应的完成时耗。
在一些实施例中,A14可参考前述A9,在此不再赘述。
A15,CMDQ线程从区间508k~512k对应的前N条完成时耗中,确定区间508k~512k对应的休眠时长。
在一些实施例中,A15可参考前述A10,在此不再赘述。
A16,CMDQ线程指示存储模块,将区间508k~512k对应的休眠时长写入对应的缓存区域。
在一些实施例中,A16可参考前述A11,在此不再赘述。
在其他可能的实施例中,不同数据大小区间所对应的休眠时长也可以是经验值。上述经验值可以基于大量历史IO请求,统计得到。
作为一种示例,电子设备可以从历史IO请求中,获取各数据大小区间所对应的IO请求。根据各数据大小区间所对应的大量IO请求,统计大致的完成时耗,作为数据大小区间对应的休眠时长。
例如,图9所示,图中横轴用于指示IO请求,纵轴为IO请求的完成时耗。另外,图9中每一个点代表一条历史IO请求。另外,图9中所示的每条IO请求均属于区间508k~512k。正如图9所示,属于区间508k~512k的IO请求对应的完成时耗,均不低于1500us。这样,经过统计后,可以将1500us确定为区间508k~512k的休眠时长。
在确定出各数据大小区间的休眠时长之后,电子设备还可以将各数据大小区间的休眠时长预先配置到内部存储器中。在此场景下,存储模块也可以访问内部存储器中用于存储休眠时长的区域。例如。预先配置区间0~4k的休眠时长为10us、区间4k~8k的休眠时长为20us以及区间508k~512k的休眠时长为1500us等。
这样,在B4的实现过程中,CMDQ线程可以依据IO请求1指示读/写的数据块的大小,确定出匹配的数据大小区间,如称为区间1或第一区间。然后,CMDQ线程可以指示存储模块,从缓存区域中返回区间1所对应的休眠时长,也即,得到休眠时长1。
当然,IO请求1指示读取数据块时,CMDQ线程通过存储模块,获取区间1的读任务所对应的休眠时长。IO请求1指示写取数据块时,CMDQ线程通过存储模块,获取区间1的写任务所对应的休眠时长。
B5,CMDQ线程向计时模块发送携带休眠时长1的指令信息,用于触发计时。
其中,上述休眠时长1又可称为第一时长,上述携带休眠时长1的指令信息可称为第一信息。
在一些实施例中,计时模块可以依据第一信息,获得休眠时长1。这样,计时模块可以依据休眠时长1,指示计时器(如,第一计时器)启动计时。在CMDQ线程发出第一信息之后,流程进入D1。
D1,CMDQ线程释放占用的CPU资源。
在一些实施例中,CMDQ线程可以释放所占用的第一CPU资源,并进入休眠状态。释放后的CPU资源可被其他线程调度使用。
另外,CMDQ线程释放占用的CPU资源期间,第一计时器持续计时,并且,在计时结果到达休眠时长1之后,流程则进入B6。
B6,计时模块确定计时结果达到休眠时长1。
在一些实施例中,在计时模块查询到计时器的计时时间不小于休眠时长1时,可确定计时结果达到休眠时长1。在另一些实施例中,计时模块启用计时器之前,先配置计时时长不超过休眠时长1,这样,计时模块接收到来自计时器的计时结束信息时,也可以确定计时结果达到休眠时长1。
B7,计时模块向CMDQ线程发送计时中断1。
在一些实施例中,上述计时中断1可以是软件中断,又称为第二信息。另外,该计时中断1可以指示CMDQ线程结束休眠,这样,流程可以进入D2。
D2,CMDQ线程占用CPU资源。
在一些实施例中,CMDQ线程可以响应于第二信息,再次调度并绑定CPU资源。可以理解地,CMDQ线程在CPU中,调度并绑定的CPU资源又可称为第二CPU资源。第二CPU资源与CMDQ线程绑定之后,其他线程则暂时不能调度该第二CPU资源。示例性地,上述第二CPU资源与第一CPU资源可以是同一块资源。又示例性地,上述第二CPU资源与第一CPU资源也可以不是同一块资源,但是二者可以具有相同的运算能力。
在本申请实施例中,在CMDQ线程再次占用CPU资源之后,流程进入B8。
B8,CMDQ线程向计时模块发送携带轮询时长1的指令信息,用于再次触发计时。
其中,携带轮询时长1的指令信息又称为第四信息。轮询时长可以是在处理IO请求的过程中,CMDQ线程可指示eMMC主机控制器轮询eMMC设备状态的时长。
在一些实施例中,CMDQ线程通过携带轮询时长1的指令信息,触发上述计时模块指示启动计时器,如称为第三计时器。在一些实施例中,轮询时长可以是固定值。比如,所有IO请求所对应的轮询时长都可以是500us。这样,IO请求1所对应的轮询时长1也是500us。
在另一些实施例中,属于不同数据大小区间的IO请求,所对应的轮询时长可以不同。
作为一种实现方式,电子设备100内可以预先配置不同数据大小区间所对应的轮询时长,例如,可以将各个数据大小区间所对应的轮询时长,通过存储模块存储于SOC的内部存储器中。
在一些实例中,所配置的轮询时长可以是经验值。以指示读/写508k~512k数据块的大量IO请求为例。如图10所示,大部分IO请求所指示的读/写操作,在1500us~1800us期间被执行完毕。这样,可以将区间508k~512k的休眠时长确定为300us。在另一些实施例中,相同数据大小区间中针对读任务和写任务的轮询时长也可以不同。
B9,CMDQ线程指示eMMC主机控制器查询eMMC设备的状态。
在一些实施例中,上述B8和B9之间没有必然的先后顺序,比如,可以是同步执行。再比如,B9也可以略早于B8执行,或者,B8也可以略早于B9执行。当然,B8和B9之间的执行间隔不超过指定时长,该指定时长可以较短的时长。
另外,上述B9的实现细节可参考上述S10,在此不再赘述。
B10,eMMC主机控制器向eMMC设备发送轮询信息,用于查询eMMC设备是否处于空闲状态。
在一些实施例中,上述B10的实现细节可参考上述S11,在此不再赘述。另外,轮询信息与S11中的状态查询信息2一样,均可以是CMD13。
B11,eMMC设备向eMMC主机控制器发送状态响应信息2,用于指示eMMC设备未处于空闲状态。
在一些实施例中,上述B11的实现细节可参考上述S12,在此不再赘述。
B12,eMMC主机控制器通知CMDQ线程,当前eMMC设备未处于空闲状态。
在一些实施例中,上述B12的实现细节可参考上述S13,在此不再赘述。
B13,CMDQ线程指示eMMC主机控制器继续查询eMMC设备的状态。
在一些实施例中,上述B13的实现细节可参考上述S10,在此不再赘述。
B14,eMMC主机控制器向eMMC设备发送轮询信息,用于查询eMMC设备是否处于空闲状态。
在一些实施例中,上述B14的实现细节也可参考前述S11,在此不再赘述。另外,轮询信息与S11中的状态查询信息2一样,均可以是CMD13。另外,上述B10和B14中所发送的轮询信息,均可称为第一轮询信息,均用于查询eMMC设备是否完成第一访问任务。
B15,eMMC设备向eMMC主机控制器发送状态响应信息2,用于指示eMMC设备未处于空闲状态。
在一些实施例中,上述B15的实现细节可参考上述S12,在此不再赘述。
B16,eMMC主机控制器通知CMDQ线程,当前eMMC设备未处于空闲状态。
在一些实施例中,上述B16的实现细节可参考上述S13,在此不再赘述。
在上述实施例中,B10、B11为一次轮询,B13、B17为另一次轮询。在上述示例中,通过上述B10、B11、B13、B17所得到的轮询结果,均为eMMC设备未处于空闲状态。若出现一次轮询结果为eMMC设备处于空闲状态,则停止轮询,流程直接进入B24,从而,指示eMMC设备处理下一条IO请求。比如,通过B10、B11所对应的轮询结果为eMMC设备处于空闲状态,则不再执行B13和B17,流程将直接进入B24。
另外,实际实现的过程中,由于轮询频率的不同,以及IO请求指示读/写的数据块不同,实际轮询的次数不限于两次,在此不再赘述。
另外,在轮询期间,计时器持续进行计时。在计时结果为轮询时长1时,流程还会进入B17。进入B17的时间节点可以略早于B16,也可以稍晚于B16,可视实际情况而定,本申请对此不再赘述。当然,即使进入B17的时间节点略早于B16,也不影响B16以及位于B16之前的步骤的执行。
B17,计时模块确定计时结果达到轮询时长1。
在一些实施例中,上述B17的实现原理可参考上述B6,再次不再赘述。
B18,计时模块向CMDQ线程发送计时中断2。
在一些实施例中,计时中断2也可以是软件中断,又可以称为第五信息。另外,该计时中断2可以指示CMDQ线程结束轮询,这样,流程可以进入B19。
B19,CMDQ线程指示eMMC主机控制器向eMMC设备发送模式切换信息。
在一些实施例中,模式切换信息用于指示eMMC设备启用中断模式,又可称为第一指示信息。在中断模式下,eMMC设备每执行完一个读/写任务,都会反馈一次IO响应,用于指示eMMC设备已进入空闲状态。比如,eMMC设备执行完IO请求1所对应的读/写任务之后,可以反馈IO请求1所对应的IO响应。然后,流程可以同步进入B20和D3。
D3,CMDQ线程释放CPU资源。
在一些实施例中,CMDQ线程可以释放第二CPU资源。同样,第二CPU资源被释放后,其他进程或线程可以调度该资源。
B20,eMMC主机控制器向eMMC设备发送模式切换信息,用于指示eMMC设备启用中断模式。
在B20之后,电子设备内部仅需等待eMMC设备完成IO请求1所指示的读/写任务。
B21,eMMC设备确定执行完IO请求1所对应的读/写任务。
在一些实施例中,IO请求1对应于读任务时,eMMC设备完成读取IO请求1对应的数据块,可确定已执行完IO请求1所对应的读/写任务。IO请求1对应于写任务时,eMMC设备完成IO请求1对应的数据块的写入,可确定已执行完IO请求1所对应的读/写任务。
B22,eMMC设备向eMMC主机控制器发送完成中断信息。
在一些实施例中,该中断信息可以是eMMC设备触发的硬件中断,如,可以是IO响应1,又可称为第二中断信息。通过该中断信息,可以通知eMMC主机控制器,当前eMMC设备已处于空闲。
B23,eMMC主机控制器通知CMDQ线程,IO请求1已被执行完毕。
在一些实施例中,来自eMMC主机控制器的通知,可以指示eMMC设备已执行完IO请求1对应的第一访问任务。此时,可以触发CMDQ线程再次调度CPU资源,也即,流程可以进入D4。这样,CMDQ线程可以继续处理下一条IO请求,如,IO请求2。
D4,CMDQ线程占用CPU资源。
在一些实施例中,CMDQ线程再次从CPU中,调度并绑定CPU资源。在D4中,被调度CPU资源可以和第一CPU资源或第二CPU资源相同,也可以不同,在此不再赘述。
B24,CMDQ线程指示eMMC主机控制器发送IO请求2对应的执行信息2。
在一些实施例中,上述执行信息2可以是指示执行IO请求2的CMD46或CMD47。例如,IO请求2指示写入数据的读/写任务时,执行信息2可以是CMD47。例如,IO请求2指示读取数据的读/写任务时,执行信息2可以是CMD46。
在B24之前,eMMC设备已接收到IO请求2对应的读/写任务信息。eMMC主机控制器可以在发出IO请求1的读/写任务信息之后,立即将IO请求2的读/写任务信息发出。在另一些示例中,可以在轮询eMMC设备状态期间,CMDQ线程指示eMMC主机控制器向eMMC设备发送IO请求2对应的读/写任务信息。
B25,eMMC主机控制器发送执行信息2,用于指示eMMC设备执行IO请求2所对应的读/写任务。
在一些实施例中,上述执行信息2又可称为第三访问信息。上述B25与B2的原理类似,在此不再赘述。
B26.执行IO请求2所对应的读/写任务。
其中,IO请求2所对应的读/写任务,又可称为第三访问任务。在eMMC设备处理第三访问任务之后,流程可参考图6。示例性地,第三访问任务指示eMMC设备读/写的数据块,又称为第三数据块。CMDQ线程确定第三数据块所属的数据大小区间(如,第二区间)之后,也可以通过存储模块读取与第二区间对应的休眠时长,如称为第二时长。然后,CMDQ线程可以向计时模块发送携带第二时长的第六信息,指示计时模块启动第四计时器。之后,CMDQ线程可以释放占用的CPU资源,进入休眠状态,同时,第四计时器累计CMDQ线程的实际休眠时间。在休眠时间达到第二时长之后,CMDQ线程可以再次调度CPU资源,此时调度到的CPU资源可称为第四CPU资源。在CMDQ线程占用第四CPU资源之后,可以不断地指示eMMC主机控制器向eMMC设备发送第三轮询信息,用于查询eMMC设备是否处理完第三访问任务。在占用第四CPU资源的时间达到轮询时长之后,同样,线程指示eMMC主机控制器向eMMC设备发送第一指示信息,并再次释放占用的第四CPU资源;在eMMC设备接收到第一指示信息之后,eMMC设备启用中断模式,在启用中断模式期间,eMMC设备确定已执行完IO请求2对应的第三访问任务。eMMC设备向eMMC主机控制器发送第二中断信息,eMMC主机控制器响应于第二中断信息,向CMDQ线程发送第三通知信息,其中,第三通知信息用于指示eMMC设备已执行完第三访问任务。
另外,上述第一计时器、第二计时器、第三计时器和第四计时器可以是同一计时器,在不同的时间段,用于累计不同时长。当然,上述第一计时器、第二计时器、第三计时器和第四计时器也可以是不同的计时器。
这样,如图11所示,CMDQ线程可以占用CPU资源,指示eMMC主机控制器向eMMC设备发送IO请求1的执行信息1。其中,图11中的“发送IO请求1”可以指代发送IO请求1的执行信息1,“发送IO请求2”可以指代发送IO请求2的执行信息2,“执行IO请求1”可以指代执行IO请求1所对应的读/写任务。
在执行信息1发出之后,CMDQ线程可以进入休眠状态。在休眠时长1内,CMDQ线程不占用CPU资源。在CMDQ线程休眠达到休眠时长1之后,CMDQ线程再度调用CPU资源,指示eMMC主机控制器轮询eMMC设备的状态。在轮询时长1内,CMDQ线程可以占用CPU资源,实现针对eMMC设备的轮询。另外,在轮询时长1内,若轮询到eMMC设备执行完IO请求1,则直接指示eMMC主机控制器向eMMC设备发送IO请求2的执行信息2。在IO请求2发出后,CMDQ线程再次进入休眠状态。
当然,在轮询时长1内,若未轮询到eMMC设备完成IO请求1,则如图11所示,CMDQ线程指示eMMC设备启用中断模式,并再次释放CPU资源。在CMDQ线程释放CPU资源之后,如果eMMC设备处理完IO请求1,可以向eMMC主机控制器发送IO请求1所对应的IO响应1。这样,eMMC主机控制器可以响应于该IO响应1,通过软件中断的方式激活CMDQ线程,使CMDQ线程再次调度CPU资源,将IO请求2的执行信息2发出去。这样,可以缩短CMDQ线程占用CPU资源的时长。减少的占用时长至少包括休眠时长1和时长2,其中,时长2为eMMC设备启用中断模式与实际执行完IO请求1之间的时间长度。
在另一些实施例中,也可以不限制轮询时长,也就是,如图12所示,在B1~B7、D1~D4以及B9~B16的基础上,还包括:
C1,CMDQ线程指示eMMC主机控制器继续查询eMMC设备的状态。
在一些实施例中,上述C1可参考前述实施例中的B13,在此不再赘述。
C2,eMMC主机控制器向eMMC设备发送轮询信息,用于查询eMMC设备是否处于空闲状态。
在一些实施例中,上述C2可参考前述实施例中的B14,在此不再赘述。上述轮询信息也可以称第一轮询信息。另外,在eMMC设备接收到轮询信息的情况下,若eMMC设备处于空闲状态,流程还可以进入C1。
C3,eMMC设备向eMMC主机控制器发送状态响应信息1,用于指示eMMC设备处于空闲状态。
其中,状态响应信息1又可称为第二轮询响应。
C4,eMMC主机控制器通知CMDQ线程,当前eMMC设备处于空闲状态。
在一些实施例中,eMMC主机控制器可以向CMDQ线程发送第二通知信息;其中,第二通知信息用于指示第一访问任务已处理完毕。
C5,CMDQ线程指示eMMC主机控制器向eMMC设备发送IO请求2对应的执行信息2。
C6,eMMC主机控制器向eMMC设备发送执行信息2,用于指示eMMC设备执行IO请求2所对应的读/写任务。
这样,如图13所示,CMDQ线程占用CPU资源,指示eMMC主机控制器将执行信息1发出之后,CMDQ线程进入休眠状态。也就是,在执行信息1发出之后的休眠时长1内,CMDQ线程不占用CPU资源。在CMDQ线程休眠达到休眠时长1之后,CMDQ线程再度调用CPU资源,指示eMMC主机控制器轮询eMMC设备的状态。在轮询时长1内,CMDQ线程可以占用CPU资源,实现针对eMMC设备的轮询。轮询周而复始的执行,在轮询到eMMC设备执行完IO请求1之后,CMDQ线程可以直接指示eMMC主机控制器向eMMC设备发送IO请求2的执行信息2。在IO请求2发出后,CMDQ线程再次进入休眠状态。
可见,在本申请实施例中,在及时掌握eMMC设备进入空闲状态的时机的情况下,也可以有效减少CMDQ线程占用CPU资源的时长,占用时长至少减少休眠时长1。
另外,在其他实施例中,在CMDQ线程休眠期间,如,休眠时间1内,若eMMC设备执行完IO请求1的读/写任务,也可以向eMMC主机控制器发送硬件中断,如,向eMMC主机控制器发送IO响应1。该硬件中断可以指示eMMC主机控制器唤醒休眠状态的CMDQ线程,使CMDQ线程再次占用CPU资源,此时,流程可以直接进入B24,在此不再赘述。另外,CMDQ线程唤醒后还可以通过计时模块获取计时器当前的计时时间,以作为实际休眠时长。CMDQ线程利用该实际休眠时长,更新区间1(也即,IO请求1所属的数据大小区间)的休眠时长。例如,CMDQ线程可以通过存储模块,将实际休眠时长写入缓存区域,替代区间1所对应的休眠时长1。
同样的,在发出执行信息2之后,CMDQ线程也可以进入休眠,在CMDQ线程休眠期间,第四计时器累计CMDQ线程实际的休眠时间。在第四计时器的计时时间未达到第二时长的情况下,若eMMC设备执行完IO请求2的第三访问任务,也可以向eMMC主机控制器发送硬件中断,如称为第三中断信息。该第三中断信息可以指示eMMC主机控制器唤醒休眠状态的CMDQ线程,如,指示eMMC主机控制器向CMDQ线程发送第三通知信息,其中,该第三通知信息可以指示eMMC设备已执行完第三访问任务。被唤醒的CMDQ线程可以再次占用CPU资源,如称为第五CPU资源。这样,CMDQ线程可以通过计时模块,读取第四计时器的计时时长,并将读取到的计时时间,写入缓存区域,替代第二区间对应的第二时长。
这样,电子设备中各个数据大小区间所对应的休眠时长,可以动态更新。更新后的休眠时长更加适合属于该数据大小区间的IO请求。
在另一些实施例中,eMMC设备启动中断模式之后,也即,上述B20之后,若eMMC主机控制器长时间未收到中断信息,电子设备还可以进行报错,如,记录读/写失败等。
作为一种实现方式,CMDQ线程接收到计时中断2之后,还包括:CMDQ线程向计时模块发送携带超时时长的指令信息,用于通过计时模块再次触发计时器启动计时。在本次计时结果达到超时时长的情况下,若eMMC主机控制器未接收到来自eMMC设备的中断信息,那么CMDQ线程可以确定出现读/写异常,并进行报错。
为了方便本领域技术人员理解本申请实施例所提供的方法,下面结合图14所示的流程图,描述电子设备中的CMDQ线程实现上述方法的过程。
如图14所示,CMDQ线程指示eMMC主机控制器发出IO请求1之后,释放所占用的CPU资源,进入休眠状态。
在CMDQ线程休眠达到休眠时长1之后,如图14所示,CMDQ线程再度调用CPU资源,并利用CPU资源,指示eMMC主机控制器轮询eMMC设备的状态。
若轮询到eMMC设备已执行完IO请求1,那么CMDQ线程停止指示轮询eMMC设备的状态。若轮询到eMMC设备未执行完IO请求1,那么CMDQ线程继续指示轮询eMMC设备的状态。另外,CMDQ线程指示轮询eMMC设备状态期间,需要持续占用CPU资源。在一些实施例中,CMDQ线程再次占用CPU资源的时长不超过轮询时长1。换句话说,如图14所示,CMDQ线程还需要判断是否出现轮询超时。其中,轮询超时可以是指示轮询eMMC设备状态的时间超过轮询时长1的情况。
在出现轮询超时的情况下,如图14所示,CMDQ线程可以启动中断处理流程。其中,在中断处理流程下:CMDQ线程可以指示eMMC设备启动中断模式,同时,CMDQ线程停止指示轮询eMMC设备状态,并释放占用的CPU资源。在接收到来自eMMC设备的中断信息时,CMDQ线程可以再次调度CPU资源,指示eMMC主机控制器向eMMC设备发送IO请求2,并退出中断处理流程。
另外,CMDQ线程启动中断处理流程的同时,还可以在计时模块的协助下,监控eMMC设备是否出现中断超时。如,在进入中断流程后,CMDQ线程可以指示计时模块启动计时,在计时模块得到的计时结果达到预置中断时长时,计时模块触发CMDQ线程调度CPU资源。此时,若CMDQ线程确定eMMC设备还未处理完IO请求1,则可确定出现中断超时的情况。
在出现中断超时的情况下,CMDQ线程可以启动超时处理流程。比如,CMDQ线程进行读/写报错等。
本申请实施例,还可以提供一种数据读/写控制方法,如图15所示,上述方法包括以下步骤:
S101,第一线程在占用第一CPU资源的情况下,指示eMMC主机控制器向eMMC设备发送第一访问信息。
其中,第一访问信息用于指示eMMC设备处理第一访问任务。
S102,第一线程释放第一CPU资源。
S103,在第一时长之后,第一线程占用第二CPU资源,并指示eMMC主机控制器向eMMC设备发送第一轮询信息。
可以理解的,上述步骤的具体实现可参考前述实施例,在此不再赘述。在数据读/写过程中,通过上述步骤,可以减少第一线程,也即,CMDQ线程对CPU资源的占用时长,提高电子设备的读/写性能。
综上所述,本申请实施例提供的数据读/写控制方法,在IO请求发出之后,先控制CMDQ线程进入休眠,再启动轮询IO请求是否被执行完毕。这样,在减少CMDQ线程对CPU的长时间占用的同时,提高轮询的命中率。另外,还可以灵活地配合使用轮询与中断两种模式,也即,CMDQ线程在轮询一定时长后,切换至中断模式。这样,可以改善CMDQ线程发出IO请求后,由于该IO请求所需处理周期长,导致CMDQ线程长期占用CPU资源的问题,这样,电子设备的数据读/写性能也可以得到提升。
本申请实施例还提供一种电子设备,该电子设备可以包括:存储器和一个或多个处理器。该存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,可使得电子设备执行上述实施例中的各个步骤。当然,该电子设备包括但不限于上述存储器和一个或多个处理器。例如,该电子设备的结构可以参考图1所示的结构。
本申请实施例还提供一种芯片系统,该芯片系统可以应用于前述实施例中的电子设备。如图16所示,该芯片系统包括至少一个处理器2201和至少一个接口电路2202。该处理器2201可以是上述电子设备中的处理器。处理器2201和接口电路2202可通过线路互联。该处理器2201可以通过接口电路2202从上述电子设备的存储器接收并执行计算机指令。当计算机指令被处理器2201执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
在一些实施例中,通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何在本申请实施例揭露的技术范围内的变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种数据读/写控制方法,其特征在于,应用于电子设备,所述电子设备包括第一线程、嵌入式多媒体卡eMMC主机控制器和eMMC设备,所述方法包括:
所述第一线程在占用第一CPU资源的情况下,指示所述eMMC主机控制器向所述eMMC设备发送第一访问信息,所述第一访问信息用于指示所述eMMC设备处理第一访问任务;
所述第一线程释放所述第一CPU资源;
在第一时长之后,所述第一线程占用第二CPU资源,并指示所述eMMC主机控制器向所述eMMC设备发送第一轮询信息;其中,所述第一轮询信息用于查询所述eMMC设备是否处理完所述第一访问任务。
2.根据权利要求1所述的方法,其特征在于,所述电子设备包括存储模块、计时模块及第一线程对应的缓存区域,所述缓存区域中包括所述第一时长;所述第一时长与第一区间对应;所述第一区间是用于指示数据体积的数值区间;
在所述第一线程释放所述第一CPU资源之前,所述方法还包括:
所述第一线程确定第一数据块属于所述第一区间;其中,所述第一数据块是所述第一访问任务指示读/写的数据块;
所述第一线程通过所述存储模块,从所述缓存区域中,读取所述第一区间对应的所述第一时长;
所述第一线程向所述计时模块发送第一信息;其中,所述第一信息包括所述第一时长;所述第一信息用于指示所述计时模块启动第一计时器;
在所述第一线程释放所述第一CPU资源之后,所述方法还包括:
在所述第一计时器的计时时间达到所述第一时长的情况下,所述计时模块向所述第一线程发送第二信息;
所述第一线程占用所述第二CPU资源,包括:所述第一线程响应于所述第二信息,调度并绑定所述第二CPU资源。
3.根据权利要求1或2所述的方法,其特征在于,在所述指示所述eMMC主机控制器向所述eMMC设备发送第一访问信息之前,所述方法还包括:
所述第一线程指示所述eMMC主机控制器向所述eMMC设备发送第二访问信息;其中,所述第二访问信息用于指示所述eMMC设备处理第二访问任务;所述第二访问任务是所述第一线程初始化之后,指示所述eMMC设备处理的第m条与第一区间对应的访问任务;所述第二访问任务指示读/写的第二数据块属于所述第一区间;所述m是1到N之间的任一整数值;所述N是正整数;
所述第一线程向计时模块发送第三信息,并指示所述eMMC主机控制器,向所述eMMC设备发送第二轮询信息;其中,所述第三信息,用于指示所述计时模块启动第二计时器;所述第二轮询信息,用于查询所述eMMC设备是否执行完所述第二访问任务;
在所述eMMC设备执行完所述第二访问任务的情况下,所述eMMC设备响应于所述第二轮询信息,向所述eMMC主机控制器发送第一轮询响应;
所述eMMC主机控制器响应于所述第一轮询响应,向所述第一线程发送第一通知信息;其中,所述第一通知信息用于指示所述eMMC设备已执行完所述第二访问任务;
所述第一线程响应于所述第一通知信息,通过所述计时模块读取所述第二计时器的计时时间,作为与所述第一区间相关联的一个完成时耗;
在得到N个与所述第一区间相关联的完成时耗之后,所述第一线程确定与所述第一区间对应的所述第一时长;其中,所述第一时长是N个所述完成时耗中的最小值;
所述第一线程指示存储模块,将所述第一区间对应的所述第一时长,写入缓存区域。
4.根据权利要求1或2所述的方法,其特征在于,在所述指示所述eMMC主机控制器向所述eMMC设备发送第一访问信息之前,所述方法还包括:
在所述第一线程占用第三CPU资源的情况下,指示所述eMMC主机控制器向所述eMMC设备发送第二访问信息;其中,所述第二访问信息用于指示所述eMMC设备处理第二访问任务;所述第二访问任务是所述第一线程初始化之后,指示所述eMMC设备处理的第m条与第一区间对应的访问任务;所述第二访问任务指示读/写的第二数据块属于所述第一区间;所述m是1到N之间的任一整数值;所述N是正整数;
所述第一线程向计时模块发送第三信息,并释放所述第三CPU资源;所述第三信息,用于指示所述计时模块启动第二计时器;
在所述eMMC设备执行完所述第二访问任务之后,所述eMMC设备向所述eMMC主机控制器发送第一中断信息;
所述eMMC主机控制器响应于所述第一中断信息,向所述第一线程发送第一通知信息;其中,所述第一通知信息用于指示所述eMMC设备执行完所述第二访问任务;
所述第一线程响应于所述第一通知信息,通过所述计时模块读取所述第二计时器的计时时间,作为与所述第一区间相关联的一个完成时耗;
在得到N个与所述第一区间相关联的完成时耗之后,所述第一线程确定与所述第一区间对应的所述第一时长;其中,所述第一时长是N个所述完成时耗中的最小值;
所述第一线程指示存储模块,将所述第一区间对应的所述第一时长,写入缓存区域。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
在所述eMMC设备执行完所述第一访问任务的情况下,所述eMMC设备响应于所述第一轮询信息,向所述eMMC主机控制器发送第二轮询响应;
所述eMMC主机控制器响应于所述第二轮询响应,向所述第一线程发送第二通知信息;其中,所述第二通知信息用于指示所述eMMC设备已执行完所述第一访问任务;
所述第一线程响应于所述第二通知信息,指示所述eMMC主机控制器向所述eMMC设备发送第三访问信息;所述第三访问信息,用于指示所述eMMC设备处理第三访问任务。
6.根据权利要求5所述的方法,其特征在于,在指示所述eMMC主机控制器向所述eMMC设备发送第三访问信息之后,所述方法还包括:
所述第一线程确定第三数据块属于第二区间;其中,所述第三数据块是所述第三访问任务指示读/写的数据块;所述第二区间是用于指示数据体积的数值区间;
所述第一线程确定与所述第二区间对应的第二时长;
所述第一线程释放所述第二CPU资源;
在所述第二时长之后,所述第一线程占用第四CPU资源,并指示所述eMMC主机控制器向所述eMMC设备发送第三轮询信息;其中,所述第三轮询信息用于查询所述eMMC设备是否执行完所述第三访问任务。
7.根据权利要求6所述的方法,其特征在于,所述电子设备还包括计时模块,在所述第一线程占用所述第四CPU资源,并指示所述eMMC主机控制器向所述eMMC设备发送第三轮询信息之后,所述方法还包括:
所述第一线程向所述计时模块发送第四信息;所述第四信息包括轮询时长;
所述计时模块响应于所述第四信息,启动第三计时器;
在所述第三计时器的计时时间达到所述轮询时长时,所述计时模块向所述第一线程发送第五信息;
在接收到所述第五信息的情况下,所述第一线程确定所述eMMC设备未执行完所述第三访问任务;
所述第一线程指示所述eMMC主机控制器向所述eMMC设备发送第一指示信息,并释放所述第四CPU资源;
在所述eMMC设备接收到所述第一指示信息之后,所述eMMC设备启用中断模式;
在启用所述中断模式期间,所述eMMC设备确定已执行完所述第三访问任务;
所述eMMC设备向所述eMMC主机控制器发送第二中断信息;
所述eMMC主机控制器响应于所述第二中断信息,向所述第一线程发送第三通知信息,其中,所述第三通知信息用于指示所述eMMC设备已执行完所述第三访问任务。
8.根据权利要求7所述的方法,其特征在于,所述电子设备内包括与第一区间对应的所述轮询时长;在所述第一线程向所述计时模块发送第四信息之前,所述方法还包括:
所述第一线程确定第一数据块属于所述第一区间;其中,所述第一数据块是所述第一访问任务指示读/写的数据块;
所述第一线程获取所述第一区间对应的所述轮询时长。
9.根据权利要求5所述的方法,其特征在于,所述电子设备包括计时模块、存储模块和第一线程对应的缓存区域,所述缓存区域中包括第二时长,所述第二时长与第二区间对应;所述第二区间是用于指示数据体积的数值区间;在指示所述eMMC主机控制器向所述eMMC设备发送第三访问信息之后,所述方法还包括:
所述第一线程确定第三数据块属于所述第二区间;其中,所述第三数据块是所述第三访问任务指示读/写的数据块;
所述第一线程通过所述存储模块,从所述缓存区域中,读取所述第二区间对应的所述第二时长;
所述第一线程向所述计时模块发送第六信息;其中,所述第六信息包括所述第二时长;所述第六信息用于指示所述计时模块启动第四计时器;
所述第一线程释放所述第二CPU资源;
在所述第四计时器的计时时间未超过所述第二时长的情况下,所述eMMC设备处理完所述第三访问任务;
所述eMMC设备向所述eMMC主机控制器发送第三中断信息;
所述eMMC主机控制器响应于所述第三中断信息,向所述第一线程发送第三通知信息;其中,所述第三通知信息用于指示所述eMMC设备已执行完所述第三访问任务;
所述第一线程响应所述第三通知信息,占用第五CPU资源,并通过所述计时模块,读取所述第四计时器的计时时长;
所述第一线程将读取到的计时时间,写入所述缓存区域,替代所述第二区间对应的所述第二时长。
10.根据权利要求1-9任一项所述的方法,其特征在于,在指示所述eMMC主机控制器向所述eMMC设备发送第一访问信息之前,所述方法还包括:
所述第一线程指示所述eMMC主机控制器,向所述eMMC设备发送所述第一访问任务的读/写描述信息;其中,所述读/写描述信息包括eMMC协议中规定的指令CMD44及CMD45。
11.一种电子设备,其特征在于,电子设备包括一个或多个处理器、存储器、eMMC主机控制器和eMMC设备;所述存储器与处理器耦合,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,所述一个或多个处理器,用于执行如权利要求1-10中任一项所述的方法。
12.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111605364.9A CN114443526B (zh) | 2021-12-24 | 2021-12-24 | 一种数据读/写控制方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111605364.9A CN114443526B (zh) | 2021-12-24 | 2021-12-24 | 一种数据读/写控制方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114443526A true CN114443526A (zh) | 2022-05-06 |
CN114443526B CN114443526B (zh) | 2022-12-13 |
Family
ID=81363985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111605364.9A Active CN114443526B (zh) | 2021-12-24 | 2021-12-24 | 一种数据读/写控制方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114443526B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116594758A (zh) * | 2023-07-18 | 2023-08-15 | 山东三未信安信息科技有限公司 | 一种密码模块调用优化系统及优化方法 |
CN116820898A (zh) * | 2023-08-31 | 2023-09-29 | 合肥康芯威存储技术有限公司 | 一种eMMC的运行状态监控方法、系统及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870625A (en) * | 1995-12-11 | 1999-02-09 | Industrial Technology Research Institute | Non-blocking memory write/read mechanism by combining two pending commands write and read in buffer and executing the combined command in advance of other pending command |
CN102906706A (zh) * | 2010-05-24 | 2013-01-30 | 索尼电脑娱乐公司 | 信息处理装置及信息处理方法 |
CN110928935A (zh) * | 2018-09-19 | 2020-03-27 | 阿里巴巴集团控股有限公司 | 数据的访问命令处理方法、装置和系统 |
US10635503B1 (en) * | 2018-01-31 | 2020-04-28 | EMC IP Holding Company LLC | Systems and methods for semaphore synchronization |
-
2021
- 2021-12-24 CN CN202111605364.9A patent/CN114443526B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870625A (en) * | 1995-12-11 | 1999-02-09 | Industrial Technology Research Institute | Non-blocking memory write/read mechanism by combining two pending commands write and read in buffer and executing the combined command in advance of other pending command |
CN102906706A (zh) * | 2010-05-24 | 2013-01-30 | 索尼电脑娱乐公司 | 信息处理装置及信息处理方法 |
US10635503B1 (en) * | 2018-01-31 | 2020-04-28 | EMC IP Holding Company LLC | Systems and methods for semaphore synchronization |
CN110928935A (zh) * | 2018-09-19 | 2020-03-27 | 阿里巴巴集团控股有限公司 | 数据的访问命令处理方法、装置和系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116594758A (zh) * | 2023-07-18 | 2023-08-15 | 山东三未信安信息科技有限公司 | 一种密码模块调用优化系统及优化方法 |
CN116594758B (zh) * | 2023-07-18 | 2023-09-26 | 山东三未信安信息科技有限公司 | 一种密码模块调用优化系统及优化方法 |
CN116820898A (zh) * | 2023-08-31 | 2023-09-29 | 合肥康芯威存储技术有限公司 | 一种eMMC的运行状态监控方法、系统及计算机可读存储介质 |
CN116820898B (zh) * | 2023-08-31 | 2024-01-02 | 合肥康芯威存储技术有限公司 | 一种eMMC的运行状态监控方法、系统及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114443526B (zh) | 2022-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114443526B (zh) | 一种数据读/写控制方法及电子设备 | |
CN110489213B (zh) | 一种任务处理方法及处理装置、计算机系统 | |
JP6199477B2 (ja) | ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法 | |
CN100336075C (zh) | 利用具有时间分配器的图形渲染引擎的装置、方法和系统 | |
CN103930874B (zh) | 使用经调度资源组转变通过对便携式计算装置的工作负载估计而节省功率 | |
WO2023103296A1 (zh) | 一种写数据高速缓存的方法、系统、设备和存储介质 | |
JP2006515690A (ja) | 複数のプロセッサを有するデータ処理システムと、複数のプロセッサを有するデータ処理システムのためのタスクスケジューラと、タスクスケジューリングの対応する方法 | |
CN103218329A (zh) | 数字信号处理数据传输 | |
CN107818012B (zh) | 一种数据处理方法、装置及电子设备 | |
US11010094B2 (en) | Task management method and host for electronic storage device | |
CN111966492A (zh) | 内存回收方法、装置、电子设备及计算机可读存储介质 | |
CN103873587A (zh) | 一种基于云平台实现调度的方法及装置 | |
CN109117279B (zh) | 电子装置及其限制进程间通信的方法、存储介质 | |
EP3770759A1 (en) | Wake-up and scheduling of functions with context hints | |
CN113918356B (zh) | 基于cuda数据快速同步方法、装置、计算机设备及存储介质 | |
CN116089049B (zh) | 基于异步并行i/o请求的进程同步调度方法、装置以及设备 | |
CN111913792A (zh) | 一种业务处理方法和装置 | |
CN115756143B (zh) | 数据包处理的节能方法、装置、计算机设备和存储介质 | |
EP4280060A1 (en) | Power consumption control method and apparatus | |
WO2023083064A1 (zh) | 视频处理方法、装置、电子设备及可读存储介质 | |
CN115017004B (zh) | 进程监控方法及电子设备 | |
CN109426563B (zh) | 一种进程管理方法及装置 | |
CN106997304B (zh) | 输入输出事件的处理方法及设备 | |
US20220027278A1 (en) | Techniques for core-specific metrics collection | |
CN114780296A (zh) | 数据库集群的数据备份方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |