CN112380013B - 缓存预载方法、装置、处理器芯片及服务器 - Google Patents
缓存预载方法、装置、处理器芯片及服务器 Download PDFInfo
- Publication number
- CN112380013B CN112380013B CN202011281727.3A CN202011281727A CN112380013B CN 112380013 B CN112380013 B CN 112380013B CN 202011281727 A CN202011281727 A CN 202011281727A CN 112380013 B CN112380013 B CN 112380013B
- Authority
- CN
- China
- Prior art keywords
- cache
- target
- cache line
- resources
- line
- 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
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例公开了一种缓存预载方法、装置、处理器芯片及服务器,其中,缓存预载方法包括:确定处理器中待进行缓存预载的目标缓存;选定目标缓存中的目标组索引;确定目标缓存中可用于存放目标组索引对应的缓存行的资源的总数;根据目标缓存中可用于存放目标组索引对应的缓存行的资源的总数以及预先设置的每种缓存行对应的缓存分配约束条件确定出目标缓存在目标组索引下的缓存状态分布;继续依次确定目标缓存在除目标组索引之外的其他组索引下目标缓存的缓存状态分布,直至确定出在目标缓存的所有组索引下目标缓存的缓存状态分布;将在目标缓存的所有组索引下目标缓存的缓存状态分布加载至目标缓存中,该方法可提高缓存验证的效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种缓存预载方法、装置、处理器芯片及服务器。
背景技术
随着集成电路技术的发展,微处理器的规模不断增大,RTL(Register TransferLevel,寄存器传输级电路)的代码量也大幅增加,导致一些潜在风险存在,也增加了验证难度,以及验证耗时。缓存是微处理器的关键部件,用于缓解主存与处理器之间速度的不匹配。各种复杂场景下,缓存数据的冲突可能引发潜在的错误,且该类错误极难排查和验证。另外缓存的验证存在着样本空间巨大的特质,验证所需要的时间和用例远远大于CPU的其他部件,可能会严重延长整体设计进度,这些问题导致缓存验证成为微处理器芯片验证的重要瓶颈。
目前,利用面向对象的验证语言SV(SystemVerilog,系统硬件描述语言)以及UVM(Universal Verification Methodology,验证方法学)提供的库功能,开发者可以快速高效搭建大规模集成电路验证平台并编写测试用例。在含有Cache结构的数字集成电路验证方面,缓存预载是缓存验证中常用的一种技术,是指在进行指令级的仿真验证之前,根据需要将缓存预先加载成特定的状态,从而提高验证效率。为了更快地实现对各种验证场景的全覆盖,快速验证一些边角错误,不可避免地要对缓存进行多种形式的预载,甚至预载满整个缓存,因此如何方便高效地进行缓存预载十分重要。目前的缓存预载技术大多以缓存状态为基础,先做好状态随机化,再根据状态去决定缓存行在缓存中的位置。但这种方式可复用性低,不便于维护和移植,每次只支持某种特定形式的缓存预载,同时,缓存状态的随机化效率比较低,难以高效覆盖各种缓存状态分布的场景。
发明内容
有鉴于此,本发明实施例提供一种缓存预载方法、装置、处理器芯片及服务器,能够有效提高缓存验证的效率。
本发明一个或多个实施例提供了一种缓存预载方法,包括:确定处理器中待进行缓存预载的目标缓存;选定所述目标缓存中的目标组索引;确定所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数;根据所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数以及预先设置的每种缓存行对应的缓存分配约束条件确定出所述目标缓存在所述目标组索引下的缓存状态分布;继续依次确定所述目标缓存在除所述目标组索引之外的其他组索引下所述目标缓存的缓存状态分布,直至确定出在所述目标缓存的所有组索引下所述目标缓存的缓存状态分布;将在所述目标缓存的所有组索引下所述目标缓存的缓存状态分布加载至所述目标缓存中。
可选的,所述每种缓存行对应的缓存分配约束条件至少包括以下一种:预先设置的每种缓存行分配到的资源数目的约束条件、缓存行状态与缓存行被分配的资源之间的约束条件以及缓存行位置与所述目标缓存的路数之间的约束条件。
可选的,每种缓存行分配到的资源数目的约束条件包括:为每种缓存行分配的资源的总数量等于所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数;为每种缓存行分配的资源的数目不小于1不大于待进行缓存预载的缓存的总数;缓存行状态与缓存行被分配的资源之间的约束条件包括:为缓存行分配的资源的数目等于1时,该缓存行处于独占状态;
为缓存行分配的资源的数据大于1时,该缓存行处于非独占状态;缓存行位置与目标缓存的路数之间的约束条件包括:待所述目标缓存的组索引中分配的缓存行的数目不大于该缓存中组的路数。
可选的,所述每种缓存行对应的缓存分配约束条件通过系统硬件描述语言SV约束描述,根据所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数以及预先设置的每种缓存行对应的缓存分配约束条件确定出所述目标缓存在所述目标组索引下的缓存状态分布,包括:基于通过SV约束描述的每种缓存行对应的缓存分配约束条件,求解所述目标组索引下目标缓存的缓存状态分布。
可选的,确定所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数,包括:根据所述目标缓存的路数以及所述目标缓存的个数确定所述目标缓存中可用于存放所述目标组索引对应的缓存的资源的总数。
本发明一个或多个实施例还提供了一种缓存预载装置,包括:第一确定模块,被配置为确定处理器中待进行缓存预载的目标缓存;选定模块,被配置为选定所述目标缓存中的目标组索引;第二确定模块,被配置为确定所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数;第三确定模块,被配置为根据所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数以及预先设置的每种缓存行对应的缓存分配约束条件确定出所述目标缓存在所述目标组索引下的缓存状态分布;第四确定模块,被配置为继续依次确定所述目标缓存在除所述目标组索引之外的其他组索引下所述目标缓存的缓存状态分布,直至确定出在所述目标缓存的所有组索引下所述目标缓存的缓存状态分布;加载模块,被配置为将在所述目标缓存的所有组索引下所述目标缓存的缓存状态分布加载至所述目标缓存中。
可选的,所述每种缓存行对应的缓存分配约束条件至少包括以下一种:预先设置的每种缓存行分配到的资源数目的约束条件、缓存行状态与缓存行被分配的资源之间的约束条件以及缓存行位置与所述目标缓存的路数之间的约束条件。
可选的,每种缓存行分配到的资源数目的约束条件包括:为每种缓存行分配的资源的总数量等于所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数;为每种缓存行分配的资源的数目不小于1不大于待进行缓存预载的缓存的总数;缓存行状态与缓存行被分配的资源之间的约束条件包括:为缓存行分配的资源的数目等于1时,该缓存行处于独占状态;
为缓存行分配的资源的数据大于1时,该缓存行处于非独占状态;缓存行位置与目标缓存的路数之间的约束条件包括:待所述目标缓存的组索引中分配的缓存行的数目不大于该缓存中组的路数。
可选的,所述每种缓存行对应的缓存分配约束条件通过系统硬件描述语言SV约束描述,所述第四确定模块具体被配置为:基于通过SV约束描述的每种缓存行对应的缓存分配约束条件,求解所述目标组索引下目标缓存的缓存状态分布。
可选的,所述第二确定模块具体被配置为:根据所述目标缓存的路数以及所述目标缓存的个数确定所述目标缓存中可用于存放所述目标组索引对应的缓存的资源的总数。
本发明一个或多个实施例提供了一种处理器芯片,包括:至少一个处理器核、缓存;所述处理器核,用于执行上述任意一种缓存预载方法。
本发明一个或多个实施例提供了一种服务器,包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为所述服务器的各个电路或器件供电;存储器用于存储可执行程序代码;所述处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行上述任意一种缓存预载方法。
本发明一个或多个实施例提供的缓存预载方法,选定待进行缓存预载的目标缓存中的组索引作为目标组索引,再根据目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数以及预先设置的每种缓存行对应的缓存分配约束条件确定出在目标缓存的所有组索引下其缓存状态分布,依此确定出在目标缓存中所有组索引下目标缓存的缓存分布,再将在目标缓存的所有组索引下目标缓存的缓存分布加载至目标缓存中,即完成了对处理器中目标缓存的加载,减少了缓存预载的工作量,降低了缓存预载的复杂度,进而可提高缓存验证的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是根据本发明一个或多个实施例示出的一种缓存预载方法的流程图;
图2是根据本发明一个或多个实施例示出的一种CPU内缓存的示意图;
图3是根据本发明一个或多个实施例示出的一种缓存的结构示意图;
图4是根据本发明一个或多个实施例示出的一种缓存的结构示意图;
图5是根据本发明一个或多个实施例示出的一种芯片的结构示意图;
图6是根据本发明一个或多个实施例示出的一种服务器结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1是根据本发明一个或多个实施例示出的一种缓存预载方法的流程图,如图1所示,该方法包括:
步骤101:确定处理器中待进行缓存预载的目标缓存;
其中,本发明一个或多个实施例中所述的缓存,例如可以是CPU高速缓存,该缓存是位于CPU和内存之间的临时存储器,容量比内存小得多但是读写速率却比内存快很多,主要用于解决CPU运算速度与内存读写速度不匹配的矛盾。其中,主流CPU缓存可包括一级缓存、二级缓存和三级缓存。
在一个例子中,处理器以图2中所示的CPU为例,如图2所示,该CPU中包括L1Cache、L2 Cache以及L3 Cache三级缓存,其中,L1 Cache为一级高速缓存,位于CPU内核的旁边,与CPU结合最为紧密的缓存,分为指令缓存和数据缓存,容量最小,由各个核独享。L2Cache为二级高速缓存,是CPU第二层级高速缓存,其容量会直接影响CPU的性能,由各个核独享。L3 Cache是三级高速缓存,为CPU第三层级高速缓存,作用是进一步降低内存延迟,由多个核共享,容量最大。假设需要对图2中所示的CPU中的L3 Cache(三级缓存)进行验证,在图2中CPU内各级Cache组成为:每个核独享1个L2 Cache(二级缓存),同时4个核共享1个L3Cache,L3 Cache和L2 Cache在大部分情况下例如可以是非包含关系,但不是绝对的非包含关系,需要说明的是,在该例子中,L3 Cache以及L2 Cache之间的关系仅为一种示例,二者之间的关系并不影响本发明一个或多个实施例的缓存预载方法的实施。
在图2所示的CPU中,由于L2 Cache中的Cache Line(缓存行,是Cache与内存数据交换的最小单位,可以是32字节或64字节)状态直接决定了其发给L3 Cache的指令,为了提高验证效率,在对缓存进行指令级的仿真验证之前,可先对处理器中的4个L2 Cache以及1个L3 Cache进行缓存预载,在该例子中,4个L2 Cache以及1个L3 Cache即为上述目标缓存的一个示例。
步骤102:选定所述目标缓存中的目标组索引;
其中,组是缓存行的集合,缓存中包含多个组,在多路组相联的缓存中,通过组索引来决定主存块映射到缓存的哪一个组。其中,组相联映射是一种缓存地址映射方式。缓存中包含多个组,每个组包含几条缓存行,就称为几路组相联。这种映射方式下,主存块存到缓存哪个组是固定的,而存到该组哪一路则是灵活的,即主存的某块只能映射到缓存的特定组中的任意一路。
仍以上述图2所示的处理器为例,例如,可以随机选择L2 Cache以及L3Cache的任意一个组索引作为目标组索引。此处以随机选择L2 Cache中的一个组索引作为目标组索引为例,其中,L2 Cache以图3所示为例,如图3所示,L2 Cache是8路组相联结构,物理地址addr[47:16]作为Tag(标签,Cache Line地址高位会作为标签存储在Cache中,缓存控制器通过查询标签并与某条Cache Line地址高位进行比对来决定是否命中),物理地址addr[15:6]作为Set Index(0-1023),其中,Set Index表示组索引。L2 Cache中每条Cache Line64字节。
步骤103:确定所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数;
例如,在选定目标组索引之后,可根据该组索引所属的缓存的上级以及下级缓存的结构(如多路组相连结构的缓存中的路数)及特性(如一级缓存中所包括的缓存的个数)计算出在目标缓存中可用于存放该组索引下的缓存行的资源的总数。其中,多路组相联的缓存中,每个组包含多条缓存行,每条缓存行对应该组的一路。
步骤104:根据所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数以及预先设置的每种缓存行对应的缓存分配约束条件确定出所述目标缓存在所述目标组索引下的缓存状态分布;
例如,可预先设置了每种缓存行对应的缓存分配约束条件,该约定条件中例如可以规定了以下至少一种:
预先设置的每种缓存行分配到的资源数目的约束条件、缓存行状态与缓存行被分配的资源之间的约束条件以及缓存行位置与所述目标缓存的路数之间的约束条件。
步骤105:继续依次确定所述目标缓存在除所述目标组索引之外的其他组索引下所述目标缓存的缓存状态分布,直至确定出在所述目标缓存的所有组索引下所述目标缓存的缓存状态分布;
例如,可循环执行上述步骤102至步骤104,直至确定出在目标缓存的所有组索引下该目标缓存的缓存状态分布。
步骤106:将在所述目标缓存的所有组索引下所述目标缓存的缓存状态分布加载至所述目标缓存中。
本发明一个或多个实施例提供的缓存预载方法,选定待进行缓存预载的目标缓存中的组索引作为目标组索引,再根据目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数以及预先设置的每种缓存行对应的缓存分配约束条件确定出在目标缓存的所有组索引下其缓存状态分布,依此确定出在目标缓存中所有组索引下目标缓存的缓存分布,再将在目标缓存的所有组索引下目标缓存的缓存分布加载至目标缓存中,即完成了对处理器中目标缓存的加载,减少了缓存预载的工作量,降低了缓存预载的复杂度,进而可提高缓存验证的效率,加快验证流程,进而缩短整个验证周期。
在本发明的一个或多个实施例中,每种缓存行分配到的资源数目的约束条件包括:为每种缓存行分配的资源的总数量等于所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数;仍以图3所示的L3 Cache以及图4所示的L4 Cache为例,沿用上述例子,假设最终总数为160的资源分配给了N种不同的当前Set Index(addr[15:6])的Cache Line,每种Cache Line被分配到的资源数目分别为Count1、Count2、Count3......CountN,则Count1+Count2+Count3+...CountN=160;
为每种缓存行分配的资源的数目不小于1不大于待进行缓存预载的缓存的总数;例如,每种缓存行被分配的资源数目必须不小于1(如图3中所示的4个L2以及图4中所示的1个L3中的某一个)小于等于5(如图3中所示的4个L2以及图4中所示的1个L3中各一个),也即1<={Count1,Count2,Count3...CountN}<=5;
又例如,假设目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数为M,需将这些资源分配给N种缓存行,则每种缓存行分配到的资源数据的约束条件可以为N<=M,极端的情况下,每种缓存行都只占用一个资源(即缓存处于独占状态),那么M个总资源将分配给N种不同的目标组索引的缓存行,此时N=M。
缓存行状态与缓存行被分配的资源之间的约束条件可包括:
为缓存行分配的资源的数目等于1时,该缓存行处于独占状态;
为缓存行分配的资源的数据大于1时,该缓存行处于非独占状态;
例如,Count=1时,Cache Line必须处于独占状态,比如E、M等状态;Count>1时,Cache Line需处于合理的状态组合,比如(O,S...S)等状态;其中,Count表示上述Count1至CountN。其中,缓存行状态可包括M(修改)、O(占有)、E(独占)、S(共享)以及I(无效)等状态。其中,处于M状态、E状态的缓存行在系统中只有一个备份,处于O状态、S状态的缓存行在系统中有多个备份。
缓存行位置与目标缓存的路数之间的约束条件可包括:
待所述目标缓存的组索引中分配的缓存行的数目不大于该缓存中组的路数。
沿用上述例子,4个L2 Cache当前Set Index中分配的Cache Line数目必须不大于8;当前L2 Set Index对应的8个L3 Set Index中分配的Cache Line数目必须不大于16。
在本发明的一个或多个实施例中,所述每种缓存行对应的缓存分配约束条件可通过SV约束描述,基于此,根据所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数以及预先设置的每种缓存行对应的缓存分配约束条件确定出所述目标缓存在所述目标组索引下的缓存状态分布,可包括:
基于通过SV约束描述的每种缓存行对应的缓存分配约束条件,求解所述目标组索引下目标缓存的缓存状态分布。沿用上述例子,在上述例子中,可基于如下规则创建SV约束:
总资源数目约束:Count1+Count2+Count3+CountN=160;
每种Cache Line分到的资源数目约束:必须大于等于1小于等于5,1<={Count1,Count2,Count3...CountN}<=5;
Cache Line状态与分到的资源数之间的约束:
Count=1时,Cache Line必须处于独占状态,比如E、M等;
Count>1时,Cache Line必须处于非独占状态,比如(O,S...S)等;
Cache Line位置与L2 Cache以及L3 Cache路数之间的约束:
4个L2当前Set Index中分配的Cache Line数目必须小于等于8;
L2 Set Index对应的8个L3 Set Index中分配的Cache Line数目必须小于等于16。
SV在以上约束基础上可自动求解出一个当前Set Index下的L2Cache以及L3Cache状态分布,使用SV描述各种缓存行的分配缓存的约束,可较为方便地自动求解出在当前组索引下目标缓存的缓存状态分布,同时也能保证高效地生成一个足够随机的缓存状态分布,使得预载的缓存状态可高效覆盖各种缓存状态分布的场景。
在本发明的一个或多个实施例中,确定所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数可包括:
根据所述目标缓存的路数以及所述目标缓存的个数确定所述目标缓存中可用于存放所述目标组索引对应的缓存的资源的总数。其中,L3 Cache以图4所示为例,如图4所示,L3 Cache是16路组相联结构,物理地址addr[47:19]作为Tag,物理地址addr[18:6]作为Set Index(0-8191),每条Cache Line 64字节。假设在上述步骤102中随机选定某个L2Cache的Set Index(以下简称L2 Set Index),结合图3以及图4可以看出每个L2 Set Index(addr[15:6])对应8个L3 Cache的Set Index(addr[18:6]),L3 Cache的Set Index以下简称L3 Set Index)。如图3所示,L2 Cache的每个组有8路,如图4所示,L3 Cache的每个组有16路,因此随机选择的L2 Set Index(为目标索引组的一个示例)在整个L2 Cache以及L3Cache中可用于存放Cache Line的资源总数为M=4*8+8*16=160。
图5是根据本发明一个或多个实施例示出的一种缓存预载装置的结构示意图,如图5所示,该装置50包括:
第一确定模块51,被配置为确定处理器中待进行缓存预载的目标缓存;
选定模块52,被配置为选定所述目标缓存中的目标组索引;
第二确定模块53,被配置为确定所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数;
第三确定模块54,被配置为根据所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数以及预先设置的每种缓存行对应的缓存分配约束条件确定出所述目标缓存在所述目标组索引下的缓存状态分布;
第四确定模块55,被配置为继续依次确定所述目标缓存在除所述目标组索引之外的其他组索引下所述目标缓存的缓存状态分布,直至确定出在所述目标缓存的所有组索引下所述目标缓存的缓存状态分布;
加载模块56,被配置为将在所述目标缓存的所有组索引下所述目标缓存的缓存状态分布加载至所述目标缓存中。
在本发明的一个或多个实施例中,所述每种缓存行对应的缓存分配约束条件至少可包括以下一种:预先设置的每种缓存行分配到的资源数目的约束条件、缓存行状态与缓存行被分配的资源之间的约束条件以及缓存行位置与所述目标缓存的路数之间的约束条件。
在本发明的一个或多个实施例中,
每种缓存行分配到的资源数目的约束条件包括:为每种缓存行分配的资源的总数量等于所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数;为每种缓存行分配的资源的数目不小于1不大于待进行缓存预载的缓存的总数;缓存行状态与缓存行被分配的资源之间的约束条件包括:为缓存行分配的资源的数目等于1时,该缓存行处于独占状态;为缓存行分配的资源的数据大于1时,该缓存行处于非独占状态;缓存行位置与目标缓存的路数之间的约束条件包括:待所述目标缓存的组索引中分配的缓存行的数目不大于该缓存中组的路数。
在本发明的一个或多个实施例中,所述每种缓存行对应的缓存分配约束条件可通过SV约束描述,所述第四确定模块具体可被配置为:基于通过SV约束描述的每种缓存行对应的缓存分配约束条件,求解所述目标组索引下目标缓存的缓存状态分布。
在本发明的一个或多个实施例中,所述第二确定模块具体可被配置为:根据所述目标缓存的路数以及所述目标缓存的个数确定所述目标缓存中可用于存放所述目标组索引对应的缓存的资源的总数。
图5是根据本发明一个或多个实施例示出的一种处理芯片的示意图,如图5所示,该处理芯片50包括:至少一个处理器核51以及缓存52;所述处理器核51,用于执行上述任意一种基于缓存一致性的数据存储方法。
本发明一个或多个实施例还提供了一种服务器,包括:体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为所述服务器的各个电路或器件供电;存储器用于存储可执行程序代码;所述处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行上述任意一种缓存预载方法。
相应的,如图6所示,本发明的实施例提供的服务器,可以包括:壳体61、处理器62、存储器63、电路板64和电源电路65,其中,电路板64安置在壳体61围成的空间内部,处理器62和存储器63设置在电路板64上;电源电路65,用于为上述电子设备的各个电路或器件供电;存储器63用于存储可执行程序代码;处理器62通过读取存储器63中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述实施例提供的任一种缓存预载方法。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (12)
1.一种缓存预载方法,其特征在于,包括:
确定处理器中待进行缓存预载的目标缓存;
选定所述目标缓存中的目标组索引;
确定所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数;
根据所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数以及预先设置的每种缓存行对应的缓存分配约束条件确定出所述目标缓存在所述目标组索引下的缓存状态分布;
继续依次确定所述目标缓存在除所述目标组索引之外的其他组索引下所述目标缓存的缓存状态分布,直至确定出在所述目标缓存的所有组索引下所述目标缓存的缓存状态分布;
将在所述目标缓存的所有组索引下所述目标缓存的缓存状态分布加载至所述目标缓存中。
2.根据权利要求1所述的方法,其特征在于,所述每种缓存行对应的缓存分配约束条件至少包括以下一种:
预先设置的每种缓存行分配到的资源数目的约束条件、缓存行状态与缓存行被分配的资源之间的约束条件以及缓存行位置与所述目标缓存的路数之间的约束条件。
3.根据权利要求2所述的方法,其特征在于,
每种缓存行分配到的资源数目的约束条件包括:为每种缓存行分配的资源的总数量等于所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数;
为每种缓存行分配的资源的数目不小于1不大于待进行缓存预载的缓存的总数;
缓存行状态与缓存行被分配的资源之间的约束条件包括:
为缓存行分配的资源的数目等于1时,该缓存行处于独占状态;
为缓存行分配的资源的数据大于1时,该缓存行处于非独占状态;
缓存行位置与目标缓存的路数之间的约束条件包括:
待所述目标缓存的组索引中分配的缓存行的数目不大于该缓存中组的路数。
4.根据权利要求2或3所述的方法,其特征在于,所述每种缓存行对应的缓存分配约束条件通过系统硬件描述语言SV约束描述,
根据所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数以及预先设置的每种缓存行对应的缓存分配约束条件确定出所述目标缓存在所述目标组索引下的缓存状态分布,包括:
基于通过SV约束描述的每种缓存行对应的缓存分配约束条件,求解所述目标组索引下目标缓存的缓存状态分布。
5.根据权利要求1至3中任一项所述的方法,其特征在于,确定所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数,包括:
根据所述目标缓存的路数以及所述目标缓存的个数确定所述目标缓存中可用于存放所述目标组索引对应的缓存的资源的总数。
6.一种缓存预载装置,其特征在于,包括:
第一确定模块,被配置为确定处理器中待进行缓存预载的目标缓存;
选定模块,被配置为选定所述目标缓存中的目标组索引;
第二确定模块,被配置为确定所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数;
第三确定模块,被配置为根据所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数以及预先设置的每种缓存行对应的缓存分配约束条件确定出所述目标缓存在所述目标组索引下的缓存状态分布;
第四确定模块,被配置为继续依次确定所述目标缓存在除所述目标组索引之外的其他组索引下所述目标缓存的缓存状态分布,直至确定出在所述目标缓存的所有组索引下所述目标缓存的缓存状态分布;
加载模块,被配置为将在所述目标缓存的所有组索引下所述目标缓存的缓存状态分布加载至所述目标缓存中。
7.根据权利要求6所述的装置,其特征在于,所述每种缓存行对应的缓存分配约束条件至少包括以下一种:
预先设置的每种缓存行分配到的资源数目的约束条件、缓存行状态与缓存行被分配的资源之间的约束条件以及缓存行位置与所述目标缓存的路数之间的约束条件。
8.根据权利要求7所述的装置,其特征在于,
每种缓存行分配到的资源数目的约束条件包括:为每种缓存行分配的资源的总数量等于所述目标缓存中可用于存放所述目标组索引对应的缓存行的资源的总数;
为每种缓存行分配的资源的数目不小于1不大于待进行缓存预载的缓存的总数;
缓存行状态与缓存行被分配的资源之间的约束条件包括:
为缓存行分配的资源的数目等于1时,该缓存行处于独占状态;
为缓存行分配的资源的数据大于1时,该缓存行处于非独占状态;
缓存行位置与目标缓存的路数之间的约束条件包括:
待所述目标缓存的组索引中分配的缓存行的数目不大于该缓存中组的路数。
9.根据权利要求6或7所述的装置,其特征在于,所述每种缓存行对应的缓存分配约束条件通过系统硬件描述语言SV约束描述,
所述第四确定模块具体被配置为:
基于通过SV约束描述的每种缓存行对应的缓存分配约束条件,求解所述目标组索引下目标缓存的缓存状态分布。
10.根据权利要求6至8中任一项所述的装置,其特征在于,所述第二确定模块具体被配置为:
根据所述目标缓存的路数以及所述目标缓存的个数确定所述目标缓存中可用于存放所述目标组索引对应的缓存的资源的总数。
11.一种处理器芯片,其特征在于,包括:至少一个处理器核、缓存;
所述处理器核,用于执行上述权利要求1至权利要求5中任一项所述的缓存预载方法。
12.一种服务器,其特征在于,包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为所述服务器的各个电路或器件供电;存储器用于存储可执行程序代码;所述处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述权利要求1-5中任一项所述的缓存预载方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011281727.3A CN112380013B (zh) | 2020-11-16 | 2020-11-16 | 缓存预载方法、装置、处理器芯片及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011281727.3A CN112380013B (zh) | 2020-11-16 | 2020-11-16 | 缓存预载方法、装置、处理器芯片及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112380013A CN112380013A (zh) | 2021-02-19 |
CN112380013B true CN112380013B (zh) | 2022-07-29 |
Family
ID=74585529
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011281727.3A Active CN112380013B (zh) | 2020-11-16 | 2020-11-16 | 缓存预载方法、装置、处理器芯片及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112380013B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615133A (zh) * | 2008-06-27 | 2009-12-30 | 国际商业机器公司 | 用于细粒度延迟写拷贝的装置和方法 |
CN101826056A (zh) * | 2009-02-20 | 2010-09-08 | Arm有限公司 | 数据处理设备和方法 |
CN108885583A (zh) * | 2016-04-11 | 2018-11-23 | 国际商业机器公司 | 高速缓存存储器访问 |
CN109933543A (zh) * | 2019-03-11 | 2019-06-25 | 珠海市杰理科技股份有限公司 | Cache的数据锁定方法、装置和计算机设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2479780B (en) * | 2010-04-22 | 2018-04-04 | Advanced Risc Mach Ltd | Preload instruction control |
US9715715B2 (en) * | 2012-06-06 | 2017-07-25 | Intel Deutschland Gmbh | Efficient cache preloading |
-
2020
- 2020-11-16 CN CN202011281727.3A patent/CN112380013B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615133A (zh) * | 2008-06-27 | 2009-12-30 | 国际商业机器公司 | 用于细粒度延迟写拷贝的装置和方法 |
CN101826056A (zh) * | 2009-02-20 | 2010-09-08 | Arm有限公司 | 数据处理设备和方法 |
CN108885583A (zh) * | 2016-04-11 | 2018-11-23 | 国际商业机器公司 | 高速缓存存储器访问 |
CN109933543A (zh) * | 2019-03-11 | 2019-06-25 | 珠海市杰理科技股份有限公司 | Cache的数据锁定方法、装置和计算机设备 |
Non-Patent Citations (2)
Title |
---|
基于OLSM执行模型的Cache一致性协议研究与实现;冀蓉;《中国优秀硕士学位论文全文数据库 信息科技辑》;20060315;全文 * |
嵌入式处理器性能计数器应用研究;李博;《中国优秀硕士学位论文全文数据库 信息科技辑》;20131215;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112380013A (zh) | 2021-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Hadidi et al. | Cairo: A compiler-assisted technique for enabling instruction-level offloading of processing-in-memory | |
US7562191B2 (en) | Microprocessor having a power-saving instruction cache way predictor and instruction replacement scheme | |
Calder et al. | Predictive sequential associative cache | |
US6170070B1 (en) | Test method of cache memory of multiprocessor system | |
US20060004963A1 (en) | Apparatus and method for partitioning a shared cache of a chip multi-processor | |
US20140181417A1 (en) | Cache coherency using die-stacked memory device with logic die | |
US8296518B2 (en) | Arithmetic processing apparatus and method | |
US7590802B2 (en) | Direct deposit using locking cache | |
US11868692B2 (en) | Address generators for verifying integrated circuit hardware designs for cache memory | |
JP7359837B2 (ja) | メモリ・システム内に記憶されているメモリ保護テーブルを使用するメモリ保護ユニット | |
US20200301840A1 (en) | Prefetch apparatus and method using confidence metric for processor cache | |
US9256544B2 (en) | Way preparation for accessing a cache | |
CN116049034A (zh) | 一种多核处理器系统的缓存一致性的验证方法及装置 | |
JP7397057B2 (ja) | メモリ・システム内に記憶されている制御テーブルのための二分探索手順 | |
JP5625809B2 (ja) | 演算処理装置、情報処理装置及び制御方法 | |
US6560676B1 (en) | Cache memory system having a replace way limitation circuit and a processor | |
CN110291507A (zh) | 用于提供对存储器系统的加速访问的方法和装置 | |
DeOrio et al. | Post-silicon verification for cache coherence | |
CN112380013B (zh) | 缓存预载方法、装置、处理器芯片及服务器 | |
US9507741B2 (en) | System-on-chip design structure | |
US8533396B2 (en) | Memory elements for performing an allocation operation and related methods | |
CN116167310A (zh) | 一种验证多核心处理器缓存一致性的方法及装置 | |
CN115269199A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
Petrov et al. | Data cache energy minimizations through programmable tag size matching to the applications | |
US20210342275A1 (en) | Initiating interconnect operation without waiting on lower level cache directory lookup |
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 |