(57)【要約】【課題】  パーティション内の複数のプロセッサからの複数のＴＬＢＩオペレーションのコンカレントな完了を可能にするＴＬＢＩプロトコルを具体化する、対称マルチプロセッサ・データ処理システム（ＳＭＰ）を提供する。【解決手段】  ＴＬＢＩが受け取られてマスタ・プロセッサのＴＬＢ内のエントリが無効化されるとき、プロセッサは、ＴＬＢＩプロトコルを起動して、それがローカル・バリア・インストラクションに類似したＴＬＢＩのハンドリングをもたらす。対応するＴＬＢエントリが無効化される。また、実行ユニット・キューに対するフェッチ済みインストラクションの転送が停止され、実行ユニットによる処理が中止され、かつ実行ユニット・キュー内のキューイング済みインストラクションが削除される。キューが完全にドレイニングされた後に、相互接続上においてＴＬＢＩが発行され、ほかのスヌーピング・プロセッサのＴＬＢ内の対応するエントリを無効化する。【選択図】      図２
2004326798.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサ・データ処理システム（ＭＰ）であって、
相互接続によって互いに結合されている第１のプロセッサおよび第２のプロセッサを含む複数のプロセッサであって、各プロセッサは、変換索引バッファ（ＴＬＢ）、少なくとも１つの実行ユニット、および関連する実行キューを含むキャッシュ・コヒーレンシー・サブシステムを含み、前記実行キューは、前記ＴＬＢによって対応する仮想アドレスから変換された実アドレスを伴うキュー・アドレス・インストラクションを保持する複数のプロセッサと、
前記相互接続によって前記複数のプロセッサに結合されるメモリであって、複数の、仮想および実アドレス変換ペアのページ・テーブル・エントリ（ＰＴＥ）がストアされるページ・フレーム・テーブル（ＰＦＴ）を含むメモリと、
各プロセッサに関連付けされた、前記複数のプロセッサのそれぞれによるＴＬＢＩの受け取りに対する応答をコントロールするＴＬＢＩ応答プロトコルの具体化のためのオペレーティング・ロジックとを含み、
前記第１のプロセッサによる前記ＴＬＢＩの受け取りに対する応答して、前記ＴＬＢＩ応答プロトコルが、前記第１のプロセッサに、前記相互接続上に前記ＴＬＢＩを発行する前に、前記第１のプロセッサの前記実行キューから、キューされているアドレス・インストラクションのドレイニングを行わせる、マルチプロセッサ・データ処理システム（ＭＰ）。
【請求項２】
前記実行キューのドレイニングの完了に応答して、前記ＴＬＢＩ応答プロトコルが前記相互接続上に前記ＴＬＢＩを発行するものとし、
前記ＴＬＢＩ応答プロトコルは、
前記ＴＬＢＩが受け取られたとき、前記第１のプロセッサにおけるアドレス・インストラクションの処理を中止するための手段と、
前記第１のプロセッサを除く前記複数のプロセッサのそれぞれからの完了メッセージの受け取りをモニタするための手段と、
前記完了メッセージが受け取られたときに限り、前記第１のプロセッサがアドレス・インストラクションの処理を再開するための手段を含む、請求項１に記載のシステム。
【請求項３】
さらに、
前記複数のプロセッサのそれぞれに関連付けされているスヌーパであって、ほかのプロセッサによって前記相互接続上に置かれるすべてのトランザクションをスヌープするスヌーパを含み、
前記第１のプロセッサが前記相互接続上に前記ＴＬＢＩを発行することに応答して、前記第２のプロセッサのスヌーパが、前記ＴＬＢＩをスヌープし、前記ＴＬＢＩを前記第２のプロセッサのＴＬＢへ転送する、請求項２に記載のシステム。
【請求項４】
前記実行キューをドレイニングする間の、前記第１のプロセッサの前記スヌーパによる、前記第２のプロセッサからの第２のＴＬＢＩのスヌープに応答して、前記第１のプロセッサが前記第２のＴＬＢＩのリトライを行う、請求項２に記載のシステム。
【請求項５】
前記第２のプロセッサからのＴＬＢＩのスヌープに応答して、前記第１のプロセッサが、第１のプロセッサＴＬＢ内の対応するエントリを無効化し、前記スヌープされたＴＬＢＩに関するＴＬＢＩ完了メッセージを直ちに発行する、請求項２に記載のシステム。
【請求項６】
前記第２のプロセッサが、前記第１のプロセッサのＴＬＢＩを、前記第２のプロセッサのＴＬＢＩを発行した後にスヌープした場合に、前記第２のプロセッサは、第２のプロセッサＴＬＢ内の対応するエントリを無効化し、前記スヌープされた第１のプロセッサのＴＬＢＩに関するＴＬＢＩ完了メッセージを直ちに発行する、請求項４に記載のシステム。
【請求項７】
さらに、
前記ＰＦＴにおいてページ違反が発生すると、前記第１のプロセッサに対して送られる前記ＴＬＢＩを生成するオペレーティング・システム（ＯＳ）と、
前記プロセッサの前記実行ユニットに対してインストラクション・ストリームを提供するアプリケーションを含み、前記インストラクション・ストリームは、実行キューに入れられる前に実アドレスへの仮想アドレスの変換を要求したメモリ・アクセス・インストラクションを含む、請求項１に記載のシステム。
【請求項８】
さらに、
前記メモリ・アクセス・インストラクションを順序どおりに前記ＴＬＢへ転送し、前記変換を完了するためのプロセッサ・オペレーティング手段を含み、
前記ＴＬＢＩ応答プロトコルは、前記第１のプロセッサにおいてすべてのインストラクションの処理を中止し、前記ＭＰ上においてＴＬＢＩが完了するまでインストラクションの転送を停止し、さらに、
前記ＴＬＢＩの完了に続いて前記インストラクションの転送を再開するための手段を含む、請求項７に記載のシステム。
【請求項９】
第１のプロセッサおよび第２のプロセッサを伴う対称マルチプロセッサ・データ処理システム（ＭＰ）内における、前記第１のプロセッサおよび前記第２のプロセッサからのコンカレント変換索引バッファ無効化（ＴＬＢＩ）のハンドリングを行うための方法であって、
前記第１のプロセッサにおけるＴＬＢＩの受け取りに応答して、直ちに、前記第１のプロセッサのキャッシュ・コヒーレンシー・サブシステムにおけるインストラクションの実行を中止するステップと、
前記第１のプロセッサの変換索引バッファ（ＴＬＢ）内の対応するエントリを無効化するステップと、
前記第１のプロセッサの前記キャッシュ・コヒーレンシー・サブシステムにおけるすべての実行キューのドレイニングを行うステップと、
前記実行キューがドレイニングを完了したときに限り、システム相互接続に対して前記ＴＬＢＩを発行するステップ、
を含む方法。
【請求項１０】
さらに、前記第２のプロセッサからＴＬＢＩ完了メッセージが返された後に限り、インストラクションの実行を再開するステップ、を含む、請求項９に記載の方法。
【請求項１１】
さらに、前記第２のプロセッサからのオーバーラップするＴＬＢＩに関して前記相互接続のスヌーピングを行うステップと、
前記オーバーラップするＴＬＢＩがスヌープされたとき、前記実行キューがドレイニングを完了していなければ、前記オーバーラップするＴＬＢＩのリトライを行うステップ、を含む、請求項９に記載の方法。
【請求項１２】
さらに、
前記オーバーラップするＴＬＢＩがスヌープされ、かつ前記キューがドレイニングを完了しているとき、前記オーバーラップするＴＬＢＩに応答して、前記ＴＬＢ内の対応するエントリを無効化し、前記第２のプロセッサに対して直ちに完了メッセージを発行するステップ、を含む、請求項１１に記載の方法。
【請求項１３】
プロセッシング・ユニットであって、
キャッシュ・コヒーレンシー・サブシステムを含み、前記キャッシュ・コヒーレンシー・サブシステムは、
変換索引バッファ（ＴＬＢ）および関連するＴＬＢコントローラと、
実行ユニットと、
前記実行ユニットによる実行のための変換済み実アドレスを有するインストラクションのスケジューリングを行う実行キューと、
前記実行ユニットにおいて実行する、ＴＬＢＩを含むインストラクションを受け取るための手段と、
前記ＴＬＢＩの受け取りに応答する、相互接続上に前記ＴＬＢＩを発行する前に、第１のプロセッサの各実行キューのドレイニングを行うＴＬＢＩプロトコルを具体化するための手段と、
を含む、プロセッシング・ユニット。
【請求項１４】
さらに、
前記プロセッサを、ほかのプロセッサならびにメモリを含めた外部コンポーネントに結合するための相互接続手段と、
各実行ユニット・キューのドレイニングの完了に応答して、前記相互接続手段上に前記ＴＬＢＩを発行するための手段、
を含む、請求項１３に記載のプロセッシング・ユニット。
【請求項１５】
さらに、前記ＴＬＢＩ応答プロトコルは、
前記ＴＬＢＩが受け取られたときにインストラクションの処理を中止するための手段と、
前記第１のプロセッサを除く前記複数のプロセッサのそれぞれからの完了メッセージの受け取りをモニタするための手段と、
前記完了メッセージが受け取られたときに限り、インストラクションの処理を再開するための手段と、
を含む、請求項１３に記載のプロセッシング・ユニット。
【請求項１６】
さらに、
前記外部コンポーネントによって前記相互接続上に置かれるすべてのトランザクションをスヌープするスヌーパを含み、
前記相互接続上におけるＴＬＢＩのスヌープに応答して、前記ＴＬＢＩ応答プロトコルが、前記ＴＬＢＩを前記ＴＬＢへ転送し、第１のプロセッサＴＬＢ内の対応するエントリを無効化し、かつ直ちに前記スヌープされたＴＬＢＩに関するＴＬＢＩ完了メッセージを発行する、請求項１４に記載のプロセッシング・ユニット。
【請求項１７】
さらに、前記ＴＬＢＩの完了に続いて、前記インストラクションの転送を再開するための手段を含む、請求項１６に記載のプロセッシング・ユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してデータ処理システムに関し、特に、マルチプロセッサ・データ処理システム（マルチプロセッサ・システム）のプロセッサ内における変換索引バッファ（ＴＬＢ）に関する。詳細には、本発明は、マルチプロセッサ・システム内において複数のＴＬＢ無効インストラクションによって惹起される伝統的な遅延を防止するための方法およびシステムに関する。
【背景技術】
【０００２】
典型的な対称マルチプロセッサ・データ処理システム（ＳＭＰ）は、少なくとも２つのプロセッサ（または中央処理ユニット（ＣＰＵ））、メモリ、および入力／出力（Ｉ／Ｏ）デバイスを含んでいる。それぞれのプロセッサは、ロジックおよびそのほかのコンポーネントからなり、それには、メモリへアクセスするアドレス・インストラクションの実行に使用されるキャッシュ・サブシステム・レベル（またはキャッシュ・コヒーレンシー・レベル）における複数の実行ユニットが含まれる。アドレス・インストラクションは、インストラクション・キャッシュ（またはメモリ）からロード／フェッチされ、初期処理に続いて（たとえば、ロード／ストア・ユニット（ＬＳＵ）により）、それらの実行ユニットに関連付けされたキューへ転送される。
【０００３】
システム設計に応じて、これらのキューは、ロード・インストラクション、ストア・インストラクション、プリフェッチ・インストラクション等のための独立したキューを含むことがある。これらのキューは、ＦＩＦＯ（先入れ先出し）キューとして動作し、その結果、キューに入れられたインストラクションは、順序どおりに実行される。しかしながら、それぞれの実行用に独立したキューを有することの最終的な効果は、個別のインストラクションが、実際のインストラクションのシーケンスに関して順序を外れて実行される可能性があるということになる。
【０００４】
メモリは、ロジック・コンポーネントおよび個別のブロックのシーケンスからなり、その中にはインストラクション（またはデータ）のページをストアすることができる。これらのブロックは、多数の物理ロケーションを含んでおり、そのそれぞれが、割り当て済みの実アドレスを有している。実アドレスは、メモリ・アクセスを必要とするプロセッサによって実行される各インストラクション（たとえば、ロード・インストラクションおよびストア・インストラクション）に関連付けされる。このように実アドレスは、プロセッサの実行ユニットによって使用されるインストラクションおよび／またはデータのストアならびにロードのための、メモリ内の関連物理ロケーションに対するアクセスを可能にする。
【０００５】
アプリケーションおよびプロセス・レベルにおいてシステムの動作を向上させるために、今日の多くのコンピュータ・システムは、仮想メモリ・システムを使用して、プロセッサによって実行される各種プロセスに対するメモリの管理ならびに割り付けを行っている。仮想メモリ・システムは、各プロセッサが、実際の実アドレスを必要とすることなく、あたかもそのプロセスがシステムによって提供されるフル・レンジのアドレスのコントロールを有しているかのように動作することを可能にする。オペレーティング・システムは、各プロセス用の仮想アドレス空間を、そのシステム用の実際の物理空間にマップし、仮想アドレスから実アドレスへのマッピングは、メモリ内に維持されているページ・フレーム・テーブル（ＰＦＴ）の使用を介して通常は管理される。ＰＦＴは、ページ・ディレクトリおよび仮想アドレスと実アドレスの変換ペアのテーブルを包含しており、それぞれは、ページ・テーブル・エントリ（ＰＴＥ）と呼ばれている。
【０００６】
プロセッサによるあらゆるメモリ・アクセス・オペレーション（たとえば、インストラクションのフェッチ、インストラクションのロード／ストア、メモリのプリフェッチ）は、実アドレスを必要とする。しかしながら、メモリ・アクセス・オペレーションを遂行するインストラクションがそのプロセッサによって最初にフェッチされ、処理されるとき、通常は仮想アドレスが獲得される。したがって、実行のためのインストラクションのスケジューリング（つまり、ロード／ストア・ユニット（ＬＳＵ）に関連付けされた実行キュー内におけるインストラクションの配置に先行して、そのインストラクション内の仮想アドレスが、対応する実アドレスへ変換されなければならない。ＬＳＵは、メモリ・アクセス・インストラクションを実行して仮想アドレスを獲得し、それがＴＬＢによって変換されて実アドレスが獲得される。これらのアドレス変換ペアが、メモリ内にストアされたＰＦＴによって維持されていることから、各変換オペレーションは、伝統的に、その変換を完了するためにメモリ・アクセスを必要としていた。
【０００７】
仮想対実アドレス変換の遂行を目的としたＰＦＴに対するメイン・メモリ・アクセスの数を低減するために、今日のシステム内の各プロセッサには、変換索引バッファ（ＴＬＢ）と呼ばれる最近の最多アクセスＰＴＥに関する小さいキャッシュが提供されている。ＴＬＢは、メイン・メモリ内のＰＦＴに対するアクセスの必要性を低減することによって変換に関連する遅れ時間を抑える。ＴＬＢを介したほとんどの仮想対実アドレス変換に関する遅れ時間が比較的小さいことから、全体的なプロセッサのパフォーマンスが向上する。
【０００８】
したがって、ＬＳＵによってアドレス・インストラクションが受け取られるとき、アドレス変換を必要とするインストラクションが、まずＴＬＢへ送られる。インストラクションの仮想アドレスに対応するエントリがＴＬＢ内に見つかると、ＴＬＢが『ヒット』信号をアサートし、その実アドレスが使用される。続いて実アドレスを伴うインストラクションが、メモリ・サブシステム内における実行のための実行キューに入れられる（メモリ・サブシステムは、各レベルのキャッシュおよびメイン・メモリを含む）。キューの数ならびに長さに応じ、プログラム実行間の任意の時点において、変換後の実アドレスを伴う多くのインストラクションがそれらのキュー内に存在し得る。
【０００９】
特定の仮想アドレスに必要な変換がＴＬＢ内に存在しない場合には、『変換ミッシング』が発生し、この分野において周知のように、ハードウエアおよび／またはオペレーティング・システム（ＯＳ）によって、アドレス変換の遂行に必要とされるＰＴＥがメモリ内のＰＦＴから検索される。
【００１０】
場合によっては、オペレーティング・システム（ＯＳ）の仮想メモリ・マネージャ（ＶＭＭ）がシステム・メモリをマネージするために、ＰＦＴ内のＰＴＥの修正が必要になる。これらの変更は、プロセッサのＴＬＢが失効したＰＴＥを含むという結果をもたらすことになる。一貫性を維持するため、およびプロセッサがＴＬＢから正しくない変換結果を獲得することを防止するために、まずＩＳは、該当するＰＴＥを無効化し、続いてＴＬＢＩを発行してそれぞれのＴＬＢを無効化する。
【００１１】
ＴＬＢコンシステンシー・スキームにおいては、通常、マルチプロセッサ・システム内のほかのすべてのプロセッサに対してＴＬＢ無効化（ＴＬＢＩ）オペレーションをブロードキャストするマスタ・プロセッサによって失効したＴＬＢエントリが削除される。ＴＬＢＩオペレーションは、無効化されるべきＰＴＥの仮想アドレスを識別する。ＴＬＢＩは、アドレスのみのオペレーションであり、最初にマスタ・プロセッサ（つまり、変換の要求を発行したプロセッサ）において受け取られてそれ自体のＴＬＢが無効化される。ＴＬＢＩが受け取られると、そのプロセッサのＴＬＢに送られるフェッチ済みインストラクションのストリーム内にＴＬＢＩが挿入される。このＴＬＢＩは、マスタ・プロセッサによって、相互接続上においても発行される。現在のシステムにおいては、各ＴＬＢＩに『バリア』インストラクション（たとえば、ＰｏｗｅｒＰＣ（パワーピーシー）の場合のＳＹＮＣ（シンク）インストラクション）が続くが、それが、ＴＬＢＩの直後に続いて相互接続上に発行される。その後マスタ・プロセッサは、ほかのそれぞれのプロセッサからの確認応答メッセージを待機する。
【００１２】
別のプロセッサによってＴＬＢＩがスヌープされるときには、そのＴＬＢＩがＴＬＢコントローラへ送られ、それがＴＬＢ内のＰＴＥを無効化し、それ以前の変換済みアドレスを伴う各アクティブ・キューに対してフラグをセットする。このフラグは、そのキューが、実アドレスを伴うキャッシュ・コヒーレント・サブシステムへ移動されてしまうとリセットされる。その後ＴＬＢコントローラは、すべてのフラグのリセットが確実になると、ＴＬＢＩ完了メッセージをキャッシュ・コヒーレント・サブシステムへ向けて発行する。しかしながら、より以前のキュー内における変換済みアドレスを伴うインストラクションのスケジューリングに起因して、ＴＬＢＩロジックは、すべての実行ユニットのキューのフラッシュを起動しなければならず、かつフラッシュが完了するまで待機して、初めてＴＬＢＩ完了メッセージが要求プロセッサへ返されることが可能になる。一方、マスタ・プロセッサは、ほかのすべてのプロセッサにおいてＴＬＢＩ（および、以前の発行済みインストラクション）が完了したことを示す、バリア・オペレーションに関する完了メッセージが返されるまで待機を行うことになる。
【００１３】
ＴＬＢＩ完了メッセージの生成が可能になる前に、ＴＬＢＩおよびバリア・オペレーションのペアが、ほかの各プロセッサ内のキューのフラッシュを必要とすることから、複数のプロセッサによる複数のＴＬＢＩの発行ならびにスヌープが許容されている場合には問題を生じる。これらの問題には、所定のプロセッサにおいて互いに完了を無期限に待機し、結果的にプロセッサの実行の機能停止をもたらすＴＬＢＩのオーバーラップが含まれる。さらに、複数のＴＬＢＩが、バス・リソースおよびＰＦＴに対するアクセスに関して競合する。これらの問題を克服するために、ほとんどの現行システムにおいては、パーティション内の各プロセッサに、最初に『グローバルＴＬＢＩロック』を獲得し、続いて適切なＴＬＢＩを発行し、その後、ロックを解放することが求められる。このロック獲得およびそれに続くプロセスは、全体的なシステムのパフォーマンスを著しく制限する。
【発明の開示】
【発明が解決しようとする課題】
【００１４】
本発明は、今必要とされていることが、マルチプロセッサ・システム内における、単一プロセッサによるＰＦＴ上のロックを必要とすることなくＴＬＢ内のエントリの無効化を行うための方法およびシステムであることを認識している。あるパーティション内において複数のプロセッサから発行される複数のコンカレント（またはオーバーラップする）ＴＬＢオペレーションを可能にする方法およびシステムは、歓迎される改善となろう。これらの、およびそのほかの恩典は、以下に説明する本発明によって提供される。
【００１５】
本発明は、データ処理システムが、ＴＬＢＩオペレーションの間における実行ユニットのキューからのインストラクションの完全なドレイニングに続いて実行を再開するときの遅延を短縮できることが望ましいと認識している。ＴＬＢに対するアクセスを必要とするほかのインストラクションに関して順序の外れたＴＬＢＩインストラクションの先行的キューイングおよび実行を可能にするデータ処理システムは、歓迎される改善となろう。さらに本発明は、ＴＬＢＩの後にフェッチされたインストラクションを推論的に実行し、ＴＬＢＩの前にフェッチされたインストラクションを、それぞれの実行キュー内に入れて、ＴＬＢＩオペレーションの完了後のより迅速なプロセッサのリカバリを可能にすることが有益なものとなると認識している。さらにまた本発明は、推論的スケジューリングの行われたインストラクションの仮想アドレス履歴を提供し、無効化されたアドレスを伴うインストラクションが、ＴＬＢＩオペレーションの間におけるドレイニングに関して適切にターゲットされるようにすることが有益であると認識している。これらの、およびこのほかの恩典は、以下に説明する本発明によって提供される。
【００１６】
本発明は、最適スヌーパ・パフォーマンスを伴う、相互接続上において実行している複数のコンカレント（またはオーバーラップする）ＴＬＢＩを可能にするマルチプロセッサ・データ処理システムを提供することが望ましいと認識している。異なるプロセッサから発行された複数のＴＬＢＩを効率よく追跡し、グローバル・バリア・オペレーションを必要とすることなく、あるプロセッサが発行したＴＬＢＩのシステム‐ワイドの完了を迅速に示す方法およびシステムは、歓迎される改善となろう。これらの、およびこのほかの恩典は、以下に説明する本発明によって提供される。
【課題を解決するための手段】
【００１７】
パーティション内の複数のプロセッサからの複数のＴＬＢＩオペレーションのコンカレントな完了を可能にするＴＬＢＩプロトコルを具体化する、対称マルチプロセッサ・データ処理システム（マルチプロセッサ・システム）が開示されている。このマルチプロセッサ・システムは、複数のプロセッサを備え、そのそれぞれは、実行ユニットならびに関連するキューを伴うキャッシュ・コヒーレント・サブシステム、および変換索引バッファ（ＴＬＢ）ならびに関連するＴＬＢロジックを有している。さらに各プロセッサは、相互接続上において発行されたすべてのＴＬＢ無効化（ＴＬＢＩ）をスヌープし、ＴＬＢロジックによる関連ＴＬＢエントリの無効化を起動するスヌーパを包含している。
【００１８】
ＴＬＢＩが受け取られてマスタ・プロセッサのＴＬＢ内のエントリが無効化されるとき、プロセッサは、ＴＬＢＩプロトコルを起動して、それがローカル・バリア・インストラクションに類似したＴＬＢＩのハンドリングをもたらす。対応するＴＬＢエントリが無効化される。また、実行ユニット・キューに対するフェッチ済みインストラクションの転送が停止され、実行ユニットによる処理が中止され、かつ実行ユニット・キュー内のキューイング済みインストラクションが削除される。キューが完全にドレイニングされた後に、相互接続上においてＴＬＢＩが発行され、ほかのスヌーピング・プロセッサのＴＬＢ内の対応するエントリを無効化する。
【００１９】
このようにキューの初期ドレイニングがあることから、別のプロセッサがスヌープされるとき、そのプロセッサは、迅速にＴＬＢエントリを無効化し、そのキューのドレイニングを待つことを必要とせずに、完了メッセージを伴って直ちに応答することができる。主として、別のプロセッサのキューのドレイニングを待機することによって生じる遅延が、実質的に排除される。
【００２０】
上記はもとより、本発明のそのほかの目的、特徴、および利点については、以下の詳細に記述された説明の中で明らかなものとなろう。
【００２１】
新しい特徴と確信される本発明の特徴は、付随する特許請求の範囲に示されている。しかしながら本発明自体はもとより、その好ましい実施の形態、さらに別の目的、およびそれらの利点については、以下に例として示す実施態様の詳細な説明を添付図面とともに参照することによって最良の理解が得られるであろう。
【発明を実施するための最良の形態】
【００２２】
本発明は、マルチプロセッサ・システム内における異なるプロセッサによって発行された複数のコンカレントＴＬＢＩの完了を可能にする改良されたＴＬＢＩプロトコルを提供する。従来技術においては、ＴＬＢならびにＰＦＴへアクセスする複数のプロセッサの非同期的性質、およびソフトウエア管理されたＴＬＢに関するコヒーレンシーに起因して、パーティション内の１つのプロセッサのみが、一度に１つのＴＬＢＩを発行することが可能であった。したがって、ＴＬＢの無効化が煩雑なプロセスを伴い、それがプロセッサによるロックの獲得、ＰＦＴ内のＰＴＥの無効化、（ＴＬＢを無効化するための）ＴＬＢＩの発行、およびその後のロックの解放を必要としていた。
【００２３】
本発明は、プロセッサ（１ないしは複数）にロックの獲得を要求することなく、コンカレントＴＬＢＩオペレーションならびにＰＦＴに対するコンカレント・アクセスを可能にする。本発明は、いくつかの追加のコンポーネントをプロセッサ内に導入し、それがＴＬＢＩプロトコルによる本発明の各種機能（プロセス）の完了を可能にする。これらのプロセスには、（１）ＴＬＢＩオペレーションの完了に先行する実行のキューに対するインストラクションの推論的スケジューリング、（２）ＴＬＢＩに続くインストラクションの非推論的スケジューリング、（３）プロセッサ内のほかのインストラクションとの非同期的なＴＬＢＩのスケジューリングおよび（４）バリア・オペレーション（すなわち、ＰｏｗｅｒＰＣ（パワーピーシー）におけるｓｙｎｃ（シンク）オペレーション）なしにプロセッサごとに行う発行済みＴＬＢＩの完了のモニタリング等が含まれる。本発明の目的に関して、ＴＬＢＩは、ＴＬＢ内のＰＴＥの無効化、相互接続上におけるＴＬＢＩオペレーションの発行、およびほかのプロセッサにおけるＴＬＢＩプロセスの完了の待機（または追跡）を包含するＴＬＢＩプロセスの具体化を最終的にもたらす実際のインストラクションのニーモニックとして定義されている。
【００２４】
図面を参照するが、ここで特に図１を参照すると、マルチプロセッサ（マルチプロセッサ・システム）データ処理システム（以下、マルチプロセッサ・システム１００と呼ぶ）が図示されており、その中において本発明の特徴を好適に具体化することができる。これに示されているように、マルチプロセッサ・システム１００は、複数のプロセッサ１０１を包含しており、それらが、相互接続１２５を介してメモリ１３０に結合されている。相互接続１２５は、単一のバス、複数のバス、もしくはスイッチを包含するものとすることができる。
【００２５】
さらに図１を参照すると、プロセッサ１０１は、Ｌ２キャッシュ１０４、変換索引バッファ（ＴＬＢ）１０２、および関連するＴＬＢコントローラ１０３を含んでいる。ＴＬＢ１０２は、インストラクションに関する事実上のアドレスもしくは仮想アドレスをメモリ１３０内に見られる実アドレスへ効率的に変換するために使用される。それに加えて、図示の実施態様においては、各プロセッサ１０１が、以下に説明する一実施態様に従って行われる、相互接続１２５上におけるＴＬＢＩオペレーションのスヌープ、およびＴＬＢコントローラ１０３へのＴＬＢＩオペレーションの転送に使用されるスヌーパ１０７を含んでいる。
【００２６】
プロセッサ１０１は、さらにインストラクション・シーケンシング・キュー（ＩＱ）１０５、実行ユニット１０８、および関連する実行キュー１０９をキャッシュ・コヒーレンシー・レベル（つまり、キャッシュならびにロワ・メモリのアクセスにアドレスのみのオペレーションが使用される処理のレベル）に包含している。インストラクション・シーケンシング・キュー１０５は、仮想アドレスを伴うメモリ・アクセス・インストラクションを保持し、各実行キュー１０９は、実行に関するキャッシュ・コヒーレンシー・レベルにおいて特定の実行ユニット１０８へ送られる（つまり、プロセッサのロード／ストア・ユニット（ＬＳＵ）におけるアドレス・インストラクションの生成に続く）インストラクションを保持する。たとえば、実行ユニットは、ロード、ストア、プリフェッチ・オペレーションを実行する（または完了する）ための独立したユニットを、キャッシュ・コヒーレンシー・レベルに含むことができる。相応じて実行キューは、インストラクション・シーケンシング・ユニット（ＩＳＵ）もしくはＬＳＵの発行済みインストラクション（フェッチ、ロードおよびストア等）のための独立したキューを包含している。
【００２７】
ＴＬＢ１０２は、インストラクション・キュー１０５内のアドレス・インストラクション（またはデータ）に関する仮想アドレスを、そのインストラクションが実行キュー１０９へ送られる前に、実アドレスに置き換えるために使用される。つまり、キュー１０９内のインストラクションが、メモリ・アドレスを伴うオペレーションを完了するとき、それらが、対応する仮想アドレスから変換された実アドレスを伴ってキューに入れられる。
【００２８】
メモリ１３０内には、ページ・フレーム・テーブル（ＰＦＴ）１３２がストアされており、そこには、いくつかのページ・テーブル・エントリ（ＰＴＥ）１３４が含まれている。またメモリ内には、オペレーティング・システム（ＯＳ）１３６および実行中のアプリケーション・プログラム１３８も含まれており、これらは、集合的に、ＴＬＢを必要とするメモリ・アクセス・オペレーションに帰結するインストラクションをプロセッサ１０１に提供する役割を担う。オペレーションの間は、プロセッサ１０１の中央処理ユニット（ＣＰＵ）がアプリケーション・プログラム１３８（または、ＯＳ  １３６）等のコンピュータ・プログラムのインストラクション（ならびにデータ）をフェッチし、デコードし、かつ実行する。ＯＳ  １３６は、伝統的なメモリ・マネジメントに関してプロセッサ１０１に送られるＴＬＢＩを生成する役割を担う。より具体的に述べれば、ＯＳ  １３６は、ページ違反割り込みハンドラ１３７を含み、ＰＦＴ  １３２においてページ違反が発生すると、ＴＬＢＩを生成する。ＴＬＢＩが生成されるプロセスは、現行システムに類似であり、このＴＬＢＩの生成が本発明の主たる焦点でないことから、これ以上はこのプロセスに注目しない。
【００２９】
上記のコンポーネントに加えて、このデータ処理システム１００は、入出力（Ｉ／Ｏ）チャンネル・コントローラ（ＣＣ）１４０を包含し、それが相互接続１２５に結合されている。Ｉ／Ｏ  ＣＣ  １４０は、スイッチ１４２を介して、冗長ディスク・アレイ（ＲＡＩＤ）１４４を含むＩ／Ｏデバイスに対する接続を提供する。ＲＡＩＤ  １４４は、プロセッサによって実行されているアプリケーションの要求に応じてロードされるインストラクションならびにデータをストアする。
【００３０】
当業者であれば理解されるように、コンピュータ・システムは、このほかの、たとえば追加のプロセッサならびに複数のキャッシュ・レベル等を含めたコンポーネントを含んでいることもあるが、ここでは本発明の完全な説明の提供に必要なコンポーネントのみが記述されている。
【００３１】
図２は、以下に説明する本発明の各種の機能的特徴をサポートするべく構成されたプロセッサ１０１内のＴＬＢサブシステムをさらに詳細に示している。論考の目的から１つのプロセッサ１０１だけが図示されており、プロセッサ１０１を結合することのできる外部コンポーネントは示されていない。ここで理解される必要があるが、プロセッサ１０１内に例示されているコンポーネントは、本発明が実施されるマルチプロセッサ・システムの別のプロセッサ（図示せず）内においても見ることもできる。たとえば、図１のマルチプロセッサ・システム１００を参照されたい。
【００３２】
プロセッサ２０１は、ＣＰＵ  ２１０を包含し、そこにはインストラクション・シーケンシング・キュー１０５、実行ユニット１０８、およびキュー１０９が含まれている。またプロセッサは、ＴＬＢサブシステム２０２も包含している。ここに図示されているようにＴＬＢサブシステム２０２は、ＴＬＢ２２４を包含し、それが：（１）ページ・メモリの仮想アドレスをストアするための仮想アドレス・タグ配列２３０；および（２）仮想アドレスに対応する実アドレスをストアするための実アドレス・タグ配列２３１を含んでいる。
【００３３】
さらにＴＬＢサブシステム２０２は、ＰＴＥに対する変更の検出に使用されるＴＬＢコントローラ１０３を包含し、ＰＴＥの変更が検出されたときにはＴＬＢ１０２内のＰＴＥを更新する。ＴＬＢコントローラ１０３は、スヌープ・コントローラ（スヌーパ）１０７を含んでおり、それが、ＴＬＢ１０２内の変換に影響を及ぼし得るオペレーション、たとえばＴＬＢＩに関して相互接続１２５を継続的にスヌープする。
【００３４】
またＴＬＢコントローラ１０３には、仮想アドレス・タグ配列２３０をサーチするためのサーチ・エンジン２３４、実アドレス・タグ配列２３１内のＰＴＥを更新するか、あるいは無効化するための更新モジュール２３６も含まれている。サーチ・エンジン２３４は、アドレス変換のルックアップのためにＣＰＵ  ２１０によっても使用される。スヌープ・コントローラ１０７が、相互接続１２５上においてＰＴＥに影響を及ぼすオペレーションを検出すると、サーチ・エンジン２３４が、スヌープ・コントローラ２３８によって検出された仮想アドレスに関して仮想アドレス・タグ配列２３０内をサーチする。その仮想アドレスが仮想アドレス・タグ配列２３０内に見つかった場合には、更新モジュール２３６が、その特定のＰＴＥの更新もしくは無効化を行う。
【００３５】
ＴＬＢコントローラ１０３に関連付けされて、ＴＬＢＩキュー２３９およびＴＬＢＩレジスタ２４１が備わっている。例示の実施態様ならびに以下の説明においては、ＴＬＢＩキュー２３９が使用されてＴＬＢ１０２へ送られることになる複数のＴＬＢＩがスケジューリングされ、一方、ＴＬＢＩレジスタ２４１が使用されてマルチプロセッサ・システムの相互接続１２５上において異なるプロセッサによって発行された複数のオーバーラップするＴＬＢＩの完了が追跡される。次に、ＴＬＢＩキュー２３９およびＴＬＢＩレジスタ２４１の特定の機能ならびに適用可能性について詳細に説明する。
【００３６】
Ｉ．  マスタ・プロセッサ内のＴＬＢＩプロトコル
本発明は、ＴＬＢＩインストラクションの実行に対してマスタ・プロセッサ（すなわち、最終的にＴＬＢＩの生成をもたらした変換に関する要求を発行したプロセッサ）がどのように応答するかについて指図する、新しいＴＬＢＩプロトコルを提供する。このＴＬＢＩプロトコルは、受け取り側プロセッサが従うプロシージャのあらかじめ設定済みのセットであり、最終的には、マルチプロセッサ・システムのパーティション内の複数プロセッサによる、相互接続上におけるＴＬＢＩのコンカレント発行を可能にする。また、このＴＬＢＩ応答プロトコルの具体化によって、プロセッサは、相互接続に対してＴＬＢＩオペレーションを発行する前に、ＰＦＴに関するグローバル・ロックを最初に獲得する必要があるという要件が排除される。このように本発明は、ロック獲得オペレーションを行う必要性ならびにそれに伴う遅れ時間を排除し、それにはロックのコンテンション、システムの同期化、およびそれに続くロックの解放が含まれる。
【００３７】
次に図３を参照するが、この図は、本発明のＴＬＢＩ応答プロトコルの具体化に基づいてＯＳ  １３６によって生成されたＴＬＢＩの受け取りに対してプロセッサが応答するプロセスを示したフローチャートである。このプロセスは、ブロック３０１において開始し、そこには、プロセッサ１０１がＴＬＢＩを受け取ることが示されている。伝統的な仮想メモリ・マネジメントの場合には、ＯＳがＴＬＢＩを生成し、それがプロセッサ１０１へ送られる。
【００３８】
ＴＬＢＩインストラクションの受け取りに先行して、プロセッサ１０１は、キャッシュ・コヒーレンシー・レベルのキュー内におけるアドレス・オペレーション（またはインストラクション）のスケジューリング、およびキューに入れられている順序を基礎とするキャッシュ・コヒーレンシー・レベルのインストラクションの実行を継続している。実行に関してＴＬＢＩの準備が整うと、直ちにプロセッサ１０１は、ブロック３０３に示されているように、すべての（キャッシュ・コヒーレンシー・レベルにおける）インストラクションのスケジューリングならびに実行を停止（もしくは中止）する。その間にプロセッサは、ブロック３０５に示されているように、キャッシュ・コヒーレンシー・サブシステムにおけるすべての実行キューのドレイニングを行う。続いてブロック３０７に示されているように、そのプロセッサのＴＬＢコントローラが、ＰＴＥアドレスに基づいて対応するＴＬＢエントリの無効化を行う。キューのドレイニングは、キュー内からのすべてのインストラクションを削除すること、およびアドレス・インストラクションを生成している特定のプロセッサ・コンポーネント（１ないしは複数）に信号を送り、ドレイニングしたアドレスを、システム上においてＴＬＢＩオペレーションが完了した後に再送する指示を行うことを伴う。
【００３９】
１つの具体化においては、プロセッサにおいてＴＬＢＩの受け取りがあると、ＴＬＢＩの受け取りの時点においていずれのキューがアクティブであったかについて示すフラグがセットされる。したがって、スヌープされた各ＴＬＢＩに関してフラグがセットされる。インストラクションのスケジューリングは、このフラグがセットされている間にわたって中止される。ＴＬＢＩプロトコルは、アクティブなキューがドレイニングされるまでプロセッサを強制して待機させ、その後、フラグをリセットしてスケジューリングの再開が可能になる。
【００４０】
すべての実行キューがインストラクションのドレイニングを完了した後、プロセッサ１０１は、ブロック３０９に示されているように、相互接続（つまり、相互接続１２５）上においてＴＬＢＩを発行する。続いてプロセッサ１０１は、ファブリック（システム・バス）に対してバリア・インストラクションを発行し、ほかのプロセッサのそれぞれにおけるＴＬＢＩの完了を追跡する。ＴＬＢＩならびにバリア・インストラクションは、いずれもほかのプロセッサのスヌーパによってスヌープされる。ほかのプロセッサが、まだキューのドレイニング中であり、ビジーの場合には、当該ほかのプロセッサは、マスタ・プロセッサに対してリトライを送り、その後の時点におけるＴＬＢＩのリトライをマスタ・プロセッサに強制することができる。それに加えて、キューがまだアクティブのときには、スヌーパがバリア・オペレーションをリトライすることができる。
【００４１】
プロセッサ１０１は、ブロック３１１に示されているように、ほかのプロセッサのそれぞれからバリア・オペレーションに関する完了メッセージが返されることをスヌープする。ブロック３１３においては、マルチプロセッサ・システム内のほかのすべてのプロセッサからＴＬＢＩ完了メッセージが受け取られたか否かについての決定がなされる。マスタ・プロセッサが、マルチプロセッサ・システム内のほかのすべてのプロセッサから完了メッセージを受け取ると、マスタ・プロセッサは、ブロック３１５に示されているように、アドレス・インストラクションの実行を再開する。
【００４２】
一実施態様によれば、図９および１０を参照して以下に説明するように、ＴＬＢＩオペレーションの完了を追跡するハードウエア・ベースの方法が具体化され、それによって、システム・バス上においてバリア・オペレーションを起動する必要性が排除される。このようにＴＬＢＩプロトコルの１つの機能として、ローカル・バリア・インストラクションとしてＴＬＢＩインストラクションに応答すること、すべてのキャッシュ・コヒーレンシー・レベルの実行を実行キューがドレイニングを行うまで停止すること、およびマルチプロセッサ・システム全体にわたってＴＬＢＩの完了を追跡することが挙げられる。
【００４３】
特に、マスタ・プロセッサがほかのプロセッサからの完了メッセージを待機している間に、第２のプロセッサからのＴＬＢＩオペレーションがスヌープされると、マスタ・プロセッサのＴＬＢコントローラがそのＴＬＢ内のＰＴＥ（エントリが存在する場合）を無効化し、直ちに、ＴＬＢＩオペレーションがスヌープされた第２のプロセッサに対して完了メッセージを発行することができる。マスタ・プロセッサは、第２のＴＬＢＩが受け取られた時点において、すでにそのキューのドレイニングが済んでおり、マスタ・プロセッサは、相互接続上においてオーバーラップするＴＬＢＩを発行したほかのプロセッサをロック・アウトしない。
【００４４】
ＩＩ．  ＴＬＢＩ完了の間の推論的および非推論的インストラクション・スケジューリング
上記の実施態様の中で述べたように、ＴＬＢＩ応答プロトコルは、インストラクションの実行の中止およびキャッシュ・サブシステム・レベル（ここでは、キャッシュ・コヒーレンシー・レベルとも呼んでいる）におけるインストラクション・キューのドレイニングを強制する。実行が再開するとき、インストラクションがそれらの仮想アドレスとともにＬＳＵから再発行され、アドレス変換のためにＴＬＢへ送られ、その後、実行のために実行キュー内においてスケジューリングが行われる。アドレス変換、スケジューリング、およびロード／ストアの実行は、非常に多くのクロック・サイクルを使用することがあり、その間、そのキャッシュ・サブシステムにおける実行ユニットは、実行の再開に先行してインストラクションがキューに入れられるまでを待機しなければならない。
【００４５】
本発明は、マスタ・プロセッサによってＴＬＢＩが実行されているとき、インストラクション・キュー内にあるインストラクションの変換、スケジューリング、および実行を継続することによって、実行ユニットに関する無活動期間を排除（もしくは実質的に短縮）する。つまり本発明は、（キューの初期ドレイニングに続いて）ＴＬＢＩオペレーションがほかのプロセッサからの完了メッセージを待機している間にわたり、順序を外れた推論的なインストラクションの実行を許容する。この推論的実行は、ＴＬＢＩオペレーションが完了した後にマスタ・プロセッサが実行を再開するために必要な時間を著しく短縮する。
【００４６】
順序を外れた推論的なインストラクション実行の特徴を具体化するために、２つの異なるインストラクションの扱いが、ＴＬＢＩと相対的なそれぞれのポジションに基づいて提供される。ＴＬＢＩに先行する（つまり、ＴＬＢＩがＴＬＢ内のエントリを無効化する前に変換を受け取る）インストラクションは、通常どおりにスケジューリングが行われ、ＴＬＢＩに続くインストラクションは、推論的にスケジューリングが行われる。これらのインストラクションの異なる扱いについて次に説明する。
【００４７】
Ａ．  仮想アドレス・タグを介した推論的スケジューリング
ＴＬＢＩに先行するインストラクションの仮想アドレスが変換されるときには、ＴＬＢＩオペレーションがＴＬＢ内のＰＴＥをまだ無効化していないことから、その変換が『推論的に』完了される。変換後の実アドレスを伴うこれらのインストラクションは、キューに転送されて、『推論的に』スケジューリングが行われる。インストラクション（１ないしは複数）の仮想アドレスは、その後、ＴＬＢＩによって無効化されることがあり、したがって、その実アドレスの不確定性を鑑みてインストラクションのスケジューリングが推論的に行われると言う。
【００４８】
ここで図５を参照すると、プロセッサのインストラクション・シーケンシング・キュー１０５のブロック図が例示されており、そこには、ＴＬＢＩを含めて複数のインストラクションが含まれている。インストラクション・シーケンシング・キュー１０５は、ＴＬＢＩにシーケンシャルに先行するインストラクション（つまり、Ｉ１〜Ｉ３）およびＴＬＢＩにシーケンシャルに後続するインストラクション（つまり、Ｉ４およびＩ５）を包含している。また図５には、実行ユニットのキュー（Ｅ‐キュー）１０９も示されているが、そこには、インストラクションＩ１〜Ｉ５が、実行に関し、図４に例示されているプロセスに従ってスケジューリングされている。
【００４９】
図４を参照すると、プロセッサならびにＴＬＢＩ応答プロトコルを具体化するＴＬＢコントローラ・ロジックが、ＴＬＢＩオペレーションの完了の間に、Ｉキュー１０５からのインストラクションのスケジューリングを管理するときに従うプロセスのフローチャートが例示されている。インストラクションは、ブロック４０１に示されているように、Ｉキュー１０５内にフェッチされ、標準的な処理の間にＴＬＢ１０２へ転送される。その後、ブロック４０３に示されているように、ＴＬＢＩインストラクションが受け取られる。ＴＬＢＩインストラクションは、シーケンシャルに先行するインストラクションの後にＴＬＢへのアクセスに関してスケジューリングされ、ブロック４０１に示されているように、その後に続くインストラクションがＩキュー１０５内へ引き続きフェッチされる。このようにプロセッサ１０１によってＴＬＢＩが受け取られるときに、Ｉキュー１０５内のインストラクションＩ１、Ｉ２、およびＩ３のスケジューリングに関連するすべての処理を停止するのではなく、ＴＬＢＩ応答プロトコルは、ブロック４０７に示されているように、インストラクションＩ１、Ｉ２、およびＩ３（および、その後のＩ４およびＩ５）が、アドレス変換のためにＴＬＢ１０２へ進むことを許容する。
【００５０】
各変換に続いて、ブロック４０９に示されているように、プロセッサおよびＴＬＢコントローラ・ロジックによって、インストラクションがＴＬＢＩの後にシーケンシャルに続くか否か（つまり、インストラクションがＴＬＢＩの後にシーケンシャルに続いているが、ＴＬＢＩが対応するＰＴＥの無効化を完了する前に、ＴＬＢ１０２に対するアクセスが許可されているか否か）についての決定が行われる。インストラクションがＴＬＢＩの後にシーケンシャルに続いている場合には、ブロック４１１に示されているように、そのインストラクションの仮想アドレスを伴うタグが生成される。このタグは、特定のインストラクションの推論的スケジューリングが行われていることを示す。このインストラクションは、ブロック４１５に示されているように、Ｅ‐キュー１０９内においてスケジューリングされる。図５に示されているように、推論的スケジューリングが行われているインストラクションにはそれらの仮想アドレスを用いてタグが付けられ、ほかの非推論的スケジューリングが行われたインストラクションにはタグが付けられない。
【００５１】
推論的スケジューリングが行われているとしてインストラクションをタグ付けすることは、アドレス変換を生じた時点においては、ＴＬＢＩオペレーションがまだＴＬＢ１０２内のターゲットＰＴＥを無効化していないことに起因する。その後のＴＬＢＩによるＴＬＢ１０２内のＰＴＥの無効化は、変換を受け取った１ないしは複数のインストラクション（Ｉ４〜Ｉ５）に影響することがあり、そのためこれらのインストラクションは推論的であると見なされる。したがって、これらのインストラクションには、それぞれの仮想アドレス（ＴＬＢ１０２からの対応する実アドレスによって置換されている）を用いたタグ付けが行われ、以下に説明するように、その後これらの仮想アドレスは、ＴＬＢＩによってターゲットされるアドレスに対する比較に使用される。
【００５２】
このように、例示した実施態様の実行ユニットのキュー１０９は、変換済み実アドレス５０４をはじめ、仮想アドレス・タグ５０５を伴うインストラクションを含んでいる。例示の実施態様によれば、仮想アドレス・タグ５０５に適応させるために、ユニットＥ‐キュー１０９が、より広い空間を伴って構成され、追加の仮想アドレス・パラメータをサポートする。さらに、追加の処理ロジックがプロセッサ内に提供され（たとえば、拡張ＴＬＢコントローラ・ロジック）、インストラクションの仮想アドレスがタグ付けされ、インストラクションとともにＥ‐キュー１０９へ転送されることを可能にしている。
【００５３】
Ｂ．  推論的スケジューリングの行われたインストラクションのフラッシュ
図４に戻り、特にブロック４１７を参照するが、ＴＬＢＩがＴＬＢ１０２へ送られたとき、ＴＬＢ１０２は、ブロック４１６に示されているように対応するＰＴＥを無効化し、その後ブロック４１７に示されているように、Ｅ‐キュー１０９内の推論によるインストラクションの仮想アドレス・タグ５０５とＴＬＢＩアドレスを比較する。本発明によれば、ＴＬＢＩ応答プロトコルに従って動作しているＴＬＢコントローラが、サーチ・エンジン２３４に、仮想アドレス・タグ５０５のサーチおよびそのアドレスとＴＬＢＩによって指定された仮想アドレスの比較を実行させる。Ｅ‐キュー１０９内においてタグが明瞭に識別されていることから、ＴＬＢＩアドレスとＥ‐キュー１０９内の仮想アドレス・タグ５０５の比較は容易に完了する。
【００５４】
ブロック４１９においては、仮想アドレス・タグ５０５内に一致が見つかったか否かについての決定が行われる。一致が見つかった場合には、ブロック４２１に示されているように、すべての推論的インストラクションがＥ‐キュー１０９からフラッシュされる。ブロック４２２に示されているように、またブロック４２５においてＴＬＢＩが完了したことが決定されるまで推論が停止される。ＴＬＢＩが完了すると、ブロック４２７に示されているように、インストラクションの実行が再開される。
【００５５】
しかしながら、仮想アドレス・タグ５０５内に一致が見つからなかった場合には、ブロック４２３に示されているように、Ｅ‐キュー１０９内における推論的インストラクションの実行に関係するオペレーションが継続する。スヌーパ１０７は、ＴＬＢＩ完了メッセージをモニタし、ほかのすべてのプロセッサのＴＬＢＩオペレーションが完了したか否かについての決定をブロック４２５において行う。ほかのすべてのプロセッサのＴＬＢＩオペレーションが完了すると、ブロック４２７に示されているように、インストラクションの実行が再開される。特に、ＴＬＢＩオペレーションが完了したときにＥ‐キュー１０９内にあった推論的に停止されたインストラクションは、仮想アドレス・タグを伴うことなく実行ユニット１０８へ送られる。
【００５６】
代替実施態様の１つにおいては、ＴＬＢＩ応答プロトコルが、一致インストラクションだけをキューから削除させる。キュー内のほかのインストラクションは、ほかの推論的スケジューリングが行われたインストラクションも含めて影響を受けない。その後の、ＴＬＢＩオペレーションの完了に続く実行の再開は、インストラクションのシーケンシングにほとんど混乱を伴わずに生じる。また、ＴＬＢＩが推論的インストラクションのごく少数のパーセンテージを無効化するだけであることから、再フェッチおよび再スケジューリングを行わなければならないインストラクションの数がほとんどわずかになり、処理効率における著しい恩典が可能になる。
【００５７】
上記の実施態様は、独立であるが付帯される、ＴＬＢＩのプロセッサによる受け取りの後に仮想アドレスを配置することのできるアドレス・タグを含むプロセッサ・インストラクションのセットを伴って動作する。それに代えて、実アドレスならびに仮想アドレスをともに包含することをサポートする拡張インストラクションを、プロセッサ内においてスケジューリングが行われているメモリ・アクセス・インストラクション用に提供することもできる。
【００５８】
Ｃ．  推論的スケジューリングの行われたインストラクション用の独立した仮想アドレス・レジスタ
代替実施態様においては、仮想アドレスが、実行ユニット・キュー内においてインストラクションに対してタグ付けされずに、プロセッサ内の独立したストレージ・キャッシュ内にストアされる。図６は、この具体化を例示しており、それによって推論的スケジューリングの行われたインストラクションの仮想アドレスが、一意的に追跡される。これに例示されているように、Ｅ‐キュー１０９に加えて、推論的スケジューリングの行われたすべてのインストラクションの仮想アドレスをキャッシュするために追加のタグ・アドレス・キャッシュ／レジスタ５１１が提供される。この実施態様によれば、仮想アドレスが配置されるとき、そのアドレスが独立のストレージ・キャッシュに転送され、その中にストアされる。ＴＬＢＩ仮想アドレスの比較は、このストレージ・キャッシュ内のアドレスに対して行われ、一致を生じると、全体のＥ‐キュー１０９からインストラクションのドレイニングが行われる。
【００５９】
Ｄ．  ＴＬＢＩに続いてスケジューリングされたインストラクションのブロックのない発行
別の実施態様においては、ＴＬＢＩ応答プロトコルにより、スケジューリング・シーケンス内のＴＬＢＩに続くすべてのオペレーションが、進行中のＴＬＢＩオペレーションを考慮することなく、実行ユニットに対して発行されることが可能になる。本発明は、これらのインストラクションが、ＴＬＢＩがターゲットＰＴＥを無効化した後にＴＬＢにおいてそれらの変換を完了することから、これらのインストラクションが無効化された実アドレスを含まないものとなることを認識している。
【００６０】
このようにＴＬＢＩオペレーションは、その後に続くインストラクションの実行と非同期的に進めることができる。この実施態様の１つの恩典は、プロセッサが、ほかのインストラクションの非同期のスケジューリングを継続する一方において、複数のＴＬＢＩオペレーションを完了できることである。この、ＴＬＢＩからのインストラクションの非同期スケジューリングを補助するために、インストラクション・キューのほかに、独立したＴＬＢＩキューが用意されている。
【００６１】
１．  独立したＴＬＢＩキュー内におけるＴＬＢＩの非同期パラレル・スケジューリング
ここで図７を参照すると、非ＴＬＢＩインストラクション（つまり、キャッシュ・コヒーレンシー・レベルにおいてメモリ・アクセスを完了するためのアドレス・インストラクション）およびＴＬＢ１０２に対するＴＬＢＩインストラクションによるアクセスを受け取り、スケジューリングを行うための分離された非ＴＬＢＩインストラクション・キュー１０５およびＴＬＢＩキュー６０６を伴うプロセッサ設計のブロック図表現が示されている。これに示されているように、インストラクション・シーケンス６０２は、ＴＬＢＩ１およびＴＬＢＩ２を含んでいる。ＴＬＢＩキュー６０６は、スヌーパ・ロジックおよびＴＬＢコントローラによってコントロールされる。スヌーパ・ロジックが使用され、相互接続上においてスヌープされたＴＬＢＩは、直接ＴＬＢＩキュー６０２へ転送される。ＴＬＢＩキュー６０６およびインストラクション・キューには、ＴＬＢ１０２に対するアクセスが提供され、インストラクションは、ＦＩＦＯシーケンサ６０８を介してＴＬＢ１０２へシーケンシングされる。ＦＩＦＯシーケンサ６０８は、それらのインストラクション（ＴＬＢＩおよび非ＴＬＢＩ）を、受け取った順序に従ってＴＬＢコントローラへ転送し、ＴＬＢＩおよび非ＴＬＢＩインストラクションは、互いに関して非同期でそれぞれのキューから送られる。
【００６２】
したがって、マスタ・プロセッサにおいてＴＬＢＩが受け取られるとき、マスタ・プロセッサが、通常のインストラクション・ストリームを用いてＴＬＢＩのスケジューリングを行わなければならないということはない。むしろマスタ・プロセッサにおいてＴＬＢＩが受け取られたとき、すでに受け取っているＴＬＢＩとともに行うスケジューリングのために、直ちにそのＴＬＢＩがＴＬＢキュー６０６へ送られる。ＴＬＢＩキュー６０６内のＴＬＢＩは、ＴＬＢＩキュー６０６内の順序に従ってスケジューリングが行われる。ＴＬＢＩプロトコルは、上記と同様に動作する；しかしながら、ＦＩＦＯシーケンサ６０８の具体化は、ほかのプロセッサ・コンポーネントからのＴＬＢへ走行するバスに対するアクセスをコントロールするバス・ロジックに過ぎないとすることができる。いずれの具体化も、ＴＬＢＩプロトコルが、プロセッサによって完了されることになるインストラクションのシーケンス内における複数のＴＬＢＩの受け取りのハンドリングを行うことを可能にする。
【００６３】
また上記のコンフィグレーションにおいては、ＴＬＢＩの受け取りに先行して生成され、キャッシュ・コヒーレンシー・レベルに送られることのある非ＴＬＢＩインストラクションの前に、ＴＬＢに対してＴＬＢＩを送ることも可能になる。独立したキュー内におけるＴＬＢＩのスケジューリングは、ＴＬＢに対する無効化のブロックのない発行を可能にする。またこのコンフィグレーションは、ＴＬＢＩにシーケンシャルに先行するインストラクションの完了を待機することなく、相互接続上においてＴＬＢＩを発行することも可能にする。
【００６４】
ＩＩＩ．  マルチ‐ビットＴＬＢＩレジスタを介した複数ＴＬＢＩの完了の追跡
上記の応答プロセスによって提供される注目すべき恩典の１つは、リトライのないＴＬＢＩプロトコルの導入である。これは、ＴＬＢＩインストラクションを実行しているマスタを、スヌーパのように見せかけ、それぞれのプロセッサに現在の未決のＴＬＢＩオペレーションの完了を追跡させることによって達成される。したがって、プロセッサのスヌーパは、プロセッサの未決の（完了していない）ＴＬＢＩオペレーションに起因してスヌープ済みのＴＬＢＩのリトライを行う必要がなくなる。このように本発明は、リトライのないＴＬＢＩプロトコルを提供するが、これは、ＯＳおよびＴＬＢコントローラによって具体化されるＴＬＢＩ応答プロトコルの直接的な結果である。
【００６５】
各プロセッサが、コンカレントに実行されているＴＬＢＩオペレーションの完了を追跡することを可能にするため、各プロセッサは、ＴＬＢＩ追跡レジスタを伴って設計される。一実施態様においては、ＴＬＢＩ追跡レジスタがソフトウエア・レジスタとして具体化され、プロセッサのキャッシュ内に値がストアされる。しかしながら、図２に示されている実施態様においては、ＴＬＢＩ追跡レジスタ２４１が、ＴＬＢコントローラ１０３（またはスヌーパ）によってコントロールされるハードウエア・レジスタとして提供されている。
【００６６】
ＴＬＢＩ追跡レジスタ２４１は、エントリのシーケンスからなり、シーケンス内の各エントリは、マルチプロセッサ・システム内の特定のプロセッサに割り当てられている。レジスタを構成するエントリの数は、マルチプロセッサ・システム内のプロセッサの数に等しいとすることができるが、別の具体化においては、より多くの、あるいはより少ない数を用いることができる。したがって、ここでは、たとえばＮ‐プロセッサ・マルチプロセッサ・システムにおいて、各プロセッサのＴＬＢＩレジスタの最初のエントリが、プロセッサ１によって発行されたＴＬＢＩのトラックに割り当てられ、各プロセッサのＴＬＢＩレジスタのＮ番目のエントリが、プロセッサＮによって発行された別のＴＬＢＩのトラックに割り当てられる。それに加えて、追跡レジスタを、プロセッサの数を表すＮ列およびいくつかの行を含む配列として構成してもよく、その場合の各行は、同一のプロセッサによって発行された異なるＴＬＢＩの追跡に使用される。この具体化によれば、単一プロセッサおよび／または複数プロセッサに、オーバーラップするコンカレントＴＬＢＩを発行することが許され、オーバーラップするコンカレントＴＬＢＩの完了の追跡が、効率的な態様で達成される。例示の実施態様においては、値１が、プロセッサにおいてＴＬＢＩオペレーションがまだ完了していないことを示し、値０が、そのプロセッサにおいてＴＬＢＩオペレーションが完了していることを示す。
【００６７】
図８は、一例のＴＬＢＩレジスタの論理表現であり、それぞれが、Ｎ‐プロセッサのマルチプロセッサ・システムにおけるプロセッサＰ０〜ＰＮに対応する（Ｎ＋１）個のエントリを包含している。ＴＬＢＩ追跡レジスタの具体化は、ブロックのない無効化を伴ってすべてのプロセスがＴＬＢＩを完了することを保証する。ＴＬＢＩオペレーションがシステムの完了メッセージを受け取るためには、システムの各プロセッサにおいてＴＬＢＩオペレーションが完了されなければならない。１つの具体化においては、プロセッサ内におけるＴＬＢＩの完了が、ＴＬＢＩ追跡レジスタのそれぞれにおける対応するビットの値が０にセットされることによって示される。
【００６８】
図９は、８方向マルチプロセッサ・システムの１つのハードウエア・コンフィグレーションにおける線図表現であり、各プロセッサは、ＴＬＢＩ追跡レジスタを伴って設計され、相互接続されて、リトライのないＴＬＢＩプロトコルを可能にしている。各プロセッサ１０１は、参照番号（すなわち１〜８）によって識別されており、各プロセッサは残りすべてのプロセッサに対するバス接続を有している。プロセッサ１は、単一の入力ピンおよび単一の出力ピンを介して残りすべてのプロセッサと直接的に結合されており、それが使用されて、ビット・レジスタ・バス７０５を介したＴＬＢＩ追跡レジスタ内の値の伝達が行われる。例示の実施態様においては、プロセッサ１が、マスタ・プロセッサ、つまりシステム・バス上においてＴＬＢＩオペレーションを発行した、完了を要求するプロセッサを表している。つまり、プロセッサ１がそのＴＬＢＩを発行するとき、ＴＬＢＩ追跡レジスタ７０１がリセットされる。その後ほかのプロセッサのそれぞれは、それぞれのキャッシュ・サブシステム・レベルにおいてＴＬＢＩの完了を追跡する。特定のプロセッサにおいてＴＬＢＩが完了すると、そのプロセッサがそのビット・レジスタ・バス７０５をアサートし、それがＴＬＢＩ追跡レジスタ７０１内の関連ビットをセットする結果をもたらす。したがって、プロセッサ１は、内部ＴＬＢＩ追跡レジスタ内の各ビットの状態をチェックするだけでシステム・バス上に発行されたＴＬＢＩオペレーションの完了を追跡することができる。
【００６９】
図１０は、リトライのないＴＬＢＩプロトコルをサポートする８方向マルチプロセッサ・システムにおけるプロセッサの相互接続の第２のコンフィグレーションを例示している。しかしながら、図９に示されているプロセッサ対プロセッサの直接接続とは異なり、この実施態様のビット・レジスタ・バスは、単一の循環バスである。つまり、２つのプロセッサだけが相互に接続されており、ＴＬＢＩオペレーションを完了したプロセッサと直接接続されていないプロセッサのＴＬＢＩ追跡レジスタに対する更新は、ほかのプロセッサを横切る完了信号のルーティングを伴う。この実施態様は、バスがアドレス付きオペレーションをサポートしていることを必要とし、それ自体が、更新されようとしている追跡レジスタ内の特定のビットの識別も行う。このコンフィグレーションには、追加のワイヤリングおよびロジックが必要となるが、これは、任意サイズのマルチプロセッサ・システムに対してスケーラブルであり、それに対して図９のコンフィグレーションは、例示のような１対１態様で単一プロセッサ・チップの接続に利用可能なピンの数によって制限される。
【００７０】
図９および１０のマルチプロセッサ・システムのコンフィグレーションを用いると、各プロセッサが、バリア・オペレーションを使用することなしに未決ＴＬＢＩオペレーションの完了を追跡することができる。ＴＬＢＩオペレーションを完了した各プロセッサが要求プロセッサに対し、ビット・レジスタ・バスを介してその完了を通知することから、プロセッサに対してシステム・バス上にバリア応答を発行させて、バリア・オペレーションの完了を表示させる必要がなくなる。
【００７１】
図１１は、このプロセスのフローチャートであり、このプロセスは、ＴＬＢＩ追跡レジスタを使用して、プロセッサのＴＬＢＩオペレーションがいつ完了したかを決定する。このプロセスは、開始するとき、ブロック８０３に示されているように、ほかのプロセッサのＴＬＢＩ追跡レジスタのスナップショットを取り込む。スナップショットを取り込む時点は多様となり得る；しかしながら、この実施態様においては、プロセッサがＴＬＢＩオペレーションを開始した時点（すなわち、ＴＬＢＩが相互接続上に発行されるとき）においてスナップショットが取り込まれるものとする。プロセッサは、それ独自のＴＬＢＩ追跡レジスタの値をセットして、システム全体にわたるＴＬＢＩオペレーションのカレント状態を反映させる。
【００７２】
それに応じて発行済みＴＬＢＩを伴う各プロセッサは、そのプロセッサにＴＬＢＩ完了メッセージが返されるまで、アクティブなＴＬＢＩ追跡レジスタの維持ならびにモニタを行う。あるプロセッサがそのＰＴＥを無効化し、それ独自の、あるいはスヌープされたＴＬＢＩに応答してそれ自体の実行ユニット・キューのドレイニングを行ったとき、そのＴＬＢＩを発行したプロセッサに対応するＴＬＢＩ追跡レジスタ内のビットが、ブロック８０５に示されているように、０にリセットされる。各プロセッサは、ブロック８０７に示されているように、それぞれのＴＬＢＩ追跡レジスタに関して対応するビットの論理和を演算することによってシステム上における独自のＴＬＢＩの完了を追跡する。
【００７３】
この追跡オペレーションは、さらに図８にも例示されており、そこには、各プロセッサ内のＴＬＢＩ追跡配列のそれぞれの対応するエントリの論理和を演算することにより、特定のプロセッサのＴＬＢＩの完了を決定することが例示されている。たとえば、プロセッサＰ２においてプロセッサＰ０のＴＬＢＩオペレーションが完了した場合には、プロセッサＰ２のＴＬＢＩ追跡配列内の対応するエントリ（スロット３）が値０を有することになる。したがって、図８に示されているように、各プロセッサ内におけるすべてのＰ０のＴＬＢＩオペレーションが完了すると、Ｐ０に対応するＮ個のエントリすべての論理和演算が結果の値として０をもたらし、いずれかのＴＬＢＩオペレーションが完了していなければ結果の値として１をもたらす。
【００７４】
図１１に戻るが、ブロック８０９においては、ビットの論理和演算の結果が１となったか否かについての決定が行われる。論理和演算の結果の値が１となるときは、ＴＬＢＩが完了してなく、発行プロセッサは、ＴＬＢＩオペレーションの完了の追跡を継続しなければならない。ＴＬＢＩがまだ完了していない場合に、発行プロセッサは、待機の後にＴＬＢＩ追跡配列を再チェックし、ＴＬＢＩオペレーションのシステム‐ワイドの完了の表示を調べる。これに対して値０がもたらされているときは、ブロック８１１に示されているように、そのプロセッサのＴＬＢＩオペレーションがシステム上において完了しており、それに続いて発行プロセッサは、ブロック８１３に示されているように、実行ユニットによるインストラクションの実行を再開することが可能になる。
【００７５】
以上、特定の実施態様を参照して本発明を説明してきたが、この説明は限定的な意味で解釈されるべきではない。本発明の説明を参照した後は、当業者にとって、開示されている実施態様の各種の修正をはじめ、本発明の変形実施態様が明らかなものとなろう。したがって、付随する特許請求の範囲に定義される本発明の精神ならびに範囲から逸脱することなく、その種の修正がなし得ることが企図されている。
【００７６】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００７７】
（１）マルチプロセッサ・データ処理システム（ＭＰ）であって、相互接続によって互いに結合されている第１のプロセッサおよび第２のプロセッサを含む複数のプロセッサであって、各プロセッサは、変換索引バッファ（ＴＬＢ）、少なくとも１つの実行ユニット、および関連する実行キューを含むキャッシュ・コヒーレンシー・サブシステムを含み、前記実行キューは、前記ＴＬＢによって対応する仮想アドレスから変換された実アドレスを伴うキュー・アドレス・インストラクションを保持する複数のプロセッサと、前記相互接続によって前記複数のプロセッサに結合されるメモリであって、複数の、仮想および実アドレス変換ペアのページ・テーブル・エントリ（ＰＴＥ）がストアされるページ・フレーム・テーブル（ＰＦＴ）を含むメモリと、各プロセッサに関連付けされた、前記複数のプロセッサのそれぞれによるＴＬＢＩの受け取りに対する応答をコントロールするＴＬＢＩ応答プロトコルの具体化のためのオペレーティング・ロジックとを含み、前記第１のプロセッサによる前記ＴＬＢＩの受け取りに対する応答して、前記ＴＬＢＩ応答プロトコルが、前記第１のプロセッサに、前記相互接続上に前記ＴＬＢＩを発行する前に、前記第１のプロセッサの前記実行キューから、キューされているアドレス・インストラクションのドレイニングを行わせる、マルチプロセッサ・データ処理システム（ＭＰ）。
（２）前記実行キューのドレイニングの完了に応答して、前記ＴＬＢＩ応答プロトコルが前記相互接続上に前記ＴＬＢＩを発行するものとし、前記ＴＬＢＩ応答プロトコルは、前記ＴＬＢＩが受け取られたとき、前記第１のプロセッサにおけるアドレス・インストラクションの処理を中止するための手段と、前記第１のプロセッサを除く前記複数のプロセッサのそれぞれからの完了メッセージの受け取りをモニタするための手段と、前記完了メッセージが受け取られたときに限り、前記第１のプロセッサがアドレス・インストラクションの処理を再開するための手段を含む、上記（１）に記載のＭＰ。
（３）さらに、前記複数のプロセッサのそれぞれに関連付けされているスヌーパであって、ほかのプロセッサによって前記相互接続上に置かれるすべてのトランザクションをスヌープするスヌーパを含み、前記第１のプロセッサが前記相互接続上に前記ＴＬＢＩを発行することに応答して、前記第２のプロセッサのスヌーパが、前記ＴＬＢＩをスヌープし、前記ＴＬＢＩを前記第２のプロセッサのＴＬＢへ転送する、上記（２）に記載のＭＰ。
（４）前記実行キューをドレイニングする間の、前記第１のプロセッサの前記スヌーパによる、前記第２のプロセッサからの第２のＴＬＢＩのスヌープに応答して、前記第１のプロセッサが前記第２のＴＬＢＩのリトライを行う、上記（２）に記載のＭＰ。
（５）前記第２のプロセッサからのＴＬＢＩのスヌープに応答して、前記第１のプロセッサが、第１のプロセッサＴＬＢ内の対応するエントリを無効化し、前記スヌープされたＴＬＢＩに関するＴＬＢＩ完了メッセージを直ちに発行する、上記（２）に記載のＭＰ。
（６）前記第２のプロセッサが、前記第１のプロセッサのＴＬＢＩを、前記第２のプロセッサのＴＬＢＩを発行した後にスヌープした場合に、前記第２のプロセッサは、第２のプロセッサＴＬＢ内の対応するエントリを無効化し、前記スヌープされた第１のプロセッサのＴＬＢＩに関するＴＬＢＩ完了メッセージを直ちに発行する、上記（４）に記載のＭＰ。
（７）さらに、前記ＰＦＴにおいてページ違反が発生すると、前記第１のプロセッサに対して送られる前記ＴＬＢＩを生成するオペレーティング・システム（ＯＳ）と、前記プロセッサの前記実行ユニットに対してインストラクション・ストリームを提供するアプリケーションを含み、前記インストラクション・ストリームは、実行キューに入れられる前に実アドレスへの仮想アドレスの変換を要求したメモリ・アクセス・インストラクションを含む、上記（１）に記載のＭＰ。
（８）さらに、前記メモリ・アクセス・インストラクションを順序どおりに前記ＴＬＢへ転送し、前記変換を完了するためのプロセッサ・オペレーティング手段を含み、前記ＴＬＢＩ応答プロトコルは、前記第１のプロセッサにおいてすべてのインストラクションの処理を中止し、前記ＭＰ上においてＴＬＢＩが完了するまでインストラクションの転送を停止し、さらに、前記ＴＬＢＩの完了に続いて前記インストラクションの転送を再開するための手段を含む、上記（７）に記載のＭＰ。
（９）第１のプロセッサおよび第２のプロセッサを伴う対称マルチプロセッサ・データ処理システム（ＭＰ）内における、前記第１のプロセッサおよび前記第２のプロセッサからのコンカレント変換索引バッファ無効化（ＴＬＢＩ）のハンドリングを行うための方法であって、前記第１のプロセッサにおけるＴＬＢＩの受け取りに応答して、直ちに、前記第１のプロセッサのキャッシュ・コヒーレンシー・サブシステムにおけるインストラクションの実行を中止するステップと、前記第１のプロセッサの変換索引バッファ（ＴＬＢ）内の対応するエントリを無効化するステップと、前記第１のプロセッサの前記キャッシュ・コヒーレンシー・サブシステムにおけるすべての実行キューのドレイニングを行うステップと、前記実行キューがドレイニングを完了したときに限り、システム相互接続に対して前記ＴＬＢＩを発行するステップ、を含む方法。
（１０）さらに、前記第２のプロセッサからＴＬＢＩ完了メッセージが返された後に限り、インストラクションの実行を再開するステップ、を含む、上記（９）に記載の方法。
（１１）さらに、前記第２のプロセッサからのオーバーラップするＴＬＢＩに関して前記相互接続のスヌーピングを行うステップと、前記オーバーラップするＴＬＢＩがスヌープされたとき、前記実行キューがドレイニングを完了していなければ、前記オーバーラップするＴＬＢＩのリトライを行うステップ、を含むものとする、上記（９）に記載の方法。
（１２）さらに、前記オーバーラップするＴＬＢＩがスヌープされ、かつ前記キューがドレイニングを完了しているとき、前記オーバーラップするＴＬＢＩに応答して、前記ＴＬＢ内の対応するエントリを無効化し、前記第２のプロセッサに対して直ちに完了メッセージを発行するステップ、を含むものとする、上記（１１）に記載の方法。
（１３）プロセッシング・ユニットであって、キャッシュ・コヒーレンシー・サブシステムを含み、前記キャッシュ・コヒーレンシー・サブシステムは、変換索引バッファ（ＴＬＢ）および関連するＴＬＢコントローラと、実行ユニットと、前記実行ユニットによる実行のための変換済み実アドレスを有するインストラクションのスケジューリングを行う実行キューと、前記実行ユニットにおいて実行する、ＴＬＢＩを含むインストラクションを受け取るための手段と、前記ＴＬＢＩの受け取りに応答する、相互接続上に前記ＴＬＢＩを発行する前に、第１のプロセッサの各実行キューのドレイニングを行うＴＬＢＩプロトコルを具体化するための手段と、を含む、プロセッシング・ユニット。
（１４）さらに、前記プロセッサを、ほかのプロセッサならびにメモリを含めた外部コンポーネントに結合するための相互接続手段と、各実行ユニット・キューのドレイニングの完了に応答して、前記相互接続手段上に前記ＴＬＢＩを発行するための手段、を含む、上記（１３）に記載のプロセッシング・ユニット。
（１５）さらに、前記ＴＬＢＩ応答プロトコルは：前記ＴＬＢＩが受け取られたときにインストラクションの処理を中止するための手段と、前記第１のプロセッサを除く前記複数のプロセッサのそれぞれからの完了メッセージの受け取りをモニタするための手段と、前記完了メッセージが受け取られたときに限り、インストラクションの処理を再開するための手段と、を含む、上記（１３）に記載のプロセッシング・ユニット。
（１６）さらに、前記外部コンポーネントによって前記相互接続上に置かれるすべてのトランザクションをスヌープするスヌーパを含み、前記相互接続上におけるＴＬＢＩのスヌープに応答して、前記ＴＬＢＩ応答プロトコルが、前記ＴＬＢＩを前記ＴＬＢへ転送し、第１のプロセッサＴＬＢ内の対応するエントリを無効化し、かつ直ちに前記スヌープされたＴＬＢＩに関するＴＬＢＩ完了メッセージを発行する、上記（１４）に記載のプロセッシング・ユニット。
（１７）さらに、前記ＴＬＢＩの完了に続いて、前記インストラクションの転送を再開するための手段を含む、上記（１６）に記載のプロセッシング・ユニット。
【図面の簡単な説明】
【００７８】
【図１】本発明の特徴を好適に具体化することのできる、プロセッサの内部コンポーネントおよびメモリを含めて対称マルチプロセッサ・データ処理システム（ＳＭＰ）のコンポーネントを例示したブロック図である。
【図２】本発明の一実施態様に従って、データ処理システム上における複数のオーバーラップのあるＴＬＢＩオペレーションの完了の追跡に使用されるＴＬＢＩキューおよびＴＬＢレジスタを伴って構成された図１のプロセッサのＴＬＢサブシステムの拡大図を示したブロック図である。
【図３】本発明の一実施態様に従って、図１のプロセッサがＴＬＢＩの受け取りに応答し、ＴＬＢＩオペレーションをマネージするプロセスを例示したフローチャートである。
【図４】本発明の一実施態様に従って、オペレーションを完了するプロセッサによって受け取られるＴＬＢＩの前および後にアドレスが変換されるインストラクションのハンドリング・プロセスを例示したフローチャートである。
【図５】本発明の一実施態様に従って、プロセッサ上においてＴＬＢＩオペレーションを完了している間に推論的スケジューリングが行われるインストラクションに関する、仮想アドレスならびに実アドレスをともに含むプロセッサ内の実行ユニットのキューを例示したブロック図である。
【図６】本発明の一実施態様に従って、プロセッサ上においてＴＬＢＩオペレーションを完了している間に推論的スケジューリングが行われるインストラクションの仮想アドレスを保持するための独立したタグ・レジスタを例示したブロック図である。
【図７】本発明の一実施態様に従って、互いに関して非同期で実行されるＴＬＢＩインストラクションおよび通常のインストラクションのストアのそれぞれに関する、独立のＴＬＢＩキューおよびインストラクション・キューを例示したブロック図である。
【図８】本発明の一実施態様に従って、特定のプロセッサのＴＬＢＩオペレーションの完了を決定するために値の論理和演算が行われるＴＬＢＩレジスタの論理構成を示した説明図である。
【図９】本発明の一実施態様に従って、各プロセッサが、互いに直接結合される出力および入力ビット・レジスタ・バスのセットを包含し、ＴＬＢＩレジスタの直接追跡が可能になるマルチプロセッサ・システム・コンフィグレーションを示した説明図である。
【図１０】本発明の一実施態様に従って、各プロセッサが、単一の出力および単一の入力ビット・レジスタ・バスを介して、隣接プロセッサのペアに結合されるマルチプロセッサ・システム・コンフィグレーションを示した説明図である。
【図１１】本発明の一実施態様に従って、図８のＴＬＢＩレジスタを使用してＴＬＢＩオペレーションの完了を決定するプロセスを図示したフローチャートである。
【符号の説明】
【００７９】
１００  データ処理システム／マルチプロセッサ・システム
１０１  プロセッサ
１０２  変換索引バッファ（ＴＬＢ）
１０３  ＴＬＢコントローラ
１０４  Ｌ２キャッシュ
１０５  Ｉキュー／インストラクション・キュー／インストラクション・シーケンシング・キュー／ＩＱ
１０７  スヌーパ／スヌープ・コントローラ
１０８  実行ユニット
１０９  Ｅ‐キュー／キュー／実行キュー／実行ユニットのキュー
１２５  相互接続
１３０  メモリ
１３２  ページ・フレーム・テーブル（ＰＦＴ）
１３４  ページ・テーブル・エントリ（ＰＴＥ）
１３６  ＯＳ／オペレーティング・システム
１３７  ページ違反割り込みハンドラ
１３８  アプリケーション・プログラム
１４０  入出力チャンネル・コントローラ（Ｉ／Ｏ  ＣＣ）
１４２  スイッチ
１４４  冗長ディスク・アレイ（ＲＡＩＤ）
２０１  プロセッサ
２０２  ＴＬＢサブシステム
２１０  ＣＰＵ
２２４  ＴＬＢ
２２８  実アドレス・タグ配列
２３０  仮想アドレス・タグ配列
２３１  実アドレス・タグ配列
２３４  サーチ・エンジン
２３６  更新モジュール
２３８  スヌープ・コントローラ
２３９  ＴＬＢＩキュー
２４１  ＴＬＢＩレジスタ／ＴＬＢＩ追跡レジスタ
５０４  実アドレス
５０５  仮想アドレス・タグ
５１１  タグ・アドレス・キャッシュ／レジスタ
５１３  キュー
６０２  ＴＬＢＩキュー／インストラクション・シーケンス
６０４  非ＴＬＢＩインストラクション・キュー
６０６  ＴＬＢＩキュー
６０８  ＦＩＦＯシーケンサ
７０１  ＴＬＢＩ追跡レジスタ
７０５  ビット・レジスタ・バス
【図１】
2004326798.tif 000003
【図２】
2004326798.tif 000004
【図３】
2004326798.tif 000005
【図４】
2004326798.tif 000006
【図５】
2004326798.tif 000007
【図６】
2004326798.tif 000008
【図７】
2004326798.tif 000009
【図８】
2004326798.tif 000010
【図９】
2004326798.tif 000011
【図１０】
2004326798.tif 000012
【図１１】
2004326798.tif 000013