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

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

Info

Publication number
JP6770230B2
JP6770230B2 JP2016193545A JP2016193545A JP6770230B2 JP 6770230 B2 JP6770230 B2 JP 6770230B2 JP 2016193545 A JP2016193545 A JP 2016193545A JP 2016193545 A JP2016193545 A JP 2016193545A JP 6770230 B2 JP6770230 B2 JP 6770230B2
Authority
JP
Japan
Prior art keywords
move
buffer
request
cache
memory access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016193545A
Other languages
English (en)
Other versions
JP2018055568A (ja
Inventor
勇貴 上窪
勇貴 上窪
紀子 高木
紀子 高木
孝仁 平野
孝仁 平野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016193545A priority Critical patent/JP6770230B2/ja
Priority to US15/683,838 priority patent/US10552331B2/en
Publication of JP2018055568A publication Critical patent/JP2018055568A/ja
Application granted granted Critical
Publication of JP6770230B2 publication Critical patent/JP6770230B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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
    • 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
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • 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/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6032Way prediction in set-associative cache

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

本発明は,演算処理装置、情報処理装置及び演算処理装置の制御方法に関する。
演算処理装置(プロセッサ、CPU(Central Processing Unit))は、外部に設けられた主記憶装置(メインメモリ)へのアクセスに要する長いレイテンシを回避するために、内部にキャッシュメモリを有する。キャッシュメモリには、プロセッサがメモリアクセス命令を実行したときにメインメモリから読み出したデータが記憶される。そして、プロセッサが同じアドレスについて再度メモリアクセス命令を実行するとき、キャッシュメモリからデータを読み出すことで、メインメモリへのアクセス動作を回避する。
プロセッサの命令発行部がメモリアクセス命令を発行すると、メモリアクセス要求がキャッシュに投入される。そして、キャッシュがアクセスアドレスのデータがキャッシュメモリに保持されているか否かのキャッシュ判定を実行する。この判定がキャッシュヒットの場合、キャッシュはキャッシュメモリ内のデータを命令発行部にデータ応答(データ付の応答)する。一方、キャッシュミスの場合、キャッシュは、メインメモリにより近い下位レベルのキャッシュに、またはメモリ制御回路にムーブイン要求を発行する。
ムーブイン要求とは、あるレベルのキャッシュが、メインメモリにより近い下位レベルのキャッシュにまたはメモリ制御回路に、アクセスアドレスのデータを応答することを求める要求であり、一種のメモリアクセス要求である。ムーブイン要求はキャッシュミスが発生したキャッシュが発行する。
ムーブイン要求については、以下の特許文献に記載されている。
ムーブイン要求の発行からデータ応答まで長時間を要する場合があるため、例えばL1キャッシュとL2キャッシュとの間に(またはL2キャッシュとL3キャッシュとの間に)、ムーブイン要求中の情報を登録できるムーブインバッファを有する。そして、L1キャッシュがムーブイン要求を発行するとき、ムーブインバッファを獲得し、そこに、ムーブイン要求の情報である、キャッシュミスしたキャッシュメモリのインデックス情報(インデックスアドレス)と、データ応答後に応答データをキャッシュ登録するキャッシュのWAY情報とを登録する。
そして、L2キャッシュがL1キャッシュに登録中の古いデータの追い出し要求を発行し、L1キャッシュからL2キャッシュにデータを追い出した後に、L2キャシュからのデータ応答を受信し、L1キャッシュは対応するムーブインバッファのデータ領域に新しいデータを格納する。そして、L1キャッシュは、ムーブインバッファに登録していたインデックス情報とWAY情報に基づいて、その新しいデータをL1キャッシュメモリに登録するとともに、命令発行部(またはメインメモリからより遠い上位レベルのキャッシュ)にデータ応答する。データ応答されると、ムーブイン要求の情報を登録していたムーブインバッファは開放される。ムーブインバッファに複数のムーブイン要求情報を登録することで、先行するムーブイン要求に対するデータ応答を受信する前に、次のムーブイン要求を発行する。
特開平08−328960号公報 特開平09−218823号公報
ここで、キャッシュは、同一のインデックス且つ同一のWAYの複数のムーブイン要求を同時期に発行することを抑止することが必要である。その理由は、例えば、後続のムーブイン要求に対するリプレースWAY内のデータの追い出し要求が、先行のムーブイン要求に対するデータ応答を追い越す可能性があるからである。追い越しが発生すると、同一のキャッシュブロック(同一のインデックス且つ同一のWAYのブロック)に対して、後続のムーブイン要求のデータ追い出し後に、先行ムーブイン要求の応答データのキャッシュ登録が行われる。このような動作は、L1キャッシュとL2キャッシュ間でキャッシュコヒーレンシを維持できず、キャッシュでのプロトコルエラーとなる。
一方で、キャッシュは、キャッシュミス発生時に、キャッシュミスしたメモリアクセス要求のキャッシュメモリのインデックスが、ムーブインバッファに登録されている実行中のムーブイン要求と同一のインデックスか否かを判定する。この判定が異なるインデックスの場合、メモリアクセス要求はムーブインバッファを獲得しムーブイン要求が発行される。逆に、判定が同一のインデックスの場合、ムーブインバッファの獲得は抑止され、ムーブイン要求の発行は抑止され、メモリアクセス要求はアボートされて入力ポートに差し戻される。
上記のムーブインバッファの獲得とムーブイン要求の発行の抑制制御によれば、キャッシュミスしたメモリアクセス要求が、ムーブインバッファに登録中のムーブイン要求のインデックスと同一の場合、そのムーブイン要求と異なるWAYであっても、ムーブインバッファの獲得とムーブイン要求の発行が抑制される。このため、先行する同一インデックスのムーブイン要求に対するデータ応答を受信するまで、後続の同一インデックスのムーブイン要求の発行が抑止され、同一のインデックス且つ異なるWAYへの複数のムーブイン要求を並行に発行することができない。その結果、ムーブイン要求の発行先の下位のキャッシュやメモリ制御回路のレイテンシを隠ぺいすることができず、プロセッサの性能低下を招く。
そこで,本開示の第1の側面の目的は,キャッシュのムーブイン要求の発行性能を向上した演算処理装置、情報処理装置及び演算処理装置の制御方法を提供することにある。
第1の側面は,メモリアクセス要求を発行するメモリアクセス要求発行部と、タグメモリとデータメモリを有するキャッシュメモリと、メモリアクセス要求がキャッシュミスした場合にメモリアクセス要求のデータを要求するムーブイン要求を発行するムーブインバッファ制御部とを有するキャッシュとを有し、ムーブインバッファ制御部は、メモリアクセス要求がキャッシュ判定でキャッシュミスしたとき、(a)メモリアクセス要求がムーブインバッファに登録中のいずれかのムーブイン要求のインデックスと同じインデックスである同一インデックスを有し、且つムーブインバッファに登録中である同一インデックスのムーブイン要求の数がキャッシュメモリのウエイ数未満の場合は、ムーブインバッファの獲得を決定しムーブイン要求を発行し、(b)メモリアクセス要求がムーブインバッファに登録中のいずれかのムーブイン要求のインデックスと同じインデックスである同一インデックスを有し、且つムーブインバッファに登録中である同一インデックスのムーブイン要求の数がウエイ数に達している場合は、ムーブインバッファの獲得抑止を決定しムーブイン要求の発行を抑止する、演算処理装置である。
第1の側面によれば,キャッシュのムーブイン要求の発行性能を向上することができる。
本実施の形態の演算処理装置(プロセッサ)の構成を示す図である。 L1キャッシュとL2キャッシュの構成を示す図である。 キャッシュメモリの構成例を示す図である。 図2のL1キャッシュのムーブインバッファ制御部MIB_CNの動作を示す図である。 ムーブインバッファ制御部の制御を示すタイミングチャート図である。 本実施の形態におけるL1キャッシュとL2キャッシュの構成を示す図である。 ムーブインバッファMIBの例を示す図である。 図6のL1キャッシュの動作を示すフローチャート図である。 図6のL1キャッシュの動作を示すシーケンス図である。 ムーブインバッファ制御部内のインデックスマッチ判定回路と、リプレースWAY選択回路内の同一インデックスのムーブイン要求のリプレースWAY検出回路とを示す図である。 リプレースWAY選択回路の真理値表を示す図である。 本実施の形態におけるL1キャッシュのムーブインバッファ制御部の制御を示すタイミングチャート図である。 図12のサイクル毎の各命令のステージと動作を示す図である。 第1のマッチカウンタ例の1個のマッチカウンタが異なるインデックスアドレスで共用される場合の、動作例を示す図表である。 第2のマッチカウンタ例の1個のマッチカウンタが特定のインデックスアドレスに専用となる場合の動作例を示す図表である。 第3のマッチカウンタ例の2個のマッチカウンタが最初に発生した2種類の同一インデックスアドレスそれぞれに専用となる場合の動作例を示す図表である。
図1は、本実施の形態の演算処理装置(プロセッサ)の構成を示す図である。プロセッサ1は、例えばCPUチップであり、DRAMなどの主記憶装置(メインメモリ)40にアクセス可能である。プロセッサ1とメインメモリ40によりコンピュータなどの情報処理装置が構成される。
プロセッサ1は、例えば複数のCPUコアCR_0, CR_1を有する。各CPUコアは、例えば演算器2、命令発行部3、第1レベルのキャッシュ(L1 CACHE)10、第2レベルのキャッシュ(L2 CACHE)20を有する。さらに、プロセッサ1は、複数のCPUコア内のL2キャッシュ20で共用される第3レベルのキャッシュ(L3 CACHE)30と、メインメモリへのアクセスを制御するメモリアクセスコントローラMACと、CPUチップの外部に設けられたハードディスク等との入出力を行う入出力回路IOとを有する。
本実施の形態におけるムーブインバッファを有するキャッシュは、例えばL1キャッシュ10、L2キャッシュ20、L3キャッシュ30のいずれにも適用できる。但し、以下の実施の形態の説明ではL1キャッシュ10に適用した例で説明する。
いずれかのCPUコアにて、命令発行部3がロード命令やストア命令などのメモリアクセス命令を発行すると、L1キャッシュ10にメモリアクセス要求が投入される。以下の説明ではメモリアクセス命令がロード命令の例で説明する。L1キャッシュ10は、メモリアクセス要求のアクセスアドレスに基づいてタグメモリを検索しキャッシュ判定しキャッシュヒットするとL1キャッシュ内のデータを命令発行部3に応答する。一方、キャッシュミスすると、L1キャッシュ10は、L2キャッシュ20にムーブイン要求を発行する。ムーブイン要求は、メモリアクセス要求のデータをL1キャッシュメモリに登録することを求める要求である。そして、L1キャッシュ10は、L2キャッシュからデータ応答を受信すると、そのデータを命令発行部3に応答する。
L2キャッシュ20が、L1キャッシュ10が発行したムーブイン要求(一種のメモリアクセス要求)についてキャッシュミスすると、上記と同様にL3キャッシュ30にムーブイン要求を発行する。同様に、L3キャッシュが、L2キャッシュからのムーブイン要求についてキャッシュミスすると、メモリアクセスコントローラMACにムーブイン要求と同等のアクセス要求を発行する。つまり、あるレベルのキャッシュが、受信したメモリアクセス要求についてキャッシュミスすると、よりメインメモリに近いレベルのキャッシュまたはメモリコントローラにムーブイン要求を発行する。
各キャッシュは、メインメモリ側のキャッシュまたはメモリアクセスコントローラとの間に、ムーブイン要求の情報を登録するムーブインバッファ(図示せず)を有する。キャッシュに複数のムーブインバッファを設けることで、キャッシュは複数のムーブイン要求の情報を登録することができ、短時間の間に複数のムーブイン要求を発行することができる。
図2は、L1キャッシュとL2キャッシュの構成を示す図である。L2キャッシュとL3キャッシュの構成も同様である。また、L3キャッシュとメモリアクセスコントローラMACの構成も、メモリアクセスコントローラMACにはキャッシュメモリがないことを除いて、同様である。
L1キャッシュ10は、命令発行部3からのメモリアクセス要求M_RQや滞留したメモリアクセス要求RQ_STYなどを格納する複数のリクエストポート11と、複数のリクエストポート内の要求を、所定の優先度に基づいて選択する要求選択回路RQ_SELとを有する。要求選択回路RQ_SELは選択したメモリアクセス要求をL1キャッシュ10内のキャッシュパイプラインに投入する。
キャッシュパイプラインは、TLB(Translation Lookaside Buffer)、キャッシュメモリを構成するデータメモリDATA_RAM及びタグメモリTAG_RAMと、ムーブインバッファ制御部MIB_CNと、リプレースWAY選択回路RPL_SELなどで構成される。TLBはメモリアクセス要求M_RQの論理アドレスを物理アドレスに変換する。タグメモリTAG_RAMはキャッシュ登録されているデータの有効性とアドレス情報が登録され、メモリアクセス要求のキャッシュヒット判定で参照される。そして、タグメモリは、キャッシュヒットの場合にそのWAY情報HIT_WAYをLRUに出力し、キャッシュミスの場合にキャッシュミスMISSをムーブインバッファ制御部MIB_CNに出力する。
ムーブインバッファ制御部MIB_CNは、タグメモリでキャッシュミスしたメモリアクセス要求に対してムーブインバッファMIBを獲得し、ムーブイン要求MI_RQをL2キャッシュ20に発行する。リプレースWAY選択回路RPL_SELは、LRUからのLRU情報LRU_INFに基づいて、ムーブイン要求に対する応答データをキャッシュメモリのどのウエイに登録するかを示すリプレースウエイRPL_WAYを選択する。
上記以外に、L1キャッシュ10は、LRU回路LRUと、ムーブインバッファMIBを有する。LRU回路は、キャッシュヒットしたWAY情報HIT_WAYとムーブインバッファMIB内のムーブイン要求のWAY情報MI_WAYに基づいて、キャッシュメモリ(DATA_RAM, TAG_RAM)の各WAYへのアクセスの古さを判定し、LRU情報LRU_INFを出力する。ムーブインバッファMIBは、ムーブイン要求が発行される場合に獲得され、実行中のムーブイン要求の情報(有効ビット、インデックスアドレスIDX_ADD、リプレースWAY、データ)を記録され、ムーブイン要求に対するデータ応答を受信してデータをキャッシュ登録すると開放される。
図3は、キャッシュメモリの構成例を示す図である。図3のキャッシュメモリは4WAYセットアソシエティブの例である。キャッシュメモリを構成するタグメモリTAG_RAMとデータメモリDATA_RAMは、インデックス0〜nのキャッシュラインを有する。そして、メモリアクセス要求のアクセスアドレスA_ADDの下位の一部のアドレスADD_2がインデックスアドレスとして、図示しないデコーダに入力され、インデックスアドレスに対応する一つのインデックスが選択される。また、アクセスアドレスA_ADDの上位アドレスADD_1(論理アドレスをTLBにより変換した物理アドレスの上位アドレス)は、タグメモリTAG_RAMに記憶される。つまり、タグメモリTAG_RAMには、有効ビットValidと上位アドレスADD_1が記憶される。
そして、4つの比較器CMPが、インデックスアドレスADD_2で選択されたタグメモリのインデックスの4つのウエイWAY内のアドレスADD_1それぞれと、アクセスアドレスA_ADDの上位アドレスADD_1(論理アドレスをTLBにより変換した物理アドレスの上位アドレス)とを、それぞれの比較し、一致ならヒットWAY情報W0-W3を「1」(キャッシュヒットを示す)にする。キャッシュヒットの場合、一つの比較器がヒットWAY情報W0-W3を「1」にし、キャッシュミスの場合、4つの比較器CMP全てがヒットWAY情報W0-W3を「0」にする。
また、ウエイセレクタWAY_SELが、データメモリDATA_RAMからインデックスアドレスADD_2により選択された4つのWAYのデータDATAのうち、ヒットWAY情報W0-W3に基づいて、一致したウエイのデータを選択する。
このように、セットアソシエティブのキャッシュメモリは、インデックスアドレスADD_2で選択されるインデックス毎にキャッシュブロックにまとめ、そのブロック内のデータをまとめて記憶する。また、キャッシュメモリは、同じインデックスアドレスADD_2に対して、最大でWAY数分(図3ではWAY数=4)のメモリブロックのデータDATAを登録する。なお、アクセスアドレスA_ADDの下位アドレスADD_3は、図示しないが、選択されたキャッシュブロックからアクセス先データを選択するために使用される。
上記の通り、キャッシュメモリのインデックスはインデックスアドレスADD_2により選択され、インデックスアドレスが同一なら選択されるインデックスも同一である。以下の説明では、メモリアクセス要求のインデックスアドレスADD_2を便宜的にインデックスと称し、ムーブインバッファに記憶されている要求中のムーブイン要求のインデックスアドレスIDX_ADDを便宜的にインデックスと称する場合がある。
図4は、図2のL1キャッシュのムーブインバッファ制御部MIB_CNの動作を示す図である。まず、命令発行部が発行したメモリアクセス要求が要求選択回路RQ_SELによりキャッシュパイプラインに投入されると、TLBでメモリアクセス要求の論理アドレスが物理アドレスに変換され、図3で説明したようにタグメモリTAG_RAMでキャッシュヒット判定が行われる。そこで、キャッシュミスが発生すると、ムーブインバッファ制御部MIB_CNはL1キャッシュミスMISSを受信する(S1)。このL1キャッシュミスMISSは、キャッシュミスしたメモリアクセス要求であり、アクセスアドレスを有する。
ムーブインバッファ制御部は、ムーブインバッファMIBに空きエントリがあるか否かを判定する(S2)。この判定は、ムーブインバッファMIBの全てのエントリの有効ビットをチェックすることで行われる。例えば、全ての有効ビットを入力とするANDゲートの出力が「1」であれば空きはなく、「0」であれば空きがあることを判定できる。空きがない場合は、ムーブインバッファを獲得できないので、キャッシュミスしたメモリアクセス要求に対してムーブイン要求を発行できない。そのため、ムーブインバッファ制御部は、キャッシュミスしたメモリアクセス要求をリクエストポート11に差し戻し(図2中、要求滞留RQ_STY)(S3)、そのメモリアクセス要求は次の機会までキャッシュパイプラインへの投入が抑止される。
さらに、ムーブインバッファ制御部は、ムーブインバッファ内にメモリアクセス要求のインデックスアドレスADD_2に対するインデックスと同一のインデックスに対するインデックスアドレスIDX_ADDが登録済みか否かを判定する(S4)。この判定は、例えば、ムーブインバッファMIB内の全てのインデックスアドレスIDX_ADDそれぞれと、メモリアクセス要求のインデックスアドレスADD_2との一致(マッチ)をそれぞれ検出するインデックスマッチ回路により判定できる。図2のL1キャッシュは、ムーブインバッファ制御部は、ムーブインバッファMIB内に同一インデックス(即ち同一インデックスアドレス)のムーブイン要求が登録されていると、ムーブインバッファの獲得をせず、メモリアクセス要求をリクエストポート11に差し戻す(S3)。
一方、ムーブインバッファに空きがあり(S2のYES)、且つムーブインバッファに同一インデックスのムーブイン要求が登録済みでない場合(S4のNO)、ムーブインバッファ制御部は、ムーブインバッファ獲得指示MIB_AQを出す(S5)。これにより、ムーブインバッファの空きエントリの有効ビットを有効状態「1」に設定してムーブインバッファを獲得する(S6)。この獲得の際に、メモリアクセス要求のインデックスアドレスADD_2をムーブインバッファのインデックスアドレスIDX_ADDの領域に登録する。
その後、図4には示されていないが、リプレースWAY選択回路RPL_SELが、キャッシュメモリ内のメモリアクセス要求のインデックスIDXにおける4つのWAYのうち最古にアクセスされたWAYを示すLRU情報LRU_INFに基づいて、ムーブイン要求に対する応答データをキャッシュ登録する先のリプレースWAYを選択する。通常、アクセスが最も古いWAYが選択される。リプレースWAY内のデータが、ムーブイン要求の応答データと置き換えられるからである。
図2,4のムーブインバッファ制御部は、キャッシュミスしたメモリアクセス要求と同一のインデックスがムーブインバッファ内に登録中でない場合にムーブインバッファを獲得しムーブイン要求を発行する。従って、リプレースWAY選択回路は、キャッシュメモリのそのインデックスのいずれかのWAYをリプレースWAYに選択することができる。したがって、前述の通りLRU情報に基づいてリプレースWAYが選択される。
やがて、L1キャッシュ10は、L2キャッシュ20からデータ応答を受信する(S8のYES)。この応答されたデータはムーブインバッファMIBの対応するエントリのデータ領域にストアされ、ムーブインバッファに登録されているインデックスアドレスとリプレースWAYに基づいてキャッシュメモリのリプレース対象のブロックに応答データが登録される(S9)。キャッシュメモリへの登録後、ムーブインバッファ制御部は、ムーブインバッファのエントリの有効ビットをインバリッドにしてそのエントリを開放する(S10)。
尚、図4には示していないが、キャッシュメモリのリプレースWAYに有効なデータが登録されている場合、L2キャッシュは、データ応答する前に、そのインデックスのリプレースWAYのデータをL2キャッシュメモリに追い出すオーダを発行する。追い出しが完了した後、L2キャッシュからの応答データがリプレースWAYにキャッシュ登録される。
ここで、キャッシュは、キャッシュメモリでの同一のインデックス且つ同一のWAYのキャッシュブロックをリプレースブロックとする複数のムーブイン要求を、同時期に発行することを、抑止することが必要である。その理由は、例えば、後続のムーブイン要求に対するリプレースWAY内のデータの追い出し要求が、先行のムーブイン要求に対するデータ応答を追い越す可能性があるからである。追い越しが発生すると、同一のキャッシュブロック(同一のインデックス且つ同一のWAYのブロック)に対して、後続のムーブイン要求のデータ追い出し後に、先行ムーブイン要求の応答データのキャッシュ登録が行われる。このような動作は、L1キャッシュとL2キャッシュ間でキャッシュコヒーレンシを維持できず、キャッシュでのプロトコルエラーとなる。また、後続のムーブイン要求の応答データがキャッシュ登録された後に、先行のムーブイン要求の応答データがキャッシュ登録されることも回避すべきである。
ところが、図2、図4のL1キャッシュは、キャッシュミス発生時に、キャッシュミスしたメモリアクセス要求のキャッシュメモリのインデックスが、ムーブインバッファに登録されている処理中のムーブイン要求と同一のインデックスか否かを判定する。この判定が異なるインデックスの場合(具体的には異なるインデックスアドレスの場合)、メモリアクセス要求はムーブインバッファを獲得しムーブイン要求が発行される。逆に、判定が同一のインデックスの場合、ムーブインバッファの獲得は抑止され、ムーブイン要求の発行は抑止され、メモリアクセス要求はアボートされてリクエストポート11に差し戻される。
上記のムーブインバッファ制御部によれば、キャッシュミスしたメモリアクセス要求が、ムーブインバッファに登録中のムーブイン要求のインデックスと同一の場合、登録中のムーブイン要求と異なるWAYであっても、ムーブインバッファの獲得とムーブイン要求の発行が抑制される。このため、先行する同一インデックスのムーブイン要求に対するデータ応答を受信するまで、後続の同一インデックスのムーブイン要求の発行が抑止され、同一のインデックス且つ異なるWAYへの複数のムーブイン要求を並行に発行することができない。その結果、ムーブイン要求の発行先のキャッシュやメモリ制御回路のレイテンシを隠ぺいすることができず、プロセッサの性能低下を招く。
図5は、ムーブインバッファ制御部の制御を示すタイミングチャート図である。前提として命令1〜9は全て同一インデックス(同一インデックスアドレス)に対するメモリアクセス要求である。そして、各命令はL1キャッシュのパイプラインのP,T,M,S,B,R,R1ステージを経てキャッシュミスの発生(M)とムーブイン要求の発行(R)を伴う。
前述のとおり、命令1でキャッシュミスして0番目のムーブインバッファを獲得した後、後続の命令2〜7は登録中のムーブイン要求と同じインデックス(同じインデックスアドレス)に対する要求であるため、後続の命令2〜7に対するムーブインバッファの獲得が抑止され、ムーブイン要求が発行されない。0番目以外の1〜3番目のムーブインバッファが空いていて、且つ命令1のリプレースWAY以外のWAYがムーブインバッファに登録されてなくても、ムーブインバッファを獲得できずムーブイン要求も発行されない。結局、命令1のムーブイン要求が完了して0番目のムーブインバッファが開放された後に、命令8のインデックスがムーブインバッファ内の実行中のムーブイン要求と同一インデックス(同一インデックスアドレス)ではなくなり、ムーブインバッファを獲得しムーブイン要求を発行される。
上記の問題点は、プロセッサの動作周波数の上昇に伴いキャッシュパイプラインのステージ間の動作時間が短くなることにも起因する。例えば、同一インデックス且つ異なるWAYへのムーブイン要求を並列に発行するためには、後続のメモリアクセス要求に対して、全てのムーブインバッファから同一インデックスアドレスを有するエントリのWAY情報を抽出し、ムーブイン要求中でないWAYを判定した後に、ムーブインバッファを獲得することを、キャッシュパイプラインの1つのステージ(1クロックサイクル)で完了することが必要になる。しかし、動作周波数の上昇によりそのような複雑な処理を1ステージで完了することは困難である。
[本実施の形態]
[キャッシュの構成]
図6は、本実施の形態におけるL1キャッシュとL2キャッシュの構成を示す図である。L2キャッシュとL3キャッシュに適用した場合の構成も同様である。また、L3キャッシュとメモリアクセスコントローラMACに適用した場合の構成も、メモリアクセスコントローラMACにはキャッシュメモリがないことを除いて、同様である。
図6のL1キャッシュ10で図2のL1キャッシュと異なる構成は、第1に、ムーブインバッファに登録中である同一インデックス(同一インデックスアドレス)のムーブイン要求の数をカウントするマッチカウンタMCH_CNTを設けていることである。そして、ムーブインバッファ制御部MIB_CNが、キャッシュミスしたメモリアクセス要求がムーブインバッファに登録中のいずれかのムーブイン要求のインデックスと同じインデックス(以下同一インデックスと称する。)を有し、且つマッチカウンタの値がムーブインバッファに登録中の同一インデックスのムーブイン要求の数がキャッシュメモリのWAY数未満であることを示す場合は、ムーブインバッファの獲得を決定する。一方、メモリアクセス要求が登録中のいずれかのムーブイン要求と同一インデックスを有し、且つマッチカウンタの値がWAY数に達していることを示す場合は、ムーブインバッファの獲得抑止を決定する。
第2に、リプレースWAY選択回路RPL_SELは、ムーブインバッファに登録中である同一インデックスのムーブイン要求のWAY以外のWAYから、同一インデックスのメモリアクセス要求に対して発行するムーブイン要求のリプレースWAYを選択する。そのために、リプレースWAY選択回路には、ムーブインバッファに登録されているムーブイン要求のWAY情報MI_WAYが供給される。
また、リプレースWAY選択回路には、ムーブインバッファ制御部に設けられたインデックスマッチ判定回路の一致結果も供給される。この一致結果と、ムーブイン要求のWAY情報MI_WAYとから、ムーブインバッファに登録中である同一インデックスのムーブイン要求のWAYの情報を得る。
好ましくは、リプレースWAY選択回路は、タグメモリTAG_RAMの同一インデックスの各WAYの有効ビットも供給される。そして、タグメモリの同一インデックスの4つのWAYで有効ビットが無効のWAYが、ムーブインバッファに登録されているムーブイン要求のWAY以外のWAYに該当する場合、LRU情報に基づくことなく、それらのWAYから所定のWAYをリプレースWAYに選択する。後述するケース1の場合である。
さらに好ましくは、リプレースWAY選択回路は、LRU情報LRU_INFも供給され、ムーブインバッファに登録中である同一インデックスのムーブイン要求のWAY以外のWAYから、LRU情報に基づいてリプレースWAYを選択する。後述するケース2の場合である。
上記のマッチカウンタは、例えばムーブインバッファに登録中のムーブイン要求と同一のインデックスへのメモリアクセス要求のためにムーブインバッファを獲得する場合、1つインクリメントされる。また、マッチカウンタは、同一インデックスのムーブイン要求に対する応答データをキャッシュ登録した後にムーブインバッファを解放する場合、1つデクリメントされる。つまり、マッチカウンタは、ムーブインバッファに登録中の同一インデックスのムーブイン要求の数をカウントする。
本実施の形態におけるムーブインバッファ制御部は、キャッシュミスしたメモリアクセス要求のインデックスアドレスが、ムーブインバッファ登録中のインデックスアドレスと一致するか否かの判定を行う。一方、新たなムーブイン要求のリプレースWAYが、ムーブインバッファ登録中の同一インデックスのムーブイン要求のリプレースWAYと一致するかの判定は行わない。代わりに、ムーブインバッファ制御部は、マッチカウンタのカウント値がキャッシュメモリのWAY数に達しているか否か、つまり未満か否かの判定を行い、未満であれば同一インデックスのムーブイン要求を発行可能と判断し、ムーブインバッファを獲得する。達していればムーブインバッファの獲得を抑止する。
ムーブインバッファ制御部が、マッチカウンタの管理を上記のように行うことで、マッチカウンタのカウンタ値がWAY数未満を示すか否かに基づいて、少なくとも同一インデックスへのムーブイン要求を発行可能か否かを判定できる。しかも、マッチカウンタのカウンタ値による判定は短時間で完了する。但し、リプレースWAY選択回路が、どのWAYにムーブイン要求を発行できるかの判定を後で行う。つまり、リプレースWAY選択回路が、登録中である同一インデックスのムーブイン要求のWAY以外のWAYから新たなムーブイン要求のWAYを選択する。
したがって、本実施の形態では、高周波クロックによるキャッシュパイプライン構成でも、ムーブインバッファ制御部が、短い時間で同一インデックスのムーブイン要求を異なるリプレースWAYに対して発行することができる。
図6のL1キャッシュ10では、図2と異なり、マッチカウンタのデクリメント処理のために、ムーブインバッファMIBにインデックスマッチフラグIDX_MCH_FLGを登録する。つまり、ムーブインバッファ制御部は、同一インデックスのムーブイン要求を発行するためにムーブインバッファ獲得するときにインデックスマッチフラグを「1」に設定する。同時にマッチカウンタを1つインクリメントする。そして、データ応答のムーブインバッファのインデックスマッチフラグが「1」の場合に、マッチカウンタを1つデクリメントする。通常、ムーブイン要求にはムーブインバッファのインデックス(番号)が付与されるので、そのインデックスのムーブインバッファのインデックスマッチフラグが参照され、「1」の場合にマッチカウンタが1つデクリメントされる。
図6のL1キャッシュの上記した図2と異なる構成以外は、同等である。したがって、図6のL1キャッシュの図2と同じ構成についての説明を省略する。ただし、図6中には、キャッシュパイプラインの各ステージP,T,M,S,B,R,R1,R2の位置が示される。このステージについては、後述する図6のL1キャッシュの動作説明で詳述する。
図7は、ムーブインバッファMIBの例を示す図である。ムーブインバッファは、ムーブインバッファ番号の各エントリに、有効ビットVALID、インデックスアドレスIDX_ADD、リプレースWAY番号WAY、データDATA、同一インデックスへのムーブイン要求か否かを示すインデックスマッチフラグIDX_MCH_FLGをそれぞれ記憶する。有効ビットVALIDは、例えば、有効で「1」無効で「0」、インデックスマッチフラグIDX_MCH_FLGは、例えば、同一インデックスによるムーブイン要求なら「1」同一インデックスによるムーブイン要求でないなら「0」である。また、インデックスアドレスIDX_ADDにはメモリアクセス要求のインデックスアドレスADD_2が記憶される。リプレースWAY番号WAYにはリプレースWAY選択回路が選択したWAY番号が記憶される。ムーブイン要求を発行する段階ではデータDATA以外の情報が記憶され、データ応答されると応答データがデータDATAに記憶される。
[キャッシュの動作]
次に、図6のL1キャッシュの動作について説明する。図2の動作と一部重複する説明もあるが、図2の動作と一部重複する部分も含めて説明する。
図8は、図6のL1キャッシュの動作を示すフローチャート図である。また、図9は、図6のL1キャッシュの動作を示すシーケンス図である。いずれの図にも、キャッシュパイプラインステージP,T,M,S,B,R,R1,R2が示される。
各キャッシュパイプラインステージは以下の通りである。
Pステージ:パイプラインに命令を投入するか否かを決定する。
Tステージ:TLBでアドレス変換(論理アドレスから物理アドレスへ変換)し、TAGメモリ、DATAメモリにアクセスする。
Mステージ:キャッシュヒット判定を行う。
Sステージ:キャッシュヒットの場合、4つのWAYのデータを読み出し、アドレスが一致したWAY番号のデータを選択して出力する。キャッシュミスの場合、ムーブインバッファに空きがあるかの判定と、インデックスアドレスが一致するかの判定とを行い、両方真ならマッチカウンタがWAY数に達しているか否かの判定とを行う。
Bステージ:キャッシュヒットの場合、データを命令発行部に応答する。キャッシュミスの場合、マッチカウンタがWAY数に達していないならムーブインバッファ確保指示、達していたらムーブインバッファの獲得を抑止しメモリアクセス要求の滞留指示をする。
Rステージ:キャッシュヒットの場合、メモリアクセス要求のアクセス結果を命令発行部へ通知し、メモリアクセス要求を終了する。キャッシュミスの場合、ムーブインバッファを確保し(有効ビットを「1」にし、インデックスアドレスを登録し、インデックスアドレスが一致していた場合インデックスマッチフラグを「1」にする)、ムーブイン要求を発行する。
R1ステージ:キャッシュミスの場合、マッチカウンタをインクリメントし、リプレースWAYを確定する。
R2ステージ:キャッシュミスの場合、リプレースWAYをムーブインバッファに登録する。
R3ステージ以降:キャッシュミスの場合、ムーブインバッファからリプレースWAYの読み出しが可能になり、L2キャッシュからデータ応答を受信するのを待つ。
次に、L1キャッシュの動作を図8、図9を参照して説明する。まず、命令発行部が発行したメモリアクセス要求が要求選択回路RQ_SELによりキャッシュパイプラインに投入されると(Pステージ)、TLBでメモリアクセス要求の論理アドレスが物理アドレスに変換される(Tステージ)。そして、タグメモリTAG_RAMでキャッシュヒット判定が行われる(S1,Mステージ)。そこで、キャッシュミスが発生すると、ムーブインバッファ制御部MIB_CNはL1キャッシュミスMISSを受信する。
ムーブインバッファ制御部は、ムーブインバッファMIBに空きエントリがあるか否かを判定する(S2,Sステージ)。この判定は、図4と同様に、ムーブインバッファMIBの全てのエントリの有効ビットをチェックすることで行われる。空きがない場合は、ムーブインバッファを獲得できないので、キャッシュミスしたメモリアクセス要求に対してムーブイン要求を発行できない。そのため、ムーブインバッファ制御部は、キャッシュミスしたメモリアクセス要求をリクエストポート11に差し戻し(図6中、要求滞留RQ_STY)(S3)、そのメモリアクセス要求は次の機会までキャッシュパイプラインへの投入が抑止される。
さらに、ムーブインバッファ制御部は、ムーブインバッファ内にメモリアクセス要求のインデックスアドレスADD_2に対するインデックスと同一のインデックスに対するインデックスアドレスIDX_ADDが登録済みか否かを判定する(S4,Sステージ)。この判定は、例えば、ムーブインバッファMIB内の全てのインデックスアドレスIDX_ADDそれぞれと、メモリアクセス要求のインデックスアドレスADD_2との一致(マッチ)をそれぞれ検出するインデックスマッチ判定回路により行われる。
ムーブインバッファ制御部は、ムーブインバッファMIB内にキャッシュミスしたメモリアクセス要求と同一インデックス(即ち同一インデックスアドレス)のムーブイン要求が登録されていないと(S4のNO)、ムーブインバッファの獲得指示を出す(S5,Bステージ)。そして、ムーブイン要求の情報をムーブインバッファに書き込みムーブインバッファを獲得するとともに(S6,Rステージ)、ムーブイン要求を発行する(S7,Rステージ)。
一方、ムーブインバッファMIB内にメモリアクセス要求と同一インデックス(即ち同一インデックスアドレス)のムーブイン要求が登録されていると(S4のYES)、図6のL1キャッシュでは、さらに、ムーブインバッファ制御部が、マッチカウンタがキャッシュメモリのWAY数に達しているか(マッチカウンタがフルか)否かを判定する(S11,Sステージ)。このマッチカウンタによる判定が図2とは異なる。
マッチカウンタがWAY数に達している場合(S11のYES)、ムーブインバッファを獲得せず、メモリアクセス要求をリクエストポート11に差し戻す(S3)。一方、マッチカウンタがWAY数に達していない場合(S11のNO)、ムーブインバッファ制御部はムーブインバッファ獲得指示MIB_AQを行う(S12,Bステージ)。
即ち、ステージSで、ムーブインバッファに空きがあり(S2のYES)、ムーブインバッファにメモリアクセス要求と同一インデックスのムーブイン要求が登録済みであり(S4のYES)、マッチカウンタがWAY数に達していない場合(S11のNO)、ムーブインバッファ制御部は、ムーブインバッファ獲得指示MIB_AQを出す(S12)。これにより、ムーブインバッファの空きエントリの有効ビットを有効状態「1」に設定してムーブインバッファを獲得する(S13,Rステージ)。この獲得の際に、メモリアクセス要求のインデックスアドレスADD_2をムーブインバッファのインデックスアドレスIDX_ADDの領域に登録し、更に、インデックスマッチフラグIDX_MCH_FLGを有効化「1」にする(S13,Rステージ)。
その後、ムーブインバッファ制御部は、マッチカウンタMCH_CNTを1つインクリメントする(S15,R1ステージ)。
そして、ステージR1までに、リプレースWAY選択回路RPL_SELが、ムーブインバッファ内のWAY情報MI_WAYと、ムーブインバッファ制御部からのムーブインバッファのどの番号が同一のインデックスアドレスIDX_ADDを有しているかの情報とから、同一のインデックスのムーブイン要求がどのWAYをリプレースWAYに登録中かを判定する。そして、同一インデックスのムーブイン要求のWAY以外のWAYから、新たに発行するムーブイン要求のリプレースWAYを選択し(S16,R1ステージ)、ムーブインバッファに登録する(S16,R2ステージ)。一例として、同一インデックスのムーブイン要求のWAY以外のWAYから、TAGメモリで無効のWAYを、またはLRU情報LRU_INFで最も古いWAYを、リプレースWAYに選択する。
やがて、L1キャッシュ10は、L2キャッシュ20からデータ応答を受信する(S8のYES)。この応答されたデータはムーブインバッファMIBの対応するエントリのデータ領域DATAにストアされる。さらに、ムーブインバッファに登録されているインデックスアドレスとリプレースWAYに基づいてキャッシュメモリのリプレース対象のブロックにデータ応答のデータが登録される(S9)。キャッシュメモリへの登録後、ムーブインバッファ制御部は、ムーブインバッファのエントリの有効ビットをインバリッド(無効)にしてそのエントリを開放する(S10)。
ムーブインバッファのエントリのインデックスマッチフラグIDX_MCH_FLGが「1」なら(S17のYES)、同一のインデックスのムーブイン要求に対するデータ応答であるので、ムーブインバッファ制御部は、マッチカウンタを1つデクリメントする(S18)。
尚、図9に示すとおり、キャッシュメモリのリプレースWAYに有効なデータが登録されている場合、L2キャッシュは、データ応答する前に、そのインデックスのリプレースWAYのデータをL2キャッシュメモリに追い出すオーダEJ_ODを発行する。キャッシュメモリからデータの追い出しが完了した後、L2キャッシュからの応答データがリプレースWAYにキャッシュ登録される。最後に、L1キャッシュ10は、命令発行部3にデータ応答する。
図10は、ムーブインバッファ制御部内のインデックスマッチ判定回路と、リプレースWAY選択回路内の同一インデックスのムーブイン要求のリプレースWAY検出回路とを示す図である。ムーブインバッファ制御部MIB_CN内のインデックスマッチ判定回路IDX_MCH_JDGは、n+1個のマッチ判定回路MCH0-nと、論理OR回路OR0とを有する。マッチ判定回路MCH0-nは、キャッシュミスしたメモリアクセス要求のインデックスアドレスADD_2と、ムーブインバッファMIB内のすべてのインデックスアドレスIDX_ADDそれぞれとの一致(マッチ)をそれぞれ判定する。論理OR回路OR0は、マッチ判定回路の出力(一致で「1」不一致で「0」)の論理ORであるインデックスマッチ(一致)出力IDX_MCHを出力する論理OR回路である。ムーブインバッファ制御部MIB_CNは、このインデックスマッチ判定回路IDX_MCH_JDGのインデックスマッチ出力IDX_MCHにより、キャッシュミスしたメモリアクセス要求のインデックスアドレスADD_2がムーブインバッファMIB内に登録中のいずれかのムーブイン要求のインデックスアドレスIDX_ADDと一致するか否かの判定(S4)を行う。
リプレースWAY選択回路RPL_SEL内の同一インデックスのムーブイン要求のリプレースWAY検出回路RPL_WAY_DTは、ムーブインバッファMIBのリプレースWAYをデコードするデコーダDECと、各マッチ判定回路MCH0-nの出力と各デコーダ出力それぞれの論理積を出力するAND回路AND0-nと、AND回路の出力の論理ORを出力する論理OR回路OR1とを有する。
デコーダDECは、4個のWAY数の場合、リプレースWAY番号が「10」の場合に3番目がリプレースWAYであることを示すコード[0100]に変換する。したがって、4ビットのコードの「1」の位置がリプレースWAYの位置であることが示される。また、AND回路AND0-nは、それぞれインデックスアドレスがマッチした(一致した)場合のリプレースWAY番号をデコード化したコード「1」か、インデックスアドレスがアンマッチした(不一致した)場合の「0」のいずれかを出力する。そして、各AND回路AND0-nは、インデックスアドレスが不一致なら4ビットが全てゼロのコード[0000]を出力し、インデックスアドレスが一致しコードが[0100]の場合、[0100]を出力する。さらに、論理OR回路OR1は、n+1個のAND回路の出力の論理ORを出力する。つまり、論理OR回路OR1が出力する4ビットコードは、登録中の同一インデックスのムーブイン要求の全てリプレースWAYの位置を示す。
図11は、リプレースWAY選択回路の真理値表を示す図である。図10で説明したとおり、リプレースWAY選択回路RPL_SEL内のリプレースWAY検出回路RPL_WAY_DTは、ムーブインバッファ制御部MIB_CNからキャッシュミスしたメモリアクセス要求のインデックスアドレスADD_2と同じインデックスアドレスIDX_ADDを有するムーブインバッファの番号を供給され、ムーブインバッファ内のWAY情報に基づいて、同一インデックスのムーブイン要求が獲得中のWAY情報を抽出する。また、L1キャッシュのTAGメモリから同一インデックスで無効な(invalid)WAY情報を供給され、さらに、LRU回路からLRU情報が供給される。同一インデックスで無効なWAY情報とは、L1キャッシュメモリに有効なデータが登録されていないWAY番号である。
そして、リプレースWAY選択回路は、第1に、L1キャッシュのTAGメモリの同一インデックスに無効なWAYがある場合、図中ケース1に示される真理値表に基づいてリプレースWAY(RPL_WAY)を選択する。ケース1には、4つのWAY(W0,W1,W2,W3)について、TAGメモリの同一のインデックスで無効であり、且つムーブインバッファを獲得していないという2つの条件を満たすWAYの組み合わせ(パターン1−1〜1−4)が示され、それぞれのパターンに対するリプレースWAY(RPL_WAY)が示される。
真理値表に示されるとおり、ケース1では、リプレースWAY選択回路は、TAGメモリの同一のインデックスで無効(invalid)のWAYであり、且つムーブインバッファ内の同一のインデックスのムーブイン要求がリプレースWAYに選択していないWAYを検出する。この2つの条件が満たされるWAYが存在する場合、リプレースWAY選択回路は、ケース1の真理値表に基づき、2つの条件を満たすWAYのいずれかをリプレースWAY(RPL_WAY)に選択する。TAGメモリで無効のWAYであるので、LRU情報に基づく選択は行っていない。
なお、図中のケース1の真理値表は、若い番号のWAYを優先して選択している。例えば、パターン1−1では、2つの条件を満たすWAYがW0の場合、他のWAY(W1,W2,W3)にかかわらずリプレースWAYにW0を選択する。パターン1−2では、W0が2つの条件を満たさず、W1が満たす場合、他のWAY(W2,W3)にかかわらずリプレースWAYにW1を選択する。そして、ケース1−3,1−4も同様である。但し、大きい番号のWAYを優先して選択してもよいし、ランダムに選択しても良い。
ケース1の場合、TAGメモリの無効なWAYには有効なデータが登録されていないので、L1キャッシュに対してそのデータをL2キャッシュに追い出すための追い出しオーダを実行する必要がない。したがって、TAGメモリで無効なWAYがムーブインバッファを獲得していない場合(2つの条件を満たす場合)は、無条件にそのWAYをリプレースWAYに選択する。
ケース1で2つの条件を満たすWAYをリプレースWAYに選択する別の理由は次のとおりである。同一のインデックスについてTAGメモリでは無効なWAYでも、ムーブインバッファでは発行中のムーブイン要求のWAYとして登録されている場合がある。例えば、TAGメモリでは無効なWAYが存在するが、先行するキャッシュミスしたメモリアクセス要求が同じWAYについてムーブインバッファを獲得済みの場合である。この場合、そのWAYをリプレースWAYには選択しない。
第2に、L1キャッシュのTAGメモリの同一インデックスに無効なWAYがない場合、リプレースWAY選択回路は、図中ケース2に示される真理値表に基づいて、リプレースWAYを選択する。ケース2では、L1キャッシュのTAGメモリの同一インデックスに無効なWAYがないので全てのWAYが有効データを登録している。したがって、リプレースWAYに対して追い出しオーダを実行する必要がある。そこで、ケース2では、リプレースWAY選択回路は、ムーブインバッファ内の同一のインデックスアドレスのWAY以外のWAY(ムーブインバッファを獲得していないWAY)の中から、LRU情報に基づき最もアクセスが古いWAYをリプレースWAYに選択する。
ケース2では、4つのWAYについてムーブインバッファを獲得中のWAYの15種類の組み合わせ(パターン2−1〜2−15)それぞれについて、参照すべきLRU真理値表[1]〜[11](パターン2−1〜2−11)、またはリプレースWAY(パターン2−12〜2−15)が示される。真理値表には、ムーブインバッファを獲得中のWAYは「1」で示される。したがって、ムーブインバッファを獲得していないWAYは「0」で示される。
パターン2−1〜2−11は、ムーブインバッファを獲得していないWAYが複数個(3個または2個)あるケースである。この場合、リプレースWAY選択回路は、それぞれのLRU真理値表[1]〜[11]に示されるとおり、ムーブインバッファ未獲得WAYのうち最もアクセスが古いWAY(LRUのWAY)をリプレースWAY(RPL_WAY)に選択する。一方、パターン2−12〜2−15は、ムーブインバッファ未獲得WAYは1個しかないので、リプレースWAY選択回路は、LRU情報にかかわらず、ムーブインバッファ未獲得WAYをリプレースWAYに選択する。
上記のとおり、リプレースWAY選択回路によるリプレースWAYの選択のタイミングは、R1ステージであり、ムーブインバッファ制御部がムーブインバッファの獲得を判定するSステージよりも3ステージ後である。つまり、リプレースWAY選択回路は、Sステージから3ステージの間で、ムーブインバッファに登録中の同一インデックスへのムーブイン要求のWAY情報(MI_WAY)を抽出し、そのWAY以外のWAYから、最適なリプレースWAYを選択する。選択の条件は、ケース1のようにL1キャッシュで無効なWAYを優先して選択し、L1キャッシュに無効なWAYが存在しない場合は、ケース2のようにLRU情報で最もアクセスが古いWAYを選択する。
図12は、本実施の形態におけるL1キャッシュのムーブインバッファ制御部の制御を示すタイミングチャート図である。図5に対応する図である。また、図13は、図12のサイクル毎の各命令のステージと動作を示す図である。図12、図13の前提として、全ての命令1−9のインデックスアドレスADD_2は全て同一であり、WAY数は4、L1キャッシュのTAGメモリには同一のインデックスにおいて無効のWAYは存在しておらず、ムーブインバッファは4個である。また、ムーブインバッファ制御部に設けられたマッチカウンタMCH_CNTは1個のみであり、1個のマッチカウンタは複数のインデックスにより共用されるか、または最初に発生した同一のインデックスに専用される。全ての命令のインデックスアドレスが同一であるので、1個のマッチカウンタが異なるインデックスで共用されるように構成しても、図12の動作では1個のマッチカウンタは1つのインデックスに実質的には専用されることになる。
図12には、毎サイクルL1キャッシュに投入される命令1−5と、直前の命令より4サイクル遅れて投入される命令6−9が示される。ここで命令発行部が発行する命令はロード命令であり、それに対応してメモリアクセス要求がL1キャッシュに投入される。また、図12には、マッチカウンタのカウント値、マッチカウンタフルフラグ(マッチカウンタのカウント値が、ムーブインバッファ内の同一のインデックスのムーブイン要求の数がキャッシュのWAY数に達したことを示すか否かを示すフラグ)、マッチカウンタをデクリメントするカウントデクリメント信号、LRU情報、ムーブインバッファを獲得した命令とWAY番号が示される。
図13には、サイクル3−31での命令とそのステージと動作が示され、さらに各サイクルでのムーブインバッファに登録されたWAYの情報W0-W3(「1」で登録中)と、マッチカウンタMCの値(3でWAY数に達したことを示す)が示される。
最初に、命令1に対して、サイクル4でSステージに達し、マッチカウンタフル判定でフルでないため、ムーブインバッファ制御部により、ムーブイン要求の発行が可能であることが検知され、サイクル5のBステージでムーブインバッファの0番の獲得指示が出される。そして、サイクル7のR1ステージでリプレースWAYとしてWAY0が選択される。
次に、命令5に対して、サイクル8でSステージに達し、マッチカウンタフル判定でフルでないため、ムーブインバッファ制御部により、ムーブイン要求の発行が可能であることが検知され、サイクル9のBステージでムーブインバッファの1番の獲得指示が出される。そして、サイクル11のR1ステージでリプレースWAY(RPL_WAY)としてWAY1が選択される。この命令5が、先行してムーブインバッファを獲得した命令1と同一のインデックスでムーブインバッファを獲得したことで、サイクル11のR1ステージでマッチカウンタがインクリメントされる。その結果、マッチカウンタの値が「1」になる。
本実施の形態例では、マッチカウンタの値は、ムーブインバッファに登録中の同一のインデックスのムーブイン要求数よりも少ない値である。つまり、上記の命令1と命令5のムーブイン要求は同じインデックスのムーブイン要求であり、命令5がムーブインバッファを獲得した時点では、ムーブインバッファに登録中の同じインデックスのムーブイン要求数は「2」である。しかし、キャシュミスしたメモリアクセス要求がムーブインバッファに登録中のいずれかのムーブイン要求と同一のインデックスであることが検出されて初めて、マッチカウンタがインクリメントされる。そのため、2番目の命令5の時にマッチカウンタの値は「1」となり、ムーブインバッファに登録中の同じインデックスのムーブイン要求数「2」より1つ少なくなる。つまり、マッチカウンタの値がNであれば、ムーブインバッファに登録中の同じインデックスのムーブイン要求数はN+1である。そのため、マッチカウンタの値がWAY−1になると、同一インデックスのムーブイン要求の数が全WAY数に達したことを示す。
同様に、命令6は、サイクル13のBステージでムーブインバッファ2番の獲得指示が出され、サイクル15のR1ステージでリプレースWAY(RPL_WAY)としてWAY2が選択され、マッチカウンタがインクリメントされる。続く命令7も同様に、サイクル17のBステージでムーブインバッファ3番の獲得指示が出され、サイクル19のR1ステージでリプレースWAY(RPL_WAY)としてWAY3が選択され、マッチカウンタがインクリメントされる。ここで、マッチカウンタはWAY数=4を示す「3」に達し、マッチカウンタフル状態になる。つまり、この例では、マッチカウンタの値がWAY数−1の「3」に達すると4つのWAY全てでムーブインバッファが獲得されたことを意味する。
次の命令8は、サイクル20のSステージでマッチカウンタフルのため、ムーブインバッファの獲得が抑止され、サイクル23で命令8は滞留される。図12では、サイクル18で命令1のムーブインバッファが開放されているが、そのムーブインバッファのインデックスマッチフラグが「0」であるため、マッチカウンタがデクリメントされない。そのため、サイクル20ではマッチカウンタの値は「3」のままでありマッチカウンタフル状態のままであるため、命令8はムーブインバッファの獲得が抑止される。
一方、サイクル23で命令5のムーブインバッファが開放され、そのインデックスマッチフラグが「1」のためカウントデクリメント信号がHレベルになり、マッチカウンタがデクリメントされ、マッチカウンタフル状態は解消される。その結果、次の命令9は、サイクル27のSステージでマッチカウンタフル状態でないため、次のサイクル28のBステージでムーブインバッファを獲得する。これによりサイクル30で再びマッチカウンタフル状態になる。
本実施の形態のマッチカウンタのインクリメントとデクリメントの制御を変更して、マッチカウンタの値がムーブインバッファに登録中の同一インデックスのムーブイン要求の数と一致し、その同一インデックスのムーブイン要求に対するムーブインバッファが開放されたときにマッチカウンタがデクリメントされるようにしてもよい。このようなマッチカウンタであれば、上記の命令1のムーブインバッファが開放されたときもマッチカウンタがデクリメントされ、命令8がムーブインバッファを獲得することができる。具体例としては、マッチカウンタが単一のインデックスに専用に使用される場合、その専用マッチカウンタを「0」から最初にインクリメントするときその同一インデックスを記憶するバッファを専用マッチカウンタに設ける。そして、あるムーブイン要求に対するムーブインバッファが開放されるとき、そのムーブイン要求のインデックスが専用マッチカウンタの同一インデックと一致すれば、専用マッチカウンタをデクリメントする。
上記の動作例において、命令1がムーブインバッファを獲得してムーブイン要求が発行されたが、命令1の後で毎サイクル投入される命令2,3,4はムーブインバッファを獲得できずムーブイン要求は発行されず滞留している。その理由は、命令1のメモリアクセス要求がRステージでムーブインバッファを獲得した後、R2ステージでリプレースWAYがムーブインバッファにセットされ、R3ステージ以降からムーブインバッファ内のリプレースWAYを読み出し可能になる。したがって、先行の命令がムーブインバッファを獲得したRステージからそのリプレースWAYを読み出し可能になるR3ステージまでの3サイクルの間は、後続の同一インデックスへの命令によるムーブインバッファ獲得を抑止する。命令2,3,4がこのケースに該当する。このムーブインバッファ確保の抑止は例えば先行の命令のSステージで行われる。
図5では、ムーブインバッファに登録中のいずれかのムーブイン要求のインデックスと同一のインデックスのメモリアクセス要求には、登録中の同一インデックスへのムーブイン要求のリプレースWAY以外のWAYがムーブインバッファに未登録であっても、ムーブインバッファの獲得を抑止していた。それに対して、図12では、登録中の同一インデックスへのムーブイン要求のリプレースWAY以外のWAYがムーブインバッファに未登録であれば、ムーブインバッファの獲得を許可する。したがって、より多くのキャッシュミスしたメモリアクセス要求に対してムーブインバッファを獲得させムーブイン要求を発行することができる。
しかも、ムーブインバッファの獲得の要否を、ムーブインバッファに登録中の同一インデックスのムーブイン要求の数(マッチカウンタの値が示す数)がキャッシュメモリのWAY数に達しているかいないかで判定するので、短いクロックサイクルでもムーブインバッファ獲得の要否判定を行うことができる。マッチカウンタの値がWAY数に達したことを示すマッチカウンタフルフラグを記録しておけば、上記のムーブインバッファの獲得の要否をマッチカウンタフルフラグにより即座に判定できる。
[実施の形態におけるマッチカウンタの数と共用、専用の変形例]
次に、マッチカウンタの数と、マッチカウンタを異なるインデックスアドレスについて共用にするか専用にするかについて3つのマッチカウンタ例について説明する。前提として、図14、図15、図16に示す動作例では、ムーブインバッファは前述の4個ではなく、例えば16個である。
[第1のマッチカウンタ例]
第1のマッチカウンタ例では、L1キャッシュが、マッチカウンタを1個のみ有し、異なるインデックスアドレスが1個のマッチカウンタを共用する。つまり、ムーブインバッファに登録中のムーブイン要求と同一インデックスアドレスADD_Aのメモリアクセス要求が、ムーブインバッファを獲得すると、1個のマッチカウンタがインクリメントされる。その後、同一インデックスアドレスADD_Aのメモリアクセス要求が発生すると、ムーブインバッファ制御部は、マッチカウンタのカウント値が最大のWAY数に対応する値に達していればムーブインバッファの獲得を抑止し、達していなければムーブインバッファの獲得を許可する。また、同一インデックスアドレスADD_Bのメモリアクセス要求が発生した場合も、マッチカウンタのカウント値でムーブインバッファの獲得を判定する。つまり、登録中の第1のムーブイン要求と同一のインデックスアドレスADD_Aのメモリアクセス要求だけでなく、登録中の第2のムーブイン要求のインデックスアドレスADD_Bのメモリアクセス要求も、共用のマッチカウンタの値でムーブインバッファの獲得要否を判定し、獲得すれば共用のマッチカウンタをインクリメントする。
但し、一般に短時間で同じインデックスアドレスで繰り返しキャッシュミスが発生することはあるが、異なるインデックスアドレスそれぞれで繰り返しキャッシュミスが発生することはまれである。したがって、1個のマッチカウンタを異なるインデックスアドレスで共用するようにしても、図12で示したように、短期間での全てのメモリアクセス要求が同一のインデックスアドレスに集中する状況下では、L1キャッシュの複数のWAYをすべて複数のムーブイン要求に割り当てることができる。そして、マッチカウンタを1個にすることで、それに必要な回路資源を少なくすることができる。
図14は、第1のマッチカウンタ例の1個のマッチカウンタが異なるインデックスアドレスで共用される場合の、動作例を示す図表である。初期状態がムーブインバッファが全て空であるとする。また、命令1〜9が順番に発行され、それらに対するメモリアクセス要求が全てキャッシュミスしたとする。図14は、各命令のインデックスアドレス、マッチカウンタの値、ムーブイン要求の発行、滞留、そしてムーブインバッファを獲得したインデックスアドレスを各列に示す。
命令1は、インデックスアドレスがAであり、ムーブインバッファは空であるので、ムーブインバッファ制御部は、命令1のメモリアクセス要求に対してムーブインバッファを確保しムーブイン要求を発行する。マッチカウンタは、図12と同様に「0」のままである。
次に、命令2も、インデックスアドレスがAであり、ムーブインバッファには命令1に対するムーブイン要求のインデックスアドレスAが登録中である。そこで、ムーブインバッファ制御部は、マッチカウンタがフル状態(WAY数−1に達した状態)でないため、ムーブインバッファを獲得しムーブイン要求を発行する。さらに、マッチカウンタをインクリメントし、カウント値が「1」になる。
次に、命令3,4は、インデックスアドレスがB,Cであるので、ムーブインバッファ制御部は、それぞれに対してムーブインバッファを獲得しムーブイン要求を発行する。
そして、命令5は、インデックスアドレスがBであり、既にムーブインバッファには同一のインデックスアドレスBが登録中であるため、ムーブインバッファ制御部は、マッチカウンタの値を参照し、ムーブインバッファを獲得しムーブイン要求を発行する。そして、マッチカウンタをインクリメントし、カウント値が「2」になる。つまり、同一インデックスアドレスAとBはそれぞれ異なるが、マッチカウンタを共用している。
次に、命令6は、インデックスアドレスがAであり、既にムーブインバッファには同一のインデックスアドレスAが登録中であるため、ムーブインバッファ制御部は、マッチカウンタの値を参照し、ムーブインバッファを獲得しムーブイン要求を発行する。そして、マッチカウンタをインクリメントし、値が「3」になる。この結果、マッチカウンタは、同一インデックスアドレスAに対して2個のWAYをリプレースWAYとする命令2,6のムーブイン要求をカウントし、さらに、同一インデックスアドレスBに対して1個のWAYをリプレースWAYとする命令5のムーブイン要求をカウントしたことになる。但し、本実施の形態例では、マッチカウンタは最初の命令1(A)と命令3(B)のムーブイン要求をカウントしていない。
その後、命令7,8,9がそれぞれインデックスアドレスC,A,Aについてムーブインバッファを獲得しようとする。しかし、いずれのインデックスアドレスもムーブインバッファ内に登録中であり、マッチカウンタの値が「3」と最大WAY数に達してフルになっているので、ムーブインバッファの獲得が抑止される。
第1のマッチカウンタ例では、マッチカウンタを1個のみ設けて、キャッシュ内の回路資源を最小限に抑制する。但し、命令5のインデックスアドレスBに対してムーブインバッファを獲得させマッチカウンタをインクリメントしたため、インデックスアドレスAの4番目の命令8は、マッチカウンタのフル(最大値)によりムーブインバッファの獲得を抑止されている。但し、少なくともインデックスアドレスAの3つの命令(命令1,2,6)には、ムーブインバッファを獲得させている。
[第2のマッチカウンタ例]
第2のマッチカウンタ例では、L1キャッシュが、マッチカウンタを1個のみ有し、最初に発生した同一インデックスアドレスの専用にする。つまり、マッチカウンタを獲得できた登録中ムーブイン要求と同一インデックスアドレスのメモリアクセス要求は、マッチカウンタを利用して全WAYでムーブインバッファを獲得できる。しかし、マッチカウンタを獲得できなかった他の同一インデックスアドレスのメモリアクセス要求は、マッチカウンタを利用して全WAYでムーブインバッファを獲得できない。また、データ応答によりマッチカウンタのカウント値が0になると、マッチカウンタの専用状態が解除される。
図15は、第2のマッチカウンタ例の1個のマッチカウンタが特定のインデックスアドレスに専用となる場合の動作例を示す図表である。図14と同様に、初期状態がムーブインバッファが全て空であるとする。また、命令1〜9が順番に発行され、それらに対するメモリアクセス要求が全てキャッシュミスしたとする。
命令1〜9のインデックスアドレスは、図14の第1のマッチカウンタ例と同じであり、さらに、インデックスアドレスがBの命令10〜12が追加されている。
命令1〜4までのムーブインバッファ獲得の動作は図14と同じである。但し、命令2でインデックスアドレスAがムーブインバッファに登録中のインデックスアドレスAと同一であるので、1個のマッチカウンタがインデックスアドレスAの専用マッチカウンタになる。
その結果、インデックスアドレスBの命令5では、マッチカウンタを利用したムーブインバッファの獲得ができず、ムーブインバッファの獲得は抑止され命令5のメモリアクセス要求は滞留する。ここが図14と異なる。
命令6,7は、インデックスアドレスがA,Cであり、命令6はインデックスアドレスAに専用のマッチカウンタがフル状態でないため、ムーブインバッファを獲得する。命令7は、インデックスアドレスがCであり、マッチカウンタを利用できず、ムーブインバッファ獲得が抑止され、命令7のメモリアクセス要求は滞留する。
命令8は、インデックスアドレスがAであり、専用マッチカウンタがフル状態でないため、ムーブインバッファを獲得する。ここも図14と異なる。但し、命令9は、専用マッチカウンタがフル状態となり、獲得は抑止される。
命令9の後、インデックスアドレスがAの命令2,6,8の3つでデータ応答が発生したとする。それにより、マッチカウンタの値が「0」になりインデックスアドレスAの専用でなくなる。また、命令9の後、インデックスアドレスBの命令5もデータ応答が発生したとする。
そして、命令10,11,12はインデックスアドレスがBである。この場合、命令10でムーブインバッファを獲得しムーブインバッファにインデックスアドレスBが登録される。そして、次の命令11がムーブインバッファと同一インデックスアドレスのメモリアクセス要求であるので、マッチカウンタはインデックスBの専用となる。そして、命令11,12はいずれもムーブインバッファを獲得する。
[第3のマッチカウンタ例]
第3のマッチカウンタ例では、L1キャッシュが、マッチカウンタを2個有し、2個のマッチカウンタは、最初に発生した2種類の同一インデックスアドレスそれぞれに専用になる。つまり、最初に発生した同一インデックスアドレスAのメモリアクセス要求により専用マッチカウンタが獲得され、次に発生した2つ目の同一インデックスアドレスBも専用マッチカウンタを獲得できる。そして、マッチカウンタを獲得できた2種類の同一インデックスアドレスA,Bのメモリアクセス要求は、それぞれのマッチカウンタによりWAY数(=4)のムーブインバッファの獲得ができる。しかし、マッチカウンタを獲得できなかった他の同一インデックスアドレスCのメモリアクセス要求は、マッチカウンタによるWAY数までのWAYの利用ができず、同一インデックスアドレスCのムーブイン要求を並行して発行できない。また、第2のマッチカウンタ例と同様に、データ応答によりカウント値が0になると、マッチカウンタの専用状態が解除される。
図16は、第3のマッチカウンタ例の2個のマッチカウンタが最初に発生した2種類の同一インデックスアドレスそれぞれに専用となる場合の動作例を示す図表である。前提は図14と同じである。
命令1〜9のインデックスアドレスは、図14,15と同じである。この例では、インデックスアドレスAの命令2が最初の同一インデックスアドレスAのメモリアクセス要求となり、マッチカウンタMCH_CNT_0がインデックスアドレスAの専用になる。そのため、インデックスアドレスAの命令6,8はいずれも専用のマッチカウンタMCH_CNT_0に基づいてムーブインバッファを獲得する。
一方、インデックスアドレスBの命令5が2番目の最初の同一インデックスアドレスBのメモリアクセス要求となり、マッチカウンタMCH_CNT_1がインデックスアドレスBの専用になる。そのため、命令9の後の図示しない命令でインデックスアドレスがBの場合、命令3または5のムーブイン要求に対してデータ応答が発生してなくても、専用のマッチカウンタMCH_CNT_1に基づいてムーブインバッファを獲得できる。
上記の3つのマッチカウンタ例は、プロセッサや実行するプログラムに応じて、最も効率的にムーブインバッファが獲得されムーブイン要求が発行される例を選択することが好ましい。
以上の通り、本実施の形態によれば、ムーブインバッファに登録中のムーブイン要求と同一のインデックスに対するメモリアクセス要求が、登録中の同一インデックスのムーブイン要求の数がキャシュメモリのWAY数未満か否かをマッチカウンタの値で判定して、ムーブインバッファの獲得の要否を判定する。したがって、同一のインデックスへの複数のムーブイン要求を並列して発行することができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
メモリアクセス要求を発行するメモリアクセス要求発行部と、
タグメモリとデータメモリを有するキャッシュメモリと、前記メモリアクセス要求がキャッシュミスした場合に前記メモリアクセス要求のデータを要求するムーブイン要求を発行するムーブインバッファ制御部とを有するキャッシュとを有し、
前記ムーブインバッファ制御部は、前記メモリアクセス要求がキャッシュ判定でキャッシュミスしたとき、(a)前記メモリアクセス要求がムーブインバッファに登録中のいずれかのムーブイン要求のインデックスと同じインデックスである同一インデックスを有し、且つ前記ムーブインバッファに登録中である前記同一インデックスのムーブイン要求の数が前記キャッシュメモリのウエイ数未満の場合は、前記ムーブインバッファの獲得を決定し前記ムーブイン要求を発行し、(b)前記メモリアクセス要求がムーブインバッファに登録中のいずれかのムーブイン要求のインデックスと同じインデックスである同一インデックスを有し、且つ前記ムーブインバッファに登録中である前記同一インデックスのムーブイン要求の数が前記ウエイ数に達している場合は、前記ムーブインバッファの獲得抑止を決定し前記ムーブイン要求の発行を抑止する、演算処理装置。
(付記2)
前記キャッシュは、さらに、
前記ムーブインバッファ制御部が前記ムーブインバッファを獲得する場合、前記ムーブインバッファに登録中である前記同一インデックスのムーブイン要求のウエイ以外のウエイから、前記同一インデックスのメモリアクセス要求に対して発行するムーブイン要求の応答データを登録する前記キャッシュメモリのリプレースウエイを選択し、前記選択したリプレースウエイを前記ムーブインバッファに登録するリプレースウエイ選択部を有する、付記1に記載の演算処理装置。
(付記3)
前記ムーブインバッファに登録中である前記同一インデックスのムーブイン要求の数をカウントするマッチカウンタを有し、
前記ムーブインバッファ制御部は、前記同一インデックスのメモリアクセス要求に対し前記ムーブインバッファを獲得する場合、前記マッチカウンタをインクリメントし、前記同一インデックスのメモリアクセス要求に対して発行したムーブイン要求に対するデータ応答後に前記獲得したムーブインバッファを開放する場合、前記マッチカウンタをデクリメントする、付記1に記載の演算処理装置。
(付記4)
前記マッチカウンタは、複数の異なる前記同一インデックスのムーブイン要求で共用される共用マッチカウンタを有し、
前記ムーブインバッファ制御部は、前記複数の異なる同一インデックスのうちいずれかの前記同一インデックスのメモリアクセス要求に対し前記ムーブインバッファを獲得する場合、前記共用マッチカウンタをインクリメントし、前記獲得したムーブインバッファを開放する場合、前記共用マッチカウンタをデクリメントする、付記3に記載の演算処理装置。
(付記5)
前記マッチカウンタは、単一の前記同一インデックスのムーブイン要求で専用される専用マッチカウンタを有し、
前記ムーブインバッファ制御部は、前記単一の同一インデックスのメモリアクセス要求に対し前記ムーブインバッファを獲得する場合、前記専用マッチカウンタをインクリメントし、前記獲得したムーブインバッファを開放する場合、前記専用マッチカウンタをデクリメントする、付記3に記載の演算処理装置。
(付記6)
前記ムーブインバッファ制御部は、前記単一の同一インデックス以外の前記同一インデックスのメモリアクセス要求に対して、前記専用マッチカウンタの値にかかわらず、前記ムーブインバッファの獲得抑止を決定し前記ムーブイン要求の発行を抑止する、付記5に記載の演算処理装置。
(付記7)
前記マッチカウンタは、複数の異なる前記同一インデックスのムーブイン要求でそれぞれ専用される複数の専用マッチカウンタを有し、
前記ムーブインバッファ制御部は、前記同一インデックスのメモリアクセス要求に対し前記ムーブインバッファを獲得する場合、前記同一インデックスに対応する専用マッチカウンタをインクリメントし、前記獲得したムーブインバッファを開放する場合、前記専用マッチカウンタをデクリメントする、付記3に記載の演算処理装置。
(付記8)
前記ムーブインバッファは、ムーブイン要求が発行中か否かを示す有効ビットと、発行中のムーブイン要求のインデックス、リプレースウエイ、データをそれぞれ記憶する複数のエントリを有し、さらに、前記各エントリは、登録中のムーブイン要求が前記同一インデックスのムーブイン要求を示す同一インデックスフラグを記憶し、
前記ムーブインバッファ制御部は、前記同一インデックスのメモリアクセス要求に対してムーブインバッファを獲得するときに、前記同一インデックスフラグを登録し、前記獲得したムーブインバッファを開放するとき前記同一インデックスフラグが記憶されている場合、前記マッチカウンタをデクリメントする、付記3に記載の演算処理装置。
(付記9)
前記リプレースウエイ選択部は、前記ムーブインバッファに登録中である前記同一インデックスのムーブイン要求のウエイ以外のウエイのうち、前記タグメモリ内の前記同一インデックスの無効のウエイを優先して、前記リプレースウエイに選択する、付記2に記載の演算処理装置。
(付記10)
前記リプレースウエイ選択部は、前記ムーブインバッファに登録中である前記同一インデックスのムーブイン要求のウエイ以外のウエイが前記タグメモリの前記同一インデックスで有効な場合、アクセスの古さに基づいて前記リプレースウエイを選択する、付記9に記載の演算処理装置。
(付記11)
前記メモリアクセス要求発行部は、命令発行部であり、
前記キャッシュは、第1レベルキャッシュであり、
前記ムーブインバッファ制御部は、前記第1レベルキャッシュよりメインメモリに近い第2レベルキャッシュに前記ムーブイン要求を発行する、付記1に記載の演算処理装置。
(付記12)
前記メモリアクセス要求発行部は、第1のキャッシュであり、
前記キャッシュは、前記第1のキャッシュよりメインメモリに近い第2のキャッシュである、付記1に記載の演算処理装置。
(付記13)
前記ムーブインバッファ制御部は、前記第2のキャッシュより前記メインメモリに近い第3のキャッシュに前記ムーブイン要求を発行する、付記12に記載の演算処理装置。
(付記14)
前記ムーブインバッファ制御部は、前記メインメモリへのアクセスを制御するメモリ制御部に前記ムーブイン要求を発行する、付記12に記載の演算処理装置。
(付記15)
演算処理装置と、
前記演算処理装置からアクセスされる主記憶装置とを有し、
前記演算処理装置は、
メモリアクセス要求を発行するメモリアクセス要求発行部と、
タグメモリとデータメモリを有するキャッシュメモリと、前記メモリアクセス要求がキャッシュミスした場合に前記メモリアクセス要求のデータを要求するムーブイン要求を発行するムーブインバッファ制御部とを有するキャッシュとを有し、
前記ムーブインバッファ制御部は、前記メモリアクセス要求がキャッシュ判定でキャッシュミスしたとき、(a)前記メモリアクセス要求がムーブインバッファに登録中のいずれかのムーブイン要求のインデックスと同じインデックスである同一インデックスを有し、且つ前記ムーブインバッファに登録中である前記同一インデックスのムーブイン要求の数が前記キャッシュメモリのウエイ数未満の場合は、前記ムーブインバッファの獲得を決定し前記ムーブイン要求を発行し、(b)前記メモリアクセス要求がムーブインバッファに登録中のいずれかのムーブイン要求のインデックスと同じインデックスである同一インデックスを有し、且つ前記ムーブインバッファに登録中である前記同一インデックスのムーブイン要求の数が前記ウエイ数に達している場合は、前記ムーブインバッファの獲得抑止を決定し前記ムーブイン要求の発行を抑止する、情報処理装置。
(付記16)
メモリアクセス要求を発行するメモリアクセス要求発行部と、
タグメモリとデータメモリを有するキャッシュメモリと、前記メモリアクセス要求がキャッシュミスした場合に前記メモリアクセス要求のデータを要求するムーブイン要求を発行するムーブインバッファ制御部とを有するキャッシュとを有する演算処理装置の制御方法であって、
前記ムーブインバッファ制御部は、
前記メモリアクセス要求がキャッシュ判定でキャッシュミスしたとき、(a)前記メモリアクセス要求がムーブインバッファに登録中のいずれかのムーブイン要求のインデックスと同じインデックスである同一インデックスを有し、且つ前記ムーブインバッファに登録中である前記同一インデックスのムーブイン要求の数が前記キャッシュメモリのウエイ数未満の場合は、前記ムーブインバッファの獲得を決定し前記ムーブイン要求を発行し、(b)前記メモリアクセス要求がムーブインバッファに登録中のいずれかのムーブイン要求のインデックスと同じインデックスである同一インデックスを有し、且つ前記ムーブインバッファに登録中である前記同一インデックスのムーブイン要求の数が前記ウエイ数に達している場合は、前記ムーブインバッファの獲得抑止を決定し前記ムーブイン要求の発行を抑止する、演算処理装置の制御方法。
10:L1キャッシュ
20:L2キャッシュ
3:命令発行部
11:リクエストポート
TLB:トランスレーション・ルックアサイド・バッファ
DATA_RAM, TAG_RAM:キャッシュメモリ
DATA RAM:データメモリ
TAG RAM:タグメモリ
LRU:LRU回路
MIB_CN:ムーブインバッファ制御部
MCH_CNT:マッチカウンタ
MIB:ムーブインバッファ
VALID:有効ビット
IDX_ADD:インデックスアドレス
DATA:データ
IDX_MCH_FLG:インデックスマッチフラグ
MI_RQ:ムーブイン要求
RPL_SEL:リプレースWAY選択回路
RPL_WAY:リプレースWAY
DATA_RSP:データ応答
EJ_OD:追い出しオーダ
WAY:ウエイ

Claims (10)

  1. メモリアクセス要求を発行するメモリアクセス要求発行部と、
    タグメモリとデータメモリを有するキャッシュメモリと、前記メモリアクセス要求がキャッシュミスした場合に前記メモリアクセス要求のデータを要求するムーブイン要求を発行するムーブインバッファ制御部と、前記ムーブイン要求を登録する複数のエントリを有するムーブインバッファと、マッチカウンタと、リプレースウエイ選択部とを有するキャッシュとを有し、
    前記ムーブインバッファ制御部は、前記メモリアクセス要求がキャッシュ判定でキャッシュミスしたとき、
    (a)前記メモリアクセス要求がムーブインバッファの前記複数のエントリに登録中のいずれかのムーブイン要求のインデックスと同じインデックスである同一インデックスを有し、且つ前記マッチカウンタのカウント値が前記キャッシュメモリのウエイ数未満の場合は、前記ムーブインバッファのエントリを獲得し前記ムーブイン要求を発行し前記マッチカウンタをインクリメントし
    (b)前記メモリアクセス要求が前記同一インデックスを有し、且つ前記マッチカウンタのカウント値が前記ウエイ数に達している場合は、前記ムーブインバッファの前記エントリの獲得を抑止し前記ムーブイン要求の発行を抑止し、
    (c)前記同一インデックスを持つメモリアクセス要求に対して発行したムーブイン要求に対するデータ応答後に前記獲得したムーブインバッファの前記エントリを開放する場合、前記マッチカウンタをデクリメントし、
    前記リプレースウエイ選択部が、前記ムーブインバッファのエントリに登録中である前記同一インデックスのムーブイン要求のウエイ以外のウエイから、前記同一インデックスのメモリアクセス要求に対して発行するムーブイン要求の応答データを登録する前記キャッシュメモリのリプレースウエイを選択する前に、前記ムーブインバッファ制御部が前記ムーブインバッファの前記複数のエントリのいずれかのエントリを獲得する、演算処理装置。
  2. 前記マッチカウンタは、複数の異なる前記同一インデックスのムーブイン要求で共用される共用マッチカウンタを有し、
    前記ムーブインバッファ制御部は、前記複数の異なる同一インデックスのうちいずれかの前記同一インデックスのメモリアクセス要求に対し前記ムーブインバッファのエントリを獲得する場合、前記共用マッチカウンタをインクリメントし、前記獲得したムーブインバッファのエントリを開放する場合、前記共用マッチカウンタをデクリメントする、請求項に記載の演算処理装置。
  3. 前記マッチカウンタは、単一の前記同一インデックスのムーブイン要求で専用される専用マッチカウンタを有し、
    前記ムーブインバッファ制御部は、前記単一の同一インデックスのメモリアクセス要求に対し前記ムーブインバッファのエントリを獲得する場合、前記専用マッチカウンタをインクリメントし、前記獲得したムーブインバッファのエントリを開放する場合、前記専用マッチカウンタをデクリメントする、請求項に記載の演算処理装置。
  4. 前記ムーブインバッファ制御部は、前記単一の同一インデックス以外の前記同一インデックスのメモリアクセス要求に対して、前記専用マッチカウンタの値にかかわらず、前記ムーブインバッファのエントリの獲得抑止を決定し前記ムーブイン要求の発行を抑止する、請求項に記載の演算処理装置。
  5. 前記マッチカウンタは、複数の異なる前記同一インデックスのムーブイン要求でそれぞれ専用される複数の専用マッチカウンタを有し、
    前記ムーブインバッファ制御部は、前記同一インデックスのメモリアクセス要求に対し前記ムーブインバッファのエントリを獲得する場合、前記同一インデックスに対応する専用マッチカウンタをインクリメントし、前記獲得したムーブインバッファのエントリを開放する場合、前記専用マッチカウンタをデクリメントする、請求項に記載の演算処理装置。
  6. 前記ムーブインバッファの前記複数のエントリには、ムーブイン要求が発行中か否かを示す有効ビットと、発行中のムーブイン要求のインデックス、リプレースウエイ、データをそれぞれ記憶、さらに、前記各エントリは、登録中のムーブイン要求が前記同一インデックスのムーブイン要求を示す同一インデックスフラグを記憶し、
    前記ムーブインバッファ制御部は、前記同一インデックスのメモリアクセス要求に対してムーブインバッファのエントリを獲得するときに、前記同一インデックスフラグを登録し、前記獲得したムーブインバッファのエントリを開放するとき前記同一インデックスフラグが記憶されている場合、前記マッチカウンタをデクリメントする、請求項に記載の演算処理装置。
  7. 前記リプレースウエイ選択部は、前記ムーブインバッファのエントリに登録中である前記同一インデックスのムーブイン要求のウエイ以外のウエイのうち、前記タグメモリ内の前記同一インデックスの無効のウエイを優先して、前記リプレースウエイに選択する、請求項に記載の演算処理装置。
  8. 前記リプレースウエイ選択部は、前記ムーブインバッファのエントリに登録中である前記同一インデックスのムーブイン要求のウエイ以外のウエイが前記タグメモリの前記同一インデックスで有効な場合、アクセスの古さに基づいて前記リプレースウエイを選択する、請求項に記載の演算処理装置。
  9. 演算処理装置と、
    前記演算処理装置からアクセスされる主記憶装置とを有し、
    前記演算処理装置は、
    メモリアクセス要求を発行するメモリアクセス要求発行部と、
    タグメモリとデータメモリを有するキャッシュメモリと、前記メモリアクセス要求がキャッシュミスした場合に前記メモリアクセス要求のデータを要求するムーブイン要求を発行するムーブインバッファ制御部と、前記ムーブイン要求を登録する複数のエントリを有するムーブインバッファと、マッチカウンタと、リプレースウエイ選択部とを有するキャッシュとを有し、
    前記ムーブインバッファ制御部は、前記メモリアクセス要求がキャッシュ判定でキャッシュミスしたとき、
    (a)前記メモリアクセス要求がムーブインバッファの前記複数のエントリに登録中のいずれかのムーブイン要求のインデックスと同じインデックスである同一インデックスを有し、且つ前記マッチカウンタのカウント値が前記キャッシュメモリのウエイ数未満の場合は、前記ムーブインバッファのエントリを獲得し前記ムーブイン要求を発行し前記マッチカウンタをインクリメントし
    (b)前記メモリアクセス要求が前記同一インデックスを有し、且つ前記マッチカウンタのカウント値が前記ウエイ数に達している場合は、前記ムーブインバッファのエントリの獲得を抑止し前記ムーブイン要求の発行を抑止し、
    (c)前記同一インデックスを持つメモリアクセス要求に対して発行したムーブイン要求に対するデータ応答後に前記獲得したムーブインバッファの前記エントリを開放する場合、前記マッチカウンタをデクリメントし、
    前記リプレースウエイ選択部が、前記ムーブインバッファのエントリに登録中である前記同一インデックスのムーブイン要求のウエイ以外のウエイから、前記同一インデックスのメモリアクセス要求に対して発行するムーブイン要求の応答データを登録する前記キャッシュメモリのリプレースウエイを選択する前に、前記ムーブインバッファ制御部が前記ムーブインバッファの前記複数のエントリのいずれかのエントリを獲得する、情報処理装置。
  10. メモリアクセス要求を発行するメモリアクセス要求発行部と、
    タグメモリとデータメモリを有するキャッシュメモリと、前記メモリアクセス要求がキャッシュミスした場合に前記メモリアクセス要求のデータを要求するムーブイン要求を発行するムーブインバッファ制御部と、前記ムーブイン要求を登録する複数のエントリを有するムーブインバッファと、マッチカウンタと、リプレースウエイ選択部とを有するキャッシュとを有する演算処理装置の制御方法であって、
    前記ムーブインバッファ制御部は、前記メモリアクセス要求がキャッシュ判定でキャッシュミスしたとき、
    (a)前記メモリアクセス要求がムーブインバッファの前記複数のエントリに登録中のいずれかのムーブイン要求のインデックスと同じインデックスである同一インデックスを有し、且つ前記マッチカウンタのカウント値が前記キャッシュメモリのウエイ数未満の場合は、前記ムーブインバッファのエントリを獲得し前記ムーブイン要求を発行し前記マッチカウンタをインクリメントし
    (b)前記メモリアクセス要求が前記同一インデックスを有し、且つ前記マッチカウンタのカウント値が前記ウエイ数に達している場合は、前記ムーブインバッファのエントリの獲得を抑止し前記ムーブイン要求の発行を抑止し、
    (c)前記同一インデックスを持つメモリアクセス要求に対して発行したムーブイン要求に対するデータ応答後に前記獲得したムーブインバッファの前記エントリを開放する場合、前記マッチカウンタをデクリメントし、
    前記リプレースウエイ選択部が、前記ムーブインバッファのエントリに登録中である前記同一インデックスのムーブイン要求のウエイ以外のウエイから、前記同一インデックスのメモリアクセス要求に対して発行するムーブイン要求の応答データを登録する前記キャッシュメモリのリプレースウエイを選択する前に、前記ムーブインバッファ制御部が前記ムーブインバッファの前記複数のエントリのいずれかのエントリを獲得する、演算処理装置の制御方法。
JP2016193545A 2016-09-30 2016-09-30 演算処理装置、情報処理装置及び演算処理装置の制御方法 Active JP6770230B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016193545A JP6770230B2 (ja) 2016-09-30 2016-09-30 演算処理装置、情報処理装置及び演算処理装置の制御方法
US15/683,838 US10552331B2 (en) 2016-09-30 2017-08-23 Arithmetic processing device having a move-in buffer control unit that issues a move-in request in shorter time upon a memory access request, information apparatus including the same and method for controlling the arithmetic processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016193545A JP6770230B2 (ja) 2016-09-30 2016-09-30 演算処理装置、情報処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2018055568A JP2018055568A (ja) 2018-04-05
JP6770230B2 true JP6770230B2 (ja) 2020-10-14

Family

ID=61758846

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016193545A Active JP6770230B2 (ja) 2016-09-30 2016-09-30 演算処理装置、情報処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US10552331B2 (ja)
JP (1) JP6770230B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6770230B2 (ja) 2016-09-30 2020-10-14 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
JP6947974B2 (ja) 2017-09-13 2021-10-13 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10853256B2 (en) * 2019-01-04 2020-12-01 Arm Limited Cache operation in an apparatus supporting both physical and virtual address mapping
CN109918131B (zh) * 2019-03-11 2021-04-30 中电海康无锡科技有限公司 一种基于非阻塞指令cache的指令读取方法
JP2023079640A (ja) * 2021-11-29 2023-06-08 富士通株式会社 演算処理装置および演算処理方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR960006484B1 (ko) * 1992-09-24 1996-05-16 마쯔시다 덴기 산교 가부시끼가이샤 캐쉬메모리장치
US5680572A (en) * 1994-02-28 1997-10-21 Intel Corporation Cache memory system having data and tag arrays and multi-purpose buffer assembly with multiple line buffers
JPH08328960A (ja) 1995-05-30 1996-12-13 Hitachi Ltd キャッシュメモリ装置
JPH09218823A (ja) 1996-02-08 1997-08-19 Hitachi Ltd キャッシュメモリ制御装置
JP2001051899A (ja) * 1999-08-12 2001-02-23 Hitachi Ltd キャッシュメモリ装置
US6401175B1 (en) * 1999-10-01 2002-06-04 Sun Microsystems, Inc. Shared write buffer for use by multiple processor units
US6282617B1 (en) * 1999-10-01 2001-08-28 Sun Microsystems, Inc. Multiple variable cache replacement policy
JP2002082832A (ja) * 2000-09-08 2002-03-22 Nec Corp キャッシュ更新方法及びキャッシュ更新制御システム並びに記録媒体
US7107367B1 (en) * 2003-08-12 2006-09-12 Advanced Micro Devices, Inc. Method for efficient buffer tag allocation
JP4550511B2 (ja) 2004-07-27 2010-09-22 富士通株式会社 演算処理装置、演算処理装置の制御方法
US7669009B2 (en) * 2004-09-23 2010-02-23 Intel Corporation Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches
US7302528B2 (en) * 2004-11-19 2007-11-27 Intel Corporation Caching bypass
WO2007088591A1 (ja) * 2006-01-31 2007-08-09 Fujitsu Limited メモリアクセス制御装置およびメモリアクセス制御方法
KR101077513B1 (ko) * 2007-06-20 2011-10-28 후지쯔 가부시끼가이샤 캐시 메모리 장치, 연산 처리 장치 및 그 제어 방법
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
WO2012127628A1 (ja) * 2011-03-22 2012-09-27 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
JP2012203729A (ja) * 2011-03-25 2012-10-22 Fujitsu Ltd 演算処理装置および演算処理装置の制御方法
JP6179369B2 (ja) * 2013-11-22 2017-08-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP6451538B2 (ja) * 2015-07-22 2019-01-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP6770230B2 (ja) 2016-09-30 2020-10-14 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
US20180095886A1 (en) 2018-04-05
US10552331B2 (en) 2020-02-04
JP2018055568A (ja) 2018-04-05

Similar Documents

Publication Publication Date Title
JP6770230B2 (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法
US10558577B2 (en) Managing memory access requests with prefetch for streams
JP2554449B2 (ja) キャッシュ・メモリを有するデータ処理システム
JP5482801B2 (ja) 演算処理装置
US6425055B1 (en) Way-predicting cache memory
US10929308B2 (en) Performing maintenance operations
JP2018005395A (ja) 演算処理装置、情報処理装置および演算処理装置の制御方法
KR20160033651A (ko) 상이한 인덱싱 방식을 사용하는 1차 캐시와 오버플로 캐시를 갖는 캐시 시스템
JP2010033480A (ja) キャッシュメモリおよびキャッシュメモリ制御装置
CN113760787B (zh) 多级高速缓存数据推送系统、方法、设备和计算机介质
US9846580B2 (en) Arithmetic processing device, arithmetic processing system, and method for controlling arithmetic processing device
US7761665B2 (en) Handling of cache accesses in a data processing apparatus
US10831673B2 (en) Memory address translation
US10853262B2 (en) Memory address translation using stored key entries
US8255632B2 (en) Pre-fetch control apparatus
WO2007090175A1 (en) Cache locking without interference from normal allocation
KR20210037216A (ko) 이종 메모리를 이용하여 메모리 주소 변환 테이블을 관리하는 메모리 관리 유닛 및 이의 메모리 주소 관리 방법
JP6947974B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP2014186579A (ja) キャッシュメモリ、キャッシュメモリ制御装置、および、そのキャッシュメモリ制御方法
US8423719B2 (en) Apparatus, processor and method of controlling cache memory
US10866904B2 (en) Data storage for multiple data types
JP2001195390A (ja) ベクトル処理装置のオペランドキャッシュ

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190611

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200528

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200609

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200807

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200907

R150 Certificate of patent or registration of utility model

Ref document number: 6770230

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150