CN101183339A - 使存储器高速缓存中数据无效的方法与系统 - Google Patents
使存储器高速缓存中数据无效的方法与系统 Download PDFInfo
- Publication number
- CN101183339A CN101183339A CNA2007101860630A CN200710186063A CN101183339A CN 101183339 A CN101183339 A CN 101183339A CN A2007101860630 A CNA2007101860630 A CN A2007101860630A CN 200710186063 A CN200710186063 A CN 200710186063A CN 101183339 A CN101183339 A CN 101183339A
- Authority
- CN
- China
- Prior art keywords
- memory
- directory items
- bit
- memory cache
- cache
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
根据本发明的实施例,可以把分布的时间基信号耦合于存储器目录,该存储器目录为位于存储器高速缓存中的数据提供地址翻译。存储器目录可以具有指示是否已经由分布的时间基信号存取了存储器项目的属性比特。另外,存储器目录还可以具有指示在由分布的时间基信号存取了存储器项目之后,是否应该把存储器目录项目视为无效的属性比特。如果已经由分布的时间基信号存取了存储器项目,而且在由时间基信号存取了存储器项目之后应该把存储器目录项目视为无效的,则使用存储器目录项目的任何试图的地址翻译可能导致高速缓存丢失。高速缓存丢失可能启动从存储器对有效数据的获取。
Description
技术领域
总体上讲,本发明的实施例涉及计算机处理领域。
背景技术
通常,把根据三维景物描绘二维图像的过程称为图像处理。随着现代计算机工业的发展,图像处理也在不断发展。图像处理发展的一个具体的目标是,使三维景物的二维模拟或描绘尽可能地逼真。描绘逼真图像的一个限制是,现代监视器通过对像素的使用显示图像。
像素为可在监视器上对其进行照射的最小空间区域。大多数现代计算机监视器将使用成千上万,或者数以百万计的像素的组合,构成整个显示器,即所描绘的景物。各个像素按网格模式排列,并共同覆盖监视器的整个观看区域。可以照射各个像素,以描绘加以观看的最终画面。
把一种使用像素在二维监视器上描绘真实世界三维景物的技术称为光栅化(rasterization)。光栅化是获取按向量格式表示的二维图像(景物中几何对象的数学表示),并且把所述图像转换成在监视器上显示的各个像素的过程。在快速描绘图形方面,光栅化是高效的,并且使用了相对少量的计算能力,然而,光栅化通常具有某些缺陷。例如,光栅化常常会缺乏真实感,因为其不基于光的物理特性,相反,光栅化基于投射在二维平面的景物中的三维几何对象的形状。而且,通过光栅化描绘景物所需的计算能力,直接随将加以描绘的景物的复杂度的增加而攀升。随着图像处理日趋逼真,所描绘的景物也变得越来越为复杂。因此,随着图像处理的演化,光栅化愈加困难,因为光栅化的难度直接随复杂度而攀升。
把使用像素在二维监视器上描绘真实世界三维景物的另一种技术称为射线追踪(race tracing)。射线追踪技术追踪虚射线——那些行为类似于光的射线的射线——向将描绘在计算机屏幕上的三维景物中的传播。所述射线源自坐在计算机屏幕之后的观看者的眼睛,并且遍穿(traverse)构成计算机屏幕的各个像素,射向三维景物。每一被追踪的射线前进到景物中,并且可能与景物中的对象相交。如果射线与景物中的对象相交,则对象的特性和若干其它贡献因素用于计算把射线暴露于其的颜色和光的数量,或者用于计算颜色和光的缺乏量。然后,使用这些计算确定被追踪的射线所经过的像素的最终的颜色。
针对单一的景物,多次执行追踪射线的过程。例如,可以针对显示器中的每一个像素,追踪单一的射线。一旦已经追踪到能够确定构成计算机屏幕的二维显示的所有像素的颜色的足够数目的射线,则可以针对观看者,把三维景物的二维合成显示在计算机屏幕上。
射线追踪通常可比光栅化描绘更为逼真的真实世界三维景物。其部分原因在于,射线追踪模拟真实世界环境中光的传播与行为,而不是象使用光栅化那样简单地把三维形状投射于二维平面。因此,使用射线追踪所描绘的图形,在监视器上更精确地描绘了我们的眼睛习惯于在真实世界中所看到的东西。
而且,与光栅化相比,当景物变得较为复杂时,射线追踪还可更好地应对景物复杂度的增加。射线追踪对数性地缩小了景物复杂度。其原因在于,可以把同样数目的射线投射于景物,甚至是在景物变得较为复杂的情况下也如此。因此,当景物变得较为复杂时,就计算能力需求而言,射线追踪不会像光栅化那样深受其苦。
射线追踪的一个主要的缺陷是,为了描绘景物,需要大量的计算,因而需要大的处理能力。例如,当需要快速描绘时,这导致问题。例如,当某一图像处理系统准备描绘针对动画的图形,例如在游戏操纵台上描绘时。由于射线追踪所需的计算的增加,难以酷似真实情况那样快速地描绘动画(逼真的动画大约为每秒20~24帧)。
因此,存在着人们对执行射线追踪的更有效的技术与设备的需求。
发明内容
总体上讲,本发明的实施例提供了用于执行射线追踪的方法与装置。
根据本发明的实施例,提供了一种使存储器高速缓存中数据无效的方法。总体上讲,该方法包括:创建相应于存储器高速缓存的第一部分的第一存储器目录项目以及相应于存储器高速缓存的第二部分的第二存储器目录项目,其中,存储器目录项目提供针对存储器高速缓存中的数据的有效地址到实际地址的翻译;在第一存储器目录项目中设置第一比特,以指示当接收到分布的时间基信号时第一存储器目录项目为无效的;生成该分布的时间基信号;响应于该分布的时间基信号,在第一和第二存储器目录项目中设置第二比特;接收对存储器高速缓存的第一部分的存储器地址翻译的请求;以及通过检查第一存储器目录项目中的第一比特和第二比特,确定第一存储器目录项目为无效的。
根据本发明的另一个实施例,提供了一种计算机可读介质,当执行时,执行操作,该操作一般包括下述步骤:创建相应于存储器高速缓存的第一部分的第一存储器目录项目以及相应于存储器高速缓存的第二部分的第二存储器目录项目,其中,存储器目录项目提供针对存储器高速缓存中的数据的有效地址到实际地址的翻译;在第一存储器目录项目中设置第一比特,以指示当接收到分布的时间基信号时第一存储器目录项目为无效的;生成该分布的时间基信号;响应于该分布的时间基信号,在第一和第二存储器目录项目中设置第二比特;接收对存储器高速缓存的第一部分的存储器地址翻译的请求;以及通过检查第一存储器目录项目中的第一比特和第二比特,确定第一存储器目录项目为无效的。
根据本发明的另一个实施例,提供了一种系统。总体上讲,该系统包括:帧刷新计时器电路,耦合于第一处理元件,其中,把该帧刷新计时器电路配置成生成周期性的分布的时间基信号;存储器高速缓存,至少包括第一部分和第二部分;存储器目录,至少包括提供针对该存储器高速缓存的第一部分中的数据的有效地址到实际地址的翻译的第一目录项目和提供针对该存储器高速缓存的第二部分中的数据的有效地址到实际地址的翻译的第二目录项目;以及其中,把第一处理元件配置成:在第一目录项目中设置基于分布的时间基信号使存储器项目无效的比特;当接收到该分布的时间基信号时,在至少第一目录项目和第二目录项目中设置接收的分布的时间基信号比特;接收对位于存储器高速缓存的第一部分中的数据的存储器地址翻译的请求;以及通过把该基于分布的时间基信号使存储器项目无效的比特与该接收的分布的时间基信号比特进行比较,而确定第一存储器目录项目为无效的。
附图说明
图1说明了根据本发明的一个实施例的多核处理元件。
图2和10说明了根据本发明的实施例的多核处理元件网络。
图3说明了根据本发明的一个实施例的将由图像处理系统加以描绘的示范性的三维景物。
图4A~4C说明了根据本发明的一个实施例的将由图像处理系统加以描绘的二维空间和由图像处理系统所创建的相应的空间索引。
图5和8说明了根据本发明的一个实施例的将由图像处理系统加以描绘的三维景物。
图6和9说明了根据本发明的一个实施例的包含静态空间索引和动态空间索引的存储器高速缓存。
图7是一个流程图,说明了根据本发明的一个实施例的一种用于创建空间索引和管理在存储器高速缓存中的空间索引的存储的方法。
图11说明了根据本发明的一个实施例的存储器目录和存储器高速缓存。
图12图示了根据本发明一个实施例的高速缓存目录。
具体实施方式
本发明的实施例提供了使存储器高速缓存的选择部分无效,同时维持该存储器高速缓存的其它部分的有效性的方法与装置。根据本发明的一个实施例,分布的时间基信号与存储器目录中的属性比特相结合,可以用于使存储器高速缓存的某些所选择的部分无效。可以把分布的时间基信号耦合于存储器目录中的项目。当分布该时间基信号时,可以设置存储器目录项目中的属性比特,其指示:分布的时间基信号存取了存储器目录项目。而且,存储器目录项目还可以包含无效(invalidation)属性比特,如果其被置位,则指示:当接收到下一个分布的时间基信号时,应该把存储器目录项目视为无效的。如果设置了存储器目录项目中的无效属性比特,而且已经存取了该存储器目录项目,则通过存储器目录项目对地址翻译的任何相继的请求,可能导致高速缓存丢失。高速缓存丢失可能导致处理元件从存储器中获取有效数据,并且取代存储器高速缓存中的数据。因此,通过对分布的时间基信号和存储器目录项目中的属性比特的使用,可以有效地使存储器目录项目向其提供地址翻译的存储器高速缓存的一部分无效。
以下,参照本发明的实施例。但应该认识到,本发明不局限于所描述的具体的实施例。而是,为了实现和实践本发明,可以考虑下列特性和元件的任何组合,而无论它们是否与不同的实施例相关。而且,在各种实施例中,本发明提供了优于现有技术的诸多优点。然而,尽管本发明的实施例可以实现优于其它可行方案和/或现有技术的优点,但某一给定的实施例是否实现了某一具体的优点不是对本发明的限制。因此,以下的方面、特性、实施例以及优点仅为说明性的,而且不应将它们视为所附权利要求的元件或者所附权利要求的限制,除非在一或多个权利要求中明显加以阐明。同样,不应把对“本发明”的参照解释为此处所公开的任何发明主题的泛化,也不应将它们视为所附权利要求的元件或者所附权利要求的限制,除非在一或多个权利要求中明显加以阐述。
作为一种与计算机系统一起使用的程序产品,实现本发明的一个实施例。该程序产品的一或多个程序定义了各实施例的功能(包括此处所描述的方法),并且可将它们包含在各种计算机可读介质上。说明性的计算机可读介质包括,但不局限于:(i)永久性地存储在非可写存储介质(例如,计算机中的只读存储器设备诸如CD-ROM驱动器可读的CD-ROM盘等)上的信息;(ii)存储在可写存储介质(例如,软盘驱动器中的软盘或者硬盘驱动器)上的可变信息;(iii)通过通信介质,诸如通过计算机或者电话网络包括无线通信传递到计算机的信息。后面的那一实施例特别包括从因特网和其它网络所下载的信息。当执行那些控制本发明的功能的计算机可读指令时,这样的计算机可读介质代表了本发明的实施例。
总之,为实现本发明的实施例所执行的规程,可以为操作系统或者具体应用、部件、程序、模块、对象、或者指令序列的一部分。本发明的计算机程序通常由许多指令构成,本系统计算机将把这些指令翻译成机器可读格式,从而翻译成可执行的指令。而且,程序由变量和数据结构构成,它们既可以局部地驻留于程序,也可以在存储器中或者在存储设备上发现它们。另外,还可以根据某一应用标识以下所描述的各种程序,其中将针对该应用在本发明的一个具体的实施例中实现这些程序。然而,应该认识到,使用以下任何具体的程序术语仅仅是为了方便,因此本发明不局限于仅在所标识的和/或这样的术语所蕴含的任何具体的应用中使用。
示范性的处理器配置和通信网络
图1说明了根据本发明的一个实施例的多核处理元件100。多核处理元件100包括多个基本吞吐量引擎105(basic throughout engine,BTE)。BTE 105可以包含多个处理线程和核心高速缓存(例如,L1高速缓存)。位于每一BTE中的处理线程可具有对共享的多核处理元件高速缓存110(例如,L2高速缓存)的存取权。
BTE 105还可以具有对多个收件箱115的存取权。收件箱115可以为存储器映像的地址空间。可以把收件箱115映像到位于每一BTE 105中的处理线程。位于BTE中的每一线程可以具有存储器映像的收件箱以及对所有其它存储器映像的收件箱115的存取权。各收件箱115构成了BTE 105所使用的低延迟与高带宽的通信网络。
BTE可以把收件箱115用作网络以互相通信,并且在BTE之间重新分布数据处理工作。对于某些实施例,可以在通信网络中使用独立的发件箱,例如,用于接收BTE 105的处理结果。对于其它实施例,收件箱115也可以用作发件箱,例如,使用一个BTE 105把某一处理功能的结果直接写至将使用这些结果的另一个BTE 105的收件箱中。
可以把某一图像处理系统的聚集(aggregate)性能与BTE如何能够很好地分割和重新分布工作结合在一起。可以使用收件箱115的网络收集工作,以及把工作分布于其它BTE,而不破坏使用不具有帧到帧连贯性的BTE通信数据信息包的共享的多核处理元件高速缓存110。可以每帧描绘数百万三角形的图像处理系统可以包括按这一方式连接的多个BTE 105。
在本发明的一个实施例中,可以把一个BTE 105的线程赋予工作负载管理器。图像处理系统可以使用各种软件与硬件部件根据三维景物描绘二维图像。根据本发明的一个实施例,图像处理系统可以使用工作负载管理器,通过由图像处理系统所发布的射线,遍历空间索引。如以下参照图4进一步加以描述的,可以把空间索引作为用于把相对大的三维景物分割成较小边界体积(bounding volume)的树类型的数据结构加以实现。把射线追踪方法用于图像处理的图像处理系统可以使用空间索引快速地确定射线边界体积相交。在本发明的一个实施例中,工作负载管理器可以通过使用空间索引执行射线边界体积相交测试。
在本发明的一个实施例中,多核处理元件100上的多核处理元件BTE 105的其它线程可以是向量吞吐量引擎。在工作负载管理器确定了射线边界体积相交之后,工作负载管理器可以经由收件箱115把射线发布(发送)于多个向量吞吐量引擎之一。然后,向量吞吐量引擎可以判断射线是否与包含在边界体积中的图元(primitive)相交。向量吞吐量引擎还可以执行那些与确定射线所经过的像素的颜色相关的操作。
图2说明了根据本发明的一个实施例的多核处理元件200的网络。图2还说明了其中多核处理元件100的BTE之一的线程为工作负载管理器205的本发明的一个实施例。根据本发明的一个实施例,多核处理元件200的网络中的每一个多核处理元件2201~N可以包含一个工作负载管理器2051~N。根据本发明的一个实施例,多核处理元件200中的每一个多核处理元件2201~N还可以包括多个向量吞吐量引擎210。
根据本发明的一个实施例,工作负载管理器2051~N可以使条高速总线225与其它多核处理元件2201~N的其它工作负载管理器2051~N和/或向量吞吐量引擎210进行通信。向量吞吐量引擎210中的每一个向量吞吐量引擎210可以使用高速总线225与其它向量吞吐量引擎210或者工作负载管理器2051~N进行通信。工作负载管理器处理器205可以使用高速总线225收集那些与图像处理相关的任务和向其它工作负载管理器2051~N分布这些任务,和/或向其它向量吞吐量引擎210分布任务。对高速总线225的使用可允许工作负载管理器2051~N利用与工作负载管理器通信相关的数据信息包进行通信,而不影响高速缓存230。
示范性的三维景物
图3为由图像处理系统加以描绘的示范性的三维景物305。在三维景物305中,可以存在对象320。图3中的对象320呈不同的几何形状。尽管图3中仅说明了4个对象320,然而典型三维景物中的对象的数目可多可少。通常,三维景物将具有远多于图3中所说明对象的对象。
从图3中可以看出,对象的几何图形和大小是变化的。例如,图3中的一个对象为棱锥体320A。图3中的其它对象为箱体320B~D。在许多现代图像处理系统中,通常把对象划分成较小的几何形状(例如,方形、圆形、三角形等)。然后由多个较小的简单几何形状表示较大的对象。通常,把这些较小的简单几何形状称为图元。
三维景物305中也说明了光源325A-B。光源可以照射位于景物305中的对象320。另外,依据景物305中的对象320和光源325的位置,光源可以导致阴影投射于景物305中的对象上。
图像处理系统可以把三维景物305描绘成二维画面。图像处理系统还可以导致把二维画面显示在监视器310上。该监视器310可以使用许多不同颜色的像素330描绘最终的二维画面。
把一种由图像处理系统所使用的把三维景物320描绘成二维画面的方法称为射线追踪。由图像处理系统从观看者315的观看点把射线“发布(issue)”或者“射”入三维景物320来完成射线追踪。所述射线具有类似光射线的特性与行为。
从图3中可以看到一条射线340,其源自观看者315的位置,并且遍穿三维景物305。当射线340从观看者315遍历三维景物305时,射线340经过其中将由图像处理系统描绘最终二维画面的平面。在图3中,这一平面由监视器310加以表示。射线340经过该平面,即监视器310的点,由一个像素335加以表示。
如以上所简要讨论的,大多数图像处理系统使用了数千(即使不是数百万)个像素的网格在监视器310上描绘最终景物。网格330可以称作帧。每一单个的像素可以显示不同的颜色,以在监视器310上描绘最终合成的二维画面。使用射线追踪处理方法从三维景物描绘二维画面的图像处理系统,将计算所发布的一或多条射线在三维景物中所遇到的颜色。然后,图像处理系统将把射线所遇到的颜色赋予射线在其从观看者到三维景物的路径上所经过的像素。
对于每一像素,所发布的射线的数目可能不同。某些像素可能具有针对将加以描绘的具体景物所发布的多条射线。在这一情况下,根据来自针对该像素所发布的所有射线的每一颜色贡献来确定像素的最终颜色。其它像素可能仅具有单一的、其发布旨在确定二维画面中像素的所得到的颜色的射线。某些像素可能不具有图像处理系统所发布的任何射线,在这一情况下,可以由图像处理系统中的算法确定、近似或者赋予它们的颜色。
为了确定二维画面中像素335的最终颜色,图像处理系统必须判断射线340是否与景物中的对象相交。如果射线不与景物中的对象相交,则可以向其赋予默认的背景颜色(例如,蓝色或者黑色,表示白天或者夜间的天空)。相反,当射线340遍穿三维景物时,射线305可以穿透(strike)对象。由于射线穿透景物中的对象,所以可以把对象的颜色赋予射线所经过的像素。然而,在把对象的颜色赋予像素之前,必须确定对象的颜色。
许多因素可能对原始射线340所穿透的对象的颜色产生影响。例如,三维景物中的光源可能照射对象。而且,对象的物理特性可能对对象的颜色产生影响。例如,如果对象为反光的或者透明的,则其它非光源对象可能对对象产生影响。
为了确定来自三维景物中其它对象的影响,可以从原始射线340与对象相交的点发布次级(secondary)射线。例如,可以发布阴影射线341,以确定光对原始射线340与对象相交的点的影响。如果对象具有半透明(translucent)的特性,则图像处理系统可以发布透射射线344,以确定将把什么样的颜色或者光透射过对象的体。如果对象具有反光的特性,则图像处理系统可以发布反射射线,以确定向三维景物320反射了什么样的颜色或者光。
一种类型的次级射线可以为阴影射线。可以从原始射线和对象的相交点至三维景物305中的光源,追踪每一阴影射线。如果射线到达光源,而且在射线到达光源之前未遇到另一个对象,则光源将在原始射线穿透对象的点处照射原始射线所穿透的对象。
例如,可以从原始射线340与对象320A相交的点发布阴影射线341A,而且阴影射线341A可以沿朝光源325A的方向遍历。阴影射线341A到达光源325A,而且未遇到景物305中的任何其它对象320。因此,光源325A将在原始射线340与对象320A相交的点处照射对象320A。
关于其它阴影射线,可能在原始射线所穿透的对象的点和光源之间的路径被三维景物中另一个对象所阻挡。如果阻塞原始射线所穿透的对象上的点和光源之间的路径的对象为不透明的,则光源将不在原始射线穿透的对象的点处照射对象。因此,光源可能不会对原始射线的颜色产生影响,从而也不会对将在二维画面中描绘的像素的颜色产生影响。然而,如果对象为半透明的或透明的,则光源可以在原始射线穿透对象的点处照射对象。
例如,可以从原始射线340与对象320A相交的点发布阴影射线341B,而且阴影射线341B可以沿朝光源325B的方向遍历。在这一例子中,对象320D阻挡了阴影射线341B的路径。如果对象320D为不透明的,则光源325B将不在原始射线340与对象320A相交的点处照射对象320A。然而,如果阻挡阴影射线的对象320D为半透明的或者透明的对象,则光源325B可在原始射线340与对象320A相交的点处照射对象320A。
另一种类型的次级射线是一条透射射线。如果原始射线与其相交的对象具有透明的或者半透明的特性(例如,玻璃),则可以由图像处理系统发布一条透射射线。透射射线按相对于原始射线按其穿透对象的角度的角度遍穿对象。例如,可看出透射射线344遍穿原始射线340与其相交的对象320A。
另一种类型的次级射线是反射射线。如果原始射线与其相交的对象具有反光的特性(例如,一种金属表面抛光材料),则将由图像处理系统发布反射射线,以确定可以把什么样的颜色或者光反光在对象上。反射射线从按相对于原始射线与对象相交的角度从对象转向离开。例如,可以由图像处理系统发布反射射线343,以确定可以把什么样的颜色或者光反射在原始射线340与其相交的对象320A上。
所有次级射线(例如,阴影射线、透射射线、反射射线等)对颜色和光的总的影响,将导致原始射线所经过的像素的最终的颜色。
示范性的KD-树
执行射线追踪时所遇到的一个问题是,快速和有效地判断一条所发布的射线是否与将加以描绘的景物中的任何对象相交。这一技术领域中的普通熟练技术人员所熟悉的一种较有效地进行射线相交判断的方法是,使用空间索引。空间索引把三维景物或世界划分成可能或可能不包含图元的较小的体积(相对于整个三维景物较小)。然后,图像处理系统可以使用这些较小的体积的已知边界,来判断射线是否可能与包含在较小的体积中的图元相交。如果射线与包含图元的体积相交,则可以使用针对包含在该体积中的图元的已知位置和尺度(dimension)的射线的轨迹运行射线相交测试。如果射线不与具体的体积相交,则不需要针对包含在该体积中的图元运行射线图元相交测试。另外,如果射线与不包含图元的边界体积相交,则不需要运行针对该边界体积的射线图元相交测试。于是,通过减少可能必要的射线图元相交测试的次数,空间索引的使用大大提高了射线追踪图像处理系统的性能。不同空间索引加速数据结构的某些例子是八叉树、K维树(kd-树)以及二叉空间分割树(BSP树)。当多个不同的空间索引结构存在时,为了易于描述本发明的实施例,在以下的例子中将使用kd-树。然而,这一技术领域中的熟练技术人员将会明显意识到,本发明的实施例可适用于任何不同类型的空间索引。
kd-树使用轴对齐的边界体积,把整个景物或者空间分割成较小的体积。即,kd-树可以通过使用平行于已知轴的分解(splitting)平面划分由景物所包围的三维空间。分解平面把较大的空间分割成较小的边界体积。所有较小的边界体积一起构成景物中的整个空间。图像处理系统可以通过使用kd-树构造算法,做出把较大的边界体积分割(划分)成两个较小的边界体积的决定。
决定何时把边界体积分割成较小的体积的一个准则可以是包含在边界体积中的图元的数目。即,只要边界体积包含多于预先确定的阈值的图元,则树构造算法就可以通过画更多的分解平面来继续划分体积。决定何时把边界体积分割成较小的体积的另一个准则可以是包含在边界体积中的空间量。而且,继续分割边界体积的决定还可以基于创建边界体积的平面可与多少图元相交。
可以通过由结点、分支以及叶构成的二叉树结构表示景物的分割。树中的每一个内部结点可以代表相对大的边界体积,同时所述结点也可以包含至可代表两个相对较小的被分割体积的子结点的分支,其中,相对较小的被分割体积是在通过分解平面对相对大的边界体积进行分割之后所产生的。在轴对齐的kd-树中,每一个内部结点仅可以包含至其它结点的两个分支。内部结点可以包含至一或两个叶结点的分支(即,指针)。叶结点是不再将其进一步次划分成较小的体积的结点,并且包含指向图元的指针。内部结点还可以包含至其它被进一步次划分的内部结点的分支。内部结点还可以包含确定沿哪一个轴画分解平面以及沿该轴在什么地方画分解平面所需的信息。
示范性边界体积
图4A~4C说明了将由图像处理系统加以描绘的二维空间和相应的kd-树。为了简单起见,使用二维景物说明kd-树的建立,然而,也可以使用kd-树表示三维景物。在图4A~4C的二维说明中,说明了分解线,而不是分解平面,并且说明了边界面积,而不是将用于三维结构的边界体积。然而,这一技术领域中的熟练技术人员将会迅速意识到,可以很容易地把这些概念用于包含对象的三维景物。
图4A说明了包含将在显示在监视器310上的最终画面中描绘的图元410的二维景物405。代表景物的整个体积的最大体积由边界体积1(BV1)包围。在相应的kd-树中,这可以由顶层结点450加以表示,其中顶层结点450也称作根或世界(world)结点。在图像处理系统的一个实施例中,当边界体积包含例如两个以上的图元时,图像处理系统可以继续把边界体积分割成较小的边界体积。如先前所提到的,继续把边界体积分割成较小的边界体积的决定可以基于许多因素,然而,为了易于解释,在这一例子中,继续分割边界体积的决定仅基于图元的数目。在图4A中可以看出,BV1包含6个图元,因此,kd-树构造算法可以把BV1分割成较小的边界体积。
图4B说明了与图4A中所说明的相同的二维景物405。然而,在图4B中,树构造算法已经把BV1分割成两个较小的边界体积BV2和BV3。通过沿x轴、在点x1处画分解平面SP1415,完成BV1的分割。在kd-树中,也可以把BV1的分割反映为分别相应于内部,即父结点BV1450下的BV2和BV3的两个结点455和460。此时,代表BV1的内部结点可以存储如下的信息,但不局限于这些信息:指向BV1之下的两个结点(例如,BV2和BV3)的指针、沿哪一个轴(例如,x轴)画分解平面、以及沿该轴在何处(例如,在点x1处)画分解平面。
kd-树构造算法可以继续分割边界体积BV3,因为其包含多于图元的预先确定的阈值的图元(例如,两个以上的图元)。然而,kd-树构造算法不能够继续分割边界体积BV2,因为边界体积BV2包含小于或等于这一图元数目的图元(例如,仅两个图元410A)。注意,把诸如BV2的不再对其进行进一步分割或次划分的结点称为叶结点。
图4C说明了与图4B中所说明的相同的二维景物405。然而,在图4C中,kd-树构造算法已经把BV3分割成两个成较小的边界体积BV4和BV5。kd-造算法已经使用分割平面、沿y轴、在点y1分割了BV3。由于BV3已经被分割成两个子结点,所以此时可以将其称为内部结点。在kd-树中,BV3的分割也反映为分别相应于BV4和BV5的两个叶结点465和470。BV4和BV5为叶结点,因为不再把它们所代表的体积进一步划分成较小的边界体积。两个叶结点BV4和BV5位于代表kd-树中被分割的边界体积的内部结点BV3之下。
代表BV3的内部结点可以存储如下的信息,但不局限于这些信息:指向两个叶结点(即,BV4和BV5)的指针、沿哪一个轴(例如,y轴)画分解平面、以及沿该轴在何处(例如,在点y1处)画分解平面。
此时,kd-树构造算法可以停止对边界体积的分割,因为位于景物中的所有边界体积包含少于或等于可以被包容于一个边界体积中的图元的最大预先确定的数目的图元。叶结点可以包含指向被包容在每一个叶所代表的边界体积中的图元的指针。例如,叶结点BV2可以包含指向图元410A的指针,叶结点BV4可以包含指向图元410B的指针,以及叶结点BV5可以包含指向图元410C的指针。
射线追踪图像处理系统可以使用工作负载管理器205遍历空间索引(kd-树)。为了判断射线是否与包含在子结点中的任何图元相交,遍历kd-树可以包括选择通向kd-树的较低层上的结点(子结点)的分支,以获取或者前进。工作负载管理器205可以使用所发布的射线的坐标和轨迹遍穿,即导航kd-树。通过执行射线-边界体积相交测试,工作负载管理器205可以判断射线是否与kd-树结构中的结点所代表的边界体积的平面相交。如果射线与仅包含图元的边界体积(即,叶结点)相交,则工作负载管理器205可以向向量吞吐量引擎210发送射线和相关的信息,以进行射线图元相交测试。可以执行射线图元相交测试,以判断射线是否与边界体积中的图元相交。与针对包含在景物中的每一个图元运行针对一条射线的射线图元相交测试相比,这一方法导致判断射线是否与景物中的对象相交所需的较少的射线图元相交测试。
可以把所得到的kd-树结构,或者其它空间索引结构存储在处理器高速缓存230中。可以针对处理器高速缓存230中的存储对kd-树和包括kd-树的相应数据的大小进行优化。处理器高速缓存230中的kd-树的存储可允许工作负载管理器205通过图像处理系统已经发布的射线遍历kd-树,而不必在每次图像处理系统发布射线时从存储器中检索kd-树。
多空间索引
三维景物可以具有静态和动态的对象。静态对象可以是那些在一段相对长的时间期间(例如,对于若干帧)内不移动或者不改变形状的对象。例如,可以把建筑物视为静态对象。图5说明个三维景物500中的示范性的建筑物505。图5中的建筑物505为静态对象,因为其可以在一段相对长的时间期间内不移动或者不改变形状。
相比之下,动态对象可能在一段相对短的时间周期内(例如,在一或两个帧的周期内)移动或者改变形状。汽车可以为动态对象的一个例子。例如,图5说明了在一段相对短的时间周期内,可以在三维景物500中水平移动的一辆汽车510。
如先前所描述的,图像处理系统可以使用空间索引(例如,一棵kd-树)根据三维景物描绘二维图像(即,帧)。如果景物改变(例如,景物中的对象移动或者改变形状),则图像处理系统可能必须改变或者重建代表三维景物中的对象的空间索引,以正确地描绘下一个二维图像或者帧。
如果三维景物中的所有对象从一个帧到一个帧为静态的(即,它们不改变形状或者移动),则不必逐帧重建空间索引。然而,如果图像处理系统仅把单一的空间索引用于射线追踪,而且帧中的某些对象从一个帧到下一个帧移动或者改变形状,则需要重建空间索引,以正确地表示构成景物的对象的变化。例如,当动态对象从第一帧中的第一位置移动至第二帧中的第二位置时,代表第一帧中的对象的第一位置的空间索引可能不能正确地代表第二帧中的对象的第二位置。因此,可能需要重建空间索引,以正确地表示第二帧中的对象的第二位置。
图像处理系统重建整个空间索引可能需要相当大量的处理周期,从而增加了根据三维景物描绘二维图像所需的总时间量,甚至是三维景物的很小的部分发生变化时。然而,根据本发明的一个实施例,可以建立两个独立的空间索引,以减少响应于三维景物中对象的位置或者形状的变化所需的时间量。通过减少响应于变化所需的时间量,也可以减少根据三维景物描绘二维图像所需的时间量。
图6说明了根据本发明的一个实施例的可以一起表示三维景物中的所有对象的独两个立的空间索引。例如,第一索引可以为代表三维景物中的所有静态对象的静态空间索引605A。根据本发明的一个实施例,例如,第二空间索引可以为代表三维景物中的动态对象的动态空间索引610A。
为了加以说明,静态空间索引相应于其的三维景物可以为图5的三维景物三维景物500。因此,静态空间索引605A可以代表静态对象,即图5中的三维景物500中的建筑物505。而且,动态空间索引610A可以相应于图5的三维景物500中的动态对象(即,汽车610)。
使用工作负载管理器205遍历空间索引的图像处理系统,可以把空间索引存储在处理元件的存储器高速缓存(例如,图2的处理器高速缓存230)中。存储器高速缓存中的空间索引的存储可以通过减少工作负载管理器205对存储在空间索引中的数据的存取所需的时间,来加快射线遍穿空间索引的速度。根据本发明的一个实施例,可以把静态空间索引605A和动态空间索引610A存储在存储器高速缓存的独立的部分中。通过把静态空间索引和动态空间索引存储在存储器高速缓存的独立的部分中,可以在不影响静态空间索引的情况下更新动态空间索引。
图6说明了把空间索引存储在存储器高速缓存620的各独立部分的中的情况。例如,可以把静态空间索引605A存储在存储器高速缓存620的第一部分625中。可以把动态空间索引610A存储在空间索引的第二部分630中。
图7是一个流程图,说明了根据本发明的一个实施例的一种用于创建静态和动态空间索引以及把静态和动态空间索引存储在存储器高速缓存的方法。方法700可开始于步骤705,在步骤705处,图像处理系统可以创建代表三维景物中的静态对象的静态空间索引(例如,图6中的静态空间索引605A)。例如,图像处理系统可以构造如先前参照图4所描述的kd-树。另外,在步骤705处,图像处理系统还可以创建代表三维景物中的所有动态对象的动态空间索引(例如,图6中的动态空间索引610A)。图像处理系统可以构造与静态空间索引相同类型的空间索引,也可以构造与静态空间索引不同类型的空间索引。例如,静态和动态空间索引均可为kd-树,或者静态空间索引可以为kd-树,动态空间索引可以为bsp-树。
接下来,在步骤710处,图像处理系统可以把静态空间索引存储在存储器高速缓存的静态空间索引部分中。例如,图像处理系统可以把静态空间索引存储在图6中所说明的存储器高速缓存620的第一部分625中。在图像处理系统完成了对静态空间索引的存储之后,图像处理系统可以前进至步骤715。在步骤715处,图像处理系统可以把动态空间索引存储在存储器高速缓存的一个动态空间索引部分中。例如,图像处理系统可以把动态空间索引存储在图6中所说明的存储器高速缓存620的第二部分630中。
然后,在步骤720处,图像处理系统可以执行对所描绘的当前帧的射线追踪。在步骤720处,工作负载管理器205或工作负载管理器2051~N可以使用静态空间索引605A和动态空间索引610A追踪越过三维景物500的射线。在工作负载管理器205已经使射线遍历至所述任一或两种空间索引的叶结点之后,工作负载管理器可以把射线发送至向量吞吐量引擎210。向量吞吐量引擎210可以判断射线是否穿透包含在相应于遍历至的一或多个叶结点的边界体积中的图元。
射线可以穿透相应于静态空间索引的叶结点的边界体积中的图元,以及相应于动态空间索引的叶结点的边界体积中的图元。如果情况如此,则将使用第一相交的图元确定射线穿越其的像素的颜色。
例如,图像处理系统可以通过计算射线源自其的观看点(例如,图3中的所说明的观看点315)和在其处射线与图元相交的点之间的距离,来判断首先与哪一个图元相交。首先与其相交的图元可能具有所述观看点和射线在其处与图元相交的点之间的最短的距离。
图像处理系统可以继续追踪越过三维景物的射线,直至已经追踪到可根据三维景物描绘二维图像(即,帧)的足够数目的射线。
在图像处理系统已经完成了针对当前帧的射线追踪之后,图像处理系统可以前进至步骤725。在步骤725处,图像处理系统可以使存储器高速缓存620的动态部分630无效。可以执行使存储器高速缓存620的动态部分630的无效,以从存储器高速缓存620清除此时已废弃的动态空间索引。可以在预计到针对图像处理系统将要描绘的下一个帧可能需要创建新的动态空间索引并且将其存储在存储器高速缓存620中的情况下,使存储器高速缓存的动态部分630的无效。例如,可能需要创建新的动态空间索引,以把动态对象的新的位置反映在将加以描绘的下一个帧中。
如以下进一步加以讨论的,可以通过使用分布的时间基信号和存储器目录中的属性,实现使高速缓存的动态部分无效。可以逐帧地使存储器高速缓存无效。
接下来,在步骤730处,图像处理系统可以判断是否到了更新静态空间索引的时间。例如,如果曾经被视为静态对象的对象移动或者改变形状,因而需要被视为动态对象而不是静态对象,则图像处理系统可断定到了更新静态空间索引的时间。另外,例如,如果曾经为动态的对象不再移动或者改变形状,从而此时可将其视为静态对象,则可能到了更新静态空间索引的时间。尽管在步骤730处图像处理系统可能多次断定可能需要更新静态空间索引,然而这一断定的频率可能低于需要更新动态空间索引的频率。例如,可能需要逐帧创建新的动态空间索引,而可能在60个帧已经过去之后才需要更新静态空间索引。
如果到了更新静态空间索引的时间,则图像处理系统可以返回至步骤705,在步骤705处,可以更新静态和动态空间索引,以相应于三维景物中对象的变化。
然而,如果未到更新静态空间索引的时间,则图像处理系统可以前进至步骤735。在步骤735处,图像处理系统可以创建可用于图像处理系统将描绘的下一个帧的新的动态空间索引。这一新的动态空间索引可以反映三维景物中动态对象的新的位置或者形状。
例如,图8说明了也在图5中说明的三维景物500。然而,三维景物500中的动态对象(即,汽车510)已经从三维景物500中的第一位置515A移动至新的位置515B。然而,静态对象(即,建筑物505)仍保留在原来的位置上。因此,根据本发明的实施例,为了适当地表示新的三维景物500,可以由图像处理系统创建新的动态空间索引。该新的动态空间索引可以反映景物中一或多个动态对象(即,汽车510)的移动。相比之下,根据本发明的实施例,由于在三维景物500中静态对象没有改变位置,所以其创建旨在代表出现在图5中的静态对象的静态空间索引,正确地代表了出现在图8中的静态对象。
因此,不是响应景物中动态对象的移动重建代表整个三维景物中所有对象(即,静态的和动态的)的单一的空间索引,而是仅须重建动态空间索引,以相应于三维景物中对象的移动。与重建代表所有对象(即,静态的和动态的)的空间索引相比,重建仅代表三维景物中一部分对象的空间索引(即,动态空间索引),可要求较少的时间。
在图像处理系统已经创建了新的动态空间索引610B之后,图像处理系统可以返回至步骤715,在步骤715处,图像处理系统可以把新的动态空间索引610B存储在存储器高速缓存620的动态空间索引部分630中。
图9说明了用于存储表示图5的静态和动态空间索引的存储器高速缓存620。然而,此时图像处理系统已经使用新的动态空间索引取代了相应于三维景物中对象的旧的位置或形状的动态空间索引。例如,新的动态空间索引610B可以代表汽车510的新位置515B。新的动态空间索引610B可以仅略不同于代表汽车510的初始位置515A的动态空间索引610A。如图9中所说明的,旧的动态空间索引和新的动态空间索引之间的差别是动态空间索引610B的一部分615B。动态空间索引的部分615B可以相应于从第一位置515A到第二位置515B的汽车510B的位置的变化。
图9中也说明了静态空间索引605A。静态空间索引605A从图6到图9未改变,因为在三维景物500中静态对象(即,建筑物505)尚未改变位置或者形状。
通过数据相关期满的动态高速缓存无效
根据本发明的实施例,以及如以上所描述的,图像处理系统中的存储器高速缓存可以既包括动态空间索引,也包括静态空间索引。而且,存储器高速缓存可以具有其中存储动态空间索引的动态部分和其中存储静态空间索引的静态部分。在某些情况下,最好分开存储动态空间索引和空间索引,以致可以周期性地使存储动态空间索引的动态部分无效,同时保持存储器高速缓存的静态部分有效。
可以在预计到可能由图像处理系统使用相应于三维景物中的对象的新位置(例如,由于移动或碰撞)的新的动态空间索引之前,执行使空间索引的动态部分的周期性无效。因此,可以把新的动态空间索引存储在存储器高速缓存中。通过周期性地仅使存储器高速缓存的动态部分无效,静态空间索引保持在存储器高速缓存中,同时可以有效地丢弃旧的动态空间索引(例如,代表三维景物中的对象的旧的位置)。接下来,可以把新的动态空间索引存储在其中存储旧的动态空间索引的位置。
根据本发明的一个实施例,可以使用分布的时间基信号和与存储器目录中的项目相关的属性比特的组合,来使存储器高速缓存的动态部分无效。可以把分布的时间基信号分布于位于图像处理系统中的处理元件,从而允许贯穿多核处理元件网络的动态高速缓存部分的同步周期性无效。
与附加的属性比特相结合使用分布的时间基信号来使存储器高速缓存的部分无效,消除了逐帧执行数千(即使不是数百万)高速缓存无效指令的需求。消除每一帧执行这些无效指令的需求,可允许一或多个处理元件执行其它的图像处理相关任务,因此可以提高图像处理系统的性能。
图10说明了根据本发明的一个实施例的多核处理元件网络1000,其包含可以生成分布的时间基信号的帧刷新(refresh)计时器电路1010。多核处理元件网络1000类似于以上针对图2所描述的网络200。然而,图10中所说明的多核处理元件网络1000还包括帧刷新计时器电路1010。根据本发明的一个实施例,可以把帧刷新计时器电路1010放置在与多核处理元件网络1000相同的芯片上。然而,根据本发明的另一个实施例,也可以把帧刷新计时器电路1010放置在不同于多核处理元件网络1000的独立的芯片上。
根据本发明的一个实施例,帧刷新计时器电路1010可以包括生成分布的时间基信号的电路。分布的时间基信号可以为在多核处理元件网络1000中的多核处理元件2201~N之间分布的电脉冲。帧刷新计时器电路1010中的电路可以为任何适当的能够生成周期电脉冲的电路。例如,所述电路可以包括时钟振荡器和其栅极电耦合于时钟振荡器的晶体管,以致当时钟振荡器在晶体管的栅极提供了电压时,该晶体管可以在其源极和漏极之间传送电流。可以经由帧刷新计时器电路1010和多核处理元件2201~N之间的任何适当的电连接(例如,铜线、接触线(trace)等)分布所生成的脉冲。
根据本发明的一个实施例,可以根据图像处理系统的帧刷新频率确定分布的时间基信号的周期。例如,图像处理系统可以每秒60次地描绘或者刷新帧。在图像处理系统描绘一个新的帧之前,可以创建新的动态空间索引,以代表三维景物中对象的新位置。可能需要把新的动态空间索引存储在存储器高速缓存中。然而,仍可以把旧的动态空间索引(即,用于描绘先前帧的)存储在存储器高速缓存中。可能需要使旧的动态空间索引无效,以致当描绘新的帧时,图像处理系统不使用对象的旧的位置。因此,图像处理系统每次创建新的动态空间索引(例如,每秒60次)时,可能需要使旧的动态空间索引无效(例如,每秒60次)。
因而,根据本发明的一个实施例,分布的时间基信号周期可以为60/1秒,以使图像处理系统所需的存储器高速缓存的动态空间索引部分无效。
使用虚拟地址翻译的图像处理系统可以使用存储器目录,以把图像处理系统所使用的有效地址翻译/映射成相应于存储器单元(memorylocation)的实际地址。图11说明了存储器目录1105,可以使用其把有效地址映射到相应于存储器高速缓存620中的存储器单元的实际地址。根据本发明的一个实施例,如图11中所说明的,可以把分布的时间基信号耦合于存储器目录1105中的所有项目。可以与存储器目录相结合,使用分布的时间基信号,来使存储器高速缓存的部分无效。
如先前所描述的,存储器高速缓存620可以具有静态空间索引部分625和动态空间索引部分630,它们分别存储与静态空间索引和动态空间索引相关的数据。为了提供对存储器高速缓存620的动态空间索引部分630中的数据的存取,可以提供存储器目录项目。存储器目录项目可以把存储器高速缓存620的动态空间索引部分630的有效地址映像成存储器高速缓存620的动态空间索引部分630的实际地址。例如,存储器目录项目1115把存储器高速缓存620的动态空间索引部分630的有效地址映像成存储器高速缓存620的动态空间索引部分630的实际地址。
除了地址翻译信息外,存储器目录1105中的存储器目录项目还可以包含属性比特1120。属性比特1120可以定义与存储器高速缓存中的数据相关的属性。根据本发明的一个实施例,可以把属性比特添加于存储器目录中的现存的属性比特。新的附加的属性比特可以指示:存储器目录项目1115下一次接收分布的时间基信号时,存储器目录项目1115是否应变为无效。可以把附加的属性比特称为基于分布的时间基信号使存储器目录项目无效的比特(inv_on_dtbs)。而且,根据本发明的一个实施例,存储器目录项目1115还可以包含指示是否已经由分布的时间基信号存取了存储器目录项目1115的附加的属性比特(acc_by_dtbs)。
inv_on_dtbs比特和acc_by_dtbs比特之比较,可以提供关于从存储器目录项目映像至的高速缓存中的存储器单元是否有效的指示信息。例如,图11中所说明的存储器目录项目1115具有acc_by_dtbs比特和inv_on_dtbs比特两者。如图11中所说明的,存储器目录项目1115具有所断言的inv_on_dtbs比特(例如,逻辑‘1’)。这可以指示:图像处理系统希望,当接收到分布的时间基信号时与包含在存储器目录项目1115中的有效地址对应的、存储器高速缓存中所存储的数据(例如,动态空间索引)被无效。
另外,如图11中所说明的,存储器目录项目1115具有所断言的acc_by_dtbs比特(例如,逻辑‘1’)。这可以表示:存储器目录项目1115已经从帧刷新计时器电路1010接收到分布的时间基信号(即,脉冲)。因此,下一次处理元件存取存储器高速缓存620的动态空间索引部分630中的数据(即,试图翻译相应于存储器高速缓存620的动态空间索引部分的存储器目录项目1115所指定的范围内的有效地址)时,对acc_by_dtbs比特和inv_on_dtbs比特的检查可以指示该存储器目录项目为无效的,因而将导致高速缓存丢失(miss)。
高速缓存丢失可以使处理元件从存储器(例如,系统存储器)中获取有效数据,并且把有效数据放入存储器高速缓存1110中。从存储器中所获取的数据可以为,例如,图像处理系统针对将加以描绘的下一个帧所创建的新的动态空间索引。
因此,通过设置针对具体存储器目录项目的inv_on_dtbs比特,图像处理系统可以指出应该周期性地使其无效的那些存储器高速缓存的部分。而且,根据分布的时间基信号的频率确定无效频率,其中,可以把分布的时间基信号的频率调整(设置)成图像处理系统的帧刷新频率。
另外,还可以把分布的时间基信号分布于多个多核处理元件(例如,图10中所说明的每一多核处理元件2201~N),每一个多核处理元件具有存储器目录和存储器高速缓存。多核处理元件中的每一个存储器目录可以具有表示基于由分布的时间基信号的下一次存取使高速缓存的具体部分(例如,动态空间索引部分630)无效的属性比特。通过使每一处理器高速缓存230的一些部分无效,可以实现所述多个多核处理元件之间的存储器连贯性(coherency)。
例如,每一个多核处理元件可能正在执行与根据三维景物描绘单一帧相关的任务。而且,多核处理元件2201~N的每一个处理器高速缓存230可以包含同一动态空间索引的拷贝。在图像处理系统已经描绘了帧之后,可以通过使用分布的时间基信号,在每一处理器高速缓存230中同时使相应于动态空间索引的存储器目录项目无效。此后,存取任何包含动态空间索引的处理器高速缓存230的部分的任何未来的尝试,都将导致高速缓存丢失,从而要求处理元件(例如,工作负载管理器2051~N)从存储器(例如,系统存储器)获取有效数据。
与使整个存储器高速缓存无效(例如,通过闪(flash)无效)相比,使存储器高速缓存的一部分无效的能力允许图像处理系统逐帧维持高速缓存中的数据(例如,静态空间索引),同时使高速缓存的其它部分(例如,动态空间索引)无效。
除了提供地址翻译的存储器目录1105之外,也可以结合存储器高速缓存620使用高速缓存目录,以把实际地址映像成存储器高速缓存620中的项目。如果在不使存储器高速缓存620中的高速缓存项目无效的情况下,在存储器目录1105中使高速缓存项目无效,则存在着旧的数据可保持在存储器高速缓存620中,而且之后由图像处理系统加以存取的可能性。如果没有用来自主存储器的数据(例如,新的动态空间索引)取代旧的数据,而且图像处理系统重置了提供了对存储器高速缓存620中的旧数据的地址的翻译的存储器目录项目中的acc_by_dtbs比特,则可能存取旧的数据。然而,根据本发明的一个实施例,可以使用擦洗器功能,以响应于分布的时间基信号,使存储器高速缓存620中的旧的数据无效。
例如,图12说明了高速缓存目录1205。高速缓存目录1205中的每一个项目可以包含指示相应于高速缓存目录项目的存储器高速缓存620中的数据可能有效或无效的有效比特。每一个存储器高速缓存620项目还可以包含标志比特和设置比特,用于确定存储器高速缓存620是否包含相应于实际地址的一个项目(或者多个项目)。
根据本发明的一个实施例,当接收到时间基使无效信号时,可以激活擦洗器功能。当激活时,擦洗器功能可以搜索存储器目录1105,以查找那些已断言(assert)它们的inv_on_dtbs比特的项目。针对擦洗器功能发现已经断言了inv_on_dtbs比特的每一个存储器目录项目,擦洗器功能可以通过搜索存储器高速缓存620以查找与存储器目录1105中的实际地址相匹配的项目,且把高速缓存目录1205中相应的有效比特设置成例如‘0’,来使相应的存储器高速缓存项目(或多个项目)无效。因此,对已经由擦洗器功能使其无效的高速缓存项目的任何试图的存取,都将导致高速缓存丢失。于是,通过使由分布的时间基信号使其存储器目录项目无效的存储器高速缓存620中的旧的数据无效,擦洗器功能可以确保今后不会对存储器高速缓存620中的旧的数据进行存取。
尽管此处参照包含动态空间索引的存储器高速缓存的一部分描述了用于使存储器高速缓存无效的方法与装置,然而应该认识到,本发明并不局限于使仅包含动态空间索引的高速缓存存储器区域无效。相反,此处所描述的方法与装置可以使包含任何类型数据的存储器高速缓存的任何部分无效,无论这些数据是否与图像处理相关。
结论
根据本发明的实施例,可以把分布的时间基信号耦合于用于为位于存储器高速缓存中的数据提供地址翻译的存储器目录。存储器目录可以具有指示是否已由分布的时间基信号存取了存储器项目的属性比特。另外,存储器目录还可以具有指示在由分布的时间基信号存取了存储器项目之后是否应把存储器目录项目视为无效的属性比特。如果已经由分布的时间基信号存取了存储器目录项目,以及在由时间基信号进行了这一存取之后应该把该存储器目录项目视为无效的,则任何使用该存储器目录项目的试图的地址翻译可能导致高速缓存丢失。高速缓存丢失可能启动从存储器获取有效数据。
尽管先前的描述仅针对本发明的实施例,然而也可以在不背离本发明的基本范围的情况下,设计本发明的其它和进一步的实施例,本发明的范围由以下的权利要求所确定。
Claims (14)
1.一种使存储器高速缓存中的数据无效的方法,该方法包括:
创建相应于存储器高速缓存的第一部分的第一存储器目录项目以及相应于存储器高速缓存的第二部分的第二存储器目录项目,其中,存储器目录项目提供针对存储器高速缓存中的数据的、有效地址到实际地址的翻译;
在第一存储器目录项目中设置第一比特,以指示当接收到分布的时间基信号时第一存储器目录项目为无效的;
生成该分布的时间基信号;
响应于该分布的时间基信号,在第一和第二存储器目录项目中设置第二比特;
接收对存储器高速缓存的第一部分的存储器地址翻译的请求;以及
通过检查第一存储器目录项目中的第一比特和第二比特,确定第一存储器目录项目为无效的。
2.根据权利要求1所述的方法,还包括:
响应于该分布的时间基信号,使存储器高速缓存的第一部分无效;
更新相应于第一存储器目录项目的第一存储器单元中的数据;
清除第一和第二存储器目录项目中的第二比特;
接收对存储器高速缓存的第一部分的存储器地址翻译的请求;以及
通过检查第一存储器目录项目中的第一比特和第二比特,确定第一存储器目录项目为有效的。
3.根据权利要求2所述的方法,还包括:
确定存储器高速缓存的第一部分为无效的;
从该第一存储器单元中获取数据;以及
把该数据放入存储器高速缓存的第一部分。
4.根据权利要求1所述的方法,还包括:
接收针对存储器高速缓存的第二部分的存储器地址翻译的请求;以及
通过检查第二存储器目录项目的第一比特和第二存储器目录项目的第二比特,确定第二存储器目录项目为有效的,其中,第二存储器目录项目的第一比特指示:当接收到分布的时间基信号时,应该把第二存储器目录项目视为有效的。
5.根据权利要求1所述的方法,其中,根据图像处理系统的帧刷新频率,周期性地生成该分布的时间基信号。
6.根据权利要求1所述的方法,其中,把该分布的时间基信号分布于多个多核处理元件,每一个多核处理元件至少具有一个存储器高速缓存。
7.根据权利要求1所述的方法,其中,把动态空间索引存储在该存储器高速缓存的第一部分中,以及把静态空间索引存储在该存储器高速缓存的第二部分中。
8.一种图像处理系统,包括:
帧刷新计时器电路,耦合于第一处理元件,其中,把该帧刷新计时器电路配置成生成周期性的分布的时间基信号;
存储器高速缓存,至少包括第一部分和第二部分;
存储器目录,至少包括提供针对该存储器高速缓存的第一部分中的数据的、有效地址到实际地址的翻译的第一目录项目和提供针对该存储器高速缓存的第二部分中的数据的有效地址到实际地址的翻译的第二目录项目;以及
其中,把第一处理元件配置成:在第一目录项目中设置基于分布的时间基信号使存储器项目无效的比特;当接收到该分布的时间基信号时,在至少第一目录项目和第二目录项目中设置接收的分布的时间基信号比特;接收对位于存储器高速缓存的第一部分中的数据的存储器地址翻译的请求;以及通过把该基于分布的时间基信号使存储器项目无效的比特与该接收的分布的时间基信号比特进行比较,而确定第一存储器目录项目为无效的。
9.根据权利要求8所述的图像处理系统,其中,把第一处理元件进一步配置成:
响应于该分布的时间基信号,使存储器高速缓存的第一部分无效;
更新相应于第一存储器目录项目的第一存储器单元中的数据;
清除第一和第二存储器目录项目中的第二比特;
接收对存储器高速缓存的第一部分的存储器地址翻译的请求;以及
通过检查第一存储器目录项目中的第一比特和第二比特,确定第一存储器目录项目为有效的。
10.根据权利要求9所述的图像处理系统,其中,把第一处理元件进一步配置成:
确定存储器高速缓存单元的第一部分为无效的;
从第一存储器单元中获取数据;以及
把该数据放入存储器高速缓存的第一部分。
11.根据权利要求8所述的图像处理系统,其中,把该帧刷新计时器电路进一步耦合于第二处理元件。
12.根据权利要求8所述的图像处理系统,其中,把该帧刷新计时器电路配置成生成该周期性的分布的时间基信号。
13.根据权利要求8所述的图像处理系统,其中,把动态空间索引存储在存储器高速缓存的第一部分中,以及把静态空间索引存储在存储器高速缓存的第二部分中。
14.一种包含程序的计算机可读介质,当执行该程序时,执行包括下述步骤的操作:
创建相应于存储器高速缓存的第一部分的第一存储器目录项目以及相应于存储器高速缓存的第二部分的第二存储器目录项目,其中,存储器目录项目提供针对存储器高速缓存中的数据的有效地址到实际地址的翻译;
在第一存储器目录项目中设置第一比特,以指示当接收到分布的时间基信号时第一存储器目录项目为无效的;
生成该分布的时间基信号;
响应于该分布的时间基信号,在第一和第二存储器目录项目中设置第二比特;
接收对存储器高速缓存的第一部分的存储器地址翻译的请求;以及
通过检查第一存储器目录项目中的第一比特和第二比特,确定第一存储器目录项目为无效的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/559,090 US7836258B2 (en) | 2006-11-13 | 2006-11-13 | Dynamic data cache invalidate with data dependent expiration |
US11/559,090 | 2006-11-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101183339A true CN101183339A (zh) | 2008-05-21 |
CN101183339B CN101183339B (zh) | 2010-06-02 |
Family
ID=39370540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101860630A Active CN101183339B (zh) | 2006-11-13 | 2007-11-13 | 使存储器高速缓存中数据无效的方法与系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7836258B2 (zh) |
JP (1) | JP4954005B2 (zh) |
KR (1) | KR100961736B1 (zh) |
CN (1) | CN101183339B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105993003A (zh) * | 2014-07-21 | 2016-10-05 | 上海兆芯集成电路有限公司 | 同时无效化所有关联于一x86进程内容标识符的地址转译快取项目 |
CN107066467A (zh) * | 2015-11-24 | 2017-08-18 | Sap欧洲公司 | 用于事务高速缓存无效的原子可见性切换 |
CN107273307A (zh) * | 2009-09-30 | 2017-10-20 | 英特尔公司 | 归属代理数据和存储器管理 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0810205D0 (en) * | 2008-06-04 | 2008-07-09 | Advanced Risc Mach Ltd | Graphics processing systems |
US9483864B2 (en) * | 2008-12-05 | 2016-11-01 | International Business Machines Corporation | System and method for photorealistic imaging using ambient occlusion |
US9270783B2 (en) * | 2008-12-06 | 2016-02-23 | International Business Machines Corporation | System and method for photorealistic imaging workload distribution |
JP4920775B2 (ja) * | 2010-07-08 | 2012-04-18 | 株式会社スクウェア・エニックス | 画像生成装置及び画像生成プログラム |
KR20140018919A (ko) | 2011-04-12 | 2014-02-13 | 톰슨 라이센싱 | 메시 모델을 인코딩하는 방법, 인코딩된 메시 모델 및 메시 모델을 디코딩하는 방법 |
US8645752B2 (en) | 2011-11-08 | 2014-02-04 | Micron Technology, Inc. | Apparatuses and methods for operating a memory device |
GB2521227B (en) * | 2013-12-16 | 2020-11-25 | Advanced Risc Mach Ltd | Invalidation of index items for a temporary data store |
KR102197067B1 (ko) * | 2014-04-02 | 2020-12-30 | 삼성전자 주식회사 | 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치 |
JP6274962B2 (ja) * | 2014-04-25 | 2018-02-07 | 株式会社スクウェア・エニックス | 情報処理装置、制御方法、プログラム及び記録媒体 |
GB2532495B (en) | 2014-11-21 | 2018-05-02 | Advanced Risc Mach Ltd | Graphics processing systems |
US10095431B2 (en) | 2015-06-18 | 2018-10-09 | John Edward Benkert | Device controller and method of enforcing time-based sector level security |
US10147370B2 (en) * | 2015-10-29 | 2018-12-04 | Nvidia Corporation | Variable refresh rate gamma correction |
US11468053B2 (en) * | 2015-12-30 | 2022-10-11 | Dropbox, Inc. | Servicing queries of a hybrid event index |
US10262721B2 (en) | 2016-03-10 | 2019-04-16 | Micron Technology, Inc. | Apparatuses and methods for cache invalidate |
JP6942440B2 (ja) | 2016-03-28 | 2021-09-29 | 三菱商事ライフサイエンス株式会社 | 米飯の品質改良用剤、及び、品質改良処理を施した米飯の製造方法 |
US10915456B2 (en) * | 2019-05-21 | 2021-02-09 | International Business Machines Corporation | Address translation cache invalidation in a microprocessor |
US11269784B1 (en) * | 2019-06-27 | 2022-03-08 | Amazon Technologies, Inc. | System and methods for efficient caching in a distributed environment |
US20230215091A1 (en) | 2021-09-25 | 2023-07-06 | Intel Corporation | Apparatus and method for tree structure data reduction |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0711793B2 (ja) * | 1989-07-13 | 1995-02-08 | 株式会社東芝 | マイクロプロセッサ |
JPH06102857A (ja) * | 1992-09-18 | 1994-04-15 | Daikin Ind Ltd | フレームバッファアクセス装置 |
US5604882A (en) * | 1993-08-27 | 1997-02-18 | International Business Machines Corporation | System and method for empty notification from peer cache units to global storage control unit in a multiprocessor data processing system |
US5995107A (en) * | 1996-08-02 | 1999-11-30 | Autodesk, Inc. | Caching in a three dimensional modeling and animation system |
US6115794A (en) * | 1997-04-14 | 2000-09-05 | International Business Machines Corporation | Method and system of providing a pseudo-precise inclusivity scheme in a sectored cache memory for maintaining cache coherency within a data-processing system |
US5914730A (en) | 1997-09-09 | 1999-06-22 | Compaq Computer Corp. | System and method for invalidating and updating individual GART table entries for accelerated graphics port transaction requests |
JP3889195B2 (ja) * | 1999-02-03 | 2007-03-07 | 株式会社東芝 | 画像処理装置、画像処理システムおよび画像処理方法 |
US6438671B1 (en) * | 1999-07-01 | 2002-08-20 | International Business Machines Corporation | Generating partition corresponding real address in partitioned mode supporting system |
JP4144507B2 (ja) * | 2003-10-30 | 2008-09-03 | ソニー株式会社 | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
US7469318B2 (en) * | 2005-02-10 | 2008-12-23 | International Business Machines Corporation | System bus structure for large L2 cache array topology with different latency domains |
-
2006
- 2006-11-13 US US11/559,090 patent/US7836258B2/en active Active
-
2007
- 2007-09-28 JP JP2007255065A patent/JP4954005B2/ja active Active
- 2007-11-05 KR KR1020070112076A patent/KR100961736B1/ko active IP Right Grant
- 2007-11-13 CN CN2007101860630A patent/CN101183339B/zh active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107273307A (zh) * | 2009-09-30 | 2017-10-20 | 英特尔公司 | 归属代理数据和存储器管理 |
CN107273307B (zh) * | 2009-09-30 | 2020-11-13 | 英特尔公司 | 归属代理数据和存储器管理 |
CN105993003A (zh) * | 2014-07-21 | 2016-10-05 | 上海兆芯集成电路有限公司 | 同时无效化所有关联于一x86进程内容标识符的地址转译快取项目 |
CN105993003B (zh) * | 2014-07-21 | 2019-04-09 | 上海兆芯集成电路有限公司 | 转译后备缓冲器、操作转译后备缓冲器的方法以及处理器 |
CN107066467A (zh) * | 2015-11-24 | 2017-08-18 | Sap欧洲公司 | 用于事务高速缓存无效的原子可见性切换 |
Also Published As
Publication number | Publication date |
---|---|
US7836258B2 (en) | 2010-11-16 |
JP4954005B2 (ja) | 2012-06-13 |
CN101183339B (zh) | 2010-06-02 |
KR20080043227A (ko) | 2008-05-16 |
US20080114942A1 (en) | 2008-05-15 |
JP2008123497A (ja) | 2008-05-29 |
KR100961736B1 (ko) | 2010-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101183339B (zh) | 使存储器高速缓存中数据无效的方法与系统 | |
CN100557637C (zh) | 执行射线追踪的方法和系统 | |
US7940265B2 (en) | Multiple spacial indexes for dynamic scene management in graphics rendering | |
CN101506847B (zh) | 用于划分空间索引的方法和系统 | |
CN101276479B (zh) | 图像处理方法和系统 | |
US8284195B2 (en) | Cooperative utilization of spatial indices between application and rendering hardware | |
US7893936B2 (en) | Generating efficient spatial indexes for predictably dynamic objects | |
US7996621B2 (en) | Data cache invalidate with data dependent expiration using a step value | |
CN100557638C (zh) | 执行射线追踪的方法和系统 | |
US8022950B2 (en) | Stochastic culling of rays with increased depth of recursion | |
CN101490715B (zh) | 用于具有最小存储器带宽要求的优化的光线遍历算法的高速缓存利用的方法和装置 | |
CN100570638C (zh) | 分发工作负载的方法和图像处理系统 | |
US8826299B2 (en) | Spawned message state determination | |
US20080122838A1 (en) | Methods and Systems for Referencing a Primitive Located in a Spatial Index and in a Scene Index | |
US8339398B2 (en) | Integrated acceleration data structure for physics and ray tracing workload | |
US20200327712A1 (en) | Graphics processing apparatus based on hybrid gpu architecture | |
Cignoni et al. | Ray‐casted blockmaps for large urban models visualization | |
Lindholm et al. | Hybrid data visualization based on depth complexity histogram analysis | |
Kol et al. | MegaViews: Scalable Many‐View Rendering With Concurrent Scene‐View Hierarchy Traversal | |
Staneker et al. | Occlusion culling in OpenSG PLUS | |
Staneker | An occlusion culling toolkit for OpenSG PLUS | |
Davis | Generating computer animations with frame coherence in a distributed computing environment | |
Farias | Efficient rendering of volumetric irregular grids data | |
Forstmann et al. | Visualizing run-length-encoded volume data on modern GPUs | |
Wang et al. | Interactive direct volume rendering on desktop multicore processors |
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 |