JP6680973B2 - 情報処理装置、情報処理装置の制御方法及び演算処理装置 - Google Patents

情報処理装置、情報処理装置の制御方法及び演算処理装置 Download PDF

Info

Publication number
JP6680973B2
JP6680973B2 JP2016001676A JP2016001676A JP6680973B2 JP 6680973 B2 JP6680973 B2 JP 6680973B2 JP 2016001676 A JP2016001676 A JP 2016001676A JP 2016001676 A JP2016001676 A JP 2016001676A JP 6680973 B2 JP6680973 B2 JP 6680973B2
Authority
JP
Japan
Prior art keywords
request
data
access
data access
data acquisition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016001676A
Other languages
English (en)
Other versions
JP2017123051A (ja
Inventor
隆宏 野尻
隆宏 野尻
雅紀 日下田
雅紀 日下田
秀和 小佐野
秀和 小佐野
誠之 岡田
誠之 岡田
仁 ▲高▼橋
仁 ▲高▼橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016001676A priority Critical patent/JP6680973B2/ja
Publication of JP2017123051A publication Critical patent/JP2017123051A/ja
Application granted granted Critical
Publication of JP6680973B2 publication Critical patent/JP6680973B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は,情報処理装置、情報処理装置の制御方法及び演算処理装置に関する。
マルチプロセッサシステムと呼ばれる情報処理装置は、演算処理装置である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間でのアクセス制御については、以下の特許文献にも記載されている。
特開2009−176179号公報 特開2013−140446号公報
一方、CPUにおけるストア動作では、ソフトウエアを実行する、演算処理部であるCPUコアからのストア要求に応答して、キャッシュ制御部は、ストアデータを一旦ストアバッファに格納し要求元のCPUコアにストア完了応答を行う。その後、キャッシュ制御部は、ストアバッファに格納したストアデータを記憶部であるキャッシュメモリに書き込む(キャッシュ登録する)。
また、ストア動作では、キャッシュ制御部は、キャッシュメモリ内に排他状態(Exclusive State)でストア対象の元のデータが記憶されていることを条件に、ストアデータをストアバッファに格納してストア完了応答を出力する。したがって、キャッシュ制御部は、キャッシュメモリに元のデータが排他状態で記憶されていない場合、ホームCPUに排他型のデータ獲得要求を発行し、排他状態でデータを獲得しキャッシュ登録した後に、ストアバッファにストアデータを格納する。
しかしながら、ストア動作中にCPU間でキャッシュ競合(同一キャッシュラインのCPU間での取り合い)が発生すると、キャッシュメモリに登録した元のデータが他のCPUによる排他型データ獲得要求によりキャッシュメモリから追い出されてしまうことがある。その場合、キャッシュ制御部は、ストアデータをキャッシュメモリに上書きする前に、再度、ホームCPUに排他型データ獲得要求を発行し、ホームCPUのメモリ内のデータを排他状態で取得する必要がある。そして、キャッシュ制御部は、取得したデータをキャッシュメモリに登録した後にストアバッファ内のストアデータをキャッシュメモリに書き込む。
さらに、ストア動作中に、CPU間のキャッシュ競合と、CPU間のアクセス制御の切り替えとが、発生すると、再度発行された排他型データ獲得要求が、ホームCPUにより拒否されることがある。その結果、ホームCPUからアクセス拒否応答を受信したローカルCPUは、ストア動作を完結できず、ストア要求したCPUコアに例外割り込みを発生し、ストア要求元のソフトウエアは修正不能なエラーであるフェイタルエラーになる。このようなアクセス拒否エラーの発生は回避することが望ましい。
そこで、開示の第1の側面の目的は,ストア動作中のエラーの発生を抑制した情報処理装置、情報処理装置の制御方法及び演算処理装置を提供することにある。
開示の第1の側面は,命令を実行する演算処理部と、前記演算処理部からのデータアクセス要求に応答するデータアクセス制御部と、前記データアクセス制御部によるデータ転送を制御する制御装置とをそれぞれ有するとともに、通信経路を介して接続される複数の演算処理装置とを有し、
前記データアクセス制御部は、前記ストア要求に応答して他の演算処理装置にデータ獲得要求を出力し、同じストア要求のためのデータ獲得要求を再度出力するときに再実行情報を有するデータ獲得要求を出力し、
前記制御装置は、他の演算処理装置から受信したデータアクセス要求を許可するか否かの判定と、前記データ獲得要求が同じストア要求のための再実行の要求か否かの判定とを行い、前記データアクセス要求を許可しない場合アクセス拒否応答を返信し、前記データアクセス要求を許可しないが前記データ獲得要求が前記再実行の要求と判定した場合前記データ獲得要求を許可する、情報処理装置である。
第1の側面によれば,ストア動作中のエラーの発生を抑制することができる。
マルチプロセッサシステムである情報処理装置の概略構成を示す図である。 アクセストークンを利用する第1のCPU間のアクセス制御を行うマルチプロセッサシステムの構成を示す図である。 メモリ領域とトークンとの関係を示す図である。 アクセストークンを利用したCPU間のアクセス制御の概略を説明する図である。 アクセストークンを利用したCPU間のアクセス制御の概略を説明する図である。 ホームCPUによるアクセス制御のフローチャート図である。 アクセス要求が許可される場合のシーケンスを示す図である。 アクセス要求が拒否される場合のシーケンスを示す図である。 フェイルノードリストを利用する第2のCPU間のアクセス制御を行うマルチプロセッサシステムの構成を示す図である。 フェイルノードリストによるアクセス制御の一例を示す図である。 ローカルCPU(L_CPU)によるストア動作のフローチャート図である。 CPU間でキャッシュ競合が発生しなかった場合のストア動作のシーケンスを示す図である。 CPU間でキャッシュ競合が発生した場合のストア動作のシーケンスを示す図である。 CPU間でキャッシュ競合が発生し且つストア動作中にCPU間のアクセス制御が切り替えられた場合のストア動作のシーケンスを示す図である。 本実施の形態におけるマルチプロセッサシステム(情報処理装置)の構成を示す図である。 本実施の形態におけるローカルCPU(L_CPU)でのストア動作を示すフローチャート図である。 本実施の形態におけるホームCPU(H_CPU)でのアクセス要求に対する動作を示すフローチャート図である。 本実施の形態におけるCPU間でキャッシュ競合が発生し且つストア動作中にCPU間のアクセス制御が切り替えられた場合のストア動作のシーケンスを示す図である。 第2の実施の形態におけるCPUのプロセッサ部PRの構成例を示す図である。 第2の実施の形態におけるCPUのシステムコントローラの構成例を示す図である。 第2の実施の形態におけるアクセストークンレジスタの設定動作を示す図である。 第3の実施の形態におけるCPUのシステムコントローラの構成を示す図である。 第4の実施の形態におけるCPUのプロセッサPRの構成を示す図である。 第4の実施の形態におけるCPUのシステムコントローラの構成を示す図である。 第5の実施の形態におけるCPUのシステムコントローラSYS_CONの構成を示す図である。
図1は、マルチプロセッサシステムである情報処理装置の概略構成を示す図である。図1に示されたマルチプロセッサシステムは、複数のCPU(またはプロセッサ、演算処理装置)と複数のCPUそれぞれに設けられてアクセス制御される複数のメモリMEMと、複数のCPU間の通信を可能にする通信経路であるネットワークNWとを有する。CPUとメモリMEMとでノードを構成する。図1の例では、マルチプロセッサシステムは4つのノードを有し、したがって、4つのCPUと4つのメモリ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はアクセストークンが正しいか否か(許可できるか否か)を判定する。
または、第2のCPU間のアクセス制御として、各ノードのCPUが、他のノードが故障しているか否かを示すフェイルノードリストを所有し、他のノード宛てのアクセス要求を抑制したり他のノードからのアクセス要求を拒否する。各CPUはフェイルノードリストを適宜変更することで他のノードからのアクセス要求を動的に拒否または許可する。
図2は、アクセストークンを利用する第1のCPU間のアクセス制御を行うマルチプロセッサシステムの構成を示す図である。図2のマルチプロセッサシステムにおいて図1と異なる構成は、各CPUのシステムコントローラSYS_CONが、自ノードが管理する主記憶装置であるメモリMEM内のメモリ領域へのアクセス要求のための認証情報であるメモリトークンを設定しておくメモリトークンレジスタMTK_RGを有することである。メモリトークンレジスタMTK_RGは、アクセス制御情報レジスタAC_INFの一形態として設けられる。さらに、異なる構成は、各CPUのデータアクセス制御部DA_AC_CONが、ホームCPUから通知されたトークンを設定するアクセストークンレジスタACTK_RGを有することである。
図3は、メモリ領域とトークンとの関係を示す図である。メモリMEMは所定の物理アドレスPA[M:N]で特定される所定容量のメモリ領域であるセグメントSEGMENTに分割され、各セグメントに対応してそれぞれのトークンMTKが割り当てられる。図3の例では、物理アドレスPA[M:N]はメモリMEMの上位アドレス8桁に対応し、PA[M:N]=00からFFまでの256のセグメントに分割され、それぞれのセグメントに対応するトークンがメモリトークンMTKとしてメモリトークンレジスタMTK_RGに格納されている。
図4、図5は、アクセストークンを利用したCPU間のアクセス制御の概略を説明する図である。図4、図5には、4つのノードのCPU#1- CPU#4が示されている。ここでCPU#2がメモリMEM#2を管理するホームCPUであり、他のノードCPU#1,#3,#4がメモリMEM#2内のメモリ領域を共有しそのメモリ領域へのアクセスを要求するローカルCPUである。
図4において、ホーム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に応答する。
図5において、ホーム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からのアクセス要求は変更前のアクセストークンであるためアクセスを拒否しアクセス拒否応答をする。上記のような故障ノードからのアクセスを拒否する方法に利用する場合、アクセストークンが任意のタイミングで変更される。
図6は、ホームCPUによるアクセス制御のフローチャート図である。ホームCPU(図4,5の例ではCPU#2)では、トランザクション制御部TRNS_CONが、他のCPUからアクセス要求を受信すると(S1)、アクセス要求のメモリ領域に対応するアクセス制御情報AC_INF(アクセストークン方式の場合はメモリトークンMTK)をアクセス制御情報レジスタ(メモリトークンレジスタMTK_RG)から読み出し(S2)、アクセス要求のアクセスが許可されるか否かの判定をアクセス許可判定部AC_PRMに行わせる(S3)。そして、アクセス許可されていれば、アクセス要求を処理(リード要求ならメモリからデータを読み出し)してデータ応答を送信する(S4,S5)。一方、アクセス許可されていなければ、アクセス拒否応答を送信する(S6)。
図7は、アクセス要求が許可される場合のシーケンスを示す図である。ローカル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)。
図8は、アクセス要求が拒否される場合のシーケンスを示す図である。図7と同様に、ローカルCPUのコアCOREがリード要求を発行すると(S50)、データアクセス制御部がキャッシュミス判定し、アクセストークン付のメモリアクセス要求をホームCPUに出力する(S51)。ホームCPUは、アクセストークンがメモリトークンと一致せずアクセス拒否判定をして(S52)、ローカルCPUにアクセス拒否応答を出力する(S53A)。その結果、ローカルCPUのデータアクセス制御部DA_AC_CONは、アクセス拒否応答を要求元のコアCOREに出力する(S55A)。その結果、アクセス要求元のソフトウエアは、所定の例外処理を実行してアクセス要求を実行する。
図9は、フェイルノードリストを利用する第2のCPU間のアクセス制御を行うマルチプロセッサシステムの構成を示す図である。図9のマルチプロセッサシステムにおいて図1、図2と異なる構成として、各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する直前に、(1)自ノード内のキャッシュメモリ内の他ノードから持ち出したデータを当該他ノードのメモリに書き戻す処理と(2)自ノードのメモリから他ノードが持ち出したデータを他ノードのキャッシュメモリから自ノードのメモリに書き戻す処理を完了する必要がある。そこで、電源OFFの直前に、前述の(1)(2)とはそれぞれ逆方向のデータの持ち出しの禁止を、フェイルノードリストを書き換えることで行うことができる。
図10は、フェイルノードリストによるアクセス制御の一例を示す図である。図10の例では、ノード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する直前に、(1)電源OFF対象のCPU#1は、キャッシュメモリ内に持ち出しているノードNODE#0のメモリデータをノードNODE#0のメモリMEM#0に書き戻す必要がある。同様に、(2)CPU#0、CPU#2は、キャッシュメモリ内に持ち出しているノードNODE#1のメモリデータをノードNODE#1のメモリMEM#1に書き戻す必要がある。
そこで、上記の(1)(2)とは逆方向のデータの持ち出しを禁止するために、電源OFFするCPU#1のフェイルノードリストFND_LSTは全ノードをアクセス要求拒否のビット「1」に設定し、CPU#0,#2のフェイルノードリストFND_LSTはノードNODE#1をアクセス拒否ビット「1」に設定する。このようにフェイルノードリストを設定することで、電源OFF対象のノードNODE#1のCPU#1は、上記の(1)とは逆方向の全ノードから自ノードへのアクセス要求を拒否することができ、ノードNODE#0,#2のCPU#0,CPU#2は、上記の(2)とは逆方向のノードNODE#1から自ノード(NODE#0,NODE#2)へのアクセス要求を拒否することができる。
[ストア要求の処理と課題]
次に、ストア要求の処理がどのように行われるかについて説明し、前述のCPU間のアクセス制御と競合した場合の課題について説明する。
図11は、ローカル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の入力ポートに予約される。ここまでが、ストア動作のフェーズ1である。
次に、ストア動作のフェーズ2では、ストアデータのキャッシュ登録要求がデータアクセス制御部のパイプライン部に投入されると(S17)、データアクセス制御部は、キャッシュメモリがストア対象のラインを排他状態で記憶しているか否か判定し(S18)、記憶していれば(S18のYES)、ストアバッファ内のストアデータをキャッシュ登録する(S20)。一方、このときにキャッシュメモリがストア対象のラインを排他状態で記憶していない場合(S18のNO)、データアクセス制御部は、再度、ホームCPUに対して排他型のデータ獲得要求を発行する(S19)。そして、受信したデータをキャッシュメモリに排他状態で書き込み(登録し)、ストアバッファ内のストアデータをキャッシュメモリに上書きする(S20)。
上記のストアバッファ内のストアデータのキャッシュ登録要求が入力された後、工程S18でキャッシュメモリがストア対象のラインを排他型で記憶していないという状況になるのは、ストア命令完了S16からキャッシュ登録要求が入力されるまでの間に、他のCPUがストア対象のラインを排他型で獲得した場合である。この現象は、複数のCPU間で同一のキャッシュラインの取得が競合する場合(キャッシュ競合)に発生する。
以下、CPU間でキャッシュ競合が発生しなかった場合と、発生した場合のストア動作について説明する。
図12は、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)。
図13は、CPU間でキャッシュ競合が発生した場合のストア動作のシーケンスを示す図である。図13では、ローカルCPU(L_CPU#1)にて、ストア要求が入力され(S11)、図12と同様の処理を経て、ストアバッファにストアデータを格納しストア完了応答をする(S16)。
ただし、図12と異なり、ローカル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)。
図14は、CPU間でキャッシュ競合が発生し且つストア動作中にCPU間のアクセス制御が切り替えられた場合のストア動作のシーケンスを示す図である。この場合、アクセス制御の切り替えに起因して、ストア動作がフェイタルエラーで終わっている。
図14では、ホームCPU(H_CPU#2)において、前半はCPU#1,CPU#3からのアクセス要求を許可するようアクセス制御情報が設定されていたが、後半にCPU#1,CPU#3からのアクセス要求を拒否するよう設定変更されている。図中、ホームCPUの位置にアクセス制御設定内容が示されている。
図14のストア動作では、ローカルCPU(L_CPU#1)にてストア要求がデータアクセス制御部に入力され(S11)、図13と同様の処理を経て、データアクセス制御部がストアバッファにストアデータを格納しストア完了応答をする(S16)。さらに、別のローカルCPU(L_CPU#3)がストア対象のラインについて排他型のデータ獲得要求をホームCPUに出力し(S60)、図13と同様の処理を経て、獲得したラインのデータをキャッシュ登録する(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の実施の形態]
図15は、本実施の形態におけるマルチプロセッサシステム(情報処理装置)の構成を示す図である。図15において図1と異なる構成は、プロセッサ部PR内のデータアクセス制御部DA_AC_CONに、ストア要求のためのデータ獲得要求が再実行であることを通知する再実行通知部RE_EXC_NTCが設けられていることである。さらに、図1と異なる構成は、システムコントローラ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がデータ獲得要求が同じストア要求のための再実行の要求か否の判定を行う。そして、アクセス許可判定部は、データ獲得要求が再実行の要求ではないときは、アクセストークンやフェイルノードリストなどによりデータアクセス要求を許可するか否か判定し、データ獲得要求が再実行の要求であるときは、アクセストークンやフェイルノードリストなどに依らずデータ獲得要求を許可する。
図16は、本実施の形態におけるローカルCPU(L_CPU)でのストア動作を示すフローチャート図である。図16において、フェーズ1では、データアクセス制御部が、コアからストア要求を入力し(S11)、キャッシュタグを検索してキャッシュメモリにストア対象のラインが排他状態で記憶しているか確認し(S12)、記憶していればストアデータをストアバッファに格納し(S15)コアに対してストア命令完了通知を行う(S16)。一方、記憶していなければホームCPUにストア対象のラインを排他型で獲得する排他型のデータ獲得要求を出力し(S14)、ストアデータをストアバッファに格納し(S15)コアにストア命令完了通知を行う(S16)。ここまでは、図11と同じである。
一方、フェーズ2では、データアクセス制御部が、入力ポートからキャッシュ登録要求を入力し(S17)、キャッシュタグを検索してキャッシュメモリにストア対象のラインが排他状態で記憶しているか確認し(S18)、記憶していればストアバッファのデータをキャッシュに上書きする(S20)。ここまでも図11と同じである。一方、図11と異なり、キャッシュメモリが排他型でストア対象のラインを記憶していない場合(S18のNO)、データアクセス制御部DA_AC_CONと再実行通知部RE_EXC_NTCとが再実行であることを通知する情報をデータ獲得要求に付加する(S19A)。これにより、ホームCPUは、データ獲得要求が同じストア動作での再実行であることを知ることができる。
その結果、ホームCPUはこのデータ獲得要求が再実行であることから、アクセス制御情報にかかわらずデータ獲得要求を許可し、ストア対象のラインを持ち出している別のローカルCPUのキャッシュメモリからストア対象のラインを追い出し、元のローカルCPUにデータ応答を行う。これに応答して、元のローカルCPUはデータ応答のデータをキャッシュ登録してからストアバッファのデータをキャッシュメモリに上書きする(S20)。
上記のフェーズ1のストア要求とフェーズ2のキャッシュ登録要求とは、データアクセス制御部(パイプライン部)へのパイプIDが異なるので、データアクセス制御部は、両フェーズを見分けることができる。
図17は、本実施の形態におけるホームCPU(H_CPU)でのアクセス要求に対する動作を示すフローチャート図である。図17において、図6と異なる工程は、アクセス許可判定部AC_PRMと再実行判定部RE_EXC_JDとが、まず、アクセス制御情報AC_INFに基づいてアクセス許可すべきか否か判定し(S3)、それと共に、再実行判定部によりアクセス要求が同じストア動作での再実行であるか否かの判定を行う(S7)ことである。そして、アクセス制御情報に基づくアクセス許可判定が拒否の場合でも(S3のNO)、再実行判定部がアクセス要求が同じストア動作での再実行の要求であると判定すると(S7のYES)、ホームCPUはそのアクセス要求を許可して、ローカルCPUにデータ応答を行う。
図18は、本実施の形態におけるCPU間でキャッシュ競合が発生し且つストア動作中にCPU間のアクセス制御が切り替えられた場合のストア動作のシーケンスを示す図である。図18は、図14と同様に、2つのローカルCPU(L_CPU#1,L_CPU#3)との間でホームCPUのデータについてキャッシュ競合が発生し、且つストア動作中にホームCPU(H_CPU#2)において2つのローカルCPU(L_CPU#1,L_CPU#3)からのアクセス要求に対する許可設定が拒否に切替えられている。
図18では、図14と同様に、ローカルCPU(L_CPU#1)がコアからのストア要求(S11)に応答して、排他型のデータ獲得要求をホームCPUに出力し(S14)、獲得したデータをストアバッファに書き込み(S15,S15_2)、コアにストア完了を応答する(S16)。さらに、図18では、図14と同様に、別のローカルCPU(L_CPU#3)が排他型のデータ獲得要求をホームCPUに出力し(S60)、ホームCPUがL_CPU#1のキャッシュメモリからキャッシュラインのデータを追い出してL_CPU#3にデータ応答し(S61,S63)、L_CPU#3が、獲得したデータをキャッシュ登録する(S65)。ここまでは図14と同じであり、2つの排他型のデータ獲得要求はいずれもホームCPUでアクセス許可されている。
一方、図14と異なり、図18では、ローカル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は、ストア動作での1回目のデータ獲得要求を許可したのであるから、再実行のデータ獲得要求も許可するようにしても、アクセス制御の観点で問題になることはない。
[第2の実施の形態]
図19は、第2の実施の形態におけるCPUのプロセッサ部PRの構成例を示す図である。また、図20は、第2の実施の形態におけるCPUのシステムコントローラの構成例を示す図である。
第2の実施の形態では、アクセス制御にアクセストークンとメモリトークンを使用し、さらに、同じストア動作での再実行の排他型のデータ獲得要求を通知するために、アクセストークン[13:0]に再実行の排他型のデータ獲得要求であることを示す専用のアクセストークンを割り当てる。例えば、専用のアクセストークンとして14’hXXXXを割り当てる。そして、ローカルCPU側のアクセス制御部が同じストア動作で排他型のデータ獲得要求を再度実行する場合、アクセストークンを専用の14’hXXXXに置き換えて、排他型のデータ獲得要求をシステムコントローラ経由でホームCPUに発行する。一方、ホームCPU側のシステムコントローラは、受信した排他型のデータ獲得要求のアクセストークンが専用のトークン14’hXXXXの場合は、同じストア動作での二度目の排他型のデータ獲得要求と判定し、アクセス制御が切替えられてアクセストークンとメモリトークンが不一致になっても、そのデータ獲得要求を許可する。
図19において、アクセストークンレジスタACTK_RGは、アクセストークン要求ACTK_RQに応答してアクセス先アドレスに対応するアクセストークンACTK[13:0]を出力する。また、アクセストークンライト要求ACTK_WTに応答して、アクセストークンを設定する。
図19のプロセッサ部PRでは、コアがデータアクセス要求DA_AC_RQとしてストア要求をデータアクセス制御部DA_AC_CONに入力すると、第1フェーズにおいて、データアクセス制御部は、キャッシュタグを検索してストア対象のラインがキャッシュメモリに排他型で記憶されているか否かチェックし、記憶されていない場合は、排他型のデータ獲得要求DA_AQ_RQをシステムコントローラを経由してホームCPUに出力する。この排他型のデータ獲得要求DA_AQ_RQには、アクセストークンレジスタACTK_RG内のアクセストークンACTK[13:0]を含める。そして、その排他型のデータ獲得要求に対応するデータを受信すると、キャッシュメモリCAHEに登録してから、ストアバッファST_BUFにストアデータを格納し、コアにストア完了通知を返信する。
次に、第2フェーズにおいて、ストアデータのキャッシュ登録要求が入力されると、データアクセス制御部DA_AC_CONは、ストア対象のラインがキャッシュメモリに記憶されているか否かをチェックし、記憶されていない場合は、二度目の排他型のデータ獲得要求をシステムコントローラを経由してホームCPUに出力する。この場合、再実行通知部RE_EXC_NTCの比較器CMP1は、第2フェーズのパイプラインID(PIPE_ID)が再実行要求ID(RE_EXC_ID)と等しいため、再実行を示す旨の情報である再実行フラグRE_EXC=FLGを1にする。その結果、データアクセス制御部DA_AC_CONのセレクタSELは専用のトークン14’hXXXXを選択し、アクセストークンACTK[13:0]としてデータ獲得要求DA_AQ_RQに付加して出力する。
図20のホーム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]を比較し、一致する場合は「1」を出力し、ORゲートは「1」を出力し、ANDゲートはアクセス許可状態を示す「1」のアクセス許可通知AC_PRM_NTCを出力する。このアクセス許可通知に応答して、トランザクション制御部TRNS_CONは、ストア対象のラインが他のCPUにより持ち出されている場合は追い出し要求を発行し、他のCPUからキャッシュメモリ内のラインのデータを追い出させる。そして、トランザクション制御部は、データ追い出し要求に対するデータ応答を受信した後、メモリMEMにメモリアクセスを実行し、読み出したデータを、データアクセス要求元にデータ応答する。
一方、他のCPUからのデータアクセス要求が、同じストア動作での二度目のデータ獲得要求の場合、要求情報RQ_INF内のアクセストークンACTKは、専用のトークン14’hXXXXである。それにより、再実行判定部RE_EXC_JD内の比較器CMP2は、アクセストークACTKが専用トークン14’hXXXXと等しいため、出力の再実行判定結果RE_EXC_RSを「1」とする。そして、アクセス制御が切替えられて、比較器CMP3にてアクセス先物理アドレスPA[M:N]に対応するメモリトークンMTKがデータ獲得要求元のアクセストークンACTKと不一致になっていても、再実行判定結果RE_EXC_RSが「1」であるため、ORゲートの出力が「1」、ANDゲートの出力が「1」となり、アクセス許可通知AC_PRM_NTCは「1」となり、二度目のデータ獲得要求は許可される。
以上のとおり、第2の実施の形態では、ローカルCPUのデータアクセス制御部DA_AC_CONが再実行通知部RE_EXC_NTCと共に、第2フェーズの再実行のデータ獲得要求の場合、通常のアクセストークンACTKを専用のアクセストークン14’hXXXに代えてデータ獲得要求の要求情報に含める。そして、ホームCPUのシステムコントローラSYS_CONでは、アクセストークンACTKが再実行専用のトークン14’hXXXXであることを検知し、アクセストークンACTKとメモリトークンMTKとの比較結果にかかわらず、アクセス要求を許可する。したがって、ストア動作の途中でアクセス制御が切替えられても、最初のデータ獲得要求が許可されている場合は、二度目のデータ獲得要求も許可される。
図21は、第2の実施の形態におけるアクセストークンレジスタの設定動作を示す図である。例えば、ソフトウエアがアクセストークンレジスタACT_RGに新規のアクセストークンACTKを書き込む要求を発行すると(S31)、図19の設定チェック部10が、新規アクセストークンACTKが専用トークン14’hXXXXと一致するか否かを判定し(S32)、不一致の場合は新規アクセストークンACTKをアクセストークンレジスタACTK_RGに書き込み(S33)、ソフトウエアに書き込み完了通知を行う(S34)。一方、一致する場合は、新規アクセストークンACTKをアクセストークンレジスタACTK_RGに書き込まず、ソフトウエアに書き込み完了通知を行う(S34)。これにより、ソフトウエアが専用トークンをアクセストークンレジスタに設定して、アクセス制御に反するアクセス要求を発行して不正にデータを獲得することを防止する。
[第3の実施の形態]
第3の実施の形態では、アクセス制御にアクセストークンとメモリトークンによる制御と、ノードフェイルリストを利用する制御とを行い、さらに、同じストア動作での再実行の排他型のデータ獲得要求を通知するために、アクセストークン[13:0]を再実行の排他型のデータ獲得要求であることを示す専用のアクセストークンに置き換える。例えば、専用のアクセストークンとして14’hXXXXを割り当てる。そして、ローカルCPU側のデータアクセス制御部が同じストア動作で排他型のデータ獲得要求を再度実行する場合、アクセストークンを専用の14’hXXXXに置き換えて、排他型のデータ獲得要求をシステムコントローラに発行する。一方、ホームCPU側のシステムコントローラは、受信した排他型のデータ獲得要求のアクセストークンが専用のトークン14’hXXXXの場合は、同じストア動作での二度目の排他型のデータ獲得要求と判定し、アクセス制御が切替えられてアクセス元のノードIDがフェイルノードリスト内のノードIDと一致したとしても、そのデータ獲得要求を許可する。
図22は、第3の実施の形態におけるCPUのシステムコントローラの構成を示す図である。第3の実施の形態におけるCPUのプロセッサ部PRの構成は図19と同様である。
第3の実施の形態では、ローカルCPUでのストア要求に対する動作は、第2の実施の形態と同様である。つまり、ストア動作の第2フェーズでは、データアクセス制御部がアクセストークンACTKを再実行のデータ獲得要求であることを示すために、アクセストークンを専用トークン14’hXXXXに置き換える。
一方、ホームCPUでのデータアクセス要求に対する動作は、次の通りである。通常のデータアクセス要求の場合、アクセス許可判定部AC_PRMは、要求情報RQ_INFに含まれる要求ノード識別番号RQ_ND_ID[3:0]をデコーダDECでデコードし16ビットのノードID信号を出力する。そして、16個のアンドAND2が16ビットのデコード出力と、フェイルノードリストFND_LST[15:0]の16ビットとの論理積をそれぞれ出力し、ノアゲートNORが16個の論理積出力のNOR出力を出力する。フェイルノードリストFND_LST[15:0]は、フェイルノードに対応するビットが「1」にフェイルノードではないビットが「0」に設定される。したがって、16ビットのうち1組一致すれば、NOR出力は出力を「0」にする。その場合は、アクセス許可通知AC_PRM_NTCは「0」になりアクセスは拒否される。すべて不一致であれば、NOR出力は出力を「1」にする。この場合アクセス許可通知信号は「1」になりアクセスは許可される。
そして、ストア動作のフェーズ2において、同じストア動作での再実行のデータ獲得要求を受信した場合、その要求に付加されたアクセストークンACTKは専用トークン14’hXXXXである。その結果、再実行判定部RE_EXC_JDは、アクセストークンACTK[13:0]は専用トークン14’hXXXXと一致することを検出し、再実行判定結果RE_EXC_RSを「1」にする。そのため、ORゲートORは出力を「1」にして、アクセス許可通知AC_PRM_NTCを「1」にするので、同じストア動作での再実行のデータ獲得要求は、アクセス制御が切替えられて要求元のノードがフェイルノードリストで「1」に設定されていても、アクセス許可される。
第2及び第3の実施の形態では、再実行のデータ獲得要求であることを通知するために、既存のアクセストークンを専用トークンに置き換える。したがって、データアクセス要求に新たなフィールドを設けなくても、対応可能である。
[第4の実施の形態]
第4の実施の形態では、アクセストークンとメモリトークンを利用してCPU間のアクセス制御を行う。そして、ローカルCPUのデータアクセス制御部が、ストア動作の第2フェーズでの再実行のデータ獲得要求に再実行であることを示す再実行フラグを付加して、ホームCPUに出力する。そして、ホームCPUは、データアクセス要求であるデータ獲得要求に、再実行フラグが付加されていたら、アクセストークンがメモリトークンと不一致でも、そのデータ獲得要求を許可する。
図23は、第4の実施の形態におけるCPUのプロセッサPRの構成を示す図である。図19と異なり、再実行通知部RE_EXC_NTCは、パイプラインID(PIPE_ID)がストア動作の第2フェーズに対応するパイプラインID、RE_EXC_IDと一致したら、再実行フラグRE_EXC_FLGを「1」にする。データアクセス制御部DA_AC_CONはこの再実行フラグRE_EXC_FLGをアクセストークンACTKと共に、データ獲得要求DA_AQ_RQに付加して、システムコントローラを経由し、ホームCPUに出力する。
図24は、第4の実施の形態におけるCPUのシステムコントローラの構成を示す図である。図20と異なり、図24では、再実行判定部RE_EXC_JDが要求情報RQ_INFに含まれる再実行フラグRE_EXC_FLGをそのままアクセス許可判定部AC_PRMのORゲートに入力する。ORゲートのもう一つの入力は、アクセス要求に含まれるアクセストークンACTK[13:0]をアクセス要求の物理アドレスPAに対応するメモリトークンMTK[13:0]と比較する比較器CMP3の出力である。
したがって、通常のデータアクセス要求の場合は、比較器CMP3がアクセストークンとメモリトークンとを比較して要求を許可するか否か判定し、ストア動作の第2フェーズでのデータアクセス要求では、再実行フラグRE_EXC_FLGが「1」であるので、アクセス制御が切替えられてアクセストークンがメモリトークンと一致しなくても、データ獲得要求が許可される。
[第5の実施の形態]
第5の実施の形態では、ノードフェイルリストを利用してCPU間のアクセス制御を行う。そして、ローカルCPUのデータアクセス制御部が、ストア動作の第2フェーズでの再実行のデータ獲得要求に再実行であることを示す再実行フラグを付加して、ホームCPUに出力する。そして、ホームCPUは、データアクセス要求であるデータ獲得要求に再実行フラグが付加されていたら、アクセス要求元のノードIDがフェイルノードリストと一致しても、そのデータ獲得要求を許可する。
図25は、第5の実施の形態におけるCPUのシステムコントローラSYS_CONの構成を示す図である。一方、CPUのプロセッサPRの構成は図23と同じであり、動作も同様である。
図25において、図22と異なり、再実行判定部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に含まれているか否かでアクセス要求を許可するか否か判定し、ストア動作の第2フェーズでのデータアクセス要求では、再実行フラグRE_EXC_FLGが「1」であるので、アクセス制御が切替えられてアクセストークンがメモリトークンと一致しなくても、データ獲得要求が許可される。
以上のとおり、本実施の形態によれば、ストア動作中にキャッシュ競合が発生し、第2フェーズで排他的なデータ獲得要求を再実行した場合、アクセス制御の設定が変更されていても、ホームCPUが再実行のデータ獲得要求を許可する。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
命令を実行する演算処理部と、前記演算処理部からのデータアクセス要求に応答するデータアクセス制御部と、前記データアクセス制御部によるデータ転送を制御する制御装置とをそれぞれ有するとともに、通信経路を介して接続される複数の演算処理装置とを有し、
前記データアクセス制御部は、前記ストア要求に応答して他の演算処理装置にデータ獲得要求を出力し、同じストア要求のためのデータ獲得要求を再度出力するときに再実行情報を有するデータ獲得要求を出力し、
前記制御装置は、他の演算処理装置から受信したデータアクセス要求を許可するか否かの判定と、前記データ獲得要求が同じストア要求のための再実行の要求か否かの判定とを行い、前記データアクセス要求を許可しない場合アクセス拒否応答を返信し、前記データアクセス要求を許可しないが前記データ獲得要求が前記再実行の要求と判定した場合前記データ獲得要求を許可する、情報処理装置。
(付記2)
前記データアクセス要求を行うローカル側演算処理装置の前記データアクセス制御部は、前記データアクセス要求に対応する認証情報であるアクセス認証情報を付加して前記データアクセス要求を出力し、
前記データアクセス要求を受けるホーム側演算処理装置の前記制御装置は、受信したデータアクセス要求のアクセス認証情報が、自装置が管理する主記憶装置に記憶するメモリ認証情報と一致する場合、前記データアクセス要求に対応するデータへのアクセスを許可する、付記1に記載の情報処理装置。
(付記3)
前記ローカル側演算処理装置の前記データアクセス制御部は、前記再実行情報を有するデータ獲得要求を発行するとき、前記アクセス認証情報として再実行用認証情報を付加して前記データ獲得要求を出力し、
前記ホーム側演算処理装置の前記制御装置は、前記データ獲得要求のアクセス認証情報が前記再実行用認証情報の場合に前記再実行の要求と判定する、付記2に記載の情報処理装置。
(付記4)
前記ローカル側演算処理装置の前記データアクセス制御部は、前記再実行情報を有するデータ獲得要求を発行するとき、再実行情報を付加して前記データ獲得要求を出力し、
前記ホーム側演算処理装置の前記制御装置は、前記データ獲得要求に前記再実行情報が付加されている場合に前記再実行の要求と判定する、付記1または2に記載の情報処理装置。
(付記5)
前記複数の演算処理装置のそれぞれと複数の主記憶装置のそれぞれとでノードを構成し、
データアクセス要求を受けるホーム側演算処理装置の前記制御装置は、前記データアクセス要求を発行したノードがデータアクセス要求を拒否する拒否ノードに該当する場合に、前記データアクセス要求を拒否する、付記1に記載の情報処理装置。
(付記6)
前記データアクセス要求を行うローカル側演算処理装置の前記データアクセス制御部は、アクセス認証情報を付加してデータアクセス要求を出力し、前記再実行情報を有するデータ獲得要求を発行するとき、前記アクセス認証情報として再実行用認証情報を付加してデータ獲得要求を出力し、
前記ホーム側演算処理装置の前記制御装置は、前記データ獲得要求の前記アクセス認証情報が再実行用認証情報の場合に前記再実行の要求と判定する、付記5に記載の情報処理装置。
(付記7)
前記データアクセス要求を行うローカル側演算処理装置の前記データアクセス制御部は、前記再実行情報を有するデータ獲得要求を発行するとき、再実行情報を付加してデータ獲得要求を出力し、
前記ホーム側演算処理装置の前記制御装置は、受信したデータ獲得要求に再実行情報が付加されている場合に前記再実行の要求と判定する、付記5に記載の情報処理装置。
(付記8)
前記ストア要求におけるデータ獲得要求は、他の演算処理装置によるデータ獲得状態を禁止する排他型のデータ獲得要求であり、
前記データ獲得要求に応答して、当該データ獲得要求のデータを記憶する主記憶装置を管理するホーム側演算処理装置は、前記他の演算処理装置のキャッシュメモリから前記データ獲得要求のデータを追い出し、その後前記データ獲得要求のデータを前記データ獲得要求を出力したローカル側演算処理装置に応答する、付記1に記載の情報処理装置。
(付記9)
前記データアクセス要求は、前記データ獲得要求とデータストア要求とを有する、付記1に記載の情報処理装置。
(付記10)
命令を実行する演算処理部と、前記演算処理部からのデータアクセス要求に応答するデータアクセス制御部と、前記データアクセス制御部によるデータ転送を制御する制御装置とをそれぞれ有する複数の演算処理装置と、
前記複数の演算処理装置それぞれに設けられアクセスを制御される複数の主記憶装置と、
前記複数の演算処理装置の間を接続する通信経路とを有する情報処理装置の制御方法であって、
前記データアクセス制御部が、
前記ストア要求に応答して他の演算処理装置にデータ獲得要求を出力し、
同じストア要求のためのデータ獲得要求を再度出力するときに再実行情報を有するデータ獲得要求を出力し、
前記制御装置が、
他の演算処理装置から受信したデータアクセス要求を許可するか否かの判定と、前記データ獲得要求が同じストア要求のための再実行の要求か否の判定とを行い、
前記データアクセス要求を許可しない場合にアクセス拒否応答を返信し、
前記データアクセス要求を許可しないが前記データ獲得要求が前記再実行の要求と判定した場合に前記データ獲得要求を許可する、情報処理装置の制御方法。
(付記11)
前記データアクセス要求を行うローカル側演算処理装置の前記データアクセス制御部は、前記データアクセス要求に対応する認証情報であるアクセス認証情報を付加して前記データアクセス要求を出力し、
前記データアクセス要求を受けるホーム側演算処理装置の前記制御装置は、受信したデータアクセス要求のアクセス認証情報が、自装置が管理する主記憶装置に記憶するメモリ認証情報と一致する場合、前記データアクセス要求に対応するデータへのアクセスを許可する、付記10に記載の情報処理装置の制御方法。
(付記12)
前記ローカル側演算処理装置の前記データアクセス制御部は、前記再実行情報を有するデータ獲得要求を発行するとき、前記アクセス認証情報として再実行用認証情報を付加して前記データ獲得要求を出力し、
前記ホーム側演算処理装置の前記制御装置は、前記データ獲得要求のアクセス認証情報が前記再実行用認証情報の場合に前記再実行の要求と判定する、付記11に記載の情報処理装置の制御方法。
(付記13)
前記ローカル側演算処理装置の前記データアクセス制御部は、前記再実行情報を有するデータ獲得要求を発行するとき、再実行情報を付加して前記データ獲得要求を出力し、
前記ホーム側演算処理装置の前記制御装置は、前記データ獲得要求に前記再実行情報が付加されている場合に前記再実行の要求と判定する、付記10または11に記載の情報処理装置の制御方法。
(付記14)
命令を実行する演算処理部と、
前記演算処理部からのデータアクセス要求に応答するデータアクセス制御部と、
前記データアクセス制御部によるデータ転送を制御し、対応するメモリのアクセスを制御する制御装置とを有し、
前記データアクセス制御部は、前記ストア要求に応答して他の演算処理装置にデータ獲得要求を出力し、同じストア要求のためのデータ獲得要求を再度出力するときに再実行情報を有するデータ獲得要求を出力し、
前記制御装置は、他の演算処理装置から受信したデータアクセス要求を許可するか否かの判定と、前記データ獲得要求が同じストア要求のための再実行の要求か否の判定とを行い、前記データアクセス要求を許可しない場合にアクセス拒否応答を返信し、前記データアクセス要求を許可しないが前記データ獲得要求が前記再実行の要求と判定した場合に前記データ獲得要求を許可する、演算処理装置。
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:監視アプリケーションプログラム

Claims (9)

  1. 命令を実行する演算処理部と、前記演算処理部からのデータアクセス要求に応答するデータアクセス制御部と、前記データアクセス制御部による前記データアクセス要求の転送を制御する制御装置とをそれぞれ有するとともに、通信経路を介して接続される複数の演算処理装置を有し、
    前記データアクセス制御部は、他の演算処理装置が管理する主記憶装置に対する前記データアクセス要求の一つであるストア要求に応答して前記他の演算処理装置に前記データアクセス要求の一つであるデータ獲得要求を出力し、同じストア要求のためのデータ獲得要求を再度出力するときに再実行情報を有するデータ獲得要求を出力し、
    前記制御装置は、他の演算処理装置から受信したデータアクセス要求を許可するか否かの第1の判定と、前記データ獲得要求が同じストア要求のための再実行の要求であるか否かの第2の判定とを行い、前記第1の判定が前記データアクセス要求を許可しない場合アクセス拒否応答を返信し、前記第1の判定では前記データアクセス要求を許可しないと判定したが、前記第2の判定で当該データアクセス要求としてのデータ獲得要求が前記再実行の要求であると判定した場合には、前記データ獲得要求を許可する、情報処理装置。
  2. 前記データアクセス要求を行うローカル側演算処理装置の前記データアクセス制御部は、前記データアクセス要求に対応する認証情報であるアクセス認証情報を付加して前記データアクセス要求を出力し、
    前記データアクセス要求を受けるホーム側演算処理装置の前記制御装置は、前記第1の判定で、受信したデータアクセス要求のアクセス認証情報が、自装置が管理する主記憶装置へのデータアクセス要求に対応する認証情報であるメモリ認証情報と一致する場合、前記データアクセス要求に対応するデータへのアクセスを許可する、請求項1に記載の情報処理装置。
  3. 前記ローカル側演算処理装置の前記データアクセス制御部は、前記再実行情報を有するデータ獲得要求を発行するとき、前記アクセス認証情報として再実行用認証情報を付加して前記データ獲得要求を出力し、
    前記ホーム側演算処理装置の前記制御装置は、前記第2の判定で、前記データ獲得要求のアクセス認証情報が前記再実行用認証情報の場合に前記再実行の要求と判定する、請求項2に記載の情報処理装置。
  4. 前記ローカル側演算処理装置の前記データアクセス制御部は、前記再実行情報を有するデータ獲得要求を発行するとき、再実行情報を付加して前記データ獲得要求を出力し、
    前記ホーム側演算処理装置の前記制御装置は、前記第2の判定で前記データ獲得要求に前記再実行情報が付加されている場合に前記再実行の要求と判定する、請求項2に記載の情報処理装置。
  5. 前記複数の演算処理装置のそれぞれと複数の主記憶装置のそれぞれとでノードを構成し、
    データアクセス要求を受けるホーム側演算処理装置の前記制御装置は、前記第1の判定で、前記データアクセス要求を発行したノードがデータアクセス要求を拒否する拒否ノードに該当する場合に、前記データアクセス要求を拒否する、請求項1に記載の情報処理装置。
  6. 前記データアクセス要求を行うローカル側演算処理装置の前記データアクセス制御部は、アクセス認証情報を付加してデータアクセス要求を出力し、前記再実行情報を有するデータ獲得要求を発行するとき、前記アクセス認証情報として再実行用認証情報を付加してデータ獲得要求を出力し、
    前記ホーム側演算処理装置の前記制御装置は、前記第2の判定で、前記データ獲得要求の前記アクセス認証情報が再実行用認証情報の場合に前記再実行の要求と判定する、請求項5に記載の情報処理装置。
  7. 前記データアクセス要求を行うローカル側演算処理装置の前記データアクセス制御部は、前記再実行情報を有するデータ獲得要求を発行するとき、再実行情報を付加してデータ獲得要求を出力し、
    前記ホーム側演算処理装置の前記制御装置は、前記第2の判定で、受信したデータ獲得要求に再実行情報が付加されている場合に前記再実行の要求と判定する、請求項5に記載の情報処理装置。
  8. 命令を実行する演算処理部と、前記演算処理部からのデータアクセス要求に応答するデータアクセス制御部と、前記データアクセス制御部による前記データアクセス要求の転送を制御する制御装置とをそれぞれ有する複数の演算処理装置と、
    前記複数の演算処理装置それぞれに設けられアクセスを制御される複数の主記憶装置と、
    前記複数の演算処理装置の間を接続する通信経路とを有する情報処理装置の制御方法であって、
    前記データアクセス制御部が、
    他の演算処理装置が管理する主記憶装置に対する前記データアクセス要求の一つであるストア要求に応答して前記他の演算処理装置に前記データアクセス要求の一つであるデータ獲得要求を出力し、
    同じストア要求のためのデータ獲得要求を再度出力するときに再実行情報を有するデータ獲得要求を出力し、
    前記制御装置が、
    他の演算処理装置から受信したデータアクセス要求を許可するか否かの第1の判定と、前記データ獲得要求が同じストア要求のための再実行の要求であるか否かの第2の判定とを行い、
    前記第1の判定が前記データアクセス要求を許可しない場合にアクセス拒否応答を返信し、
    前記第1の判定では前記データアクセス要求を許可しないと判定したが、前記第2の判定で当該データアクセス要求としてのデータ獲得要求が前記再実行の要求であると判定した場合には、前記データ獲得要求を許可する、情報処理装置の制御方法。
  9. 命令を実行する演算処理部と、
    前記演算処理部からのデータアクセス要求に応答するデータアクセス制御部と、
    前記データアクセス制御部による前記データアクセス要求の転送を制御する制御装置とを有し、
    前記データアクセス制御部は、他の演算処理装置が管理する主記憶装置に対する前記データアクセス要求の一つであるストア要求に応答して前記他の演算処理装置に前記データアクセス要求の一つであるデータ獲得要求を出力し、同じストア要求のためのデータ獲得要求を再度出力するときに再実行情報を有するデータ獲得要求を出力し、
    前記制御装置は、他の演算処理装置から受信したデータアクセス要求を許可するか否かの第1の判定と、前記データ獲得要求が同じストア要求のための再実行の要求であるか否かの第2の判定とを行い、前記第1の判定が前記データアクセス要求を許可しない場合アクセス拒否応答を返信し、前記第1の判定では前記データアクセス要求を許可しないと判定したが、前記第2の判定で当該データアクセス要求としてのデータ獲得要求が前記再実行の要求であると判定した場合には、前記データ獲得要求を許可する、演算処理装置。
JP2016001676A 2016-01-07 2016-01-07 情報処理装置、情報処理装置の制御方法及び演算処理装置 Active JP6680973B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016001676A JP6680973B2 (ja) 2016-01-07 2016-01-07 情報処理装置、情報処理装置の制御方法及び演算処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016001676A JP6680973B2 (ja) 2016-01-07 2016-01-07 情報処理装置、情報処理装置の制御方法及び演算処理装置

Publications (2)

Publication Number Publication Date
JP2017123051A JP2017123051A (ja) 2017-07-13
JP6680973B2 true JP6680973B2 (ja) 2020-04-15

Family

ID=59306618

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016001676A Active JP6680973B2 (ja) 2016-01-07 2016-01-07 情報処理装置、情報処理装置の制御方法及び演算処理装置

Country Status (1)

Country Link
JP (1) JP6680973B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3872118B2 (ja) * 1995-03-20 2007-01-24 富士通株式会社 キャッシュコヒーレンス装置
JP3404386B2 (ja) * 2001-03-14 2003-05-06 エヌイーシーコンピュータテクノ株式会社 メモリアクセスレイテンシ増加回避方式
JP3772690B2 (ja) * 2001-04-25 2006-05-10 日本電気株式会社 サービスシステム及びそれに用いるサービス方法
JP2009037439A (ja) * 2007-08-02 2009-02-19 Nec Computertechno Ltd リクエスト処理装置、リトライ制御方法、及びリクエスト処理装置用プログラム
JP5541275B2 (ja) * 2011-12-28 2014-07-09 富士通株式会社 情報処理装置および不正アクセス防止方法

Also Published As

Publication number Publication date
JP2017123051A (ja) 2017-07-13

Similar Documents

Publication Publication Date Title
KR101403233B1 (ko) 정보 처리 장치 및 부정 액세스 방지 방법
US6449699B2 (en) Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems
JP4947441B2 (ja) マルチプロセッサシステム、マルチプロセッサシステムにおけるシステム構成方法及びそのプログラム
US7620954B2 (en) Mechanism for handling load lock/store conditional primitives in directory-based distributed shared memory multiprocessors
JP4680851B2 (ja) システムコントローラ,同一アドレスリクエストキューイング防止方法および情報処理装置
US20070150665A1 (en) Propagating data using mirrored lock caches
JP4474570B2 (ja) キャッシュコヒーレンシ制御方法
JP2005050368A (ja) マルチプロセッサ・システム
JP3889879B2 (ja) 仮想メモリ変換を制御する方法
JP4587756B2 (ja) 半導体集積回路装置
CN109032963B (zh) 访问控制
JP5499987B2 (ja) 共有キャッシュメモリ装置
JP2008033893A (ja) マルチプロセッサシステム及びマルチプロセッサシステムにおけるアクセス権設定方法
JP3550092B2 (ja) キャッシュ装置及び制御方法
JP5999216B2 (ja) データ処理装置
JP6792139B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP6680973B2 (ja) 情報処理装置、情報処理装置の制御方法及び演算処理装置
JPH1173365A (ja) データ移動操作を最適化する方法
JPH11338833A (ja) マルチプロセッサ型コントローラ及びスケーラブルコントローラシステム
US10628056B2 (en) Information processing apparatus and shared memory management method
JP2017191464A (ja) 情報処理システム、送信装置および情報処理システムの制御方法
JP6881485B2 (ja) メモリ配置装置、メモリ配置方法、及び、メモリ配置プログラム
JP7022120B2 (ja) アトミックセットのデータアクセスを提供するための装置および方法
US20140006722A1 (en) Multiprocessor system, multiprocessor control method and processor
US20170177508A1 (en) Information processing apparatus and shared-memory management method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180912

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190319

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190723

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190920

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200302

R150 Certificate of patent or registration of utility model

Ref document number: 6680973

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150