多类数据高速缓存策略的制作方法

文档序号:6583879阅读:221来源:国知局
专利名称:多类数据高速缓存策略的制作方法
技术领域
本发明一般地涉及存储器管理领域,且更特别地,涉及多类数据高速缓存策略。 在一定的处理单元中的存储器子系统的一个元件是二级高速缓存存储器(此处 称为"L2高速缓存")。L2高速缓存是大的片上存储器,其用作在外部存储器(例如帧缓冲 器存储器)和存储器子系统的内部客户端(此处称为"客户端")之间的中间点。L2高速 缓存临时地存储各种客户端正在使用的数据。该数据可以从外部存储器中获得或写入外部 存储器(此处称为"DRAM")。客户端可以再使用存储在L2高速缓存中的数据同时实施一 定的操作。 在读操作期间,客户端可以从L2高速缓存中请求当前未存储在L2高速缓存中的 数据,因此该数据必须要从DRAM中获得。必须从DRAM中获得数据的读操作比直接从L2高 速缓存中获得数据的读操作要以明显更多的时钟周期来处理。因此,如果非常多数目的读 操作的数据必须从DRAM获取,那么总体系统性能会严重地影响。但是,由于分配给L2高速 缓存的存储器空间是限制的,因此驻存在L2高速缓存的数据需要惯常地逐出以为由客户 端发送的将来的读或写操作释放存储器空间。如果驻存在L2高速缓存上的数据没有足够 频繁地逐出,那么将来的读和写操作必须停止直到L2高速缓存中有空间来处理那些操作。 再次,这样的动态能明显地影响总体系统性能。 常规逐出方案通常实施最少最近使用的数据从高速缓存逐出的策略。但是,在一 定的系统中,其中数据的使用形式改变,这样的方法可能不会达到在快速地逐出数据以为 将来的读和写操作制造空间和允许数据在高速缓存中保留足够长的时间以再使用而避免 向外部存储器请求数据之间的合适的平衡。 如前所说明,本领域需要的是确定哪些数据应当首先从中间高速缓存(例如L2高 速缓存)中逐出的更有效的机制。 本发明的一个实施例阐明了一种用于从耦合于一个或多个客户端和外部存储器 的中间高速缓存逐出数据的方法。该方法包括下列步骤从客户端接收包括相关存储器地 址的命令;在中间高速缓存中识别一个或多个高速缓存行以基于存储器地址存储与命令相 关的数据;确定相对于一个或多个高速缓存行存在高速缓存缺失;和基于与驻存在一个或 多个高速缓存行中的数据相关的一个或多个逐出类使得驻存在一个或多个高速缓存行中 的数据的至少一部分逐出,或停止该命令,其中每个逐出类反映了与逐出类相关的数据由 客户端或不同的客户端再使用的不同的可能性。 公开的方法的一个优点是,与存储在数据高速缓存中的数据相关的数据类允许当 给与进入的读或写命令相关的数据制造空间时,标记查找单元将具有最少再使用可能性的 数据逐出。该逐出数据的机制降低了对可能由系统中的客户端再使用的数据的早期逐出造
背景技术

发明内容
4成的高速缓存缺失的数目。


为了详细地理解本发明的上述特征,对于以上简要说明的本发明,将参照实施例 进行更为具体的描述,其中对一些实施例在附图中进行了图示。然而,需要注意的是,附图 只是图示本发明的代表性实施例,因此不能认为附图限制了本发明的范围,本发明可以允 许其他同样有效的实施例。
图1是图示配置为实现本发明一个或多个方面的计算机系统的框图;
图2是根据本发明一个实施例的图1中的计算机系统的并行处理子系统的框图;
图3A是根据本发明一个实施例的图2中的并行处理单元之一中的通用处理簇的 框图; 图3B是根据本发明一个实施例的图2中的并行处理单元之一中的分区单元的框 图; 图4是根据本发明一个实施例的图3B的分区单元的详细的框图;禾口 图5A-5D阐明了根据本发明一个实施例的用于管理数据流入和流出图4的数据高
速缓存的方法步骤的流程图。
具体实施例方式
在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然 而,对于本领域技术人员来说显而易见的是,本发明可以无需一个或多个这些具体细节而 得以实施。在其他的例子中,为了避免与本发明发生混淆,对于公知的特征未进行描述。
系统概述 图1是图示配置为实现本发明一个或多个方面的计算机系统100的框图。计算 机系统100包括中央处理单元(CPU) 102和系统存储器104,二者通过存储器桥105经由总 线路径进行通信。存储器桥105可以如图1所示集成到CPU 102中。作为替换,存储器桥 105可以是惯常设备例如北桥芯片,其通过总线连接到CPU 102。存储器桥105通过通信路 径106 (例如HyperTransport (超传输)链路)与1/0(输入/输出)桥107相连接。I/O 桥107例如可以是南桥芯片,其从一个或多个用户输入设备108(例如键盘、鼠标)接收用 户输入,并将该输入通过路径106和存储器桥105转发给CPU 102。并行处理子系统112通 过总线或其他通信路径113(例如PCIE邓ress、加速图形端口或超传输链路)与存储器桥 105相耦合;在一个实施例中,并行处理子系统112是将像素提供给显示设备IIO(例如传 统的CRT或基于LCD的显示器)的图形子系统。系统盘114同样连接于I/0桥107。开关 116提供了 1/0桥107和诸如网络适配器118以及各种插卡120和121的其他部件之间的 连接。包括USB或其他端口连接、CD驱动器、DVD驱动器、电影记录设备等的其他部件(图 中没有明确示出),也可以与1/0桥107相连接。将图1中的各种部件相互连接的通信路径 可以用任何适用的协议来实现,比如PCI (外设部件互连)、PCI E邓ress(PCI-E) 、AGP(加速 图形端口 )、超传输或任何其他总线或点对点通信协议,并且不同设备之间的连接可以使用 不同协议,如本领域已知的。 在一个实施例中,并行处理子系统112包括为图形和视频处理优化的电路,包括例如视频输出电路,并构成了图形处理单元(GPU)。在另一实施例中,并行处理子系统112 包括为通用处理优化,并保留了底层计算架构的电路,本文将更加详细地描述。在另一实施 例中,并行处理子系统112可以集成一个或多个其他系统元件,例如存储器桥105、CPU 102 和I/O桥107,以形成片上系统(SoC)。 可以理解的是,这里示出的系统只是示意性的,可以对其进行变化和修改。包括桥 的数量和排列的连接拓扑结构可以根据需要修改。例如,在一些实施例中,系统存储器104 直接与CPU 102相连接而不是通过桥相连接,其他设备通过存储器桥105和CPU 102与系 统存储器104相通信。在其他可选择的拓扑结构中,并行处理系统112与1/0桥107相连 接或直接与CPU 102相连接,而不是和存储器桥105相连接。在其他实施例中,CPU102、 1/ 0桥107、并行处理子系统112和存储器桥105的一个或多个被集成到一个或多个芯片上。 这里示出的特定部件是任选的;例如,可以支持任何数量的插卡或外设。在一些实施例中, 省去了开关116,网络适配器118和插卡120、 121直接和1/0桥107相连接。
图2示出了根据本发明一个实施例的并行处理子系统112。如图所示,并行处理 子系统112包括一个或多个并行处理单元(PPU)202,每个并行处理单元都和本地并行处理 (PP)存储器204相耦合。通常,并行处理子系统包括U个PPU,其中U > 1。(在这里,相似 对象的多个例子用表明该对象的附图标记和表明该例子的附加说明数字(需要时)来表 示)。PPU 202和并行处理存储器204可以使用例如可编程处理器,专用集成电路(ASIC) 或存储器设备的一个或多个集成电路设备,或以任何其他技术上可行的方式来实现。
再次参考图l,在一些实施例中,在并行处理子系统112中的一些或者全部的并行 处理单元202是具有渲染流水线的图形处理器,其能被配置成进行与下列情形有关的各种 任务从通过CPU 102和/或系统存储器104提供的图形数据产生像素数据;与本地并行处 理存储器204 (其能被用作图形存储器,例如包括常规的帧缓冲器)交互以存储并更新像素 数据;提供像素数据给显示设备110等。在一些实施例中,并行处理子系统112可包括作为 图形处理器工作的一个或多个并行处理单元202和用于通用计算的一个或多个其他并行 处理单元202。并行处理单元可以是相同或不同的,且每个并行处理单元202可以有其自己 专用的并行处理存储器设备或没有专用的并行处理存储器设备。 一个或多个并行处理单元 202可以将数据输出到显示设备110或者每个并行处理单元202可以将数据输出到一个或 多个显示设备110。 在操作中,CPU 102是计算机系统100的主处理器,其控制和协调其他系统部件 的操作。特别是,CPU 102发出控制并行处理单元202操作的命令。在一些实施例中,CPU 102将对于每个并行处理单元202的命令流写入到命令缓冲器(图1和图2中未明确地示 出),该命令缓冲器可以位于系统存储器104、并行处理存储器204或是CPU 102和并行处 理单元202都可以访问的另一个存储位置中。并行处理单元202从命令缓冲器中读出命令 流,并且随后相对于CPU 102的操作异步地执行命令。CPU 102也可以建立数据缓冲器,并 行处理单元202可以响应命令缓冲器中的命令读取该数据缓冲器。每个命令和数据缓冲器 可以由并行处理单元202的每个读取。 现在返回参考图2,每个并行处理单元202包括通过通信路径113和计算机系统 100的剩余部分通信的1/0(输入/输出)单元205,该通信路径113与存储器桥105相连 接(或是在一个可选实施例中直接与CPU 102相连接)。并行处理单元202和计算机系统100的剩余部分的连接也可以变化。在一些实施例中,并行处理子系统112实现为插卡,其 能插入到计算机系统100的扩展槽中。在其他实施例中,并行处理单元202能和总线桥一 起集成到单一芯片上,总线桥例如可以是存储器桥105或1/0桥107。在另外其他实施例 中,并行处理单元202的一些或全部元件可以连同CPU102 —起集成到单一芯片上。
在一个实施例中,通信路径113是PCI-E链路,其中如本领域所已知的,专用通道 分配给每个PPU 202。也可以使用其他通信路径。1/0单元205产生包(或其他信号)以 在通信路径113上传送,并也接收所有来自通信路径113的输入包(或其他信号),并将输 入包引导至PPU 202的适当的部件。例如,和处理任务有关的命令可以被引导至主机接口 206,而和存储器操作有关的命令(例如从并行处理存储器204中读取或向其写入)可以被 引导至存储器交叉器(crossbar)单元210。主机接口 206读取每个命令缓冲器,并将由命 令缓冲器指定的工作输出到前端212。 每个PPU 202有利地实现高度并行处理架构。如详细示出的,PPU 202(0)包括处 理簇阵列230,处理簇阵列230包括数量为C的通用处理簇(GPC) 208,其中C > 1 。每个GPC 208能同时执行大量(例如数百个或数千个)线程,其中每个线程是程序的实例。在不同应 用中,不同的GPC 208被分配用以处理不同类型的程序或进行不同类型的计算。例如,在图 形应用中,第一组GPC 208可以分配为进行镶嵌操作并产生面片的图元拓扑,而第二组GPC 208可以分配为进行镶嵌着色以评价图元拓扑的面片参数并确定顶点位置和其他每顶点属 性。GPC 208的分配基于每个类型的程序或计算产生的工作量是可以变化的。可选择地, GPC 208可以分配为使用时间片方案进行处理任务以在不同处理任务之间转换。
GPC 208通过工作分配单元200接收将要执行的处理任务,该工作分配单元200从 前端单元212接收限定了处理任务的命令。处理任务包括例如表面(面片)数据、图元数 据、顶点数据和/或像素数据的要处理数据的指针,还有状态参数和限定数据如何处理的 命令(例如执行什么程序)。工作分配单元200可以配置成取得对应于处理任务的指针,工 作分配单元200可以从前端212接收指针,或者工作分配单元200可以直接从前端212接 收数据。在一些实施例中,索引指明了阵列中数据的位置。前端212保证在命令缓冲器指 定的处理启动前,GPC 208配置为有效状态。 例如,当并行处理单元202用于图形处理时,每个面片的处理工作量被分成大约 相等大小的任务,以使得能将镶嵌处理分配给多个GPC 208。工作分配单元200可以配置 成以能提供任务到多个GPC 208用于处理的频率输出任务。在本发明的一些实施例中,部 分GPC 208配置成进行不同类型的处理。例如,第一部分可以配置成进行顶点着色和产生 拓扑结构,第二部分可以配置成进行镶嵌和几何着色,以及第三部分可以配置成在屏幕空 间上进行像素着色以产生渲染的图像。分配部分GPC 208以进行不同类的处理任务的能力 有效地适应了由那些不同类型的处理任务产生的数据的任何扩展和縮减。GPC 208产生的 中间数据可以被缓冲,以在下游GPC 208接收数据的速度落后于上游GPC 208产生数据的 速度的情况下,允许中间数据在GPC 208之间以最少的停止传输。 存储器接口 214可以被分区成D个存储器分区单元,每个存储器分区单元与并行 处理存储器204的一部分耦合,其中D > 1。并行处理存储器204的每部分通常包括一个或 多个存储器设备(例如DRAM 220)。本领域的普通技术人员可以理解的是,DRAM 220可以 由其他合适的存储设备代替并且通常可以是惯常的设计。因此省略了详细的描述。例如帧
7缓冲器或纹理贴图的渲染目标可以跨越DRAM 220存储,允许分区单元215将每个渲染目标 的部分并行写入,以有效地使用并行处理存储器204的可用带宽。 GPC 208的任何一个可以处理要写入到并行处理存储器204中的任何分区单元 215中的数据。交叉器(crossbar)单元210配置为将每个GPC 208的输出发送至任何分区 单元215的输入或另一 GPC 208以进一步处理。GPC208通过交叉器单元210与存储器接口 214通信以从各种外部存储器设备中读取或写入各种外部存储器设备。在一个实施例中,交 叉器单元210与存储器接口 214连接以与1/0单元205通信,交叉器单元210也和本地并 行处理存储器204连接,因此使得不同GPC 208内的处理内核能与系统存储器104或对并 行处理单元202为非本地的其他存储器通信。交叉器单元210可以使用虚拟通道以在GPC 208和分区单元215之间分开通信流。 此外,GPC 208能被编程以执行与广泛多种应用相关的处理任务,所述应用包括但 不限于线性和非线性数据转换、视频和/或音频数据的过滤、建模操作(例如,应用物理规 律来确定对象的位置、速度和其他属性)、图像渲染操作(例如,镶嵌着色器、顶点着色器、 几何着色器和/或像素着色器程序)等等。并行处理单元202可以将数据从系统存储器 104和/或本地并行处理存储器204传输到内部(片上)存储器,处理数据,并将结果数据 写回到系统存储器104和/或本地并行处理存储器204中,其中这样的数据能够由包括CPU 102或另一并行处理子系统112的其他系统部件来访问。 并行处理单元202可以提供有任意数量的本地并行处理存储器204,包括没有 本地存储器,并可以以任意组合使用本地存储器和系统存储器。例如,在统一存储器架构 (UMA)的实施例中,并行处理单元202可以是图形处理器。在这样的实施例中,会提供极少 或者不提供专用图形(并行处理)存储器,并行处理单元202唯一地使用或几乎唯一地使 用系统存储器。在UMA实施例中,并行处理单元202可被集成到桥芯片或处理器芯片中,或 者是提供为具有高速链路(例如PCI-E)的分立的芯片,该高速链路将并行处理单元202通 过桥芯片或其他通信装置与系统存储器相连接。 如上所述,并行处理子系统112中可以包括任意数量的并行处理单元202。例如, 多个并行处理单元202可以提供在单个的插卡上,或者多个插卡可以与通信路径113相连, 或者一个或多个并行处理单元202可以集成到桥芯片中。多并行处理单元系统中的并行处 理单元202可以是彼此相同的,或者可以是彼此不同的。例如,不同的并行处理单元202可 以具有不同数量的处理内核、不同数量的本地并行处理存储器等等。当存在有多个并行处 理单元202时,那些并行处理单元可以以高于单个并行处理单元202可能达到的吞吐量来 并行操作以处理数据。包含有一个或多个并行处理单元202的系统可以以各种配置和形式 因素实现,包括台式计算机、笔记本计算机、或是手持个人计算机、服务器、工作站、游戏控 制台、嵌入式系统等等。
处理簇阵列概述 图3A是根据本发明一个实施例的在图2的并行处理单元202之一中的GPC 208 的框图。每个GPC 208可以配置为并行执行大量的线程,在此术语"线程"是指对一特定组 的输入数据执行的特定程序的实例。在一些实施例中,单指令多数据(SMD)指令发送技术 被用于支持并行执行大量线程,而不用提供多个独立的指令单元。在其他实施例中,使用配 置为向每个GPC 208中的一组处理引擎发送指令的共同指令单元,单指令多线程(SIMT)技术被用来支持并行执行大量通用同步线程。不像SMD执行方式中所有处理引擎通常执行 相同的指令,SIMT的执行允许不同的线程通过给定的线程程序更加容易地跟随分散的执行 路径。本领域的普通技术人员可以理解的是,SMD处理方式代表了 SMT处理方式的功能 性子集。 在图形应用中,GPC 208可以被配置为实现图元引擎以进行屏幕空间图形处理功 能,其包括但不限于图元建立、光栅化和Z剔除。图元引擎从工作分配单元200接收处理任 务,当处理任务不需要由图元引擎实施的操作时,处理任务通过图元引擎传送到流水线管 理器305。 GPC 208的操作通过流水线管理器305有利地控制,流水线管理器305将处理任 务分配给流多处理器(SPM)310。流水线管理器305也可以配置为通过为SPM 310输出的处 理的数据指定目的地来控制工作分配交叉器(crossbar) 330。 在一个实施例中,每个GPC 208包括M个SPM 310,其中M > 1,每个SPM 310配置 成处理一个或多个线程组。此外,每个SPM 310有利地包括可以流水线化的相同组的功能 单元(例如算术逻辑单元等),允许新指令在前指令完成之前发送,这已在本领域中公知。 可以提供功能单元的任何组合。在一个实施例中,功能单元支持各种运算,包括整数和浮点 算术(例如加法和乘法)、比较运算、布尔运算(与、或、异或)、移位和各种代数函数(例如 平面插值函数、三角算法函数、指数和对数函数等)计算;并且相同的功能单元硬件可以被 平衡为实施不同的运算。 传送到特定GPC 208的系列指令构成了已在本文前面定义的线程,且在SPM 310 内在并行处理引擎(未示出)上一定数量同时执行的线程的集合在本文中称为线程组。如 本文所使用的,线程组指的是对不同输入数据同时执行相同程序的线程的组,组中的每个 线程被分配给SPM 310中的不同处理引擎。线程组可以包括比SPM 310中处理引擎数量少 的线程,在这种情况中,在当处理线程组时的周期期间,一些处理引擎将是空闲的。线程组 也可以包括比SPM 310中处理引擎数量多的线程,在这种情况中,处理将发生在多个时钟 周期上。由于每个SPM 310可以同时支持多达G个线程组,因此多达GXM个线程组可以在 任何给定的时间在GPC 208中执行。 专有本地地址空间对每个线程可用,且共享的每CTA地址空间用于在CTA中的线 程之间传递数据。存储在每线程本地地址空间和每CTA地址空间中的数据存储在Ll高速 缓存320中,且可以使用逐出策略来帮助将数据保持在Ll高速缓存320中。每个SPM 310 使用在用于进行装载和存储操作的相应的L1高速缓存320中的空间。每个SPM 310也访问 所有GPC 208共享并可以用于在线程之间传送数据的分区单元215中的L2高速缓存。最 后,SPM 310也访问片外"全局"存储器,其可以包括例如并行处理存储器204和/或系统存 储器104。 L2高速缓存可以用于存储写入到全局存储器中和从全局存储器中读取的数据。 可以理解的是,并行处理单元202外部的任何存储器都可以用作全局存储器。
在图形应用中,GPC 208可以配置为使得每个SPM 310和纹理单元315耦合以进 行纹理贴图操作,例如确定纹理样本的位置、读取纹理数据和过滤纹理数据。纹理数据通过 存储器接口 214读取并按照需要从L2高速缓存、并行处理存储器204或者系统存储器104 中取得。纹理单元315可以配置为在内部高速缓存中存储纹理数据。在一些实施例中,纹 理单元315与Ll高速缓存320耦合且纹理数据存储在Ll高速缓存320中。每个SPM 310 向工作分配交叉器330输出处理的任务,以向另一 GPC 208提供处理的任务以做进一步处
9理,或通过交叉器单元210将处理的任务存储在L2高速缓存、并行处理存储器204或者系 统存储器104中。PreROP(预先光栅操作)单元325配置成从SPM 310中接收数据,引导数 据至分区单元215内的光栅操作单元,并进行颜色混合的优化,组织像素颜色数据,并进行 地址翻译。 可以理解的是,本文描述的内核架构是示例性的,可以做变化和改变。任何数量 的处理引擎,例如图元引擎304、SPM 310、纹理单元315或预先光栅操作单元325可以包括 在GPC 208中。进一步,虽然只示出了一个GPC208,并行处理单元202可以包括任何数量 的GPC 208,这些GPC 208功能上有利地彼此相似,使得执行行为不取决于哪个GPC 208接 收了特定处理任务。进一步,每个GPC 208使用单独的和不同的处理引擎、L1高速缓存320 等相对另外的GPC 208有利地独立地工作。 图3B是根据本发明一个实施例的图2中并行处理单元202其中之一中的分区单 元215的框图。如图所示,分区单元215包括L2高速缓存350、帧缓冲器(FB) 355和光栅操 作单元(ROP) 360。 L2高速缓存350是配置为进行从交叉器单元210和ROP 360接收的装 载和存储操作的读/写高速缓存。读取缺失和紧急写回请求通过L2高速缓存350输出到 帧缓冲器355处理。脏(dirty)更新也送到帧缓冲器355用于机会处理。帧缓冲器355直 接与并行处理存储器204接口 ,输出读取和写入请求,并接收从并行处理存储器204读取的 数据。 在图形应用中,ROP 360是进行光栅操作的处理单元,例如模板、z测试、混合等, 并将像素数据输出为处理的图形数据以存储在图形存储器中。在本发明的一些实施例中, ROP 360包括在每个GPC 208中,而不是在分区单元215中,像素的读和写请求通过交叉器 单元210来传送,而不是通过像素段数据。 处理的图形数据可以显示在显示设备110上,或被发送以通过CPU 102或通过并 行处理子系统112中的处理实体之一来进一步处理。每个分区单元215包括R0P 360以分 配光栅操作的处理。在一些实施例中,ROP 360可以配置为压縮写到存储器中的z或颜色 数据,并将从存储器中读取的z或颜色数据解压縮。 本领域的技术人员可以理解的是,图1、2、3A和3B中描述的架构决不限制本发明 的范围,本文中教导的技术可以在任何适合地配置的处理单元上实现,该处理单元包括但 不限于一个或多个CPU、一个或多个多内核CPU、一个或多个并行处理单元202、一个或多个 GPC 208、一个或多个图形或专用处理单元等,这些都不离开本发明的范围。
基于数据类的逐出策略 图4是根据本发明一个实施例的图3B中分区单元215的详细的框图。如图所示, 分区单元215包括L2高速缓存350、帧缓冲器355和ROP 360。 L2高速缓存350包括L2高 速缓存片402。如结合图3B描述的,L2高速缓存350可以分成两个或多个片以更有效地处 理读和写命令。L2高速缓存片402就是L2高速缓存350的一个这样的片。L2高速缓存片 402包括交叉器命令缓冲器404、 ROP命令缓冲器406、仲裁器408、标记查找单元410、标记 存储装置412、数据高速缓存414、读数据缓冲器416和写数据缓冲器418。
在操作中,L2高速缓存片402从在并行处理子系统112中的各种客户端中,例如 从GPC 208和R0P 360中接收读和写命令。从GPC 208接收的读和写命令经由交叉器单元 210传送。在写命令的情况中,与写命令相关的数据也传送到L2高速缓存片402。
由L2高速缓存片402接收的每个读或写命令包括与在数据高速缓存414中的一 组高速缓存行相关的存储器地址,其中可以存储与读或写命令相关的数据。在一个实施例 中,数据高速缓存414是物理地索引和标记的64KB的组相联的数据高速缓存。数据高速缓 存414分为四个段,其中每个段具有32排且每排具有16个32B的高速缓存行。高速缓存 行是存储与读和写命令相关的数据的数据高速缓存414中的物理位置。在任何给定的时钟 周期,在数据高速缓存414中的高速缓存行可以是空的、可以包括驻存数据或者可以为进 行中的命令保留。在本发明的一个实施例中,由于与命令相关的数据的大小,可能需要保留 多个高速缓存行以存储与命令相关的数据。本文描述的技术能容易地延伸到应当在多个高 速缓存行中存储的数据。 由L2高速缓存片402接收的读或写命令也包括与接收的命令相关的数据的数据 类。与命令相关的数据的数据类由传送特定命令的客户端确定,且如本文更详细描述的,该 数据类反映在并行处理子系统112中该数据的再使用的可能。 交叉器命令缓冲器404与交叉器单元210耦合且配置为从不同的GPC208经由交 叉器单元210接收读和写命令。ROP命令缓冲器406与ROP 360耦合且配置为从ROP 360 接收读和写命令。交叉器命令缓冲器404和ROP命令缓冲器406是FIFO(先进先出)缓冲 器,即,命令缓冲器接收的命令按照该命令从交叉器单元210或ROP 360接收的次序输出。 交叉器命令缓冲器404和ROP命令缓冲器406也与仲裁器408耦合。冲裁器408配置为使 用标准的仲裁技术以从交叉器命令缓冲器404或ROP命令缓冲器406中选择给定的命令, 并将选择的命令传送给标记查找单元410以处理。 标记查找单元410配置为确定在数据高速缓存414中是否有为与从仲裁器408接 收的命令相关的数据可用的高速缓存行。标记查找单元410也在可能时配置为通过使驻存 在数据高速缓存414中的数据逐出而使得高速缓存行为与新接收的读或写命令相关的数 据可用。 一旦在数据高速缓存414中的一个或多个高速缓存行为这样的数据可用,那么标 记查找单元410配置为为与命令相关的数据在数据高速缓存414保留识别的高速缓存行。
在数据高速缓存414中的每个高速缓存行具有相应的在标记存储装置412中的入 口 ,且在标记存储装置中的每个入口包括状态部分和标记部分。在标记存储装置中的入口 的状态部分指示对应于该入口的高速缓存行的特定状态。入口的状态部分包括有效位、脏 (dirty)位和钉住(pinned)位。当设置时,有效位指示对应于该特定入口的高速缓存行存 储有效数据。当设置时,脏位指示对应于该特定入口的高速缓存行存储脏数据。当设置时, 钉住位指示对应于该特定入口的高速缓存行存储钉住的数据,即当前由L2高速缓存350正 在使用的数据。入口的标记部分指示存储在与该特定的入口相关的高速缓存行中的数据的 数据类。如本文先前所指出的,L2高速缓存350的高速缓存语义扩展到包括三种数据类 首先逐出、正常逐出和最后逐出。属于首先逐出数据类的存储在数据高速缓存414的高速 缓存行中的数据典型地具有很少或没有由使用L2高速缓存350的客户端的任何客户端再 使用的可能。由于再使用的低可能性,该数据能快速地从数据高速缓存414中逐出以给其 他数据制造空间,而不会有造成随后的高速缓存缺失的高风险。属于正常逐出数据类的存 储在数据高速缓存414的高速缓存行中的数据典型地具有由使用L2高速缓存350的客户 端再使用的一些可能。由于再使用的可能,相比属于首先逐出数据类的数据,该数据可以以 较低的优先级逐出,而不会造成大量的随后的高速缓存缺失。属于最后逐出数据类的存储在数据高速缓存414的高速缓存行中的数据典型地具有由使用L2高速缓存350的客户端 再使用的高可能。由于再使用的高可能性,不应当为其他数据制造空间而将该数据从数据 高速缓存414中逐出,因为这样做会导致随后高速缓存缺失的高风险。在其他实施例中,L2 高速缓存350的语义可以扩展以基于并行处理子系统112的需要而包括其他数据类。
存储在高速缓存行中的数据也分类为"干净的"或"脏的",和"钉住的"或"未钉住 的"。如果存储的数据与在并行处理存储器204中的对应数据一致,那么该数据认为是干净 的。如果存储的数据与在并行处理存储器204中的对应数据不一致,那么该数据认为是脏 的。如公知的,脏数据在逐出之前应当清洗。未钉住的数据构成了当前未使用的存储在数 据高速缓存414的高速缓存行中的数据。钉住的数据构成了当前由L2使用的存储在数据 高速缓存414的高速缓存行中的数据。由于钉住的数据在使用中,因此该数据不应当逐出。 与具有驻存数据的数据高速缓存414的高速缓存行相关的在标记存储装置412中的入口的 有效位被设置。与不具有驻存数据的数据高速缓存414的高速缓存行相关的在标记存储装 置412中的入口有效位被清除。 在读命令的情况中,读数据缓冲器416配置为存储与从数据高速缓存414接收的 处理的读命令相关的数据直到该数据看情况经由交叉器单元210或ROP 360传送回GPC 208。在写命令的情况中,写数据缓冲器418配置为存储与从GPC 208看情况经由交叉器单 元210或ROP 360接收的写命令相关的数据,直到该数据传送到在数据高速缓存414的相 应的保留的高速缓存行中。 如本文先前指出的,在从仲裁器408接收命令时,标记查找单元410配置为识别在 数据高速缓存414中的一组高速缓存行,其中与接收的命令相关的数据可以潜在地存储。 该组高速缓存行(本文称为"识别的高速缓存行")基于包括在读或写命令中的存储器地址 使用标准的组相联高速缓存技术(存储器地址指示在并行处理存储器204中的实际位置, 数据从该位置读或数据最终写到该位置)确定。在读命令的情况中,标记查找单元410接 下来确定是否与命令相关的数据当前驻存在识别的高速缓存行之一中。如果是,意味着有 高速缓存命中,那么标记查找单元410使请求的数据从数据高速缓存414传送到读数据缓 冲器416,数据在其中存储直到数据返回到请求客户端。在写命令的情况中,标记查找单元 410首先确定是否与命令相关的数据能覆写当前驻存在识别的高速缓存行之一中的数据。 如果是,再次意味着有高速缓存命中,那么标记查找单元410使存储在写数据缓冲器418中 的与命令相关的数据写到数据高速缓存414相关的位置。 在高速缓存缺失的情况中,意味着与命令相关的数据未驻存在(在读命令的情况 中)或不能写到(在写命令的情况中)识别的高速缓存行之一中,那么标记查找单元410 确定是否识别的高速缓存行之一是空的。如果识别的高速缓存行之一是空的,那么标记查 找单元410为与读或写命令相关的数据保留该空的高速缓存行。如果没有识别的高速缓存 行为空,那么标记查找单元410基于驻存在识别的高速缓存行中的数据的数据类实施一系 列的高速缓存逐出策略。 标记查找单元410首先检查与识别的高速缓存行相关的在标记存储装置412中的 入口以确定是否高速缓存行中的任何高速缓存行的具有干净的、未钉住的和首先逐出的驻 存数据。与具有干净的、未钉住的和首先逐出的驻存数据的任何高速缓存行相关的在标记 存储装置412中的入口的状态部分应当具有设置的有效位、清除的脏位和清除的钉住位。这样的入口的标记部分应当指示存储在有关高速缓存行中的数据属于首先逐出数据类。如 果存在任何这样的高速缓存行,那么标记查找单元410使最少最近使用的干净的、未钉住 的和首先逐出的数据从数据高速缓存414中逐出。在逐出该数据后,标记查找单元410为 与命令相关的数据保留结果的空的高速缓存行。 如果没有驻存在识别的高速缓存行中的数据是干净的、未钉住的和首先逐出的, 那么标记查找单元410检查与识别的高速缓存行的每个相关的在标记存储装置412中的入 口,以确定是否高速缓存行中的任何高速缓存行具有干净的、未钉住的和正常逐出的驻存 数据(有效位设置)。与具有干净的、未钉住的和正常逐出的驻存数据的任何高速缓存行相 关的在标记存储装置412中的入口的状态部分应当具有设置的有效位、清除的脏位和清除 的钉住位。这样的入口的标记部分应当指示存储在有关高速缓存行中的数据属于正常逐出 数据类。如果存在任何这样的高速缓存行,那么标记查找单元410使得最少最近使用的干 净的、未钉住的和正常逐出的数据从数据高速缓存414中逐出。在逐出该数据后,标记查找 单元410为与命令相关的数据保留结果的空的高速缓存行。 在一个实施例中,如果没有驻存在识别的高速缓存行中的数据是干净的、未钉住 的和首先逐出的数据或者是干净的、未钉住的和正常逐出的数据,那么该命令停止直到驻 存在识别的高速缓存行之一中的数据能从数据高速缓存414逐出。 在替换的实施例中,如果没有驻存在识别的高速缓存行中的数据是干净的、未钉 住的和首先逐出的数据或者是干净的、未钉住的和正常逐出的数据,那么标记查看单元410 确定是否与命令相关的数据属于最后逐出的数据类。如果与该命令相关的数据不属于最后 逐出数据类,那么该命令停止直到驻存在识别的高速缓存行之一中的数据能从数据高速缓 存414逐出。但是,如果与该命令相关的数据属于最后逐出数据类,那么标记查看单元410 检查与识别的高速缓存行的每个相关的在标记存储装置412中的入口,以确定是否高速缓 存行之一具有干净的、未钉住的和最后逐出的驻存数据。与具有干净的、未钉住的和最后逐 出的驻存数据的任何高速缓存行相关的在标记存储装置412中的入口的状态部分应当具 有设置的有效位、清除的脏位和清除的钉住位。这样的入口的标记部分应当指示存储在有 关高速缓存行中的数据属于最后逐出的数据类。在一个实施例中,如果存在任何这样的高 速缓存行,那么标记查找单元410使最少最近使用的干净的、未钉住的和最后逐出的数据 从数据高速缓存414逐出。在逐出该数据后,标记查找单元410为与命令相关的数据保留 结果的空的高速缓存行。 在其他实施例中,如果属于最后逐出数据类的数据不能从数据高速缓存414逐 出,那么标记查找单元410将最少最近使用的干净的、未钉住的和最后逐出的数据再分类 为干净的、未钉住的和正常逐出的数据。通过改变驻存在有关高速缓存行中的数据的数据 类,然后标记查找单元410能够基于上面阐明的高速缓存逐出策略逐出该驻存数据。然后, 标记查找单元410使最少最近使用的干净的、未钉住的、正常逐出的数据从数据高速缓存 414逐出。在将正常逐出数据逐出后,标记查找单元410为与命令相关的数据保留空的高速 缓存行,如本文先前所述。 为了为与命令相关的数据保留高速缓存行,标记查找单元410设置在与保留的高 速缓存行相关的入口中的钉住位。然后标记查找单元410将与保留的高速缓存行相关的 入口中的标记部分更新,以反映与命令相关的数据的数据类和保留的高速缓存行的存储器地址标记。 一旦保留合适的高速缓存行,那么对于读命令,标记查找单元410将对与读命令 相关的数据的数据请求传送给帧缓冲器355。帧缓冲器355将与读命令相关的数据在将来 的时钟周期传送给保留的高速缓存行。对于写命令,与写命令相关的数据从写数据缓冲器 418传送并存储在保留的高速缓存行中。然后标记查找单元410基于数据的数据类确定是 否与写命令相关的数据也应当存储在并行处理存储器204中。如果该数据应当存储在并行 处理存储器204中,那么标记查找单元410将脏数据通知传送给帧缓冲器355。标记查找单 元410也设置与保留的高速缓存行相关的入口中的脏位。在响应中,帧缓冲器355将来自 保留的高速缓存行的数据在将来的时钟周期传送给并行处理存储器204。 一旦接收到该数 据,就清除钉住位。 在其他实施例中,在标记存储装置412中的入口的状态部分可以以任何技术上可 行的方式实现,包括但不限于作为单一位以指示何时对应于入口的高速缓存行中的数据是 干净和未钉住的。因此,本领域的普通技术人员将理解包括在本文的描述中的任何部分都 不意图限制本发明的范围。 在一定的实施例中,读命令可以由在并行处理子系统112中的客户端传送给L2高 速缓存片402,其中与那些命令相关的数据从系统存储器104或与在计算机系统100中的另 一 GPU(或PPU)相关的存储器中获取,并临时存储在数据高速缓存414中,这与本文先前所 述的从与帧缓冲器355耦合的并行处理存储器204中获取相对。相似地,在一定的实施例 中,写命令可以由GPC 208或R0P 360传送给L2高速缓存片402,其中与那些命令相关的数 据在写到系统存储器104或与在计算机系统100中的另一GPU(或PPU)相关的存储器中之 前临时存储在数据高速缓存414中,这与本文先前所述的写到与帧缓冲器355耦合的并行 处理存储器204中相对。在所有这样的实施例中,如本文描述的,与读或写命令相关的数据 高速缓存进数据高速缓存414和从数据高速缓存414逐出的方式保持未改变。因此,所有 这样的实施例都在本发明的范围内。 图5A至5D阐明了根据本发明一个实施例的用于管理数据流进和流出图4的数据 高速缓存414的方法步骤的流程图。虽然该方法步骤结合图l至4描述,但本领域的普通技 术人员将理解的是,配置为以任何顺序实施该方法步骤的任何系统都落入本发明的范围。
方法500开始于步骤502,其中L2高速缓存片402从在系统100中的客户端接收 读或写命令。如结合图4所描述的,L2高速缓存片402接收的每个命令包括与位于数据高 速缓存414内的一组高速缓存行相关的存储器地址,其中可以存储与命令相关的数据。L2 高速缓存片402接收的命令也包括与命令相关的数据的数据类。在步骤504,命令视具体情 况存储在交叉器命令缓冲器404或ROP命令缓冲器406中。 在步骤506,如果命令是写命令,那么方法500进行到步骤508,其中与命令相关的 数据由L2高速缓存片402接收并存储在写数据缓冲器418中。在步骤506,如果命令是读 命令,那么方法500直接进行到步骤510。在步骤510,在步骤502由L2高速缓存片402接 收的命令由仲裁器408使用标准仲裁技术选择并传送到标记查找单元410以处理。
在步骤512,标记查找单元410识别数据高速缓存414中的该组高速缓存行,其中 基于包括在命令中的存储器地址并使用组相联高速缓存技术,可以存储与选择的命令相关 的数据。再次,该组高速缓存行称为"识别的高速缓存行"。在步骤514,标记查找单元410 确定是否有高速缓存缺失。如果与命令相关的数据当前没有驻存在识别的高速缓存行之一中,那么就有高速缓存缺失。在高速缓存缺失的情况下,方法步骤500进行到步骤516。
在步骤516,标记查找单元410确定是否识别的高速缓存行之一是空的(意味着该 高速缓存行当前可用)。如果没有识别的高速缓存行是空的(意味着该高速缓存行当前是 脏的或钉住的),那么该方法500进行到步骤518。在步骤518,标记查找单元410检查对应 于识别的高速缓存行的在标记存储装置412中的标记以确定那些高速缓存行的哪些(如果 有的话)具有干净的、未钉住的和属于首先逐出数据类的驻存数据。如果没有高速缓存行 具有干净的、未钉住的和属于首先逐出数据类的驻存数据,那么方法500进行到步骤520。 在步骤520,标记查找单元410检查对应于识别的高速缓存行的在标记存储装置412中的标 记以确定那些高速缓存行的哪些(如果有的话)具有干净的、未钉住的和属于正常逐出数 据类的驻存数据。如果没有高速缓存行具有干净的、未钉住的和属于正常逐出数据类的驻 存数据,那么方法500进行到步骤522。 在步骤522,标记查找单元410检查包括在命令中的数据类以确定是否与该命令 相关的数据属于最后逐出数据类。如果与命令相关的数据的数据类属于最后逐出数据类, 那么方法500进行到步骤524,其中标记查找单元410检查对应于识别的高速缓存行的在 标记存储装置412中的标记以确定那些高速缓存行的哪些(如果有的话)具有干净的、未 钉住的和属于最后逐出数据类的驻存数据。如果识别的高速缓存行的一个或多个具有干净 的、未钉住的和属于最后逐出数据类的驻存数据,那么选择具有最少最近使用的干净的、未 钉住的和属于最后逐出数据类的驻存数据的高速缓冲行以逐出。 在步骤526,标记查找单元410为与命令相关的数据保留选择的高速缓存行。如结 合图4所描述的,为了为与命令相关的数据保留高速缓存行,标记查找单元410设置与选择 的高速缓存行相关的入口中的有效位部分。然后标记查找单元410更新与选择的高速缓存 行相关的入口中的标记部分以反映与命令相关的数据的数据类。 在步骤528,标记查找单元410确定是否命令为写命令。如果命令是写命令,那么 方法500进行到步骤530,其中与写命令相关的数据从写数据缓冲器418传送到保留的高速 缓存行。在步骤532,标记查找单元410分析与命令相关的数据的数据类以确定是否数据应 当传送到外部存储器以存储。在一个实施例中,属于最后逐出数据类的数据是排队的数据 且不应当传送到外部存储器以存储而属于首先逐出和正常逐出数据类的数据应当传送给 外部存储器以存储。如果数据应当传送到外部存储器以存储,那么在步骤534,标记查找单 元410传送脏数据通知给帧缓冲器逻辑355。帧缓冲器逻辑355在有效的时钟周期又将脏 数据传送给外部存储器。如果在步骤532标记查找单元410确定数据不应当传送到外部存 储器以存储,那么方法500结束。 现在返回参考步骤530,如果命令是读命令,那么方法500进行到步骤536,其中标 记查找单元410将数据请求通知传送给帧缓冲器逻辑355。帧缓冲器逻辑355在有效的时 钟周期又将请求的数据传送给在步骤526保留的高速缓存行。然后方法500结束。
现在返回参考步骤524,如果没有高速缓存行具有干净的、未钉住的和属于最后逐 出数据类的驻存数据,那么在步骤525命令停止,且方法500返回到本文先前描述的步骤 516。相似地,返回参考步骤522,如果与命令相关的数据的数据类不是最后逐出的,那么在 步骤525命令停止,且方法500返回到本文先前描述的步骤516。 现在返回参考步骤520,如果识别的高速缓存行的一个或多个具有干净的、未钉住
15的和属于正常逐出数据类的驻存数据,那么具有干净的、未钉住的和属于正常逐出数据类 的最少最近使用的驻存数据的高速缓存行将选择以逐出。然后方法500直接进行到本文先 前描述的步骤526。相似地,返回参考步骤518,如果识别的高速缓存行的一个或多个具有 干净的、未钉住的和属于首先逐出数据类的驻存数据,那么具有干净的、未钉住的和属于首 先逐出数据类的最少最近使用的驻存数据的高速缓存行将选择以逐出。然后方法500直接 进行到本文先前描述的步骤526。 现在返回参考步骤516,如果数据高速缓存414的高速缓存行可用,那么该方法 500直接进行到本文先前描述的步骤528。最后,返回参考步骤514,如果有高速缓存命中 (相对高速缓存缺失),那么方法500直接进行到步骤538。在步骤538,标记查找单元410 确定是否命令为写命令。如果命令是写命令,那么方法500进行到步骤540,其中与写命令 相关的数据从写数据缓冲器418传送到已经保留的高速缓存行。如果在步骤538,命令是读 命令,那么在步骤542,标记查找单元410使存储在已经保留的高速缓存行中的数据到读数 据缓冲器416。在步骤544,来自读数据缓冲器416的数据传送到在步骤502传送读命令的 客户端。 总之,由客户端传送给L2高速缓存片的每个读或写命令包括存储器地址和与该 特定命令相关的数据的数据类。在L2高速缓存片中的标记查找单元分析包括在这样的命 令中的存储器地址以确定在其中可以存储与命令相关的数据的该组潜在的高速缓存行。标 记查找单元也分析与潜在的高速缓存行的每个相关的存储在标记存储装置中的标记以识 别可以保留给与命令相关的数据的至少一个高速缓存行。如果潜在的高速缓存行之一是空 的,那么标记查找单元为请求的或写入的数据保留该高速缓存行。当为特定命令保留高速 缓存行时,标记查找单元在对应于该高速缓存行的标记存储装置中的入口的标记部分中存 储与命令相关的数据的数据类。 但是,如果没有识别的高速缓存行是空的,那么标记查找单元确定是否识别的高
速缓存行中的任何识别的高速缓存行具有干净的、未钉住的且属于首先逐出数据类的驻存
数据。如果在识别的行的一个或多个中的数据满足所有这些标准,那么标记查找单元使最
少最近使用的干净的、未钉住的、首先逐出的数据逐出并为请求的或写入的数据保留相关
的高速缓存行。如果在识别的高速缓存行中没有数据满足所有这些标准,那么标记查找单
元确定是否识别的高速缓存行中的任何识别的高速缓存行具有干净的、未钉住的且属于正
常逐出数据类的驻存数据。如果在识别的高速缓存行中的一个或多个中的数据满足所有这
些标准,那么标记查找单元使最少最近使用的干净的、未钉住的、正常逐出的数据逐出并为
请求的或写入的数据保留相关的高速缓存行。如果在识别的高速缓存行中没有数据满足所
有这些标准,那么读或写命令停止直到在识别的行之一中的数据能逐出。 有利地,与存储在数据高速缓存中的数据相关的数据类允许当为与读或写命令相
关的数据制造空间时标记查找单元将具有再使用最少可能性的数据逐出。该逐出数据的机
制降低了对可能由系统中的客户端再使用的数据的早期逐出造成的高速缓存缺失的数量。
另外,通过将合适的数据类附加给数据,数据高速缓存可以用于存储频繁再使用的数据而
不需要传送给外部存储器。这除去了需要额外的数据存储结构存储该数据。 虽然上述的涉及本发明的实施例,可以在不脱离本发明的基本范围的情况下想出
本发明的其他和进一步实施例。例如,本发明的方面可以以硬件或软件或硬件和软件的结合实现。本发明的一个实施例可以实现为与计算机系统一起使用的程序产品。该程序产品的程序限定了实施例的功能(包括本文描述的方法),并可以包含在各种计算机可读存储介质上。示例性的计算机可读存储介质包括但不限于(i)其上信息被永久存储的不可写存储介质(例如,计算机中的只读存储器设备,诸如由CD-ROM驱动器可读取的CD-ROM盘、闪存、ROM芯片或任何类型的固态非易失半导体存储器);和(ii)其上存储可改变信息的可写存储介质(例如,软盘驱动器中的软盘或硬盘驱动器或任何类型的固态随机存取半导体存储器)。在实施指引本发明的功能的计算机可读指令时,这样的计算机可读存储介质是本发明的实施例。因此,本发明的范围由下面的权利要求确定。
权利要求
一种用于从耦合到一个或多个客户端和外部存储器的中间高速缓存中逐出数据的系统,该系统包括一个或多个数据高速缓存单元;标记存储单元,该标记存储单元配置为存储用于与该一个或多个数据高速缓存单元相关的多个高速缓存行的每个的不同入口,其中每个入口包括指示与存储在对应于该入口的该高速缓存行中的数据相关的逐出类的标记和指示是否在对应于该入口的该高速缓存行中的该数据是干净的和未钉住的的状态部分,且其中该逐出类指示存储在对应于该入口的该高速缓存行中的该数据将由该一个或多个客户端再使用的可能性;标记查找单元,该标记查找单元耦合于该一个或多个数据高速缓存单元和该标记存储单元,且其配置为从客户端接收包括相关存储器地址的命令,识别在该一个或多个数据高速缓存单元中的一个或多个高速缓存行以基于该存储器地址存储与该命令相关的数据,确定相对于该一个或多个高速缓存行存在高速缓存缺失,和基于与存储在该一个或多个高速缓存行的至少一个中的数据相关的包括在对应于该至少一个高速缓存行的在该标记存储单元中的该入口中的该逐出类,使驻存在该至少一个高速缓存行中的该数据逐出。
2. 根据权利要求1的系统,其中该状态部分包括有效标志、脏标志和钉住标志。
3. 根据权利要求l的系统,其中包括在对应于该至少一个高速缓存行的在该标记存储 单元中的该入口中的该标记指示存储在该至少一个高速缓存行中的该数据属于首先逐出 类,包括在该入口中的该状态部分指示存储在该至少一个高速缓存行中的该数据是干净的 和未钉住的,且该标记查找单元配置为确定在该至少一个高速缓存行中的该数据是在该一 个或多个高速缓存行中的最少最近使用的、干净的、未钉住的、首先逐出的数据且然后使在 该至少一个高速缓存行中的该数据逐出。
4. 根据权利要求1的系统,其中包括在对应于该至少一个高速缓存行的在该标记存储 单元中的该入口中的该标记指示存储在该至少一个高速缓存行中的该数据属于正常逐出 类,包括在该入口中的该状态部分指示存储在该至少一个高速缓存行中的该数据是干净的 和未钉住的,且该标记查找单元配置为确定在该至少一个高速缓存行中的该数据是在该一 个或多个高速缓存行中的最少最近使用的、干净的、未钉住的、正常逐出的数据且然后使在 该至少一个高速缓存行中的该数据逐出。
5. 根据权利要求l的系统,其中该标记查找单元配置为确定与该命令相关的该数据属 于最后逐出类,包括在对应于该至少一个高速缓存行的在该标记存储单元中的该入口中的 该标记指示存储在该至少一个高速缓存行中的该数据属于最后逐出类,包括在该入口中的 该状态部分指示存储在该至少一个高速缓存行中的该数据是干净的和未钉住的,且该标记 查找单元配置为确定在该至少一个高速缓存行中的该数据是在该一个或多个高速缓存行 中的最少最近使用的、干净的、未钉住的、最后逐出的数据且然后使在该至少一个高速缓存 行中的该数据逐出。
6. 根据权利要求1的系统,其中存储在该至少一个高速缓存行中的该数据属于最后逐 出类,且该标记查找单元配置为将该数据再分类为属于正常逐出类,和其中包括在对应于该至少一个高速缓存行的在该标记存储单元中的该入口中的该状态部分指示存储在该至少一个高速缓存行中的该数据是干净的和未钉住的,且该标记查找单元进一步配置为确定在该至少一个高速缓存行中的该数据是在该一个或多个高速缓存行中的最少最近使用的、干净的、未钉住的、正常逐出的数据且然后使在该至少一个高速缓存行中的该数据逐出
7. 根据权利要求l的系统,其中该标记查找单元进一步配置为为驻存在该至少一个高速缓存行中的该数据将干净通知传送给帧缓冲器逻辑并为与该命令相关的该数据保留该至少一个高速缓存行。
8. —种计算设备,包括一个或多个客户端;中间高速缓存,该中间高速缓存包括一个或多个数据高速缓存单元;标记存储单元,该标记存储单元配置为存储用于与该一个或多个数据高速缓存单元相关的多个高速缓存行的每个的不同入口 ,其中每个入口包括指示与存储在对应于该入口的该高速缓存行中的数据相关的逐出类的标记和指示是否在对应于该入口的该高速缓存行中的该数据是干净的和未钉住的的状态部分,且其中该逐出类指示存储在对应于该入口的该高速缓存行中的该数据将由该一个或多个客户端再使用的可能性;和标记查找单元,该标记查找单元耦合于该一个或多个数据高速缓存单元;耦合于该中间高速缓存的外部存储器;禾口交叉器单元,该交叉器单元将该一个或多个客户端耦合于该中间高速缓存,其中该标记查找单元配置为从客户端接收包括相关存储器地址的命令,识别在该一个或多个数据高速缓存单元中的一个或多个高速缓存行以基于该存储器地址存储与该命令相关的数据,确定相对于该一个或多个高速缓存行存在高速缓存缺失,和基于与存储在该一个或多个高速缓存行的至少一个中的数据相关的包括在对应于该至少一个高速缓存行的在该标记存储单元中的该入口中的该逐出类,使驻存在该至少一个高速缓存行中的该数据逐出。
9. 根据权利要求8的计算设备,其中该状态部分包括有效标志、脏标志和钉住标志。
10. 根据权利要求8的计算设备,其中该标记查找单元进一步配置为为驻存在该至少一个高速缓存行中的该数据将干净通知传送给帧缓冲器逻辑并为与该命令相关的该数据保留该至少一个高速缓存行。
全文摘要
一种多类数据高速缓存策略,本发明的一个实施例阐明了基于数据的数据类从数据高速缓存逐出数据的机制。基于反映数据再使用可能性的数据类,对存储在数据高速缓存中的高速缓存行中的数据分类。数据类存储在标记存储装置中,其中在标记存储装置中的每个标记对应于数据高速缓存中的单个高速缓存行。当为与命令相关的数据保留高速缓存行时,标记查找单元检查在标记存储装置中的数据类以确定哪些数据逐出。具有低的再使用可能的数据以比具有高的再使用可能的数据更高的优先级逐出。有利地,对属于具有较低的再使用可能的数据类的数据的逐出降低了在系统中的高速缓存缺失的数目。
文档编号G06F12/08GK101739357SQ20091022351
公开日2010年6月16日 申请日期2009年11月23日 优先权日2008年11月21日
发明者乔治·R.·林奇, 帕特里克·R.·马尔尚, 彼得·B.·赫姆奎斯特, 戴维·B.·格拉斯科, 詹姆斯·罗伯茨 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1