(57)【要約】  演算処理装置、主記憶装置及び一時記憶装置を有するノードが複数接続された情報処理装置において、各ノードに設けられたディレクトリに、データが当該ノードから他のノードの一時記憶装置に持ち出されていることを示す持ち出され情報を格納する。自ノードの一時記憶装置へのメモリアクセスでキャッシュミスが発生し、かつ、メモリアクセスが自ノードの主記憶装置宛であると判定されると、自ノードのディレクトリを索引してディレクトリヒットが発生したか否かを判定する。ディレクトリヒットが発生しなかったと判定されるとメモリアクセスを自ノードで行う。メモリアクセスが自ノードの主記憶装置宛でないと判定されるか、或いは、ディレクトリヒットが発生したと判定されると、全てのノードに対してスヌープを行うグローバルスヌープ処理を自ノードから他のノードに対して行う。
2010038301.tif 000002
【特許請求の範囲】
【請求項１】
演算処理装置、主記憶装置及び一時記憶装置を有するノードが複数接続された情報処理装置におけるデータ整合性を保つメモリアクセス方法であって、
各ノードに設けられたディレクトリに、データが当該ノードから他のノードの一時記憶装置に持ち出されていることを示す持ち出され情報を格納し、
自ノードの一時記憶装置へのメモリアクセスでキャッシュミスが発生すると、前記メモリアクセスが前記自ノードの主記憶装置又は一時記憶装置宛であるか否かを自ノードで判定するステップと、
前記メモリアクセスが前記自ノードの主記憶装置又は一時記憶装置宛であると判定されると前記ディレクトリを索引してディレクトリヒットが発生したか否かを前記自ノードで判定するステップと、
前記ディレクトリヒットが発生しなかったと判定されると前記メモリアクセスに基づいてメモリアクセスを前記自ノードで行うステップと、
前記メモリアクセスが前記自ノードの主記憶装置又は一時記憶装置宛でないと判定されるか、或いは、前記ディレクトリヒットが発生したと判定されると、前記メモリアクセスに基づいて全てのノードに対してスヌープを行うグローバルスヌープ処理を前記自ノードから他のノードに対して行うステップ
を含むメモリアクセス方法。
【請求項２】
前記グローバルスヌープ処理を前記自ノードから他のノードに対して行うステップは、前記ディレクトリヒットが発生したと判定されると、前記自ノードのタグコピーを索引してから前記グローバルスヌープ処理を行う、請求項１記載のメモリアクセス方法。
【請求項３】
前記タグコピーは、任意の１つのノード内に格納される、請求項２記載のメモリアクセス方法。
【請求項４】
前記メモリアクセスを前記自ノードで行うステップは、前記ディレクトリヒットが発生しなかったと判定されると前記自ノードの主記憶装置又は一時記憶装置のデータをロードする、請求項１又は２記載のメモリアクセス方法。
【請求項５】
各ノードにおいて、前記ディレクトリは当該ノード内の主記憶装置に格納されている、請求項１又は２記載のメモリアクセス方法。
【請求項６】
各ノードにおいて、前記ディレクトリは当該ノード内の主記憶装置以外の記憶装置に格納されている、請求項１又は２記載のメモリアクセス方法。
【請求項７】
各ノードにおいて、前記ディレクトリは当該ノード内の主記憶装置以外の他の主記憶装置と外部記憶装置に格納される、請求項１又は２記載のメモリアクセス方法。
【請求項８】
各ノードにおいて、前記ディレクトリは当該ノード以外の全てのノードの一時記憶装置の容量を包含する数の更新可能なエントリを有し、
前記エントリは、アドレスを索引情報としたステータス、アドレスブロックを関連付けるためのアドレスタグと、エラー訂正コードを含み、前記ステータスは前記ディレクトリが有効であるか無効であるかを示す、請求項１又は２記載のメモリアクセス方法。
【請求項９】
各ノードにおいて、データが当該ノードから他のノードの一時記憶装置に持ち出されている持ち出され状態が解消されると、前記ディレクトリの持ち出され情報を無効化するステップを更に含む、請求項１又は２記載のメモリアクセス方法。
【請求項１０】
前記グローバルスヌープ処理を前記自ノードから他のノードに対して行うステップは、前記メモリアクセスで要求されているデータが前記情報処理装置を管理する管理ノード以外のノードの一時記憶装置には格納されていないと判定すると、前記管理ノードのタグ情報を参照する、請求項２記載のメモリアクセス方法。
【請求項１１】
前記管理ノードから前記自ノードの一時記憶装置にデータが転送される際に、前記管理ノードのディレクトリに持ち出され情報を登録するステップを更に含む、請求項１０記載のメモリアクセス方法。
【請求項１２】
前記ディレクトリは、持ち出されているデータが排他型か共有型の要求によるものかを区別する共有情報を含み、
前記ディレクトリヒットが発生したと判定され、前記ディレクトリを索引して前記シェア情報からデータが共有型の要求で持ち出されていると判定されると、前記自ノードの主記憶装置からデータを取得するステップと、
排他型のコピーバックによる一時記憶装置間のデータ転送が発生し、前記ディレクトリを索引して前記シェア情報からデータが排他型の要求で持ち出されていると判定されると、前記管理ノードのディレクトリの持ち出され情報を無効化するステップ
を更に含む請求項１０記載のメモリアクセス方法。
【請求項１３】
データ整合性が保たれる情報処理装置であって、
各々が演算処理装置、主記憶装置及び一時記憶装置を有する複数のノードと、
前記複数のノードと接続されるとともに、演算処理装置及び主記憶装置に接続されるメモリ制御装置とを備え、
各ノードは、データが当該ノードから他のノードの一時記憶装置に持ち出されていることを示す持ち出され情報を格納するディレクトリを有し、
自ノードの演算処理装置は、
自ノードの一時記憶装置へのメモリアクセスでキャッシュミスが発生すると、前記メモリアクセスが自ノードの主記憶装置又は一時記憶装置宛であるか否かを判定する第１の判定手段と、
前記第１の判定手段により前記メモリアクセスが前記自ノードの主記憶装置又は一時記憶装置宛であると判定されると前記ディレクトリを索引してディレクトリヒットが発生したか否かを判定する第２の判定手段と、
前記第２の判定手段により前記ディレクトリヒットが発生しなかった判定されると前記メモリアクセスに基づいてメモリアクセスを行うアクセス手段と、
前記第１の判定手段により前記メモリアクセスが前記自ノードの主記憶装置又は一時記憶装置宛でないと判定されるか、或いは、前記第２の判定手段により前記ディレクトリヒットが発生したと判定されると、前記メモリアクセスに基づいて全ての一時期億装置に対してスヌープを行うグローバルスヌープ処理を他のノードに対して行うスヌープ処理手段を有する、情報処理装置。
【請求項１４】
前記スヌープ処理手段は、前記第２の判定手段により前記ディレクトリヒットが発生したと判定されると、前記自ノードのタグコピーを索引してから前記グローバルスヌープ処理を行う、請求項１３記載の情報処理装置。
【請求項１５】
前記メモリ制御装置のメモリは、各ノードのタグコピーを格納する、請求項１４記載の情報処理装置。
【請求項１６】
前記ディレクトリは、各ノード内の主記憶装置、各ノード内の前記主記憶装置以外の他の主記憶装置、各ノード外の記憶装置のいずれかに格納されている、請求項１３又は１４記載の情報処理装置。
【請求項１７】
任意の１つのノードにおいて、前記ディレクトリは前記任意のノード以外の全てのノードの一時記憶装置の容量を包含する数の更新可能なエントリを有し、
前記エントリは、アドレスを索引情報としたステータス、アドレスブロックを関連付けるためのアドレスタグと、エラー訂正コードを含み、前記ステータスは前記ディレクトリが有効であるか無効であるかを示す、請求項１３又は１４記載の情報処理装置。
【請求項１８】
前記自ノードの演算処理装置は、データが当該ノードから他のノードの一時記憶装置に持ち出されている持ち出され状態が解消されると、前記ディレクトリの持ち出され情報を無効化する手段を更に有する、請求項１３又は１４記載の情報処理装置。
【請求項１９】
前記スヌープ処理手段は、前記メモリアクセスで要求されているデータが管理ノード以外のノードの一時記憶装置には格納されていないと判定すると、前記管理ノードのタグ情報を参照する、請求項１４記載の情報処理装置。
【請求項２０】
前記ディレクトリは、持ち出されているデータが排他型か共有型の要求によるものかを区別できる共有情報を含み、
前記自ノードの演算処理装置は、
前記第２の判定手段により前記ディレクトリヒットが発生したと判定され、前記ディレクトリを索引して前記シェア情報からデータが共有型の要求で持ち出されていると判定されると、前記自ノードの主記憶装置からデータを取得する手段と、
排他型のコピーバックによる一時記憶装置間のデータ転送が発生し、前記ディレクトリを索引して前記シェア情報からデータが排他型の要求で持ち出されていると判定されると、前記管理ノードのディレクトリの持ち出され情報を無効化する手段を更に有する請求項１９記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセス方法及び情報処理装置に係り、特にキャッシュコヒーレンシー（Cache Coherency：キャッシュメモリにおけるデータの整合性）を保つメモリアクセス方法及び情報処理装置に関する。
【背景技術】
【０００２】
複数の演算処理装置であるプロセッサ（又はＣＰＵ（Central Processing Unit）を有する情報処理装置であるマルチプロセッサシステムにおいて、記憶装置であるメモリとキャッシュメモリ全体のキャッシュコヒーレンシーを保つ方法としては、ＳＭＰ（Symmetric Multi Processing）方式とｃｃＮＵＭＡ（cache coherent Non-Uniform Memory Access）方式がある。【０００３】
プロセッサ数が多くなると、ＳＭＰ方式ではグローバルスヌープ（Global Snoop：システム内の全てのキャッシュメモリに対してスヌープを行う方式）が性能の律速条件になってしまい、性能を更に向上することが困難になってくる。ＳＭＰ方式の場合、いつでもグローバルスヌープを行うために、グローバルスヌープのレイテンシより短い時間でメモリアクセスをすることは原理的には不可能である。【０００４】
ｃｃＮＵＭＡ方式における利点は、ローカルメモリのアクセスが高速であるということである。ローカルメモリとは、アクセス元のプロセッサ（例えばＣＰＵ：Central Processing Unit）と直接接続されているメモリを言う。【０００５】
一方、ＳＭＰ方式では、ｃｃＮＵＭＡ方式とは異なり、リモートメモリのアクセスであってもグローバルスヌープのレイテンシとメモリアクセス時間のバランスを崩すことはない。つまり、リモートメモリのアクセスにおいてｃｃＮＵＭＡ方式の場合に見られるような極端なグローバルスヌープのレイテンシの増加とバラツキは無いという利点がある。リモートメモリとは、アクセス元のＣＰＵとは直接接続されておらず、他のＣＰＵに接続されているメモリを言う。【０００６】
図１は、ＳＭＰ方式によるコピーバックを説明する図である。図１のマルチプロセッサシステムでは、複数のノード１−１〜１−３が対応するシステムコントローラ（ＳＣ：System Controller）２−１〜２−３を介してクロスバー（ＸＢ：Cross Bar）３に接続されている。各ノード１−１〜１−３は、ＣＰＵ等のプロセッサとキャッシュを有するコア１１、メモリコントローラ（ＭＣ：Memory Controller）１２及び主記憶メモリ（ＤＩＭＭ：Dual Inline Memory Module）１３を有する。ここでは説明の便宜上、ノード１−１がローカルノード（Local Node）であり、ノード１−３がキャッシュミスしたデータを保持するオーナーノード（Owner Node）であるものとする。【０００７】
図１において、キャッシュミスしたローカルノード１−１は、矢印Ａ１で示すように、ＳＣ２−１にキャッシュミスしたデータを要求する。ＳＣ２−１は、矢印Ａ１で示すように、ＸＢ３に対してデータ要求のブロードキャスト（Broadcast）を行い、ＸＢ３は、矢印Ａ２で示すように、全ＳＣ２−１〜２−３に対してデータ要求をブロードキャストする。各ＳＣ２−１〜２−３では、同時にタグコピー（TAG Copy）を探索してキャッシュミスしたデータの所在を判断し、矢印Ａ２で示すように、ＸＢ３に判断結果を返す。ＸＢ３は、これらの判断結果をまとめ、この例では矢印Ａ３で示すようにオーナーノード１−３のコア１１のキャッシュにキャッシュミスしたデータがあることを判断し、コピーバック要求をする。オーナーノード１−３はキャッシュデータを要求元のローカルノード１−１に転送する。このように、どのノードがオーナーノードになる場合であっても、経由する距離は殆ど変わらない。【０００８】
ｃｃＮＵＭＡ方式は、ＳＭＰ方式と比較するとソフトウェアの技術の向上により優位になりつつある。しかしながら、ｃｃＮＵＭＡ方式は、ＳＭＰ方式とは応答特性が異なり、ローカルメモリに対しては短いレイテンシでアクセスできるが、リモートメモリに対するアクセスは遅い。このため、ＳＭＰ方式からｃｃＮＵＭＡに移行すると、ソフトウェアによっては性能低下を招く。特に、コピーバック等のＣＰＵキャッシュ間転送が頻発する場合には、ｃｃＮＵＭＡ方式のＳＭＰ方式に対する優位性は薄れてしまう。【０００９】
図２は、ｃｃＮＵＭＡ方式によるコピーバックを説明する図である。図２中、図１と同一部分には同一符号を付し、その説明は省略する。各ノード１−１〜１−３には、コミュニケーションアシスト（ＣＡ：Communication Assist）１４が設けられている。又、５−１〜５−３は、経路の制御点を示す。ここでは説明の便宜上、ノード１−１がローカルノードであり、ノード１−２がメモリ管理主体としての管理ノードであるホームノード（Home Node）、ノード１−３がキャッシュミスしたデータを保持するオーナーノードであるものとする。【００１０】
キャッシュミスを起こしたローカルノード１−１は、矢印Ａ１１で示すように、ホームノード１−２のディレクトリ（Directory）に要求するデータの所在を問い合わせる。ディレクトリは、ＤＩＭＭ１３に格納されている。ホームノード１−２は、ディレクトリを検索することでデータがオーナーノード１−３にあることを認識し、矢印Ａ１２で示すように、オーナーノード１−３にデータ転送指示を出す。オーナーノード１−３は、矢印Ａ１３で示すように、データ要求元であるローカルノード１−１に要求されたデータを返却する。【００１１】
ディレクトリの情報の整合性を整える等の付加的なやりとりがノード１−１〜１−３間で行われる場合もあるが、基本的には上記の如く１つのキャッシュミスに対して３回の要求転送が発生するため、要求したデータを取得するのに時間がかかる。又、経路の制御点は、ノードの数と共に増加するため、各転送において経路の制御点を複数経由することになり、転送に時間がかかるケースが増える一方、データ要求元であるＳＣと同一ノードであるローカルノードとのやりとりであれば転送時間が短いというバランスの悪い構造になる。
【特許文献１】特開平１１−２３２１７３号公報
【特許文献２】特開平５−１００９５２号公報
【特許文献３】特開２００５−２３４８５４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
従来のマルチプロセッサシステムでは、アクセス対象のメモリがローカルノードにあるローカルメモリであるか、或いは、他のノードにあるリモートメモリであるかにかかわらず、比較的短いレイテンシと比較的高いスループットを実現することは難しいという問題があった。【００１３】
そこで、本発明は、アクセス対象のメモリがローカルメモリであるか、或いは、リモートメモリであるかにかかわらず、比較的短いレイテンシと比較的高いスループットを実現可能なメモリアクセス方法及び情報処理装置を実現することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の一観点によれば、演算処理装置、主記憶装置及び一時記憶装置を有するノードが複数接続された情報処理装置におけるデータ整合性を保つメモリアクセス方法であって、各ノードに設けられたディレクトリに、データが当該ノードから他のノードの一時記憶装置に持ち出されていることを示す持ち出され情報を格納し、自ノードの一時記憶装置へのメモリアクセスでキャッシュミスが発生すると、前記メモリアクセスが前記自ノードの主記憶装置又は一時記憶装置宛であるか否かを自ノードで判定するステップと、前記メモリアクセスが前記自ノードの主記憶装置又は一時記憶装置宛であると判定されると前記ディレクトリを索引してディレクトリヒットが発生したか否かを前記自ノードで判定するステップと、前記ディレクトリヒットが発生しなかったと判定されると前記メモリアクセスに基づいてメモリアクセスを前記自ノードで行うステップと、前記メモリアクセスが前記自ノードの主記憶装置又は一時記憶装置宛でないと判定されるか、或いは、前記ディレクトリヒットが発生したと判定されると、前記メモリアクセスに基づいて全てのノードに対してスヌープを行うグローバルスヌープ処理を前記自ノードから他のノードに対して行うステップを含むメモリアクセス方法が提供される。【００１５】
本発明の一観点によれば、データ整合性が保たれる情報処理装置であって、各々が演算処理装置、主記憶装置及び一時記憶装置を有する複数のノードと、前記複数のノードと接続されるとともに、演算処理装置及び主記憶装置に接続されるメモリ制御装置とを備え、各ノードは、データが当該ノードから他のノードの一時記憶装置に持ち出されていることを示す持ち出され情報を格納するディレクトリを有し、自ノードの演算処理装置は、自ノードの一時記憶装置へのメモリアクセスでキャッシュミスが発生すると、前記メモリアクセスが自ノードの主記憶装置又は一時記憶装置宛であるか否かを判定する第１の判定手段と、前記第１の判定手段により前記メモリアクセスが前記自ノードの主記憶装置又は一時記憶装置宛であると判定されると前記ディレクトリを索引してディレクトリヒットが発生したか否かを判定する第２の判定手段と、前記第２の判定手段により前記ディレクトリヒットが発生しなかった判定されると前記メモリアクセスに基づいてメモリアクセスを行うアクセス手段と、前記第１の判定手段により前記メモリアクセスが前記自ノードの主記憶装置又は一時記憶装置宛でないと判定されるか、或いは、前記第２の判定手段により前記ディレクトリヒットが発生したと判定されると、前記メモリアクセスに基づいて全ての一時期億装置に対してスヌープを行うグローバルスヌープ処理を他のノードに対して行うスヌープ処理手段を有する情報処理装置が提供される。
【発明の効果】
【００１６】
開示のメモリアクセス方法及び情報処理装置によれば、アクセス対象のメモリがローカルメモリであるか、或いは、リモートメモリであるかにかかわらず、比較的短いレイテンシと比較的高いスループットを実現することができる。
【図面の簡単な説明】
【００１７】
【図１】ＳＭＰ方式によるコピーバックを説明する図である。
【図２】ｃｃＮＵＭＡ方式によるコピーバックを説明する図である。
【図３】本実施形態の一例におけるマルチプロセッサシステムを示すブロック図である。
【図４】タグコピーのエントリの一例を説明する図である。
【図５】ディレクトリのエントリの一例を説明する図である。
【図６】メモリアクセス制御を説明するフローチャートである。
【図７】マルチプロセッサシステムの動作の一例を説明するフローチャートである。
【図８】マルチプロセッサシステムの各部の動作の一例を説明するフローチャートである。
【図９】ディレクトリの構成方法を説明する図である。
【図１０】ディレクトリのエントリの他の例を説明する図である。
【図１１】マルチプロセッサシステムの動作の他の例を説明するフローチャートである。
【符号の説明】
【００１８】
２１      ＳＣ
２２−１，２２−２，...，２２−ｎ      ノード
３１    コア
３２    ＤＩＭＭ
４１      ＣＰＵ
４２      ＭＣ
４３      キャッシュ
４４      キャッシュタグ
４５      ディレクトリ
５１      タグコピー
【発明を実施するための最良の形態】
【００１９】
開示のメモリアクセス方法では、演算処理装置、主記憶装置及び一時記憶装置を有するノードが複数接続された情報処理装置においてデータ整合性を保つようにメモリアクセスを制御する。各ノードに設けられたディレクトリには、データが当該ノードから他のノードの一時記憶装置に持ち出されていることを示す持ち出され情報を格納する。自ノードの一時記憶装置へのメモリアクセスでキャッシュミスが発生すると、メモリアクセスが自ノードの主記憶装置又は一時記憶装置宛であるか否かを自ノードで判定し、メモリアクセスが自ノードの主記憶装置又は一時記憶装置宛であると判定されるとディレクトリを索引してディレクトリヒットが発生したか否かを自ノードで判定する。ディレクトリヒットが発生しなかったと判定されるとメモリアクセスに基づいてｃｃＮＵＭＡ方式のメモリアクセスを自ノードで行う。一方、メモリアクセスが自ノードの主記憶装置又は一時記憶装置宛でないと判定されるか、或いは、ディレクトリヒットが発生したと判定されると、メモリアクセスに基づいて全てのノードに対してスヌープを行うＳＭＰ方式のグローバルスヌープ処理を自ノードから他ノードに対して行う。【００２０】
これにより、ＳＭＰ方式とｃｃＮＵＭＡ方式の夫々の長所を有効利用することができる。【００２１】
以下に、開示の情報処理装置及び情報処理装置のメモリアクセス方法の各実施例を、図３以降と共に説明する。
【実施例】
【００２２】
図３は、本実施形態の一例におけるマルチプロセッサシステムを示すブロック図である。図３のマルチプロセッサシステムは、システムコントローラ（ＳＣ：System Controller）２１と複数のノード２２−１，２２−２，...，２２−ｎ（ｎは２以上の自然数）を有する。ＳＣ２１と複数のノード２２−１，２２−２，...，２２−ｎは、適切な接続手段により接続されており、この接続手段は特に限定されず周知のものを使用可能である。ＳＣ２１は、後述する複数のタグコピー（TAG Copy）５１を有し、メモリ制御装置として機能する。各ノード２２−１，２２−２，...，２２−ｎは同じ構成を有するので、図３ではノード２２−１の構成のみを示す。ノード２２−１は、コア３１及び主記憶装置である主記憶メモリ（ＤＩＭＭ：Dual Inline Memory Module）３２を有し、コア３１には中央処理装置（ＣＰＵ：Central Processing Unit）等の演算処理装置としてのプロセッサ４１、メモリコントローラ（ＭＣ：Memory Controller）４２、一時記憶装置であるキャッシュメモリ（Cache Memory、以下単にキャッシュと言う）４３、キャッシュタグ４４及びディレクトリ４５が含まれる。コア３１内のプロセッサ４１の数は１個に限定されない。【００２３】
各ノード２２−１，２２−２，...，２２−ｎは、周知のｃｃＮＵＭＡ方式のマルチプロセッサシステムにおけるローカルノード、ホームノード及びオーナーノードと同様に機能可能である。少なくともローカルノードとして使用される各ノード２２−１，２２−２，...，２２−ｎは、物理実装が例えば１チップのように物理的に１箇所にある必要は無く、例えばＤＩＭＭ３２とディレクトリ４５がＳＣ２１の先、即ち、プロセッサ４１とキャッシュ４３の反対側に配置された接続であっても良い。要は、マルチプロセッサシステム全体に存在するＤＩＭＭ空間（主記憶メモリ空間）が、キャッシュコヒーレンシーを保たれる共有メモリ空間であれば良い。【００２４】
ＳＣ２１は、プロセッサ及びタグコピー５１を格納するメモリを有し、各ノード２２−１，２２−２，...，２２−ｎと同様の構成を有しても良い。ＳＣ２１は、各ノード２２−１，２２−２，...，２２−ｎに含まれるキャッシュタグ４４のタグコピー５１を有する。タグコピー５１は、後述するように、キャッシュタグ４４の完全なコピーにはならない場合がある。タグコピー５１は、周知のＳＭＰ方式のマルチプロセッサシステムで利用されるものと基本的には同じ機能を有する。【００２５】
図４は、タグコピー５１のエントリの一例を説明する図である。タグコピー５１のエントリは、図４に示すように、キャッシュ４４の状態を示すステータス（Status）、アドレスブロックを関連付けるためのアドレスタグ（Address Tag）と、エラー訂正コード（ＥＣＣ：Error Correction Code）他を含む。尚、ステータス（Status）は、タグコピー５１が有効であるか否かを示す有効情報を兼ねるものであっても良い。【００２６】
ＳＣ２１が各ノード２２−１，２２−２，...，２２−ｎと同様の構成を有する場合、ＳＣ２１にタグコピー５１が存在することを除けば、図３のマルチプロセッサシステムの構成は周知のｃｃＮＵＭＡ方式のマルチプロセッサシステムと同様である。ただし、後述するように図３のマルチプロセッサシステムの制御は周知のｃｃＮＵＭＡ方式のマルチプロセッサシステムの制御とは多少異なる。【００２７】
図５は、ディレクトリ４５のエントリの一例を説明する図である。ディレクトリ４５のエントリは、キャッシュタグ４４のエントリと類似している。ディレクトリ４５のエントリは、図５に示すように、アドレスをキー（索引情報）としたステータス（Status）、アドレスブロックを関連付けるためのアドレスタグ（Address Tag）と、エラー訂正コード（ＥＣＣ：Error Correction Code）等を含む。ディレクトリ４５のステータスは、ディレクトリ４５が有効であるか無効であるかを示す。ディレクトリ４５の各エントリは、更新可能に構成されている。【００２８】
ディレクトリ４５の容量は、このディレクトリ４５が属するノード（例えば、ノード２２−１）から外部に持ち出される可能性のある最大の状態を格納可能であれば良い。従って、この例ではマルチプロセッサシステムで繋がっているローカルノード２２−１以外のリモートノード２２−２〜２２−ｎのキャッシュ４３の総容量を満たすように、且つ、セットアソシアティブ（Set Associative）方式のキャッシュ４３であればセット（set）数も十分となるようにする。【００２９】
例えばマルチプロセッサシステムのノードの数ｎが４個であり、各ノード２２−１〜２２−４が１Ｍバイト（ＭＢ）で２−ウェイ（2-Way）構成のキャッシュ４３を有し、各キャッシュ４３のラインサイズが６４バイトであると、各ノード２２−１〜２２−４内のディレクトリ４５は４×１（ＭＢ）分をカバーできる容量を有する必要がある。この場合、Way数は４×２＝８−ウェイだけ必要となる。【００３０】
ディレクトリ４５が図４のようなエントリ構成を有し、アドレスタグ（Address Tag）として３２ビット、ステータス（Valid）及びＥＣＣ他に８ビット必要な場合、１エントリ当たり５バイト必要であり、４ＭＢ分のエントリ数、即ち、４ＭＢ÷６４＝６５５３６エントリ必要なので、ディレクトリ４５には３２７６８０バイト（約３３０ＫＢ）の容量が必要になる。このディレクトリ４５の容量は、各ノード２２−１〜２２−４のキャッシュ４３の容量１ＭＢよりも小さいので、ＳＣ２１内に実装可能である。【００３１】
ただし、ノード２２−１〜２２−ｎの数ｎが非常に大きい大規模なマルチプロセッサシステム（即ち、共有メモリシステム）の場合や、各ノード２２−１〜２２−ｎのキャッシュ４３の容量が大きいとき等の場合には、例えば１つのノード２２−１内に他のノード２２−２〜２２−ｎのキャッシュ３２の容量の合計に相当する容量を確保することが難しい場合もある。このような場合には、ディレクトリ４５の少なくとも一部を外部メモリに格納すれば良い。この場合、例えば１つのノード２２−１の外部メモリへのアクセスには比較的時間がかかるので、ディレクトリ４５の少なくとも一部を外部メモリに格納する場合には、ディレクトリ４５をキャッシュする方式を併用してアクセス時間を短縮することが望ましい。【００３２】
ディレクトリ４５の容量は、リモートノードのキャッシュ容量を示すことができれば充分であるため、一般のｃｃＮＵＭＡ方式のマルチプロセッサシステムで行われているようにＤＩＭＭ３２にディレクトリ情報を格納しても良いが、キャッシュタグ４４と同様に小容量の高速なＲＡＭ等に格納しても良い。後者のようにディレクトリ情報を格納するのに高速アクセス可能なＲＡＭを使用することで、ローカルアクセスであるか、或いは、リモートアクセスであるかの判別を高速に行うことができる。【００３３】
図６は、メモリアクセス制御を説明するフローチャートである。ディレクトリ４５は、リモートノードのプロセッサからのメモリアクセス（即ち、リモートアクセス）があった場合に、メモリアクセスで要求されたデータがリモートノードのキャッシュに持ち出されていることを示す持ち出され情報を格納する。メモリアクセス制御は、このディレクトリ４５を利用して次のように行われる。【００３４】
例えばローカルノード２２−１のプロセッサ４１からのメモリアクセス（即ち、ローカルアクセス）の場合、ローカルアクセスが要求するアドレスでのキャッシュミス時にディレクトリ４５を索引し、ディレクトリ４５に持ち出され情報が格納されていないときにはローカルメモリであるローカルノード２２−１内のＤＩＭＭ３２からデータを読み出すことで、ローカルメモリへのメモリアクセスを高速化する。【００３５】
一方、上記以外の場合、ディレクトリ４５を用いずに周知のＳＭＰ方式のマルチプロセッサシステムと同様のグローバルスヌープ処理を行うことで、ｃｃＮＵＭＡ方式のデメリットであるコピーバックの遅さを補う。つまり、周知のＳＭＰ方式のマルチプロセッサシステムと同様の動作をすることで、ＳＭＰ方式のメリットである、メモリ及びキャッシュメモリに対するフラットな（平等な）アクセスと、コピーバックが遅くならないというメリットを得ることができる。尚、「上記以外の場合」とは、例えばリモートノード２２−ｎのプロセッサ４１からのメモリアクセス（即ち、リモートアクセス）があった場合、或いは、ローカルアクセスが要求するアドレスでのキャッシュミス時にディレクトリ４５を索引した際にディレクトリ４５に持ち出され情報が格納されている場合である。【００３６】
図６の処理は、例えばローカルノード２２−１のプロセッサ４１からのメモリアクセス（即ち、ローカルアクセス）の場合、ローカルアクセスが要求するアドレスでのキャッシュミスが発生すると開始される。ステップＳ１は、メモリアクセスがローカルメモリ宛か（即ち、ローカルノード２２−１のＤＩＭＭ３２宛か）否か（リモートメモリ宛）を判定する。ステップＳ１の判定結果がＹＥＳであると、ステップＳ２は、ローカルノード２２−１のディレクトリ４５を索引する。ステップＳ３は、ディレクトリヒットであるか否かを判定する。ステップＳ３の判定結果がＮＯであると、ステップＳ４はローカルノード２２−１のＤＩＭＭ３２（ローカルメモリ）のデータを同じローカルノード２２−１のキャッシュ４３に転送し、処理は終了する。【００３７】
一方、ステップＳ１の判定結果がＮＯ、或いは、ステップＳ３の判定結果がＹＥＳであると、ステップＳ５は、ローカルノード２２−１のプロセッサ４１に周知のＳＭＰ方式のマルチプロセッサシステムと同様のグローバルスヌープ処理を要求する。ステップＳ６は、周知のＳＭＰ方式のマルチプロセッサシステムと同様のグローバルスヌープ処理を行い、処理は終了する。【００３８】
図７は、マルチプロセッサシステムの動作の一例を説明するフローチャートである。図７中、図６と同一ステップには同一符号を付し、その説明は省略する。【００３９】
図７において、ステップＳ６の後、ステップＳ７は、ＳＣ２１内のタグコピー５１にヒットしたか否かを判定する。ステップＳ７の判定結果がＹＥＳであると、ステップＳ８は、メモリアクセスにより要求されたデータをヒットしたタグコピー５１の元となるキャッシュタグ４４を有する例えばリモート（又は、オーナー）ノード２２−３のキャッシュ４３からローカルノード２２−１のキャッシュ４３へ転送するキャッシュ間転送処理を行う。ステップＳ９は、メモリアクセスが排他型要求であるか否かを判定し、判定結果がＮＯであると処理は終了する。メモリアクセスが排他型要求であるか否かは、例えば図１０と共に後述するディレクトリ４５のシェアビットを用いて判定可能である。ステップＳ９の判定結果がＹＥＳであると、ステップＳ１０は、ローカルノード２２−１のディレクトリ４５のエントリを無効化（或いは、削除）し、処理は終了する。【００４０】
一方、ステップＳ７の判定結果がＮＯであると、ステップＳ１１は、メモリアクセスを例えばホームノード２２−２へ要求し、ステップＳ１２は、ホームノード２２−２のキャッシュタグ４４を索引する。ステップＳ１３は、ホームノード２２−２のキャッシュタグ４４にヒットしたか否かを判定し、判定結果がＮＯであると処理はステップＳ１４へ進み、判定結果がＹＥＳであると処理はステップＳ１５へ進む。ステップＳ１４は、ホームノード２２−２のＤＩＭＭ３２のデータを要求元であるローカルノード２２−１のキャッシュ４３へ転送する。ステップＳ１５は、ホームノード２２−２のキャッシュ４３のデータを要求元であるローカルノード２２−１のキャッシュ４３へ転送する。ステップＳ１４又はＳ１５の後、ステップＳ１６は、ホームノード２２−２のディレクトリ４５のエントリに、メモリアクセスで要求されたデータがローカルノード２２−１のキャッシュ４３に持ち出されていることを示す持ち出され情報を格納する、ディレクトリエントリ登録を行い、処理は終了する。【００４１】
図８は、マルチプロセッサシステムの各部の動作の一例を説明するフローチャートである。図８中、図７と同一ステップには同一符号を付し、その説明は省略する。【００４２】
図８において、「ローカル」と区分けされたステップＳ１〜Ｓ５は、周知のｃｃＮＵＭＡ方式のマルチプロセッサシステムにおけるローカルノードが行う処理に相当する。「グローバル」と区分けされたステップＳ６，Ｓ７，Ｓ１１は、周知のＳＭＰ方式のマルチプロセッサシステムにおけるグローバルスヌープ処理に相当する。「リモート」と区分けされたステップＳ８〜Ｓ１０は、周知のｃｃＮＵＭＡ方式のマルチプロセッサシステムにおけるリモート（又は、オーナー）ノードが行う処理に相当する。「ホーム」と区分けされたステップＳ１２〜Ｓ１６は、周知のｃｃＮＵＭＡ方式のマルチプロセッサシステムにおけるホームノードの処理に相当する。【００４３】
このように、キャッシュミスのアドレスより、メモリアクセスで要求されるデータが格納されているメモリがローカルメモリ（ＤＩＭＭ）のときは、先ずキャッシュミス時にローカルノードのディレクトリを参照し、ディレクトリミスした場合はローカルメモリからデータを取得する。【００４４】
ディレクトリヒットした時は、他のノード（リモートノード）のキャッシュがメモリアクセスで要求されるアドレスブロックのデータを持ち出しているので、周知のＳＭＰ方式のマルチプロセッサシステムと同様のグローバルスヌープ処理を行い、データを持ち出しているキャッシュを割り出して対処する。このグローバルスヌープ処理による対処方法自体は既知である。【００４５】
キャッシュミスしたメモリアクセスが共有型要求であるロードミス（Load Miss）の場合は、データを持ち出しているリモートノードのキャッシュは、データをそのまま格納し続ける。この場合、ディレクトリの情報は変更されない。【００４６】
一方、キャッシュミスした要求が排他型要求であるストアミス（Store Miss）の場合は、ローカルノードのキャッシュが排他権を主張することになるので、データを持ち出しているリモートノードのキャッシュに関するローカルノードのディレクトリのエントリは、このリモートノードのキャッシュが格納していたデータをローカルノードのキャッシュに転送した時点で無効化（或いは、削除）される。つまり、ローカルノードのキャッシュ以外にデータを持ち出しているノードが無くなるので、ローカルノードのディレクトリの持ち出され情報を無効化（或いは、削除）する。【００４７】
メモリアクセスがローカルノードではなくリモートノードに格納されたデータを要求しているときは、周知のＳＭＰ方式のマルチプロセッサシステムと同様のグローバルスヌープ処理を行って対処する。グローバルスヌープ処理の結果どのノードのキャッシュも要求されたデータを格納していないことが分かった場合には、オーナーノードのＤＩＭＭから持ち出すことになるので、オーナーノードのディレクトリに持ち出され情報を格納する。リモートノードのメモリへのライトバック等のキャッシュリプレース（消去）動作によってデータの持ち出され状態が解消された場合には、オーナーノードのディレクトリの持ち出され情報を無効化（或いは、削除）する。【００４８】
尚、ローカルメモリアクセスが行われてディレクトリを参照した結果ディレクトリミスとなり、データが持ち出されていない場合には、処理がローカルノード内で完結するので、周知のＳＭＰ方式のマルチプロセッサシステムと同様のグローバルスヌープ処理で用いるタグコピーではローカルノード内の活動を観測できない。つまり、周知のＳＭＰ方式のマルチプロセッサシステムで用いられるタグコピーとは異なり、本実施例におけるタグコピーは完全なる情報を持つことができない。従って、ホームノードからのコピーバックと、ホームノードのメモリリードとは、区別が付かない。しかしながら、グローバルスヌープ処理の結果どのノードのキャッシュもメモリアクセスにより要求されるデータを格納していないように観測される場合には、メモリリードであるとみなしてホームノードに問い合わせを行い、ホームノードのキャッシュタグを参照すれば良い。【００４９】
尚、タグコピーを持たないバススヌープ型ＳＭＰ方式を採用する場合は、ローカルノードのキャッシュタグを随時参照するため、ローカルノード内の活動を常に観測可能であり、タグコピーが完全なる情報を持つ。【００５０】
図９は、ディレクトリ４５の構成方法を説明する図である。図９は、一例としてノード番号＃０（即ち、番号＃０のプロセッサ４１を含むノード）のディレクトリ４５の構成方法を示す。番号＃１〜＃３のプロセッサ４１の情報は、Processor#1〜Processor#3で示す。この例では、自ノード以外のノードは３個あるので、自ノード以外のキャッシュ４３は３個ある。各キャッシュ４３は、2-Way セットアソシアティブ（Set Associative）で、１ＭＢであるものとする。３ノード分の夫々に2-Way分、1-Way当たり８１９２エントリ（１ＭＢ÷６４÷２）を持つようにすると、任意の持ち出され状態を記憶することが可能となる。【００５１】
ディレクトリ４５に情報を登録する際の場所指定のために、アドレスとノード番号とWay番号が必要になる。これらの情報は、ＳＭＰ方式のタグコピーの登録においても必要な情報であるので、本実施例で余分に必要になる情報ではない。ただし、リモートアクセス時のホームノードへの要求時にプロセッサ番号とWay番号をホームノードに伝える必要がある。【００５２】
ディレクトリ４５を図９のように構成すると、データを持ち出していたキャッシュ４３から元のキャッシュ４３へデータがリプレースされてデータを持ち出していたキャッシュ４３からデータが消去される（データの持ち出され状態が解消される）ときに、消去されたアドレスとWay番号とノード番号を持ち出し元のホームノードに伝えることで、簡単にディレクトリ４５のエントリを消去できる。【００５３】
上記の如く、本実施例によれば、ローカルアクセスはｃｃＮＵＭＡ方式と同等の短レイテンシ高スループットを実現でき、リモートアクセスはＳＭＰ方式の長所である、安定したレイテンシ、即ちフラットな（平等な）メモリアクセスを実現できる。これにより、高性能なマルチプロセッサシステム、共有メモリシステムを実現可能となる。【００５４】
ところで、キャッシュコヒーレンシーの制約を守る範囲内で上記実施例を変形することもできる。【００５５】
以下に説明する変形例では、ディレクトリ４５に、持ち出されているデータが排他型か共有、且つ、クリーン（Clean）型の要求によるものかを区別できる情報を持たせる。これにより、ローカルノードのキャッシュ４３がロードミスしたときに、ディレクトリ４５を索引すると共有、且つ、クリーン型のディレクトリヒットを判別可能となる。この場合、データが持ち出されている（ディレクトリヒット）にもかかわらず、周知のＳＭＰ方式のマルチプロセッサシステムと同様のグローバルスヌープ処理を行うこと無く、ローカルメモリから要求されたデータを取得することができる。【００５６】
図１０は、ディレクトリのエントリの他の例を説明する図である。図１０中、図５と同一部分には同一符号を付し、その説明は省略する。本変形例では、図１０に示すように、ディレクトリ４５のエントリにシェア（Share）ビットが更に設けられている。このShareビットは、持ち出されているデータが排他型か共有、且つ、クリーン型の要求によるものかを区別できる情報である。このShareビットオン（On）のときはデータが共有、且つ、クリーン型の要求で持ち出されていることを示し、オフ（off）のときはデータが排他型の要求で持ち出されていることを示す。【００５７】
図１１は、マルチプロセッサシステムの動作の他の例を説明するフローチャートである。図１１中、図７と同一ステップには同一符号を付し、その説明は省略する。【００５８】
図１１において、ステップＳ３の判定結果がＹＥＳであると、ステップＳ２１は、ディレクトリ４５のShareビットを参照することでメモリアクセスの要求が排他型であるか否かを判定する。ステップＳ２１の判定結果がＮＯであると、ステップＳ２２は、ディレクトリ４５のShareビットを参照することでメモリアクセスの要求が共有、且つ、クリーン型であるか否かを判定する。ステップＳ２２の判定結果がＹＥＳであると、処理はステップＳ４へ進む。ステップＳ２１の判定結果がＹＥＳ、或いは、ステップＳ２２の判定結果がＮＯであると、処理はステップＳ５へ進む。【００５９】
ステップＳ９の判定結果がＮＯであると、ステップＳ２３は、ディレクトリ４５のエントリのShareビットが共有、且つ、クリーン型を示していなければ、共有、且つ、クリーン型を示すように変更し、処理は終了する。【００６０】
ステップＳ１４又はＳ１５の後、処理はステップＳ２４へ進む。ステップＳ２４は、ホームノード２２−２のディレクトリ４５のエントリに、メモリアクセスで要求されたデータがローカルノード２２−１のキャッシュ４３に持ち出されていることを示す持ち出され情報を格納する、ディレクトリエントリ登録を行い、処理は終了する。このディレクトリエントリ登録では、要求が共有、且つ、クリーン型であれば、ディレクトリ４５のエントリに共有、且つ、クリーン型を示すShareビットを登録する共有登録を行う。【００６１】
これにより、ローカルノードのキャッシュ４３がロードミス（即ち、共有型メモリ要求のキャッシュミス）をしたときに、ディレクトリ４５を索引し、ディレクトリヒットした場合であっても、ShareビットがであればＳＭＰ方式のグローバルスヌープ処理を行うこと無くローカルメモリからデータを取得する。又、ロードミス（即ち、共有型メモリ要求のキャッシュミス）をしたときに、リモートメモリからデータを取得する場合には、リモートメモリのデータを渡す等の処理でディレクトリ４５のエントリの情報を変更又は登録する際に、Share ビットをオンにすれば良い。
【産業上の利用可能性】
【００６２】
開示の情報処理装置及び情報処理装置のメモリアクセス方法は、キャッシュコヒーレンシーを保つ必要のあるマルチプロセッサシステムや共有メモリシステムに適用可能である。【００６３】
以上、開示の情報処理装置及び情報処理装置のメモリアクセス方法を実施例により説明したが、開示の情報処理装置及び情報処理装置のメモリアクセス方法は上記実施例に限定されるものではなく、開示の内容の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【図１】
2010038301.tif 000003
【図２】
2010038301.tif 000004
【図３】
2010038301.tif 000005
【図４】
2010038301.tif 000006
【図５】
2010038301.tif 000007
【図６】
2010038301.tif 000008
【図７】
2010038301.tif 000009
【図８】
2010038301.tif 000010
【図９】
2010038301.tif 000011
【図１０】
2010038301.tif 000012
【図１１】
2010038301.tif 000013
【手続補正書】
【提出日】平成23年3月28日(2011.3.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
演算処理装置、主記憶装置及び一時記憶装置を有するノードが複数接続された情報処理装置におけるデータ整合性を保つメモリアクセス方法であって、
各ノードに設けられたディレクトリに、データが当該ノードから他のノードの一時記憶装置に持ち出されていることを示す持ち出され情報を格納し、
自ノードの一時記憶装置へのメモリアクセスでキャッシュミスが発生すると、前記メモリアクセスが前記自ノードの主記憶装置宛であるか否かを自ノードで判定するステップと、
前記メモリアクセスが前記自ノードの主記憶装置宛であると判定されると前記ディレクトリを索引してディレクトリヒットが発生したか否かを前記自ノードで判定するステップと、
前記ディレクトリヒットが発生しなかったと判定されると前記メモリアクセスに基づいてメモリアクセスを前記自ノードで行うステップと、
前記メモリアクセスが前記自ノードの主記憶装置宛でないと判定されるか、或いは、前記ディレクトリヒットが発生したと判定されると、前記メモリアクセスに基づいて全てのノードに対してスヌープを行うグローバルスヌープ処理を前記自ノードから他のノードに対して行うステップ
を含むメモリアクセス方法。
【請求項２】
さらにタグコピーを有し、
前記グローバルスヌープ処理を前記自ノードから他のノードに対して行うステップは、前記タグコピーを索引してから前記グローバルスヌープ処理を行う、請求項１記載のメモリアクセス方法。
【請求項３】
各ノードにおいて、前記ディレクトリは当該ノード以外の全てのノードの一時記憶装置の容量を包含する数の更新可能なエントリを有し、
前記エントリは、アドレスを索引情報としたステータス、アドレスブロックを関連付けるためのアドレスタグと、エラー訂正コードを含み、前記ステータスは前記ディレクトリが有効であるか無効であるかを示す、請求項１又は２記載のメモリアクセス方法。
【請求項４】
各ノードにおいて、データが当該ノードから他のノードの一時記憶装置に持ち出されている持ち出され状態が解消されると、前記ディレクトリの持ち出され情報を無効化するステップを更に含む、請求項１又は２記載のメモリアクセス方法。
【請求項５】
前記グローバルスヌープ処理を前記自ノードから他のノードに対して行うステップは、前記メモリアクセスで要求されているデータを管理する管理ノード以外のノードの一時記憶装置には格納されていないと判定すると、前記管理ノードのタグ情報を参照する、請求項２記載のメモリアクセス方法。
【請求項６】
前記ディレクトリは、持ち出されているデータが排他型か共有型の要求によるものかを区別する共有情報を含み、
前記ディレクトリヒットが発生したと判定され、前記ディレクトリを索引して前記共有情報からデータが共有型の要求で持ち出されていると判定されると、前記自ノードの主記憶装置からデータを取得するステップと、
排他型のコピーバックによる一時記憶装置間のデータ転送が発生し、前記ディレクトリを索引して前記共有情報からデータが排他型の要求で持ち出されていると判定されると、前記管理ノードのディレクトリの持ち出され情報を無効化するステップ
を更に含む請求項５記載のメモリアクセス方法。
【請求項７】
データ整合性が保たれる情報処理装置であって、
各々が演算処理装置、主記憶装置及び一時記憶装置を有する複数のノードと、
前記複数のノードと接続されるとともに、演算処理装置及び主記憶装置に接続されるメモリ制御装置とを備え、
各ノードは、データが当該ノードから他のノードの一時記憶装置に持ち出されていることを示す持ち出され情報を格納するディレクトリを有し、
自ノードの演算処理装置は、
自ノードの一時記憶装置へのメモリアクセスでキャッシュミスが発生すると、前記メモリアクセスが自ノードの主記憶装置宛であるか否かを判定する第１の判定手段と、
前記第１の判定手段により前記メモリアクセスが前記自ノードの主記憶装置宛であると判定されると前記ディレクトリを索引してディレクトリヒットが発生したか否かを判定する第２の判定手段と、
前記第２の判定手段により前記ディレクトリヒットが発生しなかった判定されると前記メモリアクセスに基づいてメモリアクセスを行うアクセス手段と、
前記第１の判定手段により前記メモリアクセスが前記自ノードの主記憶装置宛でないと判定されるか、或いは、前記第２の判定手段により前記ディレクトリヒットが発生したと判定されると、前記メモリアクセスに基づいて全ての一時記憶装置に対してスヌープを行うグローバルスヌープ処理を他のノードに対して行うスヌープ処理手段を有する、情報処理装置。
【請求項８】
さらにタグコピーを有し、
前記スヌープ処理手段は、前記タグコピーを索引することで前記グローバルスヌープ処理を行う、請求項７記載の情報処理装置。
【請求項９】
前記ディレクトリは、各ノード内の主記憶装置、各ノード内の前記主記憶装置以外の他の主記憶装置、各ノード外の記憶装置のいずれかに格納されている、請求項７又は８記載の情報処理装置。
【請求項１０】
任意の１つのノードにおいて、前記ディレクトリは前記任意のノード以外の全てのノードの一時記憶装置の容量を包含する数の更新可能なエントリを有し、
前記エントリは、アドレスを索引情報としたステータス、アドレスブロックを関連付けるためのアドレスタグと、エラー訂正コードを含み、前記ステータスは前記ディレクトリが有効であるか無効であるかを示す、請求項７又は８記載の情報処理装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
本発明の一観点によれば、演算処理装置、主記憶装置及び一時記憶装置を有するノードが複数接続された情報処理装置におけるデータ整合性を保つメモリアクセス方法であって、各ノードに設けられたディレクトリに、データが当該ノードから他のノードの一時記憶装置に持ち出されていることを示す持ち出され情報を格納し、自ノードの一時記憶装置へのメモリアクセスでキャッシュミスが発生すると、前記メモリアクセスが前記自ノードの主記憶装置宛であるか否かを自ノードで判定するステップと、前記メモリアクセスが前記自ノードの主記憶装置宛であると判定されると前記ディレクトリを索引してディレクトリヒットが発生したか否かを前記自ノードで判定するステップと、前記ディレクトリヒットが発生しなかったと判定されると前記メモリアクセスに基づいてメモリアクセスを前記自ノードで行うステップと、前記メモリアクセスが前記自ノードの主記憶装置宛でないと判定されるか、或いは、前記ディレクトリヒットが発生したと判定されると、前記メモリアクセスに基づいて全てのノードに対してスヌープを行うグローバルスヌープ処理を前記自ノードから他のノードに対して行うステップを含むメモリアクセス方法が提供される。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
本発明の一観点によれば、データ整合性が保たれる情報処理装置であって、各々が演算処理装置、主記憶装置及び一時記憶装置を有する複数のノードと、前記複数のノードと接続されるとともに、演算処理装置及び主記憶装置に接続されるメモリ制御装置とを備え、各ノードは、データが当該ノードから他のノードの一時記憶装置に持ち出されていることを示す持ち出され情報を格納するディレクトリを有し、自ノードの演算処理装置は、自ノードの一時記憶装置へのメモリアクセスでキャッシュミスが発生すると、前記メモリアクセスが自ノードの主記憶装置宛であるか否かを判定する第１の判定手段と、前記第１の判定手段により前記メモリアクセスが前記自ノードの主記憶装置宛であると判定されると前記ディレクトリを索引してディレクトリヒットが発生したか否かを判定する第２の判定手段と、前記第２の判定手段により前記ディレクトリヒットが発生しなかった判定されると前記メモリアクセスに基づいてメモリアクセスを行うアクセス手段と、前記第１の判定手段により前記メモリアクセスが前記自ノードの主記憶装置宛でないと判定されるか、或いは、前記第２の判定手段により前記ディレクトリヒットが発生したと判定されると、前記メモリアクセスに基づいて全ての一時記憶装置に対してスヌープを行うグローバルスヌープ処理を他のノードに対して行うスヌープ処理手段を有する情報処理装置が提供される。
【国際調査報告】
2010038301.tif 000014
2010038301.tif 000015
2010038301.tif 000016
2010038301.tif 000017