JP4327669B2 - キャッシュ装置及び方法 - Google Patents

キャッシュ装置及び方法 Download PDF

Info

Publication number
JP4327669B2
JP4327669B2 JP2004190856A JP2004190856A JP4327669B2 JP 4327669 B2 JP4327669 B2 JP 4327669B2 JP 2004190856 A JP2004190856 A JP 2004190856A JP 2004190856 A JP2004190856 A JP 2004190856A JP 4327669 B2 JP4327669 B2 JP 4327669B2
Authority
JP
Japan
Prior art keywords
tag
lru
pointer
cache
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004190856A
Other languages
English (en)
Other versions
JP2006012006A (ja
Inventor
徳元 王
Original Assignee
徳元 王
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 徳元 王 filed Critical 徳元 王
Priority to JP2004190856A priority Critical patent/JP4327669B2/ja
Priority to US11/597,494 priority patent/US7627719B2/en
Priority to PCT/CN2005/000199 priority patent/WO2006000138A1/zh
Priority to CNB200580017597XA priority patent/CN100476756C/zh
Publication of JP2006012006A publication Critical patent/JP2006012006A/ja
Application granted granted Critical
Publication of JP4327669B2 publication Critical patent/JP4327669B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/125Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being generated by decoding an array or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、データのキャッシュ処理をおこなうキャッシュ装置および方法に関する。さらに詳細にいえば、キャッシュメモリの利用率を従来よりもはるかに高めると共に、大容量のキャッシュメモリにおいてもキャッシュ処理を高速でおこなえるキャッシュ装置および方法に関する。さらには、ホストPCと記憶装置とのアクセスの高速化を実現できるキャッシュ装置および方法に関する。
一般に、CPUあるいはホストPCの処理速度に対して、これらと外部主記憶メディアとのデータのアクセス速度は低速である。従って、CPUやホストPCの能力をいかに向上させても、外部主記憶メディアとのデータのアクセス速度が全体の処理の高速化におけるボトルネックとなってしまう。
この問題を解決するために、従来、CPUと外部主記憶メディアとの間に、ローカルキャッシュメモリが用いられている。これは、外部主記憶メディアよりも容量は小さいものの、比較的に高速でアクセスすることができるので、一度外部主記憶メディアから読み込んだデータをここに格納することで、全体の処理の速度向上を図ることができる。
一般に、CPUと、外部主記憶メディアとの間のデータのアクセスは、数バイトからなるデータの単位、即ち、ブロック(あるいはライン)で行なわれている。このブロックは数ビットからなるアドレスを持ち、これが外部主記憶メディアにおけるデータのデータアドレスである。
外部主記憶メディアのデータをキャッシュメモリに対応づけるには、例えば、特開2004−38807に見られるような、nウェイセットアソシアティブ方式が用いられている。この公報の従来例で説明されているように、キャッシュメモリは数ウェイからなり、各々のウェイは複数のブロックからなる。さらに、ウェイ内における各々のブロックには、ウェイ内における位置を示すインデックスが与えられている。このキャッシュメモリに対して、データのデータアドレスの下位数ビットa1をインデックスとして、また、上位数ビットa2をこのデータのタグとして使用する。このように、外部主記憶メディアのデータをデータアドレスを元にしてキャッシュメモリ内のブロックに対応づける方法である。
この方法は、データアドレスの下位数ビットa1が同じであるデータ、即ち、同じインデックスを持つデータをウェイ数分だけ複数格納することができる。しかし、同じインデックスの新しいデータをウェイ数分以上格納するには、各々のウェイに格納されている同じインデックスのデータのうちより、例えば、LRU(Least Recently Used)等で選択し、これと置き換えなければならなかった。このとき、他のインデックスに空のブロックがあっても、そこに格納することはできない。なぜなら、外部主記憶メディアのデータのデータアドレスの下位数ビットa1は、キャッシュメモリにおける特定のインデックスを指定しており、この場所に限定されているからである。従って、この方法では、キャッシュメモリ全体では空所があるにもかかわらず、新しいデータを格納するためにキャッシュメモリ上のデータを削除しなくてはならない場合があり、キャッシュメモリの使用率を低下させていた。
この他の方法に、キャッシュメモリにおけるブロックの全てをウェイとみなす方法がある。この場合、外部主記憶メディアのデータはキャッシュメモリ上における特定の位置に限定されず、このデータをキャッシュメモリ上の全ての位置に格納することができる。しかし、キャッシュメモリ容量やブロック容量の条件を同じとして、前述の方法と比較すると、この方法はタグの個数が多くなってしまう。従って、目的のタグを抽出する処理に時間が掛かってしまう点が問題であった。
特開2004−38807
本願発明は上記従来の問題点に鑑みなされたものであり、大容量のキャッシュメモリにおいてもキャッシュ処理を高速でおこなうキャッシュ装置および方法を提供することを課題とする。さらには、キャッシュメモリの利用率を従来よりはるかに高めることができるキャッシュ装置および方法を提供することを課題とする。
上記課題を解決するために本発明は、キャッシュメモリに記憶しているデータのタグをサーチする手段と、前記サーチの結果、ヒットであればヒットしたタグのアドレスを出力し、ヒットではない場合には事前に用意したLRUであるタグのアドレスを出力する手段と、次回のサーチのため、現時点でのLRUであるタグを決定する手段と、アクセスされたデータのタグに対応させた形で、アクセスされる度に、アクセス順に増加するポインタ値を記憶する手段と含み、前記LRUであるタグは、前記ポインタ値を用いて決定される、キャッシュ装置を提供する。
ある実施の形態においてそのキャッシュ装置は、さらに、全てのポインタ値のうちの最大値が所定の値に達したときに、全てのポインタ値を修正する手段を含んでいる。
上記課題を解決するために本発明は、キャッシュメモリに記憶しているデータのタグをサーチする段階と、前記サーチの結果、ヒットであればヒットしたタグのアドレスを出力し、ヒットではない場合には事前に用意したLRUであるタグのアドレスを出力する段階と、次回のサーチのため、現時点でのLRUであるタグを決定する段階と、アクセスされたデータのタグに対応させた形で、アクセスされる度に、アクセス順に増加するポインタ値を記憶する段階と、前記LRUであるタグを、前記ポインタ値を用いて決定する段階を含む、キャッシュ方法を提供する。
ある実施の形態でのそのキャッシュ方法は、さらに、全てのポインタ値のうちの最大値が所定の値に達したときに、全てのポインタ値を修正する段階を含んでいる。
さらに他の実施の形態でのキャッシュ方法は、アクセスされたデータに対応して記憶されるポインタ値として、現在の時刻に対応したグローバルポインタ値を有するグローバルポインタが現在有するグローバルポインタ値を与える段階と、前記グローバルポインタが有するグローバルポインタ値に1を加える段階と、前記グローバルポインタ値が所定の値に達したときに、前記グローバルポインタ値と、前記データに対応して記憶された全てのポインタ値から、第2の所定の値だけ減ずるシフト処理を行う段階を含んでいる。そのより具体的な実施例では、前記シフト処理は分散して順次行われる。
さらに他の実施の形態でのキャッシュ方法においては、前記記憶されたポインタ値は、その大きさに基づいて、ポインタ値が大きいグループであるMRUグループと、小さいグループであるLRUグループと、MRUグループとLRUグループとの間の中間グループとに分類し、前記MRUグループに属するタグがヒットされた場合には、該ヒットされたタグのポインタ値は更新せず、前記中間グループとLRUグループに属するタグがヒットされたときには該ヒットされたタグのポインタ値を更新し、前記MRUグループに属するポインタ値のうちの最小のポインタ値を前記中間グループに移すようになっている。
さらに他の実施の形態でのキャッシュ方法においては、前記ポインタ値が、同サイズのサブLRU表に分割されているLRU表に記憶される段階と、前記各サブLRU表から最小のポインタ値を抽出して、該抽出されたポインタ値により、同サイズの中間サブLRU表に分割されている中間LRU表を作成する段階と、さらに前記各中間サブLRU表から最小のポインタ値を抽出して次の中間LRU表を作成する段階を繰り返し、最終LRUであるタグを抽出する段階を含んでいる。
さらに他の実施の形態でのキャッシュ方法においては、データがアクセスされることにより前記LRU表のポインタ値のいずれかが更新されたとき、前記サブLRU表と各中間サブLRU表のうち該更新されたポインタ値に関係する表のみを更新する段階を含む、キャッシュ方法
本発明における上記に述べたキャッシュ装置および方法は、最終LRUのデータのタグ、即ち、キャッシュメモリ上で最も遠い過去に使用されたデータのタグを高速で抽出することができる。さらに、本発明は、キャッシュメモリのブロック全てを常に使用できるのでキャッシュメモリにおけるヒット率を高めることができる。従って、タグの個数が大量となる大容量のキャッシュメモリのキャッシュ処理を高速でおこなうことができるとともに、ヒット率の高いキャッシュ装置および方法を提供することができる。
従って、本発明は、特にHDDアレーやDVDアレー等、比較的にオーバーヘッドの高いメディアを利用する場合、データのアクセス速度を向上させるに有効である。また、本発明は、多数のクライアントのアプリケーションから同一の外部主記憶メディアにアクセスするネットワークシステム等に利用することで、高速処理ができるシステムを比較的低価格で構築することができる。さらに、本発明は、比較的に高速なサーチ手法、例えばCAM(Content Addressed Memory)等を用いることで、より高速なシステムとすることができる。
以下、本発明の具体的な実施の形態について図面を参照しながら説明する。図1は、本発明を用いたシステムの概略図である。符号1は、ホストであり、データのアクセスを命令するPCやワークステーション等である。符号2は、キャッシュ装置であり、キャッシュ装置2はキャッシュ制御部7aとキャッシュメモリ7bとからなる。符号3は、記憶装置であり、データを保存するHDDアレーやDVDアレー等の外部主記憶メディアである。キャッシュ装置2は、ホスト1と記憶装置3の間でデータの受け渡し等をする役割を果たす。ホスト1とのデータの受け渡しはホストインターフェイス7cを経由しておこない、記憶装置3とのデータの受け渡しはターゲットインターフェイス7dを経由しておこなう。
ホスト1からデータを書き込む命令が出された時、キャッシュ装置2は、ホスト1から指示されたデータを受け取り、記憶装置3にこれを書き込むと共にキャッシュ装置2内のキャッシュメモリ7bにも、これを最も最近に使用されたデータ、即ち、MRU(Most Recently Used)データとして格納する。
これとは逆に、ホスト1からデータを読み込む命令が出された時、キャッシュ装置2は、まず、キャッシュメモリ7bに指示されたデータがあるかどうかを確認する。このデータがある場合は、キャッシュ装置2はそのデータを即時にホスト1に渡す。そして、このデータは今までのMRUよりも最近に使用されたこととなり、今までのMRUデータに代わって新しいMRUデータとしてキャッシュメモリ7b内にそのまま格納される。指示されたデータがない場合、キャッシュ装置2は記憶装置3よりこのデータを得て、これを新しいMRUデータとしてキャッシュメモリ7b内に格納する。そして、このデータをホスト1に渡す。ところで、新しいデータをキャッシュメモリ7bに格納する際、キャッシュメモリ7bにそのスペースがない場合、この新しいデータは、キャッシュメモリ7bに格納しているデータの中で遠い過去に使用されたデータの中から、キャッシュメモリ7bから除去すべきデータ、即ち、LRUデータと置き換わって格納される。
図のシステムにおけるキャッシュ装置2の主な働きは以上に述べた通りである。つまり、キャッシュ装置2は、キャッシュメモリ7bにデータを格納し、これを利用する処理をおこなう、即ち、キャッシュ処理をおこなうことで、システムの高速化を図るものである。このキャッシュ処理は、データが持つ数ビットからなるデータアドレスから得るタグを利用することで実現され、このタグを利用したキャッシュ処理についての詳細な説明は、後述する。
図2は、キャッシュ装置2の、より詳細な構成を示す図である。キャッシュ装置2におけるキャッシュ制御部7aは、符号4で示されたCPUとその周辺部(以下、単にCPU4という)と、符号5で示された制御回路とからなる。制御回路5は、データの受け渡しをおこなうインターフェース部6aと、詳細な説明は後述するキャッシュ処理をおこなうキャッシュ処理部6bとからなる。
キャッシュ装置2は、ホスト1からの書き込みおよび読み込み命令を、ホストインターフェイス7cを経由して、インターフェイス部6aの橋渡しにより、CPUインターフェイス6cを経由してCPU4に送る。CPU4はこの命令に従い、キャッシュ処理の命令を、CPUインターフェイス6cを経由してインターフェイス部6aの橋渡しにより、キャッシュ処理部6bに与える。キャッシュ処理部6bは、この命令によりキャッシュ処理をおこなう。その後、キャッシュ処理部6bは、キャッシュ処理の結果をCPU4に渡す。そして、CPU4はインターフェイス部6aを橋渡しとして、ホスト1に、あるいは、記憶装置3に、あるいは、キャッシュメモリ7bに対して書き込みおよび読み込みの制御をおこなう。尚、ここで取り上げた制御回路5は、例えば、FPGA(Field Programmable Gate Array)等を利用することで実現することができる。また、本実施の形態においては制御回路としたが、必ずしも回路として構成する必要はない。例えば、これをソフトウェアを用いて実現することもできる。
図3は、キャッシュ処理部6bでおこなわれるキャッシュ処理のフローチャートである。前述の通り、CPU4はキャッシュ処理の命令をキャッシュ処理部6bに与える。ここでの命令は所定のタグの要求であり、図における符号30のサーチ要求で示される。キャッシュ処理部6bがおこなう本願発明のキャッシュ処理は、図において破線で囲まれたサーチ処理P1と後処理P2とによる2段階の処理からなることを特徴とする。即ち、サーチ処理P1ではサーチ要求30によりキャッシュメモリ7b内のタグのサーチをおこない、その結果を符号31、32が示すサーチ結果として先にCPU4に渡す。そして、CPU4にサーチ結果を渡した後に、後処理P2では次回のキャッシュ処理の準備をおこなう。これらの処理の詳細な説明は、後述する。
図4では、キャッシュ処理をおこなう際に使用するインデックス1表8a、インデックス2表9a、・・・、インデックスn表10aとタグ表11aとを示している。前述のサーチ処理P1はこれらを用いておこなわれる。タグ表11aは、同サイズの複数のサブタグ表11b、11c、11d・・・からなる。そして、目標のタグがどのサブタグ表11b、11c、11d・・・にあるかどうかを調べるために、インデックス1表8aから次の段階のインデックス2表9a、さらに次の段階へと続き、最後にインデックスn表10aを用いた各段階の絞り込み処理をおこなう。
タグを絞り込むために用いるインデックス1表8aは、複数のセル8b、8c、8d、・・・からなる。これらは、キャッシュメモリ7b内のタグを所定の範囲のタグ値ごとにグループ分けするための情報を備えている。このグループ分けは、グループの区切りとなるタグ値にはキャッシュメモリ7b内にあるデータのタグのタグ値を用いることと、グループにおけるタグの個数は所定の個数以内とすることを条件としておこなわれる。従って、各々のセル8b、8c、8d、・・・は、グループに分けられた次の段階であるインデックス2表のサブ表9b、9c、9d・・・における先頭のタグ値と、インデックス2のサブ表9b、9c、9d・・・の番号からなる。また、これらのセル8b、8c、8d、・・・は、タグ値の大きさ順にソートされている。各々のセル8b、8c、8d、・・・より示される所定の範囲に目標のタグのタグ値が含まれる時、その範囲のインデックス2表のサブ表の番号を得ることで、このタグの見つけるための絞り込みがおこなわれる。
そして、次の段階となるインデックス2表9aにより更なる絞り込みがおこなわれる。インデックス2表9aは複数のインデックス2のサブ表9b、9c、9d・・・からなる。これらのインデックス2のサブ表9b、9c、9d、・・・は、インデックス1表8aと同様に、次の段階であるインデックス3表のサブ表における先頭のタグ値と、インデックス3のサブ表の番号からなる複数のセルで構成されている。これらの内、インデックス1表8aの段階で選択されたインデックス2表のサブ表の各々のセルより示される所定の範囲に目標のタグのタグ値が含まれる時、その範囲のインデックス3表のサブ表の番号を得ることができる。これにより、このタグを見つけるための絞り込みが更におこなわれる。
このように、目標のタグに達するためにインデックス1表8aから最終的にはインデックスn表10aへと段階ごとに絞り込んでいく。このインデックスn表10aは、複数のインデックスnのサブ表10b、10c、10d、・・・からなる。これらのインデックスnのサブ表10b、10c、10d・・・は、サブタグ表11b、11c、11d、・・・の先頭タグ値と、サブタグ表11b、11c、11d、・・・の番号からなる複数のセルで構成されている。従って、目標のタグのタグ値を含んだサブタグ表の番号を得て、これに到達することができる。サブタグ表11b、11c、11d・・・内における各々のタグは、タグ値の大きさ順にソートされており、ここで目標のタグがあるかどうかを調べることができる。
要求されたタグがある、即ち、ヒットであると、このタグのキャッシュメモリ7bのデータアドレスを得ることができる。要求されたタグがなかった、即ち、ヒットされなかった場合、タグ表11aにおける表の整理処理が必要となる。前述の通り、キャッシュ処理によりLRUデータに新たなデータであるMRUデータが置き換わる。この時、MRUデータのタグは、このタグ値によりタグ表11aの各サブタグ表11b、11c、11d、・・・のいずれかに挿入される。そして、このMRUデータと置き換わったデータのタグ、即ち、LRUデータのタグは、このタグが記入されていたサブタグ表より削除されるからである。
通常は、このようにサブ表11aの表の整理処理だけがおこなわれる。ところが、この表の整理処理により、サブタグ表11b、11c、11d・・・の増減が発生する場合があり、この時は、これに伴い各インデックス表の表の整理処理もおこなわなければならない。これらの各表の増減は、各表に対応するマッピング表13、・・・、14、15により管理されている。
サブタグ表11b、11c、11d・・・の増減は以下の条件で発生する。即ち、MRUデータのタグが挿入されたサブタグ表におけるタグの個数が所定の個数を超えた場合である。この場合、使用していないサブタグ表をサブ表のマッピング表15から得て、これにタグの個数の半分を分けることになり、サブタグ表の増加となる。また、LRUデータのタグが削除されたサブタグ表におけるタグの個数が所定の個数の、例えば、4分の1になった場合は、サブタグ表の減少となる。この場合、そのサブタグ表は、論理的に隣接する、すなわち、その先頭タグ値に最も近い先頭タグ値を有するサブタグ表と合併し、これにより1つのサブタグ表は使用されない状態になる。しかし、合併したときのタグの合計数が前述の所定の個数を越えてしまう場合は、合計したタグの個数を半分に分けて2つのサブタグ表に分けるので、このタグの削除する作業に関連するサブタグ表の増減はない。
図5では、キャッシュ処理をおこなう際に使用するLRU表16と中間1LRU表17と中間nLRU表18を示している。これらの表は、キャッシュメモリ7b上において最も遠い過去にアクセスされたデータを示すタグ、即ち、最終LRU19のタグを抽出するために用いられる。
LRU表16は、キャッシュメモリ7bに格納されている全てのデータのタグからなり、これらのタグはLRUを抽出するためのポインタ値を備えている。ポインタ値とは、アクセスがおこなわれたデータに与えられる数値で、これは、符号23に示されるグローバルポインタから与えられ、キャッシュ処理における現時刻に対応するものである。このグローバルポインタ23の値は、常に現段階のMRUのポインタ値+1の値となっている。このポインタ値を備えたこれらのタグは、所定の個数ごとに同サイズからなる複数のサブLRU表20a、20b、・・・に分けられており、LRU表16は複数のサブLRU表20a、20b、・・・からなる。
最終LRU19のタグを抽出するにあたり、先ず、LRU表16の各サブLRU表20a、20b・・・より最も小さいポインタ値を持つタグが抽出される。そして、これらが集まり中間1LRU表17となる。中間1LRU表17の内容は、LRU表から抽出されたタグのポインタ値と、これに対応するデータアドレスで構成されている。中間1LRU表17は、同サイズからなる複数の中間1サブLRU表21a、21b、・・・に分けられている。この各中間1サブLRU表21a、21b、・・・より最も小さいポインタ値が抽出される。そして、これらが集まり中間2LRU表となる。このように、LRU表16から、最終的には1つの中間nサブLRU表22を有する中間nLRU表18へと段階ごとに絞り込んでいくことで、最終LRU19が抽出され、これのキャッシュメモリ上のアドレスとタグを知ることができる。
ところで、この最終LRU19の抽出ために毎回全ての表の処理をする必要はない。即ち、最終LRU19を抽出するには、前の処理において変化のあったサブLRU表と、中間1サブLRU表と、・・・、中間nサブLRU表の処理をするのみでよい。
例えば、タグの個数が全部で1,000個とし、サブLRU表20a、20b、・・・と各中間サブLRU表とにおけるタグの個数を10個と設定した場合、サブLRU表21a、21b、・・・の数は100個となり、中間1サブLRU表21a、21b、・・・の数は10個となり、そして、中間2サブLRU表は1個となり、これより最終LRU19が抽出される。この条件で、LRU表16の15番目のタグが新しいMRUデータのタグを置き換わった場合、新たな最終LRU19を抽出するために処理が必要な表は変化のあった表、即ち、(2番目の)サブLRU表20bと、(1番目の)中間1サブLRU表21aと、中間2サブLRU表のみである。これらの3つの各表の処理は次のようにおこなわれる。(2番目の)サブLRU表20bから最小のポインタ値であるLRU1を抽出すると共に、(1番目の)中間1サブLRU表21aと、中間2サブLRU表とのそれぞれから最小のポインタ値であるLRU2とLRU3とを抽出する。そして、このLRU1を(1番目の)中間1サブLRU表21aに記入するとともに、LRU1とLRU2とを比較する。そして、その小さい方を中間2サブLRU表に記入するとともに、これとLRU3とを比較する。その小さい方が最も小さいLRU、即ち、新たな最終LRU19となる。
図6は、LRU表16とキャッシュメモリ7bとの関係を示している。図のように、LRU表16におけるサブLRU表20は、キャッシュメモリ7b上のメモリ大ブロックに対応している。さらに、サブLRU表20a、20b、・・・における1つのタグが示すデータは、キャッシュメモリ7b上のメモリ小ブロックに対応している。
例えば、1つのタグが64KBのデータを代表する場合、メモリ小ブロックのサイズは64KBである。これと同時に、サブLRU表20のサイズを10とした場合、メモリ大ブロックのサイズは640KBである。キャッシュメモリ7bの全容量が64GBであれば、LRU表16は10万個のサブLRU表20からなる。
図7は、ポインタ値のシフト処理前とシフト処理後を示している。シフト処理とは、キャッシュメモリ7b上における全てのタグのポインタ値を所定の数値だけ減少させる処理である。即ち、キャッシュ処理により最終LRU19のポインタ値を持つタグがMRUのポインタ値を持つタグに置き換わることで、キャッシュメモリ7b内における各タグが備えるポインタ値は常に増える方向となっている。従って、一定の期間の経過によりおこるMRUのポインタ値のオーバーフローを防ぐため、MRUのポインタ値の上限値を基準として定期的におこなう処理である。
この処理は、各サブLRU表20a、20b・・・と、各中間1サブLRU表21a、21b、・・・と、・・・、中間nサブLRU表22とに対して、表単位でおこなう。例えば、1回のキャッシュ処理の後に、予め決められた順番でこれらの1つの表をシフト処理する。そのため、最終LRU19を抽出する処理において、シフト処理済みの表からシフト処理をまだしていない表にポインタ値を移すときには、これをシフト処理前の数値に戻してからおこなう。シフト処理の回数は、LRU表16におけるタグの個数が1,000個で、各サブLRU表のタグの個数が10個の場合、111回の処理になる。ポインタ値の上限値を10,000,000に設定し、シフト処理する数値を8,000,000とした場合、8,000,000回のキャッシュ処理の中で111回のシフト処理をすることとなる。
次に、キャッシュ処理部6bにおけるキャッシュ処理の流れを図3のフローチャートを用いて説明をする。キャッシュ処理部6bの入口ではステップ91のサーチ要求待ちの処理により、CPU4のサーチ要求30を受け取る。サーチ要求待ち処理は、サーチ要求30を受け取らなければ先の処理に進むことができないようにループしている。ステップ91でサーチ要求30を受けることによりキャッシュ処理は開始され、前述の通り、本願発明ではこの処理をサーチ処理P1と後処理P2の2段に分けておこなう。
サーチ処理P1では、ステップ101にて、CPU4のサーチ要求30であるタグのサーチをおこなう。前述の通り、先ず、各インデックス表8a、9a、・・・、10aとタグ表11aを用いて、目的のタグがキャッシュメモリ7b上にあるかどうかを調べる。
目的のタグがあった場合、即ちヒットの場合、ステップ103にてそのサーチ結果31を、即ち、タグ表11aを用いて得た目的のタグのキャッシュメモリ7b上のデータアドレスをCPU4に渡す。そして、後述するステップ203へ進む。目的のタグがなかった場合、即ちヒットしなかった場合、ステップ102にて事前に用意されているサーチ結果32を、即ち、最終LRUのタグのキャッシュメモリ7b上のデータアドレスをCPU4に渡す。このように目的のタグの有無に係らず、本願発明のキャッシュ処理は、まず、サーチ処理P1にてCPU4にサーチ要求30のサーチ結果をすぐに渡し、その後に次のキャッシュ処理の準備としての後処理P2をおこなうこととしたので、システム全体としての高速化が図れる。
後処理P2は、初めにタグ表11aの表の整理処理をおこなう。ステップ201では、前述したように、キャッシュメモリ7bに格納された新しいデータのタグをタグ表11aに挿入する。そして、ステップ202にて、この新しいデータと置き換わったLRUのデータのタグをタグ表11aから削除する。そして、前述した各表の整理作業をおこなう。この後、ステップ203へ進む。
ステップ203にて、次回のキャッシュ処理のために最終LRU19のタグを用意する。また、この処理は、サーチ処理P1にて目的のタグがヒットした場合でも、ステップ103を経て実行される。ここでは、LRU表16を用いて最終LRU19のタグを抽出する。そして、この処理の後、MRUのポインタ値が所定の基準値に達したかどうかの判断がなされる。基準値に達していない場合はキャッシュ処理の入口、即ち、ステップ91へ戻る。基準値に達した場合はステップ204に進む。
ステップ204ではポインタ値のシフト処理がおこなわれる。即ち、限りなく増加するポインタ値がオーバーフローとなる前に、前述の通り、ポインタ値を減少させる方向にシフトする処理である。
ところで、キャッシュ処理の中で常にヒットがない、あるいは、ヒットとなってもLRUのタグのみである場合、LRU表16の中のMRUのポインタ値とLRUのポインタ値との差がLRU表16におけるタグの個数と等しくなる。しかし、MRUのポインタ値とLRU以外のポインタ値を持つタグがヒットした場合、そのタグは新しいMRUになり、MRUのポインタ値と最終LRUのポインタ値との差がLRU表16におけるタグの個数より大きくなって行く。この場合の極端な例では、MRUのタグとMRU−1のタグが交互に繰り返してヒットされると、この2つのポインタ値だけが増加する。この状態でシフト処理がおこなわれると、他のポインタ値はゼロに近い値に、あるいは、ゼロ以下となってしまう。
この問題を解決するために、LRU表16の全てのタグをグループ分けし、それぞれのグループに対して異なったポインタ値の処理をおこなう。即ち、MRUのポインタ値を一番として、以下順番に最近に使用された所定の個数のタグの集団をMRUグループとする。そして、このMRUグループのタグがヒットされた場合は、そのタグのポインタ値はグローバルポインタ23の値に書き換えないことにする。また、例えば、ずっとヒットされないタグのポインタ値がシフト処理によりゼロ以下になった場合、そのポインタ値はゼロとする。そして、ポインタ値がゼロのタグをLRUグループとする。従って、このLRUグループ内におけるタグには優先順位がないため、最終LRUは、LRU表16内における所定の順番により選出される。そして、MRUグループとLRUグループ以外のタグを中間グループとする。LRUグループと中間グループとにおけるタグがヒットされた場合は、このタグのポインタ値はグローバルポインタ23の値に書き換えられ、新しいMRUのポインタ値となる。
例えば、全部で1,000個のタグがあって、MRUグループを500個に設定した場合、このMRUグループのタグがヒットされたとき、このタグのポインタ値はMRUのポインタ値に更新されない。このとき、LRU表16における全てのタグのポインタ値には変化がない。MRUのポインタ値より500番目以上に小さいポインタ値を持つタグは、中間グループとLRUグループとなる。これらのタグがヒットされると、そのタグのポインタ値はMRUのポインタ値に更新されて、このタグはMRUグループに追加される。このとき、MRUグループのタグのポインタ値は自然数で連続した値となっている。従って、MRUグループにおける500番目のタグが自動的に中間グループとなる。キャッシュメモリ7b内になかったデータがキャッシュメモリ7bに追加されるときは、LRUデータとこのデータが置き換わる。このデータのタグはMRUのポインタ値を持つタグとなるので、これはMRUグループに追加される。そして、次のキャッシュ処理の準備のために、LRUグループにおける所定の順番により最終LRUが抽出される。
尚、本発明の実施例の説明においては、ホストとなるPC等と記憶装置となる外部主記憶装置等とにおけるキャッシュ装置および方法として取り上げている。しかし、本発明はこれに限定されるものではない。例えば、CPUと、CPUコア付近となり一般にSRAM(Static RAM)からなるキャッシュメモリとにおいても本発明の方法を用いることができる。また、OSによりメインメモリ上でおこなわれる各種のキャッシュ処理、例えば、マップキャッシュといった技術においても本発明の方法を用いることができる。
本発明の実施の形態に係るシステムの概略図である。 本発明の実施の形態に係るキャッシュ処理装置のより詳細な構成を示す図である。 本発明の実施の形態に係るキャッシュ処理部でおこなわれるキャッシュ処理のフローチャートである。 本発明の実施の形態に係るキャッシュ処理をおこなう際に使用するインデックス1表と、インデックス2表と、インデックスn表と、タグ表とを示した図である。 本発明の実施の形態に係るキャッシュ処理をおこなう際に使用するLRU表と、中間1LRU表と、中間nLRU表とを示した図である。 本発明の実施の形態に係るLRU表とキャッシュメモリとの関係を示した図である。 本発明の実施の形態に係るポインタ値のシフト処理前とシフト処理後を示した図である。
符号の説明
1 ホスト
2 キャッシュ装置
3 記憶装置
4 CPUとその周辺
5 制御回路
6a インターフェース部
6b キャッシュ処理部
7b キャッシュメモリ
8a インデックス1表
8b、8c、8d インデックス1表のセル
11a タグ表
11b、11c、11d サブタグ表
16 LRU表
19 最終LRU
20a、20b サブLRU表
23 グローバルポインタ

Claims (9)

  1. キャッシュメモリに記憶しているデータのタグをサーチする手段と、前記サーチの結果、ヒットであればヒットしたタグのアドレスを出力し、ヒットではない場合には事前に用意したLRUであるタグのアドレスを出力する手段と、次回のサーチのため、現時点でのLRUであるタグを決定する手段と、アクセスされたデータのタグに対応させた形で、アクセスされる度に、アクセス順に増加するポインタ値を記憶する手段を含み、前記LRUであるタグは、前記ポインタ値を用いて決定される、キャッシュ装置。
  2. 請求項1記載のキャッシュ装置において、さらに、全てのポインタ値のうちの最大値が所定の値に達したときに、全てのポインタ値を修正する手段を含む、キャッシュ装置。
  3. キャッシュメモリに記憶しているデータのタグをサーチする段階と、前記サーチの結果、ヒットであればヒットしたタグのアドレスを出力し、ヒットではない場合には事前に用意したLRUであるタグのアドレスを出力する段階と、次回のサーチのため、現時点でのLRUであるタグを決定する段階と、アクセスされたデータのタグに対応させた形で、アクセスされる度に、アクセス順に増加するポインタ値を記憶する段階と、前記LRUであるタグを、前記ポインタ値を用いて決定する段階を含む、キャッシュ方法。
  4. 請求項3記載のキャッシュ方法において、さらに、全てのポインタ値のうちの最大値が所定の値に達したときに、全てのポインタ値を修正する段階を含む、キャッシュ方法。
  5. 請求項4記載のキャッシュ方法において、前記アクセスされたデータに対応して記憶されるポインタ値として、現在の時刻に対応したグローバルポインタ値を有するグローバルポインタが現在有するグローバルポインタ値を与える段階と、前記グローバルポインタが有するグローバルポインタ値に1を加える段階と、前記グローバルポインタ値が所定の値に達したときに、前記グローバルポインタ値と、前記データに対応して記憶された全てのポインタ値から、第2の所定の値だけ減ずるシフト処理を行う段階とを含む、キャッシュ方法。
  6. 請求項5記載のキャッシュ方法において、前記シフト処理は分散して順次行われる、キャッシュ方法。
  7. 請求項4乃至6のいずれか1に記載のキャッシュ方法において、前記記憶されたポインタ値は、その大きさに基づいて、ポインタ値が大きいグループであるMRUグループと、小さいグループであるLRUグループと、MRUグループとLRUグループとの間の中間グループとに分類し、前記MRUグループに属するタグがヒットされた場合には、該ヒットされたタグのポインタ値は更新せず、前記中間グループとLRUグループに属するタグがヒットされたときには該ヒットされたタグのポインタ値を更新し、前記MRUグループに属するポインタ値のうちの最小のポインタ値を前記中間グループに移す、キャッシュ方法。
  8. 請求項4乃至7のいずれか1に記載のキャッシュ方法において、前記ポインタ値が、同サイズのサブLRU表に分割されているLRU表に記憶される段階と、前記各サブLRU表から最小のポインタ値を抽出して、該抽出されたポインタ値により、同サイズの中間サブLRU表に分割されている中間LRU表を作成する段階と、さらに前記各中間サブLRU表から最小のポインタ値を抽出して次の中間LRU表を作成する段階を繰り返し、最終LRUであるタグを抽出する段階を含む、キャッシュ方法。
  9. 請求項8記載のキャッシュ方法において、データがアクセスされることにより前記LRU表のポインタ値のいずれかが更新されたとき、前記サブLRU表と各中間サブLRU表のうち該更新されたポインタ値に関係する表のみを更新する段階を含む、キャッシュ方法。
JP2004190856A 2004-06-29 2004-06-29 キャッシュ装置及び方法 Expired - Fee Related JP4327669B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2004190856A JP4327669B2 (ja) 2004-06-29 2004-06-29 キャッシュ装置及び方法
US11/597,494 US7627719B2 (en) 2004-06-29 2005-02-18 Cache device and method for determining LRU identifier by pointer values
PCT/CN2005/000199 WO2006000138A1 (fr) 2004-06-29 2005-02-18 Tampon et procede associe
CNB200580017597XA CN100476756C (zh) 2004-06-29 2005-02-18 缓存装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004190856A JP4327669B2 (ja) 2004-06-29 2004-06-29 キャッシュ装置及び方法

Publications (2)

Publication Number Publication Date
JP2006012006A JP2006012006A (ja) 2006-01-12
JP4327669B2 true JP4327669B2 (ja) 2009-09-09

Family

ID=35779180

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004190856A Expired - Fee Related JP4327669B2 (ja) 2004-06-29 2004-06-29 キャッシュ装置及び方法

Country Status (4)

Country Link
US (1) US7627719B2 (ja)
JP (1) JP4327669B2 (ja)
CN (1) CN100476756C (ja)
WO (1) WO2006000138A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782143B2 (en) * 2008-12-17 2014-07-15 Adobe Systems Incorporated Disk management
JP4734432B2 (ja) * 2009-02-18 2011-07-27 株式会社東芝 データ記憶システム
US8700646B2 (en) * 2009-08-12 2014-04-15 Apple Inc. Reference file for formatted views
CN105740352A (zh) * 2016-01-26 2016-07-06 华中电网有限公司 用于智能电网调度控制系统的历史数据服务系统
CN109032969A (zh) * 2018-06-16 2018-12-18 温州职业技术学院 一种基于k值动态监测的lru-k算法的缓存方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4322795A (en) * 1980-01-24 1982-03-30 Honeywell Information Systems Inc. Cache memory utilizing selective clearing and least recently used updating
JP3199465B2 (ja) * 1992-07-22 2001-08-20 株式会社日立製作所 情報処理装置
US5701426A (en) * 1995-03-31 1997-12-23 Bull Information Systems Inc. Data processing system and method using cache miss address prediction and forced LRU status in a cache memory to improve cache hit ratio
US6138213A (en) * 1997-06-27 2000-10-24 Advanced Micro Devices, Inc. Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line
US6754776B2 (en) * 2001-05-17 2004-06-22 Fujitsu Limited Method and system for logical partitioning of cache memory structures in a partitoned computer system
JP3989312B2 (ja) * 2002-07-05 2007-10-10 富士通株式会社 キャッシュメモリ装置およびメモリ割付方法
CN1499382A (zh) * 2002-11-05 2004-05-26 华为技术有限公司 廉价冗余磁盘阵列系统中高效高速缓存的实现方法
US20050071564A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation Reduction of cache miss rates using shared private caches
US7010649B2 (en) * 2003-10-14 2006-03-07 International Business Machines Corporation Performance of a cache by including a tag that stores an indication of a previously requested address by the processor not stored in the cache

Also Published As

Publication number Publication date
WO2006000138A1 (fr) 2006-01-05
JP2006012006A (ja) 2006-01-12
US20070233958A1 (en) 2007-10-04
CN100476756C (zh) 2009-04-08
CN1961296A (zh) 2007-05-09
US7627719B2 (en) 2009-12-01

Similar Documents

Publication Publication Date Title
US5717893A (en) Method for managing a cache hierarchy having a least recently used (LRU) global cache and a plurality of LRU destaging local caches containing counterpart datatype partitions
CN102754086B (zh) 页面大小可变的虚拟内存系统
US20100211616A1 (en) Performance by Avoiding Disk I/O for Deduplicated File Blocks
JP4920378B2 (ja) 情報処理装置およびデータ検索方法
US9734059B2 (en) Methods and apparatus for data cache way prediction based on classification as stack data
CN101510176B (zh) 通用操作系统对cpu二级缓存访问的控制方法
CN105550155B (zh) 用于多处理器系统的探听过滤器以及相关探听过滤方法
CN1936869A (zh) 用于翻译地址的方法和系统
CN1734431A (zh) 用于软件可控动态可锁高速缓冲存储器线替换系统的方法
US6842826B1 (en) Method and apparatus for providing efficient management of least recently used (LRU) algorithm insertion points corresponding to defined times-in-cache
US8086641B1 (en) Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same
CN103942161B (zh) 只读缓存的去冗余系统及方法以及缓存的去冗余方法
CN103914483A (zh) 文件存储方法、装置及文件读取方法、装置
CN115168248B (zh) 支持simt架构的高速缓冲存储器及相应处理器
CN104504076A (zh) 一种高并发和高空间利用率的分布式缓存方法
CN112148217A (zh) 全闪存储系统的重删元数据的缓存方法、装置及介质
JP4327669B2 (ja) キャッシュ装置及び方法
KR102321346B1 (ko) 대용량 ssd 장치를 위한 데이터 저널링 방법
CN106201918A (zh) 一种基于大数据量和大规模缓存快速释放的方法和系统
US6598124B1 (en) System and method for identifying streaming-data
CN110727610B (zh) 高速缓存存储器、存储系统和高速缓存存储器的逐出方法
US7953721B1 (en) Integrated search engine devices that support database key dumping and methods of operating same
CN114077378A (zh) 一种构建索引方法及装置
WO2015129109A1 (ja) インデックス管理装置
WO2002027498A2 (en) System and method for identifying and managing streaming-data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061127

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070731

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090122

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090611

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

Free format text: PAYMENT UNTIL: 20120619

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120619

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20150619

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees