(57)【要約】【課題】  専用命令によって、より融通性のある方法で設定することができる、プロセッサを提供すること。【解決手段】  プロセッサ（100）は、複数の実行ユニット（160）による実行に対して、命令を格納するための複数のレジスタ（120）を備えている。複数のレジスタ（120）は、分配手段（140）を介して、複数の実行ユニット（160）に結合されている。分配手段（140）は、複数ユニット（160）と、複数の実行ユニット（160）を複数のディスパッチ・ユニット（144）に結合している、リルート可能なネットワーク（たとえば、データ通信バス（142））に結合されている複数のディスパッチ・ユニット（144）を備えている。データ通信バス（142）は、制御ユニット（148）によって制御されている。ディスパッチ・ユニット（144）は、複数の実行ユニット（160）の実行ユニット（160a、160b、160c、160d）の不活性期間の始まりの信号を送る、命令フローの専用命令を検出するように構成されている。続いて、専用命令の検出の結果として、制御ユニット（148）へ通知され、かつ、複数のレジスタ（120）から複数のディスパッチ・ユニット（140）への命令フローがリルートされる。
2005510792.tif 000002
【特許請求の範囲】
【請求項１】
専用命令によって設定が可変のプロセッサであり、
複数の命令を実行するための複数の実行ユニットと、
前記複数の命令を前記複数の実行ユニットに分配するための分配手段と、含む、前記プロセッサにおいて、
前記分配手段は、前記専用命令に従って、前記複数の命令を前記複数の実行ユニットに分配するように構成されていることを特徴とするプロセッサ。
【請求項２】
さらに、前記複数の命令を格納するための複数のレジスタを含み、前記複数のレジスタは、前記分配手段に結合されていることを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記分配手段は、
前記複数の命令を前記複数の実行ユニットにディスパッチするための複数のディスパッチ・ノードであって、前記複数のディスパッチ・ノードの内の各々のディスパッチ・ノードが、前記複数のレジスタの内の目標レジスタから命令を取り込み、かつ、評価するように構成されている複数のディスパッチ・ノードと、
前記複数のディスパッチ・ノードに応答する制御手段と、
前記複数レジスタファイルを前記複数ディスパッチ・ノードに結合させるための前記制御手段に応答する結合手段と、
を含むことを特徴とする請求項2に記載のプロセッサ。
【請求項４】
前記複数ディスパッチ・ノードの内の1つのディスパッチ・ノードは、前記専用命令の評価に応じて、少なくとも部分的に不活性にされることを特徴とする請求項3に記載のプロセッサ。
【請求項５】
前記複数のディスパッチ・ノードの内の1つのディスパッチ・ノードは前記専用命令の評価に応じて、前記複数の実行ユニットの内の1つの実行ユニットを不活性にするように構成されることを特徴とする請求項3に記載のプロセッサ。
【請求項６】
前記ディスパッチ・ノードは、制御手段から再活性化信号を受信すると再活性化されることを特徴とする請求項4に記載のプロセッサ。
【請求項７】
前記制御手段は、前記複数の実行ユニットの内の1つの実行ユニットからの信号に対応して、前記再活性化信号を生成するように構成されていることを特徴とする請求項6に記載のプロセッサ。
【請求項８】
前記制御手段は、
複数のコンダクタであって、前記複数のコンダクタの内の1つのコンダクタが、前記複数のディスパッチ・ノードの内の1つのディスパッチ・ノードを、評価装置に結合している複数のコンダクタと、
複数のディスパッチ・ノードの内の1つの活性ディスパッチ・ノードに、目標レジスタ選択情報を提供するために、前記評価装置に応答する制御ユニットと、
を含むことを特徴とする請求項3に記載のプロセッサ。
【請求項９】
前記結合手段は、データ通信バスを含むことを特徴とする請求項３に記載のプロセッサ。
【請求項１０】
前記結合手段は、
前記複数のレジスタに結合されている複数のデマルチプレクサと、
前記複数のディスパッチ・ノードに結合されている複数のマルチプレクサとを含み、
前記複数のデマルチプレクサの内の各々のデマルチプレクサが、前記複数のマルチプレクサの内の各々のマルチプレクサに結合されていることを特徴とする請求項3に記載のプロセッサ。
【請求項１１】
専用命令によって設定が可変のプロセッサであり、複数の命令を実行するための複数の実行ユニットと、前記複数の命令を前記複数の実行ユニットに分配するための分配手段と、含む、前記プロセッサによる実行のための複数の命令を含む命令集合において、
前記命令集合は、さらに、前記分配手段による、前記複数の実行ユニットに対する前記複数の命令の前記分配を制御するための専用命令を含むことを特徴とする命令集合。
【請求項１２】
プロセッサの複数の実行ユニットへの命令の分配方法であって、
前記方法は、
当該プロセッサを設定するための専用命令を検出することと、
前記複数の実行ユニットの内の1つの実行ユニットに他の命令をディスパッチすることと、を含む、分配方法において、
前記専用命令の検出で、複数の実行ユニットの内の前記1つの実行ユニットを選択することを特徴とする分配方法。
【請求項１３】
専用命令によって設定が可変のプロセッサであり、複数の命令を実行するための複数の実行ユニットと、前記複数の命令を前記複数の実行ユニットに分配するための分配手段と、含む、前記プロセッサによって実行される複数の命令を含んでいるソフトウェア・コード・モジュールのコンパイル方法であって、
前記方法は、
複数の命令を複数の命令バンドルにバンドルすることと、
複数の実行ユニットの内の1つの実行ユニットによって、隣接する実行に対して複数の何にもしないという命令を検出することと、
第1の何もしないという命令を、前記複数の実行手段への前記複数の命令の前記分配を前記分配手段によって制御するための専用命令により置きかえることによって複数の命令を変更することと、
含むソフトウェア・コード・モジュールのコンパイル方法。
【請求項１４】
さらに、前記複数の命令バンドルの内の前記複数の何もしないという命令から前記残りの何もしないという命令を除去するステップを含むことを特徴とする請求項13に記載のソフトウェア・コード・モジュールのコンパイル方法。
【請求項１５】
さらに、前記複数の命令バンドルを、更なる複数の命令バンドルに再設定するステップを含むことを特徴とする請求項14に記載のソフトウェア・コード・モジュールのコンパイル方法。
【請求項１６】
さらに、何もしないという命令を除去する数を示す前記専用命令に情報に追加するステップを含むことを特徴とする請求項14に記載のソフトウェア・コード・モジュールのコンパイル方法。
【請求項１７】
さらに、前記複数の何もしないという命令の存在が生じることを示す前記専用命令を情報に追加するステップ含むことを特徴とする請求項13または14に記載のソフトウェア・コード・モジュールのコンパイル方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、専用命令によって設定の変更が可能なプロセッサに関する。
【０００２】
また、本発明は、このような命令を含んでいる命令集合に関する。
【０００３】
また、本発明は、記憶装置から可変プロセッサのような複数の実行ユニットへの、命令バンドルの分配方法に関する。
【０００４】
また、本発明は、このような専用命令を含んでいる複数の命令バンドルのコンパイル方法に関する。
【背景技術】
【０００５】
特許文献1には、専用命令によって設定の変更が可能なプロセッサが示されている。
計算性能の向上を求める途切れることのない要求が、ある形の並行プロセス、たとえば、並列性(parallesim)が、プロセッサ・アーキテクチャに導入された、いくつかの解決案をもたらして来た。高い性能を達成するために広く使われているコンセプトは、多数のプロセスユニットが、多数の命令を多かれ少なかれ同時に実行するためのプロセッサ・アーキテクチャに存在している命令レベル並列性の導入である。プログラムのいくつかのスレッドがプロセスユニットによってアクセスできるマルチスレッディング・コンセプトと、実行ユニットの機能性と対応している命令バンドルが命令集合に存在する超長命令語（VLIW）コンセプトとの、2つの主要なコンセプトが採用されて来た。
【０００６】
上述した各コンセプトに関する問題は、並列性の増加が、同時に活性である多数の実行ユニットによる消費電力の増加と、同時発生するデータ・トラフィックのこれに関連する増加のような、いくつかの問題をもたらすことである。
【０００７】
特許文献1のVLIWプロセッサは、対応する実行ユニットの電力を、少なくとも、部分的に低下させる、専用命令（たとえば、SLEEP命令またはREST命令）に応答するようになされたプロセスユニットを有している。実行ユニットは、他の専用命令（たとえば、WAKE命令）またはトグルとして機能させる第2のSLEEP/REST命令と、活性（たとえば、非SLEEP/REST）命令の受け取りとのいずれかによって、再び、活性にされる。従って、プロセッサの活性設定は、VLIWプロセッサの命令フローに存在する専用命令によって変えることができ、この結果、この活性プロセッサによって消費電力が減少する。これらの専用命令は、コンパイラによってVLIWに挿入される。すなわち、このことは、最初に所定の機能ユニットのための不活性命令のセグメントを検出し、そして、続いて、不活性期間の継続時間に従ってSLEEP命令またはREST命令によって最初の不活性命令を置き換え、そして、WAKE命令で最後の不活性命令を置き換えることによって実現される。
【０００８】
専用命令が、プロセッサの部分をスイッチオフおよびスイッチオンするためにしか使用されないことが、この従来技術のプロセッサの問題点である。
【０００９】
【特許文献１】米国特許6,219,796号明細書
【発明の開示】
【課題を解決するための手段】
【００１０】
とりわけ、本発明の目的は、専用命令によって、より融通性のある方法で設定することができる、冒頭のパラグラフに記載されているようなプロセッサを提供することである。
【００１１】
本発明の更なる目的は、より融通性のある設定計画を促進している、冒頭のパラグラフに記載されているような命令集合を提供することである。
【００１２】
さらに、本発明の別の目的は、命令レベル並列性を使用するプロセッサを、さらに融通性のあるようにすることができる、冒頭のパラグラフに記載されているような分配方法を提供することである。
【００１３】
さらに、本発明の別の目的は、融通性がより高い設定戦略を容易にする、ソフトウェア・コード・モジュールを作成するための、冒頭のパラグラフに記載されているようなコンパイル方法を提供することである。
【００１４】
本発明は、独立クレームによって規定される。従属クレームは、好都合な実施例を規定する。
【００１５】
次に、最初の目的は、分配手段を、専用命令に従って、複数の命令を複数の実行ユニットに分配するように構成して、実現される。
専用命令は、所定の実行ユニットのアイドル状態の期間の始まりを示す。専用命令に応じて分配手段を作成することによって、命令フローを、分配手段による専用命令の評価に応じて、残りの活性な実行ユニットにリルートさせることができる。その結果、分配手段が、命令を適切な活性実行ユニットに、リルートさせることができると言う理由から、所定の実行ユニットに対する、一連の何もしないという命令（すなわち、無動作命令（NOP））を、関連する命令バンドル（すなわち、スレッドまたは命令ワード）から、除外し、かつ単一の専用命令によって置き換えることができる。このことは、データ通信の強度を低下する観点から特に好ましい。何故ならば、命令メモリから取り込まれるべき命令バンドルが、大きく減少したアイドル状態の命令数を備え、かつ、命令に関連するプログラムを実行するためには、メモリからの取り込みが、より少なくて済むからである。これは、消費電力が低下し、かつ、プロセッサ性能が改良される結果をもたらす。何故ならば、時間がかかる命令メモリ・アクセスの数が減少するからである。
【００１６】
プロセッサは、さらに、分配手段に結合されている複数の命令を格納するための複数のレジスタを備えていることが、好ましい。
このようなレジスタが存在していれば、命令のバッファリングが可能になる。その結果、データ転送におけるより大きな適応性が達成され、これは、プロセッサ性能の向上に貢献する。
【００１７】
好ましい実施例では、分配手段が、複数の命令を複数の実行ユニットに分配するための複数のディスパッチ・ノードであって、複数のディスパッチ・ノードの内の各々のディスパッチ・ノードが、複数のレジスタの内の目標レジスタから命令を取り込み、かつ評価するように構成されている、複数のディスパッチ・ノードと；複数のディスパッチ・ノードに応答する制御手段と；複数のレジスタファイルを複数のディスパッチ・ノードに結合するための制御手段に応答する結合手段とを；含む。設定が可変の結合手段を導入することによって、如何なるディスパッチ・ノードによる、結合手段に結合されている全てのレジスタへのアクセスも、容易になる。制御手段は、ディスパッチ・ノードによって、専用命令の検出をレジスタに格納し、かつレジスタからの命令フローを調整してノードをそれに応じてディスパッチさせることができる。その結果、単一のレジスタに格納されている命令を、複数の実行ユニットに分配することができる。これは、命令メモリから取り込まれる命令バンドルが、対応する命令実行リソースに一致しなくてもよいことを示す。事実、単一のバンドルは、別々のクロックサイクルで、単一の実行ユニットによって実行される命令を含むことができる。
【００１８】
複数のディスパッチ・ノードの内の1つのディスパッチ・ノードが、専用命令の評価に応じて、少なくとも部分的に不活性にされる場合、それは好ましい実施例の利点である。
専用命令は、関連するディスパッチ・ノードを不活性にするトリガーとして、機能させることができる。専用命令が、ディスパッチ・ノードと関連している実行ユニットに対するアイドル状態の期間の信号を送るので、そのディスパッチ・ノードも、同様にアイドル状態の期間に入る。したがって、そのノードを、少なくとも部分的に、スイッチオフさせることができる。これは、消費電力の観点から見て好都合である。たとえば、ディスパッチ・ユニットに残される唯一のアクティビティは、適切な時期にそれ自体を再活性化させるために、ディスパッチ・ユニットが不活性であるクロックサイクルの数をモニタリングすることである。
【００１９】
ディスパッチ・ノードが、専用命令の評価に応じて、複数の実行ユニットの内の1つの実行ユニットを不活性にするように構成される場合、それは、好ましい実施例の他の利点である。
専用命令が、所定の実行ユニットに対する不活性期間を示すので、この実行ユニットをディスパッチ・ユニットによってスイッチオフすることができる。これにより、プロセッサによる消費電力が更に減少する。
【００２０】
ディスパッチ・ノードが、制御手段からの再活性化信号の受信に応じて再活性化される場合、それは、好ましい実施例のさらに他の利点である。
適切に再活性化される時期を決定するために、不活性であるクロックサイクルのそれ自体の数をモニタする代わりに、ディスパッチ・ノードを制御手段によって再活性化させることもできる。このようにして、それら自体の再活性化を追尾する必要がないので、各ディスパッチ・ノードを、完全にスイッチオフさせることができる。
【００２１】
制御手段が、複数の実行ユニットの内の1つの実行ユニットからの信号に応答して、再活性化信号を生成するように構成される場合、それは、好ましい実施例のさらに他の利点である。
このことは、ディスパッチ・ノードが、ブランチ命令のような条件式の結果としてスイッチオフされる場合に特に好ましい。すなわち、この条件が合うことを示している実行ユニットからの信号を受けると、制御ユニットは、適切なディスパッチ・ユニットを再活性化させることができる。たとえば、これは、ごくわずかな不要な命令しか組み込んでいないコンパクトな命令バンドルを用いて、ループ実行を容易にする。
【００２２】
制御手段が、複数のコンダクタであって、複数のコンダクタの内の1つのコンダクタが、複数のディスパッチ・ノードの内の1つのディスパッチ・ノードを、評価装置に結合している複数のコンダクタと；複数のディスパッチ・ノードの内の1つの活性ディスパッチ・ノードに、目標レジスタ選択情報を提供するために、前記評価装置に応答する制御ユニットと；を備える場合、それは、好ましい実施例の更なる利点である。
ディスパッチ・ユニットは、専用命令を検出するときに、評価装置に検出信号を提供する。評価装置によって収集された検出信号の数は、制御ユニットに提供される。これにより、このデータから、オフセットを構築することができる。すなわち、このオフセットは、活性ディスパッチ・ユニットを適切なレジスタに接続するために用いられる。
【００２３】
好ましい実施例の結合手段は、データ通信バスを含むという利点がある。
データ通信バスの使用は、レジスタとディスパッチ・ユニットとの間の高速通信を提供する。このことは、装置の高いスループット性能に貢献する。
【００２４】
これに代えて、好ましい実施例の結合手段が、複数のレジスタに結合されている複数のデマルチプレクサと、複数のディスパッチ・ノードに結合されている複数のマルチプレクサとを備え、複数のデマルチプレクサの内の各々のデマルチプレクサを、複数のマルチプレクサの各々のマルチプレクサに結合させるようにしてもよい。
一組のマルチプレクサおよびデマルチプレクサを介して、ディスパッチ・ユニットにレジスタを接続することにより、制御手段による結合手段の制御が、相対的に簡易になるという効果がある。これは、それを相対的に低いコストで、かつ、小さい面積オーバーヘッドで実施することができることを意味する。
【００２５】
本発明の別の目的は、命令集合が、さらに、複数の命令を分配手段によって複数の実行ユニットに分配することを制御するための専用命令を備えることによって実現される。
このような命令集合は、本発明のプロセッサと共に用いることができる。これにより、命令のリルートと、よりコンパクトな命令バンドルの使用とが可能になる。
【００２６】
本発明のさらに他の目的は、ディスパッチ方法が、専用命令の検出に基づいて、複数の実行ユニットから1つの実行ユニットを選択するステップを備えることにより実現される。
このような方法は、命令のダイナミックなリルートを可能にする。これは、複数の実行ユニットの一部しか、有用な命令を実行するためにスケジューリングされない場合に、命令バンドルを、その固定されたサイズに再整形するためのみに対しては、何もしないという命令を用いる必要性を排除する。
【００２７】
本発明の別の目的は、第1の何もしないという命令を、複数の実行ユニットへの複数の命令の分配を分配手段によって制御するための専用命令により置き換えるステップによって実現される。
ソフトウェア・コード・モジュールの専用命令の存在により、本発明のプロセッサの分配手段による命令の再度のスケジューリングが、可能になる。
【００２８】
コンパイル方法が、複数の命令バンドルの内の複数の何もしないという命令から、残りの何もしないという命令を除去する更なるステップを備える場合、それは、好ましい。
命令バンドルから何もしないという命令を除去することによって、命令バンドルあたりの、他の何もしないという命令に対する有用な命令の比重が、増加したソフトウェア・コード・モジュールが、生じる。このことは、特に、総コード・サイズの観点から見て好都合である。
【００２９】
コンパイル方法が、さらに、複数の命令バンドルを、更なる複数の命令バンドルに再設定するステップを含む場合、それは、他の利点となる。
複数の命令バンドルを、更なる複数の命令バンドル（好ましくは固定されたサイズのバンドル）に再設定することは、ソフトウェア・コード・モジュールの命令順序の複雑さを低減する。その結果、再変型された命令バンドルは、単一の実行ユニットによって実行されるべきマルチプル命令を含むことができる。このマルチプル命令は、専用命令の評価に応じて適切な順序で、そのユニットにディスパッチさせることが可能となる。これは、このようなコード・モジュールの実行に対するメモリ・アクセスがより少なくて済むことを示す。これは、関係するプロセッサの消費電力の減少に貢献する。
【００３０】
コンパイル方法が、除去された、何もしないという命令の数を示す専用命令に、情報を追加するステップを含む場合、それは、さらに他の利点となる。
これにより、本発明のプロセッサの分配手段が、専用命令から、プロセッサの対応する実行ユニットの不活性期間を示す情報を、抽出することが可能になる。この情報は、その量の時間に対してプロセッサの部分を不活性にするために用いることができる。
【００３１】
コンパイル方法が、複数の何もしないという命令の存在の原因を示す専用命令に、情報を追加するステップを含む場合、それは、他の利点となる。
これは、プロセッサの実行ユニットの不活性期間が、条件イベント（たとえば、ループ命令の終わりを示すブランチ命令の発生）によって生じるときに、特に有用な。この情報は、条件が満足されたことを示す割り込み信号が、ある時点で発生するであろうという警報を、分配手段に発するために用いることができる。これにより、プロセッサの不活性部分を、分配手段によって、一時的に再活性化させるために用いることができる。
【発明を実施するための最良の形態】
【００３２】
本発明を、添付の図面を参照して、限定的でないものとして、より詳細に説明する。
【００３３】
図1において、プロセッサ100の一部は、分配ユニット140に結合されている、複数のレジスタ120を有する。分配ユニット140の出力は、複数の実行ユニット160に結合されている。好ましい実施例では、分配ユニット140は、複数のレジスタ120を複数のディスパッチ・ユニット144に結合する、データ通信バス142を備えている。ディスパッチ・ユニット144a、144b、144c、144dは、ディスパッチ・ユニット144a、144b、144c、144dに結合されている、実行ユニット160a、160b、160c、160dのアイドル状態の期間の始まりを示す、命令フローの専用命令を、検出するように構成されている。図1において、各々のディスパッチ・ユニット144a、144b、144c、144dは、実行ユニット160a、160b、160c、160dの各々に結合されている。
【００３４】
しかしながら、プロセッサ100のすべての実行ユニット160a、160b、160c、160dが、分配ユニット140を介して、レジスタに接続されている必要がないことは、強調される。すなわち、当業者には、実行ユニット160a、160b、160c、160dの一部のみが、分配ユニット140を介してレジスタ120に接続されているという混合設定も、本発明の教示から逸脱することなく、可能であることも理解されるであろう。実行ユニット160a、160b、160c、160dのいくつかが、それらを、命令スケジューリング問題に対して相対的に鈍くなるように、専用タスクを実行させるように構成されている場合には、このような混合設定は、有用となる。加えて、レジスタ120a、120b、120c、10d、ディスパッチ・ユニット140a、140b、140c、140d、および実行ユニット160a、160b、160c、160dの4つという数は、一例として選択されているに過ぎず、これらの設定要素の他の数も、本発明の教示から逸脱することなく、存在することができることは、理解されるべきである。
【００３５】
データ通信バス142は、制御ユニット148によって制御されている。ここに示されている実施例では、制御ユニット148は、複数の評価装置146および複数のコンダクタ150を介して、複数のディスパッチ・ユニット144に結合されている。複数のコンダクタ150の内の各々のコンダクタは、複数のディスパッチ・ユニット144の内の各々のディスパッチ・ユニット144a、144b、144c、144dに結合されている。評価装置146は、専用命令が検出されるときに、ディスパッチ・ユニット144a、144b、144c、144dからの信号を受信するように構成されている。評価装置146は、複数のコンダクタ150を介して提供される信号を収集し、レジスタ120a、120b、120c、120dと活性ディスパッチ・ユニット144a、144b、144c、144dとの結合を制御するために、必要な情報を制御ユニット148へ提供する。制御ユニット148は、ディスパッチ・ユニット144a、144b、144c、144dに、レジスタアドレス選択情報を提供することができる。しかしながら、制御ユニット148は、従来技術において既知の他のデータ・アクセス制御メカニズムも用いることができる。この点で、別々の評価装置146の存在が、厳密に要求されないということが、当業者にとって明らかであろうと示される。評価装置146は、制御ユニット148に集積化させることが出来る。さらに、加えて、制御ユニット148は、本発明の範囲から逸脱せずに、ディスパッチ・ユニット144a、144b、144c、144dのうちの少なくとも1つに分配させることが出来る。
【００３６】
その結果、分配ユニット140は、専用命令に応じて、複数の実行ユニット（160）へ複数の命令を分配するように構成される。何故ならば、専用命令の検出は、レジスタ120a、120b、120c、120dの他の実行ユニット160a、160b、160c、160dへのリルートをもたらすからである。
【００３７】
制御ユニット148、および複数のレジスタ120は、更なるデータ通信バス110に接続されている。更なるデータバス110は、図示しない命令メモリにアクセスするために用いられる。制御ユニット148は、命令メモリから命令バンドルを取り込む制御を行う。命令バンドルは、その後、複数のレジスタ120に格納される。制御ユニット148および複数のレジスタ120の双方が、更なるデータバス110を用いることは、限定的なものと解すべきではない。すなわち、制御ユニット148と複数のレジスタ120とが、別々の通信手段を用いるという他の装置を、直ちに、本発明の範囲から逸脱することなく用いることができる。
【００３８】
ディスパッチ・ユニット144a、144b、144c、144dは、電力の減少を達成するように、専用命令の受け取りおよび評価の、少なくとも一部をスイッチオフするように構成されることが好ましい。専用命令が、クロックサイクル数に関する情報を含む場合、ディスパッチ・ユニット144a、144b、144c、144dは、クロックサイクルをモニタすることによって自ユニットの再活性化を制御するための図示しない簡易な比較器回路により、拡張させることができる。これに代えて、制御ユニット148によって、ディスパッチ・ユニット144a、144b、144c、144dを再活性化させる制御を可能とするために、上記のクロックサイクル数に関する情報が提示されなければならない比較器回路により、制御ユニット148を拡張することができる。この情報は、複数のコンダクタ150を介して制御ユニット148に提供することができる。再活性化は、たとえば、データ通信バス142を介して、ディスパッチ・ユニット144a、144b、144c、144dに、再活性化信号を提供することによって達成させることができる。
【００３９】
専用命令は、ディスパッチ・ユニット144a、144b、144c、144dが結合されている実行ユニット160a、160b、160c、160dに対するアイドル状態の期間の始まりを示すので、関連する実行ユニット160a、160b、160c、160dをスイッチオフするように、ディスパッチ・ユニット144a、144b、144c、144dを構成することは、さらに電力を減少させる点からも好ましい。このことは、たとえば、関連する実行ユニット160a、160b、160c、160dにクロックゲート信号を提供する、または、非同期式アーキテクチャで、イネーブル信号を保留することによって行うことができる。ディスパッチ・ユニット144a、144b、144c、144の少なくとも一部がスイッチオフされている限り、関連する実行ユニット160a、160b、160c、160dのクロックは、ゲートで制御され、または、関連する実行ユニット160a、160b、160c、160dは、ハンドシェイク要求信号が欠如しているので停止し、実質上、実行ユニット160a、160b、160c、160dの機能を停止させる。ディスパッチ・ユニット144a、144b、144c、144dが、再び、再活性化されると即座に、関連する実行ユニット160a、160b、160c、160dの機能停止が解除され、かつ、関連する実行ユニット160a、160b、160c、160dが再活性化される。
【００４０】
オプションとして、制御ユニット148を、複数の実行ユニット160に対応させてもよい。これにより、実行ユニット160a、160b、160c、160dの、規定されていないアイドル状態の期間（たとえば、条件式の評価に従うアイドル状態の期間）の検出に基づく命令のリルートを容易にする。このことは、特に、条件式がループの終わりを示すために用いられるループ実行の間、好都合である。この条件が満たされると即座に、実行ユニット160a、160b、160c、160dは、複数のレジスタ120と複数のディスパッチ・ユニット144との間の元のルーティングを復元するために、制御ユニット148をトリガーする信号を、制御ユニット148に送る。典型的には、複数のレジスタ120の内容は、ブランチ命令が行われる場合と同様に、フラッシュされるであろう。このフラッシュは、複数のレジスタ120との図示しない接続を介して制御ユニット148、または、複数の実行ユニット160に対応する他のハードウェアの何れかによって制御させることができる。
この点で、本発明は、広範囲にわたるプロセッサ・アーキテクチャに適用することができることが、強調される。たとえば、本発明は、VLIWまたはマルチスレッディング・プロセッサと、シンクロナスまたはアシンクロナスアーキテクチャとに、組み込むことができる。そして、更なるアーキテクチャを容易に考えることができることは、当業者にとって明らかである。
【００４１】
つぎに、以下の各図が、図1の詳細な説明を参照して説明される。図1において導入された各参照番号は、明確に別のものとして述べられていない限り、以下の各図において同様のものを示すことを意味する。
【００４２】
図2には、プロセッサ100の他の好ましい実施例が示されている。図1において説明されたプロセッサ100に対して、データ通信バス142が、データ通信ネットワーク242に置き換えられた。データ通信ネットワーク242は、レジスタ120a、120b、120c、120dに結合され、かつ、制御ユニット148によって制御される、各々のデマルチプレクサ244a、244b、244c、244dを有する、複数のデマルチプレクサ244を備えている。さらに、データ通信ネットワーク242は、ディスパッチ・ノード144a、144b、144c、144dに結合され、かつ、制御ユニット148によって制御される、各々のマルチプレクサ246a、246b、246c、246dを有する、複数のマルチプレクサ246を備えている。各々のデマルチプレクサ244a、244b、244c、244dは、複数のマルチプレクサ246の全てのマルチプレクサ246a、246b、246c、246dに結合される。これにより、複数のレジスタファイル120と複数のディスパッチ・ノード144との間の完全な接続性が提供される。図2では、デマルチプレクサ244aから、複数のマルチプレクサ246の全てのマルチプレクサ246a、246b、246c、246dに対する接続だけが明確に示されると明記されている。これは、明りょうさだけの理由により行われており、複数のマルチプレクサ246の内の全てのマルチプレクサ246a、246b、246c、246dへのデマルチプレクサ244b、244c、244dの接続ミスを示唆するものではない。図1に図示された実施例との主要な相違点は、制御手段148が、個々のディスパッチ・ユニット144a、144b、144c、144dの各々に対して、レジスタ・アクセス情報を提供する必要がないということである。
【００４３】
制御ユニット148は、デマルチプレクサ244a、244b、244c、244dの各々と、マルチプレクサ246a、246b、246c、246dの各々とに、適切な制御信号を提供することによって、複数のレジスタ120と複数のディスパッチ・ユニット144との間のルートを、完全に制御する。制御ユニット148は、命令メモリからの複数レジスタ120に格納すべき新たな命令バンドルの取り込みについても制御することが好ましいと強調されている。その結果として、複数のデマルチプレクサ244に提供されるルーティング信号は、付随する複数のレジスタ120に対するアクセス・イネーブル信号として用いることができる。換言すれば、レジスタ120a、120b、120c、120dは、デマルチプレクサ244a、244b、244c、244dが、制御ユニット148からルーティング信号を受けるときに、アクセスされるだけになる。
【００４４】
図2では、複数のデマルチプレクサ244と、複数のマルチプレクサ246との双方が示されているが、いずれかを、データ通信ネットワーク242から割愛してもよいと強調されている。このことは、スループット性能を、容易に悪化に導く場合がある、残りの相互接続の容量性負荷に、大きい重荷をかけることになるので好ましくない。さらに、データ通信ネットワーク242の他の既知の実行を、本発明の教示から逸脱することなく、用いることができることは、当業者にとって明らかであろう。
【００４５】
図3には、プロセッサ100のようなプロセッサの命令の分配およびリルートに関する操作方法を記載する方法300のフローチャートが、示されている。最初のステップ310は、複数のレジスタ120のような命令供給源から、命令バンドルのような第1の複数の命令を取り込むことを備える。
【００４６】
次のステップ320は、複数の実行ユニット160に命令をディスパッチする前に、複数の命令の内の命令を評価することによって、専用命令の検出を扱う。このような命令の検出は、対応する実行ユニット160a、160b、160c、160dの不活性期間の信号を発生させる。これは、次に取り込まれる複数の命令のうちの少なくともいくつかの命令を、リルートすべきであることを意味する。
【００４７】
その結果、ステップ330では、分配手段140が再設定され、それにより、実行ユニット160a、160b、160c、160dが複数のレジスタ120に再接続され、つぎに、実行ユニット160a、160b、160c、160dの少なくともいくつかに対する命令が、別の記憶位置から生じる。ステップ330を、次に取り込まれる複数の命令ごとに、繰り返しを行う必要があるかもしれないことは、当業者によって理解されるであろう。このことは、図5の詳細な説明において、更に詳細に説明される。
【００４８】
図4には、圧縮されている命令バンドルを形成するためのコンパイル方法400が、開示されている。最初のステップ410では、複数の実行ユニット160の内の1つの実行ユニット160a、160b、160c、160dに命令をマッピングし、かつ、命令バンドルに命令をバンドルする。このステップは、通常、ソフトウェア・コード・モジュールの少なくとも一部のコンパイルが終了するまで、繰り返される。つづいて、ステップ420では、実行ユニット160による隣接する実行に対して、複数の何もしないという命令に対する命令バンドルの検索を扱う。このような複数の何もしないという命令は、所定の実行ユニットに対する延長された不活性期間を示し、これは、よりコンパクトなソフトウェア・コード・モジュールを生成する機会を提供する。
【００４９】
したがって、このような複数の何もしないという命令が検出されると、ステップ430では、複数の何もしないという命令の内の第1の何もしないという命令を、関連する実行ユニット160の不活性期間の始まりの信号を送っている専用命令により、置き換えることによって、複数の命令バンドルが、修正される。
【００５０】
オプションとして、ステップ430は、命令バンドルの中から何もしないという命令を除去する数、すなわち、実行ユニット160a、160b、160c、160dが不活性になるスケジューリングの数を示す専用命令を情報に追加する、または、実行ユニット160a、160b、160c、160dの不活性期間の発生を導くイベントについての専用命令を情報に追加することによって、たとえば、ブランチ命令または他の条件命令という、いくつかのステップによって拡張させることが出来る。
【００５１】
次のステップ440では、複数の何もしないという命令の内の残りの何もしないという命令が、複数の命令バンドルから除去され、続いて、再グループ化のステップ450によって、複数の命令バンドルが、各々の命令が固定されたサイズである、更に複数の命令バンドルに再設定される。ステップ420〜ステップ440は、実行ユニット160a、160b、160c、160dの延長された不活性期間に関連する、複数の何もしないという命令の全てが、実際にソフトウェア・コード・モジュールから除去されるまで、繰り返すことが出来るが、これは、ステップ440、ステップ450が、実行される（下記参照）前に、ステップ420、ステップ430を繰り返すことによって単一サイクルで行わせることが好ましい。ステップ450において形成される命令バンドルの少なくともいくつかの命令が、単一の実行ユニットに対する複数の命令を備えることができることは、当業者にとって明らかになるであろう。
【００５２】
このことは、図5において図示化されている。ここでは、図4に記載されているコンパイル方法400の例示的な実行が与えられている。したがって、図5では、図4の詳細な説明が参照される。ソフトウェア・コード・モジュール510は、プロセッサ100の実行のための5つの命令バンドル510a〜510eを含む。ソフトウェア・コード・モジュール510は、コンパイル方法400のステップ410において生成され、かつ実行ユニット160aの実行のために設定されている最も左の列と、実行ユニット160bの実行のために設定されている第2の列と、実行ユニット160cの実行のために設定されている第3列と、実行ユニット160dの実行のために設定されている最も右の列の、4列の命令を含む。2つの型の命令が、ソフトウェア・コード・モジュール510に存在している。一方は、INSx（xは、正整数）と標記されている有用な命令であり、他方は、NOPと標記されている何もしないという命令である。
【００５３】
ソフトウェア・コード・モジュール510は、実行ユニット160a、160b、160、160dによる、隣接する実行に対する複数の何にもしないという命令、つまり、命令バンドル510aの実行ユニット160cのためのNOP命令で始まる第1の命令、および、命令バンドル510cの実行ユニット160cのためのNOP命令で始まる第2の命令を含む。つぎに、コンパイル方法400のステップ420〜ステップ450の実行は、変更される命令バンドル520a〜520eから成る、中間のソフトウェア・コード・モジュール520をもたらす。実行ユニット160cのための第1の複数の何もしないという命令は、除去され、かつ、命令バンドル520aの単一の専用命令D.INSによって置き換えられる。その結果、命令の列は、もはやプロセッサ100でのそれらの意図する宛て先と一致せず、かつ挿入された専用命令D.INS.に基づいて、分配ユニット140によって再度スケジューリングされるべきであるが、ソフトウェア・コード・モジュール520の有用な命令の比重は、ソフトウェア・コード・モジュール510のそれより高くなる。次のステップにおいて、ステップ420〜ステップ440が、第2の複数の何もしないという命令を除去するために繰り返される。NOP命令が、単一の列にはもはや存在しないので、このことは、この状況ではより困難である。したがって、コード圧縮、すなわち、ステップ440、ステップ450が実行される前に、ステップ420、ステップ430が、目標とされる複数の何もしないという命令の全てが見つかるまで、繰返されることが好ましい。
【００５４】
第2の複数の何もしないという命令の削除、および次のコード圧縮により、命令バンドル530a〜530dから成るソフトウェア・コード・モジュール530を生ずる。命令バンドル530dも、適切なサイズを有する点に留意すべきである。すなわち、最も右の列の3つの点は、ここに位置する命令が、何もしないという命令、有用な命令、または専用命令のいずれかの命令になり得るということを単に示すだけである。命令バンドル530a〜530dが、各々、単一の実行ユニット160a、160b、160c、160dのための複数の命令を含むことは、当業者にとって明らかであろう。したがって、結合手段142、242の再設定は、単一の命令バンドルの全ての適切な命令を実現するために、通常、数回実行されなければならない。換言すると、単一の専用命令を検出は、一般的に、分配手段140による、多数の再設定をもたらす。
【００５５】
上述した実施例は、本発明を制限するものではなく明示するのであり、かつ当業者が、添付の請求項の範囲内で別の多くの実施例を設計することが可能であることは、留意すべきである。請求項において、括弧の間に配置されているいかなる引用符号も、請求項を制限するものと解釈すべきではない。「備える」という語は、請求項に示されていない要素またはステップの存在を除外するものではない。ある要素の前の「1つの」という語は、そのような要素が複数存在することを除外するものではない。本発明は、複数の別個の要素を備えるハードウェアと、適切にプログラムされたコンピュータとによって、実現可能である。複数の手段を列挙しているデバイスに関する請求項の場合、これらの手段の幾つかを、同一のハードウェア部材によって実施することも可能である。ある方策が、相互に別々の従属請求項において引用されている事実のみによって、これらの方策の組み合わせが、効果のある使用にはなり得ないと言うことを示すことはない。
【図面の簡単な説明】
【００５６】
【図１】本発明のプロセッサの一部の実施例を示す。
【図２】本発明のプロセッサの一部の他の実施例を示す。
【図３】本発明の分配方法のフローチャートを示す。
【図４】本発明のコンパイル方法のフローチャートを示す。
【図５】本発明のコンパイル方法によって生成される複数の命令バンドルの例を記載する。
【符号の説明】
【００５７】
100  プロセッサ
110  更なるデータ通信バス
120  複数のレジスタ
120a、120b、120c、120d  レジスタ
140  分配ユニット
142  データ通信バス
144  複数のディスパッチ・ユニット
144a、144b、144c、144d  ディスパッチ・ユニット
146  複数の評価装置
148  制御ユニット
150  複数のコンダクタ
160  複数の実行ユニット
160a、160b、160c、160d  実行ユニット
242  データ通信ネットワーク
244  複数のデマルチプレクサ
244a、244b、244c、244d  デマルチプレクサ
246a、246b、246c、246d  マルチプレクサ
246  複数のマルチプレクサ
【図１】
2005510792.tif 000003
【図２】
2005510792.tif 000004
【図３】
2005510792.tif 000005
【図４】
2005510792.tif 000006
【図５】
2005510792.tif 000007
【国際調査報告】
2005510792.tif 000008
2005510792.tif 000009
2005510792.tif 000010
2005510792.tif 000011
2005510792.tif 000012