(57)【要約】  データ処理方法であって、複数の命令を並列に実行するよう構成された、時間定常多重命令ワード処理装置を用い、各多重命令ワードは複数の命令フィールドを有し、各命令フィールドは前記処理装置の対応するリソースの制御情報を符号化し、そしてノーオペレーション命令に関連する命令フィールド及び隣接する多重命令ワードの関連する命令フィールドの間のビット変化は最小限に抑えられる、前記多重命令ワード（ＩＮＳ（ｉ）、ＩＮＳ（ｉ＋１）、ＩＮＳ（ｉ＋２））のセットを生成する段階；入力データをレジスタファイル（ＲＦ０、ＲＦ１）に格納する段階；多重命令ワードセットから引き出された制御情報に基づき、前記レジスタファイルから読み出したデータを処理する段階；第１の専用ノーオペレーションコード（ｗｓ００、ｗｓ１０、ｗｐ００、ｗｐ１０）を用い、ノーオペレーションコードの実行中に、前記レジスタファイルへの結果データの書き戻しを無効にする段階、を有する。
2007537528.tif 000002
【特許請求の範囲】
【請求項１】
データ処理方法であって、複数の命令を並列に実行するよう構成された、時間定常多重命令ワードを処理する装置を用い、前記方法は：
各多重命令ワードは複数の命令フィールドを有し、各命令フィールドは前記処理装置の対応するリソースの制御情報を符号化し、そしてノーオペレーション命令に関連する命令フィールド及び隣接する多重命令ワードの関連する命令フィールドの間のビット変化は最小限に抑えられる、前記多重命令ワードセットを生成する段階；
入力データをレジスタファイルに格納する段階；
前記多重命令ワードセットから引き出された制御情報に基づき、前記レジスタファイルから読み出したデータを処理する段階；
第１の専用ノーオペレーションコードを用い、ノーオペレーション命令の実行中に、前記レジスタファイルへの結果データの書き戻しを無効にする段階、
を有する、データ処理方法。
【請求項２】
前記方法は：
オペコードを符号化するために第２の専用ノーオペレーションコードを用い、ノーオペレーション命令の実行中に前記処理装置の状態の変化を更に防ぐ段階、
を更に有する、請求項１記載のデータ処理方法。
【請求項３】
前記隣接する多重命令ワードは、前記多重命令ワードに隣接し、コンピュータープログラムのコンパイル後に引き出された多重命令ワードセット内で、前記ノーオペレーション命令に関連する命令フィールドを有することを特徴とする、請求項１記載のデータ処理方法。
【請求項４】
前記隣接する多重命令ワードは、多重命令ワードに隣接する可能性が最も高く、前記多重命令ワードセットの実行中に、プロファイル情報から引き出された、前記ノーオペレーション命令に関連する命令フィールドを有することを特徴とする、請求項１記載のデータ処理方法。
【請求項５】
処理装置であって、請求項１記載のデータ処理方法を実行するよう構成され：
前記複数の命令を並列に実行するよう構成された複数の発行スロット；
前記複数の発行スロットによりアクセス可能なレジスタファイル；
前記複数の発行スロット及び前記レジスタファイルを結合する通信ネットワーク；
前記多重命令ワードセットから引き出された制御情報に基づき、前記処理装置を制御するよう構成された制御部、
を有する、処理装置。
【請求項６】
前記レジスタファイルは、分散レジスタファイルであることを特徴とする、請求項５記載の処理装置。
【請求項７】
前記通信ネットワークは、部分接続通信ネットワークであることを特徴とする、請求項５記載の処理装置。
【請求項８】
前記処理装置は、時間定常超長命令語プロセッサーであることを特徴とする、請求項５記載の処理装置。
【請求項９】
方法であって、２進プログラムコード形式の多重命令ワードセットを、対応するアセンブリ言語形式の多重命令ワードセットから生成し、各多重命令ワードは、複数の命令フィールドを有し、並びに多重命令ワードの前記セットは、複数の発行スロット、及び前記複数の発行スロットと結合されたレジスタファイルを有する時間定常処理装置により実行され、前記方法は：
多重命令ワードの前記セットを通じて順序付ける段階、
同一の命令フィールドに対し、命令からノーオペレーション命令への変化があるか否かを決定する段階、
ノーオペレーション命令と関連した命令フィールド及び隣接する多重命令ワードの対応する命令フィールドの間のビット変化を最小限に抑える段階、
ノーオペレーション命令を実行している間、結果データの前記レジスタファイルへの書き戻しを無効にするために、第１の専用ＮＯＰコードを前記ノーオペレーション命令の２進プログラムコードに挿入する段階、
を有する、多重命令ワードセット生成方法。
【請求項１０】
コンパイラプログラムであって、請求項９記載の方法を用い、一連の命令を２進プログラムコード形式で生成する要構成された、コンパイラプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時間定常多重命令ワードを処理する装置を用いたデータ処理方法、及び前記データ処理方法を実行する、時間定常多重命令ワード処理装置に関連する。本発明は更に、多重命令ワードセットを２進プログラムコードで生成する方法、及び前記多重命令ワードセット生成方法を用いるコンパイラプログラムに関する。
【背景技術】
【０００２】
プログラム可能なプロセッサーは、汎用プロセッサー又は特定用途向け命令セットプロセッサーであり得る。それらは、音声、画像及びビデオを含む異なる種類の情報を操作するために利用され得る。特定用途向け命令セットプロセッサーの場合、プロセッサーアーキテクチャ及び命令セットは、カスタマイズされ、システムのコスト及び電力損失を有意に低減する。プロセッサーアーキテクチャは、通常、制御ワードのセットにより制御される固定データパスを有する。各制御ワードは、データパスの部分を制御する。そしてこれらの部分は、レジスタアドレス及び論理演算ユニット（ＡＬＵ）又は他の機能ユニットのためのオペレーションコードを有する。命令の各セットは、通常、２進形式の命令を対応する制御ワードに翻訳する命令復号器を用い、又はマイクロストア、つまり制御ワードを直接収容するメモリーを用い、制御ワードの新しいセットを生成する。標準的に、制御ワードは、ＲＩＳＣのように動作し、オペレーションコード、２つのオペランドレジスタインデックス及び結果レジスタインデックスを有する。オペランドレジスタインデックス及び結果レジスタインデックスは、レジスタファイル内のレジスタを参照する。
【０００３】
超長命令語（ＶＬＩＷ）プロセッサーの場合、多重命令は、１つの長い命令、所謂ＶＬＩＷ命令にまとめられる。ＶＬＩＷプロセッサーは、複数の独立した機能ユニットを用い、３個の多重命令を並列に実行する。プロセッサーは、プログラム内の命令レベルの並行処理を有効に使い、そして従って、同時に複数の命令を実行させる。この形式の同時処理により、プロセッサーの性能は増大する。ソフトウェアプログラムをＶＬＩＷプロセッサーで実行するために、ソフトウェアプログラムは、ＶＬＩＷ命令セットに翻訳されなければならない。コンパイラは、並列処理を最適化することにより、プログラムの実行に必要な時間を最小限に抑えようとする。コンパイラは、単一のＶＬＩＷ命令に割り当てられた命令は並列に実行できるという制約の下で及びデータ依存制約の下で、命令をＶＬＩＷ命令に結合する。如何なる重要な処理も１つ以上の機能ユニットの特定のクロック周期内で行われない場合、所謂ノーオペレーション（ＮＯＰ）命令は、当該特定の機能ユニットのＶＬＩＷ命令に符号化される。コードサイズを減少するため、及び従って、必要なメモリーサイズ観点から、必要なメモリー帯域の観点からコストを低減するため、データ定常ＶＬＩＷプロセッサー内でノーオペレーション（ＮＯＰ）命令の小型表現が、利用されて良い。例えば、ＮＯＰオペレーションは、ＶＬＩＷ命令の前に付加された特別なヘッダー内の単一ビットにより符号化され、結果として圧縮されたＶＬＩＷ命令を生じる。
【０００４】
プロセッサーのデータパイプライン内のオペレーションを制御するため、２つの異なる機構が、コンピューターアーキテクチャで共通に用いられる。つまり、データ定常及び時間定常符号化であり、非特許文献１に記載されている。データ定常符号化の場合、プロセッサーの命令セットの一部である各命令は、データパイプラインをトラバースするので、特定のデータアイテムに対し実行されるべきオペレーションの完全なシーケンスを制御する。命令がプログラムメモリーからフェッチされ復号されると、プロセッサー制御ハードウェアは、確実に構成オペレーションを正しいマシンサイクルで実行させる。時間定常符号化の場合、プロセッサーの命令セットの一部である各命令は、単一のマシンサイクルで実行されるべきオペレーションの完全なセットを制御する。これらのオペレーションは、データパイプラインをトラバースする、複数の異なるデータアイテムに適用されて良い。この場合、データパイプラインを設定し維持することは、プログラマー又はコンパイラの役割である。結果として生じるパイプラインスケジュールは、機械コードプログラムで完全に明らかである。時間定常符号化は、大きいコードサイズを犠牲にして、命令内に存在する制御情報を遅延させるために必要なハードウェアのオーバーヘッドを節約するので、しばしば特定用途向けプロセッサーで利用される。
【０００５】
ＶＬＩＷプロセッサーのようなプログラム可能なプロセッサーは、ＮＯＰ命令の実行中に、依然として不必要に電力を消費し得る。ＮＯＰ命令に関連するこの問題は、並列プロセッサーが少ない並列コード、例えば制御基本コードを実行する必要がある場合、特に並列プロセッサーにおいて現れる。特に、高度な並列ＶＬＩＷプロセッサーの場合、これは結果としてコード内に多数のＮＯＰ命令を生じ、そして従ってＮＯＰ命令の実行中に不要な電力消費を生じる。従来、ＯＰ命令は、処理装置により認識される専用の値を用いて符号化され、処理装置の状態に変化を生じない。しかしながら、ＮＯＰ命令の既定コードが、明らかに有用な命令の既定コードと異ならなければならないので、この方法でＮＯＰ命令を符号化することは、結果として、有用な命令の後又は前に、信号遷移及び従ってＮＯＰ命令の実行中の不要な電力消費を生じる。ＮＯＰ命令の実行中に電力消費を低減するため、利用されないプロセッサーのデータパスの一部を止める、クロックゲーティングと称される技術が利用されて良い。クロックゲーティングの利用は、未利用のシーケンシャルロジックにより消費される電力の量を低減するだけでなく、クロックゲートにより無効にされた（パイプライン）レジスタが、未利用の組合せ論理を通じたリップルからの信号遷移を防ぎ、及び従って更に不要な電力消費を防ぐ。しかしながら、後者は、現在の（パイプライン）レジスタの量及びこれらレジスタの正確な位置により大いに決定される。低電力プロセッサーは、理想的には、深くないパイプラインを有し、更に電力を消費するハードウェアが必要とされるのを防ぎ、長いブランチ待ち時間のようなパイプラインの逆効果を解決する。後者は、特に、計算効率が極めて重大なプロセッサーがしばしば高度に並列なので、つまり多くの発行スロットを有するので、ホールドする。また、深いパイプラインの生成は、有意なハードウェアオーバーヘッドを各発行スロットに付加する。ハードウェアの量を最小限に抑えるという理由で、これら高度な並列プロセッサーは、しばしば、時間定常命令符号化を用い、ボトルネックをフェッチし復号する主要命令に直面することなく、多数のハードウェアリソースを単一の高度な並列命令から操作可能である。
【０００６】
特許文献１は、所謂プロキシーＮＯＰ命令の利用に基づく、ＶＬＩＷプロセッサーの電力低減技術を記載している。ＮＯＰ命令により生じた信号遷移の数は、ＮＯＰ命令をＶＬＩＷプロセッサーの同一発行スロットの隣接する非ＮＯＰ命令で置き換えることにより、及び同時に置換した命令の保護を偽にすることにより、低減される。従って、復号回路は、如何なる実行／イネーブル信号も個々の機能ユニットへ送信しない。偽の保護を有するこれら置換した命令は、プロキシーＮＯＰ命令と命名される。記載された技術は、データ定常命令符号化が利用されるという事実に基づく。この技術では、命令に関連する全ての情報は、単一のプロセッサー周期で発行された単一のＶＬＩＷ命令の単一の極小部分に符号化される。更に、この技術は、ＶＬＩＷプロセッサー内の各発行スロットが保護を支援すると想定している。更に、この技術は、ＶＬＩＷプロセッサー内の如何なる発行スロットにより支援される各オペレーションも保護され得る、つまり条件付きであると想定する。しかしながら、この技術は、時間定常ＶＬＩＷプロセッサーに適さない。
【０００７】
第一に、単一命令に関連する時間定常符号化情報は、標準的に、異なる周期で発行された複数のＶＬＩＷ命令に亘り広がっている。これは、単一命令に対応するＮＯＰ命令に関する情報が、複数のＶＬＩＷ命令に亘り広がっていることを意味する。第二に、時間定常プロセッサーの命令は、しばしば、オペレーションを極小単位として符号化しない。代わりに、制御情報は、符号化され、機能ユニット、レジスタファイル、バスマルチプレクサ等のような、プロセッサーリソースを直接操作する。実際のリソース操作からの「抜粋」命令情報のこの分離は、単一命令の結果が単一プロセッサー周期で任意的に複数のレジスタファイルに書き込まれ得るマルチキャストのような技術を可能にする。例えば、データ定常符号化では、書き戻し情報、つまり結果データをレジスタファイルへ書き戻す制御情報は、通常、別個の命令フィールドにオペレーションの結果毎に符号化される。各フィールドは、この場合、対応する結果が書き込まれるべきレジスタを指定する宛先レジスタアドレス（レジスタファイル、レジスタインデックス）を有する。同一の結果が複数のレジスタファイルに書き込まれる場合、オペレーション結果毎に複数のフィールドに符号化されるべき複数の宛先レジスタアドレスが必要とされる。これは、特に同一結果を受信すべき宛先の数が変化し得る場合、符号化が効率的でないので、通常、データ定常命令形式ではサポートされない。代案として、別個の命令がプログラムに追加され、結果を他のレジスタファイルに明示的に複製する必要がある。時間定常符号化は、別個のフィールドの利用を可能にし、オペレーション結果毎ではなく、レジスタファイルライトポート毎に書き戻し情報を符号化する。従って、オペレーション結果毎にどのレジスタファイルに結果が書き込まれるべきかを指定するのではなく、レジスタファイルライトポート毎にどのオペレーション結果が選択されレジスタファイルに書き込まれるべきかを指定し得る。この概念により、同一結果は、必要な命令フィールド数に影響を与えずに、任意の数のレジスタファイルに、単一周期で書き込まれ得る。この分離の結果として、時間定常命令内の同一フィールドは、異なるクロック周期で異なる発行スロットで実行されるオペレーションに対応する情報を伝達し得る。周期ｉ＋２（ｉ＝０，１，２．．．）で発行された命令内の所与のレジスタファイルライトポートフィールドは、第１の発行スロットにより生成された結果を、２つ前のサイクルｉで発行された命令の結果として選択して良い。また、周期ｉ＋３で発行された次の命令では、前記レジスタファイルライトポートフィールドは、第２の発行スロットにより生成された結果を１周期前に周期ｉ＋２で発行された命令の結果として選択して良い。
【０００８】
従って、ＶＬＩＷプロセッサーによる従来の電力消費低減方法の不利点は、この方法が時間定常プロセッサーに利用できないことである。
【特許文献１】米国特許第６５３５９８４号明細書
【特許文献２】欧州特許出願公開第０３１０１０３８.２号明細書
【非特許文献１】ジー・グーセンス他（Ｇ．  Ｇｏｏｓｓｅｎｓ，  Ｊ．  ｖａｎ  Ｐｒａｅｔ，  Ｄ．  Ｌａｎｎｅｅｒ，  Ｗ．  Ｇｅｕｒｔｓ，  Ａ．  Ｋｉｆｌｉ，  Ｃ．  Ｌｉｅｍ  ａｎｄ  Ｐ．  Ｐａｕｌｉｎ）、エンベディッド・ソフトウェア・イン・リアルタイム・シグナル・プロセッシング・システム：デザイン・テクノロジーズ（Ｅｍｂｅｄｄｅｄ  ｓｏｆｔｗａｒｅ  ｉｎ  ｒｅａｌ−ｔｉｍｅ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｓｙｓｔｅｍｓ：  ｄｅｓｉｇｎ  ｔｅｃｈｎｏｌｏｇｉｅｓ）、アイ・イー・イー・イー会報（Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ＩＥＥＥ）、アイ・イー・イー・イー（ＩＥＥＥ）、１９９７年、ｖｏｌ．８５、Ｎｏ．３
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、命令の効率的な符号化及び復号化を維持しつつＮＯＰ命令の実行中に電力消費を低減する、時間定常多重命令ワードプロセッサーを用いたデータ処理方法を提供することである。
【課題を解決するための手段】
【００１０】
この目的は、複数の命令を並列に実行するよう構成された時間定常多重命令ワード処理装置を用いる、データ処理方法により達成される。前記方法は、各多重命令ワードは複数の命令フィールドを有し、各命令フィールドは前記処理装置の対応するリソースの制御情報を符号化し、そしてノーオペレーション命令に関連する命令フィールド及び隣接する多重命令ワードの関連する命令フィールドの間のビット変化は最小限に抑えられ、前記多重命令ワードセットを生成する段階；入力データをレジスタファイルに格納する段階；多重命令ワードセットから引き出された制御情報に基づき、前記レジスタファイルから読み出したデータを処理する段階；第１の専用ノーオペレーションコードを用い、ノーオペレーション命令の実行中に、前記レジスタファイルへの結果データの書き戻しを無効にする段階、を有する。命令フィールドは、ＮＯＰ命令に関連する制御情報が符号化される場合、これらＮＯＰ命令フィールドを符号化するために利用された値が、隣接する多重命令ワードの対応するフィールドから可能な限り多く繰り返される方法で、符号化される。結果として、処理装置内の対応する組み合わせ論理は、前の及び後の周期と同一の値を伝達する。従ってデータ遷移のリップル、及び従って、不要な電力消費は低減する。ＮＯＰ命令の実行中にレジスタファイルに結果データが書き戻されるのを回避するため、専用のＮＯＰコードが利用され、結果データの書き戻しを無効にする。従って、ＮＯＰ命令の実行中に、プロセッサーの状態は変化せず、電力消費は低減される。ＮＯＰ命令の符号化中に、いくつかの命令フィールドでは、別の符号化命令からの値が繰り返される。一方、他の命令フィールドでは、符号化効率を表示する専用の値が利用される。ＮＯＰ命令の復号化は、他の命令に関する方法と同一の方法で実行される。
【００１１】
本発明によるデータ処理方法の実施例は、オペコードを符号化するために第２の専用ノーオペレーションコードを用い、ノーオペレーションコードの実行中に処理装置の状態の変化を防ぐ段階を更に有する、ことを特徴とする。いくつかの発行スロットでは、隣接する多重命令ワードの対応するフィールドのオペコードを繰り返すことにより、ＮＯＰオペコード命令フィールドを符号化する場合、ＮＯＰ命令の実行中に、処理装置の状態に変化を生じる。このようなオペコードの符号化に専用ＮＯＰコードを用いることにより、この状態変化は防止される。
【００１２】
本発明によるデータ処理方法の実施例は、隣接する多重命令ワードが、多重命令ワードに隣接し、コンピュータープログラムのコンパイル後に引き出された多重命令ワードセット内で、ノーオペレーション命令に関連する命令フィールドを有することを特徴とする。隣接する多重命令ワードからの対応するフィールドの値を繰り返すことは、比較的容易であり、翻訳されている現在の命令の前及び後の命令を把握する必要があるだけである。直線的コード、つまりジャンプを有さないＮＯＰ命令の実行中の電力消費は、低減される。
【００１３】
本発明によるデータ処理方法の実施例は、隣接する多重命令ワードが、多重命令ワードに隣接する可能性が最も高く、多重命令ワードセットの実行中に、プロファイル情報から引き出されたノーオペレーション命令に関連する命令フィールドを有することを特徴とする。プログラムの実行から得たプロファイル情報を用いることにより、所与のプログラム内で最も高頻度で取られるパスは、解析され、そして実行中にどの命令が所与の命令の前又は後に最も続き易いかを決定し得る。符号化中に所与の多重命令ワードの前又は後の多重命令ワードの命令フィールドを符号化するための値を繰り返すことは、それらフィールドに関連する制御情報が結果として処理装置の状態変化を生じない場合、ＮＯＰ命令の実行中の電力消費を更に低減する。
【００１４】
本発明によると、請求項１によるデータ処理方法を実行するよう構成された処理装置は、複数の命令を並列実行するために構成された複数の発行スロット、前記複数の発行スロットによりアクセス可能なレジスタファイル、前記複数の発行スロット及び前記レジスタファイルを結合する通信ネットワーク、前記多重命令ワードセットから引き出された制御情報に基づき、前記処理装置を制御するよう構成された制御部、を有する。結果として、処理装置内の対応する組み合わせ論理は、前及び後の周期と同一の値を伝達する。従ってデータ遷移のリップル、及び従って、不要な電力消費は低減する。従って、ＮＯＰ命令の実行中に、プロセッサーの状態は変化せず、電力消費は低減される。
【００１５】
処理装置の実施例は、レジスタファイルが分散レジスタファイルであることを特徴とする。分散レジスタファイルの利点は、分散レジスタファイルがレジスタファイルセグメント毎に少ないリード及びライトポートしか必要せず、結果としてシリコン面積の観点から小さいレジスタファイルになることである。更に、分散レジスタファイル内のレジスタのアドレス指定は、集中レジスタファイルと比べた場合、少ないビットしか必要としない。
【００１６】
処理装置の実施例は、通信ネットワークが部分接続通信ネットワークであることを特徴とする。部分接続通信ネットワークは、しばしばスピードが重視されず、及びコードサイズ、面積及び電力消費の観点から、完全接続通信ネットワークと比べた場合、特に実行ユニットが多数の場合、高価でない。
【００１７】
処理装置の実施例は、処理装置が時間定常超長命令語プロセッサーであることを特徴とする。時間定常超長命令語プロセッサーは、多重命令を並列に実行可能にし、比較的単純なハードウェアを有しつつ、全体の動作速度を増大する。これらプロセッサーは、通常、深くないパイプラインを有するにも拘わらず、組み合わせ論理を通じた信号遷移のリップル、及び従って電力消費は、ＮＯＰ命令の実行中に低減される。
【００１８】
本発明によると、多重命令ワードセットを２進プログラムコード形式で生成する方法は、請求項９で請求される。前記方法は、ＮＯＰ命令を有する多重命令ワードセットの実行中に電力消費を低減可能にする命令セットを生成し、同時に所与の処理装置の命令復号器に如何なるハードウェアの変更も必要としない。
【００１９】
本発明による命令セットを生成する方法を用い、一連の命令を２進プログラムコード形式で生成するよう構成されたコンパイラプログラムは、請求項１０で請求される。
【発明を実施するための最良の形態】
【００２０】
図１及び図３は、２つの発行スロットＩＳ０及びＩＳ１、並びに２つのレジスタファイルＲＦ０及びＲＦ１を有するＶＬＩＷプロセッサーを説明するブロック図である。発行スロットＩＳ０及びＩＳ１は、接続ネットワークＣＮを介してレジスタファイルＲＦ０及びＲＦ１と結合される。レジスタファイルＲＦ０及びＲＦ１は両方とも、それぞれ８個のレジスタを有する。発行スロットＩＳ０は、２つの機能ユニット、論理演算ユニット（ＡＬＵ）及び乗算ユニット（ＭＰＵ）を有する。２つの機能ユニットＡＬＵ及びＭＰＵは、接続ｒｐ００及びｒｐ０１を介して、レジスタファイルＲＦ０と結合される。機能ユニットＡＬＵは、内部にパイプラインステージを有さず、７個の異なるオペレーション、つまり加算、減算、論理ＡＮＤ、論理ＯＲ、論理ＸＯＲ、論理左シフト、及び論理右シフトを実行し得る。これらオペレーションは、それぞれオペレーションコード、つまりｏｐｃｏｄｅ０乃至６により制御される。機能ユニットＭＰＵは、内部に１つのパイプラインステージを有し、４個の異なるオペレーション、つまり下位結果の符号付き乗算、上位結果の符号付き乗算、下位結果の符号なし乗算、上位結果の符号なし乗算を実行し得る。これらオペレーションは、それぞれｏｐｃｏｄｅ７乃至１０により制御される。２つのレジスタファイルＲＦ０及びＲＦ１は、１周期の待ち時間を有する。そして結果として機能ユニットＡＬＵにより実行されるオペレーションの総待ち時間は１周期であり、及び機能ユニットＭＰＵにより実行されるオペレーションの総待ち時間は２周期である。発行スロットＩＳ１は、ロード／ストアユニットＬＳＵである１つの機能ユニットを有する。ロードストアユニットＬＳＵは、図３の場合に限って接続ｒｐ１０、及びｒｐ１１及びｒｐ１２を介してレジスタファイルＲＦ１と結合され、またメモリーマップド装置ＭＭＩＯと結合される。機能ユニットＡＬＵ及びＭＰＵは、それらの結果データを接続ｒｄ０及びマルチプレクサＭＰ０及びＭＰ１を介してそれぞれレジスタファイルＲＦ０及びＲＦ１へ渡す。機能ユニットＬＳＵは、その結果データを接続ｒｄ１及びマルチプレクサＭＰ０及びＭＰ１を介してそれぞれレジスタファイルＲＦ０及びＲＦ１へ渡す。動作中、シーケンサーＳＥＱは、ＶＬＩＷ命令ワードをプログラムメモリーＰＭから読み出し、そしてこれら命令ワードを復号する。一般に、これら命令は、ＲＩＳＣ同様のオペレーションを有し、２つのオペランドを必要とし、及び１つの結果と共に、２つより多いオペランドを消費し複数の結果を生成し得るカスタムオペレーションを生成する。いくつかの命令は、オペランドデータと同じくらい即時値を必要とし得る。復号化段階の結果は、ライト選択インデックスｗｓ００及びｗｓ１０、ライトレジスタインデックスｗｐ００及びｗｐ１０、リードレジスタインデックスｒｐ００、ｒｐ０１、ｒｐ１０（図３）、ｒｐ１１及びｒｐ１２、並びにオペコードｏｐｃｏｄｅ０及びｏｐｃｏｄｅ１である。場合によっては、即時値は、命令からも同様に読み出されるが、これらは提案された解決法に影響を与えず、所与の例に含まれない。シーケンサーＳＥＱ及びマルチプレクサＭＰ０及びＭＰ１の間の結合を介して、ライト選択インデックスｗｓ００及びｗｓ１０は、それぞれマルチプレクサＭＰ０及びＭＰ１へ提供される。ライト選択インデックスｗｓ００及びｗｓ１０は、対応するマルチプレクサにより利用され、レジスタファイルＲＦ０及び／又はＲＦ１へ書き込まれるべき結果データｒｄ０及びｒｄ１の所望の入力チャネルを選択する。シーケンサーＳＥＱは、レジスタファイルＲＦ０及びＲＦ１と結合され、データが書き込まれるべき対応するレジスタファイルからレジスタを選択するため、それぞれライトレジスタインデックスｗｐ００及びｗｐ１０を提供する。シーケンサーＳＥＱはまた、機能ユニットの入力データが読み出されるべき対応するレジスタファイルからレジスタを選択するため、リードレジスタインデックスｒｐ００及びｒｐ０１をレジスタファイルＲＦ０へ接続ｒｐ０を介して、並びにリードレジスタインデックスｒｐ１０、ｒｐ１１及びｒｐ１２をレジスタファイルＲＦ１へ接続ｒｐ１を介して提供する。シーケンサーＳＥＱは、発行スロットＩＳ０のオペレーション復号器ＯＰＤＥＣ０と結合され、オペコードｏｐｃｏｄｅ０を提供する。またシーケンサーＳＥＱは、発行スロットＩＳ１からのオペレーション復号器ＯＰＤＥＣ１と結合され、オペコードｏｐｃｏｄｅ１を提供する。オペレーション復号器ＯＰＤＥＣ０及びＯＰＤＥＣ１は、それらそれぞれのオペコードを復号する。オペレーション復号器ＯＰＤＥＣ０は、ユニット選択信号ｓｅｌ００及びｓｅｌ０１をそれぞれ機能ユニットＡＬＵ及び機能ユニットＭＰＵへ提供する。オペレーション復号器ＯＰＤＥＣ０はまた、オペレーション意味ｏｐｓｅｍ００及びｏｐｓｅｍ０１をそれぞれ機能ユニットＡＬＵ及び機能ユニットＭＰＵへ提供する。ユニット選択信号ｓｅｌ００及びｓｅｌ０１は、機能ユニットがオペレーションを実行しなければならない場合、それぞれ機能ユニットＡＬＵ及び機能ユニットＭＰＵをアクティブにするために用いられる。オペランドは、適切な場合、接続ｒｐ０を介してレジスタファイルへ提供される、リードレジスタインデックスｒｐ００及びｒｐ０１の制御下で、レジスタファイルＲＦ０から読み出される。ユニット選択信号ｓｅｌ００及びｓｅｌ０１は、オペレーションコードｏｐｃｏｄｅ０の値から引き出される。オペレーションコードｏｐｃｏｄｅ０が機能ユニットＡＬＵにより実行されるべきオペレーションを示す場合、ユニット選択信号ｓｅｌ００は真に設定され、それ以外の場合、偽に設定される。オペレーションコードｏｐｃｏｄｅ０が機能ユニットＭＰＵにより実行されるべきオペレーションを示す場合、ユニット選択信号ｓｅｌ０１は真に設定され、それ以外の場合、偽に設定される。オペレーション意味ｏｐｓｅｍ００及びｏｐｓｅｍ０１は、対応する機能ユニットＡＬＵ及びＭＰＵにより実行されるべきオペレーションの種類を示す。ユニット選択信号ｓｅｌ０１は、ＡＮＤゲート１０１により出力有効インデックスｏｖ００と論理積をとられる。そして結果として得た信号はＡＮＤゲート１０３により結果データｒｄ００、つまり機能ユニットＡＬＵにより生成された結果データと論理積をとられる。ユニット選択信号ｓｅｌ０１は、機能ユニットＭＰＵのパイプライン深さに従い遅延される。つまりレジスタ１０５により遅延される。遅延されたユニット選択信号ｓｅｌ０１は、ＡＮＤゲート１０７により出力有効インデックスｏｖ０１と論理積をとられる。そして結果として得た信号は、ＡＮＤゲート１０９により結果データｒｄ０１、つまり機能ユニットＭＰＵにより生成された結果データと論理積をとられる。ＡＮＤゲート１０３及び１０９の出力信号は、ＯＲゲート１１１により論理和をとられる。出力有効インデックスｏｖ００及びｏｖ０１は、対応する結果データｒｄ００及びｒｄ０１が有効出力データである場合、真であり、それ以外の場合、偽である。機能ユニットＡＬＵがオペレーションを実行するために選択された場合、ユニット選択信号ｓｅｌ００は、真に設定され、及びユニット選択信号ｓｅｌ０１は偽に設定される。出力有効インデックスｏｖ００が、機能ユニットＡＬＵにより真に設定された場合、結果データｒｄ００は、ＯＲゲート１１１により結果データｒｄ０として出力される。機能ユニットＭＰＵがオペレーションを実行するために選択された場合、ユニット選択信号ｓｅｌ００は、真に設定され、及びユニット選択信号ｓｅｌ０１は同じく真に設定される。出力有効インデックスｏｖ０１が、機能ユニットＭＰＵにより真に設定された場合、結果データｒｄ０１は、ＯＲゲート１１１により結果データｒｄ０として出力される。オペレーション復号器ＯＰＤＥＣ１は、オペレーションコードｏｐｃｏｄｅ１を復号することにより、ユニット選択信号ｓｅｌ１０と同様にオペレーション意味ｏｐｓｅｍ１０を提供する。ユニット選択信号ｓｅｌ１０及びｓｅｌ０１は、オペレーションコードｏｐｃｏｄｅ１の値から引き出される。オペレーション意味ｏｐｓｅｍ１０は、対応する機能ユニットＬＳＵにより実行されるべきオペレーションの種類を示す。オペランドデータは、もしあれば、リードレジスタインデックスｒｐ１０及びｒｐ１２の制御下で、レジスタファイルＲＦ１から読み出される。機能ユニットＬＳＵは、それぞれオペレーションコードｏｐｃｏｄｅ０及び１の値により示される、２つのオペレーション、つまりロードオペレーション及びストアオペレーションを支援する。機能ユニットＬＳＵは、コマンドｍｍｉｏ＿ｃｍｄをＭＭＩＯ装置へ送信することにより、メモリーマップドＩ／Ｏ装置ＭＭＩＯを制御する。コマンドｍｍｉｏ＿ｃｍｄの有効性は、有効信号ｍｍｉｏ＿ｖａｉｌｄにより示される。コマンドｍｍｉｏ＿ｃｍｄは、機能ユニットＬＳＵのロードオペレーションの場合にはリード、機能ユニットＬＳＵのストアオペレーションの場合にはライトが、ＭＭＩＯ装置で実行されるべきであると示すフラグを有する。コマンドｍｍｉｏ＿ｃｍｄは、メモリーアドレス、及びライトコマンドの場合には書き込まれるべきデータを更に有する。ＭＭＩＯ装置は、リードコマンドが発行された場合、データｍｍｉｏ＿ｒｄａｔａを機能ユニットＬＳＵへ返す。ＭＭＩＯ装置は、データ通信及び／又はメモリーマップドＩ／Ｏに基づく格納を支援する如何なる装置であって良い。これらは、通常のメモリーＦＩＦＯ、及びデータ格納位置又はメモリーマップされた制御／状態／ＩＯレジスタを有する周辺装置を有する。機能ユニットＬＳＵは、オペレーションを実行する最初の周期でコマンドをＭＭＩＯ装置へ送信し、そしてロードオペレーションの場合、３番目の周期で戻りデータを期待する。機能ユニットＬＳＵにより実行されるロードオペレーションの場合、有効結果データｒｄ１は、ロードオペレーションが実行された２周期後に出力される。これら結果データｒｄ１は、当該ロードオペレーションの結果として、ＭＭＩＯ装置から読み出されたデータである。機能ユニットＬＳＵにより実行されるストアオペレーションの場合、如何なる有効結果データｒｄ１も出力されない。結果データｒｄ０及びｒｄ１は、例えば３２ビット値であって良く、レジスタファイルＲＦ０及びＲＦ１へ、接続
ネットワークＣＮ、マルチプレクサＭＰ０及びＭＰ１を介して、ライト選択インデックスｗｓ００及びｗｓ１０、並びにライトレジスタインデックスｗｐ００及びｗｐ１０の制御下で、書き込まれ得る。
【００２１】
図１を参照すると、機能ユニットＬＳＵはまた、ＮＯＰ命令を支援する。このＮＯＰ命令は、オペレーションコードｏｐｃｏｄｅ１の専用値、つまり３に等しい値を用いて選択され得る。オペレーション復号器ＯＰＤＥＣ１は、オペレーションコードｏｐｃｏｄｅ１を復号する。また、ロード又はストアオペレーションの場合、ユニット選択信号ｓｅｌ１０は、真に等しく設定される。反対に、専用ＮＯＰオペコードの場合、ユニット選択信号ｓｅｌ１０は、偽に等しく設定される。ユニット選択信号ｓｅｌ１０は、ＡＮＤゲート１１３によりｍｍｉｏ＿ｖａｌｉｄ信号と論理積をとられる。そして結果として得た信号は、ＭＭＩＯ装置へ提供される。結果として、ＮＯＰ命令の場合、如何なるリード又はライトコマンドも、ＭＭＩＯ装置で実行されない。ライトレジスタインデックスｗｐ００及びｗｐ１０は、如何なる結果データｒｄ０及びｒｄ１もレジスタファイルＲＦ０及びＲＦ１に書き戻される必要がない場合、仮想レジスタ、所謂ごみ箱レジスタを選択するために用いられ得る。この目的のため、レジスタファイルＲＦ０及びＲＦ１のインデックス７を有するレジスタは、ごみ箱レジスタとして予約される。
【００２２】
図３を参照すると、機能ユニットＬＳＵはまた、保護されたストアオペレーションを支援する。ここで、第３の引数が、保護ｇｕ１０として用いられる。条件付きオペレーションを支援する時間定常多重命令ワードプロセッサーはまた、同一出願人により出願された特許文献２（代理人管理番号ＰＨＮＬ０３０３８４ＥＰＰ）に記載されている。保護されたストアオペレーションは、オペレーションコードｏｐｃｏｄｅ１の２つの値を介して選択される。保護は、保護イネーブル信号ｇｅ１０により制御される。オペレーション復号器ＯＰＤＥＣ１は、保護イネーブル信号ｇｅ１０の値を、保護されたストアオペレーションの場合、真に等しく設定する。それ以外の場合、保護イネーブル信号ｇｅ１０の値は、偽に設定される。保護イネーブル信号ｇｅ１０が真に等しい場合、保護信号ｇｕ１０の値は、レジスタファイルＲＦ１から、リードレジスタインデックスｒｐ１０により参照されるレジスタから読み出される。保護イネーブル信号ｇｅ１０が偽に等しい場合、保護信号ｇｕ１０は、デフォルトで真に設定される。機能ユニットＬＳＵは、ＮＯＰ命令を更に支援する。こＮＯＰ命令は、オペレーションコードｏｐｃｏｄｅ１の専用値、つまり３に等しい値を用いて選択され得る。動作中、オペレーション復号器ＯＰＤＥＣ１は、オペレーションコードｏｐｃｏｄｅ１を復号する。また、ロード、ストア又は保護オペレーションの場合、ユニット選択信号ｓｅｌ１０は、真に等しく設定される。反対に、専用ＮＯＰオペコードの場合、ユニット選択信号ｓｅｌ１０は、偽に等しく設定される。ユニット選択信号ｓｅｌ１０は、ＡＮＤゲート１１５により保護信号ｇｕ１０と論理積をとられる。結果として得た信号は、ＡＮＤゲート１１３によりｍｍｉｏ＿ｖａｌｉｄ信号と論理積をとられる。そして結果として得た信号は、ＭＭＩＯ装置へ提供される。結果として、ＮＯＰ命令の場合、如何なるリード又はライトコマンドも、ＭＭＩＯ装置で実行されない。ＡＮＤゲート１１５による信号出力はまた、機能ユニットＬＳＵのパイプライン深さに従い、レジスタ１１９及び１２１により更に遅延され、そしてＡＮＤゲート１１７により機能ユニットＬＳＵの出力有効信号ｏｖ１０と論理積をとられる。結果として得た信号は、ＡＮＤゲート１１７により、結果有効信号ｒｖ１として出力される。ＡＮＤゲート１０１及び１０７の出力信号は、ＯＲゲート１２３により論理和をとられる。ＯＲゲート１２３は、結果として得た信号を結果有効信号ｒｖ０として出力する。結果有効信号ｒｖ０及びｒｖ１は、例えば、１ビット値であって良い。ライト選択インデックスｗｓ００及びｗｓ１０はまた、対応するマルチプレクサＭＰ０及びＭＰ１により用いられ、結果有効信号ｒｖ０又はｒｖ１を選択する。結果データチャネルｒｄ０又はｒｄ１がマルチプレクサＭＰ０又はＭＰ１により選択された場合、選択された結果データチャネルに対応する結果有効信号ｒｖ０又はｒｖ１が用いられ、ライトイネーブル信号ｗｅ０又はｗｅ１を設定し、結果データのレジスタファイルへの書き込みを制御する。マルチプレクサＭＰ０又はＭＰ１が結果データｒｄ０に対応する入力チャネルを選択した場合、結果有効信号ｒｖ０の値が用いられ、当該マルチプレクサに対応するライトイネーブル信号を設定する。また、結果データｒｄ１に対応する入力チャネルが選択された場合、結果有効信号ｒｖ１の値が用いられ、対応するライトイネーブル信号を設定する。結果有効信号ｒｖ０又はｒｖ１が真の場合、適切なライトイネーブル信号ｗｅ０又はｗｅ１は、対応するマルチプレクサＭＰ０又はＭＰ１により、真に設定される。ライトイネーブル信号ｗｅ０又はｗｅ１が真に等しい場合、結果データｒｄ０又はｒｄ１は、それぞれライトデータｗｄ０及びｗｄ１を介して、レジスタファイルＲＦ０又はＲＦ１に、当該レジスタファイルに対応するライトレジスタインデックスｗｐ００又はｗｐ１０を介して選択されたレジスタに書き込まれる。ライトイネーブル信号ｗｅ０又はｗｅ１が偽に設定された場合、対応するライト選択インデックスｗｓ００又はｗｓ１０を介して、結果データｒｄ０又はｒｄ１を対応するレジスタファイルＲＦ０又はＲＦ１に書き込む入力チャネルが選択され、如何なるデータも当該レジスタファイルに書き込まれない。ライト選択インデックスｗｓ００又はｗｓ１０は、デフォルト入力チャネル１２５を選択するため、利用され得る。このデフォルト入力チャネル１２５が、ライト選択インデックスｗｓ００又はｗｓ１０を介して選択された場合、対応するライトイネーブル信号ｗｅ０又はｗｅ１は、デフォルトで偽に設定される。及び従って、如何なる結果データも、対応するレジスタファイルに書き戻されない。保護信号ｇｕ１０を用い、結果データの条件付き書き戻しが、時間定常ＶＬＩＷプロセッサーに対し、許される。保護信号を決定する値は、例えば機能ユニットＡＬＵで命令を実行することにより計算される。また、結果はレジスタファイルＲＦ１に格納される。機能ユニットＬＳＵで保護されたストアオペレーションを実行し、且つ保護信号ｇｕ１０が真に等しい場合、ＡＮＤゲート１１３は、真に等しいｍｍｉｏ＿ｖａｌｉｄ信号を、ＭＭＩＯ装置へ出力する。そしてストアコマンドは、ＭＭＩＯ装置により実行される。保護信号ｇｕ１０が偽に等しい場合、ＡＮＤゲート１１３は偽に等しい信号を出力するので、如何なるストアコマンドも、ＭＭＩＯ装置により実行されない。保護信号ｇｕ１０が偽に等しい場合、結果有効信号ｒｖ１も偽に設定される。これは、結果データｒｄ１のレジスタファイルへの書き戻しが無効であることを意味する。
【００２３】
以下に、図１によるＶＬＩＷプロセッサーにより実行されるべき、アセンブリコード形式の小さいプログラムの一部を示す。このプログラムは、命令ＩＮＳ（ｉ）、ＩＮＳ（ｉ＋１）及びＩＮＳ（ｉ＋２）を有する。
INS(i){
alu.and(RFO[２],RFO[３]);  /*  ＲＦ０のレジスタ２及び３に格納された値を引数として用い、機能ユニットＡＬＵで論理ＡＮＤを実行する。  */
RF１[１]=alu.op００;  /*  機能ユニットＡＬＵによる論理ＡＮＤオペレーションの結果をＲＦ１のレジスタ１に書き込む。  */
lsu.load_０(RF１[５]);  /*  ＲＦ１のレジスタ５に格納されたメモリーマップドアドレスに位置するデータを、機能ユニットＬＳＵにより「ロード」する。  */
}
INS(i+l){
alu.sub(RF０[０],RF０[３]);  /*  機能ユニットＡＬＵにより、ＲＦ０のレジスタ３の値をＲＦ０のレジスタ０の値から減ずる。  */
RF０[６]=alu.op００;  /*  機能ユニットＡＬＵによる減算結果をＲＦ０のレジスタ６に書き込む。  */
lsu.store_０(RF１[４],RFl[５]);  /*  機能ユニットＬＳＵにより、ＲＦ１のレジスタ５に値を、ＲＦ１のレジスタ４に格納されたメモリーマップドアドレスに格納する。  */
INS(i+２){
RF１[２]=lsu.load_２.op１０;  /*  機能ユニットＬＳＵによりロードされたデータをＲＦ１のレジスタ２に格納する。  */
}
【００２４】
命令を有する時間定常情報は、丸括弧で囲まれ指定され、セミコロンで分離される個々のリソース、例えば個々の機能ユニットのオペコード又は機能ユニットの入力値の選択の情報が存在しないことは、ＮＯＰコードがこの個々のリソースのものであることを示す。コンパイラは、オペレーションの各パイプラインステージを明示的にスケジュールするとする。オペレーションのパイプライン番号ｎは、プログラムの一部では、「＿ｎ」、例えばｌｏａｄ＿０及びｌｏａｄ＿２により示される。所与の例では、ロード命令（ｌｏａｄ＿１）の第２のパイプラインステージは、現れない。何故なら、如何なる制御情報もこのパイプラインステージに必要なく、如何なる引数も採取されず、結果が生成され、又はこのステージでオペコードが選択されるからである。このプログラムの部分の２進符号化の実施例は、図２に示される。図２では、３個の命令ワードＩＮＳ（ｉ）、ＩＮＳ（ｉ＋１）及びＩＮＳ（ｉ＋２）が２進形式で示される。ＶＬＩＷ命令ワードの第１の命令フィールドは、機能ユニットＡＬＵ及びＭＰＵを有する発行スロットＩＳ０のオペレーションコードｏｐｃｏｄｅ０を符号化する。第２の命令フィールドは、機能ユニットＬＳＵを有する発行スロットＩＳ１のオペレーションコードｏｐｃｏｄｅ１を符号化する。そして第３及び第４の命令フィールドは、ライト選択インデックスｗｓ００及びｗｓ１０をそれぞれ符号化する。第５及び第６の命令フィールドは、ライトレジスタインデックスｗｐ００及びｗｐ１０をそれぞれ符号化する。第７乃至第１０の命令フィールドは、リードレジスタインデックスｒｐ００、ｒｐ０１、ｒｐ１１及びｒｐ１２をそれぞれ符号化する。命令ワードの灰色のフィールドは、ＮＯＰ情報が符号化されることを示す。ＮＯＰ命令に関連する制御情報をフェッチ及び実行する時に、ビット変化を最小限に抑えるため、アセンブリコードのプログラムの部分を図２に示された２進符号に翻訳する間、ＮＯＰ命令に関連した制御情報の場合、対応するフィールドのＮＯＰコードは、前のＶＬＩＷ命令ワードの対応するフィールドの繰り返しである。例えば、ＩＮＳ（ｉ＋２）のリードレジスタインデックスｒｐ００をフィールドを符号化する時のＮＯＰコードの２進符号化は、ＩＮＳ（ｉ+１）の同一フィールドの場合の繰り返しである。そしてＩＮＳ（ｉ＋２）のリードレジスタインデックスｒｐ００、ｒｐ０１、ｒｐ１１及びｒｐ１２に関連するフィールドも同様に、ＩＮＳ（ｉ＋１）の関連するフィールドからの繰り返しである。しかしながら、ライトレジスタインデックスｗｐ００及びｗｐ１０を符号化するフィールドでは、ＮＯＰ命令の実行中に、結果データｒｄ０及びｒｄ１のレジスタファイルＲＦ０及びＲＦ１への書き戻しを無効にするため、専用ＮＯＰコードが必要とされる。結果データの書き戻しが無効にされない場合、ＮＯＰ命令の実行の結果として、ＶＬＩＷプロセッサーの状態は、変化し得る。つまり、レジスタの内容は、非意図的に変化し得る。従って、ＮＯＰ命令の場合、ライトレジスタインデックスｗｐ００及びｗｐ１０を符号化するフィールドは、ごみ箱レジスタ、つまり例えばＩＮＳ（ｉ＋２）のライトレジスタインデックスｗｐ００に関連し及びＩＮ��（ｉ＋１）のライトレジスタインデックスｗｐ１０に関連するフィールドに示されるようにレジスタファイルの仮想レジスタを参照する値「１１１」を用いて符号化される。更に、機能ユニットＬＳＵを有する発行スロットＩＳ１のオペレーションコードｏｐｃｏｄｅ１を符号化するフィールドでは、ＮＯＰ命令の場合、ＶＬＩＷプロセッサーの状態変化を防ぐため、専用ＮＯＰコードも必要とされる。例えば、ロードオペレーションは、ＦＩＦＯバッファからデータを抽出及び削除することによりプロセッサーのＩ／Ｏに用いられ得る、ＦＩＦＯバッファの内容を変化する。ロードオペレーションはまた、非意図的なロードが結果としてキャッシュミスを生じる場合、データのブロックの非意図的なフェッチを生じることにより、存在し得るデータキャッシュの内容を変化し得る。従って、ＮＯＰ命令の場合、機能ユニットＬＳＵを有する発行スロットＩＳ１のオペレーションコードｏｐｃｏｄｅ１を符号化するフィールドは、ＩＮＳ（ｉ＋２）のオペコードフィールドＩＳ１に関連するフィールドに示された例では、専用ＮＯＰオペコード、つまり値３を用いて符号化される。機能ユニットＡＬＵ及びＭＰＵを有する発行スロットＩＳ０は、ＮＯＰオペコードを符号化するために専用ＮＯＰコードを必要としない。何故なら、前の命令ワードの符号化を繰り返す場合、ＶＬＩＷプロセッサーの状態変化の危険は存在しないからである。従って、ＩＮＳ（ｉ＋２）のオペコードフィールドＩＳ０に関連するフィールドでは、ＮＯＰオペコードは、ＩＮＳ（ｉ＋１）の関連するフィールドのオペコードの繰り返しである。
【００２５】
以下に、図３によるＶＬＩＷプロセッサーにより実行されるべき、アセンブリコード形式の小さいプログラムの一部を示す。このプログラムは、命令ＩＮＳ（ｉ）、ＩＮＳ（ｉ＋１）及びＩＮＳ（ｉ＋２）を有する。
INS(i){
alu.and(RF０[２],RF０[３]);  /*  ＲＦ０のレジスタ２及び３を引数として用い機能ユニットＡＬＵで論理ＡＮＤを実行する。  */
RF１[１]=alu.op００;  /*  機能ユニットＡＬＵによる論理ＡＮＤオペレーションの結果をＲＦ１のレジスタ１に書き込む。  */
lsu.load_０(RF１[５]);  /*  機能ユニットＬＳＵにより、ＲＦ１のレジスタ５に格納されたメモリーマップドアドレスに位置するデータを「ロード」する。  */
}
INS(i+１){
alu.sub(RF０[０],RF０[３]);  /*  ＲＦ０のレジスタ０の値から、ＲＦ０のレジスタ３の値を減ずる。  */
RF０[６]=alu.op００;  /*  機能ユニットＡＬＵによる減算の結果を、ＲＦ０のレジスタ６に書き込む。  */
if(RF１[７])
lsu.store_０(RF１[４],RF１[５]);  /*  ＲＦ１のレジスタ７の値が、ゼロでない場合、機能ユニットＬＳＵにより、ＲＦ１のレジスタ５の値を、ＲＦ１のレジスタ４に格納されたメモリーマップドアドレスに格納する。  */
}
INS(i+２){
RFl[２]=lsu.load_２.op１０;  /*  機能ユニットＬＳＵによりロードされたデータを、ＲＦ１のレジスタ２に格納する。  */
}
【００２６】
個々のリソース、例えば個々の機能ユニットのオペコード又は機能ユニットの入力値の選択の情報が存在しないことは、ＮＯＰコードがこの個々のリソースのものであることを示す。コンパイラは、明示的なオペレーションの各パイプラインステージをスケジュールし、異なるオペレーションの間に生じ得る如何なるリソースの衝突も防ぐとする。またオペレーションのパイプライン番号ｎは、プログラムの部分では、「＿ｎ」というポストフィックスにより示される。このプログラムの部分の２進符号化の例は、図４に示される。図４では、３個の命令ワードＩＮＳ（ｉ）、ＩＮＳ（ｉ＋１）及びＩＮＳ（ｉ＋２）が２進形式で示される。命令ワードの第１の命令フィールドは、機能ユニットＡＬＵ及びＭＰＵを有する発行スロットＩＳ０のオペレーションコードｏｐｃｏｄｅ０を符号化する。第２の命令フィールドは、機能ユニットＬＳＵを有する発行スロットＩＳ１のオペレーションコードｏｐｃｏｄｅ１を符号化する。そして第３及び第４の命令フィールドは、ライト選択インデックスｗｓ００及びｗｓ１０をそれぞれ符号化する。第５及び第６の命令フィールドは、ライトレジスタインデックスｗｐ００及びｗｐ１０をそれぞれ符号化する。第７乃至第１０の命令フィールドは、リードレジスタインデックスｒｐ００、ｒｐ０１、ｒｐ１０、ｒｐ１１及びｒｐ１２をそれぞれ符号化する。命令ワードの灰色のフィールドは、ＮＯＰ情報が符号化されることを示す。ＮＯＰ命令に関連する制御情報を実行する時に、ビット変化を最小限に抑えるため、アセンブリコードのプログラムの部分を図３に示された２進符号に翻訳する間、ＮＯＰ命令に関連した制御情報の場合、対応するフィールドのＮＯＰコードは、前のＶＬＩＷ命令ワードの対応するフィールドの繰り返しである。例えば、ＩＮＳ（ｉ＋１）のライトレジスタインデックスｗｐ１０を符号化するフィールド内のＮＯＰコードの２進符号化は、ＩＮＳ（ｉ）の同一フィールドの場合の繰り返しである。また、ＩＮＳ（ｉ＋２）のリードレジスタインデックスｒｐ００、ｒｐ０１、ｒｐ１０、ｒｐ１１及びｒｐ１２と関連するフィールドは、全て、ＩＮＳ（ｉ＋１）の対応するフィールドからの繰り返しである。しかしながら、ライト選択インデックスｗｓ００及びｗｓ１０を符号化するフィールドでは、ＮＯＰ命令の実行中に、結果データｒｄ０及びｒｄ１のレジスタファイルＲＦ０及びＲＦ１への書き戻しを無効にするため、専用ＮＯＰコードが必要とされる。結果データの書き戻しが無効にされない場合、ＮＯＰ命令の実行の結果として、ＶＬＩＷプロセッサーの状態は、変化し得る。従って、ＮＯＰ命令の場合、ライト選択インデックスｗｓ００及びｗｓ１０を符号化するフィールドは、デフォルトでライトイネーブル信号ｗｅ０及びｗｅ１を偽に設定する、入力チャネル１２５を参照する値「１１」を用いて符号化される。例えば、ＩＮＳ（ｉ＋２）のライトレジスタインデックスｗｓ００に関連するフィールド及びＩＮＳ（ｉ＋１）のライトレジスタインデックスｗｓ１０に関連するフィールドを参照する。更に、機能ユニットＬＳＵを有する発行スロットＩＳ１のオペレーションコードｏｐｃｏｄｅ１を符号化するフィールドでは、ＮＯＰ命令の場合、ＶＬＩＷプロセッサーの状態変化を防ぐため、専用ＮＯＰコードも必要とされる。従って、ＩＮＳ（ｉ＋２）の発行スロットＩＳ１のオペレーションコードｏｐｃｏｄｅ１を符号化するフィールドは、専用ＮＯＰオペコード、つまり値３を用い符号化される。機能ユニットＡＬＵは、専用ＮＯＰコードを必要としない。またＩＮＳ（ｉ＋２）では、ＮＯＰオペコードは、ＩＮＳ（ｉ＋１）の対応するフィールドのオペコードの繰り返しである。
【００２７】
図２乃至図４を参照すると、制御情報に関連するＮＯＰ命令を実行する場合、ビット変化の数は最小限に抑えられる。結果として、対応するプロセッサー内のより多くの組み合わせ論理は、前の及び後の周期と同一の値を伝達する。従ってデータ遷移のリップル、及び従って、不要な電力消費は低減する。
【００２８】
代案の実施例では、ＮＯＰ命令に関連する制御情報を符号化する場合、対応するフィールドのＮＯＰコードは、次の命令ワードの対応フィールドの繰り返しである。例えば、図２を参照すると、この場合、ＩＮＳ（ｉ＋２）のリードレジスタインデックスｒｐ１２を符号化するフィールド内のＮＯＰコードの２進符号化は、ＩＮＳ（ｉ＋１）の同一フィールドの場合の繰り返しである。つまり、図２に示されるように、値「０００」の代わりに値「１０１」である。
【００２９】
コンパイルされた又は手動で書かれたアセンブリ言語プログラムを２進プログラムコードへ翻訳する間、アセンブラは、現在翻訳されている多重命令ワードの前及び／又は後に続く多重命令ワードを把握する。現在の命令を翻訳する間、ＮＯＰコードが現在の命令の所与のフィールドのために符号化されなければならない場合はいつでも、アセンブラは、前又は後に続く多重命令ワードのフィールドのために符号化された対応する値を繰り返し得る。代案として、より深いパイプラインを有する発行スロットでは、隣接する多重命令ワードの対応するフィールドのために符号化された値を繰り返す代わりに、専用ＮＯＰオペコード値が符号化され得る。特に、より深いパイプラインを有する発行スロットの場合、専用ＮＯＰオペコードは、パイプラインステージのクロックゲーティングを制御するために用いられ、シーケンシャルロジック内で電力を節約し、及び同時にデータゲーティングを得る。代案として、パイプラインを有さない又は深くないパイプラインを有する発行スロットでは、隣接する多重命令ワードの対応するフィールドのために符号化された値を繰り返すことにより、ＮＯＰコードが符号化され得る。更に別の代案の実施例では、ＮＯＰコードの符号化は、現在の多重命令ワードの翻訳を実際に実行する間、前又は後に続く可能性の最も高い多重命令ワードの対応するフィールドのために符号化された値を繰り返すことにより行われ得る。前又は後に続く可能性の最も高い命令は、例えば、プロファイル情報から引き出され得る。
【００３０】
別の実施例では、通信ネットワークＣＮは、部分接続通信ネットワークであって良い。つまり、各発行スロットＩＳ０及びＩＳ１が全てのレジスタファイルＲＦ０及びＲＦ１に結合されていない。多数の発行スロットの場合、完全接続通信ネットワークのオーバーヘッドは、シリコン面積、遅延及び電力消費の観点からかなり大きい。ＶＬＩＷプロセッサーの設計中に、一連の実行されるべきアプリケーションに応じて、どの程度、機能ユニットがレジスタファイルと結合されるかが決定される。
【００３１】
別の実施例では、プロセッサーは、レジスタファイルＲＦ０及びＲＦ１を有する分散レジスタファイルの代わりに、単一のレジスタファイルを有する。ＶＬＩＷプロセッサーの発行スロットの数が比較的小さい場合、単一のレジスタファイルのオーバーヘッドも比較的小さい。
【００３２】
別の実施例では、ＶＬＩＷプロセッサーは、異なる数の発行スロットを有して良い。及び／又は発行スロットは、異なる数の機能ユニットを有して良い。機能ユニットの数は、特に、ＶＬＩＷプロセッサーが実行するアプリケーションの種類に依存する。プロセッサーはまた、前記発行スロットと接続された、異なる数のレジスタファイルを有して良い。
【００３３】
別の実施例では、発行スロットＩＳ０及びＩＳ１は、発行スロットが実行すべきオペレーション、つまり２つより多いオペランドを必要とし及び／又は１つより多い結果を生成するオペレーションの種類に依存して、異なる数の入力及び／又は出力ポートを有して良い。レジスタファイルＲＦ０及びＲＦ１はまた、異なる数のリード及び／又はライトポートを有して良い。
【００３４】
留意すべき点は、以上に説明された実施例は、本発明を制限するものではないことである。当業者は、請求の範囲から逸脱することなく、多くの代替の実施例を考案できるだろう。請求項では、括弧内の如何なる参照符号も、請求項を制限すると見なされるべきではない。「有する」の表現は、請求項に記載された以外の構成要素又は段階の存在を排除するものではない。要素に付される単数表記の語は、当該要素の複数の存在を排除するものではない。複数の手段を列挙した装置の請求項では、これら複数の手段は、１つ及び同一のハードウェア要素により実施され得る。特定の手段が相互に異なる従属請求項で引用されることは、これら手段の組み合わせが効果的に利用できないことを示すものではない。
【図面の簡単な説明】
【００３５】
【図１】本発明による第１のＶＬＩＷプロセッサーのブロック図である。
【図２】第１のＶＬＩＷプロセッサーにより実行され得る多重命令ワードセットを示す。
【図３】本発明による第２のＶＬＩＷプロセッサーのブロック図である。
【図４】第２のＶＬＩＷプロセッサーにより実行され得る多重命令ワードセットを示す。
【図１】
2007537528.tif 000003
【図２】
2007537528.tif 000004
【図３】
2007537528.tif 000005
【図４】
2007537528.tif 000006