CN1967506B - 高速缓存存储器处理器中的合并入口 - Google Patents
高速缓存存储器处理器中的合并入口 Download PDFInfo
- Publication number
- CN1967506B CN1967506B CN2006101398878A CN200610139887A CN1967506B CN 1967506 B CN1967506 B CN 1967506B CN 2006101398878 A CN2006101398878 A CN 2006101398878A CN 200610139887 A CN200610139887 A CN 200610139887A CN 1967506 B CN1967506 B CN 1967506B
- Authority
- CN
- China
- Prior art keywords
- demand
- cache memory
- input buffer
- memory
- cache
- 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
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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明是关于高速缓存存储器(cache)处理性能的改善。在一些实施例(embodiments)中,刚进入的需求(request)会被比较而决定这几次需求是否相符(match)。如果相符,这些相符的需求将被合并(merged)。对其他实施例来说,一个进来的需求将与前一个入口(entry)比较而决定这个需求是否与入口相符。如果相符,这个需求将与入口合并。这些入口可以源于相符的高速缓存存储器存界(cache line);或者,可以源于不同的高速缓存存储器存界。
Description
技术领域
本发明与处理器(processors)相关,特别是针对与处理器相关的高速缓存存储器。
背景技术
软件应用日趋复杂,如图像的处理,已使硬件处理的能力增加需求。部分现今的处理结构下内括一或更多高速缓存存储器,用来改进处理效率。与主存储器(main memory)-位于处理器外部-比较;高速缓存存储器是位于处理器处理单元中的一部份。因此;允许较快的数据存取,随之而来的,较快的处理速度。
各式的各样的高速缓存存储器结构已发展出来了,但这些结构仍有很大的改善空间。
发明内容
本发明是关于能改善处理器性能的高速缓存存储器。在一些实施例中,刚进入的需求会被作比较而决定是否相符。如果相符,这些相符的需求将被合并。
对其他实施例来说,一个刚进入的需求与前一个入口作比较而决定是否与这个入口相符。如果相符,这个需求将与入口合并。
其它的***,设备,方法,特征和优点(advantages)其技术在之后的图示与实施方式详加描述后将会是显见的。可预期的所有再增加的***,方法,特征和优点被包含在实施方式与本发明的范围内。
本发明提供了一种处理***,包含一执行单元(EU)池,具有多个执行单元;及一高速缓存存储器,连接到该EU池,该高速缓存存储器包含:一第一输入缓冲器,于一个时钟周期期间自该EU池接收第一需求;一第二输入缓冲器,于该时钟周期期间自该EU池接收第二需求;一待决需求队列,用以保持一先前需求,该先前需求是于前一个时钟周期期间接收到的;一第一比较器,比较该第一需求和该第二需求以决定两者是否相符;一第二比较器,比较该第一需求和该先前需求以决定两者是否相符;一第三比较器,比较该第二需求和该先前需求以决定两者是否相符;一合并逻辑,当该第一需求与该第二需求相符时则将两者合并,当该第一需求与该先前需求相符时则更进一步将两者合并,当该第二需求与该先前需求相符时则更进一步将两者合并。
本发明还提供了一种方法,包含下列步骤:决定一高速缓存存储器内的第一需求与第二个需求是否相符;当该第一需求与该第二个需求相符时,则将两者合并。
附图说明
参考如下的图示对于多方面的披露有更好的理解。在图里的组件不一定按比例,重点是能清楚的描述本发明的原理。而且,在图标里,像是标号指定在图标相应的部分。
图1是显示处理器环境范例的一方块图。
图2是显示图1的运算核心内部组件的一方块图。
图3是显示图2详细的第2级(L2)高速缓存存储器的方块图。
图4是显示图3的L2高速缓存存储器内组件的方块图。
图5是显示图3与图4详细组件的方块图。
图6是一个L2卷标和数据结构的插图。
图7是遗漏读取需求表入口结构的插图。
图8是遗漏写入需求表入口结构的插图。
图9是返回数据缓冲器入口结构的插图。
图10是返回需求队列入口结构的插图。
图11是显示图4和图5的命中试验仲裁器的实施例的方块图。
附图符号说明
105 运算核心
110 纹理过滤单元
115 像素包装器
120 命令流动处理器
125 EU池控制与顶点/流动高速缓存存储器
130 回写单元
135 纹理地址产生器
140 三角设定单元
205 存储器存取单元
210 L2高速缓存存储器
225a 偶数EU输出(纵横开关或总线)
225b 奇数EU输出(纵横开关或总线)
230 EU池
235 EU输入(纵横开关或总线)
245 存储器接口仲裁器
404 XinCH1 FIFO
406 VCin FIFO
408 T#需求输入FIFO
410 412 414 需求合并
416 命中测试仲裁器
418 命中测试单元
420 遗漏写入需求表
422 遗漏读取需求表
424 待决MXU需求FIFO
428 返回数据缓冲器
430 返回需求队列
432 返回需求控制
434 L2读/写仲裁器
436 L2高速缓存存储器RAM
442 存储体0读取数据
444 存储体1读取数据
446 存储体2读取数据
448 存储体3读取数据
450 输出仲裁器
452 待决写入需求(4x2048)
502 地址0
504 地址1
506 待决需求队列
508 写入数据缓冲器
510a 比较器[cur0,pre0]
510b 比较器[cur1,pre0]
510c 比较器[cur0,pre1]
510d 比较器[cur1,pre1]
510e 比较器[cur0,cur1]
512 合并需求入口[0-3]
514 更新需求队列
516 命中测试需求0
518 命中测试需求1
520 L2标签RAM
522 标签比较器0
524 标签比较器1
526 R/W需求0
528 R/W需求1
530 遗漏需求表
532 存储体0需求
534 存储体1需求
536 存储体2需求
538 存储体3需求
540 L2 RAM读取/写入
V 有效(1位)
D6 占污(1位)
T6 卷标(17位)
MR 遗漏参考号码(2位)
B0D B1D B2D B3D 数据(512位)
V 有效(1位)
CL 高速缓存存界号(9位)
MR 遗漏参考号(2位)
U7 单元号(4位)
E7 入口(2位)
T7 线程ID(5位)
CRF CRF指针(8位)
S7 光照模型(2位)
TS7 工作Seq.ID(10位)
V 有效(1位)
CL 高速缓存存界号(9位)
MR 遗漏参考号(2位)
B0M 存储体0(16位)
B1M 存储体1(16位)
B2M 存储体2(16位)
B3M 存储体3(16位)
V 有效(1位)
CL 高速缓存存界号(9位)
MR 遗漏参考号(2位)
B0D 存储体0(512位)
B1D 存储体1(512位)
B2D 存储体2(512位)
B3D 存储体3(512位)
CL 高速缓存存界号(9位)
MR 遗漏参考号(2位)
B0V 存储体0有效(1位)
B1V 存储体1有效(1位)
B2V 存储体2有效(1位)
B3V 存储体3有效(1位)
具体实施方式
在图示详细的描述实施例提供参考。当描述几个与图标关联的实施例时,于其中是没有限制披露实施例或者实施例披露的目的。反之,目的是包含全部选择,修改和等量。
大部分的计算机***使用高速缓存存储器,其为小而快速的存储器,用来纪录最近所存取的数据。通常,高速缓存存储器被用于提升存取的相同数据的速度。
通常,当数据被读取,或者写入时,主存存储器也将相关联的存储器地址备份于高速缓存存储器中。高速缓存存储器会监视下一个要读取数据的地址是否已存在高速缓存存储器中。如果数据已在高速缓存存储器中(称为″高速缓存命中″)随后立即告知主存储器取消读取的动作。如果数据不在高速缓存存储器中(称为″高速缓存遗漏″)则数据会自主存储器中取出并存储在高速缓存存储器中。
通常,高速缓存存储器是比主存储器还要快速的一种存储器,所以高速缓存存储器的命中较正规的存储器花费更少时间完成存取。高速缓存存储器可以与一个中央处理器(CPU)位于相同的集成电路(IC)中,因此能减少存取时间。位于与CPU相符IC中的那些高速缓存存储器通常被称为主高速缓存存储器,自从主高速缓存存储器越来越大,较慢速的2级高速缓存存储器(如所知的level-2(L2)高速缓存存储器)就被置于CPU外边。
高速缓存存储器的重要的特性是它的命中比率,指的是全部存储器存取的一小部分符合自高速缓存存储器。命中比率取决于高速缓存存储器设计,高速缓存存储器的大小上与主存储器的大小有关。其大小被快速存储芯片的片内成本所限制。
命中比率也取决于特定程序运作的存取模式(连续地址的读取与写入)。在大多数的程序存取模式中高速缓存存储器所倚赖的两特性,即是,时间区域性(temporal locality)与空间区域性(spatial locality)。
时间区域性指的是,如果一个特定的数据(或者指令)曾被存取过,若再次存取则会相对的加快。空间区域性指的是如果一个存储器被存取,则附近的存储器位置也会被存取。为了利用空间区域性,高速缓存存储器通常每次运作于好几个字符(称之为″高速缓存存储器行″或者″高速缓存存储器块″)。以高速缓存存界(cache line)来读写整个主存储器。
通常,当处理器写入主存储器时,会预设处理器不久将再次读取它,就先将数据写入高速缓存存储器中。当高速缓存存储器满了而另一条数据线(line of data)将要被读入时,高速缓存存储器入口会被选择将旧数据写回主存储器或者″清掉″。然后这条新数据线就会被至放于这个位置。可以想像的是当普遍朝向提升高速缓存存储器能力时,相应的也降低了主存储器的读写次数。
为了提供更大的高速缓存存储器效率,有些发明的实施例提供高速缓存存储器的需求合并。那些实施例中,需求会被作比较而决定其中是否有相符。如果需求相符,这些需求就会被合并,并且传回目的标识符号(ID)且地址被纪录在待决的需求列里。通过相符需求的合并,因高速缓存存储器不再队列重复需求而增加它的效率。
对其他实施例来说,需求将与待决需求队列(pending request queue)的入口(entry)比较。如果需求与入口相符,这个需求将与入口合并。因此没有一个需求队列是预先存有重复的入口。
对于其它尚有的实施例来说,通过提供漏读需求(missed read request table)表降低高速缓存存储器的等待时间(latency),这个缓冲器高速缓存漏读且允许高速缓存读取命中(cache read hits)短暂的无等待时间的通过。
也有其它实施例使用漏写需求表(missed write request table),这缓冲器高速缓存漏写。这个漏写需求表,因此,导致短暂的无等待时间漏写事件。
注意,以下是以图形处理器背景作描述,这个原则描述于不同的实施例并可应用在其它类型处理器,处理其它类型的数据(例如,非图形数据)。
图1显示图形处理器的处理器环境范例方块图。并非所有的图形处理程序的组件都显示出来,图1所显示的组件于一般的技术人员应该足够了解图形处理器的普遍功能与结构。处理环境的中心是运算核心(computational core)105,它处理各式的指令。运算核心105,为多问题(multi-issue)处理器,能在一个单位的时钟周期内处理多条指令。
如图1所示。图形处理器的相关的组件包含运算核心105,纹理过滤单元(texture filtering unit)110,像素包装器(pixel packer)115,命令流动处理器(command stream processor)120,回写单元(write-back unit)130,以及纹理地址产生器(texture address generator)135。此外在图1里包含执行单元(execution unit″EU″)池控制单元125,其包含一顶点高速缓存存储器(vertex cache)和/或一流动高速缓存存储器(stream cache)。运算核心105接收各个的组件输入与输出到各个其它的组件。
例如,图1所示,纹理过滤单元110提供纹理数据给运算核心105(输入A和B)。对一些实施例来说,相应于在下面确定的数据结构时,纹理数据提供512位数据。
像素包装器115提供512位格式的像素光照模型(pixel shader)输入至运算核心105(输入C和D)。另外,像素包装器115所需的像素光照模型工作(pixel shader tasks)是来自EU池(execution unit pool)控制单元125,它提供所指定的EU号码和线程号码(thread number)给像素包装器115。因为像素包装器和纹理过滤单元是已知的技术,这些组件在这里不作更进一步的讨论。图1显示512位的像素和纹理(texel)数据分组,这些分组的大小可以随其它实施例改变而改变,取决于图形处理器所要求的工作特性。
命令流动处理器120提供三角形顶点指标(triangle vertex indices)给EU池控制单元125。在图1的实施例方面。指针是256位。EU池控制单元125从流动高速缓存存储器组合顶点光照模型(vertex shader)并且输出数据至运算核心105(输入E)。EU池控制单元125也组合几何光照模型(geometry shader)输入并提供这些输入到运算核心105(输入F)。EU池控制125也控制EU输入235与EU输出220。换言之,EU池控制125分别控制运算核心105的流入(inflow)和流出(outflow)。
在程序上,运算核心105提供像素光照模型输出(输出J1和J2)给回写单元130。像素光照模型输出包含红色/绿色/蓝色/字母(RGBA)讯息,其为已知的技术。在被披露的实施例方面的数据结构,像素光照模型输出提供了两道512位数据流。
类似于像素光照模型输出,运算核心105输出纹理坐标(输出K1和K2),包含UVRQ讯息,给纹理地址产生器135。纹理地址产生器135核发纹理需求(T#需求)给运算核心105(X输入),且运算核心105输出(输出W)纹理数据(T#数据)给纹理地址产生器135。自从各种例子的地址纹理产生器135与回写单元130是已知技艺,这些组件于此不作进一步的讨论。另外,当UVRQ和RGBA以512位展现时,这些分组的大小可以随其它实施例改变而改变。在图1的实施例方面,总线被分成两条512位路径,每条路径持有128位的RGBA色值与4个像素的128位的UVRQ纹理坐标。
运算核心105和EU池控制单元125也相互的转移512位的顶点高速缓存溢出数据(vertex cache spill data)给彼此。另外,自运算核心105(输出M1和M2)输出两个512位顶点高速缓存写入(vertex cache writes)至EU池控制单元125作进一步处理。
在运算核心105外部的数据交换经描述后,现在将焦点转至图2,其显示运算核心105内部不同组件的方块图。如图2所示。运算核心105包含了存储器存取单元(memory access unit)205通过存储器接口仲裁器(memory interface arbiter)245连接到第2级(L2)高速缓存存储器210。
L2高速缓存存储器210接收自EU池控制单元125(图1)的顶点高速缓存溢出(输入G)并提供顶点高速缓存溢出(输出H)到EU池控制125单元(图1)。另外,L2高速缓存存储器接收自纹理地址产生器135(图1)的T#需求(输入X),并响应接收到的需求提供T#数据(输出W)至纹理地址产生器135(图1)。
存储器接口仲裁者245于区域视频存储器(local video memory)(帧缓冲器)提供一控制接口。一个未显示的总线接口单元(BIU)提供***一个***通过接口,如,PCI高速总线。存储器接口仲裁器245和BIU提供存储器和一个执行单元池(EU)L2高速缓存存储器210之间的接口。对一些实施例来说,EU池L2高速缓存存储器(EU pool L2 cache)通过存储器存取单元205连接存储器接口仲裁器245和BIU。存储器存取单元205自L2高速缓存存储器210和其它区块转换其虚拟存储器地址到物理存储器地址。
存储器接口仲裁器245提供给L2高速缓存存储器210作存储器存取(例如,读/写存取),拿取指令/常数/数据/纹理,直接存储器寻址(例如,加载/存储),暂时存储器存取的指针,溢出登录,顶点高速缓存内容溢出,等等。
运算核心105由执行单元池230组成,包含多个执行单元(EU)240a...240h(共同地称240),每个皆包含EU控制和局部存储器(未显示)。每个EU240均能在单一个的时钟周期内处理多条指令。因此,EU池230,在它的峰值,实质上可同时处理多线程。这些EUs240,与它们实质的同时处理能力,于下面有非常详细描述。图2显示了8个EUs240(标签EU0到EU7),EUs的数量在其它实施例中可能可以更多或更少,不一定局限于8个。
运算核心105进一步由EU输入235,以及EU输出220所组成,它们分别分配提供输入到EU池230并且从EU池230接收输出。EU输入235和EU输出220可能是纵横开关(crossbars)或者总线(buses)或者其它知名的输入机制。
EU输入235自EU池控制125(图1)接收顶点光照模型输入(E)几何学光照模型输入(F),由不同的EUs240进行处理后提供讯息给EU池230。另外,EU235输入接收像素光照模型输入(输入C和D)和纹理分组(输入A和B),在不同的EU240进行处理后传送那些分组给EU池230。另外,EU输入235自L2高速缓存存储器210(L2读取)得到讯息且按EU池230的需求提供讯息。
EU输出在图2的实施例方面分成偶数输出225a和奇数输出225b。与EU235输入类似,EU输出225可能是纵横开关或者总线或者其它知名的结构。偶数输出225a管理偶数Eus 240a,240c,240e,24g输出,奇数EU输出225b管理奇数EUs 240b,240d,240f,240h输出。总之,两EU输出225a,225b从EU池230接收输出,像是UVRQ和RGBA。那些输出,其中,可能直接回到L2高速缓存存储器210,或输出自运算核心105通过J1和J2到回写***单元130(图1)或者通过K1和K2输出到纹理地址产生器135(图1)。
图3是显示图2L2高速缓存存储器210的详图。对一些实施例来说,L2高速缓存存储器210使用4个存储体(bank)的1RW 512x512位的存储器,高速缓存存储器的大小是1M位。在图3的实施例方面,L2高速缓存存储器210有512条高速缓存记存界(cache line),并且存界尺寸是2048位。高速缓存存界于每个存储体分成的4个512字符。为了存取数据,而提供地址结构,各自的数据适当的分配到虚拟存储器地址空间。图6提供L2高速缓存存储器210的范例数据结构。
对一些实施例来说,可能有30位的地址格式被调整到32位。地址的不同部分会被明确的分配。例如,位[0:3]可分派作补偿位(offset bits);位4到5(指定为[4:5])可被分派为字符选择(word-select bits)位;字符[6:12]可被分派为存界选择位(line-select bits);以及位[13:29]可被分派为卷标位(tag bits)。
若有30位地址,只要设定存储界选择位,可在L2高速缓存存储器210作4种方式组合。此外,可使用字符选择位选择字符。自从范例数据结构有2048位存界(line)的尺寸,L2高速缓存存储器210可分为4存储体,每个存储体有1RW 512位的端口,每个时钟周期可多达4个读/写(R/W)的存取。对于这样的实施例来说,数据在L2高速缓存存储器210内(包含光照模型程序代码,常量,线程消除存储器(thread scratch memories),顶点高速缓存存储器(VC)内容,和纹理表面缓存器(T#)内容)能分享相符的虚拟存储器地址空间。
关于图3,所提供的实施例范例,显示L2高速缓存存储器210有4个输入310,320,330,340和4个输出315,325,335,345。对于这个实施例来说,一个输入(Xout CH0 310)是从EU输出220纵横开关的一条路径(CH0)接收512位的数据,而另一个输入(Xout CH1 320)从EU输出220纵横开关的另一条路径(CH1)得到512位的数据。第3和第4个输入(VC高速缓存存储器330和T#需求340)分别从VC和T#缓存器接收到排列好的512位(bit-aligned)顶点数据。如图3所示,512位的数据也与32位地址数据相关。
输出包含512位的输出(Xin CH0 315),其将数据写到EU输入235纵横开关,以及一512位的输出(Xin CH1 325),其将数据写到EU输入235纵横开关。此外,512位输出(VC高速缓存存储器335和TAG/EUP 345)分别提供写入数据给VC与T#缓存器。
除了4个输入310,320,330,340和4个输出315,325,335,345之外,L2高速缓存存储器210包含外部R/W端口350对存储器存取单元205。对某些实施例来说,对外部写入存储器存取单元205是比其它R/W需求有较高优先权。EU加载指令(其指定为″LD4/8/16/64″)加载32/64/128/512位数据,其有排列好的32/64/128/512位存储地址相应。对加载指令来说,被返回的32/64/128位数据被复制到512位。当数据写进EU缓存器文件(register file)(其称为″普通缓存器文件″或者CRF″)时512位的数据被有效的像素(valid pixel)或者顶点屏蔽(vertex mask)和路径屏蔽(channel mask)所遮敝。与此类似,EU存储指令(其指定为″ST4/8/16/64″)存储32/64/128/512位数据,相应以排列好的32/64/128/512位存储器地址。
给定如此的数据结构,所有读/写需求(例如,指令与来自EU的常量,顶点数据来自顶点高速缓存存储器,纹理数据来自T#缓存器,等等)被排列至512位的存储器地址。图4与图5非常详细显示出各式的的L2高速缓存存储器210的组件。另外,图6到图10显示供L2高速缓存存储器210使用的各式的入口结构和/或数据结构的实施例。
如图6所示。L2数据结构包含一个1位的有效的标志(valid flag)(V),一个1位的沾污标志(dirty flag)(D6),一个17位的卷标(tag)(T6),和一2位遗漏参考号码(miss reference number)(MR),其全部为特别指定地址的数据集合。除这些地址位之外,数据结构包含4个512位入口,总计2048位。L2高速缓存存储器210,于本实施例,最高允许512个入口。
图4是显示图3L2高速缓存存储器210的各式组件的方块图。输入数据来自Xout CH0 310和图3的Xout CH1 320。分别进入先进先出堆栈(FIFO),相应于图4内的标签。Xin CH0 FIFO 402和Xin CH1 FIFO 404。与此类似,数据进入通过VC高速缓存存储器输入330被放置在Vcin FIFO 406里,当数据进入通过T#的需求输入340放置在T# request FIFO 408里。
Xin CH0 FIFO 402和Xin CH1 FIFO 404各自直接进入的需求至需求合并逻辑(request merge logic)410。需求合并逻辑410裁定这些分别来自FIFO的需求是否该被合并。图5详细显示需求合并逻辑410的组件。VCin FIFO 406和T#需求FIFO 408其各自的直接需求相应于需求合并逻辑412,414。
需求合并逻辑410,412,414的输出结果被传送至命中测试仲裁器(hit test arbiter)416。命中测试仲裁器416决定高速缓存存储器是否命中或遗漏。对于一些实施例来说,如图11中所示命中测试仲裁器416利用桶移位器(barrel shifter)与独立控制的移位多任务器(shift multiplexers)(MUXes 1102,1104,1106,1108,1110,1112)。不过,其它实施例可使用,例如,双向的搜寻,或者其它知名的方法。
来自命中测试仲裁器416的命中测试仲裁结果与需求合并逻辑410,412,414,的输出结果一起被传送到命中测试单元418。如图11的结构,每个时钟周期最多有两个需求送到命中测试单元418。尽可能,两个需求最好不要在相同的高速缓存存界也不要在相同的设置(set)。于图5命中测试仲裁器和各式的击中试验单元418的组件有详细讨论。
L2高速缓存存储器210进一步包含遗漏写入需求表(missed write request table)420,遗漏读取需求表(missed read request table)422,两者皆供给待决存储存取组件(MXU)需求FIFO(pending memory access unit request FIFO)424。待决MXU需求FIFO 424进一步的供给进存储器存取单元205。待决MXU需求FIFO 424参照撞击测试L2高速缓存存储器210,有如下详细的描述。
来自MXU 205的返回数据被放置在返回数据缓冲器(return data buffer)428,其将返回的数据传送到L2读/写(R/W)仲裁器434。来自命中测试单元418的需求和从遗漏读取需求表422的读取需求也传送到L2 R/W仲裁器(arbiter)434。一旦L2 R/W仲裁器434仲裁需求,适当的需求被送到L2高速缓存存储器RAM 436。返回数据缓冲器428,遗漏读取需求表422 420,遗漏写入需求表420 422,L2 R/W仲裁器434,和L2高速缓存存储器RAM 436于图5被详细讨论。
图6的4个存储体(four-bank)结构。L2高速缓存存储器RAM 436输出到4个读取存储体442,444,446,448,依次,输出到输出仲裁器450。尽可能,输出仲裁器450使用循环演算模式(round-robin fashion)仲裁读取需求(Xin CH0和Xin CH1)的返回数据,VC和T#。每个入口可以保留4个需求,在入口自输出缓冲器移除之前,它占用4个时钟周期把数据送到合适的目的地。
图5显示了图3与图4的组件部份的详细方块图。具体的,图5显示L2高速缓存存储器210内部合并需求和命中测试阶段的相关组件。图5的描述预设如上所述的数据结构,应该感谢多种变化的各式缓存器的特别的价值,且未背离本发明概念的精神范围。
从上述的数据结构回忆,L2高速缓存存储器210的输入数据包含32位地址部分和512位的数据部分。进入的需求,Xin CH0和Xin CH1,皆被分成两部分,即,32位地址部分和512位的数据部分。于Xin CH0的32位地址部分被放置在缓冲器地址0 502里,于Xin CH0的512位数据是放在写入数据缓冲器508里。写入数据缓冲器508,于这个实施例,多达4个入口。与此类似,XinCH1的32位地址部分被放置在缓冲器地址1504里,而Xin CH1的512位数据被放在写入数据缓冲器508里。
如果有任何待决的入口,这些待决的入口被保持在待决需求队列(pending request queue)506里。为了确定是否各式的需求(或者入口)可能被合并,在待决需求队列506里的各种地址与在缓冲器地址0502和地址1504里的地址相比较。对于一些实施例,5个比较器510a...510e被用来比较不同的换更的地址。这些比较器510a...510e鉴定那些缓冲器内的入口是否被合并。
在图5明确的实施例方面。第一个比较器510a以Xin CH0数据(简单的指定为″cur0″)的现在地址,其在缓冲器地址0 502里;与Xin CH0(指定为″pre0″)的先前地址,其在待决需求队列506里相互比较。如果需求pre0与cur0相符,那些需求和那些入口被合并需求入口逻辑(merge request entries)512合并。返回目的ID(return destination ID)和合并入口的地址被更新需求队列逻辑(update request queue)514纪录在待决需求队列506。
第2个比较器510b以Xin CH1数据的现在地址(指定为″cur1″),其在地址1缓冲器504与pre0作比较。如果cur1与pre0相符,合并需求入口逻辑512使cur1与pre0合并,更新需求队列逻辑514更新待决需求队列506的返回目的ID和合并入口地址或需求。
第3个比较器510c比较cur0与Xin CH1的先前地址(指定为″pre1″)。如果cur0和pre1相符,合并的需求入口逻辑512使cur0与pre1合并,更新需求队列逻辑514更新待决需求队列506的返回目地ID和合并入口地址或需求。
第4个比较器501d比较cur1和pre1。如果cur1和pre1之间相符,合并的需求入口逻辑512使cur1与pre1合并。更新需求队列逻辑514的返回目地ID与合并入口地址或需求更新待决需求队列506。
如果队列里先前的入口(pre0和pre1)与进入的需求(cur0和cur1)不相符,队列就会新增一个入口。
第5个比较器510e比较cur0和cur1决定两个需求是否相符。如果两个进来的需求在相同的高速缓存存储器存界,那些进来的需求合并需求入口逻辑512合并。换言之,如果两个进入的需求相符,就会被合并。更新需求队列逻辑514更新待决需求队列506的目的ID与合并需求地址。
从图5的实施例。比较4个地址(cur0,cur1,pre0,pre1),在这些实施例,合并需求入口逻辑512可达4个入口,每个入口皆有独特的地址。此外,当待决需求队列506达4个入口时,如图5的实施例,只有前两个入口与现在的需求相比较。因此,对于这个实施例来说,在队列中如果超过两个入口,L2将停止接收自EU输出(或者纵横开关)220的需求。
如上要点,L2高速缓存存储器210也包含写入数据缓冲器508,其保留自纵横开关220的写入需求数据。对于图5的实施例来说,写入数据缓冲器508达4个数据入口。当缓冲器满溢时,L2高速缓存存储器210停止接收来自纵横开关220的需求。缓冲器的指针纪录着需求地址入口,其稍后用来加载进入L2高速缓存存储器RAM 436的写入需求数据。
图5的L2高速缓存存储器210,进一步包含命中测试仲裁器416。命中测试仲裁器416自Xin FIFOs 402,404选择两个有效入口(X0和X1),一入口(VC)来自VCin FIFO 406,一入口(TG)从T#需求输入FIFO 408。这选择基于先前周期的有效状态。尽可能,两个入口不应该选自相同的设置。仲裁的结果传给更新需求队列逻辑514,在目前的周期内被选择的入口被任何合并的需求所更新。然后这入口依照待决需求队列506移除,并且送至下一个阶段至命中测试。待决需求队列506在目前的时钟周期内被合并的需求所更新,并且移除送至下个阶段命中测试的入口。
对于图4与图11描述的,命中试验仲裁计划能使用桶移位器与独立控制的移位多任务器MUXes,但是也能被使用其它知名的技术实现。图11的构造。每个周期多达二个需求(命中测试需求0 516,命中测试需求1518)被送到命中测试单元418。尽可能,两个需求最好不要在相同的高速缓存存界也不要在相同的设置(set)。于此实施例,每个设置有只一个需求,无复杂的最近最少被使用者(least-recently used)(LRU)与必要的替换计划。30位地址的[6:12]位可被用作索引查询L2卷标RAM 520的4个标签,17个最高有效位(most significant bits)(MSBs)地址的可与这4个标签比较以找到相符。
如果有个命中(hit)在L2高速缓存存储器210,然后这个地址沿着字符选择,补偿,返回目的ID被送往下一阶段,这些附属在命中试验入口的地址可多达四个需求。如果在L2高速缓存存储器210上有个遗漏,随后存界地址和其它需求讯息会写入64-入口(64-entry)遗漏需求表530。相同的,如果有命中遗漏(hit-on-miss)(于下面描述),随后存界地址和其它需求讯息会写入64-入口遗漏需求表530。遗漏读取需求表422和遗漏写入需求表420的数据结构于分别于图7与图8有非常详细的讨论。如果在L2高速缓存存储器210内有来自下一阶段(subsequent stages)的任何背压(back-pressure)此命中测试仲裁计划尽可能考虑管线失速(pipeline stalls)问题。
图7描绘了遗漏读取需求表422的入口结构。遗漏读取需求表格422位于L2高速缓存存储器210内部并纪录L2高速缓存存储器210的遗漏信息。值得注意的,L2高速缓存存储器210能连续接收需求,尽管L2高速缓存存储器210存在读取遗漏问题。遗漏读需求放置于遗漏读需求表422,主存储器需求被讨论,于下面有详细描述。当主存储器需求返回,遗漏读取需求表格422会被搜寻找到返回地址。因此,新获得的返回地址便没有被存储于高速缓存存储器。
不同于遗漏读需求表格422,传统的高速缓存存储器经常使用等待时间FIFO(latency FIFO)。这种等待时间FIFO把全部需求放置在FIFO内。因此,不管在高速缓存存储器上有无命中,传统的高速缓存存储器中所有需求都通过等待时间FIFO处理。令人遗憾,在传统的等待时间FIFO里,不管那些需求是否命中或者遗漏,全部都要等到等待时间FIFO完成整个循环。因此,对一个等待时间FIFO(大约是200个入口深度),对于下个需求一单独的读入遗漏会导致不想要的等待时间结果。例如,若有第一个读取遗漏在高速缓存存界0(cache line 0),但是读取命中在高速缓存存界1和2,这时,对于等待时间FIFO来说,在高速缓存存储器了解有读取遗漏之前,读取需求在高速缓存存界1和2必须等到读取需求在高速缓存存界0清除等待时间FIFO。
不管面前的遗漏读取需求,读入遗漏需求表422允许通过命中缓冲读取需求。因此,当L2高速缓存存储器210有读取遗漏时,通过遗漏读取需求表422这读取遗漏缓冲起来,而其余的读取需求则全部通过。例如,若有第一个读取遗漏在高速缓存存界0(cache line 0),但是读取命中在高速缓存存界1和2,这时,遗漏读取需求表格422,读取遗漏在高速缓存存界0是被遗漏读取需求表422所缓冲(is buffered),而高速缓存存界1和2上的读取需求则通过L2高速缓存存储器210。遗漏读需求表422的具体实施例提供如下。
在图7的实施例方面。遗漏读取需求表422允许32个入口。每个入口被分成12位的卷标与31位的需求讯息。卷标包含一个1位的有效/无效的标志(V),一个9位的高速缓存存界号码(CL),和一2位遗漏参考号(MR)。需求讯息,对于这个实施例来说,包含4位的目的单位ID号码(U7),一个2位的入口型别(E7),一个5位的线程ID(T7),一个8位的缓存器文件指针(CRF),一个2位的光照模型讯息(S7),以及一个10位的工作顺序ID(TS7)。
如果于L2高速缓存存储器210有读取遗漏,遗漏读取需求表422就会被搜寻,与CL有关的和其它需求讯息(例如,U7,E7,T7,CRF,S7,TS7,等等)存储于随意选择的入口。除存储CL和其它相关的讯息之外,被选择的2位高速缓存存界遗漏预先计数器(pre-counter)(MR)是增量的,且计数器的值会被复制到入口表。
如果在L2高速缓存存储器210有读取命中,预先计数器会与在后计数器(post-counter)不相等(″命中-遗漏″),随后遗漏读取需求表422就建立新的入口。对于命中-遗漏,被选择的高速缓存存界的预先计数器无增量。
如果在L2高速缓存存储器210有读取命中,预先计数器会与在后计数器(post-counter)相等(″命中″),随后遗漏读取需求表422就建立新的入口。需求被送到L2高速缓存存储器RAM 436直接读取。
图8是说明遗漏写入需求表格420的入口结构。不像遗漏读取需求,遗漏写入需求是相对的大,因为写入需求包含地址和相应数据要写入。写入需求的大小,存储所有的遗漏写入需求是要大量耗费空间。相反,太少缓冲空间,窃取高速缓存存储器空间的相关问题可能出现。
传统的高速缓存存储器通常提供写透式(write-through),其存取出外部存储器来取回写入遗漏数据。遗憾的是这样的写透式机制导致存储器的数据流量的增加。这增加的数据流量是相对无效率的。
与传统的写透式机制不同,图8的遗漏写入需求表420允许贮存L2高速缓存存储器210自己内部的遗漏写入需求地址,与屏蔽一起的标志与数据皆沾污。如此,数据被保存在L2高速缓存存储器210上。当数据被标记成沾污时,沾污存界(dirty line)被另一个相同数据的写入需求替代。例如,当一存储在L2高速缓存存储器210的沾污存界屏蔽,这个屏蔽在命中测试阶段与随后的写入需求相比。如果这个被存储的屏蔽与写入需求相符,然后,这个新数据将替之前的遗漏写入需求数据。具体实施例的遗漏写入需求表420提供如下。
图8的实施例方面,遗漏写入需求表420允许16个入口。每个入口分成12位的卷标和64位的写入屏蔽。这个遗漏写入需求表420的12位卷标,于此实施例,与遗漏读取需求表格422的12位卷标是相同的。12位的卷标包含一面1位的有效/无效的标志(V),一个9位的高速缓存存界号码(CL),和一个2位的遗漏参考号(MR)。这个写入屏蔽,于此实施例,包含4个16位屏蔽,每个皆是一个存储体(存储体0屏蔽(B0M),存储体1屏蔽(B1M),存储体2屏蔽(B2M),以及存储体3屏蔽(B3M))。
如果在L2高速缓存存储器210有写入遗漏,则遗漏写入需求表420被搜寻,高速缓存存界地址(CL)存储于随意被选择的入口,并相应更新写入屏蔽。2位的高速缓存存界遗漏预先计数器(pre-counter)(MR)是增量的,且计数器的值会被复制到遗漏写入需求表420。
在增量前如果遗漏预先计数器(miss pre-counter)与遗漏在后计数器(miss post-counter)相等,随后写入数据与最初(original)的写入屏蔽一起被直接送到L2高速缓存存储器RAM 436。增量前如果遗漏预先计数器与遗漏在后计数器不相等(遗漏-在-遗漏),然后返回数据缓冲器(return data buffer)428搜寻发现一随意入口(free entry)保持写入的数据。关于返回数据缓冲器428的结构于图9有非常详细描述。
如果L2高速缓存存储器210有写入命中,并且预先计数器不等于在后计数器(″命中遗漏″),随后遗漏写入需求表420搜寻发现一与相同的高速缓存存界地址(CL)和遗漏计数(MR)相符的入口。如果发现这样的入口,之后更新写入屏蔽与最初的写入屏蔽(其发现于遗漏写入需求表420)合并。
与遗漏写入需求表420一起搜寻,返回数据缓冲器(return data buffer)428是被搜寻相同的高速缓存存界地址(CL)与遗漏计数(MR)的入口。如果在返回数据缓冲器428找到这种相符(″命中-在-遗漏-在-遗漏″),其写入数据被送到返回数据缓冲器428。不过,如果在返回数据缓冲器428(″命中遗漏″)没有找到这种相符,则写入数据被送到L2高速缓存存储器RAM436,一起合并更新写入屏蔽。
如果在L2高速缓存存储器210有写入命中,并且预先计数器等于在后计数器(″写入命中″),写入数据与最初的写入屏蔽会一起被直接送到L2高速缓存存储器RAM 436。对于所有的写入命中需求,遗漏预先计数器(MR)没有增量。
对一些实施例,如果一置换存界(replaced line)在读取遗漏或写入遗漏被沾污,命中测试单元418首先发布读取需求自MXU 205读取沾污存界。之后,写入数据在下一个周期送出。
在命中测试仲裁阶段后,各式的入口与需求被仲裁并且送给L2高速缓存存储器RAM 436。自命中测试阶段这些入口包含读/写需求,读取需求来自遗漏需求FIFO,并且写入需求来自MXU 205。在事件中在相同的周期中不同来源的需求进入相同的存储体,在这个实施例中MXU写入需求有最高优先权。此外,为这个实施例,遗漏需求FIFO有第2高的优先权,而命中测试结果有最低的优先权。需求从相同来源指向不同存储体,为了使处理能力最大化那些需求不计顺序。
对一些实施例来说,输出仲裁在返回数据可以输出仲裁器450使用循环演算模式(round-robin fashion)表现。对于这样的实施例来说,返回的数据能包含自纵横开关(Xin CH0和Xin CH1)读取需求,从顶点高速缓存存储器(VC)读取需求,从T#暂存(TAG/EUP)器读取需求。如上要点,每个入口能保持多达4个需求,在入口被输出缓冲器除去之前,它会使用4个时钟周期把数据送到合适的目的。
在高速缓存遗漏,一需求至MXU 205被送到待决MXU需求FIFO 424。对一些实施例来说,待决MXU需求FIFO 424包含多达16个待决的需求入口。在第四和图5的实施例方面,L2高速缓存存储器210对存储器允许多达四个写入需求(16个总待决的需求入口之外)。于读取需求,9位返回L2高速缓存存界地址(LC)和2位遗漏参考数号(MR)与虚拟存储器地址一起被送到MXU 205。当数据被从MXU 205返回时LC和MR随后能用来寻找在遗漏读取需求表422入口。
图9是说明返回数据缓冲器428的入口结构。在图9的实施例方面,返回数据缓冲器428包含多达4个插槽(0,1,2,3)。每个插槽被分成一12位的卷标和2048位的数据部分。返回数据缓冲器428的12位卷标,于本实施例,与遗漏读取需求表格422和遗漏写入需求表420的12位卷标相同。12位的卷标包含1位的有效/无效标志(V),一个9位的高速缓存存界号码(CL),和一2位遗漏参考号(MR)。这2048位的数据部分,于这个实施例来说,包含4个512位存储体(存储体0(B0D),存储体1(B1D),存储体2(B2D),以及存储体3(B3D))。对于一些实施例来说,第一个槽(0)用于旁路(bypass),其余的槽(1,2,3)用于在遗漏-在-遗漏需求(miss-on-miss request)。
在高速缓存存储器L2上写入遗漏,如果那些预先计数器与在后计数器在增量前号码不相同(″遗漏-在-遗漏″),返回数据缓冲器428被搜寻发现随意入口来保持部分写入数据。在L2高速缓存存储器读取遗漏-在-遗漏(miss-on-miss),返回数据缓冲器428被搜寻发现一随意入口自MXU 205接收返回的数据。被选择的入口与高速缓存地址存界号码(CL)和遗漏预先计数(MR)一起被标记。如果3个槽(1,2,3)已经分发遗漏-在-遗漏需求,于某些实施例,命中测试的阶段将被停止。
当返回数据从MXU 205到达返回数据缓冲器428,这3个槽(1,2,3)被搜寻与相同高速缓存存界地址号码(CL)和遗漏计数(MR)相符。如果那些与输入返回数据皆不相符,之后输入返回数据被存储在旁路槽(0)。在下一个时钟存储数据与遗漏写入需求表420里与所指定的更新写入屏蔽一起被送到L2高速缓存存储器RAM 436。如果找到相符的数据,根据写入-遗漏-初始(write-miss-initiated)存储器需求的更新写入屏蔽,数据与入口合并于缓冲器。应当指出的是读取-遗漏-初始存储器需求的数据直接填入缓冲器。
对于一些实施例,只有在数据有相同的高速缓存存储器地址时命令才会写入L2高速缓存存储器210并保存。当数据准备好时,不同的高速缓存存界的其它数据被写进L2高速缓存存储器里。
图10说明返回需求队列(return request queue)430的入口结构。图10的实施例方面。返回需求队列430最高包含64个入口。对于这个实施例来说,64个入口中的每个入口包含一9位的高速缓存存界号码(CL),一2位的遗漏参考号(MR),以及4个有效的位(B0V,B1V,B2V,B3V),每个皆是4个数据存储体。
当一个读自返回数据缓冲器428的数据入口并且送到L2高速缓存存储器RAM 436时,新的入口加入返回需求队列430存储高速缓存存界地址(CL)和遗漏计数(MR)。另外,初始化所有的有效位(B0V,B1V,B2V,B3V),例如,将所有有效位设为″1″。
每个存储体有4个返回需求控制状态机(return request control state machine)432。每个返回需求控制状态机432读取第一个表入口(first table entry)且其有效的位已经被相应设定了。例如,第一个状态机,相应第一个存储体,读入的第一个入口B0V被设为″1″,诸如此类。每个循环,状态机使用高速缓存存界地址(CL)和遗漏计数(MR)遗漏读取需求表格422是为了搜寻相符的数据。如果相符,相符的入口被处理且需求被寄到L2 R/W仲裁器434。
对于一些实施例来说,这些送到L2 R/W仲裁器434的需求的优先权比返回数据缓冲器428的需求更低,但是比命中测试单元418的需求高。需求至L2R/W仲裁器434之后假定存取自L2高速缓存存储器RAM 436是读取,入口被释放且被标示为无效的(位设为″0″)。
在特定的存储体(由CL和MR认定)的遗漏读取需求表格422的所有相符入口被执行后,在返回需求队列430的相应入口的有效位被设为″0″。当入口的4个的有效位被重置(reset)为″0″时,存界的遗漏在后计数器被增加,返回需求队列430的入口被移除。换句话说,当4个存储体的待决需求的特定存界被提供,存界的遗漏在后计数器被增加,返回需求队列430的入口被移除。
一起搜寻返回数据缓冲器428与更新遗漏计数值(updated miss conter value)(MR)。如果在遗漏-在-遗漏需求(miss-on-miss request)槽里找到相符数据,则插槽的入口数据搬进L2高速缓存存储器RAM 436,一新入口被加入返回需求队列430。
图1到图11显示,就降低需求队列重复的需求而言,L2高速缓存存储器210的需求合并大大的提高了处理效率。
另外,遗漏读取需求表422和遗漏写入需求表420与传统受延迟时间问题(latency problems)所苦的等待时间FIFO相比允许较快处理程序。
各式的逻辑组件尽可能地使用任何的或者结合下列技术以硬件实现,这些全部是众所周知的技术:一条离散的逻辑电路其逻辑门根据数据信号实现逻辑函数,特定用途集成电路(ASIC)有合适的组合逻辑门,一个可编程门阵列(PGA),一个现场可编程门阵列(FPGA),等等。
虽然示范的实施例已经被显示并且描述,它将清楚对于一般的技术有一定数量的变化,修改,或者改变已披露的被创造的描述。例如,在图6到图10提供参考数据结构的特定位值,应该感激这些提供的值仅仅为说明的目的。所考虑的是,这些***的特别的构造可能被改变,并且在位值的相应变化可被执行符合这样的构造。
另外,当4个存储体的实施例显示于上时,为符合特定处理器构造的各式设计需求,数据存储体的数量能被增加或者减少。尽可能的,数据存储体的数目是任意数的2次方。对其他实施例来说,构造不必局限于这样的数目。
在披露范围内,所有的变化,修改,和改变应该因此被看见。
本案要求于2005年9月19日提交的美国中请案11/229,884的优先权。
本申请所对应的美国申请案与以下待决美国专利申请有关,其与本发明同一日提交并具有共同受让人以及至少一个共同发明人。
序号 提交日期 发明名称
11/229,808 9/19/2005 Selecting Multiple Threads for
Substantially Concurrent
Processing
11/229,939 9/19/2005 Buffering Missed Requests in
Processor Caches
Claims (12)
1.一种处理***,包含:
一执行单元池,具有多个执行单元;以及
一高速缓存存储器,连接到该执行单元池,该高速缓存存储器包含:
一第一输入缓冲器,于一个时钟周期期间自该执行单元池接收第一需求;
一第二输入缓冲器,于该时钟周期期间自该执行单元池接收第二需求;
一待决需求队列,用以保持一先前需求,该先前需求是于前一个时钟周期期间接收到的;
一第一比较器,比较该第一需求和该第二需求以决定两者是否相符;
一第二比较器,比较该第一需求和该先前需求以决定两者是否相符;
一第三比较器,比较该第二需求和该先前需求以决定两者是否相符;
一合并逻辑,当该第一需求与该第二需求相符时则将两者合并,当该第一需求与该先前需求相符时则更进一步将两者合并,当该第二需求与该先前需求相符时则更进一步将两者合并。
2.如权利要求1所述的处理***,其中所述的高速缓存存储器还包含:
命中测试的执行装置。
3.如权利要求2所述的处理***,其中所述的高速缓存存储器还包含:
一高速缓存随机存取存储器;以及
仲裁该高速缓存随机存取存储器的读取需求与写入需求的装置。
4.如权利要求3所述的处理***,其中所述的高速缓存存储器还包含如下两者之一:
仲裁该高速缓存存储器输出的装置;
更新该待决需求队列的装置。
5.一种高速缓存存储器,包含:
一比较器,比较第一需求和第二需求以决定两者是否相符;以及
一合并逻辑,当该第一需求与该第二需求相符时则将两者合并;
其中该第一需求与该第二需求为如下三种情况之一:
该第一需求是来自一第一输入缓冲器的一个进入需求,且该第二需求是来自一第二输入缓冲器的一个进入需求;
该第一需求是来自一输入缓冲器的进入需求,且该第二需求是来自该输入缓冲器的先前储存需求;
该第一需求是来自一第一输入缓冲器的进入需求,且该第二需求是来自一第二输入缓冲器的先前储存需求。
6.如权利要求5所述的高速缓存存储器,还包含:
一需求队列,用以保持一需求,该需求是从下列的群组中所选出:
来自一第一输入缓冲器的一先前储存需求;
来自一第二输入缓冲器的一先前储存需求;以及
一合并需求。
7.如权利要求6所述的高速缓存存储器,还包含:
更新装置,当该第一需求与该第二需求合并时,则以该合并需求来更新该需求队列。
8.如权利要求7所述的高速缓存存储器,其中,该更新装置为更新逻辑电路,当该第一需求不同于该第二需求时,该更新逻辑电路用以维护该需求队列中的需求。
9.如权利要求8所述的高速缓存存储器,还包含:
一高速缓存随机存取存储器;与
一高速缓存读/写仲裁器,用以仲裁该高速缓存随机存取存储器的读取需求,该高速缓存读/写仲裁器还用以仲裁该高速缓存随机存取存储器的写入需求。
10.如权利要求9所述的高速缓存存储器,还包含:
一输出仲裁器,用以仲裁该高速缓存存储器的输出。
11.一种高速缓存存储器处理方法,包含下列步骤:
决定一高速缓存存储器内的第一需求与第二个需求是否相符;以及
当该第一需求与该第二个需求相符时,则将两者合并;
其中所述的决定步骤包含如下三者之一:
决定第一输入缓冲器的需求与第二输入缓冲器的需求是否相符;
决定输入缓冲器的需求与该输入缓冲器的先前储存需求是否相符;
决定第一输入缓冲器的进入需求与第二输入缓冲器的先前储存需求是否相符。
12.如权利要求11所述的高速缓存存储器处理方法,还包含以一更新需求来更新该高速缓存存储器的需求队列,该更新需求系从下列的群组中选出:
自第一输入缓冲器的先前储存需求;
自第二输入缓冲器的先前储存需求;和
一合并需求。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/229,884 | 2005-09-19 | ||
US11/229,884 US20070067567A1 (en) | 2005-09-19 | 2005-09-19 | Merging entries in processor caches |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1967506A CN1967506A (zh) | 2007-05-23 |
CN1967506B true CN1967506B (zh) | 2010-10-06 |
Family
ID=37885581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006101398878A Active CN1967506B (zh) | 2005-09-19 | 2006-09-19 | 高速缓存存储器处理器中的合并入口 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20070067567A1 (zh) |
CN (1) | CN1967506B (zh) |
TW (1) | TW200713029A (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070153015A1 (en) * | 2006-01-05 | 2007-07-05 | Smedia Technology Corporation | Graphics processing unit instruction sets using a reconfigurable cache |
US20100250651A1 (en) * | 2009-03-31 | 2010-09-30 | Inventec Corporation | Data access method for making asynchronous request to block device |
US8301865B2 (en) * | 2009-06-29 | 2012-10-30 | Oracle America, Inc. | System and method to manage address translation requests |
US9361165B2 (en) * | 2009-12-03 | 2016-06-07 | International Business Machines Corporation | Automated merger of logically associated messages in a message queue |
US8370582B2 (en) * | 2010-01-26 | 2013-02-05 | Hewlett-Packard Development Company, L.P. | Merging subsequent updates to a memory location |
US8447932B2 (en) * | 2010-06-22 | 2013-05-21 | International Business Machines Corporation | Recover store data merging |
US8359433B2 (en) * | 2010-08-17 | 2013-01-22 | Intel Corporation | Method and system of handling non-aligned memory accesses |
US9684601B2 (en) * | 2012-05-10 | 2017-06-20 | Arm Limited | Data processing apparatus having cache and translation lookaside buffer |
US9892125B1 (en) * | 2014-05-23 | 2018-02-13 | MapD Technologies, Inc. | Method for logging update queries |
CN104778131B (zh) * | 2015-04-29 | 2017-07-21 | 浪潮电子信息产业股份有限公司 | 一种数据缓存方法及一种缓冲存储器 |
US9626232B2 (en) * | 2015-07-23 | 2017-04-18 | Arm Limited | Event queue management |
US11099990B2 (en) * | 2019-08-20 | 2021-08-24 | Apple Inc. | Managing serial miss requests for load operations in a non-coherent memory system |
US20220374359A1 (en) * | 2021-05-19 | 2022-11-24 | Apple Inc. | Multi-block Cache Fetch Techniques |
CN117742793B (zh) * | 2023-11-01 | 2024-07-02 | 上海合芯数字科技有限公司 | 数据缓存指令的指令合并电路、方法及芯片 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5809530A (en) * | 1995-11-13 | 1998-09-15 | Motorola, Inc. | Method and apparatus for processing multiple cache misses using reload folding and store merging |
US6055605A (en) * | 1997-10-24 | 2000-04-25 | Compaq Computer Corporation | Technique for reducing latency of inter-reference ordering using commit signals in a multiprocessor system having shared caches |
US6336168B1 (en) * | 1999-02-26 | 2002-01-01 | International Business Machines Corporation | System and method for merging multiple outstanding load miss instructions |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5615343A (en) * | 1993-06-30 | 1997-03-25 | Intel Corporation | Method and apparatus for performing deferred transactions |
US6321303B1 (en) * | 1999-03-18 | 2001-11-20 | International Business Machines Corporation | Dynamically modifying queued transactions in a cache memory system |
US7941585B2 (en) * | 2004-09-10 | 2011-05-10 | Cavium Networks, Inc. | Local scratchpad and data caching system |
-
2005
- 2005-09-19 US US11/229,884 patent/US20070067567A1/en not_active Abandoned
-
2006
- 2006-09-19 TW TW095134603A patent/TW200713029A/zh unknown
- 2006-09-19 CN CN2006101398878A patent/CN1967506B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5809530A (en) * | 1995-11-13 | 1998-09-15 | Motorola, Inc. | Method and apparatus for processing multiple cache misses using reload folding and store merging |
US6055605A (en) * | 1997-10-24 | 2000-04-25 | Compaq Computer Corporation | Technique for reducing latency of inter-reference ordering using commit signals in a multiprocessor system having shared caches |
US6336168B1 (en) * | 1999-02-26 | 2002-01-01 | International Business Machines Corporation | System and method for merging multiple outstanding load miss instructions |
Non-Patent Citations (1)
Title |
---|
US 6336168 B1,全文. |
Also Published As
Publication number | Publication date |
---|---|
CN1967506A (zh) | 2007-05-23 |
US20070067567A1 (en) | 2007-03-22 |
TW200713029A (en) | 2007-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1967506B (zh) | 高速缓存存储器处理器中的合并入口 | |
US8732711B2 (en) | Two-level scheduler for multi-threaded processing | |
CN104699631B (zh) | Gpdsp中多层次协同与共享的存储装置和访存方法 | |
US6732242B2 (en) | External bus transaction scheduling system | |
US8639882B2 (en) | Methods and apparatus for source operand collector caching | |
CN102375800B (zh) | 用于机器视觉算法的多处理器片上*** | |
CN100447759C (zh) | 缓冲高速缓冲存储器要求的处理器与该缓冲存储器及方法 | |
US9158595B2 (en) | Hardware scheduling of ordered critical code sections | |
US10255228B2 (en) | System and method for performing shaped memory access operations | |
US9448803B2 (en) | System and method for hardware scheduling of conditional barriers and impatient barriers | |
CN104750460B (zh) | 超线程微处理器中经线程优先级提供服务质量 | |
US20080282034A1 (en) | Memory Subsystem having a Multipurpose Cache for a Stream Graphics Multiprocessor | |
US12019555B2 (en) | Cache with set associativity having data defined cache sets | |
US20120079200A1 (en) | Unified streaming multiprocessor memory | |
CN1220150C (zh) | 具有可配置的高速缓存/静态随机存取存储器的*** | |
US20110078225A1 (en) | Extended-Precision Integer Arithmetic and Logical Instructions | |
US20010034817A1 (en) | Read/write alignment scheme for port red uction of multi-port SRAM cells | |
CN109997109A (zh) | 具有提取提前滞后的流引擎 | |
US6427189B1 (en) | Multiple issue algorithm with over subscription avoidance feature to get high bandwidth through cache pipeline | |
WO2021021490A1 (en) | Spare cache set to accelerate speculative execution | |
CN105393210A (zh) | 用于模拟共享存储器结构的存储器单元 | |
US7454580B2 (en) | Data processing system, processor and method of data processing that reduce store queue entry utilization for synchronizing operations | |
CN107729267A (zh) | 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构 | |
US6557078B1 (en) | Cache chain structure to implement high bandwidth low latency cache memory subsystem | |
WO2021021443A1 (en) | Cache systems for main and speculative threads of processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20201120 Address after: 6 floor, G District, No. 666, Beijing East Road, Huangpu District, Shanghai Patentee after: Weisheng Electronics (Shanghai) Co.,Ltd. Address before: Taiwan County, Taipei, China Patentee before: Via Technologies, Inc. |