(57)【要約】本発明は、データ処理プログラムの少なくとも２つの命令のシーケンスをデータパスを制御するために使用されるコードワードのシーケンスに復号するための方法および装置に関し、コードワードのシーケンスにおいて変化しない不変コードワード部分は、分離して生成され、コードワードのシーケンス中に固定されるデータパスの一部を構成するために使用される。これにより、必要なマイクロコードメモリの大きさは縮小され、電力消費は減少する。
2005526322.tif 000002
【特許請求の範囲】
【請求項１】
データ処理プログラムの少なくとも２つの命令のシーケンスを、データパスを制御するために使用されるコードワードのシーケンスに、復号する方法であって、前記方法は、
ａ）前記コードワードのシーケンスにおいて変化しない不変コードワード部分を分離する工程と、
ｂ）前記不変コードワード部分を、前記コードワードのシーケンス中に固定される前記データパスの一部を構成するために使用する工程と、を備えることを特徴とする方法。
【請求項２】
前記分離された不変コードワード部分を、専用メモリをアドレス指定するために使用する工程をさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記専用メモリをルックアップテーブル又は内容参照可能メモリとして実現する工程をさらに備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記専用メモリを前記データパスの複数の機能ユニットの間で共有する工程をさらに備えることを特徴とする請求項２または請求項３に記載の方法。
【請求項５】
前記データパスのそれぞれの前記機能ユニットに割り当てられた複数の前記専用メモリを提供する工程をさらに備えることを特徴とする請求項２乃至請求項４のいずれかに記載の方法。
【請求項６】
前記不変コードワード部分を新しいコードワードに拡張する工程と、前記新しいコードワードを前記データパスを制御するために使用する工程を、さらに備えることを特徴とする請求項２乃至請求項５のいずれかに記載の方法。
【請求項７】
前記コードワードのシーケンスと同一の接続を使用して、前記データパスを、前記新しいコードワードによって制御する工程をさらに備えることを特徴とする請求項６に記載の方法。
【請求項８】
前記同一の接続をマルチプレクサ機能を介して選択する工程をさらに備えることを特徴とする請求項７に記載の方法。
【請求項９】
制御ワードにおける前記不変コードワード部分のビット位置を特定するための構成マスクを使用する工程をさらに備えることを特徴とする請求項２乃至請求項８のいずれかに記載の方法。
【請求項１０】
前記構成マスクは符号化されることを特徴とする請求項９に記載の方法。
【請求項１１】
前記構成マスクに基づいて、前記コードワードのビットを制御レジスタの適切な位置に向けるように制御ワードロード機能を制御する工程をさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記構成マスクはバイナリパターンであることを特徴とする請求項１０または請求項１１に記載の方法。
【請求項１３】
前記制御レジスタに接続するためのスイッチング信号を生成するために、前記構成マスクを使用する工程をさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記専用メモリの大きさを命令レジスタの大きさに対応するように選択する工程をさらに備えることを特徴とする請求項２乃至請求項１３のいずれかに記載の方法。
【請求項１５】
前記データパスの前記部分を、再構成可能なハードウェアを使用することにより構成する工程をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１６】
前記不変コードワード部分に基づいて構成コンテキストを選択する工程をさらに備えることを特徴とする請求項１５に記載の方法。
【請求項１７】
前記再構成可能なハードウェアを制御する制御ビットの数を、前記コードワードのシーケンスに必要な構成に基づいて、減少させる工程をさらに備えることを特徴とする請求項１５または請求項１６に記載の方法。
【請求項１８】
前記少なくとも２つの命令のシーケンスを、最も大きい不変コードワード部分を持つ命令から選択し、前記選択された命令を前記再構成可能なハードウェアにマッピングする工程をさらに備えることを特徴とする請求項１５乃至請求項１７のいずれかに記載の方法。
【請求項１９】
前記少なくとも２つの命令のシーケンスは、前記データ処理プログラムのループ本体を形成することを特徴とする請求項１乃至請求項１８のいずれかに記載の方法。
【請求項２０】
データ処理プログラムの少なくとも２つの命令のシーケンスを、データパスを制御するために使用されるコードワードのシーケンスに復号する装置であって、前記装置は、
ａ）前記コードワードにおいて変化しない不変コードワード部分を分離して生成する生成手段と、
ｂ）前記不変コードワード部分を受け取り、前記コードワードのシーケンス中に固定される前記データパスの一部を構成する構成手段、とを備えることを特徴とする装置。
【請求項２１】
前記構成手段は、前記不変コードワード部分に対応する新しい制御ワードを格納するための専用メモリ手段を備えることを特徴とする請求項２０に記載の装置。
【請求項２２】
前記構成手段は、前記専用メモリ手段からの新しい制御ワードを前記データパスを制御する制御信号に復号するための復号手段をさらに備えることを特徴とする請求項２１に記載の装置。
【請求項２３】
制御ワードロード手段を制御して、前記コードワードのシーケンスの可変コード部分におけるビットを、制御レジスタの適切なビット位置にロードする、構成マスクレジスタを、さらに備えることを特徴とする請求項２０に記載の装置。
【請求項２４】
前記制御ワードロード手段は、プログラム可能なクロスポイントスイッチを備えることを特徴とする請求項２３に記載の装置。
【請求項２５】
前記制御ワードロード手段は、前記プログラム可能なクロスポイントスイッチと前記構成マスクレジスタとに接続される、マスク解釈ロジックをさらに備えることを特徴とする請求項２４に記載の装置。
【請求項２６】
前記構成手段は、前記不変コードワード部分に基づく再構成可能なハードウェア手段を備えることを特徴とする請求項２０に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理プログラムの少なくとも２つの命令のシーケンスを、例えば、デジタルシグナルプロセッサなどのデータパスを制御するために使用されるコードワードのシーケンスに復号するための方法および装置に関する。
【背景技術】
【０００２】
コンピュータアーキテクチャは、制御ワードによって制御される固定データパスから成る。この制御ワードは、いくつかの部分から成り、それぞれがデータパスの部分を制御する。これらの部分は、マルチプレクサ、レジスタアドレス、算術論理演算装置（ＡＬＵ）またはその他の機能ユニットなどのためのオペレーションコードを備える。発行されたそれぞれの命令は、通常は、命令のバイナリーフォーマットを、対応する制御ワードに変換する命令デコーダにより、またはマイクロストア、すなわち制御ワードを直接含むメモリにより、新しい制御ワードを生成する。
【０００３】
プロセッサがループ機能を実行する場合、対応する手順が、命令のシーケンスとしてだけでなく、時間を競うパイプライン回路として解釈されても良い。このような、パイプライン回路では、データは、各クロック期間でデータフローグラフのエッジを移動する。グラフのエッジは、レジスタによって実現される。他方、データフローグラフは、命令スケジューラにより決定されるような、異なる動作が所定の順序で行われるプログラムにより、実現されても良い。命令はまた、１つずつ行われるか、または、プロセッサアーキテクチャが平行的な処理をサポートする場合は、平行性をもって行われても良い。これらの動作を実行するために、プロセッサにおいてそれぞれの制御ワードが各命令についてデータフローグラフの一部を構成し、エッジは、一般的なプロセッサレジスタによって実現される。
【０００４】
しかしながら、電力損失と領域に関する組み込み型システムのコストは、プログラム記憶装置に必要なメモリにより決定される大きなものである。高いレベルのコンパイルは一般に、手作業のアセンブリコードと比較して、コードサイズに関して不利になる。コードサイズを許容範囲にとどめておくために、効果的な命令符号化とコード圧縮が、新しいプロセッサコアの設計において極めて重要である。さらに、プログラムの異なる部分のパフォーマンスに関しての異なる制約についての説明は、コード密度とパフォーマンスの間の兼ね合いを考慮に入れる。
【０００５】
米国特許文献第５８６２３８４号は、更新変数表において認識される更新変数に基づくループからループの不変式を移すように配置された最適化セクションが設けられた、コンパイラ最適化装置について開示している。これは、実行された命令文の合計数を減らし、効果的な処理の最適化と処理速度の加速に結びつく。
【０００６】
しかしながら、ループを代表するような、特定の命令シーケンスは、固定部分と標準部分を持つ制御ワードのシーケンスになる。制御ワードの固定部分は変化しないが、構成メモリコンテキストは、このような不変シーケンスの実行時間によって決定された多くのサイクルの間に、書き換えられる。この時間の不利益が処理パフォーマンスの低下と電力消費の増加につながる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従って、本発明の目的は、命令シーケンスを符号化するための復号の方法および装置を提供することであり、これにより、処理パフォーマンスを向上させ、電力消費を削減することができる。
【０００８】
この目的は、請求項１に記載された方法および請求項２０に記載された装置により、達成される。
【課題を解決するための手段】
【０００９】
固定回路の実現とプログラムベースの実行の実現との２つの両極端の間にある方法が、ループに入る前のデータフローグラフの一部がループ中に固定されるように構成するために、設けられる。これはデータパスの一部を固定すること、すなわち制御ワードのいくつかの部分を固定することと対応する。このことは、各サイクルで発行される制御ワードをより限定することになるため、電力消費および（マイクロ）コードサイズは減少する。この技術は、制御ワードは、制御ワードの巻き上げの一種とみなされる。ここで、コンパイラ用語「巻き上げ」は、ループ不変制御信号（例えば、オプコード、アドレスなど）をループの外に移動することを意味する。しかしながら、命令スケジュールが変わらないため、コンパイラに関しては、この技術はほとんどインパクトがない。それぞれのコードワードシーケンス、例えば、ループ内で命令を符号化することのみが、影響を受ける。特に、制御ワードの不変部分、すなわち固定部分は、命令デコーダまたはマイクロストアからはもはや発生せず、他の場所で、例えば分離したメモリから得ることが可能である。他の選択として、再構成可能なハードウェア、例えば組み込み型のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を不変部分の配線を処理するために使用することができる。
【００１０】
制御ワードの不変部分は、制御ワードごとに重複して複製されることはないため、必要なマイクロコードメモリサイズは減少する。
【００１１】
専用メモリの選択において、専用メモリは、ルックアップテーブルまたは、内容参照可能メモリであって良い。専用メモリは、データパスの複数の機能ユニットの間で共有できる。あるいは、複数の専用メモリが、データパスのそれぞれの機能ユニットに割り当てられる。
【００１２】
さらに、不変のコードワード部分は、専用メモリをアドレス指定するために用いられ、データパスを制御するために使用される展開された新しいコードを得ることができる。これは、元のコードワードのシーケンスと同じ接続を用いることによって達成される。その際、接続は、マルチプレクサの機能を介して選択されることが可能である。
【００１３】
不変コードワード部分のビット位置は、構成マスクを用いることによりコードワードにおいて特定することができる。特に、機能をロードした制御ワードは、コードワードのビットを制御レジスタの適切な位置に向けるように、構成マスクに基づいて制御される。これは、構成マスクが、制御レジスタに接続するためのスイッチング信号を生成する構成マスクを用いることで達成される。専用メモリの大きさは、命令レジスタの大きさと一致する。
【００１４】
再構成可能なハードウェアの選択において、構成コンテキストは、不変コードワード部分に基づいて選択される。さらに、再構成可能なハードウェアにマップされた回路を制御する制御ビットの数は、不変制御の部分を構成自体に組み入れることにより、減少させることができる。これにより、コードワードの不変部分は、巻き上げられると共に、再構成可能なハードウェアにマップされた回路を制御するのに必要な命令ワード幅を縮小する。その上、最も大きい不変のコードワード部分を持つそれらの命令は、少なくとも１つの命令から選択され、選択された命令は、再構成可能なハードウェアにマッピングするために用いることができる。ゆえに、再構成可能なハードウェアは、巻き上げから最も大きな利益を得るそれらの命令または命令シーケンスに使用される。
【００１５】
その他の有益な発展は、従属請求項において定義される。
【発明を実施するための最良の形態】
【００１６】
デジタルシグナルプロセッサにおけるコードシーケンスの例として、ループ機能の復号と処理に基づいて、好ましい実施形態を以下に述べる。好ましい実施形態によれば、データフローグラフの一部はループに入る前に、ループ中に固定されるように構成される。これはデータパスの一部を固定することに対応しており、すなわち制御ワードのいくつかの部分を固定することに対応している。
【００１７】
一般に、ループ不変データフローグラフに対して制御ワードの一部を固定することは、次のような意味を持つ。
【００１８】
機能ユニットとレジスタファイルの間の接続を固定する、
レジスタファイルスペース内でアドレスを固定する、
機能ユニットのためのオプコードを固定する。
【００１９】
制御ワードの固定部分の生成は、任意のループ不変データフローパスと関連して、ループに対するコード生成または命令復号の間に起こる。そして、ループの実行中に、制御ワードの標準部分または可変部分は、局所的命令デコーダまたはマイクロストアから得られる。制御ワードの固定部分または不変の部分は、コードワードのシーケンス中に固定されるデータパスの一部分を構成するために使用される。
【００２０】
第１の好ましい実施形態によれば、コードワードの固定部分は、ルックアップテーブルまたは内容参照可能メモリ（ＣＡＭ:content addressable memory）として実現される専用メモリブロックから得られる。考慮されたアーキテクチャにおける命令階層によって、専用メモリブロックは、プロセッサアーキテクチャに全体的に、もしくは局所的に配置される。
【００２１】
第２の好ましい実施形態によれば、制御ワードの固定部分は、プロセッサアーキテクチャに設けられる再構成可能なハードウェアまたはロジック装置の再構成可能な観点を固定するために用いることができる。
【００２２】
次に、第１の実施形態の実現の例を、図１から図６を参照して説明する。
【００２３】
図１は、専用メモリブロックを配置するための上記２つのアプローチを持つ、デジタルシグナルプロセッサアーキテクチャの一部分の概略図を示す。図１の左上に示されているように、制御ワード１０は、標準または可変部分１１と、固定または不変部分１２から成る。固定部分１２は、ループ中に変化しない。第１のアプローチによれば、図１の右上の部分に示されているように、専用メモリブロック２６は、レジスタファイル２１が接続される第１の機能ユニットクラスタ２３の命令デコーダ２４に接続されている。レジスタファイル２１は、マルチプレクサ２２を介して、相互接続線からアクセスすることが可能である。従って、第１のアプローチにおいて、専用メモリブロック２６は、制御ワードの固定部分がいくつかの機能ユニットクラスタの間で共有されるように、全体的に配置される。なお、レジスタファイル２１のレジスタもまた、マルチプレクサ２２を通らずに、デコーダ２４から直接アドレス指定される。アドレス指定のこの部分は、制御ワードの固定部分１２に対応し、ループ中変化しないままである。
【００２４】
図１の右下部分に示される第２の可能なアプローチによれば、専用メモリブロック２５は、所定の機能ユニットクラスタ、例えば機能ユニットクラスタ２３内に配置され、このクラスタに固有のものである。再び、専用メモリブロック２５は、機能ユニットクラスタ２３の命令デコーダ２４に接続される。制御ワード１２の固定部分は、両方のアプローチにおいて、元のビット幅を縮小するために（例えばコンパイラまたはアセンブラにより）符号化することができる。そして、固定部分は、その後それぞれの専用メモリブロック２５，２６において展開または複号化され、変更された命令タイプが得られる新しい制御ワードになる。
【００２５】
図２は、標準および変更された命令のタイプの双方によって制御されるレジスタファイル２１の例を示す。標準の命令タイプは、制御ワード１０の標準部分１１に基づいて得られ、一方変更された命令タイプはそれぞれの専用メモリ２５，２６を介して制御ワード１０の固定部分１２に基づいて得られる。特に、ループ中、標準と変更の命令タイプは双方とも、必要な処理とループのレジスタ機能を提供するように、命令デコーダ２４によって生成される。なお、制御ワード１０の固定部分１２および標準部分１１から標準および変更された命令タイプへの変換は、それぞれ図２には示されていない。実装化の全コスト、特に配線のコストを縮小するために、それぞれの専用メモリブロック２５，２６によって生成される新しい制御ワードは、標準命令デコーダ２４のような制御された資源への接続と同一の接続を使用することができる。図２で示されるように、選択は、レジスタファイル２１のそれぞれの入力に設けられた局部的なマルチプレクサを使用することによって達成される。従って、制御ワード１０の標準部分１１および固定部分１２から得られる制御信号の双方を、レジスタファイル２１を制御するために用いることができる。
【００２６】
制御ワード１０のループ不変または固定部分１２は、ループ変化または標準部分１１から分離されていることにより、アプリケーションの各ループは、ループ不変部分または構成そのものを持つことになる。残りの部分は、ループ実行中に変えることができる。これは、構成部分はループ内で制御ワードごとに重複して複製されないため、必要なマイクロコードメモリサイズを縮小する。実際には、ループ実行中に変化しない制御ビットは、制御ワードに任意に分散させることができる。すると、問題は、適切な構成および標準ビットをマイクロコードメモリからロードする実行中、プロセッサデータパスの資源が制御される、命令デコーダ２４での制御レジスタの適切なビット位置にある。これは、アプリケーションにおいて各ループに、制御レジスタにおいてどのビット位置がループ不変で、どれがそうでないかを特定する構成マスクを提供することにより解決される。そして、制御ワードローダは、構成部分におけるビットを、構成マスクの制御の下で制御レジスタの適切な位置に向ける。すると、ループの実行が始まる。標準部分１１から得るすべての制御ワードに対して、制御ワードローダは、専用メモリブロック２５または２６に定義されたループの、事前ロードされた構成を変えずに、各ビットを制御レジスタ内の適切な位置に向ける。
【００２７】
図３は、構成部分を標準部分から分離させる制御データ内のいくつかの点における単純なカットによる制御データの簡略化した生成を表す概略図を示す。図３によれば、制御レジスタ５０は、それぞれのレジスタファイルおよびランダムアクセスメモリ（ＲＡＭ）５２を持つ、２つの算術論理演算装置（ＡＬＵ）５４と、２つの乗算／アキュウムレートユニット（ＭＡＣ）５３とを備えるプロセッサデータパス４１を制御するように設けられる。図３に示されているように、ループ実行中に変化しない制御ビットは、すなわち構成部分６２のビットは、制御レジスタ５０の対応する部分へ直接送られる。一方、マイクロコードメモリ５１に格納される制御データの標準部分１１は、ループ実行中に変化し、制御レジスタ５０の残りの部分に供給される。この単純化された状況は、アーキテクチャによって実施され、巻き上げの可能性を逃したコンパイラによって活用されるが、一般的な場合、ループ不変のビットは、図３に示すように、すべてが連続した順序で互いに隣接しているという保証はない。制御ワードの巻き上げの可能性を最大に活用するには、さらなる一般的な解決策が要求される。
【００２８】
そこで、図４では、一般的な場合を示し、制御レジスタ５０における線が引かれた位置は、ループ不変または構成ビットに対応する。図４から推測できるように、ループ実行中に変化しない制御ビットは、特に順序もなく、制御レジスタ５０における制御ワードに任意に分配される。問題は、ループ実行中に、マイクロコードメモリ５１からの固有の構成および標準ビットを、制御レジスタの適切なビット位置にロードすることである。これを達成するために、すでに述べたように、構成マスク６１が、図１の専用メモリブロック２５，２６におけるすべての構成と共に設けられる。新しいループが実行される場合、対応する構成マスク６１が、マイクロコードメモリ５１からの制御データを、制御レジスタ５０の適切な位置に、構成マスクレジスタ６３により定められたようにロードする責任を負う制御ワードローダ６４の構成マスクレジスタ６３に、ロードされる。そして、ループの実行が始まる。標準部分１１の制御データごとに、制御ワードローダ６４は、専用メモリ２５，２６から得られた、事前ロードされた構成６２を変えずに、各ビットを制御レジスタ５０の適切な位置に向ける。
【００２９】
なお、構成マスクレジスタ６３のゼロと１のパターンは、制御信号ではなく、単に制御ワードのどのビット位置がループ不変で、どの位置がそうでないかを特定するものである。他方、ループ構成６２においてゼロと１は、実際に制御信号であり、プロセッサデータパス、例えば機能ユニット、レジスタアドレス、マルチプレクサの選択入力などに対するオプコードを制御する。
【００３０】
図５は、図４に示される制御ワードローダ６４のアーキテクチャを表す概略図を示す。図５に示されるように、プログラムカウンタＰＣは、マイクロコード記憶装置５１、または命令メモリもしくはキャッシュに格納された制御ワード１０の実際の標準部分１１を指定する。すでに述べたように、残りの固定部分または構成は専用メモリ２５，２６に格納される。従って、通常の命令メモリまたはマイクロコード記憶装置５１は、制御ワード１０の標準部分のみを含む。そして、新しい構成は、ソフトウェア制御の下で制御レジスタ５０にロードされる。しかしながら、このロード機能は、図５には示されていない。専用メモリ２５，２６の各制御ワードの大きさは、プロセッサの命令レジスタ５０にあるものと同じでも良い。このように、各構成６２と共に、対応するループの第１の制御ワードまたは命令の標準部分１１に対応するビットもまた、専用メモリブロック２５，２６に格納されても良い。ワードサイズが同一であるという事実により、専用メモリブロック２５，２６のワード（構成）は、図５に示される制御ワードローダ６４に設けられたプログラム可能クロスポイントスイッチ７３をまったく経由することなく、プロセッサの命令レジスタに直接ロードされることが可能である。そうすることにより、ループの制御ワードの第１の標準部分１１は、自動的に並行してロードされる。
【００３１】
プログラム可能クロスポイントスイッチ７３は、マルチプレクサチェーンから構成され、各マルチプレクサは、マスク解釈ロジック７１からの一連のビットにより制御される。特に、プログラム可能クロスポイントスイッチ７３は、制御可能なトライステートバッファを有することができ、一方、すべての個々のマルチプレクサとバッファ制御ビットの集まりが、スイッチ制御信号７２を作成する。マスク解釈ロジック７１は、構成マスクレジスタ６３の内容をスイッチ制御信号７２に変換するように配置される。マスク解釈ロジック７１の使用は、次の２点の利点を提供する。第１に、ループ構成マスク６１のセマンティクスから、特定のスイッチアーキテクチャを切り離す。このことは、例えば、以前のヴァージョンとのバイナリコードの互換性を保ちながら、スイッチのアップグレードを可能にする。第２に、構成マスクレジスタ６３のビット数は、概してスイッチ制御信号７２を作り上げているビットより、はるかに少ないため、ループ構成６１に必要なメモリ容量における縮小を可能にする。それにもかかわらず、システムは、ループ構成マスク６３とマスク解釈ロジック７１を設けずに配置することができる。その場合、ループ構成６１のビットは、スイッチ制御信号７２を直接形成する。
【００３２】
これまでに述べたように、第１の好ましい実施形態では、構成マスクのゼロと１のパターンは、制御ワードのどのビット位置がループ不変で、どのビット位置がそうでないかを符号化する。実際、マスク解釈ロジック７１はスイッチアーキテクチャからループ構成マスクのセマンティクスから切り離す。構成マスクの情報を符号化するほかのいくつかの形式も使用でき、情報を格納するのに必要なビット幅を縮小することになる。
【００３３】
プログラム可能クロスポイントスイッチ７３は、すべてに接続できるが、その必要はない。例えば、標準部分１１の第１のビットは、制御レジスタ５０のどのビット位置にでも送ることができるが、標準部分１１の第２のビット位置は、制御レジスタ５０の第１のビット位置に送れる必要がない。さらに、標準部分１１の第３のビット位置は、制御レジスタ５０の第１と第２のビット位置に送れる必要がない。同様の推論が、より上位のビットに適用可能である。この推論を適用することにより、接続のいくつかは、使われることはなくなるので、物理的にクロスポイントスイッチ７３から取り除くことができる。
【００３４】
図６は、プログラム可能クロスポイントスイッチ７３の実施形態の簡単な場合の例を示する。マイクロコード記憶装置５１から得られる命令の標準部分１１が２つのビットのみを含み、一方、制御されたプログラムデータパスは制御レジスタ５０において４つのビットが必要である場合である。従って、マイクロコード記憶装置５１から得られる命令は、２つのビットを備え、制御レジスタ５０は４つのビットを備える。すると、クロスポイントスイッチ７３の接続パスは、スイッチ制御信号７２に基づくマルチプレクサおよびトライステートバッファを介して制御される。この場合、命令の左のビット、すなわち標準部分１１は、右端のビット位置を除いて、制御レジスタ５０のすべてのビット位置に、切り替えられる。一方、命令の右のビットは、左端のビット位置を除いて、制御レジスタのすべてのビット位置に切り替えることができる。
【００３５】
図７は、第２の実施形態による復号するアーキテクチャの概略図を示し、制御ワード１０の固定部分１２が再構成可能レジスタファイル３１を制御するように使用される。再構成可能なハードウェア資源の特殊な性質により、より高い柔軟性が可能であり、さらにコスト効果を改善するために利用できる。第２の好ましい実施形態において使用できる再構成可能なハードウェア装置の例は、組み込み型ＦＰＧＡである。
【００３６】
レジスタファイル３１が再構成可能なロジックに実現される場合、すべての資源は、空間的にマップされる。資源への制御は、構成メモリビットを通して達成される。構成メモリ３２は、新しい型のデータフローグラフが実行される時、新しい構成コンテキストと共にロードされる。内部構成コントローラ３３は、制御ワード１０の固定部分１２に基づいた正しい構成コンテキストを選択する処理をする。制御ワード１０の固定部分１２は、いくつかのサイクルに対して変化しないため、構成メモリコンテキストのリロードに関連する潜在的な再構成の時間の不利益は、重要ではない。
【００３７】
再構成可能レジスタ３１が、標準の制御ワードを用いるように配置される場合、構成コンテキストはレジスタファイルに適合される。
【００３８】
再構成可能レジスタファイル３１は、さらに、構成メモリ３２におけるビット状態に基づいて制御される構成可能なロジックアレイ３４を備える。これにより、構成可能インターフェイス３５が、所望の入力と出力、および／又は制御ワードを供給するように構成できる。これにより、機能ユニットへの接続がプログラム可能になるだけでなく、例えば、レジスタファイル２１の深さへの接続も可能になる。さらに、再構成可能なロジックにおける、ＦＩＦＯ（First-in-first-out）やスタックなど特殊化されたレジスタファイルアーキテクチャの実現が可能になる。ＦＩＦＯやスタックなどの構造に必要とされる単純化されたアドレス方式により、レジスタファイルをアドレス指定するのに必要な制御ワードの標準部分１１の大きさを、かなり縮小することができる。
【００３９】
図８ａは、第２の好ましい実施形態によるプロセッサアーキテクチャを示し、プロセッサデータパス４１と、再構成可能なハードウェアとしてのＦＰＧＡブロック３１とを備えるデータパスを制御するためのプロセッサコントローラ４０を伴う。ＦＰＧＡブロック３１は、アプリケーション特定装置ＡＳＵと関連レジスタファイルＲＦとからなる回路を実現するように配置される。アプリケーション特定装置ＡＳＵは、柔軟に組み立てられているため、アプリケーションの異なるループ内で使用されることが可能である。
【００４０】
図８ａに示される本ケースでは、アプリケーション特定装置ＡＳＵおよびレジスタファイルＲＦは、アプリケーションのクリティカルループを加速するように配置され、そのアーキテクチャは柔軟性があるため、ＦＰＧＡブロック３１がすべてのクリティカルループで使用できる。なお、種々のループは、アプリケーション特定装置ＡＳＵに種々の動作を実行することを要求する。または関連レジスタファイルＲＦにおいて、種々のレジスタをアドレス指定することを要求する。この柔軟性を考慮にいれると、関連レジスタファイルＲＦおよびアプリケーション特定装置ＡＳＵのポートは、プロセッサデータパス４１で発行された命令および制御信号のビットによって制御される。図８ａでは、１２の制御ビットが、読み込みアドレスを関連レジスタファイルＲＦに供給するために、関連レジスタファイルにアドレスを書き込むために、および、アプリケーション特定装置ＡＳＵのオプコードのために、それぞれ必要とされる。
【００４１】
しかしながら、これらの制御パラメータの多くは、特定のループ内で変化しない。従って、その特定のループまたは他の命令シーケンスに対して、ＦＰＧＡブロック３１にマップされた回路を制御するために、命令ワードにおいて１２の制御ビットを供給する必要はない。従って、命令ワード幅は縮小し、命令メモリを節約する。
【００４２】
図８ｂは、ループの制御ワードのループ不変部分が巻き上げられた場合のＦＰＧＡブロック３１の構成を示す。特に、特定のループ内で、アプリケーション特定装置ＡＳＵと関連レジスタファイルＲＦの間の６つの接続は、決して変化しないため、６つのレジスタが明示的にアドレスされる必要がない。このことは、３から１ビットに読み込みアドレスの幅を縮小する。また、アプリケーション特定装置ＡＳＵの動作の部分集合のみが、特定のループ内で必要とされるため、それぞれのオプコードの所定のビットがループ内で重複し、またＦＰＧＡ構成そのものにおいて配線できる。その結果、全体として、７つのビットのみが（３つのホワイトアドレスビット、１つの読み込みアドレスビット、および３つのオプコードビット）、命令ワードにおいて特定のループ内でＦＰＧＡブロック３１を制御するために必要である。
【００４３】
ＦＰＧＡブロック３１が柔軟性があるという事実により、ＦＰＧＡブロックにマップされる変化するハードウェア構成は、制御ビットの縮小した数を正確に解釈するように再構成することができる。図８ｂでは、例えば、関連レジスタファイルＲＦのレジスタとアプリケーション特定装置ＡＳＵの間の二地点間接続（６つの対応する矢印で示される）が行われ、関連レジスタファイルＲＦのアドレスデコーダマルチプレクサの大きさが縮小され、そしてアプリケーション特定装置ＡＳＵの内部構成は、より小さい３ビットのオプコードを正しく解釈するために変えられる。場合によっては、与えられたループ内では実行されない動作に対応するソフト回路の部分を廃棄することにより、アプリケーション特定装置ＡＳＵそのものを小さく作ることが可能である。
【００４４】
従って、一般的な方策は、ＦＰＧＡブロック３１を制御するために使用可能な命令ワードにおけるビットの数を制限し、故に、命令メモリを節約する。縮小であるにもかかわらず、ＦＰＧＡブロック３１はなお、アプリケーションにおいていくつかの異なるクリティカルループに、巻き上げの概念を使用することにより使用することができる。
【００４５】
別の一般的な方策は、アプリケーションにおいて、どのクリティカルループが最も大きいループ不変部分を持つか、また巻き上げから一番利益を得るかを調べる。すると、これらのループは、ＦＰＧＡブロック３１のような再構成可能なハードウェア装置にマッピングするために選ばれ、ハード配線された装置およびプロセッサデータパス４１の残りのレジスタファイルにマップされる代わりに、巻き上げを活用する。
【００４６】
なお、本発明は前述した好ましい実施形態に限定されることなく、少なくとも２つのデータ処理プログラムの命令のシーケンスをデータパスを制御するのに使用されるコードワードのシーケンスに復号する、プロセッサ環境に使用することができる。特に、提案された巻き上げの概念は、変化する部分と変化しない部分を持つコードワードシーケンスに復号される他の命令シーケンスにも使用できる。従って、好ましい実施形態は、添付された請求項の範囲内で変化することができる。
【図面の簡単な説明】
【００４７】
次に、本発明は、好ましい実施形態に基づいて図面を参照して詳細に説明される。
【図１】図１は、第１の好ましい実施形態による、２つの復号の選択を表す概略図を示す。
【図２】図２は、レジスタファイルのマルチプレクサベースの選択の例を示す。
【図３】図３は、第１の好ましい実施形態による制御ワードの標準部分からの構成部分の単純なカットでの分離を表す原理図である。
【図４】図４は、第１の好ましい実施形態によるコードワードの構成部分と標準部分を結合するための構成マスクおよび制御ワードローダの使用を表す原理図を示す。
【図５】図５は、第１の好ましい実施形態に使用できる制御ワードローダのアーキテクチャを表す概略図を示す。
【図６】図６は、図５による制御ワードローダのアーキテクチャに使用できるプログラム可能クロスポイントスイッチの例を示す。
【図７】図７は、第２の好ましい実施形態による、固定制御ワードに基づく再構成可能レジスタファイルを制御するアプローチを表す概略図を示す。
【図８ａ】図８ａは、第２の好ましい実施形態において使用可能な再構成可能ロジック装置の概略図を示す。
【図８ｂ】図８ｂは、第２の好ましい実施形態において使用可能な再構成可能ロジック装置の概略図を示す。
【図１】
2005526322.tif 000003
【図２】
2005526322.tif 000004
【図３】
2005526322.tif 000005
【図４】
2005526322.tif 000006
【図５】
2005526322.tif 000007
【図６】
2005526322.tif 000008
【図７】
2005526322.tif 000009
2005526322.tif 000010
2005526322.tif 000011
【国際調査報告】
2005526322.tif 000012
2005526322.tif 000013
2005526322.tif 000014