(57)【特許請求の範囲】
【請求項１】
ダイナミックランダムアクセスメモリ（ＤＲＡＭ）にアクセスし、２次元画像に関するデータワードを格納しこれを読取る方法であって、前記ＤＲＡＭは、独立した２つのバンクを含み、各バンクは、ページモードで動作してデータワードを読み出し及び書き込むことができ、前記２次元画像は、２次元格子パターンのセルとして配置され、当該２次元格子パターンは、行及び列のセルとして配置され、各セルは、画素のＭ×Ｎマトリクスを含み、各セルに関係するワードは、バンクの１以下のページを占有する方法であって、
（ａ）前記セルの各々に２つのバンクのうちのいずれかのバンクを割当てて、特定セルに関連する全てのデータワードが特定バンクの１つの特定ページから読み出され及び当該特定ページに書き込まれるようにし、各セルが同一行または同一列内の隣接セルとは異なるバンクに関係するように、セルに対するバンクの割当てが行われるステップと；
（ｂ）画素のマトリクスより構成され、前記データワードのうち非整列セルに関係するデータワードが互いに隣接するように、時計回りまたは反時計回り方向の所定順序で、前記非整列セルの下のセルに関係するデータワードを読み出すステップと；
を有することを特徴とするＤＲＡＭアクセス方法。
【請求項２】
前記ＤＲＡＭは第１及び第２バンクを含み、前記非整列セルの下の前記セルに関係するデータワードを読み出す前記ステップ（ｂ）は更に、
（ｃ）前記２次元格子パターン内のどのセルが前記非整列セルに関係するデータワードを含んでいるか識別し；
（ｄ）前記ＤＡＲＭの第１バンクから、前記非整列セルに関係するデータワードを含むとして識別された前記格子パターン内のセルの中の１つに関係するデータワードを読み出し；
（ｅ）前記ＤＲＡＭの第２バンクから、前記非整列セルに関係するデータワードを含むとして識別された前記格子パターン内のセルの中の他の１つに関係するデータワードを読み出し；
（ｆ）前記非整列セルに関係するすべてのデータワードが読み出されるまで、前記ステップ（ｄ）及び（ｅ）を繰り返す、ステップを含むことを特徴とする請求項１記載の方法。
【請求項３】
ダイナミックランダムアクセスメモリ（ＤＲＡＭ）にアクセスし、２次元画像に関するデータワードを格納しこれを読取る方法であって、前記ＤＲＡＭは、独立した２つのバンクを含み、各バンクは、ページモードで動作してデータワードを読み出し及び書き込むことができ、前記２次元画像は、２次元格子パターンのセルとして配置され、当該２次元格子パターンは、行及び列のセルとして配置され、各セルは、画素のＭ×Ｎマトリクスを含み、各セルに関係するワードは、バンクの１以下のページを占有する方法であって、
（ａ）前記セルの各々に２つのバンクのうちのいずれかのバンクを割当てて、特定セルに関連する全てのデータワードが特定バンクの１つの特定ページから読み出され及び当該特定ページに書き込まれるようにし、各セルが同一行または同一列内の隣接セルとは異なるバンクに関係するように、セルに対するバンクの割当てが行われるステップと；
（ｂ）画素のＭ×Ｎマトリクスより構成され、前記データワードのうち非整列セルに関係するデータワードが互いに隣接するように、時計回りまたは反時計回り方向の所定順序で、前記非整列セルの下のセルに関係するデータワードを読み出すステップと；
を有することを特徴とするＤＲＡＭアクセス方法。
【請求項４】
前記ＤＲＡＭは第１及び第２バンクを含み、前記非整列セルの下の前記セルに関係するデータワードを読み出す前記ステップ（ｂ）は更に、
（ｃ）前記ＤＡＲＭの第１バンクから、前記非整列セルに関係するデータワードを含む前記格子パターン内のセルの中の１つに関係するデータワードを読み出し；
（ｄ）前記ＤＲＡＭの第２バンクから、前記非整列セルに関係するデータワードを含む前記格子パターン内のセルの中の他の１つに関係するデータワードを読み出し；
（ｅ）前記非整列セルに関係するすべてのデータワードが読み出されるまで、前記ステップ（ｃ）及び（ｄ）を繰り返す、ステップを含むことを特徴とする請求項３記載の方法。
【請求項５】
前記ＤＲＡＭは第１及び第２バンクを含み、非整列セルの下の前記セルに関係するデータワードを読み出す前記ステップ（ｂ）は更に、
（ｄ）セルの所定順序で、前記非整列セルに関連するデータワードを含む前記格子パターン内の各セルに関係するデータワードを読み出すステップを含み、
前記セルの所定順序により、連続するセルから読み出されるデータワードは相互のバンクから読み出されることを特徴とする請求項３記載の方法。
【請求項６】
前記所定順序は前記非整列セルに関係するデータワードを含む前記格子内のセルの時計回り方向であることを特徴とする請求項５記載の方法。
【請求項７】
前記所定順序は前記非整列セルに関係するデータワードを含む前記格子内のセルの反時計回り方向であることを特徴とする請求項５記載の方法。
【請求項８】
前記ＤＲＡＭは第１及び第２バンクを含み、非整列セルの下の前記セルに関係するデータワードを読み出す前記ステップ（ｂ）は更に、
（ｃ）前記２次元格子パターン内のどのセルが前記非整列セルに関係するデータワードを含んでいるか識別し；
（ｄ）前記ＤＡＲＭの第１バンクから、前記非整列セルに関係するデータワードを含むとして識別された前記格子パターン内のセルの中の１つに関係するデータワードを読み出し；
（ｅ）前記ＤＲＡＭの第２バンクから、前記非整列セルに関係するデータワードを含むとして識別された前記格子パターン内のセルの中の他の１つに関係するデータワードを読み出し；
（ｆ）前記非整列セルに関係するすべてのデータワードが読み出されるまで、前記ステップ（ｄ）及び（ｅ）を繰り返す、ステップを含むことを特徴とする請求項３記載の方法。
【請求項９】
前記ＤＲＡＭは第１及び第２バンクを含み、非整列セルの下の前記セルに関係するデータワードを読み出す前記ステップ（ｂ）は更に、
（ｃ）前記２次元格子パターン内のどのセルが前記非整列セルに関係するデータワードを含んでいるか識別し；
（ｄ）セルの所定順序で、前記非整列セルに関連するデータワードを含む前記格子パターン内の各セルに関係するデータワードを読み出すステップを含み、
前記セルの所定順序により、連続するセルから読み出されるデータワードは相互のバンクから読み出されることを特徴とする請求項３記載の方法。
【請求項１０】
前記所定順序は前記非整列セルに関係するデータワードを含む前記格子内のセルの時計回り方向であることを特徴とする請求項９記載の方法。
【請求項１１】
前記所定順序は前記非整列セルに関係するデータワードを含む前記格子内のセルの反時計回り方向であることを特徴とする請求項９記載の方法。
【発明の詳細な説明】
【０００１】
関連出願
本願は１９９４年７月２９日に英国特許出願Ｎｏ．９４１５３６５．７として出願された”Ｒａｍをアクセスする方法(Method for Accessing Ram)”、１９９４年７月２９日に英国特許出願Ｎｏ．９４１５３９１．３として出願された”Ｄｒａｍのバンクをアクセスする方法(Method for Accessing Banks of Dram)”、及び１９９４年７月２９日に英国特許出願Ｎｏ．９４１５３８７．１として出願された”メモリをアドレスするための方法及び装置(Method and Apparatus for Addressing Memory)”に関連しており、これらの出願は全てDiscoVision Associatesに譲渡されている。
【産業上の利用分野】
本発明はランダムアクセスメモリ（ＲＡＭ）に関し、特にＲＡＭとのインターフェースを行う装置及び方法に関する。
【０００２】
【実施例】
本発明の特徴の１つはＲＡＭをアクセスする方法に関している。特にＲＡＭからそのＲＡＭの所定の固定バースト長(fixed burst length)Ｎより少ないワード数Ｍをアクセスする方法である。ＲＡＭはイネーブルラインを含み、このラインはＲＡＭからの読出し及びＲＡＭへの書き込みを選択的に許可及び禁止する。この方法では、最初のＮワードがＲＡＭに対してリード(read)又はライト(write)されるように指示される。次に、ＭワードがＲＡＭにリード又はライトされたときが判断される。ここでＭはＮより小さい。最後に、ＭワードがＲＡＭにリード又はライトされたことを判断した直後、ＲＡＭは禁止される。
【０００３】
本発明の他の特徴によれば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）をアクセスし、２次元画像に関するデータワードを格納及び検索する方法が開示される。ＤＲＡＭは分離した２つのバンク、即ち第１のバンク及び第２のバンクを有する。各バンクはページモードで動作し、データワードをリードライトできる。２次元画像は２次元格子パターンのセルに組織化され、各セルはＭ×Ｎマトリクスの画素を含んでいる。特定セルに関する全てのデータワードが特定バンクの特定ページにリードライトされるように、各セルに関係するワードは１ページ又は１バンク以下の容量を占める。各セルには２バンク中の一方のバンクが割り当てられる。セルに対するバンクの割当は、各セルが同一行又は同一列内に境界セルがないように、異なるバンクに関係するように行われる。
【０００４】
本発明の他の特徴によれば、非整列セル（ｕｎａｌｉｇｎｅｄ  ｓｅｌｌ）に関するデータワードはＤＲＡＭの第１バンクから最初の読出しでリードされ、格子パターン内の１つのセルに関係するデータワードは非整列セルに関係するデータワードとして認識される。そしてＤＲＡＭの第２バンクからリードがあり、格子パターン内の他のセルに関係するデータワードは、非整列セルに関係するデータワードを含む。第１及び第２バンク間の相互のリードは非整列セルに関係する全てのデータワードがリードされるまで続く。
【０００５】
本発明の他の特徴によれば、非整列セルに関係するデータワードは第１リーディングによりセルの所定の順番でリードされ、格子パターン内の各セルに関係するデータワードは、非整列セルに関係するデータワードを含んでいる。前記所定の順番は連続する次のセルからリードされたデータワードが相互バンクからリードされるように選択される。
【０００６】
本発明の他の特徴によれば、前記所定の順番は非整列セルに関係するデータワードを含むものとして識別される格子パターン内のセルの時計回転方向である。又は、前記所定の順番は非整列セルに関係するデータワードを含むものとして識別される格子パターン内のセルの時計回り方向である。
【０００７】
この発明の他の特徴はメモリをアドレッシングするための方法及び装置に関しており、特に可変幅データをアドレッシングするため及びアドレスの置き換えに使用される固定数のビットを有する固定幅ワードを使用する。
【０００８】
本発明の他の特徴によれば、フレームの画像番号を判断し、フレームの所望代表番号を判断し、画面番号が所望代表番号或いはその後の場合に、バッファをレディ状態にするステップを含み、フレームとして組織化されエンコードされたビデオデータをバッファリングするための方法が提供される。
【０００９】
本発明の他の特徴によれば、バスをＲＡＭに接続するためのＲＡＭインターフェースが提供され、このインターフェースは複数のデータワードに関係するアドレスをバスから受信する手段、バッファされたデータワードがライトされるＲＡＭに、受信したアドレスから得られる一連のアドレスを発生する手段、及びバッファされたデータワードをＲＡＭの前記発生したアドレスにライトする手段を含む。データワード受信及びバッファリング手段はスイングバッファを含むことができる。ＲＡＭはページアドレッシングモードで動作でき、アドレス発生手段は受信したアドレスに基づいて行アドレスを発生する手段及び列アドレスを発生する手段を含むことができる。ＲＡＭは例えばＤＲＡＭで、バスは２線インターフェースを含むことができ、データワード受信及びバッファリング手段は２線インターフェースを含むことができ、及び複数のデータワード並びに受信したアドレスは例えばtokenの形式である。ＲＡＭインターフェースはデータワード受信手段が複数のデータワードを受信及びバッファしたか否かを判断する手段を更に含むことができる。
【００１０】
又、本発明はバスをＲＡＭに接続するＲＡＭインターフェースを提供し、このインターフェースはＲＡＭの所定アドレスに格納された複数のデータワード、前記複数のデータワードに関係するＲＡＭアドレスを前記バスから受信する手段、ＲＡＭ内の複数のデータワードをアドレッシングし受信したアドレスから得られる一連のＲＡＭアドレスを発生する手段、ＲＡＭからリードされたデータワードをバッファリングする手段、及び前記アドレス発生手段により発生された一連のＲＡＭアドレスを使用して、複数のデータワードをＲＡＭからリードし、前記データワードをバッファ手段にライトする手段を具備する。ＲＡＭは例えばＤＲＡＭで、バスは２線インターフェースを含むことができ、アドレス受信手段は２線インターフェースを含むことができ、そして複数のデータワード並びに受信したアドレスはｔｏｋｅｎの形式でよい。ＲＡＭインターフェースは更にデータワード受信手段が複数のデータワードを受信しバッファしたか否かを判断する手段を含む。
上記本発明の特徴は５つのカテゴリーに分類でき、以下にそのカテゴリーを説明する。
【００１１】
ＪＥＤＥＣ同期ＤＲＡＭをアクセスする方法；
ＤＲＡＭのバンクをアクセスする方法；
可変幅データをアドレスするための固定幅ワード；
バッファマネージャ；及び
ＲＡＭインターフェース
同期ＤＲＡＭをアクセスする方法
図１は本発明による方法を実施するシステム１０のブロック図を示す。システム１０はステートマシン１２、インターリーバ１４、及び同期ＤＲＡＭ１６を含む。ＤＲＡＭ１６は２つのブロック３２を含む。インターリーバ１４はＤＲＡＭ１６に対するアクセス（リードライト）を制御する。インターリーバ１４はカウンタ（図示されず）を含み、このカウンタはどちらのバンク３２が最近アクセスされたかを示し、これによりインターリーバ１はバンク３２間を容易にトグルできる。
【００１２】
図１、２及び３において、ＤＲＡＭ１６の同一バンクにアドレスしたハイレベルコマンド２２のストリング（ｓｔｒｉｎｇ）１９を受信すると、ステートマシン１２は同一バンク３２にアドレスされた最適化ローレベルコマンド２０（即ちＪＥＤＥＣにより特定される７つのコマンド、及び前述のリスト）のストリング２１を発生する。ストリング２１を受信するとインターリーバ１４は要求されたアクションを実行する。
【００１３】
ハイレベルコマンド２２はＲＥＡＤ２２−１、ＷＲＩＴＥ２２−２、ＥＸＴＥＮＤ２２−３、ＩＮＴＥＲＲＵＰＴ２２−４及びＲＥＦＲＥＳＨ２２−５である。（コマンド２２はローレベルコマンド２０から明確に区別できるように全て大文字で示されている。）簡単にいうと、ＲＥＡＤ２２−１、ＷＲＩＴＥ２２−２、及びＲＥＦＲＥＳＨ２２−５コマンドの動作はそれらと同一名のローレベルコマンド２０と同一である。ＥＸＴＥＮＤ２２−３は以前のＷＲＩＴＥ２２−２又はＲＥＡＤ２２−１コマンドのアクションを繰り返すように作用する。ＩＮＴＥＲＲＵＰＴ２２−４は、後述されるように、４ワード２４で固定されるバースト長の結果として必要となるものである。一緒に用いると、コマンド２２は強力なプログラミングツールを提供する。
【００１４】
どのようにコマンド２２がＤＲＡＭ１６をアクセスするタスク(task)を簡略化するかを示す例を説明する前に、コマンド２２自体の説明を先に述べる。ハイレベルコマンド列１９の最初のハイレベルコマンド２２はＲＥＡＤ２２−１又はＷＲＩＴＥ２２−２のどちらかである。対応するローレベルコマンド列２１の第１ローレベルコマンド２０は常にアクティブコマンド２０である。各ＲＥＡＤ又はＷＲＩＴＥコマンド２２は４つの連続ワード２４がリード又はライトされるように指示している。図２に示すように、各ＲＥＡＤ又はＷＲＩＴＥコマンド２２は４つの連続するワード２４の第１のワード２４の（アクセスされる特定バンク３２内の）アドレス２６を伴っている。（ここで、ＪＥＤＥＣスタンダードではこの第１のワード２４は偶数でなければならない。）
ＤＲＡＭ１６が”自動プリチャージモード(precharge mode)”のとき、ＲＥＡＤ又はＷＲＩＴＥコマンド２２がストリング１９の中で最後のコマンド２２の場合（即ちステートマシン１２に対する次のコマンドがＤＲＡＭ１６の他のバンク３２にアドレスされる場合）、ステートマシン１２はプリチャージコマンド２０と共にリード又はライトを発し、次に適切な４つの連続ワード２４に不可欠なアドレス２６が続く。又は、ステートマシン１２はリード又はライトコマンド２０を発生し、次に不可欠なアドレス２６が続く。例えば自動プリチャージモードの場合、ストリング１９−２内の最後のコマンド２２は１０のアドレス２６を伴うＲＥＡＤ２２−１で、対応するストリング２１−２はプリチャージコマンド２０により読み込まれ、１０、１１、１２及び１３のアドレス２６が続く。
【００１５】
図２において、ＥＸＴＥＮＤ（伸張）２２−３はストリング１９−３の終端に示され、ＲＥＡＤ（ＷＲＩＴＥ）コマンド２２に続いている。ＲＥＡＤ及びＷＲＩＴＥコマンドのように、ＥＸＴＥＮＤ２２−３のフォーマットは連続する４ワード２４の最初のワード２４のアドレス２６を含む。自動プリチャージモードでは、ＥＸＴＥＮ２２−３がストリング１９−３におけるようにストリング１９の終端で発生したとき、プリチャージを伴う追加のリードライトがストリング２１に追加される。
【００１６】
本発明の他の特徴は、バースト長を４ワードに固定することであり、これによりダイナミックに変化するバースト長に適合するための複雑性が回避される。ＪＥＤＥＣスタンダードで要求される２ワード転送を扱うために、ＩＮＴＥＲＲＵＰＴ２２−４が提供される。次に図１、２及び３において，ＩＮＴＥＲＲＵＰＴ２２−３により、ステートマシン１２は４ワード長ローレベルコマンド２０のリード（又はライト）が開始する。しかし、２ワード２４がリード（ライト）された後、ステートマシン１２により、バンク３２に対するイネーブルライン３０はローになり、バンク３２をデセーブルにする。このようにして、ステートマシン１２は４ワード２４に対するリード（又はライト）のローレベルコマンドを発生するが、２ワード２４のみが実際にバンク３２に対してリード（又はライト）される。
【００１７】
勿論、イネーブルライン３０がローに落ちた後、新たな無効リード（又はライト）コマンド２０を完了するために、２クロック周期が必要である。しかし、バースト長が４ワード２４に固定されるのを許容する一方で、この方法は望まれないデータの２ワード２４を扱う必要がなくなる。
【００１８】
次に図１、２、３及び４を参照する。図４はワード２４がどのようにしてバンク３２に格納されるかを示している。図４は２次元アレイのセル５０の部分４８を示し、各セル５０はワード２４のＭ×Ｎマトリクスを含んでおり、各ワードは参照符号５４で示され、これはセル５０内のワード２４のアドレスとして機能する。特に、各セル５０はワード２４の８行×８列として示されている。セル５０は格子パターン５６に従って配置されている。
【００１９】
セル５０にはセル６０が重なっており、セル６０は（ＤＲＡＭ１６の他の部分に格納するために）下のセル５０からのワードを読むことにより生成される新たな所望セルを示す。セル６０はワード２４と整列しているが、格子パターン５６とは整列していない。セル６０はセル５０−１、５０−２、５０−３、及び５０−４に重なっている。セル５０−１及び５０−３は同一バンク３２（例えばバンク０）内に格納されるワード２４を含んでいるが、異なるページのことがある。同様に、セル５０−２及び５０−４は他のバンク３２に格納されるワード２４を含んでいるが、異なるページのことがある。
【００２０】
セル５０−１から適切なワード２４を読むために、次に示すハイレベルコマンド２２のストリング１９を用いることができる。即ち、
ＲＥＡＤ（６２，ｘ）、ＩＮＴＥＲＲＵＰＴ（６２，６２）。
【００２１】
ローレベルコマンド２０の対応するストリング２１は、
ａｃｔｉｖｅ（ｂａｎｋ０）、ｒｅａｄ（６２，６３）、ｒｅａｄ  ａｎｄ  ｐｒｅｃｈａｒｇｅ（６２，６３）である。
【００２２】
セル５０−４から適切なワード２４を読むために、次に示すハイレベルコマンド２２を用いることができる。即ち、
ＲＥＡＤ（６，ｃ）、ＩＮＴＥＲＲＵＰＴ（１４，２２）。
【００２３】
ローレベルコマンド２０の対応するストリング２１は、
ａｃｔｉｖｅ（ｂａｎｋ１）、ｒｅａｄ（６，７）、ｒｅａｄ（１４，１５，ｄｏｎ’ｔ  ｃａｒｅ，ｄｏｎ’ｔ  ｃａｒｅ）ｒｅａｄ  ａｎｄ  ｐｒｅｃｈａｒｇｅ（２２，２３，ｄｏｎ’ｔ  ｃａｒｅ，ｄｏｎ’ｔ  ｃａｒｅ）。
セル５０−３から適切なワード２４を読むために、次のハイレベルコマンド２２を用いることができる。即ち、
ＲＥＡＤ（０，ｘ）、ＥＸＴＥＮ（８，ｘ）、ＥＸＴＥＮ（１６，ｘ）、ＥＸＴＥＮ（４，ｘ）、ＩＮＴＥＲＲＵＰＴ（１２，２０）。
【００２４】
ローレベルコマンド２０の対応するストリング２１は、
ａｃｔｉｖｅ（ｂａｎｋ０）、ｒｅａｄ（０，１，２，３）、ｒｅａｄ（８，９，１０，１１）、ｒｅａｄ（１６，１７，１８，１９）、ｒｅａｄ（４，５）、リード（１２，１３）、リード及びプリチャージ（２０，２１，ｄｏｎ’ｔ  ｃａｒｅ，ｄｏｎ’ｔ  ｃａｒｅ）。
【００２５】
本発明は以上のような構造及び方法を参照して開示されたが、本発明の範囲はこれらの説明に限定されることなく、特許請求の範囲から考えられる修正及び変更を含むものである。
ＤＲＡＭのバンクをアクセスする方法
図５、６、及び１１を参照する。図１１はデジタルビデオ信号２０４から得られる画像２０８を表示するために適した表示画面２０６を有するビデオモニタ２０２を示している。デジタルビデオ信号２０４のソースはビデオデコーダ２０５である。ビデオデコーダ２０５は適当なデコード回路（図示されず）を含む。ビデオデコーダ２０５はエンコードされたビデオ信号２０９をデコードする。エンコードされたビデオ信号２０９の代表的なソースはＣＤ又はレーザディスクプレーヤ２０７又はケーブルテレビフックアップ(hook-up)２０８を含む。
【００２６】
図５には画像２０８を含む表示画面２０６の一部分が示されている。画像２０８のような画像は画素２１４から構成されている。一般に画素２１４はセル２１２内にグループ分けされている。画素２１４をセル２１２にグループ分けすることで、画像２０８を示すデジタルビデオ信号２０４は（表示画面６の他の領域も同様に）、より効果的に操作（例えば圧縮）することができる。
【００２７】
セル２１２はどのような反復パターンにも配置できるが、一般にセル２１２は直線的な格子２０９のパターン内に配置される。格子２０９のパターンは表示画面２０６に交差して延長している。各セル２１２内で、一般に画素２１４はＮ行×Ｎ列の正方形マトリクスに配置される。例えば、図６で、セル２１２は画素２１４の８行×８列のからなる。識別位置番号２１３（０〜６３）が各画素２１４に関係している。代替えの方法として、画素２１４は非正方形マトリクス（即ちＭ行×Ｎ列、ここでＭとＮは異なる数である）のグループにすることもできる。
【００２８】
図５、６及び７を参照すると、デジタルビデオ２０４は多数のデータワード２１５を含む。ＭＰＥＧデジタルビデオスタンダードでは、６データワード２１５は４画素２１４の各領域を示す必要がある。１ワード２１５はＣｂを示し、１ワード２１５はＣｒを示し、４ワード２１５はＹ（明度）を示す。
【００２９】
図５、７、１０及び１１を参照すると、ビデオデコーダ２０５はＲＡＭシステム２３０を含む。ＲＡＭシステム２３０はメモリビデオデコーダ２０５で、データワード２１５を格納するために使用する。ビデオデコーダ２０５は画面２０６上の画像２０８を生成、表示、及び操作中にＲＡＭシステム２３０からワード１２５を読出す。ＲＡＭシステム２３０はインターリーバ２３４及び２つのＲＡＭバンク２３２、即ちバンク０の２３２−０及びバンク１の２３２−１を含む。インターリーバ２３４はバンク２３２をビデオデコーダ２０５の一部分（図示されず）に接続し、ビデオデコーダ２０５は画像２０８を生成、表示、及び操作するために使用される。バンク２３２では、データワード２１５は重なる長方形のようにして図１０に示されているページ２３３に格納される。ページ２３３の代表的サイズは１０２４×８ビットワードである。
【００３０】
図５、６、及び８を参照する。ビデオデコーダ２０５に必要なことは、存在するセル格子２０９に整列されていない（以下、非整列と記載）セル２２２を読む能力である。その代わり、セル２２２はセル２１２内の画素２１４に整列されている。非整列セル２２２を読む能力は画像２０８の特徴を検索、又は連続する画像２０８間の動きを検出するために必要となる。
【００３１】
図５及び８を参照する。図５において、ＲＡＭシステム２３０から読み込まれたセル２２２−１が示されている。セル２２２−１は格子２０９には整列しておらず、従って、セル２２２−１は、４つのオーバラップするセル２１２−５、２１２−６、２１２−７、及び２１２−８から得られる画素２１４を含み得る。セル２２２−１は点線で示され、４つのセル２１２、すなわち、２１２−５、２１２−６、２１２−７、及び２１２−８に重なって見える。
【００３２】
図８は非整列リードセル２２２−１が下のセル２１２−５、２１２−６、２１２−７、及び２１２−８にどのように重なるかを詳細に示す。図５に示されるように、セル２２２−１内の識別位置番号は、セル２２２−１の境界内で且つ下にあるセル２１２−５、２１２−６、２１２−７、及び２１２−８内に含まれる画素２１４の識別位置番号２１３から導き出される。ここで、非整列リードセル２２２−１は主に下の単一セル２１２−５から描かれた画素２１４から構成されている。セル２１２−６、２１２−８、及び２１２−７から示されている画素２１４の数は各々７個、７個及び１個である。セル２１２−５からは４９個の画素が示されている。
【００３３】
図５及び８では、直線格子２０９は各セル２１２を示すデータワード２１５を含むページ２３３がどのように挿入されるかは示されていない。特定の非整列リードセル２２２の下にあるセル２１２の全てに関係する各ページ２３３はＲＡＭシステム２３０の同一バンク２３２内であると考えられる。そのようなとき、非整列リードセル２２２の生成は最悪の場合、その同一バンク２３２から４ページをアクセスする処理と、バンク２３２を３回プリチャージするための死に時間(dead time)を必要とする処理を含む。画像８上の全非整列セル２２２に関して最も悪い場合が必ず発生し、検索又は合致は非整列セル２２２がどこにあるかを特定することはなく、従って最悪のケースになることが常にある。
【００３４】
同一バンク２３２から４ページ２３３をアクセスするより、各バンク２３２から２ページをアクセルする処理、即ちインターリーブ(interleaving)の可能性を最大にする処理の方が遙かに良い。ここで問題は、図８のようなケースをどのように扱うかである。図８で非整列リードセル２２２−１の画素２１４の殆どは下の単一セル２１２−５から示されており、他の下の３つのセル２１２−６、２１２−７、２１２−８に関係するページ２３３からデータをリードするのに必要な比較的短い時間の読出しを実行しているとき、プリチャージの時間は殆どない。他の難しいケースは２つのセル２１２の実質的な部分及び他の２つのセル２１２の非実質的部分に重なる非整列リードセル２２２を含んでいる場合である。
【００３５】
本発明によれば、比較的短いリード時間の問題は、セル２１２に関係しているページ２３３を特定２次元画像２４０すなわちチェッカーボード２次元パターン２４０にインターリーブすることで軽減される。次に図９及び１０を参照する。図９はセル２１２の半分をハッチング２３９により示し、セル２１２の残りの半分をハッチング２３９がない部分で示している。セル２１２上のハッチング２３９の意味は、当該セル２１２に関係するページ２３３がバンク０即ち２３２−０内にあることを示す。セル２１２上のハッチング２３９のない部分は、当該セル２１２に関係するページ２３３がバンク１即ち２３２−１内にあることを示す。例えば、セル２１２−６はハッチングで示され、従ってセル２１２−６を示すデータワード２１５に関係するページ２３３はバンク０即ち２３２−０内に格納され、それ故バンク０即ち２３２−０からリードされなければならない。
【００３６】
本発明によれば、リード時間が比較的短いという問題は、ページ２３３に関係するセル２１２の特定２次元パターン２４０に基づいて、ページ２３３をバンク２３２内にインターリーブするインターリーバ２３４により軽減される。図９に示すように、パターン２４０はチェッカーボード（ｃｈｅｃｋｅｒｂｏａｒｄ）に酷似している。即ち格子２０９の同一行内では、同一バンク２３２内にページ２３３を有する２つの連続するセル２１２はなく、格子２０９の同一列内では、同一バンク２３２内にページ２３３を有する２つの連続するセル２１２はない。
【００３７】
チェッカーボードパターン２４０は、非整列リードセル２２２が４つのセル２１２に重なったとき、重ねられた２つのセル２１２が１つのバンク内に格納される他方で、２つの他の重ねられたセル２１２に関係するページ２３３が他のバンク２３２に確実に格納されるようにすることにより、インターリーブの可能性を最大にする。例えば図９において、セル２１２−５及び２１２−７はバンク１即ち２３２−１内のページ２３３に格納され、他方、セル２１２−６及び２１２−８はバンク０即ち２３２−０内のページ２３３に格納される（図１０を参照）。
【００３８】
インターリーブの効率を最大にするために、ページ２３３は相互バンク２３２からリードするのが望ましい。これは非整列リードセル２２２の下にある４つのセル２１２から時計回り方向又は反時計回り方向にリードすることで確実になる。時計回り方向にリードする方法の一例として、図９のセル２２２−１の下にある４つのセル２２を考える。先ず、セル２１２−５に関係するページ２３３はインターリーバ２３４によりバンク１即ち２３２−１からリードされる。そしてセル２１２−６に関係するページ２３３がリードされる。なぜなら、セル２１２−７はセル２１２−６と同一列内にありセル２１２−６の下にあるからである。最後にセル２１２−８に関係するページ２３３がリードされる。なぜなら、セル２１２−８はセル２１２−７と同一行内にあり、セル２１２−７の左にあるからである。
【００３９】
インターリーブバンク２３２のチェッカーボードパターン２４０が死に時間を減少するときのシミュレーションを次に示す。チェッカーボードパターン２４０のアスペクト比及びサイズは用途に応じて最適な値に選択することができる。唯一必要なことは、非整列リードセル２２２の下に少なくとも１つのセル２１２がワード２１５の１以下のページ２３３により示されることである。このようにして、下のセル２１２の４つの可能なリード動作は各々自ら含まれることになり、前述のメカニズムに対するインターリーブを制限している。更なる分解では更に複雑なインターリーブアルゴリズムが含まれ、死に時間を長くするであろう。
【００４０】
下のセル２１２の可能性のあるリードの各ペアは同一ページ２３３内のワード２１５を含むことがある（例えば、非整列リードセル２２２−１の下にあるセル２１２−６及び２１２−８からのワード２１５は同一ページ２３３に含むこともできる）。従って、ページ２３３からのワード２１５のリードは更に最適にすることができる。しかし、最悪のケースがまだ存在する。
【００４１】
性能を劣化せずに本発明による方法を、単一ページ２３３内に格納できる量よりも多くのデータワード２１５が必要な（Ｍ×Ｎ）の大きさを有するセル２１２に適用することもできる。図１０及び図１２を参照すると、そのようなセル２１２は副格子(subgrid)２５２により除算して副セル(subcell)２５０にされる。副セル２５０の大きさは、各副セル２５０に関係するワード２５１の数が単一のページ２３３に格納できるように選択される。図１２に示すように、同一のチェッカーボードパターン２４０を副セル５０（例えば、同一バンク２３２に格納された副セル２５０−１及び２５０−３、及び同一バンク２３２内に格納された副セル５０−２及び５０−４）に適用でき、それにより各”オーバーサイズ”セル２１２がセル２１２自身で管理できるように同様な効率的方法で管理できる。
【００４２】
本発明の構造及び方法が開示されたが、本発明の範囲は前述の説明に限定されるものではなく、特許請求の範囲に基づく修正や変更を含む。
可変幅データをアドレスする固定幅ワード
メモリをアドレスするための方法及び装置を次に説明する。特にこの処理は、固定幅ワードを使用して可変幅データをアドレスすることが要求される。実施例の様々の形式において、固定幅ワードは幅定義フィールド、アドレスフィールド、又は置換フィールドを含む。固定幅ワードの長さはアドレスされるメモリ容量により予め設定される。本発明の装置形式は、演算コア(arithmetic core)を有するマイクロコーダブルステートマシン(microcodable state machine)を含む。
マイクロコーダブルステートマシンは広範な及び（又は）複雑な計算を行うための設計に関する問題を解決するために使用する。このような設計の例としては、アドレス生成、ストリーム解剖（変化）、及びデコーディング又はフィルタタップ係数計算(filter tap cofficient calculations)がある。アドレッシングは２つの異なった特徴に対処しなければならない。この特徴とは複数ワードの変化する幅部分をアクセスするための可変長アドレス及びアドレスの置換である。本発明では、６４×３２ビット構成のＲＡＭは６４×３２ビット、１２８×１６ビット、２５６×８ビット、５１２×４ビット、１０２４×１ビット形式を有する部分的ワードでアドレスできる。
【００４３】
１９９４年７月２９日出願のDiscoVision Associatesによる英国特許出願  ”ビデオ信号を伸張する方法及び装置(Method and Apparatus for Video Decompression)”は参考として本明細書に組み込まれている。
【００４４】
多くの用途で、ワードの変化部分（フィールドとして知られている）を、置換、可変幅データアドレッシング、又はワードの他の部分の制限などのアクションのために定義することは有用である。これに関する一般的な方法は、そのワード以内でフィールド（又は複数フィールド）の幅を特定するための追加ワード（又は複数ワード）を持つことである。以下に、ワード自体の中のこの情報をエンコードする方法を説明する。この方法では、ワードを全体的に定義するためのビット数の低減、エンコードされたワードの簡素化されたデコーディング、及びいずれがエンコードされたかを直ちに見ることができるという効果がある。可変幅フィールドがそのワード内の最上位ビット(most significant bit)又は最下位ビット(least signigicant bit)に調整されている場合、このエンコード法が利用できる。
【００４５】
表１−１は可変幅フィールド（”Ｆ”として記されている）の２つの例で、ＬＳＢは８ビットワード内に定義及び調整され、”ｗ”はこれらワードの他の有力なフィールドを示す。
【００４６】
【表１】
0003741464.tif 000002
表１−２は表１−１に示されたフィールドを十分な追加ビットによりエンコードし、フィールドの最大幅を二進法で特定する一般的な方法を示す。（”ｘ”で記されるビットは”無視(don't care)”を示す）この方法では膨大な空間が必要となる。
【００４７】
【表２】
0003741464.tif 000003
表１−３は新たな方法を使用した表１−１のフィールドのエンコード例を示す。この方法は連続マーカ及び終結マーカを使用してフィールドを定義している。この場合、連続マーカは”１”で、終結マーカは”０”である。フィールドはフィールド調整された終端部（この場合はＬＳＢ）から終結マーカまでの（終結マーカを含む）全ての連続マーカとして定義されている。表１−３には終結マーカにより取られた空間のエンコードは、フィールドの開始点で固定幅ワードに追加されねばならないことが示されており、これにより終結マーカを含む追加空間による０長フィールドの定義が可能となる。
【００４８】
【表３】
0003741464.tif 000004
以上から分かるこのエンコード法の利点を以下に示す。
１．エンコーディングに必要なビット数の減少。
２．要求されるデコーディングの簡素化。これは  表１−２に示される通常必要となる”フィールド定義”の”× ｔｏ １ ｏｆ ２x”のデコードは”１  ｏｆ ２x”形式に既にあるエンコーディングに本来備わっているからである。
３．エンコーディングは更に直感的な形式で、容易に認識できる定義フィールドが可能となる。
【００４９】
このエンコーディングの用途を広げることができる。即ち終結マーカ及び連続マーカを確保して、表−３のエンコーディングを表１−４に類似させることができる。更に、”１”又は”０”の使用はこの出願を通して相互に交換できる。
【００５０】
【表４】
0003741464.tif 000005
フィールドは表１−５に示すように最上位ビット調整することもできる。これらは同様な方法で最下位ビット調整フィールドに単にエンコードされる。そのフィールドはＬＳＢに向かうＭＳＢから、最初の終結マーカ（終結マーカを含む）まで達する。表１−５に示すフィールドのエンコーディングを表１−６に示す。
【００５１】
【表５】
0003741464.tif 000006
【００５２】
【表６】
0003741464.tif 000007
最終的にフィールドはワードの最下位桁及び最上位桁の両端から同時にエンコードできる。例えば表１−７に示される２つのフィールドは表１−８のようにエンコードでき、前述した理由により各フィールドに１ビットのみの追加が伴う。
【００５３】
【表７】
0003741464.tif 000008
【００５４】
【表８】
0003741464.tif 000009
図２１は前述した内容を一般化したものを示す。データをアドレスするために必ずしも必要ではないアドレスフィールドは終結マーカ及び連続マーカを有するフィールドを含んでいる。この場合、フィールドは調整された最下位ビットである。
【００５５】
メモリアドレス部分を他の値で置き換えると都合のよう場合がある。この方法では、データの従属アドレスを構成することが可能である。このエンコーディング法はメモリのアドレスに適用して、アドレスのどの部分が置き換えられるかを特定する。最下位ビット調整された可変長フィールドがこのアドレスに使用される場合、置き換えフィールドを定義できる。例えば１２ビットアドレス Obaaaaaaaaaaaa を、５つの最下位ビットを１２ビット値 Obcccccccccccc によって置き換えてエンコードすると、 Obaaaaaaa011111 で、アドレスObaaaaaaaccccc を発生する。表１−９は１２ビットアドレスへの置き換えのためのエンコーディングを示す。
【００５６】
【表９】
0003741464.tif 000010
図１９において、アドレッシング用の固定幅ワードはオプションの置き換えインジケータ(indicator)を伴うアドレスフィールドを有している。前述したように置き換えフィールドは可変サイズを有し、外側アドレッシングソースをアドレスビット”ａ”の可変量に置き換える機能を有する。置き換えは終結マーカビット”ｙ”及び連続マーカ”ｘ”の場所で発生する。
【００５７】
終結マーカは置き換えが停止したアドレスデコーディング回路を知らせる機能を有する。
【００５８】
置き換えが常に使用される場合、インジケータの必要はない。しかし、置き換えインジケータにより置き換えを最適に使用できる。
【００５９】
本発明の一実施例は、メモリをその全幅又はその全幅までの２n幅（これら短いワードは部分ワードと呼ばれる）でアクセスできる。どのようにして可変フィールドエンコーディングを、このメモリをアドレスするために使用できるか、及びそれらアドレスをメモリに示すために使用できるかを次に示す。
【００６０】
３２、１６、８、４、２及び１ビットの幅で６４×３２ビットレジスタファイルをアクセスためには、異なる長さのアドレスが必要である。最大で１６ビットの２倍で３２ビット位置、及び３２ビット位置より多い３２倍と１ビット位置がある。更にこのアドレスの８ビットまでインデックスレジスタにより置き換えることができる。従って、情報の可変量は必ず固定数のマイクロコードビットにコード化される。１つの方法はその幅に対して及び置き換えられるＬＳＢの数に対して３ビットフィールドを有し、そのアドレスに対して１２ビットを有することで、これにより１８ビットのマイクロコードワードを与える。しかし、より良い方法は、最上位桁調整された可変長フィールドを使用して、アドレスを定義できる幅に制限することで、従ってアクセスの幅が定義できる。例えば、６ビットアドレスは３２ビットアクセスを示し、一方１２ビットアドレスは１ビットアクセスを示す。（これは表１−１０に示されており、連続マーカは”０”；終結マーカ”１”。）どのように可変幅フィールドがアドレス”ａ…ａ”を制限してその幅及びアクセス幅を定義するかが分かる。アドレッシングのための固定幅ワードの一般的な例を図１８に示す。
【００６１】
【表１０】
0003741464.tif 000011
アドレス位置のインデックスを可能とするために、アドレス”ａ…ａ”の部分は代替えの値で置換することができる。アドレスの置換部分（又はフィールド）は最下位桁ビット調整された可変長フィールドにより定義することができ（連続マーカ”１”；終結マーカ”０”）、そのフィールドは表１−１０に示されるそれらの最上部に重畳されている。８ビットワードのアドレスを使用して、表１−１１の例は、置換できる最下位ビットの数をどのように定義するかを示している。追加された最下位ビットは置き換えインジケータ（”ｗ”として示す）である。置換の為の固定幅ワードの一般的なケースを図２０に示す。
【００６２】
【表１１】
0003741464.tif 000012
実際、置き換えコードは既にコード化されたアドレスの最上部に重ねられる。
【００６３】
このコーディングから異常アドレス、例えば０×００００及び０×３ｆｆがあるのが分かる。この場合、”０”は８ビットを越えて置き換わるのを防ぐために下部９ビット以内でなければならず、上位６ビット内の”１”は許容できるアクセス幅を特定する。これらエラーの１つが発見されて場合、アクセスは定義されないがレジスタファイルの内容は影響されない。
【００６４】
レジスタファイル内の部分ワードをアドレッシングするための装置及びアクセスするための方法を次に説明する。従来のメモリ回路ではメモリは常にその全ビットでアクセスしなければならない。可変幅アクセスを達成するために、全幅（３２ビット）ワードがリードされる。この全ワードはアクセスされた部分ワードがＬＳＢで調整されるまで回転される。ワードの上部は全幅まで伸張され、それから出力される。伸張は、０又は１でパディング（ｐａｄｄｉｎｇ）することを含んでもよく、新たなＭＳＢとしてサイン（ｓｉｇｎ）の大きさを示す数に対応するサインビット又は同様な従来の方法を使用して、サイン伸張を含んでもよい。伸張は動作モードに依存している。部分ワードが入力されメモリに書き戻される場合、それは回転した全ワードに多重帰還（ｍｕｌｔｉｐｌｅｘｅｄ  ｂａｃｋ）され、それは後方に回転しアレイに書き込まれる。図１５は３２ビットワードの第４の４ビットワード内の４ビット部分ワードのアクセスに関するこれらのステップを示す。
【００６５】
図１５の行”１”内の強調された４ビットワードのような部分ワードをアクセス又はリードするために、全幅ワードは部分ワードを行”２”に示すようにＬＳＢに配置するために回転しなければならない。行”３”に示すように、４ビットワードは伸張され、生成全(create full)３２ビットワードを生成する。このワードを次にアクセスできる。
【００６６】
書き戻されるように選択された全幅ワードはオリジナルの部分ワードの幅に短縮され、それはＬＳＢでの行”２”内に示されるワード内に多重送信される。これを行”４”内に示す。その結果生じるワードはリードワード内のそのオリジナルの桁内に回転して戻される。これを行”５”に示す。この全ワードは次にレジスタファイルに書き戻すことができる。
【００６７】
図１５内の番号で示されるステップの概略を以下に示す。
１．メモリから全ワードをリードし、
２．１２ビット右回転は部分ワードをＬＳＢに設定し、
３．全ワードまで伸張し、出力に送信し、
４．入力した部分ワードは（２）からの回転された全ワードに多重送信し、
５．１２ビット左回転は全ワードを、書き込まれるオリジナル内へ設定する。
上記アクセスは図１６に示すメモリのデータフロー構造を示唆する。この構造内の番号は上記テキスト及び図１５に対応する。
【００６８】
メモリアドレスはデコードされて上記構造を制御しなければならない。ここで、如何なる幅のアドレスのＭＳＢもメモリに関して同一桁位置である。デコードされたアドレスの上位６ビットは３２ビットワードアドレスで、残りはビットアドレスである。従ってデコーディング部（置換と並列）は、最上位終結マーカの位置を検出することにより、アドレス幅定義可変フィールドをデコードする。これにより、アドレスをＭＳＢ調整（ＬＳＢで０をシフト）できる。上位６ビットはメモリをアドレスする３２ビットワード行アドレスとして直接使用できる。下位６ビットは両方のバレルシフター(barrel shifters)を直接制御するために使用できる（図１６参照）。なぜなら、例えばオリジナル３２ビットアドレスは0b00000（これらはアドレスがＭＳＢ調整された場合にシフトされている）のシフトを有するからであり、同様に１６ビットアドレスは0bx0000、即ち６ビットシフトを有することができ、ビットアドレスは0bxxxxx、即ち０〜３１ビットシフトを有することができる。伸張器(extender)及び入力マルチプレクサはアクセス幅デコードにより制御され、出力ワードをマスクし、入力ワードを適切な桁に各々多重送信する。デコードのブロック図を図１７に示す。この図から幅と置換に関する可変幅フィールドのデコードは並列及び別々に行うことができるのが分かる。
【００６９】
図２０は可変幅データをアドレスするための１３ビット長の固定幅ワード、及び図に示される下部２行の一例を示す。これらの例で、８ビットワードは位置0b1101ssssでアドレスされたであろう。ここで”ssss”は他のアドレスソースから置き換えられている。
メモリアドレスへの置換及びメモリの可変幅アクセスは、マイクロコード化できるステートマシンの導入とと共に導入でき、このマシンの構造を図１３に示す。この構造はマイクロコード命令と呼ばれる制御信号の幅ワードを用いて演算コアを制御する状態マシンの１つである。演算コアはステータスフラグ及び幾つかのデータをステートマシンに送る。
【００７０】
ステートマシンはマイクロコード命令のリストを含むメモリからなる。従来のマイクロコードできるステートマシンのように、マイクロコード命令のリストを連続的に処理できるか、又はあらゆる命令を他のものにジャンプできる。ジャンプアドレスは図１９の形式である。置換された値は図１３及び１４に示すように演算コアから来る。これにより、”ジャンプテーブル”をマイクロコードプログラム内に構成できる。従ってジャンプが例えば置き換えられた３ビットによりなされた場合、演算コアからの値に依存してジャンプすることのある８つの接触している位置が有り得、従ってそれはプログラマブルジャンプとなる。
【００７１】
図１４に示す演算コアはレジスタファイルと呼ばれるメモリ、演算論理ユニット（Arithmetic and Logic Unit:ALU)、入力ポート及び出力ポートから構成される。これらの構成要素はバス及びマルチプレクサによって接続されている。前述したようにそれらの接続を定義しているマルチプレクサなどはステートマシンにより発せられたマイクロコード命令によって全て制御されている。ＡＬＵ及びポートは一般的なものであるが、レジスタファイルはそれに対する可変幅インデックスアクセスを可能とするメモリである。
【００７２】
レジスタファイルにアドレッシングするこの方法を使用する利点は第１に、アプリケーション内の多くの位置がメモリ（ここでは３２ビット）の全幅である必要がないことである。全幅ロケーションを使用することは装置の動作に何の影響も与えないが、これはメモリロケーションの浪費である。使用されるメモリロケーションの数を最小に抑えることはそのメモリによって使用される空間を極小にし、従ってレジスタファイル内の容量負荷を極小にし、その結果レジスタファイルの動作速度を最大にする。第２に、メモリアクセスの可変幅と組み合わされるインデックスにより、可変幅のロケーションを介したステッピングが可能となる。１ビットの場合、長い分割及び多重送信の好適な実施が可能となる。
【００７３】
前述の概要では、以下のステップを有するメモリをアドレッシングする方法が開示される。即ち、可変幅データをアドレッシングするために使用される所定の固定数ビットを有する固定幅ワードを提供し、終結マーカとして機能する少なくとも１ビットを有する前記幅定義フィールドを提供するアドレスフィールドと幅定義フィールドとを有する固定幅ワードを定義し、データのアドレスを定義する複数のビットを有するアドレスフィールドを定義し、アドレスフィールド内のビットのサイズを可変幅データのサイズに対して逆比例で変更し、幅定義フィールド内のビット数を可変幅データのサイズに対して正比例で変更し、幅定義フィールド及びアドレスフィールドの幅を変化させると共に可変幅データをアドレッシングするための固定幅を維持する。更に、次のステップを有するメモリのアドレッシング方法が開示される。即ち、データをアドレッシングするために用いられる所定の固定数ビットを有する固定幅ワードを提供し、アドレスフィールド及び置換フィールドを有する固定幅ワードを定義し、データのアドレスを定義するための複数のビットを有するアドレスフィールドを定義し、少なくとも置換の１ビットを有する可変幅置換フィールドを定義し（ここで置換フィールドはアドレスフィールドと置換フィールド間の終結マーカとして機能する少なくとも１ビットを有する）、前記置き換えフィールドを使用して分離アドレッシングソースからの置き換えられたビットを指し示し、アドレスフィールドの幅及び置換フィールドの幅を逆比例で変化すると共に可変幅データをアドレッシングするための固定幅ワードを維持する。更に、メモリ内の可変幅データをアドレッシングするための次のステップを有する処理が提供される。即ち、部分ワードからなり所定幅のワードを有するメモリを提供し、アクセスされる部分ワードを回転して最下位ビット調整し、アクセスされたワードが部分ワードとして認識されるようにワードの残りの部分を伸張し、ワードの前記残りの部分を復元し、部分ワードがその本来の位置に復帰するまでワードを回転する。
バッファマネージャ
図２４は画像フォーマッタを示し、書き込み４１０用及び読出し用４２０の２つのアドレス発生器、前記２つのアドレス発生器４１０及び４２０を管理し、フレーム率変換を提供するバッファマネージャ、垂直及び水平アップサンプラーを含むデータ処理パイプライン、カラー・空間変換及びガンマ補正、及び前記処理パイプラインの出力を制御する最終制御ブロックにより構成されている。
【００７４】
画像フォーマッタの入力に到達するトークン(token)はＦＩＦＯ４４０内にバッファされ、バッファマネージャ４３０に転送される。このブロックは新たな画面の到達を検出し、それぞれを格納するバッファの利用可能性を判断する。利用できるバッファがある場合、それは到達した画面に割り当てられ、そのインデックスはライトアドレス発生器４１０に転送される。利用できるバッファがない場合、入力ピクチャは１つのバッファが解放されるまで立ち往生する。全てのトークンは書き込みアドレス発生器４１０に送られる。この動作は１９９４年３月２４日出願の英国特許出願Ｎｏ．９４０５９１４．４に詳細が説明されており、参考として本出願に組み込まれている。
【００７５】
アドレス発生器４２０がＶＳＹＮＣ信号をディスプレイシステムから受信する度に、バッファマネージャ４３０に対して新たな表示バッファインデックスに関する要求が発生する。完全なピクチャデータを含むバッファがあり、そのピクチャが直ちに表示できるとものである場合、バッファのインデックスは表示アドレス発生器に送られる。そうでない場合、バッファマネージャは表示される最後のバッファのインデックスを送る。動作を開始するとき、インデックスとして０が第１バッファが一杯になるまで送られる。その番号（各ピクチャが入力される毎に計算される）が、与えられたフレーム率でそのディスプレイに予想されるピクチャ数（提出数）以上の場合、ピクチャは表示可能と判断される。予想されるピクチャ数はピクチャクロックパルスを計数することにより判断される。ここでピクチャクロックは、クロックドライバによってローカルに発生するか、又は外部から入力してもよい。この技術により、フレーム率変換（例えば２−３プルダウン）が可能となる。
【００７６】
外部ＤＲＡＭをバッファに使用でき、その数は２つ又は３つである。
【００７７】
バッファマネージャ４３０の目的は、ピクチャデータのリードライトに用いる２つ又は３つの外部バッファを示すインデックスをアドレス発生器に供給することである。これらインデックスの割当は３つの主要要因に影響される。各要因は動作のタイミングレジメ(timing regimes)の１つに影響を示している。即ち、画像フォーマッタの入力にピクチャデータが到達する速度（コード化データ速度）、データが表示される速度（表示データ速度）、及びエンコードされたビデオシーケンスのフレーム速度（提出速度）である。
【００７８】
３バッファシステムにより、与えられたシステムのタイミング条件の下で、フレームの最も適切なシーケンスを達成するためにフレームが反復又はスキップするように、提出速度と表示速度を互いに異なる値にすることができる。デコーディングが幾分難しいピクチャも又、ピクチャがデコードするために利用できる時間より多くの時間を取る場合、他のもの全てが遅れを取り戻している間に以前のピクチャが反復されるように同様に対応できる。
【００７９】
バッファマネージャは各外部バッファに関係するステータス情報を維持することにより動作する。この情報はバッファが使用中か、データで満杯か、又は表示可能か否か、及びバッファに現在格納されているピクチャのシーケンス以内のピクチャ数を示すフラグを含む。提出数も又記録され、この数はピクチャクロックパルスが受信される度に増加される数で、エンコードされたシーケンスのフレーム速度に基づいて表示のために現在予想されるピクチャ数を示す。
【００８０】
到着バッファ（入力データが書き込まれるバッファ）は入力にＰＩＣＴＵＲＥＳＴＡＲＴトークンが検出される度に割り当てられ、このバッファはＩＮ  ＵＳＥのフラグで示される。ＰＩＣＴＵＲＥ  ＥＮＤのとき、到着バッファは割当解除（０にリセット）され、ピクチャ数と提出数の間の関係に依存してＦＵＬＬ又はＲＥＡＤＹフラグで示される。
【００８１】
表示アドレス発生器はｖｓｙｎｃ毎に、２線インターフェースを介して新たな表示バッファを要求する。ＲＥＡＤＹのフラグで示されるバッファがある場合、それはバッファマネージャによって表示に割り当てられる。ＲＥＡＤＹのフラグで示されるバッファがない場合、以前に表示されたバッファが反復される。
【００８２】
提出数が変化する毎にこれは検出され、完全なピクチャを含むバッファはそのピクチャ数と提出数の間の関係を調べることによって、そのレディネス(READY-ness)がテストされる。次にバッファが考慮され、何れか１つがレディと判断された場合、それは以前にＲＥＡＹフラグで示された全てのレディネスを自動的にキャンセルする。そしてそれはＥＭＰＴＹフラグで示される。
【００８３】
Ｈ２６１でのＴＥＭＰＯＲＡＬ  ＲＥＦＥＲＥＮＣＥトークンにより、入力ストリーム内にスキップされたピクチャがあることが検出された場合、バッファのピクチャ数は修正される。ＭＰＥＧ内のＴＥＭＰＯＲＡＬ  ＲＥＦＥＲＥＮＣＥトークンには影響されない。
【００８４】
ＦＬＵＳＨトークンにより、入力は全てのバッファがＥＭＰＴＹ又は表示バッファとして割り当てられるまで立ち往生する。そして提出数及びピクチャ数はリセットされ、新たなシーケンスが開始可能となる。
【００８５】
全てのデータは入力ｆｉｆｏ、ｂｍ  ｆｒｏｎｔからバッファマネージャへ入力される。この転送は２線インターフェースを介して行われ、データ幅は８ビット幅と伸張ビットを足した値である。バッファマネージャに到着する全てのデータは完全なトークンとして保証されており、提出数及び表示バッファを継続して処理する必要性が、データアップストリーム内に著しいギャップが発生した場合に発生する。
【００８６】
トークン（８ビットデータ、１ビット伸張）は２線インターフェースを介してライトアドレス発生器に転送される。到着バッファインデックスも又、ＰＩＣＴＵＲＥ  ＳＴＡＲＴトークンがｗａｄｄｒｇｅｎ（ｗｒｉｔｅ  ａｄｄｒｅｓｓ  ｇｅｎｅｒａｔｏｒ、ライトアドレス発生器）に到着したときと同時に正しいインデックスがアドレス発生用に利用できるように、同一インターフェースで転送される。
【００８７】
リードアドレス発生器へのインターフェースは２つの分離２線インターフェースからなり、これらは’リクエスト’及び’アクノリッジ(acknowledge)’信号と各々考えることができる。しかし、２つの２線に基づくステートマシンがどちらかの終端にある場合、単一線形式は適当ではない。
【００８８】
ｄｉｓｐａｄｄｒインターフェースに通常関係する場合のシーケンスは次のようになる。ｄｉｓｐａｄｄｒは表示装置からのｖｓｙｎｃに応じて、バッファマネージャにｄｒｑ  ｖａｌｉｄ入力を主張し要求を待ち；ｄｉｓｐ  ｖａｌｉｄ線が主張されバッファインデックスが転送され；通常このバッファインデックスはｄｉｓｐａｄｄｒにより即座に受け付けられる。この最後の２線インターフェースに関係する追加の線（ｒｓｔ  ｆｌｄ）があり、これは現在のインデックスに関係するフィールド数は以前のフィールド数によらずリセットされなければならない。
【００８９】
バッファマネージャブロックは４ビットのマイクロプロセッサアドレス空間を８ビットデータバス及びリードライトストローブと共に使用する。２つの選択信号があり、一方はユーザがアクセスできるロケーションを示し、他方は通常動作条件の下でアクセスの必要がないテストロケーションを示す。
【００９０】
バッファマネージャは２つの異なるイベント、即ち発見されたインデックスと遅延到着を生成することができる。これらの中で最初のものは、そのＰＩＣＴＵＲＥ  ＳＴＡＲＴ伸張バイト（ピクチャインデックス）が始動時にＢＵ  ＢＭ  ＴＡＲＧＥＴ  ＩＸレジスタに一致するピクチャが到着したときに主張される。第２のイベントは、ピクチャ数が現在の提出数より少ない、即ちバッファマネージャまでのシステムパイプライン内の処理が提出要求と歩調を合わせるように管理されなかった表示バッファが割り当てられたときに発生する。ピクチャクロックは提出数カウンタに対するクロック信号で、チップ上で発生するか又は外部（通常は表示システム）から入力される。バッファマネージャはこれら両方の信号を受け入れ、ｐｃｌｋ  ｅｘｔ（バッファマネージャの制御レジスタ内の１ビット）に基づいて、どちからの信号を選択する。この信号は又、画像フォーマッターが自分の画像クロックを発生しているとき、この信号がチップからの出力として利用できるように、パッド（抜き取りパッド）用のイネーブルとしても機能する。
【００９１】
バッファマネージャのステートマシン内には１９のステートがある。これらは図２５に示すように相互に作用する。リセットステートはＰＲＥＳＯで、メインループが初期状態で循環するようにフラグは０にセットされる。
【００９２】
ステートマシンのメインループは図２６（図２５の主要部分）に示す状態からなる。状態ＰＲＥＳ０及びＰＲＥＳ１は信号ｐｒｅｓｆｌｇを介したピクチャクロックの検出に関している。関係するテストには２サイクルが許容される。なぜなら、それらは全てｒｄｙｔｓｔの値に依存しているからである。提出フラグが検出された場合、全てのバッファは可能な’レディネス’について試験される。そうでなければステートマシンはステートＤＲＱに対して進むだけである。ＰＲＥＳ０〜ＰＲＥＳ１ループ周りの各サイクルでは、フル及びレディ条件をチェックして異なるバッファが調べられる。もしそれらが合致した場合、以前のレディバッファ（１つ存在している場合）はクリアされ、新たなレディバッファが割り当てられ、そのステータスは更新される。この処理はバッファが調べられ（ｉｎｄｅｘ＝＝ｍａｘ  ｂｕｆ）、ステートが進むまで繰り返される。バッファは次に示す条件が真実のときレディと考えられる。
（ｐｉｃ  ｎｕｍ＞ｐｒｅｓ  ｎｕｍ）＆＆（（ｐｉｃ  ｎｕｍ−ｐｒｅｓｎｕｍ）＞＝１２８）
又は
（ｐｉｃ  ｎｕｍ＜ｐｒｅｓ  ｎｕｍ）＆＆（（ｐｒｅｓ  ｎｕｍ−ｐｉｃｎｕｍ）＜＝１２８）
又は
ｐｉｃ  ｎｕｍ＝＝ｐｒｅｓ  ｎｕｍ
ステートＤＲＱは表示バッファに対するリクエストをチェックする（ｄｒｑ  ｖａｌｉｄ  ｒｅｑ  ＆＆  ｄｉｓｐ  ａｃｃ  ｒｅｇ）。リクエストがない場合、ステートは（通常、このレター以上のステートＴＯＫＥＮへ）進む。そうでない場合、表示バッファインデックスが次のように発せられる。即ち、レディバッファがない場合、以前のインデックスが再び発せられ、または以前の表示バッファがない場合、ヌル(null)インデックスが発せられる。バッファが表示レディの場合、そのインデックスが発せられ、そのステートが更新される必要があれば以前の表示バッファはクリアされる。そしてステートマシンは前のように進む。
【００９３】
ステートＴＯＫＥＮはメインループを完了するための通常のオプションである。即ち、有効入力があり、出力が立ち往生していない場合、ｔｏｋｅｎｓが有利な値（後述される）に関して調べられる。そうでない場合、制御はステートＰＲＥＳ０に戻る。
【００９４】
制御は或条件が合致したときメインループから分岐する。
【００９５】
ＰＲＥＳ０−ＰＲＥＳ１ループの間、バッファがレディであるか判断され、以前のレディバッファは空きになる必要がある。なぜなら、１つのバッファのみを常にレディに指定できるからである。ステートＶＡＣＡＴＥ  ＲＤＹは旧いバッファをそのステートをＶＡＣＡＮＴに設定することによりクリアし、そして制御がＰＲＥＳ０ステートに戻るときに、全てのバッファがレディネスにつてテストされるように、バッファインデックスは１にリセットされる。この理由は、インデックスは現在までに以前のレディバッファを（それをクリアする目的で）指し示しているからであり、我々の意図する新たなレディバッファインデックスの記録がないからである。従ってこれは全てのバッファをリセットするために必要である。
【００９６】
表示バッファインデックスの割当は、ステートＤＲＱ（ステートＵＳＥ  ＲＤＹ）から直接、或いは旧い表示バッファステートをクリアするステートＶＡＣＡＴＥ  ＤＩＳＰを介して行われる。選ばれた表示バッファはＩＮ  ＵＳＥのフラグで示され、ｒｄｙ  ｂｕｆは０に設定され、インデックスは１にリセットされ、ステートＤＲＱへ戻る。ｄｉｓｐ  ｂｕｆには必要なインデックスが与えられ、２線インターフェース配線は（ｄｉｓｐ  ｖａｌｉｄ  及び  ｄｒｑ  ａｃｃ）がそれに従って制御される。ステートＴＯＫＥＮ、ＦＬＵＳＨ  及びＡＬＬＯＣ間の判断はステートＵＳＥ  ＲＤＹでは行う必要がないようにするためだけの目的で制御はステートＤＲＱに戻る。
【００９７】
ＰＩＣＴＵＲＥ  ＥＮＤトークンを受信すると、制御はステートＴＯＫＥＮからステートＰＩＣＴＵＲＥ  ＥＮＤに移行する。ここでインデックスが現在到着したバッファをまだ指し示していない場合、そのステータスを更新できるようにインデックスはそのバッファを指し示すようにセットされる。ｏｕｔ  ａｃｃ  ｒｅｇ及びｅｎ  ｆｕｌｌの両方が真実の場合を仮定すると、ステータスは後述するように更新される。真実でない場合、制御はそれらが両方共に真実になるまでステートＰＩＣＴＵＲＥ  ＥＮＤに留まる。ｅｎ  ｆｕｌｌ信号はライトアドレスス発生器によって供給され、その信号はスウィングバッファが振られた（例えば最後のブロックが正常に書き込まれ、バッファステータスを安全に更新した）ことを示す。
【００９８】
完了したばかりのバッファはレディネスがテストされ、ＦＵＬＬ又はＲＥＡＤＹステータスがそのテストの結果に応じて与えられる。レディの場合、ｒｄｙ  ｂｕｆにはそのインデックスの値が与えられ、ｓｅｔ  ｌａ  ｅｖ信号（後に到着したこと）はハイ（期待されるディスプレイがデコーディングの間に前進したことを示す）にセットされる。ａｒｒ  ｂｕｆの新たな値は０であり、以前のレディバッファがそのステータスのクリアを必要とする場合、インデックスはそこを指し示すように設定され、制御はステートＶＡＣＡＴＥ  ＲＤＹに移る。そうでない場合、インデックスは１にリセットされ、制御はメインループの開始点に戻る。
【００９９】
ＰＩＣＴＵＲＥ  ＳＴＡＲＴトークンがステートＴＯＫＥＮの間に到着したとき、フラグｆｒｏｍ  ｐｓがセットされ、これにより、基本ステートマシンループは、ステートＡＬＬＯＣがステートＴＯＫＥＮの代わりに訪れるように変化する。ステートＡＬＬＯＣは到着バッファ（到着したピクチャデータをこのバッファに書き込むことができる）の割当、及びステータスがＶＡＣＡＮＴであるものをそれが発見するまでのバッファを介したサイクルに関係している。バッファはｏｕｔ  ａｃｃ  ｒｅｇがハイのときに割り当てられるだけである。なぜなら、それはデータ２線インターフェース上に出力され、それでループ周りの動作はこれがその場合になるまで継続することになるからである。適当な到着バッファが発見されると、インデックスがａｒｒ  ｂｕｆに割り当てられ、そのステータスはＩＮ  ＵＳＥとしてフラグ表示される。インデックスは１にセットされ、フラグｆｒｏｍ  ｐｓはリセットされ、ステートはＮＥＷ  ＥＸＰ  ＴＲに進むようにセットされる。チェックがピクチャのインデックス（ＰＩＣＴＵＲＥ  ＳＴＡＲＴの次のワード内に含まれる）に対して行われ、それがｔａｒｇ  ｉｘ（セットアップのときに特定される目的インデックス）と同一かどうか判断され、同一の場合、ｓｅｔ  ｉｆ  ｅｖ（インデックスの発見されたイベント）はハイにセットされる。
【０１００】
３つのステートＮＥＷ  ＥＸＰ  ＴＲ、ＳＥＴ  ＡＲＲ  ＩＸ及びＮＥＷ  ＰＩＣ  ＮＵＭは新たに期待される一次的参照及び入力データに関するピクチャ数を設定する。ここで、中間ステートは正しいピクチャ数レジスタが更新されるように（ｔｈｉｓ  ｐｎｕｍも又更新される）、インデックスをａｒｒ  ｂｕｆにセットする。そして制御はステートＯＵＴＰＵＴ  ＴＡＩＬに進む。このステートはローの伸張に遭遇するまで（この点でメインループが再スタートする）、データ（好適な２線インターフェース信号と仮定する）を出力する。これはデータブロック（６４項目）全体が出力されることを意味し、その中で提出フラグまたは表示リクエストに関するテストはない。
【０１０１】
データストリーム内のＦＬＵＳＨトークンは、シーケンス情報（提出数、ピクチャ数、ｒｓｔ  ｆｌｄ）をリセットすべきことを示す。次第にＦＬＵＳＨに近づく全てのデータが正しく処理され、従って、全てのフレームがディスプレイに送られたことが確認されるまで全てのバッファのステータスをモニタするために、即ち、殆どバッファの中の１つがステータスＥＭＰＴＹを有し、他のバッファがＩＮ  ＵＳＥ（表示バッファのように）であることをモニタするために、ＦＬＵＳＨが受信されていることが必要である。この時点で、’新たなシーケンス’が安全にスタートできる。
【０１０２】
ＦＬＵＳＨトークンがステートＴＯＫＥＮで検出された場合、フラグｆｒｏｍｆｌがセットされ、これにより基本的ステートマシンループは、ステートＦＬＵＳＨがステートＴＯＫＥＮの代わりに訪れるように変化する。ステートＦＬＵＳＨは各バッファのステータスを順番に調べ、バッファがディスプレイのようにＶＡＣＡＮＴまたはＩＮ  ＵＳＥになるのを待つ。ステートマシンは条件が真実になるまで単位ループの周りを巡回するだけであり、そのインデックスをインクリメントし、全てのバッファが訪れられるまでその処理を繰り返す。最後のバッファがその条件を満たしたとき、提出数、ピクチャ数、及び全ての一次的参照レジスタはそれらのリセット値を仮定する。即ちｒｓｔ  ｆｌｄは１にセットされる。フラグｆｒｏｍ  ｆｌはリセットされ、通常のメインループ動作が再開される。
【０１０３】
ＴＥＭＰＯＲＡＬ  ＲＥＦＥＲＥＮＣＥトークンが遭遇したとき、チェックがＨ２６１ビットについて行われ、セットされていれば、４ステートＴＥＭＰ  ＲＥＦ０〜ＴＥＭＰ  ＲＥＦ３が訪れられる。これらは次のように動作する。
ＴＥＭＰ  ＲＥＦ０：ｔｅｍｐ  ｒｅｆ＝ｉｎ  ｄａｔａ  ｒｅｆ；
ＴＥＭＰ  ＲＥＦ１：ｄｅｌｔａ＝ｔｅｍｐ  ｒｅｆ−ｅｘｐ  ｔｒ；ｉｎｄｅｘ＝ａｒｒ  ｂｕｆ；
ＴＥＭＰ  ＲＥＦ２：ｅｘｐ  ｔｒ＝ｄｅｌｔａ＋ｅｘｐ  ｔｒ；
ＴＥＭＰ  ＲＥＦ３：ｐｉｃ  ｎｕｍ［ｉ］＝ｔｈｉｓ  ｐｎｕｍ＋ｄｅｌｔａ；ｉｎｄｅｘ＝１；
ステートＴＯＫＥＮは制御を、前述した場合を除く全ての場合で、ステートＯＵＴＰＵＴ  ＴＡＩＬへ渡す。制御はトークンの最後のワードに遭遇するまで（ｉｎ  ｅｘｔｎ  ｒｅｆがロー）そこに留まり、メインループは再入力される。
表示バッファリクエスト及びピクチャクロックの’非同期’タイミングイベントの反復チェックに関する要求、及びこれらのチェックの間にバッファマネージャ入力を立ち往生させる必要性は、バッファマネージャの入力に連続的なデータ供給がある場合、バッファマネージャを介したデータ速度に関する制限があることを意味する。ステートの代表的順番は例えば、ＰＲＥＳ０、ＰＲＥＳ１、ＤＲＱ、ＴＯＫＥＮ、ＯＵＴＰＵＴ  ＴＡＩＬであり、ＯＵＴＰＵＴ  ＴＡＩＬを除き各々１サイクル持続する。これは、６４データ項目の各ブロックについて、３サイクルのオーバヘッドがあり、その間入力は立ち往生し（ステートＰＲＥＳ０、ＰＲＥＳ１及びＤＲＱの間）、それにより３／６４倍、即ち５％の書き込み速度が示される。ステートマシンの予備ブランチが最悪の条件で実行されたとき、この数は場合により１３サイクルのオーバヘッドまで増加できる。尚、このような大きなオーバヘッドは１フレーム１度(once-per-frame)を基にする場合にのみ適用される。
【０１０４】
提出数はｕｐｉアクセスの間、自由に走る。即ち、提出数はアクセスが得られたときのように、アクセスが止まったときと同一である必要がある場合、これはアクセスが許可された後の提出数を読むことにより、及びアクセスが止まる直前にそれを書き込むことによって行うことができる。尚、これは非同期であるから、アクセスを数回繰り返しそれらが有効であることを確認する必要がある。
【０１０５】
ライトアドレス発生器４１０はバッファマネージャ４３０からトークンを受信し、新たな各ＤＡＴＡトークンの到着を検出する。それぞれが到着したとき、それはＤＲＡＭインターフェース４５０に関する新たなアドレスを計算し、ＤＲＡＭでは到着したブロックを格納する。行データはＤＲＡＭインターフェース４５０に送られ、そこでスウィングバッファに書き込まれる。ここでＤＲＡＭアドレスはブロックアドレスであり、ＤＲＡＭ内のピクチャはブロックのラスターとして組織化される。しかし入力ピクチャデータはマクロブロックのシーケンスとして組織化されるので、アドレス発生アルゴリズムはこれを考慮しなければならない。
ＲＡＭインターフェース
単一の高性能構成可能ＤＲＡＭインターフェース５００を図２２に示す。このインターフェースは標準独立ブロックで、例えば空間デコーダ(spatial decoder)、一時的デコーダ(temporal decoder)、及びビデオフォーマッタ(video formatter)に必要なＤＲＡＭを直接駆動できるように設計されている。このＤＲＡＭインターフェースをこれらシステム内のＤＲＡＭに接続するための外部ロジック、バッファ又は他の構成要素は必要ない。
【０１０６】
これら及び他の構成要素の動作は、１９４４年３月２４日に出願された英国特許出願Ｎｏ．９４０５９１４．４に詳細に説明されており、又、参考として本願に組み込まれている。
【０１０７】
インターフェースは２つの方法で構成できる。第１に、インターフェースの詳細タイミングはＤＲＡＭの様々なタイプに適応するように構成できる。第２に、ＤＲＡＭへのデータインターフェースの幅は、異なる用途において適当なコスト／パフォーマンスを提供するように構成できる。
【０１０８】
各チップ上でＤＲＡＭインターフェースはチップを外部ＤＲＡＭに接続する。このように外部ＤＲＡＭが使用される。なぜなら、現在のところ、チップ上に比較的大規模なＤＲＡＭを製作することは実際的ではないからである。しかし、このようにチップ上に比較的大規模なＤＲＡＭを製作することは可能である。
【０１０９】
ＤＲＡＭインターフェースは標準独立形式であるが、Ｈ２６１、ＪＰＥＧ、及びＭＰＥＧの複数のスタンダード各々を実施できるように構成する必要がある。ＤＲＡＭインターフェースが複数のスタンダード動作をいかにして可能とするかを以下に説明する。
【０１１０】
ＤＲＡＭインターフェース５００の動作を理解するために重要なことは、ＤＲＡＭインターフェース５００とアドレス発生器５１０との関係、及びこの２つが２線インターフェースを使用していかに通信するかを理解することである。２つのアドレス発生器があり、一方は書き込み５２０で、他方は読出し５３０である。バッファマネージャ５４０は本願の各所で詳細に説明されている。
【０１１１】
簡単に述べると、名前が示唆するように、アドレス発生器はＤＲＡＭインターフェースがＤＲＡＭをアドレスする（例えばＤＲＡＭの特定アドレスにリードライトする）ために必要なアドレスを発生する。２線インターフェースにより、読出し及び書き込みは、ＤＲＡＭインターフェースが（パイプライン内の前段のステージからの）データと（アドレス発生器からの）有効アドレスの両方を有するときにのみに行われる。別々のアドレス発生器を使用することにより、後述するようにアドレス発生器とＤＲＡＭインターフェースの両方が簡単な構造となる。ＤＲＡＭインターフェースはアドレス発生器と、データが出入りするブロックのクロックの両方に対して非同期なクロックで動作する。このように非同期な動作を採用するために、特別な技術が用いられる。
【０１１２】
データは通常、ＤＲＡＭインターフェースとチップの他の部分との間で６４バイトのブロック単位で転送される。転送は”スウィングバッファ(swing buffer)”として知られる装置を用いて行われる。これは本質的にダブルバッファ構成で動作する一対のＲＡＭであり、ＤＲＡＭインターフェースは一方のＲＡＭをデータで充填又は空にし、そのチップの他の部分が他方のＲＡＭをデータで充填又は空にする。アドレス発生器から１つのアドレスを運ぶ分離バスが各スウィングバッファに接続されている。
【０１１３】
各チップは４つのスウィングバッファを有するが、これらスウィングバッファの機能は各々の場合で異なっている。空間デコーダでは、コード化されたデータをＤＲＡＭに転送するために１つのスウィングバッファが使用され、もう１つはＤＲＡＭからコード化データをリードするために使用され、第３のスウィングバッファはトークン化(tokenised)されたデータの転送に使用され、第４のものはトークン化されたデータをＤＲＡＭからリードするために使用される。一時的デコーダでは、１つのスウィングバッファがｉｎｔｒａ即ち予想されたピクチャデータをＤＲＡＭにライトするために使用され、第２のスウィングバッファはｉｎｔｒａ即ち予想されたピクチャデータをＤＲＡＭからリードするために用いられ、他の２つは前方及び後方の予想データをリードするために用いられる。ビデオフォーマッタでは、１つのスウィングバッファがＤＲＡＭにデータを転送するために使用され、他の３つはＤＲＡＭからデータをリードするために使用される。その３つのスウィングバッファは明度（Ｙ）、及び赤と青の色差データ（Ｃｒ及びＣｂ）をリードするために各々使用される。
【０１１４】
次にＤＲＡＭインターフェースの動作を説明する。このＤＲＡＭインターフェースは例として、１つのライトスウィングバッファ５０２及び１つのリードスウィングバッファ５０４を有している。
【０１１５】
アドレス発生器５１０、ＤＲＡＭインターフェース５００、及びデータを供給及び獲得するチップの他のブロック間の制御５０６によるインターフェースは、全て２線インターフェースである。アドレス発生器５１０は制御トークンの受信の結果としてアドレスを発生するか、又は単なるアドレスの固定シーケンスを発生する。ＤＲＡＭインターフェース５００はアドレス発生器５１０を用いて２線インターフェースを特殊な方法で処理する。受信及び出力可能となったときに受付ラインをハイに保つ代わりに、インターフェース５００はアドレス発生器が有効アドレスを供給するのを待ち、そのアドレスを処理し、そして受付ラインを１クロック周期の間ハイにセットする。従ってインターフェース５００はリクエスト／アクノリッジ（ＲＥＱ／ＡＣＫ）プロトコルを実施する。
【０１１６】
ＤＲＡＭインターフェース５００固有の特徴は、アドレス発生器５１０及びデータを提供又は受信するブロックと別々に通信できる能力である。例えばアドレス発生器５１０はライトスウィングバッファ５０２内のデータに関係するアドレスを発生できるが、ライトスウィングバッファ５０２が外部ＤＲＡＭに書き込み準備完了データブロックがあることを知らせるまで、何の動作も取らない。同様に、ライトスウィングバッファ５０２は外部ＤＲＡＭに書き込み準備完了のデータブロックを含むことができるが、アドレス発生器５１０からの適切なバス上にアドレスが供給されるまで何の動作も取らない。更に、ライトスウィングバッファ５０２内のＲＡＭの１つがデータで満杯になると、データ入力が立ち往生する前に（２線インターフェースはローにセットされた信号を受ける）、他のＲＡＭを完全に満たしＤＲＡＭインターフェース側に”振る(swung)”ことができる。
【０１１７】
ＤＲＡＭインターフェース５００の動作を理解する上で、適切に構成されたシステムにおいて、ＤＲＡＭインターフェース５００はスウィングバッファ５０２及び５０４、及びチップの他の部分間での平均データ転送速度の合計と少なくとも同じ速度で、スウィングバッファ５０２及び５０４、及び外部ＤＲＡＭ間でデータを転送できる。
【０１１８】
各ＤＲＡＭインターフェース５００は、どのスウィングバッファに次にサービスを提供するかを判断する方法を含んでいる。一般に、これは”ラウンドロビン(round robin)”（即ち、サービスされているスウィングバッファが最も以前の順番であったスウィングバッファで、次に利用できるスウィングバッファとなる）か、又は優先度エンコーダ（即ち、幾つかのスウィングバッファが他のものより高い優先度を有する）である。両方の場合で、他の全てのリクエストより高い優先度を有する追加のリクエストがリフレッシュリクエスト発生器から来る。リフレッシュリクエストはマイクロプロセッサインターフェースを介してプログラムできるリフレッシュカウンタから発せられる。
【０１１９】
ライトスウィングバッファは２ブロックのＲＡＭ、即ちＲＡＭ１及びＲＡＭ２とインターフェースを行う。ここで更に検討されるように、データはライトアドレス及び制御の下で、前段のブロック又はステージからＲＡＭ１及びＲＡＭ２へ書き込まれる。ＲＡＭ１及びＲＡＭ２からデータはＤＲＡＭに書き込まれる。後述するように、ＤＲＡＭへデータを書き込むときは、アドレス発生器により行アドレスが提供され、列アドレスはライトアドレス及び制御により提供される。動作中、有効データが入力（データ入力）に提供される。データは前段のステージから受信される。各データがＤＲＡＭインターフェース５００により受信されるとき、データはＲＡＭ１に書き込まれ、ライトアドレス制御はＲＡＭアドレスをインクリメント(increment)し、これにより次のデータをＲＡＭ１に書き込むことができる。入力データがなくなるか、又はＲＡＭ１が満杯になるまで、ＲＡＭ１へのデータ書き込みは継続する。ＲＡＭ１が満杯になると、入力側は制御をあきらめ、ＲＡＭ１が読出し準備完了したことを読出し側へ知られる。このときの信号は２つの非同期クロックレジメ(asynchronous clock regimes)間を通過し、そして３つの同期フリップフロップを介して送られる。
【０１２０】
ＲＡＭ２が空の場合、入力側に到達する次のデータはＲＡＭ２に書き込まれる。そうでない場合、この処理はＲＡＭ２が空になってから行われる。ラウンドロビン又は優先度エンコーダ（これは使用される特定チップによりどちらかが決まる）がそのスウィングバッファが読まれる番であることを示すとき、ＤＲＡＭインターフェースはそのＲＡＭ１の内容を読出し、それを外部ＤＲＡＭに書き込む。信号は非同期インターフェースを介して戻され、現在、ＲＡＭ１を再び充填可能であることが示される。
【０１２１】
ＤＲＡＭインターフェースがＲＡＭ１を空にし、それを入力側がＲＡＭ２を満たす前に”振った”場合、データはそのスウィングバッファにより連続的に受信できる。そうではなくＲＡＭ２が満たされた場合、スウィングバッファは（ＲＡＭ１が入力側で使用されるように）ＲＡＭ１が入力側に”振られる”まで、その受付信号をローに設定する。リードスウィングバッファの動作も同様であるが、入出力データバスが逆になっている。
【０１２２】
ＤＲＡＭインターフェース５００はメモリのバンド幅を最大にするように設計されている。データの各８×８ブロックは同一ＤＲＡＭページに格納される。このようにして、１つの行アドレスが多数の列アドレスに続いて供給されるＤＲＡＭの高速ページアクセスモードをフルに利用できる。以下に示すように、特に行アドレスがアドレス発生器５１０により供給される一方で、列アドレスがＤＲＡＭインターフェース５００により供給される。
【０１２３】
更に、使用されるＤＲＡＭの容量が特定用途に関するサイズ及びバンド幅に適合するように、外部ＤＲＡＭへのデータバスを８、１６、又は３２ビット幅にできる機能が提供される。
【０１２４】
この例では、アドレス発生器５１０はＤＲＡＭインターフェース５００に対して、リード及びライトスウィングバッファ５０５及び５０２の各々にブロックアドレスを提供している。このブロックアドレスはＤＲＡＭの行アドレスとして使用される。列アドレスの６ビットはＤＲＡＭインターフェース自身から供給され、これらのビットは又、スウィングバッファＲＡＭのアドレスとしても使用される。スウィングバッファへのデータバスは３２ビット幅であるから、外部ＤＲＡＭへのバスが３２ビットより少ないと、２回又は４回の外部ＤＲＡＭアクセスを、次のワードがライトスウィングバッファから読出される前に、又は次のワードがリードスウィングバッファに書き込まれる前に行わねばならない。（読出し及び書き込みは外部ＤＲＡＭに対する転送方向を参照している）。
【０１２５】
尚、ＤＲＡＭインターフェース５００は２つのスウィングバッファに限られるものではない。
【０１２６】
当業者は本発明に構造的変更を施すことができる。以上の詳細な説明は図面を参照して行われたが、本発明の範囲は特許請求の範囲により定義されるものである。
【図面の簡単な説明】
【図１】図１は同期ＤＲＡＭをアクセスするための本発明による方法を実施する装置のシステムブロック図。
【図２】図２は図１のステートマシンにより受信されたハイレベルコマンドと、ステートマシンが発生したローレベルコマンドとの相関関係を示す図。
【図３】図３は図１のＤＲＡＭの構成を描いた図。
【図４】図４は図１のＤＲＡＭ内のセルに格納されたワードの構成を描いた図。
【図５】図５はテレビ又はモニタ画面に表示された画像を示し、この画像は長方形格子内に整列された複数セル及び前記整列されたセルに重なる１つの非整列セルから構成されている。
【図６】図６は図５の各セル内の画素の配置を示し、この例で各セルは８×８画素ブロックである。
【図７】図７は図６の各セルを示すデータワード。
【図８】図８は下敷きの整列セル内の非整列セルとその画素との関係を示す。
【図９】図９は図５又は図８のセルを図６のＲＡＭバンクにマッピングした場合を描いた図。
【図１０】図１０は２バンクのＲＡＭを有し図７のデータワードを格納するために使用されるＲＡＭシステムのブロック図。
【図１１】図１１は図１０のＲＡＭシステムを含み、図５の画面にデジタルビデオ信号を提供するビデオデコーダを描いた図。
【図１２】図１２は複数の副セルに更に分解される図５又は図８のセル、及び副セルと図１０のＲＡＭバンクとの関係を示す。
【図１３】図１３はマイクロコードできるステートマシンのブロック図。
【図１４】図１４は演算コアのブロック図。
【図１５】図１５はレジスタファイルの機能図。
【図１６】図１６はレジスタファイル内のデータフローを示すブロック図。
【図１７】図１７はレジスタファイルアドレスデコーディングのブロック図。
【図１８】図１８はアドレッシングに使用され、幅定義フィールド及びアドレスフィールドを有する固定幅ワードを示す図。
【図１９】図１９はアドレッシングに使用され、アドレスフィールド、置き換えフィールド、及び置き換えインジケータを有する固定幅ワードを示す図。
【図２０】図２０は６４×３２ＲＡＭ内の８ビットデータをアドレスする場合に使用される１３ビットワードの例。
【図２１】図２１は複数フィールドを有する固定幅わーその一例。
【図２２】図２２は本発明によるＤＲＡＭインターフェースのブロック図。
【図２３】図２３は１ライト・スイング・バッファ及び１リード・スイングバッファを有するＤＲＡＭインターフェースのブロック図。
【図２４】図２４は画像フォーマッタのブロック図。
【図２５】図２５はバッファマネージャステートマシンを示す図。
【図２６】図２６は図２５のステートマシンのメインループを示す図。
【図１】
0003741464.tif 000013
【図２】
0003741464.tif 000014
【図３】
0003741464.tif 000015
【図４】
0003741464.tif 000016
【図５】
0003741464.tif 000017
【図６】
0003741464.tif 000018
【図７】
0003741464.tif 000019
【図８】
0003741464.tif 000020
【図９】
0003741464.tif 000021
【図１０】
0003741464.tif 000022
【図１１】
0003741464.tif 000023
【図１２】
0003741464.tif 000024
【図１３】
0003741464.tif 000025
【図１４】
0003741464.tif 000026
【図１５】
0003741464.tif 000027
【図１６】
0003741464.tif 000028
【図１７】
0003741464.tif 000029
【図１８】
0003741464.tif 000030
【図１９】
0003741464.tif 000031
【図２０】
0003741464.tif 000032
【図２１】
0003741464.tif 000033
【図２２】
0003741464.tif 000034
【図２３】
0003741464.tif 000035
【図２４】
0003741464.tif 000036
【図２５】
0003741464.tif 000037
【図２６】
0003741464.tif 000038