JP6027562B2 - キャッシュメモリシステムおよびプロセッサシステム - Google Patents

キャッシュメモリシステムおよびプロセッサシステム Download PDF

Info

Publication number
JP6027562B2
JP6027562B2 JP2014033187A JP2014033187A JP6027562B2 JP 6027562 B2 JP6027562 B2 JP 6027562B2 JP 2014033187 A JP2014033187 A JP 2014033187A JP 2014033187 A JP2014033187 A JP 2014033187A JP 6027562 B2 JP6027562 B2 JP 6027562B2
Authority
JP
Japan
Prior art keywords
cache
cache memory
data
memory
presence information
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
Application number
JP2014033187A
Other languages
English (en)
Other versions
JP2015158798A (ja
Inventor
武田 進
進 武田
藤田 忍
忍 藤田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2014033187A priority Critical patent/JP6027562B2/ja
Priority to PCT/JP2015/055245 priority patent/WO2015125971A1/ja
Publication of JP2015158798A publication Critical patent/JP2015158798A/ja
Priority to US15/243,196 priority patent/US10025719B2/en
Application granted granted Critical
Publication of JP6027562B2 publication Critical patent/JP6027562B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/27Using a specific cache architecture
    • G06F2212/271Non-uniform cache access [NUCA] architecture
    • 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/507Control mechanisms for virtual memory, cache or TLB using speculative control

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

本発明の実施形態は、キャッシュメモリシステムおよびプロセッサシステムに関する。
メモリウォール問題と称されるように、メモリアクセスはプロセッサコアの性能と消費電力のボトルネックとなっている。この課題を緩和するため、メモリ技術の進展を背景として、主記憶近傍に大容量のキャッシュメモリを搭載したプロセッサが普及しつつある。
大容量のキャッシュメモリでは、保持するデータ量の増加に伴って、キャッシュ保持データのメタ情報すなわちアドレス情報を記憶するタグメモリも大容量化する。これに伴い、タグメモリのレイテンシも増大する。場合によっては、大容量キャッシュメモリのタグメモリのレイテンシが上位階層のキャッシュメモリのレイテンシと同程度のものとなってしまう。このような場合、タグメモリのレイテンシがプロセッサ・システム全体の性能に与える影響が無視できなくなる。
SUPPORTING VERY LARGE DRAM CACHES WITH COMPOUND-ACCESS SCHEDULING AND MISSMAP(MICRO2012)
本発明が解決しようとする課題は、アクセス効率を向上可能なキャッシュメモリシステムおよびプロセッサシステムを提供することにある。
本実施形態によれば、データを格納するデータキャッシュ部と前記データキャッシュ部に格納された各データのアドレスを格納するタグ部とを有する階層化されたk次(k=1からnまでのすべての整数、nは1以上の整数)のキャッシュメモリと、
プロセッサが発行する仮想アドレスから物理アドレスへのアドレス変換情報を含むページエントリ情報と、変換した物理アドレスのそれぞれに対応するデータが1階層以上の特定のキャッシュメモリに格納されているか否かを示すキャッシュ存在情報と、を格納するトランスレーション・ルックアサイド・バッファと、を備えるキャッシュメモリシステムが提供される。
一実施形態によるプロセッサシステム1の概略構成を示すブロック図。 第1の実施形態における各キャッシュメモリ4〜6およびメインメモリ10のアクセス優先度を示す図。 TLB4の内部構造の一例を示す図。 本実施形態によるプロセッサシステム1の処理動作を示すフローチャート。 L4キャッシュ9にデータを格納する場合のキャッシュ存在情報20の更新処理の一例を示すフローチャート。 L4キャッシュ9からデータを追い出す場合のキャッシュ存在情報20の更新処理の一例を示すフローチャート。 キャッシュ存在情報20を電源制御に利用するプロセッサシステム1の概略構成を示すブロック図。 NUCAを行うプロセッサシステムの概略構成を示すブロック図。
以下、図面を参照しながら、本発明の実施形態を説明する。図1は一実施形態によるプロセッサシステム1の概略構成を示すブロック図である。図1のプロセッサシステム1は、プロセッサ(CPU)2と、メモリ管理ユニット(MMU:Memory Management Unit)3と、トランスレーション・ルックアサイド・バッファ(TLB:Translation Lookaside Buffer)4と、ページテーブル5と、1次キャッシュメモリ(L1キャッシュ)6と、2次キャッシュメモリ(L2キャッシュ)7と、3次キャッシュメモリ(L3キャッシュ)8と、4次キャッシュメモリ(L4キャッシュ)9と、を備えている。
L1〜L4キャッシュ6〜9には、メインメモリ10に格納されたデータ、またはメインメモリ10に格納されるべきデータの少なくとも一部が格納される。これらキャッシュ6〜9は、キャッシュ内に保持するデータを特定可能なアドレス情報を保持するタグ部を有する。タグ部の実装形態には、専用のメモリ領域を保持するものや、データを保持するメモリ領域の一部に保持するものなど様々なものがあり、本実施形態ではそれら全てと組み合わせ可能である。
メインメモリ10以外の、プロセッサ2、MMU3、L1キャッシュ6、L2キャッシュ7、L3キャッシュ8およびL4キャッシュ9は、例えば一つのチップに集積される。例えば、プロセッサ2、MMU3、L1キャッシュ6、L2キャッシュ7およびL3キャッシュ8が1つのチップに集積され、L4キャッシュ9は別のチップに集積され、それらがチップ同士の積層構造に基づき、金属配線によってチップ同士が直接接合されているシステムであってもよい。また、本実施形態では、MMU3、L1〜L4キャッシュ6〜9をキャッシュシステムと呼ぶ。
L1〜L4キャッシュ6〜9は、メインメモリ10よりも高速アクセスが可能な半導体メモリで構成されている。それぞれのキャッシュへのデータ配置ポリシには様々なバリエーションが考えられる。例えば、Inclusion方式がある。この場合、L2キャッシュ7には、L1キャッシュ6に格納されたデータのすべてが格納される。L3キャッシュ8には、L2キャッシュ7に格納されたデータのすべてが格納される。L4キャッシュ9には、L3キャッシュ8に格納されたデータのすべてが格納される。
その他、例えば、Exclusion方式がある。この方式では、例えばL1キャッシュ6とL2キャッシュ7に同じデータは配置されない。また、例えば、Inclusion方式とExclusion方式のハイブリッド方式がある。この方式では、例えばL1キャッシュ6とL2キャッシュ7で重複して保持されるデータもあるし、排他的に保持されるデータもある。
これらの方式は、2つのキャッシュ間のデータ配置ポリシであり、複数階層のキャッシュ構成では様々な組み合わせが考えられる。例えば、全ての階層でInclusion方式であってもよい。例えば、L1キャッシュ6とL2キャッシュ7はExclusive方式で、L2キャッシュ6とL3キャッシュ8はInclusion方式であってもよい。本実施形態に示される方式は、これら上記に記した様々なデータ配置ポリシと組み合わせることが可能である。
キャッシュの更新方式にも様々な方式が存在するが、本実施形態はそれら全てと組み合わせ可能である。例えば、キャッシュ書き込みヒット時の書き込み方式がライトスルーであってもよいし、ライトバックであってもよい。例えば、キャッシュ書き込みミス時の書き込み方式がライトアロケートであってもよいし、ノーライトアロケートであってもよい。
L2キャッシュ7のメモリ容量はL1キャッシュ6のメモリ容量以上である。L3キャッシュ8のメモリ容量はL2キャッシュ7のメモリ容量以上である。L4キャッシュ9のメモリ容量はL3キャッシュ8のメモリ容量以上である。このように、高次のキャッシュメモリほどメモリ容量が大きくなる。従って、高次のキャッシュメモリには集積度が高く、容量に比例する傾向にあるリーク電力が少ないメモリを用いることが望ましい。このようなメモリとして、例えば、MRAM(Magnetoresistive Random Access Memory)等の不揮発メモリが考えられる。
ページテーブル5は、OSが管理する仮想アドレス空間と物理アドレス空間のマッピングを格納するテーブルである。一般的に、仮想アドレスがインデックスとして用いられ、仮想アドレス毎に対応する物理アドレス等を格納する領域をもつ。ページテーブル5内の1つの仮想アドレスに対応する領域をページエントリとよぶ。これは、一般的にメインメモリ空間上に配置される。
TLB4はページテーブル5内の一部のページエントリをキャッシングするメモリ領域である。一般的にハードウェアで実装され、ソフトウェアで実装されるページテーブルより高速にアクセス可能である。
MMU3はTLB4とページテーブル5を管理し、プロセッサ2が発行した仮想アドレスを物理アドレスに変換するアドレス変換(仮想記憶管理)、メモリ保護機能、キャッシュ制御機能、バス調停機能、等の機能を提供する。L1キャッシュ6等の上位階層キャッシュは仮想アドレスでアクセスされることもあるが、一般的に、L2キャッシュ7以下の下位階層のメモリはMMU3によって変換された物理アドレスでアクセスされる。MMU3は、主記憶10へのデータ配置とデータ追い出しの際に、仮想アドレスと物理アドレスとの変換テーブルを更新する。なお、MMU3は全てをハードウェアで実装したり、全てをソフトウェアで実装したり、それらのハイブリッドで実装する等、様々な実装形態が存在する。本実施形態に示される方式は、これら全ての実装形態と組み合わせ可能である。
図1では、MMU3とは別個にTLB4を設けているが、通常はMMU3の内部にTLB4が設けられる。本実施形態では、便宜上、MMU3とTLB4を別個に取り扱うが、TLB4がMMU3に内蔵される場合も含むものとする。
メインメモリ10は、L1〜L4キャッシュ6〜9のそれぞれよりもメモリ容量が大きいことから、プロセッサ2等が実装されるチップとは別個の1以上のチップで構成されることが多い。メインメモリ10を構成するメモリセルは、例えばDRAM(Dynamic RAM)セルやMRAMセルである。なお、TSV(Through Silicon Via)等の技術を用いて、プロセッサ2等と一つのチップに混載してもよい。
図2は第1の実施形態における各キャッシュメモリ4〜6およびメインメモリ10のアクセス優先度を示す図である。図示のように、プロセッサ2が発行した仮想アドレスに対応する物理アドレスは、まず最優先にL1キャッシュ6に送られる。この物理アドレスに対応するデータ(以下、対象データ)がL1キャッシュ6にある場合は、そのデータはプロセッサ2に送られる。L1キャッシュ6のメモリ容量は、例えば数10kバイト程度である。
対象データがL1キャッシュ6にない場合は、対応する物理アドレスはL2キャッシュ7に送られる。L2キャッシュ7に対象データがある場合は、このデータはL1キャッシュ6に格納されるとともに、プロセッサ2にも送られる。L2キャッシュ7のメモリ容量は、例えば数100kバイト〜数Mバイト程度である。
対象データがL2キャッシュ7にない場合は、対応する物理アドレスはL3キャッシュ8に送られる。L3キャッシュ8に対象データがある場合は、このデータはL2キャッシュ7およびL1キャッシュ6に格納されるとともに、プロセッサ2にも送られる。L3キャッシュ8のメモリ容量は、例えば数Mバイト〜数10Mバイト程度である。
対象データがL3キャッシュ8にない場合は、対応する物理アドレスはL4キャッシュ9に送られる。L4キャッシュ9に対象データがある場合は、このデータはL1〜L3キャッシュ8に格納されるとともに、プロセッサ2にも送られる。L4キャッシュ9のメモリ容量は、例えば100Mバイト以上である。
なお、このようなキャッシュメモリ6〜9のデータ転送方式は一例を示したものであり、本実施形態は他の様々なデータ転送方式と組み合わせ可能である。例えば、L4キャッシュ9にヒットした場合に、L2キャッシュ7やL3キャッシュ8へのデータ格納は行わずL1キャッシュ6にのみデータを格納するデータ転送方式とも組わせ可能である。
対象データがL4キャッシュ9にない場合は、対応する物理アドレスはメインメモリ10に送られる。本実施形態では、メインメモリ10には、L4キャッシュ9に格納されている全データが格納されているものとする。本実施形態は、上述したキャッシュ間データ配置ポリシに限定されるものではない。メインメモリ10には、MMU3で管理されるページ単位のデータが格納される。一般的に、MMU3で管理されるページ単位のデータはメインメモリ10と補助記憶装置に配置されるが、本実施形態では簡易化のため全てのデータがメインメモリ10に配置されているものとする。本実施形態では、メインメモリ10に対象データがある場合は、このデータはL1〜L4キャッシュ6〜9にも格納されるとともに、プロセッサ2にも送られる。メインメモリ10のメモリ容量は、例えば数Gバイト程度である。
このように、L1〜L4キャッシュ6〜9は階層化されており、次数の大きい(下位階層の)キャッシュメモリほどメモリ容量は大きい。本実施形態では、次数の大きいキャッシュメモリには、次数の小さい(上位階層の)キャッシュメモリに格納されている全データが格納される。
図3はTLB4の内部構造の一例を示す図である。TLB4は、ページ単位で各種情報を管理する。ここで、ページとは、例えば4kバイトのデータである。
図3は1ページ分のページエントリ情報11の一例を示している。図3のページエントリ情報11は、アドレス変換情報12と、ダーティビット13と、アクセスビット14と、ページ・キャッシュ・ディセーブルビット15と、ページ・ライトスルービット16と、ユーザ・スーパーバイザビット17と、リードライトビット18と、プレゼントビット19とを有し、これ以外に、キャッシュ存在情報20を有する。
ページエントリ内の各種情報の配置順序は1例を示しており、本実施形態はこれに限定されるものではない。なお、既存のプロセッサに本実施形態を適用する場合(既存のページテーブルにキャッシュ存在情報の追加する場合)には、既存のページエントリの空き領域に格納する方法と、既存のページエントリを拡張(ビット幅を増やす)方法とが考えられる。
更に、キャッシュ存在情報を含むページエントリを配置する対象は、TLB4のみである場合と、ページテーブル5のみである場合と、TLB4とページテーブル5の両方に配置する場合とが考えられる。これら3つの選択肢は、上記の「既存ページエントリへのキャッシュ存在情報追加」と「既存のページエントリを拡張」という2つの方法と組み合わせ可能である。
キャッシュ存在情報をTLB4とページテーブル5の両方に配置する場合、ページテーブル5も同様の内部構造のページエントリ情報11を有することが望ましい。TLB4には、プロセッサ2が最近発行した仮想アドレスに関するアドレス変換情報が格納されるのに対して、ページテーブル5には、メインメモリ10全体に関するアドレス変換情報が格納されるため、プロセッサ2が発行した仮想アドレスについてのページエントリ情報11がTLB4内に存在しない場合でも、ページテーブル5を参照することで、該当するページエントリ情報11内に格納されたキャッシュ存在情報20を取得できる。また、TLB4内の少なくとも一部のページエントリ情報11を追い出す(フラッシュする)ときは、フラッシュすべきページエントリ情報11と対応するキャッシュ存在情報20とをページテーブル5に書き戻すのが望ましい。これにより、TLB4に格納しきれなかったページエントリ情報11と対応するキャッシュ存在情報20をページテーブル5に格納できる。
本実施形態では、一例として、TLB4とページテーブル5の両方にキャッシュ存在情報20を保持する方式を示す。さらに、既存のページエントリにキャッシュ存在情報20を追加する場合を想定する。また、既存のページエントリにはキャッシュ存在情報20を追加する空き領域が十分に存在すると仮定する。
アドレス変換情報12は、プロセッサ2が発行した仮想アドレスを物理アドレスに変換するための情報である。例えば、論理アドレスに対応する物理アドレスや、階層化されたページテーブル5へのポインタがこれにあたる。ダーティビット13は、このページに書き込みを行ったときに1に設定される。アクセスビット14は、このページにアクセスすると1に設定される。ページ・キャッシュ・ディセーブルビット15は、このページへのキャッシングを禁止するときに1に設定される。ページ・ライトスルービット16は、ライトスルーするときに0に設定され、ライトバックするときに1に設定される。なお、ライトスルーとは、キャッシュメモリとメインメモリ10の両方にデータを書き込むことを指し、ライトバックとは、キャッシュメモリに先にデータを書き込み、その後にメインメモリ10に書き戻すことを指す。ユーザ・スーパーバイザビット17は、該当ページをユーザモードで使用するか、スーパーバイザモードで使用するかを設定するものである。リードライトビット18は、読み出しのみを行うときに0に設定され、読み書きを行うときに1に設定される。プレゼントビット19は、このページがメインメモリ10に存在するときに1に設定される。
キャッシュ存在情報20とは、プロセッサ2が発行した仮想アドレスに対応する物理アドレスのデータが1階層以上の特定のキャッシュメモリに格納されているか否かを示す情報である。1ページは例えば4kバイトで、1つのキャッシュラインは64バイトであるため、1ページ分のキャッシュ存在情報20は、4k/64バイト=64個のキャッシュラインのキャッシュ存在情報20を含むことになる。
一つのキャッシュラインのキャッシュ存在情報20は、例えば1ビットで表される。このビットは、プロセッサ2が発行した仮想アドレスに対応するデータが特定のキャッシュメモリに格納されている場合には例えば1に設定され、格納されていない場合には例えば0に設定される。
以下では、L4キャッシュ9に対応するキャッシュ存在情報20を設ける例を説明するが、対象のキャッシュはどの階層のキャッシュでもよい。例えば、L2でもよいしL3キャッシュ8に対応するキャッシュ存在情報20を設けてもよい。
MMU3は、TLB4を参照して、プロセッサ2が発行した仮想アドレスを物理アドレスに変換するとともに、キャッシュ存在情報20を取得して、この仮想アドレスに対応するデータがL4キャッシュ9に格納されているか否かを判断する。そして、MMU3により、L4キャッシュ9に格納されていないことがわかれば、L3キャッシュ8にミスしたときに、L4キャッシュ9にアクセスせずにメインメモリ10にアクセスする。
図4は本実施形態によるプロセッサシステム1の処理動作を示すフローチャートである。このフローチャートは、プロセッサ2からデータの読み出し要求があった場合の処理手順を示している。
まず、プロセッサ2が仮想アドレスを発行すると(ステップS1)、MMU3はTLB4を参照してこの仮想アドレスを物理アドレスに変換するとともに、L4キャッシュ9のキャッシュ存在情報20を取得する(ステップS2)。まだ、L1キャッシュ6へのアクセスも行っていないのに、L4キャッシュ9のキャッシュ存在情報20を取得するのは、L3キャッシュ8にミスしてからキャッシュ存在情報20を取得すると、L4キャッシュ9にアクセスすべきか否かを判断するタイミングが遅れてしまうためである。また、仮想アドレスから物理アドレスへの変換と同時にキャッシュ存在情報へのアクセスを行うことにより、TLB4やページテーブル5へのアクセス回数を削減するといった利点も存在する。なお、本実装形態の選択肢としては、キャッシュ存在情報20を仮想アドレスから物理アドレスへの変換時には取得せず、L4キャッシュ9のアクセス前のいずれかのタイミングで取得する方法も存在する。例えば、L3キャッシュ8にミスした場合に、キャッシュ存在情報20を取得してもよい。
次に、ステップS2で変換した物理アドレスを用いて、L1キャッシュ6にアクセスし、L1キャッシュ6のタグメモリを参照してヒット/ミス判定を行う(ステップS3)。
L1キャッシュ6にヒットした場合は、対応するデータをL1キャッシュ6から読み出してプロセッサ2に送る(ステップS4)。L1キャッシュ6にミスした場合は、ステップS2で変換した物理アドレスを用いて、L2キャッシュ7にアクセスし、L2キャッシュ7のタグメモリを参照してヒット/ミス判定を行う(ステップS5)。
L2キャッシュ7にヒットした場合は、この物理アドレスに対応するデータをL2キャッシュ7から読み出して、L1キャッシュ6に格納するとともに、プロセッサ2に送る(ステップS6)。L2キャッシュ7にミスした場合は、ステップS2で変換した物理アドレスを用いて、L3キャッシュ8にアクセスし、L3キャッシュ8のタグメモリを参照してヒット/ミス判定を行う(ステップS7)。
L3キャッシュ8にヒットした場合は、この物理アドレスに対応するデータをL3キャッシュ8から読み出して、L2キャッシュ7とL1キャッシュ6に格納するとともに、プロセッサ2に送る(ステップS8)。
L3キャッシュ8にミスした場合は、ステップS2で取得したキャッシュ存在情報20を参照し、L4キャッシュ9にヒットしている可能性が高いか否かを判定する(ステップS9)。すなわち、ステップS9では、キャッシュ存在情報20によって、L4キャッシュ9にアクセスするか否かを判定する。ステップS9でL4キャッシュ9にヒットしている可能性が高いことがわかると、L4キャッシュ9にアクセスする(ステップS10)。この場合、通常のL4キャッシュ9へのアクセスと同様の処理が行われる。すなわち、L4キャッシュ9のタグメモリにアクセスして、ヒット/ミス判定を行い、ヒットすれば、L4キャッシュ9のデータキャッシュ部から対象データを読み出す。
一方、キャッシュ存在情報20を参照した結果、L4キャッシュ9にミスしている可能性が高いことがわかると、L4キャッシュ9にはアクセスせずに、メインメモリ10にアクセスする(ステップS11)。これにより、L4キャッシュ9のタグメモリにアクセスしてヒット/ミス判定結果が出るまでのタイムラグを生じさせることなく、高速にメインメモリ10にアクセスできる。
MMU3は、L4キャッシュ9内の少なくとも一部のデータが更新された場合には、更新されたデータのキャッシュラインについてのキャッシュ存在情報20も更新する。図3に示したキャッシュ存在情報20を更新するタイミングは、L4キャッシュ9にデータを格納するタイミングと、L4キャッシュ9からデータを追い出すタイミングとである。
図5はL4キャッシュ9にデータを格納する場合のキャッシュ存在情報20の更新処理の一例を示すフローチャートである。MMU3は、キャッシュミスしたアドレス、または下位階層のキャッシュメモリまたはメインメモリ10から送られてきたデータのアドレスがTLB4内のページエントリにあるか否かをチェックする(ステップS21)。
ステップS21がYESの場合、TLB4内のキャッシュ存在情報20中の対応するキャッシュライン用のビットを1にする(ステップS22)。ステップS21がNOの場合、ページテーブル5を参照し、ページテーブル5内のキャッシュ存在情報20中の対応するキャッシュライン用のビットを1にする(ステップS23)。
図6はL4キャッシュ9からデータを追い出す場合のキャッシュ存在情報20の更新処理の一例を示すフローチャートである。MMU3は、キャッシュミスしたアドレス、または下位階層のキャッシュメモリから送られてきたデータのアドレスがTLB4内のページエントリにあるか否かをチェックする(ステップS31)。
ステップS31がYESの場合、TLB4内のキャッシュ存在情報20中の対応するキャッシュラインのビットを0にする(ステップS32)。ステップS31がNOの場合、ページテーブル5を参照し、ページテーブル5内のキャッシュ存在情報20中の対応するキャッシュラインのビットを0にする(ステップS33)。
ここまで、キャッシュ存在情報の更新方法を説明したが、更新対象や更新ポリシには様々な変形例が存在する。例えば、TLB4とページテーブル5にキャッシュ存在情報を保持する実施形態において、L4キャッシュ9の保持データが変更された場合にキャッシュ存在情報を更新するのはTLB4のみであってもよい(このような場合、例えば、TLB4からデータが追い出される際にページテーブル5を更新してもよい)。例えば、TLB4にキャッシュ存在情報を保持する実施形態において、L4キャッシュ9の保持データが変更された場合にTLB4内に該当データがなければ、キャッシュ存在情報を更新しなくてもよい。このような場合、L4キャッシュ9内に配置されているデータとキャッシュ存在情報の一貫性が失われ、キャッシュ存在情報を用いたL4キャッシュ9のアクセス判定においてFalse positiveやFalse negativeといった誤判定が発生する可能性がある。これらの対処法については後述する。
(キャッシュ存在情報20の保持方法の変形例)
上述した実施形態では、簡略化のため、TLB4が1階層のページエントリ・キャッシュとなっている方式を示した。しかしながら、TLB4が複数階層の場合においても本実施形態は適用可能である。この場合において、最も単純なキャッシュ存在方法の保持方法は、全ての階層でこれを保持することである。一方で、一部の階層にのみキャッシュ存在情報20を配置する方法も考えられる。例えば、最も下位階層のTLB4にのみキャッシュ存在情報20を配置する方法がある。このような方法を用いることで、TLB4へのアクセスを物理的に異なるメモリに分散し、TLB4のアクセスの衝突による遅延を軽減することが出来る。この効果が得られる典型的な例としては、CPU2からのメモリアクセスによるTLB4の参照と、L4キャッシュ9の配置データ変更に伴うキャッシュ存在情報20の更新のためのTLB4の参照とが同タイミングに発生した場合に、前者の参照は上位階層のTLB4でその要求にこたえ、後者の参照は下位階層のTLB4でその要求にこたえることで、アクセス衝突を回避することが考えられる。
(キャッシュ存在情報20の形式の変形例)
上述した実施形態では、キャッシュ存在情報20としてキャッシュライン毎に1ビットのフラグを保持する形式を示した。しかし、キャッシュ存在情報20はこのような形式に限定されるものではない。
例えば、より詳細化した情報を保持してもよい。例えば、ライン毎のアドレスをすべて保持してもよいし、ライン毎に設けられた記憶領域にラインが格納されているメモリ・バンクIDを記録してもよい。
また、キャッシュ存在情報20は、TLB4のページエントリごとに、1ページ内に含まれる特定のキャッシュメモリ(例えばL4キャッシュ9)の全キャッシュラインの情報を要約化した1ビット以上のビット列を含んでいてもよい。その例として、ハッシュ関数を用いて情報を要約する方法がある。ハッシュ関数には様々なものが考えられる。例えば、ページ内のラインのうち、L4キャッシュ9に存在するライン数を保持するようなものも考えられるし、L4キャッシュ9に存在するライン・アドレスのORをとるなどのハッシュ化が考えられる。
このように、ハッシュ関数を用いてキャッシュ存在情報20として要約化された情報を用いる場合などには、その情報のみでL4キャッシュ9へのデータ保持と非保持の判断が厳密に行えないことに注意しなければならない。ハッシュ関数を用いて判断を行うときに、要約された情報を用いることにより発生する誤判断にはFalse positive とFalse negativeがある。False positiveが発生する場合は、不必要なL4キャッシュ9へのアクセスが行われ、無駄なタグアクセスによる性能低下は発生するものの、プログラムの実行結果には何ら影響を与えないため、問題は軽微である。同様に、False negativeが発生する場合でも、L4キャッシュ9がライトスルーであれば、L4キャッシュ9を有効活用できない状況が発生するものの、性能が低下するのみであるため、問題は軽微である。一方で、データ配置ポリシがライトバックである場合、最新のデータ(正しい値を保持するデータ)がL4キャッシュ9のみに存在する可能性があるため、False negativeによるL4キャッシュ9へのアクセスの回避により、最新でないデータ(誤った数値)を用いて計算を行ってしまう可能性がある。このような場合は、例えば、キャッシュ存在情報20とページエントリのDirtyビットを参照し、Dirtyビットがセットされている場合はキャッシュ存在情報20に関わらずL4キャッシュ9にアクセスするような追加の制御を行ってもよい。
(他ハードウェア・モジュールと協調したキャッシュ存在情報20の保持方法の変形例)
本実施形態は、他のハードウェア・モジュールと協調することで、ページエントリに保持する情報を削減することもできる。ページエントリにL4キャッシュ9に存在するデータライン数のみを記録する場合を例とする。この場合、L4キャッシュ9に存在するデータライン数がゼロ以上である場合にL4キャッシュ9にアクセスする制御ポリシであるとすると、False positiveが高い確率で発生する。これを抑制する方法として、例えば、ページ単位で、ページ内に存在するラインを特定可能なビットベクタを別なハードウェア・モジュールとして持っておき、(TLB4やページテーブル5の)ページエントリの参照によりL4キャッシュ9に存在するデータライン数がゼロ以上であれば上記のハードウェア・モジュールを参照するような制御が考えられる。これにより、TLB4やページテーブル5におけるキャッシュ存在情報20に必要なビット数を抑制しつつ、L4キャッシュ9のアクセス必要性を高精度に判定することが可能となる。
上述した実施形態では、4階層(L1〜L4キャッシュ6〜9)のキャッシュメモリを備える例を説明したが、キャッシュメモリの階層数は4階層には限定されない。また、キャッシュ存在情報20を有するキャッシュメモリもL4キャッシュ9には限定されず、1階層以上の任意の階層のキャッシュメモリのそれぞれにキャッシュ存在情報20を設けてもよい。この場合、各キャッシュ存在情報20がどの階層のキャッシュメモリに対応するかを示す識別情報を図3のページエントリ情報11内に設けてもよい。また、2階層以上のキャッシュメモリのキャッシュ存在情報20を一つにまとめてもよい。
このように、本実施形態では、プロセッサ2が発行した仮想アドレスのデータが1階層以上の特定のキャッシュメモリに格納されているか否かを示すキャッシュ存在情報20をTLB4とページテーブル5の少なくとも一方に設けるため、このキャッシュメモリのタグメモリにアクセスする前に、キャッシュ存在情報20にてキャッシュメモリ内にデータがあるか否かを予測できる。よって、キャッシュメモリ内に対象データがないにもかかわらず、タグメモリにアクセスしてキャッシュミスの結果を待ってから、メインメモリ10にアクセスするよりも高速に、メインメモリ10にアクセスできる。また、タグメモリへの不必要なアクセスによる電力オーバヘッドも削減することが可能となる。すなわち、キャッシュメモリ内に対象データがないことがキャッシュ存在情報20で予測できた場合は、このキャッシュメモリへのアクセスを行わないため、キャッシュミス時の性能・電力のオーバヘッドを削減できる。
本実施形態におけるキャッシュ存在情報20は、L4キャッシュ9のように、大容量のキャッシュメモリに設けた場合により大きな効果が得られる。大容量のキャッシュメモリの場合、タグメモリにアクセスするのに時間がかかり、キャッシュミスしたことがわかってからメインメモリ10にアクセスすると、メインメモリ10にアクセスするのに余計に時間がかかってしまう。これに対して、キャッシュ存在情報20を設ければ、キャッシュメモリのタグメモリにアクセスする前に、このキャッシュメモリ内に対象データがあるか否かを精度よく予測できるため、データがあると予測された場合のみタグメモリにアクセスでき、キャッシュミス時にメインメモリ10により高速にアクセスでき、アクセス効率を向上できる。また、大容量のキャッシュメモリであれば、タグメモリも大容量となるため、そのアクセス電力も大きくなる。高精度なアクセスにより、このアクセス電力も削減可能である。
上述した各実施形態では、L4キャッシュ9のメモリセルがMRAMセルの例を説明したが、本実施形態のキャッシュメモリは、他の不揮発性メモリ(例えば、ReRAM(Resistance RAM)メモリセル、PRAM(Phase Change RAM)、FRAM(Ferroelectric RAM、登録商標)、NANDフラッシュメモリセル)で構成されていてもよい。あるいは、SRAMやDRAM等の揮発メモリを用いてもよい。
上記の実施形態では、TLB4とページテーブル5の少なくとも一方に設けられたキャッシュ存在情報20により特定のメモリへのアクセス時のヒット/ミスを判定し、タグメモリへの不必要なアクセスを回避する制御を例示した。上記の実施形態以外に、キャッシュ存在情報20は他の目的にも利用できる。
(キャッシュ存在情報を電源制御に利用する例)
TLB4とページテーブル5の少なくとも一方に設けられるキャッシュ存在情報20は、例えば、キャッシュメモリの電源管理に用いることができる。その例として、L4キャッシュ9へのアクセスが少ないときは、L4キャッシュ9の電源を遮断したり、電源電圧を低下させたる低消費電力モードに移行して、消費電力を削減する場合が考えられる。一般的には、低消費電力モードからデータへのアクセスが可能な状態(アクティブモード)に遷移するには、時間的および電力的なオーバーヘッドがある。つまり、電源遮断中からデータへのアクセスが可能な状態に遷移するためには、いくらかの時間が必要となり、同時に電力も消費する。L4キャッシュアクセス時に低消費電力モードだと、通常のキャッシュレイテンシに加え、電源遮断からアクティブモードへの復帰時間が必要となり、プロセッサ2の性能低下へと繋がる。逆に、積極的にアクティブモードを利用すると、L4キャッシュ9にデータが存在しないにも拘らず、不必要な電力を消費してしまう。
これを解決する1つの方法として、キャッシュ存在情報20を利用し、1)L3キャッシュ8へのヒット/ミスの判定によりL4キャッシュ9へのアクセスを予測(特定)し、さらに2)L4キャッシュ9でのヒット/ミスを判定することが考えられる。1)のL3キャッシュ8へのヒット/ミスの判定が可能であれば、L4キャッシュ9へのアクセスに先行して低消費電力モードからアクティブモードへと状態を遷移させておくことができ、モード遷移に伴うオーバヘッドを隠蔽することが出来る。また、L4キャッシュ9でのヒット/ミスを判定できれば、L4キャッシュ9にヒットする場合のみアクティブモードへと遷移させるといったことが可能となり、不必要なモード遷移を抑制することが出来る。
図7はキャッシュ存在情報20を電源制御に利用するプロセッサシステム1の概略構成を示すブロック図である。図7のプロセッサシステム1は、各階層のキャッシュメモリ6〜9に対応づけて、キャッシュコントローラ21〜24が設けられている。これらキャッシュコントローラ21〜24は、MMU3からの指示に従って、対応するキャッシュメモリ6〜9のアクセス制御と電源制御を行う。例えば、MMU3は、キャッシュ存在情報20に基づいて、L3キャッシュミスによりL4キャッシュ9にアクセスするか否かを判断するとともに、L4キャッシュ9にアクセスするか否かでL4キャッシュ9に供給する電力を制御する。これにより、L4キャッシュ9にアクセスしない場合は、L4キャッシュ9を低消費電力モードで動作させることができ、消費電力の削減が図れる。また、L4キャッシュ9でのヒットが予想される場合は、実際にアクセスを開始する前にL4キャッシュ9をアクティブモードに遷移させることで、高速アクセスが可能となる。
(キャッシュ存在情報をデッドラインの制御に利用する例)
TLB4とページテーブル5の少なくとも一方に配置されたキャッシュ存在情報20は、例えば、デッドブラインの特定にも利用できる。デッドラインとは、今後利用される可能性のないキャッシュラインを指す。例えば、解放されたプロセスが利用していたデータがこれにあたる。利用される可能性のないキャッシュラインの保持はキャッシュメモリの利用効率の低下を引き起こす。
これを解決するため、例えば、解放されたプロセスのページをTLB4とページテーブル5の少なくとも一方で特定し、そのページエントリ内のキャッシュ存在情報20から特定のキャッシュに該当ページ内のデータが含まれるようであれば、それらのデータを無効化する制御が考えられる。これにより、今後利用されないデータを保持し続けることで、今後利用する可能性の有るデータが追い出されるケースを防止でき、キャッシュメモリを効率的に活用することが可能となる。
キャッシュ存在情報20をデッドブロックの制御に利用する場合のプロセッサシステム1は、例えば図7と同様のブロック図で実現可能である。プロセッサ2がプロセスを切り替えるときのメモリ管理の手法として、以下の二つがある。一つの手法は、プロセッサ2があるプロセスを解放すると、TLB4を完全に書き換える(フラッシュする)ことである。この場合、MMUは、TLB4に格納されていたデータをすべて無効化したことを、TLBに格納されているキャッシュ存在情報20に基づき各キャッシュのキャッシュコントローラに通知する。これを受けて、各階層のキャッシュメモリ6〜9は、順々に、該当するデータを無効化する。もう一つの手法は、TLB4やページテーブル5が各プロセスを識別可能な識別情報を記憶しており、MMU3は、解放されたプロセスに対応する識別情報を取得して、各キャッシュ6のキャッシュコントローラ21に通知する。これを受けて、各階層のキャッシュメモリ6〜9は、TLBに格納されているキャッシュ存在情報20に基づきその識別情報に対応するデータを無効化する。
(キャッシュ存在情報をNUCAの効率的制御に利用する例)
TLB4とページテーブル5の少なくとも一方に配置されたキャッシュ存在情報20は、例えば、NUCA(Non-uniform cache access)の効率的なアクセスにも利用できる。NUCAとは、同一階層のキャッシュをいくつかの領域(バンク)に分割し、ある位置(例えばCPU)からそれぞれの領域に異なるレイテンシでアクセスするキャッシュシステムを指す。このシステムは、特に、大容量のキャッシュを効率的に利用する場合に用いられる。大容量なキャッシュは低速なレイテンシとなりがちだが、NUCAを利用することで、アクセスする対象から近い位置にデータがあれば高速なデータアクセスが可能となる。その利用形態の一例として、マルチコアプロセッサでは、コア毎にバンク(ローカルバンク)を保持し、さらにバンク毎にタグを保持する。あるコアからローカルバンクへとアクセスが発生し、データが存在しなかった場合、コヒーレンシ・アクセスでその他のバンクにデータが存在しないかをチェックする。仮に、その他のバンクにデータが存在したとしても、ローカルバンクへのアクセスとコヒーレンシに要するレイテンシと電力がオーバヘッドとなる。
このようなオーバヘッドを解消する一方式として、例えば、キャッシュ存在情報20の中にキャッシュラインデータが保持されているバンクID情報を含めてもよい。このような方式を用いれば、TLB4とページテーブル5の少なくとも一方へのアクセス時に、データが存在するバンクを特定可能であるため、データが存在しないバンクへのアクセスと、コヒーレンシのオーバヘッドを省略することが可能となる。これにより、キャッシュの性能向上と消費電力削減が実現できる。なお、バンクID情報は、上記の第一の実施形態と同様にハッシュ化された情報であってもよい。
図8はNUCAを行うプロセッサシステムの概略構成を示すブロック図である。図8の例では、L4キャッシュ9が4つのメモリバンクに分かれており、各メモリバンクごとに別個にキャッシュコントローラ25〜28を備えている。各キャッシュコントローラ25〜28は、各メモリバンク内に格納されているデータを、メモリバンクID情報とともに、MMU3に通知する。MMU3は、受け取った情報をTLB4とページテーブル5に登録する。これにより、MMU3は、TLB4またはページテーブル5を参照することで、プロセッサ2からアクセス要求のあったデータが、どのメモリバンクに格納されているかを迅速に把握でき、該当するメモリバンクに高速にアクセスすることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 プロセッサシステム、2 プロセッサ、3 MMU、4 TLB、5 ページテーブル、6 L1キャッシュ、7 L2キャッシュ、8 L3キャッシュ、9 L4キャッシュ、10 メインメモリ、11 ページエントリ情報

Claims (16)

  1. データを格納するデータキャッシュ部と前記データキャッシュ部に格納された各データのアドレスを格納するタグ部とを有する階層化されたk次(k=1からnまでのすべての整数、nは1以上の整数)のキャッシュメモリと、
    プロセッサが発行する仮想アドレスから物理アドレスへのアドレス変換情報を含むページエントリ情報と、変換した物理アドレスのそれぞれに対応するデータが1階層以上の特定のキャッシュメモリに格納されているか否かを示すキャッシュ存在情報と、を格納するトランスレーション・ルックアサイド・バッファと、
    を備えるキャッシュメモリシステム。
  2. 前記トランスレーション・ルックアサイド・バッファは、前記特定のキャッシュメモリ内に格納しているデータを変更する際には、当該変更に合わせて前記キャッシュ存在情報を更新する請求項1に記載のキャッシュメモリシステム。
  3. 前記トランスレーション・ルックアサイド・バッファは、前記特定のキャッシュメモリに新たなデータを書き込む場合と、前記特定のキャッシュメモリに格納されているデータを追い出す場合とに、前記キャッシュ存在情報を更新する請求項2に記載のキャッシュメモリ。
  4. 前記トランスレーション・ルックアサイド・バッファに格納された前記ページエントリ情報および対応する前記キャッシュ存在情報と、前記トランスレーション・ルックアサイド・バッファに格納しきれなかった前記ページエントリ情報および対応する前記キャッシュ存在情報とを格納するページテーブルと、
    前記トランスレーション・ルックアサイド・バッファの前記ページエントリ情報に存在しない物理アドレスにアクセスする場合には、前記ページテーブル内の前記キャッシュ存在情報を参照して、前記特定のキャッシュメモリへのアクセスを行うか否かを判断するメモリ管理ユニットと、を備える請求項1乃至3のいずれかに記載のキャッシュメモリシステム。
  5. 前記メモリ管理ユニットは、前記トランスレーション・ルックアサイド・バッファに格納された前記ページエントリ情報のうち少なくとも一部のページエントリ情報を他のページエントリ情報に変更する場合には、変更前のページエントリ情報と対応する前記キャッシュ存在情報とを前記ページテーブルに書き戻す請求項4に記載のキャッシュメモリシステム。
  6. 前記k次のキャッシュメモリは、前記キャッシュ存在情報によって該当するデータが前記特定のキャッシュメモリに格納されていないと判断された場合は、前記特定のキャッシュメモリの前記タグ部にアクセスせずに、前記特定のキャッシュメモリより高次のキャッシュメモリまたはメインメモリにアクセスするメモリ管理ユニットを備える請求項1乃至3のいずれかに記載のキャッシュメモリシステム。
  7. 前記メモリ管理ユニットは、前記プロセッサからのアクセス要求に応じて前記ページエントリ情報を参照する際に、対応する前記キャッシュ存在情報を取得する請求項4乃至6のいずれかに記載のキャッシュメモリシステム。
  8. 前記メモリ管理ユニットは、前記キャッシュ存在情報に基づいて、前記特定のキャッシュメモリにアクセスするか否かで前記特定のキャッシュメモリに供給する電力を制御する請求項4乃至7のいずれかに記載のキャッシュメモリシステム。
  9. 前記メモリ管理ユニットは、プロセッサが解放したプロセスで使用するデータが前記特定のキャッシュメモリに格納されているか否かを前記キャッシュ存在情報に基づいて判断し、当該データを無効化する請求項4乃至7のいずれかに記載のキャッシュメモリシステム。
  10. 前記特定のキャッシュメモリは、複数のバンクに分かれており、
    前記キャッシュ存在情報は、前記特定のキャッシュメモリ中のどのバンクにデータが格納されているかを示すバンク識別情報を含んでおり、
    前記メモリ管理ユニットは、前記特定のキャッシュメモリにアクセスする際には、前記キャッシュ存在情報中の前記バンク識別情報に対応するバンクにアクセスする請求項4乃至7のいずれかに記載のキャッシュメモリシステム。
  11. 前記キャッシュ存在情報は、前記特定のキャッシュメモリのキャッシュラインごとの情報を含む請求項1乃至10のいずれかに記載のキャッシュメモリシステム。
  12. 前記キャッシュ存在情報は、前記トランスレーション・ルックアサイド・バッファのページエントリ毎に、1ページ内に含まれる前記特定のキャッシュメモリの全キャッシュラインの情報を要約化した1ビット以上のビット列を含む請求項11に記載のキャッシュメモリシステム。
  13. 前記キャッシュ存在情報は、前記トランスレーション・ルックアサイド・バッファのページエントリごとに、1ページ内に含まれる前記特定のキャッシュメモリの全キャッシュラインのそれぞれについて、1ビットずつ設けられる請求項10または11に記載のキャッシュメモリシステム。
  14. 前記特定のキャッシュメモリは、最も高次のキャッシュメモリである請求項1乃至13のいずれかに記載のキャッシュメモリシステム。
  15. 前記特定のキャッシュメモリは、MRAM(Magnetoresistive RAM)セルを用いて構成される請求項1乃至14のいずれかに記載のキャッシュメモリシステム。
  16. プロセッサと、
    データを格納するデータキャッシュ部と前記データキャッシュ部に格納された各データのアドレスを格納するタグ部とを有する階層化されたk次(k=1からnまでのすべての整数、nは1以上の整数)のキャッシュメモリと、
    前記プロセッサが発行する仮想アドレスから物理アドレスへのアドレス変換情報を含むページエントリ情報と、変換した物理アドレスのそれぞれに対応するデータが1階層以上の特定のキャッシュメモリに格納されているか否かを示すキャッシュ存在情報と、を格納するトランスレーション・ルックアサイド・バッファと、を備えるプロセッサシステム。
JP2014033187A 2014-02-24 2014-02-24 キャッシュメモリシステムおよびプロセッサシステム Active JP6027562B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014033187A JP6027562B2 (ja) 2014-02-24 2014-02-24 キャッシュメモリシステムおよびプロセッサシステム
PCT/JP2015/055245 WO2015125971A1 (ja) 2014-02-24 2015-02-24 キャッシュ存在情報を有するtlb
US15/243,196 US10025719B2 (en) 2014-02-24 2016-08-22 Cache memory system and processor system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014033187A JP6027562B2 (ja) 2014-02-24 2014-02-24 キャッシュメモリシステムおよびプロセッサシステム

Publications (2)

Publication Number Publication Date
JP2015158798A JP2015158798A (ja) 2015-09-03
JP6027562B2 true JP6027562B2 (ja) 2016-11-16

Family

ID=53878467

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014033187A Active JP6027562B2 (ja) 2014-02-24 2014-02-24 キャッシュメモリシステムおよびプロセッサシステム

Country Status (3)

Country Link
US (1) US10025719B2 (ja)
JP (1) JP6027562B2 (ja)
WO (1) WO2015125971A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016177689A (ja) 2015-03-20 2016-10-06 株式会社東芝 メモリシステム
US10019375B2 (en) * 2016-03-02 2018-07-10 Toshiba Memory Corporation Cache device and semiconductor device including a tag memory storing absence, compression and write state information
US10169233B2 (en) * 2017-06-05 2019-01-01 International Business Machines Corporation Translation lookaside buffer purging with concurrent cache updates
US10528483B2 (en) 2017-10-23 2020-01-07 Advanced Micro Devices, Inc. Hybrid lower-level cache inclusion policy for cache hierarchy having at least three caching levels
CN111868700B (zh) * 2018-02-28 2024-04-19 索尼公司 存储器管理***、存储器管理方法以及信息处理设备
US11074001B2 (en) * 2018-04-09 2021-07-27 Red Hat, Inc. Managing virtual-machine image cloning
US11262946B2 (en) * 2019-11-25 2022-03-01 Micron Technology, Inc. Cache-based memory read commands

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2580587B2 (ja) * 1987-03-03 1997-02-12 日本電気株式会社 アドレス変換バッファ
US5233700A (en) 1987-03-03 1993-08-03 Nec Corporation Address translation device with an address translation buffer loaded with presence bits
JPH01311343A (ja) * 1988-06-09 1989-12-15 Fujitsu Ltd メモリ制御方式
JPH03232034A (ja) 1990-02-08 1991-10-16 Oki Electric Ind Co Ltd キャッシュ制御装置
JP2001256108A (ja) * 2000-03-10 2001-09-21 Mitsubishi Electric Corp メモリ内蔵マイクロプロセッサ
US6574708B2 (en) * 2001-05-18 2003-06-03 Broadcom Corporation Source controlled cache allocation
JPWO2006038258A1 (ja) 2004-09-30 2008-05-15 株式会社ルネサステクノロジ データプロセッサ
CN104346294B (zh) * 2013-07-31 2017-08-25 华为技术有限公司 基于多级缓存的数据读/写方法、装置和计算机***

Also Published As

Publication number Publication date
US20160357683A1 (en) 2016-12-08
JP2015158798A (ja) 2015-09-03
US10025719B2 (en) 2018-07-17
WO2015125971A1 (ja) 2015-08-27

Similar Documents

Publication Publication Date Title
JP6118285B2 (ja) キャッシュメモリシステムおよびプロセッサシステム
JP6027562B2 (ja) キャッシュメモリシステムおよびプロセッサシステム
US10402331B2 (en) Systems and methods for implementing a tag-less shared cache and a larger backing cache
KR102448124B1 (ko) 가상 주소들을 사용하여 액세스된 캐시
US11023376B2 (en) System and methods for efficient virtually-tagged cache implementation
US10031854B2 (en) Memory system
JP6088951B2 (ja) キャッシュメモリシステムおよびプロセッサシステム
CN116701250A (zh) 支持巨页的内存管理
US9772943B1 (en) Managing synonyms in virtual-address caches
US10564871B2 (en) Memory system having multiple different type memories with various data granularities
WO2013148872A1 (en) Concurrently accessed set associative overflow cache
KR102252377B1 (ko) 멀티 프로세서 시스템 및 이에 포함된 프로세서의 데이터 관리 방법
WO2024066195A1 (zh) 缓存管理方法及装置、缓存装置、电子装置和介质
KR20180122969A (ko) 멀티 프로세서 시스템 및 이에 포함된 프로세서의 데이터 관리 방법
US9128856B2 (en) Selective cache fills in response to write misses
US9639467B2 (en) Environment-aware cache flushing mechanism
US10725675B2 (en) Management apparatus, information processing apparatus, management method, and computer program product
JP6140233B2 (ja) メモリシステム
Mittal et al. Cache performance improvement using software-based approach

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160325

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161014

R151 Written notification of patent or utility model registration

Ref document number: 6027562

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