JP5622155B2 - キャッシュメモリおよびその制御方法 - Google Patents

キャッシュメモリおよびその制御方法 Download PDF

Info

Publication number
JP5622155B2
JP5622155B2 JP2011537244A JP2011537244A JP5622155B2 JP 5622155 B2 JP5622155 B2 JP 5622155B2 JP 2011537244 A JP2011537244 A JP 2011537244A JP 2011537244 A JP2011537244 A JP 2011537244A JP 5622155 B2 JP5622155 B2 JP 5622155B2
Authority
JP
Japan
Prior art keywords
address
sram
cam
line
subtag
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
JP2011537244A
Other languages
English (en)
Other versions
JPWO2011049051A1 (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.)
THE UNIVERSITY OF ELECTRO-COMUNICATINS
Original Assignee
THE UNIVERSITY OF ELECTRO-COMUNICATINS
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 THE UNIVERSITY OF ELECTRO-COMUNICATINS filed Critical THE UNIVERSITY OF ELECTRO-COMUNICATINS
Priority to JP2011537244A priority Critical patent/JP5622155B2/ja
Publication of JPWO2011049051A1 publication Critical patent/JPWO2011049051A1/ja
Application granted granted Critical
Publication of JP5622155B2 publication Critical patent/JP5622155B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Description

本発明は、キャッシュメモリおよびその制御方法に関し、特に、性能を低減させること無く、低電力で動作できるようにしたキャッシュメモリおよびその制御方法に関する。
近年、パーソナルコンピュータなどの情報処理装置において、CPU(Central Processing Unit)とメインメモリとの性能差を吸収し、処理を円滑に実行させるものとしてキャッシュメモリが欠かせない存在となっている。
キャッシュメモリとは、CPUなど処理装置がデータや命令などの情報を取得または更新する際にメインメモリやバスなどの遅延または低帯域を隠蔽化させ、処理装置と記憶装置の性能差を埋めるために用いる高速小容量メモリである。
コンピュータは以前から記憶装置の性能が処理装置の性能に追いつけず、この差が全体性能に対するボトルネックとされてきた(ノイマンズ・ボトルネック)。そして、ムーアの法則に基づく処理装置の加速度的な高性能化により現在ではますますこの差が拡大されている。キャッシュメモリは、記憶階層の観点からこれを解消しようとするものであり、一般に、主記憶装置(メインメモリ)とCPUなど処理装置との間に構成される。
従来のキャッシュメモリの構成として、図1で示される4ウェイセットアソシアティブ方式のものが知られている。
図1の場合、キャッシュメモリは、4ウェイ(連想度4)のSRAM(Static Random Access Memory)から構成されており、各ウェイ毎に、インデックスアドレスが設定され、そのインデックスアドレス毎にタグアドレスが設けられており、このタグに対応付けてデータが記憶されている。図1においては、各ウェイは、00,01,10,11の2ビットの識別情報で区別されて管理されている。また、アドレスは、図1の上部で示されるように、タグアドレスとインデックスアドレスから構成されている。すなわち、図1においては、1個のインデックスアドレスが特定されると、4個のタグが特定される。ここで、ウェイとは、同一のインデックスアドレスにより指定できるタグアドレスの数のことであり、連想度とも言う。
図1のキャッシュメモリの場合、CPUがアドレスを指定して、データの読み出しを要求すると、まず、アドレスのうち、インデックスアドレスに基づいてデータが特定される。図1の場合、4ウェイで構成されているため、インデックスアドレスが特定されることにより、同一のインデックスアドレスに対して、4個の各ウェイのタグアドレスが指定されるため、4個の読み出しデータの候補が特定される。
次に、CPUにより指定されたアドレスのうちのタグアドレスの情報と、各ウェイのタグアドレスとを比較し、比較結果を出力すると共に、タグアドレスで指定される4個のデータが同時に読み出される。この結果、一致するタグアドレスが存在した場合、キャッシュメモリには、CPUから要求されたデータが存在する(キャッシュヒットする)ことになる。そこで、出力された4個のデータのうち、同一のタグアドレスで管理されていたデータのみがCPUに供給され、その他のデータは破棄される。一方、同一のタグアドレスがない場合、キャッシュメモリには、CPUから要求されたデータが存在しない(キャッシュミスする)ことになるので、キャッシュメモリは、要求されたアドレスのデータをメインメモリより読み出して、CPUに供給すると共に、最も前のタイミングで読み出されたデータに上書き更新する。
しかしながら、この手法では、アドレスのうちインデックスアドレスで特定できるのはウェイ数分の候補だけであり、さらに、この中で必要とされるデータは0または1であることから、インデックスアドレスで特定されたデータが、仮に用いられても、(ウェイ数−1)個分のミスが発生することとなる。SRAMは、読み出しの際に消費される電力が大きいため、ミスを低減させない限り消費電力の低減を期待できない。このため、インデックスアドレスで特定されるデータの個数、つまり、ウェイ数を減らさない限り消費電力を低減させることができない。しかしながら、ウェイ数が減れば、キャッシュヒット率は低減することとなるため、性能を低減させる一因となってしまう。
そこで、このように1のインデックスアドレスで特定されるデータ数に起因するミスを低減させるために、CAM(Content Addressable Memory)を用いた高連想度キャッシュメモリが提案されている。
図2は、この高連想度キャッシュメモリの構成を示している。図2の高連想度キャッシュメモリは、ラインサイズが32bytesであり、容量が8KBとなる32ウェイの高連想度キャッシュメモリである。図2の高連想度キャッシュメモリにおいては、上述したインデックスアドレスに対応する8個のサブバンク(各1KB)に区切ることにより、1回のCPUからの要求(以下キャッシュアクセスとも称する)に対して、1のサブバンクだけをアクティブにし、他のサブバンクの電力消費を低減することで、電力削減が図られている。
すなわち、アドレスのうちインデックスアドレスの情報がデコーダ(decoder)によりデコードされて、キャッシュアクセスすべきサブバンクに供給される。これにより、特定されたサブバンクのみがアクティブにされ、アクティブにされたバンクにおける、タグアドレスを管理するCAMにタグアドレスの情報を供給する。CAMは、供給されたタグアドレスに基づいて、全ウェイについて検索する。そして、アクティブな1個のサブバンクにおいては、CAMにより全ウェイに対して並列にタグアドレスとの比較が行われ、一致したタグアドレスに対応して格納されているデータだけがSRAMより出力される。
しかしながら、CAMを駆動させる場合、各ウェイについて全てのタグアドレスとの比較が実行されるため、1回のCPUからの読み出しに対して、連想度分のCAMが駆動されることにより電力消費が大きいという問題があった。
そこで、この問題を解決させるために、いくつかの手法が提案されているが、その中にLPHAC(Low Power Highly Associa-tive Cache)法と呼ばれるものがある(非特許文献1参照)。
LPHAC法は、タグアドレスが24ビットで構成される場合、図3で示されるように、タグアドレス(以下、単にタグとも称する)を上位ビットと下位ビットの2つのサブタグアドレス(以下、単にサブタグとも称する)に分ける手法である。従来の高連想度キャッシュでは、図3のタグアドレス構成(a)で示されるように、全てCAMで管理するタグアドレス(以下、CAMタグとも称する)で構成されている。これに対し、LPHAC法では、図3のタグアドレス構成(b)で示されるように、タグアドレスの下位sビットのサブタグアドレスをCAMで管理し(以下、CAMサブタグアドレスまたはCAMサブタグとも称する)、上位ビット(この例では24−sビット)のサブタグアドレスをSRAMで管理する(以下、SRAMサブタグアドレスまたはSRAMサブタグとも称する)。例えば、ウェイ数が32の場合、各ラインを区別するにはs≧5ビット以上必要となる。
動作は、はじめにCAMサブタグアドレスとの部分的な比較検索が行われ、このときに検索できなければ(ミスすれば)キャッシュミスとなる。非特許文献1によれば、s=8のとき、CAMサブタグアドレスとの部分的な比較検索のみでキャッシュミスの85%が判明するといわれている。そして、CAMサブタグアドレスでヒットした場合は、ヒットしたラインに対してSRAMサブタグアドレスとの比較検索が行われる。より詳細には、最初の半クロックでCAMサブタグアドレスとの部分的な比較検索が行われ、後半の半クロックで、CAMサブタグアドレスで特定されたラインについて、SRAMサブタグアドレスによる部分的な比較検索が行われ、同時に、データが読み出される。
ここで、図4を参照して、具体的な比較検索例を参照して説明する。尚、図4においては、説明の便宜上、アドレスが、6ビットからなる場合の比較検索例について説明する。
まず、図4の比較例aで示されるように、アドレスが「101000」であって、CAMサブタグが「1000」、およびSRAMサブタグが「10」である場合、図示せぬキャッシュメモリにCAMサブタグとして、「1111」、「0101」、および「1000」が登録されており、それらに対応付けて、SRAMサブタグが「11」、「10」、および「10」として登録されているものとする。すなわち、比較例aにおいては、アドレス「111111」,「100101」,「101000」に対応するデータが図示せぬキャッシュメモリに記憶されている。
比較例aの場合、入力されたアドレス(入力アドレス)のCAMサブタグが用いられて、キャッシュメモリ内のCAMサブタグが部分的に比較検索されることにより、図中丸印で囲まれて示されるように、3段目の「1000」が一致するものとして検索されることになるので、キャッシュヒットとなる。このため、CAMサブタグ「1000」に対応付けて登録されているSRAMサブタグ「10」と、入力アドレスのSRAMサブタグと比較検索されるが一致するので、同時に読み出されたデータがCPUに読み出されることになる。
また、図4の比較例bで示されるように、アドレスが「100000」であって、CAMサブタグが「0000」、およびSRAMサブタグが「10」である場合、図示せぬキャッシュメモリには、CAMサブタグとして、「1111」、「0101」、および「1000」が登録されており、それらに対応付けて、SRAMサブタグが「11」、「10」、および「10」として登録されているものとする。すなわち、比較例bにおいては、アドレス「111111」,「100101」,「101000」に対応するデータが図示せぬキャッシュメモリに記憶されている。
比較例bの場合、まず、入力アドレスのCAMサブタグが用いられて、キャッシュメモリ内のCAMサブタグが比較検索されることにより、「0000」が検索されるが一致するCAMサブタグがない。すなわち、この場合、キャッシュミスとなる。ところが、CAMサブタグは、4ウェイであり、図4の比較例bにおいては、1ウェイ分の空きがある。そこで、メインメモリよりアドレス「100000」に対応するデータが読み出されて、CPUに供給されると共に、図4の比較例cで示されるように、キャッシュメモリには、空いている最下段の1ウェイにCAMサブタグ「0000」が登録され、さらに、対応付けてSRAMサブタグ「10」が登録されて、今メインメモリから読み出されたデータが登録される。
さらに、図4の比較例dで示されるように、入力アドレスが「001000」であって、CAMサブタグが「1000」、およびSRAMサブタグが「00」である場合、CAMサブタグとして、「1111」、「0101」、および「1000」が登録されており、それらに対応付けて、SRAMサブタグが「11」、「10」、および「00」として登録されているものとする。すなわち、比較例dにおいては、アドレス「111111」,「100101」,「101000」に対応するデータが図示せぬキャッシュメモリに記憶されている。
このとき、まず、入力アドレスのCAMサブタグが用いられて、キャッシュメモリ内のCAMサブタグが比較検索されることにより、「1000」が検索されて、図中丸印で囲んで示されるように、同一のものが検索される。次に、入力アドレスのSRAMサブタグと、検索されたSRAMサブタグ「10」とが比較検索されるが、図中の×印で示されるように一致しない。すなわち、この場合、キャッシュミスとなる。しかしながら、既に、CAMサブタグとして「1000」が登録されていることから、1ウェイ分の空きがあっても、メインメモリから新たにアドレスが「001000」に対応するデータが読み出されて登録されると、CAMサブタグ「1000」に対して重複して、SRAMサブタグ「00」が登録されてしまう。すなわち、同一のCAMサブタグ「1000」が重複して登録されて、それぞれSRAMサブタグ「10」、および「00」が登録されてしまう。
ところが、LPHAC法においては、同一のCAMサブタグの重複が回避されるように登録が管理される。このため、メインメモリよりアドレス「001000」に対応するデータが読み出されて、CPUに供給されると共に、図4の比較例eで示されるように、登録済みのCAMサブタグ「1000」に対応付けて、新たに読み出されたSRAMサブタグ「00」が上書きされて、図示せぬ今メインメモリから読み出されたデータが登録される。すなわち、この場合、登録されていたアドレス「101000」に対応するデータは、破棄され、CAMサブタグ「1000」に対応付けて登録されるSRAMサブタグが1に維持される。
Zhang, C.: A Low Power Highly Associa-tive Cache for Embedded Systems, Proc. IEEE ICCD, pp.31-36 (2006).
ところで、上述したLPHAC法では、CAMサブタグのミスによる置換はLRU(Least Recently Used)方式で行うことが前提とされている。LRU方式とは、最も古くアクセスされたデータを、最近読み出されたデータで上書きする方式である。すなわち、時間的局所性に鑑みれば、過去最もアクセスのなかったデータは将来にわたってもアクセスされる可能性は少ないと言える。従って、この方法はヒット率を向上させるための方法としてよく採用されている。
従って、CAMサブタグでヒットした場合、一般には複数のSRAMサブタグに対応するCAMサブタグと一致することになるが、LPHAC法ではCAMサブタグとの部分的な比較検索において、ヒットするデータが上述したように1個に絞られる。
すなわち、CAMサブタグでヒットし、SRAMサブタグでミスした場合、ミスしたデータが置換される対象のデータとされる(新たに読み出されたデータにより置換されて、消滅してしまうデータとされる)。これにより、CAMサブタグのビット数s≧5ビットであればCAMサブタグの部分的な比較検索により複数のデータと一致しないようにできる。
しかしながら、LPHAC法では、CAMサブタグでヒットし、SRAMサブタグでミスした場合、ミスしたデータが置換される対象データとされることによりヒットするデータが1個に絞られる。この場合、LRU方式とは異なる置換方式を取らざるを得ず、比較的最近アクセスがあったデータであっても置換により消滅してしまう可能性があり、結果として、ヒット率が低下してしまう原因となっていた。
また、CAMサブタグのビット数sを小さく設定すると、このようなケースが増加し、LRU方式とは異なる置換方式を取る頻度が上がる。これにより、CAMサブタグのビット数sを小さく設定することができないため、LPHAC法では、消費電力の大きなCAM部分の縮小に限界があり、消費電力の低減には限界があった。
本発明はこのような状況に鑑みてなされたものであり、特に、キャッシュメモリのヒット率を低減させること無く、消費電力を低減できるようにするものである。
本発明の第1の側面のキャッシュメモリは、タグメモリとしてCAM(Content Addressable Memory)とSRAM(Static Random Access Memory)を有し、タグアドレスの一部をCAMサブタグアドレスとして、前記タグアドレスの他の部分をSRAMサブタグアドレスとして設定し、同一の前記CAMサブタグアドレスに対し、複数の前記SRAMサブタグアドレスを対応付けることを容認し、ヒットミス判定時に、前記CAMサブタグアドレスで前記CAM内の比較対象となるラインを検索し、前記CAMサブタグアドレスが一致するラインが存在する場合、前記CAMサブタグアドレスが一致するラインのうち、少なくとも、最近読み出しが要求された第1世代のラインだけを比較対象とするラインとして、前記SRAMサブタグアドレスで前記SRAM内の比較対象となるラインを検索し、前記第1世代のラインに前記SRAMサブタグアドレスが一致するラインが存在しないとき、前記CAMサブタグアドレスが一致するラインのうち、前記最近ではない時期に読み出しが要求された第2世代のラインだけを比較対象とするラインとして、前記SRAMサブタグアドレスで前記SRAM内の比較対象となるラインを検索する
本発明の第2の側面のキャッシュメモリは、タグメモリとしてCAM(Content Addressable Memory)とSRAM(Static Random Access Memory)を有するキャッシュメモリであって、前記タグメモリのアドレスであるタグアドレスの一部がCAMサブタグアドレスとして、前記タグアドレスの他の部分がSRAMサブタグアドレスとしてそれぞれ設定され、かつ、同一の前記CAMサブタグアドレスに対し、複数の前記SRAMサブタグアドレスが対応付けられることが容認されており、ヒットミス判定時に、前記CAMサブタグアドレスで前記CAM内の比較対象となるラインを検索する第1検索手段と、前記CAMサブタグアドレスが一致するラインが存在する場合、前記CAMサブタグアドレスが一致するラインのうち、少なくとも、最近読み出しが要求された第1世代のラインだけを比較対象とするラインとして、前記SRAMサブタグアドレスで前記SRAM内の比較対象となるラインを検索し、前記第1世代のラインに前記SRAMサブタグアドレスが一致するラインが存在しないとき、前記CAMサブタグアドレスが一致するラインのうち、前記最近ではない時期に読み出しが要求された第2世代のラインだけを比較対象とするラインとして、前記SRAMサブタグアドレスで前記SRAM内の比較対象となるラインを検索する第2検索手段とを含む。
前記第1検索手段による前記CAMサブタグアドレスの比較によりラインが検索されないとき、または前記第2検索手段により前記SRAMサブタグアドレスの比較により第2世代のラインが検索されないとき、接続するメインメモリより前記読み出しが要求されたタグアドレスに対応するラインを読み出し、前記第2世代のラインのうち、最も古く読み出されたラインを、前記メインメモリより読み出されたラインで置換し、併せて前記CAMサブタグアドレス、およびSRAMサブタグアドレスを置換する置換手段をさらに含ませるようにすることができる。
前記置換手段には、一の前記CAMサブタグアドレスに対し、複数の前記SRAMサブタグアドレスが対応付けられて置換されることを許容するようにさせることができる。
前記SRAMサブタグアドレスにより管理される各ラインが読み出された時期に基づいて、前記ラインが第1世代であるか、または、前記第2世代であるかを世代管理リストにより管理し、前記置換手段により前記メインメモリより読み出されたラインで、前記最も古く読み出されたラインが置換されるとき、前記SRAMサブタグアドレスにより管理されるラインが読み出された時期が、最も古く読み出されたラインを削除し、前記メインメモリより読み出されたラインを、最近読み出された時期として世代管理リストを更新する世代管理手段をさらに含ませるようにすることができる。
前記世代管理手段には、前記世代管理リストに基づいて、前記SRAMサブタグアドレスにより管理される各ラインについて、最近読み出されたラインを第1世代のラインとし、最近ではない時期に読み出されたラインを第2世代のラインとして、世代管理させるようにすることができる。
前記CAMおよび前記SRAMの連想度nが連想度32であって、前記タグアドレスが24ビットの場合、前記CAMサブタグアドレスが2ビットとし、前記SRAMサブタグアドレスが22ビットとすることができる。
前記連想度nが連想度32の前記CAMサブタグアドレスで管理されるラインのうち、前記第1世代のラインは、読み出された時期が最近に近い順に上位2位までのラインとすることができる。
本発明のプロセッサは、複数の請求項2乃至のいずれかに記載のキャッシュメモリと、
前記CAMおよび前記SRAMと接続されたCPU(Central Processing Unit)と、前記CPUより前記タグアドレスで指定されるラインの読み出し、または書き込みが要求された場合、前記タグアドレスより前記CAMサブタグアドレスを抽出するCAMサブタグアドレス抽出手段と、前記CPUより前記タグアドレスで指定されるラインの読み出し、または書き込みが要求された場合、前記タグアドレスより前記SRAMサブタグアドレスを抽出するSRAMサブタグアドレス抽出手段とを含むことを特徴とする。
本発明の第2の側面のキャッシュメモリの制御方法は、タグメモリとしてCAM(Content Addressable Memory)とSRAM(Static Random Access Memory)を有するキャッシュメモリの制御方法であって、前記タグメモリのアドレスであるタグアドレスの一部がCAMサブタグアドレスとして、前記タグアドレスの他の部分がSRAMサブタグアドレスとしてそれぞれ設定され、かつ、同一の前記CAMサブタグアドレスに対し、複数の前記SRAMサブタグアドレスが対応付けられることが容認されており、ヒットミス判定時に、前記CAMサブタグアドレスで前記CAM内の比較対象となるラインを検索する第1検索ステップと、前記CAMサブタグアドレスが一致するラインが存在する場合、前記CAMサブタグアドレスが一致するラインのうち、少なくとも、最近読み出しが要求された第1世代のラインだけを比較対象とするラインとして、前記SRAMサブタグアドレスで前記SRAM内の比較対象となるラインを検索し、前記第1世代のラインに前記SRAMサブタグアドレスが一致するラインが存在しないとき、前記CAMサブタグアドレスが一致するラインのうち、前記最近ではない時期に読み出しが要求された第2世代のラインだけを比較対象とするラインとして、前記SRAMサブタグアドレスで前記SRAM内の比較対象となるラインを検索する第2検索ステップとを含む
本発明の第1の側面においては、タグメモリとしてCAM(Content Addressable Memory)とSRAM(Static Random Access Memory)を有し、タグアドレスの一部がCAMサブタグアドレスとして、前記タグアドレスの他の部分がSRAMサブタグアドレスとして設定され、同一の前記CAMサブタグアドレスに対し、複数の前記SRAMサブタグアドレスが対応付けられることが容認され、ヒットミス判定時に、前記CAMサブタグアドレスで前記CAM内の比較対象となるラインが検索され、前記CAMサブタグアドレスが一致するラインが存在する場合、前記CAMサブタグアドレスが一致するラインのうち、少なくとも、最近読み出しが要求された第1世代のラインだけが比較対象とされるラインとして、前記SRAMサブタグアドレスで前記SRAM内の比較対象とされるラインが検索され、前記第1世代のラインに前記SRAMサブタグアドレスが一致するラインが存在しないとき、前記CAMサブタグアドレスが一致するラインのうち、前記最近ではない時期に読み出しが要求された第2世代のラインだけが比較対象とされるラインとして、前記SRAMサブタグアドレスで前記SRAM内の比較対象とされるラインが検索される
本発明の第2の側面においては、タグメモリとしてCAM(Content Addressable Memory)とSRAM(Static Random Access Memory)を有し、前記タグメモリのアドレスであるタグアドレスの一部がCAMサブタグアドレスとして、前記タグアドレスの他の部分がSRAMサブタグアドレスとしてそれぞれ設定され、かつ、同一の前記CAMサブタグアドレスに対し、複数の前記SRAMサブタグアドレスが対応付けられることが容認され、ヒットミス判定時に、前記CAMサブタグアドレスで前記CAM内の比較対象とされるラインが検索され、前記CAMサブタグアドレスが一致するラインが存在する場合、前記CAMサブタグアドレスが一致するラインのうち、少なくとも、最近読み出しが要求された第1世代のラインだけが比較対象とされるラインとして、前記SRAMサブタグアドレスで前記SRAM内の比較対象とされるラインが検索され、前記第1世代のラインに前記SRAMサブタグアドレスが一致するラインが存在しないとき、前記CAMサブタグアドレスが一致するラインのうち、前記最近ではない時期に読み出しが要求された第2世代のラインだけが比較対象とされるラインとして、前記SRAMサブタグアドレスで前記SRAM内の比較対象となるラインが検索される。
本発明の一側面によれば、キャッシュメモリのヒット率を低減させること無く、消費電力を低減させることが可能となる。
従来のキャッシュメモリの構成を示す図である。 その他の従来のキャッシュメモリの構成を示す図である。 LPHAC法を説明する図である。 LPHAC法を説明する図である。 本発明を適用した一実施の形態の構成例であるキャッシュメモリにより実現される機能を説明する機能ブロック図である。 キャッシュメモリに格納されるデータの管理構造を説明する図である。 プログラム実行処理を説明するフローチャートである。 命令キャッシュ処理を説明するフローチャートである。 キャッシュヒットミス判定処理を説明するフローチャートである。 キャッシュヒットミス判定処理を説明する図である。 データキャッシュ(書き込み)処理を説明するフローチャートである。 データキャッシュ(読み出し)処理を説明するフローチャートである。 本発明の効果を説明する図である。 本発明の効果を説明する図である。 本発明の効果を説明する図である。 本発明の効果を説明する図である。
[本発明を適用したキャッシュメモリの構成例]
図5は、本発明を適用したキャッシュメモリにより実現される機能の一実施の形態の構成例を示す機能ブロック図である。
CPU(Central Processing Unit)11は、各種の処理を実行させるとき、プログラムカウンタより実行すべき命令のアドレスをアドレス入力部12に供給し、キャッシュメモリ13に対してデータを要求すると共に取得して実行する。
アドレス入力部12は、CPU11より命令を指定するアドレスが供給されると、インデックスアドレスをキャッシュメモリ13のデコード部41に供給すると共に、タグアドレスのうち、CAM(Content Addressable Memory)サブタグアドレスをキャッシュメモリ13のCAM51に供給すると共に、SRAM(Static Random Access Memory)サブタグアドレスをSRAM52に供給する。より詳細には、アドレス入力部12は、インデックスアドレス抽出部21、およびタグアドレス抽出部22を備えている。インデックスアドレス抽出部21は、入力されたアドレスよりインデックスアドレスを抽出し、抽出したインデックスアドレスをデコード部41に供給する。
タグアドレス抽出部22は、さらにCAMサブタグアドレス抽出部22aおよびSRAMサブタグアドレス抽出部22bを備えている。CAMサブタグアドレス抽出部22aは、入力アドレスに含まれるタグアドレスが、例えば、Xビットである場合、その下位sビットをCAMサブタグアドレスとして抽出してキャッシュメモリ13内にある各サブバンク42のCAM51に供給する。また、SRAMサブタグアドレス抽出部22bは、入力アドレスに含まれるタグアドレスのうち、CAMサブタグアドレス以外の上位(X−s)ビットをSRAMサブタグとして抽出してキャッシュメモリ13内にある各サブバンク42のSRAM52に供給する。
キャッシュメモリ13は、デコード部41、およびサブバンク42より構成されている。デコード部41は、アドレス入力部12より供給されてくるインデックスアドレスを解析し、いずれのサブバンク42を起動させるかを判定し、起動させるべきサブバンク42に対して起動を指示する信号を供給する。尚、図5においては、サブバンク42の構成を示すため、便宜上サブバンク42が1個のみ表示されているが、実際には、複数のサブバンク42が設けられている。すなわち、デコード部41とサブバンク42の関係については、図2で示される構成と同様の関係となっており、デコード部41より起動を指示する信号が供給されたサブバンクのみがオンの状態とされ、オンの状態となったサブバンク42のみが、タグアドレスの情報に基づいて処理を実行する。
サブバンク42には、CAM51、SRAM52、LRU管理部53、読出部54、および置換部55を備えている。CAM51は、デコード部41より供給されてくる起動を指示する信号に基づいて動作を開始し、CAMサブタグアドレス抽出部22aより供給されてくるCAMサブタグアドレスに基づいて、CPU11で指定したアドレスのデータの候補を検索し、検索結果をヒットフラグとしてSRAM52に供給する。
SRAM52は、CAM51からのヒットフラグの情報、およびSRAMサブタグアドレスに基づいて、CPU11がアドレスで指定したデータを検索し、データが検索できた場合、CPU11に出力する。また、SRAM52は、CPU11がアドレスで指定したデータが検索できなかった場合、メインメモリ14にアクセスし、そのデータを読み出して、CPU11に供給すると共に、最も古いデータと置換して新たに記憶する。
より詳細には、SRAM52は、比較検索部71、出力部72、書戻部73、世代管理部74、書戻管理部75、書込部76、書換部77、および格納部78を備えている。比較検索部71は、世代判定部81を制御して、CAM51からのヒットフラグの情報により特定されている、検索されるデータの候補のうち、まず、最初の処理で第1世代のもののみを特定させる。
ここでいう世代とは、世代管理部74により管理されるものであり、SRAM52の格納部78に格納されている各データが最近アクセスされた日時により設定される順序のうち、例えば、上位2位までのデータが第1世代に設定され、それ以下の順位のデータが第2世代に設定される。つまり、最近アクセスされた、読み出される可能性の比較的高いデータが第1世代に設定され、それ以外のデータが第2世代に設定される。尚、上位2位までが第1世代に設定される例について説明したが、それ以外の順位までを第1世代とし、それ以外のデータを第2世代としてもよいものである。
比較検索部71は、最初の処理で世代判定部81を制御して、CPU11によりアドレスで特定される読み出しが要求されたデータの候補のうち、最新のものとして分類されている第1世代のデータを特定させる。そして、比較検索部71は、第1世代のものとして特定されたCAMサブタグアドレスで検索されたアドレスにより指定されたデータの候補のぞれぞれのSRAMサブタグアドレスと、SRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスとを比較して検索し、一致するものが検索できた場合、検索されたデータを出力部72に供給する。
出力部72は、検索されたデータを取得すると、CPU11によりアドレスで指定されている要求されたデータとして供給する。また、第1世代のものとして特定されたCAMサブタグで検索されたアドレスにより指定されたデータの候補のSRAMサブタグアドレスのうち、抽出されたSRAMサブタグアドレスと一致するものが検索できなかった場合、比較検索部71は、世代判定部81により第1世代と判定されなかった、すなわち、第2世代のデータのSRAMサブタグアドレスと、SRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスとを比較検索し、一致するものが検索された場合、検索されたデータを出力部72に供給する。
一方、比較検索部71は、いずれの世代においてもCPU11によりアドレスで特定されたデータが検索できない場合、CAMサブタグアドレスの情報、およびSRAMサブタグアドレスの情報と共に、対応するデータをメインメモリ14より読み出すように読出部54に通知する。読出部54は、CAMサブタグアドレス、およびSRAMサブタグアドレスの情報に基づいて、タグアドレスを特定し、メインメモリ14にアクセスして、そのタグアドレスに対応するデータを読み出し、CPU11に供給すると共に、CAM51、SRAM52、および置換部55に対して読み出したデータのCAMサブタグ、SRAMサブタグ、およびデータそのものを供給する。
書戻部73は、CPU11からの命令が書き込み処理である場合、サブバンク42により管理するべきデータが更新されるとき、SRAM52の格納部78に格納されているデータを置換して更新する前に、メインメモリ14に対応するデータを書き戻す。
置換部55は、CPU11からの命令により指定されたタグアドレスの情報が検出できず、メインメモリ14からデータが読み出された場合、新たなデータとタグアドレスとで、それまで記憶していたデータとタグアドレスとを置換して更新する。
書込部76は、CPU11からの命令が書き込み処理の場合、格納部78に格納されているデータをCPU11からの処理結果であるデータで書き換える。
書換部77は、CPU11からの命令が書き込み処理の場合、書込部76が格納部78に格納されているデータをCPU11からの処理結果であるデータで書き換える前に、メインメモリにアクセスし、対応するデータを書き換える。
尚、LRU管理部53、世代管理部74、および書戻管理部75の詳細については、後述するデータ管理構造と併せて説明するものとする。
[データ管理構造]
次に、図6を参照して、格納部78に格納されるデータの管理構造について説明する。図6においては、垂直方向に各データ単位のラインが形成されており、ラインL1乃至L32までの合計32データが記録されていることが示されている。尚、このラインL1乃至L32のそれぞれを特に区別する必要がない場合、単にラインLと称するものとする。
図6の各ラインLには、左からCAMサブタグアドレス、SRAMサブタグアドレス、データ、アクセス日時情報、世代情報、および書戻フラグが含まれており、データ単位で管理される情報が示されている。このラインLの数は、CAM51およびSRAM52の物理的な構成により決定されるウェイ数に相当しており、図6の例では、32ウェイの例であることが示されている。ただし、このウェイ数は、ハードウェアの構成により決まるものであるので、ハードウェアの構成により、ウェイ数は様々な数をとることが可能であり、例えば、2,4,8,16,32などでもよいし、これ以外のウェイ数であってもよい。
尚、図6においては、各データを特定するタグアドレスは、図6の左側の2列で示されている。すなわち、CAMサブタグアドレスとSRAMサブタグアドレスとが特定されることにより、CPU11により指定されたタグアドレスのデータが検索されることになる。
アクセス日時情報は、LRU(Least Recently Used)管理部53のLRU管理リスト53aによりデータ単位(ライン単位)で管理されている情報である。すなわち、LRU(Least Recently Used)管理部53は、LRU管理リスト53aを備えており、LRU管理リスト53a上にデータ単位で(ライン単位で)、図6中のデータ列の右側に表示されている最近アクセスされたアクセス日時情報をデータ単位(ライン単位)で管理している。すなわち、LRU管理部53は、SRAM52のアクセスがある度に、LRU管理リスト53aを更新して、図6におけるデータ毎(ライン毎)のアクセス日時の情報を管理している。また、図6には図示されていないが、LRU管理部53は、LRU管理リスト53aの情報に基づいて、各ラインを最近アクセスされた日時順に並び替えて、ライン毎の順位を求める。
世代情報は、世代管理部74の世代管理リスト74aによりデータ単位(ライン単位)で管理されている情報である。すなわち、世代管理部74は、世代管理リスト74aを備えており、LRU管理部53のLRU管理リスト53aにアクセスし、最近アクセスされたライン毎の日時順の情報に基づいて、世代管理リスト74aに、ライン単位で最近アクセスされた上位2位までのデータに第1世代データであることを示すフラグを立て、それ以外のデータについては第2世代データであることを示すため、第1世代であること示すフラグを立てないようにして管理する。
書戻フラグは、書戻管理部75の書戻管理リスト75aによりデータ単位(ライン単位)で管理されている情報である。すなわち、書戻管理部75は、書戻管理リスト75aを備えており、CPU11からの指令が書き込み処理である場合、データが更新される度に、SRAM52のデータを更新する前に、先にメインメモリ14のデータを書き戻して更新する必要があるので、書戻が必要となるデータにフラグを立てて管理する。すなわち、書戻管理部75は、指令が書き込み処理であるか否かにより、書戻管理リスト75aを更新し、図6におけるデータ毎(ライン毎)の書戻フラグを管理している。
[プログラム実行処理]
次に、図7のフローチャートを参照して、プログラム実行処理について説明する。
ステップS1において、CPU11は、図示せぬプログラムカウンタより実行すべき命令のアドレスを取得し、アドレス入力部12に供給する。この処理により、アドレス入力部12は、CPU11よりアドレスの入力を受け付ける。
インデックスアドレス抽出部21は、入力されたアドレスよりインデックスアドレスを抽出する。また、タグアドレス抽出部22は、入力されたアドレスよりタグアドレスを抽出し、CAMサブタグアドレス抽出部22aおよびSRAMサブタグアドレス抽出部22bに供給する。CAMサブタグアドレス抽出部22aは、タグアドレスの、下位sビットをCAMサブタグアドレスとして抽出してキャッシュメモリ13内にある各サブバンク42のCAM51に供給する。SRAMサブタグアドレス抽出部22bは、タグアドレスのうち、CAMサブタグアドレス以外の上位(X−s)ビットをSRAMサブタグアドレスとして抽出してキャッシュメモリ13内にある各サブバンク42のSRAM52に供給する。
ステップS2において、キャッシュメモリ13は、命令キャッシュ処理を実行し、CPU11に入力されたアドレスに対応するデータを読み出し、CPU11に供給する。
[命令キャッシュ処理]
ここで、図8のフローチャートを参照して、命令キャッシュ処理について説明する。
ステップS21において、キャッシュメモリ13は、いずれかのサブバンク42を指定してキャッシュヒットミス判定処理を実行させる。
[キャッシュヒットミス判定処理]
ここで、図9のフローチャートを参照して、キャッシュヒットミス判定処理について説明する。
ステップS41において、インデックスアドレス抽出部21は、抽出したインデックスアドレスをデコード部41に供給する。デコード部41は、インデックスアドレスを解析し、解析結果からキャッシュヒットミス処理を実行させるサブバンク42を特定し、特定したサブバンク42に対して起動を指示する信号を供給する。この処理により、起動が指示されたサブバンク42は、電力供給を受けて起動を開始する。一方、起動が指示されていないサブバンク42は起動されず、結果として、処理が必要とされていないサブバンク42の電力消費が低減される。
ステップS42において、CAM51は、タグアドレス抽出部22のCAMサブタグアドレス抽出部22aより供給されてくるCAMタグアドレスと、SRAM52内に管理されるデータに対応付けて登録されているCAMタグアドレスとを比較し、一致するものが検索されるか否かを判定する。
すなわち、例えば、図10の左部で示されるように、ラインL0のCAMサブタグアドレスが「0001」であり、ラインL1が「0101」であり、ラインL2が「1001」であり、ラインL3が「0000」であり、ラインL4が「1001」であり、ラインL5が「0001」であり、ラインL6が「0010」であり、・・・ラインL28が「0001」であり、ラインL29が「0111」であり、ラインL30が「1001」であり、ラインL31が「1000」である場合、入力されたアドレスから抽出されたCAMサブタグアドレスが「1001」であるとき、CAM51は、全てのラインLのCAMサブアドレスとを比較して検索すると、図中の矢印で示されているラインL2,L4,L30のCAMサブタグアドレスがヒットすることになる。そこで、このような場合、ステップS42において、CAM51は、タグアドレス抽出部22のCAMサブタグアドレス抽出部22aより供給されてくるCAMサブタグアドレスと、SRAM52内に管理されるデータに対応付けて登録されているCAMサブタグアドレスとに一致するものがあると判定し、処理は、ステップS43に進む。
尚、図10においては、垂直方向にラインLごとに左からCAMサブタグアドレス、SRAMサブタグアドレス、データ、および世代情報が対応付けて示されている。また、図10の世代情報においては、ラインL2,L3,L29のみが第1世代(1st)であり、それ以外が第2世代(2nd)であることが示されている。
ステップS43において、CAM51は、一致したCAMタグアドレス、および一致したラインLを示す情報として、一致したラインLに対してヒットフラグを立ててSRAM52に供給する。この処理により、SRAM52の比較検索部71は、一致したCAMタグアドレスとラインLの情報を取得する。すなわち、図10の左部においては、ラインL2,L4,L30についてヒットフラグが付されることになる。
そして、比較検索部71は、世代判定部81を制御して、CAMタグアドレスが一致したラインLのうち、第1世代のラインLの情報を比較対象のラインLとして検索させる。例えば、図10の左部の場合、ラインL2のデータのみが第1世代に設定されているので、ラインL2のみが検索される。さらに、比較検索部71は、検索されたCAMタグアドレスが一致したラインLのうち、第1世代の、比較対象となったラインL2のSRAMサブタグアドレスと、SRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスとを比較すると共に、比較対象となったラインL2で管理されているデータを格納部78より比較検出部71に対して出力させる。
ステップS44において、比較検索部71は、比較対象となった第1世代のラインLのSRAMサブタグアドレスと、SRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスとを比較して、一致するものがあるか否かを検索する。例えば、図10の左部の場合、検索されたのはラインL2のデータのみであるので、ラインL2のSRAMサブタグデータと、SRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスとが比較される。
ステップS44において、例えば、図10の左部で「hit」と示されるように、SRAMサブタグアドレスの両者が一致した場合、ステップS45において、比較検索部71は、キャッシュヒットしたことを認識し、一致したSRAMサブタグアドレスに対応して格納部78より出力されてきたデータを出力部72に供給する。
一方、ステップS44において、一致するSRAMサブタグアドレスがない場合、ステップS46において、比較検索部71は、世代判定部81を制御して、CAMタグアドレスが一致したラインLのうち、第2世代のラインLの情報を比較対象のラインLとして検索させる。例えば、図10の右部で示されるように、ラインL4,L30のデータのみが第2世代のデータ(ラインL)として検索される。さらに、比較検索部71は、検索されたCAMタグアドレスが一致したラインLのうち、第2世代の、すなわち、比較対象となったラインLのSRAMサブタグアドレスと、SRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスとを比較すると共に、比較対象となったラインLで管理されているデータを格納部78より比較検出部71に対して出力させる。
ステップS47において、比較検索部71は、比較対象となった第2世代のラインLのSRAMサブタグアドレスと、SRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスとを比較して、一致するものがあるか否かを検索する。例えば、図10の右部の場合、検索されたのはラインL4,L30のデータであるので、ラインL4,L30のSRAMサブタグデータと、SRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスとが比較される。
ステップS47において、例えば、図10の右部でラインL30において「hit」と示されるように、両者が一致した場合、ステップS45において、比較検索部71は、キャッシュヒットしたことを認識し、一致したSRAMサブタグアドレスに対応して格納部78より出力されてきたデータを出力部72に供給する。すなわち、この場合、ラインL4,L30の両方のデータが格納部78から比較検索部71に出力されている。しかしながら、SRAMサブタグアドレスが一致したのは、図中(hit)と示されたラインL30のものであるので、比較検索部71は、ラインL30のデータのみを出力部72に供給すると共に、ラインL4のデータを破棄する。このように、比較検索部71は、ヒットしたデータのみを出力部72に供給し、キャッシュミスとなったデータを破棄する。
一方、ステップS42において、CAMサブタグアドレスに一致するものがない場合、または、ステップS47において、例えば、比較対象となるSRAMタグアドレスとSRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスが一致しない場合、ステップS48において、比較検索部71は、格納部78には、CPU11より供給されてきたアドレスに対応するデータが格納されていない、すなわち、キャッシュミスであるものと認識し、処理は終了する。
すなわち、まず、CAMサブタグアドレスで比較対象となるラインを検索し、一致するものがあった場合、最初は、CAMサブタグアドレスが一致するラインのうち、第1世代のものだけを比較対象とするラインとして、SRAMサブタグアドレスで検索し、一致すればキャッシュヒットであるものと判定する。また、CAMサブタグアドレスが一致するラインのうち、第1世代の比較対象とするラインを、SRAMサブタグアドレスで検索しても一致するものがないとき、CAMサブタグアドレスが一致するラインのうち、第2世代の比較対象とするラインを、SRAMサブタグアドレスで検索するようにした。
このため、SRAMサブタグアドレスが一致する可能性の高い最近のデータを含む第1世代となる一部のラインのみを比較対象とすることができるので、SRAMサブタグアドレスでの一致の可能性の低いラインを排除することで、CAMサブタグアドレスで一致する全てのラインに対してSRAMサブタグアドレスによる検索をしないようにすることができる。
結果として、全てのラインを比較対照としないため、キャッシュミスとなるラインが低減されてSRAM52の消費電力としてインパクトの大きな格納部78からの出力動作を低減させることができ、全体として消費電力を低減させることが可能となる。また、SRAMサブタグアドレスが一致する可能性の高い最近のデータを含む第1世代となる一部のラインのみを比較対象とすることができるので、ヒット率を低減させずに、消費電力を低減させることが可能となる。
ここで、図8のフローチャートの説明に戻る。
ステップS22において、比較検索部71は、キャッシュヒットであるか否かを判定する。
ステップS22において、例えば、上述したステップS45の処理により、キャッシュヒットである場合、処理は、ステップS23に進む。
ステップS23において、出力部72は、比較検索部71より供給されてきたデータをCPU11に供給する。
ステップS24において、比較検出部71は、出力部72に供給したデータ(ライン)のCAMサブタグアドレスおよびSRAMサブタグアドレスを供給し、対応するデータにアクセスがあったことをLRU管理部53に通知する。LRU管理部53は、アクセスがあったことを示す情報に基づいて、LRU管理リスト53aを更新する。より詳細には、LRU管理部53は、LRU管理リスト53aの情報のうち、アクセスがあったとして通知されてきたCAMサブタグアドレスおよびSRAMサブタグアドレスのデータの最近読み出された日時の情報を現在時刻に更新すると共に、読み出された日時の順位を第1位に更新する。尚、日時の順位を管理するに当たり、日時の情報をそのまま用いて管理すると、膨大なデータを管理する必要が生じる恐れがある。そこで、日時の順位の管理には、日時の情報をそのまま扱うのではなく、例えば、32ウェイであれば、5ビットのカウンタビットを用いるようにして、データの順位のみを管理するようにしてもよい。
ステップS25において、世代管理部74は、LRU管理部53に対してLRU管理リスト53aを要求し、取得する。そして、世代管理部74は、LRU管理リスト53aにおける上位2位までのラインについて、世代管理リスト74aの世代情報を第1世代に更新し、併せて、それ以外のラインについて、世代情報を第2世代に更新する。
一方、ステップS22において、キャッシュヒットではない、すなわち、キャッシュミスであったと判定された場合、処理は、ステップS26に進む。
ステップS26において、比較検索部71は、読出部54に対して、CPU11よりアドレスにより指定されたデータが存在しないため、メインメモリ14より読み出すように指示すると共に、CAMサブタグアドレスおよびSRAMサブタグアドレスを供給する。読出部54は、この指示に応じて、CAMサブタグアドレスおよびSRAMサブタグアドレスに基づいてタグアドレスを特定し、メインメモリ14にアクセスして、データを読み出すと共に、CAM51、比較検索部71および置換部55に供給する。
ステップS27において、置換部55は、LRU管理部53に対してLRU管理リスト53aを要求し、取得する。そして、置換部55は、LRU管理リスト53aにおいて、最下位となるライン、すなわち、最も古いデータとタグアドレスとを検索し、読出部54より供給されてきたデータとタグアドレスとで置換してCAM51およびSRAM52の格納部78の情報を更新する。
以上のように命令キャッシュ処理により、CPU11により命令の読み出しが指示されたデータについて、LRU管理リスト53aのアクセスされた日時が更新されて、さらに、日時に応じて設定される順位が順次更新することが可能となる。また、LRU管理リスト53aの更新に応じて、世代管理部74における世代管理リスト74aも併せて更新することが可能となり、最近アクセスされた日時に応じて世代情報を更新させることが可能となる。
また、以上の処理においては、置換部55は、同一のCAMサブタグアドレスに対して、異なる複数のSRAMサブタグアドレスが格納部78に重複するようなデータが置換されることも認めるように処理する。この結果、格納部78に格納されるデータは、同一のCAMサブタグアドレスに対して、SRAMサブタグアドレスが1に絞られるようなことがなく、LRU法に則って、最近アクセスされたデータが確実に置換されて格納されることとなるので、LPHAC法で見られたようなキャッシュヒット率の低下を抑制することが可能となる。
ここで、図7のフローチャートの説明に戻る。
ステップS2において、命令キャッシュ処理が終了すると、ステップS3において、CPU11は、使用するレジスタオペランドを指定する。
ステップS4において、CPU11は、キャッシュメモリ13より供給されてきたデータからなる命令に対応する計算、演算、または比較等の処理を実行する。
ステップS5において、CPU11は、実行している命令がストア命令であるか否かを判定する。ステップS5において、例えば、実行している命令がストア命令である場合、処理は、ステップS6に進む。
ステップS6において、CPU11は、キャッシュメモリ13に対してステップS1と同様にアドレスを指定してデータキャッシュ処理を指示する。これに応じてアドレス入力部12は、入力されたアドレスにより、インデックスアドレス、CAMサブタグアドレス、およびSRAMサブタグアドレスをキャッシュメモリ13に供給する。キャッシュメモリ13は、このインデックスアドレス、CAMサブタグアドレス、およびSRAMサブタグアドレスに基づいて、データキャッシュ(書き込み)処理を実行する。
[データキャッシュ(書き込み)処理]
ここで、図11のフローチャートを参照して、データキャッシュ(書き込み)処理について説明する。尚、図11のフローチャートにおいて、ステップS61,S62,S65,S66の処理については、図8のフローチャートを参照して説明したステップS21,S22,S24,S25の処理と同様であるので、その説明は省略するものとする。
すなわち、ステップS62において、例えば、キャッシュヒットであった場合、処理は、ステップS63に進む。
ステップS63において、比較検索部71は、キャッシュヒットしたものとして検索されたラインの情報(CAMサブタグアドレス、およびSRAMサブタグアドレスの情報)を書戻管理部75、および書込部76に供給する。そして、書込部76は、CPU11の書き込み指示に従って、検索されたCAMサブタグアドレス、およびSRAMサブタグアドレスで特定されるラインに対応付けて、演算結果のデータを格納部78に書き込む。
ステップS64において、書戻管理部75は、CAMサブタグアドレス、およびSRAMサブタグアドレスで特定されるラインの書き戻しフラグをオンの状態にして、書戻管理リスト75aを更新し、以降の処理において、そのラインが書き戻し対象であることを記録する。
一方、ステップS62において、キャッシュヒットではない、すなわち、キャッシュミスであった場合、処理は、ステップS67に進む。
ステップS67において、比較検索部71は、キャッシュミスしたことを示す情報を書換部77に供給する。書換部77は、メインメモリ14にアクセスし、CAMサブタグアドレス、およびSRAMサブタグアドレスで特定されるタグアドレスのデータを、CPU11より供給されてくるデータで書き換える。
ステップS68において、書戻部73は、LRU管理部53および書戻管理部75に対して、それぞれLRU管理リスト53aおよび書戻管理リスト75aを要求し、取得する。そして、書戻部73は、LRU管理リスト53aにおいて、最下位となるライン、すなわち、最も古いラインを検索し、さらに、その最も古いラインについて、書戻管理リスト75aで照合し、書戻フラグがオンの状態であるか否かを判定する。ステップS68において、例えば、最下位となるライン、すなわち、最も古いデータであって置換されるラインの書戻フラグがオンであり、書き戻し対象となっている場合、処理は、ステップS69に進む。
ステップS69において、書戻部73は、メインメモリ14にアクセスし、最下位となるライン、すなわち、最も古いデータであって置換される対象となっているラインの書戻フラグがオンとなっているデータをメインメモリ14に書き戻す。
すなわち、この処理により、新たにCPU11より供給されてくるデータで書き換えられて、キャッシュメモリ13内から消滅する前に、データがメインメモリ14に書き戻されることになる。
一方、ステップS68において、最も古いデータであって置換されるラインの書戻フラグがオンではなく、オフとされており、書き戻し対象のラインではない場合、ステップS69の処理は、スキップされる。
ステップS70において、置換部55は、LRU管理部53に対してLRU管理リスト53aを要求し、取得する。そして、置換部55は、LRU管理リスト53aにおいて、最下位となるライン、すなわち、最も古いデータとタグアドレスとを検索し、CPU11より供給されてきたデータとタグアドレスとで置換してCAM51およびSRAM52の格納部78の情報を更新する。
以上の処理により、書き込みデータのデータキャッシュが管理されるので、アクセス頻度の高い書き込みデータのみがキャッシュメモリ13内で管理され、それ以外のデータについては、順次メインメモリ14に書き戻されていく。
ここで、図7のフローチャートの説明に戻る。
ステップS6の処理により、データキャッシュ(書き込み)処理が完了すると、プログラム実行処理は終了する。
一方、ステップS5において、実行している命令がストア命令ではないと判定された場合、処理は、ステップS7に進む。ステップS7において、CPU11は、実行している命令がロード命令であるか否かを判定する。ステップS7において、例えば、実行している命令がロード命令である場合、処理は、ステップS8に進む。
ステップS8において、CPU11は、キャッシュメモリ13に対してステップS1と同様にアドレスを指定してデータキャッシュ処理を指示する。これに応じてアドレス入力部12は、入力されたアドレスにより、インデックスアドレス、CAMサブタグアドレス、およびSRAMサブタグアドレスをキャッシュメモリ13に供給する。キャッシュメモリ13は、このインデックスアドレス、CAMサブタグアドレス、およびSRAMサブタグアドレスに基づいて、データキャッシュ(読み出し)処理を実行する。
[データキャッシュ(読み出し)処理]
ここで、図12のフローチャートを参照して、データキャッシュ(読み出し)処理について説明する。尚、図12のフローチャートにおけるステップS81乃至S89の処理は、図11のフローチャートにおけるステップS61,S62、図8のフローチャートにおけるステップS23乃至S26、並びに、図11のフローチャートにおけるステップS68乃至S70の処理と同様であるので、その説明は省略する。
すなわち、図12のフローチャートにおいては、図11のフローチャートを参照して説明した処理における書き込みを対象とした処理が省略され、メインメモリ14からの読み出し処理のみとなる。
ここで、図7のフローチャートの説明に戻る。
ステップS8において、データキャッシュ(読み出し)処理が終了すると、ステップS9において、CPU11は、図示せぬレジスタファイルに処理結果を書き込み、処理を終了する。
また、ステップS7において、命令がロード命令ではない場合、ステップS10において、CPU11は、図示せぬレジスタファイルに処理結果を書き込み、さらに、図示せぬプログラムカウンタを更新して、処理を終了する。
以上の一連の処理のうち、特に、タグアドレスの一部をSRAMサブタグアドレスとして設定し、SRAM52により管理させるようにし、さらに、最近アクセスされた第1世代のデータを優先的に検索させるようにした。このため、CAMサブタグアドレスにより検索されたラインであって、第1世代のラインのみを、SRAMサブタグアドレスで検索するようにしたので、対応付けて格納されているデータのうち、SRAM52の検索に伴って同時に読み出されるデータ数を絞り込むことが可能となり、結果として、SRAM52の消費電力として大きな出力動作を制限させることができ、消費電力を低減させることが可能となる。また、最初の処理で、アクセスされる頻度が高い第1世代のラインを優先的に検索させることにより、キャッシュヒット率の低減を抑制することが可能となる。
さらに、1のCAMサブタグアドレスに対して、複数のSRAMサブタグアドレスであっても、重複してデータを格納させることを認めて、LRU法に則って、アクセスされる可能性の高いデータを格納できるようにしたので、1のCAMサブタグアドレスに対して、1のSRAMサブタグアドレスに絞られることによりキャッシュヒット率が低減してしまうことを抑制することが可能となる。
このように、1のCAMサブタグアドレスに重複して複数のSRAMサブタグアドレスとなるデータの格納を認めて、かつ、最近アクセスされた第1世代のデータを優先的に検索させることにより、キャッシュヒット率を低減させることなく、消費電力を低減させることが可能となる。
[ベンチマークプログラムによるミス率の比較]
次に、図13を参照して、本発明を適用したキャッシュメモリを用いた場合のミス率と、その平均値について説明する。尚、図13においては、上段に命令キャッシュによる結果が示されており、下段にデータキャッシュによる結果が示されている。また、図13における横軸に対応する番号1乃至21のベンチマークプログラムは、1から順に、bitcount,qsort,susan_e,susan_c,susan_s,lame,tiff2bw,tiff2rgba,dijkstra,patricia,ispell,stringsearch,blow_d,blow_e,rijndael_d,rijndael_e,sha,crc,rawcaudio(adpcm),rawdaudio(adpcm),untoast(gsm)であり、番号22は全体の平均値(average)である。
また、各プログラム毎のミス率は、左から従来型の4ウェイのSRAM、8ウェイのSRAM、32ウェイのCAM、タグアドレスを24ビットとしたときのCAMサブタグアドレスのビット数sを、s=5,8,9,11としたLPHAC法、および本発明の例(s=4)(黒で表記されている)である。
図13の上段で示されるように命令キャッシュのミス率は、番号22で示される平均値から、LPHAC法は従来型のCAMよりも高い値であることがわかる。特に、CAMサブタグアドレスのビット数s=5の場合、ミス率が際立って高い。これは、CAMサブタグアドレスの比較検索で検索できる(ヒットする)が、SRAMタグアドレスの比較検索で検索できない(ミスする)場合が多いためと思われる。また、CAMサブタグアドレスのビット数s=8,9の場合、多くのベンチマークプログラムでのミス率は、従来型のCAMに近い値となるがrijndael dやqsortでは、ミス率は大きい。ミス率は、CAMサブタグアドレスのビット数s=11では全てのベンチマークプログラムにおいて従来型のCAMとほぼ同等となる。一方、本発明のキャッシュメモリにおいては,CAMサブタグアドレスのビット数s=4としても、ミス率には影響を与えないことがわかる。
すなわち、平均値をみると、LPHAC法ではCAMサブタグアドレスのビット数s =5,8,9,11のとき、それぞれ0.75%,0.43%,0.43%,0.42%となるのに対し、本発明のキャッシュメモリにおいては、CAMサブタグアドレスのビット数s=4において、従来型のCAMと同じ0.42%である。
また、図13の下段で示されるように、データキャッシュについても命令キャッシュと同様の傾向が見られる。すなわち、LPHAC法では、CAMサブタグアドレスのビット数s=8の場合、rijndael_dやrijndael eはミス率が高く、patriciaやcrcではCAMサブタグアドレスのビット数s=9でもミス率が高い。
一方、本発明のキャッシュメモリの場合、命令キャッシュと同様、従来型のCAMと同様のミス率となっており、CAMサブタグアドレスのビット数s=4でも影響を受けない。番号22で示される平均値をみると、LPHAC法がs=5,8,9,11のとき、それぞれ1.95%,0.91%,0.80%,0.67%となるのに対し、本発明のキャッシュメモリにおいてはCAMサブタグアドレスのビット数s=4において従来型のCAMと同じ0.66%である。
このように、本発明のキャッシュメモリにおいてはCAMサブタグアドレスとの部分的な比較検索において、ヒットするキャッシュラインを1つに絞らないため、常にLRU方式を採用できるので、ヒット率の低下を抑制することができる。また,LPHAC法のようにCAMアブタグアドレスのビット数sの大きさによって、特定のベンチマークのミス率が大きな影響を受けることはない。
なお、従来型のCAMと本発明のキャッシュメモリは、4,8ウェイの従来型のSRAMと比較し、命令キャッシュでそれぞれ10.7%,8.6%となり、データキャッシュにおいてそれぞれ11.6%,5.0%平均ミス率が小さい。
[消費電力量の比較]
次に、図14乃至図16を参照して、消費電力量の評価について説明する。本発明の消費電力量の評価は、上述したベンチマークプログラムを実行したときの平均値に基づいて行うものとし、以下の式(1)で表される消費電力量Eで表現されるものとする。
E=Etag+Edata ・・・(1)
ここで、Etagは、以下の式(2)で表される。
Etag=ECAM +ESRAM ・・・(2)
ここで、式(2)におけるECAMおよびESRAMは以下の式(3),式(4)で表される。
ECAM=α×w×s×NC ・・・(3)
ESRAM = (t−s)×(NS1+NS2) ・・・(4)
ここで、αはCAM51の1ビット検出に要する消費電力量を、wはウェイ数を、sはCAMサブタグアドレスのビット数を、tはタグアドレスのビット数を、NCはCAMへのアクセス数を、NS1は第1世代として管理されているSRAMのデータへのアクセス数を、NS2は第2世代として管理されているSRAMのデータへのアクセス数をそれぞれ示している。
さらに、Edataは、以下の式(5)で表される。
Edata =β×l×(NS1+NS2) ・・・(5)
ここで、βはSRAMのデータ1ビットの出力に要する消費電力量を、lは1ライン当たりのデータビット長をそれぞれ表している。
まず、図14を参照して、タグアドレスの検出に要する消費電力量Etagおよびデータ出力に要する消費電力量Edataと、それぞれのCAMサブタグアドレスのビット長sとの関係について説明する。
図14においては、左部が命令キャッシュ処理であり、右部がデータキャッシュ処理である。また、いずれも実線および1点鎖線がタグアドレスの検出に要する消費電力量Etagを、点線および2点鎖線がデータ出力に要する消費電力量Edataをそれぞれ表している。タグアドレスの検出に要する消費電力量Etagは、SRAMタグアドレス1ビット検出に要する電力量を単位とする。データ出力に要する消費電力量Edataは、SRAMデータ1ビットの出力に要する電力量を単位とする。尚、1ラインは256ビットとしている。また、CAM51の1ビット検出に要する消費電力量α=5とし、CAMサブタグアドレスのビット数s=0乃至8、第1世代ウェイ数r =0,4について比較している。比較のために、CAMサブタグアドレスのビット数s=8におけるLPHAC法のタグアドレスの検出に要する消費電力量Etag(×印)およびデータ出力に要する消費電力量Edata(十字マーク)も示している。
LPHAC法では、CAMサブタグアドレスのビット数sを小さくするとミス率が大きくなるため、CAMサブタグアドレスのビット数s≧8でなければならないのに対し、本発明のキャッシュメモリでは、CAMサブタグアドレスのビット数s<8とすることが可能である。
タグアドレスの検出に要する消費電力量Etagは、CAMサブタグアドレスのビット数sを小さくすると線形に減少する。CAMサブタグアドレスのビット数s=8に対して、CAMサブタグアドレスのビット数s=4では、タグアドレス検出に要する消費電力量はほぼ1/2となる。
データ出力に要する消費電力量Edataは、CAMサブタグアドレスのビット数sを小さくするとある値以下では急激に増加する。急激に増加するときのCAMサブタグアドレスのビット数sの値は、第1世代SRAMのウェイ数rによって異なる。ウェイ数r=0のときはCAMサブタグアドレスのビット数sはs≦6で急激に増加するのに対し、ウェイ数r=4とすれば、CAMサブタグアドレスのビット数s=4まであまり変化しない。LPHAC法は、タグアドレスの検出に要する消費電力量Etagおよびデータ出力に要する消費電力量Edata共に本発明のキャッシュメモリと同程度の値をとるが、CAMサブタグアドレスのビット数sを小さくすることが難しい。
本発明のキャッシュメモリは、ウェイ数r=0のときは世代を分けていないため、CAMサブタグアドレスのビット数sを小さくすることが難しいが、図15の波形図a,bで示されるように、ウェイ数r=4ならば、世代を分けた効果が表れる。
ここで、図15の波形図a,bは、それぞれ命令キャッシュとデータキャッシュについて、CAMサブタグアドレスのビット数sをs=4とし、ウェイ数rをr=0,1,2,4,8,16,32と変えたとき、点線で示されるタグアドレスの検出に要する消費電力量Etagおよび実線で示されるデータ出力に要する消費電力量Edataのウェイ数rとの関係が示されている。
すなわち、命令キャッシュ、およびデータキャッシュのどちらの場合も、ウェイ数r=2乃至4の近傍で消費電力量が最少となる。ウェイ数rの値により消費電力量に最小値が現れるのは、ウェイ数rが小さいと第2世代に設定されたデータとの比較検索回数が増加し、ウェイ数rが大きいと第1世代に設定されたデータで複数比較検索の頻度が上がるためである。
ところで、SRAMにおいて、デコーダや比較器のような論理回路の電力が、ワードライン駆動時に流れるビットラインキャパシタンスの充放電に要する電力と比較して十分小さいという原理が知られている(Itoh, K., Sasaki, K. and Nakagome, Y.: Trends in low-power RAM circuit technologies, Proceedings of the IEEE, Vol.83, No.4, pp.524-543(1995).参照)。そこで、本発明のキャッシュメモリの消費電力量Eについて考えるに当たっては、その原理に則り、SRAMサブタグアドレス1ビットの検出に要する電力量は、SRAMデータ1ビット出力に要する電力量に等しいとする近似を用いる。すなわち、式(5)においてSRAMのデータ1ビットの出力に要する消費電力量β=1とする。
図15の波形図c,dは、それぞれ命令キャッシュとデータキャッシュについて、CAMサブタグアドレスのビット数sを変えたときの命令キャッシュとデータキャッシュの消費電力量Eを示しており、点線はウェイ数rがr=0のときであり、実線はウェイ数rがr=4のときの波形である。また、図15の波形図e,は、それぞれウェイ数r=4とし、第1世代のウェイ数rを変えたときの命令キャッシュとデータキャッシュの消費電力量Eを示している。これらの波形図から、本発明のキャッシュメモリにおいては、ウェイ数r=4の場合、CAMサブタグアドレスのビット数sがs=2のとき、消費電力量が最小となる。
次に、図16を参照して、従来のSRAM、CAM、およびLPHAC法、並びに本発明のキャッシュメモリの消費電力量を比較する。比較対象は、図16の左から、4,8ウェイの従来型(Traditional)SRAM、32ウェイの従来型CAM、CAMサブタグアドレスのビット数sがs=8のLPHAC法、並びに、ウェイ数rがr=4であって、かつ、CAMサブタグアドレスのビット数sがs=2の本発明のキャッシュメモリ(proposed)である。なお、いずれの場合もラインサイズが32bytesであり、キャッシュ容量が8KBである。また、従来型のCAMとLPHAC法、および本発明のキャッシュメモリについては、図16の左からCAMの消費電力量α= 5,7,10と値を変えて比較を行った命令キャッシュ(図16上段)、およびデータキャッシュ(図16下段)の消費電力量の比較結果が示されている。
命令キャッシュ、およびデータキャッシュの消費電力量は、共に従来型のCAMが、いずれの場合と比較しても消費電力量が一番高いことが示されている。LPHAC法は従来型のCAMに比べると消費電力量を抑えることができている。しかしながら、従来型のSRAMと比べると、CAMの消費電力量α≦7のとき、ウェイ数rがr=8のSRAMの消費電力量より小さくなるが、ウェイ数rがr=4のSRAMの消費電力量と比べるといずれも大きくなる。これに対して、消費電力量は、本発明のキャッシュメモリではαによらず従来型CAMとLPHAC法のいずれよりも小さくなる。CAMの消費電力量α=10において、従来型のウェイ数rがr=4のSRAMと同程度の消費電力量となっており、CAMの消費電力量αによらず、略同等の消費電力量になっている。
このように、本発明のキャッシュメモリはキャッシュヒット率の低下を抑制しつつ、消費電力を低減させることが可能となっている。
尚、本明細書において、プログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理は、もちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。
11 CPU, 12 アドレス入力部, 13 キャッシュメモリ, 14 メインメモリ, 21 インデックスアドレス抽出部, 22 タグアドレス抽出部, 22a CAMサブタグアドレス抽出部, 22b SRAMサブタグアドレス抽出部, 41 デコード部, 42 サブバンク, 51 CAM, 52 SRAM, 53 LRU管理部, 53a LRU管理リスト, 54 読出部, 55 置換部, 71 比較検索部, 72 出力部, 73 書戻部, 74 世代管理部, 74a 世代管理リスト, 75 書戻管理部, 76 書込部, 77 書換部, 78 格納部, 81 世代判定部

Claims (10)

  1. タグメモリとしてCAM(Content Addressable Memory)とSRAM(Static Random Access Memory)を有し、
    タグアドレスの一部をCAMサブタグアドレスとして、前記タグアドレスの他の部分をSRAMサブタグアドレスとして設定し、同一の前記CAMサブタグアドレスに対し、複数の前記SRAMサブタグアドレスを対応付けることを容認し、
    ヒットミス判定時に、前記CAMサブタグアドレスで前記CAM内の比較対象となるラインを検索し、
    前記CAMサブタグアドレスが一致するラインが存在する場合、
    前記CAMサブタグアドレスが一致するラインのうち、少なくとも、最近読み出しが要求された第1世代のラインだけを比較対象とするラインとして、前記SRAMサブタグアドレスで前記SRAM内の比較対象となるラインを検索し、
    前記第1世代のラインに前記SRAMサブタグアドレスが一致するラインが存在しないとき、
    前記CAMサブタグアドレスが一致するラインのうち、前記最近ではない時期に読み出しが要求された第2世代のラインだけを比較対象とするラインとして、前記SRAMサブタグアドレスで前記SRAM内の比較対象となるラインを検索する
    キャッシュメモリ。
  2. タグメモリとしてCAM(Content Addressable Memory)とSRAM(Static Random Access Memory)を有するキャッシュメモリであって、
    前記タグメモリのアドレスであるタグアドレスの一部がCAMサブタグアドレスとして、前記タグアドレスの他の部分がSRAMサブタグアドレスとしてそれぞれ設定され、かつ、同一の前記CAMサブタグアドレスに対し、複数の前記SRAMサブタグアドレスが対応付けられることが容認されており、
    ヒットミス判定時に、前記CAMサブタグアドレスで前記CAM内の比較対象となるラインを検索する第1検索手段と、
    前記CAMサブタグアドレスが一致するラインが存在する場合、
    前記CAMサブタグアドレスが一致するラインのうち、少なくとも、最近読み出しが要求された第1世代のラインだけを比較対象とするラインとして、前記SRAMサブタグアドレスで前記SRAM内の比較対象となるラインを検索し、
    前記第1世代のラインに前記SRAMサブタグアドレスが一致するラインが存在しないとき、
    前記CAMサブタグアドレスが一致するラインのうち、前記最近ではない時期に読み出しが要求された第2世代のラインだけを比較対象とするラインとして、前記SRAMサブタグアドレスで前記SRAM内の比較対象となるラインを検索する第2検索手段と
    を含むキャッシュメモリ。
  3. 前記第1検索手段による前記CAMサブタグアドレスの比較によりラインが検索されないとき、または前記第2検索手段により前記SRAMサブタグアドレスの比較により第2世代のラインが検索されないとき、接続するメインメモリより前記読み出しが要求されたタグアドレスに対応するラインを読み出し、前記第2世代のラインのうち、最も古く読み出されたラインを、前記メインメモリより読み出されたラインで置換し、併せて前記CAMサブタグアドレス、およびSRAMサブタグアドレスを置換する置換手段をさらに含む
    ことを特徴とする請求項2に記載のキャッシュメモリ。
  4. 前記置換手段は、一の前記CAMサブタグアドレスに対し、複数の前記SRAMサブタグアドレスが対応付けられて置換されることを許容する
    ことを特徴とする請求項に記載のキャッシュメモリ。
  5. 前記SRAMサブタグアドレスにより管理される各ラインが読み出された時期に基づいて、前記ラインが第1世代であるか、または、前記第2世代であるかを世代管理リストにより管理し、前記置換手段により前記メインメモリより読み出されたラインで、前記最も古く読み出されたラインが置換されるとき、前記SRAMサブタグアドレスにより管理されるラインが読み出された時期が、最も古く読み出されたラインを削除し、前記メインメモリより読み出されたラインを、最近読み出された時期として世代管理リストを更新する世代管理手段をさらに含む
    ことを特徴とする請求項に記載のキャッシュメモリ。
  6. 前記世代管理手段は、前記世代管理リストに基づいて、前記SRAMサブタグアドレスにより管理される各ラインについて、最近読み出されたラインを第1世代のラインとし、最近ではない時期に読み出されたラインを第2世代のラインとして、世代管理する
    ことを特徴とする請求項に記載のキャッシュメモリ。
  7. 前記CAMおよび前記SRAMの連想度nが連想度32であって、前記タグアドレスが24ビットの場合、前記CAMサブタグアドレスが2ビットであり、前記SRAMサブタグアドレスが22ビットである
    ことを特徴とする請求項2に記載のキャッシュメモリ。
  8. 前記連想度nが連想度32の前記CAMサブタグアドレスで管理されるラインのうち、前記第1世代のラインは、読み出された時期が最近に近い順に上位2位までのラインである
    ことを特徴とする請求項に記載のキャッシュメモリ。
  9. 複数の請求項2乃至のいずれかに記載のキャッシュメモリと、
    前記CAMおよび前記SRAMと接続されたCPU(Central Processing Unit)と、
    前記CPUより前記タグアドレスで指定されるラインの読み出し、または書き込みが要求された場合、前記タグアドレスより前記CAMサブタグアドレスを抽出するCAMサブタグアドレス抽出手段と、
    前記CPUより前記タグアドレスで指定されるラインの読み出し、または書き込みが要求された場合、前記タグアドレスより前記SRAMサブタグアドレスを抽出するSRAMサブタグアドレス抽出手段とを含むことを特徴とするプロセッサ。
  10. タグメモリとしてCAM(Content Addressable Memory)とSRAM(Static Random Access Memory)を有するキャッシュメモリの制御方法であって、
    前記タグメモリのアドレスであるタグアドレスの一部がCAMサブタグアドレスとして、前記タグアドレスの他の部分がSRAMサブタグアドレスとしてそれぞれ設定され、かつ、同一の前記CAMサブタグアドレスに対し、複数の前記SRAMサブタグアドレスが対応付けられることが容認されており、
    ヒットミス判定時に、前記CAMサブタグアドレスで前記CAM内の比較対象となるラインを検索する第1検索ステップと、
    前記CAMサブタグアドレスが一致するラインが存在する場合、
    前記CAMサブタグアドレスが一致するラインのうち、少なくとも、最近読み出しが要求された第1世代のラインだけを比較対象とするラインとして、前記SRAMサブタグアドレスで前記SRAM内の比較対象となるラインを検索し、
    前記第1世代のラインに前記SRAMサブタグアドレスが一致するラインが存在しないとき、
    前記CAMサブタグアドレスが一致するラインのうち、前記最近ではない時期に読み出しが要求された第2世代のラインだけを比較対象とするラインとして、前記SRAMサブタグアドレスで前記SRAM内の比較対象となるラインを検索する第2検索ステップと
    を含むキャッシュメモリの制御方法。
JP2011537244A 2009-10-20 2010-10-19 キャッシュメモリおよびその制御方法 Expired - Fee Related JP5622155B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011537244A JP5622155B2 (ja) 2009-10-20 2010-10-19 キャッシュメモリおよびその制御方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2009241446 2009-10-20
JP2009241446 2009-10-20
PCT/JP2010/068298 WO2011049051A1 (ja) 2009-10-20 2010-10-19 キャッシュメモリおよびその制御方法
JP2011537244A JP5622155B2 (ja) 2009-10-20 2010-10-19 キャッシュメモリおよびその制御方法

Publications (2)

Publication Number Publication Date
JPWO2011049051A1 JPWO2011049051A1 (ja) 2013-03-14
JP5622155B2 true JP5622155B2 (ja) 2014-11-12

Family

ID=43900277

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011537244A Expired - Fee Related JP5622155B2 (ja) 2009-10-20 2010-10-19 キャッシュメモリおよびその制御方法

Country Status (4)

Country Link
US (1) US8904111B2 (ja)
EP (1) EP2492818A4 (ja)
JP (1) JP5622155B2 (ja)
WO (1) WO2011049051A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009145776A1 (en) * 2008-05-29 2009-12-03 Hewlett-Packard Development Company, L.P. Replaceable printer component including memory storing data defined by tags and sub-tags
US9042652B2 (en) * 2012-11-01 2015-05-26 Intel Corporation Techniques for connected component labeling
KR20150009883A (ko) * 2013-07-17 2015-01-27 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
US9304929B2 (en) 2013-10-24 2016-04-05 Mediatek Singapore Pte. Ltd. Storage system having tag storage device with multiple tag entries associated with same data storage line for data recycling and related tag storage device
US20180088829A1 (en) * 2016-09-29 2018-03-29 Qualcomm Incorporated Area efficient architecture for multi way read on highly associative content addressable memory (cam) arrays
US10725699B2 (en) * 2017-12-08 2020-07-28 Sandisk Technologies Llc Microcontroller instruction memory architecture for non-volatile memory
US10824376B2 (en) 2017-12-08 2020-11-03 Sandisk Technologies Llc Microcontroller architecture for non-volatile memory
US10777240B1 (en) 2019-03-07 2020-09-15 Sandisk Technologies Llc Efficient control of memory core circuits
CN111045960B (zh) * 2019-11-21 2023-06-13 中国航空工业集团公司西安航空计算技术研究所 一种多像素格式存储的Cache电路
US11507498B2 (en) 2020-03-05 2022-11-22 Sandisk Technologies Llc Pre-computation of memory core control signals

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62293596A (ja) * 1986-06-12 1987-12-21 Matsushita Electric Ind Co Ltd 連想記憶装置
JPH0535599A (ja) * 1991-07-26 1993-02-12 Matsushita Electric Ind Co Ltd 情報処理装置
JPH06131265A (ja) * 1992-03-13 1994-05-13 Inmos Ltd 完全連想キャッシュメモリおよびキャッシュメモリ装置
JPH08263370A (ja) * 1995-03-27 1996-10-11 Toshiba Microelectron Corp キャッシュメモリシステム
JP2003519835A (ja) * 2000-01-03 2003-06-24 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ウェイ予測がミスした時にサーチを方向付けるための、予測されないウェイからの部分的なタグを提供するキャッシュ
JP3850669B2 (ja) * 2000-03-13 2006-11-29 三星電子株式会社 キャッシュメモリ

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3806131B2 (ja) * 2003-05-21 2006-08-09 富士通株式会社 アドレス変換バッファの電力制御方法及びその装置
US7480767B2 (en) 2006-06-15 2009-01-20 Sap Ag Cache with time-based purging and computation of purged items
JP5449321B2 (ja) 2008-04-09 2014-03-19 コーニンクレッカ フィリップス エヌ ヴェ 発見チャネルにおいてデータ送信を先取りする方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62293596A (ja) * 1986-06-12 1987-12-21 Matsushita Electric Ind Co Ltd 連想記憶装置
JPH0535599A (ja) * 1991-07-26 1993-02-12 Matsushita Electric Ind Co Ltd 情報処理装置
JPH06131265A (ja) * 1992-03-13 1994-05-13 Inmos Ltd 完全連想キャッシュメモリおよびキャッシュメモリ装置
JPH08263370A (ja) * 1995-03-27 1996-10-11 Toshiba Microelectron Corp キャッシュメモリシステム
JP2003519835A (ja) * 2000-01-03 2003-06-24 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ウェイ予測がミスした時にサーチを方向付けるための、予測されないウェイからの部分的なタグを提供するキャッシュ
JP3850669B2 (ja) * 2000-03-13 2006-11-29 三星電子株式会社 キャッシュメモリ

Also Published As

Publication number Publication date
EP2492818A1 (en) 2012-08-29
US8904111B2 (en) 2014-12-02
US20120210056A1 (en) 2012-08-16
EP2492818A4 (en) 2014-07-30
WO2011049051A1 (ja) 2011-04-28
JPWO2011049051A1 (ja) 2013-03-14

Similar Documents

Publication Publication Date Title
JP5622155B2 (ja) キャッシュメモリおよびその制御方法
JP4920378B2 (ja) 情報処理装置およびデータ検索方法
US6912623B2 (en) Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
KR102421311B1 (ko) 태그 매칭 명령에 응답하는 저장회로
US6990557B2 (en) Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US9582282B2 (en) Prefetching using a prefetch lookup table identifying previously accessed cache lines
US8180965B2 (en) System and method for cache access prediction
JP2012203560A (ja) キャッシュメモリおよびキャッシュシステム
JPH0364893B2 (ja)
US20030149842A1 (en) Method for controling cache system comprising direct-mapped cache and fully-associative buffer
CN103198026A (zh) 指令高速缓存功耗降低
CN113986774A (zh) 一种基于指令流和访存模式学习的缓存替换系统及方法
JP3929872B2 (ja) キャッシュメモリ、プロセッサ及びキャッシュ制御方法
US7555610B2 (en) Cache memory and control method thereof
JP2007272280A (ja) データ処理装置
JP5699854B2 (ja) 記憶制御システムおよび方法、置換方式および方法
US20140013054A1 (en) Storing data structures in cache
JP2007272681A (ja) キャッシュメモリ装置及びそのキャッシュラインの入れ替え方法
US9053030B2 (en) Cache memory and control method thereof with cache hit rate
CN101419543B (zh) 预测高速寄存器的存取位置的方法及系统
US7467260B2 (en) Method and apparatus to purge remote node cache lines to support hot node replace in a computing system
KR100481943B1 (ko) 시간적·공간적 지역성을 향상시키고 플레쉬 메모리장치로의 접근 횟수를 줄이는 플레쉬 메모리 시스템 및데이터 억세스 방법
JP3078303B2 (ja) キャッシュメモリ制御回路
JP2700147B2 (ja) 命令キャッシュ・フラッシュ・オン・rei制御
WO2010089799A1 (ja) キャッシュメモリシステム、コンピュータシステム、及びキャッシュメモリアクセス方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131015

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131015

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140527

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140725

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140912

R150 Certificate of patent or registration of utility model

Ref document number: 5622155

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees