JP5328792B2 - プロセッサの非常にアソシエティビティの高いキャッシュメモリ用のセカンドチャンス置換機構 - Google Patents

プロセッサの非常にアソシエティビティの高いキャッシュメモリ用のセカンドチャンス置換機構 Download PDF

Info

Publication number
JP5328792B2
JP5328792B2 JP2010524027A JP2010524027A JP5328792B2 JP 5328792 B2 JP5328792 B2 JP 5328792B2 JP 2010524027 A JP2010524027 A JP 2010524027A JP 2010524027 A JP2010524027 A JP 2010524027A JP 5328792 B2 JP5328792 B2 JP 5328792B2
Authority
JP
Japan
Prior art keywords
storage location
block storage
eligible
block
recently accessed
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
JP2010524027A
Other languages
English (en)
Other versions
JP2010538390A5 (ja
JP2010538390A (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2010538390A publication Critical patent/JP2010538390A/ja
Publication of JP2010538390A5 publication Critical patent/JP2010538390A5/ja
Application granted granted Critical
Publication of JP5328792B2 publication Critical patent/JP5328792B2/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/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
    • G06F12/124Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU

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

本発明はマイクロプロセッサのキャッシュに関し、より詳細には、キャッシュのデータ置換機構に関する。
コンピュータシステムのメインメモリは、通常、速度よりも実装密度を重視して設計されているため、マイクロプロセッサの設計者は、マイクロプロセッサが直接メインメモリに頻繁にアクセスする必要がなくなるように、マイクロプロセッサの設計にキャッシュを追加してきた。キャッシュとは、メインメモリよりも高速なアクセスが可能な小容量のメモリである。キャッシュは、一般に、メインのシステムメモリに使用されるメモリ(通常は、ダイナミックランダムアクセスメモリ(DRAM)またはシンクロナスダイナミックランダムアクセスメモリ(SDRAM))よりも高速なアクセス時間と帯域幅を有する、スタティックランダムアクセスメモリ(SRAM)などの高速のメモリセルから構成されている。
最新のマイクロプロセッサは、一般に、オンチップのキャッシュメモリを有する。多くの場合、マイクロプロセッサはオンチップの階層的なキャッシュ構造を有し、これには、1次(L1)キャッシュメモリ、2次(L2)キャッシュメモリ、場合によっては3次(L3)キャッシュメモリが含まれることもある。代表的なキャッシュ階層は、最も頻繁に使用されるキャッシュラインを記憶するために使用されうる小容量で高速なL1キャッシュを使用しうる。L2キャッシュは、頻繁にアクセスされるが、L1に入りきらないキャッシュラインを記憶するための、容量が大きく、おそらく低速のキャッシュなどである。L3キャッシュは、L2キャッシュよりも更に容量が大きく、頻繁にアクセスされるが、L2キャッシュに入りきらないキャッシュラインを記憶するために使用されうる。このようなキャッシュ階層を有することにより、プロセッサコアが行うメモリアクセスに関連するレーテンシを低下させることで、プロセッサのパフォーマンスを向上できる。
代表的なキャッシュ設計では、所定のデータブロックが、一般に「セットアソシエティブキャッシュ」と呼ばれる、少数の物理位置の1つのみに存在していることがある。セット当たりの最大ブロック数が、キャッシュのアソシエティビティである。あるセットがフルになると、新しいデータがそのセットに送られるたびに、既存のエントリを新しいデータで上書きまたは置換する必要がある。何らかのアルゴリズムを使用して、置換時に上書きする既存のエントリを決定する必要がある。置換アルゴリズムの一種に、最長未使用(LRU)アルゴリズムがある。LRUアルゴリズムでは、各セット内の全エントリの時間順序を追跡し、この名前が示すように未使用の時間が最も長いエントリを置換する。このアルゴリズムはアソシエティビティが低い場合には適切に機能する。しかし、アソシエティビティが高くなると、LRU位置のトラッキングが複雑となり、順序情報のために膨大な記憶域が必要となる。
プロセッサキャッシュメモリシステムの非常にアソシエティビティの高いキャッシュメモリのためのセカンドチャンス置換機構の各種の実施形態が開示される。一実施形態では、前記キャッシュメモリシステムは、ブロック置換コントローラに結合されたキャッシュメモリを有する。前記キャッシュメモリは、それぞれが複数のブロック記憶位置を有する複数のセットを有してもよい。前記ブロック置換コントローラは、前記キャッシュメモリの各セットに対応する個別カウント値を保持するように構成されうる。所定のセットに対応するカウント値は、前記所定のセット内の、置換データを記憶するための適格なブロック記憶位置またはブロック記憶位置群をポイントしている。前記ブロック置換コントローラは、前記ブロック記憶位置の少なくとも一部のそれぞれに対して、その対応するブロック記憶位置が最近アクセスされたかどうかを示す関連する最近アクセスビットを保持しうる。また、前記ブロック置換コントローラは、前記適格なブロック記憶位置の1つに対応する特定の最近アクセスビットが、前記適格なブロック記憶位置が最近アクセスされたことを示しているかどうかに応じて、前記個別カウント値がポイントしている適格なブロック記憶位置の1つに前記置換データを記憶しうる。
特定の一実施形態では、前記ブロック置換コントローラは、前記個別カウント値がポイントしている前記適格なブロック記憶位置に対応する前記特定の最近アクセスビットが、この適格なブロック記憶位置が最近アクセスされていないことを示す場合に、この適格なブロック記憶位置に前記置換データを記憶しうる。
別の特定の実施形態では、前記ブロック置換コントローラは、前記個別カウント値がポイントしている前記適格なブロック記憶位置に対応する前記特定の最近アクセスビットが、この適格なブロック記憶位置が最近アクセスされたことを示す場合に、この適格なブロック記憶位置に前記置換データが記憶されるのを阻止しうる。
マルチコア処理ノードを有するコンピュータシステムの一実施形態のブロック図。 図1のキャッシュメモリの実施形態のより詳細な態様を示すブロック図。 図2のキャッシュメモリの一実施形態の動作を示すフローチャート。 図1のキャッシュメモリの別の実施形態のより詳細な態様を示すブロック図。 図4のキャッシュメモリの一実施形態の動作を示すフローチャート。
本発明は、さまざまに変形されたり代替形態を取りうるが、その特定の実施形態が、例として図面に図示され、かつ本明細書に詳細に記載される。しかし、図面およびその詳細な説明は、開示の形態に本発明を限定することを意図するものではなく、逆に、本発明が、添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれるすべての変形例、均等物および代替例を含むことを意図することが理解されるべきである。本願にわたり、「しうる」、「してもよい」との文言は、許容を示す意味(すなわち、可能性がある、可能であること)で用いられており、義務的な意味(すなわち必須)ではない点に留意されたい。
図1を参照すると、コンピュータシステム10の一実施形態のブロック図が示される。図に示した実施形態では、コンピュータシステム10は、メモリ14と、周辺機器13A〜13Bとに結合された処理ノード12を有する。ノード12は、ノードコントローラ20に結合されたプロセッサコア15A〜15Bを有し、ノードコントローラ20は、メモリコントローラ22、複数のHyperTransport(登録商標)(HT)インタフェース回路24A〜24C、および共有の3次(L3)キャッシュメモリ60に接続されている。HT回路24Cは周辺機器16Aに結合されており、周辺機器16Aはデイジーチェーン構成で(この実施形態では、HTインタフェースを使用して)周辺機器16Bに結合されている。ほかのHT回路24A〜Bも、別のHTインタフェース(図示せず)を介して、ほかの同様の処理ノード(図示せず)に接続されてもよい。メモリコントローラ22は、メモリ14に結合されている。一実施形態では、ノード12は、図1に示す回路を含む1つの集積回路チップでもよい。すなわち、ノード12は、チップマルチプロセッサ(CMP)でもよい。任意のレベルの集積化が使用されても、または別個のコンポーネントが使用されてもよい。処理ノード12が、説明を簡略にするために省略した他の各種回路を備えてもよい点に留意されたい。
各種実施形態では、ノードコントローラ20は、プロセッサコア15A,15Bを、相互に、ほかのノードに、およびメモリに相互接続するための各種の相互接続回路(図示せず)も備えうる。また、ノードコントローラ20は、ノードの最大動作周波数と最小動作周波数、ノードの最大電源電圧と最小電源電圧などの、各種のノード特性を選択および制御するための機能も有しうる。ノードコントローラ20は、一般に、通信種別、通信文(communication)内のアドレスなどに応じて、プロセッサコア15A〜15Bと、メモリコントローラ22と、HT回路24A〜24Cとの間の通信をルーティングするように構成されうる。一実施形態では、ノードコントローラ20は、受信した通信文をノードコントローラ20が書き込むシステム要求キュー(SRQ)(図示せず)を備えうる。ノードコントローラ20は、プロセッサコア15A〜15B、HT回路24A〜24C、およびメモリコントローラ22のうちの1つ以上の宛先にルーティングするために、SRQにある通信をスケジュールしうる。
一般に、プロセッサコア15A〜15Bは、ノードコントローラ20へのインタフェースを使用して、コンピュータシステム10の他の構成要素(例えば周辺機器13A〜13B、他のプロセッサコア(図示せず)、メモリコントローラ22など)と通信しうる。このインタフェースは、好ましい方式であればどのような方式で設計されてもよい。一部の実施形態では、このインタフェース用にキャッシュコヒーレントな通信が規定されてもよい。一実施形態では、ノードコントローラ20とプロセッサコア15A〜15B間のインタフェースにおける通信は、HTインタフェースで使用されるものと同様のパケット形式で行われうる。別の実施形態では、好適であれば、どのような通信を使用してもよい(例えばバスインタフェースでのトランザクション、異なる形式のパケットなど)。別の実施形態では、プロセッサコア15A〜15Bは、ノードコントローラ20とインタフェースを共有してもよい(例えば共有バスインタフェースなど)。一般に、プロセッサコア15A〜15Bからの通信には、(メモリロケーションまたはプロセッサコアの外部のレジスタを読み出すための)リードオペレーション、(メモリロケーションまたは外部レジスタに書き込むための)ライトオペレーション、(キャッシュコヒーレントな実施形態のための)プローブへの応答、割り込みの肯定応答、およびシステム管理メッセージなどの要求が含まれうる。
上で説明したように、メモリ14は、任意の適したメモリデバイスを有しうる。例えば、メモリ14は、1つ以上のランダムアクセスメモリ(RAM)を有し、これには、ダイナミックRAM(DRAM)に属するRAMBUS DRAM(RDRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレート(DDR)SDRAMなどがある。別の実施形態では、メモリ14が、スタティックRAMなどを使用して実装されてもよい。メモリ14は、プログラム命令を記憶可能な「計算機可読媒体」と呼ばれることがある。メモリコントローラ22は、メモリ14にインタフェースするための制御回路を有しうる。更に、メモリコントローラ22は、メモリ要求をキューイングするなどのための要求キューを備えていてもよい。
HT回路24A〜24Cは、HTリンクからパケットを受信し、HTリンクにパケットを送信するための各種のバッファと制御回路とを備えうる。HTインタフェースは、パケットを送信するための一方向リンクを有する。各HT回路24A〜24Cは、2本のこのようなリンク(送信用に1本、受信用に1本)に結合されうる。あるHTインタフェースは、(例えば処理ノード間では)キャッシュコヒーレントな方式で動作し、(例えば周辺機器16A〜16Bとの間では)非コヒーレントな方式で動作しうる。図に示した実施形態では、HT回路24A〜24Bは使用されておらず、HT回路24Cが非コヒーレントなリンクを介して周辺機器16A〜16Bに結合されている。
本実施形態は、ノード間、ならびにノードと周辺機器間の通信にHTインタフェースを使用するが、ほかの実施形態は、このいずれかの通信に任意の所望の1つ以上のインタフェースを使用してもよい点に留意されたい。例えば、ほかのパケットベースのインタフェースが使用されても、バスインタフェースが使用されても、各種の標準的な周辺機器インタフェース(例えば、周辺装置相互接続(PCI)、PCIエクスプレスなど)が使用されてもよい。
周辺機器13A〜13Bは、どのようなタイプの周辺機器でもよい。例えば、周辺機器13A〜13Bは、別のコンピュータシステムと通信するためのデバイス(例えば、ネットワークインターフェイスカード、コンピュータシステムのメイン回路基板に集積された、ネットワークインターフェイスカードと同様の回路、あるいはモデム)を有し、そのデバイスがその別のコンピュータシステムに結合されうる。更に、周辺機器13A〜13Bは、ビデオアクセラレータ、オーディオカード、ハードディスクドライブもしくはフロッピーディスクドライブまたはドライブコントローラ、SCSI(Small Computer Systems Interface)アダプタ、テレフォニーカード、サウンドカード、およびGPIBインタフェースカードまたはフィールドバスインタフェースカードなどの各種のデータ収集カードを含んでいてもよい。「周辺機器」との用語は、入出力(I/O)デバイスを含むことを意図している点に注意されたい。
一般に、プロセッサコア15A〜15Bは、所定の命令セットアーキテクチャに規定されている命令を実行するように設計された回路を有しうる。すなわち、プロセッサコア回路は、命令セットアーキテクチャに規定されている命令のフェッチ、デコード、実行、およびその結果のストアを行うように構成されうる。例えば、一実施形態では、プロセッサコア15A〜15Bは、x86アーキテクチャを実装しうる。プロセッサコア15A〜15Bは、スーパーパイプライン、スーパースカラーまたはその組み合わせを含む任意の所望の構成を有しうる。ほかの構成としては、スカラー、パイプライン処理、非パイプライン処理などがある。実施形態によって、アウトオブオーダーの投機的な実行が使用されても、インオーダーの実行が使用されてもよい。プロセッサコアは、上記の構造のいずれかと組み合わせて、1つ以上の命令または他の機能のためのマイクロコードを有してもよい。各種実施形態では、キャッシュ、変換ルックアサイドバッファ(TLB)などのほかの各種の設計機能を実装してもよい。したがって、図の実施形態では、プロセッサコア15Aは、2つのプロセッサコアによって共有されるL3キャッシュ60のほかに、L1キャッシュシステム16A、L2キャッシュシステム17AおよびTBL18Aを備える。同様に、プロセッサコア15Bは、L1キャッシュシステム16B、L2キャッシュシステム17B、およびTLB 18Bを備える。個々のL1キャッシュとL2キャッシュは、マイクロプロセッサで使用されるどのようなL1キャッシュおよびL2キャッシュを表わしてもよい。また、処理ノード12は、L3キャッシュサブシステム30の一部である共有L3キャッシュ60も備える。図に示した実施形態では、L3キャッシュサブシステム30は、キャッシュコントローラユニット21(ノードコントローラ20の一部として図示されている)と、L3キャッシュ60とを有する。キャッシュコントローラ21は、L3キャッシュ60宛の要求を制御するように構成されうる。
後で更に詳細に説明するように、キャッシュおよび/またはTLB構造の1つ以上は、置換コントローラが、データ記憶配列内のブロック記憶位置ごとに、最近アクセス/使用ビットを保持しうる置換機構を実装してもよい。また、置換コントローラが、各ブロック記憶位置を連続的にポイントしているカウント値を保持してもよい。適格な(eligible)ブロック記憶位置のそれぞれを調べて置換データを記憶すべきかどうかを決定する際に、最近アクセス/使用(RU)ビットが、対応するブロック記憶位置が最近アクセスされたかどうかを示しうる。このため、ブロック置換コントローラは、RUビットが、当該位置が最近アクセスされたことを示しているかどうかに基づいて、カウント値がポイントしているブロック記憶位置に置換データを記憶しうる。
また、図1に示したコンピュータシステム10の処理ノード12は1つであるが、別の実施形態では、実装される処理ノードの数はいくつであってもよい点に留意されたい。同様に、実施形態ごとに、ノード12などの処理ノードに含まれるプロセッサコアの数はいくつでもよい。コンピュータシステム10のさまざまな実施形態では、ノード12当たりのHTインタフェースの数、ノードに結合されている周辺機器16の数などが変わってもよい。
次に図2を参照すると、図1のキャッシュメモリシステムの実施形態のより詳細な態様を示すブロック図が示される。キャッシュメモリシステム200は、タグ制御部262、ブロック置換コントローラ266、最長未使用(LRU)記憶配列264、タグ記憶配列263、およびデータ記憶配列265(時に「キャッシュメモリ」とも呼ばれる)を有する。
タグ記憶配列263は、複数の位置のそれぞれに、データ記憶配列265内に記憶されているキャッシュラインデータの所定数のアドレスビット(すなわちタグ)を記憶するように構成されうる。一実施形態では、タグ制御部262は、タグ記憶配列263を検索して、要求されたキャッシュラインがデータ記憶配列265に存在するかどうかを判定するように構成されうる。例えば、タグ制御部262は、リード要求に関連する1つ以上のアドレスビットに一致するアドレスタグが、タグ記憶配列263内に存在するかどうかを判定しうる。タグ制御部262は、要求されたアドレスがみつかった場合には、キャッシュコントローラ21にヒットの指標を返し、タグ配列263で一致するものがみつからなかった場合には、ミスの指標を返しうる。
図に示した実施形態では、データ記憶配列265は、複数(例えば269)のブロック記憶位置を有する。図に示すように、データ記憶配列265は、0〜m−1のm行と、0〜n−1のn列とを有する。この実施形態では、データ記憶配列265は、アソシエティビティがnウェイのセットアソシエティブキャッシュメモリを実装している。ウェイは列によって表され、セットは行によって表される。例えば、キャッシュメモリが、16ウェイセットアソシエティブキャッシュである場合、nは16であり、各セットには、データブロックのための記憶域を提供することができる16ブロックの記憶位置が含まれる。通常、データブロックはキャッシュラインである。セットの数は、キャッシュメモリのサイズによって決まることがある。
LRU記憶配列264は、複数の記憶位置を有する。図に示した実施形態では、LRU記憶配列264は、データ記憶配列265の行と列に対応する行と列を有し、セットは行によって表される。ブロック置換コントローラ266は、データ記憶配列265のブロック記憶位置ごとに、LRU記憶配列264の「ru」で示す記憶位置に、最近アクセス/使用(RU)ビットを保持しうる。各RUビットは、データ記憶配列内の対応する位置が最近アクセスされたかどうかを示している。ここで使用する「アクセス/使用された」とは、データ記憶配列内のブロック記憶位置が、そのブロック記憶位置にあるデータに対するキャッシュ要求の結果、読み出し、書き込み、あるいはほかの理由でアクセスされる操作を指す。
また、ブロック置換コントローラ266は、RUビットのほかに、LRU記憶配列264の各行にカウント値も保持しうる。例えば、図2に示すように、各行にある参照符号C、C、C、Cは4ビットのカウント値を表す。カウント値は、16ウェイセットアソシエティブキャッシュを実装しうるデータ記憶配列265の対応する行内の個々のブロック記憶位置へのポインタである。このため、図に示すカウント値は4ビット値である。ウェイ数が変われば、カウント値のビット数が変わりうる。図に示した実施形態では、所定のセットに対応するカウント値は、LRU記憶配列264内の関連するRUビットへのポインタでもある。
また、一実施形態では、RUビットは、クリアされている場合、ブロック記憶位置が最近アクセスされていないことを示しうることが理解されよう。これは、すなわち、RUビットが「0」の論理値の場合である。同様に、RUビットは、セットされている場合、ブロック記憶位置が最近アクセスされたことを示しうる。これは、すなわち、RUビットが「1」の論理値の場合である。しかし、RUビットがセットされている(すなわち「1」の論理値の場合に)ブロック記憶位置が最近アクセスされていないことを示し、クリアされている(すなわち「0」の論理値の場合に)ブロック記憶位置が最近アクセスされたことを示すように、論理値が逆になってもよいことも同様に考察される。
このため、図3の説明に関連して下記に詳述するように、対応するRUビットによって、ブロック記憶位置が最近アクセスされていないことが示されるブロック記憶位置をカウント値がポイントしている場合、ブロック置換コントローラ266は、そのデータ記憶配列265内に置換データを記憶するように構成されうる。また、この実施形態で使用される「最近アクセスされた」とは、カウント値が、このブロック記憶位置をポイントした最後の時点以降に「アクセス/使用された」ことを指す。
この置換機構が、置換アルゴリズムを使用するどのようなタイプのキャッシュで使用されてもよい点に留意されたい。例えば、上で説明したキャッシュメモリシステム200は、L1キャッシュでも、L2キャッシュでも、L3キャッシュでもよい。また、プロセッサのマイクロアーキテクチャ内に他のタイプのキャッシュメモリも存在していてもよい。例えば、多くのプロセッサは、物理アドレス変換への仮想アドレスまたは線形アドレスを記憶するための、「アドレス変換バッファ(TLB)」と呼ばれる記憶域を使用する。このようなタイプの記憶域は、代表的なキャッシュと全く同様に置換アルゴリズムを使用することができる。このように、上で説明した置換機構が、このようなタイプのキャッシュで使用されてもよいと考えられる。
図3は、図2のキャッシュメモリシステム200の実施形態の動作を示すフローチャートである。図2と図3を合わせて参照すると、ブロック300において、一実施形態では、ブロック置換コントローラ266により、全RUビットが、最近アクセスされていないことを示すように設定される。これは、例えば、リセットから復帰することで行われうる。例えば、所定のブロック記憶位置に対するリード要求などのキャッシュアクセス要求が発生すると(ブロック305)、ブロック置換コントローラ266は、アクセスされるブロック記憶位置に対応するRUビットをセットする(ブロック310)。この動作は、ブロック記憶位置がアクセスされるたびに行われうる。
データ記憶配列265に有効なデータがフルに記憶されると、その後データを書き込むにはデータの置換が必要となる。このため、置換要求が発生すると(ブロック315)、ブロック置換コントローラ266は、この要求のアドレスが示すセット内のカウント値がポイントしているブロック記憶位置に対応するRUビットをチェックする(ブロック320)。RUビットが(この例では)クリアされており、この位置が最近アクセスされていないことを示す場合(ブロック325)、ブロック置換コントローラ266は、この要求のアドレスが示すセット内のカウント値がポイントしているブロック記憶位置においてデータを置換し(ブロック330)、(最近アクセスされたことを示すように)対応するRUビットをセットする。次に、動作が、ブロック305において前述したように行われる。
ブロック325を再び参照すると、RUビットがセットされており、この位置が最近アクセスされたことを示す場合、ブロック置換コントローラ266は、カウント値が現在ポイントしているRUビットを(最近アクセスされていないことを示すように)クリアし、セット内の次の適格なブロック記憶位置をポイントするように、カウント値をインクリメントする(ブロック340)。次に、ブロック置換コントローラ266は、次のRUビットがクリアされているかセットされているかをチェックしうる。上で説明したように、RUビットがセットされており、次の位置が最近アクセスされたことを示す場合、ブロック置換コントローラ266は、カウント値が現在ポイントしているRUビットを(最近アクセスされていないことを示すように)クリアし、セット内の次のブロック記憶位置をポイントするように、カウント値をインクリメントする。この動作は、ブロック置換コントローラが、クリアされているRUビットを検出するまで続けられ、RUビットがみつかった場合、ブロック330で前述したように動作が行われる。このため、すべてのRUビットが1置換サイクルでクリアされることも考えられるが、これが起こる可能性は低い。
上記の実施形態は、カウンタがチェックされてから次にチェックされる間に(successive passes of the counter)アクセスされるブロックに対して、置換される前にセカンドチャンスを与える。
次に図4を参照すると、キャッシュメモリシステム400の別の実施形態のより詳細な態様を示すブロック図が示される。メモリシステム400は図2のキャッシュメモリ200と同様であるが、一部の動作が異なる。より詳細には、実装によっては、データ記憶配列265のブロック記憶位置ごとにRUビットを必ずしも保持しなくてもよい。下記で説明するように、カウンタとRUビットとを含む最近の使用情報の全体が、ブロック記憶位置ごとに1ビットに保持される。
図4に示す実施形態では、キャッシュメモリシステム400は、タグ制御部262、ブロック置換コントローラ466、最長未使用(LRU)記憶配列464、タグ記憶配列263、およびデータ記憶配列265(時に「キャッシュメモリ」とも呼ばれる)を有する。図に示すように、図4のデータ記憶配列265は、複数(例えば269)のブロック記憶位置を有し、所定のウェイ数のアソシエティビティのセットアソシエティブキャッシュメモリを実装している。このため、LRU記憶配列464も、複数の記憶位置を有する。一実施形態では、ブロック置換コントローラ466は、データ記憶配列265の各セットに対してカウント値を保持しうる。このように、LRU記憶配列464も、データ記憶配列265の行と列に対応する行と列を有し、セットは行によって表される。一実施形態では、ブロック置換コントローラ266は、LRU記憶配列464の行に各カウント値を記憶しうる。例えば、図4に示すように、各行にある参照符号C、C、C、Cは4ビットのカウント値を表す。カウント値は、データ記憶配列265内の個々のブロック記憶位置へのポインタである。
しかし、図2に示す実施形態とは対照的に、図4の置換コントローラ466は、データ記憶配列265のブロック記憶位置の一部のみに対して、最近アクセス/使用(RU)ビットを保持しうる。図に示した実施形態では、LRU配列464内のLRU情報に必要な記憶域を削減するために、複数のRUビットに対してカウント値が記憶される。このため、RUビットの数を、n−log (nはアソシエティビティのウェイ数)とすることができる。例えば、16ウェイキャッシュでは、12のRUビットと4ビットのカウント値が使用される。この場合、ポインタが最後に渡したRUビットは論理0として扱われるため、このようなビットを記憶する必要はない。また、RUビットを、ウェイの絶対数に従ってではなく、カウンタに対する位置に従って記憶するほうが利便性が高いことがある。例えば、カウント値の記憶域の後の最初のRUビット記憶位置が、このカウント値がポイントしているどのブロック記憶位置にも対応するように、ブロック置換コントローラ466は、LRU配列464内にカウント値を記憶しうる。すなわち、カウント値が6の場合、例えば、列4に記憶されているRUビットが、図2に示した実施形態のウェイ番号4ではなく、ウェイ番号6のブロック記憶位置に対応することがある。
図4の説明に関して上で説明したように、LRU記憶配列464の特定の行内のRUビットは、カウント値がインクリメントされるたびに1ビット位置ずつ左シフトされる。RUビットのいずれかまたはすべてが、置換要求時に「1」である可能性があるため、シフト装置に、行ごとのRUビットの数と同数のウェイ数が必要となることが考えられる。しかし、最初の所定数「k」のRUビットがセットされるのを待ってからカウンタをインクリメントし、kの倍数だけインクリメントすることにより、必要なシフト装置のサイズを、k分の1に減らすことができる。この場合、任意の置換に使用されるウェイが、必ずしもカウント値がポイントしているウェイであるとは限らず、対応するRUビットが最近アクセス/使用されていないことを示す、カウント値〜(カウント値+k−1)の範囲のウェイのいずれかでありうる。例えば、図の実施形態では、カウント値が、4の倍数(k=4)でインクリメントされうる。この場合、カウント値の最下位の2ビットは常に論理0であるため、これらを記憶する必要がない。このようにして節約される記憶空間は、別のRUビットを記憶するために使用することができる。このため、本例では、セット当たり、LRUの記憶域に16ビットが使用され、このうち、カウント値に2ビットと、RUビットに14ビットが割り当てられる。
一実施形態では、各RUビットは、データ記憶配列265内の対応するブロック記憶位置が最近アクセスされたかどうかを示している。ここで使用する「アクセス/使用された」とは、データ記憶配列内のブロック記憶位置が、そのブロック記憶位置にあるデータに対するキャッシュ要求の結果、読み出し、書き込み、あるいはほかの理由でアクセスされる操作を指す。
また、一実施形態では、RUビットは、クリアされている場合、ブロック記憶位置が最近アクセスされていないことを示しうることが理解されよう。これは、すなわち、RUビットが「0」の論理値の場合である。同様に、RUビットは、セットされている場合、ブロック記憶位置が最近アクセスされたことを示しうる。これは、すなわち、RUビットが「1」の論理値の場合である。しかし、RUビットがセットされている(すなわち「1」の論理値の場合に)ブロック記憶位置が最近アクセスされていないことを示し、クリアされている(すなわち「0」の論理値の場合に)ブロック記憶位置が最近アクセスされたことを示すように、論理値が逆になってもよいことも同様に考察される。
図5は、前の段落で変更を加えた図4に示した実施形態の動作の詳細を説明するフローチャートである。図4と図5を合わせて参照すると、図5のブロック500において、一実施形態では、ブロック置換コントローラ466により、全RUビットが、最近アクセスされていないことを示すように設定される。これは、例えば、リセットから復帰することで行われうる。例えば、所定のブロック記憶位置に対するリード要求などのキャッシュアクセス要求が発生すると(ブロック505)、ブロック置換コントローラ466は、アクセスされるブロック記憶位置に対応するRUビットがこの要求の時点で存在する場合、このビットをセットする(ブロック510)。この動作は、ブロック記憶位置がアクセスされるたびに行われうる。
データ記憶配列265に有効なデータがフルに記憶されると、その後データを書き込むにはデータの置換が必要となる。このため、置換要求が発生すると(ブロック515)、ブロック置換コントローラ466は、この要求のアドレスが示すセット内のカウント値がポイントしているブロック記憶位置に対応するRUビットと、そのセットの次の3つのRUビットとをチェックする(ブロック520)。この4つのRUビットのいずれかがクリアされており、この位置が最近アクセスされていないことを示す場合(ブロック525)、ブロック置換コントローラ466は、この4つのRUビット群の最初のクリアされているRUビットに対応するブロック記憶位置においてデータを置換し(ブロック530)、このビットを、最近アクセスされたことを示すようにセットする。動作が、ブロック505において前述したように行われる。
ブロック525を再び参照すると、調べた4つのRUビットがすべてセットされており、対応の位置が最近アクセスされたことを示す場合、ブロック置換コントローラ466は、その行の全RUビットを、左に4ビット位置だけシフトし、(最近アクセスされていないことを示すように)右端をゼロで埋め、セット内の次の適格な4つのブロック記憶位置の群をポイントするように、カウント値を4インクリメントする(ブロック540)。次に、ブロック置換コントローラ466は、次の4つのRUビット群をチェックして、いずれかがクリアされているかどうかを確認しうる。上で説明したように、4つのRUビットがすべてセットされており、これらの位置が最近アクセスされたことを示す場合、ブロック置換コントローラ466は、その行の全RUビットを、左に4ビット位置だけシフトし、(最近アクセスされていないことを示すように)ゼロで埋め、セット内の次の適格な4つのブロック記憶位置の群をポイントするように、カウント値を4インクリメントする。この動作は、ブロック置換コントローラが、クリアされているRUビットを検出するまで続けられ、RUビットがみつかった場合、ブロック530で前述したように動作が行われる。このため、ほとんどのRUビットが1置換サイクルでクリアされることも考えられるが、これが起こる可能性は低い。
別の実施形態では、ブロック置換コントローラ466は、ある行の最初の4ビットがセットされていることを検出すると常に、次の置換要求を待機せずに、この4つのRUビットをシフト/クリアするように構成されてもよい点に留意されたい。この場合、置換要求が到着したときに、最初の4ビット群のうちの少なくとも1つのRUビットが必ずクリアされていることが保証される。
また、図面には記載されていないが、一部の実施形態では、タグ配列263あるいは別の記憶配列に記憶されうる有効ビット/情報が存在してもよいことも留意されたい。このようにすることで、置換データを記憶するために、有効なデータを含む位置より先に、無効なデータを含むブロック記憶位置を常に使用することができる。このため、キャッシュ要求を受け取ると、置換データを記憶する位置を決定する際に、RU情報より先にこの有効な情報がチェックされうる。
1つのノードが複数のプロセッサコアを有する実施形態について上で説明したが、L3キャッシュサブシステム200,400に関連する機能が、シングルコアプロセッサを含むどのようなタイプのプロセッサでも使用することができることが考察される。また、ハードウェアに関して実施形態について説明したが、実施形態が、ハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアの組合せで実装されてもよいと考えられる。ソフトウェアで実装される実施形態では、プログラム命令が、例えば、図1のメモリ14に記憶され、所望のようにプロセッサコア15Aまたは15Bによって実行されうる。しかし、プログラム命令がどのようなタイプの記憶媒体に記憶されてもよいとも考えられる。
上の実施形態についてかなり詳細に記載したが、上記の開示を完全に理解できれば、数多くの変形例および変更例が当業者にとって明らかであろう。下記の特許請求の範囲は、このような変形例および変更例を全て包含するものと解釈されることが意図される。
本発明は、一般にマイクロプロセッサに利用可能である。

Claims (10)

  1. それぞれが複数のブロック記憶位置を有する複数のセットを有するキャッシュメモリ(269,16A,17A,18A)と、
    前記キャッシュメモリに結合され、前記キャッシュメモリの各セットに対応する個別カウント値を保持するように構成されたブロック置換コントローラ(266)とを備え、所定のセットに対応する前記個別カウント値は、前記所定のセット内の、置換データを記憶するための適格なブロック記憶位置をポイントし、
    前記ブロック置換コントローラは、前記ブロック記憶位置の少なくとも一部のそれぞれに対して、その対応するブロック記憶位置が最近アクセスされたかどうかを示す関連する最近アクセスビットを保持するように更に構成され、
    前記ブロック置換コントローラに結合され、前記キャッシュメモリの各セットに対して前記個別カウント値を記憶し、各関連する最近アクセスビットを記憶するように構成された置換記憶域(264)をさらに備え、前記関連する最近アクセスビットの数は、セット数×(n−log n)(nは前記キャッシュメモリのアソシエティビティのウェイ数)に直接対応しており、
    前記ブロック置換コントローラは、前記個別カウント値がポイントしている適格なブロック記憶位置に対応する前記最近アクセスビットの特定の1つが、前記適格なブロック記憶位置が最近アクセスされたことを示しているかどうかに応じて、この適格なブロック記憶位置に前記置換データを記憶するように更に構成されている、キャッシュメモリシステム(200)。
  2. 前記ブロック置換コントローラは、前記個別カウント値がポイントしている前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の1つが、この適格なブロック記憶位置が最近アクセスされていないことを示す場合に、この適格なブロック記憶位置に前記置換データを記憶するように構成されている、請求項1に記載のキャッシュメモリシステム。
  3. 前記ブロック置換コントローラは、キャッシュアクセス要求が前記適格なブロック記憶位置にアクセスすると、前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の1つを、前記適格なブロック記憶位置が最近アクセスされたことを示すように設定するように更に構成されている、請求項1に記載のキャッシュメモリシステム。
  4. 前記ブロック置換コントローラは、前記個別カウント値がポイントしている前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の1つが、この適格なブロック記憶位置が最近アクセスされたことを示す場合に、この適格なブロック記憶位置に前記置換データが記憶されるのを阻止するように更に構成されている、請求項1に記載のキャッシュメモリシステム。
  5. 前記ブロック置換コントローラは、対応する適格なブロック記憶位置および所定の最近アクセスビットをポイントしている対応する個別カウント値が、前記対応する適格なブロック記憶位置が最近アクセスされていることを示す場合に、この関連する適格なブロック記憶位置が最近アクセスされていないことを示すように、前記所定の最近アクセスビットを設定するように更に構成されている、請求項1に記載のキャッシュメモリシステム。
  6. それぞれが複数のブロック記憶位置を有する複数のセットを有するキャッシュメモリ(269,16A,17A,18A)を提供するステップと、
    前記キャッシュメモリの各セットに対応する個別カウント値を保持するステップであって、所定のセットに対応する前記個別カウント値は、前記所定のセット内の、置換データを記憶するための適格なブロック記憶位置をポイントしているステップと、
    前記ブロック記憶位置の少なくとも一部のそれぞれに対して、その対応するブロック記憶位置が最近アクセスされたかどうかを示す関連する最近アクセスビットを保持するステップと、
    各関連する最近アクセスビットを記憶域に記憶するステップであって、前記関連する最近アクセスビットの数は、セット数×(n−log n)(nは前記キャッシュメモリのアソシエティビティのウェイ数)に直接対応しているステップと、
    前記個別カウント値がポイントしている適格なブロック記憶位置に対応する前記最近アクセスビットの特定の1つが、前記適格なブロック記憶位置が最近アクセスされたことを示しているかどうかに応じて、この適格なブロック記憶位置に前記置換データを記憶するステップとを含む方法。
  7. 前記個別カウント値がポイントしている前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の1つが、この適格なブロック記憶位置が最近アクセスされていないことを示す場合に、この適格なブロック記憶位置に前記置換データを記憶するステップを更に含む、請求項6に記載の方法。
  8. キャッシュアクセス要求が前記適格なブロック記憶位置にアクセスすると、前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の1つを、前記適格なブロック記憶位置が最近アクセスされたことを示すように設定するステップを更に含む、請求項7に記載の方法。
  9. 前記個別カウント値がポイントしている前記適格なブロック記憶位置に対応する前記最近アクセスビットの前記特定の1つが、この適格なブロック記憶位置が最近アクセスされたことを示す場合に、この適格なブロック記憶位置に前記置換データが記憶されるのを阻止するステップを更に含む、請求項7に記載の方法。
  10. 対応する適格なブロック記憶位置および所定の最近アクセスビットをポイントしている対応する個別カウント値が、前記対応する適格なブロック記憶位置が最近アクセスされていることを示す場合に、この関連する適格なブロック記憶位置が最近アクセスされていないことを示すように、前記所定の最近アクセスビットを設定するステップを含む、請求項8に記載の方法。
JP2010524027A 2007-09-04 2008-09-04 プロセッサの非常にアソシエティビティの高いキャッシュメモリ用のセカンドチャンス置換機構 Active JP5328792B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/849,515 2007-09-04
US11/849,515 US7861041B2 (en) 2007-09-04 2007-09-04 Second chance replacement mechanism for a highly associative cache memory of a processor
PCT/US2008/010368 WO2009032275A1 (en) 2007-09-04 2008-09-04 Second chance replacement mechanism for a highly associative cache memory of a processor

Publications (3)

Publication Number Publication Date
JP2010538390A JP2010538390A (ja) 2010-12-09
JP2010538390A5 JP2010538390A5 (ja) 2013-07-18
JP5328792B2 true JP5328792B2 (ja) 2013-10-30

Family

ID=40002967

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010524027A Active JP5328792B2 (ja) 2007-09-04 2008-09-04 プロセッサの非常にアソシエティビティの高いキャッシュメモリ用のセカンドチャンス置換機構

Country Status (7)

Country Link
US (1) US7861041B2 (ja)
EP (1) EP2198370B1 (ja)
JP (1) JP5328792B2 (ja)
KR (1) KR101509628B1 (ja)
CN (1) CN101918925B (ja)
TW (1) TWI451330B (ja)
WO (1) WO2009032275A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5426036B2 (ja) 2010-11-25 2014-02-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 複数のプロセッサのメモリ共有化のためのメモリアクセス装置、及びそのアクセス方法
US8615636B2 (en) * 2011-03-03 2013-12-24 International Business Machines Corporation Multiple-class priority-based replacement policy for cache memory
US9063945B2 (en) * 2011-06-14 2015-06-23 International Business Machines Corporation Apparatus and method to copy data
US9378153B2 (en) 2013-08-27 2016-06-28 Advanced Micro Devices, Inc. Early write-back of modified data in a cache memory
CN105938447B (zh) 2015-03-06 2018-12-14 华为技术有限公司 数据备份装置及方法
US10402337B2 (en) * 2017-08-03 2019-09-03 Micron Technology, Inc. Cache filter
US10725782B2 (en) * 2017-09-12 2020-07-28 Qualcomm Incorporated Providing variable interpretation of usefulness indicators for memory tables in processor-based systems
CN108304214B (zh) * 2017-12-13 2022-05-13 超聚变数字技术有限公司 一种立即数的完整性的校验方法及装置
US10783083B2 (en) 2018-02-12 2020-09-22 Stmicroelectronics (Beijing) Research & Development Co. Ltd Cache management device, system and method
US11561895B2 (en) 2019-09-05 2023-01-24 Advanced Micro Devices, Inc. Oldest operation wait time indication input into set-dueling

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0222751A (ja) * 1988-07-11 1990-01-25 Mitsubishi Electric Corp 優先順位決定手段
FR2645986B1 (fr) * 1989-04-13 1994-06-17 Bull Sa Procede pour accelerer les acces memoire d'un systeme informatique et systeme pour la mise en oeuvre du procede
US5353425A (en) * 1992-04-29 1994-10-04 Sun Microsystems, Inc. Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature
JPH10198603A (ja) * 1997-01-08 1998-07-31 Canon Inc 情報処理システム及びその制御方法、情報処理装置
US6243791B1 (en) * 1998-08-13 2001-06-05 Hewlett-Packard Company Method and architecture for data coherency in set-associative caches including heterogeneous cache sets having different characteristics
US6490656B1 (en) 2000-02-18 2002-12-03 Hewlett-Packard Company Retaining state information of an array of elements by subdividing the array into groups of elements
US6823427B1 (en) 2001-05-16 2004-11-23 Advanced Micro Devices, Inc. Sectored least-recently-used cache replacement
US6732238B1 (en) 2001-06-08 2004-05-04 Tensilica, Inc. Set-associative cache memory having variable time decay rewriting algorithm
JP3988485B2 (ja) * 2002-02-25 2007-10-10 セイコーエプソン株式会社 キャッシュ回路、情報処理装置及び電子機器
US7062610B2 (en) * 2002-09-30 2006-06-13 Advanced Micro Devices, Inc. Method and apparatus for reducing overhead in a data processing system with a cache
US6901483B2 (en) * 2002-10-24 2005-05-31 International Business Machines Corporation Prioritizing and locking removed and subsequently reloaded cache lines
EP1667028A4 (en) * 2003-09-19 2008-10-29 Matsushita Electric Ind Co Ltd ANTEMEMOIRE AND METHOD FOR CONTROLLING ANTEMEMOIRE
KR100813370B1 (ko) * 2003-11-12 2008-03-12 마쯔시다덴기산교 가부시키가이샤 캐시 메모리 및 그 제어방법
JP4036206B2 (ja) * 2004-03-31 2008-01-23 日本電気株式会社 セットアソシアティブキャッシュシステム及びキャッシュメモリの制御方法
US8806103B2 (en) * 2004-04-28 2014-08-12 Hewlett-Packard Development Company, L.P. System and method for interleaving memory
US7516275B2 (en) * 2006-04-25 2009-04-07 International Business Machines Corporation Pseudo-LRU virtual counter for a locking cache

Also Published As

Publication number Publication date
EP2198370B1 (en) 2012-07-11
US20090063776A1 (en) 2009-03-05
KR101509628B1 (ko) 2015-04-08
CN101918925A (zh) 2010-12-15
KR20100054155A (ko) 2010-05-24
CN101918925B (zh) 2017-05-03
TWI451330B (zh) 2014-09-01
WO2009032275A1 (en) 2009-03-12
US7861041B2 (en) 2010-12-28
EP2198370A1 (en) 2010-06-23
JP2010538390A (ja) 2010-12-09
TW200912742A (en) 2009-03-16

Similar Documents

Publication Publication Date Title
JP5328792B2 (ja) プロセッサの非常にアソシエティビティの高いキャッシュメモリ用のセカンドチャンス置換機構
US11074190B2 (en) Slot/sub-slot prefetch architecture for multiple memory requestors
US6725337B1 (en) Method and system for speculatively invalidating lines in a cache
US6366984B1 (en) Write combining buffer that supports snoop request
JP4486750B2 (ja) テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造
US5787478A (en) Method and system for implementing a cache coherency mechanism for utilization within a non-inclusive cache memory hierarchy
US7624235B2 (en) Cache used both as cache and staging buffer
US6496902B1 (en) Vector and scalar data cache for a vector multiprocessor
US10579531B2 (en) Multi-line data prefetching using dynamic prefetch depth
JP2010532517A (ja) 連想度を設定可能なキャッシュメモリ
JP2006517040A (ja) キャッシュラインサイズが異なる第一レベルキャッシュと第二レベルキャッシュを備えたマイクロプロセッサ
US7640399B1 (en) Mostly exclusive shared cache management policies
JP5063104B2 (ja) エントリの時間経過によるキャッシュ・エントリの所有権喪失
US11023410B2 (en) Instructions for performing multi-line memory accesses
EP2430551A2 (en) Cache coherent support for flash in a memory hierarchy
US20100318741A1 (en) Multiprocessor computer cache coherence protocol
US7882309B2 (en) Method and apparatus for handling excess data during memory access
US20090006777A1 (en) Apparatus for reducing cache latency while preserving cache bandwidth in a cache subsystem of a processor
US6976130B2 (en) Cache controller unit architecture and applied method
JP2013073271A (ja) アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置
CN117785737A (zh) 基于链表结构并支持动态分区粒度访问的末级高速缓存
CN116361206A (zh) 一种可配置容量的地址转换缓冲标记控制器及其应用方法
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: 20110902

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130306

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20130603

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130723

R150 Certificate of patent or registration of utility model

Ref document number: 5328792

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250