(57)【要約】命令処理装置は、命令からのコマンドを実行するための機能ユニットを備えるパイプラインステージを有している。第１のレジスタユニットは、機能ユニットに結合され、コマンドがパイプラインステージのうちの第１のパイプラインステージに達した際にコマンドの実行の結果を記憶するとともに、機能ユニットに対してバイパスオペランドデータを供給する。レジスタファイルは、機能ユニットに結合され、第１のパイプラインステージよりも下流側にある第２のパイプラインステージにコマンドが達した際に結果を記憶するとともに、機能ユニットに対してオペランドデータを供給する。無効回路は、命令の制御下でレジスタファイル内の結果の記憶を選択的に無効にするように結合されている。
2006522398.tif 000002
【特許請求の範囲】
【請求項１】
連続する命令を発行するための命令発行ユニットと、
前記命令発行ユニットに結合された複数のパイプラインステージであって、そのうちの少なくとも１つが、前記命令からのコマンドを実行するための機能ユニットを備えている複数のパイプラインステージと、
前記機能ユニットに結合され、前記コマンドが前記パイプラインステージのうちの第１のパイプラインステージに達した際に前記コマンドの実行の結果を格納するとともに、前記第１のパイプラインステージに先立つ１つのパイプラインステージにおける回路に対してバイパスオペランドデータを供給する第１のレジスタユニットと、
前記機能ユニットに結合され、前記第１のパイプラインステージよりも下流側にある第２のパイプラインステージに前記コマンドが達した際に前記結果を格納するとともに、前記機能ユニットに対してオペランドデータを供給する第２のレジスタユニットと、
前記命令の制御下で前記第２のレジスタユニット内の結果の格納を選択的に無効にするように結合された無効回路と、
を備えている、命令処理装置。
【請求項２】
前記第１および第２のレジスタユニットはそれぞれ、複数のレジスタおよびアドレス指定回路を備え、前記アドレス指定回路は、前記コマンドからのレジスタアドレスを用いて選択的にアドレス指定するとともに、前記結果を格納するためのレジスタを選択しおよび／またはオペランドデータを検索する、請求項１に記載の命令処理装置。
【請求項３】
前記第１のレジスタユニットは、前記第２のレジスタユニットよりも少ないレジスタを有している、請求項２に記載の命令処理装置。
【請求項４】
前記無効回路は、前記第２のレジスタユニットの書き込みポートから前記第２のレジスタユニットのレジスタへ前記結果を書き込むための回路に対するクロック信号の供給を抑えるようになっている請求項２に記載の命令処理装置。
【請求項５】
命令からの各コマンドを並行して実行するようにアレンジされた複数の機能ユニットを備え、前記第２のレジスタユニットは、前記機能ユニットのうちの対応する機能ユニットからの前記結果を書き込むための複数の書き込みポートを有し、前記無効回路は、前記命令の制御下で選択される所定の書き込みポートでの書き込みを無効にするようにアレンジされた、請求項３に記載の命令処理装置。
【請求項６】
前記コマンドのうちの第１のコマンドからの前記結果のための結果レジスタアドレスと、前記コマンドのうちの第１のコマンドに直接的または間接的に続く前記コマンドのうちの第２のコマンドからのオペランドレジスタアドレスとを比較するとともに、アドレスが一致する場合には、前記結果を含む前記第１の前記レジスタユニットの前記レジスタからの結果を、前記第２のレジスタユニットからのオペランドの代わりに用いるようになっているバイパス制御ユニットを備えている、請求項２に記載の命令処理装置。
【請求項７】
前記第１のレジスタユニットは、バイパスオペランドデータを供給するためのレジスタの連鎖を備え、このレジスタの連鎖は、前記ステージのうちの第１のステージの結果出力部に結合された入力部を有する１つのシフトレジスタとして設けられるとともに、連続的な命令サイクルにおいて連続的なシフトレジスタステージを介して結果をシフトするように動作し、少なくとも前記第２のレジスタユニット内の結果の記憶が無効にされる場合、前記連鎖は、前記第２のレジスタユニットへの結果の書き込みに必要な大きさを超えて延びる、請求項１に記載の命令処理装置。
【請求項８】
前記連鎖中のレジスタは、コマンドからアドレス可能である、請求項７に記載の命令処理装置。
【請求項９】
命令からの各コマンドを並行して実行するようにアレンジされている複数の機能ユニットを備え、前記第１のレジスタユニットは対応するレジスタ群を備え、レジスタ群の各レジスタは、複数の機能ユニットのうちの対応する１つの機能ユニットのみからの結果を格納し、全てのレジスタ群のレジスタは、オペランドを検索するためにコマンドからアドレス可能である、請求項２に記載の命令処理装置。
【請求項１０】
命令プロセッサにおいて命令のプログラムを実行する方法であって、
命令からのコマンドの実行をパイプラインで送るステップと、
命令が無い場合には、コマンドの結果をレジスタファイルに格納するステップと、
命令が無い場合には、コマンドのレジスタソースオペランドをレジスタファイルから検索するステップと、
レジスタファイルからの少なくとも１つのレジスタソースオペランドの代わりに、バイパスオペランドとしてパイプラインステージからバイパスされた第１の結果を選択的に使用するステップと、
プログラム制御下で、レジスタファイルに対する前記第１の結果の書き込みを選択的に抑制するステップと、
を備える方法。
【請求項１１】
パイプライン送り中にレジスタファイルよりも先に結果を受けるように配置された複数のバイパスレジスタのうちのアドレス可能なバイパスレジスタへ前記第１の結果を書き込むステップを備える、請求項１０に記載の方法。
【請求項１２】
請求項１０または１１に記載の方法を実施する命令プロセッサのための命令を備える、コンピュータプログラムプロダクト。
【請求項１３】
命令プロセッサのための命令のプログラムをコンパイルする方法であって、
一連の命令を生成するステップと、
前記命令のうちの第１の命令によって生成される結果を検出する第１の検出ステップであって、前記結果がオペランドとして前記命令のうちの第２の命令により使用される第１の検出ステップと、
レジスタファイルから前記結果を検索することなく、前記命令のうちの全ての第２の命令のためにオペランドとして前記命令プロセッサにおいて前記結果をバイパスできることを保証できるかどうかを検出する第２の検出ステップと、
前記命令のうちの全ての第２の命令のために前記命令プロセッサにおいてオペランドとして前記結果をバイパスできることを保証できる場合には、前記レジスタファイルへの書き込みを無効にするために前記命令において情報を生成するステップと、
を含む方法。
【請求項１４】
複数のバイパスレジスタに対する結果の書き込みおよび／または読み取り時にアドレス可能な前記複数のバイパスレジスタのうちの１つに前記結果を格納しなければならないという指示を前記命令中に含ませるステップを含む、請求項１２に記載の方法。
【請求項１５】
請求項１３または１４に記載の方法を実施する命令プロセッサのための命令を備える、コンピュータプログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パイプライン型機能ユニットを有する命令処理装置に関する。
【背景技術】
【０００２】
データ従属性は、命令プロセッサのスループットに関して著しい制限を課す。命令プロセッサは、入力オペランドを必要とする連続的な演算を実行するとともに、結果を生成する。オペランドは、一般に、レジスタファイル内に格納されるとともに、このレジスタファイルから、命令中のコマンドからのオペランドアドレスを使用して検索される。この結果は、コマンドの結果アドレスを使用してレジスタファイル内に記憶される。そのオペランドがレジスタファイルから検索されると、オペランドが先の命令によってレジスタファイル内に格納されるまでコマンドを実行することができない。したがって、コマンド間で最小限の遅れが必要となる。これにより、プロセッサの効率が低下する。ＶＬＩＷプロセッサにおいては、例えば、十分なオペランドを利用できないことから、幾つかの命令サイクルにおいて、機能ユニットのためにノーオペレーションがスケジュールされなければならない場合がある。
【０００３】
米国特許第５，８０５，８５２号は、結果が生成される機能ユニットのパイプラインステージとオペランドが使用されるパイプラインステージと間のバイパスによりＶＬＩＷプロセッサを効率良くすることができる方法について記載している。このバイパスにより、結果をレジスタファイル内に記憶し且つそれをオペランドとしてレジスタファイルから検索するために必要な遅れを伴うことなく、その後の命令のためのオペランドとして結果を利用することができるようになる。
【０００４】
パイプライン演算中、機能ユニットは、最初に、パイプラインの実行ステージで結果を生成するとともに、その結果を実行ステージの後にあるパイプラインレジスタ内に記憶する。その後、機能ユニットは、結果がレジスタファイル内に記憶されるまで、結果をパイプラインを介して伝える。新たなコマンドが機能ユニットのうちの１つのパイプラインに入ると、そのオペランドアドレスは、複数の機能ユニットのうちの対応する機能ユニットのパイプライン中に依然としてある結果のアドレスと比較される。アドレス同士が一致すると、レジスタファイルからではなく、関連する機能ユニットのパイプラインステージからオペランドが取得される。
【０００５】
近年、レジスタファイルのサイズが増大する傾向にある。大きなレジスタファイルは、再使用のためにレジスタが利用可能になるまで待つ必要が滅多になく、あるいは、オペランドをメモリに流す必要が滅多にないことから、高速実行できるという利点を有している。大きなレジスタファイルは、電力消費量の増大をもたらす。今日、レジスタファイルは、多くの場合、ＶＬＩＷプロセッサにおいて電力消費量が大きい。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特に、本発明の目的は、命令処理装置のレジスタファイルに起因する電力消費量を低減することである。
【課題を解決するための手段】
【０００７】
本発明に係る命令処理装置が請求項１に記載されている。本発明は、バイパス経路を介してのみ結果が使用されるため、レジスタファイルから結果を検索する必要がない場合にレジスタファイルに結果を書き込まないことにより電力を節約できるという所見に基づいている。命令の実行前、例えば命令のコンパイル中、演算の結果がバイパス以外を介して使用されないようにすることが可能であるかどうかを決定することができる。可能である場合には、結果のバイパスで十分であり、レジスタファイル内に結果を記憶する必要がない。この場合、レジスタファイル内への記憶を無効にすることにより、電力消費量が低減される。
【０００８】
一実施形態において、命令処理装置は、結果を記憶するためのレジスタを選択するためおよび／またはオペランドデータを検索するために、コマンドからのレジスタアドレスを用いて選択的にアドレス可能な複数のバイパスレジスタを有している。したがって、レジスタファイルに対する頻繁な書き込みを回避することが可能になる。一般に、命令サイクルの持続時間を遅らせないように、バイパスレジスタはレジスタファイル内のレジスタほど離れていない。結果は、それがレジスタファイルに書き込まれる前に、パイプラインステージのバイパスレジスタに書き込まれる。
【０００９】
一実施形態においては、レジスタファイル内に結果を書き込むための回路に対するクロック信号の供給を抑制することにより、結果の書き込みが無効にされる。レジスタファイルが多くの書き込みポートを有している場合、書き込みは、命令の制御下で選択される所定の書き込みポートで無効にされる。
【００１０】
好ましくは、バイパスは、コマンドからの結果レジスタアドレスと後のコマンドのオペランドレジスタアドレスとを比較してアドレスが一致する場合にバイパス経路からの結果を代用するバイパス制御ユニットによって制御される。したがって、バイパスされた結果のために特定のアドレスは必要ない。他の実施形態において、命令は、異なるバイパスレジスタ同士の間で選択するためのアドレスを含んでいる。
【００１１】
一実施形態においては、バイパスオペランドデータを供給するためにレジスタの連鎖が設けられている。結果は、連続する命令サイクルにおいて、上記連鎖中のバイパスレジスタを介してシフトする。上記連鎖は、第２のレジスタユニットへの結果の書き込みに必要な大きさを超えて延びている。レジスタファイルへ結果を書き込むための電力消費を避けることが更に可能となる。上記連鎖中のレジスタからのバイパスデータは、オペランドアドレスと結果レジスタアドレスとを比較することにより、あるいは、命令からの明示的なレジスタ選択情報を使用することにより選択されても良い。後者によれば、バイパス制御回路が簡単になる。
【００１２】
本発明は、並行して動作する複数の機能ユニットを有するＶＬＩＷプロセッサ等のプロセッサに対して有利に適用できる。そのようなプロセッサは、より多くの機能ユニットが並行して動作するため、益々大きなレジスタファイルを必要とする。レジスタファイルへの書き込みを抑制することにより、電力消費量がかなり節約される。各バイパスレジスタが複数の機能ユニットのうちの対応する１つの機能ユニットのみからの結果を記憶するバイパスレジスタ群が設けられることが好ましい。全てのレジスタ群のレジスタは、オペランドを検索するために各コマンドからアドレス可能である
また、本発明は、プログラムをコンパイルする方法に関する。この方法において、レジスタファイルへの書き込みを抑制するための状態が検出され、その後、そのような書き込みを抑制するための情報が命令中に加えられる。検出は、バイパス経路を介して命令の結果を送ることができるかどうか（これは、主に、生成直後に十分に使用される事柄である）、また、これらの結果を後に使用できないようにすることが可能か（例えば、命令を走査して、結果を含むレジスタが上書きされる前またはプログラムの終了前に任意のその後の到達可能な命令中で結果が再び使用されないかどうかを検出することにより）どうかを検査することを含んでいる。そのような方法を実行するためのコンピュータプログラムは、磁気ディスクや光ディスク、半導体メモリモジュール、ダウンロード信号等の任意のコンピュータプログラムプロダクトによって送られても良い。
【００１３】
以下、図面を参照しながら、これらの目的、他の目的、本発明の有利な態様について説明する。
【発明を実施するための最良の形態】
【００１４】
図１は、簡単なパイプライン型ＶＬＩＷプロセッサの一例を示している。このプロセッサは、命令メモリ１０と、プログラムカウンタ１０ａと、命令レジスタ１１と、実行ユニット１２と、レジスタファイル１４と、バイパス制御ユニット１６とを有している。一例として、２つの実行ユニット１２が並列に示されているが、実際には、更に多くの実行ユニットが使用されても良い。各実行ユニットは、一群の機能ユニット（図示せず）を有していても良く、あるいは、それ自体が１つの機能ユニットであっても良い。命令レジスタ１１は、１つの命令からの複数のコマンドのための出力部を有し、各コマンドは、複数の実行ユニット１２のうちの対応する１つの実行ユニットのためのものである。各コマンドは、演算コード（オプコード）のための部分と、オペランドレジスタアドレスのための部分と、結果レジスタアドレスのための部分とを含んでいる。コマンドのオペランドレジスタアドレス部分のための命令レジスタ１１の出力部は、レジスタファイル１４の読み取りポートに対して結合されるとともに、バイパス制御ユニット１６のオペランドレジスタアドレス入力部に対して結合されている。通常、各コマンドは、２つのオペランドアドレスを含んでいるが、明確のため、１つのオペランド（アドレス）のためだけの接続が示されている。乗加算等の演算のためには、３つ以上のオペランドも可能である。
【００１５】
プロセッサは、パイプラインレジスタによって分離される連続する複数のパイプラインステージに分割される。各実行ユニット１２毎に、プロセッサは、命令レジスタ１１と実行ユニット１２との間に第１ステージパイプラインレジスタ１２０，１２２，１２４およびマルチプレクサ１２３を有している。第１ステージパイプラインレジスタのうちの第１のパイプラインレジスタ１２４は、実行ユニット１２のためのコマンドの演算コード部分を記憶する。第１ステージパイプラインレジスタのうちの第２のパイプラインレジスタ１２２は、実行ユニット１２のためのコマンドのオペランドを記憶する。第１ステージパイプラインレジスタのうちの第３のパイプラインレジスタ１２０は、実行ユニット１２のためのコマンドの結果アドレスおよび書き込み制御情報を記憶する。第１ステージパイプラインレジスタのうちの第１のパイプラインレジスタ１２４は、実行ユニット１２のためのコマンドの演算コード部分のための命令レジスタ１１の出力部に結合された入力部を有している。第１ステージパイプラインレジスタのうちの第３のパイプラインレジスタ１２０は、実行ユニット１２のためのコマンドの結果アドレス部分のための命令レジスタ１１の出力部に結合された入力部を有している。
【００１６】
第１ステージパイプラインレジスタのうちの第２のパイプラインレジスタ１２２は、実行ユニット１２のためのコマンドのオペランドアドレス部分が供給されるレジスタファイル１４の読み取りポートに対しマルチプレクサ１２３を介して結合された入力部を有している。基本的には、実行ユニットのためのコマンドの複数のオペランドのうちの対応する各オペランド毎に同様の接続を有する第１ステージパイプラインレジスタのうちの対応する第２のパイプラインレジスタ１２２および対応するマルチプレクサ１２３が存在するが、明確のため、１つのマルチプレクサ１２３および第１ステージパイプラインレジスタのうちの１つの第２のパイプラインレジスタ１２２だけが示されている。
【００１７】
第２ステージパイプラインレジスタ１２６，１２８は、実行ユニット１２の後側に設けられている。第２ステージパイプラインレジスタのうちの第１のパイプラインレジスタ１２６は、コマンドの結果レジスタアドレス部分および書き込み制御情報を受けるために、第１ステージパイプラインレジスタのうちの第３のパイプラインレジスタ１２４に対して結合されている。第２ステージパイプラインレジスタのうちの第２のパイプラインレジスタ１２８は、実行ユニット１２の結果出力部に対して結合されている。第２ステージパイプラインレジスタのうちの第１および第２のパイプラインレジスタ１２６，１２８は、結果および対応する結果レジスタアドレス並びに書き込み制御情報を供給するため、レジスタファイルの１４の書き込みポートに対して結合されている。
【００１８】
マルチプレクサ１２３はそれぞれ、レジスタファイル１４の読み取りポートからアドレス指定されたオペランドを受けるように且つ第２ステージバイパスレジスタのうちの第２のレジスタ１２８からバイパス経路１５を介してバイパスオペランドを受けるように結合された入力部を有している。第１ステージレジスタのうちの第３のレジスタ１２４および第２ステージレジスタのうちの第１のレジスタ１２６は、オペランドレジスタアドレスおよび結果アドレスをバイパス制御ユニット１６に対してそれぞれ送る。バイパス制御ユニット１６は、マルチプレクサ１２３を制御して、それらの入力のうちのどれが第１ステージパイプラインレジスタのうちの第２のパイプラインレジスタ１２２に対して結合されるのかを決定する。
【００１９】
演算において、プログラムカウンタ１０ａは、一連の命令アドレスを命令メモリ１０に対して供給する。各命令アドレスに応答して、命令メモリは、対応する命令を命令レジスタ１１に対して供給する。各命令は、複数の実行ユニット１２のためのコマンドを含んでいる。コマンドは、コマンドの１または複数のオペランドのオペランドレジスタアドレスを含んでいても良い。オペランドレジスタアドレスは、レジスタファイル１４の読み取りポートに対して供給される。応答時、レジスタファイル１４は、アドレス指定されたオペランドを読み取りポートから供給する。通常、オペランドは、対応するコマンドの（随意的にデコードされた）演算コード部分と共に関連する実行ユニット１２に対して供給される。実行ユニット１２は、オペランドを使用してコマンドを実行するとともに、１つの結果を生成する。例えば「ＡＤＤ」コマンドの場合、２つのオペランドが使用され、それらの合計が結果として生成される。その結果は、コマンドからの結果レジスタアドレスと共に、レジスタファイル１４の書き込みポートに対して供給される。
【００２０】
コマンド実行はパイプラインで送られる。これにより、ほぼ全ての命令サイクルで新たな命令が始まるとともに、命令の実行の連続するステップが、連続する命令サイクルで実行される。例えば、第１の命令サイクルにおいては、命令メモリがアドレス指定され、第２の命令サイクルにおいては、オペランドがフェッチされ（取り出され）、第３の命令サイクルにおいては、コマンドが実行ユニット１２によって適切に実行され、その後の命令サイクルでは、結果がレジスタファイル１４に対して書き込まれる。このように、命令の実行は、多くの命令サイクルを要する。連続する各命令サイクルで命令を実行するプロセッサの対応する部分は、パイプラインステージと呼ばれる。特定の命令サイクルにおいて、異なるパイプラインステージは、異なる実行ステージにおいて、異なる命令を処理する。処理下で異なる命令の情報を分けるため、パイプラインレジスタによって異なるパイプランステージが分けられる。命令サイクルは、先行するパイプラインステージから各命令サイクルの最後のパイプラインレジスタへの情報の横取りを制御するクロック（図示せず）によって表わされる。
【００２１】
パイプライン型プロセッサはそれ自体知られている。言うまでも無く、図面は、１つの簡単な実施形態を示しているにすぎない。本発明から逸脱することなく、様々なパイプラインステージにわたって様々なタスクが様々に分配される多くの他のパイプライン型アーキテクチャが使用されても良く、また、更なるパイプラインステージが加えられても良い。
【００２２】
バイパス経路１５は、命令のオペランドがレジスタファイル１４内に格納されるまで命令の実行を伴って待つ必要性を減少させるのに役立つ。第１の命令が第２の命令によりオペランドとして使用される結果を生成する場合、その結果は、当該結果がレジスタファイル１４に対して書き込まれる前にバイパス経路１５を介して実行ユニット１２に送ることができる。バイパス制御ユニット１６は、第２の命令のオペランドレジスタアドレスと、第１の命令の結果レジスタアドレスとを比較する。これらが一致すると、バイパス制御ユニット１６は、マルチプレクサ１２３を制御して、レジスタファイル１４からの結果の代わりにパイプラインレジスタ１２２からの結果を送る。これにより、第２の命令をより早く実行することができるようになる。
【００２３】
バイパスそれ自体は知られている。多くの形式のバイパスが存在し、また、図１に示される形式が単なる一例にすぎず、本発明がこの一例に限定されないことは言うまでもない。例えば、バイパスのために使用される結果は、図示のパイプラインステージとは異なるパイプラインステージから来ても良く（例えば、実行ユニット１２から第１ステージパイプラインレジスタ１２２に対して直接に送られても良く、あるいは、後のステージ（図示せず）から来ても良い）、あるいは、複数のパイプラインステージから来ても良い。これに伴って、結果レジスタアドレスが、図示のステージとは異なるステージから来ても良い。そのようなアドレスまたは比較結果は、同様に比較をパイプラインで送るため、バイパス制御ユニット１６内に記憶されても良い。更に、バイパスが使用されるべきか否かを示すためのコードが命令中に存在していても良い。これにより、命令がレジスタファイル１４からの「古い」値を使用しなければならない場合には、バイパスを避けることができる。
【００２４】
本発明においては、命令の制御下で、レジスタファイル１４に対する結果のライトバックを無効にすることができる。これは、結果がバイパス経路１５を介してのみ使用されレジスタファイル１４から使用されない場合に行なわれる。命令のプログラムのコンパイル中、（適切な場合には、分岐命令を介して）追随可能な各実行経路毎に結果を使用するプログラムの保証された最後の命令が決定される。実際には、実行中においては、幾つかの実行経路に決して達し得ないが、これを幾つかの経路におけるコンパイル時に判明できない場合には、その経路が追随する場合に結果を使用する最後の命令が決定されなければならないことは言うまでもない。決定された任意の最後の命令が、それがバイパスを介して結果を受けることができるという結果を生成する命令の後直ぐに実行されるようにスケジュールされる場合、コンパイラは、結果を生成する命令に対して無効情報を加える。これは、命令をレジスタファイル１４内に記憶する必要がないことを示している。無効情報は、レジスタファイル１４内の結果の記憶を無効にするため、結果レジスタアドレスと共にパイプラインを伝わってレジスタファイル１４へと送られる。
【００２５】
図２は、複数の読み取りポート２８を有するマルチポートレジスタ２０を備えるマルチポートレジスタファイルの一例を示している。結果データおよびレジスタ選択信号をそれぞれ供給するために、マルチポートレジスタ２０にはデータ供給回路２２およびアドレス指定回路２４が結合されている。データ供給回路２２は、結果のための入力部ＲＥＳ１，ＲＥＳ２を有している。アドレス指定回路２４は、結果レジスタアドレスのための入力部ＡＤＤＲ１，ＡＤＤＲ２を有している。クロックイネーブル回路２６は、クロック入力部ＣＬＫとデータ供給回路２２およびアドレス指定回路２４のクロック端子との間に結合されている。クロックイネーブル回路２６は、無効入力ＤＩＳ１，ＤＩＳ２の制御下でデータ供給回路２２およびアドレス指定回路２４へのクロック信号の供給を無効にするために使用される。
【００２６】
動作時、クロックイネーブル回路２６からのクロックパルスにより、データ供給回路２２およびアドレス指定回路２４は、マルチポートレジスタ２０に対する新たなデータおよび選択信号の供給をドライブする。クロック信号の供給を選択的に無効にして、プログラム中の結果を更に使用しないことが決定されたということに関する結果を供給するポートＲＥＳ１，ＡＤＤＲ１，ＲＥＳ２，ＡＤＤＲ２からのデータおよびアドレスを使用するために、命令からの情報が無効入力ＤＩＳ１，ＤＩＳ２に対して供給される。その結果、データ供給回路２２およびアドレス指定回路２４による電力消費量が減少される。
【００２７】
マルチポートレジスタファイルがそれ自体知られていることは言うまでもない。本発明から逸脱することなく、多くの他のアーキテクチャが使用されても良い。本発明において、レジスタファイルは、レジスタファイルの選択された部分を無効にするために設けられている。データ供給回路２２およびアドレス指定回路の両方を無効にする代わりに、これらの回路の一方だけが無効にされても良く、および／または、レジスタ内容を更新するべく駆動される際に電力を消費する任意の他の回路が無効にされても良い。
【００２８】
図１は、結果のための無効情報が、例えばコマンドからの更なるビットの形態で、コマンドの結果レジスタアドレスと共に送られる態様を示している。これにより、結果の書き込みを無効にするために、プロセッサの変更は最小限で済む。しかしながら、選択的な無効を示すために、多くの他の解決策が存在することは言うまでもない。例えば無効が許容される命令中における１または複数のコマンドの位置をエンコードすることにより、例えば、個々のコマンドのレベルではなく、命令のレベルで、情報が含められても良い。実際には、関連するコマンドと同じ命令中に無効情報が含められる必要はない。その代わり、コマンドに対して所定のパイプライン遅延で実行されることが分かっている先の命令または後の命令中に無効情報が含められても良い。同様に、無効にするための情報は、レジスタファイル１４の書き込みポートの無効入力に対する最終的な供給のためにそれがパイプラインの任意の場所でデコードされても良いコマンドの演算コード中に含められても良い。更なる他の実施形態においては、無効を制御するための情報がオペランドレジスタから供給されても良い。この実施形態において、アドレス指定されたオペランドレジスタからのデータは、無効を制御するため、パイプラインステージに沿ってレジスタファイル１４へと送られる。
【００２９】
各実行ユニット毎に１つの結果レジスタ１２６しか示されていないが、本発明がそのような１つのレジスタに限定されないことは言うまでもない。
【００３０】
図３は、複数の結果レジスタ３２を有するプロセッサの一部を示している。実行ユニット１２においては、２つのオペランド入力部が示されている。実行ユニット１２の結果出力部は、多数の更なる結果レジスタ３２と並列の結果レジスタ１２８に対して結合されている。結果レジスタ１２８は、パイプラインの更に下流側の回路（図示せず）に対して結合されている。レジスタ選択ユニット３０は、第１ステージ結果レジスタアドレスレジスタ１２４に結合された入力部と、更なる結果レジスタ３２の選択入力部に結合された選択出力部とを有している。更なる結果レジスタ１２８の出力部は、オペランド選択ユニット３４の入力部に結合されており、オペランド選択ユニット３４は、マルチプレクサ１２３に対して結合された出力部を有している。
【００３１】
動作時、プロセッサは、選択された結果を、複数の更なるレジスタ３２のうちの選択されたレジスタ内に記憶する。第１ステージ結果レジスタアドレスレジスタ１２０は、レジスタファイル１４への書き込みを無効にするために、結果レジスタアドレスおよび無効情報を受ける。レジスタファイル１４への書き込みが無効にされることを無効情報が示すと、レジスタ選択ユニット３０が使用可能にされる。この場合、レジスタ選択ユニット３０は、結果レジスタアドレスの一部を使用して、複数の更なる結果レジスタ３２のうちの１つを選択する。実行ユニット１２からの結果は、選択された更なる結果レジスタ３２へ書き込まれる。その後、更なる結果レジスタ３２からの結果をオペランドとして使用しなければならないことを示すオペランドアドレスが受けられると、バイパス制御ユニット１６は、オペランド選択ユニット３４に対して信号を送り、オペランドアドレスに基づいて、複数の更なる結果レジスタ３２のうちの１つの出力を選択する。その後、結果は、オペランド選択ユニット３４からマルチプレクサ１２３を介してオペランドとして実行ユニット１２へ送られる。
【００３２】
更なる結果レジスタ３２の数がレジスタファイル１４内のレジスタの数よりも十分少ないことは言うまでもない。これにより、大きな時間的不利益を伴うことなく、これらの更なる結果レジスタ３２を、実行ユニット１２を有するパイプラインステージの最後に含めることができる。したがって、通常において結果がレジスタファイル１４内に記憶されるパイプラインステージよりも先のパイプラインステージに限られた数の結果を記憶することができる。これらの結果は、レジスタファイル１４から利用可能となるかなり前に、更なる結果レジスタ３２からオペランドとして利用可能となる。
【００３３】
また、図３が更なる結果レジスタ３２の使用方法の単なる一例にすぎないことは言うまでもない。多くの代案を考えることができる。例えば、更なる結果レジスタ３２は、その後のパイプラインステージすなわち次の結果レジスタ１２８中に含められても良く、あるいは、複数のパイプラインステージ中に含められても良い。前者は、例えば更なる結果レジスタを実行ステージに含ませることにより命令サイクルの持続時間の延長が必要になる場合であっても良い。異なる複数の実行ユニット１２が同時に使用される場合には、更なる結果レジスタ３２の異なる組が異なるパイプラインステージに含められても良い。他の例として、結果レジスタ３２の選択が異なって行なわれても良い。例えば、更なる結果レジスタを選択するために、専用のアドレス部分が命令中に含められても良く、あるいは、逆に、更なるレジスタ３２を選択するために、レジスタファイル１４の物理レジスタをアドレス指定しないレジスタアドレス値が使用されても良い。他の例として、更なる結果レジスタ３２を使用するのか否かを選択するために、モードレジスタが使用されても良い。また、選択情報は、結果レジスタアドレスフィールドから来る代わりに、コマンドの演算コードの一部であっても良い。
【００３４】
同様に、レジスタファイル１４からのデータの代わりに更なる結果レジスタ３２からの結果を使用するべき時期を決定することに関しては、様々な解決策が考えられる。一実施形態において、オペランドアドレスは、更なる結果レジスタ３２からの結果を使用すべきことを示すための特定の指示を含んでいる。
【００３５】
図４は、アドレスマッチング（アドレスの一致）が使用される他の実施形態を示している。更なる結果レジスタ３２のそれぞれにおいては、更なる結果レジスタ３２内に記憶された結果のための結果レジスタアドレスを記憶する対応するレジスタアドレスレジスタ４０が設けられている。バイパス制御ユニットは、オペランドレジスタアドレスと、レジスタアドレスレジスタからの結果レジスタアドレスとを比較する。これらが一致すると、更なる結果レジスタ３２からの結果をレジスタファイル１４からのオペランドデータの代わりに用いるため、バイパス制御ユニット１６は、オペランド選択ユニット３４およびマルチプレクサ１２３（図３に示されている）に信号を送る。また、バイパス制御ユニット１６は、パイプラインレジスタ１２４からの結果レジスタアドレスと、レジスタアドレスレジスタ４０からの記憶された結果レジスタアドレスとを比較し、レジスタアドレスレジスタ４０がコマンドで特定されたレジスタアドレスを含んでいる場合にはレジスタアドレスレジスタ４０をリセットする。したがって、そのレジスタアドレスのためにレジスタファイル１４からの結果を後に使用できる（無論、新たな結果が後に更なる結果レジスタ３２内に記憶される場合を除く）。更なる結果レジスタ３２がレジスタアドレスレジスタ４０と共に簡単な連想メモリの一実施形態を形成することは言うまでもない。代案として、他のタイプの連想メモリが使用されても良い。
【００３６】
以上の説明では、特定の結果を記憶するために更なる結果レジスタ３２のうちのどれを使用すべきかを示すための情報を命令が含んでいることを前提としてきたが、これに代えて、特定の結果およびその結果レジスタアドレスを更なる結果レジスタ３２のうちの１つおよびその対応する更なる結果レジスタアドレスレジスタ４０に記憶しなければならないこと、また、随意的に、幾つの命令サイクルに関して結果を記憶しなければならない或いは結果を何回読み取らなければならないことを示すだけで十分であることは言うまでもない。この場合、更なる結果レジスタ３２のうちの任意の空いている結果レジスタに対して結果を割り当てるために、自動レジスタ割り当てユニットが設けられても良い（更なるレジスタは、所定数の命令サイクル（あるいは、随意的に、プログラム数）後に空きレジスタとして記録されても良い）。有益ではあるが、更なる結果レジスタアドレスレジスタ４０は、このために必ずしも必要ではない。すなわち、コンパイル時に、更なる結果レジスタ３２のうちのどれが使用されるのかを予測することができるとともに、その更なる結果レジスタ３２のための選択アドレスがオペランド仕様中に含まれていても良い。
【００３７】
明確のため、図３および図４には、１つの実行ユニット１２だけしか示されていないが、実際には、命令からの様々なコマンドを実行するために複数の実行ユニット１２が同時に使用されても良いことは言うまでもない。この場合、各実行ユニット１２には、それ自体の更なる結果レジスタ３２の組が設けられても良い。バイパス制御ユニット１６は、設定された結果がレジスタファイル１４からのオペランドデータの代わりに用いられるかどうか、また、設定された結果のどれから用いられるのかを制御する。代案として、更なる結果レジスタ３２の共有の組が使用されても良い。この場合、命令は、あるとすれば、実行ユニット１２のうちのどれが更なる結果レジスタ３２のうちのどれに対して書き込まれなければならない（また、必要に応じて、その対応する結果レジスタアドレスレジスタ４０に対して書き込まれなければならない）のかを示すための情報を含んでいなければならない。
【００３８】
更なる結果レジスタへの書き込みにより、レジスタファイル１４への書き込みを不要にできることは言うまでもない。結果を更なる結果レジスタ３２へ選択的に書き込み且つレジスタファイル１４への結果の書き込みを無効にするために命令中に情報を含ませることにより、全体の電力消費量を低減することができる。無論、更なる結果レジスタへの書き込みも電力を消費するが、これらの更なる結果レジスタ３２の数はレジスタファイル１４におけるそれよりも少ないため、電力消費量は少ない。したがって、深刻な電力消費量の不利益を伴うことなく、レジスタファイル１４のサイズを拡大することができる。図３に示されるように、レジスタファイル１４への書き込みを無効にする信号を送り且つ更なる結果レジスタ３２への書き込みを可能にするために同じ信号が使用される。これは、命令サイズを小さくするのに役立つ。これにより、結果は、更なる結果レジスタ３２またはレジスタファイル１４のいずれかに書き込まれる。しかしながら、レジスタファイル１４への書き込みを無効にし且つ更なる結果レジスタ３２を選択するために、設定可能な制御情報を単独で使用することもできる。したがって、プログラム制御下で、更なる結果レジスタからの結果のバイパスを、特定のプログラムにおいて必要なように、レジスタファイル１４に記憶している長い用語または長くない用語と選択的に組み合わせることができる。
【００３９】
図５は、プロセッサの他の実施形態の一部を示している。図１の実施形態と比べて、図５の実施形態においては、結果レジスタアドレスレジスタ１２６および結果レジスタ１２８よりも下流側に、多くの更なる結果レジスタアドレスレジスタ５０および更なる結果レジスタ５２が加えられている。更なる結果レジスタアドレスレジスタ５０および更なる結果レジスタ５２は、バイパス制御ユニット１６に結合された出力部を有している。動作時、コマンドの実行の結果およびこれらの結果の結果レジスタアドレスは、書き込みが可能な場合にこれらをレジスタファイル１４から検索できる命令サイクル後であっても、パイプラインによって伝えられる。バイパス制御ユニット１６は、更なる結果レジスタアドレスレジスタ５０および更なる結果レジスタ５２からの結果が使用されるのか或いはレジスタファイル１４からの結果が使用されるのかどうかを制御する。これは、レジスタオペランドおよび／または結果アドレス比較に基づいて、あるいは、命令からの明示的な情報を使用して行なわれても良い。更なる結果レジスタアドレスレジスタ５０および更なる結果レジスタ５２を使用すると、レジスタファイル１４への結果の書き込みを、その結果が生成後に所定数の命令サイクル内でのみ必要とされる際に、無効にすることができる。この場合、レジスタファイル１４への結果の書き込みを無効にするために情報が命令に加えられる。したがって、レジスタファイル１４に書き込むための電力消費量を節約できる。
【００４０】
一実施形態において、更なる結果レジスタアドレスレジスタ５０および更なる結果レジスタ５２内のレジスタアドレスおよび結果の記憶は、その結果がレジスタファイル１４に記憶される場合には無効にされる。したがって、レジスタファイル１４内の記憶が無効にされない場合、電力が節約される。この実施形態においては、無効情報のための追加のレジスタが、更なる結果レジスタアドレスレジスタ５０と並行しても設けられる。無効情報は、更なる結果レジスタアドレスレジスタ５０および更なる結果レジスタ５２に結合される。レジスタファイル１４への結果の書き込みが無効にされなかったことを無効情報が示す場合、無効情報は、更なる結果レジスタアドレスレジスタ５０および更なる結果レジスタ５２の内容の更新を無効にするために使用される。この場合、無効情報は、更なる結果レジスタアドレスレジスタ５０および更なる結果レジスタ５２からではなくレジスタファイル１４からオペランドデータを取り出さなければならないことをバイパス制御ユニットに対して示すために使用されても良い。
【００４１】
更なる結果レジスタアドレスレジスタ５０および更なる結果レジスタ５２は、直列に２つだけではなく、任意の数だけ直列に設けられていても良いことは言うまでもない。また、実行ユニットの後に付加的なパイプラインステージが存在する場合、一方では、実行ユニットに続く結果レジスタアドレスレジスタ１２６と結果レジスタ１２８との間のパイプライン中に、他方では、更なる結果レジスタアドレスレジスタ５０と更なる結果レジスタ５２との間のパイプライン中に、追加の結果レジスタアドレスレジスタ５０および結果レジスタ５２が存在していても良いことは言うまでもない。バイパス制御ユニット１６は、バイパスのため、同様に、これらのステージからの結果を使用する。
【図面の簡単な説明】
【００４２】
【図１】パイプライン型プロセッサを示している。
【図２】レジスタファイルの一部を示している。
【図３】パイプライン型プロセッサの一部を示している。
【図４】更なるパイプライン型プロセッサの一部を示している。
【図５】更なるパイプライン型プロセッサの一部を示している。
【符号の説明】
【００４３】
１０  命令メモリ
１０ａ  プログラムカウンタ
１１  命令レジスタ
１２  実行ユニット
１４  レジスタファイル
１６  バイパス制御ユニット
２０  マルチポートレジスタ
２２  データ供給回路
２４  アドレス指定回路
２６  クロックイネーブル回路
３０  レジスタ選択ユニット
３２  結果レジスタ
３４  オペランド選択ユニット
４０  レジスタアドレスレジスタ
５０  結果レジスタアドレスレジスタ
５２  結果レジスタ
１２０、１２２、１２４  第１ステージパイプラインレジスタ
１２６、１２８  第２ステージパイプラインレジスタ
【図１】
2006522398.tif 000003
【図２】
2006522398.tif 000004
【図３】
2006522398.tif 000005
【図４】
2006522398.tif 000006
【図５】
2006522398.tif 000007
【国際調査報告】
2006522398.tif 000008
2006522398.tif 000009