JP2019049872A - 演算処理装置及び演算処理装置の制御方法 - Google Patents

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

Info

Publication number
JP2019049872A
JP2019049872A JP2017173832A JP2017173832A JP2019049872A JP 2019049872 A JP2019049872 A JP 2019049872A JP 2017173832 A JP2017173832 A JP 2017173832A JP 2017173832 A JP2017173832 A JP 2017173832A JP 2019049872 A JP2019049872 A JP 2019049872A
Authority
JP
Japan
Prior art keywords
cache
data
memory
tag
cmg
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.)
Granted
Application number
JP2017173832A
Other languages
English (en)
Other versions
JP7100237B2 (ja
Inventor
君路 陳
Jun Lu Chen
君路 陳
坂田 英樹
Hideki Sakata
英樹 坂田
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 JP2017173832A priority Critical patent/JP7100237B2/ja
Priority to US16/120,484 priority patent/US10521346B2/en
Publication of JP2019049872A publication Critical patent/JP2019049872A/ja
Application granted granted Critical
Publication of JP7100237B2 publication Critical patent/JP7100237B2/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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • 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
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • 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
    • G06F12/0826Limited pointers directories; State-only directories without pointers
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/1021Hit rate improvement
    • 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/60Details of cache memory

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)

Abstract

【課題】回路規模を抑制し処理工数を削減する演算処理装置を提供する。
【解決手段】キャッシュユニットCA_Uは、キャッシュヒット判定がキャッシュヒットであれば、キャッシュメモリL2$のデータを読み出して、メモリアクセス要求元にデータ応答する。また、タグディレクトリがヒット(所持中)であれば、データを所持しているCMG(コアメモリグループ)のキャッシュ制御回路にデータ要求を発行し、データ応答されたデータを自分のキャッシュメモリに登録し、プロセッサコアにデータ応答する。また、ローカルCMGからのメモリアクセス要求の場合は、データを所持しているCMGのキャッシュ制御回路がローカルCMGのキャッシュ制御回路にデータ応答し、ホームCMGにデータ応答完了報告を行う。
【選択図】図3

Description

本発明は,演算処理装置及び演算処理装置の制御方法に関する。
演算処理装置は、演算処理装置としてのCPU(Central Processing Unit)またはプロセッサと呼ばれる高集積回路の半導体チップである。近年のプロセッサは、演算処理部としてのプロセッサコアを複数内蔵するマルチコア化が進められる傾向にある。
マルチコア化されたプロセッサには、複数のコアと、複数のコアに共有されるラストレベルキャッシュ(以下LLキャッシュと称する。)と、メモリアクセス制御回路(MAC)とをそれぞれ有する複数のコアメモリグループ(以下CMGまたはノードと称する。)を有するプロセッサが開発されてきた。
複数のCMGを有するプロセッサは、CMG間のキャッシュコヒーレンシを保つために、各CMGが、自分及び他のCMGが管理するメモリのデータをL2キャッシュに所持しているか否かを示すデータ所持情報を有するディレクトリキャッシュを有する。そして、各CMGは、メモリアクセス要求についてキャッシュミスが発生すると、ディレクトリキャッシュを参照して、自分のCMGまたは他のCMGがメモリアクセス要求のデータをキャッシュに所持しているか否かを判定する。もし他のCMGがデータを所持している場合は、自CMGは、他のCMGに、L2キャッシュ内のデータを吐き出すデータ要求を発行する。
国際公開第2007/099643号パンフレット
複数のCMGを有するプロセッサでは、各CMGがLLキャッシュとメモリアクセスコントローラとの間に、ホームエージェントを設け、自分のCMGが管理するメモリのデータが自分のCMGと他のCMGにより所持されているか否かを示す所持情報を記録したディレクトリキャッシュをホームエージェント内に設けている。このように、各CMG内のホームエージェントが全CMGのデータ所持情報を有するディレクトリキャッシュを設けることで、全CMGからのメモリアクセス要求をホームエージェントのパイプライン回路に投入し、ホームエージェントが他のCMGにデータ吐き出し要求を発行すべきか否かを判定する。
しかしながら、近年のマルチコア化のさらなる進化に伴いCMGの数が増加し、各CMGに設けたホームエージェント内のディレクトリキャッシュの回路規模と、ホームエージェントのパイプラインによる処理工数が、大きな負担になってきた。
そこで,本発明の目的は,ホームエージェントの機能を残しつつ、回路規模を抑制しそして処理工数を削減した演算処理装置及び演算処理装置の制御方法を提供することにある。
本実施の形態の第1の側面は,複数の演算処理部と、前記複数の演算処理部が共有するキャッシュユニットと、前記キャッシュユニットからの第1のメモリアクセス要求を入力しメモリへのアクセスを制御するメモリアクセス制御部とをそれぞれ含む複数のコアメモリグループを有し、
前記キャッシュユニットは、
キャッシュメモリと、
前記キャッシュメモリの状態を記憶するキャッシュタグと、
他のコアメモリグループ内のキャッシュメモリによるデータの所持情報を記憶するタグディレクトリと、
前記演算処理部からの第2のメモリアクセス要求及び他のコアメモリグループからの第3のメモリアクセス要求を入力して制御を行うキャッシュ制御部とを有し、
前記キャッシュ制御部は、
前記第2及び第3のメモリアクセス要求に応答して、前記キャッシュタグを参照することによるキャッシュヒット判定を行い、
前記キャッシュヒット判定がキャッシュミスと判定した場合、前記タグディレクトリを参照して前記他のコアメモリグループがデータを所持しているか否かのデータ所持判定を行い、
前記他のコアメモリグループがデータを所持していると判定した場合、前記データを所持する他のコアメモリグループに所持する前記データの吐き出しを要求するデータ要求を発行する、演算処理装置である。
第1の側面によれば,回路規模を抑制しそして処理工数を削減することができる。
本実施の形態のプロセッサを有するマルチプロセッササーバシステムの構成例を示す図である。 本実施の形態のプロセッサの改良前の構成を示す図である。 本実施の形態におけるプロセッサの構成を示す図である。 キャッシュユニットの構成を示す図である。 キャッシュ制御回路のパイプライン構造の一例を示す図である。 タグディレクトリのフォーマットを示す図である。 タグディレクトリとディレクトリキャッシュの構成を対比して示す図である。 図2のディレクトリキャッシュDIR$方式でのリード要求及びリモートCMGへのデータ要求の処理を示す図である。 本実施の形態のタグディレクトリTAGDIR方式でのリード要求及びリモートCMGへのデータ要求の処理を示す図である。 同じタグディレクトリ方式でのリード要求に対する処理を示すフローチャート図である。 図2のディレクタキャッシュ方式でのリプレース処理を示す図である。 本実施の形態の図3のタグディレクトリ方式でのリプレース処理を示す図である。
図1は、本実施の形態のプロセッサを有するマルチプロセッササーバシステムの構成例を示す図である。マルチプロセッササーバシステムは、例えば、2つのサーバシステムボードSYS_BD_0, SYS_BD_1を有し、それぞれに設けられたCPU接続インターフェースCPU_CN_IFを介して接続される。また、各サーバシステムボードは、例えば4個の演算処理装置としてのプロセッサ(またはCPUチップ)CPU_CHIPと、プロセッサそれぞれに対応する入出力装置IOと、CPU接続インターフェースCPU_CN_IFを有する。4つのプロセッサCPU_CHIPは、それぞれの入出力装置IOと接続され、更に、4つのプロセッサは互いに通信可能に接続されている。そして、4つのプロセッサは、CPU接続インターフェースCPU_CN_IFを介して、他のサーバシステムボード上の4つのプロセッサとも接続される。
図2は、本実施の形態のプロセッサの改良前の構成を示す図である。図2のプロセッサCPU_CHIPは、例えば、12個の演算処理部としてのプロセッサコアCOREを有し、4個のコアメモリグループCMGはそれぞれ、3個のプロセッサコアCOREと、3個のプロセッサコアで共有されるキャッシュユニットCA_Uと、ホームエージェントHAとメモリアクセス制御回路MACとを有する。各メモリアクセス制御回路MACは、それぞれのコアメモリグループCMGが管理するアドレスのメインメモリMEM_1〜MEM_3に対してメモリアクセスを制御する。コアメモリグループCMGは、1つのノードと見なすことができる。以下、コアメモリグループを単にCMGと称する。
各プロセッサコアCOREは、演算処理回路ALUと第1レベルキャッシュL1$を有する。また、複数のプロセッサコアで共有されるキャッシュユニットCA_Uは、第2レベルキャッシュユニットまたはラストレベルキャッシュユニットである。キャッシュユニットCA_Uは、データを記憶するL2キャッシュメモリL2$と、L2キャッシュメモリのデータが記憶されるキャッシュブロックの状態を記憶するL2キャッシュタグL2TAGとを有する。
そして、ホームエージェントHAは、4つのCMGのL2キャッシュメモリのデータ所持情報であるディレクトリ情報を記憶するディレクトリキャッシュDIR$を有し、メモリアクセス要求のデータを所持しているCMGの判定とそのCMGへのデータ応答の制御を集中管理する。4つのCMG間の通信を可能にするCMG間バスC_BUSが設けられる。各CMG内のL2キャッシュユニットCA_Uは、このCMG間バスC_BUSを介して、他のCMGのホームエージェントにメモリアクセス要求を発行し、他のCMGのホームエージェントは、メモリアクセス要求に対するデータをL2キャッシュメモリL2$またはメインメモリから読み出して、CMG間バスC_BUSを介して、メモリアクセス要求元のCMGにデータ応答を行う。
ホームエージェントHAは、ホームのCMGのL2キャッシュユニットCA_Uからのメモリアクセス要求に応答して、ディレクトリキャッシュDIR$を参照し、他のCMGのキャッシュメモリがメモリアクセス要求のデータを所持しているか否かをチェックする。他のCMGがデータを所持する場合、ホームエージェントは他のCMGに対してキャッシュメモリ内のデータの吐き出しを要求するデータ要求を発行する。
一方、ホームエージェントは、ローカルのCMGのホームエージェントからのメモリアクセス要求に応答して、ディレクトリキャッシュを参照し、ホームのCMGのキャッシュメモリがメモリアクセス要求のデータを所持しているか否かをチェックする。ホームのCMGがデータを所持する場合、ホームエージェントHAはキャッシュユニットCA_Uにデータ読み出しオーダーを発行してL2キャッシュメモリL2$からデータを読み出し、リモートのCMGにデータ応答する。
ホームのCMGのキャッシュメモリがデータを所持しない場合、ディレクトリキャッシュDIR$を参照し、他のCMGがデータを所持するか否かチェックする。
他のCMG(リモートのCMG)がデータを所持する場合、ホームエージェントは、リモートのCMGにキャッシュメモリ内のデータを吐き出すことを要求するデータ要求を発行する。その後、ホームエージェントは、リモートCMGからデータ要求に対するデータ応答を受信し、リモートのCMGにデータ応答する。
他のCMGもデータを所持しない場合、ホームエージェントは、メモリアクセス制御回路MACを介してメインメモリにアクセスし、データを読み出し、リモートCMGにデータ応答する。
図2の各CMGのホームエージェントHAは、ローカルのキャッシュメモリのデータ所持情報と、リモート、つまり他のCMGのキャッシュメモリのデータ所持情報を全て記憶するディレクトリキャッシュDIR$を有する。また、ホームエージェントHAは、ホームエージェントパイプライン制御回路を有し、そのパイプライン制御回路は、メモリアクセス要求に応答して、ディレクトリキャッシュDIR$をチェックし、チェック結果に対応して他のCMGに対するデータ応答またはメモリアクセス制御回路MACに対するメモリアクセス要求を発行する。したがって、マルチコア化によってCMGの数が増大するたびに、ホームエージェントHAの集積回路量が増大する。また、L2キャッシュユニットCA_Uは、メモリアクセス要求に応答してキャッシュタグL2TAGをチェックし、更に、ホームエージェントHAは、メモリアクセス要求に応答してディレクトリキャッシュDIR$をチェックするので、メモリアクセス要求に対する処理工数が増大する。
[本実施の形態]
図3は、本実施の形態におけるプロセッサの構成を示す図である。本実施の形態のプロセッサも、図2と同様に、プロセッサチップ内の複数のCMG間のccNUMAキャッシュコヒーレンシ制御を行う。
このプロセッサCPU_CHIPは、図2と同様に、例えば、12個のプロセッサコアCOREを有し、4個のコアメモリグループCMGはそれぞれ、3個のプロセッサコアCOREと、3個のプロセッサコアで共有されるキャッシュユニットCA_Uと、ホームエージェントHAとメモリアクセス制御回路MACとを有する。各MACは、それぞれのCMGが管理するアドレスのメインメモリMEM_0〜MEM_3にメモリアクセス要求を行う。
各プロセッサコアCOREの構成は、図2と同様に、演算処理回路ALUと第1レベルキャッシュL1$とを有する。各プロセッサコアは、図示しないロードストア回路によりメインメモリへのアクセスであるメモリアクセス要求を発行する。
各CMG内において、3つのプロセッサコアCOREに共有される第2レベルまたはラストレベル(LL)のキャッシュユニットCA_Uは、図2と同様に、データを記憶するL2キャッシュメモリL2$と、そのL2キャッシュメモリのデータの状態を記憶するL2キャッシュタグL2TAGとを有する。さらに、キャッシュユニットCA_Uは、図2と異なり、他のCMG、つまりリモートのCMGのL2キャッシュメモリによるデータの所持の有無を含むデータ所持情報を記憶するタグディレクトリTAGDIRを有する。
そして、キャッシュユニットCA_U内のキャッシュ制御回路(図示せず)が、入力されるメモリアクセス要求に応答して、L2キャッシュタグL2TAGを参照し、ホームのCMGのL2キャッシュメモリL2$がメモリアクセス要求のデータを記憶するか否かのキャッシュヒット判定を行う。さらに、キャッシュミスが発生すると、キャッシュ制御回路が、タグディレクトリTAGDIRを参照し、他のCMG、つまりリモートのCMGのキャッシュメモリL2$がデータを所持しているか否かのチェックを行う。
そして、キャッシュユニットCA_Uは、キャッシュヒット判定がキャッシュヒットであれば、キャッシュメモリL2$のデータを読み出して、メモリアクセス要求元にデータ応答する。また、タグディレクトリがヒット(所持中)であれば、データを所持しているCMGのキャッシュ制御回路にデータ要求を発行し、データ応答されたデータを自分のキャッシュメモリに登録し、プロセッサコアにデータ応答する。また、ローカルCMGからのメモリアクセス要求の場合は、データを所持しているCMGのキャッシュ制御回路がローカルCMGのキャッシュ制御回路にデータ応答し、ホームCMGにデータ応答完了報告を行う。これらの処理については後で詳述する。
上記のとおり、第1に、各CMGの共有キャッシュのキャッシュユニットCA_Uに、リモートのCMGのデータ所持情報を記憶するタグディレクトリTAGDIRが設けられている。例えばCMG0の場合、CMG0のタグディレクトリTAGDIRがCMG1,CMG2,CMG3のデータ所持情報を記憶し、L2キャッシュタグL2TAGが自分のCMG0のデータ所持情報を記憶している。したがって、キャッシュ制御回路は、タグディレクトリTAGDIRとL2キャッシュタグL2TAGを併せてチェックすれば、全CMGのキャッシュメモリによるデータの所持情報をチェックできる。
しかも、図2の各CMGのディレクトリキャッシュDIR$が4つのCMG分の所持情報を保持しているが、本実施の形態のタグディレクトリTAGDIRは3つのCMG分の所持情報を保持すればよいので、各CMGのタグディレクトリTAGDIRの容量は、単純に4分の3に縮小することができる。しかも、リモートCMGによるホームCMGのデータの持ち出し頻度がそれほど高くなければ、各CMGのタグディレクトリTAGDIRの容量は、更に縮小できる場合がある。その結果、各CMGの回路規模を縮小できる。
第2に、本実施の形態のキャッシュユニットCA_U内のパイプライン構造のキャッシュ制御回路が、図2のホームエージェント内のパイプライン制御回路のディレクトリキャッシュDIR$のチェック機能を有する。その結果、ホームエージェントを設ける必要がない。また、キャッシュユニット内のキャッシュ制御回路は、L2キャッシュタグL2TAGでキャッシュミスが発生した場合、ホームエージェントのパイプライン制御回路に要求を投入することなく、タグディレクトリTAGDIRをチェックできるので、処理を高速化できる。
図4は、キャッシュユニットの構成を示す図である。L2キャッシュのキャッシュユニットL2_CA_Uは、メモリアクセス要求を選択しパイプライン構造のキャッシュ制御回路CA_PIPEに入力する入力調停回路INPUT_ARBを有する。入力調停回路は、メモリアクセス要求等を登録するリクエストキューを有し、自分のCMGのコアからの第2のメモリアクセス要求MA_RQ_2と、別のCMGのコアからの第3のメモリアクセス要求MA_RQ_3をリクエストキューに登録し、所定の基準に基づいていずれかの要求を選択する。
また、キャッシュユニットL2_CA_Uは、自分のCMGの所持データを記憶するL2キャッシュメモリL2$と、L2キャッシュメモリ内のデータの状態を記憶するL2キャッシュタグL2TAGとを有する。データの状態は、例えば、MESIプロトコルによる無効(I)、排他的(E)、共有(S)、変更(M)のいずれかである。
さらに、キャッシュユニットL2_CA_Uは、他のCMGのL2キャッシュメモリが自分のCMGが管理するメインメモリのデータを所持するか否かのデータ所持情報を記憶するタグディレクトリTAGDIRを有する。タグディレクトリのデータ所持情報は、例えば、無効(I)、排他的(E)、共有(S)などである。
L2キャッシュメモリL2$及びL2キャッシュタグL2TAGが、例えば16Way構成の場合、そのWay選択のためのL2LRU選択回路L2LRUを有する。これにより、最も古いデータを有するWayのキャッシュブロックがリプレース対象に選択される。同様に、タグディレクトリTAGDIRが、他の3つのCMGの全インデックス数よりも少ないインデックス数の容量しかない場合、タグディレクトリのインデックスのリプレースが必要になるので、そのWay選択のためにタグディレクトリのLRU選択回路TAGD_LRUを有する。タグディレクトリTAGDIRが、他の3つのCMGの全インデックス数と同じインデックス数の容量を有する場合、他のCMGのキャッシュメモリがその全インデックス数分のデータを所持しても、タグディレクトリTAGDIRが全ての所持情報を記憶することができる。その場合、タグディレクトリのLRU選択回路は必要ない。
キャッシュユニットの動作の概略を説明すると、入力調停回路INPUT_ARBは、自分のCMGのプロセッサコアCOREと他のCMGのL2キャッシュ制御回路からのメモリアクセス要求MA_RQ_2,MA_RQ_3を調停し、順次キャッシュ制御回路CA_PIPEに投入(入力)する。
キャッシュ制御回路は、入力されたメモリアクセス要求に応答して、まずL2キャッシュタグL2TAGを検索し、キャッシュヒット判定を行う。キャッシュヒットの場合、自分のCMG内のキャッシュユニットで解決可能であり、キャッシュ制御回路は、タグディレクトリTAGDIRをチェックせずに、L2キャッシュメモリL2$からデータを抽出して、データ応答DATA_RSPを要求元のCMGのコアまたはキャッシュ制御回路に返信する。
一方、キャッシュミスの場合、自分のCMG内のキャッシュユニットで解決不能であり、キャッシュ制御回路は、タグディレクトリTAGDIRをチェックして、リモートCMGのキャッシュメモリが要求されたデータを所持しているか否かを判定する。
この判定結果がタグディレクトリでヒットなら、リモートCMGがそのデータを所持していることを意味する。そこで、キャッシュ制御回路は、リモートCMGに対してデータ要求DATA_RQを発行し、リモートCMGのキャッシュ制御回路に、L2キャッシュに所持するデータを吐き出し、メモリアクセス要求元にデータ応答するよう要求する。そして、キャシュ制御回路は、リモートCMGからデータ応答を受信すると、自分のL2キャッシュに登録し、タグディレクトリの所持情報を更新し、メモリアクセス要求元のプロセッサコアにデータ応答する。または、キャッシュ制御回路は、データ応答完了報告を受信すると、タグディレクトリの所持情報を更新する。
タグディレクトリでミスなら、キャッシュ制御回路は、メモリアクセスMA_RQ_1をメモリアクセスコントローラMACに発行し、メインメモリからデータを取得する。そして、取得したデータを要求元のCMGにデータ応答し、タグディレクトリの所持情報を更新する。
図5は、キャッシュ制御回路のパイプライン構造の一例を示す図である。図5に示したとおり、入力調停回路INPUT_ARBが、メモリアクセス要求をキャッシュパイプラインに投入すると、前述のとおり、L2キャッシュタグをチェックするL2TAGチェック回路10が、L2TAGを検索し、キャッシュ判定を行う。キャッシュ判定がヒットであれば、データ取得回路11が、L2キャッシュメモリL2$からヒットしたデータを読み出し、データ応答回路12が要求元のコアやキャッシュ制御回路にデータ応答する。
一方、キャッシュ判定がミスであれば、タグディレクトリチェック回路13が、タグディレクトリTAGDIRを検索し、他のCMG(リモートのCMG)のL2キャッシュメモリがデータを所持しているか否かの判定を行う。この判定がヒットであれば、データ要求回路14が、リモートのCMG(R_CMG)にデータ要求DATA_RQを発行する。一方、判定がミスであれば、メモリアクセス要求回路15が、メモリアクセス制御回路MACにメモリアクセス要求MA_RQ_4を発行する。
図5に示すとおり、L2キャッシュユニット内には、L2キャッシュタグL2TAGと、タグディレクトリTAGDIRとが設けられ、同じキャッシュ制御回路CA_PIPEによるパイプライン処理で、L2キャッシュタグのチェックと、タグディレクトリのチェックを行うことができる。
図6は、タグディレクトリのフォーマットを示す図である。36ビットのメモリアドレスのうち、下位のメモリアドレスPA[18:10]は、タグディレクトリのインデックスとして使用される。タグディレクトリの各インデックスには、ロックフラグLOCKと、リモートCMGのL2キャッシュでのデータ所持状態L2TCと、どのリモートCMGがデータを所持しているかを示すCMG識別情報CMG_IDと、上位のメモリアドレスPA[34:19]とが登録される。CMG識別情報CMG_IDは、例えば、4ビットが4つのCMG0-CMG3にそれぞれ対応し、各ビットが「1」であれば対応するCMGが所持、「0」であれば対応するCMGが未所持を意味する。
データ所持状態L2TCは、例えば、以下の3つの状態を有する。
L2TC = 00:未所持(I)
L2TC = 01:複数のCMGが共有状態でデータを所持(S)
L2TC = 11:あるCMGが排他状態でデータを所持(E)
ここで、上記の排他状態(E)は、必ずしもCMGが所持するデータが変更(M)されたか否かは、そのCMGのL2キャッシュタグをチェックしないと判別できない仕様になっている。データ所持状態L2TCに排他状態(E)と変更状態(M)の区別ができるようにしてもよい。
このデータ所持状態L2TCとどのリモートCMGがデータを所持しているかを示すCMG識別情報CMG_IDを併せてみれば、全リモートCMGのデータの所持情報を知ることができる。例えば、L2TC[1:0]=01、CMG_ID[3:0]=1001は、CMG0,CMG3が共有状態でデータを所持していることを意味する。また、L2TC[1:0]=11、CMG_ID[3:0]=0010は、CMG2が排他状態でデータを所持していることを意味する。
ロックフラグLOCKは、LOCK=1はそのインデックスのデータがロック中であることを意味し、あるCMGが既にタグディレクトリTAGDIRをチェックし、他のCMGがデータを所持していることを検出し、他のCMGにデータ要求DATA_RQを発行中であることを意味する。この場合、データ要求に対するデータ応答を受信したとき、タグディレクトリTAGDIRの所持情報が変更される可能性がある。したがって、ロック中に別のCMGからのメモリアクセス要求に対して同じインデックスでヒットした場合、そのメモリアクセス要求はアボートされ、既に処理中のデータ要求に対するタグディレクトリの更新処理が完了するまで入力調停回路内の要求キューで待たされる。これにより、後からのメモリアクセス要求に対して、最新のデータ所持情報にアクセスさせることができる。
具体的には、先にタグディレクトリTAGDIRでヒットしたCMG0により、他のCMG3に対してデータ要求が発行されると、他のCMG3のキャッシュメモリで所持しているデータが吐き出され、他のCMG3のL2キャッシュタグの状態が無効(Invalid)に変更され、それに伴いCMG0のタグディレクトリTAGDIRの状態も無効(Invalid)に変更される可能性がある。そこで、先のメモリアクセス要求でタグディレクトリがヒットした場合、キャッシュ制御回路は、このインデックスのロックフラグをLOCK=1に変更して、データ要求を発行する。そして、この処理が完了するまで、他のCMGによるタグディレクトリTAGDIRの所持情報に基づく処理を禁止する。
キャッシュ制御回路は、タグディレクトリTAGDIRにアクセスして、メモリアクセス要求のアドレスAD[18:10]と等しいインデックスPA[18:10]の登録情報を読み出し、読み出したアドレスPA[34:19]をメモリアクセス要求のアドレスAD[34:19]と比較する。これが一致すればTAGDIRのヒットである。その場合、CMG_ID[3:0]とL2TC[1:0]とから、どのCMGがどの所持状態かを検出することができる。
図7は、タグディレクトリとディレクトリキャッシュの構成を対比して示す図である。図2のディレクトリキャッシュDIR$は、ホームエージェント内に設けられ、全てのCMGのL2キャッシュによるデータ所持情報を記憶する。そのため、ディレクトリキャッシュは、理想的には、4つのCMGのデータ所持情報を格納できるだけのインデックス数を有する。また、ディレクトリキャッシュは、L2キャッシュのWay数と同じWay数を有する。
一方、本実施の形態である図3のプロセッサの場合、L2キャッシュユニット内のL2キャッシュタグに自分のCMGのL2キャッシュによるデータ所持情報が記憶されているので、タグディレクトリTAGDIRは、他のCMG、つまりリモートのCMGのL2キャッシュによるデータの所持情報を記憶し、自分のCMGのL2キャッシュによるデータ所持情報は記憶しない。したがって、タグディレクトリTAGDIRは、最大でも、3つのCMGのデータ所持情報を格納できるだけのインデックス数があればよい。その分、タグディレクトリのメモリ容量を減らすことができる。また、タグディレクトリも、L2キャッシュのWay数と同じWay数を有する。
リモートCMGのL2キャッシュが、自分のCMGが管理するメモリのデータを所持する確率は、実行するアプリケーションに依存するが、高くない場合がある。例えば、リモートCMGのL2キャッシュが所持するデータが全て他のCMGが管理するメモリのデータであることはまれである。したがって、タグディレクトリTAGDIRのインデックス数は、3つのCMGのL2キャッシュタグのインデックス数の合計と同じする必要性はそれほど高くない。そのため、タグディレクトリのインデックス数は、3つのCMGのL2キャッシュタグのインデックス数の合計より少なくてもよい。例えば、2つのCMGのインデックス数の合計でもよい。
但し、その場合は、メモリのデータの他のCMGによる持ち出し数が多くなると、タグディレクトリのインデックス数が足りなくなり、データ所持情報の入れ替えが必要になる場合がある。入れ替えが発生するとき、タグディレクトリLRU選択回路TAGD_LRUが入れ替え対象のWayを選択する。
[リード要求とリモートCMGへのデータ要求の動作]
図8は、図2のディレクトリキャッシュDIR$方式でのリード要求及びリモートCMGへのデータ要求の処理を示す図である。ホームのCMG0のプロセッサコアからのリード要求が、L2キャッシュユニットのキャッシュ制御回路CA_PIPEのパイプラインに入力される(S1)。そこで、キャッシュ制御回路は、L2キャッシュタグL2TAGを検索し、キャッシュミスが発生する(S2)。それに応じて、キャッシュ制御回路は、ホームエージェントHAにリード要求を出力し(S3)、ホームエージェント内のパイプライン構成のHA制御回路HA_PIPEにリード要求が入力される。HA制御回路は、ディレクトリキャッシュDIR$を検索し、ヒットすると、他の(リモート)CMG1がデータを所持していることが判明する(S4)。
そこで、HA制御回路HA_PIPEが、リモートCMG1にデータ要求を出力し(S5)、リモートCMG1のL2キャッシュのキャッシュ制御回路CA_PIPEがL2キャッシュタグL2TAGを検索し、ヒットする(S6)。そこで、キャッシュ制御回路が、L2キャッシュメモリ内のデータを読み出し、ホームCMGにデータ応答する(S7)。これに応答して、ホームCMG0のキャッシュ制御回路CA_PIPEが、データとその状態情報をL2キャッシュメモリL2$とL2キャッシュタグL2TAGに登録し、リード要求元のプロセッサコアにデータ応答し、ホームエージェントにディレクトリキャッシュDIR$の所持情報の更新を依頼する(S9)。
図9は、本実施の形態のタグディレクトリTAGDIR方式でのリード要求及びリモートCMGへのデータ要求の処理を示す図である。図10は、同じタグディレクトリ方式でのリード要求に対する処理を示すフローチャート図である。まず、図9について説明し、その後に図10について説明する。但し、図9には、図10と同じ処理番号S11−S23が示される。
図9において、ホームのCMG0のプロセッサコアからのリード要求が、L2キャッシュユニットのキャッシュ制御回路CA_PIPEのパイプラインに入力される(S11)。そこで、キャッシュ制御回路は、L2キャッシュタグL2TAGを検索し、キャッシュミスが発生する(S12)。ここまでは図8と同じである。
ここで、キャッシュ制御回路は、タグディレクトリTAGDIRを検索し、タグディレクトリでヒットし、他のCMGのいずれかがデータを所持していることが判明し、タグディレクトリ内のCMG識別情報CMG_IDからリモートのCMG1がデータを処理していることが判明する(S16,S17)。図8のように、ホームエージェントを経由してディレクトリキャッシュDIR$を検索する必要がなく、処理が高速化される。
タグディレクトリでヒットした結果、ホームCMG0のキャッシュ制御回路CA_PIPEは、リモートCMG1にデータ要求を発行する(S21)。ホームCMG0のメインメモリにアクセスしてデータを取得するよりも、リモートCMG1からデータを応答させるほうがデータ取得までの時間が短いからである。
そこで、リモートCMG1のキャッシュ制御回路CA_PIPEにデータ要求が入力され、L2キャッシュタグを検索してキャッシュヒットし、L2キャッシュメモリL2$からデータを読み出し、ホームCMG0のキャッシュ制御回路CA_PIPEにデータ応答する(S22)。
この時、ホームCMG0でのタグディレクトリで所持状態が排他(E)だった場合、リモートCMG1ではデータは排他(E)または更新(M)であり、リモートCMG1のキャッシュ制御回路は、L2キャッシュタグを無効(Invalid)に変更し、データの吐き出しを行う。
データ応答を受信したホームCMG0のキャッシュ制御回路CA_PIPEは、リード要求元のコアにデータ応答し、L2キャッシュメモリL2$にデータを登録し、L2キャッシュタグL2TAGにタグ登録する(S23)。同時に、キャッシュ制御回路は、タグディレクトリTAGDIRのCMG1による所持情報を無効(Invalid)に変更する(S23)。
一方、ホームCMG0でのタグディレクトリで所持状態が共有(S)だった場合、リモートCMG1でもデータの状態は共有(S)であり、リモートCMG1のキャッシュ制御回路は、L2キャッシュタグを共有(S)のまま変更せず、データの吐き出しを行う。
データ応答を受信したホームCMG0のキャッシュ制御回路CA_PIPEは、リード要求元のコアにデータ応答し、L2キャッシュメモリL2$にデータを登録し、L2キャッシュタグL2TAGにタグ登録する(S23)。但し、タグディレクトリTAGDIRのCMG1による所持情報は共有(S)のまま変更しない。
最初のメモリアクセス要求が、ローカルのCMG、例えばCMG2から発行された場合、ホームCMG0からのデータ要求に対して、リモートCMGは、ローカルCMG2に直接データ応答するか、ホームCMG0にデータ応答する。前者の場合は、ホームCMG0がデータなし完了応答を受信し必要であればタグディレクトリの所持状態を更新する。後者の場合は、さらに、ホームCMG0がローカルCMG2にデータ応答し、タグディレクトリの所持情報をローカルCMG2が所持する状態に更新する。
以上のとおり、本実施の形態におけるタグディレクトリ方式(図3)では、ホームエージェントのHA制御回路の機能をキャッシュ制御回路に統合し、他のCMGのデータ所持情報だけを記憶するタグディレクトリTAGDIRをL2キャッシュユニット内に設けた。その結果、本実施の形態の演算処理装置(CPUチップ)は、他のCMGのデータ所持情報を記憶するタグディレクトリの容量を減らすことができ、キャッシュ制御回路がL2キャッシュタグL2TAGとタグディレクトリTAGDIRとを同じパイプライン回路でアクセスできるので、ヒットレイテンシが短縮し性能が向上する。
次に、図10を参照してリード要求に対するタグディレクトリ方式での動作を説明する。まず、ホームCMGのプロセッサコアまたはローカルCMGのL2キャッシュ制御回路がリード要求を発行すると、ホームCMGの入力調停回路の要求キューにリード要求が登録される(S10)。そして、入力調停回路が、調停を経てリード要求をL2キャッシュのキャッシュ制御回路CA_PIPEに入力する(S11)。
次に、キャッシュ制御回路は、リード要求について、L2キャッシュタグL2TAGを検索する(S12)。ここでキャッシュヒットすれば(S13のYES)、リード要求をローカルで処理可能となり、キャッシュ制御回路は、L2キャッシュメモリからデータを読み出し、リード要求元にデータ応答する(S15)。この場合は、タグディレクトリTAGDIRにアクセスして他のCMGのデータ所持情報をチェックする必要はない。
一方、キャッシュミスすれば(S13のNO)、キャッシュ制御回路CA_PIPEは、タグディレクトリTAGDIRを検索する(S16)。検索した結果ヒットしなければ(S17のNO)、キャッシュ制御回路が、メモリアクセス制御回路MACにデータ要求を発行し、メインメモリからデータを読み出す(S18)。そして、MACからのデータ応答を受信してキャッシュ制御回路に入力されると(S19)、キャッシュ制御回路は、L2キャッシュメモリL2$にデータを登録し、L2キャッシュタグL2TAGにデータの状態を登録し、要求元のプロセッサコアにデータ応答する(S20)。
一方、タグディレクトリでヒットすると(S17のYES)、キャッシュ制御回路は、タグディレクトリ内のCMG識別情報CMG_IDから判別したデータ所持するリモートCMGに、データ要求を発行する(S21)。このとき、キャッシュ制御回路は、タグディレクトリTAGDIR内のロックフラグLOCKをロック状態「1」に変更する。
そして、キャッシュ制御回路は、データ要求に対するデータ応答をリモートCMGから受信すると、データ応答の登録要求を再度キャシュ制御回路に入力する(S22)。それに応答して、キャッシュ制御回路は、L2キャッシュメモリL2$にデータを登録し、L2キャッシュタグL2TAGにデータの状態を登録し、リード要求元にデータ応答し、必要に応じてタグディレクトリTAGDIRのデータ所持情報を更新する(S23)。そして、タグディレクトリTAGDIRのロックフラグLOCKはアンロック状態「0」に戻される。
ロックフラグがロック状態の間、他のCMGなどからのリード要求は、タグディレクトリ検索によりヒットした場合でも、そのタグディレクトリの状態情報が変更される可能性があるため、アボートされて、再度入力調停部の要求キューに差し戻される。
[リプレース処理]
図11は、図2のディレクタキャッシュ方式でのリプレース処理を示す図である。例えば、リプレース処理は、キャッシュメモリ内のデータを消去して(吐き出して)、別のデータを登録する処理である。
まず、あるCMGにおいて、リプレース要求がL2キャッシュのキャッシュ制御回路に入力される(S30)。これに応答して、キャッシュ制御回路CA_PIPEは、L2キャッシュタグL2TAG内のリプレース対象データのインデックスを無効化する(S31)。さらに、キャッシュ制御回路は、ホームエージェントのHA制御回路HA_PIPEにリプレース要求を発行し、HA制御回路は、ディレクトリキャッシュDIR$内のリプレース対象データのインデックスを無効化する(S33)。その後、リプレース後のデータのキャッシュ登録の処理が行われる。
つまり、ディレクタキャッシュ方式では、L2キャッシュタグL2TAGとディレクトリキャッシュDIR$とにL2キャッシュメモリのデータ所持情報が記録されているので、上記のように2回のインデックスの無効化を行う必要がある。
図12は、本実施の形態の図3のタグディレクトリ方式でのリプレース処理を示す図である。あるCMGにおいて、リプレース要求がL2キャッシュのキャッシュ制御回路に入力される(S40)。これに応答して、キャッシュ制御回路CA_PIPEは、L2キャッシュタグL2TAG内のリプレース対象データのインデックスを無効化する(S41)。タグディレクトリTAGDIRには、他のCMGのデータ所持情報を記憶しているだけであるので、タグディレクトリの対応するインデックスを無効化する必要はないので、キャッシュメモリ内のデータの消去処理はここで終了する。
このように、リード要求などのメモリアクセス要求に対してキャッシュミスして自分のCMG内でリード要求を完了できない場合に、初めて、タグディレクトリTAGDIRにアクセスしてデータ所持情報を検索したり、リモートCMGのデータの状態を変更したときにタグディレクトリのデータ所持情報を変更したりする。したがって、その分、処理量を減らし、タグディレクトリのメモリの消費電力を節約できる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
複数の演算処理部と、前記複数の演算処理部が共有するキャッシュユニットと、前記キャッシュユニットからの第1のメモリアクセス要求を入力しメモリへのアクセスを制御するメモリアクセス制御部とをそれぞれ含む複数のコアメモリグループを有し、
前記キャッシュユニットは、
キャッシュメモリと、
前記キャッシュメモリの状態を記憶するキャッシュタグと、
他のコアメモリグループ内のキャッシュメモリによるデータの所持情報を記憶するタグディレクトリと、
前記演算処理部からの第2のメモリアクセス要求及び他のコアメモリグループからの第3のメモリアクセス要求を入力して制御を行うキャッシュ制御部とを有し、
前記キャッシュ制御部は、
前記第2及び第3のメモリアクセス要求に応答して、前記キャッシュタグを参照することによるキャッシュヒット判定を行い、
前記キャッシュヒット判定がキャッシュミスと判定した場合、前記タグディレクトリを参照して前記他のコアメモリグループがデータを所持しているか否かのデータ所持判定を行い、
前記他のコアメモリグループがデータを所持していると判定した場合、前記データを所持する他のコアメモリグループに所持する前記データの吐き出しを要求するデータ要求を発行する、演算処理装置。
(付記2)
前記キャッシュ制御部は、
前記キャッシュヒット判定がキャッシュヒットと判定した場合、前記キャッシュメモリに記憶されたデータを読み出し、前記第2または第3のメモリアクセス要求の要求元に、前記読み出しデータを応答する、付記1に記載の演算処理装置。
(付記3)
前記キャッシュ制御部は、
前記データ所持判定で前記他のコアメモリグループがデータを所持していないと判定した場合、対応するメモリアクセス制御部に前記メモリアクセス要求のデータの読み出しを依頼する前記第1のメモリアクセス要求を発行する、付記2に記載の演算処理装置。
(付記4)
前記データ要求は、前記データを所持する他のコアメモリグループの前記キャッシュ制御部に、キャッシュメモリ内の前記データを前記データ要求元のコアメモリグループに応答する処理と、必要な場合に前記キャッシュタグ内の前記データの状態を変更する処理とを要求する、付記1に記載の演算処理装置。
(付記5)
前記コアメモリグループそれぞれのタグディレクトリのインデックス数は、前記他のコアメモリグループそれぞれの前記キャッシュタグのインデックス数の合計よりも少ない、付記1に記載の演算処理装置。
(付記6)
前記コアメモリグループそれぞれのタグディレクトリのウエイ数は、前記他のコアメモリグループそれぞれの前記キャッシュタグのウエイ数と等しい、付記1に記載の演算処理装置。
(付記7)
前記キャッシュ制御部は、
前記データ要求の完了応答に応答して、前記タグディレクトリの前記データの所持情報を変更する、付記4に記載の演算処理装置。
(付記8)
前記タグディレクトリの各インデックスは、前記所持情報と、前記データを所持する他のコアメモリグループを特定するコアメモリグループ識別情報とを記憶し、前記所持情報は前記データを所持するか否かを示す情報である、付記1に記載の演算処理装置。
(付記9)
前記タグディレクトリの各インデックスは、さらに、ロックフラグを記憶し、
前記キャッシュ制御部は、
前記データ要求を前記他のコアメモリグループに発行する場合、前記ロックフラグをロック状態に変更し、前記データ要求の完了応答に応答して前記所持情報を変更した後、前記ロックフラグをアンロック状態に変更し、
前記第2及び第3のメモリアクセス要求に応答して前記タグディレクトリを参照したとき、前記ロックフラグがロック状態の場合、前記第2及び第3のメモリアクセス要求をアボートする、付記7に記載の演算処理装置。
(付記10)
複数の演算処理部と、前記複数の演算処理部が共有するキャッシュユニットと、前記キャッシュユニットからの第1のメモリアクセス要求を入力しメモリへのアクセスを制御するメモリアクセス制御部とをそれぞれ含む複数のコアメモリグループを有し、
前記キャッシュユニットは、キャッシュメモリと、前記キャッシュメモリの状態を記憶するキャッシュタグと、他のコアメモリグループ内のキャッシュメモリによるデータの所持情報を記憶するタグディレクトリと、前記演算処理部からの第2のメモリアクセス要求及び他のコアメモリグループからの第3のメモリアクセス要求を入力して制御を行うキャッシュ制御部とを有する、演算処理装置の制御方法において、
前記キャッシュ制御部は、
前記第2及び第3のメモリアクセス要求に応答して、前記キャッシュタグを参照することによるキャッシュヒット判定を行い、
前記キャッシュヒット判定がキャッシュミスと判定した場合、前記タグディレクトリを参照して前記他のコアメモリグループがデータを所持しているか否かのデータ所持判定を行い、
前記他のコアメモリグループがデータを所持していると判定した場合、前記データを所持する他のコアメモリグループに前記所持するデータの吐き出しを要求するデータ要求を発行する、ステップを有する演算処理装置の制御方法。
CPU_CHIP:演算処理装置、プロセッサ、CPUチップ
CMG:コアメモリグループ
H_CMG:ホームコアメモリグループ
R_CMG:リモートコアメモリグループ、他のコアメモリグループ
CORE:プロセッサコア、コア
ALU:演算処理回路
L1$:第1レベルキャッシュ、L1キャッシュ
CA_U:キャッシュユニット
CA_PIPE:キャッシュ制御回路
L2$:第2レベルキャッシュ、L2キャッシュ、ラストレベルキャッシュ、LLキャッシュ
L2TAG:L2キャッシュタグ
TAGDIR:タグディレクトリ
HA:ホームエージェント
HA_PIPE:HA制御回路
DIR$:ディレクトリキャッシュ
MAC:メモリアクセスコントローラ回路
C_BUS:CMG間バス
MEM_0〜MEM_3:メモリ、メインメモリ
MA_RQ_1:第1のメモリアクセス要求
MA_RQ_2:第2のメモリアクセス要求
MA_RQ_3:第3のメモリアクセス要求
MA_RQ_4:第4のメモリアクセス要求
INPUT_ARB:入力調停回路
DATA_RQ:データ要求

Claims (9)

  1. 複数の演算処理部と、前記複数の演算処理部が共有するキャッシュユニットと、前記キャッシュユニットからの第1のメモリアクセス要求を入力しメモリへのアクセスを制御するメモリアクセス制御部とをそれぞれ含む複数のコアメモリグループを有し、
    前記キャッシュユニットは、
    キャッシュメモリと、
    前記キャッシュメモリの状態を記憶するキャッシュタグと、
    他のコアメモリグループ内のキャッシュメモリによるデータの所持情報を記憶するタグディレクトリと、
    前記演算処理部からの第2のメモリアクセス要求及び他のコアメモリグループからの第3のメモリアクセス要求を入力して制御を行うキャッシュ制御部とを有し、
    前記キャッシュ制御部は、
    前記第2及び第3のメモリアクセス要求に応答して、前記キャッシュタグを参照することによるキャッシュヒット判定を行い、
    前記キャッシュヒット判定がキャッシュミスと判定した場合、前記タグディレクトリを参照して前記他のコアメモリグループがデータを所持しているか否かのデータ所持判定を行い、
    前記他のコアメモリグループがデータを所持していると判定した場合、前記データを所持する他のコアメモリグループに所持する前記データの吐き出しを要求するデータ要求を発行する、演算処理装置。
  2. 前記キャッシュ制御部は、
    前記キャッシュヒット判定がキャッシュヒットと判定した場合、前記キャッシュメモリに記憶されたデータを読み出し、前記第2または第3のメモリアクセス要求の要求元に、前記読み出しデータを応答する、請求項1に記載の演算処理装置。
  3. 前記キャッシュ制御部は、
    前記データ所持判定で前記他のコアメモリグループがデータを所持していないと判定した場合、対応するメモリアクセス制御部に前記メモリアクセス要求のデータの読み出しを依頼する前記第1のメモリアクセス要求を発行する、請求項2に記載の演算処理装置。
  4. 前記データ要求は、前記データを所持する他のコアメモリグループの前記キャッシュ制御部に、キャッシュメモリ内の前記データを前記データ要求元のコアメモリグループに応答する処理と、必要な場合に前記キャッシュタグ内の前記データの状態を変更する処理とを要求する、請求項1に記載の演算処理装置。
  5. 前記コアメモリグループそれぞれのタグディレクトリのインデックス数は、前記他のコアメモリグループそれぞれの前記キャッシュタグのインデックス数の合計よりも少ない、請求項1に記載の演算処理装置。
  6. 前記キャッシュ制御部は、
    前記データ要求の完了応答に応答して、前記タグディレクトリの前記データの所持情報を変更する、請求項4に記載の演算処理装置。
  7. 前記タグディレクトリの各インデックスは、前記所持情報と、前記データを所持する他のコアメモリグループを特定するコアメモリグループ識別情報とを記憶し、前記所持情報は前記データを所持するか否かを示す情報である、請求項1に記載の演算処理装置。
  8. 前記タグディレクトリの各インデックスは、さらに、ロックフラグを記憶し、
    前記キャッシュ制御部は、
    前記データ要求を前記他のコアメモリグループに発行する場合、前記ロックフラグをロック状態に変更し、前記データ要求の完了応答に応答して前記所持情報を変更した後、前記ロックフラグをアンロック状態に変更し、
    前記第2及び第3のメモリアクセス要求に応答して前記タグディレクトリを参照したとき、前記ロックフラグがロック状態の場合、前記第2及び第3のメモリアクセス要求をアボートする、請求項7に記載の演算処理装置。
  9. 複数の演算処理部と、前記複数の演算処理部が共有するキャッシュユニットと、前記キャッシュユニットからの第1のメモリアクセス要求を入力しメモリへのアクセスを制御するメモリアクセス制御部とをそれぞれ含む複数のコアメモリグループを有し、
    前記キャッシュユニットは、キャッシュメモリと、前記キャッシュメモリの状態を記憶するキャッシュタグと、他のコアメモリグループ内のキャッシュメモリによるデータの所持情報を記憶するタグディレクトリと、前記演算処理部からの第2のメモリアクセス要求及び他のコアメモリグループからの第3のメモリアクセス要求を入力して制御を行うキャッシュ制御部とを有する、演算処理装置の制御方法において、
    前記キャッシュ制御部は、
    前記第2及び第3のメモリアクセス要求に応答して、前記キャッシュタグを参照することによるキャッシュヒット判定を行い、
    前記キャッシュヒット判定がキャッシュミスと判定した場合、前記タグディレクトリを参照して前記他のコアメモリグループがデータを所持しているか否かのデータ所持判定を行い、
    前記他のコアメモリグループがデータを所持していると判定した場合、前記データを所持する他のコアメモリグループに前記所持するデータの吐き出しを要求するデータ要求を発行する、ステップを有する演算処理装置の制御方法。
JP2017173832A 2017-09-11 2017-09-11 演算処理装置及び演算処理装置の制御方法 Active JP7100237B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017173832A JP7100237B2 (ja) 2017-09-11 2017-09-11 演算処理装置及び演算処理装置の制御方法
US16/120,484 US10521346B2 (en) 2017-09-11 2018-09-04 Arithmetic processing apparatus and control method for arithmetic processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017173832A JP7100237B2 (ja) 2017-09-11 2017-09-11 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2019049872A true JP2019049872A (ja) 2019-03-28
JP7100237B2 JP7100237B2 (ja) 2022-07-13

Family

ID=65631539

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017173832A Active JP7100237B2 (ja) 2017-09-11 2017-09-11 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US10521346B2 (ja)
JP (1) JP7100237B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000298659A (ja) * 1999-03-31 2000-10-24 Internatl Business Mach Corp <Ibm> コンプリート・アンド・コンサイス・リモート(ccr)ディレクトリ
JP2006293550A (ja) * 2005-04-07 2006-10-26 Fujitsu Ltd キャッシュコヒーレンス管理装置およびキャッシュコヒーレンス管理方法
JP2014199593A (ja) * 2013-03-29 2014-10-23 富士通株式会社 演算処理装置、情報処理装置及び情報処理装置の制御方法
JP2015210616A (ja) * 2014-04-25 2015-11-24 富士通株式会社 演算処理装置とその制御方法
JP2017037538A (ja) * 2015-08-12 2017-02-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007099643A1 (ja) 2006-03-03 2007-09-07 Fujitsu Limited マルチプロセッサシステム及びマルチプロセッサシステムの動作方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000298659A (ja) * 1999-03-31 2000-10-24 Internatl Business Mach Corp <Ibm> コンプリート・アンド・コンサイス・リモート(ccr)ディレクトリ
JP2006293550A (ja) * 2005-04-07 2006-10-26 Fujitsu Ltd キャッシュコヒーレンス管理装置およびキャッシュコヒーレンス管理方法
JP2014199593A (ja) * 2013-03-29 2014-10-23 富士通株式会社 演算処理装置、情報処理装置及び情報処理装置の制御方法
JP2015210616A (ja) * 2014-04-25 2015-11-24 富士通株式会社 演算処理装置とその制御方法
JP2017037538A (ja) * 2015-08-12 2017-02-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
JP7100237B2 (ja) 2022-07-13
US10521346B2 (en) 2019-12-31
US20190079863A1 (en) 2019-03-14

Similar Documents

Publication Publication Date Title
US11080191B2 (en) Configurable snoop filters for cache coherent systems
CN108885583B (zh) 高速缓存存储器访问
KR101639672B1 (ko) 무한 트랜잭션 메모리 시스템 및 그 동작 방법
JP4928812B2 (ja) タグ付きキャッシュ状態に基づいて下位レベル・キャッシュへの参照なしに相互接続ファブリック上にリクエストを送出するためのデータ処理システム、キャッシュ・システム、および方法
US8131935B2 (en) Virtual barrier synchronization cache
US8095733B2 (en) Virtual barrier synchronization cache castout election
US8793442B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads
US20130205099A1 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
US6898676B2 (en) Computer system supporting both dirty-shared and non-dirty-shared data processing entities
US10579527B2 (en) Remote node broadcast of requests in a multinode data processing system
CN115292214A (zh) 页表预测方法、存储访问操作方法、电子装置和电子设备
US20100217939A1 (en) Data processing system
US8656129B2 (en) Aggregate symmetric multiprocessor system
JP5435132B2 (ja) 情報処理システム
JP6792139B2 (ja) 演算処理装置及び演算処理装置の制御方法
US9292442B2 (en) Methods and apparatus for improving performance of semaphore management sequences across a coherent bus
US20170052890A1 (en) Operation processing device and method for controlling operation processing device
JP2020003959A (ja) 情報処理装置、演算処理装置及び情報処理装置の制御方法
US8447934B2 (en) Reducing cache probe traffic resulting from false data sharing
US20170371783A1 (en) Self-aware, peer-to-peer cache transfers between local, shared cache memories in a multi-processor system
US10713169B2 (en) Remote node broadcast of requests in a multinode data processing system
JP2019049872A (ja) 演算処理装置及び演算処理装置の制御方法
US20150095583A1 (en) Data processing system with cache linefill buffer and method of operation
JP2008310414A (ja) コンピュータシステム
US10387310B2 (en) Remote node broadcast of requests in a multinode data processing system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200611

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210713

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20211207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220302

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20220302

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20220314

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20220315

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220613

R150 Certificate of patent or registration of utility model

Ref document number: 7100237

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150