JP2023069644A - 半導体装置および半導体装置の制御方法 - Google Patents

半導体装置および半導体装置の制御方法 Download PDF

Info

Publication number
JP2023069644A
JP2023069644A JP2021181669A JP2021181669A JP2023069644A JP 2023069644 A JP2023069644 A JP 2023069644A JP 2021181669 A JP2021181669 A JP 2021181669A JP 2021181669 A JP2021181669 A JP 2021181669A JP 2023069644 A JP2023069644 A JP 2023069644A
Authority
JP
Japan
Prior art keywords
cache
data
memory
rewrite
semiconductor device
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.)
Pending
Application number
JP2021181669A
Other languages
English (en)
Inventor
汐 中原
Shio Nakahara
隆英 吉川
Takahide Yoshikawa
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2021181669A priority Critical patent/JP2023069644A/ja
Priority to US17/862,433 priority patent/US11822481B2/en
Publication of JP2023069644A publication Critical patent/JP2023069644A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/221Static RAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/225Hybrid cache memory, e.g. having both volatile and non-volatile portions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

Figure 2023069644000001
【課題】回路規模の増加を抑えつつ、書き込み速度が互いに異なる複数のメモリを含むキャッシュのアクセス効率を向上する。
【解決手段】半導体装置は、第1メモリと、前記第1メモリが保持するデータ毎の書き換えの有無を示す書き換えフラグとを有する第1キャッシュと、第2メモリと、前記第2メモリより書き込み速度が低い第3メモリとを有し、前記第1キャッシュから追い出されたデータに対応する書き換えフラグが書き換え状態を示す場合、追い出されたデータを前記第2メモリに格納し、前記第1キャッシュから追い出されたデータに対応する書き換えフラグが非書き換え状態を示す場合、追い出されたデータを前記第3メモリに格納する第2キャッシュと、を有する。
【選択図】図3

Description

本発明は、半導体装置および半導体装置の制御方法に関する。
CPU(Central Processing Unit)等の半導体装置に搭載されるキャッシュは、外部メモリに記憶されたデータの一部を保持する。そして、キャッシュは、演算コアから発行される読み出しアクセス要求の対象データを保持している場合(キャッシュヒット)、外部メモリに読み出しアクセス要求を発行することなく、キャッシュに保持しているデータを演算コアに転送する。これにより、データのアクセス効率が向上され、演算処理装置の処理性能が向上する。すなわち、キャッシュを搭載した半導体装置は、データ転送を効率化するアーキテクチャを有する。
演算処理装置の処理性能は、キャッシュの容量が大きいほど向上するが、演算処理装置に搭載可能なキャッシュの容量には限界がある。そこで、通常はキャッシュとして使用するSRAMにタグを記憶し、DRAMにデータを記憶することで、キャッシュ容量を増加させる手法が提案されている(例えば、特許文献1参照)。また、異種のMRAM(Magnetoresistive Random Access Memory)が搭載される半導体装置において、高速で動作するMRAMをキャッシュとして使用し、低速で動作するMRAMを主記憶装置として使用する手法が提案されている(例えば、特許文献2参照)。
一方、キャッシュを有する演算処理装置と、演算処理装置で使用するデータ等を記憶する揮発性メモリおよび不揮発性メモリと、揮発性メモリおよび不揮発性メモリのアクセスを管理する管理装置とを有する情報処理装置が知られている。この種の情報処理装置では、管理装置は、書き込み回数が設定値を超えた不揮発性メモリのページの代わりに揮発性メモリにアクセスするウェアレベリングを実行する(例えば、特許文献3参照)。
特開2010-250511号公報 国際公開第2009/110532号 特開2019-164508号公報
例えば、キャッシュが、書き込み速度が互いに異なる2種類のメモリを有する場合、アクセス効率を低下させないように、書き換え頻度が高いデータは、書き込み速度が高いメモリに格納されることが好ましい。この際、書き換え頻度は、データを書き込むメモリを判定する前に分かっていることが好ましく、回路規模の増加を抑えるために、書き換え頻度を示す情報の量は、少ない方が好ましい。
1つの側面では、本発明は、回路規模の増加を抑えつつ、書き込み速度が互いに異なる複数のメモリを含むキャッシュのアクセス効率を向上することを目的とする。
一つの観点によれば、半導体装置は、第1メモリと、前記第1メモリが保持するデータ毎の書き換えの有無を示す書き換えフラグとを有する第1キャッシュと、第2メモリと、前記第2メモリより書き込み速度が低い第3メモリとを有し、前記第1キャッシュから追い出されたデータに対応する書き換えフラグが書き換え状態を示す場合、追い出されたデータを前記第2メモリに格納し、前記第1キャッシュから追い出されたデータに対応する書き換えフラグが非書き換え状態を示す場合、追い出されたデータを前記第3メモリに格納する第2キャッシュと、を有する。
回路規模の増加を抑えつつ、書き込み速度が互いに異なる複数のメモリを含むキャッシュのアクセス効率を向上することができる。
一実施形態における半導体装置の一例を示すブロック図である。 図1の第1キャッシュの動作の一例を示すフロー図である。 図1の第2キャッシュの動作の一例を示すフロー図である。 別の実施形態における半導体装置の一例を示すブロック図である。 図4のL1キャッシュのSRAMアレイの一例を示す説明図である。 図4のL2キャッシュのSRAMアレイおよびMRAMアレイの一例を示す説明図である。 図4の半導体装置の動作の一例を示すシーケンス図である。 図4のL1キャッシュが書き込み要求を受信したときの動作の一例を示すフロー図である。 図4のL1キャッシュが読み出し要求を受信したときの動作の一例を示すフロー図である。 図4のL2キャッシュのデータ格納部の動作の一例を示すフロー図である。 図4のL2キャッシュのデータ読出部の動作の一例を示すフロー図である。 図4のL2キャッシュのデータ書換部の動作の一例を示すフロー図である。
以下、図面を参照して、実施形態が説明される。
図1は、一実施形態における半導体装置の一例を示す。図1に示す半導体装置100は、例えば、CPU等のプロセッサである。半導体装置100は、第1キャッシュ110と、第1キャッシュ110の下位に配置される第2キャッシュ120とを有する。なお、半導体装置100は、例えば、第1キャッシュ110に接続され、第1キャッシュ110にアクセス要求(書き込み要求および読み出し要求)を発行する図示しない演算部を有する。演算部は、コントローラの一例である。
例えば、第1キャッシュ110および第2キャッシュ120は、それぞれL1キャッシュおよびL2キャッシュでもよく、それぞれL2キャッシュおよびL3キャッシュでもよい。第2キャッシュは、図示しない下位のキャッシュまたはメインメモリに接続される。
例えば、半導体装置100は、第1キャッシュ110に格納されるデータと第2キャッシュ120に格納されるデータとが互いに重複しないエクスクルージョンキャッシュ(ビクティムキャッシュ)のアーキテクチャを有する。このため、例えば、演算部からの読み出し要求に基づいてメインメモリから読み出されたデータは、第1キャッシュ110に直接格納される。また、第1キャッシュ110から追い出されたデータは、第2キャッシュ120に格納される。
なお、第1キャッシュ110は、図示しない演算部とともにCPUチップに搭載され、第2キャッシュは、専用チップに搭載されてもよい。この場合、CPUチップと専用チップとを互いに積層することで、半導体装置100が実現されてもよい。
第1キャッシュ110は、第1制御部112、書き換えフラグ114および第1メモリ116を有する。第1メモリ116は、データを保持する複数のデータ領域を有する。第1制御部112は、書き換えフラグ114の設定と第1メモリ116に対するデータの入出力とを制御する。書き換えフラグ114は、第1メモリ116のデータ領域にそれぞれ対応して設けられ、データ領域に保持されるデータの書き換えの有無を示す情報を保持する。例えば、書き換えフラグは、1ビットであり、論理値1が書き換えありを示し、論理値0が書き換えなしを示す。
図1では、第1メモリ116が8個のデータ領域を有し、8個のデータ領域にそれぞれ対応する書き換えフラグ114が設けられる例が示される。しかしながら、データ領域の数は、8個に限定されず、2のn乗個(nは1以上の整数)であればよい。また、各データ領域のサイズ(キャッシュラインサイズ)は、半導体装置100に搭載される演算器で使用するデータのビット数の整数倍に設定され、例えば、8バイトから256バイトである。
第1制御部112は、メインメモリから転送されるデータを第1メモリ116のデータ領域に格納する場合、データを格納するデータ領域に対応する書き換えフラグ114を非書き換え状態に設定する。第1制御部112は、データ領域に保持されたデータが、演算部からの書き込み要求に基づいて書き換えられる場合、データを書き換えるデータ領域に対応する書き換えフラグ114を書き換え状態に設定する。
書き換え状態の書き換えフラグ114は、データの書き換え頻度が高いことを示し、非書き換え状態の書き換えフラグ114は、データの書き換え頻度が低いことを示す。このように、書き換え頻度は、データ毎に1ビットで表される。書き換え頻度を示す書き換えフラグ114の情報量を少なくできるため、書き換え頻度を複数ビット(書き換え回数など)で示す場合に比べて半導体装置100の回路規模(チップサイズ)を小さくすることができる。
例えば、書き換えフラグ114を設ける場合、書き換えフラグ114のセット/リセット回路が第1キャッシュ110に設けられ、書き換えフラグ114の判定回路が第2キャッシュ120に設けられる。このため、回路規模の増大を最小限にできる。これに対して、書き換え回数で書き換え頻度を表す場合、カウンタと、カウンタを制御する制御回路とが第1キャッシュ110に設けられ、カウンタ値を比較する比較回路が第2キャッシュ120に設けられる。これにより、書き換えフラグ114を設ける場合に比べて、回路規模が増大してしまう。
また、チップサイズが予め決まっている場合、カウンタ等を設ける場合に比べて、第1メモリ116の記憶容量(データ領域の数)を増加することができる。この結果、第1キャッシュ110のキャッシュヒット率を向上することができ、データのアクセス効率を向上することができる。
さらに、第1制御部112は、第1メモリ116に保持されたデータが書き換えられた時点で書き換えフラグ114を書き換え状態に設定する。第2キャッシュ120にデータが追い出される前に、データの書き換え履歴が決定するため、第2制御部122は、書き換え履歴にしたがってデータを第2メモリ124または第3メモリ126のいずれかに格納することができる。
これに対して、第2メモリ124および第3メモリ126に格納されるデータの書き換え頻度の統計を取得し、取得した統計に基づいて、第2メモリ124または第3メモリ126のいずれにデータを格納するか決定する場合が考えられる。この場合、統計が取得されるまで、データを第2メモリ124または第3メモリ126のいずれに格納することが適切であるかを判定することができない。
なお、第1キャッシュ110がL1キャッシュの場合、データがL1キャッシュ内に留まる時間は、L2キャッシュ等の下位のキャッシュに比べて短く、データ毎の書き換え回数は、下位のキャッシュの書き換え回数に比べて少ない。このため、第1キャッシュ110で書き換え頻度を管理する場合、カウンタを使用しなくても、1ビットの書き換えフラグ114によって、書き換え頻度を精度よく表すことができる。
第2キャッシュ120は、第2制御部122、第2メモリ124および第3メモリ126を有する。第2メモリ124のデータの書き込み速度は、第3メモリ126のデータの書き込み速度より高い。なお、第2メモリ124のデータの読み出し速度は、第3メモリ126のデータの読み出し速度より速くてもよい。
第2制御部122は、第1キャッシュ110からデータが追い出された場合、追い出されたデータを第2メモリ124または第3メモリ126のいずれかに格納する。例えば、第2制御部122は、追い出されたデータに対応する書き換えフラグ114が書き換え状態を示す場合、追い出されたデータを第2メモリ124に格納する。第2制御部122は、第1キャッシュ110から追い出されたデータに対応する書き換えフラグ114が非書き換え状態を示す場合、追い出されたデータを第3メモリ126に格納する。
これにより、書き換え頻度の高いデータを書き込み速度の高い第2メモリ124に書き込むことができ、書き換え頻度の低いデータを書き込み速度の低い第3メモリ126に書き込むことができる。書き換え頻度の高いデータを第2メモリ124に書き込むことで、第2キャッシュ120のデータの書き換えに掛かる時間の平均値を短くすることができるため、第2キャッシュ120のアクセス効率を向上することができる。また、第2制御部122は、書き換えフラグ114のビット値を判定すればよいため、書き換え回数を示すカウンタ値の大小関係を判定する場合に比べて、第2メモリ124または第3メモリ126のいずれにデータを格納するかを容易に判定できる。
図2は、図1の第1キャッシュ110の動作の一例を示す。例えば、図2に示すフローは、第1メモリ116に保持されたデータの書き換え、または追い出しのタイミングで実施されてもよく、所定の頻度で実行されてもよい。第1メモリ116には、図2のフローの開始前にデータが格納されている。
まず、ステップS10において、第1制御部112は、第1メモリ116に保持されたデータを書き換えるか否かを判定する。第1制御部112は、データを書き換える場合、ステップS12を実行し、データを書き換えない場合、ステップS14に移行する。
例えば、データの書き換えは、演算部から書き込み要求が発行された場合に、書き込み要求に含まれるデータを使用して実行される。データの書き換えは、書き込み要求が第1キャッシュ110でキャッシュヒットした場合にも実行され、キャッシュミスした場合にも実行される。なお、キャッシュミスした場合、データの書き換えは、下位のキャッシュまたはメインメモリから転送されるデータが第1メモリ116に格納された後に実行される。
ステップS12において、第1制御部112は、データを書き換えたデータ領域に対応する書き換えフラグ114を書き換え状態に設定する。このように、第1制御部112は、演算部からの書き込み要求の受信に基づいて、データの書き換えとともに書き換えフラグ114を書き換え状態に設定することで、データの書き換え頻度を管理することができる。第1制御部112は、ステップS12の後、ステップS14を実行する。
ステップS14において、第1制御部112は、第1メモリ116からデータを追い出すか否かを判定する。第1制御部112は、データを追い出す場合、ステップS16を実行し、データを追い出さない場合、図2に示す動作を終了する。
ステップS16において、第1制御部112は、追い出すデータを第2キャッシュ120に出力する。次に、ステップS18において、第1制御部112は、データを追い出したデータ領域を無効化する。この際、第1制御部112は、データを追い出したデータ領域に対応する書き換えフラグを非書き換え状態に設定してもよい。そして、第1制御部112は、図2に示す動作を終了する。
図3は、図1の第2キャッシュ120の動作の一例を示す。例えば、図3に示すフローは、第1キャッシュ110から追い出されたデータを受信したタイミングで実施されてもよく、所定の頻度で実行されてもよい。
まず、ステップS20において、第2制御部122は、第1キャッシュ110から追い出されたデータを受信したか否かを判定する。第2制御部122は、第1キャッシュ110から追い出されたデータを受信した場合、ステップS22を実行し、第1キャッシュ110から追い出されたデータを受信していない場合、図3に示す動作を終了する。
ステップS22において、第2制御部122は、データとともに受信した書き換えフラグ114が書き換え状態か否かを判定する。第2制御部122は、書き換え状態の場合、ステップS24を実行し、非書き換え状態の場合、ステップS26を実行する。
ステップS24において、第2制御部122は、第1キャッシュ110から受信したデータを第2メモリ124に格納し、図3に示す動作を終了する。ステップS26において、第2制御部122は、第1キャッシュ110から受信したデータを第3メモリ126に格納し、図3に示す動作を終了する。
なお、第2制御部122は、ステップS24において、第2メモリ124に空きがない場合、受信したデータの格納前に、第2メモリ124に保持されているデータを下位のキャッシュまたはメインメモリに追い出す追い出し処理を実行する。同様に、第2制御部122は、ステップS26において、第3メモリ126に空きがない場合、受信したデータの格納前に、第3メモリ126に保持されているデータを下位のキャッシュまたはメインメモリに追い出す追い出し処理を実行する。
以上、この実施形態では、第1キャッシュ110から追い出されたデータの書き込み先を、書き換え頻度を示す書き換えフラグ114に応じて決めることで、半導体装置100の回路規模(チップサイズ)を小さくすることができる。そして、第2キャッシュ120は、書き換えフラグ114のビット値に応じて、書き換え頻度の高いデータを書き込み速度の高い第2メモリ124に書き込むことができ、書き換え頻度の低いデータを書き込み速度の低い第3メモリ126に書き込むことができる。この結果、回路規模の増加を抑えつつ、書き込み速度が互いに異なる第2メモリ124および第3メモリ126を含む第2キャッシュ120のアクセス効率を向上することができる。
第1制御部112は、演算部からの書き込み要求の受信に基づいて、データの書き換えとともに書き換えフラグ114を書き換え状態に設定することで、データの書き換え頻度を管理することができる。
図4は、別の実施形態における半導体装置の一例を示す。上述した実施形態と同様の要素については、同じ符号を付し、詳細な説明は省略する。図3に示す半導体装置200は、例えば、CPU等のプロセッサである。半導体装置200は、CPU300とL2キャッシュ400とを有する。なお、図4以降に示す半導体装置200の構成、機能および動作は、図1に示した半導体装置100に適用されてもよい。
CPU300は、演算部310と、制御部322およびSRAM(Static Random Access Memory)アレイ324を有するL1キャッシュ320とを有する。L2キャッシュ400は、データ格納部412、データ読出部414およびデータ書換部416を有する制御部410と、SRAMアレイ420とMRAMアレイ430とを有する。L2キャッシュ400は、メインメモリ500に接続される。なお、L2キャッシュ400は、L3キャッシュ等の下位のキャッシュを介してメインメモリ500に接続されてもよい。
L1キャッシュ320は、第1キャッシュの一例であり、L2キャッシュ400は、第2キャッシュの一例である。SRAMアレイ324は、第1メモリの一例であり、SRAMアレイ420は、第2メモリの一例であり、MRAMアレイ430は、第3メモリの一例である。SRAMアレイ324は、書き換えフラグWFLGおよびデータを保持する複数のデータ領域を有する。
例えば、SRAMアレイ420は、MRAMアレイ430に比べて書き込み速度および読み出し速度が高い。また、SRAMアレイ420は、MRAMアレイ430に比べてメモリセルサイズが大きい。なお、MRAMアレイ430の代わりに、SRAMアレイ420よりメモリセルサイズが小さく、書き込み速度が低い他のメモリアレイが搭載されてもよい。
演算部310は、例えば、演算命令に基づいて演算を実行する複数の演算器と、ロード命令およびストア命令に基づいてメモリアクセスアドレスを生成するアドレス生成器とを有する。演算部310は、ロード命令に基づいて読み出し要求をL1キャッシュ320に発行し、ストア命令に基づいて書き込み要求をL1キャッシュ320に発行する。
制御部322は、演算部310からの書き込み要求または読み出し要求に含まれるアドレスに基づいて、L1キャッシュ320のキャッシュヒットまたはキャッシュミスを判定する。書き込み要求を受信した制御部322は、キャッシュヒットを判定した場合、書き込み要求に含まれるデータをSRAMアレイ324に格納し、書き換えフラグWFLGを書き換え状態に設定する。読み出し要求を受信した制御部322は、キャッシュヒットを判定した場合、SRAMアレイ324から読み出し対象のデータを読み出し、演算部310に応答する。
書き込み要求を受信した制御部322は、キャッシュミスを判定した場合、L2キャッシュ400に書き込み要求を発行する。そして、制御部322は、L2キャッシュ400から書き込み完了の通知を受信した場合、書き込み要求の処理を終了する。制御部322は、L2キャッシュ400から書き込み完了の通知を受信せず、メインメモリ500から書き込み要求の対象アドレスに保持されたデータを受信した場合、受信したデータをSRAMアレイ324に格納する。さらに、制御部322は、SRAMアレイ420に格納したデータを書き込み要求に含まれるデータで書き換え、書き換えフラグWFLGを書き換え状態に設定する。
読み出し要求を受信した制御部322は、キャッシュミスを判定した場合、L2キャッシュ400に読み出し要求を発行する。そして、L2キャッシュ400またはメインメモリ500から転送されるデータをSRAMアレイ324に格納し、書き換えフラグWFLGを非書き換え状態に設定する。
なお、制御部322は、L2キャッシュ400に発行した読み出し要求に基づいて受信するデータを格納するデータ領域がSRAMアレイ324に存在しない場合がある。この場合、制御部322は、SRAMアレイ324に保持されているデータを書き換えフラグWFLGとともにL2キャッシュ400に追い出す。
L2キャッシュ400において、データ格納部412は、L1キャッシュ320から追い出されたデータと書き換え状態の書き換えフラグWFLGとを受信した場合、受信したデータをSRAMアレイ420に格納する。データ格納部412は、L1キャッシュ320からの追い出されたデータと非書き換え状態の書き換えフラグWFLGとを受信した場合、受信したデータをMRAMアレイ430に格納する。
データ読出部414は、L1キャッシュ320から読み出し要求を受けた場合、SRAMアレイ420およびMRAMアレイ430のキャッシュヒットまたはキャッシュミスを判定する。データ読出部414は、キャッシュヒットを判定した場合、SRAMアレイ420またはMRAMアレイ430から読み出し要求の対象データを読み出し、読み出したデータをL1キャッシュ320に出力する。データ読出部414は、キャッシュミスを判定した場合、メインメモリ500に読み出し要求を発行する。なお、読み出し要求に基づいてメインメモリ500から読み出されるデータは、L2キャッシュ400を介することなくL1キャッシュ320に直接転送される。
なお、CPU300とL2キャッシュ400とは、それぞれチップの形態を有してもよい。CPUチップとL2キャッシュチップとを互いに積層することで、半導体装置200が実現されてもよい。また、書き換えフラグWFLGを含むSRAMアレイ420を有するL2キャッシュと、SRAMアレイ420およびMRAMアレイ430を有するL3キャッシュにより、図4と同様のキャッシュシステムが構築されてもよい。
図5は、図4のL1キャッシュ320のSRAMアレイ324の一例を示す。なお、図1の第1メモリ116も図5と同様の構成を有してもよい。SRAMアレイ324は、それぞれが4つのエントリを含む2つのウェイWAY(WAY0、WAY1)を有する。各ウェイWAY0、WAY1の各エントリは、バリッドフラグV、ダーティフラグDRTYおよび書き換えフラグWFLGと、アドレスADDRの一部であるタグ値が格納される領域TAGと、データが格納される領域DTを有する。なお、SRAMアレイ324が有するウェイWAYの数は、例えば、4個でもよい。
バリッドフラグVは、エントリに格納されたデータが有効の場合、"1"に設定され、無効の場合"0"に設定される。ダーティフラグDRTYは、メインメモリ500からデータが転送されたときに"0"に設定され、データの書き換え時に"1"に設定される。また、"1"のダーティフラグDRTYは、L2キャッシュ400またはメインメモリ500からの書き戻し要求によりデータが書き戻され、いわゆるシェア状態になったときに"0"に設定される。例えば、書き戻し要求は、他のCPU300からの読み出し要求の対象データが、SRAMアレイ324内で更新されている場合に発行される。
書き換えフラグWFLGは、メインメモリ500からデータが転送された場合に"0"に設定され、書き込み要求によりデータが書き換えられた場合に"1"に設定される。なお、一度"1"に設定された書き換えフラグWFLGは、"0"に戻されることはない。これにより、データの書き戻しによりダーティフラグDRTYが"1"から"0"に戻されても、書き換えフラグWFLGの"1"を維持することができ、データの書き換え履歴を消失することなく保持することができる。タグ値TAGの領域には、アドレスADDR内のタグTAGに対応する値が格納される。
特に限定されないが、この実施形態では、説明を分かりやすくするために、データ領域DTに保持されるデータは、128ビット(16バイト)であるとする。実際には、データ領域DTに保持されるデータは、例えば、64バイトから512バイト(2のべき乗)でもよい。データのサイズは、メインメモリ500に対して入出力されるデータサイズと等しく、いわゆるキャッシュラインのサイズである。
また、SRAMアレイ324は、セット値SET(インデックス)を識別する領域と、最近使われたウェイWAYの番号を示す使用情報USが格納される領域とを有する。セット値SETおよび使用情報USは、ウェイWAY0、WAY1に共通に設けられる。セット値SETは、SRAMアレイ324の4つのエントリを識別するために使用されるため、セット値SETは、2ビットで表される。例えば、SRAMアレイ324が64個のエントリを有する場合、セット値SETは、6ビットで表される。なお、セット値SETは、エントリを識別する番号であるため、SRAMアレイ420は、セット値SETの領域を持たなくてもよい。
演算部310から発行される書き込み要求または読み出し要求に含まれるアドレスADDRは、タグ値TAG、セット値SET、ブロックオフセットBLK-OFSおよびバイトオフセットBT-OFTを含む。例えば、ブロックオフセットBLK-OFSは、128ビットのデータを32ビットずつの4ブロックに分ける場合、2ビットで表される。バイトオフセットBT-OFTは、1ブロックが32ビットの場合、2ビットで表される。
そして、制御部322は、書き込み要求または読み出し要求に含まれるアドレスADDRのセット値SETに対応するエントリに格納されたタグ値TAGが、アドレスADDRに含まれるタグ値TAGと一致する場合、キャッシュヒットを判定する。制御部322は、アドレスADDRのセット値SETに対応するエントリに格納されたタグ値TAGが、アドレスADDRに含まれるタグ値TAGと一致しない場合、キャッシュミスを判定する。
図6は、図4のL2キャッシュ400のSRAMアレイ420およびMRAMアレイ430の一例を示す。図5のSRAMアレイ324と同様の要素については、詳細な説明は省略する。なお、図1の第2メモリ124および第3メモリ126も図6と同様の構成を有してもよい。SRAMアレイ420およびMRAMアレイ430の各々は、それぞれ4つのエントリを有する2つのウェイWAY(WAY0、WAY1)を有する。なお、SRAMアレイ420およびMRAMアレイ430の各々が有するウェイWAYの数は、例えば、4個または8個でもよい。また、SRAMアレイ420およびMRAMアレイ430のいずれかが、複数のウェイWAYを有してもよい。
各ウェイWAYのエントリは、バリッドフラグVと、ダーティフラグDRTYと、タグ値が格納される領域TAGと、データが格納される領域DTとを有する。すなわち、SRAMアレイ420およびMRAMアレイ430のウェイWAYの構造は、書き換えフラグWFLGを持たないことを除き、L1キャッシュ320のSRAMアレイ324のウェイWAYの構造と同様である。
また、SRAMアレイ420およびMRAMアレイ430の各々は、図5のSRAMアレイ324と同様に、使用情報USが格納される領域を有する。さらに、L2キャッシュ400は、SRAMアレイ420およびMRAMアレイ430に共通に使用されるセット値SETの領域を有する。例えば、SRAMアレイ420およびMRAMアレイ430がそれぞれ2048個のエントリを有する場合、セット値SETは、11ビットで表される。
セット値SETを共通化することにより、SRAMアレイ420およびMRAMアレイ430毎にセット値SETを管理する場合に比べて、データ格納部412およびデータ読出部414によるL2キャッシュ400の制御を容易にすることができる。これにより、データ格納部412およびデータ読出部414の回路規模を削減することができる。
SRAMアレイ420およびMRAMアレイ430の各ウェイWAY0、WAY1の各エントリは、バリッドフラグV、ダーティフラグDRTY、書き換えフラグWFLG、タグ値TAGおよびデータDTが格納される領域を有する。SRAMアレイ420およびMRAMアレイ430の各ウェイWAYに格納されるバリッドフラグV、ダーティフラグDRTYおよびタグ値TAGの使い方は、図5のSRAMアレイ324に格納される各情報の使い方と同様である。
図6に示すウェイWAYの構成により、データの読み出し時に、SRAMアレイ420およびMRAMアレイ430を1つのメモリアレイ(図6の例では、4ウェイセットアソシエイティブキャッシュ)として機能させることができる。また、データの書き込み時に、SRAMアレイ420およびMRAMアレイ430の各々を、2ウェイセットアソシエイティブキャッシュとして機能させることができる。
図7は、図4の半導体装置200の動作の一例を示す。すなわち、図7は、半導体装置200の制御方法の一例を示す。図7では、演算部310から読み出し要求RDが発行された場合の動作の例が示される。図7のシーケンス図において、符号altは、条件分岐処理を示す。なお、図1の半導体装置100も図7と同様に動作してもよい。
L1キャッシュ320の制御部322は、読み出し要求RDに含まれるアドレスADDRに基づいて、L1キャッシュ320のキャッシュヒットまたはキャッシュミスを判定する(図7(a))。制御部322は、キャッシュヒットを判定した場合(L1ヒット)、SRAMアレイ324に保持されたデータDTを演算部310に出力する(図7(b))。制御部322は、キャッシュミスを判定した場合、L2キャッシュ400のデータ読出部414にアドレスADDRを含む読み出し要求RDを出力する(図7(c))。
データ読出部414は、受信したアドレスADDRをSRAMアレイ420およびMRAMアレイ430にそれぞれ出力し、SRAMアレイ420およびMRAMアレイ430にキャッシュヒットまたはキャッシュミスを判定させる(図7(d))。SRAMアレイ420は、キャッシュヒットを判定した場合(L2ヒット)、SRAMアレイ420に保持された読み出し対象のデータDTをデータ読出部414に出力する(図7(e))。MRAMアレイ430は、キャッシュヒットを判定した場合(L2ヒット)、MRAMアレイ430に保持された読み出し対象のデータDTをデータ読出部414に出力する(図7(f))。
データ読出部414は、SRAMアレイ420またはMRAMアレイ430から受信したデータDTを演算部310に出力する(図7(g))。データDTは、制御部322にも転送され、L1キャッシュ320のSRAMアレイ324にも格納される(図7(h))。
一方、SRAMアレイ420は、キャッシュミスを判定した場合(L2ミス)、キャッシュミスを示すミス情報MISSをデータ読出部414に出力する(図7(i))。同様に、MRAMアレイ430は、キャッシュミスを判定した場合(L2ミス)、ミス情報MISSをデータ読出部414に出力する(図7(j))。
データ読出部414は、SRAMアレイ420およびMRAMアレイ430の両方からミス情報MISSを受信した場合、メインメモリ500にアドレスADDRを含む読み出し要求RDを出力する(図7(k))。メインメモリ500は、保持している読み出し対象のデータDTを演算部310に出力する(図7(l))。データDTは、制御部322にも転送され、L1キャッシュ320のSRAMアレイ324にも格納される(図7(m))。
その後、演算部310からの図示しない書き込み要求がL1キャッシュ320でキャッシュヒットし、L1キャッシュ320のSRAMアレイ324に保持されたデータが書き換えられ、書き換えフラグWFLGが"1"に設定される(図7(n))。さらに、図示を省略するが、演算部310からの読み出し要求または書き込み要求がL1キャッシュ320でキャッシュミスする。
制御部322は、メインメモリ500から出力されるデータを格納するエントリに空きがない場合、図7(n)で書き換えたデータDT(victim)を書き換えフラグWFLG(="1")とともにL2キャッシュ400に追い出す(図7(o))。データ格納部412は、書き換えフラグWFLGが"1"のため、受信したデータDT(victim)をSRAMアレイ420に格納する(図7(p))。
なお、制御部322が、書き換えられていないデータDT(clean)を書き換えフラグWFLG(="0")とともにL2キャッシュ400に追い出す場合、データ格納部412は、受信したデータDT(clean)をMRAMアレイ430に格納する(図7(q))。
図8は、図4のL1キャッシュ320が書き込み要求WRを受信したときの動作の一例を示す。図8に示すフローは、演算部310から書き込み要求WRを受信したことに基づいて開始される。なお、図1の第1キャッシュ110も図8と同様に動作してもよい。
まず、ステップS300において、L1キャッシュ320の制御部322は、書き込み要求WRに含まれるアドレスADDRに基づいて、L1キャッシュ320のキャッシュヒットまたはキャッシュミスを判定する。制御部322は、キャッシュヒットを判定した場合、ステップS312を実行し、キャッシュミスを判定した場合、ステップS302を実行する。
ステップS302において、制御部322は、L2キャッシュ400に書き込み要求WRに対応するデータDTを要求する。次に、ステップS303、S304において、制御部322は、L2キャッシュ400からの書き込み完了の通知、または、メインメモリ500からのデータの受信を待つ。制御部322は、ステップS303において書き込み完了の通知を受信した場合、図8に示す処理を終了する。制御部322は、ステップS304においてメインメモリ500からデータを受信した場合、ステップS306を実行する。
ステップS306において、制御部322は、L1キャッシュ320のSRAMアレイ324のエントリに空きがあるか否かを判定する。制御部322は、エントリに空きがある場合、ステップS310を実行し、エントリに空きがない場合、ステップS308を実行する。
ステップS308において、制御部322は、SRAMアレイ324から追い出すデータを選び、書き換えフラグWFLGとともにL2キャッシュ400に送信することで、エントリのいずれかを空ける。ステップS310において、制御部322は、メインメモリ500から受信したデータDTを空いているエントリに格納する(キャッシュイン)。この後、制御部322は、ステップS312を実行する。
ステップS312において、制御部322は、ステップS312で格納したデータDTを演算部310から書き込み要求WRとともに受信したデータDTで書き換え、データDTを書き換えたエントリの書き換えフラグWFLGを"1"に設定する。そして、制御部322は、図8に示す動作を終了する。なお、このとき、ダーティフラグDRTYも"1"に設定される。演算部310からの書き込み要求に応じてL1キャッシュ320にデータを格納するときに書き換えフラグWFLGを"1"に設定することで、制御部322の回路規模の増大を抑えて、データ毎に書き換え頻度を記憶することができる。例えば、キャッシュ容量が他より少なく、データが留まる時間が他より短いL1キャッシュ320では、1ビットの書き換えフラグWFLGによっても、データの書き換え頻度を精度よく表すことができる。
図9は、図4のL1キャッシュ320が読み出し要求RDを受信したときの動作の一例を示す。図9に示すフローは、演算部310から読み出し要求RDを受信したことに基づいて開始される。図8と同様の動作については、詳細な説明は省略する。なお、図1の第1キャッシュ110も図9と同様に動作してもよい。
まず、ステップS320において、L1キャッシュ320の制御部322は、読み出し要求RDに含まれるアドレスADDRに基づいて、L1キャッシュ320のキャッシュヒットまたはキャッシュミスを判定する。制御部322は、キャッシュヒットを判定した場合、ステップS332を実行し、キャッシュミスを判定した場合、ステップS322を実行する。
ステップS322において、制御部322は、L2キャッシュ400に読み出し要求RDに対応するデータDTを要求する。次に、ステップS324において、制御部322は、L2キャッシュ400からのデータを待ち、データを受信した場合、ステップS326を実行する。
ステップS326、S328のそれぞれの動作は、図8のステップS306、S308のそれぞれの動作と同様である。ステップS326またはステップS328の後、ステップS330において、制御部322は、L2キャッシュ400から受信したデータDTを空いているエントリに格納する(キャッシュイン)。この後、制御部322は、ステップS332を実行する。ステップS332において、制御部322は、読み出し要求RDの対象データDTを演算部310に送信し、図9に示す動作を終了する。
図10は、図4のL2キャッシュ400のデータ格納部412の動作の一例を示す。図10に示す動作は、データ格納部412がL1キャッシュ320からの追い出しデータを受信したことに基づいて開始される。なお、図1の第2キャッシュ120も図10と同様に動作してもよい。
まず、ステップS400において、データ格納部412は、追い出しデータとともにL1キャッシュ320から受信する書き換えフラグWFLGが"1"か否かを判定する。データ格納部412は、書き換えフラグWFLGが"1"の場合、書き換え履歴があるため、ステップS402を実行し、書き換えフラグWFLGが"0"の場合、書き換え履歴がないためステップS412を実行する。
ステップS402において、データ格納部412は、L2キャッシュ400のSRAMアレイ420に空きエントリ(空きウェイWAY)があるか否かを判定する。データ格納部412は、空きエントリがある場合、ステップS406を実行し、空きエントリがない場合、ステップS404を実行する。
ステップS404において、データ格納部412は、SRAMアレイ420に保持されたデータのいずれかをメインメモリ500に追い出し、エントリを空ける。この後、データ格納部412は、ステップS406を実行する。ステップS406において、データ格納部412は、SRAMアレイ420の空きエントリに、L1キャッシュ320から追い出されたデータを格納し、図10に示す動作を終了する。
一方、ステップS412において、データ格納部412は、L2キャッシュ400のMRAMアレイ430に空きエントリ(空きウェイWAY)があるか否かを判定する。データ格納部412は、空きエントリがある場合、ステップS416を実行し、空きエントリがない場合、ステップS414を実行する。
ステップS414において、データ格納部412は、MRAMアレイ430に保持されたデータのいずれかをメインメモリ500に追い出し、エントリを空ける。この後、データ格納部412は、ステップS416を実行する。ステップS416において、データ格納部412は、MRAMアレイ430の空きエントリに、L1キャッシュ320から追い出されたデータを格納し、図10に示す動作を終了する。
図11は、図4のL2キャッシュ400のデータ読出部414の動作の一例を示す。図11に示す動作は、データ読出部414がL1キャッシュ320からの読み出し要求RDを受信したことに基づいて開始される。なお、図1の第2キャッシュ120も図11と同様に動作してもよい。
まず、ステップS420において、データ読出部414は、読み出し要求RDに含まれるアドレスADDRに基づいて、L2キャッシュ400のキャッシュヒットまたはキャッシュミスを判定する。ここで、データ読出部414は、SRAMアレイ420とMRAMアレイ430との一方のキャッシュヒットまたは両方のキャッシュミスを判定する。データ読出部414は、一方のキャッシュヒットを判定した場合、ステップS422を実行し、両方のキャッシュミスを判定した場合、ステップS424を実行する。
ステップS422において、データ読出部414は、キャッシュヒットしたSRAMアレイ420またはMRAMアレイ430から読み出し対象のデータDTを読み出し、読み出したデータDTを演算部310およびL1キャッシュ320に送信する。そして、データ読出部414は、図11に示す動作を終了する。
ステップS424において、データ読出部414は、メインメモリ500に読み出し対象のデータを要求する読み出し要求を発行し、図11に示す動作を終了する。なお、読み出し要求に基づいてメインメモリ500から転送されるデータは、L2キャッシュ400を介することなくL1キャッシュ320に直接転送される。このため、データ読出部414は、メインメモリ500からのデータの受信処理を実行しない。
図12は、図4のL2キャッシュ400のデータ書換部416の動作の一例を示す。図12に示す動作は、データ書換部416がL1キャッシュ320からの書き込み要求WRを受信したことに基づいて開始される。なお、図1の第2キャッシュ120も図12と同様に動作してもよい。
まず、ステップS430において、データ書換部416は、書き込み要求WRに含まれるアドレスADDRに基づいて、L2キャッシュ400のキャッシュヒットまたはキャッシュミスを判定する。ここで、データ書換部416は、SRAMアレイ420とMRAMアレイ430との一方のキャッシュヒットまたは両方のキャッシュミスを判定する。データ書換部416は、一方のキャッシュヒットを判定した場合、ステップS432を実行し、両方のキャッシュミスを判定した場合、ステップS434を実行する。
ステップS432において、データ書換部416は、キャッシュヒットしたSRAMアレイ420またはMRAMアレイ430に保持されたデータを書き込み要求の対象データに書き換え、L1キャッシュ320にデータの書き込み完了を通知する。そして、データ書換部416は、図12に示す動作を終了する。
ステップS434において、データ書換部416は、メインメモリ500の書き込み要求の対象アドレスに保持されたデータの読み出し要求をメインメモリ500に発行し、図11に示す動作を終了する。
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。例えば、L1キャッシュ320のSRAMアレイ324から追い出されたデータを、書き換えフラグWFLGが示す書き換え頻度に応じて、書き込み速度が異なるSRAMアレイ420またはMRAMアレイ430の一方に格納することができる。この結果、回路規模の増加を抑えつつ、SRAMアレイ420およびMRAMアレイ430を含むL2キャッシュ400のアクセス効率を向上することができる。
ダーティフラグDRTYとは別に書き換えフラグWFLGを設けることで、データDTの書き戻しによりダーティフラグDRTYが"1"から"0"に戻されても、書き換えフラグWFLGの"1"を維持することができる。これにより、データDTの書き換えの履歴を消失することなく保持することができる。
書き換えフラグWFLGをSRAMアレイ324のエントリ毎に設けることで、各エントリのサイズの増加を最小限にして、データの書き換え頻度を各エントリに保持することができる。これにより、書き換えフラグWFLGを設ける場合にも、L1キャッシュ320の回路規模の増加を抑制することができる。
書き換えフラグWFLGをSRAMアレイ324のウェイWAY毎に各エントリに設けることで、L1キャッシュ320のキャッシュヒットの効率を向上しつつ、L1キャッシュ320の回路規模を抑制することができる。
セット値SETを共通化することにより、セット値SETをSRAMアレイ420およびMRAMアレイ430毎に管理する場合に比べて、データ格納部412およびデータ読出部414によるL2キャッシュ400の制御を容易にすることができる。これにより、データ格納部412およびデータ読出部414の回路規模を削減することができる。
L2キャッシュ400は、セット値SETをSRAMアレイ420およびMRAMアレイ430で共通に割り当てる。これにより、例えば、L2キャッシュ400を、データの読み出し時に4ウェイセットアソシエイティブキャッシュとして機能させることができ、データの書き込み時に2ウェイセットアソシエイティブキャッシュとして機能させることができる。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
第1メモリと、前記第1メモリが保持するデータ毎の書き換えの有無を示す書き換えフラグとを有する第1キャッシュと、
第2メモリと、前記第2メモリより書き込み速度が低い第3メモリとを有し、前記第1キャッシュから追い出されたデータに対応する書き換えフラグが書き換え状態を示す場合、追い出されたデータを前記第2メモリに格納し、前記第1キャッシュから追い出されたデータに対応する書き換えフラグが非書き換え状態を示す場合、追い出されたデータを前記第3メモリに格納する第2キャッシュと、
を有する半導体装置。
(付記2)
前記第1キャッシュは、コントローラからの書き込み要求に応じて前記書き込み要求の対象データを前記第1メモリに格納し、前記対象データに対応する書き換えフラグを書き換え状態に設定する
付記1に記載の半導体装置。
(付記3)
前記第1キャッシュは、
前記第1メモリに保持されたデータが、メインメモリに保持されたデータと異なるダーティ状態であることを示すダーティフラグをデータ毎に有し、
前記第1メモリに保持されたデータが書き換えられたとき、対応する書き換えフラグを書き換え状態に設定し、対応するダーティフラグをダーティ状態に設定し、
前記第1メモリに保持されたダーティ状態のデータが前記メインメモリに書き戻されたとき、対応する書き換えフラグを書き換え状態に維持し、対応するダーティフラグを非ダーティ状態に設定する
付記1または付記2に記載の半導体装置。
(付記4)
前記第1キャッシュは、データをそれぞれ保持する複数の第1キャッシュラインを有し、
前記書き換えフラグは、前記第1キャッシュライン毎に設けられる
付記1ないし付記3のいずれか1項に記載の半導体装置。
(付記5)
前記複数の第1キャッシュラインの各々は、複数のウェイを含み、
前記書き換えフラグは、前記複数のウェイのそれぞれに対応して前記第1キャッシュライン毎に設けられる
付記4に記載の半導体装置。
(付記6)
前記第2キャッシュは、前記第2メモリおよび前記第3メモリに共通の複数の第2キャッシュラインを有する
付記1ないし付記5のいずれか1項に記載の半導体装置。
(付記7)
前記第2キャッシュラインは、前記第1メモリおよび前記第2メモリの少なくとも一方に複数のウェイを含む
付記6に記載の半導体装置。
(付記8)
前記第1キャッシュに保持されるデータと、前記第2キャッシュに保持されるデータとは、互いに重複しない
付記1ないし付記7のいずれか1項に記載の半導体装置。
(付記9)
前記第2メモリはSRAMであり、前記第3メモリはMRAMである
付記1ないし付記8のいずれか1項に記載の半導体装置。
(付記10)
第1メモリを有する第1キャッシュと、第2メモリと、前記第2メモリより書き込み速度が遅い第3メモリと、を有する第2キャッシュとを有する半導体装置の制御方法であって、
前記第1キャッシュは、前記第1メモリが保持するデータ毎の書き換えの有無を示す書き換えフラグを有し、
前記第2キャッシュは、
前記第1キャッシュから追い出されたデータに対応する書き換えフラグが書き換え状態を示す場合、追い出されたデータを前記第2メモリに格納し、
前記第1キャッシュから追い出されたデータに対応する書き換えフラグが非書き換え状態を示す場合、追い出されたデータを前記第3メモリに格納する
半導体装置の制御方法。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
100 半導体装置
110 第1キャッシュ
112 第1制御部
114 書き換えフラグ
116 第1メモリ
120 第2キャッシュ
122 第2制御部
124 第2メモリ
126 第3メモリ
200 半導体装置
300 CPU
310 演算部
322 制御部
324 SRAMアレイ
400 L2キャッシュ
410 制御部
412 データ格納部
414 データ読出部
416 データ書換部
420 SRAMアレイ
430 MRAMアレイ
500 メインメモリ
ADDR アドレス
DRTY ダーティフラグ
RD 読み出し要求
WFLG 書き換えフラグ
WR 書き込み要求

Claims (8)

  1. 第1メモリと、前記第1メモリが保持するデータ毎の書き換えの有無を示す書き換えフラグとを有する第1キャッシュと、
    第2メモリと、前記第2メモリより書き込み速度が低い第3メモリとを有し、前記第1キャッシュから追い出されたデータに対応する書き換えフラグが書き換え状態を示す場合、追い出されたデータを前記第2メモリに格納し、前記第1キャッシュから追い出されたデータに対応する書き換えフラグが非書き換え状態を示す場合、追い出されたデータを前記第3メモリに格納する第2キャッシュと、
    を有する半導体装置。
  2. 前記第1キャッシュは、コントローラからの書き込み要求に応じて前記書き込み要求の対象データを前記第1メモリに格納し、前記対象データに対応する書き換えフラグを書き換え状態に設定する
    請求項1に記載の半導体装置。
  3. 前記第1キャッシュは、
    前記第1メモリに保持されたデータが、メインメモリに保持されたデータと異なるダーティ状態であることを示すダーティフラグをデータ毎に有し、
    前記第1メモリに保持されたデータが書き換えられたとき、対応する書き換えフラグを書き換え状態に設定し、対応するダーティフラグをダーティ状態に設定し、
    前記第1メモリに保持されたダーティ状態のデータが前記メインメモリに書き戻されたとき、対応する書き換えフラグを書き換え状態に維持し、対応するダーティフラグを非ダーティ状態に設定する
    請求項1または請求項2に記載の半導体装置。
  4. 前記第1キャッシュは、データをそれぞれ保持する複数の第1キャッシュラインを有し、
    前記書き換えフラグは、前記第1キャッシュライン毎に設けられる
    請求項1ないし請求項3のいずれか1項に記載の半導体装置。
  5. 前記複数の第1キャッシュラインの各々は、複数のウェイを含み、
    前記書き換えフラグは、前記複数のウェイのそれぞれに対応して前記第1キャッシュライン毎に設けられる
    請求項4に記載の半導体装置。
  6. 前記第2キャッシュは、前記第2メモリおよび前記第3メモリに共通の複数の第2キャッシュラインを有する
    請求項1ないし請求項5のいずれか1項に記載の半導体装置。
  7. 前記第2キャッシュラインは、前記第1メモリおよび前記第2メモリの少なくとも一方に複数のウェイを含む
    請求項6に記載の半導体装置。
  8. 第1メモリを有する第1キャッシュと、第2メモリと、前記第2メモリより書き込み速度が遅い第3メモリと、を有する第2キャッシュとを有する半導体装置の制御方法であって、
    前記第1キャッシュは、前記第1メモリが保持するデータ毎の書き換えの有無を示す書き換えフラグを有し、
    前記第2キャッシュは、
    前記第1キャッシュから追い出されたデータに対応する書き換えフラグが書き換え状態を示す場合、追い出されたデータを前記第2メモリに格納し、
    前記第1キャッシュから追い出されたデータに対応する書き換えフラグが非書き換え状態を示す場合、追い出されたデータを前記第3メモリに格納する
    半導体装置の制御方法。
JP2021181669A 2021-11-08 2021-11-08 半導体装置および半導体装置の制御方法 Pending JP2023069644A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021181669A JP2023069644A (ja) 2021-11-08 2021-11-08 半導体装置および半導体装置の制御方法
US17/862,433 US11822481B2 (en) 2021-11-08 2022-07-12 Semiconductor device and method for controlling semiconductor device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021181669A JP2023069644A (ja) 2021-11-08 2021-11-08 半導体装置および半導体装置の制御方法

Publications (1)

Publication Number Publication Date
JP2023069644A true JP2023069644A (ja) 2023-05-18

Family

ID=86229955

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021181669A Pending JP2023069644A (ja) 2021-11-08 2021-11-08 半導体装置および半導体装置の制御方法

Country Status (2)

Country Link
US (1) US11822481B2 (ja)
JP (1) JP2023069644A (ja)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008055272A2 (en) * 2006-11-04 2008-05-08 Virident Systems, Inc. Integrating data from symmetric and asymmetric memory
JP5435299B2 (ja) 2008-03-07 2014-03-05 日本電気株式会社 半導体装置
JP2010250511A (ja) 2009-04-14 2010-11-04 Kyushu Univ キャッシュメモリ装置
US8407421B2 (en) * 2009-12-16 2013-03-26 Intel Corporation Cache spill management techniques using cache spill prediction
US9043530B1 (en) * 2012-04-09 2015-05-26 Netapp, Inc. Data storage within hybrid storage aggregate
US10133678B2 (en) * 2013-08-28 2018-11-20 Advanced Micro Devices, Inc. Method and apparatus for memory management
US9946646B2 (en) * 2016-09-06 2018-04-17 Advanced Micro Devices, Inc. Systems and method for delayed cache utilization
JP6826066B2 (ja) 2018-03-19 2021-02-03 株式会社東芝 管理装置、情報処理装置およびメモリ制御方法

Also Published As

Publication number Publication date
US11822481B2 (en) 2023-11-21
US20230143732A1 (en) 2023-05-11

Similar Documents

Publication Publication Date Title
US7380065B2 (en) Performance of a cache by detecting cache lines that have been reused
KR101826073B1 (ko) 메모리 관리를 위한 캐시 동작들
US20060155934A1 (en) System and method for reducing unnecessary cache operations
US20020116584A1 (en) Runahead allocation protection (rap)
US20080098178A1 (en) Data storage on a switching system coupling multiple processors of a computer system
JP2010191638A (ja) キャッシュ装置
US20170091099A1 (en) Memory controller for multi-level system memory having sectored cache
US10261901B2 (en) Method and apparatus for unneeded block prediction in a computing system having a last level cache and a multi-level system memory
CN111414132A (zh) 带异构存储器的主存储设备、计算机系统及数据管理方法
US10185619B2 (en) Handling of error prone cache line slots of memory side cache of multi-level system memory
JP2018005395A (ja) 演算処理装置、情報処理装置および演算処理装置の制御方法
TWI652576B (zh) Memory system and processor system
US9342461B2 (en) Cache memory system and method using dynamically allocated dirty mask space
KR101472967B1 (ko) 라이트 백 동작을 수행하는 캐시 메모리, 이의 동작 방법, 및 이를 포함하는 시스템
US10108549B2 (en) Method and apparatus for pre-fetching data in a system having a multi-level system memory
US10180796B2 (en) Memory system
US20170109277A1 (en) Memory system
US20050270876A1 (en) Selectively changeable line width memory
KR100395768B1 (ko) 멀티 레벨 캐쉬 시스템
US20190163639A1 (en) Caching bypass mechanism for a multi-level memory
US20180189192A1 (en) Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures
JP2023069644A (ja) 半導体装置および半導体装置の制御方法
US11526448B2 (en) Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning
US20240160574A1 (en) Computer system including a main memory device with heterogeneous memories and method of operating the same
JP7024127B2 (ja) 管理装置、情報処理装置、管理方法、およびプログラム