JP5217432B2 - セクタ機能付きキャッシュメモリ - Google Patents

セクタ機能付きキャッシュメモリ Download PDF

Info

Publication number
JP5217432B2
JP5217432B2 JP2007341423A JP2007341423A JP5217432B2 JP 5217432 B2 JP5217432 B2 JP 5217432B2 JP 2007341423 A JP2007341423 A JP 2007341423A JP 2007341423 A JP2007341423 A JP 2007341423A JP 5217432 B2 JP5217432 B2 JP 5217432B2
Authority
JP
Japan
Prior art keywords
sector
cache
way
replacement
ways
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
JP2007341423A
Other languages
English (en)
Other versions
JP2009163450A (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 JP2007341423A priority Critical patent/JP5217432B2/ja
Priority to EP08162538.6A priority patent/EP2075705B1/en
Priority to US12/193,888 priority patent/US8583872B2/en
Priority to KR1020080089181A priority patent/KR100971481B1/ko
Priority to CN2008102135667A priority patent/CN101470670B/zh
Publication of JP2009163450A publication Critical patent/JP2009163450A/ja
Application granted granted Critical
Publication of JP5217432B2 publication Critical patent/JP5217432B2/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
    • 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

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

本発明は、高性能プロセッサ、ハイパフォーマンスコンピューティングの分野におけるプログラムの高速実行を目的とした、キャッシュ技術に関する。
近年のプロセッサの動作周波数の向上により、相対的にメモリアクセス遅延時間が長くなり、このことがシステム全体の性能を左右するに至っている。多くのプロセッサは、メモリアクセス遅延時間を隠蔽する目的で、キャッシュメモリと呼ぶ小容量の高速メモリを搭載している。
図14に、現在最も普及しているセット・アソシアティブ方式のキャッシュメモリの動作概要を示す。
キャッシュメモリ1401は、複数のセットで構成されており、各セットは、例えば#1〜#4の複数のキャッシュウェイ(以降、単に「ウェイ」と略すこともある)1402に分けて管理されている。即ち、図14の例は、4ウェイのセット・アソシアティブ方式のキャッシュメモリを示している。
また、各キャッシュウェイ1402は、#1〜#nの複数のキャッシュブロック(以降、単に「ブロック」と略すこともある)1403から構成されている。例えば、n=1024である。
各キャッシュブロック1403は、有効か否かを示す有効フラグ、タグ、及びデータから構成されている。データサイズは例えば、有効フラグが1ビット、タグが15ビット、データが128ビットである。
キャッシュメモリ1401のサイズは、例えば、「キャッシュブロックのサイズ×キャッシュブロック数×キャッシュウェイ数=128バイト×1024ブロック×4ウェイ」で計算され、例えば、512キロバイトのサイズを有する。
一方、プログラムによって指定されるメモリアクセスのためのアドレス1405は、32ビットで指定され、下位から7ビットがキャッシュブロック内オフセット、10ビットがインデックス、上位15ビットがタグとして使用される。
以上の構成により、今、アドレス1405に対するデータ読出しが指定されると、アドレス1405内の10ビットのインデックスにより、#1〜#nのブロック番号のうちの1つが指定される。その番号を#iとする。
その結果、#1〜#4の各キャッシュウェイ1402から、指定されたブロック番号#iに対応する各キャッシュブロック1403(#i)が読み出され、それぞれ#1〜#4のコンパレータ1404に入力される。
#1〜#4のコンパレータ1404は、読み出された各キャッシュブロック1403(#i)内のタグ値と指定されたアドレス1405内のタグ値との一致/不一致を検出する。この結果、#1〜#4のうち一致が検出されたコンパレータ1404において読み出されているキャッシュブロック1403(#i)が、キャッシュヒットしたということになり、そのブロックのデータが読み出される。これにより、主記憶メモリからの読出しよりも高速なデータ読出しが実現される。
どのコンパレータ1404においても一致が検出されなかった、又は一致が検出されても有効フラグが無効を示していたら、キャッシュヒットにはならず、主記憶メモリ上のアドレス1405からデータが読み出される。
一方、アドレス1405に対するデータ書込みが指定されると、読出しの場合と同様に、アドレス1405内の10ビットのインデックスにより、#1〜#nのブロック番号のうちの1つ#iが指定される。
次に、図15に示されるような置換ウェイ選択回路1501が、#1〜#4の各キャッシュウェイ1402の指定されたブロック番号#iに対応する4つのキャッシュブロック1403(#i)のうち、未使用(タグが未指定の)のブロック、又は有効フラグが無効を示しているブロック、どのブロックも使用中の場合には所定のアルゴリズムによって決定したウェイのブロックを選択し、図15に示されるような4ビット値の選択信号を出力する。この4ビット値は、#1〜#4の4つのウェイのうちの1つを選択するためのデータである。4ビットのうち値1が設定されているビット位置に対応するウェイが選択される。このようにして置換ウェイ選択回路1501から出力された選択信号に基づいて、指定されたブロック番号#iに対して選択し得る4つの#1〜#4の4つのウェイのうちの1つが選択された、そのキャッシュブロック1403に、データが書き込まれる。
どのブロックも使用中の場合に、#1〜#4の4つのキャッシュウェイ1402のうちどれを選択するかは、例えばLRU(Least Recently Used)アルゴリズムによって決定される。このアルゴリズムでは、使われてから最も長い時間が経っているキャッシュウェイのキャッシュブロックデータが選択され、そのデータが置換される(追い出される)。
上述の動作説明から理解されるように、書き込まれるデータのサイズが大きい場合に、複数のデータにおいてアドレス1405のインデックスの値が一致し、それらのデータでキャッシュの競合が発生する可能性がある。このような場合であっても、セット・アソシアティブ方式のキャッシュメモリにおいては、インデックスによって#1〜#nのうち同じキャッシュブロック1403が指定されたとしても、複数のウェイからキャッシュブロックを選択できるため、例えば図14の4ウェイ構成のキャッシュメモリ1401では、同じインデックスを持つ最大で4つまでのデータに対応することができる。
以上のような構成を有する一般的なキャッシュメモリにおいては、プログラマは、特定のデータだけはキャッシュメモリに残しておき高速アクセスができるようにしたいといった、明示的なデータの配置を指定することができない。このため、意図しないデータの追い出し(置換)によって、処理性能が劣化するという問題点があった。
この問題を解決するために従来、ローカルメモリやスクラッチパッド、あるいはキャッシュライン(ウェイ)ロックなどといった手法が提案されている。
特許文献1に記載の従来技術は、(1)通常のキャッシュメモリ領域と(2)スクラッチパッド(またはローカルメモリ)領域、に分割して使用することができるキャッシュメモリについて開示している。
特許文献2に記載の従来技術もまた、キャッシュメモリ領域を通常のキャッシュメモリ領域とローカルメモリ領域に分割して利用することを開示している。この従来技術では、キャッシュメモリ領域とローカルメモリ領域のそれぞれに対して、メインメモリのアドレス空間を個別に与え、メモリアクセス時にどちらの領域へのアクセスかを区別することによってデータの一貫性を維持している。
上記のようにキャッシュメモリ領域を分割するのではなく、キャッシュメモリ上での特定のキャッシュラインもしくはキャッシュウェイをロックすることによって、対象のデータが常にキャッシュメモリ上に存在し続けるようにすることができる従来技術も提案されている。
また、主としてストリームデータへのアクセスによるデータの意図しない追い出しを避ける従来技術として、最弱ウェイ方式がある。この方式は、メモリアクセス命令によってデータをキャッシュメモリに転送する際に、同一インデックス内で最初に追い出すべきデータであることを指示することができる。これにより、ストリームデータのように一度しか使用しないデータが、最も先に追い出されるようにすることができる。
特開平10−187533号公報 特開平4−175946号公報 特開2003−296191号公報
しかし、特許文献1に記載の従来技術では、スクラッチパッド領域に対する特別な命令(メインメモリからデータを読み込むためのロード命令およびメインメモリへデータを書き戻すためのライトバック命令)が必要になる。また、キャッシュ領域、スクラッチパッド領域、メインメモリとの間でデータの一貫性を維持するための制御が必要になるといった問題もある。
特許文献2に記載の従来技術では、領域判定回路が必要になるという問題がある。さらに、メモリ空間を制御する必要が生じるためオペレーティングシステムによる管理も必要となる。
また、特許文献1及び2ともに、プログラム実行中に領域サイズを変更するといった操作には、大きな性能オーバヘッドも伴うという問題点を有していた。
また、キャッシュラインもしくはキャッシュウェイをロックする従来技術では、プログラマがロックを解除するための操作(アンロック操作と呼ぶ)を行うことを忘れたり、誤って全てのキャッシュ領域をロックしてしまった場合などに、キャッシュシステムが正常に動作しなくなり、最終的にはシステムが停止するといった問題が容易に発生し得る。そして、アンロックするための専用ハードウェア機構が必要となり、追加ハードウェアコストが大きいという問題点を有していた。
更に、最弱ウェイ方式の従来技術は、ローカルメモリ機能に関する従来技術と同時に実装することができないという問題点を有していた。
本発明の課題は、ハードウェア及びソフトウェアの変更のコストが小さく、性能オーバヘッドも小さく、ロック状態によるシステム停止のおそれもなく、かつローカルメモリ的な機能と最弱ウェイ方式を同時に実現可能なキャッシュメモリの実現にある。
本発明は、各セットが2つ以上のキャッシュウェイで構成されセット・アソシアティブ方式に基づいて動作し、キャッシュミスの発生時に決定された置換ウェイに対応するキャッシュウェイのキャッシュブロックのデータを置換するキャッシュ動作を行うキャッシュメモリを前提とする。
本発明の第1の態様は、以下の構成を有する。
セクタID情報記憶部(例えば図2のセクタID・RAM203)は、メモリアクセス要求により特定されるキャッシュブロックの各キャッシュウェイに対応させて、その各キャッシュウェイの置換状態を制御するために定義され2つ以上の論理値を取り得るセクタID情報を記憶する。このセクタID情報は例えば2つの論理値又は3つ以上の論理値をとり得る。
置換ウェイ候補決定部(例えば図3の置換ウェイ選択可能マスク生成回路303)は、キャッシュミスの発生時に、メモリアクセス要求に付加されたセクタID情報と、メモリアクセス要求により特定されるキャッシュブロックの各キャッシュウェイに対応してセクタID情報記憶部に記憶されているセクタID情報とに基づいて、置換ウェイの候補である置換ウェイ候補を決定する。
置換ウェイ選択部(例えば置換ウェイ選択回路304)は、置換ウェイ候補から置換ウェイを選択して出力する。
セクタID情報更新部(例えば図3のセレクタ307)は、メモリアクセス要求により特定されるキャッシュブロックの置換ウェイにより指定されるキャッシュウェイに対応してセクタID情報記憶部に記憶されているセクタID情報を、メモリアクセス要求に付加されたセクタID情報によって更新する。
本発明の第2の態様は、上述の本発明の第1の態様に加えて、更に以下の構成を有する。
最大ウェイ数指定部(例えば図4のレジスタ402〜405)は、セクタID情報の各論理値ごとに割り当てることができるキャッシュウェイの最大値を最大ウェイ数として指定する。
比較部(例えば図4の置換セクタID決定回路401)は、キャッシュミスの発生時に、メモリアクセス要求により特定されるキャッシュブロックの各キャッシュウェイに対応してセクタID情報記憶部に記憶されているセクタID情報のうち、メモリアクセス要求に付加されたセクタID情報と同じセクタID情報を持つキャッシュウェイの数と、最大ウェイ数指定部で指定されるメモリアクセス要求に付加されたセクタID情報と同じセクタID情報の最大ウェイ数とを比較する。
そして、前述の置換ウェイ候補決定部(例えば図4の置換ウェイ選択可能マスク生成回路303)は、キャッシュミスの発生時に、その比較部による比較結果に応じて、メモリアクセス要求により特定されるキャッシュブロックの各キャッシュウェイに対応してセクタID情報記憶部に記憶されているセクタID情報のうち、メモリアクセス要求に付加されたセクタID情報以外のセクタID情報が記憶されているキャッシュウェイ群か、メモリアクセス要求に付加されたセクタID情報と同じセクタID情報が記憶されているキャッシュウェイ群の何れかの群を、置換ウェイ候補として決定する。
本発明の第3の態様は、上述の本発明の第2の態様に加えて、更に以下の構成を有する。
即ち、最大ウェイ数指定部(例えば図4のレジスタ402〜405)は、セクタID情報の各論理値ごとの最大ウェイ数の合計数がキャッシュメモリにおけるキャッシュウェイ数よりも大きくなるように、セクタID情報の各論理値ごとの最大ウェイ数を設定可能とする。
本発明の第4の態様は、前述の本発明の第1の態様に加えて、更に以下の構成を有する。
置換ウェイ候補決定部(例えば図10の置換ウェイ選択可能マスク生成回路303)は
、キャッシュミスの発生時に、ユーザによって指定されたセクタID情報の所定値(例えば図10の固定値1001)については、比較部による比較結果は判定せずに、メモリアクセス要求により特定されるキャッシュブロックの各キャッシュウェイに対応してセクタID情報記憶部に記憶されているセクタID情報のうち、メモリアクセス要求に付加されたセクタID情報と同じセクタID情報が記憶されているキャッシュウェイ群を、置換ウェイ候補として決定する。
本発明の第5の態様は、上述の本発明の第1〜第4の何れかの態様に加えて、更に以下の構成を有する。
前述のセクタID情報更新部は、メモリアクセス要求によってキャッシュヒットが発生したときに、メモリアクセス要求により特定されるキャッシュブロックの置換ウェイにより指定されるキャッシュウェイに対応してセクタID情報記憶部に記憶されているセクタID情報を、メモリアクセス要求に付加されたセクタID情報によって更新する(例えば図7の701の構成)。
本発明によれば、メモリアクセス要求により特定されるキャッシュブロックの各キャッシュウェイに対応させてセクタID情報を付加することと単純な判定処理を用いることによって、少ないハードウェアコストでキャッシュメモリ上にローカルメモリ機能(高速メモリ領域)や最弱ウェイ方式と同等の機能を実現することができ、これを用いることで、プログラムの最適化を行い、プログラムの実効速度を向上することが可能となる。
本発明におけるハードウェアコストについては、主として最大ウェイ数を記憶するレジスタ(3ビット程度)、比較・マスク回路の追加、各キャッシュブロックに対応してセクタID情報を記憶するセクタID・RAMを追加するのみで済み、オペレーティングシステムに対して何ら変更の必要はないため、変更のコスト(ハードウェアおよびソフトウェア)が小さいという特徴を有する。
また、本発明では、性能に影響する処理は、現在のウェイ数と最大ウェイ数とを比較して、その結果に基づいてウェイのマスク処理を行う程度であるため、回路の複雑さによる性能に対する悪影響はほとんどない。
更に、本発明では、最大ウェイ数と現在のウェイ数の比較を行った結果に基づいて、必ず自セクタID情報又は他セクタID情報のいずれかのウェイが置換対象として選択されるため、ロック方式のようにすべてのウェイがロックされ、その結果、置換対象ウェイが存在しない、という状況は決して発生せず、システムが停止することはない。
加えて、本発明では、各セクタID情報の値について独立に最大ウェイ数を設定することができ、かつ各セクタID情報の値の最大ウェイ数の合計値が現在キャッシュメモリに装備されているキャッシュウェイ数の最大値を超えてもよいという条件を許すことによって、各セクタID情報に割り当てられたキャッシュウェイをオーバーラップして設定することができる。これにより、最弱ウェイ方式と同等の機能を実現することが可能となる。
以下、図面を参照しながら、本発明を実施するための最良の形態を詳細に説明する。
図1は、本発明の実施形態によるキャッシュメモリの機能構成図である。なお、図1の構成は一例であり、本発明は図1の構成に限定されるものではない。
本実施形態によるキャッシュメモリは、図14の場合と同様に、4ウェイのセット・アソシアティブ方式のキャッシュメモリとして実現される。
キャッシュメモリ101は、#1〜#4の複数のキャッシュウェイ102に分けて管理され、各キャッシュウェイ102は、#1〜#nの複数のキャッシュブロック103から構成されている。例えば、n=1024である。
図1の実施形態においては、各キャッシュブロック103は、一般的な有効フラグ(1ビット、これはない場合もある)、タグ(15ビット)、データ(128バイト)に加えて、セクタIDを有することが大きな特徴である。このセクタIDは、1ビット又は2ビットで構成される。1ビットの場合は、セクタIDの値は0か1の何れかの値を取り得る。2ビットの場合は、セクタIDは、0〜2の3通り又は0〜3の4通りの値を取り得る。
キャッシュメモリ101のサイズは、「キャッシュブロックのサイズ×キャッシュブロック数×キャッシュウェイ数=128バイト×1024ブロック×4ウェイ」で計算され、例えば、512キロバイトのサイズを有する。
一方、プログラムによって指定されるメモリアクセスのためのアドレス105は、32ビットで指定され、下位から7ビットがキャッシュブロック内オフセット、10ビットがインデックス、上位15ビットがタグとして使用される。
以上の構成により、今、アドレス105に対するデータのアクセス(読出し又は書込み)が指定されると、アドレス105内の10ビットのインデックスにより、#1〜#nのブロック番号のうちの1つが指定される。指定されたブロックの番号を#iとする。
その結果、#1〜#4の各キャッシュウェイ102から、指定されたブロック番号#iに対応する各キャッシュブロック103(#i)が読み出され、それぞれ#1〜#4のコンパレータ104に入力される。
#1〜#4のコンパレータ104は、読み出された各キャッシュブロック103(#i)内のタグ値と、指定されたアドレス105内のタグ値との一致/不一致を検出する。この結果、#1〜#4のうちタグ値の一致が検出されたコンパレータ104において読み出されているキャッシュブロック103(#i)が、キャッシュヒットしたということになり、そのブロックに対してデータが読み書きされる。
どのコンパレータ104においてもタグ値の一致が検出されなかった、又はタグ値の一致が検出されても有効フラグが無効を示していたら、キャッシュヒットにはならず、主記憶メモリ上のアドレス105がアクセスされる。本実施形態は、特にこのキャッシュミス時のキャッシュメモリ101の置換手法に特徴がある。
図2は、キャッシュメモリに関する図1の機能構成に対応するハードウェア構成を示す図である。
図1の各キャッシュブロック103を構成するデータ、タグ、及びセクタIDは、それぞれデータRAM201、タグRAM202、及びセクタID・RAM203の3領域に分割して記憶される。データRAM201、タグRAM202、及びセクタID・RAM203は、それぞれ4つの領域に分割され、各RAMの各領域はそれぞれ、図1の#1〜#4のキャッシュウェイ102を構成する。なお、有効フラグは、タグRAM202にタグ値が記憶されているか否かで代用されるが、別途有効フラグ用のRAMが設けられてもよい。
今、アドレス105に対するデータアクセスが指定されると、アドレス105内の10ビットのインデックスにより、タグRAM202における#1〜#nのブロック番号のう
ちの1つ#iが指定される。
その結果、タグRAM202内の#1〜#4の各キャッシュウェイ102から、指定されたブロック番号#iに対応する各キャッシュブロック103(#i)のタグ値が読み出され、それぞれ#1〜#4のコンパレータ104に入力される。
#1〜#4のコンパレータ104は、タグRAM202から読み出された各キャッシュブロック103(#i)のタグ値と指定されたアドレス105内のタグ値との一致/不一致を検出する。そして、キャッシュヒットが発生した場合、4つのコンパレータ104からは、タグ値の一致が検出されたコンパレータ104の出力のみが1となる、4ビットのヒットウェイ信号が出力される。
キャッシュヒットが発生した場合であってメモリアクセス要求が読出し要求の場合には、データRAM201において、アドレス105内の10ビットのインデックスにより指定されるブロック番号#iから、#1〜#4の各キャッシュウェイ102に対応する4つのキャッシュブロック103(#i)のデータ値がセレクタ204に読み出される。そして、4つのコンパレータ104から出力されているヒットウェイ信号により、タグ値の一致が検出されたコンパレータ104に対応する何れかのキャッシュウェイに対応するキャッシュブロック103(#i)のデータ値が選択されて出力される。
キャッシュヒットが発生した場合であってメモリアクセス要求が書込み要求の場合には、データRAM201において、アドレス105内の10ビットのインデックスにより指定されるブロック番号#iにおける、#1〜#4の各キャッシュウェイ102に対応する4つのキャッシュブロック103(#i)のうち、ヒットウェイ信号により指示されるキャッシュウェイのブロックに、メモリアクセス要求によって指定されるデータが書き込まれる。
セレクタ205の動作については、後述する。
第1の実施形態
第1の実施形態の構成及び動作について説明する。
以降の説明では、ユーザプログラムに基づくメモリアクセス要求についてのみ説明するが、ハードウェアによるメモリアクセス要求についても同様に動作する。
また、第1の実施形態では、セクタIDが1ビットの場合について説明する。
図3は、メモリアクセス要求308に対して図1又は図2の構成を有するキャッシュメモリ101においてキャッシュミスが発生したときに、インデックスにより指定されたブロック番号に対応する#1〜#4の4つのキャッシュウェイ102のキャッシュブロック103のデータのうち、どのウェイが置換されるべきかを決定する、置換ウェイ制御回路の構成図である。
なお、キャッシュミスが発生しているかどうかは、図1又は図2に示されるどのコンパレータ104においてもタグ値の一致が検出されていない状態、即ち、#1〜#4の全てのコンパレータ104の出力がアクティブでない場合として検出できる。 図3において、まず、メモリアクセス要求308には、キャッシュメモリ101におけるデータの置換状態を制御するための1ビットのセクタIDが302が付加される。
置換ウェイ選択可能マスク生成回路303には、図2に示されるセクタID・RAM203内の、メモリアクセス要求308のアドレス105中のインデックスにより指定されたブロック番号から、#1〜#4のキャッシュウェイ102(図2参照)に対応する4ビ
ットのセクタID301と、メモリアクセス要求308に付加されている1ビットのセクタID302とが入力する。
そして、置換ウェイ選択可能マスク生成回路303は、エクスクルーシブオア回路(XOR)303−1とインバータ(INV)303−2とによって構成され、メモリアクセス要求308からの1ビットのセクタID302と、セクタID・RAM203からの4ビットのセクタID301の各ビットとの間で、エクスクルーシブノア演算を実行する。
これにより、メモリアクセス要求308に付加されているセクタID302のビット値(図3の例では「0」)と同じセクタIDのビット値を持つビット位置のみが値1となる、置換ウェイ候補309が出力される。例えば、図2のセクタID・RAM203から4ビットのセクタID301として「0001」が読み出されている場合には、そのうちの値「0」の部分が一致により「1」、値「1」の部分が不一致により「0」となることにより、4ビットからなる置換ウェイ候補309として「1110」が出力される。この置換ウェイ候補309は、値1を有するビット位置に対応するキャッシュウェイ102が、メモリアクセス要求308によって置換されるべきウェイであることを指示している。
そして、置換ウェイ選択回路304は、置換ウェイ候補309において値が1であるビット位置に対応するウェイのうちの何れか1つを、LRUアルゴリズム等に従って選択し、選択されたウェイに対応するビット位置のみが1となる4ビットからなる置換ウェイ310(図3の例では「1000」)を出力する。
置換ウェイ310は、セレクタ305、306、及び307に入力し、各セレクタにおいて、置換ウェイ310の4ビットのデータのうち値が1となるビット位置に対応するウェイを選択させる。
即ち、セレクタ305、306、307は、それぞれに入力するメモリアクセス要求308に対応するデータ、タグ、及びセクタIDを、それぞれデータRAM201、タグRAM202、及びセクタID・RAM203内の、置換ウェイ310の4ビットのデータのうち値が1となるビット位置に対応するウェイに出力する。
また、メモリアクセス要求308内のインデックスが、データRAM201、タグRAM202、及びセクタID・RAM203のブロック番号を指定する。
これにより、データRAM201、タグRAM202、及びセクタID・RAM203において、指定されたブロック番号の選択されたウェイのキャッシュブロック103(塗りつぶされた部分に、データ、タグ、及びセクタIDが書き込まれる。
なお、データRAM201に書き込まれるデータは、メモリアクセス要求308が読出し要求の場合には、特には図示しない主記憶メモリ上の対応するアドレス105から読み出されたデータであり、メモリアクセス要求308が書込み要求の場合には、メモリアクセス要求308に指定されている書込みデータである。
以上のようにして、第1の実施形態では、キャッシュミス時に、メモリアクセス要求308に付加されているセクタIDが0のときはセクタID・RAM203内のセクタIDが0であるキャッシュウェイが、メモリアクセス要求308に付加されているセクタIDが1のときはセクタID・RAM203内のセクタIDが1であるキャッシュウェイが選択され、データRAM201内のインデックスによって指定されたブロック番号の上記選択されたキャッシュウェイのキャッシュブロック103のデータが、メモリアクセス要求308に対応するデータによって置換される。
上述の機能により、ユーザはまず、キャッシュメモリ101から追い出したくないデータ(即ち、高速メモリアクセスを要求するデータ)についてのメモリアクセス要求308については、そのメモリアクセス要求308に例えばセクタID=1(0でもよい)を指定してメモリアクセスを行う。その後、ユーザは、キャッシュメモリ101からすぐに追い出されてもよいデータについてのメモリアクセス要求308を実行する場合には、そのメモリアクセス要求308に例えばセクタID=0(1でもよい)を指定してメモリアクセスを行う。これにより、セクタID=0を付されて実行されたメモリアクセス要求308のデータについては、キャッシュミス時にキャッシュメモリ101上でセクタID=0が記憶されたキャッシュウェイにおいてのみ置換が発生し、最初にセクタID=1と共にキャッシュメモリ101に書き込まれたデータは置換されず追い出されない。
このようにして、第1の実施形態の機能により、どのデータを追い出すかどうかを、メモリアクセス要求308に付したセクタIDによって制御することができるようになる。このメモリアクセス要求308は、ユーザがプログラムによる指定するアクセス命令であってもよく、又はシステムの特定のハードウェアがキャッシュメモリ101に対して自動的に発行する要求であってもよい。
第2の実施形態
図4は、第2の実施形態の構成図である。
図4の構成において、図3の構成と同じ番号が付された部分は、第1の実施形態の場合と同じ機能を有する。
図4の構成が図3の構成と異なる部分は、メモリアクセス要求308に付加されているセクタID302がそのまま置換ウェイ選択可能マスク生成回路303に入力されるのではなく、セクタID302が置換セクタID決定回路401で判定されて置換セクタID406に変換されてから置換ウェイ選択可能マスク生成回路303に入力される点である。
置換セクタID決定回路401には、下記の4つのレジスタが接続される。
・セクタ0用最大ウェイ数レジスタ402
・セクタ1用最大ウェイ数レジスタ403
・現在のセクタ0のウェイ数レジスタ404
・現在のセクタ1のウェイ数レジスタ405
セクタ0用最大ウェイ数レジスタ402及びセクタ1用最大ウェイ数レジスタ403には、各キャッシュブロック103において、セクタIDとしてそれぞれ値0及び値1を設定することのできる最大ウェイ数が設定される。これらのレジスタ値は、プログラムから設定可能である。
次に、現在のセクタ0のウェイ数レジスタ404及び現在のセクタ1のウェイ数レジスタ405には、メモリアクセス要求308のアドレス105中のインデックスにより或るブロック番号が指定された時点における、セクタID・RAM203から読み出される4ビットのセクタID301において値0が設定されているビット数(ウェイ数)と、値1が設定されているビット数(ウェイ数)とがカウントされて、セットされる。
以上の4つのレジスタ402〜405は、例えば図5に示されるように、それぞれ3ビットで構成されており、0から4(最大ウェイ数)までの値をとる。
図4において、置換セクタID決定回路401では、メモリアクセス要求308にセクタID=0が指定されている場合には、セレクタ401−1がセクタ0用最大ウェイ数レジスタ402の出力を、セレクタ401−2が現在のセクタ0のウェイ数レジスタ404の出力をそれぞれ選択し、それらを比較器401−3に入力させる。逆に、メモリアクセ
ス要求308にセクタID=1が指定されている場合には、セレクタ401−1がセクタ1用最大ウェイ数レジスタ403の出力を、セレクタ401−2が現在のセクタ1のウェイ数レジスタ405の出力をそれぞれ選択し、それらを比較器401−3に入力させる。
この結果、比較器401−3は、メモリアクセス要求308にて指定されたセクタID値に関して、最大ウェイ数と現在のウェイ数とを比較する。ここで、最大ウェイ数は、何ウェイまで当該セクタIDのウェイ数が増加してもよいか、という上限を与える情報である。
図4の例では、メモリアクセス要求308に付加されているセクタIDの値が1であるため、比較器401−3は、セクタ1用最大ウェイ数レジスタ403に設定されているセクタID=1の最大ウェイ数と、現在のセクタ1のウェイ数レジスタ405に設定されている書込みブロックにおける現在のセクタID=1のウェイ数とを比較する。
比較器401−3での比較の結果、指定されたセクタIDに関して「現在のウェイ数<最大ウェイ数」である場合には、まだ指定されたセクタID値を持つウェイ数を増やしてよいことを意味する。このため、セレクタ401−5は、指定されたセクタIDとは逆の値を有するセクタIDが設定されているウェイに対する置換を指示するための置換セクタID406を出力する。即ち、セレクタ401−5は、メモリアクセス要求308に付加されているセクタID302をインバータ401−4で反転させた値を選択し、それを置換セクタID406として出力する。
一方、比較器401−3での比較の結果、指定されたセクタIDに関して「現在のウェイ数≧最大ウェイ数」である場合には、それ以上指定されたセクタID値を持つウェイ数は増やせないため、セレクタ401−5は、指定されたセクタID値が設定されているウェイ中での置換を指示するための置換セクタID406を出力する。即ち、セレクタ401−5は、メモリアクセス要求308に付加されているセクタID302をそのまま選択し、それを置換セクタID406として出力する。
図4の例では、比較器401−3でのセクタID=1に関する比較の結果、指定されたセクタID=1に関して「現在のウェイ数<最大ウェイ数」である場合には、まだセクタID=1のウェイ数を増やしてよいことを意味するため、セレクタ401−5は、メモリアクセス要求308に付加されているセクタID=1をインバータ401−4で反転させた値0を選択し、それを置換セクタID406として出力する。
上述の置換セクタID406は、置換ウェイ選択可能マスク生成回路303に入力される。
置換ウェイ選択可能マスク生成回路303と置換ウェイ選択回路304の動作は、図3で示した第1の実施形態の場合と同様である。
即ち、図4において、置換ウェイ選択可能マスク生成回路303は、セクタID・RAM203から読み出されている4ビットのセクタID301の各ビット値(図4の例では「0001」)と、上記置換セクタID406のビット値0とのエクスクルーシブノア演算を実行することにより、置換セクタID406のビット値0と同じセクタID=0を持つビット位置のみが値1となる、4ビットからなる置換ウェイ候補309(図4の例では「1110」)を出力する。
そして、置換ウェイ選択回路304は、置換ウェイ候補309において、値が1であるビット位置に対応するウェイのうちの何れか1つを、LRUアルゴリズム等に従って選択し、選択されたウェイに対応するビット位置が1となる4ビットからなる置換ウェイ31
0(図4の例では「1000」)を出力する。
この置換ウェイ310は、図3と同様のセレクタ305、306、及び307に入力し、各セレクタにおいて、置換ウェイ310の4ビットのデータのうち値が1となるビット位置に対応するウェイを選択させる。
この結果、第1の実施形態の場合と同様にして、図3で説明したように、データRAM201、タグRAM202、及びセクタID・RAM203において、メモリアクセス要求308中のアドレス内のインデックスにより指定されたブロック番号#iの、セレクタ305、306,及び307にて選択されたウェイのキャッシュブロック103(塗りつぶされた部分)に、データ、タグ、及びセクタIDが書き込まれる。
、上記書込みのタイミングで、図4の例では、セクタID・RAM203における指定ブロック番号#iの4ビットのセクタIDは、「0001」から「1001」に更新される。即ち、いままでセクタID=0であったキャッシュウェイのキャッシュブロックが置換され、セクタID=1になる。
図6は、図4の構成において、図6に示される(1) 〜(7) の7回のメモリアクセス要求308が発生し、それらの全ての要求でキャッシュミスが発生して置換が起こった場合の動作例を示した図である。
図中の4つの四角は、キャッシュメモリ101のデータRAM201における或るブロック番号での#1〜#4の各ウェイを表している。四角は、セクタID=0のときは白、セクタID=1のときはグレーに塗り潰されている。四角の中の数値は、アクセス履歴を表しており、数値の大きいものほど新しい(最近アクセスされた)ウェイであることを示す。
この図では、(1) 〜(7)の各メモリアクセス要求308において、「Sec.0」及び「Sec.1」は、それぞれ各メモリアクセス要求308に付加されているセクタIDの値が0及び1の場合を示している。また、「Sec.0」及び「Sec.1」の右横の数字は、各メモリアクセス要求308発生時の最大ウェイ(WAY)数を示している。
メモリアクセス要求308が発生するたびに、現在のウェイ数と最大ウェイ数の比較が行われ、置換ウェイが選択される。
例えば、最初の(1) のメモリアクセス要求が発生したときには、要求にて指定されたセクタID=0、最大ウェイ数=4である。このとき、セクタID=0の現在のウェイ数はその直前の状態(図6の最上段の状態)を見ると3であり、要求で指定された最大ウェイ数=4よりも小さい。従って、他のセクタID=1のウェイ(グレーに塗られたウェイ)をセクタID=0に置換することを指示する置換セクタID=「1」が置換セクタID決定回路から出力される。この結果、置換セクタIDと現在のセクタIDの状態「0100」とのエクスクルーシブノア演算により、置換ウェイ候補として「0100」が置換ウェイ選択可能マスク生成回路から出力され、置換ウェイも「0100」となって、セクタID値が1のウェイで置換が発生する。
2番目の(2) のメモリアクセス要求308が発生したときには、要求にて指定されたセクタID=0、最大ウェイ数=3である。一方、(2) の直前(=(1) )の状態はセクタID=0の現在のウェイ数=4であり、要求で指定される最大ウェイ数よりも大きい。従って、セクタID=0を置換することを指示する置換セクタID=「0」が置換セクタID決定回路から出力される。この結果、置換セクタIDと(1)のセクタIDの状態「0000」とのエクスクルーシブノア演算により、置換ウェイ候補として「1111」が置換ウ
ェイ選択可能マスク生成回路から出力され、更に、置換ウェイ選択回路でのLRU判定により、セクタID=0の4つのウェイのうち最も古いウェイを置換することを指示する置換ウェイ=「0001」が置換ウェイ選択回路から出力されて、値が1のウェイで置換が発生する。
3番目の(3) のメモリアクセス要求308が発生したときには、要求にて指定されたセクタID=1、最大ウェイ数=2である。一方、(3) の直前(=(2) )の状態はセクタID=1の現在のウェイ数=0であり、要求で指定された最大ウェイ数よりも小さい。従って、他のセクタID=0のウェイを置換することを指示する置換セクタID=「0」が置換セクタID決定回路から出力され、この結果、現在(=(2) )のセクタIDの状態「0000」とのエクスクルーシブノア演算により、置換ウェイ候補として「1111」が置換ウェイ選択可能マスク生成回路から出力され、更に、置換ウェイ選択回路でのLRU判定により、セクタID=0の4つのウェイのうち最も古いウェイを置換することを指示する置換ウェイ=「0010」が置換ウェイ選択回路から出力されて、値が1のウェイで置換が発生する。
4番目の(4) のメモリアクセス要求308が発生したときには、要求にて指定されたセクタID=1、最大ウェイ数=2であり、(4) の直前(=(3) )の状態はセクタID=1の現在のウェイ数=1であり、最大ウェイ数よりも小さい。従って、他のセクタID=0のウェイを置換することを指示する置換セクタID=「0」が置換セクタID決定回路から出力され、この結果、現在(=(3) )のセクタIDの状態「0010」とのエクスクルーシブノア演算により、置換ウェイ候補として「1101」が置換ウェイ選択可能マスク生成回路から出力され、更に、置換ウェイ選択回路でのLRU判定により、セクタID=0の3つのウェイのうち最も古いウェイを置換することを指示する置換ウェイ=「1000」が置換ウェイ選択回路から出力されて、値が1のウェイで置換が発生する。
5番目の(5) のメモリアクセス要求308が発生したときには、要求にて指定されたセクタID=1、最大ウェイ数=2であり、(5) の直前(=(4) )の状態はセクタID=1の現在のウェイ数=2であり、最大ウェイ数以上と(等しく)なる。従って、同じセクタID=1のウェイを再利用して置換することを指示する置換セクタID=「1」が置換セクタID決定回路から出力され、この結果、現在(=(4) )のセクタIDの状態「1010」とのエクスクルーシブノア演算により、置換ウェイ候補として「1010」が置換ウェイ選択可能マスク生成回路から出力され、更に、置換ウェイ選択回路でのLRU判定により、セクタID=1の2つのウェイのうち古いほうのウェイを置換することを指示する置換ウェイ=「0010」が置換ウェイ選択回路から出力されて、値が1のウェイで置換が発生する。
以下、6番目の(6) 及び7番目の(7) のメモリアクセス要求308が発生した場合も同様に、要求にて指定されたセクタID=1、最大ウェイ数=2であり、それぞれの直前の状態はセクタID=1の現在のウェイ数=2であり、最大ウェイ数以上と(等しく)なる。従って、同じセクタID=1のウェイが再利用されて置換される。
以上のようにして、第2の実施形態では、ユーザが設定できる各セクタIDの最大ウェイ数に応じて、キャッシュメモリ101に対する置換動作をコントロールすることができる。
第3の実施形態
次に、図1及び図2の構成に基づく第3の実施形態の構成及び動作について説明する。
図7は、メモリアクセス要求308に対して図1又は図2の構成を有するキャッシュメモリ101においてキャッシュヒットが発生したときの、ヒットウェイ制御回路に関する
実施形態の構成図である。
図7のヒットウェイ更新回路701は、例えば図2のセレクタ205内に設けられ、図2に示される4つのコンパレータ104から出力される4ビットのヒットウェイ信号702が入力する。このヒットウェイ信号702においては、#1〜#4のキャッシュウェイ102(図1又は図2参照)のうち、キャッシュヒットが発生したキャッシュウェイに対応するビット値のみが1となっている。
ヒットウェイ更新回路701は、メモリアクセス要求308内のアドレス105のインデックスによって指定されるセクタID・RAM203内のブロック番号から読み出された4ビットの現セクタID情報703において、ヒットウェイ信号702のビット値が1となるキャッシュウェイに対応するセクタID値を、メモリアクセス要求308に付加されているセクタID704の値に更新し、その結果得られる新セクタID705を、セクタID・RAM203内の、上記ブロック番号に対応する位置に書き戻す。
このようにして、キャッシュヒットが発生したキャッシュブロック103のセクタID値は、常にメモリアクセス要求308で指定されたセクタID値に一致し、処理の矛盾が発生しないように制御される。
図8は、図7の構成において、図8に示される(1) 〜(5) の5回のメモリアクセス要求308が発生し、(1) 〜(4) のメモリアクセス要求308ではキャッシュミスが発生して置換が起こり、最後の(5) のメモリアクセス要求308ではキャッシュヒットが発生した場合の動作例を示した図である。
図8の(1) 〜(4)のメモリアクセス要求308に対応する動作は、図6の(1) 〜(4)のメモリアクセス要求308に対応するものと同様である。
図8において、5番目の(5) のメモリアクセス要求308が発生したときには、要求にて指定されたセクタID=1、最大ウェイ数=2であり、(5) の直前(=(4) )の状態はセクタID=1の現在のウェイ数=2であるが、ここで、(4)における右端のセクタID=0のキャッシュウェイにてキャッシュヒットが発生したとする。この場合には、第2の実施形態で説明した最大ウェイ数に関する参照・制御は行われずに、キャッシュヒットが発生したキャッシュウェイのセクタID値が、セクタID=0から、メモリアクセス要求308によって指定されたセクタID=1に更新される。
第4の実施形態
次に、第4の実施形態について説明する。
第4の実施形態の構成は、図4に示される本発明の第2の実施形態の構成と基本的には同じである。ただし、「セクタ0用最大ウェイ数+セクタ1用最大ウェイ数>キャッシュメモリの総ウェイ数」という条件を許すことによって、セクタID=0の領域とセクタID=1の領域を重ねる(オーバーラップする)ことができる。これにより、あるセクタIDに割り当てられた領域の中で、
・他方のセクタIDの要求によって、追い出されやすいウェイ
・追い出されにくい、もしくは、追い出されないウェイ
を区別して作ることができる。
具体的には、図4のセクタ0用最大ウェイ数レジスタ402とセクタ1用最大ウェイ数レジスタ403に設定される最大ウェイ数を、上記条件を許すように設定できるものとする。
第4の実施形態の動作を、図9によって説明する。
図9では、第4の実施形態により、最弱ウェイ方式を実現する動作例について説明する。
最弱ウェイ方式とは、キャッシュブロックの置換が必要となったときに、意図したキャッシュブロックが必ず最初に追い出されるように制御する方式である。
図9において、セクタ0用最大ウェイ数レジスタ402には4が設定され、セクタ1用最大ウェイ数レジスタ403には1が設定される。図1又は図2の構成のキャッシュメモリ101の最大ウェイ数は4であるため、図9の901に示されるキャッシュウェイの状態のように、1ウェイがオーバーラップして共用される状態となる。
ユーザは例えば、必ず最初にデータが追い出されるウェイ(これを「最弱ウェイ」と呼ぶ)に関するメモリアクセス要求308に対しては、例えばセクタID=1を設定し、そのセクタID値の最大ウェイ数レジスタにセットされる最大値としては小さな値を設定する。また、そのセクタID値以外のセクタID値の最大ウェイ数レジスタにセットされる最大値としては、前述のようにオーバーラップし得る大きな値が設定する。
図9の例では、セクタID=1が最弱ウェイのセクタIDである。
今、図9(1)の状態は、或るブロック番号の4つのウェイのうち、3つのウェイのキャッシュブロックにはセクタID=0(図中では「セクタ0」と表記されている)のデータが記憶され、1つのウェイのキャッシュブロックにはセクタID=1(図中では「セクタ1」と表記されている)のデータが記憶されている。
この状態で、図9(2)に示されるように、上記ブロック番号に対して、セクタID=0が付加されたメモリアクセス要求308が発生すると、そのブロック番号におけるセクタID=0のウェイ数(=3)はまだその最大数=4に達していないため、前述した第2の実施形態において説明した図4の置換セクタID決定回路401の動作に基づいて、セクタID=1が記憶されているウェイのキャッシュブロックが置換されて(追い出されて)、全てセクタID=0のウェイになる。
次に、図9(3)に示されるように、上記ブロック番号に対して、セクタID=1が付加されたメモリアクセス要求308が発生すると、そのブロック番号におけるセクタID=1のウェイ数(=0)はまだその最大数=1に達していないため、上記と同様にして、セクタID=0が記憶されている4ウェイのキャッシュブロックのうちの1つが置換されて(追い出されて)、1つだけセクタID=1のウェイになる。
特には図示していないが、この後、セクタID=1が付加されたメモリアクセス要求308が発生しても、上記セクタID=1が記憶された1ウェイのキャッシュブロックが次々に置換されるだけで、セクタID=1が記憶されたウェイは1ウェイ以上には増えない。一方、セクタID=0が付加されたメモリアクセス要求308が発生すると、上記セクタID=1が記憶されたキャッシュブロックは、セクタID=0のメモリアクセス要求308にすぐに置換されて追い出されてしまう。

以上のようにして、第4の実施形態により、いわゆる最弱ウェイ方式と同等の機能を実現することが可能となる。
第5の実施形態
図10は、第2の実施形態で示した置換ウェイ制御回路の更なる改良形態に関する第5の実施形態の構成図である。
図10の構成において、図3の構成又は図4の構成と同じ番号が付された部分は、第1又は第2の実施形態の場合と同じ機能を有する。
図10の構成が図4の構成と異なる点は、置換セクタID決定回路401に対して更に、メモリアクセス要求308に付加されているセクタID302の値に応じて、置換セクタID決定回路401の出力406若しくは固定値1001の何れかを選択して、置換セクタID1003として出力するセレクタ1002が追加された点である。
この追加された機能により、例えば、固定値1001が値0とされた場合において、セクタID=1が指定された場合には、最大ウェイ数に基づいてセクタID=0又はセクタID=1の何れのキャッシュウェイを置換するかが置換セクタID決定回路401によって決定され、セレクタ1002によってその結果が置換セクタID406として出力される。これに対して、セクタID=0が指定された場合には、セレクタ1002によって、必ずセクタID=0(自セクタIDと同じ値)が置換対象となる、という機能が実現できる。
ユーザは例えば、最初は固定値1001を設定せずに第2の実施形態の動作を行わせ、その後の或るタイミングにおいて、プログラムから固定値1001=「0」を設定することにより、それ以降はセクタID=1のキャッシュブロックは最大ウェイ数との関連でセクタID=0が記憶されたキャッシュブロックのデータを置換して増やすことができるが、セクタID=0のキャッシュブロックについてはセクタID=1が記憶されたキャッシュブロックのデータを置換して増やされることはない、といった制御状況を作り出すことができる。
このようにして、セクタID=1の領域は、セクタID=1が付加されたメモリアクセス要求308によって必要に応じて増加させることができるのに対し、セクタID=0の領域は、一旦セクタID=1の領域に置換されてしまうと、セクタID=0のメモリアクセス要求308によっても増加させることができないように設定することができる。
第6の実施形態
次に、第6の実施形態について説明する。
図11は、図1又は図2のキャッシュメモリ101の構成において、セクタIDが1ビットではなく2ビットで構成され、0〜3の3値を取り得る場合の、図4に示される置換セクタID決定回路401に相当する構成例を示した図である。
第6の実施形態では、下記の6つのレジスタが接続される。
・セクタ0用最大ウェイ数レジスタ1101
・セクタ1用最大ウェイ数レジスタ1102
・セクタ2用最大ウェイ数レジスタ1103
・現在のセクタ0のウェイ数レジスタ1104
・現在のセクタ1のウェイ数レジスタ1105
・現在のセクタ2のウェイ数レジスタ1106
セクタ0用最大ウェイ数レジスタ1101、セクタ1用最大ウェイ数レジスタ1102、及びセクタ2用最大ウェイ数レジスタ1103には、各キャッシュブロックにおいて、セクタIDとしてそれぞれ値0、値1、及び値2を設定することのできる最大ウェイ数が設定される。これらのレジスタ値は、プログラムから設定可能である。
次に、現在のセクタ0のウェイ数レジスタ1104、現在のセクタ1のウェイ数レジスタ1105、及び現在のセクタ2のウェイ数レジスタ1106には、メモリアクセス要求のアドレス中のインデックスにより或るブロック番号が指定されたときに、セクタID・RAM203(図2参照)から読み出されるセクタID値0が設定されているビット数(
ウェイ数)と、セクタID値1が設定されているビット数(ウェイ数)と、セクタID値2が設定されているビット数(ウェイ数)がそれぞれカウントされて、セットされる。
以上の6つのレジスタ1101〜1106は、例えば図12に示されるように、それぞれ3ビットで構成されており、0から4(最大ウェイ数)までの値をとる。
図11において、メモリアクセス要求にセクタID=0が指定されている場合には、セレクタ1108がセクタ0用最大ウェイ数レジスタ1101の出力を、セレクタ1109が現在のセクタ0のウェイ数レジスタ1104の出力をそれぞれ選択し、それらを比較器1110に入力させる。また、メモリアクセス要求にセクタID=1が指定されている場合には、セレクタ1108がセクタ1用最大ウェイ数レジスタ1102の出力を、セレクタ1109が現在のセクタ1のウェイ数レジスタ1105の出力をそれぞれ選択し、それらを比較器1110に入力させる。更に、メモリアクセス要求にセクタID=2が指定されている場合には、セレクタ1108がセクタ2用最大ウェイ数レジスタ1103の出力を、セレクタ1109が現在のセクタ2のウェイ数レジスタ1106の出力をそれぞれ選択し、それらを比較器1110に入力させる。
この結果、比較器1110の動作は、メモリアクセス要求にて指定されたセクタID値に関して、最大ウェイ数と現在のウェイ数とを比較する。現在のウェイ数が最大ウェイ数よりも小さければ、メモリアクセス要求に付加されているセクタID1107と同じセクタIDを選択させることを指示する例えば値0の自/他選択信号1111を出力し、現在のウェイ数が最大ウェイ数以上の場合には、メモリアクセス要求に付加されているセクタID1107以外のセクタIDを選択させることを指示する例えば値1の自/他選択信号1111を出力する。
図13は、第6の実施形態において、図3又は図4における置換ウェイ選択可能マスク生成回路303及び置換ウェイ選択回路304に相当する構成例を示した図である。
同一セクタIDマスク生成回路1303は、メモリアクセス要求に付加されているセクタID1303と、セクタID・RAM203の該当ブロック番号から読み出されたセクタID情報1302の各セクタID値とを比較し、一致=1/不一致=0のマスクビット列(4ビット)を生成する。
セレクタ1304は、図11に示される比較器1110が出力する自/他選択信号1111が自セクタIDを選択することを指示する(例えば値0)場合には、同一セクタIDマスク生成回路1303が出力する4ビットのマスクビット列をそのまま選択して出力する。また、自/他選択信号1111が他セクタIDを選択することを指示する(例えば値1)場合には、同一セクタIDマスク生成回路1303が出力する4ビットのマスクビット列をインバータ1305でビット毎に反転させて得られる4ビットのビット列を選択して出力する。
LRU選択回路1306は、LRUアルゴリズムに従って、入力する4ビットのビット列の値1のうちの何れか1つを選択し、置換ウェイ1307として出力する。これは図4の置換ウェイ310に対応する信号であり、キャッシュメモリ101上の対応ブロック番号において置換されるべきキャッシュウェイを指定する。
以上説明した第6の実施形態によって、キャッシュメモリ101に対する置換制御を、ユーザがプログラムによってより多段階に制御することが可能となる。
実施形態に対する補足
以上説明した実施形態では、メモリアクセス要求は、ユーザプログラムによって発行されることを前提として説明したが、キャッシュライトバック方式のシステムや複数プロセッサに対応して複数キャッシュメモリを有するようなシステムにおいて、ハードウェアが
キャッシュメモリに対して自動的に発行するメモリアクセス要求についても、全く同様の機能を実現することができる。
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
各セットが2つ以上のキャッシュウェイで構成されセット・アソシアティブ方式に基づいて動作し、キャッシュミスの発生時に決定された置換ウェイに対応する前記キャッシュウェイのキャッシュブロックのデータを置換するキャッシュ動作を行うキャッシュメモリにおいて、
メモリアクセス要求により特定される前記キャッシュブロックの前記各キャッシュウェイに対応させて、該各キャッシュウェイの置換状態を制御するために定義され2つ以上の論理値を取り得るセクタID情報を記憶するセクタID情報記憶手段と、
前記キャッシュミスの発生時に、前記メモリアクセス要求に付加されたセクタID情報と、前記メモリアクセス要求により特定される前記キャッシュブロックの前記各キャッシュウェイに対応して前記セクタID情報記憶手段に記憶されているセクタID情報とに基づいて、前記置換ウェイの候補である置換ウェイ候補を決定する置換ウェイ候補決定手段と、
前記置換ウェイ候補から前記置換ウェイを選択して出力する置換ウェイ選択手段と、
前記メモリアクセス要求により特定される前記キャッシュブロックの前記置換ウェイにより指定されるキャッシュウェイに対応して前記セクタID情報記憶手段に記憶されている前記セクタID情報を、前記メモリアクセス要求に付加されたセクタID情報によって更新するセクタID情報更新手段と、
を含むことを特徴とするセクタ機能付きキャッシュメモリ。
(付記2)
前記セクタID情報の各論理値ごとに割り当てることができるキャッシュウェイの最大値を最大ウェイ数として指定する最大ウェイ数指定手段と、
前記キャッシュミスの発生時に、前記メモリアクセス要求により特定される前記キャッシュブロックの前記各キャッシュウェイに対応して前記セクタID情報記憶手段に記憶されているセクタID情報のうち、前記メモリアクセス要求に付加されたセクタID情報と同じセクタID情報を持つキャッシュウェイの数と、前記最大ウェイ数指定手段で指定される前記メモリアクセス要求に付加されたセクタID情報と同じセクタID情報の最大ウェイ数とを比較する比較手段と、
を更に含み、
置換ウェイ候補決定手段は、前記キャッシュミスの発生時に、該比較手段による比較結果に応じて、前記メモリアクセス要求により特定される前記キャッシュブロックの前記各キャッシュウェイに対応して前記セクタID情報記憶手段に記憶されているセクタID情報のうち、前記メモリアクセス要求に付加されたセクタID情報以外のセクタID情報が記憶されている前記キャッシュウェイ群か、前記メモリアクセス要求に付加されたセクタID情報と同じセクタID情報が記憶されている前記キャッシュウェイ群の何れかの群を、前記置換ウェイ候補として決定する、
ことを特徴とする付記1に記載のセクタ機能付きキャッシュメモリ。
(付記3)
前記最大ウェイ数指定手段は、前記セクタID情報の各論理値ごとの最大ウェイ数の合計数が前記キャッシュメモリにおける前記キャッシュウェイ数よりも大きくなるように、前記セクタID情報の各論理値ごとの最大ウェイ数を設定可能とする、
ことを特徴とする付記2に記載のセクタ機能付きキャッシュメモリ。
(付記4)
前記置換ウェイ候補決定手段は、前記キャッシュミスの発生時に、ユーザによって指定されたセクタID情報の所定値については、前記比較手段による比較結果は判定せずに、前記メモリアクセス要求により特定される前記キャッシュブロックの前記各キャッシュウ
ェイに対応して前記セクタID情報記憶手段に記憶されているセクタID情報のうち、前記メモリアクセス要求に付加されたセクタID情報と同じセクタID情報が記憶されている前記キャッシュウェイ群を、前記置換ウェイ候補として決定する、
ことを特徴とする付記2に記載のセクタ機能付きキャッシュメモリ。
(付記5)
前記セクタID情報更新手段は、前記メモリアクセス要求によってキャッシュヒットが発生したときに、前記メモリアクセス要求により特定される前記キャッシュブロックの前記置換ウェイにより指定されるキャッシュウェイに対応して前記セクタID情報記憶手段に記憶されている前記セクタID情報を、前記メモリアクセス要求に付加されたセクタID情報によって更新する
ことを特徴とする付記1乃至4の何れか1項に記載のセクタ機能付きキャッシュメモリ。
(付記6)
前記セクタID情報は2つの論理値をとり得る、
ことを特徴とする付記1乃至5の何れか1項に記載のセクタ機能付きキャッシュメモリ。
(付記7)
前記セクタID情報は3つ以上の論理値をとり得る、
ことを特徴とする付記1乃至5の何れか1項に記載のセクタ機能付きキャッシュメモリ。
本発明の実施形態のキャッシュメモリの機能構成図である。 本発明の実施形態のキャッシュメモリのハードウェア構成図である。 置換ウェイ制御回路に関する第1の実施形態の構成図である。 置換ウェイ制御回路の改良形態に関する第2の実施形態の構成図である。 第2の実施形態におけるレジスタの構成図である。 第2の実施形態の動作例を示す図である。 ヒットウェイ制御回路に関する第3の実施形態の構成図である。 第3の実施形態の動作例を示す図である。 第4の実施形態の動作説明図である。 置換ウェイ制御回路の更なる改良形態に関する第5の実施形態の構成図である。 第6の実施形態の構成図(その1)である。 第6の実施形態におけるレジスタの構成図である。 第6の実施形態の構成図(その2)である。 セット・アソシアティブ方式のキャッシュメモリの動作概要を示す図である。 置換ウェイ選択回路の説明図である。
符号の説明
101、1401 キャッシュメモリ
102、1402 キャッシュウェイ
103、1403 キャッシュブロック
104、1404 コンパレータ
105、1405 アドレス
201 データRAM
202 タグRAM
203 セクタID・RAM
204、205、305、306、307、401−1、401−2、401−5、
1002、1304 セレクタ
301 セクタID・RAM203から読み出されるセクタID
302、704 要求に付加されているセクタID
303 置換ウェイ選択可能マスク生成回路
303−1 エクスクルーシブオア回路(XOR)
303−2、401−4、1305 インバータ(INV)
304、1501 置換ウェイ選択回路
308 メモリアクセス要求
309 置換ウェイ候補
310、1307 置換ウェイ
401 置換セクタID決定回路
401−3 比較器
402、1101 セクタ0用最大ウェイ数レジスタ
403、1102 セクタ1用最大ウェイ数レジスタ
404、1104 現在のセクタ0のウェイ数レジスタ
405、1105 現在のセクタ1のウェイ数レジスタ
406、1003 置換セクタID
701 ヒットウェイ更新回路
702 ヒットウェイ信号
703 現セクタID情報
705 新セクタID情報
1001 固定値
1103 セクタ2用最大ウェイ数レジスタ
1106 現在のセクタ2のウェイ数レジスタ
1301 置換するセクタID
1302 セクタID情報
1303 同一セクタIDマスク生成回路
1306 LRU選択回路

Claims (5)

  1. 複数のキャッシュウェイの各々に、複数のキャッシュブロックを含むキャッシュメモリにおいて、
    前記各キャッシュウェイに対応するセクタIDであって、該各キャッシュウェイの置換のために用いられる複数の該セクタIDを記憶するセクタID記憶手段と、
    前記各セクタIDに対して設けられ、前記セクタIDに割り当てることができるキャッシュウェイの最大値を指定する最大ウェイ数を保持する複数のウェイ数レジスタと、
    前記セクタID記憶手段に記憶され、メモリアクセス要求に付加されたセクタIDと同じセクタIDのキャッシュウェイ数と、前記ウェイ数レジスタに保持され、前記メモリアクセス要求に付加されたセクタIDと同じセクタIDの最大ウェイ数とを比較する比較手段と、
    前記比較手段の比較結果に基づいて、前記複数のキャッシュウェイのいずれかに対する置換を指示するための置換セクタIDを選択するセレクタと、
    キャッシュミスの発生時に、前記選択された置換セクタIDと、前記メモリアクセス要求に含まれる要求アドレスに対応して前記セクタID記憶手段に記憶された複数のセクタIDとに基づいて、前記複数のキャッシュウェイから置換すべき1以上の置換ウェイ候補を決定する決定手段と、
    決定した1以上の前記置換ウェイ候補から前記置換ウェイを選択する選択手段と、
    前記メモリアクセス要求により特定される前記キャッシュブロックの前記選択された置換ウェイにより指定されるキャッシュウェイに対応する前記記憶されたセクタIDを、前記メモリアクセス要求に付加されたセクタIDによって更新する更新手段と、
    を含むことを特徴とするキャッシュメモリ。
  2. 前記セクタIDの最大ウェイ数の合計数が前記キャッシュメモリにおける前記キャッシュウェイ数よりも大きくなるように、前記セクタIDの最大ウェイ数を割り当て可能とする、
    ことを特徴とする請求項1に記載のキャッシュメモリ。
  3. 前記決定手段は、前記キャッシュミスの発生時に、前記メモリアクセス要求に付加された前記セクタIDとして所定値を特定するとともに、前記所定値として特定されたセクタIDに対応するウェイ数レジスタに対して、他のウェイ数レジスタに保持された最大ウェイ数より小さい最大ウェイ数を設定することによって置換すべき1つの置換ウェイ候補を決定する
    ことを特徴とする請求項1に記載のキャッシュメモリ。
  4. 前記更新手段は、キャッシュヒットの発生時に、前記記憶されたセクタIDを、前記メモリアクセス要求に付加されたセクタIDに置換する
    ことを特徴とする請求項1に記載のキャッシュメモリ。
  5. 複数のキャッシュウェイの各々に、複数のキャッシュブロックと、各セクタIDに対して設けられ、前記各セクタIDに割り当てることができるキャッシュウェイの最大値を指定する最大ウェイ数を保持する複数のウェイ数レジスタと、を含むキャッシュメモリの制御方法であって、
    セクタID記憶手段により、前記各キャッシュウェイに対応するセクタIDであって、該各キャッシュウェイの置換のために用いられる複数の該セクタIDを記憶し、
    比較手段により、前記セクタID記憶手段に記憶され、メモリアクセス要求に付加されたセクタIDと同じセクタIDのキャッシュウェイ数と、前記ウェイ数レジスタに保持され、前記メモリアクセス要求に付加されたセクタIDと同じセクタIDの最大ウェイ数とを比較
    セレクタにより、前記比較手段の比較結果に基づいて、前記複数のキャッシュウェイのいずれかに対する置換を指示するための置換セクタIDを選択し、
    決定手段により、キャッシュミスの発生時に、前記選択された置換セクタIDと、前記メモリアクセス要求に含まれる要求アドレスに対応して前記セクタID記憶手段に記憶された複数のセクタIDとに基づいて、前記複数のキャッシュウェイから置換すべき1以上の置換ウェイ候補を決定し、
    選択手段により、決定した1以上の前記置換ウェイ候補から前記置換ウェイを選択し、
    更新手段により、前記メモリアクセス要求により特定される前記キャッシュブロックの前記選択された置換ウェイにより指定されるキャッシュウェイに対応する前記記憶されたセクタIDを、前記メモリアクセス要求に付加されたセクタIDによって更新する、
    とを特徴とするキャッシュメモリの制御方法。
JP2007341423A 2007-12-28 2007-12-28 セクタ機能付きキャッシュメモリ Active JP5217432B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2007341423A JP5217432B2 (ja) 2007-12-28 2007-12-28 セクタ機能付きキャッシュメモリ
EP08162538.6A EP2075705B1 (en) 2007-12-28 2008-08-18 Cache memory having sector function
US12/193,888 US8583872B2 (en) 2007-12-28 2008-08-19 Cache memory having sector function
KR1020080089181A KR100971481B1 (ko) 2007-12-28 2008-09-10 섹터 기능이 있는 캐시 메모리
CN2008102135667A CN101470670B (zh) 2007-12-28 2008-09-11 具有扇区功能的高速缓冲存储器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007341423A JP5217432B2 (ja) 2007-12-28 2007-12-28 セクタ機能付きキャッシュメモリ

Publications (2)

Publication Number Publication Date
JP2009163450A JP2009163450A (ja) 2009-07-23
JP5217432B2 true JP5217432B2 (ja) 2013-06-19

Family

ID=40396952

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007341423A Active JP5217432B2 (ja) 2007-12-28 2007-12-28 セクタ機能付きキャッシュメモリ

Country Status (5)

Country Link
US (1) US8583872B2 (ja)
EP (1) EP2075705B1 (ja)
JP (1) JP5217432B2 (ja)
KR (1) KR100971481B1 (ja)
CN (1) CN101470670B (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8200904B2 (en) * 2007-12-12 2012-06-12 Sandisk Il Ltd. System and method for clearing data from a cache
JP5413001B2 (ja) * 2009-07-09 2014-02-12 富士通株式会社 キャッシュメモリ
US8392658B2 (en) * 2009-07-10 2013-03-05 Apple Inc. Cache implementing multiple replacement policies
JP5609092B2 (ja) * 2009-12-09 2014-10-22 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP5557313B2 (ja) * 2010-03-05 2014-07-23 エヌイーシーコンピュータテクノ株式会社 キャッシュメモリ制御システム、その制御方法及び制御プログラム
WO2011133146A2 (en) * 2010-04-21 2011-10-27 Empire Technology Development Llc Storage efficient sectored cache
JP6012263B2 (ja) * 2011-06-09 2016-10-25 株式会社半導体エネルギー研究所 半導体記憶装置
JP5565425B2 (ja) 2012-02-29 2014-08-06 富士通株式会社 演算装置、情報処理装置および演算方法
KR101789190B1 (ko) 2012-03-06 2017-11-20 한국전자통신연구원 스크래치 패드 메모리 구조를 이용한 캐시 및 이를 포함하는 프로세서
JP6149595B2 (ja) 2013-08-13 2017-06-21 富士通株式会社 キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
US9524242B2 (en) 2014-01-28 2016-12-20 Stmicroelectronics International N.V. Cache memory system with simultaneous read-write in single cycle
JP6248808B2 (ja) 2014-05-22 2017-12-20 富士通株式会社 情報処理装置、情報処理システム、情報処理装置の制御方法、及び、情報処理装置の制御プログラム
EP3066571B1 (en) 2014-12-14 2018-06-13 VIA Alliance Semiconductor Co., Ltd. Cache memory budgeted by ways on memory access type
EP3129890B1 (en) * 2014-12-14 2019-08-14 VIA Alliance Semiconductor Co., Ltd. Set associative cache memory with heterogeneous replacement policy
WO2016097807A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Cache replacement policy that considers memory access type
US9898411B2 (en) * 2014-12-14 2018-02-20 Via Alliance Semiconductor Co., Ltd. Cache memory budgeted by chunks based on memory access type
WO2016097806A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Fully associative cache memory budgeted by memory access type
KR102438552B1 (ko) * 2015-02-04 2022-09-01 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작방법
CN104932990B (zh) * 2015-06-03 2018-05-11 华为技术有限公司 一种高速缓冲存储器中数据块的替换方法和装置
CN109614349B (zh) * 2018-12-11 2023-04-11 杭州阿姆科技有限公司 一种基于绑定机制的缓存管理方法
US12045644B2 (en) * 2019-05-24 2024-07-23 Texas Instruments Incorporated Pseudo-random way selection
US11188465B1 (en) * 2020-09-02 2021-11-30 Shenzhen GOODIX Technology Co., Ltd. Cache memory replacement policy
CN113392043A (zh) * 2021-07-06 2021-09-14 南京英锐创电子科技有限公司 缓存数据替换方法、装置、设备和存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5133061A (en) 1987-10-29 1992-07-21 International Business Machines Corporation Mechanism for improving the randomization of cache accesses utilizing abit-matrix multiplication permutation of cache addresses
JPH0469751A (ja) * 1990-07-10 1992-03-04 Matsushita Electric Ind Co Ltd キャッシュ装置
JPH04175946A (ja) 1990-11-09 1992-06-23 Hitachi Ltd マルチプロセッサ・データ処理システムおよびそれに用いられるキャッシュ装置
US5966734A (en) 1996-10-18 1999-10-12 Samsung Electronics Co., Ltd. Resizable and relocatable memory scratch pad as a cache slice
JP3331592B2 (ja) * 1998-05-22 2002-10-07 日本電気株式会社 キャッシュメモリ
US6434668B1 (en) 1999-09-07 2002-08-13 International Business Machines Corporation Method of cache management to store information in particular regions of the cache according to information-type
US6553457B1 (en) 2000-04-19 2003-04-22 Western Digital Technologies, Inc. Tag memory disk cache architecture
US6681295B1 (en) * 2000-08-31 2004-01-20 Hewlett-Packard Development Company, L.P. Fast lane prefetching
US6678792B2 (en) 2001-06-22 2004-01-13 Koninklijke Philips Electronics N.V. Fast and accurate cache way selection
US6789167B2 (en) 2002-03-06 2004-09-07 Hewlett-Packard Development Company, L.P. Method and apparatus for multi-core processor integrated circuit having functional elements configurable as core elements and as system device elements
US6990557B2 (en) 2002-06-04 2006-01-24 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with cache eviction based on thread identifier
JP2004110240A (ja) * 2002-09-17 2004-04-08 Mitsubishi Electric Corp キャッシュメモリ装置
US6851030B2 (en) * 2002-10-16 2005-02-01 International Business Machines Corporation System and method for dynamically allocating associative resources
JP4753549B2 (ja) * 2004-05-31 2011-08-24 パナソニック株式会社 キャッシュメモリおよびシステム
US7558920B2 (en) * 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7284094B2 (en) * 2005-02-09 2007-10-16 International Business Machines Corporation Mechanism and apparatus allowing an N-way set associative cache, implementing a hybrid pseudo-LRU replacement algorithm, to have N L1 miss fetch requests simultaneously inflight regardless of their congruence class
US7610448B2 (en) 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns

Also Published As

Publication number Publication date
EP2075705B1 (en) 2014-12-03
US8583872B2 (en) 2013-11-12
US20090172289A1 (en) 2009-07-02
KR100971481B1 (ko) 2010-07-21
CN101470670B (zh) 2011-12-14
KR20090072933A (ko) 2009-07-02
EP2075705A1 (en) 2009-07-01
CN101470670A (zh) 2009-07-01
JP2009163450A (ja) 2009-07-23

Similar Documents

Publication Publication Date Title
JP5217432B2 (ja) セクタ機能付きキャッシュメモリ
JP4098347B2 (ja) キャッシュメモリおよびその制御方法
KR102546238B1 (ko) 다중 테이블 분기 타겟 버퍼
US7805595B2 (en) Data processing apparatus and method for updating prediction data based on an operation&#39;s priority level
TWI533201B (zh) 縮減交易回復的快取控制
US20060036811A1 (en) Method for software controllable dynamically lockable cache line replacement system
US20110167224A1 (en) Cache memory, memory system, data copying method, and data rewriting method
JP2007011580A (ja) 情報処理装置
JP4008947B2 (ja) キャッシュメモリ及びその制御方法
US7555610B2 (en) Cache memory and control method thereof
US6622209B2 (en) Use of non-count data and index hashing to reduce false hits in a non-tagged, n-way cache
US8108611B2 (en) Cache memory system
US20110179227A1 (en) Cache memory and method for cache entry replacement based on modified access order
JP5224959B2 (ja) キャッシュシステム
JPH0659977A (ja) 明示的なライン置換え操作が可能なキャッシュメモリとその制御方法
US20210149813A1 (en) Data write system and method
JPH10207767A (ja) ロック機能付キャッシュメモリ及びこのキャッシュメモリを備えたマイクロプロセッサ
JP2001005725A (ja) キャッシュ記憶装置
JP2003177965A (ja) キャッシュメモリ装置
JP2000235519A (ja) キャッシュシステムおよびキャッシュ処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100820

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120814

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121012

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130115

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130218

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

Free format text: PAYMENT UNTIL: 20160315

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5217432

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150