CN114072776B - 小面积高速缓冲存储器 - Google Patents
小面积高速缓冲存储器 Download PDFInfo
- Publication number
- CN114072776B CN114072776B CN202180004238.XA CN202180004238A CN114072776B CN 114072776 B CN114072776 B CN 114072776B CN 202180004238 A CN202180004238 A CN 202180004238A CN 114072776 B CN114072776 B CN 114072776B
- Authority
- CN
- China
- Prior art keywords
- tag
- memory
- instruction
- cpu
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000002093 peripheral effect Effects 0.000 claims abstract description 18
- 238000010586 diagram Methods 0.000 description 23
- 238000003491 array Methods 0.000 description 7
- 239000000872 buffer Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000000034 method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
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/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
- 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
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/0853—Cache with multiport tag or data arrays
-
- 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
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开了一种高速缓冲存储器。该高速缓冲存储器包括具有多个指令存储器位置的指令存储器部分,该多个指令存储器位置用于存储对多个CPU指令进行编码的指令数据。该高速缓冲存储器还包括具有多个标签存储器位置的标签存储器部分,该多个标签存储器位置用于存储对存储CPU指令的多个RAM地址范围进行编码的标签数据。该指令存储器部分包括具有指令存储器阵列的单个存储器电路和与指令存储器阵列通信连接的多个指令外围电路。该标签存储器部分包括多个标签存储器电路,其中,每一个标签存储器电路包括标签存储器阵列和与标签存储器阵列通信连接的多个标签外围电路。
Description
相关申请的交叉引用
本专利文件要求于2020年3月13日提交的发明名称为“小面积高速缓冲存储器(LOW AREA CACHE MEMORY)”的申请号为16/817,609的美国专利申请的优先权和权益。上述专利申请的全部内容通过引用并入本申请的公开内容的一部分。
技术领域
本申请一般涉及生成高速缓冲存储器,更具体地,涉及占用较小面积的高速缓冲存储器架构。
背景技术
计算机系统中使用高速缓冲存储器以缩短被频繁使用指令的指令访问时间。
中央处理单元(CPU)可执行指令存储在RAM中,并可由CPU根据需要访问。部分而非全部指令,例如最近使用的指令,被另外存储在高速缓冲存储器中。因为高速缓冲存储器比RAM存储器快,所以高速缓冲存储器是优选的,并且如果CPU所需的指令存储在其中,则使用高速缓冲存储器。如果CPU需要的指令未存储在高速缓冲存储器中,则从RAM存储器中检索该指令。
传统的高速缓冲存储器需要芯片占据较大的面积来实现。本领域需要占用更小面积的改进的高速缓冲存储器。
发明内容
一个发明方面是一种高速缓冲存储器。所述高速缓冲存储器包括指令存储器部分,具有多个指令存储器位置,所述多个指令存储器位置用于存储对多个CPU指令进行编码的指令数据。所述高速缓冲存储器还包括标签存储器部分,具有多个标签存储器位置,所述多个标签存储器位置用于存储对存储所述CPU指令的多个RAM存储器地址范围进行编码的标签数据。所述指令存储器部分包括单个存储器电路,所述单个存储器电路具有指令存储器阵列和与所述指令存储器阵列通信连接的多个指令外围电路。所述标签存储器部分包括多个标签存储器电路,其中,每一个所述标签存储器电路包括:标签存储器阵列,以及与所述标签存储器阵列通信连接的多个标签外围电路。
另一个发明方面是一种计算机系统。所述计算机系统包括:CPU,用于执行CPU指令;RAM,用于存储所述CPU指令的第一表示;以及高速缓冲存储器。所述高速缓冲存储器包括指令存储器部分,具有多个指令存储器位置,所述多个指令存储器位置用于存储对多个CPU指令进行编码的指令数据。所述高速缓冲存储器还包括标签存储器部分,具有多个标签存储器位置,所述多个标签存储器位置用于存储对存储所述CPU指令的多个RAM存储器地址范围进行编码的标签数据。所述指令存储器部分包括单个存储器电路,所述单个存储器电路具有指令存储器阵列和与所述指令存储器阵列通信连接的多个指令外围电路。所述标签存储器部分包括多个标签存储器电路,其中,每一个所述标签存储器电路包括:标签存储器阵列,以及与所述标签存储器阵列通信连接的多个标签外围电路。
附图说明
图1是示意性流程图。
图2是根据一些实施例的高速缓冲存储器的示意图。
图3示出了时序图,该时序图示意性地示出了高速缓冲存储器的各种操作的某些时序关系。
图4是比较电路的示意图,该比较电路用于标识M路中的哪一路具有CPU请求的指令。
图5示出了时序图,该时序图示意性地示出了高速缓冲存储器和比较电路的各种操作的某些时序关系。
图6是根据一些实施例的高速缓冲存储器的指令存储器部分的示意图。
图7示出了时序图,该时序图示意性地示出了高速缓冲存储器的指令存储器部分的各种操作的某些时序关系。
图8示出了时序图,该时序图示意性地示出了高速缓冲存储器的各种操作的某些时序关系的另一个实施例。
图9是示出了与传统高速缓冲存储器相比,通过使用本文讨论的发明方面的高速缓冲存储器的实施例实现的高速缓冲存储器面积和功率改进的图表。
具体实施方式
本文结合附图说明本申明的特定实施例。
本文阐述了各种细节,因为这些细节涉及某些实施例。然而,本申请也可以以与本文描述的方式不同的方式实现。在不脱离本申请的情况下,本领域技术人员可以对所讨论的实施例进行修改。因此,本申请不限于本文公开的特定实施例。
图1是计算机系统100的示意图。计算机系统100包括:CPU 110、随机存取存储器(RAM)120和高速缓冲存储器130。
存储在高速缓冲存储器130中的信息包括CPU 110执行软件应用可能需要的指令。存储在高速缓冲存储器130中的信息还包括针对每一个特定指令的信息,该信息标识RAM120的存储特定指令的一部分或地址范围。标识信息称为标签。如本领域技术人员所理解的,其他信息可以另外存储在高速缓冲存储器中。
如本领域技术人员所理解的,在计算机系统中,高速缓冲存储器可以被细分为多路,其中每一路独立地进行写入和读取。为了从高速缓冲存储器中获取指令,CPU向高速缓冲存储器提供地址。CPU地址包括标签部分和索引部分。在一些实施例中,如本领域技术人员所理解的,CPU地址还可以包括其他信息,例如偏移量。
在传统的高速缓冲存储器中,CPU地址的索引部分用于从这些路的每一路中读取一个指令及其相应的标签。因此,基于CPU地址的索引部分,从高速缓冲存储器中读取与路的数量对应的多个指令以及其对应标签中的每一个标签。
在传统的高速缓冲存储器中,每一个与指令相关联的标签都与CPU地址的标签部分进行比较。如果其中一个标签与CPU地址的标签部分匹配,则与匹配标签对应的指令作为CPU请求的指令被提供给CPU。如果没有标签与CPU地址的标签部分匹配,则CPU请求的指令不在高速缓冲存储器中,而是必须从RAM中进行检索。
图2是根据一些实施例的高速缓冲存储器200的示意图。高速缓冲存储器200可以在计算机系统100中用作高速缓冲存储器130。高速缓冲存储器200包括M路230,其中,每一路包括标签存储器部分210和指令存储器部分220。
在一些实施例中,如本领域技术人员所理解的,高速缓存存储器200的路包括一个或多个其他存储器部分。例如,在一些实施例中,每一路包括有效位部分,其中,该有效位部分中的每一位指示特定指令是否有效,如本领域技术人员所理解的。
指令存储器部分220写入有与CPU指令相对应的数据。此外,标签存储器部分210写入有数据,该数据与RAM的存储指令的部分或地址范围相对应。
指令存储器部分220是单个存储器电路,尽管抽象地或在概念上被分成M路。因此,指令存储器部分220包括存储器单元阵列,该存储器单元阵列从多个外围电路接收信号并向多个外围电路提供信号,该多个外围电路用于访问存储器单元以写入和读取指令信息。如本领域技术人员所理解的,外围电路可以包括例如地址解码器、感测放大器、列多路复用器和输出缓冲器。在一些实施例中,外围电路可以包括一个或多个其他电路。每一个存储器单元是这些路中的特定的一路的组成部分。然而,每一个外围电路可以从所有路的存储器单元接收信号或向其提供信号。
标签存储器部分210包括用于这些路中的每一路的单个存储器电路。因此,每一路包括存储器单元阵列,该存储器单元阵列从多个外围电路接收信号并向多个外围电路提供信号,该多个外围电路用于访问存储器单元以写入和读取标签信息。如本领域技术人员所理解的,外围电路可以包括例如地址解码器、感测放大器、列多路复用器和输出缓冲器。在一些实施例中,外围电路可以包括一个或多个其他电路。每一个存储器单元和外围电路都是这些路中特定的一路的组成部分。
高速缓冲存储器200被构造为使得为了从高速缓冲存储器200中获取指令,CPU(例如,CPU 110)向高速缓冲存储器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)和M个指令存储器部分220(0)至220(M-1)的关联至少由具有部分或全部由CPU地址的索引部分标识的地址的M个标签存储器部分210(0)至210(M-1)以及其关联的M个指令存储器部分220(0)至220(M-1)中的每一个在硬件中进行实例化。
读取由CPU地址的索引部分标识的M个标签存储器部分210(0)至210(M-1),以检索M个标签。将M个标签中的每一个与CPU地址的标签部分进行比较。如果M个标签中的一个标签与CPU地址的标签部分匹配,则标识具有匹配标签的路。如果没有标签与CPU地址的标签部分匹配,则CPU请求的指令不在高速缓冲存储器中,且必须从RAM中进行检索。
然后,CPU地址的索引部分用于从所标识的路的指令存储器部分220(x)中读取指令。从所标识的路的指令存储器部分220(x)读取的指令作为CPU请求的指令返回给CPU。
图3示出了时序图300,该时序图示意性地示出了高速缓冲存储器200的各种操作的某些时序关系。时序图300示出了CPU时钟波形310、标签时钟波形320、指令时钟波形330和指令波形340。所示的波形对应于本领域技术人员理解的时钟产生电路产生的时钟。
CPU时钟波形310示出了由CPU 110使用的CPU时钟的表示。如本领域技术人员所理解的,由CPU时钟波形310表示的CPU时钟可以被CPU 110用于例如接收输入数据、执行指令和生成输出数据。CPU 110可以使用由CPU时钟波形310表示的CPU时钟以另外执行其他操作。CPU 110可以使用附加时钟(未示出)。
标签时钟波形320示出了由标签存储器部分210使用的标签时钟的表示。由标签时钟波形320表示的标签时钟可以被标签存储器部分210所使用,例如,用于向标签存储器部分210写入标签数据和从标签存储器部分210读取标签数据。
指令时钟波形330示出了由指令存储器部分220使用的指令时钟的表示。由指令时钟波形330表示的指令时钟可以被指令存储器部分220所使用,例如,用于向指令存储器部分220写入指令数据和从指令存储器部分220读取指令数据。
指令波形340示出了指令数据的表示。指令数据对指令进行编码,该指令可由CPU110执行并由高速缓冲存储器200提供给CPU 110,例如用于由CPU 110执行。
如图3所示,在CPU时钟周期的第一部分期间,标签时钟是活动的(高电平)。当标签时钟是活动的,读取由CPU地址的索引部分标识的M个标签存储器部分210(0)至210(M-1),以检索M个标签。此外,当标签时钟是活动的,将M个标签中的每一个与CPU地址的标签部分进行比较。如果M个标签中的一个标签与CPU地址的标签部分匹配,则标识具有匹配标签的路。
在接下来的CPU时钟周期的第二部分期间,指令时钟是活动的(高电平)。在CPU时钟周期的第二部分期间,CPU地址的索引部分用于对所标识的路的指令存储器部分220(x)执行读取操作,以从中读取指令。一旦被读取,从所标识的路的指令存储器部分220(x)读取的指令作为CPU 110请求的指令被返回到CPU 110。
时序图300示意性地示出了CPU时钟波形310、标签时钟波形320、指令时钟波形330和指令波形340的某些时序关系的实施例。可替代地,可以使用可替代的时序关系。例如,可以修改CPU时钟波形310和标签时钟波形320与指令时钟波形330中的一者或两者之间的相位关系。附加地或可替代地,在一些实施例中,标签时钟波形320和指令时钟波形330中的一者或两者的活动状态为低。
图4是比较电路400的示意图,该比较电路400用于标识M路中的哪一路具有CPU110请求的指令。比较电路400包括标签比较器410(0)至410(M-1)和三态驱动器阵列420(0)至420(M-1)。在一些实施例中,使用替代的比较电路。
如图所示,比较电路400在总线CPU标签处接收CPU地址的标签部分。此外,比较电路在标签总线标签(0)至标签(M-1)处接收M个标签。作为读取M路的标签存储器部分210(0)至210(M-1)中的一个标签存储器部分的结果,生成M个标签中的每一个标签。
标签比较器410(0)至410(M-1)中的每一个用于将M个标签中的一个标签与总线CPU标签处的CPU地址的标签部分进行比较。M个标签中最多有一个与CPU地址的标签部分匹配。
三态驱动器阵列420(0)至420(M-1)中的每一个都具有接收标识M路中的一路的数据的数据输入。三态驱动器阵列420(0)至420(M-1)中的每一个三态驱动器阵列的数据输入连接到路标识总线路(0)至路(M-1)中的一个。此外,三态驱动器阵列420(0)至420(M-1)中的每一个都接收标签总线标签(0)至标签(M-1)处的M个标签中的特定一个标签是否与总线CPU标签处的CPU地址的标签部分匹配的指示。
三态驱动器阵列接收与其相关联的M个标签中的特定一个标签与总线CPU标签处的CPU地址的标签部分不匹配的指示,三态驱动器阵列具有三态且高阻抗的输出。三态驱动器接收与其相关联的M个标签中的特定一个标签与总线CPU标签处的CPU地址的标签部分匹配的指示,三态驱动器在路总线路(X)处输出数据,指示在其数据输入处标识的特定路。
因此,三态驱动器阵列420(0)至420(M-1)执行多路复用功能,该功能传递标识具有与CPU地址的标签部分匹配的标签数据的特定路的数据。如本领域技术人员所理解的,可替代地,可以使用执行多路复用功能的替代电路。
图5示出了时序图500,该时序图示意性地示出了高速缓冲存储器200和比较电路400的各种操作的某些时序关系。时序图500示出了CPU时钟波形510、标签时钟波形520、标签数据波形530、CPU标签数据波形540和路总线数据波形550。
CPU时钟波形510示出了由CPU 110使用的CPU时钟的表示,并且具有与图3的CPU时钟波形310相似或相同的特性。
标签时钟波形520示出了由标签存储器部分210使用的标签时钟的表示,并且具有与图3的标签时钟波形320相似或相同的特性。
标签数据波形530示出了在标签总线标签(0)至标签(M-1)处标识的M个标签的标签数据的表示。
CPU标签数据波形540示出了在总线CPU标签处的CPU地址的标签部分的表示。
路总线数据波形550示出了在路总线路(X)处的路标识数据的表示。
在CPU时钟周期的第一部分期间,标签时钟是活动的(高电平)。响应于标签时钟是活动的,读取由CPU地址的索引部分标识的M个标签存储器部分210(0)至210(M-1),以检索M个标签。M个标签分别由标签总线标签(0)至标签(M-1)处的数据表示。此外,当标签时钟是活动的,通过比较器410(0)至410(M-1),将M个标签中的每一个与CPU地址的标签部分进行比较。
此外,当标签时钟是活动的,三态驱动器阵列420(0)至420(M-1)中的每一个接收来自路标识总线路(0)至路(M-1)的标识M路中的一路的数据。此外,三态驱动器阵列420(0)至420(M-1)中的每一个都接收来自相应的比较器410的指示,该指示指示标签总线标签(0)至标签(M-1)处的M个标签中的特定一个标签是否与总线CPU标签处的CPU地址的标签部分匹配。
此外,当标签时钟是活动的,三态驱动器阵列接收与其相关联的M个标签中的特定一个标签与总线CPU标签处的CPU地址的标签部分匹配的指示,在路总线路(X)处输出路标识数据,标识在其数据输入处标识的特定路。
时序图700示意性地示出了CPU时钟波形510、标签时钟波形520、标签数据波形530、CPU标签数据波形540和路总线数据波形550的某些时序关系的实施例。可替代地,可以使用可替代的时序关系。例如,可以修改CPU时钟波形510和标签时钟波形520之间的相位关系。附加地或可替代地,在一些实施例中,标签时钟波形520的活动状态为低。
图6是根据一些实施例的高速缓冲存储器200的指令存储器部分220的示意图。指令存储器部分220包括存储在高速缓冲存储器200的所有路中的指令的存储器位置。因此,指令存储器部分220包括存储在存储器位置220(0)至220(M*L-1)的指令,其中,M等于路的数量,L等于每一路的长度(指令存储器位置的数量)。
如图所示,指令存储器部分220接收地址。指令存储器部分220用于被读取,以便输出存储在与接收的地址相关联的存储器位置中的指令。
接收的地址包括标签部分和索引部分。
标签部分由比较电路400生成,并且由路总线路(X)处的路数据形成,该路数据指示因具有与CPU地址的标签部分匹配的标签数据被标识的特定路。
接收的地址的索引部分由CPU地址的索引部分形成。
图7示出了时序图700,该时序图示意性地示出了高速缓冲存储器200的指令存储器部分220的各种操作的某些时序关系。时序图700示出了CPU时钟波形710、指令时钟波形720、索引数据波形730、路数据波形740和指令数据波形750。
CPU时钟波形710示出了由CPU 110使用的CPU时钟的表示,并且具有与图3的CPU时钟波形310相似或相同的特性。
指令时钟波形720示出了由指令存储器部分220使用的指令时钟的表示,并且具有与图3的指令时钟波形320相似或相同的特性。
索引数据波形730示出了总线CPU标签处的CPU地址的索引部分的表示。
路数据波形740示出了路总线路(X)处的路标识数据的表示。
指令数据波形750示出了从指令存储器部分220读取的指令的表示。
参考图5,在CPU时钟周期的第一部分之后的CPU时钟周期的第二部分期间,指令时钟是活动的(高电平)。响应于指令时钟是活动的,路标识数据和CPU地址的索引部分用于从指令存储器部分220读取指令。一旦被读取,从指令存储器部分220读取的指令作为CPU 110请求的指令被返回到CPU110。
时序图700示意性地示出了CPU时钟波形710、指令时钟波形720、索引数据波形730、路数据波形740和指令数据波形750的某些时序关系的实施例。可替代地,可以使用可替代的时序关系。例如,可以修改CPU时钟波形710和指令时钟波形720之间的相位关系。附加地或可替代地,在一些实施例中,指令时钟波形720的活动状态为低。
图8示出了时序图800,该时序图示意性地示出了高速缓冲存储器200的各种操作的某些时序关系的另一个实施例。时序图800示出了CPU时钟波形810、Nx CPU时钟波形810、标签时钟波形820、指令时钟波形830和指令波形840。所示波形对应于本领域技术人员理解的时钟产生电路产生的时钟。
CPU时钟波形810示出了由CPU 110使用的CPU时钟的表示。如本领域技术人员所理解的,由CPU时钟波形810表示的CPU时钟可以被CPU 110用于例如接收输入数据、执行指令和生成输出数据。CPU 110可以使用由CPU时钟波形810表示的CPU时钟以另外执行其他操作。CPU 110可以使用附加时钟(未示出)。
Nx CPU时钟波形815示出了时钟的表示,其频率是CPU时钟频率的倍数。在本实施例中,Nx CPU时钟波形815的时钟频率是CPU时钟的频率的三倍。Nx CPU时钟波形815的时钟可以使用本领域技术人员已知的电路基于CPU时钟生成。
标签时钟波形820示出了由标签存储器部分210使用的标签时钟的表示。由标签时钟波形820表示的标签时钟可以由标签存储器部分210使用,例如,用于向标签存储器部分210写入标签数据和从标签存储器部分210读取标签数据。
指令时钟波形830示出了由指令存储器部分220使用的指令时钟的表示。由指令时钟波形830表示的指令时钟可以由指令存储器部分220使用,例如,用于向指令存储器部分220写入指令数据和从指令存储器部分220读取指令数据。
指令波形840示出了指令数据的表示。指令数据对指令进行编码,该指令可由CPU110执行并由高速缓冲存储器200提供给CPU 110,例如由CPU110执行。
如图8所示,在CPU时钟周期的第一部分期间,标签时钟是活动的(高电平)。当标签时钟是活动的,读取由CPU地址的索引部分标识的M个标签存储器部分210(0)至210(M-1),以检索M个标签。此外,当标签时钟是活动的,将M个标签中的每一个与CPU地址的标签部分进行比较。如果M个标签中的一个标签与CPU地址的标签部分匹配,则标识具有匹配标签的路。
在接下来的CPU时钟周期的第二部分期间,指令时钟是活动的(高电平)。在CPU时钟周期的第二部分期间,CPU地址的索引部分用于对所标识的路的指令存储器部分220(x)执行读取操作,以从中读取指令。一旦被读取,从所标识的路的指令存储器部分220(x)读取的指令作为CPU 110请求的指令被返回到CPU 110。
时序图800示意性地示出了CPU时钟波形810、Nx CPU时钟波形815、标签时钟波形820、指令时钟波形830和指令波形840的某些时序关系的实施例。可替代地,可以使用可替代的时序关系。例如,可以修改CPU时钟波形810和Nx CPU时钟波形815、标签时钟波形820和指令时钟波形830之间的相位关系。附加地或可替代地,在一些实施例中,标签时钟波形820和指令时钟波形830中的一者或两者的活动状态为低。
比较示例
图9是示出了与传统高速缓冲存储器相比,通过使用本文讨论的发明方面的高速缓冲存储器的实施例实现的高速缓冲存储器面积和功率改进的图表。新旧高速缓冲存储器都是8千字节4路,运行频率为32MHz的CPU时钟。新的高速缓冲存储器使用3倍的CPU时钟,运行频率为96MHz。
如图9所示,新的高速缓冲存储器使用的面积减少了51%,功率减少了72%。
尽管通过如上所述的特定实施例公开了本申请,但是这些实施例并不旨在限制本申请。基于本文公开的方法和技术方面,在不脱离本申请的精神和范围的情况下,本领域技术人员可以对所公开的实施例进行变体和改变。
Claims (18)
1.一种高速缓冲存储器,包括:
指令存储器部分,包括多个指令存储器位置,所述多个指令存储器位置用于存储对多个CPU指令进行编码的指令数据;以及
标签存储器部分,包括多个标签存储器位置,所述多个标签存储器位置用于存储对存储所述CPU指令的多个RAM存储器地址范围进行编码的标签数据,以及
比较电路,用于将每一个读取的所述标签存储器位置的所述标签数据与所述CPU地址的标签部分进行比较;
其中,所述指令存储器部分包括单个存储器电路,所述单个存储器电路包括指令存储器阵列和与所述指令存储器阵列通信连接的多个指令外围电路,并且
其中,所述标签存储器部分包括多个标签存储器电路,其中,每一个所述标签存储器电路包括:
标签存储器阵列,以及
与所述标签存储器阵列通信连接的多个标签外围电路;
所述比较电路包括标签比较器和三态驱动器阵列,其中,所述三态驱动器的数据输入连接到标识总线路中的一个上,在所述三态驱动器接收与其相关联的标签中的特定一个标签与总线CPU标签处的CPU地址的标签部分匹配的指示的情况下,所述三态驱动器在路总线路处输出数据,指示在其数据输入处标识的特定路。
2.根据权利要求1所述的高速缓冲存储器,其被分割为M路,其中,所述标签存储器部分的每一个所述标签存储器电路用于存储所述M路中的单独一路的标签数据,其中,M是整数。
3.根据权利要求2所述的高速缓冲存储器,其中,所述指令存储器部分的所述单个存储器电路用于存储所述M路中的每一路的指令数据。
4.根据权利要求2所述的高速缓冲存储器,其中,所述标签存储器部分的每一个所述标签存储器电路的标签存储器位置用于在第一时间段期间被读取,并且其中,每一个读取的所述标签存储器位置是利用CPU地址的索引部分进行标识的。
5.根据权利要求4所述的高速缓冲存储器,其中,所述CPU地址的所述标签部分标识存储特定CPU指令的第一表示的RAM存储器地址范围,其中,所述特定CPU指令的第二表示存储在所述指令存储器部分中。
6.根据权利要求4所述的高速缓冲存储器,还包括多路复用器电路,所述多路复用器电路用于向所述指令存储器部分提供标签地址数据,其中,提供的所述标签地址数据标识具有与所述CPU地址的所述标签部分匹配的标签数据的特定路。
7.根据权利要求6所述的高速缓冲存储器,其中,所述指令存储器部分的所述单个存储器电路的指令存储器位置用于在第二时间段期间被读取,其中,所述第二时间段在所述第一时间段之后,并且其中,读取的所述指令存储器位置是由在所述第一时间段期间读取的所述标签地址数据和所述CPU地址的所述索引部分的组合进行标识的。
8.根据权利要求7所述的高速缓冲存储器,其中,所述第一时间段和所述第二时间段出现在CPU时钟周期的单个时钟周期内。
9.根据权利要求8所述的高速缓冲存储器,其中,所述第一时间段的持续时间和所述第二时间段的持续时间的总和小于所述CPU时钟周期的所述单个时钟周期的持续时间。
10.一种计算机系统,包括:
中央处理单元(CPU),用于执行CPU指令;
随机存取存储器(RAM),用于存储所述CPU指令的第一表示;以及
高速缓冲存储器,包括:
指令存储器部分,包括多个指令存储器位置,所述多个指令存储器位置存储所述CPU指令的子集的第二表示;以及
标签存储器部分,包括多个标签存储器位置,所述多个标签存储器位置存储对存储所述CPU指令的子集的第一表示的多个RAM存储器地址范围进行编码的标签数据,
比较电路,所述比较电路用于将每一个读取的所述标签存储器位置的所述标签数据与所述CPU地址的标签部分进行比较;
其中,所述指令存储器部分包括单个存储器电路,所述单个存储器电路包括指令存储器阵列和与所述指令存储器阵列通信连接的多个指令外围电路,并且
其中,所述标签存储器部分包括多个标签存储器电路,其中,每一个所述标签存储器电路包括:
标签存储器阵列,以及
与所述标签存储器阵列通信连接的多个标签外围电路;
所述比较电路包括标签比较器和三态驱动器阵列,其中,所述三态驱动器的数据输入连接到标识总线路中的一个上,在所述三态驱动器接收与其相关联的标签中的特定一个标签与总线CPU标签处的CPU地址的标签部分匹配的指示的情况下,所述三态驱动器在路总线路处输出数据,指示在其数据输入处标识的特定路。
11.根据权利要求10所述的计算机系统,其中,所述高速缓冲存储器被分割为M路,其中,所述标签存储器部分的每一个所述标签存储器电路用于存储所述M路中的单独一路的标签数据,其中,M是整数。
12.根据权利要求11所述的计算机系统,其中,所述指令存储器部分的所述单个存储器电路用于存储所述M路中的每一路的指令数据。
13.根据权利要求11所述的计算机系统,其中,所述标签存储器部分的每一个所述标签存储器电路的标签存储器位置用于在第一时间段期间被读取,并且其中,每一个读取的所述标签存储器位置是利用CPU地址的索引部分进行标识的。
14.根据权利要求10所述的计算机系统,其中,所述CPU地址的所述标签部分标识存储特定CPU指令的第一表示的RAM存储器地址范围,其中,所述特定CPU指令的第二表示存储在所述指令存储器部分中。
15.根据权利要求10所述的计算机系统,其中,所述高速缓冲存储器还包括多路复用器电路,所述多路复用器电路用于向所述指令存储器部分提供标签地址数据,其中,提供的所述标签地址数据标识具有与所述CPU地址的所述标签部分匹配的标签数据的特定路。
16.根据权利要求15所述的计算机系统,其中,所述指令存储器部分的所述单个存储器电路的指令存储器位置用于在第二时间段期间被读取,其中,所述第二时间段在所述第一时间段之后,并且其中,读取的所述指令存储器位置是由在所述第一时间段期间读取的所述标签地址数据和所述CPU地址的所述索引部分的组合进行标识的。
17.根据权利要求16所述的计算机系统,其中,所述第一时间段和所述第二时间段出现在CPU时钟周期的单个时钟周期内。
18.根据权利要求17所述的计算机系统,其中,所述第一时间段的持续时间和所述第二时间段的持续时间的总和小于所述CPU时钟周期的所述单个时钟周期的持续时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410172650.8A CN117950725A (zh) | 2020-03-13 | 2021-03-11 | 用于处理cpu访问高速缓冲存储器的方法及外围电路 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/817,609 | 2020-03-13 | ||
US16/817,609 US11176051B2 (en) | 2020-03-13 | 2020-03-13 | Multi-way cache memory access |
PCT/CN2021/080297 WO2021180186A1 (en) | 2020-03-13 | 2021-03-11 | Low area cache memory |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410172650.8A Division CN117950725A (zh) | 2020-03-13 | 2021-03-11 | 用于处理cpu访问高速缓冲存储器的方法及外围电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114072776A CN114072776A (zh) | 2022-02-18 |
CN114072776B true CN114072776B (zh) | 2024-02-20 |
Family
ID=77664734
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410172650.8A Pending CN117950725A (zh) | 2020-03-13 | 2021-03-11 | 用于处理cpu访问高速缓冲存储器的方法及外围电路 |
CN202180004238.XA Active CN114072776B (zh) | 2020-03-13 | 2021-03-11 | 小面积高速缓冲存储器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410172650.8A Pending CN117950725A (zh) | 2020-03-13 | 2021-03-11 | 用于处理cpu访问高速缓冲存储器的方法及外围电路 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11176051B2 (zh) |
EP (1) | EP3977294B1 (zh) |
CN (2) | CN117950725A (zh) |
WO (1) | WO2021180186A1 (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1617112A (zh) * | 2003-11-14 | 2005-05-18 | 国际商业机器公司 | 提供功率优化的高速缓冲存储器组选择的方法和系统 |
CN101727406A (zh) * | 2008-10-20 | 2010-06-09 | 株式会社东芝 | 组相联方式的高速缓存装置、高速缓存方法及处理器系统 |
CN101809547A (zh) * | 2007-09-10 | 2010-08-18 | 高通股份有限公司 | 使用n路高速缓冲存储器的系统和方法 |
CN104516829A (zh) * | 2013-09-26 | 2015-04-15 | 晶心科技股份有限公司 | 微处理器及使用指令循环高速缓存的方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5031141A (en) * | 1990-04-06 | 1991-07-09 | Intel Corporation | Apparatus for generating self-timing for on-chip cache |
US5353424A (en) | 1991-11-19 | 1994-10-04 | Digital Equipment Corporation | Fast tag compare and bank select in set associative cache |
US6449693B1 (en) | 1999-04-05 | 2002-09-10 | International Business Machines Corporation | Method and apparatus for improving caching within a processor system |
US6385700B2 (en) * | 1999-06-21 | 2002-05-07 | Philips Electronics No. America Corp. | Set-associative cache-management method with parallel read and serial read pipelined with serial write |
KR100398954B1 (ko) * | 2001-07-27 | 2003-09-19 | 삼성전자주식회사 | 멀티웨이 세트 연관 구조의 캐쉬 메모리 및 데이터 판독방법 |
EP1634182A2 (en) | 2003-06-17 | 2006-03-15 | PACT XPP Technologies AG | Data processing device and method |
GB2458295B (en) * | 2008-03-12 | 2012-01-11 | Advanced Risc Mach Ltd | Cache accessing using a micro tag |
JP5142868B2 (ja) | 2008-07-17 | 2013-02-13 | 株式会社東芝 | キャッシュメモリ制御回路及びプロセッサ |
US9086977B2 (en) * | 2011-04-19 | 2015-07-21 | Freescale Semiconductor, Inc. | Cache memory with dynamic lockstep support |
US8949530B2 (en) | 2011-08-02 | 2015-02-03 | International Business Machines Corporation | Dynamic index selection in a hardware cache |
-
2020
- 2020-03-13 US US16/817,609 patent/US11176051B2/en active Active
-
2021
- 2021-03-11 WO PCT/CN2021/080297 patent/WO2021180186A1/en unknown
- 2021-03-11 CN CN202410172650.8A patent/CN117950725A/zh active Pending
- 2021-03-11 CN CN202180004238.XA patent/CN114072776B/zh active Active
- 2021-03-11 EP EP21767323.5A patent/EP3977294B1/en active Active
- 2021-10-12 US US17/499,834 patent/US11544199B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1617112A (zh) * | 2003-11-14 | 2005-05-18 | 国际商业机器公司 | 提供功率优化的高速缓冲存储器组选择的方法和系统 |
CN101809547A (zh) * | 2007-09-10 | 2010-08-18 | 高通股份有限公司 | 使用n路高速缓冲存储器的系统和方法 |
CN101727406A (zh) * | 2008-10-20 | 2010-06-09 | 株式会社东芝 | 组相联方式的高速缓存装置、高速缓存方法及处理器系统 |
CN104516829A (zh) * | 2013-09-26 | 2015-04-15 | 晶心科技股份有限公司 | 微处理器及使用指令循环高速缓存的方法 |
Non-Patent Citations (3)
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;第26卷(第4期);全文 * |
一种适用于FPGA应用的高效高速缓存压缩方法;苏迪 等;复旦学报(自然科学版);第58卷(第5期);全文 * |
微机中的高速缓冲存储器Cache;王承业;;电子制作(06);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117950725A (zh) | 2024-04-30 |
EP3977294B1 (en) | 2023-11-29 |
EP3977294A4 (en) | 2022-07-20 |
EP3977294A1 (en) | 2022-04-06 |
US11544199B2 (en) | 2023-01-03 |
US11176051B2 (en) | 2021-11-16 |
WO2021180186A1 (en) | 2021-09-16 |
CN114072776A (zh) | 2022-02-18 |
US20220066942A1 (en) | 2022-03-03 |
US20210286732A1 (en) | 2021-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3964967B1 (en) | Cache memory and method of using same | |
US5125085A (en) | Least recently used replacement level generating apparatus and method | |
US6381686B1 (en) | Parallel processor comprising multiple sub-banks to which access requests are bypassed from a request queue when corresponding page faults are generated | |
US20080022040A1 (en) | Cache memory system | |
CN115168248B (zh) | 支持simt架构的高速缓冲存储器及相应处理器 | |
US7624234B2 (en) | Directory caches, and methods for operation thereof | |
EP0675443A1 (en) | Apparatus and method for accessing direct mapped cache | |
US8230277B2 (en) | Storage of data in data stores having some faulty storage locations | |
US7007135B2 (en) | Multi-level cache system with simplified miss/replacement control | |
US20030182532A1 (en) | Translation look-aside buffer for improving performance and reducing power consumption of a memory and memory management method using the same | |
CN114072776B (zh) | 小面积高速缓冲存储器 | |
CN100356345C (zh) | 访问高速缓存管线的方法和系统 | |
US10032516B2 (en) | Duo content addressable memory (CAM) using a single CAM | |
CN113377684B (zh) | 数据写入系统与方法 | |
US20040039877A1 (en) | Information processing device equipped with improved address queue register files for cache miss | |
US20050268021A1 (en) | Method and system for operating a cache memory | |
US20050138264A1 (en) | Cache memory | |
KR100517765B1 (ko) | 캐시 메모리 및 그 제어 방법 | |
US6546501B1 (en) | Cache memory apparatus and computer readable recording medium on which a program for controlling a cache memory is recorded | |
US6922767B2 (en) | System for allowing only a partial value prediction field/cache size | |
US20020199064A1 (en) | Cache memory system having block replacement function | |
US6219757B1 (en) | Cache flush operation for a stack-based microprocessor | |
KR100343940B1 (ko) | 트랜슬레이션 룩어헤드 버퍼 예측 비트를 이용한 쓰기동작시의 캐쉬 얼리어싱 방지 | |
KR100257750B1 (ko) | 메모리 겸용 캐시 | |
CN114691541A (zh) | 一种基于动态访问的dram-nvm混合内存预测器 |
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 |