的需求選擇性地實施任一實施例的部 分或全部技術(shù)特征,或者選擇性地實施復(fù)數(shù)個實施例的部分或全部技術(shù)特征的組合,藉此 增加實施本發(fā)明的彈性。
[0028] 為幫助了解本發(fā)明,在此簡述本發(fā)明的一綜合范例如下:
[0029] (1)接收或產(chǎn)生一數(shù)位資料,例如編譯一來源碼(Source Code)以產(chǎn)生微控制單 元所需的指令集。
[0030] (2)分析所述數(shù)位資料以產(chǎn)生復(fù)數(shù)層級的字典,亦即將所述數(shù)位資料的資料單元 分門別類地儲存于所述復(fù)數(shù)層級的字典中。
[0031] (3)使用壓縮碼和所述復(fù)數(shù)層級字典代替所述數(shù)位資料,以節(jié)省儲存空間。
[0032] (4)解壓縮時,依據(jù)一偏移量(例如一程序計數(shù)值(Program Counter Value)或具 有類似作用的數(shù)值)來找到所述壓縮碼的一編碼單元,再依據(jù)所述編碼單元從所述復(fù)數(shù)層 級的字典找到相對應(yīng)的一或復(fù)數(shù)個資料單元。
[0033] 基于上述,接下來的篇幅將說明本發(fā)明各實施例。
[0034] 圖3是本發(fā)明的字典壓縮方法的一實施例的流程圖。如圖3所示,所述實施例包 含下列步驟:
[0035] 步驟S310 :接收數(shù)位資料,所述數(shù)位資料包含復(fù)數(shù)個資料區(qū)塊(或說可區(qū)分為復(fù) 數(shù)資料區(qū)塊),每所述資料區(qū)塊包含復(fù)數(shù)個資料單元,每所述資料單元由復(fù)數(shù)個位元組成。
[0036] 步驟S320:依據(jù)一多層級字典壓縮演算法(Multilayer Dictionary-Based Compression Algorithm)壓縮所述數(shù)位資料,其中所述多層級字典壓縮演算法包含第一、 第二與第三字典壓縮規(guī)則,所述第一字典壓縮規(guī)則以N個所述資料區(qū)塊為單位范圍對所述 數(shù)位資料中的第一內(nèi)容進行壓縮處理,所述第二字典壓縮規(guī)則以M個所述資料區(qū)塊為單位 范圍對所述數(shù)位資料中的第二內(nèi)容進行壓縮處理,第三字典壓縮規(guī)則以L個所述資料區(qū)塊 為單位范圍對所述數(shù)位資料中的第三內(nèi)容進行壓縮處理,所述第一、第二與第三內(nèi)容不同, 所述N、M、L為正整數(shù)且不大于所述復(fù)數(shù)個資料區(qū)塊的總數(shù),且所述N大于所述M,所述M大 于所述L。舉例而言,所述第一字典壓縮規(guī)則為一全范圍(Global)字典壓縮規(guī)則;所述第二 字典壓縮規(guī)則為一中范圍(Intermediate)字典壓縮規(guī)則;以及所述第三字典壓縮規(guī)則為 一局部范圍(Local)字典壓縮規(guī)則,進一步而言,所述N等于所述復(fù)數(shù)個資料區(qū)塊的總數(shù), 所述M小于所述N但大于1 ;所述L等于1。另舉例而言,所述第一字典壓縮規(guī)則用于處理于 所有資料區(qū)塊中以單一資料區(qū)塊為單位而出現(xiàn)頻率高于第一頻率(例如最高頻率或一預(yù) 設(shè)頻率)的一或復(fù)數(shù)個資料單元(例如表1的資料單元X),所述第二字典壓縮規(guī)則用于處 理于所有資料區(qū)塊中以單一資料區(qū)塊為單位而出現(xiàn)頻率介于第一與第二頻率之間的一或 復(fù)數(shù)個資料單元(例如表1的資料單元Y、Z),所述第三字典壓縮規(guī)則適用于處理于所有資 料區(qū)塊中以單一資料區(qū)塊為單位而出現(xiàn)頻率小于第二頻率的一或復(fù)數(shù)個資料單元(例如 表1的資料單元A、B、C、D),其中所述第三字典壓縮規(guī)則于本實施例中是用于處理于同一資 料區(qū)塊中出現(xiàn)頻率最高的一或復(fù)數(shù)個所述資料單元(例如表1的資料單元A、B、C、D)。另 外,壓縮后的數(shù)位資料(即壓縮碼與字典)可儲存于一記憶電路,例如圖4的記憶電路400, 包含:一壓縮碼儲存單元410,用來儲存代表所述數(shù)位資料的壓縮碼(或稱索引),并依據(jù)一 偏移量(例如一程序計數(shù)值)輸出所述壓縮碼的一編碼單元;一字典儲存單元420,用來儲 存對應(yīng)所述壓縮碼的資料單元;以及一選擇電路430,用來依據(jù)所述編碼單元令所述字典 儲存單元420輸出一相對應(yīng)的資料單元。
[0037] 承上所述,在此通過具體資料進一步說明如下。請參閱下表1,表1包含數(shù)位資 料「AAXYBBXYCCXZDDXZ」,其包含或說可區(qū)分為復(fù)數(shù)個資料區(qū)塊「AAXY」、「BBXY」、「CCXZ」、 「DDXZ」,每個資料區(qū)塊包含復(fù)數(shù)個資料單元「A,A,X,Y」、「B,B,X,Y」、「C,C,X,Z」、「D,D,X,Z」, 每個資料單元由復(fù)數(shù)個位元組成(本例中每一資料單元由32個位元組成),故所述數(shù)位資 料所需的原始儲存空間為16 X 32位,其中每個資料區(qū)塊均出現(xiàn)的資料單元X可視為同一字 典中的第一筆資料(例如圖5a或圖5b所示)、或不同字典中的第一字典(或說第一層)的 資料(例如圖5c或圖5d所示);前2個資料區(qū)塊均出現(xiàn)的資料單元Y與后2個資料區(qū)塊均 出現(xiàn)的資料單元Z可視為同一字典中的二筆資料(例如圖5a或圖5b所示)、或不同字典中 的第二字典(或說第二層)的資料(例如圖5c或圖5d所示);只在單一資料區(qū)塊出現(xiàn)的 資料單元A、B、C、D則可視為同一字典中的四筆資料(例如圖5a或圖5b所示)、或不同字 典中的第三字典(或說第三層)的資料(例如圖5c或圖5d所示)。因此,若令步驟S320 所述的第一、第二與第三字典壓縮規(guī)則依序為全范圍、中范圍與局部范圍字典壓縮規(guī)則,則 如表1所示,有至少以下幾種壓縮情形 :
[0038] (1)僅采用全范圍字典壓縮規(guī)則來壓縮:請參閱圖5a,在本情形下,全范圍字典壓 縮規(guī)則以N個資料區(qū)塊(本例中為4個資料區(qū)塊,亦即所有資料區(qū)塊)為單位范圍,于一全 范圍字典(可區(qū)分為7個單位,如圖5a所示)中儲存每所述單位范圍中的獨特(Unique) 資料單元 X,Y,Z,A,B,C,D,并將數(shù)位資料壓縮如下:011,011,000,001 ;100, 100,000,001 ; 101,101,000,010 ;110, 110, 000, 010 (其中 000 代表 X、001 代表 Y、010 代表 Z、011 代表 A、 100代表B、101代表C、110代表D,然上述對應(yīng)關(guān)系僅為舉例,可由實施者依其需求調(diào)整)。 此時,由于每個32位的資料單元改由3位的編碼單元來代表,7個獨特的32位資料單元儲 存于全范圍字典中,因此數(shù)位資料壓縮后所需的儲存空間為3X16+7X32位,其小于原儲 存空間16X32位。請注意,本情形中,由于僅采用全范圍字典壓縮規(guī)則,不同的資料單元均 對應(yīng)不同的編碼單元,因此在解壓縮時,本情形可依據(jù)一偏移量(例如一程序計數(shù)值,用來 指示待存取的一資料單元的序號,例如12)找出相對應(yīng)的一編碼單元(例如對應(yīng)程序計數(shù) 值12的編碼單元010),再依據(jù)所述編碼單元的值及所述全范圍字典的起始位址找出一相 對應(yīng)的字典內(nèi)容位址,進而找到儲存于所述字典內(nèi)容位址的資料單元(例如對應(yīng)編碼單元 010的資料單元Z)。更精確地說,決定字典內(nèi)容位址的一范例如下:
[0039] 字典內(nèi)容位址=全范圍字典的起始位址(例如為一預(yù)設(shè)位址0) +編碼單元。
[0040] (2)僅采用局部范圍字典壓縮規(guī)則來壓縮:請參閱圖5b,在本情形下,局部范圍字 典壓縮規(guī)則以L個資料區(qū)塊(本例中為1個資料區(qū)塊)為單位范圍,于一局部范圍字典(可 區(qū)分為12個單位,如圖5b所示)中依序儲存每所述單位范圍中的獨特資料單元「X,Y,A」、 「X,Y,B」、「X,Z,C」、「X,Z,D」,并將所述數(shù)位資料壓縮如下:10, 10,00,01 ;10, 10,00,01 ; 10, 10, 00, 01 ; 10, 10, 00, 01 (其中00代表所述4個資料區(qū)塊中的X ;01代表前2個資料區(qū) 塊中的Y與后2個資料區(qū)塊中的Z ;10分別代表4個資料區(qū)塊中的A、B、C、D,然此對應(yīng)關(guān) 系僅為舉例,可由實施者依其需求調(diào)整),此時由于每個資料區(qū)塊中32位的資料單元改由2 位的編碼單元來代表且每個單位范圍包含3個獨特的32位資料單元,因此壓縮后所需的儲 存空間為(2X4+3X32) X4 = 13X32位,其小于原始儲存空間16X32位,但大于采用全范 圍字典壓縮規(guī)則的3X16+7X32位。
[0041] 請注意,本情形中,由于僅采用局部范圍字典壓縮規(guī)則,因此在解壓縮時,本情形 可通過一偏移量(例如一程序計數(shù)值8)找到一相對應(yīng)的編碼單元(例如對應(yīng)程序計數(shù)值8 的編碼單元01),再依據(jù)所述偏移量、所述編碼單元的值與所述局部范圍字典的起始位址即 可找出一相對應(yīng)的字典內(nèi)容位址,進而找到所述編碼單元所對應(yīng)的資料單元(例如對應(yīng)程 序計數(shù)值8與編碼單元Ol的資料單元Y)。更明確地說,決定字典內(nèi)容位址的一范例如下: [0042] 字典內(nèi)容位址=局部范圍字典的起始位址(例如一預(yù)設(shè)位址或所述程序計數(shù)值 的函數(shù)值)+編碼單元(或說此編碼單元的字典位址排序)
[0043] (3)采用全范圍與局部范圍字典壓縮規(guī)則來壓縮:請參閱圖5c,在本情形下,全范 圍字典壓縮規(guī)則用來壓縮每單位范圍(即4個資料區(qū)塊)中出現(xiàn)的重復(fù)內(nèi)容X,使用的字典 儲存空間為IX 32位;局部范圍字典壓縮規(guī)則用來壓縮每單位范圍(即1個資料區(qū)塊)中X 以外的內(nèi)容(亦即為「Y,A」、「Y,B」、「Z,C」、「Z,D」),使用的字典儲存空間為(2 X 32) X 4 = 8X32位;此時,全范圍字典、局部范圍字典(可區(qū)分為8個單位,如圖5c所示)使用的儲 存空間為1X32+8X32 = 9X32位。因此,此二字典壓縮規(guī)則可將所述數(shù)位資料壓縮如下: 10, 10, 00, 01 ;10, 10, 00, 01 ;10, 10, 00, 01 ;10, 10, 00, 01 (其中 00 代表重復(fù)內(nèi)容 X ;01 依序 代表前2個資料區(qū)塊中的Y與后2個資料區(qū)塊中的Z ;10分別代表所述4個資料區(qū)塊中的 A、B、C、D,然此對應(yīng)關(guān)系僅為舉例,可由實施者依其需求調(diào)整),此時由于每個32位的資料 單元改由2位的編碼單元來代表且所有字典使用了 9X32位的儲存空間,因此壓縮后所需 的儲存空間為(2X4+2X32) X4+1X32 = 10X32位,其小于原始儲存空間16X32位以及 僅采用局部范圍壓縮規(guī)則的13X32位,但大于僅采用全范圍壓縮規(guī)則的3X 16+7X32位。
[0044] 請注意,本情形中,由于采用雙層級字典壓縮規(guī)則,因此在解壓縮時,本情形可通 過一偏移