(57)【特許請求の範囲】
【請求項１】
フォワーディング機能を有するプロセッサであって、
レジスタへの書き込み抑制に関する属性情報を保持する保持手段と、
フォワーディングが起きたとき、属性情報に応じてフォワーディングされたデータのレジスタ書き込みを抑制する制御手段と
を備え、
前記保持手段は、少なくとも１つのレジスタに対応させて前記属性情報を保持し、前記プロセッサにより書き換え可能であり、
前記プロセッサはさらに、レジスタへの書き込みを抑制するか否かを指示する制御レジスタを有し、
前記保持手段は制御レジスタに保持されたデータに対応する属性情報を保持する
ことを特徴とするプロセッサ。
【請求項２】
前記プロセッサは、さらに、属性情報を変更する属性変更命令を実行することによって前記保持手段の属性情報を書き換える
ことを特徴とする請求項１記載のプロセッサ。
【請求項３】
オリジナルプログラムを請求項１記載のプロセッサを対象とするプログラムに変換するプログラム変換装置であって、
オリジナルプログラムからレジスタに格納される変数を抽出する抽出手段と、
抽出された変数の生存区間を検出する検出手段と、
前記変数を参照する参照命令が生存区間において１つのみであるか否かを判定する第１判定手段と、
前記生存区間において、前記変数を定義する定義命令と前記参照命令とがフォワーディングの対象となるか否かを判定する第２判定手段と、
参照命令が生存区間において１つのみであると判定され、かつフォワーディングの対象となると判定された場合に、前記定義命令によるレジスタ書き込みを抑制する抑制命令を含むプログラムを生成する生成手段と
を有し、
前記抑制命令は、前記生存期間の前に前記変数を格納すべきレジスタへの書き込みを抑制する属性情報を、前記保持手段に設定する属性変更命令、および前記生存期間の後に前記変数を格納すべきレジスタへの書き込みを抑制しない属性情報を、前記保持手段に設定する属性変更命令であり、
前記生成手段は、オリジナルプログラムに前記属性変更命令を追加する
ことを特徴とするプログラム変換装置。
【請求項４】
前記抑制命令は、前記参照命令と同じ操作内容とレジスタ書き込み抑制指示を伴う抑制付き参照命令であり、
前記生成手段は、オリジナルプログラムにおける前記定義命令を前記抑制付き定義命令に変更することにより、前記プログラムを生成する
ことを特徴とする請求項３記載のプログラム変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォワーディング制御を有するプロセッサに関し、特に低消費電力化に関する。
【背景技術】
【０００２】
従来、パイプライン化されたプロセッサでは、処理性能の向上のため、フォワーディング（ＦＷＤ）制御が用いられる。フォワーディング制御とは、先行する命令の実行結果を出力するステージ（たとえばＭＥＭ（メモリアクセス）ステージ、ＷＢ（ライトバック）ステージ）から、後の命令のデータのフェッチするステージ（ＥＸステージ）に先送りする制御をいう。これにより、先行する命令の実行結果であるデータをバイパスするので、データハザードを解消または低減することができる。
【０００３】
図１は、フォワーディング制御機構を有する、従来のパイプライン化されたプロセッサの構成を示す図である。図中、太線は主にデータを、細線は主に制御信号を示す。
【０００４】
同図で示されるように、フォワーディング制御機構を有する、従来のパイプライン化されたプロセッサは、命令解読部９１０と、命令制御部９２０と、命令実行部９３０と、レジスタファイル９４０とを備える。命令制御部９２０は、ＦＷＤ制御回路９２１、レジスタファイル書き込み回路９２２、パイプラインバッファ制御回路９２３、演算処理制御回路９２４、メモリアクセス制御回路９２５を有する。命令実行部９３０は、演算処理実行回路９３１、メモリアクセス実行回路９３２、ＦＷＤセレクタ９３３、ＭＥＭセレクタ９３４、パイプラインバッファ（ＥＸ）９３５、パイプラインバッファ（ＭＥＭ）９３６、パイプラインバッファ（ＷＢ）９３７を有する。レジスタファイル９４０は、レジスタ番号（＃０〜＃Ｎ）で管理される複数のレジスタ（Ｒｅｇ＃０〜Ｒｅｇ＃Ｎ）からなるデータ保持部９４２を有する。また、パイプラインは、ＤＥＣ（Decode）ステージ、ＩＤ（Instruction Dispatch and register fetch）ステージ、ＥＸ（EXecute）ステージ、ＭＥＭ（MEMory access）ステージ、ＷＢ（Write Back）ステージの５つのステージを含む。
【０００５】
まず、従来のパイプライン化されたプロセッサにおける命令実行時の動作に関して、パイプラインのステージごとに説明する。
【０００６】
ＤＥＣステージでは、命令解読部９１０は、ＩＤステージ以降で使用される命令解読情報の生成を行い、命令制御部９２０に出力する。
【０００７】
ＩＤステージでは、命令解読情報に従ってレジスタファイル９４０からレジスタデータを読み出すことにより命令実行用の入力データを生成し、パイプラインバッファ（ＥＸ）９３５に出力する。
【０００８】
ＥＸステージでは、パイプラインバッファ（ＥＸ）９３５に格納された命令実行入力データに対し、命令解読情報に従い、演算処理制御回路９２４またはメモリアクセス制御回路９２５が制御信号を生成し、演算処理実行回路９３１、メモリアクセス実行回路９３２を動作させる。
【０００９】
また、パイプラインバッファ制御回路９２３は、パイプラインバッファ（ＭＥＭ）９３６を開き、演算処理実行回路９３１の出力である演算処理を行う命令に対する命令実行結果を格納する。
【００１０】
ＭＥＭステージでは、パイプラインバッファ制御回路９２３が、命令解読情報に従い、パイプラインバッファ（ＭＥＭ）９３６の値またはメモリアクセスを行う命令に対する命令実行結果であるメモリアクセス実行回路９３２の出力のいずれかを選択するように選択制御信号を生成し、ＭＥＭセレクタ９３４に出力する。
【００１１】
また、パイプラインバッファ制御回路９２３は、パイプラインバッファ（ＷＢ）９３７を開き、ＥＭセレクタ９３４の出力である命令実行結果を格納する。
【００１２】
ＷＢステージでは、命令解読情報に従い、レジスタファイル書き込み制御回路９２３が、レジスタファイル９４０に対する書き込み選択制御信号を生成し、パイプラインバッファ（ＷＢ）９３７の出力である命令実行結果をレジスタファイル９４０に書き込むことで、データ保持部９４２が更新される。
【００１３】
次に、フォワーディング制御機構について説明する。
【００１４】
ＦＷＤ制御回路９２１は、先行の命令として実行されるＥＸステージ、ＭＥＭステージ、ＷＢステージの命令により書き込まれる各レジスタと、後続の命令として実行されるＩＤステージの命令により読み出されるレジスタとが一致するかどうかの判定を行う。この判定結果により次の（１）〜（４）の動作に分かれる。
【００１５】
（１）判定の結果、ＩＤステージの命令により読み出されるレジスタと、ＥＸステージ、ＭＥＭステージ、ＷＢステージの命令により書き込まれるレジスタのいずれかとが一致しない場合は、ＦＷＤ制御回路９２１は、命令実行入力データとして、レジスタファイル９４０から読み出されたレジスタデータが選択されるように選択制御信号を生成し、ＦＷＤセレクタ９３３に出力する。
【００１６】
（２）ＩＤステージの命令が読み出すレジスタと、ＥＸステージの命令が書き込むレジスタが、一致する場合は、読み出すべきレジスタに対する命令実行結果がまだ正しく書き込まれていないため、ＦＷＤ制御回路９２１は、一時、パイプランを停止させる。
【００１７】
（３）ＩＤステージの命令が読み出すレジスタと、ＭＥＭステージの命令が書き込むレジスタが、一致する場合は、命令実行結果をＭＥＭステージからＩＤステージにフォワーディングするパスが存在するため、ＦＷＤ制御回路９２１は、命令実行用の入力データとして、命令実行結果をＭＥＭステージからＩＤステージにフォワーディングするパスが選択されるように選択制御信号を生成し、ＦＷＤセレクタ９３３に出力する。
【００１８】
（４）ＩＤステージの命令が読み出すレジスタと、ＷＢステージの命令が書き込むレジスタが、一致する場合は、命令実行結果をＷＢステージからＩＤステージにフォワーディングするパスが存在するため、ＦＷＤ制御回路９２１は、命令実行入力データとして、命令実行結果をＷＢステージからＩＤステージにフォワーディングするパスが選択されるように選択制御信号を生成し、ＦＷＤセレクタ９３３に出力する。これにより、ＷＢステージからＩＤステージにフォワーディング動作がなされる。
【００１９】
パイプラインバッファ制御回路９２３は、パイプラインバッファ（ＥＸ）９３５を開き、ＦＷＤセレクタ９３３の出力である命令実行入力データを格納する。
【００２０】
さらに、フォワーディング動作がなされる命令列の一例について図２Ａ〜図２Ｄを用いて説明する。
【００２１】
図２Ａは、データ依存関係を有する命令列の一例を示す。同図の先行するロード（ｌｄ）命令は、Ｒｅｇ＃３１の値をアドレスとしてメモリからデータを読み出して、読み出したデータをＲｅｇ＃０にロードすることを指示する命令である。後続する加算（ａｄｄ）命令は、Ｒｅｇ＃０の値とＲｅｇ＃１の値とを加算し、加算結果をＲｅｇ＃２に格納することを指示する命令である。
【００２２】
図２Ｂは、フォワーディングのうち特にＭＥＭステージからＩＤステージへのフォワーディングのタイミングを示す一例であり、図２Ａの命令列を実行時のパイプラインステージと実行サイクルとを示す図である。ただしＤＥＣステージ以前は省略してある。上記ロード命令はＩＤステージ、ＥＸステージ、ＭＥＭステージ、ＷＢステージをｔ１〜ｔ３の４サイクルでハザードを生じさせることなく順にパイプライン処理される。上記ａｄｄ命令は、上記４つのステージをｔ２〜ｔ５の５サイクルで処理され、ｔ３サイクルでハザードを生じさせている。ｔ３サイクルでは、先行するロード命令の実行（Ｒｅｇ＃０に格納すべきデータをメモリから読み出すこと）が完了していないため、後続するａｄｄ命令の実行に要する入力データ（Ｒｅｇ＃０に格納すべきデータ）が読み出されていないからである。しかしｔ３サイクル（特にその後半）では、先行するロード命令のＭＥＭステージから後続する加算命令のＩＤステージに対して入力データ（Ｒｅｇ＃０に格納すべきデータ）が、ＭＥＭセレクタ９３４からＦＷＤセレクタ９３３を介してパイプラインバッファ（ＥＸ）９３５にフォワーディングされる。これにより、ｔ３から４サイクルに変化するとき、Ｒｅｇ＃０への書き込みは完了していないが、後続命令するａｄｄ命令がＩＤステージからＥＸステージに移行することができる。
【００２３】
なお、図２Ｂは、図２Ａにおいてロード命令と加算命令の間にメモリアクセスしない単純な命令（例えば、レジスタ、メモリに対して何も処理しないことを指示する命令であるノップ（ｎｏｐ）命令など）が１つ挿入されている場合も同じタイミングとなる。このように、ＭＥＭステージからＩＤステージへのフォワード動作は、図２Ａの命令列の場合や、図２Ａの命令列に対してロード命令と加算命令との間に単純な命令が１つ挿入されている場合に実行される。また、命令が１つ挿入されている場合にはハザードを発生させない。
【００２４】
図２Ｃは、フォワーディングのうち特にＷＢステージからＩＤステージへのフォワーディングのタイミングを示す一例であり、図２Ａにおいてロード命令と加算命令の間にメモリアクセスしない単純な命令が２つ挿入されている場合のパイプラインステージと実行サイクルとを示す図である。この例では、ロード命令と加算命令の間に挿入された２つの命令をｉｎｓｔ１、ｉｎｓｔ２と表記している。上記ａｄｄ命令は、上記４つのステージをｔ４〜ｔ７の４サイクルで処理される。ここで、ｔ４サイクル（特にその後半）では、先行するロード命令のＷＢステージから後続する加算命令のＩＤステージに対して、入力データ（Ｒｅｇ＃０に格納すべきデータ）がＭＥＭセレクタ９３４からＦＷＤセレクタ９３３を介してパイプラインバッファ（ＥＸ）９３５にフォワーディングされる。これにより、ｔ４サイクルではＲｅｇ＃０への書き込みさえ完了していないのに、後続命令するａｄｄ命令がＩＤステージからＥＸステージに移行することができる。これにより、ｔ４から５サイクルに変化するとき、Ｒｅｇ＃０の読み出しができないのに、後続命令するａｄｄ命令がＩＤステージからＥＸステージに移行することができる。このように、ＷＢステージからＩＤステージへのフォワード動作は、図２Ａの命令列に対してロード命令と加算命令との間に単純な命令が２つ挿入されているような場合に実行され、しかも、このような命令列はハザードを発生させない。
【００２５】
図２Ｄは、図２Ａの命令列をフォワーディング機構を有しないプロセッサで実行した場合のパイプラインステージと実行サイクルとを示す図である。この場合、３サイクルのハザードが生じている。先行するロード命令のＷＢステージでＲｅｇ＃０への書き込みが完了してから、後続する命令ａｄｄ命令がＩＤステージでＲｅｇ＃０を読み出すからである。
【非特許文献１】ジョン・L. ヘネシー 、デイビッド・Ａ・パターソン著「コンピュータの構成と設計第２版（下）−ハードウエアとソフトウェアのインタフェース−」日経ＢＰ社発行、２００５年６月２日、 ｐ４４０〜４５２
【発明の開示】
【発明が解決しようとする課題】
【００２６】
しかしながら、上記従来技術によれば、レジスタファイルへの不要な書き込みにより電力が消費される場合があるという問題がある。具体的には、従来の技術においては、先行する命令の実行結果であるレジスタデータが後続する１命令にのみ参照され、かつ、フォワーディング動作が発生した場合は、先行の命令による命令実行結果が、レジスタファイル９４０に対し、書き込まれたとしても、以降の命令で、この値が読み出されることはない。
【００２７】
上記課題に鑑みて本発明は、レジスタファイルへの不要な書き込みによる電力を削減し、低消費電力なプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００２８】
前記目的を達成するために、本発明のプロセッサは、フォワーディング機能を有するプロセッサであって、レジスタへの書き込み抑制に関する属性情報を保持する保持手段と、フォワーディングが起きたとき、属性情報に応じてフォワーディングされたデータのレジスタ書き込みを抑制する制御手段とを備える。
【００２９】
この構成によれば、レジスタファイルに対する不要な書き込みによる電力を削減でき、より低消費電力を実現することができる。
【００３０】
ここで、前記保持手段は、少なくとも１つのレジスタに対応させて前記属性情報を保持するようにしてもよい。
【００３１】
この構成によれば、レジスタへの不要な書き込み抑制するか否かを、レジスタの属性として設定することができる。
【００３２】
ここで、前記プロセッサは、パイプラインステージ間でデータを順に受け渡す複数段のパイプランバッファを有し、前記保持手段は、複数のパイプラインバッファの一部であり、フォワーディング対象のデータと共に前記属性情報を後段のパイプラインバッファに受け渡す構成としてもよい。
【００３３】
この構成によれば、レジスタへの不要な書き込み抑制するか否かを、命令で指定されるオペランドデータの属性として設定することができる。
【００３４】
ここで、前記プロセッサは、さらに、レジスタ書き込み抑制指示を含む命令を解読したとき、前記属性情報をパイプラインバッファに出力する命令解読部を備えるようにしてもよい。
【００３５】
この構成によれば、レジスタ書き込み抑制指示（属性）を命令毎に設定することができる。
【００３６】
ここで、前記プロセッサは、パイプラインステージ間でデータを順に受け渡す複数段のパイプランバッファを有し、前記抑制手段は、さらに、データがフォワーディングされたとき、当該データをそれ以降のパイプラインバッファに書き込むことを抑制するようにしてもよい。
【００３７】
この構成によれば、レジスタへの不要な書き込みを抑制することに加えて、既にフォワーディングされたデータを、それ以降のパイプラインバッファに書き込むことをも抑制するので、さらに低消費電力を実現することができる。
【００３８】
ここで、前記プロセッサはさらに、レジスタへの書き込みを抑制するか否かを指示する制御レジスタを有し、前記保持手段は制御レジスタに保持されたデータに対応する属性情報を保持するようにしてもよい。
【００３９】
この構成によれば、保持手段の属性情報を制御レジスタの設定によって変更することができる。例えば、レジスタへの書き込みを抑制しないように制御レジスタを設定すれば、既存のプログラムとの互換性を維持することができ、特定のレジスタへの書き込みを抑制するように制御レジスタを設定すれば、新たなプログラムを実行することができる。
【００４０】
ここで、前記プロセッサは、さらに、属性情報を変更する属性変更命令を実行することによって前記保持手段の属性情報を書き換えるようにしてもよい。
【００４１】
この構成によれば、レジスタへの不要な書き込み抑制するか否かを設定するレジスタの属性を、属性変更命令によって任意に変更することができる。
【００４２】
また、本発明のプログラム変換装置は、オリジナルプログラムを請求項１記載のプロセッサを対象とするプログラムに変換するプログラム変換装置であって、オリジナルプログラムからレジスタに格納される変数を抽出する抽出手段と、抽出された変数の生存区間を検出する検出手段と、前記変数を参照する参照命令が生存区間において１つのみであるか否かを判定する第１判定手段と、前記生存区間において、前記変数を定義する定義命令と前記参照命令とがフォワーディングの対象となるか否かを判定する第２判定手段と、参照命令が生存区間において１つのみであると判定され、かつフォワーディングの対象となると判定された場合に、前記定義命令によるレジスタ書き込みを抑制する抑制命令を含むプログラムを生成する生成手段とを有する。
【００４３】
この構成によれば、レジスタファイルに対する不要な書き込みによる電力を削減でき、より低消費電力を実現するプログラムを生成することができる。
【００４４】
また、本発明のプログラム変換方法も、上記と同様の手段を有する。
【００４５】
また、属性情報は、フォワーディング動作が発生した場合、命令の実行結果をレジスタファイルに書き込むか否か表す。
【００４６】
これによって、フォワーディング動作が発生した場合は、属性情報により、レジスタファイルへの書き込みを行うかどうかを判定し、書き込みが必要ないと判定された場合は、レジスタファイルへの書き込みを抑制することで、電力を削減できる。
【発明の効果】
【００４７】
以上、本発明に係るプロセッサによれば、レジスタファイルに対する不要な書き込みによる電力を削減でき、より低消費電力を実現したプロセッサを提供することができる。
【発明を実施するための最良の形態】
【００４８】
（実施の形態１）
実施の形態１におけるプロセッサは、個々のレジスタが、それぞれ個別の属性情報を持つ複数のレジスタからなるレジスタファイルを有し、属性情報によって、レジスタファイルへの書き込みの有無を制御することを特徴とする。
【００４９】
以下、本発明に係る実施の形態１について、図面を参照しながら説明する。
【００５０】
図３は、実施の形態１おけるプロセッサの構成を示す図である。図中、太線は主にデータを、細線は主に制御信号を示す。本プロセッサは、パイプライン化され、フォワーディング機構を有する。図で示されるように、本プロセッサは、命令解読部１１０と、命令制御部１２０と、命令実行部１３０と、レジスタファイル１４０とを備える。
【００５１】
命令制御部１２０は、ＦＷＤ制御回路１２１、レジスタファイル書き込み回路１２２、パイプラインバッファ制御回路１２３、演算処理制御回路１２４、メモリアクセス制御回路１２５、レジスタ書き込み抑制部１２６を有する。また、命令実行部１３０は、演算処理実行回路１３１、メモリアクセス実行回路１３２、ＦＷＤセレクタ１３３、ＭＥＭセレクタ１３４、パイプラインバッファ（ＥＸ）１３５、パイプラインバッファ（ＭＥＭ）１３６、パイプラインバッファ（ＷＢ）１３７、抑制ゲート１３８、抑制ゲート１３９を有する。このうち、レジスタ書き込み抑制部１２６、抑制ゲート１３８および抑制ゲート１３９は、フォワーディングが起きたとき、属性情報に応じてフォワーディングされたデータのレジスタ書き込みを抑制する制御手段として機能する。
【００５２】
レジスタファイル１４０は、レジスタ番号（＃０〜＃Ｎ）で管理され属性情報保持部１４１およびデータ保持部１４２からなる。属性情報保持部１４１はレジスタ番号に対応さする複数の属性情報（Ａｔｒ＃０〜Ａｔｒ＃Ｎ）を保持する。データ保持部１４２はレジスタ番号に対応させて、データを保持する複数のレジスタ（Ｒｅｇ＃０〜Ｒｅｇ＃Ｎ）からなる。属性情報保持部１４１は、レジスタへの書き込み抑制に関する属性情報を保持する。各属性情報は「フォワーディング動作が発生した場合、命令の実行結果を対応するレジスタに書き込むか否か」を表し、「フォワーディング動作が発生した場合、命令の実行結果をレジスタファイルに書き込む」場合は０、「フォワーディング動作が発生した場合、命令の実行結果をレジスタファイルに書き込まない」場合は１に設定される。
【００５３】
また、上記プロセッサは、パイプラインステージとして、ＤＥＣステージ、ＩＤステージ、ＥＸステージ、ＭＥＭステージ、ＷＢステージの５つを含む。
【００５４】
以上のように構成された本実施の形態におけるプロセッサの動作に関して、パイプラインのステージごとに説明する。
【００５５】
（ＤＥＣステージ）
ＤＥＣステージでは、命令解読部１１０により、ＩＤステージ以降で使用される命令解読情報の生成を行い、命令制御部１２０に出力する。
【００５６】
（ＩＤステージ）
ＩＤステージでは、命令実行時に読み出すレジスタの値を、命令実行入力データとして生成し、命令実行部１３０に出力する。
【００５７】
はじめに、ＦＷＤ制御回路１２１は、後続の命令として実行されるＩＤステージの命令が読み出すレジスタと、先行の命令として実行されるＥＸステージ、ＭＥＭステージ、ＷＢステージの命令が書き込むレジスタが、一致するかどうかの判定を行う。この判定結果により次の（１）〜（４）の動作に分かれる。
【００５８】
（１）ＩＤステージの命令が読み出すレジスタと、ＥＸステージ、ＭＥＭステージ、ＷＢステージの命令が書き込むレジスタが、いずれも一致しない場合は、ＦＷＤ制御回路１２１は、命令実行入力データとして、レジスタファイル１４０からの直接の値が選択されるように選択制御信号を生成し、ＦＷＤセレクタ１３３に出力する。
【００５９】
（２）ＩＤステージの命令が読み出すレジスタと、ＥＸステージの命令が書き込むレジスタが、一致する場合は、読み出すべきレジスタに対する命令実行結果を読み出すことができないため、ＦＷＤ制御回路１２１は、一時、パイプランを停止させる。
【００６０】
（３）ＩＤステージの命令が読み出すレジスタと、ＭＥＭステージの命令が書き込むレジスタが、一致する場合は、命令実行結果をＭＥＭステージからＩＤステージにフォワーディングするパスが存在するため、ＦＷＤ制御回路１２１は、命令実行入力データとして、命令実行結果をＭＥＭステージからＩＤステージにフォワーディングするパスが選択されるように選択制御信号を生成し、ＦＷＤセレクタ１３３に出力する。このようにしてＭＥＭステージからＩＤステージへのフォワーディング動作が行われる。
【００６１】
このとき、フォワーディングされたデータの書き込み先レジスタに対応する属性情報が１であれば、レジスタ書き込み抑制部１２６は、抑制ゲート１３８にマスク信号ＭＡＳＫ−ＭＥＭをアサートする。マスク信号ＭＡＳＫ−ＭＥＭがアサートされると、抑制ゲート１３８は、パイプラインバッファ（ＭＥＭ）１３６からパイプラインバッファ（ＷＢ）１３７に出力されるＷＥ（Write Enable）信号をマスクすることにより、フォワーディングされたデータのレジスタへの書き込みを抑制する。
【００６２】
（４）ＩＤステージの命令が読み出すレジスタと、ＷＢステージの命令が書き込むレジスタが、一致する場合は、命令実行結果をＷＢステージからＩＤステージにフォワーディングするパスが存在するため、ＦＷＤ制御回路１２１は、命令実行入力データとして、命令実行結果をＷＢステージからＩＤステージにフォワーディングするパスが選択されるように選択制御信号を生成し、ＦＷＤセレクタ１３３に出力する。パイプラインバッファ制御回路１２３は、パイプラインバッファ（ＥＸ）１３５を開き、ＦＷＤセレクタ１３３の出力である命令実行入力データを格納する。このようにしてＷＢステージからＩＤステージへのフォワーディング動作が行われる。
【００６３】
このとき、フォワーディングされたデータの書き込み先レジスタに対応する属性情報が１であれば、レジスタ書き込み抑制部１２６は、抑制ゲート１３９にマスク信号ＭＡＳＫ−ＷＢをアサートする。マスク信号ＭＡＳＫ−ＷＢがアサートされると、抑制ゲート１３９がパイプラインバッファ（ＷＢ）１３７からレジスタファイル１４０に出力されるＷＥ（Write Enable）信号をマスクすることにより、フォワーディングされたデータのレジスタへの書き込みを抑制する。
【００６４】
（ＥＸステージ）
ＥＸステージでは、パイプラインバッファ（ＥＸ）１３５に格納された命令実行入力データに対し、命令解読情報に従い、演算処理制御回路１２４またはメモリアクセス制御回路１２５が制御信号を生成し、演算処理実行回路１３１、メモリアクセス実行回路１３２が動作させる。
【００６５】
また、パイプラインバッファ制御回路１２３は、パイプラインバッファ（ＭＥＭ）１３６を開き、演算処理実行回路１３１の出力である演算処理を行う命令に対する命令実行結果を格納する。
【００６６】
（ＭＥＭステージ）
ＭＥＭステージでは、パイプラインバッファ制御回路１２３が、命令解読情報に従い、パイプラインバッファ（ＭＥＭ）１３６の値またはメモリアクセスを行う命令に対する命令実行結果であるメモリアクセス実行回路１３２の出力のいずれかを選択するように選択制御信号を生成し、ＭＥＭセレクタ１３４に出力する。
【００６７】
また、パイプラインバッファ制御回路１２３は、パイプラインバッファ（ＷＢ）１３７を開き、ＭＥＭセレクタ１３４の出力である命令実行結果を格納する。
【００６８】
（ＷＢステージ）
ＷＢステージでは、命令解読情報に従い、レジスタファイル書き込み制御回路１２３が、レジスタファイル１４０に対する書き込み制御信号を生成し、パイプラインバッファ（ＷＢ）１３７の出力である命令実行結果をレジスタファイル１４０に書き込むことで、データ保持部１４２が更新される。
【００６９】
但し、属性情報保持部１４１が１、かつ、ＦＷＤ制御回路１２１からＭＥＭステージ、または、ＷＢステージの段階で、後続の命令によって、命令実行結果をフォワーディング動作により読み出されていたことが検出された場合は、レジスタファイル書き込み制御回路１２３が、レジスタファイル１４０に対する書き込み制御信号を生成せず、パイプラインバッファ（ＷＢ）１３７の出力である命令実行結果をレジスタファイル１４０に書き込まれることはなくなり、データ保持部１４２は更新されない。
【００７０】
図４は、レジスタ書き込み抑制回路１２６およびその周辺の構成例を示す図である。同図において、レジスタ書き込み抑制回路１２６は、属性セレクタ１２６ａ、アンドゲート１２６ｂ、属性セレクタ１２６ｃ、アンドゲート１２６ｄを備える。また、同図では、パイプラインステージ間でデータを順に受け渡す複数段のパイプラインバッファのうち、パイプラインバッファ（ＥＸ）１３５、パイプラインバッファ（ＭＥＭ）１３６、パイプラインバッファ（ＷＢ）１３７それぞれの一部分を図示している。図中のＷＮ（Write Number）は、書き込み先のレジスタ番号を示す。ＷＥはレジスタへの書き込み制御信号を示す。ＦＷＤ−ＭＥＭ信号はＭＥＭステージからＩＤステージへフォワーディングすることを示す信号であり、ＦＷＤ制御回路１２１から出力される。ＦＷＤ−ＷＢ信号はＷＢステージからＩＤステージへフォワーディングすることを示す信号であり、ＦＷＤ制御回路１２１から出力される。
【００７１】
属性セレクタ１２６ａは、属性情報保持部１４１に保持された属性情報（Ａｔｒ＃０〜ＡＴＲ＃Ｎ）のうち、パイプラインバッファ（ＭＥＭ）１３６に保持されたＷＮが示すレジスタ番号に対応する属性情報を選択する。つまり、選択される属性情報は、ＭＥＭステージのデータの書き込み先を示すレジスタ番号である。
【００７２】
アンドゲート１２６ｂは、属性セレクタ１２６ａにより選択された属性情報とＦＷＤ−ＭＥＭ信号とのアンドをとり、マスク信号ＭＡＳＫ−ＭＥＭとして出力する。つまり、アンドゲート１２６ｂは、命令実行結果であるデータがＭＥＭステージからＩＤステージへフォワーディングされ、かつ、そのデータの書き込み先レジスタの属性情報が「命令の実行結果をレジスタファイルに書き込まない」場合に、マスク信号ＭＡＳＫ−ＭＥＭをアサートする。
【００７３】
属性セレクタ１２６ｃは、属性情報保持部１４１に保持された属性情報（Ａｔｒ＃０〜ＡＴＲ＃Ｎ）のうち、パイプラインバッファ（ＷＢ）１３７に保持されたＷＮが示すレジスタ番号に対応する属性情報を選択する。つまり、選択される属性情報は、ＷＢステージのデータの書き込み先を示すレジスタ番号である。
【００７４】
アンドゲート１２６ｄは、属性セレクタ１２６ｃにより選択された属性情報とＦＷＤ−ＥＢ信号とのアンドをとり、マスク信号ＭＡＳＫ−ＷＢとして出力する。つまり、アンドゲート１２６ｄは、命令実行結果であるデータがＷＢステージからＩＤステージへフォワーディングされ、かつ、そのデータの書き込み先レジスタの属性情報が「命令の実行結果をレジスタファイルに書き込まない」場合に、マスク信号ＭＡＳＫ−ＷＢをアサートする。
【００７５】
抑制ゲート１３８は、マスク信号ＭＡＳＫ−ＭＥＭに従ってパイプラインバッファ（ＭＥＭ）１３６からパイプラインバッファ（ＷＢ）１３７に出力されるＷＥ（Write
Enable）信号をマスクする。これによりフォワーディングされたデータのレジスタへの書き込みが抑制される。
【００７６】
抑制ゲート１３９は、マスク信号ＭＡＳＫ−ＷＢに従ってパイプラインバッファ（ＷＢ）１３７からレジスタファイル１４０に出力されるＷＥ（Write Enable）信号をマスクする。これによりフォワーディングされたデータのレジスタへの書き込みが抑制される。
【００７７】
以上、本発明に係る実施の形態１のプロセッサにおいては、フォワーディング動作が発生した場合は、属性情報保持部１４１に保持された属性情報に応じて、レジスタ書き込み抑制回路１２６は、フォワーディングされたデータのレジスタ書き込みを抑制する。これにより、レジスタファイル１４０への不要な書き込みを抑制することで、消費電力を削減できる。
【００７８】
なお、属性情報Ａｔｒ＃１〜＃Ｎのうち、全部または一部の属性情報を固定としてもよい。また、プロセッサのパイプライン段数は、フォワーディングパスが少なくとも１つ存在する構成であれば何段でもよい。
【００７９】
（実施の形態２）
以下、本発明に係る実施の形態２について、図面を参照しながら説明する。
【００８０】
実施の形態２におけるプロセッサは、実施の形態１におけるプロセッサに加え、命令実行部の内部資源であるパイプラインバッファの変更の有無を制御することを特徴とする。
【００８１】
以上の点を踏まえて、本発明における実施の形態２におけるプロセッサについて説明する。
【００８２】
図５は、実施の形態２におけるプロセッサの構成を示す図である。図５のプロセッサの構成と実施の形態１におけるプロセッサの構成と異なる点は、抑制ゲート２０１が追加されている点である。
【００８３】
以上のように構成された本実施の形態におけるプロセッサの動作に関して、実施の形態１におけるプロセッサと同じ点は説明を省略し、異なる（ＭＥＭステージ）点について説明する。
【００８４】
抑制ゲート２０１は、ＭＡＳＫ−ＷＢ信号に従ってパイプラインバッファ（ＷＢ）１３７への書き込み制御信号をマスクする。これにより、パイプラインバッファ（ＷＢ）１３７への書き込み動作を抑制するので、レジスタファイル１４０の消費電力低減に加えて、パイプラインバッファ（ＷＢ）１３７の消費電力を低減することができる。
【００８５】
（ＭＥＭステージ）
ＭＥＭステージでは、パイプラインバッファ制御回路１２３が、命令解読情報に従い、パイプラインバッファ（ＭＥＭ）２３６の値またはメモリアクセスを行う命令に対する命令実行結果であるメモリアクセス実行回路１３２の出力のいずれかを選択するように選択制御信号を生成し、ＭＥＭセレクタ１３４に出力する。
【００８６】
また、パイプラインバッファ制御回路１２３は、パイプラインバッファ（ＷＢ）１３７への書き込み制御信号によって、パイプラインバッファ（ＷＢ）１３７を開き、ＭＥＭセレクタ１３４の出力である命令実行結果を格納する。
【００８７】
但し、属性情報保持部１４１が１、かつ、ＦＷＤ制御回路１２１からＭＥＭステージの段階で、後続の命令によって、命令実行結果をフォワーディング動作により読み出されていたことが検出された場合は、ＭＡＳＫ−ＷＢ信号がアサートされる。これに従って抑制ゲート２０１はパイプラインバッファ（ＷＢ）１３７への書き込み制御信号をマスクする。
【００８８】
その結果、パイプラインバッファ制御回路１２３は、パイプラインバッファ（ＷＢ）１３７を開かず、ＭＥＭセレクタ１３４の出力である命令実行結果をパイプラインバッファ（ＷＢ）１３７に格納しない。
【００８９】
以上、本発明に係る実施の形態２のプロセッサにおいては、フォワーディング動作が発生した場合は、属性情報保持部１４１により、パイプラインバッファ（ＷＢ）１３７への不要な格納を抑制することで、電力を削減できる。
【００９０】
なお、書き込みの抑制の対象は最終段のパイプラインバッファに限らず、データがフォワーディングされたステージより後段のパイプラインバッファに書き込むことを抑制すればよい。また、パイプラインバッファの全部でなく一部（少なくともＷＮとＷＥを保持する部分）への書き込み動作を抑制してもよい。
【００９１】
（実施の形態３）
以下、本発明に係る実施の形態３について、図６を用いて説明する。
【００９２】
実施の形態３におけるプロセッサは、実施の形態１におけるプロセッサ異なる点は、属性情報が変化することなく、常に一意に決定しているレジスタを、個別に有する点である。
【００９３】
図６は、実施の形態３におけるプロセッサの構成を示す図である。図６のプロセッサの構成と実施の形態１におけるプロセッサの構成と異なる点は、レジスタファイル１４０の代わりに、属性情報保持部１４１を有するレジスタファイル３４０を備え、レジスタ書き込み抑制回路１２６の代わりにレジスタ書き込み抑制回路３２６を備える点である。
【００９４】
以上のように構成された本実施の形態におけるプロセッサの動作に関して、実施の形態１におけるプロセッサと同じ点は説明を省略し、異なる点について説明する。
【００９５】
レジスタファイル３４０に含まれる個々のレジスタに対応する属性を保持する属性情報保持部１４１を有するのではなく、特定のレジスタ（レジスタ番号  Ｒｅｇ＃Ｎ）に対応する属性（常に１）を保持する属性情報保持部３４１を備えている。
【００９６】
レジスタ書き込み抑制回路３２６は、レジスタ書き込み抑制回路１２６と同じ構成でも問題ないが、図４に示した属性セレクタ１２６ａ、１２６ｃを削除し、Ａｔｒ＃Ｎをアンドゲート１２６ｂ、１２６ｄにそれぞれ直接入力する回路構成でよい。
【００９７】
（ＷＢステージ）
ＷＢステージでは、命令解読情報に従い、レジスタファイル書き込み制御回路１２２が、レジスタファイル３４０に対する書き込み制御信号を生成し、パイプラインバッファ（ＷＢ）１３７の出力である命令実行結果をレジスタファイル３４０に書き込むことで、データ保持部１４２が更新される。
【００９８】
但し、特定のレジスタ（レジスタ番号  Ｒｅｇ＃Ｎ）に対する書き込みが行われる命令、かつ、ＦＷＤ制御回路１２１からＭＥＭステージ、または、ＷＢステージの段階で、後続の命令によって、命令実行結果をフォワーディング動作により読み出されていたことが検出された場合は、レジスタファイル書き込み制御回路１２３が、レジスタファイル３４０に対する書き込み制御信号を生成せず、パイプラインバッファ（ＷＢ）１３７の出力である命令実行結果をレジスタファイル３４０に書き込まれることはなくなり、データ保持部１４２は更新されない。
【００９９】
以上、本発明に係る実施の形態３のプロセッサにおいては、属性情報保持部３４１を特定のレジスタに対応させることで、制御回路全体の簡略化を行うことができる。
【０１００】
なお、特定のレジスタは１個に限らず複数個としてもよい。
【０１０１】
（実施の形態４）
以下、本発明に係る実施の形態４について、図面を参照しながら説明する。
【０１０２】
実施の形態４におけるプロセッサは、実施の形態２におけるプロセッサに加え、プロセッサ状態レジスタを有することを特徴とする。以上の点を踏まえて、本発明における実施の形態１におけるプロセッサについて説明する。
【０１０３】
図７は、実施の形態４におけるプロセッサの構成を示す図である。図７のプロセッサの構成と実施の形態１におけるプロセッサの構成と異なる点は、プロセッサ状態レジスタ４１２が追加され、その出力が属性情報保持部１４１に接続されている点である。
【０１０４】
以上のように構成された本実施の形態におけるプロセッサの動作に関して、実施の形態１におけるプロセッサと同じ点は説明を省略し、異なる点について説明する。
【０１０５】
プロセッサ状態レジスタ４１２は、レジスタへの書き込みを抑制するか否かを指示する制御レジスタとして機能する。属性情報保持部１４１は、プロセッサ状態レジスタ４１２（制御レジスタ）に保持されたデータに対応する属性情報を保持する。
【０１０６】
（ＷＢステージ）
ＷＢステージでは、命令解読情報に従い、レジスタファイル書き込み制御回路１２３が、レジスタファイル１４０に対する書き込み制御信号を生成し、パイプラインバッファ（ＷＢ）１３７の出力である命令実行結果をレジスタファイル１４０に書き込むことで、データ保持部１４２が更新される。
【０１０７】
但し、属性情報保持部１４１が１、かつ、ＦＷＤ制御回路１２１からＭＥＭステージ、または、ＷＢステージの段階で、後続の命令によって、命令実行結果をフォワーディング動作により読み出されていたことが検出された場合は、レジスタファイル書き込み制御回路１２３が、レジスタファイル１４０に対する書き込み制御信号を生成せず、パイプラインバッファ（ＷＢ）１３７の出力である命令実行結果をレジスタファイル１４０に書き込まれることはなくなり、データ保持部１４２は更新されない。
【０１０８】
また、プロセッサ状態レジスタの値を特定の値に設定することで、属性情報保持部１４１を全て０に変更することができる。
【０１０９】
以上のように、本発明に係る実施の形態４のプロセッサにおいては、属性情報保持部１４１の制御をプロセッサ状態レジスタ４１２によって、設定することが可能になる。例えば、属性情報Ａｔｒ＃０〜＃Ｎの全てを０にするようにプロセッサ状態レジスタ４１２を設定すれば、本プロセッサの動作を従来のプロセッサと動作に変更することができ、ソフトウェアレベルのプロセッサ動作の互換性を保つことができる。
【０１１０】
属性情報Ａｔｒ＃Ｎのみを１にするようにプロセッサ状態レジスタ４１２を設定してもよいし、プロセッサが実装される装置に依存してプロセッサ状態レジスタ４１２のデータを固定してもよいし、動的に変更してもよい。
【０１１１】
（実施の形態５）
実施の形態５におけるプロセッサは、実施の形態１におけるプロセッサに加えて、命令として、属性変更命令を更に有することを特徴とする。以上の点を踏まえて、本発明における実施の形態５におけるプロセッサについて説明する。
【０１１２】
図８は、実施の形態５におけるプロセッサの構成を示す図である。図８のプロセッサの構成と実施の形態１におけるプロセッサの構成と異なる点は、ＷＢステージのパイプラインバッファ１３７の出力である命令実行結果が属性情報１４１に接続されている点である。
【０１１３】
以上のように構成された本実施の形態におけるプロセッサの動作に関して、実施の形態１におけるプロセッサと同じ点は説明を省略し、異なる（ＷＢステージ）点について説明する。
【０１１４】
（ＷＢステージ）
ＷＢステージでは、命令解読情報に従い、レジスタファイル書き込み制御回路１２３が、レジスタファイル１４０に対する書き込み制御信号を生成し、パイプラインバッファ（ＷＢ）１３７の出力である命令実行結果をレジスタファイル１４０に書き込むことで、データ保持部１４２が更新される。
【０１１５】
但し、属性情報１４１が１、かつ、ＦＷＤ制御回路１２１からＭＥＭステージ、または、ＷＢステージの段階で、後続の命令によって、命令実行結果をフォワーディング動作により読み出されていたことが検出された場合は、レジスタファイル書き込み制御回路５２２が、レジスタファイル１４０に対する書き込み制御信号を生成せず、パイプラインバッファ（ＷＢ）１３７の出力である命令実行結果をレジスタファイル１４０に書き込まれることはなくなり、データ保持部１４２は更新されない。
【０１１６】
属性変更命令“ｓｅｔ＿ａｔｔｒｉｂｕｔｅ  Ｒｅｇ＃ｎ”を実行した場合は、レジスタファイル書き込み制御回路５２２が、レジスタファイル１４０に対する書き込み制御信号を生成し、パイプラインバッファ（ＷＢ）１３７の出力である命令実行結果をレジスタファイル１４０に書き込むことで、属性情報保持部１４１が更新され、１に設定される。
【０１１７】
また、属性変更命令“ｒｅｓｅｔ＿ａｔｔｒｉｂｕｔｅ  Ｒｅｇ＃ｎ”を実行した場合は、レジスタファイル書き込み制御回路５２２が、レジスタファイル１４０に対する書き込み制御信号を生成し、パイプラインバッファ（ＷＢ）１３７の出力である命令実行結果をレジスタファイル１４０に書き込むことで、属性情報保持部１４１が更新され、０に設定される。
【０１１８】
以上、本発明に係る実施の形態５のプロセッサにおいては、各レジスタに対する属性情報保持部１４１を、ソフトウェアにより任意に変更することが可能になる。
【０１１９】
つづいて、実施の形態５おけるプログラム変換装置について図面を参照しながら説明する。実施の形態５におけるプログラム変換装置は、コンパイラ装置であって、実施の形態５のプロセッサに対応し、プログラム構造を分析し属性変更命令を自動的に挿入することを特徴とする。
【０１２０】
以上の点を踏まえて、本発明における実施の形態５におけるコンパイラ装置について説明する。
【０１２１】
図９は、実施の形態５におけるコンパイラ装置の構成を示す図である。
【０１２２】
同図で示されるように、本コンパイラ装置は、コンパイラ６０２と拡張アセンブラ６０４とを有する。コンパイラ６０２は、高級言語であるＣ言語ソースコード６０１を従来と同様の命令からなるアセンブラコード６０３に変換する。
【０１２３】
拡張アセンブラ６０４は、アセンブラコード６０３を、属性変更命令を追加したアセンブラコード６０５に変換する。
【０１２４】
以上のように構成された本実施の形態におけるコンパイラの動作に関して、本コンパイラの動作に関して説明する。
【０１２５】
はじめに、コンパイラ６０２は、従来のコンパイルフローにより、高級言語であるＣ言語ソースコード６０１をアセンブラコード（従来）６０３に変換する。
【０１２６】
一例としてあげた、アセンブラコード（従来）６０３の内容に関して説明する。
【０１２７】
１行目：分岐命令実行時の分岐先アドレスをＬａｂｅｌとして表す擬似命令。
２行目：Ｒｅｇ＃３１のデータをアドレスとしてメモリへの読み出しを行い、読み出されたデータをＲｅｇ＃０に格納するロード命令。
３行目：Ｒｅｇ＃０とＲｅｇ＃１のデータを加算し、Ｒｅｇ＃２に格納する加算命令。
４行目：Ｒｅｇ＃２のデータを、Ｒｅｇ＃３１のデータをアドレスとしてメモリへの書き込みを行うストア命令。
５行目：  Ｒｅｇ＃３１と即値１を加算し、Ｒｅｇ＃３１に格納する加算命令。
６行目：  １行目に分岐する（ループ実行）分岐命令。
【０１２８】
次に、拡張アセンブラ６０４は、アセンブラコード（従来）６０３を、属性変更命令を追加したアセンブラコード（新規命令追加）６０５に変換する。ここで、拡張アセンブラ６０４は、Ｒｅｇ＃０がアセンブラコード（従来）６０３中の２行目で書き込まれ、直後の３行目の命令でのみ読み出されることを判定し、Ｒｅｇ＃０の属性を１にセットするように、属性変更命令（ｓｅｔ＿ａｔｔｒｉｂｕｔｅ  Ｒｅｇ＃０）をループ実行直前の命令に挿入する。この命令は属性Ａｔｒ＃０を１にセットすることを指示する。また、ループ実行を抜けたときのため、Ｒｅｇ＃０の属性を０にリセットするように、属性変更命令（ｒｅｓｅｔ＿ａｔｔｒｉｂｕｔｅ  Ｒｅｇ＃０）を挿入する。この命令は属性Ａｔｒ＃０を０にリセットすることを指示する。
【０１２９】
図１０は、実施の形態５における拡張アセンブラ６０４の処理フローを示す図である。同図のように、拡張アセンブラ６０４は、オリジナルのアセンブラコード６０３から、オリジナルプログラムからレジスタに格納される変数およびデータ依存関係を抽出し（Ｓ８１）、さらに命令間の依存関係を基に生存区間を検出する（Ｓ８２）。生存区間は、変数を定義する命令（定義命令と呼ぶ）からはじまりその変数を最後に参照する命令（参照命令と呼ぶ）までの区間をいう。さらに、拡張アセンブラ６０４は、変数のうち、基本ブロックをまたがって参照されないローカル変数を抽出し（Ｓ８３）、当該変数を参照する参照命令が生存区間において１つのみであるか否かを判定し（Ｓ８４）、生存区間において、当該変数を定義する定義命令と参照する参照命令とがフォワーディングの対象となるか否かを判定する（Ｓ８５）。このとき、定義命令と参照命令とがフォワーディングの対象となるか否かは、定義命令と参照命令との間の距離による。定義命令から参照命令までの命令数であり、例えば、定義命令の直後に参照命令がある場合を距離１とする。言い換えれば、定義命令と参照命令の間に挿入されている命令数＋１を距離とする。この場合、本実施の形態のプロセッサでは距離が３以下であれば、フォワーディングの対象となると判定される。
【０１３０】
判定において、参照命令が生存区間において１つのみであると判定され、かつフォワーディングの対象となると判定された場合に、拡張アセンブラ６０４は、前記定義命令によるレジスタ書き込みを抑制するために、定義命令によるレジスタ書き込みを抑制する抑制命令を追加する（Ｓ８６、Ｓ８７）。ここでいう抑制命令は、生存期間の前に変数を格納すべきレジスタへの書き込みを抑制する属性情報を設定する属性変更命令（ｓｅｔ＿ａｔｔｒｉｂｕｔｅ  Ｒｅｇ＃ｎ）と、生存期間の後に変数を格納すべきレジスタへの書き込みを抑制しない属性情報を設定する属性変更命令（ｒｅｓｅｔ＿ａｔｔｒｉｂｕｔｅ  Ｒｅｇ＃ｎ）とである。拡張アセンブラ６０４は、次のローカル変数があれば（Ｓ８８）、ステップＳ８３以降を再度処理する。
【０１３１】
また、判定において、参照命令が生存区間において１つのみでないと判定され、またはフォワーディングの対象とならないと判定された場合に、拡張アセンブラ６０４は、次のローカル変数があれば（Ｓ８８）、ステップＳ８３以降を再度処理する。
【０１３２】
以上により、ソフトウェア開発者は、属性変更命令を意図したプログラミングを行うことなしに実施の形態５におけるプロセッサによる低消費電力化の効果を得ることができる。
【０１３３】
なお、（ｓｅｔ＿ａｔｔｒｉｂｕｔｅ  Ｒｅｇ＃ｎ）命令は定義命令の直前でよく、（ｒｅｓｅｔ＿ａｔｔｒｉｂｕｔｅ  Ｒｅｇ＃ｎ）命令は参照命令の直後でよいが、後者の命令は図９に示すようにループを抜けた位置に挿入することが望ましい。
【０１３４】
（実施の形態６）
以下、本発明に係る実施の形態６について、図面を参照しながら説明する。本実施の形態では属性情報が個々のレジスタに対応して保持されるのではなく、属性情報がフォワーディング対象の個々のデータに対応して複数段のパイプラインバッファ保持され、複数のパイプラインバッファに受け渡される構成について説明する。
【０１３５】
図１１は、実施の形態６におけるプロセッサの構成を示す図である。図１１に示すプロセッサは、実施の形態１におけるプロセッサと比較して、レジスタファイル１４０の代わりにレジスタファイル６４０を備える点と、命令制御部１２０の代わりに命令制御部６２０を備える点と、命令解読部１１０の代わりに命令解読部６１０を備える点と、パイプランバッファ１３５〜１３７の代わりにパイプランバッファ６３５〜６３７を備える点と、抑制ゲート１３８、１３９の代わりに抑制ゲート６３８、６３９を備える点とが異なっている。
【０１３６】
レジスタファイル６４０は、データ保持部１４２を備えるが、個々のレジスタに対応する属性情報保持部１４１を有しない。本実施の形態では、フォワーディング対象のデータに対応させた属性情報＊Ｓを保持させるために、パイプランバッファ６３５〜６３７の一部が属性情報保持手段として機能する。
【０１３７】
命令解読部６１０は、命令解読部１１０の機能に加えて、レジスタ書き込み抑制指示を含む命令を解読する点が異なっている。本プロセッサは、レジスタにデータを書き込む命令として、レジスタ書き込み抑制指示を含まない通常命令と、レジスタ書き込み抑制指示を含む抑制命令との２種類をサポートする。例えば、通常のロード命令（ｌｄ  Ｒｅｇ＃０、（Ｒｅｇ＃３１））に対して、抑制指示付きのロード命令（ｌｄ＊  Ｒｅｇ＃０、（Ｒｅｇ＃３１））も実行可能である。抑制命令のニーモニック表記は、通常の命令に＊を付加したものである。
【０１３８】
命令制御部６２０は、命令制御部１２０と比べてレジスタ書き込み抑制回路１２６を備えていない点が異なっている。
【０１３９】
図１２は、パイプランバッファ６３５〜６３７の一部と、抑制ゲート６３８、６３９の構成例を示す図である。
【０１４０】
パイプランバッファ６３５〜６３７は、パイプランバッファ１３５〜１３７と同様にパイプラインステージ間でデータを順に受け渡す機能に加えて、フォワーディング対象のデータと共に、それに対応する属性情報＊Ｓを後段のファイプランバッファに受け渡す。この属性情報＊Ｓは、命令解読部６１０が上記の抑制命令を解読したときに、命令解読部６１０によってＷＮ信号やＷＥ信号とともにパイプランバッファ６３５に書き込まれ、後段のパイプランバッファ６３６、６３７に受け渡されていく。このように、パイプランバッファ６３５〜６３７の一部は、フォワーディング対象のデータに対応させて属性情報＊Ｓを保持する属性保持部６４１を構成し、属性情報保持手段として機能する。
【０１４１】
抑制ゲート６３８、６３９は、抑制ゲート１３８、１３９の機能に加えて、レジスタ書き込み抑制回路１２６として機能する。
【０１４２】
抑制ゲート６３８は、ＭＥＭステージからＩＤステージへのフォワーディング動作を示すＦＷＤ−ＭＥＭ信号と、パイプラインバッファ（ＭＥＭ）６３６から出力される属性情報＊Ｓと、パイプラインバッファ（ＭＥＭ）６３６から出力されるＷＥ信号とが入力される。これらの入力信号について、ＦＷＤ−ＭＥＭ信号がアサートされ、かつ属性情報＊Ｓが１（レジスタ書き込み抑制）であれば、抑制ゲート６３８はＷＥ信号をマスクすることにより、フォワーディングされたデータのレジスタ書き込みを抑制する。
【０１４３】
抑制ゲート６３９は、ＷＢステージからＩＤステージへのフォワーディング動作を示すＦＷＤ−ＷＢ信号と、パイプラインバッファ（ＷＢＭ）６３７から出力される属性情報＊Ｓと、パイプラインバッファ（ＷＢ）６３７から出力されるＷＥ信号とが入力される。これらの入力信号について、ＦＷＤ−ＷＢ信号がアサートされ、かつ属性情報＊Ｓが１（レジスタ書き込み抑制）であれば、抑制ゲート６３９はＷＥ信号をマスクすることにより、フォワーディングされたデータのレジスタ書き込みを抑制する。このように、抑制ゲート６３８、６３９は、レジスタ書き込み抑制回路６２６を構成し、レジスタ書き込みの抑制を制御する制御手段として機能する。
【０１４４】
以上のように構成された本実施の形態におけるプロセッサの動作に関して、実施の形態１におけるプロセッサと同じ点は説明を省略し、異なる点について説明する。
【０１４５】
（ＷＢステージ）
ＷＢステージでは、命令解読情報に従い、レジスタファイル書き込み制御回路７２３が、レジスタファイル７４０に対する書き込み制御信号を生成し、パイプラインバッファ（ＷＢ）７３７の出力である命令実行結果をレジスタファイル７４０に書き込むことで、データ保持部１４２が更新される。
【０１４６】
但し、実行されため命令がレジスタ書き込み抑制命令として定義されている命令、かつ、ＦＷＤ制御回路７２１からＭＥＭステージ、または、ＷＢステージの段階で、後続の命令によって、命令実行結果をフォワーディング動作により読み出されていたことが検出された場合は、レジスタファイル書き込み制御回路７２３が、レジスタファイル７４０に対する書き込み制御信号を生成せず、パイプラインバッファ（ＷＢ）７３７の出力である命令実行結果をレジスタファイル７４０に書き込まれることはなくなり、データ保持部１４２は更新されない。
【０１４７】
以上、本発明に係る実施の形態６のプロセッサにおいては、属性情報を有しないことで回路規模を削減でき、かつ、実施の形態１のプロセッサと同様の効果を得ることができる。
【０１４８】
つづいて、本実施の形態におけるプログラム変換装置について、図面を参照しながら説明する。
【０１４９】
実施の形態６におけるプログラム変換装置は、いわゆるコンパイラ装置であって、本実施の形態のプロセッサに対応し、プログラム構造を分析し、従来の命令をレジスタ書き込み抑制命令に変換することを特徴とする。
【０１５０】
以上の点を踏まえて、本発明における実施の形態６におけるコンパイラ装置について説明する。
【０１５１】
図１３は、実施の形態６におけるコンパイラ装置の構成を示す図である。
【０１５２】
同図で示されるように、本コンパイラ装置では、高級言語であるＣ言語ソースコード６０１をコンパイラ６０２によってアセンブラコード（従来）６０３に変換するのに対し、アセンブラコード（従来）６０３を更に拡張アセンブラ８０４によって、属性変更命令を追加したアセンブラコード（新規命令追加）８０５に変換することを特徴とする。
【０１５３】
本コンパイラの動作に関して説明する。
【０１５４】
はじめに、従来のコンパイルフローにより、高級言語であるＣ言語ソースコード６０１をコンパイラ６０２によってアセンブラコード（従来）６０３に変換する。
【０１５５】
一例としてあげた、アセンブラコード（従来）６０３の内容に関して説明する。
【０１５６】
１行目：分岐命令実行時の分岐先アドレスを表すラベルである。
２行目：Ｒｅｇ＃３１のデータをアドレスとしてメモリへの読み出しを行い、読み出されたデータをＲｅｇ＃０に格納するロード命令。
３行目：Ｒｅｇ＃０とＲｅｇ＃１のデータを加算し、Ｒｅｇ＃２に格納する加算命令。
４行目：Ｒｅｇ＃２のデータを、Ｒｅｇ＃３１のデータをアドレスとしてメモリへの書き込みを行うストア命令。
５行目：Ｒｅｇ＃３１と即値１を加算し、Ｒｅｇ＃３１に格納する加算命令。
６行目：１行目に分岐する（ループ実行）分岐命令。
【０１５７】
次に、アセンブラコード（従来）６０３を拡張アセンブラ８０４によって、従来の命令をレジスタ書き込み抑制命令に変換したアセンブラコード（新規命令追加）８０５に変換する。ここで、拡張アセンブラ８０４では、Ｒｅｇ＃０がアセンブラコード（従来）６０３中の２行目で書き込まれ、直後の３行目の命令でのみ読み出されることを判定し、２行目のメモリへの読み出し命令（ｌｄ）をレジスタ書き込み抑制命令でのメモリへの読み出し命令（ｌｄ＊）に変換する。
【０１５８】
図１４は、図１３中の拡張アセンブラの処理フローを示す図である。同図は図９に示した処理フローと比べて、ステップＳ８６、Ｓ８７の代わりにＳ１０１を有する点が異なっている。同じ点は説明を省略して、異なる点について説明する。
【０１５９】
Ｓ８４、Ｓ８５での判定において、参照命令が生存区間において１つのみであると判定され、かつフォワーディングの対象となると判定された場合に、拡張アセンブラ８０４は、前記定義命令によるレジスタ書き込みを抑制するために、定義命令を通常の命令からレジスタ書き込みの抑制を伴う抑制命令（上記＊付き命令）に変換する（Ｓ１０１）。
【０１６０】
以上により、ソフトウェア開発者は、属性変更命令を意図したプログラミングを行うことなしに実施の形態６におけるプロセッサによる低消費電力化の効果を得ることができる。
【０１６１】
なお、本発明は、プロセッサとして実現されるだけではなく、プロセッサを制御する方法（以下、制御方法と呼称する）等として実現されるものとしてもよい。また、プロセッサによって提供される機能（以下、プロセッサ機能と呼称する）が組み込まれたＬＳＩ、プロセッサ機能をＦＰＧＡ、ＣＰＬＤ等のプログラマブル・ロジック・デバイスに形成するＩＰコア（以下、プロセッサコアと呼称する）、及び、プロセッサコアを記録した記録媒体としてもよい。
【０１６２】
また、上記実施の形態の何れを組み合わせてもよいことは言うまでもない。例えば実施の形態５と実施の形態６を組み合わせても矛盾なく、効果を得ることができる。
【産業上の利用可能性】
【０１６３】
本発明は、携帯電話等に搭載されるプロセッサ等として、特に低消費電力が求められる分野で利用することができる。
【図面の簡単な説明】
【０１６４】
【図１】図１は、従来技術におけるフォワーディング制御構造を有するパイプラインプロセッサの構成を示す図である。
【図２Ａ】図２Ａは、データ依存関係を有する命令列の一例を示す。
【図２Ｂ】図２Ｂは、ＭＥＭステージからＩＤステージへのフォワーディング例のタイミングを示す図である。
【図２Ｃ】図２Ｃは、ＷＢステージからＩＤステージへのフォワーディング例のタイミングを示す図である。
【図２Ｄ】図２Ｄは、フォワーディング機構を有しないプロセッサで実行した場合のパイプラインステージと実行サイクルとを示す図である。
【図３】図３は、実施の形態１におけるプロセッサの構成を示す図である。
【図４】図４は、レジスタ書き込み抑制回路の構成を示す図である。
【図５】図５は、実施の形態２におけるプロセッサの構成を示す図である。
【図６】図６は、実施の形態３におけるプロセッサの構成を示す図である。
【図７】図７は、実施の形態４におけるプロセッサの構成を示す図である。
【図８】図８は、実施の形態５におけるプロセッサの構成を示す図である。
【図９】図９は、コンパイラ装置の構成を示す図である。
【図１０】図１０は、実施の形態５における拡張アセンブラの処理フローを示す図である。
【図１１】図１１は、実施の形態６におけるプロセッサの構成を示す図である。
【図１２】図１２は、属性保持部およびレジスタ書き込み抑制回路の構成を示す図である。
【図１３】図１３は、コンパイラ装置の構成を示す図である。
【図１４】図１４は、拡張アセンブラの処理フローを示す図である。
【符号の説明】
【０１６５】
１１０、５１０、６１０  命令解読部
１２０、６２０  命令制御部
１２１  ＦＷＤ制御回路
１２２  レジスタファイル書き込み制御回路
１２３  パイプラインバッファ制御回路
１２４  演算処理制御回路
１２５  メモリアクセス制御回路
１２６、６２６  レジスタ書き込み抑制回路
１２６ａ  属性セレクタ
１２６ｂ  アンドゲート
１２６ｃ  属性セレクタ
１２６ｄ  アンドゲート
１３０  命令実行部
１３１  演算処理実行回路
１３２  メモリアクセス実行回路
１３３  ＦＷＤセレクタ
１３４  ＭＥＭセレクタ
１３５、６３５  パイプラインバッファ（ＥＸ）
１３６、６３６  パイプラインバッファ（ＭＥＭ）
１３７、６３７  パイプラインバッファ（ＷＢ）
１３８、１３９、２０１、６３８、６３９  抑制ゲート
１３９  抑制ゲート
１４０  レジスタファイル
１４１、６４１  属性保持部
１４２  データ保持部
３４１  属性情報
６０２  コンパイラ
６０４、８０４  拡張アセンブラ
【図１】
0004607958.tif 000002
【図２Ａ】
0004607958.tif 000003
【図２Ｂ】
0004607958.tif 000004
【図２Ｃ】
0004607958.tif 000005
【図２Ｄ】
0004607958.tif 000006
【図３】
0004607958.tif 000007
【図４】
0004607958.tif 000008
【図５】
0004607958.tif 000009
【図６】
0004607958.tif 000010
【図７】
0004607958.tif 000011
【図８】
0004607958.tif 000012
【図９】
0004607958.tif 000013
【図１０】
0004607958.tif 000014
【図１１】
0004607958.tif 000015
【図１２】
0004607958.tif 000016
【図１３】
0004607958.tif 000017
【図１４】
0004607958.tif 000018