JP3927556B2 - マルチプロセッサ・データ処理システム、変換索引バッファ無効化インストラクション(tlbi)のハンドリングを行うための方法、およびプロセッサ - Google Patents

マルチプロセッサ・データ処理システム、変換索引バッファ無効化インストラクション(tlbi)のハンドリングを行うための方法、およびプロセッサ Download PDF

Info

Publication number
JP3927556B2
JP3927556B2 JP2004128785A JP2004128785A JP3927556B2 JP 3927556 B2 JP3927556 B2 JP 3927556B2 JP 2004128785 A JP2004128785 A JP 2004128785A JP 2004128785 A JP2004128785 A JP 2004128785A JP 3927556 B2 JP3927556 B2 JP 3927556B2
Authority
JP
Japan
Prior art keywords
processor
tlbi
tlb
instructions
interconnect
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004128785A
Other languages
English (en)
Other versions
JP2004326798A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2004326798A publication Critical patent/JP2004326798A/ja
Application granted granted Critical
Publication of JP3927556B2 publication Critical patent/JP3927556B2/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
    • G06F12/1072Decentralised address translation, e.g. in distributed shared 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]
    • 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

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)
  • Multi Processors (AREA)

Description

本発明は、概してデータ処理システムに関し、特に、マルチプロセッサ・データ処理システム(以下「マルチプロセッサ・システム」とも表記)のプロセッサ内における変換索引バッファ(TLB)に関する。詳細には、本発明は、マルチプロセッサ・システム内において複数のTLB無効インストラクション(以下「TLBI」、「TLBIインストラクション」または「TLBIオペレーション」とも表記)によって惹起される伝統的な遅延を防止するための方法およびシステムに関する。
典型的な対称マルチプロセッサ・データ処理システム(SMP)は、少なくとも2つのプロセッサ(または中央処理ユニット(CPU))、メモリ、および入力/出力(I/O)デバイスを含んでいる。それぞれのプロセッサは、ロジックおよびそのほかのコンポーネントからなり、それには、メモリへアクセスするアドレス・インストラクションの実行に使用されるキャッシュ・サブシステム・レベル(またはキャッシュ・コヒーレンシー・レベル)における複数の実行ユニットが含まれる。アドレス・インストラクションは、インストラクション・キャッシュ(またはメモリ)からロード/フェッチされ、初期処理に続いて(たとえば、ロード/ストア・ユニット(LSU)により)、それらの実行ユニットに関連付けされたキューへ転送される。
システム設計に応じて、これらのキューは、ロード・インストラクション、ストア・インストラクション、プリフェッチ・インストラクション等のための独立したキューを含むことがある。これらのキューは、FIFO(先入れ先出し)キューとして動作し、その結果、キューに入れられたインストラクションは、順序どおりに実行される。しかしながら、それぞれの実行用に独立したキューを有することの最終的な効果は、個別のインストラクションが、実際のインストラクションのシーケンスに関して順序を外れて実行される可能性があるということになる。
メモリは、ロジック・コンポーネントおよび個別のブロックのシーケンスからなり、その中にはインストラクション(またはデータ)のページをストアすることができる。これらのブロックは、多数の物理ロケーションを含んでおり、そのそれぞれが、割り当て済みの実アドレスを有している。実アドレスは、メモリ・アクセスを必要とするプロセッサによって実行される各インストラクション(たとえば、ロード・インストラクションおよびストア・インストラクション)に関連付けされる。このように実アドレスは、プロセッサの実行ユニットによって使用されるインストラクションおよび/またはデータのストアならびにロードのための、メモリ内の関連物理ロケーションに対するアクセスを可能にする。
アプリケーションおよびプロセス・レベルにおいてシステムの動作を向上させるために、今日の多くのコンピュータ・システムは、仮想メモリ・システムを使用して、プロセッサによって実行される各種プロセスに対するメモリの管理ならびに割り付けを行っている。仮想メモリ・システムは、各プロセッサが、実際の実アドレスを必要とすることなく、あたかもそのプロセスがシステムによって提供されるフル・レンジのアドレスのコントロールを有しているかのように動作することを可能にする。オペレーティング・システムは、各プロセス用の仮想アドレス空間を、そのシステム用の実際の物理空間にマップし、仮想アドレスから実アドレスへのマッピングは、メモリ内に維持されているページ・フレーム・テーブル(PFT)の使用を介して通常は管理される。PFTは、ページ・ディレクトリおよび仮想アドレスと実アドレスの変換ペアのテーブルを包含しており、それぞれは、ページ・テーブル・エントリ(PTE)と呼ばれている。
プロセッサによるあらゆるメモリ・アクセス・オペレーション(たとえば、インストラクションのフェッチ、インストラクションのロード/ストア、メモリのプリフェッチ)は、実アドレスを必要とする。しかしながら、メモリ・アクセス・オペレーションを遂行するインストラクションがそのプロセッサによって最初にフェッチされ、処理されるとき、通常は仮想アドレスが獲得される。したがって、実行のためのインストラクションのスケジューリング(つまり、そのインストラクションをロード/ストア・ユニット(LSU)に関連付けされた実行キュー内に配すること)に先行して、そのインストラクション内の仮想アドレスが、対応する実アドレスへ変換されなければならない。LSUは、メモリ・アクセス・インストラクションを実行して仮想アドレスを獲得し、それがTLBによって変換されて実アドレスが獲得される。これらのアドレス変換ペアが、メモリ内にストアされたPFTによって維持されていることから、各変換オペレーションは、伝統的に、その変換を完了するためにメモリ・アクセスを必要としていた。
仮想対実アドレス変換の遂行を目的としたPFTに対するメイン・メモリ・アクセスの数を低減するために、今日のシステム内の各プロセッサには、変換索引バッファ(TLB)と呼ばれる最近にアクセスされたPTEに関する小さいキャッシュが提供されている。TLBは、メイン・メモリ内のPFTに対するアクセスの必要性を低減することによって変換に関連する遅れ時間を抑える。TLBを介したほとんどの仮想対実アドレス変換に関する遅れ時間が比較的小さいことから、全体的なプロセッサのパフォーマンスが向上する。
したがって、LSUによってアドレス・インストラクションが受け取られるとき、アドレス変換を必要とするインストラクションが、まずTLBへ送られる。インストラクションの仮想アドレスに対応するエントリがTLB内に見つかると、TLBが『ヒット』信号をアサートし、その実アドレスが使用される。続いて実アドレスを伴うインストラクションが、メモリ・サブシステム内における実行のための実行キューに入れられる(メモリ・サブシステムは、各レベルのキャッシュおよびメイン・メモリを含む)。キューの数ならびに長さに応じ、プログラム実行間の任意の時点において、変換後の実アドレスを伴う多くのインストラクションがそれらのキュー内に存在し得る。
特定の仮想アドレスに必要な変換がTLB内に存在しない場合には、『変換ミッシング』が発生し、この分野において周知のように、ハードウエアおよび/またはオペレーティング・システム(OS)によって、アドレス変換の遂行に必要とされるPTEがメモリ内のPFTから検索される。
場合によっては、オペレーティング・システム(OS)の仮想メモリ・マネージャ(VMM)がシステム・メモリを管理するために、PFT内のPTEの修正が必要になる。これらの変更は、プロセッサのTLBが失効したPTEを含むという結果をもたらすことになる。コヒーレンシーを維持するため、およびプロセッサがTLBから正しくない変換結果を獲得することを防止するために、まずSは、該当するPTEを無効化し、続いてTLBIを発行してそれぞれのTLBを無効化する。
TLBコンシステンシー・スキームにおいては、通常、マルチプロセッサ・システム内のほかのすべてのプロセッサに対してTLB無効化(TLBI)オペレーションをブロードキャストするマスタ・プロセッサによって失効したTLBエントリが削除される。TLBIオペレーションは、無効化されるべきPTEの仮想アドレスを識別する。TLBIは、アドレスのみのオペレーションであり、最初にマスタ・プロセッサ(つまり、変換の要求を発行したプロセッサ)において受け取られてそれ自体のTLBが無効化される。TLBIが受け取られると、そのプロセッサのTLBに送られるフェッチ済みインストラクションのストリーム内にTLBIが挿入される。このTLBIは、マスタ・プロセッサによって、相互接続上においても発行される。現在のシステムにおいては、各TLBIに『バリア』インストラクション(たとえば、PowerPC(パワーピーシー)の場合のSYNC(シンク)インストラクション)が続くが、それが、TLBIの直後に続いて相互接続上に発行される。その後マスタ・プロセッサは、ほかのそれぞれのプロセッサからの確認応答メッセージを待機する。
別のプロセッサによってTLBIがスヌープされるときには、そのTLBIがTLBコントローラへ送られ、それがTLB内のPTEを無効化し、それ以前の変換済みアドレスを伴う各アクティブ・キューに対してフラグをセットする。このフラグは、そのキューが、実アドレスを伴うキャッシュ・コヒーレント・サブシステムへ移動されてしまうとリセットされる。その後TLBコントローラは、すべてのフラグのリセットが確実になると、TLBI完了メッセージをキャッシュ・コヒーレント・サブシステムへ向けて発行する。しかしながら、より以前のキュー内における変換済みアドレスを伴うインストラクションのスケジューリングに起因して、TLBIロジックは、すべての実行ユニットのキューのフラッシュを起動しなければならず、かつフラッシュが完了するまで待機して、初めてTLBI完了メッセージが要求プロセッサへ返されることが可能になる。一方、マスタ・プロセッサは、ほかのすべてのプロセッサにおいてTLBI(および、以前の発行済みインストラクション)が完了したことを示す、バリア・オペレーションに関する完了メッセージが返されるまで待機を行うことになる。
TLBI完了メッセージの生成が可能になる前に、TLBIおよびバリア・オペレーションのペアが、ほかの各プロセッサ内のキューのフラッシュを必要とすることから、複数のプロセッサによる複数のTLBIの発行ならびにスヌープが許容されている場合には問題を生じる。これらの問題には、所定のプロセッサにおいて互いに完了を無期限に待機し、結果的にプロセッサの実行の機能停止をもたらすTLBIのオーバーラップが含まれる。さらに、複数のTLBIが、バス・リソースおよびPFTに対するアクセスに関して競合する。これらの問題を克服するために、ほとんどの現行システムにおいては、パーティション内の各プロセッサに、最初に『グローバルTLBIロック』を獲得し、続いて適切なTLBIを発行し、その後、ロックを解放することが求められる。このロック獲得およびそれに続くプロセスは、全体的なシステムのパフォーマンスを著しく制限する。
本発明は、今必要とされていることが、マルチプロセッサ・システム内における、単一プロセッサによるPFT上のロックを必要とすることなくTLB内のエントリの無効化を行うための方法およびシステムであることを認識している。あるパーティション内において複数のプロセッサから発行される複数のコンカレント(またはオーバーラップする)TLBオペレーションを可能にする方法およびシステムは、歓迎される改善となろう。これらの、およびそのほかの恩典は、以下に説明する本発明によって提供される。
本発明は、データ処理システムが、TLBIオペレーションの間における実行ユニットのキューからのインストラクションの完全なドレイニングに続いて実行を再開するときの遅延を短縮できることが望ましいと認識している。TLBに対するアクセスを必要とするほかのインストラクションに関して順序の外れたTLBIインストラクションの先行的キューイングおよび実行を可能にするデータ処理システムは、歓迎される改善となろう。さらに本発明は、TLBIの後にフェッチされたインストラクションを推論的に実行し、TLBIの前にフェッチされたインストラクションを、それぞれの実行キュー内に入れて、TLBIオペレーションの完了後のより迅速なプロセッサのリカバリを可能にすることが有益なものとなると認識している。さらにまた本発明は、推論的スケジューリングの行われたインストラクションの仮想アドレス履歴を提供し、無効化されたアドレスを伴うインストラクションが、TLBIオペレーションの間におけるドレイニングに関して適切にターゲットされるようにすることが有益であると認識している。これらの、およびこのほかの恩典は、以下に説明する本発明によって提供される。
本発明は、最適スヌーパ・パフォーマンスを伴う、相互接続上において実行している複数のコンカレント(またはオーバーラップする)TLBIを可能にするマルチプロセッサ・データ処理システムを提供することが望ましいと認識している。異なるプロセッサから発行された複数のTLBIを効率よく追跡し、グローバル・バリア・オペレーションを必要とすることなく、あるプロセッサが発行したTLBIのシステム‐ワイドの完了を迅速に示す方法およびシステムは、歓迎される改善となろう。これらの、およびこのほかの恩典は、以下に説明する本発明によって提供される。
パーティション内の複数のプロセッサからの複数のTLBIオペレーションのコンカレントな完了を可能にするTLBIプロトコルを具体化する、対称マルチプロセッサ・データ処理システム(マルチプロセッサ・システム)が開示されている。このマルチプロセッサ・システムは、複数のプロセッサを備え、そのそれぞれは、実行ユニットならびに関連するキューを伴うキャッシュ・コヒーレント・サブシステム、および変換索引バッファ(TLB)ならびに関連するTLBロジックを有している。さらに各プロセッサは、相互接続上において発行されたすべてのTLB無効化インストラクション(TLBI)をスヌープし、TLBロジックによる関連TLBエントリの無効化を起動するスヌーパを包含している。
スタ・プロセッサのTLB内のエントリ無効化するためのTLBIが受け取られるとき、マスタ・プロセッサは、TLBIプロトコルを起動して、それがローカル・バリア・インストラクションに類似したTLBIのハンドリングをもたらす。対応するTLBエントリが無効化される。また、実行ユニット・キュー(以下「実行キュー」または「E‐キュー」とも表記)に対するフェッチ済みインストラクションの転送が停止され、実行ユニットによる処理が中止され、かつ実行ユニット・キュー内のキューイング済みインストラクションが削除される。キューが完全にドレイニングされた後に、相互接続上においてTLBIが発行され、ほかのスヌーピング・プロセッサのTLB内の対応するエントリを無効化する。
このようにキューの初期ドレイニングがあることから、別のプロセッサがスヌープされるとき、そのプロセッサは、迅速にTLBエントリを無効化し、そのキューのドレイニングを待つことを必要とせずに、完了メッセージを伴って直ちに応答することができる。主として、別のプロセッサのキューのドレイニングを待機することによって生じる遅延が、実質的に排除される。
上記はもとより、本発明のそのほかの目的、特徴、および利点については、以下の詳細に記述された説明の中で明らかなものとなろう。
新しい特徴と確信される本発明の特徴は、付随する特許請求の範囲に示されている。しかしながら本発明自体はもとより、その好ましい実施の形態、さらに別の目的、およびそれらの利点については、以下に例として示す実施態様の詳細な説明を添付図面とともに参照することによって最良の理解が得られるであろう。
本発明は、マルチプロセッサ・システム内における異なるプロセッサによって発行された複数のコンカレントTLBIの完了を可能にする改良されたTLBIプロトコルを提供する。従来技術においては、TLBならびにPFTへアクセスする複数のプロセッサの非同期的性質、およびソフトウエア管理されたTLBに関するコヒーレンシーに起因して、パーティション内の1つのプロセッサのみが、一度に1つのTLBIを発行することが可能であった。したがって、TLBの無効化が煩雑なプロセスを伴い、それがプロセッサによるロックの獲得、PFT内のPTEの無効化、(TLBを無効化するための)TLBIの発行、およびその後のロックの解放を必要としていた。
本発明は、プロセッサ(1ないしは複数)によるロックの獲得を必要とすることなく、コンカレントTLBIオペレーションならびにPFTに対するコンカレント・アクセスを可能にする。本発明は、いくつかの追加のコンポーネントをプロセッサ内に導入し、それがTLBIプロトコルによる本発明の各種機能(プロセス)の完了を可能にする。これらのプロセスには、(1)TLBIオペレーションの完了に先行する実行キューに対するインストラクションの推論的スケジューリング、(2)TLBIに続くインストラクションの非推論的スケジューリング、(3)プロセッサ内のほかのインストラクションとの非同期的なTLBIのスケジューリングおよび(4)バリア・オペレーション(すなわち、PowerPCにおけるsyncオペレーション)なしにプロセッサごとに行う発行済みTLBIの完了のモニタリング等が含まれる。本発明の目的に関して、TLBIは、TLB内のPTEの無効化、相互接続上におけるTLBIオペレーションの発行、およびほかのプロセッサにおけるTLBIプロセスの完了の待機(または追跡)を包含するTLBIプロセスの具体化を最終的にもたらす実際のインストラクションのニーモニックとして定義されている。
以下、図面を参照して説明する。図1を参照すると、マルチプロセッサ・システム100が図示されており、その中において本発明の特徴を好適に具体化することができる。これに示されているように、マルチプロセッサ・システム100は、複数のプロセッサ101を包含しており、それらが、相互接続125を介してメモリ130に結合されている。相互接続125は、単一のバス、複数のバス、もしくはスイッチを包含するものとすることができる。
さらに図1を参照すると、プロセッサ101は、L2キャッシュ104、変換索引バッファ(TLB)102、および関連するTLBコントローラ103を含んでいる。TLB102は、インストラクションに関する実効アドレスもしくは仮想アドレスをメモリ130内に見られる実アドレスへ効率的に変換するために使用される。それに加えて、図示の実施態様においては、各プロセッサ101が、以下に説明する一実施態様に従って行われる、相互接続125上におけるTLBIオペレーションのスヌープ、およびTLBコントローラ103へのTLBIオペレーションの転送に使用されるスヌーパ107を含んでいる。
プロセッサ101は、さらにインストラクション・シーケンシング・キュー(IQ)105、実行ユニット108、および関連する実行キュー109をキャッシュ・コヒーレンシー・レベル(つまり、キャッシュならびにロワ・メモリのアクセスにアドレスのみのオペレーションが使用される処理のレベル)に包含している。インストラクション・シーケンシング・キュー105は、仮想アドレスを伴うメモリ・アクセス・インストラクションを保持し、各実行キュー109は、実行に関するキャッシュ・コヒーレンシー・レベルにおいて特定の実行ユニット108へ送られる(つまり、プロセッサのロード/ストア・ユニット(LSU)におけるアドレス・インストラクションの生成に続く)インストラクションを保持する。たとえば、実行ユニットは、ロード、ストア、プリフェッチ・オペレーションを実行する(または完了する)ための独立したユニットを、キャッシュ・コヒーレンシー・レベルに含むことができる。相応じて実行キューは、インストラクション・シーケンシング・ユニット(ISU)もしくはLSUの発行済みインストラクション(フェッチ、ロードおよびストア等)のための独立したキューを包含している。
TLB102は、インストラクション・キュー105内のアドレス・インストラクション(またはデータ)に関する仮想アドレスを、そのインストラクションが実行キュー109へ送られる前に、実アドレスに置き換えるために使用される。つまり、キュー109内のインストラクションが、メモリ・アドレスを伴うオペレーションを完了するとき、それらが、対応する仮想アドレスから変換された実アドレスを伴ってキューに入れられる。
メモリ130内には、ページ・フレーム・テーブル(PFT)132がストアされており、そこには、いくつかのページ・テーブル・エントリ(PTE)134が含まれている。またメモリ内には、オペレーティング・システム(OS)136および実行中のアプリケーション・プログラム138も含まれており、これらは、集合的に、TLBを必要とするメモリ・アクセス・オペレーションに帰結するインストラクションをプロセッサ101に提供する役割を担う。オペレーションの間は、プロセッサ101の中央処理ユニット(CPU)がアプリケーション・プログラム138(または、OS 136)等のコンピュータ・プログラムのインストラクション(ならびにデータ)をフェッチし、デコードし、かつ実行する。OS 136は、伝統的なメモリ・マネジメントに関してプロセッサ101に送られるTLBIを生成する役割を担う。より具体的に述べれば、OS 136は、ページ違反割り込みハンドラ137を含み、PFT 132においてページ違反が発生すると、TLBIを生成する。TLBIが生成されるプロセスは、現行システムに類似であり、このTLBIの生成が本発明の主たる焦点でないことから、これ以上はこのプロセスに注目しない。
上記のコンポーネントに加えて、このデータ処理システム100は、入出力(I/O)チャンネル・コントローラ(CC)140を包含し、それが相互接続125に結合されている。I/O CC 140は、スイッチ142を介して、冗長ディスク・アレイ(RAID)144を含むI/Oデバイスに対する接続を提供する。RAID 144は、プロセッサによって実行されているアプリケーションの要求に応じてロードされるインストラクションならびにデータをストアする。
当業者であれば理解されるように、コンピュータ・システムは、このほかの、たとえば追加のプロセッサならびに複数のキャッシュ・レベル等を含めたコンポーネントを含んでいることもあるが、ここでは本発明の完全な説明の提供に必要なコンポーネントのみが記述されている。
図2は、以下に説明する本発明の各種の機能的特徴をサポートするべく構成されたプロセッサ101内のTLBサブシステムをさらに詳細に示している。論考の目的から1つのプロセッサ101だけが図示されており、プロセッサ101を結合することのできる外部コンポーネントは示されていない。ここで理解される必要があるが、プロセッサ101内に例示されているコンポーネントは、本発明が実施されるマルチプロセッサ・システムの別のプロセッサ(図示せず)内においても見ることもできる。たとえば、図1のマルチプロセッサ・システム100を参照されたい。
プロセッサ01は、CPU 210を包含し、そこにはインストラクション・シーケンシング・キュー105、実行ユニット108、および実行キュー109が含まれている。またプロセッサ101は、TLBサブシステム202(図2を参照)も包含している。ここに図示されているようにTLBサブシステム202は、TLB102を包含し、それが:(1)ページ・メモリの仮想アドレスをストアするための仮想アドレス・タグ配列230;および(2)仮想アドレスに対応する実アドレスをストアするための実アドレス・タグ配列231を含んでいる。
さらにTLBサブシステム202は、PTEに対する変更の検出に使用されるTLBコントローラ103を包含し、PTEの変更が検出されたときにはTLB102内のPTEを更新する。TLBコントローラ103は、スヌープ・コントローラ(スヌーパ)107を含んでおり、それが、TLB102内の変換に影響を及ぼし得るオペレーション、たとえばTLBIに関して相互接続125を継続的にスヌープする。
またTLBコントローラ103には、仮想アドレス・タグ配列230をサーチするためのサーチ・エンジン234、実アドレス・タグ配列231内のPTEを更新するか、あるいは無効化するための更新モジュール236も含まれている。サーチ・エンジン234は、アドレス変換のルックアップのためにCPU 210によっても使用される。スヌープ・コントローラ107が、相互接続125上においてPTEに影響を及ぼすオペレーションを検出すると、サーチ・エンジン234が、スヌープ・コントローラ238によって検出された仮想アドレスに関して仮想アドレス・タグ配列230内をサーチする。その仮想アドレスが仮想アドレス・タグ配列230内に見つかった場合には、更新モジュール236が、その特定のPTEの更新もしくは無効化を行う。
TLBコントローラ103に関連付けされて、TLBIキュー239およびTLBIレジスタ(以下「TLBI追跡レジスタとも表記)241が備わっている。例示の実施態様ならびに以下の説明においては、TLBIキュー239が使用されてTLB102へ送られることになる複数のTLBIがスケジューリングされ、一方、TLBIレジスタ241が使用されてマルチプロセッサ・システムの相互接続125上において異なるプロセッサによって発行された複数のオーバーラップするTLBIの完了が追跡される。次に、TLBIキュー239およびTLBIレジスタ241の特定の機能ならびに適用可能性について詳細に説明する。
I. マスタ・プロセッサ内のTLBIプロトコル
本発明は、TLBIインストラクションの実行に対してマスタ・プロセッサ(すなわち、最終的にTLBIの生成をもたらした変換に関する要求を発行したプロセッサ)がどのように応答するかについて指図する、新しいTLBIプロトコルを提供する。このTLBIプロトコルは、受け取り側プロセッサが従うプロシージャのあらかじめ設定済みのセットであり、最終的には、マルチプロセッサ・システムのパーティション内の複数プロセッサによる、相互接続上におけるTLBIのコンカレント発行を可能にする。また、このTLBI応答プロトコルの具体化によって、プロセッサは、相互接続に対してTLBIオペレーションを発行する前に、PFTに関するグローバル・ロックを最初に獲得する必要があるという要件が排除される。このように本発明は、ロック獲得オペレーションを行う必要性ならびにそれに伴う遅れ時間を排除し、それにはロックのコンテンション、システムの同期化、およびそれに続くロックの解放が含まれる。
次に図3を参照するが、この図は、本発明のTLBI応答プロトコルの具体化に基づいてOS 136によって生成されたTLBIの受け取りに対してプロセッサが応答するプロセスを示したフローチャートである。このプロセスは、ブロック301において開始し、そこには、プロセッサ101がTLBIを受け取ることが示されている。伝統的な仮想メモリ・マネジメントの場合には、OSがTLBIを生成し、それがプロセッサ101へ送られる。
TLBIインストラクションの受け取りに先行して、プロセッサ101は、キャッシュ・コヒーレンシー・レベルのキュー内におけるアドレス・オペレーション(またはインストラクション)のスケジューリング、およびキューに入れられている順序を基礎とするキャッシュ・コヒーレンシー・レベルのインストラクションの実行を継続している。実行に関してTLBIの準備が整うと、直ちにプロセッサ101は、ブロック303に示されているように、すべての(キャッシュ・コヒーレンシー・レベルにおける)インストラクションのスケジューリングならびに実行を停止(もしくは中止)する。その間にプロセッサは、ブロック305に示されているように、キャッシュ・コヒーレンシー・サブシステムにおけるすべての実行キューのドレイニングを行う。続いてブロック307に示されているように、そのプロセッサのTLBコントローラが、PTEアドレスに基づいて対応するTLBエントリの無効化を行う。キューのドレイニングは、キュー内からのすべてのインストラクションを削除すること、およびアドレス・インストラクションを生成している特定のプロセッサ・コンポーネント(1ないしは複数)に信号を送り、ドレイニングしたアドレスを、システム上においてTLBIオペレーションが完了した後に再送する指示を行うことを伴う。
1つの具体化においては、プロセッサにおいてTLBIの受け取りがあると、TLBIの受け取りの時点においていずれのキューがアクティブであったかについて示すフラグがセットされる。したがって、スヌープされた各TLBIに関してフラグがセットされる。インストラクションのスケジューリングは、このフラグがセットされている間にわたって中止される。TLBIプロトコルは、アクティブなキューがドレイニングされるまでプロセッサを強制して待機させ、その後、フラグをリセットしてスケジューリングの再開が可能になる。
すべての実行キューがインストラクションのドレイニングを完了した後、プロセッサ101は、ブロック309に示されているように、相互接続125上においてTLBIを発行する。続いてプロセッサ101は、システム・バス(つまり、相互接続125)に対してバリア・インストラクションを発行し、ほかのプロセッサのそれぞれにおけるTLBIの完了を追跡する。TLBIならびにバリア・インストラクションは、いずれもほかのプロセッサのスヌーパによってスヌープされる。ほかのプロセッサが、まだキューのドレイニング中であり、ビジーの場合には、当該ほかのプロセッサは、マスタ・プロセッサに対してリトライを送り、その後の時点におけるTLBIのリトライをマスタ・プロセッサに強制することができる。それに加えて、キューがまだアクティブのときには、スヌーパがバリア・オペレーションをリトライすることができる。
プロセッサ101は、ブロック311に示されているように、ほかのプロセッサのそれぞれからバリア・オペレーションに関する完了メッセージが返されることをスヌープする。ブロック313においては、マルチプロセッサ・システム内のほかのすべてのプロセッサからTLBI完了メッセージが受け取られたか否かについての決定がなされる。マスタ・プロセッサが、マルチプロセッサ・システム内のほかのすべてのプロセッサから完了メッセージを受け取ると、マスタ・プロセッサは、ブロック315に示されているように、アドレス・インストラクションの実行を再開する。
一実施態様によれば、図9および10を参照して以下に説明するように、TLBIオペレーションの完了を追跡するハードウエア・ベースの方法が具体化され、それによって、システム・バス上においてバリア・オペレーションを起動する必要性が排除される。このようにTLBIプロトコルの1つの機能として、ローカル・バリア・インストラクションとしてTLBIインストラクションに応答すること、すべてのキャッシュ・コヒーレンシー・レベルの実行を実行キューがドレイニングを行うまで停止すること、およびマルチプロセッサ・システム全体にわたってTLBIの完了を追跡することが挙げられる。
特に、マスタ・プロセッサがほかのプロセッサからの完了メッセージを待機している間に、第2のプロセッサからのTLBIオペレーションがスヌープされると、マスタ・プロセッサのTLBコントローラがそのTLB内のPTE(エントリが存在する場合)を無効化し、直ちに、TLBIオペレーションがスヌープされた第2のプロセッサに対して完了メッセージを発行することができる。マスタ・プロセッサは、第2のTLBIが受け取られた時点において、すでにそのキューのドレイニングが済んでおり、マスタ・プロセッサは、相互接続上においてオーバーラップするTLBIを発行したほかのプロセッサをロック・アウトしない。
II. TLBI完了の間の推論的および非推論的インストラクション・スケジューリング
上記の実施態様の中で述べたように、TLBI応答プロトコルは、インストラクションの実行の中止およびキャッシュ・サブシステム・レベル(ここでは、キャッシュ・コヒーレンシー・レベルとも呼んでいる)におけるインストラクション・キューのドレイニングを強制する。実行が再開するとき、インストラクションがそれらの仮想アドレスとともにLSUから再発行され、アドレス変換のためにTLBへ送られ、その後、実行のために実行キュー内においてスケジューリングが行われる。アドレス変換、スケジューリング、およびロード/ストアの実行は、非常に多くのクロック・サイクルを使用することがあり、その間、そのキャッシュ・サブシステムにおける実行ユニットは、実行の再開に先行してインストラクションがキューに入れられるまでを待機しなければならない。
本発明は、マスタ・プロセッサによってTLBIが実行されているとき、インストラクション・キュー内にあるインストラクションの変換、スケジューリング、および実行を継続することによって、実行ユニットに関する無活動期間を排除(もしくは実質的に短縮)する。つまり本発明は、(キューの初期ドレイニングに続いて)TLBIオペレーションがほかのプロセッサからの完了メッセージを待機している間にわたり、順序を外れた推論的なインストラクションの実行を許容する。この推論的実行は、TLBIオペレーションが完了した後にマスタ・プロセッサが実行を再開するために必要な時間を著しく短縮する。
順序を外れた推論的なインストラクション実行の特徴を具体化するために、2つの異なるインストラクションの扱いが、TLBIと相対的なそれぞれのポジションに基づいて提供される。TLBIに先行する(つまり、TLBIがTLB内のエントリを無効化する前に変換を受け取る)インストラクションは、通常どおりにスケジューリングが行われ、TLBIに続くインストラクションは、推論的にスケジューリングが行われる。これらのインストラクションの異なる扱いについて次に説明する。
A. 仮想アドレス・タグを介した推論的スケジューリング
TLBIに先行するインストラクションの仮想アドレスが変換されるときには、TLBIオペレーションがTLB内のPTEをまだ無効化していないことから、その変換が『推論的に』完了される。変換後の実アドレスを伴うこれらのインストラクションは、キューに転送されて、『推論的に』スケジューリングが行われる。インストラクション(1ないしは複数)の仮想アドレスは、その後、TLBIによって無効化されることがあり、したがって、その実アドレスの不確定性を鑑みてインストラクションのスケジューリングが推論的に行われると言う。
ここで図5を参照すると、プロセッサのインストラクション・シーケンシング・キュー105のブロック図が例示されており、そこには、TLBIを含めて複数のインストラクションが含まれている。インストラクション・シーケンシング・キュー105は、TLBIにシーケンシャルに先行するインストラクション(つまり、I1〜I3)およびTLBIにシーケンシャルに後続するインストラクション(つまり、I4およびI5)を包含している。また図5には、実行ユニットのキュー(E‐キュー)109も示されているが、そこには、インストラクションI1〜I5が、実行に関し、図4に例示されているプロセスに従ってスケジューリングされている。
図4を参照すると、プロセッサならびにTLBI応答プロトコルを具体化するTLBコントローラ・ロジックが、TLBIオペレーションの完了の間に、Iキュー105からのインストラクションのスケジューリングを管理するときに従うプロセスのフローチャートが例示されている。インストラクションは、ブロック401に示されているように、Iキュー105内にフェッチされ、標準的な処理の間にTLB102へ転送される。その後、ブロック403に示されているように、TLBIインストラクションが受け取られる。TLBIインストラクションは、シーケンシャルに先行するインストラクションの後にTLBへのアクセスに関してスケジューリングされ、ブロック401に示されているように、その後に続くインストラクションがIキュー105内へ引き続きフェッチされる。このようにプロセッサ101によってTLBIが受け取られるときに、Iキュー105内のインストラクションI1、I2、およびI3のスケジューリングに関連するすべての処理を停止するのではなく、TLBI応答プロトコルは、ブロック407に示されているように、インストラクションI1、I2、およびI3(および、その後のI4およびI5)が、アドレス変換のためにTLB102へ進むことを許容する。
各変換に続いて、ブロック409に示されているように、プロセッサおよびTLBコントローラ・ロジックによって、インストラクションがTLBIの後にシーケンシャルに続くか否か(つまり、インストラクションがTLBIの後にシーケンシャルに続いているが、TLBIが対応するPTEの無効化を完了する前に、TLB102に対するアクセスが許可されているか否か)についての決定が行われる。インストラクションがTLBIの後にシーケンシャルに続いている場合には、ブロック411に示されているように、そのインストラクションの仮想アドレスを伴うタグが生成される。このタグは、特定のインストラクションの推論的スケジューリングが行われていることを示す。このインストラクションは、ブロック415に示されているように、E‐キュー109内においてスケジューリングされる。図5に示されているように、推論的スケジューリングが行われているインストラクションにはそれらの仮想アドレスを用いてタグが付けられ、ほかの非推論的スケジューリングが行われたインストラクションにはタグが付けられない。
推論的スケジューリングが行われているとしてインストラクションをタグ付けすることは、アドレス変換を生じた時点においては、TLBIオペレーションがまだTLB102内のターゲットPTEを無効化していないことに起因する。その後のTLBIによるTLB102内のPTEの無効化は、変換を受け取った1ないしは複数のインストラクション(I4〜I5)に影響することがあり、そのためこれらのインストラクションは推論的であると見なされる。したがって、これらのインストラクションには、それぞれの仮想アドレス(TLB102からの対応する実アドレスによって置換されている)を用いたタグ付けが行われ、以下に説明するように、その後これらの仮想アドレスは、TLBIによってターゲットされるアドレスに対する比較に使用される。
このように、例示した実施態様の実行ユニットのキュー109は、変換済み実アドレス504をはじめ、仮想アドレス・タグ505を伴うインストラクションを含んでいる。例示の実施態様によれば、仮想アドレス・タグ505に適応させるために、E‐キュー109が、より広い空間を伴って構成され、追加の仮想アドレス・パラメータをサポートする。さらに、追加の処理ロジックがプロセッサ内に提供され(たとえば、拡張TLBコントローラ・ロジック)、インストラクションの仮想アドレスがタグ付けされ、インストラクションとともにE‐キュー109へ転送されることを可能にしている。
B. 推論的スケジューリングの行われたインストラクションのフラッシュ
図4に戻り、特にブロック417を参照するが、TLBIがTLB102へ送られたとき、TLB102は、ブロック416に示されているように対応するPTEを無効化し、その後ブロック417に示されているように、E‐キュー109内の推論によるインストラクションの仮想アドレス・タグ505とTLBIアドレスを比較する。本発明によれば、TLBI応答プロトコルに従って動作しているTLBコントローラが、サーチ・エンジン234に、仮想アドレス・タグ505のサーチおよびそのアドレスとTLBIによって指定された仮想アドレスの比較を実行させる。E‐キュー109内においてタグが明瞭に識別されていることから、TLBIアドレスとE‐キュー109内の仮想アドレス・タグ505の比較は容易に完了する。
ブロック419においては、仮想アドレス・タグ505内に一致が見つかったか否かについての決定が行われる。一致が見つかった場合には、ブロック421に示されているように、すべての推論的インストラクションがE‐キュー109からフラッシュされる。ブロック422に示されているように、またブロック425においてTLBIが完了したことが決定されるまで推論的スケジューリングが停止される。TLBIが完了すると、ブロック427に示されているように、インストラクションの実行が再開される。
しかしながら、仮想アドレス・タグ505内に一致が見つからなかった場合には、ブロック423に示されているように、E‐キュー109内における推論的インストラクションの実行に関係するオペレーションが継続する。スヌーパ107は、TLBI完了メッセージをモニタし、ほかのすべてのプロセッサのTLBIオペレーションが完了したか否かについての決定をブロック425において行う。ほかのすべてのプロセッサのTLBIオペレーションが完了すると、ブロック427に示されているように、インストラクションの実行が再開される。特に、TLBIオペレーションが完了したときにE‐キュー109内にあった推論的に停止されたインストラクションは、仮想アドレス・タグを伴うことなく実行ユニット108へ送られる。
代替実施態様の1つにおいては、TLBI応答プロトコルが、一致インストラクション(すなわち、TLBIアドレスと一致する仮想アドレス・タグ505を伴うインストラクション)だけを実行キュー109から削除させる。実行キュー109内のほかのインストラクションは、ほかの推論的スケジューリングが行われたインストラクションも含めて影響を受けない。その後の、TLBIオペレーションの完了に続く実行の再開は、インストラクションのシーケンシングにほとんど混乱を伴わずに生じる。また、TLBIが推論的インストラクションのごく少数のパーセンテージを無効化するだけであることから、再フェッチおよび再スケジューリングを行わなければならないインストラクションの数がほとんどわずかになり、処理効率における著しい恩典が可能になる。
上記の実施態様は、独立であるが付帯される、TLBIのプロセッサによる受け取りの後に仮想アドレスを配置することのできるアドレス・タグを含むプロセッサ・インストラクションのセットを伴って動作する。それに代えて、実アドレスならびに仮想アドレスをともに包含することをサポートする拡張インストラクションを、プロセッサ内においてスケジューリングが行われているメモリ・アクセス・インストラクション用に提供することもできる。
C. 推論的スケジューリングの行われたインストラクション用の独立した仮想アドレス・レジスタ
代替実施態様においては、仮想アドレスが、実行ユニット・キュー内においてインストラクションに対してタグ付けされずに、プロセッサ内の独立したストレージ・キャッシュ内にストアされる。図6は、この具体化を例示しており、それによって推論的スケジューリングの行われたインストラクションの仮想アドレスが、一意的に追跡される。これに例示されているように、E‐キュー109に加えて、推論的スケジューリングの行われたすべてのインストラクションの仮想アドレスをキャッシュするために追加のタグ・アドレス・キャッシュ/レジスタ511が提供される。この実施態様によれば、仮想アドレスが配置されるとき、そのアドレスが独立のストレージ・キャッシュに転送され、その中にストアされる。TLBI仮想アドレスの比較は、このストレージ・キャッシュ内のアドレスに対して行われ、一致を生じると、全体のE‐キュー109からインストラクションのドレイニングが行われる。
D. TLBIに続いてスケジューリングされたインストラクションのブロックのない発行
別の実施態様においては、TLBI応答プロトコルにより、スケジューリング・シーケンス内のTLBIに続くすべてのオペレーションが、進行中のTLBIオペレーションを考慮することなく、実行ユニットに対して発行されることが可能になる。本発明は、これらのインストラクションが、TLBIがターゲットPTEを無効化した後にTLBにおいてそれらの変換を完了することから、これらのインストラクションが無効化された実アドレスを含まないものとなることを認識している。
このようにTLBIオペレーションは、その後に続くインストラクションの実行と非同期的に進めることができる。この実施態様の1つの恩典は、プロセッサが、ほかのインストラクションの非同期のスケジューリングを継続する一方において、複数のTLBIオペレーションを完了できることである。この、TLBIからのインストラクションの非同期スケジューリングを補助するために、インストラクション・キューのほかに、独立したTLBIキューが用意されている。
1. 独立したTLBIキュー内におけるTLBIの非同期パラレル・スケジューリング
ここで図7を参照すると、非TLBIインストラクション(つまり、キャッシュ・コヒーレンシー・レベルにおいてメモリ・アクセスを完了するためのアドレス・インストラクション)およびTLB102に対するTLBIインストラクションによるアクセスを受け取り、スケジューリングを行うための分離された非TLBIインストラクション・キュー05およびTLBIキュー606を伴うプロセッサ設計のブロック図表現が示されている。これに示されているように、インストラクション・シーケンス602は、TLBI1およびTLBI2を含んでいる。TLBIキュー606は、スヌーパ・ロジックおよびTLBコントローラによってコントロールされる。スヌーパ・ロジックが使用され、相互接続上においてスヌープされたTLBIは、直接TLBIキュー60へ転送される。TLBIキュー606および非TLBIインストラクション・キュー605には、TLB102に対するアクセスが提供され、インストラクションは、FIFOシーケンサ608を介してTLB102へシーケンシングされる。FIFOシーケンサ608は、それらのインストラクション(TLBIおよび非TLBI)を、受け取った順序に従ってTLBコントローラへ転送し、TLBIおよび非TLBIインストラクションは、互いに関して非同期でそれぞれのキューから送られる。
したがって、マスタ・プロセッサにおいてTLBIが受け取られるとき、マスタ・プロセッサが、通常のインストラクション・ストリームを用いてTLBIのスケジューリングを行わなければならないということはない。むしろマスタ・プロセッサにおいてTLBIが受け取られたとき、すでに受け取っているTLBIとともに行うスケジューリングのために、直ちにそのTLBIがTLBキュー606へ送られる。TLBIキュー606内のTLBIは、TLBIキュー606内の順序に従ってスケジューリングが行われる。TLBIプロトコルは、上記と同様に動作するしかしながら、FIFOシーケンサ608の具体化は、ほかのプロセッサ・コンポーネントからのTLBへ走行するバスに対するアクセスをコントロールするバス・ロジックに過ぎないとすることができる。いずれの具体化も、TLBIプロトコルが、プロセッサによって完了されることになるインストラクションのシーケンス内における複数のTLBIの受け取りのハンドリングを行うことを可能にする。
また上記のコンフィグレーションにおいては、TLBIの受け取りに先行して生成され、キャッシュ・コヒーレンシー・レベルに送られることのある非TLBIインストラクションの前に、TLBに対してTLBIを送ることも可能になる。独立したキュー内におけるTLBIのスケジューリングは、TLBに対するTLBIのブロックのない発行を可能にする。またこのコンフィグレーションは、TLBIにシーケンシャルに先行するインストラクションの完了を待機することなく、相互接続上においてTLBIを発行することも可能にする。
III. マルチ‐ビットTLBIレジスタを介した複数TLBIの完了の追跡
上記の応答プロセスによって提供される注目すべき恩典の1つは、リトライのないTLBIプロトコルの導入である。これは、TLBIインストラクションを実行しているマスタを、スヌーパのように見せかけ、それぞれのプロセッサに現在の未決のTLBIオペレーションの完了を追跡させることによって達成される。したがって、プロセッサのスヌーパは、プロセッサの未決の(完了していない)TLBIオペレーションに起因してスヌープ済みのTLBIのリトライを行う必要がなくなる。このように本発明は、リトライのないTLBIプロトコルを提供するが、これは、OSおよびTLBコントローラによって具体化されるTLBI応答プロトコルの直接的な結果である。
各プロセッサが、コンカレントに実行されているTLBIオペレーションの完了を追跡することを可能にするため、各プロセッサは、TLBI追跡レジスタを伴って設計される。一実施態様においては、TLBI追跡レジスタがソフトウエア・レジスタとして具体化され、プロセッサのキャッシュ内に値がストアされる。しかしながら、図2に示されている実施態様においては、TLBI追跡レジスタ241が、TLBコントローラ103(またはスヌーパ)によってコントロールされるハードウエア・レジスタとして提供されている。
TLBI追跡レジスタ241は、一連のエントリからなり、その各エントリは、マルチプロセッサ・システム内の特定のプロセッサに割り当てられている。レジスタを構成するエントリの数は、マルチプロセッサ・システム内のプロセッサの数に等しいとすることができるが、別の具体化においては、より多くの、あるいはより少ない数を用いることができる。したがって、ここでは、たとえばN‐プロセッサマルチプロセッサ・システムにおいて、各プロセッサのTLBIレジスタの最初のエントリが、プロセッサ1によって発行されたTLBIを追跡するために割り当てられ、各プロセッサのTLBIレジスタのN番目のエントリが、プロセッサNによって発行された別のTLBIを追跡するために割り当てられる。それに加えて、TLBI追跡レジスタを、プロセッサの数を表すN列およびいくつかの行を含む配列として構成してもよく、その場合の各行は、同一のプロセッサによって発行された異なるTLBI追跡するために使用される。この具体化によれば、単一プロセッサおよび/または複数プロセッサに、オーバーラップするコンカレントTLBIを発行することが許され、オーバーラップするコンカレントTLBIの完了の追跡が、効率的な態様で達成される。例示の実施態様においては、値1が、プロセッサにおいてTLBIオペレーションがまだ完了していないことを示し、値0が、そのプロセッサにおいてTLBIオペレーションが完了していることを示す。
図8は、一例のTLBIレジスタの論理表現であり、それぞれが、N‐プロセッサのマルチプロセッサ・システムにおけるプロセッサP0〜PNに対応する(N+1)個のエントリを包含している。TLBI追跡レジスタの具体化は、ブロックのない無効化を伴ってすべてのプロセスがTLBIを完了することを保証する。TLBIオペレーションがシステムの完了メッセージを受け取るためには、システムの各プロセッサにおいてTLBIオペレーションが完了されなければならない。1つの具体化においては、プロセッサ内におけるTLBIの完了が、TLBI追跡レジスタのそれぞれにおける対応するビットの値が0にセットされることによって示される。
図9は、8方向マルチプロセッサ・システムの1つのハードウエア・コンフィグレーションにおける線図表現であり、各プロセッサは、TLBI追跡レジスタを伴って設計され、相互接続されて、リトライのないTLBI応答プロトコルを可能にしている。各プロセッサ101は、参照番号(すなわち1〜8)によって識別されており、各プロセッサは残りすべてのプロセッサに対するバス接続を有している。プロセッサ1は、単一の入力ピンおよび単一の出力ピンを介して残りすべてのプロセッサと直接的に結合されており、それが使用されて、ビット・レジスタ・バス705を介したTLBI追跡レジスタ内の値の伝達が行われる。例示の実施態様においては、プロセッサ1が、マスタ・プロセッサ、つまりシステム・バス上においてTLBIオペレーションを発行した、完了を要求するプロセッサを表している。つまり、プロセッサ1がそのTLBIを発行するとき、TLBI追跡レジスタ241がリセットされる。その後ほかのプロセッサのそれぞれは、それぞれのキャッシュ・サブシステム・レベルにおいてTLBIの完了を追跡する。特定のプロセッサにおいてTLBIが完了すると、そのプロセッサがそのビット・レジスタ・バス705をアサートし、それがTLBI追跡レジスタ241内の関連ビットをセットする結果をもたらす。したがって、プロセッサ1は、その内部にあるTLBI追跡レジスタ241内の各ビットの状態をチェックするだけでシステム・バス上に発行されたTLBIオペレーションの完了を追跡することができる。
図10は、リトライのないTLBIプロトコルをサポートする8方向マルチプロセッサ・システムにおけるプロセッサの相互接続の第2のコンフィグレーションを例示している。しかしながら、図9に示されているプロセッサ対プロセッサの直接接続とは異なり、この実施態様のビット・レジスタ・バスは、単一の循環バスである。つまり、2つのプロセッサだけが相互に接続されており、TLBIオペレーションを完了したプロセッサと直接接続されていないプロセッサのTLBI追跡レジスタに対する更新は、ほかのプロセッサを横切る完了信号のルーティングを伴う。この実施態様は、バスがアドレス付きオペレーションをサポートしていることを必要とし、それ自体が、更新されようとしている追跡レジスタ内の特定のビットの識別も行う。このコンフィグレーションには、追加のワイヤリングおよびロジックが必要となるが、これは、任意サイズのマルチプロセッサ・システムに対してスケーラブルであり、それに対して図9のコンフィグレーションは、例示のような1対1態様で単一プロセッサ・チップの接続に利用可能なピンの数によって制限される。
図9および10のマルチプロセッサ・システムのコンフィグレーションを用いると、各プロセッサが、バリア・オペレーションを使用することなしに未決TLBIオペレーションの完了を追跡することができる。TLBIオペレーションを完了した各プロセッサが要求プロセッサに対し、ビット・レジスタ・バスを介してその完了を通知することから、プロセッサに対してシステム・バス上にバリア応答を発行させて、バリア・オペレーションの完了を表示させる必要がなくなる。
図11は、このプロセスのフローチャートであり、このプロセスは、TLBI追跡レジスタ241を使用して、プロセッサのTLBIオペレーションがいつ完了したかを決定する。このプロセスは、開始するとき、ブロック803に示されているように、ほかのプロセッサのTLBI追跡レジスタ241のスナップショットを取り込む。スナップショットを取り込む時点は多様となり得るしかしながら、この実施態様においては、プロセッサがTLBIオペレーションを開始した時点(すなわち、TLBIが相互接続上に発行されるとき)においてスナップショットが取り込まれるものとする。プロセッサは、それ自体のTLBI追跡レジスタ241の値をセットして、システム全体にわたるTLBIオペレーションのカレント状態を反映させる。
したがって、発行済みTLBIを伴う各プロセッサは、そのプロセッサにTLBI完了メッセージが返されるまで、アクティブなTLBI追跡レジスタ241の維持ならびにモニタを行う。あるプロセッサがそのPTEを無効化し、それ自体の、あるいはスヌープされたTLBIに応答してそれ自体の実行キュー109のドレイニングを行ったとき、そのTLBIを発行したプロセッサに対応するTLBI追跡レジスタ241内のビットが、ブロック805に示されているように、0にリセットされる。各プロセッサは、ブロック807に示されているように、それぞれのTLBI追跡レジスタ241に関して対応するビットの論理和を演算することによってシステム上におけるそれ自体のTLBIの完了を追跡する。
この追跡オペレーションは、さらに図8にも例示されており、そこには、各プロセッサ内のTLBI追跡配列のそれぞれの対応するエントリの論理和を演算することにより、特定のプロセッサのTLBIの完了を決定することが例示されている。たとえば、プロセッサP2においてプロセッサP0のTLBIオペレーションが完了した場合には、プロセッサP2のTLBI追跡配列内の対応するエントリ(スロット3)が値0を有することになる。したがって、図8に示されているように、各プロセッサ内におけるすべてのP0のTLBIオペレーションが完了すると、P0に対応するN個のエントリすべての論理和演算が結果の値として0をもたらし、いずれかのTLBIオペレーションが完了していなければ結果の値として1をもたらす。
図11に戻るが、ブロック809においては、ビットの論理和演算の結果が1となったか否かについての決定が行われる。論理和演算の結果の値が1となるときは、TLBIが完了してなく、発行プロセッサは、TLBIオペレーションの完了の追跡を継続しなければならない。TLBIがまだ完了していない場合に、発行プロセッサは、待機の後にTLBI追跡配列を再チェックし、TLBIオペレーションのシステム‐ワイドの完了の表示を調べる。これに対して値0がもたらされているときは、ブロック811に示されているように、そのプロセッサのTLBIオペレーションがシステム上において完了しており、それに続いて発行プロセッサは、ブロック813に示されているように、実行ユニットによるインストラクションの実行を再開することが可能になる。
以上、特定の実施態様を参照して本発明を説明してきたが、この説明は限定的な意味で解釈されるべきではない。本発明の説明を参照した後は、当業者にとって、開示されている実施態様の各種の修正をはじめ、本発明の変形実施態様が明らかなものとなろう。したがって、付随する特許請求の範囲に定義される本発明の精神ならびに範囲から逸脱することなく、その種の修正がなし得ることが企図されている。
本発明の特徴を好適に具体化することのできる、プロセッサの内部コンポーネントおよびメモリを含めて対称マルチプロセッサ・データ処理システムのコンポーネントを例示したブロック図である。 本発明の一実施態様に従って、データ処理システム上における複数のオーバーラップのあるTLBIオペレーションの完了の追跡に使用されるTLBIキューおよびTLBレジスタを伴って構成された図1のプロセッサのTLBサブシステムの拡大図を示したブロック図である。 本発明の一実施態様に従って、図1のプロセッサがTLBIの受け取りに応答し、TLBIオペレーションを管理するプロセスを例示したフローチャートである。 本発明の一実施態様に従って、プロセッサによって受け取られるTLBIの前および後にアドレスが変換されるインストラクションのハンドリングを行うプロセスが、そのオペレーションを完了するまでの処理を例示したフローチャートである。 本発明の一実施態様に従って、プロセッサ上においてTLBIオペレーションを完了している間に推論的スケジューリングが行われるインストラクションに関する、仮想アドレスならびに実アドレスをともに含むプロセッサ内の実行ユニットのキューを例示したブロック図である。 本発明の一実施態様に従って、プロセッサ上においてTLBIオペレーションを完了している間に推論的スケジューリングが行われるインストラクションの仮想アドレスを保持するための独立したタグ・レジスタを例示したブロック図である。 本発明の一実施態様に従って、互いに関して非同期で実行されるTLBIインストラクションおよび通常のインストラクションのストアのそれぞれに関する、独立のTLBIキューおよび非TLBIインストラクション・キューを例示したブロック図である。 本発明の一実施態様に従って、特定のプロセッサのTLBIオペレーションの完了を決定するために値の論理和演算が行われるTLBIレジスタの論理構成を示した説明図である。 本発明の一実施態様に従って、各プロセッサが、互いに直接結合される出力および入力ビット・レジスタ・バスのセットを包含し、TLBIレジスタの直接追跡が可能になるマルチプロセッサ・システムコンフィグレーションを示した説明図である。 本発明の一実施態様に従って、各プロセッサが、単一の出力および単一の入力ビット・レジスタ・バスを介して、隣接プロセッサのペアに結合されるマルチプロセッサ・システムコンフィグレーションを示した説明図である。 本発明の一実施態様に従って、図8のTLBIレジスタを使用してTLBIオペレーションの完了を決定するプロセスを図示したフローチャートである。
符号の説明
101 プロセッサ
102 変換索引バッファ(TLB)
103 TLBコントローラ
105 インストラクション・キュー
107 スヌーパ
108 実行ユニット
109 実行キュー
125 相互接続
130 メモリ
132 ページ・フレーム・テーブル(PFT)
134 ページ・テーブル・エントリ(PTE)
136 オペレーティング・システム(OS)
137 ページ違反割り込みハンドラ
138 アプリケーション・プログラム
239 TLBIキュー
241 TLBIレジスタ

Claims (14)

  1. マルチプロセッサ・データ処理システムであって、
    相互接続によって互いに結合されている第1のプロセッサおよび第2のプロセッサを含む複数のプロセッサを備え、
    各プロセッサは、変換索引バッファ(TLB)、少なくとも1つの実行ユニット、および関連する実行キューを含むキャッシュ・コヒーレンシー・サブシステムを含み、前記実行キューは、前記TLBによって対応する仮想アドレスから変換された実アドレスを伴うアドレス・インストラクションを保持し、
    前記相互接続によって前記複数のプロセッサに結合され、複数の、仮想および実アドレス変換ペアのページ・テーブル・エントリ(PTE)がストアされるページ・フレーム・テーブル(PFT)を含むメモリと、
    各プロセッサに関連して設けられ、前記複数のプロセッサのそれぞれによるTLB無効化インストラクション(TLBI)の受け取りに対する応答をコントロールするTLBI応答プロトコルの具体化のためのオペレーティング・ロジックとをさらに備え、
    前記第1のプロセッサのメモリ・アクセス・オペレーションに関連して前記PFTにおいてページ違反が発生するときに生成される第1のTLBIを前記第1のプロセッサが受け取ることに応答して、前記オペレーティング・ロジックが、前記第1のプロセッサに、前記相互接続上に前記第1のTLBIを発行する前に、前記第1のプロセッサの前記実行キュー内にキューされているアドレス・インストラクションのドレイニングを行わせ、前記第1のプロセッサの前記実行キューのドレイニングの完了に応答して、前記相互接続上に前記第1のTLBIを発行させるとともに、前記第2のプロセッサに、前記第1のプロセッサの前記実行キューのドレイニングが完了した後にのみ、前記相互接続上の前記第1のTLBIのスヌープを行わせる、マルチプロセッサ・データ処理システム。
  2. 前記オペレーティング・ロジックは、
    前記第1のプロセッサが前記第1のTLBIを受け取るとき、前記第1のプロセッサにおけるアドレス・インストラクションの処理を直ちに中止するための手段と、
    前記第1のプロセッサを除く前記複数のプロセッサのそれぞれからの前記第1のTLBIに関するTLBI完了メッセージの受け取りをモニタするための手段とを有し、
    前記TLBI完了メッセージは、前記第1のプロセッサを除く前記複数のプロセッサのそれぞれにおけるTLB内の対応するエントリの無効化が完了したことを示し、
    前記第1のプロセッサを除く前記複数のプロセッサのそれぞれから前記TLBI完了メッセージが受け取られるときに限り、前記第1のプロセッサにおけるアドレス・インストラクションの処理を再開するための手段をさらに有する、請求項1に記載のマルチプロセッサ・データ処理システム。
  3. 前記複数のプロセッサのそれぞれに関連して設けられ、自プロセッサを除く他のプロセッサによって前記相互接続上に置かれるすべてのトランザクションをスヌープするスヌーパをさらに備え、
    前記第1のプロセッサが前記相互接続上に前記第1のTLBIを発行することに応答して、前記第2のプロセッサの前記スヌーパが、前記第1のTLBIをスヌープし、当該スヌープした第1のTLBIを前記第2のプロセッサのTLBへ転送する、請求項2に記載のマルチプロセッサ・データ処理システム。
  4. 前記第1のプロセッサの前記実行キューのドレイニングが行われている間に、前記第1のプロセッサの前記スヌーパが、前記第2のプロセッサから前記相互接続上に発行される第2のTLBIをスヌープすることに応答して、前記第1のプロセッサが、前記第2のプロセッサに対し前記第2のTLBIのリトライを強制する、請求項3に記載のマルチプロセッサ・データ処理システム。
  5. 前記第1のプロセッサを除く前記複数のプロセッサのそれぞれからの前記第1のTLBIに関するTLBI完了メッセージの受け取りを待機している間に、前記第1のプロセッサの前記スヌーパが、前記第2のプロセッサから前記相互接続上に発行される第2のTLBIをスヌープすることに応答して、前記第1のプロセッサが、前記第1のプロセッサのTLB内の対応するエントリを無効化し、前記スヌープされた第2のTLBIに関するTLBI完了メッセージを直ちに発行する、請求項3に記載のマルチプロセッサ・データ処理システム。
  6. 前記第2のTLBIを発行した後に、前記第2のプロセッサの前記スヌーパが、前記第1のTLBIをスヌープすることに応答して、前記第2のプロセッサは、前記第2のプロセッサのTLB内の対応するエントリを無効化し、前記スヌープされた第1のTLBIに関するTLBI完了メッセージを直ちに発行する、請求項4に記載のマルチプロセッサ・データ処理システム。
  7. 相互接続によって互いに結合されている第1のプロセッサおよび第2のプロセッサを備えたマルチプロセッサ・データ処理システムにおいて、前記第1のプロセッサおよび前記第2のプロセッサからのコンカレントな変換索引バッファ無効化インストラクション(TLBI)のハンドリングを行うための方法であって、
    前記第1のプロセッサのメモリ・アクセス・オペレーションに関連してページ違反が発生するときに生成される第1のTLBIを前記第1のプロセッサが受け取ることに応答して、前記第1のプロセッサのキャッシュ・コヒーレンシー・サブシステムにおけるインストラクションの実行を直ちに中止するステップと、
    前記第1のプロセッサの変換索引バッファ(TLB)内の対応するエントリを無効化するステップと、
    前記第1のプロセッサの前記キャッシュ・コヒーレンシー・サブシステムにおけるすべての実行キュー内にキューされているアドレス・インストラクションのドレイニングを行うステップと、
    前記実行キューのドレイニングが完了したときに限り、前記第1のプロセッサから前記相互接続上に前記第1のTLBIを発行するステップとを含み、
    前記実行キューのドレイニングが完了した後にのみ、前記第2のプロセッサが前記相互接続上の前記第1のTLBIのスヌープを行う、方法。
  8. 前記第2のプロセッサから前記第1のTLBIに関するTLBI完了メッセージが受け取られる後に限り、前記第1のプロセッサにおけるインストラクションの実行を再開するステップをさらに含み、
    前記TLBI完了メッセージは、前記第2のプロセッサにおけるTLB内の対応するエントリの無効化が完了したことを示す、請求項7に記載の方法。
  9. 前記第1のプロセッサが、前記第2のプロセッサからのオーバーラップする第2のTLBIに関して前記相互接続のスヌーピングを行うステップと、
    前記第2のTLBIがスヌープされるとき、前記実行キューのドレイニングが完了していなければ、前記第2のプロセッサに対し前記第2のTLBIのリトライを強制するステップとをさらに含む、請求項7に記載の方法。
  10. 前記第2のTLBIがスヌープされ、かつ前記実行キューのドレイニングが完了しているとき、前記第2のTLBIに応答して、前記第1のプロセッサのTLB内の対応するエントリを無効化し、前記第2のプロセッサに対し前記第のTLBIに関するTLBI完了メッセージを直ちに発行するステップをさらに含む、請求項9に記載の方法。
  11. 相互接続によって互いに結合されている複数のプロセッサを備えたマルチプロセッサ・データ処理システムにおいて用いるためのプロセッサであって、
    少なくとも1つの実行ユニットを備え、
    前記実行ユニットのそれぞれは、当該実行ユニットに関連して設けられ、かつ関連する実行ユニットによる実行のために変換済み実アドレスを有するインストラクションをスケジュールするための実行キューと、前記実行キューに結合されているキャッシュ・コヒーレンシー・サブシステムを有し、
    前記キャッシュ・コヒーレンシー・サブシステムは、
    変換索引バッファ(TLB)および関連するTLBコントローラと、
    前記実行ユニットにおいて実行するインストラクションを受け取るための手段とを含み、
    前記インストラクションは、当該プロセッサのメモリ・アクセス・オペレーションに関連するページ違反が発生するときに生成されるTLB無効化インストラクション(TLBI)を含み、
    前記TLBIの受け取りに応答して、(1)最初に当該プロセッサの各実行キューのドレイニングを行い、(2)次に前記TLBIを前記相互接続上に発行する、TLBI応答プロトコルを具体化するためのオペレーティング・ロジックをさらに含む、プロセッサ。
  12. 当該プロセッサを前記相互接続に結合するとともに、他のプロセッサおよびメモリを含めた外部コンポーネントに結合するための接続手段と、
    各実行キューのドレイニングの完了に応答して、前記相互接続上に前記TLBIを発行するための手段とをさらに含む、請求項11に記載のプロセッサ。
  13. 前記オペレーティング・ロジックは、
    前記TLBIが受け取られるときに、当該プロセッサにおけるインストラクションの処理を中止するための手段と、
    当該プロセッサを除く前記複数のプロセッサのそれぞれからの前記TLBIに関するTLBI完了メッセージの受け取りをモニタするための手段と、
    前記複数のプロセッサのすべてから前記TLBI完了メッセージが受け取られるときに限り、当該プロセッサにおけるインストラクションの処理を再開するための手段とを含む、請求項11に記載のプロセッサ。
  14. 前記外部コンポーネントによって前記相互接続上に置かれるすべてのトランザクションをスヌープするスヌーパをさらに含み、
    前記スヌーパが、他のプロセッサから前記相互接続上に発行されるTLBIをスヌープすることに応答して、前記オペレーティング・ロジックが、前記スヌープされたTLBIを当該プロセッサの前記TLBへ転送し、前記TLB内の対応するエントリを無効化し、かつ前記スヌープされたTLBIに関するTLBI完了メッセージを直ちに発行する、請求項12に記載のプロセッサ。
JP2004128785A 2003-04-28 2004-04-23 マルチプロセッサ・データ処理システム、変換索引バッファ無効化インストラクション(tlbi)のハンドリングを行うための方法、およびプロセッサ Expired - Fee Related JP3927556B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/425,425 US7073043B2 (en) 2003-04-28 2003-04-28 Multiprocessor system supporting multiple outstanding TLBI operations per partition

Publications (2)

Publication Number Publication Date
JP2004326798A JP2004326798A (ja) 2004-11-18
JP3927556B2 true JP3927556B2 (ja) 2007-06-13

Family

ID=33299509

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004128785A Expired - Fee Related JP3927556B2 (ja) 2003-04-28 2004-04-23 マルチプロセッサ・データ処理システム、変換索引バッファ無効化インストラクション(tlbi)のハンドリングを行うための方法、およびプロセッサ

Country Status (2)

Country Link
US (1) US7073043B2 (ja)
JP (1) JP3927556B2 (ja)

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996843B2 (en) 1999-08-25 2011-08-09 Qnx Software Systems Gmbh & Co. Kg Symmetric multi-processor system
US7757033B1 (en) 2004-02-13 2010-07-13 Habanero Holdings, Inc. Data exchanges among SMP physical partitions and I/O interfaces enterprise servers
US7633955B1 (en) 2004-02-13 2009-12-15 Habanero Holdings, Inc. SCSI transport for fabric-backplane enterprise servers
US7873693B1 (en) 2004-02-13 2011-01-18 Habanero Holdings, Inc. Multi-chassis fabric-backplane enterprise servers
US7685281B1 (en) 2004-02-13 2010-03-23 Habanero Holdings, Inc. Programmatic instantiation, provisioning and management of fabric-backplane enterprise servers
US8868790B2 (en) 2004-02-13 2014-10-21 Oracle International Corporation Processor-memory module performance acceleration in fabric-backplane enterprise servers
US7843906B1 (en) 2004-02-13 2010-11-30 Habanero Holdings, Inc. Storage gateway initiator for fabric-backplane enterprise servers
US8713295B2 (en) 2004-07-12 2014-04-29 Oracle International Corporation Fabric-backplane enterprise servers with pluggable I/O sub-system
US7243200B2 (en) * 2004-07-15 2007-07-10 International Business Machines Corporation Establishing command order in an out of order DMA command queue
US7281116B2 (en) * 2004-07-30 2007-10-09 Hewlett-Packard Development Company, L.P. Multiprocessor system having plural memory locations for respectively storing TLB-shootdown data for plural processor nodes
US7711988B2 (en) * 2005-06-15 2010-05-04 The Board Of Trustees Of The University Of Illinois Architecture support system and method for memory monitoring
US7770170B2 (en) * 2005-07-12 2010-08-03 Microsoft Corporation Blocking local sense synchronization barrier
US7516247B2 (en) 2005-08-12 2009-04-07 Advanced Micro Devices, Inc. Avoiding silent data corruption and data leakage in a virtual environment with multiple guests
US7543131B2 (en) 2005-08-12 2009-06-02 Advanced Micro Devices, Inc. Controlling an I/O MMU
US7793067B2 (en) * 2005-08-12 2010-09-07 Globalfoundries Inc. Translation data prefetch in an IOMMU
US7480784B2 (en) 2005-08-12 2009-01-20 Advanced Micro Devices, Inc. Ensuring deadlock free operation for peer to peer traffic in an input/output memory management unit (IOMMU)
US7739476B2 (en) 2005-11-04 2010-06-15 Apple Inc. R and C bit update handling
US8161480B2 (en) 2007-05-29 2012-04-17 International Business Machines Corporation Performing an allreduce operation using shared memory
US8447911B2 (en) * 2007-07-05 2013-05-21 Board Of Regents, University Of Texas System Unordered load/store queue
US8122229B2 (en) * 2007-09-12 2012-02-21 Convey Computer Dispatch mechanism for dispatching instructions from a host processor to a co-processor
US8156307B2 (en) * 2007-08-20 2012-04-10 Convey Computer Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set
US8561037B2 (en) 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US8095735B2 (en) * 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US7865675B2 (en) * 2007-12-06 2011-01-04 Arm Limited Controlling cleaning of data values within a hardware accelerator
US8332660B2 (en) * 2008-01-02 2012-12-11 Arm Limited Providing secure services to a non-secure application
US8775824B2 (en) * 2008-01-02 2014-07-08 Arm Limited Protecting the security of secure data sent from a central processor for processing by a further processing device
US8422402B2 (en) 2008-04-01 2013-04-16 International Business Machines Corporation Broadcasting a message in a parallel computer
US8281053B2 (en) 2008-07-21 2012-10-02 International Business Machines Corporation Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations
US20100115233A1 (en) * 2008-10-31 2010-05-06 Convey Computer Dynamically-selectable vector register partitioning
US8205066B2 (en) * 2008-10-31 2012-06-19 Convey Computer Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor
US8495261B2 (en) * 2008-12-12 2013-07-23 International Business Machines Corporation Redispatching suspended tasks after completion of I/O operations absent I/O interrupts
US8412911B2 (en) * 2009-06-29 2013-04-02 Oracle America, Inc. System and method to invalidate obsolete address translations
US8423745B1 (en) 2009-11-16 2013-04-16 Convey Computer Systems and methods for mapping a neighborhood of data to general registers of a processing element
US8949577B2 (en) 2010-05-28 2015-02-03 International Business Machines Corporation Performing a deterministic reduction operation in a parallel computer
US9658877B2 (en) 2010-08-23 2017-05-23 Empire Technology Development Llc Context switching using a context controller and on-chip context cache
US8776081B2 (en) 2010-09-14 2014-07-08 International Business Machines Corporation Send-side matching of data communications messages
US8566841B2 (en) 2010-11-10 2013-10-22 International Business Machines Corporation Processing communications events in parallel active messaging interface by awakening thread from wait state
WO2012070291A1 (ja) * 2010-11-26 2012-05-31 インターナショナル・ビジネス・マシーンズ・コーポレーション キャッシュコヒーレンシ制御の方法、システムおよびプログラム
US9916257B2 (en) * 2011-07-26 2018-03-13 Intel Corporation Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory
US8893083B2 (en) 2011-08-09 2014-11-18 International Business Machines Coporation Collective operation protocol selection in a parallel computer
US8910178B2 (en) 2011-08-10 2014-12-09 International Business Machines Corporation Performing a global barrier operation in a parallel computer
US8631212B2 (en) 2011-09-25 2014-01-14 Advanced Micro Devices, Inc. Input/output memory management unit with protection mode for preventing memory access by I/O devices
US9342452B2 (en) * 2011-10-07 2016-05-17 Hewlett Packard Enterprise Development Lp Mapping processor address ranges to persistent storage
WO2013085518A1 (en) * 2011-12-08 2013-06-13 Intel Corporation A method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution
US8706847B2 (en) 2012-02-09 2014-04-22 International Business Machines Corporation Initiating a collective operation in a parallel computer
US9495135B2 (en) 2012-02-09 2016-11-15 International Business Machines Corporation Developing collective operations for a parallel computer
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US9092382B2 (en) * 2012-11-02 2015-07-28 International Business Machines Corporation Reducing microprocessor performance loss due to translation table coherency in a multi-processor system
US9330017B2 (en) 2012-11-02 2016-05-03 International Business Machines Corporation Suppressing virtual address translation utilizing bits and instruction tagging
US9128777B2 (en) * 2013-01-28 2015-09-08 Google Inc. Operating and maintaining a cluster of machines
US10445243B2 (en) 2013-03-14 2019-10-15 Nvidia Corporation Fault buffer for resolving page faults in unified virtual memory system
DE102013022168B4 (de) * 2013-03-14 2023-03-09 Nvidia Corporation Migrationsschema für vereinheitlichtes virtuelles Speichersystem
DE102013022169A1 (de) * 2013-03-14 2014-09-18 Nvidia Corporation Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem
DE102013022166B4 (de) * 2013-03-14 2024-04-25 Nvidia Corporation Seitenzustandsverzeichnis zur verwaltung eines vereinheitlichten virtuellen speichers
US9785554B2 (en) * 2014-05-30 2017-10-10 International Business Machines Corporation Synchronizing updates of page table status indicators in a multiprocessing environment
US20160259728A1 (en) * 2014-10-08 2016-09-08 Via Alliance Semiconductor Co., Ltd. Cache system with a primary cache and an overflow fifo cache
US9684606B2 (en) 2014-11-14 2017-06-20 Cavium, Inc. Translation lookaside buffer invalidation suppression
US9501425B2 (en) 2014-11-14 2016-11-22 Cavium, Inc. Translation lookaside buffer management
US9697137B2 (en) * 2014-11-14 2017-07-04 Cavium, Inc. Filtering translation lookaside buffer invalidations
US9910776B2 (en) 2014-11-14 2018-03-06 Cavium, Inc. Instruction ordering for in-progress operations
US9870328B2 (en) * 2014-11-14 2018-01-16 Cavium, Inc. Managing buffered communication between cores
US9665505B2 (en) 2014-11-14 2017-05-30 Cavium, Inc. Managing buffered communication between sockets
US9830198B2 (en) 2015-12-22 2017-11-28 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system
US9715459B2 (en) 2015-12-22 2017-07-25 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system
US9928119B2 (en) * 2015-12-22 2018-03-27 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system
US9898416B2 (en) 2015-12-22 2018-02-20 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system
US9575815B1 (en) * 2015-12-22 2017-02-21 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system
US9779028B1 (en) 2016-04-01 2017-10-03 Cavium, Inc. Managing translation invalidation
EP3255550B1 (en) * 2016-06-08 2019-04-03 Google LLC Tlb shootdowns for low overhead
US10540292B2 (en) 2016-06-08 2020-01-21 Google Llc TLB shootdowns for low overhead
US11327759B2 (en) * 2018-09-25 2022-05-10 Marvell Asia Pte, Ltd. Managing low-level instructions and core interactions in multi-core processors
US10817300B2 (en) 2018-10-26 2020-10-27 Marvell Asia Pte, Ltd. Managing commit order for an external instruction relative to two unissued queued instructions
US10977183B2 (en) * 2018-12-11 2021-04-13 International Business Machines Corporation Processing a sequence of translation entry invalidation requests with regard to draining a processor core
US10740239B2 (en) * 2018-12-11 2020-08-11 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system
US10817434B2 (en) 2018-12-19 2020-10-27 International Business Machines Corporation Interruptible translation entry invalidation in a multithreaded data processing system
US11263043B1 (en) 2019-07-19 2022-03-01 Marvell Asia Pte, Ltd. Managing processor core synchronization using interrupts
KR102400977B1 (ko) * 2020-05-29 2022-05-25 성균관대학교산학협력단 프로세서를 통한 페이지 폴트 처리 방법
US12001343B1 (en) * 2022-12-30 2024-06-04 International Business Machines Corporation Selective distribution of translation entry invalidation requests in a multithreaded data processing system

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60254346A (ja) * 1984-05-31 1985-12-16 Toshiba Corp マルチプロセツサシステム
JPH01109452A (ja) * 1987-10-22 1989-04-26 Fujitsu Ltd 変換索引バッファ情報の消去制御方式
JPH04145570A (ja) * 1990-10-05 1992-05-19 Fujitsu Ltd 計算機システムのオペレーション制御方式
JPH05151084A (ja) * 1991-11-26 1993-06-18 Nec Corp Tlbエントリクリア方式
US5437017A (en) * 1992-10-09 1995-07-25 International Business Machines Corporation Method and system for maintaining translation lookaside buffer coherency in a multiprocessor data processing system
US5613083A (en) * 1994-09-30 1997-03-18 Intel Corporation Translation lookaside buffer that is non-blocking in response to a miss for use within a microprocessor capable of processing speculative instructions
US5906001A (en) * 1996-12-19 1999-05-18 Intel Corporation Method and apparatus for performing TLB shutdown operations in a multiprocessor system without invoking interrup handler routines
US5996085A (en) * 1997-07-15 1999-11-30 International Business Machines Corporation Concurrent execution of machine context synchronization operations and non-interruptible instructions
US6105113A (en) * 1997-08-21 2000-08-15 Silicon Graphics, Inc. System and method for maintaining translation look-aside buffer (TLB) consistency
US6119204A (en) * 1998-06-30 2000-09-12 International Business Machines Corporation Data processing system and method for maintaining translation lookaside buffer TLB coherency without enforcing complete instruction serialization
US6345352B1 (en) * 1998-09-30 2002-02-05 Apple Computer, Inc. Method and system for supporting multiprocessor TLB-purge instructions using directed write transactions
US6189078B1 (en) * 1998-12-22 2001-02-13 Unisys Corporation System and method for increasing data transfer throughput for cache purge transactions using multiple data response indicators to maintain processor consistency
US6263403B1 (en) * 1999-10-31 2001-07-17 Hewlett-Packard Company Method and apparatus for linking translation lookaside buffer purge operations to cache coherency transactions
US6633967B1 (en) * 2000-08-31 2003-10-14 Hewlett-Packard Development Company, L.P. Coherent translation look-aside buffer

Also Published As

Publication number Publication date
JP2004326798A (ja) 2004-11-18
US20040215898A1 (en) 2004-10-28
US7073043B2 (en) 2006-07-04

Similar Documents

Publication Publication Date Title
JP3927556B2 (ja) マルチプロセッサ・データ処理システム、変換索引バッファ無効化インストラクション(tlbi)のハンドリングを行うための方法、およびプロセッサ
US7617378B2 (en) Multiprocessor system with retry-less TLBI protocol
US7350027B2 (en) Architectural support for thread level speculative execution
US8321634B2 (en) System and method for performing memory operations in a computing system
US8327101B2 (en) Cache management during asynchronous memory move operations
US7921275B2 (en) Method for enabling direct prefetching of data during asychronous memory move operation
US7930504B2 (en) Handling of address conflicts during asynchronous memory move operations
US7991981B2 (en) Completion of asynchronous memory move in the presence of a barrier operation
US8095758B2 (en) Fully asynchronous memory mover
US8356151B2 (en) Reporting of partially performed memory move
US20110208894A1 (en) Physical aliasing for thread level speculation with a speculation blind cache
US20090198935A1 (en) Method and system for performing an asynchronous memory move (amm) via execution of amm store instruction within instruction set architecture
US8275963B2 (en) Asynchronous memory move across physical nodes with dual-sided communication
JPH09138779A (ja) スヌープ処理方法
EP0514024A2 (en) Method and apparatus for an improved memory architecture
US20090198937A1 (en) Mechanisms for communicating with an asynchronous memory mover to perform amm operations
US10621103B2 (en) Apparatus and method for handling write operations
US20090106498A1 (en) Coherent dram prefetcher
JPH0670779B2 (ja) フェッチ方法
JP2020523674A (ja) システム内のキャッシュ転送のオーバーヘッドの削減
US7937570B2 (en) Termination of in-flight asynchronous memory move
US5875468A (en) Method to pipeline write misses in shared cache multiprocessor systems
US5016168A (en) Method for storing into non-exclusive cache lines in multiprocessor systems
US6480915B1 (en) Bus protocol and token manager for SMP execution of global operations utilizing a single token with implied release
US8015380B2 (en) Launching multiple concurrent memory moves via a fully asynchronoous memory mover

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061114

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070109

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070209

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070302

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees