JP2015210616A - 演算処理装置とその制御方法 - Google Patents

演算処理装置とその制御方法 Download PDF

Info

Publication number
JP2015210616A
JP2015210616A JP2014090960A JP2014090960A JP2015210616A JP 2015210616 A JP2015210616 A JP 2015210616A JP 2014090960 A JP2014090960 A JP 2014090960A JP 2014090960 A JP2014090960 A JP 2014090960A JP 2015210616 A JP2015210616 A JP 2015210616A
Authority
JP
Japan
Prior art keywords
nth
memory
cache
caches
core group
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
JP2014090960A
Other languages
English (en)
Other versions
JP6213366B2 (ja
Inventor
砂山 竜一
Ryuichi Sunayama
竜一 砂山
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 JP2014090960A priority Critical patent/JP6213366B2/ja
Priority to US14/672,284 priority patent/US9606917B2/en
Publication of JP2015210616A publication Critical patent/JP2015210616A/ja
Application granted granted Critical
Publication of JP6213366B2 publication Critical patent/JP6213366B2/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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
    • 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
    • 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

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

【課題】キャッシュアクセスレイテンシやメモリアクセスレイテンシを短縮する。
【解決手段】演算処理装置は,複数の演算処理部と,第1乃至第N(Nは正の整数)のキャッシュと,コアグループ内バスとをそれぞれ有する第1及び第2のコアグループと,第1及び第2のコアグループのキャッシュ間に対応して第1乃至第Nのコアグループ間バスとを有する。メモリの第1乃至第Nのメモリ空間のデータを個別に記憶した第1のコアグループの第1乃至第Nのキャッシュそれぞれは,メモリの第N+1乃至第2Nのメモリ空間それぞれのデータに,第1乃至第Nのコアグループ間バスを介してアクセスし記憶し,メモリの第N+1乃至第2Nのメモリ空間のデータを個別に記憶した第2のコアグループの第1乃至第Nのキャッシュそれぞれは,メモリの第1乃至第Nのメモリ空間それぞれのデータに,第1乃至第Nのコアグループ間バスを介してアクセスし記憶する。
【選択図】図2

Description

本発明は,演算処理装置とその制御方法に関する。
演算処理装置であるCPU(またはプロセッサ)は,複数のCPUコアと,CPUコア内に設けられ一次キャッシュ(以下,「L1キャッシュ」)と,CPUコア外に設けられ複数のCPUコアで共有される二次キャッシュ(以下,「L2キャッシュ」)とを有する。更に,CPUチップは,大容量のメインメモリへのアクセス要求を制御するメモリアクセスコントローラを有する。
CPUの性能向上のために,CPU内のCPUコアの数を増加させることが行われる。半導体の微細化技術の進歩によりCPUコアの数を増加させることができる一方で,性能向上のためにはL2キャッシュのメモリ容量も増加させることが必要になる。
半導体の微細化率に合わせてCPUコア数やキャッシュ容量を増やす場合は,CPUコアとキャッシュ間の距離に依存するレイテンシはそれほど長くなることはないが,性能向上の為に半導体の微細化率を超えてCPUコア数やキャッシュ容量を増やす場合には,CPUコアとキャッシュ間の距離が相対的に長くなりCPUコアとキャッシュ間のレイテンシが長くなり悪化する。さらに,CPUコアとメインメモリ間のレイテンシも同様である。そのため,CPUコア数を増やした結果,逆にキャッシュレイテンシやメモリレイテンシがボトルネックになりCPUの性能向上の足かせになっている。
特表2008−525902号公報
マルチコア化によるキャッシュレイテンシやメモリレイテンシの悪化を防ぐ手段として,L1キャッシュとL2キャッシュとの間にさらに一階層キャッシュをCPUコアに追加することが提案されている。一階層キャッシュを追加してCPUコアでのキャッシュミス率をできるだけ減らすことが目的である。しかしながら,キャッシュ階層を増やすことはキャッシュパイプラインの増加を意味するため,CPUコアとメインメモリ間のレイテンシの悪化を招く。
そこで,本発明の目的は,キャッシュレイテンシやメモリレイテンシを短縮した演算処理装置及びその制御方法を提供することにある。
本実施の形態の第1の側面は,複数の演算処理部と,前記複数の演算処理部からのアクセス要求を処理する第1乃至第N(Nは正の整数)のキャッシュと,前記複数の演算処理部のアクセス要求を前記第1乃至第Nのキャッシュに供給するコアグループ内バスとをそれぞれ有する第1及び第2のコアグループと,
前記第1のコアグループ内の前記第1乃至第Nのキャッシュそれぞれと,前記第2のコアグループ内の前記第1乃至第Nのキャッシュそれぞれとの間に対応して設けられた第1乃至第Nのコアグループ間バスとを有し,
前記Nは複数であり,
前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,メモリの第1乃至第Nのメモリ空間それぞれのデータを個別に記憶し,
前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第N+1乃至第2Nのメモリ空間それぞれのデータを個別に記憶し,
前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第N+1乃至第2Nのメモリ空間それぞれのデータに,前記第1乃至第Nのコアグループ間バスを介してアクセスし記憶し,
前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第1乃至第Nのメモリ空間それぞれのデータに,前記第1乃至第Nのコアグループ間バスを介してアクセスし記憶する演算処理装置である。
第1の側面によれば,キャッシュレイテンシやメモリレイテンシを短くすることができる。
複数のCPUチップを組み合わせた演算処理装置の構成を示す図である。 本実施の形態における演算処理装置の構成を示す図である。 第1,第2のコアグループ内のL2キャッシュとメインメモリのメモリ空間との関係の一例を示す図である。 第1のコアグループCMG0の構成を示す図である。 第1,第2のコアグループCMG0,CMG1の構成とその間のコアグループ間バスの構成を示す図である。 本実施の形態におけるアクセス要求に対する動作のフローチャート図である。 アクセス要求Iの動作を示すシーケンス図である。 アクセス要求IIの動作を示すシーケンス図である。 アクセス要求IIIの動作を示すシーケンス図である。 アクセス要求IVの動作を示すシーケンス図である。 アクセス要求Vの動作を示すシーケンス図である。 アクセス要求VIの動作を示すシーケンス図である。 アクセス要求VIIの動作を示すシーケンス図である。
図1は,2つのCPUチップを組み合わせた演算処理装置の構成を示す図である。図1の演算処理装置(またはプロセッサ)は,8個の演算処理部またはCPUコア(以下単にコアと称する)100-107と,8個の二次キャッシュ(以下,「L2キャッシュ」)SX00-SX11(CMG0内),SX00-SX11(CMG1内)と,8個のメモリアクセスコントローラMAC00-MAC03,MAC10-MAC13を有する。さらに,図1の演算処理装置は,メインメモリが8個のメモリ00-03,10-13で構成され,各メモリ00-03,10-13にメモリアクセスコントローラMAC00-MAC03,MAC10-MAC13それぞれを介してアクセス可能である。
8個のメモリ00-03,10-13で構成されるメインメモリのメモリ空間は,単一のOS(Operating System)から見ると,単一のメモリ空間であり,OSからはそのメモリ空間はフラットである。そして,メインメモリを構成するメモリ00-03,10-13内のデータは,8個のL2キャッシュのいずれにも登録可能であり,8個のコア100-107はいずれのL2キャッシュにもアクセス可能である。但し,コア100-107とL2キャッシュSX00-SX11が図1のようにレイアウトされている場合は,例えばコア100がメモリアクセスして読み出したデータのキャッシュラインは,コア100に近接するL2キャッシュSX00に登録されることが望ましい。
図1の演算処理装置は,コアとL2キャッシュとメモリアクセスコントローラとをそれぞれ有する論理グループCMG0,CMG1を有し,この論理グループCMG0,CMG1は,それぞれ異なるCPUチップで構成される。本明細書では,この論理グループをコアメモリグループまたはコアグループCMG(Core Memory Group)と称する。コアメモリグループまたはコアグループは,少なくとも複数のコアと複数のキャッシュメモリとを有する回路ブロックである。メモリアクセスコントローラMACはCPUチップ外に設けられてもよい。
コアグループCMG0内では,4個のコア100-103は,第1のバスB_0を介して4個のL2キャッシュSX00-SX11にリードまたは書き込みのアクセス要求を発行することができる。同様に,コアグループCMG1内では,4個のコア104-107は,第1のバスB_1を介して4個のL2キャッシュSX00-SX11にアクセス要求を発行することができる。
そして,2つのコアグループCMG0,CMG1間にルータ200が設けられ,コアグループ間のアクセス要求を調停する。ルータ200を設けたことにより,例えば,CMG0内のコア100がメモリ11内のアドレスBのデータにアクセス要求を発行することができる。さらに,ルータ200を設けたことにより,例えば,CMG0内のコア100がメモリ01内のアドレスAのデータにアクセス要求を発行した場合,CMG1内のL2キャッシュSX01内にそのデータが登録され,更新されているかをルータ200を介して問い合わせることができる。
図1の構成の演算処理装置の動作を簡単に説明する。CMG0内のコア100がメモリ01内のアドレスAに対するリード要求をL2キャッシュに発行したとする。
第一に,リード要求を受けたCMG0内のL2キャッシュSX01は,リード要求のデータがキャッシュに登録されていなければ,CMG1内のL2キャッシュに更新データが存在するか否かを,ルータ200に問い合わせを行う。ルータ200は,CMG1内のL2キャッシュのタグ情報を保持していて,そのタグ情報を検索してCMG1内のL2キャッシュ内に更新データが存在するかチェックする。
CMG0,CMG1内の両L2キャッシュSX01にデータが登録されていない場合,CMG0内のL2キャッシュSX01は,メモリコントローラMAC01にメモリ01へのメモリアクセス要求を行い,メモリ01内のアドレスAのデータを取得し,コア100にデータ応答する。
第二に,CMG0内のL2キャッシュSX01にデータが登録されているが最新データではない場合,CMG0内のL2キャッシュSX01は,ルータ200にCMG1内のL2キャッシュに更新データが存在するかの問い合わせを必ず行う。この場合,CMG1内のL2キャッシュに更新データ(すなわち最新データ)が登録されている場合,CMG0内のL2キャッシュSX01は,ルータ200を介してCMG1内のL2キャッシュにデータ要求を行い,更新データを取得し,コア100にデータ応答する。
上記のルータへの問い合わせの結果,CMG1内のL2キャッシュに更新データ(最新データ)が登録されていない場合,CMG0内のL2キャッシュSX01は,登録されているデータをコア100に応答する。
さらに,図1の演算処理装置の場合,CMG0内のコア100がメモリ11内のアドレスBに対するリード要求を発行すると,そのリード要求はルータ200を経由してCMG1内のL2キャッシュSX01に発行され,ルータ200を介してデータが応答される。
上記のように,単に2つのCMG0,CMG1をルータ200を介して接続した構成では,CMG0内のコア100からCMG1内のL2キャッシュとそのメモリにアクセス要求を発行すると,アクセス要求がルータを介して発行されるので,コアとL2キャッシュ間のレイテンシとコアとメモリ間のレイテンシが長くなる。さらに,CMG0内のコア100からCMG0内のL2キャッシュとそのメモリにアクセス要求を発行する場合も,CMG1内のL2キャッシュにデータが持ち出されて更新されているか否かをルータ200に問い合わせする必要があり,レイテンシが長くなる。
仮に,図1の2つのCMG0,CMG1を1つのCPUチップ内に設けたと仮定すると,コア数とL2キャッシュ容量は増大するが,CMG0,CMG1間にルータ200を設けたことでレイテンシが長くなる。
[本実施の形態]
図2は,本実施の形態における演算処理装置の構成を示す図である。本実施の形態では,1つのCPUチップが,複数の,例えば2つのコアメモリグループまたはコアグループCMG0,CMG1を有する。そして,CPUチップの外に設けられるメインメモリは,8つのメモリ00-03,10-13で構成される。8つのメモリ00-03,10-13は,例えば,メインメモリのメモリ空間の第1〜第8のメモリ空間のデータをそれぞれ記憶する。但し,本実施の形態はそれに限定されるものではない。
第1のコアグループCMG0は,4つの演算処理部であるコア100-103と,第1乃至第4のL2キャッシュSX00-SX11とを有する。第1のコアグループCMG0は,さらに,第1乃至第4のL2キャッシュSX00-SX11にそれぞれ対応するメモリアクセスコントローラMAC00-MAC03を有し,各メモリアクセスコントローラMAC00-MAC03は,メインメモリの第1乃至第4のメモリ空間を有する第1乃至第4のメモリ00-03へのメモリアクセスをそれぞれ制御する。
第1のコアグループCMG0は,更に,4つのコア100-103のアクセス要求を第1乃至第4のL2キャッシュSX00-SX11に供給するコアグループ内バスB_0を有する。そして,第1乃至第4のL2キャッシュSX00-SX11それぞれは,4つのコア100-103からコアグループ内バスB_0を介して発行されるアクセス要求を処理する。例えば,CMG0内のL2キャッシュSX00は,4つのコア100-103からコアグループ内バスB_0を介して発行されるアクセス要求を処理する。他のL2キャッシュSX01-SX11も同様である。
第2のコアグループCMG1も同様に,4つの演算処理部であるコア104-107と,第1乃至第4のL2キャッシュSX00-SX11とを有する。第2のコアグループCMG1は,さらに,第1乃至第4のL2キャッシュSX00-SX11にそれぞれ対応するメモリアクセスコントローラMAC10-MAC13を有し,各メモリアクセスコントローラMAC10-MAC13は,メインメモリの第5乃至第8のメモリ空間を有する第5乃至第8のメモリ10-13へのメモリアクセスをそれぞれ制御する。
第2のコアグループCMG1は,更に,4つのコア104-107のアクセス要求を第1乃至第4のL2キャッシュSX00-SX11に供給するコアグループ内バスB_1を有する。そして,第1乃至第4のL2キャッシュSX00-SX11それぞれは,4つのコア104-107からコアグループ内バスB_1を介して発行されるアクセス要求を処理する。例えば,CMG1内のL2キャッシュSX00は,4つのコア104-107からコアグループ内バスB_1を介して発行されるアクセス要求を処理する。他のL2キャッシュSX01-SX11も同様である。
そして,図2の演算処理装置は,第1のコアグループCMG0内の第1乃至第4のキャッシュSX00-SX11それぞれと,第2のコアグループCMG1内の第1乃至第4のキャッシュSX00-SX11それぞれとの間に,第1乃至第4のコアグループ間バスB_00,B_01,B_10,B_11を有する。すなわち,第1のコアグループ間バスB_00は,第1,第2コアグループ内の第1のキャッシュSX00間に設けられる。同様に,第2,第3,第4のコアグループ間バスB_01,B_10,B_11は,第1,第2コアグループ内の第2のキャッシュSX01間,第3のキャッシュSX10間,第4のキャッシュSX11間にそれぞれ設けられる。
第1乃至第4のコアグループ間バスB_00,B_01,B_10,B_11それぞれは,1対のバス,すなわち,第1のコアグループから第2のコアグループへの第1の方向のバスと,第2のコアグループから第1のコアグループへの第2の方向のバスとを有する。
[メモリ空間とL2キャッシュの関係]
図3は,第1,第2のコアグループ内のL2キャッシュとメインメモリのメモリ空間との関係の一例を示す図である。図3に示されるとおり,第1のコアグループCMG0の第1乃至第4のL2キャッシュSX00-SX11それぞれは,メインメモリの第1乃至第4のメモリ空間,すなわちメモリ00-03のメモリ空間それぞれのデータを個別にまたは別々に記憶する。同様に,第2のコアグループCMG1の第1乃至第4のキャッシュSX00-SX11それぞれは,メインメモリの第5乃至第8のメモリ空間,すなわちメモリ10-13のメモリ空間それぞれのデータを個別にまたは別々に記憶する。
そして,第1のコアグループCMG0の第1乃至第4のキャッシュSX00-SX11それぞれは,メインメモリの第5乃至第8のメモリ空間,すなわちメモリ10-13のメモリ空間それぞれのデータに,第1乃至第4のコアグループ間バスB_00,B_01,B_10,B_11を介してアクセスし,取得したデータを記憶する。例えば,CMG0内の第1のL2キャッシュSX00は,メインメモリの第5のメモリ空間,即ちメモリ10のメモリ空間のデータに,第1のコアグループ間バスB_00を介してアクセスし,取得したデータを記憶する。
同様に,第2のコアグループCMG1の第1乃至第4のキャッシュSX00-SX11それぞれは,メインメモリの第1乃至第4のメモリ空間,すなわちメモリ00-03のメモリ空間それぞれのデータに,第1乃至第4のコアグループ間バスB_00,B_01,B_10,B_11を介してアクセスし,取得したデータを記憶する。例えば,CMG1内の第1のL2キャッシュSX00は,メインメモリの第1のメモリ空間,即ちメモリ00のメモリ空間のデータに,第1のコアグループ間バスB_00を介してアクセスし,取得したデータを記憶する。
図3に示すように,第1のコアグループCMG0内の第1乃至第4のL2キャッシュSX00-SX11は,メモリ00-03内のデータをインタリーブで記憶する。具体的には,メモリ00-03のアドレスのうち,キャッシュラインを識別するアドレスの下位2ビットに基づいて,メモリ00-03内のデータがCMG0内の4つのL2キャッシュSX00-SX11内にインタリーブで記憶される。したがって,メモリ00-03内のデータは,CMG0内の4つのL2キャッシュSX00-SX11のいずれかに記憶される。
それに伴い,第1のコアグループCMG0内の4つのコア100-103は,コアグループ内バスB_0を介して,上記2ビットのアドレスに対応するL2キャッシュSX00-SX11のいずれかにアクセス要求を発行する。これにより,第1のコアグループCMG0内の4つのコア100-103は,メインメモリの第1乃至第4のメモリ空間のいずれにもアクセス可能である。
例えば,コア100がメモリ01のメモリ空間のデータにアクセスする場合は,コア100は,アクセス要求をコアグループ内バスB_0を介してCMG0内のL2キャッシュSX01に発行する。このアクセス要求に応答して,CMG0内のL2キャッシュSX01は,キャッシュヒットすればキャッシュメモリ内のデータにアクセスし,キャッシュミスすればメモリ01にアクセスする。ただし,後述するとおり,CMG0内のL2キャッシュSX01に対応する第2のコアグループCMG1内のL2キャッシュSX01がメモリ01のデータを持ち出して更新している場合は,CMG0内のL2キャッシュSX01は,CMG1内のL2キャッシュSX01にアクセス要求が発行して,コアグループ間バスを介して更新データを取得する。
上記と同様に,第2のコアグループCMG1内の第1乃至第4のL2キャッシュSX00-SX11は,メモリ10-13内のデータをインタリーブで記憶する。したがって,メモリ10-13内のデータは,それぞれ,CMG1内の4つのL2キャッシュSX00-SX11のいずれかに記憶される。それに伴い,第2のコアグループCMG1内の4つのコア104-107は,コアグループ内バスB_1を介して,インタリーブを制御する2ビットのアドレスに対応するL2キャッシュSX00-SX11のいずれかにアクセス要求を発行する。これにより,第2のコアグループCMG1内の4つのコア104-107は,メインメモリの第5乃至第8のメモリ空間のいずれにもアクセス可能である。
例えば,コア104がメモリ11のメモリ空間のデータにアクセスする場合は,コア104は,アクセス要求をコアグループ内バスB_1を介してCMG1内のL2キャッシュSX01に発行する。その場合のL2キャッシュSX01によるアクセス要求の処理は,前述と同様である。
図3によれば,一例として,第1のコアグループCMG0内の第1のL2キャッシュSX00は,メモリ00のメモリ空間のデータを記憶し,第2のL2キャッシュSX01は,メモリ01のメモリ空間のデータを記憶し,第3のL2キャッシュSX10は,メモリ10のメモリ空間のデータを記憶し,第4のL2キャッシュSX11は,メモリ11のメモリ空間のデータを記憶する。
そして,上記の一例の場合は,4つのメモリ00-03にも,上記の2ビットのアドレスに基づいてデータがインタリーブで記憶されている。
ただし,4つのコア100-103が4つのL2キャッシュSX00-SX11にアクセス要求を発行してメモリ00-03のデータにアクセス可能であれば良いので,図3に示した対応関係である必要はない。
[コアグループ間のアクセス要求]
図2に戻り,4つのコアグループ間バスB_00,B_01,B_10,B_11を設けたことにより,第1のコアグループCMG0内の4つのコア100-103は,第2のコアグループCMG1内の4つのL2キャッシュSX00-SX11を介して,メモリ10-13のメモリ空間のデータにアクセスすることができる。例えば,第1のコアグループCMG0内のコア100は,メモリ11内のアドレスBにアクセス要求する場合は,まず,CMG0内のL2キャッシュSX01にアクセス要求を発行する。CMG0内のL2キャッシュはキャッシュミスし,コアグループ間バスB_01を介してCMG1内のL2キャッシュSX01にアクセス要求を発行する。CMG1内のL2キャッシュSX01がそのアクセス要求を処理して,例えば読み出しデータをコアグループ間バスB_01を介してCMG0内のL2キャッシュSX01に応答し,CMG0内のL2キャッシュSX01はその読み出しデータをキャッシュに登録し,コア100にデータ応答する。
逆に,4つのコアグループ間バスB_00,B_01,B_10,B_11を設けたことにより,第2のコアグループCMG1内の4つのコア104-107も,第1のコアグループCMG0内の4つのL2キャッシュSX00-SX11を介して,メモリ00-03のメモリ空間のデータにアクセスすることができる。
このように,本実施の形態による演算処理装置は,図1のようにコアグループ間にルータを有するのではなく,また8つのL2キャッシュ間全てにコアグループ間バスを有するものでもない。本実施の形態による演算処理装置は,第1,第2のコアグループCMG0,CMG1の第1のL2キャッシュSX00間と,第2のL2キャッシュSX01間と,第3のL2キャッシュSX10間と,第4のL2キャッシュSX11間にそれぞれ,コアグループ間バスB_00,B_01,B_10,B_11を有する。つまり,4つのコアグループ間バスは,限定的な数のバスにすぎない。
そして,本実施の形態の演算処理装置では,第1のコアグループCMG0内の4つのL2キャッシュSX00-SX11それぞれは,メモリ00-03のデータをインタリーブで記憶し,第2のコアグループCMG1内の4つのL2キャッシュSX00-SX11それぞれは,メモリ10-13のデータをインタリーブで記憶する。これにより,第1のコアグループCMG0内の4つのコア100-103は,第1のコアグループ内の近接する4つのL2キャッシュSX00-SX11と4つのメモリ00-03に,短いレイテンシでアクセスすることができる。同様に,第2のコアグループCMG1内の4つのコア104-107は,第2のコアグループ内の近接する4つのL2キャッシュSX00-SX11と4つのメモリ10-13に,短いレイテンシでアクセスすることができる。
しかも,4つのL2キャッシュSX00-SX11にインタリーブでデータを記憶するので,ある所定の範囲の連続するアドレス領域のデータの固まりにアクセスする場合,4つのL2キャッシュにデータ要求を並列に発行し並列に処理することができ,その結果レイテンシを短くできる。さらに,前述したようにメモリ00-03,メモリ10-13もインタリーブでデータを記憶すれば,メモリアクセスも並列に処理することができる。
また,本実施の形態の演算処理装置では,4つのL2キャッシュにインタリーブでデータを記憶することと,4つのコアグループ間バスB_00,B_01,B_10,B_11を有することとにより,8つのコア100-107は,8つのメモリ00-03,10-13の全てのメモリ空間のデータにアクセスすることができる。したがって,限られた数のコアグループ間バスではあるが,8つのコア100-107が全てのメモリ空間にアクセス可能であるので,全てのメモリ空間を有効に利用することができる。
本実施の形態の演算処理装置では,アプリケーションプログラムの複数のプロセスを,複数のコアが並列に処理するように制御し,第1のプロセスを第1のコアグループCMG0内のコア100-103で処理し,メモリ00-03にそのデータを記憶するように制御し,第2のプロセスを第2のコアグループCMG1内のコア104-107で処理し,メモリ10-13にそのデータを記憶するように制御することが望ましい。このように制御することで,第1のコアグループCMG0内のコア100-103は,その第1のコアグループCMG0内のL2キャッシュへのアクセス要求で所望のデータにアクセスすることができ,第2のコアグループCMG1内のL2キャッシュにアクセス要求する確率を低減することができる。同様に,第2のコアグループCMG1内のコア104-107は,その第2のコアグループCMG1内のL2キャッシュへのアクセス要求で所望のデータにアクセスすることができ,第1のコアグループCMG0内のL2キャッシュにアクセス要求する確率を低減することができる。この場合,4つのコアグループ間バスB_00,B_01,B_10,B_11という限られた数のバスを利用する頻度を抑制することができる。
[本実施の形態の詳細]
次に,本実施の形態の演算処理装置の詳細な構成例を説明する。図4は,第1のコアグループCMG0の構成を示す図である。図2と同様に,コアグループCMG0は,4つのCPUコア100-103を有し,4つのL2キャッシュSX00-SX11を有する。
第1のL2キャッシュSX00は,4つのコア100-103からコアグループ内バスB_0を介して発行されるアクセス要求を格納する要求入力ポートIN_Pと,コアグループ間バスB_00を介して入力されるアクセス要求を格納するリモート要求入力ポートR_IN__Pとを有する。
4つのコア100-103は,アクセス要求のアドレスに基づいてアクセス要求先のL2キャッシュを判定し,判定したL2キャッシュにアクセス要求をコアグループ内バスB_0を介して出力する。前述のとおり,4つのL2キャッシュSX00-SX11には,メインメモリのデータがインタリーブで記憶されるので,4つのコア100-103は,インタリーブを制御する2ビットのアドレスに基づいて,アクセス要求先のL2キャッシュを判定する。したがって,4つのコア100-103は,コアグループ内バスB_0を介して,メインメモリを構成するメモリ00-03のいずれのデータもL2キャッシュSX00-SX11を介してアクセスすることができ,キャッシュ登録することができる。
さらに,L2キャッシュSX00は,入力ポートIN_P,R_IN_Pに格納された要求を選択してL2キャッシュ制御部PIPEに投入する要求セレクタSELと,キャッシュパイプラインを構成するL2キャッシュ制御部PIPEと,キャッシュタグL2_TAGと,ディレクトリDIRと,キャッシュメモリCACHE_MEMとを有する。タグL2_TAGは,キャッシュメモリに登録しているデータのアドレス情報とそのデータのステータス情報とを格納する。ディレクトリDIRは,CMG0内のメモリのデータを持ち出して登録しているCMG1内のL2キャッシュのステータス情報を格納する。
ディレクトリDIRは,必ずしも設けられる必要はない。ただし,ディレクトリが設けられていれば,CMG0内のL2キャッシュでキャッシュミスになった場合に,CMG1内の対応するL2キャッシュでのデータのステータス情報,特にメインメモリと異なる更新データ(すなわち最新データ)か否かを参照することができる。
さらに,L2キャッシュSX00は,キャッシュ制御部PIPEからのメモリアクセス要求を格納するムーブインバッファMIBと,第2のコアグループCMG1内のL2キャッシュSX00へのアクセス要求を格納するリモート要求出力ポートR_OUTとを有する。ムーブインバッファMIB内のメモリアクセス要求はメモリアクセスコントローラMAC_00に入力され,メモリアクセスコントローラMAC_00が,メインメモリのメモリ00にメモリアクセスを実行する。そして,メモリアクセスがリード要求の場合は,読み出されたデータがメモリアクセスコントローラMAC_00からムーブインバッファMIBに返信され,要求セレクタSELを介して再度キャッシュ制御部PIPEに投入され,そのデータのキャッシュラインがキャッシュ登録される。また,キャッシュ制御部PIPEは,キャッシュメモリから読み出したデータを要求元のコアに応答する。
リモート要求出力ポートR_OUT内のアクセス要求は,第1のコアグループ間バスB_00を介して,図示しない第2のコアグループCMG1内の第1のL2キャッシュSX00に出力される。逆に,第2のコアグループCMG1内の第1のL2キャッシュSX00からのアクセス要求は,第1のコアグループ間バスB_00を介してリモート要求入力ポートR_IN_Pに格納され,第1のコアグループCMG0の第1のL2キャッシュSX00に投入される。つまり,第1のコアグループ間バスB_00は1対のバスで構成される。
第2,第3,第4のL2キャッシュSX01-SX11も,第1のL2キャッシュSX00と同様の構成である。但し,CMG0内の第2のL2キャッシュSX01は,図示しないCMG1内の第2のL2キャッシュへのアクセス要求をリモート要求出力ポートR_OUTに格納し,第2のコアグループ間バスB_01を介して,CMG1内の第2のL2キャッシュに出力する。また,CMG0内の第2のL2キャッシュSX01は,図示しないCMG1内の第2のL2キャッシュからのアクセス要求を,第2のコアグループ間バスB_01を介して,リモート要求入力ポートR_IN_Pに入力する。第3,第4のL2キャッシュSX10,SX11も同様である。
第2のコアグループCMG1の構成も,第1のコアグループCMG0の構成と同等である。
図5は,第1,第2のコアグループCMG0,CMG1の構成とその間のコアグループ間バスの構成を示す図である。図5には,第1のコアグループCMG0内の第1,第2のL2キャッシュSX00,SX01と,第2のコアグループCMG1内の第1のL2キャッシュSX00が示されている。これらのL2キャッシュの構成は,図4で説明したとおりである。CMG0内の図示しない第3,第4のL2キャッシュSX10,SX11も,CMG1内の図示しない第2〜第4のL2キャッシュSX01-SX11も,同様の構成である。
図5には,コアグループ間バスB_00の具体的な構成が示されている。第1のコアグループCMG0内の第1のL2キャッシュSX00のリモート要求出力ポートR_OUTと,第2のコアグループCMG1内の第1のL2キャッシュSX00のリモート要求入力ポートR_IN_Pとの間に,第1のコアグループ間バスB_00が設けられている。逆に,第2のコアグループCMG1内の第1のL2キャッシュSX00のリモート要求出力ポートR_OUTと,第1のコアグループCMG0内の第1のL2キャッシュSX00のリモート要求入力ポートR_IN_Pとの間に,逆方向の第1のコアグループ間バスB_00が設けられている。このように,第1のコアグループ間バスB_00は,1対のバスで構成される。
図5には明確に示されていないが,第1のコアグループCMG0内の第2のL2キャッシュSX01のリモート要求出力ポートR_OUTと,第2のコアグループCMG1内の第2のL2キャッシュSX01のリモート要求入力ポートR_IN_Pとの間に,第2のコアグループ間バスB_01が設けられている。逆に,第2のコアグループCMG1内の第2のL2キャッシュSX01のリモート要求出力ポートR_OUTと,第1のコアグループCMG0内の第2のL2キャッシュSX01のリモート要求入力ポートR_IN_Pとの間に,逆方向の第2のコアグループ間バスB_01が設けられている。第3,第4のコアグループ間バスB_10,B_11も同様の構成である。
[本実施の形態のアクセス要求の動作]
本実施の形態における演算処理装置のアクセス要求の動作について概略説明する。以下の説明では,例えば,メインメモリを構成するメモリ00,01,02,03には,メインメモリのデータがインタリーブで記憶され,第1のL2キャッシュSX00にはメモリ00のデータが登録され,以下同様に,第2,第3,第4のL2キャッシュSX01,SX10,SX11には,メモリ01,02,03のデータが登録されることを前提とする。
第1の動作として,第1のコアグループCMG0内の第1のコア100は,メモリ00のアドレスXのデータにアクセスする場合は,コアグループ内バスB_0を介して,第1のL2キャッシュSX00の要求入力ポートIN_Pにアクセス要求を出力する。このアクセス要求に応答して,第1のL2キャッシュSX00は,タグL2_TAGを検索してキャッシュヒットか否か判定し,キャッシュヒットならキャッシュメモリCACHE_MEMのデータにアクセスし,リード要求であれば読み出したデータを第1のコア100にデータ応答する。キャッシュミスなら,ムーブインバッファMIBとメモリアクセスコントローラMAC_00を介して,メモリ00のアドレスXのデータにアクセスし,リード要求であれば読み出したデータを第1のコア100にデータ応答する。
但し,図3で説明したとおり,第2のコアグループCMG1内の第1のL2キャッシュSX00が,メモリ00のデータを持ち出して記憶することがある。したがって,CMG1内のL2キャッシュSX00内に記憶されているデータが更新されて最新のデータの場合は,CMG0内のL2キャッシュSX00は,コアグループ間バスB_00を介して,CMG1内のL2キャッシュSX00に更新されたデータの要求を行い,コアグループ間バスB_00を介して更新データを取得する。この詳細な動作は,後述する。
このように,第1のコアグループCMG0内の第1のコア100は,アクセス先のアドレスに基づいて確定するアクセス要求先のL2キャッシュにアクセス要求を発行することで,メインメモリを構成するメモリ00-03内のデータにアクセスすることができる。第2,第3,第4のコア101-103も同様にして,メインメモリを構成するメモリ00-03内のデータにアクセスすることができる。
第2の動作として,第1のコアグループCMG0内の第1のコア100は,メモリ10のアドレスYのデータにアクセスする場合は,コアグループ内バスB_0を介して,CMG0内の第1のL2キャッシュSX00の要求入力ポートIN_Pにアクセス要求を出力する。このCMG0内の第1のL2キャッシュSX00がアクセス先であるメモリ10のデータを記憶していない場合は,第1のL2キャッシュSX00でのタグ検索でキャッシュミスとなり,第1のL2キャッシュSX00は,CMG1内の第1のL2キャッシュSX00宛のアクセス要求をリモート要求出力ポートR_OUTに格納する。リモート要求出力ポートR_OUTに格納されたアクセス要求は,コアグループ間バスB_00を介して,CMG1内の第1のL2キャッシュSX00のリモート要求入力ポートR_IN_Pに転送され,そのキャッシュ制御部PIPEに投入される。
CMG1内の第1のL2キャッシュSX00のキャッシュ制御部PIPEは,投入されたアクセス要求を処理して,キャッシュメモリCACHE_MEMまたはメモリ10にアクセスし,リード要求の場合はリードデータを,リモート要求出力ポートR_OUTに格納し,逆方向のコアグループ間バスB_00を介して,CMG0内の第1のL2キャッシュSX00のリモート要求入力ポートR_IN_Pに入力する。そして,CMG0内の第1のL2キャッシュSX00内のキャッシュ制御部PIPEは,応答されたリードデータをキャッシュ登録し,要求元のコア100にデータ応答する。
第3の動作として,前述の第1の動作において,第1のコアグループCMG0内の第1のコア100が,メモリ00のアドレスXのデータにアクセスする場合に,コアグループ内バスB_0を介して,第1のL2キャッシュSX00の要求入力ポートIN_Pにアクセス要求を出力した場合を想定する。第1のL2キャッシュSX00は,タグ検索の結果キャッシュミスの場合もキャッシュヒットの場合も,メモリ00のデータをCMG1内の第1のL2キャッシュSX00が持ち出して更新データを記憶しているか否かをチェックする。このチェックは,ディレクトリDIRを検索することで判定することもできるし,コアグループ間バスB_00を介して,CMG1内の第1のL2キャッシュSX00にタグ検索要求を出力することにより判定することもできる。このようなタグ検索要求を行う場合もコアグループ間バスB_00を利用することができる。
第4の動作として,前述の第1の動作において,第1のコアグループCMG0内の第1のコア100が,メモリ00のアドレスXのデータにアクセスする場合に,コアグループ内バスB_0を介して,第1のL2キャッシュSX00の要求入力ポートIN_Pにアクセス要求を出力した場合を想定する。第1のL2キャッシュSX00がタグ検索してキャッシュミスし,メモリ00からデータを取得し,一方,CMG1の第1のL2キャッシュSX00も同じデータを記憶している場合がある。その場合は,CMG0の第1のL2キャッシュSX00は,CMG1の第1のL2キャッシュSX00のタグのステータス情報を変更するために,タグ変更要求を,第1のコアグループ間バスB_00を利用して,CMG1の第1のL2キャッシュSX00に出力する。このようなタグ変更要求を行う場合も,コアグループ間バスB_00を利用することができる。
[本実施の形態の7つのアクセス要求の動作]
次に,本実施の形態の演算処理装置の7つのアクセス要求の動作について説明する。
以下の実施の形態において,キャッシュは5つの状態(ステータス情報)を持つ。第1に,キャッシュ内にデータが登録されていない状態(無効,Invalid)と,キャッシュ内にデータが登録されている状態(有効,Valid)とがある。第2に,有効状態の場合に,さらに,キャッシュ内のデータがメインメモリのデータと同じである状態(占有非更新状態,Clean)と,キャッシュのデータのみが更新されメインメモリのデータと不一致を起こしている状態(占有更新状態,Dirty)と,複数のキャッシュにメインメモリのあるアドレスのデータが登録されている状態(共有状態,Share)とがある。共有状態の場合,他のキャッシュのデータがCleanである保証はない。
要すれば,キャッシュのステータスは,無効(Invalid),占有非更新(Clean),占有更新(Dirty),共有(Share)であり,無効以外の3つの状態は特に明記しなくとも有効(Valid)な状態になる。そして,このステータス情報は,キャッシュ内のタグに格納される。
また,以下の実施の形態において,一方のコアグループCMG内の各L2キャッシュSX00-SX11は,他のコアグループCMG内のペアを組んでいる各L2キャッシュが,一方のコアグループ側のメモリのデータを記憶しているか否か,つまりデータを持ち出しているか否かを示すディレクトリ情報を保持する。したがって,各L2キャッシュは,キャッシュタグを検索する際にこのディレクトリ情報を検索することで,他のコアグループ内のL2キャッシュにデータが記憶されているか否かを判別することができる。
ディレクトリ情報にも,キャッシュのステータス情報と同様に,無効(Invalid),占有非更新(Clean),占有更新(Dirty),共有(Share)を有する。無効(Invalid)であれば,他のCMG内のL2キャッシュにはデータが記憶されておらず,占有非更新(Clean),占有更新(Dirty),共有(Share)であれば,他のCMG内のL2キャッシュにはデータが記憶されている。
L2キャッシュは,ディレクトリ情報を,他のCMG内のL2キャッシュの持ち出されたデータのステータスを高速にチェックするために保持する。したがって,L2キャッシュは,ディレクトリ情報を保持していない場合は,他のCMG内のL2キャッシュのタグ検索を実行すればよい。その場合の動作については,最後に説明する。
以下の動作において,各L2キャッシュは,タグ検索してキャッシュミスした場合にディレクトリDIRを検索するものとする。一方,タグ検索してキャッシュヒットした場合にはディレクトリDIRの検索は行わないものとする。ディレクトリDIR検索に要する消費電力を節約するためである。但し,キャッシュミス及びキャッシュヒットした場合のいずれでもディレクトリDIRの検索を行っても良い。
図6は,本実施の形態におけるアクセス要求に対する動作のフローチャート図である。図6には,以下に説明する7つのアクセス要求の動作のうち,第1のコアグループCMG0内のコア100(CORE_0)がメモリ01のアドレスAにアクセス要求,特にリード要求(ロード要求)した場合の6つの動作を示す。図6のフローチャート図も参照しながら,アクセス要求の動作を説明する。
[アクセス要求I]
アクセス要求Iの動作は,図6において,CMG0のSX01にキャッシュ登録されておらず(S1のNO),CMG1のSX01にもキャッシュ登録されていない(S7のNO)場合に,メモリ01からデータが転送される(S10)動作である。工程S7の判定は,CMG0内L2キャッシュSX01内のディレクトリ情報を参照することで行われる。
図7は,アクセス要求Iの動作を示すシーケンス図である。前提となるステータス情報は,CMG0内のL2キャッシュSX01は無効(Invalid),CMG1内のL2キャッシュも無効(Invalid)である。
まず,第1のコアグループCMG0内のコア100(CORE_0)は,メモリ01のアドレスAへのリード要求を,コアグループ内バスB_0を介してL2キャッシュSX01の要求入力ポートIN_Pに出力する(S11)。そのリード要求がL2キャッシュSX01に投入されると,L2キャッシュSX01は,そのリード要求の投入に応答して,タグ検索してキャッシュミスし,ディレクトリ検索して無効(Invalid)状態を検出する(S12)。
CMG0内L2キャッシュSX01,CMG1内L2キャッシュSX01のいずれにもデータが記憶されていないので,CMG0内のL2キャッシュSX01は,メモリアクセスコントローラMAC_01を介してメモリ01にアクセス要求(リード要求)を行い,メモリ01のアドレスAのデータを読み出す(S14)。そして,メモリアクセスコントローラMAC_01がデータ応答すると,CMG0内L2キャッシュSX01がデータをキャッシュに登録し,タグのステータス情報を無効(Invalid)から占有非更新(Clean)に変更し(S15),要求元のコア100(CORE_0)にデータ応答する(S16)。L2キャッシュSX01によるデータとタグの登録は,ムーブインバッファMIBがキャッシュ登録要求をL2キャッシュSX01に投入することで行われる。
[アクセス要求II]
アクセス要求IIの動作は,図6において,CMG0のL2キャッシュSX01にキャッシュ登録されておらず(S1のNO),CMG1のL2キャッシュSX01には占有更新(Dirty)でキャッシュ登録されている(S7のYES,S8のNO)場合に,CMG1のL2キャッシュSX01からデータが転送される(S9)動作である。工程S7の判定は,CMG0内L2キャッシュSX01のディレクトリ情報を参照して行われる。
図8は,アクセス要求IIの動作を示すシーケンス図である。前提となるステータス情報は,CMG0内のL2キャッシュSX01は無効(Invalid),CMG1内のL2キャッシュは占有非更新(Clean)から占有更新(Dirty)に変更している。
まず,第1のコアグループCMG0内のコア100(CORE_0)は,メモリ01のアドレスAへのリード要求を,コアグループ内バスB_0を介してL2キャッシュSX01の要求入力ポートIN_Pに出力する(S21)。CMG0内L2キャッシュSX01は,そのリード要求に応答して,タグ検索してキャッシュミスし,ディレクトリ検索して占有更新(Dirty)状態を検出する(S22)。
そこで,CMG0内L2キャッシュSX01は,リモート要求出力ポートR_OUTからコアグループ間バスB_01を介して,他方のコアグループCMG1内L2キャッシュSX01のリモート要求入力ポートR_IN_Pにリード要求を出力する(S23)。
CMG1内L2キャッシュSX01は,タグ検索してキャッシュヒットし,キャッシュメモリからデータを読み出し,タグのステータス情報を占有更新(Dirty)から共有(Share)に変更し(S24),逆方向のコアグループ間バスB_01を介して,CMG0内L2キャッシュSX01にデータ応答する(S25)。CMG0内L2キャッシュSX01は,データをキャッシュ登録し,タグのステータス情報を無効(Invalid)から共有(Share)に変更し,さらに,ディレクトリ情報を占有更新(Dirty)から共有(Share)に変更し(S26),要求元のコア100(CORE_0)にデータ応答する(S27)。同時に,CMG0内L2キャッシュSX01は,ムーブアウト要求をメモリアクセスコントローラMAC_01に出力して,メモリ01にデータを書き戻し(ライト)させる(S29)。これにより,キャッシュとメモリ間のデータのコヒーレンシが保たれ,CMG0内L2キャッシュSX01内のデータは占有非更新(Clean)の状態になる。但し,この例ではタグのステータス情報は共有(Share)状態に変更される。
アクセス要求IIの動作では,コアグループ間バスB_01を利用して,CMG0内L2キャッシュSX01がCMG1内L2キャッシュSX01にリード要求を出力し,データ応答を受信する。この処理において,図1のようにルータのパイプライン処理を経由する必要がない。
[アクセス要求III]
アクセス要求IIIの動作は,図6において,CMG0のL2キャッシュSX01にキャッシュ登録されておらず(S1のNO),CMG1のL2キャッシュSX01には占有非更新(Clean)でキャッシュ登録されている(S7のYES,S8のYES)場合に,CMG0のL2キャッシュSX01がメモリ01からデータを読み出して転送する(S10)動作である。工程S7の判定は,CMG0内L2キャッシュSX01のディレクトリ情報を参照して行われる。
図9は,アクセス要求IIIの動作を示すシーケンス図である。前提となるステータス情報は,CMG0内のL2キャッシュSX01は無効(Invalid),CMG1内のL2キャッシュは占有非更新(Clean)の状態である。後述するアクセス要求VIIが終了した状態であり,但しCMG0とCMG1とが逆の関係である。
まず,第1のコアグループCMG0内のコア100(CORE_0)は,メモリ01のアドレスAへのリード要求を,コアグループ内バスB_0を介してL2キャッシュSX01の要求入力ポートIN_Pに出力する(S31)。CMG0内L2キャッシュSX01は,そのリード要求に応答して,タグ検索してキャッシュミスし,ディレクトリ検索して占有非更新(Clean)状態を検出する(S32)。
そこで,CMG0内L2キャッシュSX01は,MAC01を介してメモリ01にメモリアクセスしてデータを取得し(S36),そのデータについてキャッシュ登録し,ディレクトリを占有非更新(Clean)から共有(Share)に変更し(S38),要求元のコア100(CORE_0)にデータ応答する(S39)。同時に,CMG0のL2キャッシュSX01は,コアグループ間バスB_01を介して,CMG1のL2キャッシュSX01にタグのステータス情報を占有非更新(Clean)から共有(Share)に変更するようタグ変更要求を出力する(S33)。それに応答して,CMG1のL2キャッシュSX01は,タグのステータス情報を変更し(S34),タグ変更の応答をCMG0のL2キャッシュSX01に行う(S35)。CMG0のL2キャッシュSX01は,このタグ変更応答を待たずに,コア100(CORE_0)にデータ応答を行う(S39)。
上記のアクセス要求IIIの動作において,キャッシュミスしたCMG0のL2キャッシュSX01は,レイテンシが短い場合は,CMG1のL2キャッシュSX01からデータを取得してもよい。但し,CMG0のL2キャッシュSX01によるメモリ01へのアクセス要求は,事前のプリフェッチ要求によりレイテンシが短い場合がある。
[アクセス要求IV]
アクセス要求IVの動作は,図6において,CMG0のL2キャッシュSX01にキャッシュ登録されていて(S1のYES),CMG1のL2キャッシュSX01には占有更新(Dirty)で登録されている(S2のYES,S3のNO)場合に,CMG0のL2キャッシュSX01が,CMG1のL2キャッシュSX01からデータを転送する(S9)動作である。
図10は,アクセス要求IVの動作を示すシーケンス図である。前提となるステータス情報は,CMG0内のL2キャッシュSX01は共有(Share),CMG1のL2キャッシュSX01は共有(Share)から占有更新(Dirty)の状態である。
まず,第1のコアグループCMG0内のコア100(CORE_0)は,メモリ01のアドレスAへのリード要求を,コアグループ内バスB_0を介してL2キャッシュSX01の要求入力ポートIN_Pに出力する(S41)。CMG0内L2キャッシュSX01は,そのリード要求に応答して,タグ検索しステータス情報が共有(Share)であるためキャッシュヒットする(S42)。この実施の形態では,L2キャッシュはキャッシュヒットした場合はディレクトリチェックを行わない。
そこで,ステータス情報が共有(Share)であるため,CMG0のL2キャッシュSX01は,コアグループ間バスB_01を介して,CMG1のL2キャッシュSX01にタグチェック要求を発行する(S43)。それに応答して,CMG1のL2キャッシュSX01は,タグ検索して占有更新(Dirty)であることを検出するため,キャッシュメモリ内のデータを読み出し且つタグのステータス情報を共有(Share)に変更し(S44),CMG0のL2キャッシュSX01にコアグループ間バスB_01を介してデータ応答する(S45)。
そして,CMG0のL2キャッシュSX01は,データをキャッシュに登録し(S46),コア100(CORE_0)にデータ応答する(S47)。それと共に,CMG0のL2キャッシュSX01は,MAC01にムーブアウト要求を発行し(S48),メモリ01にデータを書き込む(S49)。これにより,キャッシュとメモリ間のデータのコヒーレンシが保たれる。
なお,この動作では,CMG0のL2キャッシュSX01はディレクトリを変更するメンテナンスは行わない。その後,キャッシュヒットしてディレクトリを参照することがないからである。但し,CMG0のL2キャッシュSX01に登録されているデータが他のデータに置き替えられてメモリ01にムーブアウトした場合は,その後キャッシュミスするので,ディレクトリのメンテナンスを行う。
[アクセス要求V]
アクセス要求Vの動作は,図6において,CMG0のL2キャッシュSX01にキャッシュ登録されていて(S1のYES),CMG1のL2キャッシュSX01には共有(Share)で登録されている(S2のYES,S3のYES)場合に,CMG0のL2キャッシュSX01が,キャッシュ登録されているデータを転送する(S5)動作である。
図11は,アクセス要求Vの動作を示すシーケンス図である。前提となるステータス情報は,CMG0内のL2キャッシュSX01は共有(Share),CMG1のL2キャッシュSX01も共有(Share)の状態である。
まず,第1のコアグループCMG0内のコア100(CORE_0)は,メモリ01のアドレスAへのリード要求を,コアグループ内バスB_0を介してL2キャッシュSX01の要求入力ポートIN_Pに出力する(S51)。CMG0内L2キャッシュSX01は,そのリード要求に応答して,タグ検索しステータス情報が共有(Share)であるためキャッシュヒットする(S52)。アクセス要求IVと同様にディレクトリチェックは行わない。
そこで,ステータス情報が共有(Share)であるため,CMG0のL2キャッシュSX01は,コアグループ間バスB_01を介して,CMG1のL2キャッシュSX01にタグチェック要求を発行する(S53)。それに応答して,CMG1のL2キャッシュSX01は,タグ検索して共有(Share)であることを検出し(S54),CMG0のL2キャッシュSX01にコアグループ間バスB_01を介してタグチェック結果(共有)を応答する(S55)。これに応答して,CMG0のL2キャッシュSX01は,コア100(CORE_0)に,キャッシュメモリ内のデータを応答する(S56)。
この例では,両キャッシュのステータス情報の変更は生じない。
[アクセス要求VI]
アクセス要求VIの動作は,図6において,CMG0のL2キャッシュSX01にキャッシュ登録されていて(S1のYES),CMG1のL2キャッシュSX01には登録されていない(S2のNO)場合に,CMG0のL2キャッシュSX01が,キャッシュ登録されているデータを転送する(S5)動作である。
図12は,アクセス要求VIの動作を示すシーケンス図である。前提となるステータス情報は,CMG0内のL2キャッシュSX01は占有非更新または占有更新(Clean/Dirty),CMG1のL2キャッシュSX01は無効(Invalid)の状態である。
まず,第1のコアグループCMG0内のコア100(CORE_0)は,メモリ01のアドレスAへのリード要求を,コアグループ内バスB_0を介してL2キャッシュSX01の要求入力ポートIN_Pに出力する(S61)。CMG0内L2キャッシュSX01は,そのリード要求に応答して,タグ検索しステータス情報が占有非更新または占有更新(Clean/Dirty)であるためキャッシュヒットする(S62)。
ステータス情報が共有(Share)ではないので,CMG0のL2キャッシュSX01は,キャッシュメモリのデータを,コア10(CORE_0)にデータ応答する(S63)。
この例では,両キャッシュのステータス情報の変更は生じない。
[アクセス要求VII]
アクセス要求VIIは,CMG0内のコア100(CORE_0)がCNG1側のメモリ11のアドレスBにリード要求(ロード要求)を行う。アクセス要求VIIは,上記のアクセス要求I〜VIのメモリ01のアドレスAにリード要求することとは,アクセス先が異なる。
図13は,アクセス要求VIIの動作を示すシーケンス図である。前提となるステータス情報は,CMG0内のL2キャッシュSX01もCMG1のL2キャッシュSX01も共に無効(Invalid)状態である。
まず,第1のコアグループCMG0内のコア100(CORE_0)は,メモリ11のアドレスAへのリード要求を,コアグループ内バスB_0を介してL2キャッシュSX01の要求入力ポートIN_Pに出力する(S71)。CMG0内L2キャッシュSX01は,そのリード要求に応答して,タグ検索しステータス情報が無効(Invalid)であるので,キャッシュミスし(S72),コアグループ間バスB_01を利用して,CMG1のL2キャッシュSX11にリード要求を発行する(S73)。
CMG1のL2キャッシュSX11は,タグを検索してキャッシュミスし(S74),メモリアクセスコントローラMAC_11にメモリアクセス要求を発行し,メモリ11からデータを読み出す(S75)。CMG1のL2キャッシュSX11は,メモリ11のデータがCMG0のL2キャッシュSX01により持ち出されるので,ディレクトリを無効(Invalid)から占有非更新(Clean)に変更し(S76),コアグループ間バスB_01を介してデータ応答する(S77)。
一方,データ応答を受信したCMG0のL2キャッシュSX01は,データをキャッシュ登録し,タグを無効(Invalid)から占有非更新(Clean)に変更し(S78),コア100(CORE_0)にデータ応答する(S79)。
このアクセス要求VIIが終了した状態は,CMG0とCMG1の関係が逆ではあるが,前述のアクセス要求IIIの最初の状態と同じである。
[ディレクトリを保持しない実施の形態]
L2キャッシュそれぞれが,自分のメモリのデータを他のL2キャッシュが持ち出しているか否かの情報を保持するディレクトリを保持しない実施例の場合は,次のような動作になる。
すなわち,前述のアクセス要求I,II,IIIの場合に,CMG0のL2キャッシュSX01がキャッシュミスをしたときに,ディレクトリをチェックする代わりに,コアグループ間バスを介してCMG1のL2キャッシュにタグのステータス情報のチェックを要求し,逆方向のコアグループ間バスを介してステータス情報を取得する。そして,そのステータス情報が占有更新(Dirty)の場合には,CMG1のL2キャッシュSX01からデータを取得する。
以上のとおり,本実施の形態によれば,複数のコアとN(Nは複数)個のL2キャッシュを有する第1,第2のコアグループCMG0,CMG1との間に,N個のL2キャッシュそれぞれの間にN本のコアグループ間バスB_00〜B_11を設けることで,コアグループ間の少ないバス本数で,全てのコアが全てのメモリ空間にアクセス可能になると共に,異なるコアグループのメモリアクセスのレイテンシを短くすることができる。前述のとおり,コアグループ間バスは,接続されている対のL2キャッシュ間のデータ転送やタグ情報転送などに利用される。
本実施の形態は,2つのコアグループの場合だけでなく,2つを越える個数,例えば4個,8個,16個などの複数のコアグループの場合にも適用することができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
複数の演算処理部と,前記複数の演算処理部からのアクセス要求を処理する第1乃至第N(Nは正の整数)のキャッシュと,前記複数の演算処理部のアクセス要求を前記第1乃至第Nのキャッシュに供給するコアグループ内バスとをそれぞれ有する第1及び第2のコアグループと,
前記第1のコアグループ内の前記第1乃至第Nのキャッシュそれぞれと,前記第2のコアグループ内の前記第1乃至第Nのキャッシュそれぞれとの間に対応して設けられた第1乃至第Nのコアグループ間バスとを有し,
前記Nは複数であり,
前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,メモリの第1乃至第Nのメモリ空間それぞれのデータを個別に記憶し,
前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第N+1乃至第2Nのメモリ空間それぞれのデータを個別に記憶し,
前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第N+1乃至第2Nのメモリ空間それぞれのデータに,前記第1乃至第Nのコアグループ間バスを介してアクセスし記憶し,
前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第1乃至第Nのメモリ空間それぞれのデータに,前記第1乃至第Nのコアグループ間バスを介してアクセスし記憶する演算処理装置。
(付記2)
前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第1乃至第Nのメモリ空間それぞれのデータについて,最新データを記憶していない場合に,前記第1乃至第Nのコアグループ間バスを介して前記第2のコアグループ内の前記第1乃至第Nのキャッシュそれぞれから前記最新データを取得して記憶し,
前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第N+1乃至第2Nのメモリ空間それぞれのデータについて,最新データを記憶していない場合に,前記第1乃至第Nのコアグループ間バスを介して前記第1のコアグループ内の前記第1乃至第Nのキャッシュそれぞれから前記最新データを取得して記憶する付記1に記載の演算処理装置。
(付記3)
前記第1乃至第Nのキャッシュは,それぞれ,キャッシュタグとキャッシュメモリとを有し,
前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記第1乃至第Nのコアグループ間バスを介して前記第2のコアグループ内の前記第1乃至第Nのキャッシュそれぞれの前記キャッシュタグ内のデータのステータス情報を変更し,
前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記第1乃至第Nのコアグループ間バスを介して前記第1のコアグループ内の前記第1乃至第Nのキャッシュそれぞれの前記キャッシュタグ内のデータのステータス情報を変更する付記1または2に記載の演算処理装置。
(付記4)
前記第1乃至第Nのキャッシュは,それぞれ,キャッシュタグとキャッシュメモリとを有し,
前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記第1乃至第Nのコアグループ間バスを介して前記第2のコアグループ内の前記第1乃至第Nのキャッシュそれぞれの前記キャッシュタグ内のデータのステータス情報を問い合わせし,前記ステータス情報を取得し,
前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記第1乃至第Nのコアグループ間バスを介して前記第1のコアグループ内の前記第1乃至第Nのキャッシュそれぞれの前記キャッシュタグ内のデータのステータス情報を問い合わせし,前記ステータス情報を取得する付記1または2に記載の演算処理装置。
(付記5)
前記ステータス情報は,前記キャッシュメモリにデータを記憶していない第1の状態と,前記メモリと同じデータを記憶している第2の状態と,前記メモリと異なる最新のデータを記憶している第3の状態とを少なくとも有する付記3または4に記載の演算処理装置。
(付記6)
前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記第2のコアグループ内の前記第1乃至第Nのキャッシュそれぞれが,前記メモリの第1乃至第Nのメモリ空間それぞれのデータを記憶しているか否かのディレクトリ情報を保持するディレクトリを有し,前記ディレクトリの前記ディレクトリ情報が最新のデータを記憶していることを示す場合に,前記コアグループ間バスを介して前記第2のコアグループの前記第1乃至第Nのキャッシュから前記最新データを取得する付記1または2に記載の演算処理装置。
(付記7)
前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記ディレクトリの前記ディレクトリ情報が前記メモリと同じデータを記憶していることを示す場合に,前記メモリから前記キャッシュミスしたデータを取得する付記6に記載の演算処理装置。
(付記8)
前記第1,第2のコアグループが,第1乃至第Nの演算処理部を有し,
前記第1のコアグループ内の前記第1乃至第Nの演算処理部それぞれは,前記メモリの第1乃至第Nのメモリ空間から読み出したデータを,前記第1のコアグループ内の前記第1乃至第Nのキャッシュに登録し,
前記第2のコアグループ内の前記第1乃至第Nの演算処理部それぞれは,前記メモリの第N+1乃至第2Nのメモリ空間から読み出したデータを,前記第2のコアグループ内の前記第1乃至第Nのキャッシュに登録する付記1に記載の演算処理装置。
(付記9)
複数の演算処理部と,前記複数の演算処理部からのアクセス要求を処理する第1乃至第N(Nは正の整数)のキャッシュと,前記複数の演算処理部のアクセス要求を前記第1乃至第Nのキャッシュに供給するコアグループ内バスとをそれぞれ有する第1及び第2のコアグループと,
前記第1のコアグループ内の前記第1乃至第Nのキャッシュそれぞれと,前記第2のコアグループ内の前記第1乃至第Nのキャッシュそれぞれとの間に対応して設けられた第1乃至第Nのコアグループ間バスとを有し,
前記Nは複数である演算処理装置の制御方法であって,
前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,メモリの第1乃至第Nのメモリ空間それぞれのデータを個別に記憶し,
前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第N+1乃至第2Nのメモリ空間それぞれのデータを個別に記憶し,
前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第N+1乃至第2Nのメモリ空間それぞれのデータに,前記第1乃至第Nのコアグループ間バスを介してアクセスし記憶し,
前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第1乃至第Nのメモリ空間それぞれのデータに,前記第1乃至第Nのコアグループ間バスを介してアクセスし記憶する演算処理装置の制御方法。
(付記10)
前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第1乃至第Nのメモリ空間それぞれのデータについて,最新データを記憶していない場合に,前記第1乃至第Nのコアグループ間バスを介して前記第2のコアグループ内の前記第1乃至第Nのキャッシュそれぞれから前記最新データを取得して記憶し,
前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第N+1乃至第2Nのメモリ空間それぞれのデータについて,最新データを記憶していない場合に,前記第1乃至第Nのコアグループ間バスを介して前記第1のコアグループ内の前記第1乃至第Nのキャッシュそれぞれから前記最新データを取得して記憶する
付記9に記載の演算処理装置の制御方法。
100-107:CPUコア
SX00-SX11:L2キャッシュ
MAC00-MAC03,MAC10-MAC13:メモリアクセスコントローラ
00-03,10-13:メインメモリ
B_0,B_1:第1のバス
B_00-B11:第2のバス
IN_P:要求入力ポート
R_IN_P:リモート要求入力ポート
R_OUT:リモート要求出力ポート
PIPE:キャッシュ制御部,キャッシュパイプライン
まず,第1のコアグループCMG0内のコア100(CORE_0)は,メモリ11のアドレスBへのリード要求を,コアグループ内バスB_0を介してL2キャッシュSX01の要求入力ポートIN_Pに出
力する(S71)。CMG0内L2キャッシュSX01は,そのリード要求に応答して,タグ検索しステータス情報が無効(Invalid)であるので,キャッシュミスし(S72),コアグループ間バスB_01を利用して,CMG1のL2キャッシュSX01にリード要求を発行する(S73)。
CMG1のL2キャッシュSX01は,タグを検索してキャッシュミスし(S74),メモリアクセスコントローラMAC_11にメモリアクセス要求を発行し,メモリ11からデータを読み出す(S75)。CMG1のL2キャッシュSX01は,メモリ11のデータをキャッシュ登録せず,メモリ11のデータがCMG0のL2キャッシュSX01により持ち出されるので,タグのステータス情報は無効(Invalid)のまま変更せず,ディレクトリを無効(Invalid)から占有非更新(Clean)に変更し(S76),コアグループ間バスB_01を介してデータ応答する(S77)。

Claims (9)

  1. 複数の演算処理部と,前記複数の演算処理部からのアクセス要求を処理する第1乃至第N(Nは正の整数)のキャッシュと,前記複数の演算処理部のアクセス要求を前記第1乃至第Nのキャッシュに供給するコアグループ内バスとをそれぞれ有する第1及び第2のコアグループと,
    前記第1のコアグループ内の前記第1乃至第Nのキャッシュそれぞれと,前記第2のコアグループ内の前記第1乃至第Nのキャッシュそれぞれとの間に対応して設けられた第1乃至第Nのコアグループ間バスとを有し,
    前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,メモリの第1乃至第Nのメモリ空間それぞれのデータを個別に記憶し,
    前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第N+1乃至第2Nのメモリ空間それぞれのデータを個別に記憶し,
    前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第N+1乃至第2Nのメモリ空間それぞれのデータに,前記第1乃至第Nのコアグループ間バスを介してアクセスし記憶し,
    前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第1乃至第Nのメモリ空間それぞれのデータに,前記第1乃至第Nのコアグループ間バスを介してアクセスし記憶する演算処理装置。
  2. 前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第1乃至第Nのメモリ空間それぞれのデータについて,最新データを記憶していない場合に,前記第1乃至第Nのコアグループ間バスを介して前記第2のコアグループ内の前記第1乃至第Nのキャッシュそれぞれから前記最新データを取得して記憶し,
    前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第N+1乃至第2Nのメモリ空間それぞれのデータについて,最新データを記憶していない場合に,前記第1乃至第Nのコアグループ間バスを介して前記第1のコアグループ内の前記第1乃至第Nのキャッシュそれぞれから前記最新データを取得して記憶する請求項1に記載の演算処理装置。
  3. 前記第1乃至第Nのキャッシュは,それぞれ,キャッシュタグとキャッシュメモリとを有し,
    前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記第1乃至第Nのコアグループ間バスを介して前記第2のコアグループ内の前記第1乃至第Nのキャッシュそれぞれの前記キャッシュタグ内のデータのステータス情報を変更し,
    前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記第1乃至第Nのコアグループ間バスを介して前記第1のコアグループ内の前記第1乃至第Nのキャッシュそれぞれの前記キャッシュタグ内のデータのステータス情報を変更する請求項1または2に記載の演算処理装置。
  4. 前記第1乃至第Nのキャッシュは,それぞれ,キャッシュタグとキャッシュメモリとを有し,
    前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記第1乃至第Nのコアグループ間バスを介して前記第2のコアグループ内の前記第1乃至第Nのキャッシュそれぞれの前記キャッシュタグ内のデータのステータス情報を問い合わせし,前記ステータス情報を取得し,
    前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記第1乃至第Nのコアグループ間バスを介して前記第1のコアグループ内の前記第1乃至第Nのキャッシュそれぞれの前記キャッシュタグ内のデータのステータス情報を問い合わせし,前記ステータス情報を取得する請求項1または2に記載の演算処理装置。
  5. 前記ステータス情報は,前記キャッシュメモリにデータを記憶していない第1の状態と,前記メモリと同じデータを記憶している第2の状態と,前記メモリと異なる最新のデータを記憶している第3の状態とを少なくとも有する請求項3または4に記載の演算処理装置。
  6. 前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記第2のコアグループ内の前記第1乃至第Nのキャッシュそれぞれが,前記メモリの第1乃至第Nのメモリ空間それぞれのデータを記憶しているか否かのディレクトリ情報を保持するディレクトリを有し,前記ディレクトリの前記ディレクトリ情報が最新のデータを記憶していることを示す場合に,前記コアグループ間バスを介して前記第2のコアグループの前記第1乃至第Nのキャッシュから前記最新データを取得する請求項1または2に記載の演算処理装置。
  7. 前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記ディレクトリの前記ディレクトリ情報が前記メモリと同じデータを記憶していることを示す場合に,前記メモリから前記キャッシュミスしたデータを取得する請求項6に記載の演算処理装置。
  8. 前記第1,第2のコアグループが,第1乃至第Nの演算処理部を有し,
    前記第1のコアグループ内の前記第1乃至第Nの演算処理部それぞれは,前記メモリの第1乃至第Nのメモリ空間から読み出したデータを,前記第1のコアグループ内の前記第1乃至第Nのキャッシュに登録し,
    前記第2のコアグループ内の前記第1乃至第Nの演算処理部それぞれは,前記メモリの第N+1乃至第2Nのメモリ空間から読み出したデータを,前記第2のコアグループ内の前記第1乃至第Nのキャッシュに登録する請求項1に記載の演算処理装置。
  9. 複数の演算処理部と,前記複数の演算処理部からのアクセス要求を処理する第1乃至第N(Nは正の整数)のキャッシュと,前記複数の演算処理部のアクセス要求を前記第1乃至第Nのキャッシュに供給するコアグループ内バスとをそれぞれ有する第1及び第2のコアグループと,
    前記第1のコアグループ内の前記第1乃至第Nのキャッシュそれぞれと,前記第2のコアグループ内の前記第1乃至第Nのキャッシュそれぞれとの間に対応して設けられた第1乃至第Nのコアグループ間バスとを有する演算処理装置の制御方法であって,
    前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,メモリの第1乃至第Nのメモリ空間それぞれのデータを個別に記憶し,
    前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第N+1乃至第2Nのメモリ空間それぞれのデータを個別に記憶し,
    前記第1のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第N+1乃至第2Nのメモリ空間それぞれのデータに,前記第1乃至第Nのコアグループ間バスを介してアクセスし記憶し,
    前記第2のコアグループの前記第1乃至第Nのキャッシュそれぞれは,前記メモリの第1乃至第Nのメモリ空間それぞれのデータに,前記第1乃至第Nのコアグループ間バスを介してアクセスし記憶する演算処理装置の制御方法。
JP2014090960A 2014-04-25 2014-04-25 演算処理装置とその制御方法 Active JP6213366B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014090960A JP6213366B2 (ja) 2014-04-25 2014-04-25 演算処理装置とその制御方法
US14/672,284 US9606917B2 (en) 2014-04-25 2015-03-30 Arithmetic processing apparatus and method for controlling same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014090960A JP6213366B2 (ja) 2014-04-25 2014-04-25 演算処理装置とその制御方法

Publications (2)

Publication Number Publication Date
JP2015210616A true JP2015210616A (ja) 2015-11-24
JP6213366B2 JP6213366B2 (ja) 2017-10-18

Family

ID=54334915

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014090960A Active JP6213366B2 (ja) 2014-04-25 2014-04-25 演算処理装置とその制御方法

Country Status (2)

Country Link
US (1) US9606917B2 (ja)
JP (1) JP6213366B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019049872A (ja) * 2017-09-11 2019-03-28 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2020533705A (ja) * 2017-09-13 2020-11-19 グーグル エルエルシー 量子エラー訂正

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0816474A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd マルチプロセッサシステム
JPH10260897A (ja) * 1997-03-21 1998-09-29 Toshiba Corp キャッシュシステム
US5901281A (en) * 1991-01-25 1999-05-04 Hitachi, Ltd. Processing unit for a computer and a computer system incorporating such a processing unit
US20070043911A1 (en) * 2005-08-17 2007-02-22 Sun Microsystems, Inc. Multiple independent coherence planes for maintaining coherency
US20110197028A1 (en) * 2010-02-05 2011-08-11 Nokia Corporation Channel Controller For Multi-Channel Cache

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6192451B1 (en) * 1998-02-17 2001-02-20 International Business Machines Corporation Cache coherency protocol for a data processing system including a multi-level memory hierarchy
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
US7225300B1 (en) * 2004-09-15 2007-05-29 Azul Systems, Inc Duplicate snoop tags partitioned across multiple processor/cache chips in a multi-processor system
US8145870B2 (en) * 2004-12-07 2012-03-27 International Business Machines Corporation System, method and computer program product for application-level cache-mapping awareness and reallocation
US20060143384A1 (en) 2004-12-27 2006-06-29 Hughes Christopher J System and method for non-uniform cache in a multi-core processor
US7444494B2 (en) * 2005-05-31 2008-10-28 International Business Machines Corporation Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a history-based prediction
US8402201B2 (en) * 2006-12-06 2013-03-19 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery in solid-state storage
US8966491B2 (en) * 2012-04-27 2015-02-24 Oracle International Corporation System and method for implementing NUMA-aware reader-writer locks

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5901281A (en) * 1991-01-25 1999-05-04 Hitachi, Ltd. Processing unit for a computer and a computer system incorporating such a processing unit
JPH0816474A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd マルチプロセッサシステム
JPH10260897A (ja) * 1997-03-21 1998-09-29 Toshiba Corp キャッシュシステム
US20070043911A1 (en) * 2005-08-17 2007-02-22 Sun Microsystems, Inc. Multiple independent coherence planes for maintaining coherency
US20110197028A1 (en) * 2010-02-05 2011-08-11 Nokia Corporation Channel Controller For Multi-Channel Cache

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019049872A (ja) * 2017-09-11 2019-03-28 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP7100237B2 (ja) 2017-09-11 2022-07-13 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2020533705A (ja) * 2017-09-13 2020-11-19 グーグル エルエルシー 量子エラー訂正
US11740962B2 (en) 2017-09-13 2023-08-29 Google Llc Quantum error correction

Also Published As

Publication number Publication date
US20150309934A1 (en) 2015-10-29
JP6213366B2 (ja) 2017-10-18
US9606917B2 (en) 2017-03-28

Similar Documents

Publication Publication Date Title
US6636949B2 (en) System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing
US7814279B2 (en) Low-cost cache coherency for accelerators
US6675265B2 (en) Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants
JP3722415B2 (ja) 効率的なバス機構及びコヒーレンス制御を有する繰り返しチップ構造を有するスケーラブル共用メモリ・マルチプロセッサ・コンピュータ・システム
US6738868B2 (en) System for minimizing directory information in scalable multiprocessor systems with logically independent input/output nodes
US6925537B2 (en) Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants
JP5440067B2 (ja) キャッシュメモリ制御装置およびキャッシュメモリ制御方法
US8812786B2 (en) Dual-granularity state tracking for directory-based cache coherence
US20080098178A1 (en) Data storage on a switching system coupling multiple processors of a computer system
JPH05128071A (ja) 多重プロセツサ・システムの性能の最適化装置及び方法
JPH0340046A (ja) キャッシュメモリ制御方式および情報処理装置
JPH10124394A (ja) キャッシュ・コヒーレンシを維持する方法および装置
JP2002032265A (ja) キャッシュ・アクセス制御方式およびデータ処理システム
CN115292214A (zh) 页表预测方法、存储访问操作方法、电子装置和电子设备
JP4507563B2 (ja) マルチプロセッサシステム
WO2010038301A1 (ja) メモリアクセス方法及び情報処理装置
US20090240893A1 (en) Information processing device, memory control method, and memory control device
JP2007156821A (ja) キャッシュシステム及び共用2次キャッシュ
JP6213366B2 (ja) 演算処理装置とその制御方法
US7562190B1 (en) Cache protocol enhancements in a proximity communication-based off-chip cache memory architecture
KR19990085485A (ko) 분산 공유 메모리 시스템에서 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법
WO2024066195A1 (zh) 缓存管理方法及装置、缓存装置、电子装置和介质
WO2006040689A1 (en) Implementation and management of moveable buffers in cache system
US9983994B2 (en) Arithmetic processing device and method for controlling arithmetic processing device
WO2002008910A1 (en) Memory device storing data and directory information thereon, and method for providing the directory information and the data in the memory device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170110

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170815

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170904

R150 Certificate of patent or registration of utility model

Ref document number: 6213366

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150