JP2022544763A - 複数のデータのストリームを含む圧縮済み入力データを展開する展開エンジン - Google Patents
複数のデータのストリームを含む圧縮済み入力データを展開する展開エンジン Download PDFInfo
- Publication number
- JP2022544763A JP2022544763A JP2022508747A JP2022508747A JP2022544763A JP 2022544763 A JP2022544763 A JP 2022544763A JP 2022508747 A JP2022508747 A JP 2022508747A JP 2022508747 A JP2022508747 A JP 2022508747A JP 2022544763 A JP2022544763 A JP 2022544763A
- Authority
- JP
- Japan
- Prior art keywords
- data
- decoders
- stream
- command
- streams
- 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.)
- Pending
Links
- 230000006837 decompression Effects 0.000 title claims abstract description 41
- 238000007906 compression Methods 0.000 claims abstract description 66
- 230000006835 compression Effects 0.000 claims abstract description 65
- 239000000872 buffer Substances 0.000 claims description 48
- 238000000034 method Methods 0.000 claims description 25
- 238000012545 processing Methods 0.000 claims description 14
- 230000003139 buffering effect Effects 0.000 claims description 3
- 238000004220 aggregation Methods 0.000 claims 1
- 230000002776 aggregation Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 10
- 238000003860 storage Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000008929 regeneration Effects 0.000 description 5
- 238000011069 regeneration method Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011049 filling Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
-
- 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
- H03M7/4031—Fixed length to variable length coding
- H03M7/4037—Prefix coding
-
- 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
- H03M7/4031—Fixed length to variable length coding
- H03M7/4037—Prefix coding
- H03M7/4043—Adaptive prefix coding
-
- 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
-
- 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/6017—Methods or arrangements to increase the throughput
-
- 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/6017—Methods or arrangements to increase the throughput
- H03M7/6023—Parallelization
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Memory System (AREA)
Abstract
N個のデコーダ及びデコンプレッサを含む展開エンジンを含む電子デバイスは、N個のデータのストリームを含む圧縮済み入力データを展開する。圧縮済み入力データを展開するコマンドを受信すると、展開エンジンによって、N個のデコーダの各々が、個別に且つN個のデコーダのうち他のデコーダと実質的に並列に、圧縮済み入力データからN個のストリームの各々を復号する。各デコーダは、圧縮済み入力データを展開するために圧縮標準規格と関連付けられたコマンドを生成するための各々のタイプの復号済みデータのストリームを出力する。次に、デコンプレッサは、N個のデコーダによって出力された復号済みデータのストリームから、元のデータを再生成するために圧縮標準規格を使用してデータを展開するコマンドを生成する。次に、デコンプレッサは、元のデータを再生成するコマンドを実行し、元のデータをメモリに記憶し、又は、別のエンティティに元のデータを提供する。【選択図】図3
Description
(関連技術)
いくつかの電子デバイスは、ユーザファイル又はシステムファイル、データのフロー又はシーケンス等のデータを圧縮するオペレーションを実行する。例えば、電子デバイスは、メモリへのデータのより効率的な記憶、ネットワークを介した電子デバイス間でのデータのより効率的な伝送等を可能にするように、データのサイズを削減するためにデータを圧縮する場合がある。それらの電子デバイスの多くは、元のデータから圧縮済みデータを生成するために、Lempel-Ziv 77(LZ77)に基づく圧縮標準規格若しくはLZ78に基づく圧縮標準規格等の圧縮標準規格及び/又はHuffmanコーディング等の符号化標準規格を使用する。
いくつかの電子デバイスは、ユーザファイル又はシステムファイル、データのフロー又はシーケンス等のデータを圧縮するオペレーションを実行する。例えば、電子デバイスは、メモリへのデータのより効率的な記憶、ネットワークを介した電子デバイス間でのデータのより効率的な伝送等を可能にするように、データのサイズを削減するためにデータを圧縮する場合がある。それらの電子デバイスの多くは、元のデータから圧縮済みデータを生成するために、Lempel-Ziv 77(LZ77)に基づく圧縮標準規格若しくはLZ78に基づく圧縮標準規格等の圧縮標準規格及び/又はHuffmanコーディング等の符号化標準規格を使用する。
データを圧縮することは、データを記憶及び処理することに関するエフォート及びエネルギーを削減することができるが、圧縮済みデータは、多くのオペレーションに対して使用される前に展開される必要がある。これは、そのようなオペレーションを実行することができる前に、電子デバイスが圧縮標準規格及及び/又は符号化標準規格のオペレーションの効果を逆にし、よって、元のデータを復元するオペレーションを実行する必要があることを意味する。多くの電子デバイスでは、ソフトウェアにおいて(すなわち、ソフトウェアルーチン又はアプリケーションプログラムを使用して)データが展開され、それは典型的には、汎用プロセッサが圧縮済みデータを展開するための大多数の計算オペレーション及び対応するメモリアクセスを実行することを必要とする。大多数の計算オペレーション及びメモリアクセスに起因して、ソフトウェアにおいてデータを展開することは非効率である。
図面及び説明の全体を通じて、同一の符号は同一の図要素を指す。
以下の説明は、当業者が、説明する実施形態を生成及び使用することを可能にするために示され、特定の用途及びその要件に照らして提供される。記載された実施形態に対する様々な変更は、当業者には容易に明らかであり、本明細書で定義される一般的原理は、他の実施形態及び用途に適用されてもよい。したがって、記載された実施形態は、示される実施形態に限定されず、本明細書で開示される原理及び特徴と一致する最も広い範囲が与えられるべきである。
(用語)
以下の説明では、様々な用語が実施形態を説明するために使用される。以下は、それらの用語の1つの簡略化されたものであり、それらの用語の1つの全体的な説明である。明確化及び簡潔化のために、この用語は、本明細書で記載されない重要な追加の態様を有してもよく、したがって、説明が用語を限定することを意図していないことに留意されたい。
以下の説明では、様々な用語が実施形態を説明するために使用される。以下は、それらの用語の1つの簡略化されたものであり、それらの用語の1つの全体的な説明である。明確化及び簡潔化のために、この用語は、本明細書で記載されない重要な追加の態様を有してもよく、したがって、説明が用語を限定することを意図していないことに留意されたい。
機能ブロック:機能ブロックは、集積回路素子、ディスクリート回路素子等の1つ以上の相互に関連する回路素子のグループ、集合、及び/又は、組を指す。回路素子は、回路素子が少なくとも1つの属性を共有するという点で「相互に関連」している。例えば、相互に関連する回路素子は、特定の集積回路チップ又はその部分に含まれてもよく、その上で組み立てられてもよく、又は、そうでなければ結合されてもよく、所定の機能(計算機能又は処理機能、メモリ機能等)の実行に関与してもよく、共通の制御素子及び/又は共通クロック等によって制御されてもよい。機能ブロックは、単一の回路素子(例えば、単一の集積回路論理ゲート)から数百万又は数十億の回路素子(例えば、集積回路メモリ)までの任意の数の回路素子を含むことができる。
(圧縮済みデータ)
説明する実施形態では、圧縮済みデータに対し及び圧縮済みデータを使用してオペレーションが実行される。概して、圧縮済みデータは、1つ以上の圧縮オペレーション、符号化オペレーション、及び/又は、元のデータに対する他のオペレーションの出力であり、元のデータに対する他のオペレーションは、元のデータを再生成するために使用することができるデータによって元のデータの少なくとも一部が置き換えられること(可逆圧縮のための)、元のデータに近似したデータによって元のデータの少なくとも一部が置き換えられること(不可逆圧縮のための)、及び/又は、他の値によって元のデータの少なくとも一部が置き換えられることを結果としてもたらす。説明する実施形態では、ユーザファイル又はシステムファイル(例えば、音声ファイル及び/又はビデオファイル、テキストファイル、ドキュメント、実行可能ファイル、オペレーティングシステムファイル、スプレッドシート等)、データのフロー又はシーケンス(例えば、音声データフロー及び/又はビデオデータフロー、ネットワークインタフェースを介して受信されたデータのシーケンス等)、センサ(カメラ及び/又はマイクロフォン、サーモメータ、振動センサ等)からキャプチャされたデータ等を含む様々なタイプのデータが圧縮されてもよい。説明する実施形態では、プレフィックスコーディング標準規格、辞書コーディング圧縮標準規格、デルタ符号化、自己回帰モデル圧縮等を含む、データを圧縮するための多数の圧縮、符号化、及び/若しくは、他のオペレーショナル標準規格、アルゴリズム若しくはフォーマット、又は、これらの組み合わせを使用することができる。
説明する実施形態では、圧縮済みデータに対し及び圧縮済みデータを使用してオペレーションが実行される。概して、圧縮済みデータは、1つ以上の圧縮オペレーション、符号化オペレーション、及び/又は、元のデータに対する他のオペレーションの出力であり、元のデータに対する他のオペレーションは、元のデータを再生成するために使用することができるデータによって元のデータの少なくとも一部が置き換えられること(可逆圧縮のための)、元のデータに近似したデータによって元のデータの少なくとも一部が置き換えられること(不可逆圧縮のための)、及び/又は、他の値によって元のデータの少なくとも一部が置き換えられることを結果としてもたらす。説明する実施形態では、ユーザファイル又はシステムファイル(例えば、音声ファイル及び/又はビデオファイル、テキストファイル、ドキュメント、実行可能ファイル、オペレーティングシステムファイル、スプレッドシート等)、データのフロー又はシーケンス(例えば、音声データフロー及び/又はビデオデータフロー、ネットワークインタフェースを介して受信されたデータのシーケンス等)、センサ(カメラ及び/又はマイクロフォン、サーモメータ、振動センサ等)からキャプチャされたデータ等を含む様々なタイプのデータが圧縮されてもよい。説明する実施形態では、プレフィックスコーディング標準規格、辞書コーディング圧縮標準規格、デルタ符号化、自己回帰モデル圧縮等を含む、データを圧縮するための多数の圧縮、符号化、及び/若しくは、他のオペレーショナル標準規格、アルゴリズム若しくはフォーマット、又は、これらの組み合わせを使用することができる。
「圧縮済みデータ」及び「圧縮」という用語は、本明細書で使用されるように、元のデータを完全に又は近似して再生成するために使用することができる他のデータによって元のデータの少なくとも一部が置き換えられることを結果としてもたらす、元のデータに対するオペレーションに広く適用される。上述したように、それらのオペレーションは、様々な圧縮、符号化、及び/若しくは、他のオペレーショナル標準規格、アルゴリズム若しくはフォーマット、又は、これらの組み合わせを含む。したがって、これらの用語は、辞書コーディング圧縮、及び/又は、「圧縮」オペレーションと時々見なされる場合がある他のオペレーション等のオペレーションのみに限定されるとして解釈されるべきではない。
いくつかの実施形態では、データを圧縮する場合、電子デバイスは、N個の別個のデータのストリームを含む圧縮済みデータを生成し、Nは1以上である。N個のデータのストリームは、圧縮済みデータのブロック又は部分であり、圧縮済みデータのブロック又は部分は、相互に独立しており、例えば、展開オペレーションの間にデコーダにおいて復号することができ、次いで、圧縮済み入力データを展開するための圧縮標準規格と関連付けられたコマンドを生成するために使用することができるタイプのデータを含む。いくつかの実施形態では、各々のストリームは、そのストリームのデータ外のデータを参照することなく、その各々のストリームを復号することができる点で、自己充足的(self-contained)である。図1は、いくつかの実施形態による、データのストリームを含む圧縮済みデータを示すブロック図である。図1において理解することができるように、ファイル、データのフロー若しくはシーケンス等であってもよいし、これらを含むことができる圧縮済みデータ100は、3つのデータのストリーム(ストリーム102~106)を含み、ストリーム102~106の各々は、図1では、異なるフィルパターン(すなわち、ストリーム102に対してダイアゴナルフィル等)を使用してマーク付けされる。各々のデータのストリームは、各々のタイプのデータのいくつかのバイト又はブロックを含む。例えば、圧縮済みデータ100が辞書コーディング圧縮標準規格を使用して圧縮されていると想定すると、各々のストリームは、辞書コーディング圧縮標準規格の要素を含み、辞書コーディング圧縮標準規格の要素は、リテラル、コマンドタグ、距離、長さ、及び/又は、他の値等のように、圧縮済み入力データを展開するための辞書コーディング圧縮標準規格と関連付けられたコマンドを生成するために使用されることになる。この例について、リテラルは、元のデータ(すなわち、圧縮されるデータ)の指定された数以内のバイトで複製されるものとして検出されていない文字列であり、コマンドタグは、展開オペレーション(例えば、再生成された元のデータに1つ以上のリテラルを追加/付加する)を実行する指定されたコマンドを識別する値であり、長さ及び距離は、再生成された元のデータに追加/付加されることになる複製済み文字列を示すために使用される。例えば、ストリーム102は、リテラルを含んでもよく(場合によっては、それのみを含む)、ストリーム104は、コマンドタグを含んでもよく(場合によっては、それのみを含む)、ストリーム106は、距離又は長さを含んでもよい(場合によっては、それのみを含む)。
いくつかの実施形態では、図1における各々のデータのストリームは、ヘッダ、すなわち、ヘッダ(HD)108,112,116の各々により開始し、HD108,112,116は、コンテンツ、フォーマティング、ソース電子デバイス、ルーティング値、及び/又は、ストリームの長さ等を記述した情報を含む。いくつかの実施形態では、各々のデータのストリームは、メタデータ、すなわち、メタデータ(MD)110,114,118をそれぞれ含み、MD110,114,118は、圧縮済みデータから各々のストリームを復号するための復号参照、圧縮済みデータからのストリームに関する情報等の情報であり、又は、これらの情報を含む。ストリーム毎のヘッダ及びメタデータの後に、ストリームのボディが続き、ストリームのボディは、各々のタイプの圧縮済みデータを含む。ストリーム102,104,106の各々は、圧縮済みデータ内の所定の位置において、例えば、所定のバイト、フレーム又はブロックにおいて開始し、ストリーム102以外は、前のストリームに続く。例えば、ストリーム102についてのヘッダ108は、圧縮済みデータのバイト0に(例えば、メモリ内の開始アドレス、データの全体的なフロー又はシーケンス内の第1の位置に)位置することができ、ヘッダ108、メタデータ110及びストリーム102の組み合わせは、50キロバイト長であってもよく、よって、ストリーム104についてのヘッダ112は、50キロバイトに位置してもよい等である。図1におけるストリームは、図1におけるラインに掛かり、よって、ストリーム102は、圧縮済みデータ100の第1のライン内の部分及び圧縮済みデータ100の第2のライン内の部分を含み、これは、説明のために簡略化されている。上述したように、ストリームは、ファイルから取り出され、ネットワークインタフェースを介して受信されたデータのフロー又はシーケンスから取り出された等のバイト又はブロック等のデータのシーケンスである。
いくつかの実施形態では、電子デバイスは、圧縮標準規格を使用して元のデータを最初に圧縮することによって、元のデータから圧縮済みデータ(例えば、圧縮済みデータ100)を生成する。例えば、いくつかの実施形態では、電子デバイスは、圧縮済みデータを生成するために、元のデータを圧縮するためのLZ77に基づく圧縮標準規格又はLZ78に基づく圧縮標準規格等の辞書コーディング圧縮標準規格を使用する。圧縮オペレーションの間又は圧縮オペレーションに続いて、電子デバイスは、圧縮済みデータをN個のストリーム(例えば、ストリーム102~106)に分離し、N個のストリームの各々は、ヘッダ、場合によってはメタデータに従って、圧縮済み入力データを展開するための圧縮標準規格と関連付けられたコマンドを生成するための各々のタイプのデータを含む。例えば、いくつかの実施形態では、上述したLZ77に基づく圧縮標準規格又はLZ78に基づく圧縮標準規格について、データのタイプは、リテラル、コマンドタグ、距離及び長さの一部又は全てを含み、よって、個々のストリームは、リテラル、コマンドタグ、距離及び長さを含むことができ、場合によっては、これらのみを含む。次に、電子デバイスは、各々のストリームを更に圧縮するように、符号化標準規格を使用してN個のストリームの各々を符号化する。例えば、いくつかの実施形態では、電子デバイスは、ストリームを符号化するためのHuffmanコーディング等のプレフィックスコーディング標準規格を使用する。
圧縮及び符号化の特定のシーケンスが圧縮済みデータを生成するために使用されるものとして説明され、圧縮済みデータの特定のインスタンスが図1に示されているが、説明する実施形態は、圧縮済みデータのシーケンス及び/又はインスタンスに限定されない。概して、本明細書で説明するような展開エンジンにおいて圧縮済みデータを展開することができる限り、元のデータから何れかのバージョンの圧縮済みデータを生成するために、圧縮及び/又は符号化の任意の組み合わせを使用することができる。
(概要)
説明する実施形態では、電子デバイスは、N個のデータのストリームを含む圧縮済みデータを展開するオペレーションを実行する。電子デバイスは、N個のデコーダ及びデコンプレッサを有するハードウェア展開エンジンを含む。言い換えると、それ自体が機能ブロックである展開エンジンは、N個のデコーダ及びデコンプレッサについての機能ブロックを含む。ハードウェア展開エンジンにおけるN個のデコーダ及びデコンプレッサは、N個のデータのストリームを含む圧縮済みデータを展開するために使用される。
説明する実施形態では、電子デバイスは、N個のデータのストリームを含む圧縮済みデータを展開するオペレーションを実行する。電子デバイスは、N個のデコーダ及びデコンプレッサを有するハードウェア展開エンジンを含む。言い換えると、それ自体が機能ブロックである展開エンジンは、N個のデコーダ及びデコンプレッサについての機能ブロックを含む。ハードウェア展開エンジンにおけるN個のデコーダ及びデコンプレッサは、N個のデータのストリームを含む圧縮済みデータを展開するために使用される。
いくつかの実施形態では、N個のデータのストリームを含む圧縮済みデータを展開する場合、展開エンジンは、コマンド又は要求を最初に受信する。コマンド又は要求は、圧縮済みデータを識別し(例えば、圧縮済みデータのメモリ内の開始アドレス、圧縮済みデータのフロー又はシーケンスを取得することができる位置等を識別する)、圧縮済みデータの展開を要求する。また、コマンド又は要求は、圧縮済みデータを展開する場合に展開エンジンによって使用されるデータを圧縮するために使用される構成及び設定を識別し得る。更に、コマンド又は要求は、初期展開データ又は圧縮済みデータを展開する場合に展開エンジンによって使用される他の値等の特定の値を含んでもよいし、特定の値を識別してもよい。
コマンド又は要求を受信すると、展開エンジンによって、N個のデコーダの各々の1つが、コーディング標準規格(例えば、プレフィックスコーディング標準規格及び/又は別のコーディング標準規格)を使用して実質的に並列に、N個のデータのストリームの各々を個別に復号する。復号オペレーションのために、展開エンジンは、N個のデコーダのうち1つ目(すなわち、第1のストリームを復号するよう選択されたN個のデコーダのうち1つ目)におけるストリームヘッダデコーダに、第1のストリームの位置を通信する。ストリームヘッダデコーダは、第1のストリーム内のヘッダを復号し、第1のストリームの長さを判定し、展開エンジンに長さを通信し戻し、N個のデコーダのうち1つ目は、第1のストリームを復号することを続行する。展開エンジンは、第2のストリームの圧縮済みデータ内の開始位置を判定するために長さを使用し、N個のデコーダのうち2つ目におけるストリームヘッダデコーダに、第2のストリームの位置を通信し、N個のデコーダのうち2つ目におけるストリームヘッダデコーダは、第1のデコーダにおけるストリームヘッダデコーダが行ったように続行する。展開エンジンは、残りのデコーダに対し、各々のストリームの開始位置を判定すること、及び、デコーダの各々に対して復号を開始することをこのようにして続行する。本明細書で使用されるように、「実質的に並列に」とは、N個のデコーダの各々において復号を開始するためのオーバヘッドによるオフセットとして、N個のデコーダがほぼ同時に各々のストリームを復号すること等を意味する。いくつかの実施形態では、上記のストリーム毎のヘッダの例とは異なり、N個のストリームのうち第1のストリームのヘッダ(又は、全体的に圧縮済みデータのヘッダ)は、全てのN個のストリームについての長さ情報及び/又は開始位置情報を含む。これらの実施形態では、展開エンジンは、第1のストリームのヘッダ(又は、圧縮済みデータのヘッダ)からストリームの全てについての長さ情報及び/又は開始位置情報を取得し、第1のストリームのヘッダ(又は、圧縮済みデータのヘッダ)から取得された各々の長さ情報及び/又は開始位置情報を使用して、ほぼ同時に全ての残りのデコーダ(又は、全てのデコーダ)を始動してもよい。
N個のデータのストリームの各々が、圧縮済み入力データを展開するための圧縮標準規格と関連付けられたコマンドを生成するための各々のタイプのデータを含み、したがって、N個のデコーダの各々からの出力が、各々のタイプの復号済みデータのストリームであることが想起されよう。例えば、データを圧縮するために使用される圧縮標準規格が辞書コーディング圧縮標準規格である実施形態では、データのタイプは、リテラル、コマンドタグ、距離、長さ、及び/又は、他のタイプのデータを含むことができる。この例について、いくつかの実施形態では、N個のストリームのうち1つ以上は、リテラルを含み、N個のストリームのうち1つ以上は、コマンドタグを含む等である。いくつかの実施形態では、ストリームは、1つの特定のタイプのデータのみを含み、データのタイプの混合を含まない。
いくつかの実施形態では、デコーダのうち少なくとも1つは、復号オペレーションに対してそのデコーダによって使用される復号参照(例えば、1つ以上のテーブル、リスト、及び/又は他のレコード)を生成、作成及び/又は初期化する。例えば、いくつかの実施形態では、所定のデコーダは、所定のデコーダによって復号されることになるストリーム内の指定された位置から(例えば、ストリームのヘッダの直後のストリーム内のメタデータバイト等から)、復号参照を生成するための情報を取得する。例えば、所定のデコーダがストリームを復号するためにHuffmanコーディングを使用する実施形態では、所定のデコーダは、復号オペレーションに対して使用されることになるHuffman符号とシンボル(例えば、ビット又はバイトのパターン)との間のマッピングを含む復号テーブルを初期化し/埋める(filling)ための情報を取得してもよい。
いくつかの実施形態では、デコーダの一部又は全ては、サブストリームデコーダを含む。デコーダにおけるサブストリームデコーダの各々は、復号されるストリームからデータの個別の部分を復号するためにデコーダによって使用することができる異なる復号機能ブロックである。例えば、デコーダがM個のサブストリームデコーダを有する実施形態では、M個のサブストリームデコーダの各々は、ラウンドロビン方式においてストリームからデータ、シンボル等の各々の次のチャンクを取得し、データ、シンボル等のそのチャンクを復号する。これらの実施形態のいくつかでは、M個のサブストリームデコーダの各々は、実質的に並列に、データ、符号化済みシンボル等の次のチャンクを復号する。例えば、いくつかの実施形態では、制御クロック、時間周期等の所定のサイクル内に、M個のサブストリームデコーダの各々は、データ、シンボル等の少なくとも1つのチャンクを復号し、その結果、M個のサブストリームデコーダの全てが、制御クロックのサイクル毎に、1つ以上の復号済みシンボル又は復号済みデータの他の部分を生成する。いくつかの実施形態では、ストリームコンバイナ(stream combiner)は、デコンプレッサに転送するために、サブストリームデコーダからの出力を組み合わせる。
N個のストリームの各々についてのデータを復号した後、N個のデコーダは、展開エンジンにおけるデコンプレッサに、各々のタイプのデータの復号済みデータのストリームを転送する。N個のデコーダによって出力された復号済みデータのストリームから、デコンプレッサは、元のデータを再生成するように、圧縮標準規格を使用してデータを展開するコマンドを生成する。このオペレーションのために、デコンプレッサは、ストリームの一部又は全てから各々のコマンドを生成するためのデータを取得し、次いで、データからコマンドを生成する。上記の例を続けると、いくつかの実施形態では、コマンド毎に、デコンプレッサは、各々のストリームから、次のリテラル、コマンドタグ、距離、長さ、及び/又は、他のタイプのデータの一部又は全てを取得し、これらからコマンドを組み立てる。このオペレーションの最後に、デコンプレッサは、実行されると、元のデータを再生成するためのデータの次のブロック(例えば、データのPバイトのブロック)をデコンプレッサに取得及び/又は生成させる単一のコマンドを有する。
いくつかの実施形態では、デコンプレッサは、2つ以上のコマンドのグループを集約コマンド(aggregate commands)に組み合わせるオペレーションを実行するオペレーショナルコンバイナを含む。これらの実施形態では、コマンドがデコンプレッサにおいて生成されるにつれて、2つ以上のコマンドがバッファされ(すなわち、一時的に記憶され)、次いで、2つ以上のコマンドを集約コマンドに組み合わせる試みが行われる。例えば、隣接したメモリ位置、同一のキャッシュライン等にアクセスするコマンドは、集約コマンドに組み合わされてもよい。コマンドを組み合わせることによって、コマンドを実行するオペレーション及びコマンドを実行することと関連付けられたオペレーション(例えば、メモリアクセス等)をより効率的に実行することができる。
次に、デコンプレッサは、元のデータを再生成するコマンドを実行する。このオペレーションのために、デコンプレッサにおける実行機能ブロックは、実行機能ブロックに、元のデータを再生成するためのデータの次のブロックを生成及び/又は取得させるコマンドを実行する。例えば、上記の辞書コーディング圧縮標準規格の例を続けると、コマンドによって、実行機能ブロックが、次の1つ以上のリテラルを取得してもよく、元のデータの再生成に(すなわち、デコンプレッサによって生成される出力ファイル又はストリームに)次のリテラルを追加/付加してもよい。別の例として、辞書コーディング圧縮標準規格の例を再度続けると、コマンドによって、実行機能ブロックが、既に再生成された元のデータ内の識別された位置から(すなわち、実行機能ブロックによって前に出力されたデータから)指定された長さを有する前の値を読み出してもよく、元のデータの再生成にその前の値を追加/付加してもよい。
いくつかの実施形態では、デコンプレッサは、実行機能ブロックにおいてコマンドが実行される前に、メモリからコマンドを実行するためのデータをフェッチする読み出しマネージャ機能ブロックを含む。これらの実施形態のいくつかでは、メモリからのデータの戻りを待機するようにコマンドがバッファされ、データが戻されるときにコマンドが実行される。いくつかの実施形態では、デコンプレッサは、先入れ先出し(FIFO)バッファである履歴バッファを含み、FIFOバッファに、指定された数のリテラル及び/又は前の値が記憶され、従属した後続のコマンドにフィードバックされる。これらの実施形態では、リテラル及び/又は前の値は、最終的にFIFOバッファから読み出され、元のデータの再生成に付加され、すなわち、展開済みデータとしてメモリに記憶され、展開済みデータのフロー又はシーケンスとして出力される等である。
N個のデータのストリームを含む圧縮済みデータを展開するためのN個のデコーダ及びデコンプレッサを有するハードウェア展開エンジンを使用することによって、説明する実施形態は、ソフトウェアを使用して既存のデバイスが実行するオペレーションをハードウェアにおいて実行する。同一のオペレーションを実行するためにソフトウェアエンティティを使用するよりも、ハードウェア展開エンジンがより高速且つより効率的である(例えば、メモリアクセスをあまり必要とせず、電力をあまり使用しない等である)。加えて、展開エンジンを使用することは、他のオペレーションを実行するための電子デバイスにおける他の機能ブロック(例えば、処理サブシステム等)を取り除く(frees)。したがって、展開エンジンは、電子デバイスの全体的な性能を改善し、ひいては、ユーザ満足度を改善する。
(電子デバイス)
図2は、いくつかの実施形態による、電子デバイス200を示すブロック図である。図2において理解することができるように、電子デバイス200は、プロセッサ202及びメモリ204を含む。プロセッサ202は、電子デバイス200において計算オペレーション、展開オペレーション及び他のオペレーションを実行する機能ブロックである。プロセッサ202は、処理サブシステム206及び展開サブシステム208を含む。処理サブシステム206は、汎用計算オペレーション、展開オペレーション及び他のオペレーションを実行する、中央処理装置(CPU)コア、グラフィックプロセッシングユニット(GPU)コア、組み込みプロセッサ、及び/又は、特定用途向け集積回路(ASIC)等の1つ以上の機能ブロックを含む。
図2は、いくつかの実施形態による、電子デバイス200を示すブロック図である。図2において理解することができるように、電子デバイス200は、プロセッサ202及びメモリ204を含む。プロセッサ202は、電子デバイス200において計算オペレーション、展開オペレーション及び他のオペレーションを実行する機能ブロックである。プロセッサ202は、処理サブシステム206及び展開サブシステム208を含む。処理サブシステム206は、汎用計算オペレーション、展開オペレーション及び他のオペレーションを実行する、中央処理装置(CPU)コア、グラフィックプロセッシングユニット(GPU)コア、組み込みプロセッサ、及び/又は、特定用途向け集積回路(ASIC)等の1つ以上の機能ブロックを含む。
展開サブシステム208は、個別のデータのストリームを含む圧縮済み入力データを展開するオペレーションを実行する機能ブロックである。概して、展開サブシステム208は、ファイル、データのフロー又はシーケンス等の指定された圧縮済み入力データを展開するコマンド又は要求を入力として見なし、圧縮済み入力データがそれから生成された元のデータを完全に又は近似して再生成する圧縮されていないデータを戻す。展開サブシステム208は、以下により詳細に説明される。
メモリ204は、電子デバイス200においてメモリ(例えば、メインメモリ)のオペレーションを実行する機能ブロックである。メモリ204は、電子デバイス200における機能ブロックによる使用のためのデータ及び命令を記憶するためのメモリ回路(すなわち、記憶素子、アクセス素子等)と共に、メモリ回路においてデータ及び命令のアクセスを処理するための(例えば、読み出し、書き込み、チェック、削除、無効化等)制御回路を含む。メモリ204におけるメモリ回路は、第4世代ダブルデータレート同期ダイナミックランダムアクセスメモリ(DDR4 SDRAM)、スタティックランダムアクセスメモリ(SRAM)、又は、これらの組み合わせ等のコンピュータ可読メモリ回路を含む。
特定の数及び構成の素子(例えば、プロセッサ202、メモリ204等の機能ブロック及びデバイス)を使用して電子デバイス200が示されている。しかしながら、電子デバイス200は、説明のために簡略化されている。いくつかの実施形態では、異なる数又は構成の素子が電子デバイス200に存在する。例えば、電子デバイス200は、電力サブシステム、ディスプレイ等を含んでもよい。概して、電子デバイス200は、本明細書で説明するオペレーションを実行するのに十分な素子を含む。
展開サブシステム208がプロセッサ202に含まれるものとして図2に示されているが、いくつかの実施形態では、展開サブシステム208は、個別の機能ブロック及び/又はスタンドアロンの機能ブロックである。例えば、展開サブシステム208は、スタンドアロンの集積回路チップ等に実装されてもよい(それ自体によって、又は、サポートする回路素子及び機能ブロックにより)。概して、説明する実施形態では、展開サブシステム208は、本明細書で説明するオペレーションを実行することを可能にするように、電子デバイス200に適切に配置されている。
電子デバイス200は、データ展開オペレーション又は他のオペレーションを実行する任意の電子デバイスであってもよいし、任意の電子デバイスに含まれてもよい。例えば、電子デバイス200は、デスクトップコンピュータ、ラップトップコンピュータ、ウェアラブル電子デバイス、タブレットコンピュータ、スマートフォン、サーバ、人工知能装置、仮想現実機器若しくは拡張現実機器、ネットワークアプライアンス、玩具、音声視覚機器、ホームアプライアンス、コントローラ、車両等、及び/又は、これらの組み合わせ等の電子デバイスであってもよいし、これらに含まれてもよい。
(展開エンジン)
説明する実施形態では、電子デバイスにおける展開サブシステムは、圧縮済み入力データを展開するオペレーションを実行する。図3は、いくつかの実施形態による、展開サブシステム208を示すブロック図である。図3において理解することができるように、展開サブシステム208は、展開エンジン300及びメモリインタフェース302を含む。展開エンジン300は、圧縮済み入力データを展開するオペレーション及び圧縮済み入力データを展開することと関連付けられたオペレーションを実行する機能ブロックである。展開エンジン300は、デコーダサブシステム304及びデコンプレッササブシステム306を含み、デコーダサブシステム304及びデコンプレッササブシステム306は、符号化済みデータを復号し、圧縮済みデータを展開するオペレーション、並びに、符号化済みデータを復号すること、及び、圧縮済みデータを展開することと関連付けられたオペレーションの各々の部分を各々が実行する機能ブロックである。デコーダサブシステム304及びデコンプレッササブシステム306は、以下により詳細に説明される。
説明する実施形態では、電子デバイスにおける展開サブシステムは、圧縮済み入力データを展開するオペレーションを実行する。図3は、いくつかの実施形態による、展開サブシステム208を示すブロック図である。図3において理解することができるように、展開サブシステム208は、展開エンジン300及びメモリインタフェース302を含む。展開エンジン300は、圧縮済み入力データを展開するオペレーション及び圧縮済み入力データを展開することと関連付けられたオペレーションを実行する機能ブロックである。展開エンジン300は、デコーダサブシステム304及びデコンプレッササブシステム306を含み、デコーダサブシステム304及びデコンプレッササブシステム306は、符号化済みデータを復号し、圧縮済みデータを展開するオペレーション、並びに、符号化済みデータを復号すること、及び、圧縮済みデータを展開することと関連付けられたオペレーションの各々の部分を各々が実行する機能ブロックである。デコーダサブシステム304及びデコンプレッササブシステム306は、以下により詳細に説明される。
メモリインタフェース302は、展開エンジン300によるメモリアクセス(例えば、メモリ読み出し、書き込み、無効化、削除等)のためのオペレーション及びメモリアクセスと関連付けられたオペレーションを実行する機能ブロックである。例えば、いくつかの実施形態では、圧縮済み入力データから再生成された元のデータは、メモリインタフェース302を介してメモリ(例えば、メモリ204)に記憶される。別の例として、いくつかの実施形態では、圧縮済み入力データは、圧縮済み入力データを展開することに備えて、メモリインタフェース302を介してメモリから取り出され又は取得される。メモリインタフェース302が図3に示されているが、いくつかの実施形態では、展開サブシステム208は、ネットワークインタフェース、IOデバイスインタフェース、プロセッサ間通信インタフェース等の1つ以上の追加のインタフェース又は異なるインタフェースを含み、これらを使用する。概して、説明する実施形態では、展開サブシステム208は、圧縮済み入力データを取り出し、再生成された元のデータを書き出し、及び/又は、展開サブシステム208が位置する電子デバイス(例えば、電子デバイス200)における他の機能ブロックと通信(例えば、コマンド等)を交換するための1つ以上の機能ブロック又はデバイスを含む。
図3~図5における例の以下の説明について、展開のために圧縮済み入力データがメモリ(例えば、メモリ204)から取得されること、及び、圧縮済み入力データから再生成された元のデータがメモリ204に記憶されることが想定されよう。これは必須ではない。いくつかの実施形態では、圧縮済みデータは、他のソースから取得され、及び/又は、電子デバイス200における他の宛先及び電子デバイス200を超えた他の宛先に(例えば、ネットワークインタフェース、IOデバイス等を介して)記憶若しくは提供される。加えて、図3~図5における例について、圧縮済み入力データを生成するために元のデータが上述したように処理されており、すなわち、辞書コーディング圧縮標準規格(例えば、LZ77に基づく標準規格又はLZ78に基づく標準規格)を使用して最初に圧縮されており、次いで、辞書コーディング圧縮標準規格についてのデータタイプ(例えば、リテラル、コマンドタグ、距離、長さ等)によってN個のストリームに分離されており、最終的に、プレフィックスコーディング標準規格(例えば、Huffmanコーディング)を使用して個々のストリームが個別に符号化されていることが想定されよう。これも必須ではない。いくつかの実施形態では、圧縮済み入力データを生成するための異なる圧縮、符号化、及び/若しくは、他のオペレーショナル標準規格、アルゴリズム若しくはフォーマット、又は、これらの組み合わせを使用することができ、圧縮済み入力データは、図3~図5について説明するオペレーションと同様のオペレーションを使用して展開及び/又はそうでなければ逆にされる。
図4は、いくつかの実施形態による、デコーダサブシステム304を示すブロック図である。デコーダサブシステム304は、いくつかの個別のデコーダ400~404を含む。デコーダ400~404の各々は、圧縮済み入力データを展開するため圧縮標準規格と関連付けられたコマンドを生成するための所定のタイプのデータ(例えば、リテラル、コマンドタグ、距離等)を復号するオペレーションを実行する。いくつかの実施形態では、各々のデコーダ400~404は、所定のタイプのデータを復号するために設計された回路素子をそのデコーダに含めること等によって、所定のタイプのデータを復号することに専念する。いくつかの実施形態では、デコーダ402~404の各々は、デコーダ400に示される内部要素と同様の内部要素(明確化のために示されていない)を含むが、これは必須ではない。概して、各々のデコーダは、1つ以上のタイプのデータを復号するのに十分な内部要素を含む。
図4において理解することができるように、デコーダ400は、読み出しマネージャ406を含み、読み出しマネージャ406は、メモリから圧縮済み入力データ432を取得すること、及び、サブストリームデコーダ408~412に圧縮済み入力データ432の部分を案内することと関連付けられたオペレーションを実行する機能ブロックである。サブストリームデコーダ408~412の各々は、デコーダ400において復号されるストリームの各々の部分を復号し、又は、そうでなければ処理する機能ブロックである。更に、デコーダ400は、ストリームヘッダデコーダ(SHD)414を含み、SHD414は、デコーダ400において復号されるストリームのヘッダからの情報を処理するオペレーションを実行する機能ブロックである。更に、デコーダ400は、バッファ416~420を含み、バッファ416~420は、デコーダ400において復号されるストリームの部分をバッファし(すなわち、一時的に記憶する)、対応するサブストリームデコーダにストリームの部分を提供する(例えば、バッファ416がサブストリームデコーダ408にストリームの部分を提供する等)オペレーションを実行する機能ブロックである。更に、デコーダ400は、ストリームコンバイナ422を含み、ストリームコンバイナ422は、サブストリームデコーダ408~412から出力された個々の復号済みデータ部分を、デコーダ400からデコンプレッササブシステム306に出力されることになる復号済みデータの単一のストリームに組み合わせるオペレーションを実行する機能ブロックである。更に、デコーダ400は、復号参照ビルダ(DRB)424を含み、DRB424は、復号参照(DREF)426において初期化し、及び、埋める(filling)オペレーションを実行する機能ブロックであり、DREF426から、ストリームの部分を復号するためにサブストリームデコーダ408~412によって情報が取得及び使用される。
デコーダサブシステム304のオペレーションの間、コマンドヘッダデコーダ(CHD)428は、圧縮済み入力データ432の展開を識別及び要求するコマンド430(メッセージ、パケット、要求、及び/若しくは他の形式の通信であり得る、又は、それらに含まれ得る)を受信する。例えば、いくつかの実施形態では、コマンド430は、圧縮済み入力データ432が記憶されたメモリ内の絶対アドレス若しくは相対アドレス、メモリ内の位置、及び/又は、メモリ内の参照を介して、圧縮済み入力データ432を識別する。いくつかの実施形態では、コマンド430は、圧縮済み入力データ432を圧縮するために使用される構成及び設定を識別する情報、圧縮済み入力データ432を復号及び/又は展開するためにデコーダサブシステム304及び/又はデコンプレッササブシステム306によって使用されることになる構成及び設定を識別する情報を含む。例えば、いくつかの実施形態では、圧縮済み入力データ432を圧縮するときに構成可能又は選択可能符号化及び/又は圧縮オプションが使用されていた場合、コマンド430は、オプションがどのように構成又は選択されたかの指標を含んでもよい(例えば、指定されたビット等において)。いくつかの実施形態では、コマンド430は、圧縮済み入力データ432を復号及び/又は展開するためにデコーダサブシステム304及び/又はデコンプレッササブシステム306によって使用されることになる情報を含む、又は、その情報を識別する。例えば、いくつかの実施形態では、コマンド430は、デコンプレッササブシステム306においてテーブル等の展開参照を初期化するために使用される辞書符号マッピングを含む(例えば、それと共にパケット又はメッセージに含まれる)。いくつかの実施形態では、コマンドヘッダデコーダ428は、デコンプレッササブシステム306に、コマンド430からの情報又はコマンド430と関連付けられた情報(例えば、辞書符号マッピング等)を通信する。
コマンド430を受信すると、いくつかの実施形態では、コマンドヘッダデコーダ428は、圧縮済み入力データ432からのストリームを復号すると始動されることになる第1の/初期デコーダであるデコーダ400における読み出しマネージャ(MGR)406に、圧縮済み入力データ432内のN個のストリームの中から第1のストリームが開始する(圧縮済みデータ100内のストリーム102)メモリ内のアドレス又は位置を通信する。メモリ内のアドレス又は位置を使用して、読み出しマネージャ406は、メモリから圧縮済み入力データ432内の第1のストリームをフェッチすることを開始する。第1のストリームがメモリから戻されることを始める場合、読み出しマネージャ406は、バッファ416に初期部分を転送する(すなわち、第1のストリームからの指定された数のバイトをバッファ416内のメモリ素子に記憶する)。ストリームヘッダデコーダ414は、バッファ416から第1のストリームの初期部分の少なくとも一部を取得し、初期部分に含まれる第1のストリームについてのヘッダ(例えば、ストリーム102からのヘッダ108)からの情報を処理する。第1のストリームのヘッダからの情報は、ストリームヘッダデコーダ406が取得し、ストリームヘッダデコーダ406がコマンドヘッダデコーダ428に送信する第1のストリームの長さである。コマンドヘッダデコーダ428は、第1のストリームの長さに基づいて、圧縮済み入力データ432内のN個のストリームの中から第2のストリーム(例えば、ストリーム104)についてのメモリ内のアドレス又は位置を計算又は判別し、圧縮済み入力データ432からストリームを復号すると始動されることになる第2のデコーダであるデコーダ402における読み出しマネージャに、圧縮済み入力データ内の第2のストリームが開始するメモリ内のアドレス又は位置を通信する。次に、デコーダ402は、デコーダ400によって実行されるオペレーションと同様のオペレーションを使用して、第2のストリームを復号することを開始する。このようにして、コマンドヘッダデコーダ404は、カスケード様式又はデイジチェーン様式においてデコーダ400~404を始動すると共に、第1のデコーダの後の各々のデコーダは、前のデコーダからのコマンドヘッダデコーダ428によって取得された情報に基づいて始動される。いくつかの実施形態では、デコーダ400~404は、「実質的に並列に」各々のストリームを復号するが、N個のストリームの各々の長さが判別される間のデコーダ400~404の各々の始動時間におけるオフセットに起因して、全体的には並列ではない。
いくつかの実施形態では、各々のストリームのヘッダが圧縮済みデータ内の次のストリームの開始位置を判別するために使用される長さ情報を含む上記の例とは異なり、N個のストリームの第1のストリームのヘッダ(又は、全体的に圧縮済みデータのヘッダ)は、全てのN個のストリームについての長さ情報及び/又は開始位置情報を含む。これらの実施形態では、コマンドヘッダデコーダ428は、第1のストリームのヘッダ(又は、全体的に圧縮済みデータのヘッダ)からストリームの全てについての長さ情報及び/又は開始位置情報を取得し、第1のストリームのヘッダ(又は、圧縮済みデータのヘッダ)から取得された各々の長さ情報及び/又は開始位置情報を使用してほぼ同時に、全ての残りのデコーダ(すなわち、デコーダ402~404)を始動してもよい(又は、全てのデコーダを始動する)。
いくつかの実施形態では、ストリームヘッダデコーダ414は、第1のストリームの初期部分内のストリームヘッダ情報及び/又はメタデータ(例えば、ヘッダ108及び/又はメタデータ110)から、第1のストリームを符号化及び/又は圧縮するために使用される構成及び/又は設定に関する情報を取得する。例えば、いくつかの実施形態では、ストリームヘッダデコーダ414は、第1のストリーム内のデータのフォーマット又は配列(圧縮済み入力データ432内の他のストリーム内のデータと同一のフォーマット又は配列でなくてもよい)に関する情報を取得する。次に、ストリームヘッダデコーダ414は、そこで使用するための、すなわち、第1のストリームからのデータを処理する場合にデコンプレッササブシステム306が構成及び/又は設定を考慮することができるように、デコンプレッササブシステム306に、構成及び/又は設定に関する情報を通信する。
いくつかの実施形態では、デコーダ400における復号参照ビルダ424も、バッファ416から第1のストリームの初期部分の少なくとも一部を取得し、復号参照426において初期化し、及び、埋めるための情報を取得するように、初期部分に含まれる第1のストリームについてのメタデータ(例えば、メタデータ110)を処理する。例えば、いくつかの実施形態では、第1のストリームの第1の部分内のメタデータは、サブストリームデコーダ408~412の各々においてストリームを復号するために使用されることになる符号とシンボル(例えば、ビット又はバイトのパターン)との間のマッピングを含む。
バッファ416に第1のストリームの初期部分を転送することに従って、読み出しマネージャ406は、バッファ418,420に第1のストリームの各々の部分を転送する。バッファ416~420から、データの各々のブロック又は部分(例えば、クロックサイクル毎にデータの32ビットのブロック等)は、各々の対応するサブストリームデコーダ408~412にフィードされる。サブストリームデコーダ408~412の各々は、復号参照426からの情報を使用して、1つ以上のシンボルを生成するように、対応する復号技術を使用して受信されたデータのブロック又は部分を復号する。いくつかの実施形態では、サブストリームデコーダ408~412は、データの各々のブロック又は部分を復号する場合に実質的に並列に動作する。例えば、いくつかの実施形態では、各々のサブストリームデコーダは、制御クロックのサイクル毎に、データの各々のブロック又は部分を復号し、したがって、制御クロックのサイクル毎に少なくとも1つの復号済みシンボル(すなわち、復号済みデータ)を生成する。次に、サブストリームデコーダ408~412の各々は、ストリームコンバイナ422に各々の復号済みデータを出力する。ストリームコンバイナ422は、サブストリームデコーダ408~412の各々からシンボルのストリームを受信し、デコーダ400から出力された復号済みデータのストリームを生成するように、デコーダ408~412の全てからのシンボルのストリームを組み合わせる。例えば、いくつかの実施形態では、ストリームコンバイナ422は、ラウンドロビン方式においてデコーダ408~412の各々からの次のシンボルを取得し、復号済みデータの集約ストリーム又は組み合わされたストリームに次のシンボルを付加する。次に、ストリームコンバイナ422、より広義にはデコーダ400は、デコンプレッササブシステム306に復号済みデータのストリームを出力する。加えて、デコーダ402~404の各々(例えば、ストリームコンバイナ又はそこにある別の機能ブロック)は、デコンプレッササブシステム306に復号済みデータの各々のストリームを出力する(図4の右上でデコーダ402~404からの矢印によって示されるように)。
いくつかの実施形態では、デコーダ402~404のうち1つ以上は、圧縮済み入力データ内のN個のストリームの中からセカンダリストリームを復号するセカンダリデコーダである。プライマリストリームとは対照的に、セカンダリストリームは、復号するのにあまり複雑ではなく、したがって、セカンダリデコーダは、簡易化され、より少ない内部要素を含んでもよい。例えば、いくつかの実施形態では、セカンダリストリームは、リテラル、コマンドタグ、長さ及び/又は固定長の距離である(すなわち、固定数のビット若しくはバイト)距離(その残りの部分がプライマリストリームに含まれる)についての追加の値及び/又はその部分等の情報を含み、したがって、セカンダリストリームから固定長のデータのチャンク又はブロックを取り出すことによって、セカンダリストリームを単純に復号してもよい。
いくつかの実施形態では、ストリームの一部又は全ては、未処理ストリームデータ又は符号化されていないストリームデータを含む。例えば、いくつかのケースでは、ストリームを符号化することによって、符号化の影響に起因して、ストリームのサイズが大きくなり、したがって、元のデータを圧縮する電子デバイスによってはストリームが符号化されない。これらの実施形態のいくつかでは、バッファ416~420の一部又は全ては、対応するサブストリームデコーダをバイパスすることができ(すなわち、対応するサブストリームデコーダにおいて復号オペレーションを実行しない)、ストリームコンバイナ422及び/又はデコンプレッササブシステム306に未処理ストリーム要素又は符号化されていないストリーム要素を直接通信することができる。
図5は、いくつかの実施形態による、デコンプレッササブシステム306を示すブロック図である。デコンプレッササブシステム306は、デコーダサブシステム304によって出力された復号済みデータを受信し、圧縮済み入力データを展開するコマンドを生成するために復号済みデータを使用するための内部要素を含む。デコンプレッササブシステム306はまた、圧縮済み入力データがそれから生成された元のデータを再生成するコマンドを実行し、再生成された元のデータをメモリに記憶するための内部要素を含む。
図5において理解することができるように、デコンプレッササブシステム306における要素は、コマンドアセンブラ500を含み、コマンドアセンブラ500は、バッファ502~504から取得された情報からコマンドを組み立てる(すなわち、生成、作成する等)オペレーションを実行する機能ブロックであり、バッファ502~504は、各々がコマンドを組み立てるために使用されるコマンドタグ、長さ等の各々の値をバッファする機能ブロックである。また、デコンプレッササブシステム306は、オペレーショナルコンバイナ(OP COMB)508を含み、OP COMB508は、可能である場合、デコンプレッササブシステム306における後続の実行のためにコマンド(又は、それによって生じるオペレーション)を新たな集約コマンドに組み合わせるオペレーションを実行する機能ブロックである。更に、デコンプレッササブシステム306は、バッファ506及びリテラルバッファ510を含み、バッファ506及びリテラルバッファ510は、デコンプレッササブシステム306における使用のためにデコーダサブシステム304によって出力された復号済みデータにリテラルをバッファするオペレーションを実行する機能ブロックである。更に、デコンプレッササブシステム306は、読み出しスケジューラ(SCH)512及び読み出しリターン(RETRN)514を含み、SCH512及びRETRN514は、コマンドを実行する場合に元のデータを再生成する際に使用されることになるデータ(例えば、メモリに前に書き込まれた再生成された元のデータからの文字列)をメモリから取得するオペレーションを実行する機能ブロックである。更に、デコンプレッササブシステム306は、オペレーショナルコントローラ(OP CTRLR)516及びコマンドエグゼキュータ(CMD EXE)518を含み、OP CTRLR516及びCMD EXE518の各々は、コマンドがいつ実行されるかを制御し、コマンドを実行する機能ブロックである。更に、デコンプレッササブシステム306は、オペレーショナル(OP)キャッシュ520及び履歴バッファ522を含み、OPキャッシュ520及び履歴バッファ522は、コマンドと、コマンドを実行する際に使用されることになり及び/又は後続のコマンドにフィードバックされることになる再生成された元のデータのブロック(例えば、32バイトのブロック等)と、をキャッシュするオペレーションと共に、履歴バッファ522に対するオペレーションを実行する機能ブロックであり、履歴バッファ522から、再生成された元のデータがメモリに書き出される。
デコンプレッササブシステム306のオペレーションの間、バッファ502~506の各々によって復号済みデータが受信される(例えば、それぞれ、コマンドタグ、長さ及びリテラル)。コマンドタグ及び長さは、元のデータを再生成するコマンドを生成するためにコマンドアセンブラ500によって必要とされ、コマンドアセンブラ500によって使用されるように、バッファ502~504から取り出される(例えば、先入れ先出し順序において)。例えば、コマンドタグのみに基づいて(すなわち、コマンドタグに含まれる情報又は値に基づいて)、コマンドアセンブラ500は、次の1つ以上のリテラルを取得し、再生成された元のデータに1つ以上のリテラルを追加/付加するコマンドを生成してもよい。別の例として、長さ及び/又は距離と組み合わせたコマンドタグに基づいて、コマンドアセンブラ500は、以前に再生成された元のデータ内の識別された位置から指定されたサイズ(例えば、ビット又はバイトの数)のデータのチャンク又はブロックを取得し、再生成された元のデータに、取得されたデータのチャンク又はブロックを追加/付加するコマンドを生成してもよい。いくつかの実施形態では、2つ以上のコマンドアセンブラが存在すること(コマンドアセンブラ500の背後の追加のブロックによって示されるように)、及び、コマンドアセンブラが上述したようなコマンドを生成するために実質的に並列に動作することに留意されたい。
コマンドアセンブラ500から、生成されたコマンドがオペレーショナルコンバイナ506に転送され、オペレーショナルコンバイナ506は、2つ以上の個別のコマンドのグループを収集し、2つ以上のコマンドを1つ以上の集約コマンドに組み合わせることを試みる。各々の集約コマンドは、2つ以上の個別のコマンドのオペレーションの全てを実行するが、より少ない計算エフォート(コマンドエグゼキュータ518からの)、より少ないメモリ及び/又はキャッシュメモリアクセス等によってそれを行ってもよい。いくつかの実施形態では、2つ以上のコマンドから集約コマンドを生成することができない場合、2つ以上のコマンド自体がオペレーショナルコンバイナ506から個別に出力される。
コマンド又は集約コマンド(簡潔化及び明確化のためにこの例の残りに対して「コマンド」と呼ばれる)は、オペレーショナルコンバイナ506から読み出しスケジューラ512に転送される。読み出しスケジューラ512は、メモリに既に書き込まれた再生成されたデータからデータのチャンク又はブロックを取得するためにメモリアクセスが必要であるかどうかを判別するように、コマンドを分析する。例えば、コマンドは、カレントコマンドを実行するために使用されることになる以前に再生成された元のデータからデータのチャンク又はブロックを複製することである。メモリ読み出しがデータのブロック又はチャンクを取得するように実行されることになる場合、読み出しスケジューラ512は、メモリに、データのブロック及びチャンクについての読み出し要求を送信する。
読み出しスケジューラ512から、コマンドがオペレーショナルコントローラ516に渡され、オペレーショナルコントローラ516は、コマンドを実行することができるかどうか、又は、メモリからデータの戻りを待機するようにコマンドが保留されるかどうかを判別する。コマンドを実行することができる場合、オペレーショナルコントローラ516は、実行のためにコマンドエグゼキュータ518にコマンドを転送し、又は、コマンドをオペレーショナルキャッシュ520に記憶し、コマンドエグゼキュータ518に、実行のためにオペレーショナルキャッシュ520からコマンドを取得させる。そうでなければ、コマンドがメモリからのデータの戻りを待機して保留されることになる場合、オペレーショナルコントローラ516は、データの戻りを待機する間に記憶されることになるコマンドをオペレーショナルキャッシュ520に転送する。データがその後戻る場合、読み出しリターン514は、オペレーショナルコントローラ516にデータを転送し、オペレーショナルコントローラ516は、データをオペレーショナルキャッシュ520に記憶し、コマンドエグゼキュータ518に、実行のためにオペレーショナルキャッシュ520からコマンド及びデータを取得させる。
コマンドを実行することによって、コマンドエグゼキュータ518は、コマンドによって指示されたオペレーションを実行する。例えば、いくつかの実施形態では、コマンドは、再生成された元のデータの最後に1つ以上のリテラルを追加/付加することであり、したがって、コマンドエグゼキュータ518は、リテラルバッファ510(又は、オペレーショナルキャッシュ520若しくは履歴バッファ522)から1つ以上のリテラルを取得し、再生成された元のデータの最後に1つ以上のリテラルを追加/付加する。言い換えると、コマンドエグゼキュータ518は、オペレーショナルキャッシュ520に、リテラルバッファ510から取得されたリテラルのデータ(例えば、ビット又はバイト)を順に出力し、リテラルのデータは、オペレーショナルキャッシュ520からメモリ内のファイル、再生成された元のデータのストリーム等に最終的に書き込まれる。別の例として、いくつかの実施形態では、所定のコマンドは、既に再生成された元のデータ内の後方への距離からの長さの文字列を取得し、再生成された元のデータの最後に文字列を追加/付加することであり、したがって、コマンドエグゼキュータ518は、既に再生成された元のデータから文字列を取得するように、メモリアクセスを実行する。読み出しスケジューラ512によるメモリからの文字列の先のフェッチに起因して、メモリアクセスは、オペレーショナルキャッシュ520(又は、以下に説明するように、履歴バッファ522)においてヒットするはずであり、コマンドエグゼキュータ518は、文字列を取得し、再生成された元のデータの最後に文字列を追加/付加する。
いくつかの実施形態では、コマンドエグゼキュータ518によって出力された最近の出力データ(例えば、リテラル及び文字列)を一時的に記憶し、フィードバックするために履歴バッファ522が使用される。これらの実施形態では、データのチャンク(例えば、Tビットのリテラル、Kビット又はバイトの文字列)がコマンドエグゼキュータ518から出力されるにつれて、データのチャンクが先入れ先出し順序において履歴バッファに書き込まれる(おそらくは、オペレーショナルキャッシュ520を介して)。所定の時間量の間、又は、履歴バッファ522が埋められるまで、データのチャンクが履歴バッファ522に保持され、次いで、先入れ先出し順序においてデータのチャンクがメモリに書き出される。上述したように、履歴バッファ522に存在する間、後続のコマンドにフィードバックするためにデータのチャンクが利用可能である。
図3では展開サブシステム208における1つの展開エンジンのみを示しているが、いくつかの実施形態では、展開サブシステム208は、複数の展開エンジンを含む。これらの実施形態では、複数の展開エンジンは、圧縮済み入力データの部分を展開するために使用されてもよく(例えば、実質的に並列に)、又は、異なる/個別の圧縮済み入力データを展開するために使用されてもよい。例えば、いくつかの実施形態では、同一の圧縮済み入力データの各々の断片(fraction)又は区画(section)を展開するために、複数の展開エンジンの各々が使用されてもよい。
図4では3つのデコーダ400~404を示しているが、いくつかの実施形態では、異なる数のデコーダが使用される。加えて、いくつかの実施形態では、コマンドアセンブラ500、コマンドエグゼキュータ518等のように、異なる数の他の内部要素が展開エンジンに存在する。また、いくつかの実施形態では、異なる数のサブストリームデコーダ及びバッファがデコーダサブシステム304及びデコンプレッササブシステム306において使用される。これは、サブストリームデコーダとバッファとの間の楕円を介して図4~図5に示されている。概して、説明する実施形態では、展開エンジンは、本明細書で説明するオペレーションを実行するのに十分な内部要素を含む。
(圧縮済み入力データを展開する処理)
説明する実施形態では、デコーダサブシステム及びデコンプレッササブシステム(例えば、デコーダサブシステム304及びデコンプレッササブシステム306)を含む展開エンジン(例えば、展開エンジン300)は、1つ以上の個別のデータのストリーム(例えば、圧縮済みデータ100内のストリーム102~106)を含む圧縮済み入力データを展開するオペレーションを実行する。図6は、いくつかの実施形態による、複数のストリームを含む圧縮済み入力データを展開する処理を示すフローチャートである。図6に示されるオペレーションは、いくつかの実施形態によって実行されるオペレーションの全体的な例として示されていることに留意されたい。他の実施形態によって実行されるオペレーションは、異なるオペレーション、異なる順序において実行されるオペレーション、及び/又は、異なるエンティティ若しくは機能ブロックによって実行されるオペレーションを含む。
説明する実施形態では、デコーダサブシステム及びデコンプレッササブシステム(例えば、デコーダサブシステム304及びデコンプレッササブシステム306)を含む展開エンジン(例えば、展開エンジン300)は、1つ以上の個別のデータのストリーム(例えば、圧縮済みデータ100内のストリーム102~106)を含む圧縮済み入力データを展開するオペレーションを実行する。図6は、いくつかの実施形態による、複数のストリームを含む圧縮済み入力データを展開する処理を示すフローチャートである。図6に示されるオペレーションは、いくつかの実施形態によって実行されるオペレーションの全体的な例として示されていることに留意されたい。他の実施形態によって実行されるオペレーションは、異なるオペレーション、異なる順序において実行されるオペレーション、及び/又は、異なるエンティティ若しくは機能ブロックによって実行されるオペレーションを含む。
図6における例について、圧縮済み入力データは、辞書コーディング圧縮(例えば、LZ77に基づく圧縮標準規格又はLZ78に基づく圧縮標準規格を使用した)及びプレフィックスコーディング(例えば、Huffmanコーディング標準規格を使用した)の組み合わせを使用して圧縮されていることが想定される。しかしながら、これは必須ではない。例えば、いくつかの実施形態では、図6における例と反対に、データが最初に符号化され、次いで、ストリームに分離され、最終的に圧縮される。概して、説明する実施形態は、本明細書で説明するように展開エンジンを使用して展開することができる圧縮(複数可)及び/又は符号化(複数可)の任意の組み合わせにより動作可能である。加えて、圧縮処理の間、例えば、圧縮に続いて又は圧縮の間、且つ、符号化の前に、圧縮済みデータは、N個のデータのストリームに分離されていると想定される。本明細書で説明するように、N個のデータのストリームの各々のストリームは、圧縮済み入力データを展開するための圧縮標準規格と関連付けられたコマンドを生成するための各々のタイプのデータを含んでもよいし、各々のタイプのデータのみを含んでもよい。例えば、いくつかの実施形態では、データのタイプは、リテラル、コマンドタグ、距離、長さ及び/又は辞書コーディング圧縮標準規格と関連付けられた他のデータの一部又は全てを含み、したがって、N個のストリームの各々は、これらのタイプのデータの少なくとも1つを含み、場合によっては、これらのタイプのデータの1つのみを含む。
図6において理解することができるように、処理は、N個のデータのストリームを含む圧縮済み入力データを展開するコマンドを展開エンジンが受信するときに開始する(ステップ600)。このオペレーションのために、展開エンジンは、信号ライン、バス又は他の通信インタフェースを介して、コマンド及び/又は圧縮済み入力データの識別を含むパケット、メッセージ又は信号を受信する。例えば、いくつかの実施形態では、コマンドの識別は、コマンドを識別するパターンにおいて編成された1つ以上のビット又はバイトを含む。別の例として、いくつかの実施形態では、圧縮済み入力データの識別は、メモリ内のアドレス、ネットワークインタフェースデバイスについての識別子等のように、圧縮済み入力データがそれから取得されることになる位置を含む。
次いで、展開エンジンによって、展開エンジンにおけるN個のデコーダ(例えば、デコーダ408~412)の各々が、個別に且つ実質的に並列に、圧縮済み入力データからN個のストリームのそれぞれ1つを復号する(ステップ602)。このオペレーションは、展開エンジン(例えば、コマンドヘッダデコーダ、ストリームヘッダデコーダ等)がN個のストリームの各々のストリームの圧縮済み入力データ内の位置を判別すること、及び、N個のデコーダの中から異なるデコーダに各々のストリームを復号することを開始させることを含む。各々のストリームを復号することは、各々のデコーダ(又は、別のエンティティ)が、各々のストリーム内の符号化済みデータのブロックと関連付けられたシンボルを判別するよう各々の復号参照(例えば、復号参照426)へのルックアップを実行すること、及び、シンボルを出力することを含む。
デコーダの各々は、デコンプレッサ(例えば、デコンプレッササブシステム306)に、圧縮標準規格についての各々のタイプの復号済みデータ(すなわち、シンボル)のストリームを出力する(ステップ604)。このオペレーションは、デコーダが、圧縮済み入力データを展開するための圧縮標準規格と関連付けられたコマンドを生成するための各々のタイプの復号済みデータを出力することを含む。例えば、デコーダの1つは、コマンドタグを含む復号済みデータを出力してもよく、コマンドタグは、単独で使用されることになり、又は、圧縮済み入力データを展開するコマンドを生成するために1つ以上の他のデコーダによって出力された他の情報(例えば、長さ、距離等)と組み合わされることになる。
次に、デコンプレッサは、復号済みデータのストリームから、元のデータを再生成するように、圧縮標準規格を使用してデータを展開するコマンドを生成する(ステップ606)。上述したように、このオペレーションのために、デコンプレッサは、ストリームの一部又は全てからデータのチャンク又は部分(例えば、Wビットの部分)を取得し、コマンドを生成するようにデータのチャンク又は部分を使用し、及び/又は、組み合わせる。例えば、デコンプレッサは、復号済みデータのストリームの1つからコマンドタグを取得してもよく、コマンドタグは、複製コマンドを識別し、複製コマンドによって、エグゼキュータ(例えば、コマンドエグゼキュータ518)が、元のデータの再生成の最後に、元のデータの再生成における先のものからの前の文字列を追加/付加する。このケースでは、デコンプレッサは、ストリームの2つ目から距離(例えば、元のデータ内の後方へのバイトの数)を取得し、及び/又は、ストリームの3つ目から長さ(例えば、文字列内のバイトの数)を取得し、距離及び/又は長さは、コマンドタグと組み合わされることになる。
次に、デコンプレッサは、元のデータを再生成するコマンドを実行する(ステップ608)。上述したように、このオペレーションは、デコンプレッサにおけるエグゼキュータ(例えば、コマンドエグゼキュータ518)が、元のデータの再生成に追加/付加するための文字列及び/又はリテラルを生成及び/又は取得するコマンドを実行することを含む。次に、デコンプレッサは、再生成された元のデータをメモリに記憶する(ステップ610)。
いくつかの実施形態では、少なくとも1つの電子デバイス(例えば、電子デバイス200)は、非一時的なコンピュータ可読記憶媒体に記憶されたコード及び/又はデータを使用して、本明細書で説明する動作の一部又は全てを実行する。より具体的には、電子デバイスは、コンピュータ可読記憶媒体からコード及び/又はデータを読み出し、説明した動作を実行する際にコードを実行し及び/又はデータを使用する。コンピュータ可読記憶媒体は、電子デバイスによって使用されるコード及び/又はデータを記憶する任意のデバイス、媒体又はこれらの組み合わせであってもよい。例えば、コンピュータ可読記憶媒体は、フラッシュメモリ、ランダムアクセスメモリ(例えば、eDRAM、RAM、SRAM、DRAM、DDR4 SDRAM等)、読み出し専用メモリ(ROM)、及び/又は、磁気若しくは光学記憶媒体(例えば、ディスクドライブ、磁気テープ、CD、DVD等)を含む揮発性メモリ及び/又は不揮発性メモリを含むことができるが、これらに限定されない。
いくつかの実施形態では、1つ以上のハードウェアモジュールは、本明細書に説明される動作を実行する。例えば、ハードウェアモジュールは、1つ以上のプロセッサ/コア/中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)チップ、ニューラルネットワークプロセッサ若しくはアクセラレータ、フィールドプログラマブルゲートアレイ(FPGA)、計算ユニット、組み込みプロセッサ、グラフィックスプロセッサ(GPU)/グラフィックスコア、パイプライン、加速処理ユニット(APU)、スパース性監視装置、機能ブロック、及び/又は、他のプログラマブルロジックデバイスを含めることができるが、これらに限定されない。このようなハードウェアモジュールが起動されると、ハードウェアモジュールは、動作の一部又は全てを実行する。いくつかの実施形態では、ハードウェアモジュールは、命令(プログラムコード、ファームウェア等)を実行することによって動作を実行するように構成された1つ以上の汎用回路を含む。
いくつかの実施形態では、本明細書で説明する構造及びメカニズム(例えば、電子デバイス200又はその一部)の一部又は全てを表すデータ構造は、電子デバイスによって読み出すことができ、構造及びメカニズムを含むハードウェアを製造するために直接的又は間接的に使用することができるデータベース又は他のデータ構造を含む非一時的なコンピュータ可読記憶媒体に記憶されている。例えば、データ構造は、Verilog又はVHDL等の高レベル設計言語(HDL)におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。記述は、合成ツールにより読み出されてもよく、合成ツールは、記述を合成して、上述した構造及びメカニズムを含むハードウェアの機能を表すゲート/回路要素のリストを含むネットリストを、合成ライブラリから生成することができる。次に、ネットリストは、配置され、ルーティングされ、マスクに適用される幾何学形状を記述するデータセットが生成され得る。次いで、上述した構造及びメカニズムに対応する1つ以上の半導体回路(例えば、集積回路)を製造するために、様々な半導体製造ステップでマスクが使用され得る。或いは、コンピュータアクセス可能記憶媒体上のデータベースは、必要に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット又はグラフィックデータシステム(GDS)IIデータであってもよい。
本明細書では、変数又は不特定の値(すなわち、値の特定のインスタンスを持たない、値の一般的な説明)は、N等の文字で表されている。同様の文字が本説明の他の箇所で使用され得るが、本明細書で使用されるように、各場合における変数及び不特定の値は、必ずしも同じではなく、すなわち、一般的な変数及び不特定値の一部又は全てに対して、異なる変数量及び値が存在してもよい。言い換えると、この説明において変数及び不特定値を表すために使用されるN及び他の文字は、必ずしも互いに関連するわけではない。
本明細書で使用される「等(et cetra)」又は「等(etc.)」という表現は、「及び/又は」のケース、すなわち、「等」が関連するリスト内の要素のうち「少なくとも1つ」に相当するものを提示することを意図している。例えば、「電子デバイスは、第1の動作、第2の動作等を実行する」という文において、電子デバイスは、第1の動作、第2の動作、及び、他の動作のうち少なくとも1つを実行する。さらに、「等」に関連するリスト内の要素は、一組の実施例の中の単なる例であり、実施例の少なくともいくつかは、いくつかの実施形態では現れない場合がある。
実施形態の上記の説明は、例示及び説明のためにのみ提示されている。これらは、網羅的であること、又は、実施形態を開示された形態に限定することを意図していない。したがって、当業者は、多くの変更及び変形が明らかであろう。さらに、上記の開示は、実施形態を限定することを意図していない。実施形態の範囲は、添付の特許請求の範囲によって定義される。
Claims (23)
- N個のデータのストリームを含む圧縮済み入力データを展開する電子デバイスであって、
前記N個のデータのストリームは、圧縮済みデータを生成するために圧縮標準規格を使用して元のデータを圧縮することと、前記圧縮済みデータをN個のストリームに分離することと、符号化標準規格を使用して前記N個のストリームの各々を符号化することと、によって前記元のデータから生成されており、前記N個のストリームの各々は、前記圧縮済み入力データを展開するために前記圧縮標準規格と関連付けられたコマンドを生成するための各々のタイプのデータを含み、
メモリと、
N個のデコーダ及びデコンプレッサを含む展開エンジンと、を備え、
前記展開エンジンは、
前記圧縮済み入力データを展開するコマンドを受信することと、
前記N個のデコーダの各々において、個別に且つ前記N個のデコーダの他のデコーダと実質的に並列に、前記圧縮済み入力データから前記N個のストリームの各々を復号し、各々のデコーダは、前記圧縮済み入力データを展開するために前記圧縮標準規格と関連付けられたコマンドを生成するための各々のタイプの復号済みデータのストリームを出力することと、
前記デコンプレッサにおいて、前記N個のデコーダによって出力された前記復号済みデータのストリームから、前記元のデータを再生成するために前記圧縮標準規格を使用して前記データを展開するコマンドを生成することと、
前記デコンプレッサにおいて、前記元のデータを再生成するコマンドを実行することと、
前記元のデータを前記メモリに記憶することと、
を行うように構成されている、
電子デバイス。 - 前記N個のデコーダのうち1つ以上のデコーダの各々において前記N個のストリームの各々を復号することは、
前記N個のストリームの各々の指定された位置から、復号参照を生成するための情報を取得することを含み、前記復号参照は、前記圧縮済み入力データから各々のストリームを復号するために前記デコーダによって使用される情報を含む、
請求項1の電子デバイス。 - 前記N個のデコーダのうち少なくとも1つは、2つ以上のサブストリームデコーダ及びストリームコンバイナを含み、
前記2つ以上のサブストリームデコーダの各々は、
前記サブストリームデコーダが配置されている前記デコーダによって復号される前記N個のストリームのうち何れかからデータの個別の部分を取得することと、
個別に且つ前記2つ以上のサブストリームデコーダの他のサブストリームデコーダと実質的に並列に、前記データの個別の部分を復号することと、
前記データの個別の部分と関連付けられた復号済みデータ部分を出力することと、
を行うように構成されており、
前記ストリームコンバイナは、
各々のサブストリームデコーダから前記復号済みデータ部分を受信することと、
前記復号済みデータ部分を組み合わせて前記復号済みデータのストリームを生成することと、
前記復号済みデータのストリームを出力することと、
を行うように構成されている、
請求項1の電子デバイス。 - 前記N個のデコーダのうち少なくとも1つは、前記N個のストリームの各々を復号するために簡易化された復号オペレーションが実行されるセカンダリデコーダである、
請求項1の電子デバイス。 - 前記デコンプレッサは、1つ以上のバッファ及び少なくとも1つのコマンドアセンブラを含み、
前記1つ以上のバッファの各々は、前記N個のデコーダによって出力された前記復号済みデータのストリームの個別のストリームからのデータを記憶し、
前記コマンドアセンブラは、
前記1つ以上のバッファからデータを取得し、
前記データから、前記データを展開するコマンドを生成する、
請求項1の電子デバイス。 - 前記デコンプレッサは、少なくとも2つのコマンドアセンブラを含み、
各々のコマンドアセンブラは、
前記1つ以上のバッファから、及び、バッファに記憶されていない前記N個のデコーダによって出力された復号済みデータのストリームから、データの個別の部分を直接取得することと、
前記データの個別の部分から、前記少なくとも2つのコマンドアセンブラの各々が個別に且つ実質的に並列に前記データを展開するためのコマンドの一部を生成するように、前記コマンドを生成することと、
を行うように構成されている、
請求項5の電子デバイス。 - 前記デコンプレッサは、2つ以上のコマンドを、前記データを集約する集約コマンドに組み合わせるように構成されたオペレーションコンバイナを含む、
請求項5の電子デバイス。 - 前記N個のデコーダによって出力されるデータは、リテラル、コマンドタグ、距離、及び、長さの一部又は全てを含む、
請求項1の電子デバイス。 - 前記展開エンジンは、コマンドヘッダデコーダを含み、
前記コマンドヘッダデコーダは、
前記コマンドを処理すること、及び、前記N個のデコーダの一部又は全てにおけるストリームヘッダデコーダと通信すること、のうち少なくとも1つによって、前記圧縮済み入力データ内の前記N個のストリームの各々の開始位置を判別することと、
前記圧縮済み入力データ内の前記N個のストリームの各々の開始位置を前記N個のデコーダの各々に通信することと、
を行うように構成されている、
請求項1の電子デバイス。 - 前記デコンプレッサは、前記デコンプレッサにおいて前記元のデータを再生成するコマンドを実行する場合に、
メモリ内のデータがコマンドを実行するために使用される場合に、メモリから前記データをプリフェッチすることと、
前記データがメモリからプリフェッチされる間に前記コマンドをバッファすることと、
前記データがメモリから戻されると前記コマンドを実行することと、
を行うように構成されている、
請求項1の電子デバイス。 - 前記デコンプレッサは、指定されたサイズのチャンクで前記元のデータを再生成し、コマンドは、以前のコマンドによって再生成されたチャンク内のデータに依存性を有する場合があり、
前記デコンプレッサは、最後のM個の再生成されたチャンクを履歴バッファに記憶し、前記履歴バッファ内のチャンクは、後続のコマンドにフィードバックされるのに利用可能であり、前記チャンクは、先入れ先出し順序で前記履歴バッファから前記メモリに書き込まれる、
請求項1の電子デバイス。 - 前記符号化標準規格は、プレフィックスコーディング標準規格であり、前記圧縮標準規格は、辞書コーディング圧縮標準規格である、
請求項1の電子デバイス。 - メモリと、N個のデコーダ及びデコンプレッサを有する展開エンジンと、を含む電子デバイスにおいて、N個のデータのストリームを含む圧縮済み入力データを展開する方法であって、
前記N個のデータのストリームは、圧縮済みデータを生成するために圧縮標準規格を使用して元のデータを圧縮することと、前記圧縮済みデータをN個のストリームに分離することと、符号化標準規格を使用して前記N個のストリームの各々を符号化することと、によって前記元のデータから生成されており、前記N個のストリームの各々は、前記圧縮済み入力データを展開するために前記圧縮標準規格と関連付けられたコマンドを生成するための各々のタイプのデータを含み、
前記展開エンジンによって、前記圧縮済み入力データを展開するコマンドを受信することと、
前記N個のデコーダの各々において、個別に且つ前記N個のデコーダの他のデコーダと実質的に並列に、前記圧縮済み入力データから前記N個のストリームの各々を復号することであって、各々のデコーダは、前記圧縮済み入力データを展開するために前記圧縮標準規格と関連付けられたコマンドを生成するための各々のタイプの復号済みデータのストリームを出力する、ことと、
前記デコンプレッサにおいて、前記N個のデコーダによって出力された前記復号済みデータのストリームから、前記元のデータを再生成するために前記圧縮標準規格を使用して前記データを展開するコマンドを生成することと、
前記デコンプレッサにおいて、前記元のデータを再生成するコマンドを実行することと、
前記元のデータを前記メモリに記憶することと、を含む、
方法。 - 前記N個のデコーダのうち1つ以上のデコーダの各々において前記N個のストリームの各々を復号することは、
前記N個のストリームの各々の指定された位置から、復号参照を生成するための情報を取得することを含み、前記復号参照は、前記圧縮済み入力データから各々のストリームを復号するために前記デコーダによって使用される情報を含む、
請求項13の方法。 - 前記N個のデコーダのうち少なくとも1つは、2つ以上のサブストリームデコーダ及びストリームコンバイナを含み、
前記方法は、
前記2つ以上のサブストリームデコーダの各々によって、前記サブストリームデコーダが配置されている前記デコーダによって復号される前記N個のストリームのうち何れかからデータの個別の部分を取得することと、
前記2つ以上のサブストリームデコーダの各々によって、個別に且つ前記2つ以上のサブストリームデコーダの他のサブストリームデコーダと実質的に並列に、前記データの個別の部分を復号することと、
前記2つ以上のサブストリームデコーダの各々によって、前記データの個別の部分と関連付けられた復号済みデータ部分を出力することと、
前記ストリームコンバイナによって、前記2つ以上のサブストリームデコーダの各々から前記復号済みデータ部分を受信することと、
前記ストリームコンバイナによって、前記復号済みデータ部分を組み合わせて前記復号済みデータのストリームを生成することと、
前記ストリームコンバイナによって、前記復号済みデータのストリームを出力することと、をさらに含む、
請求項13の方法。 - 前記N個のデコーダのうち少なくとも1つは、前記N個のストリームの各々を復号するために簡易化された復号オペレーションが実行されるセカンダリデコーダである、
請求項13の方法。 - 前記デコンプレッサは、1つ以上のバッファ及び少なくとも1つのコマンドアセンブラを含み、
前記方法は、
前記1つ以上のバッファの各々によって、前記N個のデコーダによって出力された前記復号済みデータのストリームの個別のストリームからのデータを記憶することと、
前記コマンドアセンブラによって、前記1つ以上のバッファからデータを取得することと、
前記コマンドアセンブラによって、前記データから、前記データを展開するコマンドを生成することと、をさらに含む、
請求項13の方法。 - 前記デコンプレッサは、オペレーションコンバイナを含み、
前記方法は、
前記オペレーションコンバイナによって、2つ以上のコマンドを、前記データを集約する集約コマンドに組み合わせることをさらに含む、
請求項17の方法。 - 前記N個のデコーダによって出力される前記復号済みデータは、リテラル、コマンドタグ、距離、及び、長さの一部又は全てを含む、
請求項13の方法。 - 前記展開エンジンは、コマンドヘッダデコーダを含み、
前記方法は、
前記コマンドヘッダデコーダによって、前記コマンドを処理すること、及び、前記N個のデコーダの一部又は全てにおけるストリームヘッダデコーダと通信すること、のうち少なくとも1つによって、前記圧縮済み入力データ内の前記N個のストリームの各々の開始位置を判別することと、
前記コマンドヘッダデコーダによって、前記圧縮済み入力データ内の前記N個のストリームの各々の開始位置を前記N個のデコーダの各々に通信することと、をさらに含む、
請求項13の方法。 - 前記デコンプレッサにおいて前記元のデータを再生成するコマンドを実行することは、
メモリ内のデータがコマンドを実行するために使用される場合に、前記デコンプレッサによって、メモリから前記データをプリフェッチすることと、
前記デコンプレッサによって、前記データがメモリからプリフェッチされる間に前記コマンドをバッファすることと、
前記デコンプレッサによって、前記データがメモリから戻されると前記コマンドを実行することと、を含む、
請求項13の方法。 - 前記デコンプレッサは、指定されたサイズのチャンクで前記元のデータを再生成し、コマンドは、以前のコマンドによって再生成されたチャンク内のデータに依存性を有する場合があり、
前記方法は、
前記デコンプレッサによって、最後のM個の再生成されたチャンクを履歴バッファに記憶することをさらに含み、
前記履歴バッファ内のチャンクは、後続のコマンドにフィードバックされるのに利用可能であり、前記チャンクは、先入れ先出し順序で前記履歴バッファから前記メモリに書き込まれる、
請求項13の方法。 - 前記符号化標準規格は、プレフィックスコーディング標準規格であり、前記圧縮標準規格は、辞書コーディング圧縮標準規格である、
請求項13の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/544,594 US11561797B2 (en) | 2019-08-19 | 2019-08-19 | Decompression engine for decompressing compressed input data that includes multiple streams of data |
US16/544,594 | 2019-08-19 | ||
PCT/US2020/046633 WO2021034749A1 (en) | 2019-08-19 | 2020-08-17 | Decompression engine for decompressing compressed input data that includes multiple streams of data |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022544763A true JP2022544763A (ja) | 2022-10-21 |
Family
ID=74645859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022508747A Pending JP2022544763A (ja) | 2019-08-19 | 2020-08-17 | 複数のデータのストリームを含む圧縮済み入力データを展開する展開エンジン |
Country Status (6)
Country | Link |
---|---|
US (2) | US11561797B2 (ja) |
EP (1) | EP4018551A4 (ja) |
JP (1) | JP2022544763A (ja) |
KR (1) | KR20220049522A (ja) |
CN (1) | CN114222973A (ja) |
WO (1) | WO2021034749A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114302149B (zh) * | 2021-12-24 | 2023-05-09 | 北京淳中科技股份有限公司 | 一种音视频传输方法、装置及系统 |
CN116661707B (zh) * | 2023-07-28 | 2023-10-31 | 北京算能科技有限公司 | 数据处理方法、装置及电子设备 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2020084C (en) * | 1989-06-29 | 1994-10-18 | Kohei Iseda | Voice coding/decoding system having selected coders and entropy coders |
US5654703A (en) * | 1996-06-17 | 1997-08-05 | Hewlett-Packard Company | Parallel data compression and decompression |
US6862278B1 (en) * | 1998-06-18 | 2005-03-01 | Microsoft Corporation | System and method using a packetized encoded bitstream for parallel compression and decompression |
US6819271B2 (en) * | 1999-01-29 | 2004-11-16 | Quickshift, Inc. | Parallel compression and decompression system and method having multiple parallel compression and decompression engines |
US6885319B2 (en) * | 1999-01-29 | 2005-04-26 | Quickshift, Inc. | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms |
US6459429B1 (en) * | 1999-06-14 | 2002-10-01 | Sun Microsystems, Inc. | Segmenting compressed graphics data for parallel decompression and rendering |
US6985853B2 (en) * | 2002-02-28 | 2006-01-10 | Broadcom Corporation | Compressed audio stream data decoder memory sharing techniques |
KR100648258B1 (ko) * | 2004-08-02 | 2006-11-23 | 삼성전자주식회사 | 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더 |
US7525946B2 (en) * | 2004-08-20 | 2009-04-28 | Nokia Corporation | System and method for decoding signalling messages on FLO HR channels |
US7496589B1 (en) * | 2005-07-09 | 2009-02-24 | Google Inc. | Highly compressed randomly accessed storage of large tables with arbitrary columns |
TW201143305A (en) * | 2009-12-29 | 2011-12-01 | Ibm | Data value occurrence information for data compression |
US8125357B1 (en) * | 2010-03-23 | 2012-02-28 | Sandia Corporation | Deflate decompressor |
US9252805B1 (en) * | 2015-03-28 | 2016-02-02 | International Business Machines Corporation | Parallel huffman decoder |
US9484954B1 (en) * | 2015-09-10 | 2016-11-01 | Intel Corporation | Methods and apparatus to parallelize data decompression |
US10191912B2 (en) * | 2016-02-12 | 2019-01-29 | Oracle International Corporation | Shared decompression engine |
US10390114B2 (en) * | 2016-07-22 | 2019-08-20 | Intel Corporation | Memory sharing for physical accelerator resources in a data center |
US9819359B1 (en) * | 2016-12-11 | 2017-11-14 | Microsoft Technology Licensing, Llc | Multi-symbol, multi-format, parallel symbol decoder for hardware decompression engines |
US10685282B2 (en) * | 2018-07-25 | 2020-06-16 | WaveOne Inc. | Machine-learning based video compression |
-
2019
- 2019-08-19 US US16/544,594 patent/US11561797B2/en active Active
-
2020
- 2020-08-17 WO PCT/US2020/046633 patent/WO2021034749A1/en unknown
- 2020-08-17 JP JP2022508747A patent/JP2022544763A/ja active Pending
- 2020-08-17 KR KR1020227005432A patent/KR20220049522A/ko unknown
- 2020-08-17 CN CN202080056956.7A patent/CN114222973A/zh active Pending
- 2020-08-17 EP EP20855489.9A patent/EP4018551A4/en active Pending
-
2023
- 2023-01-20 US US18/099,621 patent/US20230153111A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20220049522A (ko) | 2022-04-21 |
US11561797B2 (en) | 2023-01-24 |
EP4018551A1 (en) | 2022-06-29 |
US20210055932A1 (en) | 2021-02-25 |
US20230153111A1 (en) | 2023-05-18 |
EP4018551A4 (en) | 2023-08-23 |
WO2021034749A1 (en) | 2021-02-25 |
CN114222973A (zh) | 2022-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230153111A1 (en) | Decompression Engine for Decompressing Compressed Input Data that Includes Multiple Streams of Data | |
KR101074010B1 (ko) | 블록 단위 데이터 압축 및 복원 방법 및 그 장치 | |
US8988257B2 (en) | Data compression utilizing variable and limited length codes | |
US9390099B1 (en) | Method and apparatus for improving a compression ratio of multiple documents by using templates | |
US9479194B2 (en) | Data compression apparatus and data decompression apparatus | |
US7800519B2 (en) | Method and apparatus for compressing and decompressing data | |
US7728742B2 (en) | Method and apparatus for compressing and decompressing data | |
CN108287877B (zh) | 一种rib渲染压缩文件fpga压缩/解压缩系统及硬件解压方法 | |
CN104579356A (zh) | 在存在重现的霍夫曼树的情况下加速解压缩的方法和系统 | |
TW200412733A (en) | Lossless data compression | |
US11424761B2 (en) | Multiple symbol decoder | |
CN113227987A (zh) | 压缩数据以存储在高速缓存存储器层次结构中的高速缓存存储器中 | |
US10707897B1 (en) | Command processor with multiple string copy engines for a decompression system | |
US11593311B2 (en) | Compression system with longest match processing for generating compressed data | |
Kella et al. | Apcfs: Autonomous and parallel compressed file system | |
JPH08328817A (ja) | コンピュータシステム及びそれに用いるデータ伸張器 | |
CN113765854A (zh) | 一种数据压缩方法及服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230720 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240528 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240604 |