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

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

Info

Publication number
JP6094303B2
JP6094303B2 JP2013062812A JP2013062812A JP6094303B2 JP 6094303 B2 JP6094303 B2 JP 6094303B2 JP 2013062812 A JP2013062812 A JP 2013062812A JP 2013062812 A JP2013062812 A JP 2013062812A JP 6094303 B2 JP6094303 B2 JP 6094303B2
Authority
JP
Japan
Prior art keywords
data
arithmetic processing
cluster
processing unit
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013062812A
Other languages
English (en)
Other versions
JP2014186676A5 (ja
JP2014186676A (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 JP2013062812A priority Critical patent/JP6094303B2/ja
Priority to CN201410074708.1A priority patent/CN104077248A/zh
Priority to US14/195,966 priority patent/US20140289474A1/en
Publication of JP2014186676A publication Critical patent/JP2014186676A/ja
Publication of JP2014186676A5 publication Critical patent/JP2014186676A5/ja
Application granted granted Critical
Publication of JP6094303B2 publication Critical patent/JP6094303B2/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
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

本発明は、演算処理装置、情報処理装置及び情報処理装置の制御方法に関する。
情報処理装置においては、複数の演算コア間でメモリのデータを共有する演算処理装置が実用に供されている。当該演算処理装置においては、演算コアとL1キャッシュの組が複数組集約された演算コア群が形成される。演算コア群に対しては、L2キャッシュ、L2キャッシュ制御部、メモリが接続されている。これら演算コア群、L2キャッシュ、L2キャッシュ制御部、メモリのセットをクラスタと呼ぶ。
キャッシュとは、大容量のメモリに記憶されたデータのうち、頻繁に使用するデータを格納する小容量の記憶部である。メモリ内のデータをキャッシュに一時的に格納することにより、時間のかかるメモリへのアクセス頻度を低減する。キャッシュは階層構造を採り、高位層ほど高速であり、低位層ほど大容量である。
ディレクトリベースのキャッシュコヒーレンス制御方式では、上記のL2キャッシュには、当該L2キャッシュが属するクラスタの演算コア群が要求したデータが格納される。各演算コア群は、演算コア群に近いL2キャッシュをより頻繁に使用してデータを取得するように構成されている。また、データの整合性を保つため、1つのメモリに格納されているデータは当該メモリが属するクラスタによって管理される。また、この方式では、クラスタが、管理対象のメモリ内のデータが現在どのような状態でどのキャッシュに格納されているかを管理する。また、クラスタは、当該メモリに対するデータの要求を受けた場合に、データの状態に基づいてデータ取得要求に対して適切な処理を行う。そして、クラスタは、データ取得要求の処理後、当該データの状態に関する情報を更新する。
ここで、特許文献1に示されるように、上記のクラスタ構成及び処理体系を有する演算処理装置において、メモリに対するアクセスで生じるレイテンシを改善することが提案されている。特許文献1では、キャッシュにおいてキャッシュミスが発生したときに当該キャッシュに空きがない場合、当該キャッシュが属するクラスタ内のメモリに存在するデータを優先的にキャッシュから掃き出して空きを作成する。
特開2000−66955号公報
上記の技術では、キャッシュに空きがない場合にはメモリへのアクセスを行ってデータを書き戻す処理が発生する。メモリは大容量であり、演算コア群やキャッシュとは別のチップに搭載されることもある。このため、レイテンシの改善にあっては、依然としてメモリへのアクセスがボトルネックとなる可能性がある。
本件開示の技術は、上記の事情に鑑みてなされたものであり、その目的とするところは、メモリへのアクセス頻度を低減することが可能な演算処理装置、情報処理装置及び情報処理装置の制御方法を提供することである。
一実施形態による演算処理装置は、他の演算処理装置に接続される演算処理装置において、自身が管理する第1のデータと他の演算処理装置から取得した第2のデータとを用いて演算処理を行う演算処理部と、演算処理部を動作状態又は非動作状態に設定する設定部と、第1のデータと第2のデータとを保持するキャッシュメモリ部とを有し、該設定部が該演算処理部を動作状態に設定した場合、第2のデータが該キャッシュメモリ部から追い出されたときに、該追い出されたデータと該追い出されたデータを該他の演算処理装置のキャッシュメモリ部に記憶する契機となる要求とを、該他の演算処理装置に送信する制御部とを有する。
一実施形態によれば、メモリへのアクセス頻度を低減することが可能な演算処理装置、情報処理装置及び情報処理装置の制御方法を実現できる。
図1は、比較例に係る情報処理装置における一部のクラスタ構成を示す図である。 図2は、比較例に係るL2キャッシュ制御部の概略の構成を示す図である。 図3は、比較例に係るクラスタにおいてデータ取得要求が発生した場合の動作を示す図である。 図4は、図3に示す動作例におけるL2キャッシュ制御部の動作を示す図である。 図5は、比較例に係るクラスタにおいてデータ取得要求が発生した場合の動作を示す図である。 図6は、図5に示す動作例におけるL2キャッシュ制御部の動作を示す図である。 図7は、比較例においてデータのフラッシュバック処理とライトバック処理を行う際のクラスタの動作を示す図である。 図8は、図7に示す動作例におけるL2キャッシュ制御部の動作の一例を示す図である。 図9は、比較例に係る情報処理装置内において、データを排他的に取得する動作を示す図である。 図10は、図9に示す動作例におけるL2キャッシュ制御部の動作を示す図である。 図11は、本実施形態に係る情報処理装置における一部のクラスタ構成の概略を示す図である。 図12は、本実施形態に係るクラスタ内のL2キャッシュ制御部を示す図である。 図13は、本実施形態に係る情報処理装置内において、モードオン時のクラスタの演算コア群の動作状況を示す図である。 図14は、本実施形態において、ローカルのクラスタに属するL2キャッシュからデータを追い出す場合の動作を示す図である。 図15は、図14に示す動作例におけるL2キャッシュ制御部の動作を示す図である。 図16は、図14に示す動作例におけるコントローラを構成する回路を示す図である。 図17は、図14に示す動作例におけるコントローラを構成する回路を示す図である。 図18は、図14〜17に示す動作例におけるL2キャッシュ制御部のタイミングチャートである。 図19は、本実施形態において、ローカルのクラスタがホームのクラスタのメモリに格納されているデータを取得する動作を示す図である。 図20は、図19に示す動作例におけるL2キャッシュ制御部の動作を示す図である。 図21は、本実施形態に係るコントローラを構成する回路を示す図である。 図22は、本実施形態において情報処理装置内のクラスタが複数のグループを構成する場合の一例を示す図である。 図23は、図19〜22に示す動作例におけるL2キャッシュ制御部のタイミングチャートである。 図24は、本実施形態に係るコントローラを構成する回路の変形例を示す図である。 図25は、本実施形態に係るL2キャッシュ制御部の構成の一例を示す図である。
最初に、一実施形態に係る情報処理装置の比較例について、図面を参照しながら説明する。
(比較例)
図1は、比較例に係る情報処理装置1における一部のクラスタ構成を示す。図1に示すように、クラスタ10は、演算コアとL1キャッシュの組をn組(nは自然数)有する演算コア群100、L2キャッシュ制御部101、メモリ102を有する。L2キャッシュ制御部101はL2キャッシュ103を有する。クラスタ20、30も、クラスタ10と同様、演算コア群200、300、L2キャッシュ制御部201、301、メモリ202、302、L2キャッシュ203、303をそれぞれ有する。
以降の説明において、メモリに格納されるデータを要求している演算コアが属するクラスタをローカル(Local)と呼ぶ。また、要求されたデータが格納されているメモリが属
するクラスタをホーム(Home)と呼ぶ。さらに、ローカルはないクラスタをリモート(Remote)と呼ぶ。各クラスタは、データの要求元及び要求先に応じて、ローカルにもホームにもリモートにもなる。また、あるデータ取得要求の処理において、ローカルのクラスタは、ホームのクラスタを兼ねる場合がある。また、リモートのクラスタが、ホームのクラスタを兼ねる場合もある。さらに、ホームのクラスタが管理するホームのメモリに格納されているデータの状態情報をディレクトリ情報と呼ぶ。これらの詳細については後述する。
図1に示すように、各クラスタはL2キャッシュ制御部が互いにバスあるいはインターコネクトによって接続されている。情報処理装置1内では、メモリ空間はいわゆるフラットであり、物理アドレスによってどのクラスタに属するメモリにどのデータが格納されているかが一意に決まる。
例えば、クラスタ10が、クラスタ10内のメモリ102以外のメモリ202に格納されているデータを取得する場合、そのデータを保持するメモリ202が属するクラスタ20に対してデータの要求を行う。クラスタ20は、該当データの状態をチェックする。ここで、データの状態とは、データがどのクラスタにあるか、データが排他的に使用されているか否か、情報処理装置内におけるデータの同期状況等のデータの使用状況を意味する。また、取得対象のデータが、クラスタ20に属するL2キャッシュ203に格納されており、かつ、当該データの同期が情報処理装置1内で取れている場合、そのデータを要求元のクラスタ10に送信する。そして、クラスタ20は、当該データの状態情報に、要求元のクラスタ10に情報処理装置1内で同期されたデータが渡されたことを記録する。
図2は、L2キャッシュ制御部101の概略の構成を示す。L2キャッシュ制御部101は、コントローラ101aとL2キャッシュ103とディレクトリRAM104を備える。また、L2キャッシュ103は、タグRAM103aとデータRAM103bを備える。タグRAM103aは、データRAM103bが保持しているブロックのタグ情報を保持する。タグ情報とは、コヒーレンスプロトコル制御における各データの使用状況に関する情報やメモリ内のアドレス等を意味する。ここで、複数のプロセッサを使用するマルチプロセッサ環境においては、プロセッサ間で同一のデータを共有してアクセスする可能性が高い。そこで、マルチプロセッサ環境では、各キャッシュ内に存在するデータの一貫性を維持している。プロセッサ間の一貫性を維持するプロトコルをコヒーレンスプロトコルと呼ぶ。このようなプロトコルの一例として、MESIプロトコルが挙げられる。以下の説明では、データの使用状況をModified、Exclusive、Shared、Invalidの4状態で管理するMESIプロトコルを使用する。ただし、使用可能なプロトコルはこれに限られない。
コントローラ101aは、タグRAM103aを使用して、メモリのブロックがデータRAM103bにどのような状態で存在しているかやデータの有無をチェックする。データRAM103bは、例えばメモリ102内のデータのコピーを保持するRAMである。ディレクトリRAM104は、ホームのクラスタに属するメモリのディレクトリ情報を扱うRAMである。ディレクトリ情報は巨大になるため、メモリに格納され、そのキャッシュがRAMに置かれることが多い。しかし、ここでは、ディレクトリRAM104にホームのクラスタに属するメモリのディレクトリ情報が格納されている。
コントローラ101aは、演算コア、もしくは、別のクラスタのL2キャッシュ制御部のコントローラからの要求を受け付ける。コントローラ101aは、受け付けた要求内容に応じて、タグRAM103a、データRAM103b、ディレクトリRAM104、メモリ102、他のクラスタに対してそれぞれ動作要求を行う。そして、コントローラ101aは、要求された動作が完了すると、要求元にその結果を返す。
図3は、クラスタ10においてデータ取得要求が発生した場合の動作の一例を示す図である。図3では、クラスタ10がローカル及びホームのクラスタである。図3では、クラスタ10に属するメモリ102に対してデータ取得要求を行い、L2キャッシュ103においてキャッシュミスが発生したときの動作を説明する。なお、ここでは、L2キャッシュ制御部にデータ取得要求が届いた時点でL1キャッシュにおいてキャッシュミスが発生していることを前提として説明する。
ローカルであるクラスタ10の演算コアから、データの要求がL2キャッシュ制御部101に届く。ホームでもあるクラスタ10のL2キャッシュ制御部101は、L2キャッシュ103が該当データを保持していない(miss)ことを確認すると、ディレクトリRAM104内のディレクトリ情報を参照する。そして、L2キャッシュ制御部101は、ディレクトリ情報に基づいて当該データをリモートのクラスタのL2キャッシュが持ち出しているか否かをチェックする。L2キャッシュ制御部101は、リモートのクラスタのL2キャッシュが当該データを保持していない(miss)ことを確認すると、ローカルであるクラスタ10のメモリ102にデータ取得要求を行う。メモリ102からデータが返ってくると、L2キャッシュ制御部101は、L2キャッシュ103のデータRAM103bにデータを格納する。さらに、L2キャッシュ制御部101は、演算コア群100内の要求元の演算コアにデータを送る。そして、L2キャッシュ103のタグRAM103aには、情報処理装置1内で同期された状態でデータを取得したという情報が記憶される。また、ディレクトリRAM104には、当該データがローカルであるクラスタ10が持っていることを示す情報が記憶される。
このとき、L2キャッシュ制御部101は、タグRAM103aを参照してL2キャッシュ103のデータRAM103bにデータの空きがないことを確認した場合、ランダムアルゴリズムやLRU(Least Recently Used)アルゴリズム等の所定のアルゴリズムに
従って、L2キャッシュ103内のデータを追い出す。L2キャッシュ制御部101は、タグRAM103aを参照し、追い出すデータがメモリ102内のデータと同じ状態を保っている場合は当該データを破棄する。一方、L2キャッシュ制御部101は、タグRAM103aを参照し、追い出すデータが更新されていた場合はメモリ102にデータを書き戻す。
これにより、演算コア群100の演算コアにより要求されたデータが、L2キャッシュ103のデータRAM103bの空き領域に格納される。そして、再度演算コア群100の演算コアから当該データに対するデータ取得要求が発生した場合は、L2キャッシュ制御部101は、データRAM103bに格納されたデータを取り出して演算コアに送る(hit)。したがって、当該データがデータRAM103bから追い出されない限り、L2
キャッシュ制御部101は、メモリ102に対してアクセスを行わない。
図4は、図3に示す動作例におけるL2キャッシュ制御部101の動作を示す図である。コントローラ101aは、演算コア群100の演算コアからデータ取得要求を受け付ける。当該データ取得要求には、演算コアからの要求であることを示す情報と要求の種類とメモリのアドレスが含まれる。コントローラ101aは要求内容に適切な処理を開始する。
まず、コントローラ101aは、タグRAM103aに対して、データ取得要求の対象となるデータを含むメモリのブロックのコピーがデータRAM103bにあるか否かをチェックする。タグRAM103aから当該コピーが「ない(miss)」という結果を受け取ると、ディレクトリRAM104に対して、データ取得要求の対象となるデータをリモートのクラスタが持ち出しているか否かをチェックする。コントローラ101aは、ディレクトリRAM104から「どのクラスタも持ち出していない(miss)」という結果を受け取ると、メモリ102に対して当該データのデータ取得要求を行う。コントローラ101aは、メモリ102から当該データが返ってくると、ディレクトリRAM104に、当該データについて「ホームが持っている」ことを示す情報を登録する。また、コントローラ101aは、データの使用状況(Sharedなど)を示す情報をタグRAM103aに格納する。また、コントローラ101aは、当該データをデータRAM103bに格納する。そして、コントローラ101aは、演算コア群100内の要求元の演算コアに当該データを送る。
次に、図5は、クラスタ10においてデータ取得要求が発生した場合の動作例を示す図である。図5に示す例では、クラスタ10がローカルのクラスタであり、クラスタ20がホームのクラスタである。ローカルであるクラスタ10の演算コア群100の演算コアからクラスタ10のL2キャッシュ103に対してデータ取得要求が行われる。そして、L2キャッシュ103には当該データがないためキャッシュミスが発生する(miss)。そこで、クラスタ10は、ホームのクラスタであるクラスタ20に対して当該データのデータ取得要求を行う。クラスタ20のL2キャッシュ制御部201が、L2キャッシュ203のディレクトリ情報をチェックする。L2キャッシュ制御部201のコントローラ201aは、L2キャッシュ203にも、リモートのクラスタ内のL2キャッシュにもデータがないことを確認すると(miss)、メモリ202に対して当該データのデータ取得要求を行う。
メモリ202から当該データが返ってくると、L2キャッシュ制御部201は、ディレ
クトリRAM204のディレクトリ情報を更新する。そして、L2キャッシュ制御部201は、データを要求元のローカルのクラスタ10に送る。クラスタ10のL2キャッシュ制御部101は、クラスタ20のL2キャッシュ制御部201から受け取ったデータをL2キャッシュ103に格納する。そして、L2キャッシュ制御部101は、当該データを演算コア群100の要求元の演算コアに送る。
このとき、ホームのクラスタ20のL2キャッシュ203には当該データは格納されない。理由は次の通りである。まず、データを要求しているのはローカルのクラスタ10の演算コアであり、ホームのクラスタ20の演算コアではないからである。そして、ホームのクラスタ20のL2キャッシュ203にデータを格納すると、ホームのクラスタ20の演算コア群200にとっては不要なデータがL2キャッシュ203に格納されることになるからである。また、このような不要なデータがL2キャッシュ203に格納されると、演算コア群200が使用するデータまでL2キャッシュ203から追い出される可能性があるからである。
図6は、図5に示す動作例におけるL2キャッシュ制御部101、201の動作を示す図である。ローカルのクラスタ10内のL2キャッシュ制御部101のコントローラ101aは、演算コア群100の演算コアからデータ取得要求を受け付ける。当該データ取得要求には、演算コアからの要求であることを示す情報とデータ取得要求の種類とメモリのアドレスが含まれる。コントローラ101aは、要求内容に適切な処理を開始する。
コントローラ101aは、タグRAM103aに対して、データ取得要求の対象となるデータを含むメモリのブロックのコピーがデータRAM103bにあるか否かをチェックする。コントローラ101aは、タグRAM103aから当該コピーが「ない(miss)」という結果を受け取ると、ホームのクラスタ20に属するL2キャッシュ制御部201のコントローラ201aに対して、当該データのデータ取得要求を行う。
コントローラ201aは、当該データ取得要求を受け付けると、ディレクトリRAM204に対して、データ取得要求の対象となるデータがいずれかのクラスタのL2キャッシュに格納されているか否かチェックする。コントローラ201aは、ディレクトリRAM204から「どのクラスタも持っていない(miss)」という結果を受け取ると、メモリ202に対して当該データのデータ取得要求を行う。コントローラ201aは、メモリ202から当該データが返ってくると、ディレクトリRAM204に、当該データの使用状況について「要求元のクラスタ10が持っている」ことを示す情報を登録する。そして、コントローラ201aは、当該データを要求元のクラスタ10のコントローラ101aに送る。データを受け取ったクラスタ10のコントローラ101aは、当該データの使用状況(Sharedなど)をタグRAM103aに格納する。また、コントローラ101aは、当該データをデータRAM103bに格納する。そして、コントローラ101aは、演算コア群100内の要求元の演算コアに当該データを送る。
図7は、比較例においてリモートのクラスタへのデータのフラッシュバック(Flush Back)処理とライトバック(Write Back)処理を行う際のクラスタの動作を示す図である。ここで、リモートのクラスタへのフラッシュバック処理とは、あるクラスタが、他のクラスタから取得したデータをキャッシュから追い出す際の処理である。このフラッシュバック処理は、追い出されたデータが更新されておらず情報処理装置1内で同期が取れている(cleanである)場合に、ホームのクラスタにローカル(ホームから見るとリモート)の
クラスタからデータが追い出されたことを通知する処理である。この処理は、ホームのクラスタにディレクトリ情報を更新させるための処理である。
また、リモートのクラスタへのライトバック処理とは、あるクラスタが、他のクラスタ
から取得したデータをキャッシュから追い出す際の処理である。このライトバック処理は、追い出されたデータが更新されており情報処理装置1内で同期が取れていない(dirty
である)場合に当該他のクラスタに、データがdirtyであることを通知する処理である。
以下に説明するように、比較例においては、クラスタは、リモートのクラスタへのフラッシュバック処理を行う場合は、データの取得元であるクラスタに対して、フラッシュバック通知を行い、データは送らない。一方、クラスタは、リモートのクラスタへのライトバック処理を行う場合は、データの取得元であるクラスタに対してライトバック通知を行うとともに、メモリへの格納のためにデータも送る。
上述した通り、L2キャッシュに新たなデータを格納するときに、L2キャッシュが満杯で空き領域がない場合、所定のアルゴリズムに従ってデータを追い出す。図7では、クラスタ10がローカルのクラスタであり、クラスタ20がホームのクラスタである。なお、この場合、クラスタ20はリモートのクラスタでもある。さらに、情報処理装置1内の図示しないクラスタがリモートとなる。また、図7では、クラスタ10は、ローカルのクラスタ10に属するL2キャッシュ103のデータRAM103bに空きがなく、データRAM103bに格納されているデータのうち、リモートのクラスタ20のメモリ202に格納されるデータを追い出す。
この場合、図7に示すように、クラスタ10のL2キャッシュ制御部101は、クラスタ20のL2キャッシュ制御部201に対して、L2キャッシュ103から当該データを追い出す通知を行う。ここで、この通知は、フラッシュバック要求とライトバック要求のいずれかである。なお、フラッシュバック要求とライトバック要求が、所定の要求の一例である。そして、追い出し対象のデータがcleanなデータである場合、フラッシュバック
要求がホームのクラスタ20のL2キャッシュ制御部201に送られる。L2キャッシュ制御部201は、データの要求元であるクラスタ10から該当データが追い出された、ということをL2キャッシュ制御部201内のディレクトリ情報に記録する。
一方、該当データがdirtyなデータである場合、ライトバック要求とともに該当データ
がホームのクラスタ20のL2キャッシュ制御部201に送られる。ここで、データがdirtyになる場合の一例としては、ローカルのクラスタ10の演算コア群100によって更
新される場合等が挙げられる。そして、L2キャッシュ制御部201は、データの要求元であるクラスタ10から該当データが追い出されたことを、ディレクトリRAM204に格納されているディレクトリ情報に記録する。さらに、L2キャッシュ制御部201は、該当データをホームのクラスタ20に属するメモリ202へ書き戻す。なお、該当データは、ホームのクラスタ20に対してリモートとなるクラスタの演算コアが要求しているデータである。すなわち、当該データはホームのクラスタ20内の演算コア群200が要求しているデータではない。仮にホームのクラスタ20内のL2キャッシュ203に当該データを格納する場合、演算コア群200が要求している他のデータが追い出される可能性がある。このため、ホームのクラスタ20内のL2キャッシュ203には当該データは格納されない。
図8は、図7に示す動作例におけるL2キャッシュ制御部101、201の動作を示す図である。なお、ここでは、データがL2キャッシュ制御部101のL2キャッシュ103から追い出されるデータが決定した後の処理について説明する。L2キャッシュ制御部101のコントローラ101aは、タグRAM103aに対して、当該データを有するブロックの無効化を要求する。ここで、コントローラ101aは、当該データがdirtyであ
り、ホームのクラスタ20側のコントローラ201aに対してライトバック要求の通知を行う場合は、データRAM103bから該当ブロックのデータを読み出す。そして、コントローラ101aは、コントローラ201aに対して、フラッシュバック要求の通知を行うか、あるいはライトバック要求の通知を行うとともに該当データを送る。要求を受け取
ったホームのクラスタ20側のコントローラ201aは、ディレクトリRAM204に対して「データの要求元であるクラスタ10がデータを持っている」ことを示す情報を無効化する。そして、コントローラ201aは、ライトバック要求の場合は、該当データをメモリ202へ書き戻す。
次に、図9は、情報処理装置1内において、ローカルのクラスタ10がホームのクラスタ20のメモリ202に格納されているデータを排他的に取得する動作を示す。例えば、演算コアによってデータが更新される場合に、排他的データ取得要求が使用される。排他的データ取得要求とは、ある時点において、ある1つのクラスタ(のキャッシュ)が当該要求に係るデータを保持し、他のクラスタは当該データを保持しないことを保障するための要求である。データ更新時に他のクラスタ内のL2キャッシュも当該データを保持していると、情報処理装置1内で当該データの同期が取れなくなってしまう。排他的データ取得要求は、これを防止するための要求である。
まず、ローカルのクラスタ10の演算コア群100内の演算コアが、データを要求する。L2キャッシュ制御部101は、当該データ取得要求を受けると、L2キャッシュ103に当該データが格納されているか否かをチェックする。L2キャッシュ103に当該データが格納されていない場合(miss)、L2キャッシュ制御部101は、ホームのクラスタ20のL2キャッシュ制御部201に対して当該データの排他的データ取得要求を送る。L2キャッシュ制御部201は、排他的データ取得要求を受けると、L2キャッシュ制御部201内のディレクトリ情報を参照する。当該ディレクトリ情報により、ホームを含むクラスタのうちどのクラスタが当該データを保持しているかがわかる。そして、L2キャッシュ制御部201は、ディレクトリ情報が示す該当データを持っているクラスタに対して、当該データの破棄要求を送る。
図9に示す例では、L2キャッシュ203に当該データが格納されている。そこで、L2キャッシュ制御部201は、L2キャッシュ203から当該データを破棄する。L2キャッシュ制御部201は、破棄したデータをL2キャッシュ制御部101に送る。また、L2キャッシュ制御部201は、ディレクトリ情報に、当該データの要求元であるクラスタ10が該当データを保持している唯一のクラスタであること示す情報を記録する。これにより、当該データの要求元であるクラスタ10が該当データをL2キャッシュ103に格納する。
図10は、図9に示す動作例におけるL2キャッシュ制御部101、201の動作を示す図である。ローカルのクラスタ10内のL2キャッシュ制御部101のコントローラ101aは、演算コア群100の演算コアから排他的データ取得要求を受け付ける。当該データ取得要求には、演算コアからの要求であることを示す情報と排他的データ取得要求であることを示す情報とメモリのアドレスが含まれる。コントローラ101aは、要求内容に適切な処理を開始する。
コントローラ101aは、タグRAM103aに対して、データ取得要求の対象となるデータを含むメモリのブロックのコピーがデータRAM103bにあるか否かをチェックする。コントローラ101aは、タグRAM103aから当該コピーが「ない(miss)」という結果を受け取ると、ホームのクラスタ20に属するL2キャッシュ制御部201のコントローラ201aに対して、当該データのデータ取得要求を行う。
コントローラ201aは、当該データ取得要求を受け付けると、ディレクトリRAM204に対して、要求しているデータがいずれかのクラスタのL2キャッシュに格納されているか否かチェックする。コントローラ201aは、ディレクトリRAM204から「ホームのクラスタ20が持っている(hit)」という結果を受け取ると、タグRAM203
aに対して当該データの無効化要求を行う。また、コントローラ201aは、データRAM203bから当該データを読み出す。そして、コントローラ201aは、ディレクトリRAM204に対して、「ホームのクラスタが持っている」ことを示す情報を無効化する。さらに、コントローラ201aは、ディレクトリRAM204に対して、「当該データの要求元であるクラスタ10がデータを持っている」ことを示す情報を追加する。そして、コントローラ201aは、当該データを要求元のクラスタ10のコントローラ101aに送る。当該データを受け取ったクラスタ10のコントローラ101aは、データの使用状況をタグRAM103aに登録する。また、コントローラ101aは、当該データをデータRAM103bに格納する。そして、コントローラ101aは、演算コア群100内の要求元の演算コアに当該データを送る。
以上のように、比較例においては、リモートのクラスタに属するメモリに格納されるデータを要求する場合、ローカル、ホーム、リモートの各L2キャッシュにおいてキャッシュミスが発生する可能性がある。このとき、クラスタ間の通信に加え、メモリとの通信が実行される。メモリは、L2キャッシュに比べて大容量である。このため、メモリへのアクセス時に生じるレイテンシは、L2キャッシュへのアクセス時に生じるレイテンシよりも長い。また、メモリは、演算コアやL2キャッシュとは別個のチップ上に配置されることもある。このため、チップ越し(オフチップ)の通信は、チップ内(オンチップ)の通信に比べて処理時間が長くなる可能性もある。
そこで、以上の比較例に関する説明を踏まえ、一実施形態に係る情報処理装置の例について、図面を参照しながら以下に説明する。以下の例においては、各クラスタの演算コア群の動作状態及び非動作状態が制御されている。また、非動作状態にされた演算コア群が属するクラスタのL2キャッシュを、動作状態にされた演算コア群用のキャッシュ、いわゆるビクティムキャッシュ(Victim Cache)として使用する。これにより、あるアプリケーションが1つのクラスタに属するメモリの容量を超えるメモリ空間を使用する際に、メモリへのアクセスをできるだけ抑える。そして、メモリへのアクセスに伴って発生するレイテンシを低減する。以下にその詳細について説明する。
図11は、本実施例としての情報処理装置2における一部のクラスタ構成の概略を示す。図11に示すように、情報処理装置2は、比較例と同様、クラスタ50、60、70を有する。なお、クラスタ50、60、70が演算処理装置の一例に相当する。また、ローカル、ホーム、リモートの違いも比較例において説明した通りであり、ここでは説明を省略する。クラスタ50は、演算コア群500、L2キャッシュ制御部501、メモリ502を有する。L2キャッシュ制御部501はL2キャッシュ503を有する。クラスタ60、70も、クラスタ50と同様、演算コア群600、700、L2キャッシュ制御部601、701、メモリ602、702、L2キャッシュ603、703をそれぞれ有する。なお、演算コア群500、600、700が演算処理部の一例に相当する。また、L2キャッシュ503、603、703がキャッシュメモリ部の一例に相当する。さらに、L2キャッシュ制御部501、601、701が制御部の一例に相当する。そして、本実施形態においては、クラスタ50、60、70が1つのグループを構成する。ここで、グループは、1つのアプリケーションの実行処理を担当するクラスタの集まりである。ただし、グループを形成する基準はこれに限られず、適宜クラスタをグループ分けすることができる。
図11に示すように、各クラスタはL2キャッシュ制御部が互いにバスあるいはインターコネクトによって接続されている。情報処理装置2内では、メモリ空間はいわゆるフラットであり、物理アドレスによってどのクラスタに属するメモリにどのデータが格納されているかが一意に決まる。
図12は、クラスタ50内のL2キャッシュ制御部501を示す図である。L2キャッシュ制御部501は、コントローラ501aとレジスタ501bとL2キャッシュ503とディレクトリRAM504を備える。また、L2キャッシュ503は、タグRAM503aとデータRAM503bを有する。また、レジスタ501bが設定部の一例に相当する。なお、タグRAM503a、データRAM503b、ディレクトリRAM504は、それぞれ比較例と同様の機能を有するため、ここでは詳細な説明を省略する。
レジスタ501bは、本実施例に係る情報処理装置2内でのクラスタ50の動作モードを制御する。本実施例では、一例として、動作モードは「モードオフ」、「モードオン及び演算コア動作」、「モードオン及び演算コア非動作」の3つのモードを有する。ここで「モードオフ」とは、各クラスタが上記の比較例に示した動作を行う動作モードである。「モードオン及び演算コア動作」は、クラスタが演算コア群を動作状態とした上で本実施例の動作を行う(モードオン)動作モードである。また、「モードオン及び演算コア非動作」は、クラスタが演算コア群を非動作状態とした上で本実施例の動作を行う動作モードである。なお、これらの動作モードにおける処理の詳細については後述する。
コントローラ501aがレジスタ501bの設定値を読み込み、設定値に従って動作モードを切り換える。また、本実施例では、情報処理装置2においてアプリケーションの実行前に動作モードの切り換えを行う。さらに、本実施例では、情報処理装置2のOS(Operating System)が各クラスタのレジスタの動作モードの切り換えを制御する。なお、動作モードの切り換えは、情報処理装置2のユーザが明示的にOSに指示をして行ってもよいし、実行するアプリケーションのメモリ使用量等の情報に基づいてOSが自律的に行ってもよい。
図13は、情報処理装置2内において、モードオン時のクラスタ50、60、70の演算コア群の動作状況を示す図である。一例として、モードオン時、1グループ内のクラスタ50、60、70は、グループ内で1つのクラスタに属する演算コア群が動作するように制御される。図13では、クラスタ50の動作モードが「モードオン及び演算コア動作」であり、クラスタ60、70の動作モードが「モードオン及び演算コア非動作」である。したがって、クラスタ50の演算コア群500が動作状態となり、クラスタ60、70の演算コア群600、700はそれぞれ非動作状態となる。なお、一例として、情報処理装置2では、クラスタ50、60、70を有するグループが複数構成されている。そして、各グループが、情報処理装置2において実行される1つのプロセスの処理にそれぞれ対応している。
図14は、本実施例において、クラスタ50に属するL2キャッシュ503からクラスタ60に属するメモリ602に格納されるデータを追い出す場合の動作を示す図である。比較例と同様、L2キャッシュ制御部501は、L2キャッシュ503に新たなデータを格納するときに、L2キャッシュ503に空き領域がない場合、所定のアルゴリズムに従ってデータを追い出す。L2キャッシュ制御部501は、タグRAM503aを参照して、追い出すデータがcleanかdirtyかを判定する。そして、L2キャッシュ制御部501は、データがcleanの場合はL2キャッシュ制御部601にフラッシュバック要求を通知す
るとともにデータを送る。また、L2キャッシュ制御部501は、データがdirtyの場合
はL2キャッシュ制御部601にライトバック要求を通知するとともにデータを送る。
図15は、図14に示す動作例におけるL2キャッシュ制御部501、601の動作を示す図である。上記の通り、L2キャッシュ制御部501、601は、コントローラ501a、601aとレジスタ501b、601bとL2キャッシュ503、603とディレクトリRAM504、604をそれぞれ備える。また、L2キャッシュ503、603は
、タグRAM503a、603aとデータRAM503b、603bをそれぞれ備える。
また、図16、17は、図14に示す動作例におけるコントローラ501a、601aが有する回路の一部をそれぞれ示す図である。図16に示すコントローラ501a内の回路は、クラスタ50がローカルとなり、動作モードが「モードオン及び演算コア動作」である場合の制御回路である。図16に示すコントローラ501a内の回路により、ローカルのクラスタ50のL2キャッシュ503からリモートのクラスタ60のメモリ602に格納されるデータを追い出す場合に、当該データがホームのクラスタ60に送られる。すなわち、コントローラ501aがタグRAM503aを参照して当該データがcleanであ
ることを確認したときに、図16に示す制御回路においてRequestIsFlushBackがアサートされる。そして、RequestIsFlushBackがアサートされると、追い出されるデータがホームのクラスタ60に送られる。なお、図16において、DataRead(データRAMのデータを読み出す)とDataSend(ホームのクラスタにデータを送る)が動作を指示する信号であり、その他はフラグ信号である。
図16に示すように、ANDゲート501cは、クラスタ50の動作モードが「モードオン及び演算コア動作」である場合に「1」を出力する。それ以外の場合、ANDゲート501cは「0」を出力する。また、ANDゲート501dは、ANDゲート501cの出力が「1」であり、フラッシュバック処理を行う場合に「1」を出力する。それ以外の場合、ANDゲート501cは「0」を出力する。
ORゲート501eは、ANDゲート501dの出力が「1」あるいは比較例の動作に従ってデータRAM503bを参照する場合に、データRAM503bのデータの読み出し指示信号(DataRead2)を出力する。ORゲート501fは、ANDゲート501dの
出力が「1」あるいは比較例の動作に従ってホームのクラスタにデータを送る場合に、ホームのクラスタにデータを送る指示信号(DataSend2)を出力する。なお、ORゲート5
01e、501fの後段の回路は従来と同様の回路であるため、ここでは図示及び説明を省略する。
ANDゲート501c、501dにより、クラスタ50の動作モードが「モードオン及び演算コア動作」の場合に、クラスタ50(ローカル)でフラッシュバック要求が発生すると、L2キャッシュ503のデータRAM503bからのデータ読み出しが指示される(DataRead2)。さらに、読み出されたデータのホームに転送する指示信号が出力される
(DataSend2)。一方、クラスタ50の動作モードが「モードオフ」又は「演算コア非動
作」の場合は、ANDゲートcが「0」を出力する。そして、ANDゲート501dによってクラスタ50(ローカル)でのフラッシュバック要求の信号(RequestIsFlushBack)が遮断される。フラッシュバック要求の信号が遮断された場合でも、比較例で説明したタグRAM503a及びデータRAM503bからの読み出しや、他のクラスタ等へのデータ転送が発生すると、ORゲート501e、501fによって、それぞれの指示信号による制御が実行される(図16における、比較例のDataRead、比較例のDataSend)。
図17に示すコントローラ601a内の回路は、クラスタ60がホームとなり、動作モードが「モードオン及び演算コア非動作」である場合の制御回路である。図17に示すコントローラ601a内の回路により、ローカルのクラスタ50から追い出されたデータがL2キャッシュ603に格納される。図17において、TAGSave(タグRAMにデータを
格納する)、DataSave(データRAMにデータを格納する)、DirectoryUpdate(SaveLocal)(ディレクトリRAMのディレクトリ情報を更新する)、MemorySave(メモリにデータを格納する)が動作を指示する信号である。また、図17において、その他はフラグ信号である。
ANDゲート601cは、クラスタ60の動作モードが「モードオン及び演算コア非動作」である場合に「1」を出力する。それ以外の場合、ANDゲート601cは「0」を出力する。ORゲート601dは、クラスタ50(ローカル)からフラッシュバック要求又はライトバック要求を受けた場合に「1」を出力する。
ORゲート601fは、ANDゲート601eの出力が「1」あるいは比較例の動作に従ってタグRAM603aにデータの使用状況に関するデータを登録する場合に、タグRAM603aに当該データを登録する指示信号(TagSave2)を出力する。ORゲート601gは、ANDゲート601eの出力が「1」あるいは比較例の動作に従ってデータRAM603bに追い出されたデータを格納する場合に、データRAM603bにデータを格納する指示信号(DataSave2)を出力する。ORゲート601hは、ANDゲート601
eの出力が「1」あるいは比較例の動作に従ってディレクトリRAM604のディレクトリ情報を更新する場合に、ディレクトリRAM604のディレクトリ情報を更新する指示信号(DirectoryUpdate(SaveLocal)2)を出力する。
ANDゲート601jは、クラスタ60の動作モードが「モードオン及び演算コア非動作」であり、かつクラスタ50からのフラッシュバック要求の信号がアサートされると、メモリ602へのデータ格納を禁止する。あるいは、ANDゲート601jは、クラスタ60の動作モードが「モードオン及び演算コア非動作」であり、ライトバック要求の信号がアサートされると、メモリ602へのデータ格納を禁止する。一方、ANDゲート601jは、クラスタ60の動作モードが「モードオフ」か「演算コア動作」である場合に、比較例の動作に従ってデータをメモリ602に格納するときに、データのメモリ602への格納を行う指示信号(MemorySave2)を出力する。または、クラスタ50からフラッシ
ュバック要求もライトバック要求も通知されていない場合に、比較例の動作に従ってデータをメモリ602に格納するときに、当該指示信号(MemorySave2)を出力する。なお、
ORゲート601f〜601h、ANDゲート601jの後段の回路は従来と同様の回路であるため、ここでは図示及び説明を省略する。
したがって、例えばクラスタ60の演算コア群600が動作状態にある場合は、ANDゲート601eの出力は「0」となる。したがって、例えばローカルのクラスタ50からのフラッシュバック要求(RequestIsFlushBack)によっては、TAGSave2、DataSave2、DirectoryUpdate(SaveLocal)2、MemorySave2はアサートされない。その代わり、比較例の動
作により、TAGSave、DataSave、DirectoryUpdate(SaveLocal)、MemorySaveの指示信号に
従った処理が実行される。
一方、クラスタ60の動作モードが「モードオン及び演算コア非動作」である場合、コントローラ601aは、フラッシュバック通知又はライトバック通知を受け付けると、ANDゲート601eの出力が「1」となる。この場合、ORゲート601fの出力が「1」となり、タグRAM603aに対して追い出されたデータに関する情報の更新が要求される。また、ORゲート601gの出力が「1」となるため、追い出されたデータはL2キャッシュ603のデータRAM603bに格納される。さらに、ORゲート601hの出力が「1」となるため、ディレクトリRAM604に対して追い出されたデータに関するディレクトリ情報の更新が要求される。そして、インバータ601iの出力は「0」となるため、ANDゲート601jの出力も「0」となり、メモリ602にはデータは格納されない。すなわち、メモリ602へのアクセスが発生せず、レイテンシ発生の懸念もない。
ここで、図15に示すように、コントローラ501aは、タグRAM503aに対して、追い出し対象のデータがデータRAM503bから追い出されたこと(Invalid)を登
録するよう要求する。次に、コントローラ501aは、データRAM503bから追い出
すデータを取り出す。コントローラ501aは、取り出したデータが情報処理装置2内で同期が取れている(データがcleanである)場合は、ホームのクラスタ60のコントロー
ラ601aに、フラッシュバック要求を通知するとともに追い出されるデータを送る。また、コントローラ501aは、追い出されるデータが情報処理装置2内で同期が取れていない(データがdirtyである)場合は、コントローラ601aに、ライトバック要求を通
知するとともに追い出されるデータを送る。
ホームのクラスタ60のコントローラ601aは、ローカルのクラスタ50のコントローラ501aから上記のフラッシュバック要求又はライトバック要求を受け取る。そして、コントローラ601aは、データRAM603bに当該要求とともに受け取ったデータ、すなわちデータRAM503bから追い出されたデータを格納する。このため、コントローラ601aは、タグRAM603aに対して、データRAM603bに当該データが格納されていることを示すように情報を更新する。次に、コントローラ601aは、データRAM603bに当該データを格納する。そして、コントローラ601aは、ディレクトリRAM604に対して、当該データがホームのクラスタ60に追加されたことを示すようディレクトリ情報の更新を要求する。さらに、コントローラ601aは、ディレクトリRAM604に対して、ローカルのクラスタ50から破棄されたことを示すようディレクトリ情報の更新を要求する。
図18は、図15〜17に示す動作例におけるL2キャッシュ制御部501、601のタイミングチャートである。以下の説明において、チャート内のステップをSと略記する。図18は、コントローラ501aがコントローラ601aに対してライトバック要求を送る場合を示す。S101において、コントローラ501aは、タグRAM503aに対して、追い出し対象のデータがデータRAM503bから追い出されたこと(Invalid)
を登録するよう要求する。なお、どのデータが追い出しの対象となるかは、別途LRUアルゴリズム等によりあらかじめ決められている。S102において、タグRAM503aは、当該要求に対する応答において、データの使用状況を示す情報(Modified;Value=M
)をコントローラ501aに送る。S103では、コントローラ501aは、タグRAM503aから取得したアドレスを用いてデータRAM503bからデータの読み出しを行う。S104において、データRAM503bは、コントローラ501aからの要求に含まれるアドレスに一致するアドレスを有するデータを読み出し、コントローラ501aに送る。
コントローラ501aは、データRAM503bから追い出されたデータを取得すると、S105において、コントローラ601aにフラッシュバック要求又はライトバック要求を送るとともに当該データを送る。コントローラ501aは、S102においてタグRAM503aから取得したデータの使用状況(cleanかdirtyか)に基づいてフラッシュバック要求かライトバック要求かを決定する。図18では、コントローラ501aはライトバック要求をコントローラ601aに送る。また、コントローラ501aは、当該データがどのクラスタのメモリに格納されているかを示すアドレスもコントローラ601aに送る。
S106において、コントローラ601aは、タグRAM603aに対して、コントローラ501aが送ったデータがデータRAM603bに格納されることを示す情報を記憶するよう要求する。さらに、コントローラ601aは、タグRAM603aに対して、当該データがどのクラスタのメモリに格納されているかを示すアドレスを記憶するよう要求する。S107において、タグRAM603aは、コントローラ601aの当該要求に従って記憶処理を行い、処理が完了したら、完了したことをコントローラ601aに通知する。S108において、コントローラ601aは、当該データをデータRAM603bに格納する。S109において、データRAM603bは当該データを格納した後、格納処
理が完了したことをコントローラ601aに通知する。
S110において、コントローラ601aは、ディレクトリRAM604に対して、当該データがホームのクラスタ60が持っていることを示すようディレクトリ情報の更新を要求する。さらに、コントローラ601aは、ディレクトリRAM604に対して、当該データがリモートでもあるローカルのクラスタ50から破棄されたことを示すようディレクトリ情報の更新を要求する。S111では、ディレクトリRAM604は当該ディレクトリ情報を更新した後、更新処理が完了したことをコントローラ601aに通知する。S112では、コントローラ601aは以上の処理が完了したことをコントローラ501aに通知する。
ところで、本実施形態においてディレクトリRAMは、ディレクトリ情報において、データRAM内に格納されている各データがどのクラスタに持ち出されているかを、各クラスタに対応するビットによって管理する。例えば、データを持ち出しているクラスタに対応するビットを「1」とし、データを持ち出していないクラスタに対応するビットを「0」とする。したがって、例えば上記のS110において、ディレクトリRAM604は、クラスタ60に対応するビットを「1」とし、クラスタ50に対応するビットを「0」とする。以下の説明においても、ディレクトリRAMは、ディレクトリ情報における当該ビットを変更することによって、各データの使用状況を記憶する。ただし、ディレクトリRAMにおけるクラスタのデータの持ち出し状況を管理する構成は、上記に限られない。
なお、コントローラ501aがコントローラ601aに対してフラッシュバック要求を送る場合も、コントローラ601aにおける処理は上記と同様であるため、ここではその説明を省略する。また、上記の例では、コントローラ501aがフラッシュバック要求かライトバック要求をコントローラ601aに送る構成を用いた。ただし、コントローラ501aがフラッシュバック要求の代わりにライトバック要求を送る構成を用いてもよい。このような構成とした場合、ホームのクラスタ60側では、フラッシュバック要求とライトバック要求の場合分けを行わない。さらに、レジスタ601bの設定に従って演算コア群600を非動作にし、リモートのクラスタ50から受け取ったデータをL2キャッシュ603に格納する構成とすればよい。このため、ホームのクラスタ60の構成を変更する手間が省ける。
図19は、本実施形態において、ローカルのクラスタ50がホームのクラスタ60のメモリ602に格納されるデータを取得する動作を示す図である。比較例と同様、L2キャッシュ制御部501は、演算コア群500から要求されたデータがL2キャッシュ503にない(キャッシュミスが発生)場合に、クラスタ60のL2キャッシュ制御部601に対して当該データを要求する。本実施形態においては、L2キャッシュ603に当該データが格納されている場合について説明する。L2キャッシュ制御部601はL2キャッシュ603から当該データを取り除き、取り除いたデータをL2キャッシュ制御部501に送る。なお、L2キャッシュ603に当該データが格納されていない場合は、L2キャッシュ制御部601は、メモリ602から当該データを取得して、L2キャッシュ制御部501に当該データを送る。
図20は、図19に示す動作例におけるL2キャッシュ制御部501、601の動作を示す図である。上記の通り、L2キャッシュ制御部501、601は、コントローラ501a、601aとレジスタ501b、601bとL2キャッシュ503、603とディレクトリRAM504、604をそれぞれ備える。また、L2キャッシュ503、603は、タグRAM503a、603aとデータRAM503b、603bをそれぞれ備える。
図21は、コントローラ601aが有する回路を示す図である。図21に示すコントロ
ーラ601a内の回路は、クラスタ60の動作モードが「モードオン及び演算コア非動作」である場合の制御回路である。また、図21に示すコントローラ601aは、コントローラ501aから排他的データ取得要求に限らず、他のクラスタとデータを共有可能なデータ取得要求等のデータ取得要求が行われた場合にも動作する制御回路である。そして、図21に示すコントローラ601aにより、コントローラ501aから要求されているデータがL2キャッシュ603に存在する(キャッシュヒットが発生)場合に、当該データがコントローラ501aに送られる。さらに、コントローラ601aにより、当該データがL2キャッシュ603から破棄される。図21において、DataWillBeInvalidated(デ
ータRAM内の対象データを破棄する)が動作を決定する信号であり、その他はフラグ信号である。
図21に示すように、ANDゲート601kは、クラスタ60の動作モードが「モードオン及び演算コア非動作」であり、かつ要求されているデータがデータRAM603bに存在する(キャッシュヒットが発生)場合に「1」を出力する。それ以外の場合、ANDゲート601kは「0」を出力する。ORゲート601lは、ANDゲート601kの出力が「1」あるいは比較例の動作に従って取得したデータをデータRAM603bから破棄する場合に、取得したデータをデータRAM603bから破棄する指示信号(DataWillBeInvalidated2)を出力する。なお、ORゲート601lの後段の回路は従来と同様の回路であるため、ここでは図示及び説明を省略する。
図21に示す制御回路により、コントローラ501aからコントローラ601aにデータ取得要求が通知される場合を考える。コントローラ601aは、要求されたデータがデータRAM603bに格納されている場合に、データRAM603bから当該データを取得する。そして、コントローラ601aは、取得したデータをコントローラ501aに送る。また、コントローラ601aは、データRAM603bから当該データを破棄する。
ここで、コントローラ601aが図21に示す制御回路に従って動作したときに得られる効果の一例を、図22を参照しながら説明する。図22には、情報処理装置3内のクラスタが複数のグループを構成する場合の一例を示す。ここでは、各クラスタの動作モードは、L2キャッシュ制御部のレジスタの設定値によって設定される。具体的には、動作モードは、設定値が0の場合は「モードオフ」、設定値が1の場合は「モードオン及び演算コア動作」、設定値が2の場合は「モードオン及び演算コア非動作」に設定される。図22では、クラスタ800a〜クラスタ800dが1つのグループ800を構成する。また、グループ900は1つのクラスタ900aで構成される。グループ900は、使用するメモリ空間がクラスタ900a内のメモリのメモリ容量以下であるアプリケーションの実行を担当する。なお、クラスタ800a〜800d、900aは、上記のクラスタ50、60と同様の構成を有するため、各構成要素の図示や説明は省略する。さらに、クラスタ800a〜800d、900aは、図21に示す回路を備えるため、以下の説明では、符号及び動作の説明を流用する。
図22では、クラスタ800b〜800dの動作モードが「モードオン及び演算コア非動作」である。また、クラスタ900aの動作モードは「モードオフ」である。このように、例えば、情報処理装置3内の一部のグループに対して本実施例の動作を行うよう制御し、他のグループは比較例に従った動作を行うよう制御することができる。ここで、クラスタ800aがクラスタ800bのL2キャッシュからデータを取得する場合と、クラスタ800aがクラスタ900aのL2キャッシュからデータを取得する場合を考える。
まず、クラスタ800aがクラスタ800bからデータを取得する場合を考える。この場合、クラスタ800aがローカル、クラスタ800bがホームとなる。そして、クラスタ800aからクラスタ800bに対してデータ取得要求が通知される。そして、クラス
タ800bは、クラスタ800aからデータ取得要求を受けると、クラスタ800bのコントローラ内の図21に示す回路において、ANDゲート601kからの出力が「1」となる。さらに、ORゲート601lからの出力が「1」となる。したがって、クラスタ800bは、クラスタ800aからのデータ取得要求に従って、L2キャッシュから当該データを取得してクラスタ800aに送るとともに、当該データをL2キャッシュから破棄する。
次に、クラスタ800aがクラスタ900aのL2キャッシュからデータを取得する場合を考える。この場合、クラスタ800aがローカル、クラスタ900aがホームとなる。そして、クラスタ800aからクラスタ900aに対してデータ取得要求が通知される。ここで、クラスタ900aの動作モードは「モードオフ」である。したがって、クラスタ900aが上記指示を受けると、クラスタ900aのコントローラ内の図21に示す回路において、ANDゲート601kから「0」が出力される。したがって、ORゲート601lからは、取得したデータをL2キャッシュから破棄する指示は出力されない。そして、クラスタ900aは、L2キャッシュからデータを取得してクラスタ800aに送る。また、クラスタ900a内のL2キャッシュには、当該データが格納されたままとなる。
すなわち、図22に示す例では、グループ内のクラスタ間におけるデータ取得においては、L2キャッシュからデータが取得されるとそのL2キャッシュから当該データが破棄される。これにより、情報処理装置3内においてL2キャッシュの容量を有効に利用することができる。また、情報処理装置3内においてデータの同期性を確保することもできる。また、グループ外のクラスタからデータを取得する場合は、そのクラスタの演算コア群が動作状態にある。したがって、当該データは当該演算コア群も使用するデータである可能性がある。そこで、このような場合は、グループ外のクラスタのL2キャッシュからデータが取得されたときに、そのL2キャッシュから当該データが破棄されないようにすることができる。
さらに、図22に示す例において、例えばグループ800外のクラスタ900aが、グループ800内のクラスタのメモリに格納されているデータを要求する場合を考える。このとき、クラスタ900aは、動作モードが「モードオン及び演算コア動作」であるクラスタ800aに対してデータの取得要求を行う。すなわち、クラスタ900aは、動作モードが「モードオン及び演算コア非動作」であるクラスタ800b〜800dにはアクセスしない。なお、図22に示す例では、OS等のソフトウェア側の調整によって、グループ外のクラスタからグループ内のクラスタに属するメモリのデータを要求する際の動作を制御する。すなわち、グループ外のクラスタは、動作モードが「モードオン及び演算コア動作」であるクラスタにアクセスするように制御される。これにより、グループ外のクラスタは、グループ内の動作モードが「モードオン及び演算コア動作」であるクラスタの演算結果を、比較例に比べてより円滑かつより高速に取得することができる。
また、例えばクラスタ900aがクラスタ800cにアクセスすることを許可した場合を考える。そして、クラスタ900aがクラスタ800cのL2キャッシュに格納されているデータについて排他的データ取得要求を行ったとする。このとき、当該データは、クラスタ900aに移動するとともに、クラスタ800cのL2キャッシュからは破棄される。また、クラスタ800cでは、ディレクトリ情報により、当該データがグループ外のクラスタ900aに持ち出されたことを管理する。そこで、図22に示す例では、グループ外のクラスタからのアクセスを、グループ内の動作モードが「モードオン及び演算コア動作」であるクラスタに制限する。これにより、「モードオン及び演算コア非動作」のクラスタのL2キャッシュに格納されたデータがグループ外のクラスタによって持ち出されることがない。このため、「モードオン及び演算コア動作」であるクラスタが「モードオ
ン及び演算コア非動作」のクラスタのデータを取得する際に、当該データをグループ外のクラスタが持ち出しているために、グループ外のクラスタからデータを取得するといった処理が発生する懸念がない。よって、グループ内において各クラスタがデータを効率よく取得することができる。
次に、図23は、図19〜図21に示す動作例におけるL2キャッシュ制御部501、601のタイミングチャートである。まず、S201において、L2キャッシュ制御部501のコントローラ501aは、演算コア群500の演算コアからデータ取得要求を受け付ける。当該データ取得要求には、当該データがどのクラスタのメモリに格納されているかを示すアドレスに関する情報が含まれる。S202において、コントローラ501aは、タグRAM503aに対して、当該アドレスに対応付けられているデータがデータRAM503bに格納されているか否かを確認する。本実施形態では、S203において、タグRAM503aは、当該データがデータRAM503bにない(キャッシュミスが発生)ことを示す情報をコントローラ501aに返す。
S204において、コントローラ501aは、演算コア群500からのデータ取得要求に含まれるデータのアドレスを用いて、当該データはメモリ602に格納されるデータであることを特定する。そこで、コントローラ501aは、コントローラ601aに対して当該データの取得要求を行う。
S205では、コントローラ601aは、ディレクトリRAM604に対して、ディレクトリ情報を確認し、クラスタ60が属するグループ内におけるデータの使用状況を確認する。データの使用状況には、当該データを他のクラスタが持ち出しているか否か等の情報が含まれる。本実施形態では、S206において、ディレクトリRAM604は、ディレクトリ情報にて当該データがデータRAM603bに格納されていることを把握する。そして、ディレクトリRAM604は、そのことを示す情報をコントローラ601aに送る。
コントローラ601aでは、コントローラ501aからデータ取得要求を受けると、図21に示す制御回路によって、要求されたデータをデータRAM603bから破棄する指示が出力される。したがって、S207において、コントローラ601aは、タグRAM603aに対して、データRAM603bの当該データを無効化する(Invalidにする)
よう要求する。当該データを無効化することにより、データがクラスタ50に持ち出されている間に他のクラスタが当該データを取得しないようにすることができる。これにより、情報処理装置2内においてクラスタのL2キャッシュの要領を有効に利用することができる。また、情報処理装置2内においてデータの同期が取りやすくなる。S208において、タグRAM603aは、当該データが無効であることを示す情報を記憶する。そして、タグRAM603aは、その記憶処理が完了したことをコントローラ601aに通知する。S209において、コントローラ601aは、データRAM603bに対して、当該データの読み出し要求を行う。S210において、データRAM603bは、要求されたデータを読み出してコントローラ601aに送る。
コントローラ601aは、S211において、ディレクトリRAM604に対して、当該データはリモートでもあるクラスタ50が持っており、ホームのクラスタ60からは破棄されていることを示すようディレクトリ情報の更新を要求する。S212において、ディレクトリRAM604は、当該要求に従ってディレクトリ情報を更新し、更新処理が完了したことをコントローラ601aに通知する。S213において、コントローラ601aは、当該データをコントローラ501aに送る。
S214では、コントローラ501aは、タグRAM503aに対して、当該データが
データRAM503bに格納されていることを示すよう情報の更新を要求する。また、コントローラ501aは、タグRAM503aに対して、データの使用状況としてSharedを記憶することも要求する。S215において、タグRAM503aは、当該更新処理を行った後、その処理が完了したことをコントローラ501aに通知する。S216において、コントローラ501aは、データRAM503bに対して、当該データを格納するよう要求する。S217において、データRAM503bは当該データを格納した後、格納処理が完了したことをコントローラ501aに通知する。S218において、コントローラ501aは、当該データの要求元である演算コア群500の演算コアに当該データを送る。
本実施例においては、L2キャッシュ503から追い出されたデータは、ホームのクラスタ60のL2キャッシュ603に格納される。よって、再度ローカルのクラスタ50の演算コア群500から当該データを要求した場合、L2キャッシュ503ではキャッシュミスが発生する。しかし、L2キャッシュ603にてキャッシュヒットが発生する。したがって、上記の比較例とは異なりメモリ602にアクセスして当該データを取得する処理が発生しない。このため、ローカルのクラスタ50の演算コア群500は、より迅速に要求したデータを取得することができる。すなわち、情報処理装置2においては、リモートデータ取得時のレイテンシが好適に低減される。
さらに、クラスタ60、70の演算コア群600、700は非動作の状態であるため、クラスタ60、70のL2キャッシュ603、703を、クラスタ50のL2キャッシュ503のビクティムキャッシュ(Victim Cache)として使用できる。このことは、L2キャッシュ503のメモリ容量が、ホームのクラスタのL2キャッシュ603、703の分だけ増えたともいえる。したがって、例えば、メモリ502のメモリ容量を超えるメモリ空間を使用するアプリケーションを実行する際に、リモートデータ取得時のレイテンシをより好適に低減することができる。
上記の比較例では、ローカルの他にリモートやホームのクラスタの演算コア群も動作状態にある。このため、ローカルのクラスタのL2キャッシュは、他の複数のクラスタともデータのやり取りを行う。したがって、比較例においてリモートのクラスタが要求するデータをローカルのクラスタのL2キャッシュに格納すると、ローカルのクラスタにとっては、当該L2キャッシュの容量が実質的に減ってしまう。さらに、L2キャッシュ内のデータの管理においては、どのクラスタが要求するデータを優先的に取得してかつL2キャッシュに残すか等、判断基準や制御が複雑になる。このため、比較例の構成は、本実施形態の構成に比べてコスト面や情報処理の性能面でオーバーヘッドが大きくなる可能性がある。また、比較例の構成では、各データに対し、どのクラスタから追い出されたか等の追加情報も記憶してデータ管理を行う。一方、本実施形態の構成ではそのような追加情報の管理は発生しない。
また、比較例では、ローカルのクラスタは、追い出すデータがcleanである場合に、フ
ラッシュバック要求をホームのクラスタに通知し、当該データをホームのクラスタには送らない。一方、本実施例では、フラッシュバック要求とともにデータを送る。そして、図16、17に示す制御回路を用いることで、ローカルのクラスタは、dirtyなデータに加
えてcleanなデータをL2キャッシュから追い出す場合もホームのクラスタのL2キャッ
シュにデータを格納しておくことができる。これにより、ローカルのクラスタは、一度追い出したデータを取得する際は、メモリへのアクセスを発生させることなく効率よくデータを取得することができる。
さらに、キャッシュコヒーレンス制御のプロトコルについて、演算コア群の動作モードのオン時とオフ時とで共通の規約を使用することも可能である。例えば、上記と同様にMo
dified、Exclusive、Shared、Invalidの4状態を使用するMESIプロトコルを、演算コア群の動作モードのオン時に使用するとする。このとき、演算コア群の動作モードのオフ時にも、新しい状態を追加で規定することなく、オン時と同じMESIプロトコルを使用することができる。そして、動作モードのオン時とオフ時とで制御内容を適宜調整すればよい。このため、比較例の構成に本実施形態の構成を適用する際に発生するオーバーヘッドを抑えることができる。
以上が本実施形態に関する説明であるが、上記の情報処理装置の構成や処理は、上記の実施形態に限定されるものではなく、本発明の技術的思想と同一性を失わない範囲内において種々の変更が可能である。例えば、上記の実施形態において、動作モードの「モードオン」と「モードオフ」の切り換えにあたって、メモリのメモリ容量を超える大量のメモリ空間を使用するアプリケーションを実行する場合にオンする構成としてもよい。使用するメモリ空間がメモリのメモリ容量を超えないアプリケーションを実行する場合はオフとする。これにより、各アプリケーションにとって適切なメモリ及びL2キャッシュの構成を柔軟に採用することができる。また、アプリケーションごとに別個のメモリ及びL2キャッシュの構成を構築する手間も省くことができる。
また、各クラスタの演算コア群に対する電源供給を個別に制御することで、モードオン時に非動作とする演算コア群に対して電源を切ることが可能になる。これにより、情報処理装置において不要な電力消費を抑えることができる。なお、いわゆるパワーゲーティングと呼ばれる手法を用いて各演算コア群に対する電源供給を制御する構成としてもよい。
上記の説明では、図21に示すようにコントローラ601a内の制御回路の構成を変更する例を示した。しかし、一変形例として、コントローラ601a内の制御回路の構成を変更せずに、コントローラ501a内の制御回路の構成を変更してもよい。図24にその変形例を示す。
図24に示すコントローラ501a内の回路は、クラスタ50の動作モードが「モードオン及び演算コア動作」である場合の制御回路である。図24において、RequestIsSharedDataRequest(排他的データ取得要求ではなく他のクラスタとデータを共有可能なデータ取得要求を行う)及びRequestIsExclusiveDataRequest(排他的データ取得要求を行う)
が動作を決定する信号である。また、図24において、その他はフラグ信号である。なお、他のクラスタとデータを共有可能なデータ取得要求と排他的データ取得要求が、データ取得要求の一例である。
図24に示すように、ANDゲート501hは、クラスタ50の動作モードが「モードオン及び演算コア動作」であり、かつ他のクラスタに対してデータの取得を要求する場合に「1」を出力する。それ以外の場合、ANDゲート501hは「0」を出力する。ORゲート501iは、ANDゲート501hの出力が「1」あるいは比較例の動作に従って排他的データ取得要求を行う場合に、排他的データ取得要求を行う指示信号(RequestIsExclusiveDataRequest2)を出力する。また、ANDゲート501kには、ANDゲート501hの出力がインバータ501jによって反転されて入力される。
ANDゲート501kは、クラスタ50の動作モードが「モードオン及び演算コア動作」であり、かつ他のクラスタに対してデータの取得を要求する場合に、ローカルであるクラスタ50からの、他のクラスタとデータを共有可能なデータ取得要求(RequestIsSharedDataRequest2)を遮断する。一方、クラスタ50の動作モードが「モードオフ」又は「
演算コア非動作」である場合、又は他のクラスタに対してデータの取得を要求しない場合は、上記の比較例の動作に従った動作が実行される(図22における「比較例のRequestIsSharedDataRequest」、「比較例のRequestIsExclusiveDataRequest」)。なお、ORゲ
ート501i及びANDゲート501kの後段の回路及びコントローラ601aの回路は従来と同様の回路であるため、ここでは図示及び説明を省略する。
図24に示す制御回路により、クラスタ50のコントローラ501aからクラスタ60のコントローラ601aに排他的データ取得要求が通知されると、コントローラ601aは、データRAM603bから要求されたデータを取得する。そして、コントローラ601aは、取得したデータをコントローラ501aに送る。また、コントローラ501aのデータ取得要求が排他的データ取得要求であるため、コントローラ601aは、データRAM603bから当該データを破棄する。
したがって、図21に示す制御回路を採用すると、クラスタがローカルとなる場合に、動作は従来通りであるため動作変更を行う手間が省ける。また、図24に示す制御回路を採用すると、クラスタがホームとなる場合に、動作は従来通りであるため動作変更を行う手間が省ける。いずれの制御回路の構成を採用するかは、適宜決定することができる。
また、上記の説明ではレジスタを用いて演算コア群の動作又は非動作を設定する構成としている。上記の実施形態の示すL2キャッシュ制御部の構成の他、図25に示す構成を採用して演算コア群の動作又は非動作の設定を行ってもよい。図25に示すように、L2キャッシュ制御部1001は、コントローラ1001aとレジスタ1001bとセレクタ1001cとL2キャッシュ1003を備える。また、L2キャッシュ1003は、タグRAM1003aとデータRAM1003bとディレクトリRAM1004を備える。L2キャッシュ制御部1001では、セレクタ1001cがレジスタ1001bの設定値を参照して、図示しない演算コア群からの要求を遮断するか否かを決定する。例えばレジスタ1001bの設定値がオンの場合に、セレクタ1001cが図示しない演算コア群からの要求を遮断する。すなわち、演算コア群を実質的に非動作状態にすることができる。また、レジスタ1001bの設定値がオフの場合は、セレクタ1001cは、演算コア群からの要求をコントローラ1001aに送る。すなわち、演算コア群を実質的に動作状態にすることができる。なお、クラスタによって構成されるグループの外部から実行アプリケーション等を用いて、各クラスタにおける動作モードを制御するように調整してもよい。
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置(以下、コンピュータ等)に上記情報処理装置の設定を行うための管理ツール、OSその他を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。ここで、設定とは、例えばレジスタの設定等を意味する。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。ここで、コンピュータは、例えば、クラスタやコントローラ等である。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリ等のメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやROM等がある。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
他の演算処理装置に接続される演算処理装置において、
自身が管理する第1のデータと他の演算処理装置から取得した第2のデータとを用いて演算処理を行う演算処理部と、
前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第1のデータと前記第2のデータとを保持するキャッシュメモリ部とを有し、前記設定部が前記演算処理部を動作状態に設定した場合、前記第2のデータが前記キャッシュメモリ部から追い出されたときに、前記追い出されたデータと前記追い出されたデータを前記他の演算処理装置のキャッシュメモリ部に記憶する契機となる要求とを、前記他の演算処理装置に送信する制御部と、
を有することを特徴とする演算処理装置。
(付記2)
前記制御部は、前記設定部が前記演算処理部を動作状態に設定している場合、前記他の演算処理装置に対して、データを前記制御部を有する演算処理装置に送信するよう要求するとともに前記他の演算処理装置のキャッシュメモリ部から前記データを破棄するよう要求することを特徴とする付記1に記載の演算処理装置。
(付記3)
他の演算処理装置に接続される演算処理装置において、
自身が管理する第3のデータと他の演算処理装置から取得した第4のデータとを用いて演算処理を行う演算処理部と、
前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第3のデータと前記第4のデータとを保持するキャッシュメモリ部とを有し、前記設定部が前記演算処理部を非動作状態に設定した場合、前記他の演算処理装置から前記第3のデータと前記第3のデータのライトバック通知又はフラッシュバック通知とを受信したときに、前記第3のデータを前記キャッシュメモリ部に記憶する制御部と、
を有することを特徴とする演算処理装置。
(付記4)
前記制御部は、前記設定部が前記演算処理部を非動作状態に設定している場合、前記他の演算処理装置から前記キャッシュメモリ部に記憶されたデータのデータ取得要求を受信したときに、前記要求されたデータを前記他の演算処理装置に送信するとともに前記キャッシュメモリ部から前記データを破棄することを特徴とする付記3に記載の演算処理装置。
(付記5)
他の演算処理装置と、前記他の演算処理装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
自身が管理する第1のデータと他の演算処理装置から取得した第2のデータとを用いて演算処理を行う演算処理部と、
前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第1のデータと前記第2のデータとを保持するキャッシュメモリ部とを有し、前記設定部が前記演算処理部を動作状態に設定した場合、前記第2のデータが前記キャッシュメモリ部から追い出されたときに、前記追い出されたデータと前記追い出されたデータを前記他の演算処理装置のキャッシュメモリ部に記憶する契機となる要求とを、前記他の演算処理装置に送信する制御部と、
を有する
ことを特徴とする情報処理装置。
(付記6)
前記制御部は、前記設定部が前記演算処理部を動作状態に設定している場合、前記他の演算処理装置に対して、データを前記制御部を有する演算処理装置に送信するよう要求するとともに前記他の演算処理装置のキャッシュメモリ部から前記データを破棄するよう要求することを特徴とする付記5に記載の情報処理装置。
(付記7)
他の演算処理装置と、前記他の演算処理装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
自身が管理する第3のデータと他の演算処理装置から取得した第4のデータとを用いて演算処理を行う演算処理部と、
前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第3のデータと前記第4のデータとを保持するキャッシュメモリ部とを有し、前記設定部が前記演算処理部を非動作状態に設定した場合、前記他の演算処理装置から前記第3のデータと前記第3のデータのライトバック通知又はフラッシュバック通知とを受信したときに、前記第3のデータを前記キャッシュメモリ部に記憶する制御部と、
を有する
ことを特徴とする情報処理装置。
(付記8)
前記制御部は、前記設定部が前記演算処理部を非動作状態に設定している場合、前記他の演算処理装置から前記キャッシュメモリ部に記憶されたデータのデータ取得要求を受信したときに、前記要求されたデータを前記他の演算処理装置に送信するとともに前記キャッシュメモリ部から前記データを破棄することを特徴とする付記7に記載の情報処理装置。
(付記9)
設定部により演算処理部が動作状態に設定されている演算処理装置と設定部により演算処理部が非動作状態に設定されている演算処理装置とを含むグループが形成され、
前記グループ外の演算処理装置は、前記グループ内の演算処理装置にアクセスする際に、前記演算処理部が動作状態に設定されている演算処理装置にアクセスし、前記演算処理部が非動作状態に設定されている演算処理装置にアクセスしない
ことを特徴とする付記5から付記8のいずれかに記載の情報処理装置。
(付記10)
他の演算処理装置と、前記他の演算処理装置に接続されるとともに、自身が管理する第1のデータと他の演算処理装置から取得した取得した第2のデータとを用いて演算処理を行う演算処理部と、前記第1のデータと前記第2のデータとを保持するキャッシュメモリ部とを含む演算処理装置と、を有する情報処理装置の制御方法において、
前記演算処理装置が有する設定部が、前記演算処理部を動作状態に設定し、
前記演算処理装置が有する制御部が、前記第2のデータが前記キャッシュメモリ部から追い出されたときに、前記追い出されたデータと前記追い出されたデータを前記他の演算処理装置のキャッシュメモリ部に記憶する契機となる要求とを、前記他の演算処理装置に送信する
ことを特徴とする情報処理装置の制御方法。
(付記11)
前記制御部は、前記他の演算処理装置に対して、データを前記制御部を有する演算処理装置に送信するよう要求するとともに前記他の演算処理装置のキャッシュメモリ部から前記データを破棄するよう要求することを特徴とする付記10に記載の情報処理装置の制御
方法。
(付記12)
他の演算処理装置と、前記他の演算処理装置に接続されるとともに、自身が管理する第3データと他の演算処理装置から取得した取得した第4データとを用いて演算処理を行う演算処理部と、前記第3データと前記第4データとを保持するキャッシュメモリ部とを含む演算処理装置と、を有する情報処理装置の制御方法において、
前記演算処理装置が有する設定部が、前記演算処理部を非動作状態に設定し、
前記演算処理装置が有する制御部が、前記他の演算処理装置から前記第3のデータと前記第3のデータのライトバック通知又はフラッシュバック通知とを受信したときに、前記第3のデータを前記キャッシュメモリ部に記憶する
ことを特徴とする情報処理装置の制御方法。
(付記13)
前記制御部は、前記他の演算処理装置から前記キャッシュメモリ部に記憶されたデータのデータ取得要求を受信したときに、前記要求されたデータを前記他の演算処理装置に送信するとともに前記キャッシュメモリ部から前記データを破棄することを特徴とする付記12に記載の情報処理装置の制御方法。
1、2、3 情報処理装置
10、20、30、50、60、70、800a、800b、800c、800d、900a クラスタ
100、200、300、500、600、700 演算コア群
101、201、301、501、601、701、1001 L2キャッシュ制御部102、202、302、502、602、702 メモリ
103、203、303、503、603、703、1003 L2キャッシュ
101a、201a、501a、601a、1001a コントローラ
103a、203a、503a、603a、1003a タグRAM
103b、203b、503b、603b、1003b データRAM
104、204、504、604、1004 ディレクトリRAM
501b、601b、1001b レジスタ
800、900 グループ
1001c セレクタ

Claims (9)

  1. 他の演算処理装置に接続される演算処理装置において、
    自装置が管理する第1のデータと前記他の演算処理装置が管理する前記他の演算処理装置から取得した第2のデータとを用いて演算処理を行う演算処理部と、
    前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第1のデータと前記第2のデータとを保持するキャッシュメモリとを有し、前記設定部が前記演算処理部を動作状態に設定するとともに前記他の演算処理装置が有する前記設定部が前記他の演算処理装置が有する演算処理部を非動作状態に設定した場合、前記第2のデータが前記キャッシュメモリから追い出されたときに、追い出された前記第2のデータと、追い出された前記第2のデータを非動作状態に設定された演算処理部を有する前記他の演算処理装置のキャッシュメモリに記憶する契機となる要求とを、前記他の演算処理装置に送信する制御部と、
    を有することを特徴とする演算処理装置。
  2. 前記制御部は、前記設定部が前記演算処理部を動作状態に設定している場合、前記他の演算処理装置に対して、データを前記制御部を有する演算処理装置に送信するよう要求するとともに前記他の演算処理装置のキャッシュメモリから前記データを破棄するよう要求することを特徴とする請求項1に記載の演算処理装置。
  3. 主記憶装置と他の演算処理装置とに接続される演算処理装置において、
    自装置が管理する第3のデータと前記他の演算処理装置が管理する前記他の演算処理装置から取得した第4のデータとを用いて演算処理を行う演算処理部と、
    前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第3のデータと前記第4のデータとを保持するキャッシュメモリとを有し、前記設定部が前記演算処理部を動作状態に設定した場合、前記他の演算処理装置から前記第3のデータとライトバック通知又はフラッシュバック通知とを受信したときに、前記第3のデータを前記キャッシュメモリに記憶することなく前記主記憶装置に記憶し、前記設定部が前記演算処理部を非動作状態に設定した場合、前記他の演算処理装置から前記第3のデータとライトバック通知又はフラッシュバック通知とを受信したときに、前記第3のデータを前記キャッシュメモリに記憶する制御部と、
    を有することを特徴とする演算処理装置。
  4. 前記制御部は、前記設定部が前記演算処理部を非動作状態に設定している場合、前記他の演算処理装置から前記キャッシュメモリに記憶されたデータのデータ取得要求を受信したときに、前記要求されたデータを前記他の演算処理装置に送信するとともに前記キャッシュメモリから前記データを破棄することを特徴とする請求項3に記載の演算処理装置。
  5. 他の演算処理装置と、前記他の演算処理装置に接続される演算処理装置とを有する情報処理装置において、
    前記演算処理装置は、
    自装置が管理する第5のデータと前記他の演算処理装置が管理する前記他の演算処理装置から取得した第6のデータとを用いて演算処理を行う演算処理部と、
    前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第5のデータと前記第6のデータとを保持するキャッシュメモリとを有し、前記設定部が前記演算処理部を動作状態に設定するとともに前記他の演算処理装置が有する前記設定部が前記他の演算処理装置が有する演算処理部を非動作状態に設定した場合、前記第6のデータが前記キャッシュメモリから追い出されたときに、追い出された前記第6のデータと、追い出された前記第6のデータを非動作状態に設定された演算処理部を有する前記他の演算処理装置のキャッシュメモリに記憶する契機となる要求とを、前記他の演算処理装置に送信する制御部と、
    を有する
    ことを特徴とする情報処理装置。
  6. 主記憶装置と、他の演算処理装置と、前記主記憶装置と前記他の演算処理装置とに接続される演算処理装置とを有する情報処理装置において、前記演算処理装置は、
    自装置が管理する第7のデータと前記他の演算処理装置が管理する前記他の演算処理装置から取得した第8のデータとを用いて演算処理を行う演算処理部と、
    前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第7のデータと前記第8のデータとを保持するキャッシュメモリとを有し、前記設定部が前記演算処理部を動作状態に設定した場合、前記他の演算処理装置から前記第7のデータとライトバック通知又はフラッシュバック通知とを受信したときに、前記第7のデータを前記キャッシュメモリに記憶することなく前記主記憶装置に記憶し、前記設定部が前記演算処理部を非動作状態に設定した場合、前記他の演算処理装置から前記第7のデータとライトバック通知又はフラッシュバック通知とを受信したときに、前記第7のデータを前記キャッシュメモリに記憶する制御部と、
    を有する
    ことを特徴とする情報処理装置。
  7. 設定部により演算処理部が動作状態に設定されている演算処理装置と設定部により演算処理部が非動作状態に設定されている演算処理装置とを含むグループが形成され、
    前記グループ外の演算処理装置は、前記グループ内の演算処理装置にアクセスする際に、前記演算処理部が動作状態に設定されている演算処理装置にアクセスし、前記演算処理部が非動作状態に設定されている演算処理装置にアクセスしない
    ことを特徴とする請求項5又は請求項6に記載の情報処理装置。
  8. 他の演算処理装置と、前記他の演算処理装置に接続されるとともに、自装置が管理する第9のデータと前記他の演算処理装置が管理する前記他の演算処理装置から取得した第10のデータとを用いて演算処理を行う演算処理部と、前記第9のデータと前記第10のデータとを保持するキャッシュメモリとを含む演算処理装置と、を有する情報処理装置の制御方法において、
    前記演算処理装置が有する設定部が、前記演算処理部を動作状態に設定し、
    前記他の演算処理装置が有する設定部が、前記他の演算処理装置が有する演算処理部を非動作状態に設定し、
    前記演算処理装置が有する制御部が、前記第10のデータが前記キャッシュメモリから追い出されたときに、追い出された前記第10のデータと、追い出された前記第10のデータを非動作状態に設定された演算処理部を有する前記他の演算処理装置のキャッシュメモリに記憶する契機となる要求とを、前記他の演算処理装置に送信する
    ことを特徴とする情報処理装置の制御方法。
  9. 主記憶装置と、他の演算処理装置と、前記主記憶装置と前記他の演算処理装置とに接続されるとともに、自装置が管理する第11のデータと前記他の演算処理装置が管理する前記他の演算処理装置から取得した第12のデータとを用いて演算処理を行う演算処理部と、前記第11のデータと前記第12のデータとを保持するキャッシュメモリとを含む演算処理装置と、を有する情報処理装置の制御方法において、
    前記演算処理装置が有する設定部が、前記演算処理部を動作状態に設定した場合に、前記他の演算処理装置から前記第11のデータとライトバック通知又はフラッシュバック通知とを受信したときに、前記第11のデータを前記キャッシュメモリに記憶することなく前記主記憶装置に記憶し、
    前記演算処理装置が有する設定部が、前記演算処理部を非動作状態に設定した場合に、前記演算処理装置が有する制御部が、前記他の演算処理装置から前記第11のデータとライトバック通知又はフラッシュバック通知とを受信したときに、前記第11のデータを前記キャッシュメモリに記憶する
    ことを特徴とする情報処理装置の制御方法。
JP2013062812A 2013-03-25 2013-03-25 演算処理装置、情報処理装置及び情報処理装置の制御方法 Active JP6094303B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013062812A JP6094303B2 (ja) 2013-03-25 2013-03-25 演算処理装置、情報処理装置及び情報処理装置の制御方法
CN201410074708.1A CN104077248A (zh) 2013-03-25 2014-03-03 运算处理设备、信息处理设备以及控制信息处理设备的方法
US14/195,966 US20140289474A1 (en) 2013-03-25 2014-03-04 Operation processing apparatus, information processing apparatus and method of controlling information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013062812A JP6094303B2 (ja) 2013-03-25 2013-03-25 演算処理装置、情報処理装置及び情報処理装置の制御方法

Publications (3)

Publication Number Publication Date
JP2014186676A JP2014186676A (ja) 2014-10-02
JP2014186676A5 JP2014186676A5 (ja) 2016-04-28
JP6094303B2 true JP6094303B2 (ja) 2017-03-15

Family

ID=51570017

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013062812A Active JP6094303B2 (ja) 2013-03-25 2013-03-25 演算処理装置、情報処理装置及び情報処理装置の制御方法

Country Status (3)

Country Link
US (1) US20140289474A1 (ja)
JP (1) JP6094303B2 (ja)
CN (1) CN104077248A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018195183A (ja) * 2017-05-19 2018-12-06 富士通株式会社 演算処理装置および演算処理装置の制御方法
US11836523B2 (en) * 2020-10-28 2023-12-05 Red Hat, Inc. Introspection of a containerized application in a runtime environment

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04288645A (ja) * 1991-02-21 1992-10-13 Mitsubishi Electric Corp 情報処理システム
JP4448550B2 (ja) * 2006-11-30 2010-04-14 富士通株式会社 キャッシュシステム
JP5045334B2 (ja) * 2007-09-21 2012-10-10 富士通株式会社 キャッシュシステム
JP5338375B2 (ja) * 2009-02-26 2013-11-13 富士通株式会社 演算処理装置、情報処理装置および演算処理装置の制御方法
US9189403B2 (en) * 2009-12-30 2015-11-17 International Business Machines Corporation Selective cache-to-cache lateral castouts
JP2011150653A (ja) * 2010-01-25 2011-08-04 Renesas Electronics Corp マルチプロセッサシステム
CN103218308B (zh) * 2012-01-20 2016-06-29 群联电子股份有限公司 缓冲存储器管理方法、存储器控制器与存储器储存装置

Also Published As

Publication number Publication date
CN104077248A (zh) 2014-10-01
US20140289474A1 (en) 2014-09-25
JP2014186676A (ja) 2014-10-02

Similar Documents

Publication Publication Date Title
US7711902B2 (en) Area effective cache with pseudo associative memory
US8996812B2 (en) Write-back coherency data cache for resolving read/write conflicts
US7698508B2 (en) System and method for reducing unnecessary cache operations
US6295582B1 (en) System and method for managing data in an asynchronous I/O cache memory to maintain a predetermined amount of storage space that is readily available
TWI443514B (zh) 用於更換快取記憶體中的快取列之裝置、系統及方法
US9378153B2 (en) Early write-back of modified data in a cache memory
JP6040840B2 (ja) 演算処理装置、情報処理装置及び情報処理装置の制御方法
JP7337173B2 (ja) トランスレーションルックアサイドバッファエビクションに基づくキャッシュ置換
US20120102273A1 (en) Memory agent to access memory blade as part of the cache coherency domain
US10725923B1 (en) Cache access detection and prediction
JP2008525901A (ja) 共有メモリコンピュータシステムにおける、所有されている複数のキャッシュブロックのライトバックの早期予測
JP2003186744A (ja) キャッシュエントリのプリエンプティブな追い出しのために使用される時間を調整することによるコンピュータパフォーマンスの向上方法
US20180336143A1 (en) Concurrent cache memory access
JP2018005395A (ja) 演算処理装置、情報処理装置および演算処理装置の制御方法
US20230281127A1 (en) Application of a default shared state cache coherency protocol
CN110554975A (zh) 提供死块预测以用于确定是否在cache设备中对数据高速缓存
JP6036457B2 (ja) 演算処理装置、情報処理装置及び情報処理装置の制御方法
US10705977B2 (en) Method of dirty cache line eviction
JP6089891B2 (ja) 演算処理装置、情報処理装置及び情報処理装置の制御方法
JP4295814B2 (ja) マルチプロセッサシステム及びマルチプロセッサシステムの動作方法
US20120144122A1 (en) Method and apparatus for accelerated shared data migration
JP6094303B2 (ja) 演算処理装置、情報処理装置及び情報処理装置の制御方法
US8397029B2 (en) System and method for cache coherency in a multiprocessor system
US20140189255A1 (en) Method and apparatus to share modified data without write-back in a shared-memory many-core system
US20230195632A1 (en) Probe filter directory management

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160923

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161018

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161219

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170130

R150 Certificate of patent or registration of utility model

Ref document number: 6094303

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150