(57)【特許請求の範囲】
【請求項１】
プログラムカウンタ値の上位ビット部を保持するためのレジスタ部と、
プログラムカウンタ値のアドレスの命令が命令メモリから読み出されると、前記読み出された命令に対応するプログラムカウンタ値を上位ビット部及び下位ビット部に分割し、前記プログラムカウンタ値の前記上位ビット部を前記レジスタ部に書き込み、前記読み出された命令とそれに対応する前記プログラムカウンタ値の前記下位ビット部との組みを後段に伝播させる制御部と、
前記読み出された命令に対して複数ステージのパイプライン処理を行い、前記読み出された命令の情報とその命令に対応する前記プログラムカウンタ値の前記下位ビット部との組みを各ステージに伝播させる演算パイプラインとを有し、
前記制御部は、前記演算パイプラインで前記読み出された命令の処理による特殊信号が発生すると、その命令に対応する前記プログラムカウンタ値の前記下位ビット部と前記レジスタ部内の前記プログラムカウンタ値の前記上位ビット部とを結合させて出力することを特徴とする処理装置。
【請求項２】
前記レジスタ部は、複数のプログラムカウンタ値の上位ビット部を保持するための複数のレジスタを有し、
さらに、前記演算パイプラインの各ステージの命令に対応するプログラムカウンタ値の上位ビット部が保持されているレジスタの識別子を記憶する状態テーブルを有し、
前記制御部は、前記分割した上位ビット部と同じ値の上位ビット部が前記レジスタに保持されている場合には、前記分割した上位ビット部を前記レジスタ部に書き込まず、前記同じ値の上位ビット部が保持されているレジスタの識別子を前記状態テーブルに書き込み、前記分割した上位ビット部と同じ値の上位ビット部が前記レジスタ部に保持されていない場合には、前記分割した上位ビット部を前記レジスタ部内のレジスタに書き込み、前記書き込んだレジスタの識別子を前記状態テーブルに書き込むことを特徴とする請求項１記載の処理装置。
【請求項３】
前記制御部は、前記上位ビット部が書き込まれているレジスタに対して前記分割した上位ビット部を上書きする場合には、前記状態テーブル内の前記上書きされたレジスタの識別子を無効にすることを特徴とする請求項２記載の処理装置。
【請求項４】
前記制御部は、前記分割した上位ビット部と同じ値の上位ビット部が前記レジスタに保持されていない場合には、前記分割した上位ビット部を最も更新履歴の古いレジスタに上書きすることを特徴とする請求項３記載の処理装置。
【請求項５】
前記制御部は、前記分割した上位ビット部と同じ値の上位ビット部が前記レジスタに保持されていない場合には、前記分割した上位ビット部を最も更新履歴の新しいレジスタに上書きすることを特徴とする請求項３記載の処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理装置に関する。
【背景技術】
【０００２】
演算パイプライン構成をとるプロセッサのデバッグ時において、例外などの特殊な現象が発生した場合に、どの命令でそれが発生したのかを知る必要がある。そのため、演算パイプライン構成をとるプロセッサにおいて、例外などの特殊な現象が発生した箇所を特定するためには演算パイプラインのステージ数分のプログラムカウンタ値を記憶する必要がある。
【０００３】
しかし、演算パイプラインのステージ数及び演算パイプラインの並列度が小さい場合はあまり気にならないが、これらが増えるとそれに比例して、プログラムカウンタ値の記憶容量が増加する。しかも、プログラムカウンタ値を記憶させるレジスタがほぼ常に動作するため消費電力も大きくなる。
【０００４】
また、アドレスの供給前に供給された複数のアドレスをそれぞれ２分割した内の上位アドレスである第２の上位アドレスを保持する第２のアドレスレジスタと、第１のアドレスレジスタ内に格納されたアドレスをそれぞれ２分割した内の上位アドレスである第１の上位アドレスと複数の前記第２の上位アドレスとをそれぞれ比較する比較手段とを有する集積回路が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３６６５３４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、特殊信号が発生した際にプログラムカウンタ値を出力する処理装置であって、プログラムカウンタ値の記憶容量を削減することができる処理装置を提供することである。
【課題を解決するための手段】
【０００７】
処理装置は、プログラムカウンタ値の上位ビット部を保持するためのレジスタ部と、プログラムカウンタ値のアドレスの命令が命令メモリから読み出されると、前記読み出された命令に対応するプログラムカウンタ値を上位ビット部及び下位ビット部に分割し、前記プログラムカウンタ値の前記上位ビット部を前記レジスタ部に書き込み、前記読み出された命令とそれに対応する前記プログラムカウンタ値の前記下位ビット部との組みを後段に伝播させる制御部と、前記読み出された命令に対して複数ステージのパイプライン処理を行い、前記読み出された命令の情報とその命令に対応する前記プログラムカウンタ値の前記下位ビット部との組みを各ステージに伝播させる演算パイプラインとを有し、前記制御部は、前記演算パイプラインで前記読み出された命令の処理による特殊信号が発生すると、その命令に対応する前記プログラムカウンタ値の前記下位ビット部と前記レジスタ部内の前記プログラムカウンタ値の前記上位ビット部とを結合させて出力する。
【発明の効果】
【０００８】
プログラムカウンタ値のアドレスは上位ビット部が同じ値であることが多いので、プログラムカウンタ値の上位ビット部をレジスタ部に保持させることにより、プログラムカウンタ値の下位ビット部の伝播容量（記憶容量）を削減することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態による処理システムの構成例を示すブロック図である。
【図２】第１の実施形態による他の処理システムの構成例を示すブロック図である。
【図３】第１の実施形態によるプロセッサ（処理装置）の構成例を示す図である。
【図４】第２の実施形態によるプロセッサの処理方法を示すフローチャートである。
【図５】第２の実施形態によるプロセッサの構成例を示す図である。
【図６】第３の実施形態によるプロセッサの処理方法を示すフローチャートである。
【図７】状態テーブルの構成例を示す図である。
【図８】第３の実施形態によるステートマシンの例を示す状態遷移図である。
【図９】ステートマシンの動作例を示す図である。
【図１０】第３の実施形態によるプロセッサの構成例を示す図である。
【図１１】第４の実施形態によるステートマシンの例を示す状態遷移図である。
【図１２】ステートマシンの動作例を示す図である。
【図１３】第５の実施形態によるステートマシンの例を示す状態遷移図である。
【図１４】図１４（Ａ）及び（Ｂ）は第６の実施形態によるステートマシンの例を示す図である。
【図１５】第７の実施形態によるプロセッサの処理方法を示すフローチャートである。
【図１６】第７の実施形態によるプロセッサの構成例を示す図である。
【発明を実施するための形態】
【００１０】
（第１の実施形態）
図１は、第１の実施形態による処理システムの構成例を示すブロック図である。処理システムは、バス１００、プロセッサ１０１、メモリ１０２、周辺回路１０３、インターフェース１０４及びホストマシン１０５を有する。バス１００には、プロセッサ１０１、メモリ１０２、周辺回路１０３及びインターフェース１０４が接続される。プロセッサ１０１は、プログラムカウンタが示すアドレスの命令をメモリ１０２から順次読み出し、読み出した命令を実行する。そして、プロセッサ１０１は、命令の実行によりオーバーフロー、アンダーフロー又は０除算等の例外処理（特殊処理）が発生すると、例外信号（特殊信号）１１１をインターフェース１０４を介してホストマシン１０５に出力する。例外信号１１１は、例外信号１１１が発生した命令に対応するプログラムカウンタ値を含む。なお、信号１１１は、例外信号に限定されず、例外等の特殊な現象が発生した場合の特殊信号であってもよい。プログラムカウンタは、現在、プロセッサ１０１が読み出して実行している命令のアドレスをプログラムカウンタ値として記憶している。したがって、プログラムカウンタ値は、読み出された命令のアドレスに対応する。ホストマシン１０５は、例外信号１１１を入力すると、例外信号１１１内のプログラムカウンタ値を基に例外信号１１１が発生した命令を特定することができ、例外解析処理等を行うことができる。
【００１１】
図２は、第１の実施形態による他の処理システムの構成例を示すブロック図である。処理システムは、評価用ボード２００及びデバッグ用パーソナルコンピュータ２０２を有する。評価用ボード２００は、バス１００、プロセッサ１０１、メモリ１０２、周辺回路１０３及びデバッガインターフェース２０１を有する。バス１００には、プロセッサ１０１、メモリ１０２、周辺回路１０３及びデバッガインターフェース２０１が接続される。プロセッサ１０１及びメモリ１０２は、図１と同様である。プロセッサ１０１は、命令の実行によりオーバーフロー、アンダーフロー又は０除算等の例外処理が発生すると、例外信号１１１をデバッガインターフェース２０１を介してデバッグ用パーソナルコンピュータ２０２に出力する。例外信号１１１は、例外信号１１１が発生した命令に対応するプログラムカウンタ値、例外フラグ、異常フラグ、状態フラグを含む。デバッグ用パーソナルコンピュータ２０２は、例外信号１１１を入力すると、例外信号１１１内のプログラムカウンタ値を基に例外信号１１１が発生した命令を特定することができ、例外解析処理等を行うことができる。具体的には、デバッグ用パーソナルコンピュータ２０２は、プロセッサ１０１を使ってメモリ１０２内のプログラム（命令群）をデバッグすることができる。プロセッサ１０１は、プログラムのバグを検知し、例外フラグ、異常フラグ、状態フラグ、及びプログラムカウンタ値を含む例外信号１１１をデバッガインターフェース２０１を介してデバッグ用パーソナルコンピュータ２０２に出力する。
【００１２】
図３は、第１の実施形態によるプロセッサ（処理装置）１０１の構成例を示す図である。命令メモリ３１１は、図１及び図２のメモリ１０２に対応し、命令群を記憶するためのメモリである。データメモリ３１３は、図１及び図２のメモリ１０２に対応し、データを記憶するためのメモリである。プロセッサ１０１は、フェッチステージ３０１、デコードステージ３０２、レジスタリードステージ３０３、演算処理ステージ３０４、メモリアクセスステージ３０５及びライトバックステージ３０６の演算パイプラインを有し、複数ステージのパイプライン処理を行う。０番レジスタ３２０及び１番レジスタ３２１は、それぞれプログラムカウンタ値の上位ビット部を保持するためのレジスタである。
【００１３】
プロセッサ１０１は、フェッチステージ３０１では、プログラムカウンタのプログラムカウンタ値３３０のアドレスの命令３３３を命令メモリ３１１から読み出してフェッチする。この際、プロセッサ１０１は、読み出した命令３３３に対応するプログラムカウンタ値３３０を上位ビット部３３１及び下位ビット部３３２に分割し、上位ビット部３３１を０番レジスタ３２０又は１番レジスタ３２１に書き込む。例えば、プログラムカウンタ値３３０は３２ビットであり、上位ビット部３３１は１６ビットであり、下位ビット部３３２は１６ビットである。次に、プロセッサ１０１は、命令３３３、レジスタ番号（レジスタ識別子）３３４、下位ビット部３３２を後段のデコードステージ３０２に伝播させる。レジスタ番号３３４は、命令３３３に対応するプログラムカウンタ値３３０の上位ビット部３３１が書き込まれたレジスタの番号である。例えば、命令３３３に対応する上位ビット部３３１が０番レジスタ３２０に書き込まれた場合には、レジスタ番号３３４は０番である。次に、プロセッサ１０１は、デコードステージ３０２では、命令３３３をデコードし、命令３３３内のオペランド情報、レジスタ番号３３４及び下位ビット部３３２を後段のレジスタリードステージ３０３に伝播させる。次に、プロセッサ１０１は、レジスタリードステージ３０３では、オペランド情報を基に汎用レジスタ３１２の値を読み出し、汎用レジスタ３１２の値、命令３３３の演算情報（オペコード情報）、レジスタ番号３３４及び下位ビット部３３２を後段の演算処理ステージ３０４に伝播させる。
【００１４】
次に、プロセッサ１０１は、演算処理ステージ３０４では、演算情報及び汎用レジスタ３１２の値を基に演算を行う。この際、プロセッサ１０１は、演算によりオーバーフロー、アンダーフロー又は０除算等の例外処理（特殊処理）を検出すると、例外信号（特殊信号）を発生する。プロセッサ１０１は、例外信号が発生した命令３３３に対応するレジスタ番号３３４が示すレジスタ３２０又は３２１から上位ビット部３３１を読み出し、上位ビット部３３１を加算器３４１に出力する。例えば、プロセッサ１０１は、レジスタ番号３３４が０番である場合には、０番レジスタ３２０から上位ビット部３３１を読み出す。また、プロセッサ１０１は、例外信号が発生した命令３３３に対応するプログラムカウンタ値の下位ビット部３３２を加算器３４１に出力する。加算器３４１は、上位ビット部３３１と下位ビット部３３２とを結合し、３２ビットのプログラムカウンタ値３３０を出力する。次に、プロセッサ１０１は、プログラムカウンタ値３３０及び例外内容を含む例外信号（特殊信号）１１１を外部に出力する。
【００１５】
次に、プロセッサ１０１は、メモリアクセスステージ３０５では、上記の演算の結果に応じて、データメモリ３１３にアクセスを行う。次に、プロセッサ１０１は、ライトバックステージ３０６では、上記の演算の結果に応じて、汎用レジスタ３１２に値を書き込む。
【００１６】
以上で、演算パイプラインの一連の処理が終了する。演算パイプラインでは、フェッチステージ３０１で、命令がフェッチされる毎にプログラムカウンタのプログラムカウンタ値が更新され、次の命令がフェッチされ、次の命令のパイプライン処理が連続的に行われる。
【００１７】
プロセッサ１０１は、通常、命令メモリ３１１内の命令をアドレス順に順次読み出して実行し、分岐命令等の際に指定のアドレスの命令にジャンプする。したがって、プログラムカウンタのプログラムカウンタ値は、アドレス順に増加する場合が多い。すなわち、通常、プログラムカウンタ値の上位ビット部３３１は変わらずに、下位ビット部３３２のみが変わる。上位ビット部３３１が変わらない場合には、その上位ビット部３３１をレジスタ３２０又は３２１に新たに書き込む必要がなく、同じ上位ビット部３３１が書き込まれているレジスタ３２０又は３２１の番号をレジスタ番号３３４として各ステージを伝播させればよい。
【００１８】
例えば、最初の上位ビット部３３１が０番レジスタ３２０が書き込まれた場合の例を説明する。２番目の命令３３３に対応する上位ビット部３３１と同じ値の上位ビット部が既に０番レジスタ３２０に書き込まれている場合には、その上位ビット部３３１をレジスタ３２０又は３２１に新たに書き込まずに、０番のレジスタ番号３３４を後段に伝播させる。これにより、共通の上位ビット部３３１は、０番レジスタ３２０にのみ書き込まれており、下位ビット部３３２のみを伝播させればよいので、３２ビットのプログラムカウンタ値３３０のすべてを伝播させる場合に比べて、伝播容量（記憶容量）を小さくし、消費電力を小さくすることができる。
【００１９】
（第２の実施形態）
図５は、第２の実施形態によるプロセッサ（処理装置）１０１の構成例を示す図である。以下、本実施形態が第１の実施形態と異なる点を説明する。フェッチステージ３０１は、例えば８段のファーストインファーストアウト（キュー）ＦＩＦＯ０〜ＦＩＦＯ７を有する。フェッチステージ３０１には、フェッチしてからデコードステージ３０２でデコードするまでにファーストインファーストアウトＦＩＦＯ０〜ＦＩＦＯ７があり、後段の演算パイプラインへの命令の供給が滞ったり、詰まったりしないようにしている。レジスタ部５００は、複数のプログラムカウンタ値の上位ビット部３３１を保持するための０番レジスタ３２０、１番レジスタ３２１、２番レジスタ３２２及び３番レジスタ３２３を有する。プログラムカウンタ制御部５０１、比較部５０２及び出力生成部５０４は、制御部を構成する。
【００２０】
レジスタリードステージ３０３、演算処理ステージ３０４、メモリアクセスステージ３０５及びライトバックステージ３０６は、並列の複数パイプライン部５０５により構成される。複数のパイプライン部５０５は、それぞれ、レジスタリードステージ３０３、演算処理ステージ３０４、メモリアクセスステージ３０５及びライトバックステージ３０６を有し、並列処理可能である。プロセッサ１０１は、演算用の複数のパイプライン部５０５を有し、デコードステージ３０２でリソースの競合を確認しながら複数のパイプライン部５０５のいずれかに命令を発行していく。
【００２１】
プロセッサ１０１は、フェッチステージ３０１では、プログラムカウンタのプログラムカウンタ値３３０のアドレスの命令３３３を命令メモリ３１１から読み出してファーストインファーストアウトＦＩＦＯ０にフェッチする。プログラムカウンタ制御部５０１は、読み出した命令３３３に対応するプログラムカウンタ値３３０を上位ビット部３３１及び下位ビット部３３２に分割する。
【００２２】
比較部５０２は、プログラムカウンタ制御部５０１により分割された上位ビット部３３１とレジスタ部５００内のレジスタ３２０〜３２３に保持されている上位ビット部とを比較し、比較結果をプログラムカウンタ制御部５０１及び状態テーブル５０３に出力する。
【００２３】
図７は、状態テーブル５０３の構成例を示す図である。状態テーブル５０３は、フェッチステージ３０１のファーストインファーストアウトＦＩＦＯ０〜ＦＩＦＯ７、デコードステージ（ＤＥＣ）３０２、レジスタリードステージ（ＲＲ）３０３及び演算処理ステージ（ＥＸＥ）３０４について、それぞれ選択レジスタ番号７０１及び有効フラグ７０２を保持する。デコードステージ（ＤＥＣ）３０２、レジスタリードステージ（ＲＲ）３０３及び演算処理ステージ（ＥＸＥ）３０４については、複数のパイプライン部５０５毎に、選択レジスタ番号７０１及び有効フラグ７０２が保持される。選択レジスタ番号７０１は、図３のレジスタ番号３３４に対応し、レジスタ３２０〜３２３のうちの上位ビット部３３１が保持されているレジスタの番号である。有効フラグ７０２は、選択レジスタ番号７０１が有効か否かを示すフラグである。状態テーブル５０３は、現在、どのステージのどのパイプライン部５０５でどの選択レジスタ番号７０１が使われているかを管理し、命令３３３の進行に合わせて更新される。
【００２４】
図５において、プログラムカウンタ制御部５０１により分割された上位ビット部３３１がレジスタ３２０〜３２３の上位ビット部のいずれとも異なる場合には、比較部５０２が不一致の信号を出力する。その場合、プログラムカウンタ制御部５０１は、分割した上位ビット部３３１をレジスタ３２０〜３２３の中の空いているレジスタに書き込み、状態テーブル５０３にＦＩＦＯ１の選択レジスタ番号７０１及び有効フラグ７０２を書き込む。選択レジスタ番号７０１は、レジスタ３２０〜３２３のうちの上位ビット部３３１が書き込まれたレジスタの番号に書き込まれる。例えば、上位ビット部３３１が０番レジスタ３２０に書き込まれた場合には、選択レジスタ番号７０１として０番が書き込まれる。その選択レジスタ番号７０１を有効にするため、有効フラグ７０１には有効である旨が書き込まれる。
【００２５】
なお、分割した上位ビット部３３１を書き込む際に、レジスタ３２０〜３２３の中に空いているレジスタがない場合には、プログラムカウンタ制御部５０１は、分割した上位ビット部３３１をレジスタ３２０〜３２３の中のいずれかのレジスタに上書きし、上記と同様に、状態テーブル５０３にＦＩＦＯ１の選択レジスタ番号７０１及び有効フラグ７０２を書き込む。さらに、プログラムカウンタ制御部５０１は、上記の上書きにより消去された上位ビット部３３１を無効にするため、状態テーブル５０３の中でＦＩＦＯ１以外のものの選択レジスタ番号７０１が上書きされたレジスタの番号になっているものの有効フラグ７０２を無効にする。
【００２６】
また、プログラムカウンタ制御部５０１により分割された上位ビット部３３１がレジスタ３２０〜３２３の上位ビット部のいずれかと同じ場合には、比較部５０２が一致の信号を出力する。その場合、プログラムカウンタ制御部５０１は、分割した上位ビット部３３１をレジスタ部５００に書き込まず、状態テーブル５０３にＦＩＦＯ１の選択レジスタ番号７０１及び有効フラグ７０２を書き込む。選択レジスタ番号７０１は、レジスタ３２０〜３２３のうちの上位ビット部３３１が一致したレジスタの番号になる。例えば、上位ビット部３３１が０番レジスタ３２０のものと一致した場合には、選択レジスタ番号７０１として０番が書き込まれる。そして、その選択レジスタ番号７０１を有効にするため、有効フラグ７０１には有効である旨が書き込まれる。
【００２７】
次に、プログラムカウンタ制御部５０１は、ファーストインファーストアウトＦＩＦＯ０の命令３３３がファーストインファーストアウトＦＩＦＯ１に伝播されると共に、分割した下位ビット部３３２及び選択レジスタ番号７０１をファーストインファーストアウトＦＩＦＯ１に伝播させる。これにより、ファーストインファーストアウトＦＩＦＯ１には、命令３３３、選択レジスタ番号７０１及び下位ビット部３３２が記憶される。
【００２８】
その後、パイライン処理により、ファーストインファーストアウトＦＩＦＯ１内の命令３３３、選択レジスタ番号７０１及び下位ビット部３３２の組みは、後段に伝播される。すなわち、命令３３３、選択レジスタ番号７０１及び下位ビット部３３２の組みは、ＦＩＦＯ１、ＦＩＦＯ２、ＦＩＦＯ３、ＦＩＦＯ４、ＦＩＦＯ５、ＦＩＦＯ６、ＦＩＦＯ７、デコードステージ３０２、レジスタリードステージ３０３、演算処理ステージ３０４、メモリアクセスステージ３０５、ライトバックステージ３０６の順に伝播される。それに伴い、プログラムカウンタ制御部５０１は、状態テーブル５０３の内容を更新する。例えば、ＦＩＦＯ１の命令３３３、選択レジスタ番号７０１及び下位ビット部３３２がＦＩＦＯ２に伝播されると、ＦＩＦＯ１の選択レジスタ番号７０１及び有効フラグ７０２はＦＩＦＯ２の選択レジスタ番号７０１及び有効フラグ７０２に書き込まれる。
【００２９】
プロセッサ１０１は、演算処理ステージ３０４では、演算を行う。この際、プロセッサ１０１は、演算によりオーバーフロー、アンダーフロー又は０除算等の例外処理を検出すると、例外信号を発生する。すると、出力生成部５０４は、状態テーブル５０３を参照し、例外信号が発生した命令３３３に対応するパイプライン部５０５の演算処理ステージ（ＥＸＥ）３０４の選択レジスタ番号７０１及び有効フラグ７０２を読み出す。次に、出力生成部５０４は、読み出した選択レジスタ番号７０１が示すレジスタ３２０〜３２３の中のいずれかから上位ビット部３３１を読み出す。また、出力生成部５０４は、例外信号が発生した命令３３３に対応するパイプライン部５０５の演算処理ステージ３０４から下位ビット部３３２を読み出す。次に、出力生成部５０４は、読み出した上位ビット部３３１と下位ビット部３３２とを結合し、３２ビットのプログラムカウンタ値３３０を生成する。次に、出力生成部５０４は、例外が発生したことを示す例外フラグ、生成した３２ビットのプログラムカウンタ値３３０、読み出した有効フラグ７０２を含む例外信号１１１を外部に出力する。有効フラグ７０２が有効を示すときにはプログラムカウンタ値３３０は有効であり、有効フラグ７０２が無効を示すときにはプログラムカウンタ値３３０は無効である。
【００３０】
図４は、第２の実施形態によるプロセッサ１０１の処理方法を示すフローチャートである。ステップＳ４０１で、プロセッサ１０１の処理が開始される。ステップＳ４０２では、プロセッサ１０１は、例外信号が発生したか否かをチェックする。例えば、演算処理ステージ３０４で例外処理が行われると、例外信号が発生する。例外信号が発生していなければステップＳ４０５へ進み、例外信号が発生していればステップＳ４０３へ進む。
【００３１】
ステップＳ４０５では、プログラムカウンタ制御部５０１は、フェッチステージ３０１で命令３３３をフェッチすると、プログラムカウンタ値３３０を上位ビット部３３１及び下位ビット部３３２に分割する。そして、プログラムカウンタ制御部５０１は、分割した上位ビット部３３１がレジスタ部５００に保持されていない場合には、上位ビット部３３１をレジスタ部５００に書き込み、書き込んだレジスタの番号を選択レジスタ番号７０１として状態テーブル５０３内で伝播させ、選択レジスタ番号７０１及び下位ビット部３３２を命令３３３と共にステージ上で伝播させる。また、プログラムカウンタ制御部５０１は、分割した上位ビット部３３１がレジスタ部５００に保持されている場合には、上位ビット部３３１をレジスタ部５００に書き込まず、保持されているレジスタの番号を示す選択レジスタ番号７０１及び下位ビット部３３２を命令３３３と共にステージ上で伝播させる。その後、ステップＳ４０１に戻る。
【００３２】
ステップＳ４０３では、出力生成部５０４は、状態テーブル５０３を参照し、例外信号が発生した命令３３３に対応する選択レジスタ番号７０１が示す番号のレジスタから上位ビット部３３１を読み出す。
【００３３】
次に、ステップＳ４０４では、出力生成部５０４は、伝播してきた下位ビット部３３２と上記の読み出した上位ビット部３３１を結合し、結合したプログラムカウンタ値３３０及び有効フラグ７０２を含む例外信号１１１を外部に出力する。その後、上記のステップＳ４０５に進む。
【００３４】
なお、上記の説明では、例外が発生した場合に例外信号を出力する場合を例に説明したが、例外信号に限定されず、例外等の特殊な現象が発生した場合の特殊信号に適用することができる。また、レジスタ部５００内のレジスタ数が多い場合には、有効フラグ７０２を削除してもよい。
【００３５】
本実施形態は、プログラムカウンタのプログラムカウンタ値３３０が、多くの場合、連続した値で変化するため、上位ビット部３３１の値の変化は少ないことに着目している。同じ上位ビット部３３１は、レジスタ部５００に共通で保持させ、下位ビット部３３２を命令３３３と共に伝播させる。これにより、プログラムカウンタ値の下位ビット部３３２の伝播容量（記憶容量）を削減することができ、消費電力を低減することができる。
【００３６】
（第３の実施形態）
図１０は、第３の実施形態によるプロセッサ（処理装置）１０１の構成例を示す図である。図１０のプロセッサ１０１は、図５のプロセッサ１０１に対して、選択用ステートマシン１００１を追加したものである。以下、本実施形態が第２の実施形態と異なる点を説明する。比較部５０２は、プログラムカウンタ制御部５０１により分割された上位ビット部３３１がレジスタ３２０〜３２３のいずれとも一致しなかった場合に不一致信号を出力する。選択用ステートマシン１００１は、不一致信号を入力すると、最も更新履歴の古いレジスタを検出する。すると、プログラムカウンタ制御部５０１は、上記の分割した上位ビット部３３１を最も更新履歴の古いレジスタに上書きし、状態テーブル５０３において、上書きされたレジスタを示す選択レジスタ番号７０１の有効フラグ７０２をすべて無効にする。
【００３７】
図８は、第３の実施形態によるステートマシン１００１の例を示す状態遷移図である。ステートマシン１００１は、最も更新履歴の古いレジスタを検出する。ここでは、レジスタ部５００が４個のレジスタ３２０〜３２３を有する場合を例に説明する。ステートマシン１００１の深さは４としているが、さらに深くても浅くてもよい。浅いと履歴の順位付けがあいまいになり、深いと履歴の順位付けがより厳密になるが動作や処理が増加して複雑化する。ステートマシン１００１は、レジスタ３２０〜３２３の数分存在し、０が最も古く、３が最も新しいとする。０番用ステートマシン〜３番用ステートマシンは、それぞれ０番レジスタ３２０〜３番レジスタ３２３に対応する。図８の状態では、０番用ステートマシンはステートが０であって最も古く、３番用ステートマシンはステートが３であって最も新しい。ステートマシン１００１は、比較部５０２の比較により一致したレジスタ番号を得て動作する。もし一致した場合には、一致したレジスタ番号のステートマシンのステート（状態）を最新の３にし、他のステートマシンのステートを−１する。もしすべて不一致だった場合には、ステートが０の最古のステートマシンを更新するレジスタとしてステートを最新の３にし、他のステートマシンのステートを−１する。ただし、ステートが０のときは０のままとする。もし同一順位でステート０のステートマシンが複数あった場合には、若い番号を選択する。これは古い番号でもよい。
【００３８】
図９は、ステートマシン１００１の動作例を示す図である。初期状態は３番用ステートマシンが最新である。ここで、３番レジスタの一致信号が入力されると、３番用ステートマシンはステートを最新の３にし、他のステートマシンはステートを−１する。次に、１番レジスタが一致した場合には、１番用ステートマシンのステートを３にし、他のステートマシンのステートを−１する。次に、すべて不一致状態になった場合、０番用ステートマシン及び２番用ステートマシンがステート０となっている。同一順位時は若い番号を選択するので、０番用ステートマシンを選択し、０番用ステートマシンのステートを最新の３にし、他のステートマシンのステートを−１する。このように動作することで、最も古い更新履歴を選択することができる。また、同一順位になる可能性はステートマシンの深さを深くすれば減り、浅くすれば増える。同一順位になったことによる誤差は生じる。
【００３９】
図６は、第３の実施形態によるプロセッサ１０１の処理方法を示すフローチャートである。ステップＳ６０１で、プロセッサ１０１の処理が開始される。ステップＳ６０２では、プロセッサ１０１は、例外信号が発生したか否かをチェックする。例えば、演算処理ステージ３０４で例外処理が行われると、例外信号が発生する。例外信号が発生していなければステップＳ６０６へ進み、例外信号が発生していればステップＳ６０３へ進む。
【００４０】
ステップＳ６０３では、出力生成部５０４は、状態テーブル５０３を参照し、例外信号が発生したパイプライン部５０５及びステージ位置を基に選択レジスタ番号７０１及び有効フラグ７０２を取得する。
【００４１】
次に、ステップＳ６０４では、出力生成部５０４は、取得した選択レジスタ番号７０１が示すレジスタから上位ビット部３３１を取得し、例外信号が発生した命令３３３に対応する下位ビット部３３２と上記の取得した上位ビット部３３１を結合し、３２ビットのプログラムカウンタ値３３０を生成する。
【００４２】
次に、ステップＳ６０５では、例外発生を示す例外フラグ、上記の生成したプログラムカウンタ値３３０及び有効フラグ７０２を含む例外信号１１１を外部に出力する。その後、ステップＳ６０６へ進む。
【００４３】
ステップＳ６０６では、プログラムカウンタ制御部５０１は、命令３３３の進行にあわせて状態テーブル５０３の内容を更新する。具体的には、命令３３３が消化されると、ＦＩＦＯ１に空きができる。パイプライン処理により、命令３３３、選択レジスタ番号７０１及び下位ビット部３３２がステージ上を伝播すると、それに合わせて、状態テーブル５０３内の選択レジスタ番号７０１及び有効フラグ７０２を伝播させる。
【００４４】
次に、ステップＳ６０７では、プログラムカウンタ制御部５０１は、フェッチステージ３０１で命令３３３をフェッチすると、プログラムカウンタ値３３０を上位ビット部３３１及び下位ビット部３３２に分割する。そして、プログラムカウンタ制御部５０１は、上位ビット部３３１を比較部５０２に出力する。
【００４５】
次に、ステップＳ６０８では、比較部５０２は、上位ビット部３３１とレジスタ３２０〜３２３の値とを比較し、一致信号又は不一致信号を出力する。レジスタ３２０〜３２３のうちのいずれかと一致した場合にはステップＳ６０９へ進み、いずれとも一致しない場合にはステップＳ６１１へ進む。
【００４６】
ステップＳ６０９では、プログラムカウンタ制御部５０１は、一致信号及び一致したレジスタ番号を比較部５０２から入力すると、一致したレジスタ番号を選択レジスタ番号７０１として状態テーブル５０３に書き込み、有効フラグ７０２を有効にする。そして、プログラムカウンタ制御部５０１は、選択レジスタ番号７０１及び下位ビット部３３２を命令３３３と共に後段に伝播させる。
【００４７】
次に、ステップＳ６１０では、ステートマシン１００１は、一致信号及び一致したレジスタ番号を比較部５０２から入力すると、一致したレジスタ番号に対応するステートマシンのステートを最新の３にし、その他のステートマシンのステートを１下げる。その後、ステップＳ６０１に戻る。
【００４８】
ステップＳ６１１では、ステートマシン１００１は、不一致信号を比較部５０２から入力すると、最も更新履歴の古いステート０のレジスタ番号を更新レジスタ番号として出力し、そのレジスタ番号のステートマシンのステートを最新の３にし、その他のステートマシンのステートを１下げる。
【００４９】
次に、ステップＳ６１２では、プログラムカウンタ制御部５０１は、分割した上位ビット部３３１を更新レジスタ番号のレジスタに書き込む。そして、プログラムカウンタ制御部５０１は、書き込んだレジスタのレジスタ番号を選択レジスタ番号７０１として状態テーブル５０３に書き込み、有効フラグ７０２を有効にする。そして、プログラムカウンタ制御部５０１は、選択レジスタ番号７０１及び下位ビット部３３２を命令３３３と共に後段に伝播させる。
【００５０】
次に、ステップＳ６１３では、プログラムカウンタ制御部５０１は、状態テーブル５０３において、上記の書き込んだレジスタの選択レジスタ番号７０１で伝播中の有効フラグ７０２を無効にする。その後、ステップＳ６０１に戻る。以上の処理を、命令３３３が進行される毎に繰り返す。
【００５１】
本実施形態では、プログラムカウンタ制御部５０１は、分割した上位ビット部３３１と同じ値の上位ビット部がレジスタ３２０〜３２３に保持されていない場合には、分割した上位ビット部３３１を最も更新履歴の古いレジスタに上書きする。
【００５２】
（第４の実施形態）
図１１は、第４の実施形態によるステートマシン１００１の例を示す状態遷移図である。本実施形態は、第３の実施形態に対して、ステートマシン１００１の状態遷移が異なる。以下、本実施形態が第３の実施形態と異なる点を説明する。ステートマシン１００１は、最も更新履歴の新しいレジスタを次回の更新レジスタとして検出する。ここでは、レジスタ部５００が４個のレジスタ３２０〜３２３を有する例を説明する。ステートマシン１００１の深さは２としている。０番用ステートマシン〜３番用ステートマシンは、それぞれ０番レジスタ３２０〜３番レジスタ３２３に対応する。ステートは、０が最も新しく、１がそれ以外である。図１１の状態では、０番用ステートマシンはステートが０であって最も新しく、それ以外のステートマシンはステートが１であって最新ではない。比較部５０２が一致信号を出力した場合には、一致したレジスタ番号のステートマシンのステートを最新の０にし、他のステートマシンのステートを＋１する。ただし、ステートが１のときは、ステートを＋１しても１のままとする。比較部５０２が不一致信号を出力した場合には、ステートが０のステートマシンを更新レジスタとし、そのステートマシンのステートを最新の０にし、他のステートマシンのステートを＋１する。もし同一順位でステート０のステートマシンが複数あった場合には、若い番号のステートマシンを選択する。これは古い番号でもよい。
【００５３】
図１２は、ステートマシン１００１の動作例を示す図である。初期状態では、０番用ステートマシンがステートが０であって最新である。次に、３番レジスタの一致信号が入力されると、３番用ステートマシンのステートを最新の０にし、他のステートマシンのステートを＋１する。次に、１番レジスタの一致信号が入力されると、１番用ステートマシンのステートを０にし、他のステートマシンのステートを＋１する。次に、不一致信号が入力されると、１番用ステートマシンのステートが０となっているため、１番レジスタを選択し、１番用ステートマシンのステートを最新の０にし、他のステートマシンのステートを＋１する。
【００５４】
本実施形態では、ステートマシン制御部５０１は、分割した上位ビット部３３１と同じ値の上位ビット部がレジスタ３２０〜３２３に保持されていない場合には、分割した上位ビット部３３１を最も更新履歴の新しいレジスタに上書きする。
【００５５】
（第５の実施形態）
図１３は、第５の実施形態によるステートマシン１００１の例を示す状態遷移図である。本実施形態は、第３の実施形態に対して、ステートマシン１００１の状態遷移が異なる。以下、本実施形態が第３の実施形態と異なる点を説明する。ステートマシン１００１は、次のレジスタ番号を順番に指定する。ステートマシンは１個であり、ステートの番号がレジスタ番号に対応し、４個のステートを有する。初期状態では、例えばステートマシンのステートは０であり、次回の更新レジスタは０番レジスタであることを示す。一致信号が入力されるとステートは維持され、不一致信号が入力されるとステートが＋１される。なお、不一致信号が入力された場合には、ステートを−１してもよい。すなわち、一致しなかった場合には、前回更新したレジスタ番号より大きなレジスタ番号又は小さなレジスタ番号の順に状態遷移する。なお、状態遷移の順番は、特定のレジスタ番号の順番でもよい。
【００５６】
本実施形態では、プログラムカウンタ制御部５０１は、分割した上位ビット部３３１と同じ値の上位ビット部がレジスタ３２０〜３２３に保持されていない場合には、分割した上位ビット部３３１を順序付けされたレジスタ３２０〜３２３に順番に上書きする。
【００５７】
（第６の実施形態）
図１４（Ａ）及び（Ｂ）は、第６の実施形態によるステートマシン１００１の例を示す図である。図１４（Ａ）は状態遷移図であり、図１４（Ｂ）はステート毎の優先度を示す図である。本実施形態は、第３の実施形態に対して、ステートマシン１００１の状態遷移が異なる。以下、本実施形態が第３の実施形態と異なる点を説明する。ステートマシン１００１は、ラウンドロビン方式によりレジスタ番号を選択する。ステートマシン１００１は、０〜３の４個のステートを有する。図１４（Ｂ）に示すように、ステート０では１番レジスタの優先度が最も高く、０番レジスタの優先度が最も低い。ステート１では、２番レジスタの優先度が最も高く、１番レジスタの優先度が最も低い。ステート２では、３番レジスタの優先度が最も高く、２番レジスタの優先度が最も低い。ステート３では、０番レジスタの優先度が最も高く、３番レジスタの優先度が最も低い。一致信号を入力した場合には、一致したレジスタ番号に対応したステートに遷移する。例えば、０番レジスタと一致した場合には、ステート０に遷移する。不一致信号を入力した場合には、現在のステートの最も優先度の高いレジスタ番号を更新レジスタ番号として選択する。例えば、現在のステートが０である場合には、最も優先度の高い１番レジスタを選択する。この場合、ステートは動かない。これにより、少なくともひとつ前に更新したレジスタとは異なるレジスタを更新することができる。本実施形態は、第３の実施形態を簡略化した形とも言える。
【００５８】
次に、動作例を説明する。初期状態のステートが０であるとする。次に、１番レジスタの一致信号が入力されると、ステートを１に遷移させ、１番レジスタが更新される。遷移したステート１では、更新された１番レジスタが最も優先度が低くなり、次に不一致が入力されたときには、２番レジスタが更新レジスタになる。このようにして、更新履歴の新しいレジスタの優先順位を下げ、更新履歴の古いレジスタを更新レジスタとして選択することができる。
【００５９】
本実施形態では、プログラムカウンタ制御部５０１は、分割した上位ビット部３３１と同じ値の上位ビット部がレジスタ３２０〜３２３に保持されていない場合には、分割した上位ビット部３３１をラウンドロビン方式により選択されたレジスタに上書きする。
【００６０】
（第７の実施形態）
図１６は、第７の実施形態によるプロセッサ（処理装置）１０１の構成例を示す図である。本実施形態は、第３〜第６の実施形態のステートマシン１００１を選択することができる。図１６のプロセッサ１０１は、図１０のプロセッサ１０１に対して、ステートマシン選択部１６０１を追加したものである。本実施形態は、第３〜第６の実施形態を組み合わせたものである。以下、本実施形態が第３〜第６の実施形態と異なる点を説明する。ステートマシン選択部１６０１は、ホストマシン１０５又はデバッグ用パーソナルコンピュータ２０２の指示に応じて、第３〜第６の実施形態のステートマシン１００１のいずれかを選択する。ステートマシン１００１は、ステートマシン選択部１６０１の選択に応じて、第３〜第６の実施形態のいずれかの動作を行う。
【００６１】
図１５は、第７の実施形態によるプロセッサ１０１の処理方法を示すフローチャートである。図１５は、図６に対して、ステップＳ１５０１及びＳ１５０２を追加したものである。以下、図１５が図６と異なる点を説明する。ステップＳ１５０１では、ステップＳ６０１の前に、ステートマシン選択部１６０１は、ホストマシン１０５又はデバッグ用パーソナルコンピュータ２０２の指示に応じて、第３〜第６の実施形態のステートマシン１００１のいずれかを選択する。その後、ステップＳ６０１の開始ステップに進む。ステップＳ１５０２では、ステップＳ６０６の後、ステートマシン１００１は、ステートマシン選択部１６０１から、第３〜第６の実施形態のいずれかの動作を行うための選択情報を読み込み、動作の設定を行う。その後、ステップＳ６０７以降へ進み、ステートマシン１００１は、第３〜第６の実施形態のうちのいずれかの選択された動作を行う。
【００６２】
本実施形態のステートマシン１００１は、第３〜第６の実施形態のステートマシン１００１のうちの少なくとも２個を有し、その中から選択することができる。すなわち、ステートマシン選択部１６０１は、第１の上書き方法（第３の実施形態）と、第２の上書き方法（第４の実施形態）と、第３の上書き方法（第５の実施形態）と、第４の上書き方法（第６の実施形態）のうちの少なくも２つの中から１つを選択する。
【００６３】
第１の上書き方法（第３の実施形態）は、分割した上位ビット部３３１と同じ値の上位ビット部がレジスタ３２０〜３２３に保持されていない場合には、分割した上位ビット部３３１を最も更新履歴の古いレジスタに上書きする方法である。第２の上書き方法（第４の実施形態）は、分割した上位ビット部３３１と同じ値の上位ビット部がレジスタ３２０〜３２３に保持されていない場合には、分割した上位ビット部３３１を最も更新履歴の新しいレジスタに上書きする方法である。第３の上書き方法（第５の実施形態）は、分割した上位ビット部３３１と同じ値の上位ビット部がレジスタ３２０〜３２３に保持されていない場合には、分割した上位ビット部３３１を順序付けされたレジスタ３２０〜３２３に順番に上書きする方法である。第４の上書き方法（第６の実施形態）は、分割した上位ビット部３３１と同じ値の上位ビット部がレジスタ３２０〜３２３に保持されていない場合には、分割した上位ビット部３３１をラウンドロビン方式により選択されたレジスタ３２０〜３２３に上書きする方法である。
【００６４】
プログラムカウンタ制御部５０１は、分割した上位ビット部３３１と同じ値の上位ビット部がレジスタ３２０〜３２３に保持されていない場合には、ステートマシン１００１の状態遷移に応じて、分割した上位ビット部３３１をステートマシン選択部１６０１により選択された上書き方法で上書きする。
【００６５】
以上のように、第１〜第７の実施形態において、プログラムカウンタ制御部５０１は、プログラムカウンタ値３３０のアドレスの命令３３３が命令メモリ３１１から読み出されると、読み出された命令３３３に対応するプログラムカウンタ値３３０を上位ビット部３３１及び下位ビット部３３２に分割し、プログラムカウンタ値の上位ビット部３３１をレジスタ部５００に書き込み、読み出された命令３３３とそれに対応するプログラムカウンタ値の下位ビット部３３２との組みを後段に伝播させる。
【００６６】
演算パイプラインは、フェッチステージ３０１〜ライトバックステージ３０６を有し、読み出された命令３３３に対して複数ステージのパイプライン処理を行い、読み出された命令３３３の情報とその命令３３３に対応するプログラムカウンタ値の下位ビット部３３２との組みを各ステージに伝播させる。
【００６７】
出力生成部５０４は、演算パイプラインで読み出された命令３３３の処理による例外信号（特殊信号）が発生すると、その命令３３３に対応するプログラムカウンタ値の下位ビット部３３２とレジスタ部５００内のプログラムカウンタ値の上位ビット部３３１とを結合させて出力する。
【００６８】
状態テーブル５０３は、演算パイプラインの各ステージの命令に対応するプログラムカウンタ値の上位ビット部３３１が保持されているレジスタ３２０〜３２３の番号（識別子）を選択レジスタ番号７０１として記憶する。
【００６９】
プログラムカウンタ制御部５０１は、分割した上位ビット部３３１と同じ値の上位ビット部がレジスタ３２０〜３２３に保持されている場合には、分割した上位ビット部３３１をレジスタ部５００に書き込まず、同じ値の上位ビット部が保持されているレジスタ３２０〜３２３の番号（識別子）を選択レジスタ番号７０１として状態テーブル５０３に書き込み、分割した上位ビット部３３１と同じ値の上位ビット部がレジスタ部５００に保持されていない場合には、分割した上位ビット部３３１をレジスタ部５００内のレジスタ３２０〜３２３のいずれかに書き込み、書き込んだレジスタ３２０〜３２３の番号（識別子）を選択レジスタ番号７０１として状態テーブル５０３に書き込む。
【００７０】
プログラムカウンタ制御部５０１は、上位ビット部が書き込まれているレジスタ３２０〜３２３に対して分割した上位ビット部３３１を上書きする場合には、状態テーブル５０３内の上書きされたレジスタ３２０〜３２３のレジスタ番号（識別子）７０１を有効フラグ７０２により無効にする。
【００７１】
第１〜第７の実施形態によれば、プログラムカウンタ値３３０のアドレスは上位ビット部３３１が同じ値であることが多いので、プログラムカウンタ値の上位ビット部３３１をレジスタ部５００に保持させることにより、プログラムカウンタ値の下位ビット部３３２の伝播容量（記憶容量）を削減することができる。
【００７２】
なお、第２〜第７の実施形態において、出力生成部５０４は、有効フラグ７０２が無効である場合には、例外信号（特殊信号）１１１内の上位ビット部３３１の値を特定値にして出力してもよい。特定値は、ホストマシン１０５又はデバッグ用パーソナルコンピュータ２０２により設定される値である。例えば、ホストマシン１０５又はデバッグ用パーソナルコンピュータ２０２は、無効の有効フラグ７０２を含む例外信号１１１を入力すると、上位ビット部３３１の特定値が示すアドレスの命令を実行することができる。すなわち、特定値は、例外処理の開始アドレスに設定することができる。
【００７３】
また、出力生成部５０４は、有効フラグ７０２が無効である場合には、レジスタ部５００内のすべてのレジスタ３２０〜３２３に保持されている上位ビット部を含む例外信号１１１を出力するようにしてもよい。ホストマシン１０５又はデバッグ用パーソナルコンピュータ２０２は、すべてのレジスタ３２０〜３２３に保持されている上位ビット部を含む例外信号１１１を入力すると、それらの上位ビット部を基に例外が発生したプログラムカウンタ値を類推することが可能となる。
【００７４】
上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００７５】
以上の実施形態に関し、さらに以下の付記を開示する。
【００７６】
（付記１）
プログラムカウンタ値の上位ビット部を保持するためのレジスタ部と、
プログラムカウンタ値のアドレスの命令が命令メモリから読み出されると、前記読み出された命令に対応するプログラムカウンタ値を上位ビット部及び下位ビット部に分割し、前記プログラムカウンタ値の前記上位ビット部を前記レジスタ部に書き込み、前記読み出された命令とそれに対応する前記プログラムカウンタ値の前記下位ビット部との組みを後段に伝播させる制御部と、
前記読み出された命令に対して複数ステージのパイプライン処理を行い、前記読み出された命令の情報とその命令に対応する前記プログラムカウンタ値の前記下位ビット部との組みを各ステージに伝播させる演算パイプラインとを有し、
前記制御部は、前記演算パイプラインで前記読み出された命令の処理による特殊信号が発生すると、その命令に対応する前記プログラムカウンタ値の前記下位ビット部と前記レジスタ部内の前記プログラムカウンタ値の前記上位ビット部とを結合させて出力することを特徴とする処理装置。
（付記２）
前記レジスタ部は、複数のプログラムカウンタ値の上位ビット部を保持するための複数のレジスタを有し、
さらに、前記演算パイプラインの各ステージの命令に対応するプログラムカウンタ値の上位ビット部が保持されているレジスタの識別子を記憶する状態テーブルを有し、
前記制御部は、前記分割した上位ビット部と同じ値の上位ビット部が前記レジスタに保持されている場合には、前記分割した上位ビット部を前記レジスタ部に書き込まず、前記同じ値の上位ビット部が保持されているレジスタの識別子を前記状態テーブルに書き込み、前記分割した上位ビット部と同じ値の上位ビット部が前記レジスタ部に保持されていない場合には、前記分割した上位ビット部を前記レジスタ部内のレジスタに書き込み、前記書き込んだレジスタの識別子を前記状態テーブルに書き込むことを特徴とする付記１記載の処理装置。
（付記３）
前記制御部は、前記上位ビット部が書き込まれているレジスタに対して前記分割した上位ビット部を上書きする場合には、前記状態テーブル内の前記上書きされたレジスタの識別子を無効にすることを特徴とする付記２記載の処理装置。
（付記４）
前記制御部は、前記分割した上位ビット部と同じ値の上位ビット部が前記レジスタに保持されていない場合には、前記分割した上位ビット部を最も更新履歴の古いレジスタに上書きすることを特徴とする付記３記載の処理装置。
（付記５）
前記制御部は、前記分割した上位ビット部と同じ値の上位ビット部が前記レジスタに保持されていない場合には、前記分割した上位ビット部を最も更新履歴の新しいレジスタに上書きすることを特徴とする付記３記載の処理装置。
（付記６）
前記制御部は、前記分割した上位ビット部と同じ値の上位ビット部が前記レジスタに保持されていない場合には、前記分割した上位ビット部を順序付けされたレジスタに順番に上書きすることを特徴とする付記３記載の処理装置。
（付記７）
前記制御部は、前記分割した上位ビット部と同じ値の上位ビット部が前記レジスタに保持されていない場合には、前記分割した上位ビット部をラウンドロビン方式により選択されたレジスタに上書きすることを特徴とする付記３記載の処理装置。
（付記８）
さらに、前記分割した上位ビット部と同じ値の上位ビット部が前記レジスタに保持されていない場合には、前記分割した上位ビット部を最も更新履歴の古いレジスタに上書きする第１の上書き方法と、前記分割した上位ビット部を最も更新履歴の新しいレジスタに上書きする第２の上書き方法と、前記分割した上位ビット部を順序付けされたレジスタに順番に上書きする第３の上書き方法と、前記分割した上位ビット部をラウンドロビン方式により選択されたレジスタに上書きする第４の上書き方法のうちの少なくも２つの中から１つを選択する選択部を有し、
前記制御部は、前記分割した上位ビット部と同じ値の上位ビット部が前記レジスタに保持されていない場合には、前記分割した上位ビット部を前記選択部により選択された上書き方法で上書きすることを特徴とする付記３記載の処理装置。
【符号の説明】
【００７７】
１１１  例外信号
３０１  フェッチステージ
３０２  デコードステージ
３０３  レジスタリードステージ
３０４  演算処理ステージ
３０５  メモリアクセスステージ
３０６  ライトバックステージ
３１１  命令メモリ
３１２  汎用レジスタ
３１３  データメモリ
３２０〜３２３  レジスタ
３３０  プログラムカウンタ値
３３１  上位ビット部
３３２  下位ビット部
３３３  命令
３４１  加算器
５００  レジスタ部
５０１  プログラムカウンタ制御部
５０２  比較部
５０３  状態テーブル
５０４  出力生成部
５０５  パイプライン部
１００１  選択用ステートマシン
１６０１  ステートマシン選択部
【図１】
0005678687.tif 000002
【図２】
0005678687.tif 000003
【図３】
0005678687.tif 000004
【図４】
0005678687.tif 000005
【図５】
0005678687.tif 000006
【図６】
0005678687.tif 000007
【図７】
0005678687.tif 000008
【図８】
0005678687.tif 000009
【図９】
0005678687.tif 000010
【図１０】
0005678687.tif 000011
【図１１】
0005678687.tif 000012
【図１２】
0005678687.tif 000013
【図１３】
0005678687.tif 000014
【図１４】
0005678687.tif 000015
【図１５】
0005678687.tif 000016
【図１６】
0005678687.tif 000017