JP4112603B2 - Method and apparatus for controlling hierarchical cache memory - Google Patents

Method and apparatus for controlling hierarchical cache memory 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
Japanese (ja)
Other versions
JP2007310906A (en
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/en
Application granted granted Critical
Publication of JP4112603B2 publication Critical patent/JP4112603B2/en
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

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

本発明は、階層型キャッシュメモリを制御するための方法ならびに装置に関する。より詳細には、本発明は、下位レベルキャッシュメモリのキャッシュラインにデータを記憶することによって、上位レベルのキャッシュメモリに既に記憶されている当該キャッシュラインのデータが上書きされてしまう場合に、そのデータの記憶を禁止する制御方法に関する。   The present invention relates to a method and apparatus for controlling a hierarchical cache memory. More specifically, in the present invention, when data is stored in the cache line of the lower level cache memory, the data of the cache line already stored in the upper level cache memory is overwritten. The present invention relates to a control method for prohibiting the storage of data.

近年、最先端のコンピュータアプリケーションがますます複雑になっているため、コンピュータによるデータ処理のスループットの向上への要求がとどまることを知らず、マイクロプロセシングシステムに対する要求が増加の一途をたどっている。従来のマイクロプロセシングシステム(マイクロプロセッサと、これと関連付けられたメモリとを使用するシステム)では、サイクルタイム(マイクロプロセッサがデータを処理できる時間の単位)が非常に短く、例えば1ナノ秒である。しかし、メインメモリに記憶されているデータへのアクセスに要する時間は、マイクロプロセッサのサイクルタイムと比べてかなり長いことがある。例えば、ダイナミックランダムアクセスメモリ(DRAM)技術を利用して実装されたメインメモリから1バイトのデータを取り出す際のアクセス時間は約60ナノ秒程度となっている。   In recent years, as the state of the art computer applications have become more and more complex, the need for improving the throughput of data processing by computers remains unavoidable and the demand for microprocessing systems continues to increase. In a conventional microprocessing system (a system using a microprocessor and a memory associated therewith), the cycle time (unit of time in which the microprocessor can process data) is very short, for example, 1 nanosecond. However, the time required to access the data stored in the main memory may be considerably longer than the microprocessor cycle time. For example, the access time when extracting 1 byte of data from a main memory mounted using dynamic random access memory (DRAM) technology is about 60 nanoseconds.

DRAMメモリのアクセス時間が比較的長いことによるボトルネックを改善するために、従来、キャッシュメモリが利用されている。キャッシュメモリはメインメモリを補助して、システムのスループットを向上させる。メインメモリは、比較的安価で低速のDRAMメモリ技術を用いて実装されることが多いのに対し、キャッシュメモリは通常、より高価かつ高速のスタティックランダムアクセスメモリ(SRAM)技術を用いて実装される。キャッシュメモリは、コストの高い技術を用いて実装されることから、通常はメインメモリよりも大幅に容量が小さい。   Conventionally, a cache memory is used in order to improve a bottleneck caused by a relatively long access time of a DRAM memory. The cache memory assists the main memory and improves the system throughput. Main memory is often implemented using relatively inexpensive and slow DRAM memory technology, whereas cache memory is typically implemented using more expensive and faster static random access memory (SRAM) technology. . Since the cache memory is mounted using a high-cost technology, the capacity is usually much smaller than that of the main memory.

キャッシュメモリは比較的容量が小さいため、従来のアルゴリズムを使用して、マイクロプロセシングシステムの動作中の様々な時点において、キャッシュメモリに記憶すべきデータを判定していた。例えば、これらの従来のアルゴリズムは、「参照の局所性」の理論の概念に基づいており、ある特定の時点において、マイクロプロセッサが実行可能プログラムの比較的限られた部分しか使用していないという事実を利用するものであり得る。このため、参照の局所性の概念に従って、ある特定の時点において、実行可能プログラムの限られた部分のみがキャッシュメモリに記憶される。また、このようなアルゴリズムやその他のアルゴリズムを使用して、キャッシュメモリへのデータの記憶や、キャッシュメモリからのデータの取り出し(これらのデータは実行可能プログラムによって使用され得る)が制御され得る。   Because cache memory is relatively small in capacity, conventional algorithms have been used to determine the data to be stored in the cache memory at various times during the operation of the microprocessing system. For example, these conventional algorithms are based on the concept of “locality of reference” and the fact that at a particular point in time, the microprocessor uses only a relatively limited portion of the executable program. Can be used. Thus, according to the concept of locality of reference, only a limited part of the executable program is stored in the cache memory at a certain point in time. Also, such algorithms and other algorithms can be used to control the storage of data in the cache memory and the retrieval of data from the cache memory (these data can be used by executable programs).

キャッシュメモリへの実行可能プログラムやデータの記憶を制御するための、参照の局所性を利用する公知のアルゴリズムやその他の概念の詳細については、その数が多いためにここに記載することはできない。ただし、アプリケーションによってデータ処理の目的が大きく異なることがあるため、あらゆるアプリケーションに適するアルゴリズムは存在しないということに言及すれば十分であろう。   Details of known algorithms and other concepts that use locality of reference to control the storage of executable programs and data in cache memory cannot be described here due to their large number. However, it may be sufficient to mention that no algorithm is suitable for any application, because the purpose of data processing can vary greatly from application to application.

キャッシュメモリを制御するための従来のアルゴリズムでは、マイクロプロセッサがキャッシュメモリに対してデータアクセス要求を与える。要求されたデータがキャッシュメモリに記憶されている場合はキャッシュヒットとなり、マイクロプロセッサは比較的速やかにデータを受け取る。キャッシュメモリにアクセスしてもデータに対するデータアクセス要求が満たされない場合、すなわちキャッシュミスが発生した場合は、データをメインメモリから取得し、キャッシュメモリに記憶するデータリフィルシーケンス(data refill sequence)を実行することが望ましい。   In the conventional algorithm for controlling the cache memory, the microprocessor gives a data access request to the cache memory. If the requested data is stored in the cache memory, a cache hit occurs and the microprocessor receives the data relatively quickly. If the data access request for the data is not satisfied even if the cache memory is accessed, that is, if a cache miss occurs, the data is acquired from the main memory and a data refill sequence stored in the cache memory is executed. It is desirable.

キャッシュメモリは、マイクロプロセッサに「オンチップ」で配置されていることがあり、この構成をレベル1(L1)キャッシュメモリと呼ぶ。あるいは、キャッシュメモリは、マイクロプロセッサとは別に配置されている、すなわちオフチップのこともあり、この構成をレベル2(L2)キャッシュメモリと呼ぶ。通常、L1キャッシュメモリはL2キャッシュメモリと比べてアクセス時間が大幅に短い。オンチップのキャッシュメモリとオフチップのキャッシュメモリとを併用するL1、L2複合キャッシュメモリシステムを構成することも可能であり、この構成を階層型キャッシュメモリと呼ぶことがある。この構成では、マイクロプロセッサがデータに対するアクセス要求を行うと、この要求を満たすために最初にL1キャッシュメモリがアクセスされる。要求が満たされない場合、L2キャッシュメモリがアクセスされる。L2キャッシュメモリのミスが発生した場合、メインメモリがアクセスされて、L1キャッシュメモリおよびL2キャッシュメモリがリフィルされる。   The cache memory may be arranged “on-chip” in the microprocessor, and this configuration is referred to as a level 1 (L1) cache memory. Alternatively, the cache memory may be arranged separately from the microprocessor, that is, off-chip, and this configuration is referred to as a level 2 (L2) cache memory. Usually, the access time of the L1 cache memory is significantly shorter than that of the L2 cache memory. It is also possible to configure an L1 and L2 composite cache memory system that uses both an on-chip cache memory and an off-chip cache memory, and this configuration is sometimes referred to as a hierarchical cache memory. In this configuration, when the microprocessor makes an access request for data, the L1 cache memory is first accessed to satisfy the request. If the request is not satisfied, the L2 cache memory is accessed. When a miss of the L2 cache memory occurs, the main memory is accessed and the L1 cache memory and the L2 cache memory are refilled.

L1キャッシュメモリとL2キャッシュメモリと間の競合の発生を低減させると共にアクセス効率を向上させるため、L2キャッシュメモリは、L1キャッシュメモリよりも多くのウェイセットを有するNウェイセットアソシエーティブメモリであり得る。従来の技術によれば、L2キャッシュメモリがリフィルされる際(すなわち、L2キャッシメモリミスの発生後)には、L2キャッシュメモリのN個のキャッシュラインの中から、リフィルデータを入れるためのキャッシュラインを1つ選択する必要がある。N個のキャッシュラインの1つ以上に無効なデータが格納されている場合には、これらのキャッシュラインの1つにリフィルデータを記憶する。しかし、N個のキャッシュラインの全てに有効なデータが格納されている場合は、無作為選択手法を使用するか、公知の最低使用頻度(LRU)アルゴリズムを使用するか、その他の任意のアルゴリズムを使用して、リフィルデータを入れるキャッシュラインを選択する。いずれにしても、L2キャッシュメモリのキャッシュラインにある有効なデータが上書きされ、かつこの有効なデータのコピーがL1キャッシュメモリのキャッシュラインにも格納されている場合には、L1キャッシュメモリとL2キャッシュメモリとの整合を図るために、L1キャッシュメモリのそのキャッシュラインを無効にする必要がある。   In order to reduce the occurrence of contention between the L1 cache memory and the L2 cache memory and improve the access efficiency, the L2 cache memory may be an N-way set associative memory having more way sets than the L1 cache memory. According to the conventional technique, when the L2 cache memory is refilled (that is, after the occurrence of an L2 cache memory miss), a cache line for entering refill data from among the N cache lines of the L2 cache memory. Must be selected. If invalid data is stored in one or more of the N cache lines, the refill data is stored in one of these cache lines. However, if valid data is stored in all N cache lines, use a random selection approach, a known least frequently used (LRU) algorithm, or any other algorithm. Use to select the cache line that will contain the refill data. In any case, if valid data in the cache line of the L2 cache memory is overwritten and a copy of this valid data is also stored in the cache line of the L1 cache memory, the L1 cache memory and the L2 cache In order to match with the memory, it is necessary to invalidate the cache line of the L1 cache memory.

しかし、従来の制御方法で行われているように、L1キャッシュメモリなどの上位レベルのキャッシュメモリにあるデータを無効にすると、マイクロプロセシングシステム全体のスループットが低下してしまう。例えば、L1キャッシュメモリ内のデータが不必要に無効にされると、L1キャッシュメモリを最適に使用することができない。この結果、ループ本体内で非常に頻繁にアクセスされる、キャッシュ済みの命令やデータが不必要に無効にされるおそれがある。この状態は、非常に大きなデータ配列にアクセスする場合に多くみられる。   However, if the data in the higher-level cache memory such as the L1 cache memory is invalidated as in the conventional control method, the throughput of the entire microprocessing system is reduced. For example, if data in the L1 cache memory is invalidated unnecessarily, the L1 cache memory cannot be used optimally. As a result, cached instructions and data that are accessed very frequently within the loop body may be unnecessarily invalidated. This situation is common when accessing very large data arrays.

したがって、メモリ効率を改良し、処理スループットを向上させ、システム全体で実行されるデータ処理品質を改良させるために、L1キャッシュメモリ、L2キャッシュメモリおよび/またはより下位のレベルキャッシュメモリを備え得るキャッシュメモリを制御するための新しい方法ならびに装置が当業界で望まれている。   Accordingly, a cache memory that may comprise an L1 cache memory, an L2 cache memory, and / or a lower level cache memory to improve memory efficiency, improve processing throughput, and improve the quality of data processing performed throughout the system. There is a need in the art for new methods and apparatus for controlling the process.

本発明の1つ以上の態様によれば、装置は、各々がアドレスタグおよびデータを記憶するように動作可能な複数のキャッシュラインを備えた第1レベルキャッシュメモリと、各々がアドレスタグ状態フラグ、およびデータを記憶するように動作可能な複数のキャッシュラインを備えた、次のより低いレベル、つまり次段レベル(next lower level)のキャッシュメモリと、を有し、各キャッシュラインの前記状態フラグは、前記次段レベルのキャッシュメモリの当該キャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリの前記キャッシュラインのいずれかが格納していることを示すLフラグを有する。   In accordance with one or more aspects of the present invention, an apparatus includes a first level cache memory having a plurality of cache lines each operable to store an address tag and data, each address tag status flag, And a next lower level cache memory with a plurality of cache lines operable to store data, the status flag for each cache line being And an L flag indicating that any one of the cache lines of the first level cache memory stores a copy of the data stored in the cache line of the next level cache memory.

好ましくは、各キャッシュラインの前記Lフラグは1ビットであり、その値が真の場合は、前記次段レベルのキャッシュメモリの当該キャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリの対応するキャッシュラインが格納していることを示し、偽の場合は、前記次段レベルのキャッシュメモリの当該キャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリのどのキャッシュラインも格納していないことを示す。例えば、Lフラグビットの真のレベルは論理ハイおよび論理ローのうちの一方であり得、前記Lフラグビットの前記偽のレベルは前記論理ハイおよび前記論理ローのもう一方であり得る。   Preferably, the L flag of each cache line is 1 bit, and if the value is true, a copy of the data stored in the cache line of the cache memory at the next level is used as the first level cache. Indicates that the corresponding cache line of the memory is stored. If false, a copy of the data stored in the cache line of the next level cache memory is transferred to any cache of the first level cache memory. Indicates that no line is stored. For example, the true level of the L flag bit can be one of a logic high and a logic low, and the false level of the L flag bit can be the other of the logic high and the logic low.

好ましくは、前記第1レベルキャッシュメモリはL1キャッシュメモリであり、前記次段レベルのキャッシュメモリはL2キャッシュメモリである。   Preferably, the first level cache memory is an L1 cache memory, and the next level cache memory is an L2 cache memory.

上記装置は、前記次段レベルのキャッシュメモリの所定のキャッシュラインのLフラグを設定して、前記次段レベルのキャッシュメモリの前記所定のキャッシュラインに記憶されているデータのコピーによって、前記第1レベルキャッシュメモリの前記キャッシュラインのうちの対応するキャッシュラインがリフィルされているかどうかを示すように動作可能なプロセッサをさらに有し得る。   The apparatus sets the L flag of a predetermined cache line of the cache memory at the next level and copies the data stored in the predetermined cache line of the cache memory at the next level by the first cache line. There may further be a processor operable to indicate whether a corresponding cache line of the level cache memory is being refilled.

上記装置は、別法として(あるいは上記に加えて)、前記次段レベルのキャッシュメモリの所定のキャッシュラインのLフラグが、前記所定のキャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリの前記キャッシュラインのうちの対応するキャッシュラインが格納していることを示す場合に、前記次段レベルのキャッシュメモリの前記所定のキャッシュラインへのデータの上書きを禁止するように動作可能であり得る。好ましくは、前記次段レベルのキャッシュメモリの所定のキャッシュラインの状態フラグの有効フラグが、前記所定のキャッシュラインに記憶されているデータのいずれかが無効であることを示す場合に、前記プロセッサは、前記所定のキャッシュラインへのデータの上書きを許可するようにさらに動作可能である。   Alternatively, (or in addition to) the apparatus may be configured such that an L flag of a predetermined cache line of the next-level cache memory stores a copy of the data stored in the predetermined cache line. Operates to prohibit overwriting of data to the predetermined cache line of the next level cache memory when the corresponding cache line of the level cache memory indicates that it is stored It can be. Preferably, when the valid flag of the status flag of the predetermined cache line in the next-level cache memory indicates that any of the data stored in the predetermined cache line is invalid, the processor And is further operable to allow overwriting of data to the predetermined cache line.

さらに、前記次段レベルのキャッシュメモリの所定のキャッシュラインの状態フラグの有効フラグが、前記所定のキャッシュラインに記憶されているデータが有効であることを示し、かつ前記所定のキャッシュラインのLビットが、前記所定のキャッシュラインに記憶されているデータのコピーを前記第1レベルキャッシュメモリの前記キャッシュラインのうちの対応するキャッシュラインが格納していないことを示す場合に、前記プロセッサは前記所定のキャッシュラインへのデータの上書きを許可するようにさらに動作可能であり得る。   Further, the valid flag of the status flag of the predetermined cache line of the cache memory at the next level indicates that the data stored in the predetermined cache line is valid, and the L bit of the predetermined cache line Indicates that the corresponding cache line of the cache lines of the first level cache memory does not store a copy of the data stored in the predetermined cache line; It may be further operable to allow overwriting of data to the cache line.

前記第1レベルキャッシュメモリはダイレクトマップドキャッシュメモリであり得る。前記次段レベルのキャッシュメモリはNウェイセットアソシエーティブキャッシュメモリであり得る。   The first level cache memory may be a direct mapped cache memory. The next level cache memory may be an N-way set associative cache memory.

本発明の1つ以上のさらに別の態様によれば、装置は、各々がアドレスタグおよびデータを記憶するように動作可能な複数のM1キャッシュラインを有する第1レベルキャッシュメモリと、次段レベルのNウェイセットアソシエーティブユニファイドキャッシュメモリと、前記各Nウェイセットは各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能な複数のM2キャッシュライン(M2はM1より大きい)を有し、前記次段レベルのキャッシュメモリに関連付けられ、かつ複数のM1メモリラインを有する付加的なメモリと、を有し、各メモリラインは、前記次段レベルのキャッシュメモリの各Nウェイセットの複数のキャッシュラインに対応するそれぞれのLフラグを有し、各Lビットは、前記次段レベルのキャッシュメモリの前記所定のキャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリの前記キャッシュラインのいずれかが格納しているかどうかを示す。   In accordance with one or more further aspects of the present invention, an apparatus includes: a first level cache memory having a plurality of M1 cache lines each operable to store an address tag and data; An N-way set associative unified cache memory, each N-way set having a plurality of M2 cache lines (M2 is greater than M1) each operable to store address tags, status flags and data; An additional memory associated with the next level cache memory and having a plurality of M1 memory lines, each memory line comprising a plurality of caches in each N-way set of the next level cache memory Each L bit corresponding to a line, and each L bit is a cache of the next level. Indicating whether a copy of the data stored in the predetermined cache lines of the memory, one of the cache lines of the first level cache memory is storing.

好ましくは、前記付加的なメモリの各メモリラインにあるLフラグの個数はM2/M1×Nである。各キャッシュラインの前記Lフラグは1ビットであり得、その値が真の場合は、前記次段レベルのキャッシュメモリの関連付けられているキャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリのキャッシュラインが格納していることを示し、偽の場合は、前記次段レベルのキャッシュメモリの前記関連付けられているキャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリのどのキャッシュラインも格納していないことを示す。前記Lフラグビットの前記真のレベルは論理ハイおよび論理ローのうちの一方であり得、前記Lフラグビットの前記偽のレベルは前記論理ハイおよび前記論理ローのもう一方であり得る。   Preferably, the number of L flags in each memory line of the additional memory is M2 / M1 × N. The L flag of each cache line may be 1 bit, and if the value is true, a copy of the data stored in the associated cache line of the next level cache memory is copied to the first level. Indicates that the cache line of the cache memory is stored, and if false, a copy of the data stored in the associated cache line of the next level cache memory is copied to the first level cache memory. Indicates that no cache line is stored. The true level of the L flag bit can be one of a logic high and a logic low, and the false level of the L flag bit can be the other of the logic high and the logic low.

上記装置は、好ましくは、前記付加的なメモリのそれぞれのLフラグを設定して、前記次段レベルのキャッシュメモリの前記キャッシュラインに記憶されているデータによって、前記第1レベルキャッシュメモリの対応するキャッシュラインがリフィルされているかどうかを示すように動作可能なプロセッサを有する。前記プロセッサは、好ましくは、前記付加的なメモリの所定のメモリラインのLフラグをほぼ同時に設定するようにさらに動作可能である。   The apparatus preferably sets the L flag of each of the additional memories and corresponds to the first level cache memory according to the data stored in the cache line of the next level cache memory. Having a processor operable to indicate whether the cache line is being refilled; The processor is preferably further operable to set the L flag of a predetermined memory line of the additional memory substantially simultaneously.

上記プロセッサは、別法として(あるいは上記に加えて)、前記次段レベルのキャッシュメモリの所定のキャッシュラインのLフラグが、前記所定のキャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリの前記キャッシュラインのうちの対応するキャッシュラインが格納していることを示す場合に、前記次段レベルのキャッシュメモリの前記所定のキャッシュラインへのデータの上書きを禁止するように動作可能であり得る。好ましくは、前記次段レベルのキャッシュメモリの前記所定のキャッシュラインの前記状態フラグの有効フラグが、前記所定のキャッシュラインに記憶されているデータのいずれかが無効であることを示す場合に、上記プロセッサは、前記所定のキャッシュラインへのデータの上書きを許可するようにさらに動作可能であり得る。さらに、前記次段レベルのキャッシュメモリの所定のキャッシュラインの状態フラグの有効フラグが、前記所定のキャッシュラインに記憶されているデータが有効であることを示し、かつ前記所定のキャッシュラインのLフラグが、前記所定のキャッシュラインに記憶されているデータのコピーを前記第1レベルキャッシュメモリの前記キャッシュラインのうちの対応するキャッシュラインが格納していないことを示す場合に、前記プロセッサは、好ましくは、前記所定のキャッシュラインへのデータの上書きを許可するようにさらに動作可能である。   Alternatively, (or in addition to) the processor, the L flag of a predetermined cache line of the cache memory at the next level stores a copy of the data stored in the predetermined cache line. Operates to prohibit overwriting of data to the predetermined cache line of the next level cache memory when the corresponding cache line of the level cache memory indicates that it is stored It can be. Preferably, when the valid flag of the status flag of the predetermined cache line of the next-level cache memory indicates that any of the data stored in the predetermined cache line is invalid The processor may be further operable to allow overwriting of data to the predetermined cache line. Furthermore, the valid flag of the status flag of the predetermined cache line of the next-level cache memory indicates that the data stored in the predetermined cache line is valid, and the L flag of the predetermined cache line Indicates that the corresponding cache line of the cache lines of the first level cache memory does not store a copy of the data stored in the predetermined cache line, the processor preferably And is further operable to allow overwriting of data to the predetermined cache line.

本発明の1つ以上のさらに別の態様によれば、装置は、第1レベルのNウェイセットアソシエーティブキャッシュメモリと、前記第1レベルキャッシュメモリの前記各Nウェイセットは、各々がアドレスタグおよびデータを記憶するように動作可能な複数のM1キャッシュラインを有し、次段レベルのNウェイセットアソシエーティブユニファイドキャッシュメモリと、前記次段レベルのキャッシュメモリの前記各Nウェイセットは、各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能な複数のM2キャッシュライン(M2はM1より大きい)を有し、前記次段レベルのキャッシュメモリに関連付けられ、かつ複数のM1メモリラインを有する付加的なメモリと、を有し、前記付加的なメモリの各メモリラインは、前記第1レベルキャッシュメモリの前記各Nウェイセットに関連付けられたそれぞれのビット群を有しており、これによって前記付加的なメモリの各ビット群は、前記第1レベルキャッシュメモリのキャッシュラインのそれぞれ1つに関連付けられており、各ビット群はインデックスオフセットビット、ウェイセットビットおよびLフラグを有し、前記インデックスオフセットビットとインデックスとの組み合わせが、前記次段レベルのキャッシュメモリの前記各Nウェイセットの1つのキャッシュラインに対するポインタとなり、前記ウェイセットビットは、前記次段レベルのキャッシュメモリの前記Nウェイセットの1つに対するポインタとなり、前記Lフラグは、前記インデックスオフセットビット、前記インデックス、および前記ウェイセットビットによってポイントされている前記次段レベルのキャッシュメモリのキャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリの前記関連付けられたキャッシュラインが格納しているかどうかを示す。   In accordance with one or more further aspects of the present invention, an apparatus includes a first level N-way set associative cache memory, and each N-way set of the first level cache memory, each comprising an address tag and A plurality of M1 cache lines operable to store data, each of the N-level set associative unified cache memory of the next level and each of the N-way sets of the next level cache memory A plurality of M2 cache lines (M2 is greater than M1) operable to store address tags, status flags and data, associated with the next level cache memory and having a plurality of M1 memory lines An additional memory, and each memory line of the additional memory is A bit group associated with each N-way set of one-level cache memory, whereby each bit group of the additional memory is a respective one of the cache lines of the first-level cache memory. Each bit group includes an index offset bit, a way set bit, and an L flag, and the combination of the index offset bit and the index is 1 in each N way set of the cache memory at the next level. A pointer to one cache line, the way set bit is a pointer to one of the N way sets of the next level cache memory, and the L flag is the index offset bit, the index, and the way A copy of the data stored in the next stage level cache memory of the cache line pointed to by Ttobitto indicates whether the associated cache line of the first level cache memory is storing.

本発明の1つ以上のさらに別の態様によれば、方法は、各々がアドレスタグおよびデータを記憶するように動作可能な複数のキャッシュラインを備えた第1レベルキャッシュメモリを制御するステップと、各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能な複数のキャッシュラインを備えた次段レベルのキャッシュメモリを制御するステップであって、各キャッシュラインの前記状態フラグはLフラグを有するステップと、前記次段レベルのキャッシュメモリの所定のキャッシュラインのLフラグを設定して、前記次段レベルのキャッシュメモリの前記所定のキャッシュラインに記憶されているデータのコピーによって、前記第1レベルキャッシュメモリの前記キャッシュラインのうちの対応するキャッシュラインがリフィルされているかどうかを示すステップと、を有する。   In accordance with one or more further aspects of the present invention, a method controls a first level cache memory comprising a plurality of cache lines each operable to store an address tag and data; Controlling a next level cache memory having a plurality of cache lines each operable to store an address tag, a status flag and data, wherein the status flag of each cache line has an L flag The first level by setting a L flag of a predetermined cache line of the cache memory at the next stage level and copying data stored in the predetermined cache line of the cache memory at the next stage level; The corresponding cache line of the cache lines of the cache memory is Having a step that determines whether the fill.

上記方法は、好ましくは、前記次段レベルのキャッシュメモリの所定のキャッシュラインのLフラグが、前記所定のキャッシュラインに記憶されているデータのコピーを、前記第1レベルキャッシュメモリの前記キャッシュラインのうちの対応するキャッシュラインが格納していることを示す場合に、前記次段レベルのキャッシュメモリの前記所定のキャッシュラインへのデータの上書きを禁止するステップを有する。また、上記方法は、前記次段レベルのキャッシュメモリの所定のキャッシュラインの状態フラグの有効フラグが、前記所定のキャッシュラインに記憶されているデータのいずれかが無効であることを示す場合に、前記所定のキャッシュラインへのデータの上書きを許可するステップを有し得る。さらに、前記方法は、前記次段レベルのキャッシュメモリの所定のキャッシュラインの状態フラグの有効フラグが、前記所定のキャッシュラインに記憶されているデータが有効であることを示し、かつ前記所定のキャッシュラインのLビットが、前記所定のキャッシュラインに記憶されているデータのコピーを前記第1レベルキャッシュメモリの前記キャッシュラインのうちの対応するキャッシュラインが格納していないことを示す場合に、前記所定のキャッシュラインへのデータの上書きを許可するステップをさらに有し得る。   Preferably, in the above method, a copy of data stored in the predetermined cache line of the L flag of the predetermined cache line of the cache memory at the next level is copied to the cache line of the first level cache memory. And a step of prohibiting overwriting of data to the predetermined cache line of the cache memory at the next level when the corresponding cache line indicates that it is stored. In the above method, when the valid flag of the status flag of the predetermined cache line of the next-level cache memory indicates that any of the data stored in the predetermined cache line is invalid, The method may include a step of permitting overwriting of data to the predetermined cache line. Further, in the method, the valid flag of the status flag of the predetermined cache line of the cache memory at the next level indicates that the data stored in the predetermined cache line is valid, and the predetermined cache line The predetermined bit if the L bit of the line indicates that the corresponding cache line of the cache lines of the first level cache memory does not store a copy of the data stored in the predetermined cache line; The method may further include the step of allowing data to be overwritten on the cache line.

本発明の1つ以上のさらに別の態様によれば、方法は、各々がアドレスタグおよびデータを記憶するように動作可能な複数のM1キャッシュラインを有する第1レベルキャッシュメモリを制御するステップと、次段レベルのNウェイセットアソシエーティブユニファイドキャッシュメモリを制御するステップであって、前記各Nウェイセットは各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能な複数のM2キャッシュライン(M2はM1より大きい)を有するステップと、前記次段レベルのキャッシュメモリに関連付けられ、かつ複数のM1メモリラインを有する付加的なメモリを制御するステップであって、各メモリラインは、前記次段レベルのキャッシュメモリの各Nウェイセットの複数のキャッシュラインに対応するそれぞれのLフラグを有するステップと、前記付加的なメモリのそれぞれのLフラグを設定して、前記次段レベルのキャッシュメモリの前記キャッシュラインに記憶されているデータによって、前記第1レベルキャッシュメモリの対応するキャッシュラインがリフィルされているかどうかを示すステップと、を有する。   According to one or more further aspects of the present invention, a method controls a first level cache memory having a plurality of M1 cache lines each operable to store an address tag and data; Controlling a next level N-way set associative unified cache memory, each N-way set having a plurality of M2 cache lines each operable to store an address tag, a status flag and data ( M2 is greater than M1) and controlling an additional memory associated with the next level cache memory and having a plurality of M1 memory lines, each memory line including For multiple cache lines of each N-way set of level cache memory The first level cache memory in accordance with data stored in the cache line of the next level cache memory by setting each L flag of the additional memory and setting each L flag of the additional memory. Indicating whether the corresponding cache line is refilled.

本発明の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レベルキャッシュメモリの対応するキャッシュラインがリフィルされているかどうかを示すステップと、を有する。   According to one or more further aspects of the present invention, a method controls a first level N-way set associative cache memory, wherein each N-way set of the first level cache memory is A plurality of M1 cache lines each operable to store an address tag and data, and controlling a next level N-way set associative unified cache memory, wherein the next level Each N-way set of the cache memory includes a plurality of M2 cache lines (M2 is greater than M1) each operable to store an address tag, a status flag, and data; Associated with cache memory and has multiple M1 memory lines (I) each memory line of the additional memory has a respective group of bits associated with each N-way set of the first level cache memory. Whereby each bit group of the additional memory is associated with a respective one of the cache lines of the first level cache memory, and (ii) each bit group includes an index offset bit, a wayset bit and (Iii) the combination of the index offset bit and the index becomes a pointer to one cache line of each N way set of the next level cache memory, and (iv) the way set bit is , The N way of the next level cache memory The next level cache pointed to by the index offset bit, the index and the wayset bit by setting a pointer to one of the set of bits and setting an L flag for each of the additional memories Indicating whether the corresponding cache line of the first level cache memory has been refilled with data stored in the cache line of the memory.

本発明の1つ以上のさらに別の態様によれば、キャッシュメモリを制御するための上記した方法および装置、あるいは本明細書で後述する方法および装置は、下記の図面に示すような適切なハードウェアを用いて実現することができる。この種のハードウェアは、任意の公知の技術を用いて実装することができる。この例には、標準的なディジタル回路、アナログ回路、ソフトウェアプログラムおよび/またはファームウエアプログラムを実行するように動作可能な任意の公知のプロセッサ、プログラマブル読出し専用メモリ(PROM)、プログラマブルアレイロジックデバイス(PAL)、これらの任意の組合せなどの、1つ以上のプログラム可能なディジタル装置またはシステムなどがある。   In accordance with one or more further aspects of the present invention, the method and apparatus described above for controlling a cache memory, or the method and apparatus described later herein, are suitable hardware as shown in the following figures. Can be realized using hardware. This type of hardware can be implemented using any known technique. Examples include any known processor, programmable read only memory (PROM), programmable array logic device (PAL) operable to execute standard digital circuits, analog circuits, software programs and / or firmware programs. ), One or more programmable digital devices or systems, such as any combination thereof.

添付の図面を参照しつつ、ここに記載する本発明の説明を読めば、他の態様、機能および利点等は当業者に自明となるであろう。   Other aspects, features, advantages, etc. will become apparent to those skilled in the art after reading the description of the invention herein with reference to the accompanying drawings.

本発明を説明するために、現在の好ましい形態を図面の形式に示すが、本発明は、図示したとおりの構成ならびに手段に限定されないことを理解されたい。   For the purpose of illustrating the invention, there are shown in the drawings forms that are presently preferred. It should be understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown.

図面において、同一の要素は同じ参照符号によって参照される。図1は、本発明の1つ以上の態様を示すブロック図である。簡潔を期すと共に明確になるように、図1のブロック図は装置100の説明として本明細書において言及かつ記載される。しかし、この記載は同等の効力を有する1つ以上の方法のさまざまな態様に容易に適用できることを理解されたい。   In the drawings, identical elements are referred to by the same reference numerals. FIG. 1 is a block diagram illustrating one or more aspects of the present invention. For the sake of brevity and clarity, the block diagram of FIG. 1 is referred to and described herein as an illustration of the apparatus 100. However, it should be understood that this description can be readily applied to various aspects of one or more methods having equivalent efficacy.

装置100は、好ましくはマイクロプロセッサ101、第1レベルキャッシュメモリ102、下位レベルキャッシュメモリ103、およびさらに別のメモリ104を備えたマイクロプロセッサシステムである。マイクロプロセッサ101は、現在入手可能な公知のマイクロプロセッサデバイスまたは今後開発されるマイクロプロセッサデバイスのいずれを使用して実現することができる。   The apparatus 100 is preferably a microprocessor system comprising a microprocessor 101, a first level cache memory 102, a lower level cache memory 103, and a further memory 104. Microprocessor 101 can be implemented using any currently available or later developed microprocessor device.

第1レベルキャッシュメモリ102は、好ましくはL1キャッシュメモリ、すなわちマイクロプロセッサ101にオンチップに設けられた配置されているキャッシュメモリである。しかし、第1レベルキャッシュメモリ102がマイクロプロセッサ101にオンチップに配置されていることが好ましいものの、必ずしも第1レベルキャッシュメモリ102がオンチップで実装されていなくてもよい。実際、第1レベルキャッシュメモリ102は、マイクロプロセッサ101の外部にオフチップで配置されてもよい。   The first level cache memory 102 is preferably an L1 cache memory, that is, a cache memory arranged on-chip in the microprocessor 101. However, although it is preferable that the first level cache memory 102 is disposed on-chip in the microprocessor 101, the first level cache memory 102 does not necessarily have to be mounted on-chip. In fact, the first level cache memory 102 may be arranged off-chip outside the microprocessor 101.

好ましくは、第1レベルキャッシュメモリ102は、命令キャッシュメモリ102Aと、別個のデータキャッシュメモリ102Bとを有し、キャッシュメモリの各々は複数のキャッシュラインを備える。各キャッシュラインは、アドレスタグ、状態フラグおよびデータを有する。アクセス競合を回避するために、命令キャッシュとデータキャッシュとが分かれていることが好ましい。例えば、命令キャッシュメモリ102Aとデータキャッシュメモリ102Bとは、各々64キロバイトのダイレクトマップド構成として実装され得る。しかし、命令キャッシュメモリ102Aおよびデータキャッシュメモリ102Bのサイズは任意である点に留意されたい。別法として、第1レベルキャッシュメモリ102は1つのダイレクトマップドキャッシュメモリを有し、命令とデータの両方を格納してもよい点にも留意されたい。   Preferably, the first level cache memory 102 includes an instruction cache memory 102A and a separate data cache memory 102B, each of which includes a plurality of cache lines. Each cache line has an address tag, a status flag, and data. In order to avoid access contention, the instruction cache and the data cache are preferably separated. For example, the instruction cache memory 102A and the data cache memory 102B can each be implemented as a direct mapped configuration of 64 kilobytes. However, it should be noted that the sizes of the instruction cache memory 102A and the data cache memory 102B are arbitrary. It should also be noted that the first level cache memory 102 may have one direct mapped cache memory and store both instructions and data.

命令キャッシュメモリ102Aおよびデータキャッシュメモリ102Bのキャッシュラインは、マイクロプロセッサ101が発行した有効アドレスとしてアドレス指定され、有効アドレスの各々は、タグビットとインデックスビットとを含む。インデックスビットは、第1レベルキャッシュメモリ102の命令キャッシュメモリ102Aおよび/またはデータキャッシュメモリ102Bの特定のキャッシュラインに対するポインタとなる。キャッシュメモリのサイズが64キロバイトである上記の例においては、インデックスビットは、利用可能な全キャッシュラインをポイントするために0x0000〜0xFFFFの範囲をとり得る(最下位ビットの一部はオフセットとして使用される)。例示のための例として、マイクロプロセッサ101が発行した有効アドレスのインデックスビットから得られたポインタ(またはインデックス)110が0xAFF0であるとする。このポインタは、命令キャッシュメモリ102Aの命令Aを格納しているキャッシュラインをポイントしていると共に、データキャッシュメモリ102BのデータAを格納しているキャッシュラインをポイントしている。   The cache lines of instruction cache memory 102A and data cache memory 102B are addressed as valid addresses issued by microprocessor 101, each valid address including a tag bit and an index bit. The index bit becomes a pointer to a specific cache line of the instruction cache memory 102A and / or the data cache memory 102B of the first level cache memory 102. In the above example where the size of the cache memory is 64 kilobytes, the index bits can range from 0x0000 to 0xFFFF to point to all available cache lines (some of the least significant bits are used as offsets) ) As an example for illustration, assume that the pointer (or index) 110 obtained from the index bit of the effective address issued by the microprocessor 101 is 0xAFF0. This pointer points to the cache line storing the instruction A of the instruction cache memory 102A and also points to the cache line storing the data A of the data cache memory 102B.

下位レベルキャッシュメモリ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つのキャッシュラインをポイントしている。   The lower level cache memory 103 is an L2 cache memory in this embodiment, and is preferably an N-way set associative memory with N = 4. Therefore, the lower level cache memory 103 includes a first way set 105, a second way set 106, a third way set 107, and a fourth way set 108. Each wayset of the lower level cache memory 103 preferably has a plurality of cache lines, and each cache line is operable to store address tags, status flags and data (which may include instructions). In this exemplary embodiment of the invention, the size of the lower level cache memory 103 is preferably 256 kilobytes and the size of each wayset is 64 kilobytes. Therefore, each cache line of the instruction cache memory 102 A and the data cache memory 102 B of the first level cache memory 102 corresponds to each cache line of the four way sets 105, 106, 107, 108 of the lower level cache memory 103. Yes. In the above example, the pointer 110 (index value 0xAFF0) points to four cache lines of the lower level cache memory 103, that is, one cache line for each way set 105, 106, 107, 108.

下位レベルのキャッシュメモリ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)のうちの一方が真の状態を表し、論理ハイおよび論理ローのうちの他方が偽の状態を表す。   The status flag of each cache line in the lower level cache memory 103 preferably stores an L flag 112, which is a copy of the data stored in that cache line in the next level cache memory 103. , Indicates whether any of the cache lines of the first level cache memory 102 is stored. Note that each L flag may be more than one bit, but one bit is most preferred. Any rule may be used in accordance with the present invention, for example if the L flag (or bit) 112 is "true", preferably the data stored in that cache line of the lower level cache memory 103 Indicates that the corresponding cache line of the first level cache memory 102 stores the copy. In contrast, when the L flag 112 is “false”, the cache line of the first level cache memory 102 preferably stores a copy of the data stored in the cache line of the lower level cache memory 103. Indicates no. If L flag 112 is 1 bit, preferably one of logic high and logic low represents a true state and the other of logic high and logic low represents a false state. .

例えば、ウェイセット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によってインデックスされているキャッシュラインが格納していることを示す。
For example, the cache line 109A (indexed by 0xAFF0) of the wayset 105 stores a logical low (false) L bit 112A, which causes the data (data C) on this cache line to be stored in the data cache This indicates that the cache line indexed by 0xAFF0 in the memory 102B is not stored. The cache line 109B of the lower level cache memory 103 stores a logical high (true) L bit 112B. This is because the data (data A) of this cache line is stored in the data cache memory of the first level cache memory 102. Indicates that the cache line indexed by 0xAFF0 of 102B is stored.
The cache line 109C of the lower level cache memory 103 stores a logical low (false) L bit 112C. This is because the data (data B) of this cache line is indexed by 0xAFF0 of the data cache memory 102B. Indicates that the cache line is not stored. Further, the cache line 109D stores a logical high (true) L bit 112D. This is because the cache line data (instruction A) is stored in the cache line indexed by 0xAFF0 in the instruction cache memory 102A. Indicates that it is stored.

さらに別のメモリ104は、次段レベルのキャッシュメモリかメインメモリであり得る。実際、本発明では、階層型キャッシュメモリの、マイクロプロセッサ101とメインメモリとの間に存在する階層数はどのような値であってもよい。   Still another memory 104 may be a next level cache memory or main memory. In fact, in the present invention, the number of layers existing between the microprocessor 101 and the main memory in the hierarchical cache memory may be any value.

装置100の構造および動作は、図2をさらに参照すればより深く理解できるであろう。図2は、装置100によって実行されるか、あるいは装置100と関連する特定のアクションを示すフローチャートである。説明のために、第1レベルキャッシュメモリ102がL1キャッシュメモリであり、下位レベルキャッシュメモリ103がL2キャッシュメモリであり、さらに別のメモリ104はメインメモリであると想定する。   The structure and operation of the device 100 will be better understood with further reference to FIG. FIG. 2 is a flowchart illustrating certain actions performed by or associated with the device 100. For the sake of explanation, it is assumed that the first level cache memory 102 is an L1 cache memory, the lower level cache memory 103 is an L2 cache memory, and the further memory 104 is a main memory.

図1,2に示す方法ならびに装置の1つ以上の態様によれば、Lフラグ112の各々の状態は、第1レベルキャッシュメモリ102に記憶されているデータ(または命令)の関数(function)として制御される。Lフラグ112を使用して、下位レベルキャッシュメモリ103へのキャッシュラインのデータまたは命令の記憶を許可するかあるいは禁止するかを判定する。詳細に説明すると、下位レベルキャッシュメモリ103のあるキャッシュラインに記憶されているデータのコピーによって、第1レベルキャッシュメモリ102のキャッシュラインの対応するキャッシュラインがリフィルされているかどうかを示すために、好ましくは下位レベルキャッシュメモリ103の当該キャッシュラインのLフラグ112が真または偽にセットされる。   In accordance with one or more aspects of the method and apparatus shown in FIGS. 1 and 2, each state of the L flag 112 is a function of data (or instructions) stored in the first level cache memory 102. Be controlled. The L flag 112 is used to determine whether to permit or prohibit storage of cache line data or instructions in the lower level cache memory 103. More specifically, preferably, to indicate whether a copy of data stored in a cache line in the lower level cache memory 103 is refilling the corresponding cache line in the first level cache memory 102, The L flag 112 of the cache line in the lower level cache memory 103 is set to true or false.

図2に、この一般的な制御をさらに詳細に示す。アクション150において、L1キャッシュのヒットまたはミスのいずれが発生したかが判定される。キャッシュヒットが発生した場合、処理フローはアクション151に進み、ここで、要求されたデータが第1レベルキャッシュメモリ102から取得されて、マイクロプロセッサ101に提供される。キャッシュミスが発生したと判定された場合、処理フローはアクション152に進む。例えば、マイクロプロセッサ101が、第1レベルキャッシュメモリ102(L1キャッシュメモリ)に対し、データキャッシュメモリ102Bの0xAFF0によってインデックスされているキャッシュラインからデータCを要求するアクセス要求を出していると想定する。キャッシュミスが発生するのは、このキャッシュラインの状態フラグ(例えば有効フラグまたはビット)のいずれか1つが、このキャッシュラインに格納されているデータが無効であることを示している場合か、あるいはこのキャッシュラインのアドレスタグと有効アドレスのタグビットとが一致しない場合(このキャッシュラインに格納されているデータがデータCではない場合など)である。   FIG. 2 shows this general control in more detail. In action 150, it is determined whether an L1 cache hit or miss has occurred. If a cache hit occurs, the process flow proceeds to action 151 where the requested data is obtained from the first level cache memory 102 and provided to the microprocessor 101. If it is determined that a cache miss has occurred, the process flow proceeds to action 152. For example, it is assumed that the microprocessor 101 issues an access request for requesting data C from the cache line indexed by 0xAFF0 of the data cache memory 102B to the first level cache memory 102 (L1 cache memory). A cache miss occurs when one of the cache line status flags (eg, valid flag or bit) indicates that the data stored in this cache line is invalid, or this This is the case where the address tag of the cache line does not match the tag bit of the effective address (for example, the data stored in this cache line is not data C).

アクション152において、下位レベルキャッシュメモリ103の0xAFF0によってインデックスされているキャッシュライン109A,109B,109C,109Dがアクセスされ、(i)これらキャッシュラインのアドレスタグのいずれかが有効アドレスのタグビットと一致するか、および(ii)タグビットが一致するアドレスタグを格納しているキャッシュラインの有効フラグが、そのデータが有効であることを示しているかどうかが判定される。上記の条件のいずれも満たさない場合、L2キャッシュメモリ103はアクセス要求を満たすことができず、L2キャッシュミスが発生することになる(アクション154)。キャッシュライン109Aが有効なデータ(すなわちデータC)を格納しているため、L1キャッシュメモリ(およびマイクロプロセッサ101)によって要求されたデータは、L2キャッシュメモリのヒットとなり、処理フローはアクション154からアクション156に進む。   In action 152, the cache lines 109A, 109B, 109C, 109D indexed by 0xAFF0 of the lower level cache memory 103 are accessed, and (i) one of these cache line address tags matches the tag bit of the effective address. And (ii) whether the valid flag of the cache line storing the address tag with the matching tag bit indicates that the data is valid. If none of the above conditions is satisfied, the L2 cache memory 103 cannot satisfy the access request and an L2 cache miss occurs (action 154). Since the cache line 109A stores valid data (that is, data C), the data requested by the L1 cache memory (and the microprocessor 101) becomes a hit of the L2 cache memory, and the processing flow changes from action 154 to action 156. Proceed to

アクション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の対応するキャッシュラインに格納されているデータがもはや格納していないことを示すようになる。   In action 156, the cache line of the data cache memory 102B of the L1 cache memory 102 is refilled with the data stored in the cache line 109A of the L2 cache memory 103. More specifically, the cache line indexed by 0xAFF0 in the data cache memory 102B and storing data A is overwritten by the refill data (data C) stored in the cache line 109A of the L2 cache memory 103. . The process flow then proceeds to action 158 where the L bit 112A of the cache line 109A of the L2 cache memory 103 is set to true. This indicates that a copy of the data in the cache line 109A is stored in the corresponding cache line in the data cache memory 102B. Further, when the L bit 112B of the cache line 109B is set to false, a copy of the data stored in the cache line 109B (ie, data A) is copied to the data stored in the corresponding cache line in the data cache memory 102B. To indicate that it is no longer stored.

上記の例においては、マイクロプロセッサ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に進み、ここでデータリフィルシーケンスが開始される。   In the above example, the access request made by the microprocessor 101 results in a miss in the L1 cache memory 102. As a result, the access request made by the L1 cache memory 102 becomes a hit in the L2 cache memory 103. Hereinafter, a case will be described in which an access request made by the microprocessor 101 results in a miss in the L1 cache memory 102 and an access request made by the L1 cache memory 102 also results in a miss in the L2 cache memory 103. More specifically, it is assumed that the microprocessor 101 issues an access request for the data D indexed by 0xAFF0 to the L1 cache memory 102. In action 150, a L1 cache memory miss has occurred and processing proceeds to action 152. In action 152, the cache lines 109A-D indexed by 0xAFF0 are accessed and the process flow proceeds to action 154. In action 154, since none of the cache lines 109A-D indexed by 0xAFF0 stores data D, a miss in the L2 cache memory occurs. The process flow then proceeds to action 160. In action 160, the desired data (data D) is obtained from the cache memory or main memory at the next level. In this example, since it is assumed that another memory 104 is the main memory, desired data is acquired from the main memory. The process flow then proceeds to action 162 where the data refill sequence is started.

アクション162の詳細を議論する前に、本発明の1つ以上の態様によれば、L2キャッシュメモリ103のキャッシュラインのうち、無効なデータを格納しているキャッシュライン(すなわち、あるキャッシュラインの有効フラグが、そのキャッシュラインに記憶されているデータが無効なことを示している)に対するデータの上書きを許可することが望ましい。L2キャッシュメモリ103の、特定のポインタ110によってインデックスされたキャッシュライン(キャッシュライン109A〜Dなど)の全てが有効なデータを格納していると想定して、L2キャッシュメモリ103のあるキャッシュラインのLフラグが、L2キャッシュメモリ103のそのキャッシュラインに記憶されているデータのコピーを、L1キャッシュメモリ102のキャッシュラインのうちの対応するキャッシュラインが格納していることを示している場合、好ましくは、L2キャッシュメモリ103のそのキャッシュラインへのデータの上書きが禁止される。これに関する詳細は、図2のアクション162〜168に示されている。   Prior to discussing the details of action 162, according to one or more aspects of the present invention, the cache line of the L2 cache memory 103 that stores invalid data (ie, the validity of a cache line). It is desirable to allow overwriting of data for a flag (indicating that the data stored in the cache line is invalid). Assuming that all of the cache lines (cache lines 109A to 109D) indexed by the specific pointer 110 in the L2 cache memory 103 store valid data, the L of the cache line in which the L2 cache memory 103 is located If the flag indicates that the corresponding cache line of the cache lines of the L1 cache memory 102 stores a copy of the data stored in that cache line of the L2 cache memory 103, preferably Overwriting data in the cache line of the L2 cache memory 103 is prohibited. Details regarding this are shown in actions 162-168 of FIG.

アクション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の対応するキャッシュラインにもリフィルされる。   In action 162, it is determined whether all of the cache lines (indexed by 0xAFF0) of the L2 cache memory 103 store valid data. If one or more of the cache lines of the L2 cache memory 103 stores invalid data, the processing flow preferably branches to action 164 where the desired data (data D) is one of the cache lines. Will be overwritten. However, in this example, since it is assumed that any cache line in the L2 cache memory 103 stores valid data, the processing flow branches to action 166 as a result of the determination in action 162. In action 166, only one of the cache lines for which the corresponding L flag (or L bit) 112 is false is overwritten with the desired data (data D). In other words, the L flag 112 indicates that the corresponding cache line of the L1 cache memory 102 stores a copy of the data stored in the cache line corresponding to the L flag 112 of the L2 cache memory 103. If so, overwriting of the cache line in the L2 cache memory 103 is prohibited. Therefore, for example, since the corresponding L bits 112A and 112C of the cache lines 109A and 109C are false, desired data (data D) can be overwritten on the cache lines 109A and 109C. Assuming that the data in the cache line 109C in the L2 cache memory 103 is overwritten, the L bit 112C is set to true (action 168), and a copy of the data D corresponds to the data cache memory 102B in the L1 cache memory 102. Refilled to the cash line.

L2キャッシュメモリ103をリフィルする際に、L1キャッシュメモリ102のどのデータも無効にする必要がないため有利である。このように、メモリ使用効率の改善、処理スループットの向上、および処理データの品質向上を図ることができる。   When refilling the L2 cache memory 103, there is no need to invalidate any data in the L1 cache memory 102, which is advantageous. In this way, it is possible to improve memory use efficiency, improve processing throughput, and improve processing data quality.

次に、図3を参照すると、図3は、本発明の別の態様および実施形態を示すブロック図である。ここでも、簡潔を期すと共に明確になるように、図3のブロック図は装置200の説明として本明細書において言及かつ記載される。しかし、この記載は同じ効力(force)を有する1つ以上の方法のさまざまな態様に容易に適用できることを理解されたい。装置200は、好ましくはマイクロプロセッサデバイス201、第1レベルキャッシュメモリ202、次段レベルのキャッシュメモリ203、およびさらに別のメモリ104を有するマイクロプロセッサシステムである。   Reference is now made to FIG. 3, which is a block diagram illustrating another aspect and embodiment of the present invention. Again, for the sake of brevity and clarity, the block diagram of FIG. 3 is referred to and described herein as an illustration of the apparatus 200. However, it should be understood that this description is readily applicable to various aspects of one or more methods having the same force. The apparatus 200 is preferably a microprocessor system having a microprocessor device 201, a first level cache memory 202, a next level cache memory 203, and a further memory 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つのキャッシュラインをポイントしているとする。   Although the first level cache memory 202 preferably includes an instruction cache memory 202A and a separate data cache memory 202B, the present invention contemplates another embodiment in which the instruction cache memory and the data cache memory are integrated. I want you to understand that In any case, each of instruction cache memory 202A and data cache memory 202B is preferably implemented as an N = 2 N-way set associative cache memory. Therefore, the data cache memory 202B has a way set 204 and a way set 205, and the instruction cache memory 202A has a way set 206 and a way set 207. The size of each wayset 204-207 in the instruction cache memory 202A and data cache memory 202B is preferably 8 kilobytes, and each of these cache lines preferably stores address tags, status flags and data (which may include instructions). It is possible to operate. Therefore, the predetermined index (or pointer) 208 can take a value in the range of 0x0000 to 0x1FFF (13 bits) in order to index all the cache lines of the way sets 204, 205, 206, and 207. For the sake of explanation, it is assumed that the value of the pointer 208 is 0x0FF0 and points to one cache line for each way set 204, 205, 206, 207.

次段レベルのキャッシュメモリ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倍である。   The next level cache memory 203 is also preferably an N-way set associative cache memory with N = 8. Therefore, the next-level cache memory 203 includes a way set 209, a way set 210, a way set 211, a way set 212, a way set 213, a way set 214, a way set 215, and a way set 216. In this specification, these way sets are also referred to as set 0, set 1, set 2, set 3, set 4, set 5, set 6, and set 7. According to this embodiment of the present invention, each way set 209-216 of the next level cache memory 203 is preferably larger in size than each way set 204-207 of the first level cache memory 202. For example, the size of each way set 209 to 216 of the cache memory 203 at the next level is preferably 32 kilobytes. Therefore, the size of each way set 209 to 216 in the cache memory 203 at the next level is four times that of each way set 204 to 207 in the first level cache memory 202.

インデックス(またはポインタ)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にこの状態で渡される。   Note that the index (or pointer) 208A requires 15 bits in the range of 0x0000 to 0x7FFF to be able to access all cache lines of the next level cache memory 203. However, it has been described that the size of the pointer 208 is 13 bits of 0x0000 to 0x1FFF is sufficient to access all the cache lines of the first level cache memory 202. In an actual system, this apparent inconsistency is resolved as follows. When a cache miss occurs in the first level cache memory 202, the effective address is transferred to the next level cache memory 203 on the address bus. This address bus may have 32 bits of [31: 0], for example. Therefore, when the address is issued by the first level cache memory 202, the address bus bits [31:13] store the valid address tag bits, and the address bus bits [12: 0] are valid. Stores the index bit of the address. The effective address is passed from the first level cache memory 202 to the next level cache memory 203 in this state.

しかし、次段レベルのキャッシュメモリ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のいずれかを取り得る。   However, the cache memory 203 at the next level processes the bits [14: 0] of the address bus as bits storing the index bits of the pointer 208A indicating the target eight cache lines. Therefore, the bits [14:13] of the address bus (part of the bits processed by the first level cache memory 202 as tag bits) are used as index bits or part of the pointer 208A by the cache memory 203 at the next level. used. When bits [14:13] of the address bus are 00, the pointer 208A stores an index of 0x0FF0 and points to the lowest eight cache lines of the way sets 209 to 216. When bits [14:13] of the address bus are 01, the pointer 208A stores an index of 0x0FF0 + 0x2000, and points to the eight cache lines on one of the way sets 209 to 216. Similarly, when bits [14:13] of the address bus are 10, the pointer 208A stores an index of 0x0FF0 + 0x4000, and points to the upper eight cache lines next to the way sets 209 to 216. Finally, when bits [14:13] of the address bus are 11, the pointer 208A stores an index of 0x0FF0 + 0x6000 and points to the eight cache lines further above the way sets 209 to 216. For this reason, bits [14:13] of the address bus can be regarded as an index offset, and this index offset can be any of 0x0000, 0x2000, 0x4000, and 0x6000 in this example.

次段レベルのキャッシュメモリ203の各キャッシュラインは、好ましくはアドレスタグ、状態フラグおよびデータ(命令を含み得る)を記憶するように動作可能である。しかし、本発明の図1の実施形態とは異なり、図3の装置200は、好ましくは、次段レベルのキャッシュメモリ203は、各キャッシュラインにLフラグを有さない。この理由は、仮に各キャッシュラインがLフラグを有するとすると、異なるインデックスオフセットによってインデックスされているキャッシュラインに存在するそれぞれのLフラグの値を制御または変更することは不可能なためである。実際、一度に処理可能なのは、同じインデックスオフセットによってインデックスされた8つのキャッシュラインのみである。   Each cache line of the next level cache memory 203 is preferably operable to store address tags, status flags and data (which may include instructions). However, unlike the embodiment of FIG. 1 of the present invention, the apparatus 200 of FIG. 3 preferably has the next level cache memory 203 not having an L flag in each cache line. This is because, if each cache line has an L flag, it is impossible to control or change the value of each L flag present in the cache line indexed by a different index offset. In fact, only 8 cache lines indexed by the same index offset can be processed at a time.

本発明のこの実施形態に係る装置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フラグは、全てを一度に制御または変更することができる。   The apparatus 200 according to this embodiment of the present invention preferably includes an additional memory 203A, and the additional memory 203A is incorporated in the next-level cache memory 203, but is not included in the next-stage cache memory 203. It may be provided separately from the level cache memory 203. The additional memory 203A preferably has a plurality of memory lines, the number of which corresponds to the number of cache lines present in a given wayset of the first level cache memory 202. Thus, in the example of FIG. 3, the additional memory 203A preferably has an 8 kilobyte memory line. Each memory line of the additional memory 203A preferably has an L flag corresponding to each way set of the plurality of cache lines 209 to 216 of the cache memory 203 at the next level. In this example, each memory line has an L flag corresponding to each of the four cache lines of each way set 209 to 216, and the total of the L flags is 32. More generally, the number of L flags in each memory line of the additional memory 203A is as follows: N is the number of way sets in the first level cache memory 202, and M1 is the cache line in each way set in the first level cache memory 202. M2 / M1 × N, where M2 is the number of cache lines in each wayset of the cache memory 203 at the next level. In this way, all of the L flags corresponding to the value obtained by adding all the index offsets of the first level cache memory 202 to the predetermined index are included in one memory line of the additional memory 203A. For this reason, the L flag can be controlled or changed all at once.

次に、図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を格納していないため、キャッシュミスが発生する。   Next, the operation of the apparatus 200 of FIG. 3 will be described in more detail with an example. In this example in which the microprocessor 201 issues a valid address (or access request) to the first level cache memory 202 via, for example, a 32-bit address bus, it is assumed that the microprocessor 201 requests data C. . Data C is not stored in the first level cache memory 202 or the next level cache memory 203. Therefore, bits [31:13] of the address bus store tag bits corresponding to data (data C) requested by the microprocessor 201. Bits [12: 0] of the address bus store an index bit, and this index bit points to an individual cache line of the way sets 204 to 207 of the first level cache memory 202. In this example, the index bit is 0x0FF0. Therefore, the pointer 208 includes two cache lines storing the instruction A and the instruction B in the instruction cache memory 202A, and the data A and the data B in the data cache memory 202B. Are accessed. Since neither of the two cache lines of the accessed data cache memory 202B stores data C, a cache miss occurs.

キャッシュミスのため、第1レベルキャッシュメモリ202は下位レベルキャッシュメモリ203に有効アドレスを渡し、このキャッシュメモリ内でデータアクセス要求を満たそうと試みる。第1レベルキャッシュメモリ202は、アドレスバスのビット[12:0]を有効アドレスのインデックスとして使用していたのに対し、次段レベルのキャッシュメモリ203は、アドレスバスのビット[14:0]を、有効アドレスのインデックスビットを格納しているビットとして処理する。本例においては、アドレスバスのビット[14:13]の値が01であると想定する。この値は0x2000のインデックスオフセットに対応している。このため、ポインタ208Aは0x0FF0+0x2000の値をとることとなり、下位レベルキャッシュメモリ203のウェイセット209〜216の対応する8つのキャッシュラインをポイントする。   Due to a cache miss, the first level cache memory 202 passes a valid address to the lower level cache memory 203 and attempts to satisfy the data access request in this cache memory. The first level cache memory 202 uses the address bus bits [12: 0] as an effective address index, whereas the next level cache memory 203 uses the address bus bits [14: 0]. The index bit of the effective address is processed as a stored bit. In this example, it is assumed that the value of bits [14:13] of the address bus is 01. This value corresponds to an index offset of 0x2000. Therefore, the pointer 208A takes a value of 0x0FF0 + 0x2000, and points to the corresponding eight cache lines of the way sets 209 to 216 of the lower level cache memory 203.

アクセスされた下位レベルキャッシュメモリ203の8つのキャッシュラインは、いずれもデータCを格納していないため、キャッシュミスが発生する。このため、下位レベルキャッシュメモリ203は、さらに別のメモリ104(1つ以上のさらに別のキャッシュメモリおよび/またはメインメモリであり得る)に有効アドレスを渡す。その後、キャッシュメモリ202,203の各々にリフィルするため、データCが返される。   Since none of the eight cache lines of the accessed lower level cache memory 203 stores data C, a cache miss occurs. Thus, the lower level cache memory 203 passes the effective address to yet another memory 104 (which may be one or more further cache memories and / or main memory). Thereafter, data C is returned for refilling each of the cache memories 202 and 203.

下位レベルキャッシュメモリ203のうち、0x0FF0+0x2000によってインデックスされているキャッシュラインのうち、どのキャッシュラインにリフィルデータ(データC)を入れるかが判定される。下位レベルキャッシュメモリ203のキャッシュラインの1つ以上が無効なデータを格納している場合、リフィルデータはこのようなキャッシュラインの1つに上書きされることが好ましい。しかし、本例では、下位レベルキャッシュメモリ203のいずれのキャッシュラインも有効なデータを格納している(すなわち、キャッシュラインの各有効フラグが、全てのデータが有効であることを示している)と想定している。このため、好ましくは、第1レベルキャッシュメモリ202にキャッシュされていないデータをキャッシュラインの1つ以上が格納しているかどうかが判定され、未キャッシュのデータを格納しているキャッシュラインがあれば、そのようなキャッシュラインの1つにリフィルデータが記憶される。   In the lower level cache memory 203, it is determined which of the cache lines indexed by 0x0FF0 + 0x2000 is to be filled with the refill data (data C). If one or more of the cache lines in the lower level cache memory 203 stores invalid data, the refill data is preferably overwritten on one such cache line. However, in this example, any cache line in the lower level cache memory 203 stores valid data (that is, each valid flag of the cache line indicates that all data is valid). Assumed. Therefore, preferably, it is determined whether one or more of the cache lines stores data that is not cached in the first level cache memory 202, and if there is a cache line storing uncached data, Refill data is stored in one such cache line.

これを行うために、付加的なメモリ203Aの0x0FF0(オフセットなし)によってインデックスされているメモリラインがアクセスされる。全てのメモリラインと同様に、このメモリラインは32個のLフラグを格納しており、本例ではLフラグは1ビットを有する。真のビット(論理ハイ)は、下位レベルキャッシュメモリ203の対応するキャッシュラインのデータが、第1レベルキャッシュメモリ202にもキャッシュされていることを示す。偽(論理ロー)のレベルは、下位レベルキャッシュメモリ203の対応するキャッシュラインのデータが、第1レベルキャッシュメモリ202にキャッシュされていないことを示す。   To do this, the memory line indexed by 0x0FF0 (no offset) in the additional memory 203A is accessed. As with all memory lines, this memory line stores 32 L flags, which in this example have 1 bit. A true bit (logic high) indicates that the data of the corresponding cache line in the lower level cache memory 203 is also cached in the first level cache memory 202. A false (logical low) level indicates that the data of the corresponding cache line in the lower level cache memory 203 is not cached in the first level cache memory 202.

本例においては、0x0FF0によってインデックスされているメモリラインのビット[15:8]が、下位レベルキャッシュメモリ203の、0x0FF0+0x2000によってインデックスされている8つのキャッシュラインに対応するLビットを格納している。これらのLビットの値は、Lビット222(メモリラインの[13]ビット)を除いて全て偽であり、この偽のビットは、下位レベルキャッシュメモリ203のキャッシュライン218に対応している。キャッシュライン218は、データ(命令A)を格納しており、このデータは、第1レベルキャッシュメモリ202の命令キャッシュメモリ202Aにキャッシュされている。より詳細には、0x0FF0によってインデックスされている命令キャッシュメモリ202Aのウェイセット207のキャッシュラインに命令Aが記憶されている。   In this example, bits [15: 8] of the memory line indexed by 0x0FF0 store L bits corresponding to the eight cache lines indexed by 0x0FF0 + 0x2000 in the lower level cache memory 203. The values of these L bits are all false except for the L bit 222 ([13] bit of the memory line), and this false bit corresponds to the cache line 218 of the lower level cache memory 203. The cache line 218 stores data (instruction A), and this data is cached in the instruction cache memory 202 A of the first level cache memory 202. More specifically, the instruction A is stored in the cache line of the way set 207 of the instruction cache memory 202A indexed by 0x0FF0.

本発明によれば、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は同時に変更されるという点に留意されたい。   According to the present invention, since the L bit 222 is true, the cache line 218 is protected, and overwriting of refill data (data C) to the cache line is prohibited. Therefore, the refill data (data C) is refilled to one of the other cache lines indexed by 0x0FF0 + 0x2000 in the lower level cache memory 203. For example, the refill data can be overwritten on the cache line of the way set 212. Further, the refill data (data C) is written into one of the cache lines indexed by 0x0FF0 (such as the cache line of the way set 204) in the data cache memory 202B of the first level cache memory 202. For this reason, the data (data B) stored in the cache line of the way set 204 is overwritten by the refill data (data C). Bit [11] of the memory line indexed by 0x0FF0 in the additional memory 203A is set to true so that the data in the corresponding cache line in the wayset 212 of the lower level cache memory 203 is in the first level cache It is shown that the memory 202 is cached. Since the cache line indexed by 0x0FF0 in the wayset 204 of the data cache memory 202B no longer stores data B, an additional L bit change in the memory 203A must also be made. More specifically, a copy of data B is stored in the cache line 221 of the way set 209 of the lower level cache memory 203. This cache line 221 is indexed by 0x0FF0 + 0x6000, so it is necessary to update the L bit 225 corresponding to this cache line. This L bit 225 is present in bit [24] of the memory line indexed by 0x0FF0 in the additional memory 203A. Specifically, the L bit 225 is set from a false (logic low) state to a true (logic high) state. Note that the L bits 222, 225 are changed simultaneously.

下位レベルキャッシュメモリ203をリフィルする際に、第1レベルキャッシュメモリ202のどのデータも無効にする必要がないため有利である。このように、メモリ使用効率の改善、処理スループットの向上、および処理データの品質向上を図ることができる。   When refilling the lower level cache memory 203, it is advantageous because no data in the first level cache memory 202 need be invalidated. In this way, it is possible to improve memory use efficiency, improve processing throughput, and improve processing data quality.

次に、図4を参照すると、図4は、本発明のさらに別の態様および実施形態を示すブロック図である。ここでも、簡潔を期すと共に明確になるように、図4のブロック図は装置300の説明として本明細書において言及かつ記載される。しかし、この記載は同じ効力(force)を有する1つ以上の方法のさまざまな態様に容易に適用できることを理解されたい。   Reference is now made to FIG. 4, which is a block diagram illustrating yet another aspect and embodiment of the present invention. Again, for the sake of brevity and clarity, the block diagram of FIG. 4 is referred to and described herein as an illustration of the apparatus 300. However, it should be understood that this description is readily applicable to various aspects of one or more methods having the same force.

装置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つのキャッシュラインをポイントしているとする。   The apparatus 300 is preferably a microprocessor system having a microprocessor device 301, a first level cache memory 202, a next level cache memory 303, and a further memory 104. The first level cache memory 202 is preferably substantially the same as the first level cache memory 202 described above and shown in FIG. For this reason, the first level cache memory 202 preferably has an instruction cache memory 202A and a data cache memory 202B, and each is implemented as an N = 2 set of associative cache memory. Each wayset 204-207 in the instruction cache memory 202A is preferably 8 kilobytes in size, and each of these cache lines is preferably operable to store address tags, status flags and data (which may include instructions). It is. Therefore, the pointer 208 takes a value in the range of 0x0000 to 0x1FFF (13 bits) in order to index each cache line of the way sets 204 to 207. For the sake of explanation, it is assumed that the value of the pointer 208 is 0x0FF0 and points to one cache line for each way set 204-207.

次段レベルのキャッシュメモリ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ビットが必要となる。   The next level cache memory 303 is preferably substantially the same as the cache memory 203 described above and shown in FIG. 3 except for the additional memory 303A (this will be described in detail later in this specification). . For this reason, the lower level cache memory 303 is preferably an N-way set associative cache memory, which has eight way sets 209-216. These can also be referred to herein as set 0 to set 7, respectively. Furthermore, the size of each way set 209 to 216 of the cache memory 303 at the next level is preferably 32 kilobytes. That is, the size of each way set 209 to 216 is four times that of each way set 204 to 207 of the first level cache memory 202. Therefore, 15 bits in the range of 0x0000 to 0x7FFF are required for the index 208A to access any cache line in the cache memory 303 at the next level.

図3の装置200の場合と同様に、第1レベルキャッシュメモリ202の全てのキャッシュラインにアクセスするには、ポインタ208のサイズが0x0000〜0x1FFFの13ビットで充分である。しかし、下位レベルキャッシュメモリ303は、第1レベルキャッシュメモリ202から提供された13ビットと有効アドレスのタグビットの最下位の2ビットと併せて、15ビットのインデックスビットとして使用する。このように、第1レベルキャッシュメモリ202から受け取った13ビットのインデックスビットに、タグビットからの追加の2ビットから得たインデックスオフセットを加えることによって、下位レベルキャッシュメモリ303のキャッシュラインに対するインデックスが得られる。本例においては、インデックスオフセットは0x0000、0x2000、0x4000、および0x6000のいずれかの値をとり得る。   As with the device 200 of FIG. 3, 13 bits with a size of the pointer 208 of 0x0000 to 0x1FFF are sufficient to access all the cache lines of the first level cache memory 202. However, the lower level cache memory 303 uses the 13 bits provided from the first level cache memory 202 and the least significant 2 bits of the tag bits of the effective address as 15 index bits. In this way, the index for the cache line of the lower level cache memory 303 is obtained by adding the index offset obtained from the additional 2 bits from the tag bit to the 13 index bits received from the first level cache memory 202. It is done. In this example, the index offset can take any value of 0x0000, 0x2000, 0x4000, and 0x6000.

下位レベルキャッシュメモリ303の各キャッシュラインは、好ましくはアドレスタグ、状態フラグおよびデータ(命令を含み得る)を記憶するように動作可能である。図3のキャッシュメモリ203と同様に、図4の下位レベルキャッシュメモリ303は、好ましくは、各キャッシュシュラインにLフラグを有さない。これに代わって、Lフラグを有するのは付加的なメモリ303Aであり、付加的なメモリ303Aは、下位レベルキャッシュメモリ303に内蔵されていても、下位レベルキャッシュメモリ303とは別に設けられていてもよい。   Each cache line of the lower level cache memory 303 is preferably operable to store address tags, status flags and data (which may include instructions). Similar to the cache memory 203 of FIG. 3, the lower level cache memory 303 of FIG. 4 preferably does not have an L flag in each cache shrine. Instead, the additional memory 303A has the L flag. Even if the additional memory 303A is built in the lower level cache memory 303, it is provided separately from the lower level cache memory 303. Also good.

より詳細には、付加的なメモリ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つを取り得る。   More specifically, the additional memory 303A preferably has a plurality of memory lines, and the number of memory lines is equal to the number of cache lines included in each wayset 204-207 of the first level cache memory 202. It corresponds. Thus, in the example of FIG. 4, the additional memory 303A preferably has an 8 kilobyte memory line. Each memory line of the additional memory 303A preferably has a respective bit group associated with each wayset 204-207 of the first level cache memory 202. For this reason, each bit group of each memory line of the additional memory 303 </ b> A is associated with one of the cache lines of the first level cache memory 202. Each bit group preferably has an L flag 350, an offset bit 352 and a way set bit 354. Similar to the above embodiment of the present invention, the L flag 350 stores a copy of data stored in a predetermined cache line of the lower level cache memory 303 in a corresponding cache line of the first level cache memory 202. Indicates whether or not In this embodiment of the present invention, a particular cache line associated with an L flag 350 includes an index (provided by the first level cache memory 202) and its group of index offset bits 352 and wayset bits 354. Pointed by a combination of Therefore, the cache line of the lower level cache memory 303 associated with a certain bit group of the additional memory 303A uses the index provided from the first level cache memory 202 as the index offset bit 352 (each way set 209˜ This is determined by selecting the way sets 209 to 216 corresponding to the way set bits 354 after offsetting them by a value corresponding to a total of eight cache lines, one from 216 cache lines. In this example, the index offset bit 352 has four values of 00 (corresponding to the index offset 0x0000), 01 (corresponding to the index offset 0x2000), 10 (corresponding to the index offset 0x4000), and 11 (corresponding to the index offset 0x6000). Can take either. The way set bits 354 are 000 (corresponding to set 0), 001 (corresponding to set 1), 010 (corresponding to set 2), 011 (corresponding to set 3), ..., 111 (corresponding to set 7). It can take any one of the values.

このため、付加的なメモリ303Aの各メモリラインは、下位レベルキャッシュメモリ303の複数のキャッシュライン(すなわち、各インデックスと、各ビット群のインデックスオフセットビット352およびウェイセットビット354とに対応したキャッシュライン)に対するLフラグ350をそれぞれ有する。さらに、付加的なメモリ303Aの各メモリラインの各ビット群は、第1レベルキャッシュメモリ202のウェイセット204〜207のうちの特定の1つに対応している。第1レベルキャッシュメモリ202のウェイセットの個数、下位レベルキャッシュメモリ303のウェイセットの個数およびサイズ、ならびに各Lフラグ350のサイズ(すなわち1ビット)を考慮すると、付加的なメモリ303Aの各メモリラインは、24ビット[23:0]を有する。   Therefore, each memory line of the additional memory 303A is a cache line corresponding to a plurality of cache lines of the lower level cache memory 303 (that is, each index and index offset bit 352 and way set bit 354 of each bit group). ) For each of the L flags 350. Further, each bit group of each memory line of the additional memory 303 </ b> A corresponds to a specific one of the way sets 204 to 207 of the first level cache memory 202. Considering the number of way sets in the first level cache memory 202, the number and size of way sets in the lower level cache memory 303, and the size (ie, 1 bit) of each L flag 350, each memory line of the additional memory 303A Has 24 bits [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を格納していないため、キャッシュミスが発生する。   Next, the operation of the apparatus 300 of FIG. 4 will be described in more detail with an example. In this example in which the microprocessor 301 issues a valid address (or access request) to the first level cache memory 202 via, for example, a 32-bit address bus, the data C existing in the index 0x0FF0 Assuming that This data (data C) is not stored in the first level cache memory 202 or the lower level cache memory 303. Therefore, bits [31:13] of the address bus store tag bits corresponding to data (data C) requested by the microprocessor 301. Bits [12: 0] of the address bus store an index bit, and this index bit points to an individual cache line of the way sets 204 to 207 of the first level cache memory 202. In this example, the index bit is 0x0FF0, so that the pointer 208 includes two cache lines storing instruction A and instruction B in the instruction cache memory 202A and / or data A in the data cache memory 202B. Two cache lines storing data B are accessed. Since neither of the two cache lines of the accessed data cache memory 202B stores data C, a cache miss occurs.

キャッシュミスのため、第1レベルキャッシュメモリ202は下位レベルキャッシュメモリ303に有効アドレスを渡し、このキャッシュメモリ内でデータアクセス要求を満たそうと試みる。次段レベルのキャッシュメモリ303は、アドレスバスのビット[14:0]を、有効アドレスのインデックスビットを格納しているビットとして使用する。本例においては、アドレスバスのビット[14:13]の値が01であると想定する。この値は0x2000のインデックスオフセットに対応している。このため、ポインタ208Aは0x0FF0+0x2000の値をとることとなり、下位レベルキャッシュメモリ203のウェイセット209〜216の対応する8つのキャッシュラインをポイントする。   Due to a cache miss, the first level cache memory 202 passes a valid address to the lower level cache memory 303 and attempts to satisfy the data access request in this cache memory. The cache memory 303 at the next level uses bits [14: 0] of the address bus as bits storing index bits of effective addresses. In this example, it is assumed that the value of bits [14:13] of the address bus is 01. This value corresponds to an index offset of 0x2000. Therefore, the pointer 208A takes a value of 0x0FF0 + 0x2000, and points to the corresponding eight cache lines of the way sets 209 to 216 of the lower level cache memory 203.

アクセスされた下位レベルキャッシュメモリ303の8つのキャッシュラインは、いずれもデータCを格納していないため、キャッシュミスが発生する。このため、下位レベルキャッシュメモリ303は、さらに別のメモリ104(1つ以上のさらに別のキャッシュメモリおよび/またはメインメモリであり得る)に有効アドレスを渡す。その後、キャッシュメモリ202,303の各々にリフィルするため、データCが返される。   Since none of the eight cache lines of the accessed lower level cache memory 303 stores data C, a cache miss occurs. Thus, the lower level cache memory 303 passes the effective address to yet another memory 104 (which may be one or more further cache memories and / or main memory). Thereafter, data C is returned for refilling each of the cache memories 202 and 303.

下位レベルキャッシュメモリ303のうち、0x0FF0+0x2000によってインデックスされているキャッシュラインのうち、どのキャッシュラインにリフィルデータ(データC)を入れるかが判定される。下位レベルキャッシュメモリ303のキャッシュラインの1つ以上が無効なデータを格納している場合、リフィルデータはこのようなキャッシュラインの1つに上書きされることが好ましい。しかし、本例では、下位レベルキャッシュメモリ303のどのキャッシュラインも有効なデータを格納していると想定している。このため、好ましくは、第1レベルキャッシュメモリ202にキャッシュされていないデータをキャッシュラインの1つ以上が格納しているかどうかが判定され、未キャッシュのデータを格納しているキャッシュラインがあれば、そのようなキャッシュラインの1つにリフィルデータが記憶される。   In the lower level cache memory 303, it is determined which of the cache lines indexed by 0x0FF0 + 0x2000 is to be filled with the refill data (data C). If one or more of the cache lines in the lower level cache memory 303 stores invalid data, the refill data is preferably overwritten on one such cache line. However, in this example, it is assumed that any cache line in the lower level cache memory 303 stores valid data. Therefore, preferably, it is determined whether one or more of the cache lines stores data that is not cached in the first level cache memory 202, and if there is a cache line storing uncached data, Refill data is stored in one such cache line.

これを行うために、付加的なメモリ303Aの0x0FF0(オフセットなし)によってインデックスされているメモリラインがアクセスされる。全てのメモリラインと同様に、このメモリラインは4個のLフラグ350A〜Dを格納している。各Lフラグは1ビットであり、下位レベルキャッシュメモリ303の4つのキャッシュラインに対応している。真のビット(論理ハイ)は、下位レベルキャッシュメモリ303の対応するキャッシュラインのデータが、第1レベルキャッシュメモリ202にもキャッシュされていることを示す。偽(論理ロー)のレベルは、下位レベルキャッシュメモリ303の対応するキャッシュラインのデータが、第1レベルキャッシュメモリ202にキャッシュされていないことを示す。   To do this, the memory line indexed by 0x0FF0 (no offset) in the additional memory 303A is accessed. As with all memory lines, this memory line stores four L flags 350A-D. Each L flag is 1 bit and corresponds to four cache lines of the lower level cache memory 303. A true bit (logic high) indicates that the data of the corresponding cache line in the lower level cache memory 303 is also cached in the first level cache memory 202. A false (logical low) level indicates that the data of the corresponding cache line in the lower level cache memory 303 is not cached in the first level cache memory 202.

この例では、唯一のインデックスオフセットビット352Dは01であり、この値は0x2000のオフセットに対応している。このオフセットと、第1レベルキャッシュメモリ202から提供されたインデックスおよびウェイセットビット354D(セット5に対応)の組み合わせとによって、このビット群が、下位レベルキャッシュメモリ303のキャッシュライン321に関連付けられていることが示される。このビット群のLビット350Dは真であり、リフィルデータ(データC)によるキャッシュライン321の上書きが禁止されていることを示している。これに対し、下位レベルキャッシュメモリ303の、0x0FF0+0x2000によってインデックスされている他のどのキャッシュライン(キャッシュライン358など)にもデータをリフィルすることができる。   In this example, the only index offset bit 352D is 01, which corresponds to an offset of 0x2000. This bit group is associated with the cache line 321 of the lower level cache memory 303 by the combination of the offset and the index provided from the first level cache memory 202 and the way set bit 354D (corresponding to the set 5). It is shown. The L bit 350D of this bit group is true, indicating that overwriting of the cache line 321 with refill data (data C) is prohibited. On the other hand, data can be refilled to any other cache line (cache line 358 or the like) indexed by 0x0FF0 + 0x2000 in the lower level cache memory 303.

リフィルデータ(データ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と関連付けられる。   The refill data (data C) is written to one of the cache lines (such as the cache line 352 of the way set 204) indexed by 0x0FF0 in the data cache memory 202B of the first level cache memory 202. For this reason, the data (data B) originally stored in the cache line 352 is overwritten by the refill data (data C). Since cache line 352 indexed by 0x0FF0 in wayset 204 of data cache memory 202B no longer stores data B, an additional L bit 350 change in memory 303A must also be made. More specifically, a copy of data B is stored in the cache line 324 of the way set 209 of the lower level cache memory 303. This cache line 324 is indexed by 0x0FF0 + 0x6000, so it is necessary to update the L bit 350A corresponding to this cache line 324. This L bit 350A is present in bit [5] of the memory line indexed by 0x0FF0 in the additional memory 303A. In fact, the L bit 350A forms a group with an index offset bit 352A having a value of 11 and a way set bit 354A having a value of 000. That is, they point to the cache line 324 of the lower level cache memory 303. In order to properly update the L bit associated with the cache lines 358 and 324, the index offset bit 352 and the way set bit 354 associated with the way set 104 of the first level cache memory 202 are updated. More specifically, the index offset bit 352A is changed from 11 to 01, and the way set bit 354A is changed from 000 to 011. Thus, this bit group is associated with the cache line 358 instead of the cache line 324 of the lower level cache memory 303.

下位レベルキャッシュメモリ303をリフィルする際に、第1レベルキャッシュメモリ202のどのデータも無効にする必要がないため有利である。このように、メモリ使用効率の改善、処理スループットの向上、および処理データの品質向上を図ることができる。   When refilling the lower level cache memory 303, there is no need to invalidate any data in the first level cache memory 202. In this way, it is possible to improve memory use efficiency, improve processing throughput, and improve processing data quality.

本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は、本発明の原理および用途の例を示すものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨および範囲から逸脱することなく、これら例示的な実施形態を種々に変更したり、上記以外の構成を考案し得ることが理解されよう。   Although the invention has been described herein using specific embodiments, it is to be understood that these embodiments are merely illustrative of the principles and applications of the present invention. For this reason, it will be understood that these exemplary embodiments may be variously modified and other configurations may be devised without departing from the spirit and scope of the invention as set forth in the appended claims.

本発明の1つ以上の実施形態による、階層型キャッシュメモリの制御に適する1つ以上の方法および装置の態様を示すブロック図である。FIG. 2 is a block diagram illustrating aspects of one or more methods and apparatus suitable for controlling a hierarchical cache memory in accordance with one or more embodiments of the present invention. 本発明の実施形態の1つ以上によって実行および/または実装され得る特定の動作/機能を示すフローチャートである。6 is a flowchart illustrating certain operations / functions that may be performed and / or implemented by one or more of the embodiments of the present invention. 本発明の1つ以上の別の実施形態による、階層型キャッシュメモリの制御に適する1つ以上の別法による方法および装置の別の態様を示すブロック図である。FIG. 6 is a block diagram illustrating another aspect of one or more alternative methods and apparatus suitable for controlling a hierarchical cache memory, in accordance with one or more alternative embodiments of the present invention. 本発明の1つ以上の別の実施形態による、階層型キャッシュメモリの制御に適する1つ以上の方法および装置の別の態様を示すブロック図である。FIG. 5 is a block diagram illustrating another aspect of one or more methods and apparatus suitable for controlling a hierarchical cache memory, in accordance with one or more alternative embodiments of the present invention.

符号の説明Explanation of symbols

101 マイクロプロセッサ
102、103 キャッシュメモリ
104〜107 ウェイセット
109A〜D キャッシュライン
110 ポインタ
112 フラグ
202 レベルキャッシュメモリ
203 キャッシュメモリ
301 マイクロプロセッサ
303 キャッシュメモリ
303A 付加的なメモリ
324 キャッシュライン
350 ビット
350 フラグ
352 オフセットビット
352 キャッシュライン
354 ウェイセットビット
358 キャッシュライン
101 Microprocessor 102, 103 Cache memory 104-107 Wayset 109A-D Cache line 110 Pointer 112 Flag 202 Level cache memory 203 Cache memory 301 Microprocessor 303 Cache memory 303A Additional memory 324 Cache line 350 Bit 350 Flag 352 Offset bit 352 cache line 354 way set bit 358 cache line

Claims (20)

複数のウェイセット及び複数のキャッシュラインが関連付けられているとともに、前記複数のキャッシュラインの各々がアドレスタグおよびデータを記憶するように動作可能とされた第1レベルキャッシュメモリを有し、
複数のウェイセット及び複数のキャッシュラインが関連付けられるとともに、前記複数のキャッシュラインの各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能とされた次段レベルのキャッシュメモリを有し、更に、
前記次段レベルのキャッシュメモリに関連付けられるとともに複数のメモリラインを備えた付加的なメモリを有し、前記メモリラインの数は前記第1レベルキャッシュメモリの与えられたセットに含まれるキャッシュラインの数に対応するものであり、
前記第1レベルキャッシュメモリの各キャッシュラインにはインデックスが関連付けられており、前記付加的なメモリの各メモリラインは、それぞれ次段レベルのキャッシュメモリの各ウェイセットの複数のキャッシュラインに対してのLフラグを含み、所定のインデックスに第1レベルキャッシュメモリのインデックスオフセットを加算した値に対応するLフラグの全てが、前記付加的なメモリの1つのメモリラインに含まれ、かつ、前記次段レベルのキャッシュメモリはその各キャッシュラインに対応するLフラグを含まない、装置。
A plurality of way sets and a plurality of cache lines are associated, each of the plurality of cache lines having a first level cache memory operable to store address tags and data;
A plurality of way sets and a plurality of cache lines are associated, each of the plurality of cache lines having a next level cache memory operable to store address tags, status flags and data; ,
An additional memory associated with the next level cache memory and having a plurality of memory lines, wherein the number of memory lines is the number of cache lines included in a given set of the first level cache memory Corresponding to
An index is associated with each cache line of the first level cache memory, and each memory line of the additional memory is associated with a plurality of cache lines of each way set of the cache memory at the next level. All of the L flags corresponding to the value obtained by adding the index offset of the first level cache memory to a predetermined index are included in one memory line of the additional memory, and the next level The cache memory does not include an L flag corresponding to each cache line.
前記付加的なメモリの前記メモリラインの数は、前記第1レベルキャッシュメモリの所定のウェイセットに含まれるキャッシュラインの数に等しい、請求項1記載の装置。   The apparatus of claim 1, wherein the number of memory lines of the additional memory is equal to the number of cache lines included in a predetermined wayset of the first level cache memory. 前記第1レベルキャッシュメモリにはN個のウェイセットが含まれ、前記次段レベルのキャッシュメモリにはM個のウェイセットが含まれ、MはNよりも大きい、請求項1記載の装置。   2. The apparatus of claim 1, wherein the first level cache memory includes N way sets, the next level cache memory includes M way sets, and M is greater than N. Nが2でMが8である請求項3記載の装置。   The apparatus of claim 3 wherein N is 2 and M is 8. 前記所定のインデックスに関連付けられた全てのLフラグは一度に制御できる、請求項1記載の装置。   The apparatus of claim 1, wherein all L flags associated with the predetermined index can be controlled at one time. 前記所定のインデックスに関連付けられた全てのLフラグは一度に変更できる、請求項1記載の装置。   The apparatus of claim 1, wherein all L flags associated with the predetermined index can be changed at a time. 前記付加的なメモリのそれぞれのLフラグが、該Lフラグに対応する次段レベルのキャッシュメモリのキャッシュライン内に記憶されたデータによって、第1レベルキャッシュメモリのキャッシュラインのいずれかがリフィルされたかどうかを示すよう動作可能なプロセッサを更に含む、請求項1記載の装置。 Whether one of the cache lines of the first level cache memory has been refilled by the data stored in the cache line of the next level cache memory corresponding to each L flag of the additional memory The apparatus of claim 1, further comprising a processor operable to indicate whether. 前記プロセッサは、更に、前記付加的なメモリの各所定のメモリラインの前記Lフラグを実質的に同時にセットするよう動作可能である、請求項7記載の装置。   The apparatus of claim 7, wherein the processor is further operable to set the L flag of each predetermined memory line of the additional memory substantially simultaneously. 前記次段レベルのキャッシュメモリ内の各ウェイセットは、前記第1レベルキャッシュメモリ内の各ウェイセットよりも大きい、請求項1記載の装置。   2. The apparatus of claim 1, wherein each way set in the next level cache memory is larger than each way set in the first level cache memory. 前記次段レベルのキャッシュメモリ内の各ウェイセットは、前記第1レベルキャッシュメモリ内の各ウェイセットの少なくとも4倍以上である、請求項9記載の装置。   10. The apparatus of claim 9, wherein each wayset in the next level cache memory is at least four times greater than each wayset in the first level cache memory. 前記第1レベルキャッシュメモリにアクセスするための第1インデックスと前記次段レベルのキャッシュメモリにアクセスするための第2インデックスとを有し、前記第1レベルキャッシュメモリにアクセスするために前記第1インデックスが要求するビット数は、前記次段レベルのキャッシュメモリ内にアクセスするために前記第2インデックスが要求するビット数よりも少ない、請求項9記載の装置。   A first index for accessing the first level cache memory; and a second index for accessing the next level cache memory; and the first index for accessing the first level cache memory. 10. The apparatus of claim 9, wherein the number of bits required by the second index is less than the number of bits required by the second index to access the next level cache memory. 前記第1レベルキャッシュメモリと前記次段レベルのキャッシュメモリとに論理的に関連付けられたアドレスバスを有し、
前記第1レベルキャッシュメモリでキャッシュミスが発生したときに前記次段レベルのキャッシュメモリに前記アドレスバスを通じて有効アドレスが渡され、前記アドレスバス内の第1ビットセットが前記有効アドレスのタグビットを含み、前記アドレスバス内の第2ビットセットが前記有効アドレスのインデックスビットを含む、請求項1記載の装置。
An address bus logically associated with the first level cache memory and the next level cache memory;
Said cache miss in first level cache memory is valid address is passed through the address bus to the next stage level cache memory when they occur, the first bit set in said address bus comprises a tag bit of the effective address The apparatus of claim 1, wherein a second set of bits in the address bus includes an index bit of the effective address.
前記次段レベルのキャッシュメモリは、前記ウェイセットの少なくとも選択された一つ内のキャッシュラインのうち選択されたものにアクセスするために、前記第2ビットセットと、前記第1ビットセットの少なくとも一部と、を使用し、前記次段レベルのキャッシュメモリは、前記第2ビットセットのインデックスビットを拡張するために前記第1ビットセットの少なくとも一部をインデックスビットとして扱う、請求項12記載の装置。 The next-level cache memory has at least one of the second bit set and the first bit set to access a selected one of the cache lines in at least one selected one of the way sets. And the next level cache memory treats at least a portion of the first bit set as index bits to extend an index bit of the second bit set. . 複数のウェイセット及び複数のキャッシュラインが関連付けられているとともに、前記複数のキャッシュラインの各々がアドレスタグおよびデータを記憶するように動作可能とされ、更に各キャッシュラインにインデックスが関連付けられている、第1レベルキャッシュメモリを有し、
複数のウェイセット及び複数のキャッシュラインが関連付けられるとともに、前記複数のキャッシュラインの各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能とされた次段レベルのキャッシュメモリを有し、更に、
前記次段レベルのキャッシュメモリに関連付けられるとともに複数のメモリラインを備えた付加的なメモリを有し、前記付加的なメモリの各メモリラインは、それぞれ次段レベルのキャッシュメモリの各ウェイセットの複数のキャッシュラインに対してのLフラグを含み、所定のインデックスに第1レベルキャッシュメモリのインデックスオフセットを加算した値に対応するLフラグの全てが、前記付加的なメモリの1つのメモリラインに含まれ、かつ、前記次段レベルのキャッシュメモリはその各キャッシュライン内に対応するLフラグを含まない、装置。
A plurality of way sets and a plurality of cache lines are associated, each of the plurality of cache lines is operable to store an address tag and data, and an index is associated with each cache line. Having a first level cache memory;
A plurality of way sets and a plurality of cache lines are associated, each of the plurality of cache lines having a next level cache memory operable to store address tags, status flags and data; ,
An additional memory associated with the next level cache memory and having a plurality of memory lines, each memory line of the additional memory having a plurality of waysets of the next level cache memory; All of the L flags corresponding to a value obtained by adding the index offset of the first level cache memory to a predetermined index are included in one memory line of the additional memory. And the next level cache memory does not include a corresponding L flag in each cache line.
前記第1レベルキャッシュメモリはダイレクトマップキャッシュである、請求項14記載の装置。   The apparatus of claim 14, wherein the first level cache memory is a direct map cache. 前記第1レベルキャッシュメモリはL1キャッシュメモリであり、かつ、前記次段レベルのキャッシュメモリはL2キャッシュメモリである、請求項14記載の装置。   15. The apparatus of claim 14, wherein the first level cache memory is an L1 cache memory and the next level cache memory is an L2 cache memory. 前記インデックスの所定の一つに関連付けられたLフラグの全ては、同時に制御又は変更が可能である、請求項14記載の装置。 15. The apparatus of claim 14, wherein all of the L flags associated with the predetermined one of the indexes can be controlled or changed simultaneously. 複数のウェイセット及び複数のキャッシュラインが関連付けられているとともに、前記複数のキャッシュラインの各々がアドレスタグおよびデータを記憶するように動作可能とされ、更に各キャッシュラインにインデックスが関連付けられている、第1レベルキャッシュメモリを制御するステップを有し、
複数のウェイセット及び複数のキャッシュラインが関連付けられるとともに、前記複数のキャッシュラインの各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能とされた次段レベルのキャッシュメモリを制御するステップを有し、
前記次段レベルのキャッシュメモリに関連付けられるとともに複数のメモリラインを備えた付加的なメモリを制御するステップを有し、前記付加的なメモリの各メモリラインは、それぞれ次段レベルのキャッシュメモリの各ウェイセットの複数のキャッシュラインに対してのLフラグを含み、所定のインデックスに第1レベルキャッシュメモリのインデックスオフセットを加算した値に対応するLフラグの全てが、前記付加的なメモリの1つのメモリラインに含まれるものであり、更に、
前記付加的なメモリのそれぞれのLフラグを、該Lフラグに対応する次段レベルのキャッシュメモリのキャッシュライン内に記憶されたデータによって、第1レベルキャッシュメモリのキャッシュラインのいずれかがリフィルされたかどうかを示すように設定するステップを有し、
前記次段レベルのキャッシュメモリはその各キャッシュラインに対応するLフラグを含まない、方法。
A plurality of way sets and a plurality of cache lines are associated, each of the plurality of cache lines is operable to store an address tag and data, and an index is associated with each cache line. Controlling the first level cache memory;
Controlling a next level cache memory associated with a plurality of way sets and a plurality of cache lines, each of the plurality of cache lines being operable to store an address tag, a status flag and data. Have
Controlling an additional memory associated with the next level cache memory and having a plurality of memory lines, wherein each memory line of the additional memory is associated with each of the next level cache memories. All of the L flags corresponding to a value obtained by adding the index offset of the first level cache memory to a predetermined index are included in one memory of the additional memory. Included in the line, and
Whether one of the cache lines of the first level cache memory has been refilled with the data stored in the cache line of the next level cache memory corresponding to the L flag of each of the additional memories. Has a step of setting to indicate whether
A method wherein the next level cache memory does not include an L flag corresponding to each cache line.
前記第1レベルキャッシュメモリでキャッシュミスが発生したときに、前記次段レベルのキャッシュメモリにアドレスバスを通じて有効アドレスを渡すステップを有し、前記アドレスバス内の第1ビットセットが前記有効アドレスのタグビットを含み、前記アドレスバス内の第2ビットセットが前記有効アドレスのインデックスビットを含む、請求項18記載の方法。 Passing a valid address through an address bus to the next level cache memory when a cache miss occurs in the first level cache memory, the first bit set in the address bus being a tag of the valid address 19. The method of claim 18, comprising a bit, wherein a second set of bits in the address bus includes an index bit of the effective address. 前記第2ビットセットと前記第1ビットセットの少なくとも一部とから、前記次段レベルのキャッシュメモリ内の少なくとも一つのウェイセット内のキャッシュラインの選択された一つを識別するステップを有する、請求項19記載の方法。   Identifying a selected one of the cache lines in at least one wayset in the next level cache memory from the second bit set and at least a portion of the first bit set. Item 20. The method according to Item 19.
JP2007198125A 2002-05-06 2007-07-30 Method and apparatus for controlling hierarchical cache memory Expired - Lifetime JP4112603B2 (en)

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 (en) 2002-05-06 2003-04-25 Method and apparatus for controlling hierarchical cache memory

Publications (2)

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

Family

ID=29273596

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2004502158A Expired - Fee Related JP4040623B2 (en) 2002-05-06 2003-04-25 Method and apparatus for controlling hierarchical cache memory
JP2007198125A Expired - Lifetime JP4112603B2 (en) 2002-05-06 2007-07-30 Method and apparatus for controlling hierarchical cache memory

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2004502158A Expired - Fee Related JP4040623B2 (en) 2002-05-06 2003-04-25 Method and apparatus for controlling hierarchical cache memory

Country Status (6)

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

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
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
US7924828B2 (en) * 2002-10-08 2011-04-12 Netlogic Microsystems, Inc. Advanced processor with mechanism for fast packet queuing operations
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
US9088474B2 (en) * 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
US7627721B2 (en) 2002-10-08 2009-12-01 Rmi Corporation Advanced processor with cache coherency
US8015567B2 (en) * 2002-10-08 2011-09-06 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
US7984268B2 (en) * 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
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
US20050033831A1 (en) * 2002-10-08 2005-02-10 Abbas Rashid Advanced processor with a thread aware return address stack optimally used across active threads
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
US7346757B2 (en) 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
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
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 (en) * 2004-03-05 2008-09-10 菲尼萨公司 Hierarchical and byte-configurable memory in an optical transceiver
US20060253844A1 (en) 2005-04-21 2006-11-09 Holt John M Computer architecture and method of operation for multi-computer distributed processing with initialization of objects
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
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
EP1986101B1 (en) * 2006-02-14 2012-06-20 Fujitsu Ltd. Coherency maintaining device and coherency maintaining method
US7711902B2 (en) * 2006-04-07 2010-05-04 Broadcom Corporation Area effective cache with pseudo associative memory
US8473564B2 (en) 2006-10-05 2013-06-25 Waratek Pty Ltd. Contention detection and resolution
US20080126503A1 (en) * 2006-10-05 2008-05-29 Holt John M Contention resolution with echo cancellation
WO2008040073A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Contention resolution with counter rollover
WO2008040072A1 (en) 2006-10-05 2008-04-10 Waratek Pty Limited Advanced contention detection
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 (en) * 2006-10-26 2012-01-04 阿里巴巴集团控股有限公司 Network data storage system and data access method
CN101595462B (en) * 2007-01-31 2012-04-25 高通股份有限公司 Apparatus and methods to reduce castouts in a multi-level cache hierarchy
CN101689149A (en) * 2007-07-05 2010-03-31 Nxp股份有限公司 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
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
US8316186B2 (en) * 2008-09-20 2012-11-20 Freescale Semiconductor, Inc. Method and apparatus for managing cache reliability 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 (en) * 2009-09-18 2014-03-12 富士通株式会社 Cache memory control device and cache memory control method
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
JP5637312B2 (en) * 2011-06-29 2014-12-10 富士通株式会社 Cache control apparatus and pipeline control method
US9286172B2 (en) * 2011-12-22 2016-03-15 Intel Corporation Fault-aware mapping for shared last level cache (LLC)
JP5458132B2 (en) * 2012-03-13 2014-04-02 株式会社東芝 Cache device
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
US10474597B2 (en) * 2015-08-03 2019-11-12 Marvell World Trade Ltd. Systems and methods for performing unknown address discovery in a MoChi space
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 (en) 1980-03-03 1983-08-02 オムロン株式会社 Data transfer method in master-slave system
US4430705A (en) * 1980-05-23 1984-02-07 International Business Machines Corp. Authorization mechanism for establishing addressability to information in another address space
EP0063626B1 (en) * 1981-04-28 1985-07-17 International Business Machines Corporation Bus arrangement for interconnectiong circuit chips
JPS5858553A (en) * 1981-10-01 1983-04-07 Fuji Photo Film Co Ltd X-ray sensitive electrophotographic receptor and its manufacture
AU542447B2 (en) * 1982-02-27 1985-02-21 Fujitsu Limited System for controlling key storage unit
JPS5958700A (en) * 1982-09-29 1984-04-04 Fujitsu Ltd Memory protection judge method
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 (en) 1986-07-11 1988-01-26 Fujitsu Ltd Memory device
JP2960415B2 (en) * 1987-05-22 1999-10-06 株式会社日立製作所 Memory protection method and device
JPH01199251A (en) 1988-02-04 1989-08-10 Fujitsu Ltd Access control system for cache memory
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
ATE170642T1 (en) 1990-06-15 1998-09-15 Compaq Computer Corp MULTI-LEVEL INCLUSION IN MULTI-LEVEL CACHE MEMORY HIERARCHICES
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 (en) * 1990-11-30 1994-05-25 삼성전자 주식회사 Nonvolatile semiconductor memory device
EP0549219B1 (en) 1991-12-24 1998-06-10 Motorola, Inc. A cache controller
US5268973A (en) * 1992-01-21 1993-12-07 The University Of Texas System Wafer-scale optical bus
JPH05216765A (en) 1992-02-06 1993-08-27 Hitachi Ltd Hierarchical buffer storage device
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 (en) 1992-06-12 1993-12-24 Fujitsu Ltd Hierarchical cache memory
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 (en) * 1994-12-05 2001-02-05 インターナショナル・ビジネス・マシーンズ・コーポレ−ション Multiprocessor data processing system
DE19508723A1 (en) * 1995-03-10 1996-09-12 Siemens Ag Multi-user data processing system with memory protection
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
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
JP3786993B2 (en) * 1995-12-14 2006-06-21 株式会社日立製作所 Data storage unit and data storage device using the unit
US5729712A (en) * 1996-01-26 1998-03-17 Unisys Corporation Smart fill system for multiple cache network
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
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
JPH10214225A (en) * 1996-10-31 1998-08-11 Texas Instr Inc <Ti> Microprocessor circuit, system and method with shortened cache read time
JP3421526B2 (en) * 1997-02-14 2003-06-30 モトローラ株式会社 Data processing device
US6212605B1 (en) * 1997-03-31 2001-04-03 International Business Machines Corporation Eviction override for larx-reserved addresses
JPH1139215A (en) 1997-05-22 1999-02-12 Matsushita Electric Ind Co Ltd Cache memory and its control method
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
JP4040623B2 (en) 2008-01-30
TWI243991B (en) 2005-11-21
JP2007310906A (en) 2007-11-29
JP2006504158A (en) 2006-02-02
US7024519B2 (en) 2006-04-04
EP1502193A1 (en) 2005-02-02
US20090063772A1 (en) 2009-03-05
TW200404208A (en) 2004-03-16
EP1502193B1 (en) 2013-11-13
US7870340B2 (en) 2011-01-11
US20030208658A1 (en) 2003-11-06
US7461207B2 (en) 2008-12-02
WO2003094003A1 (en) 2003-11-13
AU2003222459A1 (en) 2003-11-17
US20060075193A1 (en) 2006-04-06

Similar Documents

Publication Publication Date Title
JP4112603B2 (en) Method and apparatus for controlling hierarchical cache memory
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 (en) Cache memory, memory system, and data copy method
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 (en) Hit determination control method for shared cache memory and hit determination control method for shared cache memory
JP2618178B2 (en) Scalar / vector hybrid processing system, cross-query device for scalar / vector hybrid processing system, and method for maintaining data coherence
JP2009528612A (en) Data processing system and data and / or instruction prefetch method
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 (en) Cache memory capable of executing indicative line substituting operation and its control method

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