(57)【要約】【課題】  プロセッサにおける不要な書き込み処理をなくして消費電力を低減し、消費電力低減の効果がより高いプロセッサを提供する。【解決手段】  命令をフェッチし、このフェッチによってフェッチされた命令をデコードし、デコードされた命令に基づく演算を実行する演算ユニット、演算ユニットによって実行された演算の結果が書き込まれるスカラレジスタを含むレジスタファイルを備えたプロセッサに、１つの演算ユニットの演算結果が他の演算ユニットにフォワーディングされる場合、フォワーディングされた演算結果がスカラレジスタに書き込まれることを禁止する書込禁止部２を設ける。【選択図】  図２
2006139644.tif 000002
【特許請求の範囲】
【請求項１】
命令をフェッチするフェッチ手段と、該フェッチ手段によってフェッチされた命令をデコードするデコード手段と、該デコード手段によってデコードされた命令に基づく演算を実行する複数の演算実行手段と、該演算実行手段によって実行された演算の演算結果が書き込まれるスカラレジスタを含むレジスタファイルとを備えたプロセッサであって、
前記複数の演算実行手段のうち一の演算実行手段の演算結果を他の演算実行手段にフォワーディングするフォワーディング機構と、
前記フォワーディング機構によって一の前記演算実行手段の演算結果が、他の前記演算実行手段にフォワーディングされる場合、フォワーディングされた演算結果がスカラレジスタに書き込まれることを禁止する書込禁止手段と、
を備えることを特徴とするプロセッサ。
【請求項２】
前記フォワーディング機構は、スカラレジスタに書き込まれたデータが続いて他の前記演算実行手段によって読み出される命令がなされた場合にフォワーディングを実行することを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記フォワーディング機構は、複数の前記演算実行手段のうちの一の前記演算実行手段の演算結果が他の前記演算実行手段に直接入力される命令がなされた場合にフォワーディングを実行することを特徴とする請求項１に記載のプロセッサ。
【請求項４】
前記書込禁止手段は、前記スカラレジスタに対する書込みを許可する書込み許可信号と、前記フォワーディング機構にフォワーディングを指示するフォワーディング指示信号とを用いてフォワーディングされた演算結果がスカラレジスタに書き込まれることを禁止することを特徴とする請求項１から３のいずれか１項に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサに係り、特にベクトルレジスタを備えてパイプライン処理が可能なプロセッサに関する。
【背景技術】
【０００２】
ベクトルパイプラインは、論理演算、乗算、加算やシフト演算、除算、マスク演算、ロード・ストアのパイプラインおよびマスクレジスタ、ベクトルレジスタを基本構成とする構成である。ベクトルパイプラインを備えたプロセッサ（ベクトルプロセッサ）は、並列に実行される画像処理等を高速に実行することに適している。
図５は、一般的なベクトルプロセッサの構成を示す図である。図示したベクトルプロセッサは、スカラレジスタと共にベクトルレジスタを備えたレジスタファイル５００、選択回路５０１、主記憶部５０３、ロード・ストアユニット５０４、演算ユニット群５０２とを備えている。
【０００３】
このようなベクトルプロセッサでは、選択回路５０１がロードされた命令を実行する演算ユニット及び実行に使用されるレジスタを選択する。そして、主記憶部から読み出された命令を解釈し、演算して結果をメモリに書き込みという手順で処理する。このような手順で行われる各動作を、本明細書では、フェッチ（ＩＦ）、デコード（ＩＤ）、演算（ＥＸ）、ライトバック（ＷＢ）と記す。また、このような各動作が実行されるタイミングを、各動作のステージと記す。
【０００４】
次に、このようなベクトルプロセッサの問題点を説明するにあたり、ベクトルプロセッサで次の命令が実行されるものとする。
ＡＤＤ（４）  ％ＳＲ０，％ＶＲ０，％ＳＲ０
上記した命令は、以下の演算の実行を指示する。
１，ＳＲ０＝ＶＲ０＋ＳＲ０
２，ＳＲ０＝ＶＲ１＋ＳＲ０
３，ＳＲ０＝ＶＲ２＋ＳＲ０
４，ＳＲ０＝ＶＲ３＋ＳＲ０
演算結果：ＳＲ０＝ＳＲ０（初期）＋ＶＲ０＋ＶＲ１＋ＶＲ２＋ＶＲ３
なお、命令及び演算式中のＳＲ０はスカラレジスタ，ＶＲ０はベクトルレジスタを示す。
【０００５】
このような演算を、図６に示す一般的なベクトルプロセッサで実行した場合の動作を図７に示す。図７中にＩＦ、ＩＤ、ＥＸ、ＷＢで示すのは、各々の動作ステージを示す。ここで例示した演算は、直前に実行された演算の結果が次の演算に使用される。このため、後の演算は直前の命令のＷＢステージが終了するまで次の命令のデコードを行うことが出来ない。図６に示した処理では、直前の命令のＷＢステージが完了するまでｎｏｐ命令を挿入し、次の命令の発行を遅らせている。
【０００６】
このように命令の発行を遅らせる処理は、ベクトルプロセッサの動作を遅らせることになる。また、ベクトルプロセッサの遅延は、パイプラインの段数が多くなるほど大きくなる。このような不具合を解消するため、ベクトルプロセッサには、フォワーディングと呼ばれる処理が可能な構成がある。
フォワーディングには、レジスタファイル５００内でのフォワーディングと、演算ユニット間でのフォワーディングがある。レジスタファイル５００内でのフォワーディングでは、同一のスカラレジスタに書き込み要求と読み出し要求が同時に発生した場合、書き込まれたデータがフォワーディングパス経由で読み出される。また、演算ユニット間のフォワーディングでは、演算結果は、直前の命令で動作する演算ユニットの演算終了後に次の演算ユニットに読み出される。レジスタファイル５００内でフォワーディングを行った場合の動作を図８（ａ）に示し、演算ユニット間でフォワーディングを行った場合の動作を図８（ｂ）に示す。
【０００７】
このようなフォワーディング処理では、ベクトル命令によってＷＢステージで書き込まれるデータのディスティネーション（書き込み先）がスカラレジスタに指定される。このとき、書き込まれるデータはフォワーディングパスを経由して読み出されるので、書き込み処理の必要がなくなる。また、レジスタに対する書き込み処理には比較的多くの電力を消費する。すなわち、フォワーディング機構を有するベクトルプロセッサにおいては、ベクトル命令によるスカラレジスタへの書込み処理が不要であるばかりでなく、消費電流増加の原因になり得る。
【０００８】
この点を解決するためなされた従来技術としては、例えば、特許文献１が挙げられる。特許文献１に記載された発明は、ベクトルプロセッサの消費電力低減を目的としてなされたものである。この発明では、一般的なＲＩＳＣプロセッサにおいて、フォワーディング時のレジスタ書き込みを選択的に禁止している。
【特許文献１】特開２０００−３０５７７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記した特許文献１に記載された発明は、書き込み禁止、あるいは許可を判断するために発行した命令と直後の命令のディスティネーションを常に比較する必要がある。この比較のため、過去の制御信号を保持するラッチ等を含む回路が必要になる。このような特許文献１に記載された発明は、この回路が電力を消費するため、消費電力の低減についてさらに改善の余地が残るといえる。
【００１０】
本発明は、このような点に鑑みてなされたものであり、プロセッサにおける不要な書き込み処理をなくして消費電力を低減し、かつ書込みを禁止する構成を設けたために電力が消費されることがなく、消費電力低減の効果がより高いプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１１】
以上の課題を解決するため、請求項１に記載のプロセッサは、命令をフェッチするフェッチ手段と、該フェッチ手段によってフェッチされた命令をデコードするデコード手段と、該デコード手段によってデコードされた命令に基づく演算を実行する複数の演算実行手段と、該演算実行手段によって実行された演算の演算結果が書き込まれるスカラレジスタを含むレジスタファイルとを備えたプロセッサであって、前記複数の演算実行手段のうち一の演算実行手段の演算結果を他の演算実行手段にフォワーディングするフォワーディング機構と、前記フォワーディング機構によって一の前記演算実行手段の演算結果が他の前記演算実行手段にフォワーディングされる場合、フォワーディングされた演算結果がスカラレジスタに書き込まれることを禁止する書込禁止手段と、を備えることを特徴とする。
【００１２】
また、本発明のプロセッサは、前記フォワーディング機構が、スカラレジスタに書き込まれたデータが続いて他の前記演算実行手段によって読み出される命令がなされた場合にフォワーディングを実行することを特徴とする。
また、本発明のプロセッサは、前記フォワーディング機構が、複数の前記演算実行手段のうちの一の前記演算実行手段の演算結果が他の前記演算実行手段に直接入力される命令がなされた場合にフォワーディングを実行することを特徴とする。
【００１３】
また、本発明のプロセッサは、前記書込禁止手段が、前記スカラレジスタに対する書込みを許可する書込み許可信号と、前記フォワーディング機構にフォワーディングを指示するフォワーディング指示信号とを用いてフォワーディングされた演算結果がスカラレジスタに書き込まれることを禁止することを特徴とする。
このような発明によれば、複数の演算実行手段のうち一の演算実行手段の演算結果を他の演算実行手段にフォワーディングすることができる。また、フォワーディング機構によって演算実行手段にフォワーディングされる場合、フォワーディングされた演算結果がスカラレジスタに書き込まれることを禁止することができる。
【００１４】
このため、フォワーディングすることによってプロセッサの動作を高速化することができる。また、フォワーディング時に演算途中の演算結果がスカラレジスタに書き込まれることを禁止することによってプロセッサにおける無駄な動作によって電力が消費されることをなくすことができる。
また、このような発明によれば、レジスタファイル内でのフォワーディング、演算実行手段間でのフォワーディングのいずれにも対応してプロセッサにおける無駄な動作によって電力が消費されることをなくすことができる。
【００１５】
また、このような発明によれば、既存の構成で発生する書込み許可信号及びフォワーディング指示信号を使って書込みを禁止することができる。このため、書込み禁止のために新たなハードウェアを追加する必要がなく、プロセッサの回路規模を大型化することがない。また、書込みを禁止するための構成が電力を消費して省電力化の効果を低下させず、充分な消費電力低減の効果を得ることができる。
【発明を実施するための最良の形態】
【００１６】
以下、図を参照して本発明に係るプロセッサの実施形態１、実施形態２を説明する。なお、実施形態１、実施形態２では、本発明のプロセッサをいずれもパイプラインプロセッサとして構成した例である。以下、実施形態１、実施形態２では、このプロセッサをベクトルプロセッサと記すものとする。
（実施形態１）
図１は、本発明の実施形態１、実施形態２に共通の図であって、ベクトルプロセッサ全体を示している。図示したベクトルプロセッサは、複数のスカラレジスタを含むスカラレジスタ群１０５、複数のベクトルレジスタを含むベクトルレジスタ群１０７を有するレジスタファイル１００を備えている。
【００１７】
また、ベクトルプロセッサは、ベクトルプロセッサで実行されるデータが記憶されている主記憶部１０３、主記憶部１０３とレジスタファイル１００との間で命令をロード・ストアするロード・ストアユニット１０４、ロードされた命令をレジスタファイル１００に含まれるレジスタを使って演算する複数の演算ユニット１０２ａ、１０２ｂ、１０２ｃ、１０２ｄ、１０２ｅを含む演算ユニット群１０２、演算に使用されるレジスタや演算ユニットを選択する選択回路１０１を備えている。
【００１８】
なお、図１においては、演算ユニットは、各々レジスタファイル１００に含まれるスカラレジスタに記憶されているデータとベクトルレジスタに記憶されているデータとを使って演算し、またスカラレジスタに書き込んでいる。
また、図１に示したベクトルプロセッサは、フォワーディング機構を有する。図中に示す実線Ａは、レジスタファイル１００内でフォワーディングを行う場合のデータの経路（フォワーディングパス）を模式的に示し、実線Ｂは、演算ユニット間でフォワーディングを行う場合のデータの経路を模式的に示している。実施形態１は、フォワーディング機構が、スカラレジスタに書き込まれたデータが続いて他の前記演算実行手段によって読み出されるベクトル命令がなされた場合にフォワーディングを実行する場合について説明するものである。
【００１９】
実施形態１では、このようなベクトルプロセッサが、従来技術でも例示した下記の演算を実行するものとする。
ＡＤＤ（４）  ％ＳＲ０，％ＶＲ０，％ＳＲ０
１，ＳＲ０＝ＶＲ０＋ＳＲ０
２，ＳＲ０＝ＶＲ１＋ＳＲ０
３，ＳＲ０＝ＶＲ２＋ＳＲ０
４，ＳＲ０＝ＶＲ３＋ＳＲ０
なお、本明細書では、このような演算を、以降の説明のために演算１と記すものとする。演算１を実行する場合、演算ユニットは、ベクトルレジスタＶＲ０に記憶されているデータとスカラレジスタ０に記憶されているデータとを加算する。そして、加算の結果得られた加算値をスカラレジスタ０に書き込む（ＳＲ０＝ＶＲ０＋ＳＲ０）。また、演算ユニットが、加算値の書込みに続いてスカラレジスタ０にアクセスして加算値を読み出し、ベクトルレジスタＶＲ１に記憶されているデータと加算する（ＳＲ０＝ＶＲ１＋ＳＲ０）。
【００２０】
このとき、実施形態１のベクトルプロセッサでは、レジスタファイル０に対する書込み要求と読み出し要求とが同時になされたタイミングでＶＲ０＋ＳＲ０の値を読み出し、レジスタファイル１００内でフォワーディングを実行する。フォワーディングが実行された場合、ＶＲ０＋ＳＲ０の値をスカラレジスタに書き込む処理は、次に行われる演算ＶＲ１＋ＳＲ０の実行に影響しないものとなる。このため、実施形態１では、以下の構成によって不要な書込みの動作を禁止している。
【００２１】
図２は、図１に示した構成のうち、不要な書込みの動作を禁止する構成を説明するための図であって、本発明の実施形態１、実施形態２に共通の図である。
図２に示した構成は、フォワーディング機構によって複数の演算ユニット１０２ａ〜１０２ｅのうち、１つの演算ユニットが演算ユニットにフォワーディングされる場合、フォワーディングされた演算結果がスカラレジスタに書き込まれることを禁止する書込禁止手段として機能する書込禁止部２である。
【００２２】
書込禁止部２は、スカラレジスタＳＲ０，ＳＲ１，ＳＲ２，ＳＲ３を含むスカラレジスタ群２０５、スカラレジスタ群のいずれかを選択するためのセレクタ回路２０３、フェッチされた命令（オペコード）をデコードするデコーダ２０１を備えている。
セレクタ回路２０３には演算ユニット１０２ａ〜１０２ｅの演算結果ＤＡ、ＤＢ、ＤＣ、ＤＥが入力される。また、セレクタ回路２０３には、スカラレジスタＳＲ０，ＳＲ１，ＳＲ２，ＳＲ３に書き込まれた演算結果が入力する。セレクタ回路２０３は、命令のオペコードにしたがって演算結果を選択し、選択された演算結果が書き込まれるべきスカラレジスタに出力する。信号ＷＤは、スカラレジスタ群２０５のうち、選択されたスカラレジスタに出力される演算結果のデータである。
【００２３】
デコーダ２０１は、フェッチされた命令を解釈し、命令がベクトル命令であった場合にベクトル信号ＶＩを出力する。実施形態１では、ベクトル命令によって演算１として示した演算が実行される。演算１に含まれる４つの演算では、１〜３の命令の実行時にスカラレジスタＳＲ０に読み出しと書込みの要求がなされる。
ベクトル信号ＶＩは、ベクトル命令が実行されている間ｈｉｇｈになり、命令がベクトル命令であることを示す。このようなベクトル信号ＶＩは、後述するように、スカラレジスタにはベクトルプロセッサにフォワーディングを指示するフォワーディング指示信号となる。
【００２４】
また、図中に示す信号ＷＥは、スカラレジスタへの書込みを許可するライト・イネーブル信号であって、スカラレジスタへ演算結果を書き込むタイミングを示している。書込禁止部２は、ベクトル信号ＶＩと信号ＷＥとを入力して１または０の信号を出力するＮＡＮＤ回路２０６を備えている。ＮＡＮＤ回路２０６の出力信号は、いずれも各スカラレジスタに対して演算結果の書込みを許可する信号ＥＮ０、ＥＮ１、ＥＮ２、ＥＮ３となる。さらに、図中に示すは、信号ＦＷは、レジスタ内でフォワーディングされたデータを示す。
【００２５】
図３は、以上述べた実施形態１のベクトルプロセッサの動作と、ベクトル信号ＶＩ、信号ＷＥ、信号ＥＮとの関係とを示した図である。図３（ａ）は、実施形態１のベクトルプロセッサの動作タイミングを示し、（ｂ）は各信号のオン、オフのタイミングを示している。図３（ｂ）に示した信号ＣＬＫは、ベクトルプロセッサの動作タイミングの基準となるクロック信号である。
【００２６】
図示するように、実施形態１のベクトルプロセッサは、スカラレジスタＳＲ０に書込みと読み出しの要求が同時に行われるステージを含む命令が実行される間、ｈｉｇｈを出力する。ベクトル信号がｈｉｇｈになったことにより、ベクトルプロセッサは、スカラレジスタファイル内でフォワーディングを行い、次の命令のデコードステージのソースにデータを供給する。
【００２７】
演算１の実行中、図３に示すように、ライトバックステージに対応してＷＥ信号がオンになり、スカラレジスタへの書き込みが許可される。しかし、ＮＡＮＤ回路２０６に１の値を持つ信号ＷＥが入力された場合にも、ベクトル信号ＶＩが１であればＮＡＮＤ回路２０６は０を出力し、スカラレジスタＳＲ０への書き込みが行われない。
そして、図３に示すように、演算１のうち４つめの演算において、スカラレジスタＳＲ０に対する読み込み要求がなされなくなる。このとき、フォワーディングの必要がなくなり、ベクトル信号ＶＩがオフされ、信号ＷＥがｈｉｇｈになったタイミングでＮＡＮＤ回路２０６から信号ＥＮ０がｈｉｇｈになる。信号ＥＮ０がｈｉｇｈになったことにより、スカラレジスタＳＲ０に演算１の最終的な演算結果だけが書き込まれる。
【００２８】
以上述べた動作において、スカラレジスタには、ベクトル信号ＶＩが、ベクトルプロセッサの各ユニットにフォワーディングを指示するフォワーディング指示信号として機能している。
以上述べた実施形態１は、フォワーディングによってベクトルプロセッサの動作を高速化し、さらにベクトルプロセッサにおける無駄な動作によって電力が消費されることをなくすことができる。また、既存の構成で発生する信号ＷＥ及びフォワーディングを指示するベクトル信号ＶＩを使って書込みを禁止することができる。このため、書込み禁止のために新たなハードウェアを追加する必要がなく、ベクトルプロセッサの回路規模を大型化することがない。また、書込みを禁止するための構成が電力を消費して省電力化の効果を低下させず、充分な消費電力低減の効果を得ることができる。
【００２９】
なお、以上述べた実施形態１において、ベクトル信号ＶＩは、従来のベクトルプロセッサにおいてもベクトルプロセッサに含まれる複数のユニットに入力される信号である。また、信号ＷＥも、従来のベクトルプロセッサにおいて使用されている既存の構成で発生する信号である。実施形態１は、このような既存の構成を使って実現できるので、フォワーディング時の書込みを禁止するにあたって新たな構成を追加する必要がなく、ベクトルプロセッサの回路規模が大きくなることがない。また、フォワーディング時の書込みを禁止するために消費電力の増大も起こらない。
【００３０】
（実施形態２）
次に、本発明の実施形態２について説明する。なお、実施形態２のベクトルプロセッサは、実施形態１のベクトルプロセッサと同様の構成を有するため、構成の図示を省くものとする。実施形態２は、フォワーディング機構が、複数の演算ユニット１０２ａ〜１０２ｅのうちの１つの演算ユニットの演算結果が他の演算ユニットに直接入力される命令がなされた場合にフォワーディングを実行する。このようなフォワーディングは、演算ユニット間で行われるものであって、レジスタファイルの内部でフォワーディングをした実施形態１のベクトルプロセッサとその動作において相違するものである。
【００３１】
図４（ａ）、（ｂ）は、実施形態２のベクトルプロセッサの動作を説明するための図である。図４（ａ）は、実施形態２のベクトルプロセッサの動作タイミングを示し、（ｂ）は各信号のオン、オフのタイミングを示している。図示するように、実施形態２は、演算ユニット間でフォワーディングをする場合にベクトル信号ＶＩと信号ＷＥとをＮＡＮＤ回路２０６に入力し、出力される信号によってスカラレジスタの書込みを制御する。このような制御によっても、演算１で最終的に得られる演算結果だけをスカラレジスタ０に書き込み、後の書込みを禁止することができる。
【００３２】
なお、以上述べた実施形態１、実施形態２は、いずれも１つのベクトル命令の実行時にフォワーディングをする構成について述べた。しかし、本発明は、このような構成に限定されるものではなく、ベクトル命令間でフォワーディングを行う場合にも演算の途中で行われる無駄な書込みを禁止することができる。
例えば、以下に示すベクトル命令間でフォワーディングする場合、本発明のベクトルプロセッサは、図５に示すように動作する。
ＭＰ（４）      ％ＳＲ０，    ％ＳＲ１，    ％ＶＲ１
ＡＤＤ（４）    ％ＶＲ２，    ％ＶＲ３，  ％ＳＲ０
ＶＲ２＝｛  ＳＲ１＊ＶＲ１１＋ＶＲ３１  ，  ＳＲ１＊ＶＲ１２＋ＶＲ３２  ，  ＳＲ１＊ＶＲ１３＋ＶＲ３３  ，  ＳＲ１＊ＶＲ１４＋ＶＲ３４  ｝
図５（ａ）は、上記した演算を実行する場合のベクトルプロセッサの動作タイミングを示し、（ｂ）は各信号のオン、オフのタイミングを示している。図示した例では、最初のベクトル命令でスカラレジスタＳＲ０に記憶されている値とベクトルレジスタＶＲ１に記憶されている値とを乗算し、乗算の結果とベクトルレジスタＶＲ３に記憶されている値とを加減算する。図５の例では、最初のベクトル命令で演算結果の格納先にスカラレジスタＳＲ０を指定し、フォワーディング機構を用いて次のベクトル命令のソース２に出力している。このような場合、実施形態１、実施形態２と異なり、２番目のベクトル命令が発行されるためベクトル命令の最後のＷＢステージにおいてもレジスタの書き込みは行われない。
【図面の簡単な説明】
【００３３】
【図１】本発明の実施形態１、実施形態２に共通のプロセッサ全体を示す図である。
【図２】図１に示した構成のうち、不要な書込みの動作を禁止する構成を説明するための図である。
【図３】本発明の実施形態１のプロセッサの動作と、ベクトル信号ＶＩ、信号ＷＥ、信号ＥＮとの関係とを示した図である。
【図４】本発明の実施形態２のプロセッサの動作を説明するための図である。
【図５】本発明の他の構成例の動作を示した図である。
【図６】一般的なベクトルプロセッサの構成を示した図である。
【図７】図６に示したベクトルプロセッサの動作を説明するための図である。
【図８】一般的なベクトルプロセッサのフォワーディングの動作を説明するための図である。
【符号の説明】
【００３４】
１００  レジスタファイル、１０１  選択回路、１０２ａ，１０２ｂ，１０２ｃ，１０２ｄ，１０２ｅ  演算ユニット、１０３  主記憶部、１０４  ロード・ストアユニット、１０５  スカラレジスタ群、１０７  ベクトルレジスタ群、２０１  デコーダ、２０３  セレクタ回路、２０５  スカラレジスタ群、２０６  ＮＡＮＤ回路
【図１】
2006139644.tif 000003
【図２】
2006139644.tif 000004
【図３】
2006139644.tif 000005
【図４】
2006139644.tif 000006
【図５】
2006139644.tif 000007
【図６】
2006139644.tif 000008
【図７】
2006139644.tif 000009
【図８】
2006139644.tif 000010