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

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

Info

Publication number
JP5929420B2
JP5929420B2 JP2012077850A JP2012077850A JP5929420B2 JP 5929420 B2 JP5929420 B2 JP 5929420B2 JP 2012077850 A JP2012077850 A JP 2012077850A JP 2012077850 A JP2012077850 A JP 2012077850A JP 5929420 B2 JP5929420 B2 JP 5929420B2
Authority
JP
Japan
Prior art keywords
cpu
data
arithmetic processing
directory
cache
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
JP2012077850A
Other languages
English (en)
Other versions
JP2013206395A (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 JP2012077850A priority Critical patent/JP5929420B2/ja
Priority to US13/742,472 priority patent/US9436613B2/en
Publication of JP2013206395A publication Critical patent/JP2013206395A/ja
Application granted granted Critical
Publication of JP5929420B2 publication Critical patent/JP5929420B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0826Limited pointers directories; State-only directories without pointers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、演算処理装置、演算処理装置の制御方法及び情報処理装置に関する。
従来、NUMA(Non-Uniform Memory Access)の技術を用いたサーバ等の情報処理装置が知られている。NUMAの技術を用いた情報処理装置では、例えば、複数の演算処理装置(以下、CPU(Central Processing Unit)と記す)それぞれに主記憶装置としてのメインメモリが接続され、各メインメモリは、複数のCPU間で共有される。
このNUMAの技術を用いた情報処理装置では、各CPUは、例えば、ディレクトリ方式で各CPUに内蔵されるキャッシュメモリ間の整合性を維持するように、キャッシュコヒーレンスを制御する。ディレクトリ方式では、各CPUは、自身と接続するメインメモリであるローカルメモリ上のデータブロック毎に、各データブロックの所在を示すディレクトリの状態を示すディレクトリステートを管理する。
例えば、各ディレクトリの状態を示すディレクトリステートには、INV(Invalid)、SH(Shared)、EX(Exclusive)がある。ここで、INVは、他のCPUが有するキャッシュメモリに保持されていないことを示し、SHは、他のCPUのキャッシュメモリにクリーンな状態で保持されていることを示し、EXは、単一のCPUのキャッシュメモリに保持され、ダーティな可能性があることを示す。
そして、あるCPUがキャッシュミスを起こした場合、キャッシュミスが発生したデータを所有するメインメモリに接続されたCPUにデータを要求する。なお、以下の説明では、データ要求元のCPUをL(Local)−CPUと記載し、キャッシュミスの発生により要求されたデータを所有するメインメモリに接続されたCPUをH(Home)−CPUと記載し、メインメモリを単に「メモリ」と記載する。
H−CPUは、L−CPUから要求されたアドレスのデータがどのプロセサのキャッシュメモリにも保持されていない場合は、自身に接続するメモリからデータを読出して要求元に転送する。また、H−CPUは、この処理と同時に、このアドレスのキャッシュラインがL−CPUに保持されていることを示すディレクトリステートを自身に接続するメモリに記憶する。
ところで、上記のディレクトリステートのみを管理するキャッシュプロトコルでは、H−CPUは、共有型で持ち出されたデータに対して無効化処理が発生した場合、システム内の全CPUのキャッシュメモリに対して無効化要求をブロードキャストする。このような場合、無駄なデータ通信が発生するので、通信量が増加する。
このようなことから、H−CPUは、ディレクトリステート以外に共有型で持ち出されたデータ、すなわち他のCPUと共有されているデータを内蔵するキャッシュメモリに保持する他CPUの位置を示すプレゼンスビットを管理する場合がある。そして、H−CPUは、あるデータブロックへの無効化処理が発生した場合に、プレゼンスビットを用いて他のCPUとの共有データをキャッシュメモリ上に保持するCPUにのみ無効化要求を発行する。
特開2002−304328号公報
しかしながら、上述した従来の技術では、演算処理装置数の増加に応じてディレクトリ情報量が増加するという課題がある。
近年、情報処理装置に対する性能要件からCPUノード数を、例えば128に拡張した場合、CPUノード数に対応するビット数をプレゼンスビットに使用するため、プレゼンスビットが128ビットになり、ディレクトリ情報量が増加する。
1つの側面では、本発明は、演算処理装置数が増加してもディレクトリ情報量の増加を抑制することができる演算処理装置、演算処理装置の制御方法及び情報処理装置を提供することを目的とする。
第1の案では、それぞれキャシュメモリを備えた複数の演算処理装置のうち、主記憶装置に接続された演算処理装置は、複数の演算処理装置を複数の演算処理装置の総数に基づいて起動時に設定された設定数毎にグループ化して得られる複数の演算処理装置グループの各演算処理装置グループについて、対応する演算処理装置グループに属するいずれかの演算処理装置が備えるキャシュメモリに主記憶装置に格納されたデータと同一のデータが保持されているか否かを示す存在情報を、主記憶装置に書き込む。
演算処理装置数が増加してもディレクトリ情報量の増加を抑制することができる。
図1は、実施例1に係る情報処理システムの構成の一例を示す図である。 図2は、実施例1に係るSBの構成の一例を示す図である。 図3は、実施例1に係るCPUの構成の一例を示す図である。 図4は、実施例1に係るコヒーレント制御部の構成の一例を示す図である。 図5は、実施例1に係るディレクトリ検査部の構成の一例を示す図である。 図6は、実施例1に係る動作判定部の構成の一例を示す図である。 図7は、メモリ上におけるディレクトリ情報のマッピングの一例を示す図である。 図8は、ディレクトリ情報のフォーマットの一例を示す図である。 図9は、動作判定部による命令フェッチリクエスト受信時のディレクトリ情報の更新処理の一例を示す図である。 図10は、動作判定部による排他型フェッチリクエスト受信時のディレクトリ情報の更新処理の一例を示す図である。 図11は、命令フェッチアクセス時の処理動作の一例を示す図である。 図12は、命令フェッチアクセス時の処理動作の一例を示す図である。 図13は、命令フェッチアクセス時の処理動作の一例を示す図である。 図14は、排他型フェッチアクセス時の処理動作の一例を示す図である。 図15は、排他型フェッチアクセス時の処理動作の一例を示す図である。 図16は、排他型フェッチアクセス時の処理動作の一例を示す図である。 図17は、ディレクトリ情報が失われた場合の復旧処理の処理動作の一例を示す図である。 図18は、ディレクトリ情報が失われた場合の復旧処理の処理動作の一例を示す図である。 図19は、実施例1に係る動作判定部による排他型フェッチアクセスのディレクトリ検査処理の処理手順を説明するフローチャートである。
以下に、本願の開示する演算処理装置、演算処理装置の制御方法及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[実施例1に係る情報処理システムの構成]
図1を用いて実施例1に係る情報処理システムの構成について説明する。図1は、実施例1に係る情報処理システムの構成の一例を示す図である。図1に示すように、実施例1に係る情報処理システム1は、データ転送装置としてのXB(クロスバスイッチ)2aとXB2bと、処理装置としてのSB(システムボード)3a〜SB3hとを有する。なお、図1に示すクロスバスイッチおよびシステムボードの数はあくまで例示であり、これに限定されるものではない。
XB2aは、各SB3a〜3h間で転送されるデータの経路を動的に選択するデータ転送装置としてのスイッチである。ここで、データには、プログラムや演算処理結果などが含まれる。なお、XB2bの構成は、XB2aと同様であるので、詳細な説明は省略する。また、以下の説明では、XB2a〜XB2bを一般化してXB2と称して適宜説明する。
SB3aは、CPUとメモリとを有し、各種演算処理を実行する。なお、SB3bからSB3hの構成は、SB3aと同様であるので、詳細な説明は省略する。また、以下の説明では、SB3a〜SB3hを一般化してSB3と称して説明する。
[実施例1に係るSBの構成]
次に、図2を用いて、SBの構成例について説明する。図2は、実施例1に係るSBの構成の一例を示す図である。図2に示す例では、SB3は、メモリ10a〜メモリ10dと、CPU20a〜CPU20dとを有する。各CPU20a〜CPU20dは、相互に接続されており、本実施の形態で開示する演算処理装置である。また、CPU20a〜CPU20dは、それぞれメモリ10a〜メモリ10dと接続される。
メモリ10aは、例えば、データを記憶するRAM(Random Access Memory)である。また、メモリ10a上には、要求されたアドレスのデータがどのCPUのキャッシュメモリに保持されているかを示すディレクトリ情報がマッピングされる。
ディレクトリ情報には、「R−INV(Invalid)」、「R−SH(Shared)」、「R−EX(Exclusive)」がある。ここで、「R−INV」は、データが他のCPUのキャッシュメモリに保持されていないことを示す。また、「R−SH」は、データが他のCPUのキャッシュメモリにクリーンな状態で共有されていることを示す。そして、「R−EX」は、データが単一のCPUのキャッシュメモリにのみ排他的に保持され、ダーティな可能性があることを示す。
また、ディレクトリ情報は、このディレクトリ情報を有するメモリに接続するCPUにより管理される。なお、ディレクトリ情報については、図8を用いて後述する。なお、メモリ10a〜メモリ10dは、同様の構成を有するので、以下の説明では、メモリ10a〜メモリ10dを一般化してメモリ10と称して適宜説明する。
CPU20aは、メインメモリであるメモリ10aに格納されたデータを取得し、また、他のCPU20b〜CPU20dを介して、各メモリ10b〜10dに格納されたデータを取得する。また、CPU20a〜CPU20dは、XB2aと接続されており、XB2aに接続された図示しないXB2bと接続されたSB3が有するメモリに格納されたデータを取得する。そして、CPU20aは、メモリから読出したデータを用いて、演算処理を実行する。なお、CPU20a〜CPU20dは、同様の構成を有するので、以下の説明では、CPU20a〜CPU20dを一般化してCPU20と称して適宜説明する。また、CPU20の詳細な構成については、図3を用いて後述する。
また、以下の説明では、データの要求元であるCPUのことをL(Local)−CPUと称し、L−CPUが要求するデータをメモリに有するCPUのことをH(Home)−CPUと称する。また、L−CPUが要求するデータをキャッシュに所有するCPUのことをR(Remote)−CPUと称する。また、以下の説明では、L−CPUがH−CPUに対して発行する要求のことを「リクエスト」と適宜記載する。
このような、データを記憶するメモリ10に接続されたCPU20は、データの一部を自身が内蔵するキャッシュメモリに保持する。そして、CPU20は、メモリ10が記憶するデータと同一のデータブロックを保持するキャッシュメモリに対応するCPUの有無を所定数のCPU毎に表示する存在情報を含むディレクトリ情報を、メモリ10に書込む。
[実施例1に係るCPUの構成]
次に、図3を用いて、CPUの構成例について説明する。図3は、実施例1に係るCPUの構成の一例を示す図である。図3に示す例では、CPU20は、通信制御部21、コア22a〜コア22f、L2キャッシュ制御部23、メモリ制御部24、及びコヒーレント制御部25を有する。なお、CPU20が有するコアの数は、図示された数に限定されるものではない。
通信制御部21は、CPU20と他のCPU20およびXB2との間の通信を制御する。例えば、通信制御部21は、データのフェッチアクセスを要求するコマンドをL2キャッシュ制御部23から受付け、受付けたコマンドをH−CPUに送信する。また、通信制御部21は、H−CPUやR−CPUからデータやコマンドを受信し、受信したデータやコマンドをL2キャッシュ制御部23に出力する。
また、通信制御部21は、L−CPUからメモリ10に格納されたデータに対するリードを要求するコマンドを受信し、受信したコマンドをコヒーレント制御部25に出力する。また、通信制御部21は、コヒーレント制御部25から取得したデータやコマンドを他のCPUへ送信する。
コア22aは、L1キャッシュ220aを有し、L1キャッシュ220aが保持するL1データを用いて、各種演算処理を実行するCPU20のプロセッサコアである。また、L1キャッシュ220aに保持されるデータには、データの状態を示すL1タグが付加される。なお、L1キャッシュ220aに保持されるデータのことをL1データと称する。また、L1キャッシュ220aに保持されるデータの状態には、データが無効であることを示す「Invalid(I)」、データが他のCPUのキャッシュメモリと共有される共有型であり、かつ保持されるデータがクリーンな状態であることを示す「Shared(S)」が含まれる。また、キャッシュデータの状態には、データが他のCPUのキャッシュメモリに保持されていない排他状態を表す排他型であり、かつ保持されるデータがクリーンな状態であることを示す「Exclusive(E)」、データが他のCPUのキャッシュメモリに保持されていない排他状態を表す排他型であり、かつ保持されるデータがダーティな状態であることを示す「Modified(M)」が含まれる。なお、以下の説明では、キャッシュデータの状態を「キャッシュステート」と適宜記載する。
また、コア22aは、L1キャッシュにデータが保持されていないことによりキャッシュミスが発生した場合には、キャッシュミスが発生したデータをL2キャッシュ制御部23に要求する。なお、コア22a〜コア22fの構成は、同様であるので、詳細な説明は省略する。また、以下の説明では、コア22a〜コア22fを一般化してコア22と称して適宜説明する。また、同様に、各コア22b〜22fが有するL1キャッシュ220b〜220fの構成は、L1キャッシュ220aと同様であるので、詳細な説明は省略する。また、以下の説明では、L1キャッシュ220a〜220fを一般化してL1キャッシュ220と称して適宜説明する。
L2キャッシュ制御部23は、L2キャッシュ23aを有し、L2キャッシュ23aの制御と、各コア間のL1キャッシュ220のコヒーレント制御を実行する。ここで、L2キャッシュ23aに保持されるデータには、各キャッシュデータの状態を示すL2タグが付加される。なお、L2キャッシュ23aに保持されるデータのことをL2データと称する。また、L2キャッシュ23aに保持されるデータの状態は、L1キャッシュ220に保持されるデータと同様に、「I」、「S」、「E」、「M」のいずれかである。
例えば、L2キャッシュ制御部23は、コア22からデータを要求された場合、L2キャッシュを検索し、要求されたデータが保持されているか否かを判定する。ここで、L2キャッシュ制御部23は、要求されたデータがL2キャッシュに保持されていると判定した場合、要求されたデータをコア22に出力する。
また、L2キャッシュ制御部23は、要求されたデータがL2キャッシュに保持されていないと判定した場合、いずれのCPUがキャッシュミスの発生により要求されたデータを記憶するメモリに接続されたH−CPUであるか否かを判定する。なお、L2キャッシュ制御部23は、CPU20が有するアドレスマップを参照し、要求されたデータのメモリアドレスに対応付けられたCPUを識別する。このアドレスマップは、アクセス対象となるデータのメモリアドレスと、メモリアドレスが示す記憶領域にアクセスするCPUを一意に示す情報とを対応付けて記憶する。
ここで、L2キャッシュ制御部23は、自装置がH−CPUであると判定した場合、コヒーレント制御部25にキャッシュミスの発生により要求されたデータの読出しを要求する。そして、L2キャッシュ制御部23は、コヒーレント制御部25を介してキャッシュミスの発生により要求されたデータを有するメモリから、要求されたデータを読み出してL2キャッシュに保持する。
また、L2キャッシュ制御部23は、自身を内蔵するCPU以外の他のCPUがH−CPUであると判定した場合、通信制御部21を介してH−CPUにデータの転送を要求する。そして、L2キャッシュ制御部23は、通信制御部21を介してH−CPUまたはR−CPUからデータを受信し、受信したデータをL2キャッシュに保持する。例えば、L2キャッシュ制御部23は、コア22からフェッチアクセス対象の命令であるデータを要求された場合、キャッシュステートを「I」から「S」に変更する。
また、例えば、L2キャッシュ制御部23は、通信制御部21を介してH−CPUからデータの転送要求を受信した場合、転送要求対象のデータをL2キャッシュから読出し、通信制御部21を介してL−CPUに読出したデータを転送する。
メモリ制御部24は、自身を内蔵するCPUと接続するメモリ10とのデータの読み書きを制御する。例えば、メモリ制御部24は、コヒーレント制御部25からデータの読出しを指示された場合、対象のデータとディレクトリ情報とを自装置と接続するメモリ10から読出してコヒーレント制御部25に出力する。また、メモリ制御部24は、コヒーレント制御部25から受付けたデータやディレクトリ情報を自装置と接続するメモリ10に書込む。
コヒーレント制御部25は、他のCPUとの間のL2キャッシュのコヒーレント制御を実行する。例えば、コヒーレント制御部25は、通信制御部21を介してL−CPUからメモリ10に格納されたデータを要求された場合、あるいはL2キャッシュ制御部23からデータを要求された場合、以下の処理を実行する。すなわち、コヒーレント制御部25は、メモリ制御部24を介して要求されたデータと要求されたデータに対応するディレクトリ情報とをメモリ10から取得し、取得したディレクトリ情報を解析する。そして、コヒーレント制御部25は、解析結果に基づいて、L2キャッシュ制御部23または通信制御部21に指示を出力する。
[実施例1に係るコヒーレント制御部の構成]
次に、図4を用いて、コヒーレント制御部25の構成例について説明する。図4は、実施例1に係るコヒーレント制御部の構成の一例を示す図である。図4に示す例では、コヒーレント制御部25は、コマンド受信部31とディレクトリ検査部32と、コマンド発行/応答部33と、データ応答部34とを有する。
コマンド受信部31は、L2キャッシュ制御部23あるいは、通信制御部21を介して他のCPUからデータの読み出し要求等のコマンドを受信する。そして、コマンド受信部31は、受信したコマンドをディレクトリ検査部32に出力する。
ディレクトリ検査部32は、コマンド受信部31から他のCPUからのデータの読み出し要求等のコマンドを受付けた場合、要求されたデータと要求されたデータに対応するディレクトリ情報とを、メモリ制御部24を介して接続するメモリから読出す。そして、ディレクトリ検査部32は、読出したディレクトリ情報を検査する。また、ディレクトリ検査部32は、検査結果に基づいて、データ応答部34またはコマンド発行/応答部33にデータやコマンドを出力する。なお、ディレクトリ検査部32の詳細については、図5を用いて後述する。
コマンド発行/応答部33は、ディレクトリ検査部32から受付けたデータやコマンドを通信制御部21に出力する。データ応答部34は、ディレクトリ検査部32から受付けたデータを自身を含むCPUのL2キャッシュ制御部23に出力する。
[実施例1に係るディレクトリ検査部の構成]
次に、図5を用いて、ディレクトリ検査部32の構成例について説明する。図5は、実施例1に係るディレクトリ検査部の構成の一例を示す図である。図5に示す例では、ディレクトリ検査部32は、データバッファ41と、コマンド受信部42と、メモリアクセス発行部43と、リードデータ受信部44と、動作判定部45とを有する。
データバッファ41は、リードデータ受信部44によりメモリ制御部24から受信したデータを保持する。コマンド受信部42は、コマンド受信部31から他のCPUからのデータの読み出し要求等のコマンドを受信し、受信した他のCPUからのデータの読み出し要求等のコマンドをメモリアクセス発行部43に出力する。メモリアクセス発行部43は、受信した他のCPUからのデータの読み出し要求等のコマンドに基づいて、メモリ制御部24に要求されたデータと要求されたデータに対応するディレクトリ情報の読出しを要求するコマンドを発行する。リードデータ受信部44は、メモリ制御部24から要求されたデータと要求されたデータに対応するディレクトリ情報とを受信する。
動作判定部45は、リードデータ受信部44によりメモリ制御部24から受信したディレクトリ情報を解析して、どのような動作を実行すべきかを判定する。なお、動作判定部45についての詳細は、図6を用いて後述する。
[実施例1に係る動作判定部の構成]
次に、図6を用いて、動作判定部45の構成例について説明する。図6は、実施例1に係る動作判定部の構成の一例を示す図である。図6に示す例では、動作判定部45は、モードレジスタ51と、ディレクトリ解析部52と、データ応答起動部53と、コマンド発行起動部54と、コマンド宛先判定部55とを有する。
モードレジスタ51は、プレゼンスビットをどのようなCPU数の単位で管理するかについての管理単位を記憶する。例えば、モードレジスタ51は、プレゼンスビットの管理単位が1CPU単位であることを示す「1」、プレゼンスビットの管理単位が4CPU単位であることを示す「4」、プレゼンスビットの管理単位が8CPU単位であることを示す「8」などの値を記憶する。
また、モードレジスタ51は、例えば、情報処理システムが有するCPUの数が16ノード以下である場合、CPU単位で設定されることを示す「1」の値を記憶する。また、モードレジスタ51は、例えば、情報処理システムが有するCPUの数が17ノード以上64ノード以下である場合、4CPU単位で設定されることを示す「4」の値を記憶する。また、モードレジスタ51は、例えば、情報処理システムが有するCPUの数が65ノード以上128ノード以下である場合、8CPU単位で設定されることを示す「8」の値を記憶する。
なお、このモードレジスタ51が記憶する値は、情報処理システムの起動時に、情報処理システム1が有するCPU数に基づいて設定される。そして、情報処理システム1が有するCPU数に増減があった場合、モードレジスタ51が記憶する値は、情報処理システム1がリブートされた後、再設定される。
ディレクトリ解析部52は、ディレクトリ情報のディレクトリステートの状態を判定し、ディレクトリステートの判定結果と、要求されたリクエスト種別とに基づいて、L−CPUやR−CPUに対する応答を決定する。
また、ディレクトリ解析部52は、ディレクトリステート、プレゼンスビット、CPUカウント、CPU−IDなどのディレクトリ情報を更新する。ここで、ディレクトリステートは、要求されたアドレスのデータがどのCPUのキャッシュメモリに保持されているかを示す情報である。また、プレゼンスビットは、要求されたアドレスのデータを共有するCPUの位置を示す情報である。CPUカウントは、要求されたアドレスのデータを共有するCPUの数を示す情報である。CPU−IDは、データを排他的に所有するCPUの番号を示す情報である。なお、ディレクトリ情報の詳細については図8を用いて後述する。
また、ディレクトリ解析部52は、更新したディレクトリ情報をメモリ制御部24に出力する。この結果、更新したディレクトリ情報は、メモリ制御部24により、メモリ10に格納される。
また、ディレクトリ解析部52は、排他型フェッチアクセスを受付けた際に、データと同一のデータブロックを保持するキャッシュメモリに対応するCPUにデータの無効化とデータを保持していた旨の応答とを要求する。そして、ディレクトリ解析部52は、受信した応答の数とCPUカウントとが一致しない場合にディレクトリ情報が異常であると判定する。
また、ディレクトリ解析部52は、読出したディレクトリ情報が失われていた場合には、ディレクトリ情報を復旧させる処理を実行する。例えば、H−CPUのディレクトリ解析部52は、情報処理システム内の全てのCPUにキャッシュフラッシュを要求する。そして、H−CPUのディレクトリ解析部52は、情報処理システム内の全てのCPUから応答を受信後、ディレクトリステートを他のCPUのキャッシュメモリに保持されていない旨を示す「R−INV」に設定する。
データ応答起動部53は、ディレクトリ解析部52により、他のCPUからの読み出し要求に応じて、メモリ10から読出したデータを応答すると判定された場合、データをデータバッファ41から読出し、読出したデータをデータ応答部34に出力する。
コマンド発行起動部54は、ディレクトリ解析部52による解析結果に基づいて、L−CPUからの読み出し要求を処理するコマンドをL−CPUまたはR−CPUに対して発行する。なお、以下の説明では、H−CPUがL−CPUから要求された読み出し要求を処理するためにL−CPUやR−CPUに対して発行する要求のことを「オーダ」と適宜記載する。
コマンド宛先判定部55は、ディレクトリ解析部52によるディレクトリ情報の解析に基づいて、オーダの宛先を判定する。
次に、図7を用いて、メモリ上におけるディレクトリ情報のマッピングについて説明する。図7は、メモリ10上におけるディレクトリ情報のマッピングの一例を示す図である。図7に示すように、メモリ10は、DIMM(Dual Inline Memory Module)#0とDIMM#1とを有する。
例えば、図7のCycle1のディレクトリラインとして、DIMM#0の0バイトから7バイトの領域には、BYTE#000−007の8倍と分のデータやプログラムがそれぞれ格納される。また、DIMM#1の0バイトから7バイトの領域には、BYTE#008−015の8バイト分のデータやプログラムがそれぞれ格納される。そして、DIMM#0の8バイト目の領域には、データが正しいか否かのチェックに用いられるECC(Error Check and Correct)としてECC#0[7:0]の8ビットのECCが格納される。また、DIMM#1の8バイト目の領域には、ECC#0「11:8」の4ビットのECCと、DIR[3:0]の4ビットのディレクトリ情報が格納される。
次に、図8を用いて、ディレクトリ情報のフォーマットについて説明する。図8は、ディレクトリ情報のフォーマットの一例を示す図である。図8に示すように、ディレクトリ情報は、各ディレクトリの状態に対応付けて、ビット31からビット00までの32ビットの情報を記憶する。ここで、図8において、一段目はR−INV、二段目はR−SH、三段目はR−EXの各ディレクトリの状態に対応する。
ディレクトリの状態がR−INVである場合、データブロックが、他のCPUのキャッシュメモリに保持されていないことを示す。また、ディレクトリの状態がR−SHである場合、データブロックが、他のCPUのキャッシュメモリにクリーンな状態で共有されていることを示す。また、ディレクトリの状態がR−EXである場合、データブロックが、単一のCPUのキャッシュメモリにのみ排他的に保持され、ダーティな可能性があることを示す。
ここで、ディレクトリ情報のビット31−30のフィールドは、データブロックの状態を示す2ビットのステータスビットである。例えば、ビット31−30には、ディレクトリの状態がR−INVであることを示す「00」、ディレクトリの状態がR−SHであることを示す「10」、ディレクトリの状態がR−EXであることを示す「11」などが格納される。
また、ディレクトリ情報のビット29−23のフィールドは、ディレクトリの状態に応じて用いられる。例えば、ディレクトリの状態がR−SHである場合、ビット29−23は、ディレクトリ情報に対応するデータを共有するCPUの数を示すCPUカウントとして用いられる。また、例えば、ディレクトリの状態がR−EXである場合、ビット29−23は、ディレクトリ情報に対応するデータを排他的に所有するCPUの番号を示すCPU−IDとして用いられる。
また、ディレクトリ情報のビット22−07は、ディレクトリの状態に応じて用いられる。例えば、ディレクトリの状態がR−SHである場合、ビット22−07は、ディレクトリ情報に対応するデータを共有するCPUの位置を示すプレゼンスビットとして用いられる。
プレゼンスビットは、要求されたアドレスのデータを共有するCPUの位置を示す情報である。このプレゼンスビットは、例えば、情報処理システムが有するCPUの数が16ノード以下である場合、CPU単位すなわち、1つのCPUに対して1ビットが割り当てられる。また、プレゼンスビットは、例えば、情報処理システムが有するCPUの数が17ノード以上64ノード以下である場合、4CPU単位で設定される。また、プレゼンスビットは、例えば、情報処理システムが有するCPUの数が65ノード以上128ノード以下である場合、8CPU単位すなわち、8つのCPUに対して1ビットが割り当てられる。
また、ディレクトリ情報のビット06−00は、メモリに記憶されている対応するデータが正しいか否かを示すECCである。
なお、ディレクトリの状態がR−INVである場合、ビット29−07は使用されず、ドントケア(Don’t care)として扱われる。また、ディレクトリの状態がR−EXである場合、ビット22−07は使用されず、ドントケア(Don’t care)として扱われる。
[動作判定部によるディレクトリ情報の更新規則]
次に図9及び図10を用いて、動作判定部45によるディレクトリ情報の更新規則について説明する。ここでは一例として、図9を用いて命令フェッチリクエスト受信時のディレクトリ情報の更新規則を説明し、図10を用いて排他型フェッチアクセスリクエスト受信時のディレクトリ情報の更新規則を説明する。
(命令フェッチ)
図9は、動作判定部による命令フェッチリクエスト受信時のディレクトリ情報の更新処理の一例を示す図である。図9は、「状態遷移前のディレクトリ情報及びキャッシュステート(CACHE−ST)」と、「状態遷移後のディレクトリ情報及びキャッシュステート(CACHE−ST)」と、「オーダ発行種」と、「リクエスト応答種」とを対応付けた更新規則を示す。
ここで、「状態遷移前のディレクトリ情報及びキャッシュステート」は、動作判定部45が命令フェッチアクセスを受信した時点のフェッチアクセス対象の命令であるデータのディレクトリ情報と、L−CPU、H−CPU、及びR−CPUそれぞれのキャッシュステートとを示す。ここで、「状態遷移前のディレクトリ情報」には、ディレクトリステート(DIR−ST)が含まれる。
また、「状態遷移後のディレクトリ情報及びキャッシュステート」は、動作判定部45が、命令フェッチアクセスに対して応答した場合、状態遷移前のディレクトリ情報及びキャッシュステートに応じ、ディレクトリ情報と、キャッシュステートとをどのように遷移させるかを解析した結果を示す。ここで、「状態遷移後のディレクトリ情報」には、ディレクトリステート(DIR−ST)に加えて、プレゼンスビット(PRC−BIT)とCPUカウント(CNT)が含まれる。
また、「オーダ発行種」とは、H−CPUがL−CPUから要求されたリクエストを処理するためにL−CPUやR−CPUに対して発行する要求を示す。また、「リクエスト応答種」とは、H−CPUがL−CPUから要求されたリクエストに対する応答と、R−CPUからL−CPUに対して発行する応答とを示す。なお、図9中の「H→LR」は、H−CPUからL−CPUまたはR−CPUへのデータ転送を示す。また、図9中の「H→L」は、H−CPUからL−CPUへのデータ転送を示し、「R→L」は、R−CPUからL−CPUへのデータ転送を示す。
図9において、ディレクトリステートが他のCPUのキャッシュメモリに保持されていない旨を示す「R−INV」であり、L−CPU、H−CPU、及びR−CPUいずれもキャッシュステートがL2キャッシュ23aに保持されているデータが無効である旨を示す「I」である場合を具体例として説明する。
例えば、動作判定部45では、ディレクトリ解析部52が、命令フェッチアクセスを受信した場合、「ディレクトリステート」が他のCPUのキャッシュメモリに保持されていない旨を示す「R−INV」であるので、自身を内蔵するCPUのL2キャッシュ制御部23からキャッシュステートを読出す。そして、ディレクトリ解析部52は、キャッシュステートがL2キャッシュ23aに保持されているデータが無効である旨を示す「I」であることから、メモリ10から読出したデータをL−CPUに応答すると判定する。ディレクトリ解析部52は、解析結果をデータ応答起動部53とコマンド発行起動部54とに通知する。
そして、データ応答起動部53は、データバッファ41が保持するデータをL−CPUに応答する旨をデータ応答部34に通知する。また、コマンド発行起動部54は、完了応答をコマンド宛先判定部55に発行する。そして、コマンド宛先判定部55は、完了応答を転送する宛先であるL−CPUを判定し、完了応答を通信制御部21に出力する。そして、通信制御部21は、データバッファ41に保持されたデータと完了応答とをL−CPUに転送する。
また、ディレクトリ解析部52は、「ディレクトリステート」を「R−SH」、L−CPUに対応する「プレゼンスビット」を「1」、「CPUカウント」を「1」にそれぞれ設定する。
次に、図9において、ディレクトリステートが他のCPUのキャッシュメモリにクリーンな状態でデータ共有されている旨を示す「R−SH」であり、L−CPU、H−CPUのキャッシュステートがそれぞれ、L2キャッシュ23aに保持されているデータが無効である旨を示す「I」であり、R−CPUのキャッシュステートが他のCPUのキャッシュメモリとデータが共有される共有型でありかつ保持されるデータがクリーンな状態であることを示す「S」である場合を具体例として説明する。
この場合、ディレクトリ解析部52は、命令フェッチアクセスを受信した場合、「ディレクトリステート」が他のCPUのキャッシュメモリにクリーンな状態でデータ共有されている旨を示す「R−SH」であるので、メモリ10から読出したデータをL−CPUに応答すると判定する。また、ディレクトリ解析部52は、「ディレクトリステート」を他のCPUのキャッシュメモリにクリーンな状態でデータ共有されている旨を示す「R−SH」のまま、L−CPUに対応する「プレゼンスビット」を「1」に設定し、「CPUカウント」を1インクリメントする。
また、図9において、ディレクトリステートが、データが単一のCPUのキャッシュメモリにのみ排他的に保持され、ダーティな可能性がある旨を示す「R−EX」であり、L−CPU、H−CPUのキャッシュステートがそれぞれ、L2キャッシュ23aに保持されているデータが無効である旨を示す「I」であり、R−CPUのキャッシュステートが、データが他のCPUのキャッシュメモリに保持されていない排他状態を表す排他型であり、かつ保持されるデータがクリーンな状態であることを示す「E」である場合を具体例として説明する。
この場合、ディレクトリ解析部52は、命令フェッチアクセスを受信した場合、「ディレクトリステート」が、データがR−CPUのキャッシュメモリにのみ排他的に保持され、ダーティな可能性がある旨を示す「R−EX」であるので、R−CPUからL−CPUにデータを転送させると判定する。また、コマンド発行起動部54は、データ転送要求を発行し、コマンド宛先判定部55に出力する。そして、コマンド宛先判定部55は、宛先であるR−CPUを判定し、フェッチアクセスの対象の命令であるデータを転送する要求であるデータ転送要求を通信制御部21に出力する。また、ディレクトリ解析部52は、「ディレクトリステート」を「R−SH」、L−CPUに対応する「プレゼンスビット」を「1」、「CPUカウント」を2にそれぞれ設定する。
(排他型フェッチ)
図10は、動作判定部による排他型フェッチリクエスト受信時のディレクトリ情報の更新処理の一例を示す図である。図9と同様に、図10は、「状態遷移前のディレクトリ情報及びキャッシュステート」と、「状態遷移後のディレクトリ情報及びキャッシュステート」と、「オーダ発行種」と、「リクエスト応答種」とを対応付けた更新規則を示す。
図10において、ディレクトリステートが他のCPUのキャッシュメモリに保持されていない旨を示す「R−INV」であり、L−CPU、H−CPU、及びR−CPUいずれもキャッシュステートがL2キャッシュ23aに保持されているデータが無効である旨を示す「I」である場合を具体例として説明する。
例えば、動作判定部45では、ディレクトリ解析部52が、排他型フェッチアクセスを受信した場合、「ディレクトリステート」が他のCPUのキャッシュメモリに保持されていない旨を示す「R−INV」であるので、自身を内蔵するCPUのL2キャッシュ制御部23からキャッシュステートを読出す。そして、ディレクトリ解析部52は、キャッシュステートがL2キャッシュ23aに保持されているデータが無効である旨を示す「I」であることから、メモリ10から読出したデータをL−CPUに応答すると判定する。ディレクトリ解析部52は、解析結果をデータ応答起動部53とコマンド発行起動部54とに通知する。
そして、データ応答起動部53は、データバッファ41が保持するデータをL−CPUに応答する旨をデータ応答部34に通知する。また、コマンド発行起動部54は、完了応答をコマンド宛先判定部55に発行する。そして、コマンド宛先判定部55は、完了応答を転送する宛先であるL−CPUを判定し、完了応答を通信制御部21に出力する。そして、通信制御部21は、データバッファ41に保持されたデータと完了応答とをL−CPUに転送する。
また、ディレクトリ解析部52は、「ディレクトリステート」をデータが単一のCPUのキャッシュメモリにのみ排他的に保持され、ダーティな可能性がある旨を示す「R−EX」に設定する。なお、この場合、L−CPUに対応する「CPU−ID」が設定され、「プレゼンスビット」や「CPUカウント」は設定されない。
次に、図10において、ディレクトリステートが他のCPUのキャッシュメモリにクリーンな状態でデータ共有されている旨を示す「R−SH」であり、L−CPU、H−CPUのキャッシュステートがそれぞれ、L2キャッシュ23aに保持されているデータが無効である旨を示す「I」であり、R−CPUのキャッシュステートが他のCPUのキャッシュメモリとデータが共有される共有型でありかつ保持されるデータがクリーンな状態であることを示す「S」である場合を具体例として説明する。
この場合、ディレクトリ解析部52は、排他型フェッチアクセスを受信した場合、「ディレクトリステート」が他のCPUのキャッシュメモリにクリーンな状態でデータ共有されている旨を示す「R−SH」であるので、メモリ10から読出したデータをL−CPUに応答すると判定する。また、この場合、ディレクトリ解析部52は、要求されたデータに対するキャッシュステートの無効化を要求されたデータを所有するR−CPUに指示する。
また、ディレクトリ解析部52は、「ディレクトリステート」をデータが単一のCPUのキャッシュメモリにのみ排他的に保持され、ダーティな可能性がある旨を示す「R−EX」に設定する。なお、この場合、L−CPUに対応する「CPU−ID」が設定され、「プレゼンスビット」や「CPUカウント」は設定されない。
また、図10において、ディレクトリステートが、データが単一のCPUのキャッシュメモリにのみ排他的に保持され、ダーティな可能性がある旨を示す「R−EX」であり、L−CPU、H−CPUのキャッシュステートがそれぞれ、L2キャッシュ23aに保持されているデータが無効である旨を示す「I」であり、R−CPUのキャッシュステートが、データが他のCPUのキャッシュメモリに保持されていない排他状態を表す排他型であり、かつ保持されるデータがクリーンな状態であることを示す「E」である場合を具体例として説明する。
この場合、ディレクトリ解析部52は、排他型フェッチアクセスを受信した場合、「ディレクトリステート」が、データがR−CPUのキャッシュメモリにのみ排他的に保持され、ダーティな可能性がある旨を示す「R−EX」であるので、R−CPUにデータを排他的にL−CPUに転送させると判定する。また、コマンド発行起動部54は、データ転送要求を発行し、コマンド宛先判定部55に出力する。そして、コマンド宛先判定部55は、宛先であるR−CPUを判定し、排他型フェッチアクセスの対象データを転送する要求であるデータ転送要求を通信制御部21に出力する。
また、ディレクトリ解析部52は、「ディレクトリステート」をデータが単一のCPUのキャッシュメモリにのみ排他的に保持され、ダーティな可能性がある旨を示す「R−EX」に設定する。なお、この場合、L−CPUに対応する「CPU−ID」が設定され、「プレゼンスビット」や「CPUカウント」は設定されない。
[ディレクトリ情報更新処理動作]
次に図11から図18を用いて、情報処理装置による処理動作について説明する。ここでは、図11から図13を用いて命令フェッチアクセス時の処理動作について説明し、図14から図16を用いて排他型フェッチアクセス時の処理動作について説明する。また、図17及び図18を用いてディレクトリ情報が失われた場合の復旧処理の処理動作について説明する。
(R−INVの場合の命令フェッチアクセス)
図11は、命令フェッチアクセス時の処理動作の一例を示す図である。図11では、ディレクトリステート(DIR−ST)が、他のCPUのキャッシュメモリにデータが保持されていない旨を示す「R−INV」であり、L−CPU、H−CPU、及びR−CPUいずれもキャッシュステート(Cache−ST)がL2キャッシュ23aに保持されているデータが無効である旨を示す「I」である場合を具体例として説明する。
図11に示す例では、L−CPUのキャッシュステートは、L2キャッシュ23aに保持されているデータが無効である旨を示す「I」であり、有効なデータを保持していない。このため、L−CPUのコア22及びL2キャッシュ制御部23は、L2キャッシュ23aのキャッシュミスを検出する。そして、L−CPUのL2キャッシュ制御部23は、命令フェッチアクセスをH−CPUに要求する(ステップS1)。
続いて、H−CPUは、ディレクトリ解析部52が、命令フェッチアクセスをL−CPUから受信した場合、「ディレクトリステート」が、他のCPUのキャッシュメモリにデータが保持されていない旨を示す「R−INV」であるので、L2キャッシュ制御部23からキャッシュステートを読出す。そして、ディレクトリ解析部52は、キャッシュステートがL2キャッシュ23aに保持されているデータが無効である旨を示す「I」であることから、メモリ10から読出したデータをL−CPUに応答すると判定する。
また、H−CPUのディレクトリ解析部52は、「ディレクトリステート」をデータが他のCPUのキャッシュメモリにクリーンな状態で共有されていることを示す「R−SH」に設定する(ステップS2)。
また、H−CPUのディレクトリ解析部52は、フェッチアクセスの対象の命令であるデータをL−CPUが保持することを示すように、「プレゼンスビット(PRSC)」を設定する(ステップS3)。例えば、ディレクトリ解析部52は、PRSCの各ビットを「L−CPU、H−CPU、R−CPU」に対応付けた場合、L−CPUがフェッチアクセスの対象の命令であるデータを保持することを示すように、PRSCを「100」に設定する。
また、H−CPUのディレクトリ解析部52は、「CPUカウント(CNT)」を「1」に設定する(ステップS4)。これにより、「CPUカウント(CNT)」は、フェッチアクセスの対象の命令であるデータを1つのCPUが有することを示す。
そして、H−CPUは、データをL−CPUに応答する(ステップS5)。また、L−CPUは、データを受信し、キャッシュステートを他のCPUのキャッシュメモリとデータが共有される共有型でありかつ保持されるデータがクリーンな状態であることを示す「S」に更新する(ステップS6)。
(R−SHの場合の命令フェッチアクセス)
図12は、命令フェッチアクセス時の処理動作の一例を示す図である。図12では、ディレクトリステートが、データが他のCPUのキャッシュメモリにクリーンな状態で共有されていることを示す「R−SH」であり、L−CPU、H−CPUのキャッシュステートがそれぞれ、L2キャッシュ23aに保持されているデータが無効である旨を示す「I」であり、R−CPUのキャッシュステートが他のCPUのキャッシュメモリとデータが共有される共有型でありかつ保持されるデータがクリーンな状態であることを示す「S」である場合を具体例として説明する。
図11と同様に、L−CPUは、命令フェッチアクセスをH−CPUに要求する(ステップS7)。続いて、H−CPUは、ディレクトリ解析部52が、命令フェッチアクセスをL−CPUから受信した場合、「ディレクトリステート」が、他のCPUのキャッシュメモリにクリーンな状態でデータ共有されていることを示す「R−SH」であるので、メモリ10から読出したデータをL−CPUに応答すると判定する。
また、H−CPUのディレクトリ解析部52は、フェッチアクセスの対象の命令であるデータをL−CPUが保持することを示すように、「プレゼンスビット(PRSC)」を設定する(ステップS8)。例えば、ディレクトリ解析部52は、PRSCの各ビットを「L−CPU、H−CPU、R−CPU」に対応付けた場合、PRSCを「001」から「101」に変更する。これにより、「プレゼンスビット(PRSC)」は、R−CPUに加えてL−CPUもフェッチアクセスの対象の命令であるデータを保持することを示す。
また、ディレクトリ解析部52は、「CPUカウント(CNT)」を「2」に設定する(ステップS9)。これにより、「CPUカウント(CNT)」は、フェッチアクセスの対象の命令であるデータを、R−CPUとL−CPUの2つのCPUが共有することを示す。
そして、H−CPUは、データをL−CPUに応答する(ステップS10)。また、L−CPUは、データを受信し、キャッシュステートを他のCPUのキャッシュメモリとデータが共有される共有型でありかつ保持されるデータがクリーンな状態であることを示す「S」に更新する(ステップS11)。
(R−EXの場合の命令フェッチアクセス)
図13は、命令フェッチアクセス時の処理動作の一例を示す図である。図13では、ディレクトリステートが、データがR−CPUのキャッシュメモリにのみ排他的に保持され、ダーティな可能性がある旨を示す「R−EX」であり、L−CPU、H−CPUのキャッシュステートがそれぞれ、L2キャッシュ23aに保持されているデータが無効である旨を示す「I」であり、R−CPUのキャッシュステートが、データが他のCPUのキャッシュメモリに保持されていない排他状態を表す排他型であり、かつ保持されるデータがクリーンな状態であることを示す「E」である場合を具体例として説明する。
図11と同様に、L−CPUは、命令フェッチアクセスをH−CPUに要求する(ステップS12)。H−CPUは、ディレクトリ解析部52が、命令フェッチアクセスをL−CPUから受信した場合、「ディレクトリステート」が、データがR−CPUのキャッシュメモリにのみ排他的に保持され、ダーティな可能性がある旨を示す「R−EX」であるので、R−CPUからL−CPUにデータを転送させると判定し、データ転送要求をR−CPUに送信する(ステップS13)。
R−CPUは、フェッチアクセスの対象の命令であるデータをキャッシュメモリから読出してL−CPUに転送する(ステップS14)。R−CPUは、キャッシュステートをデータが他のCPUのキャッシュメモリに保持されていない排他状態を表す排他型であり、かつ保持されるデータがクリーンな状態であることを示す「E」から他のCPUのキャッシュメモリとデータが共有される共有型でありかつ保持されるデータがクリーンな状態であることを示す「S」に更新する(ステップS15)。また、R−CPUは、H−CPUに完了応答を送信する(ステップS16)。
また、H−CPUのディレクトリ解析部52は、「ディレクトリステート」をデータが他のCPUのキャッシュメモリにクリーンな状態で共有されていることを示す「R−SH」に更新する(ステップS17)。
また、H−CPUのディレクトリ解析部52は、フェッチアクセスの対象の命令であるデータをR−CPUに加えてL−CPUが保持することを示すように、「プレゼンスビット(PRSC)」を設定する(ステップS18)。例えば、ディレクトリ解析部52は、PRSCの各ビットを「L−CPU、H−CPU、R−CPU」に対応付けた場合、R−CPUとL−CPUとがフェッチアクセスの対象の命令であるデータを保持することを示すように、PRSCを「101」に設定する。
また、ディレクトリ解析部52は、「CPUカウント(CNT)」を「2」に設定する(ステップS19)。これにより、「CPUカウント(CNT)」は、フェッチアクセスの対象の命令であるデータを、R−CPUとL−CPUの2つのCPUが共有することを示す。
そして、L−CPUは、フェッチアクセスの対象の命令であるデータをR−CPUから受信し、キャッシュステートを他のCPUのキャッシュメモリとデータが共有される共有型でありかつ保持されるデータがクリーンな状態であることを示す「S」に更新する(ステップS20)。
(R−SHの場合の排他型フェッチアクセス)
図14は、排他型フェッチアクセス時の処理動作の一例を示す図である。図14では、ディレクトリステートが、データが他のCPUのキャッシュメモリにクリーンな状態で共有されていることを示す「R−SH」であり、L−CPU、及びH−CPUのキャッシュステートがそれぞれ、L2キャッシュ23aに保持されているデータが無効である旨を示す「I」であり、R−CPU#0、及びR−CPU#1のキャッシュステートがそれぞれ、他のCPUのキャッシュメモリとデータが共有される共有型でありかつ保持されるデータがクリーンな状態であることを示す「S」である場合を具体例として説明する。なお、ここでは、プレゼンスビットが4CPU単位で管理されており、R−CPU#0及びR−CPU#1がプレゼンスビットの管理単位として同一グループに属する場合を例にする。また、ここでは説明の便宜上、同一グループに属するCPUのうち、R−CPU#0及びR−CPU#1のみを示し、R−CPU#0及びR−CPU#1以外のCPUについては記載を省略する。また、ここでは、L−CPUとH−CPUとR−CPU#0及びR−CPU#1とは、プレゼンスビットの管理単位としてそれぞれ別のグループに属するものとする。
L−CPUは、排他型フェッチアクセスをH−CPUに要求する(ステップS21)。続いて、H−CPUは、ディレクトリ解析部52が、排他型フェッチアクセスを受信した場合、「ディレクトリステート」が、データが他のCPUのキャッシュメモリにクリーンな状態で共有されていることを示す「R−SH」であるので、メモリ10から読出したデータをL−CPUに応答すると判定する。また、この場合、ディレクトリ解析部52は、データを所有するR−CPU#0、R−CPU#1に排他型フェッチアクセスの対象データに対するキャッシュステートの無効化を指示する(ステップS22、23)。
R−CPU#0は、キャッシュステートを、L2キャッシュ23aに保持されているデータが無効である旨を示す「I」に更新し(ステップS24)、無効化完了をH−CPUに応答する(ステップS25)。また、R−CPU#1は、キャッシュステートを、L2キャッシュ23aに保持されているデータが無効である旨を示す「I」に更新し(ステップS26)、無効化完了をH−CPUに応答する(ステップS27)。
また、ディレクトリ解析部52は、R−CPU#0から無効化完了応答を受信し、「CPUカウント(CNT)」を「2」から「1」に設定する(ステップS28)。これにより、「CPUカウント(CNT)」は、排他型フェッチアクセスの対象データを、1つのCPUが有することを示す。
また、ディレクトリ解析部52は、R−CPU#1から無効化完了応答を受信し、「CPUカウント(CNT)」を「1」から「0」に設定する(ステップS29)。これにより、「CPUカウント(CNT)」は、排他型フェッチアクセスの対象データを、どのCPUも有さないことを示す。
また、H−CPUのディレクトリ解析部52は、R−CPU#0及びR−CPU#1から無効化完了応答を受信後、「プレゼンスビット(PRSC)」を設定する(ステップS30)。例えば、ディレクトリ解析部52は、PRSCの各ビットを「L−CPU、H−CPU、R−CPU#0及びR−CPU#1が属するグループ」に対応付けた場合、「プレゼンスビット」を「001」から「000」に変更する。これにより、「プレゼンスビット」は、R−CPU#0及びR−CPU#1が属するグループが排他型フェッチアクセスの対象データを保持しないことを示す。
そして、H−CPUは、「ディレクトリステート」をデータがL−CPUのキャッシュメモリにのみ排他的に保持され、ダーティな可能性がある旨を示す「R−EX」に設定する(ステップS31)。また、H−CPUは、「プレゼンスビット」と、「CPUカウント」とを無効化する(ステップS32、S33)。続いて、H−CPUは、L−CPUに排他型フェッチアクセスの対象データを応答する(ステップS34)。
L−CPUは、排他型フェッチアクセスの対象データを受信する。そして、L−CPUは、キャッシュステートをデータが他のCPUのキャッシュメモリに保持されていない排他状態を表す排他型であり、かつ保持されるデータがクリーンな状態であることを示す「E」に更新する(ステップS35)。
(R−SHの場合の排他型フェッチアクセス)
図15は、排他型フェッチアクセス時の処理動作の一例を示す図である。図15では、ディレクトリステートが、データが他のCPUのキャッシュメモリにクリーンな状態で共有されていることを示す「R−SH」であり、L−CPU、H−CPU、及びR−CPU#0のキャッシュステートがそれぞれ、L2キャッシュ23aに保持されているデータが無効である旨を示す「I」であり、R−CPU#1のキャッシュステートが他のCPUのキャッシュメモリとデータが共有される共有型でありかつ保持されるデータがクリーンな状態であることを示す「S」である場合を具体例として説明する。なお、ここでは、プレゼンスビットが4CPU単位で管理されており、R−CPU#0及びR−CPU#1がプレゼンスビットの管理単位として同一グループに属する場合を例にする。また、ここでは説明の便宜上、同一グループに属するCPUのうち、R−CPU#0及びR−CPU#1のみを示し、R−CPU#0及びR−CPU#1以外のCPUについては記載を省略する。また、ここでは、L−CPUとH−CPUとR−CPU#0及びR−CPU#1とは、プレゼンスビットの管理単位としてそれぞれ別のグループに属するものとする。
L−CPUは、排他型フェッチアクセスをH−CPUに要求する(ステップS37)。続いて、H−CPUでは、図14と同様にメモリ10から読出したデータをL−CPUに応答すると判定する。また、この場合、ディレクトリ解析部52は、データを所有する同一グループに属するR−CPU#0、R−CPU#1に排他型フェッチアクセスの対象データに対するキャッシュステートの無効化を指示する(ステップS38、39)。
R−CPU#0は、キャッシュミスし、排他型フェッチアクセスの対象データの未所持をH−CPUに応答する(ステップS40)。また、R−CPU#1は、キャッシュステートを、L2キャッシュ23aに保持されているデータが無効である旨を示す「I」に更新し(ステップS41)、無効化完了をH−CPUに応答する(ステップS42)。
そして、H−CPUは、R−CPU#0及びR−CPU#1から応答を受信する。H−CPUは、R−CPU#1から無効化完了応答を受信した場合、ディレクトリ情報を更新する。
例えば、ディレクトリ解析部52は、R−CPU#1から無効化完了応答を受信し、「CPUカウント(CNT)」を「1」から「0」に設定する(ステップS43)。これにより、「CPUカウント(CNT)」は、排他型フェッチアクセスの対象データを、どのCPUも有さないことを示す。
また、H−CPUのディレクトリ解析部52は、R−CPU#0及びR−CPU#1から応答を受信後、「プレゼンスビット(PRSC)」を設定する(ステップS44)。例えば、ディレクトリ解析部52は、PRSCの各ビットを「L−CPU、H−CPU、R−CPU#0及びR−CPU#1が属するグループ」に対応付けた場合、「プレゼンスビット」を「001」から「000」に変更する。これにより、「プレゼンスビット」は、R−CPU#0及びR−CPU#1が属するグループが排他型フェッチアクセスの対象データを保持しないことを示す。ここで、無効化完了応答を受信した数「1」と、無効化処理前のCPUカウントの数「1」とが一致しているため、無効化完了応答を受信した後の「CPUカウント」が「0」になる。この場合、H−CPUのディレクトリ解析部52は、無効化処理を正常に終了する。
そして、H−CPUは、「ディレクトリステート」をデータがL−CPUのキャッシュメモリにのみ排他的に保持され、ダーティな可能性がある旨を示す「R−EX」に設定する(ステップS45)。また、H−CPUは、「プレゼンスビット」と、「CPUカウント」とを無効化する(ステップS46、S47)。続いて、H−CPUは、L−CPUに排他型フェッチアクセスの対象データを応答する(ステップS48)。
L−CPUは、排他型フェッチアクセスの対象データを受信する。そして、L−CPUは、キャッシュステートを、データが他のCPUのキャッシュメモリに保持されていない排他状態を表す排他型であり、かつ保持されるデータがクリーンな状態であることを示す「E」に更新する(ステップS49)。
(R−SHの場合の排他型フェッチアクセスにおける異常検出)
図16は、排他型フェッチアクセス時の処理動作の一例を示す図である。図16では、ディレクトリステートが、データが他のCPUのキャッシュメモリにクリーンな状態で共有されていることを示す「R−SH」であり、L−CPU、H−CPU、及びR−CPU#0のキャッシュステートがそれぞれ、L2キャッシュ23aに保持されているデータが無効である旨を示す「I」であり、R−CPU#1のキャッシュステートが他のCPUのキャッシュメモリとデータが共有される共有型でありかつ保持されるデータがクリーンな状態であることを示す「S」である場合を具体例として説明する。また、ここでは、排他型フェッチアクセスの対象データを、1つのCPUが有するにもかかわらず、CPUカウントが誤って「2」に設定されている場合を例にする。なお、ここでは、プレゼンスビットが4CPU単位で管理されており、R−CPU#0及びR−CPU#1がプレゼンスビットの管理単位として同一グループに属する場合を例にする。また、ここでは説明の便宜上、同一グループに属するCPUのうち、R−CPU#0及びR−CPU#1のみを示し、R−CPU#0及びR−CPU#1以外のCPUについては記載を省略する。また、ここでは、L−CPUとH−CPUとR−CPU#0及びR−CPU#1とは、プレゼンスビットの管理単位としてそれぞれ別のグループに属するものとする。
図14と同様に、H−CPUは、L−CPUから排他型フェッチアクセスを受信し(ステップS50)、メモリ10から読出したデータをL−CPUに応答すると判定する。また、この場合、H−CPUのディレクトリ解析部52は、データを所有する同一グループに属するR−CPU#0及びR−CPU#1に排他型フェッチアクセスの対象データに対するキャッシュステートの無効化を指示する(ステップS51、52)。
R−CPU#0は、キャッシュミスし、排他型フェッチアクセスの対象データの未所持をH−CPUに応答する(ステップS53)。また、R−CPU#1は、キャッシュステートの無効化し(ステップS54)、無効化完了をH−CPUに応答する(ステップS55)。
H−CPUは、R−CPU#0及びR−CPU#1から応答を受信する。H−CPUは、R−CPU#1から応答を受信した場合、ディレクトリ情報を更新する。例えば、H−CPUのディレクトリ解析部52は、R−CPU#1から無効化完了応答を受信し、「CPUカウント(CNT)」を「2」から「1」に設定する(ステップS56)。これにより、「CPUカウント(CNT)」は、排他型フェッチアクセスの対象データを、1つのCPUが有することを示す。
また、H−CPUのディレクトリ解析部52は、R−CPU#0及びR−CPU#1から応答を受信後、「プレゼンスビット(PRSC)」を設定する(ステップS57)。例えば、ディレクトリ解析部52は、PRSCの各ビットを「L−CPU、H−CPU、R−CPU#0及びR−CPU#1が属するグループ」に対応付けた場合、「プレゼンスビット」を「001」から「000」に変更する。これにより、「プレゼンスビット」は、R−CPU#0及びR−CPU#1が属するグループが排他型フェッチアクセスの対象データを保持しないことを示す。
ここで、無効化完了応答を受信した数「1」と、無効化処理前のCPUカウントの数「2」とが一致していない。このため、無効化応答を受信した後のCPUカウントが「1」になる。この場合、H−CPUのディレクトリ解析部52は、無効化処理後のCPUカウントに矛盾が生じたことを検出する(ステップS58)。この結果、H−CPUでは、プロトコルチェックが実行され、L−CPUはアクセス異常で終了する。
(R−SHの場合の復旧処理)
図17は、ディレクトリ情報が失われた場合の復旧処理の処理動作の一例を示す図である。図17では、ディレクトリ情報が失われた場合の復旧処理の処理動作について説明する。ここでは、L−CPU、及びH−CPUのキャッシュステートがそれぞれ、L2キャッシュ23aに保持されているデータが無効である旨を示す「I」であり、R−CPU#0、及びR−CPU#1のキャッシュステートがそれぞれ、他のCPUのキャッシュメモリとデータが共有される共有型でありかつ保持されるデータがクリーンな状態であることを示す「S」である場合を具体例として説明する。なお、ここでは、プレゼンスビットが4CPU単位で管理されており、R−CPU#0及びR−CPU#1がプレゼンスビットの管理単位として同一グループに属する場合を例にする。また、ここでは説明の便宜上、同一グループに属するCPUのうち、R−CPU#0及びR−CPU#1のみを示し、R−CPU#0及びR−CPU#1以外のCPUについては記載を省略する。また、ここでは、L−CPUとH−CPUとR−CPU#0及びR−CPU#1とは、プレゼンスビットの管理単位としてそれぞれ別のグループに属するものとする。
H−CPUは、L−CPUから命令フェッチアクセスを受信する(ステップS59)。ここで、H−CPUは、ディレクトリ検査の結果、ディレクトリ情報が失われていると判定し、復旧フローを開始する。そして、H−CPUは、情報処理システム内の全てのCPUに対してキャッシュフラッシュを要求する。ここでは、情報処理システム内の全てのCPUとして、例えば、命令フェッチアクセスを要求するL−CPU以外のR−CPU#0及びR−CPU#1にキャッシュフラッシュを要求する(ステップS60、61)。
R−CPU#0及びR−CPU#1は、クリーンな状態で保持しているキャッシュステートを無効化し(ステップS62、63)、無効化完了を応答する(ステップS64、65)。続いて、H−CPUは、全応答を受信後、ディレクトリ情報を復旧する。例えば、ディレクトリ解析部52は、ディレクトリステートを他のCPUのキャッシュメモリに保持されていない旨を示す「R−INV」に設定する(ステップS66)。
続いて、H−CPUは、L−CPUによる命令フェッチアクセスを再開する。例えば、ディレクトリ解析部52は、「ディレクトリステート」を他のCPUのキャッシュメモリにクリーンな状態でデータ共有されている旨を示す「R−SH」に設定する(ステップS67)。
また、H−CPUのディレクトリ解析部52は、「プレゼンスビット(PRSC)」を設定する(ステップS68)。例えば、ディレクトリ解析部52は、PRSCの各ビットを「L−CPU、H−CPU、R−CPU#0及びR−CPU#1が属するグループ」に対応付けた場合、「プレゼンスビット」を「100」に設定する。これにより、「プレゼンスビット」は、L−CPUが属するグループがフェッチアクセスの対象データを保持することを示す。
また、H−CPUのディレクトリ解析部52は、「CPUカウント(CNT)」を「1」に設定する(ステップS69)。これにより、「CPUカウント(CNT)」は、フェッチアクセスの対象データを、1つのCPUが有することを示す。そして、H−CPUは、メモリ10から命令フェッチアクセスの対象データを応答する(ステップS70)。
(R−EXの場合の復旧処理)
図18は、ディレクトリ情報が失われた場合の復旧処理の処理動作の一例を示す図である。図18では、L−CPU、H−CPU、及びR−CPU#0のキャッシュステートがそれぞれ、L2キャッシュ23aに保持されているデータが無効である旨を示す「I」であり、R−CPU#1のキャッシュステートが、データが他のCPUのキャッシュメモリに保持されていない排他状態を表す排他型であり、かつ保持されるデータがダーティな状態である旨を示す「M」である場合を具体例として説明する。なお、ここでは、プレゼンスビットが4CPU単位で管理されており、R−CPU#0及びR−CPU#1がプレゼンスビットの管理単位として同一グループに属する場合を例にする。また、ここでは説明の便宜上、同一グループに属するCPUのうち、R−CPU#0及びR−CPU#1のみを示し、R−CPU#0及びR−CPU#1以外のCPUについては記載を省略する。また、ここでは、L−CPUとH−CPUとR−CPU#0及びR−CPU#1とは、プレゼンスビットの管理単位としてそれぞれ別のグループに属するものとする。
図17と同様に、H−CPUは、L−CPUから命令フェッチアクセスを受信し(ステップS71)、ディレクトリ検査の結果、ディレクトリ情報が失われていると判定して、復旧フローを開始する。例えば、H−CPUは、図17と同様に情報処理システム内の全てのCPUとして、R−CPU#0及びR−CPU#1にキャッシュフラッシュを要求する(ステップS72、73)。
また、R−CPU#0は、クリーンな状態で保持しているキャッシュステートを無効化し、無効化完了を応答する(ステップS74)。また、R−CPU#1は、ダーティな状態で保持しているキャッシュステートを無効化し(ステップS75)、データをH−CPUに転送する(ステップS76)。続いて、H−CPUは、全応答を受信後、ディレクトリ情報を復旧する。例えば、ディレクトリ解析部52は、ディレクトリステートを他のCPUのキャッシュメモリに保持されていない旨を示す「R−INV」に設定する(ステップS77)。
続いて、H−CPUは、L−CPUによる命令フェッチアクセスを再開する。例えば、ディレクトリ解析部52は、「ディレクトリステート」を「R−SH」に設定する(ステップS78)。
また、H−CPUのディレクトリ解析部52は、「プレゼンスビット(PRSC)」を設定する(ステップS79)。例えば、ディレクトリ解析部52は、PRSCの各ビットを「L−CPU、H−CPU、R−CPU#0及びR−CPU#1が属するグループ」に対応付けた場合、「プレゼンスビット」を「100」に設定する。これにより、「プレゼンスビット」は、L−CPUが属するグループがフェッチアクセスの対象データを保持することを示す。
また、H−CPUのディレクトリ解析部52は、「CPUカウント(CNT)」を「1」に設定する(ステップS80)。これにより、「CPUカウント(CNT)」は、フェッチアクセスの対象データを、1つのCPUが有することを示す。そして、H−CPUは、メモリ10から命令フェッチアクセスの対象データを応答する(ステップS81)。
[実施例1に係る動作判定部による処理の処理手順]
次に図19を用いて、実施例1に係る動作判定部45による排他型フェッチアクセスのディレクトリ検査処理の処理手順を説明する。図19は、実施例1に係る動作判定部による排他型フェッチアクセスのディレクトリ検査処理の処理手順を説明するフローチャートである。図19に示すように、動作判定部45は、リードデータ受信部44からディレクトリ情報を受付けたことを契機に、排他型フェッチアクセスのディレクトリ検査を開始する。
動作判定部45において、ディレクトリ解析部52は、ディレクトリの状態を示すディレクトリステートが他のCPUが有するキャッシュメモリに保持されていないことを示すINVであるか否かを判定する(ステップS101)。ここで、ディレクトリ解析部52により、ディレクトリステートが他のCPUが有するキャッシュメモリに保持されていないことを示すINVであると判定された場合(ステップS101、Yes)、データ応答起動部53は、以下の処理を実行する。すなわち、データ応答起動部53は、リードデータをデータバッファ41から読出し(ステップS102)、読出したリードデータをデータ応答部34に応答する(ステップS103)。
また、ディレクトリ解析部52は、ディレクトリの状態を示すディレクトリステートがINV以外のディレクトリステートを示していると判定した場合(ステップS101、No)、ディレクトリステートが単一のCPUのキャッシュメモリに保持され、ダーティな可能性があることを示すEXであるか否かを判定する(ステップS104)。ここで、ディレクトリ解析部52により、ディレクトリステートが、単一のCPUのキャッシュメモリに保持され、ダーティな可能性があることを示すEXであると判定された場合(ステップS104、Yes)、コマンド発行起動部54は、以下の処理を実行する。すなわち、コマンド発行起動部54は、キャッシュアクセスコマンドをダーティな可能性があるデータを保持するCPUに発行する(ステップS105)。ここで、コマンド発行起動部54は、CPU−IDからデータを保持するCPUを特定する。
また、ディレクトリ解析部52により、ディレクトリステートがEX以外のディレクトリステートを示していると判定された場合(ステップS104、No)、コマンド発行起動部54は、以下の処理を実行する。すなわち、コマンド発行起動部54は、モードレジスタを読出してプレゼンスビットの管理単位が1CPU単位であるか否かを判定する(ステップS106)。
ここで、コマンド発行起動部54は、プレゼンスビットの管理単位が1CPU単位である場合(ステップS106、Yes)、プレゼンスビットからデータを保持するCPUを特定し、保持するデータを無効にする無効化コマンドを、ダーティな可能性があるデータを保持するCPUに発行する(ステップS107)。一方、コマンド発行起動部54は、プレゼンスビットの管理単位が1CPU単位ではない場合(ステップS106、No)、プレゼンスビットからダーティな可能性があるデータを保持するCPUを含むCPUグループを特定し、無効化コマンドを特定したCPUグループに発行する(ステップS108)。
[実施例1の効果]
上述してきたように、実施例1に係るCPU20は、メモリが記憶するデータと同一のデータブロックをキャッシュメモリに保持するCPUの有無を所定数のCPU毎にディレクトリ情報としてメモリに書込む。この結果、実施例1に係るCPU20は、CPU数の増加に応じたディレクトリ情報量の増加を抑制することができる。
また、実施例1に係るCPU20は、例えば、管理単位が変更可能なプレゼンスビットにより、一定の情報量で大規模構成に対応できるので、情報処理装置の規模を拡張できる。
また、実施例1に係るCPU20は、大規模構成時に任意のデータブロックのアクセスが発生した場合でも、プレゼンスビットを参照することで、アクセスされたデータを所有しないCPUグループを特定可能であり、無関係なCPUへの無駄なデータ通信を抑えることができる。
また、実施例1に係るCPU20は、CPUカウントを管理する。このため、実施例1に係るCPU20は、大規模構成時のCPUグループ単位のプレゼンスビットの管理において、システム内の全CPUが任意のデータブロックを破棄した場合に、ディレクトリステートが他のCPUのキャッシュメモリにデータが保持されていない旨を示すR−INVに戻ったことを検知できる。このため、実施例1に係るCPU20は、どのCPUのキャッシュにも所有されていないのにも関わらず、キャッシュステートをデータが他のCPUのキャッシュメモリにクリーンな状態で共有されている旨を示すR−SHのままにしておくことと比較すると、CPUがキャッシュメモリに保持するデータへの再アクセスが発生した場合に無駄なデータ通信を抑えることができる。
また、実施例1に係るCPU20は、大規模構成時にCPUグループ単位でプレゼンスビットを管理する。このため、実施例1に係るCPU20は、任意のデータブロックを所有する全CPUへのアクセスが発生した場合、故障などから発生するCPU内のキャッシュへの登録状態の矛盾をCPUカウントから検査できる。この結果、実施例1に係るCPU20は、信頼性の確保と性能向上との両方を実現することが可能である。さらに、実施例1に係るCPU20は、ディレクトリ情報を喪失した場合でも復旧フローを装備するため、信頼性を確保できる。
ところで、本発明は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例2では、本発明に含まれる他の実施例について説明する。
(システム構成等)
本実施例において説明した各処理のうち自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、制御手順、具体的名称については、特記する場合を除いて任意に変更することができる。
また、ディレクトリ情報は、メモリ上にマッピングするものとして説明したが、CPUの中にディレクトリ情報専用のメモリを設けるようにしてもよい。また、ディレクトリ情報は、プレゼンスビットの管理単位が、CPU単位すなわち、1つのCPUに対して1ビットを割り当てられる場合には、「CPUカウント」を管理しないようにしてもよい。
また、図示した各構成部は、機能概念的なものであり、必ずしも物理的に図示のごとく構成されていることを要しない。例えば、CPU20では、コマンド発行起動部54とコマンド宛先判定部55とが統合されてもよい。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
1 情報処理システム
2、2a、2b XB
3、3a〜3h SB
10、10a〜10d メモリ
20、20a〜20d CPU
21 通信制御部
22、22a〜22f コア
23 L2キャッシュ制御部
23a L2キャッシュ
24 メモリ制御部
25 コヒーレント制御部
31 コマンド受信部
32 ディレクトリ検査部
33 コマンド発行/応答部
34 データ応答部
41 データバッファ
42 コマンド受信部
43 メモリアクセス発行部
44 リードデータ受信部
45 動作判定部
51 モードレジスタ
52 ディレクトリ解析部
53 データ応答起動部
54 コマンド発行起動部
55 コマンド宛先判定部
220、220a〜220f L1キャッシュ

Claims (5)

  1. それぞれキャシュメモリを備えた複数の演算処理装置のうち、主記憶装置に接続された演算処理装置において、
    前記複数の演算処理装置を前記複数の演算処理装置の総数に基づいて起動時に設定された設定数毎にグループ化して得られる複数の演算処理装置グループの各演算処理装置グループについて、対応する演算処理装置グループに属するいずれかの演算処理装置が備えるキャシュメモリに前記主記憶装置に格納されたデータと同一のデータが保持されているか否かを示す存在情報を、前記主記憶装置に書き込む制御
    有することを特徴とする演算処理装置。
  2. 前記制御部はさらに、
    前記複数の演算処理装置のうち、前記主記憶装置に格納されたデータと同一のデータを自装置のキャッシュメモリに保持する演算処理装置の数を表示する計数情報を、前記主記憶装置に書込むことを特徴とする請求項1記載の演算処理装置。
  3. 前記制御部はさらに、
    前記複数の他の演算処理装置のいずれかから排他的にデータを保持する旨の要求を受けた場合、前記複数の他の演算処理装置のうち、前記要求に対応するデータと同一のデータを自装置のキャッシュメモリに保持する演算処理装置に対し、前記同一のデータの無効化前記同一のデータを保持していた旨の応答とを要求し、受信した応答の数と前記主記憶装置に書き込んだ計数情報とが一致しないとき、前記主記憶装置に書き込んだ存在情報と計数情報が異常であると判定することを特徴とする請求項2記載の演算処理装置。
  4. それぞれキャッシュメモリを備えた複数の演算処理装置のうち、主記憶装置に接続された演算処理装置の制御方法において、
    前記複数の演算処理装置を前記複数の演算処理装置の総数に基づいて起動時に設定された設定数毎にグループ化して得られる複数の演算処理装置グループの各演算処理装置グループについて、対応する演算処理装置グループに属するいずれかの演算処理装置が備えるキャッシュメモリに前記主記憶装置に格納されたデータと同一のデータが保持されているか否かを示す存在情報を、前記主記憶装置に書き込むことを特徴とする演算処理装置の制御方法。
  5. データを記憶する主記憶装置と、それぞれキャッシュメモリを備えた複数の演算処理装置とを備える情報処理装置において、
    前記複数の演算処理装置のうち前記主記憶装置に接続された演算処理装置は、
    前記複数の演算処理装置を前記複数の演算処理装置の総数に基づいて起動時に設定された設定数毎にグループ化して得られる複数の演算処理装置グループの各演算処理装置グループについて、対応する演算処理装置グループに属するいずれかの演算処理装置が備えるキャッシュメモリに前記主記憶装置に格納されたデータと同一のデータが保持されているか否かを示す存在情報を、前記主記憶装置に書き込む制御
    有することを特徴とする情報処理装置。
JP2012077850A 2012-03-29 2012-03-29 演算処理装置、演算処理装置の制御方法及び情報処理装置 Active JP5929420B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012077850A JP5929420B2 (ja) 2012-03-29 2012-03-29 演算処理装置、演算処理装置の制御方法及び情報処理装置
US13/742,472 US9436613B2 (en) 2012-03-29 2013-01-16 Central processing unit, method for controlling central processing unit, and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012077850A JP5929420B2 (ja) 2012-03-29 2012-03-29 演算処理装置、演算処理装置の制御方法及び情報処理装置

Publications (2)

Publication Number Publication Date
JP2013206395A JP2013206395A (ja) 2013-10-07
JP5929420B2 true JP5929420B2 (ja) 2016-06-08

Family

ID=49236650

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012077850A Active JP5929420B2 (ja) 2012-03-29 2012-03-29 演算処理装置、演算処理装置の制御方法及び情報処理装置

Country Status (2)

Country Link
US (1) US9436613B2 (ja)
JP (1) JP5929420B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103488606B (zh) * 2013-09-10 2016-08-17 华为技术有限公司 基于节点控制器的请求响应方法和装置
CN114253616B (zh) * 2021-12-17 2023-07-18 苏州浪潮智能科技有限公司 基于amd平台的服务器主板及其开机控制方法、系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2809961B2 (ja) 1993-03-02 1998-10-15 株式会社東芝 マルチプロセッサ
JPH09223115A (ja) * 1996-02-19 1997-08-26 Canon Inc 情報処理装置及びシステム及びその制御方法
US6295598B1 (en) * 1998-06-30 2001-09-25 Src Computers, Inc. Split directory-based cache coherency technique for a multi-processor computer system
US6782410B1 (en) * 2000-08-28 2004-08-24 Ncr Corporation Method for managing user and server applications in a multiprocessor computer system
FR2820850B1 (fr) 2001-02-15 2003-05-09 Bull Sa Controleur de coherence pour ensemble multiprocesseur, module et ensemble multiprocesseur a architecture multimodule integrant un tel controleur
US7003635B2 (en) * 2002-10-03 2006-02-21 Hewlett-Packard Development Company, L.P. Generalized active inheritance consistency mechanism having linked writes
US8990527B1 (en) * 2007-06-29 2015-03-24 Emc Corporation Data migration with source device reuse
US8103842B2 (en) * 2008-11-17 2012-01-24 Hitachi, Ltd Data backup system and method for virtual infrastructure
JP5104817B2 (ja) * 2009-06-30 2012-12-19 富士通株式会社 ストレージシステム、ストレージ制御装置及び方法
JP5183650B2 (ja) * 2010-02-17 2013-04-17 株式会社日立製作所 計算機システム,計算機システムにおけるバックアップ方法及びプログラム

Also Published As

Publication number Publication date
US9436613B2 (en) 2016-09-06
US20130262782A1 (en) 2013-10-03
JP2013206395A (ja) 2013-10-07

Similar Documents

Publication Publication Date Title
CN103294616B (zh) 信息处理设备和控制方法
US7003635B2 (en) Generalized active inheritance consistency mechanism having linked writes
US9208091B2 (en) Coherent attached processor proxy having hybrid directory
US7502893B2 (en) System and method for reporting cache coherency state retained within a cache hierarchy of a processing node
US8990513B2 (en) Accelerated recovery for snooped addresses in a coherent attached processor proxy
KR20170069149A (ko) 데이터 처리 시스템의 캐시 일관성을 위한 스누프 필터
US6772298B2 (en) Method and apparatus for invalidating a cache line without data return in a multi-node architecture
KR20010101193A (ko) 판독 요청을 원격 처리 노드에 추론적으로 전송하는비정형 메모리 액세스 데이터 처리 시스템
US9323675B2 (en) Filtering snoop traffic in a multiprocessor computing system
JP5505516B2 (ja) 情報処理システムおよび情報送信方法
US6587922B2 (en) Multiprocessor system
US9021211B2 (en) Epoch-based recovery for coherent attached processor proxy
JPH0950400A (ja) マルチプロセッサシステム
KR20070040340A (ko) 소형 캐시 시스템에서 원자적 보존 라인에 라이트백하는것을 배제하는 방법 및 시스템
JP5929420B2 (ja) 演算処理装置、演算処理装置の制御方法及び情報処理装置
US6526480B1 (en) Cache apparatus and control method allowing speculative processing of data
US7310709B1 (en) Method and apparatus for primary cache tag error handling
JP2020003959A (ja) 情報処理装置、演算処理装置及び情報処理装置の制御方法
CN106406745B (zh) 根据目录信息维护Cache数据一致性的方法及装置
US8015372B2 (en) Apparatus and method for memory migration in a distributed memory multiprocessor system
US10775870B2 (en) System and method for maintaining cache coherency
US10387310B2 (en) Remote node broadcast of requests in a multinode data processing system
JP5906881B2 (ja) 情報処理装置及び情報処理装置の制御方法
JP6631317B2 (ja) 演算処理装置、情報処理装置および情報処理装置の制御方法
CN117882042A (zh) 存储器装置的撤销能力

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150106

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151112

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160418

R150 Certificate of patent or registration of utility model

Ref document number: 5929420

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150