CN101201735A - 用于以通过式存储模式操作分级缓存系统的方法和设备 - Google Patents
用于以通过式存储模式操作分级缓存系统的方法和设备 Download PDFInfo
- Publication number
- CN101201735A CN101201735A CNA2007101870933A CN200710187093A CN101201735A CN 101201735 A CN101201735 A CN 101201735A CN A2007101870933 A CNA2007101870933 A CN A2007101870933A CN 200710187093 A CN200710187093 A CN 200710187093A CN 101201735 A CN101201735 A CN 101201735A
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- speed cache
- speed
- memory address
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/0855—Overlapped cache accessing, e.g. pipeline
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
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)
- Advance Control (AREA)
Abstract
提供一种用于以通过式存储模式操作分级缓存系统的方法和设备,即一种用于最小化未调度的D高速缓存丢失流水线停顿的方法和设备。在一个实施方式中,L2高速缓存可以以通过式存储模式被操作,从而引起L1丢失的来自存储指令的数据被直接发送至L2高速缓存,而不需要引起流水线停顿。通过式存储模式可以被启用或禁用(例如在软件和/或硬件控制下)。更高级别的高速缓存(例如L3和L4)也可以以通过式存储模式被操作。
Description
技术领域
本发明一般地涉及处理在处理器中的可缓存数据。特别地,本申请涉及最小化由于缓存存储失败所引起的处理器中的流水线停顿(pipeline stall) 。
背景技术
现代计算机系统典型地包括若干个集成电路(IC),包括可被用于处理计算机系统中的信息的处理器。由处理器所处理的数据可以包括由该处理器执行的计算机指令以及由该处理器使用所述计算机指令操作的数据。计算机指令和数据被典型地存储在所述计算机系统中的主存储器中。
处理器典型地通过在一系列小的步骤中执行指令来处理指令。在一些情况中,为了增加处理器处理的指令的数量(并且因此增加处理器的速度),所述处理器可以被流水线化。流水线是指在处理器中提供单独的级,其中每级执行一个或多个执行指令所必需的小步骤。在一些情况中,流水线(除了其他电路)可以被置于处理器的一部分中(称为处理器内核)。一些处理器可以具有多个处理器内核,并且在一些情况中,每个处理器内核可以具有多条流水线。当处理器内核具有多条流水线的情况下,指令组(称为发布组)可以被发布至多条并行的流水线并由每条流水线并行执行。
作为在流水线中执行指令的一个实例,当第一指令被接收时,第一流水线级可以处理该指令的一小部分。当第一流水线级已经完成对该指令的一小部分的处理之后,第二流水线级可以开始处理所述第一指令的另一小部分,而第一流水线级接收并开始处理第二指令的一小部分。因此,所述处理器可以同时(并行地)处理两个或更多个指令。
为了提供对数据和指令的更快访问以及处理器的更好利用,处理器可以具有若干个高速缓存。高速缓存为一典型地小于主存储器的存储器,并且被典型地在与处理器相同的管芯(即,芯片)上制造。现代的处理器典型地具有若干级高速缓存。位于最接近处理器的内核的最快高速缓存被称为一级高速缓存(L1缓存)。除了L1高速缓存之外,处理器典型地具有二级、更大的高速缓存,称为二级高速缓存(L2缓存)。在一些情况中,所述处理器可以具有其他的、附加的高速缓存级别(例如L3高速缓存和L4高速缓存)。
在传统的处理器中,数据高速缓存(L1 D-高速缓存)以“存入式(Store In)”方式操作,一般意味着存储数据的副本被写入至D高速缓存中。遗憾地,在存入式高速缓存中,流水线停顿在存储丢失的情况下频繁发生(意味着存储指令针对的数据线的副本不在D高速缓存中)。当从高级别高速缓存中提取目标线的副本,作为得到的读-改-写操作的一部分存储至D高速缓存时,停顿发生。进一步地,D高速缓存线由于存储经常只写不读(至少在一段时间)的数据而被浪费地占用,从而导致更多的丢失。
因此,存在用于处理利用高速缓存存储器的处理器中的数据的改进方法和设备的需要。
发明内容
本发明一般地提供用于以通过式存储(store-through)模式操作分级高速缓存系统的改进的方法和设备。
一个实施方式提供一种用于以通过式存储模式操作分级高速缓存系统的方法,所述高速缓存系统至少包括能被流水线化执行单元访问的一级(L1)数据高速缓存和二级(L2)高速缓存。该方法一般地包括:通过所述流水线化执行单元接收存储指令以及待存储在目标存储器地址的存储数据,以及如果包含目标存储器地址的高速缓存行没有被包含在L1数据高速缓存中,则在不停顿流水线化执行单元的情况下发送将存储在L2高速缓存中的存储数据。
一个实施方式提供一种集成电路设备,一般地包括一级(L1)数据高速缓存、二级(L2)高速缓存以及具有流水线化执行单元的至少一个处理器内核,所述流水线化执行单元被配置成接收存储指令以及将在目标存储器地址中存储的存储数据。高速缓存控制电路被配置成如果包含目标存储器地址的高速缓存线没有被包含在L1数据高速缓存中,则在不停顿流水线化执行单元的情况下发送将在L2高速缓存中存储的存储数据。
一个实施方式提供一种系统,一般地包括具有一级(L1)数据高速缓存和二级(L2)高速缓存的处理器设备、至少三级高速缓存以及高速缓存控制电路。所述处理器设备具有至少一个处理器内核,所述处理器内核具有流水线化执行单元,该流水线化执行单元被配置成接收存储指令以及待存储在目标存储器地址的存储数据。高速缓存控制电路被配置成:如果包含目标存储器地址的高速缓存线没有被包含在L2数据高速缓存中,则以L3通过式存储模式发送将存储在L3高速缓存中的存储数据。
附图说明
因此以本发明的上述特征、优点和目标可以达到并详细理解的方式,上面简要概括的本发明的更具体的说明可以通过参考所附附图中显示的本发明的实施方式得到。
然而应该注意到,所附附图仅显示了本发明的典型实施方式,并且因此不应该被认为是本发明的范围的限定,对于本发明可以允许其他等同效果的实施方式。
图1是图示了根据本发明的一个实施方式的系统的框图;
图2是图示了根据本发明的一个实施方式的计算机处理器的框图;
图3是图示了根据本发明的一个实施方式的处理器的内核之一的框图;
图4示出根据本发明的一个实施方式的用于以通过式存储方式操作L1/L2高速缓存分级的示例性操作;
图5示出根据本发明的一个实施方式的示例性通过式存储L2高速缓存和对应的数据路径;
图6示出根据本发明的一个实施方式的示例性通过式存储L3高速缓存和对应的数据路径。
具体实施方式
本发明一般地提供了用于以通过式存储方式操作L2高速缓存(以及可能的更高级别高速缓存)的方法和设备。这里描述的技术可以导致更少的由于D高速缓存丢失所引起的流水线停顿量。另外,以通过式存储方式操作L2高速缓存,同样可以导致更少的L1 D高速缓存行被用于存储只写但不会被很快读取的数据而被浪费,最终可以导致L1加载丢失量的减少以及进一步减少流水线停顿。
在下文中,将参考本发明的实施方式。但是,应该理解到本发明并不限于特定描述的具体实施方式。可取代地,不管是否涉及不同的实施方式,可预期下面的特征和元素的任意组合用于实施并实践本发明的。进一步,在不同实施方式中,本发明提供了相对于现有技术的许多优点。然而,尽管本发明的实施方式可以获取相对于其他可能的解决方案和/或相对于现有技术的优点,但是对于给定实施方式特定优点有没有达到并不是对本发明的限制。因此,以下的本发明的方面、特征、实施方式和优点仅仅用于示例,并不应被认为是除了权利要求中明示出的之外的所附权利要求的元素或限定。同样,对“本发明”的参考应该不被解释成这里公开的任何所发明的主题的概括,也不能被认为是除了权利要求中明示出的之外的所附权利要求的元素或限定。
下面是参考所附附图描述的本发明的具体实施方式。这些实施方式是示例性的并足够详细以清楚地传达本发明。然而,所提供的细节的数量并不旨在限定实施方式的可预期的变形,相反,本发明旨在覆盖所有落入如所附权利要求所定义的本发明的实质和范围的改变、等同和替换。
本发明的实施方式可以参考系统(例如计算机系统)而被利用及描述。这里使用的系统可以包括任何利用处理器和高速缓存存储器的系统,包括个人计算机、因特网装置、数字媒体装置、便携数字助理(PDA)、便携音乐/视频播放器以及视频游戏控制台。尽管高速缓存存储器可以位于与利用该高速缓存存储器的处理器相同的管芯上,在一些情况中,该处理器和高速缓存存储器也可以位于不同的管芯(例如分离的模块内的分离芯片或单个模块内的分离芯片)。
下面参考具有多个处理器内核和多个L1高速缓存的处理器,其中每个处理器内核使用多条流水线以执行指令,本发明的实施方式可以被任何利用高速缓存的处理器利用,包括具有单个处理内核的处理器。一般地,本发明的实施方式可以被任何处理器使用并且不限于任何特定配置。更进一步地,参考具有将L1高速缓存划分为L1指令高速缓存(L1I高速缓存或I高速缓存)和L1数据高速缓存(L1 D高速缓存或D高速缓存)的处理器,本发明的实施方式可以在其中使用统一的L1高速缓存的配置中使用。
示例系统的概述
图1是图示根据本发明的一个实施方式的系统100的框图。该系统100可以包括用于存储指令和数据的系统存储器102、用于图形处理的图形处理单元104、用于与外部设备通信的I/O接口、用于长期存储指令和数据的存储设备108以及用于处理指令和数据的处理器110。
根据本发明的一个实施方式,处理器110可以具有L2高速缓存112以及多个L1高速缓存116,每个L1高速缓存116由多个处理器内核114中的一个使用。根据一个实施方式,每个处理器内核114可以被流水线化,其中每个指令在一系列小步骤中被执行,其中每个步骤由不同的流水线级执行。
图2是示出根据本发明的一个实施方式的处理器110的框图。为了简单起见,图2图示并参考处理器110的单个内核114来描述。在一个实施方式中,每个内核114可以相同(例如包含具有相同流水线级的相同流水线)。在另一实施方式中,每个内核114可以不同(例如包含具有不同级的不同流水线)。
在本发明的一个实施方式中,L2高速缓存可以包含由处理器110使用的一部分指令和数据。在一些情况中,处理器110可以请求没有被包含在L2高速缓存112中的指令和数据。当所请求的指令和数据没有被包含在L2高速缓存112中时,所请求的指令和数据可以被重新获取(从更高层高速缓存或者系统存储器102)并被置于L2高速缓存中。当处理器内核114从L2高速缓存112请求指令时,这些指令可以由预解码器和调度器220首先处理(下面将详细描述)。
在本发明的一个实施方式中,指令可以成组地从L2高速缓存112中取得,称为I行(I line)。类似地,数据可以成组从L2高速缓存112中取得,称为D行(D line)。图1中示出的L1高速缓存116可以被划分成两部分:用于存储I行的L1指令高速缓存222(I高速缓存222)以及用于存储D行的L1数据高速缓存224(D高速缓存224)。I行和D行可以使用L2访问电路210从L2高速缓存112中取得。
在本发明的一个实施方式中,从L2高速缓存112中重新获取的I行可以由预解码器和调度器220处理,并且I行可以被置于I高速缓存222中。为了进一步改善处理器性能,指令通常被预解码,例如I行从L2(或更高)高速缓存中重新获取。这样的预解码可以包含各种功能,诸如地址生成、支路预测以及调度(确定指令应该被发布的顺序),其作为控制指令执行的分派信息(一组标志)而被捕获。在一些情况中,所述预解码和调度器220可以在多个内核114和L1高速缓存中共享。类似地,从L2高速缓存112中提取的D行可以被置于D高速缓存224中。每个I行和D行中的一个比特位可以用于跟踪L2高速缓存112中的信息的行是I行还是D行。可选地,取代于以I行或D行方式从L2高速缓存112中提取数据,数据可以以其它方式(例如通过提取更小、更大或可变量的数据)从L2高速缓存112提取。
在一个实施方式中,I高速缓存222和D高速缓存224可以分别具有I高速缓存目录223和D高速缓存目录225,分别用于跟踪哪些I行和D行当前处于I高速缓存222和D高速缓存224中。当I行或D行被加入至I高速缓存222或D高速缓存224中时,对应的条目可以被置于I高速缓存目录223或D高速缓存目录225中。当从I高速缓存222或D高速缓存224中移除I行或D行时,I高速缓存目录223或D高速缓存目录225中的对应条目可以被移除。尽管下面参考利用D高速缓存目录225的D高速缓存224进行描述,但是本发明的实施方式也可以被用在没有使用D高速缓存目录225的情况中。在这些情况中,存储在D高速缓存224中的数据自身可以指示什么D行当前在D高速缓存224中。
在一个实施方式中,取指电路236可以被用于为内核114提取指令。例如,取指电路236可以包括程序计数器,其追踪在内核中被执行的当前指令。内核中的分支单元可以被用于当遇到分支指令时改变程序计数器。I行缓冲器232可以被用于存储从L1 I高速缓存222中提取的指令。发布和分派电路234可以被用于将从I行缓冲器232中取得的指令分组成指令组,这些指令组然后将如下所述被并行发布至内核114。在一些情况中,发布和分派电路可以使用预编码器和调度器220提供的信息以形成合适的指令组。
除了从发布和分派电路234接收指令之外,内核114还可以从各种位置接收数据。当内核114需要来自数据寄存器的数据时,寄存器文件240可以被用于获取数据。当内核114需要来自存储器位置的数据时,高速缓存加载和存储电路250可以被用于加载来自D高速缓存224中的数据。当执行这样的加载时,针对所需要的数据的请求可以被发布至D高速缓存224。与此同时,D高速缓存目录225可以被检查以确定所需要的数据是否位于D高速缓存224中。当D高速缓存224包含所需要的数据时,D高速缓存目录225可以指示D高速缓存224包含所需要的数据,并且D高速缓存访问可以在之后的某时刻完成。当D高速缓存224不包含所需要的数据时,D高速缓存目录225可以指示D高速缓存224不包含所需要的数据。因为D高速缓存目录225可以比D高速缓存224更快地访问,所以对于所需要的数据的请求可以在D高速缓存目录225被访问之后但在D高速缓存访问完成之前被发布至L2高速缓存112(例如使用L2访问电路210)。
在一些情况中,数据可以在内核114中修改。修改的数据可以被写入到寄存器文件中或者存储在存储器中。写回电路238可以用于将数据写回至寄存器文件240。在一些情况中,写回电路238可以使用高速缓存加载和存储电路250以将数据写回至D高速缓存224中。可选地,内核114可以直接访问所述高速缓存加载和存储电路250以执行存储。在一些情况中,如下面描述的,写回电路238也可以被用于将指令写回至I高速缓存222。
如上所述,所述发布和分派电路234可以被用于形成指令组,并将所形成的指令组发布至内核114。所述发布和分派电路234也可以包括用于循环以及合并I行中的指令并由此形成合适的指令组的电路。发布组的形成可以考虑若干考虑因素,诸如发布组中指令之间的依赖性以及可以从将在下面详细描述的指令的排序中达到的优化。一旦形成发布组,该发布组可以被并行分派至处理器内核114。在一些情况中,指令组可以包含用于内核114中的每条流水线的一个指令。可选地,指令组可以是小数量的指令。
根据本发明的一个实施方式,一个或多个处理器内核114可以使用级联、延迟的执行流水线结构。在图3中图示的实例中,内核114包括级联结构的四条流水线。可选地,这样的结构中可以使用更小数量(两条或更多条流水线)或者更大数量(多于四条流水线)。更进一步,图3中图示的流水线的物理布局为示例性的,并不必然地暗示级联、延迟的执行流水线单元的实际物理布局。
在一个实施方式中,在级联、延迟的流水线结构中的每条流水线(P0、P1、P2、P3)可以包括执行单元310。该执行单元310可以包括若干个流水线级,这些流水线级执行针对给定流水线的一个或多个功能。例如,执行单元310可以执行指令的提取和解码的所有或一部分。由执行单元执行的解码可以与预解码器和调度器220共享,所述预解码器和调度器220在多个内核114之间共享或可选地由单个内核114使用。执行单元也可以从寄存器文件中读取数据,计算地址,执行整数算术功能(例如使用算术逻辑单元或ALU),执行浮点算术功能,执行指令分支,执行数据访问功能(例如从存储器中加载和存储),以及将数据存回寄存器(例如至寄存器文件240中)。在一些情况中,内核114可以利用提取电路236、寄存器文件240、缓存加载和存储电路250和写回电路以及任何其他电路以执行这些功能。
在一个实施方式中,每个执行单元310可以执行相同的功能。可选地,每个执行单元310(或不同组执行单元)可以执行不同组的功能。同样,在一些情况中,每个内核114中的执行单元310可以与在其他内核中提供的执行单元310相同或不同。例如,在一个内核中,执行单元3100和3102可以执行加载/存储和算术功能,而执行单元3101和3102可以仅执行算术功能。
在一个实施方式中,如图所示,执行单元310中的执行可以以相对于其他执行单元310来说延迟的方式完成。图示的布置也可以被称为级联、延迟的结构,但是图示的布局并不必然地表明执行单元的实际物理布局。在这样的结构中,指令组中的指令(方便起见称为I0、I1、I2、I3)被并行发布至流水线P0、P1、P2、P3,每个指令可以以相对于每个其他指令延迟的方式被执行。例如,指令I0可以首先在用于流水线P0的执行单元3100中被执行,指令I1可以在用于流水线P1的执行单元3101中被第二个执行,以此类推。
在一个实施方式中,当将发布组发布到处理器内核114时,I0可以在执行单元3100中被立即执行。稍后,在指令I0在执行单元3100中已经被执行完成之后,执行单元3101可以开始执行指令I1,以此类推,从而并行发布至内核114的指令以相对于彼此之间延迟的方式被执行。
在一个实施方式中,某个执行单元310可以相对于彼此之间被延迟,而其他执行单元310相对于彼此之间没有被延迟。当第二指令的执行取决于第一指令的执行时,转发路径312可以被用于将结果从第一指令转发至第二指令。图示的转发路径312仅仅是示例性的,内核114可以包含从执行单元310中的不同点至其他执行单元310或相同执行单元310的更多的转发路径。
在一个实施方式中,没有被执行单元310执行的指令(例如被延迟的指令)可以在延迟队列320或目标延迟队列330中保持。延迟队列320可以被用于保持指令组中还没有被执行单元310执行的指令。例如,当指令I0在执行单元3100中被执行,指令I1、I2和I3可以被保持在延迟队列330中。一旦指令已经移动穿过延迟队列330,则指令可以被发布到合适的执行单元310并被执行。目标延迟队列330可以被用于保持已经由执行单元310执行的指令的结果。在一些情况中,在目标延迟队列330中的结果可以被转发至执行单元310,用于处理或在适当时使之无效。类似地,如下所述,在一些情况中,延迟队列320中的指令可以被无效。
在一个实施方式中,在指令组中的每个指令已经经过延迟队列320、执行单元310和目标延迟队列330之后,结果(例如数据和如下所述的指令)可以被写回至寄存器文件或L1 I高速缓存222和/或D高速缓存224。在一些情况中,写回电路238可以用于写回寄存器最近修改的值(从目标延迟队列330中的一个接收到的)并丢弃无效的结果。
通过式存储L2缓存模式
对于一些实施方式,L2高速缓存可以以通过式存储的方式来操作,一般意味着存储数据可以被发送至L2高速缓存而不考虑存储操作在D高速缓存中是命中还是丢失。如前所述,通过忽略D高速缓存存储丢失,特别是对于那些仅被写入的数据,流水线停顿可以被避免。另外,通过释放常规用于存储只写数据的D高速缓存行的数量,加载丢失的数量可以被显著降低,例如,导致可能等于或超过更大尺寸的常规操作的(存入)D高速缓存的加载丢失率的加载丢失率。结果,整体处理器性能可以以最小的成本而被显著改善。
对于一些实施方式,“通过式存储模式”可以在软件和/或硬件控制下被启用/禁用。例如,软件可控制位可以在被设置时提供(例如通过操作系统码)以启用这里所描述的通过式存储操作。另外,或者作为替换,通过式存储模式可以在硬件控制下被启用/禁用,例如,利用监视流水线性能的某种类型的装置逻辑。这些逻辑可以监视并记录加载丢失以及例如如果超过了阈值丢失率,则启用对于L2高速缓存和/或更高级别的高速缓存的通过式存储模式。
图4示出根据本发明的一个实施方式的用于实施通过式存储L2高速缓存模式的示例性操作400。该操作400可以由例如图3中所示的加载/存储电路250或任何其他适用的逻辑执行。尽管通过式存储L2高速缓存模式运行可以被执行以有利于如图3所示的使用级联、延迟的执行流水线单元114的处理器内核,但本领域技术人员会意识到可以通过在其他类型的处理器内核中实施通过式存储模式而得到类似的益处。
操作400通过接收存储指令而在步骤402开始。在步骤404,确定通过式存储模式是否被启用(例如通过校验控制位)。如果通过式存储模式没有被启用,则在步骤405存储数据可以被发送至L1,例如以常规方式处理,这将导致在存储丢失情况下流水线停顿。
然而,如果通过式存储模式被启用,则在步骤410存储数据可以被发送穿过至L2高速缓存,而不考虑存储在D高速缓存中是命中还是丢失。换句话说,任何丢失可以被忽略并且流水线可以继续操作而不停顿。
如图所示,对于一些实施方式,如步骤406所确定的,如果数据在D高速缓存中命中(在D高速缓存中已经包含有目标地址的高速缓存行),则在步骤408,存储数据也可以被写入至D高速缓存。以这样的方式更新L1可能是有益的,例如避免如果数据被相对快的读取时的加载丢失。进一步,对于一些实施方式,合并了存入式存储和通过式存储技术的“混合式”方法可以被结合。例如,如果在D高速缓存中找到数据,则其将被存储在D高速缓存中并仅经由常规舍去老化(cast-out aging)机制而发送至L2,该机制可以将总线上的带宽保存至L2。但是,如果没有在D高速缓存中找到数据,则数据可以被通过式存储至L2以避免停顿。
图5显示了根据本发明的一个实施方式的通过式存储L2高速缓存模式和相应的数据路径的示例图。如图所示,在存储丢失的情况下,存储数据(例如来自加载/存储电路250)可以被“通过式存储”至L2高速缓存112,绕过L1 D高速缓存224。如上所述,如果目标高速缓存行已经被包含在其中(即,存储命中),则数据可以仍然在D高速缓存224中被更新。
对于一些实施方式,单独的存储总线可以被提供以通过式存储至L2。单独的存储总线可以与提取总线一样宽,或者对于一些实施方式,比提取总线的宽度小(例如,一半宽度)。对于其他实施方式,如果具有足够的带宽,则提取总线(或者其一部分)可以被共享和用于通过式存储至L2。
在一些应用中,数量少于整个高速缓存行的数据可以被写出。例如,在具有主要是整数指令的应用中,存在若干(部分)至相同的高速缓存行的存储。这类部分存储可能的问题在于,因为单个字节不能够在没有使误差校正码(ECC)无效的情况下被单独地写入,所以它们可能对于每个部分存储造成一系列的读-改-写操作。这些多个读-改-写将导致相当大的信息量和等待时间。
为了降低存储总线(无论其是单独的还是共享的)上的这种信息量,集合缓冲器512可以被提供以合并待写到一起的多个部分存储(不是针对全高速缓存行或子行)。集合缓冲器512可以是任意合适的深度以处理多个缓冲行。在具有至相同缓冲行的多个存储的情况下,集合缓冲器512中的高速缓冲行的副本可以被修改,而不需要生成对L2的写入。一旦这些写入已经被合并,它们可以作为单个高速缓冲行被写出。
根据实施方式,当写入的阈值量已经被累积时或者基于时间(老化),数据可以被写出。对于一些实施方式,集合缓冲器512可以简单的先入先出(FIFO)方式操作。当数据将被存储至新的高速缓冲行时,该高速缓冲行可以从L2中提取并被带入到缓冲器512中,引起最老的(先入)最后被写出至L2。这些行可以简单地按顺序平移(例如假定是3-深度的FIFO,则第二行变成第三行,第一行变成第二行,新行变成第一行)。各种其他技术也可以被使用,例如,写出缓存器512中最近最少使用的(LRU)高速缓存行。
对于一些实施方式,通过式存储技术可以在更高级别的高速缓存上被应用以达到类似的优点。例如,图6显示了根据本发明的一个实施方式至L3高速缓存602的通过式存储和对应的数据路径。如上参考L1高速缓存所述,至L3高速缓存的通过式存储可以使L2中的存储丢失更少以及使L2中的更多行可用于加载,从而导致更少的加载丢失。
数据可以被存储至L3高速缓存603,而不考虑在L2中是否命中。可选地,在命中的情况中,则数据可以在L2高速缓存112中被更新。进一步,对于一些实施方式,可以应用混合式方法,其中当成功时数据在L2高速缓存112中被更新(写入式存储),而当丢失时数据被通过式存储至L3高速缓存602。对于一些实施方式,可以提供单独存储总路线以通过式存储至L3。然而,在L3高速缓存为片外(例如外部DRAM)的情况下,则存储总线可以被共享。
如图所示,集合缓冲器610也可以被提供以在将整个块一次性写出至L3高速缓存602之前将多个写入累积至具有预定块大小(例如对应于页面大小)的公共数据块。集合缓冲器610可以以上面描述的任何方式被操作,例如作为FIFO或者任何其它类型的技术以控制可能已经被多次修改的数据块的写出。
尽管上述针对于本发明的实施方式,但是本发明的其他以及进一步的实施方式可以在不偏离本发明的基本范围的情况下想出,而本发明的范围是由所附权利要求书所确定。
Claims (20)
1.一种用于以通过式存储模式操作分级高速缓存系统的方法,所述高速缓存系统至少包括能被流水线化执行单元访问的一级(L1)数据高速缓存和二级(L2)高速缓存,该方法包括:
通过所述流水线化执行单元接收存储指令以及将存储在目标存储器地址的存储数据;以及
如果包含目标存储器地址的高速缓存行没有被包含在L1数据高速缓存中,则在不停顿所述流水线执行单元的情况下发送将存储在L2高速缓存中的存储数据。
2.根据权利要求1所述的方法,另外包括:
如果包含所述目标存储器地址的高速缓存行被包含在L1数据高速缓存中,则将所述存储数据写入至L1数据高速缓存。
3.根据权利要求1所述的方法,其中:
所述通过式存储模式可被启用和禁用;以及
当所述通过式存储模式被禁用时,如果包含所述目标存储器地址的高速缓存行没有被包含在L1数据高速缓存中,则当提取包含所述目标存储器地址的高速缓存行时,使所述流水线化执行单元停顿。
4.根据权利要求3所述的方法,另外包括在软件控制下启用所述通过式存储模式。
5.根据权利要求3所述的方法,另外包括基于与流水线化执行单元的性能有关的一个或多个参数、在硬件控制下启用所述通过式存储模式。
6.根据权利要求1所述的方法,其中发送将存储在L2高速缓存中的存储数据包括:
在将存储数据存储在L2高速缓存中之前,在缓冲器中更新包含所述目标存储器地址的高速缓存行;以及
其中在将所述高速缓冲行从所述缓冲器发送至L2高速缓存之前,所述高速缓存行在缓冲器中被多次更新。
7.根据权利要求1所述的方法,其中发送将存储在L2缓存中的存储数据包括:使用用于从L2高速缓存提取得数据的总线的至少某些部分。
8.一种集成电路设备,包括:
一级(L1)数据高速缓存;
二级(L2)高速缓存;
具有流水线化执行单元的至少一个处理器内核,所述流水线化执行单元被配置成接收存储指令以及将存储在目标存储器地址的存储数据;以及
高速缓存控制电路,被配置成如果包含所述目标存储器地址的高速缓存行没有被包含在L1数据高速缓存中,则在不停顿流水线化执行单元的情况下发送将在L2高速缓存中存储的存储数据。
9.根据权利要求8所述的设备,其中所述高速缓存控制电路被配置成:
如果包含所述目标存储器地址的缓存行被包含在L1数据高速缓存中,则将存储数据写入至L1数据高速缓存。
10.根据权利要求8所述的设备,其中:
所述通过式存储模式可被启用和禁用;以及
当所述通过式存储模式被禁用时,如果包含所述目标存储器地址的高速缓存行没有被包含在L1数据高速缓存中,则当提取包含所述目标存储器地址的高速缓存行时,停顿所述流水线化执行单元。
11.根据权利要求8所述的设备,还包括寄存器,该寄存器具有用于允许在软件控制下启用所述通过式存储模式的位。
12.根据权利要求8所述的设备,还包括逻辑电路,其被配置成基于与流水线化执行单元的性能有关的一个或多个监视的参数而自动地启用所述通过式存储模式。
13.根据权利要求8所述的设备,另外包括:
缓冲器,用于存储一个或更多个高速缓存行;以及
其中所述高速缓存控制电路被配置成,在将所述存储数据存储在L2高速缓存中之前,在所述缓冲器中更新包含所述目标存储器地址的高速缓存行。
14.根据权利要求8所述的设备,其中发送将在L2缓存中存储的存储数据包括:利用用于从L2高速缓存中提取数据的总线的至少某些部分。
15.根据权利要求8所述的设备,其中所述处理器内核包括:
一个或更多个级联延迟的执行流水线单元,每个执行流水线单元至少具有第一和第二执行流水线,其中在发布至执行流水线单元的公共发布组中的指令由第一执行流水线中在第二执行流水线之前执行;以及转发路径,用于将在第一执行流水线中执行第一指令所生成的结果转发至第二执行流水线,以用于执行第二指令。
16.一种系统,包括:
处理器设备,具有一级(L1)数据高速缓存和二级(L2)高速缓存以及具有流水线化执行单元的至少一个处理器内核,所述流水线化执行单元被配置成接收存储指令以及将存储在目标存储器地址的存储数据;
至少三级(L3)高速缓存;以及
高速缓存控制电路,被配置成如果包含所述目标存储器地址的高速缓存行没有被包含在L2数据高速缓存中,则以L3通过式存储模式发送待存储在L3高速缓存中的存储数据。
17.根据权利要求16所述的系统,其中所述L3高速缓存位于处理器设备的外部。
18.根据权利要求16所述的系统,其中所述L3通过式存储模式可在硬件控制和软件控制中的至少一个的控制下被启用和禁用。
19.根据权利要求16所述的系统,其中所述高速缓存控制电路被配置成:
如果包含所述目标存储器地址的缓存行被包含在L2数据高速缓存中,则将存储数据写入至L2高速缓存。
20.根据权利要求16所述的系统,另外包括:
缓冲器,用于存储将写出至L3高速缓冲的一个或多个数据块;以及
其中所述高速缓存控制电路被配置成在将存储数据存储在L3高速缓存之前,在所述缓冲器中更新包含所述目标存储器地址的数据块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/609,132 | 2006-12-11 | ||
US11/609,132 US20080140934A1 (en) | 2006-12-11 | 2006-12-11 | Store-Through L2 Cache Mode |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101201735A true CN101201735A (zh) | 2008-06-18 |
Family
ID=39499673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007101870933A Pending CN101201735A (zh) | 2006-12-11 | 2007-11-23 | 用于以通过式存储模式操作分级缓存系统的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20080140934A1 (zh) |
CN (1) | CN101201735A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109074701A (zh) * | 2016-03-18 | 2018-12-21 | 捷德货币技术有限责任公司 | 用于评估有价文件的传感器数据的装置和方法 |
CN111104066A (zh) * | 2019-12-17 | 2020-05-05 | 华中科技大学 | 数据写入方法、装置及存储服务器和计算机可读存储介质 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7904887B2 (en) * | 2006-02-16 | 2011-03-08 | International Business Machines Corporation | Learning and cache management in software defined contexts |
US9275003B1 (en) * | 2007-10-02 | 2016-03-01 | Sandia Corporation | NIC atomic operation unit with caching and bandwidth mitigation |
JP5583893B2 (ja) * | 2008-05-28 | 2014-09-03 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US10198358B2 (en) * | 2014-04-02 | 2019-02-05 | Advanced Micro Devices, Inc. | System and method of testing processor units using cache resident testing |
US9965391B2 (en) | 2014-06-30 | 2018-05-08 | Hewlett Packard Enterprise Development Lp | Access cache line from lower level cache |
US10127153B1 (en) | 2015-09-28 | 2018-11-13 | Apple Inc. | Cache dependency handling |
KR20170056782A (ko) * | 2015-11-13 | 2017-05-24 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US10564890B2 (en) * | 2017-07-07 | 2020-02-18 | Seagate Technology Llc | Runt handling data storage system |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5878245A (en) * | 1993-10-29 | 1999-03-02 | Advanced Micro Devices, Inc. | High performance load/store functional unit and data cache |
US7467377B2 (en) * | 2002-10-22 | 2008-12-16 | Intel Corporation | Methods and apparatus for compiler managed first cache bypassing |
US7355601B2 (en) * | 2003-06-30 | 2008-04-08 | International Business Machines Corporation | System and method for transfer of data between processors using a locked set, head and tail pointers |
US7454598B2 (en) * | 2005-05-16 | 2008-11-18 | Infineon Technologies Ag | Controlling out of order execution pipelines issue tagging |
-
2006
- 2006-12-11 US US11/609,132 patent/US20080140934A1/en not_active Abandoned
-
2007
- 2007-11-23 CN CNA2007101870933A patent/CN101201735A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109074701A (zh) * | 2016-03-18 | 2018-12-21 | 捷德货币技术有限责任公司 | 用于评估有价文件的传感器数据的装置和方法 |
CN111104066A (zh) * | 2019-12-17 | 2020-05-05 | 华中科技大学 | 数据写入方法、装置及存储服务器和计算机可读存储介质 |
CN111104066B (zh) * | 2019-12-17 | 2021-07-27 | 华中科技大学 | 数据写入方法、装置及存储服务器和计算机可读存储介质 |
US11947829B2 (en) | 2019-12-17 | 2024-04-02 | Tencent Technology (Shenzhen) Company Limited | Data writing method, device, storage server, and computer readable storage medium |
Also Published As
Publication number | Publication date |
---|---|
US20080140934A1 (en) | 2008-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101201735A (zh) | 用于以通过式存储模式操作分级缓存系统的方法和设备 | |
EP2476060B1 (en) | Store aware prefetching for a datastream | |
US7877559B2 (en) | Mechanism to accelerate removal of store operations from a queue | |
CN102103483B (zh) | 汇聚和散布多个数据元素 | |
KR101483849B1 (ko) | 계층적으로 캐싱되는 프로세서들에서의 조정된 프리페칭 | |
KR101361928B1 (ko) | 스레드 이송 시의 캐시 프리필링 | |
JP5089186B2 (ja) | データ・キャッシュ・ミス予測およびスケジューリング | |
WO2020243095A1 (en) | A victim cache that supports draining write-miss entries | |
US8458408B2 (en) | Cache directed sequential prefetch | |
CN101449238A (zh) | 本地和全局分支预测信息存储 | |
CN110069285A (zh) | 一种检测分支预测的方法及处理器 | |
CN101013401A (zh) | 用于预取数据线的方法和处理器 | |
WO2007096572A1 (en) | Cache management within a data processing apparatus | |
JPH04232549A (ja) | キャッシュメモリシステム | |
JP2009540411A (ja) | 高速で安価なストア−ロード競合スケジューリング及び転送機構 | |
US20140317357A1 (en) | Promoting transactions hitting critical beat of cache line load requests | |
CN112543916A (zh) | 多表分支目标缓冲器 | |
CN101013360A (zh) | 用于预取指令线的方法和处理器 | |
US20060143401A1 (en) | Method and apparatus for prefetching based on cache fill buffer hits | |
CN102163144A (zh) | 嵌入式处理器的硬件数据预取方法 | |
CN101681289A (zh) | 处理器性能监测 | |
CN112612728B (zh) | 缓存管理方法及装置、设备 | |
JP5128382B2 (ja) | 複数のロード命令を実行するための方法および装置 | |
CN110737475B (zh) | 一种指令缓存装填过滤装置 | |
CN105786758B (zh) | 一种具有数据缓存功能的处理器装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20080618 |