JP2022015514A - 半導体装置 - Google Patents

半導体装置 Download PDF

Info

Publication number
JP2022015514A
JP2022015514A JP2020118410A JP2020118410A JP2022015514A JP 2022015514 A JP2022015514 A JP 2022015514A JP 2020118410 A JP2020118410 A JP 2020118410A JP 2020118410 A JP2020118410 A JP 2020118410A JP 2022015514 A JP2022015514 A JP 2022015514A
Authority
JP
Japan
Prior art keywords
cache
data
request
port
write
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.)
Pending
Application number
JP2020118410A
Other languages
English (en)
Inventor
寛之 石井
Hiroyuki Ishii
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 JP2020118410A priority Critical patent/JP2022015514A/ja
Priority to US17/223,175 priority patent/US11409656B2/en
Publication of JP2022015514A publication Critical patent/JP2022015514A/ja
Pending legal-status Critical Current

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
    • 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/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Figure 2022015514000001
【課題】上位キャッシュと下位キャッシュとの間にリプレースバッファを設けることなく、データのリプレース機能を実現する半導体装置を提供する。
【解決手段】CPUの下位(L3)キャッシュ20は、上位(L2)キャッシュから受信するリード命令を保持する第1ポートMIPと、上位キャッシュから受信するライトバック命令を保持する第2ポートWBPと、第1ポートから投入されるリード命令及び第2ポートから投入されるライトバック命令を処理する処理部と、データを保持するキャッシュ部と、上位キャッシュの状態を示す上位キャッシュタグ(L2TAG)とを有する。処理部は、第1ポートから投入されたリード命令の対象アドレスのデータを上位キャッシュが所持していることを上位キャッシュタグが示す場合、対象アドレスのデータを上位キャッシュが所持していないことを上位キャッシュタグが示すまで第1ポートから投入されたリード命令をアボートする。
【選択図】図2

Description

本発明は、半導体装置に関する。
複数のプロセッサを有するマルチプロセッサシステムでは、各プロセッサに搭載されるキャッシュが保持するデータとメインメモリが保持するデータとのコヒーレンシを維持する制御が実行される。また、プロセッサからメインメモリにデータをストアする手法として、データを一時的にキャッシュにストアするコピーバック方式と、データをキャッシュとメインメモリの両方にストアするストアスルー方式とがある。さらに、コピーバック方式とストアスルー方式とが混在したキャッシュシステムが知られている(例えば、特許文献1、2参照)。
特開昭62-203252号公報 特開平4-92938号公報
近時、CPU(Central Processing Unit)等のプロセッサは、性能向上のために複数階層のキャッシュを有する。例えば、コアからのアクセス要求を受けた上位側キャッシュは、キャッシュミスした場合、下位側キャッシュに読み出し要求を発行する。下位側キャッシュは、読み出し要求の対象データを格納するキャッシュラインを上位側キャッシュに確保させるため、上位側キャッシュにリプレース要求を発行し、読み出し要求の対象データを上位側キャッシュに出力する。
例えば、上位側キャッシュは、読み出し要求の発行時にリプレースの対象データを予め追い出すためのリプレースバッファを有する。そして、上位側キャッシュは、リプレースの対象データをキャッシュラインからリプレースバッファに追い出すことでキャッシュラインを予め無効化し、読み出し要求の対象データを格納するキャッシュラインを確保する。上位側キャッシュは、下位側キャッシュからのリプレース要求に基づいて、リプレースバッファに保持したリプレースの対象データを下位側キャッシュに出力する。
複数階層のキャッシュを有するプロセッサの上位側キャッシュがリプレースバッファを有する場合、リプレースバッファ分の回路規模が増大するという問題がある。例えば、プロセッサが、キャッシュを各々有する複数のコアと、複数のコアに共通のLLC(Last Level Cache)とを有する場合、複数のコアのキャッシュの各々にリプレースバッファが設けられるため、プロセッサのチップサイズへの影響は大きい。
1つの側面では、本発明は、上位キャッシュと下位キャッシュとの間にリプレースバッファを設けることなく、データのリプレース機能を実現することを目的とする。
一つの観点によれば、半導体装置は、命令を実行する演算部と、前記演算部に接続される上位キャッシュと、前記上位キャッシュに接続される下位キャッシュと、を有する半導体装置であって、前記下位キャッシュは、前記上位キャッシュから受信するリード命令を保持する第1ポートと、前記上位キャッシュから受信するライトバック命令を保持する第2ポートと、前記第1ポートから投入される前記リード命令および前記第2ポートから投入される前記ライトバック命令を処理する処理部と、データを保持するキャッシュ部と、前記上位キャッシュの状態を示す上位キャッシュタグと、を有し、前記処理部は、前記第1ポートから投入された前記リード命令の対象アドレスのデータを前記上位キャッシュが所持していることを前記上位キャッシュタグが示す場合、前記対象アドレスのデータを前記上位キャッシュが所持していないことを前記上位キャッシュタグが示すまで、前記第1ポートから投入された前記リード命令をアボートする。
1つの側面では、本発明は、上位キャッシュと下位キャッシュとの間にリプレースバッファを設けることなく、データのリプレース機能を実現することができる。
一実施形態におけるCPUの一例を示すブロック図である。 図1のL3キャッシュの要部の一例を示すブロック図である。 図1のCPUの動作の一例を示すシーケンス図である。 図1のCPUの動作の別の例を示すシーケンス図である。 図1のCPUの動作のさらなる別の例を示すシーケンス図である。 図1のCPUの動作の別の例を示すシーケンス図である。 図2のアボート判定部の要部の一例を示す回路図である。 図1のCPUに搭載される別のL3キャッシュの要部の一例(比較例)を示すブロック図である。 図8のL3キャッシュを有するCPUの動作の一例を示すシーケンス図である。 図8のL3キャッシュを有するCPUの動作の別の例を示すシーケンス図である。 図8のL3キャッシュを有するCPUの動作のさらなる別の例を示すシーケンス図である。 図8のL3キャッシュを有するCPUの動作の別の例を示すシーケンス図である。 別の実施形態におけるCPUの概要を示すブロック図である。 図13のL3キャッシュにおいて、L3バンクを選択するハッシュアドレスを生成する一例を示す説明図である。 別の実施形態におけるCPUの概要を示すブロック図である。
図1は、一実施形態におけるCPUの一例を示す。図1に示すCPU100は、複数のコア10、複数のL3キャッシュ20、オンチップネットワーク30、ホームエージェント40、メモリコントローラ50、チップ間インターコネクト60および通信制御部70を有する。CPU100は、半導体装置の一例であり、各コア10は、演算部の一例である。
各コア10は、プライベートなL1キャッシュ11およびL2キャッシュ12と、図示しない複数の演算器等を有し、L1キャッシュ11に格納されたデータを使用して演算を実行する。例えば、L3キャッシュ20は、LLC(Last Level Cache)であり、4つのコア10に共有される。L2キャッシュ12は、上位キャッシュの一例であり、L3キャッシュ20は、下位キャッシュの一例である。
以下では、L2キャッシュ12からL3キャッシュ20に発行される命令をリクエストと称し、L3キャッシュ20からL2キャッシュ12に発行される命令をオーダーと称する。なお、以下の説明では、上位キャッシュをL1キャッシュ11とし、下位キャッシュをL2キャッシュ12としてもよい。この場合、L1キャッシュ11からL2キャッシュ12への命令がリクエストになり、L2キャッシュ12からL1キャッシュ11への命令がオーダーになる。
CPU100は、例えば、4つのコア10と1つのL3キャッシュ20とをそれぞれ含む複数のクラスタを有する。そして、L1キャッシュ11、L2キャッシュ12およびL3キャッシュ20により、上位側のキャッシュが保持するデータを下位側のキャッシュでも保持するインクルーシブポリシーのキャッシュシステムが設計される。また、この実施形態のキャッシュシステムは、キャッシュ上で書き換えられたデータが、メインメモリにすぐに書き戻されることなく、モディファイ状態でキャッシュ上に保持されるライトバックポリシを採用する。
以下では、いわゆるMESIプロトコルにより動作するキャッシュシステムの例を説明するが、キャッシュシステムは、他のプロトコルで動作してもよい。MESIプロトコルでは、データの状態は、データの転送の単位であるキャッシュライン(データを保持するキャッシュブロック)毎に、モディファイ状態M、エクスクルーシブ状態E、シェア状態Sおよびインバリッド状態Iのいずれかに分類される。
例えば、ストア動作により更新され、書き換えられたダーティなデータを保持するキャッシュラインは、モディファイ状態Mに分類される。同一レベルの複数のキャッシュのうちの1つのみに保持され、更新されていないクリーンなデータを保持するキャッシュラインは、エクスクルーシブ状態Eに分類される。同一レベルの複数のキャッシュに保持されているクリーンなデータを保持するキャッシュラインは、シェア状態Sに分類される。データの追い出し等により無効になったキャッシュラインは、インバリッド状態Iに分類される。以下では、モディファイ状態M、エクスクルーシブ状態E、シェア状態Sおよびインバリッド状態Iは、それぞれM状態、E状態、S状態およびI状態とも称する。
オンチップネットワーク30は、各クラスタのL3キャッシュ20、ホームエージェント40、チップ間インターコネクト60および通信制御部70を相互に接続する。ホームエージェント40は、メインメモリからL3キャッシュ20に持ち出しているデータの情報を記録するディレクトリ資源を有し、メインメモリとL3キャッシュ20との間のコヒーレンシを制御する。
メモリコントローラ50は、L3キャッシュ20が発行するメモリアクセス要求に基づいて、メインメモリのアクセスを制御する。チップ間インターコネクト60は、他のCPU100(チップ)との間での通信を制御する。通信制御部70は、例えば、PCIe(Peripheral Component Interconnect express)バス等の通信バスを介して他のデバイスとの間での通信を制御する。
図2は、図1のL3キャッシュ20の要部の一例を示す。L3キャッシュ20は、ムーブインポートMIP、ムーブアウトポートMOP、ライトバックポートWBP、プライオリティ回路PRIO、パイプラインL3P、タグ部L3TAG、参照タグ部L2TAGおよび資源ロック部L3OLKを有する。また、L3キャッシュ20は、データキャッシュ部L3DT、アボート判定部ABTJDG、資源カウンタL3OCNTおよびライトバックデータキューWBDQを有する。
ムーブインポートMIPは、第1ポートの一例であり、ムーブアウトポートMOPは第3ポートの一例であり、ライトバックポートWBPは、第2ポートの一例である。パイプラインL3Pは、処理部の一例であり、参照タグ部L2TAGは、上位キャッシュタグの一例であり、データキャッシュ部L3DTは、キャッシュ部の一例である。
ムーブインポートMIPは、L2キャッシュ12(コア10)から出力されるリクエストを順次保持する複数のエントリを有し、保持した順にリクエストをプライオリティ回路PRIOに出力する。例えば、ムーブインポートMIPには、後述するリードリクエストMI-SHまたはリードリクエストMI-EXがL2キャッシュ12から供給される。リードリクエストMI-SHは、シェア状態Sでデータを要求する場合に発行され、リードリクエストMI-EXは、エクスクルーシブ状態Eでデータを要求する場合に発行される。リードリクエストMI-SHおよびリードリクエストMI-EXは、リード命令の一例である。以下では、リード命令としてリードリクエストMI-SHが発行される場合について説明される。
ムーブアウトポートMOPは、L3キャッシュ20がL2キャッシュ12に発行したオーダーに対するL2キャッシュ12からの応答を順次保持する複数のエントリを有し、保持した順に応答をプライオリティ回路PRIOに出力する。オーダーが複数のコア10に発行された場合、ムーブアウトポートMOPは、各コア10からの応答が全て揃ったとき、パイプラインL3Pに応答を投入する。
例えば、オーダーには、L2キャッシュ12に保持されたM状態のデータをL2キャッシュ12から返却させる共有オーダーMB-SHと、L2キャッシュ12に保持されたデータを無効化する無効化オーダーMB-IVがある。共有オーダーMB-SHおよび無効化オーダーMV-IVは、追い出し命令の一例である。なお、この実施形態では、L2キャッシュ12に保持されたデータのリプレース(追い出し)は、L2キャッシュ12が能動的に発行するライトバックリクエストWRBKまたはフラッシュバックリクエストFLBKにより実行される。このため、L3キャッシュ20は、L2キャッシュ12からデータを追い出させるリプレースオーダーMO-RE(図9)は発行しない。ここで、ライトバックリクエストWRBKは、追い出すデータが書き換えられてダーティな場合にデータ付きで発行される。フラッシュバックリクエストFLBKは、追い出すデータが書き換えられておらずクリーンな場合にデータなしで発行される。
ライトバックポートWBPは、L2キャッシュ12から出力されるライトバックリクエストWRBKまたはフラッシュバックリクエストFLBKを保持する複数のエントリを有する。ライトバックポートWBPは、保持した順にライトバックリクエストWRBKまたはフラッシュバックリクエストFLBKをプライオリティ回路PRIOに出力する。ライトバックリクエストWRBKは、データ付きのライトバック命令の一例であり、フラッシュバックリクエストFLBKはデータなしのライトバック命令の一例である。
リードリクエストMI-SHは、L3キャッシュ20でキャッシュミスが発生した場合、メインメモリからデータが転送されるまでムーブインポートMIPで待機されるため、L3キャッシュ20での処理時間は長くなりやすい。これに対して、ライトバックリクエストWRBKは、L2キャッシュ12から追い出されたデータをデータキャッシュ部L3DTに上書きするため、資源の確保が不要である。このため、資源の確保が必要なムーブインポートMIPおよびムーブアウトポートMOPと異なり、ライトバックポートWBP内で待たされる可能性が低い。
例えば、ライトバックリクエストWRBKをムーブインポートMIPで受ける場合、ムーブインポートMIPに貯まったリードリクエストMI-SHにより、ライトバック処理が遅れるおそれがあり、キャッシュシステムの処理性能が低下するおそれがある。最悪の場合、ライトバックリクエストWRBKまたはフラッシュバックリクエストFLBKが、リードリクエストMI-SH等の他のリクエストにより待たされることにより、パイプラインL3Pがデッドロックするおそれがある。この実施形態では、ライトバックリクエストWRBK専用のライトバックポートWBPを設けることで、リードリクエストMI-SHの処理と無関係にライトバックリクエストWRBKをパイプラインL3Pに投入することができる。この結果、リードリクエストMI-SHとライトバックリクエストWRBKとの競合を抑止することができ、キャッシュシステムの処理性能の低下を抑止することができる。
プライオリティ回路PRIOは、ムーブインポートMIP、ムーブアウトポートMOPおよびライトバックポートWBPから出力されるリクエストまたは応答の1つを選択し、選択したリクエストまたは応答をパイプラインL3Pに投入する。
パイプラインL3Pは、例えば、プライオリティ回路PRIOから受けるリードリクエストMI-SHに基づいて、タグ部L3TAGを参照し、キャッシュヒットまたはキャッシュミスを判定する。なお、タグ部L3TAGは、データキャッシュ部L3DTの各キャッシュラインの状態を示すタグ情報を保持する。キャッシュヒットは、リードリクエストMI-SHの対象データがデータキャッシュ部L3DTに保持されていることを示す。キャッシュミスは、リードリクエストMI-SHの対象データがデータキャッシュ部L3DTに保持されていないことを示す。パイプラインL3Pは、データキャッシュ部L3DTの状態が変わる毎に、タグ部L3TAGを更新する。
パイプラインL3Pは、キャッシュヒットを判定した場合、データキャッシュ部L3DTからデータを読み出し、読み出したデータをリードリクエストMI-SHの応答としてデータバスDBを介してL2キャッシュ12に出力する。なお、パイプラインL3Pは、キャッシュヒットに基づいて、参照タグ部L2TAGを参照する。そして、パイプラインL3Pは、リードリクエストMI-SHの対象データが、他のコア10のL2キャッシュ12に保持されている場合、対象データを保持するL2キャッシュ12に共有オーダーMB-SHを発行する。共有オーダーMB-SHは、L3オーダバスを介してコア10に供給される。
パイプラインL3Pは、共有オーダーMB-SHを発行する場合、ムーブアウトポートMOPのエントリを予約し、共有オーダーMB-SHの対象アドレスを資源ロック部L3OLKのエントリに格納する。またパイプラインL3Pは、資源ロック部L3OLKのエントリの使用数を示す資源カウンタL3OCNTを更新(例えば、カウントアップ)する。なお、資源ロック部L3OLKは、ムーブアウトポートMOPのエントリと同じ数のエントリを有する。
これにより、共有オーダーMB-SHのL2キャッシュ12への発行数を、資源ロック部L3OLKと資源カウンタL3OCNTにより管理することができる。例えば、パイプラインL3Pは、資源ロック部L3OLKが保持するアドレスに対するリクエストを、ムーブインポートMIPを介して受信した場合、資源ロック部L3OLKによるロックが解除されるまでリクエストをアボートし続ける。
L3キャッシュ20は、共有オーダーMB-SHに対する応答をL2キャッシュ12から受信した場合、受信した応答を、予約していたムーブアウトポートMOPに格納する。ムーブアウトポートMOPに格納された応答は、プライオリティ回路PRIOを介してパイプラインL3Pに投入される。パイプラインL3Pは、M状態のデータを含むことを応答が示す場合、ライトバックデータバスWBDBを介してL2キャッシュ12から受信するデータをライトバックデータキューWBDQに格納する。ライトバックデータキューWBDQに格納されたデータは、パイプラインL3Pの制御によりデータキャッシュ部L3DTに格納される。
そして、パイプラインL3Pは、データキャッシュ部L3DTに保持されたデータを、データバスDBを介してリードリクエストMI-SHの発行元のL2キャッシュ12に応答する。また、パイプラインL3Pは、応答を受信したムーブアウトポートMOPの予約を解除し、資源ロック部L3OLKのエントリの使用を解除し、資源カウンタL3OCNTを更新(例えば、カウントダウン)する。これにより、アドレスのロックが解除され、同一アドレスのリクエストのアボートが解除される。
なお、パイプラインL3Pは、L2キャッシュ12のデータの保持状態が変化する毎に、参照タグ部L2TAGを更新する。例えば、参照タグ部L2TAGは、L3キャッシュ20を共有するL2キャッシュ12毎に設けられる。これにより、参照タグ部L2TAGの状態は、常に、各L2キャッシュ12のタグ領域の状態を示す。
パイプラインL3Pは、リードリクエストMI-SHに基づいてキャッシュミスを判定した場合、メインメモリに対してリード要求を発行する。パイプラインL3Pは、図示しないメモリバスを介してメインメモリから転送されるデータをデータキャッシュ部L3DTに保持し、タグ部L3TAGを更新する。そして、パイプラインL3Pは、メインメモリから転送されたデータを、データバスDBを介してリードリクエストMI-SHの発行元のL2キャッシュ12に応答する。
以下では、L2キャッシュ12とL3キャッシュ20間でのリプレース動作の説明をするが、他のキャッシュ階層間でのリプレース動作にも用可能である。
図3は、図1のCPU100の動作の一例を示す。図3では、L2キャッシュ12でキャッシュミスが発生したときの通常のリプレース動作について説明する。L2キャッシュ12は、コア10からのリード要求(ロード命令)のキャッシュミスを判定し、リードリクエストMI-SH(リード要求)をL3キャッシュ20に発行する。
L3キャッシュ20は、L2キャッシュ12から受信したリードリクエストMI-SHをムーブインポートMIPにセットする。リードリクエストMI-SHは、プライオリティ回路PRIOを介してパイプラインL3Pに投入される。パイプラインL3Pは、リードリクエストMI-SHに含まれるアドレスADをタグ部L3TAGに出力し、キャッシュのヒットミス判定(H/M)を行う。
リードリクエストMI-SHがキャッシュミスしたため、L3キャッシュ20は、ホームエージェント40を介してメインメモリにリード要求を発行する。なお、この実施形態では、L3キャッシュ20は、L2キャッシュ12からVictimデータを追い出させるリプレースオーダーをL2キャッシュ12に発行しない。このため、L3キャッシュ20は、ムーブアウトポートMOPを予約せず、資源ロック部L3OLKおよび資源カウンタL3OCNTの状態は変化しない。
L2キャッシュ12は、リードリクエストMI-SHに基づいてL3キャッシュ20から転送されるデータを保持可能にするため、追い出し対象であるVictimキャッシュラインの追い出し処理を実行する。L2キャッシュ12は、Victimキャッシュラインのデータがモディファイ状態Mであるため、追い出し対象のアドレスとデータを含むライトバックリクエストWRBKをL3キャッシュ20に発行する。L2キャッシュ12は、Victimデータを保持していたキャッシュラインをM状態からI状態に設定する。なお、VictimデータがS状態の場合、L2キャッシュ12は、追い出し対象のアドレスを含みデータを含まないフラッシュバックリクエストFLBKをL3キャッシュ20に発行する。
L3キャッシュ20からのリプレースオーダーMO-RE(図9)を待つことなく、リードリクエストMI-SHの発行に続いてライトバックリクエストWRBKを発行することで、L2キャッシュ12からVictimデータを迅速に追い出すことができる。この結果、リプレース処理中にL3キャッシュ20から発行するリプレースオーダーMO-REを不要にすることができ、リプレース処理を簡易にすることができる。
L3キャッシュ20は、L2キャッシュ12から受信したライトバックリクエストWRBKを、ライトバックポートWBPにセットする。ライトバックポートWBPにセットされたライトバックリクエストWRBKは、プライオリティ回路PRIOを介してパイプラインL3Pに投入される。パイプラインL3Pは、データキャッシュ部L3DTにデータを書き戻し、参照タグ部L2TAGの対象領域を、所持を示すバリッド状態Vから所持していないことを示すインバリッド状態Iに更新する。すなわち、ライトバック処理が実行される。
ここで、バリッド状態Vは、L2キャッシュ12が有効なデータ(E状態またはS状態)を保持していることを示す。L2キャッシュ12は、S状態のデータを書き換えてM状態に変化させる場合、E状態で排他的にデータを保持した後、データを書き換えてE状態からM状態に変化させる。L3キャッシュ20は、データがS状態からE状態に変化したかを知っているが、E状態からM状態に変化したかを判別できない。このため、L2キャッシュ12でのM状態は、L3キャッシュ20ではバリッド状態V(E状態)と判断される。なお、フラッシュバックリクエストFLBKを受信した場合のL3キャッシュ20の動作は、データキャッシュ部L3DTにデータを書き戻さないことを除き、ライトバックリクエストWRBKの処理と同様である。例えば、L3キャッシュ20は、フラッシュバックリクエストFLBKの送信元のコア10に対応するバリッドビットVを"0"に設定し、全てのコア10のバリッドビットVが"0"の場合、I状態に設定する。
図3に示すように、L2キャッシュ12は、キャッシュミスの発生時にライトバックリクエストWRBK(または、フラッシュバックリクエストFLBK)を能動的にL3キャッシュ20に発行する。また、L3キャッシュ20は、L2キャッシュ12からVictimデータを追い出させるリプレースオーダーを発行しない。これにより、図9~図12に示すリプレースバッファRPBまたはムーブインデータバッファMIDQのような、リプレース処理が完了するまでVictimデータを保持するデータバッファ資源をL2キャッシュ12から削除することができる。L2キャッシュ12は、コア10毎に存在するため、データバッファ資源を削除することによるCPU100のチップサイズおよび消費電力の削減効果は、CPU100に搭載されるコア10の数が多いほど大きくなる。
L3キャッシュ20は、リードリクエストMI-SHの対象データを、ホームエージェント40を介してメインメモリから受信し、受信した対象データを含む応答DOW(E)をL2キャッシュ12に発行する。L2キャッシュ12は、応答DOW(E)に含まれるデータを、Victimデータを追い出し済みのI状態のキャッシュラインに格納(ムーブイン)し、キャッシュラインの状態をI状態からE状態に設定する。
この実施形態では、L3キャッシュ20は、リプレースオーダーを発行しないため、L3キャッシュ20は、リプレースオーダーに対する応答をL2キャッシュ12から受信しない。このため、L3キャッシュ20は、L2キャッシュ12からのVictimデータを受信するムーブアウトポートMOPを予約せず、資源ロック部L3OLKによるアドレス資源のロックも行わない。
したがって、ムーブアウトポートMOPの代わりに、ライトバックリクエストWRBKを受信する仕組みが必要になる。また、資源ロック部L3OLKのロック機能の代わりに、Victimデータがデータキャッシュ部L3DTに格納されるまで、Victimデータの対象アドレスに対する他の処理を抑止する仕組みが必要になる。ライトバックリクエストWRBKによるVictimデータの受信は、ライトバックポートWBPにより実行される。ライトバックリクエストWRBKの受信に基づいて、Victimデータの対象アドレスに対する他の処理を抑止する仕組みについては、図7および図8で説明する。
図4は、図1のCPU100の動作の別の例を示す。図3と同様の動作については、詳細な説明は省略する。図4では、L2キャッシュ12でのキャッシュミスによるリプレース動作と、L3キャッシュ20でのキャッシュミスによる共有オーダーMB-SHとが競合する場合を説明する。
L2キャッシュ12がキャッシュミスに基づいてリードリクエストMI-SHをL3キャッシュ20に発行し、その後、ライトバックリクエストWRBKをL3キャッシュ20に発行する動作は、図3と同様である。また、リードリクエストMI-SHを受信したL3キャッシュ20が、キャッシュミスしてメインメモリにリード要求を発行し、メインメモリから受信したデータを応答DOW(E)としてL2キャッシュ12に出力する動作は、図3と同様である。
L3キャッシュ20は、L2キャッシュ12からのリードリクエストMI-SHを受信する前に、他のコア10のL2キャッシュ12のキャッシュミスによるリードリクエストMI-SHを受信する。他のコア10からのリードリクエストMI-SHは、ムーブインポートMIPにセットされ、プライオリティ回路PRIOを介してパイプラインL3Pに投入される。
パイプラインL3Pは、他のコア10からのリードリクエストMI-SHに含まれるアドレスADとタグ部L3TAGに保持されたアドレスとの比較に基づいてキャッシュヒットを判定する。ここで、他のコア10からのリードリクエストMI-SHの対象アドレスは、ライトバックリクエストWRBKでの追い出し対象のVictimアドレスであるとする。L3キャッシュ20は、L2キャッシュ12からのライトバックリクエストWRBKをまだ受信していない。
パイプラインL3Pは、参照タグ部L2TAGを参照して、他のコア10からのリードリクエストMI-SHの対象データを、ライトバックリクエストWRBKを発行するL2キャッシュ12がM状態で所持していることを検出する。パイプラインL3Pは、MOPポートを予約し、資源ロック部L3OLKのエントリの1つを確保し、資源カウンタL3OCNTをインクリメントする。そして、L3キャッシュ20は、ライトバックリクエストWRBKを発行するL2キャッシュ12に共有オーダーMB-SHを発行する。
ライトバックリクエストWRBKを受信したL3キャッシュ20は、ライトバックリクエストWRBKをライトバックポートWBPにセットする。ライトバックリクエストWRBKは、プライオリティ回路PRIOを介してパイプラインL3Pに投入される。パイプラインL3Pは、データキャッシュ部L3DTにデータを書き戻すライトバック処理を実行する。
共有オーダーMB-SHを受信したL2キャッシュ12は、自身のタグ情報がI状態であり、返却対象のデータを保持していないと判定する。これは、返却対象のデータをライトバックリクエストWRBKで追い出し済みであるためである。このため、L2キャッシュ12は、共有オーダーMB-SHの応答として、データを付けない応答NO-MB-SH(CRS)をL3キャッシュ20に発行する。ここで、応答NO-MB-SH(CRS)は、共有オーダーMB-SHの要求アドレスのキャッシュラインがI状態であったときに付けるクロスフラグCRSを含む。なお、L2キャッシュ12は、共有オーダーMB-SHと同じタイミングで無効化オーダーを受信した場合、応答NO-MB-IV(CRS)をL3キャッシュ20に発行する。応答NO-MB-SH(CRS)、NO-MB-IV(CRS)は、追い出し応答の一例である。
L3キャッシュ20は、受信した応答NO-MB-SH(CRS)を、予約していたムーブアウトポートMOPに格納する。応答NO-MB-SH(CRS)は、プライオリティ回路PRIOを介してパイプラインL3Pに投入される。パイプラインL3Pは、対応する資源ロック部L3OLKによるロックを解除し、資源カウンタL3OCNTをデクリメントする。この際、パイプラインL3Pは、応答NO-MB-SH(CRS)に付加されたクロスフラグCRSに基づいて、共有オーダーMB-SHの応答で返却されるべきデータが既に返却済みであると検出することができる。そして、パイプラインL3Pは、対応するデータを、リードリクエストMI-SHを発行した他のコア10に応答する。
図5は、図1のCPU100の動作のさらなる別の例を示す。図3と同様の動作については、詳細な説明は省略する。図5では、L2キャッシュ12は、コア10から受信したアドレス(A)のリード要求がキャッシュミスしたため、リードリクエストMI-SH(A)をL3キャッシュ20に発行する。リードリクエストMI-SH(A)の発行から応答DOW(E)までの動作は、図3と同様である。なお、図5では、L2キャッシュ12がライトバックリクエストWRBKを発行する動作の例を示すが、フラッシュバックリクエストFLBKを発行する動作も、図5と同様である。
L2キャッシュ12は、コア10からアドレス(B)に対応するデータをライトバックリクエストWRBK(B)により追い出した後、アドレス(B)のリード要求をコア10から受信する。L2キャッシュ12は、アドレス(B)のデータを追い出し済みのためキャッシュミスを判定し、リードリクエストMI-SH(B)をL3キャッシュ20に発行する。ここで、ライトバックリクエストWRBK(B)のL3キャッシュ20への到達が遅れる場合がある。この場合、リードリクエストMI-SH(B)がライトバックリクエストWRBK(B)より先にL3キャッシュ20に届く。
L3キャッシュ20のパイプラインL3Pは、参照タグ部L2TAGに保持された情報に基づいて、リードリクエストMI-SH(B)の対象データがL2キャッシュ12に未だ保持されていると判定する(V状態)。この実施形態では、アボート判定部ABTJDGが、リードリクエストMI-SHより前に発行されたライトバックリクエストWRBKが未達であると判定する。そして、パイプラインL3Pは、アボート判定部ABTJDGによる判定結果に基づいて、ムーブインポートMIPから投入されたリードリクエストMI-SH(B)をアボートする。
アボートは、ライトバックリクエストWRBK(B)を受信し、ライトバック処理が完了するまで繰り返し実行される。これにより、アドレス(B)に対する他の処理を抑止することができ、リプレース処理中に発生するアクセスの順序関係を保証することができる。すなわち、CPU100およびキャッシュシステムの誤動作を抑止することができ、データのコヒーレンシを維持することができる。
なお、ムーブインポートMIPは、ライトバックリクエストWRBK(B)がライトバックポートWBPで受信され、パイプラインL3Pで処理されるまで、リードリクエストMI-SH(B)をパイプラインL3Pに投入せずに待機してもよい。この場合、パイプラインL3PでのリードリクエストMI-SH(B)のアボートが抑止されるため、パイプラインL3Pの処理効率を向上することができる。
パイプラインL3Pは、ライトバックリクエストWRBK(B)に含まれるデータをデータキャッシュ部L3DTに格納し、キャッシュの状態をV状態からI状態に変更した後、リードリクエストMI-SH(B)の処理を開始する。そして、パイプラインL3Pは、リードリクエストMI-SH(B)の応答(図示せず)をL2キャッシュ12に返し、キャッシュの状態を再びV状態に設定する。なお、L2キャッシュ12は、リードリクエストMI-SH(B)の発行後、ライトバックリクエストWRBK(B)を再度発行するが、図5での記載は省略する。
図6は、図1のCPU100の動作の別の例を示す。図3および図4と同様の動作については、詳細な説明は省略する。図6の動作は、ライトバックリクエストWRBKのL3キャッシュ20への到達が、共有オーダーMB-SHに対する応答NO-MB-SH(CRS)のL3キャッシュ20への到達より遅れることを除き、図4の動作と同様である。また、図6では、L2キャッシュ12がライトバックリクエストWRBKを発行する動作の例を示すが、フラッシュバックリクエストFLBKを発行する動作も、図6と同様である。
L3キャッシュ20は、共有オーダーMB-SHに対する応答NO-MB-SH(CRS)を、予約していたムーブアウトポートMOPに格納する。パイプラインL3Pは、プライオリティ回路PRIOを介して応答NO-MB-SH(CRS)を受信する。しかし、参照タグ部L2TAGにおいて応答NO-MB-SH(CRS)に対応する領域がV状態のため、パイプラインL3Pは、対応するライトバックリクエストWRBKが未達であると判定する。この実施形態では、アボート判定部ABTJDGが、応答NO-MB-SH(CRS)より前に発行されたライトバックリクエストWRBKが未達であると判定する。
パイプラインL3Pは、アボート判定部ABTJDGによる判定結果に基づいて、ライトバックリクエストWRBKを受信してライトバックの処理が完了するまで、ムーブアウトポートMOPから投入される応答NO-MB-SH(CRS)をアボートし続ける。なお、ムーブアウトポートMOPは、ライトバックリクエストWRBKがライトバックポートWBPで受信され、パイプラインL3Pで処理されるまで、応答NO-MB-SH(CRS)をパイプラインL3Pに投入せずに待機してもよい。
この後、パイプラインL3Pは、ライトバックリクエストWRBKを受信し、ライトバックの処理を実行する。そして、L3キャッシュ20は、パイプラインL3PがライトバックリクエストWRBKに含まれる追い出し対象のデータをデータキャッシュ部L3DTに上書きした後、上書きしたデータをリードリクエストMI-SHを発行した他のコア10に応答する。
この実施形態では、応答NO-MB-SH(CRS)を受信したときに、ライトバックリクエストWRBKが未達であるとアボート判定部ABTJDGが判定し、応答NO-MB-SH(CRS)をアボートする。これにより、応答NO-MB-SH(CRS)に基づいて、ライトバックされる前の誤ったデータが他のコア10に転送されることを抑止することができる。この結果、CPU100およびキャッシュシステムの誤動作を抑止することができ、データのコヒーレンシを維持することができる。
図7は、図2のアボート判定部ABTJDGの要部の一例を示す。アボート判定部ABTJDGは、第1判定部JDG1、第2判定部JDG2およびオア回路ORを有する。第1判定部JDG1は、L2キャッシュ12からのリクエストの受信時に、リクエストの対象データがV状態である場合に、リクエストをアボートするために設けられる。例えば、第1判定部JDG1は、図5に示したように、ライトバックリクエストWRBK(B)より後に発行され、ライトバックリクエストWRBK(B)より先にL3キャッシュ20に届くリードリクエストMI-SH(B)をアボートする。
第2判定部JDG2は、L2キャッシュ12からのクロスフラグCRSを含むオーダー応答の受信時に、対象データがV状態である場合に、オーダー応答をアボートするために設けられる。例えば、第2判定部JDG2は、図6に示したように、ライトバックリクエストWRBKより後に発行され、ライトバックリクエストWRBKより先にL3キャッシュ20に届く応答NO-MB-SH(CRS)をアボートする。
第1判定部JDG1は、リクエスト処理信号MIP-V、リクエストタグ信号R-L2TAG-Vおよび除外信号NOT-BLK-CHGを受信するアンド回路AND5を有する。リクエスト処理信号MIP-Vは、ムーブインポートMIPに設定されたL2キャッシュ12からのリクエストがパイプラインL3Pで処理されているときにハイレベルに設定され、リクエストの処理が完了されたときにロウレベルに設定される。
リクエストタグ信号R-L2TAG-Vは、L2キャッシュ12からのリクエストの対象データがL2キャッシュ12に持ち出されているV状態を参照タグ部L2TAGが示す場合、ハイレベルに設定される。また、リクエストタグ信号R-L2TAG-Vは、対象データがL2キャッシュ12に持ち出されていないI状態を参照タグ部L2TAGが示す場合、ロウレベルに設定される。
除外信号NOT-BLK-CHGは、キャッシュラインをシェアで持っているL2キャッシュ12からの排他権(E状態)を要求するリクエストがパイプラインL3Pで処理される場合にロウレベルに設定され、それ以外ではハイレベルに設定される。
リードリクエストMI-SHは、L2キャッシュ12が対象データを保持していないI状態(キャッシュミス時)に発行される。例えば、図3に示すように、L3キャッシュ20がリードリクエストMI-SHを受信したときに、参照タグ部L2TAGの対象領域はI状態である。このため、通常状態では、リクエスト処理信号MIP-Vとリクエストタグ信号R-L2TAG-Vとが同時にハイレベルになることはく、リクエストクロス信号REQ-CRS-Vは、ロウレベルに維持される。
一方、図5に示すように、リードリクエストMI-SH(B)がパイプラインL3Pに投入されるときに、対象データのライトバック処理が実行されていない場合、リクエストの対象データに対応する参照タグ部L2TAGはV状態である。このため、ライトバックリクエストWRBK(B)を受信してライトバック処理が実行されるまで、リクエスト処理信号MIP-Vとリクエストタグ信号R-L2TAG-Vとが同時にハイレベルになる。この結果、リクエストクロス信号REQ-CRS-Vがハイレベルに変化し、アボート信号ABT-CRSがハイレベルに変化することで、リードリクエストMI-SH(B)がアボートされる。
換言すれば、パイプラインL3Pは、アボート判定部ABTJDGから出力されるアボート信号ABT-CRSがハイレベルの場合、対象のリードリクエストMI-SH(B)をアボートする。したがって、図5に示すように、L3キャッシュ20は、ライトバックリクエストWRBK(B)を処理するまで、リードリクエストMI-SH(B)をアボートし続けることができる。この結果、CPU100およびキャッシュシステムの誤動作を抑止することができ、データのコヒーレンシを維持することができる。
なお、キャッシュラインをS状態で持っているL2キャッシュ12から、排他権(E状態)を要求するリクエストをパイプラインL3Pで処理する場合、リクエスト処理信号MIP-Vおよびリクエストタグ信号R-L2TAG-Vがともにハイレベルになる。しかしながら、この場合、ロウレベルの除外信号NOT-BLK-CHGにより、アンド回路AND5からリクエストクロス信号REQ-CRS-V(ハイレベル)が出力されることを抑止することができる。したがって、排他権(E状態)を要求するリクエストのパイプラインL3Pでの処理時にアボート信号ABT-CRSが出力されることを抑止することができ、パイプラインL3Pの誤動作を抑止することができる。
第2判定部JDG2は、アンド回路AND0、AND1、AND2、AND3、オア回路OR1およびアンド回路AND4を有する。アンド回路AND0、AND1、AND2、AND3は、それぞれクロスフラグ信号CRS-FLGおよびオーダータグ信号O-L2TAG-Vの論理積をオア回路OR1に出力する。クロスフラグ信号CRS-FLGおよびオーダータグ信号O-L2TAG-Vの末尾のカギ括弧内の数値は、L2キャッシュ12が搭載されるコア10の識別番号を示す。例えば、CPU100がn個(nは2以上の整数)のコア10を有する場合、コア10のそれぞれに対応してクロスフラグ信号CRS-FLGとオーダータグ信号O-L2TAG-Vとを受けるn個のアンド回路ANDが設けられる。
オア回路OR1の入力は、アンド回路AND0~AND3の出力にそれぞれ接続され、オア回路OR1の出力は、アンド回路AND4の入力に接続される。アンド回路AND4は、応答処理信号MOP-Vとオア回路OR1の出力信号の論理積をオーダークロス信号ODR-CRS-Vとして出力する。応答処理信号MOP-Vは、ムーブアウトポートMOPに設定されたL2キャッシュ12へのオーダーに対する応答がパイプラインL3Pで処理されているときにハイレベルに設定され、オーダーに対する応答の処理が完了されたときにロウレベルに設定される。
クロスフラグ信号CRS-FLGは、L3キャッシュ20が発行する共有オーダーMB-SHに対するクロスフラグCRS付きの応答NO-MB-SH(CRS)をL2キャッシュ12から受信した場合、ハイレベルに設定される。また、クロスフラグ信号CRS-FLGは、共有オーダーMB-SHに対するクロスフラグCRS付きの応答NO-MB-SH(CRS)をL2キャッシュ12から受信していない場合、ロウレベルに設定される。
オーダータグ信号O-L2TAG-Vは、共有オーダーMB-SHの対象データのL2キャッシュ12への持ち出し(V状態)を参照タグ部L2TAGが示す場合、ハイレベルに設定される。また、オーダータグ信号O-L2TAG-Vは、対象データがL2キャッシュ12に持ち出されていないこと(I状態)を参照タグ部L2TAGが示す場合、ロウレベルに設定される。
例えば、図4の動作において、L3キャッシュ20がライトバックリクエストWRBKを受信する前、クロスフラグ信号CRS-FLGは、ロウレベルに設定され、オーダータグ信号O-L2TAG-Vは、ハイレベルに設定される。オーダータグ信号O-L2TAG-Vは、L3キャッシュ20がライトバックリクエストWRBKを受信し、Victimデータをタグ部L3TAGに書き戻したとき、ロウレベルに設定される。
そして、クロスコアフラグ信号CRS-FLGは、L3キャッシュ20が共有オーダーMB-SHに対応するクロスフラグ付きの応答NO-MB-SH(CRS)を処理している間、ハイレベルに設定される。このため、L3キャッシュ20がライトバックリクエストWRBKを受信後に応答NO-MB-SH(CRS)を受信する場合、クロスフラグ信号CRS-FLGとオーダータグ信号O-L2TAG-Vとが、ともにハイレベルに設定される期間は存在しない。したがって、図4の動作では、共有オーダーMB-SHに対する応答を待つ、応答処理信号MOP-Vがハイレベルの期間に、オーダークロス信号ODR-CRS-Vがハイレベルに変化することはない。このため、アボート信号ABT-CRSがハイレベルに変化することない。
一方、図6に示すように、ライトバックリクエストWRBKを受信する前に応答NO-MB-SH(CRS)を受信する場合、オーダータグ信号O-L2TAG-Vがロウレベルに変化する前にクロスフラグ信号CRS-FLGがハイレベルに変化する。これにより、クロスフラグ信号CRS-FLGとオーダータグ信号O-L2TAG-Vとがともにハイレベルの期間が発生し、対応するアンド回路AND(AND0~3のいずれか)は、クロス状態を示すハイレベルを出力する。
ここで、クロス状態とは、応答NO-MB-SH(CRS)より先にL2キャッシュ12から出力されたライトバックリクエストWRBKを、L3キャッシュ20が、応答NO-MB-SH(CRS)より後に受信することを示す。クロス状態が発生した場合、オーダークロス信号ODR-CRS-Vがハイレベルに変化し、アボート信号ABT-CRSがハイレベルに変化する。パイプラインL3Pは、アボート判定部ABTJDGから出力されるアボート信号ABT-CRSがハイレベルの場合、対象の応答NO-MB-SH(CRS)をアボートする。
したがって、図6に示すように、L3キャッシュ20は、ライトバックリクエストWRBKを処理するまで、対象データが同じ応答NO-MB-SH(CRS)をアボートし続けることができる。この結果、CPU100およびキャッシュシステムの誤動作を抑止することができ、データのコヒーレンシを維持することができる。
なお、ムーブアウトポートMOPは、共有オーダーMB-SHを発行した全てのコア10から応答(NO-MB-SHまたはNO-MB-SH(CRS))を受信したことに基づいて、応答をパイプラインL3Pに投入する。
図8は、図1のCPU100に搭載される別のL3キャッシュ20Aの要部の一例(比較例)を示す。L3キャッシュ20Aの構成は、ライトバックポートWBPを持たないことを除き、図2のL3キャッシュ20と同様の構成である。なお、図8のプライオリティ回路PRIOおよびアボート判定部ABTJDGの機能の一部は、図2のプライオリティ回路PRIOおよびアボート判定部ABTJDGの機能と相違する。
図9は、図8のL3キャッシュ20Aを有するCPU100の動作の一例を示す。図3と同様の動作については、詳細な説明は省略する。図9は、L2キャッシュ12がリプレースバッファRPBを有する場合の動作の例を示す。リードリクエストMI-SHを受信したL3キャッシュ20が、キャッシュミスしてメインメモリにリード要求を発行し、メインメモリから受信したデータを応答DOW(E)としてL2キャッシュ12に出力する動作は、図3と同様である。
L2キャッシュ12は、リードリクエストMI-SHをL3キャッシュ20に発行する場合、追い出し対象のVictimデータ(M状態)をリプレースバッファRPBに格納し、対応するタグ領域のタグ情報をM状態からI状態に変更する。L3キャッシュ20は、リードリクエストMI-SHの受信に基づいて、参照タグ部L2TAGを検索し、M状態のVictimデータの返却を指示するリプレースオーダーMO-REをL2キャッシュ12に発行する。この際、L3キャッシュ20は、ムーブアウトポートMOPを予約し、予約したMOPに対応する資源ロック部L3OLKのエントリにリプレースオーダーMO-REの対象アドレスを格納し、資源カウンタL3OCNTをインクリメントする。
L2キャッシュ12は、L3キャッシュ20からリプレースオーダーMO-REの受信に基づいて、リプレースバッファRPBに保持したVictimデータを、リプレースオーダーMO-REの応答としてL3キャッシュ20に発行する。L3キャッシュ20は、リプレースオーダーMO-REの応答に含まれるVictimデータをデータキャッシュ部L3DTに書き戻し、参照タグ部L2TAGの対象領域をV状態からI状態に変更する。また、L3キャッシュ20は、受信したリプレースオーダーMO-REの応答に対応する資源ロック部L3OLKのエントリを解放し、資源カウンタL3OCNTをデクリメントする。
図10は、図8のL3キャッシュ20Aを有するCPU100の動作の別の例を示す。図4と同様の動作については、詳細な説明は省略する。図10は、L2キャッシュ12がリプレースバッファRPBを有する場合の動作の例を示す。他のコア10からリードリクエストMI-SHを受信したL3キャッシュ20が、L2キャッシュ12に共有オーダーMB-SHを発行する動作は、図4と同様である。また、リードリクエストMI-SHを受信したL3キャッシュ20が、キャッシュミスしてメインメモリにリード要求を発行し、メインメモリから受信したデータを応答DOW(E)としてL2キャッシュ12に出力する動作は、図4と同様である。
L2キャッシュ12は、図9と同様に、リードリクエストMI-SHをL3キャッシュ20に発行する場合、追い出し対象のVictimデータ(M状態)をリプレースバッファRPBに格納し、タグ情報をM状態からI状態に変更する。図10では、L2キャッシュ12は、リプレースバッファRPBに保持したVictimデータに対する共有オーダーMB-SHを受信する。
L2キャッシュ12は、リプレースバッファRPBに保持したVictimデータを取り出し、取り出したVictimデータを共有オーダーMB-SHに対する応答に含めて、L3キャッシュ20に発行する。また、L2キャッシュ12は、リプレースバッファRPBに保持しているVictimデータをM状態からS状態に変更する。
L3キャッシュ20は、共有オーダーMB-SHの応答により、リプレースオーダーMO-REの応答で受けるべきVictimデータを受信し、受信したVictimデータをデータキャッシュ部L3DTにライトバックする。そして、L3キャッシュ20は、Victimデータのさらなる転送が不要であることを示すリプレースオーダーNO-MO-REをL2キャッシュ12に発行する。リプレースオーダーNO-MO-REの"NO"は、応答にデータの付加が不要であることを示す。リプレースオーダーNO-MO-REを受信したL2キャッシュ12は、リプレースバッファRPBに保持しているVictimデータを削除する。
図9および図10では、各コア10に搭載されるL2キャッシュ12は、リプレースバッファRPBを有する。このため、リプレースバッファ分のハードウェアの回路規模が増大し、CPU100のチップサイズおよび消費電力が増大してしまう。
図11は、図8のL3キャッシュ20Aを有するCPU100の動作のさらなる別の例を示す。図3および図9と同様の動作については、詳細な説明は省略する。図11は、L2キャッシュ12がムーブインデータバッファMIDQを有する場合の動作の例を示す。リードリクエストMI-SHを受信したL3キャッシュ20が、キャッシュミスしてメインメモリにリード要求を発行し、メインメモリから受信したデータを応答DOW(E)としてL2キャッシュ12に出力する動作は、図3と同様である。
リードリクエストMI-SHを受信したL3キャッシュ20は、参照タグ部L2TAGを検索し、M状態のVictimデータの返却を指示するリプレースオーダーをL2キャッシュ12に発行する。L2キャッシュ12は、L3キャッシュ20からのリプレースオーダーMO-REの受信に基づいて、VictimデータをリプレースオーダーMO-REの応答に含めてL3キャッシュ20に発行し、タグ情報をM状態からI状態に変更する。
L3キャッシュ20は、リプレースオーダーMO-REの応答に含まれるVictimデータをデータキャッシュ部L3DTに書き戻し、参照タグ部L2TAGの対象領域をV状態からI状態に変更する。L3キャッシュ20は、メインメモリから受信したリードリクエストMI-SHの対象データを応答DOW(E)としてL2キャッシュ12に発行する。
リプレースオーダーMO-REとリードリクエストMI-SHの応答DOW(E)のL2キャッシュ12への到着順は保証されない。このため、L2キャッシュ12が、リプレースオーダーMO-REより先にリードリクエストMI-SHの応答DOW(E)を受信した場合、L2キャッシュ12の追い出し対象のVictimデータが応答DOW(E)に含まれるデータで書き換わる可能性がある。
これを抑止するため、L2キャッシュ12は、応答DOW(E)に含まれるデータを一時的にムーブインデータバッファMIDQに格納する。そして、L2キャッシュ12は、リプレースオーダーMO-REの応答としてVictimデータを追い出すまで、応答DOW(E)に含まれるデータをムーブインデータバッファMIDQに保持する。なお、この例では、リプレースオーダーMO-REが応答DOW(E)より先に到着する。このため、L2キャッシュ12は、ムーブインデータバッファMIDQに格納したデータをL2キャッシュ12にすぐに格納し、対応するキャッシュラインをI状態からE状態に設定する。
図12は、図8のL3キャッシュ20Aを有するCPU100の動作の別の例を示す。図4、図10および図11と同様の動作については、詳細な説明は省略する。図12は、L2キャッシュ12がムーブインデータバッファMIDQを有する場合の動作の例を示す。他のコア10からリードリクエストMI-SHを受信したL3キャッシュ20が、L2キャッシュ12に共有オーダーMB-SHを発行する動作は、図4と同様である。リードリクエストMI-SHを受信したL3キャッシュ20が、キャッシュミスしてメインメモリにリード要求を発行し、メインメモリから受信したデータを応答DOW(E)としてL2キャッシュ12に出力する動作は、図4と同様である。また、応答DOW(E)に含まれるデータを、ムーブインデータバッファMIDQを介してL2キャッシュ12に格納する動作は図11と同様である。
L3キャッシュ20は、図4と同様に、L2キャッシュ12からのリードリクエストMI-SHを受信する前に、他のコア10のL2キャッシュ12からリードリクエストMI-SHを受信し、キャッシュヒットを判定する。L3キャッシュ20は、他のコア10からのリードリクエストMI-SHの対象データをL2キャッシュ12が状態Mで保持しているため、L2キャッシュ12に共有オーダーMB-SHを発行する。
共有オーダーMB-SHを受信したL2キャッシュ12は、共有オーダーMB-SHの対象データ(Victimデータを兼ねる)を共有オーダーMB-SHの応答としてL3キャッシュ20に発行する。また、L2キャッシュ12は、応答するデータを保持していたキャッシュラインの状態をM状態からI状態に変更する。
L3キャッシュ20は、共有オーダーMB-SHの応答に含まれるデータをデータキャッシュ部L3DTに格納(ライトバック)する。図10と同様に、L3キャッシュ20は、共有オーダーMB-SHの応答によりVictimデータを受信するため、Victimデータの転送が不要であることを示すリプレースオーダーNO-MO-REをL2キャッシュ12に発行する。L2キャッシュ12は、リプレースオーダーNO-MO-REに基づいて、Victimデータを返却済みであると判断する。その後の動作は、図11と同様である。
図11および図12では、リプレースバッファRPBの資源削減ができる反面、新たにムーブインデータバッファMIDQのようなデータバッファ資源が必要になる。このため、キャッシュシステム全体として資源の削減にはならないという問題がある。また、図11および図12において、リプレースオーダーMO-REのL2キャッシュ12への到着が遅延すると、ムーブインデータバッファMIDQなど各種資源を占有する時間も伸びてしまう。このため、高スループットを持続させるためには、より多くのムーブインデータバッファMIDQのエントリを確保する必要があり、回路規模が増大してしまう。
以上、図1から図7に示す実施形態では、L3キャッシュ20は、ライトバックリクエストWRBKと対象アドレスが同じリードリクエストMI-SHを、ライトバックリクエストWRBKより前に受信した場合、リードリクエストMI-SHをアボートする。また、L3キャッシュ20は、参照タグ部L2TAGがV状態の応答NO-MB-SH(CRS)を受信した場合、ライトバックリクエストWRBKにより参照タグ部L2TAGがI状態になるまで、応答NO-MB-SH(CRS)をアボートする。
これにより、ライトバックされる前の誤ったデータが、リードリクエストMI-SHに基づいて応答されることを抑止することができる。また、ライトバックされる前の誤ったデータが、応答NO-MB-SH(CRS)に基づいて他のコア10に転送されることを抑止することができる。この際、パイプラインL3Pは、応答NO-MB-SH(CRS)に付加されたクロスフラグCRSに基づいて、共有オーダーMB-SHの応答で返却されるべきデータが既に返却済みであると検出することができる。
この結果、L2キャッシュ12にリプレースバッファRPBまたはムーブインデータバッファMIDQを設けることなく、リプレース処理中に発生するアクセスの順序関係を保証することができる。すなわち、CPU100およびキャッシュシステムの誤動作を抑止することができ、データのコヒーレンシを維持することができる。
L2キャッシュ12は、コア10毎に存在するため、リプレースバッファRPBまたはムーブインデータバッファMIDQを削除することによるCPU100のチップサイズの削減効果は大きい。したがって、リプレースバッファRPBまたはムーブインデータバッファMIDQ等のデータバッファ資源を設けることなく、リプレース処理を誤動作させることなく実行することができ、データのコヒーレンシを維持することができる。
L3キャッシュ20は、リードリクエストMI-SH等を受信するムーブインポートMIPとは別にライトバックリクエストWRBKを受信するライトバックポートWBPを有する。これにより、リードリクエストMI-SHの処理と無関係にライトバックリクエストWRBKをパイプラインL3Pに投入することができ、リードリクエストMI-SHとライトバックリクエストWRBKとの競合を抑止することができる。この結果、ライトバックリクエストWRBKまたはフラッシュバックリクエストFLBKが、リードリクエストMI-SH等の他のリクエストにより待たされることを抑止することができ、パイプラインL3Pのデッドロックを抑止することができる。したがって、キャッシュシステムの処理性能の低下を抑止することができる。
L3キャッシュ20からのリプレースオーダーMO-REを待つことなく、リードリクエストMI-SHの発行に続いてライトバックリクエストWRBKを発行することで、L2キャッシュ12からVictimデータを迅速に追い出すことができる。この結果、リプレース処理中にL3キャッシュ20から発行するリプレースオーダーMO-REを不要にすることができ、リプレース処理を簡易にすることができる。
図13は、別の実施形態におけるCPUの概要を示す。図13に示すCPU100Bは、図1のL3キャッシュ20およびオンチップネットワーク30の代わりに、L3キャッシュ20Bおよびオンチップネットワーク30Bを有する。また、CPU100Bは、コア10とL3キャッシュ20Bとの間にコアインタフェースバス15Bを有する。CPU100Bのその他の構成は、図1に示したCPU100の構成と同様である。
この実施形態では、L3キャッシュ20Bは、ハッシュアドレスHA[9:8]で識別される4つのL3バンクBK(BK0~BK3)を有する。L3バンクBK0~BK3は、図2に示したL3キャッシュ20の構成をそれぞれ有し、互いに独立に動作する。なお、L3バンクBKの数は、4つに限定されず、2つでもよく、8つでもよい。
例えば、各コア10のL2キャッシュ12は、キャッシュミス時にリードリクエストMI-SHを発行するL3バンクBKを、アドレスをハッシュ関数に入力することにより求める。そして、L2キャッシュ12は、求めたL3バンクBKにリードリクエストMI-SHを発行する。また、各コア10のL2キャッシュ12は、ライトバックリクエストWRBKのアドレスが割り当てられたL3バンクBKをハッシュ関数により求める。そして、L2キャッシュ12は、求めたL3バンクBKにライトバックリクエストWRBKを発行する。
これにより、ハッシュアドレスHA[9:8]に応じて、リードリクエストMI-SHおよびライトバックリクエストWRBKを発行するL3バンクBKを分散させることができる。この結果、特定のL3バンクBKにアクセスが集中するバンクコンフリクトを軽減することができる。
この実施形態では、ハッシュアドレスHA[9:8]の各ビットは、物理アドレスPA[9:8]、PA[11:10]、PA[13:12]の排他的論理和により算出される。すなわち、ハッシュ関数は、物理アドレスPA[9:8]、PA[11:10]、PA[13:12]の排他的論理和である。図中の符号"^"は、排他的論理和を示す。なお、ハッシュアドレスHA[9:8]は、他のハッシュ関数を使用して算出されてもよく、ハッシュアドレスHAを割り当てるビット位置は、[9:8]に限定されない。
コアインタフェースバス15Bは、L2キャッシュ12が出力するリクエストに含まれるハッシュアドレスHA[9:8]に応じてL3バンクBKを選択し、選択したL3バンクBKにリクエストを出力する。また、コアインタフェースバス15Bは、L3バンクBKが出力するオーダーに含まれるアドレスに応じてL2キャッシュ12を選択し、選択したL2キャッシュ12にオーダーを出力する。なお、ハッシュアドレスHAは、コアインタフェースバス15Bにより算出されてもよい。
ところで、図8に示したL3キャッシュ20Aでは、図9~図12に示したように、リードリクエストMI-SHを受信したL3キャッシュ20がリプレースオーダーMO-REを発行する。すなわち、リードリクエストMI-SHを受信するL3バンクBKと、リプレースオーダーMO-REを発行するL3バンクBKとは同じである。換言すれば、リードリクエストMI-SHを受信するL3バンクBKと、Victimキャッシュラインのアドレスを管理するL3バンクBKは、一致している必要がある。このため、図9~図12に示した動作を実行するCPU100では、ハッシュアドレス方式を採用することができず、バンクコンフリクトを軽減することが困難である。
図13に示すCPU100Bの動作は、L3キャッシュ20がL3バンクBKに置き換わり、リードリクエストMI-SHとライトバックリクエストWRBKとの発行先のL3バンクBKが異なることを除き、図3~図6に示す動作と同様である。なお、図13に示すCPU100Bの動作において、図4および図5の共有オーダーMB-SHの発行元のL3バンクBKは、ライトバックリクエストWRBKを受信するL3バンクBKと同じである。
図14は、図13のL3キャッシュ20Bにおいて、L3バンクBKを選択するハッシュアドレスHA[9:8]を生成する一例を示す。ハッシュアドレスHA[9]は、物理アドレスPA[13]、PA[11]、PA[9]の排他的論理和により生成される。ハッシュアドレスHA[8]は、物理アドレスPA[12]、PA[10]、PA[8]の排他的論理和により生成される。物理アドレスPA[9:8]は、L3バンクBKに元々割り当てられたアドレスである。
以上、図13および図14に示す実施形態においても、図1~図7に示した実施形態と同様の効果を得ることができる。さらに、図13および図14に示す実施形態では、ハッシュアドレスHA[9:8]に応じて、リードリクエストMI-SHおよびライトバックリクエストWRBKを発行するL3バンクBKを分散させることができる。この結果、上位キャッシュがライトバックリクエストWRBKを発行するキャッシュシステムにおいて、リクエストの発行先の下位のL3バンクBKを分散させることができ、バンクコンフリクトの発生を軽減することができる。
図15は、別の実施形態におけるCPUの概要を示す。図13と同様の要素については同じ符号を付し、詳細な説明は省略する。図15に示すCPU100Cは、図1のL3キャッシュ20およびオンチップネットワーク30の代わりに、L3キャッシュ20Cおよびオンチップネットワーク30Bを有する。また、CPU100Bは、コア10とL3キャッシュ20Bとの間にコアインタフェースバス15Bを有する。CPU100Cのその他の構成は、図1に示したCPU100の構成と同様である。
この実施形態では、L3キャッシュ20Cは、物理アドレスPA[9:8]で識別される4つのL3バンクBK(BK0~BK3)を有する。L3バンクBK0~BK3は、図2に示した構成をそれぞれ有し、互いに独立に動作する。L2キャッシュ12は、コア10からのリード要求がキャッシュミスした場合、対象アドレスが割り当てられたL3バンクBKにリードリクエストMI-SHを発行する。その後、L2キャッシュ12は、リードリクエストMI-SHを発行したL3バンクBKにライトバックリクエストWRBKを発行する。図15に示すCPU100Cの動作は、L3キャッシュ20がL3バンクBKに置き換わることを除き、図3~図6に示す動作と同様である。
以上、図15に示す実施形態においても、図1~図7に示した実施形態と同様の効果を得ることができる。例えば、物理アドレスPAで識別される複数のL3バンクBKを有する場合においても、データバッファ資源を設けることなく、リプレース処理中に発生するアクセスの順序関係を保証することができ、データのコヒーレンシを維持することができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
10 コア
11 L1キャッシュ
12 L2キャッシュ
15B コアインタフェースバス
20、20A、20B、20C L3キャッシュ
30、30B オンチップネットワーク
40 ホームエージェント
50 メモリコントローラ
60 チップ間インターコネクト
70 通信制御部
BK(BK0~BK3) L3バンク
CRS クロスフラグ
DB データバス
DOW(E) 応答
HA ハッシュアドレス
JDG1 第1判定部
JDG2 第2判定部
L2TAG 参照タグ部
L3DT データキャッシュ部
L3OCNT 資源カウンタ
L3OLK 資源ロック部
L3P パイプライン
L3TAG タグ部
MB-SH 共有オーダー
MIDQ ムーブインデータバッファ
MIP ムーブインポート
MIP-V リクエスト処理信号
MI-SH リードリクエスト
MOP ムーブアウトポート
MOP-V 応答処理信号
MO-RE リプレースオーダー
O-L2TAG-V オーダータグ信号
PRIO プライオリティ回路
R-L2TAG-V リクエストタグ信号
RPB リプレースバッファ
WBDB ライトバックデータバス
WBDQ ライトバックデータキュー
WBP ライトバックポート
WRBK ライトバックリクエスト

Claims (7)

  1. 命令を実行する演算部と、前記演算部に接続される上位キャッシュと、前記上位キャッシュに接続される下位キャッシュと、を有する半導体装置であって、
    前記下位キャッシュは、
    前記上位キャッシュから受信するリード命令を保持する第1ポートと、
    前記上位キャッシュから受信するライトバック命令を保持する第2ポートと、
    前記第1ポートから投入される前記リード命令および前記第2ポートから投入される前記ライトバック命令を処理する処理部と、
    データを保持するキャッシュ部と、
    前記上位キャッシュの状態を示す上位キャッシュタグと、を有し、
    前記処理部は、前記第1ポートから投入された前記リード命令の対象アドレスのデータを前記上位キャッシュが所持していることを前記上位キャッシュタグが示す場合、前記対象アドレスのデータを前記上位キャッシュが所持していないことを前記上位キャッシュタグが示すまで、前記第1ポートから投入された前記リード命令をアボートする
    半導体装置。
  2. 前記処理部は、前記第2ポートから投入される前記ライトバック命令の処理により、前記上位キャッシュから追い出された前記対象アドレスのデータを前記キャッシュ部に上書きし、前記上位キャッシュが前記対象アドレスのデータを所持していないことを示す状態に前記上位キャッシュタグを更新した後、前記第1ポートから投入された前記リード命令の処理を実行する
    請求項1に記載の半導体装置。
  3. 前記下位キャッシュは、
    前記上位キャッシュに発行する追い出し命令に対する追い出し応答を前記上位キャッシュから受信する第3ポートを有し、
    前記追い出し応答が追い出し対象のデータを含んでいないことを示し、前記上位キャッシュタグが前記追い出し対象のデータを所持していることを示す場合、前記上位キャッシュタグが前記追い出し対象のデータを前記上位キャッシュが所持していないことを示す状態に変化するまで、前記第3ポートから投入された前記追い出し応答をアボートする
    請求項1または請求項2に記載の半導体装置。
  4. 前記下位キャッシュは、前記第2ポートから投入される前記ライトバック命令の処理により、前記上位キャッシュから追い出された前記追い出し対象のデータを前記上位キャッシュが所持していないことを示す状態に前記上位キャッシュタグを更新した後、前記第3ポートから投入された前記追い出し応答の処理を前記追い出し対象のデータを使用して実行する
    請求項3に記載の半導体装置。
  5. 前記上位キャッシュは、
    前記演算部から受信したロード命令がキャッシュミスした場合、前記リード命令を前記下位キャッシュに発行し、
    前記リード命令の応答に含まれるデータを格納する領域を確保するために、追い出しデータを含む前記ライトバック命令を前記下位キャッシュに発行する
    請求項1ないし請求項4のいずれか1項に記載の半導体装置。
  6. 前記下位キャッシュは、データを保持する複数のキャッシュブロックを含む複数のバンクを有し、
    前記複数のキャッシュブロックのアドレスは、前記複数のバンクにまたがって分散して割り当てられる
    請求項1ないし請求項5のいずれか1項に記載の半導体装置。
  7. 前記複数のキャッシュブロックに割り当てられるアドレスは、物理アドレスをハッシュ関数に入力して得られるハッシュアドレスである
    請求項6に記載の半導体装置。
JP2020118410A 2020-07-09 2020-07-09 半導体装置 Pending JP2022015514A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020118410A JP2022015514A (ja) 2020-07-09 2020-07-09 半導体装置
US17/223,175 US11409656B2 (en) 2020-07-09 2021-04-06 Semiconductor device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020118410A JP2022015514A (ja) 2020-07-09 2020-07-09 半導体装置

Publications (1)

Publication Number Publication Date
JP2022015514A true JP2022015514A (ja) 2022-01-21

Family

ID=79172545

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020118410A Pending JP2022015514A (ja) 2020-07-09 2020-07-09 半導体装置

Country Status (2)

Country Link
US (1) US11409656B2 (ja)
JP (1) JP2022015514A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240070082A1 (en) * 2022-08-30 2024-02-29 Micron Technology, Inc. Evicting a cache line with pending control request

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62203252A (ja) 1986-03-03 1987-09-07 Fujitsu Ltd キヤツシユメモリ制御方式
JPH0492938A (ja) 1990-08-06 1992-03-25 Fujitsu Ltd キャッシュメモリ制御方式
US6385703B1 (en) * 1998-12-03 2002-05-07 Intel Corporation Speculative request pointer advance for fast back-to-back reads
TWI273408B (en) * 2005-11-25 2007-02-11 Inventec Corp Cache memory data restoring method

Also Published As

Publication number Publication date
US20220012175A1 (en) 2022-01-13
US11409656B2 (en) 2022-08-09

Similar Documents

Publication Publication Date Title
US11803486B2 (en) Write merging on stores with different privilege levels
CN110209601B (zh) 存储器接口
US7827354B2 (en) Victim cache using direct intervention
US7305523B2 (en) Cache memory direct intervention
US7698508B2 (en) System and method for reducing unnecessary cache operations
US6675265B2 (en) Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants
EP2430551B1 (en) Cache coherent support for flash in a memory hierarchy
EP0817073B1 (en) A multiprocessing system configured to perform efficient write operations
US6640287B2 (en) Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests
JP3900478B2 (ja) 不均等メモリ・アクセス(numa)コンピュータ・システム及び該コンピュータ・システムを操作する方法
US7669018B2 (en) Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
JP3924203B2 (ja) マルチノード・コンピュータ・システムにおける非集中グローバル・コヒーレンス管理
JP3900481B2 (ja) 不均等メモリ・アクセス(numa)コンピュータ・システムを操作する方法、メモリ制御装置、メモリ・システム、該メモリ・システムを含むノード及びnumaコンピュータ・システム
US6738868B2 (en) System for minimizing directory information in scalable multiprocessor systems with logically independent input/output nodes
JP3898984B2 (ja) 不均等メモリ・アクセス(numa)コンピュータ・システム
JP5445581B2 (ja) コンピュータシステム、制御方法、記録媒体及び制御プログラム
US10545870B2 (en) Arithmetic processing device and arithmetic processing device control method
US20100217939A1 (en) Data processing system
JP6687845B2 (ja) 演算処理装置及び演算処理装置の制御方法
WO2007099643A1 (ja) マルチプロセッサシステム及びマルチプロセッサシステムの動作方法
JP2022015514A (ja) 半導体装置
JP3732397B2 (ja) キャッシュシステム
US9983994B2 (en) Arithmetic processing device and method for controlling arithmetic processing device
JP2022509735A (ja) 記憶されたデータの変更装置及び変更方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230407

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240220