(57)【要約】【課題】  先行する命令と注目する命令の間に含まれる命令数が多い場合もオペランドフォワードを可能にする。【解決手段】  前のパイプラインステージから出力されるデータを格納するパイプラインレジスタを有し、パイプライン方式により演算処理を実行する情報処理装置は、パイプラインレジスタの有効無効を判定し(S311)、命令処理結果をレジスタファイルに書き込むべき命令がパイプラインレジスタに格納されているか否かを判定し(S312)、パイプラインレジスタに格納された命令の処理が当該パイプラインステージで終了するか否かを判定し(S313)、前のパイプラインステージにおけるステージ進行判定の結果を判定し(S315)、少なくとも一つの判定結果に基づき、当該パイプラインステージのステージ進行判定の結果を示す信号を出力する(S316-S318)。【選択図】  図5
2015121998.tif 000002
【特許請求の範囲】
【請求項１】
前のパイプラインステージから出力されるデータを格納するパイプラインレジスタを有し、パイプライン方式により演算処理を実行する情報処理装置であって、
前記パイプラインレジスタの有効無効を判定する第一の判定を行う手段と、
命令処理結果をレジスタファイルに書き込むべき命令が前記パイプラインレジスタに格納されているか否かを判定する第二の判定を行う手段と、
前記パイプラインレジスタに格納された命令の処理が当該パイプラインステージで終了するか否かを判定する第三の判定を行う手段と、
前のパイプラインステージにおけるステージ進行判定の結果を判定する第四の判定を行う手段と、
前記第一から第四の判定の少なくとも一つの判定結果に基づき、当該パイプラインステージのステージ進行判定の結果を示す信号を出力する判定手段とを有する情報処理装置。
【請求項２】
前記パイプラインレジスタが無効と判定された場合、前記判定手段は、前記ステージ進行判定の結果として、当該パイプラインステージのデータの破棄を示す信号を出力する請求項1に記載された情報処理装置。
【請求項３】
前記パイプラインレジスタが有効、前記命令処理結果をレジスタファイルに書き込むべき命令が前記パイプラインレジスタに未格納、かつ、前記パイプラインレジスタに格納された命令の処理が当該パイプラインステージで終了すると判定された場合、前記判定手段は、前記ステージ進行判定の結果として、当該パイプラインステージのデータの破棄を示す信号を出力する請求項1または請求項2に記載された情報処理装置。
【請求項４】
前記パイプラインレジスタが有効、前記命令処理結果をレジスタファイルに書き込むべき命令が前記パイプラインレジスタに未格納、かつ、前記パイプラインレジスタに格納された命令の処理が当該パイプラインステージで終了しないと判定された場合、前記判定手段は、前記ステージ進行判定の結果として、当該パイプラインステージの処理結果を含むデータを次のパイプラインステージに出力を示す信号を出力する請求項1から請求項3の何れか一項に記載された情報処理装置。
【請求項５】
前記パイプラインレジスタが有効、前記命令処理結果をレジスタファイルに書き込むべき命令が前記パイプラインレジスタに格納され、かつ、前のパイプラインステージにおけるステージ進行判定の結果が次のパイプラインステージへのデータの出力を示すと判定された場合、前記判定手段は、前記ステージ進行判定の結果として、当該パイプラインステージのデータの保持を示す信号を出力する請求項1から請求項4の何れか一項に記載された情報処理装置。
【請求項６】
さらに、入力される命令をデコードしてソースオペランドのレジスタ番号を出力するデコーダと、
前記第二の判定が、前記命令処理結果をレジスタファイルに書き込むべき命令が前記パイプラインレジスタに格納されていることを示し、かつ、前記パイプラインレジスタに格納された書込先レジスタ番号と前記デコーダが出力するレジスタ番号が一致する場合、前記命令の処理結果のオペランドフォワードを示す信号を出力するフォワード判定手段を有する請求項1から請求項4の何れか一項に記載された情報処理装置。
【請求項７】
前記デコーダは、前記ソースオペランドのレジスタについて、次の書き込みまで参照されない場合は保持不要信号を出力する請求項6に記載された情報処理装置。
【請求項８】
さらに、前記保持不要信号および前記オペランドフォワードを示す信号が出力されたか否かの第五の判定を行う手段を有し、
前記判定手段は、前記第一から第五の判定の少なくとも一つの判定結果に基づき、当該パイプラインステージのステージ進行判定の結果を示す信号を出力する請求項7に記載された情報処理装置。
【請求項９】
前記パイプラインレジスタが有効、前記命令処理結果をレジスタファイルに書き込むべき命令が前記パイプラインレジスタに格納され、かつ、前記保持不要信号および前記オペランドフォワードを示す信号が出力されたと判定された場合、前記判定手段は、前記ステージ進行判定の結果として、当該パイプラインステージのデータの破棄を示す信号を出力する請求項8に記載された情報処理装置。
【請求項１０】
さらに、メインメモリから命令を読み出し、前記命令を前記デコーダに入力するフェッチ手段を有する請求項6から請求項9の何れか一項に記載された情報処理装置。
【請求項１１】
前のパイプラインステージから出力されるデータを格納するパイプラインレジスタを有し、パイプライン方式により演算処理を実行する情報処理装置の制御方法であって、
前記パイプラインレジスタの有効無効を判定する第一の判定を行い、
命令処理結果をレジスタファイルに書き込むべき命令が前記パイプラインレジスタに格納されているか否かを判定する第二の判定を行い、
前記パイプラインレジスタに格納された命令の処理が当該パイプラインステージで終了するか否かを判定する第三の判定を行い、
前のパイプラインステージにおけるステージ進行判定の結果を判定する第四の判定を行い、
前記第一から第四の判定の少なくとも一つの判定結果に基づき、当該パイプラインステージのステージ進行判定の結果を示す信号を出力する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パイプライン方式により演算処理を実行する情報処理装置に関する。
【背景技術】
【０００２】
プロセッサの処理性能を高めるためにパイプライン処理が一般に用いられる。
【０００３】
パイプライン方式のプロセッサは、命令の実行順序の保証や正確な割り込みを実現するため、レジスタ値を最終的に格納するレジスタファイルに対して、演算処理結果を直ちに書き込まない。そこで、命令の実行に必要なソースオペランドレジスタ値を取得する際に最新のソースオペランドレジスタ値がパイプラン中に存在する場合、パイプラン中のデータを使用する「オペランドフォワード」または「オペランドバイパス」と呼ばれる処理が実行される。
【０００４】
オペランドフォワードによれば、先行する命令が出力するレジスタ値のレジスタファイルへの書き込みを待たずに最新のレジスタ値を使用できる。つまり、オペランドフォワードを行う場合、レジスタファイルからのレジスタ値の読み出しは不要である。
【０００５】
また、オペランドフォワードを行わず、ソースオペランドレジスタ値が先行する命令のソースオペランドレジスタ値と同じ場合、先行する命令のソースオペランドレジスタ値を再利用してレジスタファイルからのレジスタ値の読み出しを省略することができる。
【０００６】
また、演算処理結果をレジスタファイルへ書き込む前にオペランドフォワードが行われ、その後、そのレジスタ値を読み出す必要がないことが分かっている場合、レジスタファイルへのレジスタ値の書き込みは不要である。
【０００７】
一方、バッテリ動作の携帯機器が使用するプロセッサは低消費電力化が求められる。携帯機器などが使用するプロセッサにおいて、上記のようにレジスタファイルのリードやライトが不要な場合、それを行わないことでプロセッサの消費電力を削減する方法が提案されている。例えば非特許文献1が開示する技術は、先行する命令と注目する命令のソースオペランドレジスタ、ディスティネーションオペランドレジスタの組み合わせから削減可能なレジスタファイルのリードとライトを検出し、消費電力の削減を図る。
【０００８】
また、特許文献1は、オペランドフォワードされた値をソースオペランドレジスタ値とする命令を設け、オペランドフォワードする側の命令はレジスタへの書き込みが不要とする命令を設けることを提案する。
【０００９】
特許文献2は、命令で指定する書込先のレジスタは、オペランドフォワードされた場合にレジスタ値の書き込みが不要である命令を設けることを提案する。
【００１０】
特許文献3は、先行する命令と注目する命令の間に、これまでより多い命令があった場合もオペランドフォワードが行えるように、レジスタファイルに書き込みを行った後もパイプラインレジスタにデータを保持することを提案する。
【００１１】
しかし、非特許文献1、特許文献1、2の技術は、先行する命令と注目する命令の間に含まれる命令数が少ない（例えば五段パイプライン方式であれば三命令以内）場合しか、オペランドフォワードが行えない。
【００１２】
また、特許文献3の技術は、これまでより多い命令があった場合もオペランドフォワードが行える。しかし、命令数を増やすことができるのは、先行する命令の直後からレジスタファイルを書き換えない命令が連続する場合のみである。この制限は厳しく、オペランドフォワードが行える間に含まれる命令数の増加は実質的に小さい。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開平11-065844号公報
【特許文献２】国際公開第2007/083421号
【特許文献３】特開2009-169767号公報
【非特許文献】
【００１４】
【非特許文献１】高村拓志、井上弘士、Moshnyaga Vasily G.「オペランド再利用によるレジスタ・ファイルの低消費電力化」情報処理学会研究報告．計算機アーキテクチャ研究会報告 2002(81)、13-18頁、2002-08-22
【発明の概要】
【発明が解決しようとする課題】
【００１５】
本発明は、先行する命令と注目する命令の間に含まれる命令数が多い場合もオペランドフォワードを可能にすることを目的とする。
【課題を解決するための手段】
【００１６】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１７】
本発明にかかる情報処理装置は、前のパイプラインステージから出力されるデータを格納するパイプラインレジスタを有し、パイプライン方式により演算処理を実行する情報処理装置であって、前記パイプラインレジスタの有効無効を判定する第一の判定を行う手段と、命令処理結果をレジスタファイルに書き込むべき命令が前記パイプラインレジスタに格納されているか否かを判定する第二の判定を行う手段と、前記パイプラインレジスタに格納された命令の処理が当該パイプラインステージで終了するか否かを判定する第三の判定を行う手段と、前のパイプラインステージにおけるステージ進行判定の結果を判定する第四の判定を行う手段と、前記第一から第四の判定の少なくとも一つの判定結果に基づき、当該パイプラインステージのステージ進行判定の結果を示す信号を出力する判定手段とを有する。
【発明の効果】
【００１８】
本発明によれば、先行する命令と注目する命令の間に含まれる命令数が多い場合もオペランドフォワードが可能になり、レジスタファイルのリード回数を削減して消費電力を低減することができる。
【図面の簡単な説明】
【００１９】
【図１】プロセッサの全体構成例を示すブロック図。
【図２】実施例1の命令実行ユニットの構成例を示す図。
【図３】各パイプラインレジスタの構成例を示す図。
【図４】出力フォワード判定部の構成例を説明する図。
【図５】ステージ進行判定処理を説明するフローチャート。
【図６】実施例2の命令実行ユニットの構成例を示す図。
【図７】出力フォワード判定部の構成例を説明する図。
【図８】ステージ進行判定処理を説明するフローチャート。
【発明を実施するための形態】
【００２０】
以下、本発明にかかる実施例の情報処理を図面を参照して詳細に説明する。
【実施例１】
【００２１】
実施例1では、命令実行ユニットが「命令デコードステージ」「演算ステージ」「メモリステージ」「レジスタファイル書込ステージ」のパイプラインステージに分かれて動作する例を示す。また、説明の簡単化するために、パイプラインストールは発生しないものとして説明を行う。なお、ステージ分割方法やパイプラインストールについては、本実施例の容易な変更により対応可能である。
【００２２】
［プロセッサの構成］
図1のブロック図によりプロセッサの全体構成例を示す。図1に示すプロセッサは、命令フェッチユニット203と命令実行ユニット204を有する。命令フェッチユニット203は、メインメモリから命令198を読み出し、命令198と当該命令の有効を示す命令有効ビット197を命令実行ユニット204に送出する。
【００２３】
命令実行ユニット204は、命令有効ビット197が‘1’であれば、受信した命令198をパイプライン方式により実行する。そして、条件分岐命令を実行した場合は、分岐情報196を介して、分岐の有無と、分岐する場合は新しい命令の読出アドレスを命令フェッチユニット203に送出する。
【００２４】
［命令実行ユニットの構成］
図2により実施例1の命令実行ユニット204の構成例を示す。命令実行ユニット204は次の構成を有する。
【００２５】
パイプラインレジスタとして、命令デコードステージのパイプラインレジスタ100、演算ステージのパイプラインレジスタ101、メモリステージのパイプラインレジスタ102、レジスタファイル書込ステージのパイプラインレジスタ103を有する。
【００２６】
命令デコードステージ用に、命令デコーダ190、レジスタファイル191、フォワード部192、レジスタファイル読出抑止マージ部193a、193b、ステージ進行判定部180、ANDゲート120を有する。
【００２７】
演算ステージ用に、ステージ進行判定部181、ANDゲート121、ORゲート131、出力有効判定部141、出力フォワード判定部171a、171b、演算部194を有する。
【００２８】
メモリステージ用に、ステージ進行判定部182、ANDゲート122、ORゲート132、出力有効判定部142、出力フォワード判定部172a、172b、メモリ部195を有する。
【００２９】
レジスタファイル書込ステージ用に、ステージ進行判定部183、ORゲート133、出力有効判定部143、出力フォワード判定部173a、173bを有する。
【００３０】
●パイプラインレジスタの構成
図3により各パイプラインレジスタの構成例を示す。
【００３１】
図3(A)に示すように、命令デコードステージのパイプラインレジスタ100は、有効フラグ200と命令レジスタ201を有する。
【００３２】
図3(B)に示すように、演算ステージのパイプラインレジスタ101は、有効フラグ210、命令レジスタ211、命令処理結果有効フラグ212、レジスタファイル書込先レジスタ番号213を有する。さらに、ソースオペランド(SRC1)214、ソースオペランド(SRC2)215を有する。
【００３３】
図3(C)に示すように、メモリステージのパイプラインレジスタ102は、有効フラグ220、命令レジスタ221、命令処理結果有効フラグ222、レジスタファイル書込先レジスタ番号223を有する。さらに、命令処理結果224を有する。
【００３４】
図3(D)に示すように、レジスタファイル書込ステージのパイプラインレジスタ103は、有効フラグ230、命令レジスタ231、命令処理結果有効フラグ232、レジスタファイル書込先レジスタ番号233を有する。さらに、命令処理結果234を有する。
【００３５】
命令レジスタ201、211、221、231は、当該ステージで実行中の命令を表す。有効フラグ210、220、230、240は、対応するパイプラインレジスタの有効無効を示す。
【００３６】
有効フラグ200、210、220、230および命令処理結果有効フラグ212、222、232は、セット状態（有効）の値が‘1’であり、リセット（クリア）状態（無効）の値が‘0’とする。有効フラグが‘1’の場合、当該パイプラインレジスタが有する他のレジスタが有効であることが示される。また、命令処理結果有効フラグが‘1’の場合、当該パイプラインレジスタが有する命令処理結果レジスタに、レジスタファイルに書き込むべき有効な命令処理結果が格納されていることが示される。
【００３７】
［命令実行ユニットの動作］
以下では、図2、3を参照して、命令実行ユニット204の動作を（一般的な）プロセッサの動作、本発明におけるパイプライン制御方式の順に説明する。
【００３８】
命令フェッチユニット203から命令デコードステージのパイプラインレジスタ100に、命令198と命令有効ビット197の値‘1’が書き込まれると、命令実行ユニット204は処理を開始する。
【００３９】
命令デコードステージにおいて、命令デコーダ190が命令レジスタ201のデコードを行い、SRC1のレジスタ番号250、SRC2のレジスタ番号251、レジスタファイル書込先レジスタ番号254を出力する。
【００４０】
次に、レジスタファイル191から命令デコーダ190が出力するSRC1のレジスタ番号250、SRC2のレジスタ番号251に対応するソースオペランドレジスタが読み出される。その際、当該レジスタ番号で示されるレジスタの最新の値が、レジスタファイル191にはなく、パイプラインレジスタの命令処理結果にある場合、レジスタファイル191からの読み出しが抑止される。レジスタファイル191からの読み出しには大きなエネルギが必要であり、当該読み出しを抑止することで消費電力を低減する。
【００４１】
この抑止には、演算ステージ、メモリステージおよびレジスタファイル書込ステージの各出力フォワード判定部、並びに、レジスタファイル読出抑止マージ部193a、193bが使用される。
【００４２】
●レジスタファイルの読出抑止
図4により出力フォワード判定部の構成例を説明する。出力フォワード判定部はステージに関係なくすべて同じ構成を有するが、ここでは、演算ステージの出力フォワード判定部171aの動作を説明する。
【００４３】
出力フォワード判定部171aは、演算ステージにおいて、レジスタファイル191に書き込むべき有効な命令処理結果があるか否かを示す出力有効判定部141の出力有効信号260を入力する。そして、パイプラインレジスタ101のレジスタファイル書込先レジスタ番号261と、命令デコーダ190が出力するSRC1のレジスタ番号250が一致し、かつ、出力有効信号260がアサートされると、フォワードフラグ265をアサートする。
【００４４】
レジスタファイル読出抑止マージ部193a、193bは、各出力フォワード判定部からフォワードフラグ265を入力する。そして、何れかのフォワードフラグがアサートされている（何れかのステージがフォワード可能な）場合、レジスタファイル191の読出抑止信号をアサートする。
【００４５】
フォワード部192は、何れかのステージがフォワード可能な場合、フォワード可能なステージのうち最も命令デコードステージに近いステージの命令処理結果を出力する。また、すべてのステージがフォワード不可能な場合、レジスタファイル191から読み出したレジスタ値を出力する。
【００４６】
●演算ステージ
命令レジスタ211が論理演算命令または算術演算命令の場合は、パイプラインレジスタ101に命令処理結果をレジスタファイル191に書き込むべき命令が格納されている場合である。従って、パイプラインレジスタ101の有効フラグ210がセット状態、かつ、命令レジスタ211が論理演算命令または算術演算命令の場合、演算部194は、演算処理を行いレジスタファイル191に書き込むべき有効な命令処理結果270を出力する。つまり、演算ステージにおいて有効な命令処理結果が得られるので、出力有効判定部141は出力有効信号260をアサートする。
【００４７】
命令レジスタ211が条件分岐命令、ロード命令またはストア命令の場合は、パイプラインレジスタ101に命令処理結果をレジスタファイル191に書き込むべき命令が未格納の場合である。従って、有効フラグ210がリセット状態、あるいは、命令レジスタ211が条件分岐命令、ロード命令またはストア命令の場合、演算ステージにおいて有効な命令処理結果が得られないから、出力有効判定部141は出力有効信号260をアサートしない。
【００４８】
命令レジスタ211が条件分岐命令の場合、演算部194は、条件判定を行い、判定結果を分岐情報196として出力する。また、命令レジスタ211がロード命令またはストア命令の場合、演算部194はアドレス計算を行う。
【００４９】
●メモリステージ
パイプラインレジスタ102の有効フラグ220がセット状態、かつ、命令レジスタ221がロード命令またはストア命令の場合、メモリ部195はロード/ストア処理を行う。ロード命令の場合、メモリ部195は、メモリから読み出した値を信号271として出力するが、演算ステージでレジスタファイル191に書き込むべき有効な命令処理結果が得られている命令の場合は、入力値をそのまま信号271として出力する。
【００５０】
メモリステージにおいて、有効フラグ220がセット状態、かつ、命令レジスタ221が論理演算命令、算術演算命令またはロード命令の場合、出力有効判定部142は出力有効信号をアサートする。
【００５１】
●レジスタファイル書込ステージ
レジスタファイル191に書き込むべき有効な命令処理結果が得られている命令の場合、パイプラインレジスタ103の命令処理結果234の値が、レジスタファイル191のレジスタファイル書込先レジスタ番号233が示すレジスタに書き込まれる。
【００５２】
レジスタファイル書込ステージにおいて、パイプラインレジスタ103の有効フラグ230がセット状態、かつ、命令レジスタ231が論理演算命令、算術演算命令またはロード命令の場合、出力有効判定部143は出力有効信号をアサートする。
【００５３】
●ステージ進行判定処理
ステージ進行判定処理の出力信号はHold (H)信号、Go (G)信号、Kill (K)信号の三種類である。H信号がアサートされた場合はパイプラインを進めないことが示される。入力側のパイプラインレジスタのデータが保持され、出力側のパイプラインレジスタには新しいデータが格納されない。
【００５４】
G信号がアサートされた場合はパイプラインを進めることが示される。入力側のパイプラインレジスタは前のステージからの新しいデータがあればそれを格納し、新しいデータがなければパイプラインレジスタの値を消去する。そして、入力側のパイプラインレジスタを入力として現ステージで演算を行い、結果が出力側のパイプラインレジスタに格納される。
【００５５】
K信号がアサートされた場合はそのステージのデータを破棄する。入力側のパイプラインレジスタは新しいデータがあればそれを格納し、新しいデータがなければパイプラインレジスタの値を消去する。出力側のパイプラインレジスタには新しいデータが格納されない。
【００５６】
図5のフローチャートによりステージ進行判定処理を説明する。ステージ進行判定処理は、命令デコードステージ、演算ステージ、メモリステージ、レジスタファイル書込ステージの各ステージ進行判定部において共通に使用される。ここでは、演算ステージのステージ進行判定部181における処理を例に、ステージ進行判定処理の出力とパイプラインレジスタ101、102の動作の関係を説明する。
【００５７】
ステージ進行判定部181は、ステージ進行判定処理の結果がK信号の場合は信号328をアサートし、G信号の場合は信号327をアサートする。また、命令デコードステージにおいて、ステージ進行判定処理の結果がG信号の場合は信号337がアサートされるが、本実施例のパイプラインレジスタはロード信号がアサートされていない場合は出力を保持するので、H信号は使用しない構成である。
【００５８】
信号328または信号327がアサート、かつ、信号337がデアサートの場合、ORゲート131とANDゲート120によりパイプラインレジスタ101の有効フラグ210がリセットされる。つまり、ステージ進行判定部181の判定結果が「ステージのデータの破棄」または「パイプラインを進める」を示し、ステージ進行判定部180の判定結果が「前のステージがパイプラインを進める」を示す場合、有効フラグ210がリセットされる。
【００５９】
信号337がデアサートの場合、演算ステージのパイプラインレジスタ101のロード信号もデアサートであり、パイプラインレジスタ101のレジスタ値が保持される。
【００６０】
また、信号337がアサートされると有効フラグ210がセットされる。つまり、信号337がアサートされている場合、ANDゲート120により有効フラグ210がリセットされることはない。これは、前ステージから新しい命令がパイプラインレジスタにロードされるためである。
【００６１】
また、信号327がアサートされると、メモリステージのパイプラインレジスタ102のロード信号がアサートされ、演算ステージの出力値がパイプラインレジスタ102ロードされる。さらに、パイプラインレジスタ102の有効フラグ220がセットされ、パイプラインレジスタ102が有効であることが示される。
【００６２】
ステージ進行判定処理が開始されると、パイプラインレジスタの有効フラグの状態が判定される(S311)。ステージ進行判定部181は、パイプラインレジスタ101の有効フラグ210がセット状態（パイプラインレジスタ101が有効）の場合は処理をステップS312へ進める。また、有効フラグ210がリセット状態（パイプラインレジスタ101が無効）の場合はK信号を出力する(S318)。
【００６３】
パイプラインレジスタ101が有効の場合、当該ステージの出力有効信号の状態が判定される(S312)。ステージ進行判定部181は、出力有効判定部141の出力有効信号260がアサートされている場合は処理をステップS315へ進め、デアサートの場合は処理をステップS313へ進める。
【００６４】
パイプラインレジスタ101が有効、かつ、出力有効信号がデアサートの場合、レジスタファイルに書き込むべき有効な命令処理結果が得られていない命令のパイプラインステージ進行判定が行われる(S313)。当該命令の実行が当該ステージで終了する場合はK信号が出力される(S318)。また、当該命令の実行に次ステージ以降の処理が必要な場合はG信号が出力される(S317)。演算ステージにおいて例えば条件分岐命令である場合、このステージで処理が終了するため、ステージ進行判定部181はK信号を出力する(S318)。また、ロード命令またはストア命令の場合は次のメモリステージの処理が必要であり、ステージ進行判定部181はG信号を出力する(S317)。
【００６５】
また、パイプラインレジスタの有効フラグがセット状態、かつ、出力有効信号がアサートされている場合、前ステージの命令が当該ステージに進むか否かが判定される(S315)。つまり、前ステージのステージ進行判定部がG信号を出力している場合は当該ステージのステージ進行判定部もG信号を出力する(S317)。また、前ステージのステージ進行判定部がH信号またはK信号を出力している場合は当該ステージのステージ進行判定部はH信号を出力する(S316)。
【００６６】
従来のステージ進行判定処理には、本実施例のステップS315に相当する判定がなく、ステップS312の判定において、当該ステージの出力有効信号がアサートされている場合は常にG信号の出力(S317)に進む構成になっている。本実施例においては、前ステージの命令が当該ステージに進むか否かの判定(S315)により、前ステージのステージ進行判定処理の結果がH信号またはK信号の場合は、現状のままパイプラインレジスタを保持するためにH信号の出力(S316)に進む。
【００６７】
本実施例のステージ進行判定処理によれば、従来のパイプライン制御方式においては次のステージに進むような場合も、現在のステージに留まる確率が高くなる。その結果、先行する命令と注目する命令の間に含まれる命令数が多い場合もオペランドフォワードが可能になる確率が高くなり、レジスタファイル191のリード回数を低減して消費電力を低減することができる。
【実施例２】
【００６８】
以下、本発明にかかる実施例2の情報処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００６９】
実施例2では、書込先レジスタを読み出す命令に対してオペランドフォワードが完了したことを検出し、レジスタファイルへの書き込みが不要になったことを判定する回路を追加する。
【００７０】
図6により実施例2の命令実行ユニット204の構成例を示す。実施例2の命令実行ユニット204は、次の点で、図2に示す実施例1の命令実行ユニット204と異なる。
(1)命令デコーダ190は、デコードを行った際、各ソースオペランドのレジスタについて、次の書き込みまで、参照されるか否かを判定する。そして、参照されないことが保証できる場合、各ソースオペランドのレジスタについて保持不要信号252、253を出力する。
【００７１】
例えば非特許文献1が示す機能が実装された命令デコーダ190は、ディスティネーションオペランドレジスタ番号と、第一のソースオペランドのレジスタ番号を比較する。そして、それらレジスタ番号が同一の場合、第一のソースオペランドについて、次の書き込みまで参照されないことを示す保持不要信号を出力する。また、ソースオペランドのレジスタ番号が次の書き込みまで読み出されないことを示す命令が追加されている場合、それらの命令をデコードすると保持不要信号を出力する。
(2)演算ステージ、メモリステージ、レジスタファイル書込ステージの各出力フォワード判定部がフォワード信号264を出力する。
(3)演算ステージ、メモリステージ、レジスタファイル書込ステージがそれぞれフォワード判定部161、162、163を有する。
(4)演算ステージ、メモリステージ、レジスタファイル書込ステージの各ステージ進行判定部が対応するフォワード判定部の判定信号を入力する。
【００７２】
図7により出力フォワード判定部の構成例を説明する。出力フォワード判定部はステージに関係なくすべて同じ構成を有するが、ここでは、演算ステージの出力フォワード判定部171aの動作を説明する。
【００７３】
出力フォワード判定部171aは、保持不要信号252がアサートされている場合、フォワードフラグ265がアサートされると、フォワード信号264をアサートする構成を有する。
【００７４】
図8のフローチャートによりステージ進行判定処理を説明する。ステージ進行判定処理は、命令デコードステージ、演算ステージ、メモリステージ、レジスタファイル書込ステージの各ステージ進行判定部において共通に使用される。ここでは、演算ステージのステージ進行判定部181における処理を例に、ステージ進行判定処理の出力とパイプラインレジスタ101、102の動作の関係を説明する。
【００７５】
図8に示すステージ進行判定処理が図5に示すステージ進行判定処理と異なる点は、命令処理結果が後の命令にフォワードされ、かつ、保持不要信号264がアサートされているか否かの判定(S314)が追加されている点である。この判定が真の場合、フォワードされた命令以降、次の書き込みまでソースオペランドのレジスタ番号が参照されることはなく、命令処理結果を後の命令へフォワードしたりレジスタファイル191に書き込む必要がない。つまり、ステージ進行判定部181は、K信号308を出力する(S318)。また、ステップS314の判定が偽の場合、処理はステップS315に進む。
【００７６】
このように、命令処理結果が後の命令にフォワードされ、かつ、保持不要信号264がアサートされる場合、自身のステージにおいてK信号を出力する確率が高まり、G信号を出力する確率が低下する。従って、次のステージにおいてはG信号が出力される確率がさらに少なくなる。従って、先行する命令と注目する命令の間に含まれる命令数が多い場合もオペランドフォワードが可能になる確率が高くなり、レジスタファイル191のリード回数が低減する。
【００７７】
さらに、ステップS304の判定により、K信号が出力される確率が高まり、ステージのデータを破棄する確率が高まるので、レジスタファイル191のライト回数も減少する。従って、レジスタファイル191のリード回数とライト回数ともに減少し、消費電力を低減することができる。
【００７８】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記録媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ（又はCPUやMPU等）がプログラムを読み出して実行する処理である。
【図１】
2015121998.tif 000003
【図２】
2015121998.tif 000004
【図３】
2015121998.tif 000005
【図４】
2015121998.tif 000006
【図５】
2015121998.tif 000007
【図６】
2015121998.tif 000008
【図７】
2015121998.tif 000009
【図８】
2015121998.tif 000010