CN113641598A - 微处理器、高速缓存存储器系统及其中实现的方法 - Google Patents
微处理器、高速缓存存储器系统及其中实现的方法 Download PDFInfo
- Publication number
- CN113641598A CN113641598A CN202111021600.2A CN202111021600A CN113641598A CN 113641598 A CN113641598 A CN 113641598A CN 202111021600 A CN202111021600 A CN 202111021600A CN 113641598 A CN113641598 A CN 113641598A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- eviction
- level
- queue
- 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.)
- Pending
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
-
- 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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
-
- 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/0817—Cache consistency protocols using directory methods
-
- 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/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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- 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
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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
- G06F9/30047—Prefetch instructions; cache control 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/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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
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
本发明提供微处理器、高速缓存存储器系统及其中实现的方法。在一个实施例中,一种微处理器,包括:第一数据高速缓存;以及第二数据高速缓存,其被配置为处理由第一加载或存储操作引起的第一数据高速缓存中的未命中、以及为了容纳第一加载或存储操作而从第一数据高速缓存的逐出这两者,第二数据高速缓存被配置为基于与逐出相对应的第一状态,在逐出实际上完成之前向第一数据高速缓存指示逐出完成。
Description
技术领域
本发明大体上涉及微处理器,并且更特别地,涉及微处理器中的高速缓存存储器系统。
背景技术
大多数现代计算机系统包括进行执行软件程序所需的计算的微处理器。计算机系统还包括连接到(或内置到)微处理器的其它装置(诸如存储器等)。存储器存储要由微处理器执行的软件程序指令。存储器还存储由程序指令操纵以实现程序的期望功能的数据。
计算机系统中的在微处理器外部(或处理器核外部)的装置(诸如存储器等),通过处理器总线直接或间接连接到微处理器(或核)。处理器总线是使得微处理器能够以相对较大的块传输数据的信号集合。当微处理器执行对存储在存储器中的数据进行计算的程序指令时,微处理器使用处理器总线将数据从存储器提取(fetch)到微处理器中。类似地,微处理器使用处理器总线将计算结果写回到存储器。
从存储器提取数据或将数据写入存储器所需的时间比微处理器对数据进行计算所需的时间长许多倍。因此,微处理器必须低效率地、空闲地等待从存储器中提取数据。为了减少这个问题,现代微处理器包括至少一个高速缓存存储器。高速缓存存储器或高速缓存是微处理器(或处理器核)内部的一般比系统存储器小得多的存储器,并且其存储系统存储器中的数据的子集。当微处理器执行参考数据的指令时,微处理器首先检查数据是否存在于高速缓存中并且有效。如果是这样,与必须从系统存储器中检索数据相比,该指令可以更快地执行,这是因为数据已经存在于高速缓存中。也就是说,在使用处理器总线将数据从存储器提取到高速缓存中时,微处理器不必等待。微处理器检测到数据存在于高速缓存中并且有效的情况通常被称为高速缓存命中。高速缓存中不存在所参考的数据的情况通常称为高速缓存未命中。当所参考的数据已经在高速缓存中时,通过避免从外部存储器检索数据所需的额外时钟周期,实现了显著的时间节省。
在一些微处理器中,高速缓存实际上由多个高速缓存组成。多个高速缓存以多级的层级结构布置。例如,微处理器可能具有两种类型的高速缓存,称为第一级或一级(L1)高速缓存和第二级或二级(L2)高速缓存。L1高速缓存比L2高速缓存更接近微处理器的计算元件。也就是说,L1高速缓存能够比L2高速缓存更快地向计算元件提供数据。尽管不一定,但是L2高速缓存通常比L1高速缓存大。甚至可能存在第三级(L3)高速缓存,其甚至比L1和L2高速缓存更大,在L3之后(在未命中的情况下)最终访问系统存储器。
在许多微处理器架构中,L1高速缓存实际上由两个高速缓存(L1指令(L1i)高速缓存和L1数据(L1d)高速缓存)组成。出于本发明的目的,特别强调L1d高速缓存,为了速度和效率,期望加载和存储指令在L1d高速缓存中命中。如果存在未命中,则需要从其它地方引入高速缓存行(cache line),并且优选为L2高速缓存。然而,也可能需要从L1d高速缓存中逐出高速缓存行,以使得为新的高速缓存行分配空间。为了处理这些任务,L2高速缓存访问标签和数据阵列管线,其中标签和数据阵列管线也接收来自其它源的请求(例如,I-高速缓存请求、外部窥探(snoop)、从L2高速缓存到L3高速缓存的逐出等)。尽管从性能的角度来看,期望满足例如L2高速缓存中的每单个时钟周期的加载请求,但由于其它请求源正在试图访问标签阵列/标签数据管线,因此实现该基准(benchmark)是复杂的,这会阻碍L2处理加载请求的能力。事实上,已经观察到,由于L1d缓存逐出在L2高速缓存中的积压(主要由于不能跟上同时加载和逐出的稳定流),到L2高速缓存的逐出通常会延迟。
发明内容
在一个实施例中,一种微处理器,包括:第一数据高速缓存;以及第二数据高速缓存,其被配置为对由第一加载或存储操作引起的所述第一数据高速缓存中的未命中、以及为了容纳所述第一加载或存储操作而从所述第一数据高速缓存的逐出这两者进行处理,所述第二数据高速缓存被配置为基于与所述逐出相对应的第一状态,在实际上完成所述逐出之前向所述第一数据高速缓存指示该逐出完成。
通过审查以下附图和详细描述,本发明的其它系统、方法、特征和优点对于本领域技术人员将是明显的或者将变得明显。所有这些附加系统、方法、特征和优点旨在包括在本说明书内、在本发明的范围内,并且受到所附权利要求的保护。
附图说明
参考以下附图,可以更好地理解本发明的各个方面。不必按比例绘制附图中的组件,而是将重点放在清楚地例示本发明的原理上。此外,在附图中,相同的附图标记在多个视图中表示相应部件。
图1是示出实现高速缓存数据逐出系统的实施例的示例性多核处理器的框图。
图2是示出主要用于与其它系统组件通信的高速缓存存储器的某些特征的框图。
图3是高速缓存数据逐出系统的实施例的框图。
图4是示例性高速缓存数据逐出方法的实施例的流程图。
具体实施方式
公开了一种高速缓存数据逐出系统和方法的某些实施例,该高速缓存数据逐出系统和方法尤其在存在同时加载和逐出的稳定流的情况下,缓解了第二级(L2)数据高速缓存中的第一级(L1)数据高速缓存逐出的积压。在一个实施例中,L2数据高速缓存识别出从L1数据高速缓存的逐出对应于具有干净或未修改状态的逐出数据(例如,高速缓存行)的状态,并且在这样的情况下,立即(例如,在大约两个时钟周期内)在逐出实际上完成之前(例如,经由L2高速缓存目录的更新)向L1数据高速缓存指示逐出完成。通过这样做,重新分配到与最后逐出相同条目的逐出可以没有延迟地进行到L2数据高速缓存,因此防止针对这种状态的L1数据高速缓存逐出的积压。
简而言之,现有的高速缓存存储器系统通常经历L1数据高速缓存逐出的积压,这是因为对逐出中所需的L2标签和/或数据阵列管线的访问与试图访问该标签和/或数据阵列的其它源进行竞争。由于针对管线资源的这些多个竞争,因此较低优先级逐出经常被延迟,从而导致积压。即,在处理逐出的同时,L1数据高速缓存等待来自L2数据高速缓存的逐出完成的指示,并且直到那时,L1数据高速缓存中的用于启用对这些逐出的处理的条目不能处理来自同一条目的后续逐出,直到L2数据高速缓存中对该最前面的逐出的处理已经完成为止。相反,由于对于高速缓存一致性,不需要逐出干净的高速缓存行,而是仅更新L2数据高速缓存的目录,因而高速缓存数据逐出系统的某些实施例识别要被逐出的数据或高速缓存行何时是干净的(例如,独占或共享MESI状态),由此使得高速缓存数据逐出能够在该逐出实际上完成之前向L1数据高速缓存指示该逐出完成,从而防止针对干净高速缓存行的L1数据高速缓存逐出的积压。
已经总结了本发明的高速缓存数据逐出系统的某些特征,现在将详细描述如附图中所例示的高速缓存数据逐出系统。虽然将结合这些附图来描述高速缓存数据逐出系统,但并不意图将其限制于这里所公开的实施例。也就是说,虽然本发明易于进行各种修改和替代形式,但是其特定实施例在附图中通过示例的方式示出,并且这里将被详细描述成足以使本领域技术人员理解。例如,尽管提供了针对L1数据高速缓存进行加载/存储分配以及从L1数据高速缓存到L2高速缓存的逐出的示例,但是本领域的普通技术人员应当理解,类似的原理可以应用于其它高速缓存层级,在一些实施例中包括从例如L2高速缓存到L3高速缓存的分配和逐出。因此,应该理解,附图及其详细描述不意图将本发明限制于所公开的特定形式。相反,意图是覆盖落入如所附权利要求所限定的本发明的精神和范围内的所有修改、等同项和替代。如在本申请中所使用的,词语“可以”以允许的意义(即,意味着有可能)而不是强制的意义(即,意味着必须)被使用。类似地,词语“包括”意味着包括但不限于。
各种单元、模块、电路、逻辑或其它组件可被描述为“被配置为”进行一个或多个任务。在这样的上下文中,“被配置为”是对结构的广泛叙述,其一般意味着“具有在操作期间进行或能够进行一个或多个任务的电路或其它物理结构”。电路可以是专用电路、或在编码指令的控制下操作的更通用处理电路。也就是说,在描述本发明的各种实现的某些方面或特征时,这里可以使用诸如“单元”、“模块”、“电路”、“逻辑”和“组件”等的术语。本领域技术人员将理解,利用电路实现相应的特征,无论该电路是专用电路还是在微编码指令控制下操作的更通用电路。
另外,单元/模块/电路/逻辑/组件可被配置为即使在单元/模块/电路/逻辑/组件当前不处于操作中的情况下也进行任务。叙述被配置为进行一个或多个任务的单元/模块/电路/逻辑/组件显然不意图针对该单元/模块/电路/逻辑/组件进行功能性限定。在这方面,本领域技术人员将理解,电路元件的特定结构或互连一般将由设计自动化工具的编译器(诸如寄存器传送语言(RTL)编译器)确定。RTL编译器在与汇编语言代码非常相似的脚本上运行,以将该脚本编译成用于最终电路的布局或制造的形式。
也就是说,使用更高级的软件工具来设计(诸如本发明的那些)集成电路以对电路的期望功能操作进行建模。众所周知,“电子设计自动化”(或EDA)是一类用于设计诸如集成电路等的电子系统的软件工具。EDA工具还用于将设计功能编程到现场可编程门阵列(FPGA)中。使用诸如Verilog和超高速集成电路硬件描述语言(VHDL)等的硬件描述符语言(HDL)来创建电路的高级表示,其中根据该高级表示可以推断出较低级表示和最终实际布线。实际上,由于现代半导体芯片可以具有数十亿个组件,因此EDA工具被认为是对于其设计而言必不可少的。在实践中,电路设计者使用诸如C/C++等的编程语言来指定操作功能。EDA软件工具将该指定功能转换为RTL。然后,硬件描述符语言(例如Verilog)将RTL转换为门的离散网表。该网表定义了由例如代工厂等生产的实际电路。实际上,这些工具因其在电子和数字系统的设计过程的促进中的角色和用途而被众所周知并理解,因此这里无需描述。
如这里将描述的,本发明涉及一种高速缓存数据逐出系统。然而,在描述示例性高速缓存数据逐出系统之前,描述可以利用高速缓存数据逐出系统的一个示例性架构。对此,现在参考图1,图1是示出多核处理器100(这里也称为微处理器100)的图。如本领域的普通技术人员从这里提供的描述中将理解的,本发明可以以各种不同的电路配置和架构来实现,并且图1中所示的架构仅是许多合适架构中的一个。具体地,在图1中示出的实施例中,处理器100是八核处理器,其中,核被枚举为核0(110_0)至核7(110_7)。
在所示的实施例中,省略了大量电路组件和细节,这些电路组件和细节与理解本发明并不密切相关。如本领域技术人员将理解的,各个处理核(110_0至110_7)包括贯穿处理器100重复的某些相关联或伴随的电路。各个这样的相关子电路在所示出的实施例中表示为切片(slice)。在八个处理核110_0至110_7的情况下,相应地存在八个切片102_0至102_7。这里未描述的其它电路仅被表示为“其它切片逻辑”140_0至140_7。
在所示的实施例中,采用三级高速缓存系统,该三级高速缓存系统包括一级(L1)高速缓存、二级(L2)高速缓存和三级(L3)高速缓存。L1高速缓存分为数据高速缓存和指令高速缓存这两者,分别标记为L1d和L1i。L2高速缓存也驻留在核上,这意味着一级高速缓存和二级高速缓存这两者都在作为各个切片的核的同一电路中。即,各个切片的各个核具有其自己的专用L1d、L1i和L2高速缓存。在核外,但在各个切片内是L3高速缓存。在优选实施例中,L3高速缓存130_0至130_7(这里还统称为130)是分布式高速缓存,这意味着L3高速缓存的1/8驻留在切片0(102_0)中,L3高速缓存的1/8驻留在切片1(102_1)中等等。在优选实施例中,各个L1高速缓存的大小为32k,各个L2高速缓存的大小为256k,并且L3高速缓存的各个切片的大小为2兆字节。由此,L3高速缓存的总大小是16兆字节。
在各个切片中提供总线接口逻辑120_0至120_7,以管理来自不同切片之间的各种电路组件的通信。如图1所示,通信总线190用于允许各种电路切片之间的通信以及与非核电路160之间的通信。非核电路160仅表示处理器芯片上的附加电路,但不是与各个切片相关联的核电路的部分。如各个所示出的切片那样,非核电路160包括总线接口电路162。还示出了用于与处理器外存储器180连接的存储器控制器164。最后,其它非核逻辑166由块宽泛地表示,这表示可作为非核处理器电路的一部分被包括的其它电路(并且再次说明,为了理解本发明,不需要对其进行描述)。
为了更好地示这些电路组件中的一些电路组件之间和内部的某些通信,将呈现以下示例。该示例说明与核6高速缓存中的假设加载未命中相关联的通信。即,该假设假定了处理核6(110_6)正在执行请求地址假设地址1000处的数据的加载的代码。当遇到这种加载请求时,系统首先进行L1d 114_6中的查找以查看数据是否存在于L1d高速缓存中。假定数据不在L1d高速缓存中,则在L2高速缓存112_6中进行查找。再次,假定数据不在L2高速缓存中,则进行查找以查看数据是否存在于L3高速缓存中。如上所述,L3高速缓存是分布式高速缓存,因此如果实际上数据驻留在L3高速缓存中,则系统首先需要确定数据驻留在L3高速缓存的哪个切片中。如已知的,可以使用散列函数(其仅是位的异或)进行该处理以获得三位地址(足以识别数据会存储在哪个切片(切片0至切片7)中)。
与该示例一致,假定该散列函数得到以下指示:数据(如果存在于L3高速缓存中)将存在于L3高速缓存的驻留在切片7中的部分中。然后,进行从切片6(102_6)的L2高速缓存通过总线接口120_6和120_7到切片7(102_7)中存在的L3切片的通信。该通信在图中由圈出的数字1表示。如果数据存在于L3高速缓存中,则将从L3(130_7)通信回L2高速缓存112_6。然而,并且在该示例中,假定数据也不在于L3高速缓存中,从而导致高速缓存未命中。结果,通过存储器控制器164,进行从L3高速缓存130_7通过总线接口7(120_7)通过非核总线接口162到芯片外存储器180的通信。该通信在图中由圈出的数字2表示。然后,通过存储器控制器164和非核总线接口162,将包括驻留在地址1000处的数据的高速缓存行从芯片外存储器180通信回到L3高速缓存130_7中,如由圈出的数字3表示。在将该数据写入L3高速缓存中之后,然后通过总线接口120_7和120_6将该数据通信到请求核(核6(110_6))。
此时,一旦已经完成加载请求,该数据将驻留在高速缓存L3、L2和L1d各自中。本发明的某些实施例涉及驻留在高速缓存存储器系统中(并且在以下示例中,驻留在L1d和L2高速缓存中)的高速缓存存储器数据逐出系统。在描述高速缓存数据逐出系统的细节之前,首先参考图2,图2是示出L2高速缓存112各自的各种电路组件的框图。具体地,图2中示出的组件描绘了促进L2高速缓存112内的通信和与图1中示出的系统中的其它组件的通信的结构的基本特征。首先,存在示出L1d接口210、L1i接口220、预取接口230和外部接口240的四个框210、220、230和240。共同地,这些框表示通过L2高速缓存112对事务或请求进行排队和跟踪的电路。如图1所示,在各个核中,存在L1d和L1i高速缓存这两者以及更高级L2的高速缓存。L1d接口210和L1i接口220将L2高速缓存与L1高速缓存连接。这些接口将例如加载队列、逐出队列和查询队列实施为促进该通信的机制。预取接口230是促进与预取相关联的通信的电路。在一个实施例中,预取器实施边界框预取算法(bounding box prefetchalgorithm)和流预取算法(stream prefetch algorithm)这两者,并最终做出作为这两个算法的结果的结合的结果的预取确定。边界框预取算法可以类似于US 8,880,807中所描述的算法,通过参考而将其并入本文。存在可以被预取器使用的许多已知的流预取算法。
如本领域技术人员将理解的,通过监视从对应核到相关联的L1i和L1d高速缓存的加载请求来部分地进行预取算法。因此,这些被示出为对预取接口230的输入。预取接口230的输出采用对访问标签管线(tagpipe)250的请求的形式,在这里简要描述标签管线250的相关功能将被本领域技术人员理解。最后,外部接口240提供到L2高速缓存外部并且实际上在处理器核外部的组件的接口。如结合图1所描述的,通过总线接口120来路由这种通信(特别是切片外通信)。
如图2所示,各个电路块210、220、230和240具有被表示为标签管线(访问)请求的输出。提供标签管线250作为几乎所有L2高速缓存流量行进通过的中心点。在所示实施例中,存在被表示为A和B的两个标签管线。仅为了负载平衡而提供两个这样的标签管线,并且照此,从电路210、220、230和240(不同接口电路)输出的标签管线请求可以再次基于负载平衡而被引导到标签管线A或标签管线B。在一个实施例中,标签管线是四阶段管线,这些阶段由字母A、B、C和D表示。经由标签管线访问标签/数据阵列的事务(在这里有时被称为“标签管线请求”)前进通过标签管线250的阶段。在A阶段期间,事务请求访问标签管线。在B阶段期间,标签被发送到阵列(标签阵列260和数据阵列270)。在C阶段期间,从阵列接收MESI信息以及标签命中还是未命中的指示,并且考虑到从阵列接收的信息来确定采取什么动作。在D阶段期间,使动作决定(完成/重新执行、推动FillQ等)回到请求队列。
最后,图2示出标签阵列260和数据阵列270。标签阵列260有效地或实质上包括元数据,而数据阵列是包括数据的实际高速缓存行的存储器空间。标签阵列260中的元数据包括MESI状态以及L1i和L1d有效位。如已知的,MESI状态定义存储在数据阵列中的数据是处于修改(“M”)、独占(“E”)、共享(“S”)、还是无效(“I”)状态。
这种架构的类似但先前的版本在US 2016/0350215中进行了描述,通过参考将其并入本文。由于关于电路内组件通信的细节的理解对于理解本发明不是必需的,并且实际上在本领域普通技术人员的技能水平内,因此这里不需要进一步描述。
已经提供了可以实施高速缓存数据逐出系统的某些实施例的示例性整体环境的描述,现在将关注图3,图3示出高速缓存数据逐出系统300的实施例。高速缓存数据逐出系统300包括L1数据(L1d)高速缓存114和L2高速缓存112。L1数据高速缓存114包括L1d加载队列(L1d LoadQ)302、L1d存储队列(L1d StoreQ)304和L1d填充队列(L1d FillQ)306。L2高速缓存包括L2数据加载队列(L2 DataLoadQ)308、L2数据逐出队列(L2 DataEvictQ)310、以及标签和数据阵列管线312,其中L2 DataLoadQ 308和L2 DataEvictQ 310与其它源314(例如,314a、314b)针对访问进行竞争。注意,标签和阵列管线312可以对应于图2中所示的组件(例如,250、260和270)。
首先参考L1数据高速缓存114的所示组件,L1d加载队列302包括加载操作队列,其中一些加载操作队列可能需要访问L2高速缓存112,并且因此进一步提供是否将在L1d填充队列306中分配条目的指示(例如,位状态)。为了确定L1数据高速缓存114是否具有针对给定加载操作的数据,L1d加载队列302请求访问标签阵列,并且如果存在命中,则访问L1数据高速缓存阵列并满足该请求,并且如常规那样对MESI状态做出任何需要的改变。在标签阵列中未识别所请求的高速缓存行(例如,未命中)的情况下,L1d加载队列302试图经由L2高速缓存112来服务加载操作。因而,L1d加载队列302请求条目在L1d填充队列306中的分配(例如,将高速缓存行从L2高速缓存112带入,或者可能带出)。在一个实施例中,L1d加载队列302包括用于相应加载操作的72个条目,但在一些实施例中,可以使用不同数量的条目。
L1d存储队列304包括存储操作队列,其中一些存储操作队列可能需要访问L2高速缓存112,并且因此基于与上文针对由L1d加载队列302处理的加载请求所描述的处理类似的处理,进一步提供是否将在L1d填充队列306中分配条目的指示(例如,位状态),因此,为了简洁起见,这里省略相同或类似的讨论。在一个实施例中,L1d存储队列304包括用于相应存储操作的四十四(44)个条目,但在一些实施例中,可以使用不同数量的条目。
L1d填充队列306包括需要访问L2高速缓存112的加载和/或存储操作的队列。L1d填充队列306的各个条目对应于L1d加载队列条目、L1d存储队列条目、或预取,或者在一些实施例中,对应于查表(tablewalk)请求(例如,基于转译后备缓冲器(translationlookaside buffer)中的未命中来遍历线性到物理映射)。L1d填充队列306还被配置为针对新的高速缓存行分配空间(例如,从L1数据高速缓存114逐出数据)并且将新的高速缓存行带入L1数据高速缓存114中(例如,带入到先前逐出的数据的位置中)。在一个实施例中,L1d填充队列306包括用于加载或存储操作的多个条目,其中各个条目跟踪其相应的分配和逐出。在一个实施例中,存在十(10)个条目,但是在一些实施例中,可以使用不同数量的条目。
现在参考L2高速缓存112的所示的组件,L2数据加载队列308包括L1d分配请求的队列以及L2高速缓存112处的分配请求的状态的各个条目的指示(例如,诸如待决(pending)等的状态)。在一个实施例中,L2数据加载队列308包括十(10)个条目,但是在一些实施例中,可以使用不同数量的条目。如图3中的示例性箭头线所表示的,L2数据加载队列308的各个条目被一对一映射到L1d填充队列306的相应条目上(例如,L1d FillQ[0]针对其L1d加载分配请求总是使用L2DataLoadQ[0])。
L2数据逐出队列310包括L1d逐出队列以及L2高速缓存112处的逐出的状态的各个条目的指示(例如,诸如待决等的状态)。在一个实施例中,L2数据逐出队列310包括十(10)个条目,但是在一些实施例中,可以使用不同数量的条目。如图3中的示例性箭头线所表示的,L2数据逐出队列310的各个条目被一对一映射到L1d填充队列306的相应条目上(例如,L1d FillQ[0]针对其逐出总是使用L2DataEvictQ[0])。L2高速缓存112还包括从L2数据逐出队列310到L1d填充队列306的总线(例如,多热总线(multi-hot bus)),其中L2数据逐出队列310的各个条目的有效位当被断言时指示逐出仍然正在被处理(例如,EvQValid[0]=1向相应的L1d填充队列条目L1dFillQ[0]指示逐出仍然是待决的)。此外,当分配L1d填充队列条目(例如,L1dFillQ[n])时,必须在发送其逐出之前等待相应的有效位被去断言(例如,EvQValid[n]=0),否则其逐出可能重写来自同一条目(例如,L1dFillQ[n])的先前逐出。
L2数据加载队列308和L2数据逐出队列310请求访问管线312以访问标签阵列,从而确定L2高速缓存112是否拥有L1请求的高速缓存行,并且在命中的情况下,访问数据阵列并且将数据(高速缓存行)返回到L1数据高速缓存114。在标签阵列中未命中的情况下,可以访问不同高速缓存(例如,L3高速缓存)以获得所请求的高速缓存行。L2数据逐出队列310请求访问以例如将脏数据写入L2高速缓存阵列、更新(L2标签阵列的)目录位以反映L1数据高速缓存114不再拥有正被逐出的高速缓存行。注意,L2高速缓存112包括如已知的目录(未示出),该目录使得L2高速缓存112能够记录诸如L2高速缓存MESI状态、高速缓存行在L1数据高速缓存114(和L1i高速缓存)中是否有效(使用有效位)等的信息。尽管L2数据加载队列308和L2数据逐出队列310这两者潜在地需要访问管线312的标签和/或数据阵列,但是注意,其它源314同样竞争管线资源。其它源314可以包括I-高速缓存请求、外部窥探、对L2高速缓存112的其它处理需求(例如,从L3高速缓存返回的要被写入到数据阵列和/或标签阵列中的数据)。尽管竞争管线资源,但L2高速缓存112也应维持合适的性能。例如,一个基准(benchmark)可以是按每单个时钟周期处理L2高速缓存112中的一个加载请求,考虑到尝试请求访问管线312的所有这些源314,这是个挑战。
在一个示例操作中,加载或存储操作在L1d加载队列302或L1d存储队列304中排队。当加载或存储操作在L1数据高速缓存114中未命中时,在L1d填充队列306中分配条目。L1d填充队列306进而将加载请求发送到L2高速缓存112,在L2数据加载队列308中跟踪该加载请求。L1d填充队列306还可能需要逐出高速缓存行以适应新的高速缓存行或为新的高速缓存行腾出空间,并且如果需要逐出,则L2数据逐出队列310跟踪该逐出。L2数据逐出队列310使用有效位(例如,EvQValid,如上所述)向L1d填充队列306发信号通知逐出正在进行中,其中各个位对应于L2数据逐出队列310的特定条目(并且因此对应于特定L1d填充队列条目)。
在描述高速缓存数据逐出系统300的实施例之前,简短的题外话有助于理解使用常规高速缓存逐出技术如何可能存在逐出积压。各个L2数据逐出队列条目一次仅跟踪该条目的一个逐出。因此,在L1d填充队列306可以将来自该重新分配的条目的新逐出发送至同一L2数据逐出队列条目之前,L1d填充队列条目必须等待其相应的有效位针对先前逐出而去断言(假定其被断言)。实施该行为以防止L1d填充队列条目重写来自先前的L1d填充队列条目的逐出(例如,如果在重新使用L1d填充队列条目时该逐出尚未完成)。然而,如上所述,已经观察到:使用过去的技术,一般地,由于L2高速缓存中的L1数据逐出的积压(主要由于L2不能跟上同时加载和逐出的稳定流),因此L1d填充队列条目不能以及时的方式将其逐出发送到L2数据逐出队列。
高速缓存数据逐出系统300中的高速缓存行逐出的处理是至少部分地以如下认识为前提:在某些情况下,L2高速缓存112可以安全地忽略某些逐出并且立即允许后续逐出而不违反高速缓存一致性,因此使得后续L1d填充队列条目能够发送其逐出(例如,基于去断言的有效位),而无需等待完成先前逐出。高速缓存数据逐出系统300中的高速缓存行逐出的处理的进一步前提是:进行逐出可能是需要将高速缓存行带入L1数据高速缓存114中的结果,这意味着服务或处理加载需要更高优先级。在一个实施例中,如果L1数据高速缓存114正在逐出脏(dirty)的高速缓存行(例如,具有修改(M)的MESI状态),则L2高速缓存112需要处理该逐出以保持高速缓存一致性(并且因此延迟从同一L1d填充队列条目的后续逐出)。然而,在L1数据高速缓存114正在逐出干净(clean)的高速缓存行(例如,具有共享(S)或独占(E)的MESI状态)的情况下,对于高速缓存一致性实际上不需要逐出。相反,仅由L2高速缓存112使用逐出以更新其目录(例如,通过清除与逐出的高速缓存行相对应的L1数据高速缓存有效位),从而防止潜在的不必要的窥探请求。
在高速缓存数据逐出系统300的实施例中,L2数据逐出队列310在从L1d填充队列306接收到逐出时,将其有效位信号(EvQValid)断言到L2高速缓存112,然后在正被逐出的高速缓存行的状态为干净(例如,S或E MESI状态)的情况下立即(例如,在大约两个时钟周期内)沿着总线将有效位信号去断言到L1d填充队列306。注意,如果正被逐出的高速缓存行是脏的(例如,M MESI状态),则标准逐出处理继续进行,直到在有效位被去断言之前完成为止。对于干净逐出的情况,L2数据逐出队列310继续处理该逐出,直到完成该逐出、以及从同一L1d填充队列条目接收到后续逐出(例如,其重写L2数据逐出队列310中的较老的干净逐出)这两者中的较早者为止。因此,L2数据逐出队列310向L1d填充队列306早地指示其逐出已完成(甚至在经由对L2高速缓存目录的更新而实际完成该逐出之前)使得L1d填充队列306中的同一条目能够在为后面的分配而重新分配该条目时立即开始其逐出处理。
注意,在一些实施例中,如本领域普通技术人员将理解的,除了用于L1数据高速缓存114和L2高速缓存112的整体或聚合操作的控制逻辑之外,图3所示的队列的各个条目包括并行操作的其自己的控制逻辑或状态机。
已经描述了高速缓存数据逐出系统的某些实施例,普通技术人员将理解:在图4中描绘的并且表示为方法400的数据高速缓存逐出方法的一个实施例可以在微处理器中并且特别在高速缓存数据逐出系统300(图3)中实现。在一个实施例中,方法400包括:利用第二数据高速缓存,处理由第一加载或存储操作引起的第一数据高速缓存中的未命中、以及为了容纳所述第一加载或存储操作而从第一数据高速缓存的逐出这两者(402);以及基于与所述逐出相对应的第一状态,在所述逐出实际上完成之前,从所述第二数据高速缓存向所述第一数据高速缓存指示所述逐出完成(404)。
流程图中的任何过程描述或块应理解为表示代码的模块、段、逻辑或部分(其包括用于在过程中实现特定逻辑功能或步骤的一个或多个可执行指令),并且替代实现包括在实施例的范围内,其中如本发明领域技术人员将理解的,功能可以不按所示或讨论的顺序地执行(包括基本上同时执行或以不同顺序执行),这取决于所涉及的功能。
虽然在附图和前面的描述中示出并详细描述了本发明,但这样的图和描述应被认为是例示性或示例性的,而不是限制性的;本发明不限于所公开的实施例。通过研究附图、公开内容和所附权利要求书,本领域技术人员在实践所要求保护的发明时可以理解并实现所公开的实施例的其它变形。
注意,可以使用所公开的实施例的各种组合,因此参考实施例或一个实施例并不意味着从其它实施例的特征的使用中排除该实施例的特征。在权利要求中,词语“包括”不排除其它元件或步骤。
Claims (20)
1.一种微处理器,包括:
第一数据高速缓存;以及
第二数据高速缓存,其被配置为对由第一加载或存储操作引起的所述第一数据高速缓存中的未命中、以及为了容纳所述第一加载或存储操作而从所述第一数据高速缓存的逐出这两者进行处理,所述第二数据高速缓存被配置为基于与所述逐出相对应的第一状态,在实际上完成所述逐出之前向所述第一数据高速缓存指示该逐出完成。
2.根据权利要求1所述的微处理器,其中,所述第二数据高速缓存在向所述第一数据高速缓存发送所述指示之后继续处理所述逐出,直到通过更新所述第二数据高速缓存中的目录而实际上完成所述逐出、以及重写所述逐出这两者中的较早者为止。
3.根据权利要求1所述的微处理器,其中,所述第一状态对应于从分配到所述第一数据高速缓存中起尚未被修改的逐出的高速缓存行。
4.根据权利要求1所述的微处理器,其中,所述第一状态对应于包括独占或共享的MESI状态的逐出的高速缓存行。
5.根据权利要求1所述的微处理器,其中,所述第二数据高速缓存还被配置为对由第二加载或存储操作引起的所述第一数据高速缓存中的未命中、以及为了容纳所述第二加载或存储操作而从所述第一数据高速缓存的另一逐出这两者进行处理,所述第二数据高速缓存被配置为基于与所述另一逐出相对应的第二状态,向所述第一数据高速缓存指示所述另一逐出是待决的,直到实际上完成该另一逐出为止。
6.根据权利要求5所述的微处理器,其中,所述第二状态对应于从分配到所述第一数据高速缓存中起已经修改的逐出的高速缓存行。
7.根据权利要求5所述的微处理器,其中,所述第二状态对应于包括修改的MESI状态的逐出的高速缓存行。
8.一种高速缓存存储器系统,包括:
一级数据高速缓存,其包括一级数据加载队列、一级数据存储队列和一级数据填充队列,所述一级数据填充队列被配置为:基于所述一级数据高速缓存中的未命中而在所述一级数据填充队列中分配分别与所述一级数据加载队列或所述一级数据存储队列中的第一加载或存储操作相对应的条目,并且从所述一级数据高速缓存逐出第一数据来为所述第一加载或存储操作分配空间;以及
二级数据高速缓存,其包括二级数据加载队列和二级数据逐出队列,所述二级数据加载队列被配置为接收针对所述第一加载或存储操作的一级数据高速缓存分配请求,所述二级数据逐出队列被配置为接收所述第一数据、映射到所述二级数据加载队列和所述二级数据逐出队列的相应条目的条目,所述二级数据逐出队列被配置为基于与所述第一数据相对应的第一状态,在实际上完成所述第一数据的逐出之前向所述一级数据填充队列指示该逐出完成。
9.根据权利要求8所述的高速缓存存储器系统,其中,所述二级数据高速缓存还包括标签阵列和数据阵列管线,其中,所述二级数据逐出队列还被配置为:在向所述一级数据填充队列发送所述指示之后请求访问所述管线,直到通过更新所述二级数据高速缓存中的目录而实际上完成所述第一数据的逐出、以及通过将数据重新分配给所述一级数据填充队列的同一条目来重写所述逐出这两者中的较早者为止。
10.根据权利要求8所述的高速缓存存储器系统,还包括总线,所述总线包括被配置为对所述指示进行通信的位值,其中,所述位值在接收到所述逐出时被断言,然后在基于所述一级数据高速缓存中的另一未命中而为用于第二加载或存储操作的另一逐出重新分配条目时立即被去断言,以使得所述一级数据填充队列能够逐出第二数据。
11.根据权利要求8所述的高速缓存存储器系统,其中,与所述第一数据相对应的所述第一状态包括所述第一数据从被分配到所述一级数据高速缓存中起尚未被修改的指示。
12.根据权利要求8所述的高速缓存存储器系统,其中,与所述第一数据相对应的所述第一状态包括独占或共享的MESI状态。
13.根据权利要求8所述的高速缓存存储器系统,其中,所述一级数据填充队列还被配置为基于所述一级数据高速缓存中的未命中而分配分别与所述一级数据加载队列或所述一级数据存储队列中的第三加载或存储操作相对应的条目,并且从所述一级数据高速缓存逐出第三数据来为所述第三加载或存储操作分配空间,所述二级数据加载队列还被配置为接收针对所述第三加载或存储操作的一级数据高速缓存分配请求,并且所述二级数据逐出队列还被配置为接收所述第三数据、映射到所述二级数据加载队列和所述二级数据逐出队列的相应条目的与所述第三加载或存储操作相对应的条目,所述二级数据逐出队列被配置为基于与所述第三数据相对应的第二状态,向所述一级数据填充队列指示所述第三数据的逐出是待决的,直到实际上完成该逐出为止。
14.根据权利要求13所述的高速缓存存储器系统,其中,与所述第三数据相对应的所述第二状态包括所述第三数据从被分配到所述一级数据高速缓存中起已经被修改的指示。
15.根据权利要求13所述的高速缓存存储器系统,其中,与所述第三数据相对应的所述第二状态包括修改的MESI状态。
16.一种在微处理器的高速缓存存储器系统中实现的方法,所述方法包括:
利用第二数据高速缓存,对由第一加载或存储操作引起的第一数据高速缓存中的未命中、以及为了容纳所述第一加载或存储操作而从所述第一数据高速缓存的逐出这两者进行处理;以及
基于与所述逐出相对应的第一状态,在实际上完成所述逐出之前从所述第二数据高速缓存向所述第一数据高速缓存指示所述逐出完成。
17.根据权利要求16所述的方法,还包括:所述第二数据高速缓存在向所述第一数据高速缓存发送所述指示之后继续处理所述逐出,直到通过更新所述第二数据高速缓存中的目录而实际上完成所述逐出、以及重写所述逐出这两者中的较早者为止。
18.根据权利要求16所述的方法,其中,所述第一状态对应于从分配到所述第一数据高速缓存中起尚未被修改的逐出的高速缓存行。
19.根据权利要求16所述的方法,还包括:
所述第二数据高速缓存对由第二加载或存储操作引起的第一数据高速缓存中的未命中、以及为了容纳所述第二加载或存储操作而从所述第一数据高速缓存的另一逐出这两者进行处理;以及
所述第二数据高速缓存基于与所述另一逐出相对应的第二状态,向所述第一数据高速缓存指示所述另一逐出是待决的,直到实际上完成所述另一逐出为止。
20.根据权利要求19所述的方法,其中,所述第二状态对应于从分配到所述第一数据高速缓存起已经被修改的逐出的高速缓存行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/108,499 | 2020-12-01 | ||
US17/108,499 US11467972B2 (en) | 2020-12-01 | 2020-12-01 | L1D to L2 eviction |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113641598A true CN113641598A (zh) | 2021-11-12 |
Family
ID=78424851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111021600.2A Pending CN113641598A (zh) | 2020-12-01 | 2021-09-01 | 微处理器、高速缓存存储器系统及其中实现的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11467972B2 (zh) |
CN (1) | CN113641598A (zh) |
TW (1) | TWI793812B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11847062B2 (en) * | 2021-12-16 | 2023-12-19 | Advanced Micro Devices, Inc. | Re-fetching data for L3 cache data evictions into a last-level cache |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5924121A (en) * | 1996-12-23 | 1999-07-13 | International Business Machines Corporation | Adaptive writeback of cache line data in a computer operated with burst mode transfer cycles |
US20100228922A1 (en) * | 2009-03-09 | 2010-09-09 | Deepak Limaye | Method and system to perform background evictions of cache memory lines |
US20140006716A1 (en) * | 2011-12-29 | 2014-01-02 | Simon C. Steeley, JR. | Data control using last accessor information |
JP6708019B2 (ja) * | 2016-06-29 | 2020-06-10 | 富士通株式会社 | 演算処理装置、情報処理装置および演算処理装置の制御方法 |
EP3486787B1 (en) * | 2017-11-20 | 2022-09-28 | Samsung Electronics Co., Ltd. | Systems and methods for tag-less buffer implementation |
GB2571539B (en) * | 2018-02-28 | 2020-08-19 | Imagination Tech Ltd | Memory interface |
US11113207B2 (en) * | 2018-12-26 | 2021-09-07 | Samsung Electronics Co., Ltd. | Bypass predictor for an exclusive last-level cache |
US11106600B2 (en) * | 2019-01-24 | 2021-08-31 | Advanced Micro Devices, Inc. | Cache replacement based on translation lookaside buffer evictions |
-
2020
- 2020-12-01 US US17/108,499 patent/US11467972B2/en active Active
-
2021
- 2021-09-01 CN CN202111021600.2A patent/CN113641598A/zh active Pending
- 2021-10-18 TW TW110138467A patent/TWI793812B/zh active
Also Published As
Publication number | Publication date |
---|---|
US20220171712A1 (en) | 2022-06-02 |
TW202223630A (zh) | 2022-06-16 |
US11467972B2 (en) | 2022-10-11 |
TWI793812B (zh) | 2023-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11372777B2 (en) | Memory interface between physical and virtual address spaces | |
US11734177B2 (en) | Memory interface having multiple snoop processors | |
EP2430551B1 (en) | Cache coherent support for flash in a memory hierarchy | |
CN110362506B (zh) | 高速缓存存储器及其中实现的方法 | |
US8725987B2 (en) | Cache memory system including selectively accessible pre-fetch memory for pre-fetch of variable size data | |
US11914514B2 (en) | Data coherency manager with mapping between physical and virtual address spaces | |
US8117389B2 (en) | Design structure for performing cacheline polling utilizing store with reserve and load when reservation lost instructions | |
US9009420B2 (en) | Structure for performing cacheline polling utilizing a store and reserve instruction | |
TWI793812B (zh) | 微處理器、快取記憶體存儲器系統及其中實現的方法 | |
US9983874B2 (en) | Structure for a circuit function that implements a load when reservation lost instruction to perform cacheline polling | |
US20230222065A1 (en) | Prefetch state cache (psc) | |
US11940921B2 (en) | Bounding box prefetcher | |
US11934310B2 (en) | Zero bits in L3 tags | |
US11314657B1 (en) | Tablewalk takeover | |
US11921640B2 (en) | Mitigating retention of previously-critical cache lines | |
Kumr et al. | An Overview of Hardware Based Cache Optimization Techniques | |
CN115576870A (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 |