以下、図面を用いて実施形態を説明する。
図1は、一実施形態における演算処理装置の一例を示す。図1に示す演算処理装置100は、デコード部1、複数の演算器2aを有する演算部2、識別情報保持部3、アクセス制御部4、複数のレジスタ5a(5a[0]、5a[1])を有するレジスタ部5、設定部6およびセレクタ7を有する。演算器2aは、命令を実行する命令実行部の一例である。アクセス制御部4およびセレクタ7は、動作制御部の一例である。
各レジスタ5aは、値が読み書き可能であれば、汎用レジスタでもよく、演算器2aの動作を制御する制御値を保持する制御レジスタでもよい。例えば、各レジスタ5aは、演算部2が使用するデータを保持する。なお、レジスタ部5が有するレジスタ5aの数は1つでもよく、3つ以上でもよい。演算処理装置100は、複数の命令を並列にフェッチし、フェッチした複数の命令を並列に実行するスーパースカラ方式のプロセッサでもよく、スカラ方式等の他の方式のプロセッサでもよい。
デコード部1は、図示しない1次命令キャッシュ等のメモリからフェッチされた命令をデコードし、デコードの結果に基づいて演算器2aのいずれかに命令を出力する。なお、アクセス制御部4が、命令の実行順を制御するリザベーションステーション等の命令実行制御部の機能を有する場合、デコード部1がデコードした命令は、アクセス制御部4を介して演算器2aに出力される。
デコード部1は、デコードした命令が、レジスタ部5のレジスタ5aのいずれかに値を書き込む書き込み命令である場合、書き込み命令を実行する演算器2aに書き込み命令を出力する。書き込み命令を実行する演算器2aは、レジスタ5aに書き込む値を演算により算出する。なお、書き込み命令を実行する演算器2aは、レジスタ5aに書き込む値を保持するメモリ(図示せず)のアドレスを生成するアドレス演算器でもよく、この場合、書き込み命令は、ロード命令である。
書き込み命令を実行する演算器2aは、書き込み命令に基づいて、書き込み対象のレジスタ5aにフラグ値等のデータを格納する。なお、デコード部1がデコードした命令が、レジスタ部5のレジスタ5aのいずれかに特定値(例えば、オール1等の固定値)を書き込む書き込み命令である場合、演算器2aは、特定値を書き込み対象のレジスタ5aに格納する。
デコード部1は、書き込み命令が、レジスタ5aのいずれかに特定値を書き込む書き込み命令である場合、特定値が書き込まれるレジスタ5aを識別する識別情報RINFを識別情報保持部3に格納する。例えば、識別情報RINFは、特定値が書き込まれるレジスタ5aを識別するレジスタ番号REGNと、レジスタ5aが特定値を保持していることを示すフラグTGRとを含む。レジスタ部5のレジスタ5aのいずれかに値を書き込む書き込み命令は、レジスタ書き込み命令の一例である。レジスタ番号REGNは、レジスタ情報の一例であり、フラグTGRの値はフラグ情報の一例である。
例えば、レジスタ番号REGNで識別されるレジスタ5aが特定値を保持している場合、フラグTGRはセット状態に維持され、レジスタ番号REGNで識別されるレジスタ5aが特定値以外の値を保持している場合、フラグTGRはリセット状態に維持される。以下では、セット状態のフラグTGRとともに識別情報保持部3に保持されたレジスタ番号REGNは、有効であるとも称され、リセット状態のフラグTGRとともに識別情報保持部3に保持されたレジスタ番号REGNは、無効であるとも称される。
一方、デコード部1は、デコードした命令が、レジスタ5aのいずれかから値を読み出す読み出し命令である場合、識別情報保持部3が保持する識別情報RINFを参照する。レジスタ5aのいずれかから値を読み出す読み出し命令は、レジスタ読み出し命令の一例である。そして、デコード部1は、読み出し対象のレジスタ5aが、レジスタ番号REGNで示されるレジスタ5aであるか否かを判定し、フラグTGRの値に基づいて特定値を保持しているか否かを判定する。例えば、読み出し命令は、レジスタ5aに保持された値をオペランドとして使用して演算を実行する演算命令、または、レジスタ5aに保持された値をメモリに格納するストア命令等である。
読み出し対象のレジスタ5aが特定値を保持していない場合、デコード部1は、読み出し対象のレジスタ5aから値を読み出すことを許可する許可情報をアクセス制御部4に出力する。アクセス制御部4は、許可情報に基づいて、レジスタ部5に読み出しイネーブル信号RENを出力して読み出し対象のレジスタ5aにアクセスし、読み出し対象のレジスタ5aに、保持している値を出力させる。また、アクセス制御部4は、読み出し対象のレジスタ5aの出力を選択させる選択信号SELをセレクタ7に出力する。セレクタ7は、読み出し対象のレジスタ5aから出力される値を選択し、選択した値を演算部2に出力する。すなわち、アクセス制御部4およびセレクタ7は、レジスタ5aの読み出しアクセスを許可してレジスタ5aが保持する値を選択するとともに、設定部6に設定された特定値を選択しない許可動作を実行する。
一方、読み出し対象のレジスタ5aが特定値を保持している場合、デコード部1は、読み出し対象のレジスタ5aから値を読み出すことを抑止する抑止情報をアクセス制御部4に出力する。アクセス制御部4は、抑止情報に基づいて、レジスタ部5への読み出しイネーブル信号RENの出力を抑止し、設定部6に予め設定された特定値を選択させる選択信号SELをセレクタ7に出力する。読み出しイネーブル信号RENを受けないレジスタ部5は、スタンバイ状態に維持され、読み出し対象のレジスタ5aのアクセスを抑止する。セレクタ7は、設定部6に設定された特定値を選択し、選択した特定値を演算部2に出力する。すなわち、アクセス制御部4およびセレクタ7は、レジスタ5aの読み出しアクセスを抑止し、設定部6に設定された特定値を選択する抑止動作を実行する。
読み出し命令を実行する演算器2aは、読み出し対象のレジスタ5aから読み出された値または設定部6から読み出された特定値を使用して演算を実行する。例えば、設定部6は、複数のラッチ回路、複数の配線パターンまたはプログラム回路等の特定値が設定される要素を含む。設定部6が複数のラッチ回路を含む場合、演算処理装置100の起動時に、特定値の各ビットが各ラッチ回路に格納される。
設定部6が複数の配線パターンを含む場合、各配線パターンは、特定値の各ビットに対応する。なお、各配線パターンは、演算処理装置100を製造するフォトマスクのパターンに対応する。そして、各配線パターンが電源線パターンまたは接地線パターンと接続されることで、設定部6に特定値が設定される。
設定部6がプログラム回路を含む場合、プログラム回路は、特定値の各ビットの値が設定されるヒューズ回路、または特定値の各ビットを記憶するROM(Read Only Memory)回路等である。例えば、プログラム回路は、演算処理装置100の製造工程でプログラムされる。なお、プログラム回路であるROMが電気的に書き換え可能なメモリ素子を含む場合、プログラム回路は、演算処理装置100の製造後にプログラムされてもよい。そして、プログラム回路のプログラムにより、設定部6に特定値が設定される。
例えば、設定部6は、設定された特定値に対応する電圧レベルを常にセレクタ7に出力する。すなわち、設定部6は、特定値を静的に保持し、設定部6に設定された特定値は静的に読み出される。このため、設定部6に設定された設定値を読み出すために消費される電力はほぼゼロである。
一方、レジスタ5aに保持された特定値を読み出すためにレジスタ部5で消費される電力は、設定部6に設定された特定値を読み出すために設定部6で消費される電力に比べて大きい。これは、レジスタ部5が複数のレジスタ5aを選択するための制御回路を有しており、レジスタ5aに読み出しアクセスする場合、レジスタ5a単体だけでなくレジスタ部5の全体で電力が消費されるためである。レジスタ5aの読み出しアクセス時にレジスタ部5で消費される電力は、レジスタ部5に含まれるレジスタ5aの数が多いほど大きくなり、レジスタ5aのビット幅が大きいほど大きくなる。さらに、レジスタ5aのビット数(ビット幅)が、特定値のビット数より多い場合、特定値に対応するビット以外のビットの値もレジスタ5aから読み出されるため、無駄な電力が発生する。
図2は、図1の演算処理装置100の動作の一例を示す。すなわち、図2は、演算処理装置100の制御方法の一例を示す。図2の上側に示す動作では、初期状態において、識別情報保持部3は、リセット状態(=ロウレベル)のフラグTGRを保持するため、レジスタ番号REGNは無効である。図2の下側に示す動作では、初期状態において、識別情報保持部3は、セット状態(=ハイレベル)のフラグTGRを保持するため、レジスタ番号REGN(=”0”)は有効であり、レジスタ5a[0]を示す。
図2の上側に示す動作において、デコード部1は、レジスタ5a[0]に特定値を書き込む書き込み命令をデコードする。デコード部1は、レジスタ5a[0]を示すレジスタ番号REGN(=”0”)を識別情報保持部3に格納し、フラグTGRをハイレベルにセットすることで、識別情報RINFを更新する(図2(a)、(b))。演算器2aは、デコード部1から受ける書き込み命令に基づいて、レジスタ5a[0]に特定値を書き込む(図2(c))。
次に、デコード部1は、レジスタ5a[0]に保持された値をオペランドとして使用する命令(読み出し命令)をデコードする。デコード部1は、識別情報保持部3に保持された識別情報RINFを参照する。デコード部1は、レジスタ番号REGNがレジスタ5a[0]を示し、かつ、フラグTGRがセットされていることに基づき、アクセス制御部4に抑止情報を出力する。
アクセス制御部4は、デコード部1からの抑止情報に基づいて、読み出しイネーブル信号RENを無効レベル(例えば、ロウレベル)に維持し、設定部6を選択させる選択信号SELをセレクタ7に出力する(図2(d)、(e))。無効レベルの読み出しイネーブル信号RENにより、レジスタ部5は、レジスタ5aから値を読み出す読み出し動作を実行せず、スタンバイ状態を維持する。
セレクタ7は、選択信号SELに基づいて設定部6に設定された特定値を選択し、選択した特定値を演算部2に出力する。すなわち、アクセス制御部4およびセレクタ7は、レジスタ5aの読み出しアクセスを抑止し、設定部6に設定された特定値を選択する抑止動作を実行する。そして、演算部2において読み出し命令を実行する演算器2aは、選択部6に設定された特定値をオペランドとして演算を実行する(図2(f))。レジスタ5aから特定値を読み出す代わりに、設定部6に設定された特定値を使用することで、レジスタ5aにアクセスして、レジスタ5aから特定値を読み出す場合に比べて、演算処理装置100の消費電力を削減することができる。
なお、レジスタ5aにアドレスが割り当てられる場合、アクセス制御部4は、読み出しイネーブル信号RENとともに、アクセスするレジスタ5aを識別するアドレスをレジスタ部5に出力する。この場合、レジスタ部5は、アドレスのデコードに基づいてアクセスするレジスタ5aを決定するデコード回路を有する。アクセス制御部4は、デコード部1から抑止情報を受けた場合、レジスタ部5に出力するアドレスを、前のレジスタアクセスサイクルで出力したアドレスの論理から変えずに維持する。これにより、アドレスを伝達するアドレス線の充放電を抑制することができ、演算処理装置100の消費電力をさらに削減することができる。例えば、レジスタ部5は、レジスタファイルである。
図2の下側に示す動作において、デコード部1は、レジスタ5a[0]に特定値以外の値を書き込む書き込み命令をデコードする。デコード部1は、フラグTGRをロウレベルにリセットすることで、識別情報RINFを更新し、レジスタ番号REGNを無効化する(図2(g))。演算器2aは、デコード部1から受ける書き込み命令に基づいて、レジスタ5a[0]に特定値以外の値を書き込む(図2(h))。
次に、デコード部1は、レジスタ5a[0]に保持された値をオペランドとして使用する命令(読み出し命令)をデコードする。デコード部1は、識別情報保持部3に保持された識別情報RINFを参照する。デコード部1は、フラグTGRがリセットされていることに基づいて、レジスタ番号REGNが無効であると判定し、アクセス制御部4に許可情報を出力する。
アクセス制御部4は、デコード部1からの許可情報に基づいて、読み出しイネーブル信号RENを有効レベル(例えば、ハイレベル)に設定し、選択信号SELをレジスタ5a[0]の出力を選択する値に設定する(図2(i)、(j))。これにより、レジスタ5a[0]に保持された値がセレクタ7を介して演算部2に出力される。すなわち、アクセス制御部4およびセレクタ7は、レジスタ5aの読み出しアクセスを許可し、設定部6に設定された特定値を選択しない許可動作を実行する。演算部2において読み出し命令を実行する演算器2aは、レジスタ5a[0]から読み出された特定値以外の値をオペランドとして演算を実行する(図2(k))。
レジスタ5a[0]が特定値以外の値に書き換えられた場合、フラグTGRをリセットすることで、レジスタ5a[0]に保持された値を使用する読み出し命令において、設定部6に設定された特定値が選択されることを抑止することができる。これにより、演算器2aが誤った値(この例では特定値)を使用して演算を実行することを抑止することができ、演算処理装置100が誤動作することを抑止することができる。また、レジスタ番号REGNが有効か無効かをフラグTGRにより判定できるため、デコード部1は、識別情報保持部3からレジスタ番号REGNを読み出すことなく、レジスタ5a[0]が特定値を保持しないことを検出することができる。
図3は、図1の演算処理装置100の動作の別の例を示す。すなわち、図3は、演算処理装置100の制御方法の別の例を示す。図2と同様の動作については、詳細な説明は省略される。
図3の上側に示す動作において、デコード部1は、レジスタ5a[0]に特定値を書き込む書き込み命令をデコードする。デコード部1は、図2(a)、(b)と同様に、識別情報RINFを設定する(図3(a)、(b))。演算器2aは、図2(c)と同様に、レジスタ5a[0]に特定値を書き込む(図3(c))。
次に、デコード部1は、レジスタ5a[1]に特定値を書き込む書き込み命令をデコードする。デコード部1は、レジスタ5a[1]を示すレジスタ番号REGN(=”1”)を識別情報保持部3に格納し、フラグTGRをハイレベルにセットすることで、識別情報RINFを更新する(図3(d)、(e))。演算器2aは、図3(c)と同様に、レジスタ5a[1]に特定値を書き込む(図3(f))。
次に、デコード部1は、レジスタ5a[0]に保持された値をオペランドとして使用する命令(読み出し命令)をデコードする。デコード部1は、識別情報保持部3に保持されたフラグTGRを参照し、フラグTGRがセットされているため、レジスタ番号REGNを参照する。デコード部1は、レジスタ番号REGNがレジスタ5a[0]を示さないことに基づき、レジスタ5a[0]が特定値以外の値を保持していると判断し、アクセス制御部4に、レジスタ5a[0]のアクセスを指示する許可情報を出力する。
アクセス制御部4は、デコード部1からの許可情報に基づいて、図2(i)、(j)と同様に、読み出しイネーブル信号RENを有効レベルに設定し、選択信号SELをレジスタ5a[0]の出力を選択する値に設定する(図3(g)、(h))。そして、演算器2aは、レジスタ5a[0]から読み出された特定値をオペランドとして演算を実行する。
図3の上側の動作に示すように、複数のレジスタ5aが特定値を保持する場合であって、最も新しく特定値が書き込まれたレジスタ5a以外から特定値を読み出す読み出し命令がデコードされた場合、デコード部1は、レジスタ5aのアクセスを許可する。これにより、識別情報保持部3に保持される識別情報RINFを複数のレジスタ5aで共有する場合にも、消費電力を削減しつつ、演算器2aに正しい値を出力することができる。
なお、レジスタ5a[0]に保持された値をオペランドとして使用する読み出し命令をデコード部1がデコードする前に、レジスタ5a[0]に特定値以外の値が書き込まれたとする。この場合にも、図2の下側の動作と同様に、読み出し命令に基づいて、レジスタ5a[0]が保持する正しい値(特定値以外の値)を演算器2aに出力することができる。
図3の下側に示す動作において、デコード部1は、レジスタ5a[0]に特定値を書き込む書き込み命令をデコードし、図3(a)、(b)と同様に、識別情報RINFを設定する(図3(i)、(j))。演算器2aは、図3(c)と同様に、レジスタ5a[0]に特定値を書き込む(図3(k))。
次に、デコード部1は、レジスタ5a[1]に特定値以外の値を書き込む書き込み命令をデコードする。デコード部1は、識別情報保持部3にレジスタ5a[1]を示すレジスタ番号REGNが保持されていないため、識別情報保持部3に保持された識別情報RINFの書き換えを実行しない(図3(l))。すなわち、フラグTGRはリセットされず、セット状態に維持される。演算器2aは、図2(h)と同様に、レジスタ5a[1]に特定値以外の値を書き込む(図3(m))。
次に、デコード部1は、レジスタ5a[0]に保持された値をオペランドとして使用する命令(読み出し命令)をデコードする。デコード部1は、識別情報保持部3に保持された識別情報RINFを参照する。デコード部1は、レジスタ番号REGNがレジスタ5a[0]を示し、かつ、フラグTGRがセットされていることに基づき、アクセス制御部4に抑止情報を出力する。
アクセス制御部4は、図2(d)、(e)と同様に、抑止情報に基づいて、読み出しイネーブル信号RENを無効レベルに維持し、セレクタ7に設定部6を選択させる選択信号SELを出力する(図3(o)、(p))。そして、読み出し命令を実行する演算器2aは、設定部6に設定された特定値をオペランドとして演算を実行する。
図3の下側に示す動作では、識別情報保持部3に保持されたレジスタ番号REGNに対応するレジスタ5aと異なるレジスタ5aに特定値以外を書き込む書き込み命令が発行された場合、フラグTGRがリセットされることを抑止する。これにより、識別情報保持部3に保持されたレジスタ番号REGNの無効化を抑止することができる。したがって、レジスタ番号REGNに対応するレジスタ5a[0]に対する読み出し命令に応答してレジスタ5a[0]のアクセスを抑止することができ、レジスタ5a[0]から特定値を読み出す場合に比べて消費電力を削減することができる。
なお、スーパースカラ方式において、デコード部1は、複数のレジスタ5aの各々に特定値を書き込む複数の書き込み命令を並列(例えば、同時)にデコードした場合、プログラムに記述された書き込み命令の順番通りに識別情報RINFを順次設定する。すなわち、複数のレジスタ5aの各々に特定値を書き込む複数の書き込み命令が並列にデコードされた場合、識別情報RINFは、プログラムに記述された複数の書き込み命令のうち最も後ろに記述された書き込み命令に対応して設定される。
図4は、図1の演算処理装置100の動作フローの一例を示す。すなわち、図4は、演算処理装置100の制御方法の一例を示す。図4に示す動作フローは、デコード部1が命令をデコードしたことに基づいて開始される。
まず、ステップS10において、デコード部1は、デコードした命令がレジスタ5aに特定値を書き込む書き込み命令か否かを判定する。レジスタ5aに特定値を書き込む書き込み命令の場合、動作はステップS12に移行され、レジスタ5aに特定値を書き込む書き込み命令でない場合、動作はステップS14に移行される。ステップS12において、デコード部1は、識別情報保持部3に識別情報RINF(フラグTGR=”1”およびレジスタ番号REGN)を設定し、動作をステップS14に移行する。
ステップS14において、デコード部1は、デコードした命令が、特定値を保持するレジスタ5aに特定値以外の値を書き込む書き込み命令か否かを判定する。特定値を保持するレジスタ5aに特定値以外の値を書き込む書き込み命令の場合、動作はステップS16に移行され、特定値を保持するレジスタ5aに特定値以外の値を書き込む書き込み命令でない場合、動作はステップS18に移行される。書き込み対象のレジスタ5aが特定値を保持することは、識別情報保持部3に保持されたレジスタ番号REGNが書き込み対象のレジスタ5aの番号と一致し、かつ、識別情報保持部3に保持されたフラグTGRがセット状態であることにより判定される。ステップS16において、デコード部1は、識別情報保持部3のフラグTGRを”0”にリセットし(すなわち、ロウレベル)、動作をステップS18に移行する。
ステップS18において、デコード部1は、デコードした命令がレジスタ5aから値を読み出す読み出し命令か否かを判定する。レジスタ5aから値を読み出す読み出し命令の場合、動作はステップS20に移行され、レジスタ5aから値を読み出す読み出し命令でない場合、動作はステップS26に移行される。
ステップS20において、デコード部1は、識別情報保持部3に保持された識別情報RINFで識別されるレジスタ5aから値を読み出す読み出し命令であるか否かを判定する。識別情報RINFで識別されるレジスタ5aから値を読み出す読み出し命令である場合、動作はステップS22に移行され、識別情報RINFで識別されるレジスタ5a以外から値を読み出す読み出し命令である場合、動作はステップS24に移行される。
ここで、読み出し命令による読み出し対象のレジスタ5aの番号がレジスタ番号REGNと一致し、かつ、フラグTGRがセットされている場合、識別情報RINFで識別されるレジスタ5aから値を読み出す読み出し命令であると判定される。一方、フラグTGRがリセットされている場合、識別情報RINFで識別されるレジスタ5aから値を読み出す読み出し命令でないと判定される。また、フラグTGRがセットされていても、読み出し対象のレジスタ5aの番号がレジスタ番号REGNと一致しない場合、識別情報RINFで識別されるレジスタ5aから値を読み出す読み出し命令でないと判定される。
ステップS22において、アクセス制御部4は、読み出しイネーブル信号RENを無効レベル(例えば、ロウレベル”L”)に設定し、選択信号SELを、設定部6を選択する値に設定し、動作をステップS26に移行する。ステップS24において、アクセス制御部4は、読み出しイネーブル信号RENを有効レベル(例えば、ハイレベル”H”)に設定し、レジスタ5aを選択する値に選択信号SELを設定し、動作をステップS26に移行する。ステップS26において、演算器2aは、デコード部1がデコードした命令を実行し、図4に示す動作を終了する。以上により、図2および図3に示した動作が実現される。
例えば、デコード部1がデコードした命令がレジスタ5aに値を書き込む書き込み命令である場合、書き込み命令を実行する演算器2aは、書き込み対象のレジスタ5aに値を書き込む。デコード部1がデコードした命令がレジスタ5aから値を読み出す読み出し命令である場合、読み出し命令を実行する演算器2aは、設定部6またはレジスタ5aのいずれかから出力された値を使用して演算を実行し、演算結果を格納対象のレジスタ5aに格納する。
図5は、図1の演算処理装置100を含む情報処理システムの一例を示す。例えば、図5に示す情報処理システムは、サーバ1000である。サーバ1000は、複数の演算処理装置100、複数のメインメモリ200およびインターコネクト制御部300を有する。例えば、演算処理装置100は、中央演算処理装置(CPU;Central Processing Unit)であり、インターコネクト制御部300に接続される。各メインメモリ200は、対応する演算処理装置100に接続される。インターコネクト制御部300は、ハードディスク装置または通信装置等の外部装置に接続され、外部装置に対して入出力制御を実行する。
以上、図1から図5に示す実施形態では、デコード部1は、レジスタ5aに特定値を書き込む書き込み命令をデコードした場合、特定値が書き込まれるレジスタ5aを識別する識別情報RINFを識別情報保持部3に格納する。また、デコード部1は、デコードした読み出し命令が、識別情報保持部3に保持された識別情報RINFで識別されるレジスタ5aから値を読み出す読み出し命令である場合、アクセス制御部4に抑止情報を出力する。アクセス制御部4は、抑止情報に基づいて、レジスタ5aのアクセスを抑止し、設定部6に設定された特定値をセレクタ7に選択させて演算部2に出力する。これにより、レジスタ5aから特定値を読み出す読み出し命令に基づいて演算を実行する場合にも、レジスタ5aにアクセスすることなく、特定値を用いて演算を実行することができる。この結果、レジスタ5aにアクセスして特定値を読み出す場合に比べて、演算処理装置100の消費電力を削減することができる。
また、デコード部1は、デコードした読み出し命令が、識別情報保持部3に保持された識別情報RINFで識別されるレジスタ5a以外から値を読み出す読み出し命令である場合、アクセス制御部4に許可情報を出力する。アクセス制御部4は、許可情報に基づいて、レジスタ5aのアクセスを許可し、レジスタ5aの出力をセレクタ7に選択させて演算部2に出力する。これにより、識別情報保持部3に保持される識別情報RINFを複数のレジスタ5aで共有する場合にも、消費電力を削減しつつ、演算器2aに正しい値を出力することができる。
デコード部1から抑止情報を受けたアクセス制御部4は、レジスタ部5に出力するアドレスを、前のレジスタアクセスサイクルで出力したアドレスの論理から変えずに維持する。これにより、アドレスを伝達するアドレス線の充放電を抑制することができ、演算処理装置100の消費電力をさらに削減することができる。レジスタ番号REGNが有効か無効かをフラグTGRにより判定できるため、デコード部1は、識別情報保持部3からレジスタ番号REGNを読み出すことなく、レジスタ5aが特定値を保持しないことを検出することができる。
図6は、別の実施形態における演算処理装置の一例を示す。図1から図5で説明した要素と同一または同様の要素については、同じ符号を付し、詳細な説明は省略される。図6に示す演算処理装置102は、例えば、スーパースカラ方式のプロセッサである。なお、演算処理装置102は、スカラ方式等の他の方式のプロセッサでもよく、図2に示す構成に限定されない。また、演算処理装置102を含む情報処理システムは、図5と同様の構成であり、図5のCPUの符号を102に置き換えることで実現される。
演算処理装置102は、命令フェッチアドレス生成部10、1次命令キャッシュ12、2次キャッシュ14、命令バッファ16、命令デコード部18、レジスタ制御部20および分岐予測部22を有する。また、演算処理装置102は、リザベーションステーション24(241、242、243、244)、コミット制御部30、プログラムカウンタ32、オペランドアドレス生成部34および1次データキャッシュ36を有する。さらに、演算処理装置102は、演算器38、40、42、固定小数点レジスタ44、マスクレジスタ46および浮動小数点レジスタ48を有する。
以下では、固定小数点レジスタ44、マスクレジスタ46および浮動小数点レジスタ48は、レジスタ44、46、48とも称される。演算器38、40、42は、命令実行部の一例である。
命令フェッチアドレス生成部10は、内部で順次生成するアドレスまたは分岐予測部22から受けるアドレスを選択し、演算器38、40、42で実行する命令、メモリアクセス用の命令または分岐命令等を1次命令キャッシュ12からフェッチするアドレスを生成する。命令フェッチアドレス生成部10は、生成したアドレスを1次命令キャッシュ12に出力する。なお、後述するパイプラインクリアが発生した時、プログラムカウンタ32の値を使用して命令のフェッチが再開される。
1次命令キャッシュ12は、命令フェッチアドレス生成部10からのアドレスで示す領域に保持された命令を取り出し、取り出した命令を命令バッファ16に出力する。1次命令キャッシュ12は、アドレスに対応する命令を保持していない場合、2次キャッシュ14から命令を取り出すために、2次キャッシュ14にアクセス要求を出力する。2次キャッシュは、命令およびデータを保持する。
2次キャッシュ14は、アクセス要求に基づいて、アドレスに対応して保持している命令を取り出し、取り出した命令を1次命令キャッシュ12に出力する。2次キャッシュ14は、アドレスに対応する命令を保持していない場合、メインメモリ200から命令を取り出すために、メインメモリ200にアクセス要求を出力する。例えば、メインメモリ200は、演算処理装置102を含む半導体チップとは別の半導体チップに含まれる。
命令バッファ16は、1次命令キャッシュ12から出力される命令を保持し、保持した命令を命令デコード部18に出力する。例えば、命令バッファ16は、4つの命令を並列に命令デコード部18に出力する。
命令デコード部18は、命令バッファ16から出力される複数の命令をデコードし、各命令を出力するリザベーションステーション24(241、242、243、244のいずれか)を決定する。命令デコード部18は、決定したリザベーションステーション24に各命令を発行する。命令デコード部18は、命令をデコードするデコード部の一例である。
例えば、命令デコード部18は、デコードした命令がメモリアクセス命令(ロード命令またはストア命令)である場合、命令をリザベーションステーション241に投入する。命令デコード部18は、デコードした命令が固定小数点数の演算命令である場合、命令をリザベーションステーション242に投入する。命令デコード部18は、デコードした命令が浮動小数点数の演算命令である場合、命令をリザベーションステーション243に投入する。命令デコード部18は、デコードした命令が分岐命令である場合、命令をリザベーションステーション244に投入する。
また、命令デコード部18は、演算処理装置102で実行するプログラム中の記述の順番にしたがって命令に命令識別子(IID:Instruction Identification)を割り振り、割り振った命令識別子をコミット制御部30に出力する。なお、命令バッファ16および命令デコード部18は、プログラム中の記述の順番を入れ替えることなく複数の命令を並列に処理する(インオーダ)。
さらに、命令デコード部18は、マスクレジスタ46に特定のマスク値である特定値を書き込む書き込み命令をデコードした場合、特定値を書き込むマスクレジスタ46を識別する識別情報RINFをレジスタ制御部20に出力する。例えば、マスクレジスタ46に特定値を書き込む書き込み命令は、専用の命令として命令セットに含まれる。命令デコード部18は、マスクレジスタ46に保持されたマスク値を読み出す読み出し命令をデコードした場合、読み出し命令による読み出し対象のマスクレジスタ46が特定値を保持するか否かをレジスタ制御部20に問い合わせる。
以下では、マスクレジスタ46に特定値または特定値以外の値を書き込む書き込み命令は、マスク書き込み命令とも称され、マスクレジスタ46に保持されたマスク値を読み出す読み出し命令は、マスク読み出し命令とも称される。マスク書き込み命令は、レジスタ書き込み命令の一例であり、マスク読み出し命令は、レジスタ読み出し命令の一例である。
レジスタ制御部20は、命令デコード部18からの識別情報RINFを保持し、命令デコード部18からの問い合わせに基づいて、読み出し対象のマスクレジスタ46が特定値を保持するか否かを示す情報を命令デコード部18に出力する。命令デコード部18およびレジスタ制御部20の例は、図7に示される。なお、レジスタ制御部20は、命令デコード部18内に設けられてもよい。
分岐予測部22は、命令フェッチアドレス生成部10により生成されたアドレスに基づいて、分岐命令により分岐が実行されるか否かを予測し、分岐を予測した場合、分岐先アドレスを命令フェッチアドレス生成部10に出力する。
リザベーションステーション241は、命令デコード部18から順次受けるメモリアクセス命令を保持し、保持したメモリアクセス命令を実行可能な順にオペランドアドレス生成部34に出力する。以下では、リザベーションステーション241は、RSA(Reservation Station for Address generation)241とも称される。リザベーションステーション242は、命令デコード部18から順次受ける固定小数点数の演算命令を保持し、保持した演算命令を実行可能な順に演算器38または演算器40に出力する。以下では、リザベーションステーション242は、RSE(Reservation Station for Execution)242とも称される。
リザベーションステーション243は、命令デコード部18から順次受ける浮動小数点数の演算命令を保持し、保持した演算命令を実行可能な順に演算器42に出力する。以下では、リザベーションステーション243は、RSF(Reservation Station for Floating point)243とも称される。リザベーションステーション244は、命令デコード部18から順次受ける分岐命令を、分岐の判断ができるようになるまで保持する。以下では、リザベーションステーション244は、RSBR(Reservation Station for BRanch)244とも称される。リザベーションステーション241、242、243、244に保持された命令は、それぞれ命令の実行の準備が整ったものから対応するオペランドアドレス生成部34、演算器38、40、42のいずれかに発行される。そして、演算器38、40、42に発行された命令は、プログラムに記述された命令の順番と関係なく実行される(アウトオブオーダ)。
コミット制御部30は、命令デコード部18によりデコードされた命令を、プログラムに記述された命令の順番通りに貯めておくキュー構造の保持部と、完了処理を実行する完了処理部とを有する。完了処理部は、保持部に保持された情報と演算器38、40、42からの命令実行の完了報告等とに基づいて、命令の完了処理を、プログラムで記述された順に実行する(インオーダ)。以下では、コミット制御部30は、CSE(Commit Stack Entry)30とも称される。コミット制御部30は、アウトオブオーダにより実行が完了した命令に基づいてインオーダで命令の完了処理を実行する完了処理部の一例である。以下では命令の完了処理は、コミットとも称される。
プログラムカウンタ32は、コミット制御部30からの指示に基づいて、命令の格納先を示すメモリアドレスを更新し、更新したメモリアドレスを命令フェッチアドレス生成部10に出力する。
オペランドアドレス生成部34は、RSA241から投入されるメモリアクセス命令に基づいてアドレスを生成し、生成したアドレスを一次データキャッシュ36に出力する。1次データキャッシュ36は、オペランドアドレス生成部34からのアドレスによりアクセスされ、データを入出力する。なお、図6では、演算処理装置102は、複数のオペランドアドレス生成部34を有するが、オペランドアドレス生成部34の数は単数でもよい。
1次データキャッシュ36は、1次命令キャッシュ12と同様に、アドレスに対応するデータを保持していない場合、2次キャッシュ14からデータを取り出すために、2次キャッシュ14にアクセス要求を出力する。例えば、ロード命令では、1次データキャッシュ36は、取り出したデータをレジスタ44、46、48のいずれかに格納する。
演算器38は、固定小数点数用の演算器である。演算処理装置102は、命令デコード部18により並列にデコードされた固定小数点数の演算命令を並列に実行するために、複数の演算器38を有してもよい。演算器38は、演算に使用するデータをレジスタ44から取得し、演算結果をレジスタ44に格納する。
演算器40は、マスクレジスタ46に格納するマスク値を演算するための論理演算機能を有する。例えば、演算器40は、マスクレジスタ46にマスク値を書き込む命令に基づいて、論理演算または四則演算を実行し、マスクレジスタ46に書き込むマスク値を生成し、生成したマスク値をマスクレジスタ46に書き込む。なお、演算器40は、マスクレジスタ46にマスク値を書き込むマスクレジスタ46のための専用の演算器でもよく、マスクレジスタ46および固定小数点レジスタ44にデータを書き込む汎用の演算器でもよい。また、演算器40は、命令デコード部18が、特定値をマスクレジスタ46に書き込む専用の特定値書き込み命令をデコードした場合、命令に含まれるマスク値をマスクレジスタ46に書き込む動作を実行する。
演算器42は、浮動小数点数用の演算器である。例えば、演算処理装置102は、命令デコード部18により並列にデコードされた浮動小数点数の演算命令を並列に実行するために、複数の演算器42を有してもよい。演算器42は、演算に使用するデータをレジスタ48から取得し、演算結果をレジスタ48に格納する。
例えば、演算器42は、浮動小数点数の積和演算を実行するSIMD(Single Instruction Multiple Data)演算命令がRSF243から発行された場合、マスクレジスタ46に保持されたマスク値に応じて、SIMD演算の実行をデータ毎にマスクする。なお、演算器42は、積和演算、整数演算、論理演算等を実行する演算器を含んでもよい。
固定小数点レジスタ44は、演算器38で実行する演算に使用するデータを保持し、演算器38による演算の実行結果を保持する。マスクレジスタ46は、演算器40から出力されるマスク値を保持する。マスクレジスタ46に保持されたマスク値は、例えば演算器42がSIMD演算命令を実行する場合、オペランドの1つとして演算器42に転送される。マスクレジスタ46は、演算器42の動作を制御する制御値(すなわち、マスク値)を保持する制御レジスタの一例である。浮動小数点レジスタ48は、演算器42で実行する演算に使用するデータを保持し、演算器42による演算の実行結果を保持する。
なお、レジスタ44、46、48は、レジスタファイル構造を有しており、それぞれ複数のレジスタを含む。レジスタファイル構造のレジスタ44、46、48の各々は、レジスタ部の一例である。なお、レジスタ44、46、48は、レジスタファイルと、演算結果等をレジスタファイルに格納するまで保持するアップデートバッファとを共用する物理レジスタ方式が採用されてもよい。
例えば、演算処理装置102は、64ビット構成の32個の固定小数点レジスタ44と、64ビット構成の16個のマスクレジスタ46と、512ビット構成の32個の浮動小数点レジスタ48とを有する。なお、レジスタ44、46、48の各々の個数とビット構成は、上記以外でもよい。また、浮動小数点レジスタ48のビット構成は、可変にされてもよい。
例えば、2つの浮動小数点レジスタ48の各々に8個の64ビットのデータが格納され、浮動小数点レジスタ48間の8組のデータのSIMD演算が実行されるとする。この場合、SIMD演算時に参照するマスクレジスタ46の0番目(最下位ビット)、8番目、16番目、24番目、32番目、40番目、48番目、56番目のビット(マスクビット)にマスク値が格納される。8個のマスク値は、SIMD演算が実行される8組のデータにそれぞれ対応する。マスク値が”1”の場合、対応するデータのSIMD演算が実行され、マスク値が”0”の場合、対応するSIMD演算の実行がマスクされる。
また、2つの浮動小数点レジスタ48に16個の32ビットのデータをそれぞれ格納し、レジスタ48間の16組のデータのSIMD演算を実行するとする。この場合、SIMD演算時に参照するマスクレジスタ46の0番目(最下位ビット)のビットから4ビット毎にマスク値が格納される。同様に、2つの浮動小数点レジスタ48に64個の8ビットのデータをそれぞれ格納し、レジスタ48間の64組のデータのSIMD演算を実行する場合、SIMD演算時に参照するマスクレジスタ46の各ビットにマスク値が格納される。
なお、積和演算(SIMD演算)が実行される場合、3つの浮動小数点レジスタ48が使用される。3つの浮動小数点レジスタ48を使用して演算を実行する場合にも、マスクレジスタ46の使い方は、2つの浮動小数点レジスタ48を使用して演算を実行する場合と同様である。
SIMD演算では、演算効率を向上するため、演算を抑止するマスク値(=”0”)は設定されない方が好ましい。このため、各データ組に対応するマスク値は”1”に設定されることが多い。すべてのデータ組のSIMD演算を実行する場合、対応するマスクレジスタ46にオール”1”を書き込むことで、全てのマスクビットを”1”に設定することができる。
すべてのデータ組のSIMD演算を実行する頻度が高いことを考慮して、演算処理装置102で使用される命令セットアーキテクチャ(ISA)には、所定のマスクレジスタ46にオール”1”を書き込むオール”1”書き込み命令(特定値書き込み命令)が含まれる。この場合、特定値はオール”1”であり、命令デコード部18は、オール”1”書き込み命令のデコードに基づいて、レジスタ制御部20に識別情報RINFを書き込む。
図7は、図6の命令デコード部18およびレジスタ制御部20の一例を示す。命令デコード部18は、4つのデコードスロット182(182a、182b、182c、182d)と、識別情報管理部186とを有する。なお、デコードスロット182の数は、複数個であれば、4つに限定されない。4つのデコードスロット182は、命令バッファ16から命令を並列に受け、受けた命令を並列にデコードし、デコード結果に応じて命令をリザベーションステーションRSA241、RSE242、RSF243、RSBR244のいずれかに発行する。すなわち、演算処理装置102は、4つの命令を並列に処理可能なスーパースカラプロセッサである。
デコードスロット182は、命令判定部184(184a、184b、184c、184d)をそれぞれ有する。各命令判定部184は、命令デコード部18からの命令がマスクレジスタ46に特定値を書き込むマスク書き込み命令であるか否かを判定する。各命令判定部184は、命令が特定値を書き込むマスク書き込み命令である場合、書き込み対象のマスクレジスタ46を識別するレジスタ番号REGNと特定値であることを示す情報とを識別情報管理部186に出力する。
また、各命令判定部184は、命令デコード部18からの命令がマスクレジスタ46に特定値以外の値を書き込むマスク書き込み命令であるか否かを判定する。各命令判定部184は、命令が特定値以外の値を書き込むマスク書き込み命令である場合、書き込み対象のマスクレジスタ46を識別するレジスタ番号REGNと特定値以外であることを示す情報とを識別情報管理部186に出力する。さらに、各命令判定部184は、命令が特定値または特定値以外の値を書き込むマスク書き込み命令である場合、マスク書き込み命令のプログラム上での記述順を示すアドレス等の情報を識別情報管理部186に出力する。
各命令判定部184は、命令デコード部18からの命令がマスクレジスタ46からマスク値を読み出すマスク読み出し命令であるか否かを判定する。各命令判定部184は、命令がマスク読み出し命令である場合、読み出し対象のマスクレジスタ46を示すレジスタ番号REGNをレジスタ制御部20に出力する。各命令判定部184は、レジスタ番号REGNの出力に基づいてレジスタ制御部20から出力されるフラグ情報RFLGを受け、フラグ情報RFLGをマスク読み出し命令に付随してRSF243に出力する。
但し、各命令判定部184は、以下の場合、フラグ情報RFLGを許可状態(後述)に変更してRSF243に出力する。例えば、あるデコードスロット182でデコードした、レジスタ番号REGNに対応するマスク読み出し命令の記述より前に、他のデコードスロット182でデコードした、レジスタ番号REGNに対応する特定値でない値を書き込むマスク書き込み命令があるとする。この場合、マスク読み出し命令に基づいて、読み出し対象のマスクレジスタ46から特定値でない値を読み出す必要がある。このため、識別情報管理部186は、各命令判定部184から特定値でない値を書き込むマスク書き込み命令の情報を収集し、収集した情報に基づいて、フラグ情報RFLGを抑止状態(後述)から許可状態に変更させる指示を対象のデコードスロット182に発行する。
識別情報管理部186は、各デコードスロット182からの並列に受ける情報に基づいて、識別情報保持部202に格納する識別情報RINF(REGN、TGR)を決定する。識別情報管理部186は、命令判定部184のいずれか1つからレジスタ番号REGNと特定値を示す情報とを受けた場合、フラグTGRをセットする指示SETと、レジスタ番号REGNとを識別情報RINFとしてレジスタ制御部20に出力する(セット動作)。
識別情報管理部186は、命令判定部184のいずれか1つからレジスタ番号REGNと特定値以外を示す情報とを受けた場合、レジスタ制御部20に保持されたレジスタ番号REGNに応じて異なる動作を実行する。命令判定部184から受けたレジスタ番号REGNがレジスタ制御部20に保持されたレジスタ番号REGNと同じ場合、識別情報管理部186は、フラグTGRをリセットする指示RSTを識別情報RINFとしてレジスタ制御部20に出力する(リセット動作)。一方、命令判定部184から受けたレジスタ番号REGNがレジスタ制御部20に保持されたレジスタ番号REGNと異なる場合、識別情報管理部186は、レジスタ制御部20に保持された情報(REGN、TGR)を更新しない(非動作)。
識別情報管理部186は、複数の命令判定部184からレジスタ番号REGNとマスク値とを示す情報とを受けた場合、各マスク書き込み命令に対応してセット動作またはリセット動作を実行するか否かを判定する。識別情報管理部186は、判定結果に基づいて、セット動作またはリセット動作を実行し、あるいは、セット動作及びリセット動作の実行を抑止する。例えば、識別情報管理部186は、セット動作またはリセット動作の対象の複数のマスク書き込み命令のうち、プログラム上で最も後に記述されたマスク書き込み命令に対応するセット動作またはリセット動作を実行する。これにより、識別情報管理部186によるレジスタ制御部20へのアクセス回数を最小限にすることができ、レジスタ制御部20へのアクセスに伴う消費電力の増加を抑制することができる。
レジスタ制御部20は、識別情報RINF(フラグTGRとレジスタ番号REGN)を保持する識別情報保持部202と、4つのデコードスロット182にそれぞれ対応する4つの一致検出部204(204a、204b、204c、204d)とを有する。識別情報保持部202の構成および機能は、図1に示した識別情報保持部3の構成および機能と同様である。
なお、レジスタ制御部20は、CSE30が発行するクリア信号CLRに基づいて、識別情報保持部202のフラグTGRをリセット(無効化)する機能を有する。CSE30は、分岐予測部22による分岐予測が外れた場合等にパイプラインで仕掛かり中の処理をクリアするためにクリア信号CLRを発行する。これにより、識別情報保持部202に設定された識別情報RINFが、マスクレジスタ46が保持するマスク値と対応しない不具合を抑止することができ、演算処理装置102の誤動作を抑止することができる。以下では、パイプラインをクリアすることは、パイプラインクリアとも称される。クリア信号CLRは、命令の実行を取り消す指示の一例である。パイプラインの例は、図9で説明される。
各一致検出部204は、対応する命令判定部184から受けるレジスタ番号REGNが、識別情報保持部202に保持されたレジスタ番号REGNと一致する場合、識別情報保持部202に保持されたフラグTGRの値に基づいて、フラグ情報RFLGを出力する。各一致検出部204は、フラグTGRがセット状態(ハイレベル)の場合、フラグ情報RFLGを抑止状態に設定し、フラグTGRがリセット状態(ロウレベル)の場合、フラグ情報RFLGを許可状態に設定する。
また、各一致検出部204は、対応する命令判定部184から受けるレジスタ番号REGNが、識別情報保持部202に保持されたレジスタ番号REGNと一致しない場合、フラグ情報RFLGを許可状態に設定する。抑止状態のフラグ情報RFLGは、図1で説明した抑止情報に対応し、許可状態のフラグ情報RFLGは、図1で説明した許可情報に対応する。各一致検出部204は、デコードスロット182からの問い合わせに基づいて、レジスタ番号REGNが識別情報保持部202に保持された識別情報RINF(REGN、TGR)に対応するか否かを示すフラグ情報RFLGを通知する通知部の一例である。フラグ情報は、対応情報の一例である。
図7に示す構成により、識別情報保持部202が複数のデコードスロット182に対して共通に設けられる場合にも、マスク書き込み命令に基づいて、正しいフラグTGRと正しいレジスタ番号REGNを識別情報保持部202に保持することができる。これにより、マスク読み出し命令に基づいて、マスク値をマスクレジスタ46から読み出すか否かの判定を正しく実行することができる。
また、図7に示す構成では、複数のデコードスロット182に共通の識別情報保持部202を設け、各デコードスロット182からの問い合わせに応じて、各デコードスロット182に対応する一致検出部204がフラグ情報RFLGを出力する。これにより、複数のデコードスロット182のそれぞれは、識別情報保持部202に設定された識別情報RINFにアクセスすることなく、フラグ情報RFLGを取得することができ、フラグ情報RFLGの取得効率を向上することができる。
さらに、図7に示す構成により、マスク書き込み命令とマスク読み出し命令とが、命令バッファ16からどのデコードスロット182に供給されるかにかかわらず、マスク値をマスクレジスタ46から読み出すか否かの判定を正しく実行することができる。すなわち、スーパースカラ方式に適した動作を実現することができる。また、複数の一致検出部204による一致の検出動作を並列に実行できるため、1つの一致検出部204により一致の検出動作を順次実行する場合に比べて、検出時間を短縮することができる。この結果、複数のデコードスロット182が命令をRSF243に発行するタイミングを揃えることができる。
図8は、図7に示す命令デコード部18の動作の一例を示す。図8において、符号MWRは、マスク書き込み命令を示し、符号46[0]、46[1]は、マスク値が書き込まれるマスクレジスタ46を示す。符号WRは、マスク書き込み命令以外の書き込み命令を示し、符号RDは、読み出し命令を示す。読み出し命令は、マスク読み出し命令でもよく、マスク読み出し命令以外の読み出し命令でもよい。
符号ALL1は、マスク値がオール”1”(特定値)であることを示し、符号ALL0は、マスク値がオール”1”以外の値(例えば、オール”0”)であることを示す。説明を分かりやすくするため、(状態A)、(状態B)、(状態C)、(状態D)の各々において、命令判定部184a、184b、184c、184dで判定する命令の並び順が、プログラムの記述順であるとする。すなわち、プログラムに記述された順に、命令がデコードスロット182a、182b、182c、182dに格納される。
(状態A)では、命令デコード部18は、1つのマスク書き込み命令MWRをデコードする。命令判定部184cは、デコード結果に基づいて、レジスタ番号REGN=”0”とマスク値=”ALL1”とを識別情報管理部186に出力する。マスクレジスタ46にオール”1”を書き込む1つのマスク書き込み命令がデコードされたため、識別情報管理部186は、命令判定部184cから受けたレジスタ番号REGN=”0”を識別情報保持部202に書き込み、フラグTGRを”1”にセットする。
(状態B)では、命令デコード部18は、2つのマスク書き込み命令MWRをデコードする。命令判定部184aは、デコード結果に基づいて、レジスタ番号REGN=”0”とマスク値=”ALL1”とを識別情報管理部186に出力する。命令判定部184cは、デコード結果に基づいて、レジスタ番号REGN=”1”とマスク値=”ALL1”とを識別情報管理部186に出力する。
互いに異なるマスクレジスタ46にオール”1”を書き込む2つのマスク書き込み命令がデコードされたため、識別情報管理部186は、インオーダでの実行順が後の命令を採用する。そして、識別情報管理部186は、命令判定部184cから受けたレジスタ番号REGN=”1”を識別情報保持部202に書き込み、フラグTGRを”1”にセットする。
(状態C)では、命令デコード部18は、2つのマスク書き込み命令MWRをデコードする。命令判定部184aは、デコード結果に基づいて、レジスタ番号REGN=”0”とマスク値=”ALL1”とを識別情報管理部186に出力する。命令判定部184cは、デコード結果に基づいて、レジスタ番号REGN=”0”とマスク値=”ALL0”とを識別情報管理部186に出力する。
互いに同じマスクレジスタ46にオール”1”とオール”1”以外のマスク値を順次書き込む2つのマスク書き込み命令がデコードされたため、識別情報管理部186は、識別情報保持部202への情報の書き込みを抑止する。これにより、識別情報保持部202は、既に保持しているフラグTGR=”x”とレジスタ番号REGN=”y”とを保持し続ける。
このため、(状態C)では、本来、有効であるべきフラグTGR=”x”とレジスタ番号REGN=”y”とが書き換わることを抑止することができる。この結果、例えば、”x”=”1”の場合で、レジスタ番号REGN=”y”のマスクレジスタ46からマスク値を読み出すマスク読み出し命令がその後に発行された場合、マスクレジスタ46を動作させることなくマスク値を読み出すことができる。
(状態D)では、命令デコード部18は、3つのマスク書き込み命令MWRをデコードする。命令判定部184aは、デコード結果に基づいて、レジスタ番号REGN=”0”とマスク値=”ALL1”とを識別情報管理部186に出力する。命令判定部184bは、デコード結果に基づいて、レジスタ番号REGN=”1”とマスク値=”ALL1”とを識別情報管理部186に出力する。命令判定部184cは、デコード結果に基づいて、レジスタ番号REGN=”1”とマスク値=”ALL0”とを識別情報管理部186に出力する。
(状態D)では、2番目のマスク書き込み命令によりマスクレジスタ46[1]にオール”1”が書き込まれた後、3番目のマスク書き込み命令によりマスクレジスタ46[1]にオール”1”以外のマスク値が書き込まれる。このため、識別情報管理部186は、(状態C)と同様に、マスクレジスタ46[1]に対するマスク書き込み命令について、識別情報保持部202への情報の書き込みを抑止する。そして、識別情報管理部186は、命令判定部184aから受けたレジスタ番号REGN=”0”を識別情報保持部202に書き込み、フラグTGRを”1”にセットする。
これにより、(状態D)では、本来、有効であるべきフラグTGR=”1”とレジスタ番号REGN=”0”とを識別情報保持部202に保持することができる。この結果、レジスタ番号REGN=”0”のマスクレジスタ46からマスク値を読み出すマスク読み出し命令がその後に発行された場合、マスクレジスタ46を動作させることなくマスク値を読み出すことができる。
このように、識別情報管理部186は、4つの命令判定部184の判定結果と、命令のインオーダでの実行順とに基づいて、識別情報保持部202に書き込む情報を決定する。したがって、スーパースカラ方式の演算処理装置102において、命令を順次デコードするスカラ方式の演算処理装置と同様に、識別情報保持部202に識別情報RINFを保持し、マスクレジスタ46の動作を抑止するか許可するかを決定することができる。
なお、命令デコード部18が複数のマスク読み出し命令を並列にデコードした場合、各命令判定部184は、一致検出部204にフラグ情報RFLGを通知させる問い合わせを実行する。そして、各命令判定部184は、各一致検出部204から受けたフラグ情報RFLGをマスク読み出し命令に付随して、RSF243に発行する。
図9は、図6に示す演算処理装置102において、マスク書き込み命令とマスク読み出し命令とを実行する回路の一例を示す。図9において、”FF”を付した矩形はフリップフロップを示し、各フリップフロップFFは、複数のステージに分割されるパイプライン処理におけるステージの境界を示す。なお、図9に示すフリップフロップFF以外にも、ステージの境界を示すフリップフロップFFが存在するが、図示は省略される。
例えば、パイプラインのステージとして、デコードステージ、デコードトランスファステージ、プライオリティステージ、プライオリティトランスファステージ、バッファステージ、実行ステージおよびライトバックステージがある。デコードステージでは、命令デコード部1による命令のデコードが実行される。デコードトランスファステージでは、命令デコード部1によりデコードされた命令がRSE242、RSF243等に発行される。プライオリティステージでは、例えば、RSF243により、演算器42に発行する命令が決定される。
プライオリティトランスファステージでは、例えば、RSF243から演算器42に命令が発行される。バッファステージでは、演算に使用するオペランドがレジスタ48等から読み出される。実行ステージでは、演算器42により演算が実行される。ライトバックステージでは、演算器42による演算の結果がレジスタ48等に格納される。
例えば、マスク書き込み命令は、演算命令として、RSE242から演算器40に発行される。また、マスク書き込み命令は、1次データキャッシュ36に保持されたマスク値をマスクレジスタ46に転送するロード命令でもよい。演算器40は、マスクレジスタ46に書き込むマスク値を算出するために、マスクレジスタ46に専用に設けられてもよい。以下では、演算器40は、マスク演算器40とも称される。
図6で説明されたように、マスク演算器40は、演算命令に基づいて論理演算または四則演算を実行し、演算結果として、マスクレジスタ46に書き込む特定値以外のマスク値を生成する。なお、特定値以外のマスク値を書き込むマスク書き込み命令に基づいてマスク演算器40で実行される演算では、特定値は算出されないものとする。そして、命令デコード部18によりデコードされたマスク書き込み命令に基づいて、マスクレジスタ46に特定値以外のマスク値または特定値が書き込まれる。
特定値は、マスクレジスタ46から読み出される他のマスク値より読み出し頻度が高いマスク値に設定されることが、演算処理装置102の消費電力の削減効果を高める点で好ましい。上述したように、SIMD演算命令において、マスク値がオール”1”に設定される頻度が最も高いと想定される場合、オール”1”をマスクレジスタ46に書き込む専用の命令が用意される。これにより、マスクレジスタ46からのオール”1”の読み出しを抑止することができ、消費電力を削減することができる。なお、特定値は、オール”1”以外でもよい。
一方、マスクレジスタ46に保持されたマスク値を読み出すマスク読み出し命令は、RSF243から演算器42に発行される。マスク読み出し命令は、演算器42でSIMD演算を実行するためのSIMD演算命令であるとする。SIMD演算命令により実行される処理は、マスクレジスタ46からマスク値を読み出してマスクオペランドとして演算器42に出力するため、SIMD演算命令は、マスク読み出し命令とも言える。以下では、SIMD演算命令を実行する演算器42は、SIMD演算器42とも称される。
RSF243は、命令デコード部18から受けるマスク読み出し命令に基づいて、SIMD演算に使用するオペランドデータ(すなわち、演算対象のデータ)を浮動小数点レジスタ48から出力させる制御を実行する。浮動小数点レジスタ48から出力されたオペランドデータは、SIMD演算器42の入力に接続されたフリップフロップFFに保持される。
命令デコード部18から受けるマスク読み出し命令に付随されたフラグ情報RFLGが抑止状態を示す場合、RSF243は、無効状態を示す読み出しイネーブル信号RENをマスクレジスタ46(レジスタファイル)に出力する。無効状態を示す読み出しイネーブル信号RENは、読み出し対象のマスクレジスタ46がオール”1”(すなわち、特定値)を保持している場合に生成される。
RSF243は、無効状態を示す読み出しイネーブル信号RENとともに、読み出し対象のマスクレジスタ46を示すアドレス(レジスタ番号REGN等)をマスクレジスタ46(レジスタファイル)に出力してもよい。この場合、RSF243は、マスクレジスタ46(レジスタファイル)に出力するアドレスを、例えば、前のレジスタアクセスサイクルで出力したアドレスの論理から変えずに維持する。これにより、アドレスを伝達するアドレス線の充放電を抑制することができ、演算処理装置102の消費電力をさらに削減することができる。
設定部50およびセレクタ52は、それぞれ図1に示す設定部6およびセレクタ7に対応する。設定部50には、予めオール”1”(特定値)が設定される。セレクタ52は、マスク演算器40による演算結果をマスクレジスタ46に経由させることなくSIMD演算器42等にバイパスするための経路上に設けられる。そして、セレクタ52は、マスク演算器40の出力と、マスク演算器40の出力に接続されたフリップフロップFFの出力とを選択可能である。特定値を選択しない通常の動作では、セレクタ52がどの経路を選択するかは、先行して実行中の演算のタイミングと、セレクタ52により選択されたデータをオペランドデータとして使用する演算のタイミングとに基づいて決定される。
RSF243は、フラグ情報RFLGが抑止状態を示す場合、セレクタ52にマスクレジスタ46の出力ではなく設定部50の出力を選択させる選択信号SELを出力する。これにより、マスクレジスタ46(レジスタファイル)を動作させることなく、オール”1”をSIMD演算器42に出力することができ、マスクレジスタ46からオール”1”を読み出す場合に比べて、演算処理装置102の消費電力を削減することができる。図9では、バイパス制御に使用するセレクタ52を利用して、設定部50に設定された特定値をマスクオペランドとして選択することができるため、回路規模の増大を抑制することができる。RSF243およびセレクタ52は、動作制御部の一例である。
一方、命令デコード部18から受けるマスク読み出し命令に付随されたフラグ情報RFLGが許可状態を示す場合、RSF243は、有効状態を示す読み出しイネーブル信号RENをマスクレジスタ46(レジスタファイル)に出力する。有効状態を示す読み出しイネーブル信号RENは、読み出し対象のマスクレジスタ46がオール”1”以外のマスク値を保持している場合に生成される。RSF243は、有効状態を示す読み出しイネーブル信号RENとともに、読み出し対象のマスクレジスタ46を示すアドレス(レジスタ番号REGN等)をマスクレジスタ46(レジスタファイル)に出力する。
また、RSF243は、フラグ情報RFLGが許可状態を示す場合、セレクタ52にマスクレジスタ46の出力を選択させる選択信号SELを出力する。これにより、マスクレジスタ46(レジスタファイル)からマスク値を読み出し、読み出したマスク値をSIMD演算器42に出力することができる。
なお、マスク読み出し命令は、マスクレジスタ46に保持されたマスク値を1次データキャッシュに書き込むストア命令でもよい。ストア命令においても、ストア命令に付随するフラグ情報RFLGが抑止状態の場合、マスクレジスタ46は読み出しアクセスされず、セレクタは、オール”1”を選択してSIMD演算器42に出力する。
図10は、図6の演算処理装置102の動作フローの一例を示す。すなわち、図10は、演算処理装置102の制御方法の一例を示す。図10に示す動作フローは、命令デコード部18が命令をデコードしたことに基づいて開始される。
まず、ステップS30において、命令デコード部18は、マスク書き込み命令をデコードしたか否かを判定する。マスク書き込み命令がデコードされた場合、動作はステップS32に移行され、マスク書き込み命令がデコードされていない場合、動作はステップS34に移行される。
ステップS32において、命令デコード部18は、フラグTGRおよびレジスタ番号REGNを識別情報保持部202に設定する処理を実行し、動作をステップS34に移行する。ステップS32の動作の例は、図11に示される。
ステップS34において、命令デコード部18は、マスク読み出し命令をデコードしたか否かを判定する。マスク読み出し命令がデコードされた場合、動作はステップS36に移行され、マスク読み出し命令がデコードされていない場合、動作はステップS38に移行される。なお、ステップS30、S34の順序は、逆にされてもよい。
ステップS36において、命令デコード部18は、デコードしたマスク読み出し命令による読み出し対象のマスクレジスタ46のレジスタ番号REGNをレジスタ制御部20に通知し、レジスタ制御部20からフラグ情報RFLGを受ける。命令デコード部18は、受けたフラグ情報RFLGをマスク読み出し命令に付随し、動作をステップS38に移行する。
複数のデコードスロット182がそれぞれマスク読み出し命令をデコードした場合、各マスク読み出し命令についてステップS36の動作が実行される。なお、レジスタ制御部20は、命令デコード部18からのレジスタ番号REGNが、識別情報保持部202に保持されたレジスタ番号REGNと一致し、フラグTGRがセットされている場合、抑止状態を示すフラグ情報RFLGを命令デコード部18に出力する。レジスタ制御部20は、レジスタ番号REGNが、識別情報保持部202に保持されたレジスタ番号REGNと一致しない場合、許可状態を示すフラグ情報RFLGを命令デコード部18に出力する。
ステップS38において、命令デコード部18は、デコードした命令を、命令の処理対象であるRSA241、RSE242、RSF243、RSBR244のいずれかに発行する。次に、ステップS40において、命令を受けたRSA241、RSE242、RSF243、RSBR244は、命令の実行対象である演算器38、40、42またはオペランドアドレス生成部34のいずれかに命令を発行する。
次に、ステップS42において、RSF243は、マスク読み出し命令に付随されたフラグ情報RFLGが抑止状態を示すか否かを判定する。フラグ情報RFLGが抑止状態を示す場合、動作はステップS44に移行され、フラグ情報RFLGが許可状態を示す場合、動作はステップS46に移行される。
ステップS44において、RSF243は、抑止状態のフラグ情報RFLGに基づいて、読み出しイネーブル信号RENを無効レベル(例えば、ロウレベル)に設定し、選択信号SELを、特定値を演算のオペランドとして選択する値に設定する。すなわち、セレクタ52は、設定部50の出力を選択する。これにより、マスクレジスタ46のアクセス動作が抑止され、消費電力が抑制される。すなわち、RSF243およびセレクタ52は、マスクレジスタ46の読み出しアクセスを抑止し、設定部50に設定された特定値を選択する抑止動作を実行する。ステップS44の後、動作はステップS48に移行される。
ステップS46において、RSF243は、許可状態のフラグ情報RFLGに基づいて、読み出しイネーブル信号RENを有効レベル(例えば、ハイレベル)に設定する。また、RSF243は、選択信号SELを、マスクレジスタ46から読み出されるマスク値を演算のオペランドとして選択する値に設定する。これにより、マスクレジスタ46に保持されたマスク値が読み出される。すなわち、RSF243およびセレクタ52は、マスクレジスタ46の読み出しアクセスを許可し、設定部50に設定された特定値を選択しない許可動作を実行する。ステップS46の後、動作はステップS48に移行される。
ステップS48において、演算命令を受けた演算器38、40、42は、各種レジスタ44、46、48から読み出されたオペランドを使用して演算を実行する。あるいは、メモリアクセス命令を受けたオペランドアドレス生成部34は、1次データキャッシュにアクセスする。そして、図10に示す動作が終了する。
図11は、図10のステップS32の動作フローの一例を示す。図11の動作フローは、識別情報管理部186により実行される。まず、ステップS321において、識別情報管理部186は、特定値書き込み命令の後に実行される命令の中に、対象のマスクレジスタ46に特定値以外のマスク値を書き込むマスク書き込み命令があるか否かを判定する。ここで、判定の対象となる命令は、複数のデコードスロット182により並列(例えば、同時)にデコードされた命令であり、命令の実行の順序は、プログラムの記述順(インオーダ)により判定される。
対象のマスクレジスタ46に特定値以外のマスク値を書き込むマスク書き込み命令がある場合、動作はステップS322に移行される。対象のマスクレジスタ46に特定値以外のマスク値を書き込むマスク書き込み命令がない場合、対象のマスクレジスタ46に特定値を書き込む特定値書き込み命令が仮の設定対象とされ、動作はステップS323に移行される。ここで、仮の設定対象は、識別情報保持部202に識別情報RINF(TGR=”1”、REGN)が設定される可能性のあることを示す。
ステップS322において、識別情報管理部186は、対象のマスクレジスタ46に特定値以外のマスク値が書き込まれる前に特定値を書き込む特定値書き込み命令を仮の設定対象から外し、動作をステップS323に移行する。
ステップS323において、識別情報管理部186は、特定値(オール”1”)を書き込む特定値書き込み命令があるか否かを判定する。以下では、特定値書き込み命令により特定値が書き込まれるマスクレジスタ46は、対象のマスクレジスタ46とも称される。特定値書き込み命令がある場合、動作はステップS324に移行され、特定値書き込み命令がない場合、動作はステップS326に移行される。複数のデコードスロット182の少なくとも1つが特定値書き込み命令をデコードした場合、動作はステップS324に移行される。
ステップS324において、識別情報管理部186は、仮の設定対象のマスク書き込み命令の中で、プログラムの最も後に記述されたマスク書き込み命令を真の設定対象とする。次に、ステップS325において、識別情報管理部186は、ステップS324で真の設定対象としたマスク書き込み命令により特定値が書き込まれるマスクレジスタ46のレジスタ番号REGNを識別情報保持部202に格納する。また、識別情報管理部186は、識別情報保持部202のフラグTGRを”1”にセットし、動作を終了する。
一方、ステップS326において、識別情報管理部186は、識別情報保持部202に設定中のレジスタ番号REGNで示されるマスクレジスタ46に特定値以外のマスク値を書き込むマスク書き込み命令があるか否かを判定する。特定値以外のマスク値を書き込むマスク書き込み命令がある場合、動作はステップS327に移行され、特定値以外のマスク値を書き込むマスク書き込み命令がない場合、動作は終了する。ステップS327において、識別情報管理部186は、識別情報保持部202のフラグTGRを”0”にリセットし、動作を終了する。
以上、図6から図11に示す実施形態においても、図1から図5に示す実施形態と同様に、マスクレジスタ46から特定値を読み出すマスク読み出し命令に基づいて、マスクレジスタ46にアクセスすることなく、特定値を用いて演算を実行することができる。この結果、マスクレジスタ46にアクセスして特定値を読み出す場合に比べて、命令の実行時の演算処理装置102の消費電力を削減することができる。識別情報保持部202に保持される識別情報RINFを複数のマスクレジスタ46で共有する場合にも、消費電力を削減しつつ、演算器42に正しい値を出力することができる。
さらに、図6から図11に示す実施形態では、識別情報保持部202が複数のデコードスロット182に対して共通に設けられる場合にも、正しいフラグTGRと正しいレジスタ番号REGNを識別情報保持部202に保持することができる。これにより、マスク読み出し命令に基づいて、マスク値をマスクレジスタ46から読み出すか否かの判定を正しく実行することができる。また、マスク書き込み命令とマスク読み出し命令とが、どのデコードスロット182に供給されるかにかかわらず、マスク値をマスクレジスタ46から読み出すか否かの判定を正しく実行することができる。
識別情報管理部186が図11に示す動作を実行することで、複数のデコードスロット182が複数の命令を並列にデコードする場合にも、複数の命令を順次デコードする場合と同様に、識別情報保持部202に正しい識別情報RINFを設定することができる。
分岐予測部22による分岐予測が外れた場合に、識別情報保持部202のフラグTGRをリセットすることで、識別情報保持部202に設定された識別情報RINFが、マスクレジスタ46が保持するマスク値と対応しない不具合を抑止することができる。これにより、演算処理装置102の誤動作を抑止することができる。
デコードスロット182毎に一致検出部204を設けることで、複数のデコードスロット182のそれぞれは、識別情報保持部202に設定された識別情報RINFにアクセスすることなく、フラグ情報RFLGを効率的に取得することができる。バイパス制御に使用するセレクタ52を利用して、設定部50に設定された特定値をマスクオペランドとして選択することができるため、回路規模の増大を抑制することができる。
図12は、別の実施形態の演算処理装置における命令デコード部およびレジスタ制御部の一例を示す。図7で説明した要素と同一または同様の要素については、同じ符号を付し、詳細な説明は省略される。図12に示す演算処理装置104は、例えば、スーパースカラ方式のプロセッサである。なお、演算処理装置104は、スカラ方式等の他の方式のプロセッサでもよい。また、演算処理装置104を含む情報処理システムは、図5と同様の構成であり、図5のCPUの符号を104に置き換えることで実現される。
この実施形態では、マスクレジスタ46に書き込む特定のマスク値として、複数の特定値(例えば、オール”1”とオール”0”の2つ)を指定することができる。また、複数の特定値にそれぞれ対応して、特定値をマスクレジスタ46に書き込む複数の特定値書き込み命令が命令セットに用意される。例えば、オール”1”は、マスクレジスタ46に設定される頻度が最も高いマスク値であり、オール”0”は、マスクレジスタ46に設定される頻度が2番目に高いマスク値であるとする。
図12に示す演算処理装置104では、命令デコード部18は、図7に示す命令判定部184(184a、184b、184c、184d)の代わりに命令判定部184A(184Aa、184Ab、184Ac、184Ad)を有する。また、命令デコード部18は、図7に示す識別情報管理部186の代わりに識別情報管理部186Aを有する。命令デコード部18において、命令判定部184Aおよび識別情報管理部186Aを除く構成および機能は、図7に示す命令デコード部18と同様である。
レジスタ制御部20は、図7に示す識別情報保持部202の代わりに識別情報保持部202Aを有する。また、レジスタ制御部20は、図7に示す一致検出部204(204a、204b、204c、204d)の代わりに一致検出部204A(204Aa、204Ab、204Ac、204Ad)を有する。レジスタ制御部20において、識別情報保持部202Aおよび一致検出部204Aを除く構成および機能は、図7に示す識別情報保持部202と同様である。識別情報保持部202Aは、図7に示す識別情報保持部202が保持するフラグTGRとレジスタ番号REGNとに加えて、データフラグDFLGを保持する領域を有する。
各命令判定部184Aは、デコードスロット182がオール”1”をマスクレジスタ46に書き込む専用のマスク書き込み命令をデコードした場合、識別情報管理部186Aにマスク値とレジスタ番号REGNとプログラム上での記述順を示す情報とを出力する。各命令判定部184Aは、デコードスロット182がオール”0”をマスクレジスタ46に書き込む専用のマスク書き込み命令をデコードした場合、識別情報管理部186Aにマスク値とレジスタ番号REGNとプログラム上での記述順を示す情報とを出力する。
識別情報管理部186Aは、命令判定部184Aのいずれか1つからマスク値とレジスタ番号REGNとを受けた場合、受けたレジスタ番号REGNとマスク値を示すデータフラグDFLGとを識別情報保持部202Aに格納する。また、識別情報管理部186Aは、識別情報保持部202AのフラグTGRをセットする。データフラグDFLGは、特定値を識別する特定値識別情報の一例である。
識別情報管理部186Aは、複数の命令判定部184Aからマスク値とレジスタ番号REGNとを受けた場合、真の設定対象のマスク書き込み命令を決定する。そして、識別情報管理部186Aは、真の設定対象としたマスク書き込み命令に対応するレジスタ番号REGNとマスク値を示すデータフラグDFLGとを識別情報保持部202Aに格納する。また、識別情報管理部186Aは、識別情報保持部202AのフラグTGRをセットする。識別情報管理部186Aのその他の機能は、図7に示す識別情報管理部186と同様である。
また、各命令判定部184Aは、図7に示す命令判定部184と同様に、デコードした命令がマスク読み出し命令である場合、読み出し対象のマスクレジスタ46を示すレジスタ番号REGNをレジスタ制御部20に出力する。但し、各命令判定部184は、レジスタ番号REGNの出力に基づいてレジスタ制御部20から出力される2ビットのフラグ情報RFLGを受ける。各命令判定部184Aは、レジスタ制御部20から受けたフラグ情報RFLGをマスク読み出し命令に付随してRSF243に出力する。
但し、各命令判定部184Aは、以下の場合、フラグ情報RFLGを許可状態(後述)に変更してRSF243に出力する。例えば、あるデコードスロット182でデコードした、レジスタ番号REGNに対応するマスク読み出し命令の記述より前に、他のデコードスロット182でデコードした、レジスタ番号REGNに対応する特定値でない値を書き込むマスク書き込み命令があるとする。この場合、マスク読み出し命令に基づいて、読み出し対象のマスクレジスタ46から特定値でない値を読み出す必要がある。このため、識別情報管理部186Aは、各命令判定部184Aから特定値でない値を書き込むマスク書き込み命令の情報を収集し、収集した情報に基づいて、フラグ情報RFLGを抑止状態(後述)から許可状態に変更させる指示を対象のデコードスロット182に発行する。
例えば、2進数で”00”のフラグ情報RFLGは、読み出し対象のマスクレジスタ46がオール”0”(特定値)を保持していることを示す。2進数で”01”のフラグ情報RFLGは、読み出し対象のマスクレジスタ46がオール”1”(特定値)を保持していることを示す。2進数で”10”のフラグ情報RFLGは、読み出し対象のマスクレジスタ46が特定値以外のマスク値を保持していることを示す。2進数で”00”または”01”のフラグ情報RFLGは、読み出し対象のマスクレジスタ46からの特定値の読み出しを抑止する抑止状態を示す。2進数で”10”のフラグ情報RFLGは、読み出し対象のマスクレジスタ46からの特定値の読み出しを許可する許可状態を示す。
各一致検出部204Aは、識別情報保持部202Aが保持する識別情報RINF(フラグTGR、レジスタ番号REGNおよびデータフラグDFLG)に基づいて動作する。各一致検出部204Aは、対応する命令判定部184Aから受けるレジスタ番号REGNが、識別情報保持部202に保持されたレジスタ番号REGNと一致する場合、識別情報保持部202を参照する。そして、各一致検出部204Aは、識別情報保持部202に保持されたフラグTGRの値とデータフラグDFLGの値に基づいて、フラグ情報RFLGを出力する。
各一致検出部204は、フラグTGRがセット状態(ハイレベル)の場合、データフラグDFLGが示すマスク値に対応するフラグ情報FLG(2進数で”00”または”01”;抑止状態)を出力する。各一致検出部204Aは、フラグTGRがリセット状態(ロウレベル)の場合、2進数で”10”(許可状態)を示すフラグ情報RFLGを出力する。さらに、各一致検出部204Aは、対応する命令判定部184Aから受けるレジスタ番号REGNが、識別情報保持部202に保持されたレジスタ番号REGNと一致しない場合、2進数で”10”(許可状態)を示すフラグ情報RFLGを出力する。
図12に示す構成により、2つの特定値(マスク値)のそれぞれに対応するフラグ情報RFLGをマスク読み出し命令に付随させることができる。これにより、図13で説明されるように、マスクレジスタ46が2つの特定値のいずれかを保持する場合、マスクレジスタ46を動作させることなく、特定値をマスクオペランドとして演算器42に出力することができる。なお、図12に示す例では、2つの特定値を読み出す場合にマスクレジスタ46の動作を抑止する例が示される。しかしながら、マスクレジスタ46に設定される特定値は、3種類以上でもよい。なお、特定値毎に、専用のマスク書き込み命令が予め用意される。
なお、図8に示す動作を命令判定部184A、識別情報管理部186Aおよび識別情報保持部202Aの動作に置き換える場合、(状態A)および(状態B)では、識別情報保持部202Aが、”ALL1”を示すデータフラグDFLGを保持する。
演算処理装置104では、マスクレジスタ46が、”ALL1”または”ALL0”のマスク値を保持する場合、マスク読み出し命令に基づくマスクレジスタ46の読み出し動作を抑止する。このため、(状態C)では、識別情報管理部186Aは、フラグTGR=”1”と、レジスタ番号REGN=”0”と、”ALL0”を示すデータフラグDFLGとを識別情報保持部202Aに書き込む。
なお、(状態C)において、命令判定部184cに対応する命令判定部184Acが、”ALL0”および”ALL1”のいずれでもないマスク値(すなわち、特定値以外のマスク値)をマスクレジスタ46に書き込むマスク書き込み命令をデコードしたとする。この場合、識別情報管理部186Aは、フラグTGR=”1”と、レジスタ番号REGN=”0”と、”ALL1”を示すデータフラグDFLGとを識別情報保持部202Aに書き込む。(状態D)では、識別情報管理部186Aは、フラグTGR=”1”と、レジスタ番号REGN=”1”と、”ALL0”を示すデータフラグDFLGとを識別情報保持部202Aに書き込む。
図13は、図12に示す演算処理装置104において、マスク書き込み命令とマスク読み出し命令とを実行する回路の一例を示す。図9で説明した要素と同一または同様の要素については、同じ符号を付し、詳細な説明は省略される。
図13は、図9の設定部50の代わりに設定部50Aが設けられ、図9のセレクタ52の代わりにセレクタ52Aが設けられることを除き、図9に示す構成と同様である。設定部50Aには、2つの特定値(オール”1”とオール”0”)が設定される。なお、特定値が3種類以上の場合、設定部50Aには、各特定値が設定される。
セレクタ52Aは、図9に示すセレクタ52の機能に加えて、選択信号SELに基づいて設定部50Aからオール”0”を選択する機能を有する。このため、RSF243は、命令デコード部18から受けるマスク読み出し命令に付随するフラグ情報RFLGに基づいて、設定部50Aに設定されたオール”1”またはオール”0”をセレクタ52Aに選択させる選択信号SELをセレクタ52Aに出力する。RSF243およびセレクタ52Aは、動作制御部の一例である。
図12に示す演算処理装置104の動作は、図10に示す動作フローにより示される。但し、図10のステップS32の例を示す図11では、特定値は、オール”1”またはオール”0”と読み替えられ、特定値以外の値は、オール”1”およびオール”0”以外の値と読み替えられる。これにより、複数のマスクレジスタ46が複数種の特定値をそれぞれ保持する場合にも、レジスタ読み出し命令に基づいて、識別情報保持部202Aに保持されたデータフラグDFLGに対応する複数種の特定値を設定部50Aから選択することができる。したがって、複数種の特定値のいずれかを保持するマスクレジスタ46からの特定値の読み出しを抑止することができ、マスクレジスタ46から特定値を読み出す場合に比べて、命令の実行時の演算処理装置104の消費電力を削減することができる。
以上、図12および図13に示す実施形態においても、図1から図5に示す実施形態と同様の効果を得ることができる。さらに、図12および図13に示す実施形態では、複数種の特定値のいずれかを保持するマスクレジスタ46からの特定値の読み出しを抑止することができる。この結果、マスクレジスタ46が複数種の特定値のいずれを保持する場合にも、マスクレジスタ46をアクセスすることなく特定値をオペランドとして演算器42に供給することができ、命令の実行時の演算処理装置104の消費電力を削減することができる。
図14は、別の実施形態における演算処理装置の一例を示す。図6で説明した要素と同一または同様の要素については、同じ符号を付し、詳細な説明は省略される。図14に示す演算処理装置106は、例えば、スーパースカラ方式のプロセッサである。なお、演算処理装置106は、スカラ方式等の他の方式のプロセッサでもよい。また、演算処理装置106を含む情報処理システムは、図5と同様の構成であり、図5のCPUの符号を106に置き換えることで実現される。
演算処理装置106は、コミット制御部30の代わりにコミット制御部30Bを有することを除き、図6および図9に示す演算処理装置102と同様の構成を有する。例えば、命令デコード部18およびレジスタ制御部20の構成は、図7と同じである。
コミット制御部30Bは、フラグTGRcとレジスタ番号REGNcとを保持する識別情報保持部31Bを図6に示すコミット制御部30に追加している。レジスタ番号REGNcは、特定値書き込み命令により特定値が書き込まれたマスクレジスタ46の番号を示す。フラグTGRcは、レジスタ番号REGNcが有効であることを示す。なお、識別情報保持部31Bは、コミット制御部30Bの外部に設けられてもよい。識別情報保持部31Bは、完了情報保持部の一例である。
コミット制御部30Bは、特定値書き込み命令の実行の完了処理において、特定値を書き込んだマスクレジスタ46を示すレジスタ番号REGNcを識別情報保持部31Bに格納する。また、コミット制御部30Bは、特定値書き込み命令の実行の完了処理において、フラグTGRcを”1”にセットする。さらに、コミット制御部30Bは、特定値以外の値をレジスタ番号REGNで示されるマスクレジスタ46に書き込むマスク書き込み命令の実行の完了処理において、フラグTGRcを”0”にリセットする。なお、フラグTGRcは、パイプラインクリアではリセットされない。
図15は、図14の演算処理装置106の動作の例を示す。図15において、符号”WRALL”は、特定値をマスクレジスタ46に書き込むための特定値書き込み命令である。符号”WRALL”の後の”46[0]”、”46[1]”等は、特定値が書き込まれるマスクレジスタ46の番号を示す。図15に示す例では、特定値は、オール”1”(”ALL1”)であるとする。
符号”WR”は、ロード命令等の書き込み命令である。符号”WR”の後の”46[0]”は、データ(マスク値)を書き込むディスティネーションを示し、さらに後の”[AD0]”は、メインメモリ200のアドレスAD0に保持されたデータ(マスク値)を示す。なお、RSE242、RSF243は、それぞれ命令をアウトオブオーダで演算器38、40または演算器42に発行するが、図15では、説明を分かりやすくするため、命令はインオーダで発行されるとする。
まず、命令デコード部18は、マスクレジスタ46[0]に対する特定値書き込み命令WRALLのデコードに基づいて、フラグTGRをセットし、レジスタ番号REGN(=”0”)を識別情報保持部202に格納する(図15(a))。次に、命令デコード部18は、マスクレジスタ46[0]に対する特定値以外の値の書き込み命令WRのデコードに基づいて、フラグTGRをリセットする(図15(b))。この後、演算器40によりマスクレジスタ46[0]に対する特定値書き込み命令WRALLが実行され、マスクレジスタ46[0]に”ALL1”が書き込まれる(図15(c))。
コミット制御部30Bは、命令の完了の報告を演算器40から受け、命令をインオーダで完了(コミット)する。コミット制御部30Bは、特定値書き込み命令”WRALL 46[0]”の完了に基づいて、フラグTGRcをセットし、レジスタ番号REGNcを”0”に設定する(図15(d))。
次に、命令デコード部18は、マスクレジスタ46[1]に対する特定値書き込み命令WRALLのデコードに基づいて、フラグTGRをセットし、レジスタ番号REGN(=”1”)を識別情報保持部202に格納する(図15(e))。この後、演算器40によりマスクレジスタ46[0]に対する書き込み命令WRが実行され、マスクレジスタ46[0]に例えば、”ALL1”以外の値である”xx”が書き込まれる(図15(f))。コミット制御部30Bは、書き込み命令”WR 46[0],[AD0]”の完了に基づいて、フラグTGRcをリセットする(図15(g))。
次に、命令デコード部18は、条件分岐命令をデコードする(図15(h))。この後、演算器40によりマスクレジスタ46[1]に対する特定値書き込み命令WRALLが実行され、マスクレジスタ46[1]に”ALL1”が書き込まれる(図15(i))。コミット制御部30Bは、命令の完了の報告を演算器40から受け、命令をインオーダで完了する。コミット制御部30Bは、特定値書き込み命令”WRALL 46[1]”の完了に基づいて、フラグTGRcをセットし、レジスタ番号REGNcを”1”に設定する(図15(j))。
次に、条件分岐命令が成立するという分岐予測部22による予測に基づき、命令デコード部18は、分岐先の命令であるマスクレジスタ46[2]に対する特定値書き込み命令WRALLをデコードする。命令デコード部18は、デコード結果に基づいて、フラグTGRをセットし、レジスタ番号REGN(=”2”)を識別情報保持部202に格納する(図15(k))。
この後、分岐予測が誤っていたことが判明し、コミット制御部30Bは、正しい分岐方向の命令を実行するために、パイプラインクリアを実行する(図15(l))。レジスタ制御部20(図7)は、パイプラインクリアに伴ってコミット制御部30Bから発行されるクリア信号CLR(図示せず)に基づいて、フラグTGRをリセットする(図15(m))。これにより、投機実行のために設定されたレジスタ番号REGN(=”2”)を無効化することができ、識別情報保持部202が誤った識別情報RINFを保持することを抑止することができる。すなわち、実際には特定値を保持していないマスクレジスタ46[2]が特定値を保持していることを識別情報RINFが示すことを抑止することができる。
コミット制御部30Bは、パイプラインクリアに基づいて、フラグTGRcの値をフラグTGRにコピーし、レジスタ番号REGNcをレジスタ番号REGNにコピーする(図15(n))。これにより、マスクレジスタ46[1]に対する特定値書き込み命令WRALLのデコードに基づいて識別情報保持部202に設定されたフラグTGRとレジスタ番号REGNを復活させることができる。
図15では、パイプラインクリアによりリセットされたフラグTGRが、パイプラインクリアの直前に実行された特定値書き込み命令による書き込み対象のマスクレジスタ46[1]の保持状態に合わせてセットされる。このため、その後、マスクレジスタ46[1]に対する読み出し命令がデコードされた場合、マスクレジスタ46[1]を動作させることなく、設定部6に設定された特定値(”ALL1”)をマスクオペランドとして読み出すことができる。
図16は、図14のコミット制御部30Bの動作フローの一例を示す。すなわち、図16は、演算処理装置106の制御方法の一例を示す。図16に示す動作フローは、コミット制御部30Bが命令の完了処理を実行する場合に開始される。なお、ステップS60に示すパイプラインクリアの発生の判定は、命令の完了処理と異なるタイミングで実行されてもよい。
まず、ステップS50において、コミット制御部30Bは、マスクレジスタ46に特定値を書き込む特定値書き込み命令をコミットするか否かを判定する。マスクレジスタ46に特定値書き込み命令をコミットする場合、動作はステップS52に移行され、マスクレジスタ46に特定値書き込み命令をコミットしない場合、動作はステップS54に移行される。ステップS52において、コミット制御部30Bは、フラグTGRcを”1”にセットし、レジスタ番号REGNcを識別情報保持部31Bに格納し、動作をステップS54に移行する。
ステップS54において、コミット制御部30Bは、マスクレジスタ46に特定値以外の値を書き込むマスク書き込み命令をコミットするか否かを判定する。マスクレジスタ46に特定値以外の値を書き込むマスク書き込み命令をコミットする場合、動作はステップS56に移行され、マスクレジスタ46に特定値以外の値を書き込むマスク書き込み命令をコミットしない場合、動作はステップS60に移行される。
ステップS56において、コミット制御部30Bは、コミットするマスク書き込み命令により特定値以外の値が書き込まれるマスクレジスタ46の番号が、レジスタ番号REGNcと一致するか否かを判定する。レジスタ番号REGNcと一致する場合、動作はステップS58に移行され、レジスタ番号REGNcと一致しない場合、動作はステップS60に移行される。ステップS58において、コミット制御部30Bは、フラグTGRcをリセットし、動作をステップS60に移行する。
ステップS60において、コミット制御部30Bは、パイプラインクリアが発生した場合、動作をステップS62に移行し、パイプラインクリアが発生していない場合、動作を終了する。ステップS62において、コミット制御部30Bは、フラグTGRcの値を識別情報保持部202のフラグTGRが格納される領域にコピーし、レジスタ番号REGNcを識別情報保持部202のレジスタ番号REGNが格納される領域にコピーする。次に、ステップS64において、コミット制御部30Bは、正しいアドレスから命令のフェッチを再開し、動作を終了する。
なお、図12に示す演算処理装置104は、コミット制御部30(図6)の代わりにコミット制御部30Bを有してもよい。
以上、図14から図16に示す実施形態においても、図1から図13に示す実施形態と同様の効果を得ることができる。さらに、図14および図16に示す実施形態では、パイプラインクリアが発生した場合に、識別情報保持部202の状態を、パイプラインクリアが発生する前の状態に戻すことができる。すなわち、パイプラインクリアによりリセットされたフラグTGRを有効な状態に復活させることができる。これにより、フラグTGRを復活しない場合に比べて、マスクレジスタ46を動作させることなく特定値をオペランドして演算器42に供給できる確率を高くすることができ、演算処理装置106の消費電力を削減することができる。
図17は、別の実施形態の演算処理装置における命令デコード部およびレジスタ制御部の一例を示す。図7で説明した要素と同一または同様の要素については、同じ符号を付し、詳細な説明は省略される。図17に示す演算処理装置108は、例えば、スーパースカラ方式のプロセッサである。なお、演算処理装置108は、スカラ方式等の他の方式のプロセッサでもよい。また、演算処理装置108を含む情報処理システムは、図5と同様の構成であり、図5のCPUの符号を108に置き換えることで実現される。
この実施形態では、レジスタ制御部20は、複数の識別情報保持部202を有し、図7に示す一致検出部204の代わりに一致検出部204C(204Ca、204Cb、204Cc、204Cd)を有する。また、命令デコード部18は、図7に示す識別情報管理部186の代わりに識別情報管理部186Cを有する。命令デコード部18において、識別情報管理部186Cを除く構成および機能は、図7に示す命令デコード部18と同様である。演算処理装置108のその他の構成は、図6に示す演算処理装置102と同様である。
識別情報管理部186Cは、4つの命令判定部184から受けるレジスタ番号REGNとマスク値を示す情報とに基づいて、識別情報保持部202のいずれかを設定する動作を実行する。識別情報管理部186Cは、命令判定部184からレジスタ番号REGNと特定値を示す情報とを受けた場合、識別情報RINF(フラグTGRをセットする指示SETと、レジスタ番号REGN)を識別情報保持部202のいずれかに出力する。この際、識別情報管理部186Cは、複数の識別情報保持部202のうち、フラグTGRがリセットされた識別情報保持部202に識別情報RINFを出力する。フラグTGRがリセットされた識別情報保持部202がない場合、識別情報管理部186Cは、最も古くフラグTGRがセットされた識別情報保持部202に識別情報RINFを出力する。なお、指示SETとレジスタ番号REGNとを出力する識別情報保持部202は、LRU(Least Recently Used)方式により決められてもよい。
識別情報管理部186Cは、命令判定部184からレジスタ番号REGNと特定値以外の値を示す情報とを受けた場合、レジスタ番号REGNを保持する識別情報保持部202があるか否かを判定する。レジスタ番号REGNを保持する識別情報保持部202がある場合、識別情報管理部186Cは、レジスタ番号REGNを保持する識別情報保持部202のフラグTGRをリセットする。レジスタ番号REGNを保持する識別情報保持部202がない場合、識別情報管理部186Cは、レジスタ制御部20に対する識別情報RINFの書き込みを実行しない。
なお、レジスタ制御部20は、コミット制御部30(図6)からクリア信号CLRを受けた場合、全ての識別情報保持部202のフラグTGRをリセットする。これにより、分岐予測部22による分岐予測が外れた場合等に、セットされるべきでないフラグTGRがセットされ続けることを抑止することができ、演算処理装置108の誤動作を抑止することができる。
各一致検出部204Cは、命令判定部184からレジスタ番号REGNを受けた場合、レジスタ番号REGNを保持する識別情報保持部202があるか否かを検出する。そして、各一致検出部204Cは、レジスタ番号REGNを保持する識別情報保持部202がある場合、レジスタ番号REGNとともに保持するフラグTGRの値を読み出し、フラグTGRの値に基づいて、フラグ情報RFLGを出力する。
但し、各命令判定部184は、以下の場合、フラグ情報RFLGを許可状態(後述)に変更してRSF243に出力する。例えば、あるデコードスロット182でデコードした、レジスタ番号REGNに対応するマスク読み出し命令の記述より前に、他のデコードスロット182でデコードした、レジスタ番号REGNに対応する特定値でない値を書き込むマスク書き込み命令があるとする。この場合、マスク読み出し命令に基づいて、読み出し対象のマスクレジスタ46から特定値でない値を読み出す必要がある。このため、識別情報管理部186Cは、各命令判定部184から特定値でない値を書き込むマスク書き込み命令の情報を収集し、収集した情報に基づいて、フラグ情報RFLGを抑止状態(後述)から許可状態に変更させる指示を対象のデコードスロット182に発行する。
各一致検出部204Cは、図7に示す一致検出部204と同様に、フラグTGRがセット状態の場合、フラグ情報RFLGを抑止状態に設定し、フラグTGRがリセット状態の場合、フラグ情報RFLGを許可状態に設定する。各一致検出部204Cは、レジスタ番号REGNを保持する識別情報保持部202がない場合、フラグ情報RFLGを許可状態に設定する。
命令判定部184の動作は、図7で説明した動作と同じである。この実施形態では、命令デコード部18とレジスタ制御部20により、複数のマスクレジスタ46がそれぞれ特定値を保持することを判定することができる。これにより、特定値を保持する複数のマスクレジスタ46に対する複数のマスク読み出し命令に基づいて、各マスクレジスタ46の動作を抑止しながら、設定部50に設定された特定値をマスクオペランドとして読み出す抑止動作を実行することができる。この結果、図6に示す演算処理装置102に比べて、命令の実行時の演算処理装置108の消費電力をさらに削減することができる。
なお、図12に示す演算処理装置104において、レジスタ制御部20が複数の識別情報保持部202Aを有してもよい。この場合、一致検出部204Aに、一致検出部204Cの機能が追加され、識別情報管理部186Aに、識別情報管理部186Cの機能が追加される。同様に、図14に示す演算処理装置106の命令デコード部18とレジスタ制御部20とが、図17に示す命令デコード部18とレジスタ制御部20とにそれぞれ置き換えられてもよい。さらに、図12に示す演算処理装置104が、図14に示すコミット制御部30Bと、図17に示す複数の識別情報保持部202Aとを有してもよい。
以上、図17に示す実施形態においても、図1から図16に示す実施形態と同様の効果を得ることができる。さらに、図17に示す実施形態では、複数のマスク読み出し命令がそれぞれデコードされた場合にも、各マスクレジスタ46の動作を抑止しながら、設定部50に設定された特定値をマスクオペランドとして読み出す抑止動作を実行することができる。この結果、図6に示す演算処理装置102に比べて、命令の実行時の演算処理装置108の消費電力をさらに削減することができる。
以上の図1から図17に示す実施形態に関し、さらに以下の付記を開示する。
(付記1)
命令をデコードするデコード部と、
前記デコード部がデコードした命令を実行する命令実行部と、
前記命令実行部が使用するデータを保持する複数のレジスタを含むレジスタ部と、
前記デコード部がデコードした命令が、前記複数のレジスタのいずれかに特定値を書き込むレジスタ書き込み命令である場合、前記特定値を書き込むレジスタを識別する識別情報が格納される識別情報保持部と、
前記特定値が設定される設定部と、
前記デコード部がデコードした命令が、前記識別情報保持部に保持された識別情報で識別されるレジスタから値を読み出すレジスタ読み出し命令である場合、レジスタ読み出し命令によるレジスタのアクセスを抑止し、前記設定部に設定された前記特定値を選択する抑止動作を実行する動作制御部と
を有することを特徴とする演算処理装置。
(付記2)
前記デコード部は、
各々が命令をデコードする複数のデコーダと、
前記複数のデコーダが複数のレジスタ書き込み命令を並列にデコードした場合、複数のレジスタ書き込み命令に基づいて前記識別情報保持部に格納する識別情報を決定する識別情報管理部を有することを特徴とする付記1に記載の演算処理装置。
(付記3)
前記識別情報管理部は、
並列にデコードした複数のレジスタ書き込み命令の中に前記特定値を書き込むレジスタ書き込み命令がある場合、前記特定値のレジスタ書き込み命令の後に前記特定値以外の値を書き込むレジスタ書き込み命令があるかをレジスタ毎に判定し、
後ろに前記特定値以外の値のレジスタ書き込み命令がない前記特定値のレジスタ書き込み命令のうち、命令の記述が最も後のレジスタ書き込み命令に対応する識別情報を前記識別情報保持部に格納することを特徴とする付記2に記載の演算処理装置。
(付記4)
前記識別情報保持部が保持する識別情報は、レジスタ書き込み命令により前記特定値が書き込まれたレジスタを示すレジスタ情報と、前記レジスタ情報が有効かを示すフラグ情報とを含み、
前記識別情報管理部は、並列にデコードした複数の命令の中に前記特定値のレジスタ書き込み命令がなく、かつ、前記レジスタ情報で示されるレジスタに前記特定値以外の値を書き込むレジスタ書き込み命令がある場合、前記フラグ情報を無効に設定することを特徴とする付記2または付記3に記載の演算処理装置。
(付記5)
前記演算処理装置はさらに、分岐命令により分岐が実行されるかを予測する分岐予測部を有し、
前記識別情報保持部が保持する前記フラグ情報は、前記分岐予測部による予測が外れた場合に出力される命令の実行を取り消す指示に基づいて無効に設定されることを特徴とする付記4に記載の演算処理装置。
(付記6)
前記演算処理装置はさらに、
アウトオブオーダにより実行が完了した命令に基づいてインオーダで命令の完了処理を実行する完了処理部と、
前記完了処理部によるインオーダでの命令の完了処理に基づいて、前記識別情報保持部が保持する識別情報と同じ情報が格納される完了情報保持部とを有し、
前記完了処理部は、命令の実行を取り消す指示に基づいて前記フラグ情報が無効に設定された後、前記完了情報保持部が保持する情報を前記識別情報保持部に格納することを特徴とする付記5に記載の演算処理装置。
(付記7)
前記演算処理装置はさらに、レジスタ読み出し命令をデコードしたデコーダからの問い合わせに基づいて、レジスタ読み出し命令によりアクセスされるレジスタが、前記識別情報保持部が保持する識別情報に対応するかの対応情報を通知する通知部を有し、
前記複数のデコーダの各々は、前記通知部からの対応情報をレジスタ読み出し命令とともに前記動作制御部に出力し、
前記動作制御部は、対応情報に基づいて前記抑止動作を実行するかを決定することを特徴とする付記2ないし付記6のいずれか1項に記載の演算処理装置。
(付記8)
前記識別情報保持部が保持する識別情報は、レジスタ書き込み命令により前記特定値が書き込まれたレジスタを示すレジスタ情報と、前記レジスタ情報が有効かを示すフラグ情報とを含み、
前記動作制御部は、前記レジスタ情報がレジスタ読み出し命令により値を読み出すレジスタを示し、かつ、前記フラグ情報が有効を示す場合、前記抑止動作を実行すること
を特徴とする付記1に記載の演算処理装置。
(付記9)
前記デコード部は、前記レジスタ情報で示されるレジスタに前記特定値以外の値を書き込むレジスタ書き込み命令をデコードした場合、前記フラグ情報を無効に設定し、
前記動作制御部は、前記フラグ情報が無効を示す場合、レジスタ読み出し命令によるレジスタのアクセスを許可し、前記設定部に設定された前記特定値を選択しない許可動作を実行すること
を特徴とする付記8に記載の演算処理装置。
(付記10)
前記動作制御部は、
前記設定部の出力と、前記レジスタ部の出力と、前記レジスタ部の入力とのいずれかを選択するセレクタを有し、
前記抑止動作を実行する場合、前記設定部の出力を選択する選択信号を前記セレクタに出力することを特徴とする付記1ないし付記9のいずれか1項に記載の演算処理装置。
(付記11)
前記複数のレジスタの各々は、前記動作制御部が出力するアドレスにより選択され、
前記動作制御部は、レジスタ読み出し命令に基づいて選択されるレジスタのアクセスを抑止する場合、前記レジスタ部に出力するアドレスの論理を前のレジスタアクセスサイクルで出力したアドレスの論理から変えずに維持することを特徴とする付記1ないし付記10のいずれか1項に記載の演算処理装置。
(付記12)
前記デコード部は、前記特定値を識別する特定値識別情報を前記識別情報とともに前記識別情報保持部に格納し、
前記設定部には、複数種の前記特定値が設定され、
前記動作制御部は、前記デコード部がデコードした命令が、前記識別情報保持部に保持された識別情報で識別されるレジスタから値を読み出すレジスタ読み出し命令である場合、前記設定部に設定された複数種の前記特定値のうち、前記識別情報保持部に保持された前記特定値識別情報に対応する特定値を選択することで、前記抑止動作を実行することを特徴とする付記1ないし付記11のいずれか1項に記載の演算処理装置。
(付記13)
前記識別情報保持部は、複数の前記識別情報を保持する複数の領域を有し、
前記デコード部は、前記複数のレジスタのいずれかに前記特定値を書き込むレジスタ書き込み命令をデコードした場合、前記複数の領域のいずれかに前記識別情報を格納し、
前記動作制御部は、前記デコード部が前記複数の領域のいずれかに保持された識別情報で識別されるレジスタから値を読み出すレジスタ読み出し命令をデコードした場合、前記抑止動作を実行することを特徴とする付記1ないし付記12のいずれか1項に記載の演算処理装置。
(付記14)
前記レジスタ読み出し命令は、前記複数のレジスタのいずれかが保持する値をオペランドとして演算を実行する演算命令、または、前記複数のレジスタのいずれかが保持する値をメモリにストアするストア命令であることを特徴とする付記1ないし付記13のいずれか1項に記載の演算処理装置。
(付記15)
前記レジスタ書き込み命令は、前記複数のレジスタのいずれかに演算結果を格納する演算命令、前記複数のレジスタのいずれかに前記特定値を書き込む特定値書き込み命令、または、メモリが保持する値を前記複数のレジスタのいずれかにロードするロード命令であることを特徴とする付記1ないし付記14のいずれか1項に記載の演算処理装置。
(付記16)
前記複数のレジスタの各々は、前記命令実行部の動作を制御する制御値を保持する制御レジスタであることを特徴とする付記1ないし付記15のいずれか1項に記載の演算処理装置。
(付記17)
命令をデコードするデコード部と、前記デコード部がデコードした命令を実行する命令実行部と、前記命令実行部が使用するデータを保持する複数のレジスタを含むレジスタ部とを有する演算処理装置の制御方法において、
前記デコード部が、デコードした命令が前記複数のレジスタのいずれかに特定値を書き込むレジスタ書き込み命令である場合、前記特定値を書き込むレジスタを識別する識別情報を識別情報保持部に格納し、
前記演算処理装置が有する動作制御部が、前記デコード部がデコードした命令が、前記識別情報保持部に保持された識別情報で識別されるレジスタから値を読み出すレジスタ読み出し命令である場合、レジスタ読み出し命令によるレジスタのアクセスを抑止し、設定部に設定された前記特定値を選択する抑止動作を実行すること
を特徴とする演算処理装置の制御方法。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。