JP2017134540A - 情報処理装置および制御方法 - Google Patents

情報処理装置および制御方法 Download PDF

Info

Publication number
JP2017134540A
JP2017134540A JP2016012845A JP2016012845A JP2017134540A JP 2017134540 A JP2017134540 A JP 2017134540A JP 2016012845 A JP2016012845 A JP 2016012845A JP 2016012845 A JP2016012845 A JP 2016012845A JP 2017134540 A JP2017134540 A JP 2017134540A
Authority
JP
Japan
Prior art keywords
cpu
data
arithmetic processing
request
processing unit
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.)
Granted
Application number
JP2016012845A
Other languages
English (en)
Other versions
JP6520733B2 (ja
Inventor
典彦 福住
Norihiko Fukuzumi
典彦 福住
誠 畑井田
Makoto Hataida
誠 畑井田
誠之 岡田
Masayuki Okada
誠之 岡田
仁 ▲高▼橋
仁 ▲高▼橋
Hitoshi Takahashi
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 JP2016012845A priority Critical patent/JP6520733B2/ja
Publication of JP2017134540A publication Critical patent/JP2017134540A/ja
Application granted granted Critical
Publication of JP6520733B2 publication Critical patent/JP6520733B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】異常が発生した場合にエラーの影響範囲を抑える情報処理装置を提供する。【解決手段】複数の演算処理装置のうち、第1の演算処理装置L(ローカル)CPUは、第2の演算処理装置H(ホーム)CPUにデータの要求を送信する。ホームCPUは要求データをキャッシュに保持する第3の演算処理装置R(リモート)CPUを検出し、ローカルCPUへの要求データの転送と要求データのキャッシュからの破棄を含む依頼をリモートCPUに送信する。リモートCPUは、ローカルCPUへ要求データを送信し、要求データのステータスを変更し、ステータス変更応答をホームCPUに送信する。ホームCPUは、リモートCPUに依頼を送信してから所定時間以内にリモートCPUからステータス変更応答を受信しない場合に、ローカルCPUにエラー応答を送信する。ローカルCPUは、エラー応答を受信すると、リモートCPUから受信した要求データを破棄する。【選択図】図3A

Description

本発明は、情報処理装置および制御方法に関する。
従来、複数の演算処理装置が主記憶装置を共有するSymmetric Multi-Processor(SMP)システムがある。SMPでは、複数のノードを1パーティションとして扱っており、1つのノードが故障すると他のノードにそのエラーが波及してしまい、システムがダウンすることになる。
ノード間のデータ転送に関わる異常が発生した場合に、エラーの影響範囲を抑える技術が知られている(例えば、特許文献1参照)。
特開2014−197402号公報
ここで、SMPシステムにおいて、データ要求元のCPU、データの実メモリを所有するCPU、およびデータをキャッシュに持ち出しているCPUをそれぞれローカルCPU(L−CPU)、ホームCPU(H−CPU)、およびリモートCPU(R−CPU)と呼ぶ。
特許文献1では、R−CPUからH−CPUへのデータの書き戻し(ライトバック)に問題がある場合の解決方法しか記載されていない。従来技術では、ライトバックに問題がある場合以外の問題、例えば、異常があった場合にL−CPUがR−CPUからのデータを使用しまう等の問題は解決していない。そのため、このような問題が発生した場合に、キャッシュコヒーレンシが崩れ、エラーが他のノードに波及してしまい、システムがダウンしてしまう。
1つの側面において、本発明の課題は、異常が発生した場合にエラーの影響範囲を抑えることである。
実施の形態に係る情報処理装置は、複数の演算処理装置と、前記複数の演算処理装置のそれぞれが接続する複数のメモリと、を有し、前記複数のメモリの共有領域が前記複数の演算処理装置で共有される。
前記複数の演算処理装置のうち、第1の演算処理装置は、第2の演算処理装置にデータの要求を送信する第1の制御部を備える。
前記第2の演算処理装置は、第2の制御部を備える。前記第2の制御部は、前記第1の演算装置から前記要求を受信したとき、前記データを保持する演算処理装置と前記データの状態とを示すディレクトリ情報に基づいて、前記データをキャッシュに保持する第3の演算処理装置を検出する。前記第2の制御部は、前記第1の演算処理装置への前記データの転送と前記データの前記キャッシュからの破棄を含む依頼を前記第3の演算処理装置に送信する。
前記第3の演算処理装置は、第3の制御部を備える。前記第3の制御部は、前記依頼を受信し、前記第1の演算処理装置へ前記データを送信し、前記データのステータスを変更し、前記ステータスを変更したことを示すステータス変更応答を前記第2の演算処理装置に送信する。
前記第2の制御部は、前記第3の演算処理装置に前記依頼を送信してから所定時間以内に前記第3の演算処理装置から前記ステータス変更応答を受信しない場合に、前記第1の演算処理装置にエラー応答を送信する。
前記第1の制御部は、前記エラー応答を受信した場合、前記第3の演算処理装置から受信した前記データを破棄する。
実施の形態に係る情報処理装置によれば、異常が発生した場合にエラーの影響範囲を抑えることが出来る。
実施の形態に係る情報処理システムの構成図である。 実施の形態に係るビルディングブロックの構成図である。 実施の形態に係る情報処理システムの三角転送時の処理を示す図である。 ローカルCPUの処理を示すフローチャートである。 実施の形態に係る情報処理システムのリモートCPUからの応答の検出処理を示す図である。 ホームCPUの処理を示すフローチャートである。 実施の形態に係る情報処理システムのディレクトリ情報に矛盾がある場合の処理を示す図である。 リモートCPUの処理を示すフローチャートである。 DIR=UNKとなるパターンを示す図である。 実施の形態に係る情報処理システムのSH数が矛盾した場合の処理を示す図である。 リモートCPUの処理を示すフローチャートである。 ホームCPUの処理を示すフローチャートである。 ローカルCPUの詳細な処理を示すフローチャートである。 ホームCPUの詳細な処理を示すフローチャートである。 リモートCPUの詳細な処理を示すフローチャートである。 実施の形態に係る情報処理システムの処理を示す図である。
従来のSMPシステムにおいて、下記のような問題がある。
SMPシステムにおいて、データ要求元のCPU、データの実メモリを所有するCPU、およびデータをキャッシュに持ち出しているCPUをそれぞれローカルCPU(L−CPU)、ホームCPU(H−CPU)、およびリモートCPU(R−CPU)と呼ぶ。
・問題1―異常のある転送データを使用してしまう問題(三角転送)
L−CPUがH−CPUにデータを要求(EX要求)してH−CPUがR−CPUにIV依頼を送信するまでは正常動作と同じである。尚、EX要求は、キャッシュデータのステータスをExclusiveとして要求データを持ちたいことを示す要求である。また、IV依頼は、キャッシュに要求データをステータスがExclusiveまたはModifiedで格納している場合に要求データをL−CPUに送信し、要求データに対応するキャッシュデータのステータスを無効(Invalid)にすることを依頼するものである。キャッシュデータのステータスについては後述する。ここで、もしR−CPUが故障していたとすると、R−CPUからの応答がないのでH−CPUは指示のタイムアウトを検出する。このときのアクセスがライトバック(WRBK)応答、すなわちR−CPUからのデータ受信を期待するものであれば、H−CPUはディレクトリ(DIR)情報にエラーマーク(DIR=UNK)を書き込む。ここで、H−CPUがR−CPUに依頼を出すのと、L−CPUの要求に応答を返すのを同時に行ったとすると、以下の問題が起きる。
R−CPUからH−CPUへの応答はないが、R−CPUからL−CPUへのデータ転送があったときに、H−CPUはタイムアウトを検出して、DIR情報をDIR=UNKとするが、H−CPUはR−CPUからの応答を受け取る前にL−CPUに応答を返しているため、R−CPUから転送されてきたデータに問題があることをL−CPUに伝えていない。そのため、L−CPUはR−CPUからの問題があるデータを使用してしまう。
・問題2−WRBK以外のパケットの滞留(タイムアウト)を検出してもエラーマークできない問題
従来、WRBK応答が期待されなければ、H−CPUはDIR情報にDIR=UNKを書き込まない。これにより、以下の問題が起きる。
H−CPUがDIR情報を参照してR−CPUにデータ転送を指示してもR−CPUからの応答を得られないとき、R−CPUは故障しているはずであるが、エラーマークされないのでキャッシュコヒーレンシの崩れた状態を認識できないまま動作を継続することになる。
・問題3−DIR情報とキャッシュの状態に矛盾が生じると、エラーが波及してしまう問題(R−CPUに波及)
H−CPUのDIR情報をもとに発行された依頼とR−CPUのキャッシュデータのステータスが一致しないとする。H−CPUはR−CPUにEXデータの返却を求めるが、R−CPUはEXデータを保持していなかった場合、プロトコルエラーとなりR−CPUはFATALすることになる。尚、EXデータは、ステータスがExclusiveまたはModifiedであるデータである。
・問題4−DIR情報とキャッシュの状態に矛盾が生じると、エラーが波及してしまう問題(H−CPUに波及)
H−CPUのDIR情報をもとに発行された依頼とR−CPUのキャッシュデータのステータスが一致しないとする。H−CPUのDIR情報をもとに複数のR−CPUにデータ破棄を依頼する。そして、H−CPUはR−CPUからの破棄応答を受け取る。このとき、H−CPUはSHデータを保持しているR−CPUにだけ依頼を出すのではなく、全R−CPUに依頼を出し、DIR情報で管理していたR−CPUのSHデータがすべて破棄されたかをR−CPUの破棄応答とつき合わせて確認している。DIR情報で管理していたSHデータの数(SH数)と破棄されたSHデータの数が合わない場合、H−CPUはFATALする。尚、SHデータは、複数のCPUがキャッシュに持っており、且つ更新されていないデータである。
従来技術では、データ要求元CPUと、データの実メモリを所有するCPUと、データをキャッシュに持ち出しているCPUとの3つのCPU間の間でのデータの書き戻し(ライトバック(WRBK))に起因した問題のみ解決している。そのため、ライトバック以外で発生した問題については、解決しておらず、上記の問題1〜4が発生した場合に、キャッシュコヒーレンシの異常が波及し、システムがダウンしてしまう。
以下、図面を参照しながら実施の形態について説明する。
図1は、実施の形態に係る情報処理システムの構成図である。
情報処理システム101は、ビルディングブロック(BB)201−i(i=1〜4)およびクロスバスイッチ(XB)301を備える。
BB201−iは、CPUとメモリを有し、Operating System(OS)等のソフトウェアを実行する。尚、BB201−iの詳細な構成については後述する。また、実施の形態において、BB201−iをそれぞれノードとしている。尚、実施の形態のBB201−iの数は一例であり、これに限られるものではない。
XB301は、各ビルディングブロック201−iを相互に接続する。
情報処理ステム101では、CPU間のキャッシュコヒーレンス制御をディレクトリ方式で実現し、データをメモリ上に持つ後述のホームCPUが該当ディレクトリを管理している。
図2は、実施の形態に係るビルディングブロックの構成図である。
BB201−iは、CPU401−i−j(j=1,2)、メモリ501−i−j、およびXBチップ601−iを備える。尚、CPU401−i−jおよびメモリ501−i−jの数は一例であり、これに限られるものではない。
CPU401−i−1は、コア411−i、キャッシュ421−i、アクセス制御部431−i、メモリアクセス部441−i、リクエスト(REQ)部451−i、タイマ452−i−k(k=1〜p)、オーダー(ODR)部461−i、タイマ462−i−m(m=1〜q)、外部インタフェース(IF)471−iを備える。
尚、図2において、CPU401−i−2およびメモリ501−i−2の構成は、CPU401−i−1およびメモリ501−i−1の構成と同様であるため、記載は省略している。
コア411−iは、演算処理を実行し、OSやアプリケーション等を実行する。
キャッシュ421−iは、コア411−iで頻繁に利用されるデータを一時的に格納するキャッシュメモリである。
アクセス制御部431−iは、ノードマップ432−i、タグ(TAG)部433−i、ディレクトリ(DIR)部434−i、およびカウント(CNT)部435−iを備える。
ノードマップ432−iは、物理アドレスと、物理アドレスが示す記憶領域を有するメモリ501−i−jと接続されたCPU401−i−jを示す識別子(CPUID)が対応付けて登録されたテーブルである。
TAG部433−iは、キャッシュ421−iに格納されたキャッシュデータのステータス(TAG情報)を管理する。
DIR部434−iは、DIR情報521−iの管理を行う。
TAG部433−iおよびDIR部434−iは、MESIプロトコル等の手法を用いて、キャッシュコヒーレンスを保持するための処理を実行する。例えば、TAG部433−iおよびDIR部434−iは、キャッシュされたデータ(キャッシュデータ)のステータスがMESI(Modified/Exclusive/Shared/Invalid)のいずれであるかを判定する。
TAG部433−iおよびDIR部434−iは、判定結果に応じて、他のCPU401−i−jとコヒーレンシを保持するための要求(リクエスト)や依頼(オーダー)の送受信を行い、キャッシュデータの状態に応じた処理を実行する。ここで、「Modified」とは、いずれか1つのCPUがデータをキャッシュしており、かつ、キャッシュデータが更新される状態を示す。なお、キャッシュデータの状態が「Modified」である場合には、ライトバックを実行する必要がある。
また、「Exclusive」とは、いずれか1つのCPUがデータをキャッシュしており、かつ、キャッシュデータが更新されていない状態を示す。また、「Shared」とは、複数のCPUがデータをキャッシュしており、かつ、キャッシュデータが更新されていないことを示す。また、「Invalid」とは、キャッシュデータのステータスが登録されていないことを示す。以下、Modified、Exclusive、Shared、およびInvalidをそれぞれEX(M)、EX、SH、およびIVと表記する場合がある。尚、特に断らなければ、EXはEX(M)を含む。
CNT部435−iは、データを使用しているCPU401−i−jの数と当該データを返却(破棄)したCPU401−i−jの数の管理を行う。
メモリアクセス部441−i、メモリ501−i−1へのアクセスを行い、DIR情報521−iおよびデータ511−iの読み書きを行う。
リクエスト部451−iは、他のCPU401−i−jに対する要求(リクエスト)を格納するバッファであり、他のCPU401−i−jに要求を送信する。
タイマ452−i−kは、リクエスト部451−iが依頼を送信してからの時間をカウントするタイマである。タイマ452−i−kは、リクエスト部451−iが格納する要求に対応する数が用意される。
オーダー部461−iは、他のCPU401−i−jに対する依頼(オーダー)を格納するバッファであり、他のCPU401−i−jに依頼を送信する。
タイマ462−i−mは、オーダー部461−iが依頼を送信してからの時間をカウントするタイマである。タイマ462−i−mは、オーダー部461−iが格納する依頼に対応する数が用意される。
外部IF471−iは、XBチップ601およびCPU401−i−2と接続するインタフェースである。
メモリ501−i−1は、共有領域とローカル領域を有する。メモリ501−i−1は、ディレクトリ(DIR)情報521−iおよびデータ511−iを格納する。以下、DIR情報521−iを単にDIR521−iと表記する場合がある。ローカル領域は、同じBB201−i内のCPU401−i−jのCPUが使用でき、共有領域は、他のBB201−i内のCPU401−i−jからも使用できる。例えば、共有領域は、全てのBB201−i内の複数のCPU401−i−jで共有される。
DIR情報521−iは、CPU401−i−1が所有するメモリ501−i−1のアドレスのデータのステータス(MESIのいずれか)と当該アドレスのデータをキャッシュに持つCPU401−i−jとが対応付けられたリストである。
XBチップ601−iは、CPU401−i−jおよびXB301と接続と接続している。
データ要求元のCPU、データの実メモリを所有するCPU、およびデータをキャッシュに持ち出しているCPUをそれぞれローカルCPU(L−CPU)、ホームCPU(H−CPU)、およびリモートCPU(R−CPU)と呼ぶ。
また、以下の説明において、L−CPU、H−CPU、およびR−CPUは、それぞれ異なるBB201−iに搭載されたCPU401−i−jのいずれかに相当する。尚、L−CPUとH−CPUは、同一のCPU401−i−jであってもよい。
図3Aは、実施の形態に係る情報処理システムの三角転送時の処理を示す図である。
図3Bは、ローカルCPUの処理を示すフローチャートである。
図3Aでは、L−CPUがあるデータを要求した場合に、当該データを格納するメモリをH−CPUが有し、当該データはR−CPUのキャッシュに持ち出されたとする。この場合、以下のような処理が行われる。
L−CPU内のアクセス制御部431−iは、コア411−iから、メモリ501−i−jのいずれかの共有領域にあるアドレスのデータを要求される。
コア411−iからの要求を受けて、アクセス制御部431−iは、ノードマップ432−iに基づいてアクセス先、すなわち要求データのアドレスの実メモリを所有しているCPU401−i−jを検出する。
ここでは、要求データはL−CPUのキャッシュに登録されていなく(ステータスがIV)、L−CPUが要求データのアドレスの実メモリも所有していない。また、要求データのアドレスの実メモリを所有しているCPUとしてH−CPUが検出される。
L−CPUのリクエスト部451−iは、H−CPUに要求(EX要求)を出す。尚、EX要求は、キャッシュデータのステータスをEXとして要求データを持ちたいことを示す要求である。
H−CPUは、L−CPUから要求を受信すると、要求データが格納されたメモリのアドレスに対応するDIR情報を参照する。ここでは、要求データに対応するDIR情報521−iが、R−EXであるとする。H−CPUは、“R”で示されるR−CPUがEXのステータスで要求データをキャッシュに持ち出していると分かる。
H−CPUのオーダー部461−iは、R−CPUにIV依頼を送信する。IV依頼は、キャッシュに要求データをステータスがEXまたはEX(M)で格納している場合にL−CPUに要求データを送信し、要求データに対応するキャッシュデータのステータスを無効にすることを依頼する。
R−CPUは、IV依頼を受信すると、アクセス制御部431−iは、L−CPUに要求データを送信し、キャッシュデータのステータスをIVに変更し、ステータスの変更したことを示す応答をH−CPUに送信する。また、R−CPUは、IV依頼の受信時に、キャッシュデータのステータスがEX(M)であるので、アクセス制御部431−iは、H−CPUに要求データを送信(ライトバック応答)することにより、ライトバックを行う。尚、R−CPUは、IV依頼の受信時に、キャッシュデータのステータスがEXである場合は、アクセス制御部431−iは、H−CPUに要求データを送信せず、ステータスの変更したことを示す応答をH−CPUに送信する。
ここで、R−CPUがL−CPUに要求データを送信後且つH−CPUにステータスの変更したことを示す応答を送信前に故障した、またはR−CPUとH−CPU間の経路に故障が発生したとする。
H−CPUは、IV依頼を送信するとタイマを起動し、所定時間以内にステータスの変更したことを示す応答を受信するかチェックしている。上記のように、R−CPUが故障またはR−CPUとH−CPU間の経路に故障が発生した場合、H−CPUは、応答を受信しないため、タイムアウトを検出する。H−CPUは、タイムアウトを検出すると、DIR情報521−iをUNKに変更し、L−CPUにエラー(AER)応答を送信する。
L−CPUのDIR部434−iは、AER応答を受信したか判定し(ステップS701)、コア411−iは、AER応答を受信するとR−CPUから受信した要求データを破棄する(ステップS702)。また、コア411−iは、AER応答を受信しない場合、R−CPUから受信した要求データを使用する(ステップS703)。
H−CPUはタイムアウトを検出すると、AER応答をL−CPUに送信する。それにより、L−CPUはR−CPUからの問題があるデータ(すなわち、H−CPUが管理できていないデータ)を使用してしまうことを防止できる。すなわち、上述の問題1が解決できる。
図4Aは、実施の形態に係る情報処理システムのリモートCPUからの応答の検出処理を示す図である。
図4Bは、ホームCPUの処理を示すフローチャートである。
図4A,4Bにおいて、L−CPU、H−CPU、およびR−CPUは、上述の図3Aの説明と同様の処理を行うとする。
ここでは、H−CPUの処理についてさらに説明する。
上述のようにH−CPUは、R−CPUにIV依頼を送信するとタイマを起動し、所定時間以内にステータスの変更したことを示す応答を受信するかチェックしている。H−CPUは、R−CPUから所定時間内に応答を受信しない場合、タイムアウトを検出する(ステップS711)。H−CPUは、タイムアウトを検出すると、DIR情報521−iをステータスが不明でありアクセスを禁止することを示すエラーマーク(DIR=UNK)に変更し(ステップS711)、L−CPUにエラー(AER)応答を送信する。情報処理システム101は、エラーマークに対応するアドレス領域に対して、キャッシュコヒーレンシを復旧させるまで使用(アクセス)しないようする。これにより、キャッシュコヒーレンシの異常が波及するのを防ぐことが出来る。情報処理システム101は、DIR情報にエラーマークが設定された場合、CPU401−iーjに含まれるリカバリ部(不図示)により、キャッシュコヒーレンシを復旧させる。
従来は、H−CPUにおいてライトバック応答(すなわち、メモリに書き戻すためのデータ)の受信が期待される場合に、IV依頼の送信から所定時間以内にライトバック応答を受信しなかった場合にのみ、DIR情報をDIR=UNKに変更している。
例えば、IV依頼を受信したときに、R−CPUのキャッシュの状態がEXである場合、R−CPUは、H−CPUにライトバック応答は送信せず、ステータスの変更したことを示す応答をH−CPUに送信する。この場合、従来技術では、R−CPUが故障し、ステータスの変更したことを示す応答をH−CPUが所定時間以内に受信できなくても、DIR情報をDIR=UNKに変更しない。すなわち、キャッシュコヒーレンスが崩れている可能性があっても、情報処理システムはキャッシュコヒーレンスの異常を認識できず、FATALが発生する。
H−CPUは、IV依頼を送信してから所定時間以内にステータスの変更したことを示す応答を受信するかチェックし、タイムアウトを検出すると、DIR情報をUNKに変更する。実施の形態の情報処理システムによれば、ライトバック応答以外の応答(ステータスの変更したことを示す応答)の所定時間以内の未受信を検出して、DIR情報にエラーマークを記述できる。すなわち、上述の問題2が解決できる。
図5Aは、実施の形態に係る情報処理システムのディレクトリ情報に矛盾がある場合の処理を示す図である。
図5Bは、リモートCPUの処理を示すフローチャートである。
図5Aにおいて、あるデータをキャッシュにステータスがEXで持ちたいL−CPUがいるとする。L−CPUがノードマップを確認すると、H−CPUが自身ではなかったので、H−CPUにEXになりたいとリクエスト(EX要求)を送信する。
H−CPUが対象アドレスのDIR情報521−iを確認するとR−CPUがEXで所有していると検出されたとする。H−CPUはR−CPUに、データをL−CPUに送信してステータス(TAG情報)をIVにするようにオーダー(IV依頼)を送信する。本来であればR−CPUはTAG情報をIVに変更し、H−CPUに変更したことを応答で伝え、R−CPUはL−CPUにデータを転送する。
ここで、R−CPUは要求されたデータ(EXデータ)をキャッシュに保持していなかったとする(すなわち、TAG情報がIV)。
H−CPUからのオーダーを受け取ったR−CPUはTAG情報を参照し、キャッシュに要求された対象アドレスのデータがあるか判定する(ステップS722)。TAG情報にH−CPUから要求された対象アドレスのデータを持っていないので、R−CPUはH−CPUにAER応答をする(ステップS723)。以降、R−CPUは、通常の処理(正常処理)を行う(ステップS724)。AER応答を受け取ったH−CPUは対象アドレスのDIR情報521−iにDIR=UNKを書き込み、L−CPUにAERを応答する。AERを受け取ったL−CPUは要求を終了する。
また、L−CPUがSH、EXデータを保持しているにも関わらず、SHデータを要求してきた場合、L−CPUがEXデータを保持しているにもかかわらず、EXデータを要求してきた場合も、H−CPUは、DIR情報521−iをDIR=UNKに変更し、L−CPUにAERを応答する。すでにDIR=UNKであった場合には、L−CPUにAERを応答する。
また、L−CPUがEXデータを保持していないはずなのにデータを書き戻してきた場合や、L−CPUがSH、EXデータを保持していないはずなのにデータを返却してきた場合はH−CPUはFATALする。
実施の形態に係る情報処理システムは、ディレクトリ情報に矛盾がある場合、AER応答を行い、DIR情報にDIR=UNKを書込むことで、DIR情報の変更を抑止し、キャッシュコヒーレンシの異常の波及を防ぐ。すなわち、上述の問題3が解決できる。
ここで、DIR矛盾があり、DIR情報がUNKとなるケースを示す。
図6は、DIR=UNKとなるパターンを示す図である。
図6では、L−CPUからのリクエストを受けて、H−CPUのDIR情報、R−CPUのTAG情報を変更する。
図6のL−TAG、R−TAGは、それぞれL−CPU、R−CPUのTAG情報である。
・IV要求、SH要求、またはEX要求
IV要求の場合、R−CPUのTAG情報をEXからSHに変更するようにオーダーを投げ、R−CPUはH−CPUに変更したことを応答で伝えてL−CPUにデータを送り、L−CPUはTAG情報をSHに変更する。また、H−CPUはDIR情報をR−EXからR−SHに変更する。
SH要求の場合、R−CPUのTAG情報をEXからSHに変更するようにオーダーを投げ、L−CPUにデータを送り、L−CPUはTAG情報をSHに変更する。また、H−CPUはDIR情報をR−EXからR−SHに変更する。ここで、R−CPUがEXデータを変更している場合、R−CPUはTAG情報をIVに変更したことをH−CPUに応答で伝えてデータをH−CPUとL−CPUに送る。L−CPUはTAG情報をEXに変更する。また、H−CPUのDIR情報はR−EXのままである。データを受け取ったH−CPUは最新のデータをメモリに反映する。
EX要求の場合、R−CPUのTAG情報をEXからIVに変更するようにオーダーを投げ、R−CPUはTAG情報をIVに変更したことをH−CPUに応答で伝えてデータをL−CPUに送り、L−CPUはTAG情報をEXに変更する。また、H−CPUのDIR情報はR−EXのままである。ここで、R−CPUがEXデータを変更している場合、R−CPUはH−CPUとL−CPUにデータを送り、H−CPUは最新のデータをメモリに反映する。
・IV依頼
R−CPUのTAG情報をEXからIVに変更するようにオーダーを投げ、R−CPUはTAG情報をIVに変更したことをH−CPUに応答で伝える。H−CPUはDIR情報をR−EXからR−IVに変更する。
・全IV依頼
R−CPUのTAG情報をSHからIVに変更するようにオーダーを投げ、R−CPUはTAG情報をIVに変更したことをH−CPUに応答で伝える。H−CPUはDIR情報をR−SHからR−IVに変更する。
このとき、R−CPUはH−CPUからのオーダーと自身のキャッシュを確認し、SHではなくEXで所有していたら、R−CPUはFATALするようにする。
・強制全IV
R−CPUのTAG情報をEXからIVに変更するようにオーダーを投げ、R−CPUはTAG情報をIVに変更したことをH−CPUに応答で伝える。H−CPUはDIR情報をR−EXからR−IVに変更する。ここで、R−CPUがEXデータを変更している場合でも、H−CPUにデータ送付せず、H−CPUは最新のデータをメモリに反映しない。
図7Aは、実施の形態に係る情報処理システムのSH数が矛盾した場合の処理を示す図である。
図7Bは、リモートCPUの処理を示すフローチャートである。
図7Cは、ホームCPUの処理を示すフローチャートである。
図7A〜7Cにおいて、あるデータをH−CPUが自身のメモリに戻したいとする。
H−CPUが対象アドレスのDIR情報521−iを参照すると、R−CPUがデータをステータス(TAG情報)がSHでキャッシュに所有していると検出され、H−CPUはR−CPUにTAG情報をIVにするようにオーダー(データ回収指示)を送信し、データを回収する。尚、データの回収は、R−CPUに回収データを転送させるのではなく破棄させ、R−CPUのTAG情報がSHからIVになるように依頼する。
ここで、R−CPUは1つではなく複数あり、H−CPUのCNT部435−iがSH数を確認すると複数のR−CPUがデータをTAG情報がSHでキャッシュに保持していたとする。このとき、H−CPUは、L−CPUとH−CPUを除く全CPUにオーダーを送信する。すなわち、H−CPUは、送信先のCPUがデータをキャッシュに所有しているか否かにかかわらずオーダーを送信する。尚、H−CPUは、TAG情報がSHでキャッシュに保持しているR−CPUにのみオーダーを送信してもよい。ここで、SH数は、DIR情報に基づく、あるデータをキャッシュに持っているR−CPUの数である。
H−CPUからのデータ回収指示を受けたR−CPUはデータ、データがキャッシュにあるか判定し(ステップS731)、データがキャッシュにあれば破棄し、TAG情報をIVに変更したことをしめす応答をH−CPUに送信する(ステップS732)。また、もともとデータを所有しておらず、TAG情報がIVであったR−CPUもH−CPUに応答を返す(ステップS733)。R−CPUは、応答の中にキャッシュにデータを持っていたか否かを示す情報(CNT)を含める。R−CPUは、キャッシュにデータを持っていた場合、CNT=1とし、キャッシュにデータを持っていなかった場合、CNT=0とする。
これにより、全R−CPUから応答が返ってきたときに、H−CPUは、SH数とCNT=1である応答の数との差分(SH−CNT)を算出し、すべてのSHのデータを回収できたかを判定する(ステップS741)。例えば、H−CPUは、差分がSH数とDIR情報521−iにより算出される期待値と一致するか判定することにより、すべてのSHのデータを回収できたかを判定する。
H−CPUは、すべてのSHのデータを回収できていない場合、DIR情報521−iにDIR=UNKを書き込み(ステップS742)、通常の処理を実行する(ステップS743)。
算出された差分により、H−CPUは、それぞれ下記のように動作する。
・SH−CNT=0の場合(このとき期待値は0)
すべてのSHのデータを回収できたので、H−CPUは、正常にオーダーを終了する。
・SH−CNT=1の場合
SHのデータを1つ回収できていない。どこかのCPUがSHでデータを所有している状態である。
このとき、H−CPUはDIR情報DIR情報521−iから回収できていないSHはどのCPUが所有しているのかを確認する。
回収できなかったSHのデータを所有しているCPUがL−CPUである場合、そもそもオーダーを送信していないので、期待値は1であり、SH−CNTと期待値は一致しているため、正常にオーダーを終了する。
回収できなかったSHを所有しているCPUがR−CPUである場合、期待値は0であるが、SH−CNTと期待値は一致していない。すなわち、SHのデータがどこかで消失してしまっているので、DIR情報521−iにDIR=UNKを書き込んでL−CPUにAERを応答し、オーダーを終了する。
・SH−CNT≧2の場合
L−CPU以外にもR−CPUからも回収できていないことになる。SHがどこかで消失してしまっているので、DIR情報にDIR=UNKを書き込んでL−CPUにAERを応答し、オーダーを終了する。
・SH−CNT≦−1の場合
この場合、H−CPUは、SHのデータを余計に回収している。H−CPUが把握しているSH数よりも多くのR−CPUがデータをSHで所有していたことになり、これはH−CPUが以前に応答を受け損ねていたことを示す。H−CPUは、DIR情報521−iにDIR=UNKを書き込んでL−CPUにAERを応答し、オーダーを終了する。
実施の形態の情報処理システムは、DIR情報に基づくSH数と実際にキャッシュにデータをSHで保持しているCPUの数とが矛盾している場合、DIR情報にDIR=UNKを書込むことで、DIR情報の変更を抑止し、キャッシュコヒーレンシの異常の波及を防ぐ。すなわち、上述の問題4が解決できる。
次に、CPU401−i−jがデータ要求元であるL−CPUである場合の処理を示す。
図8は、ローカルCPUの詳細な処理を示すフローチャートである。
ステップS801において、コア411−iは、あるアドレスに格納されたデータを要求し、アクセス制御部431−iは要求を受信する。
ステップS802において、TAG部432−iは、TAG情報に基づいて、要求されたデータ(要求データ)がキャッシュ421−iに格納されたかを判定する。キャッシュに要求データが421−iに格納された場合、制御はステップS815に進み、格納されていない場合、制御はステップS803に進む。
ステップS803において、アクセス制御部431−iは、ノードマップ432−iに基づいて、要求データを格納するアドレスに対応するメモリを所有するCPU401−i−jを検出する。要求データを格納するアドレスに対応するメモリを自CPU401−i−jが所有していた場合、制御はステップS813に進み、要求データを格納するアドレスに対応するメモリを他のCPU401−i−j(H−CPU)が所有していた場合、制御はステップS804に進む。
ステップS804において、リクエスト部451−iは、H−CPUに要求を送信し、タイマ452−i−kを2つ起動する。2つのタイマ452−i−kは、それぞれ第1の所定時間、および第1の所定時間より長い第2の所定時間で満了する。
ステップS805において、リクエスト部451−iは、H−CPUに要求を送信してから第1の所定時間以内にH−CPUから応答を受信した場合、制御はステップS805に進み、H−CPUに要求を送信してから第1の所定時間以内にH−CPUから応答を受信しなかった(タイマ満了)場合、制御はステップS811に進む。
ステップS806において、DIR部434−iは、AER応答を受信したか判定する。AER応答を受信した場合、制御はステップS812に進み、AER応答を受信しない場合、制御はステップS807に進む。
ステップS807において、R−CPUからの要求データの転送(送信)がある場合、制御はステップS808に進み、R−CPUからの要求データの転送が無い場合、制御はステップS809に進む。尚、R−CPUからの要求データの転送が無い場合、アクセス制御部431−iは、H−CPUから要求データを受信している。
ステップS808において、DIR部434−iは、H−CPUに要求を送信してから第2の所定時間以内にR−CPUから応答(要求データ)を受信したか判定する。H−CPUに要求を送信してから第2の所定時間以内にR−CPUから応答を受信した場合、制御はステップS809に進み、H−CPUに要求を送信してから第2の所定時間以内にR−CPUから応答を受信しない場合(タイマ満了)、制御はステップS810に進む。
ステップS809において、アクセス制御部431−iは、受信した要求データをキャッシュ421−iに格納する。
ステップS810において、DIR部434−iは、タイムアウトと判定する。
ステップS811において、DIR部434−iは、タイムアウトと判定する。
ステップS812において、DIR部434−iは、コア411−iに受信した要求データの破棄を通知する。
ステップS813において、アクセス制御部431−iは、メモリアクセス部441−iを介してメモリ501−i−jから要求データを読み出し、キャッシュ421−iに格納する。
ステップS814において、DIR部434−iは、DIR情報521−iを更新する。
ステップS815において、アクセス制御部431−iはコアに要求データを送信する。
次に、CPU401−i−jがデータの実メモリを所有するH−CPUである場合の処理を示す。
図9は、ホームCPUの詳細な処理を示すフローチャートである。
ステップS821において、リクエスト部451−iは、L−CPUから要求を受信する。
ステップS822において、L−CPUからの要求がデータ書き戻し要求である場合、制御はステップS823に進み、L−CPUからの要求がデータ書き戻し要求でない場合、制御はステップS828に進む。
ステップS823において、DIR部434−iは、DIR情報521−iに矛盾があるか判定する。DIR部434−iは、例えば、図6に示すようなパターンに該当するかによって、矛盾があるか判定する。
ステップS824において、DIR情報521−iがすでにエラーマーク(DIR=UNK)である場合、制御はステップS842進み、エラーマーク(DIR=UNK)でない場合、制御はステップS825進む。
ステップS825において、DIR情報521−iがL−CPU:EX以外の場合 制御はステップS826に進み、DIR情報521−iがL−CPU:EXの場合、制御はステップS827に進む。
ステップS826において、ホームCPUはFATALする。
ステップS827において、メモリアクセス部441は、データ511−iの更新を行う。
ステップS828において、DIR部434−iは、DIR情報521−iに矛盾があるか判定する。
ステップS829において、DIR情報521−iがすでにエラーマーク(DIR=UNK)である場合、制御はステップS842進み、エラーマーク(DIR=UNK)でない場合、制御はステップS830進む。
ステップS830において、DIR情報521−iがL−CPU:SHであり、且つL−CPUからの要求がSH要求である場合、制御はステップS841に進み、DIR情報521−iがL−CPU:SHであり、且つL−CPUからの要求がSH要求(TAG情報をSHとしてデータを持ちたい要求)である以外の場合、制御はステップS831に進む。
ステップS831において、DIR情報521−iがL−CPU:EXであり、且つL−CPUからの要求がEX要求(TAG情報をEXとしてデータを持ちたい要求)である場合、制御はステップS841に進み、DIR情報521−iがL−CPU:EXであり、且つL−CPUからの要求がEX要求である以外の場合、制御はステップS832に進む。
ステップS832において、DIR部434−iは、DIR情報521−iに基づいて、データをキャッシュに格納している他のCPU(R−CPU)を検出する。データをキャッシュに格納している他のCPUがない場合、制御はステップS833に進み、データをキャッシュに格納している他のCPUがある場合、制御はステップS834に進む。
ステップS833において、メモリアクセス部441−iは、メモリ501−i−jからデータ511−iを読み出す。
ステップS834において、オーダー部461−iは、R−CPUに依頼を送信し、タイマ452−i−kを起動する。R−CPUへの依頼は、R−CPUのTAG情報をIVにする(キャッシュデータを破棄する)IV依頼(データ破棄依頼)や、L−CPUへのデータの転送依頼を含むIV依頼(データ返却依頼)等である。
ステップS835において、DIR部811−iは、R−CPUに要求を送信してから第3の所定時間以内にR−CPUから応答を受信したか判定する。R−CPUに要求を送信してから第3の所定時間以内にR−CPUから応答を受信した場合、制御はステップS836に進み、R−CPUに要求を送信してから第3の所定時間以内にR−CPUから応答を受信しない場合(タイマ満了)、制御はステップS838に進む。
ステップS836において、DIR部811−iは、R−CPUから受信した応答がAER応答であるか判定する。R−CPUから受信した応答がAER応答である場合、制御はステップS841に進み、R−CPUから受信した応答がAER応答で無い場合、制御はステップS837に進む。
ステップS837において、CNT部435−iは、SH数が不足しているか(すなわち、すべてのSHのデータを回収できたか)判定する。SH数が不足している場合(すべてのSHのデータを回収できていない場合)、制御はステップS841に進み、SH数が不足していない場合、制御はステップS839に進む。
ステップS838において、DIR部434−iは、タイムアウトを判定する。
ステップS839において、DIR部434−iは、L−CPUからの要求に基づいて、DIR情報521−iを更新する。
ステップS840において、DIR部434−iは、L−CPUに応答する。
ステップS841において、DIR部434−iは、DIR情報521−iにエラーマーク(DIR=UNK)を書き込む。
ステップS842において、DIR部434−iは、L−CPUにAER応答を送信する。
次に、CPU401−i−jがデータをキャッシュに格納していると判定されたR−CPUである場合の処理を示す。
図10は、リモートCPUの詳細な処理を示すフローチャートである。
ステップS851において、オーダー部461−iは、H−CPUから依頼を受信する。
ステップS852において、H−CPUから受信した依頼が、データ返却依頼である場合、制御はステップS853に進み、データ返却依頼でない場合、制御はステップS859に進む。
ステップS853において、TAG部433−iは、キャッシュ421−iにH−CPUからの依頼に対応するデータが格納されたか判定する。キャッシュ421−iにH−CPUからの依頼に対応するデータが格納された場合、制御はステップS854に進み、格納されていない場合、制御はステップS858に進む。
ステップS854において、TAG部433−iは、キャッシュ421−iを更新する。すなわち、TAG部433−iは、キャッシュ421−iに格納されたH−CPUからの依頼に対応するデータをオーダー部461−iに送信し、キャッシュ421−iに格納されたデータを破棄、すなわち、当該データのステータスを変更する。
ステップS855において、オーダー部461−iは、ステータスを変更したことを示す応答をH−CPUに送信する。さらに、オーダー部461−iは、H−CPUからの依頼に対応するデータをH−CPUに送信してもよい。
ステップS856において、オーダー部461−iがH−CPUからの依頼に対応するデータをL−CPUに送信する場合、制御はステップS857に進み、送信しない場合、処理は終了する。
ステップS857において、オーダー部461−iがH−CPUからの依頼に対応するデータをL−CPUに送信する。
ステップS858において、DIR部434−iは、H−CPUにAER応答を送信する。
ステップS859において、H−CPUから受信した依頼は、データ破棄依頼である。
ステップS860において、TAG部433−iは、キャッシュ421−iにH−CPUからの依頼に対応するデータが格納されたか判定する。キャッシュ421−iにH−CPUからの依頼に対応するデータが格納された場合、制御はステップS861に進み、格納されていない場合、制御はステップS863に進む。
ステップS861において、TAG部433−iは、キャッシュ421−iを更新する。すなわち、TAG部433−iは、キャッシュ421−iに格納されたH−CPUからの依頼に対応するデータを破棄、すなわち、当該データのステータスを変更する。
ステップS862において、TAG部433−iは、H−CPUからの依頼に対応するデータを持っていたことを示すCNT=1を含む応答をH−CPUに送信する。
ステップS863において、TAG部433−iは、H−CPUからの依頼に対応するデータを持っていなかったことをCNT=0を含む応答をH−CPUに送信する。
図11は、実施の形態に係る情報処理システムの処理を示す図である。
上述の図8〜10の処理を簡略化して示すと図11のようになる。
L−CPUがデータ要求を生成し、H−CPUに送信する。L−CPUは、データ要求を送信とともに、H−CPUからの応答を検出するL−Hタイマ、R−CPUからの応答を検出するR−Lタイマを起動する。
H−CPUは、データ要求を受信するとREQ−ODRタイマを起動し、データ要求を受信してから依頼を発行するまでの時間をカウントする。H−CPUは、依頼(オーダー)を生成し、R−CPUに送信する。また、H−CPUは、依頼の送信とともに、R−CPUからの応答を検出するH−Rタイマを起動する。REQ−ODRタイマまたはH−Rタイマがタイムアウトした場合、DIR情報521−iをDIR=UNKにする。
R−CPUは、H−CPUからの依頼と自身のTAG情報に基づいて、DIR情報に矛盾が無いか判定する。R−CPUは、DIR情報に矛盾が無ければ、正常な応答を生成しH−CPUに送信する。また、L−CPUにデータの送信が必要であれば、L−CPUにデータを送信する(三角転送)。R−CPUは、DIR情報に矛盾があれば、AER応答をH−CPUに送信する。
H−CPUは、R−CPUからの応答とステート(DIR情報およびSH数に基づいて、L−CPUへの応答を生成し、L−CPUに送信する。
実施の形態に係る情報処理システムによれば、上述の問題1〜4が発生しても、キャッシュコヒーレンシの異常が波及し、システムがダウンしてしまうのを防ぐことが出来る。
また、情報処理システム101は、あらかじめ情報処理システム101のハードウェアまたはソフトウェアが参照できる場所に、故障ノードを示す情報を登録しておき、CPU402−iーjがアクセスする際にアクセス先が故障ノードであったら、DIR情報521−iにDIR=UNKを書いてもよい。
情報処理システム101は、H−CPUの依頼がタイムアウトしたらDIR情報521−iにDIR=UNKを書き込んでいるが、エントリがつまって依頼を発行できない場合に備えて別途タイマを用意し、エントリを解放できていない依頼の宛先を故障ノードであるとしてDIR情報521−iにDIR=UNKを書いてもよい。また、このとき上記の故障ノードの登録を行ってもよい。
アクセス制御部431−iは、ある範囲内でDIR=UNKを複数検出したら等の条件を用いて、故障メモリアドレスを示すDIR情報521−iのDIR=UNKだけでなく、故障DIMM、故障CPU、または故障ノードを示すエラーマークを設定する等、エラーマークする単位を昇格させてもよい。また、そのときにはDIR情報521−iがDIR=UNKの場合と同様のリカバリができるようにしておいてもよい。これにより、タイムアウト待ちやリカバリにかかる時間を節約でき、性能を向上できる。
以上の実施の形態に関し、さらに以下の付記を開示する。
(付記1)
複数の演算処理装置と、前記複数の演算処理装置のそれぞれが接続する複数のメモリと、を有し、前記複数のメモリの共有領域が前記複数の演算処理装置で共有される情報処理装置において、
前記複数の演算処理装置のうち、第1の演算処理装置は、第2の演算処理装置にデータの要求を送信する第1の制御部を備え、
前記第2の演算処理装置は、前記第1の演算装置から前記要求を受信したとき、前記データを保持する演算処理装置と前記データの状態とを示すディレクトリ情報に基づいて、前記データをキャッシュに保持する第3の演算処理装置を検出し、前記第1の演算処理装置への前記データの転送と前記データの前記キャッシュからの破棄を含む依頼を前記第3の演算処理装置に送信する第2の制御部を備え、
前記第3の演算処理装置は、前記依頼を受信し、前記第1の演算処理装置へ前記データを送信し、前記データのステータスを変更し、前記ステータスを変更したことを示すステータス変更応答を前記第2の演算処理装置に送信する第3の制御部を備え、
前記第2の制御部は、前記第3の演算処理装置に前記依頼を送信してから所定時間以内に前記第3の演算処理装置から前記ステータス変更応答を受信しない場合に、前記第1の演算処理装置にエラー応答を送信し、
前記第1の制御部は、前記エラー応答を受信した場合、前記第3の演算処理装置から受信した前記データを破棄することを特徴とする情報処理装置。
(付記2)
前記第2の制御部は、前記第3の演算処理装置に前記データの要求を送信してから前記所定時間以内に前記第3の演算処理装置から前記ステータス変更応答を受信しない場合に、前記データのディレクトリ情報を前記データに対するアクセスを禁止するエラーマークにする付記1記載の情報処理装置。
(付記3)
前記第3の制御部は、前記依頼を受信したときに、前記第3の演算処理装置が前記データを保持していない場合、前記第2の演算処理装置にエラー応答を送信することを特徴とする付記1または2記載の情報処理装置。
(付記4)
前記第2の制御部は、前記データのキャッシュからの破棄を含む依頼を前記第1の演算処理装置と前記第2の演算処理装置を除く前記複数の演算処理装置に送信し、
前記第1の演算処理装置と前記第2の演算処理装置を除く前記複数の演算処理装置それぞれは、前記データを前記キャッシュに保持していた場合に、前記データを破棄し、前記第2の制御部に前記データを破棄したことを示す応答を送信し、
前記第2の制御部は、前記ディレクトリ情報に基づく前記データを破棄したことを示す応答の数の期待値と、受信した前記データを破棄したことを示す応答の数とが一致しない場合に、前記データのディレクトリ情報を前記エラーマークにすることを特徴とする付記1乃至3のいずれか1項に記載の情報処理装置。
(付記5)
複数の演算処理装置と、前記複数の演算処理装置のそれぞれが接続する複数のメモリと、を有し、前記複数のメモリの共有領域が前記複数の演算処理装置で共有される情報処理装置の制御方法において、
前記複数の演算処理装置のうち、第1の演算処理装置が、第2の演算処理装置にデータの要求を送信し、
前記第2の演算処理装置が、前記第1の演算装置から前記要求を受信したとき、前記データを保持する演算処理装置と前記データの状態とを示すディレクトリ情報に基づいて、前記データをキャッシュに保持する第3の演算処理装置を検出し、前記第1の演算処理装置への前記データの転送と前記データの前記キャッシュからの破棄を含む依頼を前記第3の演算処理装置に送信し、
前記第3の演算処理装置が、前記依頼を受信し、前記第1の演算処理装置へ前記データを送信し、前記データのステータスを変更し、前記ステータスを変更したことを示すステータス変更応答を前記第2の演算処理装置に送信し、
前記第2の演算処理装置が、前記第3の演算処理装置に前記依頼を送信してから所定時間以内に前記第3の演算処理装置から前記ステータス変更応答を受信しない場合に、前記第1の演算処理装置にエラー応答を送信し、
前記第1の演算処理装置が、前記エラー応答を受信した場合、前記第3の演算処理装置から受信した前記データを破棄する
処理を備える制御方法。
制御方法。
(付記6)
前記第2の演算処理装置が、前記第3の演算処理装置に前記データの要求を送信してから前記所定時間以内に前記第3の演算処理装置から前記ステータス変更応答を受信しない場合に、前記データのディレクトリ情報を前記データに対するアクセスを禁止するエラーマークにする付記5記載の制御方法。
(付記7)
前記第3の演算処理装置が、前記依頼を受信したときに、前記第3の演算処理装置が前記データを保持していない場合、前記第2の演算処理装置にエラー応答を送信することを特徴とする付記5または6記載の制御方法。
(付記8)
前記第2の演算処理装置が、前記データのキャッシュからの破棄を含む依頼を前記第1の演算処理装置と前記第2の演算処理装置を除く前記複数の演算処理装置に送信し、
前記第1の演算処理装置と前記第2の演算処理装置を除く前記複数の演算処理装置それぞれが、前記データを前記キャッシュに保持していた場合に、前記データを破棄し、前記第2の演算処理装置に前記データを破棄したことを示す応答を送信し、
前記第2の演算処理装置が、前記ディレクトリ情報に基づく前記データを破棄したことを示す応答の数の期待値と、受信した前記データを破棄したことを示す応答の数とが一致しない場合に、前記データのディレクトリ情報を前記エラーマークにすることを特徴とする付記5乃至7のいずれか1項に記載の制御方法。
101 情報処理システム
201 ビルディングブロック(BB)
301 クロスバスイッチ(XB)
401 CPU
411 コア
421 キャッシュ
431 アクセス制御部
441 メモリアクセス部
451 リクエスト部
452 タイマ
461 オーダー部
462 タイマ
471 外部インタフェース(IF)
501 メモリ
511 データ
521 ディレクトリ(DIR)情報
601 XBチップ

Claims (5)

  1. 複数の演算処理装置と、前記複数の演算処理装置のそれぞれが接続する複数のメモリと、を有し、前記複数のメモリの共有領域が前記複数の演算処理装置で共有される情報処理装置において、
    前記複数の演算処理装置のうち、第1の演算処理装置は、第2の演算処理装置にデータの要求を送信する第1の制御部を備え、
    前記第2の演算処理装置は、前記第1の演算装置から前記要求を受信したとき、前記データを保持する演算処理装置と前記データの状態とを示すディレクトリ情報に基づいて、前記データをキャッシュに保持する第3の演算処理装置を検出し、前記第1の演算処理装置への前記データの転送と前記データの前記キャッシュからの破棄を含む依頼を前記第3の演算処理装置に送信する第2の制御部を備え、
    前記第3の演算処理装置は、前記依頼を受信し、前記第1の演算処理装置へ前記データを送信し、前記データのステータスを変更し、前記ステータスを変更したことを示すステータス変更応答を前記第2の演算処理装置に送信する第3の制御部を備え、
    前記第2の制御部は、前記第3の演算処理装置に前記依頼を送信してから所定時間以内に前記第3の演算処理装置から前記ステータス変更応答を受信しない場合に、前記第1の演算処理装置にエラー応答を送信し、
    前記第1の制御部は、前記エラー応答を受信した場合、前記第3の演算処理装置から受信した前記データを破棄することを特徴とする情報処理装置。
  2. 前記第2の制御部は、前記第3の演算処理装置に前記データの要求を送信してから前記所定時間以内に前記第3の演算処理装置から前記ステータス変更応答を受信しない場合に、前記データのディレクトリ情報を前記データに対するアクセスを禁止するエラーマークにする請求項1記載の情報処理装置。
  3. 前記第3の制御部は、前記依頼を受信したときに、前記第3の演算処理装置が前記データを保持していない場合、前記第2の演算処理装置にエラー応答を送信することを特徴とする請求項1または2記載の情報処理装置。
  4. 前記第2の制御部は、前記データのキャッシュからの破棄を含む依頼を前記第1の演算処理装置と前記第2の演算処理装置を除く前記複数の演算処理装置に送信し、
    前記第1の演算処理装置と前記第2の演算処理装置を除く前記複数の演算処理装置それぞれは、前記データを前記キャッシュに保持していた場合に、前記データを破棄し、前記第2の制御部に前記データを破棄したことを示す応答を送信し、
    前記第2の制御部は、前記ディレクトリ情報に基づく前記データを破棄したことを示す応答の数の期待値と、受信した前記データを破棄したことを示す応答の数とが一致しない場合に、前記データのディレクトリ情報を前記エラーマークにすることを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 複数の演算処理装置と、前記複数の演算処理装置のそれぞれが接続する複数のメモリと、を有し、前記複数のメモリの共有領域が前記複数の演算処理装置で共有される情報処理装置の制御方法において、
    前記複数の演算処理装置のうち、第1の演算処理装置が、第2の演算処理装置にデータの要求を送信し、
    前記第2の演算処理装置が、前記第1の演算装置から前記要求を受信したとき、前記データを保持する演算処理装置と前記データの状態とを示すディレクトリ情報に基づいて、前記データをキャッシュに保持する第3の演算処理装置を検出し(、前記第1の演算処理装置への前記データの転送と前記データの前記キャッシュからの破棄を含む依頼を前記第3の演算処理装置に送信し、
    前記第3の演算処理装置が、前記依頼を受信し、前記第1の演算処理装置へ前記データを送信し、前記データのステータスを変更し、前記ステータスを変更したことを示すステータス変更応答を前記第2の演算処理装置に送信し、
    前記第2の演算処理装置が、前記第3の演算処理装置に前記依頼を送信してから所定時間以内に前記第3の演算処理装置から前記ステータス変更応答を受信しない場合に、前記第1の演算処理装置にエラー応答を送信し、
    前記第1の演算処理装置が、前記エラー応答を受信した場合、前記第3の演算処理装置から受信した前記データを破棄する
    処理を備える制御方法。
JP2016012845A 2016-01-26 2016-01-26 情報処理装置および制御方法 Active JP6520733B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016012845A JP6520733B2 (ja) 2016-01-26 2016-01-26 情報処理装置および制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016012845A JP6520733B2 (ja) 2016-01-26 2016-01-26 情報処理装置および制御方法

Publications (2)

Publication Number Publication Date
JP2017134540A true JP2017134540A (ja) 2017-08-03
JP6520733B2 JP6520733B2 (ja) 2019-05-29

Family

ID=59504374

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016012845A Active JP6520733B2 (ja) 2016-01-26 2016-01-26 情報処理装置および制御方法

Country Status (1)

Country Link
JP (1) JP6520733B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007199999A (ja) * 2006-01-26 2007-08-09 Nec Computertechno Ltd マルチプロセッサシステム及びその動作方法
JP2013140445A (ja) * 2011-12-28 2013-07-18 Fujitsu Ltd 情報処理装置、制御方法および制御プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007199999A (ja) * 2006-01-26 2007-08-09 Nec Computertechno Ltd マルチプロセッサシステム及びその動作方法
JP2013140445A (ja) * 2011-12-28 2013-07-18 Fujitsu Ltd 情報処理装置、制御方法および制御プログラム

Also Published As

Publication number Publication date
JP6520733B2 (ja) 2019-05-29

Similar Documents

Publication Publication Date Title
TWI480883B (zh) 資訊處理裝置及控制方法
EP0801349B1 (en) Deterministic distributed multicache coherence protocol
JP3661761B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)データ処理システム
US7856534B2 (en) Transaction references for requests in a multi-processor network
JP3644587B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム
US8812794B2 (en) Resolving messaging deadlock in a distributed shared memory
JP4712974B2 (ja) コヒーレンシ維持のための柔軟なプローブ/プローブ応答経路制御
US8990513B2 (en) Accelerated recovery for snooped addresses in a coherent attached processor proxy
KR20010101193A (ko) 판독 요청을 원격 처리 노드에 추론적으로 전송하는비정형 메모리 액세스 데이터 처리 시스템
JP5550089B2 (ja) マルチプロセッサシステム、ノードコントローラ、障害回復方式
KR101529036B1 (ko) 데이터 없이 추론적 소유권에 대한 지원
US8938587B2 (en) Data recovery for coherent attached processor proxy
US20140201467A1 (en) Epoch-based recovery for coherent attached processor proxy
CN101004728B (zh) 直接存储器访问的访问系统和方法
US7159079B2 (en) Multiprocessor system
EP2568379B1 (en) Method for preventing node controller deadlock and node controller
US20200250094A1 (en) Interconnect and method of operation of such an interconnect
JP6520733B2 (ja) 情報処理装置および制御方法
US10775870B2 (en) System and method for maintaining cache coherency
WO2019149031A1 (zh) 应用于节点系统的数据处理方法及装置
JP2009037273A (ja) マルチプロセッサシステム
JP2018129041A (ja) スヌープリクエストに対する応答の転送
JP4644647B2 (ja) 情報処理装置及び情報処理装置の制御方法
JP6631317B2 (ja) 演算処理装置、情報処理装置および情報処理装置の制御方法
US9959173B2 (en) Node, arithmetic processing device, and arithmetic processing 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: 20190227

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: 20190402

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190415

R150 Certificate of patent or registration of utility model

Ref document number: 6520733

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150