(58)【調査した分野】(Int.Cl.,DB名)
前記エイリアスキャッシュヒット/ミス検証器が、前記キャッシュエントリの有効性を示すキャッシュエントリ有効性インジケータを受信するようにさらに構成される、請求項3に記載の仮想エイリアシングキャッシュヒット/ミス検出器。
前記VIVTキャッシュエントリ無効化器が、前記キャッシュエントリの有効性を示すキャッシュエントリ有効性インジケータを受信するようにさらに構成される、請求項1に記載の仮想エイリアシングキャッシュヒット/ミス検出器。
前記仮想エイリアシングキャッシュヒット/ミス検出器が、前記仮想エイリアシングキャッシュヒット/ミス検出器がその中に統合されるセットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤからなるグループから選択されたデバイス中に配設される、請求項1に記載の仮想エイリアシングキャッシュヒット/ミス検出器。
【発明を実施するための形態】
【0012】
ここで図面を参照して、本開示のいくつかの例示的な実施形態について説明する。「例示的な」という言葉は、「例、事例、または例示として機能すること」を意味するように本明細書で使用される。「例示的な」として本明細書で説明される任意の実施形態は、必ずしも他の実施形態よりも好ましいか、または有利であると解釈されるべきではない。
【0013】
発明を実施するための形態で開示する実施形態は、仮想タグ付きキャッシュにおいてエイリアスアドレスのキャッシュヒット/ミスを判定するための装置、ならびに関連システムおよび方法を含む。この点について、一実施形態では、仮想インデックス付き仮想タグ付きキャッシュ(VIVTキャッシュ)のための仮想エイリアシングキャッシュヒット/ミス検出器が提供される。仮想エイリアシングキャッシュヒット/ミス検出器は、トランスレーションルックアサイドバッファ(TLB)を備える。TLBは、第1の仮想アドレスと、第1の仮想アドレスに基づいたVIVTキャッシュへのインデックス付き読込みから生じるキャッシュエントリのタグから構成される第2の仮想アドレスとを、受信するように構成される。TLBは、第1の仮想アドレスから変換された第1の物理アドレスを生成するように、さらに構成される。TLBは、第2の仮想アドレスから変換された第2の物理アドレスを生成するように、さらに構成される。仮想エイリアシングキャッシュヒット/ミス検出器は、比較器をさらに備える。比較器は、第1の物理アドレスと第2の物理アドレスとを受信するように構成される。比較器は、第1の物理アドレスと第2の物理アドレスとの比較に基づいて、エイリアスキャッシュヒット/ミスインジケータの生成を実施するようにさらに構成される。
【0014】
このようにして、仮想エイリアシングキャッシュヒット/ミス検出器は、エイリアスアドレス指定(すなわち、シノニム)の存在下でも、VIVTキャッシュに対するキャッシュヒットおよびキャッシュミスを正しく生成する。エイリアスアドレス指定の存在下で、偽のキャッシュミスを生成することを回避することによって、仮想エイリアシングキャッシュヒット/ミス検出器は、偽のキャッシュミスを生成することに関連する性能ペナルティ、および/または偽のキャッシュミスを生成することに関連するデータの非一貫性の問題を回避することができる。
【0015】
仮想タグ付きキャッシュにおいてエイリアスアドレスのキャッシュヒット/ミスを判定するための実施形態について説明する前に、エイリアスアドレス指定の存在下で、仮想インデックス付き仮想タグ付きキャッシュにおいて遭遇する問題について、
図1に関して最初に説明する。
【0016】
この点について、
図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に対応するデータにアクセスするために使用され得る。
【0017】
図1におけるMMU10は、エイリアスアドレス(すなわち、シノニム)に関する問題に遭遇する。仮想エイリアスアドレスは、2つ以上の異なる仮想アドレス16が同じ物理アドレス30を指定するとき、作成される。仮想エイリアスアドレスにより、VIVTキャッシュ12は、仮想アドレス16に対応する物理アドレス30に記憶されたデータ24がVIVTキャッシュ12中に含まれているときでも、キャッシュミスを生成し得る。言い換えれば、VIVTキャッシュ12は、偽のミスを報告することがある。
【0018】
この点について、第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次キャッシュまたはメインメモリからのデータにアクセスしようと試みることになり、その両方がデータの古いコピーを有している。
【0019】
書込み動作では、この偽のミスの結果は、データの非一貫性である。VIVTキャッシュ12が偽のミスを生成するので、第1の仮想アドレス16に対応する(また、第2の仮想アドレス16と同じ物理アドレス30にも対応する)VIVTキャッシュ12中のキャッシュエントリ26は、書込み動作からの新しいデータで上書きされないことになる。書込み動作は、他のメモリ(たとえば、2次キャッシュおよび/またはメインメモリ中の物理アドレス30に対応するエントリ)に、新しいデータを記憶させることになる。しかしながら、第1の仮想アドレス16上で実行される後続の読取り動作は、対応する物理アドレス30にもはや記憶されていない不正確なデータ(古いデータ)を、VIVTキャッシュ12が返す結果となる。
【0020】
図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)の性能ペナルティおよびデータの非一貫性の問題を受けない。
【0021】
引き続き
図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に存在するデータを含んでいるからである。
【0022】
引き続き
図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によって生成されたキャッシュミスは、偽のキャッシュミスである。
【0023】
この点について、
図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の性能ペナルティおよびデータの非一貫性の問題を受けない。
【0024】
エイリアスキャッシュヒット/ミスインジケータ68は、VIVTキャッシュ34によって生成された非エイリアスキャッシュヒット/ミスインジケータ(
図1におけるVIVTキャッシュヒット/ミスインジケータ28など)の代わりに、MMU32によって外部的に与えられる。このことは、エイリアスキャッシュヒット/ミスインジケータ68が偽のキャッシュミスを生成しないので、有利である。したがって、
図2に示すように、非エイリアスキャッシュヒット/ミスインジケータ(
図1におけるVIVTキャッシュヒット/ミスインジケータ28など)はまた、VIVTキャッシュ34から外部的に与えられる必要がないことがある。ただし、いくつかの実施形態では、VIVTキャッシュ34はまた、非エイリアスキャッシュヒット/ミスインジケータを外部的に与えてもよい。
【0025】
図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の生成を実施するように構成される。
【0026】
この実施形態では、比較器58は、エイリアスキャッシュヒット/ミスインジケータ68を直接与えることによって、エイリアスキャッシュヒット/ミスインジケータ68の生成を実施するように構成される。言い換えれば、エイリアスキャッシュヒット/ミスインジケータ68は、VIVTキャッシュ34によって生成されたキャッシュミスがエイリアスキャッシュヒットであったか、エイリアスキャッシュミスであったかを示すために、追加の回路に与えられ得る。ただし、以下で
図3および
図4を参照して説明する他の実施形態では、比較器58は、エイリアスキャッシュヒット/ミスインジケータが暫定エイリアスキャッシュヒット/ミスインジケータを与えるように構成されることによって、エイリアスキャッシュヒットまたはエイリアスキャッシュミスの判定を実施し得る。暫定エイリアスキャッシュヒット/ミスインジケータは、エイリアスキャッシュヒットが生じたと判定され得るかどうかに関する追加の論理に与えられる。
【0027】
図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'は、エイリアスキャッシュミスを示すべきである。
【0028】
この点について、
図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中に設けられ得る。
【0029】
引き続き
図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'によって生成された非エイリアスキャッシュミスが真のキャッシュヒット(すなわち、エイリアスキャッシュヒット)であるか、真のキャッシュミス(すなわち、エイリアスキャッシュミス)であるかを判定することができない。
【0030】
この点について、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'は、ゼロまたは未定義であり得る。
【0031】
同様に、第2の仮想アドレス54を第2の物理アドレス66'に変換するために、一致するTLBエントリがTLB56'中に含まれている場合、TLB56'は、第2の物理アドレスヒット/ミスインジケータ84上で物理アドレスヒット指示を生成する。第2の仮想アドレス54を第2の物理アドレス66'に変換するために、一致するTLBエントリがTLB56'中に含まれていない場合、TLB56'は、第2の物理アドレスヒット/ミスインジケータ84上で物理アドレスミス指示を生成する。そのようなミスにおいて、第2の物理アドレス66'は、ゼロまたは未定義であり得る。
【0032】
物理アドレスミス指示が第1の物理アドレスヒット/ミスインジケータ82および/または第2の物理アドレスヒット/ミスインジケータ84上で生成される場合、第2の仮想アドレス54が第1の仮想アドレス50のエイリアスであるかどうかを判定することができない。このシナリオでは、第1の仮想アドレス50がインデックス付きキャッシュエントリ46'のタグ40に直接一致する(すなわち、非エイリアスキャッシュヒットがある)のでない限り、エイリアスキャッシュヒット/ミスインジケータ68'がキャッシュミスとして生成される。
【0033】
この点について、検証器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'としてエイリアスキャッシュミスを生成することができるようにする。
【0034】
図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中に設けられ得る。
【0035】
引き続き
図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を設ける。
【0036】
図3における無効化器96はまた、現在のインデックス付きキャッシュエントリ46'を不必要に無効化することを回避するために、追加の最適化を与える。現在のインデックス付きキャッシュエントリ46'がすでに無効とマークされている場合、そのキャッシュエントリ46'を無効化する必要はない。この点について、無効化器96は、現在のインデックス付きキャッシュエントリ46'の有効ビット72がすでに無効とマークされている場合、無効化器96が現在のインデックス付きキャッシュエントリ46'を無効化することを防止する、ANDベースの論理100を設ける。
【0037】
図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を必要としなくてもよい一実施形態を提供する。
【0038】
図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)であり得る。
【0039】
引き続き
図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''として与えられ得る。
【0040】
この点について、第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に与えられ得ることを、当業者は了解されよう。
【0041】
同様に、第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を与えることになる。
【0042】
第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などの)無効化器を必要としない。
【0043】
適切に変換された第1の物理アドレス64''と第2の物理アドレス66''とが保証されるので、検証器88'もまた、低減された論理を使用して設けられ得る。
図4では、検証器88'は、(
図3において与えられた実施形態とは対照的に)TLB56'における仮想-物理アドレス変換がミスする場合を扱う必要がない。この点について、
図4に示すように、第1および第2の物理アドレスヒット/ミスインジケータ82、84は、MMU32''中の検証器88'への入力として与えられなくてもよい。
【0044】
図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を受信することを必要とされなくなる。
【0045】
図3および
図4に示すように、検証器88、88'、および無効化器96は、ANDベースの論理から構成され得る。検証器88、88'、および/または無効化器96を設けるために、様々な論理ゲートもまた使用され得る(非限定的な例として、ANDゲート、ORゲート、NANDゲート、NORゲート、インバータ、および/または他のゲート)ことを、当業者は了解されよう。当業者はまた、検証器88、88'、および/または無効化器96を設けるために使用され得る他のハードウェアまたはソフトウェアをも了解されよう。さらに、具体的な実装形態に応じて、比較器58によって生成された暫定エイリアスキャッシュヒット/ミスインジケータ86、86'を検証するための検証器88、88'を設けるために、追加の入力、より少ない入力、または代替入力が使用され得る。
【0046】
仮想エイリアシングキャッシュヒット/ミス検出器36、36'、36''、および/または仮想エイリアシングキャッシュヒット/ミス検出器36、36'、36''を備えるMMU32、32'、32''、ならびに本明細書で開示する実施形態による関連システムおよび方法は、任意のプロセッサベースデバイスにおいて提供され、または任意のプロセッサベースデバイスに統合され得る。例として、限定されないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤが含まれる。
【0047】
この点について、
図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は異なるファブリックを構成する。
【0048】
他のマスタおよびスレーブデバイスが、システムバス144に接続され得る。
図5に示すように、これらのデバイスは、例として、システムメモリ146、1つまたは複数の入力デバイス148、1つまたは複数の出力デバイス150、1つまたは複数のネットワークインターフェースデバイス152、ならびに1つまたは複数のディスプレイコントローラ154を含み得る。入力デバイス148は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含み得る。出力デバイス150は、限定はしないが、オーディオ、ビデオ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含み得る。ネットワークインターフェースデバイス152は、ネットワーク156との間でデータの交換を可能にするように構成された任意のデバイスであり得る。ネットワーク156は、限定はしないが、有線ネットワークまたはワイヤレスネットワーク、プライベートネットワークまたは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク(WLAN)、およびインターネットを含む、任意のタイプのネットワークであり得る。ネットワークインターフェースデバイス152は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。キャッシュメモリ142は、1つまたは複数のMMU32、32'、32''を含み得る。
【0049】
CPU134はまた、システムバス144上でディスプレイコントローラ154にアクセスして、1つまたは複数のディスプレイ170に送られる情報を制御するようにも構成され得る。ディスプレイコントローラ154は、1つまたは複数のビデオプロセッサ168を介して表示されるべき情報を、ディスプレイ170に送り、ビデオプロセッサ168は、表示されるべき情報を、ディスプレイ170に適切なフォーマットとなるように処理する。ディスプレイ170は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、プラズマディスプレイ、2次元(2-D)ディスプレイ、3次元(3-D)ディスプレイ、タッチスクリーンディスプレイなどを含む、任意のタイプのディスプレイを含み得る。
【0050】
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''を使用し得る。
【0051】
本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子的なハードウェアとして、メモリもしくは別のコンピュータ可読媒体に記憶され、プロセッサもしくは他の処理デバイスによって実行される命令として、またはこれら両方の組合せとして実装され得ることを、当業者はさらに了解されよう。本明細書で説明するメモリ、メモリバンク、メモリサブバンク、メモリアクセスインターフェース(MAI)、メモリコントローラ、バス、マスタデバイス、およびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップ中で採用され得る。本明細書で開示するメモリは、任意のタイプおよびサイズのメモリであってもよく、所望の任意のタイプの情報を記憶するように構成され得る。この互換性を明確に示すために、上記では、様々な例示的構成要素、ブロック、モジュール、回路、およびステップは全般的に、それらの機能に関して説明されている。そのような機能がどのように実装されるかは、特定の適用例、設計選択、および/または全体的なシステムに課された設計制約によって決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
【0052】
本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せで実装または実行され得る。プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。
【0053】
本明細書で開示する実施形態は、ハードウェアで具現されてもよく、ハードウェアに記憶される命令で具現されてもよく、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または、当技術分野で知られている任意の他の形態のコンピュータ可読媒体に、存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体はASIC中に存在し得る。ASICは遠隔局に存在し得る。代替として、プロセッサおよび記憶媒体は、遠隔局、基地局、またはサーバ中に、個別の構成要素として存在し得る。
【0054】
本明細書の例示的な実施形態のいずれかで説明した動作ステップは、例および説明を提供するために説明したものであることにも、留意されたい。説明した動作は、例示した順序以外の多数の異なる順序で実行され得る。さらに、単一の動作ステップで説明した動作は、実際には、いくつかの異なるステップで実行され得る。加えて、例示的な実施形態において論じた1つまたは複数の動作ステップは、組み合わされてもよい。フローチャート図において例示した動作ステップは、当業者に容易に明らかとなるような多数の異なる修正を受けてもよいことを、理解されたい。情報および信号は、多種多様な技術および技法のいずれかを使用して表され得ることも、当業者には理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【0055】
本開示の上記の説明は、当業者が本開示を作成または使用できるようにするために提供される。本開示への様々な修正が当業者には容易に明らかとなり、本明細書で定義した一般原理は、本開示の趣旨および範囲を逸脱することなく他の変形形態に適用され得る。したがって、本開示は、本明細書で説明した例および設計に限定されることを意図するものではなく、本明細書で開示する原理および新規の特徴に一致する最も広い範囲を与えられるべきである。