CN110442382B - 预取缓存控制方法、装置、芯片以及计算机可读存储介质 - Google Patents
预取缓存控制方法、装置、芯片以及计算机可读存储介质 Download PDFInfo
- Publication number
- CN110442382B CN110442382B CN201910701880.8A CN201910701880A CN110442382B CN 110442382 B CN110442382 B CN 110442382B CN 201910701880 A CN201910701880 A CN 201910701880A CN 110442382 B CN110442382 B CN 110442382B
- Authority
- CN
- China
- Prior art keywords
- cache
- instruction group
- content
- prefetch
- instruction
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 125000004122 cyclic group Chemical group 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 239000000872 buffer Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002195 synergetic effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种预取缓存控制方法、装置、芯片以及计算机可读存储介质,其中,该方法包括,获取处理器请求访问的第一指令组地址,若所述第一指令组地址未处于预设的预取缓存或记录缓存中,则在内存中获取与所述第一指令组地址对应的第一内容,其中,所述第一内容包括第一指令组;将所述预取缓存中的第二内容更新到所述记录缓存,并将所述预取缓存中的第二内容更新为所述第一内容。实现了一种高效的预取缓存控制方案,避免了因循环指令被覆盖而需要重新读取,提高了连续指令和循环指令的读取效率。
Description
技术领域
本发明涉及电子技术领域,尤其涉及一种预取缓存控制方法、装置、芯片以及计算机可读存储介质。
背景技术
在现有的芯片架构技术方案中,大多采用非易失性的存储单元来存放用户程序以及相关的应用数据,其中,非易失器件包括EEPROM(Electrically Erasable Programmableread only memory带电可擦可编程只读存储器)、Flash(闪存)等。
一般而言,非易失性的存储单元的放置位置主要有外挂和内嵌两种,其中,考虑到外挂程序存储设备的数据接口一般是串行的,其读取速率较慢,因此,外挂程序存储设备需搭配相对复杂的Cache预取单元,需要较多的缓存单元,以及使用预测技术来维护高速缓存的存取和优先级,适用性较低;考虑到在特定场景下,系统的性能难以预料,具体到MCU微控制器,一般应用在低功耗、高性能、高实时性的场景,因此,在现有技术中,大多采用并行数据线的内嵌式Flash作为程序存储设备。
众所周知,内嵌式相较于外挂式程序存储器的读取速率有显著提高,但相对于高速的CPU运行频率,直接读取依然难以满足实际需求。目前的做法大多是加大Flash每次访问获取的数据位宽,同时,在处理器和Flash间加入预取控制,采用循环缓存的方式,保证顺序执行指令的性能提高。但是,上述方案存在一个缺陷,当预取的下一组指令需要缓存时,会造成部分循环指令被覆盖,需要重新读取,从而影响到循环指令的执行效率。
综上所述,现有技术中的缓存方案仍在存在执行效率较低的问题。
发明内容
为了解决现有技术中的上述技术缺陷,本发明提出了一种预取缓存控制方法,该方法包括:
获取处理器请求访问的第一指令组地址,若所述第一指令组地址未处于预设的预取缓存或记录缓存中,则在内存中获取与所述第一指令组地址对应的第一内容,其中,所述第一内容包括第一指令组;
将所述预取缓存中的第二内容更新到所述记录缓存,并将所述预取缓存中的第二内容更新为所述第一内容;
将所述第一指令组发送至所述处理器。
可选的,将所述预取缓存中的第二内容更新到所述记录缓存,并将所述预取缓存中的第二内容更新为所述第一内容,包括:
根据预先设置的多个指令组地址与多个所述预取缓存之间的对应关系,从多个所述预取缓存中确定与所述第一指令组地址对应的目标预取缓存;
将所述目标预取缓存中当前缓存的第二内容移动到所述记录缓存,并在所述目标预取缓存中写入所述第一内容。
可选的,所述获取处理器请求访问的指令组地址之后,所述方法还包括:
若所述第一指令组地址处于所述预取缓存或记录缓存中,则获取与所述第一指令组地址对应的第一指令组;
将所述第一指令组发送至所述处理器。
可选的,将所述第一指令组发送至所述处理器之后,所述方法还包括:
确定所述第一指令组地址的后继指令组地址;
若所述预取缓存或所述记录缓存中未缓存有所述后继指令组地址对应的第三内容,则在所述内存中读取所述第三内容;
将所述第三内容写入所述预取缓存。
可选的,将所述第三内容写入所述预取缓存,包括:
确定所述第三指令组地址所对应的目标预取缓存;
将所述目标预取缓存中当前缓存的内容移动到所述记录缓存,并在所述目标预取缓存中写入所述第三内容。
可选的,所述获取处理器请求访问的第一指令组地址之前,所述方法还包括:
将一个或多个指令缓存设置为所述预取缓存,以及,将一个或多个指令缓存设置为所述记录缓存。
可选的,所述获取处理器请求访问的第一指令组地址之后,所述方法还包括:
当所述第一指令组地址处于所述预取缓存或所述记录缓存中时,控制所述内存为休眠状态。
本发明还提出了一种预取缓存控制装置,该装置包括:
获取单元,用于获取处理器请求访问的第一指令组地址,若所述第一指令组地址未处于预设的预取缓存或记录缓存中,则在内存中获取与所述第一指令组地址对应的第一内容,其中,所述第一内容包括第一指令组;
更新单元,用于将所述预取缓存中的第二内容更新到所述记录缓存,并将所述预取缓存中的第二内容更新为所述第一内容;
发送单元,用于将所述第一指令组发送至所述处理器。
本发明还提出了一种芯片,该芯片包括如上所述的预取缓存控制装置。
本发明还提出了一种计算机可读存储介质,所述计算机可读存储介质上存储有预取缓存控制程序,所述预取缓存控制程序被处理器执行时实现如上所述的预取缓存控制方法的步骤。
本发明的有益效果在于,通过获取处理器请求访问的第一指令组地址,若所述第一指令组地址未处于预设的预取缓存或记录缓存中,则在内存中获取与所述第一指令组地址对应的第一内容,其中,所述第一内容包括第一指令组;将所述预取缓存中的第二内容更新到所述记录缓存,并将所述预取缓存中的第二内容更新为所述第一内容。实现了一种高效的预取缓存控制方案,避免了因循环指令被覆盖而需要重新读取,提高了连续指令和循环指令的读取效率。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明预取缓存控制方法的一实施例的流程示意图;
图2是本发明预取缓存控制方法的一实施例的预取缓存与指令地址的对应关系示意图;
图3是本发明预取缓存控制方法的一实施例的预取缓存更新前后的状态示意图;
图4是本发明预取缓存控制装置的一实施例的结构示意图;
图5是本发明预取缓存控制装置的一实施例的模块示意图。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
图1示出的是本发明预取缓存控制方法第一实施例的第一流程图,在本实施例中,提出了一种预取缓存控制方法,该方法包括:
S1、获取处理器请求访问的第一指令组地址,若所述第一指令组地址未处于预设的预取缓存或记录缓存中,则在内存中获取与所述第一指令组地址对应的第一内容,其中,所述第一内容包括第一指令组;
S2、将所述预取缓存中的第二内容更新到所述记录缓存,并将所述预取缓存中的第二内容更新为所述第一内容;
S3、将所述第一指令组发送至所述处理器。
需要说明的是,本实施例提出的预取缓存控制方法适用于以嵌入式Flash(闪存)作为非易失性存储设备的MCU(微控制单元)芯片,同时,还适用于其它具备缓存预取特性的缓存管控方案。例如,上述内存可以是Flash闪存,还可以是非易失器件类存储介质,例如,EEPROM(Electrically Erasable Programmable read only memory带电可擦可编程只读存储器)等。
在本实施例中,首先,获取处理器请求访问的第一指令组地址,其中,根据现有的预取缓存机制,为了提高指令组的读取效率,一方面,若处理器请求访问的指令组地址处于预取缓存中,则直接从预取缓存中读取该指令组地址对应的指令组,而若处理器请求访问的指令组未处于预取缓存中,则需要处理器从内存中读取该指令组地址对应的指令组。另一方面,当处理器当前读取的是循环指令组时,由于预取缓存采用循环缓存的方式,循环缓存已读取的指令组,因此,循环缓存会造成部分循环指令组被覆盖的情况,若循环指令组被覆盖,则需要重新读取被覆盖的指令组,由此看出,现有的预取缓存机制在处理循环指令组时,可能会出现重复读取的情况,影响了读取效率。在本实施例中,为了解决上述技术问题,针对处理器读取循环指令组的应用场景,在预取缓存的基础上设定记录缓存,通过预取缓存与记录缓存的协同作用,尽可能地避免上述循环指令组被覆盖的情况发生,从而提高循环指令组的读取效率。
具体的,在循环指令组中,确定处理器的访问请求所对应的请求对象,若该请求对象是第一指令组地址,则判断该第一指令组地址是否处于本实施例所设定的预取缓存或记录缓存中,若第一指令组地址处于预设的预取缓存或记录缓存中,则直接从预取缓存或记录缓存中读取该第一指令组地址对应的指令组,而若第一指令组地址未处于预设的预取缓存或记录缓存中,则在内存中获取与所述第一指令组地址对应的第一内容。此时,为了提高后续指令组的读取效率,将包括第一指令组地址和第一指令组的第一内容缓存至预设的预取缓存,通过预取缓存将第一指令组发送至处理器。而在缓存第一内容之前,将已处于该预设的预取缓存中的第二指令组地址和第二指令组更新到预设的记录缓存。由此,避免下一次请求对象是第二指令组地址时,第二指令组被第一指令组覆盖,而需要重新在内存中读取该第二指令组的情况发生,从而在一定程度上提高了循环指令组的读取效率。
由上述实施方案可知,在本实施例中,预设的预取缓存与记录缓存采取交替缓存和交替更新的方式,避免缓存内容被覆盖的情况发生,因此,本实施例的预取缓存控制方法适用于连续指令和循环指令时,缓存命中率更高,从而可以得到更高的读取效率。特别地,针对短循环指令时,指令组的读取效率可以得到进一步的提高。
可选的,为了设定与指令组相匹配的预取缓存方案,在一个实施例中,步骤S2包括:根据预先设置的多个指令组地址与多个所述预取缓存之间的对应关系,从多个所述预取缓存中确定与所述第一指令组地址对应的目标预取缓存。例如,从内存中读取指令地址和指令组,并根据指令地址将已读取的指令地址和指令组缓存到相应的预取缓存。作为一种实施方式,上述对应关系可根据预取缓存的个数(N)预先设置。例如,指令组I1,指令组I(N+1),指令组I(2N+1),……存放到预取缓存C1;指令组I2,指令组I(N+2),指令组I(2N+2),……存放到预取缓存C2;……;指令组I(N),指令组I(N+N),指令组I(2N+1),……存放到预取缓存C(N)。可以理解的是,为了尽可能地提高指令的读取效率,以及适配相应类型的指令读取需求,在本实施例中,多个指令组地址与多个所述预取缓存之间的对应关系由连续指令或循环指令的指令特征决定,该指令特征包括指令的连续性特征和循环特征。
可选的,在一个实施例中,将上述第一指令组发送至所述处理器之后,继续读取第一指令组地址的后继指令组地址。此时,按上述读取第一指令组的实施方案,同样地判断上述预取缓存或上述记录缓存中,是否缓存有该后继指令组地址对应的指令组,若上述预取缓存或上述记录缓存中缓存有该后继指令组地址对应的指令组,则无需更新预取缓存和记录缓存中的内容;而若上述预取缓存或上述记录缓存中,没有缓存该后继指令组地址对应的指令组,则在内存中读取该后继指令组地址对应的指令组,然后,根据上述指令组地址与目标预取缓存之间的对应关系,将该后继指令组地址和指令组写入上述预取缓存,以备处理器读取。
其中,后继指令组是第一指令组地址的后M位指令组地址所对应的指令组,其中M为小于或等于N的整数。可选的,后继指令组地址可以是一个指令组对应的地址,或者是多个连续或不连续指令组对应的地址。
可选的,在一个实施例中,将上述后继指令组地址和指令组写入上述预取缓存之前,需要确定该后继指令组地址对应的目标预取缓存,若该目标预取缓存与上述第一指令组所在的预取缓存不同,则将上述后继指令组地址和指令组写入上述目标预取缓存,而若该目标预取缓存与上述第一指令组所在的预取缓存相同,则由于上述预取缓存内已缓存上述第一指令组地址和第一指令组,而考虑到后续指令组读取过程中,该第一指令组可能属于连续指令或循环指令中的一组指令,因此,为了避免该第一指令组地址和第一指令组被后继指令组地址和指令组覆盖,第一指令组地址和第一指令组在后续读取过程中需要被重复读取造成读取效率降低的情况发生,在本实施例中,将上述后继指令组地址和指令组写入上述预取缓存之前,首先,将上述预取缓存内已缓存的内容转移至记录缓存,然后,将上述第三内容写入上述预取缓存,上述第三内容包括第三指令组地址和第三指令组。
其中,上述预取缓存内已缓存的内容可以是前述的第一内容、第二内容或其他内容。
可选的,由上述实施方案可知,通过在一个预取缓存和一个记录缓存之间的交替缓存,在当处理器读取连续指令或循环指令时,较大地提高了指令的读取效率,因此,为了进一步提高预取缓存与记录缓存的协同工作效率,在本实施例中,将一个或多个指令缓存设置为所述预取缓存,以及,将一个或多个指令缓存设置为所述记录缓存。
在一个实施例中,当预取缓存与记录缓存协同工作时,可减少对内存的访问次数,从而可适当地降低内存的功耗。为了进一步降低内存功耗,上述缓存控制方法还包括:若当前待读取的指令组地址处于上述预取缓存或上述记录缓存中时,控制该内存为休眠状态。其中,控制该内存为休眠状态包括:若内存当前处于休眠状态,且当前待读取的指令组地址处于上述预取缓存或上述记录缓存中时,则维持内存处于休眠状态;若内存当前处于工作状态,且当前待读取的指令组地址处于上述预取缓存或上述记录缓存中时,则控制内存进入休眠状态。
相应地,上述缓存控制方法还包括:当前待读取的指令组地址未处于上述预取缓存或上述记录缓存中时,则控制内存为工作状态。具体地,若内存当前处于休眠状态,且当前待读取的指令组地址未处于上述预取缓存或上述记录缓存中时,则控制内存进入工作状态;若内存当前处于工作状态,且当前待读取的指令组地址未处于上述预取缓存或上述记录缓存中时,则维持内存处于工作状态。
其中,当前待读取的指令组地址为处理器当前请求访问的指令组地址。
图2示出的是本发明预取缓存控制方法的一实施例的预取缓存与指令地址的对应关系示意图,基于上述缓存控制方法,在本实施例中,以2个预取缓存(n=2),每个指令组包含2条指令(m=2)为例作相应的说明。
以顺序代码序列为例:
预取缓存包括图2左侧的预取缓存C1以及图2右侧的预取缓存C2,连续执行顺序代码序列时,分别地,由预取缓存C1和预取缓存C2交替缓存指令组I1至指令组I8;
以两种循环代码序列为例:
第一种代码序列:指令组I0,指令组I1,指令组I2,指令组I3,指令组I4,指令组I5,指令组I0,指令组I1,指令组I2,指令组I3,指令组I4,指令组I5……
第二种代码序列:指令组I0,指令组I1,指令组I2,指令组I3,指令组I0,指令组I1,指令组I2,指令组I3……
当执行上述两种循环代码序列时,参考如图3示出的本发明预取缓存控制方法第一实施例的预取缓存更新示意图,其中:
若采用传统的缓存方法,由于缓存中的指令组被不断覆盖掉,因此第二种代码序列的执行结果为:指令组I0,指令组I1,指令组I2,指令组I3,等待,指令组I0,指令组I1,指令组I2,指令组I3……;
而根据本申请的缓存控制方法,则在读取第二种代码序列的过程中,首先,预取缓存C1写入指令组I0和指令组I1,然后,预取缓存C2写入指令组I2和指令组I3,此时,预取缓存C1和预取缓存C2中,已完成对上述指令组I0,指令组I1,指令组I2,指令组I3的缓存,此时,在读取第二种代码序列时,即可实现指令组I0,指令组I1,指令组I2,指令组I3的连续循环读取,与此同时,在读取第一种代码序列的过程中,由于预取缓存C1和预取缓存C2中,已完成对上述指令组I0,指令组I1,指令组I2,指令组I3的缓存,因此,直接从预取缓存C1和预取缓存C2中读取第一种代码序列前段的指令组I0,指令组I1,指令组I2,指令组I3,当读取第一种代码序列后段的指令组I4和指令组I5时,由于指令组I4和指令组I5不存在于预取缓存C1和预取缓存C2中,同时,指令组I4和指令组I5也不存在于记录缓存中,则处理器从闪存中读取得到相应的指令组I4和指令组I5,根据指令组与预取缓存的对应关系,将从闪存中读取得到相应的指令组I4和指令组I5写入预取缓存C1,由于预取缓存C1中已缓存上述指令组I0和指令组I1,因此,为了避免在读取第二种代码序列时,上述指令组I0和指令组I1被指令组I4和指令组I5覆盖而又需重新读取,在本实施例中,在从闪存中读取得到相应的指令组I4和指令组I5写入预取缓存C1之前,将预取缓存C1中已缓存上述指令组I0和指令组I1写入本实施例的记录缓存,然后,再将从闪存中读取得到相应的指令组I4和指令组I5写入预取缓存C1,由此,在循环读取第二种代码序列时,不会对第一种代码序列中的指令组I4和指令组I5的预取造成影响,也能保证第二种代码序列中的指令组I0,指令组I1,指令组I2,指令组I3按此循环特性无等待执行。
本实施例的有益效果在于,通过获取处理器请求访问的第一指令组地址,若所述第一指令组地址未处于预设的预取缓存或记录缓存中,则在内存中获取与所述第一指令组地址对应的第一内容,其中,所述第一内容包括第一指令组;将所述预取缓存中的第二内容更新到所述记录缓存,并将所述预取缓存中的第二内容更新为所述第一内容。实现了一种高效的预取缓存控制方案,避免了因循环指令被覆盖而需要重新读取,提高了连续指令和循环指令的读取效率。
如图4示出的是本发明预取缓存控制装置的一实施例的结构示意图。本发明还提出了一种预取缓存控制装置100,该装置包括:
获取单元10,用于获取处理器请求访问的第一指令组地址,若所述第一指令组地址未处于预设的预取缓存或记录缓存中,则在内存中获取与所述第一指令组地址对应的第一内容,其中,所述第一内容包括第一指令组;
更新单元20,用于将所述预取缓存中的第二内容更新到所述记录缓存,并将所述预取缓存中的第二内容更新为所述第一内容;
发送单元30,用于将所述第一指令组发送至所述处理器。
在一个实施例中,更新单元20包括目标预取缓存设置单元和目标预取缓存处理单元,其中:
上述目标预取缓存设置单元用于,根据预先设置的多个指令组地址与多个所述预取缓存之间的对应关系,从多个所述预取缓存中确定与所述第一指令组地址对应的目标预取缓存;
上述目标预取缓存处理单元用于,将所述目标预取缓存中当前缓存的第二内容移动到所述记录缓存,并在所述目标预取缓存中写入所述第一内容。
在一个实施例中,上述获取单元10还包括第一指令组获取单元,第一指令组获取单元用于,若所述第一指令组地址处于所述预取缓存或记录缓存中,则获取与所述第一指令组地址对应的第一指令组;
上述发送单元30包括第一指令组发送单元,第一指令组发送单元用于,将所述第一指令组发送至所述处理器。
在一个实施例中,上述获取单元10还包括后继指令组地址获取单元、第三内容获取单元,上述更新单元20还包括第三内容写入单元,其中:
上述后继指令组地址获取单元用于,确定所述第一指令组地址的后继指令组地址;
上述第三内容获取单元用于,若所述预取缓存或所述记录缓存中未缓存有所述后继指令组地址对应的第三内容,则在所述内存中读取所述第三内容;
上述第三内容写入单元用于,将所述第三内容写入所述预取缓存。
在一个实施例中,上述目标预取缓存处理单元还用于,根据所述对应关系确定所述第三指令组地址所对应的目标预取缓存;
上述目标预取缓存处理单元还用于,将所述目标预取缓存中当前缓存的第一内容移动到所述记录缓存,并在所述目标预取缓存中写入所述第三内容。
在一个实施例中,该装置还包括设置单元,设置单元用于,将一个或多个指令缓存设置为所述预取缓存,以及,将一个或多个指令缓存设置为所述记录缓存。
在一个实施例中,该装置还包括功控单元,功控单元用于,当所述第一指令组地址处于所述预取缓存或所述记录缓存中时,控制所述内存为休眠状态。
在一个实施例中,为了进一步说明预取缓存与记录缓存的协同关系和相应的工作流,将通过图5示出的本发明预取缓存控制装置另一实施例的模块示意图作出相应的说明。该工作流涉及指令缓存模块101、地址及更新控制模块102、功耗管理模块103、Flash(内存)104以及处理器105,其中,指令缓存模块101包括至少一个预取缓存和至少一个记录缓存。具体的:
指令缓存模块101由“预取缓存+记录缓存”组成,图5以指令缓存模块101包括n个预取缓存和1个记录缓存为例,其中,每个指令缓存可存储的内容包括地址和指令组。指令组中的指令个数m为单次访问Flash104获取的指令数。预取缓存用于存储从Flash104读取的指令组和该指令组的地址,记录缓存用于存储被更新的预取缓存的地址和指令组。需要说明的是,指令缓存模块101响应处理器105的指令访问请求之前,将处理器105请求访问的指令地址与预取缓存和记录缓存中的地址项进行比较,比对一致则视为命中。若命中,则从指令缓存模块101中读取指令并发送给处理器105;若未命中,则指示处理器105处于等待状态,并从Flash104中读取与该请求访问的指令地址对应的指令组,将从Flash104读取到的指令组发送至处理器105;
地址及更新控制模块102,其工作流为,根据处理器105请求访问的指令地址,控制对Flash104的读取地址,并管理缓存更新。例如,若处理器105所需的指令地址在指令缓存模块101中时,无需从Flash104中读取该指令地址对应的指令组,而若处理器105所需的指令地址不在指令缓存模块101中时,从Flash104中读取该指令地址的指令组。可以理解的是,在本实施例中,每次从Flash104中读取指令组之后,将根据读取的指令组地址,选择本次需要更新的预取缓存。由此,当某个预取缓存被更新的同时,记录缓存也被更新以存储预取缓存中被更新的内容;
功耗管理模块103,其工作流为,若当前待读取的指令组地址处于上述预取缓存或上述记录缓存中时,控制该Flash104为休眠状态。
本发明还提出了一种预取缓存控制芯片,所述芯片包括如上所述的预取缓存控制装置。
本发明还提出了一种计算机可读存储介质,所述计算机可读存储介质上存储有预取缓存控制程序,所述预取缓存控制程序被处理器执行时实现如上任一实施例所述的预取缓存控制方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (10)
1.一种预取缓存控制方法,其特征在于,所述方法包括:
获取处理器请求访问的第一指令组地址,若所述第一指令组地址未处于预设的预取缓存或记录缓存中,则在内存中获取与所述第一指令组地址对应的第一内容,其中,所述第一内容包括第一指令组;
将所述预取缓存中的第二内容更新到所述记录缓存,并将所述预取缓存中的第二内容更新为所述第一内容;
将所述第一指令组发送至所述处理器。
2.根据权利要求1所述的预取缓存控制方法,其特征在于,将所述预取缓存中的第二内容更新到所述记录缓存,并将所述预取缓存中的第二内容更新为所述第一内容,包括:
根据预先设置的多个指令组地址与多个所述预取缓存之间的对应关系,从多个所述预取缓存中确定与所述第一指令组地址对应的目标预取缓存;
将所述目标预取缓存中当前缓存的第二内容移动到所述记录缓存,并在所述目标预取缓存中写入所述第一内容。
3.根据权利要求1所述的预取缓存控制方法,其特征在于,所述获取处理器请求访问的指令组地址之后,所述方法还包括:
若所述第一指令组地址处于所述预取缓存或记录缓存中,则获取与所述第一指令组地址对应的第一指令组;
将所述第一指令组发送至所述处理器。
4.根据权利要求1或3所述的预取缓存控制方法,其特征在于,将所述第一指令组发送至所述处理器之后,所述方法还包括:
确定所述第一指令组地址的后继指令组地址;
若所述预取缓存或所述记录缓存中未缓存有所述后继指令组地址对应的第三内容,则在所述内存中读取所述第三内容;
将所述第三内容写入所述预取缓存。
5.根据权利要求4所述的预取缓存控制方法,其特征在于,所述第三内容包括第三指令组地址;
将所述第三内容写入所述预取缓存,包括:
确定所述第三指令组地址所对应的目标预取缓存;
将所述目标预取缓存中当前缓存的内容移动到所述记录缓存,并在所述目标预取缓存中写入所述第三内容。
6.根据权利要求1至3任一项所述的预取缓存控制方法,其特征在于,所述获取处理器请求访问的第一指令组地址之前,所述方法还包括:
将一个或多个指令缓存设置为所述预取缓存,以及,将一个或多个指令缓存设置为所述记录缓存。
7.根据权利要求1所述的预取缓存控制方法,其特征在于,所述获取处理器请求访问的第一指令组地址之后,所述方法还包括:
当所述第一指令组地址处于所述预取缓存或所述记录缓存中时,控制所述内存为休眠状态。
8.一种预取缓存控制装置,其特征在于,所述预取缓存控制装置包括:
获取单元,用于获取处理器请求访问的第一指令组地址,若所述第一指令组地址未处于预设的预取缓存或记录缓存中,则在内存中获取与所述第一指令组地址对应的第一内容,其中,所述第一内容包括第一指令组;
更新单元,用于将所述预取缓存中的第二内容更新到所述记录缓存,并将所述预取缓存中的第二内容更新为所述第一内容;
发送单元,用于将所述第一指令组发送至所述处理器。
9.一种芯片,其特征在于,所述芯片包括如权利要求8所述的预取缓存控制装置。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有预取缓存控制程序,所述预取缓存控制程序被处理器执行时实现如权利要求1-7任一项所述的预取缓存控制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910701880.8A CN110442382B (zh) | 2019-07-31 | 2019-07-31 | 预取缓存控制方法、装置、芯片以及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910701880.8A CN110442382B (zh) | 2019-07-31 | 2019-07-31 | 预取缓存控制方法、装置、芯片以及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110442382A CN110442382A (zh) | 2019-11-12 |
CN110442382B true CN110442382B (zh) | 2021-06-15 |
Family
ID=68432555
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910701880.8A Active CN110442382B (zh) | 2019-07-31 | 2019-07-31 | 预取缓存控制方法、装置、芯片以及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110442382B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159062B (zh) * | 2019-12-20 | 2023-07-07 | 海光信息技术股份有限公司 | 一种缓存数据的调度方法、装置、cpu芯片及服务器 |
CN111475203B (zh) * | 2020-04-03 | 2023-03-14 | 小华半导体有限公司 | 一种用于处理器的指令读取方法以及相应的处理器 |
CN111782272B (zh) * | 2020-07-16 | 2022-08-19 | 中国人民解放军国防科技大学 | 一种vliw处理器中重复程序的执行控制方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1410893A (zh) * | 2002-04-09 | 2003-04-16 | 智慧第一公司 | 具有预取指令的微处理器及预取至其高速缓存的方法 |
CN103338272A (zh) * | 2013-07-23 | 2013-10-02 | 星云融创(北京)信息技术有限公司 | 一种内容分发网络及其缓存实现方法 |
CN103533366A (zh) * | 2012-07-03 | 2014-01-22 | 展讯通信(上海)有限公司 | 用于视频运动补偿的缓存方法与装置 |
CN105074655A (zh) * | 2013-01-21 | 2015-11-18 | 高通股份有限公司 | 用于取消对循环的数据预取请求的方法和设备 |
CN105608020A (zh) * | 2015-12-09 | 2016-05-25 | 上海兆芯集成电路有限公司 | 主机接口控制器以及储存装置控制方法 |
CN106294212A (zh) * | 2010-06-23 | 2017-01-04 | 英特尔公司 | 用于精确预测存储器存取的基于区域的技术 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101002169A (zh) * | 2004-05-19 | 2007-07-18 | Arc国际(英国)公司 | 微处理器架构 |
US20100191943A1 (en) * | 2009-01-26 | 2010-07-29 | Agere Systems Inc. | Coordination between a branch-target-buffer circuit and an instruction cache |
CN102163144A (zh) * | 2011-05-05 | 2011-08-24 | 浙江大学 | 嵌入式处理器的硬件数据预取方法 |
US9971693B2 (en) * | 2015-05-13 | 2018-05-15 | Ampere Computing Llc | Prefetch tag for eviction promotion |
-
2019
- 2019-07-31 CN CN201910701880.8A patent/CN110442382B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1410893A (zh) * | 2002-04-09 | 2003-04-16 | 智慧第一公司 | 具有预取指令的微处理器及预取至其高速缓存的方法 |
CN106294212A (zh) * | 2010-06-23 | 2017-01-04 | 英特尔公司 | 用于精确预测存储器存取的基于区域的技术 |
CN103533366A (zh) * | 2012-07-03 | 2014-01-22 | 展讯通信(上海)有限公司 | 用于视频运动补偿的缓存方法与装置 |
CN105074655A (zh) * | 2013-01-21 | 2015-11-18 | 高通股份有限公司 | 用于取消对循环的数据预取请求的方法和设备 |
CN103338272A (zh) * | 2013-07-23 | 2013-10-02 | 星云融创(北京)信息技术有限公司 | 一种内容分发网络及其缓存实现方法 |
CN105608020A (zh) * | 2015-12-09 | 2016-05-25 | 上海兆芯集成电路有限公司 | 主机接口控制器以及储存装置控制方法 |
Non-Patent Citations (1)
Title |
---|
高性能低功耗FT-XDSP的指令缓存队列;杨惠,孙永节;《小型微型计算机系统》;20100715;1350-1354 * |
Also Published As
Publication number | Publication date |
---|---|
CN110442382A (zh) | 2019-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9996466B2 (en) | Apparatus, system and method for caching compressed data | |
CN110442382B (zh) | 预取缓存控制方法、装置、芯片以及计算机可读存储介质 | |
US8285940B2 (en) | Method and apparatus for high speed cache flushing in a non-volatile memory | |
US8639883B2 (en) | Reducing write amplification in a cache with flash memory used as a write cache | |
US7165144B2 (en) | Managing input/output (I/O) requests in a cache memory system | |
US6782454B1 (en) | System and method for pre-fetching for pointer linked data structures | |
JP2011530133A (ja) | キャッシュコンテンツの記憶管理 | |
JP2005115910A (ja) | シリアルフラッシュメモリにおけるxipのための優先順位に基づくフラッシュメモリ制御装置及びこれを用いたメモリ管理方法、これによるフラッシュメモリチップ | |
JP2008502069A (ja) | メモリ・キャッシュ制御装置及びそのためのコヒーレンシ動作を実行する方法 | |
US6668307B1 (en) | System and method for a software controlled cache | |
US11132145B2 (en) | Techniques for reducing write amplification on solid state storage devices (SSDs) | |
US8667223B2 (en) | Shadow registers for least recently used data in cache | |
US11593268B2 (en) | Method, electronic device and computer program product for managing cache | |
US10025706B2 (en) | Control device, storage device, and storage control method | |
CN113407119A (zh) | 数据预取方法、数据预取装置、处理器 | |
US20120047330A1 (en) | I/o efficiency of persistent caches in a storage system | |
US9778858B1 (en) | Apparatus and method for scatter gather list handling for an out of order system | |
US10915454B2 (en) | Memory device and cache control method | |
KR20100005539A (ko) | 캐시 메모리 시스템 및 캐시의 프리페칭 방법 | |
EP4170506A1 (en) | Systems, methods, and devices for ordered access of data in block modified memory | |
US11449428B2 (en) | Enhanced read-ahead capability for storage devices | |
KR20220033976A (ko) | 저장 디바이스들에 대한 강화된 선판독 능력 | |
EP4034995A1 (en) | Circuitry and method | |
CN117032594B (zh) | 一种读命令调度方法、处理方法、装置及存储设备 | |
KR101847861B1 (ko) | 컴퓨팅 장치, 스토리지 장치 및 데이터 관리 방법 |
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 |