JP6970747B2 - 並列復号を可能にする可変長シンボルの符号化 - Google Patents

並列復号を可能にする可変長シンボルの符号化 Download PDF

Info

Publication number
JP6970747B2
JP6970747B2 JP2019526273A JP2019526273A JP6970747B2 JP 6970747 B2 JP6970747 B2 JP 6970747B2 JP 2019526273 A JP2019526273 A JP 2019526273A JP 2019526273 A JP2019526273 A JP 2019526273A JP 6970747 B2 JP6970747 B2 JP 6970747B2
Authority
JP
Japan
Prior art keywords
symbol
fixed
width data
data chunks
decoder
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
Application number
JP2019526273A
Other languages
English (en)
Other versions
JP2019536367A (ja
Inventor
マーティン、アンドリュー、ケネス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2019536367A publication Critical patent/JP2019536367A/ja
Application granted granted Critical
Publication of JP6970747B2 publication Critical patent/JP6970747B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0023Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the signalling
    • H04L1/0028Formatting
    • H04L1/003Adaptive formatting arrangements particular to signalling, e.g. variable amount of bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • H03M7/6023Parallelization
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

本開示は、宛先システムが複数の復号器を使用してシンボル・ストリームを復号することを許すべく送信元システム上で可変長シンボルを有するシンボル・ストリームを符号化することに関する。
コンピュータ・システムは、メモリに記憶される、またはコンピュータ・ネットワークを介して他のコンピュータ・システムに送信されるビットの数を低減すべく圧縮技法を使用する。データ圧縮は、ある数のビットをより少ない数のビットに「圧縮すること」によってデータ・ファイルのサイズを低減する技法である。送信元コーディング、または送信元符号化は、データ・ストリームなどを用いて、コンピュータ・ネットワークを介して伝送されるべきビットの量を低減する圧縮技法である。
データ・ストリーム圧縮フォーマットは、可変長「シンボル」を使用してデータを符号化してよい。シンボル長可変性のため、宛先システムにおいてシンボルを復号するプロセスは、宛先システムが、データ・ストリームにおける次のシンボルの開始位置を特定するためにシンボルを復号することを要求されるため、本来的に順次的である。
送信元システムが複数のシンボル・セットを複数の固定幅データ・チャンクに区分化するアプローチを提供する。
本開示の一実施形態によれば、送信元システムが複数のシンボル・セットを複数の固定幅データ・チャンクに区分化するアプローチが提供される。区分化中、送信元システムは、固定幅データ・チャンクの境界を基準とするシンボル・セットにおけるシンボルに対応するシンボル境界情報を作成する。次に、送信元システムは、シンボル境界情報に基づいて、固定幅データ・チャンクを組み合わせて、多重化されたビット・ストリームにし、多重化されたビット・ストリームを宛先システムに供給する。
以上は、概要であり、このため、必然的に、単純化、一般化、および詳細の省略を含み、したがって、この概要は、単に例示的であり、限定することはまったく意図していないことが、当業者には認識されよう。特許請求の範囲だけによって規定される、本開示の他の態様、発明的な特徴、および利点が、後段に提示される非限定的な詳細な説明において明白となろう。
本開示は、添付の図面を参照することによって、よりよく理解され、かつ本開示の多数の目的、特徴、および利点が当業者に明白になり得る。
本明細書において説明される方法が実装され得るデータ処理システムを示すブロック図である。 本明細書において説明される方法がネットワーク化された環境において動作する多種多様な情報処理システム上で実行され得ることを例示すべく図1に示される情報処理システム環境の拡張を示す図である。 初期のシンボル・ストリームを多重化されたビット・ストリームに変換する送信元シンボル符号器と、複数の復号器を使用して、多重化されたビット・ストリームを復号されたシンボル・ストリームに変換する宛先シンボル復号器とを示す図である。 図3に示されるシンボル符号器およびシンボル復号器を利用する圧縮器および圧縮解除器(decompressor)を示す高レベル図である。 多重化されたビット・ストリームに変換されつつある初期のシンボル・ストリームの段階を示す詳細な図である。 ビット・ストリームを固定ビット幅データ・チャンクに区分化し、かつプル・タイミングを生成するストリーム変換器を示す図である。 固定ビット幅データ・チャンクが宛先固定幅シンボル復号器によって処理される方法と整合性のある順序で複数のビット・ストリームから固定ビット幅データ・チャンクをロードする固定幅マルチプレクサによるアプローチを示す図である。 並列復号のために宛先シンボル復号器に送信される多重化されたビット・ストリームを生成する送信元符号器を示す高レベル・フローチャートである。 シンボル・サブストリームを、固定ビット幅データ・チャンクを有するビット・ストリームに変換し、かつ固定ビット幅データ・チャンクに対応するプル・タイミングを生成すべくストリーム変換器によって行われるステップを示すフローチャートである。 プル・タイミング情報に基づいて、複数のビット・ストリームからの固定ビット幅データ・チャンクを組み合わせて、多重化されたビット・ストリームにすべく固定幅マルチプレクサによって行われるステップを示すフローチャートである。 着信する多重化されたビット・ストリームの並列復号を実行する宛先システムによるステップを示すフローチャートである。 複数の固定幅復号器が、固定ビット幅データ・チャンクを要求し、かつ処理すべくビット・ストリーム・パーティショナとインターフェースをとることの例を示す図である。
本明細書において使用される用語は、特定の実施形態を説明することを目的とするに過ぎず、本開示を限定することは意図していない。本明細書において使用される、単数形、「1つの(a)」、「ある(an)」、および「その(the)」は、文脈がそうでないことを明確に示すのでない限り、複数形も含むことを意図している。「含む」または「含んだ」という用語、あるいはその両方は、本明細書において使用される場合、記載される特徴、整数、ステップ、操作、要素、または構成要素、あるいはその組合せの存在を規定するが、他の1つまたは複数の特徴、整数、ステップ、操作、要素、構成要素、またはそれらのグループ、あるいはその組合せの存在も、追加も排除するものではないものとさらに理解されたい。
添付の特許請求の範囲におけるすべてのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、動作、およびその均等物は、特許請求される他の要素との組合せで機能を実行するための任意の構造、材料、または動作を、明確に特許請求される要素として含むことを意図している。本開示の説明は、例示および説明の目的で提示されてきたが、網羅的であることも、開示される形態における開示に限定されることも意図していない。本開示の範囲および思想を逸脱することなく、多くの変更および変形が当業者には明白となろう。実施形態は、本開示の原理、および実際の応用例を最もよく説明すべく、かつ当業者が、企図される特定の用途に適するよう様々な変更を伴う様々な実施形態のために本開示を理解することを可能にすべく選択され、説明されている。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する1つのコンピュータ可読記憶媒体(または複数のコンピュータ可読記憶媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるように命令を保持し、かつ記憶することができる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または以上の任意の適切な組合せであり得るが、それらには限定されない。コンピュータ可読記憶媒体のより具体的な例の網羅的でないリストは、以下、すなわち、ポータブルコンピュータディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能なプログラマブル読取り専用メモリ(EPROMもしくはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD−ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカード、もしくは命令が記録されている溝の中の隆起構造などの機械的に符号化されたデバイス、および以上の任意の適切な組合せを含む。本明細書において使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または配線を通して伝送される電気信号などの、一時的な信号自体であると解釈されるべきではない。
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされること、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードされることが可能である。ネットワークは、銅伝送ケーブル、伝送光ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含み得る。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(R)、C++、もしくは類似したものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似したプログラミング言語などの従来の手続き型プログラミング言語を含め、1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上で、かつ部分的に遠隔コンピュータ上で、または完全に遠隔コンピュータもしくは遠隔サーバ上で実行され得る。完全に遠隔コンピュータもしくは遠隔サーバ上で実行されるシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む、任意のタイプのネットワークを介してユーザのコンピュータに接続されてよく、または接続は、外部コンピュータに対して行われてよい(例えば、インターネット・サービス・プロバイダを利用してインターネットを介して)。一部の実施形態において、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、本発明の態様を実行するためにその電子回路を個人設定することが可能である。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャートまたはブロック図、あるいはその両方を参照して本明細書において説明される。フローチャートまたはブロック図、あるいはその両方の各ブロック、ならびにフローチャートまたはブロック図、あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装され得ることが理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するための手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。また、これらのコンピュータ可読プログラム命令は、命令を記憶しているコンピュータ可読記憶媒体が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を構成すべく、コンピュータ可読記憶媒体に記憶されて、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに特定の様態で機能するように指示することができるものであってもよい。
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータによって実行されるプロセスを作り出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の部分を表し得る。一部の代替の実装形態において、ブロックに記載される機能は、図に記載される順序を外れて生じてよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてよく、またはそれらのブロックが、関与する機能に依存して、ときとして、逆の順序で実行されてよい。また、ブロック図またはフローチャート、あるいはその両方の各ブロック、ならびにブロック図またはフローチャート、あるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行する、または専用ハードウェア命令とコンピュータ命令の組合せを実行する専用ハードウェア・ベースのシステムによって実装され得ることにも留意されたい。以下の詳細な説明は、必要に応じて本開示の様々な態様および実施形態の定義をさらに説明し、展開して、前段に記載される本開示の概要に概ね沿って行われる。
図1は、本明細書において説明されるコンピューティング動作を実行することができるコンピュータ・システムの簡略化された例である情報処理システム100を示す。情報処理システム100は、プロセッサ・インターフェース・バス112に結合された1つまたは複数のプロセッサ110を含む。プロセッサ・インターフェース・バス112は、プロセッサを、メモリ・コントローラ・ハブ(MCH)としても知られるノースブリッジ115に接続する。ノースブリッジ115は、システム・メモリ120に接続され、プロセッサ110がシステム・メモリにアクセスする手段を提供する。また、グラフィックス・コントローラ125もノースブリッジ115に接続される。一実施形態において、ペリフェラル・コンポーネント・インターコネクト(PCI)Expressバス118がノースブリッジ115をグラフィックス・コントローラ125に接続する。グラフィックス・コントローラ125は、コンピュータ・モニタなどのディスプレイ・デバイス130に接続される。
ノースブリッジ115とサウスブリッジ135が、バス119を使用して互いに接続される。一実施形態において、バスは、ノースブリッジ115とサウスブリッジ135の間の各方向でデータを高速で転送するダイレクト・メディア・インターフェース(DMI)バスである。別の実施形態において、PCIバスが、ノースブリッジとサウスブリッジを接続する。入出力(I/O)コントローラ・ハブ(ICH)としても知られるサウスブリッジ135は、ノースブリッジによって提供される能力と比べてより低速で動作する能力を一般に実装するチップである。サウスブリッジ135は、通常、様々な構成要素を接続するのに使用される様々なバスを提供する。これらのバスは、例えば、PCIバスおよびPIC Expressバス、ISAバス、システム・マネージメント・バス(SMBusもしくはSMB)、またはロー・ピン・カウント(LPC)バス、あるいはその組合せを含む。LPCバスは、しばしば、起動ROM196および「レガシー」入出力デバイス(「スーパーI/O」チップを使用する)などの低帯域幅デバイスを接続する。「レガシー」入出力デバイス(198)は、例えば、シリアル・ポートおよびパラレル・ポート、キーボード、マウス、またはフロッピー・ディスク・コントローラ、あるいはその組合せを含み得る。サウスブリッジ135にしばしば含まれる他の構成要素は、ダイレクト・メモリ・アクセス(DMA)コントローラ、プログラマブル割り込みコントローラ(PIC)、ならびにバス184を使用して、サウスブリッジ135を、ハードディスク・ドライブなどの不揮発性ストレージ・デバイス185に接続するストレージ・デバイス・コントローラを含む。
ExpressCard(R)155は、ホットプラグ可能デバイス(hot-pluggabledevice)を情報処理システムに接続するスロットである。ExpressCard(R)155は、ExpressCard(R)155がユニバーサル・シリアル・バス(USB)とPCI Expressバスの両方を使用してサウスブリッジ135に接続されるので、PCI Express接続とUSB接続の両方をサポートする。サウスブリッジ135は、USBに接続されるデバイスに対するUSB接続を提供するUSBコントローラ140を含む。これらのデバイスは、Webカメラ(カメラ)150、赤外線(IR)受信機148、キーボードおよびトラックパッド144、ならびに無線パーソナル・エリア・ネットワーク(PAN)を可能にするBluetooth(R)デバイス146を含む。また、USBコントローラ140は、マウス、取外し可能な不揮発性ストレージ・デバイス145、モデム、ネットワーク・カード、サービス総合デジタル・ネットワーク(ISDN)コネクタ、ファックス、プリンタ、USBハブなどの他の多種多様なUSB接続デバイス142、ならびに他の多くのタイプのUSB接続デバイスに対するUSB接続をもたらすこともする。取外し可能な不揮発性ストレージ・デバイス145は、USB接続デバイスとして示されるが、取外し可能な不揮発性ストレージ・デバイス145は、Firewire(R)インターフェース、その他などの異なるインターフェースを使用して接続されることも可能である。
無線ローカル・エリア・ネットワーク(LAN)デバイス175が、PCIバスまたはPCI Expressバス172を介してサウスブリッジ135に接続される。LANデバイス175は、通常、情報処理システム100と別のコンピュータ・システムもしくは別のコンピュータ・デバイスとの間で無線通信するのにすべて同一のプロトコルを使用する無線変調技法の米国電気電子技術者協会(IEEE)802.11標準のうちの1つを実装する。光ストレージ・デバイス190が、シリアル・アナログ・テレフォン・アダプタ(ATA)(SATA)バス188を使用してサウスブリッジ135に接続される。シリアルATAアダプタおよびシリアルATAデバイスは、高速シリアル・リンクを介して通信する。また、シリアルATAバスは、サウスブリッジ135を、ハードディスク・ドライブなどの他の形態のストレージ・デバイスに接続することもする。サウンド・カードなどのオーディオ回路160が、バス158を介してサウスブリッジ135に接続される。また、オーディオ回路160は、オーディオ・ライン入力および光デジタル・オーディオ入力ポート162、光デジタル出力およびヘッドホン・ジャック164、内部スピーカ166、および内部マイクロフォン168などの機能を提供することもする。イーサネット(R)・コントローラ170が、PCIバスまたはPCI Expressバスなどのバスを使用してサウスブリッジ135に接続される。イーサネット(R)・コントローラ170は、情報処理システム100を、ローカル・エリア・ネットワーク(LAN)、インターネット、ならびに他の公共コンピュータ・ネットワークおよびプライベート・コンピュータ・ネットワークなどのコンピュータ・ネットワークに接続する。
図1は、1つの情報処理システムを示すが、情報処理システムは、多くの形態をとり得る。例えば、情報処理システムは、デスクトップ、サーバ、ポータブル、ラップトップ、ノートブック、または他のフォームファクタのコンピュータ・システムまたはデータ処理システムの形態をとってよい。さらに、情報処理システムは、携帯情報端末(PDA)、ゲーム・デバイス、現金自動預払機(ATM)、ポータブル電話デバイス、通信デバイス、またはプロセッサと、メモリとを含む他のデバイスなどの他のフォームファクタをとってよい。
図2は、本明細書において説明される方法がネットワーク化された環境において動作する多種多様な情報処理システム上で実行され得ることを例示すべく図1に示される情報処理システム環境の拡張を示す。情報処理システムのタイプは、ハンドヘルド・コンピュータ/モバイル電話210などの小型ハンドヘルド・デバイスから、メインフレーム・コンピュータ270などの大型メインフレーム・システムにまで及ぶ。ハンドヘルド・コンピュータ210の例は、携帯情報端末(PDA)、ならびにMoving Picture Experts Group Layer−3 Audio(R)(MP3)プレーヤ、ポータブル・テレビ、およびコンパクト・ディスク・プレーヤなどのパーソナル・エンターテイメント・デバイスを含む。情報処理システムの他の例は、ペン・コンピュータもしくはタブレット・コンピュータ220、ラップトップ・コンピュータもしくはノートブック・コンピュータ230、ワークステーション240、パーソナル・コンピュータ・システム250、およびサーバ260を含む。図2に個別に示されない他のタイプの情報処理システムが、情報処理システム280によって代表される。図示されるとおり、様々な情報処理システムが、コンピュータ・ネットワーク200を使用して一緒にネットワーク化され得る。様々な情報処理システムを互いに接続するのに使用され得るコンピュータ・ネットワークのタイプは、ローカル・エリア・ネットワーク(LAN)、無線ローカル・エリア・ネットワーク(WLAN)、インターネット、公衆交換電話網(PSTN)、他の無線ネットワーク、ならびに情報処理システムを互いに接続するのに使用され得る他の任意のネットワーク・トポロジを含む。情報処理システムの多くは、ハード・ドライブまたは不揮発性メモリ、あるいはその両方などの不揮発性データ・ストアを含む。図2に示される情報処理システムのうちのいくつかは、別々の不揮発性データ・ストア(サーバ260は、不揮発性データ・ストア265を利用し、メインフレーム・コンピュータ270は、不揮発性データ・ストア275を利用し、情報処理システム280は、不揮発性データ・ストア285を利用する)を示す。不揮発性データ・ストアは、様々な情報処理システムに外部の構成要素であることが可能であり、または情報処理システムの1つに内部の構成要素であることが可能である。さらに、取外し可能な不揮発性ストレージ・デバイス145が、取外し可能な不揮発性ストレージ・デバイス145を情報処理システムのUSBポートまたは他のコネクタに接続することなどの、様々な技法を使用して2つ以上の情報処理システムの間で共有され得る。
図3から図12は、宛先システムが多重化されたビット・ストリームの並列復号を実行するように送信元システム上で可変長シンボルを有するシンボル・ストリームを符号化する情報処理システムを示す。前述したとおり、今日の圧縮されたデータ・フォーマットは、可変長シンボルのストリームから成り、その結果、これらのシンボル・ストリームを復号するプロセスは、本来的に順次的であり、パフォーマンスを向上させるべく復号プロセスを並列化するのが困難である。
この困難を軽減するのに、送信元システムは、宛先システムが並列復号を実行するのを可能にすべく着信するシンボル・ストリーム上で変換ステップを実行する。初期のシンボル・ストリームが逆多重化されて、独立したn個(例えば、4つ)のシンボル・サブストリームにされ、次に、固定ビット幅データ・チャンクに、それらの固定ビット幅データ・チャンクの境界を基準とするシンボルの位置に対応する、対応するプル・タイミング情報を有して区分化される。固定ビット幅データ・チャンクは、次に、プル・タイミング情報に基づいて一緒に多重化され、宛先システムに送信される。
宛先システムは、多重化されたビット・ストリームを固定ビット幅データ・チャンクに分割するビット・ストリーム・パーティショナを使用して、復号器からの要求時に固定ビット幅データ・チャンクを複数の復号器に供給する。複数の復号器は、シンボルを並列に復号し、復号されたシンボルを結合器に供給する。結合器は、シンボルを組み合わせて、復号されたシンボル・ストリームにし、復号されたシンボル・ストリームを後処理に送る。
図3は、初期のシンボル・ストリームを多重化されたビット・ストリームに変換する送信元シンボル符号器と、複数の復号器を使用して、多重化されたビット・ストリームを復号されたシンボル・ストリームに変換する宛先シンボル復号器とを示す図である。
シンボル符号器300が、一実施形態において、可変長を有するシンボルを含む初期のビット・ストリーム310(例えば、Huffman Gzip(R)ストリーム)を受信する。デマルチプレクサ320が、初期のシンボル・ストリーム310を逆多重化して、シンボル・サブストリーム325および330であるシンボル・セットにする。図3の例は、逆多重化された2つのシンボル・サブストリーム325および330を示す。この例において、デマルチプレクサ320は、初期のシンボル・ストリーム310からの第1のシンボルをシンボル・サブストリーム325に記憶し、初期のシンボル・ストリーム310からの第2のシンボルをシンボル・サブストリーム330に記憶し、初期のシンボル・ストリーム310からの第3のシンボルを再びシンボル・サブストリーム325に記憶する、といった具体である(さらなる詳細に関しては、図5および対応する本文を参照されたい)。
ストリーム変換器A335とストリーム変換器B340が、それぞれに対応するシンボル・サブストリームを同時に区分化して、ビット・ストリームA337およびビット・ストリームB342に記憶される固定ビット幅データ・チャンクにする。固定ビット幅データ・チャンクのサイズは、宛先シンボル復号器360における固定幅復号器A370およびB375によって利用されるバッファのサイズ(例えば、16ビット)と合致する。また、ストリーム変換器A335およびストリーム変換器B340は、固定ビット幅データ・チャンクの境界を基準とするシンボルの位置に対応するプル・タイミングA339およびプル・タイミングB344を生成することもする(処理の詳細に関しては、図6および対応する本文を参照されたい)。プル・タイミング情報は、固定幅復号器A370およびB375が、後段で説明されるビット・ストリーム・パーティショナ365から固定ビット幅データ・チャンクを要求する、すなわち、「プルする」時点と合致するように、ストリーム変換器A335およびB340からの固定ビット幅データ・チャンクを適切に編成して、多重化されたビット・ストリーム355にするために、固定幅マルチプレクサ350によって使用される。
シンボル復号器360のビット・ストリーム・パーティショナ365は、多重化されたビット・ストリーム355を固定ビット幅データ・チャンク(シンボル符号器300によって区分化された固定ビット幅データ・チャンクと同一サイズ)に区分化にする。固定幅復号器A370およびB375がまず、それぞれに対応するバッファ(例えば、2つのバッファ)に初期にロードすべくビット・ストリーム・パーティショナ365から固定ビット幅データ・チャンクを要求する。次に、固定幅復号器A370とB375が、それぞれのロードされた固定ビット幅データ・チャンクにおけるシンボルを同時に復号することを開始する。固定幅復号器A370またはB375が、復号されたシンボルのうちの1つが固定幅復号器A370またはB375の第1のバッファの境界に達したときなど、さらなる固定ビット幅データ・チャンクを要求したとき、復号器は、ビット・ストリーム・パーティショナ365から別の固定ビット幅データ・チャンクを要求する(さらなる詳細に関しては、図11〜図12および対応する本文を参照されたい)。
固定幅復号器は、復号されたシンボル・ストリーム380および385を生成し、それらのシンボル・ストリーム380および385を、結合器390がラウンド・ロビン様態で組み合わせて、復号されたシンボル・ストリーム395にし、後処理のための準備が整う。シンボル復号器360が、次に、複数の固定幅復号器を使用して並列復号を実行することによって復号パフォーマンスを向上させる。
図4は、図3に示されるシンボル符号器およびシンボル復号器を利用する圧縮器および圧縮解除器を示す高レベル図である。圧縮器400は、圧縮されていないバイト・ストリーム410を受け取り、初期のシンボル・ストリーム310を作成するデータ符号器420を含む。初期のシンボル・ストリーム310は、前述したとおり、多重化されたビット・ストリーム355を生成するシンボル符号器300に供給される。
圧縮解除器430は、前述したとおり、復号されたシンボル・ストリーム395を生成するシンボル復号器360を含む。データ復号器440が、次に、復号されたシンボル・ストリーム395におけるシンボルを復号して、復元されたバイト・ストリーム450を生成する。
図5は、多重化されたビット・ストリームに変換されつつある初期のシンボル・ストリームの段階を示す詳細な図である。初期のシンボル・ストリーム310は、可変長シンボルS1、S2、S3、S4、S5、S6、S7、S8、S9、S10、S11、S12、S13、S14、S15、およびS16を含む。デマルチプレクサ320が、シンボルを順番に分離して、シンボル・サブストリームA325とシンボル・サブストリームB330にする。見て取ることができるとおり、シンボル・サブストリームA325は、シンボルS1、S3、S5、S7、S9、S11、S13、およびS15を含み、シンボル・サブストリームB330は、シンボルS2、S4、S6、S8、S10、S12、S14、およびS16を含む。
ストリーム変換器A335が、シンボル・サブストリームA325を固定ビット幅データ・チャンクA1、A2、A3、A4、およびA5に区分化し、固定ビット幅データ・チャンクをビット・ストリームA337に記憶する。また、ストリーム変換器A335は、シンボル・サブストリームA325からのシンボルが固定ビット幅データ・チャンクの境界を越える時点のスロットにおいて1を含むプル・タイミングA339を生成することもする(さらなる詳細に関しては、図6および対応する本文を参照されたい)。
同様に、ストリーム変換器B340が、シンボル・サブストリームB330を固定ビット幅データ・チャンクB1、B2、B3、B4、B5、およびB6に区分化し、固定ビット幅データ・チャンクをビット・ストリームB342に記憶する。また、ストリーム変換器B340は、シンボル・サブストリームB330からのシンボルがストリーム変換器B340の固定ビット幅データ・チャンクのうちの1つの境界を越える時点のスロットにおいて1を含むプル・タイミングB344を生成することもする。
次に、固定幅マルチプレクサ350が、ビット・ストリームA337およびビット・ストリームB342からの固定ビット幅データ・チャンクを組み合わせるプロセスを進める。固定幅マルチプレクサ350は、固定幅復号器A370およびB375が、固定幅復号器A370およびB375の2つのバッファの初期ロードを実行するため、固定ビット幅データ・チャンクA1をまずロードし、次にB1をロードし、次にA2、B2をロードする。次に、固定幅マルチプレクサ350は、ビット・ストリームA337またはB342から固定ビット幅データ・チャンクをいつロードすべきかを判定すべくプル・タイミングA339およびB344を解析する(さらなる詳細に関しては、図7および対応する本文を参照されたい)。次に、固定幅マルチプレクサ350は、多重化されたビット・ストリーム355を、後に復号するためにコンピュータ・ネットワークを介してシンボル復号器360に送信する。一実施形態において、固定幅マルチプレクサ350は、多重化されたビット・ストリーム355を、後に取り出すためにストレージ・エリアに記憶する。
図6は、ビット・ストリームを固定ビット幅データ・チャンクに区分化し、かつプル・タイミングを生成するストリーム変換器を示す図である。ストリーム変換器A335が、ビット・ストリームA337を固定ビット幅データ・チャンクA1、A2、A3、A4、およびA5に区分化する。固定ビット幅データ・チャンクは、固定幅復号器がビット・ストリーム・パーティショナ365から同一サイズのデータ・チャンクを要求することになるため(後段で説明される)、固定幅復号器によって利用されるバッファのサイズに対応する。例えば、固定幅復号器A370のバッファ・サイズが16ビットである場合、ストリーム変換器A335は、16ビットの固定ビット幅データ・チャンク・サイズを使用する。
ストリーム変換器A335は、次に、固定ビット幅データ・チャンクの境界を基準としてシンボルS1、S3、S5、S7、S9、S11、S13、およびS15を解析する。シンボルのうちの1つが境界を越えるとき、シンボル復号器360における復号器が、その時点で別の固定ビット幅データ・チャンクを要求することになるため、ストリーム変換器A335は、1をプル・タイミングA339にロードし、このことが理由で、固定幅マルチプレクサ350は、プル・タイミングに基づく順序で固定ビット幅データ・チャンクをロードする(さらなる詳細に関しては、図12および対応する本文を参照されたい)。図6に示される例に基づいて、ストリーム変換器A335は、シンボルを解析し、シンボルごとに以下のステップを実行する。
S1が境界を越えず、0をプル・タイミングA339にロードし、
S3が境界610を越え、1をプル・タイミングA339にロードし、
S5が境界を越えず、0をプル・タイミングA339にロードし、
S7が境界を越えず、0をプル・タイミングA339にロードし、
S9が境界615を越え、1をプル・タイミングA339にロードし、
S11が境界620を越え、1をプル・タイミングA339にロードし、
S13が境界を越えず、0をプル・タイミングA339にロードし、
S15が境界625を越え、1をプル・タイミングA339にロードする。
同様に、ストリーム変換器B340が、ビット・ストリームB342を固定ビット幅データ・チャンクB1、B2、B3、B4、B5、およびB6に区分化する。ストリーム変換器B340は、次に、固定ビット幅データ・チャンクの境界を基準としてシンボルS2、S4、S6、S8、S10、S12、S14、およびS16を解析する。図6に示される例に基づいて、ストリーム変換器B340は、シンボルを解析し、シンボルごとに以下のステップを実行する。
S2が境界を越えず、0をプル・タイミングB344にロードし、
S4が境界610を越え、1をプル・タイミングB344にロードし、
S6が境界610を越え、1をプル・タイミングB344にロードし、
S8が境界610を越え、1をプル・タイミングB344にロードし、
S10が境界を越えず、0をプル・タイミングB344にロードし、
S12が境界620を越え、1をプル・タイミングB344にロードし、
S14が境界610を越え、1をプル・タイミングB344にロードし、
S16が境界を越えず、0をプル・タイミングB344にロードする。
固定幅マルチプレクサ350が、次に、プル・タイミングを使用して、ビット・ストリームA337およびビット・ストリームB342からの固定ビット幅データ・チャンクを特定の順序で挿入する(さらなる詳細に関しては、図7および対応する本文を参照されたい)。
図7は、固定ビット幅データ・チャンクがシンボル復号器360における固定幅復号器A370およびB375によって処理される方法と整合性のある順序で複数のビット・ストリームから固定ビット幅データ・チャンクをロードする固定幅マルチプレクサ350によるアプローチを示す図である
固定幅復号器はまず、図11〜図12に示されるとおり、固定幅復号器のバッファの初期ロードを順番に実行する。このため、固定幅マルチプレクサ350は、チャンクA1をロードし、次にB1をロードし、次にA2をロードし、次にB2をロードすることを、多重化されたビット・ストリーム355のスロット1、2、3、および4に対して行う。
次に、固定幅マルチプレクサ350は、プル・タイミングA339およびB344を順番に調べて、いずれの固定ビット幅データ・チャンクを次にロードすべきかを判定する。プル・タイミングA339とプル・タイミングB344のいずれもそれらの第1のスロットに1を含まず、したがって、固定幅マルチプレクサ350は、何も行わない。プル・タイミングA339は、第2のスロットに1を含み、したがって、固定幅マルチプレクサ350は、多重化されたビット・ストリーム355の第5のスロットにチャンクA3をロードする。また、プル・タイミングB344も、第2のスロットに1を含み、したがって、固定幅マルチプレクサ350は、多重化されたビット・ストリーム355の第6のスロットにチャンクB3をロードする。プル・タイミングA339は、第3のスロットに0を含み、したがって、何もロードされない。プル・タイミングB344は、第3のスロットに1を含み、したがって、固定幅マルチプレクサ350は、多重化されたビット・ストリーム355の第7のスロットにB4をロードする。
続けると、プル・タイミングA339は、第4のスロットに0を含み、したがって、何もロードされない。プル・タイミングB344は、第4のスロットに1を含み、したがって、固定幅マルチプレクサ350は、多重化されたビット・ストリーム355の第8のスロットにB5をロードする。プル・タイミングA339は、第5のスロットに1を含み、したがって、固定幅マルチプレクサ350は、多重化されたビット・ストリーム355の第9のスロットにA4をロードする。プル・タイミングB344は、第5のスロットに0を含み、したがって、何もロードされない。プル・タイミングA339は、第6のスロットに1を含み、したがって、固定幅マルチプレクサ350は、多重化されたビット・ストリーム355の第10のスロットにA5をロードする。また、プル・タイミングB344も、第6のスロットに1を含み、したがって、固定幅マルチプレクサ350は、多重化されたビット・ストリーム355の第11のスロットにB6をロードする。図7に示されるもののような一実施形態において、前述した固定幅データ・チャンクの初期のロードのため、プル・タイミングのすべてが利用されるわけではない。
図8は、並列復号のために宛先シンボル復号器に送信される多重化されたビット・ストリームを生成する送信元符号器を示す高レベル・フローチャートである。処理が800で開始し、ステップ810で、プロセスは、初期のビット・ストリームを逆多重化すべきシンボル・サブストリームの数(n)を判定する(例えば、n=2)。ステップ820で、プロセスは、初期のビット・ストリーム310における第1のシンボルを識別し、第1のシンボルを第1のシンボル・サブストリーム(例えば、シンボル・サブストリーム325)にロードする。
プロセスは、次に、さらなるシンボルが初期のシンボル・ストリーム310にあるかどうかを判定する(判定830)。さらなるシンボルが初期のシンボル・サブストリーム310にある場合、判定830は、次のシンボルを識別し、かつ次のシンボルを次のシンボル・サブストリーム330にロードすべくループバックする「はい」の分岐に分岐する。このループは、初期のシンボル・ストリーム310にさらなるシンボルが存在しなくなるまで、初期のビット・ストリーム310からのシンボルを順次に適切なシンボル・サブストリーム(例えば、325、330、325、330...)にロードし続け、さらなるシンボルが存在しなくなった時点で、判定830は、ループを終了する「いいえ」の分岐に分岐する。
シンボル・サブストリームのそれぞれに関する事前定義されたプロセス840において、プロセスは、シンボル・サブストリームを固定ビット幅データ・チャンクに区分化し、固定ビット幅データ・チャンクをそれぞれに対応するビット・ストリーム337および342にロードする。また、プロセスは、固定ビット幅データ・チャンクの境界を基準とするシンボルの位置に対応する、本明細書において説明されるプル・タイミング情報を生成することもする(処理の詳細に関しては、図9および対応する本文を参照されたい)。
事前定義されたプロセス850において、プロセスは、プル・タイミング情報に基づいて複数のビット・ストリームからの固定ビット幅データ・チャンクを組み合わせて、多重化されたビット・ストリームにする(処理の詳細に関しては、図10および対応する本文を参照されたい)。プロセスは、次に、ステップ860で、多重化されたビット・ストリームをシンボル復号器360に送り、図8の処理は、その後、870で終了する。シンボル復号器360が、次に、多重化されたビット・ストリーム355の並列復号を実行する(さらなる詳細に関しては、図11、図12、および対応する本文を参照されたい)。
図9は、シンボル・サブストリームを、固定ビット幅データ・チャンクを有するビット・ストリームに変換し、かつ固定ビット幅データ・チャンクに対応するプル・タイミングを生成すべくストリーム変換プロセスによって行われるステップを示すフローチャートである。図9に示される例は、シンボル・サブストリームA325を処理するストリーム変換器A335によって行われるステップを示す。本明細書で説明されるとおり、複数のシンボル・サブストリームを変換すべきストリーム変換器の数は、デマルチプレクサ320によって生成されるシンボル・サブストリームの数に基づき、ストリーム変換器のそれぞれが、図9に示されるステップを実行する。一実施形態において、シンボル符号器300は、1つのストリーム変換器を利用して複数のシンボル・サブストリームを変換するなど、変換プロセス中にシンボル・サブストリームより少ないストリーム変換器を利用してよい。
処理は、900で開始し、ステップ910で、プロセスが、シンボル・サブストリームA320を、16ビットなどの固定ビット幅データ・チャンクに区分化し、固定ビット幅データ・チャンクをビット・ストリーム337にロードする。一実施形態において、プロセスは、固定ビット幅データ・チャンクを一時ストレージ・エリアにロードし、固定ビット幅データ・チャンクの各チャンクの境界にフラグを設定する。ステップ915で、プロセスは、ビット・ストリームの始めにポインタを設定し、ステップ920で、プロセスは、ポインタを第1のシンボルの終わりに移動させる。
次に、プロセスは、ポインタが、図6に示される境界615のような固定ビット幅境界を越えたかどうかを判定する(判定930)。プロセスは、宛先システムにおいて、シンボルが、固定ビット幅データ・チャンクと同一サイズであるバッファ境界を越えたとき、固定幅復号器が、ビット・ストリーム・パーティショナ365から別の固定ビット幅データ・チャンクを要求するため、この判定ステップを実行する。
ポインタが境界を越えた場合、判定930は、「はい」の分岐に分岐し、ステップ950で、プロセスは、プル・タイミングA339の第1のスロットに「1」を記憶する。他方、ポインタが固定ビット幅境界を越えていなかった場合、判定930は、「いいえ」の分岐に分岐し、ステップ940で、プロセスは、プル・タイミングA339の第1のスロットに「0」を記憶する。図6を再び参照すると、図6における例が、第1のシンボル「S1」の終わりが境界610を越えないことを示す。
プロセスは、ビット・ストリームA337に処理すべきさらなるシンボルが存在するかどうかを判定する(判定960)。ビット・ストリームA337に処理すべきさらなるシンボルが存在する場合、判定960は、次のシンボルの終わりにポインタを移動させ、かつポインタが境界を越えたかどうかを評価すべくループバックする「はい」の分岐に分岐する。図6を参照すると、プロセスは、境界610を越える、シンボル「S3」の終わりにポインタを移動させる。このループは、ビット・ストリームA337に処理すべきさらなるシンボルが存在しなくなるまで続き、さらなるシンボルが存在しなくなった時点で、判定960は、ループを終了する「いいえ」の分岐に分岐する。一実施形態において、この時点で、シンボルの終わりが、固定幅境界を越えてポインタを移動させなかったため、放出されていないシンボルが存在し得る。この実施形態において、処理は、これらのシンボルを含む別の固定幅チャンクを放出してよい。
ステップ970で、プロセスは、固定幅マルチプレクサ350にビット・ストリームA337(固定ビット幅データ・チャンクを含む)およびプル・タイミングA339を送る。図10に示されるとおり、固定幅マルチプレクサは、複数のストリーム変換器からの複数のビット・ストリームを、ビット・ストリームのそれぞれのプル・タイミングに基づいて組み合わせる。図9の処理は、その後、995における呼出しルーチン(図8を参照されたい)に戻る。
図10は、プル・タイミング情報に基づいて、複数のビット・ストリームからの固定ビット幅データ・チャンクを組み合わせて、多重化されたビット・ストリームにすべく固定幅マルチプレクサによって行われるステップを示すフローチャートである。処理は、1000で始まり、ステップ1010で、プロセスは、初期のデータ・チャンクを多重化されたビット・ストリーム355にビット・ストリーム337から始めて、次にビット・ストリーム342、次にビット・ストリーム337、次にビット・ストリーム342の順にロードする。処理は、宛先の固定幅復号器A370およびB375がどのように初期のロードを実行するかをシミュレートするこの様態で初期のロードを実行する(さらなる詳細に関しては、図12および対応する本文を参照されたい)。
プロセスは、プル・タイミングA339における第1のスロットが、ビット・ストリームA337のシンボルのうちの1つが境界を越えており、このため、宛先システムの固定幅復号器A370が別の固定ビット幅データ・チャンクを要求することを示す「1」を含むかどうかを判定する(判定1020)。プル・タイミングA339における第1のスロットが「1」を含む場合、判定1020は、「はい」の分岐に分岐し、ステップ1030で、プロセスは、ビット・ストリームA337から次の固定ビット幅データ・チャンクをロードする。他方、プル・タイミングA339における第1のスロットは、「1」を含まず、判定1020は、「いいえ」の分岐に分岐する。
次に、プロセスは、プル・タイミングB344における第1のスロットが、ビット・ストリームB342のシンボルのうちの1つが境界を越えており、このため、宛先システムの固定幅復号器B375が別の固定ビット幅データ・チャンクを要求することを示す「1」を含むかどうかを判定する(判定1040)。プル・タイミングB344における第1のスロットが「1」を含む場合、判定1040は、「はい」の分岐に分岐し、ステップ1050で、プロセスは、ビット・ストリームB342から次の固定ビット幅データ・チャンクをロードする。他方、プル・タイミングB344における第1のスロットは、「1」を含まず、判定1040は、「いいえ」の分岐に分岐する。
次に、プロセスは、ビット・ストリームが終了したかどうかを判定する(判定1060)。ビット・ストリームが終了していない場合、判定1060は、ビット・ストリームを処理することを続けるべくループバックする「いいえ」の分岐に分岐する。このループは、ビット・ストリームが終了するまで続き、終了した時点で、判定1060は、ループを終了する「はい」の分岐に分岐する。一実施形態において、処理は、この時点で、1つまたは複数の「ダミー」チャンクを多重化されたビット・ストリーム355にロードすることもする。図10の処理は、その後、1095における呼出しルーチン(図8を参照されたい)に戻る。
図11は、着信する多重化されたビット・ストリームの並列復号を実行する宛先システムによるステップを示すフローチャートである。図3を参照すると、シンボル復号器360が、多重化されたビット・ストリーム355に含まれるシンボルを同時に復号する固定幅復号器A370と、固定幅復号器B375とを含む。前述したとおり、ビット・ストリーム・パーティショナ365が、多重化されたビット・ストリーム355を固定ビット幅データ・チャンクに区分化し、固定幅復号器A370および固定幅復号器B375によって要求されるのに応じて、固定ビット幅データ・チャンクを供給する。
固定幅復号器A110処理が、1100で開始し、ステップ1105で、固定幅復号器A370が、ビット・ストリーム・パーティショナ365から第1の固定ビット幅データ・チャンクを要求し、第1の固定ビット幅データ・チャンクを復号器A370の第1のバッファにロードする(さらなる詳細に関しては、図12および対応する本文を参照されたい)。固定幅復号器B375処理が、1150で同時に開始し、ステップ1155で、固定幅復号器B375が、ビット・ストリーム・パーティショナ365から次の固定ビット幅データ・チャンク(第2のチャンク)を要求し、第2の固定ビット幅データ・チャンクを復号器B375の第1のバッファにロードする。
ステップ1110で、固定幅復号器A370が、次の固定ビット幅データ・チャンク(第3のチャンク)を要求し、そのチャンクを復号器A370の第2のバッファにロードする。同様に、ステップ1160で、固定幅復号器B375が、次の固定ビット幅データ・チャンク(第4のチャンク)を要求し、そのチャンクを復号器B375の第2のバッファにロードする。この時点で、固定幅復号器A370のバッファと固定幅復号器B375のバッファの両方が一杯になっている。
ステップ1115で、固定幅復号器A370が、復号器A370のバッファの始めに復号器A370のポインタを設定し、ステップ1120で、固定幅復号器A370は、第1のシンボルを復号し、かつ復号されたシンボルを復号されたシンボル・ストリームA380にロードし、次のシンボルの始めにポインタを移動させる。固定幅復号器A370は、ポインタが第1のバッファ境界を越え、第2のバッファに達して、ビット・ストリーム・パーティショナ365から別の固定ビット幅データ・チャンクが要求されるべきことを示すかどうかを判定する(判定1125)。ポインタが第1のバッファ境界を越えていない場合、判定1125は、次のシンボルを処理し、かつポインタを移動させるべくループバックする「いいえ」の分岐に分岐する。このループは、ポインタが第1のバッファ境界を越えるまで続き、超えた時点で、判定1125は、ループを終了する「はい」の分岐に分岐する。
固定幅復号器A370が、ビット・ストリーム・パーティショナ365がさらなる固定ビット幅データ・チャンクを含むかどうかを判定する(判定1130)。ビット・ストリーム・パーティショナ365がさらなる固定ビット幅データ・チャンクを含む場合、判定1130は、第2のバッファの内容を第1のバッファに移し(ステップ1135)、かつビット・ストリーム・パーティショナ365から別の固定ビット幅データ・チャンクを要求して、復号器A370の第2のバッファにロードすべく(ステップ1140)ループバックする「はい」の分岐に分岐する。このループは、処理すべきさらなる固定ビット幅データ・チャンクが存在しなくなるまで続き、さらなる固定ビット幅データ・チャンクが存在しなくなった時点で、判定1130は、ループを終了する「いいえ」の分岐に分岐し、固定幅復号器A370処理は、その後、1145で終了する。
固定幅復号器A370が、復号器A370のバッファに復号すべきさらなるシンボルが残っているかどうかを判定する(判定1142)。復号器A370のバッファに復号すべきさらなるシンボルが残っている場合、判定1142は、次のシンボルを復号すべくループバックする「はい」の分岐に分岐する。このループは、復号器A370のバッファに復号すべきさらなるシンボルが残っていなくなるまで続き、さらなるシンボルが残っていなくなった時点で、判定1142は、ループを終了する「いいえ」の分岐に分岐し、固定幅復号器A370処理は、1145で終了する。
固定幅復号器B375が、固定幅復号器A370と同様のステップを同時に実行する。固定幅復号器B375は、ステップ1165で、復号器B375の第1のバッファの始めに復号器B375のポインタを設定し、ステップ1170で、固定幅復号器B375は、第1のシンボルを復号し、かつ復号されたシンボルを復号されたシンボル・ストリームB385にロードし、次のシンボルにポインタを移動させる。固定幅復号器B375は、ポインタが第1のバッファ境界を越え、第2のバッファに達して、ビット・ストリーム・パーティショナ365から別の固定ビット幅データ・チャンクが要求されるべきことを示すかどうかを判定する(判定1175)。ポインタが第1のバッファ境界を越えていない場合、判定1175は、次のシンボルを処理し、かつポインタを移動させるべくループバックする「いいえ」の分岐に分岐する。このループは、ポインタが第1のバッファ境界を越えるまで続き、超えた時点で、判定1175は、ループを終了する「はい」の分岐に分岐する。
固定幅復号器B375が、ビット・ストリーム・パーティショナ365がさらなる固定ビット幅データ・チャンクを含むかどうかを判定する(判定1180)。ビット・ストリーム・パーティショナ365がさらなる固定ビット幅データ・チャンクを含む場合、判定1180は、第2のバッファの内容を第1のバッファに移し(ステップ1185)、かつビット・ストリーム・パーティショナ365から別の固定ビット幅データ・チャンクを要求して、復号器B375の第2のバッファにロードすべく(ステップ1190)ループバックする「はい」の分岐に分岐する。このループは、処理すべきさらなる固定ビット幅データ・チャンクが存在しなくなるまで続き、さらなる固定ビット幅データ・チャンクが存在しなくなった時点で、判定1180は、ループを終了する「いいえ」の分岐に分岐する。
固定幅復号器B375が、復号器B375のバッファに復号すべきさらなるシンボルが残っているかどうかを判定する(判定1192)。復号器B375のバッファに復号すべきさらなるシンボルが残っている場合、判定1192は、次のシンボルを復号すべくループバックする「はい」の分岐に分岐する。このループは、復号器B375のバッファに復号すべきさらなるシンボルが残っていなくなるまで続き、さらなるシンボルが残っていなくなった時点で、判定1192は、ループを終了する「いいえ」の分岐に分岐し、固定幅復号器B375処理は、1195で終了する。
図12は、複数の固定幅復号器が、固定ビット幅データ・チャンクを要求し、かつ処理すべくビット・ストリーム・パーティショナとインターフェースをとることの例を示す図である。
固定幅復号器A370は、第1のバッファ1200と、第2のバッファ1210とを含む。同様に、固定幅復号器B375も、第1のバッファ1220と、第2のバッファ1230とを含む。バッファのサイズは、シンボル符号器300において区分化された固定ビット幅データ・チャンクのサイズ(例えば、各16ビット)と合致する。ビット・ストリーム・パーティショナ365が、多重化されたビット・ストリーム355を受信し、多重化されたビット・ストリーム355を固定ビット幅データ・チャンクに区分化する。図5を参照すると、順に並んだ固定ビット幅データ・チャンクは、A1、B1、A2、B2、A3、B3、B4、B5、A4、A5、およびB6である。
固定幅復号器A370および固定幅復号器B375が、それぞれに対応するバッファに初期にロードすべくビット・ストリーム・パーティショナ365から固定ビット幅データ・チャンクをラウンドロビン順に要求する。このため、固定幅復号器A370が、チャンクA1を受信し、チャンクA1を第1のバッファ1200にロードする。次に、固定幅復号器B375が、チャンクB1を受信し、チャンクB1を第1のバッファ1220にロードする。次に、固定幅復号器A370が、チャンクA2を受信し、チャンクA2を第2のバッファ1210にロードする。次に、固定幅復号器B375が、チャンクB2を受信し、チャンクB2を第2のバッファ1230にロードする。
この時点で、両方の復号器が、可変長シンボルを復号することを開始する準備ができている。本明細書で説明されるとおり、復号器は、復号器が、復号器の第1のバッファと復号器の第2のバッファの間の境界を越えるシンボルを復号するとき、ビット・ストリーム・パーティショナ365からさらなる固定ビット幅データ・チャンクを要求する。これが行われた場合、復号器は、復号器の第2のバッファから内容を復号器の第1のバッファに移し、かつ新たに受信された固定ビット幅データ・チャンクを復号器の第2のバッファにロードする。
図12に示される例に関して、固定幅復号器A370が、シンボルS1を復号することを、固定幅復号器B375がシンボルS2を復号するのと並列に行う。シンボルS1およびS2は第1のバッファ境界を越えていないため、いずれの復号器も、この時点で別の固定ビット幅データ・チャンクを要求することはしない。次に、固定幅復号器A370が、シンボルS3を復号することを、固定幅復号器B375がシンボルS4を復号するのと並列に行う。シンボルS3は、第1のバッファ1200の境界を越えているため、固定幅復号器A370は、ビット・ストリーム・パーティショナ365から固定ビット幅データ・チャンクを要求し、シンボルS4は、第1のバッファ1220の境界を越えているため、固定幅復号器B375もまた、ビット・ストリーム・パーティショナ365から固定ビット幅データ・チャンクを要求する。両方の復号器の出力は、図3に示されるとおり、結合器390に供給され、組み合わされて、復号されたシンボル・ストリーム395にされる。
本開示の特定の実施形態が示され、説明されてきたが、本明細書における教示に基づいて、本開示、および本開示のより広い態様を逸脱することなく、変更および変形が行われてよいことが当業者には明白となろう。したがって、添付の特許請求の範囲は、本開示の真の思想および範囲に含まれるすべてのそのような変更および変形をその範囲内に包含する。さらに、本開示は、添付の特許請求の範囲によってのみ規定されることを理解されたい。導入されるクレーム要素の特定の数が意図される場合、そのような意図は、クレームに明記され、そのような記載がない場合、そのような限定は存在しないことが当業者には理解されよう。非限定的な例に関して、理解の助けとして、添付の特許請求の範囲は、クレーム要素を導入する「少なくとも1つの」および「1つまたは複数の」という導入句の使用を包含する。しかし、同一のクレームが「1つまたは複数の」または「少なくとも1つの」という導入句、および「1つの(a)」または「ある(an)」という不定冠詞を含む場合でも、そのような句の使用は、「1つの(a)」または「ある(an)」という不定冠詞によるクレーム要素の導入が、そのような導入されるクレーム要素を包含する任意の特定のクレームを、1つだけのそのような要素を包含する開示に限定することを暗示するものと解釈されるべきではなく、特許請求の範囲における定冠詞の使用に関しても同じことが当てはまる。

Claims (7)

  1. 情報処理システムによって実施される方法であって、
    複数のシンボル・セットのそれぞれを複数の固定幅データ・チャンクに区分化することと、
    前記複数の固定幅データ・チャンクに対応する1つまたは複数の境界を基準とする前記複数のシンボル・セットに含まれる複数のシンボルのうちの1つまたは複数の位置に対応するシンボル境界情報を作成することと、
    前記シンボル境界情報に基づいて、前記複数の固定幅データ・チャンクを組み合わせて、多重化されたビット・ストリームにすることと、
    前記多重化されたビット・ストリームを宛先システムに供給することと
    を含む、方法。
  2. 前記区分化の前に、シンボル・ストリームを複数のシンボル・サブストリームに分離することであって、前記区分化が、前記複数のシンボル・サブストリームのそれぞれに対して個々に実行され、前記複数のシンボルが、複数の異なるシンボル長に対応する、前記分離することと、
    前記複数の異なるシンボル長のうちの最長のシンボル長に基づいて、前記固定幅データ・チャンクの固定幅サイズを判定することと
    をさらに含む、請求項1に記載の方法。
  3. 前記複数のシンボル・サブストリームのうちの選択されたシンボル・サブストリームに関して、
    前記1つまたは複数の固定幅データ・チャンクのうちの選択された固定幅データ・チャンクに対応する前記複数のシンボルのうちの1つを選択することと、
    前記選択されたシンボルが、前記選択された固定幅データ・チャンクに対応する前記1つまたは複数の境界のうちの選択された境界を越えるかどうかを判定することと、
    前記選択されたシンボルが前記選択された境界を越えると判定することに応答して、前記シンボル境界情報の前記選択されたスロットに第1のインジケータを記憶することと、
    前記選択されたシンボルが前記選択された境界を越えないと判定することに応答して、前記シンボル境界情報の選択されたスロットに第2のインジケータを記憶することと
    をさらに含む、請求項2に記載の方法。
  4. 前記組み合わせることが、
    前記複数の固定幅データ・チャンクの一部分を前記多重化されたビット・ストリームに前記複数のシンボル・サブストリームのそれぞれに基づく順序でロードする初期ロードを実行することと、
    前記初期ロードの後に、前記選択されたスロットが前記第1のインジケータを含むかどうかを判定することと、
    前記選択されたスロットが前記第1のインジケータを含むと判定することに応答して、前記選択されたシンボル・サブストリームに対応する選択された固定幅データ・チャンクを前記多重化されたビット・ストリームにロードすることと
    をさらに含む、請求項3に記載の方法。
  5. 前記区分化の前に、前記方法が、
    圧縮されていないバイト・ストリームを前記複数のシンボルに符号化することと、
    前記複数のシンボルを前記シンボル・ストリームに含めることと
    をさらに含む、請求項2に記載の方法。
  6. 情報処理システムであって、
    1つまたは複数のプロセッサと、
    前記プロセッサのうちの少なくとも1つに結合されたメモリと、
    前記メモリに記憶されたコンピュータ・プログラム命令のセットであって、
    複数のシンボル・セットのそれぞれを複数の固定幅データ・チャンクに区分化する動作、
    前記複数の固定幅データ・チャンクに対応する1つまたは複数の境界を基準とする前記複数のシンボル・セットに含まれる複数のシンボルのうちの1つまたは複数の位置に対応するシンボル境界情報を作成する動作、
    前記シンボル境界情報に基づいて、前記複数の固定幅データ・チャンクを組み合わせて、多重化されたビット・ストリームにする動作、および
    前記多重化されたビット・ストリームを宛先システムに供給する動作
    を実行するために前記プロセッサのうちの少なくとも1つによって実行される前記コンピュータ・プログラム命令のセットと
    を含む、情報処理システム。
  7. 情報処理システムに、
    複数のシンボル・セットのそれぞれを複数の固定幅データ・チャンクに区分化することと、
    前記複数の固定幅データ・チャンクに対応する1つまたは複数の境界を基準とする前記複数のシンボル・セットに含まれる複数のシンボルのうちの1つまたは複数の位置に対応するシンボル境界情報を作成することと、
    前記シンボル境界情報に基づいて、前記複数の固定幅データ・チャンクを組み合わせて、多重化されたビット・ストリームにすることと、
    前記多重化されたビット・ストリームを宛先システムに供給することと
    を含む動作を実行させる、コンピュータ・プログラム。
JP2019526273A 2016-11-18 2017-10-27 並列復号を可能にする可変長シンボルの符号化 Active JP6970747B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/356,468 2016-11-18
US15/356,468 US10367604B2 (en) 2016-11-18 2016-11-18 Encoding variable length symbols to enable parallel decoding
PCT/IB2017/056682 WO2018091994A1 (en) 2016-11-18 2017-10-27 Encoding variable length symbols to enable parallel decoding

Publications (2)

Publication Number Publication Date
JP2019536367A JP2019536367A (ja) 2019-12-12
JP6970747B2 true JP6970747B2 (ja) 2021-11-24

Family

ID=62146204

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019526273A Active JP6970747B2 (ja) 2016-11-18 2017-10-27 並列復号を可能にする可変長シンボルの符号化

Country Status (6)

Country Link
US (2) US10367604B2 (ja)
JP (1) JP6970747B2 (ja)
CN (1) CN109937537B (ja)
DE (1) DE112017005823T5 (ja)
GB (1) GB2571666B (ja)
WO (1) WO2018091994A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10367604B2 (en) 2016-11-18 2019-07-30 International Business Machines Corporation Encoding variable length symbols to enable parallel decoding
JP2022074807A (ja) * 2020-11-05 2022-05-18 株式会社日立製作所 ファイルストレージ及びコンピュータシステム
US11791838B2 (en) 2021-01-15 2023-10-17 Samsung Electronics Co., Ltd. Near-storage acceleration of dictionary decoding
CN112821987B (zh) * 2021-04-16 2021-08-31 苏州华兴源创科技股份有限公司 信道编码中的数据处理方法、计算机设备及存储介质
JP2023007760A (ja) 2021-07-02 2023-01-19 キオクシア株式会社 圧縮装置及び伸張装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717394A (en) * 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
US5583500A (en) * 1993-02-10 1996-12-10 Ricoh Corporation Method and apparatus for parallel encoding and decoding of data
US5502493A (en) 1994-05-19 1996-03-26 Matsushita Electric Corporation Of America Variable length data decoder for use with MPEG encoded video data
US5491480A (en) 1994-05-25 1996-02-13 Industrial Technology Research Institute Variable length decoder using serial and parallel processing
US5910783A (en) 1997-06-02 1999-06-08 Intel Corporation Pseudo barrel shifting for entropy encoding
US6449394B1 (en) * 1999-07-09 2002-09-10 Sarnoff Corporation Packing variable-length code bits at fixed positions
SE9903191D0 (sv) * 1999-09-08 1999-09-08 Pacesetter Ab Compression and decompression coding scheme and apparatus
TW200929895A (en) * 2007-12-19 2009-07-01 Univ Nat Sun Yat Sen Encode system and decode system of conversion between variable-length code and fixed-length code and method thereof
US8805852B2 (en) 2009-03-02 2014-08-12 International Business Machines Corporation Automatic query execution plan management and performance stabilization for workloads
IL205528A (en) * 2009-05-04 2014-02-27 Storwize Ltd A method and system for compressing logical information objects for storage
US8520958B2 (en) * 2009-12-21 2013-08-27 Stmicroelectronics International N.V. Parallelization of variable length decoding
US8817771B1 (en) * 2010-07-16 2014-08-26 Marvell International Ltd. Method and apparatus for detecting a boundary of a data frame in a communication network
JP5811775B2 (ja) * 2011-11-01 2015-11-11 富士通株式会社 可変長符号化装置及び可変長復号装置
US8824569B2 (en) * 2011-12-07 2014-09-02 International Business Machines Corporation High bandwidth decompression of variable length encoded data streams
CN103248449B (zh) 2012-02-02 2017-11-28 中兴通讯股份有限公司 并行数据的码元定界方法及装置
US8949699B1 (en) 2012-08-29 2015-02-03 Xilinx, Inc. Circuit for forward error correction encoding of data blocks across multiple data lanes
US9100042B2 (en) 2013-06-20 2015-08-04 International Business Machines Corporation High throughput decoding of variable length data symbols
JP6580683B2 (ja) * 2015-01-29 2019-09-25 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 通信装置および通信方法
US10367604B2 (en) 2016-11-18 2019-07-30 International Business Machines Corporation Encoding variable length symbols to enable parallel decoding

Also Published As

Publication number Publication date
WO2018091994A1 (en) 2018-05-24
CN109937537A (zh) 2019-06-25
GB2571666B (en) 2020-02-12
GB201908207D0 (en) 2019-07-24
JP2019536367A (ja) 2019-12-12
US10721019B2 (en) 2020-07-21
US10367604B2 (en) 2019-07-30
US20180145791A1 (en) 2018-05-24
CN109937537B (zh) 2023-05-30
DE112017005823T5 (de) 2019-08-08
GB2571666A (en) 2019-09-04
US20190253179A1 (en) 2019-08-15

Similar Documents

Publication Publication Date Title
JP6970747B2 (ja) 並列復号を可能にする可変長シンボルの符号化
JP4475820B2 (ja) 拡張可能な埋込み型のパラレルデータを圧縮及び圧縮解除するためのシステムと方法
US8933824B1 (en) Hardware decompression of deflate encoded data with multiple blocks
US9715539B2 (en) Efficient context save/restore during hardware decompression of DEFLATE encoded data
US10127082B2 (en) Distributed realization of digital content
CN103975533A (zh) 可变长度编码的数据流的高带宽解压
CN112514264A (zh) 数据压缩、解压方法及相关装置、电子设备、系统
JP7425526B2 (ja) 動的ハフマン表生成のためのハードウェア領域を節約するためのラッチカウントの削減
US10191912B2 (en) Shared decompression engine
US20190349000A1 (en) Run-length base-delta encoding for high-speed compression
US8595448B2 (en) Asymmetric double buffering of bitstream data in a multi-core processor
US20100020885A1 (en) Picture processing via a shared decoded picture pool
CN107534446B (zh) 用于高带宽lz77解压缩的asic块
CN117044114A (zh) 用于多维分段媒体数据的拆分器和合并器功能
CN104518850B (zh) 将参考模板同步到数据流的方法和信息处理系统
US20100023708A1 (en) Variable-length code (vlc) bitstream parsing in a multi-core processor with buffer overlap regions
KR20150078866A (ko) 데이터 처리 장치 및 데이터 처리 방법
WO2016107174A1 (zh) 多媒体文件数据的处理方法及系统、播放器和客户端
US20160293169A1 (en) Audio Compression Using Vector Field Normalization
KR20050015930A (ko) 디멀티플렉서 애플리케이션 프로그래밍 인터페이스
EP3216187A1 (en) Compression of graphical commands for remote display
CN112799993A (zh) 一种i2s通信的实现方法和装置
US20130042091A1 (en) BIT Splitting Instruction
WO2024051465A1 (zh) 差分文件的还原方法及电子设备
US11747980B1 (en) Decompression of a file

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190823

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210601

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: 20211026

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211029

R150 Certificate of patent or registration of utility model

Ref document number: 6970747

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150