用于可執(zhí)行代碼的壓縮與實(shí)時(shí)解壓縮的方法
【專利摘要】描述了與可執(zhí)行代碼的壓縮和實(shí)時(shí)解壓縮關(guān)聯(lián)的系統(tǒng)、方法和其他實(shí)施例。根據(jù)一個(gè)實(shí)施例,一種裝置包括存儲(chǔ)數(shù)據(jù)的壓縮塊的存儲(chǔ)器。該數(shù)據(jù)是用于處理元件的可執(zhí)行代碼。該裝置還包括解壓縮邏輯。該解壓縮邏輯從處理元件接收針對(duì)數(shù)據(jù)的請(qǐng)求,并且確定存儲(chǔ)該數(shù)據(jù)的壓縮塊。解壓縮該壓縮塊以產(chǎn)生未壓縮塊。然后,該解壓縮邏輯向處理元件提供所請(qǐng)求的數(shù)據(jù)。在一個(gè)實(shí)施例中,未壓縮塊具有預(yù)定的固定塊大小。該預(yù)定的固定塊大小基于未壓縮數(shù)據(jù)的數(shù)量、期望的壓縮比和期望的存取時(shí)間中的至少一個(gè)而被選擇。
【專利說(shuō)明】用于可執(zhí)行代碼的壓縮與實(shí)時(shí)解壓縮的方法
[0001]相關(guān)申請(qǐng)的交叉引用
[0002]本專利公開要求于2011年4月11日提交的第61/474,183號(hào)美國(guó)臨時(shí)申請(qǐng)的權(quán)益,通過(guò)引用將其全部并入于此。
【背景技術(shù)】
[0003]本文所提供的【背景技術(shù)】的描述是出于總體上呈現(xiàn)本公開的背景的目的。當(dāng)前署名的發(fā)明人的工作(到該【背景技術(shù)】中所描述的工作的程度)以及在提交時(shí)可能無(wú)法以其它方式作為現(xiàn)有技術(shù)的衡量的說(shuō)明書的各方面,既非明確地也非隱含地承認(rèn)是本公開的現(xiàn)有技術(shù)。
[0004]微處理器和其他處理元件存取可執(zhí)行代碼??蓤?zhí)行代碼因此被存儲(chǔ)在微處理器可易于存取的存儲(chǔ)器內(nèi)。在片上系統(tǒng)微處理器產(chǎn)品中,可執(zhí)行代碼通常存儲(chǔ)于動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)或同步隨機(jī)存取存儲(chǔ)器(SRAM)內(nèi)。因?yàn)镈RAM成本相對(duì)低并且具有高存儲(chǔ)單元密度使得能夠占用較少空間,所以DRAM很適合存儲(chǔ)可執(zhí)行代碼。使用DRAM存儲(chǔ)可執(zhí)行代碼的一個(gè)缺點(diǎn)是DRAM通常是與片上系統(tǒng)分離的部件,因此必需外部連接并且增加片上系統(tǒng)的整體尺寸。片上系統(tǒng)內(nèi)還可以包括SRAM或DRAM,從而消除分離的部件的需要。這大大增加尺寸,并且因此大大增加片上系統(tǒng)的成本。
[0005]在信息理論和計(jì)算機(jī)科學(xué)中,數(shù)據(jù)壓縮涉及使用比數(shù)據(jù)原始表示會(huì)使用的位更少的位來(lái)編碼數(shù)據(jù)。壓縮減少存儲(chǔ)數(shù)據(jù)所需的存儲(chǔ)空間。然而,壓縮數(shù)據(jù)還可以導(dǎo)致數(shù)據(jù)解壓縮的必要,從而需要額外的時(shí)間和處理。在解壓縮期間,數(shù)據(jù)被解碼以將數(shù)據(jù)返回至原始的表示。傳統(tǒng)上,盡可能快地執(zhí)行壓縮和解壓縮以限制資源的消耗和對(duì)用戶的干擾。因此,流行的壓縮算法(例如,LZ77)試圖平衡壓縮的速度與壓縮的效力。因此,當(dāng)能夠高速執(zhí)行時(shí),這些壓縮算法可能不能提供最大壓縮。
【發(fā)明內(nèi)容】
[0006]在一個(gè)實(shí)施例中,一種裝置包括存儲(chǔ)數(shù)據(jù)的壓縮塊的存儲(chǔ)器。該數(shù)據(jù)是用于處理元件的可執(zhí)行代碼。所述裝置還包括解壓縮邏輯。該解壓縮邏輯從處理元件接收對(duì)數(shù)據(jù)的請(qǐng)求,并且確定存儲(chǔ)該數(shù)據(jù)的壓縮塊。該壓縮塊被解壓縮以產(chǎn)生未壓縮塊。然后,解壓縮邏輯向處理元件提供所請(qǐng)求的數(shù)據(jù)。
[0007]在一個(gè)實(shí)施例中,未壓縮塊具有預(yù)定的固定塊大小。該預(yù)定的固定塊大小基于未壓縮數(shù)據(jù)的數(shù)量、期望的壓縮比和期望的存取時(shí)間中的至少一個(gè)而被選擇。
[0008]在另一個(gè)實(shí)施例中,一種方法包括在壓縮塊中存儲(chǔ)數(shù)據(jù)。該數(shù)據(jù)是用于處理元件的可執(zhí)行代碼。從處理元件接收針對(duì)數(shù)據(jù)的請(qǐng)求。然后,確定哪個(gè)壓縮塊存儲(chǔ)該數(shù)據(jù)。解壓縮該壓縮塊以產(chǎn)生未壓縮塊。向處理元件提供所請(qǐng)求的數(shù)據(jù)。
[0009]在一個(gè)實(shí)施例中,未壓縮塊具有預(yù)定的固定塊大小。為了確定哪個(gè)壓縮塊存儲(chǔ)該數(shù)據(jù),將所請(qǐng)求的未壓縮塊的地址除以該固定塊大小以確定塊號(hào)碼,該號(hào)碼標(biāo)識(shí)了存儲(chǔ)該數(shù)據(jù)的壓縮塊。[0010]在另一個(gè)實(shí)施例中,選擇了未壓縮可執(zhí)行代碼的一對(duì)位。確定該一對(duì)位是否已經(jīng)被預(yù)先復(fù)制到復(fù)制箱。如果該一對(duì)位尚未被預(yù)先復(fù)制到復(fù)制箱,則向復(fù)制箱復(fù)制該一對(duì)位。如果該一對(duì)位已經(jīng)被預(yù)先復(fù)制到復(fù)制箱,則添加附加位以形成段。然后確定該段是否已經(jīng)被預(yù)先復(fù)制到復(fù)制箱。如果該段尚未被預(yù)先復(fù)制到復(fù)制箱,則在壓縮快中存儲(chǔ)指向該復(fù)制箱中該一對(duì)位的位置的指針。如果該段已經(jīng)被預(yù)先復(fù)制到復(fù)制箱,則向該段添加附加位以形成更長(zhǎng)的段,直至更長(zhǎng)的段被確定為尚未被預(yù)先復(fù)制。在壓縮快中存儲(chǔ)指針。該指針指向被確定為已經(jīng)被預(yù)先復(fù)制到復(fù)制箱的最長(zhǎng)的段。
【專利附圖】
【附圖說(shuō)明】
[0011]附圖被并入并構(gòu)成說(shuō)明書的一部分,其圖示了本公開的各種系統(tǒng)、方法以及其他實(shí)施例。應(yīng)理解,圖示的單元邊界(例如,方框、方框組或其他形狀)代表邊界的一個(gè)示例。本領(lǐng)域的技術(shù)人員應(yīng)理解,在一些示例中,可以將一個(gè)單元設(shè)計(jì)為多個(gè)單元或者可以將多個(gè)單元設(shè)計(jì)為一個(gè)單元。在一些示例中,可以將示出為另一元件的內(nèi)部部件的元件實(shí)施為外部部件,反之亦然。此外,元件可能未按比例繪制。
[0012]圖1圖示與可執(zhí)行代碼的壓縮和實(shí)時(shí)解壓縮關(guān)聯(lián)的裝置的一個(gè)實(shí)施例。
[0013]圖2A圖示與可執(zhí)行代碼的壓縮和實(shí)時(shí)解壓縮關(guān)聯(lián)的裝置的一個(gè)實(shí)施例。
[0014]圖2B圖示正在被壓縮入壓縮塊的可執(zhí)行代碼的一個(gè)實(shí)施例。
[0015]圖2C圖示與可執(zhí)行代碼的壓縮和實(shí)時(shí)解壓縮關(guān)聯(lián)的裝置的一個(gè)實(shí)施例。
[0016]圖3圖示與可執(zhí)行代碼的壓縮和實(shí)時(shí)解壓縮關(guān)聯(lián)的方法的一個(gè)實(shí)施例。
[0017]圖4A圖示與可執(zhí)行代碼的壓縮和實(shí)時(shí)解壓縮關(guān)聯(lián)的存儲(chǔ)器的一個(gè)實(shí)施例。
[0018]圖4B圖示與可執(zhí)行代碼的壓縮和實(shí)時(shí)解壓縮關(guān)聯(lián)的存儲(chǔ)器的一個(gè)實(shí)施例。
[0019]圖5圖示與可執(zhí)行代碼的壓縮關(guān)聯(lián)的、有助于該可執(zhí)行代碼的實(shí)時(shí)解壓縮的方法的一個(gè)實(shí)施例。
[0020]圖6圖示用于可執(zhí)行代碼的實(shí)時(shí)解壓縮的裝置的一個(gè)實(shí)施例。
【具體實(shí)施方式】
[0021]本文描述了與可執(zhí)行代碼的壓縮與實(shí)時(shí)解壓縮關(guān)聯(lián)的系統(tǒng)、方法和其他實(shí)施例的示例。在一些情況中,期望在片上存儲(chǔ)器(例如,靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、閃速存儲(chǔ)器)中存儲(chǔ)可執(zhí)行代碼。例如,一些片上系統(tǒng)產(chǎn)品使得在片上閃速存儲(chǔ)器中存儲(chǔ)的代碼能夠得以執(zhí)行。然而,可執(zhí)行代碼的數(shù)目可能超過(guò)片上閃速存儲(chǔ)器的容量。與其他類型的存儲(chǔ)器相t匕,閃速存儲(chǔ)器成本相對(duì)高并且每個(gè)存儲(chǔ)位需要的更多空間。根據(jù)本文所述的系統(tǒng)和方法,可執(zhí)行代碼被壓縮以適合可用的閃速存儲(chǔ)器,而不需要招致提供額外的片上存儲(chǔ)器所需的成本和空間。當(dāng)片上系統(tǒng)處理元件請(qǐng)求可執(zhí)行代碼時(shí),壓縮的可執(zhí)行代碼被解壓縮,以便對(duì)處理元件幾乎立即(例如,“實(shí)時(shí)”)可用。其他片上系統(tǒng)產(chǎn)品以壓縮形式而將代碼存儲(chǔ)在閃速存儲(chǔ)器中,然后在將代碼存儲(chǔ)在片上SRAM或DRAM中之前,下載并且解壓縮代碼。然后從片上SRAM或DRAM執(zhí)行該代碼。這需要大量的片上SRAM或DRAM,這大大增加片上系統(tǒng)的尺寸和成本。
[0022]當(dāng)壓縮的數(shù)據(jù)對(duì)應(yīng)于用于處理元件的可執(zhí)行代碼時(shí),執(zhí)行一次壓縮,而重復(fù)地并且即時(shí)(“on-the-fly”)地執(zhí)行解壓縮。因此,在應(yīng)該快速地執(zhí)行解碼時(shí),壓縮可不遵循如此嚴(yán)格的速度約束??梢允箟嚎s運(yùn)算增加時(shí)間以最有效地壓縮可執(zhí)行代碼。使用本文所述的、提供分層的過(guò)程以緊密地壓縮可執(zhí)行代碼的壓縮技術(shù)將增加壓縮比。壓縮比的增加使壓縮的可執(zhí)行代碼能夠適合有限數(shù)目的存儲(chǔ)器,并且簡(jiǎn)化在片上存儲(chǔ)器中存儲(chǔ)壓縮的執(zhí)行代碼。
[0023]當(dāng)請(qǐng)求可執(zhí)行代碼用于處理時(shí),存儲(chǔ)可執(zhí)行代碼的壓縮塊被解壓縮,并且可執(zhí)行代碼被實(shí)時(shí)處理。本文所述的壓縮和解壓縮技術(shù)簡(jiǎn)化了可執(zhí)行代碼的解壓縮并且將其實(shí)時(shí)提供至處理元件。以這種方式,處理元件能夠?qū)崟r(shí)地處理可執(zhí)行程序而不需額外的片上存儲(chǔ)器或犧牲速度。本文的系統(tǒng)和方法在片上系統(tǒng)的背景下描述,此片上系統(tǒng)在片上閃速存儲(chǔ)器內(nèi)以壓縮的形式存儲(chǔ)可執(zhí)行代碼。然而,如本文所述,可執(zhí)行代碼或任何其他類型數(shù)據(jù)的壓縮和實(shí)時(shí)解壓縮,可在任何數(shù)目的處理環(huán)境內(nèi)并且利用任何數(shù)目的存儲(chǔ)器類型來(lái)執(zhí)行。
[0024]參考圖1,示出了裝置100的一個(gè)實(shí)施例,其與可執(zhí)行代碼的實(shí)時(shí)解壓縮關(guān)聯(lián)??蓤?zhí)行代碼作為壓縮塊120a-120n存儲(chǔ)于存儲(chǔ)器110內(nèi)??蓤?zhí)行代碼可以包括處理指令、用戶數(shù)據(jù)或系統(tǒng)代碼。當(dāng)處理元件140請(qǐng)求可執(zhí)行代碼時(shí),解壓縮邏輯130選擇存儲(chǔ)可執(zhí)行代碼的壓縮快(例如,壓縮塊120c)??蓤?zhí)行代碼被單獨(dú)地壓縮入壓縮塊120。因此,選擇的壓縮塊120c可以被解壓縮邏輯130單獨(dú)地解壓縮,以獲取請(qǐng)求的可執(zhí)行代碼。壓縮塊120c被發(fā)送至解壓縮邏輯130以被解壓縮。一旦壓縮塊已經(jīng)被解壓縮,則此解壓縮的塊由解壓縮邏輯130返回至處理元件140。
[0025]圖2A圖示與可執(zhí)行代碼的壓縮和實(shí)時(shí)解壓縮關(guān)聯(lián)的裝置200的一個(gè)實(shí)施例。圖2包括具有圖1所示的壓縮塊120的存儲(chǔ)器110。存儲(chǔ)器110以參照?qǐng)D1所述方式的類似方式進(jìn)行運(yùn)算。裝置200還包括壓縮邏輯150,以將可執(zhí)行代碼壓縮到壓縮塊120中。壓縮邏輯150被配置為從非壓縮塊復(fù)制位,并且在對(duì)應(yīng)的壓縮塊內(nèi)存儲(chǔ)它們。在一個(gè)實(shí)施例中,壓縮邏輯執(zhí)行圖3中概述的壓縮方法。與許多壓縮算法不同,由壓縮邏輯150執(zhí)行的壓縮方法不由時(shí)間約束所限制。雖然這使得該壓縮方法比其他方法更消耗時(shí)間,但是它提供了可執(zhí)行代碼的緊密壓縮。在存儲(chǔ)器中存儲(chǔ)的壓縮代碼的配置的一個(gè)實(shí)施例如圖4中所圖示。
[0026]圖2B圖示了被壓縮到壓縮塊120a中的可執(zhí)行代碼210的一個(gè)實(shí)施例??蓤?zhí)行代碼210包括位或字211-218。位包含數(shù)值。位211的數(shù)值為1,位212的數(shù)值為I并且位213的數(shù)值為I。位211-213用于段221。段表示已經(jīng)被存儲(chǔ)在存儲(chǔ)器中的位的最大長(zhǎng)度。因此,已經(jīng)預(yù)先存儲(chǔ)數(shù)值為1、1和I的位的段,如同段221,但是位211-214尚未存儲(chǔ)。
[0027]位214的值為I并且位215的值為O。已經(jīng)預(yù)先存儲(chǔ)數(shù)值為1、隨后為O的段。因此,位214和位215形成段222。位216的值為0,位217值為O并且位218值為I。在存儲(chǔ)器內(nèi)已經(jīng)預(yù)先存儲(chǔ)值為O、隨后為O、隨后為I的段。因此,位216-218形成段223。段221、222和223被存儲(chǔ)為壓縮塊120a。
[0028]圖2C圖示了與可執(zhí)行代碼的壓縮和實(shí)時(shí)解壓縮關(guān)聯(lián)的存儲(chǔ)器110的一個(gè)實(shí)施例。在存儲(chǔ)器110的被分配為復(fù)制箱115的區(qū)域中存儲(chǔ)段。為了確定段是否預(yù)先已經(jīng)被存儲(chǔ)至存儲(chǔ)器110,在復(fù)制箱115內(nèi)搜索位的段。一旦識(shí)別段具有在復(fù)制箱中預(yù)先存儲(chǔ)的位的最大數(shù)目,則將此段用于塊壓縮。
[0029]圖3圖示與可執(zhí)行代碼的壓縮關(guān)聯(lián)的方法的一個(gè)實(shí)施例。為了將可執(zhí)行代碼壓縮到壓縮塊中,此方法包括在310將包括可執(zhí)行代碼的第一字和第二字的一對(duì)字進(jìn)行隔離。字包括至少一個(gè)位。在320,確定該一對(duì)字是否已經(jīng)被預(yù)先復(fù)制。如果該對(duì)尚未被預(yù)先復(fù)制,則該對(duì)被視為文字項(xiàng)。文字項(xiàng)被復(fù)制到復(fù)制箱用于存儲(chǔ)。因此,在330該對(duì)被復(fù)制到復(fù)制箱,并且該方法返回至310。如果該一對(duì)字已經(jīng)被預(yù)先復(fù)制,則該一對(duì)字被視為復(fù)制項(xiàng)。為了壓縮數(shù)據(jù),將指向可用的復(fù)制項(xiàng)的最長(zhǎng)的串的指針進(jìn)行存儲(chǔ)。因此,為了確定對(duì)是否表示了可以被構(gòu)造的復(fù)制項(xiàng)的最長(zhǎng)的串,在340將可執(zhí)行代碼的下一個(gè)字添加到該對(duì)以形成二字段。
[0030]在350,確定該段是否已經(jīng)被預(yù)先復(fù)制。在本示例中,確定該三字段是否是復(fù)制項(xiàng)。如果三字段尚未被預(yù)先復(fù)制至復(fù)制箱,則該對(duì)表示預(yù)先復(fù)制的字的最長(zhǎng)可能的段。因此,在360,將在復(fù)制箱中回指向該對(duì)最后發(fā)生位置的指針存儲(chǔ)至復(fù)制箱。指針包括偏移和計(jì)數(shù)。偏移指示復(fù)制箱中此前復(fù)制的對(duì)的位置。計(jì)數(shù)以字為單位指示復(fù)制項(xiàng)的長(zhǎng)度。在這一示例中,復(fù)制項(xiàng)包括可執(zhí)行代碼的第一字和第二字。因此,用于復(fù)制項(xiàng)的計(jì)數(shù)是兩個(gè)字。
[0031]相反地,如果在350,如果確定段作為復(fù)制項(xiàng)出現(xiàn)在復(fù)制箱中,則方法300返回至340以向段添加額外的位。在所述示例中,如果該三字段已經(jīng)被預(yù)先復(fù)制到復(fù)制箱,則在340可執(zhí)行代碼中的下一個(gè)字被添加至該對(duì)以形成四字段。因此,只要確定段已經(jīng)被預(yù)先復(fù)制到復(fù)制箱就添加另外的字,直至在復(fù)制箱中不再找到段。一旦在復(fù)制箱中不再找到段,就確定了該段除去最后添加的字就是最長(zhǎng)的可能段。以這一方式,該壓縮方法創(chuàng)建最大長(zhǎng)度的復(fù)制項(xiàng)以增強(qiáng)得到的壓縮量。復(fù)制項(xiàng)的最大長(zhǎng)度可以有預(yù)定的限制。在一個(gè)實(shí)施例中,復(fù)制項(xiàng)的最大長(zhǎng)度是23個(gè)字。
[0032]圖4A圖示存儲(chǔ)壓縮可執(zhí)行代碼的存儲(chǔ)器的一個(gè)實(shí)施例。該存儲(chǔ)器110可以是閃速存儲(chǔ)器、四串行閃速存儲(chǔ)器、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、SRAM或其他存儲(chǔ)設(shè)備。該存儲(chǔ)器110將壓縮可執(zhí)行代碼存儲(chǔ)在壓縮塊中。每一個(gè)壓縮塊由至少一個(gè)組形成。塊內(nèi)組的數(shù)目隨著該塊的壓縮性而變化。為清楚起見,用單個(gè)組示出壓縮塊120a。該組包含控制字節(jié)410,其具有8個(gè)位a-h并且最高到八(8)個(gè)項(xiàng)420a-420h。控制字節(jié)410中的每一位對(duì)應(yīng)于八個(gè)項(xiàng)420a-420h中的一項(xiàng)。例如,控制字節(jié)410中的位(a)對(duì)應(yīng)于項(xiàng)420a,控制字節(jié)中的位(b)對(duì)應(yīng)于項(xiàng)420b等等。
[0033]在控制字節(jié)410內(nèi)的每一位指示對(duì)應(yīng)的項(xiàng)是尚未被預(yù)先復(fù)制的文字項(xiàng)還是已經(jīng)被預(yù)先復(fù)制的復(fù)制項(xiàng)。例如,位(a)為數(shù)值“O”指示項(xiàng)420a是文字項(xiàng);而“I”指示項(xiàng)420a是復(fù)制項(xiàng)。壓縮塊120可以通過(guò)控制字節(jié)410的半字節(jié)的霍夫曼編碼被額外地壓縮。半字節(jié)是字節(jié)的四位部分??刂谱止?jié)的半字節(jié)可以被霍夫曼編碼為包含2至5個(gè)位的字段,這樣被編碼的控制字節(jié)長(zhǎng)度為4至10個(gè)位。同樣地,文字項(xiàng)可以被霍夫曼編碼。霍夫曼編碼識(shí)別經(jīng)常被編碼的半字節(jié)。經(jīng)常被編碼的半字節(jié)可以被存儲(chǔ)于基于經(jīng)常被編碼的半字節(jié)的出現(xiàn)的霍夫曼表格內(nèi),或者可以被預(yù)先編入霍夫曼表格?;舴蚵幋a是用來(lái)將壓縮塊進(jìn)一步壓縮的技術(shù)的一個(gè)示例??梢允褂脗溥x的技術(shù)。
[0034]組并不對(duì)齊于字節(jié)或半字節(jié)的邊界。因此,在將控制字節(jié)410、文字項(xiàng)和復(fù)制項(xiàng)編碼到組中之后,組的長(zhǎng)度將不一定為4或8的倍數(shù)。控制字節(jié)410、文字項(xiàng)和復(fù)制項(xiàng)封裝在一起作為一個(gè)長(zhǎng)串位。然而,塊對(duì)齊于字節(jié)邊界。因此,預(yù)定的值(諸如“O”)和位一起將被插入塊的尾部以將塊補(bǔ)充完整,以便隨后的塊將在字節(jié)邊界上開始。
[0035]圖4B圖示存儲(chǔ)壓縮可執(zhí)行代碼的存儲(chǔ)器的一個(gè)實(shí)施例。除了存儲(chǔ)壓縮塊120,存儲(chǔ)器110還存儲(chǔ)關(guān)于壓縮塊120的數(shù)據(jù)。存儲(chǔ)器110存儲(chǔ)驗(yàn)證碼430、配置字段440、壓縮塊大小450和塊查找表460。驗(yàn)證碼430是八位代碼,其指示存儲(chǔ)器110是否包含有效數(shù)據(jù)。
[0036]配置字段440是五位字段,其提供關(guān)于壓縮過(guò)程的信息。在一個(gè)實(shí)施例中,五位配置字段440的頭兩位指示存儲(chǔ)器110中存儲(chǔ)的數(shù)據(jù)和可執(zhí)行代碼的數(shù)量。五位配置字段440的第三位指示是否正在使用校驗(yàn)字節(jié)。對(duì)校驗(yàn)字節(jié)進(jìn)行計(jì)算以檢測(cè)在塊的傳輸或存儲(chǔ)期間引入的錯(cuò)誤。例如,這一字段中的“I”指示在壓縮塊的尾部包括校驗(yàn)字節(jié)。五位配置字段440的第四位指示可執(zhí)行代碼是以壓縮形式還是非壓縮形式進(jìn)行存儲(chǔ)。五位配置字段440的第五位指示是否已經(jīng)采用了半字節(jié)編碼。半字節(jié)編碼是固定的四字節(jié)長(zhǎng)度的編碼,其可以基于可執(zhí)行代碼提高壓縮。
[0037]壓縮塊大小450規(guī)定未壓縮塊的固定塊大小。未壓縮塊可以具有固定大小使得壓縮塊能夠容易地在存儲(chǔ)器110中定位。未壓縮塊的大小影響壓縮塊的壓縮比和存取時(shí)間。更小的壓縮塊大小可以具有更好的存取時(shí)間;但是與更大的未壓縮塊大小相比可能提供更差的壓縮。通常,更大的未壓縮塊具有更長(zhǎng)的存取時(shí)間但是更好的壓縮。在一個(gè)示例中,存儲(chǔ)器110被配置為通過(guò)計(jì)算實(shí)現(xiàn)預(yù)定的壓縮等級(jí)所需的最小塊大小來(lái)確定固定塊大小。備選地,可以使用固定塊大小來(lái)對(duì)存儲(chǔ)器110進(jìn)行預(yù)編程。
[0038]在一個(gè)實(shí)施例中,可以在壓縮塊大小450中用三位代碼指示塊大小。在一個(gè)示例中,三位二進(jìn)制代碼“000”指示將不使用壓縮;“001”指示128字節(jié)的固定塊大?。弧?10”指示256字節(jié)的固定塊大??;“011”指示512字節(jié)的固定塊大??;“100”指示1024字節(jié)的固定塊大小;并且“101”指示2048字節(jié)的固定塊大小。備選地,存儲(chǔ)器110的壓縮塊大小450還可以指示使用了可變未壓縮塊大小。在使用可變未壓縮塊大小的情況下,在查找表中可以包括額外的數(shù)據(jù)以定位壓縮塊。
[0039]為了在存儲(chǔ)器110中定位塊,存儲(chǔ)器包括塊查找表460。塊查找表460包括塊偏移470、壓縮標(biāo)記480和奇偶項(xiàng)490。未壓縮可執(zhí)行代碼被劃分為N個(gè)未壓縮塊??蓤?zhí)行代碼的未壓縮塊被分配塊號(hào)碼(例如,1、2、3...N),一旦未壓縮塊已經(jīng)被壓縮,其將保持該塊號(hào)碼。例如,壓縮塊(A) 120a對(duì)應(yīng)于未壓縮塊號(hào)碼I并且壓縮塊(N) 120η對(duì)應(yīng)于壓縮塊號(hào)碼N。在所述實(shí)施例中,未壓縮塊大小是固定的。因此,塊的起始地址可以通過(guò)將未壓縮數(shù)據(jù)的總數(shù)目除以未壓縮塊的數(shù)目來(lái)確定。未壓縮塊的起始地址被存儲(chǔ)為偏移地址470。
[0040]一些未壓縮塊在壓縮時(shí)大小增加而不是減少。將響應(yīng)于壓縮而增大的塊以未壓縮形式進(jìn)行存儲(chǔ),而不是存儲(chǔ)更大的壓縮塊。壓縮標(biāo)記480指示塊是否以壓縮形式或未壓縮形式進(jìn)行存儲(chǔ)。壓縮標(biāo)記480被添加至偏移地址470。
[0041]奇偶項(xiàng)490給塊查找表460提供誤差檢測(cè)。奇偶項(xiàng)490由兩個(gè)位形成,其提供基于偏移地址470的奇數(shù)奇偶校驗(yàn)。雖然為了清楚起見,已經(jīng)針對(duì)不同項(xiàng)給出了位的具體數(shù)目,諸如八位驗(yàn)證代碼、五位配置字段和兩位奇偶項(xiàng),但是可以使用更多或更少的位。給出的位的數(shù)目是為了圖示存儲(chǔ)器110的可能的形式和功能,而不是旨在進(jìn)行限制。
[0042]圖5圖示與可執(zhí)行代碼的壓縮相關(guān)聯(lián)的、簡(jiǎn)化該可執(zhí)行代碼的實(shí)時(shí)解壓縮的方法的一個(gè)實(shí)施例。在510,從處理元件接收對(duì)可執(zhí)行代碼的請(qǐng)求。處理元件可以是片上系統(tǒng),被配置為存取用于可執(zhí)行代碼的閃速存儲(chǔ)器。
[0043]在520,該方法包括確定哪個(gè)壓縮塊存儲(chǔ)請(qǐng)求的可執(zhí)行代碼。為了確定哪個(gè)壓縮塊存儲(chǔ)可執(zhí)行代碼,對(duì)存儲(chǔ)該可執(zhí)行代碼的未壓縮塊進(jìn)行標(biāo)識(shí)。通過(guò)未壓縮塊的塊號(hào)碼對(duì)該未壓縮塊進(jìn)行標(biāo)識(shí)。在塊查找表中使用該塊號(hào)碼和塊偏移來(lái)對(duì)存儲(chǔ)可執(zhí)行代碼的壓縮塊進(jìn)行標(biāo)識(shí)。一旦對(duì)正確的壓縮塊進(jìn)行標(biāo)識(shí),則在530從存儲(chǔ)器提取壓縮塊。在540,解壓縮邏輯將壓縮塊進(jìn)行解壓縮。在550包含可執(zhí)行代碼的被解壓縮的塊被返回至處理元件。
[0044]圖6圖示用于可執(zhí)行代碼的實(shí)時(shí)解壓縮的裝置的一個(gè)實(shí)施例。圖6包括具有圖1所示的壓縮塊120和處理元件140的存儲(chǔ)器110。存儲(chǔ)器110和處理元件140以參照?qǐng)D1的方式相似的方式進(jìn)行操作。裝置600還包括解壓縮邏輯130。解壓縮邏輯包括讀控制器610、閃存控制器620、塊緩沖器控制器630和組解壓縮器640。
[0045]讀控制器610接受來(lái)自處理元件140的對(duì)可執(zhí)行代碼的請(qǐng)求??蓤?zhí)行代碼存儲(chǔ)于存儲(chǔ)器110中的壓縮塊120中。然而,來(lái)自處理元件的請(qǐng)求不是按照壓縮塊120的。相反,該請(qǐng)求按照可執(zhí)行代碼的位。例如,處理元件140可以請(qǐng)求32位未壓縮塊。讀控制器610針對(duì)存儲(chǔ)所請(qǐng)求的可執(zhí)行代碼的壓縮塊而向塊緩沖器控制器630和/或存儲(chǔ)器110發(fā)起請(qǐng)求。
[0046]塊緩沖器存儲(chǔ)器630存儲(chǔ)解壓縮的塊以提供高速緩存等級(jí),并且減少向存儲(chǔ)器110請(qǐng)求的頻率。雖然處理元件140可能只請(qǐng)求壓縮塊的一部分,但是可以具有大小范圍128-2048字節(jié)的整個(gè)壓縮塊被解壓縮并且存儲(chǔ)于塊緩沖器控制器630中。因此,在處理元件隨后自解壓縮的壓縮塊請(qǐng)求可執(zhí)行代碼的下一個(gè)部分的事件中,該可執(zhí)行代碼已經(jīng)被存儲(chǔ)于塊緩沖器控制器630中。
[0047]塊緩沖器控制器630可以分為兩個(gè)緩沖器,每一個(gè)緩沖器都能夠存儲(chǔ)被解壓縮的塊。因此,塊緩沖器控制器630可被配置為存儲(chǔ)兩個(gè)解壓縮塊。當(dāng)解壓縮第三塊時(shí),將塊緩沖器控制器630中存儲(chǔ)的針對(duì)可執(zhí)行代碼最后存取的解壓縮的塊進(jìn)行刪除,從而允許在塊緩沖器控制器630中的它的位置中存儲(chǔ)第三解壓縮塊。在選擇在緩沖器中保留哪個(gè)解壓縮塊時(shí),塊緩沖器控制器630可以采用任何數(shù)目的高速緩存替換方案。備選地,如果塊大小小于緩沖器的大小,則塊緩沖器控制器630可以進(jìn)一步劃分以在每個(gè)緩沖器中存儲(chǔ)多個(gè)解壓縮塊。
[0048]如果存儲(chǔ)可執(zhí)行代碼的解壓縮塊不在塊緩沖器控制器630中,則閃存控制器620接著從存儲(chǔ)器110發(fā)起塊查找表請(qǐng)求以確定哪個(gè)壓縮塊120中存儲(chǔ)有可執(zhí)行代碼(參見,例如圖4中的塊查找表460)。一旦確定壓縮塊的位置,則從存儲(chǔ)器110恢復(fù)此壓縮塊。閃存控制器620將恢復(fù)的塊發(fā)送至處理器540以進(jìn)行解壓縮。然后將該存儲(chǔ)所請(qǐng)求的可執(zhí)行代碼的解壓縮塊存儲(chǔ)至塊緩沖器控制器630中。閃存控制器620自塊緩沖器控制器630發(fā)起針對(duì)所請(qǐng)求的可執(zhí)行代碼的請(qǐng)求。
[0049]解壓縮器640將包含已經(jīng)由讀控制器610請(qǐng)求的并且已經(jīng)在塊緩沖器存儲(chǔ)器630中存儲(chǔ)的可執(zhí)行代碼的壓縮塊進(jìn)行解壓縮。解壓縮器640將來(lái)自存儲(chǔ)器110的所選擇的壓縮塊120的數(shù)據(jù)流保持在移位寄存器中。在一個(gè)示例中,移位寄存器是24位移位寄存器。解壓縮器640在位11處開始針對(duì)在移位寄存器中已經(jīng)受到半字節(jié)編碼的數(shù)據(jù)流進(jìn)行解碼,并且返回4位半字節(jié)的解碼數(shù)據(jù)和左移位值。該移位值指示移位寄存器將向左移位預(yù)定的位數(shù),諸如2至5。解壓縮器640在位11處開始針對(duì)在移位寄存器中尚未受到半字節(jié)編碼的數(shù)據(jù)流進(jìn)行解碼,并且返回5位長(zhǎng)度值和左移位值。該移位值指示移位寄存器將被向左移位預(yù)定的位數(shù)。一旦數(shù)據(jù)流已經(jīng)被解碼,則將其存儲(chǔ)于塊緩沖器寄存器630中。
[0050]下文包括這里運(yùn)用的所選術(shù)語(yǔ)的定義。該定義包括落入術(shù)語(yǔ)的范圍內(nèi)并且可以用于實(shí)施的部件的各種示例和/或形式。示例并非旨在限制。術(shù)語(yǔ)的單數(shù)和復(fù)數(shù)形式二者可以在定義內(nèi)。
[0051]對(duì)“一個(gè)實(shí)施例”、“實(shí)施例”、“一個(gè)示例”、“示例”等的引用指示這樣描述的實(shí)施例或者示例可以包括特定特征、結(jié)構(gòu)、特性、性質(zhì)、元件或者限制,但是并非每個(gè)實(shí)施例或者示例必然包括該特定特征、結(jié)構(gòu)、特性、性質(zhì)、元件或者限制。另外,反復(fù)使用短語(yǔ)“在一個(gè)實(shí)施例中”雖然可以、但是未必指代相同實(shí)施例。
[0052]如這里所用的“邏輯”包括被配置用于執(zhí)行功能或者動(dòng)作和/或引起來(lái)自另一邏輯、方法和/或系統(tǒng)的功能或者動(dòng)作的計(jì)算機(jī)、電子硬件部件、固件、存儲(chǔ)有指令的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)和/或這些部件的組合。邏輯可以包括由算法控制用來(lái)執(zhí)行所公開的功能/方法中的一個(gè)或多個(gè)的微處理器、分立邏輯(例如ASIC)、模擬電路、數(shù)字電路、編程的邏輯器件、包含指令的存儲(chǔ)器器件等。邏輯可以包括一個(gè)或者多個(gè)門、門組合或者其它電路部件。當(dāng)描述多個(gè)邏輯時(shí),可以有可能向一個(gè)物理邏輯部件中并入多個(gè)邏輯。類似地,當(dāng)描述單個(gè)邏輯部件時(shí),可以在多個(gè)物理邏輯部件之間分布該單個(gè)邏輯部件。在一些實(shí)施方式中,可以使用邏輯部件中的一個(gè)或者多個(gè)邏輯部件來(lái)實(shí)施這里描述的部件和功能中的一個(gè)或者多個(gè)部件和功能。
[0053]盡管出于簡(jiǎn)化說(shuō)明的目的而示出和描述所示方法為一系列塊。但是方法不受塊的順序限制,因?yàn)橐恍K可以按照與示出和描述的順序不同的順序和/或與其它塊并行出現(xiàn)。另外,少于所有所示塊可以用來(lái)實(shí)施示例性方法??梢越M合塊或者將塊分離成多個(gè)部件。另外,附加和/或備選方法可以運(yùn)用附加的未圖示的塊。
[0054]在【具體實(shí)施方式】或者權(quán)利要求中運(yùn)用術(shù)語(yǔ)“包括(include) ”的程度上,它旨在以與術(shù)語(yǔ)“包括(comprise) ”相似的方式有包含意義,因?yàn)樵撔g(shù)語(yǔ)在運(yùn)用時(shí)解釋為權(quán)利要求中的過(guò)渡詞。
[0055]盡管已經(jīng)通過(guò)描述示例來(lái)舉例說(shuō)明示例性系統(tǒng)、方法等并且盡管已經(jīng)以相當(dāng)多的細(xì)節(jié)描述示例,但是 申請(qǐng)人:的意圖并非是約束或者以任何方式使所附權(quán)利要求的范圍局限于這樣的細(xì)節(jié)。當(dāng)然不可能出于描述這里描述的系統(tǒng)、方法等的目的而描述每個(gè)可設(shè)想的部件或者方法組合。因此,公開內(nèi)容不限于示出和描述的具體細(xì)節(jié)、有代表性的裝置和示例性示例。因此,本申請(qǐng)旨在涵蓋落入所附權(quán)利要求的范圍內(nèi)的變更、修改和變化。
【權(quán)利要求】
1.一種裝置,包括 存儲(chǔ)器,被配置為存儲(chǔ)數(shù)據(jù)的壓縮塊,其中所述數(shù)據(jù)是用于處理元件的可執(zhí)行代碼;以及 解壓縮邏輯,被配置為: 從所述處理元件接收針對(duì)數(shù)據(jù)的請(qǐng)求; 確定存儲(chǔ)所述數(shù)據(jù)的壓縮塊; 解壓縮所述壓縮塊以產(chǎn)生未壓縮塊;以及 向所述處理元件提供所請(qǐng)求的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的裝置,其中所述解壓縮邏輯還包括被配置為存儲(chǔ)多個(gè)解壓縮塊的塊緩沖器控制器,并且進(jìn)一步其中當(dāng)所述解壓縮邏輯確定與所述壓縮塊對(duì)應(yīng)的解壓縮塊存儲(chǔ)于所述塊緩沖器控制器中時(shí),所述解壓縮邏輯從所述塊緩沖器控制器向所述處理元件提供所述解壓縮塊。
3.根據(jù)權(quán)利要求1所述的裝置,還包括壓縮邏輯,被配置為: 接收未壓縮數(shù)據(jù); 將所述未壓縮數(shù)據(jù)解析成至少一個(gè)未壓縮塊; 將所述至少一個(gè)未壓縮塊壓縮成壓縮塊;以及 在所述存儲(chǔ)器中存儲(chǔ)所述壓縮塊。
4.根據(jù)權(quán)利要求3所述的裝置,其中所述至少一個(gè)未壓縮塊具有預(yù)定的固定塊大小,其中所述預(yù)定的固定塊大小基于未壓縮數(shù)據(jù)的數(shù)量、期望的壓縮比和期望的存取時(shí)間中的至少一個(gè)而被選擇。
5.根據(jù)權(quán)利要求3所述的裝置,其中所述壓縮邏輯還包括復(fù)制箱,并且其中所述壓縮邏輯還被配置為: 在所述復(fù)制箱中存儲(chǔ)多個(gè)段,其中段包括可執(zhí)行代碼的位的序列; 從所述多個(gè)段中選擇給定的段; 確定在所述復(fù)制箱中是否存在所述給定的段,并且當(dāng)在所述復(fù)制箱中存在所述給定的段時(shí),用可執(zhí)行代碼的附加位迭代地?cái)U(kuò)充所述給定的段,并且確定在所述復(fù)制箱中是否存在所擴(kuò)充的段,以確定在所述復(fù)制箱中存在的最大長(zhǎng)度的段;以及 在所述壓縮塊中存儲(chǔ)指向所述復(fù)制箱中的所述最大長(zhǎng)度的段的位置的指針。
6.根據(jù)權(quán)利要求3所述的裝置,其中壓縮邏輯被配置為: 在所述至少一個(gè)未壓縮塊上執(zhí)行初始?jí)嚎s以形成部分壓縮塊;以及 使用第二壓縮技術(shù)來(lái)執(zhí)行所述部分壓縮塊的第二壓縮以形成給定的壓縮塊。
7.根據(jù)權(quán)利要求3所述的裝置,還包括塊查找表邏輯,其針對(duì)可執(zhí)行代碼的每個(gè)未壓縮塊而存儲(chǔ): 來(lái)源于所述至少一個(gè)未壓縮塊的地址的塊號(hào)碼;以及 指示所述存儲(chǔ)器中的對(duì)應(yīng)的壓縮塊的位置的偏移值。
8.根據(jù)權(quán)利要求1所述的裝置,其中所述存儲(chǔ)器是閃速存儲(chǔ)器。
9.一種方法,包括: 在壓縮塊中存儲(chǔ)數(shù) 據(jù),其中所述數(shù)據(jù)是用于處理元件的可執(zhí)行代碼; 從所述處理元件接收針對(duì)數(shù)據(jù)的請(qǐng)求;以及確定存儲(chǔ)所述數(shù)據(jù)的壓縮塊; 解壓縮所述壓縮塊以產(chǎn)生未壓縮塊;以及 向所述處理元件提供所請(qǐng)求的數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述的方法,還包括確定在緩沖器中是否已經(jīng)存儲(chǔ)所述未壓縮塊,并且當(dāng)在緩沖器中存儲(chǔ)了所述未壓縮塊時(shí),從所述緩沖器提供所請(qǐng)求的數(shù)據(jù)。
11.根據(jù)權(quán)利要求9所述的方法,其中未壓縮塊具有預(yù)定的固定塊大小,其中所述確定包括將所請(qǐng)求的未壓縮塊的地址除以所述固定塊大小以確定對(duì)存儲(chǔ)所述數(shù)據(jù)的壓縮塊進(jìn)行標(biāo)識(shí)的塊號(hào)碼。
12.根據(jù)權(quán)利要求11所述的方法,其中所述確定包括訪問查找表,其針對(duì)每個(gè)壓縮塊存儲(chǔ)塊號(hào)碼和指示存儲(chǔ)器中的對(duì)應(yīng)的壓縮塊的位置的偏移值。
13.—種方法,包括: 選擇未壓縮可執(zhí)行代碼的一對(duì)位; 確定所述一對(duì)位是否已經(jīng)被預(yù)先復(fù)制到復(fù)制箱;以及 當(dāng)所述一對(duì)位尚未被預(yù)先復(fù)制到所述復(fù)制箱時(shí),向所述復(fù)制箱復(fù)制所述一對(duì)位;以及 當(dāng)所述一對(duì)位已經(jīng)被預(yù)先復(fù)制到所述復(fù)制箱時(shí),添加附加位以形成段; 確定所述段是否已經(jīng)被預(yù)先復(fù)制到所述復(fù)制箱;以及 當(dāng)所述段尚未被預(yù)先復(fù)制到所述復(fù)制箱時(shí),在壓縮塊中存儲(chǔ)指向所述復(fù)制箱中所述一對(duì)位的位置的指針;以及 當(dāng)所述段已經(jīng)被預(yù)先復(fù)制時(shí),添加附加位以形成更長(zhǎng)的段,直至所述更長(zhǎng)的段被確定為尚未被預(yù)先復(fù)制,以及` 在所述壓縮塊中存儲(chǔ)指向被確定為已經(jīng)被預(yù)先復(fù)制到所述復(fù)制箱的最長(zhǎng)的段的指針。
14.根據(jù)權(quán)利要求13所示的方法,其中所述指針標(biāo)識(shí)在所述復(fù)制箱中的何處存儲(chǔ)所述預(yù)先存儲(chǔ)的對(duì)或最長(zhǎng)的段的最后發(fā)生。
15.根據(jù)權(quán)利要求13所示的方法,還包括使用霍夫曼編碼來(lái)執(zhí)行所述壓縮塊的壓縮。
16.根據(jù)權(quán)利要求15所示的方法,其中使用預(yù)先編程的霍夫曼表來(lái)執(zhí)行所述霍夫曼編碼。
17.根據(jù)權(quán)利要求15所示的方法,還包括: 在所述壓縮塊上執(zhí)行半字節(jié)編碼; 對(duì)頻繁編碼的半字節(jié)進(jìn)行標(biāo)識(shí);以及 至少部分地基于所述頻繁編碼的半字節(jié)而生成霍夫曼表。
18.根據(jù)權(quán)利要求13所述的方法,還包括: 接收所述可執(zhí)行代碼;以及 將所述可執(zhí)行代碼解析成未壓縮塊。
19.根據(jù)權(quán)利要求18所述的方法,其中所述未壓縮塊具有預(yù)定的固定塊大小,其中所述預(yù)定的固定塊大小基于可執(zhí)行代碼的數(shù)量、期望的壓縮比和期望的存取時(shí)間中的至少一個(gè)而被選擇。
20.根據(jù)權(quán)利要求18所述的裝置,其中所述未壓縮塊具有可變塊大小。
【文檔編號(hào)】H03M7/30GK103563255SQ201280026966
【公開日】2014年2月5日 申請(qǐng)日期:2012年3月23日 優(yōu)先權(quán)日:2011年4月11日
【發(fā)明者】J·米切姆, W·舍恩克倫, A·G·德博勒加德 申請(qǐng)人:馬維爾國(guó)際貿(mào)易有限公司