压缩状态位高速缓存和后备存储件的制作方法

文档序号:6583911阅读:178来源:国知局
专利名称:压缩状态位高速缓存和后备存储件的制作方法
技术领域
本发明一般地涉及存储器系统且更特别地涉及压縮状态位高速缓存和后备存储件。
背景技术
性能要求不断地在通常包括一个或多个处理器芯片和接附的存储器设备的数据 处理系统中增加。处理器芯片包括片上数据处理资源和配置为使处理资源能够访问片外的 接附的存储器的存储器接口电路。系统性能通常由片上数据处理性能和对接附的存储器设 备的可用带宽确定。 用于增加可用存储器带宽的一种技术是在两个或更多存储器分区上交错存储器 访问。当多个片上客户端访问在每个分区中的存储器时,相关的访问请求可以排程以优化 特定参数,例如总体系统吞吐量或者对特定客户端的平均等待时间。诸如片上数据处理资 源的存储器系统的客户端可以通过交换的网络将存储器访问请求发布给一个或多个存储 器分区。与存储器访问请求相关的物理地址使用对给定的分区配置特定的地址映射功能转 换成本地分区地址。 为了进一步改善存储器带宽,一些数据可以以压縮的格式存储,这减少了表示原 始数据的块所需要的位的数目。分配为以压縮的格式存储原始数据的块的存储器的数量相 比较未压縮的格式没有减少,但存储和获取压縮的数据的块所需要的位的数目减少,并因 此减少了存储器带宽。基于特定应用程序要求和是否原始数据的特定的块在可用的压縮算 法下是可压縮的,可以使用多个无损和有损压縮格式。每个压縮格式有利地减少了表示存 储在接附的存储器中的原始数据的块所需要的位的数目。但是,位的特定数目和怎样解释 位要根据哪个压縮格式(如果有的话)用于表示原始数据的块。与每个块相关的选择的压 縮格式由可压縮存储器的每个块的压縮状态位指示。为了使访问在接附的存储器中的数据 的给定的块所需要的带宽最小化,驻存在处理器芯片上的存储器接口电路需要在初始化对 接附的存储器的存储器访问请求之前参考与存储器的块相关的压縮状态位。
为了使性能最大化,压縮状态位需要对存储器接口电路可用。 一种方案包括在片 上随机存取存储器(RAM)中存储压縮状态位,在本文称为压縮状态RAM,其中状态位直接映 射到在驻存在接附的存储器中的可压縮存储器的区域中的存储器的块。在这个方案中,在 压縮状态RAM中的一给定组的压縮状态位指示了在接附的存储器中的物理存储器的直接 对应的块的压縮状态。当在分区中的存储器接口电路接收存储器访问请求时,存储器接口 电路在初始化对接附的存储器的存储器访问请求之前查询压縮状态RAM。
随着数据处理系统在性能上的提升和在总体能力上的扩展,总的接附的存储器也 通常增加。由于片上压縮状态RAM直接映射到可压縮的接附的存储器,因此增加接附的存 储器的数量意味着压縮状态RAM的大小的增加。例如,使接附的存储器的数量加倍应该导 致压縮状态RAM的大小的加倍以适应潜在的压縮的存储器的额外的块。但是,就管芯面积 来说,压縮状态位的片上存储装置相对昂贵,并且不像接附的存储器那样能被轻易地加倍。
3
因此,本领域中需要的是能够使数据处理系统支持大数量的接附的存储装置而不 产生与存储大数目的直接映射的片上压縮状态位相关的管芯面积成本的技术。

发明内容
本发明的一个实施例阐明了中间高速缓存,该中间高速缓存耦合于一个或多个客 户端和外部存储器,并配置为访问驻存在该外部存储器中的存储压縮信息的至少一个数据 表面和数据结构。中间高速缓存包括压縮状态位高速缓存和数据高速缓存单元,该压縮状 态位高速缓存配置为高速缓存存储在外部存储器中的存储器的块的压縮信息,该数据高速 缓存单元配置为响应包括来自客户端的第一存储器访问请求的高速缓存缺失,基于与第一 存储器访问请求相关的且存储在压縮状态位高速缓存或者数据结构中的压縮信息从外部 存储器请求压縮的数据,其中压縮的数据包括表示请求的数据的一减少组的数据。中间高 速缓存也可以包括命令交叉器和数据交叉器,该命令交叉器配置为发送从客户端接收的与 第一存储器访问请求相关的命令,该数据交叉器配置为发送与第一存储器访问请求相关的 数据。 公开的中间高速缓存的一个优点是,由于大量工作压縮状态位后备存储件在片外 的接附的存储器中,因此可以分配大数量的接附的存储器为可压縮的存储器块,而不产生 相应的管芯面积成本。


为了详细地理解本发明的上述特征,对于以上简要说明的本发明,将参照实施例
进行更为具体的描述,其中对一些实施例在附图中进行了图示。然而,需要注意的是,附图 只是图示本发明的代表性实施例,因此不能认为附图限制了本发明的范围,本发明可以允 许其他同样有效的实施例。
图1是图示配置为实现本发明的一个或多个方面的计算机系统的框图; 图2是根据本发明一个实施例的图1中的计算机系统的并行处理子系统的框图; 图3A是根据本发明一个实施例的在图2中的并行处理单元之一中的通用处理簇
的框图; 图3B是根据本发明一个实施例的在图2中的并行处理单元之一中的分区单元的 框图; 图4是根据本发明一个实施例的图3B中二级(L2)高速缓存的概念图;
图5是根据本发明一个实施例的虚拟地址到原始分区地址转换流水线的概念图;
图6是根据本发明一个实施例的用于压縮数据位高速缓存的原始分区地址产生 流水线的概念图;禾口 图7图示了相对于与接附的并行处理器存储器相关的分区的压縮状态位高速缓 存后备存储件的分配。
具体实施例方式
在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然 而,对于本领域技术人员来说显而易见的是,本发明可以无需一个或多个这些具体细节而得以实施。在其他的例子中,为了避免与本发明发生混淆,对于公知的特征未进行描述。
系统概述 图1是图示配置为实现本发明一个或多个方面的计算机系统100的框图。计算机系统100包括中央处理单元(CPU) 102和系统存储器104,二者通过可以包括存储器桥105的总线路径进行通信。可以是例如北桥芯片的存储器桥105通过总线或其他通信路径106 (例如HyperTransport (超传输)链路)与1/0(输入/输出)桥107相连接。I/O桥107例如可以是南桥芯片,其从一个或多个用户输入设备108 (例如键盘、鼠标)接收用户输入,并将该输入通过路径106和存储器桥105转发给CPU 102。并行处理子系统112通过总线或其他通信路径113(例如PCI E邓ress、加速图形端口或超传输链路)与存储器桥105相耦合;在一个实施例中,并行处理子系统112是将像素提供给显示设备IIO(例如传统的CRT或基于LCD的显示器)的图形子系统。系统盘114同样连接于I/0桥107。开关116提供了 I/O桥107和诸如网络适配器118以及各种插卡120和121的其他部件之间的连接。包括USB或其他端口连接、CD驱动器、DVD驱动器、电影记录设备等的其他部件(图中没有明确示出),也可以与1/0桥107相连接。将图1中的各种部件相互连接的通信路径可以用任何适用的协议来实现,比如PCI (外设部件互连)、PCI E邓res s (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相连接。在其他实施例中,I/O桥107和存储器桥105可以集成到单一芯片上。这里示出的特定部件是可选的;例如,可以支持任何数量的插卡或外设。在一些实施例中,省去了开关116,网络适配器118和插卡120U21直接和1/0桥107相连接。 图2示出了根据本发明一个实施例的并行处理子系统112。如图所示,并行处理子系统112包括一个或多个并行处理单元(PPU)202,每个并行处理单元202都和本地并行处理(PP)存储器204耦合。通常,并行处理子系统包括U个PPU,其中U^ 1。(在这里,相似对象的多个例子用表明该对象的附图标记和表明该例子的附加说明数字(需要时)来表示)。PPU 202和并行处理存储器204可以使用例如可编程处理器、专用集成电路(ASIC)或存储器设备的一个或多个集成电路设备,或以任何其他技术上可行的方式来实现。
再次参考图l,在一些实施例中,在并行处理子系统112中的一些或者全部的并行处理单元202是具有渲染流水线的图形处理器,其能被配置成进行与下列情形有关的各种任务从通过CPU 102和/或系统存储器104经由存储器桥105和总线113提供的图形数据产生像素数据;与本地并行处理存储器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的操作异步地执行命令。 现在返回参考图2,每个并行处理单元202包括通过通信路径113和计算机系统100的剩余部分通信的I/0(输入/输出)单元205,该通信路径113与存储器桥105相连接(或是在一个可选实施例中直接与CPU 102相连接)。并行处理单元202和计算机系统100的剩余部分的连接也可以变化。在一些实施例中,并行处理子系统112实现为插卡,其能插入到计算机系统100的扩展槽中。在其他实施例中,并行处理单元202能和总线桥一起集成到单一芯片上,总线桥例如可以是存储器桥105或I/O桥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 。每个GPC208能同时执行大量(例如数百个或数千个)线程,其中每个线程是程序的实例。在不同应用中,不同的GPC 208被分配用以处理不同类型的程序或进行不同类型的计算。例如,在图形应用中,第一组GPC 208可以分配为进行镶嵌操作并产生面片的图元拓扑,而第二组GPC208可以分配为进行镶嵌着色以评价图元拓扑的面片参数并确定顶点位置和其他每顶点属性。GPC 208的分配基于每个类型的程序或计算产生的工作量是可以变化的。
GPC 208通过工作分配单元200接收将要执行的处理任务,该工作分配单元200从前端单元212接收限定了处理任务的命令。处理任务包括例如表面(面片)数据、图元数据、顶点数据和/或像素数据的要处理数据的索引,还有状态参数和限定数据如何处理的命令(例如执行什么程序)。工作分配单元200可以配置成取得对应于任务的索引,或者工作分配单元200可以从前端212接收索引。前端212保证在推入缓冲器指定的处理启动前,GPC 208配置为有效状态。 例如,当并行处理单元202用于图形处理时,每个面片的处理工作量被分成大约相等大小的任务,以使得能将镶嵌处理分配给多个GPC 208。工作分配单元200可以配置成以能提供任务到多个GPC 208以处理的频率产生任务。相反,在常规系统中,典型地由单一处理引擎实施处理,而其他处理引擎保持空闲,在开始它们的处理任务前等待该单一处理引擎完成它的任务。在本发明的一些实施例中,部分GPC 208配置成进行不同类型的处理。例如,第一部分可以配置成进行顶点着色和产生拓扑结构,第二部分可以配置成进行镶嵌和几何着色,以及第三部分可以配置成在屏幕空间上进行像素着色以产生渲染的图像。GPC208产生的中间数据可以存储在缓冲器中以允许中间数据在GPC 208之间传输以进一步处理。 存储器接口 214包括D个分区单元215,每个分区单元215与并行处理存储器204的一部分直接耦合,其中D > 1 。如图所示,分区单元215的数目通常等于DRAM220的数目。在其他实施例中,分区单元215的数目可以不等于存储器设备的数目。本领域的普通技术人员可以理解的是,DRAM220可以由其他合适的存储设备代替并且通常可以是惯常的设计。因此省略了详细的描述。诸如帧缓冲器或纹理贴图的渲染目标可以跨越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可以使用虚拟通道以在GPC208和分区单元215之间分开通信流。 此外,GPC 208能被编程以执行与广泛多种应用相关的处理任务,所述应用包括但不限于线性和非线性数据转换、视频和/或音频数据的过滤、建模操作(例如,应用物理规律来确定对象的位置、速度和其他属性)、图像渲染操作(例如,镶嵌着色器、顶点着色器、几何着色器和/或像素着色器程序)等等。并行处理单元202可以将数据从系统存储器104和/或本地并行处理存储器204传输到内部(片上)存储器,处理数据,并将结果数据写回到系统存储器104和/或本地并行处理存储器204中,其中这样的数据能够由包括CPU102或另一并行处理子系统112的其他系统部件访问。 并行处理单元202可以提供有任意数量的本地并行处理存储器204,包括没有本地存储器,并可以以任意组合使用本地存储器和系统存储器。例如,在统一存储器架构(UMA)的实施例中,并行处理单元202可以是图形处理器。在这样的实施例中,会提供极少或者不提供专用图形(并行处理)存储器,并行处理单元202唯一地使用或几乎唯一地使用系统存储器。在UMA实施例中,并行处理单元202可被集成到桥芯片或处理器芯片中,或者是提供为具有高速链路(例如PCI-E)的分立的芯片,该高速链路将并行处理单元202通过桥芯片或其他通信装置与系统存储器相连接。
7
如上所述,并行处理子系统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可以配置为实现图元引擎304以进行屏幕空间图形处理功能,其包括但不限于图元建立、光栅化和Z剔除。在一些实施例中,图元引擎304配置为在将像素输出到Ll高速缓存320之前收集像素到多个邻近的像素的片段中,以改善Ll高速缓存320的访问效率。图元引擎304从工作分配单元200接收处理任务,当处理任务不需要由图元引擎304实施的操作时,处理任务通过图元引擎304传送到流水线管理器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中执行。 另外,多个相关的线程组可以同时在SPM310中是活动的(在不同的执行阶段)。这个线程组的集合在本文中称为"合作线程阵列"("CTA")。特定CTA的大小等于n^k,其中k是在线程组中同时执行的线程的数目且典型地是在SPM310中并行处理引擎的数目的整数倍,m是在SPM310中同时活动的线程组的数目。CTA的大小通常由程序员和CTA可用的诸如存储器或寄存器的硬件资源的数量确定。 每个SPM 310使用在用于进行装载和存储操作的相应的Ll高速缓存320中的空间。每个SPM 310也访问所有GPC 208共享并可以用于在线程之间传送数据的分区单元215中的L2高速缓存。最后,SPM 310也访问片外"全局"存储器,其可以包括例如并行处理存储器204和/或系统存储器104。可以理解的是,并行处理单元202外部的任何存储器都可以用作全局存储器。 在图形应用中,GPC 208可以配置为使得每个SPM 310和纹理单元315耦合以进行纹理贴图操作,例如确定纹理样本的位置、读取纹理数据和过滤纹理数据。纹理数据从L1高速缓存320中读取并按照需要从L2高速缓存、并行处理存储器204或者系统存储器104中取得。每个SPM 310向工作分配交叉器330输出处理的任务,以向另一GPC 208提供处理的任务以做进一步处理,或通过交叉器单元210将处理的任务存储在L2高速缓存、并行处理存储器204或者系统存储器104中。颜色PreROP (预先光栅操作器)325配置成进行颜色混合的优化,组织像素颜色数据,并进行地址翻译。 可以理解的是,本文描述的内核架构是示例性的,可以做变化和改变。任何数量的处理引擎,例如图元引擎304、 SPM 310、纹理单元315或颜色PreROP 325可以包括在GPC208中。进一步,虽然只示出了一个GPC 208,并行处理单元202可以包括任何数量的GPC208,这些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四倍的带宽与存储器交叉器单元210接口。读取缺失和紧急写回请求通过L2高速缓存350输出到帧缓冲器355处理。脏(dirty)更新也送到帧缓冲器355用于机会处理。帧缓冲器355直接与并行处理存储器204接口,输出读取和写入请求,并接收从并行处理存储器204读取的数据。 在图形应用中,ROP 360是进行光栅操作的处理单元,例如模板、z测试等,并将像素数据输出为处理的图形数据以存储在图形存储器中。处理的图形数据可以显示在显示设备110上,或被发送以通过CPU 102或通过并行处理子系统112中的处理实体之一来进一步处理。每个分区单元215包括R0P 360以分配光栅操作的处理。在一些实施例中,ROP360配置为压縮写到存储器中的z或颜色数据,并将从存储器中读取的z或颜色数据解压縮。 本领域的技术人员可以理解的是,图1、2、3A和3B中描述的架构决不限制本发明的范围,本文中教导的技术可以在任何适合地配置的处理单元上实现,该处理单元包括但不限于一个或多个CPU、一个或多个多内核CPU、一个或多个并行处理单元202、一个或多个GPC 208、一个或多个图形或专用处理单元等,这些都不离开本发明的范围。
压縮状态位高速缓存和后备存储件 图4是根据本发明一个实施例的图3B中二级(L2)高速缓存350的概念图。L2高速缓存350包括ROP交叉器410和一个或多个L2片420。在一个实施例中,四个L2片420 (0) -420 (3)包括在L2高速缓存350中。L2高速缓存350从交叉器单元210接收存储器访问请求并可以从至少一个R0P360接收存储器访问请求。存储器访问请求包括在可以与数据表面相关的存储器块上实施的读和写操作。至少一个R0P360将存储器访问请求提供给将该请求分配给L2片420的ROP交叉器410。在具有两个或更多诸如图2中分区单元215的分区单元的处理芯片中,交叉器单元210将存储器访问请求发送给两个或更多分区单元,每个分区单元包括L2高速缓存350的例子。 在每个L2高速缓存350中的每个L2片420包括命令交叉器422、数据交叉器424、压縮状态位高速缓存426和L2数据高速缓存428。命令交叉器422将存储器访问请求的命令部分引导给压縮状态位高速缓存426。数据交叉器424通过交叉器单元210或者R0P360在压縮状态位高速缓存426和存储器客户端之间发送数据。 驻存在诸如图2的DRAM220的外部DRAM中的后备存储件包括数据结构,该数据结构应当提供足够的压縮状态位设置以指示也驻存在DRAM中的所有压縮的存储器块的压縮状态。每个压縮状态位设置指示驻存在外部DRAM中的存储器的相应块的压縮状态,该外部DRAM可以接附至帧缓冲器355。压縮状态位高速缓存426从后备存储件存储高速缓存行,其中每个高速缓存行包括多个压縮状态位设置。 一个或多个高速缓存行组织为高速缓存数据存储件,设置在压縮状态位高速缓存426中。如果与来自存储器客户端的存储器访问请求相关的压縮状态位设置当前没有存储在高速缓存数据存储件中,那么产生压縮状态位高速缓存缺失。响应压縮状态位高速缓存缺失,压縮状态位高速缓存426产生对后备存储件的存储器访问请求以获取包括请求的压縮状态位设置的高速缓存行。 在一个实施例中,两个位构成一个压縮状态位设置,其中每个压縮状态位设置能采取两个位给定的四个代码值中的一个。 一个代码值可以用于指示存储器的相应的块没有压縮,而剩下的三个代码值的每个可以指示三个不同压縮格式之一。 压縮状态位高速缓存426可以实施任何技术上可行的标记关联方案和任何技术上可行的逐出策略。在正常操作下,对压縮的表面的存储器访问请求将通过压縮状态位高速缓存426以为请求的存储器的块确定压縮状态。基于压縮状态,存储器访问请求转送给L2数据高速缓存428以处理。在L2数据高速缓存428中的高速缓存命中可以由L2数据高速缓存428本地地处理,而在L2数据高速缓存428中的高速缓存缺失导致存储器访问请求产生并发布给帧缓冲器355。任何技术上可行的替换策略和关联机制可以在L2数据高速缓存428中使用。 重要地,如果L2数据高速缓存428缺失,那么只有由相应高速缓存行的压縮的表示需要的位的数目需要由L2数据高速缓存428请求。由L2数据高速缓存428启动的存储器请求所需要的位的数目由驻存在压縮状态位高速缓存426中的压縮状态位设置指示。通 过将存储器请求大小限制为只包括存储器的请求的块的压縮的表示需要的位,在并行处理 存储器204上需要的带宽减低了。 例如R0P360的一定的存储器客户端是知道压縮的且能够直接读和写压縮的数 据。其他客户端是不知道压縮的且不能够直接处理压縮的数据。例如,图2中的GPC208通 常没有能力处理压縮的数据。如果知道压縮的存储器客户端请求对存储器的压縮的块的读 或写操作,那么L2高速缓存350可以用压縮的数据回应。但是如果不知道压縮的存储器客 户端从存储器的压縮的块请求读,那么L2高速缓存350对在存储器的压縮的块中的数据解 压縮并将解压縮的数据返回给不知道的存储器客户端。在一定的情况中,不知道压縮的存 储器客户端可以只将未压縮的数据写回到存储器的任何给定的块中。 图5是根据本发明一个实施例的虚拟地址到原始分区地址转换流水线500的概念 图。虚拟地址到原始分区地址转换流水线500包括存储器管理单元(匪U)520、物理地址种 类交换搅和(swizzle)单元(PAKS搅和器)522、除法器524、分区地址单元530、片地址单元 540和L2标记、L2设置单元550。在一个实施例中,图2中的每个GPC208包括匪U单元。
匪U520包括用于将虚拟地址510映射到物理地址的一组页表项(PTE)。并非限 制,每个PTE包括虚拟地址到物理地址映射信息、表面种类信息和压縮标记行信息。物理地 址由PAKS搅和器522处理以产生分配访问位置以允许在分区单元中有效地请求交错的搅 和的物理地址。除法器产生由分区地址单元530、片地址单元540和L2标记、L2设置单元 550使用的商和余数以计算唯一的DRAM地址。分区地址单元530计算用于将相应的存储器 访问请求发送给图2中的一个分区单元215的分区地址532。片地址单元540计算用于将 存储器访问请求发送给图4中一个选择的L2片420的片地址542。 L2标记、L2设置单元550接收包括来自除法器524的商的片特定的物理地址和 偏移地址用于存储器访问请求。L2标记、L2设置单元550计算对应于可以用于访问特定 DRAM220设备的原始分区地址的L2标记和L2设置552。 L2标记和L2设置552也可以用于 查询图4中的L2数据高速缓存428。 图6是根据本发明一个实施例的压縮状态位高速缓存的原始分区地址产生流水 线600的概念图。压縮状态位高速缓存(CSBC)基数610包括用于存储压縮状态位的后备 存储件的偏移地址。高速缓存行号码612由加法器620算术地加到CSBC基数610以计算 片特定的物理地址,该片特定的物理地址可以由L2标记、L2设置单元630处理以产生对应 于可以用于访问特定DRAM220设备的原始分区地址的L2标记、L2设置地址632。 L2标记、 L2设置单元630对片特定的物理地址实施与图5的L2标记、L2设置单元550大致相同的 计算。重要地,L2标记、L2设置单元630和L2标记、L2设置单元550都接收具有相同形式 的片特定的物理地址并对片特定的物理地址实施大致相同的地址位操作以产生具有相同 形式的原始分区地址。这种对称允许两个单元在相同的分区中寻址数据的块而没有地址空 间冲突。在一个实施例中,原始分区地址产生流水线600在图4的压縮状态位高速缓存426 中实施。 高速缓存行号码612从由匪U520产生的压縮标记行信息取得。高速缓存行号码 612将一块压縮的存储器与一组相关的压縮状态位相关。高速缓存行号码612也作为由图 4中的压縮状态位高速缓存426使用的查找标记。
11
图7图示了相对于与接附的并行处理器存储器204相关的分区的压縮状态位高速 缓存后备存储件700的分配。每个分区单元215包括压縮状态位高速缓存(CSBC)710,该压 縮状态位高速缓存(CSBC)710配置为提供驻存在对应的CSBC后备存储件720中的压縮状 态位的片上的、高速缓存的形式。每个CSBC后备存储件720配置为存储应当唯一地映射到 驻存在对应的DRAM220中的数据的块的压縮状态位。例如,CSBC后备存储件720(1)包括 唯一地映射到DRAM220(1)的压縮状态位。另外,CSBC710(1)高速缓存唯一地映射到CSBC 后备存储件720(1)的压縮状态位。相反地,压縮的表面730和740包括分配在并行处理存 储器204中的DRAMMO (0)到DRAMMO (D-1)的数据。 本领域的技术人员将理解的是,通过限制哪个DRAM220为驻存在相同DRAM220中 的数据的块存储压縮状态位,可以防止在交叉器210上显著的额外的流量,同时保留通过 在多个分区上分配正常的存储器访问请求获得的增强的存储器性能。 总之,公开了使数据处理系统能够支持大数量的接附的存储装置而不产生管芯面 积成本的技术。压縮状态位高速缓存耦合于驻存在外部存储器中的后备存储件。压縮状态 位存储在后备存储件中用于存储在相同物理分区中的存储器的每个块。给定分区的后备 存储件数据不应当驻存在任何其他分区中。为了避免分区地址混叠,在后备存储件中的存 储器的块根据用于在给定的分区中的所有其他分区地址的相同的再映射功能再映射("搅 和")。 本发明的一个优点是,由于工作压縮状态位后备存储件的大部分是在片外接附的 存储器中,因此大数量的接附的存储器可以分配为可压縮存储器块,而不产生相应的管芯 面积成本。第二个优点是这个技术与高性能分区和基于片的虚拟存储器架构可操作。
本发明的一个实施例可以实施为与计算机系统使用的程序产品。程序产品的程序 限定了实施例(包括本文描述的方法)的功能且能包含在各种计算机可读存储介质中。图 示的计算机可读存储介质包括但不限于(i)其上信息被永久存储的不可写存储介质(例 如,计算机中的只读存储器设备,诸如由CD-ROM驱动器可读取的CD-ROM盘、闪存、ROM芯片 或任何类型的固态非易失半导体存储器);和(ii)其上存储可改变信息的可写存储介质 (例如,软盘驱动器中的软盘或硬盘驱动器或任何类型的固态随机存取半导体存储器)。
上面已经参考特定实施例对本发明进行了描述。但是,本领域的技术人员将理解 的是,在不背离如所附的权利要求阐明的本发明的较宽的精神和范围的情况下,可以对特 定实施例作出各种修改和改变。因此前述的描述和附图是示例性的而不是限制性的。
权利要求
一种耦合于一个或多个客户端和外部存储器且配置为访问驻存在该外部存储器中的存储压缩信息的至少一个数据表面和数据结构的中间高速缓存,该中间高速缓存包括压缩状态位高速缓存,该压缩状态位高速缓存配置为高速缓存存储在该外部存储器中的存储器的块的压缩信息;和数据高速缓存单元,该数据高速缓存单元配置为响应包括接收自客户端的第一存储器访问请求的高速缓存缺失,基于与该第一存储器访问请求相关的且存储在该压缩状态位高速缓存或者该数据结构中的压缩信息从该外部存储器请求压缩的数据,其中该压缩的数据包括用于表示该请求的数据的一减少组的数据。
2. 根据权利要求l的中间高速缓存,进一步包括配置为发送与接收自该客户端的该第 一存储器访问请求相关的命令的命令交叉器和配置为发送与该第一存储器访问请求相关 的数据的数据交叉器。
3. 根据权利要求2的中间高速缓存,进一步包括设置和标记单元,该设置和标记单元 配置为对与该第一存储器访问请求相关的存储器地址实施第一再映射操作以为该第一存 储器访问请求产生第一物理存储器地址。
4. 根据权利要求3的中间高速缓存,其中该压縮状态位高速缓存配置为从存储器管理 单元接收与该第一存储器访问请求相关的标记行且从该标记行获取高速缓存标记。
5. 根据权利要求4的中间高速缓存,其中该标记行驻存在存储在该存储器管理单元中 的且在由该存储器管理单元实施的虚拟地址到物理地址转化期间产生的页表项中。
6. 根据权利要求5的中间高速缓存,其中该压縮状态位高速缓存配置为基于该高速缓 存标记确定与该第一存储器访问请求相关的该压縮信息当前存储在该压縮状态位高速缓 存中还是该数据结构中。
7. 根据权利要求6的中间高速缓存,其中与该第一存储器访问请求相关的该压縮信息 存储在该数据结构中,且该压縮状态位高速缓存配置为产生第二存储器访问请求以从该数 据结构中取回该压縮信息。
8. 根据权利要求7的中间高速缓存,其中该压縮状态位高速缓存配置为计算在该数据 结构中的地址,与该第一存储器访问请求相关的该压縮信息可以通过将偏移加到从该标记 行获取的索引从该地址取回。
9 根据权利要求8的中间高速缓存,其中用于该第二存储器访问请求的第二物理存储 器地址通过对在该数据结构中的该地址实施该第一再映射操作计算,与该第一存储器访问 请求相关的该压縮信息可以从该地址取回,且其中该压縮状态位高速缓存基于该第二物理 存储器地址通过该第二存储器访问请求从该数据结构读取与该第一存储器访问请求相关 的该压縮信息并将该压縮信息存储在驻存在该压縮状态位高速缓存中的数据存储件中。
10. 根据权利要求9的中间高速缓存,其中该数据高速缓存单元基于该第一物理存储 器地址通过该第一存储器请求从该外部存储器读取压縮的数据并根据该压縮信息将该压 縮的数据存储在该数据高速缓存单元中,和其中如果该客户端配置为接收压縮的数据,那 么该数据高速缓存单元将压縮的数据发送给该客户端,和如果该客户端没有配置为接收压 縮的数据,那么该数据高速缓存单元对该压縮的数据解压縮并将该解压縮的数据发送给该 客户端。
全文摘要
一种压缩状态位高速缓存和后备存储件,本发明的一个实施例阐明了用于在接附到数据处理芯片的存储器的压缩的块中增加可用存储装置空间而不需要按比例增加片上压缩状态位的技术。压缩状态位高速缓存提供了用于确定需要多少位以访问存储器的潜在的压缩的块的压缩状态位的片上可用性。驻存在接附的存储器的保留区域的后备存储件提供了用于表示驻存在接附的存储器中的任意大数目块的压缩状态的一完整组的压缩状态位。用于在多个物理存储器设备上分配存储器访问模式的物理地址再映射(“搅和”)部分地由该压缩状态位高速缓存复制以有效地将该后备存储数据的分配和访问与其他用户数据整合。
文档编号G06F12/08GK101751344SQ20091022406
公开日2010年6月23日 申请日期2009年12月3日 优先权日2008年12月3日
发明者乔治·R.·林奇, 卡兰·梅拉, 帕特里克·R.·马尔尚, 彼得·B.·赫姆奎斯特, 戴维·B.·格拉斯科, 詹姆斯·罗伯茨 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1