CN103473183A - 有效高速缓存预加载 - Google Patents
有效高速缓存预加载 Download PDFInfo
- Publication number
- CN103473183A CN103473183A CN2013102226506A CN201310222650A CN103473183A CN 103473183 A CN103473183 A CN 103473183A CN 2013102226506 A CN2013102226506 A CN 2013102226506A CN 201310222650 A CN201310222650 A CN 201310222650A CN 103473183 A CN103473183 A CN 103473183A
- Authority
- CN
- China
- Prior art keywords
- prestrain
- line
- pixel
- cache
- cache line
- 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
- 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
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
Abstract
提供可执行例如下列步骤的方法、系统和软件。预加载表可基于待处理的图形项来确定。图形项可包括多条图形线。对于图形线中的单条图形线,预加载表可表示像素处理和高速缓存线预加载操作的模式。对于图形项的每条图形线,可处理像素,并且可按照预加载表来执行高速缓存线预加载操作。
Description
相关申请的交叉引用
本申请要求2012年6月6日提交的美国临时申请No.61/656428的权益,通过引用将其内容完整地结合于此以用于所有目的。
技术领域
本申请涉及有效高速缓存预加载。
背景技术
许多现代微处理器提供用于在需要数据之前将数据预加载到高速缓存的方法。这样,能够隐藏存储器存取等待时间。但是,如果高速缓存预加载不是按照有效方式来执行,则预加载能够实际减慢而不是加速整体处理。对于普通情况(例如字-字存储器复制)以及更复杂使用情况(例如图形的双线性缩放),这可能是正确的。可能使预加载不太有效的一个因素在于,在一些处理器、例如高级RISC机器(ARM)处理器中,无法使预加载指令是有条件的。这能够使预加载行为相当不可预测和低效。
甚至在使用高速缓存预加载的情况下,通常按照简化但低效的方式来使用。例如,在一种方式中,预定数量的像素始终在需要像素以用于处理之前预加载。通过这种方式,在加载像素“i”的数据之后,预加载像素“i+n+1”的数据,其中n是在预加载一条高速缓存线的同时能够处理的像素数量。但是,这种方式可预计不会提供太多(若有的话)优点,因为超出一行像素结束的数据将被预加载但从不使用,而在一行开始的数据没有预加载。由于这些及其它原因,在实际实践中没有广泛使用高速缓存预加载指令。
发明内容
本文中公开各个方面。例如,一些方面针对一种方法,包括由计算装置基于图形项来确定预加载表,其中图形项包括多条图形线,以及其中对于图形线中的单条图形线,预加载表表示像素处理和高速缓存线预加载操作的模式。该方法还可包括对于每条图形线,由计算装置按照预加载表来处理像素并且执行高速缓存线预加载操作。
其它方面针对一种存储计算机可执行指令的计算机可读存储介质,计算机可执行指令用于执行包括下列步骤的方法:由计算装置基于图形项来确定预加载表,其中图形项包括多条图形线,以及其中对于图形线中的单条图形线,预加载表表示像素处理和高速缓存线预加载操作的模式。该方法还可包括对于每条图形线,由计算装置按照预加载表来处理像素并且执行高速缓存线预加载操作。
又一些方面针对一种方法,包括由计算装置基于图形项来确定预加载表,其中预加载表表示在执行高速缓存线预加载操作之前要处理多少像素。该方法还可包括对于图形项的多条图形线中的每条,由计算装置再使用预加载表来处理图形线的像素并且执行高速缓存预加载。
前面示出简化概述,以便提供对本公开的一些方面的基本了解。该概述不是本公开的广泛概述。它既不是为了识别本公开的重要或关键元件也不是为了描述本公开的范围。该概述只是以简化形式来示出本公开的一些概念,作为以下描述的序言。
附图说明
通过参照以下考虑附图的描述,可获得对本文所述的本公开和各个方面的潜在优点的更完整了解,附图中,相似参考标号表示相似特征,以及其中:
图1是可用于体现本文所述和附图所示的任何元件的示例计算装置的框图;
图2是按照本文所述的一个或多个方面的计算装置的高速缓存的示例配置的框图;
图3是示出按照本文所述的一个或多个方面的无缓存和带缓存的存储装置之间的示例传递的框图;
图4是按照本文所述的一个或多个方面、可被处理的示例图形项或者其部分的屏幕截图,其中具有放大部分供说明;
图5是示出按照本文所述的一个或多个方面、可被执行的示例步骤的流程图;
图6-10是示出按照本文所述的一个或多个方面、可如何预加载和处理图形项的时间序列示例的框图;以及
图11A-11C是示出按照本文所述的一个或多个方面、可被执行的示例步骤的流程图。
要注意,附图的一个或多个可能不一定按比例绘制。
具体实施方式
图1是可用于本文所述功能和特征的任一个或全部的示例计算装置100的框图。计算装置100可包括可通过例如运行软件进行操作以执行特定功能的硬件。软件(若有的话)可采取计算机可读指令的形式存储在有形和/或非暂时计算机可读介质102上。计算装置100可读取那些计算机可读指令,以及作为响应而执行如那些计算机可读指令所定义的各种步骤。因此,本文所述的任何功能、步骤、计算、确定可由计算装置100例如通过读取和运行计算机可读指令以用于执行那些功能和/或由组成计算装置100的任何硬件子系统(例如处理器101)来实现。作为补充或替代,上述功能的任一个可由计算装置100的硬件在具有或没有软件的执行的情况下实现。例如,计算装置100可以是或者包括一个或多个微处理器、中央处理单元(CPU)和/或配置成执行归于计算装置100的功能的部分或全部的其它类型的电路。在这类实施例中,处理器101可实现为或者另外包括一个或多个微处理器、CPU、ASIC和/或其它类型的电路。
计算装置可包括能够处理和操控例如采取数据形式的信息的任何电子、光电和/或机械装置或者多个物理上独立或集成的这类装置的系统。计算装置的非限制性示例包括一个或多个个人计算机(例如台式机、平板或膝上型电脑)、大型机、服务器、蜂窝电话(它们可以是“智能电话”)、个人数字助理和/或它们的任何组合或子组合的系统。另外,给定计算装置可在物理上完全位于一个位置中,或者可分布于多个位置之间(即,可实现分布计算)。计算装置可以是或者另外包括通用计算装置和/或配置成仅执行某些有限功能的专用计算装置。
计算机可读介质102可以不仅包括单个有形和/或非暂时介质或者单一类型的这种介质,而且还包括一个或多个这类介质和/或一种或多种类型的这类介质的组合。计算机可读介质102的实施例的示例包括但不限于一个或多个存储器(例如ROM、RAM和/或FLASH存储器)、硬盘驱动器、光盘(例如CD或DVD)、磁盘和磁带驱动器。计算机可读介质102可在物理上是计算装置100的组成部分或者另外是由其可访问的,并且可存储上述计算机可读指令(例如软件)和/或计算机可读数据(即,可以是或者可以不是可执行的信息)。
计算装置100还可包括用户输入/输出接口103,用户输入/输出接口103用于接收来自用户的输入(例如,经由诸如键盘、鼠标、触摸屏、音频话筒、照相装置和/或远程控制之类的装置106),和/或用于向用户提供输出(例如,经由显示装置105、音频喇叭或压电元件、指示灯、打印机等)。
计算装置100还可包括用于经由有线和/或以无线方式与其它装置进行通信的通信输入/输出接口104。与其它装置的这种通信可以是直接的,或者可以是经由有线和/或无线网络间接的。
如图2所示,高速缓存202和/或高速缓存201可作为计算机可读介质102的一部分来包含和/或与处理器101集成。所提到的高速缓存全部意在包括这些高速缓存的一种或两者以及任何其它类型的高速缓存配置。
如图3所示,高速缓存(图3中表示为带缓存的存储装置302)中存储的数据可传递给无缓存的存储装置301(它可以是例如除了高速缓存202之外的计算机可读介质102),反过来也是一样。因此,高速缓存的预加载可涉及例如将数据从无缓存的存储装置301传递(例如复制或移动)到带缓存的存储装置302。同样,数据随后可传递(例如复制或移动)返回到无缓存的存储装置301。可存储和传递的数据可以是任何类型的数据,包括但不限于表示图形项的图形数据。例如,图形数据可表示表示图形项的向量集和/或位图,或者可按照任何其它格式对图形项进行编码。在图形数据是位图的情况下,位图可将各像素值(例如像素的颜色、色调、饱和度和/或其它性质)映射到图形项中的各像素位置。
图4是按照本文所述的一个或多个方面、可被处理的示例图形项401或者其部分的屏幕截图,其中具有放大部分供说明。图形项401可由计算装置100例如在显示装置105上显示。图形项401可以是例如分立图标、较大图形项的一部分(例如所显示照片或者以图形方式呈现的设计等的一部分)。图4中示出图形项401的像素,并且为了便于说明而放大其中一部分。如能够看到,图形项401按照行和列的像素的矩形排列来呈现。但是,这只是说明性的,以及可执行和表示图形项401的其它呈现。如图4的放大部分中作为示例所示,图形项的行各可被认为是独立图形线(图形线1、图形线2、图形线3等)。备选地,各列可被认为是图形线。如下面将进一步说明,可生成和使用预加载表,预加载表可考虑当前正处理和/或预加载图形项401的哪一条图形线。一般来说,预加载表可基于下列一个或多个来生成:源图形线的长度、源图形线的对齐(第一高速缓存线中的图形线的第一像素对于那个图形线的位置)、目标线的长度、比例因子(它可由源和目标线长度来确定)和/或预加载距离(如以下所述,值“n”,它可确定为在预加载一条高速缓存线、或者在双线性插值的情况下预加载两条高速缓存线的同时能够处理的像素数量)。
如前面所述,对于使用高速缓存预加载命令存在各种潜在问题和复杂化。为了可能克服这个问题,表驱动方式可用于矩形二维图形操作。为了实现表驱动方式,可生成预加载表,预加载表描述图形项401(或者所处理的任何其它图形项)的单条图形线的高速缓存预加载。该表可对于操作创建一次,然后在该操作中或者在以后的操作中再用于图形线的部分或全部。表中的各条目可包含例如要呈现的目标像素的数量以及将要用于高速缓存的高速缓存线的索引(例如相对于当前线的开始)。
假定高速缓存线的预加载预计花费比用于处理n个像素要少的时间,预加载表可使用例如按照下列规则来建立:
(a) 在需要高速缓存线之前的n个像素(例如在预加载到高速缓存线的像素被处理到目标线之前的至少预定数量的像素)来加载各高速缓存线。预定数量的像素可以是例如n个像素,其中n是在预加载一条高速缓存线的同时能够处理的像素数量(例如按照α混合操作(包括但不限于Porter-Duff合并)、诸如双线性插值操作之类的插值操作、颜色格式转换操作和/或诸如色彩效果或其它艺术过滤器之类的颜色处理操作的一部分)。
(b) 在预加载当前图形线的最后一条高速缓存线时预加载用于下一条图形线的第一高速缓存线。这可在预加载当前图形线的最后一条高速缓存线之后和/或在处理下一条图形线之前执行。
(c) 如果在(b)中预加载的第一高速缓存线保存少于预定数量(例如n)的像素,则在处理前一条图形线的同时还预加载下一条(第二)高速缓存线。
(d) 按照(b)来执行的预加载移位(若可能的话)到先前时间,使得连续预加载之间的距离至少是预定数量的像素(例如n个像素)。
(e) 仅预加载实际需要的高速缓存线。
(f) 如果图形线的最后一个预加载是对于下一条图形线的第一高速缓存线,则在图形线结束之前的预定数量的像素(例如n个像素)来执行最后一个预加载。如果图形线的最后一个预加载是对于下一条图形线的第二高速缓存线,则在图形线结束之前的较小预定数量的像素来执行最后一个预加载。较小预定数量的像素可以是例如在图形线结束之前的n-m个像素,其中m是在没有访问下一条图形线的第二高速缓存线的数据的情况下在下一条图形线的开始处能够呈现的像素数量。
上述规则只是一个示例。可使用其它更简单规则集或者其它更复杂规则集。在其它示例中,可丢弃规则的一部分以有利于不太复杂的规则集(虽然可能提供不太有效的图形操作),例如但不限于通过丢弃规则(d)。此外,可以或者可以不按照以上所示顺序来执行或另外实行规则;可按照任何预期顺序来实行这些规则。
可在生成预加载表之前发起第一图形线的高速缓存(例如前一条或两条高速缓存线)的初始预加载,使得预加载时间可与预加载表生成时间重叠。这种情况作为示例在图5示出,其中初始预加载可在步骤501发起。一旦发起预加载(以及可能在预加载继续被执行的同时),可在步骤502确定预加载表。一旦完成初始预加载并且确定预加载表,则在步骤503,可按照预加载表来处理和预加载图形项。在一些情况下,例如对于双线性插值情况,在对输入使用两条图形线的情况下,可对当前图形线和下一行图形线两者执行高速缓存预加载。在步骤503运行预加载表可涉及例如以下过程(作为示例使用伪代码示出):
预加载表可作为数据由计算装置100存储在例如计算机可读介质102中和/或高速缓存中。预加载表可包括:指示例如在图形线的哪一(哪些)点应当预加载高速缓存线以及哪一条高速缓存线应当是将要预加载的高速缓存线的信息;关于在执行高速缓存线预加载操作之前要处理多少像素的指示;和/或关于用于图形线中的单条图形线的像素处理和高速缓存线预加载操作的模式的指示。指示可采用绝对或相对项,并且可按照任何预期方式来格式化。例如,如果预加载表指示图形项401的单个像素将要被处理,随后接着高速缓存线#1的预加载,随后接着图形项401的三个像素的处理,随后接着高速缓存线#2的预加载,则预加载表可能按照如下顺序来包含字节:[1 1 3 2]。在这个示例中,奇数字节将表示待处理像素的数量,而偶数字节将标识哪一条高速缓存线将被预加载。存在表示这种信息的许多其它方式,并且这预计只是单个非限制性示例。预加载表可以是值的一维线性集合(例如列表)、值的二维阵列和/或值的任何其它排列。与格式无关,预加载表可用于图形项的图形线的至少部分以及也许全部,以便确定预加载图形项的像素的时间和方式。为了按照预加载表来执行,预加载表可实际上被计算装置认为是简化可执行指令集,其中预加载表的指令可表示例如处理X个像素或者将位置Y预加载到高速缓存Z。
图6-10是示出按照本文所述的表驱动方式、可如何预加载和处理诸如图形项401之类的图形项的时间序列示例的框图。因此,在这个示例中,图10在图9之后执行,图9在图8之后执行,图8在图7之后执行,图7在图6之后执行。在图6-10的每个中,源数据存储单元的两条源线(源线1和源线2)相对于目标数据存储单元的两条目标线(目标线1和目标线2)示出。因此,操作是将像素数据从源数据存储单元处理到目标数据存储单元。这种处理可作为例如图形项复制、移动或变换操作的部分而进行。在一些示例中,源线1和2可以是诸如图形项401之类的图形项的图形数据。具体来说,源线1可表示图形项的第一图形线,以及源线2可表示图形项的第二图形线。当然,可存在其它源线(例如源线3、源线4等)。但是,这里仅示出两条源线,以便于说明。同样,虽然图6-10中仅示出两条目标线(目标线1和目标线2),但是可存在其它目标线(例如目标线3、目标线4等)。这里再次仅示出两条目标线,以便于说明。还可能的是,在源线1与2之间和/或在目标线1与2之间存在附加源和/或目标线。在这种情况下,源线2可被认为是图形项的最终源线,以及目标线2可同样被认为是最终目标线。在其它示例中,源和目标线实际上可以仅包括两条线,这取决于图形项。
图6-10中,每个较小框表示一个像素。在这个示例中,仅为了便于说明,像素以八个像素的集合编组示出,这可以是各高速缓存线的大小。在其它实施例中,各高速缓存线可保存更少或更多数量的像素;八像素长度高速缓存线只是一个示例的部分。另外,虽然源和目标线的每个示为包含八个像素的三个集合(24个像素),但是这只是一个示例。源和目标线可具有任何像素长度。在结合图6-10来提及高速缓存的情况下,高速缓存可以是任何高速缓存,例如但不限于高速缓存201和/或高速缓存202,并且可一般称作带缓存的存储装置302。此外,源和/或目标线可以是例如无缓存的存储装置301的一部分,尽管源线和/或目标线也可至少部分存储在带缓存的存储装置302中。
如图6所示,源线1的八个像素的前两个集合可预加载到高速缓存,如源线1的八个像素的前两个集合加阴影所示(步骤0)。这可在例如步骤501的初始预加载执行。在执行初始预加载的同时,可基于被处理的图形项的性质(例如图形线长度、图形线偏移和/或图形项中的图形线的数量)来生成预加载表。如前面所述,预加载表的生成可在例如步骤502执行。针对图6-10的操作的论述的其余部分可作为步骤503执行。
在这个具体示例中,如图6所示,所生成的预加载表规定将要复制来自源线的第一预先缓存像素(在这种情况下,第一像素在源线1中偏移为源线1的第五像素),以及在这种复制时,下一个高速缓存预加载将要进行。这个复制(或移动)在图6中通过实线箭头以及来自源线1的第一像素被处理到的目标线1的第一像素加对角条纹示出。下一个高速缓存预加载的触发通过从目标线1中的所复制像素的右边沿指向随后八个像素(高速缓存线的大小)的集合的开始的虚线箭头来表示。因此,在本示例中,预加载表开始于指示计算装置处理第一像素(步骤1),然后发起相当于一条高速缓存线的源线像素的预加载(步骤2)。
随后,如图7所示,预加载表规定,将随后三个预先缓存像素从图形线(在这种情况下为从源线1)处理(步骤3)到目标线(在这种情况下为目标线1)。按照预加载表,一旦这三个像素已经处理到目的地,则随后八个像素的集合开始预加载到高速缓存(步骤4)。这种复制和预加载触发再次按照与图6中相同的方式通过实线和虚线箭头以及通过加阴影和加对角条纹来表示。在这种情况下,由于已经完全预加载源线1,所以可发起源线2的预加载,使得源线2的源数据在源线2的处理开始时将已经是可用的。
随后,如图8所示,随后三个预先缓存像素按照预加载表从源线1处理(步骤5)到目标线1。在处理这三个像素的结束时,预加载表规定,对适合在高速缓存线内的下一个像素量(在这个示例中,再次是相当于随后八个像素的数据)发出(步骤6)另一个预加载命令。这种处理和预加载触发再次按照与图6中相同的方式通过实线和虚线箭头以及通过加阴影和加对角条纹来表示。在这个示例中,各目标线仅使用其相应源线的第一高速缓存线的两个像素。由于预加载高速缓存线花费与处理三个像素(在这个示例中)同样长的时间,所以如果第二高速缓存线的预加载在前一条图形线结束时没有完成,则第二高速缓存线不能预计及时预加载。这种情况在图8中作为示例示出。然后,如图9所示,在步骤7,在没有发出预加载命令的情况下处理源线1的最后一个像素。在这点上,预加载表对于这条图形线(源线1)已经结束。
这时对下一条图形线(源线2)重新运行预加载表(再次从预加载表的开头开始)。因此,如图9所示,另一个预先缓存像素(这次是将要从源线2来处理的第一像素)按照预加载表处理(步骤8)到目标线2。在处理这个像素的结束时,预加载表规定,对适合在高速缓存线内的下一个像素量(在这个示例中,再次是相当于随后八个像素的数据)发出(步骤9)另一个预加载命令。这种处理和预加载触发再次按照与图6中相同的方式通过实线和虚线箭头以及通过加阴影和加对角条纹来表示。这与图6的情形相似,除了它是对于第二高速缓存线之外。
以上所述的模式可根据需要对每条图形线重复进行。随后,如图10所示,其余预先缓存的像素从源线2处理(步骤10)到目标线2。在这个示例中,由于源线2表示图形项的最终图形线,所以不执行或者不需要进一步高速缓存预加载。如果存在将要处理的其它源线(换言之,如果源线2不是最终图形线),则其它源线可按照与预加载和处理源线1相同的方式递归地预加载和处理。
如前面所述,预加载表可对于给定源线来定义将源线的部分预加载到高速缓存的时间和/或方式的规则。在对其进行操作的图形项是矩形项的情况下(这是常见情形,例如在图形项是图标的情况下),源线则可预计相互之间全部是相同长度。在图形项不是矩形项(例如具有不规则边界)的情况下,则通过在图形项周围添加透明(空白)像素,根据需要人为地扩展图形项的边界以产生矩形边界,图形项可被看作是矩形项。这类边界扩展也可对已经是矩形的图形项执行。例如,在任一种情况下,如果使图形线的长度是高速缓存线大小的倍数,则会是更有效的。在这种情况下,由预加载表所定义的规则可重复用于图形项的图形线的部分或全部。由于预加载表对于图形项可以仅计算一次但重复用于图形项的图形线的每个或者甚至用于其它图形项,所以再使用预加载表的能力可潜在地减少与高速缓存预加载相关的操作所需的计算数量。再使用预加载表的能力还可消除对条件预加载命令的需要。
虽然预加载表可按照多种方式的任一种来确定,但是下面是可用于确定预加载表的内容、以伪代码示出的算法的一个示例。伪代码一般可沿用上述示例规则(a)至(f)的部分或全部。
================
输入
目标线中的像素数量
在预加载进行的时间期间能够处理的像素数量
GetCacheLineOffset所需的各种对齐参数
对于给定目标像素,相对于源线的开始来计算给定目标像素的计算所需的最右边的源像素的高速缓存线偏移。
相对于源线的开始来计算第一目标像素的计算所需的最左边的源像素的高速缓存线偏移。
确定像素数量“nFirst”,它能够在线的开始仅使用来自第一源高速缓存线的数据来处理。
如果该值小于nPreload,该它是唯一感兴趣,因此在此停止搜索。
如果“nFirst”小于“nPreload”,则无法在处理nFirst个像素的同时预加载第二高速缓存线,因此必须在前一线结束时预加载第二高速缓存线。
遍历目标像素。
对于各目标像素确定使用哪些源像素。
如果对应高速缓存线尚未预加载,则将其添加到预加载表。
从表的末尾去除不需要的高速缓存线。
将用于加载第一以及可能的第二高速缓存线的条目添加到表的末尾。
在列表末尾添加终止条目。
在处理终止条目中的像素数量之后,该线结束。
所有条目应当具有要处理的至少nPreload个像素。
但是,第一和最后一个条目是特殊的。
在第一条目之前,不存在预加载,因此第一条目能够具有0个像素。
另外,在最后一个条目之后,没有进行预加载。如果nFirst<nPreload成立,则最后一个条目预加载新线的第二高速缓存线。在这种情况下,由第二最后一个条目所预加载的数据在需要第二高速缓存线之前无需是可用的。
为了简化算法,将过量像素添加到第一和最后一个条目并且稍后减去,使得能够使所有条目达到nPreload个像素。
分布像素,使得所有条目具有至少nPreload个像素(若可能的话)。
从第一和最后一个条目减去以上添加的过量像素
当然,可执行生成和/或运行预加载表的许多其它方式,这取决于所使用的规则集和预期的复杂度。
图11A-11C是示出按照本文所述的一个或多个方面、可被执行的示例步骤的流程图,作为如何生成预加载表的另一个示例。步骤一般遵循上述伪代码。本文所使用的具体值和名称只是示例,而不是要进行限制。图11A-11C的过程可由计算装置、例如由处理器101来执行。
开始于图11A的示例,在步骤1101,预加载表设置为空,iPixelPrev的值设置为零,以及iCachePrev的值设置为GetCacheLineOffsetFirst()。GetCacheLineOffsetFirst是可取例如每像素的字节数和源线的起始偏移等的各种实现相关参数的函数,并且确定所使用的第一像素与源线的高速缓存线偏移。高速缓存线偏移在这里是高速缓存线相对于包含源的图形线的开始的偏移,以高速缓存线为单位(不是像素)。在步骤1102,确定nFirst的值,其中nFirst是能够在线的开始处仅使用来自第一源高速缓存线的数据来处理的像素数量。在步骤1103,确定nFirst的值是否小于nPreload的值(例如,如上所述的值n)。如果不是,则该过程直接转到步骤1104,其中值iPixel设置为零,表示线的开始。如果是的话,则无法在处理nFirst个像素的同时预加载第二高速缓存线,因此必须在前一线结束时预加载。在这种情况下,该过程转到步骤1105,其中iCachePrev的值设置为iCachePrev+1,以表示两个高速缓存线在线开始时已经预加载。然后,该过程转到步骤1104。
随后,在步骤1106,通过将iPixel的值与nPixel-1的值进行比较来确定iPixel是否为线的最后一个像素的索引,其中nPixel是目标线中的像素数量。如果不是,则该过程转到步骤1108,其中通过测试iCache的值是否大于iCachePrev的值来确定当前像素iPixel是否要求新高速缓存线。如果在步骤1108确定iCache的值不大于iCachePrev的值,则该过程转到步骤1107。在步骤1107,通过将iPixel的值设置为iPixel+1的值,将当前像素前进到目标线中的下一个像素。在步骤1107之后,该过程返回到步骤1106。如果在步骤1108确定iCache的值大于iCachePrev的值,则该过程转到步骤1109。在步骤1109,将具有iCache的高速缓存线值和iPixel-iPixelPrev的像素数量的条目添加到预加载表。随后,在步骤1110,iPixelPrev的值设置为iPixel,以及iCachePrev的值设置为iCache。然后,该过程返回到步骤1107。如果在步骤1106确定iPixel的值与nPixel-1的值相同,则该过程转到步骤1111。换言之,该过程遍历各目标像素,并且对于各目标像素来确定使用哪些源像素。如果对应高速缓存线尚未预加载,则将那个高速缓存线添加到预加载表。
在步骤1111,从表的末尾去除不需要的高速缓存线,也就是包含在源线结束之外的数据的高速缓存线。随后,在步骤1112,向表添加具有“下一线的第一高速缓存线”的高速缓存线值和“nPixels-iPixelPrev”的像素数量的条目。然后,该过程转到步骤1113。在步骤1113,通过测试nFirst的值是否小于nPreload的值来确定在线的开始处是否预加载两条高速缓存线。如果不是,则该过程直接转到步骤1114,其中将具有“终止”的高速缓存线值和零的像素计数的条目添加到表。如果是的话,则该过程转到步骤1115,其中将具有“下一线的第二高速缓存线”的高速缓存线值和零的像素计数的条目添加到表。然后,该过程转到步骤1114,并且继续进行到步骤1116。
所有条目应当具有要处理的至少nPreload个像素,除了第一和最后一个条目之外。在第一条目之前,不存在预加载,因此第一条目能够具有0个像素。另外,在最后一个条目之后,没有进行预加载。如果nFirst<nPreload成立,则最后一个条目预加载新线的第二高速缓存线。在这种情况下,由第二最后一个条目所预加载的数据在需要第二高速缓存线之前无需是可用的。为了简化算法,将过量像素添加到第一和最后一个条目并且稍后减去,使得能够使所有条目达到nPreload个像素。这种情况在图11B中示出,开始于步骤1116,其中将nPreload个像素添加到第一条目的像素计数。随后,在步骤1117,确定nFirst的值是否小于Preload的值。如果不是,则该过程直接转到步骤1119。如果是的话,则该过程转到步骤1118。在1118,将nFirst个像素添加到表的最后一个条目的像素计数,然后该过程转到步骤1119。在步骤1119,开始在表条目之间分布像素计数以使得在可能的情况下所有表条目均具有nPreload或更多的像素计数的过程。这通过下列步骤进行:查找没有足够像素的条目iPlus以及具有过量像素的条目iMinus,并且将像素从表条目iMinus移动到表条目iPlus。首先,iPlus的值设置成表的最后一个条目。随后,在步骤1120,确定iPlus是否为表的第一条目。如果是的话,则该过程直接转到步骤1129(图11C)。如果不是的话,则该过程转到步骤1121。在步骤1121,确定表条目iPlus的像素数量是否小于nPreload的值。如果不是的话,则表条目iPlus已经具有足够像素,以及该过程转到步骤1128。如果是的话,则该过程转到步骤1122。在步骤1122,iMinus的值设置成iPlus的前一个条目,以及该过程转到步骤1123。
在步骤1123,确定iMinus的值是否大于或等于0,即,iMinus是否没有移动到超出表的开始。如果不是的话,则不能够将更多像素添加到条目iPlus,以及该过程转到步骤1128。如果是的话,则该过程转到步骤1124。在步骤1124,确定表条目iMinus的像素数量是否大于nPreload的值。如果是的话,则该过程转到步骤1125。在步骤1125,确定iMinus的像素数量减去nPreload的值以及nPreload的值减去iPlus的像素数量中的最小数,并且那个数量的像素从iMinus的表条目移动到iPlus的表条目。然后,该过程转到步骤1126,其中确定表条目iPlus的像素数量是否等于nPreload的值。如果不是的话,则该过程转到步骤1127,以便搜索另一个条目iMinus。如果是的话,则条目iPlus已经接收足够像素,以及该过程转到步骤1128。如果在步骤1124确定值iMinus的表条目的像素数量不大于nPreload的值,则该过程转到步骤1127。在步骤1127,iMinus的值设置成iMinus的前一个条目。然后,该过程返回到步骤1123。如果在步骤1123确定iMinus的值不大于或等于0,则该过程转到步骤1128。在步骤1128,iPlus的值设置成iPlus的前一个条目。然后,该过程返回到步骤1120。
在步骤1129(图11C)以及之后,减去在以上步骤1116和1118所添加的过量像素。在步骤1129,从第一条目的像素计数中减去nPreload个像素。然后,该过程转到步骤1130。在步骤1130,确定nFirst的值是否小于nPreload的值。如果不是的话,则该过程结束。如果是的话,则该过程转到步骤1131。在步骤1131,从最后一个条目的像素计数中减去nFirst个像素。然后,该过程结束。
考虑到本文中的公开,可要求保护的方面的非限制性示例至少包括如下:
(1) 一种方法,包括:由计算装置基于图形项来确定预加载表,其中图形项包括多条图形线,并且其中对于图形线中的单条图形线,预加载表表示像素处理和高速缓存线预加载操作的模式;以及对于每条图形线,由计算装置按照预加载表来处理像素并且执行高速缓存线预加载操作。所述处理像素可包括按照下列至少一个的部分来处理:α混合操作、插值操作、颜色格式转换操作或者颜色处理操作。预加载表可包括多对值,其中每对值表示待处理的像素数量以及待预加载的高速缓存线索引。所述确定可包括基于图形项的各图形线的第一像素的偏移来确定预加载表。所述确定可包括基于图形项的各图形线的长度来确定预加载表。所述确定可包括基于源与目标图形项之间的比例因子来确定预加载表。各图形线的长度可以相同。所述确定可包括确定预加载表,使得预加载表标识如下指令:按照预加载表所预加载的多条高速缓存线的每个在按照预加载表处理来自高速缓存线的像素之前的至少预定数量的像素来预加载。所述确定可包括确定预加载表,使得预加载表标识如下指令:用于图形线中的下一条图形线的第一高速缓存线在预加载图形线中的当前图形线的最后一条高速缓存线时预加载。所述确定可包括确定预加载表,使得预加载表还标识如下指令:如果第一高速缓存线保存少于预定数量的像素,则还预加载第二下一条高速缓存线。
(2) 一种计算机可读存储介质,存储用于执行方法的计算机可执行指令,该方法包括:由计算装置基于图形项来确定预加载表,其中图形项包括多条图形线,并且对于图形线中的单条图形线,预加载表表示像素处理和高速缓存线预加载操作的模式;以及对于每条图形线,由计算装置按照预加载表来处理像素并且执行高速缓存线预加载操作。所述处理像素可包括按照下列至少一个的部分来处理:α混合操作、插值操作、颜色格式转换操作或者颜色处理操作。预加载表可包括多对值,其中每对值表示待处理的像素数量以及待预加载的高速缓存线索引。所述确定可包括基于图形项的各图形线的第一像素的偏移来确定预加载表。所述确定可包括基于图形项的各图形线的长度来确定预加载表。所述确定可包括基于源与目标图形项之间的比例因子来确定预加载表。所述确定可包括确定预加载表,使得预加载表标识如下指令:按照预加载表所预加载的多条高速缓存线的每条在按照预加载表处理来自高速缓存线的像素之前的至少预定数量的像素来预加载。所述确定可包括确定预加载表,使得预加载表标识如下指令:用于图形线中的下一条图形线的第一高速缓存线在预加载图形线中的当前图形线的最后一条高速缓存线时预加载。所述确定可包括确定预加载表,使得预加载表还标识如下指令:如果第一高速缓存线保存少于预定数量的像素,则还预加载第二下一条高速缓存线。
(3) 一种方法,包括:由计算装置基于图形项来确定预加载表,其中预加载表表示在执行高速缓存线预加载操作之前要处理多少像素;以及对于图形项的多条图形线的每条,由计算装置将预加载表再用于处理图形线的像素并且执行高速缓存预加载。所述处理像素可包括按照下列至少一个的部分来处理:α混合操作、插值操作、颜色格式转换操作或者颜色处理操作。所述再使用预加载表可包括对于每条图形线将预加载表用作指令集,并且按照指令来执行像素处理和高速缓存预加载。
本公开的方面根据其说明性实施例进行了描述。虽然示出如本文所述的包含本公开的各个方面的说明性系统和方法,但是本领域的技术人员将会理解,本公开并不局限于这些实施例。可由本领域的技术人员特别是根据前面的教导进行修改。例如,上述说明性示例的每个特征可单独使用或者通过与其它示例的元件的组合或者子组合来使用,以及上述系统、方法或者其部件的任一个可与上述其它系统、方法或者其部件相结合。
在一个或多个布置中,本文所述示例方法的步骤的任一个和/或全部可由计算装置(例如计算装置100)来执行、由作为计算系统(例如网络)进行操作的多个计算装置来执行,和/或体现为一个或多个非暂时和/或有形计算机可读存储介质(例如硬盘、光盘、可移动磁盘、存储器等)上存储的计算机可执行指令。此外,本领域的技术人员将理解,说明性附图所示的步骤可按照不同于所示顺序的顺序来执行,并且步骤的一个或多个按照本公开的方面可以是可选的。还将会理解和了解,可进行修改,而没有背离本公开的真实精神和范围。因此,本描述被看作是说明性而不是限制性的。
Claims (20)
1.一种方法,包括:
由计算装置基于图形项来确定预加载表,其中所述图形项包括多条图形线,并且其中对于所述图形线中的单条图形线,所述预加载表表示像素处理和高速缓存线预加载操作的模式;以及
对于每条所述图形线,由所述计算装置按照所述预加载表来处理所述像素并且执行所述高速缓存线预加载操作。
2.如权利要求1所述的方法,其中,所述处理所述像素包括按照下列至少一个的部分进行处理:α混合操作、插值操作、颜色格式转换操作或者颜色处理操作。
3.如权利要求1所述的方法,其中,所述预加载表包括多对值,其中每对值表示待处理的像素数量以及待预加载的高速缓存线的索引或索引偏移。
4.如权利要求1所述的方法,其中,所述确定包括基于所述图形项的各图形线的第一像素的偏移来确定所述预加载表。
5.如权利要求1所述的方法,其中,所述确定包括基于所述图形项的各图形线的长度来确定所述预加载表。
6.如权利要求4所述的方法,其中,各图形线的长度相同。
7.如权利要求1所述的方法,其中,所述确定包括确定所述预加载表,使得所述预加载表标识如下指令:按照所述预加载表所预加载的多条高速缓存线的每条在按照所述预加载表处理来自所述高速缓存线的像素之前的至少预定数量的像素来预加载。
8.如权利要求1所述的方法,其中,所述确定包括确定所述预加载表,使得所述预加载表标识如下指令:用于所述图形线中的下一条图形线的第一高速缓存线在预加载所述图形线中的当前图形线的最后一条高速缓存线时预加载。
9.如权利要求8所述的方法,其中,所述确定包括确定所述预加载表,使得所述预加载表还标识如下指令:如果所述第一高速缓存线保存少于预定数量的像素,则还预加载第二下一条高速缓存线。
10.一种计算机可读存储介质,存储用于执行方法的计算机可执行指令,该方法包括:
由计算装置基于图形项来确定预加载表,其中所述图形项包括多条图形线,并且其中对于所述图形线中的单条图形线,所述预加载表表示像素处理和高速缓存线预加载操作的模式;以及
对于每条所述图形线,由所述计算装置按照所述预加载表来处理所述像素并且执行所述高速缓存线预加载操作。
11.如权利要求10所述的计算机可读存储介质,其中,所述处理所述像素包括按照下列至少一个的部分进行处理:α混合操作、插值操作、颜色格式转换操作或者颜色处理操作。
12.如权利要求10所述的计算机可读存储介质,其中,所述预加载表包括多对值,其中每对值表示待处理的像素数量以及待预加载的高速缓存线的索引或索引偏移。
13.如权利要求10所述的计算机可读存储介质,其中,所述确定包括基于所述图形项的各图形线的第一像素的偏移来确定所述预加载表。
14.如权利要求10所述的计算机可读存储介质,其中,所述确定包括基于所述图形项的各图形线的长度来确定所述预加载表。
15.如权利要求10所述的计算机可读存储介质,其中,所述确定包括确定所述预加载表,使得所述预加载表标识如下指令:按照所述预加载表所预加载的多条高速缓存线的每条在按照所述预加载表处理来自所述高速缓存线的像素之前的至少预定数量的像素来预加载。
16.如权利要求10所述的计算机可读存储介质,其中,所述确定包括确定所述预加载表,使得所述预加载表标识如下指令:用于所述图形线中的下一条图形线的第一高速缓存线在预加载所述图形线中的当前图形线的最后一条高速缓存线时预加载。
17.如权利要求16所述的计算机可读存储介质,其中,所述确定包括确定所述预加载表,使得所述预加载表还标识如下指令:如果所述第一高速缓存线保存少于预定数量的像素,则还预加载第二下一条高速缓存线。
18.一种方法,包括:
由计算装置基于图形项来确定预加载表,其中所述预加载表表示在执行高速缓存线预加载操作之前要处理多少像素;以及
对于所述图形项的多条图形线的每条,由所述计算装置再使用所述预加载表来处理所述图形线的像素并且执行高速缓存预加载。
19.如权利要求18所述的方法,其中,所述处理像素包括按照下列至少一个的部分进行处理:α混合操作、插值操作、颜色格式转换操作或者颜色处理操作。
20.如权利要求18所述的方法,其中,所述再使用所述预加载表包括对于每条所述图形线将所述预加载表用作指令集,并且按照所述指令来执行像素处理和高速缓存预加载。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261656428P | 2012-06-06 | 2012-06-06 | |
US61/656428 | 2012-06-06 | ||
US13/792562 | 2013-03-11 | ||
US13/792,562 US9715715B2 (en) | 2012-06-06 | 2013-03-11 | Efficient cache preloading |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103473183A true CN103473183A (zh) | 2013-12-25 |
CN103473183B CN103473183B (zh) | 2016-11-23 |
Family
ID=49626008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310222650.6A Expired - Fee Related CN103473183B (zh) | 2012-06-06 | 2013-06-06 | 有效高速缓存预加载 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9715715B2 (zh) |
CN (1) | CN103473183B (zh) |
DE (1) | DE102013105772A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107003873A (zh) * | 2014-12-01 | 2017-08-01 | Arm有限公司 | 用于在数据处理系统中提供输出表面的方法和装置 |
CN110769273A (zh) * | 2018-07-27 | 2020-02-07 | 晨星半导体股份有限公司 | 高速缓存存取系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112380013B (zh) * | 2020-11-16 | 2022-07-29 | 海光信息技术股份有限公司 | 缓存预载方法、装置、处理器芯片及服务器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6744438B1 (en) * | 1999-06-09 | 2004-06-01 | 3Dlabs Inc., Ltd. | Texture caching with background preloading |
CN101751278A (zh) * | 2009-12-17 | 2010-06-23 | 中兴通讯股份有限公司 | 一种数据延迟加载方法及装置 |
US20110221743A1 (en) * | 2010-03-11 | 2011-09-15 | Gary Keall | Method And System For Controlling A 3D Processor Using A Control List In Memory |
US20110261061A1 (en) * | 2010-04-22 | 2011-10-27 | Adrian Lees | Method and system for processing image data on a per tile basis in an image sensor pipeline |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654022B1 (en) * | 1999-09-30 | 2003-11-25 | International Business Machines Corporation | Method and apparatus for lookahead generation in cached computer graphics system |
US7616209B1 (en) * | 2006-06-16 | 2009-11-10 | Nvidia Corporation | Prescient cache management |
US20130232304A1 (en) * | 2012-03-05 | 2013-09-05 | Qualcomm Incorporated | Accelerated interleaved memory data transfers in microprocessor-based systems, and related devices, methods, and computer-readable media |
-
2013
- 2013-03-11 US US13/792,562 patent/US9715715B2/en active Active
- 2013-06-05 DE DE102013105772A patent/DE102013105772A1/de not_active Withdrawn
- 2013-06-06 CN CN201310222650.6A patent/CN103473183B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6744438B1 (en) * | 1999-06-09 | 2004-06-01 | 3Dlabs Inc., Ltd. | Texture caching with background preloading |
CN101751278A (zh) * | 2009-12-17 | 2010-06-23 | 中兴通讯股份有限公司 | 一种数据延迟加载方法及装置 |
US20110221743A1 (en) * | 2010-03-11 | 2011-09-15 | Gary Keall | Method And System For Controlling A 3D Processor Using A Control List In Memory |
US20110261061A1 (en) * | 2010-04-22 | 2011-10-27 | Adrian Lees | Method and system for processing image data on a per tile basis in an image sensor pipeline |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107003873A (zh) * | 2014-12-01 | 2017-08-01 | Arm有限公司 | 用于在数据处理系统中提供输出表面的方法和装置 |
CN107003873B (zh) * | 2014-12-01 | 2020-12-01 | Arm有限公司 | 用于在数据处理系统中提供输出表面的方法和装置 |
CN110769273A (zh) * | 2018-07-27 | 2020-02-07 | 晨星半导体股份有限公司 | 高速缓存存取系统 |
Also Published As
Publication number | Publication date |
---|---|
DE102013105772A1 (de) | 2013-12-12 |
US20130328903A1 (en) | 2013-12-12 |
CN103473183B (zh) | 2016-11-23 |
US9715715B2 (en) | 2017-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101955732B1 (ko) | 캡처된 이미지 데이터를 스프레드시트와 연관시키는 방법 | |
CN102799573B (zh) | 网页批注的方法及系统 | |
US10026150B2 (en) | Graphics processing of a vertex buffer using a relative index buffer | |
JP2017168152A (ja) | サーチ結果としてのイメージの提示 | |
CN104572783A (zh) | 网页点击情况的展示方法及装置 | |
US8913080B2 (en) | Partitioning high resolution images into sub-images for display | |
CN111488732B (zh) | 一种变形关键词检测方法、系统及相关设备 | |
CN101825987A (zh) | 图表显示控制装置及程序 | |
CN103150302A (zh) | 一种排版方法和装置 | |
US20100231526A1 (en) | Track information processor, track information processing method, information recording medium, and program | |
KR20170071494A (ko) | 잘못된 입력들을 갖는 데이터 필드들의 재조직 및 표시 | |
CN103473183A (zh) | 有效高速缓存预加载 | |
US11743556B2 (en) | Character string display processing method and apparatus, terminal, and storage medium | |
Fanning | Coyote's Guide to Traditional IDL Graphics | |
US20160026613A1 (en) | Processing image to identify object for insertion into document | |
CN112487784A (zh) | 一种技术文档管理方法、装置、电子设备和可读存储介质 | |
CN116933728A (zh) | 文本处理方法、电子设备及存储介质 | |
CN107092514A (zh) | 一种页面内容展示方法及装置 | |
US20110055258A1 (en) | Method and apparatus for the page-by-page provision of an electronic document as a computer graphic | |
CN102739699A (zh) | 一种浏览器/服务器模式下的地图显示方法和客户端 | |
WO2019114044A1 (zh) | 图像处理方法、装置、电子设备及计算机可读存储介质 | |
CN108182656B (zh) | 一种图像处理方法及终端 | |
CN111142858A (zh) | 一种引擎装置 | |
US20120023414A1 (en) | Method and apparatus for processing e-mail | |
CN108564925A (zh) | 一种用于对电子书进行刷新控制的方法与设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Neubiberg, Germany Applicant after: Intel Mobile Communications GmbH Address before: Neubiberg, Germany Applicant before: Intel Mobile Communications GmbH |
|
COR | Change of bibliographic data | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20161123 Termination date: 20210606 |
|
CF01 | Termination of patent right due to non-payment of annual fee |