两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

使用存儲器容量壓縮的存儲器控制器,以及相關的基于處理器的系統(tǒng)和方法與流程

文檔序號:12287841閱讀:304來源:國知局
使用存儲器容量壓縮的存儲器控制器,以及相關的基于處理器的系統(tǒng)和方法與流程

本申請案主張2014年5月21日申請且標題為“使用存儲器容量和/或帶寬壓縮的存儲器控制器,以及相關的基于處理器的系統(tǒng)和方法(MEMORY CONTROLLERS EMPLOYING MEMORY CAPACITY AND/OR BANDWIDTH COMPRESSION,AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS)”的第62/001,545號美國臨時專利申請案的優(yōu)先權,所述專利申請案以全文引用的方式并入本文中。

本申請案還主張2014年12月16日申請且標題為“使用存儲器容量和/或帶寬壓縮的存儲器控制器,以及相關的基于處理器的系統(tǒng)和方法(MEMORY CONTROLLERS EMPLOYING MEMORY CAPACITY AND/OR BANDWIDTH COMPRESSION,AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS)”的第62/092,326號美國臨時專利申請案的優(yōu)先權,所述專利申請案以全文引用的方式并入本文中。

本申請案還主張2014年12月16日申請且標題為“結合下一讀取地址預取使用存儲器容量和/或帶寬壓縮的存儲器控制器,以及相關的基于處理器的系統(tǒng)和方法(MEMORY CONTROLLERS EMPLOYING MEMORY CAPACITY AND/OR BANDWIDTH COMPRESSION WITH NEXT READ ADDRESS PREFETCHING,AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS)”的第62/092,409號美國臨時專利申請的優(yōu)先權,所述專利申請以全文引用的方式并入本文中。

本申請案還主張2015年5月19日申請且標題為“使用存儲器容量壓縮的存儲器控制器,以及相關的基于處理器的系統(tǒng)和方法(MEMORY CONTROLLERS EMPLOYING MEMORY CAPACITY COMPRESSION,AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS)”的第14/716,001號美國專利申請案的優(yōu)先權,所述專利申請案以全文引用的方式并入本文中。

技術領域

本發(fā)明的技術大體上涉及計算機存儲器系統(tǒng),且尤其涉及用于提供具有到存儲器的存儲器存取接口的中央處理單元(CPU)的計算機存儲器系統(tǒng)中的存儲器控制器。



背景技術:

微處理器在廣泛多種應用程序中執(zhí)行計算任務。典型的微處理器應用程序包含一或多個中央處理單元(CPU),其執(zhí)行軟件指令。所述軟件指令指示CPU從存儲器中的位置取數據,使用取到的數據來執(zhí)行一或多個CPU操作,并產生結果。所述結果接著可存儲在存儲器中。舉例來說,此存儲器可為在CPU本地的高速緩沖存儲器、在CPU塊中的CPU之間的共享本地高速緩沖存儲器,在多個CPU塊之間的共享高速緩沖存儲器,或微處理器的主存儲器。

就此來說,圖1是包含基于CPU的系統(tǒng)12的示例性芯片上系統(tǒng)(SOC)10的示意圖。在此實例中,基于CPU的系統(tǒng)12包含多個CPU塊14(1)到14(N),其中“N”等于所要的任何數目的CPU塊14。每一CPU塊塊14(1)到14(N)分別含有兩個CPU 16(1)、16(2),以及共享層級2(L2)高速緩沖存儲器18(1)到18(N)。還提供共享等級3(L3)高速緩沖存儲器20,用于存儲由CPU塊14(1)到14(N)中的任一者使用或在其之間共享的高速緩存的數據。提供內部系統(tǒng)總線22,其允許CPU塊14(1)到14(N)中的每一者存取共享L3高速緩沖存儲器20以及其它共享資源??赏ㄟ^內部系統(tǒng)總線22由CPU塊14(1)到14(N)存取的其它共享資源可包含存儲器控制器24,用于存取主、外部存儲器(例如雙速率動態(tài)隨機存取存儲器(DRAM)(DDR))、外圍裝置26、其它存儲裝置28、快速外圍部件互連標準(PCI)(PCI-e)接口30、直接存儲器存取(DMA)控制器32和IMC 34。

隨著在圖1中的基于CPU的系統(tǒng)12中執(zhí)行的基于CPU的應用程序的復雜性和性能增加,共享L2高速緩沖存儲器18和共享L3高速緩沖存儲器20,以及可通過所述存儲器控制器24存取的外部存儲器的存儲器容量要求也可增加。然而,在基于CPU的系統(tǒng)中提供額外存儲器容量增加了集成電路上的存儲器所需的成本和面積。舉例來說,如果基于CPU的系統(tǒng),例如圖1中的基于CPU的系統(tǒng)12提供于SOC中,那么添加額外的存儲器容量可增加SOC封裝??墒褂脭祿嚎s來增加基于CPU的系統(tǒng)的有效存儲器容量,而不增加物理存儲器容量。然而,數據壓縮可減少CPU存儲器存取時間,且因此降低CPU性能,因為數據以經壓縮形式存儲,且于是必須在存儲器存取期間解壓縮。

因此,增加基于CPU的系統(tǒng)的存儲器容量,同時隨和基于CPU的應用程序的復雜性和性能要求增加,減少物理存儲器大小的增加,同時也最小化對CPU性能的影響將是合意的。



技術實現(xiàn)要素:

本文所揭示的方面包含使用存儲器容量壓縮的存儲器控制器,以及相關的基于處理器的系統(tǒng)和方法。在某些方面,使用可提供存儲器容量壓縮的經壓縮存儲器控制器。在一些方面,可使用基于線的存儲器容量壓縮方案,其中執(zhí)行物理地址(PA)到物理緩沖器地址的額外翻譯,以允許系統(tǒng)存儲器中在物理緩沖器地址處的經壓縮數據用于高效經壓縮數據存儲。還可使用翻譯旁視緩沖器(TLB)來存儲包括對應于系統(tǒng)存儲器中的物理緩沖器地址的PA標記的TLB條目,以更高效地執(zhí)行PA到系統(tǒng)存儲器中的物理緩沖器地址的翻譯。在某些方面,可使用基于線的存儲器容量壓縮方案、基于頁的存儲器容量壓縮方案,或混合的基于線-頁的存儲器容量壓縮方案??墒褂锰厥獯鎯ζ鲏嚎s容量方案,例如零線壓縮,來進一步優(yōu)化數據壓縮。

在這點上,在一個方面中,提供經壓縮存儲器控制器。經壓縮存儲器控制器包括存儲器接口,其經配置以存取系統(tǒng)存儲器。經壓縮存儲器控制器還包括經壓縮控制器。經壓縮控制器經配置以接收存儲器存取請求,其包括將經由系統(tǒng)總線在系統(tǒng)存儲器中存取的PA。經壓縮控制器進一步經配置以基于PA到主目錄中的條目中的物理緩沖器地址的映射,將接收到的存儲器存取請求中的接收到的PA翻譯為物理緩沖器地址,所述主目錄包括各自對應于系統(tǒng)存儲器中的PA的多個物理緩沖器地址。經壓縮控制器還經配置以基于物理緩沖器地址來存取系統(tǒng)存儲器,以執(zhí)行接收到的存儲器存取請求。

在另一方面,提供經壓縮存儲器控制器。經壓縮存儲器控制器包括用于存取系統(tǒng)存儲器的裝置,以及用于壓縮的裝置。所述用于壓縮的裝置是用于接收包括將經由系統(tǒng)總線在系統(tǒng)存儲器中存取的PA的存儲器存取請求。所述用于壓縮的裝置還用于經由存儲器接口基于所述PA存取系統(tǒng)存儲器,以執(zhí)行接收到的存儲器存取請求。所述用于壓縮的裝置還用于基于PA到主目錄中的條目中的物理緩沖器地址的映射,將接收到的存儲器存取請求中的接收到的PA翻譯為物理緩沖器地址中,所述主目錄包括各自對應于系統(tǒng)存儲器中的PA的多個物理緩沖器地址。所述用于壓縮的裝置還用于存取系統(tǒng)存儲器中的物理緩沖器地址,以執(zhí)行接收到的存儲器存取請求。

在另一方面,提供一種壓縮對基于中央處理單元(CPU)的系統(tǒng)中的系統(tǒng)存儲器的存儲器存取請求的數據的方法。所述方法包括接收存儲器存取請求,其包括將經由系統(tǒng)總線在系統(tǒng)存儲器中存取的PA。所述方法進一步包括基于PA到主目錄中的條目中的物理緩沖器地址的映射,將接收到的存儲器存取請求中的接收到的PA翻譯為物理緩沖器地址中,所述主目錄包括各自對應于系統(tǒng)存儲器中的PA的多個物理緩沖器地址。所述方法還包括基于物理緩沖器地址來存取系統(tǒng)存儲器,以執(zhí)行接收到的存儲器存取請求。

在另一個方面,提供CPU系統(tǒng)。所述CPU系統(tǒng)包括:系統(tǒng)總線;至少一個CPU內核,其以通信方式耦合到系統(tǒng)總線;以及經壓縮存儲器控制器,其以通信方式耦合到所述系統(tǒng)總線。所述CPU系統(tǒng)還包括系統(tǒng)存儲器,其以通信方式耦合到所述系統(tǒng)總線。所述系統(tǒng)存儲器經配置以存儲存儲器數據。所述CPU系統(tǒng)進一步包括翻譯旁視緩沖器(TLB),其由標記陣列和數據陣列中的多個TLB條目組成。所述多個TLB條目中的每一TLB條目經配置以將來自主目錄的包括標記陣列中對應于PA和至少一個物理緩沖器地址的標記的條目存儲到系統(tǒng)存儲器中,以壓縮對應于所述PA的數據。所述CPU系統(tǒng)還包括高速緩沖存儲器,其以通信方式耦合到所述系統(tǒng)總線。所述高速緩沖存儲器包括多個高速緩存條目,其各自經配置以存儲對應于所述PA的未經壓縮的存儲器數據。所述高速緩沖存儲器經配置以經由系統(tǒng)總線接收來自至少一個CPU內核和經壓縮存儲器控制器的存儲器存取請求。如果PA包含于高速緩沖存儲器中的高速緩存條目中,所述高速緩沖存儲器進一步經配置以提供對應于接收到的存儲器存取請求的PA的存儲器數據。經壓縮存儲器控制器經配置以接收存儲器存取請求,其包括將經由系統(tǒng)總線在系統(tǒng)存儲器中存取的PA。如果所述存儲器存取請求的PA不包含于高速緩沖存儲器中的高速緩存條目中,那么經壓縮存儲器控制器進一步經配置以確定用于接收到的存儲器存取請求的PA是否包含于TLB中的TLB條目中。如果PA包含于TLB中的TLB條目中,那么經壓縮存儲器控制器經配置以翻譯接收到的存儲器存取請求中的接收到的PA,因為TLB條目中的物理緩沖器地址含有TLB。如果PA不包含于TLB中的TLB條目中,那么經壓縮存儲器控制器經配置以翻譯接收到的存儲器存取請求中的接收到的PA,因為所述條目處的物理緩沖器地址對應于主目錄中的PA。經壓縮存儲器控制器進一步經配置以基于物理緩沖器地址來存取系統(tǒng)存儲器,以執(zhí)行接收到的存儲器存取請求。

在其它方面中,揭示可非常適合小數據塊壓縮的壓縮方法和格式。這些壓縮方法和格式可用于本文所揭示的存儲器容量和/或存儲器帶寬壓縮方面。

對于這些經壓縮存儲器控制器和壓縮方案中的一些或全部,可有可能增加基于CPU的系統(tǒng)的存儲器容量,同時隨著基于CPU的應用程序的復雜性和性能要求增加而減少物理存儲器大小的增加,同時還最小化對CPU性能的影響。

附圖說明

圖1是包含基于中央處理單元(CPU)的系統(tǒng)的示范性芯片上系統(tǒng)(SOC)的示意圖;

圖2是包含具有多個CPU的示范性基于CPU的系統(tǒng)以及使用存儲器容量和/或存儲器帶寬壓縮的經壓縮存儲器控制器的SOC的示意圖;

圖3是圖2中的經壓縮存儲器控制器的較詳細示意圖,其中所述經壓縮存儲器控制器進一步以通信方式耦合到用以提供存儲器容量和/或存儲器帶寬壓縮的任選的內部存儲器;

圖4是可由圖3中的經壓縮存儲器控制器實施的示范性基于線的緩沖存儲器容量壓縮方案的示意圖;

圖5是存儲在經壓縮存儲器中的可由圖3中的經壓縮存儲器控制器存取以提供基于頁的緩沖存儲器容量壓縮方案的示范性數據頁(DP)的示意圖;

圖6是示范性翻譯旁視緩沖器(TLB)的示意圖,所述TLB經配置以使物理地址(PA)與到存儲在經壓縮存儲器中的經壓縮數據頁的數據頁地址(DPA)相關,且可由圖3中的經壓縮存儲器控制器存取,以提供基于頁的緩沖存儲器容量壓縮方案;

圖7是包含在圖4到6中的可用于基于頁或基于線的緩沖存儲器容量壓縮方案中的示范性自由列表緩沖器的示意圖;

圖8是可由圖3中的經壓縮存儲器控制器實施的示范性混合基于線/頁的緩沖存儲器容量壓縮方案的示意圖;

圖9是由各自包括存儲在可由圖3中的經壓縮存儲器控制器存取的經壓縮存儲器中的多個數據存儲器塊的多個數據緩沖器(DB)組成的示范性數據頁(DP)的示意圖,因為存儲經壓縮高速緩沖存儲器行提供圖8中的混合的基于線/頁的緩沖存儲器容量壓縮方案;

圖10是說明圖3中的經壓縮存儲器控制器根據圖8中的用于存儲器存取的混合基于線/頁的緩沖存儲器容量壓縮方案將PA翻譯為圖9中的所分配數據頁(DP)內的所分配DB的示范性過程的流程圖;

圖11A說明圖3中的另外包含任選的L4高速緩沖存儲器來補償歸因于經壓縮存儲器控制器中的地址翻譯的性能損失的SOC的實例;

圖11B說明圖11A中的SOC的實例,其啟發(fā)經壓縮存儲器控制器中的L4高速緩沖存儲器和翻譯旁視緩沖器(TLB),以在L4高速緩沖存儲器中確定命中或未中之前查找PA;

圖12是示范性動態(tài)存儲器大小設計的示意圖;

圖13是可由圖3中的經壓縮存儲器控制器實施的示范性存儲器帶寬壓縮方案的示意圖;

圖14說明圖3中的包含任選的L4高速緩沖存儲器來補償歸因于經壓縮存儲器控制器中的地址翻譯的性能損失的SOC的實例;以及

圖15到21說明示范性數據塊壓縮格式和方案,其中的任一者可由經壓縮存儲器控制器用來壓縮存儲器數據塊,并解壓縮經壓縮的存儲器數據塊。

具體實施方式

現(xiàn)參考各圖,描述本發(fā)明的數個示范性方面。詞語“示范性”在本文中用于表示“充當實例、例子或說明”。本文中描述為“示范性”的任何方面未必解釋為比其它方面優(yōu)選或有利。

本文所揭示的方面包含使用存儲器容量壓縮的存儲器控制器,以及相關的基于處理器的系統(tǒng)和方法。在某些方面,使用可提供存儲器容量壓縮的經壓縮存儲器控制器。在一些方面,可使用基于線的存儲器容量壓縮方案,其中執(zhí)行物理地址(PA)到物理緩沖器地址的額外翻譯,以允許系統(tǒng)存儲器中在物理緩沖器地址處的經壓縮數據用于高效經壓縮數據存儲。還可使用翻譯旁視緩沖器(TLB)來存儲包括對應于系統(tǒng)存儲器中的物理緩沖器地址的PA標記的TLB條目,以更高效地執(zhí)行PA到系統(tǒng)存儲器中的物理緩沖器地址的翻譯。在某些方面,可使用基于線的存儲器容量壓縮方案、基于頁的存儲器容量壓縮方案,或混合的基于線-頁的存儲器容量壓縮方案。可使用特殊存儲器壓縮容量方案,例如零線壓縮,來進一步優(yōu)化數據壓縮。

在這點上,圖2是包含類似于圖1中的基于CPU的系統(tǒng)12的具有多個CPU塊14(1)到14(N)的示范性基于CPU的系統(tǒng)12'的SOC 10'的示意圖。圖2中的基于CPU的系統(tǒng)12'包含與圖1中的基于CPU的系統(tǒng)12共用的一些組件,其由圖1與2之間共用的元件編號表示,且因此將不再重新描述。然而,在圖2中的基于CPU的系統(tǒng)12'中,提供經壓縮存儲器控制器36。經壓縮存儲器控制器36控制對系統(tǒng)存儲器38的存取。系統(tǒng)存儲器38可包括一或多個雙數據速率(DDR)動態(tài)隨機存取存儲器(DRAM)40(1)到40(R)(下文稱為DRAM 40(1)到40(R)),作為非限制性實例。在此實例中,經壓縮存儲器控制器36使用根據本文和下文所揭示的方面的存儲器容量和/或存儲器帶寬壓縮。如下文將在示范性方面中更詳細地論述,經壓縮存儲器控制器36允許基于CPU的系統(tǒng)12'具有存儲器容量的有效增加,而不必增加圖1中的基于CPU的系統(tǒng)12上的物理存儲器大小,并且以最小化對CPU性能的影響或不影響CPU性能的方式。類似于圖1中的基于CPU的系統(tǒng)12的存儲器控制器24,圖2中的基于CPU的系統(tǒng)12'的經壓縮存儲器控制器36通過內部系統(tǒng)總線22由CPU塊14(1)到14(N)共享。

另外,關于圖2,每一CPU塊14(1)到14(N)中的CPU 16(1)和16(2)可包含單個硬件線程或多個硬件線程。如果CPU 16(1)和16(2)中的每一者中提供多個硬件線程,那么因此可增加CPU 16(1)和16(2)的等待時間。因此,可能希望將共享高速緩沖存儲器的增加的存儲器容量提供給基于CPU的系統(tǒng)12'中的CPU塊14(1)到14(N),以存儲用于CPU塊14(1)到14(N)的每一CPU 16(1)和16(2)中的多個線程的信息。在這點上,如下文將更詳細地論述,基于CPU的系統(tǒng)12'還可包含經壓縮高速緩沖存儲器42,其為所有CPU塊14(1)到14(N)的共享高速緩沖存儲器。在此實例中,經壓縮高速緩沖存儲器42是L3高速緩沖存儲器。通過提供經壓縮高速緩沖存儲器42,可增加共享高速緩沖存儲器的存儲器容量,而例如不必增加圖1中的基于CPU的系統(tǒng)12中的共享L3高速緩沖存儲器20上的物理存儲器大小。

因此綜上所述,通過提供圖2中的基于CPU的系統(tǒng)12'中的經壓縮存儲器控制器36和/或經壓縮高速緩沖存儲器42,可增加基于CPU的系統(tǒng)12'的存儲器容量,而不必增加或最低限度地增加圖1中的基于CPU的系統(tǒng)12上的物理存儲器大小,并且以最小化對CPU性能的影響或不影響CPU性能的方式。本發(fā)明的其余部分將論述圖2中的基于CPU的系統(tǒng)12'中的經壓縮存儲器控制器36和/或經壓縮高速緩沖存儲器42的示范性方面和特征。

在這點上,圖3說明圖2中的經壓縮存儲器控制器36的示范性內部組件的較詳細示意圖。在此實例中,在與含有圖2中的CPU塊14(1)到14(N)的半導體裸片46(1)、46(2)分開的半導體裸片44上提供經壓縮存儲器控制器36。或者,經壓縮存儲器控制器36可包含于與CPU塊14(1)到14(N)共用的半導體裸片中。不管裸片配置如何,提供經壓縮存儲器控制器36,使得CPU塊14(1)到14(N)可經由內部系統(tǒng)總線22向經壓縮存儲器控制器36作出存儲器存取請求,且通過經壓縮存儲器控制器36從存儲器接收數據。

繼續(xù)參看圖3,經壓縮存儲器控制器36控制對系統(tǒng)存儲器38的存儲器存取的操作,所述系統(tǒng)存儲器在圖2和3中示出為DRAM 40(1)到40(R)。經壓縮存儲器控制器36包含用以服務存儲器存取請求的多個DRAM接口48(1)到48(P)(例如DDR接口)。在這點上,在此實例中,經壓縮存儲器控制器36包含經壓縮控制器50。經壓縮控制器50響應于來自圖2中的CPU塊14(1)到14(N)的存儲器存取請求,控制壓縮存儲到系統(tǒng)存儲器38的數據以及解壓縮從系統(tǒng)存儲器38檢索的數據。以此方式,可向CPU塊14(1)到14(N)提供大于經壓縮存儲器控制器36所存取的存儲器的實際容量的虛擬存儲器地址空間。經壓縮控制器50還可經配置以執(zhí)行經由內部系統(tǒng)總線22提供到CPU塊14(1)到14(N)的信息的帶寬壓縮。

如下文將更詳細地論述,經壓縮控制器50可執(zhí)行任何數目的壓縮技術和算法,來提供存儲器容量和/或帶寬壓縮。為經壓縮控制器50所需的數據結構和其它信息提供本地存儲器52,以執(zhí)行此類壓縮技術和算法。在這點上,在此實例中以靜態(tài)隨機存取存儲器(SRAM)54的形式提供的本地存儲器52也提供于經壓縮存儲器控制器36中,以存儲經壓縮控制器50所需的數據結構和其它信息,以執(zhí)行壓縮技術和算法。本地存儲器52具有將用于經壓縮控制器50可需要用來執(zhí)行壓縮技術和算法的數據結構和其它數據存儲的足夠大小。本地存儲器52還可經分割以含有高速緩沖存儲器,例如L4高速緩沖存儲器(L4),以提供額外的高速緩沖存儲器,在經壓縮存儲器控制器36內內部使用。因此,L4控制器55也可提供于經壓縮存儲器控制器36中,以提供對L4高速緩沖存儲器(L4)的存取。如下文將更詳細地論述,增強型壓縮技術和算法可需要較大的內部存儲器。舉例來說,本地存儲器52可為128千字節(jié)(kB)。

另外,如圖3中示出且如將在下文更詳細地描述,還可為經壓縮存儲器控制器36提供任選的額外內部存儲器56。作為一實例,可提供額外內部存儲器56作為DRAM。如下文將更詳細地論述,額外內部存儲器56可促進額外的或比用于經壓縮存儲器控制器36的本地存儲器52中大的量的數據結構和其它數據,從而提供存儲器壓縮和解壓縮方案,以增加基于CPU的系統(tǒng)12'的存儲器容量和/或存儲器帶寬壓縮。內部存儲器控制器58提供于經壓縮存儲器控制器36中,以控制對額外內部存儲器56的存儲器存取來用于壓縮。內部存儲器控制器58不可供CPU塊14(1)到14(N)存取或檢視。

因此,綜上所述,關于圖3,提供具有對本地存儲器52和額外內部存儲器56的存取權的經壓縮存儲器控制器36來用于存儲壓縮數據結構信息可以與提供額外物理存儲器相比較低的成本,提供存儲器容量壓縮以實現(xiàn)增加的存儲器容量。避免增加基于CPU的系統(tǒng)12'的物理存儲器可節(jié)約電力消耗,且與提供額外物理存儲器相比,減小封裝占用面積和成本。經壓縮存儲器控制器36所提供的存儲器容量和/或帶寬壓縮對CPU塊14(1)到14(N)的操作系統(tǒng)控制操作透明。

另外,圖3中的經壓縮存儲器控制器36還可執(zhí)行存儲器帶寬壓縮和零線壓縮。本地存儲器52可用以存儲用于此類壓縮的較大數據結構。舉例來說,帶寬壓縮可由在所述數據也未經壓縮的情況下存儲較大數據結構的經壓縮存儲器控制器36實現(xiàn)。舉例來說,如果傳送128個字節(jié),那么在帶寬壓縮方案中可傳送64個字節(jié)以減少存儲器帶寬,但所述128字節(jié)塊的其它64個字節(jié)可保持未使用,從而提供增加的經壓縮數據結構。然而,如果還使用存儲器容量壓縮,所述128字節(jié)塊的其余64個字節(jié)可再用于另一存儲器塊。增加的存儲器帶寬可減少存儲器存取等待時間,且允許較多的CPU 16(1)、16(2)或其相應線程存取相同數目的存儲器信道,而不影響等待時間或最小化對等待時間的影響?;蛘撸绻泬嚎s存儲器控制器36不執(zhí)行此類壓縮,那么與存儲器信道的較大數目相比,可減小存儲器信道的數目,同時實現(xiàn)類似的等待時間結果,從而降低系統(tǒng)層級電力。

通過提供供圖3中的經壓縮存儲器控制器36使用的額外內部存儲器56,可使用于經壓縮存儲器控制器36執(zhí)行壓縮的更大量的數據結構和數據可用于進一步減少歸因于壓縮的等待時間效應??赏ㄟ^壓縮和/或存儲器信道的減少,將額外CPU 16(1)、16(2)和/或其中的硬件線程提供到圖3中的具有增加的有效存儲器容量的基于CPU的系統(tǒng)12'。如果用于供經壓縮存儲器控制器36執(zhí)行壓縮的數據結構和數據需要更多的存儲器,可提供額外的內部存儲器56,如上文所論述。然而,因為額外內部存儲器56在經壓縮存儲器控制器36外部,例如在不同的半導體裸片上,例如對額外內部存儲器56的存儲器存取等待時間可大于對本地存儲器52的存儲器存取等待時間,但額外內部存儲器56的增加的大小可允許增強的壓縮和/或每CPU 16容納較大數目的CPU 16(1)、16(2)和/或硬件線程。

為圖3中的經壓縮存儲器控制器36中的存儲器容量和/或帶寬壓縮提供的資源中的每一者,包含本地存儲器52和額外內部存儲器56,可個別地或彼此組合使用,以實現(xiàn)資源和面積、電力消耗、通過存儲器容量壓縮實現(xiàn)的增加的存儲器容量,以及通過存儲器帶寬壓縮實現(xiàn)的增加的性能之間的所要的均衡。在需要時,可啟用或停用存儲器容量和存儲器帶寬壓縮。另外,可啟用或停用上文所述的由經壓縮存儲器控制器36使用的資源,以實現(xiàn)存儲器容量和/或帶寬壓縮效率、電力消耗和性能之間的所要折衷?,F(xiàn)在將論述使用可供經壓縮存儲器控制器36使用的這些資源的示范性存儲器容量和/或帶寬壓縮技術。

在論述結合下一讀取地址預取使用存儲器容量和/或帶寬壓縮的存儲器控制器之前,首先關于圖4到21論述圖2和3中的經壓縮存儲器控制器36可使用的不同類型的存儲器壓縮方案的若干實例。可結合這些不同的存儲器壓縮方案,使用結合下一讀取地址預取使用存儲器容量和/或帶寬壓縮的存儲器控制器,以及相關的基于處理器的系統(tǒng)和方法。

在這點上,圖4是可由圖3中的經壓縮存儲器控制器36實施的示范性基于線的緩沖存儲器容量壓縮方案60(下文“基于線的壓縮方案60”)的示意圖。如下文將更詳細地論述,基于線的壓縮方案60將超出虛地址(VA)的向用于CPU操作系統(tǒng)中的物理地址(PA)的新等級的翻譯,以提供比圖2中的基于CPU的系統(tǒng)12'中的可用物理存儲器多的存儲器容量。所存取的存儲器位置的物理地址(PA)另外翻譯為物理緩沖器地址(PBA)。PBA含有到經壓縮存儲器控制器36可存取的經壓縮存儲器(例如系統(tǒng)存儲器38)中的地址(圖4中的PB地址),其中由CPU 16提供到經壓縮存儲器控制器36的PA的經壓縮數據貯存在其中。因此,通過在經壓縮存儲器控制器36中提供PBA的此額外翻譯層,系統(tǒng)存儲器38可有效地存儲比通常將在系統(tǒng)存儲器38中物理可尋址的PA多的PA。

在這點上,參考圖4,在此基于線的壓縮方案60中,經壓縮存儲器控制器36將經壓縮數據存儲到系統(tǒng)存儲器38,并從系統(tǒng)存儲器38存取經壓縮數據。在此實例中,經壓縮存儲器控制器36經配置以針對存儲器存取中尋址的每一PA,一次存取存儲器線大小的128字節(jié)存儲器數據塊(以未經壓縮的形式)。這可因為當一次存取128個字節(jié)時,在此實例中呈DRAM形式的系統(tǒng)存儲器38是高效的?;蛘?,存儲器數據塊可為其它字節(jié)長度,例如64個字節(jié)。返回到本實例,經壓縮存儲器控制器36壓縮系統(tǒng)存儲器38中的128字節(jié)存儲器數據塊,以增加用經壓縮存儲器控制器36可尋址的有效存儲器容量,超過經壓縮存儲器控制器36可存取的物理存儲器的大小。

繼續(xù)參看圖4,注意不是每個128字節(jié)存儲器數據塊均可由經壓縮存儲器控制器36以相同壓縮字節(jié)大小壓縮。一些存儲器數據塊可壓縮到比其它存儲器數據塊小的大小,取決于包含于所述存儲器數據塊中的數據的性質以及所使用的壓縮方案。因此,在此實例中,將系統(tǒng)存儲器38分割成多個位長度池62(1)到62(Q),其各自可由PBA尋址。池62(1)到62(Q)各自將128字節(jié)數據塊的經壓縮數據以經壓縮形式存儲在物理緩沖器(PB)中。提供每一PB池62(1)到62(Q),以存儲不同大小的經壓縮數據,使得可壓縮到較小大小的存儲器數據塊可分組在一起,以避免壓縮之后的未用位存儲。盡管在圖4中將PB池62(1)到62(Q)示出為分組在連續(xù)PBS中,但注意,不要求PB池62(1)到62(Q)含有連續(xù)的PB。如下文將更詳細地論述,每一PB池62(1)到62(Q)的大小可由經壓縮存儲器控制器36動態(tài)地指派。

在此實例中,PB池62(1)用于存儲可存儲在經壓縮的至多達32個字節(jié)中的經壓縮存儲器數據塊。PB池62(2)用于存儲可存儲在經壓縮的至多達64個字節(jié)中的經壓縮存儲器數據塊。PB池62(3)用于存儲可存儲在至多達96個字節(jié)中的經壓縮存儲器數據塊。PB池62(4)用于存儲可存儲在至多達128個字節(jié)中的經壓縮存儲器數據塊,其將包含無法在其原生128字節(jié)長度下壓縮的任何存儲器數據塊。每一PB池62(1)到62(Q)包含由經壓縮存儲器控制器36壓縮在為PB池62(1)到62(Q)指定的數據壓縮大小內的PB。如將在下文更詳細地描述,每一PB池62(1)到62(Q)還含有相應的自由節(jié)點列表64(1)到64(Q)(圖4僅示出64(1)),其將自由PBA列表包含在其將由經壓縮存儲器控制器36用來在寫入事務期間將未來PB存儲在自由PBA處的相應PB池62(1)到62(Q)中。

注意,所提供的PB池62的數目(“Q”)可取決于設計和存儲器數據塊大小而變化。舉例來說,如果存儲器數據塊大小為256個字節(jié),那么可提供八(8)個PB池62,各自經配置而以32個字節(jié)的增量(例如32個字節(jié)、64個字節(jié)、96個字節(jié)、…256個字節(jié))來存儲經壓縮存儲器數據塊。增加用于給定存儲器數據塊大小的PB池62的數目可提供增加的存儲器壓縮比率,因為所述存儲器數據塊大小分為較小的字節(jié)大小,但還可增加管理較大數目的PB池62的開銷。另外,增加存儲器設計中的存儲器數據塊大小可實現(xiàn)改進的存儲器壓縮比,但還可減小每一PB池62(1)到62(Q)的大小,或需要較多的存儲器以提供每一PB池62(1)到62(Q),來允許所要的PB池62(1)到62(Q)大小。

在圖4中的基于線的壓縮方案60的初始化時,所有PB包含于自由節(jié)點列表64中,意味著尚未將任何PB分配到PA。在存儲器事務操作期間,經壓縮存儲器控制器36存取系統(tǒng)存儲器38,以基于從CPU 16(圖2)接收到的PA來存取用于存儲器存取的PB。經壓縮存儲器控制器36可解壓縮所述PB,以經由內部系統(tǒng)總線22將未經壓縮的數據提供到請求CPU 16?;蛘撸泬嚎s存儲器控制器36可經由內部系統(tǒng)總線22將PB以未經壓縮形式提供到請求CPU 16,同時還執(zhí)行存儲器帶寬壓縮。因為系統(tǒng)存儲器38中的PB可由PBA存取,所以經壓縮存儲器控制器36必須執(zhí)行用于存儲器存取請求的接收到的PA到PBA的翻譯,來存取對應于所述存儲器存取請求中的PA的正確PB。在這點上,主目錄66可提供于存儲PA到PBA翻譯的系統(tǒng)存儲器38中。經壓縮存儲器控制器36使用經翻譯的PA來執(zhí)行主目錄66中的查找,以獲得如在先前建立PB時指派給PA且在寫入事務期間基于PB的壓縮大小存儲在PB池62(1)到62(Q)中的對應PBA。PBA可與所指派的PB池62(1)到62(Q)中的任何PB相關聯(lián),以在發(fā)生存儲器存取時,獲得將經壓縮數據存儲在任何PB中的靈活性,而鄰近PB不必對應于鄰近PBA。這允許實現(xiàn)較大的壓縮速率。

繼續(xù)參看圖4,可希望允許經壓縮存儲器控制器36更快地將PA翻譯為最近已經翻譯的PBA,而不要求存取主目錄66。在這點上,在所述實例中,本地存儲器52可在此實例中配置為n向關聯(lián)高速緩沖存儲器,以提供翻譯旁視緩沖器(TLB)68。在這點上,本地存儲器52中的TLB 68以可類似于n向高速緩沖存儲器而組織的SRAM 54的形式提供。TLB 68含有具有PA的標記72作為包含在其中的TLB條目74的一部分的標記陣列70。數據陣列76提供于含有多個TLB條目74的SRAM 54中,每一TLB條目包括來自主目錄66的針對每一標記72的PBA的數據條目和對應地址長度78。提供提供于SRAM 54中的n向關聯(lián)TLB 68的寬度,來促進存儲在每一TLB條目74中的所要量的PBA,以及所述PBA的所要地址長度78。PBA的地址長度78確定在PB池62(1)到62(Q)中存取PB到什么粒度(例如頁、字節(jié)等)。

在這點上,繼續(xù)參看圖4,當經壓縮存儲器控制器36執(zhí)行存儲器存取時,經壓縮存儲器控制器36使用經翻譯的PA來執(zhí)行SRAM 54的標記陣列70中的查找。如果標記陣列70中的TLB條目74具有與經翻譯的PA匹配的標記72,那么TLB 68中發(fā)生TLB命中。因此,對應于包含在主目錄66中的PA的PBA包含于對應于標記72的TLB條目74中的數據陣列76。在此情境下,經壓縮存儲器控制器36無需存取主目錄66來將PA翻譯為PBA,因此減少所涉及的等待時間,因為存取系統(tǒng)存儲器38中的主目錄66可大于對SRAM 54的存取。經壓縮存儲器控制器36可使用PBA以及匹配TLB條目74中的對應地址長度78來知曉要將系統(tǒng)存儲器38中尋址哪一PB,以及要讀取指派給所述PB的多少字節(jié)來存儲完全經壓縮存儲器數據。如果事務是讀取事務,那么在PBA位置處從系統(tǒng)存儲器38讀取經壓縮線。如果事務是寫入事務,那么經壓縮數據存儲在系統(tǒng)存儲器38的PB中的PBA處。

如果圖4中的TLB 68中發(fā)生TLB未中,那么經壓縮存儲器控制器36使用所述PA來執(zhí)行主目錄66中的查找。根據替代策略,從TLB 68收回TLB條目74。將主目錄66中對應于PA的PBA放置到TLB 68中。從用于PA的主目錄66獲得的PB起始位置和地址長度78由經壓縮存儲器控制器36用來存取PB中的經壓縮數據。如果事務是讀取事務,那么在PBA位置處從系統(tǒng)存儲器38讀取經壓縮線。

如果事務是寫入事務,那么經壓縮數據存儲在系統(tǒng)存儲器38的PB中的PBA處。如果PBA處的PB的長度與經壓縮線的壓縮大小相同,那么可將經壓縮線寫入到系統(tǒng)存儲器38中的PBA位置處的相同PB中。如果PBA處的PB的長度不同于經壓縮線的壓縮大小,那么經壓縮存儲器控制器36將基于將容納待存儲在系統(tǒng)存儲器38中的經壓縮線的系統(tǒng)存儲器38,來尋找另一PB池62(1)到62(Q)中的自由節(jié)點列表64中的自由PB。下文將在圖7中更詳細地論述自由節(jié)點列表64的操作。如本文所論述,含有自由PB的本地拉動緩沖器可從對應池的自由節(jié)點列表補給。

SRAM 54中的TLB條目74大小可為任何所要大小,例如64個字節(jié)、128個字節(jié)或256個字節(jié)。在此實例中,TLB條目74含有來自主目錄66的四(4)個PBA,因為經壓縮存儲器控制器36經配置以一次將四(4)個PBA從系統(tǒng)存儲器38加載到SRAM 54,如圖4中示出。在每一PBA中提供兩(2)位編碼80,如圖4中示出,以指示所述PBA對應于哪一PB池62(1)到62(4)。經壓縮存儲器控制器36接著使用對應于所述PA的PBA來存取對應PB池62(1)到62(4)中的PBA的位置處的正確PB。

在圖4的此實例中,可為全部為0的PA(即,零線)的存儲器數據提供特殊情況。在此情況下,經作為特殊情況,壓縮存儲器控制器36可將PBA編碼為SRAM 54中的PA的PBA地址0,意味著尚未指派PB。經壓縮存儲器控制器36將PBA中的0PB地址辨識為對應于全部為0的PA的存儲器數據。因此,將全部為0的存儲器數據壓縮到有效0字節(jié),因為不要求PB地址0處的PB用于經壓縮存儲器控制器36。因此,從不需要存取PB池62(1)到62(Q)來獲得全部為0的存儲器數據。對于零線壓縮情況,由于不必存取系統(tǒng)存儲器38,因此電力消耗也減小。

如果特定PB池62(1)到62(Q)中的可用PB耗盡,則經壓縮存儲器控制器36可經配置以將PA指派給另一PB池62(1)到62(Q)中的其它PBA??蓪⒋斯δ苄蕴峁┳鳛榻泬嚎s存儲器控制器36所進行的背景任務的一部分。耗盡意味著特定PB池62(1)到62(Q)中的可用PB下降到低于閾值,因為在給定PB池62(1)到62(Q)中無剩余PB可用之前,可能需要將PA指派給另一PB池62(1)到62(Q)中的其它PBA。如果給定PB池62(1)到62(Q)耗盡,可使其它PB池62(1)到62(Q)中的其它PB可用。舉例來說,如果可通過經壓縮存儲器控制器36將存儲器數據壓縮到32字節(jié)或更低,且例如32字節(jié)PB池62(1)中不再有可用的PB,則經壓縮存儲器控制器36可在PB分離操作中,將64字節(jié)PB池62(2)中的PB重新指派到PB池62(1)的兩(2)個32字節(jié)PB中。然而,如果例如128字節(jié)PB池62(4)中不再有可用PB,則經壓縮存儲器控制器36可重新指派64字節(jié)PB池62(3)中的兩(2)個PB,以在合并PB操作中形成PB池62(4)的一個128字節(jié)PB。然而,在此實例中,64字節(jié)PB池62(3)中的兩個64字節(jié)PB必須是連續(xù),以在合并PB操作中重新指派給128字節(jié)PB池62(4)。

基于線的壓縮方案60的一個特征是提供于PBA中的較大PB地址存儲在SRAM 54中,因為在PB池62(1)到62(Q)中,在每線基礎上(例如,相對于每頁基礎)存取PB。因此,SRAM 54所提供的TLB 68的大小可因此較大,因為大量的位存儲在每一TLB條目74中的每一PBA中。在經壓縮存儲器控制器36執(zhí)行的存儲器容量壓縮中,可能希望具有較小的TLB 68來將PA提供到PBA地址翻譯。

在這點上,參考圖5,基于頁的緩沖存儲器容量壓縮方案82(下文“基于頁的壓縮方案82”)可由圖3中的經壓縮存儲器控制器36執(zhí)行,以存儲和存取經壓縮數據?;陧摰膲嚎s方案82類似于圖4中的基于線的壓縮方案60,且可使用提供于圖2中的基于CPU的系統(tǒng)12'中的相同資源。因此,本文所論述的基于頁的壓縮方案82將參考圖2和3。如下文將更詳細地論述,提供基于頁的壓縮方案82允許在圖3中的SRAM 54中提供與圖4中的基于線的壓縮方案60相比較小的TLB 68大小,因為存儲在SRAM 54中的地址充當整個存儲器頁而不是緩沖器線的TLB 68地址。因此,存儲在SRAM 54中的地址的大小不必為全地址長度。然而,在基于頁的壓縮方案82中,存儲器頁大小(例如1kB、2kB、3kB、4kB)的數據頁(DP)的池分配在系統(tǒng)存儲器38(圖3)中,而不是例如圖4的實例中的32、64、96和128字節(jié)的較低字節(jié)大小的線大小PB的所分配池。并且,類似于圖4中的基于線的壓縮方案60,基于頁的壓縮方案82將DP池保持在系統(tǒng)存儲器38中。

參考圖5,示出系統(tǒng)存儲器38,其針對基于頁的壓縮方案82含有單個DP。在此實例中,DP的大小為2kB。將系統(tǒng)存儲器38中的DP分成相等大小的六十四(64)個物理緩沖器(PB),在此實例中,其為32個字節(jié)。物理緩沖器(PB)類似于上文的基于線的壓縮方案60中的PB,只是經壓縮數據可橫跨DP內的連續(xù)PB。線0僅占用圖5中的示范性DP中的一個32字節(jié)PB。線1占用圖5中的示范性DP中的三(3)個連續(xù)32字節(jié)PB。線31占用兩(2個連續(xù)32字節(jié)PB。橫跨多于一個PB的線始終存儲在DP中的連續(xù)PB中。DP以及包含在其中的PB可通過數據頁地址(DPA)尋址,所述DPA可通過經壓縮存儲器控制器36從PA翻譯。類似于圖4中的主目錄66,系統(tǒng)存儲器38的存儲DP的部分將用于主目錄,以將PA翻譯為用于存儲在系統(tǒng)存儲器38中的所存取經壓縮DP的DPA。

圖6說明可提供于SRAM 54中以針對最近翻譯的PA將PA更快地翻譯為數據頁地址(DPA)的TLB 84。TLB 84類似于高速緩沖存儲器而組織,但具有TLB條目86。TLB 84中的每一TLB條目86表示系統(tǒng)存儲器38中的DP。PA包含于每一有效TLB條目86中的標記陣列90中的標記88中。DPA存儲在TLB 84中的數據陣列92中的對應于PA的TLB條目86中。DPA可存儲在比PB的全地址位大小少的位中,因為DPA需要在系統(tǒng)存儲器38中尋址頁。如圖6中示出,為含有多個線位置(例如L0Pos、L1Pos、……Ln Pos)以及對應于存儲器頁面中對應于DPA處的DP的PB的對應線長度(例如L0Len、L1Len、……Ln Len)的每一DPA提供管理信息94,如圖5所示。線位置指示DP中的線的開始,且線長度指示包含在DP中的線中的PB的數目。在TLB 84中的TLB未中后,TLB 84加載有與DPA相關聯(lián)的TLB條目86,其小于圖4中的基于線的壓縮方案60中的TLB條目74。

圖5和6中的基于頁的壓縮方案82還使用自由節(jié)點列表來在系統(tǒng)存儲器38中分配自由DP,以用于壓縮存儲器頁,類似于圖4中的基于線的壓縮方案60中的自由節(jié)點列表64。圖7示出可用以在系統(tǒng)存儲器38中分配自由DP以用于在基于頁的壓縮方案82中中壓縮存儲器頁的示范性自由節(jié)點列表96。如本文所示,自由節(jié)點列表96是鏈表。假設自由節(jié)點列表96中的DPA自由列表98(1)到98(R)的數目足以涵蓋所有DP的所有DPA。在此實例中,DPA自由列表98(1)到98(R)實際上是也被稱作自由列表DP的DP本身。盡管將DPA自由列表98(1)到98(R)示出為分為具有等于DP的大小的若干DPA,但不必將連續(xù)DPA指派給給定DP。在每一DPA自由列表98(1)到98(R)內的是自由DPA100(1)到100(R)的列表。當需要指派新的DPA來將經壓縮數據存儲在DP的PB中時,將來自自由節(jié)點列表96的對應于DP大小的一或多個自由DPA 100(1)到100(R)拉到本地拉動緩沖器102中。頭部指針104提供于頭部自由DPA100(1)中,以遍歷自由節(jié)點列表96。每DP大小的本地推動緩沖器108含有對應池的最近釋放的DPA。當將包含在DPA自由列表98內的所有DPA傳送到本地拉動緩沖器102時,DP本身可經由本地推動緩沖器108傳回到自由節(jié)點列表64。提供尾部指針106,以允許不再指派給將從本地推動緩沖器108推送到自由節(jié)點列表96的尾部中的DP中的DB的DPA的釋放。類似于圖7中的基于頁的壓縮方案82的方案也可用于圖4中的基于線的壓縮方案60的自由節(jié)點列表64??蔀閺挠糜诨陧摰拇鎯ζ鲏嚎s方案82的自由節(jié)點列表96拉動的DPA一次指派一存儲器頁,而可為從用于圖4中的基于線的壓縮方案60的自由節(jié)點列表64拉動的DPA一次指派一緩沖線。并且,因為下一組DP的本地拉動緩沖器102和本地推動緩沖器108維持,所以這允許經壓縮存儲器控制器36在來自DRAM的單個突發(fā)中將指向自由DP的主指針讀取或寫入到自由節(jié)點列表96,例如為了效率目的。

對于圖4中的基于線的壓縮方案60或圖5和6中的基于頁的壓縮方案82,本文可提供的另一特征是用以存儲DB(對于基于線的壓縮方案60)或DP(對于基于頁的壓縮方案82)的系統(tǒng)存儲器38可用以存儲DBA(對于基于線的壓縮方案60)或DPA(對于基于頁的壓縮方案82)的自由節(jié)點列表64或96。這節(jié)約了用于存儲自由節(jié)點列表64或96的存儲器。參考圖7中的自由節(jié)點列表96,頭部指針104允許經壓縮存儲器控制器36知曉存儲具有系統(tǒng)存儲器38的DP內的DP自由節(jié)點的開頭。尾部指針106允許經壓縮存儲器控制器36知曉存儲在具有系統(tǒng)存儲器38的DP內的DP自由節(jié)點的結尾。將從自由節(jié)點列表96新分配的DPA添加到系統(tǒng)存儲器38中的自由節(jié)點列表96的結尾,使得當經壓縮存儲器控制器36請求分配新的DPA時,將不重新分配所分配的DPA。當DPA指針在自由節(jié)點列表96中釋放時,其返回到自由節(jié)點列表96。當自由節(jié)點列表64在尾部為滿時,可從本地拉動緩沖器102分配新的自由DP,并將其添加到自由節(jié)點列表64。圖4中的自由節(jié)點列表64可類似地存儲在圖4中的系統(tǒng)存儲器38的DB內,且由經壓縮存儲器控制器36在其中存取。

用以在需要時(當系統(tǒng)存儲器38中僅較小DP可用時)創(chuàng)建較大DP的另一DP管理方法是保持若干對DP。舉例來說,1Kb DP可與3kB DP配對。2kB DP可與另一2kBDP配對。在系統(tǒng)存儲器38內,小于最大頁大小(例如4kB)的所占用的DP可保持指向對應PA的后指針。在背景任務中,一旦達到DP的閾值分配,經壓縮存儲器控制器36可掃描自由節(jié)點列表96,并尋找也具有自由DP對的自由DP 100。自由DP 100及其配對可組合以在系統(tǒng)存儲器38中提供較大DP。如果達到第二閾值,那么在背景任務中,經壓縮存儲器控制器36可掃描自由節(jié)點列表96,并在對應DP對的另一DP中查看,來看其是否被經壓縮數據占用。如果是,經壓縮存儲器控制器36可獲得指向PA的尾部指針106,將所占用的DP從用于相同DP大小的自由節(jié)點列表96移動到另一DP,將兩(2)個鄰近DP合并到較大DP中,并更新自由節(jié)點列表96。經壓縮存儲器控制器36可接著使用指向PA的尾部指針106來更新主目錄66,且任選地更新TLB 68,以指向用于所占用的DP的新DPA。

可希望提供存儲器容量壓縮方案,其包含上文關于圖4所述的基于線的壓縮方案60和上文關于圖5到7所述的基于頁的壓縮方案82兩者的特性。在這點上,圖8是可由圖3中的經壓縮存儲器控制器36實施的示范性混合基于線/頁的緩沖存儲器容量壓縮方案110的示意圖。如下文將論述,混合基于線/頁的緩沖存儲器容量壓縮方案110含有基于線的緩沖存儲器容量壓縮方案和基于頁的緩沖存儲器容量壓縮方案兩者的特征。混合基于線/頁的緩沖存儲器容量壓縮方案110含有與圖4中說明的基于線的壓縮方案60共用的組件,其用共用元件編號來表示。

在這點上,參看圖8,在混合基于線/頁的緩沖存儲器容量壓縮方案110中,經壓縮存儲器控制器36經配置以針對存儲器存取中尋址的每一PA,一次存取若干128字節(jié)存儲器數據塊(以未經壓縮形式)。將系統(tǒng)存儲器38分成相同大小(例如1kB)的多個物理塊(PB)112(1)到112(Q),其各自可由TLB 68的數據陣列76中的TLB條目74中的緩沖器指針114尋址。每一PA是映射到多個緩沖器指針114(1)到114(S)的頁地址(例如4kB),所述緩沖器指針各自對應于系統(tǒng)存儲器38中的對應的多個PB 112(1)到112(Q)(例如各自1kB)。因此,通過將PA頁地址分為若干PB 112(1)到112(Q),每一PB 112可具有相同大小,以實現(xiàn)類似于基于線的存儲器容量壓縮方案的益處,但數據壓縮仍由經壓縮存儲器控制器36在數據頁大小基礎(例如4kB)上管理,類似于基于頁的存儲器容量壓縮方案。另外,如下文將論述,每一PB 112內的存儲器數據塊中的每一者具有相同大小(例如32個字節(jié))。

圖9是根據圖8中的混合基于線/頁的緩沖存儲器壓縮方案110的由提供于系統(tǒng)存儲器38中的多個1kB PB 112(1)到112(4)組成的4kB大小的示范性數據頁(DP)的示意圖。如本文所示,每一PB 112(1)到112(4)包括多個存儲器數據塊116,其各自具有相同大小(例如在此實例中,各自32個字節(jié))。注意,對對應于將連續(xù)地存儲在系統(tǒng)存儲器38中的給定PA的PB 112(1)到112(4)不存在要求。因為數據頁(DP)由相同大小的PB 112(1)到112(4)組成,所以PB 112(1)到112(4)的大小設計不必由經壓縮存儲器控制器36動態(tài)地指派。

在此實例中,每一PB 112(1)到112(Q)用于存儲可存儲在經壓縮的至多達32個字節(jié)中的經壓縮存儲器數據塊。如果經壓縮存儲器數據塊無法向下壓縮到32個字節(jié),那么可指派給定PB 112內的連續(xù)存儲器數據塊116來用于經壓縮數據的存儲。TLB 68中的每一TLB條目74經配置以含有多個緩沖器指針114(1)到114(S),在此實例中,其為至多達四(4)個緩沖器指針114(1)到114(4)(例如如果PA尋址4kB的頁面大小,且PB 112(1)到112(4)各自為1kB)。緩沖器指針114(1)到114(4)不必指向連續(xù)PB 112(1)到112(4)。在需要時,給定PA的TLB條目74中的緩沖器指針114(1)到114(4)由經壓縮存儲器控制器36設定,以在分配時指向特定PB 112(1)到112(4)。如先前所闡釋,TLB條目74從主目錄66填充。如果尚未分配PB 112,那么用于標記72的TLB條目74中的對應緩沖器指針114將為空,或一些其它信息將指示對應于緩沖器指針114的PB 112尚未由經壓縮存儲器控制器36分配。

繼續(xù)參看圖9,當經壓縮存儲器控制器36接收到PA時,將PA與TLB 68中的標記72進行比較,以查找對應于所述PA的TLB條目74。經壓縮存儲器控制器36使用所述PA的地址來查詢用于對應DP的TLB條目74,且確定對應于PA的PB 112(1)到112(4)在對應PB內的地址。舉例來說,如圖9中示出,如果PA對應于TLB 68中的選定TLB條目74中的第四緩沖器指針114(4),那么緩沖器指針114(4)可指向系統(tǒng)存儲器38中的PB 112(4)。存儲在每一TLB條目74中且對應于經壓縮數據的頁的頁信息118進一步由經壓縮存儲器控制器36基于所述PA來存取。在此實例中,頁信息118含有三十二(32)個條目,因為在此實例中,每數據頁存在三十二(32)個TLB條目74?;趯⒏鶕鯬A存取的字來存取頁信息118中的存儲器線高速緩存線,以確定起始存儲器數據塊116以及選定PB 112(4)中的經壓縮存儲器數據的長度。在此實例中,對應于所述PA的經壓縮存儲器數據對應于具有值‘2’的起始存儲器數據塊116Bl#‘96’,意味著長度為三(3)(以節(jié)約位),且意味著經壓縮存儲器數據是在存儲器數據塊116Bl#96中開始的三(3)個字節(jié)。

圖10是說明圖3中的經壓縮存儲器控制器36根據圖8中的用于存儲器存取的混合基于線/頁的緩沖存儲器容量壓縮方案110將PA翻譯為圖9中的所分配DP內的所分配PB 112的示范性過程的流程圖。如本文所示,經壓縮存儲器控制器36接收PA作為輸入數據120(框122)。所述PA具有操作碼作為讀取或寫入存儲器事務(框122)。如果存儲器事務為寫入事務,那么輸入數據120還可含有壓縮長度(框122)。經壓縮存儲器控制器36查詢如圖8和9中所示的TLB 68,以將PA轉換為具有起始塊數目以及讀取或寫入事務的操作碼的PB 112(框124)。如果PA不包含于TLB 68中,經壓縮存儲器控制器36收回TLB 68中的現(xiàn)有TLB條目74,來為新接收到的PA騰空間(框126)。如果TLB條目74是重寫狀態(tài),那么收回的TLB條目74存儲回到主目錄66中(框126)。主目錄66中對應于接收到的PA的TLB條目74是從主目錄66取得,且放置到TLB 68中(框126)。

繼續(xù)參看圖10,如果PA包含于TLB 68中,且框126中的收回過程已完成,那么經壓縮存儲器控制器36確定存儲器存取是讀取還是寫入操作(框128)。如果存儲器存取是讀取操作,那么經壓縮存儲器控制器36使用TLB條目74來存取對應于TLB 68中的緩沖器指針114和頁信息118的存儲器數據塊116,以讀取經壓縮存儲器數據,且過程完成(框130)。如果存儲器事務是寫入操作,那么經壓縮存儲器控制器36確定來自輸入數據120的經壓縮長度是否已改變(框132)。如果不是,那么經壓縮存儲器控制器36使用TLB條目74來存取對應于TLB 68中的緩沖器指針114和頁信息118的存儲器數據塊116,以寫入經壓縮存儲器數據,且過程完成(框130)。如果經壓縮存儲器控制器36確定來自輸入數據120的經壓縮長度已改變(框132),且增加(框134),那么經壓縮存儲器控制器36釋放系統(tǒng)存儲器38中對應于所述PA的當前存儲器數據塊116,并將新的存儲器數據塊116分配給PA(框136),并更新TLB 68以及用于對應TLB條目74的重寫狀態(tài)位(框138)。如果經壓縮存儲器控制器36確定來自輸入數據120的經壓縮長度尚未增加(框134),那么經壓縮存儲器控制器36釋放系統(tǒng)存儲器38中對應于所述PA的過多存儲器數據塊116(框140)(或者釋放所有的存儲器數據塊116,并在系統(tǒng)存儲器38中再分配新的存儲器數據塊116),更新頁信息118中對應于所述PA的存儲器數據塊116的長度,并設定TLB 68中的TLB條目74中的重寫狀態(tài)位(框140)。

還可希望為圖2中的SOC 10'提供額外的高速緩沖存儲器,其可補償歸因于經壓縮存儲器控制器36的操作的任何性能損失,以將接收到的PA翻譯為系統(tǒng)存儲器38中存在的經壓縮PA。在這點上,圖11A說明類似于圖2中的SOC 10'的替代SOC 10(1)的實例,但圖11A中的SOC 10(1)另外包含任選的高速緩沖存儲器142,其在此實例中為L4高速緩沖存儲器。經壓縮存儲器控制器36可在L4高速緩沖存儲器142和TLB 68兩者或主目錄66中并行地查找PA(在本文中被稱作經壓縮PA(CPA)144),以最小化等待時間。L4高速緩沖存儲器142中的地址是未經壓縮的PA。在L4高速緩沖存儲器142中的PA命中后,CPA 144中的PA查找即為冗余。在L4高速緩沖存儲器142中的PA未中后,需要CPA 144中的PA查找來獲得經翻譯的經壓縮PA。

為了避免CPU 16存取L4高速緩沖存儲器142和CPA 144兩者的額外等待時間,L4高速緩沖存儲器142和CPA144可為啟發(fā)的。在這點上,圖11B說明圖11A中的SOC10(1)的實例,其啟發(fā)經壓縮存儲器控制器36中的L4高速緩沖存儲器142和CPA 144,以在共享L3高速緩沖存儲器42中確定命中或未中之前查找PA。當共享L3高速緩沖存儲器42由CPU 16存取來用于讀取操作時,可通過進行其中的PA的早期查找來啟發(fā)L4高速緩沖存儲器142和CPA144。這些查找的結果可存儲在與L4高速緩沖存儲器142相關聯(lián)的歷史緩沖器146和與CPA144相關聯(lián)的CPA歷史緩沖器148中。作為一實例,歷史緩沖器146和/或CPA歷史緩沖器148可從具有小等待時間的寄存器建構。在CPA144中的未中后,任選的預取可由經壓縮存儲器控制器36在主目錄66中執(zhí)行。CPA 144的啟發(fā)可提供改進的CPA144讀取命中率。當共享L3高速緩沖存儲器42中發(fā)生未中時,檢查歷史緩沖器146,以確定L4高速緩沖存儲器142中是否出現(xiàn)命中。如果L4高速緩沖存儲器142中發(fā)生命中,那么傳回來自L4高速緩沖存儲器142的數據。如果L4高速緩沖存儲器142中出現(xiàn)未中,那么接著檢查CPA歷史緩沖器148。如果基于CPA歷史緩沖器144的檢查,CPA 144中發(fā)生命中,那么經壓縮PA可直接從CPA 144讀取;否則(即,L4高速緩沖存儲器142未中和CPA 144未中),主目錄66由經壓縮存儲器控制器36讀取,以為待執(zhí)行的讀取操作獲得經壓縮PA。

歸因于可由本文所揭示的經壓縮存儲器控制器36提供的存儲器容量壓縮,與物理上存在的存儲器空間相比,可使較多存儲器地址空間可供操作系統(tǒng)(OS)使用。舉例來說,可給予OS 16Gb的存儲空間,但可僅提供8Gb的物理系統(tǒng)存儲器38。隨著壓縮比變化(即,變得較差),系統(tǒng)存儲器38中的所有自由DP可減少。希望提供經壓縮存儲器控制器36能夠回收來自客戶OS的存儲器的能力。然而,可能需要遵循一些基本操作原理或規(guī)則。舉例來說,可需要第一示范性規(guī)則來規(guī)定無法將已經指派給OS的DP從所述OS帶離。并且,另一示范性規(guī)則可為規(guī)定OS對頁的檢視維持作為完整的非翻譯地址(例如VA為VA,PA為PA)。換句話說,由經壓縮存儲器控制器36執(zhí)行的壓縮以及可導致系統(tǒng)存儲器38中的DP的基礎存儲器分段從OS隱藏,且完全由經壓縮存儲器控制器36的硬件處置。另外,作為另一示范性規(guī)則,OS所進行的寫入必須始終成功,意味著即使在系統(tǒng)存儲器38小于VA空間時,OS的全PA空間也必須可寫。

在這點上,為了允許OS符合這些規(guī)則,可將壓縮驅動器安裝到在CPU 16上執(zhí)行的每一OS中,以允許動態(tài)存儲器大小設計。壓縮驅動器是對OS的擴展,且并不影響OS的存儲器管理方案。當系統(tǒng)存儲器38在自由經壓縮PB上逐漸減少時,這增加了從OS請求頁的氣球驅動器上的壓力。這些壓縮驅動器從OS請求更多存儲器。當壓縮驅動器獲得更多存儲器時,它們釘住(pin)所述頁,意味著無法將所述頁換出到磁盤,且因此VA到PA翻譯映射必須由OS保存。壓縮驅動器接著將高度可壓縮的模式寫入到存儲器。因此,不需要管理程序或翻譯支持。上文所論述的DP管理方案可用以將DP再分配給所需的自由DP??杀3帧熬o急”氣球,以便吸收突發(fā)。

圖12是示范性動態(tài)存儲器大小設計的示意圖。舉例來說,提供主機OS 150,其可在圖1中的SOC 10中的CPU 16上運行。主機OS 150支持一或多個客戶OS 152(1)到152(T)。主機OS 150將到系統(tǒng)存儲器38的接口提供給客戶OS 152(1)到152(T)。在圖12中的實例中,系統(tǒng)存儲器38可為32GB可尋址的,其可分配給主機OS 150,但大小為16GB,使用預期2倍壓縮比。在主機OS 150中作為管理程序運行的存儲器控制器驅動器154通過設置緩沖器池、客戶OS 152(1)到152(T)屬性、服務質量(QOS)要求、所分配的存儲器(PA)的大小以及存儲器故障來初始化硬件。

繼續(xù)參看圖12,數據壓縮驅動器(DCD)156(1)到156(T)安裝在每一客戶OS 152(1)到152(T)上。當經壓縮存儲器控制器36在系統(tǒng)存儲器38中的自由經壓縮存儲緩沖器上低運行時,經壓縮存儲器控制器36以壓力數據158的形式向客戶OS 152(1)到152(T)提供指示,這增加了數據壓縮驅動器156(1)到156(T)上的壓力。經壓縮存儲器控制器36監(jiān)視自由緩沖器狀態(tài),并將壓力數據158提供給每一客戶OS 152(1)到152(T)。這可為為指派給每一數據壓縮驅動器156(1)到156(T)的存儲器映射的寄存器。當經壓縮存儲器控制器36檢測到自由緩沖器池正在系統(tǒng)存儲器38中耗盡時,經壓縮存儲器控制器36可依據屬性增加到每一客戶OS 152(1)到152(T)的壓力寄存器值。

作為響應,客戶OS 152(1)到152(T)中的數據壓縮驅動器156(1)到156(T)從主機150請求更多的存儲器,其斷言主機OS 150上從使用系統(tǒng)存儲器38的其它來源到自由存儲器的壓力。舉例來說,主機OS 150可使用頁高速緩存和進程堆來釋放存儲器。舉例來說,數據壓縮驅動器156(1)到156(T)可經配置以在與壓力寄存器值成比例的層級,從其相應的客戶OS 152(1)到152(T)請求頁??蛻鬙S 152(1)到152(T)可提供頁,且如果需要,將頁從其它池,例如頁高速緩沖存儲器釋放??蛻鬙S 152(1)到152(T)還可將用過的頁從所述堆頁出,等等。

當數據壓縮驅動器156(1)到156(T)從系統(tǒng)存儲器38獲得較多存儲器時,它們釘住所述存儲器,且接著可將可高度壓縮的模式寫入到系統(tǒng)存儲器38。在這點上,數據壓縮驅動器156(1)到156(T)可將零(0)寫入到頁,且經壓縮存儲器控制器36可將下面的緩沖器有效地釋放回到自由池。因此,不需要管理程序或翻譯支持。上文所論述的DP管理方案可用以將DP再分配給所需的自由DP??杀3帧熬o急”氣球,以便吸收突發(fā)。

如上文所論述,經壓縮存儲器控制器36還可使用存儲器帶寬壓縮方案。舉例來說,可希望壓縮存儲器總線,例如內部系統(tǒng)總線22上的128字節(jié)數據塊,以減少內部系統(tǒng)總線22上的帶寬。減少帶寬還可減少總線等待時間并降低電力消耗。CPU 16和/或CPU16中提供的硬件線程的數目可能夠增加,并且不影響CPU 16性能。或者,可提供減少用于給定總線帶寬的存儲器信道的數目的選項。

在這點上,圖13是可由圖3中的經壓縮存儲器控制器36實施以提供存儲器帶寬壓縮的示范性存儲器帶寬壓縮方案160的示意圖。在存儲器容量壓縮方案的此實例中,以經壓縮或未經壓縮形式,將數據存儲在系統(tǒng)存儲器38中的PA位置處。在這點上,提供由多個數據線162組成的系統(tǒng)存儲器38。數據線162由經壓縮存儲器控制器36通過接收到的PA存取。ECC壓縮指示符166以與每一數據線162的關聯(lián)存儲,以指示數據線162是否以經壓縮形式存儲。以此方式,當執(zhí)行對系統(tǒng)存儲器38的存儲器存取請求時,經壓縮存儲器控制器36可檢查與對應于待尋址的PA的數據線162相關聯(lián)的ECC壓縮指示符166,以確定是否壓縮數據線162,作為存儲器存取請求的處理的一部分。

還仍提供主目錄66,其在對應于PA的系統(tǒng)存儲器38中,每數據線162含有一個條目165。主目錄66還每條目165含有一(1)個壓縮指示符166,以表示數據線162是否經壓縮存儲在數據線162中,且如果是,那么還含有壓縮長度,如果支持多個壓縮長度。舉例來說,如果數據線162的長度是128個字節(jié),且存儲在其中的數據可壓縮到64個字節(jié)或更少,那么主目錄66中對應于存儲在系統(tǒng)存儲器38中的數據的壓縮指示符166可設定成指示數據存儲在128字節(jié)數據線162的第一64個字節(jié)中。

繼續(xù)參看圖13,在寫入操作期間,經壓縮存儲器控制器36可壓縮待寫入到系統(tǒng)存儲器38中的存儲器塊。舉例來說,壓縮數據(例如128個字節(jié),或256個字節(jié))。如果數據塊小于或等于系統(tǒng)存儲器38的突發(fā)大小(例如64個字節(jié)),那么可寫入64個字節(jié),否則寫入128個字節(jié)。可將256個字節(jié)寫入為64、128、192、或256個字節(jié),取決于經壓縮數據大小。與系統(tǒng)存儲器38中的數據線162相關聯(lián)的ECC壓縮指示符166還可設定成表示數據線162處的數據是否經壓縮。

在讀取操作實例期間,經壓縮存儲器控制器36可讀取將從系統(tǒng)存儲器38存取的數據的一部分。如果待讀取的數據在系統(tǒng)存儲器38中壓縮,如由ECC壓縮指示符166指示,那么進行讀取操作,因為所讀取的數據的所述部分是整個數據塊,但是以經壓縮形式。經壓縮數據可以經壓縮形式經由內部系統(tǒng)總線22(圖2)由經壓縮存儲器控制器36提供,以實現(xiàn)帶寬壓縮。如果所讀取的數據的所述部分在系統(tǒng)存儲器38中未經壓縮,那么這具有等待時間影響,因為待讀取的存儲器線的額外部分必須也從系統(tǒng)存儲器38讀取??蔀槿舾傻刂贩秶渴鹩柧殭C制,其中系統(tǒng)“學習”在兩次存取中從系統(tǒng)存儲器38讀取數據是否更好,或從系統(tǒng)存儲器38讀取全量數據以避免等待時間影響是否更好。

在此實例中,還可提供含有高速緩存條目170的壓縮指示符(CI)高速緩沖存儲器168。在系統(tǒng)存儲器38外部的單獨高速緩沖存儲器中提供CI高速緩沖存儲器168。CI高速緩沖存儲器168是在系統(tǒng)存儲器38中每數據線162含有一個高速緩存條目170以表示系統(tǒng)存儲器38中的數據線162是否以經壓縮形式存儲的高速緩沖存儲器。以此方式,當執(zhí)行對系統(tǒng)存儲器38的存儲器存取請求時,經壓縮存儲器控制器36可首先檢查CI高速緩沖存儲器168中對應于待尋址的PA的高速緩存條目170,以確定是否壓縮系統(tǒng)存儲器38中的PA處的數據線162,作為存儲器存取請求的處理的一部分,而不必讀取數據線162。因此,如果CI高速緩沖存儲器168指示數據線162是經壓縮存儲的,那么經壓縮存儲器控制器36不必讀出整個數據線162,因此減少等待時間。如果CI高速緩沖存儲器168指示數據線162是未經壓縮存儲的,那么經壓縮存儲器控制器36可讀出整個數據線162。如果CI高速緩沖存儲器168中發(fā)生未中,那么可查詢主目錄66中對應于所存取的數據線162的對應ECC經壓縮指示符166,并將其加載到CI高速緩沖存儲器168中,以用于后續(xù)對同一PA的存儲器存取請求。

舉例來說,CI高速緩沖存儲器168可組織為常規(guī)高速緩沖存儲器。CI高速緩沖存儲器168可含有標記陣列,且可組織成n向或其它向。CI高速緩沖存儲器168將具有收回策略,其可由經壓縮存儲器控制器36實施。CI高速緩沖存儲器168中的每一存儲器線高速緩存線172可存儲多個高速緩存條目170。每一高速緩存條目170含有一個壓縮指示符174,以指示系統(tǒng)存儲器38中與高速緩存條目170相關聯(lián)的數據線162是否經壓縮,和/或表示對應于高速緩存條目170的數據的壓縮大小的選項(例如如果可將數據壓縮到32、64、96或128個字節(jié),則用于四(4)個選項的兩(2)個高速緩沖存儲器指示符)。注意,在此實例中,ECC壓縮指示符166是冗余的,因為此信息也存儲在高速緩存條目170中的壓縮指示符174中。舉例來說,如果數據線162的長度是128個字節(jié),且存儲在其中的數據可壓縮到64個字節(jié)或更少,則CI高速緩沖存儲器168中對應于系統(tǒng)存儲器38中的數據線162的高速緩存條目170中的壓縮指示符174可設定成指示所述數據存儲在128字節(jié)數據線162的第一64個字節(jié)中。

在當使用CI高速緩沖存儲器168時的讀取操作的另一實例中,經壓縮存儲器控制器36維持CI高速緩沖存儲器168,其針對數據線162中的若干128字節(jié)存儲器塊,記得所述數據塊是否經壓縮(例如每128字節(jié)塊1個位,或每256字節(jié)塊2個位)??擅?K頁尋址CI高速緩沖存儲器168:在此實例中,一個頁地址,以及用于旗標的32位條目。對于讀取操作,檢查CI高速緩沖存儲器168,看待存取的地址是否包含于CI高速緩沖存儲器168中。如果所請求的數據在CI高速緩沖存儲器168中,則經壓縮存儲器控制器36可根據CI高速緩沖存儲器168中的高速緩存條目170,從系統(tǒng)存儲器38讀取所述量的數據。如果所請求的數據不在CI高速緩沖存儲器168中,則存在兩個示范性選項。假定是最差情況,經壓縮存儲器控制器36可讀取全高速緩存條目170大小(例如128個字節(jié))?;蛘?,經壓縮存儲器控制器36可根據上文所論述雙存取讀取過程來讀取。還可使用學習擴展。如果待讀取的數據不在CI高速緩沖存儲器168中,可如下更新CI高速緩沖存儲器168??筛鶕阎夹g(例如LRU、偽LRU等)從CI高速緩沖存儲器168收回高速緩存條目170。注意,無需將收回的高速緩存條目170寫入到存儲器,可僅將其從CI高速緩沖存儲器168去除??蓜?chuàng)建新的高速緩存條目170,其中將所有的高速緩存條目170設定成最大讀取大小,但剛剛從系統(tǒng)存儲器38讀取的框除外,其設定成其實際大小。作為最佳化方案,如果從系統(tǒng)存儲器38讀取的塊未經壓縮(即,其最大大小),可跳過此收回。

繼續(xù)參看圖13,在提供CI高速緩沖存儲器168的情況下,寫入到系統(tǒng)存儲器38中的數據線162后,經壓縮存儲器控制器36可經配置以始終寫入經壓縮大小,其中ECC壓縮指示符166表示高速緩存條目170在系統(tǒng)存儲器38中是否經壓縮。如果壓縮指示符174存在于CI高速緩沖存儲器168中與數據線162相關聯(lián)的高速緩存條目170中,那么在CI高速緩沖存儲器168中更新壓縮指示符174。如果針對與數據線162相關聯(lián)的高速緩存條目170,壓縮指示符174不存在于CI高速緩沖存儲器168中,那么可更新CI高速緩沖存儲器168。如果經壓縮長度大于頻段大小(例如64B),那么更新CI高速緩沖存儲器168。收回一個高速緩存條目170,且新存儲器線高速緩存線172安裝有來自主目錄66的CI高速緩沖存儲器168。在CI高速緩沖存儲器168中更新用于對應數據線162的壓縮指示符174。如果經壓縮長度小于或等于頻段大小,那么不必更新CI高速緩沖存儲器168,盡管可更新所述CI高速緩沖存儲器168。舉例來說,可以某一概率(其可配置為100%,即始終)更新CI高速緩沖存儲器168。如果將此概率設定成100%,那么主目錄66在一些情況下可始終準確。否則,主目錄66將表示大于實際經壓縮線長度的經壓縮線長度。這是更新主目錄66時的帶寬與存儲器讀出期間的帶寬節(jié)省之間的折衷。

繼續(xù)參看圖13,在從系統(tǒng)存儲器38讀取后,如果ECC壓縮指示符166存在于用于所存取數據線162的CI高速緩沖存儲器168中的高速緩存條目170中,那么這意味著用于此數據線162的經壓縮大小信息是已知的。在這點上,從CI高速緩沖存儲器168存取存儲器線高速緩存線172,以確定讀取大小,且可從對應數據線162讀取所述量的數據。如果壓縮指示符174不存在于CI高速緩沖存儲器168中的所存取存儲器線高速緩存線172中,那么經壓縮存儲器控制器36從系統(tǒng)存儲器38讀取全線大小,并使用ECC壓縮指示符166來確定所述數據是否經壓縮。同時,經壓縮存儲器控制器36可以可配置概率(例如10%)從主目錄66刷新CI高速緩沖存儲器168。

或者,經壓縮存儲器控制器36可經配置以不使用系統(tǒng)存儲器38中的ECC壓縮指示符166。在此實例中,主目錄66將始終反映線在系統(tǒng)存儲器38中是否經壓縮。在與系統(tǒng)存儲器38的寫入事務后,經壓縮數據將即刻始終由經壓縮存儲器控制器36寫入。經壓縮存儲器控制器36將始終更新CI高速緩沖存儲器168中壓縮指示符174,其導致收回以及存取主目錄66,如果需要的話。在與系統(tǒng)存儲器38的讀取事務后,經壓縮存儲器控制器36經配置以始終首先從CI高速緩沖存儲器168中的壓縮指示符174讀取,且如果不存在,那么存儲器線高速緩存線172將從CI高速緩沖存儲器168收回,且將存取CI高速緩沖存儲器168。接著,基于ECC壓縮指示符166中指定的長度,從系統(tǒng)存儲器38讀取線。

在讀取操作的另一實例中,經壓縮存儲器控制器36可維持CI高速緩沖存儲器168,其針對若干128字節(jié)存儲器塊,記得塊是否經壓縮(例如每128字節(jié)塊1個位,或每256字節(jié)塊2個位)。可每4K頁尋址CI高速緩沖存儲器168:一個頁地址,以及用于旗標的32位條目。對于讀取操作,檢查CI高速緩沖存儲器168,看待存取的地址是否包含于CI高速緩沖存儲器168中。如果所請求的數據在CI高速緩沖存儲器168中,那么經壓縮存儲器控制器36可根據CI高速緩沖存儲器168中的高速緩存條目170,從系統(tǒng)存儲器38讀取所述量的數據。如果所請求的數據不在CI高速緩沖存儲器168中,那么存在兩個示范性選項。假定最差情況情形,經壓縮存儲器控制器36可讀取全高速緩存條目170大小(例如128個字節(jié))?;蛘撸泬嚎s存儲器控制器36可根據上文所論述雙存取讀取過程來讀取。還可使用學習擴展。如果待讀取的數據不在CI高速緩沖存儲器168中,那么可如下更新CI高速緩沖存儲器168??筛鶕阎夹g(例如LRU、偽LRU等)從CI高速緩沖存儲器168收回高速緩存條目170。注意,無需將收回的高速緩存條目170寫入到存儲器,可僅將其從CI高速緩沖存儲器168去除??蓜?chuàng)建新的高速緩存條目170,其中將所有的高速緩存條目170設定成最大讀取大小,不同之處在于僅從系統(tǒng)存儲器38讀取的框,其設定成其實際大小。作為最佳化,如果從系統(tǒng)存儲器38讀取的塊未經壓縮(即,其最大大小),那么可跳過此收回。

繼續(xù)參看圖13,在對系統(tǒng)存儲器38的寫入后,經壓縮存儲器控制器36可經配置以始終寫入經壓縮大小,其中ECC壓縮指示符166表示高速緩存條目170在系統(tǒng)存儲器38中是否經壓縮。如果壓縮指示符174存在于用于高速緩存條目170的CI高速緩沖存儲器168中,那么在CI高速緩沖存儲器168中更新壓縮指示符174。如果壓縮指示符174不存在于CI高速緩沖存儲器168中,那么可更新CI高速緩沖存儲器168。如果經壓縮長度大于頻段大小(例如64B),那么更新CI高速緩沖存儲器168。收回一個高速緩存條目170,且新存儲器線高速緩存線172安裝有主目錄66。在CI高速緩沖存儲器168中更新用于對應數據線162的壓縮指示符174。如果經壓縮長度小于或等于頻段大小,那么不必更新CI高速緩沖存儲器168,盡管可更新所述CI高速緩沖存儲器168。舉例來說,可以某一概率(其可配置為100%,即始終)更新CI高速緩沖存儲器168。如果將此概率設定成100%,那么主目錄66在一些情況下可始終準確。否則,主目錄66將表示大于實際經壓縮線長度的經壓縮線長度。這是更新主目錄66時的帶寬與存儲器讀出期間的帶寬節(jié)省之間的折衷。

繼續(xù)參看圖13,在從系統(tǒng)存儲器38讀取后,如果ECC壓縮指示符166存在于用于所存取數據線162的CI高速緩沖存儲器168中,那么這意味著用于此數據線162的經壓縮大小信息是已知的。在這點上,從CI高速緩沖存儲器168存取存儲器線高速緩存線172,以確定讀取大小,且可從對應數據線162讀取所述量的數據。如果壓縮指示符174不存在于CI高速緩沖存儲器168中的所存取存儲器線高速緩存線172中,那么經壓縮存儲器控制器36從系統(tǒng)存儲器38讀取全線大小,并使用ECC壓縮指示符166來確定所述數據是否經壓縮。同時,經壓縮存儲器控制器36可以可配置概率(例如10%)從主目錄66刷新CI高速緩沖存儲器168。

或者,經壓縮存儲器控制器36可經配置以不使用系統(tǒng)存儲器38中的ECC壓縮指示符166。在此實例中,主目錄66將始終反映線在系統(tǒng)存儲器38中是否經壓縮。在與系統(tǒng)存儲器38的寫入事務后,經壓縮數據將即刻始終由經壓縮存儲器控制器36寫入。經壓縮存儲器控制器36將始終更新CI高速緩沖存儲器168中壓縮指示符174,其導致收回以及存取主目錄66,如果需要的話。在與系統(tǒng)存儲器38的讀取事務后,經壓縮存儲器控制器36經配置以始終首先從CI高速緩沖存儲器168中的壓縮指示符174讀取,且如果不存在,那么存儲器線高速緩存線172將從CI高速緩沖存儲器168收回,且將存取主目錄66。接著,基于ECC壓縮指示符166中指定的長度,從系統(tǒng)存儲器38讀取線。

還可希望為存儲器帶寬壓縮方案提供額外高速緩沖存儲器。在這點上,圖14說明類似于圖2中的SOC 10'的替代SOC 10(2)的實例,但圖14中的SOC 10(2)另外包含任選的高速緩沖存儲器142,其在此實例中為L4高速緩沖存儲器。經壓縮存儲器控制器36可同時在L4高速緩沖存儲器142和CI高速緩沖存儲器168兩者中查找PA,以最小化等待時間。L4高速緩沖存儲器142中的地址是未經壓縮的PA。在L4高速緩沖存儲器142中的PA命中后,CI高速緩沖存儲器168中的PA查找即為冗余。在L4高速緩沖存儲器142中的PA未中后,需要CI高速緩沖存儲器168中的PA查找來從系統(tǒng)存儲器38獲得數據。并且,為了避免CPU 16存取L4高速緩沖存儲器142和CI高速緩沖存儲器168兩者的額外等待時間,可啟發(fā)L4高速緩沖存儲器142和CI高速緩沖存儲器168,類似于上述關于圖11B所述的啟發(fā)。

如上文所論述,可希望提供全部為0的存儲器數據塊的壓縮,作為最佳壓縮到特殊情況。舉例來說,如果存儲器數據塊(例如128個字節(jié))全部為0,那么不讀取或寫入數據,而是在單獨數據結構中表示為全部為0??稍谙到y(tǒng)存儲器38中提供零位,以表示存儲器線是否經壓縮,因此每存儲器數據塊添加一(1)個位。經壓縮存儲器控制器36可維持高速緩沖存儲器,其例如針對若干128字節(jié)存儲器塊,記得塊是否全為0。對于寫入操作,如果存儲器數據塊的線全為0,那么經壓縮存儲器控制器36并不將所述線寫入到系統(tǒng)存儲器38,但更新CI高速緩沖存儲器168。對于讀取操作,為所述線檢查CI高速緩沖存儲器168中的零位。如果所述線在CI高速緩沖存儲器168中,那么取決于所述零位,從系統(tǒng)存儲器38讀取所述線,或傳回全0。如果所述線不在CI高速緩沖存儲器168中,那么其從系統(tǒng)存儲器38讀取。如果所述線為零,那么可更新CI高速緩沖存儲器168??筛鶕阎夹g(例如LRU、偽LRU等)更新CI高速緩沖存儲器168,以收回TLB條目74。如果收回線,那么需要將具有其零位集合的所有線寫入到主存儲器。這可組織為寫入全零隊列??赡艿淖罴鸦瘜槭褂脙?2)個位,其中一個位表示所述線是否為全零,且另一位表示所述線是否為重寫狀態(tài)(即,尚未寫入到主存儲器)。經壓縮存儲器控制器36的背景任務可檢查CI高速緩沖存儲器168,并將具有“寫入全零”隊列中的重寫狀態(tài)位的線排隊。對于上文所述的存儲器容量壓縮方案,經壓縮存儲器控制器36可按照需要使用不同的存儲器壓縮方案。舉例來說,可希望使用針對小數據塊(例如64、128和256個字節(jié))優(yōu)化的存儲器壓縮方案,因為上文的實例中所描述的高速緩沖存儲器行包含這些大小作為實例。

在這點上,圖15說明頻繁模式壓縮數據壓縮方案180。在這點上,待壓縮的源數據格式182中的源數據例如示出為128個字節(jié)。下文示出經壓縮數據格式184。以前綴碼Px以及所述前綴后面作為Datax的數據的格式提供經壓縮數據格式184。所述前綴為3位。所述前綴碼在頻繁模式編碼表188中的前綴碼列186中示出,所述頻繁模式編碼表示出編碼在用于前綴碼列186中的給定前綴碼的模式經編碼列190中的模式。經編碼的模式的數據大小提供于頻繁模式編碼表188的數據大小列192中。

圖16說明32位頻繁模式壓縮數據壓縮方案194。在這點上,待壓縮的源數據格式196中的源數據例如示出為128個字節(jié)。下文示出經壓縮數據格式198。以前綴碼Px以及緊接在所述前綴后面作為Datax的數據的格式提供經壓縮數據格式198。以不同格式的前綴碼Px、數據Datax、旗標和模式來提供新經壓縮數據格式200,其經組織以出于效率目的而分組在一起。所述前綴碼為3位。所述前綴碼在頻率模式編碼表204中的前綴碼列202中示出,其示出編碼在用于前綴碼列202中的給定前綴碼的模式經編碼列206中的模式。經編碼的模式的數據大小提供于頻率模式編碼表204的數據大小列208中。前綴碼000表示未經壓縮模式,其將為呈新的經壓縮數據格式200的32位的全大小的數據。前綴碼001表示全零數據塊,其可提供作為新的經壓縮數據格式200的數據中的0位。對于3位前綴,可使用前綴碼010到111來編碼在源數據中辨識的其它特定模式,其在此實例中分別為0、4、8、12、16和24位中的模式。

圖17說明32位頻繁模式壓縮數據壓縮方案210。在這點上,待壓縮的源數據格式212中的源數據例如示出為128個字節(jié)。下文示出經壓縮數據格式214。以前綴Px以及所述前綴后面作為Datax的數據的格式提供經壓縮數據格式214。以不同格式的前綴碼Px、數據Datax、旗標和模式來提供新經壓縮數據格式216,其經組織以出于效率目的而分組在一起。所述前綴碼為3位。所述前綴碼在頻率模式編碼表220中的前綴碼列218中示出,其示出編碼在用于前綴碼列218中的給定前綴碼的模式經編碼列222中的模式。經編碼的模式的數據大小提供于頻率模式編碼表220的數據大小列224中。前綴碼000表示未經壓縮模式,其將為呈新的經壓縮數據格式216的32位的全大小的數據。前綴碼001表示全零數據塊,其可提供作為新的經壓縮數據格式216的數據中的0位。前綴碼010表示模式0xFFFFFFFF,其為特定模式,且因此根據新的經壓縮數據格式216,在經壓縮數據中需要0位數據大小。用于前綴碼011到111的頻率模式編碼表220中示出其它模式。新的經壓縮數據格式216中的旗標字段指示用于前綴碼001到111的哪些模式存在于經壓縮數據的數據部分(即,Datax)中。如果所述模式存在于經壓縮數據中,那么將所述模式存儲在新的經壓縮數據格式216中,接著可查詢所述經壓縮數據格式,來重新創(chuàng)建未經壓縮的數據。所述數據字段包含根據與新的經壓縮數據格式216中的數據字段相關聯(lián)的前綴碼的經壓縮數據。

圖18說明64位頻繁模式壓縮數據壓縮方案226的另一實例。在這點上,待壓縮的源數據格式228中的源數據例如示出為128個字節(jié)。以不同格式的前綴碼Px、數據Datax、旗標和模式來提供新經壓縮數據格式230,其經組織以出于效率目的而分組在一起。所述前綴碼為4位。在頻率模式編碼表236中的前綴碼列232、234中示出前綴碼,所述頻率模式編碼表示出編碼在用于前綴碼列232、234中的給定前綴碼的模式經編碼列238、240中的模式。經編碼的模式的數據大小提供于頻率模式編碼表236的數據大小列242、244中。前綴碼0000表示全零數據塊,其可提供作為新的經壓縮數據格式230的數據中的0位。用于前綴碼0001到1111的頻率模式編碼表236中示出其它模式,其包含用于頻繁發(fā)生ASCII模式的ASCII模式。新的經壓縮數據格式230中的旗標字段指示用于前綴碼0001到1111的哪些模式存在于經壓縮數據的數據部分(即,Datax)中。如果所述模式存在于經壓縮數據中,那么將所述模式存儲在新的經壓縮數據格式230中,接著可查詢所述經壓縮數據格式,來重新創(chuàng)建未經壓縮的數據。所述數據字段包含根據與新的經壓縮數據格式230中的數據字段相關聯(lián)的前綴碼的經壓縮數據。

圖19說明64位頻繁模式壓縮數據壓縮方案246的另一實例。在這點上,待經壓縮的源數據格式248中的源數據例如示出為128個字節(jié)。以不同格式的前綴碼Px、數據Datax、旗標和模式來提供新經壓縮數據格式250,其經組織以出于效率目的而分組在一起。所述前綴碼為4位。在頻率模式編碼表256中的前綴碼列252、254中示出前綴碼,所述頻率模式編碼表示出編碼在用于前綴碼列252、254中的給定前綴碼的模式經編碼列258、260中的模式。經編碼的模式的數據大小提供于頻率模式編碼表256的數據大小列262、264中。前綴碼0000表示全零數據塊,其可提供作為新的經壓縮數據格式250的數據中的0位。用于前綴碼0001到1111的頻率模式編碼表256中示出其它模式,其可包含固定模式的組合。新的經壓縮數據格式250中的旗標字段指示用于前綴碼0001到1111的哪些模式存在于經壓縮數據的數據部分(即,Datax)中。如果所述模式存在于經壓縮數據中,那么所述模式以新的經壓縮數據格式250存儲,接著可在數據壓縮期間查詢所述模式,以重新創(chuàng)建未經壓縮的數據。前綴碼P0到P31可鏈接到模式,其連同對應數據(Datax)使用,來以未經壓縮格式重新創(chuàng)建全長數據。所述數據字段包含根據與新的經壓縮數據格式250中的數據字段相關聯(lián)的前綴碼的經壓縮數據。

圖20中的表266中示出可結合圖19中的頻繁模式壓縮數據壓縮方案246使用的固定模式的實例,其中所述固定模式提供于模式列268中,其長度在長度列270中,且所述模式的定義在模式定義列272中。旗標定義在旗標定義表274中示出,以允許經壓縮存儲器控制器36使鏈接到前綴碼的給定模式與用以創(chuàng)建未經壓縮數據的定義相關。旗標定義表274包含用于旗標列276中的給定旗標的位,用于給定旗標的位的值在旗標值列278中,且用于給定旗標的旗標定義在旗標定義列280中。

圖21說明64位頻繁模式壓縮數據壓縮方案282的另一實例。在這點上,待壓縮的源數據格式284中的源數據例如示出為128個字節(jié)。以不同格式的前綴碼Px、數據Datax、旗標和模式來提供新經壓縮數據格式286,其經組織以出于效率目的而分組在一起。所述前綴碼為4位。在頻率模式編碼表292中的前綴碼列288、290中示出前綴碼,所述頻率模式編碼表示出編碼在用于前綴碼列288、290中的給定前綴碼的模式經編碼列294、296中的模式。經編碼的模式的數據大小提供于頻率模式編碼表292的數據大小列298、300中。前綴碼0000表示全零數據塊,其可提供作為新的經壓縮數據格式286的數據中的0位。前綴碼1111表示不是以新的經壓縮數據格式286壓縮的數據塊。用于前綴碼0001到1110的頻率模式編碼表292中示出其它模式,其包含如本文所示的所定義模式的組合。新的經壓縮數據格式286中的旗標字段指示用于前綴碼0000到1110的哪些模式存在于經壓縮數據的數據部分(即,Datax)中。如果所述模式存在于經壓縮數據中,那么將所述模式存儲在新的經壓縮數據格式286中,接著可查詢所述經壓縮數據格式,來重新創(chuàng)建未經壓縮的數據。新的經壓縮數據格式286示出為僅含有模式0到5,因為在此實例中,這些是源數據中存在的前綴碼0000到1110中所導致的僅有模式。所述數據字段包含根據與新的經壓縮數據格式286中的數據字段相關聯(lián)的前綴碼的經壓縮數據。

所屬領域的技術人員將進一步了解,結合本文中所揭示的各方面所描述的各種說明性邏輯塊、模塊、電路和算法可被實施為電子硬件、存儲于存儲器或另一計算機可讀媒體中且由處理器或其它處理裝置執(zhí)行的指令,或此兩者的組合。本文所揭示的存儲器可為任何類型和大小的存儲器,并且可經配置以存儲期望的任何類型的信息。為了清楚地說明這種可互換性,上文已大體上關于其功能性而描述了各種說明性組件、塊、模塊、電路和步驟。如何實施此功能性取決于特定應用、設計選項和/或強加于整個系統(tǒng)的設計約束。熟練的技術人員可針對每一特定應用以不同方式實施所描述的功能性,但此類實施決策不應被解釋為引起偏離本發(fā)明的范圍。

結合本文中所揭示的方面描述的各種說明性邏輯塊、模塊和電路可用以下各項來實施或執(zhí)行:處理器、數字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)或其它可編程邏輯裝置、離散門或晶體管邏輯、離散硬件組件,或經設計以執(zhí)行本文中所描述的功能的其任何組合。處理器可以是微處理器,但在替代方案中,處理器可以是任何常規(guī)處理器、控制器、微控制器或狀態(tài)機。處理器還可實施為計算裝置的組合,例如,DSP與微處理器的組合、多個微處理器、一或多個微處理器結合DSP核心,或任何其它此類配置。

本文中所揭示的方面可以硬件和存儲于硬件中的指令來體現(xiàn),且可駐留于(例如)隨機存取存儲器(RAM)、快閃存儲器、只讀存儲器(ROM)、電可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)、寄存器、硬盤、可裝卸式磁盤、CD-ROM或此領域中已知的任何其它形式的計算機可讀媒體中。示范性存儲媒體耦合到處理器,使得處理器可從存儲媒體讀取信息并且將信息寫入到存儲媒體。在替代方案中,存儲媒體可集成到處理器。處理器和存儲媒體可駐留在ASIC中。ASIC可駐留在遠程站中。在替代方案中,處理器和存儲媒體可作為離散組件駐留在遠程臺、基站或服務器中。

還應注意,描述本文中的示范性方面中的任一者中所描述的操作步驟是為了提供實例和論述。可用除了所說明的序列之外的大量不同序列執(zhí)行所描述的操作。另外,單個操作步驟中所描述的操作實際上可在許多不同步驟中執(zhí)行。另外,可組合在示范性方面中所論述的一或多個操作步驟。將理解,如所屬領域的技術人員將容易顯而易見,流程圖中所說明的操作步驟可經受眾多不同修改。所屬領域的技術人員還將理解,可使用多種不同技術和技法中的任一者來表示信息和信號。舉例來說,可通過電壓、電流、電磁波、磁場或磁粒子、光場或光粒子或其任何組合來表示在整個上文描述中可能參考的數據、指令、命令、信息、信號、位、符號和碼片。

提供本發(fā)明的前述描述是為了使所屬領域的技術人員能夠制作或使用本發(fā)明。所屬領域的技術人員將容易明白對本發(fā)明的各種修改,且本文中界定的一般原理可應用于其它變化而不脫離本發(fā)明的精神或范圍。因此,本發(fā)明無意限于本文中所描述的實例和設計,而是將被賦予與本文中所揭示的原理和新穎特征相一致的最廣范圍。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
磴口县| 黄梅县| 鄂伦春自治旗| 尼木县| 南京市| 高州市| 赣州市| 松桃| 鄂伦春自治旗| 团风县| 厦门市| 马山县| 绍兴市| 嵊泗县| 大新县| 稻城县| 蓬安县| 谷城县| 偃师市| 宝丰县| 揭阳市| 延长县| 霞浦县| 衡东县| 南平市| 辰溪县| 葫芦岛市| 高雄县| 陆良县| 策勒县| 阜平县| 龙州县| 兴仁县| 塔城市| 鹤庆县| 赣州市| 吴忠市| 海原县| 皮山县| 铜陵市| 安达市|