本申請(qǐng)案主張2014年5月21日申請(qǐng)且標(biāo)題為“使用存儲(chǔ)器容量和/或帶寬壓縮的存儲(chǔ)器控制器,以及相關(guān)的基于處理器的系統(tǒng)和方法(MEMORY CONTROLLERS EMPLOYING MEMORY CAPACITY AND/OR BANDWIDTH COMPRESSION,AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS)”的第62/001,545號(hào)美國(guó)臨時(shí)專利申請(qǐng)案的優(yōu)先權(quán),所述專利申請(qǐng)案以全文引用的方式并入本文中。
本申請(qǐng)案還主張2014年12月16日申請(qǐng)且標(biāo)題為“使用存儲(chǔ)器容量和/或帶寬壓縮的存儲(chǔ)器控制器,以及相關(guān)的基于處理器的系統(tǒng)和方法(MEMORY CONTROLLERS EMPLOYING MEMORY CAPACITY AND/OR BANDWIDTH COMPRESSION,AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS)”的第62/092,326號(hào)美國(guó)臨時(shí)專利申請(qǐng)案的優(yōu)先權(quán),所述專利申請(qǐng)案以全文引用的方式并入本文中。
本申請(qǐng)案還主張2014年12月16日申請(qǐng)且標(biāo)題為“結(jié)合下一讀取地址預(yù)取使用存儲(chǔ)器容量和/或帶寬壓縮的存儲(chǔ)器控制器,以及相關(guān)的基于處理器的系統(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號(hào)美國(guó)臨時(shí)專利申請(qǐng)的優(yōu)先權(quán),所述專利申請(qǐng)以全文引用的方式并入本文中。
本申請(qǐng)案還主張2015年5月19日申請(qǐng)且標(biāo)題為“使用存儲(chǔ)器容量壓縮的存儲(chǔ)器控制器,以及相關(guān)的基于處理器的系統(tǒng)和方法(MEMORY CONTROLLERS EMPLOYING MEMORY CAPACITY COMPRESSION,AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS)”的第14/716,001號(hào)美國(guó)專利申請(qǐng)案的優(yōu)先權(quán),所述專利申請(qǐng)案以全文引用的方式并入本文中。
本申請(qǐng)案還主張2015年5月20日申請(qǐng)且標(biāo)題為“在基于中央處理單元(CPU)的系統(tǒng)中使用經(jīng)壓縮存儲(chǔ)器控制器(CMC)來(lái)提供存儲(chǔ)器帶寬壓縮(PROVIDING MEMORY BANDWIDTH COMPRESSION USING COMPRESSED MEMORY CONTROLLERS (CMCs)IN A CENTRAL PROCESSING UNIT(CPU)-BASED SYSTEM)”的第14/717,552號(hào)美國(guó)專利申請(qǐng)案的優(yōu)先權(quán),所述專利申請(qǐng)案以全文引用的方式并入本文中。
技術(shù)領(lǐng)域
本發(fā)明的技術(shù)大體上涉及計(jì)算機(jī)存儲(chǔ)器系統(tǒng),且尤其涉及用于提供具有到存儲(chǔ)器的存儲(chǔ)器存取接口的中央處理單元(CPU)的計(jì)算機(jī)存儲(chǔ)器系統(tǒng)中的存儲(chǔ)器控制器。
背景技術(shù):
微處理器在廣泛多種應(yīng)用程序中執(zhí)行計(jì)算任務(wù)。典型的微處理器應(yīng)用程序包含一或多個(gè)中央處理單元(CPU),其執(zhí)行軟件指令。所述軟件指令可指令CPU從存儲(chǔ)器中的位置取數(shù)據(jù),使用取到的數(shù)據(jù)來(lái)執(zhí)行一或多個(gè)CPU操作,并產(chǎn)生結(jié)果。所述結(jié)果接著可存儲(chǔ)在存儲(chǔ)器中。作為非限制性實(shí)例,此存儲(chǔ)器可為在CPU本地的高速緩沖存儲(chǔ)器、在CPU塊中的CPU之間的共享本地高速緩沖存儲(chǔ)器,在多個(gè)CPU塊之間的共享高速緩沖存儲(chǔ)器,或微處理器的主存儲(chǔ)器。
就此來(lái)說(shuō),圖1是包含基于CPU的系統(tǒng)12的示例性芯片上系統(tǒng)(SoC)10的示意圖。在此實(shí)例中,基于CPU的系統(tǒng)12包含多個(gè)CPU塊14(1)到14(N),其中“N”等于所要的任何數(shù)目的CPU塊14。在圖1的實(shí)例中,CPU塊14(1)到14(N)中的每一者含有兩個(gè)CPU 16(1)、16(2)。CPU塊14(1)到14(N)進(jìn)一步分別含有共享等級(jí)2(L2)高速緩沖存儲(chǔ)18(1)到18(N)。還提供共享等級(jí)3(L3)高速緩沖存儲(chǔ)器20,用于存儲(chǔ)由CPU塊14(1)到14(N)中的任一者使用或在其之間共享的高速緩存的數(shù)據(jù)。提供內(nèi)部系統(tǒng)總線22,來(lái)使CPU塊14(1)到14(N)中的每一者能夠存取共享的L3高速緩沖存儲(chǔ)器20以及其它共享資源。CPU塊14(1)到14(N)通過(guò)內(nèi)部系統(tǒng)總線22存取的其它共享資源可包含存儲(chǔ)器控制器24,其用于存取主要外部存儲(chǔ)器(例如雙速率動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)(DDR),作為非限制性實(shí)例)、外圍裝置26、其它存儲(chǔ)裝置28、快速外圍組件互連(PCI)(PCI-e)接口30、直接存儲(chǔ)器存取(DMA)控制器32,和/或集成存儲(chǔ)器控制器(IMC)34。
隨著在圖1中的基于CPU的系統(tǒng)12中執(zhí)行的基于CPU的應(yīng)用程序的復(fù)雜性和性能增加,共享L2高速緩沖存儲(chǔ)器18(1)到18(N)和共享L3高速緩沖存儲(chǔ)器20,以及可通過(guò)所述存儲(chǔ)器控制器24存取的外部存儲(chǔ)器的存儲(chǔ)器容量要求也可增加??墒褂脭?shù)據(jù)壓縮來(lái)增加基于CPU的系統(tǒng)12的有效存儲(chǔ)器容量,而不增加物理存儲(chǔ)器容量。然而,數(shù)據(jù)壓縮的使用可增加存儲(chǔ)器存取等待時(shí)間且消耗額外的存儲(chǔ)器帶寬,因?yàn)榭尚枰鄠€(gè)存儲(chǔ)器存取請(qǐng)求來(lái)檢索數(shù)據(jù),取決于數(shù)據(jù)是經(jīng)壓縮的還是未經(jīng)壓縮的。因此,期望使用數(shù)據(jù)壓縮來(lái)增加基于CPU的系統(tǒng)12的存儲(chǔ)器容量,同時(shí)減輕對(duì)存儲(chǔ)器存取等待時(shí)間和存儲(chǔ)器帶寬的影響。
技術(shù)實(shí)現(xiàn)要素:
本文所揭示的方面包含在基于中央處理單元(CPU)的系統(tǒng)中使用經(jīng)壓縮存儲(chǔ)器控制器(CMC)來(lái)提供存儲(chǔ)器帶寬壓縮。在這點(diǎn)上,在一些方面,CMC經(jīng)配置以提供針對(duì)存儲(chǔ)器讀取請(qǐng)求和/或存儲(chǔ)器寫(xiě)入請(qǐng)求的存儲(chǔ)器帶寬壓縮。根據(jù)一些方面,在接收到對(duì)系統(tǒng)存儲(chǔ)器中的物理地址的存儲(chǔ)器讀取請(qǐng)求后,CMC可即刻從主目錄和/或從與所述系統(tǒng)存儲(chǔ)器中的物理地址相關(guān)聯(lián)的錯(cuò)誤校正碼(ECC)位讀取用于所述物理地址的壓縮指示符(CI)。在一些方面中,CI可向CMC提供壓縮模式(例如指示數(shù)據(jù)是經(jīng)壓縮的還是未經(jīng)壓縮的,和/或指示其中經(jīng)壓縮數(shù)據(jù)存儲(chǔ)在所述物理地址處的存儲(chǔ)器塊的數(shù)目)?;谒鯟I,CMC確定將為所述存儲(chǔ)器讀取請(qǐng)求讀取的存儲(chǔ)器塊的數(shù)目,且讀取在所述物理地址處開(kāi)頭的所述所確定數(shù)目的存儲(chǔ)器塊。在一些方面,在接收到對(duì)所述系統(tǒng)存儲(chǔ)器中的物理地址的存儲(chǔ)器寫(xiě)入請(qǐng)求后,CMC可即刻為將寫(xiě)入的寫(xiě)入數(shù)據(jù)確定壓縮模式,且可基于所述壓縮模式產(chǎn)生用于所述寫(xiě)入數(shù)據(jù)的CI。CMC接著可更新主目錄和/或與所述物理地址相關(guān)聯(lián)的ECC位,且基于所產(chǎn)生的CI將寫(xiě)入數(shù)據(jù)寫(xiě)入到系統(tǒng)存儲(chǔ)器。CMC的一些方面可進(jìn)一步提供用于高速緩存先前讀取的CI的CI高速緩沖存儲(chǔ)器。以此方式,CMC可更高效地讀取和寫(xiě)入經(jīng)壓縮和未經(jīng)壓縮的數(shù)據(jù),從而產(chǎn)生減少的存儲(chǔ)器存取等待時(shí)間和改進(jìn)的系統(tǒng)性能。
在另一方面,提供CMC。CMC包括存儲(chǔ)器接口,其經(jīng)配置以經(jīng)由系統(tǒng)總線存取系統(tǒng)存儲(chǔ)器。CMC經(jīng)配置以接收存儲(chǔ)器讀取請(qǐng)求,其包括將在系統(tǒng)存儲(chǔ)器中的存儲(chǔ)器線內(nèi)存取的存儲(chǔ)器塊的物理地址。CMC進(jìn)一步經(jīng)配置以從所述系統(tǒng)存儲(chǔ)器中的主目錄讀取含有對(duì)應(yīng)于所述物理地址的CI的主目錄存儲(chǔ)器塊。CMC還經(jīng)配置以基于所述CI確定系統(tǒng)存儲(chǔ)器中的所述存儲(chǔ)器線內(nèi)的存儲(chǔ)器塊的數(shù)目,來(lái)為所述存儲(chǔ)器讀取請(qǐng)求讀取。CMC另外經(jīng)配置以在所述物理地址處開(kāi)始讀取系統(tǒng)存儲(chǔ)器中的所述存儲(chǔ)器線內(nèi)的所述所確定數(shù)目的存儲(chǔ)器塊。
在另一方面,提供CMC。CMC包括存儲(chǔ)器接口,其經(jīng)配置以經(jīng)由系統(tǒng)總線存取系統(tǒng)存儲(chǔ)器。CMC經(jīng)配置以接收包括寫(xiě)入數(shù)據(jù)的存儲(chǔ)器寫(xiě)入請(qǐng)求,以及待寫(xiě)入在系統(tǒng)存儲(chǔ)器中的存儲(chǔ)器線內(nèi)的存儲(chǔ)器塊的物理地址。CMC進(jìn)一步經(jīng)配置以為所述寫(xiě)入數(shù)據(jù)確定壓縮模式。CMC還經(jīng)配置以基于所述壓縮模式產(chǎn)生用于寫(xiě)入數(shù)據(jù)的CI。CMC另外經(jīng)配置以用所產(chǎn)生的CI來(lái)更新所存儲(chǔ)的對(duì)應(yīng)于主目錄中的物理地址的CI。CMC進(jìn)一步經(jīng)配置以基于所產(chǎn)生的CI,將所述寫(xiě)入數(shù)據(jù)寫(xiě)入到所述系統(tǒng)存儲(chǔ)器中的所述存儲(chǔ)器線中的一或多個(gè)存儲(chǔ)器塊。CMC還經(jīng)配置以將所產(chǎn)生的CI寫(xiě)入到系統(tǒng)存儲(chǔ)器的所述存儲(chǔ)器線中的一或多個(gè)存儲(chǔ)器塊中的每一者的一或多個(gè)ECC位中。
在另一方面,提供一種用于為存儲(chǔ)器讀取請(qǐng)求提供存儲(chǔ)器帶寬壓縮的方法。所述方法包括通過(guò)CMC經(jīng)由系統(tǒng)總線接收存儲(chǔ)器讀取請(qǐng)求,其包括將在系統(tǒng)存儲(chǔ)器中的存儲(chǔ)器線內(nèi)存取的存儲(chǔ)器塊的物理地址。所述方法進(jìn)一步包括從所述系統(tǒng)存儲(chǔ)器中的主目錄讀取含有對(duì)應(yīng)于物理地址的CI的主目錄存儲(chǔ)器塊。所述方法還包括基于所述CI確定將為所述存儲(chǔ)器讀取請(qǐng)求讀取的系統(tǒng)存儲(chǔ)器中的存儲(chǔ)器線內(nèi)的存儲(chǔ)器塊的數(shù)目。方法另外包括在所述物理地址處開(kāi)始讀取系統(tǒng)存儲(chǔ)器中的所述存儲(chǔ)器線內(nèi)的所述所確定數(shù)目的存儲(chǔ)器塊。
在另一方面,提供一種用于為存儲(chǔ)器寫(xiě)入請(qǐng)求提供存儲(chǔ)器帶寬壓縮的方法。所述方法包括通過(guò)CMC經(jīng)由系統(tǒng)總線接收包括寫(xiě)入數(shù)據(jù)的存儲(chǔ)器寫(xiě)入請(qǐng)求,以及待寫(xiě)入在系統(tǒng)存儲(chǔ)器中的存儲(chǔ)器線內(nèi)的存儲(chǔ)器塊的物理地址。所述方法進(jìn)一步包括為所述寫(xiě)入數(shù)據(jù)確定壓縮模式。所述方法還包括基于所述壓縮模式產(chǎn)生用于所述寫(xiě)入數(shù)據(jù)的CI。所述方法另外包括用所述所產(chǎn)生的CI來(lái)更新所存儲(chǔ)的對(duì)應(yīng)于主目錄中的物理地址的CI。所述方法進(jìn)一步包括基于所產(chǎn)生的CI,將所述寫(xiě)入數(shù)據(jù)寫(xiě)入到所述系統(tǒng)存儲(chǔ)器中的所述存儲(chǔ)器線中的一或多個(gè)存儲(chǔ)器塊。所述方法還包括將所產(chǎn)生的CI寫(xiě)入到系統(tǒng)存儲(chǔ)器的所述存儲(chǔ)器線中的一或多個(gè)存儲(chǔ)器塊中的每一者的一或多個(gè)ECC位中。
在其它方面中,揭示可非常適合小數(shù)據(jù)塊壓縮的壓縮方法和格式。這些壓縮方法和格式可用于本文所揭示的存儲(chǔ)器帶寬壓縮方面。
對(duì)于這些CMC和壓縮機(jī)制的一些或所有方面,可有可能減少存儲(chǔ)器存取等待時(shí)間,且有效地增加基于CPU的系統(tǒng)的存儲(chǔ)器帶寬,同時(shí)減少物理存儲(chǔ)器大小的增加,且最小化對(duì)系統(tǒng)性能的影響。
附圖說(shuō)明
圖1是包含基于中央處理單元(CPU)的系統(tǒng)的示范性芯片上系統(tǒng)(SoC)的示意圖;
圖2是包含具有多個(gè)CPU的示范性基于CPU的系統(tǒng)以及經(jīng)配置以提供存儲(chǔ)器帶寬壓縮的經(jīng)壓縮存儲(chǔ)器控制器(CMC)的SoC的示意圖;
圖3是圖2的CMC的較詳細(xì)示意圖,其中所述CMC進(jìn)一步以通信方式耦合到可用于提供存儲(chǔ)器帶寬壓縮的任選的內(nèi)部存儲(chǔ)器;
圖4是可由圖3的CMC實(shí)施的示范性存儲(chǔ)器帶寬壓縮機(jī)制的示意圖;
圖5說(shuō)明圖1的SoC的實(shí)例,其包含任選的等級(jí)4(L4)高速緩沖存儲(chǔ)器以補(bǔ)償歸因于CMC中的地址翻譯的性能損失;
圖6A和6B分別是說(shuō)明存儲(chǔ)器讀取操作和存儲(chǔ)器寫(xiě)入操作期間的示范性通信流,以及可由圖3的CMC存取以用于提供存儲(chǔ)器帶寬壓縮的圖4的系統(tǒng)存儲(chǔ)器和主目錄的示范性元件的圖;
圖7是說(shuō)明用于使用存儲(chǔ)器帶寬壓縮來(lái)執(zhí)行圖6A的CMC的存儲(chǔ)器讀取操作的示范性操作的流程圖;
圖8是說(shuō)明用于使用存儲(chǔ)器帶寬壓縮來(lái)執(zhí)行圖6B的CMC的存儲(chǔ)器寫(xiě)入操作的示范性操作的流程圖;
圖9A和9B分別是說(shuō)明存儲(chǔ)器讀取操作和存儲(chǔ)器寫(xiě)入操作期間的示范性通信流,以及可由圖3的CMC的一些方面提供以用于提供存儲(chǔ)器帶寬壓縮的壓縮指示符(CI)高速緩沖存儲(chǔ)器的示范性元件的圖;
圖10A到10C是說(shuō)明用于使用CI高速緩沖存儲(chǔ)器來(lái)執(zhí)行圖9A的CMC的存儲(chǔ)器讀取操作的示范性操作的流程圖;
圖11A到11C是說(shuō)明使用CI高速緩沖存儲(chǔ)器來(lái)執(zhí)行圖9B的CMC的存儲(chǔ)器寫(xiě)入操作的示范性操作的流程圖;
圖12到18說(shuō)明示范性數(shù)據(jù)塊壓縮格式和機(jī)制,其中的任何一者可由圖3的CMC用來(lái)壓縮和解壓縮存儲(chǔ)器數(shù)據(jù)塊;以及
圖19是可包含使用圖2的CMC的的圖1的SoC的示范性計(jì)算裝置的框圖。
具體實(shí)施方式
現(xiàn)參考各圖,描述本發(fā)明的若干示范性方面。詞語(yǔ)“示范性”在本文中用于表示“充當(dāng)實(shí)例、例子或說(shuō)明”。本文中描述為“示范性”的任何方面未必解釋為比其它方面優(yōu)選或有利。
本文所揭示的方面包含在基于中央處理單元(CPU)的系統(tǒng)中使用經(jīng)壓縮存儲(chǔ)器控制器(CMC)來(lái)提供存儲(chǔ)器帶寬壓縮。在這點(diǎn)上,在一些方面,CMC經(jīng)配置以提供針對(duì)存儲(chǔ)器讀取請(qǐng)求和/或存儲(chǔ)器寫(xiě)入請(qǐng)求的存儲(chǔ)器帶寬壓縮。根據(jù)一些方面,在接收到對(duì)系統(tǒng)存儲(chǔ)器中的物理地址的存儲(chǔ)器讀取請(qǐng)求后,CMC可即刻從主目錄和/或從與所述系統(tǒng)存儲(chǔ)器中的物理地址相關(guān)聯(lián)的錯(cuò)誤校正碼(ECC)位讀取用于所述物理地址的壓縮指示符(CI)。在一些方面中,CI可向CMC提供壓縮模式(例如指示數(shù)據(jù)是經(jīng)壓縮的還是未經(jīng)壓縮的,和/或指示其中經(jīng)壓縮數(shù)據(jù)存儲(chǔ)在所述物理地址處的存儲(chǔ)器塊的數(shù)目)?;谒鯟I,CMC確定將為所述存儲(chǔ)器讀取請(qǐng)求讀取的存儲(chǔ)器塊的數(shù)目,且讀取在所述物理地址處開(kāi)頭的所述所確定數(shù)目的存儲(chǔ)器塊。在一些方面,在接收到對(duì)所述系統(tǒng)存儲(chǔ)器中的物理地址的存儲(chǔ)器寫(xiě)入請(qǐng)求后,CMC可即刻為將寫(xiě)入的寫(xiě)入數(shù)據(jù)確定壓縮模式,且可基于所述壓縮模式產(chǎn)生用于所述寫(xiě)入數(shù)據(jù)的CI。CMC接著可更新主目錄和/或與所述物理地址相關(guān)聯(lián)的ECC位,且基于所產(chǎn)生的CI將寫(xiě)入數(shù)據(jù)寫(xiě)入到系統(tǒng)存儲(chǔ)器。CMC的一些方面可進(jìn)一步提供用于高速緩存先前讀取的CI的CI高速緩沖存儲(chǔ)器。以此方式,CMC可更高效地讀取和寫(xiě)入經(jīng)壓縮和未經(jīng)壓縮的數(shù)據(jù),從而產(chǎn)生減少的存儲(chǔ)器存取等待時(shí)間和改進(jìn)的系統(tǒng)性能。
在這點(diǎn)上,圖2是包含類似于圖1中的基于CPU的系統(tǒng)12的具有多個(gè)CPU塊14(1)到14(N)的示范性基于CPU的系統(tǒng)12'的SoC 10'的示意圖。圖2中的基于CPU的系統(tǒng)12'包含一些與圖1中的基于CPU的系統(tǒng)12共用的組件,其由圖1和2之間的共用元件編號(hào)表示。為了簡(jiǎn)潔起見(jiàn),將不再描述這些元件。然而,在圖2中的基于CPU的系統(tǒng)12'中,提供CMC 36。CMC 36控制對(duì)系統(tǒng)存儲(chǔ)器38的存取。作為非限制性實(shí)例,系統(tǒng)存儲(chǔ)器38可包括一或多個(gè)雙數(shù)據(jù)速率(DDR)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)40(1)到40(R)(下文稱為“DRAM 40(1)到40(R)”)。在此實(shí)例中,CMC 36使用根據(jù)本文和下文所揭示的方面的存儲(chǔ)器帶寬壓縮。類似于圖1的基于CPU的系統(tǒng)12的存儲(chǔ)器控制器24,圖2中的基于CPU的系統(tǒng)12'中的CMC 36通過(guò)內(nèi)部系統(tǒng)總線22由CPU塊14(1)到14(N)共享。
為了說(shuō)明圖2中的CMC 36的示范性內(nèi)部組件的較詳細(xì)示意圖,提供圖3。在此實(shí)例中,在來(lái)自含有圖2中的CPU塊14(1)到14(N)的半導(dǎo)體裸片46(1)、46(2)的單獨(dú)半導(dǎo)體裸片44上提供CMC 36。或者,在一些方面中,可將CMC 36包含于具有CPU塊14(1)到14(N)的常見(jiàn)半導(dǎo)體裸片(未圖示)中。不管裸片配置如何,提供CMC 36,使得CPU塊14(1)到14(N)可經(jīng)由內(nèi)部系統(tǒng)總線22向CMC 36做出存儲(chǔ)器存取請(qǐng)求,且通過(guò)CMC 36從存儲(chǔ)器接收數(shù)據(jù)。
繼續(xù)參看圖3,CMC 36控制對(duì)系統(tǒng)存儲(chǔ)器38的存儲(chǔ)器存取的操作,其在圖2和3中示出為包括DRAM 40(1)到40(R)。CMC 36包含用以服務(wù)存儲(chǔ)器存取請(qǐng)求(未圖示)的多個(gè)存儲(chǔ)器接口(MEM I/F)48(1)到48(P)(例如DDR DRAM接口)在這點(diǎn)上,在此實(shí)例中,CMC 36包含壓縮控制器50。壓縮控制器50響應(yīng)于來(lái)自圖2中的CPU塊14(1)到14(N)的存儲(chǔ)器存取請(qǐng)求,控制壓縮存儲(chǔ)到系統(tǒng)存儲(chǔ)器38的數(shù)據(jù)以及解壓縮從系統(tǒng)存儲(chǔ)器38檢索的數(shù)據(jù)。以此方式,CPU塊14(1)到14(N)可具備大于CMC 36所存取的存儲(chǔ)器的實(shí)際容量的虛擬存儲(chǔ)器地址空間。壓縮控制器50還可經(jīng)配置以執(zhí)行經(jīng)由內(nèi)部系統(tǒng)總線22提供到CPU塊14(1)到14(N)的信息的帶寬壓縮。
如下文將更詳細(xì)地論述,壓縮控制器50可執(zhí)行任何數(shù)目的壓縮技術(shù)和算法,來(lái)提供存儲(chǔ)器帶寬壓縮。為壓縮控制器50所需的數(shù)據(jù)結(jié)構(gòu)和其它信息提供本地存儲(chǔ)器52,以執(zhí)行此類壓縮技術(shù)和算法。在這點(diǎn)上,以靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)54的形式提供本地存儲(chǔ)器52。本地存儲(chǔ)器52具有將用于壓縮控制器50可需要用來(lái)執(zhí)行壓縮技術(shù)和算法的數(shù)據(jù)結(jié)構(gòu)和其它數(shù)據(jù)存儲(chǔ)的足夠大小。本地存儲(chǔ)器52還可經(jīng)分割以含有高速緩沖存儲(chǔ)器,例如等級(jí)4(L4)高速緩沖存儲(chǔ)器,以提供額外的高速緩沖存儲(chǔ)器用于在CMC 36內(nèi)內(nèi)部使用。因此,L4控制器55還可提供于CMC 36中,以提供對(duì)L4高速緩沖存儲(chǔ)器的存取。如下文將更詳細(xì)地論述,增強(qiáng)型壓縮技術(shù)和算法可需要較大的內(nèi)部存儲(chǔ)器。舉例來(lái)說(shuō),本地存儲(chǔ)器52可提供128千字節(jié)(kB)的存儲(chǔ)器。
另外,如圖3中示出且如將在下文更詳細(xì)地描述,還可為CMC 36提供任選的額外內(nèi)部存儲(chǔ)器56。作為一實(shí)例,可提供額外內(nèi)部存儲(chǔ)器56作為DRAM。如下文將更詳細(xì)地論述,額外內(nèi)部存儲(chǔ)器56可促進(jìn)額外的或比用于CMC 36的本地存儲(chǔ)器52中大的量的數(shù)據(jù)結(jié)構(gòu)和其它數(shù)據(jù)的存儲(chǔ),其提供存儲(chǔ)器壓縮和解壓縮機(jī)制來(lái)增加基于CPU的系統(tǒng)12'的存儲(chǔ)器帶寬壓縮。在CMC 36中提供內(nèi)部存儲(chǔ)器控制器58來(lái)控制對(duì)用于壓縮中的額外內(nèi)部存儲(chǔ)器56的存儲(chǔ)器存取。內(nèi)部存儲(chǔ)器控制器58不可供CPU塊14(1)到14(N)存取或檢視。
如上所述,圖3中的CMC 36可執(zhí)行存儲(chǔ)器帶寬壓縮,在一些方面中包含零線壓縮。本地存儲(chǔ)器52可用以存儲(chǔ)用于此類壓縮的較大數(shù)據(jù)結(jié)構(gòu)。如下文更詳細(xì)地論述,存儲(chǔ)器帶寬壓縮可減少存儲(chǔ)器存取等待時(shí)間,且允許較多的CPU 16(1)、16(2)或其相應(yīng)線程存取相同數(shù)目的存儲(chǔ)器信道,同時(shí)最小化對(duì)存儲(chǔ)器存取等待時(shí)間的影響。在一些方面,如果CMC 36不執(zhí)行此類壓縮,那么與存儲(chǔ)器信道的較大數(shù)目相比,可減小存儲(chǔ)器信道的數(shù)目,同時(shí)實(shí)現(xiàn)類似的等待時(shí)間結(jié)果,這可導(dǎo)致減少的系統(tǒng)層級(jí)電力消耗。
為圖3中的CMC 36中的存儲(chǔ)器帶寬壓縮提供的資源中的每一者,包含本地存儲(chǔ)器52和額外的內(nèi)部存儲(chǔ)器56,可個(gè)別地或彼此結(jié)合使用,以實(shí)現(xiàn)資源和面積、電力消耗、通過(guò)存儲(chǔ)器容量壓縮而增加的存儲(chǔ)器容量,以及通過(guò)存儲(chǔ)器帶寬壓縮而增加的性能之間的所要均衡??砂葱枰獑⒂没蛲S么鎯?chǔ)器帶寬壓縮。另外,可啟用或停用上文所述的供CMC 36使用的資源,以實(shí)現(xiàn)存儲(chǔ)器容量和/或帶寬壓縮效率、電力消耗和性能之間的所要折衷?,F(xiàn)將論述使用可用于CMC 36的這些資源的示范性存儲(chǔ)器帶寬壓縮技術(shù)。
在這點(diǎn)上,圖4是可由圖3的CMC 36實(shí)施以提供存儲(chǔ)器帶寬壓縮德示范性存儲(chǔ)器帶寬壓縮機(jī)制60的示意圖。在存儲(chǔ)器帶寬壓縮機(jī)制60中,系統(tǒng)存儲(chǔ)器38包括多個(gè)存儲(chǔ)器線62,其中的每一者與物理地址相關(guān)聯(lián)。所述多個(gè)存儲(chǔ)器線62中的每一者可由CMC 36使用存儲(chǔ)器讀取或?qū)懭胝?qǐng)求(未圖示)的物理地址來(lái)存取。數(shù)據(jù)(未圖示)可以經(jīng)壓縮或未經(jīng)壓縮形式存儲(chǔ)在系統(tǒng)存儲(chǔ)器38中的存儲(chǔ)器線62中的每一者內(nèi)。在一些方面,包括CI 64的一或多個(gè)ECC位可聯(lián)合每一存儲(chǔ)器線62存儲(chǔ),以指示所述存儲(chǔ)器線62是否以經(jīng)壓縮形式存儲(chǔ)。以此方式,當(dāng)執(zhí)行對(duì)系統(tǒng)存儲(chǔ)器38的存儲(chǔ)器存取請(qǐng)求時(shí),CMC 36可檢查與對(duì)應(yīng)于待尋址的物理地址的存儲(chǔ)器線62相關(guān)聯(lián)的CI 64,以確定所述存儲(chǔ)器線62是否經(jīng)壓縮,作為所述存儲(chǔ)器存取請(qǐng)求的處理的一部分。
還在系統(tǒng)存儲(chǔ)器38中提供主目錄66。主目錄66針對(duì)系統(tǒng)存儲(chǔ)器38中對(duì)應(yīng)于所述物理地址的每個(gè)存儲(chǔ)器線62含有一個(gè)條目68。主目錄66還針對(duì)每條目68含有一(1)個(gè)CI 64,以表示所述存儲(chǔ)器線62是否存儲(chǔ)為壓縮在所述存儲(chǔ)器線62中,且如果是,那么在支持多個(gè)壓縮長(zhǎng)度的方面中,壓縮模式指示數(shù)據(jù)的壓縮長(zhǎng)度。舉例來(lái)說(shuō),如果所述存儲(chǔ)器線62的長(zhǎng)度是128個(gè)字節(jié),且存儲(chǔ)在其中的數(shù)據(jù)可壓縮到64個(gè)字節(jié)或更少,那么主目錄66中對(duì)應(yīng)于存儲(chǔ)在系統(tǒng)存儲(chǔ)器38中的數(shù)據(jù)的CI 64可設(shè)定成指示所述數(shù)據(jù)存儲(chǔ)在128字節(jié)存儲(chǔ)器線62的前64個(gè)字節(jié)中。
繼續(xù)參看圖4,在寫(xiě)入操作期間,CMC 36可壓縮待寫(xiě)入到系統(tǒng)存儲(chǔ)器38中的存儲(chǔ)器塊。舉例來(lái)說(shuō),壓縮數(shù)據(jù)(例如128個(gè)字節(jié)或256個(gè)字節(jié))。如果經(jīng)壓縮數(shù)據(jù)塊小于或等于系統(tǒng)存儲(chǔ)器38的存儲(chǔ)器塊大小(例如64個(gè)字節(jié)),那么可寫(xiě)入64個(gè)字節(jié),否則寫(xiě)入128個(gè)字節(jié)??蓪?56個(gè)字節(jié)寫(xiě)入為64、128、192、或256個(gè)字節(jié),取決于經(jīng)壓縮數(shù)據(jù)大小。存儲(chǔ)在與系統(tǒng)存儲(chǔ)器38中的所述存儲(chǔ)器線62相關(guān)聯(lián)的一或多個(gè)ECC位中的CI 64也可設(shè)定成表示所述存儲(chǔ)器線62處的數(shù)據(jù)是否經(jīng)壓縮。
在讀取操作實(shí)例期間,CMC 36可從主目錄66讀取CI 64,以確定待讀取的數(shù)據(jù)是否在系統(tǒng)存儲(chǔ)器38中經(jīng)壓縮?;贑I 64,CMC 36可從系統(tǒng)存儲(chǔ)器38讀取待存取的數(shù)據(jù)。如果待讀取的數(shù)據(jù)在系統(tǒng)存儲(chǔ)器38中經(jīng)壓縮,如由CI 64指示,那么CMC 36可用一個(gè)存儲(chǔ)器讀取操作讀取整個(gè)經(jīng)壓縮數(shù)據(jù)塊。如果數(shù)據(jù)讀取的所述部分在系統(tǒng)存儲(chǔ)器38中未經(jīng)壓縮,那么因?yàn)榇x取的所述存儲(chǔ)器線62的額外部分也必須從系統(tǒng)存儲(chǔ)器38讀取,因此可不利地影響存儲(chǔ)器存取等待時(shí)間。在一些方面,對(duì)于若干地址范圍,可使用訓(xùn)練機(jī)制,其中CMC 36可經(jīng)配置以“學(xué)習(xí)”在一組給定情境下在兩次存取中從系統(tǒng)存儲(chǔ)器38讀取所述數(shù)據(jù)是否較好,或從系統(tǒng)存儲(chǔ)器38讀取全部量的數(shù)據(jù)以避免等待時(shí)間影響是否較好。
在圖4的實(shí)例中,還可在系統(tǒng)存儲(chǔ)器38之外的單獨(dú)高速緩沖存儲(chǔ)器中提供CI高速緩沖存儲(chǔ)器70。CI高速緩沖存儲(chǔ)器70針對(duì)系統(tǒng)存儲(chǔ)器38中的每個(gè)存儲(chǔ)器線62提供一個(gè)高速緩存條目72,以表示系統(tǒng)存儲(chǔ)器38中的存儲(chǔ)器線62是否以經(jīng)壓縮形式存儲(chǔ)。以此方式,當(dāng)執(zhí)行對(duì)系統(tǒng)存儲(chǔ)器38的存儲(chǔ)器存取請(qǐng)求時(shí),CMC 36可首先檢查CI高速緩沖存儲(chǔ)器70中對(duì)應(yīng)于待尋址的物理地址的高速緩存條目72,以確定是否壓縮系統(tǒng)存儲(chǔ)器38中的物理地址處的所述存儲(chǔ)器線62,作為存儲(chǔ)器存取請(qǐng)求的處理的一部分,而不必讀取所述存儲(chǔ)器線62。因此,如果CI高速緩沖存儲(chǔ)器70指示存儲(chǔ)器線62存儲(chǔ)為經(jīng)壓縮,那么CMC 36不必讀出整個(gè)存儲(chǔ)器線62,因此減少等待時(shí)間。如果CI高速緩沖存儲(chǔ)器70指示存儲(chǔ)器線62存儲(chǔ)為未經(jīng)壓縮,那么CMC 36可讀出整個(gè)存儲(chǔ)器線62。如果CI高速緩沖存儲(chǔ)器70中發(fā)生未中,那么可查詢存儲(chǔ)在主目錄66中的對(duì)應(yīng)CI 64,并將其加載到CI高速緩沖存儲(chǔ)器70中,以用于對(duì)同一物理地址的后續(xù)存儲(chǔ)器存取請(qǐng)求。
在一些方面,CI高速緩沖存儲(chǔ)器70可組織為常規(guī)高速緩沖存儲(chǔ)器。CI高速緩沖存儲(chǔ)器70可含有標(biāo)記陣列,且可組織為n向關(guān)聯(lián)高速緩沖存儲(chǔ)器,作為非限制性實(shí)例。CMC 36可相對(duì)于CI高速緩沖存儲(chǔ)器70實(shí)施收回策略。在圖4中所示的CI高速緩沖存儲(chǔ)器70中,每一高速緩沖存儲(chǔ)器線74可存儲(chǔ)多個(gè)高速緩存條目72。每一高速緩存條目72可含有CI 76以指示系統(tǒng)存儲(chǔ)器38中與高速緩存條目72相關(guān)聯(lián)的存儲(chǔ)器線62經(jīng)壓縮,和/或表示指示對(duì)應(yīng)于高速緩存條目72的數(shù)據(jù)的壓縮大小的壓縮模式。舉例來(lái)說(shuō),CI 76可包括兩(2)個(gè)位,其表示四(4)個(gè)潛在壓縮大小(例如32、64、96或128個(gè)字節(jié))。注意,在此實(shí)例中,CI 64是冗余的,因?yàn)榇诵畔⒁泊鎯?chǔ)在高速緩存條目72中的CI 76中。舉例來(lái)說(shuō),如果存儲(chǔ)器線62的長(zhǎng)度是128個(gè)字節(jié),且存儲(chǔ)在其中的數(shù)據(jù)可壓縮到64個(gè)字節(jié)或更少,那么CI高速緩沖存儲(chǔ)器70中對(duì)應(yīng)于系統(tǒng)存儲(chǔ)器38中的存儲(chǔ)器線62的高速緩存條目72中的CI 76可設(shè)定成指示所述數(shù)據(jù)存儲(chǔ)在128字節(jié)存儲(chǔ)器線62的前64個(gè)字節(jié)中。
還可希望為存儲(chǔ)器帶寬壓縮機(jī)制提供額外高速緩沖存儲(chǔ)器。在這點(diǎn)上,圖5說(shuō)明類似于圖2中的SoC 10'的替代SoC 10”的實(shí)例,但圖5中的SoC 10”另外包含任選的高速緩沖存儲(chǔ)器78,其在此實(shí)例中為L(zhǎng)4高速緩沖存儲(chǔ)器。CMC 36可同時(shí)查找L4高速緩沖存儲(chǔ)器78和CI高速緩沖存儲(chǔ)器70兩者中的物理地址,以最小化等待時(shí)間。L4高速緩沖存儲(chǔ)器78中的地址是未經(jīng)壓縮的物理地址。在L4高速緩沖存儲(chǔ)器78中的物理地址命中后,CI高速緩沖存儲(chǔ)器70中的物理地址查找即刻為冗余。在L4高速緩沖存儲(chǔ)器78中的物理地址未中后,需要CI高速緩沖存儲(chǔ)器70中的物理地址查找來(lái)從系統(tǒng)存儲(chǔ)器38獲得數(shù)據(jù)。并且,為了避免CPU 16存取L4高速緩沖存儲(chǔ)器78和CI高速緩沖存儲(chǔ)器70兩者的額外等待時(shí)間,L4高速緩沖存儲(chǔ)器78和CI高速緩沖存儲(chǔ)器70可為啟發(fā)的。
提供圖6A和6B來(lái)說(shuō)明可由圖3的CMC 36存取以用于提供存儲(chǔ)器帶寬壓縮的圖4的系統(tǒng)存儲(chǔ)器38和主目錄66的示范性通信流和示范性元件。明確地說(shuō),分別地,圖6A說(shuō)明存儲(chǔ)器讀取操作期間的示范性通信流,而圖6B說(shuō)明存儲(chǔ)器寫(xiě)入操作期間得示范性通信流。為描述圖6A和6B時(shí),為清楚起見(jiàn),參考圖3和4的元件。
在圖6A和6B中,系統(tǒng)存儲(chǔ)器38包含用于存儲(chǔ)經(jīng)壓縮和未經(jīng)壓縮數(shù)據(jù)的多個(gè)存儲(chǔ)器線80(0)到80(X)。存儲(chǔ)器線80(0)到80(X)各自細(xì)分為相應(yīng)的存儲(chǔ)器塊82(0)到82(Z)以及84(0)到84(Z),如由系統(tǒng)存儲(chǔ)器38的基礎(chǔ)存儲(chǔ)器架構(gòu)確定。在一些方面,存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)中的每一者的大小表示在存儲(chǔ)器讀取操作中可從系統(tǒng)存儲(chǔ)器38讀取的數(shù)據(jù)的最小量。舉例來(lái)說(shuō),在一些示范性存儲(chǔ)器架構(gòu)中,存儲(chǔ)器線80(0)到80(X)中的每一者可包括128個(gè)字節(jié)的數(shù)據(jù),細(xì)分為兩個(gè)64字節(jié)存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)。一些方面可假定存儲(chǔ)器線80(0)到80(X)中的每一者可包括較多或較少字節(jié)的數(shù)據(jù)(例如256個(gè)字節(jié)或64個(gè)字節(jié),作為非限制性實(shí)例)。類似地,根據(jù)一些方面,存儲(chǔ)器線80(0)到80(X)內(nèi)的存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)可較大或較小(例如128個(gè)字節(jié)或32個(gè)字節(jié),作為非限制性實(shí)例)。在一些方面,存儲(chǔ)器讀取操作可讀取比所述存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)中的每一者的大小少的字節(jié),但仍消耗與存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)中的一者相同量的存儲(chǔ)器帶寬。
存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)中的每一者與一或多個(gè)對(duì)應(yīng)ECC位86(0)到86(Z)、88(0)到88(Z)相關(guān)聯(lián)。按照慣例使用例如ECC位86(0)到86(Z)、88(0)到88(Z)等ECC位來(lái)檢測(cè)和校正存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)內(nèi)的通常碰到的類型的內(nèi)部數(shù)據(jù)訛用。在圖6A和6B的實(shí)例中,可使ECC位86(0)到86(Z)、88(0)到88(Z)中的一或多者改變用途為存儲(chǔ)用于相應(yīng)存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)的CI 90(0)到90(Z)、92(0)到92(Z)。盡管將圖6A和6B中的ECC位86(0)到86(Z)、88(0)到88(Z)描繪為鄰近于其相應(yīng)的存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z),但應(yīng)理解,位86(0)到86(Z)、88(0)到88(Z)可位于系統(tǒng)存儲(chǔ)器38內(nèi)的其它地方。
在圖6A和6B的實(shí)例中,系統(tǒng)存儲(chǔ)器38還包含主目錄66,其包含多個(gè)主目錄存儲(chǔ)器塊94(0)到94(Y)。主目錄存儲(chǔ)器塊94(0)到94(Y)中的每一者具有與存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)相同的大小。主目錄存儲(chǔ)器塊94(0)到94(Y)存儲(chǔ)CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W),其中的每一者對(duì)應(yīng)于存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)中的一者的物理地址。如下文更詳細(xì)地論述,在一些方面,存儲(chǔ)在ECC位86(0)到86(Z)、88(0)到88(Z)中的CI 90(0)到90(Z)、92(0)到92(Z),以及存儲(chǔ)在主目錄存儲(chǔ)器塊94(0)到94(Y)中的CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W)可維持,以便針對(duì)存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)中的給定一者,始終存儲(chǔ)相同的值。一些方面可假定與主目錄存儲(chǔ)器塊94(0)到94(Y)中的CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W)相比,存儲(chǔ)在ECC位86(0)到86(Z)、88(0)到88(Z)中的CI 90(0)到90(Z)、92(0)到92(Z)可更頻繁地更新。
CI 90(0)到90(Z)、92(0)到92(Z)以及CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W)各自可包括一或多個(gè)位,其指示存儲(chǔ)在系統(tǒng)存儲(chǔ)器38的對(duì)應(yīng)存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)處的數(shù)據(jù)的壓縮狀態(tài)。在一些方面,CI 90(0)到90(Z)、92(0)到92(Z)以及CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W)中的每一者可包括單個(gè)位,其指示對(duì)應(yīng)存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)中的數(shù)據(jù)是經(jīng)壓縮的還是未經(jīng)壓縮的。根據(jù)一些方面,CI 90(0)到90(Z)、92(0)到92(Z)以及CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W)中的每一者可包括多個(gè)位,其可用于指示對(duì)應(yīng)存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)中的每一者的壓縮模式(例如若干存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)由經(jīng)壓縮數(shù)據(jù)占用,作為非限制性實(shí)例)。
在圖6A的實(shí)例中,指定物理地址104的存儲(chǔ)器讀取請(qǐng)求102由CMC 36接收,如由箭頭106指示。出于說(shuō)明的目的,在此實(shí)例中,假定物理地址104對(duì)應(yīng)于存儲(chǔ)器塊82(0),其為128字節(jié)存儲(chǔ)器線80(0)的64字節(jié)分部。在接收到存儲(chǔ)器讀取請(qǐng)求102時(shí),CMC 36不知道存儲(chǔ)在存儲(chǔ)器塊82(0)處的數(shù)據(jù)是否經(jīng)壓縮。CMC 36可繼續(xù)讀取整個(gè)存儲(chǔ)器線80(0),但如果所請(qǐng)求的數(shù)據(jù)以經(jīng)壓縮形式僅存儲(chǔ)在存儲(chǔ)器塊82(0)中,那么存儲(chǔ)器塊82(Z)的讀取將是不必要的,且將導(dǎo)致增加的存儲(chǔ)器存取等待時(shí)間?;蛘?,CMC 36可僅讀取存儲(chǔ)器塊82(0),基于其內(nèi)容確定存儲(chǔ)在其中的數(shù)據(jù)是否經(jīng)壓縮,且接著如果所述數(shù)據(jù)未經(jīng)壓縮,那么讀取存儲(chǔ)器塊82(Z)。然而,此方法還可導(dǎo)致因發(fā)布兩個(gè)單獨(dú)的存儲(chǔ)器讀取操作而產(chǎn)生的增加的存儲(chǔ)器存取等待時(shí)間。因此,在不知道存儲(chǔ)器塊82(0)的壓縮狀態(tài)的情況下,CMC 36冒險(xiǎn)執(zhí)行可不利地影響存儲(chǔ)器存取等待時(shí)間的不必要的存儲(chǔ)器讀取操作。
通過(guò)使用CI 90(0)到90(Z)、92(0)到92(Z)和/或CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W),CMC 36可確定應(yīng)讀取多少存儲(chǔ)器塊82(0)到82(Z),來(lái)確保用于給定存儲(chǔ)器讀取請(qǐng)求102的所有數(shù)據(jù)(經(jīng)壓縮或未經(jīng)壓縮)均高效地從系統(tǒng)存儲(chǔ)器38讀取。因此,在接收到存儲(chǔ)器讀取請(qǐng)求102之后,CMC 36可讀取主目錄66的主目錄存儲(chǔ)器塊94(0),以存取對(duì)應(yīng)于存儲(chǔ)器塊82(0)的物理地址104的CI 96(0),如由箭頭108指示。CI 96(0)接著可由CMC 36用來(lái)確定讀取存儲(chǔ)器線80(0)內(nèi)的多少存儲(chǔ)器塊82(0)到82(Z),來(lái)確保存儲(chǔ)器讀取請(qǐng)求102所請(qǐng)求的數(shù)據(jù)被高效地檢索。
在一些方面,CMC 36可通過(guò)確定CI 96(0)所指示的壓縮模式(未圖示)來(lái)確定讀取多少存儲(chǔ)器塊82(0)到82(X)。在以上實(shí)例中,CI 96(0)可為單個(gè)位,其指示所述數(shù)據(jù)是經(jīng)壓縮的(即,應(yīng)僅讀取存儲(chǔ)器塊82(0))或未經(jīng)壓縮的(即,應(yīng)讀取存儲(chǔ)器塊82(0)和82(Z)兩者)。根據(jù)其中系統(tǒng)存儲(chǔ)器38的存儲(chǔ)器線80(0)到80(X)各自含有兩個(gè)以上存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)的方面,CI 96(0)可包括多個(gè)位,其指示多少存儲(chǔ)器塊82(0)到82(Z)含有經(jīng)壓縮數(shù)據(jù)。舉例來(lái)說(shuō),如果存儲(chǔ)器線80(0)到80(X)是細(xì)分為四個(gè)64字節(jié)存儲(chǔ)器塊82(0)到82(Z)的256字節(jié)存儲(chǔ)器線,那么CI 96(0)可指示經(jīng)壓縮數(shù)據(jù)存儲(chǔ)在64字節(jié)、128字節(jié)或192字節(jié)(分別對(duì)應(yīng)于存儲(chǔ)器塊82(0)、存儲(chǔ)器塊82(0)到82(1)以及存儲(chǔ)器塊82(0)到82(2))中。基于CI 96(0),CMC 36接著可發(fā)布適當(dāng)數(shù)目的存儲(chǔ)器讀取操作,來(lái)讀取存儲(chǔ)器線80(0)內(nèi)的所述所確定數(shù)目的存儲(chǔ)器塊82(0)到82(Z),如由箭頭110指示。一些方面可假定CMC 36可確定CI 96(0)所指示的壓縮模式包括零線指示符,其向CMC 36指示存儲(chǔ)在物理地址104處的數(shù)據(jù)全部由零值組成。在此情況下,CMC 36可讀取零存儲(chǔ)器塊82(0)到82(Z)。根據(jù)一些方面,CMC 36可確定CI 96(0)所指示的壓縮模式包括存儲(chǔ)在物理地址104處的其它固定數(shù)據(jù)模式的指示符(例如全一(1),作為非限制性實(shí)例)。
在一些方面,對(duì)于CMC 36接收到的存儲(chǔ)器讀取請(qǐng)求102的僅某一百分比,可能需要從主目錄66讀取CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W)。舉例來(lái)說(shuō),在一些方面,可僅針對(duì)CMC 36接收到的存儲(chǔ)器讀取請(qǐng)求102的百分之十(10%)存取主目錄66。在此些方面中,在接收到存儲(chǔ)器讀取請(qǐng)求102后,CMC 36可概率性地確定(例如基于隨機(jī)數(shù)產(chǎn)生器(未圖示))是否從主目錄66讀取用于存儲(chǔ)器塊82(0)的CI 96(0),或者是否從ECC位86(0)讀取用于存儲(chǔ)器塊82(0)的CI 90(0)。在后一種情況下,CMC 36可讀取CI 90(0),如虛線箭頭112所指示,且在使用CI 90(0)來(lái)確定從存儲(chǔ)器線80(0)讀取多少存儲(chǔ)器塊82(0)到82(Z)。
現(xiàn)參看圖6B,CMC 36接收存儲(chǔ)器寫(xiě)入請(qǐng)求114,如由箭頭116指示。存儲(chǔ)器寫(xiě)入請(qǐng)求114包含待寫(xiě)入到系統(tǒng)存儲(chǔ)器38的寫(xiě)入數(shù)據(jù)118,以及寫(xiě)入數(shù)據(jù)118待寫(xiě)入到的系統(tǒng)存儲(chǔ)器38的物理地址104兩者。出于說(shuō)明的目的,再次假定物理地址104對(duì)應(yīng)于存儲(chǔ)器塊82(0)。在接收到存儲(chǔ)器寫(xiě)入請(qǐng)求114后,CMC 36可即刻進(jìn)行操作來(lái)壓縮寫(xiě)入數(shù)據(jù)118,且基于壓縮寫(xiě)入數(shù)據(jù)118的結(jié)果,可確定用于寫(xiě)入數(shù)據(jù)118的壓縮模式。作為非限制性實(shí)例,壓縮模式可指示寫(xiě)入數(shù)據(jù)118是否成功地壓縮,和/或經(jīng)壓縮寫(xiě)入數(shù)據(jù)118所占用的存儲(chǔ)器塊82(0)到82(Z)的數(shù)目。基于所述壓縮模式,CMC 36產(chǎn)生用于寫(xiě)入數(shù)據(jù)118的CI 120。
CMC 36接著可用所述所產(chǎn)生的CI 120來(lái)更新存儲(chǔ)在主目錄66中的用于存儲(chǔ)器塊82(0)的物理地址104的CI 96(0),如由箭頭122指示。根據(jù)一些方面,可為CMC 36接收到的存儲(chǔ)器寫(xiě)入請(qǐng)求114的僅某一百分比更新主目錄66。舉例來(lái)說(shuō),在一些方面,可僅針對(duì)CMC 36接收到的存儲(chǔ)器寫(xiě)入請(qǐng)求114的百分之十(10%)更新主目錄66。因此,在此些方面中,CMC 36可概率性地確定(例如基于隨機(jī)數(shù)產(chǎn)生器(未圖示))是否更新所存儲(chǔ)的用于主目錄66中的存儲(chǔ)器塊82(0)的CI 96(0)。如果不更新,那么可忽略此操作。CMC 36接著將寫(xiě)入數(shù)據(jù)118寫(xiě)入到存儲(chǔ)器塊82(0)到82(Z)中的一或多者,如由箭頭124指示。CMC 36還將所產(chǎn)生的CI 120寫(xiě)入到存儲(chǔ)在寫(xiě)入數(shù)據(jù)118寫(xiě)入到的一或多個(gè)存儲(chǔ)器塊82(0)到82(Z)的ECC位86(0)到86(Z)中的CI 90(0)到90(Z),如由箭頭126指示。
圖7是說(shuō)明圖3的CMC 36使用存儲(chǔ)器帶寬壓縮來(lái)執(zhí)行存儲(chǔ)器讀取操作的示范性操作的流程圖,如相對(duì)于圖6A所論述。為清楚起見(jiàn),在描述圖7時(shí)參考圖2、3和6A的元件。在圖7中,操作以CMC 36經(jīng)由內(nèi)部系統(tǒng)總線22接收存儲(chǔ)器讀取請(qǐng)求102開(kāi)始,所述存儲(chǔ)器讀取請(qǐng)求包括將在系統(tǒng)存儲(chǔ)器38中的存儲(chǔ)器線80(0)內(nèi)存取的存儲(chǔ)器塊82(0)的物理地址104(框128)。在一些方面,CMC 36任選地可概率性地確定是否應(yīng)從主目錄66讀取CI 96(0)(框130)。如果CMC 36確定不應(yīng)從主目錄66讀取CI 96(0),那么CMC 36連同讀取存儲(chǔ)器塊82(0)從一或多個(gè)ECC位86(0)讀取CI 90(0),且使用CI 90(0)作為CI 96(0)(框132)。然而,如果CMC 36不使用概率確定,或如果CMC 36在決策框130處概率性地確定應(yīng)從主目錄66讀取CI 96(0),那么CMC 36從系統(tǒng)存儲(chǔ)器38中的主目錄66讀取含有對(duì)應(yīng)于物理地址104的CI 96(0)的主目錄存儲(chǔ)器塊94(0)(框134)。
CMC 36接著基于CI 96(0)確定系統(tǒng)存儲(chǔ)器38中的存儲(chǔ)器線80(0)內(nèi)的存儲(chǔ)器塊82(0)到82(Z)的數(shù)目,來(lái)為存儲(chǔ)器讀取請(qǐng)求102讀取(框136)。在一些方面,框136的用于確定要讀取的存儲(chǔ)器塊82(0)到82(Z)的數(shù)目的操作可包括確定CI 96(0)所指示的壓縮模式(框138)。舉例來(lái)說(shuō),CMC 36可確定CI 96(0)包括零線指示符,其指示應(yīng)讀取零存儲(chǔ)器塊82(0)到82(Z)(框140)。CMC 36接著在物理地址104處開(kāi)始讀取系統(tǒng)存儲(chǔ)器38中的存儲(chǔ)器線80(0)內(nèi)的所述所確定數(shù)目的存儲(chǔ)器塊82(0)到82(Z)(框142)。
為了說(shuō)明圖3的CMC 36使用存儲(chǔ)器帶寬壓縮來(lái)執(zhí)行存儲(chǔ)器寫(xiě)入操作的示范性操作,如上文相對(duì)于圖6B所論述,提供圖8。在這點(diǎn)上,為清楚起見(jiàn),在描述圖8時(shí)參考圖2、3和6B的元件。圖8中的操作以CMC 36經(jīng)由內(nèi)部系統(tǒng)總線22接收存儲(chǔ)器寫(xiě)入請(qǐng)求114開(kāi)始,所述存儲(chǔ)器寫(xiě)入請(qǐng)求包括寫(xiě)入數(shù)據(jù)118以及將寫(xiě)入在系統(tǒng)存儲(chǔ)器38中的存儲(chǔ)器線80(0)內(nèi)的存儲(chǔ)器塊82(0)的物理地址104(框144)。在嘗試壓縮寫(xiě)入數(shù)據(jù)118之后,CMC 36確定寫(xiě)入數(shù)據(jù)118的壓縮模式(例如寫(xiě)入數(shù)據(jù)118是否經(jīng)壓縮,和/或需要多少存儲(chǔ)器塊82(0)到82(Z)來(lái)存儲(chǔ)寫(xiě)入數(shù)據(jù)118)(框146)?;谒鰤嚎s模式,CMC 36基于所述壓縮模式產(chǎn)生用于寫(xiě)入數(shù)據(jù)118的CI 120(框148)。
根據(jù)一些方面,CMC 36任選地可概率性地確定存儲(chǔ)在主目錄66中的CI 96(0)是否應(yīng)更新(框150)。如果CMC 36確定主目錄66中所存儲(chǔ)的CI 96(0)不應(yīng)更新,那么處理在圖8的框152處恢復(fù)。然而,如果CMC 36在決策框150處確定主目錄66中所存儲(chǔ)的CI 96(0)應(yīng)更新,或如果CMC 36不使用概率性確定,那么CMC 36用所述所產(chǎn)生的CI 120來(lái)更新所存儲(chǔ)的對(duì)應(yīng)于主目錄66中的物理地址104的CI 96(0)(框154)。
CMC 36接下來(lái)基于所產(chǎn)生的CI 120將寫(xiě)入數(shù)據(jù)118寫(xiě)入到系統(tǒng)存儲(chǔ)器38中的存儲(chǔ)器線80(0)中的存儲(chǔ)器塊82(0)到82(Z)中的一或多者(框152)。CMC 36還將所產(chǎn)生的CI 120寫(xiě)入到系統(tǒng)存儲(chǔ)器38的存儲(chǔ)器線80(0)中的存儲(chǔ)器塊82(0)到82(Z)中的每一者的一或多個(gè)ECC位86(0)到86(Z)中(框156)。在一些方面,將所產(chǎn)生的CI 120寫(xiě)入到ECC位86(0)中,作為將寫(xiě)入數(shù)據(jù)118寫(xiě)入到第一存儲(chǔ)器塊82(0)的相同存儲(chǔ)器寫(xiě)入操作的一部分。
如上文相對(duì)于圖4所提到,CMC 36所提供的存儲(chǔ)器帶寬壓縮在一些方面可通過(guò)圖4的CI高速緩沖存儲(chǔ)器70的使用進(jìn)一步增強(qiáng)。在這點(diǎn)上,提供圖9A和9B,來(lái)說(shuō)明可由圖3的CMC 36存取以用于提供存儲(chǔ)器帶寬壓縮的CI高速緩沖存儲(chǔ)器70的示范性通信流和示范性元件。明確地說(shuō),圖9A和9B分別使用CI高速緩沖存儲(chǔ)器70來(lái)說(shuō)明存儲(chǔ)器讀取操作和存儲(chǔ)器寫(xiě)入操作期間的示范性通信流。在描述圖9A和9B時(shí),為清楚起見(jiàn),參考圖3、4、6A和6B的元件。
如圖9A中所見(jiàn),CMC 36的CI高速緩沖存儲(chǔ)器70包含存儲(chǔ)高速緩存的CI 160(0)到160(W)、162(0)到162(W)以及164(0)到164(W)的多個(gè)CI高速緩存條目158(0)到158(T)。高速緩存條目158(0)到158(T)中的每一者具有與主目錄存儲(chǔ)器塊94(0)到94(Y)相同的大小,且在一些方面,經(jīng)配置以存儲(chǔ)在CMC 36的存儲(chǔ)器讀取操作或存儲(chǔ)器寫(xiě)入操作的過(guò)程中讀取的主目錄存儲(chǔ)器塊94(0)到94(Y)中的一者。以此方式,CMC 36可在后續(xù)的存儲(chǔ)器讀取操作和存儲(chǔ)器寫(xiě)入操作上存取高速緩存的CI 160(0)到160(W)、162(0)到162(W)和164(0)到164(W),而不必存取系統(tǒng)存儲(chǔ)器38來(lái)讀取CI 90(0)到90(Z)、92(0)到92(Z)和/或CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W)。因?yàn)榕c從系統(tǒng)存儲(chǔ)器38讀取和寫(xiě)入到系統(tǒng)存儲(chǔ)器38相比,CMC 36可更快地從CI高速緩沖存儲(chǔ)器70讀取和寫(xiě)入到CI高速緩沖存儲(chǔ)器70,因此CI高速緩沖存儲(chǔ)器70的使用可使CMC 36能夠進(jìn)一步減少存儲(chǔ)器存取等待時(shí)間。
在圖9A的實(shí)例中,提供CI高速緩沖存儲(chǔ)器70的CMC 36接收包括物理地址104的存儲(chǔ)器讀取請(qǐng)求102,如由箭頭166指示。假定物理地址104對(duì)應(yīng)于系統(tǒng)存儲(chǔ)器38的存儲(chǔ)器線80(0)的存儲(chǔ)器塊82(0)。CMC 36接著可確定物理地址104是否對(duì)應(yīng)于CI高速緩存條目158(0)到158(T)中的一者。如果CI高速緩存條目158(0)到158(T)中的一者,例如CI高速緩存條目158(0),對(duì)應(yīng)于存儲(chǔ)器塊82(0)的物理地址104(即,高速緩沖存儲(chǔ)器“命中”),那么CMC 36已識(shí)別包含用于存儲(chǔ)器塊82(0)的CI指示符(例如CI 160(0))的CI高速緩存條目158(0)。CMC 36接著從CI高速緩沖存儲(chǔ)器70的CI高速緩存條目158(0)讀取CI 160(0),且基于所述CI 160(0)確定要讀取的存儲(chǔ)器塊82(0)到82(Z)的數(shù)目,如上文相對(duì)于圖6A所論述。
然而,如果CMC 36確定物理地址104不對(duì)應(yīng)于CI高速緩存條目158(0)到158(T)中的任一者,那么CMC 36可讀取主目錄66的主目錄存儲(chǔ)器塊94(0),以存取對(duì)應(yīng)于存儲(chǔ)器塊82(0)的物理地址104的CI 96(0),如由箭頭168指示。如上所述,在一些方面,可能需要CMC 36為CMC 36接收到的存儲(chǔ)器讀取請(qǐng)求102的僅某一百分比讀取主目錄66。因此,在此些方面中,CMC 36可概率性地確定(例如基于隨機(jī)數(shù)產(chǎn)生器(未圖示))是否從主目錄66讀取主目錄存儲(chǔ)器塊94(0),或者是否從ECC位86(0)讀取用于存儲(chǔ)器塊82(0)的CI 90(0)。在后一種情況下,CMC 36可讀取CI 90(0),如由虛線箭頭170指示。CMC 36接著可使用CI 90(0),而不進(jìn)一步更新CI高速緩沖存儲(chǔ)器70。
CMC 36接著可將主目錄存儲(chǔ)器塊94(0)作為新的CI高速緩存條目158(0)寫(xiě)入到CI高速緩沖存儲(chǔ)器70中。在一些方面,在將主目錄存儲(chǔ)器塊94(0)作為新的CI高速緩存條目158(0)寫(xiě)入之前,CI高速緩沖存儲(chǔ)器70可首先確定是否必須收回當(dāng)前CI高速緩存條目158(0)。如果是,那么那么CI高速緩沖存儲(chǔ)器70可進(jìn)一步確定自從寫(xiě)入到CI高速緩沖存儲(chǔ)器70開(kāi)始是否當(dāng)前CI高速緩存條目158(0)是否已經(jīng)修改(例如通過(guò)確定自從從主目錄66讀取開(kāi)始至少一個(gè)高速緩存的CI 160(0)到160(W)是否已改變)。在一些方面,CI高速緩沖存儲(chǔ)器70可通過(guò)檢查來(lái)看與當(dāng)前CI高速緩存條目158(0)相關(guān)聯(lián)的重寫(xiě)狀態(tài)位(未圖示)是否已設(shè)定,來(lái)確定當(dāng)前CI高速緩存條目158(0)是否已經(jīng)修改。如果當(dāng)前CI高速緩存條目158(0)已經(jīng)修改,那么CMC 36將當(dāng)前CI高速緩存條目158(0)寫(xiě)入到主目錄存儲(chǔ)器塊94(0)到94(Y)中的所述對(duì)應(yīng)一者。CMC 36接著從CI高速緩沖存儲(chǔ)器70的CI高速緩存條目158(0)讀取CI 160(0),且基于所述CI 160(0)確定要讀取的存儲(chǔ)器塊82(0)到82(Z)的數(shù)目,如上文所論述。接著CMC 36讀取所述所確定數(shù)目的存儲(chǔ)器塊82(0)到82(Z),如由箭頭172指示。
在一些方面,CMC 36可基于存儲(chǔ)器讀取請(qǐng)求102向系統(tǒng)存儲(chǔ)器38發(fā)出早期存儲(chǔ)器讀取請(qǐng)求174,同時(shí)確定物理地址104是否對(duì)應(yīng)于CI高速緩存條目158(0)到158(T)中的一者。早期存儲(chǔ)器讀取請(qǐng)求174可與CMC 36基于CI 160(0)確定要讀取的存儲(chǔ)器塊82(0)到82(Z)的數(shù)目并行地處理。在確定要讀取的存儲(chǔ)器塊82(0)到82(Z)的數(shù)目后,可即刻基于CI 160(0)修改早期存儲(chǔ)器讀取請(qǐng)求174。作為非限制性實(shí)例,可修改早期存儲(chǔ)器讀取請(qǐng)求174,以讀取所述所確定數(shù)目的存儲(chǔ)器塊82(0)到82(Z)。以此方式,可通過(guò)早期存儲(chǔ)器讀取請(qǐng)求174和所述CI高速緩沖存儲(chǔ)器70讀取和/或?qū)懭氲牟⑿刑幚韥?lái)提供額外的存儲(chǔ)器帶寬壓縮和減少的存儲(chǔ)器存取等待時(shí)間。
此外,根據(jù)上文相對(duì)于圖5所論述的一些方面,CMC 36還可執(zhí)行高速緩沖存儲(chǔ)器讀取操作(未圖示),以在L4高速緩沖存儲(chǔ)器78中查找物理地址104,同時(shí)確定物理地址104是否對(duì)應(yīng)于CI高速緩沖存儲(chǔ)器70中的CI高速緩存條目158(0)到158(T)中的一者。藉此,CMC 36可進(jìn)一步最小化存儲(chǔ)器存取等待時(shí)間。
現(xiàn)參看圖9B,CMC 36接收存儲(chǔ)器寫(xiě)入請(qǐng)求114,如由箭頭176指示。存儲(chǔ)器寫(xiě)入請(qǐng)求114包含待寫(xiě)入到系統(tǒng)存儲(chǔ)器38的寫(xiě)入數(shù)據(jù)118,以及寫(xiě)入數(shù)據(jù)118待寫(xiě)入到的系統(tǒng)存儲(chǔ)器38的物理地址104兩者。出于說(shuō)明的目的,再次假定物理地址104對(duì)應(yīng)于存儲(chǔ)器塊82(0)。在接收到存儲(chǔ)器寫(xiě)入請(qǐng)求114后,CMC 36可即刻進(jìn)行操作來(lái)壓縮寫(xiě)入數(shù)據(jù)118,且基于壓縮寫(xiě)入數(shù)據(jù)118的結(jié)果,可確定用于寫(xiě)入數(shù)據(jù)118的壓縮模式。作為非限制性實(shí)例,壓縮模式可指示寫(xiě)入數(shù)據(jù)118是否成功地壓縮,和/或經(jīng)壓縮寫(xiě)入數(shù)據(jù)118所占用的存儲(chǔ)器塊82(0)到82(Z)的數(shù)目。基于所述壓縮模式,CMC 36產(chǎn)生用于寫(xiě)入數(shù)據(jù)118的CI 120。
CMC 36接著可確定物理地址104是否對(duì)應(yīng)于CI高速緩存條目158(0)到158(T)中的一者。如果CI高速緩存條目158(0)到158(T)中的一者,例如CI高速緩存條目158(0),對(duì)應(yīng)于存儲(chǔ)器塊82(0)的物理地址104(即,高速緩沖存儲(chǔ)器“命中”),那么CMC 36已識(shí)別包含用于存儲(chǔ)器塊82(0)的CI指示符(例如CI 160(0))的CI高速緩存條目158(0)。因此,CMC 36用所述所產(chǎn)生的CI 120更新CI高速緩存條目158(0)的CI 160(0),如由箭頭178指示。CMC 36接下來(lái)將寫(xiě)入數(shù)據(jù)118寫(xiě)入到存儲(chǔ)器線80(0)中的存儲(chǔ)器塊82(0)到82(Z)中的一或多者,如由箭頭180指示。CMC 36還將所產(chǎn)生的CI 120寫(xiě)入到所述寫(xiě)入數(shù)據(jù)118寫(xiě)入到的存儲(chǔ)器塊82(0)到82(Z)中的一或多者的ECC位86(0)到86(Z)中的一或多者中,如由箭頭182指示。根據(jù)一些方面,將所產(chǎn)生的CI 120寫(xiě)入到ECC位86(0)中,作為將寫(xiě)入數(shù)據(jù)118寫(xiě)入到第一存儲(chǔ)器塊82(0)的相同存儲(chǔ)器寫(xiě)入操作的一部分。
然而,如果CMC 36確定物理地址104不對(duì)應(yīng)于CI高速緩存條目158(0)到158(T)中的任一者(即,高速緩沖存儲(chǔ)器未中),那么CMC 36可用所述所產(chǎn)生的CI 120來(lái)更新所存儲(chǔ)的對(duì)應(yīng)于主目錄66中的物理地址104的CI 96(0),如由箭頭184指示。CMC 36接著可將主目錄存儲(chǔ)器塊94(0)作為新的CI高速緩存條目158(0)寫(xiě)入到CI高速緩沖存儲(chǔ)器70中,如由箭頭186指示。在一些方面,在將主目錄存儲(chǔ)器塊94(0)作為新的CI高速緩存條目158(0)寫(xiě)入之前,CI高速緩沖存儲(chǔ)器70可首先確定是否必須收回當(dāng)前CI高速緩存條目158(0)。如果是,那么CI高速緩沖存儲(chǔ)器70可進(jìn)一步確定自從寫(xiě)入到CI高速緩沖存儲(chǔ)器70中開(kāi)始,當(dāng)前CI高速緩存條目158(0)是否已經(jīng)修改。在一些方面,CI高速緩沖存儲(chǔ)器70可通過(guò)檢查來(lái)看與當(dāng)前CI高速緩存條目158(0)相關(guān)聯(lián)的重寫(xiě)狀態(tài)位(未圖示)是否已設(shè)定,來(lái)確定當(dāng)前CI高速緩存條目158(0)是否已經(jīng)修改。如果當(dāng)前CI高速緩存條目158(0)已經(jīng)修改,那么在將主目錄存儲(chǔ)器塊94(0)作為新的CI高速緩存條目158(0)寫(xiě)入到CI高速緩沖存儲(chǔ)器70之前,CMC 36將當(dāng)前CI高速緩存條目158(0)寫(xiě)入到主目錄存儲(chǔ)器塊94(0)到94(Y)中的所述對(duì)應(yīng)一者,如由箭頭188指示。
在一些方面,針對(duì)CMC 36接收到的存儲(chǔ)器寫(xiě)入請(qǐng)求114的僅某一百分比,可響應(yīng)于CI高速緩沖存儲(chǔ)器70中的高速緩沖存儲(chǔ)器未中,更新主目錄66。因此,在此些方面中,CMC 36可概率性地確定(例如基于隨機(jī)數(shù)產(chǎn)生器(未圖示))是否更新所存儲(chǔ)的用于主目錄66中的存儲(chǔ)器塊82(0)的CI 96(0)。如果不是,那么省略上文相對(duì)于高速緩沖存儲(chǔ)器未中所述的操作(即,既不更新主目錄66也不更新CI高速緩沖存儲(chǔ)器70,且所產(chǎn)生的CI 120存儲(chǔ)在存儲(chǔ)器塊82(0)到82(Z)中的一或多者的ECC位86(0)到86(Z)中)。
圖10A到10C是說(shuō)明用于通過(guò)圖3的CMC 36使用圖9A和9B的CI高速緩沖存儲(chǔ)器70執(zhí)行存儲(chǔ)器讀取操作的示范性操作的流程圖。明確地說(shuō),圖10A說(shuō)明用于接收存儲(chǔ)器讀取請(qǐng)求102并確定CI高速緩沖存儲(chǔ)器70針對(duì)對(duì)應(yīng)于存儲(chǔ)器讀取請(qǐng)求102的物理地址104的CI 160(0)的搜索導(dǎo)致命中還是未中的操作。圖10B說(shuō)明由于CI高速緩沖存儲(chǔ)器70上的高速緩沖存儲(chǔ)器未中而進(jìn)行的操作,而圖10C說(shuō)明由于CI高速緩沖存儲(chǔ)器70上的高速緩存命中而進(jìn)行的操作。清楚起見(jiàn),在描述圖10A到10C時(shí),參考圖2、3和9A的元件。
圖10A中的操作以CMC 36經(jīng)由內(nèi)部系統(tǒng)總線22接收存儲(chǔ)器讀取請(qǐng)求102開(kāi)始,所述存儲(chǔ)器讀取請(qǐng)求包括將在系統(tǒng)存儲(chǔ)器38中的存儲(chǔ)器線80(0)內(nèi)存取的存儲(chǔ)器塊82(0)的物理地址104(框190)。在一些方面,CMC 36可將早期存儲(chǔ)器讀取請(qǐng)求174發(fā)送到系統(tǒng)存儲(chǔ)器38,同時(shí)進(jìn)行后續(xù)操作(框192)。根據(jù)一些方面,CMC 36可在L4高速緩沖存儲(chǔ)器(例如圖5的L4高速緩沖存儲(chǔ)器78)上執(zhí)行高速緩沖存儲(chǔ)器讀取操作,同時(shí)進(jìn)行后續(xù)操作(框194)。接著做出關(guān)于L4高速緩沖存儲(chǔ)器78上的高速緩沖存儲(chǔ)器讀取操作是否導(dǎo)致高速緩存命中的確定(框195)。如果是,那么傳回高速緩沖存儲(chǔ)器讀取操作的結(jié)果,且對(duì)系統(tǒng)存儲(chǔ)器38的讀取變?yōu)槲礇Q議(框196)。
CMC 36接下來(lái)確定物理地址104是否對(duì)應(yīng)于CI高速緩沖存儲(chǔ)器70的多個(gè)CI高速緩存條目158(0)到158(T)中的CI高速緩存條目158(0)(框197)。如果CMC 36在決策框196處確定物理地址104并不對(duì)應(yīng)于所述多個(gè)CI高速緩存條目158(0)到158(T)中的CI高速緩存條目158(0)(即,高速緩沖存儲(chǔ)器未中),那么處理在圖10B的框198處恢復(fù)。如果確定物理地址104對(duì)應(yīng)于CI高速緩存條目158(0)(即,高速緩存命中),那么處理在圖10C的框200處恢復(fù)。
現(xiàn)參看圖10B,在一些方面中,CMC 36可響應(yīng)于高速緩沖存儲(chǔ)器未中,概率性地確定是否應(yīng)從主目錄66讀取CI 96(0)(框198)。注意,在此些方面中,存儲(chǔ)器塊82(0)到82(Z)、84(0)到84(Z)中的一或多者的ECC位86(0)到86(Z)、88(0)到88(Z)將存儲(chǔ)CI 90(0)到90(Z)、92(0)到92(Z)。作為非限制性實(shí)例,可使用隨機(jī)數(shù)產(chǎn)生器來(lái)進(jìn)行所述概率性確定。如果在決策框198處確定應(yīng)從主目錄66讀取CI 96(0),那么CMC 36從系統(tǒng)存儲(chǔ)器38中的主目錄66讀取含有對(duì)應(yīng)于物理地址104的CI 96(0)的主目錄存儲(chǔ)器塊94(0)(框202)。如果CMC 36在決策框198處確定不應(yīng)從主目錄66讀取CI 96(0),那么CMC 36從一或多個(gè)ECC位86(0)讀取CI 90(0),連同讀取存儲(chǔ)器塊82(0)(框204)。處理接著在圖10C的框214處恢復(fù)。
繼續(xù)參看圖10B,根據(jù)一些方面,CMC 36可接下來(lái)確定是否應(yīng)收回CI高速緩沖存儲(chǔ)器70的當(dāng)前CI高速緩存條目158(0)(框206)。如果不應(yīng)收回,那么處理在圖10B的框208處恢復(fù)。如果CMC 36在決策框206處確定應(yīng)收回當(dāng)前CI高速緩存條目158(0),那么CMC 36接下來(lái)確定當(dāng)前CI高速緩存條目158(0)是否已經(jīng)修改(框210)。作為非限制性實(shí)例,此確定可基于確定用于CI高速緩存條目158(0)的重寫(xiě)狀態(tài)位是否已設(shè)定。如果在決策框210處確定當(dāng)前CI高速緩存條目158(0)將不變,那么處理在圖10B的框208處恢復(fù)。否則,CMC 36將當(dāng)前CI高速緩存條目158(0)寫(xiě)入到主目錄66(框212)。接著將主目錄存儲(chǔ)器塊94(0)寫(xiě)入到CI高速緩沖存儲(chǔ)器70的CI高速緩存條目158(0)(框208)。處理接著在圖10C的框200處恢復(fù)。
現(xiàn)在轉(zhuǎn)向圖10C,CMC 36從CI高速緩沖存儲(chǔ)器70的CI高速緩存條目158(0)讀取CI 160(0)(框200)。CMC 36接下來(lái)基于所述CI 160(0),確定為存儲(chǔ)器讀取請(qǐng)求102讀取的系統(tǒng)存儲(chǔ)器38中的存儲(chǔ)器線80(0)內(nèi)的存儲(chǔ)器塊82(0)到82(Z)的數(shù)目(框214)。CMC 36接著在物理地址104處開(kāi)始讀取系統(tǒng)存儲(chǔ)器38中的存儲(chǔ)器線80(0)內(nèi)的所述所確定數(shù)目的存儲(chǔ)器塊82(0)到82(Z)(框216)。在發(fā)出早期存儲(chǔ)器讀取請(qǐng)求174的方面中,框216的用于讀取所述所確定數(shù)目的存儲(chǔ)器塊82(0)到82(Z)的操作可包含基于所述CI 160(0)修改早期存儲(chǔ)器讀取請(qǐng)求174(框218)。
為了說(shuō)明圖3的CMC 36使用圖8的CI高速緩沖存儲(chǔ)器70執(zhí)行存儲(chǔ)器寫(xiě)入操作的示范性操作,提供圖11A到11C。圖11A說(shuō)明用于接收存儲(chǔ)器寫(xiě)入請(qǐng)求114并確定CI高速緩沖存儲(chǔ)器70針對(duì)對(duì)應(yīng)于存儲(chǔ)器寫(xiě)入請(qǐng)求114的物理地址104的CI高速緩存條目158(0)到158(T)的搜索導(dǎo)致命中還是未中的操作。圖11B說(shuō)明由于CI高速緩沖存儲(chǔ)器70上的高速緩沖存儲(chǔ)器未中而進(jìn)行的操作,而圖11C說(shuō)明由于CI高速緩沖存儲(chǔ)器70上的高速緩存命中而進(jìn)行的操作。清楚起見(jiàn),在描述圖11A到11C時(shí),參考圖2、3和9B的元件。
在圖11A中,操作以CMC 36經(jīng)由內(nèi)部系統(tǒng)總線22存儲(chǔ)器寫(xiě)入請(qǐng)求114開(kāi)始,所述存儲(chǔ)器寫(xiě)入請(qǐng)求包括寫(xiě)入數(shù)據(jù)118以及待寫(xiě)入在系統(tǒng)存儲(chǔ)器38中的存儲(chǔ)器線80(0)內(nèi)的存儲(chǔ)器塊82(0)的物理地址104(框220)。CMC 36為寫(xiě)入數(shù)據(jù)118確定壓縮模式(框222)。在一些方面,壓縮模式可指示寫(xiě)入數(shù)據(jù)118是經(jīng)壓縮的還是未經(jīng)壓縮的,和/或?qū)懭霐?shù)據(jù)118占用的存儲(chǔ)器塊82(0)到82(Z)的數(shù)目?;谒鰤嚎s模式,CMC 36基于所述壓縮模式產(chǎn)生用于寫(xiě)入數(shù)據(jù)118的CI 120(框224)。
CMC 36接下來(lái)確定物理地址104是否對(duì)應(yīng)于CI高速緩沖存儲(chǔ)器70的多個(gè)CI高速緩存條目158(0)到158(T)中的CI高速緩存條目158(0)(框226)。如果在決策框226處確定物理地址104不對(duì)應(yīng)于所述多個(gè)CI高速緩存條目158(0)到158(T)中的CI高速緩存條目158(0)(即,高速緩沖存儲(chǔ)器未中),那么處理在圖11B的框228處恢復(fù)。然而,如果CMC 36在決策框226處確定物理地址104對(duì)應(yīng)于CI高速緩存條目158(0)(即,高速緩存命中),那么處理在圖11C的框230處恢復(fù)。
現(xiàn)參看圖11B,CMC 36的一些方面可概率性地確定壓縮指示符96(0)是否應(yīng)在主目錄66中更新(框228)。如果在決策框228處確定不應(yīng)更新CI 96(0),那么處理在圖11C的框242處恢復(fù)。然而,如果CMC 36在決策框228處確定更新CI 96(0),或如果CMC 36不經(jīng)配置以使用概率性確定,那么CMC 36用所述所產(chǎn)生的CI 120來(lái)更新所存儲(chǔ)的對(duì)應(yīng)于主目錄66中的物理地址104的CI 96(0)(框232)。
在一些方面,CMC 36可接下來(lái)確定是否應(yīng)收回CI高速緩沖存儲(chǔ)器70的當(dāng)前CI高速緩存條目158(0)(框234)。如果不應(yīng)收回,那么處理在圖11B的框236處恢復(fù)。如果CMC 36在決策框234處確定應(yīng)收回當(dāng)前CI高速緩存條目158(0),那么CMC 36確定當(dāng)前CI高速緩存條目158(0)是否已經(jīng)修改(框238)。作為非限制性實(shí)例,確定CI高速緩存條目158(0)是否已經(jīng)修改可包括確定CI高速緩存條目158(0)的重寫(xiě)狀態(tài)位是否已設(shè)定。如果在決策框238處確定當(dāng)前CI高速緩存條目158(0)將不變,那么處理在圖11B的框236處恢復(fù)。然而,如果CMC 36在決策框238處確定當(dāng)前CI高速緩存條目158(0)已經(jīng)修改,那么CMC 36將當(dāng)前CI高速緩存條目158(0)寫(xiě)入到主目錄66(框240)。CMC 36接著將所存儲(chǔ)的CI 96(0)寫(xiě)入到CI高速緩沖存儲(chǔ)器70的CI高速緩存條目158(0)(框236)。處理接著在圖11C的框242處恢復(fù)。
在圖11C中,CMC 36用所述所產(chǎn)生的CI 120來(lái)更新CI高速緩沖存儲(chǔ)器70的CI高速緩存條目158(0)(框230)。CMC 36接著基于所產(chǎn)生的CI 120將寫(xiě)入數(shù)據(jù)118寫(xiě)入到系統(tǒng)存儲(chǔ)器38中的存儲(chǔ)器線80(0)中的一或多個(gè)存儲(chǔ)器塊82(0)到82(Z)(框242)。將所產(chǎn)生的CI 120寫(xiě)入到系統(tǒng)存儲(chǔ)器38的存儲(chǔ)器線80(0)中的一或多個(gè)存儲(chǔ)器塊82(0)到82(Z)中的每一者的一或多個(gè)ECC位86(0)到86(Z)中(框244)。在一些方面,將所產(chǎn)生的CI 120寫(xiě)入到ECC位86(0)中,作為將寫(xiě)入數(shù)據(jù)118寫(xiě)入到第一存儲(chǔ)器塊82(0)的相同存儲(chǔ)器寫(xiě)入操作的一部分。
如上文所論述,可需要提供具有可配置固定數(shù)據(jù)模式的存儲(chǔ)器數(shù)據(jù)塊82(0)到82(Z)的壓縮,作為最佳化壓縮的特殊情況。舉例來(lái)說(shuō),如果存儲(chǔ)器數(shù)據(jù)塊82(0)到82(Z)(例如128個(gè)字節(jié))全部為0,那么不讀取或?qū)懭霐?shù)據(jù),而是在單獨(dú)數(shù)據(jù)結(jié)構(gòu)中表示為全部為0??稍谙到y(tǒng)存儲(chǔ)器38中提供零位,以表示存儲(chǔ)器線80(0)到80(X)如果經(jīng)壓縮,從而每存儲(chǔ)器數(shù)據(jù)塊82(0)到82(Z)添加一(1)個(gè)位。CMC 36可維持高速緩沖存儲(chǔ)器,其例如針對(duì)若干128字節(jié)存儲(chǔ)器塊82(0)到82(Z),記得塊是否全為0。對(duì)于寫(xiě)入操作,如果存儲(chǔ)器數(shù)據(jù)塊82(0)到82(Z)的線全為0,那么CMC 36并不將所述線寫(xiě)入到系統(tǒng)存儲(chǔ)器38,而是更新CI高速緩沖存儲(chǔ)器70。對(duì)于讀取操作,為所述線檢查CI高速緩沖存儲(chǔ)器70中的零位。如果所述線在CI高速緩沖存儲(chǔ)器70中,那么取決于所述零位,從系統(tǒng)存儲(chǔ)器38讀取所述線,或傳回全0。如果所述線不在CI高速緩沖存儲(chǔ)器70中,那么其從系統(tǒng)存儲(chǔ)器38讀取。如果所述線為零,那么可更新CI高速緩沖存儲(chǔ)器70。
可根據(jù)已知技術(shù)(例如LRU、偽LRU等)更新CI高速緩沖存儲(chǔ)器70,以收回高速緩沖存儲(chǔ)器線74。如果收回線,那么需要將具有其零位集合的所有線寫(xiě)入到主存儲(chǔ)器。這可組織為寫(xiě)入全零隊(duì)列??赡艿淖罴鸦瘜槭褂脙?2)個(gè)位,其中一個(gè)位表示所述線是否為全零,且另一位表示所述線是否已使用(即,尚未寫(xiě)入到主存儲(chǔ)器)。CMC 36的背景任務(wù)可檢測(cè)CI高速緩沖存儲(chǔ)器70,并將具有重寫(xiě)狀態(tài)位的線排入“寫(xiě)入全零”隊(duì)列中。使用上文所述的存儲(chǔ)器帶寬壓縮機(jī)制,CMC 36可按需要使用不同的存儲(chǔ)器壓縮機(jī)制。舉例來(lái)說(shuō),可希望使用針對(duì)小數(shù)據(jù)塊(例如64、128和256個(gè)字節(jié))優(yōu)化的存儲(chǔ)器壓縮機(jī)制,因?yàn)樯衔牡膶?shí)例中所描述的高速緩沖存儲(chǔ)器線74包含這些大小作為實(shí)例。
在一些方面,包括多個(gè)位的CI的值可指示存儲(chǔ)于存儲(chǔ)器塊(例如存儲(chǔ)器塊82(0)到82(Z)中的一者)中的壓縮狀態(tài)和/或固定數(shù)據(jù)模式。作為非限制性實(shí)例,對(duì)于兩(2)位的CI,值“00”可指示對(duì)應(yīng)存儲(chǔ)器塊未經(jīng)壓縮,而值“01”可指示對(duì)應(yīng)存儲(chǔ)器塊經(jīng)壓縮。值“11”可指示固定模式(例如全零(0)或全1(1))存儲(chǔ)在對(duì)應(yīng)存儲(chǔ)器塊中。在此些方面中,將始終更新而不是在概率性確定之后更新主目錄66。
在這點(diǎn)上,圖12說(shuō)明頻繁模式壓縮數(shù)據(jù)壓縮機(jī)制246。在這點(diǎn)上,待經(jīng)壓縮的源數(shù)據(jù)格式248中的源數(shù)據(jù)例如示出為128個(gè)字節(jié)。下文示出經(jīng)壓縮數(shù)據(jù)格式250。以前綴碼Px以及所述前綴后面作為Datax的數(shù)據(jù)的格式提供經(jīng)壓縮數(shù)據(jù)格式250。所述前綴為3位。所述前綴碼在頻繁模式編碼表254中的前綴碼列252中示出,所述頻繁模式編碼表示出編碼在用于前綴碼列252中的給定前綴碼的模式經(jīng)編碼列256中的模式。經(jīng)編碼的模式的數(shù)據(jù)大小提供于頻繁模式編碼表254的數(shù)據(jù)大小列258中。
圖13說(shuō)明32位頻繁模式壓縮數(shù)據(jù)壓縮機(jī)制260。在這點(diǎn)上,待壓縮的源數(shù)據(jù)格式262中的源數(shù)據(jù)例如示出為128個(gè)字節(jié)。下文示出經(jīng)壓縮數(shù)據(jù)格式264。以前綴Px以及緊接在所述前綴后面作為Datax的數(shù)據(jù)的格式提供經(jīng)壓縮數(shù)據(jù)格式264。以不同格式的前綴碼Px、數(shù)據(jù)Datax、旗標(biāo)和模式來(lái)提供新經(jīng)壓縮數(shù)據(jù)格式266,其經(jīng)組織以出于效率目的而分組在一起。所述前綴碼為3位。所述前綴碼在頻率模式編碼表270中的前綴碼列268中示出,其示出編碼在用于前綴碼列268中的給定前綴碼的模式經(jīng)編碼列272中的模式。經(jīng)編碼的模式的數(shù)據(jù)大小提供于頻繁模式編碼表270的數(shù)據(jù)大小列274中。前綴碼000表示未經(jīng)壓縮模式,其將為呈新的經(jīng)壓縮數(shù)據(jù)格式266的32位的全大小的數(shù)據(jù)。前綴碼001表示全零數(shù)據(jù)塊,其可提供作為新的經(jīng)壓縮數(shù)據(jù)格式266的數(shù)據(jù)中的0位。對(duì)于3位前綴,可使用前綴碼010到111來(lái)編碼在源數(shù)據(jù)中辨識(shí)的其它特定模式,其在此實(shí)例中分別為0、4、8、12、16和24位中的模式。
圖14說(shuō)明32位頻繁模式壓縮數(shù)據(jù)壓縮機(jī)制276的實(shí)例。在這點(diǎn)上,待壓縮的源數(shù)據(jù)格式278中的源數(shù)據(jù)例如示出為128個(gè)字節(jié)。下文示出經(jīng)壓縮數(shù)據(jù)格式280。以前綴Px以及所述前綴后面作為Datax的數(shù)據(jù)的格式提供經(jīng)壓縮數(shù)據(jù)格式280。以不同格式的前綴碼Px、數(shù)據(jù)Datax、旗標(biāo)和模式來(lái)提供新經(jīng)壓縮數(shù)據(jù)格式282,其經(jīng)組織以出于效率目的而分組在一起。所述前綴碼為3位。所述前綴碼在頻率模式編碼表286中的前綴碼列284中示出,其示出編碼在用于前綴碼列284中的給定前綴碼的模式經(jīng)編碼列288中的模式。經(jīng)編碼的模式的數(shù)據(jù)大小提供于頻繁模式編碼表286的數(shù)據(jù)大小列290中。前綴碼000表示未經(jīng)壓縮模式,其將為呈新的經(jīng)壓縮數(shù)據(jù)格式282的32位的全大小的數(shù)據(jù)。前綴碼001表示全零數(shù)據(jù)塊,其可提供作為新的經(jīng)壓縮數(shù)據(jù)格式282的數(shù)據(jù)中的0位。前綴碼010表示模式0xFFFFFFFF,其為特定模式,且因此根據(jù)新的經(jīng)壓縮數(shù)據(jù)格式282,在經(jīng)壓縮數(shù)據(jù)中需要0位數(shù)據(jù)大小。用于前綴碼011到111的頻率模式編碼表286中示出其它模式。新的經(jīng)壓縮數(shù)據(jù)格式282中的旗標(biāo)字段指示用于前綴碼001到111的哪些模式存在于經(jīng)壓縮數(shù)據(jù)的數(shù)據(jù)部分(即,Datax)中。如果所述模式存在于經(jīng)壓縮數(shù)據(jù)中,那么將所述模式存儲(chǔ)在新的經(jīng)壓縮數(shù)據(jù)格式282中,接著可查詢所述經(jīng)壓縮數(shù)據(jù)格式,來(lái)重新創(chuàng)建未經(jīng)壓縮的數(shù)據(jù)。所述數(shù)據(jù)字段包含根據(jù)與新的經(jīng)壓縮數(shù)據(jù)格式282中的數(shù)據(jù)字段相關(guān)聯(lián)的前綴碼的經(jīng)壓縮數(shù)據(jù)。
圖15說(shuō)明64位頻繁模式壓縮數(shù)據(jù)壓縮機(jī)制292的另一實(shí)例。在這點(diǎn)上,待壓縮的源數(shù)據(jù)格式294中的源數(shù)據(jù)例如示出為128個(gè)字節(jié)。以不同格式的前綴碼Px、數(shù)據(jù)Datax、旗標(biāo)和模式來(lái)提供新經(jīng)壓縮數(shù)據(jù)格式296,其經(jīng)組織以出于效率目的而分組在一起。所述前綴碼為4位。在頻率模式編碼表302中的前綴碼列298、300中示出前綴碼,所述頻率模式編碼表示出編碼在用于前綴碼列298、300中的給定前綴碼的模式經(jīng)編碼列304、306中的模式。經(jīng)編碼的模式的數(shù)據(jù)大小提供于頻繁模式編碼表302的數(shù)據(jù)大小列308、310中。前綴碼0000表示全零數(shù)據(jù)塊,其可提供作為新的經(jīng)壓縮數(shù)據(jù)格式296的數(shù)據(jù)中的0位。用于前綴碼0001到1111的頻率模式編碼表302中示出其它模式,其包含用于頻繁發(fā)生ASCII模式的ASCII模式。新的經(jīng)壓縮數(shù)據(jù)格式296中的旗標(biāo)字段指示用于前綴碼0001到1111的哪些模式存在于經(jīng)壓縮數(shù)據(jù)的數(shù)據(jù)部分(即,Datax)中。如果所述模式存在于經(jīng)壓縮數(shù)據(jù)中,那么將所述模式存儲(chǔ)在新的經(jīng)壓縮數(shù)據(jù)格式296中,接著可查詢所述經(jīng)壓縮數(shù)據(jù)格式,來(lái)重新創(chuàng)建未經(jīng)壓縮的數(shù)據(jù)。所述數(shù)據(jù)字段包含根據(jù)與新的經(jīng)壓縮數(shù)據(jù)格式296中的數(shù)據(jù)字段相關(guān)聯(lián)的前綴碼的經(jīng)壓縮數(shù)據(jù)。
圖16說(shuō)明64位頻繁模式壓縮數(shù)據(jù)壓縮機(jī)制312的另一實(shí)例。在這點(diǎn)上,待壓縮的源數(shù)據(jù)格式314中的源數(shù)據(jù)例如示出為128個(gè)字節(jié)。以不同格式的前綴碼Px、數(shù)據(jù)Datax、旗標(biāo)和模式來(lái)提供新經(jīng)壓縮數(shù)據(jù)格式316,其經(jīng)組織以出于效率目的而分組在一起。所述前綴碼為4位。在頻率模式編碼表322中的前綴碼列318、320中示出前綴碼,所述頻率模式編碼表示出編碼在用于前綴碼列318、320中的給定前綴碼的模式經(jīng)編碼列324、326中的模式。經(jīng)編碼的模式的數(shù)據(jù)大小提供于頻繁模式編碼表322的數(shù)據(jù)大小列328、330中。前綴碼0000表示全零數(shù)據(jù)塊,其可提供作為新的經(jīng)壓縮數(shù)據(jù)格式316的數(shù)據(jù)中的0位。用于前綴碼0001到1111的頻率模式編碼表322中示出其它模式,其可包含固定模式的組合。新的經(jīng)壓縮數(shù)據(jù)格式316中的旗標(biāo)字段指示用于前綴碼0001到1111的哪些模式存在于經(jīng)壓縮數(shù)據(jù)的數(shù)據(jù)部分(即,Datax)中。如果所述模式存在于經(jīng)壓縮數(shù)據(jù)中,那么所述模式以新的經(jīng)壓縮數(shù)據(jù)格式316存儲(chǔ),接著可在數(shù)據(jù)壓縮期間查詢所述模式,以重新創(chuàng)建未經(jīng)壓縮的數(shù)據(jù)。前綴碼P0到P31可鏈接到模式,其連同對(duì)應(yīng)數(shù)據(jù)(Datax)使用,來(lái)以未經(jīng)壓縮格式重新創(chuàng)建全長(zhǎng)數(shù)據(jù)。所述數(shù)據(jù)字段包含根據(jù)與新的經(jīng)壓縮數(shù)據(jù)格式316中的數(shù)據(jù)字段相關(guān)聯(lián)的前綴碼的經(jīng)壓縮數(shù)據(jù)。
圖17中的表332中示出可結(jié)合圖16中的頻繁模式壓縮數(shù)據(jù)壓縮機(jī)制312使用的固定模式的實(shí)例,其中所述固定模式提供于模式列334中,其長(zhǎng)度在長(zhǎng)度列336中,且所述模式的定義在模式定義列338中。旗標(biāo)定義表340中示出旗標(biāo)定義,以允許CMC 36使鏈接到前綴碼的給定模式與用以創(chuàng)建未經(jīng)壓縮數(shù)據(jù)的定義相關(guān)。旗標(biāo)定義表340包含用于旗標(biāo)列342中的給定旗標(biāo)的位,用于旗標(biāo)值列344中的給定旗標(biāo)的位的值,以及用于旗標(biāo)定義列346中的給定旗標(biāo)的旗標(biāo)定義。
圖18說(shuō)明64位頻繁模式壓縮數(shù)據(jù)壓縮機(jī)制348的另一實(shí)例。在這點(diǎn)上,待壓縮的源數(shù)據(jù)格式350中的源數(shù)據(jù)例如示出為128個(gè)字節(jié)。以不同格式的前綴碼Px、數(shù)據(jù)Datax、旗標(biāo)和模式來(lái)提供新經(jīng)壓縮數(shù)據(jù)格式352,其經(jīng)組織以出于效率目的而分組在一起。所述前綴碼為4位。在頻率模式編碼表358中的前綴碼列354、356中示出前綴碼,所述頻率模式編碼表示出編碼在用于前綴碼列354、356中的給定前綴碼的模式經(jīng)編碼列360、362中的模式。經(jīng)編碼的模式的數(shù)據(jù)大小提供于頻繁模式編碼表358的數(shù)據(jù)大小列364、366中。前綴碼0000表示全零數(shù)據(jù)塊,其可提供作為新的經(jīng)壓縮數(shù)據(jù)格式352的數(shù)據(jù)中的0位。前綴碼1111表示不是以新的經(jīng)壓縮數(shù)據(jù)格式352壓縮的數(shù)據(jù)塊。用于前綴碼0001到1110的頻率模式編碼表358中示出其它模式,其可包含如本文所示的限定模式的組合。新的經(jīng)壓縮數(shù)據(jù)格式352中的旗標(biāo)字段指示用于前綴碼0000到1110的哪些模式存在于經(jīng)壓縮數(shù)據(jù)的數(shù)據(jù)部分(即,Datax)中。如果所述模式存在于經(jīng)壓縮數(shù)據(jù)中,那么將所述模式存儲(chǔ)在新的經(jīng)壓縮數(shù)據(jù)格式352中,接著可查詢所述經(jīng)壓縮數(shù)據(jù)格式,來(lái)重新創(chuàng)建未經(jīng)壓縮的數(shù)據(jù)。新的經(jīng)壓縮數(shù)據(jù)格式352示出為僅含有模式0到5,因?yàn)樵诖藢?shí)例中,這些是源數(shù)據(jù)中存在的前綴碼0000到1110中所導(dǎo)致的僅有模式。所述數(shù)據(jù)字段包含根據(jù)與新的經(jīng)壓縮數(shù)據(jù)格式352中的數(shù)據(jù)字段相關(guān)聯(lián)的前綴碼的經(jīng)壓縮數(shù)據(jù)。
使用根據(jù)本文所揭示的各方面的基于CPU的系統(tǒng)中的CMC來(lái)提供存儲(chǔ)器帶寬壓縮可提供于任何基于處理器的裝置中或集成到其中。實(shí)例包含(但不限于)機(jī)頂盒、娛樂(lè)單元、導(dǎo)航裝置、通信裝置、固定位置數(shù)據(jù)單元、移動(dòng)位置數(shù)據(jù)單元、移動(dòng)電話、蜂窩式電話、計(jì)算機(jī)、便攜式計(jì)算機(jī)、桌上型計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)、監(jiān)視器、計(jì)算機(jī)監(jiān)視器、電視機(jī)、調(diào)諧器、無(wú)線電、衛(wèi)星無(wú)線電、音樂(lè)播放器、數(shù)字音樂(lè)播放器、便攜式音樂(lè)播放器、數(shù)字視頻播放器、視頻播放器、數(shù)字影音光盤(DVD)播放器和便攜式數(shù)字視頻播放器。
在這點(diǎn)上,圖19說(shuō)明可結(jié)合圖2的CMC 36使用圖2的SoC 10'的基于處理器的系統(tǒng)368的實(shí)例。在此實(shí)例中,基于處理器的系統(tǒng)368包含一或多個(gè)CPU 370,每一CPU包含一或多個(gè)處理器372。CPU 370可具有耦合到處理器372以用于快速存取臨時(shí)存儲(chǔ)的數(shù)據(jù)的高速緩沖存儲(chǔ)器374。CPU 370耦合到系統(tǒng)總線376,且可互耦包含于基于處理器的系統(tǒng)368中的裝置。眾所周知,CPU 370通過(guò)經(jīng)由系統(tǒng)總線376交換地址、控制和數(shù)據(jù)信息而與這些其它裝置通信。舉例來(lái)說(shuō),CPU 370可將總線事務(wù)請(qǐng)求傳送到存儲(chǔ)器控制器378(作為從屬裝置的實(shí)例)。盡管圖19中未說(shuō)明,但可提供多個(gè)系統(tǒng)總線376。
其它裝置可連接到系統(tǒng)總線376。如圖19中所說(shuō)明,作為實(shí)例,這些裝置可包含存儲(chǔ)器系統(tǒng)380、一或多個(gè)輸入裝置382、一或多個(gè)輸出裝置384、一或多個(gè)網(wǎng)絡(luò)接口裝置386以及一或多個(gè)顯示器控制器388。輸入裝置382可包含任何類型的輸入裝置,包含但不限于輸入按鍵、開(kāi)關(guān)、話音處理器等。輸出裝置384可包含任何類型的輸出裝置,包含(但不限于)音頻、視頻、其它視覺(jué)指示器等。網(wǎng)絡(luò)接口裝置386可為經(jīng)配置以允許將數(shù)據(jù)交換到網(wǎng)絡(luò)390并從網(wǎng)絡(luò)390交換數(shù)據(jù)的任何裝置。網(wǎng)絡(luò)390可為任何類型的網(wǎng)絡(luò),包含但不限于有線或無(wú)線網(wǎng)絡(luò)、私用或公用網(wǎng)絡(luò)、局域網(wǎng)(LAN)、廣局域網(wǎng)、無(wú)線局域網(wǎng)、藍(lán)牙(BT)和因特網(wǎng)。網(wǎng)絡(luò)接口裝置386可經(jīng)配置以支持所要的任何類型的通信協(xié)議。存儲(chǔ)器系統(tǒng)380可包含一或多個(gè)存儲(chǔ)器單元392(0)到392(N)。
CPU 370還可經(jīng)配置以經(jīng)由系統(tǒng)總線376存取顯示器控制器388,以控制發(fā)送到一或多個(gè)顯示器394的信息。顯示器控制器388將信息發(fā)送到顯示器394以經(jīng)由一個(gè)或多個(gè)視頻處理器396顯示,所述視頻處理器將待顯示的信息處理成適合于顯示器394的格式。顯示器394可包含任何類型的顯示器,包含但不限于陰極射線管(CRT)、液晶顯示器(LCD)、發(fā)光二極管(LED)顯示器、等離子顯示器等。
所屬領(lǐng)域的技術(shù)人員將進(jìn)一步了解,結(jié)合本文中所揭示的各方面所描述的各種說(shuō)明性邏輯塊、模塊、電路以及算法可被實(shí)施為電子硬件、存儲(chǔ)于存儲(chǔ)器或另一計(jì)算機(jī)可讀媒體中且由處理器或其它處理裝置執(zhí)行的指令,或此兩者的組合。本文所述的裝置可在任何電路中使用,例如硬件組件、集成電路(IC)或IC芯片。本文所揭示的存儲(chǔ)器可以是任何類型和大小的存儲(chǔ)器,且可經(jīng)配置以存儲(chǔ)期望的任何類型的信息。為清楚地說(shuō)明這種可互換性,上文已大體上關(guān)于其功能性而描述了各種說(shuō)明性組件、塊、模塊、電路和步驟。如何實(shí)施此功能性取決于特定應(yīng)用、設(shè)計(jì)選項(xiàng)和/或強(qiáng)加于整個(gè)系統(tǒng)的設(shè)計(jì)約束。熟練的技術(shù)人員可針對(duì)每一特定應(yīng)用以不同方式實(shí)施所描述的功能性,但此類實(shí)施決策不應(yīng)被解釋為引起偏離本發(fā)明的范圍。
結(jié)合本文中所揭示的各方面所描述的各種說(shuō)明性邏輯塊、模塊和電路可用以下各項(xiàng)來(lái)實(shí)施或執(zhí)行:處理器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)或其它可編程邏輯裝置、離散門或晶體管邏輯、離散硬件組件,或經(jīng)設(shè)計(jì)以執(zhí)行本文中所描述的功能的其任何組合。處理器可以是微處理器,但在替代例中,處理器可以是任何常規(guī)處理器、控制器、微控制器或狀態(tài)機(jī)。處理器還可實(shí)施為計(jì)算裝置的組合,例如,DSP與微處理器的組合、多個(gè)微處理器的組合、一或多個(gè)微處理器結(jié)合DSP核心,或任何其它此類配置。
本文中所揭示的各方面可以硬件和存儲(chǔ)于硬件中的指令來(lái)體現(xiàn),且可駐留于(例如)隨機(jī)存取存儲(chǔ)器(RAM)、快閃存儲(chǔ)器、只讀存儲(chǔ)器(ROM)、電可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)、寄存器、硬盤、可裝卸式磁盤、CD-ROM或此領(lǐng)域中已知的任何其它形式的計(jì)算機(jī)可讀媒體中。示范性存儲(chǔ)媒體耦合到處理器,使得處理器可從存儲(chǔ)媒體讀取信息并且將信息寫(xiě)入到存儲(chǔ)媒體。在替代方案中,存儲(chǔ)媒體可集成到處理器。處理器和存儲(chǔ)媒體可駐留在ASIC中。ASIC可駐留在遠(yuǎn)程站中。在替代方案中,處理器和存儲(chǔ)媒體可作為離散組件駐留在遠(yuǎn)程臺(tái)、基站或服務(wù)器中。
還應(yīng)注意,描述本文中的示范性方面中的任一者中所描述的操作步驟是為了提供實(shí)例和論述??捎贸怂f(shuō)明的序列之外的大量不同序列執(zhí)行所描述的操作。另外,單個(gè)操作步驟中所描述的操作實(shí)際上可在許多不同步驟中執(zhí)行。另外,可組合在示范性方面中所論述的一或多個(gè)操作步驟。應(yīng)理解,如所屬領(lǐng)域的技術(shù)人員將容易顯而易見(jiàn),流程圖中所說(shuō)明的操作步驟可以經(jīng)受眾多不同修改。所屬領(lǐng)域的技術(shù)人員還將了解,可使用多種不同技術(shù)和技法中的任一者來(lái)表示信息和信號(hào)。舉例來(lái)說(shuō),可通過(guò)電壓、電流、電磁波、磁場(chǎng)或磁粒子、光場(chǎng)或光粒子或其任何組合來(lái)表示在整個(gè)上文描述中可能參考的數(shù)據(jù)、指令、命令、信息、信號(hào)、位、符號(hào)和碼片。
提供本發(fā)明的前述描述以使所屬領(lǐng)域的技術(shù)人員能夠制造或使用本發(fā)明。所屬領(lǐng)域的技術(shù)人員將容易顯而易見(jiàn)對(duì)本發(fā)明的各種修改,且本文中界定的一般原理可應(yīng)用于其它變化而不脫離本發(fā)明的精神或范圍。因此,本發(fā)明并不希望限于本文中所描述的實(shí)例和設(shè)計(jì),而是應(yīng)被賦予與本文中所揭示的原理和新穎特征相一致的最廣范圍。