内存系统、内存存取方法以及图形处理系统的制作方法

文档序号:6480219阅读:270来源:国知局
专利名称:内存系统、内存存取方法以及图形处理系统的制作方法
技术领域
本发明有关于应用于图形处理器的一种可编程图形处理管 线流程,特别有关于在多个并列处理单元执行顶点着色以及几 何着色程序的架构中,使用分享的共用顶点数据高速緩存。
背景技术
传统技术的图形处理管线流程(pipeline)使用单一的顶点 着色(vertex shader, VS )以及像素着色(pixel shader, PS) 程序,其中顶点着色以及像素着色程序分配至位于图形处理管 线流程不同阶段的不同处理单元。如本领域技术人员所知,具 有专用顶点数据高速緩存(以下称为顶点快取)的顶点着色器, 由于可由顶点快取提供所需的数据,且不需要特别将数据排 序,因此通常较有效率。然而,传统顶点快取具有许多缺点。 图l显示传统顶点快取的读取请求先进先出緩冲器(first-in first-out, FIFO)的架构。当硬件在高速緩存更新数据且由下 一管线阶段单元(例如设定引擎)读取之前即执行快取命中测 试(hit test)时,将会发生问题。对于后端的顶点快取,快取 命中测试是根据前端的顶点快取的顶点索引来执行。若发生快 取命中(hit),命中的快取线(cache line)的参考计数器的计 数值会增加,代表此快取线中有一读取指令正在等待,而此快 取线的地址连同其它基元(primitive)数据一起写入一等待快 取的读取请求先进先出緩冲器(first-in first-out, FIFO )。
当数据由下 一 管线阶段单元读取时,参考计数器的计数值 会减少,代表读取动作已经完成。若顶点快取发生快取失误 (miss)的情形,快取控制器搜寻并取代一快取线给予此快取失误的顶点。当此快取线的参考计数器的计数值为零时,代表 先前等待中的读取指令皆已被读取完毕,所以此快取线可自由 被取代。然而,当所有快取线的参考计数器的计数值皆不为零
时,快取命中测试以及后续快取线取代步骤将会被延滞(stall )。 由于执行顶点着色需耗费相当长的时间才能完成,因此在快取 命中测试与数据读取之间具有明显的延迟(latency )。当高速緩 存的容量很小时,长时间的延迟会导致高速緩存的动作频繁地 被拖延,阻断了快取命中测试的结果。举例来说,若执行顶点 着色需耗费200个频率周期的时间,高速緩存包括32条快取线, 而每条快取线平均在一次快取失误后会快取命中两次,在96个 频率周期后,由于各快取线皆具有待处理的读取要求,且其参 考计数器的计数值皆不为零,因此高速緩存发生延滞的现象。 通过增加快取线的数目以提高高速緩存的容量可以解决上述问 题。然而,上述方式必须增加额外的快耳又标记(cache tag)以 及比较器,导致成本增加。再者,达到某个高速緩存容量以上 后,增加更多具有快取标记的快取线并无法显著提高快取命中 率,且依然会导致成本增加。
其它机制可用来解决高速緩存容量以及延迟补偿问题。举 例来说,使用前端参考计数器以及后端参考计数器以允许在快 取命中测试阶段的同 一 快取线发生多重快取失误,亦即重复使
用,无须等待所有先前的读取要求完成与否。然而,此技术同 样具有许多缺点。首先,顶点着色处理程序必须依序执行,且
数据必须在高速緩存中依序更新。另外,当实际数据配置对应 至位于一组相联高速纟爰存(set-associative cache)前端的快耳又 标记,而且快耳又冲突(cache conflict) 4交严重时,高速緩存的 随机存取内存(random-access memory, RAM)并无法被有效 地利用。在此,快取沖突的情形是请求并未均匀分布在所有的组,且在单一组中有相当多的请求命中。
传统顶点高速緩存的另外 一 个缺点在于高速緩存、部分的 标记区以及索引区的容量为固定值。举例来说,以具有既定容 量的四组高速緩存为例,高速缓存的容量设定为四组存储线与 每条存储线的字节的乘积,同时设定储存于标记随机存取内存 中的标记区的容量。若通过增加组数的方式来增加高速緩存的 容量,则必须对应调整标记区以及索引区的容量。
图2A所示的图形处理管线流程说明了上述问题。微软所提 出的应用禾呈序4妄口 (application programming interface^ API)4苗述 了图形处理管线流程包括一输入组合器(input assembler) 21、 顶点着色器22、几何着色器23、串流输出装置24、图形渲染器
(rasterizer ) 25 (或插补器(interpolator)), 像素着色器26、 输出合并器(output merger) 27以及内存资源28。内存资源28 可为虚拟内存或图形处理器以及系统的内存。图2A的组成为本 领域4支术人员所熟知,因此省略描述以精简i兌明。
图2B显示了几何着色器23可能具有的输入与输出,包括点 与线列表(list)、线与三角形列表以及三角形带(strip )。输入 组合器21取得索引值以及顶点串流,并组合传送至顶点着色器 22以及几何着色器23的实际几何数据。在最单纯的处理等级, 输入组合器利用不同形式的图形基元(primitive )(例如线列表 以及三角形带等)来架构实际的三角形(某些基元形式可共享 顶点)。在较复杂的处理等级,输入组合器处理几何实体
(geometry instancing )并串流输出数据。其中特征在于输入组 合器在处理几何图形的过程中会产生 一 组计数器,包含顶点识 别码(vertex ID)和基元识别码(Primitive ID)。计数器组更可用来 在其后的图形处理管线根据结果调整程序或来源数据。
顶点着色器处理顶点数据,执行例如转换、贴图(skinning)以及光影(lighting)等操作。顶点着色器一般处理单一的输入 顶点,并产生单一的输出顶点。对传统图形处理管线流程而言, 属于新加入的几何着色器则允许以基元为基准来执行处理。再 者,几何着色器允许循序加入几何信息,有效提升硬件效能至 新的演算等级。几何着色器可接收经过转换、贴图以及光影处 理的顶点,经过处理而产生新的顶点数据。与只处理单一顶点 的顶点着色器不同,几何着色器的输入是一个完整基元的多个 顶点,例如三角形为三个顶点,线为两个顶点,以及点为单一 顶点,或是边界相邻的基元的顶点数据,例如三角形为额外三 个顶点,线为额外两个顶点(如图2B所示)。几何着色器能够 输出多个顶点,以形成如图2B所示的几何对象,例如点列表、 线带或三角形带。所输出的基元的数目可由几何着色器自由调 整,但必须限制其最大数目。而带的长度可由几何着色器随意 设定。
几何着色器另一个强大的特色在于所连接的串流输出。传 统图形处理管线流程沿着单一方向输出,例如数据由应用程序 输入,经由多个阶段后,于屏幕上产生影像。锁定渲染(render) 目标近似于可在特定阶段得到输出。串流输出机制允许几何着 色器将其输出结果循环回到输入组合器以重新处理输出结果。
虽然没有硬性限制输出结果必须循环,输出结果可经过循环和 渲染进而直接输出至渲染器和输入组合器。串流输出基本上提 供了多层(multi-pass )几何处理以及中央处理器(central processing unit, CPU)最低干预度,有益于平行处理机制。举 例来说,在第一层产生几何对象(贝塞尔片面(Bezier patches ) 或贴图),之后在第二层处理阴影容积挤制(shadow-volume extrusion )。
回到图2A所示的图形处理管线流程,几何着色器23的输出传送至图形渲染器25以及/或内存的顶点緩存器(串流输出装置 24)。图形渲染器25执行透一见分割(perspective divide)、裁剪 (clipping)以及视区(viewport)/剪裁(scissor)选择与实现,并产 生几何着色器2 3所输出的基元的所有像素,并提供初始显示测 试。像素着色器26—次处理一个像素。输入至像素着色器26的 数据包括顶点属性,此顶点属性可以依每 一 个将要做内插的元 素为基准来选择,无论是否经过透视修正,或每一个基元视为 一个常数。像素着色器26可直接接收输入组合器21的输出。
输出合并器27为固定功能单元,并且通常为图形处理管线 流程的最后阶段。其功能为取得图形处理管线流程所产生的结 果,并将其合并为显示于屏幕上的像素值。输出合并器27使用 模板值、深度值加上多个渲染目标和各种调整(blending)功能来 产生最后结果。因此,图2A所示的图形处理管线流程的单元(特 别是顶点着色器22以及几何着色器23 )可受益于能够对顶点快 取作存取。然而,顶点着色器以及几何着色器的行为模式不同。 如上所述,顶点着色器处理单一输入顶点以及产生单一输出, 而几何着色器处理完整的基元及相邻边界的基元的顶点数据。 几何着色器能够产生多个顶点以及形成所选择的单一基元,例 如点列表、线带或三角形带。因此,差异相当大的存取形式造 成顶点快取设计上的困难。 一般而言,顶点快取的容量若符合 顶点着色器的需求,则会与几何着色器的需求的容量非常不同。 因此,必须针对上述缺点以及不合适之处提出解决方案。

发明内容
有鉴于此,本发明提供一种内存系统,适用于一串流数据 处理管线流程的多个客户端之间共享高速緩存。此内存系统包 括 一 实体高速緩存,具有可经由 一 快取索引来存取的 一 内存部分。此内存系统还包括至少二个虚拟快耳又空间,对应至上述内 存部分,以及至少一虚拟快取控制器,根据上述客户端的一者 发出存取上述实体高速緩存的要求时,于上述虚拟快取空间的 现行范围执行一快取命中测试。在某些实施例中,各虚拟快取 空间具有一现行范围,上述现行范围具有与上述内存部分不同 的大小。再者,当上述快取索引的快取命中测试得到一快取命 中结果时,从上述内存部分的对应位置存取数据。
本发明另一实施例提供一种内存存取方法,适用于多个客 户端存取一实体高速緩存。此内存存取方法包括将上述实体高
速緩存的一内存部分对应至分别相对于上述客户端的至少二个 虚拟存储空间的多个快取项目,上述快取项目由一指针组控 制。此内存存耳又方法还包括自上述客户端的一者接收用以存取 上述实体高速緩存的一槽的要求,上述要求包括与上述实体高
速緩存的上述槽有关的一个快取索引,比较上述快取索引与位 于上述指针组所定义的范围内的对应虚拟存储空间的上述快取 项目,以及当上述快取索引的比较结果得到快取命中时,从上 述实体高速緩存的上述槽存取数据。在某些实施例中,于比较 上述快取索引与上述快取项目时,当上述快取索引与上述指针 组的 一 距离超过 一 临界值,自上述实体高速緩存的上述槽移除 上述数据。
根据本发明另 一实施例提供一种图形处理系统,包括一实 体高速緩存,具有多个槽以储存数据, 一高速緩存控制器,用 以分配上述实体高速緩存的一内存空间,以及多个客户端,用 以自上述实体高速緩存存取数据以执行处理。其中上述高速緩 存控制器包括与上述内存空间的上述槽有关的一状态表,而各 上述客户端具有对应的一内存空间。在一些实施例中,上述高 速緩存控制器更根据上述槽的 一者与下 一 图形处理管线阶段所读取的槽的距离而于上述实体高速緩存移除所对应的上述槽。
本发明使得顶点着色器以及几何着色器得以共享实体高速 緩存。


图l显示传统顶点快取读取请求先进先出的架构; 图2A显示微软提出的API的图形处理管线架构; 图2B显示几何着色器可能的输入与输出; 图3A显示一实施例所述的多个客户端的共享高速緩存系 统的方块图3 B显示 一 实施例所述的图形处理管线流程结合 一 实施
例所述的高速緩存系统的示意图4显示与图形处理管线流程有关的存储空间的概念图; 图5显示用以管理顶点着色器虚拟快取控制器所使用的参
考计数器以及指针;
图6显示顶点着色器虚拟快取控制器的操作流程图; 图7显示几何着色器虚拟快取控制器的操作流程图; 图8显示用以管理几何着色器虚拟快取控制器所使用的指
针以及快取线状态位;
图9显示于多个客户端共享实体高速緩存的流程图。
具体实施例方式
为使本发明的上述目的、特征和优点能更明显易懂,下文 特举一较佳实施例,并配合所附图式,作详细说明如下。
本发明的实施例针对上述传统方式的缺点提供一快取设 计,以避免因为处理快取命中以及顶点着色器的延迟所造成的 延滞状态。发明的实施例提供具弹性的緩存器容量以符合顶点着色器以及几何着色器的需求,并使得顶点着色器以及几何着 色器得以共享相同的高速緩存。
本发明实施例使用与实体高速緩存控制器分离的一对虚拟 高速緩存,以及与实体高速緩存的快取标记分离的一组虚拟快
取标记。实体快取项目(entry)的实际数目可小于或大于虚拟 快取标记的凄t目。举例来说,在一实施例中,实体快耳又项目的 数目可大于虚拟快取标记的数目以提高快取命中率,因而改善 平均延迟。将虚拟快取标记的命中测试结果作为实体高速緩存 的地址。在一实施例中,顶点着色器的虚拟高速緩存空间大于 虚拟快取标记的数目,而虚拟快取标记对应于顶点着色器虚拟 快取存储空间的连续部分( 一 个"现行范围(moving window)")。于一实施例中,假设虚拟快取存储空间具有256 个项目,而顶点着色器的现行范围具有32个项目,则可允许图 形处理管线流程处理多达256个顶点。然而,仅有32个虚拟快取 标记(代表输入32个顶点)保留给虚拟快取命中测试以平衡成 本与效能的取舍。
必须注意的是,使用虚拟快取标记具有许多优点。其中一 个优点为虚拟快取标记项目以及快取项目的数目可设定为不同 值,以适合不同目的的功能。对于快取命中测试(根据成本与 效能的目的〗虚拟快取标记项目的适当数目的选择与高速緩存 容量无关。此亦代表高速緩存容量与虚拟快取标记容量以及成 本无关。另 一项优点在于可调整顶点着色器的虚拟快取容量以 改善快取命中率,借以改善效能,虚拟高速緩存与实体高速緩 存分离。实体高速緩存的容量取决于顶点着色器的输出的乱序 程度(out-of-order range),而非根据快取命中率设定,因而可 大幅降低硬件成本。实体高速緩存通过L2高速緩存(二级高速緩 存)以及影像内存备份在内存阶层(memory hierarchy )中。L2高速緩存亦可同时储存着色器指令、常数、满溢着色器緩存器
(spilled shader register )以及满溢的顶点快耳又内容。
上述的概念同样可应用在几何着色器。实体高速緩存的容 量并非根据几何着色器的快取命中率设定,而是取决于几何着 色器的输出的乱序程度。同样的,几何着色器可以要求输出到 特定容量,假设每次几何着色器调用(invocation)需使用32 个顶点,则可调整实际输出量,例如1至10个顶点。若总是预存 32个顶点,会耗费昂贵的硬件成本。此为几何着色器使用虚拟 快取控制的另一个理由。
必须注意的是,根据本发明实施例,实体高速緩存可由顶 点着色器以及几何着色器所共享。 一般而言,实体高速緩存为 图形处理管线流程的任何阶段所共享的资源。再者,在其它实 施例中,可以使用统一快取地址来存取高速緩存,因此,可在 图形处理管线流程的任何阶段的输入端或输出端存取高速緩 存。上述情况类似于将图形处理管线各阶段所连接的逻辑先进 先出緩冲器(FIFO)或高速緩存对应到同 一 个实体緩冲器。此 外,緩存器的数据可满溢至L2高速緩存或其它内存。
根据相对于消耗点的"距离"的取代机制为本发明实施例 的另一特点。当两图形处理管线阶段对緩冲器的某一槽发生沖 突时,较接近被下 一 图形处理管线阶段读取的数据会具有较高 的优先权,进而写入并取代至L2高速緩存。当离消耗点的距离 减少至最小,数据可由L2高速緩存重新取得。最后,在此所提 到的实施例可使用在不同的环境以及应用,包括多重处理器(多 着色器核心)、多重执行线程应用(multi-threading applications ) 以及乱序执行(out-of-order execution )。
参阅图3A,图3A显示一实施例适用于多个客户端的共享高 速緩存系统的方块图。图3A显示共享一共同实体高速緩存340的多个客户端330、 332。在一些实施例中,客户端1 330与客户 端2 332可为顶点着色器与几何着色器。 一般而言,客户端1330 与客户端2 332可具有不同的快取存取模式。实体高速緩存340 可包括多个槽(slot)或用以储存数据的快取线342。高速緩存 系统可还包括顶点高速緩存控制器334,用以作为客户端l 330 与客户端2 332与实体高速緩存340之间的接口 。在一些实施例 中,高速緩存系统可包括第一虚拟高速緩存336以及第一指针 对。第一虚拟高速緩存336包含第一内存部分,用以将实体高速 緩存340内槽的快取地址对应至表示该槽的位置的标记
(flag)。第一指针对定义实体高速緩存340分派给第一虚拟高 速緩存336的快取地址的范围。第一虛拟高速緩存336允许客户 端其中一者(例如客户端l 330 )存取实体高速緩存340内分派 给第一虚拟高速緩存336的槽。
高速緩存系统可还包括第二虚拟高速緩存3 3 8和第二指针 对。第二虚拟高速緩存3 3 8将实体高速緩存3 40内槽的快取地址 对应至表示该槽的位置的标记(flag)。第二指针对定义实体高 速緩存340分派给第二虚拟高速緩存338的快取地址的范围。第 二虚拟高速緩存338允许另 一个客户端(例如客户端2 332 )存 取实体高速緩存340内分派给第二虚拟高速緩存338的槽。
参阅图3B,图3B显示 一 实施例的图形处理管线流程的高速 緩存系统的示意图。图3B的示意图包括指令串流处理器
(command stream processor, CSP ) 302、 顶点前端单元(顶点 FE)304顶点着色器30d几何着色基元建构器(geometry shader primitive constructor client, GSPC)312、几何着色器308、串 流输出单元(stream output client, STO) 310,以及快取子系 统。快取子系统包括顶点着色器虚拟快取控制器(vertex shader client virtual cache controller, VSIDT ) 320、几何着色器虚拟快取4空制器 (geometry shader client virtual cache controller, GSIDT) 322、顶点实体快取控制器324以及顶点快取数据存储 数组326。
一般而言,顶点着色器虚拟快取控制器320执行顶点命中测 试,并指定 一 个顶点着色器顶点快取识别码(vertex shader vertex cache identification, VS VCID)给各專lr入顶点,上述顶 点可通过来自指令串流处理器302经过顶点前端单元304输出的 顶点识别码(Vertex ID)和实体识别码(Instance ID)来辨识。若在 顶点命中测试得到符合的结果,相关的顶点快取识别码被指定 至该顶点,而顶点着色器顶点快取识别码表中的顶点快取识别 码的参考计数值增加 一 ,否则指定顶点着色器顶点快取识别码 表中的下 一 个顶点快取识别槽给此顶点识别码。执行顶点命中 测试后,指定给顶点的起始顶点快取识别码纟皮传回顶点前端单 元304。顶点前端单元304储存顶点快取识别码至任务通知项目 (task info entry ), 并派发至#丸4亍单元(execution unit, EU )。 几何着色器虚拟快取控制器3 2 2指定 一 个几何着色器顶点快取 识另'J石马(geometry shader vertex cache identification, GS VCID ) 给即将输入至几何着色器的几何基元的各输入顶点。指定给顶 点的起始几何着色器顶点快取识别码传回几何着色基元建构器 312,而几何着色基元建构器312储存几何着色器顶点快取识别 码至任务通知项目,并派发至执行单元。
串流输出单元310提供自图形处理管线流程输出后端几何 着色器的输出的接口。几何着色基元建构器312输出几何着色任 务通知项目至串流專lr出单元310,而串流输出单元310于几何着 色任务完成时被触发以传送几何着色输出至内存。
图4显示与图形处理管线流程有关的内存空间的概念图。内 存空间包括顶点索引空间402、实体(instances )空间404、顶点着色虚拟快取空间406、几何着色虚拟快取空间408以及顶点 实体快取空间410。顶点索引空间402示意所有可能的顶点识别 码,而实体空间404示意对应于一顶点识别码可纟皮允许的实体。 带有特定实体的顶点识别码是独 一 无二的。顶点索引空间4 0 2 被对应到顶点着色虚拟快取空间406中分配的位置,而此位置对 应至顶点实体快取空间410中分配的位置。几何着色虚拟快取空 间4 0 8中的至少 一 分配位置对应于顶点实体快取空间410的至少 一分配位置。顶点着色器运作于顶点着色虚拟快取空间406,而 几何着色器运作于几何着色虚拟快取空间408,但上述空间共享 相同的顶点实体快取空间410。
顶点着色虚拟快取空间406或几何着色虚拟快耳又空间408的 顶点快取识别码为数据项(item),用以提供对顶点实体快取空 间410读耳又、写入以及无效(invalidate)的项目的地址。在一 个实施例中,若顶点实体快取空间410为 一个组相联高速緩存, 数据项包含两个字段,分别为快取标记字段以及快取索引字 段。快取索引字段提供高速緩存组的地址,而快取标记字段提 供剩余的地址以与实体高速緩存巻标RAM^f故比对来选择一 高 速緩存组。必须注意的是,本发明也可使用其它高速緩存配置 方式。例如,其它实施例可4吏用直接映 <象(direct-mapped )内 存快取或完全相联(fully associative )内存快耳又。
参阅图3B,指令串流处理器302输出实体识别码(Instance ID)以及顶点识别码(Vertex ID)至顶点前端单元304。实体 识别码以及顶点识别码共同描述图形基元的 一 个特定顶点,例 如三角形或线段等基元。之后,顶点前端单元304发送请求至顶 点着色器虚拟快取控制器320以分配以及回传顶点着色器顶点 快取识别码,使其可用于顶点实体快取控制器324的存取。在分 配之前,顶点着色器虚拟快取控制器320执行快取命中测试,若具有此顶点快耳又识别码的顶点已#皮分配,则回传至顶点着色器
虚拟快取控制器320。否则,顶点着色器虚拟快取控制器320分 配新顶点并回传其顶点着色器顶点快取识别码。顶点着色器3 06 可将数据通过顶点着色器顶点快取识别码写入顶点实体快取控 制器324,而几何着色基元建构器312可通过从顶点前端单元304 所得的顶点着色器顶点快取识别码而从顶点实体快取控制器 324读耳又数据。
几何着色基元建构器312也可以向几何着色器虚拟快取控 制器3 22要求分配 一 个几何着色器顶点快取识别码,并接收此分 配的几何着色器顶点快取识别码。与顶点着色器虚拟快取控制 器320不同,几何着色器虚拟快取控制器322因为几何着色器308 产生特定基元数据并总是需要新的分配,因此具备命中测试能 力。
几何着色器308可将数据通过被几何着色基元建构器312所 同意的几何着色器顶点快取识别码写入顶点实体快取控制器 324,而串流输出单元310可通过被几何着色基元建构器312所同 意的几何着色器顶点快取识别码读取顶点实体快取控制器324。
顶点实体快取控制器324的容量是有限制的,且通常小于分 配给顶点着色器306以及几何着色器308相加的虚拟空间。此情 况可能会导致图形处理管线流程的停顿。因此,实体空间一般 必须延伸至包括L2高速緩存,使得 一段时间之后才会使用到的 数据可"满溢,,至L2高速緩存。再者,为了避免顶点着色器306 以及几何着色器308因为与L2高速緩存的存取延迟而延滞,顶 点实体快取控制器324应该要预先加载(prefetching)数据至实 体快取。
根据本发明实施例,顶点实体快取控制器324的取代机制是 根据"最大距离"。 一般而言,若高速緩存已满,某一快取项目必须被识别且自高速緩存移除,以允许新的快取项目储存至高
速緩存。取代机制定义选择最适合满溢或移除至L2高速緩存的 快取项目的规则。选择移除快取项目的方式不适当时,会影响 高速緩存的效能。在较佳实施例中,"最大距离"机制为选择距 离被下一个图形处理管线流程阶段所读取的最遥远的一个快取 槽,将其移除或满溢至L2高速緩存或是主存储器以供后续存 取。
在一些实施例中,顶点实体快取控制器324包括一状态表, 其中包含两段信息可用以实现"最大距离,,取代机制。上述信 息包括顶点快:取识别码的有效位以及快耳又内位(in-cache bit)。 顶点快取识别码的有效位指示与此顶点快取识别码有关的顶点 数据是否完成顶点着色或几何着色运算,并抵达顶点实体快取 控制器324快取内位指示顶点数据是否实际出现在顶点实体快 取控制器324,而不是满溢或移除至L2高速緩存。在某些实施 例中,可根据一客户端的任务与各客户端在虚拟空间中的一无 效指针之间的距离来监视其状态。较小的距离代表数据即将被 消耗或存取。在这些例子中,L2高速緩存的数据被放回顶点实 体快取控制器324。必须注意的是,数据写入的分配是以相反方 式进行。在写入分配时,所有具有最大距离值的任务会被直接 写入L2高速緩存,并稍后加载至顶点实体快取控制器324。
在其它实施例中,距离的计算是将顶点着色器虚拟快取控 制器或几何着色器虚拟快取控制器目前的无效指针值减去 一 预 定的指针值来得到。目前的无效指针为顶点着色器虚拟快取控 制器或几何着色器虚拟快取控制器输入至顶点实体快取控制器 324的输入信号,并可表示下一图形处理管线阶段将读取的位 置。顶点着色器虚拟快取控制器状态表或几何着色器虚拟快取 控制器状态表的有效位以及快取内位可用来搜寻与目前的顶点着色无效指针或几何着色无效指针具有最大距离的有效与快取 内的顶点着色器快取识别码以及几何着色器快取识别码。已知
目前无效指针位于位置Ni而目前顶点位于位置Nc,则距离可以 下列关系表示
iVc兰 (iVc - iV,): 512 + (7VC - TV,)
运算子",,表示同余算术,此为本领域技术人员所公知。 必须注意的是,顶点着色器虚拟快取控制器以及几何着色器虚 拟快取控制器会绕回(wraps around )运算直到数值达到512。 在一个实施例中,若下一个被无效的顶点着色顶点的顶点快取 识别码为0x07F ,而目前收到的顶点为0x082 ,则距离为3 (0x082-0x07F )。顶点着色器与几何着色器的距离可分别根据 其本身的指针计算。
上述实施例的硬件实现方式为,判断最大距离的顶点可由 译码顶点着色器虚拟快取控制器的位7_6或译码几何着色器虚
拟快取控制器的位9-6成一位串流(bit stream),使用由无效指 针所产生的一屏蔽(mask)来遮蔽此位串流,并寻找其前导一 (leading one)位。
图5显示表管理所使用的参考计数器以及指针。顶点着色器 顶点快取识别码表500由 一 组指针管理,包括无效指针 (inval—ptr) 502、命中测试结束指针(hittest—end_ptr ) 504以 及分酉己指针(alloc—ptr) 506。如图5所示,分配指针506指向顶 点着色器快取识别码表500中下一个4皮分配的顶点快取识别 码。无效指针502指向顶点着色器快取识别码表500中下一个被 无效的顶点快取识别码。命中测试结束指针504定义命中测试结 束指针504与分配指针506之间的现行范围。现行范围相等于顶点着色器巻标内存的目前有效的快取项目数目,因此定义了顶 点着色器顶点快取识别码中,可于顶点着色器巻标内存执行命
中测试的快取项目。顶点实体快取控制器324中分配给顶点着色 的快取项目的数量相等于无效指针502与分配指针506之间的快 取项目的数量。无效指针502与命中测试结束指针504之间可具 有许多分配快取项目,其顶点快取识别码编号并不位于顶点着 色器巻标内存中,因此这些快取项目并不适用快取命中测试。 在较佳实施例中,上述三个指针需遵行下述的状态。分配指针 506不能超越无效指针502且无效指针502不能超越命中测试结 束指针504。当顶点实体快取控制器324分配新的快取项目时, 分配指针506增加。当顶点实体快取控制器324没有剩余参考值 而释放一个快取项目时,无效指针502增加。
图6显示顶点着色器虚拟高速緩存控制器的操作流程图。首 先,顶点着色器巻标内存接收顶点索引。顶点着色器巻标内存 控制器判断此顶点索引是否与有效的顶点快取识别码有关。若 有关,则发生快取命中,顶点着色器巻标内存回传位于顶点着 色器快取识别码表中 一 个有效的顶点快取识别码的编号。此顶 点快取识别码也用来存取顶点着色器快取识别码表的参考记数 以执行调整,例如增加或减少。顶点快取识别码也用来存取放
置实际顶点数据的顶点实体快取控制器。若发生快取失误,代 表顶点索引与此有效的顶点快取识别码无关,此时若有 一 个顶
点快取识别码可利用且与此顶点索引有关,则顶点着色器巻标 内存由顶点着色器快取识别码表取得该顶点快取识别码。若所 有槽皆不可使用,则顶点着色器巻标内存延滞。
图7显示几何着色器虚拟高速緩存控制器的操作流程图。与 几何着色器快取识别码表有互动的组件分别为几何着色基元建 构器、几何着色器以及串流输出(STO)。几何着色基元建构器请求在顶点实体快取控制器324中分配一个项目,进而在几何着 色器快取识别码表单中分配一个项目。在分配过程中,几何着 色器虚拟快取控制器对该基元所分配的第一个快取项目设置一 个前端标记(head flag)t几何着色器接收几何着色器顶点快取识 别码表中被分配的顶点快取识别码,并使用此被许可的几何着 色器顶点快取识别码写入数据至顶点实体快取控制器3 2 4。此时 几何着色器同时依需要设定输出(Emit)标记、剪下(Cut)标记 以及结束(End)标记。串流输出亦接收此几何着色器顶点快取识 别码,并使用此几何着色器顶点快取识别码读取顶点实体快取 控制器的数据。当串流输出读取数据时,会清除结束标记,结 束标记用来指示数据已消耗,且于几何着色器顶点快取识别码 表以及顶点实体快取控制器324所对应的快取项目可被失效。
根据其它实施例,整个图形处理管线流程的说明如下。指 令串流处理器(CSP)产生顶点识别码给所接收的输入串流的 各顶点,并传送此顶点识别码至顶点前端单元。顶点前端单元 决定顶点着色器对各顶点所做的进一 步处理。在某些基元序列 中,同样的顶点数据可被使用多次,而某个特定基元可能已被 分配至顶点高速緩存。必须注意的是,在顶点着色器能够写入 数据至顶点实体高速緩存的分配位置之前,顶点识别码Vertex ID可能已提前数百个处理管线周期以上之前就抵达了 。通过顶 点配置与快取命中测试的完全虚拟化,以及与顶点实体高速緩 存的配置分隔,此机制允许顶点识别码的到达以及等待其相关 数据的时间可被调整,而无须提早分配实际的顶点实体内存。
顶点前端单元接着输出顶点识别码至顶点着色器虚拟快取 控制器。顶点着色器虚拟快取控制器检查顶点与其识别码的分 配。若此识别码已分配,则发生快取命中,顶点着色器虚拟快 取控制器回传分配的顶点着色器顶点快取识别码至顶点前端单元,并增加与此顶点着色器顶点快取识别码有关的参考计数 值。若此识别码并未分配,则发生快取失误,则顶点着色器虚 拟快取控制器分配新的快取项目。当分配程序完成时,顶点着 色器虚拟快取控制器回传新分配的顶点着色器顶点快取识别码 至顶点前端单元,并增加与此顶点着色器顶点快取识别码有关 的参考计数值。顶点前端单元输出所接收的顶点着色器顶点快 取识别码至顶点着色器以及几何着色基元建构器。几何着色基 元建构器使用此顶点着色器顶点快取识别码存取顶点实体快取 控制器的顶点数据。在几个周期之后,顶点着色器使用分配的 顶点着色器顶点快取识别码写入顶点着色(转换)结果,而几 何着色基元建构器于几何处理时使用此分配地址读取顶点数 据。
几何着色基元建构器通过顶点着色器顶点快取识别码从顶 点建立几何基元,并为几何着色器的处理结果发出分配要求。 几何着色基元建构器传送标签至几何着色器虚拟快取控制器。 此标签以快取线数目的方式来定义所需数据或记录的大小。几 何着色器虚拟快取控制器分配虚拟高速緩存的空间,并在适当 的虚拟高速緩存快耳又项目上标示此笔记录的前端标记,之后并 回传纟皮标示前端标记的快耳又项目的几何着色器顶点快耳又识别码 至几何着色基元建构器。几何着色基元建构器将此前端标记的 几何着色器顶点快取识别码传送至几何着色器以及串流输出。 几何着色器使用几何着色器顶点快取识别码来写入几何着色器 执行处理时所产生的基元数据。串流输出使用几何着色器顶点 快取识别码来读取基元数据,并传送基元数据至内存以及图形 渲染器的几何设定单元。
几何着色器具有两个同步的通道(concurrent channel),用 以输出产生的基元结果,几何着色器虚拟快取控制器接收与几何着色器顶点快取识别码有关的"输出"信号以更新所选择快 取项目的状态。 一般来说,几何着色的基元与顶点数据本质上 不同。也就是说,几何着色基元数据具有单一任务性且没有被 多重读取。因此几何着色器虚拟快取控制器并没有参考计数 器。几何着色器虚拟快取控制器仅具有多个用以描述各快取项 目状态的状态位。储存于几何着色器虚拟快取控制器的各几何 着色基元数据仅可被串流输出读取一次。在读取动作后,分配 给此几何着色基元数据的几何着色虚拟快取槽可被无效。顶点 实体快取控制器通过输出无效的顶点快取识另'J码以通知几何着 色器虚拟快取控制器此读取动作。
顶点实体快取控制器为虚拟快取控制器的从属装置,并根 据几何着色器顶点快取识别码以及顶点着色器顶点快取识别码 定义的位置提供数据存取。每当分配给顶点着色器的数据从顶 点高速緩存读出时,顶点实体快取控制器输出读取位置的顶点 快取识別码至顶点着色器虚拟快取控制器。顶点着色器虚拟快 取控制器根据此顶点快取识别码选择相关的参考计数器以减少 计数。当由无效指针所指向的位置的参考计数器的数值达到 零,顶点着色器虚拟快取控制器发出带有此顶点快取识别码的 请求以无效顶点实体快取控制器的快取项目。
图8显示具有指针以及标记的几何着色器顶点快取识别码
表800。几何着色器顶点快取识别码表800用以管理几何着色器 虚拟快取控制器。几何着色器顶点快取识别码表800由几何着色 器顶点快取识别码来索引,并用以存取顶点实体快取控制器, 且包括各快耳又项目的前端(head)标记、有效(valid)标记、 剪下(cut)标记以及结束(end)标记。前端标记标示槽的开 始位置。有效标记标示快取项目为有效(例如已分配)。剪下标 记标示三角形条或线条的结束。结束标记标示最后被读取的顶点快取识别码。几何着色器顶点快取识别码表800的各分配快取
项目于顶点实体快取控制器具有对应分配的快取项目。
如图8所示,几何着色器顶点快取识别码表800也受到本身 的指针所管理,分别为无效指针(inval—ptr) 802、读取指针 (read—ptr) 804以及分西己4旨4f ( alloc_ptr ) 806。无爻支指4十802 指向下一个被无效的快取项目。分配指针806指向下一个被分配 的快取项目。读取指针804指向下一个被读取的快取项目。读取 指针804不能超越分配指针806而分配指针806不能超越无效指 针802。读耳又一个快耳又项目时读取指4十804会相应增加,并使得 该顶点快fU只别码的有效标记以及剪下标记^皮清除。若目前以 及下一位置的有效位或者目前快耳又项目的有效位以及结束位被 标示时,读取指针804仅会向上增加。
几何着色器顶点快取识别码的无效动作会导致 一 个快取项 目寻皮标示为无效以及指4f"增加。同^f羊的,前端标记以及结束标 记会被清除。当目前的顶点着色器顶点快取识别码的有效位被 清除,而且顶点实体快取控制器的几何着色无效操作不在忙碌 状态时,无效指针802将会增加。在此,若结束位被标示时,通 过搜寻下一个前端位被设置的几何着色器顶点快取识别码,无 效指针8024皮移至下一个几何着色调用(invocation)的几何着色 器顶点快取识别码群组的起始位置。位于上一 次调用的结束位 置以及下 一 次调用的起始位置之间的所有顶点快取识别码将会 跳过。因此,不需要传送这些几何着色器顶点快取识别码至顶 点实体快取控制器以执行无效步骤。
为了分配几何着色器顶点快取识别码表中的一个几何着色 器顶点快取识别码区块,目前的分配指针806与无效指针802会 作比较。若两个指针之间的距离大于被分配的区块的尺寸(由 分配标签表示),则此区块被分配于表内,且起始的顶点快取识别码被回传至请求者(例如图6的几何着色基元建构器312)。 当此区块分配好之后,分配指针806增加至最大几何着色输出尺 寸的数值,而前端标记标示于此分配区块的前端。若没有足够 的空间分配给此区块,几何着色器顶点快取识别码的分配将会 延滞。顶点实体快取控制器的快取项目的写入发生在几何着色 器顶点快取识别码表单的至少 一快取项目被分配以及顶点快取 识别码被接收之后。在一实施例中,顶点着色器虚拟快取控制 器为512个快取项目,需要9位以存取表。
图9显示于多个客户端共享顶点实体高速緩存的流程图。于 区块91Q首先对应顶点实体高速緩存的一个内存部分至对应于 各客户端的至少二虛拟存储空间的多个快取项目。此多个快取 项目由一组指针所控制。区块920中,自一客户端接收存取顶点 实体高速緩存的 一槽的请求。此请求包括与此顶点实体高速緩 存的槽有关的一快取索引。区块930中,比较此快取索引与对应 的虚拟存储空间内由该组指针所定义的范围内的多个快取项 目。之后,当比较结果为快取命中时,自顶点实体高速緩存的 槽存取数据(区块940 )。再者,当快取索引与指针组之间的距 离超过一临界值时,自顶点实体高速緩存的槽移除数据(区块 950 )。根据其它实施例,当比较结果为快取失误时,于对应的 虚拟存储空间分配新的快:取项目(区块960 )。
以上所述仅为本发明较佳实施例,然其并非用以限定本发 明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神 和范围内,可在此基础上做进一步的改进和变化,因此本发明 的保护范围当以本申请的权利要求书所界定的范围为准。
附图中符号的简单说明如下
21:输入组合器
22、 VS:顶点着色器23、 GS:几何着色器
24串流输出装置
25图形渲染器
26像素着色器
27输出合并器
28内存资源
302:指令串流处理器
304:顶点前端单元
306.顶点着色器
308.几何着色器
310串流输出单元
312几何着色基元建构器
320顶点着色器虚拟快取控制器
322几何着色器虚拟快取控制器
324顶点实体快取控制器
326顶点快取数据存储数组
330、 332:客户端334顶点高速緩存控制器
336第一虚拟高速緩存
338第二虚拟高速緩存
340实体高速緩存
342快取线
術顶点索引空间
404:实体空间
406:顶点着色虚拟快取空间
408:几何着色虛拟快取空间
410:实体快取空间500:顶点着色器顶点快取识别码表单
502、 802:无效指针、inval_ptr
504:命中测试结束指针、hittest—end—ptr
506、 806: ^酉己才旨4f、 alloc—ptr
800:几何着色器顶点快取识别码表
804:读取指4十read—ptr
GSIDT:几何着色器虚拟快取控制器
GSPC:几何着色基元建构器
GSVACID:几何着色器顶点快取识别码
L2:高速緩存
STO:串流输出
VSIDT:顶点着色器虚拟快取控制器
VCID:顶点快耳又识别码
VSVCID:顶点着色器顶点快取识别码。
权利要求
1. 一种内存系统,适用于一串流数据图形处理管线流程的多个客户端之间共享高速缓存,其特征在于,该内存系统包括一个实体高速缓存,具有经由快取索引所存取的一个内存部分;至少二个虚拟快取空间,对应至上述内存部分,各虚拟快取空间具有一个现行范围,上述现行范围具有与上述内存部分不同的大小;以及至少一个虚拟快取控制器,根据上述客户端其中一者对上述实体高速缓存所发出的存取请求,于上述虚拟快取空间的上述现行范围执行快取命中测试,其中当上述快取命中测试得到快取命中结果时,从上述内存部分的对应位置存取数据。
2. 根据权利要求l所述的内存系统,其特征在于,其中当 上述快取命中测试得到快取失误结果时,上述虚拟快取控制器 于上述虚拟快耳又空间分配一个新的快:取项目。
3. 根据权利要求l所述的内存系统,其中上述实体高速緩 存还包括一个状态表,其特征在于,上述状态表包括有效位,用以指示与上述快取索引有关的数据是否已完成 运算;以及快取内位,用以指示与上述快取索引有关的数据是否已出 现于上述实体高速緩存。
4. 根据权利要求l所述的内存系统,其特征在于,其中上 述虚拟快取空间的现行范围小于上述内存部分,且由表示目前 有效的快取项目的一对指针所管理。
5. 根据权利要求4所述的内存系统,其特征在于,其中上 述虚拟快取空间还包括一第三指针,用以指向下一个被无效的 快取项目。
6. 根据权利要求l所述的内存系统,其特征在于,其中上述虚拟快取空间的各快取项目包括信息位,用以表示与上述快 取项目有关的数据的存取状态。
7. 根据权利要求l所述的内存系统,其特征在于,其中上 述客户端包括顶点着色器以及几何着色器。
8. 根据权利要求l所述的内存系统,其特征在于,其中上 述虚拟快取控制器通过比对上述快取索引与所有位于上述现行 范围的快取项目以执行上述快取命中测试。
9. 一种内存存取方法,适用于多个客户端共同存取一实体 高速緩存,其特征在于,该内存存取方法包括分别对应至少二个虛拟存储空间的多个快取项目至上述实 体高速緩存的 一 内存部分,上述虚拟存储空间分別对应于上述 客户端,上述快取项目由一对指针组所控制;自上述客户端其中一者接收存取上述实体高速緩存其中一 槽的 一 请求,上述请求包括与上述实体高速緩存的上述槽有关 的一快取索引;比较上述快取索引与对应的上述虚拟存储空间中位于上述 指针组所定义的范围内的上述快取项目;以及当上述快取索引的比较结果得到快取命中时,从上述实体 高速緩存的上述槽存取数据,其中于比较上述快取索引与上述 快取项目时,当上述快取索引与上述指针组的距离超过一临界 值时,从上述实体高速緩存的上述槽移除上述数据。
10. 根据权利要求9所述的内存存取方法,其特征在于,还 包括当上述快取索引的比较结果得到快取失误时,于对应的上 述虚拟存储空间分配一个新的快取项目。
11. 根据权利要求9所述的内存存取方法,其特征在于,其 中上述比较步骤还包括比较上述快取索引与一无效指针,上述 无效指针用以指向对应的上述虚拟存储空间中下一个被无效的快取项目。
12. 根据权利要求9所述的内存存取方法,其特征在于,其 中上述指针组定义一现行范围,上述现行范围具有与上述实体 高速緩存的上述内存部分不同的大小。
13. 根据权利要求9所述的内存存取方法,其特征在于,其 中上述存取以及移除步骤还包括更新上述虚拟存储空间中对应 的快取项目的状态位。
14. 根据权利要求9所述的内存存取方法,其特征在于,其 中上述对应步骤还包括对应上述实体高速緩存的上述槽至 一状 态表,上述状态表包括快取内位以及对应上述槽的有效位。
15. —种图形处理系统,其特征在于,该图形处理系统包括一实体高速緩存,具有多个槽用以储存数据; 一高速緩存控制器,用以分配上述实体高速緩存的一个内 存空间,上述高速緩存控制器更根据上述槽其中一者与被下一 图形处理管线阶段所读取的距离而于上述实体高速緩存移除对 应的槽;以及多个客户端,用以从上述实体高速緩存存取数据以执行处 理,其中上述高速緩存控制器包括与上述内存空间的上述槽有 关的一个状态表,而各上述客户端分别具有对应的一个内存空 间。
16. 根据权利要求15所述的图形处理系统,其特征在于, 上述状态表包括目前指针以及快取内指针,上述快取内指针表 示欲存取的数据是否已出现于上述实体高速緩存,而上述状态 表是用以追踪各槽的距离。
17. 根据权利要求15所述的图形处理系统,其特征在于, 距离将被读取的槽最远的槽较其它有效的槽先被移除并写入一二级高速緩存或其它存储装置。
18. 根据权利要求16所述的图形处理系统,其特征在于, 其中上述距离通过计算目前的一无效指针与上述目前指针的差 值来获得,其中上述无效指针表示各上述客户端于下一图形处 理管线阶段的 一 读取位置。
19. 根据权利要求15所述的图形处理系统,其特征在于, 其中上述实体高速緩存由图形处理系统的所有图形处理管线阶 段所共享,而上述客户端具有不同的快取存取格式。
20. 根据权利要求15所述的图形处理系统,其特征在于, 其中上述客户端包括顶点着色器以及几何着色器。
全文摘要
本发明提供一种内存系统、内存存取方法以及图形处理系统,用以于图形处理管线流程的多个客户端之间共享实体高速缓存。所述内存系统包括一实体高速缓存,具有可经由一快取索引来存取的一内存部分。该内存系统还包括至少二个虚拟快取空间,对应至上述内存部分,各虚拟快取空间具有一现行范围,上述现行范围具有与上述内存部分不同的大小,以及至少一虚拟快取控制器,根据上述客户端的一者对上述实体高速缓存所发出的存取要求于上述虚拟快取空间的现行范围执行一快取命中与失误测试。再者,当上述快取索引的快取命中测试得到一快取命中结果时,由上述内存部分的对应位置存取数据。本发明使得顶点着色器以及几何着色器得以共享实体高速缓存。
文档编号G06F12/08GK101470671SQ20091000159
公开日2009年7月1日 申请日期2009年1月15日 优先权日2008年1月16日
发明者提莫·佩塔西, 阳 焦 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1