CN113918484B - M路高速缓存存储器和使用m路高速缓存存储器的方法 - Google Patents
M路高速缓存存储器和使用m路高速缓存存储器的方法 Download PDFInfo
- Publication number
- CN113918484B CN113918484B CN202111007241.5A CN202111007241A CN113918484B CN 113918484 B CN113918484 B CN 113918484B CN 202111007241 A CN202111007241 A CN 202111007241A CN 113918484 B CN113918484 B CN 113918484B
- Authority
- CN
- China
- Prior art keywords
- way
- cache memory
- memory
- instruction
- predetermined number
- 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
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种M路高速缓存存储器和一种使用M路高速缓存存储器的方法。该高速缓存存储器包括多路,每路包括指令存储器部分,其中该指令存储器部分包括多个指令存储器位置,用于存储对多个CPU指令进行编码的指令数据。该高速缓存存储器还包括控制器,用于确定预定数量的高速缓存存储器命中条件中的每一个已发生,以及替换策略电路,用于将多路中的一路确认为经历了所述预定数量的高速缓存存储器命中条件中最少数量的命中。其中,该控制器还用于确定高速缓存存储器未命中条件已发生,并且响应于该未命中条件,使得从RAM中检索到的指令数据被写入替换策略电路确认的路的指令存储器部分。
Description
技术领域
本发明通常涉及高速缓存存储器,特别涉及一种M路高速缓存存储器和一种使用M路高速缓存存储器的方法。
背景技术
高速缓存存储器用于计算机系统中以减少频繁使用指令的指令访问时间。中央处理单元(Central Processing Unit,CPU)可执行指令存储在随机存取存储器(RandomAccess Memory,RAM)中,并可根据需要由CPU访问。一些(但不是全部)指令,例如最近使用的指令,额外存储在高速缓存存储器中。由于高速缓存存储器比RAM快,所以优先选择高速缓存存储器,如果CPU所需的指令存储在高速缓存存储器中,则使用高速缓存存储器。如果CPU需要的指令未存储在高速缓存存储器中,则从RAM中检索该指令。然后可以根据替换策略将从RAM中检索到的指令存储在高速缓存存储器中。所属技术领域需要的是改进的替换策略。
发明内容
本发明一方面提供了一种M路高速缓存存储器。所述高速缓存存储器包括多路,每路包括指令存储器部分,其中所述指令存储器部分包括多个指令存储器位置,用于存储对多个中央处理单元CPU指令进行编码的指令数据。所述高速缓存存储器还包括控制器,用于确定预定数量的高速缓存存储器命中条件中的每一个已发生,和替换策略电路,用于将所述多路中的一路认定为经历了所述预定数量的高速缓存存储器命中条件中最少数量的命中。其中,所述控制器还用于确定高速缓存存储器未命中条件已发生,并且响应于所述未命中条件,使得从随机存取存储器RAM中检索到的指令数据被写入所述替换策略电路确认的路的指令存储器部分。
在一些实施例中,所述替换策略电路用于存储所述预定数量的高速缓存存储器命中条件中所述多路中的每路已经历的命中数量。
在一些实施例中,所述替换策略电路包括与每路对应的计数器,其中每个对应的计数器用于保持所述预定数量的高速缓存存储器命中条件中对应路已经历的命中数量的计数。
在一些实施例中,所述替换策略电路包括与每路对应的增量比较器,其中每个对应的增量比较器用于响应于对应路经历了命中,使得对应的计数器增加所述预定数量的高速缓存存储器命中条件中对应路已经历的命中数量的计数。
在一些实施例中,所述替换策略电路包括与每路对应的减量比较器,其中每个对应的减量比较器用于响应于高速缓存存储器命中的发生,使得对应的计数器减少所述预定数量的高速缓存存储器命中条件中对应路已经历的命中数量的计数,以使所述对应路已经历的命中不再被包含在所述预定数量的高速缓存存储器命中条件中。
在一些实施例中,所述替换策略电路用于存储数据,所述数据确认已经历了每个所述预定数量的高速缓存存储器命中条件中的命中的路。
在一些实施例中,所述替换策略电路包括用于存储数据的先进先出队列FIFO电路,所述数据确认已经历了每个所述预定数量的高速缓存存储器命中条件中的命中的路。
在一些实施例中,所述替换策略电路包括最小计数电路,所述最小计数电路用于通过比较所述预定数量的高速缓存存储器命中条件中每路已经历的命中数量与所述预定数量的高速缓存存储器命中条件中每个其他路已经历的命中数量中的一个或多个,来将一路确定为经历了所述预定数量的高速缓存存储器命中条件中最少数量的命中。
在一些实施例中,所述高速缓存存储器未命中条件是响应于包括标签部分和索引部分的CPU地址而发生的,其中存储在所述RAM中与CPU地址对应的位置处的所述指令数据没有被存储在任何路中,并且其中所述控制器还用于使从所述RAM中检索到的所述指令数据被写入所述替换策略电路确认的路的指令存储器部分中由所述索引部分确认的存储器位置处。
在一些实施例中,每路还包括标签存储器部分,其中所述标签存储器部分包括用于存储标签数据的多个标签存储器位置,所述标签数据对存储有所述CPU指令的多个RAM存储器地址范围进行编码,其中所述控制器还用于使所述CPU地址的标签部分被写入所述替换策略电路确认的路的指令存储器部分中由所述索引部分确认的存储器位置处。
本发明另一方面提供了一种使用M路高速缓存存储器的方法。所述方法包括,具有多路,每路包括指令存储器部分,其中所述指令存储器部分包括多个指令存储器位置,在所述多路的指令存储器位置中存储对多个中央处理单元CPU指令进行编码的指令数据。所述方法还包括,利用控制器来确定预定数量的高速缓存存储器命中条件中的每一个已发生,利用替换策略电路将多路中的一路确认为经历了所述预定数量的高速缓存存储器命中条件中最少数量的命中,利用所述控制器确定所述高速缓存存储器未命中条件已发生,并且利用所述控制器响应于所述未命中条件,使得从随机存取存储器RAM中检索到的指令数据被写入由所述替换策略电路确认的路的指令存储器部分。
在一些实施例中,所述方法还包括,利用所述替换策略电路存储所述预定数量的高速缓存存储器命中条件中所述多路中的每路已经历的命中数量。
在一些实施例中,所述替换策略电路包括与每路对应的计数器,所述方法还包括,利用每个对应的计数器来保持所述预定数量的高速缓存存储器命中条件中对应路已经历的命中数量的计数。
在一些实施例中,所述替换策略电路包括与每路对应的增量比较器,所述方法还包括,利用每个对应的增量比较器响应于对应路经历了命中,使对应的计数器增加所述预定数量的高速缓存存储器命中条件中对应路已经历的命中数量的计数。
在一些实施例中,所述替换策略电路包括与每路对应的减量比较器,所述方法还包括,利用每个对应的减量比较器响应于高速缓存存储器命中的发生,使对应的计数器减少所述预定数量的高速缓存存储器命中条件中对应路已经历的命中数量的计数,以使所述对应路已经历的命中不再被包含在所述预定数量的高速缓存存储器命中条件中。
在一些实施例中,所述方法还包括利用所述替换策略电路存储数据,所述数据确认已经历了每个所述预定数量的高速缓存存储器命中条件中的命中的路。
在一些实施例中,所述替换策略电路包括先进先出队列FIFO电路,所述方法还包括,利用所述FIFO电路存储数据,所述数据确认已经历了每个所述预定数量的高速缓存存储器命中条件中的命中的路。
在一些实施例中,所述替换策略电路包括最小计数电路,所述方法还包括,利用所述最小计数电路通过比较所述预定数量的高速缓存存储器命中条件中每路已经历的命中数量与所述预定数量的高速缓存存储器命中条件中每个其他路已经历的命中数量中的一个或多个,来将一路确定为经历了所述预定数量的高速缓存存储器命中条件中最少数量的命中。
在一些实施例中,所述高速缓存存储器未命中条件是响应于包括标签部分和索引部分的CPU地址而发生的,并且存储在所述RAM中与CPU地址对应的位置处的指令数据没有被存储在任何路中,所述方法还包括,利用所述控制器使从所述RAM中检索到的指令数据被写入所述替换策略电路确认的路的指令存储器部分中由所述索引部分确认的存储器位置处。
在一些实施例中,每路还包括标签存储器部分,其中每个标签存储器部分包括用于存储标签数据的多个标签存储器位置,所述标签数据对存储有所述CPU指令的多个RAM存储器地址范围进行编码,其中所述方法还包括,利用所述控制器使所述CPU地址的所述标签部分被写入所述替换策略电路确认的路的指令存储器部分中由所述索引部分确认的存储器位置处。
附图说明
图1是示出了计算机系统的示意性框图。
图2是根据一些实施例的高速缓存存储器的示意图。
图3是根据一些实施例的高速缓存存储器系统的示意图。
图4是根据一些实施例的替换策略电路的示意图。
图5示出了一种使用高速缓存存储器的方法的流程图。
图6示出了另一种使用高速缓存存储器的方法的流程图。
具体实施方式
本文将结合附图来对本发明的特定实施例进行阐述。
本文将阐明与某些实施例相关的各种细节。但是,本发明也可以以与本文所描述的不同的方式来实施。本领域技术人员可以在不脱离本发明的情况下,对所讨论的实施例进行修改。因此,本发明并不限于本文公开的特定实施例。
图1是计算机系统100的示意图。计算机系统100包括CPU110,RAM120和高速缓存存储器130。
存储在高速缓存存储器130中的信息包括CPU 110执行软件应用程序可能需要的指令。存储在高速缓存存储器130中的信息还包括每条特定指令确认存储有该特定指令的RAM 120的一部分或地址范围的信息。该确认信息被称为标签。如本领域技术人员所理解的那样,其他信息例如偏移量,可以附加地存储在高速缓存存储器中。
如本领域技术人员所理解的那样,在计算机系统中,高速缓存存储器可以被分为多路,其中每路都是独立地写入和读取。为了从高速缓存存储器中获取指令,CPU向高速缓存存储器提供地址。该CPU地址包括标签部分和索引部分。在一些实施例中,如本领域技术人员所理解的那样,该CPU地址还可以包括其他信息,例如偏移量。
在一些高速缓存存储器中,CPU地址的索引部分用于从每一路中读取一条指令及其对应的标签。相应地,根据CPU地址的索引部分,可从高速缓存存储器中读取与多路相对应的多个指令以及每个指令相对应的标签。
在一些高速缓冲存储器中,与指令相关的标签分别与CPU地址的标签部分进行比较。如果其中一个标签与CPU地址的标签部分匹配,则将匹配标签对应的指令作为CPU所请求的指令提供给CPU。如果没有一个标签与CPU地址的标签部分匹配,则CPU所请求的指令不在高速缓存存储器中,而是必须从RAM中检索。
当CPU所请求的指令不能在高速缓存存储器中获得时,将从RAM中获取该指令。此外,从RAM中获取的指令可以被写入高速缓存存储器中,以便对来自CPU的后续请求可用。待写入高速缓存存储器的指令可以被写入存储器的M路中被特定确认的一路中由CPU地址的索引部分确认的位置处。
指令将被写入M路中的哪一路可以基于具有以下更详细讨论的特性的高速缓存存储器替换策略来确定。
图2是根据一些实施例的高速缓存存储器200的示意图。高速缓存存储器200可以在计算机系统100中用作高速缓存存储器130。高速缓存存储器200包括M路230,其中每路包括标签存储器部分210和指令存储器部分220。
在一些实施例中,如本领域技术人员所理解的那样,高速缓存存储器200的路包括一个或多个其他存储器部分。例如,在一些实施例中,如本领域技术人员所理解的那样,每路包括有效位部分,其中有效位部分中的每一位指示特定指令是否有效。
指令存储器部分220可以根据替换策略被写入与CPU指令相对应的数据。此外,标签存储器部分210被写入与存储有指令的RAM的部分或地址范围相对应的数据。
指令存储器部分220可以包括一个或多个存储器电路,尽管其被抽象地或概念上地分割成M路。相应地,指令存储器部分220可以包括一个或多个存储器单元阵列,每个存储器单元阵列从多个外围电路接收信号并向这多个外围电路提供信号,这些外围电路用于访问存储器单元以写入和读取指令信息。如本领域技术人员所理解的那样,外围电路可以包括例如地址解码器、感测放大器、列多路复用器和输出缓冲器。在一些实施例中,外围电路可以包括一个或多个其他电路。这些存储器单元中的每一个都是一个特定的路的组成部分。然而,外围电路可以各自从一个或多个路的存储器单元接收信号或向其提供信号。
标签存储器部分210可以包括一个或多个存储器电路。相应地,每路包括存储器单元阵列,该存储器单元阵列从多个外围电路接收信号并向这多个外围电路提供信号,这些外围电路用于访问存储器单元以写入和读取标签信息。如本领域技术人员所理解的那样,外围电路可以包括例如地址解码器、感测放大器、列多路复用器和输出缓冲器。在一些实施例中,外围电路可以包括一个或多个其他电路。这些存储器单元和外围电路的每一个都构成一个特定的路。
高速缓存存储器200被构造成:CPU(例如CPU110)向高速缓存存储器200提供地址以从中获取指令。CPU地址包括标签部分和索引部分。在一些实施例中,如本领域技术人员所理解的那样,CPU地址还可以附加地包括其他信息,例如偏移量。
CPU地址的索引部分确认M路的标签存储器部分210(0)至210(M-1)的每一个中的存储器位置。M个标签存储器部分210(0)至210(M-1)的每一个都与M路的指令存储器部分220(0)至220(M-1)中相应的一个中的存储器位置相关联。M路的M个标签存储器部分210(0)至210(M-1)和指令存储器部分220(0)至220(M-1)的关联至少由M个标签存储器部分210(0)至210(M-1)中的每一个及其相关的指令存储器部分220(0)至220(M-1)以硬件实例化,该相关的指令存储器部分220(0)至220(M-1)具有部分或全部由CPU地址的索引部分确认的地址。
读取由CPU地址的索引部分确认的M个标签存储器部分210(0)至210(M-1)以检索M个标签。M个标签分别与CPU地址的标签部分进行比较。如果M个标签之一与CPU地址的标签部分匹配,则确定高速缓存存储器命中条件,并确认具有匹配标签的路。随后,利用CPU地址的索引部分从所确认的路的指令存储器部分220(x)中读取指令。从所确认的路的指令存储器部分220(x)读取的指令作为CPU所请求的指令返回给CPU。
如果没有一个标签与CPU地址的标签部分匹配,则CPU所请求的指令不在高速缓存存储器中,确认高速缓存存储器未命中条件,且必须从RAM中检索CPU所请求的指令。
此外,在一些实施例中,CPU所请求的指令也被写入高速缓存存储器的M路的指令存储器部分220(0)至220(M-1)之一中的存储器位置,并且与先前存储的M个标签不匹配的CPU地址的标签部分被写入相应的标签存储器部分210(0)至210(M-1)。
M个指令存储器部分220(0)至220(M-1)和M个标签存储器部分210(0)至210(M-1)中的哪一个存储了所请求的CPU指令和其相应的标签,由高速缓存存储器替换策略确定。所确定的指令存储器部分和标签存储器部分的具体存储器位置由CPU地址的索引部分确认。
图3是根据一些实施例的高速缓存存储器300的写功能部分的示意图。
高速缓存存储器300包括控制器310、替换策略电路320和存储器部分330。
响应于CPU所请求的指令未在高速缓存存储器中,控制器310使CPU所请求的指令,一旦从RAM中被检索到,就与该指令相应的标签数据一起被写入存储器部分330。
控制器310从CPU地址接收待写入的标签数据,作为从高速缓存存储器获取指令的失败尝试的一部分。此外,控制器310响应于高速缓存存储器未命中条件接收从RAM检索到的指令数据。
此外,控制器310将标签数据和指令数据作为待写入的数据提供给存储器部分330。
对于用于写入存储器部分330的地址信息,控制器310接收CPU地址的索引部分,作为从高速缓存存储器中获取指令的失败尝试的一部分,并响应于高速缓存存储器未命中条件从替换策略电路320接收路数据。
此外,控制器310将路数据和索引数据提供给存储器部分330作为数据将要写入的地址。控制器310还响应于标签数据和指令数据被写入由路数据和索引数据所确认的存储器位置,向存储器部分330提供指示。
替换策略电路320可以用于根据期望的替换策略协议来实施替换策略。例如,替换策略电路320可以用于确定M路中的哪一路被最少使用,或者M路中的哪一路在最近时间段期间被最少使用。
在一些实施例中,对替换策略电路来说,每次从特定的路获取到指令时都会“使用”路。在一些实施例中,可以基于预定数量的高速缓存存储器命中来确定该时段。例如,替换策略电路可以跟踪每路的命中数量,上述每路的命中数超出了预定的高速缓存存储器命中数量。
图4是替换策略电路400的示意图。替换策略电路400可以用作图3的替换策略电路320。在一些实施例中,替换策略电路400可以用在除图3所示之外的高速缓存存储器中。在一些实施例中,可以在图3所示的高速缓存存储器中使用除替换策略电路400之外的替换策略电路。替换策略电路400用于确认指令和相关联的标签将被写入M路中的哪一路。
替换策略电路400包括历史先进先出队列(First Input First Output,FIFO)410、路计数器420(0)至420(M-1)、递增比较器430(0)至430(M-1)、递减比较器440(0)到440(M-1)和最小计数电路450。
FIFO410可以具有与路数(M)相关的深度。例如,FIFO410的深度可以等于常数倍M。例如,FIFO410的深度可以等于常数的M倍,该常数是2的幂。在一些实施例中,FIFO410的深度等于M乘以32、64、128、256、512或1024。
FIFO410的深度对应于高速缓存存储器命中的预定数量,替换策略电路400对每个特定的路的命中数量进行跟踪。例如,如果FIFO410的深度等于M乘以128,则替换策略电路400在最近的M×128个高速缓存存储器命中中跟踪每个特定的路的命中数量,而不管各个命中是用于哪一路。
每次高速缓存存储器命中发生时,确认该命中的路的数据就会被写入FIFO410。因此,一旦FIFO410已满,FIFO410则会存储确认最近M×128个高速缓存存储器命中中的每一个的路的数据。
路计数器420(0)至420(M-1)中的每个用于跟踪某一路的命中数量,该路的命中数量超出了预定的高速缓存存储器命中数量。例如,如果FIFO410的深度等于M×128,并且FIFO410已满,则路计数器420(0)到420(M-1)被分别用于跟踪路(0)至路(M-1)发生了最近M×128个高速缓存存储器命中中的多少个命中。
路计数器420(0)至420(M-1)的大小可容纳FIFO410的深度除以M的计数。其他计数器大小也可被选用。
每次高速缓存存储器命中发生时,在输入‘入口’处确认该命中的路的数据被写入FIFO410。此外,每次高速缓存存储器命中发生时,确认该命中的路的数据就被提供给增量比较器430(0)至430(M-1)中的每一个。由于每一路对应于增量比较器430(0)至430(M-1)中的一个,增量比较器430(0)至430(M-1)中特定的一个产生一增量信号,该增量信号指示确认该命中的路的数据等同于该特定的增量比较器对应的路。因此,每次特定的路发生命中时,对应于该特定的路的特定增量比较器生成一增量信号。
每次高速缓存存储器命中发生时,在输入‘入口’处确认该命中的路的数据被写入FIFO410。此外,每次高速缓存存储器命中发生时,在FIFO410输出‘出口’处确认最旧或最不近命中的路的所存储数据被提供给减量比较器440(0)至440(M-1)中的每一个。由于每一路对应于减量比较器440(0)至440(M-1)中的一个,减量比较器440(0)至440(M-1)中个特定的一个产生一减量信号,该减量信号指示确认最旧或最不近命中的路的所存储数据等同于该特定的减量比较器对应的路。因此,每次特定的路发生最旧或最不近的命中且因此从FIFO410中丢失时,对应于该特定的路的特定减量比较器生成一减量信号。
如图所示,增量比较器430(0)至430(M-1)中的每一个与路计数器420(0)至420(M-1)中相应的一个相连。此外,减量比较器440(0)至440(M-1)中的每一个都与路计数器420(0)至420(M-1)中相应的一个相连。
路计数器420(0)至420(M-1)中的每一个都包括存储器,该存储器用于存储等同于接收的增量信号的数量减去减量信号的数量的计数。因此,路计数器420(0)至420(M-1)中的每一个跟踪最近的高速缓存存储器命中中每个特定的路的命中数量,其中该数量对应于FIFO410的深度。
最小计数电路450从路计数器420(0)至420(M-1)中的每一个接收计数数据,并在输出‘路’处生成数据,该数据确认与具有最小计数值的路计数器420(0)至420(M-1)中的特定路计数器对应的路。
再次参考图3,响应于CPU所请求的指令未在高速缓存存储器中,控制器310使CPU所请求的指令连同该指令相应的标签数据一起被写入存储器部分330。其中,控制器310从CPU地址接收待写入的标签数据,作为从高速缓存存储器获取指令的失败尝试的一部分,并且其中控制器310接收从RAM检索到的指令数据。
此外,控制器310提供来自替换策略电路320的路数据以及失败的高速缓存存储器获取尝试的CPU地址的索引部分到存储器部分330,作为指令和标签数据所要写入的地址。因此,控制器310使从RAM获取的指令连同其对应的标签数据一起到达由替换策略电路320确认的路的一位置处,该位置由失败的高速缓存存储器获取尝试的CPU地址的索引部分确认。
最小计数电路450可以在本领域技术人员已知的多个电路中的任何一个中实现。例如,最小计数电路可以包括log2(M)个比较器级和log2(M)-1个多路复用器级。第一比较器级具有M/2个比较器,每个比较器用于比较路计数器420(0)到420(M-1)中的两个的值。第一多路复用器级具有M/2个多路复用器,每个多路复用器用于传递由相应的一个比较器比较的两路计数器值之一的值,其中传递两路计数器值中的哪一个由该相应的比较器的输出决定。下一个比较器级具有M/2/2个比较器,每个比较器用于比较由第一多路复用器级的两个多路复用器传递的两个路计数器值的值。第一多路复用器级有M/2/2个多路复用器,每个多路复用器用于传递由下一个比较器级的一个相应的比较器进行比较的两路计数器值之一的值,其中传递两路计数器值中的哪一个由该相应的比较器的输出决定。最后一个比较器级具有一个比较器,用于比较由log2(M)-1个多路复用器级传递的两路计数器值的值。
确认与具有最小计数值的路计数器相对应的路的路数据在比较最小路计数器值的所有比较器的输出中被编码。最后的比较器级输出对应于确认最小计数路的路数据的最高有效位(Most Significant Bit,MSB),并且比较最小计数的第一比较器的比较器输出对应于确认最小计数路的路数据的最低有效位(Least Significant Bit,LSB)。
图5示出了使用高速缓存存储器的方法500的流程图。方法500可以例如由上面参考图2、3和4所说明和讨论的电路和组件来执行。如本领域技术人员所理解的那样,方法500可以由其他高速缓存存储器电路来执行。此外,以上参考图2、3和4所说明和讨论的电路和组件可以执行具有与参考方法500所讨论的特征相似或相同的特征的替代方法。
在510处,控制器确定高速缓存存储器命中条件已发生,其中包括标签和索引的CPU地址用于从高速缓存存储器中的第一特定路中检索所请求的指令,该索引定位存储有所请求的指令的RAM存储器位置。
在520处,控制器确认其中被读取出所请求指令的第一特定路。
在530处,替换策略电路递增一计数,该计数表示第一特定路在高速缓存存储器的最近预定数量的高速缓存存储器命中中已经历的命中数量。
在540处,控制器确认已经历了高速缓存存储器的最近预定数量的高速缓存存储器命中中最旧或最不近的命中的第二特定路。
在550处,替换策略电路递减一计数,该计数表示第二特定路在高速缓存存储器的最近预定数量的高速缓存存储器命中中已经历的命中数量。
在一些实施例中,第一特定路与第二特定路相同。
在一些实施例中,方法500还包括确认哪些路与最低计数相关联,该最低技术表示最近预定数量的高速缓存存储器命中中已经历的命中数量。
图6示出了使用高速缓存存储器的方法600的流程图。方法600可以例如由上面参考图2、3和4所说明和讨论的电路和组件来执行。如本领域技术人员所理解的那样,方法600可以由其他高速缓存存储器电路来执行。此外,以上参考图2、3和4所说明和讨论的电路和组件可以执行具有与参考方法600讨论的特征相似或相同的特征的替代方法。
在610处,控制器确定高速缓存存储器未命中条件已发生,其中包括标签和索引的CPU地址不能用于从高速缓存存储器中检索所请求的指令,该索引定位存储有所请求的指令的RAM存储器位置。例如,由于所请求的指令没有存储在高速缓存存储器中。响应于该未命中,从所定位的RAM存储器位置处检索到所请求的指令,并将其提供给控制器,使得所请求的指令可以存储在高速缓存存储器中以供后续请求使用。
在620处,确定与指令对应的指令数据,以便将指令数据写入高速缓存存储器。例如,控制器可以基于从所定位的RAM存储器位置检索到的指令数据来确定指令。
在630处,确定与指令对应的标签数据,以便将标签数据写入高速缓存存储器。例如,控制器可以基于定位所请求的指令的RAM存储器位置的CPU地址的标签信息来确定标签数据。
在640处,确定与指令对应的索引数据,以便索引数据可以作为将指令数据和标签数据写入高速缓存存储器的地址信息。例如,控制器可以基于定位所请求的指令的RAM存储器位置的CPU地址的索引信息来确定索引数据。
在650处,确定与要写入指令数据和标签数据的路对应的路数据。例如,控制器可以从替换策略电路接收路数据,该替换策略电路用于确定哪一路经历了高速缓存存储器的最近预定数量的高速缓存存储器命中中最少的命中,其中路数据确认由替换策略电路决定的路。
在660处,标签数据和指令数据被写入高速缓存存储器中。例如,控制器可以使标签数据和指令数据在由索引数据确认的位置处被写入由路数据确认的高速缓存存储器的路。
在一些实施例中,方法600另外包括参考图5的方法500所讨论的一个或多个举措。
虽然本发明是通过上述具体实施例公开的,但这些实施例并不用于限制本发明。基于本文公开的方法和技术方面,本领域技术人员可以在不脱离本发明的精神和范围的情况下对所呈现的实施例进行变换和修改。
Claims (20)
1.一种M路高速缓存存储器,其特征在于,所述高速缓存存储器包括:
多路,每路包括指令存储器部分,其中所述指令存储器部分包括多个指令存储器位置,用于存储对多个中央处理单元CPU指令进行编码的指令数据;
控制器,用于确定预定数量的高速缓存存储器命中条件中的每一个已发生;和
替换策略电路,用于将所述多路中的一路确认为经历了所述预定数量的高速缓存存储器命中条件中最少数量的命中;
其中,所述控制器还用于确定高速缓存存储器未命中条件已发生,并且响应于所述未命中条件,使得从随机存取存储器RAM中检索到的指令数据被写入所述替换策略电路确认的路的指令存储器部分。
2.根据权利要求1所述的M路高速缓存存储器,其特征在于,所述替换策略电路用于存储所述预定数量的高速缓存存储器命中条件中所述多路中的每路已经历的命中数量。
3.根据权利要求2所述的M路高速缓存存储器,其特征在于,所述替换策略电路包括与每路对应的计数器,其中每个对应的计数器用于保持所述预定数量的高速缓存存储器命中条件中对应路已经历的命中数量的计数。
4.根据权利要求3所述的M路高速缓存存储器,其特征在于,所述替换策略电路包括与每路对应的增量比较器,其中每个对应的增量比较器用于响应于对应路经历了命中,使得对应的计数器增加所述预定数量的高速缓存存储器命中条件中对应路已经历的命中数量的计数。
5.根据权利要求3所述的M路高速缓存存储器,其特征在于,所述替换策略电路包括与每路对应的减量比较器,其中每个对应的减量比较器用于响应于高速缓存存储器命中的发生,使得对应的计数器减少所述预定数量的高速缓存存储器命中条件中对应路已经历的命中数量的计数,以使所述对应路已经历的命中不再被包含在所述预定数量的高速缓存存储器命中条件中。
6.根据权利要求1所述的M路高速缓存存储器,其特征在于,所述替换策略电路用于存储数据,所述数据确认已经历了每个所述预定数量的高速缓存存储器命中条件中的命中的路。
7.根据权利要求6所述的M路高速缓存存储器,其特征在于,所述替换策略电路包括用于存储数据的先进先出队列FIFO电路,所述数据确认已经历了每个所述预定数量的高速缓存存储器命中条件中的命中的路。
8.根据权利要求1所述的M路高速缓存存储器,其特征在于,所述替换策略电路包括最小计数电路,所述最小计数电路用于通过比较所述预定数量的高速缓存存储器命中条件中每路已经历的命中数量与所述预定数量的高速缓存存储器命中条件中每个其他路已经历的命中数量中的一个或多个,来将一路确定为经历了所述预定数量的高速缓存存储器命中条件中最少数量的命中。
9.根据权利要求1所述的M路高速缓存存储器,其特征在于,所述高速缓存存储器未命中条件是响应于包括标签部分和索引部分的CPU地址而发生的,并且其中存储在所述RAM中与CPU地址对应的位置处的所述指令数据没有被存储在任何路中,并且其中所述控制器还用于使从所述RAM中检索到的所述指令数据被写入所述替换策略电路确认的路的指令存储器部分中由所述索引部分确认的存储器位置处。
10.根据权利要求9所述的M路高速缓存存储器,其特征在于,每路还包括标签存储器部分,其中所述标签存储器部分包括用于存储标签数据的多个标签存储器位置,其中所述控制器还用于使所述CPU地址的所述标签部分被写入所述替换策略电路确认的路的指令存储器部分中由所述索引部分确认的存储器位置处。
11.一种使用M路高速缓存存储器的方法,其特征在于,所述方法包括:
具有多路,每路包括指令存储器部分,其中所述指令存储器部分包括多个指令存储器位置,在所述多路的指令存储器位置中存储对多个中央处理单元CPU指令进行编码的指令数据;
利用控制器来确定预定数量的高速缓存存储器命中条件中的每一个已发生;
利用替换策略电路将多路中的一路确认为经历了所述预定数量的高速缓存存储器命中条件中最少数量的命中;
利用所述控制器确定所述高速缓存存储器未命中条件已发生;并且
利用所述控制器响应于所述未命中条件,使得从随机存取存储器RAM中检索到的指令数据被写入由所述替换策略电路确认的路的指令存储器部分。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:利用所述替换策略电路存储所述预定数量的高速缓存存储器命中条件中所述多路中的每路已经历的命中数量。
13.根据权利要求12所述的方法,其特征在于,所述替换策略电路包括与每路对应的计数器;其中,所述方法还包括:
利用每个对应的计数器来保持所述预定数量的高速缓存存储器命中条件中对应路已经历的命中数量的计数。
14.根据权利要求13所述的方法,其特征在于,所述替换策略电路包括与每路对应的增量比较器;其中,所述方法还包括:
利用每个对应的增量比较器响应于对应路经历了命中,使对应的计数器增加所述预定数量的高速缓存存储器命中条件中对应路已经历的命中数量的计数。
15.根据权利要求13所述的方法,其特征在于,所述替换策略电路包括与每路对应的减量比较器;其中,所述方法还包括:
利用每个对应的减量比较器响应于高速缓存存储器命中的发生,使对应的计数器减少所述预定数量的高速缓存存储器命中条件中对应路已经历的命中数量的计数,以使所述对应路已经历的命中不再被包含在所述预定数量的高速缓存存储器命中条件中。
16.根据权利要求11所述的方法,其特征在于,所述方法还包括:利用所述替换策略电路存储数据,所述数据确认已经历了每个所述预定数量的高速缓存存储器命中条件中的命中的路。
17.根据权利要求16所述的方法,其特征在于,所述替换策略电路包括先进先出队列FIFO电路,所述方法还包括:
利用所述FIFO电路存储数据,所述数据确认已经历了每个所述预定数量的高速缓存存储器命中条件中的命中的路。
18.根据权利要求11所述的方法,其特征在于,所述替换策略电路包括最小计数电路,所述方法还包括:
利用所述最小计数电路通过比较所述预定数量的高速缓存存储器命中条件中每路已经历的命中数量与所述预定数量的高速缓存存储器命中条件中每个其他路已经历的命中数量中的一个或多个,来将一路确定为经历了所述预定数量的高速缓存存储器命中条件中最少数量的命中。
19.根据权利要求11所述的方法,其特征在于,所述高速缓存存储器未命中条件是响应于包括标签部分和索引部分的CPU地址而发生的,并且存储在所述RAM中与CPU地址对应的位置处的指令数据没有被存储在任何路中;其中,所述方法还包括:
利用所述控制器使从所述RAM中检索到的指令数据被写入所述替换策略电路确认的路的指令存储器部分中由所述索引部分确认的存储器位置处。
20.根据权利要求19所述的方法,其特征在于,每路还包括标签存储器部分,其中每个标签存储器部分包括用于存储标签数据的多个标签存储器位置,所述标签数据对存储有所述CPU指令的多个RAM存储器地址范围进行编码;其中,所述方法还包括:
利用所述控制器使所述CPU地址的所述标签部分被写入所述替换策略电路确认的路的指令存储器部分中由所述索引部分确认的存储器位置处。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/010,763 US11188465B1 (en) | 2020-09-02 | 2020-09-02 | Cache memory replacement policy |
US17/010,763 | 2020-09-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113918484A CN113918484A (zh) | 2022-01-11 |
CN113918484B true CN113918484B (zh) | 2022-05-24 |
Family
ID=77563963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111007241.5A Active CN113918484B (zh) | 2020-09-02 | 2021-08-30 | M路高速缓存存储器和使用m路高速缓存存储器的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11188465B1 (zh) |
EP (1) | EP3964968B1 (zh) |
CN (1) | CN113918484B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130663A (zh) * | 2023-09-19 | 2023-11-28 | 摩尔线程智能科技(北京)有限责任公司 | 一种指令读取方法及l2指令缓存、电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6405287B1 (en) * | 1999-11-17 | 2002-06-11 | Hewlett-Packard Company | Cache line replacement using cache status to bias way selection |
CN1659525A (zh) * | 2002-06-04 | 2005-08-24 | 杉桥技术公司 | 简化了缓存替换策略的实现的多线程缓存方法和装置 |
CN101470670A (zh) * | 2007-12-28 | 2009-07-01 | 富士通株式会社 | 具有扇区功能的高速缓冲存储器 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4426682A (en) * | 1981-05-22 | 1984-01-17 | Harris Corporation | Fast cache flush mechanism |
US7133971B2 (en) * | 2003-11-21 | 2006-11-07 | International Business Machines Corporation | Cache with selective least frequently used or most frequently used cache line replacement |
US10585594B1 (en) * | 2017-08-03 | 2020-03-10 | EMC IP Holding Company LLC | Content-based caching using digests |
-
2020
- 2020-09-02 US US17/010,763 patent/US11188465B1/en active Active
-
2021
- 2021-08-30 CN CN202111007241.5A patent/CN113918484B/zh active Active
- 2021-08-31 EP EP21193971.5A patent/EP3964968B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6405287B1 (en) * | 1999-11-17 | 2002-06-11 | Hewlett-Packard Company | Cache line replacement using cache status to bias way selection |
CN1659525A (zh) * | 2002-06-04 | 2005-08-24 | 杉桥技术公司 | 简化了缓存替换策略的实现的多线程缓存方法和装置 |
CN101470670A (zh) * | 2007-12-28 | 2009-07-01 | 富士通株式会社 | 具有扇区功能的高速缓冲存储器 |
Also Published As
Publication number | Publication date |
---|---|
EP3964968B1 (en) | 2023-03-29 |
EP3964968A1 (en) | 2022-03-09 |
CN113918484A (zh) | 2022-01-11 |
US11188465B1 (en) | 2021-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5235697A (en) | Set prediction cache memory system using bits of the main memory address | |
CN113961483B (zh) | 高速缓存存储器和使用高速缓存存储器的方法 | |
US7904660B2 (en) | Page descriptors for prefetching and memory management | |
EP1654660B1 (en) | A method of data caching | |
US5465342A (en) | Dynamically adaptive set associativity for cache memories | |
CN105159844B (zh) | 数据处理装置中的动态缓存分配策略调适 | |
US7634591B2 (en) | Method and apparatus for tracking command order dependencies | |
CN108363620B (zh) | 提供虚拟内存容量的内存模块及其操作方法 | |
US6708294B1 (en) | Cache memory apparatus and computer readable recording medium on which a program for controlling a cache memory is recorded | |
US20080016278A1 (en) | Data Processing System, Processor and Method of Data Processing in which Local Memory Access Requests are Serviced on a Fixed Schedule | |
US8291259B2 (en) | Delete of cache line with correctable error | |
US6571317B2 (en) | Replacement data error detector | |
US5539894A (en) | Method and apparatus for optimizing a sector cache tag, block and sub-block structure base on main memory size | |
CN113918484B (zh) | M路高速缓存存储器和使用m路高速缓存存储器的方法 | |
US6470425B1 (en) | Cache line replacement threshold based on sequential hits or misses | |
US20060129764A1 (en) | Methods and apparatus for storing a command | |
JP4009304B2 (ja) | キャッシュメモリおよびキャッシュメモリ制御方法 | |
US6862663B1 (en) | Cache having a prioritized replacement technique and method therefor | |
US11645209B2 (en) | Method of cache prefetching that increases the hit rate of a next faster cache | |
US6904501B1 (en) | Cache memory for identifying locked and least recently used storage locations | |
US5500814A (en) | Memory system and cache memory system | |
US6546501B1 (en) | Cache memory apparatus and computer readable recording medium on which a program for controlling a cache memory is recorded | |
CN114072776B (zh) | 小面积高速缓冲存储器 | |
US20080120471A1 (en) | Method and apparatus for least-recently-used replacement of a block frame in an electronic memory device | |
JPH05165726A (ja) | データ処理装置 |
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 |