控制从存储器中读取数据阵列的方法和装置的制作方法

文档序号:6332798阅读:144来源:国知局
专利名称:控制从存储器中读取数据阵列的方法和装置的制作方法
技术领域
本发明涉及从存储器中读取数据阵列以供处理。其一个实例是当处理来自帧缓冲 器的图像以便显示时显示控制器的操作。
背景技术
如本领域中已知的,在许多电子设备和系统中,需要处理诸如图像之类的数据阵 列。例如,要向用户显示的图像通常将由显示设备的所谓的“显示控制器”处理以便显示。
典型地,显示控制器将从把图像作为数据阵列而存储的存储器中的所谓的“帧缓 冲器”读取要显示的输出图像并且适当地向显示器提供图像数据。在例如图形处理系统的 情况下,图形处理系统的输出图像在其准备用于显示时将存储到存储器的帧缓冲器中,并 且显示控制器然后将读该帧缓冲器且将它提供给显示器(其可以例如为屏幕或打印机)以 便显示。
如本领域中已知的,帧缓冲器本身通常存储到所讨论(in question)的系统的所 谓的“主”存储器中,并且其因而在显示设备和显示控制器的外部。因此,从帧缓冲器中读 取数据以便显示可能消耗相对大量的功率和存储带宽。例如,新的图像帧可能需要以每秒 30帧或者更高的速率从帧缓冲器读取且显示,并且每帧会需要大量的数据,对于更高分辨 率的显示器和高清晰度(HD)图形而言,情况尤其如此。
因此,已知的是希望设法降低帧缓冲器操作的功耗,并且提出了各种不同的技术 来设法实现这点。
这些技术包括提供片上(on-chip)(与外部相反)帧缓冲器、帧缓冲器缓存 (caching)(缓冲)、帧缓冲器压缩以及动态颜色深度控制。然而,这些技术中的每一种具有 其自身的缺陷和不足。
例如,特别是对于较高分辨率显示器使用片上帧缓冲器可能需要大量的片上资 源。帧缓冲器缓存或缓冲可能不实用,因为帧生成通常与帧缓冲器显示异步。帧缓冲器压 缩可能有所帮助,但是必要的逻辑相对复杂,并且帧缓冲器格式被改变。有损帧缓冲器压缩 会降低图像质量。类似地,动态颜色深度控制是一种有损方案并且因而降低图像质量。
其中可能需要从存储器中读取数据阵列以供处理的其他设置包括例如其中CPU 可能需要读入图形处理器产生的图像以便修改它以及其中图形处理器可能需要读入外部 产生的然后用于其图形处理的纹理的情形。这些设置在读取存储的数据阵列以供处理时也 可能消耗相对大量的存储带宽和功率。
因此,申请人相信,存在改进数据阵列的余地,例如帧缓冲器、读取操作。 发明内容
依照本发明的第一方面,提供了一种处理数据阵列的方法,其中处理设备通过处 理连续数据块而处理数据阵列,每个数据块代表数据阵列的特定区域,并且代表数据阵列 特定区域的数据块从存储了数据阵列的第一存储器中读取且在数据块被处理设备处理之6前存储到处理设备的存储器中;该方法包括
确定数据阵列的要处理的数据块是否与已经存储到处理设备的存储器中的数据 块相似,并且根据相似性确定针对要处理的数据块处理已经存储到处理设备的存储器中的 数据块或者来自第一存储器中存储的数据阵列的新数据块。
依照本发明的第二方面,提供了一种系统,该系统包括
第一存储器,其用于存储要处理的数据阵列;
处理设备,其用于通过处理连续数据块而处理第一存储器中存储的数据阵列,每 个数据块代表数据阵列的特定区域,并且处理设备具有本地存储器;
读控制器,其被配置成读取代表第一存储器中存储的数据阵列特定区域的数据块 并且在数据块被处理设备处理之前将数据块存储到处理设备的本地存储器中;以及
控制器,其被配置成确定数据阵列的要处理的数据块是否与已经存储到处理设备 的存储器中的数据块相似,并且根据相似性确定使得处理设备针对要处理的数据块处理已 经存储到处理设备的存储器中的数据块或者来自第一存储器中存储的数据阵列的新数据 块。
依照本发明的第三方面,提供了一种处理设备,其用于处理第一存储器中存储的 数据阵列,该处理设备被配置成通过处理连续数据块而处理所述数据阵列,每个数据块代 表该数据阵列的特定区域,并且该处理设备包括
本地存储器;
读控制器,其被配置成读取代表第一存储器中存储的数据阵列特定区域的数据块 并且在数据块被处理设备处理之前将数据块存储到处理设备的本地存储器中;以及
控制器,其被配置成确定数据阵列的要处理的数据块是否与已经存储到处理设备 的存储器中的数据块相似,并且根据相似性确定使得处理设备针对要处理的数据块处理已 经存储到处理设备的存储器中的数据块或者来自第一存储器中存储的数据阵列的新数据 块。
本发明涉及系统并且在系统中实现,在所述系统中,以代表数据阵列的特定区域 的数据块形式,从存储器中读取要处理的数据阵列(其可以是例如要显示的帧并且在一个 优选的实施例中为要显示的帧)以便由处理设备(其可以是例如显示控制器并且在一个优 选的实施例中为显示控制器)处理。
因此,实际上,本发明涉及系统且预期在系统中实现,在所述系统中,要由系统处 理的数据阵列从存储器中读取并且在逐块的基础上而不是直接作为单个总输出“阵列”而 被处理。
如上面所讨论的,例如对于基于区块(tile-based)的图形处理系统产生的图像 的显示而言,情况可能如此。在这种情况下,显示控制器可以在逐区块的基础上处理来自帧 缓冲器的每帧以便显示(尽管如下面将进一步讨论的,这不是必需的,并且事实上可能不 总是优选的)。
(如本领域中已知的,在基于区块的渲染中,将渲染过程的二维输出阵列或帧(“渲 染目标”)(例如以及典型地,其将被显示以显示被渲染(render)的场景)细分或分割成多 个更小的区域(通常称为“区块”)以用于渲染过程。这些区块(子区域)中的每一个被独 立地渲染(典型地一个接一个地)。然后,将渲染的区块(子区域)重新组合以提供完整的输出阵列(帧)(渲染目标)例如以用于显示。
通常用于“分块”(tiling)和“基于区块”(tile based)的渲染的其他术语包括 “形成组块(chunking)”(子区域称为“组块”)和“小块”渲染("bucket" rendering) 0 为了方便起见,将在本文使用术语“区块”和“分块”,但是应当理解的是,这些术语预期涵盖 所有的替换物以及等效的术语和技术。)
在本发明中,代替当要处理数据块(例如以便显示)时,简单地依次从其中存储了 数据阵列的存储器中读出每个数据块(例如渲染的区块)并且进行处理的是,首先确定该 块是否与已经存储到处理数据阵列的处理设备(例如显示控制器)的(本地)存储器中的 数据块(例如区块)相似。然后,根据该相似性确定,确定是否将本地存储器中的现有数据 块还是将来自存储器中存储的数据阵列的新数据块作为要处理的数据块进行处理。
如下面将进一步讨论的,申请人已经发现并且认识到,这个过程可以用来显著地 减少将使用时从主存储器(例如帧缓冲器)中读取以供处理的数据块(例如渲染的区块) 的数量,从而显著地减少主存储器(例如帧缓冲器)读事物(transaction)的数量以及因 而与主存储器(例如帧缓冲器)读操作有关的功率和存储带宽消耗。相应地,它也可以促 进较低性能、较低功率存储系统的使用,这在例如较低功率、较低成本便携式设备的情况下 可能是特别有利的。
例如,如果发现要处理的数据块与已经存在于处理设备的本地存储器中的数据块 (例如渲染的区块)相同,那么可以(并且优选地)确定从存储的数据阵列读取数据块到处 理设备的本地存储器是不必要的,从而消除了对于该读“事物”的需要。因此,当确定要处 理的数据块与已经存储到处理设备的本地存储器中的数据块相似时,优选地由处理设备处 理该处理设备的本地存储器中的该(适当的)现有块,反之亦然。
而且,申请人已经认识到,例如在图形处理的情况下,要处理的新数据块(例如渲 染的区块)与已经在例如显示控制器的本地存储器中的数据块(例如渲染的区块)相同或 相似可以是相对普遍的事件。例如,在图形处理的情况下,在许多应用程序的用户界面等的 大部分,将存在彼此相似的图像区域,例如天空、海洋或者其他均勻背景等等。通过促进标 识这样的区域(例如区块)并且然后(如果希望的话)避免再次读取这样的区域(例如区 块)到显示控制器的本地存储器的能力,可以实现到例如显示控制器的本地存储器的读通 信量(读事物)方面的显著节省。
因此,本发明可以用来有效地通过促进不必要的存储器(例如帧缓冲器)读事物 的标识和消除而显著地降低用于帧缓冲器和存储器读操作的功耗和存储带宽。
此外,与上面讨论的现有技术方案相比,本发明需要相对较少的片上硬件,可以是 无损过程,并且不改变数据阵列(例如帧缓冲器)格式。它也可以容易地与现有的输出(例 如帧缓冲器)功率降低方案结合以及与其互补,从而促进进一步的功率节省(如果希望的 话)°
如下面将进一步讨论的,本发明也可以用来首先避免将数据块写到初始数据阵 列。这样的写事物消除可以导致进一步的存储器(例如帧缓冲器)事物功率和存储带宽的 节省(尽管由于数据阵列很可能被读的次数多于被写(更新)的次数,因而消除读事物通 常可能更有益)。
如上面所讨论的,在一个特别优选的实施例中,处理设备根据所述相似性确定,确定是否将来自主存储器中的数据阵列的新数据块读入处理设备的本地存储器。
因此,在一个特别优选的实施例中,如果确定要处理的(例如下一)数据块被认为 与已经存储到处理设备的本地存储器中的数据块相似,那么不从主存储器中的数据阵列读 取新数据块且将其存储到处理设备的本地存储器中,而是相反地,将处理设备的本地存储 器中的现有数据块作为要由处理设备处理的(例如下一)数据块进行处理。
另一方面,如果确定要处理的(例如下一)数据块不被认为与已经存储到处理设 备的本地存储器中的数据块相似,那么从主存储器中的数据阵列读取新数据块且将其存储 到处理设备的本地存储器中,并且然后作为要由处理设备处理的(例如下一)数据块进行 处理。
如下面将进一步讨论的,所述相似性确定优选地基于与讨论的数据块关联的相似 性信息(元数据)。这种相似性信息的生成是本发明的另一方面。这在下面更详细地加以 讨论。
本发明可以用于其中将数据存储为阵列并且在逐块的基础上读出到处理设备且 由处理设备进行处理的任何系统。因此,它可以例如用于图形处理器、CPU、视频处理器、合 成引擎、显示控制器等等。
通常,本发明在要处理的数据阵列中的附近数据块很可能相似或相同的情况下在 消除读事物(和写事物)方面是有用的。因此,当例如图像数据在图形处理器(GPU)、CPU、 视频处理器、相机控制器以及显示控制器中的任何二个之间传输时,该方案可以用来消除 读事物(和写事物)。
例如,像上面讨论的操作显示控制器,潜在地以及典型地以代表图像的数据块的 形式处理要显示的图像一样,视频处理器可以产生要传输到图形处理器以便用作纹理的图 像,在这种情况下,本发明的技术可以用来在图形处理器读入图像(纹理)以便使用时消除 读事物。类似地,图形处理器产生的帧可以由CPU操纵,在这种情况下,CPU可以以本发明 的方式工作以便减少CPU读取帧以操纵它所需的读事物。这也可以具有以下附加的益处: CPU中可以使用更少的缓存行。
类似地,相机(视频或静止相机)可以例如在逐块的基础上处理其传感器产生的 图像以便存储到存储器中并且随后提供给处理该图像的数据处理系统,例如计算机、显示器等等。
数据阵列存储到其中的存储器可以包括任何适当的这类存储器,并且可以以任何 适当的和希望的方式配置。例如,它可以是与处理设备一起在片上的存储器或者它可以是 外部存储器。在优选的实施例中,它是外部存储器,例如系统的主存储器。它可以是用于该 目的的专用存储器,或者它可以是也用于其他数据的存储器的一部分。在图形处理系统的 情况下,在优选的实施例中,数据阵列存储到其中的存储器是向其提供图形处理系统的输 出的帧缓冲器。
存储到第一(例如主)存储器中并且要从中读出以供处理的数据阵列可以使任何 适当的和希望的这种数据阵列。它可以例如包括可以使用图形处理器产生的任何适当的和 希望的数据阵列。在优选的实施例中,它是代表例如要显示的图像的数据。
在一个特别优选的实施例中,它包括用于显示的输出帧,但是它还可以或者替代 地包括图形处理器的其他输出,例如图形纹理(其中例如渲染“目标”是使用图形处理器产生的纹理(例如在“渲染到纹理”操作中))或者要向其写入图形处理系统的输出的其他表 面。如上面讨论的,它也可以例如包括视频处理器或CPU产生的图像。
处理设备可以是读取数据阵列(以逐块的方式)并且处理它例如以便使用或者改 变其内容的任何设备。因此,它可以例如是并且在一个优选的实施例中为显示控制器、CPU、 视频处理器以及图形处理器之一。
类似地,处理设备的本地存储器可以是任何适当的这种存储器。它优选地为处理 设备的或者与其关联的缓冲器或者高速缓冲存储器(cache memory)。该缓存(cache)可以 例如完全的或者设置成关联的。
如上面所讨论的,在特别优选的实施例中,本发明关于图形处理系统(图形处理 器)产生的数据阵列而实现,在这种情况下,要处理的数据阵列优选地为要显示的输出帧, 并且数据阵列存储于其中的第一主存储器优选地为图形处理系统的帧缓冲器。类似地,要 处理数据阵列的输出帧要在其上显示的处理设备优选地为显示设备(例如屏幕或打印机) 的或者用于显示设备的显示控制器。它也可以例如是如上面所讨论的操纵图形处理器产生 的帧的CPU。
处理(并且比较)的数据块中的每一个可以代表整个数据阵列的任何适当的和希 望的区域(区)。只要整个数据阵列被划分或分割成多个可标识的更小的区域,每个区域代 表整个阵列的一部分,并且其可以相应地表示为可以被标识和考虑的数据块,那么可以根 据需要实现将数据阵列细分成数据块。
每个数据块优选地代表整个数据阵列的不同部分(子区域)(尽管如果希望的话, 这些块可以重叠)。每个块应当代表数据阵列的适当部分(区),例如阵列内的多个数据位 置。适当的数据块大小将是数据阵列中的例如8x8、16xl6或3h32数据位置。
在一个特别优选的实施例中,优选地以正方形或矩形将数据阵列划分成规则大小 和形状的区域(数据块)。然而,这不是必需的并且如果希望的话,可以使用其他的设置。
所述相似性确定以及随之发生的处理已经存储到处理设备的存储器中的数据块 还是来自存储到第一存储器中的数据阵列的新数据块的确定可以以任何希望的且适当的 方式以及在数据阵列被处理时的任何希望的且适当的点和时间执行。
例如,可以(并且在一个优选的实施例中)在轮到处理数据块时对于每个数据块 执行相似性确定和随后发生的数据块选择。在这种情况下,例如,将确定在处理了正被处理 的当前数据块之后要处理的下一数据块是否与已经存储到处理设备的存储器中的数据块 相似,并且然后相应地对于该下一数据块处理新的或现有的数据块。
然而,在特别优选的实施例中,在数据块实际被处理之前执行相似性确定和随后 发生的数据块选择。在这种情况下,相似性确定将用来例如控制在从处理设备的本地存储 器中取出且处理数据块之前有效地将这些数据块“预取”(pre-fetch)入处理设备的本地存 储器中。在例如处理设备(例如显示控制器)通过对其本地存储器中要处理的数据块排队 而操作并且然后从该队列逐个处理这些块以便显示的情况下,该设置将是适当的。在这种 设置中,相似性确定可以用来控制将数据块取入本地存储器的队列中(即是否有效地重复 已经在队列中的数据块或者从存储的数据阵列中取新数据块到队列)。
要处理的新数据块是否与已经存储到处理设备(例如显示控制器)的本地存储器 中的块相似的确定可以以任何适当且希望的方式进行。例如,可以将要从存储的数据阵列中读取的新数据块与已经存储到本地存储器中的一个或多个块进行比较以便确定这些块 是否相似。因此,例如,可以将新数据块的一些内容与已经存储到本地存储器中的一个或多 个数据块的一些或全部内容进行比较。
在特别优选的实施例中,与数据阵列关联的信息用来确定任何给定块是否应当被 认为彼此相似。因此,在特别优选的实施例中,代替比较数据块本身的内容的是,相似性确 定过程使用与数据阵列关联的信息确定要处理的数据块是否与已经存储到本地存储器中 的块相似。
换言之,所述相似性确定过程优选地使用与数据阵列关联的“元数据”(信息)以 便确定要处理的数据块是否与已经存储到处理设备的本地存储器中的块相似。如下面进一 步讨论的,为此目的使用与数据阵列关联的元数据降低了处理设备的负担,并且可以提供 减少使用中的读事物的数量的特别有效的机制。
可以由处理设备使用以便确定数据块是否应当被认为相似的任何适当形式的元 数据(信息)可以被使用(并且适当地与存储的数据阵列关联)。
例如,元数据可以包括并且在一个优选的实施例中确实包括允许处理设备本身评 估数据块是否应当被认为彼此相似的信息。
在一个优选的这种实施例中,与数据阵列关联并且要用来确定数据块是否相似的 信息(元数据)包括代表和/或源自讨论的数据块内容的信息。在这种情况下,于是,相似 性确定过程优选地通过将代表和/或源自新数据块内容的信息与代表和/或源自已经存储 到本地存储器中的数据块内容的信息进行比较来确定各数据块是否相似。
在这些设置中,代表每个数据块的内容的信息可以采取任何适当的形式,但是优 选地基于或源自该数据块上的内容。最优选地,它处于产生自或者基于数据块内容的用于 数据块的“签名”的形式。这样的数据块内容“签名”可以包括,例如以及优选地,任何适当 的导出的信息集(该信息可以被认为代表数据块内容),例如从数据块导出的(为其产生 的)校验和(checksum)、CRC或者散列值(hash value)等等。适当的签名将包括标准的 CRC,例如CRC32,或者其他形式的签名,例如MD5、SHA-I等等。
因此,在一个特别优选的实施例中,对于要比较的每个数据块产生指示或代表和/ 或源自数据块内容的签名,并且相似性确定过程比较各数据块的签名以便确定这些块是否 相似。
例如将可能的是对于例如RGBA数据块(例如渲染的区块)产生单个签名,或者可 以对于每个彩色平面产生独立的签名(例如CRC)。类似地,可以执行颜色转换,并且如果希 望的话,对于Y、U、V平面产生独立的签名。
本领域技术人员应当理解的是,为数据块产生的签名越长(签名越精确地表示 该数据块),那么签名之间越不太可能存在假“匹配”(以及因而例如新数据块的错误非读 取)。因此,通常,根据希望的精度(以及作为关于例如签名生成和处理所需的存储和处理 资源的折衷),可以使用更长或更短的签名(例如CRC)。
也可以针对数据块内容的一个或多个特定方面对签名加权,以便通过向那些对总 输出具有更多影响的数据块内容(数据)部分加权签名允许例如给定总长度的签名提供更 佳的总体结果(例如如数据阵列代表的图像的观察者所感知的)。
同样可能的是根据例如应用程序的例如显示要求对于不同的应用程序等使用不同长度的签名。这可以进一步帮助降低功耗。因此,在优选的实施例中,使用的签名的长度 可以在使用中变化。优选地,可以根据使用的应用程序改变签名的长度(可以根据使用的 应用程序自适应地调谐)。
在这些实施例的特别优选的设置中,数据块签名在其被创建时是“加盐 的” (salted)(即具有添加到产生的签名值的另一数量(盐值(salt value))) 0盐值可以 方便地为例如自启动以来的数据阵列(例如帧)数或者随机值。如本领域中已知的,这将 帮助使得由签名比较过程中的任何不精确性造成的任何误差是非确定性的(即例如在所 述过程用来显示电影或电视节目的情况下,避免了对于给定图像序列的重复观察在相同点 处总是出现该误差)。
在上面的设置中,相似性确定过程使用了与两个(或更多)数据块关联的元数据 (信息)以确定要处理的新数据块是否与已经存储到处理设备的本地存储器中的数据块相 似。
然而,在另一特别优选的实施例中,与数据阵列关联的元数据(信息)处于相似性 信息的形式,该相似性信息直接指示数据阵列中的给定数据块是否与数据阵列中的另一块 相似。在这种情况下,处理设备可以简单地读取元数据以便确定新数据块是否应当被认为 与已经存储到处理设备的本地存储器中的数据块相似处理设备无需使用元数据对块本身 执行任何形式的相似性评估。这降低了数据阵列处理操作期间对于处理设备的处理要求。
因此,尽管在一个优选的实施例中,与第一(主)存储器中的数据阵列关联的信息 (元数据)包括可以用来评估各数据块之间的相似性的信息(例如如上面讨论的数据块“签 名”),但是在特别优选的实施例中,该信息(元数据)包括(直接)指示对应数据块是否可 以被认为与数据阵列中的另一数据块相似的信息。
在元数据直接指示数据块是否可以被认为与数据阵列中的另一数据块相似的情 况下,该元数据可以采取任何适当的且希望的形式来完成这点。它可以例如包括分级四叉 树。在优选的实施例中,它是OD)位图的形式。
在一个特别优选的这种实施例中,元数据(例如位图)代表要从数据阵列中读取 的数据块并且每个元数据(例如位图)项为相应的数据块指示该数据块是否与数据阵列中 的另一数据块相似。最优选地,数据阵列中的每个数据块位置与指示该块是否与另一块相 似的元数据项关联。在这种情况下,相似性确定过程需要简单地读取讨论的数据块位置的 相关元数据项以便确定该数据块是否与已经存储到处理设备的本地存储器中的数据块相 似。
因此,在特别优选的实施例中,数据阵列与元数据(例如位图)关联,所述元数据 为数据阵列中的每个对应数据块指示该数据块是否与数据阵列中的另一数据块相似,并且 相似性确定过程(处理设备)使用要处理的新数据块的相关元数据确定该新数据块是否与 已经存储到处理设备的本地存储器中的数据块相似。
在这些设置中,可以像希望的那样构造和设置元数据。例如,它可以并且在一个优 选的实施例中确实简单地指示数据块是否与数据阵列中前面紧接的数据块相似。在这种情 况下,每个元数据项需要包括仅仅单个比特,一个值(例如“1”)指示相应的块与前面紧接 的块相似并且另一个值(例如“0”)指示不相似。
为了促进这一点,数据块应当以特别的预定义的顺序进行处理(将它们写到数据阵列以及从该阵列读取它们都是这样)。优选地,使用可以利用块之间的任何空间一致性 (coherence)的顺序。
同样可能的是使用例如更复杂的元数据设置,其中不仅仅与其前面紧接的数据块 有关地,而且与数据阵列中超过一个数据块有关地考虑数据块。在这种情况下,与每个对应 块位置关联的元数据(例如位图项)应当不仅指示相应数据块与数据阵列中另一数据块相 似,而且指示它与数据阵列中哪个数据块相似。在这种情况下,与每个数据块位置关联的元 数据(例如位图项)将大于单个比特,因为为每个块位置传送了更多的信息。元数据项的 实际大小将取决于例如出于相似性的目的每个数据块要与数据阵列中的多少数据块比较 (因为这于是将确定每个元数据项必须能够代表多少可能的相似块置换(permutation))。
在这些设置中,每个相似性值(元数据项)可以例如给出讨论的数据块与数据阵 列中哪一个其他数据块相似的相对指示(从而例如“001”指示相对于当前数据块的前一数 据块),或者讨论的数据块与数据阵列中哪一个其他数据块相似的绝对指示(从而例如元 数据“125”指示该块与讨论的数据阵列中第125个数据块相似)。
元数据项大小的选择将是用于准备并且存储元数据的开销与在元数据能够指示 与数据阵列中更大数量的其他数据块的相似性的情况下将被消除的潜在地更大数量的读 事物之间的折衷或最优化。使用的元数据设置的选择因此可以基于例如这些准则以及系统 的期望或预期用途或实现条件而做出。(在这里也应当指出的是,以当前实施例的方式使用 元数据可以促进使用小得多的数据块大小(例如在缓存行水平),只是因为每数据块的元 数据开销可以相对较小。)
在这些设置中,同样可能的是每个元数据项包括指示各数据块如何相似的“相似 度”值。相似性确定过程于是可以在使用中例如使用该相似度值以便确定是否从数据阵列 中读取新块或者重新使用处理设备本地存储器中的已经存在的相似数据块。例如,相似性 确定过程可以设置相似度值阈值,将用于新数据块的相似度值与该阈值比较并且相应地读 入或不读入新数据块。这于是将允许例如通过改变使用中的相似度值阈值修改读取过程例 如以便在使用中提供更精确或较不精确的数据阵列读取过程。
在另一优选的实施例中,与数据阵列关联的元数据(相似性信息)是命令列表的 形式,其指示处理设备依照数据块的相对相似性将数据块读入处理设备的本地存储器中。 例如,可以准备命令列表,其例如比如说将块1读入处理设备的本地存储器,对于下三个块 重复该块,然后从数据阵列将第5个数据块读入本地存储器,重复该块一次,从本地存储器 中逐出第一数据块,从数据阵列中读入第7个块,从数据阵列中读入且处理第8个块,等等。 这种命令列表可以直接产生,或者例如可以首先产生相似性位图并且然后对其解析以便为 数据阵列创建随后被存储的命令列表。
在相似性元数据(信息)与数据阵列关联的情况下,有必要也产生与数据阵列关 联的必要的元数据。本发明在其优选的实施例中也至少扩展到元数据的生成。
元数据可以以任何希望的且适当的方式产生并且与数据阵列关联。优选地,在产 生数据阵列时产生元数据。在一个优选的实施例中,由产生数据阵列的设备(如上面讨论 的,所述设备可以是例如图形处理器、视频处理器、相机控制器(处理相机传感器产生的数 据)或者CPU)产生元数据。
在元数据包括用于每个数据块的内容“签名”的情况下,这些签名可以在产生数据块时产生并且然后以适当的方式与产生的数据块关联地存储。
在其中元数据直接指示数据块是否可以被认为与另一数据块相同(例如上面讨 论的“相似性”位图)的情况下,于是数据阵列生成过程优选地包括在产生数据块时比较这 些数据块并且相应地产生相似性信息,例如位图。
在这种情况下,可以例如通过将诸如上面讨论的签名之类的代表和/或源自数据 块的内容的信息与代表和/或源自另一数据块的内容的信息进行比较来完成数据块比较, 以便评估数据块的相似性或其他方面。
然而,在特别优选的实施例中,比较块的实际内容(而不是其内容的某种表示)以 便确定这些块是否应当被认为相似。为此,可以将数据阵列的数据块的一些或全部内容与 数据阵列的另一数据块(或多个数据块)的一些或全部内容进行比较。比较数据块的一些 或全部实际内容可以降低复杂性并且减少比较过程中的误差。
比较过程优选地使用某种形式的阈值准则以便确定块是否应当被认为与另一块 相似。例如并且优选地,如果对应块内容的选定数量的比特匹配,那么认为这些块相似。优 选地,块之间存在允许的一些最大视觉偏差(其中数据阵列代表图像)。
最优选地,在认为块不相似之前,允许最大偏差,例如像素的LSB的差异量。优选 地,该阈值(例如最大内容偏差)在使用中可以改变(例如被编程)。可以例如基于静态和 动态帧数据的比例和/或基于使用的功率模式(例如低功率模式与否)等等对每个应用程 序设置该阈值。
在一个特别优选的实施例中,考虑的数据块中的每一个包括处理设备的本地存储 器的一个缓存行或者数据阵列的2D子区块(其中该阵列由独立的区块构成,例如对于基于 区块的图形处理系统,情况就是这样)。这些是特别有效的实现方式,因为它们使用可以由 处理数据阵列的处理设备的处理元件有效地操纵的并且可以由该处理设备有效地从存储 器中取出的若干单位的存储数据。
在图形处理系统中,在一个优选的实施例中,每个数据块与图形处理器作为其渲 染输出而产生的渲染区块相应。这是有益的,因为图形处理器将直接产生这些渲染区块,并 且因而将无需任何进一步的处理以便“产生”将被考虑和比较的数据块。
在这些设置中,出于渲染的目的将渲染目标(数据阵列)划分的(渲染)区块可 以是任何希望的且适当的大小或形状。本领域已知的是,渲染的区块优选地大小和形状都 相同,尽管这不是必需的。在一个优选的实施例中,每个渲染的区块是矩形的,并且优选地 大小为8x8、16x16或32x32采样位置。
在另一个特别优选的实施例中,可以并且优选地使用渲染过程在其上操作(产 生)的不同大小和/或形状的区块的数据块。
例如,在优选的实施例中,被考虑和比较的某个或每个数据块可以由一组多个“渲 染的”区块组成,和/或可以包括仅仅渲染的区块的子部分。在这些情况下,可以存在中间 阶段,其有效地从图形处理器产生的渲染的一个或多个区块“生成”希望的数据块。
在一个优选的实施例中,在整个数据阵列上使用相同的块(区域)配置(大小和 形状)。然而,在另一个优选的实施例中,不同的块配置(例如在其大小和/或形状方面) 用于给定数据阵列的不同区域。因此,在一个优选的实施例中,不同的数据块大小可以用于 相同数据阵列的不同区域。14
在一个特别优选的实施例中,可以在使用中例如在逐数据阵列(例如输出帧)的 基础上改变块配置(例如在被考虑的块的大小和/或形状方面)。最优选地,可以在使用中 例如并且优选地根据消除(避免)的读(和/或写)事物的数量或速率块配置自适应地改 变。例如并且优选地,如果发现使用特定块大小仅仅导致无需从主存储器中读取块的概率 低,那么可以针对随后的数据阵列改变考虑的块大小(例如并且优选地使得更小)以便设 法提高避免需要从主存储器中读取数据块的概率。
在使用中改变数据块大小的情况下,那么这可以根据需要例如在整个数据阵列上 或者在数据阵列的仅仅特定部分上进行。
可以将数据块与一个或者与超过一个其他数据块进行比较。优选地,该比较通过 将对应块存储到片上缓冲器/缓存中来完成。
在一个优选的实施例中,将数据块仅仅与单个存储的数据块比较,优选地与数据 阵列中其前面紧接的数据块比较。
在另一个优选的实施例中,将数据块与数据阵列的多个其他数据块比较。这可能 有助于进一步减少需要从数据阵列中读取的数据块的数量,因为它可以允许读取与要消除 的数据阵列中其他位置的数据块相似的数据块。
在将数据块与数据阵列的多个其他数据块比较的情况下,于是虽然可以将每个数 据块与数据阵列的所有数据块进行比较,但是优选地每个数据块仅与数据阵列的一些而不 是全部其他数据块比较,例如并且优选地与和所讨论数据块处于数据阵列的相同区块的那 些数据块(例如覆盖以及围绕该数据块位置的那些数据块)进行比较。这将提供增大的检 测数据块匹配的可能性,而无需检查数据阵列中的所有数据块。最优选地,将数据块与数据 阵列中相同行的数据块进行比较(按照产生块的顺序)。
同样可能的是使用中例如在逐帧的基础上改变每个数据块与之比较的其他数据 块的数量。改变数据块比较搜索深度将允许改变元数据宽度。
在一个优选的实施例中,将数据阵列的每一个数据块与另一个数据块或另外多个 数据块比较。然而,这不是必需的,并且因而在另一个优选的实施例中,关于给定数据阵列 (例如输出帧)的一些而不是全部数据块执行该比较。
在特别优选的实施例中,例如并且优选地在逐数据阵列(例如逐帧)的基础上或 者在数据阵列(例如帧)序列的基础上改变对各数据阵列与另一数据块或另外多个数据块 比较的数据块的数量。这优选地基于连续数据阵列(例如帧)之间的期望相关(或反之)。
因此,元数据生成过程优选地包括在数据阵列中选择要与给定数据阵列的另一数 据块或另外多个数据块比较的数据块的数量的装置或步骤。
在特别优选的实施例中,要比较的数据块的数量对于数据阵列的不同区域可以是 并且优选地是不同的。
在优选的实施例中,(例如触发数据阵列的生成的)软件应用程序有可能指示和 控制应当对于数据阵列的哪些区域执行数据块比较过程。这于是将允许该应用程序对于该 应用程序“知道”总会不同的数据阵列区域“关闭”比较过程。
这可以根据需要实现。在一个优选的实施例中,提供对于数据阵列区域启用/禁 用数据块(例如渲染的区块)比较的寄存器,并且软件应用程序然后相应地设置寄存器 (例如通过图形处理器驱动器)。
如上面讨论的,应当相信,要处理的数据阵列的数据块的“相似性”元数据的生成 本身可以是新的和有利的。
因此,依照本发明的第四方面,提供了一种产生在处理存储到存储器中的数据阵 列时使用的元数据的方法,该方法包括
对于代表要处理的数据阵列的特定区域的一个或多个数据块中的每一个
确定该数据块是否应当被认为与数据阵列的另一数据块相似;并且
与数据阵列关联地存储指示数据块是否被确定为与该数据阵列的另一数据块相 似的相似性信息。
依照本发明的第五方面,提供了一种数据处理系统,该数据处理系统包括
用于产生数据阵列以供处理的数据处理器;
用于为代表数据阵列的特定区域的一个或多个数据块中的每一个确定该数据块 是否应当被认为与该数据阵列的另一数据块相似的装置;以及
用于与数据阵列关联地存储指示数据块是否被确定为与该数据阵列的另一数据 块相似的相似性信息的装置。
依照本发明的第六方面,提供了一种数据处理器,该数据处理器包括
用于产生数据阵列以供处理的装置;
用于为代表数据阵列的特定区域的一个或多个数据块中的每一个确定该数据块 是否应当被认为与该数据阵列的另一数据块相似的装置;以及
用于与数据阵列关联地存储指示数据块是否被确定为与该数据阵列的另一数据 块相似的相似性信息的装置。
本领域技术人员应当理解的是,本发明的这些方面和实施例适当地可以并且优选 地确实包括这里描述的本发明优选的和可选的特征中的任何一个或多个或者全部特征。因 此,例如,相似性指示信息优选地为与数据阵列关联的位图的形式。数据块的相似性优选地 通过比较这些数据块、优选地通过直接比较其内容来确定。数据阵列优选地为代表图像的 数据,并且数据处理器(数据阵列生成处理器)优选地为图形处理器(但是它也可以是例 如视频处理器或CPU)。
优选地,在这些方面和设置中,所述系统如上面所讨论的产生输出数据阵列以及 一组关联的相似性信息(元数据),该相似性信息指示输出数据阵列中的哪些区域(块)相 同(可以被认为是相似的)。
最优选地,将整个数据阵列划分成适当的数据块,并且为数据阵列所划分的每个 数据块确定该数据块是否与数据的另一数据块相似(并且相应地存储该数据块的相似性
在特别优选的实施例中,当把数据阵列写到存储器时(即当产生数据阵列时),产 生相似性信息。这避免了一旦数据阵列被产生,则需要处理该数据阵列以便产生相似性信 息。在这种情况下,优选地通过成块地将数据写到数据阵列产生数据阵列,并且当产生每个 新块以便写到阵列时,优选地确定该块是否与已经为数据阵列而产生的另一块相似并且相 应地产生其相似性信息(元数据)。
因此,在一个特别优选的实施例中,通过将代表数据阵列的特定区域的数据块写 到存储器中的存储的阵列来将数据阵列存储到存储器(例如帧缓冲器)中,并且当新数据16块为数据阵列而产生时,确定该新数据块是否应当被认为与已经为数据阵列产生的数据块 相似,并且产生指示该新数据块被确定为与已经为数据阵列产生的数据块相似的相似性信 息且相应地将其与数据阵列关联地存储。
在这些设置中,优选地对于相似性信息生成过程在本地存储器中缓冲或缓存所述 数据块,以避免例如必须从其中要存储数据阵列的主存储器中读取块以便产生相似性信 息。
同样可能或者替代地可能的是例如在阵列产生时为数据块产生“签名”(如上面讨 论的),并且然后使用签名为数据阵列产生进一步的相似性信息,例如相似性位图。
在上面的方面和实施例中,适当地存储与数据阵列关联并且要在处理数据阵列时 使用的元数据(信息),例如块相似性位图和/或数据块的签名。在优选的实施例中,它与 数据阵列一起存储到存储器中(存储到第一存储器中)。然而,情况不必如此,并且如果希 望的话,可以将相似性元数据存储到与数据阵列不同的位置,例如系统中的任何其他适当 的位置。事实上,由于相似性元数据可以相对较小,因而如果希望的话,它可以例如存储到 片上存储器或缓冲器中,而不是存储到片外存储器中。
当使用元数据时,它可以由处理设备适当地检索。优选地,将用于一个或多个数据 块以及优选地用于多个数据块的元数据(例如签名)缓存到处理设备本地,例如缓存到处 理设备本身上,例如缓存在片上元数据(例如签名)缓冲器中。这可以避免在每次做出块 相似性评估时需要从外部存储器中取出元数据并且因而有助于降低用于读取元数据的存 储带宽。
最优选地,在读取和处理其有关的数据块之前,部分(与数据阵列的多个块相应) 地检索(读取)被处理的数据阵列的元数据。因此,优选地为读取过程预取出相似性元数 据(信息)。这可以允许更快地执行所述相似性确定。
在诸如数据块签名之类的元数据本地缓存到处理设备上,例如存储到片上缓冲器 中的情况下,于是优选地以适当的顺序(例如希尔伯特(Hilbert)顺序)处理数据块,以便 增大与其元数据被本地地缓存(存储到片上缓冲器中)的数据块匹配的可能性。
本领域技术人员应当理解的是,尽管数据块(例如渲染的区块)的元数据的生成 和存储将需要一些处理和存储资源,但是申请人相信,可以通过以上面讨论的方式使用该 数据而提供的功耗和存储带宽方面的潜在节省将胜过于此。
本领域技术人员应当理解的是,在一个特别优选的实施例中,产生的数据阵列和 元数据于是由处理设备以上面讨论的方式读取和使用。
因此,依照本发明的另一方面,提供了一种处理数据阵列的方法,该方法包括
产生要处理的数据阵列;
对于代表要处理的数据阵列的特定区域的一个或多个数据块中的每一个
确定该数据块是否应当被认为与数据阵列的另一数据块相似;并且
产生指示该数据块是否被确定为与数据阵列的另一数据块相似的相似性信息;
将数据阵列及其关联的产生的相似性信息存储到第一存储器中;
从第一存储器中读取数据块——每个数据块代表数据阵列的特定区域,并且在这 些数据块被处理设备处理之前,将其存储到处理数据阵列的处理设备的存储器中;
使用为数据阵列而产生的相似性信息确定数据阵列的要处理的数据块是否与已经存储到处理设备的存储器中的数据块相似;以及
根据该相似性确定对要处理的数据块处理已经存储到处理设备的存储器中的数 据块,或者来自存储到第一存储器中的数据阵列的新数据块。
依照本发明的另一个方面,提供了一种数据处理系统,该系统包括
用于存储要处理的数据阵列的第一存储器;
用于产生要处理的数据阵列的数据处理器;
用于为代表数据阵列的特定区域的一个或多个数据块中的每一个确定该数据块 是否应当被认为与该数据阵列的另一数据块相似的装置;
用于产生指示该数据块是否被确定为与数据阵列的另一数据块相似的相似性信 息的装置;
用于将数据阵列及其关联的产生的相似性信息存储到第一存储器中的装置;以及
用于通过处理连续的数据块而处理存储到第一存储器中的数据阵列的处理设备, 每个数据块代表该数据阵列的特定区域,该处理设备具有本地存储器;
读控制器,其被配置成读取代表存储到第一存储器中的数据阵列的特定区域的数 据块并且在数据块被处理设备处理之前将数据块存储到处理设备的本地存储器中;以及
控制电路,其被配置成使用为数据阵列产生的相似性信息确定数据阵列的要处理 的数据块是否与已经存储到处理设备的存储器中的数据块相似,并且根据该相似性确定使 得处理设备对于要处理的数据块处理已经存储到处理设备的存储器中的数据块,或者来自 存储到第一存储器中的数据阵列的新数据块。
本领域技术人员应当理解的是,这些方面和设置适当地可以并且优选地确实包括 这里讨论的本发明优选的和可选的特征中的一个或多个或者全部特征。
尽管如上面所讨论的本发明技术特别地涉及从存储器中读取数据以供使用的过 程,但是本申请人认识到,本发明技术的原理也可以用来首先改进将数据阵列写到存储器 的过程。例如并且特别地,本申请人已经认识到,如果数据块被确定为充分地与已经为数据 阵列产生的块相似,那么也将新数据块存储到数据阵列中可能是不必要的。
因此,在特别优选的实施例中,当把用于数据阵列的数据块写到存储器中的数据 阵列时,如果确定完成的数据块(例如渲染的区块)应当被认为与已经为数据阵列产生的 (即已经存储到数据阵列中的)数据块相似,则不将该数据块写到存储器中的数据阵列。因 此,这避免了将被确定为与已经存储到数据阵列中的数据块相同的数据块写到数据阵列。
因此,在这种情况下,当产生了要写到数据阵列的每个数据块时,可以将它与数据 阵列的另一个数据块或另外多个数据块比较并且然后根据该比较将新数据块写到或不写 到数据阵列。
因此,在特别优选的实施例中,存在当用于数据阵列的数据块完成时,将该数据块 与数据阵列的至少一个其他数据块进行比较并且根据该比较确定是否将完成的数据块写 到数据阵列的步骤或装置。
这个过程优选地使用与上面讨论的相同的块比较安排以便确定块是否相似,例如 比较代表数据块的内容的签名,或者最优选地,直接比较这些块的内容。
在这些设置中,尽管可以不将数据块本身写到数据阵列,但是仍然应当为讨论的 块位置产生相似性元数据并且将其存储,因为该信息将需要用来确定处理设备应当转而处理数据阵列的哪个其他块。
在这些设置的一个优选的实施例中,关于(通过比较)仅仅为相同数据阵列(当 前数据阵列)而产生的块执行写消除过程。
然而,可以将所述比较扩展成包括来自已经存储到存储器(例如帧缓冲器)中的 前面的数据阵列的数据块以便避免在相似的数据块已经存在于存储器中(来自前面的数 据阵列)的情况下再次将该数据块写到存储器以用于数据阵列。这在一系列相似数据阵列 (例如视频序列的帧)被产生的情况下可能是特别有用的。在这种情况下,可以将新产生的 数据块与已经存储到存储器中的数据阵列的一个或多个块进行比较(例如基于其内容或 内容签名)。
在这些设置中,所述系统优选地被配置成总是关于每个给定数据块(数据块位 置)周期性地(例如每秒一次)将新产生的数据块写到存储器中的数据阵列。这于是将确 保对于每个数据块位置至少周期性地将新数据块写入数据阵列,并且从而避免例如错误匹 配的数据块(例如因为即使数据块的内容实际上发生变化,数据块的签名也碰巧匹配)保 留在数据阵列中超过给定的(例如希望的或选择的)时间段。这可以例如通过周期性地 (例如每秒一次)简单地写出整个新数据阵列或者通过在循环模式下在滚动的基础上将新 数据块写出到数据阵列来完成,从而随着时间的推移所有数据块位置最终像新的一样被写 出ο
在特别优选的实施例中,本发明结合另一或若干功率和带宽降低方案使用,所述 方案例如以及优选地为数据阵列(例如帧缓冲器)压缩方案(其根据需要可以是有损的或 无损的)。
如上面讨论的,尽管本发明技术特别应用到图形处理器操作,但是申请人已经认 识到,它们同样可以应用到以与例如基于区块的图形处理系统相似的方式处理块形式的数 据并且例如读帧缓冲器、纹理和/或图像的其他系统。因此,它们可以例如应用到操纵帧缓 冲器的主处理器、读取纹理的图形处理器、读取要合成的图像的合成引擎或者读取参考帧 以便进行视频解码的视频处理器。因此,本发明技术同样可以用于例如视频处理(因为视 频处理对类似于图形处理的区块的数据块操作)以及用于合成图像处理(因为同样地合成 帧缓冲器将被处理为不同的数据块)。它们也可以例如在数码相机处理相机的传感器产生 的数据(图像)的情况下以及在例如为显示器处理数码相机产生的数据(图像)的时候使 用。
本发明技术也可以用在存在多个主设备,每个主设备将例如帧缓冲器中的帧写到 相同的数据阵列的情况下。例如当主处理器产生要在图形处理器产生的图像上显示的“覆 盖”时,情况就是这样。
在这种情况下,向数据阵列写的每个设备将相应地更新相似性元数据,或者可以 无效或清除例如另一主设备向其写的数据阵列的那些部分的元数据(从而数据阵列的那 些部分将完全读出到处理设备)。后者在给定主设备不能更新相似性元数据的情况下将是 必要的。同样可能的是在例如另一主设备修改数据阵列的相对较大的部分(或者完全修改 该数据阵列)的情况下无效(清除)用于整个数据阵列的元数据。
更特别地,在其中存在也向数据阵列读和/或写的“第三方”设备的情况下,那么 在其中仅仅采用读消除的情况下,第三方设备在从数据阵列读时可以只是正常地读取数据阵列,而不使用(或者事实上无需知道)相似性元数据,或者第三方设备可以使用该元数据 以消除读事物。
在第三方设备向数据阵列写的情况下,那么它可以更新与数据阵列关联的元数 据,或者可以无效用于数据阵列的相似性元数据的一部分或全部。在后一情况下,可以例如 在元数据一开始处存在数据阵列元数据无效比特。
在使用读和写事物消除二者的情形下,那么在从数据阵列中读的情况下,第三方 设备将使用相似性元数据以消除读事物。(和其中仅使用读消除并且因而读取数据阵列的 第三方设备根据需要可以使用或可以不使用元数据以消除读的情况不同的是,在其中启用 写消除的情况下,第三方设备在从数据阵列中读时必须读取和使用元数据,因为当使用了 写消除时,数据阵列可能不是“完整的”(因为在“消除”了向数据阵列写的数据块的情况下, 读设备将必须根据元数据确定转而使用哪个块)。)
在这种情况下向数据阵列写的情况下,那么针对上面仅启用读消除的情况,第三 方设备在将数据写到数据阵列时可以更新元数据,或者可以使元数据的一部分或全部无 效。
可以根据需要执行元数据生成过程(以及在使用的情况下数据块比较过程)。在 一个优选的实施例中,它由数据阵列生成处理器(例如GPU、CPU等等)本身执行,但是在另 一个优选的实施例中,存在这样做的独立的块或硬件元件(逻辑),其在数据阵列生成过程 与其中要存储数据阵列的存储器(例如帧缓冲器)之间。在其中元数据生成“单元”独立 于数据阵列生成处理器(在该处理器之外)的情况下,它可以例如作为独立的逻辑块或者 总线结构和/或互连的一部分而存在。
因此,在一个优选的实施例中,存在独立于数据阵列生成处理器(例如图形处理 器)的元数据生成硬件元件(逻辑),并且在另一个优选的实施例中,元数据生成逻辑集成 到该处理器(的一部分)中。因此,在一个优选的实施例中,元数据生成装置等将是数据生 成处理器(例如图形处理器)本身的一部分,但是在另一个优选的实施例中,系统将包括数 据生成处理器和独立的“元数据生成”单元或元件。
本发明也扩展到提供用于执行比较以及随之发生的相似性元数据确定的特定硬 件元件。如上面所讨论的,该硬件元件(逻辑)可以例如作为例如图形处理器的组成部 分而提供,或者可以是可以例如在例如图形处理器与外部存储控制器之间形成接口的孤立 (standalone)元件。它可以是可编程的或专用硬件元件。
因此,依照本发明的另一方面,提供了用在数据处理系统中的元数据生成装置,其 中通过从输出缓冲器中读取代表数据阵列的特定区域的数据块而从输出缓冲器中读取数 据处理系统产生的数据阵列,所述元数据生成装置包括
用于将数据阵列的数据块与数据阵列的至少一个其他数据块进行比较并且用于 根据该比较产生指示该数据块是否应当被认为与数据阵列的另一数据块相似的信息的装 置;以及
用于与数据阵列关联地存储该相似性信息的装置。
本领域技术人员应当理解的是,这些方面和实施例可以并且优选地确实包括本文 描述的优选的和可选的特征中的任何一个或多个或者全部特征。因此,例如,所述比较优选 地包括比较各数据块的一些或全部内容。
可以根据需要类似地执行相似性确定过程(以及随之发生的数据块选择过程)。 在一个优选的实施例中,它由处理设备(例如显示控制器、GPU、CPU等等)本身执行,但是 在另一个优选的实施例中,存在这样做的独立的块或硬件元件(逻辑),其在数据处理设备 与其中存储数据阵列的存储器(例如帧缓冲器)之间。在其中相似性确定等“单元”独立 于处理设备(在该处理设备之外)的情况下,它同样可以例如作为独立的逻辑块或者总线 结构和/或互连的一部分而存在。
因此,在一个优选的实施例中,存在独立于数据阵列处理设备(例如显示控制器) 的相似性确定硬件元件(逻辑),并且在另一个优选的实施例中,该相似性确定逻辑集成到 数据阵列处理设备(的一部分)中。因此,在一个优选的实施例中,相似性确定装置等(读 控制器和系统的控制器)将是处理设备(例如显示控制器)本身的一部分,但是在另一个 优选的实施例中,系统将包括处理设备和独立的“相似性确定”单元或元件(包括读控制器 和/或控制器)。
本发明也扩展到提供用于执行所述相似性以及随之发生的数据块确定的特定硬 件元件。如上面所讨论的,该硬件元件(逻辑)可以例如作为例如显示控制器的组成部分 而提供,或者可以是可以例如在例如显示控制器与外部存储控制器之间形成接口的孤立元 件。它可以是可编程的或专用硬件元件。
因此,依照本发明的另一方面,提供了当处理第一存储器中存储的数据阵列时使 用的相似性确定装置,该装置包括
读控制器,其被配置成读取代表存储到第一存储器中的数据阵列的特定区域的数 据块并且在处理设备处理数据块之前将数据块存储到处理数据阵列的处理设备的本地存 储器中;以及
控制器,其被配置成确定数据阵列的要处理的数据块是否与已经存储到处理设备 的存储器中的数据块相似,并且使得处理设备根据该相似性确定对要处理的数据块处理已 经存储到处理设备的存储器中的数据块,或者来自存储到第一存储器中的数据阵列的新数 据块。
本领域技术人员应当理解的是,这些方面和实施例可以并且优选地确实包括本文 描述的优选的和可选的特征中的任何一个或多个或者全部特征。因此,例如,所述相似性确 定优选地基于与数据阵列关联的相似性元数据。
各种不同的其他优选的和可替换的设置是可能的。例如,在其中产生和使用左右 图像的立体显示器的情况下,优选地出于读(以及可选地写)消除的目的比较要显示的各 “左”和“右”块(而不是仅将用于帧的“左”图像的块与用于“左”图像的块进行比较(以 及仅将“右”块与“右”块进行比较))。换言之,优选地将图像的左右部分彼此比较以及将 图像的各部分的块彼此比较。这将有助于进一步减少读事物的数量,因为如本申请人认识 到的,图像中许多左右区块彼此相同。类似的设置可以(以及优选地)用于使用超过两个 图像的显示器和体积显示器。
在特别优选的实施例中,确定的相似性信息也用来管理将数据块存储到处理设备 的本地存储器中以及特别地用作确定从本地存储器中逐出数据块的因素。例如,在一个优 选的实施例中,元数据用来确定要由处理设备重复地使用的一个或多个数据块(例如用在 被显示的帧中),并且然后将该(一个或多个)数据块临时锁在处理设备的本地存储器中21(一旦将其写到那里),从而当在将来需要时其在本地存储器中可获得。因此,元数据优选 地用来设法标识保留在处理设备的本地存储器(在可能的情况下)将是有利的那些数据 块,并且然后相应地管理本地存储器。这可以例如通过在准备元数据时对多少其他数据块 被记为与给定数据块相似进行计数来完成。该信息然后可以用来相应地控制将数据块存储 到处理设备的本地存储器中。
同样可能的是保持对不久的将来要使用本地存储器中的给定数据块的次数的计 数(例如基于为被处理的数据阵列的部分预取出的元数据),并且仅允许在数据块的“使 用”计数为零时从本地存储器中逐出该数据块。
因此,在特别优选的实施例中,至少部分地依照与讨论的数据阵列关联的相似性 元数据控制从处理设备的本地存储器中逐出数据块。
本发明可以在任何适当的系统中实现,例如适当配置的基于微处理器的系统。在 一个优选的实施例中,本发明在基于计算机和/或微处理器的系统中实现。
本发明的各个不同的功能可以类似地以任何希望的和适当的方式执行。例如,本 发明的功能可以根据需要以硬件或软件实现。因此,例如,本发明的各个不同的功能元件和 “装置”可以包括可操作来执行这些各个不同的功能的一个或多个适当的处理器、一个或多 个控制器、功能单元、电路、处理逻辑、微处理器设置等等,例如适当的专用硬件元件和/或 可以被编程为以希望的方式操作的可编程硬件元件。
在优选的实施例中,输出数据阵列生成处理器和/或元数据生成单元被实现为硬 件元件(例如ASIC)。因此,在另一个方面中,本发明包括包含本文描述的本发明的任何一 个或多个方面的装置的或者依照所述方面的方法操作的硬件元件。
在这里还应当指出,本领域技术人员应当理解的是,本发明的各个不同的功能等 可以在给定处理器上复制和/或并行地执行。
在用于图形处理系统中的情况下,本发明可应用到任何适当形式或配置的图形处 理器和渲染器,例如具有“流水线”(pipelined)渲染设置(在这种情况下,渲染器将是渲染 管道(rendering pipeline)的形式)的处理器。它特别可应用到基于区块的图形处理器 和图形处理系统。
根据以上所述应当理解的是,本发明特别地但非排他性地可应用到2D和3D图形 处理器和处理设备,并且相应地扩展到包含本文描述的本发明的任何一个或多个方面的装 置的或者依照所述方面的方法操作的2D和/或3D图形处理器以及2D和/或3D图形处理 平台。除了执行上面讨论的特定功能所需的任何硬件,这样的2D和/或3D图形处理器另 外地可以包括2D和/或3D图形处理器包括的通常的功能单元中的任何一个或多个或者全 部。
本领域技术人员还应当理解的是,本发明的所有描述的方面和实施例可以适当地 包括本文描述的优选的和可选的特征中的任何一个或多个或者全部特征。
依照本发明的方法可以至少部分地使用软件(例如计算机程序)来实现。因此,可 以看到,当从另外的方面来看时,本发明提供了 计算机软件,其在安装到数据处理装置上 时特别适于执行本文描述的方法;计算机程序元件,其包括用于在该程序元件在数据处理 装置上运行时执行本文描述的方法的计算机软件代码部分;以及包括代码的计算机程序装 置,其适于在该程序运行在数据处理系统上时执行本文描述的方法或者所有方法步骤。所述数据处理系统可以是微处理器、可编程FPGA (现场可编程门阵列)等等。
本发明也扩展到包括这种软件的计算机软件载体,其在用来操作包括数据处理装 置的处理器或系统时与所述数据处理装置结合使得所述处理器或系统执行本发明的方法 的步骤。这种计算机软件载体可以是物理存储介质,例如ROM芯片、⑶ROM或盘,或者可以 是信号,例如导线上的电子信号、光学信号或者例如到卫星的无线电信号等等。
还应当理解的是,并不是本发明方法的所有步骤都需要由计算机软件执行,并且 因而从更宽广的方面来看,本发明提供了计算机软件和安装到计算机软件载体上的这种软 件,其用于执行本文阐述的方法的至少一个步骤。
本发明相应地可以适当地实施为与计算机系统一起使用的计算机程序产品。这种 实现可以包括固定在有形介质(例如非临时性计算机可读介质,如磁盘、CD ROM、ROM或者 硬盘)上的一系列计算机可读指令。它也可以包括可通过有形介质(包括但不限于光学的 或模拟通信线路)经由调制解调器或其他接口设备或者使用无线技术(包括但不限于微 波、红外或其他传输技术)无形地传输到计算机系统的一系列计算机可读指令。该计算机 可读指令系列包含了本文前面描述的所有或部分功能。
本领域技术人员应当理解的是,这样的计算机可读指令可以以若干编程语言书写 以便与许多计算机架构或操作系统一起使用。此外,这样的指令可以使用任何存储技术 (现在的或未来的,包括但不限于半导体、磁性的或光学的)来存储,或者使用任何通信技 术(现在的或未来的,包括但不限于光学的、红外的或者微波)来传输。可以设想的是,这 些的计算机程序产品可以作为可移除介质与伴随的印刷或电子文件(例如紧缩包装软件) 一起分发、利用计算机系统预装载到例如系统ROM或固定盘上,或者通过网络(例如因特网 或万维网)从服务器或电子公告板分发。


现在,将仅通过实例且参照附图描述本发明的若干优选实施例,在附图中
图1示意性地示出了其中结合基于区块的图形处理器使用本发明的第一实施例;
图2示意性地示出了本发明实施例中如何将相关数据存储到存储器中;
图3示意性地且更详细地示出了图1中所示实施例的显示控制器;
图4示出了图1中所示实施例的显示控制器的操作;
图5示意性地且更详细地示出了图1中所示实施例的图形处理器;以及
图6示出了图1中所示实施例的图形处理器的操作。
具体实施方式
现在,将描述本发明的若干优选实施例。这些实施例将主要针对显示控制器处理 图形处理系统产生的图像以便显示来加以描述,但是如上面指出的,本发明可应用到其中 以代表整个阵列的区域的块处理数据阵列的其他设置。
图1示意性地示出了可以依照本发明实施例操作的系统的设置。
该系统如图1所示包括基于区块(tile-based)的图形处理器(GPU) 1。这是在该 实施例中产生要处理的数据阵列的系统元件。如本领域中已知的,该数据阵列典型地可以 是预期用于在显示设备2 (例如屏幕或打印机)上显示的输出帧,但是也可以例如包括图形处理器1的“渲染到纹理” (render to texture)输出等等。
如本领域中已知的,图形处理器通过产生代表对应输出数据阵列的不同区域的区 块(tile)产生要处理的输出数据阵列,例如输出帧。
如本领域中已知的,在这种设置中,一旦图形处理器1产生了区块,那么通常经由 连接到存储控制器6的互连5将它写到系统的主存储器4 (所述存储器可以是DDR-SDRAM) 中的帧缓冲器3形式的输出缓冲器。
一段时间以后,帧缓冲器3中的数据阵列将由显示控制器7读取并且输出到显示 设备2。(因此,显示控制器7是处理图形处理器1产生的数据阵列(在这种情况下显示该 数据阵列)的处理设备。)
作为该过程的一部分,显示控制器将从帧缓冲器3中读取数据块并且在将这些数 据块输出到显示器2之前将其存储到显示控制器7的本地存储缓冲器8中。显示设备2可 以例如是屏幕或打印机。
在当前实施例中,该过程还包括显示控制器7确定要输出(处理)以便显示的新 数据块是否应当被认为与已经存储到显示控制器7的本地存储器8中的数据块相似。为此, 在当前实施例中,显示控制器7在产生输出帧时使用与图形处理器1产生的帧缓冲器中的 输出帧关联的相似性元数据。(这个过程在下面更详细地进行讨论。)
实际上并且如下面更详细地讨论的,显示控制器7确定要处理的数据块是否应当 被认为与已经存储到其本地缓冲器8中的数据块相似,并且如果发现要处理的数据块与已 经存储到显示控制器7的本地缓冲器8中的数据块相似,那么显示控制器不从帧缓冲器3 中读取新数据块,而是改为将其缓冲器8中的现有数据块提供给显示器2。
通过这种方式,当前实施例可以避免显示控制器7与帧缓冲器3之间针对帧缓冲 器3中与已经存储到显示控制器7的本地缓冲器8中的数据块相似的数据块的读通信量。 (在例如游戏的情况下,当相机位置是静态的时,对于用户界面、天空等等的大部分以及玩 耍场地大部分而言,情况通常如此。)这可以节省与帧读取操作有关的大量带宽和功耗。
另一方面,如果要处理的数据块被确定为不与已经存储到显示控制器7的本地缓 冲器8中的数据块相似,那么显示控制器将来自帧缓冲器3的新数据块读入其本地缓冲器 8并且然后提供该新数据块给显示器2。
在当前实施例中,从帧缓冲器3中读取并且与已经存储到显示控制器7的缓冲器 8中的数据块比较的数据块包括缓存行(cache line),因为这是对于每个读操作由显示控 制器7从帧缓冲器3中读取的数据量。然而,其他的设置也是可能的。例如,显示控制器可 以关于与图形处理器1产生的渲染(render)的区块相应或者与渲染的区块的2D“子区块” 相应的数据块操作该过程。
图1也显示了也能够经由互连5与主存储器4交互的主CPU 9,并且主CPU 9也可 以例如向主存储器4中的帧缓冲器3写。这种可能性将在下面更详细地讨论。
在当前实施例中,如上面讨论的,显示控制器7通过评估与组成讨论的帧的数据 块关联地存储的位图形式的元数据,确定要处理以便显示的给定数据块(缓存行)是否应 当被认为与已经存储到其本地缓冲器8中的数据块相似。
帧缓冲器3中存储的数据阵列中的每个数据块位置(缓存行)与和帧相应的位图 中的单个比特(位图中的每个比特与帧的一个数据块位置(在这种情况下为缓存行)相24应)关联。如果数据块被认为与从帧中读取(处理)的前面的数据块(缓存行)相同,则 将用于该数据块(缓存行)的位图中的比特置为“1”,或者如果该数据块被认为与前面的数 据块不同,则将该比特置为“0 ”。
通过这种方式,显示控制器可以读取与预定处理的数据块关联的位图项(bitmap entry),并且如果该位图项设置为“ 1”,则将知道该数据块应当被认为与读入显示控制器7 的缓冲器8中的前面的数据块相同(并且因而可以显示已经在其缓冲器8中的该数据块, 而不是将新数据块读入显示控制器7的本地存储器8中)。可替换地,如果与要处理的数据 块关联的元数据为“0”,那么显示控制器知道它应当将来自帧缓冲器3的新数据块读入其 本地缓冲器8中并且然后将其显示到显示器2上。
图2示出了帧缓冲器3中的数据阵列及其关联的元数据(数据块相似性信息)10 的示例性存储布局。在这种情况下,构成帧的数据块存储为帧缓冲器3并且关联的数据块 相似性位图10存储到存储器4的另一部分中。(当然,其他设置是可能的。)
如图2中所示,帧缓冲器3中的数据阵列中的每个数据块在相似性信息位图10中 具有关联的项。因此,例如帧缓冲器3中的数据块11与位图10中的位图项13关联,并且 帧缓冲器3中的数据块12与相似性位图10中的位图项14关联。
图2也示出了位图项的性质。因此,位图项13具有值“0”,其指示帧缓冲器3中的 数据阵列中的数据块11不与前面的数据块相同(并且因而“新”数据块应当从帧缓冲器读 入显示控制器7的本地存储器8中)。另一方面,下一数据块12的位图项14具有项“1”, 其指示数据块12与帧缓冲器3中的数据块11相同。这于是将使得显示控制器显示存储到 其本地存储器8中的数据块11,而不是从帧缓冲器3中读取新数据块12。
如果希望的话,可以使用其他相似性元数据设置。例如,每个数据块可以潜在地表 示为与数据阵列中的超过一个数据块相似,在这种情况下,每个位图项可以包括多个比特 以便向显示控制器7指示该位图项相应的数据块应当被认为与数据阵列中的哪些数据块 相似。在这些设置中,每个相似性值(元数据项)可以例如给出讨论的数据块与数据阵列 中的哪个其他数据块相似的相对指示(使得例如“001”指示相对于当前数据块的前一数据 块),或者讨论的数据块与数据阵列中的哪个其他数据块相似的绝对指示(使得例如元数 据“ 125”指示该块与讨论的数据阵列中的第125个数据块相似)。
同样可能的是每个元数据项包括指示各数据块如何相似的“相似度”(likeness) 值。相似性确定过程于是可以在使用中例如使用该相似度值以便确定是否从数据阵列中读 取新块或者重新使用处理设备本地存储器中的已经存在的相似数据块。例如,相似性确定 过程可以设置相似度值阈值,将用于新数据块的相似度值与该阈值比较并且相应地读入或 不读入新数据块。
同样可能的是使用不同于位图的设置,例如分级四叉树(hierarchical quad trees)等等。与数据阵列关联的元数据(相似性信息)也可以是命令列表的形式,其指示 处理设备依照数据块的相对相似性将数据块读入处理设备的本地存储器中。
同样地,如下面进一步讨论的,尽管在上面的位图实例中相似性元数据(位图)直 接向显示控制器7指示对应数据块是否应当被认为与数据阵列中的另一数据块相似,但是 也可能的是将允许显示控制器本身执行数据块之间的比较以便确定它们是否应当被认为 相似的某信息与每个数据块关联。例如,有可能改为存储代表每个数据块的内容的信息并且显示控制器7然后比较这些数据块的对应内容信息以便确定它们是否应当被认为相似。
图3更详细地示出了显示控制器7的结构并且图4为示出显示控制器7的上述操 作的流程图。
如图3所示,除了在来自主存储器4中的帧缓冲器3的数据块被显示之前存储这 些数据块于其中的本地缓冲器8之外,显示控制器7包括总线接口单元20、元数据缓冲器 21、显示格式器和输出单元22以及状态机控制器23。
状态机控制器23用来控制显示控制器7以便执行上面描述的实施例的操作。元 数据缓冲器21用来存储用于讨论的帧(数据阵列)的若干组块的元数据位图10以便提高 片外存储器存取效率。其他设置也是可能的,例如显示控制器总是直接读取主存储器4中 的元数据。
当要显示新帧时,显示控制器首先将从主存储器4中读取与该帧关联的元数据10 的适当部分并且将其存储到它的元数据缓冲器21中。显示控制器然后将来自主存储器4中 的帧缓冲器3的数据块读入其缓存/缓冲器8中并且经由显示格式器/输出单元22将这 些数据块适当地提供给显示器2以便显示。显示控制器操作来将要显示的数据块预取入其 本地存储器8。这样做是为了确保总是存在可用来显示的数据(因为缓冲器/存储器欠载 可能导致显示的图像失灵)。然后,一个接一个地从本地存储器8中读取这些块以便显示。 然而,这个操作在状态机23的控制下被修改以便遵循图4中示出(和上面讨论)的过程。
如图4中所示,当要将新数据块(缓存行)预取入本地存储器8中以便被处理用 于显示(其可以例如通过来自本地存储器8的块的显示触发,从而提示需要取出新块以便 添加到本地存储器8中的“队列”)时,状态机控制器23读取用于该新数据块的元数据缓冲 器21中的相似性元数据位图中的适当位置(步骤31)。它然后确定存储到相似性位图中的 适当位置的比特是否具有值“1”(步骤32)。
如果确定位图位置的值为“1”,那么这指示新数据块与前面的数据块相同(其因 而应当已经在显示控制器的本地存储器8中),并且因而代替从帧缓冲器3中读取新数据 块的是,状态机控制器23使得显示控制器(在适当的时间)使用已经在其本地缓冲器8中 的前面的数据块,即提供来自本地缓冲器8的该前面的数据块给显示器2 (步骤33)。(在 这里,应当理解的是,如果存在相似块序列(即对于其元数据具有值“1”的块),那么状态机 控制器将使得显示控制器对于每个连续相似数据块实际上重新使用(重复)序列中的第一 块。)
另一方面,如果位图中的值为“0”,那么这指示数据块不与前面的数据块相同并且 因而数据块将需要从帧缓冲器3中预取入本地存储器8中以便显示。在这种情况下,状态 机控制器23使得显示控制器从主存储器4中的帧缓冲器3中读取数据块(步骤34)并且 将该数据块存储到显示控制器的本地缓冲器8中(步骤35)。然后,将该新块(在适当的时 间)从显示控制器7的本地缓冲器8提供给显示设备2 (步骤36)。
然后,显示该数据块(步骤37)。
然后,对于要处理(要预取入本地存储器8中)的下一个数据块重复该过程,依次 类推。
在当前实施例中,当组成帧的区块被产生时,图形处理器1产生显示控制器7用来 确定要处理的新块是否与已经存储到其本地缓冲器8中的数据块相同的元数据。图5示出了执行该过程的图形处理器1的架构并且图6为示出元数据生成过程的步骤的流程图。
如图5所示,图形处理器1被修改为在其区块渲染逻辑40之后包括附加的数据块 生成逻辑和块比较逻辑,其用来产生与帧缓冲器3中的数据阵列(帧)关联的适当元数据。
块生成逻辑41用来根据区块渲染逻辑40产生的区块产生适当的数据块。在当前 实施例中,块生成逻辑相应地产生与显示控制器7的缓存存储器8中的缓存行相应的块。然 而,如上面讨论的,其他大小和形式的数据块将是可能的,并且如果希望的话,可以由块生 成逻辑41产生。
块生成逻辑将其产生的连续块存储到缓冲器42中。然后,比较逻辑43比较存储到 缓冲器42中的各数据块(在这种情况下将新数据块与前面紧接的数据块进行比较),并且 根据该比较产生适当的元数据输出比特。为了提高存储效率,将用于多个块的元数据输出 比特收集且合并在缓冲器中,并且然后适当地存储到主存储器4中的元数据位图10中(写 到片外存储器)。(当然,其他的设置是可能的。)块数据也从缓冲器42中读取并且适当地 存储到帧缓冲器3中。
为了有利于该操作,组成输出帧的数据块以特定的预定义顺序处理(将它们写到 帧缓冲器以及从中读取都是这样)。优选地,使用可以利用块之间的任何空间一致性的顺序。
这个过程被示为图6中的流程图。
如图6所示,块生成逻辑41根据区块渲染逻辑40产生的渲染的区块产生数据块 (在这种情况下,与缓存行相应)(步骤51)。然后,将这些数据块存储到缓冲器42中。
然后,比较逻辑43将新数据块与前面的数据块(其已经存储到缓冲器42中)进 行比较(步骤52)。在当前实施例中,比较逻辑43将数据块的内容彼此比较。其他设置是 可能的。例如,比较逻辑可以对于每个讨论的块产生诸如32比特CRC之类的签名以便代表 块的内容,并且然后比较这些块的签名而不是这些块的实际内容。
然后,比较逻辑确定新块是否应当被认为与前面的块相似(步骤53)。在当前实施 例中,该评估基于被比较的两个块的内容如何相似。设置像素的LSB的特定差异量的阈值, 并且如果两个块的内容之间的差异小于该阈值,那么这些块被确定为相似的,反之亦然。
(使用中可以改变该阈值(例如对其编程)。可以在使用中例如对于每个应用程序 基于静态和动态帧数据的比例和/或基于功率模式(例如低功率模式或者非低功率模式) 等等设置该阈值。)
如果在步骤53中比较逻辑确定这些块是不同的(即不相似),那么比较逻辑操作 来将值“0”写入元数据位图10中的适当位置(步骤M)。新数据块本身从缓冲器42写到 主存储器4中的帧缓冲器3 (步骤55)。
另一方面,如果在步骤53处确定这些块应当被认为是相似的,那么比较逻辑43操 作来使得“1”被写入元数据位图10中的适当位置(步骤56)。
于是,像其中块被认为不同的情况一样,可能再次简单地将新块写入主存储器4 中的帧缓冲器。然而,图6示出了其中可以在图形处理器1中启用可能的“写消除”操作的 优选设置。如下面将进一步讨论的,该写消除过程操作来允许图形处理器避免将被确定为 彼此相似的块写入帧缓冲器3中的数据阵列。因此,如图6中所示,如果启用写消除过程 (步骤57),那么在两个块被认为彼此相似的情况下,不将新块写入帧缓冲器中的数据阵列(步骤58)。(另一方面,如果在步骤57处不启用写消除过程,那么新块将像正常的那样被 写到帧缓冲器(步骤55)。)
步骤57中的写消除过程因此操作成使得如果数据块被确定为与前面的数据块相 同(即它与已经存储到帧缓冲器3中的数据块相同),那么也不将该新数据块写入帧缓冲 器。通过这种方式,写消除过程可以对于彼此相同的数据阵列(帧缓冲器)部分避免写通 信量。这可以进一步节省与帧缓冲器操作有关的带宽和功耗。另一方面,如果数据块被确 定为不同的,那么像没有写消除过程的情况一样,将新数据块写到帧缓冲器。
在这些设置中,尽管可能不将数据块本身写到数据阵列,但是仍然应当对于讨论 的块位置产生相似性元数据并且将其存储,因为处理设备(在当前实施例中为显示控制 器)将仍然需要使用该信息以便确定代替地应当处理哪个其他块。
在这些实施例的特别优选的设置中,其中数据块比较可能不准确(可能错误地 匹配实际上不同的块),系统被配置成关于每个给定数据块(数据块位置)总是周期性地 (例如每秒一次)将新产生的数据块写到帧缓冲器。这于是将确保对于每个数据块位置至 少周期性地将新数据块写入帧缓冲器,并且从而避免例如错误匹配的数据块保留在帧缓冲 器中超过给定的(例如希望的或选择的)时间段。这可以例如通过周期性地(例如每秒 一次)简单地写出整个新输出数据阵列或者通过在循环模式(cyclic pattern)下在滚动 (rolling)的基础上将新数据块写出到帧缓冲器来完成,从而随着时间的推移所有数据块 位置最终像新的一样被写出。
上面的设置的各种不同的可替换方案和修改将是可能的。例如,图形处理器产生 的输出数据阵列也可以包括或者替代地包括图形处理器的其他输出,例如图形纹理(其中 例如渲染“目标”是使用图形处理器产生的纹理(例如在“渲染到纹理”操作中)),或者要 向其写入图形处理器系统的输出的其他表面。
可能的是使用例如更复杂的元数据设置,其中不仅将数据块与其前面紧接的数据 块进行比较,而且与输出帧(数据阵列)中超过一个的数据块进行比较。在这种情况下,与 每个对应块位置关联的元数据(例如位图项)应当不仅指示相应数据块与输出数据阵列中 另一数据块相似,而且指示它与输出数据阵列中哪个数据块相似。
类似地,可以将当前的完成的数据块与数据阵列中的多个数据块进行比较。这可 能有助于进一步减少需要从主存储器中读取以用于处理的数据块的数量,因为它将允许消 除与数据阵列中其他位置的数据块相似的数据块的读取。
在优选的实施例中,(例如触发数据阵列的生成的,和/或要使用和/或接收被产 生的输出阵列的)软件应用程序有可能指示和控制以当前实施例的方式处理输出数据阵 列的哪些区域,特别地并且优选地,指示应当对于输出阵列的哪些区域执行数据块比较过 程。这于是将允许该应用程序对于该应用程序“知道”总会更新的输出阵列区域“关闭”本 发明的该过程。
这可以根据需要实现。在优选的实施例中,提供对于输出阵列区域启用/禁用数 据块(例如渲染的区块)比较的寄存器,软件应用程序然后相应地设置寄存器(例如通过 图形处理器驱动器)。
尽管上面特别参照图形处理器操作描述了当前实施例,但是本申请人认识到,本 发明的原理可以同样地应用到以与例如基于区块的图形处理系统类似的方式处理块形式28的数据并且例如读帧缓冲器或纹理的其他系统。因此,它可以例如应用到操纵帧缓冲器的 主处理器、读取纹理的图形处理器、读取要合成的图像的合成引擎或者读取参考帧以便进 行视频解码的视频处理器。因此,该实施例的技术同样可以用于例如视频处理(因为视频 处理对类似于图形处理中的区块的数据块操作)以及用于合成图像处理(同样地因为合成 帧缓冲器将被处理为不同的数据块)。
它们也可以例如在处理(数码)相机(视频的或静止的)产生的数据(图像)的 时候。在这种情况下,来自相机的传感器的数据可以例如如上面讨论的由相机的控制器处 理以便产生适当的用于写到存储器的图像数据的元数据(以及如果希望的话,控制写图像 数据)。这样存储的图像和元数据然后可以由例如显示来自相机的图像的显示控制器以本 发明的方式进行处理。
当前实施例也可以用在存在多个主设备、每个主设备写到相同的输出数据阵列 (例如帧缓冲器中的帧)的情况下。例如当主处理器9产生要在图形处理器1产生的图像 上显示的“覆盖”(overlay)时,情况就是这样。
在这种情况下,向输出数据阵列写的每个设备可以相应地更新相似性元数据,或 者可以无效或清除例如另一主设备向其写的输出阵列的那些部分的元数据(从而输出阵 列的那些部分将完全读出到输出设备)。后者在给定主设备不能更新相似性元数据的情况 下将是必要的。同样可能的是在例如另一主设备修改输出阵列的相对较大的部分(或者完 全修改该输出阵列)的情况下无效(清除)用于整个数据阵列的元数据。
当前实施例的各个不同的其他优选的和可替换的设置是可能的。
例如,元数据也可以用来管理将数据块存储到显示控制器7的本地存储器8中以 及特别地用作确定从本地存储器8中逐出(eviction)数据块的因素。例如,元数据可以用 来确定要重复地使用的一个或多个数据块,并且然后将该数据块(或者这些数据块)(临 时)锁在处理设备的本地存储器中(一旦将其写到那里),从而当在将来需要时其在本地存 储器中可获得。
同样可能的是保持对不久的将来要使用本地存储器8中的给定数据块的次数的 计数(例如基于对于被处理的输出阵列的部分预取出的元数据),并且仅允许在数据块的 “使用”计数为零时从本地存储器中逐出该数据块。
由上可见,本发明在其优选的实施例中至少可以有助于降低例如显示控制器的功 耗和存储带宽。
在本发明的优选实施例中,这至少通过消除不必要的“主”存储器读事物 (transaction)来实现。这减少了从主存储器中读取的数据量,从而显著地降低了系统功耗 和消耗的存储带宽量。它可以应用到图形帧缓冲器、图形渲染到纹理、视频帧缓冲器以及合 成帧缓冲器读事物等等。
当使用本发明时的功率和带宽节省可以是相对显著的。例如,对于游戏和视频内 容而言,利用标准清晰度帧缓冲器,使用32字节线性块,其中前4个块被分析(需要多比特 位图),本申请人已经发现,可以消除大约17%的读和写事物。对于高清晰度帧缓冲器而 言,消除率甚至更高。对于具有相似配置的GUI内容而言,可以消除大约80%的帧缓冲器读 和写事物。
在对于HD(1920xl080x24bpp)-60fps的帧显示速率(读)和30fps的帧更新速率(写)并且假设每32比特片外传输2. 4nJ-消除读和写的情况下,这对于游戏和视频内 容而言相当于大约90MB/S的带宽节省以及57mW的功率节省。对于GUI内容而言,节省是 427MB/s 和 ^8mW。
就本发明中由于需要存储元数据而引起的附加开销而言,对于其中只有在前的数 据块被分析(即元数据包括每数据块位置单个比特)的系统,使用与32字节缓存行相应的 数据块的高清晰度帧已发现对于占用7. 9MB的HD帧导致附加的32KB的控制数据。如果使 用与64字节区块行(tile line)相应的数据块,那么控制数据为16KB。对于与512字节半 区块相应的数据块而言,它是2KB,并且对于与IOM字节区块相应的数据块而言,它是1KB。
权利要求
1.一种处理数据阵列的方法,其中处理设备通过处理连续数据块而处理数据阵列,每 个数据块代表数据阵列的特定区域,并且代表数据阵列特定区域的数据块从存储数据阵列 的第一存储器中读取且在数据块被处理设备处理之前存储到处理设备的存储器中;该方法 包括确定数据阵列的要处理的数据块是否与已经存储到处理设备的存储器中的数据块相 似,并且根据该相似性确定对要处理的数据块处理已经存储到处理设备的存储器中的数据 块或者来自第一存储器中存储的数据阵列的新数据块。
2.权利要求1的方法,其中确定数据阵列的要处理的数据块是否与已经存储到处理设 备的存储器中的数据块相似,并且根据该相似性确定对要处理的数据块处理已经存储到处 理设备的存储器中的数据块或者来自第一存储器中存储的数据阵列的新数据块的步骤包 括如果确定要处理的数据块被认为与已经存储到处理设备的本地存储器中的数据块相 似,那么不从第一存储器中存储的数据阵列读取新数据块且将其存储到处理设备的存储器 中,而是相反地,将处理设备的存储器中的现有数据块作为要由处理设备处理的数据块进 行处理;以及如果确定要处理的数据块不被认为与已经存储到处理设备的存储器中的数据块相似, 那么从第一存储器中存储的数据阵列读取新数据块且将其存储到处理设备的存储器中,并 且然后将该新数据块作为要由处理设备处理的数据块进行处理。
3.权利要求1的方法,其中处理设备是显示控制器、CPU、视频处理器和图形处理器之ο
4.前面的权利要求中任何一项的方法,其中所述相似性确定过程使用与数据阵列关联 的相似性信息确定要处理的数据块是否与已经存储到处理设备的存储器中的块相似。
5.权利要求4的方法,其中数据阵列与相似性信息关联,该相似性信息为数据阵列中 的每个对应数据块指示该数据块是否与数据阵列中的另一数据块相似,并且所述相似性确 定过程使用数据块的相关相似性信息确定要处理的数据块是否与已经存储到处理设备的 存储器中的数据块相似。
6.一种产生在处理存储到存储器中的数据阵列时使用的元数据的方法,该方法包括对于代表要处理的数据阵列的特定区域的一个或多个数据块中的每一个确定该数据块是否应当被认为与数据阵列的另一数据块相似;产生指示该数据块是否被确定为与数据阵列的另一数据块相似的相似性信息;并且与数据阵列关联地存储指示该数据块是否被确定为与该数据阵列的另一数据块相似 的相似性信息。
7.权利要求6的方法,其中确定数据块是否应当被认为与数据阵列的另一数据块相似 的步骤包括比较数据块的一些或全部实际内容以便确定数据块是否应当被认为相似。
8.—种处理数据阵列的方法,该方法包括产生要处理的数据阵列;对于代表要处理的数据阵列的特定区域的一个或多个数据块中的每一个确定该数据块是否应当被认为与数据阵列的另一数据块相似;并且产生指示该数据块是否被确定为与数据阵列的另一数据块相似的相似性信息;存储数据阵列及其关联的产生的相似性信息;从存储的数据阵列中读取数据块,每个数据块代表数据阵列的特定区域,并且在这些 数据块被处理设备处理之前,将其存储到处理数据阵列的处理设备的存储器中;使用为数据阵列产生的相似性信息以确定数据阵列的要处理的数据块是否与已经存 储到处理设备的存储器中的数据块相似;以及根据该相似性确定对于要处理的数据块处理已经存储到处理设备的存储器中的数据 块,或者来自存储到第一存储器中的数据阵列的新数据块。
9.权利要求6-8中任何一项的方法,还包括如果已经确定数据块应当被认为与数据阵列的另一数据块相似,则不将数据块写到存 储器中的数据阵列。
10.权利要求1的方法,其中数据阵列是代表图像的数据。
11.权利要求1的方法,其中考虑的数据块中的每一个包括数据阵列的缓存行或2D子 区块。
12.—种系统,包括第一存储器,其用于存储要处理的数据阵列;处理设备,其用于通过处理连续数据块而处理第一存储器中存储的数据阵列,每个数 据块代表数据阵列的特定区域,该处理设备具有本地存储器;读控制器,其被配置成读取代表第一存储器中存储的数据阵列特定区域的数据块并且 在数据块被处理设备处理之前将数据块存储到处理设备的本地存储器中;以及控制器,其被配置成确定数据阵列的要处理的数据块是否与已经存储到处理设备的存 储器中的数据块相似,并且根据该相似性确定使得处理设备对要处理的数据块处理已经存 储到处理设备的存储器中的数据块或者来自第一存储器中存储的数据阵列的新数据块。
13.权利要求12的系统,其中所述读控制器和控制器是处理设备的一部分。
14.一种当处理在第一存储器中存储的数据阵列时使用的装置,包括读控制器,其被配置成读取代表存储到第一存储器中的数据阵列的特定区域的数据块 并且在处理设备处理数据块之前将数据块存储到处理数据阵列的处理设备的本地存储器 中;以及控制器,其被配置成确定数据阵列的要处理的数据块是否与已经存储到处理设备的 存储器中的数据块相似,并且根据该相似性确定使得处理设备对要处理的数据块处理已经 存储到处理设备的存储器中的数据块,或者来自存储到第一存储器中的数据阵列的新数据 块。
15.权利要求12的系统,其中所述控制器被配置成如果确定要处理的数据块应当被认为与已经存储到处理设备的本地存储器中的数据 块相似,那么使得读控制器不从第一存储器中存储的数据阵列读取新数据块且将其存储到 处理设备的存储器中,并且使得处理设备将处理设备的存储器中的现有数据块作为要由处 理设备处理的数据块进行处理;以及如果确定要处理的数据块不应当被认为与已经存储到处理设备的存储器中的数据块 相似,那么使得读控制器从第一存储器中存储的数据阵列读取新数据块且将其存储到处理 设备的存储器中,并且使得处理设备然后将该新数据块作为要由处理设备处理的数据块进行处理。
16.权利要求12的系统,其中处理设备是显示控制器、CPU、视频处理器和图形处理器之一。
17.权利要求12-16中任何一项的系统或装置,其中所述控制器使用与数据阵列关联 的相似性信息确定要处理的数据块是否与已经存储到处理设备的存储器中的块相似。
18.权利要求17的系统或装置,其中数据阵列与相似性信息关联,该相似性信息为数 据阵列中的每个对应数据块指示该数据块是否与数据阵列中的另一数据块相似,并且控制 电路使用数据块的相关相似性信息确定要处理的数据块是否与已经存储到处理设备的存 储器中的数据块相似。
19.一种数据处理系统,包括数据处理器,其用于产生数据阵列以供处理;以及处理器,其用于为代表数据阵列的特定区域的一个或多个数据块中的每一个确定该数 据块是否应当被认为与数据阵列的另一数据块相似,用于产生指示该数据块是否被确定为 与数据阵列的另一数据块相似的相似性信息,并且用于与数据阵列关联地存储指示数据块 是否被确定为与该数据阵列的另一数据块相似的相似性信息。
20.权利要求19的系统,其中用于为代表数据阵列的特定区域的一个或多个数据块中 的每一个确定该数据块是否应当被认为与数据阵列的另一数据块相似,用于产生指示该数 据块是否被确定为与数据阵列的另一数据块相似的相似性信息,并且用于与数据阵列关联 地存储指示数据块是否被确定为与该数据阵列的另一数据块相似的相似性信息的处理器 是所述数据处理器的一部分。
21.权利要求19的系统,其中数据处理器是相机控制器、图形处理器、CPU和视频处理 器之一。
22.权利要求19、20或21的系统,其中用于确定数据块是否应当被认为与数据阵列的 另一数据块相似的处理器比较数据块的一些或全部实际内容以便确定数据块是否应当被 认为相似。
23.一种用在数据处理系统中的装置,其中通过从输出缓冲器中读取代表数据阵列的 特定区域的数据块而从输出缓冲器中读取数据处理系统产生的数据阵列,所述装置包括用于将数据阵列的数据块与数据阵列的至少一个其他数据块进行比较并且用于根据 该比较产生指示该数据块是否应当被认为与数据阵列的另一数据块相似的信息的装置;以 及用于与数据阵列关联地存储该相似性信息的装置。
24.—种数据处理系统,包括 用于产生要处理的数据阵列的数据处理器;处理器,其用于为代表数据阵列的特定区域的一个或多个数据块中的每一个确定该数 据块是否应当被认为与数据阵列的另一数据块相似,用于产生指示该数据块是否被确定为 与数据阵列的另一数据块相似的相似性信息,并且用于存储数据阵列及其关联的产生的相 似性信息;以及处理设备,其用于通过处理连续的数据块而处理存储的数据阵列,每个数据块代表该 数据阵列的特定区域,该处理设备具有本地存储器;读控制器,其被配置成从存储的数据阵列中读取代表该数据阵列的特定区域的数据块 并且在数据块被处理设备处理之前将数据块存储到处理设备的本地存储器中;以及控制器,其被配置成使用为数据阵列产生的相似性信息确定数据阵列的要处理的数据 块是否与已经存储到处理设备的存储器中的数据块相似,并且使得处理设备根据该相似性 确定对要处理的数据块处理已经存储到处理设备的存储器中的数据块,或者来自存储到第 一存储器中的数据阵列的新数据块。
25.权利要求19、20、21、23和M中任何一项的系统或装置,其中如果确定数据块应当 被认为与数据阵列的另一数据块相似,则所述处理器操作来不将该数据块写到存储器中的 数据阵列。
26.权利要求12的系统,其中所述数据阵列是代表图像的数据。
27.权利要求12的系统,其中考虑的数据块中的每一个包括数据阵列的缓存行或2D子 区块。
28.一种计算机程序,包含当该程序在数据处理系统上运行时执行权利要求1-12中任 何一项的方法的所有步骤的代码。
全文摘要
控制从存储器中读取数据阵列的方法和装置。显示控制器7从帧缓冲器3中读取数据块并且在将这些数据块输出到显示器2之前将其存储到显示控制器7的本地存储缓冲器8中。显示控制器7使用与帧缓冲器3中的输出帧关联的相似性元数据10确定要处理以便显示的新数据块是否与已经存储到显示控制器7的本地存储器8中的数据块相似。如果确定要处理的数据块与已经存储到显示控制器7的本地缓冲器8中的数据块相似,那么该显示控制器不从帧缓冲器3中读取新数据块,而是转而提供其缓冲器8中的现有数据块给显示器2。
文档编号G06F12/02GK102033809SQ20101029438
公开日2011年4月27日 申请日期2010年9月25日 优先权日2009年9月25日
发明者D·克罗克斯福德, J·E·奥特哈尔斯, L·埃里克森 申请人:Arm有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1