(57)【特許請求の範囲】
【請求項１】
命令を実行する演算処理部と、前記演算処理部からのデータアクセス要求に応答するデータアクセス制御部と、前記データアクセス制御部による前記データアクセス要求の転送を制御する制御装置とをそれぞれ有するとともに、通信経路を介して接続される複数の演算処理装置を有し、
前記データアクセス制御部は、他の演算処理装置が管理する主記憶装置に対する前記データアクセス要求の一つであるストア要求に応答して前記他の演算処理装置に前記データアクセス要求の一つであるデータ獲得要求を出力し、同じストア要求のためのデータ獲得要求を再度出力するときに再実行情報を有するデータ獲得要求を出力し、
前記制御装置は、他の演算処理装置から受信したデータアクセス要求を許可するか否かの第１の判定と、前記データ獲得要求が同じストア要求のための再実行の要求であるか否かの第２の判定とを行い、前記第１の判定が前記データアクセス要求を許可しない場合アクセス拒否応答を返信し、前記第１の判定では前記データアクセス要求を許可しないと判定したが、前記第２の判定で当該データアクセス要求としてのデータ獲得要求が前記再実行の要求であると判定した場合には、前記データ獲得要求を許可する、情報処理装置。
【請求項２】
前記データアクセス要求を行うローカル側演算処理装置の前記データアクセス制御部は、前記データアクセス要求に対応する認証情報であるアクセス認証情報を付加して前記データアクセス要求を出力し、
前記データアクセス要求を受けるホーム側演算処理装置の前記制御装置は、前記第１の判定で、受信したデータアクセス要求のアクセス認証情報が、自装置が管理する主記憶装置へのデータアクセス要求に対応する認証情報であるメモリ認証情報と一致する場合、前記データアクセス要求に対応するデータへのアクセスを許可する、請求項１に記載の情報処理装置。
【請求項３】
前記ローカル側演算処理装置の前記データアクセス制御部は、前記再実行情報を有するデータ獲得要求を発行するとき、前記アクセス認証情報として再実行用認証情報を付加して前記データ獲得要求を出力し、
前記ホーム側演算処理装置の前記制御装置は、前記第２の判定で、前記データ獲得要求のアクセス認証情報が前記再実行用認証情報の場合に前記再実行の要求と判定する、請求項２に記載の情報処理装置。
【請求項４】
前記ローカル側演算処理装置の前記データアクセス制御部は、前記再実行情報を有するデータ獲得要求を発行するとき、再実行情報を付加して前記データ獲得要求を出力し、
前記ホーム側演算処理装置の前記制御装置は、前記第２の判定で前記データ獲得要求に前記再実行情報が付加されている場合に前記再実行の要求と判定する、請求項２に記載の情報処理装置。
【請求項５】
前記複数の演算処理装置のそれぞれと複数の主記憶装置のそれぞれとでノードを構成し、
データアクセス要求を受けるホーム側演算処理装置の前記制御装置は、前記第１の判定で、前記データアクセス要求を発行したノードがデータアクセス要求を拒否する拒否ノードに該当する場合に、前記データアクセス要求を拒否する、請求項１に記載の情報処理装置。
【請求項６】
前記データアクセス要求を行うローカル側演算処理装置の前記データアクセス制御部は、アクセス認証情報を付加してデータアクセス要求を出力し、前記再実行情報を有するデータ獲得要求を発行するとき、前記アクセス認証情報として再実行用認証情報を付加してデータ獲得要求を出力し、
前記ホーム側演算処理装置の前記制御装置は、前記第２の判定で、前記データ獲得要求の前記アクセス認証情報が再実行用認証情報の場合に前記再実行の要求と判定する、請求項５に記載の情報処理装置。
【請求項７】
前記データアクセス要求を行うローカル側演算処理装置の前記データアクセス制御部は、前記再実行情報を有するデータ獲得要求を発行するとき、再実行情報を付加してデータ獲得要求を出力し、
前記ホーム側演算処理装置の前記制御装置は、前記第２の判定で、受信したデータ獲得要求に再実行情報が付加されている場合に前記再実行の要求と判定する、請求項５に記載の情報処理装置。
【請求項８】
命令を実行する演算処理部と、前記演算処理部からのデータアクセス要求に応答するデータアクセス制御部と、前記データアクセス制御部による前記データアクセス要求の転送を制御する制御装置とをそれぞれ有する複数の演算処理装置と、
前記複数の演算処理装置それぞれに設けられアクセスを制御される複数の主記憶装置と、
前記複数の演算処理装置の間を接続する通信経路とを有する情報処理装置の制御方法であって、
前記データアクセス制御部が、
他の演算処理装置が管理する主記憶装置に対する前記データアクセス要求の一つであるストア要求に応答して前記他の演算処理装置に前記データアクセス要求の一つであるデータ獲得要求を出力し、
同じストア要求のためのデータ獲得要求を再度出力するときに再実行情報を有するデータ獲得要求を出力し、
前記制御装置が、
他の演算処理装置から受信したデータアクセス要求を許可するか否かの第１の判定と、前記データ獲得要求が同じストア要求のための再実行の要求であるか否かの第２の判定とを行い、
前記第１の判定が前記データアクセス要求を許可しない場合にアクセス拒否応答を返信し、
前記第１の判定では前記データアクセス要求を許可しないと判定したが、前記第２の判定で当該データアクセス要求としてのデータ獲得要求が前記再実行の要求であると判定した場合には、前記データ獲得要求を許可する、情報処理装置の制御方法。
【請求項９】
命令を実行する演算処理部と、
前記演算処理部からのデータアクセス要求に応答するデータアクセス制御部と、
前記データアクセス制御部による前記データアクセス要求の転送を制御する制御装置とを有し、
前記データアクセス制御部は、他の演算処理装置が管理する主記憶装置に対する前記データアクセス要求の一つであるストア要求に応答して前記他の演算処理装置に前記データアクセス要求の一つであるデータ獲得要求を出力し、同じストア要求のためのデータ獲得要求を再度出力するときに再実行情報を有するデータ獲得要求を出力し、
前記制御装置は、他の演算処理装置から受信したデータアクセス要求を許可するか否かの第１の判定と、前記データ獲得要求が同じストア要求のための再実行の要求であるか否かの第２の判定とを行い、前記第１の判定が前記データアクセス要求を許可しない場合アクセス拒否応答を返信し、前記第１の判定では前記データアクセス要求を許可しないと判定したが、前記第２の判定で当該データアクセス要求としてのデータ獲得要求が前記再実行の要求であると判定した場合には、前記データ獲得要求を許可する、演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，情報処理装置、情報処理装置の制御方法及び演算処理装置に関する。
【背景技術】
【０００２】
マルチプロセッサシステムと呼ばれる情報処理装置は、演算処理装置であるCPU(Central Processing Unit)とそれに接続されるメモリとをそれぞれ有する複数の演算処理ノード（以下単にノードと称する）をLAN(Local Area Network)などの通信経路であるネットワークで接続する。このようなクラスタ構成の情報処理装置では、各ノードでそれぞれのOS(Operating System)が独立して動作するとともに、各ノードのメモリがクラスタ内の複数のノード間で共有される。
【０００３】
そのため、メモリへのアクセス要求を発行するCPU（ローカルCPUまたはL_CPU）は、そのアクセス先のメモリ領域を管理するCPU(ホームCPUまたはH_CPU)に対してデータアクセス要求を発行する。ホームCPUは、ローカルCPUからのデータアクセス要求に応答して、キャッシュコヒーレンシを保って、管理するメモリへのデータアクセス要求を処理する。なお、データアクセス要求は、メモリ内のデータを読み出すデータ獲得要求と、メモリ内にデータを書き込むまたは上書きするストア要求がある。
【０００４】
このようなノード間でデータアクセス要求が行われる場合、意図しないCPUからのアクセスを防ぐためにCPU間でアクセス制御が行われる。例えば、各ノードのCPUは、故障したCPUからのアクセス要求を拒否することで好ましくないアクセス要求の処理を回避したり、故障したCPUへのアクセス要求の発行を抑制したりする。CPU間でのアクセス制御については、以下の特許文献にも記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１７６１７９号公報
【特許文献２】特開２０１３−１４０４４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一方、CPUにおけるストア動作では、ソフトウエアを実行する、演算処理部であるCPUコアからのストア要求に応答して、キャッシュ制御部は、ストアデータを一旦ストアバッファに格納し要求元のCPUコアにストア完了応答を行う。その後、キャッシュ制御部は、ストアバッファに格納したストアデータを記憶部であるキャッシュメモリに書き込む（キャッシュ登録する）。
【０００７】
また、ストア動作では、キャッシュ制御部は、キャッシュメモリ内に排他状態（Exclusive State）でストア対象の元のデータが記憶されていることを条件に、ストアデータをストアバッファに格納してストア完了応答を出力する。したがって、キャッシュ制御部は、キャッシュメモリに元のデータが排他状態で記憶されていない場合、ホームCPUに排他型のデータ獲得要求を発行し、排他状態でデータを獲得しキャッシュ登録した後に、ストアバッファにストアデータを格納する。
【０００８】
しかしながら、ストア動作中にCPU間でキャッシュ競合（同一キャッシュラインのCPU間での取り合い）が発生すると、キャッシュメモリに登録した元のデータが他のCPUによる排他型データ獲得要求によりキャッシュメモリから追い出されてしまうことがある。その場合、キャッシュ制御部は、ストアデータをキャッシュメモリに上書きする前に、再度、ホームCPUに排他型データ獲得要求を発行し、ホームCPUのメモリ内のデータを排他状態で取得する必要がある。そして、キャッシュ制御部は、取得したデータをキャッシュメモリに登録した後にストアバッファ内のストアデータをキャッシュメモリに書き込む。
【０００９】
さらに、ストア動作中に、CPU間のキャッシュ競合と、CPU間のアクセス制御の切り替えとが、発生すると、再度発行された排他型データ獲得要求が、ホームCPUにより拒否されることがある。その結果、ホームCPUからアクセス拒否応答を受信したローカルCPUは、ストア動作を完結できず、ストア要求したCPUコアに例外割り込みを発生し、ストア要求元のソフトウエアは修正不能なエラーであるフェイタルエラーになる。このようなアクセス拒否エラーの発生は回避することが望ましい。
【００１０】
そこで、開示の第１の側面の目的は，ストア動作中のエラーの発生を抑制した情報処理装置、情報処理装置の制御方法及び演算処理装置を提供することにある。
【課題を解決するための手段】
【００１１】
開示の第１の側面は，命令を実行する演算処理部と、前記演算処理部からのデータアクセス要求に応答するデータアクセス制御部と、前記データアクセス制御部によるデータ転送を制御する制御装置とをそれぞれ有するとともに、通信経路を介して接続される複数の演算処理装置とを有し、
前記データアクセス制御部は、前記ストア要求に応答して他の演算処理装置にデータ獲得要求を出力し、同じストア要求のためのデータ獲得要求を再度出力するときに再実行情報を有するデータ獲得要求を出力し、
前記制御装置は、他の演算処理装置から受信したデータアクセス要求を許可するか否かの判定と、前記データ獲得要求が同じストア要求のための再実行の要求か否かの判定とを行い、前記データアクセス要求を許可しない場合アクセス拒否応答を返信し、前記データアクセス要求を許可しないが前記データ獲得要求が前記再実行の要求と判定した場合前記データ獲得要求を許可する、情報処理装置である。
【発明の効果】
【００１２】
第１の側面によれば，ストア動作中のエラーの発生を抑制することができる。
【図面の簡単な説明】
【００１３】
【図１】マルチプロセッサシステムである情報処理装置の概略構成を示す図である。
【図２】アクセストークンを利用する第1のCPU間のアクセス制御を行うマルチプロセッサシステムの構成を示す図である。
【図３】メモリ領域とトークンとの関係を示す図である。
【図４】アクセストークンを利用したCPU間のアクセス制御の概略を説明する図である。
【図５】アクセストークンを利用したCPU間のアクセス制御の概略を説明する図である。
【図６】ホームCPUによるアクセス制御のフローチャート図である。
【図７】アクセス要求が許可される場合のシーケンスを示す図である。
【図８】アクセス要求が拒否される場合のシーケンスを示す図である。
【図９】フェイルノードリストを利用する第２のCPU間のアクセス制御を行うマルチプロセッサシステムの構成を示す図である。
【図１０】フェイルノードリストによるアクセス制御の一例を示す図である。
【図１１】ローカルCPU(L_CPU)によるストア動作のフローチャート図である。
【図１２】CPU間でキャッシュ競合が発生しなかった場合のストア動作のシーケンスを示す図である。
【図１３】CPU間でキャッシュ競合が発生した場合のストア動作のシーケンスを示す図である。
【図１４】CPU間でキャッシュ競合が発生し且つストア動作中にCPU間のアクセス制御が切り替えられた場合のストア動作のシーケンスを示す図である。
【図１５】本実施の形態におけるマルチプロセッサシステム（情報処理装置）の構成を示す図である。
【図１６】本実施の形態におけるローカルCPU(L_CPU)でのストア動作を示すフローチャート図である。
【図１７】本実施の形態におけるホームCPU(H_CPU)でのアクセス要求に対する動作を示すフローチャート図である。
【図１８】本実施の形態におけるCPU間でキャッシュ競合が発生し且つストア動作中にCPU間のアクセス制御が切り替えられた場合のストア動作のシーケンスを示す図である。
【図１９】第２の実施の形態におけるCPUのプロセッサ部PRの構成例を示す図である。
【図２０】第２の実施の形態におけるCPUのシステムコントローラの構成例を示す図である。
【図２１】第２の実施の形態におけるアクセストークンレジスタの設定動作を示す図である。
【図２２】第３の実施の形態におけるCPUのシステムコントローラの構成を示す図である。
【図２３】第４の実施の形態におけるCPUのプロセッサPRの構成を示す図である。
【図２４】第４の実施の形態におけるCPUのシステムコントローラの構成を示す図である。
【図２５】第５の実施の形態におけるCPUのシステムコントローラSYS_CONの構成を示す図である。
【発明を実施するための形態】
【００１４】
図１は、マルチプロセッサシステムである情報処理装置の概略構成を示す図である。図１に示されたマルチプロセッサシステムは、複数のCPU（またはプロセッサ、演算処理装置）と複数のCPUそれぞれに設けられてアクセス制御される複数のメモリMEMと、複数のCPU間の通信を可能にする通信経路であるネットワークNWとを有する。CPUとメモリMEMとでノードを構成する。図１の例では、マルチプロセッサシステムは４つのノードを有し、したがって、４つのCPUと４つのメモリMEMを有する。
【００１５】
各CPUは、プロセッサ部（またプロセッサ回路）PRと制御装置であるシステムコントローラSYS_CONとを有する。プロセッサ部PRは、命令フェッチ部と命令デコーダと命令を実行する演算部などを有する単数または複数の演算処理部（または演算処理回路）であるCPUコアCOREと、CPUコアが発行するデータアクセス要求を処理するデータアクセス制御部（またはキャッシュ制御部、データアクセス制御回路、キャッシュ制御回路）DA_AC_CONとを有する。
【００１６】
データアクセス制御部DA_AC_CONは、データを保持するキャッシュメモリ（または記憶部）CACHEの制御やストアバッファST_BUFの制御などを行う。データアクセス要求がデータ獲得要求（ロード要求）の場合は、データアクセス制御部は、データアクセス要求に対してキャッシュタグ（図示せず）を検索しキャッシュヒットならキャッシュメモリのデータを応答し、キャッシュミスならシステムコントローラSYS_CONにデータアクセス要求を出力する。データアクセス要求がストア要求の場合は、データアクセス制御部は、キャッシュタグを検索してストア対象アドレスのデータが排他状態でキャッシュ登録されていることを条件にストアバッファST_BUFにストデータを格納し、その後キャッシュメモリに上書きする。
【００１７】
システムコントローラ（またはホームエージェント）SYS_CONは、トランザクション制御部TRNS_CONと、アクセス許可判定部（またはアクセス許可判定回路）AC_PRMと、アクセス制御情報レジスタAC_INFとを有する。トランザクション制御部TRNS_CONは、データアクセス制御部からのデータアクセス要求が同じノード内のメモリ（または主記憶装置）MEMへのアクセスの場合は、図示しないメモリアクセス制御部（またはメモリアクセス制御回路）を介してメモリにアクセスし、メモリからのデータ応答をデータアクセス制御部に転送する。また、データアクセス要求が他のノードのメモリへのアクセスの場合は、トランザクション制御部は、そのデータアクセス要求をネットワークNWを介してホームCPU（アクセス先のメモリを管理するCPU）に出力する。そして、ホームCPUからのデータ応答をデータアクセス制御部に転送する。
【００１８】
システムコントローラSYS_CON内のトランザクション制御部TRNS_CONは、他のCPUから出力されたデータアクセス要求についてアクセスを許可するか否かをアクセス許可判定部AC_PRMに依頼する。アクセス許可判定部AC_PRMは、例えばアクセス許可判定のためアクセス制御情報レジスタAC_INFを参照し、アクセス許可の判定を行う。判定結果がアクセス許可の場合、トランザクション制御部は、メモリMEMにアクセスし読み出したデータを要求元のCPUにデータ応答として返信する。判定結果がアクセス拒否の場合、トランザクション制御部は、要求元のCPUにアクセス拒否応答を返信する。
【００１９】
［CPU間のアクセス制御］
次に、CPU間のメモリへのアクセス制御について説明する。
【００２０】
複数のノードがネットワークNWを介して接続されたマルチプロセッサシステムは、複数のCPU間でメモリ領域を共有する。その場合、CPU間でそれぞれのCPUが管理するメモリへのアクセス制御（アクセスを許可または拒否の制御）が必要になる。第1のCPU間のアクセス制御として、複数のCPU間で共有するメモリ領域に対するアクセスプロテクションを行うために、一種の認証情報であるアクセストークンを利用するアクセス制御がある。CPU間で共有されるメモリ領域のメモリを管理するホームCPUが、そのメモリ領域を共有するローカルCPUにアクセストークンをあらかじめ通知しておき、ローカルCPUはアクセストークンを付加してアクセス要求をホームCPUに出力し、ホームCPUはアクセストークンが正しいか否か（許可できるか否か）を判定する。
【００２１】
または、第２のCPU間のアクセス制御として、各ノードのCPUが、他のノードが故障しているか否かを示すフェイルノードリストを所有し、他のノード宛てのアクセス要求を抑制したり他のノードからのアクセス要求を拒否する。各CPUはフェイルノードリストを適宜変更することで他のノードからのアクセス要求を動的に拒否または許可する。
【００２２】
図２は、アクセストークンを利用する第1のCPU間のアクセス制御を行うマルチプロセッサシステムの構成を示す図である。図２のマルチプロセッサシステムにおいて図１と異なる構成は、各CPUのシステムコントローラSYS_CONが、自ノードが管理する主記憶装置であるメモリMEM内のメモリ領域へのアクセス要求のための認証情報であるメモリトークンを設定しておくメモリトークンレジスタMTK_RGを有することである。メモリトークンレジスタMTK_RGは、アクセス制御情報レジスタAC_INFの一形態として設けられる。さらに、異なる構成は、各CPUのデータアクセス制御部DA_AC_CONが、ホームCPUから通知されたトークンを設定するアクセストークンレジスタACTK_RGを有することである。
【００２３】
図３は、メモリ領域とトークンとの関係を示す図である。メモリMEMは所定の物理アドレスPA[M:N]で特定される所定容量のメモリ領域であるセグメントSEGMENTに分割され、各セグメントに対応してそれぞれのトークンMTKが割り当てられる。図３の例では、物理アドレスPA[M:N]はメモリMEMの上位アドレス８桁に対応し、PA[M:N]=00からFFまでの２５６のセグメントに分割され、それぞれのセグメントに対応するトークンがメモリトークンMTKとしてメモリトークンレジスタMTK_RGに格納されている。
【００２４】
図４、図５は、アクセストークンを利用したCPU間のアクセス制御の概略を説明する図である。図４、図５には、４つのノードのCPU#1- CPU#4が示されている。ここでCPU#2がメモリMEM#2を管理するホームCPUであり、他のノードCPU#1,#3,#4がメモリMEM#2内のメモリ領域を共有しそのメモリ領域へのアクセスを要求するローカルCPUである。
【００２５】
図４において、ホームCPU#2の監視アプリケーションMON_APLは、メモリMEM#2内のあるメモリ領域のトークンをメモリトークンMTK=777としてメモリトークンレジスタMTK_RGに物理アドレスPA[M:N]に関連付けて設定する。さらに、ホームCPU#2の監視アプリケーションMON_APLは、メモリ領域を共有する他のノードCPU#1,#3,#4のアプリケーションAPLにメモリトークンMTK=777を通知し、それぞれのアプリケーションAPLはそのトークンをアクセストークンレジスタACTK_RG内に物理アドレスPA[M:N]に関連付けて格納する。
【００２６】
そして、例えばローカルCPU#1がメモリMEM#2内のメモリ領域にアクセス要求を発行する際に、アクセストークンレジスタACTK_RG内の物理アドレスPA[M:N]に対応付けられたアクセストークンACTK=777をアクセス要求に付加する。このアクセス要求を受信したホームCPU#2は、アクセス要求に付加されていたアクセストークンACTK=777と、メモリトークンレジスタMTK_RG内のアクセス先物理アドレスPA[M:N]に対応するメモリトークンMTK=777とを比較し、等しいためアクセス許可の判定を行う。そして、ホームCPU#2は、メモリMEM#2にアクセスしてアクセス要求に対応するデータをローカルCPU#1に応答する。
【００２７】
図５において、ホームCPU#2の監視アプリケーションMON_APLは、CPU#1に故障が発生したことを検出する。例えば、CPU#1へのある要求に対応する応答が所定時間内に受信できなかった場合などCPU#1と通信できなくなると、CPU#1が何らかの理由（暴走など）で故障したと判定する。それに応答して、ホームCPU#2の監視アプリケーションMON_APLは、自ノードのメモリトークンレジスタMTK_RG内のメモリトークンMTKをMTK=888に変更し、他のCPUのアプリケーションに変更後のトークンを通知する。CPU#3,#4は自ノードのアクセストークンレジスタACTK_RG内のアクセストークンを、新たなトークンTK=888に変更することができるが、故障しているCPU#1は新たなトークンに変更することができない。
【００２８】
その結果、ホームCPU#2は、CPU#3,#4からのアクセス要求については変更後のアクセストークンによりアクセスを許可しデータ応答するが、CPU#1からのアクセス要求は変更前のアクセストークンであるためアクセスを拒否しアクセス拒否応答をする。上記のような故障ノードからのアクセスを拒否する方法に利用する場合、アクセストークンが任意のタイミングで変更される。
【００２９】
図６は、ホームCPUによるアクセス制御のフローチャート図である。ホームCPU（図４，５の例ではCPU#2）では、トランザクション制御部TRNS_CONが、他のCPUからアクセス要求を受信すると（S1）、アクセス要求のメモリ領域に対応するアクセス制御情報AC_INF（アクセストークン方式の場合はメモリトークンMTK）をアクセス制御情報レジスタ（メモリトークンレジスタMTK_RG）から読み出し（S2）、アクセス要求のアクセスが許可されるか否かの判定をアクセス許可判定部AC_PRMに行わせる（S3）。そして、アクセス許可されていれば、アクセス要求を処理（リード要求ならメモリからデータを読み出し）してデータ応答を送信する（S4,S5）。一方、アクセス許可されていなければ、アクセス拒否応答を送信する（S6）。
【００３０】
図７は、アクセス要求が許可される場合のシーケンスを示す図である。ローカルCPU(L_CPU)のコアCOREがリード要求を発行すると（S50）、データアクセス制御部DA_AC_CONは、キャッシュミス判定し、アクセストークンを付加したデータアクセス要求をシステムコントローラSYS_CONを経由してホームCPU（H_CPU）に出力する（S51）。ホームCPU（H_CPU）は、アクセストークンに基づいてアクセス要求を許可し図示しないメモリにアクセスしてデータを読み出し（S52）、ローカルCPU(L_CPU)にデータ応答する（S53）。データ応答を受信したローカルCPU(L_CPU)では、データアクセス制御部DA_AC_CONが受信したデータをキャッシュメモリに登録し（S54）、コアCOREにデータを出力してリードが完了する（S55）。
【００３１】
図８は、アクセス要求が拒否される場合のシーケンスを示す図である。図７と同様に、ローカルCPUのコアCOREがリード要求を発行すると（S50）、データアクセス制御部がキャッシュミス判定し、アクセストークン付のメモリアクセス要求をホームCPUに出力する（S51）。ホームCPUは、アクセストークンがメモリトークンと一致せずアクセス拒否判定をして（S52）、ローカルCPUにアクセス拒否応答を出力する（S53A）。その結果、ローカルCPUのデータアクセス制御部DA_AC_CONは、アクセス拒否応答を要求元のコアCOREに出力する（S55A）。その結果、アクセス要求元のソフトウエアは、所定の例外処理を実行してアクセス要求を実行する。
【００３２】
図９は、フェイルノードリストを利用する第２のCPU間のアクセス制御を行うマルチプロセッサシステムの構成を示す図である。図９のマルチプロセッサシステムにおいて図１、図２と異なる構成として、各CPUのシステムコントローラSYS_CONが、アクセス制御情報レジスタAC_INFとして、自ノードが管理するメモリMEM内のメモリ領域への他のノードからのアクセス要求を拒否するか否かを示すフェイルノードリストFND_LSTをアクセス制御情報レジスタAC_INF内に有する。各CPUのデータアクセス制御部DA_AC_CONは、アクセス要求にノードIDを付加して出力するので、ホームCPUのシステムコントローラSYS_CONは、他のCPUからのアクセス要求に応答して、フェイルノードリストFND_LSTを参照しアクセス要求のノードIDがアクセスを拒否設定されているか否かを判定する。
【００３３】
フェイルノードリストによるアクセス制御では、アクセス要求に含まれてるノードIDに基づいてホームCPUとして他のCPUからのアクセス要求を拒否するか否かを自ノード内のフェイルノードリストFND_LSTの設定により制御することができる。したがって、例えば、暴走などにより故障したノードからのアクセス要求をノード別に拒否することができる。さらに、自ノードが電源OFFする直前に、（１）自ノード内のキャッシュメモリ内の他ノードから持ち出したデータを当該他ノードのメモリに書き戻す処理と（２）自ノードのメモリから他ノードが持ち出したデータを他ノードのキャッシュメモリから自ノードのメモリに書き戻す処理を完了する必要がある。そこで、電源OFFの直前に、前述の（１）（２）とはそれぞれ逆方向のデータの持ち出しの禁止を、フェイルノードリストを書き換えることで行うことができる。
【００３４】
図１０は、フェイルノードリストによるアクセス制御の一例を示す図である。図１０の例では、ノードNODE#0がCPU#0のキャッシュメモリCACHE内にノードNODE#2、NODE#1のメモリデータを持ち出し、ノードNODE#1がCPU#1内のキャッシュメモリCACHE内にノードNODE#0のメモリデータを持ち出し、ノードNODE#2がCPU#2内のキャッシュメモリCACHE内にノードNODE#1のメモリデータを持ち出している。この状態で、ノードNODE#1のCPU#1が電源OFFすると仮定する。
【００３５】
その場合、電源OFFする直前に、（１）電源OFF対象のCPU#1は、キャッシュメモリ内に持ち出しているノードNODE#0のメモリデータをノードNODE#0のメモリMEM#0に書き戻す必要がある。同様に、（２）CPU#0、CPU#2は、キャッシュメモリ内に持ち出しているノードNODE#1のメモリデータをノードNODE#1のメモリMEM#1に書き戻す必要がある。
【００３６】
そこで、上記の（１）（２）とは逆方向のデータの持ち出しを禁止するために、電源OFFするCPU#1のフェイルノードリストFND_LSTは全ノードをアクセス要求拒否のビット「１」に設定し、CPU#0,#2のフェイルノードリストFND_LSTはノードNODE#1をアクセス拒否ビット「１」に設定する。このようにフェイルノードリストを設定することで、電源OFF対象のノードNODE#1のCPU#1は、上記の（１）とは逆方向の全ノードから自ノードへのアクセス要求を拒否することができ、ノードNODE#0,#2のCPU#0,CPU#2は、上記の（２）とは逆方向のノードNODE#1から自ノード（NODE#0,NODE#2）へのアクセス要求を拒否することができる。
【００３７】
［ストア要求の処理と課題］
次に、ストア要求の処理がどのように行われるかについて説明し、前述のCPU間のアクセス制御と競合した場合の課題について説明する。
【００３８】
図１１は、ローカルCPU(L_CPU)によるストア動作のフローチャート図である。まず、データアクセス制御部DA_AC_CONは、コアCOREからストア要求を入力すると（S11）、キャッシュタグを探索してキャッシュメモリがストア対象のライン（キャッシュ登録単位のメモリ領域）を排他状態で記憶しているか否かを判定する（S12）。ここで排他状態とは、キャッシュメモリのMESIプロトコルの排他状態（EXCLUSIVEまたはMODIFIED）を意味し、ローカルCPU(L_CPU)のノードが単独でキャッシュメモリ内にラインのデータを記憶している状態である。キャッシュコヒーレンシを保つために、排他状態でないとそのキャッシュラインにストアデータを上書きすることが禁止される。
【００３９】
キャッシュメモリがストア対象のラインを排他状態で記憶している場合（S12のYES）、ローカルCPUのデータアクセス制御部DA_AC_CONは、ストア要求のストアデータをストアバッファST_BUFに格納し（S15）、コアおよびソフトウエアに対してストア命令完了通知を行う（S16）。
【００４０】
一方、キャッシュメモリがストア対象のラインを排他状態で記憶していない場合（S12のNO）、ホームCPUに対して排他型のデータ獲得要求を発行する（S14）。排他型のデータ獲得要求とは、他のCPUがストア対象のラインをキャッシュメモリに記憶していない状態でホームCPUのメモリのデータを読み出す要求である。そして、ホームCPUからデータ応答を受信すると、データアクセス制御部DA_AC_CONは、受信したデータをキャッシュメモリに排他状態で書き込み（登録し）、ストア要求のストアデータをストアバッファに格納し（S15）、上記と同様にストア命令完了通知を行う（S16）。
【００４１】
ストアデータをストアバッファに格納したとき、ストアバッファ内のストアデータをキャッシュ登録する要求がデータアクセス制御部DA_AC_CONの入力ポートに予約される。ここまでが、ストア動作のフェーズ１である。
【００４２】
次に、ストア動作のフェーズ２では、ストアデータのキャッシュ登録要求がデータアクセス制御部のパイプライン部に投入されると（S17）、データアクセス制御部は、キャッシュメモリがストア対象のラインを排他状態で記憶しているか否か判定し（S18）、記憶していれば（S18のYES）、ストアバッファ内のストアデータをキャッシュ登録する（S20）。一方、このときにキャッシュメモリがストア対象のラインを排他状態で記憶していない場合（S18のNO）、データアクセス制御部は、再度、ホームCPUに対して排他型のデータ獲得要求を発行する（S19）。そして、受信したデータをキャッシュメモリに排他状態で書き込み（登録し）、ストアバッファ内のストアデータをキャッシュメモリに上書きする（S20）。
【００４３】
上記のストアバッファ内のストアデータのキャッシュ登録要求が入力された後、工程S18でキャッシュメモリがストア対象のラインを排他型で記憶していないという状況になるのは、ストア命令完了S16からキャッシュ登録要求が入力されるまでの間に、他のCPUがストア対象のラインを排他型で獲得した場合である。この現象は、複数のCPU間で同一のキャッシュラインの取得が競合する場合（キャッシュ競合）に発生する。
【００４４】
以下、CPU間でキャッシュ競合が発生しなかった場合と、発生した場合のストア動作について説明する。
【００４５】
図１２は、CPU間でキャッシュ競合が発生しなかった場合のストア動作のシーケンスを示す図である。まず、ローカルCPU(L_CPU)にて、コアCOREからのストア要求が入力されると（S11）、データアクセス制御部DA_AC_CONは、キャッシュメモリ内にストア対象のラインが排他状態で記憶されているかチェックし（S12）、記憶されていなければ、システムコントローラを経由してホームCPU(H_CPU)に排他型のデータ獲得要求を出力する（S14）。このデータ獲得要求に応答して、ホームCPUがデータ応答すると（S14_2）、ローカルCPUのデータアクセス制御部DA_AC_CONは、受信したデータをキャッシュメモリに登録し（S15_2）、ストアデータをストアバッファに格納し（S15）、ストア要求元のコア（ソフトウエア）にストア完了応答をする（S16）。
【００４６】
その後、ストアバッファ内のデータのキャッシュ登録を要求するキャッシュ登録要求が入力されると（S17）、データアクセス制御部DA_AC_CONは、キャッシュメモリがストア対象のラインが排他状態で記憶していることを確認し（S18）、ストアバッファ内のストアデータをキャッシュメモリに上書き(登録)する（S20）。
【００４７】
図１３は、CPU間でキャッシュ競合が発生した場合のストア動作のシーケンスを示す図である。図１３では、ローカルCPU（L_CPU#1）にて、ストア要求が入力され（S11）、図１２と同様の処理を経て、ストアバッファにストアデータを格納しストア完了応答をする（S16）。
【００４８】
ただし、図１２と異なり、ローカルCPU(L_CPU#1)がストア完了応答をした後、別のローカルCPU(L_CPU#3)がホームCPU(H_CPU#2)に同じラインに対して排他型のデータ獲得要求を出力する（S60）。それに応答して、ホームCPU(H_CPU#2)が要求されたラインを持ち出しているローカルCPU(L_CPU#1)に、そのラインをキャッシュメモリから追い出す追い出し要求を出力する（S61）。この要求に応答して、ローカルCPU(L_CPU#1)のデータアクセス制御部DA_AC_CONは、キャッシュメモリ内のラインのデータを読み出し且つそのラインを削除し（S62）、ホームCPUに読み出しデータとともにデータ応答を返信する（S63）。そして、ホームCPUが要求されたデータをデータ応答でローカルCPU(L_CPU#3)に返信する（S64）。それに応答して、ローカルCPU(L_CPU#3)は返信されたデータをキャッシュ登録する（S65）。その結果、ローカルCPU(L_CPU#1)内のキャッシュメモリからストア対象のラインは削除されてしまう。
【００４９】
その後、ストアデータのキャッシュ登録要求がデータアクセス制御部DA_AC_CONに入力されると（S17）、データアクセス制御部は、キャッシュメモリがストア対象のラインを排他状態で記憶していないことを検出し（S18）、ストア対象のラインについて排他型のデータ獲得要求をホームCPUに出力する（S19）。
【００５０】
それに応答して、ホームCPUは別のローカルCPU(L_CPU#3)にストア対象ラインをキャッシュメモリから追い出す追い出し要求を送信し（S66）、ローカルCPU(L_CPU#3)からのデータ応答を受信し（S67）、ローカルCPU(L_CPU#1)にデータ応答を返信する（S19_2）。
【００５１】
このデータ応答に応答して、ローカルCPU(L_CPU#1)のデータアクセス制御部は、受信したラインのデータをキャッシュメモリに記憶し（S20_2）、ストアバッファ内のストアデータをキャッシュメモリに上書きする（S20）。
【００５２】
図１４は、CPU間でキャッシュ競合が発生し且つストア動作中にCPU間のアクセス制御が切り替えられた場合のストア動作のシーケンスを示す図である。この場合、アクセス制御の切り替えに起因して、ストア動作がフェイタルエラーで終わっている。
【００５３】
図１４では、ホームCPU(H_CPU#2)において、前半はCPU#1,CPU#3からのアクセス要求を許可するようアクセス制御情報が設定されていたが、後半にCPU#1,CPU#3からのアクセス要求を拒否するよう設定変更されている。図中、ホームCPUの位置にアクセス制御設定内容が示されている。
【００５４】
図１４のストア動作では、ローカルCPU（L_CPU#1）にてストア要求がデータアクセス制御部に入力され（S11）、図１３と同様の処理を経て、データアクセス制御部がストアバッファにストアデータを格納しストア完了応答をする（S16）。さらに、別のローカルCPU(L_CPU#3)がストア対象のラインについて排他型のデータ獲得要求をホームCPUに出力し（S60）、図１３と同様の処理を経て、獲得したラインのデータをキャッシュ登録する（S65）。その結果、ローカルCPU(L_CPU#1)はキャッシュメモリにストア対象のラインを記憶していない。
【００５５】
このタイミングで、ホームCPUに対するローカルCPU#1,CPU#3からのアクセス要求を拒否するようアクセス制御情報の設定が変更される。そして、ローカルCPU(L_CPU#1)のデータアクセス制御部が、ストアデータのキャッシュ登録要求を投入され（S17）、再度排他型のデータ獲得要求をホームCPUに出力するが（S19）、ホームCPUでのキャッシュ制御設定の変更によりその排他型のデータ獲得要求は拒否され（S19_3）、ローカルCPU(L_CPU#1)のデータアクセス制御部は、コアに例外割り込みを発行し（S20_3）、ソフトウエアはフェイタルエラーとなる（S20_4）。
【００５６】
すなわち、ローカルCPU(L_CPU#1)は、ストア要求に対してすでにストア完了応答をしたのにかかわらず、その後のストアデータのキャッシュ登録を完結することができない。そのため、ストア動作が破綻してしまっている。その結果、ストア要求時に同期してストア失敗を通知できず、例外割り込みをコアに出力してフェイタルエラーとなる。
【００５７】
このような非同期エラーが発生した場合、ストア命令を実行したソフトウエアにとってすでに完了済みのストアが失敗している恐れがある。そのため、ストアできたはずのメモリ領域が古いデータのままとなり、以降のソフトウエアの動作が保障されない。したがって、ソフトウエアは、このような非同期エラーを受信した場合、例外処理で回復することができず、システムフェイタルエラーとなる。
【００５８】
［第1の実施の形態］
図１５は、本実施の形態におけるマルチプロセッサシステム（情報処理装置）の構成を示す図である。図１５において図１と異なる構成は、プロセッサ部PR内のデータアクセス制御部DA_AC_CONに、ストア要求のためのデータ獲得要求が再実行であることを通知する再実行通知部RE_EXC_NTCが設けられていることである。さらに、図１と異なる構成は、システムコントローラSYS_CONが、アクセス許可判定部AC_PRMに、他のCPUからのデータ獲得要求が再実行であるか否かを判定する再実行判定部RE_EXC_JDが設けられていることである。
【００５９】
このような構成を有することで、アクセス要求を発行するローカルCPUとアクセス要求を受信するホームCPUの動作は、以下のようになる。まず、ローカルCPU側のデータアクセス制御部DA_AC_CONは、ストア要求に応答してホーム側演算処理装置にデータ獲得要求を出力し獲得データをキャッシュ登録した後、ストアバッファのデータをキャッシュ登録するときに、同じストア要求のためのデータ獲得要求を再実行するときに再実行情報を有するデータ獲得要求を発行する。再実行通知部RE_EXC_NTCが再実行情報をデータ獲得要求に付加する。
【００６０】
逆に、ホームCPU側のシステムコントローラSYS_CONでは、アクセス許可判定部AC_PRMが他のCPUから受信したデータアクセス要求を許可するか否かの判定を行うとき、再実行判定部RE_EXC_JDがデータ獲得要求が同じストア要求のための再実行の要求か否の判定を行う。そして、アクセス許可判定部は、データ獲得要求が再実行の要求ではないときは、アクセストークンやフェイルノードリストなどによりデータアクセス要求を許可するか否か判定し、データ獲得要求が再実行の要求であるときは、アクセストークンやフェイルノードリストなどに依らずデータ獲得要求を許可する。
【００６１】
図１６は、本実施の形態におけるローカルCPU(L_CPU)でのストア動作を示すフローチャート図である。図１６において、フェーズ１では、データアクセス制御部が、コアからストア要求を入力し（S11）、キャッシュタグを検索してキャッシュメモリにストア対象のラインが排他状態で記憶しているか確認し（S12）、記憶していればストアデータをストアバッファに格納し（S15）コアに対してストア命令完了通知を行う(S16)。一方、記憶していなければホームCPUにストア対象のラインを排他型で獲得する排他型のデータ獲得要求を出力し（S14）、ストアデータをストアバッファに格納し（S15）コアにストア命令完了通知を行う（S16）。ここまでは、図１１と同じである。
【００６２】
一方、フェーズ２では、データアクセス制御部が、入力ポートからキャッシュ登録要求を入力し（S17）、キャッシュタグを検索してキャッシュメモリにストア対象のラインが排他状態で記憶しているか確認し（S18）、記憶していればストアバッファのデータをキャッシュに上書きする（S20）。ここまでも図１１と同じである。一方、図１１と異なり、キャッシュメモリが排他型でストア対象のラインを記憶していない場合（S18のNO）、データアクセス制御部DA_AC_CONと再実行通知部RE_EXC_NTCとが再実行であることを通知する情報をデータ獲得要求に付加する（S19A）。これにより、ホームCPUは、データ獲得要求が同じストア動作での再実行であることを知ることができる。
【００６３】
その結果、ホームCPUはこのデータ獲得要求が再実行であることから、アクセス制御情報にかかわらずデータ獲得要求を許可し、ストア対象のラインを持ち出している別のローカルCPUのキャッシュメモリからストア対象のラインを追い出し、元のローカルCPUにデータ応答を行う。これに応答して、元のローカルCPUはデータ応答のデータをキャッシュ登録してからストアバッファのデータをキャッシュメモリに上書きする（S20）。
【００６４】
上記のフェーズ１のストア要求とフェーズ２のキャッシュ登録要求とは、データアクセス制御部（パイプライン部）へのパイプIDが異なるので、データアクセス制御部は、両フェーズを見分けることができる。
【００６５】
図１７は、本実施の形態におけるホームCPU(H_CPU)でのアクセス要求に対する動作を示すフローチャート図である。図１７において、図６と異なる工程は、アクセス許可判定部AC_PRMと再実行判定部RE_EXC_JDとが、まず、アクセス制御情報AC＿INFに基づいてアクセス許可すべきか否か判定し（S3）、それと共に、再実行判定部によりアクセス要求が同じストア動作での再実行であるか否かの判定を行う（S7）ことである。そして、アクセス制御情報に基づくアクセス許可判定が拒否の場合でも（S3のNO）、再実行判定部がアクセス要求が同じストア動作での再実行の要求であると判定すると（S7のYES）、ホームCPUはそのアクセス要求を許可して、ローカルCPUにデータ応答を行う。
【００６６】
図１８は、本実施の形態におけるCPU間でキャッシュ競合が発生し且つストア動作中にCPU間のアクセス制御が切り替えられた場合のストア動作のシーケンスを示す図である。図１８は、図１４と同様に、２つのローカルCPU(L_CPU#1,L_CPU#3)との間でホームCPUのデータについてキャッシュ競合が発生し、且つストア動作中にホームCPU(H_CPU#2)において２つのローカルCPU(L_CPU#1,L_CPU#3)からのアクセス要求に対する許可設定が拒否に切替えられている。
【００６７】
図１８では、図１４と同様に、ローカルCPU(L_CPU#1)がコアからのストア要求（S11）に応答して、排他型のデータ獲得要求をホームCPUに出力し（S14）、獲得したデータをストアバッファに書き込み（S15,S15_2）、コアにストア完了を応答する（S16）。さらに、図１８では、図１４と同様に、別のローカルCPU(L_CPU#3)が排他型のデータ獲得要求をホームCPUに出力し（S60）、ホームCPUがL_CPU#1のキャッシュメモリからキャッシュラインのデータを追い出してL_CPU#3にデータ応答し（S61,S63）、L_CPU#3が、獲得したデータをキャッシュ登録する（S65）。ここまでは図１４と同じであり、２つの排他型のデータ獲得要求はいずれもホームCPUでアクセス許可されている。
【００６８】
一方、図１４と異なり、図１８では、ローカルCPU(L_CPU#1)が、ストアデータのキャッシュ登録要求に応答して、ストア対象のラインについて排他型のデータ獲得要求を再度発行するとき、再実行通知部RE_EXC_NTCが再実行であることを示す情報をデータ獲得要求に付加し、データ獲得要求が同じストア動作での再実行であることを示して、再実行の排他型のデータ獲得要求をホームCPUに出力する（S19A）。このデータ獲得要求に応答して、ホームCPUのアクセス許可判定部AC_PRMは、ローカルCPU(L_CPU#1)からのアクセス要求は拒否する設定なっているが、再実行判定部RE_EXC_JDがデータ獲得要求が同じストア動作での再実行の要求であると判定するため、再実行の排他型のデータ獲得要求を許可する。
【００６９】
その結果、ローカルCPU(L_CPU#1)は、データ応答を受信し（S19_2）、獲得したデータをキャッシュメモリに登録後（S20_2）、ストアデータをキャッシュメモリに上書きする（S20）。
【００７０】
以上のように、本実施の形態では、他のローカルCPUとの間のキャッシュ競合により同じストア動作で排他型のデータ獲得要求を再実行するときに、ローカルCPUが再実行であることを示す情報をデータ獲得要求に付加する。そして、ホームCPUが再実行のデータ獲得要求の場合は、キャッシュ制御のアクセス要求拒否の設定にもかかわらず、その再実行のデータ獲得要求を許可する。したがって、ストア動作中にホームCPUにおいてアクセス制御の設定が切り替りローカルCPUからのアクセス要求を拒否する設定になっていても、非同期エラーが発生せず、ソフトウエアがフェイタルエラーになることがなく、システムの信頼性が向上する。そして、ホームCPUは、ストア動作での１回目のデータ獲得要求を許可したのであるから、再実行のデータ獲得要求も許可するようにしても、アクセス制御の観点で問題になることはない。
【００７１】
［第２の実施の形態］
図１９は、第２の実施の形態におけるCPUのプロセッサ部PRの構成例を示す図である。また、図２０は、第２の実施の形態におけるCPUのシステムコントローラの構成例を示す図である。
【００７２】
第２の実施の形態では、アクセス制御にアクセストークンとメモリトークンを使用し、さらに、同じストア動作での再実行の排他型のデータ獲得要求を通知するために、アクセストークン［13:0］に再実行の排他型のデータ獲得要求であることを示す専用のアクセストークンを割り当てる。例えば、専用のアクセストークンとして14’hXXXXを割り当てる。そして、ローカルCPU側のアクセス制御部が同じストア動作で排他型のデータ獲得要求を再度実行する場合、アクセストークンを専用の14’hXXXXに置き換えて、排他型のデータ獲得要求をシステムコントローラ経由でホームCPUに発行する。一方、ホームCPU側のシステムコントローラは、受信した排他型のデータ獲得要求のアクセストークンが専用のトークン14’hXXXXの場合は、同じストア動作での二度目の排他型のデータ獲得要求と判定し、アクセス制御が切替えられてアクセストークンとメモリトークンが不一致になっても、そのデータ獲得要求を許可する。
【００７３】
図１９において、アクセストークンレジスタACTK_RGは、アクセストークン要求ACTK_RQに応答してアクセス先アドレスに対応するアクセストークンACTK[13:0]を出力する。また、アクセストークンライト要求ACTK_WTに応答して、アクセストークンを設定する。
【００７４】
図１９のプロセッサ部PRでは、コアがデータアクセス要求DA_AC_RQとしてストア要求をデータアクセス制御部DA_AC_CONに入力すると、第１フェーズにおいて、データアクセス制御部は、キャッシュタグを検索してストア対象のラインがキャッシュメモリに排他型で記憶されているか否かチェックし、記憶されていない場合は、排他型のデータ獲得要求DA_AQ_RQをシステムコントローラを経由してホームCPUに出力する。この排他型のデータ獲得要求DA_AQ_RQには、アクセストークンレジスタACTK_RG内のアクセストークンACTK[13:0]を含める。そして、その排他型のデータ獲得要求に対応するデータを受信すると、キャッシュメモリCAHEに登録してから、ストアバッファST_BUFにストアデータを格納し、コアにストア完了通知を返信する。
【００７５】
次に、第２フェーズにおいて、ストアデータのキャッシュ登録要求が入力されると、データアクセス制御部DA_AC_CONは、ストア対象のラインがキャッシュメモリに記憶されているか否かをチェックし、記憶されていない場合は、二度目の排他型のデータ獲得要求をシステムコントローラを経由してホームCPUに出力する。この場合、再実行通知部RE_EXC_NTCの比較器CMP1は、第２フェーズのパイプラインID（PIPE_ID）が再実行要求ID(RE_EXC_ID)と等しいため、再実行を示す旨の情報である再実行フラグRE_EXC=FLGを１にする。その結果、データアクセス制御部DA_AC_CONのセレクタSELは専用のトークン14’hXXXXを選択し、アクセストークンACTK[13:0]としてデータ獲得要求DA_AQ_RQに付加して出力する。
【００７６】
図２０のホームCPU側のシステムコントローラSYS_CONでは、トランザクション制御部TRNS_CONが、他のCPUからの排他型のデータアクセス要求を受信すると、アクセス許可判定部AC_PRMにアクセス許可要求AC_PRM_RQをデータアクセス要求の情報RQ_INFと共に出力し、アクセス許可できるか否か判定させる。要求情報RQ_INFには、アクセス先の物理アドレスPA及びアクセストークンACTKと、アクセス元のノード情報などが含まれる。
【００７７】
通常のデータアクセス要求の場合は、アクセス許可判定部AC_PRMは、アクセス先の物理アドレスの一部PA[M:N]に対応するメモリトークンMTKをメモリトークンレジスタMTK_RGから読み出し、比較器CMP3がアクセストークンACTK[13:0]とメモリトークンMTK[13:0]を比較し、一致する場合は「１」を出力し、ORゲートは「１」を出力し、ANDゲートはアクセス許可状態を示す「１」のアクセス許可通知AC_PRM_NTCを出力する。このアクセス許可通知に応答して、トランザクション制御部TRNS_CONは、ストア対象のラインが他のCPUにより持ち出されている場合は追い出し要求を発行し、他のCPUからキャッシュメモリ内のラインのデータを追い出させる。そして、トランザクション制御部は、データ追い出し要求に対するデータ応答を受信した後、メモリMEMにメモリアクセスを実行し、読み出したデータを、データアクセス要求元にデータ応答する。
【００７８】
一方、他のCPUからのデータアクセス要求が、同じストア動作での二度目のデータ獲得要求の場合、要求情報RQ_INF内のアクセストークンACTKは、専用のトークン14’hXXXXである。それにより、再実行判定部RE_EXC_JD内の比較器CMP2は、アクセストークACTKが専用トークン14’hXXXXと等しいため、出力の再実行判定結果RE_EXC_RSを「１」とする。そして、アクセス制御が切替えられて、比較器CMP3にてアクセス先物理アドレスPA[M:N]に対応するメモリトークンMTKがデータ獲得要求元のアクセストークンACTKと不一致になっていても、再実行判定結果RE_EXC_RSが「１」であるため、ORゲートの出力が「１」、ANDゲートの出力が「１」となり、アクセス許可通知AC_PRM_NTCは「１」となり、二度目のデータ獲得要求は許可される。
【００７９】
以上のとおり、第２の実施の形態では、ローカルCPUのデータアクセス制御部DA_AC_CONが再実行通知部RE_EXC_NTCと共に、第２フェーズの再実行のデータ獲得要求の場合、通常のアクセストークンACTKを専用のアクセストークン14’hXXXに代えてデータ獲得要求の要求情報に含める。そして、ホームCPUのシステムコントローラSYS_CONでは、アクセストークンACTKが再実行専用のトークン14’hXXXXであることを検知し、アクセストークンACTKとメモリトークンMTKとの比較結果にかかわらず、アクセス要求を許可する。したがって、ストア動作の途中でアクセス制御が切替えられても、最初のデータ獲得要求が許可されている場合は、二度目のデータ獲得要求も許可される。
【００８０】
図２１は、第２の実施の形態におけるアクセストークンレジスタの設定動作を示す図である。例えば、ソフトウエアがアクセストークンレジスタACT_RGに新規のアクセストークンACTKを書き込む要求を発行すると（S31）、図１９の設定チェック部１０が、新規アクセストークンACTKが専用トークン14’hXXXXと一致するか否かを判定し（S32）、不一致の場合は新規アクセストークンACTKをアクセストークンレジスタACTK_RGに書き込み（S33）、ソフトウエアに書き込み完了通知を行う（S34）。一方、一致する場合は、新規アクセストークンACTKをアクセストークンレジスタACTK_RGに書き込まず、ソフトウエアに書き込み完了通知を行う（S34）。これにより、ソフトウエアが専用トークンをアクセストークンレジスタに設定して、アクセス制御に反するアクセス要求を発行して不正にデータを獲得することを防止する。
【００８１】
［第３の実施の形態］
第３の実施の形態では、アクセス制御にアクセストークンとメモリトークンによる制御と、ノードフェイルリストを利用する制御とを行い、さらに、同じストア動作での再実行の排他型のデータ獲得要求を通知するために、アクセストークン［13:0］を再実行の排他型のデータ獲得要求であることを示す専用のアクセストークンに置き換える。例えば、専用のアクセストークンとして14’hXXXXを割り当てる。そして、ローカルCPU側のデータアクセス制御部が同じストア動作で排他型のデータ獲得要求を再度実行する場合、アクセストークンを専用の14’hXXXXに置き換えて、排他型のデータ獲得要求をシステムコントローラに発行する。一方、ホームCPU側のシステムコントローラは、受信した排他型のデータ獲得要求のアクセストークンが専用のトークン14’hXXXXの場合は、同じストア動作での二度目の排他型のデータ獲得要求と判定し、アクセス制御が切替えられてアクセス元のノードIDがフェイルノードリスト内のノードIDと一致したとしても、そのデータ獲得要求を許可する。
【００８２】
図２２は、第３の実施の形態におけるCPUのシステムコントローラの構成を示す図である。第３の実施の形態におけるCPUのプロセッサ部PRの構成は図１９と同様である。
【００８３】
第３の実施の形態では、ローカルCPUでのストア要求に対する動作は、第２の実施の形態と同様である。つまり、ストア動作の第２フェーズでは、データアクセス制御部がアクセストークンACTKを再実行のデータ獲得要求であることを示すために、アクセストークンを専用トークン14’hXXXXに置き換える。
【００８４】
一方、ホームCPUでのデータアクセス要求に対する動作は、次の通りである。通常のデータアクセス要求の場合、アクセス許可判定部AC_PRMは、要求情報RQ_INFに含まれる要求ノード識別番号RQ_ND_ID[3:0]をデコーダDECでデコードし１６ビットのノードID信号を出力する。そして、１６個のアンドAND2が１６ビットのデコード出力と、フェイルノードリストFND_LST[15:0]の１６ビットとの論理積をそれぞれ出力し、ノアゲートNORが１６個の論理積出力のNOR出力を出力する。フェイルノードリストFND_LST[15:0]は、フェイルノードに対応するビットが「１」にフェイルノードではないビットが「０」に設定される。したがって、１６ビットのうち１組一致すれば、NOR出力は出力を「０」にする。その場合は、アクセス許可通知AC_PRM_NTCは「０」になりアクセスは拒否される。すべて不一致であれば、NOR出力は出力を「１」にする。この場合アクセス許可通知信号は「１」になりアクセスは許可される。
【００８５】
そして、ストア動作のフェーズ２において、同じストア動作での再実行のデータ獲得要求を受信した場合、その要求に付加されたアクセストークンACTKは専用トークン14’hXXXXである。その結果、再実行判定部RE_EXC_JDは、アクセストークンACTK[13:0]は専用トークン14’hXXXXと一致することを検出し、再実行判定結果RE_EXC_RSを「１」にする。そのため、ORゲートORは出力を「１」にして、アクセス許可通知AC_PRM_NTCを「１」にするので、同じストア動作での再実行のデータ獲得要求は、アクセス制御が切替えられて要求元のノードがフェイルノードリストで「１」に設定されていても、アクセス許可される。
【００８６】
第２及び第３の実施の形態では、再実行のデータ獲得要求であることを通知するために、既存のアクセストークンを専用トークンに置き換える。したがって、データアクセス要求に新たなフィールドを設けなくても、対応可能である。
【００８７】
［第４の実施の形態］
第４の実施の形態では、アクセストークンとメモリトークンを利用してCPU間のアクセス制御を行う。そして、ローカルCPUのデータアクセス制御部が、ストア動作の第２フェーズでの再実行のデータ獲得要求に再実行であることを示す再実行フラグを付加して、ホームCPUに出力する。そして、ホームCPUは、データアクセス要求であるデータ獲得要求に、再実行フラグが付加されていたら、アクセストークンがメモリトークンと不一致でも、そのデータ獲得要求を許可する。
【００８８】
図２３は、第４の実施の形態におけるCPUのプロセッサPRの構成を示す図である。図１９と異なり、再実行通知部RE_EXC_NTCは、パイプラインID(PIPE_ID)がストア動作の第２フェーズに対応するパイプラインID、RE_EXC_IDと一致したら、再実行フラグRE_EXC_FLGを「１」にする。データアクセス制御部DA_AC_CONはこの再実行フラグRE_EXC_FLGをアクセストークンACTKと共に、データ獲得要求DA_AQ_RQに付加して、システムコントローラを経由し、ホームCPUに出力する。
【００８９】
図２４は、第４の実施の形態におけるCPUのシステムコントローラの構成を示す図である。図２０と異なり、図２４では、再実行判定部RE_EXC_JDが要求情報RQ_INFに含まれる再実行フラグRE_EXC_FLGをそのままアクセス許可判定部AC_PRMのORゲートに入力する。ORゲートのもう一つの入力は、アクセス要求に含まれるアクセストークンACTK[13:0]をアクセス要求の物理アドレスPAに対応するメモリトークンMTK[13:0]と比較する比較器CMP3の出力である。
【００９０】
したがって、通常のデータアクセス要求の場合は、比較器CMP3がアクセストークンとメモリトークンとを比較して要求を許可するか否か判定し、ストア動作の第２フェーズでのデータアクセス要求では、再実行フラグRE_EXC_FLGが「１」であるので、アクセス制御が切替えられてアクセストークンがメモリトークンと一致しなくても、データ獲得要求が許可される。
【００９１】
［第５の実施の形態］
第５の実施の形態では、ノードフェイルリストを利用してCPU間のアクセス制御を行う。そして、ローカルCPUのデータアクセス制御部が、ストア動作の第２フェーズでの再実行のデータ獲得要求に再実行であることを示す再実行フラグを付加して、ホームCPUに出力する。そして、ホームCPUは、データアクセス要求であるデータ獲得要求に再実行フラグが付加されていたら、アクセス要求元のノードIDがフェイルノードリストと一致しても、そのデータ獲得要求を許可する。
【００９２】
図２５は、第５の実施の形態におけるCPUのシステムコントローラSYS_CONの構成を示す図である。一方、CPUのプロセッサPRの構成は図２３と同じであり、動作も同様である。
【００９３】
図２５において、図２２と異なり、再実行判定部RE_EXC_JDが要求情報RQ_INFに含まれる再実行フラグRE_EXC_FLGをそのままアクセス許可判定部AC_PRMのORゲートに入力する。ORゲートのもう一つの入力は、アクセス要求元の要求ノードID（RQ_ND_ID[3:0]）がフェイルノードリストFND_LST[15:0]内のファイルノードを示すビットと一致するか否かを判定するANDゲートAND2とNORゲートNORの判定部の出力である。
【００９４】
したがって、通常のデータアクセス要求の場合は、データアクセス要求元のノードがフェイルノードリストFND_LSTに含まれているか否かでアクセス要求を許可するか否か判定し、ストア動作の第２フェーズでのデータアクセス要求では、再実行フラグRE_EXC_FLGが「１」であるので、アクセス制御が切替えられてアクセストークンがメモリトークンと一致しなくても、データ獲得要求が許可される。
【００９５】
以上のとおり、本実施の形態によれば、ストア動作中にキャッシュ競合が発生し、第２フェーズで排他的なデータ獲得要求を再実行した場合、アクセス制御の設定が変更されていても、ホームCPUが再実行のデータ獲得要求を許可する。
【００９６】
以上の実施の形態をまとめると，次の付記のとおりである。
【００９７】
（付記１）
命令を実行する演算処理部と、前記演算処理部からのデータアクセス要求に応答するデータアクセス制御部と、前記データアクセス制御部によるデータ転送を制御する制御装置とをそれぞれ有するとともに、通信経路を介して接続される複数の演算処理装置とを有し、
前記データアクセス制御部は、前記ストア要求に応答して他の演算処理装置にデータ獲得要求を出力し、同じストア要求のためのデータ獲得要求を再度出力するときに再実行情報を有するデータ獲得要求を出力し、
前記制御装置は、他の演算処理装置から受信したデータアクセス要求を許可するか否かの判定と、前記データ獲得要求が同じストア要求のための再実行の要求か否かの判定とを行い、前記データアクセス要求を許可しない場合アクセス拒否応答を返信し、前記データアクセス要求を許可しないが前記データ獲得要求が前記再実行の要求と判定した場合前記データ獲得要求を許可する、情報処理装置。
【００９８】
(付記２)
前記データアクセス要求を行うローカル側演算処理装置の前記データアクセス制御部は、前記データアクセス要求に対応する認証情報であるアクセス認証情報を付加して前記データアクセス要求を出力し、
前記データアクセス要求を受けるホーム側演算処理装置の前記制御装置は、受信したデータアクセス要求のアクセス認証情報が、自装置が管理する主記憶装置に記憶するメモリ認証情報と一致する場合、前記データアクセス要求に対応するデータへのアクセスを許可する、付記１に記載の情報処理装置。
【００９９】
(付記３)
前記ローカル側演算処理装置の前記データアクセス制御部は、前記再実行情報を有するデータ獲得要求を発行するとき、前記アクセス認証情報として再実行用認証情報を付加して前記データ獲得要求を出力し、
前記ホーム側演算処理装置の前記制御装置は、前記データ獲得要求のアクセス認証情報が前記再実行用認証情報の場合に前記再実行の要求と判定する、付記２に記載の情報処理装置。
【０１００】
(付記４)
前記ローカル側演算処理装置の前記データアクセス制御部は、前記再実行情報を有するデータ獲得要求を発行するとき、再実行情報を付加して前記データ獲得要求を出力し、
前記ホーム側演算処理装置の前記制御装置は、前記データ獲得要求に前記再実行情報が付加されている場合に前記再実行の要求と判定する、付記１または２に記載の情報処理装置。
【０１０１】
(付記５)
前記複数の演算処理装置のそれぞれと複数の主記憶装置のそれぞれとでノードを構成し、
データアクセス要求を受けるホーム側演算処理装置の前記制御装置は、前記データアクセス要求を発行したノードがデータアクセス要求を拒否する拒否ノードに該当する場合に、前記データアクセス要求を拒否する、付記１に記載の情報処理装置。
【０１０２】
(付記６)
前記データアクセス要求を行うローカル側演算処理装置の前記データアクセス制御部は、アクセス認証情報を付加してデータアクセス要求を出力し、前記再実行情報を有するデータ獲得要求を発行するとき、前記アクセス認証情報として再実行用認証情報を付加してデータ獲得要求を出力し、
前記ホーム側演算処理装置の前記制御装置は、前記データ獲得要求の前記アクセス認証情報が再実行用認証情報の場合に前記再実行の要求と判定する、付記５に記載の情報処理装置。
【０１０３】
(付記７)
前記データアクセス要求を行うローカル側演算処理装置の前記データアクセス制御部は、前記再実行情報を有するデータ獲得要求を発行するとき、再実行情報を付加してデータ獲得要求を出力し、
前記ホーム側演算処理装置の前記制御装置は、受信したデータ獲得要求に再実行情報が付加されている場合に前記再実行の要求と判定する、付記５に記載の情報処理装置。
【０１０４】
（付記８）
前記ストア要求におけるデータ獲得要求は、他の演算処理装置によるデータ獲得状態を禁止する排他型のデータ獲得要求であり、
前記データ獲得要求に応答して、当該データ獲得要求のデータを記憶する主記憶装置を管理するホーム側演算処理装置は、前記他の演算処理装置のキャッシュメモリから前記データ獲得要求のデータを追い出し、その後前記データ獲得要求のデータを前記データ獲得要求を出力したローカル側演算処理装置に応答する、付記１に記載の情報処理装置。
【０１０５】
（付記９）
前記データアクセス要求は、前記データ獲得要求とデータストア要求とを有する、付記１に記載の情報処理装置。
【０１０６】
(付記１０)
命令を実行する演算処理部と、前記演算処理部からのデータアクセス要求に応答するデータアクセス制御部と、前記データアクセス制御部によるデータ転送を制御する制御装置とをそれぞれ有する複数の演算処理装置と、
前記複数の演算処理装置それぞれに設けられアクセスを制御される複数の主記憶装置と、
前記複数の演算処理装置の間を接続する通信経路とを有する情報処理装置の制御方法であって、
前記データアクセス制御部が、
前記ストア要求に応答して他の演算処理装置にデータ獲得要求を出力し、
同じストア要求のためのデータ獲得要求を再度出力するときに再実行情報を有するデータ獲得要求を出力し、
前記制御装置が、
他の演算処理装置から受信したデータアクセス要求を許可するか否かの判定と、前記データ獲得要求が同じストア要求のための再実行の要求か否の判定とを行い、
前記データアクセス要求を許可しない場合にアクセス拒否応答を返信し、
前記データアクセス要求を許可しないが前記データ獲得要求が前記再実行の要求と判定した場合に前記データ獲得要求を許可する、情報処理装置の制御方法。
【０１０７】
（付記１１）
前記データアクセス要求を行うローカル側演算処理装置の前記データアクセス制御部は、前記データアクセス要求に対応する認証情報であるアクセス認証情報を付加して前記データアクセス要求を出力し、
前記データアクセス要求を受けるホーム側演算処理装置の前記制御装置は、受信したデータアクセス要求のアクセス認証情報が、自装置が管理する主記憶装置に記憶するメモリ認証情報と一致する場合、前記データアクセス要求に対応するデータへのアクセスを許可する、付記１０に記載の情報処理装置の制御方法。
【０１０８】
（付記１２）
前記ローカル側演算処理装置の前記データアクセス制御部は、前記再実行情報を有するデータ獲得要求を発行するとき、前記アクセス認証情報として再実行用認証情報を付加して前記データ獲得要求を出力し、
前記ホーム側演算処理装置の前記制御装置は、前記データ獲得要求のアクセス認証情報が前記再実行用認証情報の場合に前記再実行の要求と判定する、付記１１に記載の情報処理装置の制御方法。
【０１０９】
（付記１３）
前記ローカル側演算処理装置の前記データアクセス制御部は、前記再実行情報を有するデータ獲得要求を発行するとき、再実行情報を付加して前記データ獲得要求を出力し、
前記ホーム側演算処理装置の前記制御装置は、前記データ獲得要求に前記再実行情報が付加されている場合に前記再実行の要求と判定する、付記１０または１１に記載の情報処理装置の制御方法。
【０１１０】
(付記１４)
命令を実行する演算処理部と、
前記演算処理部からのデータアクセス要求に応答するデータアクセス制御部と、
前記データアクセス制御部によるデータ転送を制御し、対応するメモリのアクセスを制御する制御装置とを有し、
前記データアクセス制御部は、前記ストア要求に応答して他の演算処理装置にデータ獲得要求を出力し、同じストア要求のためのデータ獲得要求を再度出力するときに再実行情報を有するデータ獲得要求を出力し、
前記制御装置は、他の演算処理装置から受信したデータアクセス要求を許可するか否かの判定と、前記データ獲得要求が同じストア要求のための再実行の要求か否の判定とを行い、前記データアクセス要求を許可しない場合にアクセス拒否応答を返信し、前記データアクセス要求を許可しないが前記データ獲得要求が前記再実行の要求と判定した場合に前記データ獲得要求を許可する、演算処理装置。
【符号の説明】
【０１１１】
CPU：プロセッサ、演算処理装置、CPUチップ
H_CPU：ホームCPU（メモリを管理しているCPU）
L_CPU：ローカルCPU(H_CPUにデータアクセス要求を発行するリクエストCPU)
MEM：メモリ、メインメモリ
PR：プロセッサ回路、演算処理部
CORE：CPUコア、命令制御回路、命令制御部
DA_AC_CON：データアクセス制御回路（またはデータアクセス制御部）、キャッシュ制御回路（またはキャッシュ制御部）（パイプライン構成）
ST_BUF：ストアバッファ
CACHE：キャッシュメモリ（含むキャッシュタグ）
SYS_CON：システムコントローラ、ホームエージェント
TRNS_CON：トランザクション制御部
AC_PRM：アクセス許可判定回路（アクセス許可判定部）
AC_INF：アクセス制御情報
NW：プロセッサ間ネットワーク（または通信経路）
ACTK_RG：アクセストークンレジスタ
ACTK：アクセストークン（アクセス認証情報）
MTK_RG：メモリトークンレジスタ
MTK：メモリトークン（メモリ認証情報）
APL：アプリケーションプログラム
MON_APL：監視アプリケーションプログラム
【図１】
0006680973.tif 000002
【図２】
0006680973.tif 000003
【図３】
0006680973.tif 000004
【図４】
0006680973.tif 000005
【図５】
0006680973.tif 000006
【図６】
0006680973.tif 000007
【図７】
0006680973.tif 000008
【図８】
0006680973.tif 000009
【図９】
0006680973.tif 000010
【図１０】
0006680973.tif 000011
【図１１】
0006680973.tif 000012
【図１２】
0006680973.tif 000013
【図１３】
0006680973.tif 000014
【図１４】
0006680973.tif 000015
【図１５】
0006680973.tif 000016
【図１６】
0006680973.tif 000017
【図１７】
0006680973.tif 000018
【図１８】
0006680973.tif 000019
【図１９】
0006680973.tif 000020
【図２０】
0006680973.tif 000021
【図２１】
0006680973.tif 000022
【図２２】
0006680973.tif 000023
【図２３】
0006680973.tif 000024
【図２４】
0006680973.tif 000025
【図２５】
0006680973.tif 000026