(57)【要約】【課題】演算処理装置の消費電力を抑制する。【解決手段】演算処理装置は、命令をデコードするデコード部と、デコード部がデコードした命令を実行する命令実行部と、命令実行部が使用するデータを保持する複数のレジスタを含むレジスタ部と、デコード部がデコードした命令が、複数のレジスタのいずれかに特定値を書き込むレジスタ書き込み命令である場合、特定値を書き込むレジスタを識別する識別情報が格納される識別情報保持部と、特定値が設定される設定部と、デコード部がデコードした命令が、識別情報保持部に保持された識別情報で識別されるレジスタから値を読み出すレジスタ読み出し命令である場合、レジスタ読み出し命令によるレジスタのアクセスを抑止し、設定部に設定された特定値を選択する抑止動作を実行する動作制御部とを有する。【選択図】図１
2020047091.tif 000002
【特許請求の範囲】
【請求項１】
命令をデコードするデコード部と、
前記デコード部がデコードした命令を実行する命令実行部と、
前記命令実行部が使用するデータを保持する複数のレジスタを含むレジスタ部と、
前記デコード部がデコードした命令が、前記複数のレジスタのいずれかに特定値を書き込むレジスタ書き込み命令である場合、前記特定値を書き込むレジスタを識別する識別情報が格納される識別情報保持部と、
前記特定値が設定される設定部と、
前記デコード部がデコードした命令が、前記識別情報保持部に保持された識別情報で識別されるレジスタから値を読み出すレジスタ読み出し命令である場合、レジスタ読み出し命令によるレジスタのアクセスを抑止し、前記設定部に設定された前記特定値を選択する抑止動作を実行する動作制御部と
を有することを特徴とする演算処理装置。
【請求項２】
前記デコード部は、
各々が命令をデコードする複数のデコーダと、
前記複数のデコーダが複数のレジスタ書き込み命令を並列にデコードした場合、複数のレジスタ書き込み命令に基づいて前記識別情報保持部に格納する識別情報を決定する識別情報管理部を有することを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記識別情報管理部は、
並列にデコードした複数のレジスタ書き込み命令の中に前記特定値を書き込むレジスタ書き込み命令がある場合、前記特定値のレジスタ書き込み命令の後に前記特定値以外の値を書き込むレジスタ書き込み命令があるかをレジスタ毎に判定し、
後ろに前記特定値以外の値のレジスタ書き込み命令がない前記特定値のレジスタ書き込み命令のうち、命令の記述が最も後のレジスタ書き込み命令に対応する識別情報を前記識別情報保持部に格納することを特徴とする請求項２に記載の演算処理装置。
【請求項４】
前記識別情報保持部が保持する識別情報は、レジスタ書き込み命令により前記特定値が書き込まれたレジスタを示すレジスタ情報と、前記レジスタ情報が有効かを示すフラグ情報とを含み、
前記識別情報管理部は、並列にデコードした複数の命令の中に前記特定値のレジスタ書き込み命令がなく、かつ、前記レジスタ情報で示されるレジスタに前記特定値以外の値を書き込むレジスタ書き込み命令がある場合、前記フラグ情報を無効に設定することを特徴とする請求項２または請求項３に記載の演算処理装置。
【請求項５】
前記演算処理装置はさらに、分岐命令により分岐が実行されるかを予測する分岐予測部を有し、
前記識別情報保持部が保持する前記フラグ情報は、前記分岐予測部による予測が外れた場合に出力される命令の実行を取り消す指示に基づいて無効に設定されることを特徴とする請求項４に記載の演算処理装置。
【請求項６】
前記演算処理装置はさらに、
アウトオブオーダにより実行が完了した命令に基づいてインオーダで命令の完了処理を実行する完了処理部と、
前記完了処理部によるインオーダでの命令の完了処理に基づいて、前記識別情報保持部が保持する識別情報と同じ情報が格納される完了情報保持部とを有し、
前記完了処理部は、命令の実行を取り消す指示に基づいて前記フラグ情報が無効に設定された後、前記完了情報保持部が保持する情報を前記識別情報保持部に格納することを特徴とする請求項５に記載の演算処理装置。
【請求項７】
前記演算処理装置はさらに、レジスタ読み出し命令をデコードしたデコーダからの問い合わせに基づいて、レジスタ読み出し命令によりアクセスされるレジスタが、前記識別情報保持部が保持する識別情報に対応するかの対応情報を通知する通知部を有し、
前記複数のデコーダの各々は、前記通知部からの対応情報をレジスタ読み出し命令とともに前記動作制御部に出力し、
前記動作制御部は、対応情報に基づいて前記抑止動作を実行するかを決定することを特徴とする請求項２ないし請求項６のいずれか１項に記載の演算処理装置。
【請求項８】
前記識別情報保持部が保持する識別情報は、レジスタ書き込み命令により前記特定値が書き込まれたレジスタを示すレジスタ情報と、前記レジスタ情報が有効かを示すフラグ情報とを含み、
前記動作制御部は、前記レジスタ情報がレジスタ読み出し命令により値を読み出すレジスタを示し、かつ、前記フラグ情報が有効を示す場合、前記抑止動作を実行すること
を特徴とする請求項１に記載の演算処理装置。
【請求項９】
前記デコード部は、前記レジスタ情報で示されるレジスタに前記特定値以外の値を書き込むレジスタ書き込み命令をデコードした場合、前記フラグ情報を無効に設定し、
前記動作制御部は、前記フラグ情報が無効を示す場合、レジスタ読み出し命令によるレジスタのアクセスを許可し、前記設定部に設定された前記特定値を選択しない許可動作を実行すること
を特徴とする請求項８に記載の演算処理装置。
【請求項１０】
前記動作制御部は、
前記設定部の出力と、前記レジスタ部の出力と、前記レジスタ部の入力とのいずれかを選択するセレクタを有し、
前記抑止動作を実行する場合、前記設定部の出力を選択する選択信号を前記セレクタに出力することを特徴とする請求項１ないし請求項９のいずれか１項に記載の演算処理装置。
【請求項１１】
前記複数のレジスタの各々は、前記動作制御部が出力するアドレスにより選択され、
前記動作制御部は、レジスタ読み出し命令に基づいて選択されるレジスタのアクセスを抑止する場合、前記レジスタ部に出力するアドレスの論理を前のレジスタアクセスサイクルで出力したアドレスの論理から変えずに維持することを特徴とする請求項１ないし請求項１０のいずれか１項に記載の演算処理装置。
【請求項１２】
前記デコード部は、前記特定値を識別する特定値識別情報を前記識別情報とともに前記識別情報保持部に格納し、
前記設定部には、複数種の前記特定値が設定され、
前記動作制御部は、前記デコード部がデコードした命令が、前記識別情報保持部に保持された識別情報で識別されるレジスタから値を読み出すレジスタ読み出し命令である場合、前記設定部に設定された複数種の前記特定値のうち、前記識別情報保持部に保持された前記特定値識別情報に対応する特定値を選択することで、前記抑止動作を実行することを特徴とする請求項１ないし請求項１１のいずれか１項に記載の演算処理装置。
【請求項１３】
前記識別情報保持部は、複数の前記識別情報を保持する複数の領域を有し、
前記デコード部は、前記複数のレジスタのいずれかに前記特定値を書き込むレジスタ書き込み命令をデコードした場合、前記複数の領域のいずれかに前記識別情報を格納し、
前記動作制御部は、前記デコード部が前記複数の領域のいずれかに保持された識別情報で識別されるレジスタから値を読み出すレジスタ読み出し命令をデコードした場合、前記抑止動作を実行することを特徴とする請求項１ないし請求項１２のいずれか１項に記載の演算処理装置。
【請求項１４】
命令をデコードするデコード部と、前記デコード部がデコードした命令を実行する命令実行部と、前記命令実行部が使用するデータを保持する複数のレジスタを含むレジスタ部とを有する演算処理装置の制御方法において、
前記デコード部が、デコードした命令が前記複数のレジスタのいずれかに特定値を書き込むレジスタ書き込み命令である場合、前記特定値を書き込むレジスタを識別する識別情報を識別情報保持部に格納し、
前記演算処理装置が有する動作制御部が、前記デコード部がデコードした命令が、前記識別情報保持部に保持された識別情報で識別されるレジスタから値を読み出すレジスタ読み出し命令である場合、レジスタ読み出し命令によるレジスタのアクセスを抑止し、設定部に設定された前記特定値を選択する抑止動作を実行すること
を特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
プロセッサ等の演算処理装置は、命令のプリフェッチ、パイプライン処理、アウトオブオーダ実行等の様々な技術を取り入れることで、命令の実行効率を向上している。例えば、分岐命令の実行結果に基づいて分岐するか否かを判定する分岐判定サイクルより前に、分岐が判定可能な無条件分岐命令等を検出し、分岐先の命令をプリフェッチすることで、命令の実行効率は向上する（例えば、特許文献１参照）。
【０００３】
一方、演算処理装置の消費電力は、演算処理装置の性能の向上に伴い増加する傾向にあり、消費電力の増加を抑制する技術は重要である。例えば、演算処理装置が出力する複数ビットのアドレス信号のうち、メモリアクセスに使用されないビットを検出し、検出したビットに対応するアドレス信号線をハイインピーダンス状態に設定することで、消費電力は削減される（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平２−２５５９１８号公報
【特許文献２】特開平８−１４７２６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近時、演算処理装置の性能を向上するため、演算処理装置に含まれるレジスタの数およびレジスタのビット幅は増える傾向にある。これに伴い、レジスタにアクセスするための制御回路の回路規模が増大し、演算処理装置の消費電力が増大する傾向にある。
【０００６】
１つの側面では、本発明は、演算処理装置の消費電力を抑制することを目的とする。
【課題を解決するための手段】
【０００７】
一つの観点によれば、演算処理装置は、命令をデコードするデコード部と、デコード部がデコードした命令を実行する命令実行部と、命令実行部が使用するデータを保持する複数のレジスタを含むレジスタ部と、デコード部がデコードした命令が、複数のレジスタのいずれかに特定値を書き込むレジスタ書き込み命令である場合、特定値を書き込むレジスタを識別する識別情報が格納される識別情報保持部と、特定値が設定される設定部と、デコード部がデコードした命令が、識別情報保持部に保持された識別情報で識別されるレジスタから値を読み出すレジスタ読み出し命令である場合、レジスタ読み出し命令によるレジスタのアクセスを抑止し、設定部に設定された特定値を選択する抑止動作を実行する動作制御部とを有する。
【発明の効果】
【０００８】
１つの側面では、本発明は、演算処理装置の消費電力を抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態における演算処理装置の一例を示す図である。
【図２】図１の演算処理装置の動作の一例を示す図である。
【図３】図１の演算処理装置の動作の別の例を示す図である。
【図４】図１の演算処理装置の動作フローの一例を示す図である。
【図５】図１の演算処理装置を含む情報処理システムの一例を示す図である。
【図６】別の実施形態における演算処理装置の一例を示す図である。
【図７】図６の命令デコード部およびレジスタ制御部の一例を示す図である。
【図８】図７の命令デコード部の動作の一例を示す図である。
【図９】図６の演算処理装置において、マスク書き込み命令とマスク読み出し命令とを実行する回路の一例を示す図である。
【図１０】図６の演算処理装置の動作フローの一例を示す図である。
【図１１】図１０のステップＳ３２の動作フローの一例を示す図である。
【図１２】別の実施形態の演算処理装置における命令デコード部およびレジスタ制御部の一例を示す図である。
【図１３】図１２の演算処理装置において、マスク書き込み命令とマスク読み出し命令とを実行する回路の一例を示す図である。
【図１４】別の実施形態における演算処理装置の一例を示す図である。
【図１５】図１４の演算処理装置の動作の一例を示す図である。
【図１６】図１４のコミット制御部の動作フローの一例を示す図である。
【図１７】別の実施形態の演算処理装置における命令デコード部およびレジスタ制御部の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を用いて実施形態を説明する。
【００１１】
図１は、一実施形態における演算処理装置の一例を示す。図１に示す演算処理装置１００は、デコード部１、複数の演算器２ａを有する演算部２、識別情報保持部３、アクセス制御部４、複数のレジスタ５ａ（５ａ［０］、５ａ［１］）を有するレジスタ部５、設定部６およびセレクタ７を有する。演算器２ａは、命令を実行する命令実行部の一例である。アクセス制御部４およびセレクタ７は、動作制御部の一例である。
【００１２】
各レジスタ５ａは、値が読み書き可能であれば、汎用レジスタでもよく、演算器２ａの動作を制御する制御値を保持する制御レジスタでもよい。例えば、各レジスタ５ａは、演算部２が使用するデータを保持する。なお、レジスタ部５が有するレジスタ５ａの数は１つでもよく、３つ以上でもよい。演算処理装置１００は、複数の命令を並列にフェッチし、フェッチした複数の命令を並列に実行するスーパースカラ方式のプロセッサでもよく、スカラ方式等の他の方式のプロセッサでもよい。
【００１３】
デコード部１は、図示しない１次命令キャッシュ等のメモリからフェッチされた命令をデコードし、デコードの結果に基づいて演算器２ａのいずれかに命令を出力する。なお、アクセス制御部４が、命令の実行順を制御するリザベーションステーション等の命令実行制御部の機能を有する場合、デコード部１がデコードした命令は、アクセス制御部４を介して演算器２ａに出力される。
【００１４】
デコード部１は、デコードした命令が、レジスタ部５のレジスタ５ａのいずれかに値を書き込む書き込み命令である場合、書き込み命令を実行する演算器２ａに書き込み命令を出力する。書き込み命令を実行する演算器２ａは、レジスタ５ａに書き込む値を演算により算出する。なお、書き込み命令を実行する演算器２ａは、レジスタ５ａに書き込む値を保持するメモリ（図示せず）のアドレスを生成するアドレス演算器でもよく、この場合、書き込み命令は、ロード命令である。
【００１５】
書き込み命令を実行する演算器２ａは、書き込み命令に基づいて、書き込み対象のレジスタ５ａにフラグ値等のデータを格納する。なお、デコード部１がデコードした命令が、レジスタ部５のレジスタ５ａのいずれかに特定値（例えば、オール１等の固定値）を書き込む書き込み命令である場合、演算器２ａは、特定値を書き込み対象のレジスタ５ａに格納する。
【００１６】
デコード部１は、書き込み命令が、レジスタ５ａのいずれかに特定値を書き込む書き込み命令である場合、特定値が書き込まれるレジスタ５ａを識別する識別情報ＲＩＮＦを識別情報保持部３に格納する。例えば、識別情報ＲＩＮＦは、特定値が書き込まれるレジスタ５ａを識別するレジスタ番号ＲＥＧＮと、レジスタ５ａが特定値を保持していることを示すフラグＴＧＲとを含む。レジスタ部５のレジスタ５ａのいずれかに値を書き込む書き込み命令は、レジスタ書き込み命令の一例である。レジスタ番号ＲＥＧＮは、レジスタ情報の一例であり、フラグＴＧＲの値はフラグ情報の一例である。
【００１７】
例えば、レジスタ番号ＲＥＧＮで識別されるレジスタ５ａが特定値を保持している場合、フラグＴＧＲはセット状態に維持され、レジスタ番号ＲＥＧＮで識別されるレジスタ５ａが特定値以外の値を保持している場合、フラグＴＧＲはリセット状態に維持される。以下では、セット状態のフラグＴＧＲとともに識別情報保持部３に保持されたレジスタ番号ＲＥＧＮは、有効であるとも称され、リセット状態のフラグＴＧＲとともに識別情報保持部３に保持されたレジスタ番号ＲＥＧＮは、無効であるとも称される。
【００１８】
一方、デコード部１は、デコードした命令が、レジスタ５ａのいずれかから値を読み出す読み出し命令である場合、識別情報保持部３が保持する識別情報ＲＩＮＦを参照する。レジスタ５ａのいずれかから値を読み出す読み出し命令は、レジスタ読み出し命令の一例である。そして、デコード部１は、読み出し対象のレジスタ５ａが、レジスタ番号ＲＥＧＮで示されるレジスタ５ａであるか否かを判定し、フラグＴＧＲの値に基づいて特定値を保持しているか否かを判定する。例えば、読み出し命令は、レジスタ５ａに保持された値をオペランドとして使用して演算を実行する演算命令、または、レジスタ５ａに保持された値をメモリに格納するストア命令等である。
【００１９】
読み出し対象のレジスタ５ａが特定値を保持していない場合、デコード部１は、読み出し対象のレジスタ５ａから値を読み出すことを許可する許可情報をアクセス制御部４に出力する。アクセス制御部４は、許可情報に基づいて、レジスタ部５に読み出しイネーブル信号ＲＥＮを出力して読み出し対象のレジスタ５ａにアクセスし、読み出し対象のレジスタ５ａに、保持している値を出力させる。また、アクセス制御部４は、読み出し対象のレジスタ５ａの出力を選択させる選択信号ＳＥＬをセレクタ７に出力する。セレクタ７は、読み出し対象のレジスタ５ａから出力される値を選択し、選択した値を演算部２に出力する。すなわち、アクセス制御部４およびセレクタ７は、レジスタ５ａの読み出しアクセスを許可してレジスタ５ａが保持する値を選択するとともに、設定部６に設定された特定値を選択しない許可動作を実行する。
【００２０】
一方、読み出し対象のレジスタ５ａが特定値を保持している場合、デコード部１は、読み出し対象のレジスタ５ａから値を読み出すことを抑止する抑止情報をアクセス制御部４に出力する。アクセス制御部４は、抑止情報に基づいて、レジスタ部５への読み出しイネーブル信号ＲＥＮの出力を抑止し、設定部６に予め設定された特定値を選択させる選択信号ＳＥＬをセレクタ７に出力する。読み出しイネーブル信号ＲＥＮを受けないレジスタ部５は、スタンバイ状態に維持され、読み出し対象のレジスタ５ａのアクセスを抑止する。セレクタ７は、設定部６に設定された特定値を選択し、選択した特定値を演算部２に出力する。すなわち、アクセス制御部４およびセレクタ７は、レジスタ５ａの読み出しアクセスを抑止し、設定部６に設定された特定値を選択する抑止動作を実行する。
【００２１】
読み出し命令を実行する演算器２ａは、読み出し対象のレジスタ５ａから読み出された値または設定部６から読み出された特定値を使用して演算を実行する。例えば、設定部６は、複数のラッチ回路、複数の配線パターンまたはプログラム回路等の特定値が設定される要素を含む。設定部６が複数のラッチ回路を含む場合、演算処理装置１００の起動時に、特定値の各ビットが各ラッチ回路に格納される。
【００２２】
設定部６が複数の配線パターンを含む場合、各配線パターンは、特定値の各ビットに対応する。なお、各配線パターンは、演算処理装置１００を製造するフォトマスクのパターンに対応する。そして、各配線パターンが電源線パターンまたは接地線パターンと接続されることで、設定部６に特定値が設定される。
【００２３】
設定部６がプログラム回路を含む場合、プログラム回路は、特定値の各ビットの値が設定されるヒューズ回路、または特定値の各ビットを記憶するＲＯＭ（Read  Only  Memory）回路等である。例えば、プログラム回路は、演算処理装置１００の製造工程でプログラムされる。なお、プログラム回路であるＲＯＭが電気的に書き換え可能なメモリ素子を含む場合、プログラム回路は、演算処理装置１００の製造後にプログラムされてもよい。そして、プログラム回路のプログラムにより、設定部６に特定値が設定される。
【００２４】
例えば、設定部６は、設定された特定値に対応する電圧レベルを常にセレクタ７に出力する。すなわち、設定部６は、特定値を静的に保持し、設定部６に設定された特定値は静的に読み出される。このため、設定部６に設定された設定値を読み出すために消費される電力はほぼゼロである。
【００２５】
一方、レジスタ５ａに保持された特定値を読み出すためにレジスタ部５で消費される電力は、設定部６に設定された特定値を読み出すために設定部６で消費される電力に比べて大きい。これは、レジスタ部５が複数のレジスタ５ａを選択するための制御回路を有しており、レジスタ５ａに読み出しアクセスする場合、レジスタ５ａ単体だけでなくレジスタ部５の全体で電力が消費されるためである。レジスタ５ａの読み出しアクセス時にレジスタ部５で消費される電力は、レジスタ部５に含まれるレジスタ５ａの数が多いほど大きくなり、レジスタ５ａのビット幅が大きいほど大きくなる。さらに、レジスタ５ａのビット数（ビット幅）が、特定値のビット数より多い場合、特定値に対応するビット以外のビットの値もレジスタ５ａから読み出されるため、無駄な電力が発生する。
【００２６】
図２は、図１の演算処理装置１００の動作の一例を示す。すなわち、図２は、演算処理装置１００の制御方法の一例を示す。図２の上側に示す動作では、初期状態において、識別情報保持部３は、リセット状態（＝ロウレベル）のフラグＴＧＲを保持するため、レジスタ番号ＲＥＧＮは無効である。図２の下側に示す動作では、初期状態において、識別情報保持部３は、セット状態（＝ハイレベル）のフラグＴＧＲを保持するため、レジスタ番号ＲＥＧＮ（＝”０”）は有効であり、レジスタ５ａ［０］を示す。
【００２７】
図２の上側に示す動作において、デコード部１は、レジスタ５ａ［０］に特定値を書き込む書き込み命令をデコードする。デコード部１は、レジスタ５ａ［０］を示すレジスタ番号ＲＥＧＮ（＝”０”）を識別情報保持部３に格納し、フラグＴＧＲをハイレベルにセットすることで、識別情報ＲＩＮＦを更新する（図２（ａ）、（ｂ））。演算器２ａは、デコード部１から受ける書き込み命令に基づいて、レジスタ５ａ［０］に特定値を書き込む（図２（ｃ））。
【００２８】
次に、デコード部１は、レジスタ５ａ［０］に保持された値をオペランドとして使用する命令（読み出し命令）をデコードする。デコード部１は、識別情報保持部３に保持された識別情報ＲＩＮＦを参照する。デコード部１は、レジスタ番号ＲＥＧＮがレジスタ５ａ［０］を示し、かつ、フラグＴＧＲがセットされていることに基づき、アクセス制御部４に抑止情報を出力する。
【００２９】
アクセス制御部４は、デコード部１からの抑止情報に基づいて、読み出しイネーブル信号ＲＥＮを無効レベル（例えば、ロウレベル）に維持し、設定部６を選択させる選択信号ＳＥＬをセレクタ７に出力する（図２（ｄ）、（ｅ））。無効レベルの読み出しイネーブル信号ＲＥＮにより、レジスタ部５は、レジスタ５ａから値を読み出す読み出し動作を実行せず、スタンバイ状態を維持する。
【００３０】
セレクタ７は、選択信号ＳＥＬに基づいて設定部６に設定された特定値を選択し、選択した特定値を演算部２に出力する。すなわち、アクセス制御部４およびセレクタ７は、レジスタ５ａの読み出しアクセスを抑止し、設定部６に設定された特定値を選択する抑止動作を実行する。そして、演算部２において読み出し命令を実行する演算器２ａは、選択部６に設定された特定値をオペランドとして演算を実行する（図２（ｆ））。レジスタ５ａから特定値を読み出す代わりに、設定部６に設定された特定値を使用することで、レジスタ５ａにアクセスして、レジスタ５ａから特定値を読み出す場合に比べて、演算処理装置１００の消費電力を削減することができる。
【００３１】
なお、レジスタ５ａにアドレスが割り当てられる場合、アクセス制御部４は、読み出しイネーブル信号ＲＥＮとともに、アクセスするレジスタ５ａを識別するアドレスをレジスタ部５に出力する。この場合、レジスタ部５は、アドレスのデコードに基づいてアクセスするレジスタ５ａを決定するデコード回路を有する。アクセス制御部４は、デコード部１から抑止情報を受けた場合、レジスタ部５に出力するアドレスを、前のレジスタアクセスサイクルで出力したアドレスの論理から変えずに維持する。これにより、アドレスを伝達するアドレス線の充放電を抑制することができ、演算処理装置１００の消費電力をさらに削減することができる。例えば、レジスタ部５は、レジスタファイルである。
【００３２】
図２の下側に示す動作において、デコード部１は、レジスタ５ａ［０］に特定値以外の値を書き込む書き込み命令をデコードする。デコード部１は、フラグＴＧＲをロウレベルにリセットすることで、識別情報ＲＩＮＦを更新し、レジスタ番号ＲＥＧＮを無効化する（図２（ｇ））。演算器２ａは、デコード部１から受ける書き込み命令に基づいて、レジスタ５ａ［０］に特定値以外の値を書き込む（図２（ｈ））。
【００３３】
次に、デコード部１は、レジスタ５ａ［０］に保持された値をオペランドとして使用する命令（読み出し命令）をデコードする。デコード部１は、識別情報保持部３に保持された識別情報ＲＩＮＦを参照する。デコード部１は、フラグＴＧＲがリセットされていることに基づいて、レジスタ番号ＲＥＧＮが無効であると判定し、アクセス制御部４に許可情報を出力する。
【００３４】
アクセス制御部４は、デコード部１からの許可情報に基づいて、読み出しイネーブル信号ＲＥＮを有効レベル（例えば、ハイレベル）に設定し、選択信号ＳＥＬをレジスタ５ａ［０］の出力を選択する値に設定する（図２（ｉ）、（ｊ））。これにより、レジスタ５ａ［０］に保持された値がセレクタ７を介して演算部２に出力される。すなわち、アクセス制御部４およびセレクタ７は、レジスタ５ａの読み出しアクセスを許可し、設定部６に設定された特定値を選択しない許可動作を実行する。演算部２において読み出し命令を実行する演算器２ａは、レジスタ５ａ［０］から読み出された特定値以外の値をオペランドとして演算を実行する（図２（ｋ））。
【００３５】
レジスタ５ａ［０］が特定値以外の値に書き換えられた場合、フラグＴＧＲをリセットすることで、レジスタ５ａ［０］に保持された値を使用する読み出し命令において、設定部６に設定された特定値が選択されることを抑止することができる。これにより、演算器２ａが誤った値（この例では特定値）を使用して演算を実行することを抑止することができ、演算処理装置１００が誤動作することを抑止することができる。また、レジスタ番号ＲＥＧＮが有効か無効かをフラグＴＧＲにより判定できるため、デコード部１は、識別情報保持部３からレジスタ番号ＲＥＧＮを読み出すことなく、レジスタ５ａ［０］が特定値を保持しないことを検出することができる。
【００３６】
図３は、図１の演算処理装置１００の動作の別の例を示す。すなわち、図３は、演算処理装置１００の制御方法の別の例を示す。図２と同様の動作については、詳細な説明は省略される。
【００３７】
図３の上側に示す動作において、デコード部１は、レジスタ５ａ［０］に特定値を書き込む書き込み命令をデコードする。デコード部１は、図２（ａ）、（ｂ）と同様に、識別情報ＲＩＮＦを設定する（図３（ａ）、（ｂ））。演算器２ａは、図２（ｃ）と同様に、レジスタ５ａ［０］に特定値を書き込む（図３（ｃ））。
【００３８】
次に、デコード部１は、レジスタ５ａ［１］に特定値を書き込む書き込み命令をデコードする。デコード部１は、レジスタ５ａ［１］を示すレジスタ番号ＲＥＧＮ（＝”１”）を識別情報保持部３に格納し、フラグＴＧＲをハイレベルにセットすることで、識別情報ＲＩＮＦを更新する（図３（ｄ）、（ｅ））。演算器２ａは、図３（ｃ）と同様に、レジスタ５ａ［１］に特定値を書き込む（図３（ｆ））。
【００３９】
次に、デコード部１は、レジスタ５ａ［０］に保持された値をオペランドとして使用する命令（読み出し命令）をデコードする。デコード部１は、識別情報保持部３に保持されたフラグＴＧＲを参照し、フラグＴＧＲがセットされているため、レジスタ番号ＲＥＧＮを参照する。デコード部１は、レジスタ番号ＲＥＧＮがレジスタ５ａ［０］を示さないことに基づき、レジスタ５ａ［０］が特定値以外の値を保持していると判断し、アクセス制御部４に、レジスタ５ａ［０］のアクセスを指示する許可情報を出力する。
【００４０】
アクセス制御部４は、デコード部１からの許可情報に基づいて、図２（ｉ）、（ｊ）と同様に、読み出しイネーブル信号ＲＥＮを有効レベルに設定し、選択信号ＳＥＬをレジスタ５ａ［０］の出力を選択する値に設定する（図３（ｇ）、（ｈ））。そして、演算器２ａは、レジスタ５ａ［０］から読み出された特定値をオペランドとして演算を実行する。
【００４１】
図３の上側の動作に示すように、複数のレジスタ５ａが特定値を保持する場合であって、最も新しく特定値が書き込まれたレジスタ５ａ以外から特定値を読み出す読み出し命令がデコードされた場合、デコード部１は、レジスタ５ａのアクセスを許可する。これにより、識別情報保持部３に保持される識別情報ＲＩＮＦを複数のレジスタ５ａで共有する場合にも、消費電力を削減しつつ、演算器２ａに正しい値を出力することができる。
【００４２】
なお、レジスタ５ａ［０］に保持された値をオペランドとして使用する読み出し命令をデコード部１がデコードする前に、レジスタ５ａ［０］に特定値以外の値が書き込まれたとする。この場合にも、図２の下側の動作と同様に、読み出し命令に基づいて、レジスタ５ａ［０］が保持する正しい値（特定値以外の値）を演算器２ａに出力することができる。
【００４３】
図３の下側に示す動作において、デコード部１は、レジスタ５ａ［０］に特定値を書き込む書き込み命令をデコードし、図３（ａ）、（ｂ）と同様に、識別情報ＲＩＮＦを設定する（図３（ｉ）、（ｊ））。演算器２ａは、図３（ｃ）と同様に、レジスタ５ａ［０］に特定値を書き込む（図３（ｋ））。
【００４４】
次に、デコード部１は、レジスタ５ａ［１］に特定値以外の値を書き込む書き込み命令をデコードする。デコード部１は、識別情報保持部３にレジスタ５ａ［１］を示すレジスタ番号ＲＥＧＮが保持されていないため、識別情報保持部３に保持された識別情報ＲＩＮＦの書き換えを実行しない（図３（ｌ））。すなわち、フラグＴＧＲはリセットされず、セット状態に維持される。演算器２ａは、図２（ｈ）と同様に、レジスタ５ａ［１］に特定値以外の値を書き込む（図３（ｍ））。
【００４５】
次に、デコード部１は、レジスタ５ａ［０］に保持された値をオペランドとして使用する命令（読み出し命令）をデコードする。デコード部１は、識別情報保持部３に保持された識別情報ＲＩＮＦを参照する。デコード部１は、レジスタ番号ＲＥＧＮがレジスタ５ａ［０］を示し、かつ、フラグＴＧＲがセットされていることに基づき、アクセス制御部４に抑止情報を出力する。
【００４６】
アクセス制御部４は、図２（ｄ）、（ｅ）と同様に、抑止情報に基づいて、読み出しイネーブル信号ＲＥＮを無効レベルに維持し、セレクタ７に設定部６を選択させる選択信号ＳＥＬを出力する（図３（ｏ）、（ｐ））。そして、読み出し命令を実行する演算器２ａは、設定部６に設定された特定値をオペランドとして演算を実行する。
【００４７】
図３の下側に示す動作では、識別情報保持部３に保持されたレジスタ番号ＲＥＧＮに対応するレジスタ５ａと異なるレジスタ５ａに特定値以外を書き込む書き込み命令が発行された場合、フラグＴＧＲがリセットされることを抑止する。これにより、識別情報保持部３に保持されたレジスタ番号ＲＥＧＮの無効化を抑止することができる。したがって、レジスタ番号ＲＥＧＮに対応するレジスタ５ａ［０］に対する読み出し命令に応答してレジスタ５ａ［０］のアクセスを抑止することができ、レジスタ５ａ［０］から特定値を読み出す場合に比べて消費電力を削減することができる。
【００４８】
なお、スーパースカラ方式において、デコード部１は、複数のレジスタ５ａの各々に特定値を書き込む複数の書き込み命令を並列（例えば、同時）にデコードした場合、プログラムに記述された書き込み命令の順番通りに識別情報ＲＩＮＦを順次設定する。すなわち、複数のレジスタ５ａの各々に特定値を書き込む複数の書き込み命令が並列にデコードされた場合、識別情報ＲＩＮＦは、プログラムに記述された複数の書き込み命令のうち最も後ろに記述された書き込み命令に対応して設定される。
【００４９】
図４は、図１の演算処理装置１００の動作フローの一例を示す。すなわち、図４は、演算処理装置１００の制御方法の一例を示す。図４に示す動作フローは、デコード部１が命令をデコードしたことに基づいて開始される。
【００５０】
まず、ステップＳ１０において、デコード部１は、デコードした命令がレジスタ５ａに特定値を書き込む書き込み命令か否かを判定する。レジスタ５ａに特定値を書き込む書き込み命令の場合、動作はステップＳ１２に移行され、レジスタ５ａに特定値を書き込む書き込み命令でない場合、動作はステップＳ１４に移行される。ステップＳ１２において、デコード部１は、識別情報保持部３に識別情報ＲＩＮＦ（フラグＴＧＲ＝”１”およびレジスタ番号ＲＥＧＮ）を設定し、動作をステップＳ１４に移行する。
【００５１】
ステップＳ１４において、デコード部１は、デコードした命令が、特定値を保持するレジスタ５ａに特定値以外の値を書き込む書き込み命令か否かを判定する。特定値を保持するレジスタ５ａに特定値以外の値を書き込む書き込み命令の場合、動作はステップＳ１６に移行され、特定値を保持するレジスタ５ａに特定値以外の値を書き込む書き込み命令でない場合、動作はステップＳ１８に移行される。書き込み対象のレジスタ５ａが特定値を保持することは、識別情報保持部３に保持されたレジスタ番号ＲＥＧＮが書き込み対象のレジスタ５ａの番号と一致し、かつ、識別情報保持部３に保持されたフラグＴＧＲがセット状態であることにより判定される。ステップＳ１６において、デコード部１は、識別情報保持部３のフラグＴＧＲを”０”にリセットし（すなわち、ロウレベル）、動作をステップＳ１８に移行する。
【００５２】
ステップＳ１８において、デコード部１は、デコードした命令がレジスタ５ａから値を読み出す読み出し命令か否かを判定する。レジスタ５ａから値を読み出す読み出し命令の場合、動作はステップＳ２０に移行され、レジスタ５ａから値を読み出す読み出し命令でない場合、動作はステップＳ２６に移行される。
【００５３】
ステップＳ２０において、デコード部１は、識別情報保持部３に保持された識別情報ＲＩＮＦで識別されるレジスタ５ａから値を読み出す読み出し命令であるか否かを判定する。識別情報ＲＩＮＦで識別されるレジスタ５ａから値を読み出す読み出し命令である場合、動作はステップＳ２２に移行され、識別情報ＲＩＮＦで識別されるレジスタ５ａ以外から値を読み出す読み出し命令である場合、動作はステップＳ２４に移行される。
【００５４】
ここで、読み出し命令による読み出し対象のレジスタ５ａの番号がレジスタ番号ＲＥＧＮと一致し、かつ、フラグＴＧＲがセットされている場合、識別情報ＲＩＮＦで識別されるレジスタ５ａから値を読み出す読み出し命令であると判定される。一方、フラグＴＧＲがリセットされている場合、識別情報ＲＩＮＦで識別されるレジスタ５ａから値を読み出す読み出し命令でないと判定される。また、フラグＴＧＲがセットされていても、読み出し対象のレジスタ５ａの番号がレジスタ番号ＲＥＧＮと一致しない場合、識別情報ＲＩＮＦで識別されるレジスタ５ａから値を読み出す読み出し命令でないと判定される。
【００５５】
ステップＳ２２において、アクセス制御部４は、読み出しイネーブル信号ＲＥＮを無効レベル（例えば、ロウレベル”Ｌ”）に設定し、選択信号ＳＥＬを、設定部６を選択する値に設定し、動作をステップＳ２６に移行する。ステップＳ２４において、アクセス制御部４は、読み出しイネーブル信号ＲＥＮを有効レベル（例えば、ハイレベル”Ｈ”）に設定し、レジスタ５ａを選択する値に選択信号ＳＥＬを設定し、動作をステップＳ２６に移行する。ステップＳ２６において、演算器２ａは、デコード部１がデコードした命令を実行し、図４に示す動作を終了する。以上により、図２および図３に示した動作が実現される。
【００５６】
例えば、デコード部１がデコードした命令がレジスタ５ａに値を書き込む書き込み命令である場合、書き込み命令を実行する演算器２ａは、書き込み対象のレジスタ５ａに値を書き込む。デコード部１がデコードした命令がレジスタ５ａから値を読み出す読み出し命令である場合、読み出し命令を実行する演算器２ａは、設定部６またはレジスタ５ａのいずれかから出力された値を使用して演算を実行し、演算結果を格納対象のレジスタ５ａに格納する。
【００５７】
図５は、図１の演算処理装置１００を含む情報処理システムの一例を示す。例えば、図５に示す情報処理システムは、サーバ１０００である。サーバ１０００は、複数の演算処理装置１００、複数のメインメモリ２００およびインターコネクト制御部３００を有する。例えば、演算処理装置１００は、中央演算処理装置（ＣＰＵ；Central  Processing  Unit）であり、インターコネクト制御部３００に接続される。各メインメモリ２００は、対応する演算処理装置１００に接続される。インターコネクト制御部３００は、ハードディスク装置または通信装置等の外部装置に接続され、外部装置に対して入出力制御を実行する。
【００５８】
以上、図１から図５に示す実施形態では、デコード部１は、レジスタ５ａに特定値を書き込む書き込み命令をデコードした場合、特定値が書き込まれるレジスタ５ａを識別する識別情報ＲＩＮＦを識別情報保持部３に格納する。また、デコード部１は、デコードした読み出し命令が、識別情報保持部３に保持された識別情報ＲＩＮＦで識別されるレジスタ５ａから値を読み出す読み出し命令である場合、アクセス制御部４に抑止情報を出力する。アクセス制御部４は、抑止情報に基づいて、レジスタ５ａのアクセスを抑止し、設定部６に設定された特定値をセレクタ７に選択させて演算部２に出力する。これにより、レジスタ５ａから特定値を読み出す読み出し命令に基づいて演算を実行する場合にも、レジスタ５ａにアクセスすることなく、特定値を用いて演算を実行することができる。この結果、レジスタ５ａにアクセスして特定値を読み出す場合に比べて、演算処理装置１００の消費電力を削減することができる。
【００５９】
また、デコード部１は、デコードした読み出し命令が、識別情報保持部３に保持された識別情報ＲＩＮＦで識別されるレジスタ５ａ以外から値を読み出す読み出し命令である場合、アクセス制御部４に許可情報を出力する。アクセス制御部４は、許可情報に基づいて、レジスタ５ａのアクセスを許可し、レジスタ５ａの出力をセレクタ７に選択させて演算部２に出力する。これにより、識別情報保持部３に保持される識別情報ＲＩＮＦを複数のレジスタ５ａで共有する場合にも、消費電力を削減しつつ、演算器２ａに正しい値を出力することができる。
【００６０】
デコード部１から抑止情報を受けたアクセス制御部４は、レジスタ部５に出力するアドレスを、前のレジスタアクセスサイクルで出力したアドレスの論理から変えずに維持する。これにより、アドレスを伝達するアドレス線の充放電を抑制することができ、演算処理装置１００の消費電力をさらに削減することができる。レジスタ番号ＲＥＧＮが有効か無効かをフラグＴＧＲにより判定できるため、デコード部１は、識別情報保持部３からレジスタ番号ＲＥＧＮを読み出すことなく、レジスタ５ａが特定値を保持しないことを検出することができる。
【００６１】
図６は、別の実施形態における演算処理装置の一例を示す。図１から図５で説明した要素と同一または同様の要素については、同じ符号を付し、詳細な説明は省略される。図６に示す演算処理装置１０２は、例えば、スーパースカラ方式のプロセッサである。なお、演算処理装置１０２は、スカラ方式等の他の方式のプロセッサでもよく、図２に示す構成に限定されない。また、演算処理装置１０２を含む情報処理システムは、図５と同様の構成であり、図５のＣＰＵの符号を１０２に置き換えることで実現される。
【００６２】
演算処理装置１０２は、命令フェッチアドレス生成部１０、１次命令キャッシュ１２、２次キャッシュ１４、命令バッファ１６、命令デコード部１８、レジスタ制御部２０および分岐予測部２２を有する。また、演算処理装置１０２は、リザベーションステーション２４（２４１、２４２、２４３、２４４）、コミット制御部３０、プログラムカウンタ３２、オペランドアドレス生成部３４および１次データキャッシュ３６を有する。さらに、演算処理装置１０２は、演算器３８、４０、４２、固定小数点レジスタ４４、マスクレジスタ４６および浮動小数点レジスタ４８を有する。
【００６３】
以下では、固定小数点レジスタ４４、マスクレジスタ４６および浮動小数点レジスタ４８は、レジスタ４４、４６、４８とも称される。演算器３８、４０、４２は、命令実行部の一例である。
【００６４】
命令フェッチアドレス生成部１０は、内部で順次生成するアドレスまたは分岐予測部２２から受けるアドレスを選択し、演算器３８、４０、４２で実行する命令、メモリアクセス用の命令または分岐命令等を１次命令キャッシュ１２からフェッチするアドレスを生成する。命令フェッチアドレス生成部１０は、生成したアドレスを１次命令キャッシュ１２に出力する。なお、後述するパイプラインクリアが発生した時、プログラムカウンタ３２の値を使用して命令のフェッチが再開される。
【００６５】
１次命令キャッシュ１２は、命令フェッチアドレス生成部１０からのアドレスで示す領域に保持された命令を取り出し、取り出した命令を命令バッファ１６に出力する。１次命令キャッシュ１２は、アドレスに対応する命令を保持していない場合、２次キャッシュ１４から命令を取り出すために、２次キャッシュ１４にアクセス要求を出力する。２次キャッシュは、命令およびデータを保持する。
【００６６】
２次キャッシュ１４は、アクセス要求に基づいて、アドレスに対応して保持している命令を取り出し、取り出した命令を１次命令キャッシュ１２に出力する。２次キャッシュ１４は、アドレスに対応する命令を保持していない場合、メインメモリ２００から命令を取り出すために、メインメモリ２００にアクセス要求を出力する。例えば、メインメモリ２００は、演算処理装置１０２を含む半導体チップとは別の半導体チップに含まれる。
【００６７】
命令バッファ１６は、１次命令キャッシュ１２から出力される命令を保持し、保持した命令を命令デコード部１８に出力する。例えば、命令バッファ１６は、４つの命令を並列に命令デコード部１８に出力する。
【００６８】
命令デコード部１８は、命令バッファ１６から出力される複数の命令をデコードし、各命令を出力するリザベーションステーション２４（２４１、２４２、２４３、２４４のいずれか）を決定する。命令デコード部１８は、決定したリザベーションステーション２４に各命令を発行する。命令デコード部１８は、命令をデコードするデコード部の一例である。
【００６９】
例えば、命令デコード部１８は、デコードした命令がメモリアクセス命令（ロード命令またはストア命令）である場合、命令をリザベーションステーション２４１に投入する。命令デコード部１８は、デコードした命令が固定小数点数の演算命令である場合、命令をリザベーションステーション２４２に投入する。命令デコード部１８は、デコードした命令が浮動小数点数の演算命令である場合、命令をリザベーションステーション２４３に投入する。命令デコード部１８は、デコードした命令が分岐命令である場合、命令をリザベーションステーション２４４に投入する。
【００７０】
また、命令デコード部１８は、演算処理装置１０２で実行するプログラム中の記述の順番にしたがって命令に命令識別子（ＩＩＤ：Instruction  Identification）を割り振り、割り振った命令識別子をコミット制御部３０に出力する。なお、命令バッファ１６および命令デコード部１８は、プログラム中の記述の順番を入れ替えることなく複数の命令を並列に処理する（インオーダ）。
【００７１】
さらに、命令デコード部１８は、マスクレジスタ４６に特定のマスク値である特定値を書き込む書き込み命令をデコードした場合、特定値を書き込むマスクレジスタ４６を識別する識別情報ＲＩＮＦをレジスタ制御部２０に出力する。例えば、マスクレジスタ４６に特定値を書き込む書き込み命令は、専用の命令として命令セットに含まれる。命令デコード部１８は、マスクレジスタ４６に保持されたマスク値を読み出す読み出し命令をデコードした場合、読み出し命令による読み出し対象のマスクレジスタ４６が特定値を保持するか否かをレジスタ制御部２０に問い合わせる。
【００７２】
以下では、マスクレジスタ４６に特定値または特定値以外の値を書き込む書き込み命令は、マスク書き込み命令とも称され、マスクレジスタ４６に保持されたマスク値を読み出す読み出し命令は、マスク読み出し命令とも称される。マスク書き込み命令は、レジスタ書き込み命令の一例であり、マスク読み出し命令は、レジスタ読み出し命令の一例である。
【００７３】
レジスタ制御部２０は、命令デコード部１８からの識別情報ＲＩＮＦを保持し、命令デコード部１８からの問い合わせに基づいて、読み出し対象のマスクレジスタ４６が特定値を保持するか否かを示す情報を命令デコード部１８に出力する。命令デコード部１８およびレジスタ制御部２０の例は、図７に示される。なお、レジスタ制御部２０は、命令デコード部１８内に設けられてもよい。
【００７４】
分岐予測部２２は、命令フェッチアドレス生成部１０により生成されたアドレスに基づいて、分岐命令により分岐が実行されるか否かを予測し、分岐を予測した場合、分岐先アドレスを命令フェッチアドレス生成部１０に出力する。
【００７５】
リザベーションステーション２４１は、命令デコード部１８から順次受けるメモリアクセス命令を保持し、保持したメモリアクセス命令を実行可能な順にオペランドアドレス生成部３４に出力する。以下では、リザベーションステーション２４１は、ＲＳＡ（Reservation  Station  for  Address  generation）２４１とも称される。リザベーションステーション２４２は、命令デコード部１８から順次受ける固定小数点数の演算命令を保持し、保持した演算命令を実行可能な順に演算器３８または演算器４０に出力する。以下では、リザベーションステーション２４２は、ＲＳＥ（Reservation  Station  for  Execution）２４２とも称される。
【００７６】
リザベーションステーション２４３は、命令デコード部１８から順次受ける浮動小数点数の演算命令を保持し、保持した演算命令を実行可能な順に演算器４２に出力する。以下では、リザベーションステーション２４３は、ＲＳＦ（Reservation  Station  for  Floating  point）２４３とも称される。リザベーションステーション２４４は、命令デコード部１８から順次受ける分岐命令を、分岐の判断ができるようになるまで保持する。以下では、リザベーションステーション２４４は、ＲＳＢＲ（Reservation  Station  for  BRanch）２４４とも称される。リザベーションステーション２４１、２４２、２４３、２４４に保持された命令は、それぞれ命令の実行の準備が整ったものから対応するオペランドアドレス生成部３４、演算器３８、４０、４２のいずれかに発行される。そして、演算器３８、４０、４２に発行された命令は、プログラムに記述された命令の順番と関係なく実行される（アウトオブオーダ）。
【００７７】
コミット制御部３０は、命令デコード部１８によりデコードされた命令を、プログラムに記述された命令の順番通りに貯めておくキュー構造の保持部と、完了処理を実行する完了処理部とを有する。完了処理部は、保持部に保持された情報と演算器３８、４０、４２からの命令実行の完了報告等とに基づいて、命令の完了処理を、プログラムで記述された順に実行する（インオーダ）。以下では、コミット制御部３０は、ＣＳＥ（Commit  Stack  Entry）３０とも称される。コミット制御部３０は、アウトオブオーダにより実行が完了した命令に基づいてインオーダで命令の完了処理を実行する完了処理部の一例である。以下では命令の完了処理は、コミットとも称される。
【００７８】
プログラムカウンタ３２は、コミット制御部３０からの指示に基づいて、命令の格納先を示すメモリアドレスを更新し、更新したメモリアドレスを命令フェッチアドレス生成部１０に出力する。
【００７９】
オペランドアドレス生成部３４は、ＲＳＡ２４１から投入されるメモリアクセス命令に基づいてアドレスを生成し、生成したアドレスを一次データキャッシュ３６に出力する。１次データキャッシュ３６は、オペランドアドレス生成部３４からのアドレスによりアクセスされ、データを入出力する。なお、図６では、演算処理装置１０２は、複数のオペランドアドレス生成部３４を有するが、オペランドアドレス生成部３４の数は単数でもよい。
【００８０】
１次データキャッシュ３６は、１次命令キャッシュ１２と同様に、アドレスに対応するデータを保持していない場合、２次キャッシュ１４からデータを取り出すために、２次キャッシュ１４にアクセス要求を出力する。例えば、ロード命令では、１次データキャッシュ３６は、取り出したデータをレジスタ４４、４６、４８のいずれかに格納する。
【００８１】
演算器３８は、固定小数点数用の演算器である。演算処理装置１０２は、命令デコード部１８により並列にデコードされた固定小数点数の演算命令を並列に実行するために、複数の演算器３８を有してもよい。演算器３８は、演算に使用するデータをレジスタ４４から取得し、演算結果をレジスタ４４に格納する。
【００８２】
演算器４０は、マスクレジスタ４６に格納するマスク値を演算するための論理演算機能を有する。例えば、演算器４０は、マスクレジスタ４６にマスク値を書き込む命令に基づいて、論理演算または四則演算を実行し、マスクレジスタ４６に書き込むマスク値を生成し、生成したマスク値をマスクレジスタ４６に書き込む。なお、演算器４０は、マスクレジスタ４６にマスク値を書き込むマスクレジスタ４６のための専用の演算器でもよく、マスクレジスタ４６および固定小数点レジスタ４４にデータを書き込む汎用の演算器でもよい。また、演算器４０は、命令デコード部１８が、特定値をマスクレジスタ４６に書き込む専用の特定値書き込み命令をデコードした場合、命令に含まれるマスク値をマスクレジスタ４６に書き込む動作を実行する。
【００８３】
演算器４２は、浮動小数点数用の演算器である。例えば、演算処理装置１０２は、命令デコード部１８により並列にデコードされた浮動小数点数の演算命令を並列に実行するために、複数の演算器４２を有してもよい。演算器４２は、演算に使用するデータをレジスタ４８から取得し、演算結果をレジスタ４８に格納する。
【００８４】
例えば、演算器４２は、浮動小数点数の積和演算を実行するＳＩＭＤ（Single  Instruction  Multiple  Data）演算命令がＲＳＦ２４３から発行された場合、マスクレジスタ４６に保持されたマスク値に応じて、ＳＩＭＤ演算の実行をデータ毎にマスクする。なお、演算器４２は、積和演算、整数演算、論理演算等を実行する演算器を含んでもよい。
【００８５】
固定小数点レジスタ４４は、演算器３８で実行する演算に使用するデータを保持し、演算器３８による演算の実行結果を保持する。マスクレジスタ４６は、演算器４０から出力されるマスク値を保持する。マスクレジスタ４６に保持されたマスク値は、例えば演算器４２がＳＩＭＤ演算命令を実行する場合、オペランドの１つとして演算器４２に転送される。マスクレジスタ４６は、演算器４２の動作を制御する制御値（すなわち、マスク値）を保持する制御レジスタの一例である。浮動小数点レジスタ４８は、演算器４２で実行する演算に使用するデータを保持し、演算器４２による演算の実行結果を保持する。
【００８６】
なお、レジスタ４４、４６、４８は、レジスタファイル構造を有しており、それぞれ複数のレジスタを含む。レジスタファイル構造のレジスタ４４、４６、４８の各々は、レジスタ部の一例である。なお、レジスタ４４、４６、４８は、レジスタファイルと、演算結果等をレジスタファイルに格納するまで保持するアップデートバッファとを共用する物理レジスタ方式が採用されてもよい。
【００８７】
例えば、演算処理装置１０２は、６４ビット構成の３２個の固定小数点レジスタ４４と、６４ビット構成の１６個のマスクレジスタ４６と、５１２ビット構成の３２個の浮動小数点レジスタ４８とを有する。なお、レジスタ４４、４６、４８の各々の個数とビット構成は、上記以外でもよい。また、浮動小数点レジスタ４８のビット構成は、可変にされてもよい。
【００８８】
例えば、２つの浮動小数点レジスタ４８の各々に８個の６４ビットのデータが格納され、浮動小数点レジスタ４８間の８組のデータのＳＩＭＤ演算が実行されるとする。この場合、ＳＩＭＤ演算時に参照するマスクレジスタ４６の０番目（最下位ビット）、８番目、１６番目、２４番目、３２番目、４０番目、４８番目、５６番目のビット（マスクビット）にマスク値が格納される。８個のマスク値は、ＳＩＭＤ演算が実行される８組のデータにそれぞれ対応する。マスク値が”１”の場合、対応するデータのＳＩＭＤ演算が実行され、マスク値が”０”の場合、対応するＳＩＭＤ演算の実行がマスクされる。
【００８９】
また、２つの浮動小数点レジスタ４８に１６個の３２ビットのデータをそれぞれ格納し、レジスタ４８間の１６組のデータのＳＩＭＤ演算を実行するとする。この場合、ＳＩＭＤ演算時に参照するマスクレジスタ４６の０番目（最下位ビット）のビットから４ビット毎にマスク値が格納される。同様に、２つの浮動小数点レジスタ４８に６４個の８ビットのデータをそれぞれ格納し、レジスタ４８間の６４組のデータのＳＩＭＤ演算を実行する場合、ＳＩＭＤ演算時に参照するマスクレジスタ４６の各ビットにマスク値が格納される。
【００９０】
なお、積和演算（ＳＩＭＤ演算）が実行される場合、３つの浮動小数点レジスタ４８が使用される。３つの浮動小数点レジスタ４８を使用して演算を実行する場合にも、マスクレジスタ４６の使い方は、２つの浮動小数点レジスタ４８を使用して演算を実行する場合と同様である。
【００９１】
ＳＩＭＤ演算では、演算効率を向上するため、演算を抑止するマスク値（＝”０”）は設定されない方が好ましい。このため、各データ組に対応するマスク値は”１”に設定されることが多い。すべてのデータ組のＳＩＭＤ演算を実行する場合、対応するマスクレジスタ４６にオール”１”を書き込むことで、全てのマスクビットを”１”に設定することができる。
【００９２】
すべてのデータ組のＳＩＭＤ演算を実行する頻度が高いことを考慮して、演算処理装置１０２で使用される命令セットアーキテクチャ（ＩＳＡ）には、所定のマスクレジスタ４６にオール”１”を書き込むオール”１”書き込み命令（特定値書き込み命令）が含まれる。この場合、特定値はオール”１”であり、命令デコード部１８は、オール”１”書き込み命令のデコードに基づいて、レジスタ制御部２０に識別情報ＲＩＮＦを書き込む。
【００９３】
図７は、図６の命令デコード部１８およびレジスタ制御部２０の一例を示す。命令デコード部１８は、４つのデコードスロット１８２（１８２ａ、１８２ｂ、１８２ｃ、１８２ｄ）と、識別情報管理部１８６とを有する。なお、デコードスロット１８２の数は、複数個であれば、４つに限定されない。４つのデコードスロット１８２は、命令バッファ１６から命令を並列に受け、受けた命令を並列にデコードし、デコード結果に応じて命令をリザベーションステーションＲＳＡ２４１、ＲＳＥ２４２、ＲＳＦ２４３、ＲＳＢＲ２４４のいずれかに発行する。すなわち、演算処理装置１０２は、４つの命令を並列に処理可能なスーパースカラプロセッサである。
【００９４】
デコードスロット１８２は、命令判定部１８４（１８４ａ、１８４ｂ、１８４ｃ、１８４ｄ）をそれぞれ有する。各命令判定部１８４は、命令デコード部１８からの命令がマスクレジスタ４６に特定値を書き込むマスク書き込み命令であるか否かを判定する。各命令判定部１８４は、命令が特定値を書き込むマスク書き込み命令である場合、書き込み対象のマスクレジスタ４６を識別するレジスタ番号ＲＥＧＮと特定値であることを示す情報とを識別情報管理部１８６に出力する。
【００９５】
また、各命令判定部１８４は、命令デコード部１８からの命令がマスクレジスタ４６に特定値以外の値を書き込むマスク書き込み命令であるか否かを判定する。各命令判定部１８４は、命令が特定値以外の値を書き込むマスク書き込み命令である場合、書き込み対象のマスクレジスタ４６を識別するレジスタ番号ＲＥＧＮと特定値以外であることを示す情報とを識別情報管理部１８６に出力する。さらに、各命令判定部１８４は、命令が特定値または特定値以外の値を書き込むマスク書き込み命令である場合、マスク書き込み命令のプログラム上での記述順を示すアドレス等の情報を識別情報管理部１８６に出力する。
【００９６】
各命令判定部１８４は、命令デコード部１８からの命令がマスクレジスタ４６からマスク値を読み出すマスク読み出し命令であるか否かを判定する。各命令判定部１８４は、命令がマスク読み出し命令である場合、読み出し対象のマスクレジスタ４６を示すレジスタ番号ＲＥＧＮをレジスタ制御部２０に出力する。各命令判定部１８４は、レジスタ番号ＲＥＧＮの出力に基づいてレジスタ制御部２０から出力されるフラグ情報ＲＦＬＧを受け、フラグ情報ＲＦＬＧをマスク読み出し命令に付随してＲＳＦ２４３に出力する。
【００９７】
但し、各命令判定部１８４は、以下の場合、フラグ情報ＲＦＬＧを許可状態（後述）に変更してＲＳＦ２４３に出力する。例えば、あるデコードスロット１８２でデコードした、レジスタ番号ＲＥＧＮに対応するマスク読み出し命令の記述より前に、他のデコードスロット１８２でデコードした、レジスタ番号ＲＥＧＮに対応する特定値でない値を書き込むマスク書き込み命令があるとする。この場合、マスク読み出し命令に基づいて、読み出し対象のマスクレジスタ４６から特定値でない値を読み出す必要がある。このため、識別情報管理部１８６は、各命令判定部１８４から特定値でない値を書き込むマスク書き込み命令の情報を収集し、収集した情報に基づいて、フラグ情報ＲＦＬＧを抑止状態（後述）から許可状態に変更させる指示を対象のデコードスロット１８２に発行する。
【００９８】
識別情報管理部１８６は、各デコードスロット１８２からの並列に受ける情報に基づいて、識別情報保持部２０２に格納する識別情報ＲＩＮＦ（ＲＥＧＮ、ＴＧＲ）を決定する。識別情報管理部１８６は、命令判定部１８４のいずれか１つからレジスタ番号ＲＥＧＮと特定値を示す情報とを受けた場合、フラグＴＧＲをセットする指示ＳＥＴと、レジスタ番号ＲＥＧＮとを識別情報ＲＩＮＦとしてレジスタ制御部２０に出力する（セット動作）。
【００９９】
識別情報管理部１８６は、命令判定部１８４のいずれか１つからレジスタ番号ＲＥＧＮと特定値以外を示す情報とを受けた場合、レジスタ制御部２０に保持されたレジスタ番号ＲＥＧＮに応じて異なる動作を実行する。命令判定部１８４から受けたレジスタ番号ＲＥＧＮがレジスタ制御部２０に保持されたレジスタ番号ＲＥＧＮと同じ場合、識別情報管理部１８６は、フラグＴＧＲをリセットする指示ＲＳＴを識別情報ＲＩＮＦとしてレジスタ制御部２０に出力する（リセット動作）。一方、命令判定部１８４から受けたレジスタ番号ＲＥＧＮがレジスタ制御部２０に保持されたレジスタ番号ＲＥＧＮと異なる場合、識別情報管理部１８６は、レジスタ制御部２０に保持された情報（ＲＥＧＮ、ＴＧＲ）を更新しない（非動作）。
【０１００】
識別情報管理部１８６は、複数の命令判定部１８４からレジスタ番号ＲＥＧＮとマスク値とを示す情報とを受けた場合、各マスク書き込み命令に対応してセット動作またはリセット動作を実行するか否かを判定する。識別情報管理部１８６は、判定結果に基づいて、セット動作またはリセット動作を実行し、あるいは、セット動作及びリセット動作の実行を抑止する。例えば、識別情報管理部１８６は、セット動作またはリセット動作の対象の複数のマスク書き込み命令のうち、プログラム上で最も後に記述されたマスク書き込み命令に対応するセット動作またはリセット動作を実行する。これにより、識別情報管理部１８６によるレジスタ制御部２０へのアクセス回数を最小限にすることができ、レジスタ制御部２０へのアクセスに伴う消費電力の増加を抑制することができる。
【０１０１】
レジスタ制御部２０は、識別情報ＲＩＮＦ（フラグＴＧＲとレジスタ番号ＲＥＧＮ）を保持する識別情報保持部２０２と、４つのデコードスロット１８２にそれぞれ対応する４つの一致検出部２０４（２０４ａ、２０４ｂ、２０４ｃ、２０４ｄ）とを有する。識別情報保持部２０２の構成および機能は、図１に示した識別情報保持部３の構成および機能と同様である。
【０１０２】
なお、レジスタ制御部２０は、ＣＳＥ３０が発行するクリア信号ＣＬＲに基づいて、識別情報保持部２０２のフラグＴＧＲをリセット（無効化）する機能を有する。ＣＳＥ３０は、分岐予測部２２による分岐予測が外れた場合等にパイプラインで仕掛かり中の処理をクリアするためにクリア信号ＣＬＲを発行する。これにより、識別情報保持部２０２に設定された識別情報ＲＩＮＦが、マスクレジスタ４６が保持するマスク値と対応しない不具合を抑止することができ、演算処理装置１０２の誤動作を抑止することができる。以下では、パイプラインをクリアすることは、パイプラインクリアとも称される。クリア信号ＣＬＲは、命令の実行を取り消す指示の一例である。パイプラインの例は、図９で説明される。
【０１０３】
各一致検出部２０４は、対応する命令判定部１８４から受けるレジスタ番号ＲＥＧＮが、識別情報保持部２０２に保持されたレジスタ番号ＲＥＧＮと一致する場合、識別情報保持部２０２に保持されたフラグＴＧＲの値に基づいて、フラグ情報ＲＦＬＧを出力する。各一致検出部２０４は、フラグＴＧＲがセット状態（ハイレベル）の場合、フラグ情報ＲＦＬＧを抑止状態に設定し、フラグＴＧＲがリセット状態（ロウレベル）の場合、フラグ情報ＲＦＬＧを許可状態に設定する。
【０１０４】
また、各一致検出部２０４は、対応する命令判定部１８４から受けるレジスタ番号ＲＥＧＮが、識別情報保持部２０２に保持されたレジスタ番号ＲＥＧＮと一致しない場合、フラグ情報ＲＦＬＧを許可状態に設定する。抑止状態のフラグ情報ＲＦＬＧは、図１で説明した抑止情報に対応し、許可状態のフラグ情報ＲＦＬＧは、図１で説明した許可情報に対応する。各一致検出部２０４は、デコードスロット１８２からの問い合わせに基づいて、レジスタ番号ＲＥＧＮが識別情報保持部２０２に保持された識別情報ＲＩＮＦ（ＲＥＧＮ、ＴＧＲ）に対応するか否かを示すフラグ情報ＲＦＬＧを通知する通知部の一例である。フラグ情報は、対応情報の一例である。
【０１０５】
図７に示す構成により、識別情報保持部２０２が複数のデコードスロット１８２に対して共通に設けられる場合にも、マスク書き込み命令に基づいて、正しいフラグＴＧＲと正しいレジスタ番号ＲＥＧＮを識別情報保持部２０２に保持することができる。これにより、マスク読み出し命令に基づいて、マスク値をマスクレジスタ４６から読み出すか否かの判定を正しく実行することができる。
【０１０６】
また、図７に示す構成では、複数のデコードスロット１８２に共通の識別情報保持部２０２を設け、各デコードスロット１８２からの問い合わせに応じて、各デコードスロット１８２に対応する一致検出部２０４がフラグ情報ＲＦＬＧを出力する。これにより、複数のデコードスロット１８２のそれぞれは、識別情報保持部２０２に設定された識別情報ＲＩＮＦにアクセスすることなく、フラグ情報ＲＦＬＧを取得することができ、フラグ情報ＲＦＬＧの取得効率を向上することができる。
【０１０７】
さらに、図７に示す構成により、マスク書き込み命令とマスク読み出し命令とが、命令バッファ１６からどのデコードスロット１８２に供給されるかにかかわらず、マスク値をマスクレジスタ４６から読み出すか否かの判定を正しく実行することができる。すなわち、スーパースカラ方式に適した動作を実現することができる。また、複数の一致検出部２０４による一致の検出動作を並列に実行できるため、１つの一致検出部２０４により一致の検出動作を順次実行する場合に比べて、検出時間を短縮することができる。この結果、複数のデコードスロット１８２が命令をＲＳＦ２４３に発行するタイミングを揃えることができる。
【０１０８】
図８は、図７に示す命令デコード部１８の動作の一例を示す。図８において、符号ＭＷＲは、マスク書き込み命令を示し、符号４６［０］、４６［１］は、マスク値が書き込まれるマスクレジスタ４６を示す。符号ＷＲは、マスク書き込み命令以外の書き込み命令を示し、符号ＲＤは、読み出し命令を示す。読み出し命令は、マスク読み出し命令でもよく、マスク読み出し命令以外の読み出し命令でもよい。
【０１０９】
符号ＡＬＬ１は、マスク値がオール”１”（特定値）であることを示し、符号ＡＬＬ０は、マスク値がオール”１”以外の値（例えば、オール”０”）であることを示す。説明を分かりやすくするため、（状態Ａ）、（状態Ｂ）、（状態Ｃ）、（状態Ｄ）の各々において、命令判定部１８４ａ、１８４ｂ、１８４ｃ、１８４ｄで判定する命令の並び順が、プログラムの記述順であるとする。すなわち、プログラムに記述された順に、命令がデコードスロット１８２ａ、１８２ｂ、１８２ｃ、１８２ｄに格納される。
【０１１０】
（状態Ａ）では、命令デコード部１８は、１つのマスク書き込み命令ＭＷＲをデコードする。命令判定部１８４ｃは、デコード結果に基づいて、レジスタ番号ＲＥＧＮ＝”０”とマスク値＝”ＡＬＬ１”とを識別情報管理部１８６に出力する。マスクレジスタ４６にオール”１”を書き込む１つのマスク書き込み命令がデコードされたため、識別情報管理部１８６は、命令判定部１８４ｃから受けたレジスタ番号ＲＥＧＮ＝”０”を識別情報保持部２０２に書き込み、フラグＴＧＲを”１”にセットする。
【０１１１】
（状態Ｂ）では、命令デコード部１８は、２つのマスク書き込み命令ＭＷＲをデコードする。命令判定部１８４ａは、デコード結果に基づいて、レジスタ番号ＲＥＧＮ＝”０”とマスク値＝”ＡＬＬ１”とを識別情報管理部１８６に出力する。命令判定部１８４ｃは、デコード結果に基づいて、レジスタ番号ＲＥＧＮ＝”１”とマスク値＝”ＡＬＬ１”とを識別情報管理部１８６に出力する。
【０１１２】
互いに異なるマスクレジスタ４６にオール”１”を書き込む２つのマスク書き込み命令がデコードされたため、識別情報管理部１８６は、インオーダでの実行順が後の命令を採用する。そして、識別情報管理部１８６は、命令判定部１８４ｃから受けたレジスタ番号ＲＥＧＮ＝”１”を識別情報保持部２０２に書き込み、フラグＴＧＲを”１”にセットする。
【０１１３】
（状態Ｃ）では、命令デコード部１８は、２つのマスク書き込み命令ＭＷＲをデコードする。命令判定部１８４ａは、デコード結果に基づいて、レジスタ番号ＲＥＧＮ＝”０”とマスク値＝”ＡＬＬ１”とを識別情報管理部１８６に出力する。命令判定部１８４ｃは、デコード結果に基づいて、レジスタ番号ＲＥＧＮ＝”０”とマスク値＝”ＡＬＬ０”とを識別情報管理部１８６に出力する。
【０１１４】
互いに同じマスクレジスタ４６にオール”１”とオール”１”以外のマスク値を順次書き込む２つのマスク書き込み命令がデコードされたため、識別情報管理部１８６は、識別情報保持部２０２への情報の書き込みを抑止する。これにより、識別情報保持部２０２は、既に保持しているフラグＴＧＲ＝”ｘ”とレジスタ番号ＲＥＧＮ＝”ｙ”とを保持し続ける。
【０１１５】
このため、（状態Ｃ）では、本来、有効であるべきフラグＴＧＲ＝”ｘ”とレジスタ番号ＲＥＧＮ＝”ｙ”とが書き換わることを抑止することができる。この結果、例えば、”ｘ”＝”１”の場合で、レジスタ番号ＲＥＧＮ＝”ｙ”のマスクレジスタ４６からマスク値を読み出すマスク読み出し命令がその後に発行された場合、マスクレジスタ４６を動作させることなくマスク値を読み出すことができる。
【０１１６】
（状態Ｄ）では、命令デコード部１８は、３つのマスク書き込み命令ＭＷＲをデコードする。命令判定部１８４ａは、デコード結果に基づいて、レジスタ番号ＲＥＧＮ＝”０”とマスク値＝”ＡＬＬ１”とを識別情報管理部１８６に出力する。命令判定部１８４ｂは、デコード結果に基づいて、レジスタ番号ＲＥＧＮ＝”１”とマスク値＝”ＡＬＬ１”とを識別情報管理部１８６に出力する。命令判定部１８４ｃは、デコード結果に基づいて、レジスタ番号ＲＥＧＮ＝”１”とマスク値＝”ＡＬＬ０”とを識別情報管理部１８６に出力する。
【０１１７】
（状態Ｄ）では、２番目のマスク書き込み命令によりマスクレジスタ４６［１］にオール”１”が書き込まれた後、３番目のマスク書き込み命令によりマスクレジスタ４６［１］にオール”１”以外のマスク値が書き込まれる。このため、識別情報管理部１８６は、（状態Ｃ）と同様に、マスクレジスタ４６［１］に対するマスク書き込み命令について、識別情報保持部２０２への情報の書き込みを抑止する。そして、識別情報管理部１８６は、命令判定部１８４ａから受けたレジスタ番号ＲＥＧＮ＝”０”を識別情報保持部２０２に書き込み、フラグＴＧＲを”１”にセットする。
【０１１８】
これにより、（状態Ｄ）では、本来、有効であるべきフラグＴＧＲ＝”１”とレジスタ番号ＲＥＧＮ＝”０”とを識別情報保持部２０２に保持することができる。この結果、レジスタ番号ＲＥＧＮ＝”０”のマスクレジスタ４６からマスク値を読み出すマスク読み出し命令がその後に発行された場合、マスクレジスタ４６を動作させることなくマスク値を読み出すことができる。
【０１１９】
このように、識別情報管理部１８６は、４つの命令判定部１８４の判定結果と、命令のインオーダでの実行順とに基づいて、識別情報保持部２０２に書き込む情報を決定する。したがって、スーパースカラ方式の演算処理装置１０２において、命令を順次デコードするスカラ方式の演算処理装置と同様に、識別情報保持部２０２に識別情報ＲＩＮＦを保持し、マスクレジスタ４６の動作を抑止するか許可するかを決定することができる。
【０１２０】
なお、命令デコード部１８が複数のマスク読み出し命令を並列にデコードした場合、各命令判定部１８４は、一致検出部２０４にフラグ情報ＲＦＬＧを通知させる問い合わせを実行する。そして、各命令判定部１８４は、各一致検出部２０４から受けたフラグ情報ＲＦＬＧをマスク読み出し命令に付随して、ＲＳＦ２４３に発行する。
【０１２１】
図９は、図６に示す演算処理装置１０２において、マスク書き込み命令とマスク読み出し命令とを実行する回路の一例を示す。図９において、”ＦＦ”を付した矩形はフリップフロップを示し、各フリップフロップＦＦは、複数のステージに分割されるパイプライン処理におけるステージの境界を示す。なお、図９に示すフリップフロップＦＦ以外にも、ステージの境界を示すフリップフロップＦＦが存在するが、図示は省略される。
【０１２２】
例えば、パイプラインのステージとして、デコードステージ、デコードトランスファステージ、プライオリティステージ、プライオリティトランスファステージ、バッファステージ、実行ステージおよびライトバックステージがある。デコードステージでは、命令デコード部１による命令のデコードが実行される。デコードトランスファステージでは、命令デコード部１によりデコードされた命令がＲＳＥ２４２、ＲＳＦ２４３等に発行される。プライオリティステージでは、例えば、ＲＳＦ２４３により、演算器４２に発行する命令が決定される。
【０１２３】
プライオリティトランスファステージでは、例えば、ＲＳＦ２４３から演算器４２に命令が発行される。バッファステージでは、演算に使用するオペランドがレジスタ４８等から読み出される。実行ステージでは、演算器４２により演算が実行される。ライトバックステージでは、演算器４２による演算の結果がレジスタ４８等に格納される。
【０１２４】
例えば、マスク書き込み命令は、演算命令として、ＲＳＥ２４２から演算器４０に発行される。また、マスク書き込み命令は、１次データキャッシュ３６に保持されたマスク値をマスクレジスタ４６に転送するロード命令でもよい。演算器４０は、マスクレジスタ４６に書き込むマスク値を算出するために、マスクレジスタ４６に専用に設けられてもよい。以下では、演算器４０は、マスク演算器４０とも称される。
【０１２５】
図６で説明されたように、マスク演算器４０は、演算命令に基づいて論理演算または四則演算を実行し、演算結果として、マスクレジスタ４６に書き込む特定値以外のマスク値を生成する。なお、特定値以外のマスク値を書き込むマスク書き込み命令に基づいてマスク演算器４０で実行される演算では、特定値は算出されないものとする。そして、命令デコード部１８によりデコードされたマスク書き込み命令に基づいて、マスクレジスタ４６に特定値以外のマスク値または特定値が書き込まれる。
【０１２６】
特定値は、マスクレジスタ４６から読み出される他のマスク値より読み出し頻度が高いマスク値に設定されることが、演算処理装置１０２の消費電力の削減効果を高める点で好ましい。上述したように、ＳＩＭＤ演算命令において、マスク値がオール”１”に設定される頻度が最も高いと想定される場合、オール”１”をマスクレジスタ４６に書き込む専用の命令が用意される。これにより、マスクレジスタ４６からのオール”１”の読み出しを抑止することができ、消費電力を削減することができる。なお、特定値は、オール”１”以外でもよい。
【０１２７】
一方、マスクレジスタ４６に保持されたマスク値を読み出すマスク読み出し命令は、ＲＳＦ２４３から演算器４２に発行される。マスク読み出し命令は、演算器４２でＳＩＭＤ演算を実行するためのＳＩＭＤ演算命令であるとする。ＳＩＭＤ演算命令により実行される処理は、マスクレジスタ４６からマスク値を読み出してマスクオペランドとして演算器４２に出力するため、ＳＩＭＤ演算命令は、マスク読み出し命令とも言える。以下では、ＳＩＭＤ演算命令を実行する演算器４２は、ＳＩＭＤ演算器４２とも称される。
【０１２８】
ＲＳＦ２４３は、命令デコード部１８から受けるマスク読み出し命令に基づいて、ＳＩＭＤ演算に使用するオペランドデータ（すなわち、演算対象のデータ）を浮動小数点レジスタ４８から出力させる制御を実行する。浮動小数点レジスタ４８から出力されたオペランドデータは、ＳＩＭＤ演算器４２の入力に接続されたフリップフロップＦＦに保持される。
【０１２９】
命令デコード部１８から受けるマスク読み出し命令に付随されたフラグ情報ＲＦＬＧが抑止状態を示す場合、ＲＳＦ２４３は、無効状態を示す読み出しイネーブル信号ＲＥＮをマスクレジスタ４６（レジスタファイル）に出力する。無効状態を示す読み出しイネーブル信号ＲＥＮは、読み出し対象のマスクレジスタ４６がオール”１”（すなわち、特定値）を保持している場合に生成される。
【０１３０】
ＲＳＦ２４３は、無効状態を示す読み出しイネーブル信号ＲＥＮとともに、読み出し対象のマスクレジスタ４６を示すアドレス（レジスタ番号ＲＥＧＮ等）をマスクレジスタ４６（レジスタファイル）に出力してもよい。この場合、ＲＳＦ２４３は、マスクレジスタ４６（レジスタファイル）に出力するアドレスを、例えば、前のレジスタアクセスサイクルで出力したアドレスの論理から変えずに維持する。これにより、アドレスを伝達するアドレス線の充放電を抑制することができ、演算処理装置１０２の消費電力をさらに削減することができる。
【０１３１】
設定部５０およびセレクタ５２は、それぞれ図１に示す設定部６およびセレクタ７に対応する。設定部５０には、予めオール”１”（特定値）が設定される。セレクタ５２は、マスク演算器４０による演算結果をマスクレジスタ４６に経由させることなくＳＩＭＤ演算器４２等にバイパスするための経路上に設けられる。そして、セレクタ５２は、マスク演算器４０の出力と、マスク演算器４０の出力に接続されたフリップフロップＦＦの出力とを選択可能である。特定値を選択しない通常の動作では、セレクタ５２がどの経路を選択するかは、先行して実行中の演算のタイミングと、セレクタ５２により選択されたデータをオペランドデータとして使用する演算のタイミングとに基づいて決定される。
【０１３２】
ＲＳＦ２４３は、フラグ情報ＲＦＬＧが抑止状態を示す場合、セレクタ５２にマスクレジスタ４６の出力ではなく設定部５０の出力を選択させる選択信号ＳＥＬを出力する。これにより、マスクレジスタ４６（レジスタファイル）を動作させることなく、オール”１”をＳＩＭＤ演算器４２に出力することができ、マスクレジスタ４６からオール”１”を読み出す場合に比べて、演算処理装置１０２の消費電力を削減することができる。図９では、バイパス制御に使用するセレクタ５２を利用して、設定部５０に設定された特定値をマスクオペランドとして選択することができるため、回路規模の増大を抑制することができる。ＲＳＦ２４３およびセレクタ５２は、動作制御部の一例である。
【０１３３】
一方、命令デコード部１８から受けるマスク読み出し命令に付随されたフラグ情報ＲＦＬＧが許可状態を示す場合、ＲＳＦ２４３は、有効状態を示す読み出しイネーブル信号ＲＥＮをマスクレジスタ４６（レジスタファイル）に出力する。有効状態を示す読み出しイネーブル信号ＲＥＮは、読み出し対象のマスクレジスタ４６がオール”１”以外のマスク値を保持している場合に生成される。ＲＳＦ２４３は、有効状態を示す読み出しイネーブル信号ＲＥＮとともに、読み出し対象のマスクレジスタ４６を示すアドレス（レジスタ番号ＲＥＧＮ等）をマスクレジスタ４６（レジスタファイル）に出力する。
【０１３４】
また、ＲＳＦ２４３は、フラグ情報ＲＦＬＧが許可状態を示す場合、セレクタ５２にマスクレジスタ４６の出力を選択させる選択信号ＳＥＬを出力する。これにより、マスクレジスタ４６（レジスタファイル）からマスク値を読み出し、読み出したマスク値をＳＩＭＤ演算器４２に出力することができる。
【０１３５】
なお、マスク読み出し命令は、マスクレジスタ４６に保持されたマスク値を１次データキャッシュに書き込むストア命令でもよい。ストア命令においても、ストア命令に付随するフラグ情報ＲＦＬＧが抑止状態の場合、マスクレジスタ４６は読み出しアクセスされず、セレクタは、オール”１”を選択してＳＩＭＤ演算器４２に出力する。
【０１３６】
図１０は、図６の演算処理装置１０２の動作フローの一例を示す。すなわち、図１０は、演算処理装置１０２の制御方法の一例を示す。図１０に示す動作フローは、命令デコード部１８が命令をデコードしたことに基づいて開始される。
【０１３７】
まず、ステップＳ３０において、命令デコード部１８は、マスク書き込み命令をデコードしたか否かを判定する。マスク書き込み命令がデコードされた場合、動作はステップＳ３２に移行され、マスク書き込み命令がデコードされていない場合、動作はステップＳ３４に移行される。
【０１３８】
ステップＳ３２において、命令デコード部１８は、フラグＴＧＲおよびレジスタ番号ＲＥＧＮを識別情報保持部２０２に設定する処理を実行し、動作をステップＳ３４に移行する。ステップＳ３２の動作の例は、図１１に示される。
【０１３９】
ステップＳ３４において、命令デコード部１８は、マスク読み出し命令をデコードしたか否かを判定する。マスク読み出し命令がデコードされた場合、動作はステップＳ３６に移行され、マスク読み出し命令がデコードされていない場合、動作はステップＳ３８に移行される。なお、ステップＳ３０、Ｓ３４の順序は、逆にされてもよい。
【０１４０】
ステップＳ３６において、命令デコード部１８は、デコードしたマスク読み出し命令による読み出し対象のマスクレジスタ４６のレジスタ番号ＲＥＧＮをレジスタ制御部２０に通知し、レジスタ制御部２０からフラグ情報ＲＦＬＧを受ける。命令デコード部１８は、受けたフラグ情報ＲＦＬＧをマスク読み出し命令に付随し、動作をステップＳ３８に移行する。
【０１４１】
複数のデコードスロット１８２がそれぞれマスク読み出し命令をデコードした場合、各マスク読み出し命令についてステップＳ３６の動作が実行される。なお、レジスタ制御部２０は、命令デコード部１８からのレジスタ番号ＲＥＧＮが、識別情報保持部２０２に保持されたレジスタ番号ＲＥＧＮと一致し、フラグＴＧＲがセットされている場合、抑止状態を示すフラグ情報ＲＦＬＧを命令デコード部１８に出力する。レジスタ制御部２０は、レジスタ番号ＲＥＧＮが、識別情報保持部２０２に保持されたレジスタ番号ＲＥＧＮと一致しない場合、許可状態を示すフラグ情報ＲＦＬＧを命令デコード部１８に出力する。
【０１４２】
ステップＳ３８において、命令デコード部１８は、デコードした命令を、命令の処理対象であるＲＳＡ２４１、ＲＳＥ２４２、ＲＳＦ２４３、ＲＳＢＲ２４４のいずれかに発行する。次に、ステップＳ４０において、命令を受けたＲＳＡ２４１、ＲＳＥ２４２、ＲＳＦ２４３、ＲＳＢＲ２４４は、命令の実行対象である演算器３８、４０、４２またはオペランドアドレス生成部３４のいずれかに命令を発行する。
【０１４３】
次に、ステップＳ４２において、ＲＳＦ２４３は、マスク読み出し命令に付随されたフラグ情報ＲＦＬＧが抑止状態を示すか否かを判定する。フラグ情報ＲＦＬＧが抑止状態を示す場合、動作はステップＳ４４に移行され、フラグ情報ＲＦＬＧが許可状態を示す場合、動作はステップＳ４６に移行される。
【０１４４】
ステップＳ４４において、ＲＳＦ２４３は、抑止状態のフラグ情報ＲＦＬＧに基づいて、読み出しイネーブル信号ＲＥＮを無効レベル（例えば、ロウレベル）に設定し、選択信号ＳＥＬを、特定値を演算のオペランドとして選択する値に設定する。すなわち、セレクタ５２は、設定部５０の出力を選択する。これにより、マスクレジスタ４６のアクセス動作が抑止され、消費電力が抑制される。すなわち、ＲＳＦ２４３およびセレクタ５２は、マスクレジスタ４６の読み出しアクセスを抑止し、設定部５０に設定された特定値を選択する抑止動作を実行する。ステップＳ４４の後、動作はステップＳ４８に移行される。
【０１４５】
ステップＳ４６において、ＲＳＦ２４３は、許可状態のフラグ情報ＲＦＬＧに基づいて、読み出しイネーブル信号ＲＥＮを有効レベル（例えば、ハイレベル）に設定する。また、ＲＳＦ２４３は、選択信号ＳＥＬを、マスクレジスタ４６から読み出されるマスク値を演算のオペランドとして選択する値に設定する。これにより、マスクレジスタ４６に保持されたマスク値が読み出される。すなわち、ＲＳＦ２４３およびセレクタ５２は、マスクレジスタ４６の読み出しアクセスを許可し、設定部５０に設定された特定値を選択しない許可動作を実行する。ステップＳ４６の後、動作はステップＳ４８に移行される。
【０１４６】
ステップＳ４８において、演算命令を受けた演算器３８、４０、４２は、各種レジスタ４４、４６、４８から読み出されたオペランドを使用して演算を実行する。あるいは、メモリアクセス命令を受けたオペランドアドレス生成部３４は、１次データキャッシュにアクセスする。そして、図１０に示す動作が終了する。
【０１４７】
図１１は、図１０のステップＳ３２の動作フローの一例を示す。図１１の動作フローは、識別情報管理部１８６により実行される。まず、ステップＳ３２１において、識別情報管理部１８６は、特定値書き込み命令の後に実行される命令の中に、対象のマスクレジスタ４６に特定値以外のマスク値を書き込むマスク書き込み命令があるか否かを判定する。ここで、判定の対象となる命令は、複数のデコードスロット１８２により並列（例えば、同時）にデコードされた命令であり、命令の実行の順序は、プログラムの記述順（インオーダ）により判定される。
【０１４８】
対象のマスクレジスタ４６に特定値以外のマスク値を書き込むマスク書き込み命令がある場合、動作はステップＳ３２２に移行される。対象のマスクレジスタ４６に特定値以外のマスク値を書き込むマスク書き込み命令がない場合、対象のマスクレジスタ４６に特定値を書き込む特定値書き込み命令が仮の設定対象とされ、動作はステップＳ３２３に移行される。ここで、仮の設定対象は、識別情報保持部２０２に識別情報ＲＩＮＦ（ＴＧＲ＝”１”、ＲＥＧＮ）が設定される可能性のあることを示す。
【０１４９】
ステップＳ３２２において、識別情報管理部１８６は、対象のマスクレジスタ４６に特定値以外のマスク値が書き込まれる前に特定値を書き込む特定値書き込み命令を仮の設定対象から外し、動作をステップＳ３２３に移行する。
【０１５０】
ステップＳ３２３において、識別情報管理部１８６は、特定値（オール”１”）を書き込む特定値書き込み命令があるか否かを判定する。以下では、特定値書き込み命令により特定値が書き込まれるマスクレジスタ４６は、対象のマスクレジスタ４６とも称される。特定値書き込み命令がある場合、動作はステップＳ３２４に移行され、特定値書き込み命令がない場合、動作はステップＳ３２６に移行される。複数のデコードスロット１８２の少なくとも１つが特定値書き込み命令をデコードした場合、動作はステップＳ３２４に移行される。
【０１５１】
ステップＳ３２４において、識別情報管理部１８６は、仮の設定対象のマスク書き込み命令の中で、プログラムの最も後に記述されたマスク書き込み命令を真の設定対象とする。次に、ステップＳ３２５において、識別情報管理部１８６は、ステップＳ３２４で真の設定対象としたマスク書き込み命令により特定値が書き込まれるマスクレジスタ４６のレジスタ番号ＲＥＧＮを識別情報保持部２０２に格納する。また、識別情報管理部１８６は、識別情報保持部２０２のフラグＴＧＲを”１”にセットし、動作を終了する。
【０１５２】
一方、ステップＳ３２６において、識別情報管理部１８６は、識別情報保持部２０２に設定中のレジスタ番号ＲＥＧＮで示されるマスクレジスタ４６に特定値以外のマスク値を書き込むマスク書き込み命令があるか否かを判定する。特定値以外のマスク値を書き込むマスク書き込み命令がある場合、動作はステップＳ３２７に移行され、特定値以外のマスク値を書き込むマスク書き込み命令がない場合、動作は終了する。ステップＳ３２７において、識別情報管理部１８６は、識別情報保持部２０２のフラグＴＧＲを”０”にリセットし、動作を終了する。
【０１５３】
以上、図６から図１１に示す実施形態においても、図１から図５に示す実施形態と同様に、マスクレジスタ４６から特定値を読み出すマスク読み出し命令に基づいて、マスクレジスタ４６にアクセスすることなく、特定値を用いて演算を実行することができる。この結果、マスクレジスタ４６にアクセスして特定値を読み出す場合に比べて、命令の実行時の演算処理装置１０２の消費電力を削減することができる。識別情報保持部２０２に保持される識別情報ＲＩＮＦを複数のマスクレジスタ４６で共有する場合にも、消費電力を削減しつつ、演算器４２に正しい値を出力することができる。
【０１５４】
さらに、図６から図１１に示す実施形態では、識別情報保持部２０２が複数のデコードスロット１８２に対して共通に設けられる場合にも、正しいフラグＴＧＲと正しいレジスタ番号ＲＥＧＮを識別情報保持部２０２に保持することができる。これにより、マスク読み出し命令に基づいて、マスク値をマスクレジスタ４６から読み出すか否かの判定を正しく実行することができる。また、マスク書き込み命令とマスク読み出し命令とが、どのデコードスロット１８２に供給されるかにかかわらず、マスク値をマスクレジスタ４６から読み出すか否かの判定を正しく実行することができる。
【０１５５】
識別情報管理部１８６が図１１に示す動作を実行することで、複数のデコードスロット１８２が複数の命令を並列にデコードする場合にも、複数の命令を順次デコードする場合と同様に、識別情報保持部２０２に正しい識別情報ＲＩＮＦを設定することができる。
【０１５６】
分岐予測部２２による分岐予測が外れた場合に、識別情報保持部２０２のフラグＴＧＲをリセットすることで、識別情報保持部２０２に設定された識別情報ＲＩＮＦが、マスクレジスタ４６が保持するマスク値と対応しない不具合を抑止することができる。これにより、演算処理装置１０２の誤動作を抑止することができる。
【０１５７】
デコードスロット１８２毎に一致検出部２０４を設けることで、複数のデコードスロット１８２のそれぞれは、識別情報保持部２０２に設定された識別情報ＲＩＮＦにアクセスすることなく、フラグ情報ＲＦＬＧを効率的に取得することができる。バイパス制御に使用するセレクタ５２を利用して、設定部５０に設定された特定値をマスクオペランドとして選択することができるため、回路規模の増大を抑制することができる。
【０１５８】
図１２は、別の実施形態の演算処理装置における命令デコード部およびレジスタ制御部の一例を示す。図７で説明した要素と同一または同様の要素については、同じ符号を付し、詳細な説明は省略される。図１２に示す演算処理装置１０４は、例えば、スーパースカラ方式のプロセッサである。なお、演算処理装置１０４は、スカラ方式等の他の方式のプロセッサでもよい。また、演算処理装置１０４を含む情報処理システムは、図５と同様の構成であり、図５のＣＰＵの符号を１０４に置き換えることで実現される。
【０１５９】
この実施形態では、マスクレジスタ４６に書き込む特定のマスク値として、複数の特定値（例えば、オール”１”とオール”０”の２つ）を指定することができる。また、複数の特定値にそれぞれ対応して、特定値をマスクレジスタ４６に書き込む複数の特定値書き込み命令が命令セットに用意される。例えば、オール”１”は、マスクレジスタ４６に設定される頻度が最も高いマスク値であり、オール”０”は、マスクレジスタ４６に設定される頻度が２番目に高いマスク値であるとする。
【０１６０】
図１２に示す演算処理装置１０４では、命令デコード部１８は、図７に示す命令判定部１８４（１８４ａ、１８４ｂ、１８４ｃ、１８４ｄ）の代わりに命令判定部１８４Ａ（１８４Ａａ、１８４Ａｂ、１８４Ａｃ、１８４Ａｄ）を有する。また、命令デコード部１８は、図７に示す識別情報管理部１８６の代わりに識別情報管理部１８６Ａを有する。命令デコード部１８において、命令判定部１８４Ａおよび識別情報管理部１８６Ａを除く構成および機能は、図７に示す命令デコード部１８と同様である。
【０１６１】
レジスタ制御部２０は、図７に示す識別情報保持部２０２の代わりに識別情報保持部２０２Ａを有する。また、レジスタ制御部２０は、図７に示す一致検出部２０４（２０４ａ、２０４ｂ、２０４ｃ、２０４ｄ）の代わりに一致検出部２０４Ａ（２０４Ａａ、２０４Ａｂ、２０４Ａｃ、２０４Ａｄ）を有する。レジスタ制御部２０において、識別情報保持部２０２Ａおよび一致検出部２０４Ａを除く構成および機能は、図７に示す識別情報保持部２０２と同様である。識別情報保持部２０２Ａは、図７に示す識別情報保持部２０２が保持するフラグＴＧＲとレジスタ番号ＲＥＧＮとに加えて、データフラグＤＦＬＧを保持する領域を有する。
【０１６２】
各命令判定部１８４Ａは、デコードスロット１８２がオール”１”をマスクレジスタ４６に書き込む専用のマスク書き込み命令をデコードした場合、識別情報管理部１８６Ａにマスク値とレジスタ番号ＲＥＧＮとプログラム上での記述順を示す情報とを出力する。各命令判定部１８４Ａは、デコードスロット１８２がオール”０”をマスクレジスタ４６に書き込む専用のマスク書き込み命令をデコードした場合、識別情報管理部１８６Ａにマスク値とレジスタ番号ＲＥＧＮとプログラム上での記述順を示す情報とを出力する。
【０１６３】
識別情報管理部１８６Ａは、命令判定部１８４Ａのいずれか１つからマスク値とレジスタ番号ＲＥＧＮとを受けた場合、受けたレジスタ番号ＲＥＧＮとマスク値を示すデータフラグＤＦＬＧとを識別情報保持部２０２Ａに格納する。また、識別情報管理部１８６Ａは、識別情報保持部２０２ＡのフラグＴＧＲをセットする。データフラグＤＦＬＧは、特定値を識別する特定値識別情報の一例である。
【０１６４】
識別情報管理部１８６Ａは、複数の命令判定部１８４Ａからマスク値とレジスタ番号ＲＥＧＮとを受けた場合、真の設定対象のマスク書き込み命令を決定する。そして、識別情報管理部１８６Ａは、真の設定対象としたマスク書き込み命令に対応するレジスタ番号ＲＥＧＮとマスク値を示すデータフラグＤＦＬＧとを識別情報保持部２０２Ａに格納する。また、識別情報管理部１８６Ａは、識別情報保持部２０２ＡのフラグＴＧＲをセットする。識別情報管理部１８６Ａのその他の機能は、図７に示す識別情報管理部１８６と同様である。
【０１６５】
また、各命令判定部１８４Ａは、図７に示す命令判定部１８４と同様に、デコードした命令がマスク読み出し命令である場合、読み出し対象のマスクレジスタ４６を示すレジスタ番号ＲＥＧＮをレジスタ制御部２０に出力する。但し、各命令判定部１８４は、レジスタ番号ＲＥＧＮの出力に基づいてレジスタ制御部２０から出力される２ビットのフラグ情報ＲＦＬＧを受ける。各命令判定部１８４Ａは、レジスタ制御部２０から受けたフラグ情報ＲＦＬＧをマスク読み出し命令に付随してＲＳＦ２４３に出力する。
【０１６６】
但し、各命令判定部１８４Ａは、以下の場合、フラグ情報ＲＦＬＧを許可状態（後述）に変更してＲＳＦ２４３に出力する。例えば、あるデコードスロット１８２でデコードした、レジスタ番号ＲＥＧＮに対応するマスク読み出し命令の記述より前に、他のデコードスロット１８２でデコードした、レジスタ番号ＲＥＧＮに対応する特定値でない値を書き込むマスク書き込み命令があるとする。この場合、マスク読み出し命令に基づいて、読み出し対象のマスクレジスタ４６から特定値でない値を読み出す必要がある。このため、識別情報管理部１８６Ａは、各命令判定部１８４Ａから特定値でない値を書き込むマスク書き込み命令の情報を収集し、収集した情報に基づいて、フラグ情報ＲＦＬＧを抑止状態（後述）から許可状態に変更させる指示を対象のデコードスロット１８２に発行する。
【０１６７】
例えば、２進数で”００”のフラグ情報ＲＦＬＧは、読み出し対象のマスクレジスタ４６がオール”０”（特定値）を保持していることを示す。２進数で”０１”のフラグ情報ＲＦＬＧは、読み出し対象のマスクレジスタ４６がオール”１”（特定値）を保持していることを示す。２進数で”１０”のフラグ情報ＲＦＬＧは、読み出し対象のマスクレジスタ４６が特定値以外のマスク値を保持していることを示す。２進数で”００”または”０１”のフラグ情報ＲＦＬＧは、読み出し対象のマスクレジスタ４６からの特定値の読み出しを抑止する抑止状態を示す。２進数で”１０”のフラグ情報ＲＦＬＧは、読み出し対象のマスクレジスタ４６からの特定値の読み出しを許可する許可状態を示す。
【０１６８】
各一致検出部２０４Ａは、識別情報保持部２０２Ａが保持する識別情報ＲＩＮＦ（フラグＴＧＲ、レジスタ番号ＲＥＧＮおよびデータフラグＤＦＬＧ）に基づいて動作する。各一致検出部２０４Ａは、対応する命令判定部１８４Ａから受けるレジスタ番号ＲＥＧＮが、識別情報保持部２０２に保持されたレジスタ番号ＲＥＧＮと一致する場合、識別情報保持部２０２を参照する。そして、各一致検出部２０４Ａは、識別情報保持部２０２に保持されたフラグＴＧＲの値とデータフラグＤＦＬＧの値に基づいて、フラグ情報ＲＦＬＧを出力する。
【０１６９】
各一致検出部２０４は、フラグＴＧＲがセット状態（ハイレベル）の場合、データフラグＤＦＬＧが示すマスク値に対応するフラグ情報ＦＬＧ（２進数で”００”または”０１”；抑止状態）を出力する。各一致検出部２０４Ａは、フラグＴＧＲがリセット状態（ロウレベル）の場合、２進数で”１０”（許可状態）を示すフラグ情報ＲＦＬＧを出力する。さらに、各一致検出部２０４Ａは、対応する命令判定部１８４Ａから受けるレジスタ番号ＲＥＧＮが、識別情報保持部２０２に保持されたレジスタ番号ＲＥＧＮと一致しない場合、２進数で”１０”（許可状態）を示すフラグ情報ＲＦＬＧを出力する。
【０１７０】
図１２に示す構成により、２つの特定値（マスク値）のそれぞれに対応するフラグ情報ＲＦＬＧをマスク読み出し命令に付随させることができる。これにより、図１３で説明されるように、マスクレジスタ４６が２つの特定値のいずれかを保持する場合、マスクレジスタ４６を動作させることなく、特定値をマスクオペランドとして演算器４２に出力することができる。なお、図１２に示す例では、２つの特定値を読み出す場合にマスクレジスタ４６の動作を抑止する例が示される。しかしながら、マスクレジスタ４６に設定される特定値は、３種類以上でもよい。なお、特定値毎に、専用のマスク書き込み命令が予め用意される。
【０１７１】
なお、図８に示す動作を命令判定部１８４Ａ、識別情報管理部１８６Ａおよび識別情報保持部２０２Ａの動作に置き換える場合、（状態Ａ）および（状態Ｂ）では、識別情報保持部２０２Ａが、”ＡＬＬ１”を示すデータフラグＤＦＬＧを保持する。
【０１７２】
演算処理装置１０４では、マスクレジスタ４６が、”ＡＬＬ１”または”ＡＬＬ０”のマスク値を保持する場合、マスク読み出し命令に基づくマスクレジスタ４６の読み出し動作を抑止する。このため、（状態Ｃ）では、識別情報管理部１８６Ａは、フラグＴＧＲ＝”１”と、レジスタ番号ＲＥＧＮ＝”０”と、”ＡＬＬ０”を示すデータフラグＤＦＬＧとを識別情報保持部２０２Ａに書き込む。
【０１７３】
なお、（状態Ｃ）において、命令判定部１８４ｃに対応する命令判定部１８４Ａｃが、”ＡＬＬ０”および”ＡＬＬ１”のいずれでもないマスク値（すなわち、特定値以外のマスク値）をマスクレジスタ４６に書き込むマスク書き込み命令をデコードしたとする。この場合、識別情報管理部１８６Ａは、フラグＴＧＲ＝”１”と、レジスタ番号ＲＥＧＮ＝”０”と、”ＡＬＬ１”を示すデータフラグＤＦＬＧとを識別情報保持部２０２Ａに書き込む。（状態Ｄ）では、識別情報管理部１８６Ａは、フラグＴＧＲ＝”１”と、レジスタ番号ＲＥＧＮ＝”１”と、”ＡＬＬ０”を示すデータフラグＤＦＬＧとを識別情報保持部２０２Ａに書き込む。
【０１７４】
図１３は、図１２に示す演算処理装置１０４において、マスク書き込み命令とマスク読み出し命令とを実行する回路の一例を示す。図９で説明した要素と同一または同様の要素については、同じ符号を付し、詳細な説明は省略される。
【０１７５】
図１３は、図９の設定部５０の代わりに設定部５０Ａが設けられ、図９のセレクタ５２の代わりにセレクタ５２Ａが設けられることを除き、図９に示す構成と同様である。設定部５０Ａには、２つの特定値（オール”１”とオール”０”）が設定される。なお、特定値が３種類以上の場合、設定部５０Ａには、各特定値が設定される。
【０１７６】
セレクタ５２Ａは、図９に示すセレクタ５２の機能に加えて、選択信号ＳＥＬに基づいて設定部５０Ａからオール”０”を選択する機能を有する。このため、ＲＳＦ２４３は、命令デコード部１８から受けるマスク読み出し命令に付随するフラグ情報ＲＦＬＧに基づいて、設定部５０Ａに設定されたオール”１”またはオール”０”をセレクタ５２Ａに選択させる選択信号ＳＥＬをセレクタ５２Ａに出力する。ＲＳＦ２４３およびセレクタ５２Ａは、動作制御部の一例である。
【０１７７】
図１２に示す演算処理装置１０４の動作は、図１０に示す動作フローにより示される。但し、図１０のステップＳ３２の例を示す図１１では、特定値は、オール”１”またはオール”０”と読み替えられ、特定値以外の値は、オール”１”およびオール”０”以外の値と読み替えられる。これにより、複数のマスクレジスタ４６が複数種の特定値をそれぞれ保持する場合にも、レジスタ読み出し命令に基づいて、識別情報保持部２０２Ａに保持されたデータフラグＤＦＬＧに対応する複数種の特定値を設定部５０Ａから選択することができる。したがって、複数種の特定値のいずれかを保持するマスクレジスタ４６からの特定値の読み出しを抑止することができ、マスクレジスタ４６から特定値を読み出す場合に比べて、命令の実行時の演算処理装置１０４の消費電力を削減することができる。
【０１７８】
以上、図１２および図１３に示す実施形態においても、図１から図５に示す実施形態と同様の効果を得ることができる。さらに、図１２および図１３に示す実施形態では、複数種の特定値のいずれかを保持するマスクレジスタ４６からの特定値の読み出しを抑止することができる。この結果、マスクレジスタ４６が複数種の特定値のいずれを保持する場合にも、マスクレジスタ４６をアクセスすることなく特定値をオペランドとして演算器４２に供給することができ、命令の実行時の演算処理装置１０４の消費電力を削減することができる。
【０１７９】
図１４は、別の実施形態における演算処理装置の一例を示す。図６で説明した要素と同一または同様の要素については、同じ符号を付し、詳細な説明は省略される。図１４に示す演算処理装置１０６は、例えば、スーパースカラ方式のプロセッサである。なお、演算処理装置１０６は、スカラ方式等の他の方式のプロセッサでもよい。また、演算処理装置１０６を含む情報処理システムは、図５と同様の構成であり、図５のＣＰＵの符号を１０６に置き換えることで実現される。
【０１８０】
演算処理装置１０６は、コミット制御部３０の代わりにコミット制御部３０Ｂを有することを除き、図６および図９に示す演算処理装置１０２と同様の構成を有する。例えば、命令デコード部１８およびレジスタ制御部２０の構成は、図７と同じである。
【０１８１】
コミット制御部３０Ｂは、フラグＴＧＲｃとレジスタ番号ＲＥＧＮｃとを保持する識別情報保持部３１Ｂを図６に示すコミット制御部３０に追加している。レジスタ番号ＲＥＧＮｃは、特定値書き込み命令により特定値が書き込まれたマスクレジスタ４６の番号を示す。フラグＴＧＲｃは、レジスタ番号ＲＥＧＮｃが有効であることを示す。なお、識別情報保持部３１Ｂは、コミット制御部３０Ｂの外部に設けられてもよい。識別情報保持部３１Ｂは、完了情報保持部の一例である。
【０１８２】
コミット制御部３０Ｂは、特定値書き込み命令の実行の完了処理において、特定値を書き込んだマスクレジスタ４６を示すレジスタ番号ＲＥＧＮｃを識別情報保持部３１Ｂに格納する。また、コミット制御部３０Ｂは、特定値書き込み命令の実行の完了処理において、フラグＴＧＲｃを”１”にセットする。さらに、コミット制御部３０Ｂは、特定値以外の値をレジスタ番号ＲＥＧＮで示されるマスクレジスタ４６に書き込むマスク書き込み命令の実行の完了処理において、フラグＴＧＲｃを”０”にリセットする。なお、フラグＴＧＲｃは、パイプラインクリアではリセットされない。
【０１８３】
図１５は、図１４の演算処理装置１０６の動作の例を示す。図１５において、符号”ＷＲＡＬＬ”は、特定値をマスクレジスタ４６に書き込むための特定値書き込み命令である。符号”ＷＲＡＬＬ”の後の”４６［０］”、”４６［１］”等は、特定値が書き込まれるマスクレジスタ４６の番号を示す。図１５に示す例では、特定値は、オール”１”（”ＡＬＬ１”）であるとする。
【０１８４】
符号”ＷＲ”は、ロード命令等の書き込み命令である。符号”ＷＲ”の後の”４６［０］”は、データ（マスク値）を書き込むディスティネーションを示し、さらに後の”［ＡＤ０］”は、メインメモリ２００のアドレスＡＤ０に保持されたデータ（マスク値）を示す。なお、ＲＳＥ２４２、ＲＳＦ２４３は、それぞれ命令をアウトオブオーダで演算器３８、４０または演算器４２に発行するが、図１５では、説明を分かりやすくするため、命令はインオーダで発行されるとする。
【０１８５】
まず、命令デコード部１８は、マスクレジスタ４６［０］に対する特定値書き込み命令ＷＲＡＬＬのデコードに基づいて、フラグＴＧＲをセットし、レジスタ番号ＲＥＧＮ（＝”０”）を識別情報保持部２０２に格納する（図１５（ａ））。次に、命令デコード部１８は、マスクレジスタ４６［０］に対する特定値以外の値の書き込み命令ＷＲのデコードに基づいて、フラグＴＧＲをリセットする（図１５（ｂ））。この後、演算器４０によりマスクレジスタ４６［０］に対する特定値書き込み命令ＷＲＡＬＬが実行され、マスクレジスタ４６［０］に”ＡＬＬ１”が書き込まれる（図１５（ｃ））。
【０１８６】
コミット制御部３０Ｂは、命令の完了の報告を演算器４０から受け、命令をインオーダで完了（コミット）する。コミット制御部３０Ｂは、特定値書き込み命令”ＷＲＡＬＬ  ４６［０］”の完了に基づいて、フラグＴＧＲｃをセットし、レジスタ番号ＲＥＧＮｃを”０”に設定する（図１５（ｄ））。
【０１８７】
次に、命令デコード部１８は、マスクレジスタ４６［１］に対する特定値書き込み命令ＷＲＡＬＬのデコードに基づいて、フラグＴＧＲをセットし、レジスタ番号ＲＥＧＮ（＝”１”）を識別情報保持部２０２に格納する（図１５（ｅ））。この後、演算器４０によりマスクレジスタ４６［０］に対する書き込み命令ＷＲが実行され、マスクレジスタ４６［０］に例えば、”ＡＬＬ１”以外の値である”ｘｘ”が書き込まれる（図１５（ｆ））。コミット制御部３０Ｂは、書き込み命令”ＷＲ  ４６［０］，［ＡＤ０］”の完了に基づいて、フラグＴＧＲｃをリセットする（図１５（ｇ））。
【０１８８】
次に、命令デコード部１８は、条件分岐命令をデコードする（図１５（ｈ））。この後、演算器４０によりマスクレジスタ４６［１］に対する特定値書き込み命令ＷＲＡＬＬが実行され、マスクレジスタ４６［１］に”ＡＬＬ１”が書き込まれる（図１５（ｉ））。コミット制御部３０Ｂは、命令の完了の報告を演算器４０から受け、命令をインオーダで完了する。コミット制御部３０Ｂは、特定値書き込み命令”ＷＲＡＬＬ  ４６［１］”の完了に基づいて、フラグＴＧＲｃをセットし、レジスタ番号ＲＥＧＮｃを”１”に設定する（図１５（ｊ））。
【０１８９】
次に、条件分岐命令が成立するという分岐予測部２２による予測に基づき、命令デコード部１８は、分岐先の命令であるマスクレジスタ４６［２］に対する特定値書き込み命令ＷＲＡＬＬをデコードする。命令デコード部１８は、デコード結果に基づいて、フラグＴＧＲをセットし、レジスタ番号ＲＥＧＮ（＝”２”）を識別情報保持部２０２に格納する（図１５（ｋ））。
【０１９０】
この後、分岐予測が誤っていたことが判明し、コミット制御部３０Ｂは、正しい分岐方向の命令を実行するために、パイプラインクリアを実行する（図１５（ｌ））。レジスタ制御部２０（図７）は、パイプラインクリアに伴ってコミット制御部３０Ｂから発行されるクリア信号ＣＬＲ（図示せず）に基づいて、フラグＴＧＲをリセットする（図１５（ｍ））。これにより、投機実行のために設定されたレジスタ番号ＲＥＧＮ（＝”２”）を無効化することができ、識別情報保持部２０２が誤った識別情報ＲＩＮＦを保持することを抑止することができる。すなわち、実際には特定値を保持していないマスクレジスタ４６［２］が特定値を保持していることを識別情報ＲＩＮＦが示すことを抑止することができる。
【０１９１】
コミット制御部３０Ｂは、パイプラインクリアに基づいて、フラグＴＧＲｃの値をフラグＴＧＲにコピーし、レジスタ番号ＲＥＧＮｃをレジスタ番号ＲＥＧＮにコピーする（図１５（ｎ））。これにより、マスクレジスタ４６［１］に対する特定値書き込み命令ＷＲＡＬＬのデコードに基づいて識別情報保持部２０２に設定されたフラグＴＧＲとレジスタ番号ＲＥＧＮを復活させることができる。
【０１９２】
図１５では、パイプラインクリアによりリセットされたフラグＴＧＲが、パイプラインクリアの直前に実行された特定値書き込み命令による書き込み対象のマスクレジスタ４６［１］の保持状態に合わせてセットされる。このため、その後、マスクレジスタ４６［１］に対する読み出し命令がデコードされた場合、マスクレジスタ４６［１］を動作させることなく、設定部６に設定された特定値（”ＡＬＬ１”）をマスクオペランドとして読み出すことができる。
【０１９３】
図１６は、図１４のコミット制御部３０Ｂの動作フローの一例を示す。すなわち、図１６は、演算処理装置１０６の制御方法の一例を示す。図１６に示す動作フローは、コミット制御部３０Ｂが命令の完了処理を実行する場合に開始される。なお、ステップＳ６０に示すパイプラインクリアの発生の判定は、命令の完了処理と異なるタイミングで実行されてもよい。
【０１９４】
まず、ステップＳ５０において、コミット制御部３０Ｂは、マスクレジスタ４６に特定値を書き込む特定値書き込み命令をコミットするか否かを判定する。マスクレジスタ４６に特定値書き込み命令をコミットする場合、動作はステップＳ５２に移行され、マスクレジスタ４６に特定値書き込み命令をコミットしない場合、動作はステップＳ５４に移行される。ステップＳ５２において、コミット制御部３０Ｂは、フラグＴＧＲｃを”１”にセットし、レジスタ番号ＲＥＧＮｃを識別情報保持部３１Ｂに格納し、動作をステップＳ５４に移行する。
【０１９５】
ステップＳ５４において、コミット制御部３０Ｂは、マスクレジスタ４６に特定値以外の値を書き込むマスク書き込み命令をコミットするか否かを判定する。マスクレジスタ４６に特定値以外の値を書き込むマスク書き込み命令をコミットする場合、動作はステップＳ５６に移行され、マスクレジスタ４６に特定値以外の値を書き込むマスク書き込み命令をコミットしない場合、動作はステップＳ６０に移行される。
【０１９６】
ステップＳ５６において、コミット制御部３０Ｂは、コミットするマスク書き込み命令により特定値以外の値が書き込まれるマスクレジスタ４６の番号が、レジスタ番号ＲＥＧＮｃと一致するか否かを判定する。レジスタ番号ＲＥＧＮｃと一致する場合、動作はステップＳ５８に移行され、レジスタ番号ＲＥＧＮｃと一致しない場合、動作はステップＳ６０に移行される。ステップＳ５８において、コミット制御部３０Ｂは、フラグＴＧＲｃをリセットし、動作をステップＳ６０に移行する。
【０１９７】
ステップＳ６０において、コミット制御部３０Ｂは、パイプラインクリアが発生した場合、動作をステップＳ６２に移行し、パイプラインクリアが発生していない場合、動作を終了する。ステップＳ６２において、コミット制御部３０Ｂは、フラグＴＧＲｃの値を識別情報保持部２０２のフラグＴＧＲが格納される領域にコピーし、レジスタ番号ＲＥＧＮｃを識別情報保持部２０２のレジスタ番号ＲＥＧＮが格納される領域にコピーする。次に、ステップＳ６４において、コミット制御部３０Ｂは、正しいアドレスから命令のフェッチを再開し、動作を終了する。
【０１９８】
なお、図１２に示す演算処理装置１０４は、コミット制御部３０（図６）の代わりにコミット制御部３０Ｂを有してもよい。
【０１９９】
以上、図１４から図１６に示す実施形態においても、図１から図１３に示す実施形態と同様の効果を得ることができる。さらに、図１４および図１６に示す実施形態では、パイプラインクリアが発生した場合に、識別情報保持部２０２の状態を、パイプラインクリアが発生する前の状態に戻すことができる。すなわち、パイプラインクリアによりリセットされたフラグＴＧＲを有効な状態に復活させることができる。これにより、フラグＴＧＲを復活しない場合に比べて、マスクレジスタ４６を動作させることなく特定値をオペランドして演算器４２に供給できる確率を高くすることができ、演算処理装置１０６の消費電力を削減することができる。
【０２００】
図１７は、別の実施形態の演算処理装置における命令デコード部およびレジスタ制御部の一例を示す。図７で説明した要素と同一または同様の要素については、同じ符号を付し、詳細な説明は省略される。図１７に示す演算処理装置１０８は、例えば、スーパースカラ方式のプロセッサである。なお、演算処理装置１０８は、スカラ方式等の他の方式のプロセッサでもよい。また、演算処理装置１０８を含む情報処理システムは、図５と同様の構成であり、図５のＣＰＵの符号を１０８に置き換えることで実現される。
【０２０１】
この実施形態では、レジスタ制御部２０は、複数の識別情報保持部２０２を有し、図７に示す一致検出部２０４の代わりに一致検出部２０４Ｃ（２０４Ｃａ、２０４Ｃｂ、２０４Ｃｃ、２０４Ｃｄ）を有する。また、命令デコード部１８は、図７に示す識別情報管理部１８６の代わりに識別情報管理部１８６Ｃを有する。命令デコード部１８において、識別情報管理部１８６Ｃを除く構成および機能は、図７に示す命令デコード部１８と同様である。演算処理装置１０８のその他の構成は、図６に示す演算処理装置１０２と同様である。
【０２０２】
識別情報管理部１８６Ｃは、４つの命令判定部１８４から受けるレジスタ番号ＲＥＧＮとマスク値を示す情報とに基づいて、識別情報保持部２０２のいずれかを設定する動作を実行する。識別情報管理部１８６Ｃは、命令判定部１８４からレジスタ番号ＲＥＧＮと特定値を示す情報とを受けた場合、識別情報ＲＩＮＦ（フラグＴＧＲをセットする指示ＳＥＴと、レジスタ番号ＲＥＧＮ）を識別情報保持部２０２のいずれかに出力する。この際、識別情報管理部１８６Ｃは、複数の識別情報保持部２０２のうち、フラグＴＧＲがリセットされた識別情報保持部２０２に識別情報ＲＩＮＦを出力する。フラグＴＧＲがリセットされた識別情報保持部２０２がない場合、識別情報管理部１８６Ｃは、最も古くフラグＴＧＲがセットされた識別情報保持部２０２に識別情報ＲＩＮＦを出力する。なお、指示ＳＥＴとレジスタ番号ＲＥＧＮとを出力する識別情報保持部２０２は、ＬＲＵ（Least  Recently  Used）方式により決められてもよい。
【０２０３】
識別情報管理部１８６Ｃは、命令判定部１８４からレジスタ番号ＲＥＧＮと特定値以外の値を示す情報とを受けた場合、レジスタ番号ＲＥＧＮを保持する識別情報保持部２０２があるか否かを判定する。レジスタ番号ＲＥＧＮを保持する識別情報保持部２０２がある場合、識別情報管理部１８６Ｃは、レジスタ番号ＲＥＧＮを保持する識別情報保持部２０２のフラグＴＧＲをリセットする。レジスタ番号ＲＥＧＮを保持する識別情報保持部２０２がない場合、識別情報管理部１８６Ｃは、レジスタ制御部２０に対する識別情報ＲＩＮＦの書き込みを実行しない。
【０２０４】
なお、レジスタ制御部２０は、コミット制御部３０（図６）からクリア信号ＣＬＲを受けた場合、全ての識別情報保持部２０２のフラグＴＧＲをリセットする。これにより、分岐予測部２２による分岐予測が外れた場合等に、セットされるべきでないフラグＴＧＲがセットされ続けることを抑止することができ、演算処理装置１０８の誤動作を抑止することができる。
【０２０５】
各一致検出部２０４Ｃは、命令判定部１８４からレジスタ番号ＲＥＧＮを受けた場合、レジスタ番号ＲＥＧＮを保持する識別情報保持部２０２があるか否かを検出する。そして、各一致検出部２０４Ｃは、レジスタ番号ＲＥＧＮを保持する識別情報保持部２０２がある場合、レジスタ番号ＲＥＧＮとともに保持するフラグＴＧＲの値を読み出し、フラグＴＧＲの値に基づいて、フラグ情報ＲＦＬＧを出力する。
【０２０６】
但し、各命令判定部１８４は、以下の場合、フラグ情報ＲＦＬＧを許可状態（後述）に変更してＲＳＦ２４３に出力する。例えば、あるデコードスロット１８２でデコードした、レジスタ番号ＲＥＧＮに対応するマスク読み出し命令の記述より前に、他のデコードスロット１８２でデコードした、レジスタ番号ＲＥＧＮに対応する特定値でない値を書き込むマスク書き込み命令があるとする。この場合、マスク読み出し命令に基づいて、読み出し対象のマスクレジスタ４６から特定値でない値を読み出す必要がある。このため、識別情報管理部１８６Ｃは、各命令判定部１８４から特定値でない値を書き込むマスク書き込み命令の情報を収集し、収集した情報に基づいて、フラグ情報ＲＦＬＧを抑止状態（後述）から許可状態に変更させる指示を対象のデコードスロット１８２に発行する。
【０２０７】
各一致検出部２０４Ｃは、図７に示す一致検出部２０４と同様に、フラグＴＧＲがセット状態の場合、フラグ情報ＲＦＬＧを抑止状態に設定し、フラグＴＧＲがリセット状態の場合、フラグ情報ＲＦＬＧを許可状態に設定する。各一致検出部２０４Ｃは、レジスタ番号ＲＥＧＮを保持する識別情報保持部２０２がない場合、フラグ情報ＲＦＬＧを許可状態に設定する。
【０２０８】
命令判定部１８４の動作は、図７で説明した動作と同じである。この実施形態では、命令デコード部１８とレジスタ制御部２０により、複数のマスクレジスタ４６がそれぞれ特定値を保持することを判定することができる。これにより、特定値を保持する複数のマスクレジスタ４６に対する複数のマスク読み出し命令に基づいて、各マスクレジスタ４６の動作を抑止しながら、設定部５０に設定された特定値をマスクオペランドとして読み出す抑止動作を実行することができる。この結果、図６に示す演算処理装置１０２に比べて、命令の実行時の演算処理装置１０８の消費電力をさらに削減することができる。
【０２０９】
なお、図１２に示す演算処理装置１０４において、レジスタ制御部２０が複数の識別情報保持部２０２Ａを有してもよい。この場合、一致検出部２０４Ａに、一致検出部２０４Ｃの機能が追加され、識別情報管理部１８６Ａに、識別情報管理部１８６Ｃの機能が追加される。同様に、図１４に示す演算処理装置１０６の命令デコード部１８とレジスタ制御部２０とが、図１７に示す命令デコード部１８とレジスタ制御部２０とにそれぞれ置き換えられてもよい。さらに、図１２に示す演算処理装置１０４が、図１４に示すコミット制御部３０Ｂと、図１７に示す複数の識別情報保持部２０２Ａとを有してもよい。
【０２１０】
以上、図１７に示す実施形態においても、図１から図１６に示す実施形態と同様の効果を得ることができる。さらに、図１７に示す実施形態では、複数のマスク読み出し命令がそれぞれデコードされた場合にも、各マスクレジスタ４６の動作を抑止しながら、設定部５０に設定された特定値をマスクオペランドとして読み出す抑止動作を実行することができる。この結果、図６に示す演算処理装置１０２に比べて、命令の実行時の演算処理装置１０８の消費電力をさらに削減することができる。
【０２１１】
以上の図１から図１７に示す実施形態に関し、さらに以下の付記を開示する。
（付記１）
命令をデコードするデコード部と、
前記デコード部がデコードした命令を実行する命令実行部と、
前記命令実行部が使用するデータを保持する複数のレジスタを含むレジスタ部と、
前記デコード部がデコードした命令が、前記複数のレジスタのいずれかに特定値を書き込むレジスタ書き込み命令である場合、前記特定値を書き込むレジスタを識別する識別情報が格納される識別情報保持部と、
前記特定値が設定される設定部と、
前記デコード部がデコードした命令が、前記識別情報保持部に保持された識別情報で識別されるレジスタから値を読み出すレジスタ読み出し命令である場合、レジスタ読み出し命令によるレジスタのアクセスを抑止し、前記設定部に設定された前記特定値を選択する抑止動作を実行する動作制御部と
を有することを特徴とする演算処理装置。
（付記２）
前記デコード部は、
各々が命令をデコードする複数のデコーダと、
前記複数のデコーダが複数のレジスタ書き込み命令を並列にデコードした場合、複数のレジスタ書き込み命令に基づいて前記識別情報保持部に格納する識別情報を決定する識別情報管理部を有することを特徴とする付記１に記載の演算処理装置。
（付記３）
前記識別情報管理部は、
並列にデコードした複数のレジスタ書き込み命令の中に前記特定値を書き込むレジスタ書き込み命令がある場合、前記特定値のレジスタ書き込み命令の後に前記特定値以外の値を書き込むレジスタ書き込み命令があるかをレジスタ毎に判定し、
後ろに前記特定値以外の値のレジスタ書き込み命令がない前記特定値のレジスタ書き込み命令のうち、命令の記述が最も後のレジスタ書き込み命令に対応する識別情報を前記識別情報保持部に格納することを特徴とする付記２に記載の演算処理装置。
（付記４）
前記識別情報保持部が保持する識別情報は、レジスタ書き込み命令により前記特定値が書き込まれたレジスタを示すレジスタ情報と、前記レジスタ情報が有効かを示すフラグ情報とを含み、
前記識別情報管理部は、並列にデコードした複数の命令の中に前記特定値のレジスタ書き込み命令がなく、かつ、前記レジスタ情報で示されるレジスタに前記特定値以外の値を書き込むレジスタ書き込み命令がある場合、前記フラグ情報を無効に設定することを特徴とする付記２または付記３に記載の演算処理装置。
（付記５）
前記演算処理装置はさらに、分岐命令により分岐が実行されるかを予測する分岐予測部を有し、
前記識別情報保持部が保持する前記フラグ情報は、前記分岐予測部による予測が外れた場合に出力される命令の実行を取り消す指示に基づいて無効に設定されることを特徴とする付記４に記載の演算処理装置。
（付記６）
前記演算処理装置はさらに、
アウトオブオーダにより実行が完了した命令に基づいてインオーダで命令の完了処理を実行する完了処理部と、
前記完了処理部によるインオーダでの命令の完了処理に基づいて、前記識別情報保持部が保持する識別情報と同じ情報が格納される完了情報保持部とを有し、
前記完了処理部は、命令の実行を取り消す指示に基づいて前記フラグ情報が無効に設定された後、前記完了情報保持部が保持する情報を前記識別情報保持部に格納することを特徴とする付記５に記載の演算処理装置。
（付記７）
前記演算処理装置はさらに、レジスタ読み出し命令をデコードしたデコーダからの問い合わせに基づいて、レジスタ読み出し命令によりアクセスされるレジスタが、前記識別情報保持部が保持する識別情報に対応するかの対応情報を通知する通知部を有し、
前記複数のデコーダの各々は、前記通知部からの対応情報をレジスタ読み出し命令とともに前記動作制御部に出力し、
前記動作制御部は、対応情報に基づいて前記抑止動作を実行するかを決定することを特徴とする付記２ないし付記６のいずれか１項に記載の演算処理装置。
（付記８）
前記識別情報保持部が保持する識別情報は、レジスタ書き込み命令により前記特定値が書き込まれたレジスタを示すレジスタ情報と、前記レジスタ情報が有効かを示すフラグ情報とを含み、
前記動作制御部は、前記レジスタ情報がレジスタ読み出し命令により値を読み出すレジスタを示し、かつ、前記フラグ情報が有効を示す場合、前記抑止動作を実行すること
を特徴とする付記１に記載の演算処理装置。
（付記９）
前記デコード部は、前記レジスタ情報で示されるレジスタに前記特定値以外の値を書き込むレジスタ書き込み命令をデコードした場合、前記フラグ情報を無効に設定し、
前記動作制御部は、前記フラグ情報が無効を示す場合、レジスタ読み出し命令によるレジスタのアクセスを許可し、前記設定部に設定された前記特定値を選択しない許可動作を実行すること
を特徴とする付記８に記載の演算処理装置。
（付記１０）
前記動作制御部は、
前記設定部の出力と、前記レジスタ部の出力と、前記レジスタ部の入力とのいずれかを選択するセレクタを有し、
前記抑止動作を実行する場合、前記設定部の出力を選択する選択信号を前記セレクタに出力することを特徴とする付記１ないし付記９のいずれか１項に記載の演算処理装置。
（付記１１）
前記複数のレジスタの各々は、前記動作制御部が出力するアドレスにより選択され、
前記動作制御部は、レジスタ読み出し命令に基づいて選択されるレジスタのアクセスを抑止する場合、前記レジスタ部に出力するアドレスの論理を前のレジスタアクセスサイクルで出力したアドレスの論理から変えずに維持することを特徴とする付記１ないし付記１０のいずれか１項に記載の演算処理装置。
（付記１２）
前記デコード部は、前記特定値を識別する特定値識別情報を前記識別情報とともに前記識別情報保持部に格納し、
前記設定部には、複数種の前記特定値が設定され、
前記動作制御部は、前記デコード部がデコードした命令が、前記識別情報保持部に保持された識別情報で識別されるレジスタから値を読み出すレジスタ読み出し命令である場合、前記設定部に設定された複数種の前記特定値のうち、前記識別情報保持部に保持された前記特定値識別情報に対応する特定値を選択することで、前記抑止動作を実行することを特徴とする付記１ないし付記１１のいずれか１項に記載の演算処理装置。
（付記１３）
前記識別情報保持部は、複数の前記識別情報を保持する複数の領域を有し、
前記デコード部は、前記複数のレジスタのいずれかに前記特定値を書き込むレジスタ書き込み命令をデコードした場合、前記複数の領域のいずれかに前記識別情報を格納し、
前記動作制御部は、前記デコード部が前記複数の領域のいずれかに保持された識別情報で識別されるレジスタから値を読み出すレジスタ読み出し命令をデコードした場合、前記抑止動作を実行することを特徴とする付記１ないし付記１２のいずれか１項に記載の演算処理装置。
（付記１４）
前記レジスタ読み出し命令は、前記複数のレジスタのいずれかが保持する値をオペランドとして演算を実行する演算命令、または、前記複数のレジスタのいずれかが保持する値をメモリにストアするストア命令であることを特徴とする付記１ないし付記１３のいずれか１項に記載の演算処理装置。
（付記１５）
前記レジスタ書き込み命令は、前記複数のレジスタのいずれかに演算結果を格納する演算命令、前記複数のレジスタのいずれかに前記特定値を書き込む特定値書き込み命令、または、メモリが保持する値を前記複数のレジスタのいずれかにロードするロード命令であることを特徴とする付記１ないし付記１４のいずれか１項に記載の演算処理装置。
（付記１６）
前記複数のレジスタの各々は、前記命令実行部の動作を制御する制御値を保持する制御レジスタであることを特徴とする付記１ないし付記１５のいずれか１項に記載の演算処理装置。
（付記１７）
命令をデコードするデコード部と、前記デコード部がデコードした命令を実行する命令実行部と、前記命令実行部が使用するデータを保持する複数のレジスタを含むレジスタ部とを有する演算処理装置の制御方法において、
前記デコード部が、デコードした命令が前記複数のレジスタのいずれかに特定値を書き込むレジスタ書き込み命令である場合、前記特定値を書き込むレジスタを識別する識別情報を識別情報保持部に格納し、
前記演算処理装置が有する動作制御部が、前記デコード部がデコードした命令が、前記識別情報保持部に保持された識別情報で識別されるレジスタから値を読み出すレジスタ読み出し命令である場合、レジスタ読み出し命令によるレジスタのアクセスを抑止し、設定部に設定された前記特定値を選択する抑止動作を実行すること
を特徴とする演算処理装置の制御方法。
【０２１２】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０２１３】
１        デコード部
２ａ      演算器
３        識別情報保持部
４        アクセス制御部
５ａ      レジスタ
６        設定部
７        セレクタ
１８      命令デコード部
２０      レジスタ制御部
２２      分岐予測部
３０、３０Ｂ  コミット制御部
３１Ｂ    識別情報保持部
３８、４０、４２  演算器
４４、４６、４８  レジスタ
５０、５０Ａ  設定部
５２、５２Ａ  セレクタ
１００、１０２、１０４、１０６、１０８  演算処理装置
１８２    デコードスロット
１８４、１８４Ａ  命令判定部
１８６、１８６Ａ、１８６Ｃ  識別情報管理部
２０２、２０２Ａ  識別情報保持部
２０４、２０４Ａ、２０４Ｃ  一致検出部
２４１、２４２、２４３、２４４  リザベーションステーション
ＲＥＧＮ、ＲＥＧＮｃ  レジスタ番号
ＲＦＬＧ  フラグ情報
ＲＩＮＦ  識別情報
ＴＧＲ、ＴＧＲｃ  フラグ
【図１】
2020047091.tif 000003
【図２】
2020047091.tif 000004
【図３】
2020047091.tif 000005
【図４】
2020047091.tif 000006
【図５】
2020047091.tif 000007
【図６】
2020047091.tif 000008
【図７】
2020047091.tif 000009
【図８】
2020047091.tif 000010
【図９】
2020047091.tif 000011
【図１０】
2020047091.tif 000012
【図１１】
2020047091.tif 000013
【図１２】
2020047091.tif 000014
【図１３】
2020047091.tif 000015
【図１４】
2020047091.tif 000016
【図１５】
2020047091.tif 000017
【図１６】
2020047091.tif 000018
【図１７】
2020047091.tif 000019