JP4112603B2 - Method and apparatus for controlling hierarchical cache memory - Google Patents
Method and apparatus for controlling hierarchical cache memory Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches 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
装置100は、好ましくはマイクロプロセッサ101、第1レベルキャッシュメモリ102、下位レベルキャッシュメモリ103、およびさらに別のメモリ104を備えたマイクロプロセッサシステムである。マイクロプロセッサ101は、現在入手可能な公知のマイクロプロセッサデバイスまたは今後開発されるマイクロプロセッサデバイスのいずれを使用して実現することができる。
The
第1レベルキャッシュメモリ102は、好ましくはL1キャッシュメモリ、すなわちマイクロプロセッサ101にオンチップに設けられた配置されているキャッシュメモリである。しかし、第1レベルキャッシュメモリ102がマイクロプロセッサ101にオンチップに配置されていることが好ましいものの、必ずしも第1レベルキャッシュメモリ102がオンチップで実装されていなくてもよい。実際、第1レベルキャッシュメモリ102は、マイクロプロセッサ101の外部にオフチップで配置されてもよい。
The first
好ましくは、第1レベルキャッシュメモリ102は、命令キャッシュメモリ102Aと、別個のデータキャッシュメモリ102Bとを有し、キャッシュメモリの各々は複数のキャッシュラインを備える。各キャッシュラインは、アドレスタグ、状態フラグおよびデータを有する。アクセス競合を回避するために、命令キャッシュとデータキャッシュとが分かれていることが好ましい。例えば、命令キャッシュメモリ102Aとデータキャッシュメモリ102Bとは、各々64キロバイトのダイレクトマップド構成として実装され得る。しかし、命令キャッシュメモリ102Aおよびデータキャッシュメモリ102Bのサイズは任意である点に留意されたい。別法として、第1レベルキャッシュメモリ102は1つのダイレクトマップドキャッシュメモリを有し、命令とデータの両方を格納してもよい点にも留意されたい。
Preferably, the first
命令キャッシュメモリ102Aおよびデータキャッシュメモリ102Bのキャッシュラインは、マイクロプロセッサ101が発行した有効アドレスとしてアドレス指定され、有効アドレスの各々は、タグビットとインデックスビットとを含む。インデックスビットは、第1レベルキャッシュメモリ102の命令キャッシュメモリ102Aおよび/またはデータキャッシュメモリ102Bの特定のキャッシュラインに対するポインタとなる。キャッシュメモリのサイズが64キロバイトである上記の例においては、インデックスビットは、利用可能な全キャッシュラインをポイントするために0x0000〜0xFFFFの範囲をとり得る(最下位ビットの一部はオフセットとして使用される)。例示のための例として、マイクロプロセッサ101が発行した有効アドレスのインデックスビットから得られたポインタ(またはインデックス)110が0xAFF0であるとする。このポインタは、命令キャッシュメモリ102Aの命令Aを格納しているキャッシュラインをポイントしていると共に、データキャッシュメモリ102BのデータAを格納しているキャッシュラインをポイントしている。
The cache lines of
下位レベルキャッシュメモリ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
下位レベルのキャッシュメモリ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
例えば、ウェイセット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
The cache line 109C of the lower
さらに別のメモリ104は、次段レベルのキャッシュメモリかメインメモリであり得る。実際、本発明では、階層型キャッシュメモリの、マイクロプロセッサ101とメインメモリとの間に存在する階層数はどのような値であってもよい。
Still another
装置100の構造および動作は、図2をさらに参照すればより深く理解できるであろう。図2は、装置100によって実行されるか、あるいは装置100と関連する特定のアクションを示すフローチャートである。説明のために、第1レベルキャッシュメモリ102がL1キャッシュメモリであり、下位レベルキャッシュメモリ103がL2キャッシュメモリであり、さらに別のメモリ104はメインメモリであると想定する。
The structure and operation of the
図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
図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
アクション152において、下位レベルキャッシュメモリ103の0xAFF0によってインデックスされているキャッシュライン109A,109B,109C,109Dがアクセスされ、(i)これらキャッシュラインのアドレスタグのいずれかが有効アドレスのタグビットと一致するか、および(ii)タグビットが一致するアドレスタグを格納しているキャッシュラインの有効フラグが、そのデータが有効であることを示しているかどうかが判定される。上記の条件のいずれも満たさない場合、L2キャッシュメモリ103はアクセス要求を満たすことができず、L2キャッシュミスが発生することになる(アクション154)。キャッシュライン109Aが有効なデータ(すなわちデータC)を格納しているため、L1キャッシュメモリ(およびマイクロプロセッサ101)によって要求されたデータは、L2キャッシュメモリのヒットとなり、処理フローはアクション154からアクション156に進む。
In
アクション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
上記の例においては、マイクロプロセッサ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
アクション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
アクション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
L2キャッシュメモリ103をリフィルする際に、L1キャッシュメモリ102のどのデータも無効にする必要がないため有利である。このように、メモリ使用効率の改善、処理スループットの向上、および処理データの品質向上を図ることができる。
When refilling the
次に、図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
第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
次段レベルのキャッシュメモリ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
インデックス(またはポインタ)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
しかし、次段レベルのキャッシュメモリ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
次段レベルのキャッシュメモリ203の各キャッシュラインは、好ましくはアドレスタグ、状態フラグおよびデータ(命令を含み得る)を記憶するように動作可能である。しかし、本発明の図1の実施形態とは異なり、図3の装置200は、好ましくは、次段レベルのキャッシュメモリ203は、各キャッシュラインにLフラグを有さない。この理由は、仮に各キャッシュラインがLフラグを有するとすると、異なるインデックスオフセットによってインデックスされているキャッシュラインに存在するそれぞれのLフラグの値を制御または変更することは不可能なためである。実際、一度に処理可能なのは、同じインデックスオフセットによってインデックスされた8つのキャッシュラインのみである。
Each cache line of the next
本発明のこの実施形態に係る装置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
次に、図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
キャッシュミスのため、第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
アクセスされた下位レベルキャッシュメモリ203の8つのキャッシュラインは、いずれもデータCを格納していないため、キャッシュミスが発生する。このため、下位レベルキャッシュメモリ203は、さらに別のメモリ104(1つ以上のさらに別のキャッシュメモリおよび/またはメインメモリであり得る)に有効アドレスを渡す。その後、キャッシュメモリ202,203の各々にリフィルするため、データCが返される。
Since none of the eight cache lines of the accessed lower
下位レベルキャッシュメモリ203のうち、0x0FF0+0x2000によってインデックスされているキャッシュラインのうち、どのキャッシュラインにリフィルデータ(データC)を入れるかが判定される。下位レベルキャッシュメモリ203のキャッシュラインの1つ以上が無効なデータを格納している場合、リフィルデータはこのようなキャッシュラインの1つに上書きされることが好ましい。しかし、本例では、下位レベルキャッシュメモリ203のいずれのキャッシュラインも有効なデータを格納している(すなわち、キャッシュラインの各有効フラグが、全てのデータが有効であることを示している)と想定している。このため、好ましくは、第1レベルキャッシュメモリ202にキャッシュされていないデータをキャッシュラインの1つ以上が格納しているかどうかが判定され、未キャッシュのデータを格納しているキャッシュラインがあれば、そのようなキャッシュラインの1つにリフィルデータが記憶される。
In the lower
これを行うために、付加的なメモリ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
本例においては、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
本発明によれば、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
下位レベルキャッシュメモリ203をリフィルする際に、第1レベルキャッシュメモリ202のどのデータも無効にする必要がないため有利である。このように、メモリ使用効率の改善、処理スループットの向上、および処理データの品質向上を図ることができる。
When refilling the lower
次に、図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
装置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
次段レベルのキャッシュメモリ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
図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
下位レベルキャッシュメモリ303の各キャッシュラインは、好ましくはアドレスタグ、状態フラグおよびデータ(命令を含み得る)を記憶するように動作可能である。図3のキャッシュメモリ203と同様に、図4の下位レベルキャッシュメモリ303は、好ましくは、各キャッシュシュラインにLフラグを有さない。これに代わって、Lフラグを有するのは付加的なメモリ303Aであり、付加的なメモリ303Aは、下位レベルキャッシュメモリ303に内蔵されていても、下位レベルキャッシュメモリ303とは別に設けられていてもよい。
Each cache line of the lower
より詳細には、付加的なメモリ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
このため、付加的なメモリ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
次に、図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
キャッシュミスのため、第1レベルキャッシュメモリ202は下位レベルキャッシュメモリ303に有効アドレスを渡し、このキャッシュメモリ内でデータアクセス要求を満たそうと試みる。次段レベルのキャッシュメモリ303は、アドレスバスのビット[14:0]を、有効アドレスのインデックスビットを格納しているビットとして使用する。本例においては、アドレスバスのビット[14:13]の値が01であると想定する。この値は0x2000のインデックスオフセットに対応している。このため、ポインタ208Aは0x0FF0+0x2000の値をとることとなり、下位レベルキャッシュメモリ203のウェイセット209〜216の対応する8つのキャッシュラインをポイントする。
Due to a cache miss, the first
アクセスされた下位レベルキャッシュメモリ303の8つのキャッシュラインは、いずれもデータCを格納していないため、キャッシュミスが発生する。このため、下位レベルキャッシュメモリ303は、さらに別のメモリ104(1つ以上のさらに別のキャッシュメモリおよび/またはメインメモリであり得る)に有効アドレスを渡す。その後、キャッシュメモリ202,303の各々にリフィルするため、データCが返される。
Since none of the eight cache lines of the accessed lower
下位レベルキャッシュメモリ303のうち、0x0FF0+0x2000によってインデックスされているキャッシュラインのうち、どのキャッシュラインにリフィルデータ(データC)を入れるかが判定される。下位レベルキャッシュメモリ303のキャッシュラインの1つ以上が無効なデータを格納している場合、リフィルデータはこのようなキャッシュラインの1つに上書きされることが好ましい。しかし、本例では、下位レベルキャッシュメモリ303のどのキャッシュラインも有効なデータを格納していると想定している。このため、好ましくは、第1レベルキャッシュメモリ202にキャッシュされていないデータをキャッシュラインの1つ以上が格納しているかどうかが判定され、未キャッシュのデータを格納しているキャッシュラインがあれば、そのようなキャッシュラインの1つにリフィルデータが記憶される。
In the lower
これを行うために、付加的なメモリ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
この例では、唯一のインデックスオフセットビット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
リフィルデータ(データ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
下位レベルキャッシュメモリ303をリフィルする際に、第1レベルキャッシュメモリ202のどのデータも無効にする必要がないため有利である。このように、メモリ使用効率の改善、処理スループットの向上、および処理データの品質向上を図ることができる。
When refilling the lower
本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は、本発明の原理および用途の例を示すものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨および範囲から逸脱することなく、これら例示的な実施形態を種々に変更したり、上記以外の構成を考案し得ることが理解されよう。 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.
101 マイクロプロセッサ
102、103 キャッシュメモリ
104〜107 ウェイセット
109A〜D キャッシュライン
110 ポインタ
112 フラグ
202 レベルキャッシュメモリ
203 キャッシュメモリ
301 マイクロプロセッサ
303 キャッシュメモリ
303A 付加的なメモリ
324 キャッシュライン
350 ビット
350 フラグ
352 オフセットビット
352 キャッシュライン
354 ウェイセットビット
358 キャッシュライン
Claims (20)
複数のウェイセット及び複数のキャッシュラインが関連付けられるとともに、前記複数のキャッシュラインの各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能とされた次段レベルのキャッシュメモリを有し、更に、
前記次段レベルのキャッシュメモリに関連付けられるとともに複数のメモリラインを備えた付加的なメモリを有し、前記メモリラインの数は前記第1レベルキャッシュメモリの与えられたセットに含まれるキャッシュラインの数に対応するものであり、
前記第1レベルキャッシュメモリの各キャッシュラインにはインデックスが関連付けられており、前記付加的なメモリの各メモリラインは、それぞれ次段レベルのキャッシュメモリの各ウェイセットの複数のキャッシュラインに対しての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ビットセットが前記有効アドレスのタグビットを含み、前記アドレスバス内の第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.
複数のウェイセット及び複数のキャッシュラインが関連付けられるとともに、前記複数のキャッシュラインの各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能とされた次段レベルのキャッシュメモリを有し、更に、
前記次段レベルのキャッシュメモリに関連付けられるとともに複数のメモリラインを備えた付加的なメモリを有し、前記付加的なメモリの各メモリラインは、それぞれ次段レベルのキャッシュメモリの各ウェイセットの複数のキャッシュラインに対しての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.
複数のウェイセット及び複数のキャッシュラインが関連付けられるとともに、前記複数のキャッシュラインの各々がアドレスタグ、状態フラグおよびデータを記憶するように動作可能とされた次段レベルのキャッシュメモリを制御するステップを有し、
前記次段レベルのキャッシュメモリに関連付けられるとともに複数のメモリラインを備えた付加的なメモリを制御するステップを有し、前記付加的なメモリの各メモリラインは、それぞれ次段レベルのキャッシュメモリの各ウェイセットの複数のキャッシュラインに対しての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.
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)
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)
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 |
-
2002
- 2002-08-26 US US10/228,347 patent/US7024519B2/en not_active Expired - Lifetime
-
2003
- 2003-04-25 JP JP2004502158A patent/JP4040623B2/en not_active Expired - Fee Related
- 2003-04-25 AU AU2003222459A patent/AU2003222459A1/en not_active Abandoned
- 2003-04-25 EP EP03717727.6A patent/EP1502193B1/en not_active Expired - Lifetime
- 2003-04-25 WO PCT/JP2003/005295 patent/WO2003094003A1/en active Application Filing
- 2003-05-06 TW TW092112337A patent/TWI243991B/en not_active IP Right Cessation
-
2005
- 2005-11-30 US US11/290,691 patent/US7461207B2/en not_active Expired - Lifetime
-
2007
- 2007-07-30 JP JP2007198125A patent/JP4112603B2/en not_active Expired - Lifetime
-
2008
- 2008-10-28 US US12/290,141 patent/US7870340B2/en not_active Expired - Lifetime
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 |