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

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

Info

Publication number
JP7139719B2
JP7139719B2 JP2018121355A JP2018121355A JP7139719B2 JP 7139719 B2 JP7139719 B2 JP 7139719B2 JP 2018121355 A JP2018121355 A JP 2018121355A JP 2018121355 A JP2018121355 A JP 2018121355A JP 7139719 B2 JP7139719 B2 JP 7139719B2
Authority
JP
Japan
Prior art keywords
data
cache memory
information
cache
predetermined
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
JP2018121355A
Other languages
English (en)
Other versions
JP2020003959A (ja
Inventor
孝仁 平野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018121355A priority Critical patent/JP7139719B2/ja
Priority to US16/419,468 priority patent/US10983914B2/en
Publication of JP2020003959A publication Critical patent/JP2020003959A/ja
Application granted granted Critical
Publication of JP7139719B2 publication Critical patent/JP7139719B2/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
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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

Description

本発明は、情報処理装置、演算処理装置及び情報処理装置の制御方法に関する。
プロセッサ内部のキャッシュメモリは、主記憶メモリへのアクセスレイテンシを隠蔽するために用いられる。プロセッサは、主記憶メモリに近い側に比較的大容量の2次キャッシュ(L2(Level-2)キャッシュ)とコア内部に高速アクセスできる1次キャッシュ(L1(Level-1)キャッシュ)とを有する。このように、容量の異なる複数のキャッシュを有する構成は、階層キャッシュと呼ばれる。
ここで、1次キャッシュでキャッシュミスが発生すると、2次キャッシュに対してムーブイン(MI:Move In)要求が行われる。そして、2次キャッシュからキャッシュミスしたデータが1次キャッシュへ登録される。この時、ライトバック方式の階層キャッシュ間において、データのコヒーレンシを維持することが要求される。
ライトバック方式の階層キャッシュを有するプロセッサは、例えば、1次キャッシュ及び2次キャッシュにおいてMESI(Modified Exclusive Shared Invalid)プロトコルを採用し、階層間でのデータのコヒーレンシを維持する。MESIプロトコルとは、キャッシュステートと呼ばれるキャッシュメモリにおけるデータの状態を用いてコヒーレンシを維持するためのプロトコルである。キャッシュステートは、TAG-RAM(Random Access Memory)で管理されている。プロセッサは、MESIプロトコルを実行する場合、TAG-RAMにアクセスすることでキャッシュステートを監視する。
MESIプロトコルにおいて、キャッシュは以下の4つの状態のいずれかにある。M(Modify)ステートは、ストア命令などによりキャッシュが更新されたことを示しており、更新されたデータについてライトバックが要求される状態である。E(Exclusive)ステートは、ストア命令を実行するためにキャッシュが排他権を有しており、ストア実行前であればライトバックは行わなくてよい状態である。ただし、ストア実行後であれば、キャッシュがEステートからMステートに遷移して、ライトバックを要求する状態となる。S(Share)ステートは、共有型でデータを保持しておりライトバックを行わなくてよい状態である。I(Invalid)ステートは、キャッシュのデータが無効であることを示しており、ライトバックを行わなくてよい状態である。
1次キャッシュ管理部は、1次キャッシュでキャッシュミスが発生すると、データ登録に使用する物理アドレス及びリプレースWAY情報を2次キャッシュ管理部に通知する。2次キャッシュ管理部は、1次キャッシュのキャッシュステートがIステートであるか、又は、Mステート、SステートもしくはEステートのいずれかであるかを管理する。2次キャッシュ管理部は、1次キャッシュがIステートであれば、元データの移動が付随しないデータ格納要求を1次キャッシュ管理部に発行する。また、1次キャッシュがMステート、SステートもしくはEステートのいずれかであれば、2次キャッシュ管理部は、元データの移動が付随するデータ格納要求を1次キャッシュ管理部に対して発行する。この場合、データ格納要求には、物理アドレス、リプレースWAY情報及びコード情報が含まれる。そして、2次キャッシュ管理部は、データを読み出し、1次キャッシュへの新たなデータの転送を行う。
1次キャッシュ管理部は、元データの移動が付随しないデータ格納要求を受信した場合、1次キャッシュのリプレース対象部録の状態はIステートであるので、無効化処理を行わずにプロトコルチェックを行う。これに対して、元データの移動が付随するデータ格納要求を受信した場合、1次キャッシュのリプレース対象ブロックは有効状態であるので、1次キャッシュ管理部は、1次キャッシュのTAG-RAMを1度読み出してキャッシュステートを確認する。1次キャッシュがMステートであれば、1次キャッシュ管理部は、ライトバックのために該当データを読み出して、MOB(Move Out Buffer)にデータを退避させつつ、リプレース対象ブロックの無効化を行う。これに対して、1次キャッシュがEステート又はSステートの場合、1次キャッシュ管理部は、ライトバックを行わずに、リプレース対象ブロックの無効化を行う。その後、1次キャッシュ管理部は、リプレース対象の無効化が行われた後に、2次キャッシュから転送された新たに格納するデータを1次キャッシュに登録してリプレース処理を終える。
なお、キャッシュのコヒーレンシを維持する技術として、以下の従来技術がある。上位キャッシュのラインに下位キャッシュにおけるデータの存在の有無を示すフラグを設け、下位キャッシュでラインの置換えが発生した場合に上位キャッシュに通知し、ラインが上位キャッシュに存在する場合、フラグをセットする従来技術がある。また、ダーティフラグがセットされたキャッシュエントリのラインデータをメモリへライトバックする従来技術がある。
特開平10-55309号公報 国際公開第2005/050454号
しかしながら、2次キャッシュ管理部から元データの移動が付随するデータ格納要求を受信した場合、1次キャッシュ管理部は、1回目のTAG-RAMへのアクセスで、TAG-RAMを読み出して、1次キャッシュのステートを確認する。次に、1次キャッシュ管理部は、2回目のTAG-RAMへのアクセスで、TAG-RAMの無効化を行う。このように、1次キャッシュ管理部は、2次キャッシュ管理部から元データの移動が付随するデータ格納要求を受信した場合、2回のTAG-RAMへのアクセスを行う。TAG-RAMへのアクセスはパイプライン処理であり、且つTAG-RAMへのアクセス時間にはステートの確認するためのサイクルが含まれる。そのため、TAG-RAMへアクセスする処理は時間が掛かる処理であり、TAG-RAMへのアクセス時間が、1次キャッシュミス時の演算処理装置の処理性能を低減させるおそれがある。
1次キャッシュがMステートの場合、ライトバックが行われることから、データの退避のためにTAG-RAMに対する2回のアクセスが行われる。ただし、1次キャッシュがEステート又はSステートの場合、最終的にTAG-RAMを無効化することができればよく、TAG-RAMへの2回のアクセスは無駄な遅延を発生させているといえ、情報処理装置の処理性能を低下させているといえる。
ここで、上位キャッシュのラインに下位キャッシュにおけるデータの存在の有無を示すフラグを設ける従来技術を用いても、Mステート時のTAG-RAMへのアクセス回数には影響せず、情報処理装置の性能を向上させることは困難である。また、ダーティフラグを用いてメモリへのライトバックを制御する従来技術であっても、Mステート時のTAG-RAMへのアクセス回数は考慮されておらず、情報処理装置の処理性能を向上させることは困難である。
開示の技術は、上記に鑑みてなされたものであって、処理性能を向上させる情報処理装置、演算処理装置及び情報処理装置の制御方法を提供することを目的とする。
本願の開示する情報処理装置、演算処理装置及び情報処理装置の制御方法の一つの態様において、情報処理装置は、以下の各部を備える複数の演算処理装置を有する。キャッシュメモリは、データ及びデータを格納する領域の状態情報を保持する。判定部は、所定データの取得要求を受けて、前記キャッシュメモリに前記所定データが存在するか否かを判定する。制御部は、前記キャッシュメモリに前記所定データが存在しない場合、前記キャッシュメモリよりも下位のキャッシュメモリ又は記憶装置へ前記所定データの取得要求を出力するとともに、前記所定データを格納する所定領域の状態情報に基づく判定用情報を保持する。格納処理部は、前記取得要求に対する応答を前記下位のキャッシュメモリ又は記憶装置から取得し、取得した前記応答が所定の種類の場合、前記制御部が保持する前記判定用情報を基に、前記キャッシュメモリに格納された前記状態情報を取得するか否かを判定し、前記状態情報を取得しないと判定した場合、前記所定領域を無効化し、前記所定領域に前記応答に含まれる前記所定データを格納し、前記応答が所定の種類でない場合、前記キャッシュメモリから前記状態情報を取得して確認し、前記所定領域に前記所定データを格納する。
1つの側面では、本発明は、情報処理装置の処理性能を向上させることができる。
図1は、情報処理装置のハードウェア構成図である。 図2は、CPUのブロック図である。 図3は、実施例1に係る1次キャッシュ管理部のブロック図である。 図4は、1次キャッシュ管理部によるロード命令の処理のフローチャートである。 図5は、移動不要格納要求の場合の無効化処理のフローチャートである。 図6は、移動付随格納要求の場合の無効化処理のフローチャートである。 図7は、実施例2に係る1次キャッシュ管理部のブロック図である。 図8は、ストア命令が先行する状態での競合時のL1タグの遷移を表す図である。 図9は、ロード命令が先行する状態での競合時のL1タグの遷移を表す図である。 図10は、ストアバッファを用いない場合の競合時のL1タグの遷移を表す図である。
以下に、本願の開示する情報処理装置、演算処理装置及び情報処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、演算処理装置及び情報処理装置の制御方法が限定されるものではない。
図1は、情報処理装置のハードウェア構成図である。サーバなどの情報処理装置1は、システムボード10、IO(Input Output)ユニット20、ディスクユニット30を有する。
システムボード10は、複数のCPU11及びメモリ12が搭載される。システムボード10は、バスによりIOユニット20と接続される。システムボード10上のCPU11及びメモリ12は、システムボード10とIOユニット20とを繋ぐバスを介してIOユニット20と通信する。
演算処理装置であるCPU11は、IOユニット20を介してディスクユニット30とデータの送受信を行う。また、CPU11は、バスを介して主記憶装置であるメモリ12と接続される。CPU11は、ディスクユニット30に格納された各種プログラムを読み出し、メモリ12上に展開して実行することで、OS(Operating System)やアプリケーションを動作させる。ここで、本実施例では、4つのCPU11を例に図示したが、CPU11の数に特に制限は無い。
IOユニット20は、ディスクユニット30に対するデータの読み書きの制御を行う。ディスクユニット30は、補助記憶装置である。ディスクユニット30は、OSやアプリケーションなどの各種プログラムを格納する。
図2は、CPUのブロック図である。CPU11は、コア100及び2次キャッシュ管理部112を有する。
コア100は、命令制御部101、演算処理部102及び1次キャッシュ管理部103を有する。命令制御部101、演算処理部102及び1次キャッシュ管理部103は、それぞれ互いに接続され、相互に通信を行う。
命令制御部101は、プログラムを実行する際に、各種命令を生成する。そして、命令制御部101は、演算処理の実行命令を演算処理部102へ出力する。その後、命令制御部101は、出力した実行命令の応答を演算処理部102から取得する。
また、命令制御部101は、キャッシュのロード命令又はストア命令を1次キャッシュ管理部103に送信する。その後、命令制御部101は、送信したロード命令又はストア命令に対する応答を1次キャッシュ管理部103から取得する。
演算処理部102は、演算処理の実行命令の入力を命令制御部101から受ける。また、演算処理部102は、1次キャッシュ管理部103からデータを取得する。そして、演算処理部102は、1次キャッシュ管理部103から取得したデータなどを用いて実行命令にしたがって演算を実行する。
1次キャッシュ管理部103は、1次キャッシュ301を有する。1次キャッシュ管理部103は、キャッシュのロード命令の入力を命令制御部101から受ける。そして、1次キャッシュ管理部103は、ロード命令で指定されたデータが1次キャッシュ301に存在するか否かを判定する。1次キャッシュ301に指定されたデータが存在するキャッシュヒットの場合、1次キャッシュ管理部103は、指定されたデータを1次キャッシュ301から読み出して演算処理部102へ出力する。その後、1次キャッシュ管理部103は、キャッシュのロード命令の処理完了を命令制御部101へ通知する。
これに対して、ロード命令で指定されたデータが1次キャッシュ301に存在しないキャッシュミスの場合、1次キャッシュ管理部103は、ムーブイン要求を2次キャッシュ管理部112に送信する。その後、1次キャッシュ管理部103は、ロード命令で指定されたデータ及びデータ格納要求の入力を2次キャッシュ管理部112から受ける。そして、1次キャッシュ管理部103は、データ格納要求にしたがい1次キャッシュ301に対する処理を行い、受信したデータを1次キャッシュ301に格納する。その後、1次キャッシュ管理部103は、キャッシュのロード命令を再度実行し、キャッシュヒットとなった場合の処理を実行する。その後、1次キャッシュ管理部103は、キャッシュのロード命令の処理完了を命令制御部101へ通知する。
また、1次キャッシュ管理部103は、キャッシュのストア命令の入力を命令制御部101から受ける。そして、1次キャッシュ管理部103は、ストア命令で指定されたデータが1次キャッシュ301に存在するか否かを判定する。ストア命令で指定されたデータが1次キャッシュ301に存在しない場合、1次キャッシュ管理部103は、データを新たに1次キャッシュ301に登録する。さらに、1次キャッシュ管理部103は、登録したデータを保持しておき、予め決められた条件を満たすと、2次キャッシュ121へのデータの書き込みを2次キャッシュ管理部112へ依頼する。また、ストア命令で指定されたデータが1次キャッシュ301に存在する場合、1次キャッシュ管理部103は、1次キャッシュ301上のデータを更新する。さらに、1次キャッシュ管理部103は、更新したデータを保持しておき、予め決められた条件を満たすと、2次キャッシュ121へのデータの書き込みを2次キャッシュ管理部112へ依頼する。
2次キャッシュ管理部112は、2次キャッシュ121を有する。2次キャッシュ121は、1次キャッシュよりも動作速度が低速であるが、容量が大きいキャッシュである。2次キャッシュ121は、1次キャッシュ301の各領域のキャッシュステートがIステートであるか否かの情報を保持する。
2次キャッシュ管理部112は、ムーブイン要求の入力を1次キャッシュ管理部103から受ける。そして、2次キャッシュ管理部112は、ムーブイン要求で指定されたデータが2次キャッシュ121に存在するか否かを判定する。
指定されたデータが2次キャッシュに存在する場合、2次キャッシュ管理部112は、1次キャッシュ301の指定されたデータの格納先の領域のキャッシュステートを確認する。キャッシュステートがIステートである場合、2次キャッシュ管理部112は、元データの移動を行わないデータ格納要求を生成する。以下では、データ登録における元データの移動を行わないデータ格納要求を「移動不要格納要求」と言う。その後、2次キャッシュ管理部112は、移動不要格納要求とともにムーブイン要求で指定されたデータを1次キャッシュ管理部103へ出力する。
これに対して、キャッシュステートがIステート以外であれば、2次キャッシュ管理部112は、元データの移動を伴うデータ格納要求を生成する。以下では、元データの移動を伴うデータ格納要求を「移動付随格納要求」という。その後、2次キャッシュ管理部112は、移動付随格納要求とともにムーブイン要求で指定されたデータを1次キャッシュ管理部103へ出力する。
これに対して、指定されたデータが2次キャッシュに存在しない場合、2次キャッシュ管理部112は、その指定されたデータをメモリ12から取得する。そして、2次キャッシュ管理部112は、取得したデータを2次キャッシュ121に格納する。その後、2次キャッシュ管理部112は、命令で指定されたデータが2次キャッシュに存在する場合と同様の処理を実行する。この2次キャッシュ管理部112が、「下位記憶装置」の一例にあたる。
次に、図3を参照して、1次キャッシュ管理部103の詳細について説明する。図3は、実施例1に係る1次キャッシュ管理部のブロック図である。図3に示すように、1次キャッシュ管理部103は、1次キャッシュ301、セレクタ302、タグマッチ判定部303、TLB(Translation Lookaside Buffer)304を有する。さらに、1次キャッシュ管理部103は、キャッシュの書き換えを管理するムーブインバッファ305、リプレイスウェイ選択部306、フラグ生成部307、格納処理部308及びムーブアウトバッファ309を有する。
1次キャッシュ301は、1次データキャッシュ351及びL1タグ352を有する。1次データキャッシュ351は、データを格納する格納領域である。この1次データキャッシュ351が、「データ格納部」の一例にあたる。また、L1タグ352は、1次データキャッシュ351に格納されたデータに対応するアドレス情報であるタグを格納する格納領域である。このL1タグ352が、「タグ格納部」の一例にあたる。そして、タグが、「検索情報」の一例にあたる。1次キャッシュ301に格納されたデータとそのデータに対応するタグのペアが、キャッシュラインである。
本実施例では、1次キャッシュ301は、セットアソシアティブ方式を採用し、インデックスごとにブロックにまとめられており、ブロックを格納できる領域数をウェイという。1次キャッシュ301では、4ウェイのデータが同一インデックスに格納できる。以下では、1次データキャッシュ351における各データを格納した領域をブロックとして説明する。
また、L1タグ352は、キャッシュラインに有効なデータが入っているかを示すvalid情報及び1次データキャッシュ351の各ブロックのデータ保持の状態を表すキャッシュステートなどの制御情報を保持する。
ここで、L1タグ352が保持するキャッシュステートは、MESIプロトコルでキャッシュコヒーレンシの制御に用いられる情報である。キャッシュステートには、Mステート、Eステート、Sステート及びIステートが存在する。Mステートは、変更型でブロックを保持する状態を表す。また、Eステートは、排他型でブロックを保持する状態を表す。Sステートは、共有型でブロックを保持する状態を表す。Iステートは、ブロックを保持していない状態を表す。このキャッシュステートが、「状態情報」の一例にあたる。
1次キャッシュ301の1次データキャッシュ351及びL1タグ352は、命令制御部101から出力されたキャッシュのロード命令の入力を受ける。L1タグ352は、キャッシュのロード命令の入力を受けて、ロード命令で指定されたデータを格納するウェイを表すタグをタグマッチ判定部303及びフラグ生成部307へ出力する。
1次データキャッシュ351は、後述するタグマッチ判定部303によりタグマッチが確認された場合、マッチしたタグに対応するデータをセレクタ302を介して演算処理部102へ出力する。
TLB304は、例えば、論理アドレスから物理アドレスを取得するための連想メモリを有する。TLB304は、命令制御部101から出力されたキャッシュのロード命令の中から、ロードするデータの格納先の論理アドレスを取得する。そして、TLB304は、取得した論理アドレスに対応する物理アドレスを取得する。次に、TLB304は、取得した物理アドレスをタグマッチ判定部303へ出力する。その後、タグマッチ判定部303からタグミスマッチの通知を受けた場合、TLB304は、ムーブインバッファ305へ取得した物理アドレスを出力する。
タグマッチ判定部303は、タグの情報の入力をL1タグ352から受ける。また、タグマッチ判定部303は、物理アドレスの入力をTLB304から受ける。そして、タグマッチ判定部303は、タグの情報及び物理アドレスの情報を用いて、ロード命令で指定されたデータが1次データキャッシュ351に存在するか否かを確認し、存在する場合にはタグマッチと判定する。タグマッチの場合、タグマッチ判定部303は、タグマッチしたタグの情報をセレクタ302に送る。
また、ロード命令で指定されたデータが1次データキャッシュ351に存在しない場合、タグマッチ判定部303は、タグミスマッチと判定する。そして、タグマッチ判定部303は、タグミスマッチをTLB304及びリプレイスウェイ選択部306に通知する。このタグマッチ判定部303が、「判定部」の一例にあたる。
セレクタ302は、出力するデータのタグの情報の入力をタグマッチ判定部303から受ける。そして、セレクタ302は、取得したタグに対応するデータを1次データキャッシュ351の中から選択して演算処理部102へ出力する。
リプレイスウェイ選択部306は、命令制御部101から発行されたキャッシュのロード命令の入力を受ける。リプレイスウェイ選択部306は、タグマッチ判定部303からタグミスマッチの通知を受けると、予め決められたウェイの選択アルゴリズムにしたがって新たなデータを格納するウェイを選択する。例えば、リプレイスウェイ選択部306は、1次キャッシュ301の中でデータが格納されたタイミングが最も古いウェイをリプレイスウェイとして選択する。そして、リプレイスウェイ選択部306は、選択したウェイの情報をムーブインバッファ305及びフラグ生成部307へ出力する。以下では、このリプレイスウェイ選択部306が選択したロード命令で指定されたデータの格納先とするウェイを「格納先ウェイ」と言う。
フラグ生成部307は、格納先ウェイの情報をリプレイスウェイ選択部306から取得する。そして、フラグ生成部307は、取得した格納先ウェイの情報を用いて格納先ウェイに含まれるブロックのキャッシュステートをL1タグ352から取得する。
次に、フラグ生成部307は、取得したキャッシュステートがMステートである場合、そのウェイに対応する判定用フラグの値としてMステートを表す1を設定する。判定用フラグは、値が1の場合、L1タグ352に対するキャッシュステートの確認の実行を表す。
これに対して、取得したキャッシュステートがMステート以外の場合、フラグ生成部307はそのウェイに対応する判定用フラグの値としてMステート以外を表す0を設定する。判定用フラグは、値が0の場合、L1タグ352に対するキャッシュステートの確認を行わないことを表す。その後、フラグ生成部307は、格納先ウェイの判定用フラグをムーブインバッファ305へ出力する。
ムーブインバッファ305は、キャッシュのロード命令で指定されたデータの物理アドレスの入力をTLB304から受ける。また、ムーブインバッファ305は、格納先ウェイの情報の入力をリプレイスウェイ選択部306から受ける。さらに、ムーブインバッファ305は、格納先ウェイの判定用フラグの入力をフラグ生成部307から受ける。そして、ムーブインバッファ305は、キャッシュのロード命令で指定されたデータの物理アドレス及び格納先ウェイの情報を含むムーブイン要求を2次キャッシュ管理部112へ出力する。このムーブインバッファ305が、「制御部」の一例にあたる。そして、判定用フラグが、「判定用情報」の一例にあたる。さらに、ムーブイン要求が、「取得要求」の一例にあたる。
格納処理部308は、タグ管理部381及びデータ管理部382を有する。タグ管理部381は、ムーブインバッファ305から出力されたムーブイン要求に対する応答であるデータ格納要求及びロード命令で指定されたデータの入力を2次キャッシュ管理部112から受ける。以下では、ロード命令で指定されたデータを「対象データ」という。そして、格納処理部308は、取得したデータ格納要求が移動不要格納要求か移動付随格納要求かを判定する。
取得したデータ格納要求が移動不要格納要求の場合、タグ管理部381は、格納先ウェイにおける対象データを格納するブロックのキャッシュステートをL1タグ352から取得する。そして、タグ管理部381は、キャッシュステートがIステートであることを確認してプロトコル処理を実行した後、データ管理部328にデータの格納を依頼する。その後、タグ管理部381は、1次データキャッシュ351に新たに格納された対象データを表すタグを生成してL1タグ352に登録し、且つ、対象データを格納したウェイのブロックのキャッシュステートとしてSステートを登録する。
一方、取得したデータ格納要求が移動付随格納要求の場合、タグ管理部381は、格納先ウェイの判定用フラグの値をムーブインバッファ305から取得する。この移動付随格納要求が、「所定の種類の応答」及び「データ移動を要求する種類の応答」の一例にあたる。そして、タグ管理部381は、判定用フラグの値が1の場合、キャッシュステートがMステートである可能性があるので、格納先ウェイにおける対象データを格納するブロックのキャッシュステートをL1タグ352から取得する。そして、キャッシュステートがMステートである場合、タグ管理部381は、データの退避をデータ管理部382に指示する。
その後データの退避が完了すると、タグ管理部381は、格納先ウェイにおける対象データを格納するブロックのL1タグ352を無効化する。次に、タグ管理部381は、2次キャッシュ管理部112から取得した対象データを格納先ウェイにおける格納先のブロックに格納する。さらに、タグ管理部381は、格納した対象データを表すタグを生成してL1タグ352に登録し、且つ、対象データを格納したウェイのブロックのキャッシュステートとしてSステートを登録する。
これに対して、判定用フラグの値が0の場合にはキャッシュステートがMステートではないので、タグ管理部381は、格納先ウェイにおける対象データを格納するブロックのL1タグ352を無効化する。この判定用フラグの値が0の場合が、「判定用情報が、所定データが下位のキャッシュメモリ又は記憶装置に存在する状態を表す場合」の一例にあたる。そして、タグ管理部381は、データ管理部328にデータの格納を依頼する。その後、タグ管理部381は、格納した対象データを表すタグを生成してL1タグ352に登録し、且つ、対象データを格納したウェイのブロックのキャッシュステートとしてSステートを登録する。
データ管理部382は、データの退避の指示をタグ管理部381から受ける。そして、データ管理部382は、データ格納要求で指定された対象データの格納先のブロックの既存のデータを1次データキャッシュ351から読み出してムーブアウトバッファ309に退避させる。
また、データ管理部382は、データの格納の依頼をタグ管理部381から受ける。そして、データ管理部382は、2次キャッシュ管理部112から取得した対象データを格納先ウェイに格納する。
ムーブアウトバッファ309は、格納先ウェイにおける対象データを格納するブロックに存在した既存データの入力をデータ管理部382から受ける。その後、ムーブアウトバッファ309は、所定条件が満たされ1次キャッシュ管理部103により2次キャッシュ121へのライトバックが行われるまで、取得した既存データを保持する。
次に、図4を参照して、本実施例に係る1次キャッシュ管理部103によるロード命令の処理の流れについて説明する。図4は、1次キャッシュ管理部によるロード命令の処理のフローチャートである。
1次キャッシュ管理部103は、命令制御部101から発行されたロード命令を受信する(ステップS1)。
1次キャッシュ管理部103は、L1タグ352に格納されたタグの情報及びTLB304により特定された物理アドレスを用いてキャッシュヒットか否かを判定する(ステップS2)。
キャッシュヒットの場合(ステップS2:肯定)、1次キャッシュ管理部103は、取得したタグに対応するデータを1次データキャッシュ351から選択し、選択したデータを演算処理部102へ出力する(ステップS3)。
これに対して、キャッシュミスの場合(ステップS2:否定)、1次キャッシュ管理部103は、ムーブイン要求を2次キャッシュ管理部112へ送信する(ステップS4)。
その後、1次キャッシュ管理部103は、データ格納要求を2次キャッシュ管理部112から受信する(ステップS5)。
次に、1次キャッシュ管理部103は、受信したデータ格納要求が移動付随格納要求か否かを判定する(ステップS6)。
受信したデータ格納要求が移動付随格納要求でない、すなわち、移動不要格納要求の場合(ステップS6:否定)、1次キャッシュ管理部103は、データ置換なしの無効化処理を実行する(ステップS7)。
これに対して、移動付随格納要求の場合(ステップS6:肯定)、1次キャッシュ管理部103は、データ置換の可能性がある無効化処理を実行する(ステップS8)。
その後、1次キャッシュ管理部103は、データ格納要求に含まれるデータを1次キャッシュ301に登録し(ステップS9)、ステップS1へ戻る。
次に、図5を参照して、移動不要格納要求の場合の無効化処理の流れについて説明する。図5は、移動不要格納要求の場合の無効化処理のフローチャートである。図5に示すフローチャートは、図4におけるステップS7で実行される処理の一例にあたる。
格納処理部308のタグ管理部381は、2次キャッシュ管理部112から発行された移動不要格納要求を受理する(ステップS101)。
次に、タグ管理部381は、移動不要格納要求から対象データの格納先ウェイを取得する。そして、タグ管理部381は、格納先ウェイにおけるデータを格納するブロックのキャッシュステートをL1タグ352から読み出す(ステップS102)。
タグ管理部381は、読み出したキャッシュステートがIステートであることを確認してプロトコルチェックを行う。その後、タグ管理部381は、無効化処理の完了を格納処理部308のデータ管理部382に通知する(ステップS103)。
次に、図6を参照して、移動付随格納要求の場合の無効化処理の流れについて説明する。図6は、移動付随格納要求の場合の無効化処理のフローチャートである。図6に示すフローチャートは、図4におけるステップS8で実行される処理の一例にあたる。
格納処理部308のタグ管理部381は、2次キャッシュ管理部112から発行された移動付随格納要求を受理する(ステップS201)。
次に、タグ管理部381は、移動付随格納要求で指定された格納先ウェイに対応する判定用フラグをムーブインバッファ305から読み出す(ステップS202)。
そして、タグ管理部381は、読み出した判定用フラグの値が1か否かを判定する(ステップS203)。判定用フラグが0の場合(ステップS203:否定)、格納処理部308は、処理をステップS208へ進ませる。
これに対して、判定用フラグが1の場合(ステップS203:肯定)、タグ管理部381は、移動不要格納要求で指定された格納先ウェイにおけるデータを格納するブロックのキャッシュステートをL1タグ352から読み出す(ステップS204)。
次に、タグ管理部381は、読み出したキャッシュステートを用いてMESIのプロトコルチェックを行う(ステップS205)。
そして、タグ管理部381は、読み出したキャッシュステートがMステートか否かを判定する(ステップS206)。読み出したキャッシュステートがMステートでない場合(ステップS206:否定)、格納処理部308は、処理をステップS208へ進ませる。
これに対して、読み出したキャッシュステートがMステートの場合(ステップS206:肯定)、タグ管理部381は、格納先ウェイの対象データを格納するブロックに存在するリプレースデータをムーブアウトバッファ309へ退避させる(ステップS207)。
その後、タグ管理部381は、L1タグ352の中の格納先ウェイの対象データを格納するブロックに対応するタグを無効化する(ステップS208)。
そして、タグ管理部381は、無効化処理の完了をデータ管理部382へ通知する(ステップS209)。
以上に説明したように、本実施例に係る1次キャッシュ管理部は、キャッシュミスが発生した場合に、2次キャッシュから送られたデータの格納先となるブロックのキャッシュステートがMステートか否かを表す判定用フラグを設定して、ムーブイン要求を行う。その後、1次キャッシュ管理部は、ムーブイン要求に対する応答であるデータ格納要求を受信したときに、保持した判定用フラグを確認する。そして、判定用フラグがMステート以外を表していれば、1次キャッシュ管理部は、L1タグに格納されたキャッシュステートの確認を行わずに、データを格納するブロックを無効化する。これにより、1次キャッシュ管理部は、キャッシュミスの際にL1タグに対してアクセスする回数を低減することができ、応答処理にかかる時間を短縮することができる。したがって、情報処理装置における1次キャッシュミス時の処理性能を向上させることができる。
図7は、実施例2に係る1次キャッシュ管理部のブロック図である。本実施例に係る1次キャッシュ管理部103は、図2に示した実施例1の各部に加えて、ストア実行部310、ストアバッファ311及び判定部312を有する。本実施例に係る1次キャッシュ管理部103は、ストア命令の実行状態を考量して判定用フラグを設定することが実施例1と異なる。以下の説明では、実施例1と同様の各部の機能については説明を省略する。
L1タグ352は、キャッシュのストア命令を命令制御部101から受ける。そして、L1タグ352は、ストア命令で指定されたストアするデータのタグの情報をタグマッチ判定部303へ出力する。
TLB304は、キャッシュのストア命令を命令制御部101から受ける。そして、TLB304は、ストア命令で指定された論理アドレスを物理アドレスに変換してタグマッチ判定部303及びストアバッファ31へ出力する。
タグマッチ判定部303は、ストアするデータのタグの情報の入力をL1タグ352から受ける。また、タグマッチ判定部303は、物理アドレスの入力をTLB304から受ける。そして、タグマッチ判定部303は、取得したタグ及び物理アドレスを用いてタグマッチの判定を行う。
タグマッチの場合、タグマッチ判定部303は、タグマッチしたブロックのウェイの情報及びキャッシュヒットしたことを表す情報をストアバッファ311へ出力する。さらに、タグマッチ判定部303は、ストア実行部310にタグマッチを通知する。
ストア実行部310は、ストア命令の入力を命令制御部101から受ける。そして、タグがマッチしなかった場合、ストア実行部310は、タグミスの通知をタグマッチ判定部303から受ける。この場合、ストア実行部310は、1次データキャッシュ351からデータを格納するブロックを選択して、選択したブロックにストア命令で指定されたデータを格納する。また、ストア実行部310は、格納したデータを表すタグ、有効を表すvalied情報及びデータの格納先のブロックのキャッシュステートをL1タグ352に登録する。
一方、タグマッチの場合、ストア実行部310は、タグマッチの通知とともにタグマッチしたウェイの情報の入力をタグマッチ判定部303から受ける。そして、ストア実行部310は、ムーブインバッファ305に同じ物理アドレス及びウェイの情報を有するエントリが存在し、そのエントリの判定用フラグが0か否かを確認する。
同じ物理アドレス及びウェイの情報を有するエントリが存在しない場合、ストア実行部310は、ストアバッファ311に格納されたその物理アドレス及びウェイの情報に対応するキャッシュヒットフラグを1に設定する。そして、ストア実行部310は、1次データキャッシュ351及びL1タグ352に対してデータのストアを行う。
また、同じ物理アドレス及びウェイの情報を有するエントリが存在するが、判定用フラグが1の場合も同様に、ストア実行部310は、ストアバッファ311に格納されたその物理アドレス及びウェイの情報に対応するキャッシュヒットフラグを1に設定する。そして、ストア実行部310は、1次データキャッシュ351及びL1タグ352に対してデータのストアを行う。
これに対して、同じ物理アドレス及びウェイの情報を有するエントリが存在し、且つ、判定用フラグが0の場合、ストア実行部310は、ストアバッファが格納するその物理アドレス及びウェイの情報に対応するキャッシュヒットフラグを0に設定する。そして、ストア実行部310は、ストア処理の実行を待機する。その後、ストア実行部310は、ムーブインバッファ305の確認を繰り返えし、同じ物理アドレス及びウェイの情報を有するエントリが存在しない、または、判定用フラグが0となった後にストア処理を実行する。キャッシュヒットフラグが、「所定領域に対するデータの更新状況」を表す情報の一例にあたる。
ストアバッファ311は、物理アドレスの情報の入力をTLB304から受ける。また、ストアバッファ311は、タグマッチしたデータのウェイの情報及びキャッシュヒットを表す情報をタグマッチ判定部303から受ける。さらに、ストアバッファ311は、ストア実行部310からの指示にしたがい、アドレス情報及びウェイの情報に対応するキャッシュヒットフラグを設定する。
すなわち、ストアバッファ311のキャッシュヒットフラグは、既に同じ物理アドレス及びウェイに対するムーブイン要求が発行されており、且つ、判定用フラグが0であれば、0に設定される。また、ストアバッファ311のキャッシュヒットフラグは、同じ物理アドレス及びウェイに対するムーブイン要求が発行されていない場合、又は、同じ物理アドレス及びウェイに対するムーブイン要求が発行されているが判定用フラグが1であれば、1に設定される。
判定部312は、ロード命令が命令制御部101から出力されタグミスとなった場合、ムーブインバッファ305に格納された物理アドレス及び格納先ウェイの情報を取得する。次に、判定部312は、取得した物理アドレス及び格納先ウェイと同一の物理アドレス及び格納先ウェイのエントリがストアバッファ311に格納されているか否かを判定する。同一の物理アドレス及び格納先ウェイのエントリがストアバッファ311に格納されていない場合、判定部312は、フラグ設定可能の通知をフラグ生成部307に行う。
これに対して、同一の物理アドレス及び格納先ウェイのエントリがストアバッファ311に格納されている場合、判定部312は、そのエントリのキャッシュヒットフラグを確認する。キャッシュヒットフラグが1であれば、判定部312は、フラグ設定禁止の通知をフラグ生成部307に行う。
フラグ生成部307は、格納先ウェイの情報をリプレイスウェイ選択部306から取得する。そして、フラグ生成部307は、取得した格納先ウェイの情報を用いて格納先ウェイに含まれるブロックのキャッシュステートをL1タグ352から取得する。
取得したキャッシュステートがMステートである場合、フラグ生成部307は、格納先ウェイに対応する判定用フラグを1に設定する。
一方、取得したキャッシュステートがMステート以外の場合、フラグ生成部307は、判定部311からフラグ設定可能の通知を受けている場合、そのウェイに対応する判定用フラグを0に設定する。これに対して、判定部311からフラグ設定禁止の通知を受けている場合、フラグ生成部307は、そのウェイに対応する判定用フラグを1に設定する。その後、フラグ生成部307は、判定用フラグを対応するウェイの情報とともにムーブインバッファ305へ出力する。
格納処理部308は、実施例1と同様の処理を行う。具体的には、取得したデータ格納要求が移動付随格納要求の場合、タグ管理部381は、格納先ウェイの判定用フラグの値をムーブインバッファ305から取得する。そして、タグ管理部381は、判定用フラグの値が1の場合、格納先ウェイにおける対象データを格納するブロックのキャッシュステートをL1タグ352から取得する。そして、キャッシュステートがMステートである場合、タグ管理部381は、データの退避をデータ管理部382に指示する。データ管理部382によるデータの退避完了後、タグ管理部381は、格納先ウェイにおける対象データを格納するブロックのL1タグ352を無効化する。次に、タグ管理部381は、2次キャッシュ管理部112から取得した対象データの格納をデータ管理部382に指示する。さらに、タグ管理部381は、1次データキャッシュ351に格納された対象データを表すタグを生成してL1タグ352に登録し、且つ、対象データを格納したウェイのブロックのキャッシュステートとしてSステートを登録する。
これに対して、判定用フラグの値が0の場合にはキャッシュステートがMステートではないので、タグ管理部381は、格納先ウェイにおける対象データを格納するブロックのL1タグ352を無効化する。その後、タグ管理部381は、2次キャッシュ管理部112から取得した対象データの格納をデータ管理部382に指示する。さらに、タグ管理部381は、格納した対象データを表すタグを生成してL1タグ352に登録し、且つ、対象データを格納したウェイのブロックのキャッシュステートとしてSステートを登録する。
次に、図8及び9を参照して、本実施例に係る1次キャッシュ管理部103によるストア命令とロード命令とが競合した場合のL1タグ352の状態について説明する。図8は、ストア命令が先行する状態での競合時のL1タグの遷移を表す図である。図9は、ロード命令が先行する状態での競合時のL1タグの遷移を表す図である。図8及び9はいずれも図面に向かって下に進むにしたがい時間の経過を表す。処理Sはストア命令の処理を表す。また、処理Lはロード命令の処理を表す。
ストア命令が先行する場合、図8に示すように、時刻T0で処理Sが開始される。この場合、ムーブインバッファ305にはエントリが格納されていないので、ストアバッファ311には、物理アドレスを表すインデックスA及びウェイの情報としてw0が登録されるとともに、キャッシュヒットフラグは1に設定される。そして、状態201のL1タグ252においてインデックスA及びw0に対応するブロックはEステートであり、そのブロックに格納されたデータに対して処理Sによるストアが実行される。
そして、処理Sが実行中の時刻T1において、ロード命令が発行され処理Lが開始される。このとき、ムーブインバッファ305には、インデックスA及びw0が登録される。そして、判定部312は、ストアバッファ311を確認して、ムーブインバッファ305に格納されたインデックスA及びw0を有するエントリを特定する。さらに、判定部312は、特定したエントリのキャッシュヒットフラグが1であることを確認して、フラグ設定禁止をフラグ生成部307に通知する。フラグ生成部307は、ムーブインバッファ305におけるインデックスA及びw0に対応する判定用フラグを1に設定する。
処理Sが実行されることで、L1タグ252におけるインデックスA及びw0に対応するブロックに対してストアが行われ、そのブロックは状態202に示すようにEステートからMステートに遷移する。そして、時刻T2でストア命令が完了すると、ロード命令が開始される。この場合、ムーブインバッファ305に格納された判定用フラグは1であるので、タグ管理部381は、データ管理部382にインデックスA及びw0に対応するブロックのデータをムーブアウトバッファ309に退避させる。その後、タグ管理部381は、L1タグ352のインデックスA及びw0のタグを無効化する。これにより、L1タグ352は状態203となる。
このように、本実施例に係る1次キャッシュ管理部103は、既にストア処理が実行されている状態で、ロード命令が発行された場合には、判定用フラグを1に設定して、Mステートの場合のロード処理を実行する。これにより、ストア処理によりデータが更新されEステートだったブロックがMステートに遷移した場合にも確実にデータの退避を行うことができる。
次にロード命令が先行する場合について説明する。図9に示すように、L1タグ352は、状態211で示すように、インデックスA及びw0で表されるブロックはEステートである。そして、ストア命令が発行されていないので、ストアバッファ311は状態216のようにインデックスA及びw0のエントリを有さない。
その後、時刻T3で処理Lが開始される。この場合、ムーブインバッファ305には、インデックスA及びw0が登録される。そして、判定部311は、インデックスA及びw0が登録されたエントリがストアバッファ311に存在しないことを確認する。そこで、判定部311は、フラグ生成部307にフラグ設定可能の通知を行う。フラグ生成部307は、フラグ設定可能の通知を受けて、状態214に示すようにムーブインバッファ305におけるインデックスA及びw0に対応する判定用フラグを1に設定する。
その後、時刻T4で処理Sが開始される。この場合、ムーブインバッファ305には既にインデックスA及びw0が登録されているので、ストアバッファ311には、インデックスA及びw0が登録されるとともに、状態217に示すようにキャッシュヒットフラグは0に設定される。キャッシュヒットフラグが0であるため、ストア実行部310は、データのストアの実行を待機する。
その後、処理LによりL1タグ352が有するキャッシュステートの確認を行わずにインデックスA及びw0に対応するタグが無効化される。そして、時刻T5で処理Lが完了し、状態212に示すように、L1タグ352のインデックスA及びw0で表されるブロックはIステートに遷移する。さらに、ムーブインバッファ305からインデックスA及びw0のエントリが削除される。ムーブインバッファ305からインデックスA及びw0のエントリが削除されると、状態218に示すように、ストアバッファ311におけるインデックスA及びw0に対応するキャッシュヒットフラグが1に設定される。キャッシュヒットフラグが1になることで、ストア実行部310は、データのストアの実行を開始する。すなわち、時刻T4から時刻T5の間、ストア処理は待機させられる。
その後、処理Sが完了すると、インデックスA及びw0で表されるブロックはデータが更新されるので、L1タグ352におけるインデックスA及びw0に対応するキャッシュステートは、状態213のようにMステートに遷移する。
ここで、図10を参照して、ストアバッファ311を用いない場合のL1タグ232の遷移について説明する。図10は、ストアバッファを用いない場合のL1タグの遷移を表す図である。
この場合、図10に示すように、L1タグ352は、状態221で示すように、インデックスA及びw0で表されるブロックのキャッシュステートとしてEステートを保持する。そして、時刻T6で処理Lが開始される。この場合、ムーブインバッファ305には、インデックスA及びw0に対応する判定用フラグとして0が設定される。
その後、時刻T7で処理Sが開始される。この場合、処理Sの待機は行われず、インデックスA及びw0で表されるブロックのデータが更新される。これにより、状態222に示すように、L1タグ352のインデックスA及びw0で表されるブロックはMステートに遷移する。
しかし、ムーブインバッファ305の判定用フラグは0であるため、タグ管理部381は、L1タグ352が有するインデックスA及びw0で表されるブロックのキャッシュステートを確認せずにインデックスA及びw0に対応するタグを無効化してしまう。この場合、Mステートのブロックに格納されたデータの退避が行われないため、データ化けが発生してしまう。
これに対して、本実施例に係る1次キャッシュ管理部103は、既にロード処理が実行されている状態で、ストア命令が発行された場合には、ロード処理が完了するまでストア命令を待機させ、その後ストア処理を実行する。これにより、ロード処理の実行中にストア処理によりブロックがMステートに遷移することを回避でき、データの退避を確実に行うことでデータ化けの発生を抑えることができる。
さらに、以上の説明では、1次キャッシュ及び2次キャッシュを有する階層キャッシュにおいて、1次キャッシュでキャッシュミスが発生した場合の処理について説明した。ただし、各実施例で説明した機能は、階層キャッシュのどの階層に用いることも可能であり、また、階層キャッシュの階層の数も特に制限は無い。
1 情報処理装置
10 システムボード
11 CPU
12 メモリ
20 IOユニット
30 ディスクユニット
100 コア
101 命令制御部
102 演算処理部
103 1次キャッシュ管理部
112 2次キャッシュ管理部
121 2次キャッシュ
301 1次キャッシュ
302 セレクタ
303 タグマッチ判定部
304 TLB
305 ムーブインバッファ
306 リプレイスウェイ選択部
307 フラグ生成部
308 格納処理部
309 ムーブアウトバッファ
310 ストア実行部
311 ストアバッファ
312 判定部
351 1次データキャッシュ
352 L1タグ
381 タグ管理部
382 データ管理部

Claims (8)

  1. 複数の演算処理装置を有する情報処理装置であって、
    前記演算処理装置は、
    データ及びデータを格納する領域の状態情報を保持するキャッシュメモリと、
    所定データの取得要求を受けて、前記キャッシュメモリに前記所定データが存在するか否かを判定する判定部と、
    前記キャッシュメモリに前記所定データが存在しない場合、前記キャッシュメモリよりも下位のキャッシュメモリ又は記憶装置へ前記所定データの取得要求を出力するとともに、前記所定データを格納する所定領域の状態情報に基づく判定用情報を保持する制御部と、
    前記取得要求に対する応答を前記下位のキャッシュメモリ又は記憶装置から取得し、取得した前記応答が所定の種類の場合、前記制御部が保持する前記判定用情報を基に、前記キャッシュメモリに格納された前記状態情報を取得するか否かを判定し、前記状態情報を取得しないと判定した場合、前記所定領域を無効化し、前記所定領域に前記応答に含まれる前記所定データを格納し、前記応答が所定の種類でない場合、前記キャッシュメモリから前記状態情報を取得して確認し、前記所定領域に前記所定データを格納する格納処理部と
    を備えたことを特徴とする情報処理装置。
  2. 前記格納処理部は、前記状態情報を取得すると判定した場合、前記キャッシュメモリから前記状態情報を取得し、取得した前記状態情報が第1状態の場合、前記所定領域が保持する既存データを退避させ、前記所定領域を無効化し、前記所定領域に前記所定データを格納し、取得した前記状態情報が第2状態の場合、前記所定領域を無効化し、前記所定領域に前記所定データを格納することを特徴とする請求項1に記載の情報処理装置。
  3. 前記キャッシュメモリは、データ格納部、並びに、前記データの検索情報及び前記状態情報を保持するタグ格納部を有し、
    前記判定部は、前記タグ格納部が保持する前記検索情報を基に前記データ格納部に前記所定データが存在するか否かを判定し、
    前記制御部は、前記データ格納部に前記所定データが存在しない場合、前記下位のキャッシュメモリ又は記憶装置へ前記所定データの取得要求を出力するとともに、前記データ格納部における前記所定データの格納先領域の前記状態情報を前記タグ格納部から取得して前記判定用情報を生成して保持し、
    前記格納処理部は、
    前記状態情報を取得しないと判定した場合、前記格納先領域に関する情報を保持する前記タグ格納部の対応領域を無効化し、前記対応領域に前記所定データの検索情報及び前記格納先領域の状態情報を格納するタグ管理部と、
    前記格納先領域に前記所定データを格納するデータ管理部とを有する
    ことを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記格納処理部は、前記応答がデータ移動を要求する種類の応答の場合、前記制御部が保持する前記判定用情報を基に、前記キャッシュメモリに格納された前記状態情報を取得するか否かを判定することを特徴とする請求項1~3のいずれか一つに記載の情報処理装置。
  5. 前記格納処理部は、前記制御部が保持する前記判定用情報が、前記所定データが前記下位のキャッシュメモリ又は記憶装置に存在する状態を表す場合、前記キャッシュメモリに格納された前記状態情報を取得しないと判定することを特徴とする請求項1~4のいずれか一つに記載の情報処理装置。
  6. 前記制御部は、前記キャッシュメモリが保持する前記所定データの格納先の所定領域の状態情報及び前記所定領域に対するデータの更新状況に基づく判定用情報を保持することを特徴とする請求項1~5のいずれか一つに記載の情報処理装置。
  7. データ及びデータを格納する領域の状態情報を保持するキャッシュメモリと、
    所定データの取得要求を受けて、前記キャッシュメモリに前記所定データが存在するか否かを判定する判定部と、
    前記キャッシュメモリが保持する前記所定データの格納先の所定領域の状態情報を基に判定用情報を生成する生成部と、
    前記キャッシュメモリに前記所定データが存在しない場合、前記キャッシュメモリよりも下位のキャッシュメモリ又は記憶装置へ前記所定データの取得要求を出力するとともに、前記生成部が生成した前記判定用情報を保持する制御部と、
    前記取得要求に対する応答を前記下位のキャッシュメモリ又は記憶装置から取得し、取得した前記応答が所定の種類の場合、前記制御部が保持する前記判定用情報を基に、前記キャッシュメモリに格納された前記状態情報を取得するか否かを判定し、前記状態情報を取得しないと判定した場合、前記所定領域を無効化し、前記所定領域に前記応答に含まれる前記所定データを格納し、前記応答が所定の種類でない場合、前記キャッシュメモリから前記状態情報を取得して確認し、前記所定領域に前記所定データを格納する格納処理部と
    を備えたことを特徴とする演算処理装置。
  8. データ及びデータを格納する領域の状態情報を保持するキャッシュメモリが搭載された複数の演算処理装置を有する情報処理装置の制御方法であって、
    所定データの取得要求を受けて、前記キャッシュメモリに前記所定データが存在するか否かを判定し、
    前記キャッシュメモリに前記所定データが存在しない場合、前記キャッシュメモリよりも下位のキャッシュメモリ又は記憶装置へ前記所定データの取得要求を出力し、且つ、前記所定データの格納先の所定領域の状態情報に基づく判定用情報を保持し、
    前記取得要求に対する応答を前記下位のキャッシュメモリ又は記憶装置から取得し、
    取得した前記応答が所定の種類の場合、前記判定用情報を基に前記キャッシュメモリに格納された前記状態情報を取得するか否かを判定し、前記状態情報を取得しないと判定した場合、前記所定領域を無効化し、前記所定領域に前記応答に含まれる前記所定データを格納し、
    前記応答が所定の種類でない場合、前記キャッシュメモリから前記状態情報を取得して確認し、前記所定領域に前記所定データを格納する
    処理を各前記演算処理装置に行わせることを特徴とする情報処理装置の制御方法。
JP2018121355A 2018-06-26 2018-06-26 情報処理装置、演算処理装置及び情報処理装置の制御方法 Active JP7139719B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018121355A JP7139719B2 (ja) 2018-06-26 2018-06-26 情報処理装置、演算処理装置及び情報処理装置の制御方法
US16/419,468 US10983914B2 (en) 2018-06-26 2019-05-22 Information processing apparatus, arithmetic processing device, and method for controlling information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018121355A JP7139719B2 (ja) 2018-06-26 2018-06-26 情報処理装置、演算処理装置及び情報処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2020003959A JP2020003959A (ja) 2020-01-09
JP7139719B2 true JP7139719B2 (ja) 2022-09-21

Family

ID=68981900

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018121355A Active JP7139719B2 (ja) 2018-06-26 2018-06-26 情報処理装置、演算処理装置及び情報処理装置の制御方法

Country Status (2)

Country Link
US (1) US10983914B2 (ja)
JP (1) JP7139719B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11030115B2 (en) * 2019-06-27 2021-06-08 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Dataless cache entry
EP4092105A4 (en) 2020-01-14 2024-03-06 Ajinomoto Kk METHOD FOR CULTURE OF HIGH DENSITY CELLS
JP7350699B2 (ja) * 2020-09-11 2023-09-26 株式会社東芝 ライトバックキャッシュ装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080183967A1 (en) 2008-01-30 2008-07-31 Thomas Philip Speier Apparatus and Methods to Reduce Castouts in a Multi-Level Cache Hierarchy
JP2008535067A (ja) 2005-03-23 2008-08-28 クゥアルコム・インコーポレイテッド キャッシュミスにおける電力消費を減少させるグローバル修正インジケータ
WO2008155805A1 (ja) 2007-06-20 2008-12-24 Fujitsu Limited キャッシュメモリ装置、演算処理装置及びその制御方法
JP2018005395A (ja) 2016-06-29 2018-01-11 富士通株式会社 演算処理装置、情報処理装置および演算処理装置の制御方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1055309A (ja) 1996-08-09 1998-02-24 Hitachi Ltd 階層キャッシュメモリ装置
US6272257B1 (en) * 1997-04-30 2001-08-07 Canon Kabushiki Kaisha Decoder of variable length codes
WO2005050454A1 (ja) 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. キャッシュメモリおよびその制御方法
JP4945200B2 (ja) * 2006-08-29 2012-06-06 株式会社日立製作所 計算機システム及びプロセッサの制御方法
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
CN103502959B (zh) * 2011-04-07 2016-01-27 富士通株式会社 信息处理装置以及并行计算机系统
US8874852B2 (en) * 2012-03-28 2014-10-28 International Business Machines Corporation Data cache block deallocate requests in a multi-level cache hierarchy
JP6468121B2 (ja) * 2015-08-17 2019-02-13 富士通株式会社 演算処理装置および演算処理装置の制御方法
US11093248B2 (en) * 2018-09-10 2021-08-17 International Business Machines Corporation Prefetch queue allocation protection bubble in a processor
US10884938B2 (en) * 2018-12-13 2021-01-05 International Business Machines Corporation Method and apparatus for prefetching data items to a cache

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008535067A (ja) 2005-03-23 2008-08-28 クゥアルコム・インコーポレイテッド キャッシュミスにおける電力消費を減少させるグローバル修正インジケータ
WO2008155805A1 (ja) 2007-06-20 2008-12-24 Fujitsu Limited キャッシュメモリ装置、演算処理装置及びその制御方法
US20080183967A1 (en) 2008-01-30 2008-07-31 Thomas Philip Speier Apparatus and Methods to Reduce Castouts in a Multi-Level Cache Hierarchy
JP2018005395A (ja) 2016-06-29 2018-01-11 富士通株式会社 演算処理装置、情報処理装置および演算処理装置の制御方法

Also Published As

Publication number Publication date
US20190391924A1 (en) 2019-12-26
JP2020003959A (ja) 2020-01-09
US10983914B2 (en) 2021-04-20

Similar Documents

Publication Publication Date Title
KR102448124B1 (ko) 가상 주소들을 사용하여 액세스된 캐시
US8782348B2 (en) Microprocessor cache line evict array
US9501425B2 (en) Translation lookaside buffer management
KR101639672B1 (ko) 무한 트랜잭션 메모리 시스템 및 그 동작 방법
JP5445581B2 (ja) コンピュータシステム、制御方法、記録媒体及び制御プログラム
US7549025B2 (en) Efficient marking of shared cache lines
JP6831788B2 (ja) キャッシュ保守命令
JP2011198091A (ja) 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム
JPH04227552A (ja) ストアスルーキャッシュ管理システム
JP2000250812A (ja) メモリ・キャッシュ・システムおよびその管理方法
JP7443344B2 (ja) 外部メモリベースのトランスレーションルックアサイドバッファ
JP2010097558A (ja) 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法
JP7139719B2 (ja) 情報処理装置、演算処理装置及び情報処理装置の制御方法
JPH0340046A (ja) キャッシュメモリ制御方式および情報処理装置
JPWO2010035426A1 (ja) バッファメモリ装置、メモリシステム及びデータ転送方法
GB2507759A (en) Hierarchical cache with a first level data cache which can access a second level instruction cache or a third level unified cache
US20060294319A1 (en) Managing snoop operations in a data processing apparatus
US20110167223A1 (en) Buffer memory device, memory system, and data reading method
US20140289469A1 (en) Processor and control method of processor
JP5319049B2 (ja) キャッシュシステム
JP2009157612A (ja) キャッシュメモリシステム及びキャッシュメモリの制御方法
US7543112B1 (en) Efficient on-chip instruction and data caching for chip multiprocessors
US10565111B2 (en) Processor
JPH08263374A (ja) キャッシュ制御方法およびそれを用いたマルチプロセッサシステム
JP7311959B2 (ja) 複数のデータ・タイプのためのデータ・ストレージ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210310

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220406

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220822

R150 Certificate of patent or registration of utility model

Ref document number: 7139719

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150