(57)【要約】【課題】汎用レジスタの書き込み／読み出し回数の低減および消費電力の低減が可能なパイプライン型プロセッサを提供する。【解決手段】ＥステージとＷＢステージの間に配置されたパイプラインレジスタ１、２が、保持しているデータの有効性を示すデータ有効フラグ（Ｆ１、Ｆ２）および保持しているデータの前記汎用レジスタへの書き込みを制御する書き込み制御フラグ（Ｗ１、Ｗ２）を格納する領域を有し、データ有効フラグが「有効」を示すときは、汎用レジスタ１００の代わりにパイプラインレジスタ１、２を読み出すバイパス回路３を備え、書き込み制御フラグによる汎用レジスタ１００への書き込み終了後も、パイプラインレジスタ１、２に保持されているデータを引き続き保持し、先行命令とデータ依存関係にある後続命令の実行時に、バイパス回路３を介してＥステージへ供給する。【選択図】図１
2009169767.tif 000002
【特許請求の範囲】
【請求項１】
汎用レジスタへの書き戻しを実行するライトバックステージに前置され、
保持しているデータの有効性を示すデータ有効フラグ、および保持しているデータの前記汎用レジスタへの書き込みを制御する書き込み制御フラグを格納する領域を有するパイプラインレジスタと、
前記データ有効フラグが「有効」を示すときは、前記汎用レジスタの代わりに前記パイプラインレジスタを読み出すバイパス回路と
を備え、
前記書き込み制御フラグによる前記汎用レジスタへの書き込み終了後も、前記パイプラインレジスタに保持されているデータを引き続き保持し、先行命令とデータ依存関係にある後続命令の実行時に、前記バイパス回路を介して命令実行ステージへ前記データを供給する
ことを特徴とするパイプライン型プロセッサ。
【請求項２】
前記データ有効フラグは、
パイプラインで実行中の命令が前記ライトバックステージに到達すると「有効」となり、後続の命令で書き換えられるまで「有効」を継続する
ことを特徴とする請求項１に記載のパイプライン型プロセッサ。
【請求項３】
汎用レジスタへの書き戻しを実行するライトバックステージに前置され、保持しているデータの有効性を示すデータ有効フラグを格納する領域を有するパイプラインレジスタと、
前記データ有効フラグが「有効」を示しても、後続の命令によって前記パイプラインレジスタが書き換えられるまで、前記パイプラインレジスタに保持されているデータの前記汎用レジスタへの書き込みを保留する書き込み保留手段と、
後続の命令で同じ汎用レジスタへの書き込みが行われる場合には、前記書き込み保留手段により保留していた前の命令の前記汎用レジスタへの書き込みの実行を取り消し、前記パイプラインレジスタに保持されていたデータを無効化するデータ無効化手段と
を備えることを特徴とするパイプライン型プロセッサ。
【請求項４】
前記汎用レジスタの代わりに前記パイプラインレジスタを読み出すバイパス回路を備え、
前記データ有効フラグが「有効」を示すときは、前記汎用レジスタの代わりに前記パイプラインレジスタを読み出す
ことを特徴とする請求項３に記載のパイプライン型プロセッサ。
【請求項５】
前記データ有効フラグは、
パイプラインで実行中の命令が前記ライトバックステージに到達すると「有効」となり、後続の命令で書き換えられるまで「有効」を継続する
ことを特徴とする請求項４に記載のパイプライン型プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パイプライン型プロセッサに関する。
【背景技術】
【０００２】
パイプライン型プロセッサは、直列に接続された複数のステージを並列に動作させることにより命令の実行効率を向上させている。各ステージは、パイプラインレジスタにより区切られる。また、各命令の演算結果は、汎用レジスタに書き込まれる。
【０００３】
パイプライン型プロセッサの処理性能を低下させる要因の１つにデータ・ハザードがある。データ・ハザードは、連続して実行される一連の命令間にデータ依存関係がある場合に発生する。すなわち、後続の命令が先行の命令の演算結果を使用するような関係があった場合、その命令間隔が短いと、先行の命令の演算結果が汎用レジスタに書き込まれるまで、後続の命令の実行が停止する状態が生じる。
【０００４】
このようなデータ・ハザードの発生を低減させる手法として、バイパシングがある。バイパシングとは、パイプラインで処理中のデータを汎用レジスタへの書きみを待たずに利用する技術であり、後続の命令は、先行の命令の汎用レジスタに書きまれる前のデータを使用することができる。これにより、パイプラインを停止させることなく処理を続けることができる。
【０００５】
このバイパシングを行うために、パイプラインの途中のステージから、先頭ステージである汎用レジスタの読み込みステージへ、データの転送を行うためのバイパス回路が設けられる。
【０００６】
ところで、近年、プロセッサの高速化、高機能化の進展により、プロセッサの消費電力が増大する傾向がある。そのため、プロセッサの消費電力の低減が望まれている。
【０００７】
そこで、従来、上述のようなバイパス回路を有する場合、命令デコーダに有意性判定ロジックを設け、入力命令のレジスタ指示信号の有意性を判定し、判定結果が有意性を示すときには、汎用レジスタからの読み出しは行わず、バイパス回路のみを動作させて、消費電力を低減するようにしたパイプライン処理装置が提案されている（例えば、特許文献１参照。）。
【０００８】
しかし、この従来のパイプライン処理装置でも、バイパス回路が有効に機能するのは、データ依存関係のある命令の実行間隔が極めて短いときに限られる。データ依存関係のある命令の間に他の命令が入った場合、後続のデータ依存関係のある命令が実行されるときには、既に先行の命令の演算結果が汎用レジスタに書き込まれており、パイプライン中にデータが残っていない。その結果、後続の命令の実行には汎用レジスタの読み出しが必要になる。すなわち、データ依存関係のある命令の実行間隔が離れているときは、汎用レジスタの読み出しが行われ、そのための電力消費が発生する、という問題があった。
【０００９】
また、後続の命令が、先行の命令で書き込みが行われた汎用レジスタを上書きするような命令であった場合も、先行の命令による汎用レジスタへの不要な書き込みが行われ、その分の電力消費が発生する、という問題もある。
【００１０】
これに対しては、従来、後続の命令が先行の命令の直後に来たときは、先行命令による汎用レジスタへの書き込みを無効化し、汎用レジスタへの不要な書き込みを回避する方式が取られたりすることがあった。しかし、この方式は、後続の命令が先行の命令の直後に来る場合にしか機能せず、汎用レジスタの書き込み回数の低減効果が少ないという問題があった。
【特許文献１】特開平９−９１１４０号公報  （第４ページ、図１）
【発明の開示】
【発明が解決しようとする課題】
【００１１】
そこで、本発明の目的は、汎用レジスタの書き込み／読み出し回数の低減および消費電力の低減が可能なパイプライン型プロセッサを提供することにある。
【課題を解決するための手段】
【００１２】
本発明の一態様によれば、汎用レジスタへの書き戻しを実行するライトバックステージに前置され、保持しているデータの有効性を示すデータ有効フラグ、および保持しているデータの前記汎用レジスタへの書き込みを制御する書き込み制御フラグを格納する領域を有するパイプラインレジスタと、前記データ有効フラグが「有効」を示すときは、前記汎用レジスタの代わりに前記パイプラインレジスタを読み出すバイパス回路とを備え、前記書き込み制御フラグによる前記汎用レジスタへの書き込み終了後も、前記パイプラインレジスタに保持されているデータを引き続き保持し、先行命令とデータ依存関係にある後続命令の実行時に、前記バイパス回路を介して命令実行ステージへ供給することを特徴とするパイプライン型プロセッサが提供される。
【００１３】
また、本発明の別の一態様によれば、汎用レジスタへの書き戻しを実行するライトバックステージに前置され、保持しているデータの有効性を示すデータ有効フラグを格納する領域を有するパイプラインレジスタと、前記データ有効フラグが「有効」を示しても、後続の命令によって前記パイプラインレジスタが書き換えられるまで、前記パイプラインレジスタに保持されているデータの前記汎用レジスタへの書き込みを保留する書き込み保留手段と、後続の命令で同じ汎用レジスタへの書き込みが行われる場合には、前記書き込み保留手段により保留していた前の命令の前記汎用レジスタへの書き込みの実行を取り消し、前記パイプラインレジスタに保持されていたデータを無効化するデータ無効化手段とを備えることを特徴とするパイプライン型プロセッサが提供される。
【発明の効果】
【００１４】
本発明によれば、パイプライン型プロセッサの汎用レジスタの書き込み／読み出し回数を低減でき、消費電力を低減させることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施例を図面を参照して説明する。
【実施例１】
【００１６】
図１は、本発明の実施例１に係るパイプライン型プロセッサの構成の例を示すブロック図である。
【００１７】
まず、本実施例のプロセッサのパイプライン構造について説明する。
【００１８】
本実施例のプロセッサは、ＲＦステージ、Ｅステージ、ＷＢステージ、というパイプライン構造を有し、ＲＦステージで汎用レジスタ１００からデータを読み込み、Ｅステージで命令を実行し、ＷＢステージで汎用レジスタ１００へデータを書き戻す。
【００１９】
Ｅステージではパイプラインが２つに分かれ、片方のパイプラインでは演算部ＡＬＵにより算術演算などの命令が実行され、もう片方のパイプラインではメモリＭに対するデータのロード、ストアなどの命令が実行される。
【００２０】
各ステージの境界にはパイプラインレジスタが配置される。すなわち、ＲＦステージとＥステージの間にはパイプラインレジスタＰＲ１、ＰＲ２、ＰＲ３が配置され、ＥステージとＷＢステージの間にはパイプラインレジスタ１およびパイプラインレジスタ２が配置される。
【００２１】
パイプラインレジスタ１は、Ｅステージの演算部ＡＬＵの出力データを保持し、パイプラインレジスタ２は、ＥステージのメモリＭの出力データを保持する。
【００２２】
パイプラインレジスタ１あるいはパイプラインレジスタ２に保持されたデータは、セレクタＭＸ６により選択されて、汎用レジスタ１００へ書き戻される。
【００２３】
それとともに、本実施例のプロセッサはバイパス回路３を有しており、セレクタＭＸ６を介して出力されるパイプラインレジスタ１の出力あるいはパイプラインレジスタ２の出力をＲＦステージへバイパスする。
【００２４】
バイパス回路３は、セレクタＭＸ１、ＭＸ２により、汎用レジスタ１００の出力と、パイプラインレジスタ１の出力あるいはパイプラインレジスタ２の出力と、のいずれかを選択する。
【００２５】
なお、本実施例のバイパス回路３はセレクタＭＸ３、ＭＸ４も有しており、汎用レジスタ１００の出力の代わりに、セレクタＭＸ５を介して出力されるＥステージの出力（演算部ＡＬＵ出力またはメモリＭの出力）をバイパスすることもできる。
【００２６】
バイパス回路３の出力は、パイプラインレジスタＰＲ１、ＰＲ２、ＰＲ３に保持される。
【００２７】
このような本実施例のプロセッサで特徴的な点は、パイプラインレジスタ１およびパイプラインレジスタ２が、それぞれ、保持しているデータの有効性を示すデータ有効フラグと、保持しているデータの汎用レジスタ１００への書き込みを制御する書き込み制御フラグを格納する領域を有する点である。
【００２８】
すなわち、パイプラインレジスタ１は、有効フラグＦ１および書き込み制御フラグＷ１を格納する領域を有し、パイプラインレジスタ２は、有効フラグＦ２および書き込み制御フラグＷ２を格納する領域を有する。
【００２９】
この有効フラグＦ１（Ｆ２）および書き込み制御フラグＷ１（Ｗ２）は、次のように制御される。
【００３０】
パイプラインの中を命令が流れて行き、ＷＢステージに命令が来ると、有効フラグＦ１（Ｆ２）および書き込み制御フラグＷ１（Ｗ２）の両方が「有効（例えば、‘１’）」とされる。
【００３１】
ＷＢステージで汎用レジスタ１００に対して書き込みが行われると、書き込み制御フラグＷ１（Ｗ２）は「無効（‘０’）」とされるが、有効フラグＦ１（Ｆ２）は「有効（‘１’）」のままとされる。
【００３２】
この後、有効フラグＦ１（Ｆ２）は、同じ演算器ＡＬＵ側（メモリＭ側）のパイプラインのＷＢステージに後続の命令が来てパイプラインレジスタ１（２）が上書きされるか、演算器ＡＬＵ側、メモリＭ側のどちらのパイプラインを流れる命令であっても、同じ汎用レジスタ番号に書き込む後続の命令がＷＢステージに来ると、「無効（‘０’）」とされる。
【００３３】
本実施例では、後続の命令が先行の命令とデータ依存関係の命令であるときに、有効フラグＦ１（Ｆ２）が「有効（‘１’）」を示している場合、バイパス回路３を使用してパイプラインレジスタ１（２）に保持されているデータを使用する。
【００３４】
図２に、本実施例のプロセッサの動作の例を波形図で示す。
【００３５】
いま、演算器ＡＬＵ側のパイプラインを使用する命令１が実行されて、演算器ＡＬＵの出力がパイプラインレジスタ１に保持されると、書き込み制御フラグＷ１および有効フラグＦ１が‘１’（有効）となる。
【００３６】
書き込み制御フラグＷ１が「有効」であるので、パイプラインレジスタ１に保持されたデータは、汎用レジスタ１００に書き戻されるが、パイプラインレジスタ１にもそのまま保持される。
【００３７】
その後、メモリＭ側のパイプラインを使用する命令が連続した後、命令１とデータ依存関係のある命令２が実行される場合、この命令２は、命令１とは実行間隔が離れているにも拘らず、有効フラグＦ１が「有効」であるので、汎用レジスタ１００の読み出しは行わず、バイパス回路３を介してパイプラインレジスタ１に保持されているデータを読み出す。
【００３８】
このような本実施例によれば、データ依存関係のある命令の実行間隔が離れていても、パイプラインレジスタに先行命令のデータを保持しておくことができるので、後続命令の実行時に、このパイプラインレジスタのデータをバイパシングすることにより、汎用レジスタの読み出しを行わずに済ませることができる。これにより、汎用レジスタの読み出し回数を低減させることができ、汎用レジスタの読み出しによる電力消費を低減させることができる。
【実施例２】
【００３９】
図３は、本発明の実施例２に係るパイプライン型プロセッサの構成の例を示すブロック図である。
【００４０】
本実施例のプロセッサも、実施例１と同様、ＲＦステージ、Ｅステージ、ＷＢステージ、というパイプライン構造を有し、バイパス回路３を備えている。
【００４１】
実施例１と異なる点は、ＥステージとＷＢステージの間に配置されるパイプラインレジスタ１１、１２が、有効フラグＦ１、Ｆ２のみを有する点である。
【００４２】
また、本実施例のプロセッサは、パイプラインレジスタ１１、１２に保持されているデータの汎用レジスタへの書き込みを保留する書き込み保留部４、５と、この書き込み保留部４、５による保留を取り消し、パイプラインレジスタに１１、１２保持されていたデータを無効化するデータ無効化部６と、を備える。書き込み保留部４、５およびデータ無効化部６の動作は、命令デコーダ２００の出力により制御される。
【００４３】
書き込み保留部４、５は、パイプラインレジスタ１１、１２の有効フラグＦ１、Ｆ２が「有効」を示しても、後続の命令によってパイプラインレジスタ１１、１２が書き換えられるまで、パイプラインレジスタ１１、１２に保持されているデータの汎用レジスタ１００への書き込みを、それぞれ保留する。
【００４４】
パイプラインレジスタ１１、１２に保持されているデータは、後続の命令が来てパイプラインレジスタ１１、１２が上書きされるタイミングで、初めて汎用レジスタ１００へ書き戻される。
【００４５】
一方、後続の命令が同じ汎用レジスタ番号への書き込みを行う命令である場合には、データ無効化部６が、書き込み保留部４あるいは書き込み保留部５により保留されていた前の命令の汎用レジスタ１００への書き込みの実行を取り消し、パイプラインレジスタ１１あるいはパイプラインレジスタ１２に保持されていたデータを無効化する。
【００４６】
すなわち、同じ汎用レジスタ番号への書き込みを行う後続の命令が来ると、先行の命令の実行結果であるパイプラインレジスタ１１あるいはパイプラインレジスタ１２に保持されていたデータは、実際に汎用レジスタ１００に書き戻されることなく無効化される。
【００４７】
図４に、上述の汎用レジスタ１００への書き込みが保留される動作の様子を波形図で示す。
【００４８】
いま、演算器ＡＬＵ側のパイプラインを使用する命令１が実行されて、演算器ＡＬＵの出力がパイプラインレジスタ１１に保持されると、有効フラグＦ１が‘１’（有効）となる。しかし、このパイプラインレジスタ１１に保持されたデータの汎用レジスタ１００への書き込みは、書き込み保留部４により保留される。
【００４９】
その後、命令２、命令３の実行後、パイプラインレジスタ１１を書き換える後続の命令４が実行されると、パイプラインレジスタ１１が上書きされるタイミングで、パイプラインレジスタ１１に保持されていた先行の命令１の実行結果が、汎用レジスタ１００に書き戻される。
【００５０】
これに対して、図５では、保留されていた汎用レジスタ１００への書き込みが取り消される動作の様子を示す。
【００５１】
この場合も、演算器ＡＬＵ側のパイプラインを使用する命令１が実行されて、演算器ＡＬＵの出力がパイプラインレジスタ１１に保持されると、有効フラグＦ１が‘１’（有効）となり、このパイプラインレジスタ１１に保持されたデータの汎用レジスタ１００への書き込みが、書き込み保留部４により保留される。
【００５２】
その後、命令２の実行後、メモリＭ側のパイプラインを使用する命令ではあるが、命令１と同じ汎用レジスタ番号に書き込む命令である命令３が実行されると、データ無効化部６により、保留されていた命令１の汎用レジスタ１００への書き込みは取り消され、パイプラインレジスタ１１に保持されていたデータは無効化される。それとともに、有効フラグＦ１が‘０’（無効）となる。
【００５３】
その代わり、メモリＭの出力がパイプラインレジスタ１２に保持されて、有効フラグＦ２が‘１’（有効）となり、このパイプラインレジスタ１２に保持されたデータの汎用レジスタ１００への書き込みが、書き込み保留部５により保留される。
【００５４】
このような本実施例によれば、ＷＢステージに命令が到達しても、先行の命令と同じパイプラインに後続の命令が来ない限り、汎用レジスタへの書き込みが保留される。そして、後続の命令が同じ汎用レジスタ番号に書き込む命令である場合には、先行の命令の汎用レジスタへの書き込みは取り消される。これにより、汎用レジスタへの書き込み回数を減少させることができ、汎用レジスタの書き込みによる電力消費を低減させることができる。
【００５５】
また、本実施例においても、実施例１と同様、パイプラインレジスタに保持されているデータのバイパシングを行うことにより、データ依存関係のある命令の実行間隔が離れていても、後続命令の実行時に、汎用レジスタの読み出しを行わずに済ませることができる。これにより、汎用レジスタの読み出し回数を低減させることができ、汎用レジスタの読み出しによる電力消費も低減させることができる。
【図面の簡単な説明】
【００５６】
【図１】本発明の実施例１に係るパイプライン型プロセッサの構成の例を示すブロック図。
【図２】実施例１のパイプライン型プロセッサの動作の例を示す波形図。
【図３】本発明の実施例２に係るパイプライン型プロセッサの構成の例を示すブロック図。
【図４】実施例２のパイプライン型プロセッサの動作の例を示す波形図。
【図５】実施例２のパイプライン型プロセッサの動作の例を示す波形図。
【符号の説明】
【００５７】
１、２、１１、１２  パイプラインレジスタ
３  バイパス回路
４、５  書き込み保留部
６  データ無効化部
【図１】
2009169767.tif 000003
【図２】
2009169767.tif 000004
【図３】
2009169767.tif 000005
【図４】
2009169767.tif 000006
【図５】
2009169767.tif 000007