专利名称:用于多个软件程序的瓦片式高速缓存器的制作方法
技术领域:
本发明大体来说涉及电子学,且更具体来说涉及用于为多个软件程序提供存储的技术。
背景技水
许多电子装置能够并行执行多个软件程序。举例来说,图形处理器可执行例如视频游戏、制图、成像等应用的多个图形程序。每一程序是指令序列。可针对每一程序维持程序计数器且所述程序计数器可指向针对所述程序将要执行的当前指令。
正被执行的程序可能较大且因此存储在大容量存储单元中。为改善操作速度,可将每一程序的一小部分从所述大容量存储单元加载到指令高速缓存器上,所述高速缓存器是位置更接近处理器的快速存储器。所述指令高速缓存器可存储正被执行的所有程序的指令。为改善所述指令高速缓存器的使用,所述程序可共享所述高速缓存器内的相同地址空间。那么此将允许每一高速缓存器位置存储任何程序的指令。
在一个高速缓存器中存储多个程序的指令的主要问题是所述程序之间的"指令颠簸"。指令颠簸是其中一个以上程序争用高速缓存器的同一位置且其指令不断覆写彼此的现象。指令颠簸导致过多的高速缓存未命中。每当在高速缓存器中找不到所需指令时,高速缓存未命中发生。由于通常首先用指令填充高速缓存器,且随后检索并执行所述指令,因此高速缓存未命中导致指令执行上的延迟。指令颠簸可不利地冲击所有受影响程序的性能。
发明内容
本文说明用于将多个软件程序的指令、常数值及其它类型的数据存储在高速缓存
器中的技术。所述技术避免所述程序之间的破坏且进一步允许在所述程序之间高效地共享可用高速缓存器存储空间。
在实施例中, 一种设备包括高速缓存器及高速缓存器控制器。所述高速缓存器为多个程序提供存储且被分割为多个瓦片。每一瓦片可被指派到一个程序。可基于每一程序的高速缓存器使用、可用瓦片及/或其它因素向所述程序指派任何数量的瓦片。所述高速缓存器控制器识别被指派到所述程序的瓦片且产生用于存取所述高速缓存器的高速缓存器地址。
在实施例中,所述高速缓存器分割为多个物理瓦片。所述高速缓存器控制器向所述程序指派逻辑瓦片且将所述逻辑瓦片映射到所述高速缓存器内的物理瓦片。逻辑及物理瓦片的使用可简化向程序的瓦片指派及瓦片的管理。所述高速缓存器控制器接收用于程序的程序计数器,基于所述程序计数器导出逻辑瓦片地址,基于所述逻辑瓦片地址及逻辑瓦片到物理瓦片的映射产生物理瓦片地址,且用所述物理瓦片地址形成高速缓存器地址。然后,以所述高速缓存器控制器所确定的高速缓存器地址从所述高速缓存器中检索所需指令。
下文将进一步详细说明本发明的各个方面及实施例。
当结合图式参照下文所述详细说明时,本发明的方面及实施例将变得更加明了,在所有图式中相同的参考字符对应地进行识别。图l显示图形系统的框图。
图2显示所述图形系统内着色器核心的框图。
图3显示具有瓦片架构的高速缓存器的逻辑瓦片及物理瓦片。
图4显示线程调度器及所述着色器核心内的指令高速缓存器。
图5显示逻辑瓦片査找表及物理地址査找表。
图6显示程序到逻辑瓦片的直接映射。
图7显示指令高速缓存器的地址产生。
图8显示指令高速缓存器内的标签RAM及指令RAM。
图9显示无线装置的框图。
具体实施例方式
本文所用"实例性"一词意指"用作实例、示例或例示"。本文中任何说明为"实例性"的实施例或设计未必应视为较其它实施例或设计为优选或有利。
本文所说明的高速缓存技术可用于能够并行地执行多个软件程序的各种系统及装置。举例来说,所述技术可用于计算装置、通信装置等。为清晰起见,下文针对图形系统具体说明所述技术。
图1显示图形系统100的框图,其可以是独立的系统或较大系统(例如,计算系统、无线通信装置(例如,蜂窝式电话)等)的部分。图形系统100支持P个图形程序/应用程序110a到110p,其程序ID分别为O到P-1,其中P可以是任意整数值。程序110a到110p可并行执行且可用于视频游戏、制图及/或其它应用。
图形处理器120执行程序110a到110p的处理。图形处理器120可将每一程序的处理(例如)自动地且以对于所述程序透明的方式分成一系列线程。线程(或执行线程)指示可通过一组一个或一个以上指令执行的特定任务。线程允许程序具有由不同单元同时执行的多个任务且进一步允许不同的程序共享资源。在图1所示的实施例中,图形处理器120包括着色器核心130、纹理引擎140及 高速缓冲存储器系统150。核心通常是指集成电路内的处理单元。术语"核心"、"引 擎"、"机器"、"处理器"及"处理单元"经常可互换使用。着色器核心130可执 行图形操作,例如着色,其是涉及照明、遮蔽等的高度复杂的图形操作。纹理引擎 140可执行图形操作,例如纹理映射,纹理映射是涉及用纹理图像的色彩修改像素的 色彩的另一复杂图形操作。高速缓冲存储器系统150可包括一个或一个以上高速缓存 器,其是可存储着色器核心130及纹理引擎140的指令及/或数据的快速存储器。图 形处理器120可包括其它处理及控制单元、引擎及存储器。图形处理器120也可实施 软件接口,例如开放性图形库(OpenGL) 、 Dkect3D等。OpenGL说明于日期为2004 年IO月22日且标题为"OpenGL⑧图形系统说明书"的文件的2.0版本中,所述文 件公开可得。
主存储器160是位置离图形处理器120较远(例如,芯片外)的较大较慢存储器。 主存储器160存储可加载到高速缓冲存储器系统150内的高速缓存器中的指令及数 据。主存储器160可存储图形处理器120正在执行的所有程序。
图2显示图1中的着色器核心130的实施例的框图。在着色器核心130内,多路 复用器(Mux) 208从程序110a到110p接收线程且将这些线程提供到线程调度器与 上下文寄存器210。线程调度器210执行各种功能以调度并管理线程的执行。线程调 度器210确定是否接受新的线程、是否针对每一接受的线程创建寄存器映射表及是否 向所述线程分配资源。所述寄存器映射表指示逻辑寄存器地址到物理寄存器堆地址之 间的映射。对于每一线程,线程调度器210确定所述线程所需要的资源是否准备就绪, 如果所述线程的任何资源(例如,指令、寄存器堆或纹理读取)未准备就绪那么将所 述线程推入睡眠队列中,且当所有所述资源准备就绪时将所述线程从所述睡眠队列移 动到活跃队列。线程调度器210与加载控制单元212介接,以使所述线程的资源同步。
线程调度器210还管理线程的执行。线程调度器210从指令高速缓存器220提取 每一线程的指令,如果需要将每一指令解码,且执行所述线程的流控制。线程调度器 210选择用于执行的活跃线程,检査所选择线程之间的读取/写入端口冲突,且如果不 存在冲突,那么将一个线程的指令发送到算术逻辑单元(ALU) 216且将另一线程的 指令发送到加载控制单元212。线程调度器210针对每一线程维持程序计数器且在指 令被执行或程序流被更改时更新此计数器。线程调度器210还发出提取未命中指令的 请求并移除完成的线程。
指令高速缓存器220存储程序110a到110p的指令。这些指令指示针对每一线程
将要执行的特定操作。每一操作可以是算术运算、初等函数、存储器存取操作等。指 令高速缓存器220可在需要时通过加载控制单元212加载来自高速缓冲存储器系统 150及/或主存储器160的指令。
ALU 216执行算术运算,例如加法、减法、乘法、相乘与累加、绝对、否定、 比较、饱和等。ALU 216还可执行逻辑运算,例如AND、 0R、 XOR等。ALU 216还可执行格式转换,例如从整数到浮点数,且反之亦然。常数缓冲器218存储ALU 216 使用的常数值(例如,换算因数、滤波器加权等)。
加载控制单元212控制着色器核心130内各种单元的指令及数据流动。加载控制 单元212与高速缓冲存储器系统150介接且用来自高速缓冲存储器系统150的指令及 数据加载指令高速缓存器220、常数缓冲器218及寄存器堆库/输出缓冲器222。加载 控制单元212还将输出缓冲器222中的数据保存到高速缓冲存储器系统150。加载控 制单元212还向纹理引擎140提供指令并从所述纹理引擎接收结果。输出缓冲器222 存储来自ALU 216及纹理引擎140的中间结果及最终结果。多路分用器(Demux) 224从输出缓冲器222接收经执行线程的最终结果且将这些结果提供到程序110a到 110p。
在实施例中,用瓦片架构实施指令高速缓存器220,所述瓦片架构可避免共享高 速缓存器的程序之间的指令颠簸。所述瓦片架构还允许在所有程序之间高效地共享可 用高速缓存器存储空间。所述瓦片架构将指令高速缓存器220分割为多个(T)瓦片。 在实施例中,所述T个瓦片具有相同的大小,且每一瓦片包括预定数量的高速缓存线。
高速缓存线可以是任何大小且可存储任何数量的指令。通常可在一个时钟循环中从另 一存储器填充高速缓存线或将高速缓存线保存到所述另一存储器。在此实施例中,可
基于每一程序的高速缓存器使用及可用瓦片向所述程序指派一个或一个以上瓦片。在 另一实施例屮,所述瓦片具有可固定或可配置的不同大小。在此实施例中,可基于每 一程序的高速缓存器使用及可用瓦片向所述程序指派一个(或可能多个瓦片)适当大 小的瓦片。为清晰起见,以下说明针对具有T个相等大小的瓦片的实施例。为简明起 见,以下说明假设每一瓦片可存储K个指令,其中K可以是任意值。
图3显示指令高速缓存器220的逻辑瓦片及物理瓦片的实施例。在此实施例中, 指令高速缓存器220在程序看来是虚拟高速缓存器310。虚拟高速缓存器310包括T 个逻辑瓦片0到T-1。可向每一程序指派任何数量的连续逻辑瓦片。在图3所示的实 例中,向程序O指派逻辑瓦片O及1,向程序1指派逻辑瓦片2到5,等等。
指令高速缓存器220实施存储程序的指令的物理高速缓存器320。物理高速缓存 器320包括T个物理瓦片0到T-1,其中每一物理瓦片能够存储K个指令。将每一 逻辑瓦片映射到一个物理瓦片。某些逻辑瓦片的实例性映射显示于图3中。在此实例 中,物理瓦片O存储逻辑瓦片1的指令,物理瓦片1存储逻辑瓦片T-2的指令,等等。
逻辑瓦片及物理瓦片的使用可简化向程序的瓦片指派及瓦片的管理。举例来说, 可通过简单地更新査找表向给定程序指派额外、更少或不同的逻辑瓦片,而不必在物 理瓦片之间传送指令。向每一程序指派连续的逻辑瓦片可简化地址的产生,如下文所 说明。
图4显示图3中线程调度器210及指令高速缓存器220的实施例。在线程调度器 210内,线程管理器410接收将要执行的线程并针对所述线程提供程序ID及程序计 数器。所述程序ID识别所述线程所属于的程序。所述程序计数器指示针对所述线程将要执行的当前指令,其称作所需指令。
高速缓存器控制器420管理逻辑及物理瓦片并产生高速缓存器地址。在高速缓存
器控制器420内,逻辑瓦片査找表(LUT) 430接收程序ID且提供第一逻辑瓦片以 及被指派到所述程序的逻辑瓦片的数量。对于图3中所示的实例,査找表430将提供 '2'作为所述第一逻辑瓦片及'4'作为针对程序1指派的瓦片的数量。地址产生器 440接收所述程序计数器、所述第一逻辑瓦片及所指派瓦片的所述数量。地址产生器 440提供包含所需指令的逻辑瓦片的地址、所需指令的此逻辑瓦片内的偏移及指令标 签。物理地址査找表450接收所述逻辑瓦片地址弁提供映射到此逻辑瓦片地址的物理 瓦片的地址。下文说明高速缓存器控制器420内的单元的操作。
指令高速缓存器220包括指令随机存取存储器(RAM) 460、标签RAM 470及 比较逻辑480。标签RAM 470接收所述逻辑瓦片地址并提供指示当前存储在所述逻 辑瓦片地址的指令RAM460中的程序区段的标签。比较逻辑480从标签RAM 470接 收所存储的标签且从地址产生器440接收指令标签。比较逻辑480将所述两个标签相 比较,在所述两个标签相等的情况下提供高速缓存命中,且否则提供高速缓存未命中。 高速缓存命中意指包含所需指令的程序区段存储在指令RAM460中。线程调度器210 从比较逻辑480接收高速缓存未命中/命中指示符,在存在高速缓存命中的情况下调 度所需指令的执行,且在存在高速缓存未命中的情况下停转指令的执行。下文说明指 令高速缓存器220内单元的操作。
图5显示图4中高速缓存器控制器420内逻辑瓦片査找表430及物理地址査找表 450的实施例。在此实施例中,逻辑瓦片査找表430包括P个程序的P个条目, 一个 条目用于每一程序。可通过程序ID对所述P个条目加索引。每一程序的条目包括用 于被指派到所述程序的第一逻辑瓦片的字段及用于被指派到所述程序的逻辑瓦片的 数量的字段。在图3所示的实例中,向程序0指派以逻辑瓦片0开始的两个逻辑瓦片, 向程序1指派以逻辑瓦片2开始的四个逻辑瓦片,向程序2指派以逻辑瓦片6开始的 八个逻辑瓦片,等等。可向每一程序指派连续的逻辑瓦片以简化地址产生。然而,可 以任何次序向所述程序指派逻辑瓦片,例如,可向任何程序指派逻辑瓦片O。
在图5所示的实施例中,物理地址査找表450包括T个逻辑瓦片的T个条目, 一个条目用于每一逻辑瓦片。可通过逻辑瓦片地址对所述T个条目加索引。每一逻辑 瓦片的条目指示所述逻辑瓦片所映射到的物理瓦片。在图3所示的实例中,逻辑瓦片 0映射到物理瓦片3,逻辑瓦片1映射到物理瓦片O,逻辑瓦片2映射到物理瓦片Z, 逻辑瓦片3映射到物理瓦片T-3,等等。每当向程序指派额外、更少及/或不同的逻辑 瓦片时可更新査找表430及450,如下文所说明。
图6显示直接映射的方案的程序到其所指派逻辑瓦片的实例性映射。所述程序被 指派L个逻辑瓦片,其中L可以是任何正整数值。然而,为简化地址计算,L可以是 2的幂,例如2、 4、 8等。大体来说,所述L个所指派逻辑瓦片可以是所述T个可用 逻辑瓦片中的任一者。为简化以下说明,所述L个所指派逻辑瓦片是逻辑瓦片0到
10L-l。
可将所述程序划分为连续编号的区段,其中每一区段等于一个物理瓦片的大小。 在所述直接映射的方案中,所述程序的每一区段映射到一个所指派的逻辑瓦片。举例 来说,所述程序的区段O、 L、 2L等可映射到所指派的逻辑瓦片0,所述程序的区段l、 L+l、 2L+1等可映射到所指派的逻辑瓦片1,等等。大体来说,程序区段;c可映射到 所指派的逻辑瓦片y,其中^= (xMODL)且MODL表示模数-L运算。
所述程序的区段也通过标签识别。区段0到L-l具有标签0,区段L到2L-1具 有标签l,等等。标签RAM存储被存储在每一逻辑瓦片中的程序区段的标签。在图 6所示的实例中,所述标签RAM指示逻辑瓦片0存储具有标签2的程序区段2L,逻 辑瓦片1存储具有标签0的程序区段1,等等。
所述直接映射的方法减少旨在确定所需指令是否存储在指令高速缓存器220中 的比较操作的数量。由于所述所需指令可存储在仅一个所指派的逻辑瓦片中,因此可 执行仅一个比较操作来确定所述所需指令是否存储在指令高速缓存器220中。在另一 实施例中,使用N路组关联方案,且所述程序的每一区段可映射到N个可能逻辑瓦 片中的任一者,其中N〉1。可执行多达N个比较操作来确定所需指令是否存储在所 述指令的N个可能逻辑瓦片中的任一者中。为清晰起见,以下说明针对直接映射的方 案。
图7显示指令高速缓存器220的地址产生。程序计数器包括预定数量的位且分割 为&个最低有效位(LSB)及m个最高有效位(MSB) 。 &由每一物理瓦片的大小确 定且可给定为Kz^,其中K是在指令的数量的单元中给定的瓦片大小。m是程序计 数器的剩余位。
程序计数器的个LSB用作物理瓦片的偏移。程序计数器的所述m个MSB用 作基地址,所述基地址是包含所需指令的程序区段(或简而言之,所需程序区段)的 开始地址。所述基地址用于确定包含所述所需程序区段以及此区段的标签的逻辑瓦 片。
所述所需程序区段所映射到的逻辑瓦片可如下确定
逻辑瓦片地址=(基地址MODL) +第一逻辑瓦片地址。 方程式(1)
可通过査找逻辑瓦片地址获得与此逻辑瓦片相关联的物理瓦片,如下所示 物理瓦片地址-LUT (逻辑瓦片地址), 方程式(2)
其中LUT ()表示査找操作。
所需程序区段的标签可如下确定
指令标签=基地址DIV L, 方程式(3)
其中DIV表示提供商的运算。如果L是2的幂或L二2,,那么方程式(O中的MOD 运算提供所述基地址的/个LSB,且方程式(3)中的DIV运算提供所述基地址的剩 余m-《个MSB。
通过将物理瓦片地址与偏移连接来获得高速缓存器地址,如下所示高速缓存器地址=物理瓦片地址11偏移, 方程式(4)
其中"II"表示连接操作。
图8显示图4中指令高速缓存器220内标签RAM 470的实施例。标签RAM 470 包括T个逻辑瓦片的T个条目,每一逻辑瓦片具有一个条目。可通过来自图4中的地 址产生器440的逻辑瓦片地址对所述T个条目加索引。在图8所示的实施例中,每一 逻辑瓦片的条目包括标签及有效位。所述标签指示存储在所述逻辑瓦片(或实际上与 所述逻辑瓦片相关联的物理瓦片)中的程序区段的基地址。在图3所示的实例中,逻 辑瓦片0的条目存储存储在物理瓦片3中的程序区段的标签,逻辑瓦片1的条目存储 存储在物理瓦片O中的程序区段的标签,等等。每一逻辑瓦片的有效位指示所述逻辑 瓦片当前是否存储有程序区段。当向程序指派新的逻辑瓦片时,可将所述有效位设定 为'0'以指示所述逻辑瓦片没有有效数据。可在用程序区段填充所述逻辑瓦片之后 将所述有效位设定为'l'并可更新所述标签。
为确定所需指令是否存储在给定的逻辑瓦片中,从标签RAM 470获得所述逻辑 瓦片的标签且将其与来自地址产生器440的指令标签相比较。如果所述两个标签匹配 且如果有效位是'l',那么存在高速缓存命中。在此情况下,所需指令存储在所述 逻辑瓦片中且可以此指令的高速缓存器地址从指令RAM 460中检索所述指令。所述
高速缓存器地址包含适合的物理瓦片地址以及所述瓦片的偏移。如果存在高速缓存未 命中,那么可用包含所需指令的程序区段填充所述物理瓦片。然后,用加载到所述物 理瓦片中的程序区段的标签更新相关联逻辑瓦片的标签。
作为实例,地址产生器440可指示所需指令在程序区段"中,其映射到逻辑瓦片 &。物理地址査找表450可指示逻辑瓦片&映射到物理瓦片c。如果标签RAM470指 示存储在逻辑瓦片&中的程序区段具有标签",那么存在高速缓存命中,且可从物理 瓦片c检索所述所需指令。相反地,如果标签RAM 470指示存储在逻辑瓦片&中的 程序区段具有并非fl的标签,那么存在高速缓存未命中。然后,可将程序区段fl加载 到物理瓦片c中,且可更新标签RAM 470以存储逻辑瓦片&的标签a。
在图4及8所示的实施例中,通过逻辑瓦片地址对标签RAM 470中的标签加索 引。因为所述逻辑瓦片地址在物理瓦片地址之前可用,因此此实施例允许更早地査找 标签RAM470中的标签。在另一实施例中,通过物理瓦片地址对标签RAM470中的 标签加索引。对所述标签加索引的方式可影响每当对程序指派、重新指派及去指派逻 辑瓦片时更新标签的方式。
图8还显示指令高速缓存器220内指令RAM460的实施例。在此实施例中,每
一高速缓存线包括两个条目,且每一条目存储一个指令。每一瓦片包括与0到K-l 的偏移相关联的K个条目的K/2个高速缓存线。图7中产生的高速缓存器地址包括指 令RAM 460内特定瓦片的物理瓦片地址及此瓦片内特定条目的偏移。大体来说,瓦 片可包括任何数量的高速缓存线,且每一高速缓存器可以是任何大小且可存储任何数 量的指令。
12可基于正被执行的程序的数量、这些程序的高速缓存器使用、可用逻辑瓦片及/ 或其它因素动态地向所述程序指派及去指派逻辑瓦片。如果程序从执行中退出,那么 可将被指派到此程序的逻辑瓦片重新指派到其它程序。如果启动新的程序,那么可从 其它程序取逻辑瓦片且将所述逻辑瓦片指派到此新程序。
可支持以下操作
1. 相同数量的逻辑瓦片到程序的重新指派,
2. 额外逻辑瓦片到程序的指派,
3. 逻辑瓦片从程序的去指派,
4. 程序的退出,及
5. 新程序的启动。
例如,当另一程序退出或启动新程序时,可向程序重新指派相同数量的逻辑瓦片。
在此情况下,用所述程序的新的第一逻辑瓦片更新逻辑瓦片查找表430。通过将物理
瓦片地址从旧的逻辑瓦片地址/位置移动到所述新逻辑瓦片地址来更新物理地址査找
表450。还可通过将标签从旧的逻辑瓦片地址移动到所述新逻辑瓦片地址来更新标签 RAM 470。
例如,当逻辑瓦片变得可用及/或程序的高速缓存器使用增加时,可向所述程序 指派额外逻辑瓦片。在此情况下,用所述程序的所指派逻辑瓦片的新数量(新的L值) 更新逻辑瓦片査找表430。用所述新L值重新计算当前存储在指令RAM 460中的程 序区段的标签并将其存储在标签RAM 470中的适合逻辑瓦片地址中。可将所述新指 派的逻辑瓦片的有效位设定为'0'以指示这些逻辑瓦片没有有效数据。
例如,当启动新程序时,可对程序去指派一些逻辑瓦片。在此情况下,用所述程 序的所指派逻辑瓦片的新数量(新的L值)更新逻辑瓦片査找表430。用所述新L值 重新计算当前存储在指令RAM 460中的程序区段的标签。将当前指派的逻辑瓦片的 标签存储在标签RAM 470中的适合逻辑瓦片地址中。丢弃经去指派逻辑瓦片的标签。
当程序的执行完成时,可退出所述程序。可回收指派到所述程序的所有逻辑瓦片 并将其指派到其它程序。可用所述程序的零个所指派逻辑瓦片(L = 0)更新逻辑瓦片 査找表430。
可启动新程序并向其指派一个或一个以上逻辑瓦片。可用第一逻辑瓦片及被指派 到所述新程序的逻辑瓦片的数量更新逻辑瓦片查找表430。可将所述新指派的逻辑瓦 片的有效位设定为'0'。
可在任何给定时刻执行以上操作的任一组合。举例来说,程序的退出可导致剩余 程序的逻辑瓦片的指派及/或重新指派。新程序的启动可导致其它程序的逻辑瓦片的 去指派及/或重新指派。作为实例,起初可如图5中所示向程序指派逻辑瓦片。然后, 程序2可从执行中退出,且可将被指派到此程序的八个逻辑瓦片重新指派到其它程 序。举例来说,可向程序0指派逻辑瓦片0到7,可向程序1指派逻辑瓦片8到11, 且可向程序3指派逻辑瓦片12到17。在此实例中,向程序O指派六个额外逻辑瓦片,向程序1重新指派逻辑瓦片,且向程序3指派两个额外逻辑瓦片。可如上文所说明针
对这些程序更新查找表430及450及标签RAM 470。
为清晰起见,上文说明了使用逻辑瓦片及物理瓦片的指令高速缓存器220的具体 实施例。在另一实施例中,不使用逻辑瓦片,且向程序指派物理瓦片并将所述程序直 接映射到其所指派的物理瓦片。可使用査找表来识别哪些物理瓦片被指派到每一程 序。
瓦片式高速缓存器是用瓦片架构实施的高速缓存器。大体来说,瓦片式高速缓存 器可包括任何数量的瓦片,所述瓦片可具有相同大小或不同大小。可向程序指派逻辑 瓦片或物理瓦片且可使用直接映射或N路组关联将所述程序映射到所述所指派的瓦 片。标签RAM可存储通过逻辑瓦片地址或物理瓦片地址加索引的标签。大体来说, 可以各种方式实施瓦片高速缓存器。可通过瓦片式高速缓存器的设计确定瓦片式高速 缓存器的各种单元的操作且可使瓦片式高速缓存器的各种单元的操作与瓦片式高速 缓存器的设计匹配。
瓦片式高速缓存器可用于存储各种类型的数据。在图2所示的实施例中,指令高 速缓存器220及常数缓冲器218可各自用瓦片式高速缓存器实施。也可在高速缓冲存 储器系统150中使用 一个或一个以上瓦片式高速缓存器来存储各种类型的数据,例如 像素、纹理图等。
瓦片式高速缓存器可提供某些益处,例如避免共享所述高速缓存器的程序之间的 破坏、用于标签比较的低功率消耗、较小的集成电路(IC)面积等等。
本文所说明的高速缓存技术可用于无线通信、计算、网络连接、个人电子装置等。 下文说明用于无线通信的技术的实例性使用。
图9显示无线通信系统中无线装置900的实施例的框图。无线装置900可以是蜂 窝式电话、终端、手持机、个人数字助理(PDA)或某种其它装置。所述无线通信系 统可以是码分多址(CDMA)系统、全球移动通信系统(GSM)系统或某种其它系统。
无线装置900能够经由接收路径及传输路径提供双向通信。在所述接收路径上, 基站所传输的信号由天线912接收并提供到接收器(RCVR)914。接收器914调节并 数字化所接收的信号,并将样本提供到数字区段920以进行进一步处理。在所述传输 路径上,传输器(TMTR) 916接收将要从数字区段920传输的数据、处理并调节所 述数据,并产生经调制的信号,所述信号经由天线912传输到基站。
数字区段920包括各种处理及接口单元,例如调制解调器处理器922、视频处理 器924、应用程序处理器926、显示器处理器928、控制器/处理器930、图形处理器 940及外部总线接口 (EBI) 960。调制解调器处理器922执行数据传输及接收的处理, 例如编码、调制、解调制及解码。视频处理器924对视频应用(例如,摄录一体机、 视频重放及视频会议)的视频内容(例如,静止图像、移动视频及移动文本)执行处 理。应用程序处理器926执行各种应用(例如,多路呼叫、网页浏览、媒体播放器及 用户接口)的处理。显示器处理器928执行处理以促进视频、图形及文本在显示器单元980上的显示。控制器/处理器930可引导数字区段920内各种处理及接口单元的 操作。
图形处理器940执行图形应用的处理且可如上文所说明来实施。举例来说,图形 处理器940可包括图2及4中的线程调度器210及指令高速缓存器220。高速缓冲存 储器系统950存储图形处理器940的指令及/或数据。EBI 960促进数据在数字区段920 与主存储器970之间的传送。
数字区段920可用一个或一个以上数字信号处理器(DSP)、微处理器、精简指 令集计算机(RISC)等来实施。数字区段920还可制作在一个或一个以上专用集成电 路(ASIC)或某种其它类型的集成电路(IC)上。
本文所说明的高速缓存技术可实施在各种硬件单元中。举例来说,所述高速缓存 器可实施在ASIC、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、现场可 编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器及其它电子单元中。
所述高速缓存技术的某些部分可实施在固件及/或软件中。举例来说,瓦片式高 速缓存器的管理及控制可以执行本文所说明的功能的固件及/或软件模块(例如,程 序、功能等)来实施。固件及/或软件码可存储在存储器(例如,图9中的存储器970) 中且由处理器(例如,处理器930)执行。所述存储器既可实施在处理器内部也可实 施在处理器外部。
提供上文对所揭示实施例的说明旨在使所属技术领域中的技术人员能够制作或 使用本发明。所属技术领域中的技术人员将易于得知这些实施例的各种修改,且本文 所定义的一般原理也可在不背离本发明的精神或范围的情况下适用于其它实施例。因 此,本文并不打算将本发明限定为本文所示的实施例,而是打算赋
权利要求
1、一种设备,其包含高速缓存器,其操作以为多个程序提供存储且被分割为多个瓦片,每一瓦片可被指派到一个程序;及高速缓存器控制器,其操作以识别被指派到所述多个程序的瓦片且产生用于存取所述高速缓存器的高速缓存器地址。
2、 如权利要求l所述的设备,其中每一程序被指派至少一个连续瓦片。
3、 如权利要求1所述的设备,其中每一程序被指派至少一个瓦片且基于直接映 射而映射到所述至少一个瓦片。
4、 如权利要求l所述的设备,其中每一程序被指派至少一个瓦片且基于N路组 关联映射而映射到所述至少一个瓦片,其中N大于一。
5、 如权利要求l所述的设备,其中所述高速缓存器被分割为多个物理瓦片,且 其中所述高速缓存器控制器向所述多个程序指派逻辑瓦片且将所述逻辑瓦片映射到 所述物理瓦片。
6、 如权利要求5所述的设备,其中所述高速缓存器控制器包含 査找表,其操作以识别被指派到所述多个程序的逻辑瓦片。
7、 如权利要求6所述的设备,其中每一程序被指派至少一个连续逻辑瓦片,且 其中所述查找表存储第一逻辑瓦片及被指派到每一程序的逻辑瓦片的数量。
8、 如权利要求5所述的设备,其中所述高速缓存器控制器包含 査找表,其操作以存储所述逻辑瓦片到所述物理瓦片的映射。
9、 如权利要求5所述的设备,其中所述高速缓存器控制器包含 地址产生器,其操作以接收程序的程序计数器且提供对应于所述程序计数器的逻辑瓦片地址。
10、 如权利要求9所述的设备,其中所述地址产生器进一步基于所述程序到被指 派到所述程序的至少一个逻辑瓦片的直接映射而确定所述程序计数器的标签。
11、 如权利要求5所述的设备,其中所述高速缓存器控制器包含 地址产生器,其操作以接收程序的程序计数器,从所述程序计数器获得程序区段的基地址,用所述基地址、被指派到所述程序的第一逻辑瓦片及被指派到所述程序的 逻辑瓦片的所述数量导出逻辑瓦片地址,且用所述基地址及被指派到所述程序的逻辑 瓦片的所述数量导出所述程序计数器的标签。
12、 如权利要求1所述的设备,其中所述高速缓存器控制器接收程序被启动的指 示且向所述程序指派至少一个瓦片。
13、 如权利要求12所述的设备,其中所述高速缓存器控制器接收所述程序退出的指示且将所述至少一个瓦片指派到至少一个其它程序。
14、 如权利要求1所述的设备,其中所述高速缓存器包含第一存储器,其操作以为所述多个程序提供存储且被分割为所述多个瓦片,及 第二存储器,其操作以存储所述第一存储器中所述多个瓦片的标签。
15、 如权利要求1所述的设备,其中所述高速缓存器操作以存储所述多个程序的 指令。
16、 如权利要求1所述的设备,其中所述高速缓存器操作以存储所述多个程序的 常数值。
17、 一种集成电路,其包含高速缓存器,其操作以为多个程序提供存储且被分割为多个瓦片,每一瓦片可被指派到一个程序;及高速缓存器控制器,其操作以识别被指派到所述多个程序的瓦片且产生用于存取 所述高速缓存器的高速缓存器地址。
18、 如权利要求17所述的集成电路,其中所述高速缓存器被分割为多个物理瓦 片,且其中所述高速缓存器控制器向所述多个程序指派逻辑瓦片且将所述逻辑瓦片映 射到所述物理瓦片。
19、 如权利要求18所述的集成电路,其中所述高速缓存器控制器接收程序的程 序计数器,基于所述程序计数器而导出逻辑瓦片地址,且基于所述逻辑瓦片地址及逻 辑瓦片到物理瓦片的所述映射而产生物理瓦片地址。
20、 一种方法,其包含将高速缓存器中的多个瓦片指派到多个程序,每一瓦片可被指派到一个程序; 从所述多个程序中的一程序接收存取请求; 识别被指派到所述程序的至少一个瓦片;及基于被指派到所述程序的所述至少一个瓦片而产生高速缓存器地址。
21、 如权利要求20所述的方法,其中所述将所述高速缓存器中的所述多个瓦片 指派到所述多个程序包含向所述多个程序指派逻辑瓦片,及将所述逻辑瓦片映射到所述高速缓存器内的物理瓦片。
22、 如权利要求21所述的方法,其中所述产生所述高速缓存器地址包含 接收所述程序的程序计数器, 基于所述程序计数器而导出逻辑瓦片地址,及基于所述逻辑瓦片地址及逻辑瓦片到物理瓦片的所述映射而产生物理瓦片地址。
23、 一种设备,其包含指派装置,其用于将高速缓存器中的多个瓦片指派到多个程序,每一瓦片可被指 派到一个程序;接收装置,其用于从所述多个程序中的一程序接收存取请求; 识别装置,其用于识别被指派到所述程序的至少一个瓦片;及 产生装置,其用于基于被指派到所述程序的所述至少一个瓦片而产生高速缓存器 地址。
24、 如权利要求23所述的设备,其中所述用于将所述高速缓存器中的所述多个 瓦片指派到所述多个程序的装置包含用于向所述多个程序指派逻辑瓦片的装置,及 用于将所述逻辑瓦片映射到所述高速缓存器内的物理瓦片的装置。
25、 如权利要求24所述的设备,其中所述用于产生所述高速缓存器地址的装置包含用于接收所述程序的程序计数器的装置, 用于基于所述程序计数器而导出逻辑瓦片地址的装置,及 用于基于所述逻辑瓦片地址及逻辑瓦片到物理瓦片的所述映射而产生物理瓦片 地址的装置。
26、 一种无线装置,其包含 图形处理器,其操作以执行图形操作且包含指令高速缓存器,其操作以存储多个程序的指令且被分割为多个瓦片,每一 瓦片可被指派到一个程序,及高速缓存器控制器,其操作以识别被指派到所述多个程序的瓦片且产生用于 存取所述指令高速缓存器的高速缓存器地址。
27、 如权利要求26所述的无线装置,其中所述指令高速缓存器被分割为多个物理瓦片,且其中所述高速缓存器控制器向所述多个程序指派逻辑瓦片且将所述逻辑瓦 片映射到所述物理瓦片。
28、 如权利要求27所述的无线装置,其中所述高速缓存器控制器接收程序的程 序计数器,基于所述程序计数器而导出逻辑瓦片地址,且基于所述逻辑瓦片地址及逻 辑瓦片到物理瓦片的所述映射而产生物理瓦片地址。
全文摘要
本发明描述用于存储多个软件程序的指令、常数值及其它类型的数据的高速缓存技术。高速缓存器为多个程序提供存储且被分割为多个瓦片。每一瓦片可被指派到一个程序。可基于每一程序的高速缓存器使用、可用瓦片及/或其它因素而向所述程序指派任何数量的瓦片。高速缓存器控制器识别被指派到所述程序的瓦片且产生用于存取所述高速缓存器的高速缓存器地址。所述高速缓存器可分割为物理瓦片。所述高速缓存器控制器可向所述程序指派逻辑瓦片且可将所述逻辑瓦片映射到所述高速缓存器内的物理瓦片。逻辑及物理瓦片的使用可简化瓦片的指派及管理。
文档编号G06F9/38GK101495961SQ200780027947
公开日2009年7月29日 申请日期2007年7月24日 优先权日2006年7月25日
发明者春 于, 徐迪藻, 云 杜, 焦国方 申请人:高通股份有限公司