(57)【要約】【課題】メモリからのデータ取得に伴うレイテンシを低減し、消費電力を抑えることが可能な演算処理装置、情報処理装置及び情報処理装置の制御方法を提供する。【解決手段】演算処理装置を、他の演算処理装置に接続される演算処理装置において、自身が管理する第１のデータと他の演算処理装置から取得した第２のデータとを用いて演算処理する演算処理部と、第１のデータを記憶するメモリ部と、第１のデータが他の演算処理装置に持ち出されているか否かを示すデータ使用状況を記憶するデータ使用状況記憶部と、第１のデータが他の演算処理装置に持ち出されている状態と持ち出されていない状態との間の遷移を示す指標部とを有し、指標部が、第１のデータがいずれも持ち出されていない状態を示す場合に、第１のデータを取得する要求が発生したときに、データ使用状況記憶部に対するデータ使用状況の参照を省略する制御部とを有する構成とする。【選択図】図１２
2014199576.tif 000002
【特許請求の範囲】
【請求項１】
他の演算処理装置に接続される演算処理装置において、
自身が管理する第１のデータと他の演算処理装置から取得した第２のデータとを用いて演算処理する演算処理部と、
前記第１のデータを記憶するメモリ部と、
前記第１のデータが他の演算処理装置に持ち出されているか否かを示すデータ使用状況を記憶するデータ使用状況記憶部と、前記データ使用状況記憶部に記憶されたデータ使用状況について、前記第１のデータが他の演算処理装置に持ち出されている状態と前記第１のデータが他の演算処理装置に持ち出されていない状態との間の遷移を示す指標部とを有し、前記指標部が、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第１のデータを取得する要求が発生したときに、前記データ使用状況記憶部に対するデータ使用状況の参照を省略する制御部と、
を有することを特徴とする演算処理装置。
【請求項２】
前記演算処理装置が、前記指標部の動作を動作状態に設定する設定部をさらに有し、
前記設定部によって前記指標部が動作状態に設定されている場合に、前記指標部は前記遷移を示す
ことを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記指標部は、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す基準値からの指標値の増減によって前記遷移を示し、前記第１のデータが他の演算処理装置に持ち出されていない状態から他の演算処理装置に持ち出されている状態に遷移するときに前記指標値をインクリメントし、前記第１のデータが他の演算処理装置に持ち出されている状態から他の演算処理装置に持ち出されていない状態に遷移するときに前記指標値をデクリメントすることを特徴とする請求項１又は請求項２に記載の演算処理装置。
【請求項４】
前記演算処理装置は、前記指標部を複数有し、
前記演算処理装置において、各指標部は、前記メモリ部に記憶されるそれぞれ異なるデータのデータ使用状況について、他の演算処理装置に持ち出されている状態と他の演算処理装置に持ち出されていない状態との間の遷移を示す
ことを特徴とする請求項１から請求項３のいずれか１項に記載の演算処理装置。
【請求項５】
前記演算処理装置は、前記制御部に所定の信号を供給する信号処理部をさらに有し、
前記制御部は、前記所定の信号に従って前記データ使用状況記憶部を参照し、
前記信号処理部は、前記指標部が、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第１のデータを取得する要求が発生したときに、前記制御部に対する前記所定の信号の供給を停止する
ことを特徴とする請求項１から請求項４のいずれか１項に記載の演算処理装置。
【請求項６】
前記指標部が、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第１のデータを取得する要求が発生したときに、前記データ使用状況記憶部には前記要求された第１のデータに関するデータ使用状況が存在しないことを前記制御部に通知するデータ使用状況通知部をさらに有することを特徴とする請求項１から請求項４のいずれか１項に記載の演算処理装置。
【請求項７】
他の演算処理装置と、前記他の演算処理装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
自身が管理する第１のデータと他の演算処理装置から取得した第２のデータとを用いて演算処理する演算処理部と、
前記第１のデータを記憶するメモリ部と、
前記第１のデータが他の演算処理装置に持ち出されているか否かを示すデータ使用状況を記憶するデータ使用状況記憶部と、前記データ使用状況記憶部に記憶されたデータ使用状況について、前記第１のデータが他の演算処理装置に持ち出されている状態と前記第１のデータが他の演算処理装置に持ち出されていない状態との間の遷移を示す指標部とを有し、前記指標部が、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第１のデータを取得する要求が発生したときに、前記データ使用状況記憶部に対するデータ使用状況の参照を省略する制御部と、
を有する
ことを特徴とする情報処理装置。
【請求項８】
他の演算処理装置と、前記他の演算処理装置に接続されるとともに、自身が管理する第１のデータと他の演算処理装置から取得した第２のデータとを用いて演算処理を行う演算処理部と、前記第１のデータを記憶するメモリ部とを含む演算処理装置とを有する情報処理装置の制御方法において、
前記演算処理装置が有するデータ使用状況記憶部が、前記第１のデータが他の演算処理装置に持ち出されているか否かを示すデータ使用状況を記憶し、
前記演算処理装置が有する指標部が、前記データ使用状況記憶部に記憶されたデータ使用状況について、前記第１のデータが他の演算処理装置に持ち出されている状態と前記第１のデータが他の演算処理装置に持ち出されていない状態との間の遷移を示し、
前記演算処理装置が有する制御部が、前記指標部が、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第１のデータを取得する要求が発生したときに、前記データ使用状況記憶部に対するデータ使用状況の参照を省略することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、情報処理装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
情報処理装置においては、複数の演算コア間でメモリのデータを共有する演算処理装置が実用に供されている。当該演算処理装置においては、演算コアとＬ１キャッシュの組が複数組集約された演算コア群が形成される。演算コア群に対しては、Ｌ２キャッシュ、Ｌ２キャッシュ制御部、メモリが接続されている。これら演算コア群、Ｌ２キャッシュ、Ｌ２キャッシュ制御部、メモリのセットをクラスタと呼ぶ。
【０００３】
キャッシュとは、大容量のメモリに記憶されたデータのうち、頻繁に使用するデータを格納する小容量の記憶部である。メモリ内のデータをキャッシュに一時的に格納することにより、時間のかかるメモリへのアクセス頻度を低減する。キャッシュは階層構造を採り、高位層ほど高速であり、低位層ほど大容量である。
【０００４】
ディレクトリベースのキャッシュコヒーレンス制御方式では、上記のＬ２キャッシュには、当該Ｌ２キャッシュが属するクラスタの演算コア群が要求したデータが格納されることが多い。そして、各演算コア群は、演算コア群に近いＬ２キャッシュをより頻繁に使用してデータを取得するように構成されていることが多い。また、データの整合性を保つため、１つのメモリに格納されているデータは当該メモリが属するクラスタによって管理される。また、この方式では、クラスタが、管理対象のメモリ内のデータが現在どのような状態でどのキャッシュに格納されているかを管理する。また、クラスタは、当該メモリに対するデータの要求を受けた場合に、データの状態に基づいてデータ取得要求に対して適切な処理を行う。そして、クラスタは、データ取得要求の処理後、当該データの状態に関する情報を更新する。
【０００５】
ここで、特許文献１に示されるように、上記のクラスタ構成及び処理体系を有する演算処理装置において、メモリからデータを取得する際に、データの状態や書き戻し回数をカウンタ形式で管理する方法が提示されている。カウンタはディレクトリＲＡＭ内に設定されている。そして、クラスタは、ディレクトリＲＡＭのカウンタを参照してデータ取得処理を行う。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−２５９５９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記の技術では、クラスタは、ディレクトリＲＡＭの参照結果を待って、その後のデータ取得処理の動作を決定する。このため、ディレクトリＲＡＭの参照処理の分だけデータ取得に伴うレイテンシが発生する。また、ディレクトリＲＡＭの参照処理を行う分、消費電力も大きくなる。
【０００８】
本件開示の技術は、上記の事情に鑑みてなされたものであり、その目的とするところは、メモリからのデータ取得に伴うレイテンシを低減し、消費電力を抑えることが可能な演算処理装置、情報処理装置及び情報処理装置の制御方法を提供することである。
【課題を解決するための手段】
【０００９】
一実施形態による演算処理装置は、他の演算処理装置に接続される演算処理装置において、自身が管理する第１のデータと他の演算処理装置から取得した第２のデータとを用いて演算処理する演算処理部と、第１のデータを記憶するメモリ部と、第１のデータが他の演算処理装置に持ち出されているか否かを示すデータ使用状況を記憶するデータ使用状況記憶部と、データ使用状況記憶部に記憶されたデータ使用状況について、第１のデータが他の演算処理装置に持ち出されている状態と第１のデータが他の演算処理装置に持ち出されていない状態との間の遷移を示す指標部とを有し、指標部が、第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、第１のデータを取得する要求が発生したときに、データ使用状況記憶部に対するデータ使用状況の参照を省略する制御部とを有する。
【発明の効果】
【００１０】
一実施形態によれば、メモリからのデータ取得に伴うレイテンシを低減し、消費電力を抑えることが可能な演算処理装置、情報処理装置及び情報処理装置の制御方法を実現できる。
【図面の簡単な説明】
【００１１】
【図１】図１は、比較例に係る情報処理装置における一部のクラスタ構成を示す図である。
【図２】図２は、比較例に係るＬ２キャッシュ制御部の概略の構成を示す図である。
【図３】図３は、比較例に係るクラスタにおいてデータ取得要求が発生した場合の動作を示す図である。
【図４】図４は、図３に示す動作例におけるＬ２キャッシュ制御部の動作を示す図である。
【図５】図５は、比較例に係るクラスタにおいてデータ取得要求が発生した場合の動作を示す図である。
【図６】図６は、図５に示す動作例におけるＬ２キャッシュ制御部の動作を示す図である。
【図７】図７は、本実施形態に係る情報処理装置における一部のクラスタ構成の概略を示す図である。
【図８】図８は、本実施形態に係るクラスタ内のＬ２キャッシュ制御部を示す図である。
【図９】図９は、本実施形態において、ディレクトリＲＡＭにおけるエントリの更新処理の概略を示す図である。
【図１０】図１０は、本実施形態においてコントローラが有する回路を示す図である。
【図１１】図１１は、本実施形態においてコントローラが有する回路を示す図である。
【図１２】図１２は、本実施形態に係るクラスタにおいてデータ取得要求が発生した場合の動作を示す図である。
【図１３】図１３は、図１２に示す動作例におけるＬ２キャッシュ制御部の動作を示す図である。
【図１４】図１４は、図１２、１３に示す動作例におけるタイミングチャートである。
【図１５】図１５は、本実施形態に係るコントローラの構成の一例を示す図である。
【図１６】図１６は、本実施形態に係るコントローラの構成の一例を示す図である。
【図１７】図１７は、本実施形態に係るカウンタ及びディレクトリＲＡＭの構成の一例を示す図である。
【発明を実施するための形態】
【００１２】
最初に、一実施形態に係る情報処理装置の比較例について、図面を参照しながら説明する。
【００１３】
（比較例）
図１は、比較例に係る情報処理装置１における一部のクラスタ構成を示す。図１に示すように、クラスタ１０は、演算コアとＬ１キャッシュの組をｎ組（ｎは自然数）有する演算コア群１００、Ｌ２キャッシュ制御部１０１、メモリ１０２を有する。Ｌ２キャッシュ制御部１０１はＬ２キャッシュ１０３を有する。クラスタ２０、３０も、クラスタ１０と同様、演算コア群２００、３００、Ｌ２キャッシュ制御部２０１、３０１、メモリ２０２、３０２、Ｌ２キャッシュ２０３、３０３をそれぞれ有する。
【００１４】
以降の説明において、メモリに格納されるデータを要求している演算コアが属するクラスタをローカル（Local）と呼ぶ。また、要求されたデータが格納されているメモリが属
するクラスタをホーム（Home）と呼ぶ。さらに、ローカルでないクラスタをリモート（Remote）と呼ぶ。各クラスタは、データの要求元及び要求先に応じて、ローカルにもホームにもリモートにもなる。また、あるデータ取得要求の処理において、ローカルのクラスタは、ホームのクラスタを兼ねる場合がある。また、リモートのクラスタが、ホームのクラスタを兼ねる場合もある。さらに、ホームのクラスタが管理するホームのメモリに格納されているデータの状態情報をディレクトリ情報と呼ぶ。これらの詳細については後述する。
【００１５】
図１に示すように、各クラスタはＬ２キャッシュ制御部が互いにバスあるいはインターコネクトによって接続されている。情報処理装置１内では、メモリ空間はいわゆるフラットであり、物理アドレスによってどのクラスタに属するメモリにどのデータが格納されているかが一意に決まる。
【００１６】
例えば、クラスタ１０が、クラスタ１０内のメモリ１０２以外のメモリ２０２に格納されているデータを取得する場合、そのデータを保持するメモリ２０２が属するクラスタ２０に対してデータの要求を行う。クラスタ２０は、該当データの状態をチェックする。ここで、データの状態とは、データがどのクラスタにあるか、データが排他的に使用されているか否か、情報処理装置内におけるデータの同期状況等のデータの使用状況を意味する。そして、クラスタ２０は、取得対象のデータが排他的に使用されていなければ、当該データを要求元のクラスタ１０に送信する。そして、クラスタ２０は、当該データの状態情報として、要求元のクラスタ１０がデータを持っていることを記録する。
【００１７】
図２は、Ｌ２キャッシュ制御部１０１の概略の構成を示す。Ｌ２キャッシュ制御部１０１は、コントローラ１０１ａとＬ２キャッシュ１０３とディレクトリＲＡＭ１０４を備える。また、Ｌ２キャッシュ１０３は、タグＲＡＭ１０３ａとデータＲＡＭ１０３ｂを備える。タグＲＡＭ１０３ａは、データＲＡＭ１０３ｂが保持しているブロックのタグ情報を保持する。タグ情報とは、コヒーレンスプロトコル制御における各データの使用状況に関する情報やメモリ内のアドレス等を意味する。ここで、複数のプロセッサを使用するマルチプロセッサ環境においては、プロセッサ間で同一のデータを共有してアクセスする可能性が高い。そこで、マルチプロセッサ環境では、各キャッシュ内に存在するデータの一貫性を維持している。プロセッサ間の一貫性を維持するプロトコルをコヒーレンスプロトコルと呼ぶ。このようなプロトコルの一例として、ＭＥＳＩプロトコルが挙げられる。以下の説明では、データの使用状況をModified、Exclusive、Shared、Invalidの４状態で管理するＭＥＳＩプロトコルを使用する。ただし、使用可能なプロトコルはこれに限られない。
【００１８】
コントローラ１０１ａは、タグＲＡＭ１０３ａを使用して、メモリのブロックがデータＲＡＭ１０３ｂにどのような状態で存在しているかやデータの有無をチェックする。データＲＡＭ１０３ｂは、例えばメモリ１０２内のデータのコピーを保持するＲＡＭである。ディレクトリＲＡＭ１０４は、ホームのクラスタに属するメモリのディレクトリ情報を扱うＲＡＭである。ディレクトリ情報は巨大になるため、メモリに格納され、そのキャッシュがＲＡＭに置かれることが多い。しかし、ここでは、ディレクトリＲＡＭ１０４にホームのクラスタに属するメモリのディレクトリ情報が格納されている。
【００１９】
コントローラ１０１ａは、演算コア、もしくは、別のクラスタのＬ２キャッシュ制御部のコントローラからの要求を受け付ける。コントローラ１０１ａは、受け付けた要求内容に応じて、タグＲＡＭ１０３ａ、データＲＡＭ１０３ｂ、ディレクトリＲＡＭ１０４、メモリ１０２、他のクラスタに対してそれぞれ動作要求を行う。そして、コントローラ１０１ａは、要求された動作が完了すると、要求元にその結果を返す。
【００２０】
図３は、クラスタ１０においてデータ取得要求が発生した場合の動作の一例を示す図である。図３では、クラスタ１０がローカルのクラスタである。また、クラスタ２０がホームのクラスタである。図３では、クラスタ１０において、クラスタ２０に属するメモリ２０２に格納されるデータの取得要求が発生した場合を想定している。また、図３は、Ｌ２キャッシュ１０３においてキャッシュミスが発生したときの動作を説明する。なお、ここでは、Ｌ２キャッシュ制御部にデータ取得要求が届いた時点でＬ１キャッシュにおいてキャッシュミスが発生していることを前提として説明する。
【００２１】
ローカルであるクラスタ１０の演算コア群１００の演算コアから、データの要求がＬ２キャッシュ制御部１０１に届く。このとき、当該要求には、要求するデータがクラスタ２０のメモリ２０２に格納されるデータであることを示すアドレス情報も含まれる。クラスタ１０のＬ２キャッシュ制御部１０１は、Ｌ２キャッシュ１０３が該当データを保持していない（miss）ことを確認する。そこで、クラスタ１０は、ホームのクラスタであるクラスタ２０に対して当該データのデータ取得要求を行う。クラスタ２０のＬ２キャッシュ制御部２０１が、当該データ取得要求を受けると、Ｌ２キャッシュ２０３のディレクトリ情報をチェックする。Ｌ２キャッシュ制御部２０１のコントローラ２０１ａは、Ｌ２キャッシュ２０３にも、リモートのクラスタ内のＬ２キャッシュにもデータがないことを確認すると（miss）、メモリ２０２に対して当該データのデータ取得要求を行う。
【００２２】
メモリ２０２から当該データが返ってくると、Ｌ２キャッシュ制御部２０１は、Ｌ２キャッシュ２０３のディレクトリ情報を更新する。そして、Ｌ２キャッシュ制御部２０１は、データを要求元のローカルのクラスタ１０に送る。クラスタ１０のＬ２キャッシュ制御部１０１は、クラスタ２０のＬ２キャッシュ制御部２０１から受け取ったデータをＬ２キャッシュ１０３に格納する。そして、Ｌ２キャッシュ制御部１０１は、当該データを演算コア群１００要求元の演算コアに送る。
【００２３】
図４は、図３に示す動作例におけるＬ２キャッシュ制御部１０１、２０１の動作を示す図である。ローカルのクラスタ１０内のＬ２キャッシュ制御部１０１のコントローラ１０１ａは、演算コア群１００の演算コアからデータ取得要求を受け付ける。当該データ取得要求には、演算コアからの要求であることを示す情報とデータ取得要求の種類とメモリのアドレスが含まれる。コントローラ１０１ａは、要求内容に適切な処理を開始する。
【００２４】
コントローラ１０１ａは、タグＲＡＭ１０３ａに対して、データ取得要求の対象となるデータを含むメモリのブロックのコピーがデータＲＡＭ１０３ｂにあるか否かをチェックする。コントローラ１０１ａは、タグＲＡＭ１０３ａから当該コピーが「ない（miss）」という結果を受け取ると、ホームのクラスタ２０に属するＬ２キャッシュ制御部２０１の
コントローラ２０１ａに対して、当該データのデータ取得要求を行う。
【００２５】
コントローラ２０１ａは、当該データ取得要求を受け付けると、ディレクトリＲＡＭ２０４に対して、データ取得要求の対象となるデータがいずれかのクラスタのＬ２キャッシュに格納されているか否かチェックする。コントローラ２０１ａは、ディレクトリＲＡＭ２０４から「どのクラスタも持ち出していない（miss）」という結果を受け取ると、メモリ２０２に対して当該データのデータ取得要求を行う。コントローラ２０１ａは、メモリ２０２から当該データが返ってくると、ディレクトリＲＡＭ２０４に、当該データの使用状況について「要求元のクラスタ１０が持っている」ことを示す情報を登録する。そして、コントローラ２０１ａは、当該データを要求元のクラスタ１０のコントローラ１０１ａに送る。データを受け取ったクラスタ１０のコントローラ１０１ａは、当該データの使用状況（Sharedなど）をタグＲＡＭ１０３ａに格納する。また、コントローラ１０１ａは、当該データをデータＲＡＭ１０３ｂに格納する。そして、コントローラ１０１ａは、演算コア群１００内の要求元の演算コアに当該データを送る。
【００２６】
図５は、比較例において、図３及び図４に示す上記の処理が完了した後のクラスタ２０におけるデータの取得処理の一例を示す図である。図５では、上記の説明の通り、クラスタ１０がＬ２キャッシュ１０３に持ち出しているデータに対して、クラスタ２０の演算コア群２００がデータ取得を要求する。図５における処理では、クラスタ２０がローカルのクラスタでありホームのクラスタでもある。
【００２７】
図５に示すように、まず演算コア群２００がＬ２キャッシュ制御部２０１に対してデータを要求する。このとき、当該要求には、要求するデータがクラスタ２０のメモリ２０２に格納されるデータであることを示すアドレス情報も含まれる。Ｌ２キャッシュ制御部２０１は、当該データがＬ２キャッシュ２０３になく（miss）、クラスタ１０が当該データを持ち出していることを確認する。次いで、Ｌ２キャッシュ制御部２０１は、クラスタ１０に対して当該データのデータ取得要求を行う。クラスタ１０のＬ２キャッシュ制御部１０１は、当該データ取得要求を受けると、Ｌ２キャッシュ１０３に要求されているデータがあることを確認する。そして、Ｌ２キャッシュ制御部１０１は、Ｌ２キャッシュ１０３から当該データを取得して、当該データをクラスタ２０に送る。
【００２８】
Ｌ２キャッシュ制御部１０１から当該データが返ってくると、Ｌ２キャッシュ制御部２０１は、Ｌ２キャッシュ２０３のディレクトリ情報を更新する。そして、Ｌ２キャッシュ制御部２０１は、データをＬ２キャッシュ２０３に格納する。次いで、Ｌ２キャッシュ制御部２０１は、当該データを演算コア群２００の要求元の演算コアに送る。
【００２９】
図６は、図５に示す動作例におけるＬ２キャッシュ制御部１０１、２０１の動作を示す図である。Ｌ２キャッシュ制御部２０１のコントローラ２０１ａは、演算コア群２００の演算コアからデータの取得要求を受ける。コントローラ２０１ａは、タグＲＡＭ２０３ａに対して、当該データがデータＲＡＭ２０３ｂにあるか否かを確認する。コントローラ２０１ａは、当該データがデータＲＡＭ２０３ｂにない（miss）ことを確認する。次に、コントローラ２０１ａは、ディレクトリＲＡＭ２０４に対して当該データのディレクトリ情報の読み取りを要求する。コントローラ２０１ａは、ディレクトリＲＡＭ２０４から受け取ったディレクトリ情報により、クラスタ１０が当該データを持っていることを確認する。そして、コントローラ２０１ａは、コントローラ１０１ａに対して、該当データのデータ取得要求を行う。
【００３０】
要求を受け取ったホームのクラスタ１０のコントローラ１０１ａは、タグＲＡＭ１０３ａに対して、当該データがデータＲＡＭ１０３ｂにあるか否かを確認する。コントローラ１０１ａは、当該データがデータＲＡＭ１０３ｂにある（hit）ことを確認する。次に、
コントローラ１０１ａは、データＲＡＭ１０３ｂから当該データを取得する。そして、コントローラ１０１ａは、当該データをクラスタ２０のＬ２キャッシュ制御部２０１のコントローラ２０１ａに送る。
【００３１】
コントローラ２０１ａは、当該データを取得すると、タグＲＡＭ２０３ａに対して、当該データがデータＲＡＭ２０３ｂに格納されていることを示すよう情報の更新を要求する。また、当該データは、クラスタ１０のデータＲＡＭ１０３ｂにも格納されている。そこで、コントローラ２０１ａは、タグＲＡＭ２０３ａに対して当該データの使用状況がSharedであることを示すよう情報の更新も要求する。タグＲＡＭ２０３ａの情報の更新後、コントローラ２０１ａは、当該データをデータＲＡＭ２０３ｂに格納する。コントローラ２０１ａは、ディレクトリＲＡＭ２０４に対して当該データがローカルでもあるクラスタ２０が持っていることを示すようデータの使用状況の更新を要求する。次に、コントローラ２０１ａは、当該データを演算コア群２００の当該データを要求している演算コアに送る。
【００３２】
上記の情報処理装置において、例えば、各クラスタ内のメモリに格納されるデータに関するディレクトリ情報は、データとともにメモリに格納されるとする。そして、メモリからデータを取得する処理においては、一度のメモリ内のデータ参照処理で該当データとディレクトリ情報を取得できるようにする。そこで、メモリ内の同一ブロックに、データとディレクトリ情報を格納する。ただし、このような構成では、データが他のクラスタに持ち出されている場合、当該他のクラスタからデータを取得する際やデータをメモリに書き込む際に、メモリ内のディレクトリ情報を参照する処理が発生する。そして、クラスタは、当該ディレクトリ情報を確認した後で、各種処理を新たに実行する。このため、情報処理装置において、性能面での劣化、電力面での消費増加、メモリ帯域使用率の情報等が発生する。
【００３３】
そこで、ディレクトリ情報をクラスタのＬ２キャッシュ制御部内のディレクトリＲＡＭに格納する。当該ディレクトリＲＡＭには、メモリから取得されたデータに関するディレクトリ情報が格納される。また、Ｌ２キャッシュ制御部内のディレクトリＲＡＭにすべてのディレクトリ情報を格納することもある。この構成は、情報処理装置内のクラスタ数が少ない場合やメモリ容量が少ない場合等、ディレクトリ情報も少なく全ディレクトリ情報をＬ２キャッシュ制御部側に格納できる場合に採用される。
【００３４】
したがって、上記の比較例の情報処理装置１では、ディレクトリＲＡＭにディレクトリ情報の一部あるいは全体を格納している場合がある。この場合、クラスタは、ディレクトリＲＡＭの参照結果を確認した後でデータ取得要求等の各種処理の詳細を決定する。例えば、データの取得要求が発生したときに、クラスタは、まず、ディレクトリＲＡＭを参照して、当該データがディレクトリキャッシュミス、あるいはリモートのＬ２キャッシュが当該データを持っていないことを確認する。クラスタは、これらの確認の後で、メモリに対するデータの取得要求を実行する。したがって、この場合は、ディレクトリＲＡＭを参照する処理の分、データ取得に伴うレイテンシが発生し、消費電力も増加する可能性がある。
【００３５】
また、情報処理装置１内で実行するアプリケーションの実効性能を上げるために、各クラスタの演算コア群が使用するデータに関する調整を行うこともある。すなわち、あるアプリケーションの処理を担当する各クラスタにおいて、クラスタ内の演算コア群が当該クラスタ内のメモリに格納されているデータを使用し、他のクラスタ内のメモリのデータを使用しないように調整する。これにより、クラスタのメモリに格納されているデータは、他のクラスタに持ち出されることがない。しかし、このようにアプリケーションを調整した後でも、上記の比較例では、データ取得時にディレクトリＲＡＭの参照を行う。したが
って、この場合でも、ディレクトリＲＡＭを参照する処理の分、情報処理装置の性能が低下し、データ取得に伴うレイテンシが発生し、消費電力も増加する可能性がある。
【００３６】
そこで、以上の比較例に関する説明を踏まえ、一実施形態に係る情報処理装置の例について、図面を参照しながら以下に説明する。
【実施例】
【００３７】
図７は、本実施例としての情報処理装置２における一部のクラスタ構成の概略を示す。図７に示すように、情報処理装置２は、比較例と同様、クラスタ５０、６０、７０を有する。なお、クラスタ５０、６０、７０が演算処理装置の一例に相当する。また、ローカル、ホーム、リモートの違いも比較例において説明した通りであり、ここでは説明を省略する。クラスタ５０は、演算コア群５００、Ｌ２キャッシュ制御部５０１、メモリ５０２を有する。Ｌ２キャッシュ制御部５０１はＬ２キャッシュ５０３を有する。クラスタ６０、７０も、クラスタ５０と同様、演算コア群６００、７００、Ｌ２キャッシュ制御部６０１、７０１、メモリ６０２、７０２、Ｌ２キャッシュ６０３、７０３をそれぞれ有する。なお、演算コア群５００、６００、７００が演算処理部の一例に相当する。また、Ｌ２キャッシュ制御部５０１、６０１、７０１が制御部の一例に相当する。さらに、メモリ５０２、６０２、７０２がデータ記憶部の一例に相当する。
【００３８】
また、図７に示すように、情報処理装置２はモードレジスタ８０を有する。後述するように、Ｌ２キャッシュ制御部５０１、６０１、７０１は、カウンタ５０１ｂ、６０１ｂ、７０１ｂをそれぞれ有する。また、モードレジスタ８０は、各カウンタのカウント処理を制御する。なお、モードレジスタ８０が設定部の一例に相当する。また、カウンタ５０１ｂ、６０１ｂ、７０１ｂが指標部の一例に相当する。
【００３９】
図７に示すように、各クラスタはＬ２キャッシュ制御部が互いにバスあるいはインターコネクトによって接続されている。情報処理装置２内では、メモリ空間はいわゆるフラットであり、物理アドレスによってどのクラスタに属するメモリにどのデータが格納されているかが一意に決まる。
【００４０】
図８は、クラスタ５０のＬ２キャッシュ制御部５０１を示す図である。Ｌ２キャッシュ制御部５０１は、コントローラ５０１ａとカウンタ５０１ｂとＬ２キャッシュ５０３とディレクトリＲＡＭ５０４とを備える。また、Ｌ２キャッシュ５０３は、タグＲＡＭ５０３ａとデータＲＡＭ５０３ｂを有する。また、ディレクトリＲＡＭ５０４がデータ使用状況記憶部の一例に相当する。なお、タグＲＡＭ５０３ａ、データＲＡＭ５０３ｂ、ディレクトリＲＡＭ５０４は、それぞれ比較例と同様の機能を有するため、ここでは詳細な説明を省略する。
【００４１】
カウンタ５０１ｂは、クラスタ５０内のディレクトリＲＡＭ５０４内に格納されているエントリについて、エントリが管理するメモリのブロックのうち、他のクラスタに持ち出されているブロックの数をカウントする。例えば、ディレクトリＲＡＭ５０４のエントリ数を２N（Ｎは整数）とすると、カウンタ５０１ｂのビット数はＮ＋１となる。例えば、
クラスタ５０が自身のメモリ５０２へのアクセスを処理する際に、カウンタ５０１ｂの値が０であるとする。これは、ディレクトリＲＡＭ５０４に「他（リモート）のクラスタに持ち出されていることを示すエントリ」が存在しないことを示す。そこで、クラスタ５０では、ディレクトリＲＡＭ５０４の参照処理が省略され、メモリ５０２に対するデータ要求が実行される。
【００４２】
モードレジスタ８０は、本実施例に係る情報処理装置２内での各クラスタの動作モードを制御する。本実施例では、一例として、動作モードは「モードオン」と「モードオフ」
の２つのモードを有する。具体的には、「モードオン」とは、各クラスタ内のカウンタの動作を有効にする動作モードである。また、「モードオフ」とは、各クラスタ内のカウンタの動作を無効にする動作モードである。なお、これらの動作モードにおける処理の詳細については後述する。本実施例では、情報処理装置２において、情報処理装置２のＯＳ（Operating System）の起動前やアプリケーションの実行前に動作モードの切り換えを行う。さらに、本実施例では、情報処理装置２のＯＳがモードレジスタ８０の動作モードの切り換えを制御する。なお、動作モードの切り換えは、情報処理装置２のユーザが明示的にＯＳに指示をして行ってもよいし、実行するアプリケーションのメモリ使用量等の情報に基づいてＯＳが自律的に行ってもよい。
【００４３】
情報処理装置２において、クラスタ間通信の多いアプリケーションを実行する場合、カウンタが常に１以上になる可能性もある。この場合、カウンタ動作分だけ電力消費量が増加する。また、ディレクトリＲＡＭの参照処理が省略されないため、メモリからのデータ取得に伴って発生するレイテンシの低減や消費電力の削減がもたらされないことも考えられる。そこで、本実施例では、カウンタを動作させるか否かを設定するモードレジスタ８０が設けられている。モードレジスタ８０によってカウンタの動作を無効にする場合、動作モードが「モードオフ」となり、カウンタの動作が無効にされているクラスタの動作は比較例と同じ動作になる。
【００４４】
また、本実施例においては、コントローラは、ディレクトリＲＡＭの更新処理時にカウンタのインクリメント又はデクリメントを行う。すなわち、コントローラは、ディレクトリＲＡＭのエントリ更新時に、更新対象のエントリを読み込んでから該当エントリの更新を行う。そして、コントローラは、更新前後の状態遷移に応じてカウンタのインクリメント又はデクリメントを行う。
【００４５】
例えば、ディレクトリＲＡＭ内のあるディレクトリ情報が、更新対象のエントリに対応するデータが他（リモート）のクラスタに持ち出されていない状態を示すとする。このとき、当該ディレクトリ情報が指すエントリが、他のクラスタに持ち出されている状態に遷移するときに、コントローラがカウンタをインクリメントする。また、その逆の場合は、コントローラはカウンタをデクリメントする。すなわち、当該エントリが示すデータが他のクラスタに持ち出されている状態で、当該他のクラスタから当該データが戻される、つまり当該持ち出し状態が取り消される場合に、コントローラはカウンタをデクリメントする。なお、上記の通り、クラスタの動作モードが「モードオン」であり、カウンタの値が０である場合に、クラスタに対してデータ取得要求があったときは、ディレクトリＲＡＭに対する参照処理が省略される。
【００４６】
図９は、本実施例において、カウンタのインクリメント又はデクリメントを行う際の、処理の概略を示す説明図である。図９には、ディレクトリＲＡＭ内のあるインデックスに対応するキャッシュラインを示す。当該キャッシュラインには、更新対象のエントリが含まれる。
【００４７】
本実施例において、ディレクトリＲＡＭ５０４のディレクトリ情報が、情報処理装置２内の各クラスタがメモリ５０２内のデータを持ち出しているか否かを示す。具体的には、各クラスタのタグＲＡＭには、他のクラスタから取得したデータについて、Modified、Exclusive、Shared、Invalidの４つのタイプコードが記憶される。そこで、ディレクトリＲＡＭ５０４には、持ち出し先のクラスタのタグＲＡＭに記憶されたタイプコード等を基にして、情報処理装置２内のクラスタ毎のメモリ５０２内のデータについてのタイプコードが記憶される。例えば、情報処理装置２がクラスタ５０、６０、７０で構成される場合を考える。この場合、クラスタ５０に対してクラスタ６０、７０がリモートのクラスタになる。
【００４８】
ここで、クラスタ７０がクラスタ５０からメモリ５０２に格納されるデータを持ち出したときに、ディレクトリＲＡＭ５０４には、リモートのクラスタ７０がデータを持ち出したことが記憶される。例えば、クラスタ７０が当該データを排他的データ取得により取得した場合は、ディレクトリＲＡＭ５０４に記憶されるタイプコードはExclusiveである。
また、クラスタ７０によるデータ取得が排他的でない場合は、ディレクトリＲＡＭ５０４に記憶されるタイプコードはSharedである。また、クラスタ７０において持ち出されたデータの内容が変更された場合、ディレクトリＲＡＭ５０４にはModifiedのタイプコードが記憶される。すなわち、メモリ５０２内のデータが他のクラスタに持ち出されたときに、ディレクトリＲＡＭ５０４に記憶されるタイプコードはInvalid以外である。そして、ク
ラスタ７０から当該データがクラスタ５０に戻されるとき、ディレクトリＲＡＭ５０４に記憶されるタイプコードはInvalidである。
【００４９】
このように、本実施例においては、クラスタ内のメモリに格納されるデータが持ち出されたり戻されたりする際に、そのクラスタ内のディレクトリＲＡＭの更新処理が発生する。そして、ディレクトリＲＡＭを更新する場合、まず、コントローラは、ディレクトリＲＡＭから更新前のエントリの状態を示すデータを読み出す。次に、コントローラは、読み出したエントリの値、すなわち更新前のエントリの状態と、更新後のエントリの状態とを比較する。この比較結果に基づいて、コントローラは、カウンタの値のインクリメント又はデクリメントを行う。
【００５０】
図１０は、本実施例において、コントローラ５０１ａが有する回路の一部を示す図である。本実施例においては、コントローラ５０１ａ、６０１ａ、７０１ａが、この論理回路をそれぞれ有する。図１０に示す制御回路により、コントローラ５０１ａは、カウンタ５０１ｂに対して値のインクリメント及びデクリメントを行う。図１０において、ＯＲゲート５０１ｃは、更新前に読み出された、更新対象のＬ２キャッシュ５０３のエントリに対応するディレクトリ情報において、ローカル以外のクラスタについてタイプコード（TypeCode）に基づくＯＲ演算を行う。このＯＲ演算により、ディレクトリ情報更新前のデータ使用状況が、クラスタ５０以外の各クラスタによって更新対象のエントリに対応するデータが持ち出されている状態であるか否かが確認される。
【００５１】
ＯＲゲート５０１ｃには、更新前のディレクトリ情報に含まれる、ローカル以外の各クラスタのタイプコードがそれぞれ入力される。そして、ＯＲゲート５０１ｃは、各入力の少なくとも１つが「TypeCode!=I(Invalid)」を満たす場合、すなわちタイプコードがInvalidではない場合に、「１」を出力する。また、ＯＲゲート５０１ｃは、それ以外の場合
、すなわち、いずれの入力もタイプコードがInvalidである場合に「０」を出力する。
【００５２】
また、ＯＲゲート５０１ｄは、上記更新対象のＬ２キャッシュ５０３のエントリに対応する、更新後のディレクトリ情報において、ローカル以外のクラスタについてタイプコード（TypeCode）に基づくＯＲ演算を行う。このＯＲ演算により、ディレクトリ情報更新後のデータ使用状況が、クラスタ５０以外の各クラスタによって更新対象のエントリに対応するデータが持ち出されている状態であるか否かが確認される。ＯＲゲート５０１ｄには、更新後のディレクトリ情報に含まれる、ローカル以外の各クラスタのタイプコードがそれぞれ入力される。そして、ＯＲゲート５０１ｄは、各入力の少なくとも１つが「TypeCode!=I(Invalid)」を満たす場合に「１」を出力する。また、ＯＲゲート５０１ｄは、それ以外の場合に「０」を出力する。
【００５３】
ＡＮＤゲート５０１ｇは、モードレジスタ８０により動作モードが「モードオン」にされ、ＯＲゲート５０１ｃの出力がインバータ５０１ｅで反転されて「１」となり、ＯＲゲート５０１ｄの出力が「１」である場合に指示信号CountUpを出力する。カウンタ５０１
ｂは、この指示信号に従って現在の値をインクリメントする。上述の通り、ここで「モードオン」とは、モードレジスタ８０によってカウンタ５０１ｂの動作が有効にされている場合をいう。また、ＡＮＤゲート５０１ｈは、モードレジスタ８０により動作モードが「モードオン」にされ、ＯＲゲート５０１ｃの出力が「１」であり、ＯＲゲート５０１ｄの出力がインバータ５０１ｆで反転されて「１」となる場合に指示信号CountDownを出力す
る。カウンタ５０１ｂは、この指示信号に従って現在の値をデクリメントする。
【００５４】
図１０に示すように、ディレクトリＲＡＭ５０４内の更新対象エントリについて、更新前の状態が他のクラスタに持ち出されていたことを示す場合、ＯＲゲート５０１ｃから「１」が出力されてＡＮＤゲート５０１ｈに入力される。このとき、ＯＲゲート５０１ｃの出力がインバータ５０１ｅにより反転されるため、ＡＮＤゲート５０１ｇには「０」が入力される。一方、ディレクトリＲＡＭ５０４内の更新対象エントリについて、更新前の状態が他のクラスタに持ち出されていないことを示す場合、ＯＲゲート５０１ｃから「０」が出力されてＡＮＤゲート５０１ｈに入力される。このとき、ＡＮＤゲート５０１ｇには「１」が入力される。
【００５５】
また、ディレクトリＲＡＭ５０４内の更新対象エントリについて、更新後の状態が他のクラスタに持ち出されていることを示す場合、ＯＲゲート５０１ｄから「１」が出力されてＡＮＤゲート５０１ｇに入力される。このとき、ＯＲゲート５０１ｄの出力がインバータ５０１ｆにより反転されるため、ＡＮＤゲート５０１ｈには「０」が入力される。一方、ディレクトリＲＡＭ５０４内の更新対象エントリについて、更新後の状態が他のクラスタに持ち出されていないことを示す場合、ＯＲゲート５０１ｄから「０」が出力されてＡＮＤゲート５０１ｇに入力される。このとき、ＡＮＤゲート５０１ｈには「１」が入力される。
【００５６】
一例として、本実施例において、コントローラ５０１ａが、メモリ５０２に格納されるデータをクラスタ７０に送信する場合を考える。ここでは、当該データは他のクラスタに持ち出されていない、すなわち、当該データはメモリ５０２又はデータＲＡＭ５０３ｂに存在する。そして、モードレジスタ８０により動作モードが「モードオン」、すなわち、カウンタ５０１ｂの動作が有効に設定されているものとする。コントローラ５０１ａは、メモリ５０２又はデータＲＡＭ５０３ｂからデータを取得する。そして、コントローラ５０１ａは、ディレクトリＲＡＭ５０４に対して、当該データがリモートのクラスタ７０が持っていることを示すよう情報の更新を要求する。したがって、コントローラ５０１ａは、クラスタ７０からのデータ取得要求が排他的であるか否かに応じて、クラスタ７０による当該データの使用状況がExclusiveあるいはSharedであることを示すよう情報の更新を
要求する。
【００５７】
当該更新処理前において、ディレクトリＲＡＭ５０４内の当該データに関するディレクトリ情報は、当該データが他のいずれのクラスタにも持ち出されていないことを示す。すなわち、リモートのクラスタに関する当該データのタイプコードは、いずれもInvalidで
ある。そのため、ＯＲゲート５０１ｃは「０」を出力する。一方、更新後のディレクトリ情報は、当該データがリモートのクラスタ７０に持ち出されていることを示す。すなわち、リモートのクラスタ７０に関する当該データのタイプコードはSharedあるいはExclusiveである。したがって、ＯＲゲート５０１ｄは「１」を出力する。
【００５８】
このため、ＡＮＤゲート５０１ｇにはインバータ５０１ｅ及びＯＲゲート５０１ｄからともに「１」が入力される。さらに、モードレジスタ８０によりカウンタ５０１ｂの動作モードが「モードオン」である。したがって、ＡＮＤゲート５０１ｇは、指示信号CountUpを出力する。そして、指示信号CountUpに従って、カウンタ５０１ｂの値がインクリメントされる。一方、ＡＮＤゲート５０１ｈには、ＯＲゲート５０１ｃ及びインバータ５０１
ｆからともに「０」が入力される。このため、ＡＮＤゲート５０１ｈから指示信号CountDownは出力されない。
【００５９】
次に、当該データがクラスタ７０から戻された場合を考える。なお、ここでもモードレジスタ８０により、カウンタ５０１ｂの動作が有効にされているものとする。コントローラ５０１ａは、クラスタ７０から当該データを取得し、ディレクトリＲＡＭ５０４に対して当該データがリモートのクラスタ７０に持ち出されていないことを示すよう情報の更新を要求する。すなわち、コントローラ５０１ａは、ディレクトリＲＡＭ５０４に対して、クラスタ７０に関する当該データのタイプコードをInvalidにするよう要求する。
【００６０】
当該更新処理前において、ディレクトリＲＡＭ５０４内の当該データに関するディレクトリ情報は、クラスタ７０に持ち出されていることを示す。すなわち、クラスタ７０に関する当該データのタイプコードはInvalid以外の値である。そのため、ＯＲゲート５０１
ｃは「１」を出力する。一方、更新後のディレクトリ情報は、当該データが他のいずれのクラスタにも持ち出されていないことを示す。すなわち、リモートのクラスタに関する当該データのタイプコードは、いずれもInvalidである。したがって、ＯＲゲート５０１ｄ
は「０」を出力する。
【００６１】
このため、ＡＮＤゲート５０１ｈにはＯＲゲート５０１ｃ及びインバータ５０１ｆからともに「１」が入力される。さらに、モードレジスタ８０によりカウンタ５０１ｂの動作モードが「モードオン」である。したがって、ＡＮＤゲート５０１ｈは、指示信号CountDownを出力する。そして、指示信号CountDownに従って、カウンタ５０１ｂの値がデクリメントされる。一方、ＡＮＤゲート５０１ｇには、インバータ５０１ｅ及びＯＲゲート５０１ｄからともに「０」が入力される。このため、ＡＮＤゲート５０１ｇから指示信号CountUpは出力されない。
【００６２】
このように、本実施例においては、図１０に示す制御回路により、ディレクトリＲＡＭ５０４内の更新対象エントリについて、更新前の状態と更新後の状態とが比較され、カウンタ５０１ｂの値のインクリメント又はデクリメントを行う処理が実現される。
【００６３】
次に、図１１に、カウンタの値が０である場合に、ディレクトリＲＡＭの参照処理を省略して、メモリへの参照処理を行う制御を実行する論理回路を示す。本実施例においては、コントローラ５０１ａ、６０１ａ、７０１ａが、この論理回路をそれぞれ有する。
【００６４】
図１１において、ＡＮＤゲート５０１ｉは、モードレジスタ８０によりクラスタ５０が「モードオン」に設定され、カウンタ５０１ｂの値が０であり、クラスタ５０に対するデータ取得要求が発生した場合に「１」を出力する。上述の通り、ここで「モードオン」とは、モードレジスタ８０によってカウンタ５０１ｂの動作が有効とされている場合をいう。ＡＮＤゲート５０１ｉの出力は、ＯＲゲート５０１ｊに入力される。また、ＡＮＤゲート５０１ｉの出力は、インバータ５０１ｋにより反転されて、ＡＮＤゲート５０１ｌに入力される。ＯＲゲート５０１ｊは、ＡＮＤゲート５０１ｉの出力が「１」である場合に、メモリへのアクセスを実行する指示信号（LocalMemoryAccess2）を出力する。また、ＯＲゲート５０１ｊは、上記の比較例に従ってメモリ５０２へのアクセスが発生した場合にも、メモリへのアクセスを実行する指示信号（LocalMemoryAccess2）を出力する。
【００６５】
ＡＮＤゲート５０１ｌは、ＡＮＤゲート５０１ｉの出力が「０」であり、上記の比較例に従ってディレクトリＲＡＭ５０４へのアクセスが発生した場合に、ディレクトリＲＡＭ５０４へのアクセスを行う指示信号（DirectoryRAMAccess2）を出力する。したがって、
本実施例においては、クラスタ５０の動作モードが「モードオフ」である場合は、上記の比較例に従って、ディレクトリＲＡＭ５０４へのアクセスやメモリ５０２へのアクセスが
実行される。また、クラスタ５０の動作モードが「モードオン」である場合は、クラスタ５０に対してデータ取得処理が発生したときに、カウンタ５０１ｂの値が０であると、ディレクトリＲＡＭ５０４へのアクセスが発生しない。そして、メモリ５０２へのアクセスが発生し、データ取得要求により要求されているデータがメモリ５０２から取得される。
【００６６】
また、クラスタの自身のＬ２キャッシュにデータが格納されている場合は、自身のメモリに格納されるデータを取得する際に、Ｌ２キャッシュにおいてキャッシュヒットが発生する。このため、当該データがＬ２キャッシュから取得されて演算コア群に送られる。以上より、Ｌ２キャッシュにおいてキャッシュミスが発生したときにカウンタが０であった場合、該当データが当該Ｌ２キャッシュ以外に存在しないという状態は生じない。
【００６７】
また、上記の通り、本実施例においては、ディレクトリＲＡＭの更新処理時に、コントローラは、カウンタのインクリメント処理又はデクリメント処理を行う。また、比較例においては、通常、プロトコルの妥当性確認等のため、ディレクトリＲＡＭの更新処理時に、コントローラは、更新対象のエントリを読み込んでディレクトリ情報を確認する。したがって、本実施例のカウンタの構成を採用しても、比較例に比べてディレクトリＲＡＭの参照回数が増えることはない。
【００６８】
次に、図１２は、本実施例において、クラスタ５０がデータ取得を行う場合の動作の一例を示す図である。図１２においては、カウンタ５０１ｂの値が「０」である場合の処理について説明する。すなわち、図１２においては、メモリ５０２に格納されるデータは、データＲＡＭ５０３ｂになく、他のクラスタにも持ち出されていない。したがって、当該データはメモリ５０２に格納されている。なお、カウンタ５０１ｂの値が「０」でない場合は、上記の比較例と同様に、ディレクトリＲＡＭ５０４のディレクトリ情報を参照して各種処理が実行される。また、図１２においては、モードレジスタ８０によって動作モードが「モードオン」に設定されている、すなわちカウンタ５０１ｂの動作が有効になっている。動作モードが「モードオフ」に設定されている場合は、カウンタ５０１ｂの動作が無効となり、クラスタ５０は、上記の比較例と同様の処理を実行する。
【００６９】
図１３は、図１２に示す動作例におけるＬ２キャッシュ制御部５０１の動作を示す図である。上記の通り、Ｌ２キャッシュ制御部５０１は、コントローラ５０１ａとカウンタ５０１ｂとＬ２キャッシュ５０３とディレクトリＲＡＭ５０４をそれぞれ備える。また、Ｌ２キャッシュ５０３は、タグＲＡＭ５０３ａとデータＲＡＭ５０３ｂをそれぞれ備える。
【００７０】
図１３に示すように、クラスタ５０において、コントローラ５０１ａが演算コア群５００から、メモリ５０２に格納されるデータのデータ要求を受信する。次に、コントローラ５０１ａは、タグＲＡＭ５０３ａを参照し、要求されたデータがデータＲＡＭ５０３ｂに格納されているか否かを確認する。コントローラ５０１ａは、データＲＡＭ５０３ｂに当該データがない（キャッシュミス）ことを確認すると、カウンタ５０１ｂの値を確認する。コントローラ５０１ａは、カウンタ５０１ｂの値が「０」であることを確認すると、図１１に示す制御回路の動作により、ディレクトリＲＡＭ５０４の参照処理を省略する。そして、コントローラ５０１ａは、メモリ５０２から、要求されているデータを取得する。コントローラ５０１ａは、メモリ５０２から当該データを取得すると、ディレクトリＲＡＭ５０４に対して、クラスタ５０がデータを持っていることを示す情報を記憶するよう要求する。また、コントローラ５０１ａは、データＲＡＭ５０３ａに当該データがデータＲＡＭ５０３ｂに格納されていることを示す情報を記憶するよう要求する。さらに、コントローラ５０１ａは、当該データをデータＲＡＭ５０３ｂに格納する。そして、コントローラ５０１ａは、メモリ５０２から取得したデータを演算コア群５００に送信する。
【００７１】
図１４は、図１２、１３に示す動作例におけるＬ２キャッシュ制御部５０１のタイミン
グチャートである。以下の説明において、チャート内のステップをＳと略記する。Ｓ１０１において、コントローラ５０１ａは、演算コア群５００からメモリ５０２に格納されるデータのデータ要求を受信する。当該データ要求には、要求するデータの格納先を示すアドレス、すなわちメモリ５０２内の当該データの格納先を示すアドレスも含まれる。Ｓ１０２において、コントローラ５０１ａは、タグＲＡＭ５０３ａに対して、当該アドレスがデータ格納先であるデータがデータＲＡＭ５０３ｂに存在するか否かを確認する。Ｓ１０３において、タグＲＡＭ５０３ａは、当該データはデータＲＡＭ５０３ｂにない（miss）ことをコントローラ５０１ａに通知する。
【００７２】
次に、Ｓ１０４において、コントローラ５０１ａは、カウンタ５０１ｂの値を確認する。ここではカウンタ５０１ｂの値が０であるため、ディレクトリＲＡＭ５０４内に、当該データが他のクラスタに持ち出されたことを示すエントリは存在しない。したがって、コントローラ５０１ａは、当該データの取得にあたり、ディレクトリＲＡＭ５０４のディレクトリ情報を確認する必要はない。そこで、コントローラ５０１ａは、ディレクトリＲＡＭ５０４の参照処理を省略し、以下に説明するように、すぐにメモリ５０２に対してデータ取得要求を行うことができる。
【００７３】
Ｓ１０５において、コントローラ５０１ａは、図１１に示す制御回路の動作により、メモリ５０２に対して当該データを要求する。Ｓ１０６において、メモリ５０２は要求されたデータをコントローラ５０１ａに送信する。Ｓ１０７において、コントローラ５０１ａは、タグＲＡＭ５０３ａに対して、データＲＡＭ５０３ｂに当該データが存在することを示すよう情報の更新を要求する。また、コントローラ５０１ａは、タグＲＡＭ５０３ａに対して、当該データの使用状況がSharedであることを示すよう情報の更新を要求する。Ｓ１０８において、タグＲＡＭ５０３ａは、コントローラ５０１ａからの要求に従って情報を更新した後、当該更新処理が完了したことをコントローラ５０１ａに通知する。
【００７４】
Ｓ１０９において、コントローラ５０１ａは、データＲＡＭ５０３ｂに対して、Ｓ１０５においてメモリ５０２から取得したデータを送信し、当該データを格納するよう要求する。Ｓ１１０において、データＲＡＭ５０３ｂは当該データの格納処理を行った後、当該格納処理が完了したことをコントローラ５０１ａに通知する。Ｓ１１１において、コントローラ５０１ａは、ディレクトリＲＡＭ５０４に対して、当該データはクラスタ５０が持っていることを示すよう（Value=+Local）情報の更新を要求する。上記の通り、Ｓ１０３において当該データについてはキャッシュミスが発生している。また、Ｓ１０５においてカウンタ５０１ｂの値が０である。したがって、当該データは他のクラスタに持ち出されてもいない。そこで、ディレクトリＲＡＭ５０４に当該データのディレクトリ情報を示すエントリを新たに追加する。Ｓ１１２において、ディレクトリＲＡＭ５０４は、コントローラ５０１ａからの要求に従って情報を更新した後、当該更新処理が完了したことをコントローラ５０１ａに通知する。Ｓ１１３において、コントローラ５０１ａは、当該データを演算コア群５００に送信する。
【００７５】
このように、本実施例においては、カウンタ５０１ｂの値が０であるため、ディレクトリＲＡＭ５０４内に他のクラスタがデータを持ち出したことを示すエントリは存在しない。さらに、当該データはデータＲＡＭ５０３ｂにも存在しないことも確認される。すなわち、当該データはメモリ５０２以外に存在しないことが確定する。本実施例では、このような場合に、コントローラ５０１ａが、ディレクトリＲＡＭ５０４の参照処理を省略してメモリ５０２に対するアクセスを行う。したがって、情報処理装置２において、メモリ５０２に対するアクセス処理に伴うレイテンシを抑えるとともに、消費電力を削減することができる。
【００７６】
また、カウンタ５０１ｂの値のカウントに用いるビット数は、数ビットから多くとも数
十ビットで収まると考えられる。すなわち、カウンタ５０１ｂに用いる容量は、ディレクトリＲＡＭ５０４の容量に比べて小さい容量で構成することができる。したがって、カウンタ５０１ｂの参照処理に伴う情報処理量は、比較例において発生するディレクトリＲＡＭ５０４の参照処理に伴う情報処理量に比べて小さいと考えられる。また、カウンタ５０１ｂを設けることによって生じる消費電力量が、ディレクトリＲＡＭ５０４の参照処理を省略することにより実現される消費電力の削減量を上回らないとも言える。
【００７７】
さらに、情報処理装置２において実行するアプリケーションに対して、クラスタ間通信が極力発生しないように調整を行うと、メモリに格納されたデータが他のクラスタに持ち出される頻度が低下する。したがって、カウンタの値が０になる可能性が高まる。このため、ディレクトリＲＡＭの参照処理が省略される回数が増加する。その結果、アクセス処理に伴うレイテンシを抑え、消費電力を削減し、情報処理装置２の性能を向上させる効果がより高まると考えられる。例えば、情報処理装置２において、各クラスタが自身のメモリのデータを使用するフェイズと、各クラスタがクラスタ間通信を行うフェイズを切り分けて実行するようアプリケーションを調整してもよい。これにより、特に、各クラスタが自身のメモリのデータを使用するフェイズにおいて、上記の効果が得られると考えられる。
【００７８】
ところで、本実施形態においてディレクトリＲＡＭは、メモリ又はデータＲＡＭ内に格納されている各データについて、各クラスタにおけるタイプコードを、各クラスタに対応するビットによって管理する。例えば、上記の説明ではModified、Exclusive、Shared、Invalidの４つのタイプコードが存在する。そこで、一例として、４つのタイプコードModified、Exclusive、Shared、Invalidに対して、「００」、「０１」、「１０」、「１１」のビットをそれぞれ割り当て、各クラスタによる各データの持ち出し状況を管理する。ただし、ディレクトリＲＡＭにおけるクラスタのデータの持ち出し状況を管理する構成は、上記に限られない。
【００７９】
以上が本実施形態に関する説明であるが、上記の情報処理装置の構成や処理は、上記の実施形態に限定されるものではなく、本発明の技術的思想と同一性を失わない範囲内において種々の変更が可能である。例えば、上記の説明では、モードレジスタ８０がクラスタ５０、６０、７０の外部に配置されているが、各クラスタの内部にモードレジスタを１つずつ設ける構成としてもよい。また、上記の説明では、Ｌ２キャッシュ制御部内のディレクトリＲＡＭに、メモリに格納されているすべてのデータのディレクトリ情報が格納されている場合を想定したが、上記の実施形態は、そのような場合に限らず適用することができる。例えば、メモリにすべてのディレクトリ情報が格納されており、当該ディレクトリ情報のキャッシュがディレクトリＲＡＭに保持される構成としても、上記の実施形態の構成を適用することができる。
【００８０】
また、上記の実施例の情報処理装置２は、モードレジスタ８０を備えないものであってもよい。例えば、情報処理装置２において、クラスタ間通信が比較的少ないアプリケーションを実行する場合には、メモリのデータが他のクラスタに持ち出されることが少ないと予想される。このようなアプリケーションを比較的多く実行する情報処理装置では、モードレジスタ８０を省略してもよい。モードレジスタ８０がない情報処理装置では、コントローラは、カウンタの値に従ってディレクトリＲＡＭを参照するか否かを判定すればよい。
【００８１】
また、カウンタのビット数をできるだけ増やさない方法としては、ディレクトリＲＡＭ内の複数エントリを１まとまりとして、複数エントリ単位でカウントするようコントローラがカウンタを制御するという方法がある。具体的には、複数エントリの全てが持ち出されていない状態から複数エントリのうちいずれか１つでも持ち出された状態に遷移したと
きに、コントローラは、カウンタをインクリメントする。そして、その逆の遷移の場合は、コントローラは、カウンタをデクリメントする。なお、ディレクトリＲＡＭから一度に読み出されるエントリ群とカウント処理における複数エントリ単位とを対応付けると、コントローラは、カウント処理を効率よく制御することができる。
【００８２】
そして、ディレクトリＲＡＭの参照処理を省略する方法として、コントローラがディレクトリＲＡＭに対するクロックの供給を止める方法もある。図１５は、上記の実施例において、コントローラ５０１ａに追加することが可能な制御回路の一例である。図１５に示すように、ＮＡＮＤゲート５０１ｍは、カウンタの値が０であり（Counter==0）、かつ、演算コア群５００からデータ要求があった（RequestFrom==Local）場合に、「０」を出力する。このため、ディレクトリＲＡＭ５０４に対するクロックが発生しても、ＡＮＤゲート５０１ｎの出力が「０」となり、ディレクトリＲＡＭ５０４にはクロックは供給されない。なお、上記以外の場合は、ＮＡＮＤゲート５０１ｍは「１」を出力するため、ディレクトリＲＡＭ５０４にはクロックが供給される。なお、クロックが所定の信号の一例に相当する。また、ＮＡＮＤゲート５０１ｍとＡＮＤゲート５０１ｎが信号処理部の一例に相当する。
【００８３】
あるいは、ディレクトリＲＡＭ５０４が備えるEnable信号を用いる方法もある。すなわち、上記の実施例において、コントローラ５０１ａを、ディレクトリＲＡＭ５０４の参照結果を確認した後に各種動作を決定するように構成している場合は、セレクタを用いることができる。図１６にその構成の一例を示す。図１６に示す制御回路は、例えばディレクトリＲＡＭ５０４に設けることができる。カウンタの値が０のとき、ＮＡＮＤゲート５０１ｏは、カウンタの値が０であり（Counter==0）、かつ、演算コア群５００からデータ要求があった（RequestFrom==Local）場合に、「０」を出力する。そして、ＮＡＮＤゲート５０１ｏの出力が「０」である場合、セレクタ５０１ｐは、Miss、Invalidを示す結果を
コントローラ５０１ａ返す。この結果は、実質的に、ディレクトリＲＡＭ５０４において要求されているデータに関するディレクトリ情報がないことを意味する。そして、コントローラ５０１ａは、当該結果を受け取ると、メモリ５０２に対するデータ要求を行う。このため、実質的に、コントローラ５０１ａはディレクトリＲＡＭ５０４のディレクトリ情報の参照処理を省略して、メモリ５０２からデータを取得する。なお、ＮＡＮＤゲート５０１ｏとセレクタ５０１ｐがデータ使用状況通知部の一例に相当する。
【００８４】
以上より、図１５又は図１６に示す制御回路をクラスタ内に設けることでも、上記の実施例と同様にディレクトリＲＡＭ５０４の参照処理を省略することができる。
【００８５】
また、情報処理装置内でクラスタ間通信が頻繁に発生する場合、１つのディレクトリＲＡＭに対し１つのカウンタを設ける構成においては、カウンタが０になりにくい可能性がある。そこで、１つのディレクトリＲＡＭに対応するカウンタを複数設けてもよい。例えば、高度科学技術計算（ＨＰＣ：High Performance Computing）等では、各クラスタ内で使用されるデータとクラスタ間通信に使用されるデータとが明確に切り分けられることもある。このような場合に、情報処理装置のＯＳ等と協調し、前者のデータに関する情報をディレクトリＲＡＭの物理メモリ空間の前半アドレスに割り当てる。また、後者のデータに関する情報を、ディレクトリＲＡＭの物理メモリ空間の後半アドレスに割り当てる。そして、カウンタを物理アドレスの前半部分と後半部分とでそれぞれ１つずつ設ける。これにより、１つのディレクトリＲＡＭに対して１つのカウンタを設ける場合に比べて、各クラスタ内で使用されるデータを使用する場合に、カウンタの値が０になる可能性を高めることができる。
【００８６】
図１７に、一例として、１つのディレクトリＲＡＭ８０４に対して２つのカウンタ８０１ｂ、９０１ｂを設ける場合の概略の構成を示す。ディレクトリＲＡＭ８０４は、ディレ
クトリＲＡＭ８０４が属するクラスタ（図示せず）のメモリ（図示せず）の物理アドレス空間の前半部分のディレクトリ情報（前半アドレス）を管理する領域を有する。さらに、ディレクトリＲＡＭ８０４は、当該メモリの物理アドレス空間の後半部分のディレクトリ情報（後半アドレス）を管理する別の領域を有する。そして、クラスタ内のコントローラ（図示せず）は、カウンタ８０１ｂを制御して、ディレクトリＲＡＭ８０４の上記の前半アドレスに対応するディレクトリ情報を対象にカウント処理を行う。また、コントローラは、カウンタ９０１ｂを制御して、ディレクトリＲＡＭ８０４の上記の後半アドレスに対応するディレクトリ情報を対象にカウント処理を行う。なお、カウンタ８０１ｂ、９０１ｂの値のインクリメント処理及びデクリメント処理は、上記の実施例と同様であるため、詳細な説明は省略する。
【００８７】
ここで、当該メモリの物理アドレス空間の前半部分に格納されたデータに対するデータ要求が発生したとする。この場合、上記クラスタのコントローラは、カウンタ８０１ｂの値を確認する。そして、コントローラは、カウンタ８０１ｂの値が０である場合に、上記と同様に、ディレクトリＲＡＭ８０４の参照処理を省略し、メモリからデータを取得する。したがって、この構成では、カウンタ９０１ｂの値が０でなくてもディレクトリＲＡＭ８０４の参照処理が省略される。このため、上記の実施例の場合よりもディレクトリＲＡＭの参照処理が省略される可能性が高まると考えられる。
【００８８】
なお、上記の実施例ではディレクトリＲＡＭの参照処理を省略することを念頭に説明した。ただし、各クラスタがディレクトリＲＡＭを有さず、かつ、ディレクトリ情報がすべてメモリに格納されており、かつ、データとそのディレクトリ情報が別個のエントリに格納されている場合にも上記の構成を適用できる。すなわち、この場合、上記のカウンタをメモリ用に設け、コントローラがメモリ内のディレクトリ情報を参照してからデータ取得を行う際に、カウンタが上記のように制御される構成とする。これにより、コントローラは、カウンタの値に基づいてメモリ内のディレクトリ情報の参照を省略し、データ取得をより迅速かつ効率よく行うことができる。
【００８９】
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置（以下、コンピュータ等）に上記情報処理装置の設定を行うための管理ツール、ＯＳその他を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。ここで、設定とは、例えばレジスタの設定等を意味する。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。ここで、コンピュータは、例えば、クラスタやコントローラ等である。
【００９０】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリ等のメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやＲＯＭ等がある。
【００９１】
以上の実施形態に関し、さらに以下の付記を開示する。
【００９２】
（付記１）
他の演算処理装置に接続される演算処理装置において、
自身が管理する第１のデータと他の演算処理装置から取得した第２のデータとを用いて演算処理する演算処理部と、
前記第１のデータを記憶するメモリ部と、
前記第１のデータが他の演算処理装置に持ち出されているか否かを示すデータ使用状況を記憶するデータ使用状況記憶部と、前記データ使用状況記憶部に記憶されたデータ使用状況について、前記第１のデータが他の演算処理装置に持ち出されている状態と前記第１のデータが他の演算処理装置に持ち出されていない状態との間の遷移を示す指標部とを有し、前記指標部が、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第１のデータを取得する要求が発生したときに、前記データ使用状況記憶部に対するデータ使用状況の参照を省略する制御部と、
を有することを特徴とする演算処理装置。
【００９３】
（付記２）
前記演算処理装置が、前記指標部の動作を動作状態に設定する設定部をさらに有し、
前記設定部によって前記指標部が動作状態に設定されている場合に、前記指標部は前記遷移を示す
ことを特徴とする付記１に記載の演算処理装置。
【００９４】
（付記３）
前記指標部は、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す基準値からの指標値の増減によって前記遷移を示し、前記第１のデータが他の演算処理装置に持ち出されていない状態から他の演算処理装置に持ち出されている状態に遷移するときに前記指標値をインクリメントし、前記第１のデータが他の演算処理装置に持ち出されている状態から他の演算処理装置に持ち出されていない状態に遷移するときに前記指標値をデクリメントすることを特徴とする付記１又は付記２に記載の演算処理装置。
【００９５】
（付記４）
前記演算処理装置は、前記指標部を複数有し、
前記演算処理装置において、各指標部は、前記メモリ部に記憶されるそれぞれ異なるデータのデータ使用状況について、他の演算処理装置に持ち出されている状態と他の演算処理装置に持ち出されていない状態との間の遷移を示す
ことを特徴とする付記１から付記３のいずれかに記載の演算処理装置。
【００９６】
（付記５）
前記演算処理装置は、前記制御部に所定の信号を供給する信号処理部をさらに有し、
前記制御部は、前記所定の信号に従って前記データ使用状況記憶部を参照し、
前記信号処理部は、前記指標部が、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第１のデータを取得する要求が発生したときに、前記制御部に対する前記所定の信号の供給を停止する
ことを特徴とする付記１から付記４のいずれかに記載の演算処理装置。
【００９７】
（付記６）
前記指標部が、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第１のデータを取得する要求が発生したときに、前記データ使用状況記憶部には前記要求された第１のデータに関するデータ使用状況が存在しないことを前記制御部に通知するデータ使用状況通知部をさらに有することを特徴とする付記１から付記４のいずれかに記載の演算処理装置。
【００９８】
（付記７）
他の演算処理装置と、前記他の演算処理装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
自身が管理する第１のデータと他の演算処理装置から取得した第２のデータとを用いて演算処理する演算処理部と、
前記第１のデータを記憶するメモリ部と、
前記第１のデータが他の演算処理装置に持ち出されているか否かを示すデータ使用状況を記憶するデータ使用状況記憶部と、前記データ使用状況記憶部に記憶されたデータ使用状況について、前記第１のデータが他の演算処理装置に持ち出されている状態と前記第１のデータが他の演算処理装置に持ち出されていない状態との間の遷移を示す指標部とを有し、前記指標部が、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第１のデータを取得する要求が発生したときに、前記データ使用状況記憶部に対するデータ使用状況の参照を省略する制御部と、
を有する
ことを特徴とする情報処理装置。
【００９９】
（付記８）
前記演算処理装置が、前記指標部の動作を動作状態に設定する設定部をさらに有し、
前記設定部によって前記指標部が動作状態に設定されている場合に、前記指標部は前記遷移を示す
ことを特徴とする付記７に記載の情報処理装置。
【０１００】
（付記９）
前記指標部は、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す基準値からの指標値の増減によって前記遷移を示し、前記第１のデータが他の演算処理装置に持ち出されていない状態から他の演算処理装置に持ち出されている状態に遷移するときに前記指標値をインクリメントし、前記第１のデータが他の演算処理装置に持ち出されている状態から他の演算処理装置に持ち出されていない状態に遷移するときに前記指標値をデクリメントすることを特徴とする付記７又は付記８に記載の情報処理装置。
【０１０１】
（付記１０）
前記演算処理装置は、前記指標部を複数有し、
前記演算処理装置において、各指標部は、前記メモリ部に記憶されるそれぞれ異なるデータのデータ使用状況について、他の演算処理装置に持ち出されている状態と他の演算処理装置に持ち出されていない状態との間の遷移を示す
ことを特徴とする付記７から付記９のいずれかに記載の情報処理装置。
【０１０２】
（付記１１）
前記演算処理装置は、前記制御部に所定の信号を供給する信号処理部をさらに有し、
前記制御部は、前記所定の信号に従って前記データ使用状況記憶部を参照し、
前記信号処理部は、前記指標部が、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第１のデータを取得する要求が発生したときに、前記制御部に対する前記所定の信号の供給を停止する
ことを特徴とする付記７から付記１０のいずれかに記載の情報処理装置。
【０１０３】
（付記１２）
前記指標部が、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第１のデータを取得する要求が発生したときに、前記データ使用状況記憶部には前記要求された第１のデータに関するデータ使用状況が存在しないことを前記制御部に通知するデータ使用状況通知部をさらに有することを特徴とする付記７から付記１０のいずれかに記載の情報処理装置。
【０１０４】
（付記１３）
他の演算処理装置と、前記他の演算処理装置に接続されるとともに、自身が管理する第１のデータと他の演算処理装置から取得した第２のデータとを用いて演算処理を行う演算処理部と、前記第１のデータを記憶するメモリ部とを含む演算処理装置とを有する情報処理装置の制御方法において、
前記演算処理装置が有するデータ使用状況記憶部が、前記第１のデータが他の演算処理装置に持ち出されているか否かを示すデータ使用状況を記憶し、
前記演算処理装置が有する指標部が、前記データ使用状況記憶部に記憶されたデータ使用状況について、前記第１のデータが他の演算処理装置に持ち出されている状態と前記第１のデータが他の演算処理装置に持ち出されていない状態との間の遷移を示し、
前記演算処理装置が有する制御部が、前記指標部が、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第１のデータを取得する要求が発生したときに、前記データ使用状況記憶部に対するデータ使用状況の参照を省略することを特徴とする情報処理装置の制御方法。
【０１０５】
（付記１４）
前記演算処理装置が有する設定部が、前記指標部の動作を動作状態に設定し、
前記設定部が前記指標部を動作状態に設定した場合に、前記指標部は前記遷移を示す
ことを特徴とする付記１３に記載の情報処理装置の制御方法。
【０１０６】
（付記１５）
前記指標部は、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す基準値からの指標値の増減によって前記遷移を示し、前記第１のデータが他の演算処理装置に持ち出されていない状態から他の演算処理装置に持ち出されている状態に遷移するときに前記指標値をインクリメントし、前記第１のデータが他の演算処理装置に持ち出されている状態から他の演算処理装置に持ち出されていない状態に遷移するときに前記指標値をデクリメントすることを特徴とする付記１３又は付記１４に記載の情報処理装置の制御方法。
【０１０７】
（付記１６）
前記演算処理装置は、前記指標部を複数有し、
前記演算処理装置において、各指標部は、前記メモリ部に記憶されるそれぞれ異なるデータのデータ使用状況について、他の演算処理装置に持ち出されている状態と他の演算処理装置に持ち出されていない状態との間の遷移を示す
ことを特徴とする付記１３から付記１５のいずれかに記載の情報処理装置の制御方法。
【０１０８】
（付記１７）
前記演算処理装置が有する信号処理部が、前記制御部に所定の信号を供給し、
前記制御部は、前記所定の信号に従って前記データ使用状況記憶部を参照し、
前記信号処理部は、前記指標部が、前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第１のデータを取得する要求が発生したときに、前記制御部に対する前記所定の信号の供給を停止する
ことを特徴とする付記１３から付記１６のいずれかに記載の情報処理装置の制御方法。
【０１０９】
（付記１８）
前記演算処理装置が有するデータ使用状況通知部が、前記指標部が前記第１のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第１のデータを取得する要求が発生したときに、前記データ使用状況記憶部には該データに関するデータ使用状況が存在しないことを前記記憶制御部に通知することを特徴とする付記１３から付記１６のいずれかに記載の情報処理装置の制御方法。
【符号の説明】
【０１１０】
１、２    情報処理装置
１０、２０、３０、５０、６０、７０    クラスタ
８０    モードレジスタ
１００、２００、３００、５００、６００、７００    演算コア群
１０１、２０１、３０１、５０１、６０１、７０１    Ｌ２キャッシュ制御部
１０２、２０２、３０２、５０２、６０２、７０２    メモリ
１０３、２０３、３０３、５０３、６０３、７０３    Ｌ２キャッシュ
１０１ａ、２０１ａ、３０１ａ、５０１ａ、６０１ａ    コントローラ
５０１ｂ、８０１ｂ、９０１ｂ    カウンタ
１０３ａ、２０３ａ、５０３ａ、６０３ａ    タグＲＡＭ
１０３ｂ、２０３ｂ、５０３ｂ、６０３ｂ    データＲＡＭ
１０４、２０４、５０４、６０４、８０４    ディレクトリＲＡＭ
５０１ｐ    セレクタ
【図１】
2014199576.tif 000003
【図２】
2014199576.tif 000004
【図３】
2014199576.tif 000005
【図４】
2014199576.tif 000006
【図５】
2014199576.tif 000007
【図６】
2014199576.tif 000008
【図７】
2014199576.tif 000009
【図８】
2014199576.tif 000010
【図９】
2014199576.tif 000011
【図１０】
2014199576.tif 000012
【図１１】
2014199576.tif 000013
【図１２】
2014199576.tif 000014
【図１３】
2014199576.tif 000015
【図１４】
2014199576.tif 000016
【図１５】
2014199576.tif 000017
【図１６】
2014199576.tif 000018
【図１７】
2014199576.tif 000019