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

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

Info

Publication number
JP5574039B2
JP5574039B2 JP2013504429A JP2013504429A JP5574039B2 JP 5574039 B2 JP5574039 B2 JP 5574039B2 JP 2013504429 A JP2013504429 A JP 2013504429A JP 2013504429 A JP2013504429 A JP 2013504429A JP 5574039 B2 JP5574039 B2 JP 5574039B2
Authority
JP
Japan
Prior art keywords
directory
information
cache
arithmetic processing
memory
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
JP2013504429A
Other languages
English (en)
Other versions
JPWO2012124034A1 (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
Publication of JPWO2012124034A1 publication Critical patent/JPWO2012124034A1/ja
Application granted granted Critical
Publication of JP5574039B2 publication Critical patent/JP5574039B2/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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、演算処理装置及び演算処理装置の制御方法に関する。
図1は、ディレクトリ方式の演算処理装置としてのノードを備えた情報処理装置としての共有メモリ型コンピュータのブロック構成図である。
複数のノード10−1〜10−4が相互結合網11によって相互に結合される。各ノード10−1〜10−4には、演算部であるCPU(Central Processing Unit)コア12−1〜12−nが設けられる。このように、1つのノードに複数のCPUコアが設けられる構成をマルチコア構成という。各CPUコア12−1〜12−nは、キャッシュ・コントローラ13を介して、データ・キャッシュ16に接続される。また、キャッシュ・コントローラ13には、ディレクトリ・キャッシュ14及び、メモリ・コントローラ15も接続される。キャッシュ・コントローラ13は、CPUコアによるデータ・キャッシュ16又は、ディレクトリ・キャッシュ14へのアクセスを制御する。メモリ・コントローラ15には、主記憶装置としてのメモリ17が接続される。メモリ・コントローラ15は、CPUコアによるメモリ17へのアクセスを制御する。ディレクトリ方式の共有メモリ型コンピュータにおいては、メモリ17に、メモリ・ディレクトリが設けられる。
メモリ・ディレクトリのディレクトリ情報には、メモリ17の各データが、他のノードにキャッシュされているキャッシュ状態を記録する。また、メモリ・ディレクトリのディレクトリ情報には、どのノードにキャッシュされているかを示す他のノードの識別情報が格納される。
ディレクトリ・キャッシュ14には、対応するメモリ・ディレクトリのアドレス情報、ディレクトリ情報のほかに、ディレクトリ情報が、ディレクトリ・キャッシュ上で更新されて、メモリ・ディレクトリのディレクトリ情報と一致していない可能性があることを示すダーティ情報が保持されている。ディレクトリ情報は、当該ディレクトリ情報に対応するメモリ・データが他のノードにキャッシュされているキャッシュ状態を示すステータス情報と、どのノードにキャッシュされるかを示す情報からなる。以下において、ディレクトリ情報を比較する場合には、ディレクトリ情報に含まれるステータス情報を比較するものとする。ダーティ情報は、ディレクトリ・キャッシュのディレクトリ情報が、メモリ・ディレクトリのディレクトリ情報と一致している場合には、C(クリーン)と設定され、異なっている場合にはD(ダーティ)と設定される。例えば、他ノードにキャッシュされていないデータのディレクトリ情報をディレクトリ・キャッシュ14に格納する場合には、そのディレクトリ情報のダーティ情報は、C(クリーン)と設定される。次に、他のノードから自ノードのメモリ17に対し、データの読み出しが行なわれた場合には、ディレクトリ・キャッシュ14の対応するディレクトリ情報のダーティ情報は、D(ダーティ)に設定される。その後、当該他のノードから自ノードのメモリ17に対しライトバックが行なわれた場合には、ディレクトリ・キャッシュ14の対応するディレクトリ情報はダーティとなる前の状態に戻るが、ディレクトリ情報に対応するダーティ情報は、D(ダーティ)の状態のままである。
図2は、従来のディレクトリ・キャッシュとメモリ・ディレクトリを含むメモリの構成を示した図である。
図2(a)は、ディレクトリ・キャッシュの図である。ディレクトリ・キャッシュには、各エントリの有効、無効を示す有効フラグと、当該エントリに対応するデータのメモリ内のアドレスと、当該データのディレクトリ情報と、当該エントリのディレクトリ情報が変更されたものであるか否かを示すダーティ情報が格納される。図2(a)では、ディレクトリ・キャッシュはダイレクト・マップ方式で構成されているように記載されているが、Nウェイセットアソシエイティブ方式を採用する場合には、図2(a)の構成が並列にN個用意される。
図2(b)は、メモリ・ディレクトリを有するメモリの図である。メモリには、メモリ・データが格納される。また、同時に、そのメモリ・データが、リモート・ノード(他ノード)のデータ・キャッシュに保持されているキャッシュ状態を示すディレクトリ情報が格納される。ディレクトリ情報には、データがリモート・ノードのデータキャッシュに保持されていないことを示すL(ローカル)、排他的にデータがリモート・ノードのデータ・キャッシュに保持されていることを示すREX(リモート・エクスクルーシブ)、リモート・ノードのデータ・キャッシュにデータが共有を許可する形態で保持されていることを示すRSH(リモート・シェア)のいずれかの情報と、どのノードがメモリ・データをキャッシュしているかを示す当該ノードの識別情報が格納される。ここで、排他的にデータがリモート・ノードのデータ・キャッシュに保持されるとは、当該データへのアクセスが当該リモート・ノードのみに限定されるという意味である。
ホーム・ノードあるいはリモート・ノードのCPUコアからメモリのメモリ・データにアクセスがあった場合には、ディレクトリ情報が更新されると共に、ディレクトリ・キャッシュにディレクトリ情報の内容が書き込まれる。
ダーティ情報は、ディレクトリ・キャッシュ上で、ディレクトリ情報が、一度でも更新されると、D(ダーティ)に更新されるため、その後の更新で、ディレクトリ・キャッシュのディレクトリ情報と、メモリ・ディレクトリのディレクトリ情報が一致したとしても、C(クリーン)に戻ることはない。
しかしながら、データ・キャッシュのデータと異なり、ディレクトリ・キャッシュのディレクトリ情報は、一度更新されたものが、再び、メモリ・ディレクトリと同じ元の状態に戻るケースが多い。
例えば、あるアドレスのメモリ上のデータが、任意のノードのデータ・キャッシュ上に保持されておらず、そのメモリのディレクトリ情報は、ディレクトリ・キャッシュ上に保持されていないケースを考える(通常の初期状態)。このとき、メモリ・ディレクトリのディレクトリ情報はL(ローカル)となっているが、このメモリ・データが、そのメモリのホーム・ノード(自ノード)と異なるリモート・ノード(他ノード)から参照を要求された場合、メモリ・データは、リモート・ノードのキャッシュ・メモリに登録され、メモリ・ディレクトリのディレクトリ情報は、ディレクトリ・キャッシュに、L(ローカル)->RSH(リモート・シェア)に更新して、登録される。また、ディレクトリ・キャッシュのダーティ情報は、D(ダーティ)に設定される。その後、リモート・ノードのデータ・キャッシュに登録されたメモリ・データが、リプレースによって、ホーム・ノードのメモリにフラッシュ・バックあるいは、ライト・バックされた場合、ディレクトリ・キャッシュのディレクトリ情報は、RSH->Lに更新されるため、ディレクトリ・キャッシュのディレクトリ情報と、メモリ・ディレクトリのディレクト情報は、一致した状態に戻る。しかしながら、ディレクトリ・キャッシュのダーティ情報は、一度、D(ダーティ)に設定されているため、C(クリーン)に戻ることができない。このため、メモリ・ディレクトリに対して、実際にはC(クリーン)であるディレクトリ情報が、ディレクトリ・キャッシュのディレクトリ情報のリプレース時に、メモリにライト・バックされる。このディレクトリ・キャッシュのディレクトリ情報のリプレース時のライト・バックは、C(クリーン)であるはずのディレクトリ情報のライト・バックとなるため無駄なメモリ・アクセスとなり、メモリ・スループット低下を引き起こす。
従来技術には、キャッシュ・データがローカル・ノードのデータなのかリモート・ノードのものかを識別できるようにローカル・ノード用とリモート・ノード用にそれぞれキャッシュTAGを持たせる技術等がある。
特開2009−223759号公報 特開2003−186742号公報
以下の実施形態では、無駄なメモリ・アクセスを削減し、メモリ・スループットを向上することのできるディレクトリ・キャッシュ制御装置が提供される。
本実施形態による演算処理装置は、相互結合網を介して他の演算処理装置に接続するとともに、主記憶装置に接続する演算処理装置において、データを保持するデータ・キャッシュと、前記主記憶装置が記憶するデータが他の演算処理装置のデータ・キャッシュに保持されているかを表すディレクトリ情報を保持するメモリ・ディレクトリ、保持するディレクトリ情報が前記メモリ・ディレクトリに保持されるディレクトリ情報と同一か否かを表すダーティ情報を保持すると共に、前記メモリ・ディレクトリからのディレクトリ情報を登録する場合、前記メモリ・ディレクトリのディレクトリ情報が、他の演算処理装置のデータ・キャッシュに保持されていない旨を表しているか否かを表すローカル情報を保持するディレクトリ・キャッシュと、前記ディレクトリ・キャッシュのディレクトリ情報が更新されて他の演算処理装置のデータ・キャッシュに保持されてない旨を表しているときに、他の演算処理装置のデータ・キャッシュに保持されていない旨を前記メモリ・ディレクトリのディレクトリ情報が表している旨を前記ディレクトリ・キャッシュのローカル情報が表す場合、前記ディレクトリ・キャッシュのダーティ情報を、保持するディレクトリ情報が前記メモリ・ディレクトリに保持されるディレクトリ情報と同一である旨を表すように設定する制御回路とを備える。
以下の実施形態によれば、無駄なメモリ・アクセスを削減し、メモリ・スループットを向上することのできるディレクトリ・キャッシュ制御装置が提供される。
ディレクトリ方式の共有メモリ型コンピュータのブロック構成図である。 従来のディレクトリ・キャッシュとメモリ・ディレクトリを含むメモリの構成を示した図である。 本実施形態のディレクトリ・キャッシュとメモリの構成図である。 本実施形態のディレクトリ・キャッシュ制御回路の構成図である。 ディレクトリ遷移状態生成回路の構成図である。 有効なエントリのうちクリーンなエントリを優先的にリプレース対象とするための構成図である。 プライオリティ・セレクタの構成図である。 LRU選択回路の構成図である。
本実施形態では、ディレクトリ・キャッシュにミスが発生し、メモリ・ディレクトリのディレクトリ情報をディレクトリ・キャッシュに登録するときに、メモリ・ディレクトリのディレクトリ情報が、L(ローカル)であるかどうかを示すLフラグ情報をディレクトリ・キャッシュに追加情報として登録する。
また、ディレクトリ・キャッシュのディレクトリ情報がL(ローカル)に更新されたとき、Lフラグ情報が”1”である場合(メモリ・ディレクトリのディレクトリ情報がL(ローカル)である場合)に、ディレクトリ・キャッシュのダーティ情報をC(クリーン)に変更する。
上記により、ディレクトリ・キャッシュの各エントリに対応するメモリ・ディレクトリのディレクトリ情報がL(ローカル)であるかどうかがわかるため、ディレクトリ・キャッシュのダーティ情報が、D(ダーティ)であったとしても、ディレクトリ・キャッシュのディレクトリ情報と、メモリ・ディレクトリのディレクトリ情報が、両方L(ローカル)になった場合に、ディレクトリ・キャッシュのダーティ情報を、C(クリーン)に変更することができる。
これにより、一度、ディレクトリ・キャッシュのディレクトリ情報が更新されて、ダーティ情報がD(ダーティ)に設定されたとしても、正しく、C(クリーン)に戻すことができる。このため、ディレクトリ・キャッシュのリプレース時に、必要の無いライト・バックを行なう必要が無く、無駄なメモリ・アクセスの発生を抑止することができ、メモリ・スループットの低下が抑えられる。
図3は、本実施形態のディレクトリ・キャッシュとメモリの構成図である。
図3(a)は、本実施形態のディレクトリ・キャッシュであり、図3(b)は、従来技術と共通のメモリの図である。
図3(b)に示されるように、メモリには、従来と同様、メモリ・データとそのディレクトリ情報が格納される。また、本実施形態のディレクトリ・キャッシュでは、図3(a)に示されるように、従来の有効フラグ、アドレス、ディレクトリ情報、ダーティ情報のほかに、当該エントリのディレクトリ情報に対応する、メモリのディレクトリ情報がL(ローカル)であるか否かを示すLフラグが格納される。ディレクトリ・キャッシュは、図3(a)においては、ウェイが1つのダイレクト・マップ方式を示しているが、N個のウェイを用意することにより、Nウェイセットアソシエイティブ方式を採用することも可能である。
図4は、本実施形態のディレクトリ・キャッシュ制御回路の構成図である。
CPUコアからのメモリ・リクエスト・アドレスは、メモリ20に送られると共に、ディレクトリ・キャッシュ21にも送られる。メモリ・リクエスト・アドレスは、ディレクトリ・キャッシュ21のエントリにアクセスするために使用される(35)と共に、比較器22にも入力される。また、比較器22には、アクセス35で索引したエントリのアドレスが入力される。比較器22は、メモリ・リクエスト・アドレスと、ディレクトリ・キャッシュ21から読み出されたアドレスが等しいか否かを比較し、等しければ”1”を出力する。論理積回路23は、比較器22の出力と、有効フラグを入力し、論理積をとって結果を出力する。すなわち、論理積回路23では、メモリ・リクエスト・アドレスで索引されたエントリについて、有効フラグが”1”(有効なエントリ)で、かつ、エントリに保持されたアドレスがメモリ・リクエスト・アドレスと等しい場合に、”1”を出力する。論理積回路23の出力は、セレクタ24〜26、28、29の切り替え信号としてセレクタ24〜26、28、29に入力される。セレクタ24〜26、28、29の○印は、切り替え信号が”1”のときに選択される側の信号を示している。
セレクタ24は、論理積回路23の出力が”0”、すなわち、索引されたエントリについて、有効フラグが”1”で、かつ、保持されたアドレスが等しいエントリがなかった場合には、セレクタ24の入力のうち、”1”の値を選択して、当該エントリの有効フラグを”1”に設定する。論理積回路23の出力が”1”であった場合、すなわち、索引されたエントリについて、有効フラグが”1”で、かつ、保持されたアドレスが等しいアドレスが等しいエントリがあった場合には、当該エントリから読み出された有効フラグがそのまま、また有効フラグに設定される。他のセレクタも同様であり、○印の付いている入力は、論理積回路23の出力が”1”のとき選択され、”0”の場合には、他方の入力が選択される。
セレクタ25には、メモリ・リクエスト・アドレスと、ディレクトリ・キャッシュ21から読み出されたアドレスが入力され、論理積回路23の出力を切り替え信号として、いずれかを選択する。論理積回路23の出力が”1”である場合は、ディレクトリ・キャッシュ21に、メモリ・リクエスト・アドレスでリクエストされたアドレスを保持する有効なエントリが存在することを示している。したがって、論理積回路23の出力が”1”である場合には、ディレクトリ・キャッシュ21のアドレス領域から読み出されたアドレスは、そのままもとのエントリのアドレス領域に書き戻される。論理積回路23の出力が”0”の場合には、メモリ・リクエスト・アドレスでリクエストされたアドレスの有効なエントリが存在しないことを示す。したがって、この場合には、現在アクセスされているエントリに、新たに有効なエントリを作成するため、メモリ・リクエスト・アドレスをアドレス領域に書き込む。
セレクタ26には、メモリ・リクエスト・アドレスを使ってメモリ20から読み出されたディレクトリ情報と、ディレクトリ・キャッシュ21から読み出されたディレクトリ情報が入力される。セレクタ26は、論理積回路23の出力が”0”のとき、メモリ20のメモリ・ディレクトリから読み出したディレクトリ情報を出力し、”1”のとき、ディレクトリ・キャッシュ21から読み出したディレクトリ情報を出力する。ディレクトリ遷移状態生成回路27は、セレクタ26の出力を入力し、要求元ノードから出力されるメモリ・リクエスト・コマンドに従って、ディレクトリ情報の内容を書き換え、ディレクトリ・キャッシュ21のディレクトリ領域に書き込む。ディレクトリ遷移状態生成回路27の詳細は、後述する。
セレクタ29には、メモリ20のメモリ・ディレクトリから読み出したディレクトリがL(ローカル)となっているか否かを示す比較器36の出力と、Lフラグ領域から読み出したLフラグの値とが入力される。論理積回路23の出力が”1”のとき、読み出されたLフラグの値が出力され、”0”のとき、比較器36の比較結果が出力される。比較器36は、メモリ・ディレクトリから読み出されたディレクトリがL(ローカル)の場合に、”1”を出力し、その他の場合には、”0”を出力する。したがって、ディレクトリ・キャッシュ21に新たに有効なエントリを生成するときであって、メモリ・ディレクトリのディレクトリがL(ローカル)となっている場合に、Lフラグは”1”に設定される。
セレクタ28には、”0”と、ディレクトリ・キャッシュ21のダーティ情報領域から読み出した値が入力される。論理積回路23の出力が”0”のとき、セレクタ28は”0”を出力し、論理積回路23の出力が”1”のとき、セレクタ28は、ディレクトリ・キャッシュ21のダーティ情報領域から読み出した値を出力する。セレクタ28の出力は、論理和回路31に入力される。また、論理和回路31には、比較器30の出力も入力される。比較器30は、ディレクトリ遷移状態生成回路27がメモリ・リクエスト・コマンドに従ってディレクトリ情報を書き換える前と後のディレクトリ情報の比較を行なう。比較器30は、ディレクトリ遷移状態生成回路27の前後のディレクトリ情報が等しくなければ、”1”を、等しければ”0”を出力する。論理和回路31は、ディレクトリ遷移状態生成回路27の前後のディレクトリ情報が等しくないか、ダーティ情報がD(ダーティ)を示す”1”となっている場合に、”1”を出力する。論理和回路31の出力は、論理積回路32に入力される。また、ディレクトリ遷移状態生成回路27の出力は、比較器34に入力される。比較器34では、ディレクトリ遷移状態生成回路27の出力が、L(ローカル)となっているか否かの比較結果を出力する。L(ローカル)となっている場合には、比較器34は、”1”を出力し、L(ローカル)となっていない場合には、比較器34は、”0”を出力する。比較器34の出力は、論理積回路33に入力される。論理積回路33には、更に、Lフラグの値(Lの場合”1”、その他の場合”0”)が入力される。論理積回路33は、読み出したLフラグの値が”1”であり、かつ、ディレクトリ遷移状態生成回路27の出力がL(ローカル)となっている場合に、”1”を出力する。論理積回路33の出力は、論理反転されて、論理積回路32に入力される。論理積回路32は、論理和回路31の出力が”1”、かつ、論理積回路33の出力が”0”のとき、”1”を出力し、ダーティ情報を”1”に設定する。すなわち、メモリ・リクエストによって、ディレクトリ情報が変化し、変化後のディレクトリがL(ローカル)ではない、あるいは、Lフラグが”1”でない場合、ダーティ情報に”1”(状態がD(ダーティ)であることを示す)を設定する。ディレクトリの変化の前のダーティ情報が”1”であり、変化後のディレクトリがL(ローカル)となっており、かつLフラグが”1”の場合に、ダーティ情報を”0”(状態がC(クリーン)であることを示す)に設定する。また、ディレクトリ情報がディレクトリ遷移状態生成回路27の前後で変化していない場合には、ダーティ情報はそのままにしておく。
なお、図4においては、ディレクトリ情報の比較や、ディレクトリ情報の選択などがあるが、これらにおいては、比較器30やセレクタ25、26に2ビット以上の信号が入力され、比較されたり、選択出力されたりする。
図5は、ディレクトリ遷移状態生成回路の構成図である。
入力されるディレクトリ情報は、他ノードにキャッシュされているキャッシュ状態を表すdirstatと、どのノードにキャッシュされているかを示すdirvecとからなる。dirvecは、例えば、ノードの数が16個ある場合には、ビット0からビット15までの16ビットの”0”と”1”の配列からなり、ノード番号が2番のノードにキャッシュされている場合には、ビット2を”1”とした”0000000000000100”という配列で表現される。dirstatは、前述のように、データの状態を示すL(ローカル)、RSH(リモートシェア)、REX(リモートエクスクルーシブ)からなる。
メモリ・リクエスト・コマンドは、オペコードopcodeと、コマンドの発行元のノードの識別子srcidからなる。opcodeは、排他的にデータを要求元ノードのキャッシュに格納する命令であるMI_EXと、必要な場合には排他的な処理に切り替えられるが、複数のノードで共有してデータをキャッシュに格納する命令であるMI_SHと、排他的な処理は行わない、複数のノードでデータを共有してキャッシュに格納する命令であるMI_SH_Aが、キャッシュへのデータの読み込み命令としてある。また、opcodeには、キャッシュのデータを単純にフラッシュ・バックする命令であるFBKと、キャッシュのデータをライト・バックする命令であるWBKとがある。
dirvecに対し、popc41において、ビット”1”が立っている個数を数えるポピュレーション演算が行われる。ビット”1”が立っている個数は、データが共有されているノードの数となる。dirstat、popc41の出力、及び、opcodeは、遷移状態メモリ40に入力され、遷移後のdirstatが索引される。
また、srcidは、デコーダ42において、メモリ・リクエスト・コマンドの発行元ノードの番号から、dirvecと同様な”0”と”1”の配列に変換される。例えば、命令の発行元のノード番号が5の場合であって、ノード数が16個である場合には、”0000000000100000”という配列に変換される。デコーダ42の出力は、論理和回路44に入力されると共に、論理反転されて論理積回路43に入力される。論理和回路44と論理積回路43には、dirvecも入力される。論理和回路44はdirvecにおいて、コマンドの発行ノードに対応するビットを”1”に変更したコマンドを出力する。論理積回路43は、dirvecにおいて、コマンド発行ノードに対応するビットを”0”に変更したものを出力する。論理和回路44は、コマンド発行元ノードがデータをキャッシュしたことを示すdirvecを出力し、論理積回路43は、コマンド発行元ノードがキャッシュ・データを開放したことを示すdirvecを出力する。論理積回路43と論理和回路44の出力は、セレクタ45に入力される。セレクタ45は、遷移状態メモリ40からのset信号を入力し、set信号が”0”のときは、論理積回路43の出力を、”1”のときは、論理和回路44の出力を選択し、dirvecとして出力する。
遷移状態メモリ40のset信号は、メモリ・リクエスト・コマンドのopcodeが、キャッシュにデータを書き込む命令MI_SH_A、MI_SH、MI_EXの場合には、”1”に、フラッシュ・バック、あるいは、ライト・バックする命令FBK、WBKの場合には、”0”になっている。
opcodeとして、MI_SH_Aが発行された場合には、dirstatは、最初にどのような状態であろうと、結果としてデータを共有することになるので、次のdirstatは、RSHとなる。また、MI_EXが発行された場合には、dirstatは、最初にどのような状態であろうと、結果として排他的にデータを他のノードのキャッシュに持つことになるので、次のdirstatは、REXとなる。MI_SHが発行された場合には、最初dirstatがLであった場合には、キャッシュ・データを保持するノードが存在しないので、排他的なデータのキャッシュへの登録として処理し、次のdirstatは、REXとする。MI_SHが発行されるその他の場合は、キャッシュ・データが共有される状態となるので、次のdirstatは、RSHとなる。FBKが発行された場合には、最初dirstatがRSHで、popcの出力が”1”の場合には、キャッシュ・データを保持するノードがなくなるので、次のdirstatは、Lとなる。FBKが発行された場合で、最初のdirstatがRSHで、かつ、popcの出力が2以上である場合には、このコマンド実行後もキャッシュ・データを保持するノードが残るので、次のdirstatは、RSHとなる。最初のdirstatがREXで、FBKあるいはWBKが発行された場合には、キャッシュ・データを保持するノードがなくなるので、次のdirstatは、Lとなる。
本実施形態では、ディレクトリ・キャッシュのダーティ情報が、D(ダーティ)であったとしても、ディレクトリ・キャッシュのディレクトリ情報と、メモリ・ディレクトリのディレクトリ情報が、両方L(ローカル)になった場合に、ディレクトリ・キャッシュのダーティ情報を、C(クリーン)に変更することができる。この動作は、図4の比較器30、34、論理和回路31、論理積回路32、33による。しかしながら、ディレクトリ・キャッシュのリプレースメント方式が、最も長い期間使用されていないエントリを選択するLRU(Least Recently Used)方式であった場合、このクリーンなエントリがリプレース対象として、積極的に選択されないため、メモリ・アクセスを発生させるダーティなエントリがリプレース対象として選択されるケースが存在する。すなわち、ダーティなエントリは、メモリのディレクトリ情報とディレクトリ・キャッシュのディレクトリ情報が異なっているので、ディレクトリ・キャッシュからリプレースするためには、ディレクトリ・キャッシュの内容をメモリのメモリ・ディレクトリに書き戻さなくてはならない。このとき、ダーティなディレクトリ情報をリプレースするために、ライト・バックが行なわれなければならない。したがって、メモリ・アクセスが発生することになる。ところが、クリーンなディレクトリ・キャッシュのエントリは、メモリ・ディレクトリのディレクトリと同じなので、ライト・バックする必要が無く、新たなメモリ・アクセスを発生させる必要が無い。
ここで、クリーンなエントリをリプレース対象とすることは、メモリ・アクセスの発生を低減させる効果があるが、このクリーンなエントリがLRUでない場合でも、性能ペナルティが小さい。
ディレクトリ・キャッシュのクリーンなエントリが、リプレースされた場合、ディレクトリ情報はL(ローカル)であるため、このアドレスのメモリ・データは、任意のノードのキャッシュ・メモリ上に保持されていないか、ホーム・ノードのプロセッサのキャッシュ・メモリに保持されているかのどちらかである。
前者のケースでは、次回、同一アドレスが、ホーム・ノード、または、リモート・ノードから参照要求された場合、ディレクトリ・キャッシュにミスするが、キャッシュ・メモリにもミスするため、メモリ・アクセス要求がもともと必要となる。このため、メモリ・アクセスのレイテンシやスループットのペナルティが発生しない。
後者のケースでは、次回、同一アドレスがリモート・ノードから参照要求された場合、ホーム・ノードのキャッシュアクセス時に、ディレクトリ情報がL(ローカル)であることがわかるため、キャッシュ・メモリからデータを転送することが可能であり、メモリ・データ取得のためのメモリ・アクセスが発生しない。また、ディレクトリ・キャッシュへの登録データも、キャッシュ・メモリへのアクセスに伴う情報から生成可能であるため、ディレクトリ情報取得のためのメモリ・アクセスも発生しない。唯一の性能ペナルティは、ディレクトリ・キャッシュにミスしているために、ディレクトリ・キャッシュのリプレース対象を、メモリにライト・バックする必要があるケースが存在することである。
したがって、本実施形態では、ディレクトリ・キャッシュのリプレース対象を決定するときに、ディレクトリ・キャッシュのダーティ情報がC(クリーン)であるエントリを、優先的に選択するようにする。
このようにすることで、メモリ・アクセスを発生しないクリーンエントリが優先的にリプレース対象となるため、メモリ・アクセスの発生を低減することができ、メモリ・スループットの低下が抑えられる。
図6は、有効なエントリのうちクリーンなエントリを優先的にリプレース対象とするための構成図である。
ここでは、ディレクトリ・キャッシュ21は、4つのウェイ、ウェイ0〜ウェイ3からなるとしている。各ウェイには、有効フラグ、アドレス、ディレクトリ、ダーティ情報、Lフラグのほかに、ウェイの中でどの順に古いエントリを保持しているかを示すエイジ情報が保持される。例えば、ウェイ3が最も古く、ついで、ウェイ2、ウェイ1、ウェイ0の順に古いエントリを保持しているとした場合には、ウェイ3には、”3”が、ウェイ2には、”2”が、ウェイ1には、”1”が、ウェイ0には、”0”がエイジ情報として保持される。エイジ情報の値の大きいものがより古いものとなる。アクセスの順番としては、全てのウェイの所定のインデックスのエントリが特定され、次に、どのウェイをアクセスするかが決定される。したがって、エイジ情報も、同じインデックスの異なるウェイのエントリ間でもっとも古いものから順番に番号を割り当てるようにする。エイジ情報は、ディレクトリが更新されると、もっとも小さい値に書き換えられ、他のウェイのエントリのエイジ情報は、順次繰り上げるようにして設定する。
ウェイ0〜3の有効フラグは、インバータ50によって論理反転され、論理和回路52とプライオリティ・セレクタ55に入力される。論理和回路52は、ウェイ0〜3のいずれかに有効でないエントリ(有効フラグが”0”)があった場合に、”1”を出力する。プライオリティ・セレクタ55は、有効でないエントリを持つウェイを選択して、セレクタ57に入力する。セレクタ57は、論理和回路52の出力が”1”の場合に、プライオリティ・セレクタ55の出力を選択して、リプレース・ウェイ選択情報として出力する。論理和回路52の出力が”0”の場合には、セレクタ57は、LRU選択回路56からの出力をリプレース・ウェイ選択情報として出力する。
各ウェイのダーティ情報は、インバータ51によって論理反転され、論理和回路53と論理和回路54に入力される。論理和回路53は、入力が1つでも”1”である、すなわち、ダーティ情報が1つでも”0”である(C(クリーン)である)場合には、”1”を出力する。論理和回路53の出力は、論理反転され、論理和回路54に入力される。各論理和回路54は、対応するダーティ情報が”0”の場合か、全てのウェイのダーティ情報が”1”(D(ダーティ)である)の場合に、”1”を出力する。論理和回路54の出力とエイジ情報の値がLRU選択回路56に入力される。LRU選択回路56は、ダーティ情報が”0”、すなわち、クリーンなエントリを持つウェイのうち、もっともエイジ情報が大きい、すなわち、古いエントリを持つウェイを選択する信号を出力する。どのウェイにもクリーンなエントリが無い場合には、最も古いエントリを持つウェイを選択する信号を出力する。
LRU選択回路56のウェイ選択信号は、セレクタ57に入力され、前述のように、どのウェイにも無効なエントリが無い場合には、LRU選択回路56が決定したウェイ選択信号が、リプレース・ウェイ選択情報として出力される。リプレース・ウェイ選択情報は、例えば、図6のように、ウェイが4つの場合は、4本の信号線があり、選択するウェイに対応する信号線に”1”の信号が送出される。
図7は、プライオリティ・セレクタの構成図である。
入力in0〜in3は、それぞれ、ウェイ0〜3の有効フラグを論理反転したものである。入力in0は、そのまま、出力out0とされるとともに、論理積回路60、61、62には、論理反転されて入力される。これにより、入力in0が”1”のときは、出力out0が”1”となると共に、他の出力out1〜out3が”0”とされる。入力in1は、論理積回路60に入力されると共に、論理反転されて、論理積回路61、62に入力される。入力in2は、論理積回路61に入力されると共に、論理反転されて、論理積回路62に入力される。入力in3は、論理積回路62に入力される。以上の構成により、入力in0〜in3のうち、”1”となっているものに対応して、出力out0〜out3が”1”となる。これは、ウェイ0〜3のエントリのうち、無効となっているエントリを1つだけ選択する信号を生成するものである。
図8は、LRU選択回路の構成図である。
入力age0〜age3は、それぞれウェイ0〜3のエイジ情報の値である。比較器70−1は、入力age0が入力age1より大きいか、比較器70−2は、入力age0が入力age2より大きいか、比較器70−3は、入力age0が入力age3より大きいかを比較している。また、比較器70−4は、入力age1が入力age2より大きいか、比較器70−5は、入力age1が入力age3より大きいか、比較器70−6は、入力age2が入力age3より大きいかを比較している。いずれも、図8において、比較器70−1〜70−6の上側の入力の方が下側の入力の方より大きい場合に、比較器70−1〜70−6の出力は、”1”となる。
そして、図6の論理和回路54からの入力in0〜in3と、比較器70−1〜70−6の比較結果が論理回路71−1〜71−4に入力される。入力in0〜in3は、それぞれウェイ0〜3に対応する論理和回路54からの入力である。入力in0〜in3は、ディレクトリ・キャッシュにクリーンなエントリを持つウェイがある場合に、”1”となる。また、ディレクトリ・キャッシュにクリーンなエントリを持つウェイが無い場合には、全ての入力in0〜in3が”1”になる。論理回路71−1は、ウェイ0のエイジ情報age0の値がもっとも大きく、すなわち、最も古く、かつ、入力in0が”1”の場合に、out0として、”1”を出力する。論理回路71−2は、ウェイ1のエイジ情報age1の値がもっとも大きく、かつ、入力in1が”1”の場合に、out1として、”1”を出力する。論理回路71−3は、ウェイ2のエイジ情報age2の値がもっとも大きく、かつ、入力in2が”1”の場合に、out2として、”1”を出力する。論理回路71−4は、ウェイ3のエイジ情報age3の値がもっとも大きく、かつ、入力in3が”1”の場合に、out3として、”1”を出力する。ここでの動作は、入力in0〜in3が”1”となっているもののうち、エイジ情報がもっとも古いものを選択する動作である。
10−1〜10−4 ノード
11 相互結合網
12−1〜12−n (CPU)コア
13 キャッシュ・コントローラ
14、21 ディレクトリ・キャッシュ
15 メモリ・コントローラ
16 データ・キャッシュ
17、20 メモリ(含メモリ・ディレクトリ)
22、30、34、36、70−1〜70−6 比較器
23、32、33、43、60、61、62 論理積回路
24、25、26、28、29、45、57 セレクタ
27 ディレクトリ遷移状態生成回路
31、44、52、53、54 論理和回路
40 遷移状態メモリ
41 popc
42 デコーダ
50、51 インバータ
55 プライオリティ・セレクタ
56 LRU選択回路
71−1〜71−4 論理回路

Claims (9)

  1. 相互結合網を介して他の演算処理装置に接続するとともに、主記憶装置に接続する演算処理装置において、
    データを保持するデータ・キャッシュと、
    前記主記憶装置が記憶するデータが他の演算処理装置のデータ・キャッシュに保持されているかを表すディレクトリ情報を保持するメモリ・ディレクトリ
    保持するディレクトリ情報が前記メモリ・ディレクトリに保持されるディレクトリ情報と同一か否かを表すダーティ情報を保持すると共に、前記メモリ・ディレクトリからのディレクトリ情報を登録する場合、前記メモリ・ディレクトリのディレクトリ情報が、他の演算処理装置のデータ・キャッシュに保持されていない旨を表しているか否かを表すローカル情報を保持するディレクトリ・キャッシュと、
    前記ディレクトリ・キャッシュのディレクトリ情報が更新されて他の演算処理装置のデータ・キャッシュに保持されてない旨を表しているときに、他の演算処理装置のデータ・キャッシュに保持されていない旨を前記メモリ・ディレクトリのディレクトリ情報が表している旨を前記ディレクトリ・キャッシュのローカル情報が表す場合、前記ディレクトリ・キャッシュのダーティ情報を、保持するディレクトリ情報が前記メモリ・ディレクトリに保持されるディレクトリ情報と同一である旨を表すように設定する制御回路と、
    を備えることを特徴とする演算処理装置。
  2. 前記演算処理装置において、
    前記ディレクトリ・キャッシュのいずれかのエントリをリプレースする場合、保持するディレクトリ情報が前記メモリ・ディレクトリに保持されるディレクトリ情報と同一である旨がダーティ情報で表されているエントリをリプレースされるエントリとして選択することを特徴とする請求項1記載の演算処理装置。
  3. 前記演算処理装置において、
    前記ディレクトリ・キャッシュはさらに、保持するディレクトリ情報が無効である旨を表す無効情報を保持し、
    前記ディレクトリ・キャッシュのいずれかのエントリをリプレースする場合、保持するディレクトリ情報が無効である旨が無効情報に設定されているエントリをリプレースされるエントリとして選択することを特徴とする請求項2記載の演算処理装置。
  4. 前記演算処理装置において、
    前記ディレクトリ・キャッシュのいずれかのエントリをリプレースする場合、保持するディレクトリ情報が前記メモリ・ディレクトリに保持されるディレクトリ情報と同一である旨がダーティ情報で表されているエントリが存在しない場合、もっとも古いディレクトリ情報を保持するエントリをリプレースされるエントリとして選択することを特徴とする請求項2記載の演算処理装置。
  5. 前記演算処理装置において、
    前記ディレクトリ・キャッシュは、さらに、ディレクトリ情報の古さを示すエイジ情報を保持することを特徴とする請求項4記載の演算処理装置。
  6. 前記演算処理装置において、
    前記ディレクトリ・キャッシュは、複数のウェイを有することを特徴とする請求項1記載の演算処理装置。
  7. 前記演算処理装置において、
    前記ディレクトリ情報は、前記主記憶装置に格納される、対応するメモリ・データが他の演算処理装置に保持されている状態を示す状態情報と、前記対応するメモリ・データを保持する演算処理装置を識別する識別情報を含むことを特徴とする請求項1記載の演算処理装置。
  8. 前記演算処理装置において、
    前記状態情報は、前記ローカル情報、前記メモリ・データが他の演算処理装置のデータ・キャッシュのみに保持されている旨を示すリモート排他情報と、前記メモリ・データが他の演算処理装置のデータ・キャッシュとの間で共有されている旨を示すリモート供給情報のいずれかであることを特徴とする請求項7記載の演算処理装置。
  9. 相互結合網を介して他の演算処理装置に接続し、主記憶装置に接続するとともに、データを保持するデータ・キャッシュと、前記主記憶装置が記憶するデータが、他の演算処理装置のデータ・キャッシュに保持されているかを表すディレクトリ情報を保持するメモリ・ディレクトリ、保持するディレクトリ情報が前記メモリ・ディレクトリに保持されるディレクトリ情報と同一か否かを表すダーティ情報を保持するディレクトリ・キャッシュを有する演算処理装置の制御方法において、
    前記メモリ・ディレクトリからのディレクトリ情報を登録する場合、前記メモリ・ディレクトリのディレクトリ情報が、他の演算処理装置のデータ・キャッシュに保持されていない旨を表しているか否かを表すローカル情報を前記ディレクトリ・キャッシュに保持し、
    前記ディレクトリ・キャッシュのディレクトリ情報が更新されて他の演算処理装置のデータ・キャッシュに保持されてない旨を表しているときに、他の演算処理装置のデータ・キャッシュに保持されていない旨を前記メモリ・ディレクトリのディレクトリ情報が表している旨を前記ディレクトリ・キャッシュのローカル情報が表す場合、前記ディレクトリ・キャッシュのダーティ情報を、保持するディレクトリ情報が前記メモリ・ディレクトリに保持されるディレクトリ情報と同一である旨を表すように設定することを特徴とする演算処理装置の制御方法。
JP2013504429A 2011-03-11 2011-03-11 演算処理装置及び演算処理装置の制御方法 Active JP5574039B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/055845 WO2012124034A1 (ja) 2011-03-11 2011-03-11 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JPWO2012124034A1 JPWO2012124034A1 (ja) 2014-07-17
JP5574039B2 true JP5574039B2 (ja) 2014-08-20

Family

ID=46830168

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013504429A Active JP5574039B2 (ja) 2011-03-11 2011-03-11 演算処理装置及び演算処理装置の制御方法

Country Status (4)

Country Link
US (1) US9430397B2 (ja)
JP (1) JP5574039B2 (ja)
CN (1) CN103403690B (ja)
WO (1) WO2012124034A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9952973B2 (en) 2015-10-29 2018-04-24 Western Digital Technologies, Inc. Reducing write-backs to memory by controlling the age of cache lines in lower level cache

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04315235A (ja) * 1991-04-12 1992-11-06 Fuji Xerox Co Ltd キャッシュメモリにおけるキャッシュデータリプレース方法及びキャッシュデータリプレース装置
JPH05120139A (ja) * 1991-10-24 1993-05-18 Hitachi Ltd キヤツシユメモリ装置
WO2010052799A1 (ja) * 2008-11-10 2010-05-14 富士通株式会社 情報処理装置及びメモリ制御装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6721852B2 (en) 2001-10-17 2004-04-13 Sun Microsystems, Inc. Computer system employing multiple board sets and coherence schemes
US7412620B2 (en) * 2005-06-23 2008-08-12 International Business Machines Corporation Method for testing ability to recover from cache directory errors
US7502889B2 (en) * 2005-12-30 2009-03-10 Intel Corporation Home node aware replacement policy for caches in a multiprocessor system
JP2009223759A (ja) 2008-03-18 2009-10-01 Fujitsu Ltd 情報処理装置,メモリ制御方法およびメモリ制御装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04315235A (ja) * 1991-04-12 1992-11-06 Fuji Xerox Co Ltd キャッシュメモリにおけるキャッシュデータリプレース方法及びキャッシュデータリプレース装置
JPH05120139A (ja) * 1991-10-24 1993-05-18 Hitachi Ltd キヤツシユメモリ装置
WO2010052799A1 (ja) * 2008-11-10 2010-05-14 富士通株式会社 情報処理装置及びメモリ制御装置

Also Published As

Publication number Publication date
JPWO2012124034A1 (ja) 2014-07-17
US9430397B2 (en) 2016-08-30
US20130346702A1 (en) 2013-12-26
CN103403690B (zh) 2016-08-31
CN103403690A (zh) 2013-11-20
WO2012124034A1 (ja) 2012-09-20

Similar Documents

Publication Publication Date Title
US6725343B2 (en) System and method for generating cache coherence directory entries and error correction codes in a multiprocessor system
US8799588B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
TWI391821B (zh) 在互連結構上發佈請求而無參照基於標籤快取狀態的低階快取之處理單元及資料處理系統與方法
US7861055B2 (en) Method and system for on-chip configurable data ram for fast memory and pseudo associative caches
US8683140B2 (en) Cache-based speculation of stores following synchronizing operations
US8799589B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads
US7447845B2 (en) Data processing system, processor and method of data processing in which local memory access requests are serviced by state machines with differing functionality
US20150058570A1 (en) Method of constructing share-f state in local domain of multi-level cache coherency domain system
US8185692B2 (en) Unified cache structure that facilitates accessing translation table entries
TW201011537A (en) Apparatus and method for ensuring data coherency within a cache memory hierarchy of a microprocessor
JPWO2010035426A1 (ja) バッファメモリ装置、メモリシステム及びデータ転送方法
US10169236B2 (en) Cache coherency
US20100217939A1 (en) Data processing system
CN112955876A (zh) 具有对写入操作的改进处理的用于数据处理网络的i/o相干请求节点
US10649901B2 (en) Victim cache line selection
US7555610B2 (en) Cache memory and control method thereof
JP2007156821A (ja) キャッシュシステム及び共用2次キャッシュ
JP2010244327A (ja) キャッシュシステム
JP5574039B2 (ja) 演算処理装置及び演算処理装置の制御方法
US9983994B2 (en) Arithmetic processing device and method for controlling arithmetic processing device
US20140289474A1 (en) Operation processing apparatus, information processing apparatus and method of controlling information processing apparatus
US6996675B2 (en) Retrieval of all tag entries of cache locations for memory address and determining ECC based on same
JP2002055881A (ja) キャッシュ一致制御の実現方法およびこれを用いたデータ処理装置
JP2014182488A (ja) 演算処理装置、及び演算処理装置の制御方法
US10853267B2 (en) Adaptive method for selecting a cache line replacement algorithm in a direct-mapped cache

Legal Events

Date Code Title Description
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: 20140603

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140616

R150 Certificate of patent or registration of utility model

Ref document number: 5574039

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150