(57)【要約】内部ビットＦＩＦＯ回路を具備する演算ユニットは、少なくとも１つのデータレジスタ、ルックアップテーブル、該ルックアップテーブルの一部をビットＦＩＦＯ回路として構成するための構成レジスタ、及びリード／ライトポインタレジスタを備える。構成レジスタは、ＦＩＦＯのベースアドレス、長さ、及びリード／ライトモードフィールドを有し、リード／ライトポインタレジスタは、ルックアップテーブル識別フィールド、ビット長フィールド、及び、ＦＩＦＯ回路とデータレジスタの間で指定された長さのビットフィールドを単一サイクルで選択的に転送するためのレジスタ取り出し／格納フィールドを有する命令に応答する。【選択図】図２
2010522928.tif 000002
【特許請求の範囲】
【請求項１】
内部ビットＦＩＦＯ回路を具備する演算ユニットであって、
少なくとも１つのデータレジスタと、
ルックアップテーブルと、
前記ルックアップテーブルの一部をビットＦＩＦＯ回路として構成するための、ＦＩＦＯのベースアドレス、長さ、及び、リード／ライドモードフィールドを含む構成レジスタと、
前記ＦＩＦＯ回路と前記データレジスタの間で単一サイクルで指定された長さのビットフィールドを選択的に転送するための、ルックアップテーブル識別フィールド、ビット長フィールド、レジスタ取り出し／格納フィールドを有する命令に応答するリード／ライトポインタレジスタ
を備える演算ユニット。
【請求項２】
前記構成レジスタはさらに、リトル／ビッグエンディアンモードフィールドを有する、請求項１の演算ユニット。
【請求項３】
ビットフィールドを転送することが、前記構成レジスタ及びポインタレジスタ内の情報並びに前記命令に応じて、前記ＦＩＦＯ回路からビットフィールドを取り出して、それを前記演算ユニットのデータレジスタに格納することを含む、請求項１の演算ユニット。
【請求項４】
ビットフィールドを転送することが、前記構成レジスタ及びポインタレジスタ内の情報並びに前記命令に応じて、データレジスタからのビットフィールドを前記ビットＦＩＦＯ回路に格納することを含む、請求項１の演算ユニット。
【請求項５】
取り出すことが、モジュロＦＩＦＯ長における前記指定された長さだけ、前記リードポインタレジスタ内のリードポインタを更新することを含む、請求項３の演算ユニット。
【請求項６】
格納することが、前記モジュロＦＩＦＯ長における前記指定された長さだけ、前記ライトポインタレジスタ内のライトポインタを更新することを含む、請求項３の演算ユニット。
【請求項７】
前記リード／ライトポインタレジスタは、前記指定された長さを追跡するためにワードアドレスフィールドとビット位置フィールドを有する、請求項１の演算ユニット。
【請求項８】
ハイウォーターマークとローウォーターマークを規定するためのウォーターマークレジスタをさらに含む、請求項１の演算ユニットであって、前記ハイウォーターマークを超えているときには、前記ビットＦＩＦＯ回路から外部記憶装置に放出しなければならず、前記ローウォーターマークを下回るときには、前記ビットＦＩＦＯを前記外部記憶装置からの連続するビットストリームオペランドで充填しなければならない、演算ユニット。
【請求項９】
外部メモリとの充填及び放出が３２ビットワードで行われる、請求項１の演算ユニット。
【請求項１０】
前記３２ビットワードがメモリ整列している、請求項９の演算ユニット。
【請求項１１】
前記ルックアップテーブルはランダムアクセスメモリを備える、請求項１の演算ユニット。
【請求項１２】
前記データレジスタは演算ユニットのレジスタファイルの１つである、請求項１の演算ユニット。
【請求項１３】
取り出すことは、前記リードポインタレジスタ内のリードポインタを更新することと、前記ＦＩＦＯ内に残っているビットが前記ローウォーターマークを下回っている場合にローウォーターマーク信号を生成することを含む、請求項８の演算ユニット。
【請求項１４】
格納することは、前記ライトポインタレジスタ内のライトポインタを更新することと、前記ＦＩＦＯ内のビットが前記ハイウォーターマークを超えている場合にハイウォーターマーク信号を生成することを含む、請求項８の演算ユニット。
【請求項１５】
前記ルックアップテーブルが複数のビットＦＩＦＯを備えることができる、請求項１の演算ユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、２００５年１０月２６日に出願されたWilson他による「IMPROVED PIPELINED DIGITAL SIGNALPROCESSOR」と題する米国特許出願第11/258,801（AD-432J）に関連する。この出願の内容は参照により本明細書に組み込まれるものとする。
【０００２】
本発明は、内部ビットＦＩＦＯ回路を具備する演算ユニットに関する。
【背景技術】
【０００３】
デジタル信号プロセッサは、圧縮されたビットストリームを生成するためのデジタルフィルタリング、音声分析及び音声合成、ビデオ符号化及び復号などのデジタル信号処理用途に最適化された特定用途のプロセッサである。いくつかの通信またはビデオアプリケーションは、（１符号ワードあたり一定数のビットを使用する符号化方式とは異なり）可変長符号化方式を使用するハフマン符号化を使用する場合がある。ハフマン符号化は、最高周波数で現れる符号ワードに対する総ビット数を最小限にする。この符号化は、既知の確率に基づいてビットの数を選択して、それらのビットがデータビットストリームに現れたときに該データビットストリームを復号する。この符号化は、頻繁に現れる文字が短く、まれにしか現れない文字は長いので、データをよりコンパクトに詰め込むことができ、発生確率が一番高い最短の文字はわずか１ビット長である。ほとんどのデジタル信号プロセッサは、固定ワードサイズ（たとえば、８ビットワードや１６ビットワードや３２ビットワード）を有するデータを操作するように設計されている。プロセッサが、非標準のワードサイズを操作する必要があるときは、プロセッサは、典型的には、任意の指定された長さのビットフィールドを操作することができるビットＦＩＦＯ回路を使用してこれを行う。そのような装置の１つの欠点は、それらが、演算ユニットの外部の記憶装置に実装されるために、読み出しまたは書き込みのためにアクセスが要求されるときは常にストール（機能停止）が生じる可能性があることである。これは、拡張記憶装置へはデータアドレス発生器（ＤＡＧ）を介してのみアクセスできるという事実によって悪化する。外部ビットＦＩＦＯ回路に頼ることによる別の問題は、この回路が、信号が伝送する距離を長くするために、オペレーションサイクル（動作サイクル）の速度を制限することである。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、本発明の目的は、内部ビットＦＩＦＯ回路を具備する改良された演算ユニットを提供することである。
【０００５】
本発明のさらなる目的は、内部ビットＦＩＦＯ回路を具備する改良された演算ユニットであって、該演算ユニットのルックアップテーブルを利用してビットＦＩＦＯ回路を実施する演算ユニットを提供することである。
【０００６】
本発明のさらなる目的は、外部記憶装置から（のデータ）の流入及び外部記憶装置への（データの）流出を条件付きで行うことができる内部ビットＦＩＦＯ回路を具備する改良された演算ユニットを提供することである。
【０００７】
本発明のさらなる目的は、ハイウォーターマーク（high water mark）とローウォーターマーク（low water mark）を設定して連続的なビットストリームオペランドのためのウインドウを画定する内部ビットＦＩＦＯ回路を具備する改良された演算ユニットを提供することである。
【０００８】
本発明のさらなる目的は、３２ビットメモリ整列ワード(aligned word)で（データの）流入及び流出がなされる内部ビットＦＩＦＯ回路を具備する改良された演算ユニットを提供することである。
【０００９】
本発明のさらなる目的は、ハイウォーターマークとローウォーターマークを条件として（データの）流入及び流出がなされる内部ビットＦＩＦＯ回路を具備する改良された演算ユニットを提供することである。
【００１０】
本発明のさらなる目的は、外部記憶装置と任意の演算ユニットデータレジスタとの間で、指定された長さのビットフィールドを連続するビットストリームの形態で、１サイクルで伝送することができる内部ビットＦＩＦＯ回路を具備する改良された演算ユニットを提供することである。
【００１１】
本発明のさらなる目的は、ルックアップテーブルの一部だけを利用することができる内部ビットＦＩＦＯ回路を具備する改良された演算ユニットであって、１つまたは複数のルックアップテーブルに２つ以上のビットＦＩＦＯ回路が存在する演算ユニットを提供することである。
【００１２】
本発明のさらなる目的は、左から右へ（ビッグエンディアン：Big Endian）または右から左へ（リトルエンディアン：Little Endian）データを格納し、及び／またはデータを取り出すことができる内部ビットＦＩＦＯ回路を具備する改良された演算ユニットを提供することである。
【課題を解決するための手段】
【００１３】
本発明は、演算ユニット内のルックアップテーブルを構成（コンフィグレーション）して、ビットＦＩＦＯのベースアドレス、長さ、及びリード（読み出し）／ライト（書き込み）モードを定義し、ルックアップテーブル識別フィールド、ビット長フィールド、及び、レジスタ取り出し／格納（預け入れ）フィールドを有する命令に応答してリード／ライトポインタレジスタを用いて、前記ＦＩＦＯ回路と前記データレジスタの間で、単一サイクルで（または単一サイクル以内で）指定された長さのビットフィールドを選択的に伝送することによって、ビットＦＩＦＯを演算ユニットの内部に設けることができるという理解からもたらされた。
【００１４】
しかしながら、本発明は、他の実施形態においては、これら全ての目的を達成する必要はなく、特許請求の範囲は、これらの目的を達成することができる構造または方法には限定されない。
【００１５】
本発明は、少なくとも１つのデータレジスタ、ルックアップテーブル、構成レジスタ（コンフィギュレーションレジスタ）、及び、リード／ライトポインタレジスタを含む内部ビットＦＩＦＯ回路を具備する演算ユニットを特徴とする。構成レジスタは、ルックアップテーブルの一部をビットＦＩＦＯ回路として構成するためのＦＩＦＯのベースアドレス、長さ、及びリード／ライトモードフィールドを含み、リード／ライトポインタレジスタは、ルックアップテーブル識別フィールド、ビット長フィールド、及び、レジスタ取り出し／格納フィールドを有する命令に応答して、ＦＩＦＯ回路とデータレジスタの間で、単一サイクルで（または単一サイクル以内で）指定された長さのビットフィールドを選択的に伝送するためのものである。
【００１６】
好適な１実施形態では、構成レジスタは、さらに、リトル／ビッグエンディアンモードフィールドを含むことができる。ビットフィールドの伝送には、構成レジスタ及びポインタレジスタ内の情報並びに命令に応じて、ＦＩＦＯ回路からビットフィールドを取り出すこと、及び、そのビットフィールドを演算ユニットのデータレジスタに格納することを含めることができる。ビットフィールドの伝送には、構成レジスタ及びポインタレジスタ内の情報並びに命令に応じて、データレジスタからビットＦＩＦＯ回路にビットフィールドを格納することを含めることができる。取り出しには、モジュロＦＩＦＯ長における指定された長さだけリード／ライトポインタレジスタ内の読み出しポインタ（リードポインタ）を更新することを含めることができる。格納には、モジュロＦＩＦＯ長における指定された長さだけリード／ライトポインタレジスタ内の書き込みポインタ（ライトポインタ）を更新することを含めることができる。リード／ライトポインタレジスタは、指定された長さを追跡するためのワードアドレスフィールドとビット位置フィールドを含むことができる。リード／ライトポインタレジスタはさらに、ハイウォーターマークとローウォーターマークを定義するためのウォーターマークレジスタを含むことができ、ハイウォーターマークより上では、ビットＦＩＦＯ回路への転送が禁止されて、ビットＦＩＦＯ回路から外部記憶装置に放出しなければならず、ローウォーターマークより下では、ビットＦＩＦＯ回路が外部記憶装置からの連続するビットストリームオペランドで充填されるのを可能にするために、ビットＦＩＦＯ回路からの転送が許可される。この外部記憶装置（外部メモリ）からの充填及び外部記憶装置への放出は、３２ビットワードで行うことができる。３２ビットワードはメモリ整列(memory aligned)されたものとすることができる。ルックアップテーブルはランダムアクセスメモリを含むことができる。データレジスタは、演算ユニットのレジスタファイルの１つとすることができる。取り出しには、リードポインタレジスタ内のリードポインタを更新すること、及び、ＦＩＦＯ内に残っているビットがローウォーターマークより下の場合には、ローウォーターマーク信号を生成することを含めることができる。格納には、ライトポインタレジスタ内のライトポインタを更新すること、及び、ＦＩＦＯ内のビットがハイウォーターマークより上の場合にはハイウォーターマーク信号を生成することを含めることができる。ルックアップテーブルは複数のビットＦＩＦＯを含むことができる。
【００１７】
当業者には、下記の好適な実施形態の説明及び添付の図面から、その他の目的、特徴及び利点が想起されるであろう。
【図面の簡単な説明】
【００１８】
【図１】外部メモリ及びメモリバスを具備する従来技術によるデジタル信号プロセッサ（ＤＳＰ）の略ブロック図である。
【図２】本発明による再構成可能な局所ルックアップテーブルを有する複数の演算ユニットを備えるデジタル信号プロセッサのブロック図である。
【図３Ａ】本発明による符号化システムの略ブロック図である。
【図３Ｂ】本発明による復号システムの略ブロック図である。
【図４】本発明による演算ユニット内のルックアップテーブルに実装された内部ビットＦＩＦＯの略図である。
【図５Ａ】ポインタレジスタのフィールド割り当てを示す図である。
【図５Ｂ】読み出し命令のフィールド割り当てを示す図である。
【図５Ｃ】書き込み命令のフィールド割り当てを示す図である。
【図６】ビッグエンディアン及びリトルエンディアンのオプションを有する、本発明によるローウォーターマーク及びハイウォーターマークの特徴の使用状態を示す図４に類似の図である。
【図７Ａ】ハイウォーターマークを使用することの有効性を示す図である。
【図７Ｂ】ローウォーターマークを使用することの有効性を示す図である。
【図８】ルックアップテーブルに実装されたビットＦＩＦＯと外部記憶装置との間の充填動作を示す図である。
【図９】ルックアップテーブルに実装されたビットＦＩＦＯと外部記憶装置との間の放出動作を示す図である。
【図１０】ルックアップテーブルに２以上のビットＦＩＦＯを実装した状態を示す。
【発明を実施するための形態】
【００１９】
後述の好適な実施形態またはいくつかの実施形態に加えて、本発明は、他の実施形態が可能であり、また、種々のやり方で具現化及び実施することができる。したがって、本発明は、その適用において、以下の説明に記載された、または図面に示された構成の細部及びコンポーネントの配置には限定されないことを理解されたい。わずか１つの実施形態のみが本願で開示されたとしても、本願の特許請求の範囲はその実施形態には限定されない。さらに、本願の特許請求の範囲は、特定の排除、制限または権利の放棄を明示する明白で説得力のある証拠がある場合を除いて、限定的に読まれるべきではない。
【００２０】
図１には、１つ以上のデジタルアドレス発生器１４、１６を有するアドレスユニット１２と、プログラムシーケンサ１８などの制御ユニットと、演算論理ユニット（ＡＬＵ）２２、乗算器／アキュムレータ（ＭＡＣ）２４、シフター２６などの複数の回路を各々が含む１つ以上の演算ユニット２０とを備えるデジタル信号プロセッサ１０が示されている。デジタル信号プロセッサには、典型的には２つ、または４つ、またはそれより多くの演算ユニットがある。デジタル信号プロセッサは、メモリバス２８を介して、プルグラムメモリ３２及びデータメモリ３４または追加のメモリ３６を含むレベル１（Ｌ１）メモリ３０などの１つまたは複数のメモリに接続されている。メモリ３０は、典型的には非常に高速でとても高価なレベル１メモリとすることができる。メモリ３６は、それより安価で低速のレベル３（Ｌ３）メモリとすることができる。１GHz以上で動作するＤＳＰ １０を使用する場合には、動作サイクルが非常に速いので、アドレスユニット及び演算ユニットは、それらの動作を完了するのに１サイクルより多くのサイクルを要する。ＤＳＰ１０のスループットを改善してその性能を高めるために、典型的には高度のパイプライン化がなされる。
【００２１】
パイプライン処理では、プロセッサの全ての並列ビルディングブロック（並列構成ブロック）に対する前の命令の結果と続く命令の結果の間に依存関係がないときには、パイプライン効果が維持される。しかしながら、そのような依存関係がある場合には、パイプラインのストール（機能停止）が発生する可能性があり、ストールすると、パイプラインは停止して、作業を再開するまで問題を生じている命令が終了するのを待つことになる。たとえば、演算結果を直接格納できないが、その演算結果の関連機能をメモリ内に見出しうるアドレスを生成するために該演算結果を使用しなければならない場合には、演算ユニットの結果とＤＡＧとの間にパイプラインのスムーズな動作を中断させる依存関係が存在する。このことを説明するのには１つの例だけで十分であろう。
【００２２】
演算ユニットが、角度αという結果を計算するが、その結果が、後続の演算を実行するのに使用されることになる角度の関数であるsinαの場合を想定する。計算すると、演算ユニットは、計算結果をアドレスユニット１２に送らなければならない。この場合、該アドレスユニット１２で、ＤＡＧ１４または１６は、メモリ３０または３６からその角度の正弦関数を取り出し、それを元に戻し、及び、演算ユニットに送るために適正なアドレスを生成する。パイプラインにおけるこのストールすなわち中断によって時間が浪費される。ＤＳＰ１０の１つの特徴は、唯一アドレスユニット１２だけがメモリ３０及び３６をアドレス指定できるということである。したがって、演算ユニットが、Ｌ１メモリ３０またはＬ３メモリ３６から動作するための情報を必要とするときは常に、ＤＡＧ１２のレジスタがロードされた以降のある段階で演算ユニットの結果が有効であるという事実により、パイプライン処理はストールしてしまう。
【００２３】
本発明によれば、本発明にしたがうＤＳＰ １０ａにおいて、図２の各演算ユニット２０ａ、２０ｂ、２０ｃ、２０ｄに、たとえば、ルックアップテーブル（ＬＵＴ）５０ａである局所再構成可能充填及び放出ランダムアクセスメモリアレイが設けられる。演算ユニット２８は、典型的には、乗算器５２、複数の選択回路５４及び５６、ガロアフィールド演算などのための多項式乗算器（polynomial multiplier）５８、バレルシフター６０、演算論理ユニット６２、アキュムレータ（ＡＣＣ）６４、及びＭＵＸ（マルチプレクサ）６６をとりわけ備えることができる。また、各演算ユニットは、レジスタファイル６８を備える。データレジスタは、演算ユニットのレジスタファイルの１つとすることができる。たとえば、図３のように、演算ユニット２０ａ、２０ｂ、２０ｃ、２０ｄというように、２つ以上の演算ユニットがある典型的な場合には、それらの演算ユニットはすべて、同じレジスタファイル６８を共有することができる。各演算ユニットはまた、それ自体の局所再構成可能充填及び放出ランダムアクセスメモリアレイであるＬＵＴ５０ａ、５０ｂ、５０ｃ、５０ｄを備える。これらの局所再構成可能充填及び放出ランダムアクセスメモリアレイは、外部メモリまで行くことなく、及び、パイプラインストールを引き起こすことなく、演算ユニットの内部でほとんどの用途（アプリケーション）をサポートするのに十分なほど大きいにもかかわらず、従来の演算ユニットに収まり、かつ、１サイクル（または１サイクル以内）でアクセスするのには十分小さい。
【００２４】
たとえば、内部演算ユニットルックアップテーブルを使用する内部構成されたビットＦＩＦＯ回路を具備する演算ユニットは、符号化処理と復号処理の両方に適用可能である。図３Ａの演算ユニット１０は、符号化（エンコード）処理において、演算ユニットに通常存在する他のコンポーネントと共に、演算論理ユニット１２、１つ以上のデータレジスタ１４、ビットＦＩＦＯ１６を備える。動作時、生のデータ、すなわち圧縮されていないビットストリーム１８が、ライン２０を通って演算論理ユニット１２に供給され、該ユニット１２は、たとえば、Ｈ．２６４、windows media（商標）、ＭＰ３などのなんらかのアルゴリズムにしたがってデータを圧縮する。圧縮されたデータは典型的には、マクロブロックなどのオペランドブロック内においてデータレジスタ１４に送られる。次に、データレジスタ１４は、これをビットＦＩＦＯ１６に送り、該ＦＩＦＯ１６は、ビデオマクロブロックなどの連続するビットストリームオペランドを圧縮されたビットストリーム２４としてライン２２を通じて提供する。
【００２５】
演算ユニット１０内に内部構成されたビットＦＩＦＯ１６を提供することに加えて、本発明は、ビットＦＩＦＯ１６にハイウォーターマーク機能を提供するという他の特徴を有する。符号化処理中に、ビットＦＩＦＯ １６内のビットの数がハイウォーターマークを越えた場合には、これは、完全なオペランド（たとえば、完全なマクロブロック）を符号化するのに十分なビットを格納するための十分な空間がビットＦＩＦＯ内にないことを示す指標であり、そのため、ビットＦＩＦＯ１６内のいくつかのビットを、典型的にはクラスＬ３記憶装置である外部記憶装置へと放出しなければならない（すなわち、送り出さなければならない）。
【００２６】
演算ユニット１０（図３Ｂ）が、復号（デコード）処理において動作しているときは、クラスＬ３記憶装置などからの圧縮されたビットストリーム２６は、ライン２８を通ってビットＦＩＦＯ１６に送られる。これらのビットは、データレジスタ１４を介して演算論理ユニット１２に送られ、該ユニット１２は、マクロブロックのオペランド内のデータ（典型的にはビデオアプリケーションにおけるデータ）を復号する。圧縮されていないデータすなわち復号されたデータは次にライン３０を通って圧縮されていないデータ３２として提供される。
【００２７】
本発明のさらなる特徴は、ビットＦＩＦＯ １６内のローウォーターマーク処理である。ローウォーターマークは限界を確定し、この限界より下では、オペランド（たとえばビデオマクロブロック）の復号を効率的に実行できず、ビットＦＩＦＯを外部記憶装置から充填しなければならない。ビットＦＩＦＯ１６内のビット数がローウォーターマークを越えているときには、ビットＦＩＦＯ １６内には、処理中にストールが起こることなくマクロブロックまたは他の定義されたオペランドを復号できるための少なくとも最少のビット数があることが確定される。
【００２８】
図４のビットＦＩＦＯ １６は、演算ユニット１０の内部に設けられた図２のＬＵＴ０：５０ａ、ＬＵＴ １：５０ｃ、ＬＵＴ ２：５０ｂ、ＬＵＴ ３：５０ｄなどのルックアップテーブルとすることができるルックアップテーブル４０内に構成されている。論理演算ユニット１２及び１以上のデータレジスタ１４に加えて、演算ユニット１０はまた、ビットＦＩＦＯ（ＢＦＦ）構成レジスタ４２、リード／ライトポインタレジスタ４４、及びウォーターマークレジスタ４６を備える。構成レジスタ４２は、実際には、ルックアップテーブル４０内にビットＦＩＦＯ１６を構成する。これは、ビットＦＩＦＯ １６が読み出され中であるか書き込まれ中であるかを示すリード／ライトフィールド４８とエンディアンフィールド５０とを有する。エンディアンフィールド５０は、ビットＦＩＦＯ１６が、ビッグエンディアンで動作しているか、すなわち、最上位ビットから開始して右から左に読み出されているか、ビットＦＩＦＯ １６が、リトルエンディアンで動作しているか、すなわち、最下位ビットから開始して左から右へ読み出されているかを示す。それはまた、ルックアップテーブル４０内にビットＦＩＦＯ１６の長さを画定するためのフィールド５２を有し、及び、ルックアップテーブル４０内にビットＦＩＦＯ １６の先頭アドレスを画定するための開始アドレスすなわちベースアドレス５４を有する。ポインタレジスタ４４は、ライトポインタ５６とリードポインタ５８を備える。図５Ａのライトポインタ５６は、ワードアドレス６０とビット位置６２を有する。リードポインタ５８はまた、ワードアドレスフィールド６４とビット位置フィールド６６を有する。それぞれの場合において、ワードアドレスは、書き込みまたは読み出しがそれぞれ行われることになるビットＦＩＦＯ１６の場所のアドレスを示し、ビット位置は、読み出し命令（図５Ｂ）と書き込み命令（図５Ｃ）によってそれぞれ指定されたアドレスにおけるビット数を示す。読み出し命令７０（図５Ｂ）は、ビットＦＩＦＯが構成されている特定のルックアップテーブルを識別するビットＦＩＦＯ識別フィールド７２を有する。読み出される指定されたビット長はフィールド７４で示され、指定された数のビットが投入される（書き込まれる）レジスタはフィールド７６で示される。書き込み命令８０（図５Ｃ）はまた、書き込まれるビットＦＩＦＯが構成されているルックアップテーブルを識別するフィールド８２、書き込まれるビット長が指定されているフィールド８４、及び、取り出されたビットが送られるレジスタを識別するフィールド８６を有する。
【００２９】
図４に戻ると、ウォーターマークレジスタ４６は、ハイウォーターマークフィールド９０とローウォーターマークフィールド９２を有する。ハイウォーターマークフィールドは、ビットの投入すなわち書き込みが行われているときの符号化処理中に重要である。ローウォーターマークは、ビットＦＩＦＯからのビットの取り出しすなわち読み出しが行われているときの復号処理中に重要である。ポインタレジスタ４４は、ビットＦＩＦＯ回路からデータレジスタへ、または、データレジスタからビットＦＩＦＯ回路へ、単一サイクル（または単一サイクル以内）で選択的に転送するために読み出し命令または書き込み命令に応答する。指定されたビットフィールドを転送することは、ビットＦＩＦＯ回路からビットフィールドを取り出して、それを、演算ユニットのデータレジスタに格納すること、または、データレジスタからビットＦＩＦＯ回路にビットフィールドを投入（格納）することを意味する場合がある。この取り出しまたは投入（格納）動作は、循環メモリであるビットＦＩＦＯ１６の状態を正確に追跡するために、モジュロＦＩＦＯ長における指定された長さだけリードポインタレジスタ内のリードポインタ、またはライトポインタレジスタ内のライトポインタをそれぞれ更新することを含む。すなわち、ビットＦＩＦＯが、たとえば、５１２ビットメモリである場合を考えると、ビットが５１２を越えると、該メモリは循環してゼロに戻り、矢印９４で示すように再び開始する。図５Ａのポインタレジスタ内のワードアドレスとビット位置は、ビットＦＩＦＯ１６内のデータを常に把握（追跡）している。
【００３０】
符号化処理の間、ウォーターマークレジスタ４６は、ＦＩＦＯがほとんど満杯で、ビットＦＩＦＯ１６からクラスＬ３などの外部メモリ１００にビットを放出すなわち開放することによって、空間を利用できるようにしなければならず、さもなければ、データオーバーラン（データのあふれ）が発生するであろうことを知らせるために、ハイウォーターマークフィールド９０を利用する。復号処理では、ローウォーターマークフィールドは、次のマクロブロックを処理するための十分なデータがＦＩＦＯにないこと、及び、外部のビットストリームメモリ１００からＦＩＦＯに補充（充填）しなければならず、さもなければ、データアンダーランが生じるであろうことを知らせる。ローウォーターマークは、十分なデータがないことによるストールを生じることなくオペランド（たとえば、ビデオマクロブロック）全体を処理可能にする十分なビットがあることを確保するための最少のビット数に設定される。
【００３１】
図６に、ローウォーターマーク１０２とハイウォーターマーク１０４のグラフィック表現を示す。図６では、ルックアップテーブル４０は上から下まで充填されている。また、ベースアドレス１０６、リードポインタ１０８及びライトポインタ１１０のそれぞれの位置も図示されている。また、図６には、ビッグエンディアンの経路、すなわち、ＭＳＢから開始して右から左へ進む経路（１１２）と、リトルエンディアンの経路、すなわち、ＬＳＢから開始して左から右へ進む経路（１１４）が示されている。外部メモリ１００に対する充填及び放出は、３２ビットワードなどの標準的なワードで行われるのが好ましく、典型的には、これらのワードはメモリ整列（ワードがメモリ内で整列すなわち位置合わせされていると、所定のビット単位またはワード単位で操作できる）しており、すなわち、それらのワードは、複数ビット（８ビット）単位、ショートワード（１６ビット）単位、ワード（３２ビット）単位、または、ダブルワード（６４ビット）単位で操作される。ルックアップテーブル４０を、従来のランダムアクセスメモリ装置で実施することができる。
【００３２】
ハイウォーターマークとローウォーターマークの処理は、図７Ａ及び図７Ｂを参照するとより良く理解することができる。図７Ａでは、ビットＦＩＦＯ１６内に多数のビット１２０があり、ライトポインタ１１０はハイウォーターマーク１０４のすぐそばに接近しつつあり、ハイウォーターマーク１０４のポイントでは、データオーバーランを回避するためにＦＩＦＯから（データを）放出しなければならない。図７Ｂでは、ビットＦＩＦＯ１６には数ビット（１２２）しかなく、リードポインタ１０８はぎりぎりのところでローウォーターマークに達しており、このことは、ビットＦＩＦＯ １６に十分なビット（１２２）があることを確証するが、ストールまたはデータアンダーランを起こすことなく、オペランド（たとえばビデオマクロブロックのデータ）を完全に処理するためにＦＩＦＯに補充しなければならない。
【００３３】
クラスＬ３の外部メモリ１００からの充填動作及び該メモリ１００への放出動作を図８と図９にそれぞれ示す。充填動作（図８）において、ビットＦＩＦＯ１６は、データレジスタ１４を介してクラスＬ３の外部メモリ１００から充填される。データレジスタ１４は、４つの８ビットすなわち１つの３２ビットワードを受け取って、それらを１２２で示す利用可能な空間内のライトポインタ１１０におけるビットＦＩＦＯ１６に送る。ビットＦＩＦＯ １６から外部メモリ１００への放出動作（図９）は、リードポインタ１０８より上のデータが、外部メモリ１００に転送するためにデータレジスタ１４に送られるときに行われる。これまで、本発明を単一の演算ユニット内の単一のルックアップテーブル内の単一のビットＦＩＦＯに関して説明してきたが、演算ユニットは、２つ以上の上記と同様に構成されたビットＦＩＦＯを有することができ、実際、単一のルックアップテーブル４０には２つ以上のビットＦＩＦＯ（ＢＦＦ）１６ａ、１６ｂ（図１０）が存在しうる。
【００３４】
本発明の特定の特徴をいくつかの図面に示し、他の図面には示さなかったが、これは、便宜のためにそうしただけであって、本発明にしたがって、それぞれの特徴を任意のまたは全ての他の特徴と組み合わせることができる。本明細書で使用されている「備える」、「からなる」、「有する」、「具備する」という用語は、広義かつ包括的なものとして解釈されるべきであり、任意の物理的な相互接続に限定されない。さらに、本願で開示した任意の実施形態だけが可能性のある実施形態であるとして解釈されるべきではない。
【００３５】
さらに、本特許出願の係属中になされた任意の補正は、出願時の本出願に提示された任意の請求項に記載の要素についての請求権を放棄するものではない。すなわち、当業者が、全ての可能な等価物を完全に包含しうる請求項を起草することは合理的に期待できることではなく、多くの等価物は、補正の時点では予測できないであろうし、それらのうちのどれが放棄されるべきか（それがあるとしても）についての公正な解釈は不可能である。また、補正の根底にある論理的根拠は、多くの等価物とは希薄な関係を有するに過ぎない場合があり、及び／または、補正された任意の請求項に記載の要素に対するいくつかの想像上の代替物を記載することを本出願人に期待することができない多くの他の理由がある。
【００３６】
当業者には他の実施形態が想起されるであろうが、それらの実施形態は添付の特許請求の範囲内にある。
【図１】
2010522928.tif 000003
【図２】
2010522928.tif 000004
【図３Ａ】
2010522928.tif 000005
【図３Ｂ】
2010522928.tif 000006
【図４】
2010522928.tif 000007
【図５Ａ】
2010522928.tif 000008
【図５Ｂ】
2010522928.tif 000009
【図５Ｃ】
2010522928.tif 000010
【図６】
2010522928.tif 000011
【図７Ａ】
2010522928.tif 000012
【図７Ｂ】
2010522928.tif 000013
【図８】
2010522928.tif 000014
【図９】
2010522928.tif 000015
【図１０】
2010522928.tif 000016
【国際調査報告】
2010522928.tif 000017