快速、动态高速缓存封装的制作方法

文档序号:8449187阅读:1137来源:国知局
快速、动态高速缓存封装的制作方法
【专利说明】快速、动态高速缓存封装
[0001]相关申请的交叉引用/通过引用并入
[0002]本申请参考下面两个申请并且要求其优先权:2012年9月20日提交的、标题为“Fast, Dynamic Cache Packing”的美国临时申请序列号 N0.61/703,483 和 2012 年 9 月 26日提交的、现在作为美国专利N0.8, 510, 531发布的标题为“Fast, Dynamic Cache Packing”的美国专利申请序列号N0.13/627,320,这两个申请通过引用将其条款在本文中被全部并入。
技术领域
[0003]本申请的方面通常涉及数据存储和存储器管理的领域。更具体地,本公开的某些实现涉及快速、动态、高速缓存封装。
【背景技术】
[0004]文本、或任何其它图形结构常常被绘制成位图或纹理,并且接着按需要从位图或纹理拷贝到绘制目的地中。所述高速缓存机制通常在很多不同的应用中被普遍地用于各种数据对象,包括图标、图像和被称为图示符的文本字符。
[0005]然而,用于这样的数据对象的常规高速缓存技术是低效的,因为对象被连续地存储并且没有对单独对象尺寸的任何考虑。这样的低效高速缓存导致使用更多的存储器来存储更多的位图以保存所有必要的绘制对象,以及使用更多的CPU资源和存储器带宽来拷贝存在的较大的位图。例如,在图形处理单元(GPU)上使用的位图需要被上传到GPU作为纹理。因此,纹理越大,上传花费的时间就越长并且随后用于拷贝位图的系统资源就越多。
[0006]常规高速缓存技术的附加的缺点是,每位图所存储的较少的绘制对象导致高速缓存快速填补,这常常需要使对高速缓存的频繁刷新加倍来为不能适合的其它绘制对象让出位置。这样的频繁刷新减少了片上存储器的效用,因为系统本质上是每当对象被需要时从零开始绘制对象的,而不能够简单地拷贝对象的高速缓存版本。
[0007]通过比较这样的方法与在本公开的其余部分中参考附图阐述的当前方法和装置的一些方面,常规和传统方法的另外的限制和缺点将对本领域中的技术人员变为显而易见的。

【发明内容】

[0008]提供了实质上如在至少一个附图中示出的和/或结合至少一个附图描述的用于快速、动态、高速缓存封装的系统和/或方法,如在权利要求中更完全地阐述的。
[0009]本公开的这些和其它优点、方面和特征以及其所示出的实现的细节将从下面的描述和附图中被更充分理解。
[0010]根据本公开的示例实施例,用于存储信息的方法可以包括确定所接收的数据对象是否适合在存储器位图中的多个空闲块中的特定一个空闲块内部。多个空闲块中的每一个可以包括具有顶边、底边和预定宽度的存储器位图的列。如果所接收的数据对象适合,则所接收的数据对象可以被存储在多个空闲块中的特定一个空闲块中,在多个空闲块中的特定一个空闲块的顶边开始。可以通过移动顶边以在所存储的接收到的数据对象之下开始来对多个数据块中的特定一个数据块调整尺寸。所述确定可以包括对于多个空闲块中的每一个,所接收的数据对象的高度可以与多个空闲数据块中的每一个的高度比较。所接收的数据对象的宽度可以与多个空闲数据块中的每一个的预定宽度比较。
[0011]当所接收的数据对象的高度比多个空闲数据块中的特定一个空闲数据块的高度更小时并且当所接收的数据对象的宽度比多个空闲数据块中的特定一个空闲数据块的预定的宽度小不超过预定阈值量的差异时,可以确定所接收的数据对象适合在多个空闲块中的特定一个空闲块内部。如果所接收的数据对象不适合在多个空闲块中的特定一个空闲块内部,并且所接收的数据对象的高度比多个空闲数据块中的特定一个空闲数据块的高度小,则可以通过划分多个空闲块中的特定一个空闲块来创建新空闲块,其中新空闲块至少与所接收的数据对象一样宽。
[0012]所接收的数据对象可以在新空闲块的顶边开始被存储在新空闲块中。可以维护多个空闲块的列表。如果多个空闲块中的至少一个的尺寸落在预定阈值尺寸之下,则可以从列表中丢弃所述多个空闲块中的至少一个。
[0013]根据本公开的另一示例实施例,用于存储信息的设备可以包括包含程序的控制电路,所述程序指示设备执行确定所接收的数据对象是否适合在存储器位图中的多个空闲块中的特定一个空闲块内部。多个空闲块中的每一个可以包括具有顶边、底边和预定宽度的存储器位图的列。如果所接收的数据对象适合,则所接收的数据对象可以在多个空闲块中的特定一个空闲块的顶边开始被存储在多个空闲块中的特定一个空闲块中。可以通过移动顶边以在所存储的接收到的数据对象之下开始由控制电路来对多个数据块中的特定一个数据块调整尺寸。
[0014]对于多个空闲块中的每一个,控制电路可以比较所接收的数据对象的高度与多个空闲数据块中的每一个的高度。控制电路还可以比较所接收的数据对象的宽度与多个空闲数据块中的每一个的预定宽度。控制电路可以包含程序,所述程序可以指示设备如果所接收的数据对象的高度比多个空闲数据块中的特定一个空闲数据块的高度小,并且如果所接收的数据对象的宽度比多个空闲数据块中的特定一个空闲数据块的预定宽度小不超过预定阈值量的差异,则确定所接收的数据对象适合在多个空闲块中的特定一个空闲块内部。
[0015]如果所接收的数据对象不适合在多个空闲块中的特定一个空闲块内部,并且所接收的数据对象的高度比多个空闲数据块中的特定一个空闲数据块的高度小,则控制电路可以包含程序,所述程序可以指示设备通过划分多个空闲块中的特定一个空闲块来创建新空闲块,其中新空闲块至少与所接收的数据对象一样宽。控制电路可以包含程序,所述程序可以指示设备在新空闲块的顶边开始将所接收的数据对象存储在新空闲块中。
[0016]控制电路可以包含程序,所述程序可以指示设备维持多个空闲块的列表。控制电路可以包含程序,所述程序可以指示设备如果多个空闲块中的至少一个空闲块的尺寸落在预定的阈值尺寸之下,则从列表中丢弃所述多个空闲块中的至少一个空闲块。
[0017]根据本公开的又一示例实施例,公开了非暂时性、机器可读存储介质,其上存储有具有用于存储信息的至少一个代码段的计算机程序。所述至少一个代码段可以由机器执行,用于使机器执行包括确定所接收的数据对象是否适合在存储器位图中的多个空闲块中的特定一个空闲块内部的方法。多个空闲块中的每一个可以包括具有顶边、底边和预定宽度的存储器位图的列。如果所接收的数据对象适合,则所接收的数据对象可以在多个空闲块中的特定一个空闲块的顶边开始存储在多个空闲块中的特定一个空闲块中。可以通过移动顶边以在所存储的接收到的数据对象之下开始来对多个数据块中的特定一个数据块调整尺寸。
[0018]所述确定可以包括用于执行一种方法的代码,所述方法包括对于多个空闲块中的每一个,比较所接收的数据对象的高度与多个空闲数据块中的每一个的高度,以及比较所接收的数据对象的宽度与多个空闲数据块中的每一个的预定宽度。至少一个代码段可以包括用于如果所接收的数据对象的高度比多个空闲数据块中的特定一个空闲数据块的高度小,则确定所接收的数据对象适合在多个空闲块中的特定一个空闲块内部的代码。也可以此外,如果所接收的数据对象的宽度比多个空闲数据块中的特定一个数据空闲块的预定宽度小不超过预定阈值量的差异,则确定所接收的数据对象适合在多个空闲块中的特定一个空闲块内部。
[0019]如果所接收的数据对象不适合在多个空闲块中的特定一个空闲块内部,并且所接收的数据对象的高度比多个空闲数据块中的特定一个空闲数据块的高度小,则至少一个代码段可以包括用于通过划分多个空闲块中的特定一个空闲块来创建新空闲块的代码,其中新空闲块至少与所接收的数据对象一样宽。至少一个代码段可以包括用于在新空闲块的顶边开始将所接收的数据对象存储在新空闲块中的代码。所述至少一个代码段可以包括用于维护多个空闲块的列表,以及如果多个空闲块中的至少一个的尺寸落在预定阈值尺寸之下,则从列表中丢弃多个空闲块中的至少一个的代码。
【附图说明】
[0020]图1是根据本公开的示例实施例的示出了空位图的框图。
[0021]图2-图4是根据本公开的示例实施例的示出了对具有图示符的图1的位图进行封装的框图。
[0022]图5是根据本公开的示例实施例的示出了用于存储信息的方法的示例步骤的流程图。
[0023]图6是根据本公开的示例实施例的示出了用于存储信息的方法的示例步骤的流程图。
[0024]图7是根据本公开的示例实施例的可以用于存储信息的示例设备的框图。
【具体实施方式】
[0025]如在本文中利用的,术语“电路”和“电路系统”指物理电子部件(即,硬件)和可以配置硬件、由硬件执行、和/或否则与硬件相关联的任何软件和/或固件(“代码”)。如在本文利用的,“和/或”意指由“和/或”连接的列表的项目中的任一个或多个。作为示例,“X和/或y”意指三要素集合{(X),(y), (x,y)}的任一要素。作为另一示例,“x,y和/或Z”意指七要素集合{(X),(y), (Z), (x,y), (x, z), (y, z), (x, y, z)}的任一要素。如在本文利用的,术语“例如”引入了一个或多个非限制性示例、实例或例证的列表。如在本文利用的,术语“位图”可以指位图或纹理(纹理本质上是例如在图形处理单元(GPU)渲染中使用的位图;例如在GPU绘图中使用的位图)。
[0026]通常,图示符或其它小图像(例如,图标)可以以一种方式被存储,所述方式使得每位图中可以存在很多图示符或其它小图像。例如,如果字母表的字符按顺序被绘制,则它们可以按下面的顺序被存储在位图中:
[0027]“abcdefghi jklmnopq
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1