(57)【要約】  複数のキャッシュラインのステータスを記憶し、１回のリードにより複数のキャッシュラインのステータスをリード可能な状態記憶部１２と、少なくとも１つのノードにある前記システムコントローラに設けられ、前記状態記憶部にあるステータスの全部又は一部を記録する記録部２０とを備え、あるリクエストを契機に前記状態記憶部をリードしたときに、前記状態記憶部のリードによって得られる複数キャッシュラインのステータスが他ノードで少なくとも全て無効状態又は共有状態であれば前記記録部に記録する。
2012039008.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサと、システムコントローラと、メインメモリとを含む複数のノードを備える情報処理装置であって、
複数のキャッシュラインのステータスを記憶し、１回のリードにより複数のキャッシュラインのステータスをリード可能な状態記憶部と、
少なくとも１つのノードにあるシステムコントローラに設けられ、前記状態記憶部が記憶するステータスの全部又は一部を記録する記録部と、
を備え、あるリクエストを契機に前記状態記憶部をリードしたときに、前記状態記憶部のリードによって得られる複数キャッシュラインのステータスが他ノードで全て無効状態又は共有状態であれば、得られたステータスを前記記録部に記録することを特徴とする情報処理装置。
【請求項２】
他ノードから自ノードへのリクエストがあった場合に、該リクエストが最終的にデータをキャッシュする種類のリクエストであって、前記記録部の記録に当該リクエストのステータスが含まれていれば、該ステータスを前記記録部から削除することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記システムコントローラは、リクエストを契機に前記状態記憶部にあるステータスをリードし、リードしたステータスが、リクエスト対象のデータがプロセッサにキャッシュされていないことを示していれば、前記データが他ノードに所有されていないことを示す情報を前記記録部に記録することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記システムコントローラは、前記プロセッサから前記メインメモリにリード要求が発行された場合、該リード要求がデータのキャッシュを生じさせるリクエストであれば、前記リクエストが示すアドレスを前記記録部から削除することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記記録部は、１つのステータスに複数のキャッシュラインを記録し、前記ステータスに複数のノードが全て無効となるステータスを有することを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記記録部は、記録されるステータスに、複数のキャッシュラインの全てのステータスが共通又は無効であるステータスを有することを特徴とする、請求項３に記載の情報処理装置。
【請求項７】
前記システムコントローラは、あるリクエストを契機に前記状態記憶部をリードし、リードしたアドレスのステータスが、リクエスト処理後、前記記録部に管理されているプロセッサが無効になり、同時にリードした複数のキャッシュラインのステータスが前記プロセッサの全てで無効であることを表している場合、無効であることを前記記録部に記録することを特徴とする、請求項３又は４に記載の情報処理装置。
【請求項８】
あるリクエストを契機に前記状態記憶部をリードした場合、リードした状態記憶部のアドレスのステータスを含む同時に読めた複数のノードで、前記記録部で管理されているプロセッサの全てが無効であり、且つ、そのアドレスのステータスが前記リクエスト処理後に変化しない場合には、前記記録部に記録することを特徴とする、請求項１に記載の情報処理装置。
【請求項９】
前記記録部が管理していないプロセッサからノード内の前記メインメモリへの排他権を必須としないリード要求を契機に前記状態記憶部をリードした場合、そのアドレスを含む同時に読めた複数キャッシュラインのステータスが前記記録部に管理されている前記プロセッサの全てが無効又は共通であれば、前記記録部に記録することを特徴とする請求項１に記載の情報処理装置。
【請求項１０】
前記記録部で管理されているプロセッサからノード内の前記メインメモリにリード要求を発行した場合、このリード要求が最終的にデータをキャッシュするリクエストであって、前記記録部に前記アドレスを含む複数のキャッシュラインの情報が記録されていれば、該情報を前記記録部から削除することを特徴とする、請求項１に記載の情報処理装置。
【請求項１１】
前記状態記憶部を第１の状態記憶部とし、該第１の状態記憶部の記憶内容をキャッシュする第２の状態記憶部を有し、前記第１の状態記憶部が管理しているプロセッサと前記記録部が管理しているプロセッサが同じであって、前記ステータスが無効であれば、前記第１の状態記憶部をリードせずに、複数のノードの全てのステータスが無効であることを前記第２の状態記憶部に記録した後、リクエストを処理することを特徴とする、請求項１に記載の情報処理装置。
【請求項１２】
あるリクエストを契機に前記記録部と前記第２の状態記憶部がリードミスとなり、前記第１の状態記憶部をリードした場合に、前記記録部と前記第２の状態記憶部の何れかに記録することを特徴とする、請求項１１に記載の情報処理装置。
【請求項１３】
リプレースにより前記第２の状態記憶部から追出される複数のノードの全てのステータスが無効であった場合、前記記録部に無効を記録することを特徴とする、請求項１１に記載の情報処理装置。
【請求項１４】
リプレースにより前記第２の状態記憶部から追出されるノードの全てのステータスが無効状態又は共有状態であった場合、前記記録部に無効状態又は共有状態を記録することを特徴とする、請求項１１に記載の情報処理装置。
【請求項１５】
あるプロセッサからノード内のメインメモリにリード要求を発行した場合に、前記記録部で無効状態でヒットしたら、前記記録部で管理しているプロセッサへスヌープを実施しないことを前記状態記憶部のリードなしで判断することを特徴とする、請求項１１に記載の情報処理装置。
【請求項１６】
前記記録部が管理していないプロセッサからノード内のメインメモリに排他権を必須としないリード要求を発行した場合に、前記記録部に無効状態又は共有状態でヒットしたら、ノード外のスヌープを実施しないことを前記状態記憶部のリードなしで判断し、リード要求元を共有状態で処理を完了させることを特徴とする、請求項１に記載の情報処理装置。
【請求項１７】
前記状態記憶部の１回のリード動作により読める複数のノードのステータスがカバーする領域がプロセッサのミニマムページサイズ以上の領域であれば、前記状態記憶部のリード結果を前記記録部にミニマムページサイズ以下にスライスし、スライスされた数のステータスで前記記録部に記録して管理することを特徴とする、請求項１に記載の情報処理装置。
【請求項１８】
少なくとも１つのプロセッサと、システムコントローラと、メインメモリとを含む複数のノードを備える情報処理装置のメモリ制御方法であって、
複数のキャッシュラインのステータスを記憶し、１回のリードにより複数のキャッシュラインのステータスをリード可能な状態記憶部を、あるリクエストを契機にリードし、キャッシュラインのステータスをリードするステップと、
前記状態記憶部のリードによって得られる複数キャッシュラインのステータスが他ノードで少なくとも全て無効状態又は共有状態であれば記録部に記録するステップと、
を含むことを特徴とするメモリ制御方法。
【請求項１９】
少なくとも１つのプロセッサと、システムコントローラと、メインメモリとを含む複数のノードを備える情報処理装置のメモリ制御装置であって、
複数のキャッシュラインのステータスを記憶し、１回のリードにより複数のキャッシュラインのステータスをリード可能な状態記憶部を、あるリクエストを契機にリードし、キャッシュラインのステータスをリードするリード部と、
前記状態記憶部のリードによって得られる複数キャッシュラインのステータスが他ノードで少なくとも全て無効状態又は共有状態であれば記録部に記録する記録制御部と、
を備えることを特徴とするメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵ（Central Processing Unit ）を備える大規模な情報処理装置等に用いられるメモリアクセス技術に関する。
【背景技術】
【０００２】
複数のＣＰＵを備える大規模な情報処理装置は、システムコントローラを介在して複数のノードを接続して構成される。システムコントローラ間の接続にはクロスバが用いられる。このような情報処理装置では、メモリ制御のレイテンシが性能に大きく影響する。【０００３】
このメモリ制御に関し、自ノードのメインメモリにある主データに対応するキャッシュデータが、自ノード以外の複数のノードのキャッシュメモリ内に存在しない主データに関する特定情報を保持することが知られている（特許文献１）。【０００４】
メモリ制御に関し、キャッシュのコヒーレンシを保持するためのスヌープ発行数を削減することにより、アクセス要求処理時間を短縮させることが知られている（特許文献２）。【０００５】
また、メモリ制御に関し、キャッシュメモリのデータを管理するＤＡＴＧの他に、対象データが自ノード配下のいずれのキャッシュメモリにも保持されていないことを保持するリテンションタグを有することが知られている（特許文献３）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−２２３７５９公報
【特許文献２】特開２００８−３１０４１４公報
【特許文献３】特開２００６−２０２２１５公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
多数の処理装置をクロスバ接続した大規模な処理システムでは、ＣＰＵが自ノード内のメインメモリに対してリード要求を発行する。自身のキャッシュメモリでミスヒットした場合には、ＣＰＵはリクエスト対象のメモリを管理しているシステムコントローラ内のリクエスト処理部にリード要求を発行する。リード要求を受けたリクエスト処理部はキャッシュＴＡＧと記録部を検索する。この場合、ノード外のＣＰＵがリード対象の情報をキャッシュしているか否かを判断できない場合には、キャッシュＴＡＧを検索するペナルティが発生し、リードレイテンシが延伸する。このペナルティはシステムが拡大するほど大きくなる。【０００８】
またリクエスト処理部は、リード要求に対し、状態記憶部内の情報をリードすることで、リード対象のデータを所有しているＣＰＵを検索する。しかし、状態記憶部には容量制限があり、ヒット率を上げるためには、状態記憶部の物量を大きくしなければならず、コスト増大となる。【０００９】
そこで、本開示の情報処理装置、メモリ制御方法及びメモリ制御装置は、リードレイテンシの延伸を縮小させることにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本開示の情報処理装置は、少なくとも１つのプロセッサと、システムコントローラと、メインメモリとを含む複数のノードを備える情報処理装置であって、状態記憶部と、記録部とを備える。状態記憶部は、複数のキャッシュラインのステータスを記憶し、１回のリードにより複数のキャッシュラインのステータスをリード可能である。記録部は、少なくとも１つのノードにあるシステムコントローラに設けられ、前記状態記憶部が記憶するステータスの全部又は一部を記録する。そして、あるリクエストを契機に前記状態記憶部をリードしたときに、前記状態記憶部のリードによって得られる複数キャッシュラインのステータスが他ノードで全て無効状態又は共有状態であれば、得られたステータスを前記記録部に記録する。【００１１】
そこで、上記目的を達成するため、本開示のメモリ制御方法は、既述の情報処理装置のメモリ制御方法であって、リードステップと、記録ステップとを含む。リードステップでは、複数のキャッシュラインのステータスを記憶し、１回のリードにより複数のキャッシュラインのステータスをリード可能な状態記憶部を、あるリクエストを契機にリードし、キャッシュラインのステータスをリードする。記録ステップでは、前記状態記憶部のリードによって得られる複数キャッシュラインのステータスが他ノードで少なくとも全て無効状態又は共有状態であれば記録部に記録する。【００１２】
上記目的を達成するため、本開示のメモリ制御装置は、既述の情報処理装置のメモリ制御装置であって、リード部と、記録制御部とを含む。リード部は、複数のキャッシュラインのステータスを記憶し、１回のリードにより複数のキャッシュラインのステータスをリード可能な状態記憶部を、あるリクエストを契機にリードし、キャッシュラインのステータスをリードする。また、記録制御部は、前記状態記憶部のリードによって得られる複数キャッシュラインのステータスが他ノードで少なくとも全て無効状態又は共有状態であれば記録部に記録する。
【発明の効果】
【００１３】
本開示の情報処理装置、メモリ制御方法又はメモリ制御装置によれば、次のいずれかの効果が得られる。【００１４】
(1) メモリリードのレイテンシを短縮することができる。【００１５】
(2) 大規模システムを構成する情報処理装置は、メモリリードの平均レイテンシを短縮化できる。【００１６】
(3) メモリリードの平均レイテンシの短縮により、メモリアクセスの高速化を図ることができる。【００１７】
そして、本発明の他の目的、特徴及び利点は、添付図面及び各実施の形態を参照することにより、一層明確になるであろう。
【図面の簡単な説明】
【００１８】
【図１】第１の実施の形態に係る情報処理装置の一例を示す図である。
【図２】情報処理の処理手順の一例を示すフローチャートである。
【図３】第２の実施の形態に係る情報処理装置の一例を示す図である。
【図４】メインメモリ、ＤＩＲ、記録部の構成例を示す図である。
【図５】ＤＩＲのリードデータの使用を示す図である。
【図６】ＤＩＲのリードからＤＩＲ＄への記録を示す図である。
【図７】ＤＩＲのリードから記録部への記録を示す図である。
【図８】記録部のリードデータの使用例を示す図である。
【図９】ＤＩＲ、ＤＩＲ＄及び記録部の比較テーブルを示す図である。
【図１０】アクセス処理の一例を示すフローチャートである。
【図１１】情報処理装置の一実施例を示す図である。
【図１２】ＤＩＲフォーマットの一例を示す図である。
【図１３】情報処理装置の動作例１を示す図である。
【図１４】情報処理装置の動作例２を示す図である。
【図１５】記録部の動作例３を示す図である。
【図１６】記録部の動作例４であるフォーマット及び使用例を示す図である。
【図１７】情報処理装置の動作例５を示す図である。
【図１８】情報処理装置の動作例６を示す図である。
【図１９】情報処理装置の動作例７を示す図である。
【図２０】情報処理装置の動作例８を示す図である。
【図２１】情報処理装置の動作例９を示す図である。
【図２２】情報処理装置の動作例１０を示す図である。
【図２３】情報処理装置の動作例１１を示す図である。
【図２４】情報処理装置の動作例１２を示す図である。
【図２５】情報処理装置の動作例１３を示す図である。
【図２６】情報処理装置の動作例１４を示す図である。
【図２７】情報処理装置の動作例１５を示す図である。
【図２８】他の実施の形態に係るアクセス処理を示すフローチャートである。
【図２９】比較例１を示す図である。
【図３０】比較例２を示す図である。
【発明を実施するための形態】
【００１９】
〔第１の実施の形態〕
【００２０】
第１の実施の形態について、図１を参照する。図１は第１の実施の形態に係る情報処理装置の一例を示している。
【００２１】
この情報処理装置２は、本開示の情報処理装置の一例である。図１の情報処理装置２は、複数のノード４００、４０１を備えるシステムである。斯かるシステムにおいて、ノード４００を自ノードとすれば、ノード４０１は自ノード４００に接続された他ノードである。
【００２２】
一例であるノード４００には、複数のプロセッサ６０、６１・・・６ｎと、システムコントローラ（ＳＣ）８と、メインメモリ１０と、状態記憶部１２が備えられている。プロセッサ６０、６１・・・６ｎ及びＳＣ８は、メインメモリ１０のメモリ制御手段として機能するとともに、状態記憶部１２を読出すリード部、書込みのためのライト部、記録部２０の記録及びその削除を行う記録制御手段として機能する。メインメモリ１０は例えば、ＤＲＡＭ（Dynamic Random Access Memory）で構成される。
【００２３】
状態記憶部１２は、ノード４００内に設置され、ＳＣ８に接続されている。この状態記憶部１２は、ＳＣ８の外部にあって、複数のキャッシュラインのステータスを示す情報を記憶する。状態記憶部１２からは、１回のリードにより複数のキャッシュラインのステータスをリード可能である。
【００２４】
ＳＣ８には記録部２０が備えられる。この記録部２０は、少なくとも１つのノード、例えばノード４００にあるＳＣ８に設けられ、例えば、ＳＲＡＭ（Static  ＲＡＭ）等の記録媒体で構成される。そして、ＳＣ８の内部において、記録部２０は、状態記憶部１２が記憶するステータス情報の全部又は一部を記録する。
【００２５】
このような情報処理装置２では、あるリクエストを契機に状態記憶部１２をリードする。この場合、状態記憶部１２への１回のリードによって複数キャッシュラインのステータス情報が得られる。状態記憶部１２から得られたキャッシュラインのステータスが、他ノード４０１で全て無効状態又は共有状態のいずれかであれば、状態記憶部１２から得られたステータスが記録部２０に記録される。
【００２６】
なお、このようなノード４００の構成は他ノード４０１においても同様にすればよい。また、ノード４００と他ノード４０１とのデータの授受が可能であれば、ノードの構成は同一である必要はなく、構成が異なってもよい。
【００２７】
次に、この情報処理装置２の処理手順について、図２を参照する。図２は情報処理の処理手順の一例を示している。
【００２８】
図２の処理手順は、本開示のメモリ制御方法の一例であって、既述の情報処理装置２のメモリ制御方法の処理手順を示している。
【００２９】
この処理手順では、図２に示すように、システムコントローラ（ＳＣ）８は状態記憶部１２に複数のキャッシュラインのステータス情報を記憶する（ステップＳ１１）。即ち、この結果、メモリアクセスの結果が逐次記憶される。続いて、ＳＣ８は、状態記憶部１２を、あるリクエストを契機にリードし、状態記憶部１２が記憶するキャッシュラインのステータス情報をリードする（ステップＳ１２）。状態記憶部１２からは、既述の通り、１回のリードにより複数のキャッシュラインのステータス情報をリード可能である。
【００３０】
ＳＣ８は次に、状態記憶部１２のリードによって得られた複数キャッシュラインのステータス情報が、他ノードで全て無効状態又は共有状態のいずれかであるかを判断する（ステップＳ１３）。
【００３１】
このステータス情報の判断（ステップＳ１３）において、複数キャッシュラインのステータス情報の全てが他ノードで無効状態又は共有状態のいずれかであれば（ステップＳ１３のＹＥＳ）、ステップＳ１２でリードしたステータス情報を記録部２０に記録する（ステップＳ１４）。複数キャッシュラインのステータス情報の全てが他ノードで無効状態又は共有状態のいずれかでなければ（ステップＳ１３のＮＯ）、ステップＳ１２に戻る。ステップＳ１３の処理を経て、ステップＳ１２でリードしたステータス情報を記録部２０に記録した後、図２の処理を終了する。
【００３２】
一方、ステップＳ１２で得られたキャッシュラインの他ノードのステータスのいずれかが無効状態あるいは共有状態を示していない場合、ステップＳ１２で得られたステータス情報は記録部２０には記録されない。
【００３３】
この実施の形態では、次のような効果が得られる。
【００３４】
(1) メモリリードのレイテンシを短縮できる。
【００３５】
(2) 大規模システムを構成する情報処理装置２にあって、大規模システムのメモリリードの平均レイテンシを短縮する。
【００３６】
(3) メモリリードの平均レイテンシの短縮により、メモリアクセスの高速化に寄与することができる。
【００３７】
また、この実施の形態において、他ノード４０１から自ノード４００へのリクエストがあれば、ノード４００では他ノード４０１からのリクエストの内容を判断する。他ノード４０１からのリクエストが最終的にデータをキャッシュする種類のリクエストであって、記録部２０の記録に当該リクエストのステータスが含まれていれば、該ステータスを記録部２０から削除する。斯かる構成によっても、リードレイテンシの短縮化に寄与する。
【００３８】
〔第２の実施の形態〕
【００３９】
第２の実施の形態について、図３を参照する。図３は情報処理装置の一例を示している。
【００４０】
図３の情報処理装置２は、本開示の情報処理装置の一例である。この情報処理装置２には、図３に示すように、複数のシステムボード（ＳＢ）として例えば、第１のシステムボード（ＳＢ）４０と、第２のシステムボード（ＳＢ）４１とが備えられている。各ＳＢ４０、４１はそれぞれがノードを構成し、ＳＢ４０を自ノードとすれば、ＳＢ４１は他ノード（自ノード以外のノード）である。
【００４１】
ＳＢ４０には、複数のＣＰＵ（Central Processing Unit ）６００、６０１・・・６０ｎと、システムコントローラ（ＳＣ）８０と、メインメモリ１００と、ＤＩＲ１２０とが備えられている。ＳＣ８０には、ＳＢ４１が接続されている。ＳＢ４１には、複数のＣＰＵ６１０、６１１・・・６１ｎと、ＳＣ８１と、メインメモリ１０１と、ＤＩＲ１２１とが備えられている。
【００４２】
ＣＰＵ６００、６０１・・・６０ｎ、６１０、６１１・・・６１ｎにはそれぞれキャッシュメモリ１４が設置されている。各キャッシュメモリ１４は、メインメモリ１００、１０１から読み込んだデータを書き込み、そのデータの活用によりメモリアクセスの高速化のための手段である。
【００４３】
ＳＣ８０は、自ノード、つまり自身が搭載されているＳＢ４０のＣＰＵ６００、６０１・・・６０ｎ、メインメモリ１００及びＤＩＲ１２０や、他ノードつまりＳＢ４１と接続され、自ノード（ＳＢ４０）と他ノード（ＳＢ４１）との間のキャッシュコヒーレンシ（Cache Coherency ）を保証する制御（コヒーレンシ制御）をする。具体的には、ＳＣ８０は、キャッシュメモリ１４とメインメモリ１００との内容の一貫性を保証する制御を行う。ＳＣ８１も同様にＳＢ４１とＳＢ４０との間のコヒーレンシ制御をする。メインメモリ１００、１０１は、データの記憶手段である。
【００４４】
以下、ＳＢ４０に搭載された要素について説明する。
【００４５】
ＤＩＲ１２０は、第１の状態記憶部の一例であって、自ノードのメインメモリ１００のキャッシュラインのステータス（ＭＥＳＩ：Modified Exclusive Shared Invalid ）を記憶し、その情報を管理する。Ｍ（：Modified）は、各ＣＰＵのキャッシュメモリ１４の内容がメインメモリ１００の内容と異なっている変更状態である。Ｅ（：Exclusive ）は、キャッシュメモリ１４の内容とメインメモリ１００の記憶内容とが一致している排他状態である。Ｓ（：Shared）は、キャッシュメモリ１４にもメインメモリ１００と同じキャッシュラインが存在し、メインメモリ１００と内容が一致している共有状態である。Ｉ（：Invalid ）は、キャッシュラインが無効状態である。
【００４６】
ＳＣ８０には、リクエスト処理部１６０と、ＤＩＲ＄１８０と、記録部２００とが備えられている。
【００４７】
ＤＩＲ＄１８０は、第２の状態記憶部の一例であって、ＤＩＲ１２０が記録する情報のうち一部の情報を記録する。
【００４８】
記録部２００は、ＤＩＲ１２０が記録する情報のうちの一部の情報を記録するブロックの一例である。この記録部２００には、自ノード配下のメインメモリ１００が格納する情報を他ノードが所有していないことが記録され、既述の共有状態（Ｓ）及び無効状態（Ｉ）の状態のみが記録される。
【００４９】
以上の構成はＳＢ４０について説明したが、同様にＳＢ４１にも、複数のＣＰＵ６１０、ＣＰＵ６１１・・・ＣＰＵ６１ｎと、システムコントローラ（ＳＣ）８１と、メインメモリ１０１と、ＤＩＲ１２１とが備えられている。また、各ＣＰＵにキャッシュメモリ１４が備えられることや、ＳＣ８１にリクエスト処理部１６１と、ＤＩＲ＄１８１と、記録部２０１とが備えられ、これらの機能についても既述の通りであるので、その説明を省略する。
【００５０】
従って、図３の情報処理装置２では、ＤＩＲ１２０又はＤＩＲ１２１のリードによって複数のキャッシュラインのステータスが読める情報処理装置２が構成される。この情報処理装置２では、記録すべきステータスを圧縮し、少ない物量でステータスを記録部２００に登録することができる。
【００５１】
そして、ＤＩＲ１２０、１２１を有する情報処理装置２に記録部２００、２０１が設置され、記録部２００、２０１への記録の仕方により、リード要求のヒット率を上げ、メモリリードの平均レイテンシを短縮する。
【００５２】
次に、メインメモリ１００、ＤＩＲ１２０及び記録部２００について、図４を参照する。図４のＡはメインメモリの構成例、図４のＢはＤＩＲの構成例、図４のＣは記録部の構成例を示している。
【００５３】
メインメモリ１００は例えば、図４のＡに示すように、ノード内アドレスが２９〔ｂｉｔ〕［２８：０］であって、メインメモリの１キャッシュラインアドレスあたりのサイズを６４［Ｂ］とする。従って、メインメモリ１００は、ノード内アドレスの上位ビット［２８：６］でメインメモリ１００内のアドレスが指定され、アドレス［２８：６］に記録されている６４バイトのデータにアクセスする構成である。
【００５４】
ＤＩＲ１２０は例えば、図４のＢに示すように、１キャッシュラインアドレスにつき、２バイトの領域を持つ構成である。ＤＩＲ内１２０の２バイトの領域に、対応するキャッシュラインアドレスのステータスが記録されている。ノード内アドレスの上位ビット［２８：１１］を用いてＤＩＲ１２０をアクセスし、アドレス［２８：１１］と一致する領域に記録されている情報を読み出すことにより、ＤＩＲ１２０の１回のリードで、複数のキャッシュラインアドレスのステータスを読み込むことが可能な構成である。ＤＩＲ１２０からリードしたステータスは例えば、ノード内アドレスの下位ビットアドレス［１０：６］でデコードされ、メインメモリ１００のアドレスに対応する領域が使用される。
【００５５】
記録部２００は例えば、図４のＣに示すように、モード（ｍｏｄｅ）と、アドレス（ａｄｒｓ）とのフィールド（領域）を持っている。モードは、ＤＩＲ１２０から読み出した３２エントリ全体のステータスを示す情報である。また、アドレスはノード内アドレスの上位ビットに対応する。ＤＩＲ１２０をリードしたとき、ＤＩＲ１２０から読み出した３２ｅｎｔｒｙが全て“ Invalid”、全て“Shared”、又は“ Invalid”と“Shared”との混在の場合、対応するモードとアドレスとが記録部２００に登録される。
【００５６】
また、記録部２００は、アドレス［１９：１１］によりアクセスされ、アドレス［１９：１１］と一致する領域に記録されたモードとアドレスとが記録部２００から読み出される。
【００５７】
(1) あるリクエストに対してＤＩＲ１２０のリードデータの使用
【００５８】
あるリクエストに対するＤＩＲ１２０のリードデータの使用について、図５を参照する。図５はＤＩＲ１２０のリードデータの使用を示している。
【００５９】
図５のＡはＤＩＲ１２０の構成を示している。図５のＢはＤＩＲの領域を示している。あるリクエストがリクエストアドレス［２８：６］で示すデータを要求し、ＤＩＲ１２０をリードする場合には、リクエストアドレスの上位アドレス［２８：１１］を用いてＤＩＲ１２０をリードする。ＤＩＲ１２０をリードすると、アドレス［２８：１１］に対応する３２ｅｎｔｒｙを読めるので、読み出したエントリをリクエストアドレスの下位アドレス［１０：６］でデコーダ２２によりデコードし、リクエストアドレスに対応する領域を確定し、その領域に格納されている情報を使用する。
【００６０】
図５のＣには、１エントリのフォーマットが示され、このフォーマットには、複数の格納部２３、２５、２７が設定される。格納部２３には、図３に示す情報処理装置２が有する８個のＣＰＵ６００、６０１、６０２・・・６０７に対応して、ＣＰＵ０、ＣＰＵ１、ＣＰＵ２・・・ＣＰＵ７の欄が設定され、格納部２３の各欄には対応するＣＰＵでのキャッシュ状態が格納される。対応するＣＰＵが情報をキャッシュしている場合には、ＣＰＵの欄には“１”が格納され、対応するＣＰＵが情報をキャッシュしていない場合には、ＣＰＵの欄には“０”が格納される。格納部２５は、予備に設定される。また、格納部２７は、排他権情報（exclusive ）が格納される。排他権情報の欄には、キャッシュ状態がExclusive であれば、“１”が格納され、そうでなければ、“０”が格納される。
【００６１】
このような構成及び領域の使用はＤＩＲ１２１についても同様である。
【００６２】
(2) ＤＩＲ１２０のリードからＤＩＲ＄１８０への記録
【００６３】
ＤＩＲ１２０のリードからＤＩＲ＄１８０へのステータス情報の記録について、図６を参照する。図６は、ＤＩＲ１２０のリードからＤＩＲ＄１８０へのステータスの記録を示している。
【００６４】
リクエストアドレス［２８：６］のうち、アドレス［２８：１１］が一致するＤＩＲ１２０の領域に格納されている３２ｅｎｔｒｙを、ＤＩＲ１２０からリードする。続いて、リクエストアドレス［２８：６］のうち、アドレス［１９：１１］が一致するＤＩＲ＄１８０の領域に、リクエストアドレス［２８：６］の上位アドレス［２８：２０］と、リクエストアドレス［２８：１１］に対応するＤＩＲ１２０の領域から読み出したデータとを書き込む。これにより、１アドレスに対して３２ｅｎｔｒｙの状態がＤＩＲ＄１８０により管理される。
【００６５】
(3) ＤＩＲ１２０リードから記録部２００への記録
【００６６】
ＤＩＲ１２０のリードから記録部２００への記録について、図７を参照する。図７はＤＩＲ１２０のリードから記録部２００への記録を示している。
【００６７】
リクエストアドレス［２８：６］のうち、アドレス［２８：１１］が一致するＤＩＲ１２０の領域に格納されている３２ｅｎｔｒｙをリードする。ＤＩＲ１２０から読み出した３２エントリの全てが、それぞれInvalid 又はSharedのどちらかの場合、リクエストアドレス［２８：６］のうち、アドレス［１９：１１］が一致する記憶部２００の領域に、ＤＩＲ１２０から読み出した全エントリのステータスに対応するモードとリクエストアドレスの上位アドレス［２８：２０］とを書き込む。これにより、１アドレスに対してモードにより３２ｅｎｔｒｙ全体の状態を管理することができ、ＤＩＲ＄１８０に対して記録部２００の物量を小さくできる。
【００６８】
あるリクエスト（アクセス要求）を契機にＤＩＲ１２０をリードすると、３２ｅｎｔｒｙ分のデータをＤＩＲ１２０からリードできる。ここで、ＤＩＲ１２０から読み出した３２エントリ全てのステータスを判別し、ＤＩＲ１２０から読み出した３２ｅｎｔｒｙのステータスが全て“ Invalid”の場合、全て“Shared”の場合、又は“ Invalid”と“Shared”の混在の場合、ＤＩＲ１２０を引いたアドレス［２８：１１］のうち、アドレス［１９：１１］で示す記録部２００の領域に、読み出したエントリのステータスに対応するモードの情報とリクエストアドレスの上位アドレス［２８：２０］を格納する。モードの使い方は図１５及び図１６に記載の通りである。
【００６９】
従って、３２ｅｎｔｒｙのステータスが全て“Ｉ”、全て“Ｓ”、又は“Ｉ”と“Ｓ”の混在である情報が記録部２００に格納されることになる。記録部２００は、ＤＩＲ１２０が保持するデータを格納しないので、ＤＩＲ＄１８０と比較し、物量を大幅に削減することができ、しかも、３２ｅｎｔｒｙの状態を管理することができる。ＤＩＲ１２０をリードした結果、３２ｅｎｔｒｙのいずれかのステータスが“Invalid ”又は“Shared”とならない場合には、記録部２００には何も格納しない。
【００７０】
(4) 記録部２００のリードデータの使用例
【００７１】
記録部２００からのリードデータの使用例について、図８を参照する。図８は記録部２００から読み出したリードデータの使用例を示している。
【００７２】
リクエストアドレス［２８：６］のうち、アドレス［１９：１１］と一致する記録部２００の領域のデータをリードする。このアドレス領域から読み出したデータに含まれるアドレスの上位ビット［２８：２０］と、アドレス［１９：１１］とを加算器２４で加算し、アドレス［２８：１１］を生成する。続いて、加算器２４により生成されたアドレスと、リクエストアドレス［２８：６］のうちのアドレス［２８：１１］とを比較器２６で比較する。これらが一致すればヒットである。図８の例ではモードが１０であるから、ＤＩＲ１２０が管理している他ノードのＣＰＵは、リードリクエストの対象となるデータを所有していないことが判明する。モードの値とモードが示している状態について、モードの値はステータスを表し、ステータスが“Invalid ”であれば、モード値が“１０”であり、“Invalid ”又は“Shared”であれば、モード値が“１１”である。このモードの値は記録部２００に記録される。これらは記録部２０１についても同様である。
【００７３】
(5) ＤＩＲ１２０、ＤＩＲ＄１８０及び記録部２００の比較
【００７４】
ＤＩＲ１２０、ＤＩＲ＄１８０及び記録部２００の比較について、図９を参照する。図９はＤＩＲ１２０、ＤＩＲ＄１８０及び記録部２００の比較を示している。
【００７５】
ＤＩＲ１２０、ＤＩＲ＄１８０及び記録部２００の所在位置について、図９に示すように、ＤＩＲ１２０はＳＣ８０の外部即ち、ＳＣ８０のチップ外に設置され、ＤＩＲ＄１８０及び記録部２００はＳＣ８０の内部即ち、ＳＣ８０のチップ内に設置されている。
【００７６】
ＤＩＲ１２０、ＤＩＲ＄１８０及び記録部２００の記録範囲について、ＤＩＲ１２０の記録範囲はメインメモリ１００のアドレス、ＤＩＲ＄１８０及び記録部２００の記録範囲はアドレスの一部である。
【００７７】
また、ＤＩＲ１２０、ＤＩＲ＄１８０及び記録部２００の記録対象について、ＤＩＲ１２０及びＤＩＲ＄１８０にはアドレスに対応するステータス（ＭＥＳＩ）が格納されている。また、記録部２００にはアドレスに対応するステータス（ＳＩ）が格納されている。
【００７８】
次に、記録部２００への情報記録及び記録部２００からの情報削除を説明する。      
【００７９】
(a) 記録部２００への記録
【００８０】
記録部２００の記録方法について、ＳＢ４０の例えば、ＣＰＵ６００が、ＳＢ４０（自ノード）内のメインメモリ１００に対してリード要求を発行する動きを参照する。
【００８１】
ここで、ＣＰＵ６００が自身のキャッシュメモリ１００内にキャッシュするキャッシュラインサイズを例えば、６４〔Ｂｙｔｅ〕とする。ＤＩＲ１２０のエントリは、１キャッシュラインあたり、例えば、２〔Byte〕の領域を持つとすれば、ＤＩＲ１２０へのリード１回当たり、６４〔Byte〕（２〔Byte〕×３２〔entry 〕）のデータが読める。
【００８２】
リード要求に対してＣＰＵ６００のキャッシュメモリ１４でミスヒットした場合は、ＣＰＵ６００はリード要求をリクエスト対象のメインメモリ１００を管理しているＳＣ８０内のリクエスト処理部１６０へ発行する。リクエスト処理部１６０は、ＳＣ８０内のＤＩＲ＄１８０と記録部２００を検索する。ここで、ＤＩＲ＄１８０と記録部２００との両方でミスヒットした場合は、リクエスト処理部１６０はＤＩＲ１２０に対してリードを行う。ＤＩＲ１２０の１回のリードで３２エントリのリードが可能である。ＤＩＲ１２０からリードした結果、リードした３２エントリが、他ノードで全て“ Invalid”、全て“Shared”、又は“ Invalid”と“Shared”とが混在でキャッシュしていることが判明すれば、その旨を記録部２００に記録できる（図７）。記録部２００に記録する情報は、ＤＩＲ＄１８０に記録しても良い。一方、ＤＩＲ１２０からリードした３２エントリのいずれかが、他ノード（ＳＢ４１）で“ Invalid”又は“Shared”でないことを示し、記録部２００にステータスを記録できない場合には、ＤＩＲ＄１８０にステータス情報を記録すればよい。
【００８３】
このように、３２エントリの状態を圧縮して、広範囲のアドレスのデータが他ノードでデータをキャッシュしていないことを記録部２００に記録することができる。記録部２００はＤＩＲ＄１８０に比べて少量のデータで情報を管理することができるので（図６及び図７）、ＤＩＲ＄１８０の物量の一部を記録部２００に割り当てることで、管理する範囲を拡張し、リード要求のヒット率を上げることが可能となる。従って、記録部２００を採用することでリード要求に対するヒット率を上げることが可能となり、不要なＤＩＲ１２０のリードを抑制でき、これにより、リード要求のレイテンシを短縮することができる。ＤＩＲ＄１８０、記録部２００はＳＣ８０内にあるので、記録部２００に対するアクセスは、ＳＣ８０外のＤＩＲ１２０へのアクセスより速い。
【００８４】
(b) 記録部２００からの削除
【００８５】
記録部２００からの情報の削除の動きについて、ＳＢ４０以外の他ノードのＣＰＵ６１０がＳＢ４０内のメインメモリ１００に対してリード要求を発行する動きで説明する。
【００８６】
ＳＢ４１に搭載されたＣＰＵ６１０が自身のキャッシュメモリ１４にキャッシュするキャッシュラインサイズは６４〔Byte〕とし、ＤＩＲ１２０のエントリは１キャッシュラインあたり２〔Byte〕の領域を持つものとし、ＤＩＲ１２０へのリードにより、１回あたり６４〔Byte〕（＝２〔Byte〕×３２〔entry 〕）のデータが読めるものとする。
【００８７】
ＣＰＵ６１０のリード要求に対してＣＰＵ６１０のキャッシュメモリ１４でミスヒットした場合は、ＣＰＵ６１０はリード要求をリクエスト対象のメインメモリ１００を管理しているＳＣ８０内のリクエスト処理部１６０へ発行する。ここで、リード要求が最終的にデータを「Exclusive 」でキャッシュする種類のリクエストであり、かつリード要求の対象のアドレスが記録部２００で記録しているキャッシュラインの中に含まれているときは、記録部２００が管理しているＳＢ４０内のＣＰＵ６１０がデータを新たにキャッシュする。これにより、ＣＰＵ６１０がデータをキャッシュしていなかったことを表す“Invalid ”を表すデータが記録部２００から削除される。
【００８８】
次に、アクセス処理について、図１０を参照する。図１０はアクセス処理の一例を示している。以下、ＳＢ４０内のシステムコントローラ８０が図１０の処理を実行するものとする。
【００８９】
図１０の処理手順は、本開示のメモリ制御方法の一例であって、図１０に示すように、リードリクエストの開始により（ステップＳ１０１）、リードリクエストを受けたシステムコントローラ８０は、受信したリードリクエストが他ノードつまりＳＢ４１から自ノードつまりＳＢ４０向けのリクエストかを判断する（ステップＳ１０２）。
【００９０】
他ノードからの自ノード向けリクエストでなければ、受信したリードリクエストは自ノード内のＣＰＵから自ノード内のメモリに対するリクエストであり、システムコントローラ８０はＤＩＲ＄１８０と記録部２００を検索する（ステップＳ１０３）。ＤＩＲ＄１８０又は記録部２００のいずれか一方がヒットすれば（Ｈｉｔ）、後述のステップＳ１０８又はステップＳ１０９のリード動作の決定（即ち、動作決定）となる（ステップＳ１０４）。
【００９１】
一方、ＤＩＲ＄１８０と記録部２００とのいずれもがヒットしなければ、即ち、ミスであれば（Ｍｉｓｓ）、システムコントローラ８０は自ノードのＤＩＲ１２０をリードし（ステップＳ１０５）、記録されているエントリを読み出して、読み出した３２エントリのステータスが全て“Ｉ”、全て“Ｓ”、又は“Ｉ”と“Ｓ”とが混在であるかを判断する（ステップＳ１０６）。３２エントリのステータスが全て“Ｉ”、全て“Ｓ”、又は“Ｉ”と“Ｓ”との混在であれば（ステップＳ１０６のＹＥＳ）、システムコントローラ８０は記録部２００に必要な情報を書き込み（ステップＳ１０７）、動作決定（ステップＳ１０４）に移行する。また、３２エントリのステータスの少なくとも一つが“Ｉ" でも“Ｓ”でもなければ（ステップＳ１０６のＮＯ）、動作決定（ステップＳ１０４）に移行する。
【００９２】
動作決定（ステップＳ１０４）から、メインメモリのリード（ステップＳ１０８）及び所有先のリード（ステップＳ１０９）を経て、リードリクエストの処理終了となる（ステップＳ１１０）。所有先のリードは、データをキャッシュしているＣＰＵの検索である。
【００９３】
また、Ｓ１０２にて、受信したリードリクエストが他ノードからの自ノード向けリクエストであると判別されれば、他ノード（ＳＢ４１）内のＣＰＵから自ノード内のメインメモリ１００に対するリクエストであり、システムコントローラ８０はＤＩＲ＄１８０と記録部２００とを検索する（ステップＳ１１１）。ＤＩＲ＄１８０又は記録部２００のいずれか一方がヒットすれば（Ｈｉｔ）（ステップＳ１０３と同様）、システムコントローラ８０はリクエストが排他要求であるか否かを判断する（ステップＳ１１２）。リクエストが排他要求であれば（ステップＳ１１２のＹＥＳ）、システムコントローラ８０は記録部２００のリードリクエストに該当するアドレスに記録されている情報（該当アドレス情報）を削除する（ステップＳ１１３）。また、リクエストが排他要求でなければ（ステップＳ１１２のＮＯ）、後述のステップＳ１２２又はステップＳ１２３のリード動作の決定（即ち、動作決定）となる（ステップＳ１１４）。
【００９４】
ステップＳ１１１で、ＤＩＲ＄１８０と記録部２００とがともにヒットしなければ、即ち、ミスであれば（Ｍｉｓｓ）、システムコントローラ８０はＤＩＲ１２０をリードし（ステップＳ１１５）、ＤＩＲ１２０から読み出した３２エントリのステータスが全て“Ｉ”、全て“Ｓ”、又は“Ｉ”と“Ｓ”との混在であるかを判断する（ステップＳ１１６）。３２エントリのステータスが全て“Ｉ”、全て“Ｓ”、又は“Ｉ”と“Ｓ”との混在であれば（ステップＳ１１６のＹＥＳ）、システムコントローラ８０は記録部２００に必要な情報を書き込み（ステップＳ１１７）、リクエストが排他要求であるかを判断する（ステップＳ１１８）。リクエストが排他要求であれば（ステップＳ１１８のＹＥＳ）、システムコントローラ８０は、記録部２００のリードリクエストに該当するアドレスに記録されている情報（該当アドレス情報）を削除し（ステップＳ１１９）、動作決定（ステップＳ１１４）となる。また、リクエストが排他要求でなければ（ステップＳ１１８のＮＯ）、動作決定となる（ステップＳ１１４）。
【００９５】
また、ＤＩＲ１２０から読み出した３２エントリの少なくともいずれか一つのステータスが“Ｉ”又は“Ｓ”でなければ（ステップＳ１１６のＮＯ）、システムコントローラ８０はリクエストが排他要求であるかを判断する（ステップＳ１２０）。リクエストが排他要求であれば（ステップＳ１２０のＹＥＳ）、システムコントローラ８０は、記録部２００のリードリクエストに該当するアドレスに記録された情報（該当アドレス情報）を削除し（ステップＳ１２１）、動作決定となる（ステップＳ１１４）。また、リクエストが排他要求でなければ（ステップＳ１２０のＮＯ）、動作決定となる（ステップＳ１１４）。
【００９６】
動作決定（ステップＳ１１４）から、メインメモリ１００のリード（ステップＳ１２２）及び所有先のリード（ステップＳ１２３）を経てリクエスト終了となる（ステップＳ１２４）。
【００９７】
以上説明したように、大規模システムを構成する情報処理装置２では、メモリリードの平均レイテンシを短縮することができる。
【実施例】
【００９８】
実施例について、図１１を参照する。図１１は情報処理装置の一実施例を示している。図１１において、図３と同一部分には同一符号を付してある。【００９９】
図１１の情報処理装置２では、複数のノードを構成するシステムボードとして、８組のＳＢ４０、４１、４２・・・４７が備えられ、ＳＢ４０、４１、４２・・・４７はクロスバ（ＸＢ）２８に接続されている。図１１の情報処理装置２では、ＳＢ４０を自ノードとすれば、ＳＢ４１・・・４７が複数の他ノードを構成し、これらノードがＸＢ２８で接続されている。各ＳＢ４０、４１、４２・・・４７にはそれぞれ一つずつ、計８個のＣＰＵ６２０、６２１・・・６２７が備えられている。以下、各要素を説明する際、各要素が搭載されているＳＢを「自ノード」、これ以外のＳＢを「他ノード」と称する。【０１００】
システムコントローラ８０の内部には、リクエスト処理部１６０、ＤＩＲ＄１８０、記録部２００が備えられ、システムコントローラ８０の外部にはＤＩＲ１２０が備えられる。【０１０１】
リクエスト処理部１６０は、リクエストの種類や、キャッシュの状態により、リクエストの処理を判断する。ＤＩＲ＄１８０には、ＤＩＲ１２０が保持する情報のうちの一部の情報が保持される。記録部２００には、自ノード（ＳＢ４０）配下のメインメモリ１００が保持する情報の全部又は一部を他ノードのキャッシュメモリが所有していないことを示す情報が記録される。【０１０２】
ＤＩＲ１２０は、自ノード内の例えば、メインメモリ１００が保持する情報の全部又は一部をどのような状態で各ＣＰＵがキャッシュしているかを示す情報を保持する。なお、ＤＩＲ１２０はメインメモリ１００の一部の領域で構成しても良い。【０１０３】
記録部２００が情報を記録するＣＰＵと、ＤＩＲ１２０が管理するＣＰＵは同一でも良いし、異なっていても良い。【０１０４】
この情報処理装置２において、各ＣＰＵ６２０、６２１・・・６２７が自身のキャッシュメモリ１４にキャッシュするキャッシュラインサイズは例えば、６４〔Byte〕とする。ＤＩＲ１２０のエントリが１キャッシュライン当たり例えば、２〔Byte〕の領域を持つものとすれば、ＤＩＲ１２０へのリードにより、リード１回あたり例えば、６４〔Byte〕のデータが読める。【０１０５】
また、ＣＰＵ６２０、６２１・・・６２７の持つキャッシュメモリ１４のキャッシュ状態は、Modified、Exclusive 、Shared、Invalid のいわゆるＭＥＳＩプロトコルで管理される。ＤＩＲ１２０、ＤＩＲ＄１８０では、キャッシュの状態が「Exclusive 」、「Shared」、「Invalid 」の３通りで管理される。【０１０６】
ＤＩＲ１２０のフォーマットは、図１２のＡに示すように、複数の格納部３０、３２、３４が設定される。格納部３０には、図１１に示す情報処理装置が有する８個のＣＰＵ６２０、６２１・・・６２７に対応して、ＣＰＵ０、ＣＰＵ１、ＣＰＵ２・・・ＣＰＵ７の欄が設定され、格納部３０の各欄には、対応するＣＰＵでのキャッシュ状態が格納される。対応するＣＰＵが情報をキャッシュしている場合には、ＣＰＵの欄には“１”が格納され、対応するＣＰＵが情報をキャッシュしていない場合にはＣＰＵ欄には“０”が格納される。格納部３２は予備に設定される。格納部３４には、排権情報（exclusive ）が格納されている。排権情報の欄には、キャッシュ状態がExclusive であれば“１”が格納され、そうでなければ“０”が格納される。【０１０７】
これらＤＩＲ１２０の表現方法では、ステータスが「Invalid 」、つまり全てのＣＰＵが情報をキャッシュしていない状態であれば、図１２のＢに示すように、格納部３０にはＣＰＵ０、ＣＰＵ１、ＣＰＵ２・・・ＣＰＵ７＝「０」が格納され、格納部３４には「０」が格納される。【０１０８】
ステータスが「 Shared 」即ち、複数のＣＰＵが同じ情報をキャッシュしている場合には、情報をキャッシュしているＣＰＵに対応する格納部３０の領域に「１」が格納され、格納部３４には「０」が格納される。例えば、ＣＰＵ６とＣＰＵ７とにおいて情報をキャッシュしていれば、図１２のＣに示すように、格納部３０にはＣＰＵ０、ＣＰＵ１、ＣＰＵ２・・・ＣＰＵ５＝「０」、ＣＰＵ６及びＣＰＵ７＝「１」が格納され、格納部３４には「０」が格納される。【０１０９】
また、ステータスが「Exclusive 」即ち単一のＣＰＵのみが情報をキャッシュしている場合、情報をキャッシュしているＣＰＵに対応する格納部３０の欄には「１」が格納され、格納部３４には「Exclusive 」を示す「１」が格納される。例えば、ＣＰＵ７のみが情報をキャッシュしていれば、図１２のＤに示すように、格納部３０にはＣＰＵ０、ＣＰＵ１、ＣＰＵ２・・・ＣＰＵ６＝「０」、ＣＰＵ７＝「１」が格納され、格納部３４には「１」が格納される。【０１１０】
〔動作例１〕【０１１１】
動作例１について、図１３を参照する。図１３は情報処理装置の動作例１を示している。図１３において、図１１と同一部分には同一符号を付してある。【０１１２】
図１３の情報処理装置２では、複数のノードを構成するシステムボードとして、８組のＳＢ４０、４１、４２・・・４７が備えられ、ＳＢ４０、４１、４２・・・４７はＸＢ２８に接続されている。各ＳＢ４０、４１、４２・・・４７にはそれぞれ一つのＣＰＵ６２０、６２１・・・６２７が備えられている。【０１１３】
システムコントローラ８０の内部には、リクエスト処理部１６０及び記録部２００が備えられ、システムコントローラ８０の外部にはＤＩＲ１２０が備えられる。ＳＣ８０、８１・・・８７の記録部２００、２０１・・・２０７には、自ノード配下のメインメモリ１００、１０１・・・１０７が格納する情報を他ノードのキャッシュメモリが所有していないことを示す情報が記録される。【０１１４】
ＤＩＲ１２０、１２１・・・１２７には、自ノード内のメモリ１００、１０１・・・１０７内のデータを、各ＣＰＵがどのような状態でキャッシュしているかを示す情報が保持される。ＤＩＲ１２０、１２１・・・１２７は、自ノードのメインメモリ１００、１０１・・・１０７の一部の領域で構成しても良い。【０１１５】
このような情報処理装置２において、ＣＰＵ６２０がＳＢ４０内のメインメモリ１００に対するリード要求の発行及びその動作を説明する。このリード要求に対してＣＰＵ６２０のキャッシュメモリ１４でミスヒットした場合には、ＣＰＵ６２０はリード要求の要求先を変更する。リクエスト対象であるメインメモリ１００は、ＳＣ８０で管理されているので、ＣＰＵ６２０は自ノードのＳＣ８０内に設けられたリクエスト処理部１６０に対してリード要求を発行する。【０１１６】
ＣＰＵ６２０からのリード要求を受けたリクエスト処理部１６０は、ＤＩＲ１２０と記録部２００とを検索する。リクエスト処理部１６０はＤＩＲ１２０をリードし、リクエスト処理した後、リードリクエストに対応するアドレスのステータスを確認する。ＤＩＲ１２０はＣＰＵ６２０を管理しているので、リクエスト処理部１６０はＣＰＵ６２０の状態を知ることができる。この場合、記録部２００が管理しているＣＰＵ６２０がデータをキャッシュしていないことが判明すれば、記録部２００にそのデータが“ Invalid”となる旨を記録する。この場合、“ Invalid”となるステータスはアドレス単位で記録部２００に記録する。斯かる動作は他のノードにおいても同様である。【０１１７】
〔動作例２〕【０１１８】
動作例２について、図１４を参照する。図１４は情報処理装置の動作例２を示している。図１４において、図１１と同一部分には同一符号を付してある。【０１１９】
この動作例２では、ＣＰＵ６２１がＳＢ４０内のメインメモリ１００に対してリード要求を発行する場合を示している。ＣＰＵ６２１は、システムコントローラ８０の記録部２００に管理されている。【０１２０】
リード要求に対してＣＰＵ６２１のキャッシュメモリ１４でミスヒットした場合には、ＣＰＵ６２１は、リクエスト対象のメインメモリ１００を管理しているＳＣ８０内のリクエスト処理部１６０に対してリード要求を発行する。リード要求が、最終的にデータをキャッシュする種類のリクエストであって、しかも、その要求対象のアドレス（例えば、ａｄｒ＝０）が記録部２００に記録されているとする。この場合には、他ノード（ＳＢ４０）がデータをキャッシュしていることとなるので、そのアドレスに対応する情報を記録部２００から削除する。【０１２１】
〔動作例３〕【０１２２】
動作例３について、図１５を参照する。図１５は記録部の動作例３を示している。【０１２３】
図１５のＡは記録部２００のエントリのフォーマットを示している。このエントリにはモード部３６と、アドレス部３８とが備えられている。モード部３６にはキャッシュ状態を示す情報、つまり、ｍｏｄｅ＝０ｘ又は１ｘが登録される。０ｘ：ｎｕｌｌ、１ｘ：all Ｉである。アドレス部３８には、モード部３６にあるキャッシュ状態を示す情報即ち、ステータスに対応するモードとリクエストアドレスの上位アドレスとが書き込まれる。【０１２４】
図１５のＢは、ＤＩＲ１２０及び記録部２００の使用例を示し、リクエストアドレス［２８：１１］でＤＩＲ１２０を引いた結果得られた３２エントリのステータスが全て" Ｉ" であれば、記録部２００のモード部３６に“１ｘ”を書き込む。一方、ＤＩＲ１２０から得られたエントリのうち、一つでもステータスが“Ｉ”でなければ、記録部２００には何も書き込まない。【０１２５】
ＤＩＲ１２０の１エントリは、既述の通り、１キャッシュライン当たり、２〔Byte〕の領域を使用する。ＤＩＲ１２０の１回当たりのリードは、６４〔Byte〕が可能である。【０１２６】
ＤＩＲ１２０の１回のリードで複数のシステムボード内のＣＰＵ（ブロック）のステータスがリードできる場合には、そのステータスが全て“ Invalid”であれば、ＳＢ４０、４１・・・４７の複数のＳＢ内のＣＰＵが“ Invalid”であることを記録部２００に登録することができる。【０１２７】
この場合、ＤＩＲ１２０のリードにより、２〔Byte〕×３２分のブロックをリードすることができる。ＤＩＲ１２０はキャッシュライン当たりのステータスを表すものであるから、６４〔Byte〕×３２＝２〔ｋByte〕分の領域のステータスをまとめて記録部２００に登録することが可能である。【０１２８】
〔動作例４〕【０１２９】
動作例４について、図１６を参照する。図１６は記録部の動作例４であるフォーマット及び使用例を示している。【０１３０】
この動作例４は、記録部２００の記録形式にステータス"Shared " 又は"Invalid "と"Shared"混在を追加している。【０１３１】
記録部２００のフォーマットのモード部３６には、図１６のＡに示すように、例えば、ステータスとして全て“Ｓ”又は“Ｉ”と“Ｓ”の混在（ａｌｌ  ＩｏｒＳ）を追加する。ＤＩＲ１２０の１回のリードで読める複数のブロックが全て“Ｉ”であれば、ＤＩＲ１２０のリード時のアドレス情報をアドレス部３８に書き込むとともに、“１０”をモード部３６に書き込む。【０１３２】
ＤＩＲ１２０の１回のリードで読める複数のブロックが“Ｓ”又は“Ｉ”と“Ｓ”混在であれば、図１６のＢに示すように、ＤＩＲ１２０のリード時のアドレス情報をアドレス部３８に、“１１”をモード部３６に書き込む。【０１３３】
このようなステータスビットの追加により、ＤＩＲ１２０の１回のリードで読める複数のブロックが全て“Ｉ”の場合だけでなく、全て“Ｓ”又は“Ｉ”と“Ｓ”混在の場合にも、記録部２００にステータスを記録することができる。【０１３４】
〔動作例５〕【０１３５】
動作例５について、図１７を参照する。図１７は動作例５を示している。【０１３６】
ＤＩＲ１２０は、あるリクエストをトリガにリードされる。同時に読めた記録部２００で管理しているＣＰＵのステータスのうち、リクエストを行ったＣＰＵのステータスを除くステータスの全てが“Ｉ”であり、このリクエストが最終的に“ Invalid”になるリクエストであれば、同時に読めた３２エントリは全て“ Invalid”となる。この場合、記録部２００にステータスを登録することが可能である。【０１３７】
〔動作例６〕【０１３８】
この動作例６について、図１８を参照する。図１８は動作例６を示している。【０１３９】
あるリクエストを契機にＤＩＲ１２０をリードしたときに、同時に読めた記録部２００で管理しているＣＰＵの全てのステータスが“Ｉ”であり、このリクエスト処理の後も、全てのステータスが“Ｉ”となっている場合には、同時に読めた３２ｅｎｔｒｙは、全てのステータスが“ Invalid”となる。この場合、記録部２００にステータスを登録することが可能である。【０１４０】
〔動作例７〕【０１４１】
動作例７について、図１９を参照する。図１９は動作例７を示している。【０１４２】
記録部２００に管理されていないＣＰＵ６２０からリード要求があり、このリード要求をトリガにＤＩＲ１２０がリードされる。この場合、同時に読めた記録部２００に管理されているＣＰＵのエントリの全てのステータスが“Ｉ”又は“Ｓ”であれば、同時に読めた３２ｅｎｔｒｙは全て“Ｉ”又は“Ｓ”となる。この場合、記録部２００に登録することが可能となる。【０１４３】
〔動作例８〕【０１４４】
動作例８について、図２０を参照する。図２０は動作例８を示している。【０１４５】
ＣＰＵ６２１がＳＢ４０内のメインメモリ１００に対してリード要求を発行する場合である。ＣＰＵ６２１は記録部２００で管理されているものとする。【０１４６】
リード要求に対してＣＰＵ６２１のキャッシュメモリ１４でミスヒットした場合には、ＣＰＵ６２１は、リクエスト対象のメインメモリ１００を管理しているＳＣ８０内にあるリクエスト処理部１６０に対してリード要求を発行する。このリード要求が最終的にデータをキャッシュする種類のリクエストであれば、ＳＣ８０はリード要求の対象のアドレスが記録部２００で記録しているキャッシュラインの中に含まれているかを判断する。要求対象のアドレスが記録部２００に記録されたのキャッシュライン中に含まれていれば、記録部２００の管理下にあるＣＰＵ６２０がデータをキャッシュしていることとなる。この場合、ＳＣ８０は記録部２００から要求対象データに関する情報を削除する。【０１４７】
〔動作例９〕【０１４８】
動作例９について、図２１を参照する。図２１は動作例９を示している。【０１４９】
記録部２００に管理されているＣＰＵ６２０がリード要求を契機に、データをキャッシュし、記録部２００からリード要求データに関連する情報を削除する場合がある。この場合、削除するキャッシュラインのステータスが“Ｉ”であれば、記録部２００に記録されているキャッシュラインのステータスを３２ｅｎｔｒｙのステータスに解凍／展開し、各々のステータスをＤＩＲ＄１８０の対応するエントリに登録する。従って、動作例９では、ＤＩＲ１２０からステータスのリードを行なう必要がなく、記録部２００からＤＩＲ＄１８０にステータスを記録するので、メモリリードのレイテンシが短縮できる。【０１５０】
〔動作例１０〕【０１５１】
動作例１０について、図２２を参照する。図２２は動作例１０を示している。【０１５２】
動作例１０は、ＣＰＵ６２０が自ノードであるＳＢ４０内のメインメモリ１００に対してリード要求を発行する場合の動作である。【０１５３】
リード要求に対してＣＰＵ６２０のキャッシュメモリ１４でミスヒットした場合は、ＣＰＵ６２０はそのリード要求をＳＣ８０内のリクエスト処理部１６０に対して発行する。リクエスト処理部１６０はＳＣ８０内のＤＩＲ＄１８０と記録部２００を検索する。ＤＩＲ＄１８０と記録部２００でミスヒットとなった場合には、ＳＣ８０はＤＩＲ１２０をリードする。ＳＣ８０は、ＤＩＲ１２０をリードして得られた情報を、ＤＩＲ＄１８０又は記録部２００に登録する。【０１５４】
〔動作例１１〕【０１５５】
動作例１１について、図２３を参照する。図２３は動作例１１を示している。【０１５６】
この場合、ＤＩＲ１２０が管理しているＣＰＵと、記録部２００が管理しているＣＰＵは共通であるとする。【０１５７】
ＤＩＲ１２０からリードした３２エントリをＤＩＲ＄１８０に登録する場合、ＤＩＲ＄１８０に空きがなければ、ＤＩＲ＄１８０に空きを生成させる。即ち、ＤＩＲ＄１８０にある古いデータを追い出すための処理として、ＤＩＲ＄１８０のリプレースを行う。ここで、リプレースされた６４〔Byte〕の情報のステータスが全て“ Invalid”であれば、複数のブロックのステータスが“ Invalid”であることを記録部２００に登録する。【０１５８】
〔動作例１２〕【０１５９】
動作例１２について、図２４を参照する。図２４は動作例１２を示している。【０１６０】
この場合も、ＤＩＲ１２０が管理しているＣＰＵと、記録部２００が管理しているＣＰＵは共通である。【０１６１】
ＤＩＲ１２０からリードした３２エントリをＤＩＲ＄１８０に登録する場合、ＤＩＲ＄１８０に空きがなければ、ＤＩＲ＄１８０に空きを生成させる。即ち、古いデータの追い出しのため、ＤＩＲ＄１８０のリプレースを行う。リプレースされた６４〔Byte〕の情報のステータスが全て“Shared”又は“ Invalid”と“Shared”混在であれば、複数のブロックが“Shared”又は“ Invalid”と“Shared”混在であることを記録部２００に登録する。【０１６２】
〔動作例１３〕【０１６３】
動作例１３について、図２５を参照する。図２５は動作例１３を示している。【０１６４】
この場合も、ＤＩＲ１２０が管理しているＣＰＵと、記録部２００が管理しているＣＰＵは共通である。【０１６５】
動作例１３は、ＣＰＵ６２０がＳＢ４０内のメインメモリ１００に対してリード要求（ａｄｒ  １００番地）を発行する場合の動作である。【０１６６】
リード要求に対し、ＣＰＵ６２０のキャッシュメモリ１４でミスヒットした場合には、ＣＰＵ６２０は、リード要求をＳＣ８０内のリクエスト処理部１６０に対して発行する。リード要求を受けたリクエスト処理部１６０はＳＣ８０内のＤＩＲ＄１８０と記録部２００を検索する。ここで、図２５の例では、記録部２００はアドレス１００番地の情報を格納しており、記録部２００で管理されているＣＰＵ６２０はリード要求の対象となるデータをキャッシュしていない旨の情報を登録している。即ち、記録部２００に記録されているアドレス１００番地のモードはmode１０＝all I である。そこでＳＣは、記録部２００が管理しているＣＰＵへのリード抑制について、ＤＩＲ１２０をリードすることなく判断できる。従って、ＤＩＲ１２０のリード抑制によりリード要求によるレイテンシを短縮できる。【０１６７】
〔動作例１４〕【０１６８】
動作例１４について、図２６を参照する。図２６は動作例１４を示している。【０１６９】
この場合も、ＤＩＲ１２０が管理しているＣＰＵと、記録部２００が管理しているＣＰＵは共通であるが、ＣＰＵ６２０は記録部２００で管理されていない。【０１７０】
ＣＰＵ６２０がＳＢ４０内のメインメモリ１００に対してリード要求（ａｄｒ  １００番地）を発行する場合である。【０１７１】
この場合、リード要求は排他権要求なしのリクエストであるものとする。このリード要求に対し、ＣＰＵ６２０のキャッシュメモリ１４でミスヒットした場合には、ＣＰＵ６２０はリード要求をＳＣ８０内のリクエスト処理部１６０へ発行する。リード要求を受けたリクエスト処理部１６０はＳＣ８０内のＤＩＲ＄１８０と記録部２００を検索する。【０１７２】
ここで、記録部２００はアドレス１００番地の情報を格納するとともに、記録部２００が管理しているＣＰＵが当該データを“Ｉ”又は“Ｓ”でキャッシュしている旨の情報を登録している（即ち、mode１１＝ all I or S ）。【０１７３】
リード要求はこの場合、排他権要求なしのリクエストであるから、記録部２００が管理しているＣＰＵをリードする必要がない。即ち、ＳＣは、ＤＩＲ１２０をリードすることなく、所有先のＣＰＵに対するリード抑制を判断できる。従って、ＤＩＲ１２０のリード抑制により、リード要求によるレイテンシを短縮することができる。【０１７４】
なお、リクエストを発行したＣＰＵ６２０はこの場合、記録部２００に管理されていないので、ＣＰＵ６２０が最終的にデータをキャッシュすることになっても、ＤＩＲ１２０にＣＰＵ６２０のステータスをライトする必要がない。【０１７５】
〔動作例１５〕【０１７６】
動作例１５について、図２７を参照する。図２７は動作例１５を示している。【０１７７】
ＤＩＲ１２０の１回のリードにより、２〔ｋByte〕の領域にある情報をまとめて記録部２００に登録することができる。ここで、ＣＰＵのミニマムページサイズが２〔ｋByte〕以下例えば、１〔ｋByte〕であれば、記録部２００に２〔ｋByte〕単位以下で登録できる。即ち、記録部２００には、ＣＰＵのミニマムページサイズ以下にスライスして登録することができる。【０１７８】
〔他の実施の形態〕【０１７９】
(1) 第２の実施の形態では、ＳＢ４０を自ノードとして動作の例示及びその詳細を説明したが、他ノードにおいても同様の動作が得られる。【０１８０】
(2) 上記実施の形態のアクセス処理は、図１０に記載した通りであるが、これに限定されない。このアクセス処理については、図２８に示すように、既述のＤＩＲ＄１８０及び記録部２００の検索やライト処理を包含してもよい。この処理手順では、リードリクエスト開始（ステップＳ２０１）では、例えば、メインメモリのアドレス２番地へのリードリクエストを行う。この場合、アドレス２番地の情報をＤＩＲ＄１８０又は記録部２００が記録していないかを検索し（ステップＳ２０２）、アドレス２番地の情報をＤＩＲ＄１８０又は記録部２００が記録していれば（ステップＳ２０２のＨｉｔ）、動作決定（ステップＳ２０７）に移行する。【０１８１】
アドレス２番地の情報をＤＩＲ＄１８０又は記録部２００が記録していなければ（ステップＳ２０２のＭｉｓｓ）、ＳＣはＤＩＲをリードし（ステップＳ２０３）、ＤＩＲからアドレス２番地のステータスを含むステータスをリードする。この場合、アドレス２番地のステータスだけでなく、他のステータスもＤＩＲからリードできる。そこで、ＳＣは、３２ｅｎｔｒｙの全てのステータスが“Ｉ”か又は“Ｓ”か、又は“Ｉ”と“Ｓ”の混在かを判断する（ステップＳ２０４）。３２ｅｎｔｒｙの全てのステータスが“Ｉ”か、全てが“Ｓ”か又は“Ｉ”と“Ｓ”の混在であれば（ステップＳ２０４のＹＥＳ）、ＳＣはＤＩＲ＄１８０又は記録部２００のライトを行う（ステップＳ２０５）。即ち、リードしたアドレス２番地のステータスと他のステータスとの全部が“ Invalid”、全部が“Shared”又は“ Invalid”又は“Shared”の混在である場合には、ＳＣは記録部２００へのライトを行うことができ、この場合、ＤＩＲ＄１８０にそのステータス情報を記録してもよい。また、３２ｅｎｔｒｙの全てのステータスが“Ｉ”か、全てが“Ｓ”か又は“Ｉ”と“Ｓ”の混在でなければ（ステップＳ２０４のＮＯ）、ＳＣはＤＩＲ＄１８０のライトを行う（ステップＳ２０６）。即ち、記録部２００にステータス情報を記録できない場合には、ＳＣはＤＩＲ＄１８０へのライトを行う。【０１８２】
このような処理を経てアドレス２番地の現在のステータスが判明したので、ＳＣは動作を決定し（ステップＳ２０７）、メインメモリ１００のリード（ステップＳ２０８）又は既述の所有先リード（ステップＳ２０９）を行い、リクエスト終了（ステップＳ２１０）に移行する。そして、リクエスト終了により、アドレス２番地のステータスが変化するので、アドレス２番地のステータスをＤＩＲにライトし（ステップＳ２１１）、この処理を終了する。【０１８３】
〔他の実施の形態〕【０１８４】
(1) 上記実施の形態では、ステータスとして全てが“ Invalid”の場合、全てが“Shared”の場合、“ Invalid”と“Shared”の混在の場合を例示したが、これに限定されない。本開示の情報処理装置、メモリ制御方法及びメモリ制御装置では、対象とするステータスが少なくとも全て“ Invalid”の場合又は全てが“Shared”の場合であればよい。【０１８５】
(2) 第２の実施の形態では、ステップＳ１０６、Ｓ１１６において、「３２entry がall Ｉ、all Ｓ又はＩとＳの混合か」としているが、これに限定されない。３２entry が全てInvalid 又は全てInvalid or Shared （Invalid と Shared 混在又は全て Shared ）であってもよい。【０１８６】
(3) 上記実施の形態（図１０）のステップＳ１０３では、ＤＩＲ＄１８０又は記録部２００のいずれか一方がヒットした場合に、動作決定（ステップＳ１０４）としているが、これに限定されない。ＤＩＲ＄１８０及び記録部２００の双方がヒットした場合に、動作決定（ステップＳ１０４）としてもよい。【０１８７】
(4) 上記実施の形態（図１０）のステップＳ１１１では、ＤＩＲ＄１８０又は記録部２００のいずれか一方がヒットした場合に、ステップＳ１１２に移行しているが、これに限定されない。ＤＩＲ＄１８０及び記録部２００の双方がヒットした場合に、ステップＳ１１２に移行する処理としてもよい。【０１８８】
(5) 上記実施の形態（図１０）の動作決定（ステップＳ１０４又はステップＳ１１４）の後、メインメモリのリード（ステップＳ１０８、Ｓ１２２）及び所有先のリード（ステップＳ１０９、Ｓ１２３）を行っているが、いずれか一方の処理を行ってもよい。【０１８９】
〔比較例１〕【０１９０】
比較例１について、図２９を参照する。図２９は比較例１を示している。この比較例１の情報処理装置２０００は、大規模なシステムを構成している。この情報処理装置２０００では、図２９に示すように、複数のＳＢ２４０、２４１・・・２４ｎが備えられ、これらＳＢ２４０、２４１・・・２４ｎがクロスバ（ＸＢ）５０で接続されている。【０１９１】
そして、ＤＩＲ４４０、４４１・・・４４ｎが設置され、ＳＣ２８０にはキャッシュＴＡＧ３４０及び記録部３６０に代え、ＤＩＲ＄４２０が用いられている。他ノードにおいても同様の構成である。【０１９２】
斯かる構成では、例えば、リード要求に対するＤＩＲ＄４２０のミス時において、ＤＩＲ４４０をリードすることで、データを所有しているＣＰＵを検索することができるため、ＤＩＲ＄４２０のミス時のペナルティが少ない。しかし、ＤＩＲ＄４２０は、容量に制限があり、このため、ヒット率を上げるには物量を大きくする必要がある。これは、コストの増大となり、実用性に乏しい。【０１９３】
〔比較例２〕【０１９４】
比較例２について、図３０を参照する。図３０は比較例２を示している。この比較例２の情報処理装置３０００は、比較例１と同様に大規模なシステムを構成している。この情報処理装置３０００では、図３０に示すように、複数のＳＢ２４０、２４１・・・２４ｎが備えられ、これらＳＢ２４０、２４１・・・２４ｎがクロスバ（ＸＢ）５０で接続されている。【０１９５】
斯かる構成において、ＣＰＵ２６００がＳＢ２４０内のメインメモリ３００に対してリード要求を発行する。このリード要求に対してキャッシュメモリでミスヒットした場合は、リクエスト対象のメインメモリ３００を管理しているリクエスト処理部３２０にリード要求を発行する。このリード要求を受けたリクエスト処理部３２０はキャッシュＴＡＧ３４０と記録部３６０を検索する。【０１９６】
この検索において、キャッシュＴＡＧ３４０及び記録部３６０によりノード外ＣＰＵがリード対象をキャッシュしているかを判断できない場合がある。この場合、ＳＣ２８０、２８１・・・２８ｎのキャッシュＴＡＧ３４０、３４１・・・３４ｎを検索するペナルティが発生し、リードレイテンシが延びる。このペナルティはシステムが大きくなれば、より大きくなる。【０１９７】
上記比較例１、比較例２では、メモリリードのレイテンシは延びるという課題は、既述の上記実施の形態のシステムによって解決されている。【０１９８】
以上述べたように、本開示の情報処理装置、メモリ制御方法及びメモリ制御装置の実施の形態等について説明したが、本開示は、上記記載に限定されるものではなく、請求の範囲に記載され、又は明細書に開示された発明の要旨に基づき、当業者において様々な変形や変更が可能であることは勿論であり、斯かる変形や変更が、本発明の範囲に含まれることは言うまでもない。
【産業上の利用可能性】
【０１９９】
本開示の情報処理装置、メモリ制御方法及びメモリ制御装置は、メモリアクセスの高速化に寄与し、有益である。
【符号の説明】
【０２００】
２  情報処理装置
６０、６１・・・６ｎ  プロセッサ
４００、４０１  ノード
８  システムコントローラ
１０  メインメモリ
１２  状態記憶部
２０  記録部
【図１】
2012039008.tif 000003
【図２】
2012039008.tif 000004
【図３】
2012039008.tif 000005
【図４】
2012039008.tif 000006
【図５】
2012039008.tif 000007
【図６】
2012039008.tif 000008
【図７】
2012039008.tif 000009
【図８】
2012039008.tif 000010
【図９】
2012039008.tif 000011
【図１０】
2012039008.tif 000012
【図１１】
2012039008.tif 000013
【図１２】
2012039008.tif 000014
【図１３】
2012039008.tif 000015
【図１４】
2012039008.tif 000016
【図１５】
2012039008.tif 000017
【図１６】
2012039008.tif 000018
【図１７】
2012039008.tif 000019
【図１８】
2012039008.tif 000020
【図１９】
2012039008.tif 000021
【図２０】
2012039008.tif 000022
【図２１】
2012039008.tif 000023
【図２２】
2012039008.tif 000024
【図２３】
2012039008.tif 000025
【図２４】
2012039008.tif 000026
【図２５】
2012039008.tif 000027
【図２６】
2012039008.tif 000028
【図２７】
2012039008.tif 000029
【図２８】
2012039008.tif 000030
【図２９】
2012039008.tif 000031
【図３０】
2012039008.tif 000032
【手続補正書】
【提出日】平成25年1月28日(2013.1.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサと、システムコントローラと、メインメモリとを含む複数のノードを備える情報処理装置であって、
複数のキャッシュラインのステータスを記憶し、１回のリードにより複数のキャッシュラインのステータスをリード可能な状態記憶部と、
少なくとも１つのノードにあるシステムコントローラに設けられ、前記状態記憶部が記憶するステータスの全部又は一部を記録する記録部と、
を備え、あるリクエストを契機に前記状態記憶部をリードしたときに、前記状態記憶部のリードによって得られる複数キャッシュラインのステータスが他ノードで全て無効状態又は共有状態であれば、得られたステータスを前記記録部に記録することを特徴とする情報処理装置。
【請求項２】
他ノードから自ノードへのリクエストがあった場合に、該リクエストが最終的にデータをキャッシュする種類のリクエストであって、前記記録部の記録に当該リクエストのステータスが含まれていれば、該ステータスを前記記録部から削除することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記システムコントローラは、リクエストを契機に前記状態記憶部にあるステータスをリードし、リードしたステータスが、リクエスト対象のデータがプロセッサにキャッシュされていないことを示していれば、前記データが他ノードに所有されていないことを示す情報を前記記録部に記録することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記システムコントローラは、前記プロセッサから前記メインメモリにリード要求が発行された場合、該リード要求がデータのキャッシュを生じさせるリクエストであれば、前記リクエストが示すアドレスを前記記録部から削除することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記記録部は、１つのステータスに複数のキャッシュラインを記録し、前記ステータスに複数のノードが全て無効となるステータスを有することを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記記録部は、記録されるステータスに、複数のキャッシュラインの全てのステータスが共通又は無効であるステータスを有することを特徴とする、請求項３に記載の情報処理装置。
【請求項７】
前記システムコントローラは、あるリクエストを契機に前記状態記憶部をリードし、リードしたアドレスのステータスが、リクエスト処理後、前記記録部に管理されているプロセッサが無効になり、同時にリードした複数のキャッシュラインのステータスが前記プロセッサの全てで無効であることを表している場合、無効であることを前記記録部に記録することを特徴とする、請求項３又は４に記載の情報処理装置。
【請求項８】
あるリクエストを契機に前記状態記憶部をリードした場合、リードした状態記憶部のアドレスのステータスを含む同時に読めた複数のノードで、前記記録部で管理されているプロセッサの全てが無効であり、且つ、そのアドレスのステータスが前記リクエスト処理後に変化しない場合には、前記記録部に記録することを特徴とする、請求項１に記載の情報処理装置。
【請求項９】
少なくとも１つのプロセッサと、システムコントローラと、メインメモリとを含む複数のノードを備える情報処理装置のメモリ制御方法であって、
複数のキャッシュラインのステータスを記憶し、１回のリードにより複数のキャッシュラインのステータスをリード可能な状態記憶部を、あるリクエストを契機にリードし、キャッシュラインのステータスをリードするステップと、
前記状態記憶部のリードによって得られる複数キャッシュラインのステータスが他ノードで少なくとも全て無効状態又は共有状態であれば記録部に記録するステップと、
を含むことを特徴とするメモリ制御方法。
【請求項１０】
少なくとも１つのプロセッサと、システムコントローラと、メインメモリとを含む複数のノードを備える情報処理装置のメモリ制御装置であって、
複数のキャッシュラインのステータスを記憶し、１回のリードにより複数のキャッシュラインのステータスをリード可能な状態記憶部を、あるリクエストを契機にリードし、キャッシュラインのステータスをリードするリード部と、
前記状態記憶部のリードによって得られる複数キャッシュラインのステータスが他ノードで少なくとも全て無効状態又は共有状態であれば記録部に記録する記録制御部と、
を備えることを特徴とするメモリ制御装置。
【国際調査報告】
2012039008.tif 000033
2012039008.tif 000034
2012039008.tif 000035
2012039008.tif 000036