JP2009534755A - 物理タグ付け動作を用いる仮想タグ付き命令キャッシュ - Google Patents

物理タグ付け動作を用いる仮想タグ付き命令キャッシュ Download PDF

Info

Publication number
JP2009534755A
JP2009534755A JP2009506725A JP2009506725A JP2009534755A JP 2009534755 A JP2009534755 A JP 2009534755A JP 2009506725 A JP2009506725 A JP 2009506725A JP 2009506725 A JP2009506725 A JP 2009506725A JP 2009534755 A JP2009534755 A JP 2009534755A
Authority
JP
Japan
Prior art keywords
cache
instruction cache
virtual
instruction
invalidation
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.)
Granted
Application number
JP2009506725A
Other languages
English (en)
Other versions
JP5108002B2 (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=38582274&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP2009534755(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2009534755A publication Critical patent/JP2009534755A/ja
Application granted granted Critical
Publication of JP5108002B2 publication Critical patent/JP5108002B2/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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

Landscapes

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

Abstract

ソフトウェアプログラムの観点から、あたかも物理タグ付き命令キャッシュのように動作する、仮想タグ付き命令キャッシュを有する命令キャッシュシステムが開示される。この命令キャッシュシステムはまた、アドレス変換無効化命令に応答するアドレス変換のための手段、および制御論理回路を含む。この制御論理回路は、アドレス変換無効化命令に応答して、仮想タグ付き命令キャッシュの中のエントリを無効化するように構成されている。

Description

関連出願
本出願は、それらの全体において参照により組み込まれている、2006年4月19日に出願された米国仮出願第60/793,016号、および2006年4月19日に出願された米国仮出願第60/793,015号の利益を主張する。
分野
本開示は一般に処理システムに関し、より詳細には、仮想タグ付き命令キャッシュシステム(virtually tagged instruction cache systems)に関する。
背景
一般的なプロセッサシステムは、1ページのデータまたは命令のアドレスを、その仮想ストレージアドレス(its virtual storage address)からその実際の物理ストレージアドレス(its real, physical storage address)に変更するために、プロセッサパイプライン(processor pipeline)でのアドレス変換(address translation)の概念を利用する。アドレス変換の手段の1つは、従来どおりに多くのエントリ(entries)を記憶する変換ルックアサイドバッファ(translation lookaside buffer)(TLB)を利用し、この場合、各エントリはプロセス識別子(process identifier)(PID)とも呼ばれるアプリケーション空間識別子(application space identifier)(ASID)、仮想アドレスタグ(virtual address tag)(VT)および物理ページ番号(physical page number)(PN)を含む。したがって、変換ルックアサイドバッファは仮想アドレス(virtual address)と物理アドレス(physical address)とのマッピング(mapping)を含む。最も簡単な形態では、プロセッサパイプラインは命令の仮想アドレスを入力として受信し、仮想アドレスの部分をTLBの中のエントリと比較して合致するエントリを見つけ出し、その仮想アドレスの部分を合致するエントリに関連した物理ページ番号と置き換えて物理アドレスを形成する。所与の物理アドレスの仮想アドレスへのマッピングは、一般に仮想および物理アドレス空間の範囲をカバーし、この範囲は「ページ(page)」と呼ばれ、ページのサイズは一般に、複数のキャッシュラインすべてが仮想または物理アドレス空間の同じページに関連することができるように、命令キャッシュの中のキャッシュラインのサイズよりも大きい。
一般的なプロセッサシステムはまた、より遅いオフチップメモリから命令を取り出すこと(fetching)から生じる遅延を最小化するために、最近使用された命令を高速のオンチップメモリに記憶する1つまたは複数の命令キャッシュを含む。命令キャッシュは、エントリを効率的に探索するためにインデックス付けされてもよい。命令キャッシュと関連して使用されるような用語「インデックス付け(indexed)」は、セットアソシエイティブ命令キャッシュ(set-associative instruction cache)の中のセット(set)か、またはダイレクトマップ命令キャッシュ(directly mapped instruction cache)の中の行(row)かを指定する(specify)ために利用される、仮想アドレスまたは物理アドレスのいずれかにおけるビットのセット(a set of bits)のことを意味する。仮想アドレス内でビットによってインデックス付けされた命令キャッシュ(instruction cache indexed by bits within a virtual address)は、仮想インデックス付きキャッシュ(virtually indexed cache)として知られている。物理アドレス内でビットによってインデックス付けされた命令キャッシュ(instruction cache indexed by bits within a physical address)は、物理インデックス付きキャッシュ(physically indexed cache)として知られている。
命令キャッシュの中のエントリは、物理アドレスの一部か、または仮想アドレスの一部のいずれかと比較されるキーを用いてタグ付けされ(tagged with a key)てもよい。物理アドレスの一部でタグ付けされた命令キャッシュ(instruction cache tagged with a portion of a physical address)は、物理タグ付き命令キャッシュ(physically tagged instruction cache)と呼ばれる。仮想アドレスの一部でタグ付けされた命令キャッシュ(instruction cache tagged with a portion of a virtual address)は、仮想タグ付き命令キャッシュ(virtually tagged instruction cache)と呼ばれる。プロセッサ設計者は、どのようにして命令キャッシュがインデックス付けおよびタグ付けされるのかを選択する。従来の命令キャッシュは、仮想インデックス付き仮想タグ付き(virtually indexed virtually tagged)(VIVT)、仮想インデックス付き物理タグ付き(virtually indexed physically tagged)(VIPT)、または物理インデックス付き物理タグ付き(physically indexed physically tagged)(PIPT)のいずれかであってもよい。アドレス変換を通じて、仮想アドレスは、物理タグ付き命令キャッシュの中のエントリを探索するために、または命令キャッシュミスの場合には実メモリにアクセスするために利用されてもよい物理アドレスに変換される。
仮想アドレスタグに加えて、従来の仮想タグ付き命令キャッシュは一般にASIDまたはPIDタグを含む。このタグによって、プロセッサシステムは、アドレスエントリがアクティブのソフトウェアプロセスの間有効であるかどうかを識別することができる。例えば、プロセッサシステムがASID「x」を有するソフトウェアプロセスに関連した命令を実行する場合、成功のキャッシュの合致は、ASIDタグと仮想アドレス命令タグとの両方を合致させることを必要とする。アクティブのASIDのスワッピング、すなわち所与のASID値を使用する1つのプロセスを、その同じASID値を使用する新たなプロセスと置き換えることなどの様々なシナリオのために、仮想タグ付き命令キャッシュは古くなったか、またはもはや有効ではない1つまたは複数のエントリを有する場合がある。キャッシュヒットは、メモリから命令を取り出すことからプロセッサ時間を節約するので、プロセッサシステムの設計者は、キャッシュの内容が有効な、古くなっていない命令を反映しているキャッシュコヒーレンシを求める。キャッシュコヒーレンシを維持するために、キャッシュの中のエントリは一般に、ソフトウェアアプリケーションによって出される一般命令キャッシュ無効化命令に応答して無効にされる。ソフトウェアアプリケーションによって必要とされる命令キャッシュの管理量は、命令キャッシュが仮想タグ付きなのか、または物理タグ付きなのかによって決まる。1つまたは複数の仮想アドレスは所与の物理アドレスにマップする場合があるので、従来の仮想タグ付き命令キャッシュにはエイリアスおよびシノニムの問題が存在する場合がある。
エイリアス問題は、異なる仮想アドレス/ASIDの組み合わせを含む2つ以上のIキャッシュのエントリが同じ物理アドレスにマップする場合に生じる。これらの異なる組み合わせは、以下の3つの理由のうちの任意のものによって生じる場合がある。第1に、2つ以上のIキャッシュエントリの仮想アドレスは、事実上異なっていても、同じソフトウェアプロセスの部分が同じASIDフィールド値を有する場合がある。第2に、2つ以上のIキャッシュエントリの仮想アドレスは、同じものであっても異なるソフトウェアプロセスに関連しており、したがって異なるASIDフィールド値に関連している場合がある。第3に、2つ以上のIキャッシュエントリの仮想アドレスはすべて異なり、異なるソフトウェアプロセスに関連しおり、したがって異なるASID値に関連している場合がある。これらの3つの場合のうちの任意のもので、異なる組み合わせは同じ物理アドレスにマップすることができる。このエイリアス問題の結果として、従来の仮想タグ付き命令キャッシュは、物理タグ付き命令キャッシュによって必要とされるよりも多くのシナリオのせいで、Iキャッシュ無効化命令を出すためにソフトウェアアプリケーションに負担をかける。例えば、仮想タグ付き命令キャッシュに書き込まれたソフトウェアアプリケーションは、それ自体無効になったか、変更されている物理アドレスに関連している場合がある命令キャッシュの中で各仮想アドレスを無効化するために、命令キャッシュ無効化命令を出さなければならない。
シノニム問題は、Iキャッシュの異なる仮想インデックスに配置されているが、同じ物理アドレスに関連した2つ以上のIキャッシュエントリを参照する。シノニム問題は、それらのIキャッシュが仮想タグ付きか物理タグ付きかには関わらず、従来の仮想インデックス付きIキャッシュの中で生じる場合がある。
仮想タグ付き命令キャッシュはまた、物理タグ付き命令キャッシュに関して、Iキャッシュエントリを無効化するために、ソフトウェアに別のさらなる負担をかける。特に、所与のASIDと仮想アドレス空間のページとの組み合わせのためのマッピングが、1つの物理アドレスから別のものへ変更される場合、Iキャッシュが新しいマッピングに関連した新しい物理メモリ位置の内容ではなく、古いマッピングに関連した古い物理メモリ位置の内容をキャッシュしている場合があるので、そのASIDと仮想アドレス空間のページとの組み合わせに関連した仮想タグ付きIキャッシュの中のすべてのIキャッシュエントリは、もはや有効ではない。このことは、たとえ根底にある古い物理メモリ位置および新しい物理メモリ位置の実際の内容が変わっていない場合であっても、当てはまる。したがって、仮想タグ付き命令キャッシュを管理するために書き込まれるソフトウェアは、マッピングが変更されたASIDと仮想アドレス空間のページとの組み合わせに関連している可能性のあるすべての命令キャッシュエントリを無効化するために、命令キャッシュ無効オペレーションを実行しなければならない。
仮想タグ付き命令キャッシュを備えたプロセッサでは、アドレス変換は、仮想タグ付き命令キャッシュからの探索命令と並行してパイプラインで実行されてもよい。したがってこの並行性は、仮想タグ付き命令キャッシュが利用される場合に、有利な電力、周波数および命令スループットを提供する。したがって、エントリの管理に関して、従来の仮想タグ付き命令キャッシュによってソフトウェアアプリケーションに課されるさらなる負担を無くし、ソフトウェアアプリケーションにさらなる要件を課すことなく、従来の仮想タグ付き命令キャッシュの利点を達成する命令キャッシュシステムおよび方法が求められている。
発明の概要
本開示の1つの態様は、仮想タグ付き命令キャッシュ(virtually tagged instruction cache)と物理タグ付き命令キャッシュ(physically tagged instruction cache)との両方の利点を有する命令キャッシュシステムを認識する。本発明のこの態様は、ソフトウェアプログラムの観点から物理タグ付き命令キャッシュ(physically tagged instruction cache)として動作する、仮想タグ付き命令キャッシュ(virtually tagged instruction cache)を利用する。
本開示の別の態様は、仮想アドレスまたはその部分が、アドレス変換手段(address translation means)と仮想タグ付き命令キャッシュとの両方の中でタグ(tags)として利用されるということを認識する。この認識によって、アドレス変換手段に向けられる無効化命令(invalidate instructions)はさらに、仮想タグ付き命令キャッシュの中のエントリを無効化するために利用されることができる。
本開示の別の態様において、命令キャッシュシステムは、仮想タグ付き命令キャッシュと、アドレス変換のための手段と、制御論理回路とを含む。アドレス変換のための手段は、アドレス変換無効化命令に応答する(responsive)。制御論理回路は、アドレス変換無効化命令に応答して(in responsive to)仮想タグ付き命令キャッシュの中のエントリを無効化するように構成されている。
さらに別の態様においては、ソフトウェアプログラムの観点から仮想タグ付き命令キャッシュがあたかも物理タグ付き命令キャッシュのように動作するための方法(method for a virtually tagged instruction cache to operate as if it were a physically tagged instruction cache from a software program point of view is disclosed)が開示される。この方法は、アドレス変換無効化命令を受信することと、アドレス変換無効化命令に応答して、仮想タグ付き命令キャッシュの中のエントリを無効化することとを含む。
さらなる態様においては、仮想タグ付き命令キャッシュにあたかも物理タグ付き命令のように動作するように指示するための制御論理回路が、開示される。制御論理回路は、アドレス変換無効化命令を受信するための第1入力と、アドレス変換無効化命令に応答して、仮想タグ付き命令キャッシュの中のエントリを無効化する制御信号を生成するための手段とを含む。
本発明の様々な実施形態が例として示され、説明される以下の詳細な説明から、本発明の別の実施形態が当業者には容易に明らかになるであろうということが理解される。認識されるように、本発明は、すべて本発明から逸脱することなく、他の異なる実施形態が可能であり、また、そのいくつかの細部は様々な他の点で修正が可能である。したがって、図面および詳細な説明は、限定的なものとしてではなく、本質的に例としてみなされるべきである。
詳細な説明
添付の図面とともに以下で言及される詳細な説明は、本発明の様々な実施形態の説明として意図されてはおらず、また、本発明が実施されることができる唯一の実施形態を表すようには意図されてはいない。この詳細な説明は、本発明の完全な理解を提供する目的のために具体的な細目を含む。しかしながら、本発明がこれらの具体的な細目無しに実施されることができることは、当業者には明らかであろう。いくつかの例では、よく知られている構造およびコンポーネントは、本発明の概念を分かりにくくすることを避けるために、ブロック図の形態で示されている。
図1は、プロセッサ100の機能ブロック図を示す。プロセッサ100は、制御論理回路110にしたがって、命令実行パイプライン120の中で命令を実行する。プロセッサ100は、例えばマイクロプロセッサ、デジタル信号プロセッサ(DSP)、ブリッジ、プログラム可能な論理回路、分離ゲートもしくはトランジスタ論理回路、または任意のその他の情報処理コンポーネントなどを含む任意の型のパイプライン化されたプロセッサコンポーネントであってよい。一部の実施形態で、パイプライン120は複数の並行パイプラインを備えたスーパースカラ設計であってよい。パイプライン120はパイプステージの中で組織された様々なレジスタまたはラッチ160A〜D、および1つまたは複数の実行装置180を含む。図1には5つのパイプステージが示されているが、当業者であれば、示されているものよりも多いか、または少ないパイプステージがプロセッサ100に含まれてもよいということが理解されよう。汎用レジスタ(GPR)ファイル130は、メモリ階層の最上部を備えたレジスタを提供する。プロセッサ100は、仮想タグ付き命令キャッシュ(Iキャッシュ)122、変換ルックアサイドバッファ(TLB)128および制御回路110を含む命令キャッシュシステム127を含む。
パイプライン120は、Iキャッシュ122に仮想アドレスを与えることによって、Iキャッシュ122から命令を取り出す。メモリアドレスの変換は、TLB128によって管理される。Iキャッシュ122に仮想アドレスを与えることと並行して、パイプライン120は、仮想アドレスがIキャッシュ122の中で見つからない場合に(キャッシュミス)、メモリインタフェース30を通じてメモリ32にアクセスするために利用される対応する物理アドレスを判定するために、TLB128に仮想命令アドレスを与える。制御論理回路110はパイプライン120から無効化命令を受信し、Iキャッシュ122およびTLB128の中の1つまたは複数のエントリを無効化することを管理する。命令キャッシュシステム127の構造およびオペレーションは、図2の説明とともに、より完全に説明される。
データは、変換ルックアサイドバッファ(TLB)128によって管理されるメモリのアドレス変換および許可を用いて、データキャッシュ(Dキャッシュ)126からアクセスされる。図1は、TLB128を一体型TLBとして示しているが、様々な実施形態でTLB128は、一方がDキャッシュ126へのアクセスを変換することに専用され、他方がIキャッシュ122へのアクセスを変換することに専用される複数のTLBに分離されてもよい。Iキャッシュ122および/またはDキャッシュ126のミスは、メモリインタフェース140の制御の下で、主(オフチップ)メモリ150へのアクセスを生じさせる。そのような主メモリへのアクセスは、TLB128から取り出された物理アドレスを利用する。
プロセッサ100は入力/出力(I/O)インタフェース134を含んでもよく、様々な周辺装置136および138へのアクセスを制御する。当業者であれば、プロセッサ100の多数の変形形態が可能であることが理解されよう。例えば、プロセッサ100はIキャッシュ122およびDキャッシュ126のいずれかのためか、またはそれらの両方のための第2レベル(L2)キャッシュを含んでもよい。さらに、プロセッサ100に示されている機能ブロックのうちの1つまたは複数は、具体的な実施形態から省略されてもよい。
図2は、図1の命令キャッシュシステム127のより詳細な図である。この例示の実施形態では、TLB128は210A〜210Cの3つの列を有するように構成されている。列210Aは、ソフトウェアプロセスに関連したアプリケーション空間識別子(ASID)を含む。レジスタ215は、専用レジスタか、またはGPRファイル130の中に記憶されてもよい現在実行中のソフトウェアプロセスのASIDを含む。列210Bは、TLB仮想タグを含む。TLB仮想タグは、仮想アドレスの一部である。例えば仮想アドレス205は、プログラムカウンタ(PC)レジスタなどのレジスタの中に記憶された32ビットのアドレスである。この例では、ビット位置31―12は、TLB仮想タグを定義している仮想アドレスの部分を定義する。
列210Cは、ASID/TLB仮想タグの組み合わせに対応する20ビットの物理ページ番号(PPN)を含む。物理ページ番号は、(実行中のソフトウェアプロセスに関連した)アクティブのASIDと仮想アドレス205からのTLB仮想タグとが、TLB128の行の中に記憶されたASIDタグとTLB仮想タグとの組み合わせに合致する場合に、TLB128から返送される。返送されたPPNは、対応する物理アドレスを定義するためにページオフセットと結び付けられる。特に結合の間に、返送されたPPNはビット位置31−12に配置され、一方で仮想アドレスのページオフセット部分はビット位置11―0を占め続ける。
この例示的な実施形態で、仮想タグ付けIキャッシュ122は、1024「1ラインセット」および32バイトラインを備えた32KBのダイレクトマップキャッシュである。この実施形態では、仮想タグ付けIキャッシュ122は、220A〜220Dの4つの列を有するように構成されている。列220Aは、ソフトウェアプロセスに関連したアプリケーション空間識別子(ASID)を含む。列220Bは、Iキャッシュ(I$)仮想タグを含む。列220Cは、特定のIキャッシュ仮想タグとASIDとの組み合わせ(particular I-cache virtual tag and ASID combination)に関連した32バイトの命令ラインを含む。任意で列220Dは、その後に続くエントリの無効化の範囲を制限するために、Iキャッシュの中の関連したエントリがどのような状況の下で記憶されたのかを示すフラグを含む。
仮想アドレス205は、そのビット位置のための2つの重畳手段を表して示されている。仮想アドレス205が仮想タグ付けIキャッシュ122によって利用される場合、ビット位置31−15はIキャッシュ(I$)仮想タグを定義し、ビット位置14−5は、Iキャッシュ122の中の1024「1ラインセット」から1つのラインまたはセットを選択するためにインデックス207を定義し、ビット位置4−0は命令ライン列220Cの中のオフセットを定義する。ダイレクトマップIキャッシュ122の中の行もまた、「1ラインセット」と呼ばれる。例えば、8つの32ビット命令が単一の命令ラインの中に存在してもよいが、簡単にするために、I$仮想タグ当たり1つの命令が示されている。本開示によって、その他の命令のサイズが考えられるということが認識されよう。仮想アドレス205がアドレス変換のためにTLB128によって利用される場合、ビット位置31−12はTLB仮想タグを定義し、ビット位置11−0はページオフセットを定義する。
指定された仮想アドレス(specified virtual address)を求めるIキャッシュ探索(I-cache lookup)の間、インデックス207は仮想アドレスから、Iキャッシュ122の中の対応するラインを選択する。次いで、アクティブのASID215および指定された仮想アドレスのビット位置31−15は、選択されたキャッシュラインの中に記憶されたASIDタグおよびI$仮想タグと比較される。
同様に、指定された仮想アドレスのためのTLB変換の間、アクティブのASID215および指定された仮想アドレスのビット位置31−12は、合致、すなわち対応するPPNを見つけ出すために、TLB128の中に記憶されたASIDタグおよびTLB仮想タグと比較される。
ここでは示されていないが、ある実施形態(certain embodiments)においては、TLB仮想タグを備える仮想アドレスの部分は、Iキャッシュ仮想タグを備える仮想アドレスの同じ部分であってもよい。仮想タグ付けIキャッシュ122はダイレクトマップキャッシュとして示されているが、Iキャッシュ122はまた、複数ラインセットの形態をとるエントリのグループにアクセスするために、セット関連キャッシュとして具体化されてもよいということが、当業者には理解されよう。
TLB128に戻ると、エイリアス関係と区別関係との両方が示されている。エイリアス関係は、同じ物理ページ番号(PPN)がTLB128の中の2つ以上のエントリに配置される場合に生じる。例えば、エントリ211と213とは、両方ともPPN0x80000を参照する。この例では、エントリ211と213とは同じTLB仮想タグを有するが、独自のASIDタグ/TLB仮想タグの組み合わせを作るために異なるソフトウェアプロセスに関連している。エントリ212と214もまた、それらは両方ともPPN0x90000を参照するので、お互いのエイリアスである。お互いに関して、エントリ212と214とは、独自のASID/TLB仮想タグの組み合わせを定義するために、独自のTLB仮想タグと独自のASIDタグとを有する。区別関係は、同じ仮想タグが2つ以上の異なる物理ページ番号にマップする場合に生じる。エントリ211と212とは、同じTLB仮想タグ(TLBtag)がそれぞれ0x80000と0x90000との2つの異なる物理ページ番号にマップするので、区別関係を示している。
TLB仮想タグおよびI$仮想タグは、仮想アドレスの中のビット位置(それらのうちの一部は共通のビット位置である)から構成されていることを認識し、TLB128の中のエントリは、Iキャッシュ122の中のエントリに関連関連付けられている。その結果、名前を付けることを目的として、特定のI$仮想タグ(particular I$ virtual tag)(例えばI$tagなど)を指す場合の下付き文字の使用は、特定のI$仮想タグの値が、同じ下付き文字を有するTLB仮想タグ(例えばTLBtagなど)の値と相関するということを示す。図2の例示的な実施形態では、TLB仮想タグはI$仮想タグよりも多くのビットを含む。その結果、1つのTLB仮想タグは、1つまたは複数のI$仮想タグに対応することができる。したがって、物理ページ番号を有する1つのTLBエントリは、1つまたは複数のIキャッシュエントリに対応することができ、Iキャッシュ122の中の1つまたは複数の命令もまた、対応するTLBエントリの物理ページ番号の中に物理的に配置されることができるということを意味する。簡単にするために、特定のTLBエントリに関連したすべてのIキャッシュエントリが示されているわけではないということに留意されたい。TLBエントリとIキャッシュエントリとの間の上述の多くの関係に対して1つを考えると、所与のIキャッシュ行が所与のTLB行の中の同じASIDタグおよび仮想アドレスタグ値に関連している場合、所与のIキャッシュ行の中の1つまたは複数の命令はさらに、所与のTLB行に関連した仮想アドレス空間のページに対応している物理アドレス空間のページ内に配置されてもよい。
時間がたつにつれて、TLB128とIキャッシュ122との両方は古くなる場合がある。例えばASIDが、その後に続く関連のないソフトウェアプログラムによって再使用され、その後に続くプログラムの仮想から物理へのマッピングが以前のプログラムのものと異なる場合、再使用されるASIDを含むTLBとIキャッシュとの両方に含まれるエントリは、それらが以前のソフトウェアプログラムに関連した物理アドレスにマップされることから、もはや有効ではない。TLBとキャッシュとのコヒーレンシを維持するために、制御論理回路110が利用されてTLB128とIキャッシュ122との両方の中の古いエントリを管理する。一般に、物理タグ付きIキャッシュにはエイリアス問題が存在しないということ、および仮想から物理へのアドレスマッピングの単なる変更は、物理タグ付きIキャッシュの中でのIキャッシュの無効化を必要としないということを含む様々な理由のために、Iキャッシュの中の古いエントリを管理することに関して、物理タグ付きIキャッシュのために書き込まれるソフトウェアプログラムは、仮想タグ付きIキャッシュのために書き込まれるものよりも単純であることが可能である。しかしながら、所与のプロセスIDの所与の仮想アドレスのマッピングを1つの物理アドレスから別のものへ変更する場合、両方の物理タグ付きIキャッシュのために書き込まれるソフトウェアプログラムと仮想タグ付きIキャッシュのために書き込まれるものとは、明示TLB無効化命令(explicit TLB invalidate instructions)を含まなければならない。
Iキャッシュのエントリが仮想タグ付き命令キャッシュを用いて無効化されなければならない2つの主な種類のシナリオが存在する。第1の種類のシナリオには、例えば仮想アドレスが異なる物理アドレスにマップされるアドレスマッピングの変更が関与する。従来の仮想タグ付きIキャッシュ実装では、Iキャッシュ無効化命令は、この種類のシナリオの下でIキャッシュを無効化するために利用される。さらに第1の種類のシナリオでは、TLB無効化命令は、従来の仮想タグ付きIキャッシュと従来の物理タグ付きIキャッシュとの両方の実装の中でTLBを無効化するために利用される。第2の種類のシナリオには、物理メモリの内容が変更される状況が関与する。第2の種類のシナリオでは、Iキャッシュ無効化命令は、従来の仮想タグ付きIキャッシュと従来の物理タグ付きIキャッシュとの両方の実装の中でIキャッシュを無効化するために利用される。しかしながら従来の物理タグ付きIキャッシュ実装では、Iキャッシュ無効化命令は、従来の仮想タグ付きIキャッシュ実装の中で、その物理アドレスに関連すると思われるすべての可能な仮想アドレスとは対照的に、無効化するためには変更されたメモリの物理アドレスを識別するだけでよい。
制御論理回路110は、従来どおりに、仮想タグ付きIキャッシュのために、明示Iキャッシュ無効化を呼び出すためのソフトウェアプログラムを必要とする第1の種類のシナリオが、物理タグ付きIキャッシュのためにも、TLB無効化を呼び出すためのソフトウェアプログラムを同様に必要とするということを認識するように構成されている。例えば1つのシナリオは、ASID/TLB仮想タグの組み合わせが新たな物理タグページ番号にマップされる状況を含む。このシナリオでは、制御論理回路110は明示TLB無効化命令に応答して、ASID/TLB仮想タグの組み合わせを伴うTLB128の中のエントリを無効にし、またASID/Iキャッシュ仮想タグの組み合わせを伴う仮想タグ付きIキャッシュ122の中のエントリも無効化する。ある実施形態においては、この明示的TLB無効化命令は、指定されたASID/TLB仮想タグの組み合わせとは関係なく、Iキャッシュ122の中のすべてのエントリのフラッシュ無効(flash invalidation)を生じさせる。
指定された物理アドレスの内容に対して行われる修正について述べている第2の種類のシナリオに関して、ソフトウェアプログラムは、Iキャッシュ122が更新されるように明示Iキャッシュ無効化命令を出す。明示Iキャッシュ無効化命令の内容は、修正された物理アドレスに関連した仮想アドレスか、または修正された物理アドレスを指定しても、指定しなくてもよい。
1つの実施形態では、制御論理回路110はこの明示Iキャッシュ無効化命令に応答して、仮想タグ付けIキャッシュ122の中のすべてのエントリをフラッシュ無効化するように構成されている。この実施形態では、所与の物理アドレス、または代替として所与の物理アドレスに関連した仮想アドレスは、明示Iキャッシュ無効化命令の中で指定されることが可能である。しかしながら、すべてのIキャッシュエントリがフラッシュ無効化されることから、明示Iキャッシュ無効化命令の指定された仮想または物理アドレスは単に無視される。
代替の実施形態においては、制御論理回路110は明示Iキャッシュ無効化命令に応答して、仮想タグ付きIキャッシュ122の中のエントリを選択的に無効化するように構成されている。一般にIキャッシュエントリは物理アドレスに対応する仮想タグを有することから、指定された物理アドレスに対応する可能性のあるIキャッシュエントリは無効化されなければならない。物理アドレスの内容に対する変更の結果として、対応する仮想タグ付きIキャッシュエントリが無効化されなければならない複数の仮想アドレスの識別の例として、TLB128の行212および214のエントリを参照する。これらのエントリはエイリアスエントリであり、同じ物理ページ番号0x90000にマップされる。
同様に、Iキャッシュエントリ225および224は、上述の仮想アドレス205のビット位置の二重重畳手段によって示されているように、I$仮想タグ(I$tagおよびI$tag)の値がそれぞれTLB仮想タグ(TLBtagおよびTLBtag)の値に関連していることから、同じく物理ページ番号の最初の17ビットによって定義される物理アドレスで見つけ出される命令を含む。その結果、例えば物理アドレス0x9000_0000の内容が変わる場合、エントリ225および224は、その命令が同じく物理アドレス0x9000_0000で見つけ出される、示されていない任意のその他のエントリとともに、制御論理回路110によって選択的に無効化される。より詳細には、仮想タグ付きIキャッシュ122の中のエントリを選択的に無効化するこの実施形態では、制御論理回路110は、選択されたIキャッシュセットの中のすべてのエントリなど、指定された物理アドレスが存在する可能性のある特定のIキャッシュ仮想インデックスに関連したすべてのエントリを無効化するように構成されている。
図3は、ダイレクトマップIキャッシュの中で物理アドレスに関連している可能性のある仮想タグ付きIキャッシュエントリのセットの選択的無効化を示すブロック図である。仮想アドレス205の中で示されているように、ビット位置14−12または参照番号305は、仮想アドレス205が仮想タグ付きIキャッシュ122によって利用される場合、インデックスビットの一部であり、Iキャッシュインデックスビットとも呼ばれる。ビット位置14−12はまた、TLB仮想タグの一部でもある。しかしながら、ビット位置14−12はアドレス変換の間に変換されたビットであることから、これらの同じビットは仮想アドレス205に対応する物理ページ番号の一部である。ビット位置14−12はI$仮想タグによって利用されず、物理ページ番号は無効化のために指定されてもよいので、ビット14−12の各組み合わせは、物理ページ番号が対応する関連したIキャッシュエントリが配置されている可能性のある仮想タグ付きIキャッシュ122の内部で、しきい値0、128、256、…896を定義する。残りのインデックスビットであるビット11−5または参照番号315はアドレス変換の間に変換されず、したがって仮想アドレス205とその変換された物理アドレスとの間で共通である。その結果ビット11−5は、場合によっては物理ページに関連した対応するIキャッシュエントリを配置するために、定義されたしきい値からオフセットを指定する。参照番号305は3つのビットを含んでいることから、制御論理回路110は無効化されている物理アドレスに応答して、ビット14−12の各組み合わせを物理アドレスのビット11−5と結び付けることによって、仮想タグ付きIキャッシュ122の中の8つのエントリを同時に無効化するように構成されてもよい。
一般に、ビット11−0はアドレス変換によって変換されないので、それらは指定された物理アドレスと、その物理アドレスに変換することが可能な任意の仮想アドレスとの間で異なることはない。換言すれば、指定された物理アドレスにマップされてもよいすべての仮想アドレスは、ビット11−0の中の物理アドレスに合致しなければならない。したがって、指定された物理アドレスに対応するエントリを含む可能性のあるIキャッシュセットを選択するために、Iキャッシュインデックスの一部として使用される位置11−0にあるものからの任意のビットは、物理アドレスからの対応するビットと同じ値を有していなければならない。例えば、場合によっては指定された物理アドレスに対応するエントリを含むエントリのセットを識別しながら、物理アドレスからの対応するビットとは異なる値を有することができるのは、位置14−12にあるIキャッシュインデックスだけである。
変更される物理アドレスの内容のために、Iキャッシュから無効化されるべき物理アドレスを識別する明示Iキャッシュ無効化命令に応答して、制御論理回路110は、ビット14−12によって定義されたしきい値からオフセットを判定して、Iキャッシュの中の適格のエントリの変換されたセットの中のすべてのエントリを無効化するためにビット位置11−5を利用し、IキャッシュがIキャッシュ全体を基準にするのではなく、セットを基準にして無効化されることを可能にする。無効化されるべき物理アドレスを指定する単一の命令を用いて、または代替として無効な物理アドレスに関連した仮想アドレスを用いて、この実施形態は、物理タグ付きIキャッシュモデルに書き込まれるソフトウェアが、仮想タグ付きIキャッシュ上で自動的にIキャッシュの無効オペレーションを呼び出し、指定された物理アドレスに対するすべての可能な仮想アドレスエイリアスがキャッシュから除去されるのを確実にすることを可能にする。説明されたように、前述のような除去はライン、セット、またはキャッシュ全体を基準としてもよい。この方法で、仮想タグ付きIキャッシュは、物理タグ付きIキャッシュモデルに書き込まれたソフトウェア上の任意のさらなる負担を伴わずに、適切に管理される。
制御論理回路110による仮想タグ付けIキャッシュ122への同時インデックスの数は、仮想タグ付けIキャッシュのセットの結合性によって決まる。図4は、双方向セット結合Iキャッシュ422の中の物理アドレスに関連している可能性のある仮想タグ付きIキャッシュエントリのセットの選択的無効化を示すブロック図である。その結合性以外に、双方向結合Iキャッシュ422は、32バイトラインを備えた32KBの仮想タグ付きIキャッシュであり、Iキャッシュ222に適切に類似していてもよい。仮想アドレス405はプログラムカウンタ(PC)などのレジスタに記憶された32ビットのアドレスであり、仮想アドレス205と同様に、そのビット位置のため2つの重畳手段を表して示されている。Iキャッシュ422は9ビットのサイズのインデックス418を有し、したがって18ビットのサイズのI$仮想タグを有する。この実施形態について、ビット位置31−12または変換されたビット位置410は4つのしきい値を定義し、その結果4つの同時インデックスとなり、ビット位置11−5または変換されていないビット位置415は、仮想タグ付きIキャッシュの中の行を選択的に無効化するために、4つのしきい値の各々からオフセットを定義する。双方向セット結合キャッシュで、各行は2つのキャッシュラインを含む。その結果、制御論理回路110は4つのキャッシュ行に同時にインデックス付けを行い、したがって8つの仮想タグ付きIキャッシュエントリを無効にする。
さらなる実施形態として、様々なサイズおよび構成の仮想タグ付けIキャッシュが考えられるということが認識されよう。例として、32バイトラインを備えた32KBの仮想タグ付けIキャッシュの4方向セット結合の実施形態は、8ビットのサイズのインデックス、したがって19ビットのサイズのI$仮想タグに結び付く。4方向セット結合Iキャッシュについて、ビット位置12は2つのしきい値を定義し、ビット位置11−5は、4方向Iキャッシュの中のエントリを選択的に無効化するために、2つのしきい値からオフセットを定義する。
別の例として、32バイトラインを備えた32KBの仮想タグ付きIキャッシュの8方向セット結合実施形態は、7ビットのサイズのインデックス、したがって20ビットのサイズのI$仮想タグ、同じサイズのTLB仮想タグ、およびそれに関する物理タグ番号に結び付く。全方向セット結合Iキャッシュについては、定義されるしきい値はなく、ビット位置11−5は8方向キャッシュへインデックス付けを行う。しかしながら、8方向キャッシュの中の各行は8つのキャッシュラインを備え、8つのキャッシュラインは選択的に無効化されるということに留意されたい。さらに、この例ではTLB仮想タグのサイズはI$仮想タグのサイズと等しいことから、指定された物理アドレスに関連する可能性のあるIキャッシュの中の任意のエントリは、単一のIキャッシュインデックスによって選択されたIキャッシュの通路の中に配置されることが保障され、次にこの単一のIキャッシュインデックスは、それらのビット位置が変換されないことから、指定された物理アドレスからのインデックスビット位置と同じものとなる。換言すれば、すべてのIキャッシュインデックスビットがページオフセット内のビット位置にあり、したがってIキャッシュインデックスビットがアドレス変換メカニズムによって変換されない場合、指定された物理アドレスに関連する可能性のあるIキャッシュの中の任意のエントリは、単一のIキャッシュインデックスによって選択されたIキャッシュの通路の中に配置されることが保障される。
これらの前述の例は、本開示の教示によるセット結合仮想インデックス付けおよび仮想タグ付けIキャッシュが、どのようにして選択的無効化に影響を及ぼすのかを示している。特に、仮想インデックス付けおよび仮想タグ付けキャッシュのセット結合性が高くなるほど、アドレス変換プロセスによって変換されるビット数は少なくなるが、それらはIキャッシュのインデックスの中で、それらの変換されていない形態の中で利用され、その結果、選択的に無効化されるIキャッシュ行の数は少なくなる。同様に、物理ページのサイズは変換されるアドレスビットの数に影響を及ぼす。ページのサイズが増えると、変換される仮想アドレスの上位ビットは少なくなる。したがってページのサイズが大きくなると、アドレス変換プロセスによって変換されるビットの数は少なくなるが、それらはIキャッシュインデックスのために、それらの変換されていない形態で利用され、ここでもまた選択的に無効化されるIキャッシュ行/セットの数は少なくなる。
物理ページ番号の中のビットの数がIキャッシュ仮想タグの中のビットの数と同じ場合、アドレス変換プロセスによって最終的に変換されるIキャッシュインデックスの中のビット305は存在しない。したがって潜在的なIキャッシュの通路は、1つの保証された通路に減らされる。一般にページサイズが増えると変換ビットは少なくなり、したがって物理アドレスに関連した潜在的Iキャッシュエントリのサイズは減らされる。
図2に戻ると、制御論理回路110は、ソフトウェアプログラムが物理タグ付きIキャッシュで書き込まれたのか、または仮想タグ付きIキャッシュで書き込まれたのかに関わらず、ソフトウェアプログラムからのTLB無効化命令およびIキャッシュ無効化命令などの無効化命令を入力として受信する。これらの無効化命令は、例えばパイプステージ160Bなどのパイプライン120の中の復号ステージから与えられてもよい。制御論理回路110は、知られているIキャッシュ無効化命令に応答して、Iキャッシュの1つまたは複数のエントリを無効化するために、Iキャッシュ制御信号を生成することなどの知られているメカニズムを利用してIキャッシュ122の中の1つまたは複数のエントリを無効化するために、TLB無効化命令のセットに応答する。さらにIキャッシュを管理するためにTLB無効化命令のセットに応答すること、および物理アドレスの内容が変わったことを示すシナリオのためにIキャッシュ無効化命令に応答することによって、制御論理回路110は、従来の仮想タグ付きIキャッシュが必要とする各シナリオのためにIキャッシュ無効化命令を別々に出さなければならないことから、ソフトウェアプログラムの負担を軽減する。その結果、物理タグ付きIキャッシュ(physically tagged I-cache)を管理するように書き込まれるソフトウェアプログラムは、ここで好都合にも、仮想インデックス付き、仮想タグ付きIキャッシュ(virtually-indexed, virtually-tagged I-cache)を管理しているプロセッサ100上で実行することができるので、ソフトウェアの観点から、それは、あたかも物理インデックス付き、および物理タグ付き(physically-indexed and physically-tagged)のように振舞う。
制御論理回路110はまた、書き込まれた既存のソフトウェアプログラムが仮想タグ付きIキャッシュを管理する目的で、仮想タグ付きIキャッシュ122の中の1つまたは複数のエントリを無効化するために、知られているIキャッシュ無効化命令に応答する。さらにある実施形態においては、制御論理回路110は、特に仮想タグ付きIキャッシュのために書き込まれたソフトウェアプログラムが実行中である場合に利用されてもよいプロセッサ100から、任意のイネーブル信号237を受信してもよい。イネーブル信号237はプロセッサの状態ビット、構成ビットおよびその他の結果として呼び出されてもよい。イネーブル信号237が呼び出される場合、制御論理回路110は上述のように動作する。イネーブル信号237が呼び出されない(ディスエーブルにされる)場合、制御論理回路110はTLB128からの1つまたは複数のエントリを無効にするためにTLB無効化命令に応答し、仮想タグ付きIキャッシュ122の中の1つまたは複数のエントリを無効化するためにIキャッシュ無効化命令に応答する。イネーブル信号237が呼び出されない(ディスエーブルにされる)場合、制御論理回路110はTLB無効化命令に応答して、仮想タグ付きIキャッシュ122の中のエントリを無効にすることはなく、Iキャッシュ無効化命令に応答して、指定された仮想アドレスに特に関連したものよりも多くのIキャッシュエントリを必ずしも無効にするわけではない。
ある実施形態においては、制御論理回路110はTLB制御信号ジェネレータ235およびIキャッシュ制御信号ジェネレータ245を含んでもよい。Iキャッシュ制御信号ジェネレータ245への入力241および243はそれぞれ、TLB無効化命令およびIキャッシュ無効化命令をIキャッシュ制御信号ジェネレータ245に結合する。Iキャッシュ制御信号ジェネレータ245は受信された無効化命令に基づいて、仮想タグ付きIキャッシュ122の中の1つまたは複数のエントリを無効化するために、制御信号を生成するように構成されている。TLB制御信号ジェネレータ235は、受信された特定の種類のTLB無効化命令に基づいて、TLB128の中の1つまたは複数のエントリを無効化するために、知られている方法で制御信号を生成する。Iキャッシュ制御信号ジェネレータ245への入力がIキャッシュ無効化命令の結果である場合、Iキャッシュ制御信号ジェネレータ245は、仮想タグ付けIキャッシュ122の中の1つまたは複数のエントリを無効化するために、知られている方法で制御信号を生成する。さらにIキャッシュ制御信号ジェネレータ245は、TLB無効化命令に応答して、仮想タグ付けIキャッシュ122の中の1つまたは複数のエントリを無効化するために制御信号を生成する。以下の表は、以下のTLB無効化命令を受信した結果生じるIキャッシュ制御信号ジェネレータ245の機能的動作を説明するものである。
Figure 2009534755
列220Dは、変換メカニズムが1つのイネーブルメントの状態(state of enablement)にあったときにエントリが確立されたときに、仮想タグの比較に基づいて、Iキャッシュ122の中のエントリには誤った「合致」は存在しないということを保証するための1つの実施形態であるが、合致は、後で変換メカニズムが別のイネーブルメントの状態にあるときに生じている。例えば、TLB128などの変換メカニズムが、TLB128がイネーブルか、またはディスエーブルの状態にあることを可能にするイネーブルメント機能を有する状況では、Iキャッシュ122の中に記憶されたエントリは、エントリが記憶されたときにTLBが動作可能であったか否かを示すフラグ値を含んでもよい。動作不能のTLB128の間にエントリがIキャッシュの中に記憶される場合、記憶されるエントリは、変換されていない仮想アドレスと同じ物理アドレスに関連している。
ディスエーブルからイネーブルへのTLB切り換えの場合、動作不能のTLBの間に記憶されたIキャッシュエントリは、TLB切り換え信号239に応答して、制御論理回路110によって無効化される。また、イネーブルからディスエーブルへのTLB切り換えの場合、動作可能TLBの間に記憶されたIキャッシュエントリは、TLB切り換え信号239に応答して、制御論理回路110によって無効化される。TLB切り換え信号239は通常、ディスエーブルからイネーブルへの、およびその反対のTLB128切り換えの場合に生成される。特に、Iキャッシュ制御信号ジェネレータ245はTLB切り換え信号239に応答して、TLB128が、それがちょうど切り換えられた状態にあった間にエントリが最初に記憶されたということを示すフラグフィールドに合致するIキャッシュ122の中のエントリを無効化するために、制御信号を生成する。代替実施形態で、列220Dのフラグは、変換表の状態がイネーブルである場合に設定されてもよい。この実施形態では、Iキャッシュの探索が行われる場合に、このフラグは、変換表の現在の状態との合致が存在するかどうかを判定するために考慮される。
別の代替実施形態では、前の一貫しない状態で確立されたIキャッシュエントリで、誤りではない「合致」が生じていることを保証するという問題は、任意の列220Dを用いずに対処される。この実施形態で、制御論理回路110は、TLBイネーブル切り換え信号239がTLBイネーブルメカニズムに切り換えがあったことを示す場合に、エントリキャッシュ122をフラッシュ無効化する。
当業者には、仮想アドレス205のサイズ、ならびにTLB128およびIキャッシュ122の寸法は、本発明の教示から逸脱することなく、別の実施形態に適用されてもよいということを理解されたい。
図5は、ソフトウェアプログラムの観点から、仮想タグ付き命令キャッシュに、それがあたかも物理タグ付き命令キャッシュであるかのように動作させるための方法500を示す流れ図である。機能ブロック510で、この方法は命令を取り出す。
取り出された命令は、取り出された命令が復号される命令復号530に進む。ブロック540で、この方法は命令の種類を判定する。命令の種類がアドレス変換無効化命令である場合、この方法は、アドレス変換無効化命令にしたがって、TLB128などのTLBの中の1つまたは複数のエントリを無効化するブロック550に進む。この方法はさらに、ブロック560に進む。ブロック560で、この方法はまた、表1で定義されたようなアドレス変換無効化命令のマッピングにしたがって、Iキャッシュ122の中の1つまたは複数のエントリを無効化する。当業者には、ブロック550とブロック560の順番が、無効化プロセスに影響を及ぼすことなく逆にされてもよいということを理解されたい。ブロック540に戻ると、命令の種類がIキャッシュ無効化命令である場合、この方法は、Iキャッシュ無効化命令にしたがって、Iキャッシュ122の中の1つまたは複数のエントリを無効化するためにブロック560に進む。ブロック540に戻ると、命令の種類が任意の種類の無効化命令ではない場合、次の命令を取り出すためにブロック510に戻る。
ここに開示される実施形態とともに説明される様々な例示的な論理ブロック、モジュール、回路、要素および/またはコンポーネントは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレー(FPGA)もしくはその他のプログラマブル論理コンポーネント、独立ゲートまたはトランジスタ論理回路、独立のハードウェアコンポーネント、またはここに説明されている機能を実行するように構成された任意のそれらの組み合わせを用いて実装または実行されてもよい。汎用プロセッサはマイクロプロセッサであってよいが、代替として、このプロセッサは任意の従来型プロセッサ、コントローラ、マイクロコントローラまたはステートマシンであってもよい。プロセッサはまた、例えばDSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、または任意のその他の前述のような構成などのコンピューティングコンポーネントの組み合わせとして実装されてもよい。
ここに開示される実施形態とともに説明される方法またはアルゴリズムは、ハードウェア、プロセッサによって実行されるソフトウェアモジュール、またはこの2つの組み合わせの中で直接具体化されてもよい。ソフトウェアモジュールはRAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、また当技術分野で知られている任意のその他の形態の記憶媒体に存在してもよい。記憶媒体は、プロセッサが情報を記憶媒体から読み取り、情報を記憶媒体へ書き込むことができるように、プロセッサに結合されてもよい。代替として、記憶媒体はプロセッサと一体化されてもよい。
本発明は、実施形態の状況の中で開示されているが、上記説明および添付された特許請求の範囲と整合する多種多様なインプリメンテーションが当業者によって使用されることができるということを認識されるであろう。
プロセッサの1つの実施形態を示す機能ブロック図。 図1の命令キャッシュシステムをより詳細に示す図。 ダイレクトマップIキャッシュの中の物理アドレスに関連している可能性のある、仮想タグ付きIキャッシュエントリのセットの選択的な無効化を示すブロック図。 双方向セット結合Iキャッシュの中の物理アドレスに関連している可能性のある、仮想タグ付きIキャッシュエントリのセットの選択的な無効化を示すブロック図。 ソフトウェアプログラムの観点から、仮想タグ付き命令キャッシュがあたかも物理タグ付き命令キャッシュのように動作するための方法を示す流れ図。

Claims (20)

  1. 仮想タグ付き命令キャッシュと、
    アドレス変換無効化命令に応答するアドレス変換のための手段と、
    前記アドレス変換無効化命令に応答して、前記仮想タグ付き命令キャッシュの中のエントリを無効化するように構成された制御論理回路と、
    を備える命令キャッシュシステム。
  2. 前記アドレス変換のための手段は変換ルックアサイドバッファ(TLB)である、請求項1に記載の命令キャッシュシステム。
  3. 前記制御論理回路は、前記アドレス変換無効化命令に応答して前記仮想タグ付き命令キャッシュをフラッシュ無効化するように構成されている、請求項1に記載の命令キャッシュシステム。
  4. 前記制御論理回路は、前記アドレス変換無効化命令によって指定されたアプリケーションサービス識別子(ASID)に対応する前記仮想タグ付き命令キャッシュの中の1つまたは複数のエントリを無効化するように構成されている、請求項1に記載の命令キャッシュシステム。
  5. 前記制御論理回路は、前記アドレス変換無効化命令の中で指定されたインデックスに対応する前記仮想タグ付き命令キャッシュの中の選択的なエントリのセットを無効化するように構成されている、請求項1に記載の命令キャッシュシステム。
  6. 前記制御論理回路は、状態を変更する前記アドレス変換のための手段に応答して、前記仮想タグ付き命令キャッシュをフラッシュ無効化するように構成されている、請求項1に記載の命令キャッシュシステム。
  7. 前記制御論理回路は、イネーブルメント信号を受信するための入力を備え、前記制御論理回路は、前記イネーブルメント信号を受信した後、前記アドレス変換無効化命令に応答して、前記仮想タグ付き命令キャッシュの中の前記エントリを単に無効化するように構成されている、請求項1に記載の命令キャッシュシステム。
  8. 前記制御論理回路は、特定の物理アドレスの無効化を指定する命令キャッシュ無効化命令に応答して、前記仮想タグ付き命令キャッシュをフラッシュ無効化するように構成されている、請求項1に記載の命令キャッシュシステム。
  9. 前記インデックスは、変換されたビット位置と変換されていないビット位置とを備え、
    前記変換されたビット位置の値の各々の組み合わせは、前記仮想タグ付き命令キャッシュの中でしきい値を定義し、
    前記制御論理回路は、前記定義されたしきい値からのオフセットでエントリを選択的に無効化するようにさらに構成されており、前記オフセットは、前記変換されていないビット位置の値によって指定される、
    請求項5に記載の命令キャッシュシステム。
  10. プロセッサの中に配置される、請求項1に記載の命令キャッシュシステム。
  11. ソフトウェアプログラムの観点から、仮想タグ付き命令キャッシュがあたかも物理タグ付き命令キャッシュのように動作するための方法であって、
    アドレス変換無効化命令を受信することと、
    前記アドレス変換無効化命令に応答して、仮想タグ付き命令キャッシュの中のエントリを無効化することと、
    を備える方法。
  12. 前記仮想タグ付き命令キャッシュの中の前記エントリを無効化することは、
    前記仮想タグ付き命令キャッシュをフラッシュ無効化すること、
    をさらに備える、
    請求項11に記載の方法。
  13. 前記仮想タグ付き命令キャッシュの中の前記エントリを無効化することは、
    前記アドレス変換無効化命令によって指定されたアプリケーションサービス識別子(ASID)に対応する1つまたは複数のエントリを無効化すること、
    をさらに備える、
    請求項11に記載の方法。
  14. 前記仮想タグ付き命令キャッシュの中の前記エントリを無効化することは、
    前記アドレス変換無効化命令によって指定されたアドレスに対応する選択的なエントリのセットを無効化すること、
    をさらに備える、
    請求項11に記載の方法。
  15. 前記仮想タグ付き命令キャッシュの中の前記エントリを無効化することは、
    状態を変更するアドレス変換のための手段に応答して、前記仮想タグ付き命令キャッシュをフラッシュ無効化すること、
    をさらに備える、
    請求項11に記載の方法。
  16. 前記仮想タグ付き命令キャッシュの中の前記エントリを無効化することは、
    イネーブルメント信号を受信することと、
    前記イネーブルメント信号を受信した後、前記仮想タグ付き命令キャッシュの中の前記エントリを無効化することと、
    をさらに備える、
    請求項11に記載の方法。
  17. 前記仮想タグ付き命令キャッシュの中の前記エントリを無効化することは、
    特定の物理アドレスの無効化を指定する命令キャッシュ無効化命令を受信することと、
    前記命令キャッシュ無効化命令に応答して、前記仮想タグ付き命令キャッシュをフラッシュ無効化することと、
    をさらに備える、
    請求項11に記載の方法。
  18. ソフトウェアプログラムの観点から、仮想タグ付き命令キャッシュにあたかも物理タグ付き命令キャッシュのように動作するように指示するための制御論理回路であって、
    アドレス変換無効化命令を受信するための第1入力と、
    前記アドレス変換無効化命令に応答して、前記仮想タグ付き命令キャッシュの中のエントリを無効化するために制御信号を生成するための手段と、
    を備える制御論理回路。
  19. 命令キャッシュ無効化命令を受信するための第2手段、
    をさらに備え、前記仮想タグ付き命令キャッシュの中のエントリを無効化するために制御信号を生成するための前記手段もまた、前記命令キャッシュ無効化命令に応答する、
    請求項18に記載の制御論理回路。
  20. 前記アドレス変換無効化命令に応答して前記仮想タグ付き命令キャッシュの中のエントリを無効化するために制御信号を生成するための前記手段をディスエーブルにするための第3入力、
    をさらに備える請求項19に記載の制御論理回路。
JP2009506725A 2006-04-19 2007-04-17 物理タグ付け動作を用いる仮想タグ付き命令キャッシュ Expired - Fee Related JP5108002B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US79301506P 2006-04-19 2006-04-19
US79301606P 2006-04-19 2006-04-19
US60/793,015 2006-04-19
US60/793,016 2006-04-19
US11/468,850 US7802055B2 (en) 2006-04-19 2006-08-31 Virtually-tagged instruction cache with physically-tagged behavior
US11/468,850 2006-08-31
PCT/US2007/066802 WO2007124307A2 (en) 2006-04-19 2007-04-17 Virtually-tagged instruction cache with physically-tagged behavior

Publications (2)

Publication Number Publication Date
JP2009534755A true JP2009534755A (ja) 2009-09-24
JP5108002B2 JP5108002B2 (ja) 2012-12-26

Family

ID=38582274

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009506725A Expired - Fee Related JP5108002B2 (ja) 2006-04-19 2007-04-17 物理タグ付け動作を用いる仮想タグ付き命令キャッシュ

Country Status (9)

Country Link
US (1) US7802055B2 (ja)
EP (1) EP2011010B1 (ja)
JP (1) JP5108002B2 (ja)
KR (1) KR101019266B1 (ja)
CN (1) CN101421706B (ja)
BR (1) BRPI0710171A2 (ja)
CA (1) CA2646473C (ja)
MX (1) MX2008013345A (ja)
WO (1) WO2007124307A2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7401201B2 (en) * 2006-04-28 2008-07-15 Freescale Semiconductor, Inc. Processor and method for altering address translation
US8131982B2 (en) * 2008-06-13 2012-03-06 International Business Machines Corporation Branch prediction instructions having mask values involving unloading and loading branch history data
US10338923B2 (en) * 2009-05-05 2019-07-02 International Business Machines Corporation Branch prediction path wrong guess instruction
US8521999B2 (en) * 2010-03-11 2013-08-27 International Business Machines Corporation Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history
KR20130019891A (ko) * 2011-08-18 2013-02-27 삼성전자주식회사 메타 라이팅 빈도를 줄이기 위한 메타 데이터 라이팅 방법
WO2013058745A1 (en) 2011-10-18 2013-04-25 Soft Machines, Inc. Methods and systems for managing synonyms in virtually indexed physically tagged caches
JP2013097671A (ja) * 2011-11-02 2013-05-20 Fujitsu Ltd アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置
US9110830B2 (en) * 2012-01-18 2015-08-18 Qualcomm Incorporated Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods
CN102880426B (zh) * 2012-08-01 2015-05-27 龙芯中科技术有限公司 一种系统虚拟机减少tlb刷新的方法及系统虚拟机
US9009413B2 (en) * 2012-12-21 2015-04-14 Intel Corporation Method and apparatus to implement lazy flush in a virtually tagged cache memory
US9405690B2 (en) 2013-08-07 2016-08-02 Oracle International Corporation Method for storing modified instruction data in a shared cache
US9619387B2 (en) 2014-02-21 2017-04-11 Arm Limited Invalidating stored address translations
US9740629B2 (en) 2014-12-19 2017-08-22 International Business Machines Corporation Tracking memory accesses when invalidating effective address to real address translations
GB2536205A (en) 2015-03-03 2016-09-14 Advanced Risc Mach Ltd Cache maintenance instruction
US10223279B2 (en) 2016-06-27 2019-03-05 Cavium, Llc Managing virtual-address caches for multiple memory page sizes
US20180089094A1 (en) * 2016-09-23 2018-03-29 Qualcomm Incorporated Precise invalidation of virtually tagged caches
KR20180050849A (ko) * 2016-11-07 2018-05-16 삼성전자주식회사 전자 장치 및 메모리 액세스 방법
EP3422192B1 (en) * 2017-06-28 2020-08-12 Arm Ltd Address translation data invalidation
US10318436B2 (en) * 2017-07-25 2019-06-11 Qualcomm Incorporated Precise invalidation of virtually tagged caches
US10552162B2 (en) * 2018-01-22 2020-02-04 International Business Machines Corporation Variable latency flush filtering
KR102287758B1 (ko) 2018-03-05 2021-08-09 삼성전자주식회사 부채널 공격으로부터 캐시를 보호하는 시스템
WO2020041473A1 (en) 2018-08-21 2020-02-27 The Regents Of The University Of Michigan Computer system with moving target defenses against vulnerability attacks
US10846239B2 (en) 2018-11-29 2020-11-24 Marvell Asia Pte, Ltd. Managing translation lookaside buffer entries based on associativity and page size
US11086787B2 (en) * 2019-02-05 2021-08-10 International Business Machines Corporation Virtual cache synonym detection using alias tags
WO2021034753A2 (en) * 2019-08-16 2021-02-25 The Regents Of The University Of Michigan Thwarting control plane attacks with displaced and dilated address spaces
US11366667B2 (en) * 2020-04-14 2022-06-21 Shanghai Zhaoxin Semiconductor Co., Ltd. Microprocessor with instruction fetching failure solution
CN112099907B (zh) * 2020-08-26 2024-01-26 海光信息技术股份有限公司 一种虚拟机运行方法、装置及服务器
US11630771B2 (en) * 2021-07-13 2023-04-18 Apple Inc. Poison mechanisms for deferred invalidates
US11687466B1 (en) * 2022-05-12 2023-06-27 Ventana Micro Systems Inc. Translation lookaside buffer consistency directory for use with virtually-indexed virtually-tagged first level data cache that holds page table permissions

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000242556A (ja) * 1999-02-18 2000-09-08 Texas Instr Inc <Ti> 仮想インデックス仮想タグデータキャッシュ用に最適化されたハードウエアクリーニング機能
JP2001142779A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 改善されたメモリ管理ユニット及びキャッシュメモリを有するマイクロプロセッサを用いたデータ処理方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5003459A (en) * 1988-04-01 1991-03-26 Digital Equipment Corporation Cache memory system
US6349355B1 (en) * 1997-02-06 2002-02-19 Microsoft Corporation Sharing executable modules between user and kernel threads
US6079005A (en) * 1997-11-20 2000-06-20 Advanced Micro Devices, Inc. Microprocessor including virtual address branch prediction and current page register to provide page portion of virtual and physical fetch address
US6418525B1 (en) * 1999-01-29 2002-07-09 International Business Machines Corporation Method and apparatus for reducing latency in set-associative caches using set prediction
US6338128B1 (en) * 1999-05-20 2002-01-08 International Business Machines Corp. System and method for invalidating an entry in a translation unit
US6470437B1 (en) 1999-12-17 2002-10-22 Hewlett-Packard Company Updating and invalidating store data and removing stale cache lines in a prevalidated tag cache design

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000242556A (ja) * 1999-02-18 2000-09-08 Texas Instr Inc <Ti> 仮想インデックス仮想タグデータキャッシュ用に最適化されたハードウエアクリーニング機能
JP2001142779A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 改善されたメモリ管理ユニット及びキャッシュメモリを有するマイクロプロセッサを用いたデータ処理方法

Also Published As

Publication number Publication date
WO2007124307A3 (en) 2007-12-27
CN101421706A (zh) 2009-04-29
JP5108002B2 (ja) 2012-12-26
WO2007124307A2 (en) 2007-11-01
BRPI0710171A2 (pt) 2011-08-23
CA2646473A1 (en) 2007-11-01
CN101421706B (zh) 2012-10-10
KR20090007598A (ko) 2009-01-19
EP2011010B1 (en) 2018-01-10
EP2011010A2 (en) 2009-01-07
KR101019266B1 (ko) 2011-03-07
US20070250666A1 (en) 2007-10-25
US7802055B2 (en) 2010-09-21
CA2646473C (en) 2012-10-02
MX2008013345A (es) 2008-11-10

Similar Documents

Publication Publication Date Title
JP5108002B2 (ja) 物理タグ付け動作を用いる仮想タグ付き命令キャッシュ
US20130179642A1 (en) Non-Allocating Memory Access with Physical Address
US9465748B2 (en) Instruction fetch translation lookaside buffer management to support host and guest O/S translations
US6678815B1 (en) Apparatus and method for reducing power consumption due to cache and TLB accesses in a processor front-end
US8156309B2 (en) Translation look-aside buffer with variable page sizes
JP5526626B2 (ja) 演算処理装置およびアドレス変換方法
US20090006803A1 (en) L2 Cache/Nest Address Translation
US8190652B2 (en) Achieving coherence between dynamically optimized code and original code
US7680985B2 (en) Method and apparatus for accessing a split cache directory
JPH08320829A (ja) データ処理装置
JP5608594B2 (ja) プレロード命令制御
US10083126B2 (en) Apparatus and method for avoiding conflicting entries in a storage structure
KR20170100003A (ko) 가상 주소들을 사용하여 액세스된 캐시
EP1974255B1 (en) Translation lookaside buffer manipulation
KR101898322B1 (ko) 상이한 인덱싱 방식을 사용하는 1차 캐시와 오버플로 캐시를 갖는 캐시 시스템
US20160140042A1 (en) Instruction cache translation management
JPH07200399A (ja) マイクロプロセッサ、およびマイクロプロセッサにおいてメモリにアクセスするための方法
US7937530B2 (en) Method and apparatus for accessing a cache with an effective address
JP2000231549A (ja) マイクロプロセッサ
JP2009512943A (ja) 多階層の変換索引緩衝機構(TLBs)フィールドの更新
JP2009009571A (ja) レベル2キャッシュ/ネスト・アドレスを変換する方法および装置
RU2433456C2 (ru) Виртуально маркированный кэш команд с поведением физически маркированного
WO2009000702A1 (en) Method and apparatus for accessing a cache
US11934320B2 (en) Translation lookaside buffer invalidation

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110823

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111118

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111128

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111226

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120106

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120123

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120130

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120223

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121004

R150 Certificate of patent or registration of utility model

Ref document number: 5108002

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151012

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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