快速、動態(tài)高速緩存封裝的制作方法
【專利說明】快速、動態(tài)高速緩存封裝
[0001]相關(guān)申請的交叉引用/通過引用并入
[0002]本申請參考下面兩個申請并且要求其優(yōu)先權(quán):2012年9月20日提交的、標題為“Fast, Dynamic Cache Packing”的美國臨時申請序列號 N0.61/703,483 和 2012 年 9 月 26日提交的、現(xiàn)在作為美國專利N0.8, 510, 531發(fā)布的標題為“Fast, Dynamic Cache Packing”的美國專利申請序列號N0.13/627,320,這兩個申請通過引用將其條款在本文中被全部并入。
技術(shù)領(lǐng)域
[0003]本申請的方面通常涉及數(shù)據(jù)存儲和存儲器管理的領(lǐng)域。更具體地,本公開的某些實現(xiàn)涉及快速、動態(tài)、高速緩存封裝。
【背景技術(shù)】
[0004]文本、或任何其它圖形結(jié)構(gòu)常常被繪制成位圖或紋理,并且接著按需要從位圖或紋理拷貝到繪制目的地中。所述高速緩存機制通常在很多不同的應用中被普遍地用于各種數(shù)據(jù)對象,包括圖標、圖像和被稱為圖示符的文本字符。
[0005]然而,用于這樣的數(shù)據(jù)對象的常規(guī)高速緩存技術(shù)是低效的,因為對象被連續(xù)地存儲并且沒有對單獨對象尺寸的任何考慮。這樣的低效高速緩存導致使用更多的存儲器來存儲更多的位圖以保存所有必要的繪制對象,以及使用更多的CPU資源和存儲器帶寬來拷貝存在的較大的位圖。例如,在圖形處理單元(GPU)上使用的位圖需要被上傳到GPU作為紋理。因此,紋理越大,上傳花費的時間就越長并且隨后用于拷貝位圖的系統(tǒng)資源就越多。
[0006]常規(guī)高速緩存技術(shù)的附加的缺點是,每位圖所存儲的較少的繪制對象導致高速緩存快速填補,這常常需要使對高速緩存的頻繁刷新加倍來為不能適合的其它繪制對象讓出位置。這樣的頻繁刷新減少了片上存儲器的效用,因為系統(tǒng)本質(zhì)上是每當對象被需要時從零開始繪制對象的,而不能夠簡單地拷貝對象的高速緩存版本。
[0007]通過比較這樣的方法與在本公開的其余部分中參考附圖闡述的當前方法和裝置的一些方面,常規(guī)和傳統(tǒng)方法的另外的限制和缺點將對本領(lǐng)域中的技術(shù)人員變?yōu)轱@而易見的。
【發(fā)明內(nèi)容】
[0008]提供了實質(zhì)上如在至少一個附圖中示出的和/或結(jié)合至少一個附圖描述的用于快速、動態(tài)、高速緩存封裝的系統(tǒng)和/或方法,如在權(quán)利要求中更完全地闡述的。
[0009]本公開的這些和其它優(yōu)點、方面和特征以及其所示出的實現(xiàn)的細節(jié)將從下面的描述和附圖中被更充分理解。
[0010]根據(jù)本公開的示例實施例,用于存儲信息的方法可以包括確定所接收的數(shù)據(jù)對象是否適合在存儲器位圖中的多個空閑塊中的特定一個空閑塊內(nèi)部。多個空閑塊中的每一個可以包括具有頂邊、底邊和預定寬度的存儲器位圖的列。如果所接收的數(shù)據(jù)對象適合,則所接收的數(shù)據(jù)對象可以被存儲在多個空閑塊中的特定一個空閑塊中,在多個空閑塊中的特定一個空閑塊的頂邊開始。可以通過移動頂邊以在所存儲的接收到的數(shù)據(jù)對象之下開始來對多個數(shù)據(jù)塊中的特定一個數(shù)據(jù)塊調(diào)整尺寸。所述確定可以包括對于多個空閑塊中的每一個,所接收的數(shù)據(jù)對象的高度可以與多個空閑數(shù)據(jù)塊中的每一個的高度比較。所接收的數(shù)據(jù)對象的寬度可以與多個空閑數(shù)據(jù)塊中的每一個的預定寬度比較。
[0011]當所接收的數(shù)據(jù)對象的高度比多個空閑數(shù)據(jù)塊中的特定一個空閑數(shù)據(jù)塊的高度更小時并且當所接收的數(shù)據(jù)對象的寬度比多個空閑數(shù)據(jù)塊中的特定一個空閑數(shù)據(jù)塊的預定的寬度小不超過預定閾值量的差異時,可以確定所接收的數(shù)據(jù)對象適合在多個空閑塊中的特定一個空閑塊內(nèi)部。如果所接收的數(shù)據(jù)對象不適合在多個空閑塊中的特定一個空閑塊內(nèi)部,并且所接收的數(shù)據(jù)對象的高度比多個空閑數(shù)據(jù)塊中的特定一個空閑數(shù)據(jù)塊的高度小,則可以通過劃分多個空閑塊中的特定一個空閑塊來創(chuàng)建新空閑塊,其中新空閑塊至少與所接收的數(shù)據(jù)對象一樣寬。
[0012]所接收的數(shù)據(jù)對象可以在新空閑塊的頂邊開始被存儲在新空閑塊中??梢跃S護多個空閑塊的列表。如果多個空閑塊中的至少一個的尺寸落在預定閾值尺寸之下,則可以從列表中丟棄所述多個空閑塊中的至少一個。
[0013]根據(jù)本公開的另一示例實施例,用于存儲信息的設備可以包括包含程序的控制電路,所述程序指示設備執(zhí)行確定所接收的數(shù)據(jù)對象是否適合在存儲器位圖中的多個空閑塊中的特定一個空閑塊內(nèi)部。多個空閑塊中的每一個可以包括具有頂邊、底邊和預定寬度的存儲器位圖的列。如果所接收的數(shù)據(jù)對象適合,則所接收的數(shù)據(jù)對象可以在多個空閑塊中的特定一個空閑塊的頂邊開始被存儲在多個空閑塊中的特定一個空閑塊中。可以通過移動頂邊以在所存儲的接收到的數(shù)據(jù)對象之下開始由控制電路來對多個數(shù)據(jù)塊中的特定一個數(shù)據(jù)塊調(diào)整尺寸。
[0014]對于多個空閑塊中的每一個,控制電路可以比較所接收的數(shù)據(jù)對象的高度與多個空閑數(shù)據(jù)塊中的每一個的高度??刂齐娐愤€可以比較所接收的數(shù)據(jù)對象的寬度與多個空閑數(shù)據(jù)塊中的每一個的預定寬度??刂齐娐房梢园绦?,所述程序可以指示設備如果所接收的數(shù)據(jù)對象的高度比多個空閑數(shù)據(jù)塊中的特定一個空閑數(shù)據(jù)塊的高度小,并且如果所接收的數(shù)據(jù)對象的寬度比多個空閑數(shù)據(jù)塊中的特定一個空閑數(shù)據(jù)塊的預定寬度小不超過預定閾值量的差異,則確定所接收的數(shù)據(jù)對象適合在多個空閑塊中的特定一個空閑塊內(nèi)部。
[0015]如果所接收的數(shù)據(jù)對象不適合在多個空閑塊中的特定一個空閑塊內(nèi)部,并且所接收的數(shù)據(jù)對象的高度比多個空閑數(shù)據(jù)塊中的特定一個空閑數(shù)據(jù)塊的高度小,則控制電路可以包含程序,所述程序可以指示設備通過劃分多個空閑塊中的特定一個空閑塊來創(chuàng)建新空閑塊,其中新空閑塊至少與所接收的數(shù)據(jù)對象一樣寬??刂齐娐房梢园绦颍龀绦蚩梢灾甘驹O備在新空閑塊的頂邊開始將所接收的數(shù)據(jù)對象存儲在新空閑塊中。
[0016]控制電路可以包含程序,所述程序可以指示設備維持多個空閑塊的列表??刂齐娐房梢园绦颍龀绦蚩梢灾甘驹O備如果多個空閑塊中的至少一個空閑塊的尺寸落在預定的閾值尺寸之下,則從列表中丟棄所述多個空閑塊中的至少一個空閑塊。
[0017]根據(jù)本公開的又一示例實施例,公開了非暫時性、機器可讀存儲介質(zhì),其上存儲有具有用于存儲信息的至少一個代碼段的計算機程序。所述至少一個代碼段可以由機器執(zhí)行,用于使機器執(zhí)行包括確定所接收的數(shù)據(jù)對象是否適合在存儲器位圖中的多個空閑塊中的特定一個空閑塊內(nèi)部的方法。多個空閑塊中的每一個可以包括具有頂邊、底邊和預定寬度的存儲器位圖的列。如果所接收的數(shù)據(jù)對象適合,則所接收的數(shù)據(jù)對象可以在多個空閑塊中的特定一個空閑塊的頂邊開始存儲在多個空閑塊中的特定一個空閑塊中??梢酝ㄟ^移動頂邊以在所存儲的接收到的數(shù)據(jù)對象之下開始來對多個數(shù)據(jù)塊中的特定一個數(shù)據(jù)塊調(diào)整尺寸。
[0018]所述確定可以包括用于執(zhí)行一種方法的代碼,所述方法包括對于多個空閑塊中的每一個,比較所接收的數(shù)據(jù)對象的高度與多個空閑數(shù)據(jù)塊中的每一個的高度,以及比較所接收的數(shù)據(jù)對象的寬度與多個空閑數(shù)據(jù)塊中的每一個的預定寬度。至少一個代碼段可以包括用于如果所接收的數(shù)據(jù)對象的高度比多個空閑數(shù)據(jù)塊中的特定一個空閑數(shù)據(jù)塊的高度小,則確定所接收的數(shù)據(jù)對象適合在多個空閑塊中的特定一個空閑塊內(nèi)部的代碼。也可以此外,如果所接收的數(shù)據(jù)對象的寬度比多個空閑數(shù)據(jù)塊中的特定一個數(shù)據(jù)空閑塊的預定寬度小不超過預定閾值量的差異,則確定所接收的數(shù)據(jù)對象適合在多個空閑塊中的特定一個空閑塊內(nèi)部。
[0019]如果所接收的數(shù)據(jù)對象不適合在多個空閑塊中的特定一個空閑塊內(nèi)部,并且所接收的數(shù)據(jù)對象的高度比多個空閑數(shù)據(jù)塊中的特定一個空閑數(shù)據(jù)塊的高度小,則至少一個代碼段可以包括用于通過劃分多個空閑塊中的特定一個空閑塊來創(chuàng)建新空閑塊的代碼,其中新空閑塊至少與所接收的數(shù)據(jù)對象一樣寬。至少一個代碼段可以包括用于在新空閑塊的頂邊開始將所接收的數(shù)據(jù)對象存儲在新空閑塊中的代碼。所述至少一個代碼段可以包括用于維護多個空閑塊的列表,以及如果多個空閑塊中的至少一個的尺寸落在預定閾值尺寸之下,則從列表中丟棄多個空閑塊中的至少一個的代碼。
【附圖說明】
[0020]圖1是根據(jù)本公開的示例實施例的示出了空位圖的框圖。
[0021]圖2-圖4是根據(jù)本公開的示例實施例的示出了對具有圖示符的圖1的位圖進行封裝的框圖。
[0022]圖5是根據(jù)本公開的示例實施例的示出了用于存儲信息的方法的示例步驟的流程圖。
[0023]圖6是根據(jù)本公開的示例實施例的示出了用于存儲信息的方法的示例步驟的流程圖。
[0024]圖7是根據(jù)本公開的示例實施例的可以用于存儲信息的示例設備的框圖。
【具體實施方式】
[0025]如在本文中利用的,術(shù)語“電路”和“電路系統(tǒng)”指物理電子部件(即,硬件)和可以配置硬件、由硬件執(zhí)行、和/或否則與硬件相關(guān)聯(lián)的任何軟件和/或固件(“代碼”)。如在本文利用的,“和/或”意指由“和/或”連接的列表的項目中的任一個或多個。作為示例,“X和/或y”意指三要素集合{(X),(y), (x,y)}的任一要素。作為另一示例,“x,y和/或Z”意指七要素集合{(X),(y), (Z), (x,y), (x, z), (y, z), (x, y, z)}的任一要素。如在本文利用的,術(shù)語“例如”引入了一個或多個非限制性示例、實例或例證的列表。如在本文利用的,術(shù)語“位圖”可以指位圖或紋理(紋理本質(zhì)上是例如在圖形處理單元(GPU)渲染中使用的位圖;例如在GPU繪圖中使用的位圖)。
[0026]通常,圖示符或其它小圖像(例如,圖標)可以以一種方式被存儲,所述方式使得每位圖中可以存在很多圖示符或其它小圖像。例如,如果字母表的字符按順序被繪制,則它們可以按下面的順序被存儲在位圖中:
[0027]“abcdefghi jklmnopq