JP6019136B2 - 仮想タグ付きキャッシュにおけるエイリアスアドレスのキャッシュヒット/ミスの判定、ならびに関連システムおよび方法 - Google Patents

仮想タグ付きキャッシュにおけるエイリアスアドレスのキャッシュヒット/ミスの判定、ならびに関連システムおよび方法 Download PDF

Info

Publication number
JP6019136B2
JP6019136B2 JP2014553396A JP2014553396A JP6019136B2 JP 6019136 B2 JP6019136 B2 JP 6019136B2 JP 2014553396 A JP2014553396 A JP 2014553396A JP 2014553396 A JP2014553396 A JP 2014553396A JP 6019136 B2 JP6019136 B2 JP 6019136B2
Authority
JP
Japan
Prior art keywords
cache
virtual
miss
hit
physical address
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 - Fee Related
Application number
JP2014553396A
Other languages
English (en)
Other versions
JP2015507810A5 (ja
JP2015507810A (ja
Inventor
ジェームズ・ノリス・ディーフェンダッファー
ロバート・ディー・クランシー
トーマス・フィリップ・スパイアー
Original Assignee
クアルコム,インコーポレイテッド
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 クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2015507810A publication Critical patent/JP2015507810A/ja
Publication of JP2015507810A5 publication Critical patent/JP2015507810A5/ja
Application granted granted Critical
Publication of JP6019136B2 publication Critical patent/JP6019136B2/ja
Expired - Fee Related 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/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
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • 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

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

優先権出願
本出願は、その全体が参照により本明細書に組み込まれる、2012年1月18日に出願された「METHOD FOR DETERMINING HIT/MISS OF ALIASED ADDRESSES IN A VIRTUALLY-TAGGED CACHE」という名称の米国仮特許出願第61/587,756号の優先権を主張する。
本開示の技術は、一般に、仮想エイリアスアドレスのためのキャッシュエントリを含むことが可能な仮想タグ付きメモリキャッシュに関する。
仮想アドレス指定は、コンピュータシステムにおいて採用され得る。そのようなコンピュータシステムでは、メモリベースの動作(たとえば、読取りまたは書込み)を実行するとき、その動作によって与えられた仮想アドレス(VA)が、物理アドレス(PA)に変換されて、その動作が実行される。1つまたは複数のキャッシュが、メモリアクセス時間を低減するためにそのようなシステムにおいて採用され得る。この点について、仮想アドレス指定キャッシュ(VAC:virtually-addressed cache)が、仮想アドレス指定を採用するコンピュータシステムにおいて採用され得る。仮想アドレス指定キャッシュは、より高速な処理を可能にし、その理由は、要求されたデータがキャッシュ中で発見されるとき、アドレス変換を必要としないからである。動作の対象である仮想アドレスによって指定された物理アドレスに記憶されたデータが、VAC中に含まれている場合、メインメモリがアクセスされる必要はない。VACがまた仮想タグ付きでもある場合、そのVACは、仮想インデックス付き仮想タグ付き(virtually-indexed virtually-tagged)キャッシュ(VIVTキャッシュ)である。VIVTキャッシュでは、動作の対象である仮想アドレスが、VIVTキャッシュ中に記憶された仮想タグをインデックス付けするために使用される。仮想タグは、仮想アドレスに対するキャッシュヒットまたはキャッシュミスを判定するために使用される。キャッシュヒットが生じる場合、インデックスに関連付けられた、VIVTキャッシュ中に記憶されたデータが与えられる。結果として、より低いレベルのキャッシュまたはメインメモリへのさらなるメモリアクセスが回避される。
VIVTキャッシュのより高速なキャッシュアクセス時間には、コストがかかる。VIVTキャッシュを使用したアーキテクチャは、VIVTキャッシュ中の非一貫性(incoherency)の問題を回避するために、コストがかかる追加の回路および複雑さを必要とし得る、シノニム(synonym)に関する問題に遭遇する。シノニムはまた、「仮想エイリアスアドレス」と呼ばれることもある。仮想エイリアスアドレスは、2つ以上の異なる仮想アドレスが同じ物理アドレスに変換するとき、作成される。仮想エイリアスアドレスにより、VIVTキャッシュは、仮想アドレスに対応する物理アドレスに記憶されたデータがVIVTキャッシュ中に含まれているときでも、ミスを生成し得る。言い換えれば、VIVTキャッシュは、偽のミスを報告することがある。これは、たとえば、第1の仮想アドレスおよび第2の仮想アドレスが、それぞれ同じ物理アドレスを指定するときに生じ得る。第1の仮想アドレスに対応するタグが、VIVTキャッシュ中に含まれているが、第2の仮想アドレスに対応するタグが、VIVTキャッシュ中に含まれていないときのシナリオを検討されたい。読取り動作が第2の仮想アドレス上で実行される場合、第2の仮想アドレスに対応するタグがVIVTキャッシュ中に含まれていないので、VIVIキャッシュはミスを報告することになる。しかしながら、第2の仮想アドレスに対応する物理アドレスのためのデータは、第1の仮想アドレスに対応するエントリにおいて、VIVTキャッシュ中に含まれている。したがって、VIVTキャッシュによって生成されたミスは、偽のミスである。読取り動作では、この偽のミスの1つの結果は、性能ペナルティである。VIVTキャッシュがミスを報告したので、処理システムは、2次キャッシュまたはメインメモリからのデータにアクセスしようと試みる(より長いアクセス時間になる)ことになる。読取り動作について報告されたVIVTキャッシュミスの別の結果は、データの非一貫性であり得る。キャッシュ中のエイリアスデータがダーティである場合は、読取りが、2次キャッシュまたはメインメモリからのデータにアクセスしようと試みることになり、その両方がデータの古いコピーを有している。
書込み動作では、この偽のミスの結果は、データの非一貫性である。VIVTキャッシュが偽のミスを生成するので、第1の仮想アドレスに対応する(また、第2の仮想アドレスと同じ物理アドレスにも対応する)VIVTキャッシュ中のエントリは、書込み動作からの新しいデータで上書きされないことになる。書込み動作は、他のメモリ(たとえば、2次キャッシュおよび/またはメインメモリ中の物理アドレスに対応するエントリ)に、新しいデータを記憶させることになる。しかしながら、第1の物理アドレス上で実行される後続の読取り動作は、対応する物理アドレスにもはや記憶されていない不正確なデータ(古いデータ)を、VIVTキャッシュが返す結果となる。
発明を実施するための形態で開示する実施形態は、仮想タグ付きキャッシュにおいてエイリアスアドレスのキャッシュヒット/ミスを判定するための装置、ならびに関連システムおよび方法を含む。この点について、一実施形態では、仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)のための仮想エイリアシングキャッシュヒット/ミス検出器が提供される。仮想エイリアシングキャッシュヒット/ミス検出器は、トランスレーションルックアサイドバッファ(TLB)を備える。TLBは、第1の仮想アドレスと、第1の仮想アドレスに基づいたVIVTキャッシュへのインデックス付き読込みから生じるキャッシュエントリのタグから構成される第2の仮想アドレスとを、受信するように構成される。TLBは、第1の仮想アドレスから変換された第1の物理アドレスを生成するように、さらに構成される。TLBは、第2の仮想アドレスから変換された第2の物理アドレスを生成するように、さらに構成される。仮想エイリアシングキャッシュヒット/ミス検出器は、比較器をさらに備える。比較器は、第1の物理アドレスと第2の物理アドレスとを受信するように構成される。比較器は、第1の物理アドレスと第2の物理アドレスとの比較に基づいて、エイリアスキャッシュヒット/ミスインジケータの生成を実施するようにさらに構成される。
このようにして、仮想エイリアシングキャッシュヒット/ミス検出器は、エイリアスアドレス指定(すなわち、シノニム)の存在下でも、VIVTキャッシュに対するキャッシュヒットおよびキャッシュミスを正しく生成する。エイリアスアドレス指定の存在下で、偽のキャッシュミスを生成することを回避することによって、仮想エイリアシングキャッシュヒット/ミス検出器は、偽のキャッシュミスを生成することに関連する性能ペナルティ、および/または偽のキャッシュミスを生成することに関連するデータの非一貫性の問題を回避することができる。
別の実施形態では、仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)のための仮想エイリアシングキャッシュヒット/ミス検出器が提供される。仮想エイリアシングキャッシュヒット/ミス検出器は、トランスレーションルックアサイドバッファ(TLB)手段を備える。TLB手段は、第1の仮想アドレスと、第1の仮想アドレスに基づいたVIVTキャッシュへのインデックス付き読込みから生じるキャッシュエントリのタグから構成される第2の仮想アドレスとを、受信するように構成される。TLB手段は、第1の仮想アドレスから変換された第1の物理アドレスを生成するように、さらに構成される。TLB手段は、第2の仮想アドレスから変換された第2の物理アドレスを生成するように、さらに構成される。仮想エイリアシングキャッシュヒット/ミス検出器は、比較器手段をさらに備える。比較器手段は、第1の物理アドレスと第2の物理アドレスとを受信するように構成される。比較器手段は、第1の物理アドレスと第2の物理アドレスとの比較に基づいて、エイリアスキャッシュヒット/ミスインジケータの生成を実施するようにさらに構成される。
別の実施形態では、仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)のための仮想エイリアシングキャッシュヒット/ミス検出器を提供する方法が提供される。この方法は、トランスレーションルックアサイドバッファ(TLB)において、第1の仮想アドレスを受信するステップを含む。この方法は、TLBにおいて、第1の仮想アドレスに基づいた仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)へのインデックス付き読込みから生じるキャッシュエントリのタグから構成される、第2の仮想アドレスを受信するステップをさらに含む。この方法は、TLBによって、第1の仮想アドレスから変換された第1の物理アドレスを生成するステップをさらに含む。この方法は、TLBによって、第2の仮想アドレスから変換された第2の物理アドレスを生成するステップをさらに含む。この方法は、比較器において、第1の物理アドレスと第2の物理アドレスとを受信するステップをさらに含む。この方法は、第1の物理アドレスと第2の物理アドレスとの比較に基づいて、エイリアスキャッシュヒット/ミスインジケータの生成を実施するステップをさらに含む。
別の実施形態では、メモリ管理ユニット(MMU)が提供される。MMUは、仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)を備える。MMUは、仮想エイリアシングキャッシュヒット/ミス検出器をさらに備える。仮想エイリアシングキャッシュヒット/ミス検出器は、トランスレーションルックアサイドバッファ(TLB)を備える。TLBは、第1の仮想アドレスと、第1の仮想アドレスに基づいたVIVTキャッシュへのインデックス付き読込みから生じるキャッシュエントリのタグから構成される第2の仮想アドレスとを、受信するように構成される。TLBは、第1の仮想アドレスから変換された第1の物理アドレスを生成するように、さらに構成される。TLBは、第2の仮想アドレスから変換された第2の物理アドレスを生成するように、さらに構成される。仮想エイリアシングキャッシュヒット/ミス検出器は、比較器をさらに備える。比較器は、第1の物理アドレスと第2の物理アドレスとを受信するように構成される。比較器は、第1の物理アドレスと第2の物理アドレスとの比較に基づいて、エイリアスキャッシュヒット/ミスインジケータの生成を実施するようにさらに構成される。
仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)とトランスレーションルックアサイドバッファ(TLB)とを採用する、例示的なメモリ管理ユニット(MMU)を示すブロック図である。 非エイリアスキャッシュミスがエイリアスキャッシュヒットであるか、エイリアスキャッシュミスであるかを判定するために、VIVTキャッシュと、一般化された仮想エイリアシングキャッシュヒット/ミス検出器とを採用する、例示的なMMUを示すブロック図である。 仮想エイリアシングキャッシュヒット/ミス検出器の一実施形態を採用する、図2におけるMMUの例示的な実装形態を示すブロック図である。 仮想-物理アドレス変換の代替ソースを与える追加のトランスレーションルックアサイドバッファを採用する、図2におけるMMUの別の例示的な実装形態を示すブロック図である。 仮想エイリアスアドレスに対応するために、キャッシュミスがエイリアスキャッシュヒットであるか、エイリアスキャッシュミスであるかを判定するために、VIVTキャッシュと仮想エイリアシングキャッシュヒット/ミス検出器とを採用するMMUを含む、例示的なプロセッサベースシステムのブロック図である。
ここで図面を参照して、本開示のいくつかの例示的な実施形態について説明する。「例示的な」という言葉は、「例、事例、または例示として機能すること」を意味するように本明細書で使用される。「例示的な」として本明細書で説明される任意の実施形態は、必ずしも他の実施形態よりも好ましいか、または有利であると解釈されるべきではない。
発明を実施するための形態で開示する実施形態は、仮想タグ付きキャッシュにおいてエイリアスアドレスのキャッシュヒット/ミスを判定するための装置、ならびに関連システムおよび方法を含む。この点について、一実施形態では、仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)のための仮想エイリアシングキャッシュヒット/ミス検出器が提供される。仮想エイリアシングキャッシュヒット/ミス検出器は、トランスレーションルックアサイドバッファ(TLB)を備える。TLBは、第1の仮想アドレスと、第1の仮想アドレスに基づいたVIVTキャッシュへのインデックス付き読込みから生じるキャッシュエントリのタグから構成される第2の仮想アドレスとを、受信するように構成される。TLBは、第1の仮想アドレスから変換された第1の物理アドレスを生成するように、さらに構成される。TLBは、第2の仮想アドレスから変換された第2の物理アドレスを生成するように、さらに構成される。仮想エイリアシングキャッシュヒット/ミス検出器は、比較器をさらに備える。比較器は、第1の物理アドレスと第2の物理アドレスとを受信するように構成される。比較器は、第1の物理アドレスと第2の物理アドレスとの比較に基づいて、エイリアスキャッシュヒット/ミスインジケータの生成を実施するようにさらに構成される。
このようにして、仮想エイリアシングキャッシュヒット/ミス検出器は、エイリアスアドレス指定(すなわち、シノニム)の存在下でも、VIVTキャッシュに対するキャッシュヒットおよびキャッシュミスを正しく生成する。エイリアスアドレス指定の存在下で、偽のキャッシュミスを生成することを回避することによって、仮想エイリアシングキャッシュヒット/ミス検出器は、偽のキャッシュミスを生成することに関連する性能ペナルティ、および/または偽のキャッシュミスを生成することに関連するデータの非一貫性の問題を回避することができる。
仮想タグ付きキャッシュにおいてエイリアスアドレスのキャッシュヒット/ミスを判定するための実施形態について説明する前に、エイリアスアドレス指定の存在下で、仮想インデックス付き仮想タグ付きキャッシュにおいて遭遇する問題について、図1に関して最初に説明する。
この点について、図1は、1つまたは複数の偽のキャッシュミスを生成し得る、メモリ管理ユニット(MMU)10を示す。MMU10は、仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)12と、トランスレーションルックアサイドバッファ(TLB)14とを採用する。VIVTキャッシュ12は、タグ20のタグアレイ18と、データ24のデータアレイ22とを含む。仮想アドレスを含むCPU動作が実行されるとき、仮想アドレスは、仮想アドレス入力ライン15上でVIVTキャッシュ12に供給される。VIVTキャッシュ12は、仮想アドレス入力ライン15上で受信された仮想アドレス16を使用して、受信された仮想アドレス16に対応するキャッシュエントリ26があるかどうかを判定するために、タグアレイ18をインデックス付けする。インデックス付きタグ20が仮想アドレス16の指定された部分に一致する場合、データ24は、仮想アドレス16のためのデータの(キャッシュされた)コピーを含んでいる。VIVTキャッシュ12は、受信された仮想アドレス16に対して一致するキャッシュエントリ26が発見されたかどうかを示す、VIVTキャッシュヒット/ミスインジケータ28を生成する。仮想アドレス入力ライン15はまた、TLB14への入力としても提供される。TLB14は、受信された仮想アドレス16を物理アドレス30に変換する。物理アドレス30は、たとえば、VIVTキャッシュ12が、キャッシュミスを示すVIVTキャッシュヒット/ミスインジケータ28を生成するとき、物理メモリ中の仮想アドレス16に対応するデータにアクセスするために使用され得る。
図1におけるMMU10は、エイリアスアドレス(すなわち、シノニム)に関する問題に遭遇する。仮想エイリアスアドレスは、2つ以上の異なる仮想アドレス16が同じ物理アドレス30を指定するとき、作成される。仮想エイリアスアドレスにより、VIVTキャッシュ12は、仮想アドレス16に対応する物理アドレス30に記憶されたデータ24がVIVTキャッシュ12中に含まれているときでも、キャッシュミスを生成し得る。言い換えれば、VIVTキャッシュ12は、偽のミスを報告することがある。
この点について、第1の仮想アドレス16および第2の仮想アドレス16が、同じ物理アドレス30を指定する場合のシナリオを検討されたい。第1の動作が、第1の仮想アドレス16を使用して、物理アドレス30のデータ24にアクセスした後、VIVTキャッシュ12のキャッシュエントリ26は、第1の仮想アドレス16に一致するタグ20と、物理アドレス30に存在するデータのコピー(データ24)とを含むことになる。その後、第2の仮想アドレス16を使用してVIVTキャッシュ12をインデックス付けする第2の動作は、第2の仮想アドレス16に対応するタグ20がVIVTキャッシュ12中にないので、キャッシュミスになる。言い換えれば、第1の仮想アドレス16に対応する(VIVTキャッシュ12中の)タグ20は、第2の仮想アドレス16に一致しない。しかしながら、第2の仮想アドレス16に対応する物理アドレス30のためのデータ24は、(第1の仮想アドレス16に対応するエントリにおいて)VIVTキャッシュ12中に含まれている。したがって、VIVTキャッシュ12によって生成されたミスは、偽のミスである。読取り動作では、この偽のミスの1つの結果は、性能ペナルティである。VIVTキャッシュ12がミスを報告するので、MMU10は、(より長いアクセス時間を有する)2次キャッシュまたはメインメモリからのデータにアクセスしようと試みることになる。読取り動作について報告されたVIVTキャッシュ12ミスの別の結果はまた、データの非一貫性でもあり得る。VIVTキャッシュ12中のエイリアスデータ24がダーティである場合は、読取り動作が、2次キャッシュまたはメインメモリからのデータにアクセスしようと試みることになり、その両方がデータの古いコピーを有している。
書込み動作では、この偽のミスの結果は、データの非一貫性である。VIVTキャッシュ12が偽のミスを生成するので、第1の仮想アドレス16に対応する(また、第2の仮想アドレス16と同じ物理アドレス30にも対応する)VIVTキャッシュ12中のキャッシュエントリ26は、書込み動作からの新しいデータで上書きされないことになる。書込み動作は、他のメモリ(たとえば、2次キャッシュおよび/またはメインメモリ中の物理アドレス30に対応するエントリ)に、新しいデータを記憶させることになる。しかしながら、第1の仮想アドレス16上で実行される後続の読取り動作は、対応する物理アドレス30にもはや記憶されていない不正確なデータ(古いデータ)を、VIVTキャッシュ12が返す結果となる。
図2は、偽のVIVTキャッシュミスと真のVIVTキャッシュミスとを区別するために、仮想エイリアシングキャッシュヒット/ミス検出器36を含む、MMU32を提供する。これによって、偽のVIVTキャッシュミスを生成することに関連する、性能ペナルティとデータの非一貫性の問題とを回避し得る。この点について、MMU32は、仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)34と、仮想エイリアシングキャッシュヒット/ミス検出器36とを備える。仮想エイリアシングキャッシュヒット/ミス検出器36は、エイリアスアドレスのための、VIVTキャッシュ34中のキャッシュエントリ46の存在を検出する。VIVTキャッシュ34中のキャッシュエントリ46が、受信された仮想アドレスまたはエイリアスアドレス(すなわち、受信された仮想アドレスと同じ物理アドレスに変換する、異なる仮想アドレス)のいずれかのために存在する場合、仮想エイリアシングキャッシュヒット/ミス検出器36は、エイリアスキャッシュヒット/ミスインジケータ68としてエイリアスキャッシュヒット指示を生成する。受信された仮想アドレスまたはエイリアスアドレスのいずれかのための、VIVTキャッシュ34中のキャッシュエントリ46がない場合、仮想エイリアシングキャッシュヒット/ミス検出器36は、エイリアスキャッシュヒット/ミスインジケータ68としてエイリアスキャッシュミス指示を生成する。結果として、MMU32は、真のキャッシュヒットを生成し、偽のキャッシュミスを生成しない。したがって、MMU32は、エイリアスアドレス指定の存在下で、MMU10(図1)の性能ペナルティおよびデータの非一貫性の問題を受けない。
引き続き図2を参照して、次に、MMU32についてより詳細に説明する。前に説明したように、MMU32は、VIVTキャッシュ34と、仮想エイリアシングキャッシュヒット/ミス検出器36とを備える。VIVTキャッシュ34は、タグ40のタグアレイ38と、データ44のデータアレイ42とを備える。VIVTキャッシュ34は、入力として、その上でVIVTキャッシュ34がある動作の結果として第1の仮想アドレス(VA1)50を受信する、仮想アドレス入力ライン48を受信する。VIVTキャッシュ34は、最初に、受信された第1の仮想アドレス50に対応するキャッシュエントリ46が存在するかどうかを判定するために、第1の仮想アドレス50に基づいて、タグアレイ38をインデックス付けする。インデックス付きタグ40が第1の仮想アドレス50(または、指定された部分)に一致する場合、キャッシュエントリ46に対応するデータ44は、第1の仮想アドレス50のためのデータを含んでいる(すなわち、非エイリアスキャッシュヒット)。この事例では、VIVTキャッシュ34はキャッシュヒットを生成し、その理由は、そのキャッシュエントリ46のデータ44が、第1の仮想アドレス50がマッピングする先の第1の物理アドレス64に存在するデータを含んでいるからである。
引き続き図2を参照すると、しかしながら、VIVTキャッシュ34中のインデックス付きタグ40が第1の仮想アドレス50(または、指定された部分)に一致しない場合、非エイリアスキャッシュミスがVIVTキャッシュ34によって生成される。ただし、VIVTキャッシュ34中のインデックス付きタグ40に対応するデータ44が、第1の仮想アドレス50がマッピングする先の物理アドレスに含まれているかどうかは、わかっていない。したがって、VIVTキャッシュ34によって生成されたキャッシュミスは、偽のキャッシュミスまたは真のキャッシュミスであり得る。この実施形態では、VIVTキャッシュ34によって生成されたキャッシュミスが偽のキャッシュミスであるか、真のキャッシュミスであるかを判定するために、第1の仮想アドレス50がマッピングする先の物理アドレス64が、インデックス付きタグ40がマッピングする先の物理アドレス66(すなわち、第2の仮想アドレス54がマッピングする先の物理アドレス66)と比較される。これらの物理アドレス64、66が一致する場合、VIVTキャッシュ34中のインデックス付きタグ40に対応するデータ44は、第1の仮想アドレス50がマッピングする先の物理アドレス64に含まれているデータである。したがって、VIVTキャッシュ34によって生成されたキャッシュミスは、偽のキャッシュミスである。
この点について、図2は、インデックス付きタグ40からの第1の仮想アドレス50と第2の仮想アドレス54とを、それらの対応する第1および第2の物理アドレス64、66に変換するように構成された、変更されたトランスレーションルックアサイドバッファ(TLB)56を採用する、仮想エイリアシングキャッシュヒット/ミス検出器36を示す。この実施形態で提供されたTLB56は、第1の読取りポート60上で、VIVTキャッシュ34から第1の仮想アドレス50を受信するように構成される。TLB56はまた、第2の読取りポート62上で、VIVTキャッシュ34中のインデックス付きタグ40に基づいた第2の仮想アドレス54を受信するようにも構成される。TLB56は、第1の仮想アドレス50をその対応する第1の物理アドレス64に変換する。TLB56はまた、第2の仮想アドレス54をその対応する第2の物理アドレス66に変換する。第1の物理アドレス64および第2の物理アドレス66が同じである場合、第2の仮想アドレス54は、第1の仮想アドレス50のエイリアスであり、VIVTキャッシュ34によって生成されたキャッシュミスは、偽のキャッシュミス(すなわち、エイリアスキャッシュヒット)であった。第1の物理アドレス64および第2の物理アドレス66が同じでない場合、第2の仮想アドレス54は、第1の仮想アドレス50のエイリアスではなく、VIVTキャッシュ34によって生成されたキャッシュミスは、真のキャッシュミス(すなわち、エイリアスキャッシュミス)であった。結果として、図2におけるMMU32は、真のキャッシュヒットを正しく生成し、偽のキャッシュミスを生成しないように構成される。したがって、MMU32は、エイリアスアドレス指定の存在下で、図1におけるMMU10の性能ペナルティおよびデータの非一貫性の問題を受けない。
エイリアスキャッシュヒット/ミスインジケータ68は、VIVTキャッシュ34によって生成された非エイリアスキャッシュヒット/ミスインジケータ(図1におけるVIVTキャッシュヒット/ミスインジケータ28など)の代わりに、MMU32によって外部的に与えられる。このことは、エイリアスキャッシュヒット/ミスインジケータ68が偽のキャッシュミスを生成しないので、有利である。したがって、図2に示すように、非エイリアスキャッシュヒット/ミスインジケータ(図1におけるVIVTキャッシュヒット/ミスインジケータ28など)はまた、VIVTキャッシュ34から外部的に与えられる必要がないことがある。ただし、いくつかの実施形態では、VIVTキャッシュ34はまた、非エイリアスキャッシュヒット/ミスインジケータを外部的に与えてもよい。
図2に示すように、TLB56は、仮想アドレスタグ76のタグアレイ74と、物理アドレス80の物理アドレスアレイ78とを備える。TLB56は、第1の仮想アドレス50が変換する先の第1の物理アドレス64を決定するために、受信された第1の仮想アドレス50によってタグアレイ74にインデックス付けする。TLB56はまた、第2の仮想アドレス54が変換する先の第2の物理アドレス66を決定するために、受信された第2の仮想アドレス54によってタグアレイ74にインデックス付けする。比較器58を採用する仮想エイリアシングキャッシュヒット/ミス検出器36は、第1の物理アドレス64を受信し、第2の物理アドレス66と比較するために提供される。第1の物理アドレス64および第2の物理アドレス66が比較されて、エイリアスキャッシュヒット(すなわち、偽のキャッシュミス/真のキャッシュヒット)が生じたか、エイリアスキャッシュミス(すなわち、真のキャッシュミス)が生じたかが判定される。比較器58は、第1の物理アドレス64と第2の物理アドレス66との比較に基づいて、エイリアスキャッシュヒット/ミスインジケータ68の生成を実施するように構成される。
この実施形態では、比較器58は、エイリアスキャッシュヒット/ミスインジケータ68を直接与えることによって、エイリアスキャッシュヒット/ミスインジケータ68の生成を実施するように構成される。言い換えれば、エイリアスキャッシュヒット/ミスインジケータ68は、VIVTキャッシュ34によって生成されたキャッシュミスがエイリアスキャッシュヒットであったか、エイリアスキャッシュミスであったかを示すために、追加の回路に与えられ得る。ただし、以下で図3および図4を参照して説明する他の実施形態では、比較器58は、エイリアスキャッシュヒット/ミスインジケータが暫定エイリアスキャッシュヒット/ミスインジケータを与えるように構成されることによって、エイリアスキャッシュヒットまたはエイリアスキャッシュミスの判定を実施し得る。暫定エイリアスキャッシュヒット/ミスインジケータは、エイリアスキャッシュヒットが生じたと判定され得るかどうかに関する追加の論理に与えられる。
図3は、図2におけるMMU32と同様であるMMU32'の別の例示的な実施形態のブロック図である。図2における同じ要素番号をもつ要素は、図2における要素と同じまたは同様の機能を有するので、それらについては再び説明しない。図3におけるMMU32'では、VIVTキャッシュ34'のキャッシュエントリ46'は、キャッシュエントリ46'中のデータ44の有効性を示す有効ビット72を含んでいる。図3におけるMMU32'では、VIVTキャッシュ34'の各キャッシュエントリ46'が、キャッシュエントリ46'中のデータ44の有効性を示す有効ビット72を含んでいる。インデックス付きキャッシュエントリ46'が無効とマークされる(非限定的な例として、有効ビット72が「無効」または「0」とマークされる)場合、インデックス付きキャッシュエントリ46'が有効なデータ44を含んでいないので、キャッシュヒット(エイリアスまたは非エイリアス)はあり得ない。したがって、インデックス付きキャッシュエントリ46'が無効とマークされる場合、エイリアスキャッシュヒット/ミスインジケータ68'は、エイリアスキャッシュミスを示すべきである。
この点について、図3は、エイリアスキャッシュヒット/ミスインジケータ68'を与えるために、比較器58によって生成された暫定エイリアスキャッシュヒット/ミスインジケータ86を検証するための検証器88を提供する。暫定エイリアスキャッシュヒット/ミスインジケータ86は、データ44の有効性のさらなる検証が、この実施形態ではエイリアスキャッシュヒット/ミスインジケータ68'を与えるために必要とされるので、暫定的である。有効ビット72が無効とマークされるとき、エイリアスキャッシュミスを生成して、エイリアスキャッシュヒット/ミスインジケータ68'を与えるために、検証器88は、エイリアスキャッシュヒット/ミスインジケータ68'を与えるために、有効ビット72および暫定エイリアスキャッシュヒット/ミスインジケータ86のためのANDベースの論理を備える。したがって、有効ビット72が、データ44が無効であると示した場合、検証器88は、エイリアスキャッシュヒット/ミスインジケータ68'としてエイリアスキャッシュミスを生成することになる。一実施形態では、検証器88は、有効ビット72と暫定エイリアスキャッシュヒット/ミスインジケータ86とを受信して、エイリアスキャッシュヒット/ミスインジケータ68'を生成する、2入力ANDまたはNANDゲートとして設けられ得る。ただし、他の実施形態では、他の検証構成要素、回路、および/または論理が、暫定エイリアスキャッシュヒット/ミスインジケータ86を検証して、エイリアスキャッシュヒット/ミスインジケータ68'を与えるために、検証器88中に設けられ得る。
引き続き図3を参照すると、MMU32'のこの実施形態では、TLB56'は、MMU32'に与えられたすべての仮想アドレスのための仮想-物理アドレス変換エントリを含んでいないことがある。図3におけるTLB56'は、「マイクロTLB」または「シャドーTLB」であり得る。そのような実施形態では、第1の仮想アドレス50および/または第2の仮想アドレス54のいずれかのための物理アドレスがTLB56'中で利用可能でない場合に、追加の構成要素、回路、および/または論理が、仮想エイリアシングキャッシュヒット/ミス検出器36'中に設けられ得る。第1および第2の仮想アドレス50、54に対応する第1および第2の物理アドレス64'、66'のいずれかがTLB56'中に存在しない場合、第1および第2の物理アドレス64'、66'の有効な比較を比較器58によって行うことができない。したがって、仮想エイリアシングキャッシュヒット/ミス検出器36'は、VIVTキャッシュ34'によって生成された非エイリアスキャッシュミスが真のキャッシュヒット(すなわち、エイリアスキャッシュヒット)であるか、真のキャッシュミス(すなわち、エイリアスキャッシュミス)であるかを判定することができない。
この点について、MMU32'、およびより詳細には検証器88は、第1および第2の仮想アドレス50、54に対応する第1および第2の物理アドレス64'、66'のうちの少なくとも1つが、TLB56'中に存在しないとき、真のキャッシュヒット(すなわち、エイリアスキャッシュヒット)を生成することを回避するために、追加の論理を含んでいる。この点について、TLB56'は、第1の物理アドレスヒット/ミスインジケータ82と、第2の物理アドレスヒット/ミスインジケータ84とを生成する。第1の仮想アドレス50を第1の物理アドレス64'に変換するために、一致するTLBエントリがTLB56'中に含まれている場合、TLB56'は、第1の物理アドレスヒット/ミスインジケータ82上で物理アドレスヒット指示を生成する。第1の仮想アドレス50を第1の物理アドレス64'に変換するために、一致するTLBエントリがTLB56'中に含まれていない場合、TLB56'は、第1の物理アドレスヒット/ミスインジケータ82上で物理アドレスミス指示を生成する。そのようなミスにおいて、第1の物理アドレス64'は、ゼロまたは未定義であり得る。
同様に、第2の仮想アドレス54を第2の物理アドレス66'に変換するために、一致するTLBエントリがTLB56'中に含まれている場合、TLB56'は、第2の物理アドレスヒット/ミスインジケータ84上で物理アドレスヒット指示を生成する。第2の仮想アドレス54を第2の物理アドレス66'に変換するために、一致するTLBエントリがTLB56'中に含まれていない場合、TLB56'は、第2の物理アドレスヒット/ミスインジケータ84上で物理アドレスミス指示を生成する。そのようなミスにおいて、第2の物理アドレス66'は、ゼロまたは未定義であり得る。
物理アドレスミス指示が第1の物理アドレスヒット/ミスインジケータ82および/または第2の物理アドレスヒット/ミスインジケータ84上で生成される場合、第2の仮想アドレス54が第1の仮想アドレス50のエイリアスであるかどうかを判定することができない。このシナリオでは、第1の仮想アドレス50がインデックス付きキャッシュエントリ46'のタグ40に直接一致する(すなわち、非エイリアスキャッシュヒットがある)のでない限り、エイリアスキャッシュヒット/ミスインジケータ68'がキャッシュミスとして生成される。
この点について、検証器88は、ANDベースの論理92とORベースの論理94とを備える。ANDベースの論理92は、第1の物理アドレスヒット/ミスインジケータ82と、第2の物理アドレスヒット/ミスインジケータ84と、暫定エイリアスキャッシュヒット/ミスインジケータ86とを受信し、ORベースの論理94への出力を生成する。ORベースの論理94は、非エイリアスキャッシュヒット/ミスインジケータ90と、ANDベースの論理92の出力とを受信する。ORベースの論理94はまた、エイリアスキャッシュヒット/ミスインジケータ68'を生成する。したがって、物理アドレスミス指示が第1または第2の物理アドレスヒット/ミスインジケータ82、84(または両方)上で生成される場合、第1の仮想アドレス50がインデックス付きキャッシュエントリ46'のタグ40に直接一致するのでない限り(すなわち、非エイリアスキャッシュヒット/ミスインジケータ90が非エイリアスキャッシュヒットであるのでない限り)、エイリアスキャッシュヒット/ミスインジケータ68'は、キャッシュミスとして与えられることになる。この実施形態におけるANDベースの論理92はまた、タグ40に対応するエントリ46'の有効性の指示(たとえば、有効ビット72)を受信し、データ44が無効であるか、またはTLB56'が第1および第2の仮想アドレス50、54のいずれかのための物理アドレスを含んでいない場合、検証器88が、エイリアスキャッシュヒット/ミスインジケータ68'としてエイリアスキャッシュミスを生成することができるようにする。
図3におけるMMU32'はまた、TLB56'によって引き起こされる別の問題に対処するようにも構成される。図3におけるMMU32'はまた、VIVTキャッシュ34'の現在のインデックス付きキャッシュエントリ46'を無効化するために、VIVTキャッシュ34'の無効化ポート98にキャッシュエントリ無効化インジケータ97を与える無効化器96を含んでいる。この実施形態は、TLB56'が、第1の仮想アドレス50および/または第2の仮想アドレス54のいずれかのための第1および/または第2の物理アドレス64'、66'変換を与えることができないか、あるいはタグ40に対応するエントリ46'が無効であるとき、データの非一貫性の問題を回避する。この点について、この実施形態では、無効化器96は、第1の物理アドレスヒット/ミスインジケータ82および/または第2の物理アドレスヒット/ミスインジケータ84のいずれかが物理アドレスミス指示として与えられるとき、現在のインデックス付きキャッシュエントリ46'を無効化するために、ORベースの論理102を含んでいる。一実施形態では、ORベースの論理102は、第1の物理アドレスヒット/ミスインジケータ82と第2の物理アドレスヒット/ミスインジケータ84とを受信し、VIVTキャッシュ34'の無効化ポート98へのキャッシュエントリ無効化インジケータ97を直接生成する、2入力ORゲートとして設けられる。ただし、図3に示すように、追加の論理もまた、現在のインデックス付きキャッシュエントリ46'を不必要に無効化することを回避するために、無効化器96中に設けられ得る。
引き続き図3における無効化器96を参照すると、第1の仮想アドレス50が現在のインデックス付きキャッシュエントリ46'のタグ40に直接一致する(すなわち、非エイリアスキャッシュヒットがある)場合、エイリアスキャッシュヒット/ミスインジケータ68'は、TLB56'が第1および第2の仮想アドレス50、54を第1および第2の物理アドレス64'、66'に変換することができるかどうかにかかわらず、キャッシュヒットであるべきである。このシナリオでは、非エイリアスキャッシュヒット/ミスインジケータ90が、非エイリアスキャッシュヒットとして、VIVTキャッシュ34'によって生成されることになる。したがって、無効化器96は、非エイリアスキャッシュヒット/ミスインジケータ90が非エイリアスキャッシュヒットである場合、無効化器96がVIVTキャッシュ34'の現在のインデックス付きキャッシュエントリ46'を無効化することを防止する、ANDベースの論理100を設ける。
図3における無効化器96はまた、現在のインデックス付きキャッシュエントリ46'を不必要に無効化することを回避するために、追加の最適化を与える。現在のインデックス付きキャッシュエントリ46'がすでに無効とマークされている場合、そのキャッシュエントリ46'を無効化する必要はない。この点について、無効化器96は、現在のインデックス付きキャッシュエントリ46'の有効ビット72がすでに無効とマークされている場合、無効化器96が現在のインデックス付きキャッシュエントリ46'を無効化することを防止する、ANDベースの論理100を設ける。
図3に示すように、無効化器96は、ORベースの論理102および/またはANDベースの論理100を使用して設けられ得る。一実施形態では、無効化器96は、ORゲート、ANDゲート、ならびにインバータ104、106、および108によって設けられ得る。ただし、無効化器96を設けるために、代替論理ゲート(非限定的な例として、ORゲート、ANDゲート、NANDゲート、NORゲート、インバータ、および/または他のゲート)もまた使用され得ることを、当業者は了解されよう。当業者はまた、無効化器96を設けるために使用され得る他のハードウェアまたはソフトウェアをも了解されよう。さらに、具体的な実装形態に応じて、VIVTキャッシュ34'の現在のインデックス付きキャッシュエントリ46'を無効化するための無効化器96を設けるために、追加の入力、より少ない入力、または代替入力が使用され得る。さらに、無効化器96は、いくつかの実施形態では、仮想エイリアシングキャッシュヒット/ミス検出器36'の任意の構成要素である。たとえば、無効化器96は、第1および第2の仮想アドレス50、54が第1および第2の物理アドレス64''、66''に変換され得ることを保証する、仮想エイリアシングキャッシュヒット/ミス検出器36''中に設けられなくてもよい。この点について、図4は、第1および第2の仮想アドレス50、54の、第1および第2の物理アドレス64''、66''への変換が、追加の構成要素、回路、および/または論理によって保証されるので、無効化器96を必要としなくてもよい一実施形態を提供する。
図4は、図2におけるMMU32の例示的な実施形態を提供する、別の例示的なMMU32''を示す。図4におけるMMU32''は、第1の仮想アドレス50および/または第2の仮想アドレス54がTLB56'中に含まれていない場合、仮想-物理アドレス変換の代替ソースを与えるために、追加の回路を設ける。この点について、図4におけるMMU32''は、仮想-物理アドレス変換の代替ソースを与えるために、追加のTLB112を備える。TLB112は、第1の仮想アドレス50を受信し、第1の仮想アドレス50を第3の物理アドレス(PA3)118に変換する。TLB112は、第2の仮想アドレス54をさらに受信し、第2の仮想アドレス54を第4の物理アドレス(PA4)120に変換する。TLB112は、MMU32''によってアクセス可能なすべての仮想アドレスを、物理アドレスに変換することが可能であり得る。結果として、第1および第2の仮想アドレス50、54の、第1および第2の物理アドレス64''、66''への変換が保証され得る。ただし、TLB112は、その仮想-物理アドレス変換を実行するために、TLB56'よりも多くの時間を利用し得る。TLB112は、統合TLB(すなわち、命令とデータの両方のための仮想-物理アドレス変換を行うTLB)であり得る。
引き続き図4を参照すると、仮想エイリアシングキャッシュヒット/ミス検出器36''は、TLB56'およびTLB112によって与えられる変換されたアドレスの中で選択するために、第1のマルチプレクサ(MUX1)114と第2のマルチプレクサ(MUX2)116とをさらに備える。TLB56'が、第1および/または第2の仮想アドレス50、54のための仮想-物理アドレス変換エントリを含んでいる場合、TLB56'によって与えられた第1および第2の暫定物理アドレス128、130が、第1および第2の物理アドレス64''、66''として、第1および第2のマルチプレクサ114、116によって与えられ得る。そうでない場合、TLB112からの第3および第4の物理アドレス118、120が、第1および第2の物理アドレス64''、66''として与えられ得る。
この点について、第1のマルチプレクサ114は、TLB56'によって生成された第1の暫定物理アドレス128と、TLB112によって生成された第3の物理アドレス118とを受信する。第1のマルチプレクサ114はまた、第1の選択入力(SEL1)122を受信する。第1のマルチプレクサ114に与えられる第1の選択入力122は、TLB56'によって生成された第1の物理アドレスヒット/ミスインジケータ82に基づき得る。一実施形態では、図4に示すように、TLB56'によって生成された第1の物理アドレスヒット/ミスインジケータ82が、第1の選択入力122として第1のマルチプレクサ114に与えられ得る。第1の物理アドレスヒット/ミスインジケータ82がヒットであるとき、第1のマルチプレクサ114は、比較器58に与えられる第1の物理アドレス64''として、TLB56'によって生成された第1の暫定物理アドレス128を与えることになる。この事例では、第1の物理アドレス64''は、TLB112が変換された第3の物理アドレス118を与えることを待機せずに、比較器58に与えられ得る。ただし、第1の物理アドレスヒット/ミスインジケータ82がミスであるとき、第1のマルチプレクサ114は、比較器58に与えられる第1の物理アドレス64''として、TLB112によって生成された第3の物理アドレス118を与えることになる。第1の物理アドレスヒット/ミスインジケータ82に基づいた代替論理もまた、第1の選択入力122として第1のマルチプレクサ114に与えられ得ることを、当業者は了解されよう。
同様に、第2のマルチプレクサ116は、TLB56'によって生成された第2の暫定物理アドレス130と、TLB112によって生成された第4の物理アドレス120とを受信する。第2のマルチプレクサ116はまた、第2の選択入力(SEL2)124を受信する。第2のマルチプレクサ116に与えられる第2の選択入力124は、TLB56'によって生成された第2の物理アドレスヒット/ミスインジケータ84に基づき得る。一実施形態では、図4に示すように、TLB56'によって生成された第2の物理アドレスヒット/ミスインジケータ84が、第2の選択入力124として第2のマルチプレクサ116に与えられ得る。ただし、第2の物理アドレスヒット/ミスインジケータ84に基づいた代替論理もまた、第2の選択入力124として第2のマルチプレクサ116に与えられ得ることを、当業者は了解されよう。第2の物理アドレスヒット/ミスインジケータ84がヒットであるとき、第2のマルチプレクサ116は、比較器58に与えられる第2の物理アドレス66''として、TLB56'によって生成された第2の暫定物理アドレス130を与えることになる。この事例では、第2の物理アドレス66''は、TLB112が変換された第4の物理アドレス120を与えることを待機せずに、比較器58に与えられ得る。ただし、第2の物理アドレスヒット/ミスインジケータ84がミスであるとき、第2のマルチプレクサ116は、比較器58に与えられる第2の物理アドレス66''として、TLB112によって生成された第4の物理アドレス120を与えることになる。
第1および/または第2の物理アドレスヒット/ミスインジケータ82、84がミスであるとき、MMU32''がその中に設けられ得る処理パイプラインは、TLB112が第3および/または第4の物理アドレス118、120を与えるまで停止(stall)され得る。処理パイプラインは停止され得るが、TLB56'が第1および/または第2の仮想アドレス50、54のためのエントリを含んでいるかどうかにかかわらず、第1および/または第2の物理アドレス64''、66''が適切に変換されるようになることが保証される。結果として、MMU32''は、TLB56'の変換ミスのために現在のキャッシュエントリ46'を無効化するために(図3における無効化器96などの)無効化器を必要としない。
適切に変換された第1の物理アドレス64''と第2の物理アドレス66''とが保証されるので、検証器88'もまた、低減された論理を使用して設けられ得る。図4では、検証器88'は、(図3において与えられた実施形態とは対照的に)TLB56'における仮想-物理アドレス変換がミスする場合を扱う必要がない。この点について、図4に示すように、第1および第2の物理アドレスヒット/ミスインジケータ82、84は、MMU32''中の検証器88'への入力として与えられなくてもよい。
図3および図4のいくつかの要素を組み合わせるハイブリッド手法もまた可能である。この点について、一実施形態では、第1の物理アドレス64''は、(図4に示すように)TLB56'またはTLB112のいずれかからの変換を与えられ得るのに対して、第2の物理アドレス66'は、(図3に示すように)TLB56'からの変換のみを与えられ得る。したがって、第1のマルチプレクサ(MUX1)114は、TLB56'またはTLB112のいずれかからの変換を受信して、第1の物理アドレス64''を比較器58に与えるために設けられることになる。ただし、第2のマルチプレクサ(MUX2)116は、第2の物理アドレス66'を比較器58に与えることを必要とされなくなる。代わりに、比較器58は、第2の物理アドレス66'として、TLB56'によって生成された第2の暫定物理アドレス130を受信するように構成され得る。検証器88は、図3に示すように、第2の物理アドレスヒット/ミスインジケータ84を受信することになる。検証器88は、第1の物理アドレスヒット/ミスインジケータ82を受信することを必要とされなくてもよい。TLB112が、MMU32''によってアクセス可能なすべての仮想アドレスを、物理アドレスに変換することが可能である場合、第1の物理アドレス64''の変換が保証されることになる。無効化器96もまた設けられることになる。無効化器96のANDベースの論理100は、反転された第2の物理アドレスヒット/ミスインジケータ84を受信することになる。ただし、TLB112が第1の物理アドレス64''の変換を保証する場合、無効化器96は、第1の物理アドレスヒット/ミスインジケータ82を受信することを必要とされなくなる。
図3および図4に示すように、検証器88、88'、および無効化器96は、ANDベースの論理から構成され得る。検証器88、88'、および/または無効化器96を設けるために、様々な論理ゲートもまた使用され得る(非限定的な例として、ANDゲート、ORゲート、NANDゲート、NORゲート、インバータ、および/または他のゲート)ことを、当業者は了解されよう。当業者はまた、検証器88、88'、および/または無効化器96を設けるために使用され得る他のハードウェアまたはソフトウェアをも了解されよう。さらに、具体的な実装形態に応じて、比較器58によって生成された暫定エイリアスキャッシュヒット/ミスインジケータ86、86'を検証するための検証器88、88'を設けるために、追加の入力、より少ない入力、または代替入力が使用され得る。
仮想エイリアシングキャッシュヒット/ミス検出器36、36'、36''、および/または仮想エイリアシングキャッシュヒット/ミス検出器36、36'、36''を備えるMMU32、32'、32''、ならびに本明細書で開示する実施形態による関連システムおよび方法は、任意のプロセッサベースデバイスにおいて提供され、または任意のプロセッサベースデバイスに統合され得る。例として、限定されないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤが含まれる。
この点について、図5は、図2、図3、および/または図4に示す、仮想エイリアシングキャッシュヒット/ミス検出器36、36'、36''、および/または仮想エイリアシングキャッシュヒット/ミス検出器36、36'、36''を備えるMMU32、32'、32''を採用することができる、プロセッサベースシステム132の一例を示す。この例では、プロセッサベースシステム132は、1つまたは複数のプロセッサ136を各々が含む、1つまたは複数の中央処理装置(CPU)134を含む。CPU134は、マスタデバイスであり得る。CPU134は、一時記憶データへの高速アクセスのためにプロセッサ136に結合されたキャッシュメモリ142を有し得る。キャッシュメモリ142は、MMU32、32'、32''、VIVTキャッシュ34、34'、34''、および/または仮想エイリアシングキャッシュヒット/ミス検出器36、36'、36''を備え得る。キャッシュメモリ142は、キャッシュ管理ユニット140によって管理され得る。CPU134は、システムバス144に結合され、プロセッサベースシステム132中に含まれるマスタデバイスとスレーブデバイスとを相互結合することができる。よく知られているように、CPU134は、アドレス情報、制御情報、およびデータ情報を、システムバス144を通じて交換することによって、これらの他のデバイスと通信する。たとえば、CPU134は、システムメモリ146のメモリ158にアクセスするために、メモリコントローラ138にバストランザクション要求を通信することができる。システムメモリ146のメモリ158は、プログラムストア160および/またはデータストア162を備え得る。図5には示さないが、複数のシステムバス144を設けてもよく、この場合、各システムバス144は異なるファブリックを構成する。
他のマスタおよびスレーブデバイスが、システムバス144に接続され得る。図5に示すように、これらのデバイスは、例として、システムメモリ146、1つまたは複数の入力デバイス148、1つまたは複数の出力デバイス150、1つまたは複数のネットワークインターフェースデバイス152、ならびに1つまたは複数のディスプレイコントローラ154を含み得る。入力デバイス148は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含み得る。出力デバイス150は、限定はしないが、オーディオ、ビデオ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含み得る。ネットワークインターフェースデバイス152は、ネットワーク156との間でデータの交換を可能にするように構成された任意のデバイスであり得る。ネットワーク156は、限定はしないが、有線ネットワークまたはワイヤレスネットワーク、プライベートネットワークまたは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク(WLAN)、およびインターネットを含む、任意のタイプのネットワークであり得る。ネットワークインターフェースデバイス152は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。キャッシュメモリ142は、1つまたは複数のMMU32、32'、32''を含み得る。
CPU134はまた、システムバス144上でディスプレイコントローラ154にアクセスして、1つまたは複数のディスプレイ170に送られる情報を制御するようにも構成され得る。ディスプレイコントローラ154は、1つまたは複数のビデオプロセッサ168を介して表示されるべき情報を、ディスプレイ170に送り、ビデオプロセッサ168は、表示されるべき情報を、ディスプレイ170に適切なフォーマットとなるように処理する。ディスプレイ170は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、プラズマディスプレイ、2次元(2-D)ディスプレイ、3次元(3-D)ディスプレイ、タッチスクリーンディスプレイなどを含む、任意のタイプのディスプレイを含み得る。
CPU134およびディスプレイコントローラ154は、システムバス144上でメモリ158、166へのメモリアクセス要求を行うためのマスタデバイスとして動作し得る。CPU134およびディスプレイコントローラ154内の様々なスレッドは、CPU134中のメモリ(非限定的な例として、CPU134中の汎用レジスタ)にアクセスするための、および/またはメモリコントローラ138、164への要求を行い得る。そのようなメモリは、MMU32、32'、32''中、たとえば、VIVTキャッシュ34中にキャッシュされ得る。MMU32、32'、32''中にキャッシュされない場合、そのようなメモリは、CPU134中の汎用レジスタ、および/またはメモリ158、166からアクセスされ得る。メモリ158、166を含む、プロセッサベースシステム132中の任意のメモリは、本明細書で開示する装置および方法による、VIVTキャッシュ34、34'、34''と仮想エイリアシングキャッシュヒット/ミス検出器36、36'、36''とを備えるMMU32、32'、32''を使用して、キャッシュされ得る。非限定的な例として、プロセッサ136、168を含む任意のプロセッサは、ローカルキャッシュとして、VIVTキャッシュ34と仮想エイリアシングキャッシュヒット/ミス検出器36、36'、36''とを備えるMMU32、32'、32''を使用し得る。
本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子的なハードウェアとして、メモリもしくは別のコンピュータ可読媒体に記憶され、プロセッサもしくは他の処理デバイスによって実行される命令として、またはこれら両方の組合せとして実装され得ることを、当業者はさらに了解されよう。本明細書で説明するメモリ、メモリバンク、メモリサブバンク、メモリアクセスインターフェース(MAI)、メモリコントローラ、バス、マスタデバイス、およびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップ中で採用され得る。本明細書で開示するメモリは、任意のタイプおよびサイズのメモリであってもよく、所望の任意のタイプの情報を記憶するように構成され得る。この互換性を明確に示すために、上記では、様々な例示的構成要素、ブロック、モジュール、回路、およびステップは全般的に、それらの機能に関して説明されている。そのような機能がどのように実装されるかは、特定の適用例、設計選択、および/または全体的なシステムに課された設計制約によって決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せで実装または実行され得る。プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。
本明細書で開示する実施形態は、ハードウェアで具現されてもよく、ハードウェアに記憶される命令で具現されてもよく、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または、当技術分野で知られている任意の他の形態のコンピュータ可読媒体に、存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体はASIC中に存在し得る。ASICは遠隔局に存在し得る。代替として、プロセッサおよび記憶媒体は、遠隔局、基地局、またはサーバ中に、個別の構成要素として存在し得る。
本明細書の例示的な実施形態のいずれかで説明した動作ステップは、例および説明を提供するために説明したものであることにも、留意されたい。説明した動作は、例示した順序以外の多数の異なる順序で実行され得る。さらに、単一の動作ステップで説明した動作は、実際には、いくつかの異なるステップで実行され得る。加えて、例示的な実施形態において論じた1つまたは複数の動作ステップは、組み合わされてもよい。フローチャート図において例示した動作ステップは、当業者に容易に明らかとなるような多数の異なる修正を受けてもよいことを、理解されたい。情報および信号は、多種多様な技術および技法のいずれかを使用して表され得ることも、当業者には理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
本開示の上記の説明は、当業者が本開示を作成または使用できるようにするために提供される。本開示への様々な修正が当業者には容易に明らかとなり、本明細書で定義した一般原理は、本開示の趣旨および範囲を逸脱することなく他の変形形態に適用され得る。したがって、本開示は、本明細書で説明した例および設計に限定されることを意図するものではなく、本明細書で開示する原理および新規の特徴に一致する最も広い範囲を与えられるべきである。
10、32、32'、32'' メモリ管理ユニット(MMU)
12、34、34'、34'' 仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)
14、56、56'、112 トランスレーションルックアサイドバッファ(TLB)
15 仮想アドレス入力ライン
16 仮想アドレス、第1の仮想アドレス、第2の仮想アドレス
18、38、74 タグアレイ
20、40 タグ、インデックス付きタグ
22、42 データアレイ
24 データ、エイリアスデータ
26、46 キャッシュエントリ
28 VIVTキャッシュヒット/ミスインジケータ
30、80 物理アドレス
36、36'、36'' 仮想エイリアシングキャッシュヒット/ミス検出器
44 データ
46' キャッシュエントリ、インデックス付きキャッシュエントリ、エントリ、現在のインデックス付きキャッシュエントリ
48 仮想アドレス入力ライン
50 第1の仮想アドレス(VA1)
54 第2の仮想アドレス
58 比較器
60 第1の読取りポート
62 第2の読取りポート
64 第1の物理アドレス、物理アドレス
64'、64'' 第1の物理アドレス
66 物理アドレス、第2の物理アドレス
66'、66'' 第2の物理アドレス
68、68' エイリアスキャッシュヒット/ミスインジケータ
72 有効ビット
76 仮想アドレスタグ
78 物理アドレスアレイ
82 第1の物理アドレスヒット/ミスインジケータ
84 第2の物理アドレスヒット/ミスインジケータ
86、86' 暫定エイリアスキャッシュヒット/ミスインジケータ
88、88' 検証器
90 非エイリアスキャッシュヒット/ミスインジケータ
92、100 ANDベースの論理
94、102 ORベースの論理
96 無効化器
97 キャッシュエントリ無効化インジケータ
98 無効化ポート
104、106、108 インバータ
114 第1のマルチプレクサ(MUX1)
116 第2のマルチプレクサ(MUX2)
118 第3の物理アドレス(PA3)
120 第4の物理アドレス(PA4)
122 第1の選択入力(SEL1)
124 第2の選択入力(SEL2)
128 第1の暫定物理アドレス
130 第2の暫定物理アドレス
132 プロセッサベースシステム
134 中央処理装置(CPU)
136 プロセッサ
138、164 メモリコントローラ
140 キャッシュ管理ユニット
142 キャッシュメモリ
144 システムバス
146 システムメモリ
148 入力デバイス
150 出力デバイス
152 ネットワークインターフェースデバイス
154 ディスプレイコントローラ
156 ネットワーク
158、166 メモリ
160 プログラムストア
162 データストア
168 ビデオプロセッサ
170 ディスプレイ

Claims (18)

  1. 仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)のための仮想エイリアシングキャッシュヒット/ミス検出器であって、
    トランスレーションルックアサイドバッファ(TLB)であって、
    第1の仮想アドレスを受信することと、
    第2の仮想アドレスが前記第1の仮想アドレスと異なることを示すタグに応答して、前記第1の仮想アドレスに基づいた仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)へのインデックス付き読込みから生じるキャッシュエントリの前記タグから構成される、前記第2の仮想アドレスを受信することと、
    前記第1の仮想アドレスから変換された第1の物理アドレスを生成することと、
    前記第2の仮想アドレスから変換された第2の物理アドレスを生成することと、
    前記第1の仮想アドレスに対応する前記第1の物理アドレスが前記TLB中に含まれているかどうかを示す、第1の物理アドレスヒット/ミスインジケータを生成することと、
    前記第2の仮想アドレスに対応する前記第2の物理アドレスが前記TLB中に含まれているかどうかを示す、第2の物理アドレスヒット/ミスインジケータを生成することと
    を行うように構成されたトランスレーションルックアサイドバッファ(TLB)と、
    比較器であって、
    前記第1の物理アドレスと前記第2の物理アドレスとを受信することと
    記第1の物理アドレスが前記第2の物理アドレスと等しいかどうかを示す、暫定エイリアスキャッシュヒット/ミスインジケータを生成することと
    を行うように構成された比較器と、
    VIVTキャッシュエントリ無効化器であって、
    前記VIVTキャッシュによって生成された非エイリアスVIVTキャッシュヒット/ミスインジケータを受信することと、
    前記第1の物理アドレスヒット/ミスインジケータを受信することと、
    前記第2の物理アドレスヒット/ミスインジケータを受信することと、
    前記非エイリアスVIVTキャッシュヒット/ミスインジケータと、前記第1の物理アドレスヒット/ミスインジケータと、前記第2の物理アドレスヒット/ミスインジケータとに基づいて、前記キャッシュエントリを無効化するかどうかを示す無効化インジケータを生成することと
    を行うように構成されたVIVTキャッシュエントリ無効化器と
    を備える、仮想エイリアシングキャッシュヒット/ミス検出器。
  2. 前記キャッシュエントリの有効性を示すキャッシュエントリ有効性インジケータを受信することと、
    前記暫定エイリアスキャッシュヒット/ミスインジケータを受信することと、
    前記キャッシュエントリ有効性インジケータと前記暫定エイリアスキャッシュヒット/ミスインジケータとに基づいて、エイリアスキャッシュヒット/ミスインジケータを生成することと
    を行うように構成されたエイリアスキャッシュヒット/ミス検証器をさらに備える、請求項1に記載の仮想エイリアシングキャッシュヒット/ミス検出器。
  3. 前記第1の物理アドレスヒット/ミスインジケータを受信することと、
    前記第2の物理アドレスヒット/ミスインジケータを受信することと、
    前記暫定エイリアスキャッシュヒット/ミスインジケータを受信することと、
    前記第1の物理アドレスヒット/ミスインジケータと、前記第2の物理アドレスヒット/ミスインジケータと、前記暫定エイリアスキャッシュヒット/ミスインジケータとに基づいて、エイリアスキャッシュヒット/ミスインジケータを生成することと
    を行うように構成されたエイリアスキャッシュヒット/ミス検証器をさらに備える、請求項1に記載の仮想エイリアシングキャッシュヒット/ミス検出器。
  4. 前記エイリアスキャッシュヒット/ミス検証器が、前記キャッシュエントリの有効性を示すキャッシュエントリ有効性インジケータを受信するようにさらに構成される、請求項3に記載の仮想エイリアシングキャッシュヒット/ミス検出器。
  5. 前記エイリアスキャッシュヒット/ミス検証器が、ANDベースの論理手段から構成される、請求項3に記載の仮想エイリアシングキャッシュヒット/ミス検出器。
  6. 前記VIVTキャッシュエントリ無効化器が、前記キャッシュエントリの有効性を示すキャッシュエントリ有効性インジケータを受信するようにさらに構成される、請求項1に記載の仮想エイリアシングキャッシュヒット/ミス検出器。
  7. 前記VIVTキャッシュエントリ無効化器が、
    前記非エイリアスVIVTキャッシュヒット/ミスインジケータがミスであり、
    記キャッシュエントリ有効性インジケータが、有効なキャッシュエントリを示し、かつ
    前記第1の物理アドレスヒット/ミスインジケータがミスである場合、
    前記キャッシュエントリを無効化するように構成される、請求項6に記載の仮想エイリアシングキャッシュヒット/ミス検出器。
  8. 前記VIVTキャッシュエントリ無効化器が、
    前記非エイリアスVIVTキャッシュヒット/ミスインジケータがミスであり、
    記キャッシュエントリ有効性インジケータが、有効なVIVTキャッシュエントリを示し、かつ
    前記第2の物理アドレスヒット/ミスインジケータがミスである場合、
    前記キャッシュエントリを無効化するように構成される、請求項6に記載の仮想エイリアシングキャッシュヒット/ミス検出器。
  9. 前記VIVTキャッシュエントリ無効化器が、ANDベースの論理手段から構成される、請求項6に記載の仮想エイリアシングキャッシュヒット/ミス検出器。
  10. 前記無効化インジケータが前記VIVTキャッシュに与えられる、請求項6に記載の仮想エイリアシングキャッシュヒット/ミス検出器。
  11. 前記TLBが、
    マイクロTLBであって、
    前記第1の仮想アドレスから変換された第1の物理アドレスを生成することと、
    前記第2の仮想アドレスから変換された第2の物理アドレスを生成することと
    を行うように構成されたマイクロTLBを備え、
    前記マイクロTLBが、
    前記第1の仮想アドレスのためのエントリが前記TLB中に含まれているかどうかを示す、第1の物理アドレスヒット/ミスインジケータを生成することと、
    前記第2の仮想アドレスのためのエントリが前記TLB中に含まれているかどうかを示す、第2の物理アドレスヒット/ミスインジケータを生成することと
    を行うようにさらに構成される、請求項1に記載の仮想エイリアシングキャッシュヒット/ミス検出器。
  12. 中央処理装置(CPU)のメモリ管理ユニット(MMU)中に配設された、請求項1に記載の仮想エイリアシングキャッシュヒット/ミス検出器。
  13. 半導体ダイに統合された、請求項1に記載の仮想エイリアシングキャッシュヒット/ミス検出器。
  14. 前記仮想エイリアシングキャッシュヒット/ミス検出器が、前記仮想エイリアシングキャッシュヒット/ミス検出器がその中に統合されるセットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤからなるグループから選択されたデバイス中に配設される、請求項1に記載の仮想エイリアシングキャッシュヒット/ミス検出器。
  15. 仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)のための仮想エイリアシングキャッシュヒット/ミス検出器であって、
    トランスレーションルックアサイドバッファ(TLB)手段であって、
    第1の仮想アドレスを受信することと、
    第2の仮想アドレスが前記第1の仮想アドレスと異なることを示すタグに応答して、前記第1の仮想アドレスに基づいた前記仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)へのインデックス付き読込みから生じるキャッシュエントリの前記タグから構成される、第2の仮想アドレスを受信することと、
    前記第1の仮想アドレスから変換された第1の物理アドレスを生成することと、
    前記第2の仮想アドレスから変換された第2の物理アドレスを生成することと、
    前記第1の仮想アドレスに対応する前記第1の物理アドレスが前記TLB手段中に含まれているかどうかを示す、第1の物理アドレスヒット/ミスインジケータを生成することと、
    前記第2の仮想アドレスに対応する前記第2の物理アドレスが前記TLB手段中に含まれているかどうかを示す、第2の物理アドレスヒット/ミスインジケータを生成することと
    を行うように構成されたTLB手段と、
    比較器手段であって、
    前記第1の物理アドレスと前記第2の物理アドレスとを受信することと
    記第1の物理アドレスが前記第2の物理アドレスと等しいかどうかを示す、暫定エイリアスキャッシュヒット/ミスインジケータを生成することと
    を行うように構成された比較器手段と、
    VIVTキャッシュエントリ無効化器手段であって、
    前記VIVTキャッシュによって生成された非エイリアスVIVTキャッシュヒット/ミスインジケータを受信することと、
    前記第1の物理アドレスヒット/ミスインジケータを受信することと、
    前記第2の物理アドレスヒット/ミスインジケータを受信することと、
    前記非エイリアスVIVTキャッシュヒット/ミスインジケータと、前記第1の物理アドレスヒット/ミスインジケータと、前記第2の物理アドレスヒット/ミスインジケータとに基づいて、前記キャッシュエントリを無効化するかどうかを示す無効化インジケータを生成することと
    を行うように構成されたVIVTキャッシュエントリ無効化器と
    を備える、仮想エイリアシングキャッシュヒット/ミス検出器。
  16. 仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)のための仮想エイリアシングキャッシュヒット/ミス検出器を提供する方法であって、
    トランスレーションルックアサイドバッファ(TLB)において、第1の仮想アドレスを受信するステップと、
    第2の仮想アドレスが前記第1の仮想アドレスと異なることを示すタグに応答して、前記TLBにおいて、前記第1の仮想アドレスに基づいた前記仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)へのインデックス付き読込みから生じるキャッシュエントリの前記タグから構成される、前記第2の仮想アドレスを受信するステップと、
    前記TLBによって、前記第1の仮想アドレスから変換された第1の物理アドレスを生成するステップと、
    前記TLBによって、前記第2の仮想アドレスから変換された第2の物理アドレスを生成するステップと、
    前記TLBによって、前記第1の仮想アドレスに対応する前記第1の物理アドレスが前記TLB中に含まれているかどうかを示す、第1の物理アドレスヒット/ミスインジケータを生成す
    るステップと、
    前記TLBによって、前記第2の仮想アドレスに対応する前記第2の物理アドレスが前記TLB中に含まれているかどうかを示す、第2の物理アドレスヒット/ミスインジケータを生成するステップと、
    比較器において、前記第1の物理アドレスと前記第2の物理アドレスとを受信するステップと
    記比較器によって、前記第1の物理アドレスが前記第2の物理アドレスと等しいかどうかを示す、暫定エイリアスキャッシュヒット/ミスインジケータの生成を実施するステップと、
    VIVTキャッシュエントリ無効化器によって、前記VIVTキャッシュによって生成された非エイリアスVIVTキャッシュヒット/ミスインジケータを受信するステップと、
    前記VIVTキャッシュエントリ無効化器によって、前記第1の物理アドレスヒット/ミスインジケータを受信するステップと、
    前記VIVTキャッシュエントリ無効化器によって、前記第2の物理アドレスヒット/ミスインジケータを受信するステップと、
    前記VIVTキャッシュエントリ無効化器によって、前記非エイリアスVIVTキャッシュヒット/ミスインジケータと、前記第1の物理アドレスヒット/ミスインジケータと、前記第2の物理アドレスヒット/ミスインジケータとに基づいて、前記キャッシュエントリを無効化するかどうかを示す無効化インジケータを生成するステップと
    を含む方法。
  17. 仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)と、
    仮想エイリアシングキャッシュヒット/ミス検出器であって、
    トランスレーションルックアサイドバッファ(TLB)であって、
    第1の仮想アドレスを受信することと、
    第2の仮想アドレスが前記第1の仮想アドレスと異なることを示すタグに応答して、前記第1の仮想アドレスに基づいた前記VIVTキャッシュへのインデックス付き読込みから生じるキャッシュエントリの前記タグから構成される、第2の仮想アドレスを受信することと、
    前記第1の仮想アドレスに対応する第1の物理アドレスが前記TLB中に含まれているかどうかを示す、第1の物理アドレスヒット/ミスインジケータを生成することと、
    前記第2の仮想アドレスに対応する第2の物理アドレスが前記TLB中に含まれているかどうかを示す、第2の物理アドレスヒット/ミスインジケータを生成することと、
    前記第1の仮想アドレスから変換された第1の物理アドレスを生成することと、
    前記第2の仮想アドレスから変換された第2の物理アドレスを生成することと
    を行うように構成されたトランスレーションルックアサイドバッファ(TLB)と、
    比較器であって、
    前記第1の物理アドレスと前記第2の物理アドレスとを受信することと
    記第1の物理アドレスが前記第2の物理アドレスと等しいかどうかを示す、暫定エイリアスキャッシュヒット/ミスインジケータの生成を実施することと
    を行うように構成された比較器と、
    VIVTキャッシュエントリ無効化器であって、
    前記VIVTキャッシュによって生成された非エイリアスVIVTキャッシュヒット/ミスインジケータを受信することと、
    前記第1の物理アドレスヒット/ミスインジケータを受信することと、
    前記第2の物理アドレスヒット/ミスインジケータを受信することと、
    前記非エイリアスVIVTキャッシュヒット/ミスインジケータと、前記第1の物理アドレスヒット/ミスインジケータと、前記第2の物理アドレスヒット/ミスインジケータとに基づいて、前記キャッシュエントリを無効化するかどうかを示す無効化インジケータを生成することと
    を行うように構成されたVIVTキャッシュエントリ無効化器と
    を備える、仮想エイリアシングキャッシュヒット/ミス検出器と
    を備える、メモリ管理ユニット(MMU)。
  18. 中央処理装置(CPU)またはプロセッサベースシステム中に配設された、請求項17に記載のMMU。
JP2014553396A 2012-01-18 2013-01-17 仮想タグ付きキャッシュにおけるエイリアスアドレスのキャッシュヒット/ミスの判定、ならびに関連システムおよび方法 Expired - Fee Related JP6019136B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261587756P 2012-01-18 2012-01-18
US61/587,756 2012-01-18
US13/478,149 US9110830B2 (en) 2012-01-18 2012-05-23 Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods
US13/478,149 2012-05-23
PCT/US2013/021849 WO2013109696A2 (en) 2012-01-18 2013-01-17 Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods

Publications (3)

Publication Number Publication Date
JP2015507810A JP2015507810A (ja) 2015-03-12
JP2015507810A5 JP2015507810A5 (ja) 2015-11-26
JP6019136B2 true JP6019136B2 (ja) 2016-11-02

Family

ID=48780825

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014553396A Expired - Fee Related JP6019136B2 (ja) 2012-01-18 2013-01-17 仮想タグ付きキャッシュにおけるエイリアスアドレスのキャッシュヒット/ミスの判定、ならびに関連システムおよび方法

Country Status (9)

Country Link
US (1) US9110830B2 (ja)
EP (1) EP2805245B1 (ja)
JP (1) JP6019136B2 (ja)
KR (1) KR101570155B1 (ja)
CN (1) CN104040509B (ja)
BR (1) BR112014017659A8 (ja)
IN (1) IN2014CN04649A (ja)
TW (1) TWI502349B (ja)
WO (1) WO2013109696A2 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013097671A (ja) * 2011-11-02 2013-05-20 Fujitsu Ltd アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置
US20160379706A1 (en) * 2013-12-27 2016-12-29 Intel Corporation Dual voltage asymmetric memory cell
CN104375963B (zh) 2014-11-28 2019-03-15 上海兆芯集成电路有限公司 基于缓存一致性的控制系统和方法
EP3055774B1 (en) 2014-12-14 2019-07-17 VIA Alliance Semiconductor Co., Ltd. Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode
US9798668B2 (en) 2014-12-14 2017-10-24 Via Alliance Semiconductor Co., Ltd. Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon the mode
JP6218971B2 (ja) 2014-12-14 2017-10-25 ヴィア アライアンス セミコンダクター カンパニー リミテッド アドレス・タグ・ビットに基づく動的キャッシュ置換ウェイ選択
US9934152B1 (en) * 2015-02-17 2018-04-03 Marvell International Ltd. Method and apparatus to use hardware alias detection and management in a virtually indexed physically tagged cache
CN106155937B (zh) * 2015-04-07 2019-03-05 龙芯中科技术有限公司 缓存访问方法、设备和处理器
US10121220B2 (en) * 2015-04-28 2018-11-06 Nvidia Corporation System and method for creating aliased mappings to minimize impact of cache invalidation
US20160378684A1 (en) 2015-06-26 2016-12-29 Intel Corporation Multi-page check hints for selective checking of protected container page versus regular page type indications for pages of convertible memory
CN105095113B (zh) * 2015-07-21 2018-06-29 浪潮(北京)电子信息产业有限公司 一种缓存管理方法和系统
US9626300B2 (en) * 2015-07-27 2017-04-18 Google Inc. Address caching in switches
GB2543745B (en) * 2015-10-15 2018-07-04 Advanced Risc Mach Ltd An apparatus and method for operating a virtually indexed physically tagged cache
US10042777B2 (en) * 2016-03-30 2018-08-07 Qualcomm Incorporated Hardware-based translation lookaside buffer (TLB) invalidation
US10067870B2 (en) 2016-04-01 2018-09-04 Intel Corporation Apparatus and method for low-overhead synchronous page table updates
US9772943B1 (en) * 2016-04-01 2017-09-26 Cavium, Inc. Managing synonyms in virtual-address caches
US10120814B2 (en) * 2016-04-01 2018-11-06 Intel Corporation Apparatus and method for lazy translation lookaside buffer (TLB) coherence
US20180089094A1 (en) * 2016-09-23 2018-03-29 Qualcomm Incorporated Precise invalidation of virtually tagged caches
US10061698B2 (en) * 2017-01-31 2018-08-28 Qualcomm Incorporated Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur
US10318436B2 (en) 2017-07-25 2019-06-11 Qualcomm Incorporated Precise invalidation of virtually tagged caches
EP4187539B1 (en) * 2017-07-30 2024-06-05 NeuroBlade Ltd. A memory-based distributed processor architecture
US10725782B2 (en) * 2017-09-12 2020-07-28 Qualcomm Incorporated Providing variable interpretation of usefulness indicators for memory tables in processor-based systems
KR102151180B1 (ko) * 2017-11-20 2020-09-02 삼성전자주식회사 효율적인 가상 캐시 구현을 위한 시스템 및 방법
US10545879B2 (en) * 2018-03-26 2020-01-28 Arm Limited Apparatus and method for handling access requests
US10846235B2 (en) 2018-04-28 2020-11-24 International Business Machines Corporation Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator
US10489305B1 (en) * 2018-08-14 2019-11-26 Texas Instruments Incorporated Prefetch kill and revival in an instruction cache
CN109144901B (zh) * 2018-10-10 2024-01-02 古进 公式化虚拟地址转换
US10977175B2 (en) * 2019-02-01 2021-04-13 International Business Machines Corporation Virtual cache tag renaming for synonym handling
US11061819B2 (en) 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US11169930B2 (en) * 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
US11048636B2 (en) * 2019-07-31 2021-06-29 Micron Technology, Inc. Cache with set associativity having data defined cache sets

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02208756A (ja) * 1989-02-09 1990-08-20 Nec Corp キャッシュメモリ制御方式
JPH07287668A (ja) * 1994-04-19 1995-10-31 Hitachi Ltd データ処理装置
US6175906B1 (en) * 1996-12-06 2001-01-16 Advanced Micro Devices, Inc. Mechanism for fast revalidation of virtual tags
US6298411B1 (en) * 1999-01-05 2001-10-02 Compaq Computer Corporation Method and apparatus to share instruction images in a virtual cache
US8417915B2 (en) 2005-08-05 2013-04-09 Arm Limited Alias management within a virtually indexed and physically tagged cache memory
EP1986101B1 (en) 2006-02-14 2012-06-20 Fujitsu Ltd. Coherency maintaining device and coherency maintaining method
US7802055B2 (en) * 2006-04-19 2010-09-21 Qualcomm Incorporated Virtually-tagged instruction cache with physically-tagged behavior
JP4783229B2 (ja) 2006-07-19 2011-09-28 パナソニック株式会社 キャッシュメモリシステム
US7991963B2 (en) * 2007-12-31 2011-08-02 Intel Corporation In-memory, in-page directory cache coherency scheme
US8041894B2 (en) 2008-02-25 2011-10-18 International Business Machines Corporation Method and system for a multi-level virtual/real cache system with synonym resolution
US8090984B2 (en) * 2008-12-10 2012-01-03 Freescale Semiconductor, Inc. Error detection and communication of an error location in multi-processor data processing system having processors operating in Lockstep
US20110145542A1 (en) * 2009-12-15 2011-06-16 Qualcomm Incorporated Apparatuses, Systems, and Methods for Reducing Translation Lookaside Buffer (TLB) Lookups
JP2011198091A (ja) 2010-03-19 2011-10-06 Toshiba Corp 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム
KR20120083160A (ko) * 2011-01-17 2012-07-25 삼성전자주식회사 메모리 관리 유닛, 이를 포함하는 장치들, 및 이의 동작 방법
US8972642B2 (en) * 2011-10-04 2015-03-03 Qualcomm Incorporated Low latency two-level interrupt controller interface to multi-threaded processor
JP2013097671A (ja) * 2011-11-02 2013-05-20 Fujitsu Ltd アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置

Also Published As

Publication number Publication date
TW201346557A (zh) 2013-11-16
EP2805245B1 (en) 2019-10-09
EP2805245A2 (en) 2014-11-26
US9110830B2 (en) 2015-08-18
IN2014CN04649A (ja) 2015-09-18
WO2013109696A2 (en) 2013-07-25
KR20140116935A (ko) 2014-10-06
BR112014017659A2 (ja) 2017-06-20
CN104040509B (zh) 2018-01-30
KR101570155B1 (ko) 2015-11-19
US20130185520A1 (en) 2013-07-18
WO2013109696A3 (en) 2013-10-03
BR112014017659A8 (pt) 2017-07-11
CN104040509A (zh) 2014-09-10
TWI502349B (zh) 2015-10-01
JP2015507810A (ja) 2015-03-12

Similar Documents

Publication Publication Date Title
JP6019136B2 (ja) 仮想タグ付きキャッシュにおけるエイリアスアドレスのキャッシュヒット/ミスの判定、ならびに関連システムおよび方法
US10261917B2 (en) Identifying stale entries in address translation cache
US9086987B2 (en) Detection of conflicts between transactions and page shootdowns
US9720847B2 (en) Least recently used (LRU) cache replacement implementation using a FIFO storing indications of whether a way of the cache was most recently accessed
US9934152B1 (en) Method and apparatus to use hardware alias detection and management in a virtually indexed physically tagged cache
US20150019823A1 (en) Method and apparatus related to cache memory
US9135184B2 (en) Load-through fault mechanism
US9086986B2 (en) Detection of conflicts between transactions and page shootdowns
US20130024597A1 (en) Tracking memory access frequencies and utilization
US9460018B2 (en) Method and apparatus for tracking extra data permissions in an instruction cache
US20230107660A1 (en) Tracking memory block access frequency in processor-based devices
US10228991B2 (en) Providing hardware-based translation lookaside buffer (TLB) conflict resolution in processor-based systems
US10942853B2 (en) System and method including broadcasting an address translation invalidation instruction with a return marker to indentify the location of data in a computing system having mutiple processors
US20180285269A1 (en) Aggregating cache maintenance instructions in processor-based devices
US20230205872A1 (en) Method and apparatus to address row hammer attacks at a host processor
US11263151B2 (en) Dynamic translation lookaside buffer (TLB) invalidation using virtually tagged cache for load/store operations
US9311233B2 (en) Load-through fault mechanism

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151005

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151005

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20151005

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20151105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160108

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160408

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160609

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161003

R150 Certificate of patent or registration of utility model

Ref document number: 6019136

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees