JP2005502955A - データをバッファから抽出し且つバッファへロードする装置及び方法 - Google Patents

データをバッファから抽出し且つバッファへロードする装置及び方法 Download PDF

Info

Publication number
JP2005502955A
JP2005502955A JP2003527586A JP2003527586A JP2005502955A JP 2005502955 A JP2005502955 A JP 2005502955A JP 2003527586 A JP2003527586 A JP 2003527586A JP 2003527586 A JP2003527586 A JP 2003527586A JP 2005502955 A JP2005502955 A JP 2005502955A
Authority
JP
Japan
Prior art keywords
data
storage device
data storage
buffer
destination
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.)
Granted
Application number
JP2003527586A
Other languages
English (en)
Other versions
JP3860574B2 (ja
Inventor
メイシー,ウィリアム,ジュニア
ホリマン,マシュー
デベス,エリック
チェン,イェン−クアン
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2005502955A publication Critical patent/JP2005502955A/ja
Application granted granted Critical
Publication of JP3860574B2 publication Critical patent/JP3860574B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's

Abstract

データをバッファから抽出し且つバッファへロードする装置及び方法が開示される。本方法は、データアクセス命令の実行に応じてデータバッファからのデータの選択を含む。データバッファは、複数のデータ記憶装置を含み、その1つ又はそれ以上は初期的に選択されたデータを有する。従って、複数のデータ記憶装置はビットレベルでアドレス可能な単一のアドレス空間を構成する。選択されたデータがデータバッファのソースデータ記憶装置から次のデータ記憶装置に及ぶときには、ソースデータ記憶装置からからの選択されたデータの一部分は、次のデータ記憶装置からの選択されたデータの一部分と連結され、隣接するユニットとして選択されたデータを構成する。最後に、一旦、選択されたデータが形成されると、選択されたデータは宛先データ記憶装置内に記憶される。

Description

【0001】
発明の分野
本発明は、一般的には、コンテンツの符号化及び復号の分野に関連する。解くに、本発明は、データをバッファから抽出し且つバッファへロードすることに関連する。
【0002】
発明の背景
メディア応用は、10年以上もの間マイクロプロセッサの開発を駆り立ててきた。実際には、近年の多くの計算的な向上は、民生用部分内で支配的に、しかし、娯楽の企業部分、向上された教育及び通信目的でも、メディア応用により駆り立てられてきている。それにも関わらず、将来のメディア応用は、より高い計算の要求を、要求する。この結果、今日のパーソナルコンピュータ(PC)体験は、使用するのが簡単であると共にオーディオ−ビジュアル効果が豊かであり、そして、更に重要なことに、計算は通信を併合する。
【0003】
従って、オーディオとビデオの再生と共に画像の表示は、現在の計算装置についてのますます人気のある応用となってきている。残念ながら、この種の応用について必要とされるデータの量は、非常に大きい傾向にある。この結果、ネットワーク帯域幅とともに、計算能力、メモリ及びハードディスク記憶の増加は、長く且つより高い品質のオーディオとビデオとともに、長く且つより高い品質の画像の生成と使用を、容易にする。しかしながら、これらの応用により使用されるコンテンツは、一般的には、記憶空間を節約し且つ伝送帯域幅を減少させるために圧縮されたフォーマットで記憶される。
【0004】
この結果、オーディオ及びビデオのような、コンテンツを扱う応用は、オーディオ及びビデオデータにより課される実再生制約を受ける。オーディオ及びビデオデータのようなコンテンツは、一般的には、ストリーム化され、伝送されたコンテンツは受信されるにつれて再生される。ストリーミングを可能とするために、データは、ネットワーク帯域幅制限を克服し且つ生成要求に合わせるために、伝送前に圧縮される。この結果、オーディオ及びビデオは、ネットワークを介してストリーム化され又は、局所的な装置に記憶されているかどうかに関わらず、実時間で復号されねばならない。更に、計算的な要求は、オーディオ品質とビデオ解像度とフレームサイズが増加するにつれて、増加する。従って、ビデオの逆圧縮は、最も計算的に要求のきびしい要求の人気のある応用の1つである。
【0005】
残念ながら、現在は、サービス構成要素の帯域幅と品質のコストを安定に維持しながら、計算コストの減少の間に不均衡がある。そのような不均衡は、応用の将来を形作ることが予見される。この結果、常に増加するクラスの新たなアルゴリズムと応用は、計算的な複雑さをトレードオフすることを目的としているので、改善されたオーディオ−ビデオ品質、より小さなビットレート、扱いが簡単なツール等となる。従って、この不均衡は、新たな圧縮標準、新たな処理アルゴリズム及びエンド対エンド応用のパラダイムとなり、ここでは、種々の領域の多くの動作は、符号化及び暗号化から伝送、後処理及び管理の、マルチメディアの適切な配信を保証することが必要である。
【0006】
動画専門家グループ(MPEG)、MPEG−1、MPEG−2及びMPEG−4及オーディオ及びビデオ圧縮と共に、ジョイントフォトグラフィックグループ(JPEG)及びJPEG2000画像圧縮のような、一般的に使用される圧縮アルゴリズムは、2つの技術を組み合わせる。第1に、データは、変換で処理され、そして、量子化される。そして、圧縮は、知覚的に且つ有意なデータを移動することにより達成される。この技術は、元のデータが逆圧縮により正確に回復されないので、損失がある(ロッシー)と呼ばれる。第1ステップの結果は、更にエントロピー符号化技術を使用して圧縮される。エントロピー符号化は、元のデータシンボル(この場合には、量子化された変換係数)を、元のデータシンボルの発生の頻度に依存する長さのシンボルで置きかえる。最もよくある元のデータシンボルは、短いエントロピー符号化シンボルで置きかえられ、そして、最も少ないものは長いエントロピー符号化シンボルで置きかえられる。この結果、エントロピー符号シンボルの長さは、それらのビット長で変わる。
【0007】
画像復号ステップは、符号化ステップと逆の順序で実行される。エントロピー復号は変換された復号等へ進む。残念ながら、異なるシンボルリンクからの結果のデータ依存性により、エントロピー復号ではデータの並行性がほとんどない。種々の構造命令は、一般的には、変換動作に効果的であるが、しかし、エントロピー復号には使用されない傾向にある。しかしながら、構造命令が多くのレジスタ及び新たな命令と共に増加するにつれて、エントロピー復号とメディア再生に要求される時間の部分は増加する。従って、エントロピー復号の改善は、変換復号の改善に遅れている。
【0008】
従って、上述の現在ある1つ又はそれ以上の制限を克服する必要がある。
【0009】
本発明は、例によりそして、限定するのではなく、添付の図面の図で示される。
【0010】
詳細な説明
データをバッファから抽出し且つバッファへロードする方法及び装置が開示される。本方法は、データアクセス命令の実行に応じてビットアクセス可能なデータバッファからのデータの選択を含む。データが選択されるデータバッファは、複数のデータ記憶装置を含み、その1つ又はそれ以上は初期的に選択されたデータを有する。従って、複数のデータ記憶装置はビットレベルでアドレス可能な単一のアドレス空間を構成する。選択されたデータがデータバッファのソースデータ記憶装置から次のデータ記憶装置に及ぶときには、ソースデータ記憶装置からからの選択されたデータの一部分は、次のデータ記憶装置からの選択されたデータの一部分と連結され、隣接するユニットとして選択されたデータを構成する。最後に、一旦、選択されたデータが形成されると、選択されたデータは宛先データ記憶装置内に記憶される。
【0011】
以下の記載は、説明の目的のためであり、本発明の徹底的な理解を提供するために、多くの特定の詳細が述べられる。しかしながら、当業者には、本発明は、これらの特定の詳細なしても実行されうることは明らかである。更に、以下の記載は、例を提供し、そして、添付の図面は、説明の目的のための種々の例を示す。しかしながら、これらの例は、単に本発明の全ての可能な実行の徹底的なリストを提供するよりはむしろ本発明の例を提供することが意図されているので、限定する意味に解釈すべきではない。他の例では、良く知られた構造及び装置は、本発明の細部を曖昧にすることを避けるために、ブロック図の形式で示されている。
【0012】
実施例では、本発明の方法は、機械実行可能な方法で実現される。命令は、その命令でプログラムされた汎用又は特別目的のプロセッサに本発明のステップを実行させるのに使用されることが可能である。代わりに、本発明のステップは、本方法を実行するハードワイアの論理を含む特別のハードウェア構成要素により又は、プログラムされたコンピュータ構成要素とカスタムのハードウェア構成要素の組み合わせにより、実行されうる。
【0013】
本発明は、本発明に従った処理を実行するためにコンピュータ(又は、他の電子装置又は、システム)をプログラムするために使用されうる命令が記憶された機械又はコンピュータ読出し可能な媒体を含むコンピュータプログラムプロダクトとして提供されてもよい。コンピュータ読出し可能な媒体は、限定はされないが、フレキシブルディスケット、光ディスク、コンパクトディスク読出し専用メモリ(CD−ROM)、光磁気ディスク、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能なプログラマブル読出し専用メモリ(EPROM)、電気的消去可能なプログラマブル読出し専用メモリ(EEPROM)、磁気又は光カード、フラッシュメモリ、等を含んでもよい。
【0014】
システム
図1を参照すると、本発明の記憶フォーマットが実行されるコンピュータシステム200の主な構成要素を示すブロック図が記載されている。コンピュータシステム200は、ディスプレイコントローラ220を有する。ディスプレイコントローラ220は、例えば、ビデオグラフィックアダプタ(VGA)、スーパーVGA(SVGA)等である。ディスプレイコントローラ120は、例えば、CRT、フラットパネルディスプレイ等である、ディスプレイ290のための画素データを発生する。画素データは、ディスプレイ290のリフレッシュの特徴のレート(例えば、60Hz、72Hz、75Hz等)及び表示画像の水平及び垂直解像度(たと640x480画素、1024x768画素、800x600等)で発生される。ディスプレイコントローラ220は、ディスプレイ290の特徴レートで画素データの連続するストリームを発生する。
【0015】
ディスプレイコントローラ220は、表示メモリ222も設けられ、これは、テキスト、グラフィックス、又は、ディスプレイ290への出力のためのビデオモードの、画素データを記憶する。ホストCPU210は、バス270を通してディスプレイコントローラ220に結合され、そして、ディスプレイ290についての表示画像が変わるときに、表示メモリ222の内容が更新される。バス270は、例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス等を含みうる。システムメモリ280は、ホストCPU210に結合されてもよい。
【0016】
ハードウェアコンテンツ復号器230は、例えば、動画専門家グループ(MPEG)ビデオデータのような、ビデオ、オーディオ、画像及び音声データ(”コンテンツ”)を復号するために設けられている。MPEGビデオデータは、MPEGビデオデータ源(例えば、CD−ROM等)から受信される。代わりに、コンテンツ復号器230は、例えば、システムメモリ280に記憶された従来のソフトウェア復号器282として実装される。一旦、復号されると、復号されたビデオデータは、システムメモリ270へ又は、表示メモリ222へ出力される。
【0017】
コンピュータシステム200は、更に、コンピュータシステム200により発生された、画像、オーディオ、ビデオ及び音声データのような、コンテンツデータを符号化する責任のあるコンテンツ符号化器240を含む。一旦、コンテンツがコンテンツ符号化器240により符号化されると、符号化されたコンテンツは、システムメモリ280内に記憶され又は、示されていない宛先装置へ、CPU210により伝送され/ストリームされる。代わりに、コンテンツ符号化器240は、例えば、システムメモリ280内に記憶されうる従来のソフトウェア符号化器284とし実装される。
【0018】
残念ながら、コンピュータシステム200のコンテンツ符号化器240と共にコンテンツ復号器230の両方が、例えば、ハフマン又は算術符号化及び復号のような、上述のエントロピー符号化及び復号中に、ほとんど又は全く並列を使用しない。実際には、異なるシンボル長の結果からのデータ依存性により、エントロピー符号化及び復号ではデータの並列性はほとんどない。多くの単一命令複数データ(SIMD)命令は、(上述のように)変換動作について非常に効果的であるが、そのような命令は、エントロピー符号化及び復号ではほとんど使用されない。
【0019】
更に加えて、SIMD命令の能力が大きなレジスタと新たな命令と共に増加すると、メディア再生応用での符号化と共にエントロピー復号に要求される時間の部分が増加する。従って、エントロピー復号の改善は、変換復号の改善より遅れている。可変長符号シンボルを伴なうエントロピー圧縮法の例は、限定はされないが、ハフマン符号化と算術符号化を含む。そのように、当業者は、(記載されるように)本発明の教示は、ソフトウェア又はハードウェアコンテンツ復号器/符号化器のいずれかで実行されうることは認識するであろう。
【0020】
図2を参照すると、図2は、本発明の第1の実施例に従って、コンピュータシステム200内で使用されうるコンテンツ復号器250の構成の一部分を示すブロック図である。記載された実施例では、例えばMPEGデータ、JPEGデータ等である、コンテンツビットストリーム252は、例えば、MPEGデータ源、JPEGデータ源等のようなコンテンツ源から受信され、そして、次のように、復号されそして逆圧縮される。コンテンツ復号器250は、MPEG復号器として構成されているが、提供された実施例は例であり、そして、限定する意味に解釈するべきではない。
【0021】
従って、コンテンツ復号器250は、エントロピー復号ブロック300で、MPEGビットストリーム252を受信する。しかしながら、従来のエントロピー復号器と対照的に、エントロピー復号ブロック300は、図3Aを参照して以下に更に詳細に記載するように、受信されたビットストリーム252を復号するために要求される時間の量を最小化するために、ビットレベルのアドレス可能なバッファを使用する。従って、エントロピー復号ブロック300は、受信されたビットストリーム252についての復号シンボル長と共に復号シンボルを決定し、これは、ランレングス復号ブロック256に供給される。
【0022】
RLDブロック244は、逆量子化ブロック(IQブロック)262に供給される量子化されたブロック258を発生するために、エントロピー復号ブロック300から、復号シンボルと復号シンボルを受信する。IQブロック262は、量子化されたブロック258に逆量子化を実行し、量子化されたブロックについての周波数スペクトル264を発生する。次に、逆離散コサイン変換(IDCTブロック)266は、周波数スペクトル264を使用して、量子化されたブロック258の逆離散コサイン変換を実行し、復号されたブロック268を発生する。
【0023】
一旦発生されると、復号ブロック268は、動き補償ブロック(MCB)270へ供給される。動き補償は、そして、MCB270により実行され、MPEGデータ272が再生成される。最後に、カラー変換ブロック274は、ピクチャ280を生成するために、MPEGデータ272を、赤、緑、青(RGB)カラー空間へ変換する。しかしながら、図1に示されたコンピュータシステム200のハードウェアコンテンツ復号器230又はソフトウェア復号器282のような従来のコンテンツ復号器と対照的に、コンテンツ復号器は、図3Aを使用して更に説明する、エントロピー復号ブロック300を使用する。
【0024】
図3Aを参照すると、エントロピー復号ブロック300は、データバッファ302を使用し、これは複数のデータ記憶装置304(304−1,...304−N)を含む。一実施例では、データバッファ302は、128ビットのMMXレジスタを含むビットレベルのアドレス可能レジスタを使用する。しかしながら、当業者は、データバッファ302のデータ記憶装置はレジスタに限定されずそして一般的には、ディジタルデータを記憶することができる任意のデータ記憶装置を含む。そのように、ビットストリームデータ250は受信されるので、ビットストリームデータ250はデータバッファ302の複数のデータ記憶装置304内にロードされる。
【0025】
残念ながら、ビットストリーム250は、可変長の符号化特徴を使用する。上述のように、エントロピー符号化は、最もよくある元のシンボルは、短いエントロピー符号化シンボルで置きかえられ、そして、最も少ないものは長いエントロピー符号化シンボルで置きかえられるように、元のデータシンボルを、元のデータシンボルの発生の頻度に依存する長さの符号化シンボルで置きかえる。このように、変化する長さの符号化シンボルを捕捉するために、データが、データバッファから選択されねばならない。
【0026】
従って、変化する長さの符号化シンボルを捕捉するための遅延は、従来の復号器内でのエントロピー符号化中のボトルネックを発生する。そして、エントロピー復号ブロック300は、ビットレベルのアドレス可能なバッファを使用し、これは、変化する長さの使用されている符号化シンボルを補足するために、データバッファ302の種々のデータ記憶装置の間に及ぶデータの部分を捕捉することができる。そして、エントロピー復号ブロックは、データバッファ302のソースデータ記憶装置304内のデータの一部分を選択しそして、エントロピー復号ブロック300のレジスタファイル340内の配置されうる、図3Bに示された宛先データ記憶装置342内にデータのその部分を記憶しうる。
【0027】
従って、本発明の教示を使用して、プロセッサ330は、データ検出命令に応じて、宛先データ記憶装置内の先導するものの位置を決定しうる。一旦、この位置が決定されると、プロセッサ330は、一実施例では、エントロピー復号ブロック300のキャッシュ350内のシフトテーブル360(360−1,...,360−N)を使用する。そして、プロセッサ330は、インデックスとして、先導するものの位置を使用してシフト値を得るためにシフトテーブル360を読み出す。一旦、シフト値が決定されると、宛先データ記憶装置342は、例えば、シフト値に従って、右にシフトされる。一旦、右にシフトされると、プロセッサは、シフトされたデータ記憶装置342の値に基づいて復号シンボルを決定するために、キャッシュ350の復号テーブル352(352−1,...,352−N)から復号シンボルを読み出す。
【0028】
最後に、復号シンボル長が、右にシフトされた宛先データ記憶装置342の値を使用して復号テーブル352から読み出される。従って、ビットレベルのアドレス可能なバッファを使用して、エントロピー復号ブロックは、最小のオーバーヘッドで、データ記憶装置内の符号語又はシンボルを決定することができる。言いかえると、従来のエントロピー復号器と対照的に、エントロピー復号ブロック300は、しばしばコンテンツ復号器内のエントロピー復号中の実質的に大きな遅延となる、先導するものの位置を決定するために従来のエントロピー復号器により使用される多くのテストを避ける。更に、一旦、符号化シンボルが決定されると、一実施例では、符号語長に基づいて、次の符号化シンボル又は符号語の開始位置を示すために、ポインタが使用される。
【0029】
図3Aを参照すると、代わりの実施例では、キャッシュ350は復号テーブル352のみを有しそして、シフトテーブル360を使用しない。従って、上述の実施例では、復号テーブルは、レベル又は大きさ値、次のゼロでない値へのランレングス値と、符号語の長さを含みうる。従って、ビデオストリームデータの部分がデータバッファ302内のデータ記憶装置304から読み出されるときには、データの選択された部分からルックアップデータを抽出するために、データの選択された部分に、マスクが適用されうる。
【0030】
このように、ルックアップデータを使用して、復号テーブル352は、復号テーブル352の1つ内で対応するエントリの1つが検出されるまで、質問される。一実施例では、ルックアップデータのビット長が、符号語長よりも短いときには、符号化テーブルは無効な応答を戻す。従って、追加のビットがルックアップデータに追加され、そして、有効なエントリが戻されるまで復号テーブル352に適用される。従って、一旦位置が決定されると、データの選択された部分は、復号テーブル352により供給される、レベル/大きさ値、ランレングス値及び符号語値を使用して復号される。更に、一旦、符号化シンボルが決定されると、一実施例では、符号語長に基づいて、次の符号化シンボル又は符号語の開始位置を示すために、ポインタが使用される。
【0031】
図4を参照すると、図4は、データバッファ302のデータ記憶装置304内のデータ変換を示す。示された例では、データ記憶装置304内のデータは、初期的にリトルエンディアン順序で記憶される。データの初期順序付けは、一般的には、それぞれの計算構造内のデータの構成の方法に基づいている。残念ながら、最も一般的なビデオフォーマットの、MPEGは、データを、ビッグエンディアン順序で構成する。この結果、MPEGデータの復号は、リトルエンディアン順序からビッグエンディアン順序への変換を必要とする。代わりに、データは、初期的に、ビッグエンディアン順序で記憶され得、それにより変換を避ける。
【0032】
従って、データ記憶装置304内のデータは、データ変換コマンドの実行に応じて逆転される。そして、示された実施例では、バイトの順序は、各サイズのレジスタについて、単一命令により逆転される。しかしながら、代わりの方法では、バイトの順序は、単一命令で、32ビットレジスタ内で逆転される。従って、そのバイトが32ビットレジスタ内でスワップされた32ビットワードは、より大きなレジスタにロードされる。一旦ロードされると、これらの32ビットワードの順序は、単一命令で逆転される。
【0033】
図5A−5Dを参照すると、図5A−5Dは、ソースデータ記憶装置(R0)304−1と第2のデータ記憶装置(R1)304−2を使用する、エントロピー符号化ブロック300のデータバッファ302を示す。示されたように、データバッファ302の種々のデータ記憶装置304は、ビットレベルのアドレス能力を提供し、これは、コンテンツデータの符号化と復号の両方を促進するために使用され得る。従って、R0データ記憶装置304−1は、初期的に、ビットストリームデータがロードされる。一旦、R0データ記憶装置が容量を満たされると、R1データ記憶装置304−2は、ビットストリームが記憶される。そして、記載された実施例では、R0とR1データ記憶装置の両方は、読み出されていないビットストリームデータを含む。
【0034】
図5Bを参照すると、図5Bは、R0とR1データ記憶装置を示し、ビット境界でアクセスされるデータを示す。この結果、ビットは、データバッファ302内でアクセスするためのデータの量を定義する単位である。従って、データ記憶装置のアクセスアドレスの間の最小の差は、1ビットである。従って、記載された実施例では、データバッファ302は、複数のビットレベルのアドレス可能なレジスタを含む。しかしながら、当業者は、データを保持できる他の形式のハードウェアも、ビットレベルのアドレス可能なデータ記憶装置として使用されうることは理解されよう。
【0035】
従って、R0データ記憶装置304−1の初期ビットアドレス306は、現在のデータ314が選択されるところに設けられ、そして、読み出されるビット数に基づいて、要求されるデータの最後の位置308が計算される。更に、一実施例では、データ記憶装置は、それぞれのデータ記憶装置内及びビットストリームデータの各部分がアクセスされたかどうかを決定するための、フラグ310をを有する。そして、R0データ記憶装置304−1を参照して、R0データ記憶装置304−1は、読み出されたデータ312、現在のデータ314及び、読み出されていないデータ316を含む。
【0036】
図5Cを参照すると、図5Cは、要求されたデータが複数のデータ記憶装置(RからR)に及ぶときのデータバッファ302の実施例を示す。そのような場合が検出されたときには、レジスタ合併動作が実行される。従って、レジスタ合併動作の実行に応じて、R0データ記憶装置からの現在のデータが読み出されそして、R1データ記憶装置からの現在のデータが読み出され隣接するユニットとして宛先データ記憶装置へコピーされる。記載された実施例では、宛先データ記憶装置は、図3Aに示されたエントロピー復号ブロック300のレジスタファイル340内に含まれうるレジスタである。しかしながら、宛先データ記憶装置は、ディジタルデータを保持できる任意の形式のハードウェアでもよい。
【0037】
代わりの実施例では、データ範囲の検出に応じて、R0データ記憶装置内の必要のない又は読み出されたデータは、R1データ記憶装置へ及ぶデータについての空間を作るためにシフトして出されうる。一旦、読み出されていないデータがR0データ記憶装置からシフトして出されると、R1データ記憶装置内の現在のデータは、R0データ記憶装置内にシフトされうる。従って、一旦、現在のデータがR0データ記憶装置内に含まれると、データは隣接するユニットとして宛先データ記憶装置にコピーされる。一旦、コピーされると、R0データ記憶装置内の全てのデータは、必要のない読み出されたデータであり、そして従って、R0データ記憶装置には、新データがロードされることが可能である。
【0038】
図5Dを参照すると、図5Dは、データバッファ302が環状バッファとして機能する実施例を示す。そして、一旦、現在のデータ範囲が、R0データ記憶装置304−1とR1データ記憶装置304−2から選択されると、R0データ記憶装置304−1は読み出されていないデータをもはや有しない。従って、図5Dに示されたように、R0データ記憶装置内の全てのデータは、アクセスされ、これはフラグ310をセットする結果となる。更に、記載された実施例では、入力データストリームからR0データ記憶装置内へのデータのロードを可能とするために、R0データ記憶装置304−1の位置は、バッファ302の最後に移動される。従って、記載された実施例では、データバッファは、環状バッファとして機能する。言いかえると、提供された実施例では、次のアクセスの全てのデータは、R1データ記憶装置304−1から選択される。
【0039】
しかしながら、幾つかの実施例では、データアクセスは、幾つかのビットは一度以上アクセスされるというように重なりあい、一方、他の場合には幾つかのビットは全くアクセスされない。そして、記載された実施例では、データバッファ302内でアクセスされる望ましいデータのアドレスを規定する方法が、第1ビットのアクセスが発生するレジスタ番号形式より構成される、第1レジスタIDを受信することにより提供される。この方法は、レジスタ内のビット位置により与えられるビットアドレス、アクセスされるビット数及び、(多くの場合には)アクセスビットの範囲が初期ソースレジスタを越えて伸びる場合に幾つかのアクセスデータが配置される第2レジスタ、も含む。
【0040】
記載された実施例では、現在のデータの開始ビット位置(306)と抽出されるべきビット数は、(示されていない)2つの追加のレジスタ内に保持されている。しかしながら、代わりの実施例では、アクセスされるべきデータの仕様は、アクセスされるデータの第1ビットアドレス306及びビット数の代わりに、第1ビットアドレス306と最後のビットアドレス308を受信することにより提供される。最後のビットアドレス308は、最後のビットを保持するレジスタ(R304−2)に関連しうるが、しかし、第1のレジスタ(R304−1)に関連してもよく、この場合には、第1ビットアドレスとアクセスされるべきビット数の和に等しい。後者の場合には、最後のアドレス308は、最後のビットアドレス308が第1のレジスタ(R304−1)の最高のアドレスを超える場合には、他のレジスタ(R304−2)内の位置を参照しうる。この場合には、バッファ内に単一のアドレス空間が効率的に存在する。
【0041】
そして、アクセスされたデータは、図3Bに示されたように、宛先レジスタ342へ転送される。宛先レジスタ342又は、データ記憶装置304は、データバッファ302のデータ記憶装置304と同じ又は異なる形式のレジスタでもよい。一実施例では、アクセスされたデータは、レジスタ内の最下位又は最小の桁位置にロードされる(図3B参照)。更に、データアクセスが要求されるときには、レジスタ合併命令を要求し、データは連結され、それにより、データの隣接するユニットが宛先データ記憶装置342にロードされる。
【0042】
多くの場合には、データバッファ304からアクセスされるデータは、宛先データ記憶装置342を満たさない。この場合には、宛先データ記憶装置342は、ゼロ伸張され、アクセスされるデータの一部ではない宛先レジスタ342内のビットがゼロにされる。宛先データ記憶装置342のゼロ伸張は、一実施例では、データバッファ内のデータから宛先データ記憶装置342にロードするロード命令により実行される(図3B参照)。更に、フラグ310がセットされるときには、それぞれのデータ記憶装置内の全てのデータがアクセスされたことを示し、追加のデータをデータバッファにロードする命令が実行されるときには、フラグは、リセットされる。そして、プロセッサは、フラグをセットするためにロードされるデータを待たない。
【0043】
しかしながら、代わりの実施例では、レジスタ内の全てのデータがアクセスされたことを決定することは、レジスタ内の最も高いアドレス(レジスタ内のMSB位置)と、アクセスされた第1のビット306のアドレス(ビット位置)とアクセスされるべきビット数の和を比較することにより実行される。そして、この和が、最も高いアドレス(MSB位置)よりも大きい場合には、全てのデータがレジスタからアクセスされた。従って、上述の実施例では、レジスタ内の全てのデータがアクセスされたときに、ビットストリーム252からのデータは、レジスタ内にロードされそして、現在バッファ内にある他のデータの後に新たにロードされるデータがアクセスされるように、レジスタはバッファの最後に移動される。
【0044】
最後に、ビットアドレス可能なデータバッファ302は、ループ又はロール関数のようなソフトウェアの最適化を扱う。そして、ループは、レジスタ内の全てのデータがアクセスされたかどうかを毎シンボルの復号後に検査する必要がないように、記録される。従って、ループが静的に開かれる回数は、ビットバッファアクセスの最大数により割られたレジスタビット長(バッファレスのもののレジスタ数)に等しい。例えば、ビットバッファ長が128ビットであり且つバッファ内のレジスタ数が2である場合には、バッファ内の128ビットに等しい、128x(2−1)であることが保証される。従って、アクセスされる最大数が17ビットである場合には、バッファは、7要求に等しい、128を17で割った後にデータが不足しない。従って、バッファは7回開かれることが可能である。
【0045】
図6を参照すると、図6は、本発明の更なる実施例に従ったコンピュータシステム100内で使用される、コンテンツ符号化器400の構成要素を示すブロック図を示す。コンテンツ符号化器400は、初期的に、画像、オーディオ及びビデオのような、402コンテンツデータを受信する。従って、画像ストリーム402内のデータの各ブロックについて、符号化器400は、符号化されたブロックを生成するために5つのステップを実行する。第1の段階では、画像間の時間的な冗長度を利用するために、動き推定ブロック404により、動き推定が実行される。従って、動き推定ブロック406は、離散コサイン変換(DCTブロック408)に供給される、コンテンツデータ402のマクロブロック内の各ブロックについて、動きベクトルを発生する。
【0046】
そして、DCTブロック408は、元のブロック化データをとり、そして、周波数スペクトルを見つけるためにブロックに離散コサイン変換を実行する。この周波数スペクトル410は、量子化ブロック412へ供給される。量子化ブロック412は、受信された周波数スペクトルの多くの小さな値をゼロにし、それにより、周波数スペクトル内の明確な周波数値の数を減少させる。この量子化ステップは、符号化処理の”損失のある”ステップであり、量子化の程度は量子化マトリクスと量子化係数を使用して規定される。
【0047】
量子化に続いて、量子化ブロック412から受信された量子化されたブロック414を使用して、ランレングス及びエントロピー符号化が実行される。ランレングス符号化ブロック(RLCブロック416)は、更にコンテンツデータ402を圧縮するために、非ゼロ要素とそれらの間のゼロの数を符号化する。最後に、エントロピー符号化ブロック450は、符号化されたビットストリーム490を発生するために、受信されたランレングス符号化されたデータから、可変長符号と可変長符号サイズを決定する。しかしながら、従来のエントロピー符号化器と対照的に、エントロピー符号化ブロック450は、例えば、図7Aと7Bに示されたメモリ装置内の符号化されたデータシンボルの記憶に先立ち、符号化されたデータシンボルを記憶するために、上述のように、ビットレベルアドレス可能なデータバッファ480を使用する。
【0048】
図7Aを参照すると、図7Aは、本発明の例示の実施例に従った、エントロピー符号化ブロックを示す。エントロピー符号化ブロック450は、符号化されるべき値を読み又は受信する、マイクロプロセッサ452を含む。MPEGの場合には、2つの値が受信され、これは、符号化されるレベルとランレングスを含む。得られた値を使用して、プロセッサは、受信されたデータの可変長符号と可変長符号サイズを決定するために、ルックアップテーブル462を使用する。そして、一旦、可変長符号シンボルと可変長符号サイズが決定されると、エントロピー符号化ブロック450は、データバッファ480内に符号化されたシンボルを記憶する。そして、符号化シンボルは、データバッファ480が一杯になるまで、データ記憶装置482(482−1,...,482−N)内で符号化される。
【0049】
しかしながら、上述の技術を使用して、データバッファは、複数のデータ記憶装置を使用するが、単一のアドレス空間を有し、データバッファのデータ記憶装置内にデータ494の記憶が完了するときに、追加のデータ又は符号化シンボルが、(482−1内に記憶された)第1の部分と第2の部分498に分離されそして、図7Bに示されたように次のデータ記憶装置482−2内に供給される。従って、データ記憶装置482は、ポインタを使用し、これは、データが記憶されうる中の次のビット位置を追跡する。更に、一旦、データ記憶装置が満たされると、データ記憶装置シンボルは、メモリへ移動され、そして、上述のように、データ記憶装置は、追加の符号化されたデータシンボルを記憶するのに使用されるように、データバッファ内の最終位置へ移動され、一方他のデータはメモリに書き込まれる。
【0050】
一実施例では、バッファ内で同じ位置を有するように、データバッファ480内のレジスタ482は名称が付される。従って、データバッファが宛先レジスタによりアクセスされるときには、データバッファ480内のデータ記憶レジスタ482−1内のデータは、宛先レジスタ内に記憶され、一方、データバッファ480のデータロードレジスタ482−2は、メモリからロードされる。記憶レジスタがデータバッファ480内にデータを書き込む場合には、データは、データバッファ480のデータ記憶レジスタ482−1に記憶され、一方、データロードレジスタ482−2内のデータはメモリへロードされる。従って、物理的なレジスタは、例えば、図5Dに示されたように、データバッファへの連続する書き込み又は記憶を可能とするためにレジスタへロードすることと記憶することの間で切り換えられる。本発明の教示を実行するための手続き的な方法が、記載される。
【0051】
動作
図8を参照すると、図8は、例えば図3Aに示された、ビットレベルアドレス可能なバッファ302からデータを検索する方法500を示すフローチャートを示す。処理ブロック520で、データアクセス命令が実行されるかどうかが決定される。データアクセス命令の実行に応じて、処理ブロック522で、データがデータバッファ302から選択される。次に、処理ブロック524で、データは、データバッファ302内のソースデータ記憶装置304−1から次のデータ記憶装置304−2に及ぶかどうかが決定される(図5C参照)。データの範囲が検出されたときに、処理ブロック538が実行される。そのようでない場合には、制御フローは処理ブロック560へ進む。処理ブロック538で、ソースデータ記憶装置304−1から選択されたデータの部分と次のデータ記憶装置304−2から選択されたデータの部分は、連結されて隣接するユニットとして選択されたデータを構成する。最後に、処理ブロック560で、選択されたデータは、宛先データ記憶装置342内に記憶される。
【0052】
図9を参照すると、図9はデータバッファ302内の入力ビットストリームデータをロードする追加の方法502を示すフローチャートを示す(図5A−5D参照)。そして、処理ブロック504で、データロード命令が実行されたかどうかが決定される。データロード命令の実行に応じて、処理ブロック506で、データは、データバッファ内で複数のデータ記憶装置に及ぶデータバッファ302内にロードされる。従って、上述のように、データバッファは、一実施例では128ビットレジスタの、複数のデータ記憶装置を使用する。更に、上述のレジスタ合併機能は、データバッファが単一のアドレス空間として動作することを可能とし、これは、データがデータバッファ内の1つ又はそれ以上のレジスタに及ぶことを可能とする。
【0053】
一旦、データバッファがロードされると、処理ブロック508が実行される。処理ブロック508では、データ変換命令が実行されたかどうかが決定される。従って、データ変換命令の実行に応じて、処理ブロック510で、データバッファ302のデータ記憶装置304内で、データの順序が逆転される(図4参照)。一旦、完了すると、制御フローは図8の処理ブロック520へ分岐する。上述の実施例では、データ変換はリトルエンディアン順序からビッグエンディアン順序への変換を含む。しかしながら、データ変換は、記載された例には限定されない。
【0054】
図10を参照すると、図10は、データ範囲を検出する追加の方法526を示すフローチャートを示す(図5C)。従って、処理ブロック528で、データバッファ302内のデータ記憶装置304−1を示す、装置値が受信される。一旦、受信されると、処理ブロック530で、ソースデータ記憶装置304−1から読み出されるビット数を示す、ビット値が受信される。最後に、処理ブロック532で、ソースデータ記憶装置304−1内の要求されたデータのアドレス306が受信される。最後に、処理ブロック534で、要求されたデータ314の1つ又はそれ以上のビットが、データバッファ302で次のデータ記憶装置304−1内にあるかどうかが決定される。
【0055】
上述のように、データ範囲を決定する技術は、ソースデータ記憶装置304−1の残りの容量を、要求されたデータ314のビット数を示す受信されたビット値に対して比較することを含む。そして、ビット数が残りの容量を越えるときに、データは次のデータ記憶装置に及ぶ。代わりに、要求されたデータについての開始アドレス306と要求されたデータについての停止アドレス308が受信され、開始アドレス306と停止アドレス308が異なるデータ記憶装置を参照するときに、データスパンが検出される。データスパンが検出されたときに、制御フローは、図8の処理ブロック538に分岐する。そのようでなければ、制御フローは、図8の処理ブロック560へ分岐する。
【0056】
図11を参照すると、図11は選択されたデータを記憶する追加の方法590を示すフローチャートを示す(図3B参照)。そして、処理ブロック592で、宛先データ記憶装置のアドレスが受信される。一旦、受信されると、処理ブロック594で、データは、最小桁位置(LSB)で開始する、宛先データ記憶装置342へ記憶される。最後に、処理ブロック569で、宛先データ記憶装置342の空の最大桁ビット位置(MSB)のゼロ伸張が、空の位置をゼロに設定することにより達成される。
【0057】
図12を参照すると、図12は、1つ又はそれ以上のデータ記憶装置に及ぶデータの連結又はレジスタ合併を実行する追加の方法540を示すフローチャートを示す(図5C参照)。処理ブロック542で、データ記憶装置304−1は、データバッファ302から選択される。処理ブロック544で、選択されたデータ記憶装置内の全てのデータがアクセスされたかどうかが決定される。一実施例では、この決定は、図5A−5Cに示されたアクセスフラグ310に基づいている。代わりの実施例では、この決定は開始データポインタ306と終了データポインタ308が同じレジスタ内にあるかどうかをアクセスすることによりなされる。そのような場合でないときには、データスキャンが検出される。選択されたデータ記憶装置内の全てのデータがアクセスされるときには、処理ブロック546で、データアクセスフラグがセットされる。最後に、処理ブロック548で、処理ブロック542−546が、データバッファ内の各データ記憶装置について繰返される。
【0058】
図13を参照すると、図13は、一旦、データ記憶装置内のデータがアクセスされたときに、データバッファのデータ記憶装置内にデータをロードする追加の方法550を示す(図5A−5D)。そして、処理ブロック552で、データ記憶装置304−1がデータバッファ302から選択される。次に処理ブロック554で、データアクセスフラグ310がセットされているかどうかが決定される。データアクセスフラグ310がセットされているときには、処理ブロック556で、データは、選択されたデータ記憶装置内に、追加の入力データストリームデータと共にロードされる。最後に、処理ブロック558で、処理ブロック552−556が、データバッファ内の各データ記憶装置について繰り返される。
【0059】
図14を参照すると、図14は、一旦、宛先データ記憶装置342内に記憶されたデータを復号する追加の方法562を示すフローチャートを示す(図3B参照)。処理ブロック564で、宛先データ記憶装置342内のデータは復号される。次に、処理ブロック580で、宛先データ記憶装置内のデータは、復号されたデータで上書きされる。
【0060】
図15を参照すると、図15は、図14の処理ブロック564の宛先データ記憶装置内のデータを復号する追加の方法566を示すフローチャートを示す。処理ブロック568で、データ検出命令が実行されたかどうかが決定される。データ検出命令の実行に応じて、処理ブロック570で、例えば、図3Bに示されたように、先導するものの位置344が宛先データ記憶装置342内で決定される。次に、処理ブロック572で、シフト値を決定するインデックスとして先導するものの位置を使用して、シフト値が、シフトテーブル360から読み出される。処理ブロック574で、宛先データ記憶装置342は、シフト値に従って、シフトされる。
【0061】
次に、処理ブロック576で、復号シンボルは、インデックスとしてシフトされた宛先データ記憶装置の値に基づいて、ルックアップテーブル352から読み出される(図3A参照)。最後に、処理ブロック578で、復号シンボル長が、インデックスとしてシフトされた宛先データ記憶装置も使用して、シンボル長ルックアップテーブル352から読み出される。そして、データ検出命令は、受信されたビットストリーム内の符号語を検出するために使用される、先導するものの位置を決定するために、従来のエントロピー復号器により使用される、多くの条件テストを避ける。従って、一旦、符号語が検出されると、ポインタが、データバッファ302のそれぞれのデータ記憶装置304内の次の符号語の先頭をマークするために、使用される。
【0062】
代わりに、図3Aを参照して上述したように、キャッシュ350は、符号語長値、レベル/大きさ値及びランレングス値を含む復号テーブル352へ制限される。そして、記載された実施例では、マスクが、マスクされた/ルックアップデータを決定するために、宛先データ記憶装置342に適用される。一旦、マスクされたデータが決定されると、マスクされたデータは、キャッシュ350内の復号テーブル352へアクセスするために使用される。要求されたデータがテーブル内に含まれる場合には、符号語長値、レベル/大きさ値及びランレングス値は、テーブルからの単一のデータ読出しから抽出される。そのようでなく、データがテーブル内に含まれていない場合には、符号語読出しは、データがテーブル内にないことを示す。そして、処理は、望ましいデータの位置が特定されるまで、キャッシュ350の残りのテーブル内で繰り返される。
【0063】
図16を参照すると、図16は、例えば、図7Aと7Bに示されたように、ビットレベルアドレス可能データバッファ480内にデータを記憶する方法600を示す。処理ブロック630で、データロード命令が実行されたかどうかが決定される。データロード命令の実行に応じて、処理ブロック640で、ロードされるべきデータ492のデータサイズ494が、データバッファ480内の宛先データ記憶装置482−1の残りの容量484を越えるかどうかが決定される。そのような場合には、処理ブロック670が実行される。
【0064】
そのようでない場合には、データは、データバッファ480の宛先データ記憶装置482内にロードされ又は記憶される。処理ブロック670では、データ494は、第1の部分496と第2の部分498に分割される。一旦、分割されると、処理ブロック672で、第1の部分496は、宛先データ記憶装置482−1内にロードされる。次に、データの第2の部分498は、データバッファの次のデータ記憶装置内にロードされる(図7B参照)。最後に、処理ブロック676で、宛先データ記憶装置482−1内の、データは、例えば、メモリ装置490へ移動される。
【0065】
図17を参照すると、図17は、ビットレベルアドレス可能なデータバッファ480内のデータの記憶の前の、データの符号化のための追加の方法602を示す。処理ブロック604で、データ418は、ソースデータ記憶装置から選択される。一旦、選択されると、処理ブロック606で、選択されたデータが符号化される。次に、処理ブロック618で、符号化されたデータは、ソースデータ記憶装置に記憶される。最後に、処理ブロック620で、データロード命令の実行が、データバッファの1つ又はそれ以上のデータ記憶装置内に符号化されたデータをロードするために、実行される。一旦、実行されると、制御フローは、図16の処理ブロック630へ分岐する。
【0066】
図18を参照すると、図18は、データロード命令を実行するのに応じて実行される、追加の方法632を示すフローチャートを示す。処理ブロック634では、データバッファ480の宛先データ記憶装置482内のデータの開始アドレス位置が受信される。次に、処理ブロック636で、宛先データ記憶装置482内に記録されるべきデータのビット数を示すデータサイズ値が受信される。最後に、処理ブロック638で、データが初期的に配置されたソースデータ記憶装置アドレスが受信される。一旦、受信されると、制御フローは、図16の処理ブロック640へ分岐する。
【0067】
図19を参照すると、図19は、ロードされるべきデータのデータサイズが図7B内に示されたデータバッファ480内の宛先装置482−1の残りの容量を越えるかどうかを決定する追加の方法642を示すフローチャートを示す。従って、処理ブロック644で、データバッファ480内の現在の宛先データ記憶装置482−1の残りの容量484が決定される。次に、処理ブロック646で、受信されたデータサイズ494が残りの容量484よりも大きいかどうかが決定される。そのような場合には、処理ブロック640が実行される。そのようでない場合には、制御フローは、図16の処理ブロック650に分岐する。
【0068】
処理ブロック648では、データサイズ494が宛先記憶装置482−1の残りの容量484を超える。従って、データは、図16に示されたように、処理ブロック640で第1の部分496と第2の部分498に分割されねばならない。分割は、宛先データ記憶装置482−1の残りの容量484に等しい受信されたデータ492からの幾つかのビットを選択することにより達成される。選択されたデータは、データ492の第1の部分496を構成し、これは、宛先データ記憶装置内に記憶される。次に、データ492の残りの部分が、第2の部分498がデータバッファ480の次のデータ記憶装置482−2内に記憶されるように、第2の部分498として使用される。従って、データを分割する能力は、一旦、データバッファ内のそれぞれのデータ記憶装置が満たされると、データがメモリへ書き込まれるように、単一のアドレス空間としてデータバッファを機能させることを可能とする。
【0069】
図20を参照すると、図20は、例えば図3Aと図7Bに示されたデータバッファ480が、データバッファ480内の複数のレジスタとしてデータ記憶レジスタ482−1とデータ記憶レジスタ482−2を使用する方法を示す。従って、データバッファ480内にデータを記憶するためのデータアクセス命令に応じて、データバッファ480内の現在のレジスタがデータ記憶レジスタ482−1であるかどうかが決定される。そのような場合のときには、処理ブロック656が実行される。処理ブロック656で、データ記憶レジスタ482−1が追加の容量を含むかどうかが決定される。データ記憶レジスタ482−1が追加の容量を含むときには、処理ブロック658が実行される。
【0070】
処理ブロック658で、ソースデータ記憶装置からのデータは、データ記憶レジスタ482−1内に記憶される。そうでなければ、データ記憶レジスタ482−1は満たされ、そして、データロードレジスタ482−1として機能しなければならない。ここに記載のように、データロードレジスタ482−2は、データロードレジスタ482−2がデータで完全に満たされそしてそれゆえにデータがメモリ490に書き込まれることを必要とするように、環状バッファとして機能するデータバッファ480内で使用される。対照的に、データ記憶レジスタは、追加の容量を有し且つデータロード命令の実行に応じて受信されたデータがロードされる、データレジスタである。
【0071】
従って、処理ブロック660で、データ記憶レジスタは、一旦充満になると、データロードレジとして改名される。次に、処理ブロック662で、データロードレジスタ内のデータは、メモリ490内に記憶される。次に、処理ブロック664で、データロードレジ482−2が空かどうかが決定される。そして、データロードレジスタ482−2が空になるまで、処理ブロック662が繰り返される。一旦、データロードレジスタ482−2が空になると、処理ブロック666が実行される。処理ブロック666で、ソースデータ記憶装置内に追加のデータがあるかどうかが決定される。追加のデータがソースデータ記憶装置内にあるときには、データロードレジスタ482−2は、追加のデータがロードされるように、データ記憶レジスタ482−1として改名がされる。そのようでないときには、制御フローは、図17に示されたように、処理ブロック650へ戻り、方法は終了する。
【0072】
最後に、図21を参照すると、図21は、図17に示されたように、処理ブロック606の選択されたデータを符号化する追加の方法を示すフローチャートを示す。処理ブロック610では、1つ又はそれ以上の記憶されたデータ値が読み出される。次に、処理ブロック612で、可変長符号シンボルと可変長符号サイズが、図7Aに示された、シンボルルックアップテーブルから読み出される。当業者には知られているように、符号化シンボルと長さは、データストリーム内のデータ要素の頻度に基づいて発生される。最後に、処理ブロック614で、処理ブロック610と612は、各記憶されたデータ値について繰り返される。
【0073】
代わりの実施例
改善されたエントロピー符号化/復号を提供するビットレベルアドレス可能なデータバッファの一実行の幾つかの面が、記載された。しかしながら、ビットレベルアドレス可能なデータバッファの種々の実行は、多くの特徴を、補完する、補足する、及び/又は、置きかえる、こと含む多くの特徴を提供する。特徴は、画像処理システムの一部として、又は、異なる実行のハードウェア/ソフトウェア、符号化器/復号器の一部として、実行されうる。更に、前述の記載は、説明のために、本発明徹底的な理解を提供するために、特定の述語を使用した。しかしながら、当業者には、特定の詳細は本発明を実施するために要求されないことは明らかである。
【0074】
更に加えて、ここに記載された実施例は、ビットレベルアドレス可能なバッファに向けられているが、本発明の教示は他のシステムにも適用されることは当業者により理解されよう。実際には、ビットレベル動作のバッファリングシステムは、本発明の範囲と精神から離れることなしに、本発明の教示の範囲内である。上述の実施例は、本発明の原理とその特定の応用を最も良く説明するために、選択され且つ記載された。これらの実施例は、選択され、それにより、当業者が、本発明と考えられる特定の使用に適する種々の修正を有する種々の実施例を、最も良く使用することを可能とする。
【0075】
本発明の種々の実施例の多くの特徴と利点が、本発明の種々の実施例の構造と機能の詳細と共に、前述の記載に述べられたが、この開示は説明のためのみである。幾つかの場合には、ある副組立体のみが、1つのそのような実施例と共に詳細に記載されている。それにも関わらず、そのような副組立体は、本発明の他の実施例で使用されうることは認識され且つ意図される。変更は、詳細になされ、特に、添付の請求項の用語の広い一般的な意味により示される全範囲に、本発明の原理内の構造に関することと部分の管理が、表現される。
【0076】
本発明は、知られた技術を超える多くの利点を提供する。本発明は、ビットのアクセス及び強いビット操作を使用し又は要求する応用の速度を速める能力を有する。ここに記載の方法は、バッファとして使用されるレジスタからデータを操作し及び抽出することの、改善された効率とより高い性能(速度)を達成し、それにより、エントロピー符号化と復号の速度を向上する。
【0077】
本発明の特徴は、効率的なリトルエンディアンからビッグエンディアンへの変換を容易にする高速バイト順序逆転動作のような、ビットアクセス及び操作を含む種々の応用について性能の利点を提供する。更に、データバッファは、バイトでなくビットで、アクセスされ、記憶され、そして測定されるデータの量に基づいて、ビット境界でアクセスされ且つ記憶されるデータを保持する。バッファは、循環バッファとして動作する複数のレジスタを含んでもよい。ビットのシーケンスがレジスタからアクセスされるときには、他のレジスタ内のデータは、メモリからロードされる。従って、ビットのシーケンスが1つのレジスタに記憶されるときには、他の中のデータは、メモリに記憶されることが可能である。
【0078】
データバッファからロードされる又はデータバッファ内に記憶されるビットのシーケンスは、複数のレジスタに及ぶことが可能である。最後に、命令は、ビットバッファからアクセスされるデータ内の先導するものの位置を決定する。先導するものの位置は、宛先レジスタ内のビットをシフトするためのビット数を決定するのに使用され得る。これは、1つの命令で行われ、そして、従来のエントロピー復号実行の条件分岐を避ける。宛先レジスタ内の結果のデータは、ルックアップテーブルをアクセスするために使用される。ビットバッファは、ループソフトウェア最適化を展開することを許可しうる。
【0079】
例示の実施例とベストモードを開示したが、以下の請求項により定義される本発明の範囲内に残りながら、開示された実施例に、修正及び変形が、なされうる。
【図面の簡単な説明】
【0080】
【図1】技術的に知られているそして本発明の教示が本発明の一実施例内で実行されうる、従来のコンピュータシステムを示すブロック図である。
【図2】本発明の実施例に従って、図1に示されたコンピュータシステム内で使用されうるコンテンツ復号器を示すブロック図である。
【図3A】本発明の更なる実施例に従った図2に示されたコンテンツ復号器のエントロピー復号ブロックを示すブロック図である。
【図3B】本発明の更なる実施例に従った宛先データ記憶装置を示す図である。
【図4】本発明の更なる実施例に従ったデータ記憶装置内のデータ変換を示すブロック図である。
【図5A】本発明の更なる実施例に従ったデータバッファの1つ又はそれ以上の記憶装置からのデータの読出しを示すブロック図である。
【図5B】本発明の更なる実施例に従ったデータバッファの1つ又はそれ以上の記憶装置からのデータの読出しを示すブロック図である。
【図5C】本発明の更なる実施例に従ったデータバッファの1つ又はそれ以上の記憶装置からのデータの読出しを示すブロック図である。
【図5D】本発明の更なる実施例に従ったデータバッファの1つ又はそれ以上の記憶装置からのデータの読出しを示すブロック図である。
【図6】本発明の更なる実施例に従った図1に示されたコンピュータシステム内で使用されるコンテンツ符号化器を示すブロック図である。
【図7A】本発明の更なる実施例に従った図6に示されたエントロピー符号化ブロックを示すブロック図である。
【図7B】本発明の更なる実施例に従った図6に示されたエントロピー符号化ブロックを示すブロック図である。
【図8】本発明の実施例に従って、データバッファからデータをアクセスする方法を示すフローチャートである。
【図9】本発明の更なる実施例に従って、データバッファ内にデータをロードする追加の方法を示すフローチャートである。
【図10】本発明の更なる実施例に従って、要求されたデータがデータバッファ内の1つ又はそれ以上のデータ記憶装置に及ぶかどうかを検出する追加の方法を示すフローチャートである。
【図11】本発明の更なる実施例に従って、宛先データ記憶装置内にデータを記憶する追加の方法を示すフローチャートである。
【図12】本発明の例示の実施例に従って、データバッファの1つ又はそれ以上のデータ記憶装置に及ぶデータを連結する追加の方法を示すフローチャートである。
【図13】本発明の更なる実施例に従って、データバッファ内の全てのデータがアクセスされたときに、データバッファのデータ記憶装置内にデータをロードする追加の方法を示すフローチャートである。
【図14】本発明の更なる実施例に従って、選択されたデータを復号する追加の方法を示すフローチャートである。
【図15】本発明の例示の実施例に従って、宛先データ記憶装置内でデータを復号する追加の方法を示すフローチャートである。
【図16】本発明の実施例に従って、複数のデータ記憶装置を含むデータバッファ内にデータをロードする方法を示すフローチャートである。
【図17】本発明の更なる実施例に従って、データバッファ内のロードに先立つデータの符号化を示すフローチャートである。
【図18】本発明の更なる実施例に従って、データロード命令の実行に応じて実行される追加の方法を示すフローチャートである。
【図19】本発明の更なる実施例に従って、ロードされたデータが、データバッファ内の宛先データ記憶装置の容量を越えるかどうかを決定する追加の方法を示すフローチャートである。
【図20】本発明の例示の実施例に従って、データ記憶レジスタとデータロードレジスタを含むデータバッファ内にデータをロードする方法を示すフローチャートである。
【図21】本発明の更なる実施例に従って、メモリ装置から選択された、データを符号化する追加の方法を示すフローチャートである。

Claims (35)

  1. データアクセス命令を実行するのに応じて、データバッファからデータを選択し、前記データバッファは、選択されたデータを初期的に含む複数のデータ記憶装置を有し、
    選択されたデータが、データバッファのソースデータ記憶装置から次のデータ記憶装置に及ぶときには、隣接するユニットとして選択されたデータを構成するために前記ソースデータ記憶装置から選択されたデータの一部分と前記次のデータ記憶装置からの選択されたデータの残りの部分を連結し、
    選択されたデータを宛先データ記憶装置内に記憶する、方法。
  2. データを選択する前に、前記方法は更に、
    データロード命令の実行に応じて、前記データバッファ内の前記複数のデータ記憶装置に及ぶ入力データストリームからのデータを前記データバッファにロードし、
    データ変換命令が受信されたときには、データ変換命令の実行に応じて、前記データバッファ内にロードされたデータの順序を逆転させる、請求項1に記載の方法。
  3. 連結することは更に、
    前記データバッファの1つ又はそれ以上のデータ記憶装置内のデータの各部分がアクセスされたときには、完全にアクセスされたデータを有する各データ記憶装置についてのデータアクセスフラグをセットし、
    前記データバッファの複数のデータ記憶装置から1つのデータ記憶装置を選択し、
    前記データ記憶装置のデータアクセスフラグがセットされているときには、前記選択されたデータ記憶装置に入力データストリームからの追加のデータをロードし、
    一旦、前記データ記憶装置のロードが完了すると、前記選択されたデータ記憶装置についてのデータアクセスフラグをリセットし、
    前記データバッファの各データ記憶装置について、選択、ロード及びリセットを繰返す、請求項1に記載の方法。
  4. 更に、
    前記宛先データ記憶装置に含まれるデータを復号し、
    前記宛先データ記憶装置内の前記データを復号されたデータで上書きする、
    請求項1に記載の方法。
  5. データを復号することは、更に、
    データ検出命令を実行するのに応じて、前記宛先データ記憶装置内の先導するものの位置を決定し、
    インデックスとして、前記先導するものの位置を使用してシフト値を決定するシフトテーブルを読出し、
    前記シフト値に基づいて前記宛先データ記憶装置をシフトし、
    インデックスとして、シフトされた宛先データ記憶装置の値を使用して、ルックアップテーブルから復号シンボルを読出し、
    インデックスとして、前記シフトされた宛先データ記憶装置の値を使用して、シンボルルックアップテーブル内の復号シンボル長を読み出す、
    ことを含む、請求項4に記載の方法。
  6. 選択することは、更に、
    前記データバッファ内のソースデータ記憶装置を示す装置値を受信し、
    前記データバッファがビットレベルでアドレス可能なように、データの第1ビットが配置される前記ソースデータ記憶装置内のビットアドレスを受信し、
    前記ソースデータ記憶装置から読み出されるべきビットの数を示すビット値を受信し、データが前記データバッファの1つ又はそれ以上のデータ記憶装置に及ぶかどうかが、前記データの最後のビットが前記ソースデータ記憶装置から次のデータ記憶装置内であるときには、データは前記次のデータ記憶装置に及ぶように、前記ソースデータ記憶装置のビットアドレスと前記データのビット値に基づいて決定される、
    ことを含む、請求項1に記載の方法。
  7. 前記選択されたデータを宛先データ記憶装置内に記憶することは、更に、
    前記宛先データ記憶装置のアドレスを受信し、
    前記宛先記憶装置の最下位位置で開始するデータを記憶し、
    空の位置のビットがゼロに設定されるように、前記宛先記憶装置の空の位置を、ゼロ伸張する、
    ことを含む、請求項1に記載の方法。
  8. データバッファにロードすることは、更に、
    入力データストリームデータが配置される、メモリ装置内のデータのアドレスを受信し、
    前記受信されたメモリアドレスから前記入力データストリームデータをアクセスする、
    ことを含む、請求項1に記載の方法。
  9. 更に、
    ループ展開命令実行するのに応じて、任意の一時点で前記データバッファからアクセスされるビットの最大の数により割られた、データバッファレスのものにより使用されている複数のデータ記憶装置の数に基づいて、予め定められた回数、前記データバッファを展開することを含む、請求項1に記載の方法。
  10. データロード命令の実行に応じて、ソースデータ記憶装置からデータバッファ内にデータを記憶し、前記データバッファはデータが記憶された複数のデータ記憶装置を有し、
    前記データのサイズが、前記データバッファ内の宛先データ記憶装置の残りの容量を超えたときに、前記データを第1の部分と第2の部分に分割し、
    前記宛先データ記憶装置内にデータの第1の部分を記憶し、
    前記データバッファの次のデータ記憶装置内にデータの第2の部分を記憶し、
    一旦、前記データバッファ装置内に前記データの記憶が完了すると、前記宛先データ記憶装置内で、メモリ装置へデータを移動する、
    方法。
  11. 記憶する前に、この方法は更に、
    符号化を要求する内容データを選択し、
    符号化されたデータを構成するために選択データを符号化し、
    前記ソースデータ記憶装置内に前記符号化されたデータを記憶し、
    前記データバッファの前記宛先データ記憶装置内で符号化されたデータのデータロード命令を実行する、請求項10に記載の方法。
  12. 記憶することは、更に、
    データバッファがビットレベルでアドレス可能なように、データが記憶されるべき前記データバッファの宛先データ記憶装置内の開始位置を示すビットアドレスを受信し、
    前記データのビット数を示すデータサイズ値を受信し、
    データが初期的に含まれる前記ソースデータ記憶装置のアドレスを受信する、
    ことを含む請求項10に記載の方法。
  13. データを分割することは更に、
    宛先データ記憶装置の残りの容量を決定し、
    受信されたデータサイズに対して、宛先データ記憶装置の残りの容量を比較し、
    データサイズが選択されたデータ記憶装置の残りの容量を超えるときには、データを、宛先データ記憶装置の残りの容量に等しいサイズを有する第1の部分とデータの残りの部分を含む第2の部分に分割する、請求項10に記載の方法。
  14. 前記データバッファは、前記複数のデータ記憶装置としてデータ記憶レジスタとデータロードレジスタを有し、更に、
    前記データ記憶レジスタが追加の容量を含みながら、データを前記ソースデータ記憶装置から前記データ記憶レジスタへ記憶し、
    データが前記データ記憶レジスタへ記憶記憶されながら、データロードレジスタ内のデータを前記メモリ装置へロードし、
    一旦、前記メモリ装置へのデータのロードが完了すると、ソースデータ記憶装置からデータをデータロードレジスタ内に記憶し、
    一旦、前記データ記憶レジスタが充満すると、前記データロードレジスタが前記ソースデータ記憶装置からのデータを記憶するためにデータ記憶レジスタとして機能するように改名され、且つ前記データ記憶レジスタは記憶されたデータを前記メモリ装置にロードするためにデータロードレジスタとして機能するために改名され、前記データ記憶レジスタ内のデータを前記メモリ装置へロードする、
    請求項10に記載の方法。
  15. 符号化することは更に、
    前記選択された内容データの各データ要素のデータ頻度値を決定し、
    それぞれのデータ頻度値に基づいて、各データ要素についてのそれぞれの符号化シンボル長を選択し、
    符号化されたデータとして1つ又はそれ以上の符号語を構成するために、各データ要素のそれぞれのシンボル長に基づいて、選択された内容データの各データ要素についてのそれぞれの符号化シンボルを選択し、
    前記ソースデータ記憶装置を1つ又はそれ以上の符号語で上書きする、
    請求項11に記載の方法。
  16. プロセッサにより実行されたときに規定された方法でシステムを機能させるように指示するプログラム命令を含む機械読出し可能な記憶媒体であって、前記プログラム命令は、
    データアクセス命令を実行するのに応じて、データバッファからデータを選択し、前記データバッファは、選択されたデータを初期的に含む複数のデータ記憶装置を有し、
    選択されたデータが、データバッファのソースデータ記憶装置から次のデータ記憶装置に及ぶときには、隣接するユニットとして選択されたデータを構成するために前記ソースデータ記憶装置から選択されたデータの一部分と前記次のデータ記憶装置からの選択されたデータの残りの部分を連結し、
    選択されたデータを宛先データ記憶装置内に記憶する、機械読出し可能な記憶媒体。
  17. データを選択する前に、前記方法は更に、
    データロード命令の実行に応じて、前記データバッファ内の前記複数のデータ記憶装置に及ぶ入力データストリームからのデータを前記データバッファにロードし、
    データ変換命令が受信されたときには、データ変換命令の実行に応じて、前記データバッファ内にロードされたデータの順序を逆転させる、請求項16に記載の機械読出し可能な記憶媒体。
  18. 連結することは更に、
    前記データバッファの1つ又はそれ以上のデータ記憶装置内のデータの各部分がアクセスされたときには、完全にアクセスされたデータを有する各データ記憶装置についてのデータアクセスフラグをセットし、
    前記データバッファの複数のデータ記憶装置から1つのデータ記憶装置を選択し、
    前記データ記憶装置のデータアクセスフラグがセットされているときには、前記選択されたデータ記憶装置に前記入力データストリームからの追加のデータをロードし、
    一旦、前記データ記憶装置のロードが完了すると、前記選択されたデータ記憶装置についてのデータアクセスフラグをリセットし、
    前記データバッファの各データ記憶装置について、選択、ロード及びリセットを繰返す、請求項16に記載の機械読出し可能な記憶媒体。
  19. 更に、
    前記宛先データ記憶装置に含まれるデータを復号し、
    前記宛先データ記憶装置内の前記データを復号されたデータで上書きする、
    請求項16に記載の機械読出し可能な記憶媒体。
  20. データを復号することは、更に、
    データ検出命令を実行するのに応じて、前記宛先データ記憶装置内の先導するものの位置を決定し、
    インデックスとして、前記先導するものの位置を使用してシフト値を決定するシフトテーブルを読出し、
    前記シフト値に基づいて前記宛先データ記憶装置をシフトし、
    インデックスとして、シフトされた宛先データ記憶装置の値を使用して、ルックアップテーブルから復号シンボルを読出し、
    インデックスとして、前記シフトされた宛先データ記憶装置の値を使用して、シンボルルックアップテーブル内の復号シンボル長を読み出す、
    ことを含む、請求項19に記載の機械読出し可能な記憶媒体。
  21. 選択することは、更に、
    前記データバッファ内のソースデータ記憶装置を示す装置値を受信し、
    前記データバッファがビットレベルでアドレス可能なように、データの第1ビットが配置される前記ソースデータ記憶装置内のビットアドレスを受信し、
    前記ソースデータ記憶装置から読み出されるべきビットの数を示すビット値を受信し、データが前記データバッファの1つ又はそれ以上のデータ記憶装置に及ぶかどうかが、前記データの最後のビットが前記ソースデータ記憶装置から次のデータ記憶装置内であるときには、データは前記次のデータ記憶装置に及ぶように、前記ソースデータ記憶装置のビットアドレスと前記データのビット値に基づいて決定される、
    ことを含む、請求項16に記載の機械読出し可能な記憶媒体。
  22. 前記選択されたデータを宛先データ記憶装置内に記憶することは、更に、
    前記宛先データ記憶装置のアドレスを受信し、
    前記宛先記憶装置の最下位位置で開始するデータを記憶し、
    空の位置のビットがゼロに設定されるように、前記宛先記憶装置の空の位置を、ゼロ伸張する、
    ことを含む、請求項16に記載の機械読出し可能な記憶媒体。
  23. データバッファにロードすることは、更に、
    入力データストリームデータが配置される、メモリ装置内のデータのアドレスを受信し、
    前記受信されたメモリアドレスから前記入力データストリームデータをアクセスする、
    ことを含む、請求項16に記載の機械読出し可能な記憶媒体。
  24. 更に、
    ループ展開命令実行するのに応じて、任意の一時点で前記データバッファからアクセスされるビットの最大の数により割られた、データバッファレスのものにより使用されている複数のデータ記憶装置の数に基づいて、予め定められた回数、前記データバッファを展開することを含む、請求項16に記載の機械読出し可能な記憶媒体。
  25. プロセッサにより実行されたときに規定された方法でシステムを機能させるように指示するプログラム命令を含む機械読出し可能な記憶媒体であって、前記プログラム命令は、
    データロード命令の実行に応じて、ソースデータ記憶装置からデータバッファ内にデータを記憶し、前記データバッファはデータが記憶された複数のデータ記憶装置を有し、
    前記データのサイズが、前記データバッファ内の宛先データ記憶装置の残りの容量を超えたときに、前記データを第1の部分と第2の部分に分割し、
    前記宛先データ記憶装置内にデータの第1の部分を記憶し、
    前記データバッファの次のデータ記憶装置内にデータの第2の部分を記憶し、
    一旦、前記データバッファ内に前記データの記憶が完了すると、前記宛先データ記憶装置内で、メモリ装置へデータを移動する、
    機械読出し可能な記憶媒体。
  26. 記憶する前に、更に、
    符号化を要求する内容データを選択し、
    符号化されたデータを構成するために選択データを符号化し、
    前記ソースデータ記憶装置内に前記符号化されたデータを記憶し、
    前記データバッファの前記宛先データ記憶装置内で符号化されたデータのデータロード命令を実行する、請求項25に記載の機械読出し可能な記憶媒体。
  27. 記憶することは、更に、
    データバッファがビットレベルでアドレス可能なように、データが記憶されるべき前記データバッファの宛先データ記憶装置内の開始位置を示すビットアドレスを受信し、
    前記データのビット数を示すデータサイズ値を受信し、
    データが初期的に含まれる前記ソースデータ記憶装置のアドレスを受信する、
    ことを含む請求項25に記載の機械読出し可能な記憶媒体。
  28. 前記データ分割することは、更に、
    前記選択された内容データの各データ要素のデータ頻度値を決定し、
    それぞれのデータ頻度値に基づいて、各データ要素についてのそれぞれの符号化シンボル長を選択し、
    符号化されたデータとして1つ又はそれ以上の符号語を構成するために、各データ要素のそれぞれのシンボル長に基づいて、選択された内容データの各データ要素にについてのそれぞれの符号化シンボルを選択し、
    前記ソースデータ記憶装置を1つ又はそれ以上の符号語で上書きする、
    請求項25に記載の機械読出し可能な記憶媒体。
  29. 前記データバッファは、前記複数のデータ記憶装置としてデータ記憶レジスタとデータロードレジスタを有し、更に、
    前記データ記憶レジスタが追加の容量を含みながら、データを前記ソースデータ記憶装置から前記データ記憶レジスタへ記憶し、
    データが前記データ記憶レジスタへ記憶記憶されながら、データロードレジスタ内のデータを前記メモリ装置へロードし、
    一旦、前記メモリ装置へのデータのロードが完了すると、ソースデータ記憶装置からデータをデータロードレジスタ内に記憶し、
    一旦、前記データ記憶レジスタが充満すると、前記データロードレジスタが前記ソースデータ記憶装置からのデータを記憶するためにデータ記憶レジスタとして機能するように改名され、且つ前記データ記憶レジスタは記憶されたデータを前記メモリ装置にロードするためにデータロードレジスタとして機能するために改名され、前記データ記憶レジスタ内のデータを前記メモリ装置へロードする、
    請求項25に記載の機械読出し可能な記憶媒体。
  30. 符号化することは更に、
    前記選択された内容データの各データ要素のデータ頻度値を決定し、
    それぞれのデータ頻度値に基づいて、各データ要素についてのそれぞれの符号化シンボル長を選択し、
    符号化されたデータとして1つ又はそれ以上の符号語を構成するために、各データ要素のそれぞれのシンボル長に基づいて、選択された内容データの各データ要素についてのそれぞれの符号化シンボルを選択し、
    前記ソースデータ記憶装置を1つ又はそれ以上の符号語で上書きする、
    請求項26に記載の機械読出し可能な記憶媒体。
  31. 命令を実行する回路を有するプロセッサと、
    複数のデータ記憶装置を有するデータバッファと、
    そこに記憶された命令のシーケンスを有する、前記プロセッサに結合された記憶装置を有し、前記命令のシーケンスは、前記プロセッサにより実行されたときに、前記プロセッサに、
    データアクセス命令を実行するのに応じて、データバッファのソースデータ記憶装置からデータを選択し、
    選択されたデータが、データバッファのソースデータ記憶装置から次のデータ記憶装置に及ぶときには、隣接するユニットとして選択されたデータを構成するために前記ソースデータ記憶装置から選択されたデータの一部分と前記次のデータ記憶装置からの選択されたデータの残りの部分を連結し、
    選択されたデータを宛先データ記憶装置内に記憶する、
    ことを行わせる、装置。
  32. 前記プロセッサに、更に、
    データロード命令の実行に応じて、ソースデータ記憶装置からデータバッファの宛先データ記憶装置内にデータを記憶し、
    前記データのサイズが、前記宛先データ記憶装置の残りの容量を超えたときに、前記データを第1の部分と第2の部分に分割し、
    前記宛先データ記憶装置内にデータの第1の部分を記憶し、
    前記データバッファの次のデータ記憶装置内にデータの第2の部分を記憶し、
    一旦、前記データバッファ内に前記データの記憶が完了すると、前記宛先データ記憶装置内で、メモリ装置へデータを移動する、
    ことを行わせる、請求項31に記載の装置。
  33. 連結させるめいれは更に前記プロセッサに、
    前記データバッファの1つ又はそれ以上のデータ記憶装置内のデータの各部分がアクセスされたときには、完全にアクセスされたデータを有する各データ記憶装置についてのデータアクセスフラグをセットし、
    前記データバッファの複数のデータ記憶装置から1つのデータ記憶装置を選択し、
    前記データ記憶装置のデータアクセスフラグがセットされているときには、前記選択されたデータ記憶装置に入力データストリームからのデータをロードし、
    一旦、前記データ記憶装置のロードが完了すると、前記選択されたデータ記憶装置についてのデータアクセスフラグをリセットし、
    前記データバッファの各データ記憶装置について、選択、ロード及びリセットを繰返す、ことを行わせる、請求項31に記載の装置。
  34. 前記データバッファは、前記複数のデータ記憶装置としてデータ記憶レジスタとデータロードレジスタを有し、更に、前記プロセッサに、
    前記データ記憶レジスタが追加の容量を含みながら、データを前記ソースデータ記憶装置から前記データ記憶レジスタへ記憶し、
    データが前記データ記憶レジスタへ記憶記憶されながら、データロードレジスタ内のデータを前記メモリ装置へロードし、
    一旦、前記メモリ装置へのデータのロードが完了すると、ソースデータ記憶装置からデータをデータロードレジスタ内に記憶し、
    一旦、前記データ記憶レジスタが充満すると、前記データロードレジスタが前記ソースデータ記憶装置からのデータを記憶するためにデータ記憶レジスタとして機能するように改名され、且つ前記データ記憶レジスタは記憶されたデータを前記メモリ装置にロードするためにデータロードレジスタとして機能するために改名され、前記データ記憶レジスタ内のデータをメモリへロードする、
    ことを行わせる、請求項32に記載の装置。
  35. 前記データバッファは、前記複数のデータ記憶装置が単一のビットレベルアドレス可能なアドレス空間を構成するように、ビットレベルアドレス能力を有する、請求項31に記載の装置。
JP2003527586A 2001-09-06 2002-08-30 データをバッファから抽出し且つバッファへロードする装置及び方法 Expired - Fee Related JP3860574B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/948,333 US6781589B2 (en) 2001-09-06 2001-09-06 Apparatus and method for extracting and loading data to/from a buffer
PCT/US2002/027725 WO2003023600A2 (en) 2001-09-06 2002-08-30 An apparatus and method for extracting and loading data to/from a buffer

Publications (2)

Publication Number Publication Date
JP2005502955A true JP2005502955A (ja) 2005-01-27
JP3860574B2 JP3860574B2 (ja) 2006-12-20

Family

ID=25487674

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003527586A Expired - Fee Related JP3860574B2 (ja) 2001-09-06 2002-08-30 データをバッファから抽出し且つバッファへロードする装置及び方法

Country Status (10)

Country Link
US (1) US6781589B2 (ja)
EP (1) EP1430388B1 (ja)
JP (1) JP3860574B2 (ja)
KR (1) KR100806435B1 (ja)
CN (1) CN100357879C (ja)
AT (1) ATE464597T1 (ja)
AU (1) AU2002332759A1 (ja)
DE (1) DE60236000D1 (ja)
RU (1) RU2265879C2 (ja)
WO (1) WO2003023600A2 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7818356B2 (en) 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US7336260B2 (en) * 2001-11-01 2008-02-26 Immersion Corporation Method and apparatus for providing tactile sensations
US7263128B2 (en) * 2002-11-13 2007-08-28 Sony Corporation Triple-buffering method for overlapped motion compensation in a video decoder
CN1723438A (zh) * 2002-12-11 2006-01-18 皇家飞利浦电子股份有限公司 对可重新配置多处理器系统中的设计说明书编码的方法和设备
US6867715B2 (en) * 2003-06-25 2005-03-15 Broadcom Corporation System, method, and apparatus for variable length decoder
US7334116B2 (en) * 2004-10-06 2008-02-19 Sony Computer Entertainment Inc. Bit manipulation on data in a bitstream that is stored in a memory having an address boundary length
US7428619B2 (en) 2005-01-18 2008-09-23 Sony Computer Entertainment Inc. Methods and apparatus for providing synchronization of shared data
US7586425B2 (en) * 2006-07-11 2009-09-08 Nokia Corporation Scalable video coding and decoding
EP2396730A4 (en) * 2009-02-13 2013-01-09 Alexey Raevsky DEVICES AND METHODS FOR OPTIMIZING DATA PARALLEL PROCESSING IN MULTI-CORE COMPUTING SYSTEMS
KR20120108564A (ko) * 2011-03-24 2012-10-05 삼성전자주식회사 데이터 처리 시스템 및 그 동작 방법
CN105378647B (zh) * 2013-06-19 2019-01-15 华为技术有限公司 存储器聚合设备
RU2557579C1 (ru) * 2014-02-12 2015-07-27 Закрытое акционерное общество "Электронно-вычислительные информационные и инструментальные системы" (ЗАО "ЭЛВИИС") Способ и система обработки изображения
RU2598323C1 (ru) * 2015-03-26 2016-09-20 Общество с ограниченной ответственностью "Научно-производственное предприятие "Цифровые решения" Способ адресации кольцевого буфера в памяти микропроцессора
GB2544083B (en) * 2015-11-05 2020-05-20 Advanced Risc Mach Ltd Data stream assembly control
CN106909460B (zh) * 2017-01-24 2018-06-05 广东德诚科教有限公司 数据缓冲方法、装置及存储介质
CN109614362A (zh) * 2019-03-07 2019-04-12 深兰人工智能芯片研究院(江苏)有限公司 一种数据交换方法及电子设备
CN114598893B (zh) * 2020-11-19 2024-04-30 京东方科技集团股份有限公司 文字的视频实现方法及系统、电子设备、存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07105128A (ja) * 1993-10-07 1995-04-21 Mitsubishi Electric Corp データ転送装置
JP2715871B2 (ja) 1993-12-20 1998-02-18 日本電気株式会社 可変長符号化方法
KR0160193B1 (ko) * 1995-12-30 1998-12-15 김광호 직접메모리접근 제어장치
US6052522A (en) 1997-10-30 2000-04-18 Infineon Technologies North America Corporation Method and apparatus for extracting data stored in concatenated registers
JP3570188B2 (ja) * 1997-12-25 2004-09-29 富士通株式会社 可変長符号処理機構を有するデータ処理装置
US6247112B1 (en) 1998-12-30 2001-06-12 Sony Corporation Bit manipulation instructions
US6542541B1 (en) * 2000-01-12 2003-04-01 Sony Corporation Method and apparatus for decoding MPEG video signals using multiple data transfer units
ATE440321T1 (de) 2000-01-18 2009-09-15 Mips Tech Inc Verfahren und vorrichtung für verbesserte computerlade- und speicheroperationen
US6621428B1 (en) 2000-05-04 2003-09-16 Hewlett-Packard Development Company, L.P. Entropy codec for fast data compression and decompression
US20020144027A1 (en) * 2001-03-27 2002-10-03 Schmisseur Mark A. Multi-use data access descriptor

Also Published As

Publication number Publication date
EP1430388A2 (en) 2004-06-23
US6781589B2 (en) 2004-08-24
CN1552016A (zh) 2004-12-01
WO2003023600A2 (en) 2003-03-20
ATE464597T1 (de) 2010-04-15
US20030043156A1 (en) 2003-03-06
JP3860574B2 (ja) 2006-12-20
RU2004110227A (ru) 2005-03-10
AU2002332759A1 (en) 2003-03-24
KR20040039335A (ko) 2004-05-10
WO2003023600A3 (en) 2004-04-15
KR100806435B1 (ko) 2008-02-21
DE60236000D1 (de) 2010-05-27
CN100357879C (zh) 2007-12-26
EP1430388B1 (en) 2010-04-14
RU2265879C2 (ru) 2005-12-10

Similar Documents

Publication Publication Date Title
JP3860574B2 (ja) データをバッファから抽出し且つバッファへロードする装置及び方法
US7403564B2 (en) System and method for multiple channel video transcoding
US6959348B1 (en) Method and system for accessing data
US7286066B1 (en) Acceleration of bitstream decoding
US7132963B2 (en) Methods and apparatus for processing variable length coded data
US10681363B2 (en) Lossless compression method and system applied to hardware video decoding
JP4782181B2 (ja) エントロピー復号化回路、エントロピー復号化方法、およびパイプライン方式を利用したエントロピー復号化方法
US5982936A (en) Performance of video decompression by using block oriented data structures
US7965773B1 (en) Macroblock cache
US6859561B2 (en) Faster lossless rotation of JPEG images
US7885336B2 (en) Programmable shader-based motion compensation apparatus and method
US20180227588A1 (en) Video decoder memory bandwidth compression
US20140219361A1 (en) Image data encoding for access by raster and by macroblock
US20060133512A1 (en) Video decoder and associated methods of operation
JPH07222164A (ja) ディジタルビデオ・ビットストリームコーダ
US20050047510A1 (en) Data processing device for MPEG
US6820087B1 (en) Method and apparatus for initializing data structures to accelerate variable length decode
US6313766B1 (en) Method and apparatus for accelerating software decode of variable length encoded information
JP4891335B2 (ja) ハードウェア多標準対応ビデオデコーダ装置
US7675972B1 (en) System and method for multiple channel video transcoding
US20100328332A1 (en) System and method for reducing memory access bandwidth in video decoding

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050901

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050906

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20051206

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20051213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060303

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060809

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060921

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100929

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110929

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees