JP5992592B1 - キャッシュメモリシステム - Google Patents
キャッシュメモリシステム Download PDFInfo
- Publication number
- JP5992592B1 JP5992592B1 JP2015183218A JP2015183218A JP5992592B1 JP 5992592 B1 JP5992592 B1 JP 5992592B1 JP 2015183218 A JP2015183218 A JP 2015183218A JP 2015183218 A JP2015183218 A JP 2015183218A JP 5992592 B1 JP5992592 B1 JP 5992592B1
- Authority
- JP
- Japan
- Prior art keywords
- cache
- cache memory
- access
- area
- 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.)
- Active
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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/225—Hybrid cache memory, e.g. having both volatile and non-volatile portions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】不揮発メモリを用いても、アクセス速度が低下しないようにしたキャッシュメモリシステムを提供する。【解決手段】キャッシュメモリシステム1は、L1キャッシュメモリ4と、アクセス速度がそれぞれ相違する複数の領域を生成可能な不揮発メモリを有し、L1キャッシュメモリよりもアクセス優先度が低く、L1キャッシュメモリの下位階層のL2キャッシュメモリ5と、L1キャッシュメモリに対するアクセス状況に応じて、L2キャッシュメモリに格納すべき各データを複数の領域に分類して格納する制御を行うL2キャッシュコントローラ12と、を備える。【選択図】図1
Description
本発明は、不揮発メモリを備えたキャッシュメモリシステムに関する。
SRAM(Static Random Access Memory)は待機電力が大きく価格も高いことから、不揮発メモリを用いたキャッシュメモリが検討されている。不揮発メモリの中でも、MRAM(Magnetoresistive Random Access Memory)は、書換耐性が高く、セル面積も小さくて高集積化が可能であるが、アクセス速度の観点では、SRAMには及ばない。一般に、アクセス速度とメモリ容量とはトレードオフの関係にあり、メモリ容量を増やせばアクセス速度が低下し、メモリ容量を減らせばアクセス速度が向上する。
例えば、MRAM等の不揮発メモリを下位側の階層のキャッシュメモリとして使用する場合、プロセッサが実行するアプリケーション・ソフトウェアによっては、このキャッシュメモリへのアクセスが集中的に行われ、SRAMで構成する場合と比べて、処理性能が低下してしまうおそれがある。
本実施形態は、不揮発メモリを用いても、アクセス速度が低下しないようにしたキャッシュメモリシステムを提供するものである。
上記の課題を解決するために、本発明の一態様では、第1キャッシュメモリと、
アクセス速度がそれぞれ相違する複数の領域を生成可能な不揮発メモリを有し、前記第1キャッシュメモリよりもアクセス優先度が低く前記第1キャッシュメモリの下位階層の第2キャッシュメモリと、
前記第1キャッシュメモリに対するアクセス状況に応じて、前記第2キャッシュメモリに格納すべき各データを前記複数の領域に分類して格納する制御を行うキャッシュコントローラと、を備えるキャッシュメモリシステムが提供される。
アクセス速度がそれぞれ相違する複数の領域を生成可能な不揮発メモリを有し、前記第1キャッシュメモリよりもアクセス優先度が低く前記第1キャッシュメモリの下位階層の第2キャッシュメモリと、
前記第1キャッシュメモリに対するアクセス状況に応じて、前記第2キャッシュメモリに格納すべき各データを前記複数の領域に分類して格納する制御を行うキャッシュコントローラと、を備えるキャッシュメモリシステムが提供される。
以下、本発明の実施の形態について、詳細に説明する。
図1は本発明の一実施形態のキャッシュメモリシステム1を備えたプロセッサシステム2の概略構成を示すブロック図である。図1のプロセッサシステム2は、8つのプロセッサコア(CPU)3を有するマルチコアの構成を示しているが、プロセッサコア3の数には依存せず、シングルコアでもよい。
図1は本発明の一実施形態のキャッシュメモリシステム1を備えたプロセッサシステム2の概略構成を示すブロック図である。図1のプロセッサシステム2は、8つのプロセッサコア(CPU)3を有するマルチコアの構成を示しているが、プロセッサコア3の数には依存せず、シングルコアでもよい。
プロセッサシステム2内のキャッシュメモリシステム1は、1次キャッシュメモリ(以下、L1キャッシュ、第1キャッシュメモリ)4と、2次キャッシュメモリ(以下、L2キャッシュ、第2キャッシュメモリ)5と、3次キャッシュメモリ(以下、L3キャッシュ、第3キャッシュメモリ)6とを有する。L1キャッシュ4は最もアクセス優先度が高い最上位階層のキャッシュメモリである。L2キャッシュ5は、L1キャッシュ4の次にアクセス優先度が高い2番目の階層のキャッシュメモリである。L3キャッシュ6は、L2キャッシュ5の次にアクセス優先度が高い3番目の階層のキャッシュメモリである。L3キャッシュ6の下位階層には、不図示のキャッシュメモリが設けられていてもよいし、不図示のメインメモリが設けられていてもよい。
L1キャッシュ4は、プロセッサコア3ごとに設けられている。L2キャッシュ5は、図1の例では、2個のL1キャッシュ4ごとに設けられている。なお、L2キャッシュ5を何個のL1キャッシュ4ごとに設けるかは任意である。L3キャッシュ6は、図1の例では、8個のL2キャッシュ5に対して1個設けられている。なお、L3キャッシュ6を何個のL2キャッシュ5メモリごとに設けるかは任意である。
L1キャッシュ4は、L1データメモリおよびL1タグメモリ(L1$)7と、L1キャッシュコントローラ8とを有する。L1キャッシュコントローラ8は、L1内参照回数カウンタ(第1アクセス回数計測部)9を有する。
L1キャッシュ4は、例えば32kバイトのメモリ容量を有する。L1データメモリおよびL1タグメモリ7は例えばSRAMで構成されている。
L1内参照回数カウンタ9は、L1キャッシュ4のキャッシュラインごとに設けられている。L1内参照回数カウンタ9は、対応するキャッシュラインへのアクセスがあるたびにカウントアップするカウンタである。
L2キャッシュ5は、L2データメモリおよびL2タグメモリ(L2$)11と、L2キャッシュコントローラ12とを有する。L2キャッシュコントローラ12は、LRUアクセス回数カウンタ(第2アクセス回数計測部)13と、ウェイ数制御部14と、L2リプレイス部15とを有する。
L2キャッシュ5は、例えば256kバイトのメモリ容量を有する。L2データメモリは、STT(Spin Transfer Torque)−MRAM等の不揮発メモリで構成されている。L2タグメモリは、例えばSRAMで構成されている。
L2データメモリは、後述するように、高速アクセスが可能な高速領域と、高速領域よりもアクセス速度が低い低速領域とを有する。高速領域と低速領域は、L2データメモリ内の固定の場所にそれぞれ割り当ててもよいし、高速領域と低速領域の場所を、L2データメモリ内でシフトできるようにしてもよい。また、後述するように、高速領域と低速領域のメモリサイズを任意に可変制御できるようにしてもよい。
LRUアクセス回数カウンタ13は、L2キャッシュ5中のデータのうち、次に追い出される可能性が最大のデータ(例えば、LRUデータ)のアクセス回数を計測する。典型的な実装例では、LRUアクセス回数カウンタ13は、L2タグメモリ内のLRUポイントのアクセス回数を計測する。なお、LRU(Least Recently Used)という名称が付いているが、LRUアクセス回数カウンタ13は、必ずしもLRUポイントのアクセス回数を計測する場合に限らず、次に追い出される可能性が最大のデータのアクセス回数を計測すればよい。
L2リプレイス部15は、L2キャッシュ5に格納すべきデータを、L2キャッシュ5中の高速領域に格納するか、低速領域に格納するかを設定する。
L3キャッシュ6は、L3データメモリおよびL3タグメモリ(L3$)16と、L3キャッシュコントローラ17とを有する。L3キャッシュコントローラ17は、MRUアクセス回数カウンタ(第3アクセス回数計測部)18を有する。
L3データメモリは、例えばSTT−MRAMで構成されている。L3タグメモリは、例えばSRAMで構成されている。
MRUアクセス回数カウンタ18は、L3キャッシュ6中のデータのうち、次に追い出される可能性が最小のデータ(例えば、MRUデータ)のアクセス回数を計測する。典型的な実装例では、MRUアクセス回数カウンタ18は、L3タグメモリ内のMRUポイントのアクセス回数を計測する。なお、MRU(Most Recently Used)という名称が付いているが、MRUアクセス回数カウンタ18は、必ずしもMRUポイントのアクセス回数を計測する場合に限らず、次に追い出される可能性が最小のデータのアクセス回数を計測すればよい。
図2はL2キャッシュ5内のメモリセルアレイ21の回路構成の一例を示す回路図である。図2は、メモリセルアレイ21内の各メモリセルがMTJ(Magnetic Tunnel Junction)素子22の例を示している。MTJ素子22には、トランジスタ23が直列接続されている。また、4つのメモリセル22ごとに、2個のモードセレクタ24と、1個のセンスアンプ(SA)25とが設けられている。
図2のL2キャッシュ5は、1個ずつのトランジスタ23およびMTJ素子22を使用して、読出しと書込みを行う1T−1MTJモードと、2個ずつのトランジスタ23およびMTJ素子22を使用して、読出しと書込みを行う2T−2MTJモードとを有する。
1T−1MTJモードでは、1個のMTJ素子22に記憶されたデータを、対応するトランジスタ23を介して読み出して、センスアンプ25にて、リファレンス電圧Refと比較して、データの0と1を判別する。
2T−2MTJモードでは、2個のMTJ素子22に記憶されたデータが相補データになるようにして、相補データ同士をセンスアンプ25で比較して、データの0と1を判別する。
1T−1MTJモードは、2T−2MTJモードよりも、メモリセル22サイズを小さくでき、メモリ容量を増やせるが、読出し電流が小さいため、センスマージンは低くなる。よって、1T−1MTJモードにした場合には、低速領域となる。
2T−2MTJモードは、1T−1MTJモードよりもメモリ容量が少なくなるが、読出し電流が大きいため、高速領域となる。
4個ずつのトランジスタ23およびMTJ素子22を使用して、読出しと書込みを行う4T−4MTJモードを用意して、4T−4MTJモードを高速領域とし、1T−1MTJモードまたは2T−2MTJモードを低速領域としてもよい。
あるいは、1T−1MTJモード、2T−2MTJモードおよび4T−4MTJモードなどの3つ以上のモードを設けて、アクセス速度がそれぞれ相違する3つ以上の領域を設けてもよい。
上述したように、L1内参照回数カウンタ9は、L1キャッシュ4のキャッシュラインごとに設けられるが、各キャッシュラインのアクセス回数を単純にカウントするようにすると、L1内参照回数カウンタ9の回路面積が非常に大きくなってしまう。そこで、L1内参照回数カウンタ9として飽和カウンタを用いることで、回路面積の削減を図ることができる。
図3はL1内参照回数カウンタ9として飽和カウンタを用いた場合のL1内参照回数カウンタ9の計測動作の一例を示すフローチャートである。L2キャッシュ5に対する読出しまたは書込みを行う場合、読出しまたは書込みを行うべきデータのL1キャッシュ4でのアクセス状況を知るべく、L1キャッシュ4の対応するキャッシュラインのL1内参照回数カウンタ9の計測値が飽和したか否かを判定する(ステップS1)。飽和していなければ、対応するL1内参照回数カウンタ9の計測値をカウントアップする(ステップS2)。
ステップS1で飽和したと判定されると、L1内参照回数カウンタ9の計測値はそのままとして、カウントアップ動作を停止する(ステップS3)。
図3のフローチャートでは、いったんL1内参照回数カウンタ9の計測値が飽和値に達すると、それ以上の計測動作は行えなくなる。そこで、いったん飽和値に達したL1内参照回数カウンタ9のカウントアップ動作を行う必要が生じた場合には、このL1内参照回数カウンタ9とは別のキャッシュラインに対応するL1内参照回数カウンタ9の計測値をカウントダウンしてもよい。これにより、L1内参照回数カウンタ9は、カウントアップとカウントダウンを行うことになり、すべてのL1内参照回数カウンタ9が飽和するという不具合を防止できる。この場合、カウントアップを続けて正の飽和値になるL1内参照回数カウンタ9と、カウントダウンを続けて負の飽和値になるL1内参照回数カウンタ9とが存在してしまうことがありうる。ただし、本実施形態では、アクセス回数が多いか否かを判断するためにL1内参照回数カウンタ9を使用するため、正の飽和値になったL1内参照回数カウンタ9により、アクセス回数が多いことを判断できる。L1キャッシュ4に対するアクセスが均等に行われている場合は、各キャッシュラインに対応するL1内参照回数カウンタ9の計測値の差は小さくなるため、カウントダウンも行えるようにすれば、アクセス回数が最多のキャッシュラインを精度よく検出することができる。
図1では、高速領域と低速領域を有するL2キャッシュ5の上位階層のキャッシュメモリは、L1キャッシュ4のみである。これに対して、例えば、L3キャッシュ6が高速領域と低速領域を有する場合、L3キャッシュ6の上位階層のキャッシュメモリは、L1キャッシュ4とL2キャッシュ5の2階層である。高速領域と低速領域を有する不揮発メモリを備えたキャッシュメモリより上位側に2階層以上のキャッシュメモリが存在する場合は、L2キャッシュ5内に設けられるL2内参照回数カウンタ9の計測動作は、図3のフローチャートではなく、図4のフローチャートで表される。
まず、書込みアクセスが、上位階層のキャッシュメモリからのデータのライトバックであるか否かを判定する(ステップS11)。ステップS11の判定がNOの場合、下位階層のキャッシュメモリからのデータの書き込みであるため、書き込むべきキャッシュラインに対応するL1内参照回数カウンタ9を0に初期化する(ステップS12)。
ステップS11の判定がYESの場合、L2キャッシュ5内のL2内参照回数カウンタが飽和しているか否かを判定する(ステップS13)。飽和していなければ、L1キャッシュ4内のL1参照回数カウンタの計測値を、L2内参照回数カウンタの計測値に合算する(ステップS14)。一方、ステップS13で飽和していると判定された場合、L2内参照回数カウンタのカウントアップ動作を停止する(ステップS15)。
上述したように、L2キャッシュコントローラ12は、L2キャッシュ5にデータを書き込む場合は、このデータに対応するL1内参照回数カウンタ9の計測値に基づいて、L2キャッシュ5内の高速領域と低速領域のどちらに書き込むべきかを決定する。
図5はL2キャッシュコントローラ12が行う書込み制御の処理手順の一例を示すフローチャートである。L2キャッシュコントローラ12は、まず、L1内参照回数カウンタ9の計測値は所定の閾値を超えたか否かを判定する(ステップS21)。閾値を超えたと判定されると、書き込むべきデータを高速領域に格納する(ステップS22)。次に、高速領域が満杯になって、データが溢れたか否かを判定する(ステップS23)。データが溢れた場合は、溢れたデータを低速領域に格納する(ステップS24)。
一方、ステップS21で、閾値を超えなかったと判定されると、書き込むべきデータを低速領域に格納する(ステップS25)。
ステップS24またはS25の処理が終了すると、低速領域が満杯になって、データが溢れたか否かを判定する(ステップS26)。データが溢れた場合は、溢れたデータをメインメモリに格納する(ステップS27)。
なお、ステップS22またはS24で、高速領域または低速領域にデータを書き込んだときに、高速領域または低速領域が満杯になった場合は、高速領域または低速領域内に最も長く滞留しているデータから順に追い出されるアルゴリズムを採用することができる。
一方、L2キャッシュ5内の高速領域に格納されているデータに対して読出し要求があった場合は、このデータがL1キャッシュ4に書き込まれることになる。よって、高速領域に格納しておく必要はない。そこで、高速領域内のデータを低速領域に移してもよい。
図6はL2キャッシュ5内のデータに対して読出し要求があった場合のL2キャッシュコントローラ12の処理手順の一例を示すフローチャートである。まず、読出し要求のあったデータが高速領域に格納されているか否かを判定する(ステップS31)。高速領域に格納されている場合には、そのデータをL1キャッシュ4に転送した後、そのデータを低速領域に移動する(ステップS32)。ステップS31で低速領域に格納されていると判定されると、そのデータをL1キャッシュ4に転送する。
L2キャッシュ5内の高速領域と低速領域のメモリ容量は、アクセス状況に応じて可変させてもよい。例えば、L2キャッシュ5がセットアソシアティブのキャッシュメモリの場合、L2キャッシュ5は、複数のウェイを有する。よって、アクセス状況に応じて、ウェイごとに、高速領域にするか低速領域にするかを切り替えてもよい。
通常のキャッシュメモリでは、キャッシュメモリからクリーンなデータを追い出す際、下位階層のメモリにライトバックする必要はない。ただし、本実施形態では、上述したように、上位階層でのアクセス状況に応じて、下位階層のキャッシュメモリ内の高速領域と低速領域のどちらにデータを格納するかを判断する。よって、上位階層のキャッシュメモリからクリーンなデータを追い出す際にも、そのデータの参照回数を下位階層のキャッシュメモリに反映させ、参照回数の大小により、上位階層から追い出されたデータを高速領域と低速領域のどちらに格納するかを決定する。
なお、不揮発メモリへの不要な書込み回数を削減するには、不揮発メモリの上位階層のキャッシュメモリからクリーンなデータが追い出されたときに、そのデータを高速領域には書き込まないようにしてもよい。この場合、上位階層のキャッシュメモリから追い出されたという情報だけを下位階層の不揮発メモリの例えばタグメモリに記録してもよい。
図7はL2キャッシュコントローラ12がL2キャッシュ5内の高速領域と低速領域のメモリ容量をウェイ単位で切替制御する処理手順の一例を示すフローチャートである。まず、LRUアクセス回数カウンタ13を初期化するとともに、L3キャッシュ6に対してMRUアクセス回数カウンタ18の初期化を指示する(ステップS41)。
次に、プロセッサコア3の所定のサイクル数分をカウントする(ステップS42)。所定のサイクル数は任意であり、例えば1Mサイクルである。このサイクル数の間、LRUアクセス回数カウンタ13とMRUアクセスカウンタの計測値は更新され続ける。
所定のサイクル数分のカウントが終了すると、L2キャッシュコントローラ12は、LRUアクセス回数カウンタ13の計測値mv1とMRUアクセス回数カウンタ18の計測値mv2とを取得する(ステップS43)。
次に、L2キャッシュコントローラ12は、mv2>α×mv1であるか否かを判定する(ステップS44)。ここで、αは、適宜に設定可能な任意の実数からなる係数であり、例えばα=1.0に設定される。
ステップS44の判定がYESの場合は、L2キャッシュ5よりもL3キャッシュ6へのアクセス回数が多いことを示しており、この場合は、次の1Mサイクル数分については、L2キャッシュ5内の低速領域の割合を増やすべく、ウェイ数を増やす(ステップS45)。
ステップS44の判定がNOの場合は、mv2<β×mv1であるか否かを判定する(ステップS46)。ここで、βは、適宜に設定可能な任意の実数からなる係数であり、例えばβ=0.4に設定される。
ステップS46の判定がYESの場合は、L3キャッシュ6よりもL2キャッシュ5へのアクセス回数が多いことを示しており、この場合は、次の1Mサイクル数分については、L2キャッシュ5内の高速領域の割合を増やすべく、ウェイ数を減らす(ステップS47)。
上述した係数αとβは、L2キャッシュ5とL3キャッシュ6のメモリ容量や、要求されるアクセス性能と消費電力等によって、適宜設定する必要がある。
このように、本実施形態では、不揮発メモリを有するキャッシュメモリ(例えば、L2キャッシュ5)の上位階層のキャッシュメモリのアクセス状況に応じて、不揮発メモリに格納すべきデータを不揮発メモリ内の高速領域と低速領域のどちらに格納するかを決定する。これにより、将来的に再びアクセスされる可能性の高いデータを高速領域に格納することができ、アクセス性能を向上できる。また、不揮発メモリを高速動作させると消費電力が増大するが、本実施形態は、不揮発メモリの上位階層のキャッシュメモリのアクセス状況に応じて、不揮発メモリ内の限られたメモリ容量だけを高速領域として用いることができるため、消費電力の削減が図れる。
また、本実施形態によれば、不揮発メモリの上位階層のキャッシュメモリからデータが追い出されたときに、そのデータのアクセス状況に応じて、そのデータを不揮発メモリ内の高速領域と低速領域のどちらに格納するかを判断するため、再アクセスされる可能性の高いデータを確実に高速領域に格納することができる。
さらに、不揮発メモリ内の高速領域に格納されたデータの読出し要求があった場合には、当該データを上位階層のキャッシュメモリに転送するとともに、当該データを不揮発メモリ内の低速領域に移動させるため、高速領域に空きスペースを作ることができ、限られた高速領域を有効活用できる。
また、不揮発メモリを有するキャッシュメモリ(例えばL2キャッシュ5)内にLRUアクセス回数カウンタ13を設けるとともに、このキャッシュメモリの下位階層のキャッシュメモリ(例えばL3キャッシュ6)内にMRUアクセス回数カウンタ18を設けるため、これらカウンタの計測値に基づいて、不揮発メモリ内の高速領域と低速領域の割合を任意に調整できる。よって、プロセッサコア3が実行するアプリケーションや、不揮発メモリのメモリ容量や、求められるアクセス速度等に応じて、不揮発メモリ内の高速領域と低速領域の割合を最適化することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 キャッシュメモリシステム、2 プロセッサシステム、3 プロセッサコア、4 L1キャッシュ、5 L2キャッシュ、6 L3キャッシュ、7 L1データメモリおよびL1タグメモリ、8 L1キャッシュコントローラ、9 L1内参照回数カウンタ、11 L2データメモリおよびL2タグメモリ、12 L2キャッシュコントローラ、13 LRUアクセス回数カウンタ、14 ウェイ数制御部、15 L2リプレイス部、16 L3データメモリおよびL3タグメモリ、17 L3キャッシュコントローラ、18 MRUアクセス回数カウンタ、21 メモリセルアレイ、22 MTJ素子、23 トランジスタ、24 モードセレクタ、25 センスアンプ
Claims (10)
- 第1キャッシュメモリと、
アクセス速度がそれぞれ相違する複数の領域を生成可能な不揮発メモリを有し、前記第1キャッシュメモリよりもアクセス優先度が低く前記第1キャッシュメモリの下位階層の第2キャッシュメモリと、
前記第1キャッシュメモリに対するアクセス状況に応じて、前記第2キャッシュメモリに格納すべき各データを前記複数の領域に分類して格納する制御を行うキャッシュコントローラと、を備えるキャッシュメモリシステム。 - 前記キャッシュコントローラは、前記第1キャッシュメモリから前記第2キャッシュメモリにデータを追い出す際に、当該データの前記第1キャッシュメモリでのアクセス状況に応じて、当該データを前記複数の領域のいずれかに格納する請求項1に記載のキャッシュメモリシステム。
- 前記複数の領域は、第1領域と、前記第1領域よりもアクセス速度が低い第2領域と、を有し、
前記キャッシュコントローラは、前記第1領域に空き領域がなくなった場合には、前記第1領域に格納されている一部のデータを前記第2領域に移動させる請求項1または2に記載のキャッシュメモリシステム。 - 前記複数の領域は、第1領域と、前記第1領域よりもアクセス速度が低い第2領域と、を有し、
前記キャッシュコントローラは、前記第1領域に格納されたデータの読出し要求があった場合には、当該データを前記第1領域から前記第2領域に移動させる請求項1または2に記載のキャッシュメモリシステム。 - 前記複数の領域は、第1領域と、前記第1領域よりもアクセス速度が低い第2領域と、を有し、
前記第1キャッシュメモリに格納された各データのアクセス回数を計測する第1アクセス回数計測部を備え、
前記キャッシュコントローラは、
前記第1アクセス回数計測部で計測されたアクセス回数が所定の閾値を超えたデータを前記第1領域に格納し、前記閾値を超えなかったデータを前記第2領域に格納するリプレイス部と、を有する請求項1または2に記載のキャッシュメモリシステム。 - 前記第1アクセス回数計測部は、前記第1キャッシュメモリのアクセス単位であるキャッシュラインごとに設けられる請求項5に記載のキャッシュメモリシステム。
- 前記第1アクセス回数計測部は、アクセス回数が飽和値に達するまで、対応するキャッシュラインにアクセスがあるたびに計測値をインクリメントし、アクセス回数が飽和値に達した後、新たなアクセスが発生すると、飽和値に達した前記第1アクセス回数計測部以外の第1アクセス回数計測部の計測値をディクリメントする請求項6に記載のキャッシュメモリシステム。
- 前記第2キャッシュメモリよりもアクセス優先度が低く前記第2キャッシュメモリの下位階層の第3キャッシュメモリと、
前記第2キャッシュメモリから次に追い出される可能性が最大のデータのアクセス回数を計測する第2アクセス回数計測部と、
前記第3キャッシュメモリから次に追い出される可能性が最小のデータのアクセス回数を計測する第3アクセス回数計測部と、を備え、
前記キャッシュコントローラは、前記第2アクセス回数計測部で計測されたアクセス回数と、前記第3アクセス回数計測部で計測されたアクセス回数と、に基づいて、前記複数の領域のメモリサイズを制御する請求項1乃至7のいずれかに記載のキャッシュメモリシステム。 - 前記第2キャッシュメモリは、それぞれが複数のキャッシュラインを有する複数のウェイを有し、
前記キャッシュコントローラは、前記第2アクセス回数計測部で計測されたアクセス回数と、前記第3アクセス回数計測部で計測されたアクセス回数と、に基づいて、前記複数のウェイのそれぞれを前記複数の領域のいずれで使用するかを設定するウェイ数制御部を有する請求項8に記載のキャッシュメモリシステム。 - 前記第2キャッシュメモリは、
複数の構成単位を有し、各構成単位が1つのトランジスタと、1つの抵抗変化素子と、を有するメモリセルアレイと、
1ビットのデータの読出しおよび書込みに使用する前記構成単位の数を複数通りに切り替えて前記複数の領域として使用する領域選択部と、を有し、
前記キャッシュコントローラは、前記第1キャッシュメモリに対するアクセス状況に応じて、前記領域選択部を制御する請求項1乃至9のいずれか1項に記載のキャッシュメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015183218A JP5992592B1 (ja) | 2015-09-16 | 2015-09-16 | キャッシュメモリシステム |
US15/262,692 US10360151B2 (en) | 2015-09-16 | 2016-09-12 | Cache memory system including first cache memory and second cache memory having multiple regions with different access speed and processor system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015183218A JP5992592B1 (ja) | 2015-09-16 | 2015-09-16 | キャッシュメモリシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5992592B1 true JP5992592B1 (ja) | 2016-09-14 |
JP2017058955A JP2017058955A (ja) | 2017-03-23 |
Family
ID=56921024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015183218A Active JP5992592B1 (ja) | 2015-09-16 | 2015-09-16 | キャッシュメモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US10360151B2 (ja) |
JP (1) | JP5992592B1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111723115A (zh) * | 2020-06-24 | 2020-09-29 | 深圳前海微众银行股份有限公司 | 基于多级缓存的数据统计方法、装置、终端及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6996139B2 (ja) | 2017-07-14 | 2022-01-17 | 富士通株式会社 | 情報処理装置、プログラム及び情報処理方法 |
US11210234B2 (en) | 2019-10-31 | 2021-12-28 | Advanced Micro Devices, Inc. | Cache access measurement deskew |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009110532A1 (ja) * | 2008-03-07 | 2009-09-11 | 日本電気株式会社 | 半導体装置 |
JP2014179150A (ja) * | 2013-03-15 | 2014-09-25 | Toshiba Corp | プロセッサシステム |
JP2014182674A (ja) * | 2013-03-21 | 2014-09-29 | Nec Corp | 記憶装置および記憶方法 |
JP2015519640A (ja) * | 2012-04-19 | 2015-07-09 | クアルコム,インコーポレイテッド | 階層メモリの磁気抵抗ランダムアクセスメモリ(mram)アーキテクチャ |
JP2015528601A (ja) * | 2012-08-10 | 2015-09-28 | クアルコム,インコーポレイテッド | マルチコアプロセッサ用の調整可能なマルチティアstt−mramキャッシュ |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3667012A (en) | 1970-07-31 | 1972-05-30 | Westinghouse Electric Corp | Electrical apparatus with frequency controlled load compensation |
JPS5129023A (ja) | 1974-09-05 | 1976-03-11 | Gen Corp | |
US5440707A (en) | 1992-04-29 | 1995-08-08 | Sun Microsystems, Inc. | Instruction and data cache with a shared TLB for split accesses and snooping in the same clock cycle |
DE69814703D1 (de) | 1997-01-30 | 2003-06-26 | Sgs Thomson Microelectronics | Cachespeichersystem für gleichzeitig laufende Prozesse |
GB9701960D0 (en) | 1997-01-30 | 1997-03-19 | Sgs Thomson Microelectronics | A cache system |
JP5129023B2 (ja) | 2008-05-26 | 2013-01-23 | 株式会社東芝 | キャッシュメモリ装置 |
KR101861170B1 (ko) * | 2011-08-17 | 2018-05-25 | 삼성전자주식회사 | 마이그레이션 관리자를 포함하는 메모리 시스템 |
US9378793B2 (en) | 2012-12-20 | 2016-06-28 | Qualcomm Incorporated | Integrated MRAM module |
US9158673B2 (en) * | 2013-01-22 | 2015-10-13 | International Business Machines Corporation | Use of differing granularity heat maps for caching and migration |
KR102432754B1 (ko) | 2013-10-21 | 2022-08-16 | 에프엘씨 글로벌 리미티드 | 최종 레벨 캐시 시스템 및 이에 대응하는 방법 |
US9472257B2 (en) * | 2014-05-15 | 2016-10-18 | Qualcomm Incorporated | Hybrid magnetoresistive read only memory (MRAM) cache mixing single-ended and differential sensing |
-
2015
- 2015-09-16 JP JP2015183218A patent/JP5992592B1/ja active Active
-
2016
- 2016-09-12 US US15/262,692 patent/US10360151B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009110532A1 (ja) * | 2008-03-07 | 2009-09-11 | 日本電気株式会社 | 半導体装置 |
JP2015519640A (ja) * | 2012-04-19 | 2015-07-09 | クアルコム,インコーポレイテッド | 階層メモリの磁気抵抗ランダムアクセスメモリ(mram)アーキテクチャ |
JP2015528601A (ja) * | 2012-08-10 | 2015-09-28 | クアルコム,インコーポレイテッド | マルチコアプロセッサ用の調整可能なマルチティアstt−mramキャッシュ |
JP2014179150A (ja) * | 2013-03-15 | 2014-09-25 | Toshiba Corp | プロセッサシステム |
JP2014182674A (ja) * | 2013-03-21 | 2014-09-29 | Nec Corp | 記憶装置および記憶方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111723115A (zh) * | 2020-06-24 | 2020-09-29 | 深圳前海微众银行股份有限公司 | 基于多级缓存的数据统计方法、装置、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US10360151B2 (en) | 2019-07-23 |
JP2017058955A (ja) | 2017-03-23 |
US20170075808A1 (en) | 2017-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mittal et al. | A survey of architectural approaches for managing embedded DRAM and non-volatile on-chip caches | |
US9412443B2 (en) | Processor system having variable capacity memory | |
US8954672B2 (en) | System and method for cache organization in row-based memories | |
JP6364365B2 (ja) | 半導体記憶装置 | |
JP6088951B2 (ja) | キャッシュメモリシステムおよびプロセッサシステム | |
TWI652576B (zh) | Memory system and processor system | |
JP5992592B1 (ja) | キャッシュメモリシステム | |
Wang et al. | Optimizing MLC-based STT-RAM caches by dynamic block size reconfiguration | |
KR101298171B1 (ko) | 메모리 시스템 및 그 관리 방법 | |
US10606517B2 (en) | Management device and information processing device | |
JP6027567B2 (ja) | キャッシュメモリおよびプロセッサシステム | |
KR101546707B1 (ko) | 하이브리드 메인 메모리 기반의 메모리 접근 관리방법 | |
TW201908980A (zh) | 混合式高速快取記憶體及用於縮短其延遲之方法 | |
KR101502998B1 (ko) | 메모리 시스템 및 그 관리 방법 | |
CN104063289B (zh) | 降低系统软错误的方法 | |
KR101977866B1 (ko) | 병렬 tlc stt mram 기반 대용량 llc 및 이의 동작 제어 방법 | |
Jadidi et al. | Performance and power-efficient design of dense non-volatile cache in CMPS | |
KR101831226B1 (ko) | 차세대 메모리로 구성된 캐시의 제어 장치 및 그 방법 | |
CN107844430B (zh) | 存储器系统和处理器系统 | |
KR101891265B1 (ko) | 비휘발성 메모리를 사용하는 캐시의 관리 장치 및 방법 | |
US11216387B2 (en) | Hybrid cache memory and method for controlling the same | |
Park et al. | TLC STT-MRAM aware LLC for multicore processor | |
JP6074463B2 (ja) | プロセッサシステム、メモリ制御回路およびメモリシステム | |
Khajekarimi et al. | Energy minimization in the STT-RAM-based high-capacity last-level caches | |
Liang et al. | A cache consolidation design of MLC STT-ram for energy efficiency enhancement on cyber-physical systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20160719 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160817 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5992592 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |