JP4843717B2 - 演算処理装置および演算処理装置の制御方法 - Google Patents

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

Info

Publication number
JP4843717B2
JP4843717B2 JP2009554147A JP2009554147A JP4843717B2 JP 4843717 B2 JP4843717 B2 JP 4843717B2 JP 2009554147 A JP2009554147 A JP 2009554147A JP 2009554147 A JP2009554147 A JP 2009554147A JP 4843717 B2 JP4843717 B2 JP 4843717B2
Authority
JP
Japan
Prior art keywords
prefetch
request
processing unit
shared
entry
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.)
Expired - Fee Related
Application number
JP2009554147A
Other languages
English (en)
Other versions
JPWO2009104240A1 (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 JPWO2009104240A1 publication Critical patent/JPWO2009104240A1/ja
Application granted granted Critical
Publication of JP4843717B2 publication Critical patent/JP4843717B2/ja
Expired - Fee Related 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • 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

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)

Description

本発明は、第1及び第2の演算処理部と、第1及び第2の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有し、記憶装置に接続される演算処理装置および演算処理装置の制御方法に関し、特に、第1及び第2の演算処理部から共有キャッシュメモリへのプリフェッチ要求の処理効率を向上させる演算処理装置および演算処理装置の制御方法に関する。
一般に、CPU(Central Processing Unit)などの制御処理装置を有する情報処理装置において、CPUの処理速度を向上させるため、使用頻度が高いデータをメインメモリとは別のキャッシュメモリに記憶することがおこなわれる。
キャッシュメモリは、メインメモリよりも容量は小さいが、高速アクセスが可能であるため、演算処理部を有するCPUにキャッシュメモリを内蔵し、演算処理部からの使用頻度が高いデータを随時置き換えながらキャッシュメモリに記憶させておくことで、処理の高速化を図ることができる。
また、より処理の高速化を図るために、階層的にキャッシュメモリを設け、CPUの演算処理部は、処理の際に、先ず最も高速アクセス可能な1次キャッシュ(以下、L1キャッシュと呼ぶ)にアクセスする。
その際、L1キャッシュに必要なデータがない場合には、(以下、L1キャッシュミスと呼ぶ)、2次キャッシュ(以下、L2キャッシュと呼ぶ)にデマンド要求(以下、DMと呼ぶ)を発行し、L1キャッシュミスが発生したデータに対してアクセスを要求するという制御をおこなっている。
ところで、CPUの処理性能を向上させるため、演算部として1つのCPUに複数のCPUプロセッサコア(以下、CPUコアと呼ぶ)が搭載されることがある。
近年では、このようなマルチコアプロセッサとして、ワンチップ上に複数のCPUコアを実装するオンチップマルチコアプロセッサが普及してきている。
オンチップマルチコアプロセッサが採用される場合、L1キャッシュを各CPUコア内に設け、1つのL2キャッシュを複数のCPUコアが共有する構成を取ることが一般的である。
しかし、このように、1つのL2キャッシュを複数のCPUコアで共有する構成である場合、L2キャッシュへのアクセスが集中するおそれがある。
そこで、例えば、特許文献1に開示されるように、L2キャッシュへのアクセスのうち、DMと、CPUコアが必要データを予測して先読みするプリフェッチ要求(以下、PFと呼ぶ)とに分け、CPUコアごとに要求ごとの専用ポート(DMに対してはMIPORT(Move In PORT)、PFに対してはPFPORT(Pre Fetch Port))を介してL2キャッシュにアクセスするキャッシュメモリ制御装置が提案されている。
特開2006−40090号公報
しかしながら、上記特許文献1に代表される従来技術では、L2キャッシュへのPFがほぼ必ず処理される実装の場合において、資源枯渇などの理由により完了しなかったPFは、PFPORTに再投入される。
しかしながら、PFPORTのエントリに空きがない場合には、エントリが空くまで待機させられるので、PF全体のスループットの低下を招いていた。
本発明は、上記問題点(課題)を解消するためになされたものであって、複数のCPUコアによりL2キャッシュが共有される構成において、CPUコアからL2キャッシュへのPFがほぼ必ず処理される実装である場合、資源枯渇などの理由により処理完了しなかったPFが効率的に再処理され、PF全体のスループットを向上させることが可能な演算処理装置および演算処理装置の制御方法を提供することを目的とする。
上述した問題を解決し、目的を達成するため、本発明は、第1及び第2の演算処理部と、前記第1及び第2の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有し、記憶装置に接続される演算処理装置において、前記第1の演算処理部は、第1のキャッシュメモリを有するとともに、前記第1のキャッシュメモリに予めデータを読み込むプリフェッチ要求を、前記共有キャッシュメモリ又は記憶装置に対して発行し、前記第2の演算処理部は、第2のキャッシュメモリを有するとともに、前記第2のキャッシュメモリに予めデータを読み込むプリフェッチ要求を、前記共有キャッシュメモリ又は記憶装置に対して発行し、前記共有キャッシュメモリ制御部は、前記共有キャッシュメモリに対する前記プリフェッチ要求の処理を行うプリフェッチ処理部と、前記第1の演算処理部からのプリフェッチ要求のみを保持するとともに、前記第1の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行する第1のプリフェッチ記憶部と、前記第2の演算処理部からのプリフェッチ要求のみを保持するとともに、前記第2の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行する第2のプリフェッチ記憶部と、前記第1又は第2のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、前記完了できなかったプリフェッチ要求をエントリに保持するとともに、前記完了できなかったプリフェッチ要求を前記プリフェッチ処理部に発行する共有プリフェッチ記憶部を有することを特徴とする。
また、本発明は、上記発明において、前記プリフェッチ処理部は、前記第1又は第2のプリフェッチ記憶部から発行された前記プリフェッチ要求が完了できなかった場合に、前記共有プリフェッチ記憶部が有する前記エントリに既に保持されているプリフェッチ要求の対象アドレスとプリフェッチ要求の種類が、前記完了できなかったプリフェッチ要求の対象アドレスとプリフェッチ要求の種類と、それぞれ一致するときは、前記完了できなかったプリフェッチ要求を前記エントリに既に保持されているプリフェッチ要求とマージすることを特徴とする。
また、本発明は、上記発明において、前記プリフェッチ処理部は、前記第1又は第2のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、前記第1又は第2のキャッシュメモリに対して既に発行されたロード要求の対象アドレスとプリフェッチ要求の種類が、前記完了できなかったプリフェッチ要求の対象アドレスとプリフェッチ要求の種類と、それぞれ一致するときは、前記完了できなかったプリフェッチ要求を前記エントリから消去することを特徴とする。
また、本発明は、上記発明において、前記第1及び第2のキャッシュメモリが有するキャッシュラインは、前記共有キャッシュメモリのサブラインとして、前記共有キャッシュメモリのキャッシュラインのサイズのN分の1(Nは整数)のサイズを有し、前記第1及び第2のプリフェッチ記憶部と前記共有プリフェッチ記憶部は、前記サブライン単位でプリフェッチを前記共有プリフェッチ記憶部が有するエントリに保持することを特徴とする。
また、本発明は、上記発明において、前記第1及び第2のキャッシュメモリが有するキャッシュラインは、前記共有キャッシュメモリのサブラインとして、前記共有キャッシュメモリのキャッシュラインのサイズのN分の1(Nは整数)のサイズを有し、前記プリフェッチ処理部は、前記完了できなかったプリフェッチ要求を、前記第1又は第2のプリフェッチ記憶部から前記サブライン単位で消去することを特徴とする。
また、本発明は、上記発明において、前記共有キャッシュメモリ制御部はさらに、前記第1又は第2のキャッシュメモリに対して既に発行されたロード要求を保持するロード要求記憶部をさらに有し、前記プリフェッチ処理部は、前記第1又は第2のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、前記ロード要求記憶部に既に保持されたロード要求の対象アドレスと、前記完了できなかったプリフェッチ要求との間において、前記ロード要求と前記完了できなかったプリフェッチ要求の対象アドレスが一致するとき、前記完了できなかったプリフェッチ要求を前記共有プリフェッチ記憶部が有するエントリに保持することを特徴とする。
また、本発明は、上記発明において、前記共有プリフェッチ記憶部は、前記第1又は第2のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、前記完了できなかったプリフェッチ要求が、プリフェッチ処理を必ず処理しなければならない属性であるとき、前記完了できなかったプリフェッチ要求を前記共有プリフェッチ記憶部が有するエントリに保持することを特徴とする。
また、本発明は、第1及び第2の演算処理部と、前記第1及び第2の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有するともに、記憶装置に接続された演算処理装置において、前記第1の演算処理部は、第1のキャッシュメモリを有するとともに、前記第1のキャッシュメモリに対してロード要求又は予めデータを読み込むプリフェッチ要求を発行し、前記第2の演算処理部は、第2のキャッシュメモリを有するとともに、前記第2のキャッシュメモリに対してロード要求又は予めデータを読み込むプリフェッチ要求を発行し、前記共有キャッシュメモリ制御部は、前記第1及び第2のロード要求を保持するロード要求記憶部と、前記共有キャッシュメモリに対する前記プリフェッチ要求の処理を行うプリフェッチ処理部と、前記第1の演算処理部からのプリフェッチ要求を、第1の待ち合わせフラグを有する第1のエントリに保持するとともに、前記第1の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行する第1のプリフェッチ記憶部と、前記第2の演算処理部からのプリフェッチ要求を、第2の待ち合わせフラグを有する第2のエントリに保持するとともに、前記第2の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行する第2のプリフェッチ記憶部を有するとともに、前記第1又は第2のプリフェッチ記憶部から前記プリフェッチ処理部に発行したプリフェッチ要求の対象アドレスと前記ロード要求記憶部に既に保持されたロード要求の対象アドレスとが一致しないことにより、前記第1又は第2の待ち合わせフラグを前記プリフェッチ要求に対応する前記第1又は第2のエントリにそれぞれセットするとともに、前記第1又は第2の待ち合わせフラグがセットされた前記第1又は第2のエントリのプリフェッチ要求に対する前記記憶装置からの応答に応じて、セットされた前記第1又は第2の待ち合わせフラグを解除し、前記共有プリフェッチ記憶部が有する第3のエントリが空いた場合に、前記第1又は第2のプリフェッチ記憶部において、前記第1又は第2のエントリのうち前記第1又は第2の待ち合わせフラグが最も早くセットされたエントリの待ち合わせフラグを解除するとともに当該エントリに保持されたプリフェッチ要求を前記共有プリフェッチ記憶部が有する前記第3のエントリに保持させることを特徴とする。
また、本発明は、第1及び第2の演算処理部と、前記第1及び第2の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有し、記憶装置に接続される演算処理装置の制御方法において、第1のキャッシュメモリを有する前記第1の演算処理部が、前記第1のキャッシュメモリに予めデータを読み込むプリフェッチ要求を、前記共有キャッシュメモリ又は記憶装置に対して発行するステップと、第2のキャッシュメモリを有する前記第2の演算処理部が、前記第2のキャッシュメモリに予めデータを読み込むプリフェッチ要求を、前記共有キャッシュメモリ又は記憶装置に対して発行するステップと、第1のプリフェッチ記憶部が、前記第1の演算処理部からのプリフェッチ要求のみを保持するとともに、前記第1の演算処理部からのプリフェッチ要求を前記共有キャッシュメモリ制御部が有するプリフェッチ処理部に発行するステップと、第2のプリフェッチ記憶部が、前記第2の演算処理部からのプリフェッチ要求のみを保持するとともに、前記第2の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行するステップと、共有プリフェッチ記憶部が、前記第1又は第2のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、前記完了できなかったプリフェッチ要求をエントリに保持するとともに、前記完了できなかったプリフェッチ要求を前記プリフェッチ処理部に発行するステップを有することを特徴とする。
また、本発明は、第1及び第2の演算処理部と、前記第1及び第2の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有するともに、記憶装置に接続された演算処理装置の制御方法において、第1のキャッシュメモリを有する前記第1の演算処理部が、前記第1のキャッシュメモリに対してロード要求又は予めデータを読み込むプリフェッチ要求を発行するステップと、第2のキャッシュメモリを有する前記第2の演算処理部が、前記第2のキャッシュメモリに対してロード要求又は予めデータを読み込むプリフェッチ要求を発行するステップと、前記共有キャッシュメモリ制御部が有するロード要求記憶部が、前記第1及び第2のロード要求を保持するステップと、前記共有キャッシュメモリ制御部が有する第1のプリフェッチ記憶部が、前記第1の演算処理部からのプリフェッチ要求を、第1の待ち合わせフラグを有する第1のエントリに保持するとともに、前記第1の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行するステップと、前記共有キャッシュメモリ制御部が有する第2のプリフェッチ記憶部が、前記第2の演算処理部からのプリフェッチ要求を、第2の待ち合わせフラグを有する第2のエントリに保持するとともに、前記第2の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行するステップと、前記共有キャッシュメモリ制御部が、前記第1又は第2のプリフェッチ記憶部から前記プリフェッチ処理部に発行したプリフェッチ要求の対象アドレスと前記ロード要求記憶部に既に保持されたロード要求の対象アドレスとが一致しないことにより、前記第1又は第2の待ち合わせフラグを前記プリフェッチ要求に対応する前記第1又は第2のエントリにそれぞれセットするステップと、前記共有キャッシュメモリ制御部が、前記第1又は第2の待ち合わせフラグがセットされた前記第1又は第2のエントリのプリフェッチ要求に対する前記記憶装置からの応答に応じて、セットされた前記第1又は第2の待ち合わせフラグを解除するステップと、前記共有プリフェッチ記憶部が有する第3のエントリが空いた場合に、前記第1又は第2のプリフェッチ記憶部において、前記共有キャッシュメモリ制御部が、前記第1又は第2のエントリのうち前記第1又は第2の待ち合わせフラグが最も早くセットされたエントリの待ち合わせフラグを解除するステップと、前記共有キャッシュメモリ制御部が、当該エントリに保持されたプリフェッチ要求を前記共有プリフェッチ記憶部が有する前記第3のエントリに保持させることを特徴とする。
本発明によれば、第1又は第2のプリフェッチ記憶部からプリフェッチ処理部に発行したプリフェッチ要求が完了できなかった場合に、完了できなかったプリフェッチ要求をエントリに保持するとともに、完了できなかったプリフェッチ要求をプリフェッチ処理部に発行する共有プリフェッチ記憶部を有するので、完了できなかったプリフェッチ要求をプリフェッチ処理部に発行するために記憶するエントリを確保することが可能になるという効果を奏する。
また、本発明によれば、共有プリフェッチ記憶部が有するエントリに既に保持されているプリフェッチ要求の対象アドレスとプリフェッチ要求の種類が、完了できなかったプリフェッチ要求の対象アドレスとプリフェッチ要求の種類と、それぞれ一致するときは、プリフェッチ処理部が、完了できなかったプリフェッチ要求をエントリに既に保持されているプリフェッチ要求とマージするので、完了できなかったプリフェッチ要求を重複して共有プリフェッチ記憶部に保持してプリフェッチ処理部に発行するという無駄を回避することが可能になるという効果を奏する。
また、本発明によれば、第1又は第2のプリフェッチ記憶部からプリフェッチ処理部に発行したプリフェッチ要求が完了できなかった場合に、第1又は第2のキャッシュメモリに対して既に発行されたロード要求の対象アドレスとプリフェッチ要求の種類が、完了できなかったプリフェッチ要求の対象アドレスとプリフェッチ要求の種類と、それぞれ一致するときは、プリフェッチ処理部が、完了できなかったプリフェッチ要求をエントリから消去するので、完了できなかったプリフェッチ要求をロード要求と重複して共有プリフェッチ記憶部に保持するという無駄を回避することが可能になるという効果を奏する。
また、本発明によれば、第1及び第2のキャッシュメモリが有するキャッシュラインは、共有キャッシュメモリのサブラインとして、共有キャッシュメモリのキャッシュラインのサイズのN分の1のサイズを有し、第1及び第2のプリフェッチ記憶部と共有プリフェッチ記憶部は、サブライン単位でプリフェッチを共有プリフェッチ記憶部が有するエントリに保持するので、共有プリフェッチ記憶部の資源利用効率を高め、データ転送効率を高めることが可能になるという効果を奏する。
また、本発明によれば、プリフェッチ処理部が、完了できなかったプリフェッチ要求を、第1又は第2のプリフェッチ記憶部からサブライン単位で消去するので、プリフェッチ記憶部の資源開放を速やかにし、資源利用効率を高めことが可能になるという効果を奏する。
また、本発明によれば、第1又は第2のプリフェッチ記憶部からプリフェッチ処理部に発行したプリフェッチ要求が完了できなかった場合に、ロード要求記憶部に既に保持されたロード要求の対象アドレスと、完了できなかったプリフェッチ要求との間において、ロード要求と完了できなかったプリフェッチ要求の対象アドレスが一致するとき、プリフェッチ処理部が、完了できなかったプリフェッチ要求を共有プリフェッチ記憶部が有するエントリに保持するので、プリフェッチ要求を共有プリフェッチ記憶部からプリフェッチ処理部へ再投入することによって、アドレスが一致するロード要求をと速やかに完了させることが可能になるという効果を奏する。
また、本発明によれば、第1又は第2のプリフェッチ記憶部からプリフェッチ処理部に発行したプリフェッチ要求が完了できなかった場合に、完了できなかったプリフェッチ要求が、プリフェッチ処理を必ず処理しなければならない属性であるとき、完了できなかったプリフェッチ要求を共有プリフェッチ記憶部が有するエントリに保持するので、必ず処理しなければならない属性のプリフェッチ処理をより早期かつ確実に完了させることが可能になるという効果を奏する。
本発明によれば、第1又は第2のプリフェッチ記憶部からプリフェッチ処理部に発行したプリフェッチ要求の対象アドレスとロード要求記憶部に既に保持されたロード要求の対象アドレスとが一致しないことにより、プリフェッチ処理部が、第1又は第2の待ち合わせフラグをプリフェッチ要求に対応する第1又は第2のエントリにそれぞれセットするとともに、第1又は第2の待ち合わせフラグがセットされた第1又は第2のエントリのプリフェッチ要求に対する記憶装置からの応答に応じて、セットされた第1又は第2の待ち合わせフラグを解除し、共有プリフェッチ記憶部が有する第3のエントリが空いた場合に、第1又は第2のプリフェッチ記憶部において、第1又は第2のエントリのうち第1又は第2の待ち合わせフラグが最も早くセットされたエントリの待ち合わせフラグを解除するとともに当該エントリに保持されたプリフェッチ要求を共有プリフェッチ記憶部が有する第3のエントリに保持させるので、第1又は第2のプリフェッチ記憶部からプリフェッチ処理部に発行されたプリフェッチ要求が完了しなかった場合に、このプリフェッチ要求をより迅速に共有プリフェッチ記憶部にエントリさせることが可能になるという効果を奏する。
図1は、従来のマルチコアプロセッサの構成を示すブロック図である。 図2−1は、共有L2プリフェッチ制御におけるPFのL2キャッシュミスに対してsn_res_256でSCの応答がある場合のタイミングチャートである。 図2−2は、共有L2プリフェッチ制御におけるPFのL2キャッシュミスに対してsn_res_64でSCの応答がある場合のタイミングチャートである。 図3は、従来のマルチコアプロセッサの動作を示すタイミングチャートである。 図4は、一実施の形態にかかるマルチコアプロセッサの構成を示すブロック図である。 図5は、一実施の形態にかかるマルチコアプロセッサの共有L2キャッシュ部の詳細な構成を示すブロック図である。 図6は、一実施の形態にかかるマルチコアプロセッサの動作を示すタイミングチャートである。 図7は、一実施の形態にかかる共有L2キャッシュ部の動作(待ち合わせフラグを解除することによって、プリフェッチ要求を共有PFPORTへ移動)を示すタイミングチャートである。 図8は、一実施の形態にかかる共有L2キャッシュ部の動作(共有PFPORTから、キャッシュラインのサブラインごとにエントリを消去)を示すタイミングチャートである。 図9−1は、共有L2キャッシュ部の非サブライン方式によるタグマッチング回路を示すブロック図である。 図9−2は、共有L2キャッシュ部のサブライン方式によるタグマッチング回路を示すブロック図である。 図10−1は、共有L2キャッシュ部のパイプライン処理の概要(共有PFPORTを有さない場合)を示す図である。 図10−2は、一実施の形態にかかる共有L2キャッシュ部のパイプライン処理の概要(共有PFPORTを有する場合)を示す図である。 図10−3は、共有L2キャッシュ部のDMパイプライン処理の概要を示す図である。 図10−4は、共有L2キャッシュ部のL2リプレースパイプライン処理の概要を示す図である。 図10−5は、共有L2キャッシュ部のL2タグライトパイプライン処理の概要を示す図である。 図10−6は、共有L2キャッシュ部のL2データライトパイプライン処理の概要を示す図である。
符号の説明
100 CPU
101 CPUコア部
101a MMU
101b L1命令キャッシュ
101c 命令フェッチパイプライン処理部
101d デコーダ
101e L1データキャッシュ
101f ストアパイプライン処理部
101g 演算実行パイプライン処理部
101h 演算器
102、102A 共有L2キャッシュ部
102a MIPORT
102b PFPORT
102c 優先制御部A
102d 優先制御部B
102e 優先制御部C
102f L2パイプライン処理部
102g L2タグ記憶部
102h 演算器
102i L2キャッシュ
102j 共有PPFPORT
103 システムI/F部
104 ロードデータバッファ部
105 ストアデータバッファ部
106 優先制御部D
107 PFPROT制御部
107a、107b ANDゲート
107c ORゲート
107d マッチング回路
107e、107f ANDゲート
108 エントリマージ処理部
109 ORゲート
110 空きエントリ選択部
111、118 格納エントリ選択部
112、120 エントリテーブル
113−1 優先制御部E
113−n 優先制御部E
114 共有PFPROT制御部
114a、114b ANDゲート
114c ORゲート
114d マッチング回路
114e、114f ANDゲート
115 エントリマージ処理部
115a ANDゲート
115b ORゲート
115c バッファ
116 ORゲート
117 空きエントリ選択部
118 格納エントリ選択部
119 ANDゲート
120 エントリテーブル
121 優先制御部F
122 マッチング回路
123 ANDゲート
124 エンコーダ
124 マッチング回路
125、126、127 セレクタ
128 マッチング回路
129 ORゲート
130 ANDゲート
131 エンコーダ
132、133、134、135、136、137 セレクタ
以下に添付図面を参照し、本発明の演算処理装置および演算処理装置の制御方法にかかる一実施の形態を詳細に説明する。以下の一実施の形態では、複数のCPUコアを有するCPU(以下、マルチコアプロセッサと呼ぶ)が複数協働して処理をおこなう演算処理装置および演算処理装置の制御方法を示す。なお、以下の一実施の形態にかかる演算処理装置が搭載される装置を情報処理装置と呼ぶこととする。
先ず、従来のマルチコアプロセッサの構成について説明する。図1は、従来のマルチコアプロセッサの構成を示すブロック図である。以下、マルチコアプロセッサを、単に「CPU」と呼ぶ。同図に示すように、従来のCPU100は、複数のCPUコア部101と、2次共有キャッシュである共有L2キャッシュ部102と、システムI/F(インターフェース)部103と、ロードデータバッファ部104と、ストアデータバッファ部105と、優先制御部D106とを有する。なお、複数のCPUコア部101は、すべて同一の構成であるので、1つに代表させて説明をおこなう。
情報処理装置内において、CPU100は、それぞれ個別のSC(System Controller)200と接続されており、SC200は、1つのMAC(Memory Access Controller Inline Memory Module、主記憶制御装置)300と接続されている。MAC300は、主記憶装置であるDIMM400へのメモリアクセスを制御する。
CPUコア部101は、CPUコア部101が有する、後述の命令を保持する1次命令キャッシュであるL1命令キャッシュおよびデータを保持する1次データキャッシュであるL1データキャッシュ101e(以下、これらをL1キャッシュと総称する)へのアクセスを制御するMMU(Memory Management Unit)101aと、CPUの命令セット(以下、命令と呼ぶ)を記憶するL1命令キャッシュ101bと、L1命令キャッシュ101bからフェッチされた命令をパイプライン処理する命令フェッチパイプライン処理部101cと、データをキャッシュするL1データキャッシュ101eと、L1データキャッシュ101eとの間でデータのロード/ストアを制御するロード/ストアパイプライン処理部101fと、後述の演算器101hでおこなわれる演算を制御する演算実行パイプライン処理部101gと、データ演算をおこなう演算器101hと、DMのL1キャッシュミスが発生した場合に共有L2キャッシュ部102に発行するDMをエントリに登録するL1−LB(Load Buffer)101iと、PFのL1キャッシュミスが発生した場合に共有L2キャッシュ部102に発行するPFをエントリに登録するL2−PFQ(Pre Fetch Queue)101jと、L1キャッシュから共有L2キャッシュ部102または後述のDIMM400へストアする命令またはデータをエントリに登録するL1−SB(Store Buffer)101hとを有する。
共有L2キャッシュ部102は、CPUコア部101ごとに対応して設けられる、L1−LB101iからのDMを受け付けてエントリする複数のMIPORT(Move In Port)102aと、同様にCPUコア部101ごとに対応して設けられる、L2−PFQ101jからのPFを受け付けてエントリする複数のPFPORT(Pre Fetch Port)102bと、複数のMIPORT102aから優先制御により一のエントリを選択して要求を出力する優先制御部A102cと、複数のPFPORT102bから優先制御により一のエントリを選択して要求を出力する優先制御部B102dと、優先制御部A102c、優先制御部B102dおよび後述のL2−LB(Load Buffer)102hから出力される要求を優先制御により調停して、一の要求を出力する優先制御部C102eと、優先制御部C102eから出力された要求をパイプライン処理するL2パイプライン処理部102fと、後述のL2キャッシュ102iに記憶されているデータのタグを記憶するL2タグ記憶部102gと、L2パイプライン処理部102fによるL2タグ記憶部102gの検索によって、要求が必要とするデータが後述のL2キャッシュ102iにない場合(以下、L2キャッシュミスと呼ぶ)、DIMM400へのデータ要求をエントリに登録するL2−LB(Load Buffer)102hと、データをキャッシュするL2キャッシュ102iとを有する。
具体的には、L1命令キャッシュ101bに対して命令フェッチがミスした場合、あるいはL1データキャッシュ101eに対してデータ操作命令(データロード、データストアなど)がミスした場合などに、L2キャッシュ102iに対するDMが発生し、MIPORT102aへその要求が発行される。
また、PFは、ソフトウエアの要求に基づくソフトウエアプリフェッチ、分岐予測に基づく命令フェッチの予測、あるいはデータにアクセスするアドレスの規則性などに基づいて、PFPORT102bへ、ハードウェアで自動的に発行される。このようにして、CPU100が処理に必要とするデータを先読みすることによって、CPU100のスループットを高めている。
DMを受け付けたMIPORT102aおよびPFを受け付けたPFPORT102bは、パイプライン処理部102fへパイプライン処理の要求を発行する。優先制御部A102〜優先制御部C102eは、CPUコア部101ごとにLRU(Least Recently Used)などのアルゴリズムに従って要求を選択した後、要求種別のプライオリティを固定的な優先度で選択する。例えば、L2−LB102hからの要求、MIPORT102aからの要求、PFPORT102bからの要求の順序の優先度をとる。これによって、パイプライン処理後の要求の優先度を上げることで、デッドロックやライブロックを防止することができるからである。優先権を確保した要求は、L2パイプライン処理部102fでパイプライン処理される。
L2パイプライン処理部102fでは、要求に紐付けられるタグを読み出し、L2タグ記憶部102gを検索した結果や、L2−LB102hにエントリされる要求が指し示すデータとのアドレスマッチングの結果に基づいて、処理内容を決定する。何らかの理由でパイプライン処理が完了できない場合は、abt(abort、処理中断)として、そのパイプライン処理を無効とする決定を行う。パイプライン処理が正常に完了できた場合は、cmp(complete、正常終了)とする。
パイプライン処理後、必要に応じてL2タグ記憶部102gに記憶されるタグの更新を行い、パイプライン処理の結果(abt又はcmp)がL2−LB102h、MIPORT102aおよびPFPORT102bへと通知される。パイプライン処理部102fから、DMやPFのL2キャッシュミスにより、L2−LB102hにシステムへの要求が必要であることが通知されると、L2−LB102hはシステムI/F部103を介して、CPUごとに設けられるSC200に対してデータ要求(sc_request、以下、sc_reqと呼ぶ)を発行する。
sc_reqを受信したSC200は、システム上の全てのCPU100が記憶するタグのコピーを有している。SC200は、タグのコピーを検索した結果に応じてsc_reqに対する処理を決定し、sc_reqに対するsn_res応答(スヌープ応答、snoop response)をL2−LB102hに応答する。
なお、キャッシュへのデータ転送単位であるキャッシュラインが256Byteであり、キャッシュラインが4つの64Byteのサブラインで構成される場合には、sn_res応答にはsn_res_64とsn_res_256の2種類がある。sn_res_64は、sc_reqに対応する1つのサブラインについてのデータ転送をSC200が確定したことを通知する。sn_res_256はsc_reqに対応する1つのサブラインを含むキャッシュラインすべてのデータ転送をSC200が確定したことを通知する。
すなわち、sc_reqのいずれかのサブラインを、いずれかのCPU100が所持している場合には、SC200は、sn_res_64(64Byte転送)と決定する。また、sc_reqのすべてのサブラインをいずれのCPU100も所持せず、DIMM400のみ所持する場合には、SC200は、sn_res_256(256Byte転送)と決定する。
sn_res応答を受けたL2−LB102hは、必要に応じてリプレースパイプライン(L2_replace_pipeline)処理を要求する。リプレースパイプライン処理については、図10−4を参照して後述する。
SC200は、CPU100から要求されたデータ転送の準備ができると、dow(Data Out Warning)応答をCPU100におこなう。CPU100のL2−LB102hは、dow応答を受信すると、タグエントリパイプライン処理およびデータライトパイプライン処理の起動を要求する。タグエントリパイプライン処理およびデータライトパイプライン処理については、図10−5および図10−6を参照して後述する。
dow応答に対応するデータがDMに対するデータであれば、ロードデータバッファ部104を経由してデータがCPUコア部101に送信される。データライトパイプライン処理に同期して、ロードデータバッファ部104を経由して、L2キャッシュ102iにもデータが書き込まれる。一方、DMに紐付けられるタグが、L2タグ記憶部102gに記憶されている場合(以下、L2キャッシュヒットと呼ぶ)、パイプライン処理部102fによってL2キャッシュ102iからデータが読み出され、CPUコア部101へのデータ転送がロードデータバッファ部104を経由して行われる。
なお、優先制御部D106は、L2キャッシュ102iへのデータ書き込みに関し、SC200から送られてきたロードデータバッファ部104を経由するロードデータと、CPUコア部101のL1−SB101hから送られてきたストアデータバッファ部105を経由するストアデータとの間の優先制御をおこなう。
次に、共有L2プリフェッチ制御におけるPFのL2キャッシュミスに対してsn_res_256でSC200の応答がある場合およびsn_res_256でSC200の応答がある場合のPFの制御について説明する。なお、キャッシュラインは4つの64Byteのサブライン(subline0〜3)を有する256Byteである。また、以下、PFのパイプライン処理をPFパイプライン処理と呼ぶ。
最初に、図2−1を参照する。図2−1は、共有L2プリフェッチ制御におけるPFのL2キャッシュミスに対してsn_res_256でSC200の応答がある場合のタイミングチャートである。先ず、CPUコア部101は、PFを、対応する共有L2キャッシュ部102のPFPORT102bに出力する(pf_req(4subline) from Core to pfp entry0、ステップS101)。なお、1回の要求で4サブライン分が出力される場合もあるし、4回に分かれてサブラインが出力される場合もある。
PFを受けたPFPORT102bは、subline0〜3に対応する有効フラグ(sub_valid[0]〜sub_valid[3])をすべてオンにする。pfp_entry0 life timeは、そのPFによってPFPORT102bのentry0が占有され開放されるまでの期間を表す。その間、subline0〜3の少なくとも1の有効フラグがオンになっている。
続いて、PFを受けたPFPORT102bは、subline0についてパイプライン処理部102fへプライオリティ要求を出す。パイプライン処理部102fにおいてプライオリティが確保されると、pf_pipeline(subline0)で示されるPFパイプライン処理がおこなわれる(ステップS102)。PFパイプライン処理は、10CPUCycle程度である。
PFパイプライン処理中に、L2タグ記憶部102gを検索した結果、PFに紐付けられるタグに関して256Byteのキャッシュラインおよび64ByteのサブラインいずれもL2キャッシュミスであることが判明すると、PFパイプライン処理後、L2−LB102hのエントリが確保される。そして、subline0のPFパイプライン処理が完了されたため、PFPORT102bのsubline0の有効フラグ(sub_valid[0])がオフにされる。
さらに、L2−LB102hから、システムに対するデータ要求であるsc_reqがSC200に発行される(ステップS103)。subline0のPFパイプライン処理が完了したので、次にPFPORT102bは、subline1についてパイプライン処理部102fへプライオリティ要求を出す。プライオリティが確保されると、subline1のPFパイプライン処理がおこなわれる(ステップS104)。
PFパイプライン処理中に、L2タグ記憶部102gを検索した結果、PFに紐付けられるタグに関して256Byteのキャッシュラインおよび64ByteのサブラインいずれもL2キャッシュミスであることが判明し、かつL2−LB102hにおいて256Byteのキャッシュラインのアドレスマッチ(キャッシュラインのアドレスの一致)を検出する。
しかし、まだsn_resと呼ばれるSC200からのスヌープ応答が返っていない段階なので、subline1のPFパイプライン処理を完了させることができず、L2パイプライン処理部102fからPFPORT102bへabt通知が出され、PFPORT102bのsubline1に対応するエントリの有効フラグ(sub_valid[1])はオンのままとなる。
なお、sn_res応答が返ってくる前に、何度も同じPFパイプライン処理をおこなっても、abtを繰り返すだけで無駄であるので、SC200fは、PFPORT102bに対して、PFPORT102bのsubline1に対応するエントリの待ち合わせフラグ(wt_flg)をオンにする指示を、abt通知と同時に送る。ここで無駄であるという理由は、PFパイプラインにおいてabtとなる処理が繰り返されるために、他のCPUコア部101からの要求のパイプライン処理がおこなわれることが阻害されることおよび消費電力の浪費である。
SC200での処理の結果、sn_res_256(256Byteのデータ応答をおこなうことの確定を通知する信号)が、SC200からL2−LB102hに返される(ステップS105)。sc_reqからsn_res応答通知までの時間は、通常200〜400CPUcycle程度である。sn_res_256応答を契機として、L2−LB102hからPFPORT102bに対して、待ち合わせフラグ(wt_flg)をオフにする通知が出される。
sn_res_256通知をSC200から受けたL2−LB102hは、リプレースパイプライン(replace_pipeline)処理の起動を要求する。すなわち、PFは、256Byteのキャッシュラインに対してL2キャッシュミスであり、すべてのWAY(L2−LB102hに登録されているDMまたはPFのエントリ)が有効である場合、いずれかのWAYを追い出す必要がある。追い出すWAYは、最初のsubline0に対応するPFパイプライン処理時に、LRUアルゴリズムで決定される。
そして、追いされるWAYのサブラインのうち有効なサブラインに対してのみリプレースパイプライン処理がおこなわれる(ステップS106)。WAYのサブラインが4つとも有効であれば、リプレースパイプライン処理が4回実行され、逆にWAYに有効なサブラインが存在しない場合は、リプレースパイプライン処理は行われない。
待ち合わせフラグ(wt_flg)をオフにする通知を受けたPFPORT102bは、再び、subline1に対応するPFパイプライン処理を要求し、PFパイプライン処理がおこなわれる(ステップS107)。この処理の結果、256Byteのキャッシュラインおよび64ByteのサブラインいずれもL2キャッシュミスであることが判明し、かつL2−LB102hにsn_res_256応答到達済みであり、L2−LB102hにおいて、256Byteキャッシュライン単位でのアドレスマッチを検出する。
L2−LB102hにsn_res_256応答到達済みであることは、subline1に対するデータ応答も行われることを意味するので、L2−LB102hは、subline1に対応するPFパイプライン処理の完了通知(cmp)をPFPORT102bに送出し、PFPORT102bは、subline1に対応する有効フラグ(sub_valid[1])をオフにする。
同様に、subline2およびsubline3に対応するPFパイプライン処理も完了し(ステップS108、ステップS109)、PFPORT102bは、subline3に対応する有効フラグ(sub_valid[3])をオフにすると同時に、PFPORT102bの当該PFのエントリを開放する。
SC200は、sn_res_256応答と前後して、MAC300に対して該当アドレスのデータ要求を行い、データの用意ができたらCPU100に対してdow通知とともに、256Byteのデータを送出する(ステップS110)。dowのヘッダを受信すると、タグエントリパイプライン(tag_entry_pipeline)処理がL2−LB102hからL2パイプライン処理部102fに対して要求され、プライオリティが確保されると、タグエントリパイプライン処理がおこなわれる(ステップS111)。タグエントリパイプライン処理は、リプレースパイプライン処理で確保されたWAYに対して4つのサブラインまとめて1回で、L2タグ記憶部102gに、当該WAYのタグを書き込む処理である。
L2−LB102gは、dowのデータ部をSC200から受信すると、L2パイプライン処理部102fに対して、subline0〜3のデータ受信が完了した順に、リプレースパイプライン処理で確保されたWAYに対するデータライトパイプライン処理を要求し、データライトパイプライン処理がおこなわれる(ステップS112)。データライトパイプライン処理がすべて完了するとL2−LB102hのエントリが開放されることとなる。
次に、図2−2を参照する。図2−2は、共有L2プリフェッチ制御におけるL2キャッシュミスに対してsn_res_64でSC200の応答がある場合のタイミングチャートである。先ず、CPUコア部101は、PFを、対応する共有L2キャッシュ部102のPFPORT102bに出力する(pf_req(4subline) from Core to pfp entry0、ステップS121)。なお、1回の要求で4サブライン分が出力される場合もあるし、4回に分かれてサブラインが出力される場合もある。
PFを受けたPFPORT102bは、subline0〜3に対応する有効フラグ(sub_valid[0]〜sub_valid[3])をすべてオンにする。pfp_entry0 life timeは、そのPFによってPFPORT102bのentry0が占有され開放されるまでの期間を表す。その間、subline0〜3の少なくとも1の有効フラグがオンになっている。
続いて、PFを受けたPFPORT102bは、subline0についてパイプライン処理部102fへプライオリティ要求を出す。パイプライン処理部102fにおいてプライオリティを確保されると、pf_pipeline(subline0)で示されるPFパイプライン処理がおこなわれる(ステップS122)。PFパイプライン処理は、10CPUCycle程度である。
PFパイプライン処理中に、L2タグ記憶部102gを検索した結果、PFに紐付けられるタグに関して256Byteのキャッシュラインおよび64ByteのサブラインいずれもL2キャッシュミスであることが判明すると、PFパイプライン処理後、L2−LB102hのエントリが確保される。そして、subline0のPFパイプライン処理が完了されたため、PFPORT102bのsubline0の有効フラグ(sub_valid[0])がオフにされる。
さらに、L2−LB102hから、システムに対するデータ要求であるsc_reqがSC200に発行される(ステップS123)。subline0のPFパイプライン処理が完了したので、次にPFPORT102bは、subline1についてパイプライン処理部102fへプライオリティ要求を出す。プライオリティが確保されると、subline1のPFパイプライン処理がおこなわれる(ステップS104)。
PFパイプライン処理中に、L2タグ記憶部102gを検索した結果、PFに紐付けられるタグに関して256Byteのキャッシュラインおよび64ByteのサブラインいずれもL2キャッシュミスであることが判明し、かつL2−LB102hにおいて256Byteのキャッシュラインのアドレスマッチを検出する。
しかし、まだsn_resと呼ばれるSC200からの応答が返っていない段階なので、subline1のPFパイプライン処理を完了させることができず、L2パイプライン処理部102fからPFPORT102bへabt通知が出され、PFPORT102bのsubline1に対応するエントリの有効フラグ(sub_valid[1])はオンのままとなる。
SC200での処理の結果、sn_res_64(64Byteのデータ応答をおこなうことの確定を通知する信号)が、SC200からL2−LB102hに返される(ステップS125)。sc_reqからsn_res応答通知までの時間は、通常200〜400CPUcycle程度である。sn_res_64応答を契機として、L2−LB102hからの指示に基づき、PFPORT102bは、当該エントリの待ち合わせフラグ(wt_flg)をオフにする。
sn_res_64通知をSC200から受けたL2−LB102hは、リプレースパイプライン(replace_pipeline)処理の起動を要求する。すなわち、PFは、256Byteのキャッシュラインに対してL2キャッシュミスであり、すべてのWAY(L2−LB102hに登録されているDMまたはPFのエントリ)が有効である場合、いずれかのWAYを追い出す必要がある。追い出すWAYは、最初のsubline0に対応するPFパイプライン処理時に、LRUアルゴリズムで決定される。
そして、追いされるWAYのサブラインのうち有効なサブラインに対してのみリプレースパイプライン処理がおこなわれる(ステップS126)。WAYのサブラインが4つとも有効であれば、リプレースパイプライン処理が4回実行され、逆にWAYに有効なサブラインが存在しない場合は、リプレースパイプライン処理は行われない。
待ち合わせフラグ(wt_flg)をオフにする通知を受けたPFPORT102bは、再び、subline1に対応するPFパイプライン処理を要求し、PFパイプライン処理がおこなわれる(ステップS127)。この処理の結果、256Byteのキャッシュラインおよび64ByteのサブラインいずれもL2キャッシュミスであることが判明し、かつL2−LB102hにsn_res_64応答到達済みであり、L2−LB102hにおいて、256Byteキャッシュライン単位でのアドレスマッチを検出する。
ここで、同一のL2−LB102hのエントリに対して、subline1の要求がセットされ、subline1に対するsc_reqがSC200に対して送出される(ステップS128)。PFPORT102bには、subline1のPFパイプライン処理が完了したことが通知され、PFPORT102bのsubline1の有効フラグ(sub_valid[1])がオフにされる。
続いて、PFPORT102bからsubline2のPFパイプライン処理の要求が出され、subline2のPFパイプライン処理がおこなわれる(ステップS129)。同様に、subline2のPFパイプライン処理はabtし、L2−LB102hからの指示に基づき、PFPORT102bは、当該エントリの待ち合わせフラグ(wt_flg)をオンにする。
SC200からL2−LB102hに、subline2に対応するsn_res_64応答が到達すると(ステップS133)、PFPORT102bのsubline2の有効フラグ(sub_valid[2])がオフにされ、subline2に対応するPFパイプライン処理がされる(ステップS134)。subline1に対応するsn_res_64が到達済みなので、L2−LB102hの同一エントリに対して、subline2のリクエストがセットされ、subline2に対するsc_reqがSC200に対して送出される(ステップS135)。PFPORT102bには、subline2のPFパイプライン処理が完了したことが通知され、PFPORT102bのsubline2の有効フラグ(sub_valid[2])がオフにされる。
続いて、PFPORT102bからsubline3のPFパイプライン処理の要求が出され、subline3のPFパイプライン処理がおこなわれる(ステップS136)。同様に、subline3のPFパイプライン処理はabtし、L2−LB102hからの指示に基づき、PFPORT102bは、当該エントリの待ち合わせフラグ(wt_flg)をオンにする。
SC200からL2−LB102hに、subline3に対応するsn_res_64応答が到達すると(ステップS140)、PFPORT102bのsubline3の有効フラグ(sub_valid[3])がオフにされ、subline3に対応するPFパイプライン処理がされる(ステップS141)。subline1に対応するsn_res_64が到達済みなので、L2−LB102hの同一エントリに対して、subline3のリクエストがセットされ、subline2に対するsc_reqがSC200に対して送出される(ステップS142)。PFPORT102bには、subline3のPFパイプライン処理が完了したことが通知され、PFPORT102bのsubline3の有効フラグ(sub_valid[3])がオフにされる。これによって、PFPORT102bの当該エントリは開放される。
なお、SC200は、subline0〜3に対応するsc_reqへの各sn_res_64応答と前後して、MAC300に対して該当アドレスのデータ要求を行い、データの用意ができたらCPU100に対してdow通知とともに、64Byteのデータを送出する(ステップS130、ステップS137、ステップS143、ステップS147)。各dowのヘッダを受信すると、タグエントリパイプライン(tag_entry_pipeline)処理がL2−LB102hからL2パイプライン処理部102fに対して要求され、プライオリティが確保されると、タグエントリパイプライン処理がおこなわれる(ステップS131、ステップS138、ステップS144、ステップS148)。タグエントリパイプライン処理は、リプレースパイプライン処理で確保されたWAYに対して4つのサブラインまとめて1回で、L2タグ記憶部102gに、当該WAYのタグを書き込む処理である。
L2−LB102gは、各dowのデータ部をSC200から受信すると、L2パイプライン処理部102fに対して、subline0〜3のデータ受信が完了した順に、リプレースパイプライン処理で確保されたWAYに対するデータライトパイプライン処理を要求し、データライトパイプライン処理がおこなわれる(ステップS132、ステップS139、ステップS145、ステップS149)。データライトパイプライン処理がすべて完了するとL2−LB102hのエントリが開放されることとなる。
次に、従来のマルチコアプロセッサの動作について説明する。図3は、従来のマルチコアプロセッサの動作を示すタイミングチャートである。なお、同図では、すべてsn_res_256応答の場合であるとする。すなわち、図示するPF0〜PF8は、図2−1に示した処理と同一である。しかし、sn_res_256に限らず、sn_res_256またはsn_res_64のいずれかであればよい。そして、PFPORT102bのPFのエントリ数は、8つであるとする。
CPUコア部101からのPFが共有L2キャッシュ部102のPFPORT102bへ、4サブラインすべてを含むキャッシュラインのPFが9つ発行されるとする(PF0〜PF8)。PFPORT102bでは、最初の8つのPF0〜PF7ですべてのエントリ(PFPORT0〜PFPORT7)が使用状態(ビジー状態)になり、9つ目のPF8は、いずれかのエントリが開放されるまで待機しなければならない。
PFPORT0が最初に開放されるとすると、PFPORT0のPFのsubline0〜3すべてのPFのL2パイプライン処理部102fにおけるPFパイプライン処理が完了することによってPFPORT0が開放された後に、9つ目のPF8がCPUコア部101から発行されて、そのPFがPFPORT0にセットされ、PFパイプライン処理およびsc_req発行がおこなわれる。
このように、従来のマルチコアプロセッサでは、PFPORT102bのすべてのエントリがビジー状態であるとき、いずれかのエントリに登録されているPFが、PFパイプライン処理がabtまたはcmpによって開放されない限り、新たなPFをPFPORT102bに登録することができず、この待ち合わせのためにロスタイムが発生する。特に、複数のCPUコアが1つのL2キャッシュを共有するマルチコアプロセッサでは、このようなロスタイムが発生する確率が高く、データの先読みによるCPU処理速度の向上を狙ったプリフェッチの効果が低下してしまうという問題点があった。
次に、一実施の形態にかかるマルチコアプロセッサの構成について説明する。図4は、一実施の形態にかかるマルチコアプロセッサの構成を示すブロック図である。ここでは、図1に示した従来のマルチコアプロセッサとの差分についてのみ説明する。
一実施の形態にかかるマルチコアプロセッサであるCPU100aの共有L2キャッシュ部102Aは、CPUコア部101ごとに設けられるPFPORT102bとは別に、複数のCPUコア部101が共有する共有PFPORT102jをさらに有する。
共有PFPORT102jは、PFPORT102bとほぼ同一の構成をしている。異なるのは、入力インターフェースが、PFPORT102bはCPUコア部101であるのに対して、共有PFPORT102jは、L2パイプライン処理部102fの後段であることである。
PFPORT102bは、CPUコア部101からのPFで新規のエントリを確保するのに対して、共有PFPORT102jは、PFPORT102bからL2パイプライン処理部102fへ投入されたPFがabtしたのを契機にしてエントリを確保している。
また、DMとのアドレスマッチングによる重複エントリ消去操作についても、PFPORT102bがCPUコア部101からのDMとのアドレス一致があった場合に、PFPORT102bのエントリを消去するのに対し、共有PFPORT102jは、L2パイプライン処理部102fで処理され、L2−LB102hにエントリが登録されているDMとのアドレス一致があった場合に、共有PFPORT102jのエントリを消去する。
次に、一実施の形態にかかるマルチコアプロセッサの共有L2キャッシュ部の詳細な構成について説明する。図5は、一実施の形態にかかるマルチコアプロセッサの共有L2キャッシュ部の詳細な構成を示すブロック図である。同図においては、特に、一実施の形態にかかるマルチコアプロセッサの共有L2キャッシュ部102AのPFPORT102bおよび共有PFPROT102jの構成について説明する。
PFPORT102bは、PFPORT制御部107と、エントリマージ処理部108と、キャッシュラインにおける各サブラインの有効性を示すsub_valid[3]のうち少なくとも1つがオンであるエントリ(少なくとも1つのサブラインが有効であるエントリ)を抽出するORゲート109と、空きエントリ選択部110と、格納エントリ選択部111と、エントリテーブル112と、優先制御部E113−1とを有する。PFPORT制御部107は、エントリテーブル112のエントリごとに設けられている。また、エントリテーブル112の最大エントリ数は、例えば、8である。
なお、PFPORT102bは、CPUコア部101ごとに設けられているので、例えば、n(nは自然数)個のCPUコア部101にそれぞれ対応してn個のPFPORT102bが設けられることとなり、各PFPORT102bは、優先制御部E113−1、・・・、優先制御部E113−1をそれぞれ有することになる。優先制御部B102dは、優先制御部E113−1、・・・、優先制御部E113−1および後述の共有PFPROT102jの優先制御部F120からの出力を入力とし、優先制御によって一のPFを優先制御部C102eへと出力する。
なお、エントリテーブル112は、所定の記憶領域に格納されるテーブルであり、「sub_valid」と、「PA」と、「PF_code」と、「PF_strong」と、「wt_flg」と、「hld_flg」とのカラムを有する。「PA」は、PFのキャッシュラインのデータが格納されている物理アドレスを示す。
「PF_code」は、PFの要求タイプを示し、PFの対象が『命令フェッチデータ』、『ロード(読み出し)データ』または『ストア(格納)アドレス(データをストアする物理アドレス)』のいずれであるかを示す。「PF_code」の優先順位の大小関係は、『命令フェッチデータ』<『ロードデータ』<『ストアアドレス』である。
また、PRPFORT102bまたは共有PRPFORT102jに存在する先行要求と後続要求とが、対象データのアドレスが一致した場合は、PFのPA[7:6]に対応するアドレスのsublineに対応するsub_validをオフし、そのsublineに対するリクエストを消去する。これによって最後のsub_validがオフされた場合は、PRPFORT102bまたは共有PRPFORT102jのエントリが開放されることになる。
なお、先行要求がPFで対象データが『ロードデータ』であり、後続要求がDMで対象データが『命令フェッチデータ』である場合、先行要求がPFで対象データが『ストアデータ』であり、後続要求がDMで対象データが『命令フェッチデータ』である場合、または、先行要求がPFで対象データが『ストアデータ』であり、後続要求がDMで対象データが『ロード命令』である場合は、PFのPA[7:6]に対応するアドレスが一致する場合でも、当該sublineに対するリクエストは消去されない。
「PF_strong」は、PFの属性を示し、「PF_strong」がオン(strong)であるときには必ず処理されるべきPFであり、「PF_strong」がオフ(weak)であるときには必ずしも処理される必要はなく、破棄(プリフェッチロスト)されることが許容されるPFであることを示すフラグである。
「wt_flg」は、当該エントリのPFが最初にPFパイプライン処理されたときにsn_resの応答がなくabtした場合にオンにされるフラグである。「wt_flg」は、以後リセットされるまで、当該エントリのPFは、L2パイプライン処理部102fへの投入が抑止される。リセット通知は、L2−LB102hから、sn_res_64またはsn_res_256を受信した契機で通知される。「wt_flg」がオンである限り、sn_resの応答以前に当該PFが無駄にPFパイプライン処理されることを防ぐ。
「hld_flg」は、あるサブラインに対応するPFがPFパイプライン処理されている間オンにされるフラグである。「hld_flg」がオンである限り、同一PFの他のサブラインがPFパイプライン処理されないように制御する。これは、連続的に同一のPFのサブラインがPFパイプライン処理されても処理のすれ違い(PFパイプライン処理の順序の逆転)が発生し、後続のサブラインのPFパイプライン処理をabtさせなければならないためである。
PFPORT制御部107は、PFPORT102b全体の制御をつかさどる制御装置であり、特に、L2パイプライン処理部102fからのPFのパイプラインの有効性を示す「PF_pipe_val」とL2パイプライン処理部102fからのPFパイプラインがabtしたPFであることを示す「PF_pipe_abt」の反転論理との論理積を取るANDゲート107aと、CPUコア部101からのDMであることを示す「DM_req_val」と後述のANDゲート107eの出力との論理積を取るANDゲート107bと、ANDゲート107aの出力とANDゲート107bの出力との論理和を取るORゲート107cと、CPUコア部101からのDMまたはPFの対象データの物理アドレス(DM/PF_req_PA)と、エントリテーブル112に格納される物理アドレス「PA」との一致性を判定するマッチング回路107dと、マッチング回路107dの出力と、エントリテーブル112に格納されるサブラインの有効性を示す「sub_valid」およびPFの種別を表す「PF_code」との論理積を取るANDゲート107eと、CPUコア部101からのPFのパイプラインの有効性を示す「PF_pipe_val」と、ANDゲート107の出力との論理積を取るANDゲート107fとを有する。
マッチング回路107dは、CPUコア部101からのPF要求(PF_req_val)を受信すると、有効なエントリ(sub_valid[3:0])のうち少なくとも1つがオンであるエントリと、256Byteのキャッシュライン単位でアドレスマッチングをおこなう。アドレスが一致するエントリがなければ、空きエントリ選択部110により選択された空きエントリに格納エントリ選択部111によってPFが登録され、アドレスが一致するエントリがあれば、エントリマージ処理部108によって一致するエントリにマージされる(具体的には、格納エントリ選択部111から「PF_req_set/merge」なる要求が入力されることによってset(登録)またはmerge(併合)される)。
PFが新規のエントリに登録される場合は、PFのPA[7:6]に対応する物理アドレスのサブラインに対応する「sub_valid」をオンにする。PA[7:6]=00、01、10、11がsubline0、subline1、subline2、subline3にそれぞれ対応する。
「PA」、「PF_code」、「PF_strong」については、CPUコア部101からのPFの際の通知に従う。「wt_flg」、「hld_flg」は初期値をオフ値とする。マージする場合は、PFのPA[7:6]に対応するアドレスのsublineに対応する「sub_valid」をオンする。
PAは変更がなく、「PF_code」、「PF_strong」については、先行するPFと後続するPFで「PF_strong」が同じであれば、「PF_code」の優先順位がより大きなものにあわせる。また、「PF_strong」が異なる場合は、「PF_strong」がオンである「PF_code」にあわせる。
また、PFPORT102bに存在する先行PFと後続PFとのアドレスが一致した場合は、エントリマージ処理部108は、PFのPA[7:6]に対応するアドレスのsublineに対応する「sub_valid」をオフし、そのsublineに対応するエントリをエントリテーブル112から消去する(具体的には、ORゲート107cからアドレスが一致したDM要求を消去する旨を示す「DM_req_mch_erase」なる信号が入力されることによって消去する)。これによって最後の「sub_valid」がオフにされたPFのエントリは、エントリテーブル112から開放されることになる。
PFパイプライン処理の最後にL2パイプライン処理部102fからPFPORT102bに、PFパイプライン処理がcmp(完了)したかabt(処理中断)したかが通知される。cmpならば、当該sublineに対応する「sub_valid」をオフにし、abtならば「sub_valid」をオンのままにする。
共有PFPORT102jは、PFPORT102bとほぼ同一の構成をしている。異なるのは、PFPORT102bがCPUコア部101からの入力を受け付けるのに対し、共有PFPORT102jへの入力は、すべてL2パイプライン処理部102fからの入力であることである。
また、PFPORT102bがCPUコア部101からのPFで新規のエントリを確保するのに対して共有PFPORT102jは、PFPORT102bからL2パイプライン処理部102fへ投入されたPFのうち、abtしたPFで新規のエントリを確保している。
DMとのアドレス一致によるエントリ消去操作についても、同様に、PFPORT102bがCPUコア部101からのDMとのアドレス一致を判定するのに対し、共有PFPORT102jは、L2−LB102hに登録されているDMとのアドレス一致を判定している。
共有PFPORT102jは、共有PFPORT制御部114と、エントリマージ処理部115と、sub_valid[3:0]のうち少なくとも1つがオンであるエントリを抽出するORゲート116と、空きエントリ選択部117と、格納エントリ選択部118と、ANDゲート119と、エントリテーブル120と、優先制御部F121とを有する。
共有PFPORT制御部114は、共有PFPORT102j全体の制御をつかさどる制御装置であり、エントリテーブル120のエントリごとに設けられている。共有PFPORT制御部114は、ANDゲート114aと、ANDゲート114bと、ORゲート114cと、マッチング回路114dと、ANDゲート114eと、ANDゲート114fとを有する。ANDゲート114a、ANDゲート114b、ORゲート114c、マッチング回路114d、ANDゲート114e、ANDゲート114fは、ANDゲート107a、ANDゲート107b、ORゲート107c、マッチング回路107d、ANDゲート107e、ANDゲート107fとほぼ同一の機能を有する。
また、エントリテーブル120の最大エントリ数は、例えば、8である。なお、共有PFPORT102jは、CPUコア部101の数に関わらず1つだけ設けられている。
共有PFPORT102jの共有PFPORT制御部114、エントリマージ処理部115、ORゲート116、空きエントリ選択部117、格納エントリ選択部118、エントリテーブル120は、PFPORT102bのPFPORT制御部107、エントリマージ処理部108、ORゲート109、空きエントリ選択部110、格納エントリ選択部111、エントリテーブル112とほぼ同一の構成および機能を有する。
異なるのは、共有PFPORT102jが、L2パイプライン処理部102fからのPFについてパイプラインの有効性を示す「PF_pipe_val」と、L2パイプライン処理部102fでabtしたPFであることを示す「PF_pipe_abt」と、L2−LB102hに登録されているDMとアドレスが一致したことを示す「PF_L2-LB_mch」と、L2パイプライン処理部102fからのPFの属性を示す「PF_strong」との論理積を取るANDゲート119を有し、このANDゲート119の出力がANDゲート114fに入力される点である。
優先制御部F121は、「wt_flg」、「hid_flg」がオフである有効なエントリのうち最も古いものからL2パイプライン処理部102fへ投入するよう制御する。優先制御部B102dは、PFPORT102bからのPFはLRUアルゴリズムで選択するのが最適である。共有PFPORT102jからのPFは、PFPORT102bからのPFよりも古いことが多いため、共有PFPORT102jからのPFを優先的に選択し、L2パイプライン処理部102fへ投入する。
なお、エントリマージ処理部108およびエントリマージ処理部115の詳細構成は、図示するように、ORゲート107cまたはORゲート114cからのアドレスが一致したDM要求を消去する旨を示す「DM_req_mch_erase」の反転入力と、後述のsub_valid[3:0]の値を保持するバッファ115cからの入力との論性積を取るANDゲート115aと、格納エントリ選択部111または格納エントリ選択部118からのFP要求をセット又はマージする旨を示す「PF_req_set/merge」と、ANDゲート115aの出力との論理和を取るORゲート115bと、ORゲート115bの出力を保持するバッファ115cとを有する。
エントリマージ処理部108およびエントリマージ処理部115の処理によって、CPUコア部101からのDMとアドレスが一致するPFのエントリがエントリテーブル112およびエントリテーブル120から消去される。また、既にエントリテーブル112およびエントリテーブル120にアドレスが一致するエントリが存在すれば、CPUコア部101またはL2パイプライン処理部102fからのPFのエントリを既存のエントリにマージすることができ、エントリテーブル112およびエントリテーブル120の効率的な資源活用を図ることができる。
次に、一実施の形態にかかるマルチコアプロセッサの動作について説明する。図6は、一実施の形態にかかるマルチコアプロセッサの動作を示すタイミングチャートである。なお、同図では、すべてsn_res_256応答の場合であるとする。すなわち、図示するPF10〜PF18は、図2−1に示した処理と同一である。しかし、sn_res_256に限らず、sn_res_256またはsn_res_64のいずれかであればよい。そして、共有PFPORT102jのPFのエントリ数は、8つであるとする。
CPUコア部101からのPFが共有L2キャッシュ部102のPFPORT102bへ、4サブラインすべてを含むキャッシュラインのPFが9つ発行されるとする(PF10〜PF18)。PFPORT102bでは、8つのPF10〜PF17ですべてのエントリ(PFPORT0〜PFPORT7)が使用状態(ビジー状態)になるが、9つ目のPFである、L2パイプライン処理部102fからのPF18は、PFPORT102bがすでにすべてのエントリを使い切っている状態(ビジー状態、busy)であるため、共有PFPROT102jで待機してL2パイプライン処理部102fへ投入される。共有PFPORT102jがビジー状態となった場合、新たに発行されるPFはPFPORT102bでそのまま待機して再投入される。
このように、一実施の形態にかかるマルチコアプロセッサでは、PFPORT102bのすべてのエントリがビジー状態であるとき、いずれかのエントリに登録されているPFが、PFパイプライン処理がabtまたはcmpによって開放されなくても、新たなPFをPFPORT102jに登録することができるため、待ち合わせのためのロスタイムの発生を回避することができる。特に、1つのCPUコア部101から集中的にPFが発行された場合であっても、PFを滞りなく処理することができる。
特に、この例で示されるようにsubline方式であり、CPU100がシステムに対するデータ要求に対して、データ転送がsubline単位で行われる(sn_res_64)か、全sublineをすべて転送するか(sn_res_256)の2通りがあり、いずれの転送方法を取るかの決定がシステム側でのスヌープ動作(キャッシュメモリの同期動作)の結果により決定されるシステムの下では、共有PFPORT102jを採用することが好適である。
これは、非subline方式であれば、最初のPFパイプライン処理においてL2−LB102hのエントリを確保すると、キャッシュラインのPFパイプライン処理は完了し、PFPORTのエントリが解放できてしまうからである。
次に、一実施の形態にかかる共有L2キャッシュ部の動作(待ち合わせフラグを解除することによって、プリフェッチ要求を共有PFPORTへ移動)について説明する。図7は、一実施の形態にかかる共有L2キャッシュ部の動作(待ち合わせフラグを解除することによって、プリフェッチ要求を共有PFPORTへ移動)を示すタイミングチャートである。
先ず、CPUコア部101は、4つのサブラインを含むPFを、対応する共有L2キャッシュ部102のPFPORT102bに出力する(pf_req(4subline) from Core to pfp entry0、ステップS151)。
PFを受けたPFPORT102bは、エントリテーブル112のエントリ0(pf_entry0)に当該PFを登録し、subline0〜3に対応するすべての有効フラグ(sub_valid[0]〜sub_valid[3])をオンにする。pfp_entry0 life timeは、そのPFによってPFPORT102bのentry0が占有され開放されるまでの期間を表す。その間、subline0〜3の少なくとも1の有効フラグがオンになっている。
続いて、PFを受けたPFPORT102bは、subline0についてパイプライン処理部102fへプライオリティ要求を出す。パイプライン処理部102fにおいてプライオリティが確保されると、pf_pipeline(subline0)で示されるPFパイプライン処理がおこなわれる(ステップS152)。
PFパイプライン処理中に、L2タグ記憶部102gを検索した結果、PFに紐付けられるタグに関して256Byteのキャッシュラインおよび64ByteのサブラインいずれもL2キャッシュミスであることが判明すると、PFパイプライン処理後、L2−LB102hのエントリが確保される。そして、subline0のPFパイプライン処理が完了されたため、PFPORT102bのsubline0の有効フラグ(sub_valid[0])がオフにされる。
さらに、L2−LB102hから、システムに対するデータ要求であるsc_reqがSC200に発行される(ステップS153)。subline0のPFパイプライン処理が完了したので、次にPFPORT102bは、subline1、subline2、subline3についてパイプライン処理部102fへプライオリティ要求を出す。プライオリティが確保されると、subline1、subline2、subline3のPFパイプライン処理がおこなわれる(ステップS154)。
しかし、まだsn_res_256がSC200から返っていない段階なので、subline1、subline2、subline3のPFパイプライン処理を完了させることができない。そこで、L2パイプライン処理部102fからPFPORT102bへ完了通知、共有PFPORT102jへPF要求セット通知が出され、共有PFPORT102jに当該PFを移動させる。
エントリテーブル120のエントリ2(pfp_share_entry2)に当該PFを登録し、subline0〜3に対応するすべての有効フラグ(sub_valid[0]〜sub_valid[3])および待ち合わせフラグ(wt_flg)をオンにする。そして、共有PFPORT102jで空いている最後のエントリ(pfp_share_entry2)にPFが登録されたため、共有PFPORT102jはビジー状態になったとする。
なお、pfp_ahare_entry0 life timeは、subline1のPFパイプライン処理がabtしてからそのPFによって共有PFPORT102jのentry0が占有され開放されるまでの期間を表す。
また、さらに、CPUコア部101は、4つのサブラインを含む新規のPFを、対応する共有L2キャッシュ部102のPFPORT102bに出力する(pf_req(4subline) from Core to pfp entry1、ステップS155)。
PFを受けたPFPORT102bは、エントリテーブル112のエントリ1(pf_entry1)に当該PFを登録し、subline0〜3に対応する有効フラグ(sub_valid[0]〜sub_valid[3])をすべてオンにする。pfp_entry1 life timeは、そのPFによってPFPORT102bのentry1が占有され開放されるまでの期間を表す。その間、subline0〜3の少なくとも1の有効フラグがオンになっている。
続いて、新規のPFを受けたPFPORT102bは、subline0についてパイプライン処理部102fへプライオリティ要求を出す。パイプライン処理部102fにおいてプライオリティが確保されると、pf_pipeline(subline0)で示されるPFパイプライン処理がおこなわれる(ステップS156)。
PFパイプライン処理中に、L2タグ記憶部102gを検索した結果、PFに紐付けられるタグに関して256Byteのキャッシュラインおよび64ByteのサブラインいずれもL2キャッシュミスであることが判明すると、PFパイプライン処理後、L2−LB102hのエントリが確保される。そして、subline0のPFパイプライン処理が完了されたため、PFPORT102bのsubline0の有効フラグ(sub_valid[0])がオフにされる。
さらに、L2−LB102hから、システムに対するデータ要求であるsc_reqがSC200に発行される(ステップS157)。subline0のPFパイプライン処理が完了したので、次にPFPORT102bは、subline1、subline2、subline3についてパイプライン処理部102fへプライオリティ要求を出す。プライオリティが確保されると、subline1、subline2、subline3のPFパイプライン処理がおこなわれる(pf_pipeline(subline1)、ステップS158)。
しかし、まだsn_res_256がSC200から返っていない段階なので、subline1、subline2、subline3のPFパイプライン処理はabtする。しかも、共有PFPORT102jは、ビジー状態であるので、新規のPFは、entry1に滞留して待ち合わせをおこなう。
エントリテーブル120のエントリ2であるpfp_share_entry2に登録されている256Byteのキャッシュラインに対するPFに対応するsn_res_256が到達すると(ステップS159)、4サブライン分のリプレースパイプライン処理(replace_pipeline(×4subline))がおこなわれる(ステップS160)。
続いて、共有PFPORT制御部114によってエントリテーブル120のエントリ0pfp_share_entry2の「wt_flg」が解除され、subline1、subline2、subline3のPFパイプライン処理が順次起動される(ステップS161、ステップS162、ステップS163)。これらのPFパイプライン処理は、L2−LB102hにおいて256ByteのアドレスマッチングおよびSC200からのsn_res_256応答済みのため、すべて完了される。
SC200は、sn_res_256応答と前後して、MAC300に対して該当アドレスのデータ要求を行い、データの用意ができたらCPU100に対してdow通知とともに、256Byteのデータを送出する(ステップS164)。dowのヘッダを受信すると、タグエントリパイプライン(tag_entry_pipeline)処理がL2−LB102hからL2パイプライン処理部102fに対して要求され、プライオリティが確保されると、タグエントリパイプライン処理がおこなわれる(ステップS165)。
L2−LB102gは、dowのデータ部をSC200から受信すると、L2パイプライン処理部102fに対して、subline0〜3のデータ受信が完了した順に、リプレースパイプライン処理で確保されたWAYに対するデータライトパイプライン処理を要求し、データライトパイプライン処理がおこなわれる(ステップS166)。
ステップS163の終了によって、エントリテーブル120のエントリ0pfp_share_entry2が開放される。そして、共有PFPORT102jからPFPROT102bへ、共有PFPORT102jのビジー状態が解消されたこと(「wt_flg」解除)が通知される(ステップS167)。
「wt_flg」解除の通知を受け取ったPFPROT102bは、subline1、subline2、subline3に対するPFを順次起動(ステップS168)するが、対応するsn_res_256応答がまだ到達していないため、PFパイプライン処理がabtするため、エントリテーブル120のエントリ0pfp_share_entry2へsubline1、subline2、subline3に対応するPFを移動させる。SC200からsn_res_256が返って来ると(ステップS169)、subline1、subline2、subline3のPFパイプライン処理はcmp(完了)する(ステップS170)。
そして、SC200は、sn_res_256応答と前後して、MAC300に対して該当アドレスのデータ要求を行い、データの用意ができたらCPU100に対してdow通知とともに、256Byteのデータを送出する(ステップS171)。
エントリテーブル120のエントリ0pfp_share_entry2が開放されたことを契機として、PFPORT制御部107は、PFPROT102bで待ち合わせているentry1のPFを、空いたpfp_sahre_entry2に移動させることよって、PFPROT102bの空きエントリを増やせるので、CPUコア部101からのPFをより多く受け入れる余地を持たせることができる。
次に、一実施の形態にかかる共有L2キャッシュ部の動作(共有PFPORTから、キャッシュラインのサブラインごとにエントリを消去)を説明する。図8は、一実施の形態にかかる共有L2キャッシュ部の動作(共有PFPORTから、キャッシュラインのサブラインごとにエントリを消去)を示すタイミングチャートである。
先ず、CPUコア部101は、4つのサブラインを含むPFを、対応する共有L2キャッシュ部102のPFPORT102bに出力する(pf_req(4subline) from Core to pfp entry0、ステップS181)。
PFを受けたPFPORT102bは、エントリテーブル112のエントリ0(pf_entry0)に当該PFを登録し、subline0〜3に対応するすべての有効フラグ(sub_valid[0]〜sub_valid[3])をオンにする。pfp_entry0 life timeは、そのPFによってPFPORT102bのentry0が占有され開放されるまでの期間を表す。その間、subline0〜3の少なくとも1の有効フラグがオンになっている。
続いて、PFを受けたPFPORT102bは、subline0についてパイプライン処理部102fへパイプライン投入を行うためのプライオリティ要求を出す。パイプライン処理部102fにおいてプライオリティが確保されると、pf_pipeline(subline0)で示されるPFパイプライン処理がおこなわれる(ステップS182)。
PFパイプライン処理中に、L2タグ記憶部102gを検索した結果、PFに紐付けられるタグに関して256Byteのキャッシュラインおよび64ByteのサブラインいずれもL2キャッシュミスであることが判明すると、PFパイプライン処理後、L2−LB102hのエントリが確保される。そして、subline0のPFパイプライン処理が完了されたため、PFPORT102bのsubline0の有効フラグ(sub_valid[0])がオフにされる。
さらに、L2−LB102hから、システムに対するデータ要求であるsc_reqがSC200に発行される(ステップS183)。subline0のPFパイプライン処理が完了したので、次にPFPORT102bは、subline1、subline2、subline3についてパイプライン処理部102fへプライオリティ要求を出す。プライオリティが確保されると、subline1、subline2、subline3のPFパイプライン処理がおこなわれる(ステップS184)。
しかし、まだsn_res_256がSC200から返っていない段階なので、subline1、subline2、subline3のPFパイプライン処理を完了させることができない。そこで、L2パイプライン処理部102fからPFPORT102bへ完了通知、共有PFPORT102jへPF要求セット通知が出され、共有PFPORT102jに当該PFを移動させる。そして、エントリテーブル120のエントリ0(pfp_share_entry0)に当該PFを登録し、subline0〜3に対応するすべての有効フラグ(sub_valid[0]〜sub_valid[3])および待ち合わせフラグ(wt_flg)をオンにする。
今、pfp_share_entry0に登録されているPFと同一の256Byteキャッシュラインに対応するsubline2のDMがMIPORT102aに発行されて、MIPORT102aに登録される(dm_req(subline2) from core to mip、ステップS185)。そして、dm_req(subline2)のパイププライン処理(dm_pipeline処理)がMIPORT102aから起動される(ステップS186)。
DM要求に対するパイププライン処理であるdm_pipeline処理中にL2キャッシュミスが発生し、data_write_pipeline処理が完了していないためにdm_pipeline処理を完了させることができず、「wt_flg」がオンにされ、待ち合わせ状態になる。それとともに、L2−LB102hにおいて、subline2の256Byteのアドレスおよび「PF_code」の一致が検出されると、pfp_share_entry0のsubline2に対応するsub_valid[1]をオフにする。これによって、pfp_share_entry0からsubline2に対応するpf_pipeline処理の起動が行われないこととなる。
SC200からのsn_res_256応答を受信すると(ステップS188)、4サブライン分のリプレースパイプライン処理(replace_pipeline(×4subline))がおこなわれる(ステップS189)。
そして、pfp_share_entry0からsubline1、subline3に対応するpf_pipeline処理が起動される(ステップS190、ステップS191)。既に、ステップS188でsn_res_256到達済みなので、subline1、subline3に対応するpf_pipeline処理は完了し、pfp_share_entry0は開放される。subline2はすでにsub_valid[1]がオフにされているため、pf_pipeline処理はおこなわれない。
さらに、SC200からのdow応答とともに、L2タグ記憶部102gに保持されているタグエントリに対するtag_entry_pipeline処理およびL2キャッシュ102iに保持されている2次キャッシュデータに対するdata_write_pipelin処理が起動する(ステップS192、ステップS193)。subline2に対応するdata_write_pipeline処理がおこなわれると(ステップS194)、pfp_entry0の「wt_flg」がオフにされ、待機していたDMのsubline2のDM要求に対するパイププライン処理dm_pipeline処理がおこなわれる(ステップS195)。
以上のように、DMと対象データのアドレスが一致する場合に、PFのsublineの「sub_valid」をオフにすることによって、PFに基づく当該sublineのPFパイプライン処理をおこなわず、DMと重複してパイプライン処理がおこなわれるという無駄を回避することができる。
次に、共有L2キャッシュ部の非サブライン方式によるタグマッチングと、サブライン方式によるタグマッチングとの違いについて説明する。図9−1は、共有L2キャッシュ部の非サブライン方式によるタグマッチング回路を示すブロック図である。図9−2は、共有L2キャッシュ部のサブライン方式によるタグマッチング回路を示すブロック図である。図9−2は、キャッシュラインがサブライン0〜サブライン3の4つのサブラインを含む4subline方式に基づく。
先ず、図9−1を参照する。非subline方式では、タグ記憶部102gに保持されるタグ情報のエントリであるTAG_entryは、PA_index([18:8])のインデックスで管理され、「PA_TAG[46:19]」(アドレスタグ領域)、「valid」(有効フラグ)、「L2_TC[2:0]」(L2キャッシュ102iがデータを保持するか否かを示すフラグ)、「L1_TC[2:0]」(L1キャッシュ(L1命令キャッシュ101bおよびL1データキャッシュ101e)がデータを保持するか否かを示すフラグ)、「CORE_ID[1:0]」(L1キャッシュにデータを保持するCPUコア部101の識別情報)のカラムを有する。複数のCPUコア部101が、「L1_TC」および「CORE_ID」の組み合わせで、後述のエンコーダ124によって個別にエンコードされる。「valid」は、「L2_TC[2:0]」≠0であることと等価なので必ずしも必要ではない。
非subline方式のL2キャッシュヒット判定は、WAYごとに、マッチング回路124によるパイプライン処理中のデータのアドレス(pipe_PA[46:19])と「PA_TAG[46:19]」とのマッチング結果と、「valid」との論理和をANDゲート123で取って生成する。なお、複数のWAYが同時にヒットすることがないように制御される。あるWAYがヒットした場合は、ヒットしたWAYに対してセレクタ125によって「L2_TC[2:0]」が「L2_hit_L2_TC[2:0]」として、セレクタ126によって「L1_TC[2:0]」が「L1_hit_L1_TC[2:0]」として、セレクタ127によって「CORE_ID[1:0]」が「L2_hit_CORE_ID[1:0]」として選択され、エンコーダ124によってL2_hit_WAY[1:0]がエンコードされパイプライン制御に使用される。なお、「valid」がオフであるキャッシュラインは、L2キャッシュ102iで保持していないことになる。
次に、図9−2を参照する。subline方式では、タグ記憶部102gに保持されるタグ情報のエントリであるTAG_entryは、PA_index([18:8])のインデックスで管理され、「PA_TAG[46:19]」、「sub_valid_0」(サブライン0の有効フラグ)、「L2_TC_0[2:0]」(L2キャッシュ102iがサブライン0のデータを保持するか否かを示すフラグ)、「L1_TC_0[2:0]」(L1キャッシュ(L1命令キャッシュ101bおよびL1データキャッシュ101e)がサブライン0のデータを保持するか否かを示すフラグ)、「CORE_ID_0[1:0]」(L1キャッシュにサブライン0のデータを保持するCPUコア部101の識別情報)、「sub_valid_1」(サブライン1の有効フラグ)、「L2_TC_1[2:0]」(L2キャッシュ102iがサブライン1のデータを保持するか否かを示すフラグ)、「L1_TC_1[2:0]」(L1キャッシュ(L1命令キャッシュ101bおよびL1データキャッシュ101e)がサブライン1のデータを保持するか否かを示すフラグ)、「CORE_ID_1[1:0]」(L1キャッシュにサブライン1のデータを保持するCPUコア部101の識別情報)、・・・、「sub_valid_3」(サブライン3の有効フラグ)、「L2_TC_3[2:0]」(L2キャッシュ102iがサブライン3のデータを保持するか否かを示すフラグ)、「L1_TC_3[2:0]」(L1キャッシュ(L1命令キャッシュ101bおよびL1データキャッシュ101e)がサブライン3のデータを保持するか否かを示すフラグ)、「CORE_ID_3[1:0]」(L1キャッシュにサブライン3のデータを保持するCPUコア部101の識別情報)のカラムを有する。複数のCPUコア部101が、「L1_TC_0」および「CORE_ID_0」、「L1_TC_1」および「CORE_ID_1」、「L1_TC_2」および「CORE_ID_2」、「L1_TC_3」および「CORE_ID_3」の組み合わせで、後述のエンコーダ131によって個別にエンコードされる。
すなわち、タグ記憶部102gに保持されるタグ情報のエントリであるTAG_entryは、「PA_TAG[46:19]」を全sublineで共有しているが、それ以外の「sub_valid」、「L2_TC[2:0]」、「L1_TC[2:0]」、「CORE_ID[1:0]」についてはsubline独立に保持している。各sublineの「sub_valid」のうちひとつでもオンであれば、256Byteキャッシュラインとして有効である。「sub_valid」は、当該サブラインに対応する「L2_TC」≠0であることと等価なので必ずしも必要ではない。
subline方式のL2キャッシュヒット判定は、WAYごとに、マッチング回路128によるパイプライン処理中のデータのアドレス(pipe_PA[46:19])と「PA_TAG[46:19]とのマッチング結果と、すべての「sub_valid」の論理積をORゲート129で取った結果との論理積をANDゲート130によって取って生成する。あるWAYがヒットした場合は、ヒットしたWAYに対してセレクタ132によって「L2_TC_0[2:0]」が「L2_hit_L2_TC_0[2:0]」として、セレクタ133によって「L1_TC_0[2:0]」が「L2_hit_L1_TC_0[2:0]」として、セレクタ134によって「CORE_ID_0[1:0]」が「L2_hit_CORE_ID_0[1:0]」として、・・・、セレクタ135によって「L2_TC_3[2:0]」が「L2_hit_L2_TC_3[2:0]」として、セレクタ136によって「L1_TC_3[2:0]」が「L2_hit_L1_TC_3[2:0]」として、セレクタ137によって「CORE_ID_3[1:0]」が「L2_hit_CORE_ID_3[1:0]として選択され、エンコーダ131によって「L2_hit_WAY[1:0]」がエンコードされパイプライン制御に使用される。なお、「sub_valid」がオフであるサブラインは、L2キャッシュ102iで保持していないことになる。
また、非subline方式、subline方式ともに、「PA_TAG[46:19]」と共通インデックスで、replace_pipeline制御に使用されるLRU情報を持つ。「L2_TC[2:0]」は、『I』、『S』、『E』、『O』、『W』、『M』の6種類の状態を取り、『encode』、『valid』、『排他権』、『writeback義務』、『store義務』ごとにそれぞれエンコードされる。
なお、subline方式の利点は次のようなものである。キャッシュラインサイズが大きくなるため、L2タグ記憶部102gや、L1−LB101i、L2−LB102hなどの面積リソースの効率が高まる。また、データ転送の単位を、必要に応じて全キャッシュライン256Byte単位またはsubline64Byte単位などのように、状況に応じて選択することが可能なので、データ転送効率が良くなる。
次に、共有L2キャッシュ部のパイプライン処理の概要(共有PFPORTを有さない場合)を説明する。図10−1は、共有L2キャッシュ部のパイプライン処理の概要(共有PFPORTを有さない場合)を示す図である。
同図に示すように、L2パイプライン処理部102fは、PFPORT102bからのpriority要求を受け付けると、priorityを確保し、TAG読み出しアドレス入力をおこなう。そして、TAG読み出し動作およびL2−LB102hとのアドレス一致検出を同時におこなう。
続いて、L2パイプライン処理部102fは、TAG_mch(タグ一致)およびhit(L2キャッシュヒット)検出、および、L2−LB102hとの一致アドレス転送を同時におこなう。そして、TAG_mchおよびhit検出結果、および、L2−LB102hとのアドレス一致検出結果に基づきPF処理をおこなう。
PF処理は、(条件1)『L2キャッシュミスまたは「L2_TC」がオフ、かつ、L2−LB102hとの256Byteのキャッシュラインでのアドレスが一致しない(L2_miss|(!L2_TC_mch)&(!LB_256_mch))』場合に、L2−LB102hにおいてエントリを確保し、要求元のPFPORT102bへ完了(cmp)を通知する。
また、(条件2)『L2キャッシュヒットかつL2−LB102hとの256Byteのキャッシュラインでのアドレスが一致する(L2_hit&LB_256_mch)』場合に、タグ記憶部102gの「TAG」および「LRU」の更新アドレスを入力し、要求元のPFPORT102bへ完了(cmp)を通知する。
また、(条件3)『L2キャッシュミスまたは「L2_TC」がオフ、かつ、L2−LB102hとの256Byteのキャッシュラインでのアドレスが一致し、sn_res_256応答がある((L2_miss|(!L2_TC_mch))&L2−LB_256_mch&sn_res_256))』場合に、要求元のPFPORT102bへ完了(cmp)を通知する。
また、(条件4)『L2キャッシュミスまたは「L2_TC」がオフ、かつ、L2−LB102hとの256Byteのキャッシュラインでのアドレスが一致し、sn_res_64応答がある((L2_miss|(!L2_TC_mch))&L2−LB_256_mch&sn_res_64)』場合に、L2−LB102hにエントリの該当サブラインをマージし、要求元のPFPORT102bへ完了(cmp)を通知する。
また、(条件5)『L2キャッシュミスまたは「L2_TC」がオフ、かつ、L2−LB102hとの256Byteのキャッシュラインでのアドレスが一致するが、sn_res_256応答もsn_res_64応答もない(L2_miss|(!L2_TC_mch)&(!LB_256_mch)&(!sn_res_64&!sn_res_256)』場合に、要求元のPFPORT102bへabtを通知し、エントリテーブル112の該当するエントリの「wt_flg」をオンにする指示を出力する。
また、(条件6)『その他、PFパイプライン処理(pf_pipeline)が完了できなかった』場合に、要求元のPFPORT102bへabtを通知する。
次に、共有L2キャッシュ部のパイプライン処理の概要(共有PFPORTを有する場合)を説明する。図10−2は、共有L2キャッシュ部のパイプライン処理の概要(共有PFPORTを有する場合)を示す図である。
同図に示すように、L2パイプライン処理部102fは、PFPORT102bまたは共有PFPORT102jからのpriority要求を受け付けると、priorityを確保し、TAG読み出しアドレス入力をおこなう。そして、TAG読み出し動作およびL2−LB102hとのアドレス一致検出を同時におこなう。
続いて、L2パイプライン処理部102fは、TAG_mch(タグ一致)およびhit(L2キャッシュヒット)検出、および、L2−LB102hとの一致アドレス転送を同時におこなう。そして、TAG_mchおよびhit検出結果、および、L2−LB102hとのアドレス一致検出結果に基づきPF処理をおこなう。
PF処理は、(条件11)『L2キャッシュミスまたは「L2_TC」がオフ、かつ、L2−LB102hとの256Byteのキャッシュラインでのアドレスが一致しない(L2_miss|(!L2_TC_mch)&(!LB_256_mch))』場合に、L2−LB102hにおいてエントリを確保(sc_req)し、要求元のPFPORT102bへ完了(cmp)を通知する。
また、(条件12)『L2キャッシュヒットかつL2−LB102hとの256Byteのキャッシュラインでのアドレスが一致する(L2_hit&LB_256_mch)』場合に、タグ記憶部102gの「TAG」および「LRU」の更新をおこない、要求元のPFPORT102bへ完了(cmp)を通知する。
また、(条件13)『L2キャッシュミスまたは「L2_TC」がオフ、かつ、L2−LB102hとの256Byteのキャッシュラインでのアドレスが一致し、sn_res_256応答がある((L2_miss|(!L2_TC_mch))&L2−LB_256B_mch&sn_res_256)』場合に、要求元のPFPORT102bへ完了(cmp)を通知する。
また、(条件14)『L2キャッシュミスまたは「L2_TC」がオフ、かつ、L2−LB102hとの256Byteのキャッシュラインでのアドレスが一致し、sn_res_64応答がある((L2_miss|(!L2_TC_mch))&L2−LB_256B_mch&sn_res_64)』場合に、L2−LB102hにエントリの該当サブラインをマージし(sc_req)、要求元のPFPORT102bへ完了(cmp)を通知する。
また、(条件15)『PFPROT102bからの要求であり、共有PFPROT102jがビジー状態でない、かつ、L2キャッシュミスまたは「L2_TC」がオフ、かつ、L2−LB102hとの256Byteのキャッシュラインでのアドレスが一致するが、sn_res_256応答もsn_res_64応答もない(要求元PFPROTがPFPROT102bである&共有PFPROT102jがbusyでない&(L2_miss|(!L2_TC_mch))&L2−LB_256_mch&(!sn_res_256&!sn_res_64))』場合に、要求元のPFPORT102bへabtを通知し、共有PFPORT102jのエントリテーブル120へエントリを移動させ、エントリテーブル112の該当するエントリの「wt_flg」をオンにする指示を出力する。
また、(条件16)『PFPROT102bからの要求であり、共有PFPROT102jがビジー状態である、または、L2キャッシュミスまたは「L2_TC」がオフかつL2−LB102hとの256Byteのキャッシュラインでのアドレスが一致するが、L2キャッシュミスでありsn_res_256応答もsn_res_64応答もない(((要求元PFPORTがPEPORT102bである&共有PFPORT102jがbusyである)|(要求元PFPORTがPRPORT102jである))&(L2_miss|(!L2_TC_mch))&L2−LB_256_mch&(!sn_res_256&!sn_res_64))』場合に、要求元のPFPORT102bへabtを通知し、エントリテーブル112の該当するエントリの「wt_flg」をオンにする指示を出力する。
また、(条件17)『その他、PFパイプライン処理(pf_pipeline)が完了できなかった』場合に、要求元のPFPORT(PFPORT102bまたは共有PFPORT102j)へabtを通知する。
次に、共有L2キャッシュ部のDMパイプライン処理の概要を説明する。図10−3は、共有L2キャッシュ部のDMパイプライン処理の概要を示す図である。
同図に示すように、L2パイプライン処理部102fは、MIPORT102aからのpriority要求を受け付けると、priorityを確保し、TAG読み出しアドレス入力をおこなう。そして、TAG読み出し動作およびL2−LB102hとのアドレス一致検出を同時におこなう。
続いて、L2パイプライン処理部102fは、TAG_mch(タグ一致)およびhit(L2キャッシュヒット)検出、および、L2−LB102hとの一致アドレス転送を同時におこなう。そして、TAG_mchおよびhit検出結果、および、L2−LB102hとのアドレス一致検出結果に基づきPF処理をおこなう。
PF処理は、(条件21)『L2キャッシュミスまたは「L2_TC」がオフ、かつ、L2−LB102hとの256Byteのキャッシュラインでのアドレスが一致しない(L2_miss|(!L2_TC_mch)&(!LB_256_mch))』場合に、L2−LB102hにおいてエントリを確保し、要求元のMIPORT102aへ完了(cmp)を通知する。
また、(条件22)『L2キャッシュヒットかつL2−LB102hとの256Byteのキャッシュラインでのアドレスが一致する(L2_hit&LB_256_mch)』場合に、L2キャッシュ102iのデータの読み出しアドレスを入力し、L2キャッシュ102iからデータを読み出し、CPUコア部101のL1キャッシュ(L1命令キャッシュ101bまたはL1データキャッシュ101e)へデータを転送する。そして、タグ記憶部102gの「TAG」および「LRU」の更新アドレスを入力し、要求元のMIPORT102aへ完了(cmp)を通知する。
また、(条件23)『L2キャッシュミスまたは「L2_TC」がオフ、かつ、L2−LB102hとの256Byteのキャッシュラインでのアドレスが一致し、sn_res_256応答がある(L2_miss|(!L2_TC_mch)&(!LB_256_mch)&sn_res_256)』場合に、L2−LB102hにエントリの該当サブラインをマージし、要求元のMIPORT102aへ完了(cmp)を通知する。
また、(条件24)『L2−LB102hとの256Byteのキャッシュラインでのアドレスが一致するが、データライトが完了済みでない(LB_256_mch&!(data_write完了済み)』場合に、要求元のMIPORT102aへ完了(cmp)を通知し、エントリテーブル112の該当するエントリの「wt_flg」をオンにする指示を出力する。
また、(条件25)『その他、PFパイプライン処理(pf_pipeline)が完了できなかった』場合に、要求元のMIPORT102aへabtを通知する。
PF要求に対するパイププライン処理PF_pipeline処理と、DM要求に対するパイププライン処理PF_pipeline処理と、DM_pipeline処理との基本的な違いは、PF_pipeline処理がL2キャッシュ102iへの要求データの登録を目的とするのに対し、DM_pipeline処理はCPUコア部101へ要求アドレスのデータを確実に応答することである。
次に、共有L2キャッシュ部のL2リプレースパイプライン処理の概要を説明する。図10−4は、共有L2キャッシュ部のL2リプレースパイプライン処理の概要を示す図である。L2リプレースパイプライン(L2_replace_pipeline)処理は、新規に登録するWAYを登録前に無効化するpipeline処理である。
同図に示すように、L2パイプライン処理部102fは、L2−LB102hからのpriority要求を受け付けると、priorityを確保し、TAG読み出しアドレス入力をおこなう。そして、TAG読み出し動作およびL2−LB102hとのアドレス一致検出を同時におこなう。
続いて、L2パイプライン処理部102fは、TAG_mch(タグアドレス一致)およびhit(L2キャッシュヒット)検出をおこなう。そして、replace_pipeline処理判定をおこなう。続いて、L2−LB102hへcmpまたはabtを通知するとともに、「TAG」の更新アドレスを入力する。そして、L2−LB102hは、Replace完了フラグをオンにする。
replace_pipeline処理では、Writebackの必要がある「L_TC(O、W、M)」の場合は、DIMM400へのWriteback処理を伴う。また、「L1_TC」≠0(すなわち、L1キャッシュヒット)の場合は、データを保持するCPUコア部101に無効化要求が発行される。replace_pipeline処理は、sn_res応答を受けたL2−LB102hのエントリから起動される。
なお、replace_pipeline処理は、PF_pipeline処理やDM_pipeline処理と同様に、「TAG」の検索を行うサイクルが存在するが、その結果を特に使用するわけではなく、L2−LB102hのエントリを新規に確保したときに、LRUで決定されたWAYとindex_addresとsublineとを指定して、WAYを無効化する処理を行う。有効なsubline分処理されるので最大subline数分だけ(本一実施の形態では、4subline方式であるので、4回)起動される処理である。
次に、共有L2キャッシュ部のL2タグライトパイプライン処理の概要を説明する。図10−5は、共有L2キャッシュ部のL2タグライトパイプライン処理の概要を示す図である。L2タグライトパイプライン(L2_tag_write_pipeline)処理は、「TAG」の登録をおこなうパイプライン処理である。
同図に示すように、L2パイプライン処理部102fは、L2−LB102hからのpriority要求を受け付けると、priorityを確保し、TAG読み出しアドレス入力をおこなう。そして、TAG読み出し動作およびL2−LB102hとのアドレス一致検出を同時におこなう。
続いて、L2パイプライン処理部102fは、TAG_mch(タグアドレス一致)およびhit(L2キャッシュヒット)検出をおこなう。そして、tag_pipeline処理判定をおこなう。続いて、L2−LB102hへcmp(完了)またはabtを通知するとともに、「TAG」の更新アドレスを入力する。そして、L2−LB102hは、TAG登録完了フラグをオンにする。
L2_tag_write_pipeline処理は、dow応答のヘッダを受けたL2−LB102hのエントリから起動される。PF_pipeline処理やDM_pipeline処理と同様に、「TAG」の検索を行うサイクルが存在するが、その結果を特に使用するわけではなく、L2−LB102hのエントリを新規に確保したときに、LRUで決定されたWAYとindex_addresとを指定して、「TAG」をL2タグ記憶部102gへ新規に登録する処理をおこなう。sn_res_256応答の場合は1回のpipeline処理で4subline分の「TAG」の登録をおこなう処理である。
次に、共有L2キャッシュ部のL2データライトパイプライン処理の概要を説明する。図10−6は、共有L2キャッシュ部のL2データライトパイプライン処理の概要を示す図である。L2データライトパイプライン(L2_data_write_pipeline)処理は、データをL2キャッシュ102iに書き込むpipeline処理である。
同図に示すように、L2パイプライン処理部102fは、L2−LB102hからのpriority要求を受け付けると、priorityを確保し、TAG読み出しアドレス入力をおこなう。そして、TAG読み出し動作およびL2−LB102hとのアドレス一致検出を同時におこなう。
続いて、L2パイプライン処理部102fは、TAG_mch(タグアドレス一致)およびhit(L2キャッシュヒット)検出をおこなう。そして、data_write_pipeline処理判定をおこなう。続いて、L2−LB102hへcmpまたはabtを通知する。この通知を受けて、L2LB102hは、data_write登録完了フラグをオンにする。
L2パイプライン処理部102fは、パイプライン処理結果の判定を行うL2_data_write_pipeline処理判定およびdata_write登録完了フラグをオンにする処理と平行して、L2キャッシュ102iのデータ更新アドレスを入力し、L2キャッシュへデータを書き込む。
data_write_pipeline処理は、dow応答のデータ部を受けたL2−LB102hのエントリから起動される。データ転送の途中でも、sublineのデータ受信が終わるごとに逐次起動される。
data_write_pipeline処理は、PF_pipeline処理やDM_pipeline処理と同様に、「TAG」の検索を行うサイクルが存在するが、その結果を特に使用するわけではなく、L2−LB102hのエントリを新規に確保したときに、LRUで決定されたWAYとindex_addresとを指定して、L2キャッシュ102iへのデータの書き込みを行う処理である。
以上、本発明の一実施の形態を説明したが、本発明は、これに限られるものではなく、請求の範囲に記載した技術的思想の範囲内で、更に種々の異なる実施の形態で実施されてもよいものである。また、一実施の形態に記載した効果は、これに限定されるものではない。
また、上記一実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記一実施の形態で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示したものに限られず、その一部または全部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
本発明は、複数のCPUプロセッサコアと、複数のCPUプロセッサコアから共有されるL2キャッシュメモリを有する演算処理装置および演算処理装置の制御方法において、L2キャッシュへのPFがほぼ必ず処理される実装である場合、資源枯渇などの理由により処理完了しなかったPFが効率的に再処理され、PF全体のスループットを向上させたい場合に有用である。

Claims (10)

  1. 第1及び第2の演算処理部と、前記第1及び第2の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有し、記憶装置に接続される演算処理装置において、
    前記第1の演算処理部は、
    第1のキャッシュメモリを有するとともに、前記第1のキャッシュメモリに予めデータを読み込むプリフェッチ要求を、前記共有キャッシュメモリ又は記憶装置に対して発行し、
    前記第2の演算処理部は、
    第2のキャッシュメモリを有するとともに、前記第2のキャッシュメモリに予めデータを読み込むプリフェッチ要求を、前記共有キャッシュメモリ又は記憶装置に対して発行し、
    前記共有キャッシュメモリ制御部は、
    前記共有キャッシュメモリに対する前記プリフェッチ要求の処理を行うプリフェッチ処理部と、
    前記第1の演算処理部からのプリフェッチ要求のみを保持するとともに、前記第1の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行する第1のプリフェッチ記憶部と、
    前記第2の演算処理部からのプリフェッチ要求のみを保持するとともに、前記第2の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行する第2のプリフェッチ記憶部と、
    前記第1又は第2のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、前記完了できなかったプリフェッチ要求をエントリに保持するとともに、前記完了できなかったプリフェッチ要求を前記プリフェッチ処理部に発行する共有プリフェッチ記憶部
    を有することを特徴とする演算処理装置。
  2. 前記プリフェッチ処理部は、
    前記第1又は第2のプリフェッチ記憶部から発行された前記プリフェッチ要求が完了できなかった場合に、
    前記共有プリフェッチ記憶部が有する前記エントリに既に保持されているプリフェッチ要求の対象アドレスが、前記完了できなかったプリフェッチ要求の対象アドレスと、それぞれ一致するときは、
    前記完了できなかったプリフェッチ要求を前記エントリに既に保持されているプリフェッチ要求とマージする
    ことを特徴とする請求項1記載の演算処理装置。
  3. 前記プリフェッチ処理部は、
    前記第1又は第2のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、
    前記第1又は第2のキャッシュメモリに対して既に発行されたロード要求の対象アドレスとプリフェッチ要求の種類が、前記完了できなかったプリフェッチ要求の対象アドレスとプリフェッチ要求の種類と、それぞれ一致するときは、
    前記完了できなかったプリフェッチ要求を前記エントリから消去する
    ことを特徴とする請求項1記載の演算処理装置。
  4. 前記第1及び第2のキャッシュメモリが有するキャッシュラインは、前記共有キャッシュメモリのサブラインとして、前記共有キャッシュメモリのキャッシュラインのサイズのN分の1(Nは自然数)のサイズを有し、
    前記第1及び第2のプリフェッチ記憶部と前記共有プリフェッチ記憶部は、
    前記サブライン単位でプリフェッチを前記共有プリフェッチ記憶部が有するエントリに保持する
    ことを特徴とする請求項1記載の演算処理装置。
  5. 前記第1及び第2のキャッシュメモリが有するキャッシュラインは、前記共有キャッシュメモリのサブラインとして、前記共有キャッシュメモリのキャッシュラインのサイズのN分の1(Nは自然数)のサイズを有し、
    前記プリフェッチ処理部は、
    前記完了できなかったプリフェッチ要求を、前記第1又は第2のプリフェッチ記憶部から前記サブライン単位で消去する
    ことを特徴とする請求項1記載の演算処理装置。
  6. 前記共有キャッシュメモリ制御部はさらに、
    前記第1又は第2のキャッシュメモリに対して既に発行されたロード要求を保持するロード要求記憶部をさらに有し、
    前記プリフェッチ処理部は、
    前記第1又は第2のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、
    前記ロード要求記憶部に既に保持されたロード要求の対象アドレスと、前記完了できなかったプリフェッチ要求との間において、前記ロード要求と前記完了できなかったプリフェッチ要求の対象アドレスが一致するとき、
    前記完了できなかったプリフェッチ要求を前記共有プリフェッチ記憶部が有するエントリに保持する
    ことを特徴とする請求項1記載の演算処理装置。
  7. 前記共有プリフェッチ記憶部は、
    前記第1又は第2のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、
    前記完了できなかったプリフェッチ要求が、プリフェッチ処理を必ず処理しなければならない属性であるとき、
    前記完了できなかったプリフェッチ要求を前記共有プリフェッチ記憶部が有するエントリに保持する
    ことを特徴とする請求項1記載の演算処理装置。
  8. 第1及び第2の演算処理部と、前記第1及び第2の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有するともに、記憶装置に接続された演算処理装置において、
    前記第1の演算処理部は、
    第1のキャッシュメモリを有するとともに、前記第1のキャッシュメモリに対してロード要求又は予めデータを読み込むプリフェッチ要求を発行し、
    前記第2の演算処理部は、
    第2のキャッシュメモリを有するとともに、前記第2のキャッシュメモリに対してロード要求又は予めデータを読み込むプリフェッチ要求を発行し、
    前記共有キャッシュメモリ制御部は、
    前記第1及び第2のロード要求を保持するロード要求記憶部と、
    前記共有キャッシュメモリに対する前記プリフェッチ要求の処理を行うプリフェッチ処理部と、
    前記第1の演算処理部からのプリフェッチ要求を、第1の待ち合わせフラグを有する第1のエントリに保持するとともに、前記第1の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行する第1のプリフェッチ記憶部と、
    前記第2の演算処理部からのプリフェッチ要求を、第2の待ち合わせフラグを有する第2のエントリに保持するとともに、前記第2の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行する第2のプリフェッチ記憶部を有するとともに、
    前記第1又は第2のプリフェッチ記憶部から前記プリフェッチ処理部に発行したプリフェッチ要求が完了しなかったことにより、前記第1又は第2の待ち合わせフラグを前記プリフェッチ要求に対応する前記第1又は第2のエントリにそれぞれセットするとともに、
    前記第1又は第2の待ち合わせフラグがセットされた前記第1又は第2のエントリのプリフェッチ要求に対する前記記憶装置からの応答に応じて、セットされた前記第1又は第2の待ち合わせフラグを解除し、前記共有プリフェッチ記憶部が有する第3のエントリが空いた場合に、前記第1又は第2のプリフェッチ記憶部において、前記第1又は第2のエントリのうち前記第1又は第2の待ち合わせフラグが最も早くセットされたエントリに保持されたプリフェッチ要求を前記共有プリフェッチ記憶部が有する前記第3のエントリに保持させる
    ことを特徴とする演算処理装置。
  9. 第1及び第2の演算処理部と、前記第1及び第2の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有し、記憶装置に接続される演算処理装置の制御方法において、
    第1のキャッシュメモリを有する前記第1の演算処理部が、前記第1のキャッシュメモリに予めデータを読み込むプリフェッチ要求を、前記共有キャッシュメモリ又は記憶装置に対して発行するステップと、
    第2のキャッシュメモリを有する前記第2の演算処理部が、前記第2のキャッシュメモリに予めデータを読み込むプリフェッチ要求を、前記共有キャッシュメモリ又は記憶装置に対して発行するステップと、
    第1のプリフェッチ記憶部が、前記第1の演算処理部からのプリフェッチ要求のみを保持するとともに、前記第1の演算処理部からのプリフェッチ要求を前記共有キャッシュメモリ制御部が有するプリフェッチ処理部に発行するステップと、
    第2のプリフェッチ記憶部が、前記第2の演算処理部からのプリフェッチ要求のみを保持するとともに、前記第2の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行するステップと、
    共有プリフェッチ記憶部が、前記第1又は第2のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、前記完了できなかったプリフェッチ要求をエントリに保持するとともに、前記完了できなかったプリフェッチ要求を前記プリフェッチ処理部に発行するステップ
    を有することを特徴とする演算処理装置の制御方法。
  10. 第1及び第2の演算処理部と、前記第1及び第2の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有するともに、記憶装置に接続された演算処理装置の制御方法において、
    第1のキャッシュメモリを有する前記第1の演算処理部が、前記第1のキャッシュメモリに対してロード要求又は予めデータを読み込むプリフェッチ要求を発行するステップと、
    第2のキャッシュメモリを有する前記第2の演算処理部が、前記第2のキャッシュメモリに対してロード要求又は予めデータを読み込むプリフェッチ要求を発行するステップと、
    前記共有キャッシュメモリ制御部が有するロード要求記憶部が、前記第1及び第2のロード要求を保持するステップと、
    前記共有キャッシュメモリ制御部が有する第1のプリフェッチ記憶部が、前記第1の演算処理部からのプリフェッチ要求を、第1の待ち合わせフラグを有する第1のエントリに保持するとともに、前記第1の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行するステップと、
    前記共有キャッシュメモリ制御部が有する第2のプリフェッチ記憶部が、前記第2の演算処理部からのプリフェッチ要求を、第2の待ち合わせフラグを有する第2のエントリに保持するとともに、前記第2の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行するステップと、
    前記共有キャッシュメモリ制御部が、前記第1又は第2のプリフェッチ記憶部から前記プリフェッチ処理部に発行したプリフェッチ要求が完了しなかったことにより、前記第1又は第2の待ち合わせフラグを前記プリフェッチ要求に対応する前記第1又は第2のエントリにそれぞれセットするステップと、
    前記共有キャッシュメモリ制御部が、前記第1又は第2の待ち合わせフラグがセットされた前記第1又は第2のエントリのプリフェッチ要求に対する前記記憶装置からの応答に応じて、セットされた前記第1又は第2の待ち合わせフラグを解除するステップと、
    前記共有プリフェッチ記憶部が有する第3のエントリが空いた場合に、前記第1又は第2のプリフェッチ記憶部において、前記共有キャッシュメモリ制御部が、前記第1又は第2のエントリのうち前記第1又は第2の待ち合わせフラグが最も早くセットされたエントリに保持されたプリフェッチ要求を前記共有プリフェッチ記憶部が有する前記第3のエントリに保持させるステップ
    を有することを特徴とする演算処理装置の制御方法。
JP2009554147A 2008-02-18 2008-02-18 演算処理装置および演算処理装置の制御方法 Expired - Fee Related JP4843717B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/052652 WO2009104240A1 (ja) 2008-02-18 2008-02-18 演算処理装置および演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JPWO2009104240A1 JPWO2009104240A1 (ja) 2011-06-16
JP4843717B2 true JP4843717B2 (ja) 2011-12-21

Family

ID=40985135

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009554147A Expired - Fee Related JP4843717B2 (ja) 2008-02-18 2008-02-18 演算処理装置および演算処理装置の制御方法

Country Status (3)

Country Link
US (1) US8190825B2 (ja)
JP (1) JP4843717B2 (ja)
WO (1) WO2009104240A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009252165A (ja) * 2008-04-10 2009-10-29 Toshiba Corp マルチプロセッサシステム
JP5609092B2 (ja) * 2009-12-09 2014-10-22 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN102687128B (zh) * 2009-12-25 2014-12-10 富士通株式会社 运算处理装置
JP5630568B2 (ja) * 2011-03-22 2014-11-26 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
JP6260303B2 (ja) * 2014-01-29 2018-01-17 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2015191604A (ja) * 2014-03-28 2015-11-02 富士通株式会社 制御装置、制御プログラム、および制御方法
US9811466B2 (en) 2015-08-28 2017-11-07 International Business Machines Corporation Expedited servicing of store operations in a data processing system
US9910782B2 (en) 2015-08-28 2018-03-06 International Business Machines Corporation Expedited servicing of store operations in a data processing system
JP6711167B2 (ja) 2016-06-22 2020-06-17 富士通株式会社 演算処理装置および演算処理装置の制御方法
US11586552B2 (en) 2021-05-13 2023-02-21 Apple Inc. Memory cache with partial cache line valid states
US11915045B2 (en) 2021-06-18 2024-02-27 International Business Machines Corporation Adjusting store gather window duration in a data processing system supporting simultaneous multithreading

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006040090A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd キャッシュメモリ制御装置、キャッシュメモリ制御方法、中央処理装置、情報処理装置、中央処理方法。
JP2006040141A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd マルチスレッドプロセッサ
JP2006048182A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 記憶制御装置、ムーブインバッファ制御方法およびプログラム
JP2006048181A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 記憶制御装置、ムーブインバッファ制御方法およびプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6470427B1 (en) * 1999-11-09 2002-10-22 International Business Machines Corporation Programmable agent and method for managing prefetch queues

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006040090A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd キャッシュメモリ制御装置、キャッシュメモリ制御方法、中央処理装置、情報処理装置、中央処理方法。
JP2006040141A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd マルチスレッドプロセッサ
JP2006048182A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 記憶制御装置、ムーブインバッファ制御方法およびプログラム
JP2006048181A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 記憶制御装置、ムーブインバッファ制御方法およびプログラム

Also Published As

Publication number Publication date
JPWO2009104240A1 (ja) 2011-06-16
WO2009104240A1 (ja) 2009-08-27
US20100312968A1 (en) 2010-12-09
US8190825B2 (en) 2012-05-29

Similar Documents

Publication Publication Date Title
JP4843717B2 (ja) 演算処理装置および演算処理装置の制御方法
US6636949B2 (en) System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing
US7493452B2 (en) Method to efficiently prefetch and batch compiler-assisted software cache accesses
US8838906B2 (en) Evict on write, a management strategy for a prefetch unit and/or first level cache in a multiprocessor system with speculative execution
US20090106499A1 (en) Processor with prefetch function
US9563568B2 (en) Hierarchical cache structure and handling thereof
US20060179174A1 (en) Method and system for preventing cache lines from being flushed until data stored therein is used
US7363435B1 (en) System and method for coherence prediction
US20090265293A1 (en) Access speculation predictor implemented via idle command processing resources
US10713172B2 (en) Processor cache with independent pipeline to expedite prefetch request
US20090106498A1 (en) Coherent dram prefetcher
US6105108A (en) Method and apparatus for releasing victim data buffers of computer systems by comparing a probe counter with a service counter
US11868263B2 (en) Using physical address proxies to handle synonyms when writing store data to a virtually-indexed cache
US7039768B2 (en) Cache predictor for simultaneous multi-threaded processor system supporting multiple transactions
JP2618178B2 (ja) スカラ/ベクトル複合処理システム、スカラ/ベクトル複合処理システム用の相互問い合わせ装置及びデータ・コヒーレンスを維持するための方法
US7360021B2 (en) System and method for completing updates to entire cache lines with address-only bus operations
JPH10326226A (ja) キャッシュ動作要求間の競合に応答して置換用の代替キャッシュ・エントリを選択する方法及びシステム
JP3550092B2 (ja) キャッシュ装置及び制御方法
US11188480B1 (en) System and method for cache directory TCAM error detection and correction
US7089364B2 (en) System and method to stall dispatch of gathered store operations in a store queue using a timer
KR20190087500A (ko) 메모리 어드레스 변환
US20090198910A1 (en) Data processing system, processor and method that support a touch of a partial cache line of data
US7739478B2 (en) Multiple address sequence cache pre-fetching
US7328310B2 (en) Method and system for cache utilization by limiting number of pending cache line requests
US11397686B1 (en) Store-to-load forwarding using physical address proxies to identify candidate set of store queue entries

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110509

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111007

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141014

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees