CN113934653B - 一种嵌入式系统的Cache实现方法和装置 - Google Patents
一种嵌入式系统的Cache实现方法和装置 Download PDFInfo
- Publication number
- CN113934653B CN113934653B CN202111081557.9A CN202111081557A CN113934653B CN 113934653 B CN113934653 B CN 113934653B CN 202111081557 A CN202111081557 A CN 202111081557A CN 113934653 B CN113934653 B CN 113934653B
- Authority
- CN
- China
- Prior art keywords
- request
- prefetch
- fetch
- prefatch
- data
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例公开了一种嵌入式系统的Cache实现方法和装置,Cache中的每组buffer由单独的状态机控制,该buffer包括:Fetch buffer和PreFetch buffer,并且一组Fetch buffer对应一组PreFetch buffer;该方法包括:发生Read Cache miss时,或当连续发生多次Read Cache hit,且多次Read Cache hit的地址连续时,触发PreFetch FSM,执行PreFetch操作。通过该实施例方案,在不过度增加Cache容量的情况下,提高了Cache命中率。
Description
技术领域
本文涉及数据存储技术,尤指一种嵌入式系统的Cache实现方法和装置。
背景技术
Cache是一种高速缓存,它主要介于CPU(中央处理器)和存储器之间,用于提高CPU的运行效率。Cache的命中率作为衡量Cache性能的重要指标,一般可以通过增大Cache容量、增加Cache级数提高命中率,但这些方法同样增加了系统面积、功耗和设计复杂度。
发明内容
本申请实施例提供了一种嵌入式系统的Cache实现方法和装置,能够在不过度增加Cache容量的情况下,提高Cache命中率。
本申请实施例提供了一种嵌入式系统的Cache实现方法,Cache中的每一组缓存器buffer由单独的状态机控制,所述buffer可以包括:提取缓冲器Fetch buffer和预取缓冲器PreFetch buffer,并且一组Fetch buffer对应一组PreFetch buffer;所述Fetchbuffer由提取有限状态机Fetch FSM控制,所述PreFetch buffer由预取有限状态机PreFetch FSM控制;所述方法可以包括:
当发生读取高速缓存失败Read Cache miss时,或者,当连续发生多次读取高速缓存命中Read Cache hit,且该多次Read Cache hit的地址连续时,触发所述PreFetch FSM,并执行预取PreFetch操作;其中,被触发后的PreFetch FSM中的预取请求PreFetchrequest设置有请求优先权Request priority。
在本申请的示例性实施例中,触发所述PreFetch FSM,并执行预取PreFetch操作,可以包括:
将所述PreFetch FSM由空闲Idle状态跳转到预取请求PreFetReq状态,记录预取地址PreFetch address;
将所述PreFetch request发送到请求队列Request queue中,并将当前PreFetchrequest对应的Request priority的优先级标记为第一标识,并且所述PreFetch FSM由所述PreFetReq状态跳转到预取数据PreFetData状态,等待数据data返回。
在本申请的示例性实施例中,当发生所述Read Cache miss时:
PreFetch address=miss address+cacheline size*N,N<=M,其中,missaddress是指失败地址,cacheline size是指一行缓存的容量大小,M代表PreFetch长度,N代表预取循环PreFetch loop次数,N为正整数,从1递增到M;
当连续发生多次所述Read Cache hit,且该多次所述Read Cache hit的地址连续时:
PreFetch address=hit address+cacheline size*N(N<=M),其中,hitaddress为命中地址。
在本申请的示例性实施例中,当发生所述Read Cache miss时,所述方法还可以包括:触发所述Fetch FSM,并执行提取Fetch操作;
其中,触发所述Fetch FSM,并执行提取Fetch操作,包括:
将所述Fetch FSM由所述Idle状态跳转到提取请求FetReq状态,并记录所述missaddress;
将提取请求Fetch request发送到所述Request queue中,并将所述Fetchrequest对应的Request priority的优先级标记为第二标识,将所述Fetch FSM由FetReq状态跳转到提取数据FetData状态,等待data返回;所述第二标识代表的优先级等级高于所述第一标识代表的优先级等级。
在本申请的示例性实施例中,所述方法还可以包括:
当所述Data返回后,根据返回的请求身份标识Reqest ID将返回的Data回填到所述Fetch buffer或所述PreFetch buffer中;
其中,所述Reqest ID用于区分返回的Data为提取请求数据Fetch request data或预取请求数据PreFetch request data。
在本申请的示例性实施例中,当返回的Data为Fetch request data时,所述根据返回的请求身份标识Reqest ID将返回的Data回填到所述Fetch buffer或所述PreFetchbuffer中,可以包括:
将返回的Data回填到所述Fetch buffer中;
将所述Request queue中对应的所述Fetch request的入口撤销;
将所述Fetch FSM由提取数据FetData状态跳转到缓冲填充CacheFill状态,并准备将所述data写入高速缓冲存储器Cache RAM。
在本申请的示例性实施例中,当返回的Data为PreFetch request data时,所述根据返回的请求身份标识Reqest ID将返回的Data回填到所述Fetch buffer或所述PreFetchbuffer中,可以包括:
61、将返回的Data回填到所述PreFetch buffer中;
62、将所述Request queue中对应的所述PreFetch request的入口撤销;
63、将N的值加1,并判断是否满足N<=M,当满足N<=M时,使用新的N值计算出新的PreFetch address;
64、将所述PreFetch FSM由预取数据PreFetData状态跳转到预取请求PreFetReq状态,将PreFetch request发送到所述Request queue中,并将当前PreFetch request对应的Request priority的优先级标记为第一标识,并且所述PreFetch FSM由所述PreFetReq状态跳转到预取数据PreFetData状态,等待data返回;
65、重复步骤61-64,直至新的Read Cache miss发生或者N>M,停止所述PreFetch操作。
在本申请的示例性实施例中,所述方法还可以包括:
当在PreFetch操作过程中发生新的Read Cache miss,并且所述新的Read Cachemiss在所述Request queue中未命中PreFetch request时,扫描所述Request queue,当扫描出存在未派发的PreFetch request时,则将所述未派发的PreFetch request撤销;当扫描出已经派发的PreFetch request,则将所述已经派发的PreFetch request保留;
触发所述Fetch FSM,并执行所述Fetch操作;以及,触发所述PreFetch FSM,并执行所述PreFetch操作。
在本申请的示例性实施例中,所述方法还可以包括:
当在PreFetch操作过程中发生新的Read Cache miss,并且所述新的Read Cachemiss在所述Request queue中命中PreFetch request时,被命中的PreFetch request自动提高优先级,并转化为Fetch request,所述Request queue优先对转化成的Fetch request进行处理,且下一级存储对该转化成的Fetch request优先返回Data;
将所述PreFetch FSM由所述Idle状态跳转到所述PreFetReq状态,记录所述PreFetch address;
当所述Data返回后,根据返回的请求身份标识Reqest ID回填到所述Fetchbuffer或所述PreFetch buffer中。
本申请实施例还提供了一种嵌入式系统的Cache实现装置,可以包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令被所述处理器执行时,实现上述任意一项所述的嵌入式系统的Cache实现方法。
与相关技术相比,本申请实施例可以包括:Cache中的每一组缓存器buffer由单独的状态机控制,所述buffer可以包括:提取缓冲器Fetch buffer和预取缓冲器PreFetchbuffer,并且一组Fetch buffer对应一组PreFetch buffer;所述Fetch buffer由提取有限状态机Fetch FSM控制,所述PreFetch buffer由预取有限状态机PreFetch FSM控制;所述方法可以包括:当发生读取高速缓存失败Read Cache miss时,或者,当连续发生多次读取高速缓存命中Read Cache hit,且该多次Read Cache hit的地址连续时,触发所述PreFetch FSM,并执行预取PreFetch操作;其中,被触发后的PreFetch FSM中的预取请求PreFetch request设置有请求优先权Request priority。通过该实施例方案,在不过度增加Cache容量的情况下,提高了Cache命中率。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的其他优点可通过在说明书以及附图中所描述的方案来实现和获得。
附图说明
附图用来提供对本申请技术方案的理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为本申请实施例的嵌入式系统的Cache实现方法流程图;
图2为本申请实施例的Cache PreFetch机制结构示意图;
图3为本申请实施例的Fetch FSM触发后的Fetch操作示意图;
图4为本申请实施例的PreFetch FSM触发后的PreFetch操作示意图;
图5为本申请实施例的嵌入式系统的Cache实现装置组成框图。
具体实施方式
本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本申请实施例的精神和范围内。
本申请实施例提供了一种嵌入式系统的Cache实现方法,Cache中的每一组buffer(缓存器)由单独的状态机控制,所述buffer可以包括:Fetch buffer(提取缓冲器)和PreFetch buffer(预取缓冲器),并且一组Fetch buffer对应一组PreFetch buffer;所述Fetch buffer由Fetch FSM(提取有限状态机)控制,所述PreFetch buffer由PreFetch FSM(预取有限状态机)控制;如图1所示,所述方法可以包括步骤S101:
S101、当发生Read Cache miss(读取高速缓存失败)时,或者,当连续发生多次Read Cache hit(读取高速缓存命中),且该多次Read Cache hit的地址连续时,触发所述PreFetch FSM,并执行预取PreFetch操作;其中,被触发后的PreFetch FSM中的PreFetchrequest(预取请求)设置有Request priority(请求优先权)。
在本申请的示例性实施例中,提出了一种针对嵌入式系统的高性能CachePrefetch(高速缓存预取)机制提高Cache(高速缓存)命中率,该Prefetch机制不会过度增加Cache容量,却可以获得可观的性能提升。
嵌入式系统一般引入的Cache Prefetch(高速缓存预取)机制都只由Cache miss(高速缓存失败)触发连续的读写,且会Fill Cacheline(填充缓存行)。本申请实施例提出的Cache Prefetch机制,是由独立的状态机控制,并且hit(命中)和miss(失败)均可以触发Prefetch(预取)工作。考虑到Prefetch机制可能会影响正常Fetch(提取),该机制引入Request priority(请求优先权),能够在hit Request queue(命中请求队列)时,增加request(请求)的priority(优先级),保证下一级存储优先返回数据。Request queue(请求队列)每个entry(入口)会带有优先级,分为两类:一类是需要下一级存储立即返回的fetchrequest(提取请求);一类是可以被Fetch request(提取请求)插队的PreFetch request(预取请求)。所有被标记为高优先级的请求,都会优先从Request queue中dispatch(迅速处理),且下一级存储会优先返回Data(数据)。
在本申请的示例性实施例中,下面给出一个是实例案例。
在本申请的示例性实施例中,如图1所示,每一组buffer(缓存器)由单独的状态机控制,如果再增加一组buffer,同样增加一组状态机。注意,一组Fetch buffer(提取缓存器)对应一组PreFetch buffer(预取缓存器)。图2以一个Fetch buffer和一个PreFetchbuffer为例进行说明,两者产生的data request(数据请求)都会由Request queue统一保存,并下发到下一级存储。
在本申请的示例性实施例中,可以利用PC(程序计数器)向Cache请求数据,根据PC低位bit(比特)会对cache RAM(高速缓存存储器)进行index(索引),高位bit作为tag(标签)。
在本申请的示例性实施例中,结合以上结构,下面对本申请实施例的方案做详细介绍:
1、初始状态,当发生一笔Read Cache miss(读取高速缓存失败),会触发以下事件:
1)将所述Fetch FSM由所述Idle状态跳转到提取请求FetReq状态,并记录missaddress(失败地址);
2)将这笔miss(失败)对应的提取请求Fetch request发送到所述Request queue中,并将所述Fetch request对应的Request priority的优先级标记为第二标识(标记为高),将所述Fetch FSM由FetReq状态跳转到提取数据FetData状态,等待data(数据)返回;如图3所示;
3)同时触发所述PreFetch FSM由Idle(空闲)状态跳转到PreFetReq(预取请求)状态,记录PreFetch address(预取地址);
PreFetch address=miss address+cacheline size*N,N<=M,其中,missaddress是指失败地址,cacheline size是指一行缓存的容量大小,M代表PreFetch长度,N代表预取循环PreFetch loop次数,N为正整数,从1递增到M;
4)将这笔PreFetch request发送到Request queue(请求队列)中,并将当前PreFetch request对应的Request priority的优先级标记为第一标识(标记为低),并且所述PreFetch FSM由所述PreFetReq状态跳转到PreFetData(预取数据)状态,等待data(数据)返回,如图4所示;其中,所述第一标识代表的优先级等级低于所述第二标识代表的优先级等级;
5)当所述Data返回后,根据返回的Reqest ID(请求身份标识)将所述Data回填到所述Fetch buffer或所述PreFetch buffer中(其中,所述Reqest ID用于区分返回的Data为提取请求数据Fetch request data或预取请求数据PreFetch request data):
A、当返回的Data为Fetch request data(提取请求数据)时,根据返回的ReqestID(请求身份标识)将所述Data回填到所述Fetch buffer中,可以包括触发以下事件:
a1)将返回的Data回填到所述Fetch buffer中;
b1)并且将所述Request queue中对应的Fetch request entry retire(提取请求入口撤销);
c1)将所述Fetch FSM由FetData(提取数据)状态跳转到CacheFill(缓冲填充)状态,并准备将所述data写入Cache RAM(高速缓冲存储器)。
B、当返回的Data为PreFetch request data(预取请求数据)时,根据返回的Reqest ID(请求身份标识)将所述Data回填到所述PreFetch buffer中,可以包括触发以下事件:
a2)将返回的Data回填到所述PreFetch buffer中;
b2)并将所述Request queue中对应的PreFetch request entry retire(预取请求入口撤销);
c2)将N的值加1,并判断是否满足N<=M,当满足N<=M时,使用新的N值计算出新的PreFetch address;
d2)将所述PreFetch FSM由PreFetData(预取数据)状态跳转到PreFetReq(预取请求)状态,然后重复上述的步骤1中的第4)步骤(即,将PreFetch request发送到所述Request queue中,并将当前PreFetch request对应的Request priority的优先级标记为第一标识,并且所述PreFetch FSM由所述PreFetReq状态跳转到PreFetData状态)等待PreFetch request data返回;
e2)重复步骤a2)-d2),直至新的Read Cache miss发生或者N>M,停止PreFetch操作。
2、当连续X(X为大于1的正整数)笔Read Cache hit(读取高速缓存命中),且该X笔地址连续,则触发以下事件:
1)将所述PreFetch FSM由空闲Idle状态跳转到预取请求PreFetReq状态,记录预取地址PreFetch address;这里将hit address(命中地址)作为基地址,计算出PreFetchaddress;
PreFetch address=hit address+cacheline size*N(N<=M);其中,missaddress是指失败地址,cacheline size是指一行缓存的容量大小,M代表PreFetch长度,N代表预取循环PreFetch loop次数,N为正整数,从1递增到M;
2)将所述PreFetch request发送到请求队列Request queue中,并将当前PreFetch request对应的Request priority的优先级标记为第一标识(标记为低),并且所述PreFetch FSM由所述PreFetReq(预取请求)状态跳转到PreFetData(预取数据)状态,等待data返回。
3)执行上述步骤1中的第5)步的B步骤中的全部内容。
3、当在PreFetch操作过程中发生一笔新的Read Cache miss,并且所述新的ReadCache miss没有hit request queue(命中请求队列)时,触发以下事件:
1)扫描所述Request queue(请求队列),当扫描出存在未dispatch(迅速处理、派发)的PreFetch request时,则将所述未派发的PreFetch request Kill(撤销);当扫描出已经派发的PreFetch request,则将所述已经派发的PreFetch request保留;
2)后续执行上述的步骤1中的全部内容(即触发所述Fetch FSM,并执行所述Fetch操作;以及,触发所述PreFetch FSM,并执行所述PreFetch操作)。
4、当在PreFetch操作过程中发生新的Read Cache miss,并且所述新的ReadCache miss在所述Request queue中命中一笔PreFetch request时,触发以下事件:
1)被命中的PreFetch request自动提高优先级,并转化为Fetch request,所述Request queue优先对转化成的Fetch request进行dispatch(处理、派发),且下一级存储对该转化成的Fetch request优先返回Data;
2)并且触发所述PreFetch FSM由所述Idle状态跳转到所述PreFetReq状态,记录所述PreFetch address;PreFetch address=miss address+cacheline size*N,N<=M,其中,miss address是指失败地址,cacheline size是指一行缓存的容量大小,M代表PreFetch长度,N代表预取循环PreFetch loop次数,N为正整数,从1递增到M;
3)后续执行上述的步骤1中的步骤5)中的全部内容(即,当所述Data返回后,根据返回的请求身份标识Reqest ID将所述Data回填到所述Fetch buffer或所述PreFetchbuffer中)
在本申请的示例性实施例中,至少包括以下有益效果:
1、Fetch buffer和PreFetch buffer由各自独立的FSM(有限状态机)管理,且buffer与FSM一一对应,增加Fetch buffer数量可记录多笔miss address,互不干扰,Fetchbuffer数量可自定义;写入request(队列)时会分配不同request ID(队列身份标识)和优先级,以提高效率。每个Fetch buffer深度只能为1,PreFetch buffer深度可自定义,且PreFetch buffer深度决定了PreFetch长度。
2、与传统的Cache仅在miss(失败)时才触发PreFetch机制不同,本机制在hitCache(命中高速缓存)也会触发PreFetch,但数据返回后不会Fill Cacheline(填充高速缓存行),而是暂存在PreFetch buffer中;连续hit长度阈值为X,该X可自定义。
3、Miss address在hit PreFetch request时,则自动提高该笔PreFetch request的优先级,可以减少data返回时间。
本申请实施例还提供了一种嵌入式系统的Cache实现装置1,如图5所示,可以包括处理器11和计算机可读存储介质12,所述计算机可读存储介质12中存储有指令,当所述指令被所述处理器11执行时,实现上述任意一项所述的嵌入式系统的Cache实现方法。
在本申请的示例性实施例中,前述的方法实施例中的任意实施例均适用于该装置实施例中,在此不再一一赘述。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
Claims (10)
1.一种嵌入式系统的Cache实现方法,其特征在于,Cache中的每一组缓存器buffer由单独的状态机控制,所述buffer包括:提取缓冲器Fetch buffer和预取缓冲器PreFetchbuffer,并且一组Fetch buffer对应一组PreFetch buffer;所述Fetch buffer由提取有限状态机Fetch FSM控制,所述PreFetch buffer由预取有限状态机PreFetch FSM控制;所述方法包括:
当发生读取高速缓存失败Read Cache miss时,触发所述Fetch FSM,并执行提取Fetch操作,将提取请求Fetch request对应的Request priority的优先级标记为第二标识;同时触发所述PreFetch FSM,并执行预取PreFetch操作;将预取请求PreFetch request对应的Request priority的优先级标记为第一标识;
或者,当连续发生多次读取高速缓存命中Read Cache hit,且该多次Read Cache hit的地址连续时,触发所述PreFetch FSM,并执行预取PreFetch操作;将预取请求PreFetchrequest对应的Request priority的优先级标记为第一标识;
其中,所述提取请求Fetch request以及所述预取请求PreFetch request设置有请求优先权Request priority;所述第二标识代表的优先级等级高于所述第一标识代表的优先级等级。
2.根据权利要求1所述的嵌入式系统的Cache实现方法,其特征在于,所述触发所述PreFetch FSM,并执行预取PreFetch操作,包括:
将所述PreFetch FSM由空闲Idle状态跳转到预取请求PreFetReq状态,记录预取地址PreFetch address;
将所述PreFetch request发送到请求队列Request queue中,并将所述PreFetch FSM由所述PreFetReq状态跳转到预取数据PreFetData状态,等待数据data返回。
3.根据权利要求2所述的嵌入式系统的Cache实现方法,其特征在于,
当发生所述Read Cache miss时:
PreFetch address=miss address+cacheline size*N,N<=M,其中,miss address是指失败地址,cacheline size是指一行缓存的容量大小,M代表PreFetch长度,N代表预取循环PreFetch loop次数,N为正整数,从1递增到M;
当连续发生多次所述Read Cache hit,且该多次所述Read Cache hit的地址连续时:
PreFetch address=hit address+cacheline size*N(N<=M),其中,hit address为命中地址。
4.根据权利要求3所述的嵌入式系统的Cache实现方法,其特征在于,当发生所述ReadCache miss时,所述触发所述Fetch FSM,并执行提取Fetch操作,包括:
将所述Fetch FSM由所述Idle状态跳转到提取请求FetReq状态,并记录所述missaddress;
将所述提取请求Fetch request发送到所述Request queue中,并将所述Fetch FSM由FetReq状态跳转到提取数据FetData状态,等待data返回。
5.根据权利要求4所述的嵌入式系统的Cache实现方法,其特征在于,所述方法还包括:
当所述Data返回后,根据返回的请求身份标识Reqest ID将返回的Data回填到所述Fetch buffer或所述PreFetch buffer中;
其中,所述Reqest ID用于区分返回的Data为提取请求数据Fetch request data或预取请求数据PreFetch request data。
6.根据权利要求5所述的嵌入式系统的Cache实现方法,其特征在于,当返回的Data为Fetch request data时,所述根据返回的请求身份标识Reqest ID将返回的Data回填到所述Fetch buffer或所述PreFetch buffer中,包括:
将返回的Data回填到所述Fetch buffer中;
将所述Request queue中对应的所述Fetch request的入口撤销;
将所述Fetch FSM由提取数据FetData状态跳转到缓冲填充CacheFill状态,并准备将所述data写入高速缓冲存储器Cache RAM。
7.根据权利要求5所述的嵌入式系统的Cache实现方法,其特征在于,当返回的Data为PreFetch request data时,所述根据返回的请求身份标识Reqest ID将返回的Data回填到所述Fetch buffer或所述PreFetch buffer中,包括:
61、将返回的Data回填到所述PreFetch buffer中;
62、将所述Request queue中对应的所述PreFetch request的入口撤销;
63、将N的值加1,并判断是否满足N<=M,当满足N<=M时,使用新的N值计算出新的PreFetch address;
64、将所述PreFetch FSM由预取数据PreFetData状态跳转到预取请求PreFetReq状态,将PreFetch request发送到所述Request queue中,并将当前PreFetch request对应的Request priority的优先级标记为第一标识,并且所述PreFetch FSM由所述PreFetReq状态跳转到预取数据PreFetData状态,等待data返回;
65、重复步骤61-64,直至新的Read Cache miss发生或者N>M,停止所述PreFetch操作。
8.根据权利要求2-7任意一项所述的嵌入式系统的Cache实现方法,其特征在于,所述方法还包括:
当在PreFetch操作过程中发生新的Read Cache miss,并且所述新的Read Cache miss在所述Request queue中未命中PreFetch request时,扫描所述Request queue,当扫描出存在未派发的PreFetch request时,则将所述未派发的PreFetch request撤销;当扫描出已经派发的PreFetch request,则将所述已经派发的PreFetch request保留;
触发所述Fetch FSM,并执行所述Fetch操作;以及,触发所述PreFetch FSM,并执行所述PreFetch操作。
9.根据权利要求2-7任意一项所述的嵌入式系统的Cache实现方法,其特征在于,所述方法还包括:
当在PreFetch操作过程中发生新的Read Cache miss,并且所述新的Read Cache miss在所述Request queue中命中PreFetch request时,被命中的PreFetch request自动提高优先级,并转化为Fetch request,所述Request queue优先对转化成的Fetch request进行处理,且下一级存储对该转化成的Fetch request优先返回Data;
将所述PreFetch FSM由所述Idle状态跳转到所述PreFetReq状态,记录所述PreFetchaddress;
当所述Data返回后,根据返回的请求身份标识Reqest ID回填到所述Fetch buffer或所述PreFetch buffer中。
10.一种嵌入式系统的Cache实现装置,包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,其特征在于,当所述指令被所述处理器执行时,实现如权利要求1-9任意一项所述的嵌入式系统的Cache实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111081557.9A CN113934653B (zh) | 2021-09-15 | 2021-09-15 | 一种嵌入式系统的Cache实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111081557.9A CN113934653B (zh) | 2021-09-15 | 2021-09-15 | 一种嵌入式系统的Cache实现方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113934653A CN113934653A (zh) | 2022-01-14 |
CN113934653B true CN113934653B (zh) | 2023-08-18 |
Family
ID=79275672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111081557.9A Active CN113934653B (zh) | 2021-09-15 | 2021-09-15 | 一种嵌入式系统的Cache实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113934653B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526896A (zh) * | 2009-01-22 | 2009-09-09 | 杭州中天微系统有限公司 | 嵌入式处理器的加载/存储单元 |
CN101697146A (zh) * | 2009-10-29 | 2010-04-21 | 西北工业大学 | 嵌入式处理器片内指令和数据推送装置 |
CN102609378A (zh) * | 2012-01-18 | 2012-07-25 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
CN103593306A (zh) * | 2013-11-15 | 2014-02-19 | 浪潮电子信息产业股份有限公司 | 一种协议处理器Cache控制单元的设计方法 |
CN111142941A (zh) * | 2019-11-27 | 2020-05-12 | 核芯互联科技(青岛)有限公司 | 一种非阻塞高速缓存缺失处理方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6965982B2 (en) * | 2001-06-29 | 2005-11-15 | International Business Machines Corporation | Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread |
US6895475B2 (en) * | 2002-09-30 | 2005-05-17 | Analog Devices, Inc. | Prefetch buffer method and apparatus |
US20050253858A1 (en) * | 2004-05-14 | 2005-11-17 | Takahide Ohkami | Memory control system and method in which prefetch buffers are assigned uniquely to multiple burst streams |
-
2021
- 2021-09-15 CN CN202111081557.9A patent/CN113934653B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526896A (zh) * | 2009-01-22 | 2009-09-09 | 杭州中天微系统有限公司 | 嵌入式处理器的加载/存储单元 |
CN101697146A (zh) * | 2009-10-29 | 2010-04-21 | 西北工业大学 | 嵌入式处理器片内指令和数据推送装置 |
CN102609378A (zh) * | 2012-01-18 | 2012-07-25 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
CN103593306A (zh) * | 2013-11-15 | 2014-02-19 | 浪潮电子信息产业股份有限公司 | 一种协议处理器Cache控制单元的设计方法 |
CN111142941A (zh) * | 2019-11-27 | 2020-05-12 | 核芯互联科技(青岛)有限公司 | 一种非阻塞高速缓存缺失处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
Adaptive priority-based cache replacement and prediction-based cache prefetching in edge computing environment;Chunlin Li等;Journal of Network and Computer Applications;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113934653A (zh) | 2022-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5778434A (en) | System and method for processing multiple requests and out of order returns | |
CN1126028C (zh) | 带有重放系统的计算机处理器 | |
US20180329651A1 (en) | Systems and methods for write and flush support in hybrid memory | |
CN101937331B (zh) | 用于自适应处理远程原子执行的方法、设备和系统 | |
CN100350494C (zh) | 存储卡及其控制设备、以及数据发送/接收系统 | |
CN103383672B (zh) | 高速缓存控制以减少事务回滚 | |
US8255663B2 (en) | System and method for processing read request | |
US9489203B2 (en) | Pre-fetching instructions using predicted branch target addresses | |
EP0950222A1 (en) | Prefetch management in cache memory | |
CN1726477A (zh) | 用于预取和存储器管理的页描述符 | |
CN114138687A (zh) | 一种数据预取方法、装置、电子设备及存储介质 | |
US8032706B2 (en) | Method and apparatus for detecting a data access violation | |
US8972629B2 (en) | Low-contention update buffer queuing for large systems | |
CN110515659B (zh) | 一种原子指令的执行方法和装置 | |
KR20100069240A (ko) | 캐시 컨트롤을 위한 장치 및 방법 | |
CN104685443A (zh) | 锁定引导数据用以更快引导 | |
US20090006670A1 (en) | Cache for a host controller | |
CN111625482B (zh) | 顺序流检测方法与装置 | |
CN113934653B (zh) | 一种嵌入式系统的Cache实现方法和装置 | |
CN109478163B (zh) | 用于在高速缓存条目处标识存储器访问请求的待决的系统和方法 | |
US20210334014A1 (en) | Method, electronic device and computer program product for managing storage unit | |
US9158682B2 (en) | Cache memory garbage collector | |
CN115858417B (zh) | 缓存数据处理方法、装置、设备及存储介质 | |
CN116701246A (zh) | 一种提升缓存带宽的方法、装置、设备及存储介质 | |
CN114586003A (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 |