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

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

Info

Publication number
JP6947974B2
JP6947974B2 JP2017175642A JP2017175642A JP6947974B2 JP 6947974 B2 JP6947974 B2 JP 6947974B2 JP 2017175642 A JP2017175642 A JP 2017175642A JP 2017175642 A JP2017175642 A JP 2017175642A JP 6947974 B2 JP6947974 B2 JP 6947974B2
Authority
JP
Japan
Prior art keywords
move
request
buffer
way
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
JP2017175642A
Other languages
English (en)
Other versions
JP2019053390A (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 JP2017175642A priority Critical patent/JP6947974B2/ja
Priority to US16/110,578 priority patent/US10482018B2/en
Publication of JP2019053390A publication Critical patent/JP2019053390A/ja
Application granted granted Critical
Publication of JP6947974B2 publication Critical patent/JP6947974B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc

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キャッシュにデータを追い出した後に、L1キャッシュは、L2キャシュからのデータ応答を受信し、対応するムーブインバッファのデータ領域に新しいデータを格納する。そして、L1キャッシュは、ムーブインバッファに登録していたインデックス情報とWAY情報に基づいて、応答されたデータをL1キャッシュメモリに登録するとともに、命令発行部(またはメインメモリからより遠い上位レベルのキャッシュ)にデータ応答する。データ応答されると、ムーブイン要求の情報を登録していたムーブインバッファは解放される。ムーブインバッファに複数のムーブイン要求情報を登録することで、先行するムーブイン要求に対するデータ応答を受信する前に、次のムーブイン要求を発行する。
国際公開第2007/088591号 特開2001−51899号公報
キャッシュは、同一のインデックス且つ同一のリプレースWAYを持つ複数のムーブイン要求を同時期に発行することを抑止することが必要である。その理由は、例えば、後続のムーブイン要求に対するリプレースWAY内のデータの追い出し要求とデータ応答が、先行のムーブイン要求に対するデータ応答を追い越す可能性があるからである。追い越しが発生すると、同一のキャッシュブロック(同一のインデックス且つ同一のWAYのブロック)に対して、後続のムーブイン要求のデータ追い出し及びデータ応答に伴うキャッシュ登録後に、先行ムーブイン要求の応答データのキャッシュ登録が行われる。このような動作は、L1キャッシュとL2キャッシュ間でキャッシュコヒーレンシを維持できず、キャッシュでのプロトコルエラーとなる。
一方、上記の同じキャッシュブロック(同じインデックスアドレス、同じWAY)で競合するムーブイン要求の発行を抑止するためには、キャッシュミス発生時に、ムーブインバッファ内を検索して、キャッシュミスしたメモリアクセス要求と同じインデックス及びWAYを有する実行中またはムーブインバッファに登録中のムーブイン要求があるか否かの判定を行う必要がある。
しかし、この判定は一定の処理サイクルを必要とするので、高周波クロックで動作するムーブインバッファ制御ユニット内のパイプライン回路は、連続して発生するキャッシュミスしたメモリアクセス要求を短いクロックサイクルで効率よく処理することが困難である。
そのため、一部のプロセッサでは、同一リプレースWAYか否かの判定を省略し、キャッシュミスしたメモリアクセス要求と同じインデックスを持つムーブイン要求がムーブインバッファ内に登録中であれば、そのメモリアクセス要求に対するムーブイン要求の発行を抑止し、メモリアクセス要求をアボートしリクエストポートに差し戻している。このようなプロセッサは、連続するメモリアクセス要求に対するムーブインバッファ制御ユニットの処理効率は上がるが、インデックスで競合するムーブイン要求をリプレース可能なWAY数まで複数発行できず、性能低下を招く。
そこで,本実施の形態の第1の側面の目的は,キャッシュのムーブイン要求の発行性能を向上した演算処理装置及び演算処理装置の制御方法を提供することにある。
本実施の形態の第1の側面は,メモリアクセス要求を発行するメモリアクセス要求発行部と、
タグメモリとデータメモリを有し、前記タグメモリとデータメモリ内の前記メモリアクセス要求のインデックスと一致するブロックにデータの状態とデータが登録されるキャッシュメモリと、前記メモリアクセス要求がキャッシュミスした場合に前記メモリアクセス要求のデータを要求するムーブイン要求を発行するムーブインバッファ制御ユニットと、前記ムーブイン要求の情報が登録される複数のムーブインバッファとを有するキャッシュとを有し、
前記ムーブインバッファ制御ユニットは、前記キャッシュミスしたメモリアクセス要求の入力に応答して、
(a)前記複数のムーブインバッファに空きムーブインバッファがあることを検出すると、前記メモリアクセス要求のためにムーブインバッファを確保し、
(b)前記メモリアクセス要求と同じインデックスである同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれにも登録中でないことを検出すると、前記ムーブインバッファを確保したメモリアクセス要求のムーブイン要求を発行し、
(c)前記同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれかに登録中であることを検出し、更に、前記複数のムーブインバッファのいずれかに登録中の前記同一インデックスを有するムーブイン要求がリプレースWAYとして全てのWAYを使用中でないことを検出すると、前記ムーブインバッファを確保したメモリアクセス要求のムーブイン要求を発行し、
(d)前記全てのWAYを使用中であることを検出すると、前記確保したムーブインバッファを解放し、前記ムーブイン要求の発行を抑止する、演算処理装置である。
第1の側面によれば,キャッシュのムーブイン要求の発行性能を向上することができる。
本実施の形態の演算処理装置(プロセッサ)の構成を示す図である。 本実施の形態におけるL1キャッシュとL2キャッシュの組み合わせの構成を示す図である。 キャッシュメモリの構成例を示す図である。 L1キャッシュの動作を示すフローチャート図である。 L1キャッシュの動作を示すシーケンス図である。 ムーブインバッファ制御ユニットとリプレースWAY選択ユニットの構成例を示す図である。 ムーブインバッファ制御ユニット内のMIB空き判定回路の一例を示す図である。 ムーブインバッファ制御ユニット内のインデックスマッチ判定回路IDX_MCH_JDGとリプレースWAY選択ユニット内の同一インデックスのムーブイン要求のWAY使用状態判定回路WAY_JDGの回路例を示す図である。 インデックスマッチ判定回路IDX_MCH_JDGのより詳細な回路の一例を示す図である。 リプレースWAY選択ユニット内の全WAY使用判定回路ALL_WAY_JDGと、リプレースWAY選択回路RPL_WAY_SELの回路例を示す図である。 リプレースWAY選択ユニットに関する動作を示すフローチャート図である。 リプレースWAY選択回路の真理値表を示す図である。 本実施の形態におけるL1キャッシュのムーブインバッファ制御ユニットによるムーブインバッファ制御を示すタイミングチャート図である。 連続する命令の処理を説明する図である。
[演算処理装置(プロセッサ)]
図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に投入される。したがって、命令発行部3はメモリアクセス要求を発行する要求発行部でもある。以下の説明ではメモリアクセス命令がロード命令(メインメモリのデータ読み出し命令)の例で説明する。
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にキャッシュメモリDATA_RAM,TAG_RAMがないことを除いて、同様である。
L1キャッシュ10は、命令発行部3からのメモリアクセス要求MA_RQや滞留したメモリアクセス要求RQ_STYなどを格納する複数のリクエストポート11と、複数のリクエストポート内の要求を、所定の優先度に基づいて選択する要求選択回路RQ_SELとを有する。要求選択回路RQ_SELは選択したメモリアクセス要求をL1キャッシュ10内のキャッシュパイプラインに投入または入力する。
キャッシュパイプラインは、TLB(Translation Lookaside Buffer)、キャッシュメモリを構成するデータメモリDATA_RAM及びタグメモリTAG_RAMと、ムーブインバッファ制御ユニットMIB_CNと、LRU回路LRUと、リプレースWAY選択ユニットRPL_SELなどで構成される。
TLBはメモリアクセス要求MA_RQの論理アドレスを物理アドレスに変換する。タグメモリTAG_RAMにはキャッシュ登録されているデータの有効性、状態情報、WAY情報、アドレス情報等が登録され、メモリアクセス要求のキャッシュヒット判定で参照される。そして、タグメモリは、キャッシュヒットの場合にそのWAY情報HIT_WAYをLRU回路LRUに出力し、キャッシュミスの場合にキャッシュミスMISSをムーブインバッファ制御ユニットMIB_CNに出力する。
ムーブインバッファ制御ユニットMIB_CNは、キャッシュミスしたメモリアクセス要求の入力に応答して一つのムーブインバッファMIBを獲得し、ムーブイン要求MI_RQの情報をムーブインバッファMIBに登録し、ムーブイン要求MI_RQをL2キャッシュ20に発行する。
LRU回路は、キャッシュヒットしたWAY情報HIT_WAYとムーブインバッファMIB内のムーブイン要求のWAY情報MI_WAYに基づいて、キャッシュメモリ(DATA_RAM, TAG_RAM)の各WAYへのアクセスの古さを判定し、最もアクセスが古いWAYを示すLRU情報LRU_INFを出力する。
リプレースWAY選択ユニットRPL_SELは、LRU回路からのLRU情報LRU_INFに基づいて、ムーブイン要求に対する応答データをキャッシュメモリのどのウエイに登録するかを示すリプレースウエイRPL_WAYを選択する。
[ムーブインバッファMIB]
ムーブインバッファMIBは、同時期に複数のムーブイン要求を発行可能にするために、複数有する。各ムーブインバッファMIBは、ムーブインバッファのエントリとも称することができる。
各ムーブインバッファMIBには、前述のとおり、有効ビットVALID、インデックスアドレスIDX_ADD、リプレースWAY番号WAY、データDATAをそれぞれ記憶する。有効ビットVALIDは、例えば、ムーブインバッファが獲得されると有効「1」になり、そのムーブイン要求がデータ応答の受信により完了すると無効「0」となり、ムーブインバッファが開放される。
また、インデックスアドレスIDX_ADDにはメモリアクセス要求のインデックスアドレスADD_2が記憶される。したがって、ムーブインバッファ制御ユニットMIB_CNが、キャッシュミスしたメモリアクセス要求に対してあるムーブインバッファを確保すると、そのムーブインバッファの有効ビットVALIDを「1」に変更し、インデックスアドレスIDX_ADDにキャッシュミスしたメモリアクセス要求のインデックスアドレスIDX_ADDを登録する。
一方、ムーブインバッファを登録した段階では、未だ、ムーブイン要求に対するデータ応答のデータを登録するWAYは決定されていないので、ムーブインバッファ内のリプレースWAY番号WAYは未登録である。そして、ムーブインバッファを確保した後、ムーブインバッファ制御ユニットは、ムーブインバッファ内に同一インデックスのムーブイン要求が登録されていないことを検出し、または同一インデックスのムーブイン要求が登録されているが、全てWAYが使用中でないことを検出すると、リプレースWAY選択ユニットが選択したWAY番号をムーブインバッファに登録する。
さらに、ムーブイン要求に対するデータ応答を受信すると、ムーブインバッファ制御ユニットは、応答データをムーブインバッファのデータDATAに記憶する。
前述したリプレース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の場合である。
図2内には、L1キャッシュのパイプライン回路の各パイプラインステージP,T,M,S,B,B1,B2,B3,B4の位置が示される。このステージについては、後述するL1キャッシュの動作説明で詳述する。
[キャッシュメモリの構成]
図3は、キャッシュメモリの構成例を示す図である。図3のキャッシュメモリは4WAYセットアソシエティブの例である。キャッシュメモリを構成するタグメモリTAG_RAMとデータメモリDATA_RAMは、n+1個のインデックス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を便宜的にインデックスと称する。
[ムーブインバッファ制御ユニット及びリプレースWAY選択ユニットの構成とキャッシュの動作]
図4は、L1キャッシュの動作を示すフローチャート図である。また、図5は、L1キャッシュの動作を示すシーケンス図である。いずれの図にも、キャッシュのパイプラインステージP,T,M,S,B,B1,B2,B3,B4が示される。
さらに、図6は、ムーブインバッファ制御ユニットとリプレースWAY選択ユニットの構成例を示す図である。ムーブインバッファ制御ユニットMIB_CNは、MIBパイプライン制御回路MIB_PIPE_CNと、ムーブインバッファ空き判定回路INV_MIB_JDGと、インデックスマッチ判定回路IDX_MCH_JDGと、MI要求発行回路MI_RQ_ISSUとを有する。また、リプレースWAY選択ユニットRPL_SELは、同一インデックスのムーブイン要求のWAY使用状態判定回路WAY_JDGと、全WAY使用判定回路ALL_WAY_JDGと、リプレースWAY選択回路RPL_WAY_SELとを有する。
図6にも、ムーブインバッファ制御ユニットとリプレースWAY選択ユニットのパイプラインステージB,B1,B2,B3,B4が示されている。
MIB制御ユニットのMIB空き判定回路はステージBに配置され、ムーブインバッファMIBの有効ビットValidを入力し、有効ビットが無効のムーブインバッファが存在するか否かを判定し、全有効ムーブインバッファ信号ALL_VAL_MIBを出力する。
インデックスマッチ判定回路はステージB,B1に配置され、メモリアクセス要求のインデックスアドレスADD_2とムーブインバッファに登録されているムーブイン要求のインデックスIDX_MIBのいずれかが一致するか否か判定し、インデックスマッチ信号IDX_MCHを出力する。そして、ムーブイン要求発行回路は、ステージB2とB4でムーブイン要求MI_RQを発行している。
一方、リプレースWAY選択ユニットの同一インデックスのムーブイン要求のWAY使用状態判定回路は、B2ステージに配置され、インデックスマッチ判定回路が生成する各ムーブインバッファMIB0-nについてのインデックスマッチ信号IDX_MCH0-nがマッチ「1」になるムーブイン要求によるWAYの使用状態を判定する。
全WAY使用判定回路は、B3ステージに配置され、同一インデックスのムーブイン要求のWAY使用状態に基づいて、全WAYが使用中か否かを判定し、全WAY使用信号ALL_WAYを出力する。
また、リプレースWAY選択回路は、B3ステージに配置され、同一インデックスのムーブイン要求のWAY使用状態等に基づいて、新たに発行されるムーブイン要求が使用するWAYを選択し、リプレースWAY信号RPL_WAYを出力する。選択したWAYにデータが登録済みの場合、そのWAYのデータがムーブイン要求に対して獲得されるデータでリプレースされる。
各キャッシュパイプラインステージと、ムーブインバッファ制御ユニット内のパイプラインステージは、以下に説明する通りである。各ステージの処理を説明した後に、図4、図5を参照してL1キャッシュでの動作を説明する。したがって、図4,5によるL1キャッシュでの動作を読みながら、以下の各ステージの処理内容を参照すると、その動作を良く理解できる。
[各ステージの処理内容]
Pステージ:パイプラインに命令を投入するか否かを決定する。
Tステージ:TLBでアドレス変換(論理アドレスから物理アドレスへ変換)し、TAGメモリ、DATAメモリにアクセスする。
Mステージ:キャッシュヒット判定を行う。キャッシュヒット判定では、図3に示したとおり、キャッシュパイプライン回路が、メモリアクセス要求のインデックスアドレスADD_2でキャッシュタグTAG_RAMを検索し、インデックスアドレスに対応するキャッシュタグ内の全てのWAYのアドレスと、メモリアクセス要求のアドレスADD_1とが一致するかの判定を行う。
Bステージ:(1)キャッシュヒットの場合、キャッシュパイプライン回路が、4つのWAYのデータを読み出し、アドレスADD_1が一致したWAY番号のデータを選択して出力する。(2)キャッシュミスの場合、図6のムーブインバッファ制御ユニットMIB_CNのMIB空き判定回路INV_MIB_JDGが、ムーブインバッファに空きがあるかの判定を行う。
B1ステージ:(1)キャッシュヒットの場合、キャッシュヒットしたデータメモリのデータを命令発行部に応答し、メモリアクセス要求の処理を完了する。(2)キャッシュミスの場合、ムーブインバッファに空きがあることが判定されれば、ムーブインバッファ制御ユニットが、ムーブインバッファ確保要求MIB_ENSを発行してムーブインバッファMIBを確保する。また、ムーブインバッファ制御ユニットのインデックスマッチ回路IDX_MCH_JDGは、メモリアクセス要求のインデックスと同一インデックスのムーブイン要求が、ムーブインバッファ内に登録中か否かの判定を開始する。
B2ステージ:(2)キャッシュミスの場合、(2−1)同一インデックスのムーブイン要求がムーブインバッファに登録中でなければ、ムーブインバッファ制御ユニットのムーブイン要求発行回路MI_RQ_ISSUは、ムーブイン要求を発行する。(2−2)同一インデックスのムーブイン要求がムーブインバッファに登録中であれば、リプレースWAY選択ユニットRPL_SEL内のWAY使用状態判定回路WAY_JDGが、ムーブインバッファ確保中の同一インデックスのムーブイン要求のWAY情報WAY(MI_WAY)を読み出す。
B3:(2)キャッシュミスの場合、(2−1)同一インデックスのムーブイン要求が登録中でなければ、リプレースWAY選択ユニット内のリプレースWAY選択回路RPL_WAY_SELがムーブイン要求のデータを登録するWAY番号RPL_WAYを出力する。(2−2)同一インデックスのムーブイン要求が登録中であれば、リプレースWAY選択ユニット内の全WAY使用判定回路ALL_WAY_JDGが同一インデックスのムーブイン要求が全WAYを使用中か否かの判定結果ALL_WAYを出力する。そして、全WAYが使用中であれば、次のB4ステージで、MIBパイプライン制御回路がムーブインバッファ解放要求MIB_RLを発行し確保されているムーブインバッファMIBを解放する。全WAYが使用中でなければ、リプレースWAY選択回路RPL_WAY_SELがムーブイン要求のデータを登録するWAY番号RPL_WAYを出力する。
B4:(2)キャッシュミスの場合、全WAYが使用中でなければ、MIBパイプライン制御回路がムーブイン要求の発行要求MI_ISSU_RQを発行し、ムーブインバッファ制御ユニット内のムーブイン要求発行回路がムーブイン要求MI_RQを発行する。
[L1キャッシュの動作]
次に、L1キャッシュの動作を図4、図5を参照して説明する。まず、命令発行部(または要求発行部)が発行したメモリアクセス要求(ロード要求)が要求選択回路RQ_SELによりリクエストポートからキャッシュパイプラインに投入される(Pステージ)。そして、TLBでメモリアクセス要求の論理アドレスが物理アドレスに変換される(Tステージ)。さらに、タグメモリTAG_RAMでキャッシュヒット判定が行われる(S1,Mステージ)。そこで、キャッシュミスが発生すると、ムーブインバッファ制御ユニットMIB_CNはL1キャッシュミスMISSを受信する。
L1キャッシュミスの受信に応答して、ムーブインバッファ制御ユニットMIB_CNのMIB空き判定回路INV_MIB_JDGは、空きムーブインバッファ(InvalidなMIB)があるか否かを判定する(S2,Bステージ)。この判定は、後述する空き判定回路に示されるとおり、全ムーブインバッファMIBの有効ビットをチェックすることで行われる。
空きムーブインバッファがない場合(S2のNO)、ムーブインバッファを確保できないので、キャッシュミスしたメモリアクセス要求に対してムーブイン要求を発行できない。そのため、ムーブインバッファ制御ユニットは、キャッシュミスしたメモリアクセス要求をリクエストポート11に差し戻し(S3)、メモリアクセス要求を滞留させる。このメモリアクセス要求は次の機会までキャッシュパイプラインへの投入が抑止される。
さらに、ムーブインバッファ制御ユニットのインデックスマッチ判定回路IDX_MCH_JDGは、メモリアクセス要求のインデックスアドレスADD_2に対するインデックスと同一インデックスのムーブイン要求がムーブインバッファMIB内に登録中か否かを判定する(S4,B,B1ステージ)。この判定は、後述するインデックスマッチ判定回路に示されるとおり、ムーブインバッファMIB内の全てのインデックスアドレスIDX_ADDそれぞれと、メモリアクセス要求のインデックスアドレスADD_2との一致(マッチ)をそれぞれ検出する。
ムーブインバッファ制御ユニットは、空きムーブインバッファが存在する場合、インデックスマッチ判定回路の判定結果IDX_MCHに係らず、ムーブインバッファ確保MIB_ENSを発行し、キャッシュミスしたメモリアクセス要求に空きムーブインバッファのいずれかのムーブインバッファを確保(ensure)する(S6,B7,B2ステージ)。ムーブインバッファ制御ユニットは、このムーブインバッファの確保処理で、空きムーブインバッファの有効ビットを有効「1」に変更し、メモリアクセス要求のインデックスアドレスIDX_ADD(ADD_2)をそのムーブインバッファに記憶する。
上記の投機的なムーブインバッファMIBの確保により、同一インデックスのムーブインバッファが登録中でない場合のムーブイン要求MI_RQを、B2ステージで発行することができ(S6,B2ステージ)、ムーブインバッファ制御回路のパイプライン回路の処理効率を高めることができる。
インデックスマッチ判定結果IDX_MCHが同一インデックスのムーブイン要求がいずれかのムーブインバッファMIBに登録中でないことを検出すると、ムーブインバッファ制御ユニットのMIBパイプライン制御回路MIB_PIPE_CNは、ムーブイン要求発行回路MI_RQ_ISSUにムーブイン要求MI_RQを発行させる(S6,B2ステージ)。
しかし、同一インデックスのムーブイン要求が登録中の場合、MIBパイプライン制御回路MIB_PIPE_CNは、リプレースWAY選択ユニットRPL_SEL内のMI_RQのWAY使用状態判定回路WAY_JDGと、全WAY使用判定回路ALL_WAY_JDGと、リプレースWAY選択回路RPL_WAY_SELの出力を待つ。
すなわち、図6に示されるとおり、MI_RQのWAY使用状態判定回路WAY_JDGは、インデックスマッチ判定回路IDX_MCH_JDGの各ムーブインバッファのインデックスアドレスIDX_ADDとのマッチ判定結果IDX_MCH0-nと、ムーブインバッファ内の全てのWAY情報MI_WAYとを入力し、同一インデックスのムーブイン要求によるWAY使用状態の判定(4つのWAYのMI_RQによる使用、不使用の判定)を実行する。
また、全WAY使用判定回路ALL_WAY_JDGは、WAY使用状態に基づいて、4つのWAY全てが使用中か否かの判定を行い、全WAY使用中判定ALL_WAYを出力する(S8,B3ステージ)。
MIBパイプライン制御回路MIB_PIPE_CNは、全WAY使用中判定ALL_WAYが全WAY使用中でなければ、ムーブイン要求発行リクエストMI_ISSU_RQを発行し、ムーブイン要求発行回路MI_RQ_ISSUにムーブイン要求MI_RQを発行させる(S11,B4ステージ)。更に、リプレースWAY選択回路RPL_WAY_SELがムーブイン要求MI_RQのデータを登録するWAY(リプレースWAY)を選択し(S10,B3ステージ)、選択したリプレースWAY(RPL_WAY)を出力し、ムーブインバッファにWAYを登録する(S12,B4ステージ)。
MIBパイプライン制御回路MIB_PIPE_CNは、全WAY使用中の場合、ムーブインバッファMIBに対して確保したムーブインバッファを解放するMIB解放要求MI_RLを発行する(S9)。この結果、キャシュミスしたメモリアクセス要求MA_RQは、ムーブインバッファを確保できず、リクエストポート11に差し戻され(S3)、メモリアクセス要求は滞留する。
上記の通り、メモリアクセス要求のインデックスと同一インデックスを有するムーブイン要求が登録中か否かのインデックスマッチ判定回路の判定処理と、そのインデックスマッチ判定結果に基づく、同一インデックスのムーブイン要求のWAY使用状態判定回路及び全WAY使用判定回路の判定処理は、いずれも所定の処理時間を要する。そのため、高周波数のクロックに同期して動作するパイプライン回路の動作は、複数クロックサイクルを要する。
そこで、本実施の形態のL1キャッシュは、最初に、Bサイクルでムーブインバッファに空きがあることが分かれば、次のB1サイクルで、投機的にムーブインバッファを確保(secure)する。これにより、B1サイクルで、同一インデックスのムーブイン要求がムーブインバッファに未登録であることが分かれば、次のB2サイクルでムーブイン要求MI_RQを発行できる。
また、同一インデックスのムーブイン要求がムーブインバッファに登録中であれば、L1キャッシュは、同一インデックスのムーブイン要求が全WAY使用中か否かの判定を待ち、全WAY使用中でないことが判明した後に、B4ステージでムーブイン要求を発行する。リプレースWAY選択回路により選択されたリプレースWAYのムーブインバッファへの登録は、ムーブイン要求発行後に行われる。
一方、全WAYが使用中の場合は、キャッシュミスしたメモリアクセス要求は、同一インデックスの全てのWAYで登録中のムーブイン要求と競合することになる。したがって、そのように競合する場合は、L1キャッシュは、投機的に確保(secure)したムーブインバッファMIBを解放する(MIB_RL)。
図5に示すとおり、やがて、L2キャッシュ制御部は、ムーブイン要求MI_RQを処理して、要求されたデータを取得する。そして、L2キャッシュ制御部は、L1キャッシュにデータ応答する(S13)。L1キャッシュのムーブインバッファ制御ユニットは、L2キャッシュ制御部からデータ応答を受信すると、応答されたデータを、ムーブイン要求MI_RQが登録されているムーブインバッファMIBのデータ領域DATAにストアする。さらに、L1キャッシュは、ムーブインバッファに登録されているインデックスアドレスIDX_ADDとリプレースWAYに基づいて、L1キャッシュメモリのデータメモリDATA_RAMのリプレース対象のブロックに、データ応答のデータを登録し、タグメモリTAG_RAMのリプレース対象ブロックに対応するインデックス及びWAYに、メモリアクセス要求のアドレスADD_1とデータ状態を登録する(S14)。キャッシュへの登録後、ムーブインバッファ制御ユニットは、確保していたムーブインバッファの有効ビットをインバリッド(無効)にして、ムーブインバッファを解放する(S15)。
なお、図5に示すとおり、キャッシュメモリのリプレースWAYに有効なデータが登録されている場合、L2キャッシュは、データ応答する前に、そのキャッシュメモリのインデックスのリプレースWAYのデータをL2キャッシュメモリに追い出すオーダEJ_ODを発行する。キャッシュメモリからデータの追い出しが完了した後、L2キャッシュからの応答データがリプレースWAYにキャッシュ登録される。最後に、L1キャッシュ10は、命令発行部3にデータ応答する。
[ムーブインバッファ制御ユニット内のMIB制御UNITとRPL_WAY選択UNITの回路]
図7は、ムーブインバッファ制御ユニット内のMIB空き判定回路の一例を示す図である。MIB空き判定回路は、全ムーブインバッファMIBの有効ビットの論理積(AND)をムーブインバッファ空き判定信号ALL_VAL_MIBとして出力するANDゲートである。ムーブインバッファが確保されると有効ビットは「1」に変更されるので、全ムーブインバッファが確保されて空きムーブインバッファが存在しない場合、MIB空き判定回路は、MIB空き判定信号(全有効MIB信号)ALL_VAL_MIBを「1」にする。つまり、MIB空き判定信号ALL_VAL_MIB=1の場合は空きMIBがないことを意味し、ALL_VAL_MIB=0の場合は空きMIBが存在することを意味する。有効ビットのAND論理を求めるだけであるので、MIB空き判定回路は、1クロックサイクル内でMIB空き判定信号ALL_VAL_MIBを出力する。
したがって、図6に示したとおり、MIBパイプライン制御回路MIB_PIPE_CNは、MIB空き判定信号ALL_VAL_MIB=0の場合は、空きムーブインバッファが存在するので、次のB1サイクルで、ムーブインバッファMIBにムーブインバッファ確保要求MIB_ENSを発行する。これにより、有効ビットがinvalidのムーブインバッファの有効ビットがvalidに変更され、メモリアクセス要求のインデックスアドレスIDX_ADDがそのムーブインバッファに書き込まれる。
図8は、ムーブインバッファ制御ユニット内のインデックスマッチ判定回路IDX_MCH_JDGとリプレースWAY選択ユニット内の同一インデックスのムーブイン要求のWAY使用状態判定回路WAY_JDGの回路例を示す図である。
インデックスマッチ判定回路IDX_MCH_JDGは、n+1個のインデックスマッチ判定回路IDX_MCH0-nと、その出力の論理和を出力する論理OR回路OR0とを有する。n+1個のインデックスマッチ判定回路IDX_MCH0-nは、キャッシュミスしたメモリアクセス要求MA_RQのインデックスアドレスADD_2と、ムーブインバッファMIB内のすべてのインデックスアドレスIDX_ADDそれぞれとの一致(マッチ)をそれぞれ判定する。論理OR回路OR0は、インデックスマッチ判定回路の出力IDX_MCH_JDG0-n(一致で「1」不一致で「0」)の論理和であるインデックスマッチ(一致)出力IDX_MCHを出力する。ムーブインバッファ制御ユニットMIB_CNは、このインデックスマッチ判定回路IDX_MCH_JDGのインデックスマッチ出力IDX_MCHにより、キャッシュミスしたメモリアクセス要求のインデックスアドレスADD_2と同一インデックスのムーブイン要求MI_RQがムーブインバッファMIB内に登録中か否かの判定(図4のS4)を行う。
図9は、インデックスマッチ判定回路IDX_MCH_JDGのより詳細な回路の一例を示す図である。図中、ムーブインバッファMIB_0についてインデックスマッチ判定を行うインデックスマッチ判定回路IDX_MCH0の詳細な構成が示される。インデックスマッチ判定回路IDX_MCH0は、ムーブインバッファMIB_0のインデックスアドレスIDX_ADDと、キャッシュミスしたメモリアクセス要求MA_RQのインデックスアドレスIDX_ADD(ADD_2)との各ビットの一致を判定するフルビットマッチ回路50と、フルビットマッチ回路50の出力とムーブインバッファMIB_0の有効ビットとの論理積を出力する論理積ゲート52とを有する。
この回路により、ムーブイン要求が登録されているムーブインバッファのインデックスアドレスIDX_ADDとメモリアクセス要求MA_RQのインデックスアドレスIDX_ADDとが一致するか否かが判定される。フルビットマッチ回路50は、例えば、2つの入力の対応するビットの排他的論理和(EOR)を出力するビット数分のEOR回路と、さらに、そのEOR回路の出力の論理積を出力するAND回路で構成される。したがって、フルビットマッチ回路50の処理時間が相対的に長くなり、インデックスマッチ判定回路の判定結果が出力されるのに、図6の例では、2クロックサイクルを要している。
[リプレースWAY選択ユニット内のWAY使用状態判定回路WAY_JDG、全WAY使用判定回路ALL_WAY_JDG、リプレースWAY選択回路RPL_WAY_SEL]
図8のリプレースWAY選択ユニットRPL_SEL内のWAY使用状態判定回路WAY_JDGは、全ムーブインバッファMIBに登録中のムーブイン要求MI_RQのWAY(MI_WAY)をそれぞれデコードするn+1個のデコーダDECと、各インデックスマッチ判定回路IDX_MCH0-nの出力と各デコーダDECの出力それぞれの論理積を出力するAND回路AND0-nとを有する。
デコーダDECは、4つのWAYのWAY番号(二進数で00-11)をデコードして、4ビットのデコード信号を出力する。すなわち、デコーダDECは、リプレースWAY番号が「10」の場合に3番目がリプレースWAYであることを示すコード[0100]に変換する。したがって、4ビットのコードの「1」の位置がリプレースWAYの位置であることを示す。
次に、AND回路AND0-nは、各インデックスマッチ判定回路の判定出力IDX_MCH_JDG0-nが一致「1」であればデコーダDECの4ビット出力をそのまま出力し、不一致「0」であれば4ビット全て0のコード[0000]を出力する。
そして、WAY使用状態判定回路WAY_JDGは、1+n個のAND回路の4ビット出力それぞれの論理和を出力する論理OR回路WAY0-WAY3を有する。各論理OR回路WAY#は、AND回路の4ビット出力の対応するビットをn+1個入力し、それぞれの論理和であるWAY使用状態判定信号WAY_JDG_0−WAY_JDG_3を出力する。WAY使用状態判定信号WAY_JDG_0-WAY_JDG_3が「0」であれば未使用状態、「1」であれば使用状態であることを意味する。
図10は、リプレースWAY選択ユニット内の全WAY使用判定回路ALL_WAY_JDGと、リプレースWAY選択回路RPL_WAY_SELの回路例を示す図である。
全WAY使用判定回路ALL_WAY_JDGは、図8のWAY使用状態判定回路WAY_JDGの4つの出力である、WAY使用状態判定信号WAY_JDG_0-WAY_JDG_3の論理積を全WAY使用判定信号ALL_WAYとして出力する論理積回路AND_10である。WAY使用状態判定回路WAY_JDGの4つの出力、WAY使用状態判定信号WAY_JDG_0-WAY_JDG_3が全て使用中「1」であれば、全WAY使用判定信号ALL_WAYは「1」となり、登録中のムーブイン要求が全WAYを使用中であることを示す判定結果が出力される。
リプレースWAY選択回路RPL_WAY_SELは、WAY使用状態判定回路WAY_JDGの4つの出力、WAY使用状態判定信号WAY_JDG_0-WAY_JDG_3と、LRU情報LRU_INFと、ムーブイン要求のインデックスに対応するタグメモリの4つのWAYの有効ビットValidと、全WAY使用判定信号ALL_WAYとを入力し、所定の論理演算により、リプレースWAYの番号RPL_WAYを出力する。
図11は、リプレースWAY選択ユニットに関する動作を示すフローチャート図である。リプレースWAY選択ユニットRPL_SELは、LRU回路からLRU情報LRU_INFを入力し、タグメモリTAG_RAMからWAYの有効ビットを入力する(S20)。LRU回路は、各インデックスにおける4つのWAYのアクセス履歴に基づいて最も古くアクセスされたWAY番号をLRU情報として出力する。また、タグメモリは、4つのWAYそれぞれにキャッシュ登録されているか否かを有効ビットを有する。また、リプレースWAY選択ユニットは、ムーブインバッファから同一インデックスのムーブイン要求のWAY情報MI_WAYを入力する(S21)。
そして、全WAY使用判定回路ALL_WAY_JDGによる全WAY使用信号ALL_WAYが「1」の場合、同一インデックスのムーブイン要求が全WAYを使用中であり新たにムーブイン要求を発行できない。したがって、ムーブインバッファパイプライン制御回路がムーブインバッファ解放要求MIB_RLを発行し、確保されているムーブインバッファを解放する(S23)。
全WAY使用信号ALL_WAYが「0」で全WAYが使用中でない場合、リプレースWAY選択回路RPL_WAY_SELは、LRU情報LRU_INF、WAY使用状態判定信号WAY_JDG_0-3(W0-W3)、有効ビットValidから、新たに発行されるムーブイン要求が使用するWAY(リプレースWAY)を選択する(S24)。そして、リプレースWAY選択ユニットは、選択したリプレースWAYをムーブイン要求を登録するムーブインバッファMIBのWAYに登録し、L2キャッシュにリプレースWAY情報RPL_WAYを通知する(S25)。
[リプレースWAY選択ユニット内のリプレースWAY選択回路の真理値表]
図12は、リプレースWAY選択回路の真理値表を示す図である。リプレースWAY選択ユニットRPL_SEL内のリプレースWAY選択回路RPL_WAY_SELは、前述のとおり、LRU情報LRU_INF、WAY使用状態判定信号WAY_JDG_0-3(W0-W3)、有効ビットValidを入力する。
そして、リプレースWAY選択回路は、第1に、L1キャッシュのTAGメモリの同一インデックスに無効なWAYがあり(有効ビットValid=0)、ムーブインバッファを確保中のムーブイン要求が使用しないWAY(WAY使用状態判定信号WAY_JDG_0-3=0)の場合、図中のケース1に示される真理値表に基づいてリプレースWAY(RPL_WAY)を選択する。
ケース1には、4つのWAY(W0,W1,W2,W3)について、TAGメモリの同一のインデックスで無効のWAYであり、且つムーブインバッファを確保中のムーブイン要求が使用しない獲得していないWAYという2つの条件を満たすWAYの組み合わせ(パターン1−1〜1−4)が示され、それぞれのパターンに対するリプレースWAY(RPL_WAY)が示される。
ケース1の真理値表に基づき、リプレースWAY選択回路は、2つの条件が満たされるWAYのうちいずれかの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キャッシュに追い出すための追い出しオーダを実行する必要がない。したがって、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に対して追い出しオーダを実行する必要がある。そこで、ケース2では、リプレースWAY選択回路は、ムーブインバッファに登録中の同一インデックスのムーブイン要求が使用するWAY以外のWAY(ムーブインバッファを確保中のWAY以外のWAY)の中から、LRU情報に基づき最もアクセスが古いWAYをリプレースWAYに選択する。ムーブインバッファに登録中の同一インデックスのムーブイン要求が使用するWAY(ムーブインバッファを確保中のWAY)は、WAY使用状態判定信号WAY_JDG_0-3(W0-W3)が「1」の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使用状態判定信号WAY_JDG_0-3(W0-W3)が「1」と同じである。したがって、ムーブインバッファを確保していないWAYは「0」で示される。
パターン2−1〜2−11は、ムーブインバッファを確保していないWAY「0」が複数個(3個または2個)あるケースである。この場合、リプレースWAY選択回路は、それぞれのLRU真理値表[1]〜[11]に示されるとおり、ムーブインバッファ未確保WAYのうち最もアクセスが古いWAY(LRUのWAY)をリプレースWAY(RPL_WAY)に選択する。一方、パターン2−12〜2−15は、ムーブインバッファ未確保WAYは1個しかないので、リプレースWAY選択回路は、LRU情報にかかわらず、ムーブインバッファ未確保WAYをリプレースWAYに選択する。
パターン2−16は、4つのWAY全てがムーブインバッファ確保中であり、この場合、全WAY使用判定回路ALL_WAY_JDGが全WAY使用信号ALL_WAYを出力する。
[ムーブインバッファの制御例]
図13は、本実施の形態におけるL1キャッシュのムーブインバッファ制御ユニットによるムーブインバッファ制御を示すタイミングチャート図である。図13の前提として、全ての命令1−11のインデックスアドレスADD_2はAまたはBであり、WAY数は4、L1キャッシュのTAGメモリには同一のインデックスにおいて無効のWAYは存在しておらず、ムーブインバッファMIBは10個である。
図13には、2サイクル毎にL1キャッシュに投入される命令1−9と、その後4サイクル毎にL1キャッシュに投入される命令10−11が示される。命令発行部が発行する命令はロード命令であり、それに対応してメモリアクセス要求がL1キャッシュに投入される。また、図13には、ムーブインバッファを確保した命令とWAY番号が示される。
最初に、インデックスAの命令1に対して、サイクル4でBステージに達し、MIB空き判定回路が空きムーブインバッファがあることを検出し、MIBパイプライン制御回路が、サイクル5のB1ステージでムーブインバッファ確保要求MIB_ENSを発行し、命令1に対して番号0のムーブインバッファMIBを確保する。さらに、同一インデックスAのムーブイン要求はムーブインバッファに未登録であるので、B1ステージでムーブイン要求MI_RQがL2キャッシュに発行されている。このムーブイン要求の発行タイミングはムーブインバッファ制御ユニットに投入されてから2サイクル後と早い。さらに、番号0のムーブインバッファMIBにWAY=0が登録される。
次のインデックスBの命令2に対して、サイクル6でBステージに達し、MIB空き判定回路が空きムーブインバッファがあることを検出し、MIBパイプライン制御回路が、サイクル7のB1ステージでムーブインバッファ確保要求MIB_ENSを発行し、命令2に対して番号1のムーブインバッファMIBを確保する。さらに、同一インデックスBのムーブイン要求はムーブインバッファに未登録であるので、B1ステージでムーブイン要求MI_RQがL2キャッシュに発行され、番号1のムーブインバッファMIBにWAY=0が登録される。命令2は、命令1のインデックスAとは異なるインデックスBであるので、命令2に対するムーブイン要求が使用するWAYを命令1と同じWAY=0としても問題はない。
以下同様にして、インデックスAの命令3,5,7は、番号2,4,6のムーブインバッファMIBを確保し、ムーブイン要求が使用するWAYはWAY=1,2,3となる。一方、インデックスBの命令4,6,8は、番号3,5,7のムーブインバッファMIBを確保し、ムーブイン要求が使用するWAYはWAY=1,2,3となる。上記のインデックスAの命令3,5,7は、既に同一のインデックスAのムーブイン要求がムーブインバッファに登録済みであるので、それぞれのB4サイクルでムーブイン要求MI_RQが発行されている。インデックスBの命令4,6,8も同様に、B4サイクルでムーブイン要求MI_RQが発行されている。
次のインデックスAの命令9は、一旦サイクル21のB1ステージでムーブインバッファ確保要求MIB_ENSにより番号8のムーブインバッファMIBを確保する。ただし、同じインデックスAのムーブイン要求が使用中のWAYが全WAYに達した為、サイクル23のB3ステージで全WAY使用信号ALL_WAY=1となり、次のサイクル24のB4ステージでムーブインバッファ解放要求MIB_RLにより、命令9が確保したムーブインバッファは解放される。
次のインデックスBの命令10も、命令9と同様にして、一旦ムーブインバッファを確保するが、その後解放される。
そして、インデックスAの命令11は、命令1が確保していた番号0のムーブインバッファが解放されたため、確保したムーブインバッファを解放されずにムーブイン要求が使用するWAYにWAY=0を選択されている。
図14は、連続する命令の処理を説明する図である。図14の水平方向はクロックサイクル0−8を、垂直方向は連続する命令1−5を示し、各セル内には各命令のパイプラインステージB〜B4が示される。図14により、図13で命令1〜8が2クロックサイクル毎に処理された理由を説明する。
命令1は、サイクル0で投入され、図6で説明したとおり、BステージでMIBの空き判定がされ、B1ステージでインデックスマッチ判定がされ、B2ステージでリプレース選択ユニットが、ムーブインバッファMIBからWAY情報MI_WAYを読み出し、B3ステージでリプレースWAY(RPL_WAY)を選択しムーブインバッファに登録される。したがって、ムーブインバッファは、B4ステージ以降に、B3で登録したリプレースWAY情報RPL_WAYが参照可能になる。
命令2は、命令1の投入に続いてサイクル1で投入される。そのため、命令2のムーブインバッファからWAY情報MI_WAYを読み出すB2サイクルでは、命令1のリプレースWAY(RPL_WAY)のムーブインバッファへの登録は完了していない。そのため、命令2のB2ステージでムーブインバッファから読み出されるWAY情報MI_WAYには、命令1のリプレースWAYの登録が反映されていない。
そこで、ムーブインバッファ制御ユニットは、命令2のB2ステージが命令1のB3ステージにあることを理由に、命令2をアボートしてリクエストポートに差し戻し滞留させる。これが、図13で命令1〜9が2クロックサイクル毎に表示されている理由である。図13において、先行する命令の1クロックサイクル後に投入された命令は、上記のとおりアボートされ滞留されるのである。
上記の通り、本実施の形態によれば、キャッシュミスが発生すると、ムーブインバッファ制御ユニットが、Bステージで空きムーブインバッファが存在していれば、B1ステージでキャッシュミスしたメモリアクセス要求に投機的にムーブインバッファを確保する。そして、同一インデックスのムーブイン要求がムーブインバッファに登録中でなければ、B2ステージでムーブイン要求を発行する。これにより、同一のインデックスのムーブイン要求が登録中でない場合、短サイクルでムーブイン要求を発行できる。
一方、同一インデックスのムーブイン要求がムーブインバッファに登録中であれば、同一インデックスのムーブイン要求が全てのWAYを使用中であるか否かの判定を待って、全てのWAYを使用中でなければ、B4ステージでムーブイン要求を発行する。ムーブイン要求が使用するWAYの選択がその後行われると、確保したムーブインバッファにその選択したWAY(リプレースWAY)を登録する。
本実施の形態によれば、L1キャッシュミスしたメモリアクセス要求と同一インデックスのムーブイン要求がムーブインバッファに登録中であっても、同一インデックスのムーブイン要求が全てのWAYを使用中でなければ、未使用のWAYを使用するムーブイン要求をムーブインバッファに登録し、L2キャッシュに発行する。これにより、同時期に発行できるムーブイン要求の数を増やし、ムーブイン要求の処理を効率的に行うことができる。
さらに、登録中のムーブイン要求と異なるインデックスのメモリアクセス要求に対しては、ムーブインバッファ制御ユニットへの投入後2クロック後のB2ステージでムーブイン要求を発行する。一方、登録中のムーブイン要求と同一のインデックスのメモリアクセス要求は、B4ステージでムーブイン要求を発行する。これにより、パイプラインステージを制御するクロック周波数を高くすることができる。前者のムーブイン要求の発行タイミングを早めることができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
メモリアクセス要求を発行するメモリアクセス要求発行部と、
タグメモリとデータメモリを有し、前記タグメモリとデータメモリ内の前記メモリアクセス要求のインデックスと一致するブロックにデータの状態とデータが登録されるキャッシュメモリと、前記メモリアクセス要求がキャッシュミスした場合に前記メモリアクセス要求のデータを要求するムーブイン要求を発行するムーブインバッファ制御ユニットと、前記ムーブイン要求の情報が登録される複数のムーブインバッファとを有するキャッシュとを有し、
前記ムーブインバッファ制御ユニットは、前記キャッシュミスしたメモリアクセス要求の入力に応答して、
(a)前記複数のムーブインバッファに空きムーブインバッファがあることを検出すると、前記メモリアクセス要求のためにムーブインバッファを確保し、
(b)前記メモリアクセス要求と同じインデックスである同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれにも登録中でないことを検出すると、前記ムーブインバッファを確保したメモリアクセス要求のムーブイン要求を発行し、
(c)前記同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれかに登録中であることを検出し、更に、前記複数のムーブインバッファのいずれかに登録中の前記同一インデックスを有するムーブイン要求がリプレースWAYとして全てのWAYを使用中でないことを検出すると、前記ムーブインバッファを確保したメモリアクセス要求のムーブイン要求を発行し、
(d)前記全てのWAYを使用中であることを検出すると、前記確保したムーブインバッファを解放し、前記ムーブイン要求の発行を抑止する、演算処理装置。
(付記2)
前記ムーブインバッファ制御ユニットは、前記入力されたキャッシュミスしたメモリアクセス要求をクロックに同期して処理するパイプライン回路を有し、前記(a)、(b)、(c)、(d)を順次実行する、付記1に記載の演算処理装置。
(付記3)
前記複数のムーブインバッファのそれぞれには、前記ムーブイン要求の情報として、有効ビットと、前記メモリアクセス要求のインデックスと、前記ムーブイン要求に応答して返信されるデータ応答のデータを登録する前記キャッシュメモリ内のWAYと、前記データ応答のデータが記憶される、付記2に記載の演算処理装置。
(付記4)
前記ムーブインバッファ制御ユニットは、前記複数のムーブインバッファ内に前記有効ビットが無効状態である前記空きムーブインバッファがあるか否かを判定する空き判定回路を有し、
前記空き判定回路が前記空きムーブインバッファを検出するとき、前記ムーブインバッファ制御ユニットは、前記空きムーブインバッファの前記有効ビットを有効にして前記メモリアクセス要求のためにムーブインバッファを確保し、さらに、確保したムーブインバッファに前記メモリアクセス要求のインデックスを登録する、付記3に記載の演算処理装置。
(付記5)
前記ムーブインバッファ制御ユニットは、前記同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれかに登録中か否かを判定するインデックスマッチ回路を有し、
前記インデックスマッチ回路が、前記同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれにも登録中でないことを検出すると、前記ムーブインバッファを確保したメモリアクセス要求のムーブイン要求を発行する、付記3に記載の演算処理装置。
(付記6)
前記ムーブインバッファ制御ユニットは、前記複数のムーブインバッファのいずれかに登録中の前記同一インデックスを有するムーブイン要求がリプレースWAYとして全WAYを使用中か否か判定し、更に全WAYを使用中でない場合未使用のWAYを検出するリプレースWAY検出回路を有し、
前記リプレースWAY検出回路が、前記全WAYを使用中でないことを検出すると、前記ムーブインバッファ制御ユニットは、前記ムーブインバッファを確保したメモリアクセス要求のムーブイン要求を発行し、前記未使用のWAYを前記確保したムーブインバッファに登録し、
前記リプレースWAY検出回路が、前記全WAYを使用中であることを検出すると、前記ムーブインバッファ制御ユニットは、前記確保したムーブインバッファを解放する、付記3に記載の演算処理装置。
(付記7)
前記ムーブインバッファ制御ユニットは、前記複数のムーブインバッファに空きムーブインバッファがあることを検出すると、前記メモリアクセス要求のためにムーブインバッファを確保し、前記メモリアクセス要求と同じインデックスである同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれかに登録中であるか否かに係らず、前記メモリアクセス要求のためにムーブインバッファを確保する、付記1に記載の演算処理装置。
(付記8)
メモリアクセス要求を発行するメモリアクセス要求発行部と、
タグメモリとデータメモリを有し、前記タグメモリとデータメモリ内の前記メモリアクセス要求のインデックスと一致するブロックにデータの状態とデータが登録されるキャッシュメモリと、前記メモリアクセス要求がキャッシュミスした場合に前記メモリアクセス要求のデータを要求するムーブイン要求を発行するムーブインバッファ制御ユニットと、前記ムーブイン要求の情報が登録される複数のムーブインバッファとを有するキャッシュとを有する演算処理装置の制御方法であって、
前記ムーブインバッファ制御ユニットは、前記キャッシュミスしたメモリアクセス要求の入力に応答して、
(a)前記複数のムーブインバッファに空きムーブインバッファがあることを検出すると、前記メモリアクセス要求のためにムーブインバッファを確保し、
(b)前記メモリアクセス要求と同じインデックスである同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれにも登録中でないことを検出すると、前記ムーブインバッファを確保したメモリアクセス要求のムーブイン要求を発行し、
(c)前記同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれかに登録中であることを検出し、更に、前記複数のムーブインバッファのいずれかに登録中の前記同一インデックスを有するムーブイン要求がリプレースWAYとして全てのWAYを使用中でないことを検出すると、前記ムーブインバッファを確保したメモリアクセス要求のムーブイン要求を発行し、
(d)前記全てのWAYを使用中であることを検出すると、前記確保したムーブインバッファを解放し、前記ムーブイン要求の発行を抑止する、処理を有する演算処理装置の制御方法。
10:L1キャッシュ
20:L2キャッシュ
3:命令発行部
11:リクエストポート
TLB:トランスレーション・ルックアサイド・バッファ
DATA_RAM, TAG_RAM:キャッシュメモリ
DATA RAM:データメモリ
TAG RAM:タグメモリ
LRU:LRU回路
MIB_CN:ムーブインバッファ制御ユニット
MIB:ムーブインバッファ
VALID:有効ビット
IDX_ADD:インデックスアドレス
DATA:データ
MA_RQ:メモリアクセス要求
MI_RQ:ムーブイン要求
IDX_MCH_JDG:インデックス判定回路
RPL_SEL:リプレースWAY選択ユニット
RPL_WAY_SEL:リプレースWAY選択回路
RPL_WAY:リプレースWAY
DATA_RSP:データ応答
EJ_OD:追い出しオーダ
WAY:ウエイ

Claims (6)

  1. メモリアクセス要求を発行するメモリアクセス要求発行部と、
    タグメモリとデータメモリを有し、前記タグメモリとデータメモリ内の前記メモリアクセス要求のインデックスと一致するブロックにデータの状態とデータが登録されるキャッシュメモリと、前記メモリアクセス要求がキャッシュミスした場合に前記メモリアクセス要求のデータを要求するムーブイン要求を発行するムーブインバッファ制御ユニットと、前記ムーブイン要求の情報が登録される複数のムーブインバッファとを有するキャッシュとを有し、
    前記ムーブインバッファ制御ユニットは、前記キャッシュミスしたメモリアクセス要求の入力に応答して、
    (a)前記複数のムーブインバッファに空きムーブインバッファがあることを検出すると、前記メモリアクセス要求のためにムーブインバッファを確保し、
    (b)前記メモリアクセス要求と同じインデックスである同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれにも登録中でないことを検出すると、前記ムーブインバッファを確保したメモリアクセス要求のムーブイン要求を発行し、
    (c)前記同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれかに登録中であることを検出し、更に、前記複数のムーブインバッファのいずれかに登録中の前記同一インデックスを有するムーブイン要求がリプレースWAYとして全てのWAYを使用中でないことを検出すると、前記ムーブインバッファを確保したメモリアクセス要求のムーブイン要求を発行し、
    (d)前記全てのWAYを使用中であることを検出すると、前記確保したムーブインバッファを解放し、前記ムーブイン要求の発行を抑止し、
    前記ムーブインバッファ制御ユニットは、前記入力されたキャッシュミスしたメモリアクセス要求をクロックに同期して処理する複数のステージを含むパイプライン回路を有し、前記(b)の前記メモリアクセス要求と同じインデックスである同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれにも登録中でないことを検出するステージの後に、前記(c)の前記複数のムーブインバッファのいずれかに登録中の前記同一インデックスを有するムーブイン要求がリプレースWAYとして全てのWAYを使用中でないことを検出するステージを有する、演算処理装置。
  2. 前記複数のムーブインバッファのそれぞれには、前記ムーブイン要求の情報として、有効ビットと、前記メモリアクセス要求のインデックスと、前記ムーブイン要求に応答して返信されるデータ応答のデータを登録する前記キャッシュメモリ内のWAYと、前記データ応答のデータが記憶される、請求項に記載の演算処理装置。
  3. 前記ムーブインバッファ制御ユニットは、前記複数のムーブインバッファ内に前記有効ビットが無効状態である前記空きムーブインバッファがあるか否かを判定する空き判定回路を有し、
    前記空き判定回路が前記空きムーブインバッファを検出するとき、前記ムーブインバッファ制御ユニットは、前記空きムーブインバッファの前記有効ビットを有効にして前記メモリアクセス要求のためにムーブインバッファを確保し、さらに、確保したムーブインバッファに前記メモリアクセス要求のインデックスを登録する、請求項に記載の演算処理装置。
  4. 前記ムーブインバッファ制御ユニットは、前記同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれかに登録中か否かを判定するインデックスマッチ回路を有し、
    前記インデックスマッチ回路が、前記同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれにも登録中でないことを検出すると、前記ムーブインバッファを確保したメモリアクセス要求のムーブイン要求を発行する、請求項に記載の演算処理装置。
  5. 前記ムーブインバッファ制御ユニットは、前記複数のムーブインバッファのいずれかに登録中の前記同一インデックスを有するムーブイン要求がリプレースWAYとして全WAYを使用中か否か判定し、更に全WAYを使用中でない場合未使用のWAYを検出するリプレースWAY検出回路を有し、
    前記リプレースWAY検出回路が、前記全WAYを使用中でないことを検出すると、前記ムーブインバッファ制御ユニットは、前記ムーブインバッファを確保したメモリアクセス要求のムーブイン要求を発行し、前記未使用のWAYを前記確保したムーブインバッファに登録し、
    前記リプレースWAY検出回路が、前記全WAYを使用中であることを検出すると、前記ムーブインバッファ制御ユニットは、前記確保したムーブインバッファを解放する、請求項に記載の演算処理装置。
  6. メモリアクセス要求を発行するメモリアクセス要求発行部と、
    タグメモリとデータメモリを有し、前記タグメモリとデータメモリ内の前記メモリアクセス要求のインデックスと一致するブロックにデータの状態とデータが登録されるキャッシュメモリと、前記メモリアクセス要求がキャッシュミスした場合に前記メモリアクセス要求のデータを要求するムーブイン要求を発行するムーブインバッファ制御ユニットと、前記ムーブイン要求の情報が登録される複数のムーブインバッファとを有するキャッシュとを有する演算処理装置の制御方法であって、
    前記ムーブインバッファ制御ユニットは、前記キャッシュミスしたメモリアクセス要求の入力に応答して、
    (a)前記複数のムーブインバッファに空きムーブインバッファがあることを検出すると、前記メモリアクセス要求のためにムーブインバッファを確保し、
    (b)前記メモリアクセス要求と同じインデックスである同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれにも登録中でないことを検出すると、前記ムーブインバッファを確保したメモリアクセス要求のムーブイン要求を発行し、
    (c)前記同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれかに登録中であることを検出し、更に、前記複数のムーブインバッファのいずれかに登録中の前記同一インデックスを有するムーブイン要求がリプレースWAYとして全てのWAYを使用中でないことを検出すると、前記ムーブインバッファを確保したメモリアクセス要求のムーブイン要求を発行し、
    (d)前記全てのWAYを使用中であることを検出すると、前記確保したムーブインバッファを解放し、前記ムーブイン要求の発行を抑止し、
    前記ムーブインバッファ制御ユニットは、前記入力されたキャッシュミスしたメモリアクセス要求をクロックに同期して処理する複数のステージを含むパイプライン回路を有し、前記(b)の前記メモリアクセス要求と同じインデックスである同一インデックスを有するムーブイン要求が前記複数のムーブインバッファのいずれにも登録中でないことを検出するステージの処理後に、前記(c)の前記複数のムーブインバッファのいずれかに登録中の前記同一インデックスを有するムーブイン要求がリプレースWAYとして全てのWAYを使用中でないことを検出するステージの処理を行う、演算処理装置の制御方法。
JP2017175642A 2017-09-13 2017-09-13 演算処理装置及び演算処理装置の制御方法 Active JP6947974B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017175642A JP6947974B2 (ja) 2017-09-13 2017-09-13 演算処理装置及び演算処理装置の制御方法
US16/110,578 US10482018B2 (en) 2017-09-13 2018-08-23 Arithmetic processing unit and method for controlling arithmetic processing unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017175642A JP6947974B2 (ja) 2017-09-13 2017-09-13 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2019053390A JP2019053390A (ja) 2019-04-04
JP6947974B2 true JP6947974B2 (ja) 2021-10-13

Family

ID=65631640

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017175642A Active JP6947974B2 (ja) 2017-09-13 2017-09-13 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US10482018B2 (ja)
JP (1) JP6947974B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023079640A (ja) * 2021-11-29 2023-06-08 富士通株式会社 演算処理装置および演算処理方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 キャッシュメモリ装置
US6694408B1 (en) * 2000-05-01 2004-02-17 Javier Villagomez Scalable replacement method and system in a cache memory
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 富士通株式会社 演算処理装置、演算処理装置の制御方法
WO2007088591A1 (ja) 2006-01-31 2007-08-09 Fujitsu Limited メモリアクセス制御装置およびメモリアクセス制御方法
JP4595029B2 (ja) 2007-06-20 2010-12-08 富士通株式会社 キャッシュメモリ装置、演算処理装置及びその制御方法
EP2690561A4 (en) 2011-03-22 2014-12-31 Fujitsu Ltd PROCESSING UNIT, INFORMATION PROCESSING DEVICE, AND PROCESSING UNIT CONTROL METHOD
JP6179369B2 (ja) * 2013-11-22 2017-08-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP6770230B2 (ja) 2016-09-30 2020-10-14 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
US20190079870A1 (en) 2019-03-14
JP2019053390A (ja) 2019-04-04
US10482018B2 (en) 2019-11-19

Similar Documents

Publication Publication Date Title
US9921972B2 (en) Method and apparatus for implementing a heterogeneous memory subsystem
TWI397813B (zh) 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統
JP5482801B2 (ja) 演算処理装置
US10423528B2 (en) Operation processing device, information processing apparatus, and control method for operation processing device
JP6770230B2 (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法
US10002076B2 (en) Shared cache protocol for parallel search and replacement
US10929308B2 (en) Performing maintenance operations
US20110072212A1 (en) Cache memory control apparatus and cache memory control method
WO1996041250A2 (en) System and method for processing multiple requests and out of order returns
US20100030966A1 (en) Cache memory and cache memory control apparatus
US20180074957A1 (en) Method and device for accessing a cache memory
KR102482516B1 (ko) 메모리 어드레스 변환
US10831673B2 (en) Memory address translation
US12099451B2 (en) Re-reference interval prediction (RRIP) with pseudo-LRU supplemental age information
US7761665B2 (en) Handling of cache accesses in a data processing apparatus
US10657070B2 (en) Apparatus and method for shared least recently used (LRU) policy between multiple cache levels
JP6947974B2 (ja) 演算処理装置及び演算処理装置の制御方法
US10866904B2 (en) Data storage for multiple data types
KR20230025864A (ko) 연관 캐시를 위한 직접 맵핑 모드
Jing et al. A 16-Port Data Cache for Chip Multi-Processor Architecture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200611

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210527

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210608

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210714

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210830

R150 Certificate of patent or registration of utility model

Ref document number: 6947974

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150