(57)【要約】【解決手段】プログラマブルマイクロプロセッサのための改善された命令セット＆コア設計、制御、及び通信が開示され、これは、今日の及び先行技術のプロセッサにおける集中型のプログラムシーケンシングを、新規の分散型のプログラムシーケンシングで置き換えるための戦略を伴う。新規の分散型のプログラムシーケンシングでは、各機能ユニットは、自身の命令フェッチ＆デコードブロックを有し、各機能ユニットは、プログラム格納のための自身のローカルメモリを有し、計算ハードウェア実行ユニット及びメモリユニットは、設定及び切り替え相互接続が異なるハードウェアユニットを確立する様々なアプリケーション命令シーケンスに応じて異なる順序に再設定可能なパイプラインステージを伴うプログラマブル埋め込みプロセッサとして、柔軟にパイプライン化される。【選択図】図１
2011525008.tif 000002
【特許請求の範囲】
【請求項１】
複数の異なる機能計算ユニット、メモリユニット、それらを相互に接続するためのフルアクセススイッチユニット、及び制御ユニットを有するプロセッサを用いる、クロックサイクルに同期した柔軟なプログラマブルデータ処理の方法であって、
異なる機能ユニットを接続し、所定の制御パス及びデータパイプラインを階層式に形成することと、
共通の命令セットを使用して、全ての機能ユニットをプログラムすることと、命令セットは、命令シーケンシング（すなわち、次の命令フェッチのためのアドレスの算出）を直接的にコード化し、ハードウェアの制御を直接的に又は間接的にコード化し、
各々が自身のプログラムカウンタ、命令フェッチ及びデコードユニット、並びにプログラム格納のための自身のローカルメモリを有する機能ユニットを用いて分散型のプログラムシーケンシングをセットアップすることと、
このような機能ユニットのデータパスを制御する制御ベクトルを、クロックサイクルごとに生成することと、
複数のメモリユニットを、異なるメモリアクセスモードで動作するように設定し、複数のメモリユニットを、プログラム可能性を最大にするために前記スイッチユニットを通じて機能計算ユニットに接続することと、
を備える方法。
【請求項２】
請求項１に記載の方法であって、
データ処理プログラムが生成され、該データ処理プログラム全体は、異なるデータ処理モジュールに分割され、それぞれ、プロセッサ内の１つ又は複数の前記機能ユニットによって構成されたデータパイプラインによって扱われ、各データパイプラインは、データパイプラインに沿って各機能ユニットに１つずつの、１つ又は複数のクロックサイクル同期した命令シーケンスによって構成される、方法。
【請求項３】
請求項２に記載の方法であって、
異なるデータ処理モジュールは、（ａ）１つのモジュールから次のモジュールへの進行のために使用されるブロック間の接続を伴って、異なるハードウェアブロック上にマッピングされ、（ｂ）モジュール進行の順序で異なる時間枠上にモジュール実行を多重化して、同じハードウェアブロック上にマッピングされ、及び（ｃ）（ａ）と（ｂ）との両方の組み合わせで、マッピングされ得る、方法。
【請求項４】
請求項３に記載の方法であって、
１つのデータ処理モジュールから次のデータ処理モジュールへの時間枠での進行の制御及び同期化は、データパイプラインを構成するために使用される全ての機能ユニットについて、親制御ユニット内の命令シーケンスを通じて達成される、方法。
【請求項５】
請求項１に記載の方法であって、
プロセッサのハードウェアは、１つ又は複数のデータパイプラインとして動的に構成される、方法。
【請求項６】
請求項５に記載の方法であって、
各データパイプラインは、データパイプライン全体が一レベルずつ構成されるように、先ず異なる親ユニット間に確立され、次いで一つの親ユニットの補助ユニット間に確立されるデータフローを伴う、階層型構造を用いる、方法。
【請求項７】
請求項１に記載の方法であって、
プロセッサ内の機能ユニットは、対応する補助ユニットとの間で制御及び同期メッセージ及び信号のみを交換する親制御ユニットが提供される制御階層として動的に構成される、方法。
【請求項８】
請求項１に記載の方法であって、
データ処理は、異種ハードウェアブロック内における命令シーケンスの並列実行によって実施することができる、方法。
【請求項９】
請求項１に記載の方法であって、
機能計算ユニットは、メモリへのバッファリングを排除するために及びデータメモリに出入りするトラフィックを軽減するために、データパイプライン内において異なるタイプのデータフロー並びに算術及び論理演算シーケンスを可能にするように、柔軟に配置される、方法。
【請求項１０】
請求項１に記載の方法であって、
それぞれの制御コーディングのために異なるビット数を必要とする様々な機能ハードウェアブロックをプログラムするために、同じ命令セットが使用される、方法。
【請求項１１】
請求項１０に記載の方法であって、
命令セットは、命令シーケンシング（すなわち次の命令フェッチのためのアドレスの計算）の直接的コーディング、ハードウェア制御のサブセットの直接的コーディング、並びに制御ベクトルメモリへのアドレスポインタ又はレジスタ読み出し及び書き込みコマンドのいずれかを通じたハードウェア制御の間接的コーディングを可能にする命令フォーマットを用いる、方法。
【請求項１２】
請求項１１に記載の方法であって、
命令内にコード化されたハードウェア制御は、特定のハードウェア構成を形成するためにブロック内のサブブロックの構成及びサブブロック間の相互接続を特定する、方法。
【請求項１３】
請求項１に記載の方法であって、
メモリユニットは、２つのデュアルポートメモリバンクを含み、各メモリバンクは、データパイプライン構成の一部として、あるいは、データのバルクロード及びバルクアンロードのために外部メモリとのインターフェースとして切り替えることができる、方法。
【請求項１４】
請求項１３に記載の方法であって、
２つのメモリバンクはそれぞれ、異なる機能性を持つ２つの読み出し側インターフェースのいずれか及び異なる機能性を持つ２つの書き込み側インターフェースのいずれか、に接続するように、命令によってプログラムされる、方法。
【請求項１５】
請求項１４に記載の方法であって、
４つのインターフェースはそれぞれ、各インターフェースに固有の機能性のセットをサポートする演算ユニットと、異なるモードのメモリアドレス計算又は単純なデータ処理を可能にするためのその他の要素とを含む、方法。
【請求項１６】
請求項１４に記載の方法であって、
各メモリユニットは、階層型データパイプラインを構成するために使用され、該構成することは、
２つのメモリバンクをサポートしている２つの読み出し側インターフェース及び２つの書き込み側インターフェースの間における、必要な調整及びタイミング合わせのために、これら４つのインターフェース間におけるデータ及びステータスの交換用にＤＳＥをプログラムすることと、
４つのインターフェースのそれぞれを、そのインターフェース内にデータパイプラインを確立するようにプログラムすることと、演算ユニットは、データがメモリバンクに書き込まれる前又はデータがメモリバンクから読み出された後の単純なデータ処理のために使用することができること、
を含む、方法。
【請求項１７】
請求項１に記載の方法であって、
状態テーブルエントリを保持するために前記メモリユニット内の一方のメモリバンクを、そして他方のメモリバンク内の入力データビットストリームに作用して１つの状態エントリから次の状態エントリへ横断するためにメモリユニットのための命令シーケンスを使用することよって、有限状態マシンが実装される、方法。
【請求項１８】
請求項７に記載の方法であって、
プロセッサの親制御ユニットと、それが制御する実行ユニット、スイッチユニット、及びメモリユニットを含む機能ユニットとの間に、リングタイプのバスが用いられる、方法。
【請求項１９】
複数の異なる機能計算ユニット、メモリユニット、それらを相互に接続するためのアクセススイッチユニット、及び制御ユニットを含むクロックサイクル同期した柔軟なプログラマブルデータプロセッサにおいて、
所定の制御パス及びデータパイプラインを階層式に形成するための、異なる機能ユニット間の接続と、
全ての機能ユニットをプログラムするための共通の命令セットであって、命令シーケンシング（すなわち次の命令フェッチのためのアドレスの算出）を直接的にコード化し、ハードウェアの制御を直接的に又は間接的にコード化する共通の命令セットと、
各々が自身のプログラムカウンタ、命令フェッチ及びデコードユニット、並びにプログラム格納のための自身のローカルメモリを有する各機能ユニットを伴う、分散型のプログラムシーケンサと、
このような機能ユニットのデータパスを制御する制御ベクトルを、クロックサイクルごとに生成するための手段と、
複数のメモリユニットを、異なるメモリアクセスモードで動作するように設定するための手段、及びそれらを、プログラム可能性を最大にするために前記スイッチユニットを通じて機能計算ユニットに接続するための手段と、
を組み合わせて備える装置。
【請求項２０】
請求項１９に記載の装置であって、
データ処理プログラムが生成され、該データ処理プログラム全体は、異なるデータ処理モジュールに分割され、それぞれ、プロセッサ内の１つ又は複数の前記機能ユニットによって構成されたデータパイプラインによって扱われ、各データパイプラインは、データパイプラインに沿って各機能ユニットに１つずつの、１つ又は複数のクロックサイクル同期した命令シーケンスによって構成される、装置。
【請求項２１】
請求項２０に記載の装置であって、
異なるデータ処理モジュールは、１つのモジュールから次のモジュールへの進行のために使用されるブロック間の接続を伴って、異なるハードウェアブロック上に、マッピングされ得る、装置。
【請求項２２】
請求項２０に記載の装置であって、
異なるデータ処理モジュールは、モジュール進行の順序で異なる時間枠上にモジュール実行を多重化して、同じハードウェアブロック上に、マッピングされ得る、装置。
【請求項２３】
請求項２１又は２２に記載の装置であって、
１つのデータ処理モジュールから次のデータ処理モジュールへの時間枠での進行の制御及び同期化は、データパイプラインを構成するために使用される全ての機能ユニットについて、親制御ユニット内の命令シーケンスを通じて達成される、装置。
【請求項２４】
請求項１９に記載の装置であって、
プロセッサのハードウェアは、１つ又は複数のデータパイプラインとして動的に構成される、装置。
【請求項２５】
請求項２４に記載の装置であって、
各データパイプラインは、データパイプライン全体が一レベルずつ構成されるように、先ず異なる親ユニット間に確立され、次いで一つの親ユニットの補助ユニット間に確立される、データフローを伴う階層型構造を用いる、装置。
【請求項２６】
請求項１９に記載の装置であって、
プロセッサ内の機能ユニットは、対応する補助ユニットとの間で制御及び同期メッセージ及び信号のみを交換する親制御ユニットを提供される制御階層として動的に構成される、装置。
【請求項２７】
請求項１９に記載の装置であって、
データ処理は、異種ハードウェアブロック内における命令シーケンスの並列実行によって実施される、装置。
【請求項２８】
請求項１９に記載の装置であって、
機能計算ユニットは、メモリへのバッファリングを排除するために及びデータメモリに出入りするトラフィックを軽減するために、データパイプライン内において異なるタイプのデータフロー並びに算術及び論理演算シーケンスを可能にするように、柔軟に用意される、装置。
【請求項２９】
請求項１９に記載の装置であって、
それぞれの制御コーディングのために異なるビット数を必要とする様々な機能ハードウェアブロックをプログラムするために、同じ命令セットが使用される、装置。
【請求項３０】
請求項２９に記載の装置であって、
命令セットは、命令シーケンシング（すなわち次の命令フェッチのためのアドレスの計算）の直接的コーディング、ハードウェア制御のサブセットの直接的コーディング、並びに制御ベクトルメモリへのアドレスポインタ又はレジスタ読み出し及び書き込みコマンドの一方を通じたハードウェア制御の間接的コーディングを可能にする命令フォーマットを用いる、装置。
【請求項３１】
請求項３０に記載の装置であって、
命令内にコード化されたハードウェア制御は、特定のハードウェア構成を形成するためにブロック内のサブブロックの構成及びサブブロック間の相互接続を特定する、装置。
【請求項３２】
請求項１９に記載の装置であって、
メモリユニットは、データパイプライン構成の一部として、あるいは、データのバルクロード及びバルクアンロードのために外部メモリのインターフェースとして切り替えることができる２つのデュアルポートメモリバンクを含む、装置。
【請求項３３】
請求項３２に記載の装置であって、
２つのメモリバンクはそれぞれ、異なる機能性を持つ２つの読み出し側インターフェースのいずれか及び異なる機能性を持つ２つの書き込み側インターフェースのいずれか、に接続するように、命令によってプログラムすることができる、装置。
【請求項３４】
請求項３３に記載の装置であって、
４つのインターフェースはそれぞれ、各インターフェースに固有の機能性のセットをサポートする演算ユニットと、異なるモードのメモリアドレス計算又は単純なデータ処理を可能にするためのその他の要素とを含む、装置。
【請求項３５】
請求項１９に記載の装置であって、
各メモリユニットは、階層型データパイプラインを構成するために使用され、該階層型データパイプラインは、
２つのメモリバンクをサポートしている２つの読み出し側インターフェース及び２つの書き込み側インターフェースの間における、必要な調整及びタイミング合わせのために、これら４つのインターフェース間におけるデータ及びステータスの交換用にＤＳＥをプログラムするための手段と、
各インターフェースを、そのインターフェース内にデータパイプラインを確立するようにプログラムするための手段と、演算ユニットは、データがメモリバンクに書き込まれる前又はデータがメモリバンクから読み出された後の単純なデータ処理のために使用することができることと、
を含む、装置。
【請求項３６】
請求項１９に記載の装置であって、
状態テーブルエントリを保持するためにメモリユニット内の一方のメモリバンクを、そして他方のメモリバンク内の入力データビットストリームに作用して１つの状態エントリから次の状態エントリへ横断するためにメモリユニットのための命令シーケンスを使用することよって、有限状態マシンが実装される、装置。
【請求項３７】
請求項１９に記載の装置であって、
プロセッサの親制御ユニットと、それが制御する実行ユニット、スイッチユニット、及びメモリユニットを含む機能ユニットとの間に、リングタイプのバスが用いられる、装置。
【請求項３８】
対応する異なる独立した計算機能ブロックのための、独立したデータメモリストレージユニットとして動作するように、又は相互に接続された計算機能ブロックに対して、適切な二次元アドレッシングモード及び回転アドレッシングモードを伴う統合メモリストレージを提供するべく同期的に動作するように、組織的にプログラムされる、複数のメモリユニットを組み合わせて有するプログラマブルデータプロセッサ。
【請求項３９】
請求項３８に記載のプロセッサであって、
メモリストレージユニット及び独立した計算機能ブロックは、マトリックススイッチによって相互に接続可能である、プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全体として、リアルタイムデータ処理及びそのためのマイクロプロセッサ技術の分野に関し、より詳細には、プログラマブルマイクロプロセッサなどにおける、制御、通信、命令セット設計、及びデータフローを改善することに関し、限定はされないが特に、同時係属の米国特許出願第１１／９７３，１８４号に記載されるようなスイッチ制御式のプログラマブルプロセッサ並びに柔軟なパイプライン及び並列処理における、メモリユニット設計、プログラミング方法、及びフロー制御を改善することに関する。
【背景技術】
【０００２】
上記同時係属特許出願に記載されるように、先行技術の及び既存のプロセッサアーキテクチャは、特に、携帯電話機などの一携帯用デバイスを例とする１つのシステム内に集約されるプログラムアプリケーションの増加及び多様化を踏まえると、リアルタイムな普遍的マルチメディアアプリケーションにとって十分に強力な又は十分に柔軟な設計を未だに達成できていない。
【０００３】
このような既存のプロセッサアーキテクチャ（例えばＭＩＰＳ、ＡＲＭなど）は、一般に、１つの命令セットによって動作し、このような命令セット内にコード化された制御情報は、１つのプロセッサコア内の全ての機能回路ブロックを駆動する。
【０００４】
このような機能ブロックの代表的なものは、以下の通りである。
・次の命令フェッチのためのアドレスを算出する（例えば、現命令の直後の命令をフェッチするために＋１にする、分岐のためにｘをロードするなど）シーケンサ。このような命令アドレスの算出は、条件フラグに依存することができる。
・上記同時係属出願に記載された実行ユニットなどの、到着データに対して様々な算術演算又は論理演算を実施する計算ユニット。
・レジスタファイル、並びに計算ユニットの入力及び出力に対するそれらの設定可能接続。
・外部メモリ内の特定のアドレスに対してデータの送受信を行うように設定することができるメモリバス。
【０００５】
これらの機能ブロックは、より柔軟に作成されるほど、より上手く任意の汎用プログラムの実行に活用することができる。他方、これらの機能ブロックは、より柔軟であるほど、より多くのビットが特定の動作に合わせた設定のために必要とされる。
【０００６】
次に、本発明のプロセッサコアにおいてここに使用される発明の設定設計、制御、及び通信の戦略の背景として、従前のアーキテクチャ及びそれらの長所と限界とについて再考する。
【０００７】
従来のフォンノイマンアーキテクチャでは、コンパイル済みのソフトウェアプログラムは、実行されるべき命令シーケンスはもちろん、処理されるべきデータも含み、これらは共にメモリに格納される。しかしながら、メモリとＣＰＵとの間の帯域幅は、各クロックサイクルにおいて何ビットの命令及びデータをプロセッサに送信可能であるかについての上限を設けるゆえに、パフォーマンスを制限する。これが、１９７０年代に明らかにされた、有名なフォンノイマンボトルネックである。
【０００８】
ハーバードアーキテクチャ及びスーパーハーバードアーキテクチャなどの、より最近のアーキテクチャは、命令のメモリとデータのメモリとを分け、外部メモリからの新しい命令ページ（メモリブロック）の投機的ロード、及び古いページの取り換えを可能にするために、より高速の内部メモリである命令キャッシュをＣＰＵ内部に追加した。目標は、メインの命令メモリからの代わりに、より高速のキャッシュメモリから次の命令をフェッチすることであった。どの新しいページをロードするか及びどの古ページを取り換えるかを決定するためには、投機的（スペキュレーション）アルゴリズムが使用される。キャッシュ「ヒット」の（すなわち、キャッシュの中に命令を見つけた）場合にパフォーマンスが向上される一方で、キャッシュ「ミス」の（すなわち、キャッシュの中に命令が見つからなかった）場合は、プロセッサは、ロードするべき新しいページを待つ間、多数のサイクルにわたって行き詰まる。投機的アルゴリズムが効率的でないと、パフォーマンスが損なわれる。このような設計は、また、このような効率的な投機的アルゴリズムを扱うために、ハードウェアの追加及び複雑性の増大という犠牲を強いられる。最新のプロセッサアーキテクチャのなかにも、データキャッシュを使用するものがある。
【０００９】
上記同時係属特許出願に記載される、ＲＩＳＩプロセッサ及びパイプラインと呼ばれる別の先行技術は、一命令のサイズを制限することに取り組む。縮小命令セットコンピュータ（ＲＩＳＣ）は、任意の汎用プログラムの最小公分母の原則下で命令セットを定める。命令セットは、単純である、すなわち「縮小」されており、これは、それらの実行に必要とされるハードウェアも単純にする。一命令の実行は、次いで、ハードウェア内のパイプラインステージに分割され、これらのステージは、等しい又は同様の伝搬遅延、及び中間データ結果をバッファリングするためのレジスタを伴うとともに、必要な制御信号を１つのステージから次のステージへと引き渡される。プロセッサは、次いで、ｎ個の命令を、前の命令が１つ先のステージを実行するように並列に積み重ねようとする。パイプラインが充填されると、各命令のスループットは、ハードウェア内におけるその実行の完了にかかる時間の１／ｎである。このようにすれば、命令セットがより単純で、尚且つ各命令が実施できる動作が限られるにもかかわらず、例えば、よく知られた５ステージＲＩＳＣなどの典型的なＭＩＰＳプロセッサと同じくらい、大幅に高速に実行される。このようなＭＩＰＳ設計では、命令セットは単純に維持され、ハードウェアは再利用される。例えば、ＡＬＵブロックは、データ処理のみならず、データメモリアクセス用のアドレスの計算にも使用される。レジスタファイルは、ＡＬＵ動作前及びＡＬＵ動作後のデータを格納するために使用されるとともに、メモリアクセスアドレスの一部も格納する。これは、全ての命令が比較的単純に維持され、同様の量のハードウェア処理を必要とするゆえに可能である。しかしながら、この単純なアーキテクチャでも、全てのハードウェアを常に用いることはできない。例えば、ＭＥＭ（メモリアクセス）ステージは、いかなる算術演算命令又は論理演算命令にも用いられない。
【００１０】
更に、パイプライン型のＲＩＳＣ設計では、すべてのパイプラインステージにおける全ての制御信号が、ＩＤ（命令デコード）ステージにおいて生成され、バッファリングされるとともにその目的ステージに運ばれる必要があることがわかる。したがって、単純な５ステージＭＩＰＳにおいても、依然として多くの制御信号がバッファリングされ、パイプラインステージに沿って送信される。
【００１１】
やはり上記同時係属特許出願で説明されるように、ＲＩＳＣプロセッサは、パイプライン型の構造を用いることによって命令のスループットを向上させるが、このような付加的向上には限界がある。限界の１つは、計算集約型のリアルタイム信号処理プログラムを実行する能力にある。乗算又は乗累算のための特殊な命令及び特殊なハードウェアがないと、これらの演算は、実行のために多くのサイクルを必要とする。一例では、１６ビットの乗算は、最多で１６サイクルを必要とする可能性があり、３２ビットの乗算は、最多で３２サイクルを必要とする可能性がある。このようなパフォーマンスは、しかしながら、リアルタイムな計算集約型アルゴリズムにとって適切でない。もう１つの限界は、パイプラインを充填することに対する制約である。もし次の命令の選択が、前の命令（すなわち分岐命令）の計算結果に依存する場合、前の命令がフェッチされた一サイクル後、結果がまだわからない時点では、フェッチすることができない。これは、パイプラインの充填を阻み、その結果、行き詰まりを発生する。しかしながら、行き詰まる代わりに、分岐の一方の道にある命令を、投機的にフェッチすることができる。もし正しい分岐がフェッチされた場合、パイプラインは、結果が得られたときに正常に進むことができる。そうでない場合、パイプラインは、正しい分岐に戻るためにフラッシュされなければならない。このような投機的な実行は、したがって、分岐予測が高い正解率を有する場合にのみ効率性を向上させるが、これは、常に容易に達成されることではない。
【００１２】
やはり上記同時係属特許出願で言及されるように、特殊な命令及び専用のハードウェアを追加されたパイプライン型のＤＳＰは、一サイクルのＭＡＣ演算スループットを達成するので、ＤＳＰの使用は、連続した乗累算すなわちＭＡＣ演算（例えば、フィルタリングやマトリックス乗算）を伴うアルゴリズムのパフォーマンスを大幅に向上させる。
【００１３】
しかしながら、非計算集約型のプログラムの場合は、追加された一サイクルＭＡＣ論理は、その他の命令には使用されないゆえに、大きなオーバーヘッドになる可能性がある。そして、大半がＭＡＣベースではないアルゴリズム（例えば、むしろ加算ベースであるビデオデコードにおける動き補正）の場合も、ＭＡＣ論理は、やはりパフォーマンスを向上させない。
【００１４】
今日のリアルタイムマルチメディア処理アルゴリズムの複雑性が増すにつれ、プロセッサに追加しなければならない計算ハードウェアも益々増える。スループットを高く維持するために、パイプライン型構造が尚も使用されているが、ただし、各ステージにおける伝搬遅延を妥当にするために、ステージが多くされている。
【００１５】
更に、より多くの計算を並列に実施するためにハードウェアを増やした場合、ハードウェアブロックを活用するために、より多くの制御情報（すなわち命令）及びより多くのデータをクロックサイクルごとにプロセッサパイプラインに入れなければならなくなる。すると、クロックレートが大幅に高くなるので、上述のフォンノイマンボトルネックのもともとの挑戦が何倍にも増す。また、クロックサイクルごとにプロセッサパイプラインステージに入る必要がある命令及びデータが増えるゆえに、パフォーマンスを向上させるには、命令及びデータのキャッシュや分岐予測などの技術を尚も使用しなければならない。
【００１６】
データを処理するために異なる計算ハードウェアが並列に使用される場合、それらの能力をユーザプログラムに対してマッピングする必要がある。ＲＩＳＣと対照的に、ハードウェアは、もはや汎用プログラムの最小公分母ではなく、最も効率的なマッピングは、容易に達成できない。したがって、命令セット設計は、従来のＲＩＳＣ原則から逸脱しはじめる。
【００１７】
並列に実行される複数の計算ブロックを上手く活用する方法は、しかしながら、ハードウェアユニットを複製し、複数のデータ計算セットの駆動に同じ命令を使用することである。これは、単一命令複数データ（ＳＩＭＤ）と呼ばれ、制御ビットの効率的な使用法である。しかしながら、これは、異なるデータセットに対して並列の同一計算を沢山実施するアルゴリズムにとってのみ実用的である。
【００１８】
しかしながら、異なるハードウェアブロックに並列計算をマッピングすることは、更に複雑である。一つのアプローチは、各命令の標的を１つのハードウェアブロックとして固定長命令を使用することである。ハードウェア命令シーケンシングシーケンス＆ディスパッチブロックは、クロックサイクルごとに複数の命令をフェッチし、順序付けることができる。スーパースカラ命令ディスパッチアーキテクチャと呼ばれるように、各計算ユニットには、命令デコードブロックが提供される。
【００１９】
更に別の従前のアプローチは、超長命令語（ＶＬＩＷ）を使用して、考えられる全ての並列命令の組み合わせをコード化することである。この場合は、一度に１つの命令をフェッチすることができる命令フェッチモジュールが１つあればよい。しかしながら、このような長い命令は、単純な動作（例えば並列計算を伴わない制御命令）にとっては非常に非効率的である。
【００２０】
結果として生じるプロセッサ設計の複雑性
今日のプロセッサは、パフォーマンスを向上させるために上述の技術を使用するにもかかわらず、いずれも、ハードウェアの複雑性及び電力の消費を増している。したがって、一層又は複数層の階層データ及びキャッシュのための命令メモリを、洗練されたページ置き換えアルゴリズムとともに使用する手段が採られてきた。これは、しかしながら、次の命令をどこからフェッチするかを把握するために複雑な命令フェッチ論理を必要とする。複数の計算ブロックセットは、専ら、乗算、加算、及び論理演算や、シフト及び回転などの、特殊な計算アクティベータのためであり、これらは、１）全てのブロックを並列に使用するようにプログラムが順序付け可能である、尚且つ２）必要な制御ビットを計算ブロックにおいて得られるだけの十分な帯域幅がある場合にのみ、一サイクル内で完全に用いられる。パイプラインを充填状態に維持するための分岐予測の使用は、もちろん、分岐予測誤差を被りやすく、これは、フラッシュされるべきパイプラインが深くなるゆえに、費用がかさむと考えられる。
【００２１】
したがって、ハードウェアの追加及び複雑性の増大を含む、上記のプロセッサ設計及び先行技術のスキームは、いずれも、リアルタイムな普遍的マルチメディアアプリケーションにとって十分に強力で且つ十分に柔軟なプロセッサを達成できていない。
【００２２】
システムオンチップ（ＳｏＣ）の現設計を伴う今日のマルチメディア携帯電話機を再考することによって、複数のプロセッサの使用が明らかになり、また、それらにおける複数の特定用途向け集積回路（ＡＳＩＣ）ブロックの補助的使用も明らかにされる（上記同時係属出願でも述べられている）。また、現ハイエンドセットトップボックスＳｏＣを伴う場合も同様である。これらの複数のプロセッサは、多くの場合、制御機能のための単純なＲＩＳＣ、ビデオ／オーディオ処理のための従来のデジタル信号処理（ＤＳＰ）、並びに画像処理及びビデオ処理のためのＶＬＩＷマルチメディアプロセッサを、従前のプログラマブルプロセッサによって上手く扱うことができないアルゴリズムを扱うＡＳＩＣブロックによる補助とともに含んでいる。
【００２３】
しかしながら、ＡＳＩＣの採用と、独立型プログラマブルプロセッサの採用との間には、大きな差がある。
【００２４】
今日のプロセッサは、集中型の命令ディスパッチを有する。プロセッサパイプライン内の全ての論理ブロックは、自身に対する制御信号を、命令デコードステージからパイプラインを経て取得される。例えば、２５６ビットもの長さのコード化された命令の場合、デコードされた制御信号は、夥しくなる可能性がある。これらの信号は、スループットを維持するために、意図したブロックにサイクルごとに達する必要があり、これは、制御信号のためのオンチップ帯域幅要件を重大にする結果となる。命令は、また、データメモリ帯域幅、レジスタファイルのサイズ、及び計算ユニットに対する考えられる接続の制約下でクロックサイクルごとの計算ハードウェアの利用を最大にするように順序付けなければならず、これは、効率的な命令の順序付けを困難なタスクにする。
【００２５】
ＡＳＩＣと、このような汎用プロセッサとの間の最も重大な違いは、ＡＳＩＣが、プログラムも命令も有さないことである。ＡＳＩＣは、データフローのみを有し、命令も制御フローも有さない。入力データは、異なる機能ブロック及びバッファメモリブロックを通って出力に向かって流れる。データは、各機能ブロックを通る間にそのブロックによって処理され、もし命令トラフィックのオーバーヘッドがなければクロックレートを低く維持することができる。
【００２６】
以下で詳述される本発明のアプローチにしたがうと、クロックサイクルごとにシステム内のその他の全てのブロックに対する制御を決定する集中型のフェッチ＆デコードブロック戦略による既存の及び先行技術のプログラマブルプロセッサが持つこれらの不適切性の多くが、成功裏に克服される。
【００２７】
また、既存の及び先行技術の汎用プロセッサによって扱うには問題がある一般的なアルゴリズム及び演算が幾つかある。その１つは、可変長デコーダ（ＶＬＤ）又はハフマンデコーダの実装に関係する。一般に、ハフマンコーディングは、より頻繁に現れる記号（例えば英語における文字「ｅ」）のコード化には少なめのビットを使用し、あまり頻繁に現れない記号（例えば英語における文字「ｘ」）のコード化には多めのビットを使用する。ビットストリーム内のこのような記号のデコーディングは、以下の理由：
１．頻繁な記号は、通常、プロセッサのための固定オペランドビットよりも大幅に少ないビットでコード化される、
２．記号が始まる場所は、現記号の処理結果に依存し、これは、次の命令を、現命令の計算結果に常に依存させる。命令フェッチは、完全にデータ依存性であるので、実際は、効果的な投機的命令フェッチアルゴリズムを実装することもできない。これは、パイプラインの充填をほとんど不可能にするゆえに、非常に非効率的である、
ゆえに、現プロセッサでは困難である。
【００２８】
今日のプロセッサが直面するもう１つの挑戦は、有限状態マシン（ＦＳＭ）の実装である。ＦＳＭは、格納された前状態と、新しい入力とに基づいて新しい状態を迅速に導き出すために使用される。次いで、新しい状態、又は新しい状態と入力とから、出力（又は行為）が導き出される。しかしながら、通常は、新しい入力のビットはごく少なく、代表的なオペランドビット幅と比べて状態を表わすビットはごく少ない。したがって、高速実行のためにプロセッサ内に容易にパイプライン化することができるＦＳＭ命令シーケンスを書き込むことは、極めて困難である。しかしながら、限られたゲート及び少数ビットのレジスタによって、非常に高速なＦＳＭをデジタルＡＳＩＣ内に実装することができる。実際、各記号のハフマンデコーディングは、読み出された特定のビットパターンにそれぞれ対応する幾つかの状態をリンクさせたものと、コーディングプロセスを続けるために読み出すべき新しいビットの数とによって実装することができる。
【００２９】
本発明は、メモリバンクに対する論理回路インターフェースを改善することによって、これらの限界に取り組む。
【発明の概要】
【発明が解決しようとする課題】
【００３０】
本発明の主な目的は、したがって、改善された新規の柔軟なデータ処理方法及び装置であって、汎用及び専用の両方のリアルタイムマルチメディアアプリケーション、並びに数値プログラムの用途に特に適しており、先行技術の及び既存のプロセッサに伴う上記の、下記の、及びその他の限界及び困難の影響を受けず、更に、上記同時係属特許出願の設定可能パイプラインステージを伴う柔軟なプログラマブル埋め込みプロセッサとの関連のもとで、携帯電話機、ＴＶ受信用のセットトップボックス、又はその他の同様のデバイスなどの一デバイス内に、ほぼ無制限にアプリケーションソフトウェアプログラムを集約させることの展望を切り開く、データ処理方法及び装置を提供することにある。
【００３１】
更なる目的は、新規のメモリ構成及びデータパス、並びにメモリバンクに対する適切な読み出し側及び書き込み側インターフェースを伴う、高度に革新的なマイクロプロセッサコア設計及び制御を提供することにある。
【００３２】
以下では、その他の及び更なる目的が挙げられ、添付の特許請求の範囲にも詳述される。
【課題を解決するための手段】
【００３３】
恐らくはより大きな視野から見て、簡潔に言うと、発明は、複数の異なる機能計算ユニット、メモリユニット、それらを相互に接続するためのフルアクセススイッチユニット、及び制御ユニットを内包するプロセッサを伴う、クロックサイクル同期した柔軟なプログラマブルデータ処理の方法であって、
異なる機能ユニットを接続し、所定の制御パス及びデータパイプラインを階層式に形成することと、
共通の命令セットを使用して、全ての機能ユニットをプログラムすることであって、命令セットは、命令シーケンシング（すなわち、次の命令フェッチのためのアドレスの算出方法）を直接的にコード化し、ハードウェアの制御を直接的に又は間接的にコード化する、ことと、
それぞれが自身のプログラムカウンタ、命令フェッチ及びデコードユニット、並びにプログラム格納のための自身のローカルメモリを有する各機能ユニットを用いて、分散型のプログラムシーケンシングをセットアップすることと、
このような機能ユニットのデータパスを制御する制御ベクトルを、クロックサイクルごとに生成することと、
複数のメモリユニットを、異なるメモリアクセスモードで動作するように設定し、それらを、プログラム可能性を最大にするためにスイッチユニットを通じて機能計算ユニットに接続することと、
を含む方法を採用する。
【００３４】
好ましい形態及び最良の形態の設計の詳細は、後ほど提示される。
【００３５】
次に、添付の図面を参照にして、発明の説明が行われる。
【図面の簡単な説明】
【００３６】
【図１】発明を、その分散型プログラムシーケンシング及び分離型命令データフローとともに例示したブロック図である。
【図２】図１の各機能ユニットのための好ましいシーケンサを示した同様の図である。
【図３】好ましいリングタイプのバスを用いた有用な制御構成を示している。
【図４】データパイプラインのための適切なサプライヤ−コンシューマ構成である。
【図５】２つのデュアルポートメモリバンク、並びに２つの読み出し側インターフェース及び２つの書き込み側インターフェースを含む、好ましいメモリユニット構成の図である。
【図６】図７のルックアップテーブルによってプログラムすることができる複合回路ブロック図である。
【図７】ルックアップテーブルを示す説明図である。
【図８】本発明に有用な書き込み側インターフェースの図である。
【図９】有限状態マシンとして動作するメモリユニットを例示しており、２つの読み出し側インターフェースは、一方のメモリバンク内の状態テーブルエントリと、他方のメモリバンク内の入力ビットストリームとを呼び出すために、同期的に使用される。
【発明を実施するための形態】
【００３７】
既述のように、今日のプロセッサ設計において、命令フェッチステージ及び命令デコードステージは、プロセッサ全体の中枢神経系であり、プロセッサ全体の効率は、パイプラインステージ内の全てのハードウェアを駆動して有用な作業を実施するために到着命令をクロックサイクルごとに制御信号に翻訳することに依存している。これは、更に、ハードウェア、ソフトウェア、及び帯域幅に関する上述の全ての制約のもとでなされる必要がある。
【００３８】
本明細書で説明される本発明及びその実施形態の根底にあるのは、クロックサイクルごとにシステム内の全てのブロックに対する制御を決定する集中型のフェッチ＆デコードブロックを排除するという、大きく異なった戦略である。本アプローチは、むしろ、ＡＳＩＣにおける場合と同様に、バッチデータ処理のための自然なデータフローをセットアップしつつ、プログラム可能性の利点も維持する。以下の項目は、発明の戦略及びアプローチをまとめたものである。
【００３９】
１．集中型プログラムシーケンシングと対照的な、分散型プログラムシーケンシングの採用。プロセッサ内の各機能ブロックは、自身のプログラムカウンタ、命令フェッチ＆デコードブロックを有し、各機能ブロックは、プログラムの格納のための自身のローカルメモリを有する。
２．各機能ユニットをプログラミングするために、全ての機能ユニットに共通する一般的な命令セットを使用する。命令セットは、命令シーケンシング（すなわち、次の命令フェッチのためのアドレスの算出方法）を直接的にコード化し、ハードウェアの制御を直接的に又は間接的にコード化する。
３．異なる機能ブロックを接続し、制御階層及びデータパイプラインを形成することによって、機能ブロックを階層式に制御する。
４．計算ブロックが、メモリへの中間バッファリングを伴うことなく到着データに対してより多くのステップの算術演算及び論理演算を実施することができるように、計算ブロックを、より多くのタイプのデータフロー及び動作に適合するように柔軟にする、又は、上記同時係属特許出願で教示されるように、データメモリに対して出入りするトラフィックを抑制する。
５．上記同時係属特許出願にあるように、プログラム可能性を最大にするために、複数のメモリブロック及び関連の論理をフルアクセススイッチを通して計算ブロックに接続する。
６．データ依存処理、木又はグラフのトラバーサルを扱うために、本明細書で後ほど説明される有限状態マシンとして、メモリ読み出し／書き込み回路系に論理を追加する。
【００４０】
分散型プログラムシーケンシング（上記の項目「１」）を採用する本発明の戦略の背景にある理由は、第１に、それぞれ特定の動作に焦点を当てた異なる複数の機能ブロック（例えば、データ計算のための実行ユニットや、特定のアドレッシングモードでデータを検索する及び書き込みしなおすためのメモリユニット）にプロセッサを分割すると、各ブロックを制御するためのハードウェアが少なくなることにある。ユーザプログラム又はサブルーチンにおいて各ブロックに必要とされる異なる動作モードの総数は、限られる。ユーザプログラム全体又は少なくとも幾つかのサブルーチンのための制御線は、更に、応分の量のローカルプログラム＆制御ベクトルメモリに格納することができる。このアプローチは、更に、命令フローをデータフローから分離する。１つの機能ユニット内では、複数のデータセットが、そのブロック内で適切に処理される同じ命令シーケンスを繰り返し使用することができる。このような制御情報は、また、データパイプラインを横断する必要がなく、バッファリングリソース及びオンチップ帯域幅を節約する。
【００４１】
命令のシーケンシングとデータパスの制御とを分離する（上記の項目「２」）理由は、データパス内の様々なハードウェアブロックに合わせて制御ベクトルのサイズ及び定義の柔軟性を提供しつつ、単純化を図ることにある。ただし、同じ命令セットを、様々なハードウェアブロックに使用することが可能である。
【００４２】
上記の項目「３」については、階層式の制御、プログラム、及び命令によって、データタイプ及び制御交換要件が異なる様々なレベルでフローを管理することができる。
【００４３】
図１の機能ブロック命令シーケンシングの図に言及すると、発明は、柔軟なプログラミング方法、制御メカニズム、及びプロセッサアーキテクチャを提供し、ここでは、好ましくはパイプライン型アーキテクチャＰＳであるプロセッサＰ内のハードウェアリソースが、例えば上記同時係属出願に記載されるように、機能ブロック（例えば実行ユニット６、メモリユニット４、及びスイッチユニット５）に分割される。各機能ブロックは、「プログラムメモリ」と表示された自身のローカルプログラムメモリと、より完全な形で図２に示されるように、プログラムメモリから命令をフェッチしてデコードし、データパス内のハードウェアの機能性を制御する制御ベクトルをクロックサイクルごとに生成するための、表示通りのシーケンサとを有する。
【００４４】
図１及び図２に一般化されるような、本発明のための例示的な命令セット及び対応シーケンサ設計は、次の命令アドレス（条件分岐、飛び越しなど）と、データパスの３つの典型的な汎用動作モードとを明確に算出するための方法をコード化し、データパスのその他の全てのタイプの動作を間接的に可能にする。このような命令セット設計は、それぞれの制御ベクトルのコーディングのために異なるビット数を必要とする様々なハードウェアブロックを、同じ命令セットによってプログラムすることを可能にする。図２にあるように、次の命令アドレスの算出は、現命令のコーディングと、命令シーケンサに接続された条件信号とに依存する。
【００４５】
データパスの設定には、２つの間接的方法がある。
ａ．命令は、次のクロックサイクルのための制御ベクトルをシーケンサ内部の専用メモリスペース内で検索するために使用されるアドレスポインタを含む。制御ベクトル線のコンテンツは、一クロックサイクル内にデータパスの以下の３つの特徴を決定する。
i.データパス内のデータパイプライン部分を構成するための、異なるデータパス部分間の相互接続。
ii.データパスによって実施される特定の算術演算及び論理演算。
iii.命令シーケンサに引き渡すための、条件付き信号の選択。
ｂ．このタイプの複数の命令をデータパス内のレジスタの更新に使用することができるように、レジスタアドレス又はレジスタコンテンツのいずれかを特定するフィールドを含む命令。
【００４６】
好ましい動作では、以下の３つの動作が明確にコード化される。
ａ．もし条件信号が真であるならば、データパス内のレジスタが新しい値に更新されないように、データパス動作を一時停止する。
ｂ．一時停止を解除する。
ｃ．データパスが、次のクロックサイクルのための自身の制御ベクトルをシーケンサ内部の専用メモリスペース内で検索するために使用されるポインタを生成する役割を担うように、図２にあるように、制御ベクトルアドレッシングモードをデータパス更新モードに設定する。（データパスは、このモードを解除する役割を担う。）
【００４７】
図１及び図２の機能ブロックの構成は、制御を目的として、親ブロックＣ（プロセッサ制御回路）及び補助ブロックすなわち「子」ブロック４、５、６などとして構成可能なものである。
【００４８】
親ブロック制御ユニットＣは、補助ブロックすなわち子ブロック内の、自身に割り当てられたメモリスペース内へ、プログラム（通常はＤＭＡを通す）及び制御ベクトルをバルク転送することを開始する。
【００４９】
発明は、好ましい実装形態では、親ブロックで開始して親ブロックで終わるとともにその各補助ブロックを通り抜ける図３のリングタイプのバスを使用する。このリングタイプのバスは、汎用レジスタ及びメモリ読み出し／書き込みプロトコルを通じて制御ユニットの親ブロックとその全ての補助ブロック４、５、６などとの間でメッセージの引き渡しを行うために使用される。例えば、これは、補助ブロック内で実行されるべきプログラムの次のモジュールの開始を指し示すようにプログラムカウンタレジスタを設定するために、制御ブロックＣによって使用することができる。
【００５０】
もし所望であれば、特定のプログラムモジュールの実行が開始する厳密なクロックサイクルを制御するために、親制御ブロックＣから補助ブロックへの随意の開始信号セットが使用されてもよく、また、親制御ブロックからの注意を求めるために、補助ブロックから親ブロックへ戻される随意の割り込み信号セットも提供されてよい。例えば、補助ブロックは、それがプログラムモジュールの実行を完了したことを示すために信号を起こすことができる。
【００５１】
サプライヤとコンシューマとの関係にある、制御を目的としたデータパイプラインに沿った機能ブロックの構成が、図４に例示される。
【００５２】
コンシューマからサプライヤに送信されたデータが有効であること、及びゆえにコンシューマにおける処理が開始してよいことを示すために、サプライヤからコンシューマへは「有効」信号がある。
【００５３】
コンシューマが新しいデータを受け入れられないことを示すために、コンシューマからサプライヤへは「保留」信号がある。サプライヤは、すると、その動作を一時停止し、保留信号が解除されその時点で動作が再開されるまで、データパス内のレジスタ値を保留する。「有効」信号及び「保留」信号は、制御ベクトルによって直接的に、又はデータパス内の論理回路によって、セットアップすることができる。
【００５４】
本発明では、上記の発明プロセッサ設計の場合にターゲットデータ処理プログラムを命令シーケンスにマッピングする方法は、以下のステップを伴う。
ａ．データ処理プログラム全体を、異なるデータ処理モジュールに分割する。各モジュールは、上述のように、プロセッサ内の１つ又は複数の機能ブロックによって構成されたデータパイプラインによって扱うことができる。異なるデータ処理モジュールは、異なる時間枠において、又は別々のハードウェアブロック上において間に適切な接続を伴って、実行することができる。
ｂ．一処理モジュールに対応する各データパイプラインは、データパイプラインに沿って各機能ブロックに１つずつの、１つ又は複数の命令シーケンスによって構成される。
i.命令シーケンスは、開始信号又は有効信号のためのスピン待機から開始する。命令シーケンスは、割り込み、又はその親ブロックへのメッセージ書き込みによって終了する。
ii.命令シーケンスは、通常、ループを含み、そのフープカウントは、ループ内部の命令シーケンスにしたがって機能ブロック内部のデータパイプライン部分を横断するデータセットの数を示す（すなわち、バッチ処理）。
iii.命令シーケンスは、図４に記載されるように、「有効」信号及び「保留」の適切なセットアップを可能にする。
ｃ．１つの処理モジュールから次の処理モジュールへの時間枠での進行に対する制御は、全てのデータパイプラインを構成するために使用される全ての機能ブロックについて、親ブロック内すなわち制御ブロックＣ内の命令シーケンスを通じて達成される。
【００５５】
各データ処理モジュールに対して、
i.命令シーケンスは、そのデータ処理モジュールに使用される機能ブロックが実行の開始に適した状態にあることを保証する。
ii.命令シーケンスは、データパイプラインの開始時にそれらの機能ブロックに開始信号を送信する。（通常はメモリユニット。）
iii.現処理モジュールのためのデータパイプラインの実行中に、命令シーケンスは、次の処理モジュールの準備をするために、プログラム（すなわち命令シーケンスと制御ベクトル）及びデータを、それらの対応するメモリスペースにバルクロードすること及びそれらの対応するメモリスペースからバルクアンロードすることを開始する（ハードウェアの可用性及び必要性を前提とする）。
［注１：特定のユーザプログラムの場合、プログラム全体のための命令シーケンスは全て、分散型プログラムメモリスペースにうまく入ることができるので、それらは、起動時にロードすることができる。  注２：前モジュールの結果に対して動作するデータ処理の場合、データは、アンロードされることなく単にそのまま留まることができる。  注３：このタイプのキャッシュリロードは、更には、投機的ではなく決定論的である。］
iv.命令シーケンスは、パイプラインの終わりにある機能ブロックからの割り込み又はメッセージを待つ。（再び、通常はメモリユニット。）
【００５６】
次に、発明によってプログラマブルプロセッサについて一般的に提供される改善点から離れ、上記同時係属特許出願及び本発明の柔軟なプロセッサのための好ましいメモリユニットアーキテクチャについて検討する。
【００５７】
発明による、改善されたメモリユニット構成、アーキテクチャ、及びデータフロー
上記同時係属特許出願のプログラマブルパイプラインアーキテクチャに適した好ましいメモリユニット設計では、ソフトウェアアルゴリズム及び動作の高速実行を支援するために、共通のハードウェア構造が使用される。発明の好ましいプロセッサ設計は、異なる独立した計算ブロックのための、独立したデータメモリストレージとして動作するように、又は相互に接続された計算ブロックのための、適切なアドレッシングモード（例えば二次元アドレッシング、回転アドレッシングなど）を伴う統合データメモリストレージを提供するべく同期的に動作するように、プログラムすることができる、複数のメモリユニットを含む。現発明によるプログラマブルプロセッサ内部のメモリユニットの構成が図５に示され、一メモリユニットのデータパスが図６に示される。
【００５８】
図５では、メモリユニットのデータパスは、図５及び図６における（「バンク０」及び「バンク１」として表示された）２つのデュアルポートメモリバンク、図６における表示通りの２つの読み出し側インターフェース、２つの書き込み側インターフェース、及びデータ＆ステータス交換（ＤＳＥ）を含むものとして示される。２つの読み出し側インターフェースは、異なる機能性を有する。２つの書き込み側インターフェースも、異なる機能性を有する。どの書き込み側インターフェースがどのメモリバンクに接続され、どの読み出し側インターフェースがどのメモリバンクに接続されるかは、プログラム可能である。ハードウェアは、階層型データパイプラインのセットアップを可能にする。上側の階層では、ＤＳＥは、２つのメモリバンクの読み出しインターフェース間及び書き込みインターフェース間における、データ及びステータスの交換をセットアップする。下側の階層では、各読み出しインターフェース又は各書き込みインターフェースが、インターフェースユニット内における特定の処理のために特定のデータパイプラインをセットアップする。
【００５９】
発明は、同じメモリバンク内又は２つのメモリバンク間における、異なる動作のための同期読み出し、同期書き込み、又は同期読み出し及び書き込みを可能にする。
【００６０】
発明は、また、データパイプライン動作の一環として、スイッチユニット５から適切なメモリバンクへのデータの送受信を行うこと、及びそれと同時に、外部メモリへのデータのバルク転送のためにＤＭＡから適切なメモリバンクへのデータの送受信を行うこと可能にする。（実際、これは、次のタスク又はプログラムモジュールの準備をするために、前述の決定論的キャッシュロード及びアンロードによって動作するように意図される。）
【００６１】
図６の読み出し側インターフェースは、図７における表示通り、ＡＬＵと、データマスク＆選択ブロックと、ルックアップテーブルを伴うようにプログラム可能な小ランダムアクセスメモリ（ＲＡＭ）とで構成される。データマスク＆選択ブロックは、データワード内の特定のビットにマスクをかける、又はデータワード内のサブワードを選択して通過させることができる。ＲＡＭは、ルックアップテーブルを伴うようにプログラム可能であり、該ルックアップテーブルでは、この機能ユニットのための制御ベクトルメモリをアドレス指定するためのアドレスポインタである一コンテンツラインを検索するために入力アドレスを使用することができる。ＲＡＭは、異なるソース（例えば、処理されているデータの一部、又はデータパス内のステータス）からのアドレス入力を受け取るように設定することができる。
【００６２】
図６の書き込み側インターフェースは、図８において、ＡＬＵと、データ結合器ブロックとで構成されるものとして示される。データ結合器は、２つのデータワードからの２つのサブワードをまとめて新しいデータワードを形成することができる。
【００６３】
読み出し側インターフェース及び書き込み側インターフェースは、メモリ読み出し及び書き込みのための異なるアドレス計算モードを可能にする。これらのインターフェースは、また、読み出し動作後の読み出しデータの処理及び書き込み動作前の書き込みデータの処理も可能にする。
【００６４】
また、これらは、発明にしたがって、有限状態マシン（ＦＳＭ）として動作するようにメモリユニットをプログラムするために必要なハードウェアを提供する。このようなマシンは、例えば、既知のミーリマシン又はムーアマシンの形態であってよい。このような動作では、
ａ．各メモリユニットでは、図９にあるように状態テーブルエントリを一方に、入力ビットストリームを他方に保持するために２つのメモリバンクが使用される。
ｂ．各状態テーブルエントリは、２つのフィールド：
i.ＲＡＭ内にプログラムされたルックアップテーブルを通じてこの状態に対応する制御ベクトルにインデックスを付けるために使用されるタグフィールドＴＧと、
ii.次の状態エントリの読み出しアドレスを計算するために入力ストリームと併せて使用されるベースアドレスフィールドＢＡと、
で構成される。
ｃ．一方のメモリバンク内の状態テーブルエントリと、他方のメモリバンク内の入力ビットストリームとを読み出すために、２つの読み出し側インターフェースは、同期的に使用される。入力ビットストリームは、状態テーブルエントリを読み出す役割を担う読み出し側インターフェースに送信され、そのレジスタファイル内にバッファリングされる。
ｄ．メモリユニットのための制御ベクトルアドレッシングモードは、データパス更新モードに設定され、これは、データパスが次のサイクルのために自身の制御ベクトルを選択することを可能にする。
ｅ．各状態エントリ読み出しについて、データマスク＆選択ブロックは、そのテーブルエントリを２つのフィールドＴＧとＢＡとに分解する。
ｆ．タグＴＧは、ＲＡＭ内にプログラムされたルックアップテーブル（図７において１として示される）を通じて制御ベクトルにインデックスを付ける。制御ベクトルは、
i.入力ストリームから適切な数のビットを検索するように、
ii.ＢＡフィールドと、検索された入力ビットとに基づいて、次の状態エントリのための読み出しアドレスを計算するように、
iii.現状態のための行動を起こす又は出力を生成するように、
データパスを設定する。
ｇ．もしｆ．で説明された３つの動作を完了するために、複数のクロックサイクルがかかるならば、図７のルックアップテーブル１は、ＴＧがインデックスを付ける制御ベクトルによって自身の出力（図７のＢ）をバッファリングするレジスタからのアドレス入力を受け取るように設定することができる。ルックアップテーブルは、すると、データマスク＆選択ブロックの出力からのアドレス（図７のＡ）を再び受け取るようにルックアップテーブルが最後の制御ベクトルによって設定されるまで、幾つかの制御ベクトルにインデックスを付けるために使用することができる。
【００６５】
当業者ならば、更なる変更形態に想到すると考えられ、このような変更形態は、添付の特許請求の範囲に定められた発明の趣旨及び範囲に入ると見なされる。
【図１】
2011525008.tif 000003
【図２】
2011525008.tif 000004
【図３】
2011525008.tif 000005
【図４】
2011525008.tif 000006
【図５】
2011525008.tif 000007
【図６】
2011525008.tif 000008
【図７】
2011525008.tif 000009
【図８】
2011525008.tif 000010
【図９】
2011525008.tif 000011
【国際調査報告】
2011525008.tif 000012
2011525008.tif 000013
2011525008.tif 000014