(57)【特許請求の範囲】
【請求項１】
ソフトウェアによる読み書きが可能なソフトウェアビジブルレジスタ群を保持する記憶回路を備えた情報処理装置において、
ソフトウェア命令で指定されるソフトウェアビジブルレジスタの論理番号を前記記憶回路の物理番号にリネーミングするための物理番号群を保持するアクティブリストと、
ソフトウェア命令の切れ目毎に前記アクティブリストに保持された物理番号群がコピーされるシャドーリストと、
ソフトウェアビジブルレジスタの論理番号に前記記憶回路の物理番号を新規に割り付けるための物理番号群を保持し、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に対応する前記記憶回路の物理番号を前記アクティブリストから入力するとともに、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に新規に割り付ける前記記憶回路の物理番号を前記アクティブリストに出力するフリーリストと
を備えることを特徴とするエラー訂正制御回路。
【請求項２】
ソフトウェアによる読み書きが可能なソフトウェアビジブルレジスタ群を保持する記憶回路を備えた情報処理装置において、
ソフトウェア命令で指定されるソフトウェアビジブルレジスタの論理番号を前記記憶回路の物理番号にリネーミングするための物理番号群を保持するアクティブリストと、
ソフトウェア命令の切れ目毎に前記アクティブリストに保持された物理番号群がコピーされる第１のシャドーリストと、
ソフトウェアビジブルレジスタの論理番号に前記記憶回路の物理番号を新規に割り付けるための物理番号群を保持し、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に対応する前記記憶回路の物理番号を前記アクティブリストから入力するとともに、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に新規に割り付ける前記記憶回路の物理番号を前記アクティブリストに出力するフリーリストと、
ソフトウェア命令の切れ目毎に前記フリーリストに保持された物理番号群がコピーされる第２のシャドーリストと
を備えることを特徴とするエラー訂正制御回路。
【請求項３】
ソフトウェアビジブルレジスタ群を保持する記憶回路と、
ソフトウェア命令が設定される第１の命令レジスタと、
前記第１の命令レジスタに設定されたソフトウェア命令で指定されたソフトウェアビジブルレジスタの論理番号を前記記憶回路の物理番号にリネーミングするための物理番号群を保持するアクティブリストと、
前記第１の命令レジスタに設定されたソフトウェア命令で指定されたソフトウェアビジブルレジスタの論理番号を前記アクティブリストによりリネーミングされた物理番号で置き換えたソフトウェア命令が設定される第２の命令レジスタと、ソフトウェア命令の切れ目毎に前記アクティブリストに保持された物理番号群がコピーされるシャドーリストと、
ソフトウェアビジブルレジスタの論理番号に前記記憶回路の物理番号を新規に割り付けるための物理番号群を保持し、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に対応する前記記憶回路の物理番号を前記アクティブリストから入力するとともに、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に新規に割り付ける前記記憶回路の物理番号を前記アクティブリストに出力するフリーリストと
を備えることを特徴とするエラー訂正制御回路。
【請求項４】
ソフトウェアビジブルレジスタ群を保持する記憶回路と、
ソフトウェア命令が設定される第１の命令レジスタと、
前記第１の命令レジスタに設定されたソフトウェア命令で指定されたソフトウェアビジブルレジスタの論理番号を前記記憶回路の物理番号にリネーミングするための物理番号群を保持するアクティブリストと、
前記第１の命令レジスタに設定されたソフトウェア命令で指定されたソフトウェアビジブルレジスタの論理番号を前記アクティブリストによりリネーミングされた物理番号で置き換えたソフトウェア命令が設定される第２の命令レジスタと、ソフトウェア命令の切れ目毎に前記アクティブリストに保持された物理番号群がコピーされる第１のシャドーリストと、
ソフトウェアビジブルレジスタの論理番号に前記記憶回路の物理番号を新規に割り付けるための物理番号群を保持し、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に対応する前記記憶回路の物理番号を前記アクティブリストから入力するとともに、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に新規に割り付ける前記記憶回路の物理番号を前記アクティブリストに出力するフリーリストと、
ソフトウェア命令の切れ目毎に前記フリーリストに保持された物理番号群がコピーされる第２のシャドーリストと
を備えることを特徴とするエラー訂正制御回路。
【請求項５】
ソフトウェアビジブルレジスタ群を保持する記憶回路と、
ソフトウェア命令が設定される第１の命令レジスタと、
前記第１の命令レジスタに設定されたソフトウェア命令で指定されたソフトウェアビジブルレジスタの論理番号を前記記憶回路の物理番号にリネーミングするための物理番号群を保持するアクティブリストと、
前記第１の命令レジスタに設定されたソフトウェア命令で指定されたソフトウェアビジブルレジスタの論理番号を前記アクティブリストによりリネーミングされた物理番号で置き換えたソフトウェア命令が設定される第２の命令レジスタと、前記アクティブリストに保持された物理番号群がコピーされるシャドーリストと、
ソフトウェアビジブルレジスタの論理番号に前記記憶回路の物理番号を新規に割り付けるための物理番号群を保持し、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に対応する前記記憶回路の物理番号を前記アクティブリストから入力するとともに、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に新規に割り付ける前記記憶回路の物理番号を前記アクティブリストに出力するフリーリストと、
ソフトウェア命令の切れ目毎に前記アクティブリストに保持された物理番号群を前記シャドーリストにコピーさせる命令制御部と、
エラーを検出したときに前記シャドーリストにコピーされた物理番号群を前記アクティブリストに書き戻させる障害検出部と
を備えることを特徴とするエラー訂正制御回路。
【請求項６】
ソフトウェアビジブルレジスタ群を保持する記憶回路と、
ソフトウェア命令が設定される第１の命令レジスタと、
前記第１の命令レジスタに設定されたソフトウェア命令で指定されたソフトウェアビジブルレジスタの論理番号を前記記憶回路の物理番号にリネーミングするための物理番号群を保持するアクティブリストと、
前記第１の命令レジスタに設定されたソフトウェア命令で指定されたソフトウェアビジブルレジスタの論理番号を前記アクティブリストによりリネーミングされた物理番号で置き換えたソフトウェア命令が設定される第２の命令レジスタと、前記アクティブリストに保持された物理番号群がコピーされる第１のシャドーリストと、
ソフトウェアビジブルレジスタの論理番号に前記記憶回路の物理番号を新規に割り付けるための物理番号群を保持し、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に対応する前記記憶回路の物理番号を前記アクティブリストから入力するとともに、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に新規に割り付ける前記記憶回路の物理番号を前記アクティブリストに出力するフリーリストと、
前記フリーリストに保持された物理番号群がコピーされる第２のシャドーリストと、
ソフトウェア命令の切れ目毎に前記アクティブリストに保持された物理番号群を前記第１のシャドーリストにコピーさせるとともに前記フリーリストに保持された物理番号群を前記第２のシャドーリストにコピーさせる命令制御部と、
エラーを検出したときに前記第１のシャドーリストにコピーされた物理番号群を前記アクティブリストに書き戻させるとともに前記第２のシャドーリストにコピーされた物理番号群を前記フリーリストに書き戻させる障害検出部と
を備えることを特徴とするエラー訂正制御回路。
【請求項７】
前記記憶回路が、レジスタファイルであることを特徴とする請求項１ないし６のいずれかに記載のエラー訂正制御回路。
【請求項８】
前記フリーリストが、ＦＩＦＯバッファであることを特徴とする請求項１ないし６のいずれかに記載のエラー訂正制御回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はエラー訂正制御回路に関し、特にソフトウェアによる読み書きが可能（ソフトウェアビジブル）な記憶回路（レジスタファイル）を備えた情報処理装置におけるエラー訂正制御回路に関する。
【０００２】
【従来の技術】
一般に、情報処理装置において、演算処理装置（プロセッサ）内でエラーが検出された場合には、ハードウェアエラーの割り込みが発生し、マイクロプログラムあるいは診断装置によるエラー解析およびリトライ作業が行われる。
【０００３】
従来の情報処理装置におけるエラー処理の方法では、エラーが発生したデータをソフトウェアビジブルなレジスタファイルに書き込んでしまった場合には、ソフトウェア命令を溯ってエラーの発生しているレジスタファイルのアドレスに書き込みを行ったソフトウェア命令を再度実行しなければならなかった。
【０００４】
【発明が解決しようとする課題】
上述した従来の情報処理装置におけるエラー処理の方法では、エラーが発生したデータをレジスタファイルのソフトウェアビジブルレジスタに書き込んでしまった場合、ソフトウェア命令を溯ってエラーの発生しているレジスタファイルのアドレスに書き込みを行ったソフトウェア命令を再度実行しなければならなかったが、エラーが発生したレジスタファイルのアドレスに書き込んだデータを書き込む前のデータに戻すことはできないためにリトライ不可となり、リトライ率が低下するという問題点があった。
【０００５】
本発明の目的は、ソフトウェア命令で更新するソフトウェアビジブルレジスタ群をレジスタファイル内に保持することでソフトウェア命令の実行中にエラーが発生した場合に、ソフトウェアビジブルレジスタ群のレジスタ値をソフトウェア命令の開始時点における状態値に戻すことができ、リトライ率が向上するようにしたエラー訂正制御回路を提供することにある。
【０００６】
なお、先行技術文献として、特開平３−１０５６３０号公報がある。この公報に開示されたエラー訂正システムは、２重化されているレジスタファイルのうちの１つのレジスタファイルにおいてエラーが発生した場合、エラーがない他のレジスタファイル内の正しいデータを読み出して、そのエラーの発生したレジスタファイルの該当アドレスに書き込むというエラー訂正を行うことにより、リトライ率を高めるようにしたものであるが、レジスタファイルを２重化している点で、レジスタファイルを１つしか持たない本発明とは構成および作用が決定的に異なっている。
【０００７】
【課題を解決するための手段】
本発明のエラー訂正制御回路は、ソフトウェアによる読み書きが可能なソフトウェアビジブルレジスタ群を保持する記憶回路を備えた情報処理装置において、ソフトウェア命令で指定されるソフトウェアビジブルレジスタの論理番号を前記記憶回路の物理番号にリネーミングするための物理番号群を保持するアクティブリストと、ソフトウェア命令の切れ目毎に前記アクティブリストに保持された物理番号群がコピーされるシャドーリストと、ソフトウェアビジブルレジスタの論理番号に前記記憶回路の物理番号を新規に割り付けるための物理番号群を保持し、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に対応する前記記憶回路の物理番号を前記アクティブリストから入力するとともに、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に新規に割り付ける前記記憶回路の物理番号を前記アクティブリストに出力するフリーリストとを備えることを特徴とする。
【０００８】
また、本発明のエラー訂正制御回路は、ソフトウェアによる読み書きが可能なソフトウェアビジブルレジスタ群を保持する記憶回路を備えた情報処理装置において、ソフトウェア命令で指定されるソフトウェアビジブルレジスタの論理番号を前記記憶回路の物理番号にリネーミングするための物理番号群を保持するアクティブリストと、ソフトウェア命令の切れ目毎に前記アクティブリストに保持された物理番号群がコピーされる第１のシャドーリストと、ソフトウェアビジブルレジスタの論理番号に前記記憶回路の物理番号を新規に割り付けるための物理番号群を保持し、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に対応する前記記憶回路の物理番号を前記アクティブリストから入力するとともに、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に新規に割り付ける前記記憶回路の物理番号を前記アクティブリストに出力するフリーリストと、ソフトウェア命令の切れ目毎に前記フリーリストに保持された物理番号群がコピーされる第２のシャドーリストとを備えることを特徴とする。
【０００９】
さらに、本発明のエラー訂正制御回路は、ソフトウェアビジブルレジスタ群を保持する記憶回路と、ソフトウェア命令が設定される第１の命令レジスタと、前記第１の命令レジスタに設定されたソフトウェア命令で指定されたソフトウェアビジブルレジスタの論理番号を前記記憶回路の物理番号にリネーミングするための物理番号群を保持するアクティブリストと、前記第１の命令レジスタに設定されたソフトウェア命令で指定されたソフトウェアビジブルレジスタの論理番号を前記アクティブリストによりリネーミングされた物理番号で置き換えたソフトウェア命令が設定される第２の命令レジスタと、ソフトウェア命令の切れ目毎に前記アクティブリストに保持された物理番号群がコピーされるシャドーリストと、ソフトウェアビジブルレジスタの論理番号に前記記憶回路の物理番号を新規に割り付けるための物理番号群を保持し、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に対応する前記記憶回路の物理番号を前記アクティブリストから入力するとともに、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に新規に割り付ける前記記憶回路の物理番号を前記アクティブリストに出力するフリーリストとを備えることを特徴とする。
【００１０】
さらにまた、本発明のエラー訂正制御回路は、ソフトウェアビジブルレジスタ群を保持する記憶回路と、ソフトウェア命令が設定される第１の命令レジスタと、前記第１の命令レジスタに設定されたソフトウェア命令で指定されたソフトウェアビジブルレジスタの論理番号を前記記憶回路の物理番号にリネーミングするための物理番号群を保持するアクティブリストと、前記第１の命令レジスタに設定されたソフトウェア命令で指定されたソフトウェアビジブルレジスタの論理番号を前記アクティブリストによりリネーミングされた物理番号で置き換えたソフトウェア命令が設定される第２の命令レジスタと、ソフトウェア命令の切れ目毎に前記アクティブリストに保持された物理番号群がコピーされる第１のシャドーリストと、ソフトウェアビジブルレジスタの論理番号に前記記憶回路の物理番号を新規に割り付けるための物理番号群を保持し、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に対応する前記記憶回路の物理番号を前記アクティブリストから入力するとともに、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に新規に割り付ける前記記憶回路の物理番号を前記アクティブリストに出力するフリーリストと、ソフトウェア命令の切れ目毎に前記フリーリストに保持された物理番号群がコピーされる第２のシャドーリストとを備えることを特徴とする。
【００１１】
また、本発明のエラー訂正制御回路は、ソフトウェアビジブルレジスタ群を保持する記憶回路と、ソフトウェア命令が設定される第１の命令レジスタと、前記第１の命令レジスタに設定されたソフトウェア命令で指定されたソフトウェアビジブルレジスタの論理番号を前記記憶回路の物理番号にリネーミングするための物理番号群を保持するアクティブリストと、前記第１の命令レジスタに設定されたソフトウェア命令で指定されたソフトウェアビジブルレジスタの論理番号を前記アクティブリストによりリネーミングされた物理番号で置き換えたソフトウェア命令が設定される第２の命令レジスタと、前記アクティブリストに保持された物理番号群がコピーされるシャドーリストと、ソフトウェアビジブルレジスタの論理番号に前記記憶回路の物理番号を新規に割り付けるための物理番号群を保持し、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に対応する前記記憶回路の物理番号を前記アクティブリストから入力するとともに、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に新規に割り付ける前記記憶回路の物理番号を前記アクティブリストに出力するフリーリストと、ソフトウェア命令の切れ目毎に前記アクティブリストに保持された物理番号群を前記シャドーリストにコピーさせる命令制御部と、エラーを検出したときに前記シャドーリストにコピーされた物理番号群を前記アクティブリストに書き戻させる障害検出部とを備えることを特徴とする。
【００１２】
さらに、本発明のエラー訂正制御回路は、ソフトウェアビジブルレジスタ群を保持する記憶回路と、ソフトウェア命令が設定される第１の命令レジスタと、前記第１の命令レジスタに設定されたソフトウェア命令で指定されたソフトウェアビジブルレジスタの論理番号を前記記憶回路の物理番号にリネーミングするための物理番号群を保持するアクティブリストと、前記第１の命令レジスタに設定されたソフトウェア命令で指定されたソフトウェアビジブルレジスタの論理番号を前記アクティブリストによりリネーミングされた物理番号で置き換えたソフトウェア命令が設定される第２の命令レジスタと、前記アクティブリストに保持された物理番号群がコピーされる第１のシャドーリストと、ソフトウェアビジブルレジスタの論理番号に前記記憶回路の物理番号を新規に割り付けるための物理番号群を保持し、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に対応する前記記憶回路の物理番号を前記アクティブリストから入力するとともに、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号に新規に割り付ける前記記憶回路の物理番号を前記アクティブリストに出力するフリーリストと、前記フリーリストに保持された物理番号群がコピーされる第２のシャドーリストと、ソフトウェア命令の切れ目毎に前記アクティブリストに保持された物理番号群を前記第１のシャドーリストにコピーさせるとともに前記フリーリストに保持された物理番号群を前記第２のシャドーリストにコピーさせる命令制御部と、エラーを検出したときに前記第１のシャドーリストにコピーされた物理番号群を前記アクティブリストに書き戻させるとともに前記第２のシャドーリストにコピーされた物理番号群を前記フリーリストに書き戻させる障害検出部とを備えることを特徴とする。
【００１３】
加えて、本発明のエラー訂正制御回路は、前記記憶回路が、レジスタファイルであることを特徴とする。
【００１４】
また、本発明のエラー訂正制御回路は、前記フリーリストが、ＦＩＦＯバッファであることを特徴とする。
【００１５】
本発明のエラー訂正制御回路では、ソフトウェアによる読み書きが可能（ソフトウェアビジブル）な記憶回路（レジスタファイル）を備えた情報処理装置において、ソフトウェア命令で更新するソフトウェアビジブルレジスタ群を記憶回路（レジスタファイル）内に保持することでソフトウェア命令の実行中にエラーが発生した場合に、リリーフ情報としてソフトウェア命令で更新されたソフトウェアビジブルレジスタのレジスタ値をソフトウェア命令の開始時点の状態値に回復することができることにより、リトライ率を向上できるものである。
【００１６】
図１は、第１の発明のエラー訂正制御回路を含む情報処理装置の主要部の構成を示す回路ブロック図である。第１の発明のエラー訂正制御回路は、ソフトウェア命令で指定されるソフトウェアビジブルレジスタの論理番号をレジスタファイルの物理番号に１対１に対応づけるアクティブリスト３０と、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号にレジスタファイル１０のアドレスを新規に割り付けるための物理番号群を保持するフリーリスト３２と、ソフトウェア命令の切れ目毎にアクティブリスト３０に保持された物理番号群がコピーされるシャドーリスト３１とを備えている。
【００１７】
第１の発明のエラー訂正制御回路では、ソフトウェア命令の実行中にエラーが発生した場合、シャドーリスト３１にコピーされた物理番号群をアクティブリスト３０に書き戻すことで、アクティブリスト３０に書き戻された物理番号群によりソフトウェア命令の開始時点におけるソフトウェアビジブルレジスタ群のレジスタ値を回復することができ、リトライ率を向上させることができる。
【００１８】
図６は、第２の発明のエラー訂正制御回路を含む情報処理装置の主要部の構成を示す回路ブロック図である。第２の発明のエラー訂正制御回路は、プロセッサを初期化せずにソフトウェア命令のリトライを行う方式の場合に、フリーリスト３２に保持された物理番号群もソフトウェア命令の切れ目で第２のシャドーリスト３３にコピーすることが必要であるので、ソフトウェア命令の切れ目毎にアクティブリスト３０に保持された物理番号群がコピーされる第１のシャドーリスト３１と、フリールスト３２に保持された物理番号群がコピーされる第２のシャドーリスト３３とを備えている。
【００１９】
第２の発明のエラー訂正制御回路では、ソフトウェア命令の実行中にエラーが発生した場合、第１のシャドーリスト３１にコピーされた物理番号群をアクティブリスト３０に書き戻すとともに、第２のシャドーリスト３３にコピーされた物理番号群をフリーリスト３２に書き戻すことで、アクティブリスト３０およびフリーリスト３２に書き戻された物理番号群によりソフトウェア命令の開始時点におけるソフトウェアビジブルレジスタ群のレジスタ値に回復することができ、リトライ率を向上させることができる。
【００２０】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００２１】
［第１の実施の形態］
図１を参照すると、本発明の第１の実施の形態に係るエラー訂正制御回路を含む情報処理装置の主要部は、ソフトウェアビジブルレジスタ群を保持するレジスタファイル１０と、ソフトウェア命令の命令語が設定される命令レジスタ２０と、命令レジスタ２０に設定された命令語で指定されたソフトウェアビジブルレジスタのレジスタ番号（以後、論理番号と称す）をレジスタファイル１０の索引アドレス（以後、物理番号と称す）にリネーミングするための物理番号群を保持するアクティブリスト３０と、命令レジスタ２０に設定された命令語で指定されたソフトウェアビジブルレジスタの論理番号をアクティブリスト３０によりリネーミングされた物理番号で置き換えた命令語が設定される命令レジスタ２１と、ソフトウェア命令の切れ目毎にアクティブリスト３０に保持された物理番号群がコピーされるシャドーリスト３１と、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号にレジスタファイル１０の物理番号を新規に割り付けるための物理番号群を保持するフリーリスト３２と、ソフトウェア命令の切れ目毎にアクティブリスト３０に保持された物理番号群をシャドーリスト３１にコピーさせる命令制御部４０と、エラーを検出したときにシャドーリスト３１にコピーされた物理番号群をアクティブリスト３０に書き戻させる障害検出部４１とから構成されている。なお、図１中、符号２０１，２０２，２１１，２１２，３０１，３０２，３２１，４０１，および４０２は信号線、５０１はバスをそれぞれ示す。
【００２２】
レジスタファイル１０は、ソフトウェアビジブルレジスタ群を保持する汎用レジスタファイルである。レジスタファイル１０は、ソフトウェアビジブルレジスタ分およびリネーミング分のデータを格納することが充分可能な容量を備えている。なお、レジスタファイル１０は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）によって構成された周知のメモリ回路でもよく、それに限定されない。ここでは、レジスタファイル１０は、ソフトウェアビジブルレジスタ分とレジスタリネーミング分との容量を持っていて、ソフトウェアビジブルレジスタ群は８ワード、リネーミング分の容量は４ワードとして説明する（図２ないし図７参照）。つまり、レジスタファイル１０内のソフトウェアビジブルレジスタ群は、１２ワード（０〜Ｂ）定義されていることになる。
【００２３】
命令レジスタ２０は、ソフトウェア命令の命令語が設定される。命令レジスタ２０に設定されるソフトウェア命令の命令語は、演算のオペレーションコードＯＰ，ディスティネーションＩＷ，ソースオペランドＩＸ，およびソースオペランドＩＹから構成されている。ディスティネーションＩＷ，ソースオペランドＩＸ，およびソースオペランドＩＹは、ソフトウェアビジブルレジスタの論理番号（本例では０〜７）の値をとる。
【００２４】
命令レジスタ２１は、ソフトウェア命令の命令語が設定される。命令レジスタ２１に設定されるソフトウェア命令の命令語は、演算のオペレーションコードＯＰ，ディスティネーションＰＷ，ソースオペランドＰＸ，およびソースオペランドＰＹから構成されている。ディスティネーションＰＷ，ソースオペランドＰＸ，およびソースオペランドＰＹは、レジスタファイル１０の物理番号（本例では０〜Ｂ）の値をとる。
【００２５】
アクティブリスト３０は、ソフトウェアビジブルレジスタの論理番号と同じエントリ数を備え、命令レジスタ２０に設定された命令語で指定されたソフトウェアビジブルレジスタの論理番号をレジスタファイル１０の物理番号にリネーミングする。詳しくは、アクティブリスト３０は、命令レジスタ２０のディスティネーションＩＷで指定された論理番号で信号線２０２を介してポイントされるエントリに保持された物理番号を信号線３０１を介してフリーリスト３２に最新番の物理番号として出力し、命令レジスタ２０のソースオペランドＩＸで指定された論理番号で信号線２０１を介してポイントされるエントリに保持された物理番号を信号線３０１を介して命令レジスタ２１のソースオペランドＰＸに出力し、命令レジスタ２０のソースオペランドＩＹで指定された論理番号で信号線２０１を介してポイントされるエントリに保持された物理番号を信号線３０２を介して命令レジスタ２１のソースオペランドＰＹに出力する。同時に、アクティブリスト３０は、フリーリスト３２が出力する最古番の物理番号を命令レジスタ２０のディスティネーションＩＷで指定された論理番号でポイントされるエントリに入力する。
【００２６】
シャドーリスト３１は、ソフトウェアビジブルレジスタの論理番号と同じエントリ数を備え、アクティブリスト３０に保持された物理番号群がバス５０１を介してコピーされる。
【００２７】
フリーリスト３２は、リネーミング分のエントリ数を備えるＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）のバッファであり、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号にレジスタファイル１０の物理番号を新規に割り付けるための物理番号群を保持する。詳しくは、フリーリスト３２は、命令レジスタ２０のディスティネーションＩＷで指定された論理番号に対応するアクティブリスト３０のエントリの物理番号を信号線３０１を介して最新番の物理番号として入力し、最古番の物理番号を信号線３２１を介して命令レジスタ２０のディスティネーションＩＷで指定された論理番号に対応するアクティブリスト３０のエントリに出力する。同時に、フリーリスト３２は、最古番の物理番号を信号線３２１を介して命令レジスタ２１のディスティネーションＰＷに出力する。
【００２８】
次に、このように構成された第１の実施の形態に係るエラー訂正制御回路の動作について説明する。
【００２９】
ソフトウェア命令の命令語は、一旦、命令レジスタ２０に設定される。いま、図１の例のように、ディスティネーションＩＷ＝２，ソースオペランドＩＸ＝１，ソースオペランドＩＹ＝７であるものとする。
【００３０】
アクティブリスト３０は、命令レジスタ２０のディスティネーションＩＷ＝２で指定された論理番号で信号線２０２を介してポイントされるエントリに保持された物理番号”３”を信号線３０１を介してフリーリスト３２に最新番の物理番号として出力し、命令レジスタ２０のソースオペランドＩＸ＝１で指定された論理番号で信号線２０１を介してポイントされるエントリに保持された物理番号”８”を信号線３０１を介して命令レジスタ２１のソースオペランドＰＸに出力し、命令レジスタ２０のソースオペランドＩＹ＝７で指定された論理番号で信号線２０１を介してポイントされるエントリに保持された物理番号”９”を信号線３０２を介して命令レジスタ２１のソースオペランドＰＹに出力する。
【００３１】
フリーリスト３２は、最新番の物理番号”３”が信号線３０１を介して末尾に入力されると、先頭から最古番の物理番号”２”を信号線３２１を介して命令レジスタ２１のディスティネーションＰＷに出力する。同時に、フリーリスト３２は、最古番の物理番号”２”を信号線３２１を介して、命令レジスタ２０のディスティネーションＩＷ＝２で指定された論理番号で信号線２０２を介してポイントされるアクティブリスト３０のエントリに出力する。
【００３２】
以上の動作により、命令レジスタ２１には、ディスティネーションＰＷ＝２，ソースオペランドＰＸ＝８，およびソースオペランドＰＹ＝９の各物理番号が格納されることになる。命令レジスタ２１に格納されているディスティネーションＰＷ＝２，ソースオペランドＰＸ＝８，およびソースオペランドＰＹ＝９の物理番号が、信号線２１１および２１２を介してレジスタファイル１０の索引アドレスになる。
【００３３】
命令レジスタ２１に格納されているソフトウェア命令の実行が完了すると、命令制御部４０は、信号線４０１を介してシャドーリスト３１にアクティブリスト３０に保持されている物理番号群のコピーを指示し、シャドーリスト３１はアクティブリスト３０に保持されている物理番号群をバス５０１を介して自身にコピーさせる。
【００３４】
このような一連の動作が、ソフトウェア命令単位に繰り返される。
【００３５】
ソフトウェア命令の実行中にエラーが発生した場合、エラーが発生したタイミングによっては、ソフトウェア命令内でソフトウェアビジブルレジスタをすでに更新しているかも知れないので、更新している場合には、ソフトウェア命令の開始時点における状態値に戻すことができないためにリトライ不可となる。
【００３６】
しかし、第１の実施の形態では、ソフトウェア命令の切れ目毎にアクティブリスト３０に保持された物理番号群がシャドーリスト３１にコピーされているので、ソフトウェア命令の実行中にエラーが発生した場合、シャドーリスト３１にコピーされた物理番号群をアクティブリスト３０に書き戻すことで、アクティブリスト３０の値をソフトウェア命令の開始時点における物理番号群に復元することができ、ソフトウェア命令で指定される論理番号がリネーミングされた物理番号がポイントする更新対象であるレジスタファイル１０のソフトウェアビジブルレジスタのレジスタ値も、ソフトウェア命令の開始時点における状態値に回復することができる。
【００３７】
ただし、第１の実施の形態では、フリーリスト３２に保持された物理番号群が復元されていないため、ソフトウェア命令のリトライ時にはレジスタファイル１０のレジスタ値を一旦退避して、エラーが発生したプロセッサを初期化、つまりレジスタファイル１０の制御回路であるアクティブリスト３０，シャドーリスト３１，およびフリーリスト３２を初期化した後、退避したレジスタ値をレジスタファイル１０に再ロードしてからのリトライとなる。
【００３８】
次に、図２ないし図７を参照しながら、第１の実施の形態に係るエラー訂正制御回路の動作について具体的に説明する。
【００３９】
図２に示す初期状態では、アクティブリスト３０には、レジスタファイル１０の索引アドレスである物理番号”０”〜”７”が格納されている。また、フリーリスト３２には、物理番号”８”〜”Ｂ”が格納されている。
【００４０】
図２に示す初期状態から、論理番号Ｌ３のソフトウェアビジブルレジスタのレジスタ値と論理番号Ｌ２のソフトウェアビジブルレジスタのレジスタ値との和を論理番号Ｌ３のソフトウェアビジブルレジスタに格納するソフトウェア命令［Ｌ３＋Ｌ２→Ｌ３］が命令レジスタ２０に設定されたとすると、図３に示すように、命令制御部４０は、信号線４０１を通じてシャドーリスト３１にアクティブリスト３０に保持された物理番号群のコピーを指示し、シャドーリスト３１はアクティブリスト３０に保持されている物理番号群をバス５０１を介して自身にコピーさせる。次に、アクティブリスト３０およびフリーリスト３２は、命令レジスタ２０に設定されたソフトウェア命令［Ｌ３＋Ｌ２→Ｌ３］を、Ｐ３＋Ｐ２→Ｐ８に変換して命令レジスタ２１に設定する。続いて、命令レジスタ２１に設定されたＰ３＋Ｐ２→Ｐ８の実行により、レジスタファイル１０における物理番号”８”のソフトウェアビジブルレジスタＰ８が更新される。
【００４１】
図３に示すソフトウェア命令［Ｌ３＋Ｌ２→Ｌ３］の実行後の状態から、メモリの内容を論理番号０−１のソフトウェアビジブルレジスタＬ０−１に格納するソフトウェア命令［ｍｅｍ→Ｌ０−１］が命令レジスタ２０に設定されたとすると、図４に示すように、命令制御部４０は、信号線４０１を通じてシャドーリスト３１にアクティブリスト３０に保持された物理番号群のコピーを指示し、シャドーリスト３１はアクティブリスト３０に保持されている物理番号群をバス５０１を介して自身にコピーさせる。次に、アクティブリスト３０およびフリーリスト３２は、命令レジスタ２０に設定されたソフトウェア命令［ｍｅｍ→Ｌ０−１］を、ｍｅｍ→Ｐ９−Ａに変換して命令レジスタ２１に設定する。続いて、命令レジスタ２１に設定されたｍｅｍ→Ｐ９−Ａの実行により、レジスタファイル１０における物理番号”９”および”Ａ”のソフトウェアビジブルレジスタＰ９およびＰＡが更新される。
【００４２】
図５に示すように、ソフトウェア命令［ｍｅｍ→Ｌ０−１］の実行中にエラーが発生した場合には、障害検出部４１は、このエラーを検出し、信号線４０２を通じてシャドーリスト３１にコピーされた物理番号群をアクティブリスト３０に書き戻させる。これにより、図４のソフトウェア命令［ｍｅｍ→Ｌ０−１］の開始時点にアクティブリスト３０に保持された物理番号群を復元することができる。
【００４３】
次に、図５に示す復元されたアクティブリスト３０の物理番号群に基づいて、図６の初期化１に示すように、レジスタファイル１０に保持されたソフトウェアビジブルレジスタ群のレジスタ値を、任意のソフトウェアビジブルレジスタ退避エリアに退避する。詳しくは、論理番号０のアクティブリスト３０のエントリに格納されている物理番号”０”のレジスタファイル１０のレジスタ値をソフトウェアビジブルレジスタ退避エリアのエントリ０に退避し、論理番号１のエントリに格納されている物理番号”１”のレジスタファイル１０のレジスタ値をソフトウェアビジブルレジスタ退避エリアのエントリ１に退避し、論理番号２のエントリに格納されている物理番号”２”のレジスタファイル１０のレジスタ値をソフトウェアビジブルレジスタ退避エリアのエントリ２に退避し、論理番号３のエントリに格納されている物理番号”８”のレジスタファイル１０のレジスタ値をソフトウェアビジブルレジスタ退避エリアのエントリ３に退避し、論理番号４のエントリに格納されている物理番号”４”のレジスタファイル１０のレジスタ値をソフトウェアビジブルレジスタ退避エリアのエントリ４に退避し、論理番号５のエントリに格納されている物理番号”５”のレジスタファイル１０のレジスタ値をソフトウェアビジブルレジスタ退避エリアのエントリ５に退避し、論理番号６のエントリに格納されている物理番号”６”のレジスタファイル１０のレジスタ値をソフトウェアビジブルレジスタ退避エリアのエントリ６に退避し、論理番号７のエントリに格納されている物理番号”７”のレジスタファイル１０のレジスタ値をソフトウェアビジブルレジスタ退避エリアのエントリ７に退避する。ここでは、ソフトウェア命令［Ｌ３＋Ｌ２→Ｌ３］で更新された論理番号３のソフトウェアビジブルレジスタのレジスタ値がソフトウェアビジブルレジスタ退避エリアのエントリ３に退避されている。
【００４４】
続いて、図６に示す初期化１で、レジスタファイル１０，アクティブリスト３０，シャドーリスト３１，およびフリーリスト３２を、図２に示すのと同様の初期状態に初期化する。
【００４５】
次に、図７に示す初期化２で、ソフトウェアビジブルレジスタ退避エリアに退避されたレジスタ値群をレジスタファイル１０に回復する。復元後の状態では、論理番号３に対応する物理番号”３”のレジスタファイル１０のレジスタ値がソフトウェア命令［Ｌ３＋Ｌ２→Ｌ３］で更新された内容となっており、エラーが発生したソフトウェア命令［ｍｅｍ→Ｌ０−１］から見て、図３のソフトウェア命令［Ｌ３＋Ｌ２→Ｌ３］の終了時点での状態と同じである。よって、この状態からソフトウェア命令［ｍｅｍ→Ｌ０−１］をリトライすることができる。
【００４６】
なお、ソフトウェア命令［ｍｅｍ→Ｌ０−１］のリトライ時には、図５のエラー発生時にソフトウェア命令［ｍｅｍ→Ｌ０−１］で更新されたかもしれないレジスタファイル１０における物理番号”９”および”Ａ”のレジスタをソフトウェアビジブルレジスタＰ９およびＰＡとして使わなくて済む。
【００４７】
ところで、フリーリスト３２に保持された物理番号群もソフトウェア命令［ｍｅｍ→Ｌ０−１］の開始時点の値に復元する方法も考えられるが、第１の実施の形態では、エラーが発生してソフトウェア命令［ｍｅｍ→Ｌ０−１］の開始時点から再開する場合には、プロセッサを一旦初期化してから退避したソフトウェアビジブルレジスタ群のレジスタ値をレジスタファイル１０にリカバリすることを前提にしているため、フリーリスト３２に保持された物理番号群とアクティブリスト３０に保持された物理番号群との整合がとれていなくてもよい。
【００４８】
［第２の実施の形態］
図８を参照すると、本発明の第２の実施の形態に係るエラー訂正制御回路を含む情報処理装置の主要部は、ソフトウェアビジブルレジスタ群を保持するレジスタファイル１０と、ソフトウェア命令の命令語が設定される命令レジスタ２０と、命令レジスタ２０に設定された命令語で指定されたソフトウェアビジブルレジスタの論理番号をレジスタファイル１０の物理番号にリネーミングするための物理番号群を保持するアクティブリスト３０と、命令レジスタ２０に設定された命令語で指定されたソフトウェアビジブルレジスタの論理番号をアクティブリスト３０によりリネーミングされた物理番号で置き換えた命令語が設定される命令レジスタ２１と、ソフトウェア命令の切れ目毎にアクティブリスト３０に保持された物理番号群がコピーされるシャドーリスト３１と、ソフトウェア命令で更新対象として指定されるソフトウェアビジブルレジスタの論理番号にレジスタファイル１０の物理番号を新規に割り付けるための物理番号群を保持するフリーリスト３２と、フリーリスト３２に保持された物理番号群がコピーされるシャドーリスト３３と、ソフトウェア命令の切れ目毎にアクティブリスト３０およびフリーリスト３２に保持された物理番号群をシャドーリスト３１および３３にコピーさせる命令制御部４０と、エラーを検出したときにシャドーリスト３１および３３にコピーされた物理番号群をアクティブリスト３０およびフリーリスト３２に書き戻させる障害検出部４１とから構成されている。なお、図１中、符号２０１，２０２，２１１，２１２，３０１，３０２，３２１，４０１，および４０２は信号線、５０１はバスをそれぞれ示す。
【００４９】
シャドーリスト３３は、ソフトウェアビジブルレジスタの論理番号と同じエントリ数を備え、フリーリスト３２に保持された物理番号群がバス５０１を介してコピーされる。
【００５０】
なお、特に言及しないその他の部分は、図１に示した第１の実施の形態に係るエラー訂正制御回路における対応部分と同様に構成されているので、同一符号を付してそれらの詳しい説明を省略する。
【００５１】
次に、このように構成された第２の実施の形態に係るエラー訂正制御回路の動作について、図９および図１０を参照して、図１に示した第１の実施の形態に係るエラー訂正制御回路の動作との相違点を中心に説明する。
【００５２】
第２の実施の形態では、ソフトウェア命令の切れ目毎にアクティブリスト３０およびフリーリスト３２に保持された物理番号群をシャドーリスト３１および３３にそれぞれコピーさせる。
【００５３】
例えば、図３に示すソフトウェア命令［Ｌ３＋Ｌ２→Ｌ３］の実行後の状態から、メモリの内容を論理番号０−１のソフトウェアビジブルレジスタＬ０−１に格納するソフトウェア命令［ｍｅｍ→Ｌ０−１］が命令レジスタ２０に設定されたとすると、図９に示すように、命令制御部４０は、信号線４０１を通じてシャドーリスト３１および３３にアクティブリスト３０およびフリーリスト３２に保持された物理番号群のコピーを指示し、シャドーリスト３１および３３はアクティブリスト３０およびフリーリスト３２に保持されている物理番号群をバス５０１を介して自身にそれぞれコピーさせる。次に、アクティブリスト３０およびフリーリスト３２は、命令レジスタ２０に設定されたソフトウェア命令［ｍｅｍ→Ｌ０−１］を、ｍｅｍ→Ｐ９−Ａに変換して命令レジスタ２１に設定する。続いて、命令レジスタ２１に設定されたｍｅｍ→Ｐ９−Ａの実行により、レジスタファイル１０における物理番号”９”および”Ａ”のソフトウェアビジブルレジスタＰ９およびＰＡが更新される。
【００５４】
図１０に示すように、ソフトウェア命令［ｍｅｍ→Ｌ０−１］の実行中にエラーが発生した場合には、障害検出部４１は、このエラーを検出し、信号線４０２を通じてシャドーリスト３１および３３にコピーされた物理番号群をアクティブリスト３０およびフリーリスト３２にそれぞれ書き戻させる。これにより、図９のソフトウェア命令［ｍｅｍ→Ｌ０−１］の開始時点にアクティブリスト３０およびフリーリスト３２に保持された物理番号群を復元することができる。
【００５５】
このように、第２の実施の形態では、ソフトウェア命令の実行中にエラーが発生した場合、シャドーリスト３１および３３にコピーされた物理番号群をアクティブリスト３０およびフリーリスト３２に書き戻すことで、アクティブリスト３０およびフリーリスト３２の値をソフトウェア命令の開始時点における物理番号群に復元することができ、復元された物理番号群によりソフトウェア命令内のデスティネーションおよびソースオペランドに対応するレジスタファイル１０のソフトウェアビジブルレジスタのレジスタ値もソフトウェア命令の開始時点における状態値に回復することができる。これにより、レジスタファイル１０の制御も整合性がとれるため、レジスタファイル１０のレジスタ値を退避する必要がなく、エラーが発生したプロセッサを初期化せずにソフトウェア命令のリトライをすることが可能となる。
【００５６】
【発明の効果】
第１の効果は、ソフトウェア命令の実行中にエラーが発生した場合、シャドーリストにコピーされた物理番号群をアクティブリストに書き戻すことで、ソフトウェア命令で更新対象として指定された論理番号に対応するソフトウェアビジブルレジスタのレジスタ値をソフトウェア命令の開始時点におけるソフトウェアビジブルレジスタの状態値に回復することが可能であり、リトライ率が向上するということである。その理由は、ソフトウェア命令の切れ目毎にアクティブリストに保持された物理番号群をシャドーリストにコピーするようにしたからである。
【００５７】
第２の効果は、ソフトウェア命令の実行中にエラーが発生した場合、第１および第２のシャドーリストにコピーされた物理番号群をアクティブリストおよびフリーリストに書き戻すことで、ソフトウェア命令で指定されるソフトウェアビジブルレジスタの論理番号に対応するソフトウェアビジブルレジスタのレジスタ値をソフトウェア命令の開始時点におけるソフトウェアビジブルレジスタの状態値に回復することが可能であり、レジスタファイルの制御も整合性がとれるため、レジスタファイルのレジスタ値を退避する必要がなく、エラーが発生したプロセッサを初期化せずにソフトウェア命令のリトライをすることが可能となる。その理由は、ソフトウェア命令の切れ目毎にアクティブリストに保持された物理番号群およびフリーリストに保持された物理番号群を第１および第２のシャドーリストにコピーするようにしたからである。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るエラー訂正制御回路を含む情報処理装置の主要部の構成を示す回路ブロック図である。
【図２】図１中のアクティブリスト，シャドーリスト，フリーリスト，およびレジスタファイルの初期状態を例示する図である。
【図３】図１中のアクティブリスト，シャドーリスト，フリーリスト，およびレジスタファイルの、ソフトウェア命令［Ｌ３＋Ｌ２→Ｌ３］の実行終了時の状態を例示する図である。
【図４】図１中のアクティブリスト，シャドーリスト，フリーリスト，およびレジスタファイルの、ソフトウェア命令［ｍｅｍ→Ｌ０−１］の実行終了時の状態を例示する図である。
【図５】図１中のアクティブリスト，シャドーリスト，フリーリスト，およびレジスタファイルの、ソフトウェア命令［ｍｅｍ→Ｌ０−１］の実行中にエラーが発生した場合の状態を例示する図である。
【図６】図１中のアクティブリスト，シャドーリスト，フリーリスト，およびレジスタファイルを初期化１した状態を例示する図である。
【図７】図１中のアクティブリスト，シャドーリスト，フリーリスト，およびレジスタファイルを初期化２した状態を例示する図である。
【図８】本発明の第２の実施の形態に係るエラー訂正制御回路を含む情報処理装置の主要部の構成を示す回路ブロック図である。
【図９】図８中のアクティブリスト，シャドーリスト，フリーリスト，およびレジスタファイルの、ソフトウェア命令［ｍｅｍ→Ｌ０−１］の実行終了時の状態を例示する図である。
【図１０】図８中のアクティブリスト，シャドーリスト，フリーリスト，およびレジスタファイルの、ソフトウェア命令［ｍｅｍ→Ｌ０−１］の実行中にエラーが発生した場合の状態を例示する図である。
【符号の説明】
１０  レジスタファイル
２０  命令レジスタ（第１の命令レジスタ）
２１  命令レジスタ（第２の命令レジスタ）
３０  アクティブリスト
３１  シャドーリスト（第１のシャドーリスト）
３２  フリーリスト
３３  シャドーリスト（第２のシャドーリスト）
４０  命令制御部
４１  障害検出部
２０１，２０２，２１１，２１２，３０１，３０２，３２１  信号線
４０１，４０２  信号線
５０１  バス
【図１】
0003667703.tif 000002
【図２】
0003667703.tif 000003
【図３】
0003667703.tif 000004
【図４】
0003667703.tif 000005
【図５】
0003667703.tif 000006
【図６】
0003667703.tif 000007
【図７】
0003667703.tif 000008
【図８】
0003667703.tif 000009
【図９】
0003667703.tif 000010
【図１０】
0003667703.tif 000011