JP2004503870A - 変換索引バッファのフラッシュフィルタ - Google Patents

変換索引バッファのフラッシュフィルタ Download PDF

Info

Publication number
JP2004503870A
JP2004503870A JP2002511180A JP2002511180A JP2004503870A JP 2004503870 A JP2004503870 A JP 2004503870A JP 2002511180 A JP2002511180 A JP 2002511180A JP 2002511180 A JP2002511180 A JP 2002511180A JP 2004503870 A JP2004503870 A JP 2004503870A
Authority
JP
Japan
Prior art keywords
tlb
instruction
address
processor
memory
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
JP2002511180A
Other languages
English (en)
Other versions
JP4437001B2 (ja
JP2004503870A5 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2004503870A publication Critical patent/JP2004503870A/ja
Publication of JP2004503870A5 publication Critical patent/JP2004503870A5/ja
Application granted granted Critical
Publication of JP4437001B2 publication Critical patent/JP4437001B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency
    • 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

変換索引バッファ(TLB)のフラッシュフィルタ(40)が提供される。一実施例では、中央演算処理装置(10)は最新のアドレス変換を記憶するためのTLB(39)を含む。TLBフラッシュフィルタ(40)は、そこからアドレス変換がロードされTLB(39)にキャッシュされたところのメモリブロックを監視する。TLBフラッシュフィルタ(40)は、メモリ内の基礎となるアドレス変換のうちいずれかが変化したかどうかを検出するよう構成される。変化が起こらなければ、TLBフラッシュフィルタ(40)は次のコンテキストスイッチの後のTLB(39)のフラッシュを防ぐことができる。基礎となるアドレス変換に変化が起これば、TLBフラッシュフィルタ(40)はコンテキストスイッチ後のTLB(39)のフラッシュを許すことができる。

Description

【0001】
【発明の背景】
技術分野
この発明はプロセッサに関し、より特定的には、アドレス変換を記憶するのに用いられる変換索引バッファに関する。
【0002】
背景技術
メモリ管理を用いたコンピュータシステムは、メモリアクセスを行なうために仮想アドレスを物理アドレスに変換する必要があることがある。典型的なコンピュータプログラムは、メモリモデルをアドレス指定して、メモリアクセスを行なう際に仮想メモリアドレスを発行するように書かれてある。次に仮想メモリアドレスは、プログラムにより必要とされる情報に対するアクセスのために物理メモリアドレスへと変換されることになる。仮想アドレスから物理アドレスへの変換を行なうためには、異なったコンピュータアーキテクチャでさまざまな機構が存在する。
【0003】
アドレス変換を行なう際の1つの問題が待ち時間である。メモリからの情報のアクセスに必要な時間に加え、いくつかのクロックサイクルがアドレス変換を行なうのに用いられ得る。この待ち時間のペナルティは、頻繁なメモリアクセスを行なうプログラムにおいては重大なもの、あるいは許容できないものとなることがある。アドレス変換から待ち時間のペナルティを減少させる一般的な1つの方法は、変換索引バッファ(TLB)を用いることである。TLBはプロセッサ内に位置する小さなメモリであり、仮想アドレスから物理アドレスへの変換を記憶するのに用いられる。典型的なTLBは、最新のアドレス変換について仮想アドレスと物理アドレスとの両方を記憶できる。プログラムは、メモリアクセスを試みる時に仮想アドレスを発行するであろう。するとTLBが、発行された仮想アドレスがあるかどうかについて探索されることになる。発行された仮想アドレスに対応する物理アドレスが見つかると、次にこれは主メモリへのアクセスに用いられ得る。典型的に、変換はページ単位(たとえば4キロバイト、2メガバイト、4メガバイトなど)で行なうようにされており、TLBは仮想アドレスのページ部分および対応する物理アドレスのページ部分を記憶できる。
【0004】
TLBによってもたらされる利益にもかかわらず、問題はなお存在する。そのような問題の1つはコンテキストスイッチの際に生じるものである。TLBを採用した多くのプロセッサにおいて、コンテキストスイッチの結果、TLBに記憶されたすべての変換が除去されてしまう。これはTLBフラッシュとして知られている。TLBがフラッシュされるのは、スイッチされたコンテキストに対応するアドレス変換のうち1つ以上が変更されてしまったかもしれず、従ってTLBにキャッシュされた変換がもはや正しい変換ではないかもしれないからである。残念なことに、コンテキストスイッチに続いて新たな処理が実行されると、メモリアクセスごとにアドレス変換が必要となり、TLBは再びロードされなければならない。アドレス変換とTLBの再ロードの結果、大きな待ち時間ペナルティが生じ得る。この待ち時間ペナルティは、頻繁なコンテキストスイッチを必要とするプログラムまたはオペレーティングシステムによって悪化するおそれがある。
【0005】
TLBに記憶されるアドレス変換は、メモリに記憶された基礎となっているデータ構造によって支援される。たとえば、ページングを採用したコンピュータはページテーブルでデータ構造を記憶できる。このようなデータ構造はTLBにロードされる変換を含む。これらデータ構造は、コンテキストスイッチによりスイッチされたコンテキストについては変わることもあるが、多くの場合これらデータ構造は変わらない。データ構造がすべての場合に変わるわけではないという事実にもかかわらず、典型的なプロセッサはそれでもTLBフラッシュを行なうであろう。このような状況下でのTLBフラッシュは不必要であろうし、この結果として上述のような大きな待ち時間ペナルティが生じるおそれがある。
【0006】
【発明の開示】
上に概説した問題は、ここに記載の変換索引バッファ(TLB)のフラッシュフィルタによってその大部分を解決することができる。一実施例では、プロセッサは最新のアドレス変換を記憶するためのTLBを含む。TLBフラッシュフィルタは、そこからアドレス変換がロードされてTLBにキャッシュされたところのメモリブロックを監視する。TLBフラッシュフィルタは、メモリ内の基礎となっているアドレス変換のうちいずれかが変化したかどうかを判断するよう構成される。変化が起こらなかった場合、TLBフラッシュフィルタはコンテキストスイッチでのTLBフラッシュを防ぎ得る。基礎となっているアドレス変換に変化が生じた場合には、TLBフラッシュフィルタはコンテキストスイッチ後のTLBフラッシュを許すであろう。
【0007】
一実施例では、TLBフラッシュフィルタは領域テーブルを用いて、そこからアドレス変換がTLBにキャッシュされたメモリブロックを追跡する。TLBフラッシュフィルタは、さまざまなメモリブロック(典型的にはページテーブルまたはディレクトリ)内の、基礎となっているアドレス変換に対する変更を監視し得る。最初のコンテキストスイッチの結果としてTLBフラッシュが生じ、こうしてTLBフラッシュフィルタを活性化することになる。メモリ内の基礎となっているアドレス変換に対する変化が領域テーブルで検出されなければ、後続のコンテキストスイッチの際にTLBフラッシュはTLBフラッシュフィルタによって防止され得る。
【0008】
TLBフラッシュフィルタを動作させる方法はさらにコンテキストスイッチの追跡を含む。一実施例では、これは基準アドレスレジスタの値にタグを付すことにより行なわれ得る。基準アドレスレジスタは、特定のコンテキストに関連するページテーブルの基準アドレスを記憶するように構成され得る。タグおよびレジスタの実際の値は領域テーブルでエントリとして記憶されて、特定のメモリ領域に対応し得る。タグはTLBエントリにある他のデータとともに記憶され、このエントリにある変換をコンテキストと関連づける。このように、多くのコンテキストについての変換が同時にTLBにあり得る。現在のコンテキストタグと一致するコンテキストタグを有する変換のみが現在のコンテキストにとって利用可能となり得る。
【0009】
一実施例で用いられる領域テーブルは、内容参照可能メモリ(CAM)およびランダムアクセスメモリ(RAM)で実現される。CAMは、そこからアドレス変換がTLBにロードされるメモリ構造に関する、情報を記憶するのに用いられ得る。このような情報は、ページディレクトリ情報およびページテーブル情報を含み得る。RAMは、基準アドレスレジスタの値およびその関連のタグを記憶するのに用いられ得る。さらに、基準アドレスエントリの数を追跡するためにカウンタが用いられ得る。カウンタがオーバーフローすると、TLBフラッシュフィルタは非活性化され、領域テーブルはクリアされ得る。CAMに記憶されたエントリの数を記録するために領域カウンタもまた用いられ得る。このカウンタのオーバーフローもまた、TLBフラッシュフィルタが非活性化されて領域テーブルがクリアされることを引き起こし得る。TLBフラッシュフィルタの非活性化の後、コンテキストスイッチの結果としてTLBフラッシュが生じ得る。その後TLBフラッシュフィルタは再び活性化され得る。
【0010】
このようにさまざまな実施例でTLBフラッシュフィルタは、TLBに対する不必要なフラッシュを防止することができる。TLBに対する不必要なフラッシュを防止できるため、新たなコンテキストは、基礎となっているアドレス変換がいずれも変化しなかったときには以前にキャッシュされたアドレス変換を用いることができるであろう。これによって多くの場合、仮想アドレスを物理アドレスに変換してこれをTLBにキャッシュする過程を繰返す必要がなくなるであろう。こうして多くのメモリアクセスのための待ち時間が著しく減少され、これによりプロセッサ性能の著しい増加が可能となるであろう。
【0011】
この発明の他の目的および利点は、以下の詳細な説明および添付の図面を参照することにより明らかとなるであろう。
【0012】
この発明はさまざまな変形および代替形を受入れることができるが、図面ではこれの特定の実施例を例示し、ここで詳細に説明する。しかしながら、図面およびその説明は、開示する特定の形にこの発明を限定することを意図しておらず、逆にこの発明は、前掲の特許請求の範囲で定められたこの発明の意味および範囲内のすべての変形、均等物および代替物を包含することが理解されるべきである。
【0013】
【発明の実施の形態】
図1を参照して、プロセッサ10の一実施例のブロック図が示される。その他の実施例が可能であり企図されている。図1に示すように、プロセッサ10は、プリフェッチ/プリデコードユニット12、分岐予測ユニット14、命令キャッシュ16、命令アラインメントユニット18、複数のデコードユニット20A−20C、複数のリザベーションステーション22A−22C、複数の機能ユニット24A−24C、ロード/ストアユニット26、データキャッシュ28、レジスタファイル30、リオーダバッファ32、MROMユニット34、およびバスインターフェイスユニット37を含む。ここで特定の参照番号およびこれに続く文字によって参照される要素は、集合的に参照番号のみにより参照される。たとえば、デコードユニット20A−20Cは、集合的にデコードユニット20と呼ばれる。
【0014】
プリフェッチ/プリデコードユニット12は、バスインターフェイスユニット37から命令を受取るように結合され、さらに命令キャッシュ16および分岐予測ユニット14に結合される。分岐予測ユニット14も同様に命令キャッシュ16に結合される。さらに分岐予測ユニット14はデコードユニット20および機能ユニット24に結合される。命令キャッシュ16はさらにMROMユニット34および命令アラインメントユニット18に結合される。命令アラインメントユニット18はデコードユニット20に結合される。各々のデコードユニット20A−20Cはロード/ストアユニット26に結合され、さらにそれぞれリザベーションステーション22A−22Cに結合される。リザベーションステーション22A−22Cはさらにそれぞれ機能ユニット24A−24Cに結合される。さらにデコードユニット20およびリザベーションステーション22は、レジスタファイル30およびリオーダバッファ32に結合される。機能ユニット24は、ロード/ストアユニット26、レジスタファイル30およびリオーダバッファ32に結合される。データキャッシュ28はロード/ストアユニット26およびバスインターフェイスユニット37に結合される。バスインターフェイスユニット37はさらにL2キャッシュへのL2インターフェイス、およびバスに結合される。最後に、MROMユニット34はデコードユニット20に結合される。
【0015】
命令キャッシュ16は、命令を記憶するために設けられる高速キャッシュメモリである。命令は命令キャッシュ16からフェッチされてデコードユニット20へ送られる。一実施例で命令キャッシュ16は、64バイトライン(1バイトは8個の2進ビットを含む)を有する2ウェイセットアソシアティブ構造の64キロバイトまでの命令を記憶するように構成される。これに代えて、その他のいかなる所望の構成およびサイズを採用してもよい。たとえば、命令キャッシュ16はフルアソシアティブ構成、セットアソシアティブ構成またはダイレクトマッピング構成で実現され得る。
【0016】
命令は、プリフェッチ/プリデコードユニット12によって命令キャッシュ16に記憶される。命令は、プリフェッチ機構に従って、命令キャッシュ16からのそのリクエストに先立ちプリフェッチされ得る。さまざまなプリフェッチ機構がプリフェッチ/プリデコードユニット12により用いられ得る。プリフェッチ/プリデコードユニット12が命令を命令キャッシュ16に転送する際、プリフェッチ/プリデコードユニット12は命令の各バイトにつき、スタートビット、エンドビットおよび機能ビットの3つのプリデコードビットを生成する。プリデコードビットは各命令の境界を示すタグを形成する。プリデコードタグはさらに、後により詳細に説明するように、所与の命令がデコードユニット20により直接デコードされ得るかどうか、または、命令が、MROMユニット34により制御されるマイクロコードプロシージャを呼出すことで実行されるかどうかなどの、追加の情報も運び得る。さらにプリフェッチ/プリデコードユニット12は、分岐命令を検出して、分岐命令に対応する分岐予測情報を分岐予測ユニット14に記憶するよう構成され得る。実施例によっていかなる好適なプリデコード機構を採用してもよい。
【0017】
次に、可変バイト長の命令セットを採用したプロセッサ10の一実施例のためのプリデコードタグの1つの符号化について説明する。可変バイト長の命令セットは、異なる命令が異なる数のバイトを占め得る命令セットである。プロセッサ10の一実施例で採用される可変バイト長命令セットの一例が、x86命令セットである。
【0018】
例示の符号化では、所与のバイトが命令の最初のバイトであれば、このバイトのスタートビットがセットされる。このバイトが命令の最後のバイトであれば、このバイトのエンドビットがセットされる。デコードユニット20により直接デコードされ得る命令を「ファーストパス」命令と呼ぶ。残りのx86命令は、一実施例に従うとMROM命令と呼ばれる。ファーストパス命令では、機能ビットは命令に含まれる各々のプレフィックスバイトについてはセットされ、その他のバイトについてはクリアされる。これに代えてMROM命令では、機能ビットは各プレフィックスバイトについてはクリアされ、その他のバイトについてはセットされる。命令の種類は、エンドバイトに対応する機能ビットを調べることで判断され得る。この機能ビットがクリアであれば、命令はファーストパス命令である。逆に、この機能ビットがセットされていれば命令はMROM命令である。こうして或る命令のオペコードは、命令内の第1のクリアである機能ビットと関連するバイトとしてデコードユニット20により直接デコードされ得る命令内に位置決めされ得る。たとえば、2つのプレフィックスバイト、ModR/Mバイトおよび即値(immediate)バイトを含むファーストパス命令は、以下のスタートビット、エンドビットおよび機能ビットを有し得る。
【0019】
スタートビット 10000
エンドビット  00001
機能ビット   11000
MROM命令は、デコードユニット20によるデコードのためにはあまりに複雑だと判断される命令である。MROM命令はMROMユニット34を呼出すことにより実行される。より具体的には、MROM命令に遭遇すると、MROMユニット34は解析を行ない、所望の動作が遂行されるように命令を、規定されたファーストパス命令のサブセットとして発行する。MROMユニット34はファーストパス命令のサブセットをデコードユニット20に送る。
【0020】
プロセッサ10は分岐予測を用いて、投機的に条件付き分岐命令の後の命令をフェッチする。分岐予測動作を行なうための分岐予測ユニット14が含まれる。一実施例で分岐予測ユニット14は分岐先バッファを用い、これは、2つまでの分岐先アドレスと、命令キャッシュ16にあるキャッシュラインの16バイト部分ごとに、対応する取られた/取られていない(taken/not taken)予測とをキャッシュする。分岐先バッファは、たとえば2048エントリ、またはその他のいかなる好適な数のエントリを含んでもよい。プリフェッチ/プリデコードユニット12は、特定のラインがプリデコードされると、最初の分岐先を判断する。キャッシュラインに対応する分岐先への後続の更新は、キャッシュライン内の命令の実行によって起こり得る。命令キャッシュ16はフェッチされている命令アドレスを示し、これにより分岐予測ユニット14は、どの分岐先アドレスを選択して分岐予測を形成するべきかを判断できる。デコードユニット20および機能ユニット24は分岐予測ユニット14に更新情報を与える。デコードユニット20は、分岐予測ユニット14により予測されなかった分岐命令を検出する。機能ユニット24は分岐命令を実行し、予測された分岐指示が正しくないかどうかを判断する。分岐指示は「取られる」ことがあり、この場合、後続の命令は分岐命令の目標アドレスからフェッチされる。逆に分岐指示は「取られない」こともあり、この場合、後続の命令は分岐命令の後のメモリロケーションからフェッチされる。誤って予測された分岐命令が検出されると、誤って予測された分岐の後の命令はプロセッサ10のさまざまなユニットから廃棄される。これに代わる構成では、分岐予測ユニット14は、デコードユニット20および機能ユニット24の代わりにリオーダバッファ32に結合されて、リオーダバッファ32から分岐誤予測情報を受取り得る。さまざまな好適な分岐予測アルゴリズムが分岐予測ユニット14により用いられ得る。
【0021】
命令キャッシュ16からフェッチされた命令は命令アラインメントユニット18に運ばれる。命令が命令キャッシュ16からフェッチされると、対応するプリデコードデータが走査され、フェッチされている命令に関する情報が命令アラインメントユニット18(およびMROMユニット34)に与えられる。命令アラインメントユニット18は、走査データを用いてデコードユニット20の各々に対して命令をアラインする。一実施例では、命令アラインメントユニット18は、8つの命令バイトからなる3つのセットからの命令を、デコードユニット20に対してアラインする。デコードユニット20Aは、(プログラム順序で)デコードユニット20Bおよび20Cにより並行して受取られる命令に先立つ命令を受取る。同様にデコードユニット20Bは、プログラム順序でデコードユニット20Cにより並行して受取られる命令に先立つ命令を受取る。
【0022】
デコードユニット20は、命令アラインメントユニット18から受取られた命令をデコードするよう構成される。レジスタオペランド情報が検出されてレジスタファイル30およびリオーダバッファ32へ送られる。加えて、命令が1つ以上のメモリ操作の実行を必要とする場合、デコードユニット20はメモリ操作をロード/ストアユニット26に送る。各命令は機能ユニット24のための制御値のセットへとデコードされ、これら制御値は、命令に含まれ得るオペランドアドレス情報、および変位または即値データとともに、リザベーションステーション22に送られる。特定の一実施例で各命令は、機能ユニット24A−24Cにより別個に実行され得る2つまでの動作にデコードされる。
【0023】
プロセッサ10はアウトオブオーダ実行を支援し、リオーダバッファ32を用いることで、レジスタの読み書き動作についての元のプログラムシーケンスを追跡し、レジスタのリネーミングを実現し、投機的な命令実行と分岐誤予測の回復とを可能にし、および正確な例外を容易にする。リオーダバッファ32内の一時的記憶ロケーションは、レジスタの更新を含む命令のデコードの際に予約され、こうして投機的レジスタ状態を記憶する。分岐予測が正しくない場合、誤って予測された経路にある投機的に実行された命令の結果は、レジスタファイル30に書込まれる前にバッファで無効化され得る。同様に、特定の命令が例外を引き起こす場合には、この特定の命令の後の命令は廃棄され得る。このように、例外は「正確」である(すなわち、例外を引き起こす特定の命令の後の命令は、例外に先立って完了されない)。なお、特定の命令は、これがプログラム順序でこの特定の命令に先行する命令より先に実行される場合には、投機的に実行される。先行する命令は分岐命令であることも、または例外を引き起こす命令であることもあり、この場合には投機的結果はリオーダバッファ32により廃棄され得る。
【0024】
デコードユニット20の出力で与えられる命令制御値および即値または変位データは、それぞれのリザベーションステーション22に直接送られる。一実施例では、各リザベーションステーション22は、対応する機能ユニットへの発行を待っている6つまでの保留中の命令について、命令情報(すなわち命令制御値ならびにオペランド値、オペランドタグおよび/または即値データ)を保持することができる。なお、図1の実施例では各リザベーションステーション22は専用の機能ユニット24と関連づけられる。したがって、3つの専用の「発行位置」がリザベーションステーション22および機能ユニット24により形成される。換言すると、発行位置0がリザベーションステーション22Aおよび機能ユニット24Aにより形成される。アラインされてリザベーションステーション22Aに送られた命令は機能ユニット24Aにより実行される。同様に、発行位置1がリザベーションステーション22Bおよび機能ユニット24Bにより形成され、発行位置2がリザベーションステーション22Cおよび機能ユニット24Cにより形成される。
【0025】
特定の命令のデコード時に、必要とされているオペランドがレジスタロケーションである場合にはレジスタアドレス情報がリオーダバッファ32およびレジスタファイル30に同時に送られる。当業者であれば、x86レジスタファイルは8つの32ビット実レジスタ(すなわち典型的にEAX、EBX、ECX、EDX、EBP、ESI、EDIおよびESPと呼ばれる)を含むことが理解されるであろう。x86プロセッサアーキテクチャを採用したプロセッサ10の実施例では、レジスタファイル30は32ビット実レジスタの各々についての記憶ロケーションを含む。MROMユニット34により用いられるための追加の記憶ロケーションがレジスタファイル30内に含まれることもある。リオーダバッファ32は、これらレジスタの内容を変化させる結果のための一時的な記憶ロケーションを含み、こうしてアウトオブオーダ実行を許す。リオーダバッファ32の一時記憶ロケーションは、実レジスタのうち1つの内容を変更するとデコード時に判断される各命令のために予約される。したがって、特定のプログラムの実行中のさまざまな時点でリオーダバッファ32は、投機的に実行される所与のレジスタの中身を含む、1つ以上のロケーションを有し得る。所与の命令のデコードの後に、所与の命令でオペランドとして用いられるレジスタに割当てられた以前のロケーションをリオーダバッファ32が有すると判断された場合、リオーダバッファ32は、1)最も新しく割当てられたロケーションにおける値、または、2)以前の命令を最終的に実行することになる機能ユニットによって値がまだ生成されていなければ、最も新しく割当てられたロケーションのためのタグを、対応するリザベーションステーションに送る。リオーダバッファ32が所与のレジスタに予約されたロケーションを有する場合、オペランド値(またはリオーダバッファのタグ)はレジスタファイル30ではなくリオーダバッファ32から与えられる。必要とされているレジスタに予約されたロケーションがリオーダバッファ32にない場合、値はレジスタファイル30から直接取られる。オペランドがメモリロケーションに対応する場合、オペランド値はロード/ストアユニット26を通じてリザベーションステーションに与えられる。
【0026】
特定の一実施例では、リオーダバッファ32は、並行してデコードされた命令をユニットとして記憶および操作するよう構成される。この構成をここで「ライン志向」と呼ぶ。いくつかの命令を一緒に操作することによって、リオーダバッファ32内に採用されるハードウェアを単純化できる。たとえば、この実施例に含まれるライン志向のリオーダバッファは、1つ以上の命令をデコードユニット20が送るたびに3つの命令(各デコードユニットから1つの命令)に関する命令情報のために十分な記憶場所を割当てる。これと対照的に、従来のリオーダバッファでは実際に送られる命令の数に依存してさまざまな量の記憶場所が割当てられる。このさまざまな量の記憶場所を割当てるためには、比較的多数の論理ゲートが必要となり得る。並行してデコードされた命令の各々が実行されると、命令の結果は同時にレジスタファイル30に記憶される。次に記憶場所は、並行してデコードされた命令のさらなるセットへの割当のために解放される。加えて、命令ごとに用いられる制御論理回路の量は、制御論理がいくつかの並行してデコードされる命令にわたって償却(amortized)されるので減少する。特定の命令を識別するリオーダバッファタグは、ラインタグおよびオフセットタグの2つのフィールドに分割され得る。ラインタグは、この特定の命令を含む並行してデコードされる命令のセットを識別し、オフセットタグはこのセット内のどの命令がこの特定の命令に対応するかを識別する。なお、レジスタファイル30に命令結果を記憶させて対応する記憶場所を解放することは、命令の「退避」と呼ばれる。さらに、プロセッサ10のさまざまな実施例でどのようなリオーダバッファ構成を採用してもよいことが注目される。
【0027】
既に述べたようにリザベーションステーション22は、命令が対応する機能ユニット24により実行されるまで命令を記憶する。命令は、(i)この命令のオペランドが与えられており、かつ(ii)同じリザベーションステーション22A−22C内にある、プログラム順序でこの命令の前の命令に、オペランドがまだ与えられていなければ、実行へと選択される。なお、命令が機能ユニット24のうち1つにより実行されると、この命令の結果は、この結果を待っている任意のリザベーションステーション22へ直接渡され、同時にこの結果がリオーダバッファ32の更新のために渡される(この技術は一般に「結果フォワーディング」と呼ばれている)。命令は、関連の結果がフォワーディングされるクロックサイクル中に実行へと選択されて機能ユニット24A−24Cへ渡され得る。リザベーションステーション22はこの場合フォワーディングされた結果を機能ユニット24に送る。命令が機能ユニット24により実行されるために多数の動作へとデコードされ得る実施例では、動作は互いに対し別個にスケジュールされ得る。
【0028】
一実施例では、機能ユニット24の各々は、加算および減算の整数演算、さらに桁送り、循環、論理演算、および分岐動作を行なうよう構成される。これら動作は、デコードユニット20によって特定の命令のためにデコードされる制御値に応答して実行される。なお、浮動小数点演算に対応するために浮動小数点ユニット(図示せず)も採用され得る。浮動小数点ユニットは、MROMユニット34またはリオーダバッファ32から命令を受取り、次にリオーダバッファ32と通信して命令を完了させる、コプロセッサとして動作し得る。加えて、機能ユニット24は、ロード/ストアユニット26により実行されるロードおよび記憶メモリ動作のためのアドレス生成を行なうよう構成され得る。特定の一実施例では、各機能ユニット24はアドレスを生成するためのアドレス生成ユニットと、残りの機能を行なうための実行ユニットとを含み得る。2つのユニットは、クロックサイクル中に異なった命令または動作に応じて独立に動作し得る。
【0029】
機能ユニット24の各々はさらに、条件付き分岐命令の実行に関する情報を分岐予測ユニット14に与える。分岐予測が正しくない場合、分岐予測ユニット14は、命令処理パイプラインに入った誤って予測された分岐の後の命令をフラッシュし、命令キャッシュ16または主メモリからの必要な命令のフェッチを引き起こす。なお、このような状況においては、誤って予測された分岐命令の後に起こる元のプログラムシーケンス内の命令の結果は、投機的に実行されロード/ストアユニット26およびリオーダバッファ32に一時的に記憶されていたものも含めて廃棄される。さらに、分岐実行の結果は機能ユニット24によりリオーダバッファ32に与えられ、これが機能ユニット24に対し分岐誤予測を示し得ることも注目される。
【0030】
機能ユニット24が生じさせた結果は、レジスタ値が更新されていればリオーダバッファ32へ、メモリロケーションの内容が変化していればロード/ストアユニット26へ送られる。結果がレジスタに記憶されるべき場合には、リオーダバッファ32は、命令がデコードされた時にレジスタの値のために予約されたロケーションに結果を記憶させる。結果を機能ユニット24およびロード/ストアユニット26からフォワーディングするための複数の結果バス38が含まれる。結果バス38は、生成された結果と、実行されている命令を識別するリオーダバッファタグとを運ぶ。
【0031】
ロード/ストアユニット26は、機能ユニット24とデータキャッシュ28との間のインターフェイスを与える。一実施例では、ロード/ストアユニット26は、データキャッシュ28にアクセスしていない保留中のロードまたはストアのためのデータおよびアドレス情報の記憶ロケーションを有する第1のロード/ストアバッファと、データキャッシュ28にアクセスしたロードおよび記憶のためのデータおよびアドレス情報の記憶ロケーションを有する第2のロード/ストアバッファとで構成される。たとえば、第1のバッファは12のロケーションを含み、第2のバッファは32のロケーションを含み得る。デコードユニット20はロード/ストアユニット26へのアクセスを裁定(arbitrate)する。第1のバッファが一杯であれば、デコードユニットは、ロード/ストアユニット26に保留中のロードまたは記憶リクエスト情報のための余裕ができるまで待つことになる。ロード/ストアユニット26はまた、保留中の記憶メモリ動作に照らしてロードメモリ動作の依存性検査を実行してデータ一貫性の維持を確実にする。メモリ動作は、プロセッサ10と主メモリサブシステムとの間のデータ転送である。メモリ動作は、メモリに記憶されたオペランドを利用する命令の結果であることも、データ転送を引き起こすが他の動作を引き起こさないロード/ストア命令の結果であることもある。加えて、ロード/ストアユニット26は、セグメントレジスタ、およびx86プロセッサアーキテクチャにより規定されるアドレス変換機構関連の他のレジスタなどの、特殊レジスタのための特殊レジスタ記憶を含み得る。
【0032】
データキャッシュ28は、ロード/ストアユニット26と主メモリサブシステムとの間で転送されているデータを一時的に記憶するために設けられる高速キャッシュメモリである。一実施例では、データキャッシュ28は2ウェイセットアソシアティブ構造の64キロバイトまでのデータを記憶する容量を有する。データキャッシュ28は、セットアソシアティブ構成、フルアソシアティブ構成、ダイレクトマッピング構成、およびあらゆる好適なサイズのあらゆる他の構成を含む、さまざまな特殊メモリ構成で実現され得ることが理解される。
【0033】
x86プロセッサアーキテクチャを採用したプロセッサ10の特定の一実施例では、命令キャッシュ16およびデータキャッシュ28は線形的にアドレス指定され、物理的にタグを付される。線形アドレスは、命令により指定されるオフセットと、x86アドレス変換機構のセグメント部分により指定される基準アドレスとから形成される。線形アドレスは任意には、主メモリにアクセスするために物理アドレスに変換され得る。線形から物理への変換は、x86アドレス変換機構のページング部分により指定される。物理アドレスは物理タグと比較されてヒット/ミス状態を判断する。
【0034】
バスインターフェイスユニット37は、バスを通じてプロセッサ10とコンピュータシステムの他の構成要素との間の通信を行なうよう構成される。たとえばバスは、デジタル・イクイップメント・コーポレーション(Digital Equipment Corporation)により開発されたEV−6バスと互換性があり得る。これに代えて、パケットベース、単方向または双方向リンクを含むあらゆる好適な相互接続構成を用いてもよい。二次キャッシュ(level two cache)へのインターフェイスのために、任意のL2キャッシュインターフェイスを採用してもよい。
【0035】
図2に移ると、TLBフラッシュフィルタを採用するプロセッサ10の一部の一実施例のブロック図が示される。TLBフラッシュフィルタ40は、ロード/ストアユニット26、バスインターフェイスユニット37、L1キャッシュ25、およびTLB39に結合される。L1キャッシュ25はたとえば、命令キャッシュ16およびデータキャッシュ28を含み得る。実施例によっては、L1キャッシュ25の命令キャッシュ16およびデータキャッシュ28の各々は、これら自身の別個のTLBと関連付けられ得る。これらTLBは各キャッシュに一体化され得る。ロード/ストアユニット26はレジスタファイル30に結合される。レジスタファイル30のレジスタの中には基準アドレスレジスタ301がある。基準アドレスレジスタ301は、現在実行中のコンテキストのためのページテーブルの基準アドレスを記憶し得る。これに代えて基準アドレスレジスタ301は、ページディレクトリポインタテーブルの基準アドレス、または現在実行中のコンテキストに関連する他のアドレス情報を記憶することもある。基準アドレスレジスタ301はコンテキストスイッチ中に更新され得る。
【0036】
TLBフラッシュフィルタは、TLB39にロードされ得るアドレス変換を含むメモリブロックを監視するよう構成される。TLBフラッシュフィルタ40は、監視されているメモリブロックにおいて1つ以上のアドレス変換に対する変化を検出すると、次のコンテキストスイッチに続いてTLB39のフラッシュを許すであろう。ここに示す実施例では、TLB39のフラッシュを許すためにTLBフラッシュフィルタは無効化信号をアサートし得る。ロード/ストアユニット26もまた、信号(ここではLS TLB無効化として示す)をアサートすることによりTLB39のフラッシュを引き起こし得る。この信号は、ロード/ストアユニット26によりアサートされると、TLB39の無条件フラッシュを引き起こすか、または次のコンテキストスイッチでTLBのフラッシュを許すことになる。無条件フラッシュのいくつかの可能な原因については、後に図5を参照して論じる。
【0037】
TLBフラッシュフィルタ40は最初のコンテキストスイッチにより活性化され得る。この最初のコンテキストスイッチは、コンピュータシステムの最初のブート後、またはフラッシュフィルタの非活性化の後に起こり得る。最初のコンテキストスイッチの結果TLB39のフラッシュが起こり得る。最初のコンテキストスイッチの後は、TLB39のフラッシュはTLBフラッシュフィルタ40によりフィルタされ得る。
【0038】
TLBフラッシュフィルタ40はバスインタフェースユニット37に結合され、監視するメモリブロックに関する情報を受取ることができる。ここに示す実施例では、TLBフラッシュフィルタ40はバスインタフェースユニット37からページディレクトリエントリを受取ることができる。さまざまな実施例においてTLBフラッシュフィルタ40はまた、ページディレクトリエントリ、ページディレクトリポインタ、ページテーブル、またはアドレス変換に用いられ得る他のデータ構造に関する、情報を受取り得る。一般に、アドレス変換情報を記憶するメモリブロックのいかなるアドレスも、バスインターフェイスユニット37によりTLBフラッシュフィルタ40に与えられ得る。TLBフラッシュフィルタ40はまた、(後に詳細に説明する)領域テーブルの探索のために、バスインターフェイスユニット37からスヌープ(またはプローブ)リクエスト信号およびスヌープアドレスを受取り得る。TLBフラッシュフィルタ40はまた、コンテキストスイッチが生じたときにロード/ストアユニット26から通知を受取ることができるが、これはロード/ストアユニットが特殊レジスタバス(SRB)リングを巡って基準アドレスレジスタ301に記憶される新たなアドレスを伝搬できることによる。
【0039】
一般にSRBリングは、特殊レジスタとの通信に用いられ得るバスである。さまざまな特殊レジスタがプロセッサ全体にわたりさまざまなユニットに位置し得る。ここに示す実施例では、ロード/ストアユニット26はSRBリングのバスマスタとして働き、こうして特殊レジスタにかかわる読み書き動作を制御することができる。SRBリングの実現により、特殊レジスタを、これを用いる論理付近に置きかつロード/ストアユニット26の制御下に置くことが可能となるであろう。
【0040】
次に図3を参照して、TLBフラッシュフィルタの一実施例のブロック図が示される。TLBフラッシュフィルタ40はリングノード401、領域テーブル402およびフィルタ回路403を含む。フィルタ回路403はTLB39に結合され、TLBを無効化またはフラッシュする信号をアサートし得る。領域テーブル402は内容参照可能メモリ(CAM)およびランダムアクセスメモリ(RAM)を含む。領域テーブル402のCAM部分は、ページディレクトリポインタなどのアドレスおよび関連のタグを記憶するのに用いられ、さらに基準アドレスレジスタ301(図2)からの基準アドレスを記憶し得る。領域テーブルのRAM部分は典型的に、基準アドレスレジスタ301からの基準アドレスに関連するタグを記憶する。CAMおよびRAMエントリについては下でさらに詳細に論じる。
【0041】
領域テーブル402へのエントリは、リングノード401およびマルチプレクサ407を通じてTLBフラッシュフィルタ40に受取られ得る。マルチプレクサ407はまた、ここに示すようにページディレクトリエントリ(PDE)属性など他の情報を受取るのにも用いられる。マルチプレクサ407を通じて受取られた情報は次にCAMまたはRAMのいずれかに記憶され得る。領域テーブル402からの情報もまた、リングノード401を通じてSRBリングへ伝搬され得る。
【0042】
2つのカウンタがさらに領域テーブル402に関連付けられる。領域カウンタ404は、CAMへのエントリの数を計数するよう構成され、一方で基準アドレスレジスタカウンタ405は基準アドレスレジスタタグの数を計数するよう構成される。これらカウンタの各々は、領域テーブルにある利用可能なリソースを追跡する。領域テーブルに利用可能なリソースがなくなると、カウンタのうち1つがオーバーフロー信号をアサートすることになる。たとえば、各々のCAMエントリが一杯であれば、領域カウンタはオーバーフロー信号をアサートするであろう。オーバーフロー信号は、TLBフラッシュフィルタを非活性化するのに用いられ得る。同様に、利用可能なタグが基準アドレスレジスタカウンタのためにすべて用いられると、これもまたオーバーフローしてオーバーフロー信号をアサートし、これはTLBフラッシュフィルタを非活性化することになる。TLBフラッシュフィルタ40の非活性化の後の最初のコンテキストスイッチの結果、TLBフラッシュが起こるだろう。TLBフラッシュフィルタ40が非活性化される際には、両方のカウンタが制御論理406によりリセットされるであろう。
【0043】
既に述べたように、領域テーブル402はTLBフラッシュフィルタ40の動作中に複数のエントリを記憶するよう構成される。領域テーブル402のエントリは、ページテーブル、またはTLB39にアドレス変換をロードするのに用いられ得る他のデータ構造に対する、変更を検出するのに用いられ得る。ページテーブルまたはその他のデータ構造が変化したことを検出するために、バスインターフェイスユニット37(図1)は領域テーブルをプローブ(すなわちスヌープ)してもよい。領域テーブルのプローブはプロセッサ内の一貫性プロトコルの機能であってもよい。一般に、スヌープアドレスは領域テーブル(たとえばCAM)に記録されたアドレスと比較される。領域テーブルのプローブの結果がヒットであり、かつこのプローブが、TLBフラッシュフィルタ40により監視されているメモリブロックにあるデータを変更することになるメモリアクセスについてのもの(これはTLBにアドレス変換をロードするのに用いられるデータがおそらく変更されたことを示す)であれば、次のコンテキストスイッチの結果TLB39のフラッシュが生じることになる。ここに示す実施例では、フィルタ回路403が無効化信号をアサートすると、TLBフラッシュが起こってTLB39に現在記憶されているすべてのエントリが無効化されることになる。典型的に、領域テーブルの探索の結果として、CAMに記憶されたエントリのうち1つについて一致があれば、ヒットの結果が生じる。プローブの結果ヒットがなければ、TLBフラッシュフィルタ40は次のコンテキストスイッチの後のTLBフラッシュを防ぐであろう。
【0044】
次に図4に移ると、TLBフラッシュフィルタの一実施例の領域テーブルエントリを例示する図が示される。各領域テーブルエントリはCAMエントリ402−CおよびRAMエントリ402−Rを含む。CAMエントリ402−Cは、有効ビット(V)、ページディレクトリポインタ(PDP)ビットおよびタグを含む。その他のさまざまな実施例では、CAMエントリはさらに、属性および保護情報などの、メモリアドレスと関連する他の種類の情報をも含み得る。CAMエントリ402−Cのタグは典型的に、TLBにあるアドレス変換に対応するアドレスである。このアドレスはたとえば、ページディレクトリポインタであっても、ページディレクトリエントリからのページテーブルポインタまたは基準アドレスレジスタからの基準アドレスであってもよい。一実施例では、アドレスはメモリの物理アドレスに対応する線形アドレスであり得る。タグにより示されるアドレスがページディレクトリポインタのためのものであれば、PDPビットがセットされるだろう。タグにより示されるアドレスがページディレクトリエントリのためのものであれば、PDPビットはクリアになる。タグにより示されるアドレスがTLBまたはページテーブルのいずれかに記憶されたアドレス変換のために有効であることを示すために、有効ビットがセットされ得る。CAMエントリにより記憶されるアドレスは、上述のようにバスインターフェイスユニットによりプローブされることによって、そこからアドレス変換がTLBにロードされた、ページテーブルまたはその他のデータ構造に変更が生じたかどうかをTLBフラッシュフィルタ40が判断することを可能にする。
【0045】
RAMエントリ402−Rは、有効ビットおよび基準アドレスレジスタタグを含む。ここに示す実施例では、基準アドレスレジスタタグは、CAMに記憶されている基準アドレスレジスタエントリと関連付けられていてもよい。CAMに記憶される基準アドレス値は、以前に遭遇したコンテキストまたは現在実行中のコンテキストのページテーブル(またはその他のデータ構造)のための基準アドレスであり得る。この実施例の基準アドレスレジスタタグは、単に基準アドレスに対応する数である。(典型的に各コンテキストスイッチとともに生じる)基準アドレスレジスタの変化のたびに、レジスタの新たな値は、領域テーブルに記憶されている最後のTLBフラッシュ以降に生じた古い値と比較される。一致が見つからない(すなわちミスである)場合、レジスタの値はタグを割当てられてCAMに記憶され、関連のタグはRAMに記憶され得る。一致は、レジスタの現在の値が既に領域テーブルに記憶されていることを示す。したがって、以前に遭遇したコンテキストがプロセッサにより再開されると、以前に用いられたアドレス変換が再び用いられ得る。一致があれば新たなタグを割当てる必要はない。
【0046】
図5は、フィルタ回路403の一実施例を動作させるための論理を例示する論理図である。フィルタ回路403は、或る条件が満たされたときにのみTLBのフラッシュが起こることを可能にする論理を含む。フィルタ回路403は、図1のロード/ストアユニット206からLS TLB無効化信号およびLS TLB無効化M信号を受取るよう構成される。LS TLB無効化信号は、TLBフラッシュフィルタが活性化されているかどうかにかかわらずTLBの無条件フラッシュを引き起こし得る。プロセッサの動作におけるさまざまな変化がTLBのフラッシュを余儀なくさせる。これらの条件は、ページングのターンオフ、グローバルページングのターンオン、メモリタイプの変化、またはメモリ属性の変化を含むがこれらに限定はされない。LS TLB無効化信号は、アサートされると図のORゲートおよびDフリップフロップを通じて伝搬することになる。次にこれによって、FF TLB無効化信号(この信号は図2および図3に示す無効化信号の均等物である)のアサートが引き起こされ、こうして次のコンテキストスイッチの後のTLBフラッシュを許す。
【0047】
LS TLB無効化M信号は、変更が起こった場合にTLBをフラッシュすべきであることを示すのに用いられ得る。この信号は、TLBフラッシュフィルタが活性化されると、論理ハイ状態に保たれるであろう。変更は、基礎となるアドレス変換に対する変化、またはフラッシュフィルタの状態の変化(カウンタがオーバーフローしたときなど)を含み得る。LS TLB無効化M信号が論理ハイとしてアサートされ、かつ/CLR信号がローとしてアサート(およびANDゲートへのその入力前に反転)されると、FF TLB無効化信号はアサートされ得る。
【0048】
/CLR信号は、いくつかの異なった条件のうち1つによって論理ロー状態へと駆動され得る。これらの条件は実施例によって変わるだろう。ここに示す実施例では、このような条件は、フラッシュフィルタのリセット(リセット信号)、ページデータの変更(図3でヒット信号として示すページデータ変更信号)、カウンタのうちいずれかのオーバーフロー(領域カウンタオーバーフロー信号、基準アドレスレジスタカウンタオーバーフロー信号)、またはフラッシュフィルタをディスエーブルするための信号(フラッシュフィルタディスエーブル信号)を含み得る。図5の論理回路に、これらの条件の各々についての信号がある。/CLR信号は、ここに示す実施例では典型的に論理ハイ状態に保たれ、フィードバック回路(ORゲートを含む)を通じて伝搬して図に示す7入力ANDゲートへの入力となる。FF TLB無効化信号もまた、アサートされるとフィードバック回路およびORゲートを通じて伝搬し得る。条件のうちいずれの論理ハイ状態への駆動も、結果として(インバータによる)ANDゲートへの論理ロー入力をもたらし、これにより/CLR信号がその論理ロー状態でアサートされることを引き起こす。
【0049】
次に図6に移ると、TLBフラッシュフィルタの一実施例の動作を例示するタイミング図が示される。図はフラッシュフィルタの基本的な動作を例示することを意図したものであり、すべての可能な条件または起こり得る結果を包含することを意図してはいない。さらに、図はフラッシュフィルタの実現にかかわる特定の詳細を特徴付けることを意図してはおらず、これは実施例が異なれば変わり得る。
【0050】
TLBフラッシュフィルタは最初のコンテキストスイッチによりまず活性化され得る。最初のコンテキストスイッチの前にはフラッシュフィルタが活性化されていないため、フィルタされていないTLBフラッシュが結果として生じ得る。最初のコンテキストスイッチの後、ページテーブルAがメモリにロードされる。ページテーブルAは新たなコンテキストと関連付けられ、こうしてこのページテーブルに対応するエントリが図3の領域テーブルにロードされることになるが、これは対応するアドレス変換がTLBにロードされるからである。ページテーブルAのロードの後、さらなるコンテキストスイッチが起こる。この場合には、TLBフラッシュは活性化されたTLBフラッシュフィルタにより防がれている。これは、フラッシュを必然的に伴うであろう条件がコンテキストスイッチ間に起こらなかったことを示すものであろう。ここに示す例では、コンテキストスイッチの間にページテーブルAに対する変更は行われていない。
【0051】
2回目のコンテキストスイッチの後、ページテーブルBがメモリにロードされる。ページテーブルBはアドレス変換を含むことがあり、これらのうちいくつかはTLBにロードされ得る。ページテーブルBがメモリにロードされた後、ページテーブルBが変更される。したがって、ページテーブルBからTLBにロードされたアドレス変換のいくつかがもはや有効でないこともあり得る。したがってTLBフラッシュフィルタは、TLBフラッシュ(ここでフィルタされたフラッシュとして示す)が次のコンテキストスイッチの後に生じることを可能にし得る。
【0052】
フィルタされたフラッシュの後に起こる次のイベントは、ページテーブルCのロードである。図3を参照して論じたように、領域カウンタは領域テーブルのCAM部分を追跡し、さらなるエントリのための空間が領域テーブルになくなるとオーバーフローする。ここに示す図では、これはページテーブルCのロードの後に起こり、こうして領域カウンタのオーバーフローが引き起こされる。領域カウンタのオーバーフローはTLBフラッシュフィルタの非活性化を引き起こし得る。非活性化の後の最初のコンテキストスイッチがあると、TLBはフラッシュされ得る。この最初のコンテキストスイッチはさらにTLBフラッシュフィルタの再活性化を引き起こし得る。
【0053】
図7Aおよび図7Bは、領域テーブルでのエントリによってカバーされるページング構造と、TLBフラッシュフィルタ40の一実施例のためのページング構造に対応するエントリを有する領域テーブルとを例示するブロック図である。図7Aでは、基準アドレスレジスタ301はページディレクトリポインタの領域(R)を指し示すアドレスを記憶し得る。領域にある各々のエントリがページディレクトリを指し示す。
【0054】
次に図8を参照して、バスブリッジ202を通じさまざまなシステム構成要素に結合されたプロセッサ10を含むコンピュータシステム200の一実施例のブロック図が示される。その他の実施例が可能であり企図されている。ここに示すシステムでは、主メモリ204はメモリバス206を通じてバスブリッジ202に結合され、グラフィックスコントローラ208はAGPバス210を通じてバスブリッジ202に結合される。最後に、複数のPCI機器212A−212BがPCIバス214を通じてバスブリッジ202に結合される。EISA/ISAバス220を通じ1つ以上のEISAまたはISA機器218への電気的インターフェイスをもたらすために、副バスブリッジ216がさらに設けられ得る。プロセッサ10は、CPUバス224を通じてバスブリッジ202へ、および任意のL2キャッシュ228へ結合される。
【0055】
バスブリッジ202は、プロセッサ10と、主メモリ204と、グラフィックスコントローラ208と、PCIバス214に結び付けられた機器との間のインターフェイスを与える。バスブリッジ202に接続された装置のうち1つから動作が受取られると、バスブリッジ202は動作の対象(たとえば特定の装置、または、PCIバス214の場合には、対象はPCIバス214上にある)を識別する。バスブリッジ202は動作を対象とされた装置へとルート付けする。バスブリッジ202は一般に、出所である装置またはバスにより用いられるプロトコルから、対象の装置またはバスにより用いられるプロトコルへ、動作を変換する。
【0056】
副バスブリッジ216は、PCIバス214にISA/EISAバスへのインターフェイスを与えることに加えて、望みに応じて追加の機能をさらに組込み得る。望みに応じて、キーボードおよびマウス222ならびにさまざまなシリアルポートおよびパラレルポートに動作的支援を与えるために、副バスブリッジ216の外部の、またはこれと一体化された入力/出力コントローラ(図示せず)が、コンピュータシステム200内にさらに含まれ得る。実施例によっては、外部キャッシュユニット(図示せず)がさらにプロセッサ10とバスブリッジ202との間でCPUバス224に結合され得る。これに代えて、外部キャッシュはバスブリッジ202に結合され、外部キャッシュのためのキャッシュ制御論理がバスブリッジ202に一体化されてもよい。L2キャッシュ228はさらにプロセッサ10への後方構成として示される。なお、L2キャッシュ228はプロセッサ10とは別個であっても、プロセッサ10とともにカートリッジ(たとえばスロット1またはスロットA)へと一体化されても、またはプロセッサ10と半導体基板上で集積化されてもよい。
【0057】
主メモリ204は、アプリケーションプログラムが記憶されるメモリであり、プロセッサ10は主にここから実行を行なう。好適な主メモリ204はDRAM(Dynamic Random Access Memory)を含む。たとえば、複数のSDRAM(Synchronous DRAM)またはランバス(Rambus)DRAM(RDRAM)のバンクが好適であろう。
【0058】
PCI機器212A−212Bはさまざまな周辺機器、たとえばネットワークインターフェイスカード、ビデオアクセラレータ、オーディオカード、ハードディスクドライブもしくはフロッピー(R)ディスクドライブまたはドライブコントローラ、SCSI(Small Computer Systems Interface)アダプタ、および電話カードなどを例示する。同様に、ISA機器218はさまざまな種類の周辺機器、たとえばモデム、サウンドカード、および、GPIBまたはフィールドバスインターフェイスカードなどのさまざまなデータ収集カードを例示する。
【0059】
グラフィックスコントローラ208は、ディスプレイ226上のテキストおよび画像の生成を制御するために設けられる。グラフィックスコントローラ208は、主メモリ204へ、またはここから効果的にシフトされ得る3次元データ構造をもたらすための、当該技術で周知の典型的なグラフィックスアクセラレータを具体化したものでもよい。こうして、バスブリッジ202内のターゲットインターフェイスへのアクセスをリクエストし受取って主メモリ204へのアクセスを得ることができるという点で、グラフィックスコントローラ208はAGPバス210のマスタとなり得る。専用のグラフィックスバスであれば主メモリ204からのデータの素早い検索に対応できる。或る動作のために、グラフィックスコントローラ208はさらにAGPバス210上にPCIプロトコルトランザクションを生成するよう構成され得る。バスブリッジ202のAGPインターフェイスはしたがって、AGPプロトコルトランザクションと、PCIプロトコルターゲットおよびイニシエータトランザクションとの両方を支援する機能を含み得る。ディスプレイ226は、画像またはテキストが提示され得るどのような電子ディスプレイであってもよい。好適なディスプレイ226は陰極線管(「CRT」)、液晶ディスプレイ(「LCD」)などを含む。
【0060】
なお、上の説明ではAGP、PCIおよびISAまたはEISAバスを例として用いたが、望みに応じてどのようなバスアーキテクチャを代用してもよい。さらに、コンピュータシステム200は追加のプロセッサ(たとえばコンピュータシステム200の任意の構成要素として示すプロセッサ10a)を含む多重処理コンピュータシステムであってもよい。プロセッサ10aはプロセッサ10と類似のものであり得る。より具体的には、プロセッサ10aはプロセッサ10と同一のコピーでもよい。プロセッサ10aは、独立のバス(図5に示す)を通じてバスブリッジ202に接続されても、またはプロセッサ10とCPUバス224を共有してもよい。さらに、プロセッサ10aは、L2キャッシュ228に類似の任意のL2キャッシュ228aに結合され得る。
【0061】
特定の実施例を参照してこの発明を説明したが、これら実施例は例示的なものであり、発明の範囲はこのように限定されないことが理解されるであろう。これら実施例に対するいかなる変更、変形、追加、および改良も可能である。これらの変更、変形、追加、および改良は、前掲の特許請求の範囲で詳細に示したこの発明の範囲内であり得る。
【0062】
【産業上の利用可能性】
この発明は、マイクロプロセッサおよび変換索引バッファに適用可能である。
【図面の簡単な説明】
【図1】TLBフラッシュフィルタが実現され得るプロセッサの一実施例を示すブロック図である。
【図2】TLBフラッシュフィルタを採用したプロセッサの一部の一実施例を示すブロック図である。
【図3】TLBフラッシュフィルタの一実施例を示すブロック図である。
【図4】TLBフラッシュフィルタの一実施例のための領域テーブルエントリを例示する図である。
【図5】TLBフラッシュフィルタの一実施例を動作させるための論理を例示する論理図である。
【図6】TLBフラッシュフィルタの一実施例の動作を例示するタイミング図である。
【図7A】領域テーブルにあるエントリによりカバーされるページング構造を例示するブロック図である。
【図7B】図7Aに示すページング構造に対応するエントリを有する領域テーブルを例示するブロック図である。
【図8】TLBフラッシュフィルタが実現され得るコンピュータシステムの一実施例を示すブロック図である。

Claims (10)

  1. アドレス変換を記憶するための変換索引バッファ(TLB)(39)と、
    前記TLBに結合されたTLBフラッシュフィルタ(40)とを含むプロセッサであって、前記TLBフラッシュフィルタは、メモリブロックであってそこから前記アドレス変換が読出されて前記TLBにキャッシュされるものを監視して、前記メモリブロックにある前記アドレス変換のうちいずれかが変化したかどうかを判断するように構成され、前記TLBフラッシュフィルタはさらに、コンテキストスイッチに応答して、前記アドレス変換が変化した場合には前記TLBがフラッシュされることを許すよう構成され、前記TLBフラッシュフィルタは、前記アドレス変換が変化しなかった場合には前記TLBのフラッシュを防ぐよう構成される、プロセッサ。
  2. 前記TLBフラッシュフィルタ(40)は最初のコンテキストスイッチにより活性化される、請求項1に記載のプロセッサ。
  3. 前記最初のコンテキストスイッチは前記TLB(39)のフラッシュを引き起こす、請求項2に記載のプロセッサ。
  4. 前記TLBフラッシュフィルタは、前記メモリブロックを追跡するための領域テーブル(402)を含む、請求項1に記載のプロセッサ。
  5. 前記TLBフラッシュフィルタ(40)は、前記メモリブロック内のメモリロケーションについての変更を検出するよう構成され、前記TLBフラッシュフィルタは、次のコンテキストスイッチに応答しかつ前記メモリロケーションについての前記変更の検出に応答して、前記TLBのフラッシュを許すように構成される、請求項4に記載のプロセッサ。
  6. 前記領域テーブル(402)は、内容参照可能メモリ(CAM)およびランダムアクセスメモリ(RAM)を含む、請求項4に記載のプロセッサ。
  7. 前記CAMは複数のエントリを記憶するよう構成され、前記複数のエントリの各々は、前記メモリブロックと関連するアドレス情報を含む、請求項6に記載のプロセッサ。
  8. プロセッサを動作させる方法であって、前記方法は、
    変換索引バッファ(TLB)(39)にアドレス変換を記憶させるステップを含み、前記アドレス変換は1つ以上のメモリブロックから前記TLBにロードされ、前記方法はさらに、
    前記1つ以上のメモリブロックに記憶されたアドレス変換のうちいずれかが変化したかどうかを判断するステップと、
    前記1つ以上のメモリブロックに記憶された前記アドレス変換のうちいずれかが変化すれば前記TLBをフラッシュするステップとを含み、前記フラッシュはコンテキストスイッチに応答し、前記方法はさらに、
    前記1つ以上のメモリブロックに記憶された前記アドレス変換のうちいずれも変化しなければコンテキストスイッチに応答する前記TLBのフラッシュを防ぐステップを含み、前記TLBのフラッシュはTLBフラッシュフィルタ(40)により防がれる、方法。
  9. 前記TLBフラッシュフィルタ(40)は最初のコンテキストスイッチにより活性化される、請求項8に記載の方法。
  10. 前記最初のコンテキストスイッチは前記TLB(39)のフラッシュを引き起こす、請求項9に記載の方法。
JP2002511180A 2000-06-15 2001-03-09 変換索引バッファのフラッシュフィルタ Expired - Fee Related JP4437001B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/595,597 US6510508B1 (en) 2000-06-15 2000-06-15 Translation lookaside buffer flush filter
PCT/US2001/007591 WO2001097043A1 (en) 2000-06-15 2001-03-09 A translation lookaside buffer flush filter

Publications (3)

Publication Number Publication Date
JP2004503870A true JP2004503870A (ja) 2004-02-05
JP2004503870A5 JP2004503870A5 (ja) 2008-03-21
JP4437001B2 JP4437001B2 (ja) 2010-03-24

Family

ID=24383899

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002511180A Expired - Fee Related JP4437001B2 (ja) 2000-06-15 2001-03-09 変換索引バッファのフラッシュフィルタ

Country Status (8)

Country Link
US (1) US6510508B1 (ja)
EP (1) EP1290562B1 (ja)
JP (1) JP4437001B2 (ja)
KR (1) KR100804285B1 (ja)
CN (1) CN1304962C (ja)
DE (1) DE60102017T2 (ja)
TW (1) TW561341B (ja)
WO (1) WO2001097043A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011181095A (ja) * 2004-07-30 2011-09-15 Intel Corp アーキテクチャイベントの間のプロセッサリソースの保持

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE0003446L (sv) * 2000-09-27 2002-03-28 Ericsson Telefon Ab L M En pipelinemikroprocessor och ett förfarnade relaterande därtill
US6907600B2 (en) * 2000-12-27 2005-06-14 Intel Corporation Virtual translation lookaside buffer
US6910097B1 (en) * 2001-04-09 2005-06-21 Netlogic Microsystems, Inc. Classless interdomain routing using binary content addressable memory
US6622211B2 (en) * 2001-08-15 2003-09-16 Ip-First, L.L.C. Virtual set cache that redirects store data to correct virtual set to avoid virtual set store miss penalty
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7089396B2 (en) * 2002-10-10 2006-08-08 International Business Machines Corporation Method and profiling cache for management of virtual memory
US7552255B1 (en) 2003-07-30 2009-06-23 Intel Corporation Dynamically partitioning pipeline resources
US7552254B1 (en) * 2003-07-30 2009-06-23 Intel Corporation Associating address space identifiers with active contexts
US7069389B2 (en) * 2003-11-26 2006-06-27 Microsoft Corporation Lazy flushing of translation lookaside buffers
US7711898B2 (en) * 2003-12-18 2010-05-04 Intel Corporation Register alias table cache to map a logical register to a physical register
US7082486B2 (en) * 2004-01-14 2006-07-25 International Business Machines Corporation Method and apparatus for counting interrupts by type
US20050273575A1 (en) * 2004-06-02 2005-12-08 Mukherjee Shubhendu S Mechanism to invalidate data translation buffer entries a multiprocessor system
WO2006123351A1 (en) 2005-04-11 2006-11-23 Hewlett-Packard Development Company L.P. Tlb page fault handler and dump manager
US7823151B2 (en) * 2005-06-15 2010-10-26 Intel Corporation Method of ensuring the integrity of TLB entries after changing the translation mode of a virtualized operating system without requiring a flush of the TLB
US7606363B1 (en) 2005-07-26 2009-10-20 Rockwell Collins, Inc. System and method for context switching of a cryptographic engine
US7634642B2 (en) * 2006-07-06 2009-12-15 International Business Machines Corporation Mechanism to save and restore cache and translation trace for fast context switch
US7631147B2 (en) * 2006-12-06 2009-12-08 Microsoft Corporation Efficient flushing of translation lookaside buffers in a multiprocessor environment
US20080263256A1 (en) * 2007-04-20 2008-10-23 Motorola, Inc. Logic Device with Write Protected Memory Management Unit Registers
US8538000B2 (en) * 2007-08-10 2013-09-17 Tekelec, Inc. Methods, systems, and computer program products for performing message deposit transaction screening
US8601234B2 (en) 2007-11-07 2013-12-03 Qualcomm Incorporated Configurable translation lookaside buffer
US7937556B2 (en) * 2008-04-30 2011-05-03 Oracle America, Inc. Minimizing TLB comparison size
US8140825B2 (en) * 2008-08-05 2012-03-20 International Business Machines Corporation Systems and methods for selectively closing pages in a memory
US9524248B2 (en) * 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US9081707B2 (en) * 2012-12-29 2015-07-14 Intel Corporation Apparatus and method for tracking TLB flushes on a per thread basis
US9886391B2 (en) * 2014-03-20 2018-02-06 International Business Machines Corporation Selective purging of PCI I/O address translation buffer
US9317443B2 (en) 2014-04-17 2016-04-19 International Business Machines Corporation Managing translations across multiple contexts using a TLB with entries directed to multiple privilege levels and to multiple types of address spaces
US9323692B2 (en) 2014-04-17 2016-04-26 International Business Machines Corporation Managing translation of a same address across multiple contexts using a same entry in a translation lookaside buffer
US20160179726A1 (en) * 2014-12-17 2016-06-23 Qualcomm Incorporated Programming hardware registers using a pipelined register bus, and related methods, systems, and apparatuses
US10599566B2 (en) * 2016-11-29 2020-03-24 Qualcomm Incorporated Multi-mode cache invalidation
US10353825B2 (en) 2017-06-16 2019-07-16 International Business Machines Corporation Suspending translation look-aside buffer purge execution in a multi-processor environment
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
US10776281B2 (en) * 2018-10-04 2020-09-15 International Business Machines Corporation Snoop invalidate filter for distributed memory management unit to reduce snoop invalidate latency

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US602148A (en) * 1898-04-12 John- w
US4053948A (en) 1976-06-21 1977-10-11 Ibm Corporation Look aside array invalidation mechanism
JPS5687282A (en) 1979-12-14 1981-07-15 Nec Corp Data processor
US4669043A (en) 1984-02-17 1987-05-26 Signetics Corporation Memory access controller
US5060137A (en) 1985-06-28 1991-10-22 Hewlett-Packard Company Explicit instructions for control of translation lookaside buffers
GB2210479B (en) 1987-10-02 1992-06-17 Sun Microsystems Inc Alias address support.
US5428757A (en) 1992-04-29 1995-06-27 International Business Machines Corporation Method for reducing translation look aside buffer purges in a multitasking system
DE69427734T2 (de) 1993-10-29 2002-05-23 Advanced Micro Devices Inc Linearadressierter Mikroprozessorcachespeicher
US5680572A (en) 1994-02-28 1997-10-21 Intel Corporation Cache memory system having data and tag arrays and multi-purpose buffer assembly with multiple line buffers
US5671444A (en) 1994-02-28 1997-09-23 Intel Corporaiton Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers
DE19516949A1 (de) * 1994-05-11 1996-02-15 Gmd Gmbh Speichervorrichtung zum Speichern von Daten
ZA954460B (en) 1994-09-30 1996-02-05 Intel Corp Method and apparatus for processing memory-type information within a microprocessor
US5752274A (en) 1994-11-08 1998-05-12 Cyrix Corporation Address translation unit employing a victim TLB
US5682495A (en) 1994-12-09 1997-10-28 International Business Machines Corporation Fully associative address translation buffer having separate segment and page invalidation
US5924125A (en) 1995-08-01 1999-07-13 Arya; Siamak Method and apparatus for parallel access to consecutive TLB entries
US5895501A (en) 1996-09-03 1999-04-20 Cray Research, Inc. Virtual memory system for vector based computer systems
US5809563A (en) * 1996-11-12 1998-09-15 Institute For The Development Of Emerging Architectures, Llc Method and apparatus utilizing a region based page table walk bit
US6021481A (en) 1997-11-10 2000-02-01 International Business Machines Corporation Effective-to-real address cache managing apparatus and method

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011181095A (ja) * 2004-07-30 2011-09-15 Intel Corp アーキテクチャイベントの間のプロセッサリソースの保持
US8543793B2 (en) 2004-07-30 2013-09-24 Intel Corporation Maintaining processor resources during architectural events
US8788790B2 (en) 2004-07-30 2014-07-22 Intel Corporation Maintaining processor resources during architectural events
US8806172B2 (en) 2004-07-30 2014-08-12 Intel Corporation Maintaining processor resources during architectural evens
JP2015084260A (ja) * 2004-07-30 2015-04-30 インテル コーポレイション プロセッサ及びシステム
US9086958B2 (en) 2004-07-30 2015-07-21 Intel Corporation Maintaining processor resources during architectural events
US9152561B2 (en) 2004-07-30 2015-10-06 Intel Corporation Maintaining processor resources during architectural events
US9164901B2 (en) 2004-07-30 2015-10-20 Intel Corporation Maintaining processor resources during architectural events
US9164918B2 (en) 2004-07-30 2015-10-20 Intel Corporation Maintaining processor resources during architectural events
JP2016192241A (ja) * 2004-07-30 2016-11-10 インテル コーポレイション プロセッサ及びシステム
US9507730B2 (en) 2004-07-30 2016-11-29 Intel Corporation Maintaining processor resources during architectural events
US9996475B2 (en) 2004-07-30 2018-06-12 Intel Corporation Maintaining processor resources during architectural events
JP2019050027A (ja) * 2004-07-30 2019-03-28 インテル コーポレイション プロセッサ
US10303620B2 (en) 2004-07-30 2019-05-28 Intel Corporation Maintaining processor resources during architectural events
US10740249B2 (en) 2004-07-30 2020-08-11 Intel Corporation Maintaining processor resources during architectural events

Also Published As

Publication number Publication date
WO2001097043A1 (en) 2001-12-20
CN1436332A (zh) 2003-08-13
KR20030010727A (ko) 2003-02-05
EP1290562B1 (en) 2004-02-11
DE60102017D1 (de) 2004-03-18
JP4437001B2 (ja) 2010-03-24
EP1290562A1 (en) 2003-03-12
US6510508B1 (en) 2003-01-21
DE60102017T2 (de) 2004-11-25
TW561341B (en) 2003-11-11
CN1304962C (zh) 2007-03-14
KR100804285B1 (ko) 2008-02-18

Similar Documents

Publication Publication Date Title
JP4437001B2 (ja) 変換索引バッファのフラッシュフィルタ
EP0651332B1 (en) Linearly addressable microprocessor cache
US7958317B2 (en) Cache directed sequential prefetch
US6125441A (en) Predicting a sequence of variable instruction lengths from previously identified length pattern indexed by an instruction fetch address
US6041405A (en) Instruction length prediction using an instruction length pattern detector
US6349365B1 (en) User-prioritized cache replacement
KR100708010B1 (ko) 인덱스와 선택적 경로 정합에 기반하여 데이터를 포워딩하는 저장 버퍼
US7133968B2 (en) Method and apparatus for resolving additional load misses in a single pipeline processor under stalls of instructions not accessing memory-mapped I/O regions
US5944815A (en) Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access
US7996650B2 (en) Microprocessor that performs speculative tablewalks
EP1090345B1 (en) Using ecc/parity bits to store predecode information
US5752274A (en) Address translation unit employing a victim TLB
EP0795828A2 (en) Dynamic set prediction method and apparatus for a multi-level cache system
KR20040014673A (ko) 2개 레벨의 분기 예측 캐시를 갖는 분기 예측
US6542986B1 (en) Resolving dependencies among concurrently dispatched instructions in a superscalar microprocessor
JP2003514299A5 (ja)
US20030074530A1 (en) Load/store unit with fast memory data access mechanism
US6453387B1 (en) Fully associative translation lookaside buffer (TLB) including a least recently used (LRU) stack and implementing an LRU replacement strategy
US6446189B1 (en) Computer system including a novel address translation mechanism
US6208543B1 (en) Translation lookaside buffer (TLB) including fast hit signal generation circuitry
JP7025100B2 (ja) アドレス変換なしで動作する読み込み/格納ユニットでの実効アドレスのシノニムの処理
US11687466B1 (en) Translation lookaside buffer consistency directory for use with virtually-indexed virtually-tagged first level data cache that holds page table permissions
US20070022250A1 (en) System and method of responding to a cache read error with a temporary cache directory column delete
EP0726524A2 (en) Protocol and system for performing line-fill addressing during copy-back operation
US11263043B1 (en) Managing processor core synchronization using interrupts

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080123

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080123

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090825

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091124

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130108

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130108

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20130108

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees