JP6425709B2 - Data recovery using preliminary extended dictionary during recovery - Google Patents
Data recovery using preliminary extended dictionary during recovery Download PDFInfo
- Publication number
- JP6425709B2 JP6425709B2 JP2016509219A JP2016509219A JP6425709B2 JP 6425709 B2 JP6425709 B2 JP 6425709B2 JP 2016509219 A JP2016509219 A JP 2016509219A JP 2016509219 A JP2016509219 A JP 2016509219A JP 6425709 B2 JP6425709 B2 JP 6425709B2
- Authority
- JP
- Japan
- Prior art keywords
- dictionary
- data
- computer
- compressed data
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/001—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits characterised by the elements used
- H03M7/006—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits characterised by the elements used using diodes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6005—Decoder aspects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
本発明の実施形態は、圧縮及び復元に関し、より詳細には、復元性能を向上させるために圧縮辞書の予備拡張及び自己復元データ要素を用いることに関する。 Embodiments of the present invention relate to compression and decompression, and more particularly, to using compression dictionary pre-expansion and self decompression data elements to improve decompression performance.
現代のソフトウェアアプリケーションは、ディスク上に若しくはメモリ内に格納されるデータ、又はネットワークを介して伝送されるデータのサイズを小さくするために、圧縮を広範に利用している。圧縮技術は、損失なしの場合も損失ありの場合もある。損失あり技術は、元のソースデータに対してある程度のデータを失うことが許容できる場合に用いることができる。例えば、低解像度システム(例えば、携帯電話のディスプレイ)によって提示される写真は、より高解像度のソース写真(例えば、高解像度の家族写真)によって提供される詳細の全てを必ずしも必要としない。携帯電話は、本質的に、より高解像度の家族写真の実体を表示するが、より低解像度の画像を使用することにより利用可能な低減された処理要件及びストレージ要件を伴う。 Modern software applications make extensive use of compression to reduce the size of data stored on disk or in memory, or transmitted over a network. Compression techniques may be lossless or lossy. Lossy techniques can be used where it is acceptable to lose some data to the original source data. For example, photos presented by low resolution systems (eg, cell phone displays) do not necessarily require all of the details provided by higher resolution source photos (eg, high resolution family photos). Mobile phones inherently display higher resolution family picture entities, but with reduced processing and storage requirements available by using lower resolution images.
データを圧縮するための損失なし技術は、データの損失が有害な場合(例えば、銀行口座の桁の損失、社会保障番号の損失、又は緊急応答システムなどの基幹システム用のデータの損失)に用いることができる。圧縮及び復元技術の使用は、一般に、圧縮処理側及び復元処理側の両方において、CPU処理リソースと、ディスクスペース又はデータ伝送リソースとのトレード・オフとなる。換言すれば、高い圧縮効率は、典型的にはより多くの処理リソース及びより少ないストレージ・スペースを必要とし、一方、低い圧縮効率は、典型的にはより少ない処理リソース及びより多くのストレージ又は伝送リソースを必要とする。効率を高めるための伝統的な手法は、圧縮アルゴリズムに焦点を合わせてきた。 Lossless techniques for compressing data are used when loss of data is harmful (eg, loss of digit in bank account, loss of social security number, or loss of data for backbone systems such as emergency response systems) be able to. The use of compression and decompression techniques is generally a trade-off between CPU processing resources and disk space or data transmission resources on both the compression and decompression sides. In other words, high compression efficiency typically requires more processing resources and less storage space, while low compression efficiency typically requires less processing resources and more storage or transmission. I need resources. Traditional approaches to increase efficiency have focused on compression algorithms.
本発明の目的は、復元性能を向上させるための、圧縮データを復元する方法、システム及びコンピュータ・プログラム製品を提供することである。 An object of the present invention is to provide a method, system and computer program product for decompressing compressed data to improve the decompression performance.
本発明の1つの実施形態によれば、コンピュータによって実行される、圧縮データを復元するための方法が提供される。第1の復元辞書が解析される。第1の復元辞書は、アドレス指定スキームに基づいて第1の復元辞書内に非連続方式で分散された未圧縮データ部分を各々が有する複数の連鎖を含み、ここで各連鎖の前記未圧縮データ部分は、圧縮データの対応する未圧縮バージョンを形成する。第1の復元辞書内の連鎖の各々の未圧縮データ部分を組み合わせて圧縮データの未圧縮バージョンを形成することにより、第2の復元辞書が生成され、圧縮データを復元するための命令が第2の復元辞書内に挿入される。圧縮データを第2の復元辞書に適用することによって、圧縮データが復元される。本発明の実施形態は、圧縮データを上述の方法と実質的に同じ方式で復元するためのシステム及びコンピュータ・プログラム製品をさらに含む。 According to one embodiment of the present invention, there is provided a computer-implemented method for decompressing compressed data. The first reconstruction dictionary is analyzed. The first decompression dictionary includes a plurality of chains each having uncompressed data portions distributed in a non-continuous manner in the first decompression dictionary based on the addressing scheme, wherein the uncompressed data of each chain The parts form the corresponding uncompressed version of the compressed data. A second decompression dictionary is generated by combining the uncompressed data portions of each of the chains in the first decompression dictionary to form an uncompressed version of the compressed data, and an instruction for decompressing the compressed data is second Inserted in the recovery dictionary of. Applying the compressed data to the second decompression dictionary decompresses the compressed data. Embodiments of the present invention further include systems and computer program products for decompressing compressed data in substantially the same manner as the method described above.
一般に、種々の図面において同様の数字は、同様の構成要素を示すために使用される。 In general, like numerals are used to indicate similar components in the various drawings.
多くのデータ圧縮技術がその対応する復元方式と共に存在するが、本明細書で説明する技術は、Ziv−Lempelアルゴリズムのような記号又はトークン置換型損失なし圧縮技術において特に有用となる。Ziv−Lempelアルゴリズムは、一連の記号を単一コードで置き換えることによって効率を達成するが、付加的なコード化を伴う。例えば、文字「A」を数字1で置き換えることができ、「B」を数字2で、以下同様に英語のアルファベットの26文字を置き換えることができるが、それでもなおこれは、1対1記号置換である。 Although many data compression techniques exist with their corresponding decompression schemes, the techniques described herein are particularly useful in symbol or token substitution type lossless compression techniques such as the Ziv-Lempel algorithm. The Ziv-Lempel algorithm achieves efficiency by replacing a series of symbols with a single code, but with additional coding. For example, the letter "A" can be replaced by the number 1, "B" by the number 2, and so on, the 26 letters of the English alphabet can be replaced, but still this is a one-to-one symbol substitution is there.
しかしながら、いずれの所与の言語においても、一連の記号は共通である。例えば、単語「the」は、3つの記号又は単一のトークンを含み、英語において広範に用いられる。この場合、単語「the」全体を、単一ビット(又は文字として格納される場合には単一バイト)しか必要としない数字「1」のような単一記号で表すことができ、これにより、3記号の単語が3対1(3:1)の置換効率で単一記号に削減される。高い効率を得るために、ビット単位コードを用いることができる(例えば、トークンをコード化するための最小数のビット)。この例においては、数字「1」がトークン「the」の置換コードとなる。さらに、文法構造が関与する場合、単語「the」は、記号「the」が完全にその内部に含まれる(例えばan「the」m)「anthem」のような別の単語の一部でないときには常に、少なくとも2つのスペースで囲まれていることを識別することができる。従って、英語において見いだされる単語「the」は、通常、2つのスペースで囲まれた「the」の形態(すなわち、単語「the」)であり、合計で5つの記号になるが、それでもなお数字「1」のような単一コードで置き換えることができるので、これによりこのトークン内の5つの記号が、5:1の置換効率で単一コードに削減される。語句がソース文書内で繰り返される場合、さらなる効率を達成することができる。 However, in any given language, the series of symbols are common. For example, the word "the" includes three symbols or a single token and is widely used in English. In this case, the whole word "the" can be represented by a single symbol such as the number "1", which only needs a single bit (or a single byte if stored as a character), Three symbol words are reduced to a single symbol with a 3 to 1 (3: 1) substitution efficiency. A bit-wise code can be used to obtain high efficiency (eg, a minimum number of bits for encoding a token). In this example, the number "1" is the replacement code for the token "the". Furthermore, whenever a grammatical structure is involved, the word "the" is always whenever it is not part of another word such as "anthem", where the symbol "the" is completely contained within it (e.g. It can be identified that it is enclosed by at least two spaces. Thus, the word "the" found in the English language is usually in the form of the "the" surrounded by two spaces (ie the word "the"), giving a total of five symbols, but still the figure " This can reduce the five symbols in this token to a single code with a 5: 1 replacement efficiency, as it can be replaced with a single code such as "1". Further efficiencies can be achieved if the phrase is repeated in the source document.
元のトークンとその対応する置換コードとが辞書内に格納される。この点に関して、単純な置換を用いる圧縮の単純化された考え方は、復元中にコード「1」を「見つけ(look up)」、トークン「the」で置換することである。しかしながら、実際の動作においては、入力データストリームは、通常、連続的に処理され(例えば、大容量の辞典を圧縮することを考える)、新たなトークンに遭遇するたびにこれが付加される。従って、圧縮辞書は単なる単純な語彙集ではなく、最終的に元データを損失なしに回復するための、未圧縮データからの入力トークンの複雑なコード化、及び辞書内でのトークンのアドレス指定である。このような複雑さは、Ziv−Lempel圧縮に対する復元技術に関してこの後で提示される例を通じて明らかになるであろう。 The original token and its corresponding replacement code are stored in the dictionary. In this regard, a simplified idea of compression using a simple permutation is to "look up" the code "1" and to replace it with the token "the" during decompression. However, in actual operation, the input data stream is usually processed continuously (e.g., consider compressing a large dictionary) and added each time a new token is encountered. Thus, a compression dictionary is not just a simple lexicon, but with the complex encoding of input tokens from uncompressed data and the addressing of tokens within the dictionary to finally recover the original data without loss. is there. Such complexity will become apparent through the example presented later on the decompression technique for Ziv-Lempel compression.
説明を簡単にするために、本明細書で説明する技術を、Ziv−Lempel圧縮スキームのような広範に用いられる基本アルゴリズムに関して説明する。本明細書で説明する技術の多くは、他の圧縮及び復元技術(例えば、文脈木重み付け法又はバイト対コード化)に変換することができる。学界によっては、Ziv−Lempelは、Lempel−Ziv(LZ)とも呼ばれる。本明細書において用いる場合、Ziv−Lempel、Lempel−Ziv、及びLZは全て、Ziv−Lempelアルゴリズム、又はその変形及び等価物を指すものとする。 For simplicity, the techniques described herein will be described in terms of widely used basic algorithms, such as the Ziv-Lempel compression scheme. Many of the techniques described herein can be converted to other compression and decompression techniques (eg, context tree weighting or byte-to-code encoding). In some academic circles, Ziv-Lempel is also called Lempel-Ziv (LZ). As used herein, Ziv-Lempel, Lempel-Ziv, and LZ all refer to the Ziv-Lempel algorithm, or variations and equivalents thereof.
その発端から、Ziv−Lempelは、特定の用途に合わせてアルゴリズムを改良して(例えば、Huffmanコード化技術を追加することにより)、LZアルゴリズムのファミリーを形成することにより進歩してきた。例えば、LZ77及びLZ78アルゴリズムは、異なる用途に用いられている。LZ77は、.ZIPファイル圧縮及びStackerディスク圧縮アルゴリズムと共に用いる場合に効率を有する。別の変形において、LZ78は、V.42モデム標準を用いたネットワーク上のデータ伝送と共に用いる場合、又は画像交換フォーマット(GIF)圧縮を用いる画像圧縮と共に用いる場合に効率を有する。このようにして、Ziv−Lempelアルゴリズムは時と共に進化してきた。 From its inception, Ziv-Lempel has advanced by forming a family of LZ algorithms, modifying the algorithm (eg, by adding Huffman coding techniques) to a particular application. For example, LZ77 and LZ78 algorithms are used for different applications. LZ 77 is. It has efficiency when used with ZIP file compression and Stacker disk compression algorithms. In another variation, LZ 78 is a V.V. It has efficiency when used with data transmission over the network using the T.42 modem standard, or with image compression using Image Interchange Format (GIF) compression. Thus, the Ziv-Lempel algorithm has evolved over time.
伝統的な圧縮技術は、一般に復元効率よりもむしろ圧縮効率をより指向したものである。本発明の実施形態は、復元効率を高める。本発明の実施形態で使用するための例示的な環境を図1に示す。具体的には、この環境は、1つ又は複数のサーバ・システム10と、1つ又は複数のクライアント又はエンドユーザ・システム14とを含む。サーバ・システム10及びクライアント・システム14は、互いに遠隔にあってネットワーク12上で通信するものとすることができる。ネットワークは、任意の数の任意の適切な通信媒体(例えば、広域ネットワーク(WAN)、ローカル・エリア・ネットワーク(LAN)、インターネット、イントラネットなど)によって実装することができる。代替的に、サーバ・システム10とクライアント・システム14は、互いにローカルにあって、任意の適切なローカル通信媒体(例えば、ローカル・エリア・ネットワーク(LAN)、配線、無線リンク、イントラネットなど)を介して通信するものとすることができる。
Traditional compression techniques are generally more oriented to compression efficiency rather than recovery efficiency. Embodiments of the present invention enhance restoration efficiency. An exemplary environment for use in embodiments of the present invention is shown in FIG. Specifically, the environment includes one or more server systems 10 and one or more client or end user systems 14. The server system 10 and the client system 14 may be remote from one another and communicate on the
サーバ・システム10及びクライアント・システム14は、ディスプレイ又はモニタ(図示せず)、ベース(例えば、少なくとも1つのプロセッサ15、1つ若しくは複数のメモリ35及び/又は内部若しくは外部ネットワークインタフェース若しくは通信装置25(例えば、モデム、ネットワークカードなど))、随意の入力装置(例えば、キーボード、マウス又はその他の入力装置)、並びに任意の市販ソフトウェア及びカスタム・ソフトウェア(例えば、サーバ/通信ソフトウェア、文字列復元記録モジュール、命令コード化モジュール、ブラウザ/インタフェース・ソフトウェアなど)を装備することが好ましい、任意の従来の又はその他のコンピュータ・システムによって実装することができる。
The server system 10 and the client system 14 may comprise a display or monitor (not shown), a base (eg at least one
クライアント・システム14は、ユーザが、サーバ・システム10へ圧縮データセット(例えば、ファイル、文書、ピクチャなど)を圧縮すること、又はサーバ・システム10から圧縮データセットを取り出すことを可能にする。サーバ・システムは、後述するように、既に圧縮された(例えばZiv−Lempelアルゴリズムにより)圧縮データ(例えば、ファイル、文書、ピクチャなど)を復元するための復元モジュール16と、ひとたび圧縮データセットが取り出されたとき(例えば、データ処理システム又はユーザにより)の自己復元のための命令を埋め込むための命令コード化モジュール20とを含む。
Client system 14 allows the user to compress a compressed data set (eg, file, document, picture, etc.) to server system 10 or retrieve a compressed data set from server system 10. The server system fetches the compressed data set once, and the
データベース・システム18は、種々の形態の圧縮ベースの情報(例えば、圧縮データ及びデータベース、並びに復元辞書など)を格納することができる。データベース・システムは、任意の従来の又はその他のデータベース又はストレージ・ユニットによって実装することができ、サーバ・システム10及びクライアント・システム14に対してローカル又は遠隔にあるものとすることができ、任意の適切な通信媒体(例えば、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、配線、無線リンク、イントラネットなど)を介して通信することができる。
本発明の実施形態の簡単な要約を目的として、伝統的な方法で圧縮されたデータセットが、本明細書で説明する技術によって予備拡張される。本明細書で説明する例において、圧縮データは、固定長、その元の長さ、又は復元効率を補助するその他の何らかの都合の良い長さに復元される。Ziv−Lempel圧縮に関して、復元は、辞書の拡張によって達成され、この辞書は、圧縮中に定義される本質的に「翻訳」辞書であり、これは、より小さい参照コードをその元の対応トークンに変換する(例えば、上述のようにコード数字「1」が「the」に変換される)。拡張された対応トークンを指定された順序で連結して元のソースデータが形成され、これにより、圧縮されていた元データが生成される。 For the purpose of a brief summary of embodiments of the present invention, data sets compressed by traditional methods are pre-expanded by the techniques described herein. In the example described herein, the compressed data is decompressed to a fixed length, its original length, or some other convenient length that aids in the decompression efficiency. With respect to Ziv-Lempel compression, decompression is achieved by extension of the dictionary, which is essentially a "translation" dictionary defined during compression, which converts the smaller reference code to its original corresponding token. Convert (eg, code number "1" is converted to "the" as described above). The expanded corresponding tokens are concatenated in a specified order to form the original source data, thereby generating the compressed original data.
あるいは、1つ又は複数のクライアント・システム14は、独立型ユニットとして動作している場合には復元を行うことができる。独立型動作モードにおいて、クライアント・システムは、データ(例えば、圧縮データ及びデータベース、並びに復元辞書など)を格納するか又はデータへのアクセスを有し、復元モジュール16と、格納及び復元のための命令を挿入するための命令コード化モジュール20とを含む。本質的に、LZ辞書を部分的に拡張して第2の辞書を得る。復元中の第2の復元辞書の使用により、最終的に元のデータセットの回復がもたらされる。
Alternatively, one or more client systems 14 may perform restoration if operating as a stand-alone unit. In the stand-alone mode of operation, the client system stores or has access to data (e.g., compressed data and databases, and decompression dictionaries, etc.), and the
クライアント・システム14のグラフィカル・ユーザ・インタフェース(例えば、GUIなど)又はその他のインタフェース(例えば、コマンドラインプロンプト、メニュースクリーンなど)は、所望のデータ及び解析に関係する対応ユーザからの情報を要請し、解析結果(例えば、圧縮効率、予備拡張効率、最終復元中のCPU使用量など)を含むレポートを提供することができる。 The client system 14 graphical user interface (eg, a GUI, etc.) or other interface (eg, a command line prompt, menu screen, etc.) requests information from the corresponding user related to the desired data and analysis; Reports can be provided that include analysis results (eg, compression efficiency, pre-expansion efficiency, CPU usage during final recovery, etc.).
モジュール16及び20は、後述する本発明の実施形態の種々の機能を行うための1つ又は複数のモジュール又はユニットを含むことができる。種々のモジュール(例えば、復元モジュール16、命令コード化モジュール20など)は、任意の数のソフトウェア及び/又はハードウェア・モジュール又はユニットの任意の組合せによって実装することができ、プロセッサ15による実行のためにサーバ及び/又はクライアント・システムのメモリ35内に常駐することができる。この点に関して、後述のように、復元モジュール16は、復元を行い、命令コード化モジュール20は、結果の復元データを生成する自己復元のための命令を第2の辞書に挿入する。
本発明の実施形態により復元モジュール16及び命令コード化モジュール20が(例えば、サーバ・システム10及び/又はクライアント・システム14を介して)予備拡張及び復元を行う方法を、図2及び図3に示す。図2は、予備拡張の例示的なプロセスを示し、一方、図3は、復元プロセスを示す。
The manner in which the
具体的には、図2を参照すると、ステップ200においてZiv−Lempel圧縮が行われ、圧縮データセット及び関連付けられた復元辞書が生成される。得られた圧縮データセットは、コードのアレイ(元データを置換する)と、関連付けられた復元辞書とを含むことができ、この復元辞書は、コードのアレイに対してマッピングするか又は組合せトークン及び辞書アレイを提供する。復元辞書は、元データ由来のデータセグメントの圧縮トークンの拡張及び復元バージョンを収容し、ここで、後述のように、トークンの復元バージョンがアドレス指定スキームによって連鎖されて復元データセグメントを形成する。圧縮200は、伝統的なZiv−Lempel技術及び/又は本明細書で説明する技術によってさらなる効率をもたらす修正された技術を用いて行うことができる。圧縮データセットの復元は、ステップ210において開始され(例えば復元モジュール16によって行われる)、第2の修正された復元辞書を生成する。元の復元辞書及び第2の修正復元辞書の両方を、端末装置の能力、又はシステム規則若しくは要件に従って、復元のために格納することができる。
Specifically, referring to FIG. 2, Ziv-Lempel compression is performed at
データセットの圧縮中に圧縮されるデータセグメントの各トークンに対して、ステップ220においてトークンを処理して復元データが生成される。一例のZiv−Lempel復元を後で詳細に提示する。後述の例において、圧縮されたエントリは、12ビットでコード化され(例えば、3つの4ビット16進法ニブルとして)、これを用いて対応する8バイト(64ビット)拡張が圧縮トークンに対して誘導され、ここで拡張データセグメント(複数のトークンを有する)は、29バイト又は文字を含み、これは文字列と呼ばれることもある(例えば、29文字拡張文字列)。この例において復元のために用いられるメモリ位置は、メモリアドレス0149_64393014xにて開始し、ここで「x」は16進法(基数16)表示を示し、この場合、各桁は4ビット(例えば、0−Fx)であり、メモリ位置はバイト(8ビット)の量に関して表される。例として、復元辞書は、アドレス00000048_B6C88000xにてメモリ内にロードされる。例示的な圧縮データの一部を以下に示し、ここで開始アドレスは左側にあり、4つの後続のメモリ位置の内容(例えば、各々が32ビット又は4バイトを含む)が各アドレスの右側にある。
アドレス0149_64393014xで始まる最初の6バイトはヘッダであり、この場合、値は04002001CB01xであり、上記で点線の下線が付されている。ヘッダの後の次の12ビットである41EXは、第1のトークンに対する12ビットコード(実線下線)であり、本質的に復元辞書へのポインタである。8バイト拡張を用いると、復元辞書へのメモリ・オフセットに8が掛けられる(すなわち、41Ex×8、又は20F0x)。この値を復元辞書開始位置である48_B6C88000x(先導するゼロは省略される)に加算して、20F0x+48B60C8000x=48B60CA0F0xを得る。この位置での例示的な復元辞書データを以下に示し、ここで開始アドレスは左側にあり、4つのメモリストアが各アドレスの右側にある。
8バイト・トークン拡張がこのアドレスに存在し、下線が付されている(後の2つのメモリ位置内のデータは、この例には関係しない)。トークン拡張は、16進数「A」で開始し、12ビット拡張アドレス419xが続き、5バイト(40ビット)の未圧縮データ0030003000xが続く。従って、この例のトークンは、未圧縮データを収容するのみならず、メタデータ(すなわち、4ビット命令「A」及び拡張アドレス)も収容する。今までのところ、拡張データセグメント内の未圧縮データは、トークンの値又は0030003000xである。規約により、トークン拡張の最初の4ビットがゼロではなく値Aであるので、データセグメント拡張は不完全であるとみなされ、419xアドレスの12ビット拡張を用いてデータセグメントの拡張が続けられる。復元辞書への次のメモリ・オフセットは、419x×8、又は20C8xである。この値を復元辞書開始位置である48_B6C88000xに加算して、20C8x+48B60C8000x=48B60CA0C8xを得る。そのメモリ位置における復元辞書データは、例えば、
とすることができる。
An 8-byte token extension is present at this address and is underlined (data in the last two memory locations are not relevant to this example). The token expansion starts with a hexadecimal number "A", followed by a 12 bit expanded address 419x, followed by 5 bytes (40 bits) of uncompressed data 0030003000x. Thus, the token in this example not only accommodates uncompressed data, but also contains metadata (i.e., 4-bit instruction "A" and an extended address). So far, the uncompressed data in the extended data segment is the value of the token or 0030003000x. By convention, the data segment extension is considered incomplete because the first four bits of the token extension are the value A rather than zero, and the data segment extension is continued using the 12-bit extension of the 419x address. The next memory offset to the recovery dictionary is 419xx8, or 20C8x. This value is added to the restoration dictionary start position 48_B6C88000x to obtain 20C8x + 48B60C8000x = 48B60CA0C8x. The restoration dictionary data at that memory location is, for example,
It can be done.
データセグメント内の次のトークンに対する8バイト・トークン拡張がこのアドレスに存在する。トークン拡張は、16進数「A」で開始し、12ビット拡張アドレス414sが続き、このトークンに対する5バイトの未圧縮データ3400310030xが続く。このデータは、拡張データセグメント内の未圧縮データと連結される。今までのところ、拡張データセグメント内の未圧縮データは、34003100300030003000xである。このトークン拡張の最初の4ビットがゼロではないので、拡張は継続し、414xアドレスの12ビット拡張を用いて、上述の方式で新たなアドレス48B60CA0A0xが生成される。そのメモリ位置における復元辞書データは、例えば、
とすることができる。
An 8-byte token extension to the next token in the data segment is present at this address. The token expansion starts with the hexadecimal number "A", followed by the 12 bit expanded address 414s, followed by the 5 bytes of uncompressed data 3400310030x for this token. This data is concatenated with the uncompressed data in the extended data segment. So far, the uncompressed data in the extended data segment is 34003100300030003000x. Since the first four bits of this token extension are not zero, the extension continues and a new address 48B60CA0A0x is generated in the manner described above, using a twelve bit extension of the 414x address. The restoration dictionary data at that memory location is, for example,
It can be done.
次のトークンに対する8バイト・トークン拡張がこのアドレスに存在する。トークン拡張は、16進数「A」で開始し、12ビット拡張アドレス414xが続き、5バイトの未圧縮データ0500006000xが続く。このデータは、拡張データセグメント内の未圧縮データと連結される。今までのところ、拡張データセグメント内の未圧縮データは、050000600034003100300030003000xである。プロセスは、後続の8バイト・トークン拡張の最初の4ビットがゼロになるまで、後続のトークに対して継続する。例として、第4回目から第6回目までの拡張の繰返しは、以下のトークンを与える。
この例において、第6回目の繰返しにより、8バイトトークン拡張の最初の4ビットがゼロになり(下線)、それにより、このデータセグメントに対する拡張が完了したことが示される。次の桁はアドレスではないが4の値(下線)であり、これは4バイトのデータが残っていることを示す。この例において、4バイトは00120018x(下線)である。このデータセグメントに対する最終的な連結された又は拡張された値は、以下の例を用いて表される。
41Ex=001200183E00400042002C003C00005000600034003100300030003000x
In this example, the sixth iteration makes the first four bits of the 8-byte token extension zero (underlined), thereby indicating that the extension for this data segment is complete. The next digit is not an address but a value of 4 (underlined), which indicates that 4 bytes of data remain. In this example, the four bytes are 00120018x (underlined). The final concatenated or expanded value for this data segment is represented using the following example.
41 Ex = 0012000183E 00400042002 C 003 C000050 0060 00 003 003000 3 000 3000 x
データセグメントに対する拡張は、第2の修正復元辞書内に格納され、初期トークン拡張内のメモリ位置に基づいて取り出すことができる。上記の例に関して、第1回目の繰返しに由来する元のメモリ位置である41Exを、第2の修正復元辞書内の拡張データセグメントに対するデータエントリ点として用いることができる。換言すれば、第2の修正復元辞書は、基本的に、拡張データセグメントを取り出すためのルックアップ・テーブルとして動作する。プロセスは、ステップ230において復元辞書内の全てのデータセグメント(及びトークン)が拡張されて第2の修正復元辞書内に格納されるまで続く。
Extensions to the data segment may be stored in a second modified decompression dictionary and retrieved based on memory locations within the initial token extension. For the above example, 41Ex, the original memory location from the first iteration, can be used as a data entry point for the extended data segment in the second modified recovery dictionary. In other words, the second modified recovery dictionary basically operates as a look-up table for retrieving extended data segments. The process continues until all data segments (and tokens) in the recovery dictionary are expanded at
上記のデータセグメントは、既知の長さ29バイトを有する。圧縮効率を達成するために、復元を行うときに各データセグメント又はトークンを1回より多く用いることができる。データセグメントを復元するために、第2の復元辞書内の拡張データセグメントを上述の方式と同じ方式で連結することができる。 The above data segment has a known length of 29 bytes. Each data segment or token can be used more than once when performing decompression to achieve compression efficiency. The extended data segments in the second recovery dictionary can be concatenated in the same manner as described above to recover the data segments.
復元されたデータセグメントを提供するために、ステップ235において、1つ又は複数の命令を生成し、第2の修正復元辞書内に格納することができる(例えば、命令コード化モジュール20によって行われる)。一例において、ステップ235において、ムーブ(又はコピー)命令を生成して格納することができる。ムーブ命令は、データを1つのメモリ位置から別の位置へ移動させる。例えば、復元辞書内の復元データセグメントは、復元データセグメントを一緒に共通ストレージ領域内へ移動することによって連結される。
One or more instructions may be generated and stored in a second modified decompression dictionary (eg, performed by instruction coding module 20) at
例示的なムーブ命令を、以下、アセンブリ又はアセンブラ言語(例えば、360アセンブリ又はx86アセンブリ)に関して説明する。アセンブリ言語は、下層のプロセッサ・アーキテクチャに結びつけることができ、偽英語様コード(pseudo−English like code)を用いてプロセッサ命令を表す。実行速度のために、多くのコンピュータ・コンパイラ及び処理サブルーチンは、アセンブリ言語で記述されている。従って、以下のコード例によって説明される論理を、処理プラットフォームに適合させることができる。一例において、アセンブリ言語命令ムーブ・キャラクタ(MVC)は、ステップ235において、第2の修正復元辞書内の各復元データセグメントの位置に隣接した位置(メモリ内又はディスク上)に配置され又は格納される。コンピューティング環境に応じて、その他の命令コードを用いてデータをコピー又は移動することができる(例えば、MVI、MHHVI、MOVなど)。例示的なMVC命令を以下に示す。
第1の例のMVC命令は、データ(例えば、文字)をソース・ストレージ位置からターゲット・ストレージ位置へ移動させる。ソース及びターゲット・メモリ位置は、コンピュータ・プログラム内で定義することができる。第2の例のMVC命令は、40データ要素(例えば、文字)をソース・ストレージ位置からターゲット・ストレージ位置へ移動させる。MVC命令は、上限256データ要素(例えば、文字)までの移動を規定しており、これにより、データセグメントを連結して最終的に復元データセットを生成することが可能になる。この例において、TARGETは、上述の共通ストレージ位置とすることができ、SOURCEは、第2の修正復元辞書内の復元データセグメント(例えば、復元モジュール16によって生成される)とすることができる。 The first example MVC instruction moves data (eg, characters) from a source storage location to a target storage location. Source and target memory locations can be defined in a computer program. The MVC instruction of the second example moves 40 data elements (e.g., characters) from the source storage location to the target storage location. The MVC instruction defines movement up to a maximum of 256 data elements (e.g., characters), which allows data segments to be concatenated to ultimately generate a reconstructed data set. In this example, TARGET can be the common storage location described above, and SOURCE can be a restore data segment (eg, generated by restore module 16) in the second modified restore dictionary.
この例では、ステップ235において、第2の修正復元辞書内の復元データセグメントに隣接して配置された各MVC命令のメモリ位置又は相対メモリ位置もまた、分離した命令ジャンプ・テーブル内に格納される。上記の例の29バイト又は文字のデータセグメントを、対応するMVC命令(MVC TARGET(29),SOURCE)によって移動させることができる。命令ジャンプ・テーブルは、圧縮データの第1回目の繰返しの復元を考慮したものである。
In this example, in
さらに明確にするために、第1のトークンを繰返し処理して、第1の拡張データセグメントを生成する。第1の拡張データセグメント(例えば、29バイト文字列)及びMVC命令(又はその表現)は、第2の修正復元辞書内に格納される。第1のトークン及びゼロのメモリ・オフセット(すなわち、第1のエントリに対してゼロ)は、ジャンプ・テーブル内に格納される。メモリ・オフセットを、第2の修正復元辞書に格納されるような文字列の長さ及びMVC命令に適応させるために、現在のオフセットへ前進させる。次の(又は第2の)トークンを繰返し処理して、第2の拡張文字列を生成する。第2のトークン及び現在のメモリ・オフセットが、次のエントリとしてジャンプ・テーブル内に格納される。メモリ・オフセットを、第2の文字列の長さ及びMVC命令に適応するように前進させ、プロセスは、トークン処理が完了するまで続く。 To further clarify, the first token is iteratively processed to generate a first extended data segment. The first extended data segment (e.g., a 29 byte string) and the MVC instruction (or a representation thereof) are stored in a second modified decompression dictionary. The first token and a memory offset of zero (ie, zero for the first entry) are stored in the jump table. The memory offset is advanced to the current offset to accommodate the string length and MVC instructions as stored in the second modified recovery dictionary. The next (or second) token is iteratively processed to generate a second extended string. The second token and the current memory offset are stored in the jump table as the next entry. The memory offset is advanced to accommodate the second string length and the MVC instruction, and the process continues until token processing is complete.
従って、ジャンプ・テーブルは、トークンのリストと、対応する第2の修正復元辞書へのポインタ又はメモリアドレス・オフセットとを有し、ここでポインタは、本来的に拡張文字列長(すなわち、オフセットの前進による)を説明するものである。それゆえ、MVC命令に対するソースアドレスは、ジャンプ・テーブルによって入手可能であり、一方、ターゲットアドレスは、MVC命令に対する指定ターゲットアドレスを提供する制御ソフトウェアにより提供される。ジャンプ・テーブル内のエントリを処理することで、一連の拡張文字列の効率的な連結が可能になる。第2の修正復元辞書を復元するための例示的なアセンブリ言語のサンプルを以下に示し、図3に関連して説明する。コード・サンプルは、上述のように生成されたジャンプ・テーブルを含む。 Thus, the jump table has a list of tokens and a pointer or memory address offset to the corresponding second modified recovery dictionary, where the pointer is by nature the extension string length (i.e. of the offset) Is described). Therefore, the source address for the MVC instruction is available via the jump table, while the target address is provided by the control software which provides the specified target address for the MVC instruction. Processing the entries in the jump table enables efficient concatenation of a series of extended strings. An example assembly language sample for recovering the second modified recovery dictionary is shown below and described in connection with FIG. The code sample contains the jump table generated as described above.
全てのデータセグメント又は所与の数のデータセグメントが既に拡張されたか否かをステップ240で判定する。全てのデータセグメントが拡張されていない場合、プロセスはステップ220において繰り返される。そうでない場合には、プロセスは245において継続し、図3に進む。この時点で、圧縮データセット内のデータセグメントの予備拡張が完了する。データセットの復元は、後の時点で、元のソースデータが取り出されるときに行うことができる。
It is determined at
第2の修正復元辞書を復元のために利用する方法を、図3に関連して説明する。復元プロセスは、250において図2から継続することができ、又は元のソースデータが要求されたときに行うことができる(例えば、復元モジュール16により)。復元は、ステップ255において開始する。ステップ260において、データセグメントの初期トークンが圧縮データから得られる。トークンは、第2の修正復元辞書へのポインタを含むことができる(例えば、上述の41Ex)。ステップ270において、対応する拡張の命令が実行される。図2に関連して上述したジャンプ・テーブルの例を続けると、対応する又は第1のMVC命令が、ジャンプ・テーブル内で位置探索され、実行される。アセンブリコードセグメントを以下にリストとして示し、これはジャンプ・テーブルと例示的な修正復元辞書とを有する。
The manner in which the second modified recovery dictionary is utilized for recovery is described in connection with FIG. The restoration process can continue from FIG. 2 at 250 or can occur when the original source data is requested (eg, by the restoration module 16). The restoration starts in
以下のコードは、予備拡張データベーステーブルの列又はレコード内のデータに対して全ての12ビットコード化エントリを処理する。このコード・サンプルは、31ビットアドレス指定を使用するが、48ビット、64ビット、又は本明細書で提示するような31ビットアドレス指定コードと同様の論理を用いるその他の任意の適切な既存の又は将来的なコード化スキームを使用することができる。コード・サンプルの上部分は、予備拡張データセグメントを連結する例示的なコードを含む。下部分は、ジャンプ・テーブル及び予備拡張辞書エントリを含む辞書エントリ又は「DICTENTS」で始まる。DICTENTSコード及びデータは、以前に予備拡張されて第2の修正復元辞書内に格納された(例えば、図2に関連して説明したように行われる動作の結果として)拡張辞書の結果とすることができる。DICTENTSラベル付きコード(例えば、ENTラベル)、及びアセンブリ言語コード(例えばMOVラベル)を有する辞書エントリは、上部コードセグメントの実行又はインスタンス化に先立ってメモリ内にロードされる。拡張コード及び辞書エントリは、メモリの異なる領域内に常駐することができ、これを以下にリストとして示す。
*R0は、処理するための12ビット辞書エントリのカウントを収容する
*R1は、次の圧縮列バイト(ソース)を指示する
*R3は、ターゲット(拡張)データを指示する
*R9は、生成された辞書情報(「DICTENTS」)を指示する
* R0 contains count of 12-bit dictionary entries to process * R1 indicates next compressed column byte (source) * R3 indicates target (extended) data * R9 generated Indicate dictionary information ("DICTENTS")
上記DICTENTSコード及びデータは、000xからFFFx(すなわちENT000−ENTFFF)まで列挙されるエントリ「ENT」ラベルを伴うジャンプ・テーブルである。000xからFFFxまでのENT列挙値は、12ビット拡張によって提供される全ての可能な値(順列)を表す。ラベルは、アセンブリ言語コードにおいて、プログラマ(及びアセンブリ言語コンパイラ)がそのラベルに関連付けられるコードの1つ又は複数の行を定義することを可能にする擬英語構文として用いられる。各ENTラベルは、対応するムーブ「MOV」ラベルを有する。ジャンプ・テーブル内のENTエントリが処理されるときに、対応するMOVコードが実行される。例えば、ラベルENTFFEは、ラベルMOVFFEを指示する。そしてまたMOVFFEは、102バイトの予備拡張(未圧縮)データを第1の12ビット拡張からレジスタR3によって指示されるターゲットアドレス(このターゲットアドレスは、呼出しソフトウェアによって提供することができる)へ移動する命令(例えば、これはMVC命令を含む)を有する。MVC命令の次は、ロードアドレス「LA」命令であり、これは、R3レジスタ内のターゲットアドレスを102だけインクリメントする又は前進させる。次のエントリENTFFFは、MOVFFFを指示し、これは、103バイトのデータを第2の12ビット拡張から、既に102だけインクリメントされたR3によって指示されるターゲットアドレスへ移動する命令を有する。各予備拡張データセグメントの長さは、異なる修正拡張辞書間で変化し得る。 The DICTENTS code and data is a jump table with the entry "ENT" label listed from 000x to FFFx (i.e. ENT 000-ENTFFF). The ENT enumeration values from 000x to FFFx represent all possible values (permutations) provided by the 12-bit extension. Labels are used in assembly language code as pseudo-English syntax that allows a programmer (and an assembly language compiler) to define one or more lines of code associated with the label. Each ENT label has a corresponding move "MOV" label. When the ENT entries in the jump table are processed, the corresponding MOV code is executed. For example, the label ENTFFE indicates the label MOVFFE. And also, the MOVFFE moves the 102 bytes of pre-expanded (uncompressed) data from the first 12-bit extension to the target address pointed to by register R3, which can be provided by the calling software. (For example, this includes an MVC instruction). Following the MVC instruction is the load address "LA" instruction, which increments or advances the target address in the R3 register by 102. The next entry ENTFFF points to the MOVFFF, which has an instruction to move the 103 bytes of data from the second 12 bit extension to the target address pointed to by R3, which has already been incremented by 102. The length of each preliminary extension data segment may vary between different modified extension dictionaries.
MOVラベルに関連付けられたアセンブリ言語命令の実行後、プログラムは次の命令のためにジャンプ・テーブルへ戻る。MVC命令の代わりに、第2の修正復元辞書へのポインタがジャンプ・テーブル内に格納される。第2の修正復元辞書は、MVC命令を収容し、MVC命令の終了後、プログラムは、次のポインタのためにジャンプ・テーブルへ戻る。全てのデータセグメントが既に処理されたか否かをステップ275で判定する。一例において、ジャンプ・テーブル内の最後のエントリは、主呼出し(復元)プログラムへ戻る戻り命令を収容する。否であれば、プロセスは、ステップ260へ戻る。そうでなければ、プロセスは、ステップ280において終了する。
After execution of the assembly language instruction associated with the MOV label, the program returns to the jump table for the next instruction. Instead of the MVC instruction, a pointer to the second modified recovery dictionary is stored in the jump table. The second modified recovery dictionary contains the MVC instruction, and after completion of the MVC instruction, the program returns to the jump table for the next pointer. In
命令の生成及び格納(例えば、ステップ235において命令コード化モジュール20により)並びにこれらの命令の取得及び実行(例えば、ステップ270において復元モジュール16により)の幾つかの変形例をここで説明する。第1の例において、MVC命令をジャンプ・テーブル内に格納する代わりに、MVC命令及び任意の所与の復元文字列の長さが、第2の修正復元辞書内の各復元データセグメントの隣に格納される(例えば、ステップ235において命令コード化モジュール20により)。次いで、各復元文字列を予備バイトでパディングして、固定長の復元データセグメントを得る。パディング・バイトは、拡張文字列の一部ではないが、指定された固定長を得るために用いられるものであり、何らかの特定の情報で埋める必要はない。従って、第2の修正復元辞書内の各エントリは、MVC命令、拡張データセグメント、及びパディング(例えば、256バイトの固定長を達成するための)を含むことができる。
Several variations of instruction generation and storage (e.g., by the
この第1の変形例は、固定長アドレス指定を用いることができるので、ジャンプ論理を簡略化することができるという利点を有する。例えば、復元中に、復元のために用いられる12ビット値を用いて、この12ビット値に、パディングされたエントリのサイズを掛けることにより、復元辞書へ直接に索引付けすることができる。ひとたびこの復元辞書内の位置へ分岐されると、データセグメント長が得られ、復元データセグメントが連結のために移動される(例えば、ステップ270において復元モジュール16により)。
This first variant has the advantage that the jump logic can be simplified since fixed-length addressing can be used. For example, during recovery, the recovery dictionary can be indexed directly by multiplying this 12-bit value by the size of the padded entry using the 12-bit value used for recovery. Once branched to a position in this reconstruction dictionary, the data segment length is obtained and the reconstructed data segment is moved for concatenation (e.g. by the
第2の変形例において、MVC命令は、ジャンプ・テーブルの代わりに命令アレイ内に格納される。ひとたび各復元データセグメントが構築されると、MVC命令は、命令アレイ内に挿入される(例えば、ステップ235において命令コード化モジュール20により)。この技術が使用される場合、MVC命令のみが命令アレイ内に格納され、主(呼出し)アプリケーションは、MVCアレイへと分岐する。命令アレイ内のMVCとデータセグメントとを、第2の復元辞書内の別々のストレージ・セクション又はパーティション内に格納することができる。命令アレイとデータセグメントとが別々に格納されるので(すなわち、命令アレイはデータセグメントと混ざらない)、メモリ内にロードするときに、MVC命令アレイをキャッシュメモリ(例えば、命令キャッシュ)内にロードすることができ、データセグメントを分離したメモリ(例えば、RAM、データキャッシュなど)にロードすることができる。従って、命令アレイ技術は、キャッシュ構造(例えば、命令キャッシュ、データキャッシュなど)を利用することができる。復元中に、命令アレイ内のMVC命令が繰返し実行され、データセグメントを連結のために移動させる(例えば、ステップ270において復元モジュール16により)。
In a second variant, the MVC instruction is stored in the instruction array instead of the jump table. Once each decompressed data segment is constructed, an MVC instruction is inserted into the instruction array (eg, by
第3の変形例において、継続論理がMVC命令と共に命令アレイ内に格納される(例えば、ステップ235において命令コード化モジュール20により)。復元中に、アレイ内のMVC命令が連結のために実行され、継続命令がチェックされる(例えば、ステップ270において復元モジュール16により)。さらなるMVC命令が残っていると継続論理が判断した場合、継続論理は、次のMVC命令を実行する。そうでない場合、復元は完了する。上記の例を通じて、復元を単一の呼出しで行うことができ、復元は自己実行され、それにより自己復元データセグメントが可能になる。換言すれば、このアルゴリズムは、全てのデータセグメントを、主呼出しアプリケーションに戻る前に結合する。
In a third variant, the continuation logic is stored in the instruction array with the MVC instruction (e.g. by the
要約すれば、本発明の実施形態において、一連のムーブ命令が、全ての予備拡張データセグメントが連結されるまで繰返し実行され、これにより、圧縮(例えば、Ziv−Lempel圧縮)に用いられた元のデータセットがもたらされる。上記の例において、単に最初の29バイトデータセグメントを得るために何回かの繰返しを行っていた。しかしながら、これらの繰返しは、本発明の実施形態によって、図3に関連して説明した復元(例えば、復元モジュール16によって行われるような)中に実行する必要はない。伝統的なLZ復元と本発明の実施形態とを比較評価すると、経過時間及びCPU処理オーバーヘッドにおいてそれぞれ43%及び81%の削減が示された。 In summary, in embodiments of the present invention, a series of move instructions are repeatedly executed until all pre-expanded data segments are concatenated, thereby causing the original used for compression (eg, Ziv-Lempel compression). A data set is provided. In the above example, several iterations were performed to simply obtain the first 29 byte data segment. However, these iterations do not need to be performed during the reconstruction (eg, as performed by the reconstruction module 16) described in connection with FIG. 3 according to an embodiment of the present invention. A comparative evaluation of traditional LZ restoration with embodiments of the present invention showed 43% and 81% reductions in elapsed time and CPU processing overhead, respectively.
上で説明し図面に示した実施形態は、復元中ステップ270においての処理効率を高めるために予備拡張された自己復元する文字列を利用するデータ復元に関する実施形態を実装する多くの方法のうちのごく少数を表したに過ぎないことが認識されるであろう。
The embodiment described above and illustrated in the drawings is one of many ways to implement an embodiment for data restoration that utilizes pre-expanded self-healing strings to enhance processing efficiency in
本発明の実施形態の環境は、任意の所望の様式で配置された、任意の数のコンピュータ又はその他の処理システム(例えば、クライアント又はエンドユーザ・システム14、サーバ・システム10など)及びデータベース又は他のリポジトリを含むことができ、本発明の実施形態は、任意の所望のタイプのコンピューティング環境(例えば、クラウド・コンピューティング、クライアント−サーバ、ネットワーク・コンピューティング、メインフレーム、独立型システムなど)に適用することができる。本発明の実施形態で使用されるコンピュータ又はその他の処理システムは、任意の数の任意のパーソナル型又はその他の型式のコンピュータ又は処理システム(例えば、デスクトップ、ラップトップ、PDA、移動体装置など)によって実装することができ、任意の市販のオペレーティングシステム並びに市販のソフトウェア及びカスタム・ソフトウェア(例えば、ブラウザ・ソフトウェア、通信ソフトウェア、サーバ・ソフトウェア、文字列復元モジュール16、命令コード化モジュール20など)の任意の組合せを含むことができる。これらのシステムは、情報の入力及び/又は閲覧のために任意の型式のモニタ及び入力装置(例えば、キーボード、マウス、音声認識など)を含むことができる。
The environment of embodiments of the present invention may be any number of computers or other processing systems (e.g., client or end-user systems 14, server systems 10, etc.) and databases or other arranged in any desired manner. Repository, and embodiments of the present invention can be used in any desired type of computing environment (eg, cloud computing, client-server, network computing, mainframe, stand-alone systems, etc.) It can apply. The computer or other processing system used in embodiments of the present invention may be by any number of any personal or other type of computer or processing system (eg, desktop, laptop, PDA, mobile device, etc.) Any commercially available operating system and any commercially available software and custom software (eg, browser software, communication software, server software,
本発明の実施形態のソフトウェア(例えば、文字列復元モジュール16、命令コード化モジュール20など)は、任意の所望のコンピュータ言語で実装することができ、本明細書に含まれる機能的説明及び図面に示されたフローチャートに基づいてコンピュータ分野の当業者が開発することができるであろうことを理解されたい。さらに、本明細書における種々の機能を実行するソフトウェアへのいかなる言及も、一般に、ソフトウェア制御下でこれらの機能を実行するコンピュータ・システム又はプロセッサに言及するものとする。本発明の実施形態のコンピュータ・システムは、任意の型式のハードウェア及び/又はその他の処理回路によって代替的に実装することができる。
The software (eg,
コンピュータ又はその他の処理システムの種々の機能は、任意の数のソフトウェア及び/又はハードウェア・モジュール又はユニット、処理又はコンピュータ・システム及び/又は回路間で、任意の方式で分散させることができ、ここでコンピュータ又は処理システムは、互いにローカルに又は遠隔に配置することができ、任意の適切な通信媒体(例えば、LAN、WAN、イントラネット、インターネット、配線、モデム接続、無線など)を介して通信することができる。例えば、本発明の実施形態の機能は、種々のエンドユーザ/クライアント及びサーバ・システム、及び/又は任意のその他の中間処理装置間で、任意の方式で分散させることができる。上で説明されフローチャートに示されたソフトウェア及び/又はアルゴリズムは、本明細書で説明される機能を達成する任意の方式で修正することができる。さらに、フローチャート又は説明内の機能は、所望の動作を達成する任意の順序で行うことができる。 The various functions of the computer or other processing system may be distributed in any manner among any number of software and / or hardware modules or units, processing or computer systems and / or circuits, and The computers or processing systems can be located locally or remotely from one another and communicate via any suitable communication medium (eg, LAN, WAN, intranet, Internet, wired, modem connected, wireless, etc.) Can. For example, the functionality of embodiments of the present invention may be distributed in any manner among various end user / client and server systems, and / or any other intermediate processing devices. The software and / or algorithms described above and illustrated in the flowcharts may be modified in any manner that achieves the functions described herein. Additionally, the functions in the flowcharts or descriptions may be performed in any order that achieves the desired operation.
本発明の実施形態のソフトウェア(例えば、文字列復元モジュール16、命令コード化モジュール20など)は、独立型システム又はネットワーク若しくはその他の通信媒体によって接続されるシステムと共に使用するための固定型又は携帯型プログラム製品機器又は装置の非一時的なコンピュータ可読媒体又は使用可能媒体(例えば、磁気又は光学媒体、光磁気媒体、フロッピーディスケット、CD−ROM、DVD、メモリ装置など)上で利用可能なものとすることができる。
The software (eg,
通信ネットワークは、任意の数の任意の型式の通信ネットワーク(例えば、LAN、WAN、インターネット、イントラネット、VPNなど)によって実装することができる。本発明の実施形態のコンピュータ又はその他の処理システムは、任意の従来の又はその他のプロトコルを介してネットワーク上で通信する任意の従来の又はその他の通信装置を含むことができる。コンピュータ又はその他の処理システムは、ネットワークへのアクセスのための任意の型式の接続(例えば、有線、無線など)を利用することができる。ローカル通信媒体は、任意の適切な通信媒体(例えば、ローカル・エリア・ネットワーク(LAN)、配線、無線リンク、イントラネットなど)によって実装することができる。 A communications network may be implemented by any number of any type of communications network (eg, LAN, WAN, Internet, intranet, VPN, etc.). The computer or other processing system of embodiments of the present invention may include any conventional or other communication device that communicates over the network via any conventional or other protocol. The computer or other processing system may utilize any type of connection (eg, wired, wireless, etc.) for access to the network. The local communication medium may be implemented by any suitable communication medium (eg, local area network (LAN), wired, wireless link, intranet, etc.).
システムは、情報(例えば、拡張辞書、圧縮データなど)を格納するために、任意の数の任意の従来の又はその他のデータベース、データストア又はストレージ構造(例えば、ファイル、データベース、データ構造、データ又その他のリポジトリなど)を使用することができる。データベース・システムは、情報(例えば、拡張辞書、圧縮データなど)を格納するために、任意の数の任意の従来の又はその他のデータベース、データストア又はストレージ構造(例えば、ファイル、データベース、データ構造、データ又その他のリポジトリなど)によって実装することができる。データベース・システムは、サーバ及び/又はクライアント・システム内に含まれるか又はこれに結合されるものとすることができる。データベース・システム及び/又はストレージ構造は、コンピュータ又はその他の処理システムの遠隔又はローカルにあるものとすることができ、任意の所望のデータ(例えば、拡張辞書、圧縮データなど)を格納することができる。 The system may include any number of any conventional or other databases, data stores or storage structures (eg, files, databases, data structures, data, etc.) for storing information (eg, expanded dictionaries, compressed data, etc.). Other repositories can be used. A database system may store any information (eg, extended dictionaries, compressed data, etc.) in any number of any conventional or other databases, data stores or storage structures (eg, files, databases, data structures, etc.). It can be implemented by data or other repositories. A database system may be included in or coupled to a server and / or client system. The database system and / or storage structure may be remote or local to a computer or other processing system, and may store any desired data (eg, expanded dictionaries, compressed data, etc.) .
本発明の実施形態は、情報(例えば、予備拡張命令、データ検索、レポートなど)を取得する又は提供するために、任意の数の任意の型式のユーザ・インタフェース(例えば、グラフィカル・ユーザ・インタフェース(GUI)、コマンドライン、プロンプトなど)を使用することができ、ここでインタフェースは、任意の様式で配置された任意の情報を含むことができる。インタフェースは、任意の適切な入力装置(例えば、マウス、キーボードなど)を介して情報を入力/表示し、及び所望の動作を開始するために、任意の位置に配置された任意の数の任意の型式の入力又は作動機構(例えば、ボタン、アイコン、フィールド、ボックス、リンクなど)を含むことができる。インタフェース・スクリーンは、スクリーン間で任意の様式でナビゲートするために、任意の適切なアクチュエータ(例えば、リンク、タブなど)を含むことができる。 Embodiments of the present invention may be any number of any type of user interface (eg, a graphical user interface (eg, a graphical user interface (eg, a graphical user interface) to obtain or provide information (eg, pre-expansion instructions, data retrieval, reports, etc.)). GUI), command line, prompt etc.) can be used, where the interface can include any information arranged in any manner. The interface inputs / displays information via any suitable input device (eg, a mouse, a keyboard, etc.), and any number of any locations located at any position to initiate the desired action It may include type input or actuation mechanisms (e.g., buttons, icons, fields, boxes, links, etc.). The interface screen can include any suitable actuator (eg, links, tabs, etc.) to navigate between the screens in any manner.
レポートは、任意の様式で配置された任意の情報を含むことができ、所望の情報(例えば、圧縮効率、予備拡張効率、完全復元中のCPU使用量など)をユーザに提供するために規則又はその他の基準に基づいて構成可能なものとすることができる。 The report can include any information arranged in any manner, and the rules or rules to provide the user with the desired information (eg, compression efficiency, pre-expansion efficiency, CPU usage during full recovery, etc.) It may be configurable based on other criteria.
本発明の実施形態は、上述の特定のタスク又はアルゴリズムに限定されないが、圧縮データの予備拡張のために利用することができる。データは、Ziv−Lempelに基づく技術を含むがこれに限定されない、任意の損失なし圧縮技術によって圧縮することができる。 Embodiments of the invention are not limited to the specific tasks or algorithms described above, but can be used for pre-expansion of compressed data. The data may be compressed by any lossless compression technique, including but not limited to Ziv-Lempel based techniques.
任意の数及び型式の復元(又は拡張)辞書を使用し格納することができる。拡張辞書は、復元中の処理効率を向上させるために、基礎をなすデータを完全に又は部分的に復元した任意の型式の予備拡張を含むことができる。 Any number and type of reconstruction (or expansion) dictionaries can be used and stored. The expanded dictionary can include any type of pre-expansion that fully or partially restore the underlying data to improve processing efficiency during restoration.
予備拡張辞書内に格納される命令は、拡張中のデータの連結を可能にする任意の形態のものとすることができる(例えば、ムーブ、コピー、MVC命令など)。連結命令を予備拡張文字列長と共に用いて、正しい文字列長を得ることができる。予備拡張文字列は、任意の所望の長さを得るためにパディングを含むことができる。連結命令、文字列長などは、復元辞書内に格納することもでき、又は分離したジャンプ・テーブル若しくは命令テーブルとして格納することもできる。連結命令は、継続論理、又は命令の継続実行を可能にする若しくは任意の所望のコード分岐又はジャンプを可能にするその他の命令を含むことができ、また、所望の処理特性(例えば、辞書拡張時間、CPU利用率など)を得るための単一の関数呼出し又は複数の呼出しを伴うデータ拡張を考慮に入れたものとすることができる。 The instructions stored in the preliminary expansion dictionary can be of any form that allows concatenation of data being expanded (eg, move, copy, MVC instructions, etc.). Concatenation instructions can be used with the preliminary extension string length to obtain the correct string length. The pre-extension string can include padding to obtain any desired length. Concatenation instructions, character string lengths, etc. may be stored in the recovery dictionary or as separate jump tables or instruction tables. Concatenation instructions may include continuation logic, or other instructions that allow for continued execution of the instruction or any desired code branch or jump, and may also include desired processing characteristics (eg, dictionary extension time). , Data expansion with a single function call or multiple calls to obtain CPU utilization, etc.) can be taken into account.
圧縮データエントリは、任意の所望の長さ(例えば、8ビット、12ビットなど)のものとすることができ、圧縮され及び予備拡張されたデータを拡張するために任意の形態のアドレス指定を含むことができる。拡張トークンは、任意の所望の長さ(例えば、8バイト、16バイトなど)のものとすることができ、任意の所望のメタデータ(例えば、継続命令、停止命令、拡張アドレスなど)を含むことができる。拡張データセットは、復元プロセスを補助する任意の所望の命令(例えば、ムーブ、コピー、継続命令など)を含むことができる。任意の形態のキャッシュ構造を使用し又は活用して、予備拡張、拡張、命令ストレージを容易にすることができる(例えば、ジャンプ・テーブル、命令キャッシュ、一時的ストレージ、命令オペランドなど)。 Compressed data entries can be of any desired length (eg, 8 bits, 12 bits, etc.), including any form of addressing to extend compressed and pre-expanded data be able to. The extension token can be of any desired length (eg, 8 bytes, 16 bytes, etc.) and contain any desired metadata (eg, continue instructions, stop instructions, extended addresses, etc.) Can. The extended data set can include any desired instructions (eg, move, copy, continue instructions, etc.) that aid in the restoration process. Any form of cache structure can be used or exploited to facilitate pre-expansion, expansion, instruction storage (eg, jump tables, instruction cache, temporary storage, instruction operands, etc.).
本明細書で用いられる用語は、特定の実施形態を説明するためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈が明らかにそうでないことを示さない限り、複数形も同様に含むことを意図したものである。「含む(comprise)」、「含んでいる(comprising)」、「含む(includes)」、「含んでいる(including)」、「有する(has、have)」、「有している(having)」、「伴う(with)」及び同様の用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を指定するが、1つ又は複数のその他の特徴、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらの群の存在又は付加を排除するものではないことがさらに理解されるであろう。 The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms "one (a)", "an" and "the" mean plural as well, unless the context clearly indicates otherwise. Intended to be included. "Comprise", "comprise", "includes", "includes", "including", "has", "haves" , "With" and like terms, as used herein, designate the presence of the described feature, integer, step, action, element, and / or component, but one or more It will be further understood that the existence or addition of other features, integers, steps, operations, elements, components, and / or groups thereof is not excluded.
以下の特許請求の範囲における全ての「手段又はステップと機能との組み合わせ(ミーンズ又はステップ・プラス・ファンクション)」要素の対応する構造、材料、動作、及び均等物は、その機能を、明確に特許請求された他の請求要素との組み合わせで実行するためのあらゆる構造、材料、又は動作を含むことが意図されている。本発明の説明は、例証及び説明を目的として提示されたものであり、網羅的であること又は本発明を開示された形態に限定することを意図したものではない。本発明の範囲及び趣旨から逸脱しない多くの修正及び変形が当業者には明らかとなるであろう。実施形態は、本発明の原理及び実際の用途を最も良く説明するために、そして、当業者が、企図した特定の用途に適した種々の修正を伴う種々の実施形態に関して本発明を理解できるように、選択及び説明したものである。 The corresponding structure, material, operation and equivalents of all "means or step and function combinations (means or step plus function)" elements in the following claims are expressly patented their function. It is intended to include any structure, material, or acts for performing in combination with the other claimed elements. The description of the present invention is presented for purposes of illustration and description, and is not intended to be exhaustive or to limit the invention to the disclosed form. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the present invention. The embodiments are provided to best explain the principles and practical applications of the present invention, and to enable the person skilled in the art to understand the present invention in terms of various embodiments with various modifications suitable for the particular application intended. , As selected and described.
本発明の種々の実施形態の説明を例証のために提示したが、これらは網羅的であること又は開示された実施形態に限定することを意図したものではない。当業者には、説明した実施形態の範囲及び趣旨から逸脱しない多くの修正及び変形が明白となるであろう。本明細書で用いた用語は、実施形態の原理、実際的用途、又は市場で見いだされる技術に対する技術的改良点を最も良く説明するように、又は、当業者が本明細書で開示した実施形態を理解することができるように、選択されたものである。 While the description of various embodiments of the invention has been presented for the purposes of illustration, these are not intended to be exhaustive or to limit the disclosed embodiments. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terms used herein are to best explain the principles of the embodiments, practical applications, or technical improvements to techniques found in the market, or embodiments disclosed herein by those skilled in the art. It is chosen so that you can understand.
当業者であれば理解するように、本発明の態様は、システム、方法又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形を取ることができ、本明細書においてはこれらの全てを一般に「回路」、「モジュール」又は「システム」と呼ぶことができる。さらに、本発明の態様は、コンピュータ可読プログラム・コードが組み入れられた1つ又は複数のコンピュータ可読媒体内として具体化されたコンピュータ・プログラム製品の形を取ることができる。 As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Thus, aspects of the present invention may be entirely hardware embodiments, entirely software embodiments (including firmware, resident software, microcode, etc.), or embodiments combining software and hardware aspects. And all of these may be generally referred to herein as "circuits", "modules" or "systems". Further, aspects of the invention may take the form of a computer program product embodied in one or more computer readable media in which the computer readable program code is embodied.
1つ又は複数のコンピュータ可読媒体の任意の組合せを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、電子、磁気、光学、電磁気、赤外線若しくは半導体のシステム、装置、若しくはデバイス、又は上記のもののいずれかの適切な組合せとすることができる。コンピュータ可読ストレージ媒体のより具体的な例(非網羅的なリスト)として、以下のもの:即ち、1つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組合せが挙げられる。本明細書の文脈においては、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって、又はこれらと関連して用いるためのプログラムを収容又は格納することができる任意の有形媒体とすることができる。 Any combination of one or more computer readable media may be used. Computer readable media can be computer readable signal media or computer readable storage media. A computer readable storage medium may be, for example, an electronic, magnetic, optical, electromagnetic, infrared or semiconductor system, apparatus or device, or any suitable combination of the above. As a more specific example (non-exhaustive list) of computer readable storage media, the following: electrical connection with one or more wires, portable computer diskette, hard disk, random access Memory (RAM), read only memory (ROM), erasable programmable read only memory (EPROM or flash memory), optical fiber, portable compact disc read only memory (CD-ROM), optical storage device, Magnetic storage devices or any suitable combination of the above may be mentioned. In the context of the present description, a computer readable storage medium may be any tangible medium capable of containing or storing a program for use by or in connection with an instruction execution system, apparatus or device .
コンピュータ可読信号媒体は、例えばベースバンド内に又は搬送波の一部として、具体化されたコンピュータ可読プログラム・コードをその中に有する、伝搬されるデータ信号を含むことができる。このような伝搬信号は、これらに限定されるものではないが、電磁気、光又はそれらのいずれかの適切な組合せを含む、種々の形態のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、かつ、命令実行システム、装置若しくはデバイスによって、又はこれらと関連して用いるためのプログラムを伝達し、伝搬し、又は搬送することができる任意のコンピュータ可読媒体とすることができる。 A computer readable signal medium may include a propagated data signal having computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such propagated signals may take any of a variety of forms including, but not limited to, electromagnetic, optical or any suitable combination thereof. A computer readable signal medium is not a computer readable storage medium, and any computer capable of transmitting, propagating or otherwise carrying programs for use by or in connection with an instruction execution system, apparatus or device. It can be a readable medium.
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、RF等、又は上記のもののいずれかの適切な組合せを含む、任意の適切な媒体を用いて伝送することができる。 The program code embodied on the computer readable medium is any, including but not limited to, wireless, wired, fiber optic cable, RF etc, or any suitable combination of the above. Can be transmitted using any suitable medium.
本発明の態様の操作を実行するためのコンピュータ・プログラム・コードは、Java、SmallTalk、C++等のようなオブジェクト指向型プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語のいずれかの組合せで記述することができる。プログラム・コードは、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。一番最後のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続が為される場合もある(例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて)。 Computer program code for performing the operations of aspects of the invention may be used in conventional procedures such as object oriented programming languages such as Java, SmallTalk, C ++, etc., and "C" programming languages or similar programming languages. It can be written in any combination of one or more programming languages, including type programming languages. The program code may run entirely on the user's computer, some may execute on the user's computer as a standalone software package, and some may execute on the user's computer Some may be run on the remote computer or may be run entirely on the remote computer or server. In the last scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or to an external computer Connection may be made (eg, through the Internet using an Internet service provider).
本発明の態様は、以下、本発明の実施形態による方法、システム及び/又はコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組合せは、コンピュータ・プログラム命令によって実装することができることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するための手段を作り出すようにすることができる。 Aspects of the invention are described below with reference to flowchart illustrations and / or block diagrams of methods, systems and / or computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing device to produce a machine and thereby executed by the processor of the computer or other programmable data processing device The instructions may be arranged to create means for implementing the specified function / operation in one or more blocks of the flowchart and / or block diagram.
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する命令を含む製品を製造するようにすることもできる。 These computer program instructions are stored in a computer readable medium capable of instructing a computer, other programmable data processing device, or other device to function in a specific manner, whereby the computer readable The instructions stored in the medium may be adapted to produce a product including instructions implementing the specified function / action in one or more blocks of the flowchart and / or block diagram.
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。 Loading computer program instructions onto a computer, other programmable data processing device, or other device to cause a series of operational steps to be performed on the computer, other programmable data processing device, or other device Computer-generated processes for causing instructions executed on a computer or other programmable device to perform the functions / actions specified in one or more blocks of the flowcharts and / or block diagrams. It is also possible to provide the process of
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図中に記された順序とは異なる順序で生じることがあることにも留意されたい。例えば、連続して示された2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図中のブロックの組合せは、指定された機能又は動作を実行する専用ハードウェア・ベースのシステム、又は専用のハードウェアとコンピュータ命令との組合せによって実装することができることにも留意されたい。 The flowcharts and block diagrams in the drawings illustrate the architecture, functionality and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagram can represent a module, segment, or portion of code that includes one or more executable instructions for implementing the specified logical function. It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may in fact be executed substantially simultaneously, depending on the functions involved, or they may sometimes be executed in the reverse order. Each block in the block diagrams and / or flowchart illustrations and combinations of blocks in the block diagram and / or flowchart illustrations are dedicated hardware based systems or specialized hardware and computers that perform specified functions or operations. It should also be noted that it can be implemented in combination with instructions.
10:サーバ・システム
14:クライアント・システム
10: Server system 14: Client system
Claims (10)
第1の復元辞書を解析するステップであって、前記第1の復元辞書は、アドレス指定スキームに基づいて前記第1の復元辞書内に非連続方式で分散された未圧縮データ部分を各々が有する複数の連鎖を含み、ここで各連鎖の前記未圧縮データ部分は、圧縮データの対応する未圧縮バージョンを形成する、第1の復元辞書を解析するステップと、
前記第1の復元辞書内の前記連鎖の各々の前記未圧縮データ部分を組み合わせて圧縮データの未圧縮バージョンを形成するステップにより第2の復元辞書を生成し、圧縮データを復元するための命令を前記第2の復元辞書内に挿入するステップと、
圧縮データを前記第2の復元辞書に適用することにより、前記圧縮データを復元するステップと、
を含む、コンピュータによって実行される方法。 A computer implemented method for decompressing compressed data, comprising:
Analyzing a first reconstruction dictionary, each of the first reconstruction dictionaries having uncompressed data portions distributed in a non-sequential manner in the first reconstruction dictionary based on an addressing scheme Analyzing a first reconstruction dictionary comprising a plurality of chains, wherein the uncompressed data portion of each chain forms a corresponding uncompressed version of compressed data;
Generating a second decompression dictionary by combining the uncompressed data portions of each of the chains in the first decompression dictionary to form an uncompressed version of the compressed data, and instructions for decompressing the compressed data Inserting into the second reconstruction dictionary;
Decompressing the compressed data by applying the compressed data to the second decompression dictionary;
Computer-implemented methods, including:
復元する命令を含む、請求項1に記載のコンピュータによって実行される方法。 The computer-implemented method of claim 1, wherein the instructions in the second decompression dictionary include instructions to decompress a single token of the compressed data in a single move.
前記第1の復元辞書内の前記連鎖の各々の前記未圧縮データ部分を組み合わせて圧縮データの未圧縮バージョンを形成することにより前記第2の復元辞書を生成し、圧縮データを復元するための命令を前記第2の復元辞書内に命令を挿入し、 An instruction to generate the second decompression dictionary by combining the uncompressed data portions of each of the chains in the first decompression dictionary to form an uncompressed version of compressed data, and to decompress compressed data Insert instructions into the second reconstruction dictionary,
圧縮データを前記第2の復元辞書に適用することにより、前記圧縮データを復元する、 Restoring the compressed data by applying the compressed data to the second decompression dictionary;
ように構成された少なくとも1つのプロセッサを含むコンピュータ・システムを含む、Including a computer system including at least one processor configured as
システム。system.
A computer readable storage medium having the computer program according to claim 9 recorded on a computer readable storage medium.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/011,227 | 2013-08-27 | ||
US14/011,227 US8902087B1 (en) | 2013-08-27 | 2013-08-27 | Data decompression utilizing pre-expanded dictionaries during decompression |
PCT/JP2014/003948 WO2015029329A1 (en) | 2013-08-27 | 2014-07-25 | Data decompression utilizing pre-expanded dictionaries during decompression |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016533046A JP2016533046A (en) | 2016-10-20 |
JP6425709B2 true JP6425709B2 (en) | 2018-11-21 |
Family
ID=51987759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016509219A Active JP6425709B2 (en) | 2013-08-27 | 2014-07-25 | Data recovery using preliminary extended dictionary during recovery |
Country Status (3)
Country | Link |
---|---|
US (1) | US8902087B1 (en) |
JP (1) | JP6425709B2 (en) |
WO (1) | WO2015029329A1 (en) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10613862B2 (en) | 2017-03-03 | 2020-04-07 | International Business Machines Corporation | String sequence operations with arbitrary terminators |
US10564967B2 (en) | 2017-03-03 | 2020-02-18 | International Business Machines Corporation | Move string processing via inline decode-based micro-operations expansion |
US10255068B2 (en) | 2017-03-03 | 2019-04-09 | International Business Machines Corporation | Dynamically selecting a memory boundary to be used in performing operations |
US10789069B2 (en) | 2017-03-03 | 2020-09-29 | International Business Machines Corporation | Dynamically selecting version of instruction to be executed |
US10564965B2 (en) | 2017-03-03 | 2020-02-18 | International Business Machines Corporation | Compare string processing via inline decode-based micro-operations expansion |
US10620956B2 (en) | 2017-03-03 | 2020-04-14 | International Business Machines Corporation | Search string processing via inline decode-based micro-operations expansion |
US10324716B2 (en) | 2017-03-03 | 2019-06-18 | International Business Machines Corporation | Selecting processing based on expected value of selected character |
US11177824B2 (en) | 2018-07-23 | 2021-11-16 | International Business Machines Corporation | Dictionary embedded expansion procedure |
JP7074989B2 (en) * | 2018-08-31 | 2022-05-25 | 国立大学法人 筑波大学 | Data compressor, data compression method, data compression program, data decompression device, data decompression method, data decompression program and data compression decompression system |
US10541708B1 (en) * | 2018-09-24 | 2020-01-21 | Redpine Signals, Inc. | Decompression engine for executable microcontroller code |
CN114025024B (en) * | 2021-10-18 | 2023-07-07 | ***股份有限公司 | Data transmission method and device |
CN116805537B (en) * | 2023-08-22 | 2023-11-07 | 江汉大学附属医院(武汉市第六医院) | Data processing method for heart-lung rehabilitation management system |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4876541A (en) * | 1987-10-15 | 1989-10-24 | Data Compression Corporation | Stem for dynamically compressing and decompressing electronic data |
US5339076A (en) | 1992-04-27 | 1994-08-16 | Integrated Information Technology | Data compression using content addressable memory |
US5469161A (en) | 1992-08-13 | 1995-11-21 | International Business Machines Corporation | Algorithm for the implementation of Ziv-Lempel data compression using content addressable memory |
JP3132293B2 (en) * | 1993-06-22 | 2001-02-05 | セイコーエプソン株式会社 | Data compression method, data decompression method, and information processing device |
JP3397431B2 (en) | 1994-03-16 | 2003-04-14 | 富士通株式会社 | Data compression method and device and data decompression method and device |
US5646617A (en) | 1994-06-16 | 1997-07-08 | Seiko Epson Corporation | Data compressing method, data restoring method, and information processing apparatus |
US5608396A (en) | 1995-02-28 | 1997-03-04 | International Business Machines Corporation | Efficient Ziv-Lempel LZI data compression system using variable code fields |
US5951623A (en) | 1996-08-06 | 1999-09-14 | Reynar; Jeffrey C. | Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases |
JP3540109B2 (en) | 1996-12-24 | 2004-07-07 | 富士通株式会社 | Data compression method and apparatus |
JP3913004B2 (en) | 2001-05-28 | 2007-05-09 | キヤノン株式会社 | Data compression method and apparatus, computer program, and storage medium |
ITTV20090017A1 (en) | 2009-02-17 | 2010-08-18 | B & B Holding S R L | METHOD AND SYSTEM FOR THE EXCHANGE OF DIGITAL DOCUMENTS. |
-
2013
- 2013-08-27 US US14/011,227 patent/US8902087B1/en active Active
-
2014
- 2014-07-25 JP JP2016509219A patent/JP6425709B2/en active Active
- 2014-07-25 WO PCT/JP2014/003948 patent/WO2015029329A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US8902087B1 (en) | 2014-12-02 |
WO2015029329A1 (en) | 2015-03-05 |
JP2016533046A (en) | 2016-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6425709B2 (en) | Data recovery using preliminary extended dictionary during recovery | |
US8988257B2 (en) | Data compression utilizing variable and limited length codes | |
Gupta et al. | Modern lossless compression techniques: Review, comparison and analysis | |
CN107545066B (en) | Techniques for maintaining column vectors of relational data within volatile memory | |
JP6381546B2 (en) | Method for pipelined compression of multi-byte frames, apparatus for high bandwidth compression into an encoded data stream, and computer program product | |
JP3009727B2 (en) | Improved data compression device | |
US10187081B1 (en) | Dictionary preload for data compression | |
JP7425526B2 (en) | Reducing latch counts to save hardware space for dynamic Huffman table generation | |
EP3195481B1 (en) | Adaptive rate compression hash processing device | |
US20200294629A1 (en) | Gene sequencing data compression method and decompression method, system and computer-readable medium | |
US20180041224A1 (en) | Data value suffix bit level compression | |
Nandi et al. | A compression technique based on optimality of LZW code (OLZW) | |
Funasaka et al. | Adaptive loss‐less data compression method optimized for GPU decompression | |
US20130232305A1 (en) | Command encoded data compression | |
US9137336B1 (en) | Data compression techniques | |
CN104811209A (en) | Compressed file data embedding method and device capable of resisting longest matching detection | |
Lenhardt et al. | Gipfeli-high speed compression algorithm | |
JP6990881B2 (en) | System level test of entropy encoding | |
US20150248432A1 (en) | Method and system | |
US9479195B2 (en) | Non-transitory computer-readable recording medium, compression method, decompression method, compression device, and decompression device | |
JP4758494B2 (en) | Circuit and method for converting bit length to code | |
JP2016052046A (en) | Compression device, decompression device and storage device | |
US20090212981A1 (en) | Bidirectional context model for adaptive compression | |
Bharathi et al. | A plain-text incremental compression (pic) technique with fast lookup ability | |
CN113592701B (en) | Method and system for registering gradient compression algorithm development into deep learning framework |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170609 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180605 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180711 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20181002 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20181023 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6425709 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |