CN113961483B - 高速缓存存储器和使用高速缓存存储器的方法 - Google Patents
高速缓存存储器和使用高速缓存存储器的方法 Download PDFInfo
- Publication number
- CN113961483B CN113961483B CN202111007235.XA CN202111007235A CN113961483B CN 113961483 B CN113961483 B CN 113961483B CN 202111007235 A CN202111007235 A CN 202111007235A CN 113961483 B CN113961483 B CN 113961483B
- Authority
- CN
- China
- Prior art keywords
- tag
- memory
- instruction
- cpu
- cache memory
- 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/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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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/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/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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- 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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种高速缓存存储器和一种使用高速缓存存储器的方法。高速缓存存储器包括指令存储器部分、标签存储器部分和一个或多个外围电路,所述一个或多个外围电路用于接收与存储有特定CPU指令的RAM存储器的地址相对应的CPU地址。所述一个或多个外围电路用于接收指示所述指令存储器部分和所述标签存储器部分将被细分为多路的路数量指示,所述一个或多个外围电路用于基于所述路数量指示来确认所述CPU地址的哪些位形成所述标签部分,并且所述一个或多个外围电路用于基于所确认的CPU地址的标签部分和高速缓存存储器中的标签数据来确定所述特定CPU指令是否存储在所述高速缓存存储器中。
Description
技术领域
本发明通常涉及高速缓存存储器,特别涉及高速缓存存储器和使用高速缓存存储器的方法。
背景技术
高速缓存存储器用于计算机系统中以减少频繁使用指令的指令访问时间。中央处理单元(Central Processing Unit,CPU)可执行指令存储在随机存取存储器(RandomAccess Memory,RAM)中,并可根据需要由CPU访问。一些(但不是全部)指令,例如最近使用的指令,额外存储在高速缓存存储器中。由于高速缓存存储器比RAM快,所以优先选择高速缓存存储器,如果CPU所需的指令存储在高速缓存存储器中,则使用高速缓存存储器。如果CPU需要的指令未存储在高速缓存存储器中,则从RAM中检索该指令。然后可以根据替换策略将从RAM中检索到的指令存储在高速缓存存储器中。所属技术领域需要的是改进的替换策略。
一些高速缓存存储器被细分为多个被称为路的子部分。其他高速缓存存储器不被细分。未细分的高速缓存存储器可被视为仅具有单一路,并被称为直接存取或单路高速缓存存储器。直接存取高速缓存存储器可以有利地提供比多路关联高速缓存存储器更快的存取。然而,与直接存取高速缓存存储器相比,多路关联高速缓存存储器可以减少或消除冲突和遗漏。
可编程高速缓存存储器可根据本领域需求被编程为直接存取或多路关联。
发明内容
本发明一方面提供了一种高速缓存存储器。所述高速缓存存储器包括指令存储器部分,其中所述指令存储器部分包括多个指令存储器位置,每个指令存储器位置用于存储对中央处理单元CPU指令进行编码的指令数据;标签存储器部分,其中所述标签存储器部分包括多个标签存储器位置,每个标签存储器位置用于存储对随机存取存储器RAM的地址范围进行编码的标签数据,所述RAM的地址范围上存储有所述CPU指令之一;和一个或多个外围电路,用于接收与存储有特定CPU指令的RAM的地址相对应的CPU地址,其中所述CPU地址具有被划分为标签部分和索引部分的多个位,所述标签部分包括所述特定CPU指令的标签数据,所述索引部分包括所述高速缓存存储器的存储器地址数据,其中,所述一个或多个外围电路用于接收指示所述指令存储器部分和所述标签存储器部分将被细分为多路的路数量指示,其中,所述一个或多个外围电路用于基于所述路数量指示来确认所述CPU地址的哪些位形成所述标签部分,以及其中,所述一个或多个外围电路用于基于所确认的CPU地址的标签部分和存储在所述高速缓存存储器中的标签数据来确定所述特定CPU指令是否存储在所述高速缓存存储器中。
在一些实施例中,所述一个或多个外围电路用于基于所述路数量指示来确认所述CPU地址的哪些位形成所述索引部分。
在一些实施例中,所述一个或多个外围电路用于使用所述索引部分作为高速缓存存储器地址数据来读取所述高速缓存存储器以检索所述特定CPU指令。
在一些实施例中,响应于指示所述指令存储器部分和所述标签存储器部分将被细分为多路的路数量指示,所述一个或多个外围电路用于使用所述索引部分和所述标签部分的一部分作为高速缓存存储器地址数据来读取所述高速缓存存储器以检索所述特定CPU指令。
在一些实施例中,响应于指示所述指令存储器部分和所述标签存储器部分将被细分为单一路的路数量指示,所述一个或多个外围电路用于使用所述索引部分而不使用所述标签部分作为高速缓存存储器地址数据来读取所述高速缓存存储器以检索所述特定CPU指令。
在一些实施例中,所述一个或多个外围电路包括用于确定所述特定CPU指令是否存储在所述高速缓存存储器中的外围比较电路。
在一些实施例中,所述一个或多个外围电路包括外围比较电路,所述外围比较电路用于响应于指示所述指令存储器部分和所述标签存储器部分将被细分为多路的所述路数量指示,确认所述特定CPU指令存储在所述指令存储器部分的所述多路中的哪一路。
在一些实施例中,所述标签存储器部分的标签存储器位置用于在第一时间段内被读取,并且其中被读取的所述标签存储器位置中的每一个都通过所述CPU地址的索引部分来确认。
在一些实施例中,所述指令存储器部分的指令存储器位置用于在第二时间段内被读取,其中所述第二时间段在所述第一时间段之后,并且其中被读取的所述指令存储器位置由以下之一来确认:A)由于指示所述指令存储器部分和所述标签存储器部分将被细分为多路的路数量指示,由在所述第一时间段内读取的标签地址数据和所述CPU地址的索引部分的组合来确认,以及B)由于指示所述指令存储器部分和所述标签存储器部分将被细分为单一路的路数量指示,由无来自所述CPU地址的标签部分的数据的所述CPU地址的索引部分来确认。
在一些实施例中,所述第一时间段和所述第二时间段发生在CPU时钟周期的单个时钟周期内。
本发明另一方面提供了一种使用高速缓存存储器的方法。所述方法包括,利用所述高速缓存存储器的指令存储器部分,所述指令存储器部分包括多个指令存储器位置,来存储对中央处理单元CPU指令进行编码的指令数据;利用所述高速缓存存储器的标签存储器部分,所述标签存储器部分包括多个标签存储器位置,来存储对随机存取存储器RAM的地址范围进行编码的标签数据,所述RAM的地址范围上存储有所述CPU指令;利用所述高速缓存存储器的一个或多个外围电路,接收与存储有特定CPU指令的RAM的地址相对应的CPU地址,其中所述CPU地址具有被划分为标签部分和索引部分的多个位,所述标签部分包括所述特定CPU指令的标签数据,所述索引部分包括所述高速缓存存储器的存储器地址数据;利用所述一个或多个外围电路,接收指示所述指令存储器部分和所述标签存储器部分将被细分为多路的路数量指示;利用所述一个或多个外围电路,基于所述路数量指示来确认所述CPU地址的哪些位形成所述标签部分;以及利用一个或多个外围电路,基于所确认的CPU地址的标签部分和存储在所述高速缓存存储器中的标签数据来确定所述特定CPU指令是否存储在所述高速缓存存储器中。
在一些实施例中,所述方法还包括,利用所述一个或多个外围电路,基于所述路数量指示来确认所述CPU地址的哪些位形成所述索引部分。
在一些实施例中,该方法还包括,利用所述一个或多个外围电路,使用所述索引部分作为高速缓存存储器地址数据来读取所述高速缓存存储器以检索所述特定CPU指令。
在一些实施例中,所述方法还包括,响应于指示所述指令存储器部分和所述标签存储器部分将被细分为多路的路数量指示,利用所述一个或多个外围电路,使用所述索引部分和所述标签部分的一部分作为高速缓存存储器地址数据来读取所述高速缓存存储器以检索所述特定CPU指令。
在一些实施例中,所述方法还包括,响应于指示所述指令存储器部分和所述标签存储器部分将被细分为单一路的路数量指示,利用所述一个或多个外围电路,使用所述索引部分而不使用所述标签部分作为高速缓存存储器地址数据来读取所述高速缓存存储器以检索所述特定CPU指令。
在一些实施例中,所述一个或多个外围电路包括外围比较电路,并且所述方法还包括:利用所述外围比较电路确定所述特定CPU指令是否存储在所述高速缓存存储器中。
在一些实施例中,所述一个或多个外围电路包括外围比较电路,并且所述方法还包括:利用所述外围比较电路,响应于指示所述指令存储器部分和所述标签存储器部分将被细分为多路的所述路数量指示,确认所述特定CPU指令存储在所述指令存储器部分的所述多路中的哪一路。
在一些实施例中,所述标签存储器部分的标签存储器位置用于在第一时间段内被读取,并且其中被读取的所述标签存储器位置中的每一个都通过所述CPU地址的索引部分来确认。
在一些实施例中,所述指令存储器部分的指令存储器位置用于在第二时间段内被读取,其中所述第二时间段在所述第一时间段之后,并且其中被读取的所述指令存储器位置由以下之一来确认:A)由于指示所述指令存储器部分和所述标签存储器部分将被细分为多路的路数量指示,由在所述第一时间段内读取的标签地址数据和所述CPU地址的索引部分的组合来确认,以及B)由于指示所述指令存储器部分和所述标签存储器部分将被细分为单一路的路数量指示,由无来自所述CPU地址的标签部分的数据的所述CPU地址的索引部分来确认。
在一些实施例中,所述第一时间段和所述第二时间段发生在CPU时钟周期的单个时钟周期内。
附图说明
图1是示出了计算机系统的示意性框图。
图2是根据一些实施例的高速缓存存储器的示意图。
图3是图2的高速缓存存储器系统被编程为具有4路的示意图。
图4是当高速缓存存储器被编程为如图3所示时,所使用的CPU地址的标签部分和索引部分的示意图。
图5是图2的高速缓存存储器系统被编程为具有一路的示意图。
图6是当高速缓存存储器被编程为如图5所示时,所使用的CPU地址的标签部分和索引部分的示意图。
图7示出了时序图,该时序图示意性地示出高速缓存存储器的各种操作的某些时序关系。
图8是比较电路的示意图,其用于确认M路中的哪一路具有CPU所请求的指令。
图9示出了时序图,该时序图示意性地示出高速缓存存储器和比较电路的各种操作的某些时序关系。
图10是根据一些实施例的高速缓存存储器的指令存储器部分的示意图。
图11示出了时序图,该时序图示意性地示出高速缓存存储器的存储器部分的各种操作的某些时序关系。
图12示出了时序图,该时序图示意性地说明高速缓存存储器的各种操作的某些时序关系的另一实施例。
具体实施方式
本文将结合附图来对本发明的特定实施例进行阐述。
本文将阐明与某些实施例相关的各种细节。但是,本发明也可以以与本文所描述的不同的路来实施。本领域技术人员可以在不脱离本发明的情况下,对所讨论的实施例进行修改。因此,本发明并不限于本文公开的特定实施例。
图1是计算机系统100的示意图。计算机系统100包括CPU110,RAM120和高速缓存存储器130。
存储在高速缓存存储器130中的信息包括CPU110执行软件应用程序可能需要的指令。存储在高速缓存存储器130中的信息还包括每条特定指令确认存储有该特定指令的RAM120的一部分或地址范围的信息。该确认信息被称为标签。如本领域技术人员所理解的那样,其他信息例如偏移量或有效指示,可以附加地存储在高速缓存存储器中。
如本领域技术人员所理解的那样,在计算机系统中,高速缓存存储器可以被分为多路,其中每路都是独立地写入和读取。具有N路的高速缓存存储器可以称为N路关联高速缓存存储器。具有1路的高速缓存存储器可以称为单路关联高速缓存存储器或直接存取高速缓存存储器。为了从高速缓存存储器中获取指令,CPU向高速缓存存储器提供地址。该CPU地址包括标签部分和索引部分。在一些实施例中,如本领域技术人员所理解的那样,该CPU地址还可以包括其他信息,例如偏移量。
在一些高速缓存存储器中,CPU地址的索引部分用于从一路或多路中的每一路中读取一条指令及其对应的标签。相应地,根据CPU地址的索引部分,可从高速缓存存储器中读取与多路相对应的多个指令以及每个指令相对应的标签。
在一些高速缓存存储器中,与指令相关的标签分别与CPU地址的标签部分进行比较。如果其中一个标签与CPU地址的标签部分匹配,则将匹配标签对应的指令作为CPU所请求的指令提供给CPU。如果没有一个读取的标签与CPU地址的标签部分匹配,则CPU所请求的指令不在高速缓存存储器中,而是必须从RAM中检索。
当CPU所请求的指令不能在高速缓存存储器中获得时,将从RAM中获取该指令。此外,从RAM中获取的指令可以被写入高速缓存存储器中,以便对来自CPU的后续请求可用。待写入高速缓存存储器的指令可以被写入存储器的M路中被特定确认的一路中由CPU地址的索引部分指定的位置处。
在具有多路的高速缓存存储器中,可以基于高速缓存存储器替换策略来确定指令将被写入的多路中的哪一路。
图2是根据一些实施例的高速缓存存储器200的示意图。高速缓存存储器200可以在计算机系统100中用作高速缓存存储器130。高速缓存存储器200包括M路230,其中每路包括标签存储器部分210和指令存储器部分220。高速缓存存储器200是可编程的,以具有1,2,4,8,12,16,24,32中的至少两个数量的路和其它数量的路。
在一些实施例中,如本领域技术人员所理解的那样,高速缓存存储器200的路中的每个包括一个或多个其他存储器部分。例如,在一些实施例中,如本领域技术人员所理解的那样,每路包括有效位部分,其中有效位部分中的每一位指示特定指令是否有效。
指令存储器部分220可以根据替换策略被写入与CPU指令相对应的数据。此外,标签存储器部分210被写入与存储有指令的RAM的部分或地址范围相对应的数据。
指令存储器部分220可以包括一个或多个存储器电路,尽管其被抽象地或概念上地分割成M路。相应地,指令存储器部分220可以包括一个或多个存储器单元阵列,每个存储器单元阵列从多个外围电路接收信号并向这多个外围电路提供信号,这些外围电路用于访问存储器单元以写入和读取指令信息。如本领域技术人员所理解的那样,外围电路可以包括例如地址解码器、感测放大器、列多路复用器和输出缓冲器。在一些实施例中,外围电路可以包括一个或多个其他电路。这些存储器单元中的每一个都是一个特定的路的组成部分。然而,外围电路可以各自从一个或多个路的存储器单元接收信号或向其提供信号。在一些实施例中,指令存储器部分220形成为单个存储器电路。
标签存储器部分210可以包括一个或多个存储器电路。相应地,每路包括存储器单元阵列,该存储器单元阵列从多个外围电路接收信号并向这多个外围电路提供信号,这些外围电路用于访问存储器单元以写入和读取标签信息。如本领域技术人员所理解的那样,外围电路可以包括例如地址解码器、感测放大器、列多路复用器和输出缓冲器。在一些实施例中,外围电路可以包括一个或多个其他电路。这些存储器单元和外围电路的每一个都构成一个特定的路。在一些实施例中,指令存储器部分220形成为M个存储器电路,其中M是高速缓存存储器200可被编程为具有的最大数量的路。
在一些实施例中,指令存储器部分220和标签存储器部分210包括在相同的一个或多个存储器电路中。在一些实施例中,一个或多个外围电路用于访问存储器单元以将标签信息写入和读取到标签存储器部分210以及将指令信息写入和读取到指令存储器部分220。
高速缓存存储器200被构造成:CPU(例如CPU110)向高速缓存存储器200的外围电路提供地址以从中获取指令。CPU地址包括标签部分和索引部分。在一些实施例中,如本领域技术人员所理解的那样,CPU地址还可以附加地包括其他信息,例如偏移量。
CPU地址的标签部分和索引部分中的每一个的位的大小、宽度或数量随着高速缓存存储器200被编程的路的数量而改变。例如,当高速缓存存储器200被编程为具有两路时,标签部分所具有的位数可以比当高速缓存存储器200被编程为具有一路时的标签部分多一位。类似地,当高速缓存存储器200被编程为具有两路时,索引部分所具有的位数可以比当高速缓存存储器200被编程为具有一路时的索引部分少一位。另外,当高速缓存存储器200被编程为具有四路时,标签部分所具有的位数可以比当高速缓存存储器200被编程为具有一路时的标签部分多两位。类似地,当高速缓存存储器200被编程为具有四路时,索引部分所具有的位数可以比当高速缓存存储器200被编程为具有一路时的索引部分少两位。
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地址的索引部分确认。
高速缓存存储器200具有可编程数量的路。
图3是根据一些实施例的高速缓存存储器200被编程为具有四路时的示意图,其中每路包括标签存储器部分210和指令存储器部分220。在本实施例中,高速缓存存储器200可以具有的路的最大数量M为4。
指令存储器部分220根据替换策略被写入与CPU指令对应的数据。此外,标签存储器部分210被写入与存储有指令的RAM的部分或地址范围相对应的数据。
在该实施例中,高速缓存存储器200被构造成:CPU(例如CPU110)向高速缓存存储器200的外围电路提供地址以从中获取指令。CPU地址包括标签部分和索引部分。在一些实施例中,如本领域技术人员所理解的那样,CPU地址还可以附加地包括其他信息,例如偏移量。
因为高速缓存存储器200被编程为具有四路,所以此时的标签部分所具有的位数可以比当高速缓存存储器200被编程为具有一路时的标签部分多两位。另外,因为高速缓存存储器200被编程为具有四路,所以此时的索引部分所具有的位数可以比当高速缓存存储器200被编程为具有一路时的索引部分少两位。
CPU地址的索引部分确认四路的标签存储器部分210(0)至210(3)中的每一个中的存储器位置。四个标签存储器部分210(0)至210(3)的存储器位置各自与四路的指令存储器部分220(0)至220(3)中相应的一个中的存储器位置相关联。四路的四个标签存储器部分210(0)至210(3)和指令存储器部分220(0)至220(3)的关联至少由四个标签存储器部分210(0)至210(3)中每个的存储器位置及它们相关的指令存储器部分220(0)至220(3)的存储器位置以硬件实例化,该相关的指令存储器部分220(0)至220(3)具有部分或全部由CPU地址的索引部分确认的地址。
读取由CPU地址的索引部分所确认的四个标签存储器部分210(0)至210(3)的四个存储器位置以检索四个标签。将四个标签分别与CPU地址的标签部分进行比较。如果四个标签中的一个与CPU地址的标签部分匹配,则确认高速缓存存储器命中条件,并确认具有匹配标签的四路中的一路。随后,利用CPU地址的索引部分从所确认的路的指令存储器部分220中读取指令。从所确认的路的指令存储器部分220(x)中读取的指令作为CPU所请求的指令返回给CPU。
如果没有一个标签与CPU地址的标签部分匹配,则CPU所请求的指令不在高速缓存存储器中,确认高速缓存未命中条件,并且从RAM中检索CPU所请求的指令。
此外,在一些实施例中,CPU所请求的指令也被写入高速缓存存储器的四路的指令存储器部分220(0)至220(3)之一中的存储器位置,并且与先前存储的四个标签不匹配的CPU地址的标签部分被写入相应的标签存储器部分210(0)至210(3)的相应存储器位置处。
四个指令存储器部分220(0)至220(3)和四个标签存储器部分210(0)至210(3)中的哪一个存储了所请求的CPU指令和其相应的标签,由高速缓存存储器替换策略确定。所确定的指令存储器部分和标签存储器部分的具体存储器位置由CPU地址的索引部分确认。
图4是当高速缓存存储器被编程为如图3所示时,所使用的CPU地址的标签部分和索引部分的示意图。
如图所示,CPU地址的标签部分具有m+2位的宽度。此外,CPU地址的索引部分具有j位的宽度,其中j对应于当高速缓存存储器200被编程为具有最大数量的路时的索引部分宽度。
图5是根据一些实施例的高速缓存存储器200在被编程为具有一路时的示意图,其中该一路包括标签存储器部分210和指令存储器部分220。当高速缓存存储器200被编程为仅具有一路时,在直接存取配置中,标签存储器部分210具有存储器容量或大小以存储标签数量,该标签数量与可由被编程为具有四路的高速缓存存储器200的四路(如图3所示,或者被编程为具有任何其他数量的路)的标签存储器部分存储的标签的数量总和相等。类似地,当高速缓存存储器200被编程为仅具有一路时,指令存储器部分220具有存储器容量或大小以存储指令数量,该指令数量与可由被编程为具有四路的高速缓存存储器200的四路(如图3所示,或者被编程为具有任何其他数量的路)的指令存储器部分存储的指令的数量总和相等。
指令存储器部分220根据替换策略被写入与CPU指令对应的数据。此外,标签存储器部分210被写入与存储有指令的RAM的部分或地址范围相对应的数据。
在该实施例中,高速缓存存储器200被构造成:CPU(例如CPU110)向高速缓存存储器200的外围电路提供地址以从中获取指令。CPU地址包括标签部分和索引部分。在一些实施例中,如本领域技术人员所理解的那样,CPU地址还可以附加地包括其他信息,例如偏移量。
因为高速缓存存储器200被编程为具有一路,所以此时的标签部分所具有的位数可以比当高速缓存存储器200被编程为具有四路时的标签部分少两位。另外,因为高速缓存存储器200被编程为具有一路,所以此时的索引部分所具有的位数可以比当高速缓存存储器200被编程为具有四路时的索引部分多两位。
CPU地址的索引部分确认标签存储器部分210(0)中的存储器位置。标签存储器部分210(0)的存储器位置与指令存储器部分220(0)中的存储器位置相关联。标签存储器部分210(0)的存储器位置和指令存储器部分220(0)的存储器位置的关联至少由标签存储器部分210(0)的存储器位置和它们相关的指令存储器部分220(0)的存储器位置以硬件实例化,该相关的指令存储器部分220(0)的存储器位置具有部分或全部由CPU地址的索引部分确认的地址。
读取由CPU地址的索引部分所确认的标签存储器部分210(0)的存储器位置以检索标签。将标签与CPU地址的标签部分进行比较。如果读出的标签与CPU地址的标签部分匹配,则确认高速缓存存储器命中条件,并且利用CPU地址的索引部分从指令存储器部分220(0)中读取指令。从指令存储器部分220(0)读出的指令作为CPU所请求的指令返回给CPU。
如果标签与CPU地址的标签部分不匹配,则CPU所请求的指令不在高速缓存存储器中,确认高速缓存存储器未命中条件,并且从RAM中检索CPU所请求的指令。
此外,在一些实施例中,CPU所请求的指令也被写入高速缓存存储器的指令存储器部分220(0)中的存储器位置,并且CPU地址的未与先前存储的标签匹配的标签部分被写入标签存储器部分210(0)中的相应存储器位置。
图6是当高速缓存存储器被编程为如图5所示时,所使用的CPU地址的标签部分和索引部分的示意图。
如图所示,CPU地址的标签部分具有m位的宽度,其中,m对应于当高速缓存存储器200被编程为具有一路时的标签部分宽度。此外,CPU地址的索引部分具有j+2位的宽度。当与图4所示的CPU地址的标签部分相比较时,我们注意到当高速缓存存储器被编程为具有一路时CPU地址的标签部分所具有的位数比当高速缓存存储器被编程为具有四路时CPU地址的标签部分少两位。类似地,当与图4所示的CPU地址的索引部分相比较时,我们注意到当高速缓存存储器被编程为具有一路时CPU地址的索引部分所具有的位数比当高速缓存存储器被编程为具有四路时CPU地址的索引部分多两位。
例如,高速缓存存储器200可以在高速缓存存储器拓扑中实现,该高速缓存存储器拓扑具有与于2020年3月13日递交的申请号为16/817,609的美国申请中讨论的特征类似或相同的特征,该申请通过引用并入本文。
例如,标签存储器部分210可以用于容纳最大数量(M)的路,并且可以被编程为具有较少数量的路,例如M/2、M/4、…或1路。
图7示出了时序图700,该时序图示意性地示出高速缓存存储器200的各种操作的某些时序关系。时序图700示出CPU时钟波形710、标签时钟波形720、指令时钟波形730和指令波形740。图示的波形对应于本领域技术人员所理解的时钟生成电路生成的时钟。
CPU时钟波形710示出了由CPU110所使用的CPU时钟的表示。如本领域技术人员所理解的那样,由CPU时钟波形710所表示的CPU时钟可由CPU 110使用从而,例如接收输入数据、执行指令以及生成输出数据。CPU110可以使用由CPU时钟波形710表示的CPU时钟来附加地执行其它操作。CPU110可以使用额外的时钟(未示出)。
标签时钟波形720示出由标签存储器部分210使用的标签时钟的表示。由标签时钟波形720表示的标签时钟可以由标签存储器部分210使用,例如用于向标签存储器部分210写入和从标签存储器部分210读取标签数据。
指令时钟波形730示出由指令存储器部分220使用的指令时钟的表示。由指令时钟波形730表示的指令时钟可以由指令存储器部分220使用,例如用于向指令存储器部分220写入和从指令存储器部分220读取指令数据。
指令波形740示出指令数据的表示。指令数据对可由CPU110执行的指令进行编码,这些指令由高速缓存存储器200提供给CPU110以便例如由CPU110执行。
如图7所示,在CPU时钟周期的第一部分期间,标签时钟有效(高)。当标签时钟有效时,读取由CPU地址的索引部分的位0至j确认的M个标签存储器部分210(0)至210(M-1)以检索M个标签。
此外,当标签时钟有效时,如果高速缓存存储器200被编程为M路,则M个标签分别与CPU地址的标签部分进行比较。如果M个标签中的其中一个与CPU地址的标签部分匹配,则确认具有匹配标签和高速缓存存储器命中条件的路。
此外,当标签时钟有效时,如果高速缓存存储器200被编程为M/n路,则M/n个标签分别与CPU地址的标签部分进行比较。将M个标签中的哪M/n个与CPU地址的标签部分进行比较是基于CPU地址的索引部分的额外的log2(n)位(>j)的数目来确定的。如果M/n个标签中的其中一个与CPU地址的标签部分匹配,则确认具有匹配标签和高速缓存存储器命中条件的路。
此外,当标签时钟有效时,如果高速缓存存储器200被编程为1路,则将1个标签与CPU地址的标签部分进行比较。将M个标签中的哪一个标签与CPU地址的标签部分进行比较是基于CPU地址的索引部分的额外的log2(M)位(>j)的数目来确定的。如果比较的标签与CPU地址的标签部分匹配,则确认高速缓存存储器命中条件。
在CPU时钟周期的随后的第二部分期间,指令时钟有效(高)。
如果高速缓存存储器200被编程为M路,则在CPU时钟周期的第二部分期间,CPU地址的索引部分(j位)用于对所确认的路的指令存储器部分220(x)执行读取操作以从中读取指令。如果高速缓存存储器200被编程为M/n路,则在CPU时钟周期的第二部分期间,CPU地址的索引部分((j+log2(n)位)被用于对所确认的路的指令存储器部分220(x)执行读取操作以从中读取指令。如果高速缓存存储器200被编程为一路,则在CPU时钟周期的第二部分期间,CPU地址的索引部分(j+log2(M)位)用于对所确认的路的指令存储器部分220(x)执行读取操作以从中读取指令。一旦指令被读取,则从所确认的路的指令存储器部分220(x)中读取的该指令作为CPU110所请求的指令被返回给CPU110。
时序图700示意性地说明了CPU时钟波形710、标签时钟波形720、指令时钟波形730和指令波形740的某些时序关系的实施例。可替代地,可以使用替代的时序关系。例如,可以修改CPU时钟波形710与标签时钟波形720和指令时钟波形730中的一个或两个之间的相位关系。另外或可选地,在一些实施例中,标签时钟波形720和指令时钟波形730中的一个或两个的有效状态为低。
图8是外围比较电路800的示意图,该外围比较电路800用于确认M路中哪一个(如果有的话)具有CPU110所请求的指令。比较电路800包括标签比较器810(0)至810(M-1)、三态驱动器阵列820(0)至820(M-1)和比较器使能电路830。在一些实施例中,可使用替代的比较电路。
如图所示,比较电路800在总线‘CPU标签’上接收CPU地址的标签部分。此外,比较电路800在标签总线标签(0)到标签(M-1)处接收M个标签。M路的标签存储部分210(0)至210(M-1)中的一个被读取,则会生成M个标签中一个。此外,比较电路800接收log2(M)个索引位(索引位j+1:J+log2(M)),以及在总线#路处被编程数量的路的指示。
如果由比较器使能电路830使能,则标签比较器810至810(M-1)中的每一个用于将M个标签中的一个与总线‘CPU标签’处的CPU地址的标签部分进行比较。提供给一启用的标签比较器的M个标签中最多有一个与CPU地址的标签部分匹配。
如果高速缓存存储器200被编程为M路,则比较器使能电路830使能全部M个标签比较器810(0)至810(M-1)。
如果高速缓存存储器200被编程为M/n路,其中n∈{2,4,...a2},并且其中a是整数以及a2小于M,则比较器使能电路830使能标签比较器810(0)至810(M-1)中的M/n个。将M个标签中哪M/n个与CPU地址的标签部分进行比较是基于log2(n)个索引位(j+1:log2(n))确定的。
例如,如果M=8且n=2,则基于1个索引位(j+1)确定M=8个标签中的哪M/n=4个与CPU地址的标签部分进行比较。例如,如果索引位(j+1)=0,则比较器使能电路830可以使能标签比较器810(0)、810(2)、810(4)和810(6),并且如果索引位(j+1)=1,则比较器使能电路830可以使能标签比较器810(1)、810(3)、810(5)和810(7)。
作为另一示例,如果M=8且n=4,则基于2个索引位(j+1和j+2)来确定M=8个标签中的哪M/n=2个与CPU地址的标签部分进行比较。例如,如果索引位(j+1)=0且索引位(j+2)=0,则比较器使能电路830可以使能标签比较器810(0)和810(4),如果索引位(j+1)=0且索引位(j+2)=1,则比较器使能电路830可以使能标签比较器810(2)和810(6),如果索引位(j+1)=1且索引位(j+2)=0,则比较器使能电路830可以使能标签比较器810(1)和810(5),并且如果索引位(j+1)=1且索引位(j+2)=1,则比较器使能电路830可以使能标签比较器810(3)和810(7)。
如果高速缓存存储器200被编程为一路,则比较器使能电路830可以使能标签比较器810(0)至810(M-1)中的一个。将M个标签中的哪一个与CPU地址的标签部分进行比较是基于log2(M)个索引位(j+1:j+log2(M))来确定的。例如,如果M=8,则基于3个索引位(j+1、j+2和j+3)来确定8个标签中的哪一个与CPU地址的标签部分进行比较,其中这三个索引位使用本领域技术人员已知的任何编码方案来编码8个标签中与CPU地址的标签部分进行比较的标签。
三态驱动器阵列820(0)至820(M-1)的每个具有数据输入端,该数据输入端接收确认M路中的一路的数据。三态驱动器阵列820(0)至820(M-1)中的每一个的数据输入端连接到路确认总线路(0)至路(M-1)中的一个。此外,三态驱动器阵列820(0)至820(M-1)中的每个接收标签总线标签(0)至标签(M-1)处的M个标签中的特定一个是否与总线‘CPU标签’处的CPU地址的标签部分匹配的指示。
接收到以下指示的三态驱动器阵列具有三态且高阻抗的输出,该指示为与该三态驱动器阵列相关的M个标签中的特定一个与总线‘CPU标签’处的CPU地址的标签部分不匹配。
如果高速缓存存储器200被编程为M路,则接收到以下指示的三态驱动器在路总线路(x)处输出指示在其自身数据输入端被确认的特定的路的数据,上述接收到的指示为与该三态驱动器相关的M个标签中的特定一个与总线‘CPU标签’处的CPU地址的标签部分不匹配。
如果高速缓存存储器200被编程为M/n路,则接收到以下指示的三态驱动器在路总线路(x)处输出指示在其自身数据输入端被确认的特定的路的数据,上述接收到的指示为与该三态驱动器相关的M/n个标签中的特定一个与总线‘CPU标签’处的CPU地址的标签部分不匹配,其中在路总线路(x)处输出的数据的log2(n)个最高有效位(Most SignificantBit,MSB)等于log2(n)个索引位(j+1:j+log2(n)),该log2(n)个索引位(j+1:j+log2(n))被比较器使能电路830使用以选择标签比较器810(0)至810(M-1)中的哪一个来使能。
如果高速缓存存储器200被编程为一路,则接收到以下指示的三态驱动器在路总线路(x)处输出指示在其自身数据输入端被确认的特定的路的数据,上述接收到的指示为所比较的标签与总线‘CPU标签’处的CPU地址的标签部分匹配,其中在路总线路(x)处输出的数据的log2(M)个MSB等于log2(M)个索引位(j+1:j+log2(M)),该log2(M)个索引位(j+1:j+log2(M))被比较器使能电路830使用以选择标签比较器810(0)至810(M-1)中的哪一个来使能。
因此,三态驱动器阵列820(0)至820(M-1)执行多路复用功能,该多路复用功能传递确认特定的路的数据,该特定的路具有与CPU地址的标签部分匹配的标签数据。如本领域技术人员所理解的那样,可替代地使用执行多路复用功能的替代电路。
在一些实施例中,比较电路800另外生成命中条件指示信号。例如,在标签比较器810(0)至810(M-1)的输出端执行逻辑或的逻辑电路可以生成命中条件指示信号。可选地,由于三态驱动器阵列820(0)至820(M-1)中没有一个驱动路总线路(x),所以路总线路(x)保持在三态状态,可以用作命中状态指示信号。
图9示出了时序图900,该时序图示意性地示出了高速缓存存储器200和比较电路800的各种操作的某些时序关系。时序图900示出CPU时钟波形910、标签时钟波形920、标签数据波形930、CPU标签数据波形940和路总线数据波形950。
CPU时钟波形910示出了由CPU110使用的CPU时钟的表示,并且具有与图7的CPU时钟波形710类似或相同的特性。
标签时钟波形920示出由标签存储器部分210使用的标签时钟的表示,并且具有与图7的标签时钟波形720类似或相同的特性。
标签数据波形930示出了在标签总线标签(0)至标签(M-1)处确认M个标签的标签数据的表示。
CPU标签数据波形940示出了总线‘CPU标签’处CPU地址的标签部分的表示。
路总线数据波形950示出了在路总线路(x)处的路确认数据的表示。
在CPU时钟周期的第一部分期间,标签时钟有效(高)。响应于标签时钟有效,读取由CPU地址的索引部分确认的M个标签存储器部分210(0)至210(M-1)以检索M个标签。M个标签分别由标签总线标签(0)到标签(M-1)处的数据表示。此外,当标签时钟有效时,例如,如上文参考比较电路800所讨论的,M个标签通过比较器810(0)至810(M-1)与CPU地址的标签部分进行比较。
此外,当标签时钟有效时,三态驱动器阵列820(0)至820(M-1)中的每个从路确认总线路(0)至路(M-1)处接收确认M路中的一路的数据。此外,三态驱动器阵列820(0)至820(M-1)中的每个从对应的比较器810接收表明标签总线标签(0)至标签(M-1)处的M个标签中特定的一个是否与总线‘CPU标签’处的CPU地址的标签部分匹配的指示。
另外,当标签时钟有效时,如果存在命中条件,则接收到以下指示的三态驱动器在路总线路(x)处输出指示在其自身数据输入端被确认的特定的路的路确认数据,上述接收到的指示为与该三态驱动器相关的M个标签中的特定一个与总线‘CPU标签’处的CPU地址的标签部分匹配。如果不存在命中条件,则路总线路(x)保持在三态状态。
此外,当标签时钟有效时,产生命中条件指示信号。
时序图900示意性地示出了CPU时钟波形910、标签时钟波形920、标签数据波形930、CPU标签数据波形940和路总线数据波形950的某些时序关系的实施例。可替代地,可以使用替代的时序关系。例如,可以修改CPU时钟波形910和标签时钟波形920之间的相位关系。另外或可选地,在一些实施例中,标签时钟波形920的有效状态为低。
图10是根据一些实施例的高速缓存存储器200的指令存储器部分220的示意图。指令存储器部分220包括用于指令存储在高速缓存存储器200的所有路中的存储器位置。因此,指令存储器部分220将指令存储在存储器位置220(0)至220(M*L-1)中,其中,M等于最大路数,L等于每路中的长度(指令存储器位置的数量)。
如图所示,指令存储器部分220接收地址。指令存储器部分220用于被读取以输出存储在与所接收的地址相关联的存储器位置中的指令。
如果高速缓存存储器200被编程为M路,则所接收的地址包括具有log2(M)个位的标签部分和具有log2(M*L-1)-log2(M)个位的索引部分。标签部分由比较电路800产生,并且由在路总线路(x)处的路数据形成,该路数据指示该特定的路被确认为具有与CPU地址的标签部分匹配的标签数据。
如果高速缓存存储器200被编程为M/n路,则所接收的地址可以包括具有log2(M)个位的标签部分和具有log2(M*L-1)-log2(M)个位的索引部分。标签部分由比较电路800产生,并且由在路总线路(x)处的路数据形成,该路数据指示该特定的路被确认为具有与CPU地址的标签部分匹配的标签数据。可选地,因为标签部分的log2(n)个MSB等于log2(n)个索引位(j+1:j+log2(n)),所以所接收的地址可以由具有log2(M/n)个位的标签部分和具有log2(M*L-1)-log2(M/n)个位的索引部分形成。
如果高速缓存存储器200被编程为一路,则所接收的地址可以包括具有log2(M)个位的标签部分和具有log2(M*L-1)-log2(M)个位的索引部分。标签部分由比较电路800产生,并且由在路总线路(x)处的路数据形成,该路数据指示该特定的路被确认为具有与CPU地址的标签部分匹配的标签数据。可选地,由于标签部分的位等于索引位(j+1:j+log2(M)),所以所接收的地址可以仅从具有log2(M*L-1)个位的索引部分形成。
所接收的地址的索引部分可基于高速缓存存储器200被编程为的路的数目由CPU地址的索引部分形成,其中log2(M)个位可选地作为CPU地址的标签部分的一部分,以及可选地作为CPU地址的索引部分的一部分。
图11示出了时序图1100,该时序图示意性地示出了高速缓存存储器200的指令存储器部分220的各种操作的某些时序关系。时序图1100示出CPU时钟波形1110、指令时钟波形1120、索引数据波形1130、路数据波形1140和指令数据波形1150。
CPU时钟波形1110示出了由CPU 110使用的CPU时钟的表示,并且具有与图7的CPU时钟波形710类似或相同的特性。
指令时钟波形1120示出了由指令存储器部分220使用的指令时钟的表示,并且具有与图7的指令时钟波形720类似或相同的特性。
索引数据波形1130示出了总线‘CPU标签’处CPU地址的索引部分的表示。
路数据波形1140示出了路总线路(x)处的路确认数据的表示。
指令数据波形1150示出了从指令存储器部分220读取的指令的表示。
在CPU时钟周期的第二部分期间,继参照图9讨论的CPU时钟周期的第一部分之后,指令时钟有效(高)。响应于指令时钟有效,使用路确认数据和CPU地址的索引部分来从指令存储器部分220中读取指令。一旦指令被读取,则从指令存储部分220读取的该指令作为CPU110所请求的指令被返回给CPU110。
时序图1100示意性地说明了CPU时钟波形1110、指令时钟波形1120、索引数据波形1130、路数据波形1140和指令数据波形1150的某些时序关系的实施例。可替代地,可以使用替代的时序关系。例如,可以修改CPU时钟波形1110和指令时钟波形1120之间的相位关系。另外或可选地,在一些实施例中,指令时钟波形1120的有效状态为低。
图12示出了时序图1200,该时序图示意性地说明高速缓存存储器200的各种操作的某些时序关系的另一实施例。时序图1200示出CPU时钟波形1210、NxCPU时钟波形1210、标签时钟波形1220、指令时钟波形1230和指令波形1240。如本领域技术人员所理解的那样,图示的波形对应于时钟生成电路生成的时钟。
CPU时钟波形1210示出了由CPU110使用的CPU时钟的表示。如本领域技术人员所理解的那样,由CPU时钟波形1210表示的CPU时钟可由CPU110使用从而,例如接收输入数据、执行指令以及生成输出数据。CPU110可以使用由CPU时钟波形1210表示的CPU时钟来附加地执行其它操作。CPU110可以使用额外的时钟(未示出)。
NxCPU时钟波形1215示出了具有频率是CPU时钟频率的倍数的时钟的表示。在本实施例中,NxCPU时钟波形1215的时钟频率是CPU时钟频率的三倍。可以使用本领域技术人员已知的电路基于CPU时钟生成NxCPU时钟波形1215的时钟。
标签时钟波形1220示出由标签存储器部分210使用的标签时钟的表示。由标签时钟波形1220表示的标签时钟可以由标签存储器部分210使用,例如用于向标签存储器部分210写入和从标签存储器部分210读取标签数据。
指令时钟波形1230示出由指令存储器部分220使用的指令时钟的表示。由指令时钟波形1230表示的指令时钟可以由指令存储器部分220使用,例如用于向指令存储器部分220写入和从指令存储器部分220读取指令数据。
指令波形1240示出指令数据的表示。指令数据对可由CPU110执行的指令进行编码,这些指令由高速缓存存储器200提供给CPU110以便例如由CPU110执行。
如图12所示,在CPU时钟周期的第一部分期间,标签时钟有效(高)。当标签时钟有效时,读取由CPU地址的索引部分确认的M个标签存储器部分210(0)至210(M-1)以检索M个标签。此外,当标签时钟有效时,M个标签分别与CPU地址的标签部分进行比较。如果M个标签中的一个与CPU地址的标签部分匹配,则确认具有匹配标签的路。
在CPU时钟周期的随后的第二部分期间,指令时钟有效(高)。在CPU时钟周期的第二部分期间,CPU地址的索引部分用于对所确认的路的指令存储器部分220(x)执行读取操作以从中读取指令。一旦指令被读取,则从所确认的路的指令存储器部分220(x)中读取的该指令作为CPU110所请求的指令被返回给CPU110。
时序图1200示意性地说明了CPU时钟波形1210、NxCPU时钟波形1215、标签时钟波形1220、指令时钟波形1230和指令波形1240的某些时序关系的实施例。可替代地,可以使用替代的时序关系。例如,可以修改CPU时钟波形1210与NxCPU时钟波形1215、标签时钟波形1220和指令时钟波形1230中任意一个之间的相位关系。另外或可选地,在一些实施例中,标签时钟波形1220和指令时钟波形1230中的一个或两个的有效状态是低的。
虽然本发明是通过上述具体实施例公开的,但这些实施例并不用于限制本发明。基于本文公开的方法和技术方面,本领域技术人员可以在不脱离本发明的精神和范围的情况下对所呈现的实施例进行变换和修改。
Claims (20)
1.一种高速缓存存储器,其特征在于,所述高速缓存存储器包括:
指令存储器部分,其中所述指令存储器部分包括多个指令存储器位置,每个指令存储器位置用于存储对中央处理单元CPU指令进行编码的指令数据;
标签存储器部分,其中所述标签存储器部分包括多个标签存储器位置,每个标签存储器位置用于存储对随机存取存储器RAM的地址范围进行编码的标签数据,所述RAM的地址范围上存储有所述CPU指令之一;和
一个或多个外围电路,用于接收与存储有特定CPU指令的RAM的地址相对应的CPU地址,其中所述CPU地址具有被划分为标签部分和索引部分的多个位,所述标签部分包括所述特定CPU指令的标签数据,所述索引部分包括所述高速缓存存储器的存储器地址数据,
其中,所述一个或多个外围电路用于接收指示所述指令存储器部分和所述标签存储器部分将被细分为多路的路数量指示,
其中,所述一个或多个外围电路用于基于所述路数量指示来确认所述CPU地址的哪些位形成所述标签部分,以及
其中,所述一个或多个外围电路用于基于所确认的CPU地址的标签部分和存储在所述高速缓存存储器中的标签数据来确定所述特定CPU指令是否存储在所述高速缓存存储器中。
2.根据权利要求1所述的高速缓存存储器,其特征在于,所述一个或多个外围电路用于基于所述路数量指示来确认所述CPU地址的哪些位形成所述索引部分。
3.根据权利要求2所述的高速缓存存储器,其特征在于,所述一个或多个外围电路用于使用所述索引部分作为高速缓存存储器地址数据来读取所述高速缓存存储器以检索所述特定CPU指令。
4.根据权利要求2所述的高速缓存存储器,其特征在于,响应于指示所述指令存储器部分和所述标签存储器部分将被细分为多路的路数量指示,所述一个或多个外围电路用于使用所述索引部分和所述标签部分的一部分作为高速缓存存储器地址数据来读取所述高速缓存存储器以检索所述特定CPU指令。
5.根据权利要求2所述的高速缓存存储器,其特征在于,响应于指示所述指令存储器部分和所述标签存储器部分将被细分为单一路的路数量指示,所述一个或多个外围电路用于使用所述索引部分而不使用所述标签部分作为高速缓存存储器地址数据来读取所述高速缓存存储器以检索所述特定CPU指令。
6.根据权利要求1所述的高速缓存存储器,其特征在于,所述一个或多个外围电路包括用于确定所述特定CPU指令是否存储在所述高速缓存存储器中的外围比较电路。
7.根据权利要求1所述的高速缓存存储器,其特征在于,所述一个或多个外围电路包括外围比较电路,所述外围比较电路用于响应于指示所述指令存储器部分和所述标签存储器部分将被细分为多路的所述路数量指示,确认所述特定CPU指令存储在所述指令存储器部分的所述多路中的哪一路。
8.根据权利要求1所述的高速缓存存储器,其特征在于,所述标签存储器部分的标签存储器位置用于在第一时间段内被读取,并且其中被读取的所述标签存储器位置中的每一个都通过所述CPU地址的索引部分来确认。
9.根据权利要求8所述的高速缓存存储器,其特征在于,所述指令存储器部分的指令存储器位置用于在第二时间段内被读取,其中所述第二时间段在所述第一时间段之后,并且其中被读取的所述指令存储器位置由以下之一来确认:
A)由于指示所述指令存储器部分和所述标签存储器部分将被细分为多路的路数量指示,由在所述第一时间段内读取的标签地址数据和所述CPU地址的索引部分的组合来确认,以及
B)由于指示所述指令存储器部分和所述标签存储器部分将被细分为单一路的路数量指示,由无来自所述CPU地址的标签部分的数据的所述CPU地址的索引部分来确认。
10.根据权利要求9所述的高速缓存存储器,其中所述第一时间段和所述第二时间段发生在CPU时钟周期的单个时钟周期内。
11.一种使用高速缓存存储器的方法,其特征在于,所述方法包括:
利用所述高速缓存存储器的指令存储器部分,所述指令存储器部分包括多个指令存储器位置,来存储对中央处理单元CPU指令进行编码的指令数据;
利用所述高速缓存存储器的标签存储器部分,所述标签存储器部分包括多个标签存储器位置,来存储对随机存取存储器RAM的地址范围进行编码的标签数据,所述RAM的地址范围上存储有所述CPU指令;
利用所述高速缓存存储器的一个或多个外围电路,接收与存储有特定CPU指令的RAM的地址相对应的CPU地址,其中所述CPU地址具有被划分为标签部分和索引部分的多个位,所述标签部分包括所述特定CPU指令的标签数据,所述索引部分包括所述高速缓存存储器的存储器地址数据;
利用所述一个或多个外围电路,接收指示所述指令存储器部分和所述标签存储器部分将被细分为多路的路数量指示;
利用所述一个或多个外围电路,基于所述路数量指示来确认所述CPU地址的哪些位形成所述标签部分;以及
利用一个或多个外围电路,基于所确认的CPU地址的标签部分和存储在所述高速缓存存储器中的标签数据来确定所述特定CPU指令是否存储在所述高速缓存存储器中。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:利用所述一个或多个外围电路,基于所述路数量指示来确认所述CPU地址的哪些位形成所述索引部分。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:利用所述一个或多个外围电路,使用所述索引部分作为高速缓存存储器地址数据来读取所述高速缓存存储器以检索所述特定CPU指令。
14.根据权利要求12所述的方法,其特征在于,所述方法还包括:响应于指示所述指令存储器部分和所述标签存储器部分将被细分为多路的路数量指示,利用所述一个或多个外围电路,使用所述索引部分和所述标签部分的一部分作为高速缓存存储器地址数据来读取所述高速缓存存储器以检索所述特定CPU指令。
15.根据权利要求12所述的方法,其特征在于,所述方法还包括:响应于指示所述指令存储器部分和所述标签存储器部分将被细分为单一路的路数量指示,利用所述一个或多个外围电路,使用所述索引部分而不使用所述标签部分作为高速缓存存储器地址数据来读取所述高速缓存存储器以检索所述特定CPU指令。
16.根据权利要求11所述的方法,其特征在于,所述一个或多个外围电路包括外围比较电路,并且所述方法还包括:
利用所述外围比较电路确定所述特定CPU指令是否存储在所述高速缓存存储器中。
17.根据权利要求11所述的方法,其特征在于,所述一个或多个外围电路包括外围比较电路,并且所述方法还包括:
利用所述外围比较电路,响应于指示所述指令存储器部分和所述标签存储器部分将被细分为多路的所述路数量指示,确认所述特定CPU指令存储在所述指令存储器部分的所述多路中的哪一路。
18.根据权利要求11所述的方法,其特征在于,所述标签存储器部分的标签存储器位置用于在第一时间段内被读取,并且其中被读取的所述标签存储器位置中的每一个都通过所述CPU地址的索引部分来确认。
19.根据权利要求18所述的方法,其特征在于,所述指令存储器部分的指令存储器位置用于在第二时间段内被读取,其中所述第二时间段在所述第一时间段之后,并且其中被读取的所述指令存储器位置由以下之一来确认:
A)由于指示所述指令存储器部分和所述标签存储器部分将被细分为多路的路数量指示,由在所述第一时间段内读取的标签地址数据和所述CPU地址的索引部分的组合来确认,以及
B)由于指示所述指令存储器部分和所述标签存储器部分将被细分为单一路的路数量指示,由无来自所述CPU地址的标签部分的数据的所述CPU地址的索引部分来确认。
20.根据权利要求19所述的方法,其特征在于,所述第一时间段和所述第二时间段发生在CPU时钟周期的单个时钟周期内。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/010,775 US11467966B2 (en) | 2020-09-02 | 2020-09-02 | Cache memory having a programmable number of ways |
US17/010,775 | 2020-09-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113961483A CN113961483A (zh) | 2022-01-21 |
CN113961483B true CN113961483B (zh) | 2023-10-10 |
Family
ID=77564028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111007235.XA Active CN113961483B (zh) | 2020-09-02 | 2021-08-30 | 高速缓存存储器和使用高速缓存存储器的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11467966B2 (zh) |
EP (1) | EP3964967B1 (zh) |
CN (1) | CN113961483B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11803383B2 (en) | 2020-12-29 | 2023-10-31 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Method and system for executing new instructions |
US11669328B2 (en) | 2020-12-29 | 2023-06-06 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Method and system for converting instructions |
US11789736B2 (en) * | 2020-12-29 | 2023-10-17 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Method and system for executing new instructions |
US11914997B2 (en) | 2020-12-29 | 2024-02-27 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Method and system for executing new instructions |
US11816487B2 (en) | 2020-12-29 | 2023-11-14 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Method of converting extended instructions based on an emulation flag and retirement of corresponding microinstructions, device and system using the same |
US11803387B2 (en) | 2020-12-29 | 2023-10-31 | Shanghai Zhaoxin Semiconductor Co., Ltd. | System for executing new instructions and method for executing new instructions |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727406A (zh) * | 2008-10-20 | 2010-06-09 | 株式会社东芝 | 组相联方式的高速缓存装置、高速缓存方法及处理器系统 |
CN102138129A (zh) * | 2008-09-05 | 2011-07-27 | 飞思卡尔半导体公司 | 用于数据处理系统中的统一高速缓存的错误检测方案 |
JPWO2013098919A1 (ja) * | 2011-12-26 | 2015-04-30 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
WO2016107182A1 (zh) * | 2014-12-31 | 2016-07-07 | 华为技术有限公司 | 一种多路组相联的高速缓冲存储器及其处理方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5073891A (en) * | 1990-02-14 | 1991-12-17 | Intel Corporation | Method and apparatus for testing memory |
US5493667A (en) * | 1993-02-09 | 1996-02-20 | Intel Corporation | Apparatus and method for an instruction cache locking scheme |
US6308261B1 (en) * | 1998-01-30 | 2001-10-23 | Hewlett-Packard Company | Computer system having an instruction for probing memory latency |
JP3798563B2 (ja) * | 1999-01-06 | 2006-07-19 | 株式会社東芝 | 命令キャッシュメモリ |
US20050223172A1 (en) * | 2004-03-31 | 2005-10-06 | Ulrich Bortfeld | Instruction-word addressable L0 instruction cache |
US7278012B2 (en) * | 2005-06-02 | 2007-10-02 | Qualcomm Incorporated | Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions |
JP2011028736A (ja) * | 2009-07-02 | 2011-02-10 | Fujitsu Ltd | キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法 |
JP5703192B2 (ja) * | 2011-11-04 | 2015-04-15 | 本田技研工業株式会社 | 車両周辺監視装置 |
US9798668B2 (en) | 2014-12-14 | 2017-10-24 | Via Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon the mode |
-
2020
- 2020-09-02 US US17/010,775 patent/US11467966B2/en active Active
-
2021
- 2021-08-30 CN CN202111007235.XA patent/CN113961483B/zh active Active
- 2021-08-31 EP EP21194074.7A patent/EP3964967B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102138129A (zh) * | 2008-09-05 | 2011-07-27 | 飞思卡尔半导体公司 | 用于数据处理系统中的统一高速缓存的错误检测方案 |
CN101727406A (zh) * | 2008-10-20 | 2010-06-09 | 株式会社东芝 | 组相联方式的高速缓存装置、高速缓存方法及处理器系统 |
JPWO2013098919A1 (ja) * | 2011-12-26 | 2015-04-30 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
WO2016107182A1 (zh) * | 2014-12-31 | 2016-07-07 | 华为技术有限公司 | 一种多路组相联的高速缓冲存储器及其处理方法 |
Non-Patent Citations (2)
Title |
---|
A Reconfigurable Cache for Efficient Use of Tag RAM as Scratch-Pad Memory;Ing-Jer Huang,etc;《IEEE Transactions on Very Large Scale Integration (VLSI) Systems》;663 - 670 * |
嵌入式处理器中Cache的研究与设计;姜难难;《中国优秀硕士学位论文全文数据库信息科技辑》;I137-42 * |
Also Published As
Publication number | Publication date |
---|---|
US11467966B2 (en) | 2022-10-11 |
EP3964967B1 (en) | 2023-10-04 |
EP3964967A1 (en) | 2022-03-09 |
US20220066933A1 (en) | 2022-03-03 |
CN113961483A (zh) | 2022-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113961483B (zh) | 高速缓存存储器和使用高速缓存存储器的方法 | |
US6339813B1 (en) | Memory system for permitting simultaneous processor access to a cache line and sub-cache line sectors fill and writeback to a system memory | |
US5091851A (en) | Fast multiple-word accesses from a multi-way set-associative cache memory | |
JP2554449B2 (ja) | キャッシュ・メモリを有するデータ処理システム | |
US10169232B2 (en) | Associative and atomic write-back caching system and method for storage subsystem | |
US5235697A (en) | Set prediction cache memory system using bits of the main memory address | |
KR102421311B1 (ko) | 태그 매칭 명령에 응답하는 저장회로 | |
US6425055B1 (en) | Way-predicting cache memory | |
US5617347A (en) | Cache memory system and method thereof for storing a staged memory item and a cache tag within a single cache array structure | |
US8180965B2 (en) | System and method for cache access prediction | |
EP0407119A2 (en) | Apparatus and method for reading, writing and refreshing memory with direct virtual or physical access | |
US5548739A (en) | Method and apparatus for rapidly retrieving data from a physically addressed data storage structure using address page crossing predictive annotations | |
US7809890B2 (en) | Systems and methods for increasing yield of devices having cache memories by inhibiting use of defective cache entries | |
US5953747A (en) | Apparatus and method for serialized set prediction | |
JP3463292B2 (ja) | キャッシュ動作要求間の競合に応答して置換用の代替キャッシュ・エントリを選択する方法及びシステム | |
US6823426B2 (en) | System and method of data replacement in cache ways | |
US6715040B2 (en) | Performance improvement of a write instruction of a non-inclusive hierarchical cache memory unit | |
US6212616B1 (en) | Even/odd cache directory mechanism | |
US5966737A (en) | Apparatus and method for serialized set prediction | |
JP2014186579A (ja) | キャッシュメモリ、キャッシュメモリ制御装置、および、そのキャッシュメモリ制御方法 | |
CN114072776B (zh) | 小面积高速缓冲存储器 | |
US6493792B1 (en) | Mechanism for broadside reads of CAM structures | |
US6581139B1 (en) | Set-associative cache memory having asymmetric latency among sets | |
KR19990068873A (ko) | 캐쉬 메모리 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |