1.一種方法,其包括:
由電子裝置接收輸入數(shù)據(jù)集;
由所述電子裝置設(shè)定當(dāng)前位置P;
(a)由所述電子裝置從所述輸入數(shù)據(jù)集檢索所述當(dāng)前位置處的文字集N;
(b)由所述電子裝置產(chǎn)生散列值Hash(N),其中Hash()是具有輸出的散列函數(shù),所述輸出具有比N少的位;
(c)評估與散列表相關(guān)聯(lián)的先進先出FIFO緩沖區(qū)的狀態(tài);
(d)如果與所述散列表相關(guān)聯(lián)的所述FIFO緩沖區(qū)填滿,那么避免將對Hash(N)的查找請求添加到所述FIFO緩沖區(qū)、遞增所述當(dāng)前位置P以參考所述輸入數(shù)據(jù)集中的下一文字集N且重復(fù)(a)到(d),否則,如果與所述散列表相關(guān)聯(lián)的所述FIFO緩沖區(qū)未填滿,那么
(i)查找所述散列表中的地址Hash(N)處的條目E;
(ii)將所述條目E存儲于散列鏈中的所述位置P處;
(iii)將用以將位置P寫入為所述散列表中的所述地址Hash(N)處的所述條目E的寫入請求添加到所述FIFO緩沖區(qū);
(iv)處理來自所述FIFO緩沖區(qū)的用以將位置P寫入為所述散列表中的所述地址Hash(N)處的所述條目E的所述寫入請求;及
(v)遞增所述當(dāng)前位置P以參考所述數(shù)據(jù)集中的下一文字位置;及
(e)重復(fù)(a)到(e)直到到達所述數(shù)據(jù)集的末尾為止;及
由所述電子裝置使用所述散列鏈來壓縮所述輸入數(shù)據(jù)集。
2.根據(jù)權(quán)利要求1所述的方法,其中(d)進一步包括:如果N包含相同于緊接的前面文字且小于所述文字的第16個連續(xù)實例的文字,那么避免將對Hash(N)的所述查找請求添加到所述FIFO緩沖區(qū)且遞增所述當(dāng)前位置P以參考所述數(shù)據(jù)集中的文字位置。
3.根據(jù)權(quán)利要求1所述的方法,其中由所述電子裝置使用所述散列鏈來壓縮所述輸入數(shù)據(jù)集包括:根據(jù)藍波-立夫算法來產(chǎn)生拷貝或文字命令。
4.根據(jù)權(quán)利要求2所述的方法,根據(jù)所述藍波-立夫算法來產(chǎn)生拷貝或文字命令包括:針對每一字符串通過以下操作用參考相同字符串及先前出現(xiàn)的字符串的拷貝及偏移命令來替換命令集中的所述數(shù)據(jù)集中的字符串:
識別所述每一字符串的初始文字集;
識別對應(yīng)于所述初始文字集的散列鏈;
在所述散列鏈中所參考的對應(yīng)于所述初始文字集的位置處專門地搜索一或多個相同字符串。
5.根據(jù)權(quán)利要求3所述的方法,其進一步包括對所述命令集進行霍夫曼譯碼。
6.一種用于壓縮數(shù)據(jù)的設(shè)備,其包括:
存儲器組;
電子裝置,其經(jīng)編程以:
接收輸入文件;
以所述輸入文件中的初始文字位置作為當(dāng)前位置開始,通過以下操作針對所述輸入文件中的多個文字集中的每一文字集從所述輸入文件產(chǎn)生散列鏈:(a)產(chǎn)生所述當(dāng)前位置處的文字集的散列值,(b)在所述存儲器組中以所述散列值檢索條目,(c)將所述條目寫入到所述散列鏈中映射到所述當(dāng)前位置的位置,(d)將所述當(dāng)前位置以所述散列值寫入所述存儲器組中,(e)使所述當(dāng)前位置前進到所述輸入文件中的下一文字位置且重復(fù)(a)到(e)直到到達所述輸入文件的末尾為止;
在所述散列鏈的產(chǎn)生期間,響應(yīng)于檢測到所述文字集包含為所述輸入文件中的前面文字的復(fù)制品的文字而暫停執(zhí)行(a)到(d);及
輸出所述散列鏈。
7.根據(jù)權(quán)利要求6所述的設(shè)備,其中所述電子裝置進一步經(jīng)編程以針對至多15個連續(xù)文字暫停執(zhí)行(a)到(d),但仍執(zhí)行(e),所述15個連續(xù)文字相同于位于所述15個連續(xù)文字之前的文字。
8.根據(jù)權(quán)利要求7所述的設(shè)備,其中所述電子裝置進一步經(jīng)編程以將所述散列鏈輸出到命令產(chǎn)生模塊且處理所述散列鏈以產(chǎn)生包含針對所述輸入文件中的重復(fù)文字字符串的拷貝偏移命令的命令文件。
9.根據(jù)權(quán)利要求8所述的設(shè)備,其中所述命令產(chǎn)生模塊進一步經(jīng)編程以將前面為所述文字的前面實例的連續(xù)文字實例的行程替換為描述到所述輸入文件中的所述前面實例的偏移及所述文字的連續(xù)實例的所述行程中的文字的數(shù)目的行程長度命令。
10.根據(jù)權(quán)利要求9所述的設(shè)備,其中所述命令產(chǎn)生模塊實施藍波-立夫算法。
11.根據(jù)權(quán)利要求10所述的設(shè)備,其中所述電子裝置進一步經(jīng)編程以使用霍夫曼譯碼對所述命令文件進行編碼。
12.根據(jù)權(quán)利要求6所述的設(shè)備,其進一步包括FIFO緩沖區(qū);
其中所述電子裝置進一步經(jīng)編程以通過將寫入請求添加到所述FIFO緩沖區(qū)及處理來自所述FIFO緩沖區(qū)的所述寫入請求而將所述當(dāng)前位置以所述散列值寫入所述存儲器組中。
13.根據(jù)權(quán)利要求12所述的設(shè)備,其中所述電子裝置進一步經(jīng)編程以在所述散列鏈的產(chǎn)生期間響應(yīng)于檢測到所述FIFO緩沖區(qū)填滿而暫停執(zhí)行(a)到(d),但仍執(zhí)行(e),直到所述FIFO緩沖區(qū)不再填滿為止。
14.一種用于壓縮數(shù)據(jù)的設(shè)備,其包括:
存儲器組;
FIFO緩沖區(qū),其對應(yīng)于所述存儲器組;
電子裝置,其經(jīng)編程以:
接收輸入文件;
以所述輸入文件中的初始文字位置作為當(dāng)前位置開始,通過以下操作針對所述輸入文件中的多個文字集中的每一文字集從所述輸入文件產(chǎn)生散列鏈:(a)產(chǎn)生所述當(dāng)前位置處的文字集的散列值,(b)在所述存儲器組中以所述散列值檢索條目,(c)將請求將所述條目寫入到所述散列鏈中映射到所述當(dāng)前位置的位置的寫入請求添加到所述FIFO緩沖區(qū),(d)執(zhí)行來自所述FIFO緩沖區(qū)的所述寫入請求,(e)將所述當(dāng)前位置以所述散列值寫入所述存儲器組中,(f)使所述當(dāng)前位置前進到所述輸入文件中的下一文字位置且重復(fù)(a)到(f)直到到達所述輸入文件的末尾為止;
在所述散列鏈的產(chǎn)生期間,響應(yīng)于檢測到所述FIFO緩沖區(qū)填滿而暫停執(zhí)行(a)到(e),但仍執(zhí)行(f),直到所述FIFO緩沖區(qū)不再填滿為止;及
輸出所述散列鏈。
15.根據(jù)權(quán)利要求14所述的設(shè)備,其中所述電子裝置進一步經(jīng)編程以響應(yīng)于檢測到所述每一文字集包含為所述輸入文件中的前面文字的復(fù)制品的文字而暫停執(zhí)行(a)到(e),但仍執(zhí)行(f)。
16.根據(jù)權(quán)利要求15所述的設(shè)備,其中所述電子裝置進一步經(jīng)編程以針對至多15個連續(xù)文字暫停執(zhí)行(a)到(e),但仍執(zhí)行(f),所述15個連續(xù)文字相同于位于所述15個連續(xù)文字之前的文字。
17.根據(jù)權(quán)利要求14所述的設(shè)備,其中所述電子裝置進一步經(jīng)編程以將所述散列鏈輸出到命令產(chǎn)生模塊且處理所述散列鏈以產(chǎn)生包含針對所述輸入文件中的重復(fù)文字字符串的拷貝偏移命令的命令文件。
18.根據(jù)權(quán)利要求17所述的設(shè)備,其中所述命令產(chǎn)生模塊實施藍波-立夫算法。
19.根據(jù)權(quán)利要求18所述的設(shè)備,其中所述電子裝置進一步經(jīng)編程以使用霍夫曼譯碼對所述命令文件進行編碼。