專利名稱:帶寬自適應存儲器壓縮的制作方法
技術領域:
本發明涉及計算機存儲器和與存儲器相關的帶寬利用率。
發明背景
主存儲器壓縮方案的一個典型目標是降低對主存儲器的片外訪問的帶寬要求。在任意這類方案中,存儲控制器需了解對于給定數據請求其必須讀取全尺寸的塊或縮小尺寸的塊(如果塊被壓縮)。
存在多種存儲器壓縮方式。許多方案使用可能大的片上數據結構來存儲(或高速緩存)“壓縮或未壓縮”狀態的不同主存儲器塊。這些片上結構在主存儲器訪問前被查詢以確定應使用完全或縮小的存儲器請求尺寸。如果大量存儲器可壓縮,那么這需要大的片上結構。
另一個解決方案是對主存儲器本身中壓縮/未壓縮狀態的塊以及相關數據進行編碼。例如,可提供額外數據位以對狀態進行編碼或數據可通過反轉ECC位而標記。首先, 假設數據被壓縮而訪問數據且如果返回的數據指示其未被壓縮,那么剩余的數據被訪問。 這種方式導致訪問未壓縮數據的不良延時,因為其要求在發出第二請求前存儲器請求等待第一(假定壓縮)數據返回。發明概要
因此,在本發明的實施方案中,提供一種方法,其包括根據在訪問存儲器時是否存在帶寬受限條件而以壓縮訪問模式和全(未壓縮)訪問模式從存儲器檢索數據。可基于例如存儲總線利用率或根據存儲器訪問請求隊列的深度確定帶寬受限條件的存在。
在另一個實施方案中,一種裝置包括寬帶受限確定邏輯,其響應于一個或多個存儲系統系統條件以確定是否存在帶寬受限運行條件并且供應其指示。存儲器訪問控制邏輯響應于帶寬受限確定邏輯,以在通過帶寬確定邏輯確定帶寬受限運行條件存在時以壓縮模式從存儲器檢索數據,以及在通過帶寬確定邏輯確定帶寬受限運行條件不存在時從以全 (未壓縮)訪問模式從存儲器檢索數據。在壓縮模式中,數據通過最初訪問每個被請求數據塊的縮小尺寸的數據塊而被檢索。如果這種初始縮小尺寸塊不含全尺寸塊的壓縮數據, 那么請求第二縮小尺寸的數據塊,其中一起取得的第一請求和第二請求形成全尺寸的數據塊。在全訪問模式中,針對每個被請求數據塊檢索全尺寸的數據塊。
在另一個實施方案中,提供一種方法,其包括確定存儲系統是否以帶寬受限模式運行。響應于存儲系統以帶寬受限模式運行,存儲控制器以壓縮訪問模式從存儲器訪問數據。響應于存儲系統未以帶寬受限模式運行,存儲控制器以未壓縮訪問模式從存儲器訪問數據數據。
附圖簡述
本領域技術人員通過參考附圖可更好地了解本發明以及明白其許多目標、特征和優點。
圖I示出根據本發明的實施方案的并入帶寬自適應存儲控制器的系統的方框圖。示出圖I的帶寬自適應存儲控制器的部分的示例性高級方框圖。
圖3示出本發明的實施方案的高級流程圖。
在不同附圖中使用相同參考符號表示類似或相同項目。
具體實施方式
參考
圖1,示出并入本發明的實施方案的計算機系統的方框圖。計算機系統包括處理器,諸如,例如中央處理單元(CPU)和/或圖形處理單元(GPU) 101。系統包括帶寬自適應存儲控制器105和存儲器107。在運行條件下,當存儲器請求速率低至足夠使得存在許多可用存儲器帶寬,使用主存儲器壓縮來節省帶寬將具有最小的性能好處。此外,在運行條件下,當主存儲器請求速率高至足以被存儲器帶寬限制時,存儲器請求所經歷的延時也非常高(因為排隊延遲)。在替代實施方案中,處理器(在示例性實施方案中示作CPU和/或 GPU)可體現為其它處理器,諸如數字信號處理器、微控制器和類似處理器。圖I的計算機系統可體現為手持設備、PDA、筆記本、臺式計算機、服務器或需要處理器和存儲器的任意其它系統。
因此,一個實施方案對主存儲器本身中的壓縮/未壓縮狀態塊以及相關數據進行編碼。編碼可例如用額外數據位實現或數據可通過反轉ECC位或通過一些其它適當機制而標記為壓縮。當存儲控制器檢測到其未處于帶寬受限運行狀態時,其總是訪問全、未壓縮尺寸的數據。因此,訪問壓縮或未壓縮數據的延時實際上是相同的。另一方面,如果存儲控制器檢測到其處于帶寬限制模式,那么其將首先假設數據被壓縮而訪問數據;且如果返回的數據指示其未被壓縮,那么訪問剩余的數據。所述方法形成訪問未壓縮數據的更大延時但是在數據被壓縮的情況下節省帶寬。所述額外帶寬可用于其它請求,可能縮短排隊延遲使得總體延時影響可被緩解。在帶寬受限情況下增大存儲控制器的有效帶寬會產生來自主存儲器壓縮的大多數性能好處。
參考圖2,示出帶寬受限存儲控制器的部分的方框圖。存儲控制器需確定存儲總線 109是否帶寬受限以及使用帶寬確定邏輯201。在一個實施方案中,帶寬確定邏輯201監測存儲總線的使用并且檢測何時存儲總線的使用時間短于一些最近運行窗內的可配置時間段。使用率可以是在時間窗內取得的樣本的平均值。總線利用率可直接從總線或從存儲器訪問控制邏輯205中的控制邏輯監測。帶寬確定邏輯可包括可編程閾值寄存器202以指定使用率,高于所述使用率,存儲總線被視作帶寬受限以及低于所述使用率,存儲總線被視作帶寬未受限。時間窗也可以是可編程的。帶寬確定邏輯201提供帶寬受限條件存在的指示 206給存儲器訪問控制邏輯205。存儲器訪問控制邏輯205包括提供適當控制信號和接口邏輯以從主存儲器107檢索數據的已知功能。
或者,帶寬確定邏輯201監測請求隊列203以確定帶寬受限條件的存在。請求隊列203將至主存儲器107的存儲器訪問請求排隊。隊列的深度指示存儲總線使用率。隊列越深,總線利用率越高且存儲總線越可能以帶寬受限條件運行。在估計帶寬確定時,特定實施方案在請求隊列和/或總線使用率監測時不區分讀和寫。在其它實施方案中,特別是使用存儲器接口上的單向信令的實施方案,讀數據接口可與寫數據接口分開。在這樣一種系統中,總線帶寬監測或隊列深度監測可能只需查看讀取。
與總線監測實施方案相同,區分帶寬受限條件和非帶寬受限條件的隊列深度的閾值水平可在閾值寄存器202中編程。隊列的深度可在預定或可編程時間窗內平均。一些實施方案可利用兩種方式來提供帶寬受限運行條件是否存在的附加保證。
在本描述中,數據塊Datal代表對應于壓縮數據塊的尺寸的縮小尺寸的數據塊。 數據塊Datal和Data2的組合代表全尺寸、非壓縮數據塊。當帶寬自適應存儲控制器以非帶寬受限模式運行時,例如,當隊列深度低于閾值水平且帶寬確定邏輯201提供所述指示至存儲器訪問控制邏輯205時,存儲器訪問控制邏輯在一個實施方案中具有其被設定來指示其中全尺寸、非壓縮數據塊(Datal和Data2)被訪問的全訪問模式的塊尺寸指示器207。 當存儲控制器訪問全尺寸塊(即,存儲控制器未處于帶寬受限狀態)時,檢驗所得全尺寸塊看其壓縮或未壓縮。如果塊未壓縮,那么從主存儲器返回的全尺寸塊(datal+data2)被返回給請求者。如果另一方面,塊被壓縮,那么從主存儲器返回的全尺寸的數據塊的“datal” 部分被解壓縮并且返回給請求者,而從主存儲器返回的data2部分被丟棄。
當帶寬自適應存儲控制器以非帶寬受限模式運行時,例如,當隊列深度高于閾值水平且塊尺寸指示器207被設定來指示壓縮塊尺寸且存儲控制器以其中縮小尺寸的數據塊(例如,僅Datal)響應于存儲器請求的執行而被訪問的壓縮訪問模式運行。壓縮檢查邏輯209檢查ECC位(或其它壓縮標簽)以確定縮小尺寸的被檢索塊是否實際被壓縮以及縮小尺寸塊是否存儲在Datal暫時存儲器213上。如果塊實際未壓縮,那么壓縮檢查塊通過將請求放入Data2請求隊列215中而傳達訪問全尺寸塊的其余部分的需要。存儲器請求由來自Data2請求隊列的存儲器訪問控制邏輯205服務。這些請求為固定尺寸,而不管當前塊尺寸設定。從主存儲器檢索到的Data2數據值被傳送回壓縮檢查邏輯以與來自Datal暫時存儲器(例如,未示出的另一個存儲器中)的相關數據合并以形成完整未壓縮結果。應注意, 雖然Data2請求隊列215在圖2中被示為單獨的請求隊列,但是在一些實施方案中其可并入請求隊列203。
應注意,本文所述的方法試圖限制保存用主存儲器中的數據(其免去對用于保持或緩存這些指示壓縮狀態的標簽的大型片上結構的需要)存儲的“壓縮/非壓縮”標簽信息的延時負面效應,同時在存儲器壓縮最有利時使主存儲器壓縮的帶寬節省性能好處最大化。
圖3示出與圖I和圖2所示的實施方案相關的示例性流程圖。在301中,帶寬確定邏輯201確定存儲系統是否以帶寬受限模式運行。如果不是,那么在303中以未壓縮模式(全尺寸塊)檢索數據。當存儲控制器訪問全尺寸塊時,在315中檢驗所得全尺寸塊看其壓縮或未壓縮。如果315中的檢查指示塊未壓縮,那么在319中從主存儲器返回的全尺寸塊(datal+data2)被返回給請求者且流程返回至301。另一方面,如果塊被壓縮,那么在321 中從主存儲器返回的全尺寸的數據塊的“datal”部分被解壓縮并且返回給請求者,而從主存儲器返回的data2部分被丟棄且系統返回301等待下一存儲器訪問。如果系統以帶寬受限模式運行(301中的是),那么存儲控制器在305中以壓縮模式運行并且檢索縮小尺寸的存儲器塊。在檢索塊后,存儲控制器讀取與存儲器塊相關的標簽信息,例如,在309中檢驗 ECC位以確定塊是否實際壓縮。如果被壓縮,那么在310中存儲控制器將datal塊解壓縮并且將解壓縮塊返回給請求者并且返回301進行下一存儲器訪問。如果塊未壓縮,那么存儲控制器需執行另一存儲器訪問以在311中檢索形成全尺寸未壓縮塊所需的剩余的數據,在 319中將全尺寸塊返回給請求者及隨后返回至301進行下一存儲器訪問。應注意,在圖3的流程中,可針對任意特定讀請求讀取多個數據塊。應注意,讀請求可能請求多個數據塊,其中一些被壓縮。在實施方案中,當處于帶寬受限模式時,對于數個全尺寸塊的請求,首先存儲控制器針對每個被請求塊讀取第一縮小尺寸塊(Datal)且隨后針對每個非壓縮塊讀取視情況的第二縮小尺寸塊(Data2)。
在實施方案中,當以帶寬受限模式運行時,可能且可能需要在第一訪問指示塊未壓縮時在縮小尺寸的數據塊(Datal)的第一訪問與(視情況的)第二縮小尺寸的數據塊 (Data2)的第二訪問之間發出其它不相關的存儲器請求。因此,例如,當在一個請求進入第二縮小尺寸塊的請求隊列215之前一個或多個請求進入請求隊列203時,可在請求隊列215 中的請求發出前發出一個或多個請求。
雖然在描述本發明的實施方案時已大致假定電路和物理結構,但是應了解在現代半導體設計和制作中,物理結構和電路可體現為適用于后續設計、模擬、測試或制作步驟的計算機可讀描述形式。提供為示例構造中的分立組件的結構和功能可實施為組合結構或組件。如本文所述,本發明的不同實施方案預計包括電路、電路系統、相關方法和其上編碼有這些電路、系統和方法的(例如,HDL、Verilog,⑶SII數據)的計算機可讀介質。計算機可讀介質包括有形計算機可讀介質,例如,光盤、磁帶或其它磁性、光學或電子存儲介質。除其上編碼有電路、系統和方法的計算機可讀介質外,電腦可讀介質可存儲指令以及可用于實施本發明的數據。本文所述的結構可使用在處理器上執行的軟件、在硬件上執行的固件或通過軟件、固件和硬件的組合實施。
本文說明的本發明描述是說明性的,并且不旨在限制如下文權利要求所規定的本發明的范圍。例如,雖然在圖2中示出不同的單獨塊來說明存儲控制器的功能,但是實際實施方式可不同地分布功能且一些功能可存在于除存儲控制器以外的位置上。可基于本文說明的描述對本文所公開的實施方案進行變化和修改,而不脫離如下文權利要求所規定的本發明的范圍。
權利要求
1.一種方法,其包括確定存儲系統是否以帶寬受限條件運行;響應于所述以所述帶寬受限條件運行的存儲系統,以壓縮訪問模式從存儲器訪問數據;以及響應于所述未以所述帶寬受限條件運行的存儲系統,以未壓縮訪問模式從所述存儲器訪問數據。
2.根據權利要求I所述的方法,其進一步包括根據存儲總線上的通信量高于預定閾值而確定所述帶寬受限條件存在。
3.根據權利要求I所述的方法,其進一步包括根據存儲器訪問請求隊列的深度高于預定閾值而確定所述帶寬受限條件存在。
4.根據權利要求I所述的方法,其中以所述壓縮訪問模式檢索數據包括響應于數據塊的每個請求而從所述存儲器檢索縮小尺寸的數據塊且其中以所述未壓縮訪問模式檢索數據包括響應于數據塊的每個請求而從所述存儲器檢索全尺寸數據塊。
5.根據權利要求4所述的方法,其進一步包括在檢索所述縮小尺寸的數據塊后,查看所述縮小尺寸的數據塊是否壓縮自用所述縮小尺寸的數據塊檢索的信息且如果未壓縮,那么從所述存儲器檢索剩余的數據以形成全尺寸塊。
6.根據權利要求5所述的方法,其進一步包括發出與所述縮小尺寸的數據塊不相關的存儲器請求且在檢索所述縮小尺寸的數據塊與所述剩余的數據之間檢索不相關數據以形成所述全尺寸的數據塊。
7.根據權利要求I所述的方法,其進一步包括存儲有關所述存儲器中的數據塊在所述存儲器中壓縮或未壓縮的信息。
8.一種裝置,其包括帶寬受限確定邏輯,其響應于一個或多個存儲系統條件以確定是否存在帶寬受限運行條件且供應其指示;和存儲器訪問控制邏輯,其響應于所述帶寬受限確定邏輯,以在通過所述帶寬受限確定邏輯確定所述帶寬受限運行條件存在時以壓縮模式從所述存儲器檢索數據,以及在通過所述帶寬受限確定邏輯確定所述帶寬受限運行條件不存在時以全訪問模式從所述存儲器檢索數據。
9.根據權利要求8所述的裝置,其中所述存儲器訪問控制邏輯通過訪問每個被請求數據塊的縮小尺寸的數據塊而以壓縮模式檢索存儲器中的所述數據。
10.根據權利要求8所述的裝置,其中包括所述帶寬受限確定邏輯和所述存儲器訪問控制邏輯的存儲控制器,其被配置來在檢索后查看所述縮小尺寸的數據塊是否實際壓縮, 且如果所述檢查指示所述縮小尺寸的數據塊未壓縮,那么訪問形成全尺寸的數據塊的剩余的數據。
11.根據權利要求10所述的裝置,其中所述存儲控制器被配置來根據耦合至所述存儲器的存儲總線的使用率確定所述帶寬受限運行條件的存在。
12.根據權利要求8所述的裝置,其中所述存儲器訪問控制邏輯被配置來通過訪問每個被請求數據塊的全尺寸的數據塊而以所述全訪問模式訪問存儲器中的數據。
13.根據權利要求8所述的裝置,其進一步包括含有存儲總線請求的請求隊列且其中所述帶寬確定邏輯可運行以根據所述請求隊列的深度確定所述帶寬受限運行條件的存在。
14.根據權利要求8所述的裝置,其進一步包括存儲控制器,其包括所述存儲器訪問控制邏輯和所述帶寬確定邏輯;和中央處理單元和圖形處理單元中的至少一個,其耦合至所述存儲控制器。
全文摘要
如果已確定存儲總線帶寬受限,那么以壓縮模式從系統存儲器檢索數據且如果存儲總線未帶寬受限,那么以未壓縮模式從系統存儲器檢索數據。可基于存儲總線利用率或根據存儲器訪問請求隊列的深度確定帶寬受限條件的存在。
文檔編號G06F13/16GK102947812SQ201180030329
公開日2013年2月27日 申請日期2011年6月21日 優先權日2010年6月22日
發明者詹姆斯·邁克爾·奧康納 申請人:超威半導體公司