CN101739357B - 多类数据高速缓存策略 - Google Patents

多类数据高速缓存策略 Download PDF

Info

Publication number
CN101739357B
CN101739357B CN2009102235138A CN200910223513A CN101739357B CN 101739357 B CN101739357 B CN 101739357B CN 2009102235138 A CN2009102235138 A CN 2009102235138A CN 200910223513 A CN200910223513 A CN 200910223513A CN 101739357 B CN101739357 B CN 101739357B
Authority
CN
China
Prior art keywords
data
cache
cache line
inlet
relevant
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
Application number
CN2009102235138A
Other languages
English (en)
Other versions
CN101739357A (zh
Inventor
戴维·B.·格拉斯科
彼得·B.·赫姆奎斯特
乔治·R.·林奇
帕特里克·R.·马尔尚
詹姆斯·罗伯茨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN101739357A publication Critical patent/CN101739357A/zh
Application granted granted Critical
Publication of CN101739357B publication Critical patent/CN101739357B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种多类数据高速缓存策略,本发明的一个实施例阐明了基于数据的数据类从数据高速缓存逐出数据的机制。基于反映数据再使用可能性的数据类,对存储在数据高速缓存中的高速缓存行中的数据分类。数据类存储在标记存储装置中,其中在标记存储装置中的每个标记对应于数据高速缓存中的单个高速缓存行。当为与命令相关的数据保留高速缓存行时,标记查找单元检查在标记存储装置中的数据类以确定哪些数据逐出。具有低的再使用可能的数据以比具有高的再使用可能的数据更高的优先级逐出。有利地,对属于具有较低的再使用可能的数据类的数据的逐出降低了在系统中的高速缓存缺失的数目。

Description

多类数据高速缓存策略
技术领域
本发明一般地涉及存储器管理领域,且更特别地,涉及多类数据高速缓存策略。
背景技术
在一定的处理单元中的存储器子系统的一个元件是二级高速缓存存储器(此处称为“L2高速缓存”)。L2高速缓存是大的片上存储器,其用作在外部存储器(例如帧缓冲器存储器)和存储器子系统的内部客户端(此处称为“客户端”)之间的中间点。L2高速缓存临时地存储各种客户端正在使用的数据。该数据可以从外部存储器中获得或写入外部存储器(此处称为“DRAM”)。客户端可以再使用存储在L2高速缓存中的数据同时实施一定的操作。
在读操作期间,客户端可以从L2高速缓存中请求当前未存储在L2高速缓存中的数据,因此该数据必须要从DRAM中获得。必须从DRAM中获得数据的读操作比直接从L2高速缓存中获得数据的读操作要以明显更多的时钟周期来处理。因此,如果非常多数目的读操作的数据必须从DRAM获取,那么总体系统性能会严重地影响。但是,由于分配给L2高速缓存的存储器空间是限制的,因此驻存在L2高速缓存的数据需要惯常地逐出以为由客户端发送的将来的读或写操作释放存储器空间。如果驻存在L2高速缓存上的数据没有足够频繁地逐出,那么将来的读和写操作必须停止直到L2高速缓存中有空间来处理那些操作。再次,这样的动态能明显地影响总体系统性能。
常规逐出方案通常实施最少最近使用的数据从高速缓存逐出的策略。但是,在一定的系统中,其中数据的使用形式改变,这样的方法可能不会达到在快速地逐出数据以为将来的读和写操作制造空间和允许数据在高速缓存中保留足够长的时间以再使用而避免向外部存储器请求数据之间的合适的平衡。
如前所说明,本领域需要的是确定哪些数据应当首先从中间高速缓存(例如L2高速缓存)中逐出的更有效的机制。
发明内容
本发明的一个实施例阐明了一种用于从耦合于一个或多个客户端和外部存储器的中间高速缓存逐出数据的方法。该方法包括下列步骤:从客户端接收包括相关存储器地址的命令;在中间高速缓存中识别一个或多个高速缓存行以基于存储器地址存储与命令相关的数据;确定相对于一个或多个高速缓存行存在高速缓存缺失;和基于与驻存在一个或多个高速缓存行中的数据相关的一个或多个逐出类使得驻存在一个或多个高速缓存行中的数据的至少一部分逐出,或停止该命令,其中每个逐出类反映了与逐出类相关的数据由客户端或不同的客户端再使用的不同的可能性。
公开的方法的一个优点是,与存储在数据高速缓存中的数据相关的数据类允许当给与进入的读或写命令相关的数据制造空间时,标记查找单元将具有最少再使用可能性的数据逐出。该逐出数据的机制降低了对可能由系统中的客户端再使用的数据的早期逐出造成的高速缓存缺失的数目。
附图说明
为了详细地理解本发明的上述特征,对于以上简要说明的本发明,将参照实施例进行更为具体的描述,其中对一些实施例在附图中进行了图示。然而,需要注意的是,附图只是图示本发明的代表性实施例,因此不能认为附图限制了本发明的范围,本发明可以允许其他同样有效的实施例。
图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(超传输)链路)与I/O(输入/输出)桥107相连接。I/O桥107例如可以是南桥芯片,其从一个或多个用户输入设备108(例如键盘、鼠标)接收用户输入,并将该输入通过路径106和存储器桥105转发给CPU 102。并行处理子系统112通过总线或其他通信路径113(例如PCIExpress、加速图形端口或超传输链路)与存储器桥105相耦合;在一个实施例中,并行处理子系统112是将像素提供给显示设备110(例如传统的CRT或基于LCD的显示器)的图形子系统。系统盘114同样连接于I/O桥107。开关116提供了I/O桥107和诸如网络适配器118以及各种插卡120和121的其他部件之间的连接。包括USB或其他端口连接、CD驱动器、DVD驱动器、电影记录设备等的其他部件(图中没有明确示出),也可以与I/O桥107相连接。将图1中的各种部件相互连接的通信路径可以用任何适用的协议来实现,比如PCI(外设部件互连)、PCI Express(PCI-E)、AGP(加速图形端口)、超传输或任何其他总线或点对点通信协议,并且不同设备之间的连接可以使用不同协议,如本领域已知的。
在一个实施例中,并行处理子系统112包括为图形和视频处理优化的电路,包括例如视频输出电路,并构成了图形处理单元(GPU)。在另一实施例中,并行处理子系统112包括为通用处理优化,并保留了底层计算架构的电路,本文将更加详细地描述。在另一实施例中,并行处理子系统112可以集成一个或多个其他系统元件,例如存储器桥105、CPU 102和I/O桥107,以形成片上系统(SoC)。
可以理解的是,这里示出的系统只是示意性的,可以对其进行变化和修改。包括桥的数量和排列的连接拓扑结构可以根据需要修改。例如,在一些实施例中,系统存储器104直接与CPU 102相连接而不是通过桥相连接,其他设备通过存储器桥105和CPU 102与系统存储器104相通信。在其他可选择的拓扑结构中,并行处理系统112与I/O桥107相连接或直接与CPU 102相连接,而不是和存储器桥105相连接。在其他实施例中,CPU102、I/O桥107、并行处理子系统112和存储器桥105的一个或多个被集成到一个或多个芯片上。这里示出的特定部件是任选的;例如,可以支持任何数量的插卡或外设。在一些实施例中,省去了开关116,网络适配器118和插卡120、121直接和I/0桥107相连接。
图2示出了根据本发明一个实施例的并行处理子系统112。如图所示,并行处理子系统112包括一个或多个并行处理单元(PPU)202,每个并行处理单元都和本地并行处理(PP)存储器204相耦合。通常,并行处理子系统包括U个PPU,其中U≥1。(在这里,相似对象的多个例子用表明该对象的附图标记和表明该例子的附加说明数字(需要时)来表示)。PPU 202和并行处理存储器204可以使用例如可编程处理器,专用集成电路(ASIC)或存储器设备的一个或多个集成电路设备,或以任何其他技术上可行的方式来实现。
再次参考图1,在一些实施例中,在并行处理子系统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的剩余部分通信的I/O(输入/输出)单元205,该通信路径113与存储器桥105相连接(或是在一个可选实施例中直接与CPU 102相连接)。并行处理单元202和计算机系统100的剩余部分的连接也可以变化。在一些实施例中,并行处理子系统112实现为插卡,其能插入到计算机系统100的扩展槽中。在其他实施例中,并行处理单元202能和总线桥一起集成到单一芯片上,总线桥例如可以是存储器桥105或I/0桥107。在另外其他实施例中,并行处理单元202的一些或全部元件可以连同CPU102一起集成到单一芯片上。
在一个实施例中,通信路径113是PCI-E链路,其中如本领域所已知的,专用通道分配给每个PPU 202。也可以使用其他通信路径。I/O单元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可以由其他合适的存储设备代替并且通常可以是惯常的设计。因此省略了详细的描述。例如帧缓冲器或纹理贴图的渲染目标可以跨越DRAM 220存储,允许分区单元215将每个渲染目标的部分并行写入,以有效地使用并行处理存储器204的可用带宽。
GPC 208的任何一个可以处理要写入到并行处理存储器204中的任何分区单元215中的数据。交叉器(crossbar)单元210配置为将每个GPC 208的输出发送至任何分区单元215的输入或另一GPC 208以进一步处理。GPC208通过交叉器单元210与存储器接口214通信以从各种外部存储器设备中读取或写入各种外部存储器设备。在一个实施例中,交叉器单元210与存储器接口214连接以与I/O单元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可以配置为并行执行大量的线程,在此术语“线程”是指对一特定组的输入数据执行的特定程序的实例。在一些实施例中,单指令多数据(SIMD)指令发送技术被用于支持并行执行大量线程,而不用提供多个独立的指令单元。在其他实施例中,使用配置为向每个GPC 208中的一组处理引擎发送指令的共同指令单元,单指令多线程(SIMT)技术被用来支持并行执行大量通用同步线程。不像SIMD执行方式中所有处理引擎通常执行相同的指令,SIMT的执行允许不同的线程通过给定的线程程序更加容易地跟随分散的执行路径。本领域的普通技术人员可以理解的是,SIMD处理方式代表了SIMT处理方式的功能性子集。
在图形应用中,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地址空间中的数据存储在L1高速缓存320中,且可以使用逐出策略来帮助将数据保持在L1高速缓存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与L1高速缓存320耦合且纹理数据存储在L1高速缓存320中。每个SPM 310向工作分配交叉器330输出处理的任务,以向另一GPC 208提供处理的任务以做进一步处理,或通过交叉器单元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包括ROP 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和ROP 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是FIF0(先进先出)缓冲器,即,命令缓冲器接收的命令按照该命令从交叉器单元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或ROP 360传送给L2高速缓存片402,其中与那些命令相关的数据在写到系统存储器104或与在计算机系统100中的另一GPU(或PPU)相关的存储器中之前临时存储在数据高速缓存414中,这与本文先前所述的写到与帧缓冲器355耦合的并行处理存储器204中相对。在所有这样的实施例中,如本文描述的,与读或写命令相关的数据高速缓存进数据高速缓存414和从数据高速缓存414逐出的方式保持未改变。因此,所有这样的实施例都在本发明的范围内。
图5A至5D阐明了根据本发明一个实施例的用于管理数据流进和流出图4的数据高速缓存414的方法步骤的流程图。虽然该方法步骤结合图1至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,如果识别的高速缓存行的一个或多个具有干净的、未钉住的和属于正常逐出数据类的驻存数据,那么具有干净的、未钉住的和属于正常逐出数据类的最少最近使用的驻存数据的高速缓存行将选择以逐出。然后方法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)其上存储可改变信息的可写存储介质(例如,软盘驱动器中的软盘或硬盘驱动器或任何类型的固态随机存取半导体存储器)。在实施指引本发明的功能的计算机可读指令时,这样的计算机可读存储介质是本发明的实施例。因此,本发明的范围由下面的权利要求确定。

Claims (10)

1.一种用于从耦合到一个或多个客户端和外部存储器的中间高速缓存中逐出数据的系统,该系统包括:
一个或多个数据高速缓存单元;
标记存储单元,该标记存储单元配置为存储用于与该一个或多个数据高速缓存单元相关的多个高速缓存行的每个的不同入口,其中每个入口包括指示与存储在对应于该入口的该高速缓存行中的数据相关的逐出类的标记和指示是否在对应于该入口的该高速缓存行中的该数据是干净的和未钉住的的状态部分,且其中该逐出类指示存储在对应于该入口的该高速缓存行中的该数据将由该一个或多个客户端再使用的可能性;
标记查找单元,该标记查找单元耦合于该一个或多个数据高速缓存单元和该标记存储单元,且其配置为:
从客户端接收包括相关存储器地址的命令,
识别在该一个或多个数据高速缓存单元中的一个或多个高速缓存行以基于该存储器地址存储与该命令相关的数据,
确定相对于该一个或多个高速缓存行存在高速缓存缺失,和
基于与存储在该一个或多个高速缓存行的至少一个中的数据相关的包括在对应于该至少一个高速缓存行的在该标记存储单元中的该入口中的该逐出类,使驻存在该至少一个高速缓存行中的该数据逐出。
2.根据权利要求1的系统,其中该状态部分包括有效标志、脏标志和钉住标志。
3.根据权利要求1的系统,其中包括在对应于该至少一个高速缓存行的在该标记存储单元中的该入口中的该标记指示存储在该至少一个高速缓存行中的该数据属于首先逐出类,包括在该入口中的该状态部分指示存储在该至少一个高速缓存行中的该数据是干净的和未钉住的,且该标记查找单元配置为确定在该至少一个高速缓存行中的该数据是在该一个或多个高速缓存行中的最少最近使用的、干净的、未钉住的、首先逐出的数据且然后使在该至少一个高速缓存行中的该数据逐出。
4.根据权利要求1的系统,其中包括在对应于该至少一个高速缓存行的在该标记存储单元中的该入口中的该标记指示存储在该至少一个高速缓存行中的该数据属于正常逐出类,包括在该入口中的该状态部分指示存储在该至少一个高速缓存行中的该数据是干净的和未钉住的,且该标记查找单元配置为确定在该至少一个高速缓存行中的该数据是在该一个或多个高速缓存行中的最少最近使用的、干净的、未钉住的、正常逐出的数据且然后使在该至少一个高速缓存行中的该数据逐出。
5.根据权利要求1的系统,其中该标记查找单元配置为确定与该命令相关的该数据属于最后逐出类,包括在对应于该至少一个高速缓存行的在该标记存储单元中的该入口中的该标记指示存储在该至少一个高速缓存行中的该数据属于最后逐出类,包括在该入口中的该状态部分指示存储在该至少一个高速缓存行中的该数据是干净的和未钉住的,且该标记查找单元配置为确定在该至少一个高速缓存行中的该数据是在该一个或多个高速缓存行中的最少最近使用的、干净的、未钉住的、最后逐出的数据且然后使在该至少一个高速缓存行中的该数据逐出。
6.根据权利要求1的系统,其中存储在该至少一个高速缓存行中的该数据属于最后逐出类,且该标记查找单元配置为将该数据再分类为属于正常逐出类,和其中包括在对应于该至少一个高速缓存行的在该标记存储单元中的该入口中的该状态部分指示存储在该至少一个高速缓存行中的该数据是干净的和未钉住的,且该标记查找单元进一步配置为确定在该至少一个高速缓存行中的该数据是在该一个或多个高速缓存行中的最少最近使用的、干净的、未钉住的、正常逐出的数据且然后使在该至少一个高速缓存行中的该数据逐出。
7.根据权利要求1的系统,其中该标记查找单元进一步配置为为驻存在该至少一个高速缓存行中的该数据将干净通知传送给帧缓冲器并为与该命令相关的该数据保留该至少一个高速缓存行。
8.一种计算设备,包括
一个或多个客户端;
中间高速缓存,该中间高速缓存包括:一个或多个数据高速缓存单元;标记存储单元,该标记存储单元配置为存储用于与该一个或多个数据高速缓存单元相关的多个高速缓存行的每个的不同入口,其中每个入口包括指示与存储在对应于该入口的该高速缓存行中的数据相关的逐出类的标记和指示是否在对应于该入口的该高速缓存行中的该数据是干净的和未钉住的的状态部分,且其中该逐出类指示存储在对应于该入口的该高速缓存行中的该数据将由该一个或多个客户端再使用的可能性;和标记查找单元,该标记查找单元耦合于该一个或多个数据高速缓存单元;
耦合于该中间高速缓存的外部存储器;和
交叉器单元,该交叉器单元将该一个或多个客户端耦合于该中间高速缓存,其中该标记查找单元配置为:从客户端接收包括相关存储器地址的命令,识别在该一个或多个数据高速缓存单元中的一个或多个高速缓存行以基于该存储器地址存储与该命令相关的数据,确定相对于该一个或多个高速缓存行存在高速缓存缺失,和基于与存储在该一个或多个高速缓存行的至少一个中的数据相关的包括在对应于该至少一个高速缓存行的在该标记存储单元中的该入口中的该逐出类,使驻存在该至少一个高速缓存行中的该数据逐出。
9.根据权利要求8的计算设备,其中该状态部分包括有效标志、脏标志和钉住标志。
10.根据权利要求8的计算设备,其中该标记查找单元进一步配置为为驻存在该至少一个高速缓存行中的该数据将干净通知传送给帧缓冲器并为与该命令相关的该数据保留该至少一个高速缓存行。
CN2009102235138A 2008-11-21 2009-11-23 多类数据高速缓存策略 Active CN101739357B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/276,154 2008-11-21
US12/276,154 US8868838B1 (en) 2008-11-21 2008-11-21 Multi-class data cache policies
USUS12/276,154 2008-11-21

Publications (2)

Publication Number Publication Date
CN101739357A CN101739357A (zh) 2010-06-16
CN101739357B true CN101739357B (zh) 2012-08-29

Family

ID=41565470

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102235138A Active CN101739357B (zh) 2008-11-21 2009-11-23 多类数据高速缓存策略

Country Status (6)

Country Link
US (1) US8868838B1 (zh)
JP (1) JP5229968B2 (zh)
KR (1) KR101121487B1 (zh)
CN (1) CN101739357B (zh)
DE (1) DE102009046847A1 (zh)
GB (1) GB2465474B (zh)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US8677105B2 (en) 2006-11-14 2014-03-18 Soft Machines, Inc. Parallel processing of a sequential program using hardware generated threads and their instruction groups executing on plural execution units and accessing register file segments using dependency inheritance vectors across multiple engines
KR101064178B1 (ko) * 2010-08-24 2011-09-14 한국과학기술원 버퍼 캐시 관리 시스템 및 방법
CN103250131B (zh) 2010-09-17 2015-12-16 索夫特机械公司 包括用于早期远分支预测的影子缓存的单周期多分支预测
JP5837507B2 (ja) 2010-12-03 2015-12-24 株式会社ディジタルメディアプロフェッショナル 画像処理装置
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
CN103547993B (zh) 2011-03-25 2018-06-26 英特尔公司 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块
TWI520070B (zh) 2011-03-25 2016-02-01 軟體機器公司 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的記憶體片段
JP2012203881A (ja) * 2011-03-28 2012-10-22 Fujitsu Ltd ストレージ装置及びストレージ制御装置
CN103649931B (zh) 2011-05-20 2016-10-12 索夫特机械公司 用于支持由多个引擎执行指令序列的互连结构
TWI666551B (zh) 2011-05-20 2019-07-21 美商英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
EP2783280B1 (en) 2011-11-22 2019-09-11 Intel Corporation An accelerated code optimizer for a multiengine microprocessor
WO2013101120A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Online learning based algorithms to increase retention and reuse of gpu-generated dynamic surfaces in outer-level caches
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
CN103309818B (zh) * 2012-03-09 2015-07-29 腾讯科技(深圳)有限公司 存储数据的方法及装置
US9710399B2 (en) * 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9430410B2 (en) 2012-07-30 2016-08-30 Soft Machines, Inc. Systems and methods for supporting a plurality of load accesses of a cache in a single cycle
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9311251B2 (en) 2012-08-27 2016-04-12 Apple Inc. System cache with sticky allocation
US20140089600A1 (en) * 2012-09-27 2014-03-27 Apple Inc. System cache with data pending state
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
US9372811B2 (en) * 2012-12-13 2016-06-21 Arm Limited Retention priority based cache replacement policy
CN103092920B (zh) * 2012-12-26 2017-04-12 新浪网技术(中国)有限公司 半结构化数据的存储方法及存储系统
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
KR102063656B1 (ko) 2013-03-15 2020-01-09 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
CN103336844B (zh) * 2013-07-22 2016-12-28 广西师范大学 大数据rd分割方法
US10152410B2 (en) * 2014-03-28 2018-12-11 Empire Technology Development Llc Magnetoresistive random-access memory cache write management
US9866498B2 (en) 2014-12-23 2018-01-09 Intel Corporation Technologies for network packet cache management
US10866901B2 (en) 2018-06-02 2020-12-15 International Business Machines Corporation Invalidating CKD data tracks prior to unpinning, wherein upon destaging invalid track image from cache to a track of data on storage drive, the track of data on the storage drive is unpinned which enables destages of data from the cache to the track of data on the storage drive going forward
KR20200059493A (ko) * 2018-11-21 2020-05-29 에스케이하이닉스 주식회사 데이터 처리 시스템
US11099989B2 (en) 2019-03-12 2021-08-24 International Business Machines Corporation Coherency maintenance via physical cache coordinate comparison
US10831661B2 (en) 2019-04-10 2020-11-10 International Business Machines Corporation Coherent cache with simultaneous data requests in same addressable index

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1607510A (zh) * 2003-10-14 2005-04-20 国际商业机器公司 改善高速缓存性能的方法和系统
CN1841342A (zh) * 2005-03-31 2006-10-04 国际商业机器公司 数据处理系统和方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3236287B2 (ja) 1990-11-29 2001-12-10 キヤノン株式会社 マルチプロセッサシステム
JPH04215151A (ja) 1990-12-13 1992-08-05 Nec Commun Syst Ltd キャッシュ制御方式
JPH06348595A (ja) * 1993-06-07 1994-12-22 Hitachi Ltd キャッシュ装置
JPH0728706A (ja) 1993-07-14 1995-01-31 Sumitomo Electric Ind Ltd キャッシュメモリ装置
US5893920A (en) * 1996-09-30 1999-04-13 International Business Machines Corporation System and method for cache management in mobile user file systems
US6223256B1 (en) * 1997-07-22 2001-04-24 Hewlett-Packard Company Computer cache memory with classes and dynamic selection of replacement algorithms
KR19990026501A (ko) * 1997-09-25 1999-04-15 구자홍 분산 공유 메모리의 캐시 일관성 제어방법 및 장치
GB2385174B (en) 1999-01-19 2003-11-26 Advanced Risc Mach Ltd Memory control within data processing systems
JP2002024088A (ja) 2000-07-07 2002-01-25 Matsushita Electric Ind Co Ltd データ処理装置
JP2002140234A (ja) * 2000-11-02 2002-05-17 Hitachi Ltd キャッシュ装置
KR100617663B1 (ko) 2001-09-14 2006-08-28 썬 마이크로시스템즈, 인코포레이티드 캐시 메모리 내 태그 액세스 및 데이터 액세스의 분리방법 및 장치
US7027064B2 (en) * 2002-02-28 2006-04-11 Sun Microsystems, Inc. Active block write-back from SRAM cache to DRAM
US6961821B2 (en) 2002-10-16 2005-11-01 International Business Machines Corporation Reconfigurable cache controller for nonuniform memory access computer systems
JP2004145780A (ja) 2002-10-28 2004-05-20 Mitsubishi Electric Corp マルチプロセッサ・キャッシュ装置
JP2004326187A (ja) * 2003-04-21 2004-11-18 Matsushita Electric Ind Co Ltd 情報処理装置およびその制御方法
US7024521B2 (en) 2003-04-24 2006-04-04 Newisys, Inc Managing sparse directory evictions in multiprocessor systems via memory locking
US7398304B2 (en) 2003-06-23 2008-07-08 Microsoft Corporation General dependency model for invalidating cache entries
JP2006048447A (ja) * 2004-08-05 2006-02-16 Matsushita Electric Ind Co Ltd キャッシュメモリ装置およびそれを用いる集積回路ならびにデータのキャッシュメモリ方法およびプログラム
US7380065B2 (en) 2005-03-30 2008-05-27 International Business Machines Corporation Performance of a cache by detecting cache lines that have been reused
US7793049B2 (en) 2007-10-30 2010-09-07 International Business Machines Corporation Mechanism for data cache replacement based on region policies
US8464009B2 (en) 2008-06-04 2013-06-11 Oracle America, Inc. Method for memory interleave support with a ceiling mask
US20100079454A1 (en) 2008-09-29 2010-04-01 Legakis Justin S Single Pass Tessellation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1607510A (zh) * 2003-10-14 2005-04-20 国际商业机器公司 改善高速缓存性能的方法和系统
CN1841342A (zh) * 2005-03-31 2006-10-04 国际商业机器公司 数据处理系统和方法

Also Published As

Publication number Publication date
GB0920187D0 (en) 2010-01-06
GB2465474A (en) 2010-05-26
US8868838B1 (en) 2014-10-21
KR101121487B1 (ko) 2012-02-28
KR20100057516A (ko) 2010-05-31
JP2010123130A (ja) 2010-06-03
JP5229968B2 (ja) 2013-07-03
CN101739357A (zh) 2010-06-16
DE102009046847A1 (de) 2010-05-27
GB2465474B (en) 2011-08-31

Similar Documents

Publication Publication Date Title
CN101739357B (zh) 多类数据高速缓存策略
CN101714247B (zh) 单通道镶嵌
CN103309786B (zh) 用于在非可抢占式图形处理单元上交互调试的方法和装置
CN105302524A (zh) 通过标记cpu流量为特殊来避免死锁
CN101751285B (zh) 用于不同种类处理单元的集中式设备虚拟化层
CN103207774B (zh) 用于解决线程发散的方法和系统
US9262797B2 (en) Multi-sample surface processing using one sample
US9946666B2 (en) Coalescing texture access and load/store operations
US9911212B2 (en) Resetting of dynamically grown accelerated data structure
CN103218309B (zh) 多级指令高速缓存预取的方法、系统与设备
CN103793893A (zh) 采用限缓冲区处理的世界和屏幕空间管线间基元重新排序
TWI490782B (zh) 來源運算元收集器快取的方法和裝置
CN103365631B (zh) 用于存储器访问的动态库模式寻址
US7516301B1 (en) Multiprocessor computing systems with heterogeneous processors
TWI490779B (zh) 無鎖的先進先出裝置
CN103460188A (zh) 用于基于活跃分析的再具体化以减少寄存器不足并提高并行度的技术
CN103793876A (zh) 分布式拼接式进行高速缓存
US20100239185A1 (en) Accelerated Data Structure Optimization Based Upon View Orientation
US8131931B1 (en) Configurable cache occupancy policy
CN103226481A (zh) 自动从属任务启动
US8060700B1 (en) System, method and frame buffer logic for evicting dirty data from a cache using counters and data types
CN104050705A (zh) 处置光栅操作中的post-z覆盖数据
CN103810669A (zh) 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块
CN103810743A (zh) 在上游着色器中设置下游渲染状态
CN103885893A (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
C14 Grant of patent or utility model
GR01 Patent grant