CN113934655A - 解决高速缓冲存储器地址二义性问题的方法和装置 - Google Patents
解决高速缓冲存储器地址二义性问题的方法和装置 Download PDFInfo
- Publication number
- CN113934655A CN113934655A CN202111548542.9A CN202111548542A CN113934655A CN 113934655 A CN113934655 A CN 113934655A CN 202111548542 A CN202111548542 A CN 202111548542A CN 113934655 A CN113934655 A CN 113934655A
- Authority
- CN
- China
- Prior art keywords
- address
- virtual address
- cache
- target
- ambiguity
- 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
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
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
本公开提供一种解决高速缓冲存储器地址二义性问题的方法和装置,属于电子技术领域。所述方法包括:基于接收到的访问指令,确定对应的第一虚地址;当基于所述第一虚地址访问未命中时,查询地址维护列表,确定所述第一虚地址对应的目标项,所述目标项所记录的信息包括目标Tag、目标地址二义性位和目标Cache;基于所述第一虚地址和所述目标项,确定第二虚地址,将所述第二虚地址的信息置为无效,其中,所述第二虚地址与所述第一虚地址映射到同一物理地址;获取所述访问地址对应的信息,并写回所述第一虚地址。采用本公开,可以在解决地址二义性的同时提高处理效率。
Description
技术领域
本公开涉及电子技术领域,尤其涉及一种解决高速缓冲存储器地址二义性问题的方法和装置。
背景技术
在电子技术领域中,计算机设备可以通过程序计数器确定取指令的地址,通过访存指令确定访问存储器的地址,进而从地址所指示的物理地址中取出指令,或读取、写入数据。
如图1所示的存储器地址示意图,从操作系统的角度而言,存储器地址可以分为虚地址(Virtual Address;简称VA)和物理地址(Physical Address,简称PA)。其中,虚地址可以分为两部分:虚页号(Virtual Page Number,简称VPN)和页偏移(Page Offset);物理地址(Physical Address,简称PA)可以分为两部分:物理页号(Physical Page Number,简称PPN)和页偏移(Page Offset)。
从处理器的Cache(高速缓冲存储器)的角度而言,存储器地址可以分为三部分:高速缓冲存储器标签(Cache Tag)、高速缓冲存储器索引(Cache Index)和高速缓冲存储器块偏移(Cache Block Offset)。
若用虚地址作为高速缓冲存储器的索引,在高速缓冲存储器索引(Cache Index)和高速缓冲存储器块偏移(Cache Block Offset)的位数之和大于页偏移的位数时,可能存在两个存储器地址的Index中超出页偏移的高位不同。这是同一物理地址映射到不同的虚地址引起的,从而出现基于Index可以寻址到不同的Cache行,实际上是同一物理地址的情况,即存在地址二义性的问题。相对应的,高速缓冲存储器索引(Cache Index)中虚地址和物理地址不一致的对应位,在本公开中可以称为地址二义性位。
发明内容
为了解决现有技术的问题,本公开实施例提供了一种解决高速缓冲存储器地址二义性问题的方法、装置、电子设备和非瞬时计算机可读存储介质。技术方案如下:
根据本公开的一方面,提供了一种解决高速缓冲存储器地址二义性问题的方法,所述方法包括:
基于接收到的访问指令,确定对应的第一虚地址;
当基于所述第一虚地址访问未命中时,查询地址维护列表,确定所述第一虚地址对应的目标项,所述目标项所记录的信息用于指示目标Tag、目标地址二义性位和目标Cache;
基于所述第一虚地址和所述目标项,确定第二虚地址,将所述第二虚地址的信息置为无效,其中,所述第二虚地址与所述第一虚地址映射到同一物理地址;
获取所述访问指令对应的信息,并写回所述第一虚地址。
根据本公开的另一方面,提供了一种解决高速缓冲存储器地址二义性问题的装置,所述装置包括:
接收模块,用于基于接收到的访问指令,确定对应的第一虚地址;
查询模块,用于当基于所述第一虚地址访问未命中时,查询地址维护列表,确定所述第一虚地址对应的目标项,所述目标项所记录的信息包括目标Tag、目标地址二义性位和目标Cache;
无效模块,用于基于所述第一虚地址和所述目标项,确定第二虚地址,将所述第二虚地址的信息置为无效,其中,所述第二虚地址与所述第一虚地址映射到同一物理地址;
获取模块,用于获取所述访问指令对应的信息,并写回所述第一虚地址。
根据本公开的另一方面,提供了一种电子设备,包括:
处理器;以及
存储程序的存储器,
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行上述解决高速缓冲存储器地址二义性问题的方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行上述解决高速缓冲存储器地址二义性问题的方法。
本公开中,可以采用地址维护列表来确定是否存在地址二义性,若存在,则可以基于地址维护列表来维护虚地址和物理地址的一致性。并且,地址维护列表数据量少,维护简单,可以在解决地址二义性的同时提高处理效率。
附图说明
在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:
图1示出了根据本公开示例性实施例提供的存储器地址示意图;
图2示出了根据本公开示例性实施例提供的Cache结构示意图;
图3示出了根据本公开示例性实施例提供的组相连的Cache结构示意图;
图4示出了根据本公开示例性实施例提供的Index+ Block Offset和Page Offset的位数比较示意图;
图5示出了根据本公开示例性实施例提供的解决高速缓冲存储器地址二义性问题的方法流程图;
图6示出了根据本公开示例性实施例提供的访问方法流程图;
图7示出了根据本公开示例性实施例提供的地址维护列表示意图;
图8示出了根据本公开示例性实施例提供的另一地址维护列表示意图;
图9示出了根据本公开示例性实施例提供的解决高速缓冲存储器地址二义性问题的装置的示意性框图;
图10示出了能够用于实现本公开的实施例的示例性电子设备的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
为了清楚描述本公开实施例提供的方法,下面对所使用的技术进行介绍。
1、Cache
高速缓冲存储器,位于CPU(Central Processing Unit,中央处理单元)和主存储器DRAM(Dynamic Random Access Memory,动态随机存取存储器)之间,通常由SRAM(StaticRandom-Access Memory,静态随机存取存储器)组成。CPU的速度远高于内存,当CPU直接从内存中存取数据时要等待一定的时钟周期,而Cache则访问速度快,可以保存CPU刚用过或循环使用的一部分信息,如果CPU需要再次使用该部分信息时可从Cache中直接调用,这样就避免了从延迟长的内存存取信息,减少了CPU的等待时间,因而提高了系统的效率。
如图2所示的Cache结构示意图,Cache主要由两部分组成,标签(Tag)部分和数据(Data)部分。Data部分用于保存一片连续地址的信息,Tag部分用于存储这片连续信息的公共地址。一个Tag和它对应的所有信息组成一行称为一个Cache Line,而Cache Line中的数据部分称为数据块(Data Block)。如果一个信息可以存储在Cache中的多个地方,这些被同一个地址找到的多个Cache Line称为Cache Set。
2、Cache的组织方式
Cache的组织方式分为直接相连、组相连和全相连,本公开主要涉及组相连的组织方式。直接相连和和全相连可以分别看作路数为1以及路数为Cache行数的特殊的组相连组织方式。组相连的Cache结构示意图如图3所示。
处理器访问存储器的地址会被分为三部分,标签(Tag)、索引(Index)和块内偏移(Block Offset)。其中,使用Index来从Cache中找到一组Cache Line,也即是一个CacheSet;使用Index索引读出的Tag部分来和访问地址中的Tag进行比较,只有它们是相等的,才表明这个Cache Line就是想要的那个;在一个Cache Line中对应有很多个访存信息,通过存储器地址中的Block Offset部分和访存指令的访问宽度可以找到真正想要的信息,它可以定位到每个字节。在Cache Line中还有一个有效位(valid),用来标记Cache Line是否保存着有效的信息,只有在之前被访问过的存储器地址,它的信息才会存在对应的CacheLine中,相应的有效位也会被置为1。
3、地址二义性问题
地址二义性问题是指不同的虚地址对应同一个物理地址。
下面对地址二义性问题的产生原因进行介绍。
访问Cache的地址可以是虚地址,也可以是物理地址。处理器取指令的地址和执行的指令中的地址都是虚地址,需要经过TLB(Translation Lookaside Buffer,旁路转换缓冲)进行虚实地址转换才能得到物理地址。从Cache访问效率的角度,商用处理器一般都是用虚地址Index访问Cache行,物理地址Tag进行Tag比较,即此时Cache存储器地址的构成为虚地址Index和物理地址Tag(Virtually-Indexed,Physically-Tagged,VIPT)。
在这样的方法中,访问Cache和访问TLB是可以同时进行的。假设在直接映射的Cache中,每个Cache Line中包括2b字节的信息,而Cache Set的个数是2L,也就是说,虚地址的Index+ Block Offset的位数为L+b。假设物理地址中页的大小是2k字节,则Page Offset的位数为k。
因此,可以存在如图4所示的3种情况:
第一种,k>L+b,此时,Cache的容量小于一个页的大小;
第二种,k=L+b,此时,Cache的容量等于一个页的大小;
第三种,k<L+b,此时,Cache的容量大于一个页的大小。
对于上述第一种和第二种情况,在虚实地址转换的过程中,将虚地址中的Index+Block Offset在转换为物理地址的过程中是不会发生变化的,可以认为来自于物理地址。相当于直接使用了物理地址Index和物理地址Tag(Physically -Indexed,Physically-Tagged,PIPT),这种情况下不会出现地址二义性问题。
但是对于上述第三种情况,由于1路Cache的容量存在限制(如4KB),若想要增加Cache的容量,需要使用组相连结构的Cache来增加路(way)的数量(如增加到32KB,对应于8路组相连的结构)。但way的数量受Cache访问时间的限制,不可能在组相连的结构Cache中无限制的增加way的数量,因此只能增加每个way的容量,此时就会导致虚地址中Index的位数增加,使得虚地址Index+ Block Offset的位数大于物理地址中Page Offset的位数,即k<L+b。
由于物理地址的Page Offset对应虚地址的[k-1,0]部分,虚地址的Index+ BlockOffset对应于[L+b-1,0]部分。可能存在两个虚地址VA1和VA2的[k-1,0]部分相同,但是[L+b-1,0]部分不同的情况,也即是说,基于[k-1,0]部分可以寻址到同一物理地址,但是基于[L+b-1,0]部分可以寻址到不同的虚地址,即存在地址二义性的问题。地址二义性问题不但会造成Cache空间浪费,而且当Cache中VA2对应信息被改变时,VA1的信息不会随着变化,导致一个物理地址在Cache中存在两个不同的信息,当后续的取数指令从地址VA1读取信息时,读取到的将会是未改变的信息,则导致信息读取错误。
因此,本公开实施例提供了一种解决高速缓冲存储器地址二义性问题的方法,该方法可以应用于终端、服务器和/或其他具备处理能力的电子设备,本公开对此不作限定。
下面将参照图5所示的解决高速缓冲存储器地址二义性问题的方法流程图,对该方法进行介绍。
步骤501,基于接收到的访问指令,确定对应的第一虚地址。
步骤502,当基于第一虚地址访问未命中时,查询地址维护列表,确定第一虚地址对应的目标项。
其中,目标项所记录的信息可以包括目标Tag、目标地址二义性位和目标Cache。
步骤503,基于第一虚地址和目标项,确定第二虚地址,将第二虚地址的信息置为无效。
其中,第二虚地址与第一虚地址映射到同一物理地址。
步骤504,获取访问指令对应的信息,并写回第一虚地址。
可选的,该方法还可以包括:基于第一虚地址,更新地址维护列表。
可选的,基于第一虚地址,更新地址维护列表,包括:
当第一虚地址的地址二义性位与目标地址二义性位不一致时,将目标地址二义性位,更新为第一虚地址的地址二义性位。
可选的,目标Cache至少包括以下任意一种:当前处理器核的指令Cache或数据Cache,或,其他处理器核的指令Cache或数据Cache,其中,当前处理器核用于接收访问指令。
可选的,基于接收到的访问指令,确定对应的第一虚地址,包括:
当接收到取指令时,获取该取指令对应的第一虚地址,取指令对应的第一虚地址用于访问指令Cache;或
当接收到访存指令时,确定访存指令对应的第一虚地址,访存指令对应的第一虚地址用于访问数据Cache。
可选的,获取该取指令对应的第一虚地址,包括:
基于程序计数器,获取该取指令对应的第一虚地址。
可选的,查询地址维护列表,确定第一虚地址对应的目标项,包括:
基于地址维护列表,确定与第一虚地址的Tag一致的目标项。
可选的,基于地址维护列表,确定与第一虚地址的Tag一致的目标项,包括:
遍历地址维护列表,确定每一项的Tag是否与第一虚地址的Tag一致;如果一致,则将对应的一项作为第一虚地址的目标项;或
基于物理地址的Index,在地址维护列表中获取Index对应的至少一项;在上述至少一项中,将与第一虚地址的Tag一致的一项作为目标项。
可选的,该方法还包括:如果地址维护列表中不存在第一虚地址对应的目标项,则生成目标项,并添加到地址维护列表中。
可选的,生成目标项,包括:将第一虚地址或者物理地址的Tag作为目标Tag,将第一虚地址的地址二义性位作为目标地址二义性位,将第一虚地址对应的当前Cache作为目标Cache,生成目标项。
可选的,基于第一虚地址和目标项,确定第二虚地址,将第二虚地址的信息置为无效,包括:
在第一虚地址中,将地址二义性位替换为目标项的地址二义性位,得到第二虚地址;
访问目标Cache,在目标Cache中,将第二虚地址的信息置为无效。
可选的,获取访问地址对应的信息,并写回第一虚地址,包括:
获取第二虚地址中的信息并写回,将写回的信息填充到第一虚地址中;或
获取物理地址中的信息,将信息填充到第一虚地址中。
可选的,第一虚地址和第二虚地址用于访问L1 Cache(一级高速缓冲存储器)。
可选的,地址维护列表为Snoop Filter(侦听过滤器)列表。
可选的,地址维护列表的列表域包括:Tag、地址二义性位和Cache信息。
可选的,Cache信息包括:处理器核的第一标识和Cache的第二标识,第一标识用于指示Cache所属的处理器核,第二标识用于指示Cache为指令Cache或数据Cache。
本公开实施例中,可以基于地址维护列表记录存储器地址的Tag、地址二义性位和存储指令或数据的目标Cache,利用地址维护列表来维护物理地址和虚地址的一致性,保证一个物理地址只存在一个虚地址存储有效信息。由于地址维护列表数据量少,维护简单,可以在解决地址二义性的同时提高处理效率。
下面将从信息第一次被调取开始,对采用本公开提供的解决高速缓冲存储器地址二义性问题的访问方法进行介绍。本公开的实施例将基于同一个物理地址进行讨论。
参照图6所示的访存方法流程图,该访存方法如下:
步骤601,基于接收到的访问指令,确定对应的虚地址。
其中,访问指令可以包括对指令Cache的取指令,还可以包括对数据Cache的访存指令,访存指令是将指令地址码指示的存储单元中的操作数取出的取数指令或写入的存数指令。相对应的,虚地址中存储的信息可以包括数据和指令。
在一种可能的实施方式中,电子设备在运行过程中,任一处理器核可以接收到对Cache发起的访问。例如,当设备执行某个计算任务时,可以触发相应的访存指令,获取计算所需的数据。本实施例对触发访存指令的具体任务不作限定。
进而,当前处理器核可以基于访问指令中的基地址和偏移量,计算对应的虚地址,该虚地址可以用于访问当前处理器核的Cache,即该虚地址对应的当前Cache。具体的,可以是基于访问指令中携带的基地址寄存器的标识,从寄存器中获取对应的基地址,将基地址与偏移量相加,确定对应的虚地址。
可选的,取指令和访存指令可以具有不同的确定虚地址的方法,具体的处理可以如下:
当接收到取指令时,获取该取指令对应的第一虚地址;或
当接收到访存指令时,确定访存指令对应的第一虚地址。
其中,取指令对应的第一虚地址用于访问指令Cache,访存指令对应的第一虚地址用于访问数据Cache。
具体的,对于取指令,可以是基于程序计数器(PC,Program counter),获取该取指令的第一虚地址。程序计数器中的数值可以用于指示当前指令在指令Cache中的位置,该数值即为访问指令Cache的虚地址。
对于访存指令,可以基于指令中携带的基地址寄存器的标识,从寄存器中获取对应的基地址,将基地址与偏移量相加,确定对应的虚地址。
步骤602,基于确定的虚地址,访问Cache进行访问操作。
其中,虚地址可以包括Tag、Index和Block Offset。
可选的,此处访问的Cache可以是L1 Cache,L1 Cache可以是L1 I-Cache(一级指令高速缓冲存储器),也可以是L1D-Cache(一级数据高速缓冲存储器)。在此基础上,L2Cache(二级高速缓冲存储器)可以不再维护与L1 Cache的包含关系,即不再存储L1 Cache所存储的所有信息(Non-Inclusive),减少空间的占用,使得L2 Cache可以有更多的空间来实现其他任务的处理,提高系统的性能。
在一种可能的实施方式中,可以基于虚地址的Index从Cache中确定对应的一组Cache Line,也即,找到一个Cache Set。基于虚地址的Tag,可以在确定的一组Cache Line中判断每个Cache Line的Tag是否与目标地址的Tag相同,以及有效位是否指示存储有效信息,也即是Tag是否命中。如果命中,即Cache Line的Tag与目标地址的Tag相同,且有效位为1,指示存储有效信息,则通过选择器,选择命中的目标Cache Line中的Data Block,并根据Block Offset在Data Block中的相应位置读取或存储信息;如果未命中,即Cache Line的Tag与目标地址的Tag不相同,或有效位为0,指示未存储有效信息。
当对Cache Line的访问是第一次触发时,或Cache Line的信息已被替换时,基于虚地址访问Cache将未命中,则可以跳转至步骤603执行。
步骤603,当访问未命中时,查询地址维护列表,确定虚地址对应的目标项。
其中,如图7所示的地址维护列表示意图,地址维护列表中可以记录多项信息,每项列表域可以包括Tag、虚地址的地址二义性位和Cache信息。优选的,上述Tag可以是指物理地址的Tag。地址维护列表可以用于维护物理地址和虚地址的一致性,一项中所指示的物理地址和虚地址即为一对互相映射的虚实地址。
Cache信息用于指示存储有效信息的Cache。可选的,如图8所示,Cache信息可以进一步包括处理器核的第一标识和Cache的第二标识,第一标识可以用于指示Cache所属的处理器核,第二标识可以用于指示Cache为指令Cache或数据Cache。
示例性的,物理地址的Tag可以是28’h0080009;虚地址的地址二义性位可以是2’b01;Cache信息可以包括处理器核位向量(即第一标识),如0001,意思是在四核处理器中,第4个处理器核存储有物理地址的有效信息,并且用inst位(即第二标识)来标识Cache是指令Cache还是数据Cache,inst位为1表示指令Cache, inst位为0表示数据Cache。处理器核位向量和inst位共同构成Cache信息。
可选的,地址维护列表可以是Snoop Filter列表,采用Snoop Filter机制对取指令或访存指令进行监听,对地址维护列表进行维护,可以避免使用L2 Cache来解决地址二义性问题。当然,地址维护列表还可以是其他形式的目录,这些目录的共同点在于可以用于维护一致性,本实施例对具体的目录形式不作限定。
相对应的步骤603的处理可以如下:基于地址维护列表,确定与虚地址的Tag一致的目标项。
地址维护列表可以采用与Cache相类似的组织方式,也即是全相连、直接相连和组相连的组织方式。
在第一种可能的实施方式中,地址维护列表采用全相连的组织方式,在步骤603中可以是遍历地址维护列表,确定每一项的Tag是否与第一虚地址的Tag一致;如果一致,则将对应的一项作为第一虚地址的目标项。
在第二种可能的实施方式中,地址维护列表采用直接相连的组织方式,此时,地址维护列表每一项的索引可以与物理地址的Index相对应。在此基础上,在步骤603中可以基于物理地址的Index,在地址维护列表中获取Index对应的一项;在上述一项中,确定该项的Tag是否与第一虚地址的Tag一致;如果一致,则将该项作为第一虚地址的目标项。例如,当物理地址的Index指示第5行时,可以对地址维护列表获取第5行的1项表信息,如果其中的Tag与第一虚地址的Tag一致,则将该项作为目标项。
在第三种可能的实施方式中,地址维护列表采用组相连的组织方式,此时,地址维护列表每一项的索引也可以与物理地址的Index相对应。在此基础上,在步骤603中可以基于物理地址的Index,在地址维护列表中获取Index对应的多项;在上述多项中,确定每一项的Tag是否与第一虚地址的Tag一致;如果一致,则将对应的一项作为第一虚地址的目标项。例如,地址维护列表可以采用组相连的组成方式构成4路,当物理地址的Index指示第5行时,可以对每路地址维护列表获取第5行的表信息,得到4项表信息,将其中与第一虚地址的Tag一致的一项作为目标项。
可选的,地址维护列表的列表域还可以包括有效位,该有效位可以用于指示对应的一项是否有效,例如,当有效位为1时,该项有效,表明该项对应虚地址存储的信息有效;当有效位为0时,该项无效,表明该项对应虚地址存储的信息无效,或已被替换。在此基础上,上述目标项包括有效项,不包括无效项。
与步骤602同理,当访问指令是第一次触发或信息已被替换时,在地址维护列表中将查询不到虚地址的目标项,则可以跳转至步骤604、605执行。步骤604、605可以同时处理,也可以顺序处理,本实施例对步骤604、605具体的处理顺序不作限定。
步骤604,基于虚地址对应的物理地址,从下级存储系统中取回相应的信息。
在一种可能的实施方式中,在没有经过虚实地址转换时,可以将虚地址经过TLB进行虚实地址转换,得到对应的物理地址。进而访问下级存储系统,例如L2 Cache、内存等,通过物理地址获取对应的信息并取回,存储在当前的虚地址中,并向发起访存指令的访存部件反馈数据,或向发起取指令的取指部件返回指令。
步骤605,生成虚地址对应的目标项,并添加到地址维护列表中。
在一种可能的实施方式中,当访问是第一次触发或数据已被替换时,可以在地址维护列表中新增一项信息。
生成目标项的处理可以如下:将上述虚地址或者物理地址的Tag,作为目标Tag,将虚地址的地址二义性位作为目标地址二义性位,将虚地址对应的当前Cache作为目标Cache,生成目标项。
当地址维护列表可存储目标项的位置存在空项时,可以在任一空项中添加该目标项;当地址维护列表可存储目标项的位置不存在空项时,可以基于替换算法,将任意一项替换为该目标项。上述替换算法可以包括随机替换算法(Random)、最近最少使用算法(LRU,Least Recently Used)、访问次数最少算法(LFU,Least Frequently Used)等,本实施例对具体的替换算法不作限定。此外,还可以访问被替换的一项所指示的Cache,将被替换的一项所指示的虚地址中的信息置为无效。
可选的,对应于地址维护列表的索引与物理地址的Index相对应的情况,上述可存储目标项的位置是指物理地址的Index所指示的位置。
至此,当访问指令是第一次触发或信息被替换时,一个虚地址对应的访问流程已经介绍完毕。此时,在接收到访存指令的处理器核的数据Cache中,相应的虚地址Index对应的数据Cache Line上可以存储有上述取回的数据。或者在接收到取指令的处理器核的指令Cache中,相应的虚地址Index对应的指令Cache Line上可以存储有上述取回的指令。当该处理器核再次接收到访问该虚地址的访存指令时,或该处理器核再次取该虚地址的程序计数器对应的指令时,执行上述步骤601-602后可以从相应的虚地址上获取信息,不存在地址二义性的问题。
下面将对另一访问指令的访问方法进行介绍。
当另一访问指令的虚地址映射到相同物理地址上时,将产生地址二义性的问题。为了便于介绍,将上述另一访问指令的虚地址称为第一虚地址,将地址维护列表所指示的虚地址称为第二虚地址,第二虚地址与第一虚地址映射到同一物理地址。
对上述另一访问指令执行上述步骤601可以确定对应的第一虚地址,执行上述步骤602访问Cache并且可以确定未命中,执行上述步骤603可以确定第一虚地址对应的目标项,并跳转至步骤606执行。其中,步骤601-603的具体处理与上述同理,此处不再赘述。下面将对步骤606进行介绍。
步骤606,基于第一虚地址和目标项,确定第二虚地址,将第二虚地址的信息置为无效。
其中,目标项所记录的信息可以包括第二虚地址对应的目标Tag、目标地址二义性位和目标Cache。
在一种可能的实施方式中,由于第一虚地址和第二虚地址映射到同一物理地址,也即是Tag和Index除地址二义性位不同,其他相同。因此,第一虚地址和目标项所携带的信息可以构成目标项所指示的第二虚地址。
具体的,上述步骤606的处理可以如下:在第一虚地址中,将地址二义性位替换为目标地址二义性位,得到第二虚地址;访问目标Cache,在目标Cache中,将第二虚地址的信息置为无效。
当然,还可以采用其他方式构建第二虚地址,例如可以获取目标项中的目标Tag、目标地址二义性位和第一虚地址除Tag、地址二义性位之外的信息,构建第二虚地址。本实施例对此不作限定。
在确定第二虚地址之后,可以访问目标项所指示的目标Cache。该目标Cache的处理器核可以是接收到上述另一访问的处理器核,也即当前处理器核,也可以是另一处理器核,可以是指令Cache,也可以是数据Cache。在目标Cache中,将第二虚地址上存储的信息置为无效。
进而,跳转至步骤607。
步骤607,获取访问指令对应的信息,并写回第一虚地址。
在一种可能的实施方式中,步骤607的具体处理与上述步骤604相同,即获取物理地址中的信息,将获取的信息填充到第一虚地址中,此处不再赘述。
在另一种可能的实施方式中,还可以是获取第二虚地址中的信息并写回,将写回的信息填充到第一虚地址中。此时,对第二虚地址执行的无效操作可以是无效写回。
至此,只有第一虚地址能够存储物理地址的有效信息,避免了第二虚地址继续存储该有效信息,解决了地址二义性问题。
由于此时的地址维护列表指示的是第二虚地址,可以跳转至步骤607,对目标项进行更新。
步骤608,基于第一虚地址,更新地址维护列表。
当第一虚地址的地址二义性位与目标项的地址二义性位不一致时,将目标项中的地址二义性位,更新为第一虚地址的地址二义性位。此外,当第一虚地址对应的当前Cache与目标Cache不一致时,将目标项的目标Cache,更新为当前Cache。
在一种具体的实施方式中,可以是分别对目标项中的每项信息进行判断,每当判断结果为不一致时,将相应的信息进行更新。对于图8所示的地址维护列表,可以是分别对第一虚地址的地址二义性位与目标项的地址二义性位,以及当前处理器核与目标项所指示的处理器核,当前Cache与目标项所指示的目标Cache进行判断,每当判断结果为不一致时,将相应的信息进行更新。
在另一种具体的实施方式中,也可以不执行判断,直接将目标地址二义性位,更新为第一虚地址的地址二义性位;将目标Cache,更新为当前Cache,即将当前Cache的信息更新为目标Cache信息。对于图8所示的地址维护列表,可以是基于当前处理器核更新第一标识,基于当前Cache是指令Cache或数据Cache更新第二标识。对于相同的信息,更新后自然未发生变更。
在后续的过程中,当接收到访存指令时,或接收到取指令时,均可基于上面介绍的流程进行处理,利用地址维护列表对虚地址和物理地址的一致性进行维护,解决地址二义性问题。
本公开可以获得如下有益效果:
(1)地址维护列表数据量少,维护简单,可以在解决地址二义性的同时提高处理效率。
(2)上述过程均可基于硬件实现,相比于软件的方法,时延较小。
(3)地址维护列表可以是Snoop Filter列表,通过复用Snoop Filter机制,提高现有系统的性能。
(4)可以不再使用L2 Cache重复存储L1 Cache的所有信息,不再通过维护包含关系的方式来解决地址二义性问题,减少空间的占用,使得L2 Cache可以有更多的空间来实现其他任务的处理,提高现有系统的性能。
本公开实施例提供了一种解决高速缓冲存储器地址二义性问题的装置,该装置用于实现上述解决高速缓冲存储器地址二义性问题的方法。如图9所示的解决高速缓冲存储器地址二义性问题的装置的示意性框图,解决高速缓冲存储器地址二义性问题的装置900包括:接收模块901,查询模块902,无效模块903,获取模块904。
接收模块901,用于基于接收到的访问指令,确定对应的第一虚地址;
查询模块902,用于当基于所述第一虚地址访问未命中时,查询地址维护列表,确定所述第一虚地址对应的目标项,所述目标项所记录的信息包括目标Tag、目标地址二义性位和目标Cache;
无效模块903,用于基于所述第一虚地址和所述目标项,确定第二虚地址,将所述第二虚地址的信息置为无效,其中,所述第二虚地址与所述第一虚地址映射到同一物理地址;
获取模块904,用于获取所述访问指令对应的信息,并写回所述第一虚地址。
可选的,所述装置还包括更新模块,所述更新模块用于:
基于所述第一虚地址,更新所述地址维护列表。
可选的,所述更新模块用于:
当所述第一虚地址的地址二义性位与所述目标地址二义性位不一致时,将所述目标地址二义性位,更新为所述第一虚地址的地址二义性位。
可选的,所述目标Cache,至少包括以下任意一种:
当前处理器核的指令Cache或数据Cache,或,其他处理器核的指令Cache或数据Cache,其中,所述当前处理器核用于接收所述访问指令。
可选的,所述接收模块901用于:
当接收到取指令时,获取所述取指令对应的第一虚地址,所述取指令对应的第一虚地址用于访问指令Cache的程序计数器;或
当接收到访存指令时,确定所述访存指令对应的第一虚地址,所述访存指令对应的第一虚地址用于访问数据Cache。
可选的,所述接收模块901用于:
基于程序计数器,获取所述取指令的第一虚地址。
可选的,所述查询模块902用于:
基于地址维护列表,确定与所述第一虚地址的Tag一致的目标项。
可选的,所述查询模块902用于:
遍历所述地址维护列表,确定每一项的Tag是否与所述第一虚地址的Tag一致;如果一致,则将对应的一项作为所述第一虚地址的目标项;或
基于所述物理地址的索引Index,在所述地址维护列表中获取所述Index对应的至少一项;在所述至少一项中,将与所述第一虚地址的Tag一致的一项作为目标项。
可选的,所述更新模块还用于:
如果所述地址维护列表中不存在所述第一虚地址对应的目标项,则生成所述目标项,并添加到所述地址维护列表中。
可选的,所述更新模块用于:
将所述第一虚地址或者所述物理地址的Tag作为目标Tag,将所述第一虚地址的地址二义性位作为目标地址二义性,将所述第一虚地址对应的当前Cache作为目标Cache,生成所述目标项。
可选的,所述无效模块903用于:
在所述第一虚地址中,将地址二义性位替换为所述目标地址二义性位,得到第二虚地址;
访问所述目标Cache,在所述目标Cache中,将所述第二虚地址的信息置为无效。
可选的,所述获取模块904用于:
获取所述第二虚地址中的信息并写回,将写回的信息填充到所述第一虚地址中;或
获取所述物理地址中的信息,将信息填充到所述第一虚地址中。
可选的,所述第一虚地址和所述第二虚地址用于访问一级高速缓冲存储器L1Cache。
可选的,所述地址维护列表为侦听过滤器Snoop Filter列表。
可选的,所述地址维护列表的列表域包括:Tag、地址二义性位和Cache信息。
可选的,所述Cache信息包括:处理器核的第一标识和Cache的第二标识,所述第一标识用于指示所述Cache所属的处理器核,所述第二标识用于指示所述Cache为指令Cache或数据Cache。
本公开实施例中,可以采用地址维护列表来确定是否存在地址二义性,若存在,则可以基于地址维护列表来维护虚地址和物理地址的一致性。并且,地址维护列表数据量少,维护简单,可以在解决地址二义性的同时提高处理效率。
本公开示例性实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。存储器存储有能够被至少一个处理器执行的计算机程序,计算机程序在被至少一个处理器执行时用于使电子设备执行根据本公开实施例的方法。
本公开示例性实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,计算机程序在被计算机的处理器执行时用于使计算机执行根据本公开实施例的方法。
本公开示例性实施例还提供一种计算机程序产品,包括计算机程序,其中,计算机程序在被计算机的处理器执行时用于使计算机执行根据本公开实施例的方法。
参考图10,现将描述可以作为本公开的服务器或客户端的电子设备1000的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,数据中心服务器、笔记本电脑、瘦客户机、膝上型计算机、台式计算机、工作站、个人数字助理、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图10所示,电子设备1000包括计算单元1001,其可以根据存储在只读存储器(ROM)1002中的计算机程序或者从存储单元1008加载到随机访问存储器(RAM)1003中的计算机程序,来执行各种适当的动作和处理。在RAM1003中,还可存储设备1000操作所需的各种程序和数据。计算单元1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
电子设备1000中的多个部件连接至I/O接口1005,包括:输入单元1006、输出单元1007、存储单元1008以及通信单元1009。输入单元1006可以是能向电子设备1000输入信息的任何类型的设备,输入单元1006可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元1007可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元1008可以包括但不限于磁盘、光盘。通信单元1009允许电子设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
计算单元1001可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1001的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1001执行上文所描述的各个方法和处理。例如,在一些实施例中,解决高速缓冲存储器地址二义性问题的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1008。在一些实施例中,计算机程序的部分或者全部可以经由ROM1002和/或通信单元1009而被载入和/或安装到电子设备1000上。在一些实施例中,计算单元1001可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行解决高速缓冲存储器地址二义性问题的方法。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
如本公开使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
Claims (19)
1.一种解决高速缓冲存储器地址二义性问题的方法,其特征在于,所述方法包括:
基于接收到的访问指令,确定对应的第一虚地址;
当基于所述第一虚地址访问未命中时,查询地址维护列表,确定所述第一虚地址对应的目标项,所述目标项所记录的信息用于指示目标标签Tag、目标地址二义性位和目标高速缓冲存储器Cache;
基于所述第一虚地址和所述目标项,确定第二虚地址,将所述第二虚地址的信息置为无效,其中,所述第二虚地址与所述第一虚地址映射到同一物理地址;
获取所述访问指令对应的信息,并写回所述第一虚地址。
2.根据权利要求1所述的解决高速缓冲存储器地址二义性问题的方法,其特征在于,所述方法还包括:
基于所述第一虚地址,更新所述地址维护列表。
3.根据权利要求2所述的解决高速缓冲存储器地址二义性问题的方法,其特征在于,所述基于所述第一虚地址,更新所述地址维护列表,包括:
当所述第一虚地址的地址二义性位与所述目标地址二义性位不一致时,将所述目标地址二义性位,更新为所述第一虚地址的地址二义性位。
4.根据权利要求1所述的解决高速缓冲存储器地址二义性问题的方法,其特征在于,所述目标Cache,至少包括以下任意一种:当前处理器核的指令Cache或数据Cache,或,其他处理器核的指令Cache或数据Cache,其中,所述当前处理器核用于接收所述访问指令。
5.根据权利要求1所述的解决高速缓冲存储器地址二义性问题的方法,其特征在于,所述基于接收到的访问指令,确定对应的第一虚地址,包括:
当接收到取指令时,获取所述取指令对应的第一虚地址,所述取指令对应的第一虚地址用于访问指令Cache;或
当接收到访存指令时,确定所述访存指令对应的第一虚地址,所述访存指令对应的第一虚地址用于访问数据Cache。
6.根据权利要求5所述的解决高速缓冲存储器地址二义性问题的方法,其特征在于,所述获取所述取指令对应的第一虚地址,包括:
基于程序计数器,获取所述取指令对应的第一虚地址。
7.根据权利要求1所述的解决高速缓冲存储器地址二义性问题的方法,其特征在于,所述查询地址维护列表,确定所述第一虚地址对应的目标项,包括:
基于地址维护列表,确定与所述第一虚地址的Tag一致的目标项。
8.根据权利要求7所述的解决高速缓冲存储器地址二义性问题的方法,其特征在于,所述基于地址维护列表,确定与所述第一虚地址的Tag一致的目标项,包括:
遍历所述地址维护列表,确定每一项的Tag是否与所述第一虚地址的Tag一致;如果一致,则将对应的一项作为所述第一虚地址的目标项;或
基于所述物理地址的索引Index,在所述地址维护列表中获取所述Index对应的至少一项;在所述至少一项中,将与所述第一虚地址的Tag一致的一项作为目标项。
9.根据权利要求1所述的解决高速缓冲存储器地址二义性问题的方法,其特征在于,所述方法还包括:
如果所述地址维护列表中不存在所述第一虚地址对应的目标项,则生成所述目标项,并添加到所述地址维护列表中。
10.根据权利要求9所述的解决高速缓冲存储器地址二义性问题的方法,其特征在于,所述生成所述目标项,包括:
将所述第一虚地址或者所述物理地址的Tag作为目标Tag,将所述第一虚地址的地址二义性位作为目标地址二义性位,将所述第一虚地址对应的当前Cache作为目标Cache,生成所述目标项。
11.根据权利要求1所述的解决高速缓冲存储器地址二义性问题的方法,其特征在于,所述基于所述第一虚地址和所述目标项,确定第二虚地址,将所述第二虚地址的信息置为无效,包括:
在所述第一虚地址中,将地址二义性位替换为所述目标地址二义性位,得到第二虚地址;
访问所述目标Cache,在所述目标Cache中,将所述第二虚地址的信息置为无效。
12.根据权利要求1所述的解决高速缓冲存储器地址二义性问题的方法,其特征在于,所述获取所述访问地址对应的信息,并写回所述第一虚地址,包括:
获取所述第二虚地址中的信息并写回,将写回的信息填充到所述第一虚地址中;或
获取所述物理地址中的信息,将信息填充到所述第一虚地址中。
13.根据权利要求1所述的解决高速缓冲存储器地址二义性问题的方法,其特征在于,所述第一虚地址和所述第二虚地址用于访问一级高速缓冲存储器L1 Cache。
14.根据权利要求1所述的解决高速缓冲存储器地址二义性问题的方法,其特征在于,所述地址维护列表为侦听过滤器Snoop Filter列表。
15.根据权利要求1所述的解决高速缓冲存储器地址二义性问题的方法,其特征在于,所述地址维护列表的列表域包括:Tag、地址二义性位和Cache信息。
16.根据权利要求15所述的解决高速缓冲存储器地址二义性问题的方法,其特征在于,所述Cache信息包括:处理器核的第一标识和Cache的第二标识,所述第一标识用于指示所述Cache所属的处理器核,所述第二标识用于指示所述Cache为指令Cache或数据Cache。
17.一种解决高速缓冲存储器地址二义性问题的装置,其特征在于,所述装置包括:
接收模块,用于基于接收到的访问指令,确定对应的第一虚地址;
查询模块,用于当基于所述第一虚地址访问未命中时,查询地址维护列表,确定所述第一虚地址对应的目标项,所述目标项所记录的信息用于指示目标Tag、目标地址二义性位和目标Cache;
无效模块,用于基于所述第一虚地址和所述目标项,确定第二虚地址,将所述第二虚地址的信息置为无效,其中,所述第二虚地址与所述第一虚地址映射到同一物理地址;
获取模块,用于获取所述访问指令对应的信息,并写回所述第一虚地址。
18.一种电子设备,包括:
处理器;以及
存储程序的存储器,
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-16中任一项所述的方法。
19.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行根据权利要求1-16中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111548542.9A CN113934655B (zh) | 2021-12-17 | 2021-12-17 | 解决高速缓冲存储器地址二义性问题的方法和装置 |
PCT/CN2022/082036 WO2023108938A1 (zh) | 2021-12-17 | 2022-03-21 | 解决高速缓冲存储器地址二义性问题的方法和装置 |
EP22868428.8A EP4227814A1 (en) | 2021-12-17 | 2022-03-21 | Method and apparatus for solving address ambiguity problem of cache |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111548542.9A CN113934655B (zh) | 2021-12-17 | 2021-12-17 | 解决高速缓冲存储器地址二义性问题的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113934655A true CN113934655A (zh) | 2022-01-14 |
CN113934655B CN113934655B (zh) | 2022-03-11 |
Family
ID=79289314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111548542.9A Active CN113934655B (zh) | 2021-12-17 | 2021-12-17 | 解决高速缓冲存储器地址二义性问题的方法和装置 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4227814A1 (zh) |
CN (1) | CN113934655B (zh) |
WO (1) | WO2023108938A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115563027A (zh) * | 2022-11-22 | 2023-01-03 | 北京微核芯科技有限公司 | 存数指令的执行方法、系统及装置 |
WO2023108938A1 (zh) * | 2021-12-17 | 2023-06-22 | 北京微核芯科技有限公司 | 解决高速缓冲存储器地址二义性问题的方法和装置 |
CN117472802A (zh) * | 2023-12-28 | 2024-01-30 | 北京微核芯科技有限公司 | 高速缓存访问方法、处理器、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107066396A (zh) * | 2015-10-15 | 2017-08-18 | Arm 有限公司 | 用于操作虚拟索引的物理标记的缓存的装置及方法 |
CN107111455A (zh) * | 2014-12-26 | 2017-08-29 | 威斯康星校友研究基金会 | 使用虚拟地址的缓存访问 |
CN112753024A (zh) * | 2018-09-25 | 2021-05-04 | Ati科技无限责任公司 | 基于外部存储器的转换后备缓冲器 |
WO2021234351A1 (en) * | 2020-05-19 | 2021-11-25 | Arm Limited | Translation table address storage circuitry |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR920001282B1 (ko) * | 1987-10-02 | 1992-02-10 | 가부시키가이샤 히타치세이사쿠쇼 | 버퍼메모리 제어장치 |
US20040117590A1 (en) * | 2002-12-12 | 2004-06-17 | International Business Machines Corp. | Aliasing support for a data processing system having no system memory |
US8984254B2 (en) * | 2012-09-28 | 2015-03-17 | Freescale Semiconductor, Inc. | Techniques for utilizing translation lookaside buffer entry numbers to improve processor performance |
US10324846B2 (en) * | 2017-09-21 | 2019-06-18 | International Business Machines Corporation | Bits register for synonyms in a memory system |
CN113934655B (zh) * | 2021-12-17 | 2022-03-11 | 北京微核芯科技有限公司 | 解决高速缓冲存储器地址二义性问题的方法和装置 |
-
2021
- 2021-12-17 CN CN202111548542.9A patent/CN113934655B/zh active Active
-
2022
- 2022-03-21 WO PCT/CN2022/082036 patent/WO2023108938A1/zh active Application Filing
- 2022-03-21 EP EP22868428.8A patent/EP4227814A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107111455A (zh) * | 2014-12-26 | 2017-08-29 | 威斯康星校友研究基金会 | 使用虚拟地址的缓存访问 |
CN107066396A (zh) * | 2015-10-15 | 2017-08-18 | Arm 有限公司 | 用于操作虚拟索引的物理标记的缓存的装置及方法 |
CN112753024A (zh) * | 2018-09-25 | 2021-05-04 | Ati科技无限责任公司 | 基于外部存储器的转换后备缓冲器 |
WO2021234351A1 (en) * | 2020-05-19 | 2021-11-25 | Arm Limited | Translation table address storage circuitry |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023108938A1 (zh) * | 2021-12-17 | 2023-06-22 | 北京微核芯科技有限公司 | 解决高速缓冲存储器地址二义性问题的方法和装置 |
CN115563027A (zh) * | 2022-11-22 | 2023-01-03 | 北京微核芯科技有限公司 | 存数指令的执行方法、系统及装置 |
CN117472802A (zh) * | 2023-12-28 | 2024-01-30 | 北京微核芯科技有限公司 | 高速缓存访问方法、处理器、电子设备及存储介质 |
CN117472802B (zh) * | 2023-12-28 | 2024-03-29 | 北京微核芯科技有限公司 | 高速缓存访问方法、处理器、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023108938A1 (zh) | 2023-06-22 |
EP4227814A1 (en) | 2023-08-16 |
CN113934655B (zh) | 2022-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113934655B (zh) | 解决高速缓冲存储器地址二义性问题的方法和装置 | |
US9858192B2 (en) | Cross-page prefetching method, apparatus, and system | |
JP6859361B2 (ja) | 中央処理ユニット(cpu)ベースシステムにおいて複数のラストレベルキャッシュ(llc)ラインを使用してメモリ帯域幅圧縮を行うこと | |
US20210089470A1 (en) | Address translation methods and systems | |
JP2017519286A (ja) | 中央処理装置(cpu)搭載システム内の圧縮メモリコントローラ(cmc)を使用したメモリ帯域圧縮の提供 | |
CN109219804B (zh) | 非易失内存访问方法、装置和系统 | |
CN113641596B (zh) | 缓存管理方法、缓存管理装置、处理器 | |
KR101893966B1 (ko) | 메모리 관리 방법 및 장치, 및 메모리 컨트롤러 | |
KR20160060550A (ko) | 효율적인 맵핑을 위한 페이지 캐시 장치 및 방법 | |
CN113900966B (zh) | 一种基于Cache的访存方法及装置 | |
US20230102891A1 (en) | Re-reference interval prediction (rrip) with pseudo-lru supplemental age information | |
CN112631962A (zh) | 存储管理装置、存储管理方法、处理器和计算机系统 | |
CN114637700A (zh) | 针对目标虚拟地址的地址转换方法、处理器及电子设备 | |
CN114238167A (zh) | 信息预取方法、处理器、电子设备 | |
CN114064524A (zh) | 一种服务器、提升服务器性能的方法、装置及介质 | |
US20140013054A1 (en) | Storing data structures in cache | |
CN114924794B (zh) | 一种存储部件的发射队列的地址存储、调度方法和装置 | |
CN113656330B (zh) | 确定访问地址的方法和装置 | |
CN115061955A (zh) | 处理器、电子设备、地址翻译方法以及缓存页表项方法 | |
CN115098410A (zh) | 处理器、用于处理器的数据处理方法及电子设备 | |
CN113656331A (zh) | 基于高低位的确定访问地址的方法和装置 | |
CN115033500A (zh) | 缓存系统模拟方法、装置、设备和存储介质 | |
JP2022156563A (ja) | 情報処理装置及び情報処理方法 | |
JP2012113721A (ja) | メモリシステム | |
CN107861890A (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 |