JP4112603B2 - 階層型キャッシュメモリを制御するための方法ならびに装置 - Google Patents

階層型キャッシュメモリを制御するための方法ならびに装置 Download PDF

Info

Publication number
JP4112603B2
JP4112603B2 JP2007198125A JP2007198125A JP4112603B2 JP 4112603 B2 JP4112603 B2 JP 4112603B2 JP 2007198125 A JP2007198125 A JP 2007198125A JP 2007198125 A JP2007198125 A JP 2007198125A JP 4112603 B2 JP4112603 B2 JP 4112603B2
Authority
JP
Japan
Prior art keywords
memory
cache memory
cache
level cache
data
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 - Lifetime
Application number
JP2007198125A
Other languages
English (en)
Other versions
JP2007310906A (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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of JP2007310906A publication Critical patent/JP2007310906A/ja
Application granted granted Critical
Publication of JP4112603B2 publication Critical patent/JP4112603B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand 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/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/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/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels

Description

本発明は、階層型キャッシュメモリを制御するための方法ならびに装置に関する。より詳細には、本発明は、下位レベルキャッシュメモリのキャッシュラインにデータを記憶することによって、上位レベルのキャッシュメモリに既に記憶されている当該キャッシュラインのデータが上書きされてしまう場合に、そのデータの記憶を禁止する制御方法に関する。
近年、最先端のコンピュータアプリケーションがますます複雑になっているため、コンピュータによるデータ処理のスループットの向上への要求がとどまることを知らず、マイクロプロセシングシステムに対する要求が増加の一途をたどっている。従来のマイクロプロセシングシステム(マイクロプロセッサと、これと関連付けられたメモリとを使用するシステム)では、サイクルタイム(マイクロプロセッサがデータを処理できる時間の単位)が非常に短く、例えば1ナノ秒である。しかし、メインメモリに記憶されているデータへのアクセスに要する時間は、マイクロプロセッサのサイクルタイムと比べてかなり長いことがある。例えば、ダイナミックランダムアクセスメモリ(DRAM)技術を利用して実装されたメインメモリから1バイトのデータを取り出す際のアクセス時間は約60ナノ秒程度となっている。
DRAMメモリのアクセス時間が比較的長いことによるボトルネックを改善するために、従来、キャッシュメモリが利用されている。キャッシュメモリはメインメモリを補助して、システムのスループットを向上させる。メインメモリは、比較的安価で低速のDRAMメモリ技術を用いて実装されることが多いのに対し、キャッシュメモリは通常、より高価かつ高速のスタティックランダムアクセスメモリ(SRAM)技術を用いて実装される。キャッシュメモリは、コストの高い技術を用いて実装されることから、通常はメインメモリよりも大幅に容量が小さい。
キャッシュメモリは比較的容量が小さいため、従来のアルゴリズムを使用して、マイクロプロセシングシステムの動作中の様々な時点において、キャッシュメモリに記憶すべきデータを判定していた。例えば、これらの従来のアルゴリズムは、「参照の局所性」の理論の概念に基づいており、ある特定の時点において、マイクロプロセッサが実行可能プログラムの比較的限られた部分しか使用していないという事実を利用するものであり得る。このため、参照の局所性の概念に従って、ある特定の時点において、実行可能プログラムの限られた部分のみがキャッシュメモリに記憶される。また、このようなアルゴリズムやその他のアルゴリズムを使用して、キャッシュメモリへのデータの記憶や、キャッシュメモリからのデータの取り出し(これらのデータは実行可能プログラムによって使用され得る)が制御され得る。
キャッシュメモリへの実行可能プログラムやデータの記憶を制御するための、参照の局所性を利用する公知のアルゴリズムやその他の概念の詳細については、その数が多いためにここに記載することはできない。ただし、アプリケーションによってデータ処理の目的が大きく異なることがあるため、あらゆるアプリケーションに適するアルゴリズムは存在しないということに言及すれば十分であろう。
キャッシュメモリを制御するための従来のアルゴリズムでは、マイクロプロセッサがキャッシュメモリに対してデータアクセス要求を与える。要求されたデータがキャッシュメモリに記憶されている場合はキャッシュヒットとなり、マイクロプロセッサは比較的速やかにデータを受け取る。キャッシュメモリにアクセスしてもデータに対するデータアクセス要求が満たされない場合、すなわちキャッシュミスが発生した場合は、データをメインメモリから取得し、キャッシュメモリに記憶するデータリフィルシーケンス(data refill sequence)を実行することが望ましい。
キャッシュメモリは、マイクロプロセッサに「オンチップ」で配置されていることがあり、この構成をレベル1(L1)キャッシュメモリと呼ぶ。あるいは、キャッシュメモリは、マイクロプロセッサとは別に配置されている、すなわちオフチップのこともあり、この構成をレベル2(L2)キャッシュメモリと呼ぶ。通常、L1キャッシュメモリはL2キャッシュメモリと比べてアクセス時間が大幅に短い。オンチップのキャッシュメモリとオフチップのキャッシュメモリとを併用するL1、L2複合キャッシュメモリシステムを構成することも可能であり、この構成を階層型キャッシュメモリと呼ぶことがある。この構成では、マイクロプロセッサがデータに対するアクセス要求を行うと、この要求を満たすために最初にL1キャッシュメモリがアクセスされる。要求が満たされない場合、L2キャッシュメモリがアクセスされる。L2キャッシュメモリのミスが発生した場合、メインメモリがアクセスされて、L1キャッシュメモリおよびL2キャッシュメモリがリフィルされる。
L1キャッシュメモリとL2キャッシュメモリと間の競合の発生を低減させると共にアクセス効率を向上させるため、L2キャッシュメモリは、L1キャッシュメモリよりも多くのウェイセットを有するNウェイセットアソシエーティブメモリであり得る。従来の技術によれば、L2キャッシュメモリがリフィルされる際(すなわち、L2キャッシメモリミスの発生後)には、L2キャッシュメモリのN個のキャッシュラインの中から、リフィルデータを入れるためのキャッシュラインを1つ選択する必要がある。N個のキャッシュラインの1つ以上に無効なデータが格納されている場合には、これらのキャッシュラインの1つにリフィルデータを記憶する。しかし、N個のキャッシュラインの全てに有効なデータが格納されている場合は、無作為選択手法を使用するか、公知の最低使用頻度(LRU)アルゴリズムを使用するか、その他の任意のアルゴリズムを使用して、リフィルデータを入れるキャッシュラインを選択する。いずれにしても、L2キャッシュメモリのキャッシュラインにある有効なデータが上書きされ、かつこの有効なデータのコピーがL1キャッシュメモリのキャッシュラインにも格納されている場合には、L1キャッシュメモリとL2キャッシュメモリとの整合を図るために、L1キャッシュメモリのそのキャッシュラインを無効にする必要がある。
しかし、従来の制御方法で行われているように、L1キャッシュメモリなどの上位レベルのキャッシュメモリにあるデータを無効にすると、マイクロプロセシングシステム全体のスループットが低下してしまう。例えば、L1キャッシュメモリ内のデータが不必要に無効にされると、L1キャッシュメモリを最適に使用することができない。この結果、ループ本体内で非常に頻繁にアクセスされる、キャッシュ済みの命令やデータが不必要に無効にされるおそれがある。この状態は、非常に大きなデータ配列にアクセスする場合に多くみられる。
したがって、メモリ効率を改良し、処理スループットを向上させ、システム全体で実行されるデータ処理品質を改良させるために、L1キャッシュメモリ、L2キャッシュメモリおよび/またはより下位のレベルキャッシュメモリを備え得るキャッシュメモリを制御するための新しい方法ならびに装置が当業界で望まれている。
本発明の1つ以上の態様によれば、装置は、各々がアドレスタグおよびデータを記憶するように動作可能な複数のキャッシュラインを備えた第1レベルキャッシュメモリと、各々がアドレスタグ状態フラグ、およびデータを記憶するように動作可能な複数のキャッシュラインを備えた、次のより低いレベル、つまり次段レベル(next lower level)のキャッシュメモリと、を有し、各キャッシュラインの前記状態フラグは、前記次段レベルのキャッシュメモリの当該キャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリの前記キャッシュラインのいずれかが格納していることを示すLフラグを有する。
好ましくは、各キャッシュラインの前記Lフラグは1ビットであり、その値が真の場合は、前記次段レベルのキャッシュメモリの当該キャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリの対応するキャッシュラインが格納していることを示し、偽の場合は、前記次段レベルのキャッシュメモリの当該キャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリのどのキャッシュラインも格納していないことを示す。例えば、Lフラグビットの真のレベルは論理ハイおよび論理ローのうちの一方であり得、前記Lフラグビットの前記偽のレベルは前記論理ハイおよび前記論理ローのもう一方であり得る。
好ましくは、前記第1レベルキャッシュメモリはL1キャッシュメモリであり、前記次段レベルのキャッシュメモリはL2キャッシュメモリである。
上記装置は、前記次段レベルのキャッシュメモリの所定のキャッシュラインのLフラグを設定して、前記次段レベルのキャッシュメモリの前記所定のキャッシュラインに記憶されているデータのコピーによって、前記第1レベルキャッシュメモリの前記キャッシュラインのうちの対応するキャッシュラインがリフィルされているかどうかを示すように動作可能なプロセッサをさらに有し得る。
上記装置は、別法として(あるいは上記に加えて)、前記次段レベルのキャッシュメモリの所定のキャッシュラインのLフラグが、前記所定のキャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリの前記キャッシュラインのうちの対応するキャッシュラインが格納していることを示す場合に、前記次段レベルのキャッシュメモリの前記所定のキャッシュラインへのデータの上書きを禁止するように動作可能であり得る。好ましくは、前記次段レベルのキャッシュメモリの所定のキャッシュラインの状態フラグの有効フラグが、前記所定のキャッシュラインに記憶されているデータのいずれかが無効であることを示す場合に、前記プロセッサは、前記所定のキャッシュラインへのデータの上書きを許可するようにさらに動作可能である。
さらに、前記次段レベルのキャッシュメモリの所定のキャッシュラインの状態フラグの有効フラグが、前記所定のキャッシュラインに記憶されているデータが有効であることを示し、かつ前記所定のキャッシュラインのLビットが、前記所定のキャッシュラインに記憶されているデータのコピーを前記第1レベルキャッシュメモリの前記キャッシュラインのうちの対応するキャッシュラインが格納していないことを示す場合に、前記プロセッサは前記所定のキャッシュラインへのデータの上書きを許可するようにさらに動作可能であり得る。
前記第1レベルキャッシュメモリはダイレクトマップドキャッシュメモリであり得る。前記次段レベルのキャッシュメモリはNウェイセットアソシエーティブキャッシュメモリであり得る。
本発明の1つ以上のさらに別の態様によれば、装置は、各々がアドレスタグおよびデータを記憶するように動作可能な複数のM1キャッシュラインを有する第1レベルキャッシュメモリと、次段レベルのNウェイセットアソシエーティブユニファイドキャッシュメモリと、前記各Nウェイセットは各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能な複数のM2キャッシュライン(M2はM1より大きい)を有し、前記次段レベルのキャッシュメモリに関連付けられ、かつ複数のM1メモリラインを有する付加的なメモリと、を有し、各メモリラインは、前記次段レベルのキャッシュメモリの各Nウェイセットの複数のキャッシュラインに対応するそれぞれのLフラグを有し、各Lビットは、前記次段レベルのキャッシュメモリの前記所定のキャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリの前記キャッシュラインのいずれかが格納しているかどうかを示す。
好ましくは、前記付加的なメモリの各メモリラインにあるLフラグの個数はM2/M1×Nである。各キャッシュラインの前記Lフラグは1ビットであり得、その値が真の場合は、前記次段レベルのキャッシュメモリの関連付けられているキャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリのキャッシュラインが格納していることを示し、偽の場合は、前記次段レベルのキャッシュメモリの前記関連付けられているキャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリのどのキャッシュラインも格納していないことを示す。前記Lフラグビットの前記真のレベルは論理ハイおよび論理ローのうちの一方であり得、前記Lフラグビットの前記偽のレベルは前記論理ハイおよび前記論理ローのもう一方であり得る。
上記装置は、好ましくは、前記付加的なメモリのそれぞれのLフラグを設定して、前記次段レベルのキャッシュメモリの前記キャッシュラインに記憶されているデータによって、前記第1レベルキャッシュメモリの対応するキャッシュラインがリフィルされているかどうかを示すように動作可能なプロセッサを有する。前記プロセッサは、好ましくは、前記付加的なメモリの所定のメモリラインのLフラグをほぼ同時に設定するようにさらに動作可能である。
上記プロセッサは、別法として(あるいは上記に加えて)、前記次段レベルのキャッシュメモリの所定のキャッシュラインのLフラグが、前記所定のキャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリの前記キャッシュラインのうちの対応するキャッシュラインが格納していることを示す場合に、前記次段レベルのキャッシュメモリの前記所定のキャッシュラインへのデータの上書きを禁止するように動作可能であり得る。好ましくは、前記次段レベルのキャッシュメモリの前記所定のキャッシュラインの前記状態フラグの有効フラグが、前記所定のキャッシュラインに記憶されているデータのいずれかが無効であることを示す場合に、上記プロセッサは、前記所定のキャッシュラインへのデータの上書きを許可するようにさらに動作可能であり得る。さらに、前記次段レベルのキャッシュメモリの所定のキャッシュラインの状態フラグの有効フラグが、前記所定のキャッシュラインに記憶されているデータが有効であることを示し、かつ前記所定のキャッシュラインのLフラグが、前記所定のキャッシュラインに記憶されているデータのコピーを前記第1レベルキャッシュメモリの前記キャッシュラインのうちの対応するキャッシュラインが格納していないことを示す場合に、前記プロセッサは、好ましくは、前記所定のキャッシュラインへのデータの上書きを許可するようにさらに動作可能である。
本発明の1つ以上のさらに別の態様によれば、装置は、第1レベルのNウェイセットアソシエーティブキャッシュメモリと、前記第1レベルキャッシュメモリの前記各Nウェイセットは、各々がアドレスタグおよびデータを記憶するように動作可能な複数のM1キャッシュラインを有し、次段レベルのNウェイセットアソシエーティブユニファイドキャッシュメモリと、前記次段レベルのキャッシュメモリの前記各Nウェイセットは、各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能な複数のM2キャッシュライン(M2はM1より大きい)を有し、前記次段レベルのキャッシュメモリに関連付けられ、かつ複数のM1メモリラインを有する付加的なメモリと、を有し、前記付加的なメモリの各メモリラインは、前記第1レベルキャッシュメモリの前記各Nウェイセットに関連付けられたそれぞれのビット群を有しており、これによって前記付加的なメモリの各ビット群は、前記第1レベルキャッシュメモリのキャッシュラインのそれぞれ1つに関連付けられており、各ビット群はインデックスオフセットビット、ウェイセットビットおよびLフラグを有し、前記インデックスオフセットビットとインデックスとの組み合わせが、前記次段レベルのキャッシュメモリの前記各Nウェイセットの1つのキャッシュラインに対するポインタとなり、前記ウェイセットビットは、前記次段レベルのキャッシュメモリの前記Nウェイセットの1つに対するポインタとなり、前記Lフラグは、前記インデックスオフセットビット、前記インデックス、および前記ウェイセットビットによってポイントされている前記次段レベルのキャッシュメモリのキャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリの前記関連付けられたキャッシュラインが格納しているかどうかを示す。
本発明の1つ以上のさらに別の態様によれば、方法は、各々がアドレスタグおよびデータを記憶するように動作可能な複数のキャッシュラインを備えた第1レベルキャッシュメモリを制御するステップと、各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能な複数のキャッシュラインを備えた次段レベルのキャッシュメモリを制御するステップであって、各キャッシュラインの前記状態フラグはLフラグを有するステップと、前記次段レベルのキャッシュメモリの所定のキャッシュラインのLフラグを設定して、前記次段レベルのキャッシュメモリの前記所定のキャッシュラインに記憶されているデータのコピーによって、前記第1レベルキャッシュメモリの前記キャッシュラインのうちの対応するキャッシュラインがリフィルされているかどうかを示すステップと、を有する。
上記方法は、好ましくは、前記次段レベルのキャッシュメモリの所定のキャッシュラインのLフラグが、前記所定のキャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリの前記キャッシュラインのうちの対応するキャッシュラインが格納していることを示す場合に、前記次段レベルのキャッシュメモリの前記所定のキャッシュラインへのデータの上書きを禁止するステップを有する。また、上記方法は、前記次段レベルのキャッシュメモリの所定のキャッシュラインの状態フラグの有効フラグが、前記所定のキャッシュラインに記憶されているデータのいずれかが無効であることを示す場合に、前記所定のキャッシュラインへのデータの上書きを許可するステップを有し得る。さらに、前記方法は、前記次段レベルのキャッシュメモリの所定のキャッシュラインの状態フラグの有効フラグが、前記所定のキャッシュラインに記憶されているデータが有効であることを示し、かつ前記所定のキャッシュラインのLビットが、前記所定のキャッシュラインに記憶されているデータのコピーを前記第1レベルキャッシュメモリの前記キャッシュラインのうちの対応するキャッシュラインが格納していないことを示す場合に、前記所定のキャッシュラインへのデータの上書きを許可するステップをさらに有し得る。
本発明の1つ以上のさらに別の態様によれば、方法は、各々がアドレスタグおよびデータを記憶するように動作可能な複数のM1キャッシュラインを有する第1レベルキャッシュメモリを制御するステップと、次段レベルのNウェイセットアソシエーティブユニファイドキャッシュメモリを制御するステップであって、前記各Nウェイセットは各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能な複数のM2キャッシュライン(M2はM1より大きい)を有するステップと、前記次段レベルのキャッシュメモリに関連付けられ、かつ複数のM1メモリラインを有する付加的なメモリを制御するステップであって、各メモリラインは、前記次段レベルのキャッシュメモリの各Nウェイセットの複数のキャッシュラインに対応するそれぞれのLフラグを有するステップと、前記付加的なメモリのそれぞれのLフラグを設定して、前記次段レベルのキャッシュメモリの前記キャッシュラインに記憶されているデータによって、前記第1レベルキャッシュメモリの対応するキャッシュラインがリフィルされているかどうかを示すステップと、を有する。
本発明の1つ以上のさらに別の態様によれば、方法は、第1レベルのNウェイセットアソシエーティブキャッシュメモリを制御するステップであって、前記第1レベルキャッシュメモリの前記各Nウェイセットは、各々がアドレスタグおよびデータを記憶するように動作可能な複数のM1キャッシュラインを有するステップと、次段レベルのNウェイセットアソシエーティブユニファイドキャッシュメモリを制御するステップであって、前記次段レベルのキャッシュメモリの前記各Nウェイセットは、各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能な複数のM2キャッシュライン(M2はM1より大きい)を有するステップと、前記次段レベルのキャッシュメモリに関連付けられ、かつ複数のM1メモリラインを有する付加的なメモリを制御するステップであって、(i)前記付加的なメモリの各メモリラインは、前記第1レベルキャッシュメモリの前記各Nウェイセットに関連付けられたそれぞれのビット群を有しており、これによって前記付加的なメモリの各ビット群は、前記第1レベルキャッシュメモリのキャッシュラインのそれぞれ1つに関連付けられており、(ii)各ビット群はインデックスオフセットビット、ウェイセットビットおよびLフラグを有し、(iii)前記インデックスオフセットビットとインデックスとの組み合わせが、前記次段レベルのキャッシュメモリの前記各Nウェイセットの1つのキャッシュラインに対するポインタとなり、(iv)前記ウェイセットビットは、前記次段レベルのキャッシュメモリの前記Nウェイセットの1つに対するポインタとなるステップと、前記付加的なメモリのそれぞれのLフラグを設定して、前記インデックスオフセットビット、前記インデックスおよび前記ウェイセットビットによってポイントされている前記次段レベルのキャッシュメモリのキャッシュラインに記憶されているデータによって、前記第1レベルキャッシュメモリの対応するキャッシュラインがリフィルされているかどうかを示すステップと、を有する。
本発明の1つ以上のさらに別の態様によれば、キャッシュメモリを制御するための上記した方法および装置、あるいは本明細書で後述する方法および装置は、下記の図面に示すような適切なハードウェアを用いて実現することができる。この種のハードウェアは、任意の公知の技術を用いて実装することができる。この例には、標準的なディジタル回路、アナログ回路、ソフトウェアプログラムおよび/またはファームウエアプログラムを実行するように動作可能な任意の公知のプロセッサ、プログラマブル読出し専用メモリ(PROM)、プログラマブルアレイロジックデバイス(PAL)、これらの任意の組合せなどの、1つ以上のプログラム可能なディジタル装置またはシステムなどがある。
添付の図面を参照しつつ、ここに記載する本発明の説明を読めば、他の態様、機能および利点等は当業者に自明となるであろう。
本発明を説明するために、現在の好ましい形態を図面の形式に示すが、本発明は、図示したとおりの構成ならびに手段に限定されないことを理解されたい。
図面において、同一の要素は同じ参照符号によって参照される。図1は、本発明の1つ以上の態様を示すブロック図である。簡潔を期すと共に明確になるように、図1のブロック図は装置100の説明として本明細書において言及かつ記載される。しかし、この記載は同等の効力を有する1つ以上の方法のさまざまな態様に容易に適用できることを理解されたい。
装置100は、好ましくはマイクロプロセッサ101、第1レベルキャッシュメモリ102、下位レベルキャッシュメモリ103、およびさらに別のメモリ104を備えたマイクロプロセッサシステムである。マイクロプロセッサ101は、現在入手可能な公知のマイクロプロセッサデバイスまたは今後開発されるマイクロプロセッサデバイスのいずれを使用して実現することができる。
第1レベルキャッシュメモリ102は、好ましくはL1キャッシュメモリ、すなわちマイクロプロセッサ101にオンチップに設けられた配置されているキャッシュメモリである。しかし、第1レベルキャッシュメモリ102がマイクロプロセッサ101にオンチップに配置されていることが好ましいものの、必ずしも第1レベルキャッシュメモリ102がオンチップで実装されていなくてもよい。実際、第1レベルキャッシュメモリ102は、マイクロプロセッサ101の外部にオフチップで配置されてもよい。
好ましくは、第1レベルキャッシュメモリ102は、命令キャッシュメモリ102Aと、別個のデータキャッシュメモリ102Bとを有し、キャッシュメモリの各々は複数のキャッシュラインを備える。各キャッシュラインは、アドレスタグ、状態フラグおよびデータを有する。アクセス競合を回避するために、命令キャッシュとデータキャッシュとが分かれていることが好ましい。例えば、命令キャッシュメモリ102Aとデータキャッシュメモリ102Bとは、各々64キロバイトのダイレクトマップド構成として実装され得る。しかし、命令キャッシュメモリ102Aおよびデータキャッシュメモリ102Bのサイズは任意である点に留意されたい。別法として、第1レベルキャッシュメモリ102は1つのダイレクトマップドキャッシュメモリを有し、命令とデータの両方を格納してもよい点にも留意されたい。
命令キャッシュメモリ102Aおよびデータキャッシュメモリ102Bのキャッシュラインは、マイクロプロセッサ101が発行した有効アドレスとしてアドレス指定され、有効アドレスの各々は、タグビットとインデックスビットとを含む。インデックスビットは、第1レベルキャッシュメモリ102の命令キャッシュメモリ102Aおよび/またはデータキャッシュメモリ102Bの特定のキャッシュラインに対するポインタとなる。キャッシュメモリのサイズが64キロバイトである上記の例においては、インデックスビットは、利用可能な全キャッシュラインをポイントするために0x0000〜0xFFFFの範囲をとり得る(最下位ビットの一部はオフセットとして使用される)。例示のための例として、マイクロプロセッサ101が発行した有効アドレスのインデックスビットから得られたポインタ(またはインデックス)110が0xAFF0であるとする。このポインタは、命令キャッシュメモリ102Aの命令Aを格納しているキャッシュラインをポイントしていると共に、データキャッシュメモリ102BのデータAを格納しているキャッシュラインをポイントしている。
下位レベルキャッシュメモリ103は、本実施形態においてはL2キャッシュメモリであり、好ましくはN=4のNウェイセットアソシエーティブメモリである。このため、下位レベルキャッシュメモリ103は、第1ウェイセット105、第2ウェイセット106、第3ウェイセット107、および第4ウェイセット108を有する。下位レベルキャッシュメモリ103の各ウェイセットは、好ましくは複数のキャッシュラインを有し、各キャッシュラインはアドレスタグ、状態フラグおよびデータ(命令を含み得る)を記憶するように動作可能である。本発明の例示的なこの実施形態において、下位レベルキャッシュメモリ103のサイズは好ましくは256キロバイトであり、各ウェイセットのサイズは64キロバイトである。このため、第1レベルキャッシュメモリ102の命令キャッシュメモリ102Aおよびデータキャッシュメモリ102Bの各キャッシュラインは、下位レベルキャッシュメモリ103の4つのウェイセット105,106,107,108の各キャッシュラインに対応している。上記の例においては、ポインタ110(インデックス値0xAFF0)は、下位レベルキャッシュメモリ103の4つのキャッシュライン、すなわち各ウェイセット105,106,107,108につき1つのキャッシュラインをポイントしている。
下位レベルのキャッシュメモリ103の各キャッシュラインの状態フラグは、好ましくはLフラグ112を格納しており、このフラグは、次段レベルのキャッシュメモリ103のそのキャッシュラインに記憶されているデータのコピーを、第1レベルキャッシュメモリ102のキャッシュラインのいずれかが格納しているかどうかを示す。各Lフラグは1ビット以上であってもよいが、1ビットが最も好ましい点に留意されたい。本発明に従ってどのような規則を使用してもよいが、例えば、Lフラグ(またはビット)112が「真」の場合には、好ましくは下位レベルキャッシュメモリ103のそのキャッシュラインに記憶されているデータのコピーを、第1レベルキャッシュメモリ102の対応するキャッシュラインが格納していることを示す。これに対し、Lフラグ112が「偽」の場合には、好ましくは下位レベルキャッシュメモリ103のそのキャッシュラインに記憶されているデータのコピーを、第1レベルキャッシュメモリ102のキャッシュラインが格納していないことを示す。Lフラグ112が1ビットの場合、好ましくは論理ハイ(logic high)および論理ロー(logic low)のうちの一方が真の状態を表し、論理ハイおよび論理ローのうちの他方が偽の状態を表す。
例えば、ウェイセット105の(0xAFF0によってインデックスされている)キャッシュライン109Aは、論理ロー(偽)のLビット112Aを格納しており、これは、このキャッシュラインのデータ(データC)を、データキャッシュメモリ102Bの0xAFF0によってインデックスされているキャッシュラインが格納していないことを示す。下位レベルキャッシュメモリ103のキャッシュライン109Bは、論理ハイ(真)のLビット112Bを格納しており、これは、このキャッシュラインのデータ(データA)を、第1レベルキャッシュメモリ102のデータキャッシュメモリ102Bの0xAFF0によってインデックスされているキャッシュラインが格納していることを示す。
下位レベルキャッシュメモリ103のキャッシュライン109Cは、論理ロー(偽)のLビット112Cを格納しており、これは、このキャッシュラインのデータ(データB)を、データキャッシュメモリ102Bの0xAFF0によってインデックスされているキャッシュラインが格納していないことを示す。また、キャッシュライン109Dは、論理ハイ(真)のLビット112Dを格納しており、これは、このキャッシュラインのデータ(命令A)を、命令キャッシュメモリ102Aの0xAFF0によってインデックスされているキャッシュラインが格納していることを示す。
さらに別のメモリ104は、次段レベルのキャッシュメモリかメインメモリであり得る。実際、本発明では、階層型キャッシュメモリの、マイクロプロセッサ101とメインメモリとの間に存在する階層数はどのような値であってもよい。
装置100の構造および動作は、図2をさらに参照すればより深く理解できるであろう。図2は、装置100によって実行されるか、あるいは装置100と関連する特定のアクションを示すフローチャートである。説明のために、第1レベルキャッシュメモリ102がL1キャッシュメモリであり、下位レベルキャッシュメモリ103がL2キャッシュメモリであり、さらに別のメモリ104はメインメモリであると想定する。
図1,2に示す方法ならびに装置の1つ以上の態様によれば、Lフラグ112の各々の状態は、第1レベルキャッシュメモリ102に記憶されているデータ(または命令)の関数(function)として制御される。Lフラグ112を使用して、下位レベルキャッシュメモリ103へのキャッシュラインのデータまたは命令の記憶を許可するかあるいは禁止するかを判定する。詳細に説明すると、下位レベルキャッシュメモリ103のあるキャッシュラインに記憶されているデータのコピーによって、第1レベルキャッシュメモリ102のキャッシュラインの対応するキャッシュラインがリフィルされているかどうかを示すために、好ましくは下位レベルキャッシュメモリ103の当該キャッシュラインのLフラグ112が真または偽にセットされる。
図2に、この一般的な制御をさらに詳細に示す。アクション150において、L1キャッシュのヒットまたはミスのいずれが発生したかが判定される。キャッシュヒットが発生した場合、処理フローはアクション151に進み、ここで、要求されたデータが第1レベルキャッシュメモリ102から取得されて、マイクロプロセッサ101に提供される。キャッシュミスが発生したと判定された場合、処理フローはアクション152に進む。例えば、マイクロプロセッサ101が、第1レベルキャッシュメモリ102(L1キャッシュメモリ)に対し、データキャッシュメモリ102Bの0xAFF0によってインデックスされているキャッシュラインからデータCを要求するアクセス要求を出していると想定する。キャッシュミスが発生するのは、このキャッシュラインの状態フラグ(例えば有効フラグまたはビット)のいずれか1つが、このキャッシュラインに格納されているデータが無効であることを示している場合か、あるいはこのキャッシュラインのアドレスタグと有効アドレスのタグビットとが一致しない場合(このキャッシュラインに格納されているデータがデータCではない場合など)である。
アクション152において、下位レベルキャッシュメモリ103の0xAFF0によってインデックスされているキャッシュライン109A,109B,109C,109Dがアクセスされ、(i)これらキャッシュラインのアドレスタグのいずれかが有効アドレスのタグビットと一致するか、および(ii)タグビットが一致するアドレスタグを格納しているキャッシュラインの有効フラグが、そのデータが有効であることを示しているかどうかが判定される。上記の条件のいずれも満たさない場合、L2キャッシュメモリ103はアクセス要求を満たすことができず、L2キャッシュミスが発生することになる(アクション154)。キャッシュライン109Aが有効なデータ(すなわちデータC)を格納しているため、L1キャッシュメモリ(およびマイクロプロセッサ101)によって要求されたデータは、L2キャッシュメモリのヒットとなり、処理フローはアクション154からアクション156に進む。
アクション156において、L2キャッシュメモリ103のキャッシュライン109Aに格納されているデータにより、L1キャッシュメモリ102のデータキャッシュメモリ102Bのキャッシュラインがリフィルされる。詳細に説明すると、データキャッシュメモリ102Bの、0xAFF0によってインデックスされ、データAを格納しているキャッシュラインが、L2キャッシュメモリ103のキャッシュライン109Aに格納されているリフィルデータ(データC)によって上書きされる。次に処理フローはアクション158に進み、ここで、L2キャッシュメモリ103のキャッシュライン109AのLビット112Aが真に設定される。これは、キャッシュライン109Aのデータのコピーを、データキャッシュメモリ102Bの対応するキャッシュラインが格納していることを示す。さらに、キャッシュライン109BのLビット112Bが偽に設定されて、キャッシュライン109Bに格納されているデータ(すなわちデータA)のコピーを、データキャッシュメモリ102Bの対応するキャッシュラインに格納されているデータがもはや格納していないことを示すようになる。
上記の例においては、マイクロプロセッサ101が行ったアクセス要求は、L1キャッシュメモリ102のミスとなり、この結果L1キャッシュメモリ102が行ったアクセス要求が、L2キャッシュメモリ103のヒットとなった。以下に、マイクロプロセッサ101が行ったアクセス要求がL1キャッシュメモリ102のミスとなり、L1キャッシュメモリ102が行ったアクセス要求もL2キャッシュメモリ103のミスとなる場合を説明する。詳細に説明すると、マイクロプロセッサ101がL1キャッシュメモリ102に対し、0xAFF0によってインデックスされているデータDに対するアクセス要求を発行すると想定する。アクション150において、L1キャッシュメモリのミスが発生し、処理はアクション152に進む。アクション152において、0xAFF0によってインデックスされているキャッシュライン109A〜Dがアクセスされて、処理フローはアクション154に進む。アクション154において、0xAFF0によってインデックスされているキャッシュライン109A〜DのいずれもデータDを格納していないため、L2キャッシュメモリのミスが発生する。次に処理フローはアクション160に進む。アクション160において、所望のデータ(データD)が次段レベルのキャッシュメモリまたはメインメモリから取得される。この例では、さらに別のメモリ104がメインメモリであると想定しているため、所望のデータがメインメモリから取得される。次に処理フローはアクション162に進み、ここでデータリフィルシーケンスが開始される。
アクション162の詳細を議論する前に、本発明の1つ以上の態様によれば、L2キャッシュメモリ103のキャッシュラインのうち、無効なデータを格納しているキャッシュライン(すなわち、あるキャッシュラインの有効フラグが、そのキャッシュラインに記憶されているデータが無効なことを示している)に対するデータの上書きを許可することが望ましい。L2キャッシュメモリ103の、特定のポインタ110によってインデックスされたキャッシュライン(キャッシュライン109A〜Dなど)の全てが有効なデータを格納していると想定して、L2キャッシュメモリ103のあるキャッシュラインのLフラグが、L2キャッシュメモリ103のそのキャッシュラインに記憶されているデータのコピーを、L1キャッシュメモリ102のキャッシュラインのうちの対応するキャッシュラインが格納していることを示している場合、好ましくは、L2キャッシュメモリ103のそのキャッシュラインへのデータの上書きが禁止される。これに関する詳細は、図2のアクション162〜168に示されている。
アクション162において、L2キャッシュメモリ103の(0xAFF0によってインデックスされている)キャッシュラインの全てが有効なデータを格納しているかどうかが判定される。L2キャッシュメモリ103のキャッシュラインの1つ以上が無効なデータを格納している場合、処理フローは好ましくはアクション164に分岐し、ここで所望のデータ(データD)がこのキャッシュラインのうちの1つに上書きされる。しかし、本例では、L2キャッシュメモリ103のどのキャッシュラインも有効なデータを格納していると想定しているため、アクション162での判定の結果、処理フローはアクション166に分岐する。アクション166において、対応するLフラグ(またはLビット)112が偽であるキャッシュラインのうちの1つのみに、所望のデータ(データD)が上書きされる。換言すれば、Lフラグ112が、L2キャッシュメモリ103のそのLフラグ112に対応するキャッシュラインに格納されているデータのコピーを、L1キャッシュメモリ102の対応するキャッシュラインが格納していることを示している場合は、L2キャッシュメモリ103のキャッシュラインの上書きが禁止される。このため、例えば、キャッシュライン109A,109Cは、各々対応するLビット112A,112Cが偽であるため、キャッシュライン109Aまたは109Cに所望のデータ(データD)が上書きされ得る。L2キャッシュメモリ103のキャッシュライン109Cのデータが上書きされると想定した場合、Lビット112Cが真に設定され(アクション168)、データDのコピーが、L1キャッシュメモリ102のデータキャッシュメモリ102Bの対応するキャッシュラインにもリフィルされる。
L2キャッシュメモリ103をリフィルする際に、L1キャッシュメモリ102のどのデータも無効にする必要がないため有利である。このように、メモリ使用効率の改善、処理スループットの向上、および処理データの品質向上を図ることができる。
次に、図3を参照すると、図3は、本発明の別の態様および実施形態を示すブロック図である。ここでも、簡潔を期すと共に明確になるように、図3のブロック図は装置200の説明として本明細書において言及かつ記載される。しかし、この記載は同じ効力(force)を有する1つ以上の方法のさまざまな態様に容易に適用できることを理解されたい。装置200は、好ましくはマイクロプロセッサデバイス201、第1レベルキャッシュメモリ202、次段レベルのキャッシュメモリ203、およびさらに別のメモリ104を有するマイクロプロセッサシステムである。
第1レベルキャッシュメモリ202は、好ましくは命令キャッシュメモリ202Aと、別個のデータキャッシュメモリ202Bとを有するが、本発明は、命令キャッシュメモリとデータキャッシュメモリとが統合されている別の実施態様を意図していることを理解されたい。いずれの場合も、命令キャッシュメモリ202Aおよびデータキャッシュメモリ202Bの各々は、好ましくは、N=2のNウェイセットアソシエーティブキャッシュメモリとして実装される。このため、データキャッシュメモリ202Bは、ウェイセット204とウェイセット205とを有し、命令キャッシュメモリ202Aはウェイセット206とウェイセット207とを有する。命令キャッシュメモリ202Aおよびデータキャッシュメモリ202Bの各ウェイセット204〜207のサイズは好ましくは8キロバイトであり、これらの各キャッシュラインは、好ましくはアドレスタグ、状態フラグおよびデータ(命令を含み得る)を記憶するように動作可能である。このため、所定のインデックス(またはポインタ)208は、ウェイセット204,205,206,207の全てのキャッシュラインをインデックスするために、0x0000〜0x1FFF(13ビット)の範囲の値をとり得る。説明のため、ポインタ208の値は0x0FF0であり、各ウェイセット204,205,206,207について1つのキャッシュラインをポイントしているとする。
次段レベルのキャッシュメモリ203も、好ましくはN=8のNウェイセットアソシエーティブキャッシュメモリである。このため、次段レベルのキャッシュメモリ203は、ウェイセット209、ウェイセット210、ウェイセット211、ウェイセット212、ウェイセット213、ウェイセット214、ウェイセット215、およびウェイセット216を有する。本明細書において、これらのウェイセットを、セット0、セット1、セット2、セット3、セット4、セット5、セット6、およびセット7とも呼ぶ。本発明のこの実施形態によると、次段レベルのキャッシュメモリ203の各ウェイセット209〜216は、好ましくは第1レベルキャッシュメモリ202の各ウェイセット204〜207よりもサイズが大きい。例えば、次段レベルのキャッシュメモリ203の各ウェイセット209〜216のサイズは、好ましくは32キロバイトである。このため、次段レベルのキャッシュメモリ203の各ウェイセット209〜216のサイズは、第1レベルキャッシュメモリ202の各ウェイセット204〜207の4倍である。
インデックス(またはポインタ)208Aが、次段レベルのキャッシュメモリ203の全てのキャッシュラインにアクセスできるようになるには、0x0000〜0x7FFFの範囲の15ビットを必要とする点に留意されたい。しかし、第1レベルキャッシュメモリ202の全てのキャッシュラインにアクセスするには、ポインタ208のサイズが0x0000〜0x1FFFの13ビットで充分であると説明した。実際のシステムにおいて、この見かけ上の不一致は以下のようにして解消される。第1レベルキャッシュメモリ202でキャッシュミスが発生すると、有効アドレスがアドレスバス上の次段レベルのキャッシュメモリ203に渡される。このアドレスバスは、例えば[31:0]の32ビットを有し得る。このため、第1レベルキャッシュメモリ202によってアドレスが発行された時点では、アドレスバスのビット[31:13]は有効アドレスのタグビットを格納しており、アドレスバスのビット[12:0]は有効アドレスのインデックスビットを格納している。有効アドレスは、第1レベルキャッシュメモリ202から次段レベルのキャッシュメモリ203にこの状態で渡される。
しかし、次段レベルのキャッシュメモリ203は、アドレスバスのビット[14:0]を、対象とする8つのキャッシュラインを指すポインタ208Aのインデックスビットを格納しているビットとして処理する。このため、アドレスバスのビット[14:13](第1レベルキャッシュメモリ202がタグビットとして処理したビットの一部)は、次段レベルのキャッシュメモリ203によって、インデックスビットまたはポインタ208Aの一部として使用される。アドレスバスのビット[14:13]が00の場合、ポインタ208Aは、0x0FF0のインデックスを格納しており、ウェイセット209〜216の最下位の8つのキャッシュラインをポイントしている。アドレスバスのビット[14:13]が01の場合、ポインタ208Aは、0x0FF0+0x2000のインデックスを格納しており、ウェイセット209〜216の1つ上の8つのキャッシュラインをポイントしている。同様に、アドレスバスのビット[14:13]が10の場合、ポインタ208Aは、0x0FF0+0x4000のインデックスを格納しており、ウェイセット209〜216の次に上の8つのキャッシュラインをポイントしている。最後に、アドレスバスのビット[14:13]が11の場合、ポインタ208Aは、0x0FF0+0x6000のインデックスを格納しており、ウェイセット209〜216のさらに上の8つのキャッシュラインをポイントしている。このため、アドレスバスのビット[14:13]は、インデックスオフセットであると見なすことができ、このインデックスオフセットは、本例においては0x0000、0x2000、0x4000、および0x6000のいずれかを取り得る。
次段レベルのキャッシュメモリ203の各キャッシュラインは、好ましくはアドレスタグ、状態フラグおよびデータ(命令を含み得る)を記憶するように動作可能である。しかし、本発明の図1の実施形態とは異なり、図3の装置200は、好ましくは、次段レベルのキャッシュメモリ203は、各キャッシュラインにLフラグを有さない。この理由は、仮に各キャッシュラインがLフラグを有するとすると、異なるインデックスオフセットによってインデックスされているキャッシュラインに存在するそれぞれのLフラグの値を制御または変更することは不可能なためである。実際、一度に処理可能なのは、同じインデックスオフセットによってインデックスされた8つのキャッシュラインのみである。
本発明のこの実施形態に係る装置200は、好ましくは、付加的なメモリ203Aを有しており、この付加的なメモリ203Aは、次段レベルのキャッシュメモリ203に内蔵されていても、次段レベルのキャッシュメモリ203とは別に設けられていてもよい。付加的なメモリ203Aは、好ましくは複数のメモリラインを有し、このメモリラインの個数は、第1レベルキャッシュメモリ202の所定のウェイセットに存在するキャッシュラインの個数と対応している。このため、図3の例では、付加的なメモリ203Aは、好ましくは8キロバイトのメモリラインを有する。付加的なメモリ203Aの各メモリラインは、好ましくは、次段レベルのキャッシュメモリ203の複数のキャッシュライン209〜216の各ウェイセットのそれぞれに対応するLフラグを有する。本例では、各メモリラインは、各ウェイセット209〜216の4つのキャッシュラインのそれぞれに対応するLフラグを有しており、Lフラグの合計は32となる。さらに一般化すると、付加的なメモリ203Aの各メモリラインのLフラグの個数は、Nを第1レベルキャッシュメモリ202のウェイセットの個数、M1を第1レベルキャッシュメモリ202の各ウェイセットのキャッシュラインの個数、M2を次段レベルのキャッシュメモリ203の各ウェイセットのキャッシュラインの個数とすると、M2/M1×Nとなる。このように、所定のインデックスに第1レベルキャッシュメモリ202の全てのインデックスオフセットを加算した値に対応するLフラグの全てが、付加的なメモリ203Aの1つのメモリラインに含まれる。このため、このLフラグは、全てを一度に制御または変更することができる。
次に、図3の装置200の動作を、一例を挙げてさらに詳細に記載する。マイクロプロセッサ201が、例えば32ビットのアドレスバスを介して、第1レベルキャッシュメモリ202に対して、有効アドレス(またはアクセス要求)を発行するこの例では、マイクロプロセッサ201がデータCを要求すると想定する。データCは、第1レベルキャッシュメモリ202にも次段レベルのキャッシュメモリ203にも記憶されていない。このため、アドレスバスのビット[31:13]は、マイクロプロセッサ201が要求しているデータ(データC)に対応するタグビットを格納している。アドレスバスのビット[12:0]はインデックスビットを格納しており、このインデックスビットは、第1レベルキャッシュメモリ202のウェイセット204〜207の個々のキャッシュラインをポイントしている。この例では、インデックスビットは0x0FF0であり、このため、ポインタ208は、命令キャッシュメモリ202Aの命令Aと命令Bとを格納している2つのキャッシュライン、およびデータキャッシュメモリ202BのデータAとデータBとを格納している2つのキャッシュラインにアクセスする。アクセスされたデータキャッシュメモリ202Bの2つのキャッシュラインは、いずれもデータCを格納していないため、キャッシュミスが発生する。
キャッシュミスのため、第1レベルキャッシュメモリ202は下位レベルキャッシュメモリ203に有効アドレスを渡し、このキャッシュメモリ内でデータアクセス要求を満たそうと試みる。第1レベルキャッシュメモリ202は、アドレスバスのビット[12:0]を有効アドレスのインデックスとして使用していたのに対し、次段レベルのキャッシュメモリ203は、アドレスバスのビット[14:0]を、有効アドレスのインデックスビットを格納しているビットとして処理する。本例においては、アドレスバスのビット[14:13]の値が01であると想定する。この値は0x2000のインデックスオフセットに対応している。このため、ポインタ208Aは0x0FF0+0x2000の値をとることとなり、下位レベルキャッシュメモリ203のウェイセット209〜216の対応する8つのキャッシュラインをポイントする。
アクセスされた下位レベルキャッシュメモリ203の8つのキャッシュラインは、いずれもデータCを格納していないため、キャッシュミスが発生する。このため、下位レベルキャッシュメモリ203は、さらに別のメモリ104(1つ以上のさらに別のキャッシュメモリおよび/またはメインメモリであり得る)に有効アドレスを渡す。その後、キャッシュメモリ202,203の各々にリフィルするため、データCが返される。
下位レベルキャッシュメモリ203のうち、0x0FF0+0x2000によってインデックスされているキャッシュラインのうち、どのキャッシュラインにリフィルデータ(データC)を入れるかが判定される。下位レベルキャッシュメモリ203のキャッシュラインの1つ以上が無効なデータを格納している場合、リフィルデータはこのようなキャッシュラインの1つに上書きされることが好ましい。しかし、本例では、下位レベルキャッシュメモリ203のいずれのキャッシュラインも有効なデータを格納している(すなわち、キャッシュラインの各有効フラグが、全てのデータが有効であることを示している)と想定している。このため、好ましくは、第1レベルキャッシュメモリ202にキャッシュされていないデータをキャッシュラインの1つ以上が格納しているかどうかが判定され、未キャッシュのデータを格納しているキャッシュラインがあれば、そのようなキャッシュラインの1つにリフィルデータが記憶される。
これを行うために、付加的なメモリ203Aの0x0FF0(オフセットなし)によってインデックスされているメモリラインがアクセスされる。全てのメモリラインと同様に、このメモリラインは32個のLフラグを格納しており、本例ではLフラグは1ビットを有する。真のビット(論理ハイ)は、下位レベルキャッシュメモリ203の対応するキャッシュラインのデータが、第1レベルキャッシュメモリ202にもキャッシュされていることを示す。偽(論理ロー)のレベルは、下位レベルキャッシュメモリ203の対応するキャッシュラインのデータが、第1レベルキャッシュメモリ202にキャッシュされていないことを示す。
本例においては、0x0FF0によってインデックスされているメモリラインのビット[15:8]が、下位レベルキャッシュメモリ203の、0x0FF0+0x2000によってインデックスされている8つのキャッシュラインに対応するLビットを格納している。これらのLビットの値は、Lビット222(メモリラインの[13]ビット)を除いて全て偽であり、この偽のビットは、下位レベルキャッシュメモリ203のキャッシュライン218に対応している。キャッシュライン218は、データ(命令A)を格納しており、このデータは、第1レベルキャッシュメモリ202の命令キャッシュメモリ202Aにキャッシュされている。より詳細には、0x0FF0によってインデックスされている命令キャッシュメモリ202Aのウェイセット207のキャッシュラインに命令Aが記憶されている。
本発明によれば、Lビット222が真であるため、キャッシュライン218は保護されており、このキャッシュラインへのリフィルデータ(データC)の上書きが禁止される。このため、リフィルデータ(データC)は、下位レベルキャッシュメモリ203の、0x0FF0+0x2000によってインデックスされている他のキャッシュラインのいずれかにリフィルされる。例えば、ウェイセット212のキャッシュラインにリフィルデータが上書きされ得る。さらに、第1レベルキャッシュメモリ202のデータキャッシュメモリ202Bの、0x0FF0によってインデックスされているキャッシュラインの1つ(ウェイセット204のキャッシュラインなど)にリフィルデータ(データC)が書き込まれる。このため、ウェイセット204のキャッシュラインに記憶されていたデータ(データB)が、リフィルデータ(データC)によって上書きされる。付加的なメモリ203Aの、0x0FF0によってインデックスされているメモリラインのビット[11]が真に設定され、これによって、下位レベルキャッシュメモリ203のウェイセット212の対応するキャッシュラインのデータが第1レベルキャッシュメモリ202にキャッシュされていることが示されるようになる。データキャッシュメモリ202Bのウェイセット204の、0x0FF0によってインデックスされているキャッシュラインはデータBをもはや格納していないため、付加的なメモリ203AのLビットの変更も行う必要がある。詳細に説明すると、データBのコピーは、下位レベルキャッシュメモリ203のウェイセット209のキャッシュライン221に記憶されている。このキャッシュライン221は0x0FF0+0x6000によってインデックスされており、このため、このキャッシュラインに対応するLビット225を更新する必要がある。このLビット225は、付加的なメモリ203Aの、0x0FF0によってインデックスされているメモリラインのビット[24]に存在する。詳細に説明すると、Lビット225が、偽(論理ロー)の状態から真(論理ハイ)の状態にセットされる。Lビット222,225は同時に変更されるという点に留意されたい。
下位レベルキャッシュメモリ203をリフィルする際に、第1レベルキャッシュメモリ202のどのデータも無効にする必要がないため有利である。このように、メモリ使用効率の改善、処理スループットの向上、および処理データの品質向上を図ることができる。
次に、図4を参照すると、図4は、本発明のさらに別の態様および実施形態を示すブロック図である。ここでも、簡潔を期すと共に明確になるように、図4のブロック図は装置300の説明として本明細書において言及かつ記載される。しかし、この記載は同じ効力(force)を有する1つ以上の方法のさまざまな態様に容易に適用できることを理解されたい。
装置300は、好ましくはマイクロプロセッサデバイス301、第1レベルキャッシュメモリ202、次段レベルのキャッシュメモリ303、およびさらに別のメモリ104を有するマイクロプロセッサシステムである。第1レベルキャッシュメモリ202は、好ましくは上に記載しかつ図3に示した第1レベルキャッシュメモリ202とほぼ同じである。このため、第1レベルキャッシュメモリ202は、好ましくは命令キャッシュメモリ202Aとデータキャッシュメモリ202Bとを有し、それぞれN=2のNウェイセットアソシエーティブキャッシュメモリとして実装される。命令キャッシュメモリ202Aの各ウェイセット204〜207のサイズは好ましくは8キロバイトであり、これらの各キャッシュラインは、好ましくはアドレスタグ、状態フラグおよびデータ(命令を含み得る)を記憶するように動作可能である。このため、ポインタ208は、ウェイセット204〜207の各キャッシュラインをインデックスするために、0x0000〜0x1FFF(13ビット)の範囲の値をとる。説明のため、ポインタ208の値は0x0FF0であり、各ウェイセット204〜207について1つのキャッシュラインをポイントしているとする。
次段レベルのキャッシュメモリ303は、好ましくは付加的なメモリ303Aを除いて、上に記載し図3に示したキャッシュメモリ203とほぼ同じである(これについては本明細書で詳細に後述する)。このため、下位レベルキャッシュメモリ303は、好ましくはNウェイセットアソシエーティブキャッシュメモリであり、このメモリは、8つのウェイセット209〜216を有する。これらも本明細書においてそれぞれセット0〜セット7と呼ぶことができる。さらに、次段レベルのキャッシュメモリ303の各ウェイセット209〜216のサイズは、好ましくは32キロバイトである。すなわち、各ウェイセット209〜216のサイズは、第1レベルキャッシュメモリ202の各ウェイセット204〜207の4倍である。このため、インデックス208Aが、次段レベルのキャッシュメモリ303のどのキャッシュラインにでもアクセスできるようになるには、0x0000〜0x7FFFの範囲の15ビットが必要となる。
図3の装置200の場合と同様に、第1レベルキャッシュメモリ202の全てのキャッシュラインにアクセスするには、ポインタ208のサイズが0x0000〜0x1FFFの13ビットで充分である。しかし、下位レベルキャッシュメモリ303は、第1レベルキャッシュメモリ202から提供された13ビットと有効アドレスのタグビットの最下位の2ビットと併せて、15ビットのインデックスビットとして使用する。このように、第1レベルキャッシュメモリ202から受け取った13ビットのインデックスビットに、タグビットからの追加の2ビットから得たインデックスオフセットを加えることによって、下位レベルキャッシュメモリ303のキャッシュラインに対するインデックスが得られる。本例においては、インデックスオフセットは0x0000、0x2000、0x4000、および0x6000のいずれかの値をとり得る。
下位レベルキャッシュメモリ303の各キャッシュラインは、好ましくはアドレスタグ、状態フラグおよびデータ(命令を含み得る)を記憶するように動作可能である。図3のキャッシュメモリ203と同様に、図4の下位レベルキャッシュメモリ303は、好ましくは、各キャッシュシュラインにLフラグを有さない。これに代わって、Lフラグを有するのは付加的なメモリ303Aであり、付加的なメモリ303Aは、下位レベルキャッシュメモリ303に内蔵されていても、下位レベルキャッシュメモリ303とは別に設けられていてもよい。
より詳細には、付加的なメモリ303Aは、好ましくは複数のメモリラインを有し、このメモリラインの個数は、第1レベルキャッシュメモリ202の各ウェイセット204〜207に含まれるキャッシュラインの個数と対応している。このため、図4の例では、付加的なメモリ303Aは、好ましくは8キロバイトのメモリラインを有する。付加的なメモリ303Aの各メモリラインは、好ましくは、第1レベルキャッシュメモリ202の各ウェイセット204〜207に関連付けられたそれぞれのビット群を有する。このため、付加的なメモリ303Aの各メモリラインの各ビット群は、第1レベルキャッシュメモリ202のキャッシュラインのそれぞれ1つに関連付けられている。各ビット群は、好ましくはLフラグ350、オフセットビット352およびウェイセットビット354を有する。本発明の上記の実施形態と同様に、Lフラグ350は、下位レベルキャッシュメモリ303の所定のキャッシュラインに記憶されているデータのコピーが、第1レベルキャッシュメモリ202の対応するキャッシュラインに格納されているかどうかを示している。本発明のこの実施形態において、あるLフラグ350に関連付けられている特定のキャッシュラインは、(第1レベルキャッシュメモリ202によって提供される)インデックスと、その群のインデックスオフセットビット352およびウェイセットビット354の組み合わせによってポイントされる。このため、付加的なメモリ303Aのあるビット群に関連付けられている下位レベルキャッシュメモリ303のキャッシュラインは、第1レベルキャッシュメモリ202から提供されたインデックスを、インデックスオフセットビット352(各ウェイセット209〜216のキャッシュラインから1つずつ、合計8つのキャッシュラインに対するポインタとなる)に相当する値だけオフセットしてから、ウェイセットビット354に対応するウェイセット209〜216を選択することによって決定される。本例において、インデックスオフセットビット352は、00(インデックスオフセット0x0000に対応)、01(インデックスオフセット0x2000に対応)、10(インデックスオフセット0x4000に対応)、および11(インデックスオフセット0x6000に対応)の4つの値のいずれかをとり得る。ウェイセットビット354は、000(セット0に対応)、001(セット1に対応)、010(セット2に対応)、011(セット3に対応)、…、111(セット7に対応)の8つの値のいずれか1つを取り得る。
このため、付加的なメモリ303Aの各メモリラインは、下位レベルキャッシュメモリ303の複数のキャッシュライン(すなわち、各インデックスと、各ビット群のインデックスオフセットビット352およびウェイセットビット354とに対応したキャッシュライン)に対するLフラグ350をそれぞれ有する。さらに、付加的なメモリ303Aの各メモリラインの各ビット群は、第1レベルキャッシュメモリ202のウェイセット204〜207のうちの特定の1つに対応している。第1レベルキャッシュメモリ202のウェイセットの個数、下位レベルキャッシュメモリ303のウェイセットの個数およびサイズ、ならびに各Lフラグ350のサイズ(すなわち1ビット)を考慮すると、付加的なメモリ303Aの各メモリラインは、24ビット[23:0]を有する。
次に、図4の装置300の動作を、一例を挙げてさらに詳細に記載する。マイクロプロセッサ301が、例えば32ビットのアドレスバスを介して、第1レベルキャッシュメモリ202に対して、有効アドレス(またはアクセス要求)を発行するこの例では、マイクロプロセッサ301がインデックス0x0FF0に存在するデータCを要求すると想定する。このデータ(データC)は、第1レベルキャッシュメモリ202にも下位レベルキャッシュメモリ303にも記憶されていない。このため、アドレスバスのビット[31:13]は、マイクロプロセッサ301が要求しているデータ(データC)に対応するタグビットを格納している。アドレスバスのビット[12:0]はインデックスビットを格納しており、このインデックスビットは、第1レベルキャッシュメモリ202のウェイセット204〜207の個々のキャッシュラインをポイントしている。この例では、インデックスビットは0x0FF0であり、このため、ポインタ208は、命令キャッシュメモリ202Aの命令Aと命令Bとを格納している2つのキャッシュライン、および/またはデータキャッシュメモリ202BのデータAとデータBとを格納している2つのキャッシュラインにアクセスする。アクセスされたデータキャッシュメモリ202Bの2つのキャッシュラインは、いずれもデータCを格納していないため、キャッシュミスが発生する。
キャッシュミスのため、第1レベルキャッシュメモリ202は下位レベルキャッシュメモリ303に有効アドレスを渡し、このキャッシュメモリ内でデータアクセス要求を満たそうと試みる。次段レベルのキャッシュメモリ303は、アドレスバスのビット[14:0]を、有効アドレスのインデックスビットを格納しているビットとして使用する。本例においては、アドレスバスのビット[14:13]の値が01であると想定する。この値は0x2000のインデックスオフセットに対応している。このため、ポインタ208Aは0x0FF0+0x2000の値をとることとなり、下位レベルキャッシュメモリ203のウェイセット209〜216の対応する8つのキャッシュラインをポイントする。
アクセスされた下位レベルキャッシュメモリ303の8つのキャッシュラインは、いずれもデータCを格納していないため、キャッシュミスが発生する。このため、下位レベルキャッシュメモリ303は、さらに別のメモリ104(1つ以上のさらに別のキャッシュメモリおよび/またはメインメモリであり得る)に有効アドレスを渡す。その後、キャッシュメモリ202,303の各々にリフィルするため、データCが返される。
下位レベルキャッシュメモリ303のうち、0x0FF0+0x2000によってインデックスされているキャッシュラインのうち、どのキャッシュラインにリフィルデータ(データC)を入れるかが判定される。下位レベルキャッシュメモリ303のキャッシュラインの1つ以上が無効なデータを格納している場合、リフィルデータはこのようなキャッシュラインの1つに上書きされることが好ましい。しかし、本例では、下位レベルキャッシュメモリ303のどのキャッシュラインも有効なデータを格納していると想定している。このため、好ましくは、第1レベルキャッシュメモリ202にキャッシュされていないデータをキャッシュラインの1つ以上が格納しているかどうかが判定され、未キャッシュのデータを格納しているキャッシュラインがあれば、そのようなキャッシュラインの1つにリフィルデータが記憶される。
これを行うために、付加的なメモリ303Aの0x0FF0(オフセットなし)によってインデックスされているメモリラインがアクセスされる。全てのメモリラインと同様に、このメモリラインは4個のLフラグ350A〜Dを格納している。各Lフラグは1ビットであり、下位レベルキャッシュメモリ303の4つのキャッシュラインに対応している。真のビット(論理ハイ)は、下位レベルキャッシュメモリ303の対応するキャッシュラインのデータが、第1レベルキャッシュメモリ202にもキャッシュされていることを示す。偽(論理ロー)のレベルは、下位レベルキャッシュメモリ303の対応するキャッシュラインのデータが、第1レベルキャッシュメモリ202にキャッシュされていないことを示す。
この例では、唯一のインデックスオフセットビット352Dは01であり、この値は0x2000のオフセットに対応している。このオフセットと、第1レベルキャッシュメモリ202から提供されたインデックスおよびウェイセットビット354D(セット5に対応)の組み合わせとによって、このビット群が、下位レベルキャッシュメモリ303のキャッシュライン321に関連付けられていることが示される。このビット群のLビット350Dは真であり、リフィルデータ(データC)によるキャッシュライン321の上書きが禁止されていることを示している。これに対し、下位レベルキャッシュメモリ303の、0x0FF0+0x2000によってインデックスされている他のどのキャッシュライン(キャッシュライン358など)にもデータをリフィルすることができる。
リフィルデータ(データC)は、第1レベルキャッシュメモリ202のデータキャッシュメモリ202Bの、0x0FF0によってインデックスされているキャッシュラインの1つ(ウェイセット204のキャッシュライン352など)に書き込まれる。このため、元々キャッシュライン352に記憶されていたデータ(データB)が、リフィルデータ(データC)によって上書きされる。データキャッシュメモリ202Bのウェイセット204の、0x0FF0によってインデックスされているキャッシュライン352はデータBをもはや格納していないため、付加的なメモリ303AのLビット350の変更も行う必要がある。詳細に説明すると、データBのコピーは、下位レベルキャッシュメモリ303のウェイセット209のキャッシュライン324に記憶されている。このキャッシュライン324は0x0FF0+0x6000によってインデックスされており、このため、このキャッシュライン324に対応するLビット350Aを更新する必要がある。このLビット350Aは、付加的なメモリ303Aの、0x0FF0によってインデックスされているメモリラインのビット[5]に存在する。実際、Lビット350Aは、値が11であるインデックスオフセットビット352A、および値が000であるウェイセットビット354Aと群を形成している。すなわち、これらは下位レベルキャッシュメモリ303のキャッシュライン324をポイントしている。キャッシュライン358,324に関連付けられているLビットを適切に更新するために、第1レベルキャッシュメモリ202のウェイセット104に関連付けられているインデックスオフセットビット352とウェイセットビット354とが更新される。詳細に説明すると、インデックスオフセットビット352Aが11から01に変更され、ウェイセットビット354Aが000から011に変更される。これによって、このビット群は、下位レベルキャッシュメモリ303のキャッシュライン324に代わってキャッシュライン358と関連付けられる。
下位レベルキャッシュメモリ303をリフィルする際に、第1レベルキャッシュメモリ202のどのデータも無効にする必要がないため有利である。このように、メモリ使用効率の改善、処理スループットの向上、および処理データの品質向上を図ることができる。
本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は、本発明の原理および用途の例を示すものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨および範囲から逸脱することなく、これら例示的な実施形態を種々に変更したり、上記以外の構成を考案し得ることが理解されよう。
本発明の1つ以上の実施形態による、階層型キャッシュメモリの制御に適する1つ以上の方法および装置の態様を示すブロック図である。 本発明の実施形態の1つ以上によって実行および/または実装され得る特定の動作/機能を示すフローチャートである。 本発明の1つ以上の別の実施形態による、階層型キャッシュメモリの制御に適する1つ以上の別法による方法および装置の別の態様を示すブロック図である。 本発明の1つ以上の別の実施形態による、階層型キャッシュメモリの制御に適する1つ以上の方法および装置の別の態様を示すブロック図である。
符号の説明
101 マイクロプロセッサ
102、103 キャッシュメモリ
104〜107 ウェイセット
109A〜D キャッシュライン
110 ポインタ
112 フラグ
202 レベルキャッシュメモリ
203 キャッシュメモリ
301 マイクロプロセッサ
303 キャッシュメモリ
303A 付加的なメモリ
324 キャッシュライン
350 ビット
350 フラグ
352 オフセットビット
352 キャッシュライン
354 ウェイセットビット
358 キャッシュライン

Claims (20)

  1. 複数のウェイセット及び複数のキャッシュラインが関連付けられているとともに、前記複数のキャッシュラインの各々がアドレスタグおよびデータを記憶するように動作可能とされた第1レベルキャッシュメモリを有し、
    複数のウェイセット及び複数のキャッシュラインが関連付けられるとともに、前記複数のキャッシュラインの各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能とされた次段レベルのキャッシュメモリを有し、更に、
    前記次段レベルのキャッシュメモリに関連付けられるとともに複数のメモリラインを備えた付加的なメモリを有し、前記メモリラインの数は前記第1レベルキャッシュメモリの与えられたセットに含まれるキャッシュラインの数に対応するものであり、
    前記第1レベルキャッシュメモリの各キャッシュラインにはインデックスが関連付けられており、前記付加的なメモリの各メモリラインは、それぞれ次段レベルのキャッシュメモリの各ウェイセットの複数のキャッシュラインに対してのLフラグを含み、所定のインデックスに第1レベルキャッシュメモリのインデックスオフセットを加算した値に対応するLフラグの全てが、前記付加的なメモリの1つのメモリラインに含まれ、かつ、前記次段レベルのキャッシュメモリはその各キャッシュラインに対応するLフラグを含まない、装置。
  2. 前記付加的なメモリの前記メモリラインの数は、前記第1レベルキャッシュメモリの所定のウェイセットに含まれるキャッシュラインの数に等しい、請求項1記載の装置。
  3. 前記第1レベルキャッシュメモリにはN個のウェイセットが含まれ、前記次段レベルのキャッシュメモリにはM個のウェイセットが含まれ、MはNよりも大きい、請求項1記載の装置。
  4. Nが2でMが8である請求項3記載の装置。
  5. 前記所定のインデックスに関連付けられた全てのLフラグは一度に制御できる、請求項1記載の装置。
  6. 前記所定のインデックスに関連付けられた全てのLフラグは一度に変更できる、請求項1記載の装置。
  7. 前記付加的なメモリのそれぞれのLフラグが、該Lフラグに対応する次段レベルのキャッシュメモリのキャッシュライン内に記憶されたデータによって、第1レベルキャッシュメモリのキャッシュラインのいずれかがリフィルされたかどうかを示すよう動作可能なプロセッサを更に含む、請求項1記載の装置。
  8. 前記プロセッサは、更に、前記付加的なメモリの各所定のメモリラインの前記Lフラグを実質的に同時にセットするよう動作可能である、請求項7記載の装置。
  9. 前記次段レベルのキャッシュメモリ内の各ウェイセットは、前記第1レベルキャッシュメモリ内の各ウェイセットよりも大きい、請求項1記載の装置。
  10. 前記次段レベルのキャッシュメモリ内の各ウェイセットは、前記第1レベルキャッシュメモリ内の各ウェイセットの少なくとも4倍以上である、請求項9記載の装置。
  11. 前記第1レベルキャッシュメモリにアクセスするための第1インデックスと前記次段レベルのキャッシュメモリにアクセスするための第2インデックスとを有し、前記第1レベルキャッシュメモリにアクセスするために前記第1インデックスが要求するビット数は、前記次段レベルのキャッシュメモリ内にアクセスするために前記第2インデックスが要求するビット数よりも少ない、請求項9記載の装置。
  12. 前記第1レベルキャッシュメモリと前記次段レベルのキャッシュメモリとに論理的に関連付けられたアドレスバスを有し、
    前記第1レベルキャッシュメモリでキャッシュミスが発生したときに前記次段レベルのキャッシュメモリに前記アドレスバスを通じて有効アドレスが渡され、前記アドレスバス内の第1ビットセットが前記有効アドレスのタグビットを含み、前記アドレスバス内の第2ビットセットが前記有効アドレスのインデックスビットを含む、請求項1記載の装置。
  13. 前記次段レベルのキャッシュメモリは、前記ウェイセットの少なくとも選択された一つ内のキャッシュラインのうち選択されたものにアクセスするために、前記第2ビットセットと、前記第1ビットセットの少なくとも一部と、を使用し、前記次段レベルのキャッシュメモリは、前記第2ビットセットのインデックスビットを拡張するために前記第1ビットセットの少なくとも一部をインデックスビットとして扱う、請求項12記載の装置。
  14. 複数のウェイセット及び複数のキャッシュラインが関連付けられているとともに、前記複数のキャッシュラインの各々がアドレスタグおよびデータを記憶するように動作可能とされ、更に各キャッシュラインにインデックスが関連付けられている、第1レベルキャッシュメモリを有し、
    複数のウェイセット及び複数のキャッシュラインが関連付けられるとともに、前記複数のキャッシュラインの各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能とされた次段レベルのキャッシュメモリを有し、更に、
    前記次段レベルのキャッシュメモリに関連付けられるとともに複数のメモリラインを備えた付加的なメモリを有し、前記付加的なメモリの各メモリラインは、それぞれ次段レベルのキャッシュメモリの各ウェイセットの複数のキャッシュラインに対してのLフラグを含み、所定のインデックスに第1レベルキャッシュメモリのインデックスオフセットを加算した値に対応するLフラグの全てが、前記付加的なメモリの1つのメモリラインに含まれ、かつ、前記次段レベルのキャッシュメモリはその各キャッシュライン内に対応するLフラグを含まない、装置。
  15. 前記第1レベルキャッシュメモリはダイレクトマップキャッシュである、請求項14記載の装置。
  16. 前記第1レベルキャッシュメモリはL1キャッシュメモリであり、かつ、前記次段レベルのキャッシュメモリはL2キャッシュメモリである、請求項14記載の装置。
  17. 前記インデックスの所定の一つに関連付けられたLフラグの全ては、同時に制御又は変更が可能である、請求項14記載の装置。
  18. 複数のウェイセット及び複数のキャッシュラインが関連付けられているとともに、前記複数のキャッシュラインの各々がアドレスタグおよびデータを記憶するように動作可能とされ、更に各キャッシュラインにインデックスが関連付けられている、第1レベルキャッシュメモリを制御するステップを有し、
    複数のウェイセット及び複数のキャッシュラインが関連付けられるとともに、前記複数のキャッシュラインの各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能とされた次段レベルのキャッシュメモリを制御するステップを有し、
    前記次段レベルのキャッシュメモリに関連付けられるとともに複数のメモリラインを備えた付加的なメモリを制御するステップを有し、前記付加的なメモリの各メモリラインは、それぞれ次段レベルのキャッシュメモリの各ウェイセットの複数のキャッシュラインに対してのLフラグを含み、所定のインデックスに第1レベルキャッシュメモリのインデックスオフセットを加算した値に対応するLフラグの全てが、前記付加的なメモリの1つのメモリラインに含まれるものであり、更に、
    前記付加的なメモリのそれぞれのLフラグを、該Lフラグに対応する次段レベルのキャッシュメモリのキャッシュライン内に記憶されたデータによって、第1レベルキャッシュメモリのキャッシュラインのいずれかがリフィルされたかどうかを示すように設定するステップを有し、
    前記次段レベルのキャッシュメモリはその各キャッシュラインに対応するLフラグを含まない、方法。
  19. 前記第1レベルキャッシュメモリでキャッシュミスが発生したときに、前記次段レベルのキャッシュメモリにアドレスバスを通じて有効アドレスを渡すステップを有し、前記アドレスバス内の第1ビットセットが前記有効アドレスのタグビットを含み、前記アドレスバス内の第2ビットセットが前記有効アドレスのインデックスビットを含む、請求項18記載の方法。
  20. 前記第2ビットセットと前記第1ビットセットの少なくとも一部とから、前記次段レベルのキャッシュメモリ内の少なくとも一つのウェイセット内のキャッシュラインの選択された一つを識別するステップを有する、請求項19記載の方法。
JP2007198125A 2002-05-06 2007-07-30 階層型キャッシュメモリを制御するための方法ならびに装置 Expired - Lifetime JP4112603B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US37819802P 2002-05-06 2002-05-06
US38220102P 2002-05-21 2002-05-21
US10/228,347 US7024519B2 (en) 2002-05-06 2002-08-26 Methods and apparatus for controlling hierarchical cache memory

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2004502158A Division JP4040623B2 (ja) 2002-05-06 2003-04-25 階層型キャッシュメモリを制御するための方法ならびに装置

Publications (2)

Publication Number Publication Date
JP2007310906A JP2007310906A (ja) 2007-11-29
JP4112603B2 true JP4112603B2 (ja) 2008-07-02

Family

ID=29273596

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2004502158A Expired - Fee Related JP4040623B2 (ja) 2002-05-06 2003-04-25 階層型キャッシュメモリを制御するための方法ならびに装置
JP2007198125A Expired - Lifetime JP4112603B2 (ja) 2002-05-06 2007-07-30 階層型キャッシュメモリを制御するための方法ならびに装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2004502158A Expired - Fee Related JP4040623B2 (ja) 2002-05-06 2003-04-25 階層型キャッシュメモリを制御するための方法ならびに装置

Country Status (6)

Country Link
US (3) US7024519B2 (ja)
EP (1) EP1502193B1 (ja)
JP (2) JP4040623B2 (ja)
AU (1) AU2003222459A1 (ja)
TW (1) TWI243991B (ja)
WO (1) WO2003094003A1 (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7024519B2 (en) * 2002-05-06 2006-04-04 Sony Computer Entertainment Inc. Methods and apparatus for controlling hierarchical cache memory
US7076609B2 (en) * 2002-09-20 2006-07-11 Intel Corporation Cache sharing for a chip multiprocessor or multiprocessing system
US20050033889A1 (en) * 2002-10-08 2005-02-10 Hass David T. Advanced processor with interrupt delivery mechanism for multi-threaded multi-CPU system on a chip
US20050033831A1 (en) * 2002-10-08 2005-02-10 Abbas Rashid Advanced processor with a thread aware return address stack optimally used across active threads
US20050044324A1 (en) * 2002-10-08 2005-02-24 Abbas Rashid Advanced processor with mechanism for maximizing resource usage in an in-order pipeline with multiple threads
US8478811B2 (en) * 2002-10-08 2013-07-02 Netlogic Microsystems, Inc. Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
US7984268B2 (en) * 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US8015567B2 (en) * 2002-10-08 2011-09-06 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
US8176298B2 (en) 2002-10-08 2012-05-08 Netlogic Microsystems, Inc. Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline
US7961723B2 (en) * 2002-10-08 2011-06-14 Netlogic Microsystems, Inc. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US7627721B2 (en) 2002-10-08 2009-12-01 Rmi Corporation Advanced processor with cache coherency
US7346757B2 (en) * 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US7924828B2 (en) * 2002-10-08 2011-04-12 Netlogic Microsystems, Inc. Advanced processor with mechanism for fast packet queuing operations
US9088474B2 (en) * 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
US8037224B2 (en) 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US7334086B2 (en) * 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US7149867B2 (en) * 2003-06-18 2006-12-12 Src Computers, Inc. System and method of enhancing efficiency and utilization of memory bandwidth in reconfigurable hardware
CN100418074C (zh) * 2004-03-05 2008-09-10 菲尼萨公司 光学收发机中的分级和字节可配置存储器
US7844665B2 (en) 2004-04-23 2010-11-30 Waratek Pty Ltd. Modified computer architecture having coordinated deletion of corresponding replicated memory locations among plural computers
US7543113B2 (en) * 2004-07-02 2009-06-02 Hewlett-Packard Development Company, L.P. Cache memory system and method capable of adaptively accommodating various memory line sizes
US7310709B1 (en) * 2005-04-06 2007-12-18 Sun Microsystems, Inc. Method and apparatus for primary cache tag error handling
US7773597B2 (en) * 2005-04-20 2010-08-10 Cisco Technology, Inc. Method and system for dynamic stashing for cryptographic operations using beginning packet information
WO2006110937A1 (en) 2005-04-21 2006-10-26 Waratek Pty Limited Modified computer architecture with coordinated objects
US7991959B2 (en) * 2005-05-16 2011-08-02 Texas Instruments Incorporated Visualizing contents and states of hierarchical storage systems
US7716100B2 (en) * 2005-12-02 2010-05-11 Kuberre Systems, Inc. Methods and systems for computing platform
JP4297968B2 (ja) * 2006-02-14 2009-07-15 富士通株式会社 コヒーレンシ維持装置およびコヒーレンシ維持方法
US7711902B2 (en) * 2006-04-07 2010-05-04 Broadcom Corporation Area effective cache with pseudo associative memory
US20080126503A1 (en) * 2006-10-05 2008-05-29 Holt John M Contention resolution with echo cancellation
US20080133690A1 (en) 2006-10-05 2008-06-05 Holt John M Contention detection and resolution
US8086805B2 (en) 2006-10-05 2011-12-27 Waratek Pty Ltd. Advanced contention detection
US20080127213A1 (en) * 2006-10-05 2008-05-29 Holt John M Contention resolution with counter rollover
US8095616B2 (en) 2006-10-05 2012-01-10 Waratek Pty Ltd. Contention detection
US20080250221A1 (en) * 2006-10-09 2008-10-09 Holt John M Contention detection with data consolidation
CN101170416B (zh) * 2006-10-26 2012-01-04 阿里巴巴集团控股有限公司 网络数据存储系统及其数据访问方法
KR101165132B1 (ko) * 2007-01-31 2012-07-12 콸콤 인코포레이티드 멀티-레벨 캐시 계층에서의 캐스트아웃들을 감소시키기 위한 장치 및 방법들
WO2009004506A1 (en) * 2007-07-05 2009-01-08 Nxp B.V. Method for the improvement of microprocessor security
US8037256B2 (en) * 2007-12-20 2011-10-11 Advanced Micro Devices, Inc. Programmable address processor for graphics applications
US9596324B2 (en) * 2008-02-08 2017-03-14 Broadcom Corporation System and method for parsing and allocating a plurality of packets to processor core threads
US8316186B2 (en) * 2008-09-20 2012-11-20 Freescale Semiconductor, Inc. Method and apparatus for managing cache reliability based on an associated error rate
US8364896B2 (en) * 2008-09-20 2013-01-29 Freescale Semiconductor, Inc. Method and apparatus for configuring a unified cache based on an associated error rate
US8266498B2 (en) * 2009-03-31 2012-09-11 Freescale Semiconductor, Inc. Implementation of multiple error detection schemes for a cache
US8463470B2 (en) * 2009-09-03 2013-06-11 Johnson Outdoors Marine Electronics, Inc. Shallow water highlight method and display systems
JP5440067B2 (ja) * 2009-09-18 2014-03-12 富士通株式会社 キャッシュメモリ制御装置およびキャッシュメモリ制御方法
US20110320720A1 (en) * 2010-06-23 2011-12-29 International Business Machines Corporation Cache Line Replacement In A Symmetric Multiprocessing Computer
US8982140B2 (en) * 2010-09-24 2015-03-17 Nvidia Corporation Hierarchical memory addressing
WO2013001632A1 (ja) * 2011-06-29 2013-01-03 富士通株式会社 キャッシュ制御装置及びパイプライン制御方法
US9286172B2 (en) * 2011-12-22 2016-03-15 Intel Corporation Fault-aware mapping for shared last level cache (LLC)
JP5458132B2 (ja) * 2012-03-13 2014-04-02 株式会社東芝 キャッシュ装置
US10445025B2 (en) * 2014-03-18 2019-10-15 Micron Technology, Inc. Apparatuses and methods having memory tier structure and recursively searching between tiers for address in a translation table where information is only directly transferred between controllers
US10235219B2 (en) * 2015-07-27 2019-03-19 Sony Interactive Entertainment America Llc Backward compatibility by algorithm matching, disabling features, or throttling performance
US11403099B2 (en) * 2015-07-27 2022-08-02 Sony Interactive Entertainment LLC Backward compatibility by restriction of hardware resources
US10198376B2 (en) * 2015-08-03 2019-02-05 Marvell World Trade Ltd. Methods and apparatus for accelerating list comparison operations
US9986200B1 (en) * 2017-05-11 2018-05-29 Novatek Microelectronics Corp. Method and video conversion system of updating video setting
US10296458B2 (en) * 2017-05-31 2019-05-21 Dell Products L.P. Multi-level cache system in a software application
US11455253B2 (en) * 2020-10-01 2022-09-27 Arm Limited Set indexing for first-level and second-level set-associative cache
US11886342B2 (en) 2021-12-01 2024-01-30 International Business Machines Corporation Augmenting cache replacement operations

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3576544A (en) * 1968-10-18 1971-04-27 Ibm Storage protection system
US4037214A (en) * 1976-04-30 1977-07-19 International Business Machines Corporation Key register controlled accessing system
JPS5373927A (en) 1976-11-10 1978-06-30 Fujitsu Ltd Replacing system of intermediate buffer memory
JPS54146555A (en) 1978-05-09 1979-11-15 Nec Corp Data transfer system between processors
US4332009A (en) * 1980-01-21 1982-05-25 Mostek Corporation Memory protection system
JPS5835295B2 (ja) 1980-03-03 1983-08-02 オムロン株式会社 マスタ・スレ−ブ・システムにおけるデ−タ転送方式
US4430705A (en) * 1980-05-23 1984-02-07 International Business Machines Corp. Authorization mechanism for establishing addressability to information in another address space
DE3171379D1 (en) * 1981-04-28 1985-08-22 Ibm Bus arrangement for interconnectiong circuit chips
JPS5858553A (ja) * 1981-10-01 1983-04-07 Fuji Photo Film Co Ltd X線電子写真感光体およびその製造方法
AU542447B2 (en) * 1982-02-27 1985-02-21 Fujitsu Limited System for controlling key storage unit
JPS5958700A (ja) * 1982-09-29 1984-04-04 Fujitsu Ltd 記憶保護判定方式
US4545016A (en) * 1983-01-07 1985-10-01 Tandy Corporation Memory management system
US5159700A (en) * 1984-01-16 1992-10-27 Texas Instruments Incorporated Substrate with optical communication systems between chips mounted thereon and monolithic integration of optical I/O on silicon substrates
US4732446A (en) * 1985-10-02 1988-03-22 Lamar Gipson Electrical circuit and optical data buss
JPS6319058A (ja) 1986-07-11 1988-01-26 Fujitsu Ltd メモリ装置
JP2960415B2 (ja) * 1987-05-22 1999-10-06 株式会社日立製作所 記憶保護方法および装置
JPH01199251A (ja) 1988-02-04 1989-08-10 Fujitsu Ltd キャッシュメモリアクセス制御方式
US4939682A (en) * 1988-07-15 1990-07-03 The Boeing Company Integrated electro-optic arithmetic/logic unit and method for making the same
US5136700A (en) 1989-12-22 1992-08-04 Digital Equipment Corporation Apparatus and method for reducing interference in two-level cache memories
US5261066A (en) * 1990-03-27 1993-11-09 Digital Equipment Corporation Data processing system and method with small fully-associative cache and prefetch buffers
DE69130086T2 (de) 1990-06-15 1999-01-21 Compaq Computer Corp Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
US5144691A (en) * 1990-07-20 1992-09-01 Cray Research, Inc. Computer signal interconnect apparatus
EP0481735A3 (en) * 1990-10-19 1993-01-13 Array Technology Corporation Address protection circuit
KR940004404B1 (ko) * 1990-11-30 1994-05-25 삼성전자 주식회사 불휘발성 반도체 메모리장치
DE69225876T2 (de) 1991-12-24 1998-12-10 Motorola Inc Cachesteuerungsschaltung
US5268973A (en) * 1992-01-21 1993-12-07 The University Of Texas System Wafer-scale optical bus
JPH05216765A (ja) 1992-02-06 1993-08-27 Hitachi Ltd 階層バッファ記憶装置
US5649154A (en) * 1992-02-27 1997-07-15 Hewlett-Packard Company Cache memory system having secondary cache integrated with primary cache for use with VLSI circuits
US5715248A (en) * 1992-05-21 1998-02-03 Alcatel Network Systems, Inc. Derivation of VT group clock from SONET STS-1 payload clock and VT group bus definition
JPH05342101A (ja) 1992-06-12 1993-12-24 Fujitsu Ltd 階層キャッシュ・メモリ
US5619671A (en) * 1993-04-19 1997-04-08 International Business Machines Corporation Method and apparatus for providing token controlled access to protected pages of memory
US5530832A (en) * 1993-10-14 1996-06-25 International Business Machines Corporation System and method for practicing essential inclusion in a multiprocessor and cache hierarchy
US5671391A (en) * 1994-01-10 1997-09-23 Ncr Corporation Coherent copyback protocol for multi-level cache memory systems
US5715428A (en) * 1994-02-28 1998-02-03 Intel Corporation Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system
US5513337A (en) * 1994-05-25 1996-04-30 Intel Corporation System for protecting unauthorized memory accesses by comparing base memory address with mask bits and having attribute bits for identifying access operational mode and type
US5551001A (en) * 1994-06-29 1996-08-27 Exponential Technology, Inc. Master-slave cache system for instruction and data cache memories
JP3132749B2 (ja) * 1994-12-05 2001-02-05 インターナショナル・ビジネス・マシーンズ・コーポレ−ション マルチプロセッサ・データ処理システム
DE19508723A1 (de) * 1995-03-10 1996-09-12 Siemens Ag Mehrbenutzerdatenverarbeitungsanlage mit Speicherschutz
US5740400A (en) 1995-06-05 1998-04-14 Advanced Micro Devices Inc. Reducing cache snooping overhead in a multilevel cache system with multiple bus masters and a shared level two cache by using an inclusion field
US5850534A (en) * 1995-06-05 1998-12-15 Advanced Micro Devices, Inc. Method and apparatus for reducing cache snooping overhead in a multilevel cache system
JP3786993B2 (ja) * 1995-12-14 2006-06-21 株式会社日立製作所 データ記憶ユニット及び該ユニットを用いたデータ記憶装置
US6070233A (en) * 1996-01-26 2000-05-30 Unisys Corporation Processor bus traffic optimization system for multi-level cache utilizing reflection status bit to indicate data inclusion in higher level cache
US5729712A (en) * 1996-01-26 1998-03-17 Unisys Corporation Smart fill system for multiple cache network
US5900019A (en) * 1996-05-23 1999-05-04 International Business Machines Corporation Apparatus for protecting memory storage blocks from I/O accesses
US5802563A (en) * 1996-07-01 1998-09-01 Sun Microsystems, Inc. Efficient storage of data in computer system with multiple cache levels
EP0840231A1 (en) * 1996-10-31 1998-05-06 Texas Instruments Incorporated Microprocessor comprising multi-level cache memory
JP3421526B2 (ja) * 1997-02-14 2003-06-30 モトローラ株式会社 デ−タ処理装置
US6212605B1 (en) * 1997-03-31 2001-04-03 International Business Machines Corporation Eviction override for larx-reserved addresses
JPH1139215A (ja) 1997-05-22 1999-02-12 Matsushita Electric Ind Co Ltd キャッシュメモリおよびキャッシュメモリを制御する方法
US5996048A (en) * 1997-06-20 1999-11-30 Sun Microsystems, Inc. Inclusion vector architecture for a level two cache
US6247094B1 (en) * 1997-12-22 2001-06-12 Intel Corporation Cache memory architecture with on-chip tag array and off-chip data array
US6351789B1 (en) * 1998-05-29 2002-02-26 Via-Cyrix, Inc. Built-in self-test circuit and method for validating an associative data array
US6467012B1 (en) * 1999-07-08 2002-10-15 International Business Machines Corporation Method and apparatus using a distributed system structure to support bus-based cache-coherence protocols for symmetric multiprocessors
US6763425B1 (en) * 2000-06-08 2004-07-13 Netlogic Microsystems, Inc. Method and apparatus for address translation in a partitioned content addressable memory device
US6356980B1 (en) * 1999-11-09 2002-03-12 International Business Machines Corporation Method and system for bypassing cache levels when casting out from an upper level cache
US6725334B2 (en) * 2000-06-09 2004-04-20 Hewlett-Packard Development Company, L.P. Method and system for exclusive two-level caching in a chip-multiprocessor
US6748501B2 (en) 2000-12-30 2004-06-08 International Business Machines Corporation Microprocessor reservation mechanism for a hashed address system
US6826662B2 (en) * 2001-03-22 2004-11-30 Sony Computer Entertainment Inc. System and method for data synchronization for a computer architecture for broadband networks
US6834327B2 (en) * 2002-02-08 2004-12-21 Hewlett-Packard Development Company, L.P. Multilevel cache system having unified cache tag memory
US7024519B2 (en) * 2002-05-06 2006-04-04 Sony Computer Entertainment Inc. Methods and apparatus for controlling hierarchical cache memory

Also Published As

Publication number Publication date
TW200404208A (en) 2004-03-16
US7461207B2 (en) 2008-12-02
JP4040623B2 (ja) 2008-01-30
US7024519B2 (en) 2006-04-04
US20060075193A1 (en) 2006-04-06
EP1502193B1 (en) 2013-11-13
US7870340B2 (en) 2011-01-11
AU2003222459A1 (en) 2003-11-17
US20090063772A1 (en) 2009-03-05
EP1502193A1 (en) 2005-02-02
WO2003094003A1 (en) 2003-11-13
JP2007310906A (ja) 2007-11-29
US20030208658A1 (en) 2003-11-06
TWI243991B (en) 2005-11-21
JP2006504158A (ja) 2006-02-02

Similar Documents

Publication Publication Date Title
JP4112603B2 (ja) 階層型キャッシュメモリを制御するための方法ならびに装置
US6339813B1 (en) Memory system for permitting simultaneous processor access to a cache line and sub-cache line sectors fill and writeback to a system memory
USRE45078E1 (en) Highly efficient design of storage array utilizing multiple pointers to indicate valid and invalid lines for use in first and second cache spaces and memory subsystems
US6219760B1 (en) Cache including a prefetch way for storing cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line
US5070502A (en) Defect tolerant set associative cache
US6877067B2 (en) Shared cache memory replacement control method and apparatus
US7577793B2 (en) Patrol snooping for higher level cache eviction candidate identification
JP5536655B2 (ja) キャッシュメモリ、メモリシステム及びデータコピー方法
US6065099A (en) System and method for updating the data stored in a cache memory attached to an input/output system
WO2009023629A2 (en) Memory device and method having on-board address protection system for facilitating interface with multiple processors, and computer system using same
JP3900025B2 (ja) 共有キャッシュメモリのヒット判定制御方法及び共有キャッシュメモリのヒット判定制御方式
JP2618178B2 (ja) スカラ/ベクトル複合処理システム、スカラ/ベクトル複合処理システム用の相互問い合わせ装置及びデータ・コヒーレンスを維持するための方法
JP2009528612A (ja) データ処理システム並びにデータ及び/又は命令のプリフェッチ方法
US6715040B2 (en) Performance improvement of a write instruction of a non-inclusive hierarchical cache memory unit
EP0942376A1 (en) Method and system for pre-fetch cache interrogation using snoop port
US6751707B2 (en) Methods and apparatus for controlling a cache memory
US6493814B2 (en) Reducing resource collisions associated with memory units in a multi-level hierarchy memory system
US6415357B1 (en) Caching method and apparatus
JPH0659977A (ja) 明示的なライン置換え操作が可能なキャッシュメモリとその制御方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080324

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080409

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4112603

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110418

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110418

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120418

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20120418

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130418

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20130418

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20140418

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term