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

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

Info

Publication number
JP6089891B2
JP6089891B2 JP2013074711A JP2013074711A JP6089891B2 JP 6089891 B2 JP6089891 B2 JP 6089891B2 JP 2013074711 A JP2013074711 A JP 2013074711A JP 2013074711 A JP2013074711 A JP 2013074711A JP 6089891 B2 JP6089891 B2 JP 6089891B2
Authority
JP
Japan
Prior art keywords
data
arithmetic processing
unit
taken out
cluster
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
JP2013074711A
Other languages
English (en)
Other versions
JP2014199576A (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 JP2013074711A priority Critical patent/JP6089891B2/ja
Priority to EP14161212.7A priority patent/EP2784684A1/en
Priority to US14/224,108 priority patent/US20140297957A1/en
Publication of JP2014199576A publication Critical patent/JP2014199576A/ja
Application granted granted Critical
Publication of JP6089891B2 publication Critical patent/JP6089891B2/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/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/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/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/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • 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

Description

本発明は、演算処理装置、情報処理装置及び情報処理装置の制御方法に関する。
情報処理装置においては、複数の演算コア間でメモリのデータを共有する演算処理装置が実用に供されている。当該演算処理装置においては、演算コアとL1キャッシュの組が複数組集約された演算コア群が形成される。演算コア群に対しては、L2キャッシュ、L2キャッシュ制御部、メモリが接続されている。これら演算コア群、L2キャッシュ、L2キャッシュ制御部、メモリのセットをクラスタと呼ぶ。
キャッシュとは、大容量のメモリに記憶されたデータのうち、頻繁に使用するデータを格納する小容量の記憶部である。メモリ内のデータをキャッシュに一時的に格納することにより、時間のかかるメモリへのアクセス頻度を低減する。キャッシュは階層構造を採り、高位層ほど高速であり、低位層ほど大容量である。
ディレクトリベースのキャッシュコヒーレンス制御方式では、上記のL2キャッシュには、当該L2キャッシュが属するクラスタの演算コア群が要求したデータが格納されることが多い。そして、各演算コア群は、演算コア群に近いL2キャッシュをより頻繁に使用してデータを取得するように構成されていることが多い。また、データの整合性を保つため、1つのメモリに格納されているデータは当該メモリが属するクラスタによって管理される。また、この方式では、クラスタが、管理対象のメモリ内のデータが現在どのような状態でどのキャッシュに格納されているかを管理する。また、クラスタは、当該メモリに対するデータの要求を受けた場合に、データの状態に基づいてデータ取得要求に対して適切な処理を行う。そして、クラスタは、データ取得要求の処理後、当該データの状態に関する情報を更新する。
ここで、特許文献1に示されるように、上記のクラスタ構成及び処理体系を有する演算処理装置において、メモリからデータを取得する際に、データの状態や書き戻し回数をカウンタ形式で管理する方法が提示されている。カウンタはディレクトリRAM内に設定されている。そして、クラスタは、ディレクトリRAMのカウンタを参照してデータ取得処理を行う。
特開2000−259596号公報
上記の技術では、クラスタは、ディレクトリRAMの参照結果を待って、その後のデータ取得処理の動作を決定する。このため、ディレクトリRAMの参照処理の分だけデータ取得に伴うレイテンシが発生する。また、ディレクトリRAMの参照処理を行う分、消費電力も大きくなる。
本件開示の技術は、上記の事情に鑑みてなされたものであり、その目的とするところは、メモリからのデータ取得に伴うレイテンシを低減し、消費電力を抑えることが可能な演算処理装置、情報処理装置及び情報処理装置の制御方法を提供することである。
一実施形態による演算処理装置は、他の演算処理装置に接続される演算処理装置において、自身が管理する第1のデータと他の演算処理装置から取得した第2のデータとを用いて演算処理する演算処理部と、第1のデータを記憶するメモリ部と、第1のデータが他の演算処理装置に持ち出されているか否かを示すデータ使用状況を記憶するデータ使用状況記憶部と、データ使用状況記憶部に記憶されたデータ使用状況について、第1のデータが他の演算処理装置に持ち出されている状態と第1のデータが他の演算処理装置に持ち出されていない状態との間の遷移を示す指標部とを有し、指標部が、第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、第1のデータを取得する要求が発生したときに、データ使用状況記憶部に対するデータ使用状況の参照を省略する制御部とを有する。
一実施形態によれば、メモリからのデータ取得に伴うレイテンシを低減し、消費電力を抑えることが可能な演算処理装置、情報処理装置及び情報処理装置の制御方法を実現できる。
図1は、比較例に係る情報処理装置における一部のクラスタ構成を示す図である。 図2は、比較例に係るL2キャッシュ制御部の概略の構成を示す図である。 図3は、比較例に係るクラスタにおいてデータ取得要求が発生した場合の動作を示す図である。 図4は、図3に示す動作例におけるL2キャッシュ制御部の動作を示す図である。 図5は、比較例に係るクラスタにおいてデータ取得要求が発生した場合の動作を示す図である。 図6は、図5に示す動作例におけるL2キャッシュ制御部の動作を示す図である。 図7は、本実施形態に係る情報処理装置における一部のクラスタ構成の概略を示す図である。 図8は、本実施形態に係るクラスタ内のL2キャッシュ制御部を示す図である。 図9は、本実施形態において、ディレクトリRAMにおけるエントリの更新処理の概略を示す図である。 図10は、本実施形態においてコントローラが有する回路を示す図である。 図11は、本実施形態においてコントローラが有する回路を示す図である。 図12は、本実施形態に係るクラスタにおいてデータ取得要求が発生した場合の動作を示す図である。 図13は、図12に示す動作例におけるL2キャッシュ制御部の動作を示す図である。 図14は、図12、13に示す動作例におけるタイミングチャートである。 図15は、本実施形態に係るコントローラの構成の一例を示す図である。 図16は、本実施形態に係るコントローラの構成の一例を示す図である。 図17は、本実施形態に係るカウンタ及びディレクトリRAMの構成の一例を示す図である。
最初に、一実施形態に係る情報処理装置の比較例について、図面を参照しながら説明する。
(比較例)
図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は、取得対象のデータが排他的に使用されていなければ、当該データを要求元のクラスタ10に送信する。そして、クラスタ20は、当該データの状態情報として、要求元のクラスタ10がデータを持っていることを記録する。
図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がローカルのクラスタである。また、クラスタ20がホームのクラスタである。図3では、クラスタ10において、クラスタ20に属するメモリ202に格納されるデータの取得要求が発生した場合を想定している。また、図3は、L2キャッシュ103においてキャッシュミスが発生したときの動作を説明する。なお、ここでは、L2キャッシュ制御部にデータ取得要求が届いた時点でL1キャッシュにおいてキャッシュミスが発生していることを前提として説明する。
ローカルであるクラスタ10の演算コア群100の演算コアから、データの要求がL2キャッシュ制御部101に届く。このとき、当該要求には、要求するデータがクラスタ20のメモリ202に格納されるデータであることを示すアドレス情報も含まれる。クラスタ10のL2キャッシュ制御部101は、L2キャッシュ103が該当データを保持していない(miss)ことを確認する。そこで、クラスタ10は、ホームのクラスタであるクラスタ20に対して当該データのデータ取得要求を行う。クラスタ20のL2キャッシュ制御部201が、当該データ取得要求を受けると、L2キャッシュ203のディレクトリ情報をチェックする。L2キャッシュ制御部201のコントローラ201aは、L2キャッシュ203にも、リモートのクラスタ内のL2キャッシュにもデータがないことを確認すると(miss)、メモリ202に対して当該データのデータ取得要求を行う。
メモリ202から当該データが返ってくると、L2キャッシュ制御部201は、L2キャッシュ203のディレクトリ情報を更新する。そして、L2キャッシュ制御部201は、データを要求元のローカルのクラスタ10に送る。クラスタ10のL2キャッシュ制御部101は、クラスタ20のL2キャッシュ制御部201から受け取ったデータをL2キャッシュ103に格納する。そして、L2キャッシュ制御部101は、当該データを演算コア群100要求元の演算コアに送る。
図4は、図3に示す動作例における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内の要求元の演算コアに当該データを送る。
図5は、比較例において、図3及び図4に示す上記の処理が完了した後のクラスタ20におけるデータの取得処理の一例を示す図である。図5では、上記の説明の通り、クラスタ10がL2キャッシュ103に持ち出しているデータに対して、クラスタ20の演算コア群200がデータ取得を要求する。図5における処理では、クラスタ20がローカルのクラスタでありホームのクラスタでもある。
図5に示すように、まず演算コア群200がL2キャッシュ制御部201に対してデータを要求する。このとき、当該要求には、要求するデータがクラスタ20のメモリ202に格納されるデータであることを示すアドレス情報も含まれる。L2キャッシュ制御部201は、当該データがL2キャッシュ203になく(miss)、クラスタ10が当該データを持ち出していることを確認する。次いで、L2キャッシュ制御部201は、クラスタ10に対して当該データのデータ取得要求を行う。クラスタ10のL2キャッシュ制御部101は、当該データ取得要求を受けると、L2キャッシュ103に要求されているデータがあることを確認する。そして、L2キャッシュ制御部101は、L2キャッシュ103から当該データを取得して、当該データをクラスタ20に送る。
L2キャッシュ制御部101から当該データが返ってくると、L2キャッシュ制御部201は、L2キャッシュ203のディレクトリ情報を更新する。そして、L2キャッシュ制御部201は、データをL2キャッシュ203に格納する。次いで、L2キャッシュ制御部201は、当該データを演算コア群200の要求元の演算コアに送る。
図6は、図5に示す動作例におけるL2キャッシュ制御部101、201の動作を示す図である。L2キャッシュ制御部201のコントローラ201aは、演算コア群200の演算コアからデータの取得要求を受ける。コントローラ201aは、タグRAM203aに対して、当該データがデータRAM203bにあるか否かを確認する。コントローラ201aは、当該データがデータRAM203bにない(miss)ことを確認する。次に、コントローラ201aは、ディレクトリRAM204に対して当該データのディレクトリ情報の読み取りを要求する。コントローラ201aは、ディレクトリRAM204から受け取ったディレクトリ情報により、クラスタ10が当該データを持っていることを確認する。そして、コントローラ201aは、コントローラ101aに対して、該当データのデータ取得要求を行う。
要求を受け取ったホームのクラスタ10のコントローラ101aは、タグRAM103aに対して、当該データがデータRAM103bにあるか否かを確認する。コントローラ101aは、当該データがデータRAM103bにある(hit)ことを確認する。次に、
コントローラ101aは、データRAM103bから当該データを取得する。そして、コントローラ101aは、当該データをクラスタ20のL2キャッシュ制御部201のコントローラ201aに送る。
コントローラ201aは、当該データを取得すると、タグRAM203aに対して、当該データがデータRAM203bに格納されていることを示すよう情報の更新を要求する。また、当該データは、クラスタ10のデータRAM103bにも格納されている。そこで、コントローラ201aは、タグRAM203aに対して当該データの使用状況がSharedであることを示すよう情報の更新も要求する。タグRAM203aの情報の更新後、コントローラ201aは、当該データをデータRAM203bに格納する。コントローラ201aは、ディレクトリRAM204に対して当該データがローカルでもあるクラスタ20が持っていることを示すようデータの使用状況の更新を要求する。次に、コントローラ201aは、当該データを演算コア群200の当該データを要求している演算コアに送る。
上記の情報処理装置において、例えば、各クラスタ内のメモリに格納されるデータに関するディレクトリ情報は、データとともにメモリに格納されるとする。そして、メモリからデータを取得する処理においては、一度のメモリ内のデータ参照処理で該当データとディレクトリ情報を取得できるようにする。そこで、メモリ内の同一ブロックに、データとディレクトリ情報を格納する。ただし、このような構成では、データが他のクラスタに持ち出されている場合、当該他のクラスタからデータを取得する際やデータをメモリに書き込む際に、メモリ内のディレクトリ情報を参照する処理が発生する。そして、クラスタは、当該ディレクトリ情報を確認した後で、各種処理を新たに実行する。このため、情報処理装置において、性能面での劣化、電力面での消費増加、メモリ帯域使用率の情報等が発生する。
そこで、ディレクトリ情報をクラスタのL2キャッシュ制御部内のディレクトリRAMに格納する。当該ディレクトリRAMには、メモリから取得されたデータに関するディレクトリ情報が格納される。また、L2キャッシュ制御部内のディレクトリRAMにすべてのディレクトリ情報を格納することもある。この構成は、情報処理装置内のクラスタ数が少ない場合やメモリ容量が少ない場合等、ディレクトリ情報も少なく全ディレクトリ情報をL2キャッシュ制御部側に格納できる場合に採用される。
したがって、上記の比較例の情報処理装置1では、ディレクトリRAMにディレクトリ情報の一部あるいは全体を格納している場合がある。この場合、クラスタは、ディレクトリRAMの参照結果を確認した後でデータ取得要求等の各種処理の詳細を決定する。例えば、データの取得要求が発生したときに、クラスタは、まず、ディレクトリRAMを参照して、当該データがディレクトリキャッシュミス、あるいはリモートのL2キャッシュが当該データを持っていないことを確認する。クラスタは、これらの確認の後で、メモリに対するデータの取得要求を実行する。したがって、この場合は、ディレクトリRAMを参照する処理の分、データ取得に伴うレイテンシが発生し、消費電力も増加する可能性がある。
また、情報処理装置1内で実行するアプリケーションの実効性能を上げるために、各クラスタの演算コア群が使用するデータに関する調整を行うこともある。すなわち、あるアプリケーションの処理を担当する各クラスタにおいて、クラスタ内の演算コア群が当該クラスタ内のメモリに格納されているデータを使用し、他のクラスタ内のメモリのデータを使用しないように調整する。これにより、クラスタのメモリに格納されているデータは、他のクラスタに持ち出されることがない。しかし、このようにアプリケーションを調整した後でも、上記の比較例では、データ取得時にディレクトリRAMの参照を行う。したが
って、この場合でも、ディレクトリRAMを参照する処理の分、情報処理装置の性能が低下し、データ取得に伴うレイテンシが発生し、消費電力も増加する可能性がある。
そこで、以上の比較例に関する説明を踏まえ、一実施形態に係る情報処理装置の例について、図面を参照しながら以下に説明する。
図7は、本実施例としての情報処理装置2における一部のクラスタ構成の概略を示す。図7に示すように、情報処理装置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キャッシュ制御部501、601、701が制御部の一例に相当する。さらに、メモリ502、602、702がデータ記憶部の一例に相当する。
また、図7に示すように、情報処理装置2はモードレジスタ80を有する。後述するように、L2キャッシュ制御部501、601、701は、カウンタ501b、601b、701bをそれぞれ有する。また、モードレジスタ80は、各カウンタのカウント処理を制御する。なお、モードレジスタ80が設定部の一例に相当する。また、カウンタ501b、601b、701bが指標部の一例に相当する。
図7に示すように、各クラスタはL2キャッシュ制御部が互いにバスあるいはインターコネクトによって接続されている。情報処理装置2内では、メモリ空間はいわゆるフラットであり、物理アドレスによってどのクラスタに属するメモリにどのデータが格納されているかが一意に決まる。
図8は、クラスタ50のL2キャッシュ制御部501を示す図である。L2キャッシュ制御部501は、コントローラ501aとカウンタ501bとL2キャッシュ503とディレクトリRAM504とを備える。また、L2キャッシュ503は、タグRAM503aとデータRAM503bを有する。また、ディレクトリRAM504がデータ使用状況記憶部の一例に相当する。なお、タグRAM503a、データRAM503b、ディレクトリRAM504は、それぞれ比較例と同様の機能を有するため、ここでは詳細な説明を省略する。
カウンタ501bは、クラスタ50内のディレクトリRAM504内に格納されているエントリについて、エントリが管理するメモリのブロックのうち、他のクラスタに持ち出されているブロックの数をカウントする。例えば、ディレクトリRAM504のエントリ数を2N(Nは整数)とすると、カウンタ501bのビット数はN+1となる。例えば、
クラスタ50が自身のメモリ502へのアクセスを処理する際に、カウンタ501bの値が0であるとする。これは、ディレクトリRAM504に「他(リモート)のクラスタに持ち出されていることを示すエントリ」が存在しないことを示す。そこで、クラスタ50では、ディレクトリRAM504の参照処理が省略され、メモリ502に対するデータ要求が実行される。
モードレジスタ80は、本実施例に係る情報処理装置2内での各クラスタの動作モードを制御する。本実施例では、一例として、動作モードは「モードオン」と「モードオフ」
の2つのモードを有する。具体的には、「モードオン」とは、各クラスタ内のカウンタの動作を有効にする動作モードである。また、「モードオフ」とは、各クラスタ内のカウンタの動作を無効にする動作モードである。なお、これらの動作モードにおける処理の詳細については後述する。本実施例では、情報処理装置2において、情報処理装置2のOS(Operating System)の起動前やアプリケーションの実行前に動作モードの切り換えを行う。さらに、本実施例では、情報処理装置2のOSがモードレジスタ80の動作モードの切り換えを制御する。なお、動作モードの切り換えは、情報処理装置2のユーザが明示的にOSに指示をして行ってもよいし、実行するアプリケーションのメモリ使用量等の情報に基づいてOSが自律的に行ってもよい。
情報処理装置2において、クラスタ間通信の多いアプリケーションを実行する場合、カウンタが常に1以上になる可能性もある。この場合、カウンタ動作分だけ電力消費量が増加する。また、ディレクトリRAMの参照処理が省略されないため、メモリからのデータ取得に伴って発生するレイテンシの低減や消費電力の削減がもたらされないことも考えられる。そこで、本実施例では、カウンタを動作させるか否かを設定するモードレジスタ80が設けられている。モードレジスタ80によってカウンタの動作を無効にする場合、動作モードが「モードオフ」となり、カウンタの動作が無効にされているクラスタの動作は比較例と同じ動作になる。
また、本実施例においては、コントローラは、ディレクトリRAMの更新処理時にカウンタのインクリメント又はデクリメントを行う。すなわち、コントローラは、ディレクトリRAMのエントリ更新時に、更新対象のエントリを読み込んでから該当エントリの更新を行う。そして、コントローラは、更新前後の状態遷移に応じてカウンタのインクリメント又はデクリメントを行う。
例えば、ディレクトリRAM内のあるディレクトリ情報が、更新対象のエントリに対応するデータが他(リモート)のクラスタに持ち出されていない状態を示すとする。このとき、当該ディレクトリ情報が指すエントリが、他のクラスタに持ち出されている状態に遷移するときに、コントローラがカウンタをインクリメントする。また、その逆の場合は、コントローラはカウンタをデクリメントする。すなわち、当該エントリが示すデータが他のクラスタに持ち出されている状態で、当該他のクラスタから当該データが戻される、つまり当該持ち出し状態が取り消される場合に、コントローラはカウンタをデクリメントする。なお、上記の通り、クラスタの動作モードが「モードオン」であり、カウンタの値が0である場合に、クラスタに対してデータ取得要求があったときは、ディレクトリRAMに対する参照処理が省略される。
図9は、本実施例において、カウンタのインクリメント又はデクリメントを行う際の、処理の概略を示す説明図である。図9には、ディレクトリRAM内のあるインデックスに対応するキャッシュラインを示す。当該キャッシュラインには、更新対象のエントリが含まれる。
本実施例において、ディレクトリRAM504のディレクトリ情報が、情報処理装置2内の各クラスタがメモリ502内のデータを持ち出しているか否かを示す。具体的には、各クラスタのタグRAMには、他のクラスタから取得したデータについて、Modified、Exclusive、Shared、Invalidの4つのタイプコードが記憶される。そこで、ディレクトリRAM504には、持ち出し先のクラスタのタグRAMに記憶されたタイプコード等を基にして、情報処理装置2内のクラスタ毎のメモリ502内のデータについてのタイプコードが記憶される。例えば、情報処理装置2がクラスタ50、60、70で構成される場合を考える。この場合、クラスタ50に対してクラスタ60、70がリモートのクラスタになる。
ここで、クラスタ70がクラスタ50からメモリ502に格納されるデータを持ち出したときに、ディレクトリRAM504には、リモートのクラスタ70がデータを持ち出したことが記憶される。例えば、クラスタ70が当該データを排他的データ取得により取得した場合は、ディレクトリRAM504に記憶されるタイプコードはExclusiveである。
また、クラスタ70によるデータ取得が排他的でない場合は、ディレクトリRAM504に記憶されるタイプコードはSharedである。また、クラスタ70において持ち出されたデータの内容が変更された場合、ディレクトリRAM504にはModifiedのタイプコードが記憶される。すなわち、メモリ502内のデータが他のクラスタに持ち出されたときに、ディレクトリRAM504に記憶されるタイプコードはInvalid以外である。そして、ク
ラスタ70から当該データがクラスタ50に戻されるとき、ディレクトリRAM504に記憶されるタイプコードはInvalidである。
このように、本実施例においては、クラスタ内のメモリに格納されるデータが持ち出されたり戻されたりする際に、そのクラスタ内のディレクトリRAMの更新処理が発生する。そして、ディレクトリRAMを更新する場合、まず、コントローラは、ディレクトリRAMから更新前のエントリの状態を示すデータを読み出す。次に、コントローラは、読み出したエントリの値、すなわち更新前のエントリの状態と、更新後のエントリの状態とを比較する。この比較結果に基づいて、コントローラは、カウンタの値のインクリメント又はデクリメントを行う。
図10は、本実施例において、コントローラ501aが有する回路の一部を示す図である。本実施例においては、コントローラ501a、601a、701aが、この論理回路をそれぞれ有する。図10に示す制御回路により、コントローラ501aは、カウンタ501bに対して値のインクリメント及びデクリメントを行う。図10において、ORゲート501cは、更新前に読み出された、更新対象のL2キャッシュ503のエントリに対応するディレクトリ情報において、ローカル以外のクラスタについてタイプコード(TypeCode)に基づくOR演算を行う。このOR演算により、ディレクトリ情報更新前のデータ使用状況が、クラスタ50以外の各クラスタによって更新対象のエントリに対応するデータが持ち出されている状態であるか否かが確認される。
ORゲート501cには、更新前のディレクトリ情報に含まれる、ローカル以外の各クラスタのタイプコードがそれぞれ入力される。そして、ORゲート501cは、各入力の少なくとも1つが「TypeCode!=I(Invalid)」を満たす場合、すなわちタイプコードがInvalidではない場合に、「1」を出力する。また、ORゲート501cは、それ以外の場合
、すなわち、いずれの入力もタイプコードがInvalidである場合に「0」を出力する。
また、ORゲート501dは、上記更新対象のL2キャッシュ503のエントリに対応する、更新後のディレクトリ情報において、ローカル以外のクラスタについてタイプコード(TypeCode)に基づくOR演算を行う。このOR演算により、ディレクトリ情報更新後のデータ使用状況が、クラスタ50以外の各クラスタによって更新対象のエントリに対応するデータが持ち出されている状態であるか否かが確認される。ORゲート501dには、更新後のディレクトリ情報に含まれる、ローカル以外の各クラスタのタイプコードがそれぞれ入力される。そして、ORゲート501dは、各入力の少なくとも1つが「TypeCode!=I(Invalid)」を満たす場合に「1」を出力する。また、ORゲート501dは、それ以外の場合に「0」を出力する。
ANDゲート501gは、モードレジスタ80により動作モードが「モードオン」にされ、ORゲート501cの出力がインバータ501eで反転されて「1」となり、ORゲート501dの出力が「1」である場合に指示信号CountUpを出力する。カウンタ501
bは、この指示信号に従って現在の値をインクリメントする。上述の通り、ここで「モードオン」とは、モードレジスタ80によってカウンタ501bの動作が有効にされている場合をいう。また、ANDゲート501hは、モードレジスタ80により動作モードが「モードオン」にされ、ORゲート501cの出力が「1」であり、ORゲート501dの出力がインバータ501fで反転されて「1」となる場合に指示信号CountDownを出力す
る。カウンタ501bは、この指示信号に従って現在の値をデクリメントする。
図10に示すように、ディレクトリRAM504内の更新対象エントリについて、更新前の状態が他のクラスタに持ち出されていたことを示す場合、ORゲート501cから「1」が出力されてANDゲート501hに入力される。このとき、ORゲート501cの出力がインバータ501eにより反転されるため、ANDゲート501gには「0」が入力される。一方、ディレクトリRAM504内の更新対象エントリについて、更新前の状態が他のクラスタに持ち出されていないことを示す場合、ORゲート501cから「0」が出力されてANDゲート501hに入力される。このとき、ANDゲート501gには「1」が入力される。
また、ディレクトリRAM504内の更新対象エントリについて、更新後の状態が他のクラスタに持ち出されていることを示す場合、ORゲート501dから「1」が出力されてANDゲート501gに入力される。このとき、ORゲート501dの出力がインバータ501fにより反転されるため、ANDゲート501hには「0」が入力される。一方、ディレクトリRAM504内の更新対象エントリについて、更新後の状態が他のクラスタに持ち出されていないことを示す場合、ORゲート501dから「0」が出力されてANDゲート501gに入力される。このとき、ANDゲート501hには「1」が入力される。
一例として、本実施例において、コントローラ501aが、メモリ502に格納されるデータをクラスタ70に送信する場合を考える。ここでは、当該データは他のクラスタに持ち出されていない、すなわち、当該データはメモリ502又はデータRAM503bに存在する。そして、モードレジスタ80により動作モードが「モードオン」、すなわち、カウンタ501bの動作が有効に設定されているものとする。コントローラ501aは、メモリ502又はデータRAM503bからデータを取得する。そして、コントローラ501aは、ディレクトリRAM504に対して、当該データがリモートのクラスタ70が持っていることを示すよう情報の更新を要求する。したがって、コントローラ501aは、クラスタ70からのデータ取得要求が排他的であるか否かに応じて、クラスタ70による当該データの使用状況がExclusiveあるいはSharedであることを示すよう情報の更新を
要求する。
当該更新処理前において、ディレクトリRAM504内の当該データに関するディレクトリ情報は、当該データが他のいずれのクラスタにも持ち出されていないことを示す。すなわち、リモートのクラスタに関する当該データのタイプコードは、いずれもInvalidで
ある。そのため、ORゲート501cは「0」を出力する。一方、更新後のディレクトリ情報は、当該データがリモートのクラスタ70に持ち出されていることを示す。すなわち、リモートのクラスタ70に関する当該データのタイプコードはSharedあるいはExclusiveである。したがって、ORゲート501dは「1」を出力する。
このため、ANDゲート501gにはインバータ501e及びORゲート501dからともに「1」が入力される。さらに、モードレジスタ80によりカウンタ501bの動作モードが「モードオン」である。したがって、ANDゲート501gは、指示信号CountUpを出力する。そして、指示信号CountUpに従って、カウンタ501bの値がインクリメントされる。一方、ANDゲート501hには、ORゲート501c及びインバータ501
fからともに「0」が入力される。このため、ANDゲート501hから指示信号CountDownは出力されない。
次に、当該データがクラスタ70から戻された場合を考える。なお、ここでもモードレジスタ80により、カウンタ501bの動作が有効にされているものとする。コントローラ501aは、クラスタ70から当該データを取得し、ディレクトリRAM504に対して当該データがリモートのクラスタ70に持ち出されていないことを示すよう情報の更新を要求する。すなわち、コントローラ501aは、ディレクトリRAM504に対して、クラスタ70に関する当該データのタイプコードをInvalidにするよう要求する。
当該更新処理前において、ディレクトリRAM504内の当該データに関するディレクトリ情報は、クラスタ70に持ち出されていることを示す。すなわち、クラスタ70に関する当該データのタイプコードはInvalid以外の値である。そのため、ORゲート501
cは「1」を出力する。一方、更新後のディレクトリ情報は、当該データが他のいずれのクラスタにも持ち出されていないことを示す。すなわち、リモートのクラスタに関する当該データのタイプコードは、いずれもInvalidである。したがって、ORゲート501d
は「0」を出力する。
このため、ANDゲート501hにはORゲート501c及びインバータ501fからともに「1」が入力される。さらに、モードレジスタ80によりカウンタ501bの動作モードが「モードオン」である。したがって、ANDゲート501hは、指示信号CountDownを出力する。そして、指示信号CountDownに従って、カウンタ501bの値がデクリメントされる。一方、ANDゲート501gには、インバータ501e及びORゲート501dからともに「0」が入力される。このため、ANDゲート501gから指示信号CountUpは出力されない。
このように、本実施例においては、図10に示す制御回路により、ディレクトリRAM504内の更新対象エントリについて、更新前の状態と更新後の状態とが比較され、カウンタ501bの値のインクリメント又はデクリメントを行う処理が実現される。
次に、図11に、カウンタの値が0である場合に、ディレクトリRAMの参照処理を省略して、メモリへの参照処理を行う制御を実行する論理回路を示す。本実施例においては、コントローラ501a、601a、701aが、この論理回路をそれぞれ有する。
図11において、ANDゲート501iは、モードレジスタ80によりクラスタ50が「モードオン」に設定され、カウンタ501bの値が0であり、クラスタ50に対するデータ取得要求が発生した場合に「1」を出力する。上述の通り、ここで「モードオン」とは、モードレジスタ80によってカウンタ501bの動作が有効とされている場合をいう。ANDゲート501iの出力は、ORゲート501jに入力される。また、ANDゲート501iの出力は、インバータ501kにより反転されて、ANDゲート501lに入力される。ORゲート501jは、ANDゲート501iの出力が「1」である場合に、メモリへのアクセスを実行する指示信号(LocalMemoryAccess2)を出力する。また、ORゲート501jは、上記の比較例に従ってメモリ502へのアクセスが発生した場合にも、メモリへのアクセスを実行する指示信号(LocalMemoryAccess2)を出力する。
ANDゲート501lは、ANDゲート501iの出力が「0」であり、上記の比較例に従ってディレクトリRAM504へのアクセスが発生した場合に、ディレクトリRAM504へのアクセスを行う指示信号(DirectoryRAMAccess2)を出力する。したがって、
本実施例においては、クラスタ50の動作モードが「モードオフ」である場合は、上記の比較例に従って、ディレクトリRAM504へのアクセスやメモリ502へのアクセスが
実行される。また、クラスタ50の動作モードが「モードオン」である場合は、クラスタ50に対してデータ取得処理が発生したときに、カウンタ501bの値が0であると、ディレクトリRAM504へのアクセスが発生しない。そして、メモリ502へのアクセスが発生し、データ取得要求により要求されているデータがメモリ502から取得される。
また、クラスタの自身のL2キャッシュにデータが格納されている場合は、自身のメモリに格納されるデータを取得する際に、L2キャッシュにおいてキャッシュヒットが発生する。このため、当該データがL2キャッシュから取得されて演算コア群に送られる。以上より、L2キャッシュにおいてキャッシュミスが発生したときにカウンタが0であった場合、該当データが当該L2キャッシュ以外に存在しないという状態は生じない。
また、上記の通り、本実施例においては、ディレクトリRAMの更新処理時に、コントローラは、カウンタのインクリメント処理又はデクリメント処理を行う。また、比較例においては、通常、プロトコルの妥当性確認等のため、ディレクトリRAMの更新処理時に、コントローラは、更新対象のエントリを読み込んでディレクトリ情報を確認する。したがって、本実施例のカウンタの構成を採用しても、比較例に比べてディレクトリRAMの参照回数が増えることはない。
次に、図12は、本実施例において、クラスタ50がデータ取得を行う場合の動作の一例を示す図である。図12においては、カウンタ501bの値が「0」である場合の処理について説明する。すなわち、図12においては、メモリ502に格納されるデータは、データRAM503bになく、他のクラスタにも持ち出されていない。したがって、当該データはメモリ502に格納されている。なお、カウンタ501bの値が「0」でない場合は、上記の比較例と同様に、ディレクトリRAM504のディレクトリ情報を参照して各種処理が実行される。また、図12においては、モードレジスタ80によって動作モードが「モードオン」に設定されている、すなわちカウンタ501bの動作が有効になっている。動作モードが「モードオフ」に設定されている場合は、カウンタ501bの動作が無効となり、クラスタ50は、上記の比較例と同様の処理を実行する。
図13は、図12に示す動作例におけるL2キャッシュ制御部501の動作を示す図である。上記の通り、L2キャッシュ制御部501は、コントローラ501aとカウンタ501bとL2キャッシュ503とディレクトリRAM504をそれぞれ備える。また、L2キャッシュ503は、タグRAM503aとデータRAM503bをそれぞれ備える。
図13に示すように、クラスタ50において、コントローラ501aが演算コア群500から、メモリ502に格納されるデータのデータ要求を受信する。次に、コントローラ501aは、タグRAM503aを参照し、要求されたデータがデータRAM503bに格納されているか否かを確認する。コントローラ501aは、データRAM503bに当該データがない(キャッシュミス)ことを確認すると、カウンタ501bの値を確認する。コントローラ501aは、カウンタ501bの値が「0」であることを確認すると、図11に示す制御回路の動作により、ディレクトリRAM504の参照処理を省略する。そして、コントローラ501aは、メモリ502から、要求されているデータを取得する。コントローラ501aは、メモリ502から当該データを取得すると、ディレクトリRAM504に対して、クラスタ50がデータを持っていることを示す情報を記憶するよう要求する。また、コントローラ501aは、データRAM503aに当該データがデータRAM503bに格納されていることを示す情報を記憶するよう要求する。さらに、コントローラ501aは、当該データをデータRAM503bに格納する。そして、コントローラ501aは、メモリ502から取得したデータを演算コア群500に送信する。
図14は、図12、13に示す動作例におけるL2キャッシュ制御部501のタイミン
グチャートである。以下の説明において、チャート内のステップをSと略記する。S101において、コントローラ501aは、演算コア群500からメモリ502に格納されるデータのデータ要求を受信する。当該データ要求には、要求するデータの格納先を示すアドレス、すなわちメモリ502内の当該データの格納先を示すアドレスも含まれる。S102において、コントローラ501aは、タグRAM503aに対して、当該アドレスがデータ格納先であるデータがデータRAM503bに存在するか否かを確認する。S103において、タグRAM503aは、当該データはデータRAM503bにない(miss)ことをコントローラ501aに通知する。
次に、S104において、コントローラ501aは、カウンタ501bの値を確認する。ここではカウンタ501bの値が0であるため、ディレクトリRAM504内に、当該データが他のクラスタに持ち出されたことを示すエントリは存在しない。したがって、コントローラ501aは、当該データの取得にあたり、ディレクトリRAM504のディレクトリ情報を確認する必要はない。そこで、コントローラ501aは、ディレクトリRAM504の参照処理を省略し、以下に説明するように、すぐにメモリ502に対してデータ取得要求を行うことができる。
S105において、コントローラ501aは、図11に示す制御回路の動作により、メモリ502に対して当該データを要求する。S106において、メモリ502は要求されたデータをコントローラ501aに送信する。S107において、コントローラ501aは、タグRAM503aに対して、データRAM503bに当該データが存在することを示すよう情報の更新を要求する。また、コントローラ501aは、タグRAM503aに対して、当該データの使用状況がSharedであることを示すよう情報の更新を要求する。S108において、タグRAM503aは、コントローラ501aからの要求に従って情報を更新した後、当該更新処理が完了したことをコントローラ501aに通知する。
S109において、コントローラ501aは、データRAM503bに対して、S105においてメモリ502から取得したデータを送信し、当該データを格納するよう要求する。S110において、データRAM503bは当該データの格納処理を行った後、当該格納処理が完了したことをコントローラ501aに通知する。S111において、コントローラ501aは、ディレクトリRAM504に対して、当該データはクラスタ50が持っていることを示すよう(Value=+Local)情報の更新を要求する。上記の通り、S103において当該データについてはキャッシュミスが発生している。また、S105においてカウンタ501bの値が0である。したがって、当該データは他のクラスタに持ち出されてもいない。そこで、ディレクトリRAM504に当該データのディレクトリ情報を示すエントリを新たに追加する。S112において、ディレクトリRAM504は、コントローラ501aからの要求に従って情報を更新した後、当該更新処理が完了したことをコントローラ501aに通知する。S113において、コントローラ501aは、当該データを演算コア群500に送信する。
このように、本実施例においては、カウンタ501bの値が0であるため、ディレクトリRAM504内に他のクラスタがデータを持ち出したことを示すエントリは存在しない。さらに、当該データはデータRAM503bにも存在しないことも確認される。すなわち、当該データはメモリ502以外に存在しないことが確定する。本実施例では、このような場合に、コントローラ501aが、ディレクトリRAM504の参照処理を省略してメモリ502に対するアクセスを行う。したがって、情報処理装置2において、メモリ502に対するアクセス処理に伴うレイテンシを抑えるとともに、消費電力を削減することができる。
また、カウンタ501bの値のカウントに用いるビット数は、数ビットから多くとも数
十ビットで収まると考えられる。すなわち、カウンタ501bに用いる容量は、ディレクトリRAM504の容量に比べて小さい容量で構成することができる。したがって、カウンタ501bの参照処理に伴う情報処理量は、比較例において発生するディレクトリRAM504の参照処理に伴う情報処理量に比べて小さいと考えられる。また、カウンタ501bを設けることによって生じる消費電力量が、ディレクトリRAM504の参照処理を省略することにより実現される消費電力の削減量を上回らないとも言える。
さらに、情報処理装置2において実行するアプリケーションに対して、クラスタ間通信が極力発生しないように調整を行うと、メモリに格納されたデータが他のクラスタに持ち出される頻度が低下する。したがって、カウンタの値が0になる可能性が高まる。このため、ディレクトリRAMの参照処理が省略される回数が増加する。その結果、アクセス処理に伴うレイテンシを抑え、消費電力を削減し、情報処理装置2の性能を向上させる効果がより高まると考えられる。例えば、情報処理装置2において、各クラスタが自身のメモリのデータを使用するフェイズと、各クラスタがクラスタ間通信を行うフェイズを切り分けて実行するようアプリケーションを調整してもよい。これにより、特に、各クラスタが自身のメモリのデータを使用するフェイズにおいて、上記の効果が得られると考えられる。
ところで、本実施形態においてディレクトリRAMは、メモリ又はデータRAM内に格納されている各データについて、各クラスタにおけるタイプコードを、各クラスタに対応するビットによって管理する。例えば、上記の説明ではModified、Exclusive、Shared、Invalidの4つのタイプコードが存在する。そこで、一例として、4つのタイプコードModified、Exclusive、Shared、Invalidに対して、「00」、「01」、「10」、「11」のビットをそれぞれ割り当て、各クラスタによる各データの持ち出し状況を管理する。ただし、ディレクトリRAMにおけるクラスタのデータの持ち出し状況を管理する構成は、上記に限られない。
以上が本実施形態に関する説明であるが、上記の情報処理装置の構成や処理は、上記の実施形態に限定されるものではなく、本発明の技術的思想と同一性を失わない範囲内において種々の変更が可能である。例えば、上記の説明では、モードレジスタ80がクラスタ50、60、70の外部に配置されているが、各クラスタの内部にモードレジスタを1つずつ設ける構成としてもよい。また、上記の説明では、L2キャッシュ制御部内のディレクトリRAMに、メモリに格納されているすべてのデータのディレクトリ情報が格納されている場合を想定したが、上記の実施形態は、そのような場合に限らず適用することができる。例えば、メモリにすべてのディレクトリ情報が格納されており、当該ディレクトリ情報のキャッシュがディレクトリRAMに保持される構成としても、上記の実施形態の構成を適用することができる。
また、上記の実施例の情報処理装置2は、モードレジスタ80を備えないものであってもよい。例えば、情報処理装置2において、クラスタ間通信が比較的少ないアプリケーションを実行する場合には、メモリのデータが他のクラスタに持ち出されることが少ないと予想される。このようなアプリケーションを比較的多く実行する情報処理装置では、モードレジスタ80を省略してもよい。モードレジスタ80がない情報処理装置では、コントローラは、カウンタの値に従ってディレクトリRAMを参照するか否かを判定すればよい。
また、カウンタのビット数をできるだけ増やさない方法としては、ディレクトリRAM内の複数エントリを1まとまりとして、複数エントリ単位でカウントするようコントローラがカウンタを制御するという方法がある。具体的には、複数エントリの全てが持ち出されていない状態から複数エントリのうちいずれか1つでも持ち出された状態に遷移したと
きに、コントローラは、カウンタをインクリメントする。そして、その逆の遷移の場合は、コントローラは、カウンタをデクリメントする。なお、ディレクトリRAMから一度に読み出されるエントリ群とカウント処理における複数エントリ単位とを対応付けると、コントローラは、カウント処理を効率よく制御することができる。
そして、ディレクトリRAMの参照処理を省略する方法として、コントローラがディレクトリRAMに対するクロックの供給を止める方法もある。図15は、上記の実施例において、コントローラ501aに追加することが可能な制御回路の一例である。図15に示すように、NANDゲート501mは、カウンタの値が0であり(Counter==0)、かつ、演算コア群500からデータ要求があった(RequestFrom==Local)場合に、「0」を出力する。このため、ディレクトリRAM504に対するクロックが発生しても、ANDゲート501nの出力が「0」となり、ディレクトリRAM504にはクロックは供給されない。なお、上記以外の場合は、NANDゲート501mは「1」を出力するため、ディレクトリRAM504にはクロックが供給される。なお、クロックが所定の信号の一例に相当する。また、NANDゲート501mとANDゲート501nが信号処理部の一例に相当する。
あるいは、ディレクトリRAM504が備えるEnable信号を用いる方法もある。すなわち、上記の実施例において、コントローラ501aを、ディレクトリRAM504の参照結果を確認した後に各種動作を決定するように構成している場合は、セレクタを用いることができる。図16にその構成の一例を示す。図16に示す制御回路は、例えばディレクトリRAM504に設けることができる。カウンタの値が0のとき、NANDゲート501oは、カウンタの値が0であり(Counter==0)、かつ、演算コア群500からデータ要求があった(RequestFrom==Local)場合に、「0」を出力する。そして、NANDゲート501oの出力が「0」である場合、セレクタ501pは、Miss、Invalidを示す結果を
コントローラ501a返す。この結果は、実質的に、ディレクトリRAM504において要求されているデータに関するディレクトリ情報がないことを意味する。そして、コントローラ501aは、当該結果を受け取ると、メモリ502に対するデータ要求を行う。このため、実質的に、コントローラ501aはディレクトリRAM504のディレクトリ情報の参照処理を省略して、メモリ502からデータを取得する。なお、NANDゲート501oとセレクタ501pがデータ使用状況通知部の一例に相当する。
以上より、図15又は図16に示す制御回路をクラスタ内に設けることでも、上記の実施例と同様にディレクトリRAM504の参照処理を省略することができる。
また、情報処理装置内でクラスタ間通信が頻繁に発生する場合、1つのディレクトリRAMに対し1つのカウンタを設ける構成においては、カウンタが0になりにくい可能性がある。そこで、1つのディレクトリRAMに対応するカウンタを複数設けてもよい。例えば、高度科学技術計算(HPC:High Performance Computing)等では、各クラスタ内で使用されるデータとクラスタ間通信に使用されるデータとが明確に切り分けられることもある。このような場合に、情報処理装置のOS等と協調し、前者のデータに関する情報をディレクトリRAMの物理メモリ空間の前半アドレスに割り当てる。また、後者のデータに関する情報を、ディレクトリRAMの物理メモリ空間の後半アドレスに割り当てる。そして、カウンタを物理アドレスの前半部分と後半部分とでそれぞれ1つずつ設ける。これにより、1つのディレクトリRAMに対して1つのカウンタを設ける場合に比べて、各クラスタ内で使用されるデータを使用する場合に、カウンタの値が0になる可能性を高めることができる。
図17に、一例として、1つのディレクトリRAM804に対して2つのカウンタ801b、901bを設ける場合の概略の構成を示す。ディレクトリRAM804は、ディレ
クトリRAM804が属するクラスタ(図示せず)のメモリ(図示せず)の物理アドレス空間の前半部分のディレクトリ情報(前半アドレス)を管理する領域を有する。さらに、ディレクトリRAM804は、当該メモリの物理アドレス空間の後半部分のディレクトリ情報(後半アドレス)を管理する別の領域を有する。そして、クラスタ内のコントローラ(図示せず)は、カウンタ801bを制御して、ディレクトリRAM804の上記の前半アドレスに対応するディレクトリ情報を対象にカウント処理を行う。また、コントローラは、カウンタ901bを制御して、ディレクトリRAM804の上記の後半アドレスに対応するディレクトリ情報を対象にカウント処理を行う。なお、カウンタ801b、901bの値のインクリメント処理及びデクリメント処理は、上記の実施例と同様であるため、詳細な説明は省略する。
ここで、当該メモリの物理アドレス空間の前半部分に格納されたデータに対するデータ要求が発生したとする。この場合、上記クラスタのコントローラは、カウンタ801bの値を確認する。そして、コントローラは、カウンタ801bの値が0である場合に、上記と同様に、ディレクトリRAM804の参照処理を省略し、メモリからデータを取得する。したがって、この構成では、カウンタ901bの値が0でなくてもディレクトリRAM804の参照処理が省略される。このため、上記の実施例の場合よりもディレクトリRAMの参照処理が省略される可能性が高まると考えられる。
なお、上記の実施例ではディレクトリRAMの参照処理を省略することを念頭に説明した。ただし、各クラスタがディレクトリRAMを有さず、かつ、ディレクトリ情報がすべてメモリに格納されており、かつ、データとそのディレクトリ情報が別個のエントリに格納されている場合にも上記の構成を適用できる。すなわち、この場合、上記のカウンタをメモリ用に設け、コントローラがメモリ内のディレクトリ情報を参照してからデータ取得を行う際に、カウンタが上記のように制御される構成とする。これにより、コントローラは、カウンタの値に基づいてメモリ内のディレクトリ情報の参照を省略し、データ取得をより迅速かつ効率よく行うことができる。
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置(以下、コンピュータ等)に上記情報処理装置の設定を行うための管理ツール、OSその他を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。ここで、設定とは、例えばレジスタの設定等を意味する。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。ここで、コンピュータは、例えば、クラスタやコントローラ等である。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリ等のメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやROM等がある。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
他の演算処理装置に接続される演算処理装置において、
自身が管理する第1のデータと他の演算処理装置から取得した第2のデータとを用いて演算処理する演算処理部と、
前記第1のデータを記憶するメモリ部と、
前記第1のデータが他の演算処理装置に持ち出されているか否かを示すデータ使用状況を記憶するデータ使用状況記憶部と、前記データ使用状況記憶部に記憶されたデータ使用状況について、前記第1のデータが他の演算処理装置に持ち出されている状態と前記第1のデータが他の演算処理装置に持ち出されていない状態との間の遷移を示す指標部とを有し、前記指標部が、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第1のデータを取得する要求が発生したときに、前記データ使用状況記憶部に対するデータ使用状況の参照を省略する制御部と、
を有することを特徴とする演算処理装置。
(付記2)
前記演算処理装置が、前記指標部の動作を動作状態に設定する設定部をさらに有し、
前記設定部によって前記指標部が動作状態に設定されている場合に、前記指標部は前記遷移を示す
ことを特徴とする付記1に記載の演算処理装置。
(付記3)
前記指標部は、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す基準値からの指標値の増減によって前記遷移を示し、前記第1のデータが他の演算処理装置に持ち出されていない状態から他の演算処理装置に持ち出されている状態に遷移するときに前記指標値をインクリメントし、前記第1のデータが他の演算処理装置に持ち出されている状態から他の演算処理装置に持ち出されていない状態に遷移するときに前記指標値をデクリメントすることを特徴とする付記1又は付記2に記載の演算処理装置。
(付記4)
前記演算処理装置は、前記指標部を複数有し、
前記演算処理装置において、各指標部は、前記メモリ部に記憶されるそれぞれ異なるデータのデータ使用状況について、他の演算処理装置に持ち出されている状態と他の演算処理装置に持ち出されていない状態との間の遷移を示す
ことを特徴とする付記1から付記3のいずれかに記載の演算処理装置。
(付記5)
前記演算処理装置は、前記制御部に所定の信号を供給する信号処理部をさらに有し、
前記制御部は、前記所定の信号に従って前記データ使用状況記憶部を参照し、
前記信号処理部は、前記指標部が、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第1のデータを取得する要求が発生したときに、前記制御部に対する前記所定の信号の供給を停止する
ことを特徴とする付記1から付記4のいずれかに記載の演算処理装置。
(付記6)
前記指標部が、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第1のデータを取得する要求が発生したときに、前記データ使用状況記憶部には前記要求された第1のデータに関するデータ使用状況が存在しないことを前記制御部に通知するデータ使用状況通知部をさらに有することを特徴とする付記1から付記4のいずれかに記載の演算処理装置。
(付記7)
他の演算処理装置と、前記他の演算処理装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
自身が管理する第1のデータと他の演算処理装置から取得した第2のデータとを用いて演算処理する演算処理部と、
前記第1のデータを記憶するメモリ部と、
前記第1のデータが他の演算処理装置に持ち出されているか否かを示すデータ使用状況を記憶するデータ使用状況記憶部と、前記データ使用状況記憶部に記憶されたデータ使用状況について、前記第1のデータが他の演算処理装置に持ち出されている状態と前記第1のデータが他の演算処理装置に持ち出されていない状態との間の遷移を示す指標部とを有し、前記指標部が、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第1のデータを取得する要求が発生したときに、前記データ使用状況記憶部に対するデータ使用状況の参照を省略する制御部と、
を有する
ことを特徴とする情報処理装置。
(付記8)
前記演算処理装置が、前記指標部の動作を動作状態に設定する設定部をさらに有し、
前記設定部によって前記指標部が動作状態に設定されている場合に、前記指標部は前記遷移を示す
ことを特徴とする付記7に記載の情報処理装置。
(付記9)
前記指標部は、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す基準値からの指標値の増減によって前記遷移を示し、前記第1のデータが他の演算処理装置に持ち出されていない状態から他の演算処理装置に持ち出されている状態に遷移するときに前記指標値をインクリメントし、前記第1のデータが他の演算処理装置に持ち出されている状態から他の演算処理装置に持ち出されていない状態に遷移するときに前記指標値をデクリメントすることを特徴とする付記7又は付記8に記載の情報処理装置。
(付記10)
前記演算処理装置は、前記指標部を複数有し、
前記演算処理装置において、各指標部は、前記メモリ部に記憶されるそれぞれ異なるデータのデータ使用状況について、他の演算処理装置に持ち出されている状態と他の演算処理装置に持ち出されていない状態との間の遷移を示す
ことを特徴とする付記7から付記9のいずれかに記載の情報処理装置。
(付記11)
前記演算処理装置は、前記制御部に所定の信号を供給する信号処理部をさらに有し、
前記制御部は、前記所定の信号に従って前記データ使用状況記憶部を参照し、
前記信号処理部は、前記指標部が、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第1のデータを取得する要求が発生したときに、前記制御部に対する前記所定の信号の供給を停止する
ことを特徴とする付記7から付記10のいずれかに記載の情報処理装置。
(付記12)
前記指標部が、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第1のデータを取得する要求が発生したときに、前記データ使用状況記憶部には前記要求された第1のデータに関するデータ使用状況が存在しないことを前記制御部に通知するデータ使用状況通知部をさらに有することを特徴とする付記7から付記10のいずれかに記載の情報処理装置。
(付記13)
他の演算処理装置と、前記他の演算処理装置に接続されるとともに、自身が管理する第1のデータと他の演算処理装置から取得した第2のデータとを用いて演算処理を行う演算処理部と、前記第1のデータを記憶するメモリ部とを含む演算処理装置とを有する情報処理装置の制御方法において、
前記演算処理装置が有するデータ使用状況記憶部が、前記第1のデータが他の演算処理装置に持ち出されているか否かを示すデータ使用状況を記憶し、
前記演算処理装置が有する指標部が、前記データ使用状況記憶部に記憶されたデータ使用状況について、前記第1のデータが他の演算処理装置に持ち出されている状態と前記第1のデータが他の演算処理装置に持ち出されていない状態との間の遷移を示し、
前記演算処理装置が有する制御部が、前記指標部が、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第1のデータを取得する要求が発生したときに、前記データ使用状況記憶部に対するデータ使用状況の参照を省略することを特徴とする情報処理装置の制御方法。
(付記14)
前記演算処理装置が有する設定部が、前記指標部の動作を動作状態に設定し、
前記設定部が前記指標部を動作状態に設定した場合に、前記指標部は前記遷移を示す
ことを特徴とする付記13に記載の情報処理装置の制御方法。
(付記15)
前記指標部は、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す基準値からの指標値の増減によって前記遷移を示し、前記第1のデータが他の演算処理装置に持ち出されていない状態から他の演算処理装置に持ち出されている状態に遷移するときに前記指標値をインクリメントし、前記第1のデータが他の演算処理装置に持ち出されている状態から他の演算処理装置に持ち出されていない状態に遷移するときに前記指標値をデクリメントすることを特徴とする付記13又は付記14に記載の情報処理装置の制御方法。
(付記16)
前記演算処理装置は、前記指標部を複数有し、
前記演算処理装置において、各指標部は、前記メモリ部に記憶されるそれぞれ異なるデータのデータ使用状況について、他の演算処理装置に持ち出されている状態と他の演算処理装置に持ち出されていない状態との間の遷移を示す
ことを特徴とする付記13から付記15のいずれかに記載の情報処理装置の制御方法。
(付記17)
前記演算処理装置が有する信号処理部が、前記制御部に所定の信号を供給し、
前記制御部は、前記所定の信号に従って前記データ使用状況記憶部を参照し、
前記信号処理部は、前記指標部が、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第1のデータを取得する要求が発生したときに、前記制御部に対する前記所定の信号の供給を停止する
ことを特徴とする付記13から付記16のいずれかに記載の情報処理装置の制御方法。
(付記18)
前記演算処理装置が有するデータ使用状況通知部が、前記指標部が前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第1のデータを取得する要求が発生したときに、前記データ使用状況記憶部には該データに関するデータ使用状況が存在しないことを前記記憶制御部に通知することを特徴とする付記13から付記16のいずれかに記載の情報処理装置の制御方法。
1、2 情報処理装置
10、20、30、50、60、70 クラスタ
80 モードレジスタ
100、200、300、500、600、700 演算コア群
101、201、301、501、601、701 L2キャッシュ制御部
102、202、302、502、602、702 メモリ
103、203、303、503、603、703 L2キャッシュ
101a、201a、301a、501a、601a コントローラ
501b、801b、901b カウンタ
103a、203a、503a、603a タグRAM
103b、203b、503b、603b データRAM
104、204、504、604、804 ディレクトリRAM
501p セレクタ





Claims (7)

  1. 他の演算処理装置に接続される演算処理装置において、
    自身が管理する第1のデータと他の演算処理装置から取得した第2のデータとを用いて演算処理する演算処理部と、
    前記第1のデータを記憶するメモリ部と、
    前記第1のデータが他の演算処理装置に持ち出されているか否かを示すデータ使用状況を記憶するデータ使用状況記憶部と、前記データ使用状況記憶部に記憶されたデータ使用状況について、前記第1のデータが他の演算処理装置に持ち出されている状態と前記第1のデータが他の演算処理装置に持ち出されていない状態との間の遷移を示す指標部とを有し、
    自身が実行するアプリケーションごとに前記指標部の動作を有効にする第1のモードまたは前記指標部の動作を無効にする第2のモードを設定する設定部と、
    前記設定部が前記第1のモードに設定し、さらに前記指標部が、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第1のデータを取得する要求が発生したときに、前記データ使用状況記憶部に対するデータ使用状況の参照を省略する制御部と、
    を有することを特徴とする演算処理装置。
  2. 前記指標部は、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す基準値からの指標値の増減によって前記遷移を示し、前記第1のデータが他の演算処理装置に持ち出されていない状態から他の演算処理装置に持ち出されている状態に遷移するときに前記指標値をインクリメントし、前記第1のデータが他の演算処理装置に持ち出されている状態から他の演算処理装置に持ち出されていない状態に遷移するときに前記指標値をデクリメントすることを特徴とする請求項1に記載の演算処理装置。
  3. 前記演算処理装置は、前記指標部を複数有し、
    前記演算処理装置において、各指標部は、前記メモリ部に記憶されるそれぞれ異なるデータのデータ使用状況について、他の演算処理装置に持ち出されている状態と他の演算処理装置に持ち出されていない状態との間の遷移を示す
    ことを特徴とする請求項1または請求項2に記載の演算処理装置。
  4. 前記演算処理装置は、前記制御部に所定の信号を供給する信号処理部をさらに有し、
    前記制御部は、前記所定の信号に従って前記データ使用状況記憶部を参照し、
    前記信号処理部は、前記指標部が、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第1のデータを取得する要求が発生したときに、前記制御部に対する前記所定の信号の供給を停止する
    ことを特徴とする請求項1から請求項のいずれか1項に記載の演算処理装置。
  5. 前記指標部が、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第1のデータを取得する要求が発生したときに、前記データ使用状況記憶部には前記要求された第1のデータに関するデータ使用状況が存在しないことを前記制御部に通知するデータ使用状況通知部をさらに有することを特徴とする請求項1から請求項のいずれか1項に記載の演算処理装置。
  6. 他の演算処理装置と、前記他の演算処理装置に接続される演算処理装置とを有する情報処理装置において、
    前記演算処理装置は、
    自身が管理する第1のデータと他の演算処理装置から取得した第2のデータとを用いて演算処理する演算処理部と、
    前記第1のデータを記憶するメモリ部と、
    前記第1のデータが他の演算処理装置に持ち出されているか否かを示すデータ使用状況を記憶するデータ使用状況記憶部と、前記データ使用状況記憶部に記憶されたデータ使用状況について、前記第1のデータが他の演算処理装置に持ち出されている状態と前記第1のデータが他の演算処理装置に持ち出されていない状態との間の遷移を示す指標部と、自身が実行するアプリケーションごとに前記指標部の動作を有効にする第1のモードまたは前記指標部の動作を無効にする第2のモードを設定する設定部とを有し、前記設定部が前記第1のモードに設定し、さらに前記指標部が、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第1のデータを取得する要求が発生したときに、前記データ使用状況記憶部に対するデータ使用状況の参照を省略する制御部と、
    を有する
    ことを特徴とする情報処理装置。
  7. 他の演算処理装置と、前記他の演算処理装置に接続されるとともに、自身が管理する第1のデータと他の演算処理装置から取得した第2のデータとを用いて演算処理を行う演算処理部と、前記第1のデータを記憶するメモリ部とを含む演算処理装置とを有する情報処理装置の制御方法において、
    前記演算処理装置が有するデータ使用状況記憶部が、前記第1のデータが他の演算処理装置に持ち出されているか否かを示すデータ使用状況を記憶し、
    前記演算処理装置が有する指標部が、前記データ使用状況記憶部に記憶されたデータ使用状況について、前記第1のデータが他の演算処理装置に持ち出されている状態と前記第1のデータが他の演算処理装置に持ち出されていない状態との間の遷移を示し、
    前記演算処理装置が有する設定部が、自身が実行するアプリケーションごとに前記指標部の動作を有効にする第1のモードまたは前記指標部の動作を無効にする第2のモードを設定し、
    前記演算処理装置が有する制御部が、前記設定部が前記第1のモードに設定し、さらに前記指標部が、前記第1のデータがいずれも他の演算処理装置に持ち出されていない状態を示す場合に、前記第1のデータを取得する要求が発生したときに、前記データ使用状況記憶部に対するデータ使用状況の参照を省略することを特徴とする情報処理装置の制御方法。
JP2013074711A 2013-03-29 2013-03-29 演算処理装置、情報処理装置及び情報処理装置の制御方法 Active JP6089891B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013074711A JP6089891B2 (ja) 2013-03-29 2013-03-29 演算処理装置、情報処理装置及び情報処理装置の制御方法
EP14161212.7A EP2784684A1 (en) 2013-03-29 2014-03-24 Operation processing apparatus, information processing apparatus and method of controlling information processing apparatus
US14/224,108 US20140297957A1 (en) 2013-03-29 2014-03-25 Operation processing apparatus, information processing apparatus and method of controlling information processing apparatus

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2014199576A JP2014199576A (ja) 2014-10-23
JP6089891B2 true JP6089891B2 (ja) 2017-03-08

Family

ID=50486747

Family Applications (1)

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

Country Status (3)

Country Link
US (1) US20140297957A1 (ja)
EP (1) EP2784684A1 (ja)
JP (1) JP6089891B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10740116B2 (en) * 2015-09-01 2020-08-11 International Business Machines Corporation Three-dimensional chip-based regular expression scanner
JP6319473B1 (ja) * 2017-02-07 2018-05-09 日本電気株式会社 情報処理装置
US10521112B2 (en) * 2017-03-17 2019-12-31 International Business Machines Corporation Layered clustered scale-out storage system
US10915445B2 (en) * 2018-09-18 2021-02-09 Nvidia Corporation Coherent caching of data for high bandwidth scaling
US11836523B2 (en) * 2020-10-28 2023-12-05 Red Hat, Inc. Introspection of a containerized application in a runtime environment

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3769411B2 (ja) 1999-03-09 2006-04-26 日本電気株式会社 マルチプロセッサシステム
US6721856B1 (en) * 2000-10-26 2004-04-13 International Business Machines Corporation Enhanced cache management mechanism via an intelligent system bus monitor
US7089372B2 (en) * 2003-12-01 2006-08-08 International Business Machines Corporation Local region table for storage of information regarding memory access by other nodes
JP4119380B2 (ja) * 2004-02-19 2008-07-16 株式会社日立製作所 マルチプロセッサシステム

Also Published As

Publication number Publication date
US20140297957A1 (en) 2014-10-02
EP2784684A1 (en) 2014-10-01
JP2014199576A (ja) 2014-10-23

Similar Documents

Publication Publication Date Title
TWI627536B (zh) 用於具有調適分割之一共用快取之系統及方法
US8719507B2 (en) Near neighbor data cache sharing
JP6089891B2 (ja) 演算処理装置、情報処理装置及び情報処理装置の制御方法
US8762651B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
CN105378682A (zh) 持久存储器中数据的观察
JP6630449B2 (ja) 他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換
JP2018005395A (ja) 演算処理装置、情報処理装置および演算処理装置の制御方法
JP6040840B2 (ja) 演算処理装置、情報処理装置及び情報処理装置の制御方法
CN111406251B (zh) 数据预取方法及装置
JP6036457B2 (ja) 演算処理装置、情報処理装置及び情報処理装置の制御方法
US8397029B2 (en) System and method for cache coherency in a multiprocessor system
KR20180109675A (ko) 저장된 교체 정보를 갖는 스누프 필터, 이에 대한 방법 및 희생자 전용 캐시와 스누프 필터 공유 교체 정책을 포함하는 시스템
CN114341821A (zh) 生产者至消费者的主动直接高速缓存传送
US10565111B2 (en) Processor
JP6094303B2 (ja) 演算処理装置、情報処理装置及び情報処理装置の制御方法
US9983994B2 (en) Arithmetic processing device and method for controlling arithmetic processing device
US20160342516A1 (en) Cache coherence in multi-compute-engine systems
JP5045334B2 (ja) キャッシュシステム
JP5574039B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP2014182488A (ja) 演算処理装置、及び演算処理装置の制御方法
JP6631317B2 (ja) 演算処理装置、情報処理装置および情報処理装置の制御方法
WO2014056534A1 (en) Context-sensitive data-cache
CN117917648A (zh) 缓存数据的方法、装置、芯片、处理器和系统
KR20230134447A (ko) 메모리 활용도를 관리하기 위한 시스템 및 방법
CN112955877A (zh) 修改存储数据的装置和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161011

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161209

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170123

R150 Certificate of patent or registration of utility model

Ref document number: 6089891

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150