CN101589373A - 硬件触发的数据高速缓存行预分配 - Google Patents
硬件触发的数据高速缓存行预分配 Download PDFInfo
- Publication number
- CN101589373A CN101589373A CNA2008800029445A CN200880002944A CN101589373A CN 101589373 A CN101589373 A CN 101589373A CN A2008800029445 A CNA2008800029445 A CN A2008800029445A CN 200880002944 A CN200880002944 A CN 200880002944A CN 101589373 A CN101589373 A CN 101589373A
- Authority
- CN
- China
- Prior art keywords
- cache
- cache line
- allocation request
- processor
- predistribution
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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
-
- 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
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- 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/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
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)
- Circuits Of Receivers In General (AREA)
- Information Transfer Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
计算机系统包括由回写式缓冲器支持的数据高速缓存和预分配请求栈。可编程触发机制检查所述处理器对所述数据高速缓存执行的每一个存储操作,以查看是否应当预分配下一高速缓存行。如果所述存储操作的存储地址发生在由起始和终止可编程寄存器定义的范围内,则请求下一高速缓存行用于预分配,该高速缓存行包括由可编程步幅寄存器定义的范围中的存储地址。由所述预分配请求栈来组织和调度大量的预分配请求,并且所述预分配请求将依次允许通过所述回写式缓冲器来处理正在被替代的高速缓存行。到所述处理器在所述下一高速缓存行中开始进行所述存储操作为止,已经预分配了这个高速缓存行并且将存在高速缓存命中,从而避免了停滞周期。
Description
技术领域
本发明涉及计算机系统,并且更具体地,涉及高速缓存存储器,在该高速缓存存储器中,存储操作生成针对高速缓存行预分配的硬件请求。
背景技术
计算机程序和数据存储在存储器中。不幸地是,最大最廉价的存储器具有最慢的存取时间。可以在不导致处理器等待的情况下进行存取的极高速的存储器是昂贵的、易失的、小的并且需要非常接近处理器。所以传统上,数据和程序在存取速度分级结构中的存储器类型之间移动,以适应时而冲突的多种需要。一旦从盘上或者在线进行了下载,就在计算机的主存储器中保持工作程序和数据,该主存储器典型地包括随机存取存储器(RAM)半导体集成电路。
高性能系统(特别是现代微处理器)尝试将部分主存储器变为高速“高速缓存”存储器。如果处理器执行它下一个指令所需的程序和数据可以在高速缓存存储器中找到,则执行速度将增加,这是由于不必经受对主存储器的存取延迟。在常规系统中,应当把主存储器中的什么数据和程序复制到高速缓存存储器以及何时将高速缓存存储器中的更新写回主存储器不是那么容易就能正确地管理的。所以当存在高速缓存“未命中”时性能就受影响。计算机架构以及运行时采用的程序分支很大程度上控制着通过高速缓存存储器实施能够受益多少。
所以需要能够更有效地处理运行时行为的高速缓存系统和方法。
发明内容
在示例实施例中,计算机系统包括由回写式(copy-back)缓冲器和预分配请求栈支持的数据高速缓存。可编程触发机制检查所述处理器对所述数据高速缓存进行的每一个存储操作,以查看是否应当预分配下一高速缓存行。如果所述存储操作的存储地址发生在由起始(START)和终止(END)可编程寄存器定义的范围内,则请求下一高速缓存行用于预分配,该高速缓存行包括由可编程步幅(STRIDE)寄存器定义的范围内的存储地址。由所述预分配请求栈来组织和调度大量的预分配请求,并且所述预分配请求将依次允许通过所述回写式缓冲器来处理正在被替代的高速缓存行。到所述处理器在所述下一高速缓存行中开始进行所述存储操作为止,已经预分配了这个高速缓存行并且将存在高速缓存命中,从而避免了停滞周期。
本发明的优点是可以实现显著的处理器性能增强。
本发明的另一个优点是,提供了一种高速缓存方案,具有对于处理器来说的最小运行时开销。
本发明的又一个优点是,提供了一种高速缓存系统,其中高速缓存参数是可编程的。
上述发明内容并非意在表示本发明的每一个公开的实施例或者每一个方面。下面的附图和详细描述中提供了其它方面和示例实施例。
附图说明
考虑到以下结合附图的本发明的不同实施例的详细描述,可以更全面地理解本发明,附图中:
图1示出了本发明的实施例中的高速缓存存储器系统的功能框图;
图2示出了一时序图,比较了当没有预分配恰当的高速缓存行时针对高速缓存未命中的存储操作以及如本发明中所示当预分配了恰当的高速缓存行时的存储操作;
图3示出了处理器和主存储器的功能框图,该框图包括本发明的实施例中使用的回写式缓冲器和针对预分配请求的FIFO;以及
图4示出了本发明的一方法实施例,该方法用于在处理器对数据高速缓存进行存储操作期间针对下一高速缓存行发出预分配请求。
具体实施方式
尽管本发明适于各种修改和备选形式,但在附图中已作为示例示出了本发明的细节并将详细描述这些细节。然而,应当理解的是,其意图不在于将本发明限于所描述的具体实施例。相反,其意图在于覆盖落入由所附权利要求所限定的本发明精神和范围内的所有修改、等同替代方式和备选方式。
图1示出了本发明的实施例中的用于4千兆字节(2^32)存储空间102的高速缓存存储器系统100。处理器使用32比特存储地址总线104对这样的地址空间进行程序和数据存取,所述地址总线可以对存储器的每一个字节单独地进行寻址。为了高速缓存的目的,将存储地址总线104本身划分为标签(tag)106(比特31:16)、设置地址108(比特15:5)以及字节索引110(比特4:0)。高速缓存数据存储器112具有由每行32字节的2^11行“高速缓存行”组织而成的64K字节的存储容量。
高速缓存存储器112的每一行具有来自存储空间102的32字节的连续存储器的高速缓存行114,并且该高速缓存行114由设置地址108(比特15:5)所选择。使用字节选择器116,字节索引110(比特4:0)可选择高速缓存行114中的每一个独立字节。在存储器分级结构中的高速缓存存储器112和其它存储器结构之间传输32字节宽的高速缓存行114。
使用高速缓存标签-有效-脏标志(tag-valid-dirty)存储器120来存储与当前驻留在高速缓存数据存储器112中的数据的2^11个高速缓存行114相关的信息。由于仅可以将主存储器102中的32字节块形式的64K字节的数据复制到高速缓存数据存储器112中,因此驻留的数据由它们的标签地址106所标识。如果标签比较器122发现在标签-有效-脏标志存储器120中的标签124与处理器发出的当前标签106匹配,则报告“命中”并且可以从高速缓存数据存储器112供应处理器数据存取。有效比特126指示,在相关联的高速缓存行114被另一行所替代的情况下,是需要将相关联的高速缓存行114写回还是清除,并且有效比特126被用于验证标签比较器122。在高速缓存行替换期间而不是高速缓存数据取回期间使用脏比特128。32比特的字节有效块130用它的每一个比特指示相应32字节高速缓存行114中的相应独立字节的有效性和存在性。
如果处理器加载操作在高速缓存中“命中”,则高速缓存数据存储器112立刻向处理器提供所请求的数据字节。但是如果如标签比较器122所通告的处理器加载操作“未命中”,则直接取回包括所请求的数据字节在内的主存储器中的相应32字节的行,但是这样做没有高速缓存命中时那么快。当主存储器102响应时这样的存取对处理器施加了停滞周期。所取回的32字节宽的数据行可以用于替代例如最近没有使用或者不经常使用的高速缓存行114。如果如更新比特128所示,被替代的高速缓存行是脏的,则将块130中指示为有效的字节清除到主存储器102中。
无论何时当处理器存储操作在高速缓存中“命中”时,就将相应数据字节重写至高速缓存数据存储器112中,并且设置与字节有效比特相关联的字节有效块130中的相应字节有效比特。这32个比特指示需要使用高速缓存数据存储器112中的相应字节来更新主存储器102中的过期数据。但是如果处理器存储操作在高速缓存中“未命中”,需要向高速缓存分配相关联的32字节宽的一行数据。对高速缓存行114打上标签并且将块130中的全部字节有效比特设置为“0”,意味着无效。由于稍后将使用高速缓存存储器来覆盖相应的字节,因此不从主存储器102中取回任意数据。不论何时当被替换行114是脏的,则其有效字节将是被清除到主存储器102中的有效字节。这样的策略被称作“写入-分配”未命中策略。
高速缓存“未命中”产生了处理器停滞周期,并且可以实质上降低处理器性能。所以在本发明的实施例中最小化高速缓存未命中的数量以及相关联的停滞周期。预取(pre-fetching)可以通过预测在不久之后将使用主存储器102中的哪些数据字节和行来减少加载未命中的数量。在处理器实际需要数据之前,从主存储器向高速缓存数据存储器112中取入预测的行。一旦处理器执行该加载操作,就将在高速缓存中找到所述数据字节,消除了否则将由“未命中”所引起的停滞周期。
用写入-分配未命中策略来最小化存储“未命中”和相关联的停滞周期。如写入-获取未命中策略中那样,“分配”而不是从主存储器中获取高速缓存行114。实际上没有从主存储器传输任何数据,所以分配策略机制是快速的并且不会由于等待主存储器存取而被减慢。尽管如此,当分配的高速缓存行替代“脏”高速缓存行时,当将脏行114中的有效字节清除到主存储器102中时可能出现停滞周期。
当存储操作清除被替代的高速缓存行114并且分配新的高速缓存行114时,处理器执行将通常会停滞。所以包括高速缓存和主存储器之间的单一回写式或者清除缓冲器,以在后台进行回写操作。但是如果在短时间段内发生一系列清除,则回写式缓冲器可能变成瓶颈,这是由于较慢的主存储器跟不上高速缓存行的清除速率。如果发生这种情况,则较晚的清除可能引起停滞周期,等待回写式缓冲器完成较早的任务。
不可能避免清除,所以本发明的备选实施例尽早进行它们的清除以避免引起处理器停滞周期。预取有助于加载操作并且预分配可以有助于存储操作。在处理器存储操作存取高速缓存之前,预分配分配了高速缓存行,并且当需要时清除被替换的行。作为结果,到处理器执行存储操作为止,已经在高速缓存中分配了高速缓存行。如果在存储操作之前足够早地完成了这样的预分配,则与清除相关联的主存储器存取周期对于处理器来说是完全隐藏的。
如果回写式缓冲器不可用,则被替换行的每一个清除可能引起停滞周期。可以使用预分配来减少拥挤现象。它可以在时间上将可能的成本较高的事件与存储操作需要高速缓存行的时刻区分开。仅当对所要求的高速缓存行预分配地不够快的时候,相应的存储操作才会引起处理器停滞。
图2比较了常规无预分配序列202和本发明的预分配序列204的处理器时序。处理器存储操作206导致了高速缓存未命中。步骤208要求在回写式缓冲器中放入正在被替换的高速缓存行。然后,步骤210可以分配用于存储操作的高速缓存行。但是,将遇到处理器停滞周期212。然后步骤214完成该存储操作。
本发明的预分配序列204位于相同时标上,并且在相同点尝试处理器存储操作。但是,本发明的实施例在存储操作请求之前在后台运行,以查看高速缓存命中将会发生从而避免了处理器停滞周期。由硬件或者软件生成的预分配请求216引起步骤218,以将被替换的高速缓存行放入回写式缓冲器。步骤220预分配新的高速缓存行。当处理器开始进行存储操作222时,获得高速缓存命中并且不招致停滞周期224。从而避免了从步骤224至相应的步骤214的时间段。
在存储之前足够早的预分配可以显著地减少潜在停滞周期的数量。如果需要在短时间段内完成一系列清除,可以有充足的时间仅使用单个回写式缓冲器来分散清除并且准备好下一个存储操作。如图3所示,可以使用专用的先入先出(FIFO)结构来保存用于未完成的预分配请求的一系列地址。
通过将REGION_STRIDE设置为数据高速缓存行的大小(=32),可以使用基于区域的预分配来实施下一顺序高速缓存行预分配。FIFO或者某个其它存储器结构保持一系列地址,在所述一系列地址上进行预分配。使用硬件触发机制来触发预分配请求。
图3示出了本发明的计算机系统实施例,并且在此处用总体附图标记300来指代本发明的计算机系统。计算机系统300包括处理器302和主存储器304、指令高速缓存306、以及数据高速缓存308。通过指令高速缓存306逐条指令地提供312指令行310。处理器302的加载和存储数据操作314由数据高速缓存308所支持。例如,如图1所示,将数据行316高速缓存至数据高速缓存308。存储将仅更新数据高速缓存。仅当将脏数据从高速缓存中清除出去的时候,回写式缓冲器320才用于稍后的高速缓存行替换322。处理器302对数据高速缓存308的任意存储操作将生成用于高速缓存行预分配触发器326的高速缓存行标签324。将起始(START)、终止(END)和步幅(STRIDE)预分配触发参数328写入相应的寄存器中,以同高速缓存行标签324进行比较。适当时,将下一高速缓存行请求转发至预分配请求栈,例如FIFO寄存器332。当在后台处理器302脱机提供服务时,较早和较晚的请求可能同时等待处理。仅仅为了存储预分配不请求任何替换高速缓存行324。如果处理器需要用于加载操作的替换高速缓存行324,将从主存储器304中进行获取。
可以由显式的软件控制336来启动或者触发预分配。由软件程序员或者由编译器工具链插入的分配(ALLOCATE)操作可以用于在将数据存储至高速缓存行之前分配该高速缓存行。但是分配(ALLOCATE)操作可能增加代码尺寸,并且耗尽处理器发出带宽。当发出分配(ALLOCATE)操作时,由于不能发出另一个操作因此丧失了执行有用指令的机会。
在软件编译时,有时不可能精确预测在处理器代码中插入分配(ALLOCATE)操作的最佳位置,这是由于处理器的运行时行为引入了不确定性。由于依赖于存储器子系统延迟、分支未命中预测等招致的实际停滞周期,编译时和运行时的行为是不同的。预定的分配(ALLOCATE)操作的效率仅在运行期间才是明显的。
因此本发明的实施例在运行时用处理器硬件来触发预分配,而不是专门在编译时用软件操作来触发。为了说明这样的硬件触发预分配是多么的有利,表I建议了将1024个数据字节从一个位置(src)复制到另一个位置(dst)的C++子例程。
表I示例程序
copy1(char*src,char*dst){for(int i=0;i<1024;i++)*(dst+i)=*(src+i);} |
在本发明的下一顺序高速缓存行预分配实施例中,包括硬件触发器,使得不论何时当处理器向地址A存储时,处理器确定“地址A+32”是否也在高速缓存中。如果不在,则触发针对“地址A+32”的预分配请求。
例如,如果当表I的指令代码开始时高速缓存是空的,则对dst(i=0)的存储将在高速缓存中未命中,所以它将分配针对地址dst的高速缓存行并且它将触发针对“地址dst+32”的高速缓存行的预分配。到代码向dst+32(i=32)存储为止,已经在高速缓存中预分配了该行,并且该存储将在高速缓存中命中。对dst+32的存储将触发针对地址dst+64的高速缓存行的预分配。到代码向dst+64(i=64)存储为止,已经在高速缓存中预分配了该行,并且该存储将在高速缓存中命中。对dst+64的存储将触发针对地址dst+96的高速缓存行的预分配,并且以此类推。
所以在对第一目的位置dst的初始存储未命中之后,将不会遇到其它的未命中。这种预分配提前分配了dst结构的行。代码执行的速度/运行时行为决定了预分配的速度。
这类似于针对向数据高速缓存加载或者来自指令高速缓存的指令执行的传统的下一顺序高速缓存行预取。
在表I中的“copy1”的存储模式的顺序特性对于很多应用来说是典型的。但是不是所有应用都具有顺序存储模式。仅依赖于顺序存储模式的触发不可能提供大的性能改进。
可以例如用REGION_STRIDE使步幅成为可编程的,而不是提前预分配固定步幅的32字节高速缓存行。可以例如用REGION_START和REGION_END使预分配存储器区域成为可编程的。
考虑从一个位置(src)复制1024个数据字节的2维结构到另一个位置(dst)的表II中的“copy2”子例程。
表II
copy2(char*src,char*dst){for(int j=0;j<64;j++)//64“行”for(int i=0;i<16;i++)//每“行”16个字节*(dst+(j*512)+i)=*(src+(j*512)+i);} |
这样一来,从较大的512字节宽的二维结构复制了较小的64*16字节的二维子结构。如表III所示,设置可编程预分配属性REGION_STRIDE、REGION_START和REGION_END,使得针对目的地址“dst”的预分配成为可能。
表III
REGION_STRIDE=512(具有复制的结构的大结构的宽度)REGION_START=dst(目的结构的开始)REGION_END=dst+(64*512)(目的结构的结束) |
采用这样的设置,对行的存储将触发针对下一行的预分配。换言之,对包含在区域中的地址A的存储(REGION_START<=A<=REGION_END)将触发针对地址A+512(REGION_STRIDE=512)的预分配。
在执行示例代码“copy2”之前,将用图3描述的软件参与限制为对三个属性的一次设置。与基于全软件的方案不同,主应用代码本身不受影响,在所述基于全软件的方案中,每一个独立的分配是由显式的分配(ALLOCATE)操作触发的,该显式分配操作也消耗了发出带宽。
图4示出了本发明的方法实施例,并且在本文中用总体附图标记400来指代本发明的方法。方法400截获处理器加载/存储操作402并且步骤404测试它是否是存储操作。如果是,检查406确定该存储是否在REGION_START和REGION_END之间的地址范围中。如果是,步骤408触发针对与地址A加上REGION_STRIDE相适合的高速缓存行的预分配请求410。步骤416还可能已经接收了较早的请求412和较晚的请求414。该步骤416组织并且向数据高速缓存提供高速缓存行418。预分配请求410、412、414以及高速缓存行418和420不需要等待回写式缓冲器422接收被清除的高速缓存行424并将高速缓存行426冲入主存储器。在预分配416可以预分配高速缓存行之前,必须将当前高速缓存行位置中的任意脏数据清除到回写式缓冲器中。就此而言,当回写式缓冲器不可用时,预分配不需要等待回写式缓冲器。尽管如此,由于提前分配了行,这不会导致处理器停滞周期,而仅仅是预分配的延迟。
本发明的实施例通过在处理器存储操作之前作出这样的请求分散了高速缓存行分配请求。将对于关键资源(比如回写式行缓冲器)的需求分散在更多的时间上,从而降低了导致停滞周期的可能。避免停滞周期导致了更好的整体处理器性能。
本发明可以用于任意类型的数据高速缓存,而不一定必须是处理器高速缓存。可以使用具有不同步幅的多个预分配区域。可以设计出不同的硬件预分配触发器。对于存储器结构的反向遍历可以支持负的区域步幅。
本发明的专利侵权检测方法取决于该预分配触发器将需要某种最小程度的软件参与这一事实。在硬件触发器的示例中,软件将通过REGION_STRIDE、REGION_START和REGION_END寄存器的任意设置来呈现自己。可以在怀疑专利侵权的设备上运行的代码中轻易地找到这样的信息,或者可能在设备用户手册中描述这样的寄存器。
尽管已参照多个具体示例实施例对本发明进行了描述,但本领域的技术人员要认识到,在不背离权利要求书中所阐述的本发明精神和范围的前提下,可以对本发明作出许多改变。
Claims (14)
1、一种用于提高处理器性能的方法,包括:
检查由处理器对数据高速缓存执行的存储操作的存储地址;
查看所述数据高速缓存中已经针对所述存储地址加步幅值被分配了的高速缓存行;以及
如果还没有被预分配,则针对所述高速缓存行发出预分配请求;
其中,在对所述数据高速缓存的存储操作期间,所述处理器避免了当存在高速缓存未命中时引起的停滞周期。
2、根据权利要求1所述的方法,还包括:
用预分配请求栈来累积并且调度预分配请求。
3、根据权利要求1所述的方法,还包括:
测试所述处理器对所述数据高速缓存执行的所述存储操作的所述存储地址是否被包括在由可编程起始和终止寄存器定义的范围中,如果是,则允许所述预分配请求。
4、根据权利要求1所述的方法,还包括:
使用回写式缓冲器来处理正在从所述数据高速缓存中清除的高速缓存行。
5、根据权利要求1所述的方法,还包括:
如果还没有被预分配,则执行分配软件命令,所述分配软件命令将把预分配请求注入所述高速缓存行。
6、一种用于提高处理器性能的方法,包括:
检查由处理器对数据高速缓存执行的存储操作的存储地址;
查看所述数据高速缓存中已经针对所述存储地址加步幅值被分配了的高速缓存行;
如果还没有被预分配,则针对所述高速缓存行发出预分配请求;
用预分配请求栈来累积和调度预分配请求;
测试所述处理器对所述数据高速缓存执行的所述存储操作的所述存储地址是否被包括在由可编程起始和终止寄存器定义的范围中,如果是,则允许这样的预分配请求;
使用回写式缓冲器来处理正在从所述数据高速缓存中清除的高速缓存行;以及
执行分配软件命令以将预分配请求注入所述预分配请求栈;
其中,在对所述数据高速缓存的存储操作期间,所述处理器避免了当存在高速缓存未命中时引起的停滞周期。
7、一种用于提高处理器性能的设备,包括:
用于检查由处理器对数据高速缓存执行的存储操作的存储地址的装置;
用于查看所述数据高速缓存中已经针对所述存储地址加步距值被分配了的高速缓存行的装置;以及
用于在还没有被预分配的情况下针对所述高速缓存行发出预分配请求的装置;
其中,在对所述数据高速缓存的存储操作期间,所述处理器避免了当存在高速缓存未命中时引起的停滞周期。
8、根据权利要求1所述的设备,还包括:
预分配请求栈,用于累积并且调度预分配请求;以及
回写式缓冲器,用于处理正在从所述数据高速缓存中清除的高速缓存行。
9、根据权利要求1所述的方法,还包括:
用于测试所述处理器对所述数据高速缓存执行的所述存储操作的所述存储地址是否被包括在由可编程起始和终止寄存器定义的范围中,并且如果是,则允许所述预分配请求的装置。
10、一种用于检测侵权的商业方法,包括:
针对region_stride、region_start和region_end的寄存器等效物,检查潜在侵权者的软件程序,意在控制高速缓存存储处理器操作中的预分配请求。
11、一种用于检测侵权的商业方法,包括:
针对region_stride、region_start和region_end的寄存器等效物,检查潜在侵权者的用户手册出版物,意在控制高速缓存存储处理器操作中的预分配请求。
12、一种计算机系统,包括:
数据高速缓存,位于处理器和主存储器之间并且由回写式缓冲器所支持;
预分配请求栈,用于累积和调度预分配请求,使得每一个预分配将依次等待所述回写式缓冲器完成它的处理,所述处理是用预分配的高速缓存行替代所述数据高速缓存中的高速缓存行;
可编程触发机制,用于检查所述处理器对所述数据高速缓存执行的每一个存储操作,以查看是否应当预分配下一高速缓存行,如果是,则向所述预分配请求栈发送相应的请求。
13、根据权利要求12所述的计算机系统,还包括:
可编程寄存器,用于保持参数,所述参数是确定是否应当预分配下一高速缓存行所需的参数。
14、根据权利要求13所述的计算机系统,其中:
所述可编程寄存器使得:如果存储操作的存储地址发生在由起始和终止可编程寄存器定义的范围内,则将请求预分配下一高速缓存行,所述下一高速缓存行包括由可编程步幅寄存器定义的范围中的存储地址;
其中,当所述处理器确实在所述下一高速缓存行中执行所述存储操作时,已经预分配了所述高速缓存行并且将存在高速缓存命中,因而避免了停滞周期。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US88659807P | 2007-01-25 | 2007-01-25 | |
US60/886,598 | 2007-01-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101589373A true CN101589373A (zh) | 2009-11-25 |
Family
ID=39493904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008800029445A Pending CN101589373A (zh) | 2007-01-25 | 2008-01-24 | 硬件触发的数据高速缓存行预分配 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20100077151A1 (zh) |
EP (1) | EP2115598B1 (zh) |
CN (1) | CN101589373A (zh) |
AT (1) | ATE504039T1 (zh) |
DE (1) | DE602008005851D1 (zh) |
WO (1) | WO2008090525A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636270A (zh) * | 2013-11-14 | 2015-05-20 | Arm有限公司 | 数据处理装置中的自适应预取 |
CN111108485A (zh) * | 2017-08-08 | 2020-05-05 | 大陆汽车有限责任公司 | 操作高速缓存的方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120324195A1 (en) * | 2011-06-14 | 2012-12-20 | Alexander Rabinovitch | Allocation of preset cache lines |
US8429315B1 (en) | 2011-06-24 | 2013-04-23 | Applied Micro Circuits Corporation | Stashing system and method for the prevention of cache thrashing |
US9336162B1 (en) | 2012-02-16 | 2016-05-10 | Applied Micro Circuits Corporation | System and method for pre-fetching data based on a FIFO queue of packet messages reaching a first capacity threshold |
WO2015057828A1 (en) * | 2013-10-15 | 2015-04-23 | Mill Computing, Inc. | Computer processor employing cache memory storing backless cache lines |
CN110058964B (zh) * | 2018-01-18 | 2023-05-02 | 伊姆西Ip控股有限责任公司 | 数据恢复方法、数据恢复系统和计算机可读介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5903911A (en) * | 1993-06-22 | 1999-05-11 | Dell Usa, L.P. | Cache-based computer system employing memory control circuit and method for write allocation and data prefetch |
US5642494A (en) * | 1994-12-21 | 1997-06-24 | Intel Corporation | Cache memory with reduced request-blocking |
US5829025A (en) * | 1996-12-17 | 1998-10-27 | Intel Corporation | Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction |
US5822790A (en) * | 1997-02-07 | 1998-10-13 | Sun Microsystems, Inc. | Voting data prefetch engine |
US6393528B1 (en) * | 1999-06-30 | 2002-05-21 | International Business Machines Corporation | Optimized cache allocation algorithm for multiple speculative requests |
US6594730B1 (en) * | 1999-08-03 | 2003-07-15 | Intel Corporation | Prefetch system for memory controller |
US7234040B2 (en) * | 2002-01-24 | 2007-06-19 | University Of Washington | Program-directed cache prefetching for media processors |
US6760818B2 (en) * | 2002-05-01 | 2004-07-06 | Koninklijke Philips Electronics N.V. | Memory region based data pre-fetching |
US7197605B2 (en) * | 2002-12-30 | 2007-03-27 | Intel Corporation | Allocating cache lines |
US20070186048A1 (en) * | 2004-03-24 | 2007-08-09 | Matsushita Electric Industrial Co., Ltd. | Cache memory and control method thereof |
US7350029B2 (en) * | 2005-02-10 | 2008-03-25 | International Business Machines Corporation | Data stream prefetching in a microprocessor |
US8490065B2 (en) * | 2005-10-13 | 2013-07-16 | International Business Machines Corporation | Method and apparatus for software-assisted data cache and prefetch control |
US8225046B2 (en) * | 2006-09-29 | 2012-07-17 | Intel Corporation | Method and apparatus for saving power by efficiently disabling ways for a set-associative cache |
US7600077B2 (en) * | 2007-01-10 | 2009-10-06 | Arm Limited | Cache circuitry, data processing apparatus and method for handling write access requests |
-
2008
- 2008-01-24 EP EP08702517A patent/EP2115598B1/en not_active Not-in-force
- 2008-01-24 CN CNA2008800029445A patent/CN101589373A/zh active Pending
- 2008-01-24 US US12/523,388 patent/US20100077151A1/en not_active Abandoned
- 2008-01-24 WO PCT/IB2008/050262 patent/WO2008090525A2/en active Application Filing
- 2008-01-24 AT AT08702517T patent/ATE504039T1/de not_active IP Right Cessation
- 2008-01-24 DE DE602008005851T patent/DE602008005851D1/de active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636270A (zh) * | 2013-11-14 | 2015-05-20 | Arm有限公司 | 数据处理装置中的自适应预取 |
CN111108485A (zh) * | 2017-08-08 | 2020-05-05 | 大陆汽车有限责任公司 | 操作高速缓存的方法 |
CN111108485B (zh) * | 2017-08-08 | 2023-11-24 | 大陆汽车科技有限公司 | 操作高速缓存的方法 |
Also Published As
Publication number | Publication date |
---|---|
US20100077151A1 (en) | 2010-03-25 |
DE602008005851D1 (de) | 2011-05-12 |
ATE504039T1 (de) | 2011-04-15 |
WO2008090525A2 (en) | 2008-07-31 |
WO2008090525A3 (en) | 2008-09-18 |
EP2115598A2 (en) | 2009-11-11 |
EP2115598B1 (en) | 2011-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9513904B2 (en) | Computer processor employing cache memory with per-byte valid bits | |
Scales et al. | Shasta: A low overhead, software-only approach for supporting fine-grain shared memory | |
EP0667580B1 (en) | Cache System for a memory | |
JP6218833B2 (ja) | 処理リソース割り当て | |
USRE45086E1 (en) | Method and apparatus for prefetching recursive data structures | |
EP0856797B1 (en) | A cache system for concurrent processes | |
Zhang et al. | Speeding up irregular applications in shared-memory multiprocessors: Memory binding and group prefetching | |
CN110865968B (zh) | 多核处理装置及其内核之间数据传输方法 | |
KR101626533B1 (ko) | 가비지 콜렉션을 위한 gpu 서포트 | |
JP4298800B2 (ja) | キャッシュメモリにおけるプリフェッチ管理 | |
US8832415B2 (en) | Mapping virtual addresses to different physical addresses for value disambiguation for thread memory access requests | |
TW554267B (en) | Cache way prediction based on instruction base register | |
US9286221B1 (en) | Heterogeneous memory system | |
US6430656B1 (en) | Cache and management method using combined software and hardware congruence class selectors | |
US20080046657A1 (en) | System and Method to Efficiently Prefetch and Batch Compiler-Assisted Software Cache Accesses | |
US20070204107A1 (en) | Cache memory background preprocessing | |
CN101589373A (zh) | 硬件触发的数据高速缓存行预分配 | |
US20090254733A1 (en) | Dynamically Controlling a Prefetching Range of a Software Controlled Cache | |
US20080235499A1 (en) | Apparatus and method for information processing enabling fast access to program | |
CN102640124A (zh) | 用于数据流的储存感知预取 | |
EP1594061A2 (en) | Methods and systems for grouping and managing memory instructions | |
US20060064518A1 (en) | Method and system for managing cache injection in a multiprocessor system | |
US8700851B2 (en) | Apparatus and method for information processing enabling fast access to program | |
JP2009528612A (ja) | データ処理システム並びにデータ及び/又は命令のプリフェッチ方法 | |
US8266381B2 (en) | Varying an amount of data retrieved from memory based upon an instruction hint |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20091125 |
|
C20 | Patent right or utility model deemed to be abandoned or is abandoned |