(57)【特許請求の範囲】
【請求項１】
ノード相互接続体により相互に結合された複数のノードを備え、
前記複数のノードの各ノードが、少なくとも１つの処理装置と、少なくとも１つのシステム・メモリと、前記システム・メモリに存在するデータごとに、当該データが少なくとも１つのリモート・ノードにキャッシュされているか否かに関する表示を格納するためのローカル・メモリ・ディレクトリと、前記処理装置、前記システム・メモリ及び前記ローカル・メモリ・ディレクトリに結合されたメモリ制御装置とを有し、
前記少なくとも１つのシステム・メモリに存在するテーブルをさらに備え、
前記テーブルが１群の非物理アドレスを物理アドレスに変換するのに使用する少なくとも１つのエントリを有し、前記エントリが前記複数のノードの各ノードごとに前記１群の非物理アドレスに関する制御情報を個別に指定し、前記制御情報が少なくとも１つのデータ記憶制御フィールドから成り、前記データ記憶制御フィールドが、前記複数のノードのうちの各ノードに各々が関連付けられた複数のライトスルー標識から成り、
前記複数のノードのうちの特定のノードに関連付けられた前記ライトスルー標識がセットされていることに応答して、前記特定のノード中の一の処理装置が、前記非物理アドレスに関連付けられたストア・データを、当該処理装置のキャッシュ階層体に格納せずに、前記複数のノードのうちの当該ストア・データに対するホーム・ノードのシステム・メモリに書き戻すためのライト・トランザクションを前記ノード相互接続体上に発行し、当該ノード相互接続体を介して当該ライト・トランザクションを受信したホーム・ノードのメモリ制御装置が、ホーム・ノードのローカル・メモリ・ディレクトリを更新することなく、前記ストア・データをホーム・ノードのシステム・メモリに書き戻すことを特徴とする、不均一メモリ・アクセス（ＮＵＭＡ）データ処理システム。
【請求項２】
ノード相互接続体により相互に結合された複数のノードを備え、
前記複数のノードの各ノードが、少なくとも１つの処理装置と、少なくとも１つのシステム・メモリと、前記システム・メモリに存在するデータごとに、当該データが少なくとも１つのリモート・ノードにキャッシュされているか否かに関する表示を格納するためのローカル・メモリ・ディレクトリと、前記処理装置、前記システム・メモリ及びローカル・メモリ・ディレクトリに結合されたメモリ制御装置とを有し、
前記少なくとも１つのシステム・メモリに存在するテーブルをさらに備え、
前記テーブルが１群の非物理アドレスを物理アドレスに変換するのに使用する少なくとも１つのエントリを有し、前記エントリが前記複数のノードの各ノードごとに前記１群の非物理アドレスに関する制御情報を個別に指定し、前記制御情報が少なくとも１つのデータ記憶制御フィールドから成り、前記データ記憶制御フィールドが、前記複数のノードのうちの各ノードに各々が関連付けられた複数のキャッシュ不能標識から成り、
前記複数のノードのうちの特定のノードに関連付けられた前記キャッシュ不能標識がセットされていることに応答して、前記特定のノード中の一の処理装置が、前記非物理アドレスに関連付けられ且つ当該処理装置のキャッシュ階層体に存在しないリード・データを求める要求を、当該処理装置のキャッシュ階層体に当該要求されたリード・データをキャッシュしないことを示す表示とともに、前記ノード相互接続体を介して前記複数のノードのうちの当該要求されたリード・データに対するホーム・ノードに送信し、前記ノード相互接続体を介して前記要求及び前記表示を受信したホーム・ノードのメモリ制御装置が、ホーム・ノードのローカル・メモリ・ディレクトリを更新することなく、前記要求されたリード・データをホーム・ノードのシステム・メモリから読み出し且つ当該データを前記ノード相互接続体を介して前記特定のノードに返送することを特徴とする、不均一メモリ・アクセス（ＮＵＭＡ）データ処理システム。
【請求項３】
ノード相互接続体により相互に結合された複数のノードを備え、
前記複数のノードの各ノードが、少なくとも１つの処理装置と、少なくとも１つのシステム・メモリと、前記システム・メモリに存在するデータごとに、当該データが少なくとも１つのリモート・ノードにキャッシュされているか否かに関する表示を格納するためのローカル・メモリ・ディレクトリと、前記処理装置、前記システム・メモリ及び前記ローカル・メモリ・ディレクトリに結合されたメモリ制御装置とを有し、
前記少なくとも１つのシステム・メモリに存在するテーブルをさらに備え、
前記テーブルが１群の非物理アドレスを物理アドレスに変換するのに使用する少なくとも１つのエントリを有し、前記エントリが前記複数のノードの各ノードごとに前記１群の非物理アドレスに関する制御情報を個別に指定し、前記制御情報がコヒーレンシー制御情報から成り、前記コヒーレンシー制御情報が、前記複数のノードのうちの各ノードに各々が関連付けられた複数のコヒーレンシー標識から成り、
前記複数のノードのうちの特定のノードに関連付けられた前記コヒーレンシー標識がローカル状態にセットされていることに応答して、前記特定のノード中の一の処理装置が、前記非物理アドレスに関連付けられたストア対象のデータを求める要求を、当該要求されたデータについて前記特定のノード中のコヒーレンシー・ハードウェアがノード間コヒーレンシーを維持する必要はなく且つ当該ノード間コヒーレンシーはソフトウェア支援によって維持されることを示す表示とともに、前記ノード相互接続体を介して前記複数のノードのうちの当該要求されたストア対象のデータに対するホーム・ノードに送信し、前記ノード相互接続体を介して前記要求及び前記表示を受信したホーム・ノードのメモリ制御装置が、ホーム・ノードのローカル・メモリ・ディレクトリを更新することなく、前記要求されたストア対象のデータをホーム・ノードのシステム・メモリから読み出し且つ当該データを前記ノード相互接続体を介して前記特定のノードに返送することを特徴とする、不均一メモリ・アクセス（ＮＵＭＡ）データ処理システム。
【請求項４】
前記テーブルがページ・テーブルから成り、
前記エントリがページ・テーブル・エントリから成る、
請求項１、請求項２又は請求項３に記載の不均一メモリ・アクセス（ＮＵＭＡ）データ処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にデータ処理に関し、特に不均一メモリ・アクセス（non-uniform memory access:ＮＵＭＡ）データ処理システムに関する。本発明は、さらに特に、ノード特有の情報を格納したページ・テーブルを備えたＮＵＭＡデータ処理システムに関する。
【０００２】
【従来の技術】
典型的なコンピュータ・システムのメモリ・サブシステムは、少なくとも１つの不揮発性の大容量記憶装置（たとえば、磁気ディスクや光ディスクなど）と、揮発性のＲＡＭ（ランダム・アクセス・メモリ）とを備えている。ＲＡＭには、高速のキャッシュ・メモリと、低速のシステム・メモリとの双方がある。オペレーティング・システムとアプリケーション・ソフトウェアが使用するアドレス、すなわちデータと命令用に加えメモリ・マップＩ／Ｏ用のアドレスを十分に用意するために、コンピュータ・システムのプロセッサ（群）は、通常、ＲＡＭに物理的に存在する記憶場所の数よりもはるかに多いアドレスを備えた仮想アドレス空間を利用している。したがって、メモリ・マップＩ／Ｏを実行するには、あるいは、ＲＡＭにアクセスするには、コンピュータ・システムは、ソフトウェアとプロセッサのハードウェアが使用している仮想アドレスを、特定のＩ／Ｏ装置に割り当てられた物理アドレス、あるいは、ＲＡＭ中の物理的な場所に変換する必要がある。
【０００３】
典型的なコンピュータ・システムでは、仮想アドレス空間の一部を多数のメモリ・ページに区画している。メモリ・ページは、各々、オペレーティング・システムが生成する少なくとも１つの関連する、ページ・テーブル・エントリ（Page Table Entry: ＰＴＥ）と呼ばれるアドレス記述子を備えている。仮想メモリ・ページに対応するＰＴＥは、通常、当該（仮想）メモリ・ページの仮想アドレスと、メインメモリ中の関連する（物理）ページ・フレームの物理アドレスと、たとえば当該メモリ・ページが参照あるいは変更されたか否かを示す統計フィールドとを備えている。ＰＴＥを参照することにより、プロセッサは、メモリ・ページ内の仮想アドレスを実アドレスに変換することができる。ＰＴＥは、ＲＡＭ中のページ・テーブルと呼ばれるグループに格納されている。そして、ＲＡＭ中のＰＴＥにアクセスして各アドレス変換を実行すると、システムの性能が大幅に低下するので、既存のコンピュータ・システムの各プロセッサは、当該プロセッサが最も最近にアクセスしたＰＴＥをキャッシュして迅速なアクセスを実現するＴＬＢ（Translation Lookaside Buffer: 変換索引バッファ）をも備えている。
【０００４】
ＰＴＥを用いて仮想から実へのアドレス変換を行なうことは、大多数のコンピュータ・システムで一般的であるけれども、アドレス変換を行なう方法と、ＰＴＥをページ・テーブルにグループ化する仕方とは、コンピュータ・システムごとに異なる。一般に、アドレス変換方式は、階層型変換方式と直接変換方式とに分類することができる。インテル・コーポレーションが製造しているｘ８６プロセッサとペンティアム（R)プロセッサが用いている典型的な階層型変換方式では、アドレス変換を次のように実行する。まず、リニア（非物理）アドレス（説明を簡易にするために３２ビットであると仮定する）を、１０ビットのディレクトリ・フィールド、１０ビットのテーブル・フィールド、および、１２ビットのオフセット・フィールドに区画する。リニア・アドレス中のディレクトリ・フィールドの値は、オフセットとして使用し、制御レジスタに格納されているルート・アドレスに付加してページ・ディレクトリ中のエントリにアクセスするのに使う。アクセスしたページ・ディレクトリ・エントリは、ページ・テーブルの基底アドレスを指示しているポインタを格納している。リニア・アドレス中のテーブル・フィールドの値は、オフセット・ポインタを形成しており、ディレクトリ・エントリの値に付加して、メモリ中のページ・フレームの基底アドレスを指示しているページ・テーブル・エントリを選択するのに使う。最後に、オフセット・フィールドの値は、ページ・フレーム内の特定の物理アドレスを指示している。ページ・ディレクトリとページ・テーブルから情報をロードするには、大きなレイテンシー（待ち時間）を伴うメモリ・アクセスを必要とするので、上述した変換過程と並行にリニア・アドレスの上位２０ビットをも用いて、ＴＬＢ中の一致するページ・テーブル・エントリを探索する。ＴＬＢ中に一致するものが見つかったら、ページ・ディレクトリとページ・テーブルの代わりに、一致するページ・テーブル・エントリを用いて、リニアから実へのアドレス変換を実行する。
【０００５】
上述したような階層型アドレス変換方式を用いているコンピュータ・システムでは、各プロセスは、それ自身のページ・テーブルを有している。すなわち、特定のプロセスが参照するメモリ・ページに関連付けられたすべてのＰＴＥは、同じページ・テーブルにグループ化されている。そして、読み出し専用データには複数のプロセスが同時にアクセスしうるから、複数のプロセスのページ・テーブルは、読み出し専用データの同じページに関連付けられたＰＴＥを並行して使うことができる。
【０００６】
階層型変換方式に対して、直接変換方式は、仮想から実へのアドレス変換の実行に必要なＰＴＥを突き止めるのに、アクセスすべき複数レベルのディレクトリやテーブルを必要としない。その代わり、直接変換方式では、ページ・テーブル中にある必要なＰＴＥの物理アドレスを決めるのに、仮想アドレスをハッシュ（し、かつ、オペレーティング・システムが指定するビットを連結）する。次いで、ページ・テーブルを探索して必要なＰＴＥを突き止める。このページ・テーブルは、通常、ユニプロセッサ・コンピュータ・システムとマルチプロセッサ・コンピュータ・システムとの双方において、すべてのＰＴＥを格納しているグローバル・ページ・テーブルである。無論、ＲＡＭ中のページ・テーブルの探索が必要なのは、変換すべき仮想アドレスが特定しているＰＴＥがプロセッサのＴＬＢに存在しない場合だけである。
【０００７】
近年、既存のＳＭＰ（symmetric multiprocessor: 対称型マルチプロセッサ）コンピュータ・システムのスケーラビリティ（拡張容易性）その他の限界を克服するマルチプロセッサ・コンピュータ・システムの開発にますます重点が置かれるようになった。このような弱点を扱う最新のアーキテクチャの１つにＮＵＭＡ（non-uniform memory access:不均一メモリ・アクセス）アーキテクチャがある。ＮＵＭＡアーキテクチャとは、システム中の少なくとも２つのプロセッサのアクセス時間が異なるシステム・メモリを備えたマルチプロセッサ・アーキテクチャのことである。メモリ・アクセス時間の不均一性の結果、そのようなデータを参照するプロセスに関し、データの動的な場所がＮＵＭＡデータ処理システムの性能を決定する要因である。それゆえ、最小アクセス時間したがって最適な性能を実現するためには、そのようなデータを参照しているプロセスを実行しているプロセッサのできるだけ「近く」にデータが存在するのが望ましい。
【０００８】
少なくとも１つのプロセッサがデータの「プロデューサー（生産者）」として機能し、少なくとも１つの他のプロセッサがデータの「コンシューマー（消費者）」として機能する大きなアプリケーションを実行するには、大型のマルチプロセッサ・コンピュータ・システム、特にＮＵＭＡシステムを用いることが多い。プロデューサー・プロセッサは、大量のデータを処理してメモリ・ページの集合に格納する（変更する）。プロデューサーは、特定のデータを格納すると、その後は通常、当該データに２度とアクセスしない。逆に、コンシューマー・プロセッサは、大量のオペランド・データをロードする（読み出す）けれども、通常、当該データを変更（格納）することはない。この一般的なソフトウェア構成の観点から、本発明の認識によれば、性能を向上させるには、プロデューサーを含むＮＵＭＡノードに、変更したデータをメモリ階層の下位レベルに押し下げさせればよい。なぜなら、プロデューサーは当該データに２度とアクセスしないからである。同様に、本発明の認識によれば、コンシューマーを含むＮＵＭＡノードがデータをキャッシングしないようにするのが好都合である。なぜなら、コンシューマーがデータを変更することはありえないからである。
【０００９】
【発明が解決しようとする課題】
本発明の目的は、不必要なコヒーレンシー通信をなくすとともにデータ・アクセスのレイテンシーを低減したＮＵＭＡデータ処理システムを提供することである。
【００１０】
本発明の他の目的は、ノード特有の制御ビットを有するページ・テーブルを備えたＮＵＭＡデータ処理システムを提供することにより、上記目的を達成することである。
【００１１】
【課題を解決するための手段】
本発明に係る不均一メモリ・アクセス（ＮＵＭＡ）データ処理システムは、ノード相互接続体に接続された複数のノードを備えている。この複数のノードは、複数の処理装置と、自身の中に存在するテーブル（たとえばページ・テーブル）を有する少なくとも１つのシステム・メモリとを備えている。このテーブルは、１群の非物理アドレスを物理アドレスに変換するのに用いる少なくとも１つのエントリを備えている。このエントリは、複数のノードの各ノードごとに上記１群の非物理アドレスに関する制御情報を個別に指定している。この制御情報は、少なくとも１つのデータ記憶制御フィールドを備えている。このデータ記憶制御フィールドは、複数のノードのうちの各ノードに各々が関連付けられた複数のライトスルー標識を備えている。ライトスルー標識がセットされていると、関連するノード中の処理装置は、変更したデータを、キャッシュすることなく、ホーム・ノード中のシステム・メモリに書き戻す。上記制御情報は、さらに、複数のノードのうちの各ノードに各々が関連付けられた複数のキャッシュ不能標識から成るデータ記憶制御フィールドを備えることができる。キャッシュ不能標識がセットされると、関連するノード中の処理装置は、テーブル・エントリを参照して変換される群中の非物理アドレスに関連付けられたデータをキャッシュしないように命じられる。上記制御情報は、コヒーレンシー制御情報をも備えることができる。コヒーレンシー制御情報は、各ノードに、テーブル・エントリに関連付けられたデータ用のノード間コヒーレンシーがソフトウェア支援によって維持されるか否かを個別に示すものである。
【００１２】
【発明の実施の形態】
〔システムの概観〕
【００１３】
次に、図面を参照する。図１は、本発明によるＮＵＭＡコンピュータ・システム１０の典型的な実施形態を示す図である。図示した実施形態は、たとえば、ワークステーション、サーバ、またはメインフレーム・コンピュータとして実現しうる。
【００１４】
図１に示すように、ＮＵＭＡコンピュータ・システム１０は、ノード相互接続体１５で接続された少なくとも２つのノード１２を備えている。ノード相互接続体１５は、図示するように、スイッチとして実現することができる。本発明ではそうである必要はないけれども、図示した実施形態では、各ノード１２は本質的に同一である。各ノード１２は、ローカル相互接続体１８で接続された少なくとも１つの処理装置１４と、ローカル相互接続体１８とノード相互接続体１５との間に接続されたノード・コントローラ１６とを備えている。各ノード・コントローラ１６は、他のノード１２用のローカル・エージェント（手元にある代行者）として機能する。すなわち、ノード・コントローラ１６は、ローカル相互接続体１８上で受信した所定のオペレーションを他のノード１２へノード相互接続体１５を介して送信するとともに、ノード相互接続体１５を介して受信した所定のオペレーションをローカル相互接続体１８上に送信する。
【００１５】
下で詳述するように、処理装置１４は、ＣＰＵ２０を備えている。ＣＰＵ２０は、命令フロー論理回路とソフトウェア命令を実行するのに用いる実行装置とを備えている。各処理装置１４は、さらに、キャッシュ階層体２２を備えている。キャッシュ階層体２２は、全ＮＵＭＡコンピュータ・システム１０中のデータ記憶装置から関連するＣＰＵ２０にデータをステージするのに用いる少なくとも１レベルのオンチップ・キャッシュ（すなわちＣＰＵチップ上に形成されたキャッシュ）を含んでいる。さらに、処理装置１４は、インタフェース装置２５と応答論理回路２３とを備えている。インタフェース装置２５は、処理装置１４とローカル相互接続体１８との間のアドレス、データ、およびコヒーレンシー（一貫性）操作の通信を処理する。応答論理回路２３は、ローカル相互接続体１８上に発行されるオペレーションに対する組み合わせ応答を、当該オペレーションに対する様々なスヌープ応答から判別する。最後に、処理装置１４は、各々、メモリ・コントローラ２４を備えている。メモリ・コントローラ２４は、処理装置１４群の間に分散配置されている物理システム・メモリ２６のうちの関連する１つに対するアクセスを制御する。本発明の別の実施形態として、システム・メモリは、各ノードにおいて、ローカル相互接続体１８に接続された関連する１つのメモリ・コントローラが制御する単一のシステム・メモリとして実現してもよい。
【００１６】
現在の仕様では、「システム・メモリ」とは、（エラー状態が存在しない場合）物理的データ記憶装置中の個別の記憶場所に永続的に関連付けられた一意のアドレスを用いてアドレッシングする物理的データ記憶装置のことである。あるノード１２が、全ＮＵＭＡコンピュータ・システム１０中の１つのデータを一意に特定するのに用いるアドレスに関連付けられた、そのシステム・メモリ２６中の記憶場所に、あるデータを格納している場合、当該ノード１２は当該データのホーム・ノードであると定義される。逆に、他のノード１２群は、当該データに関しリモート・ノードであると定義される。
【００１７】
図１に示すように、ノード１２間のデータ共用を支援するために、メモリ・コントローラ２４は、ローカル・メモリ・ディレクトリ（ＬＭＤ）３２と、関連するリモート・メモリ・ディレクトリ（ＲＭＤ）３４を備えたリモート・メモリ・キャッシュ（ＲＭＣ）３０とを利用する。ここで使用しているように、ローカル・メモリ・ディレクトリ（ＬＭＤ）とは、関連する（すなわちローカルの）システム・メモリに存在するデータに関し、当該データが少なくとも１つのリモート・ノードにキャッシュされているか否かに関する表示を格納しているディレクトリのことである。逆に、リモート・メモリ・ディレクトリ（ＲＭＤ）とは、他の（すなわちリモートの）ノード（群）のシステム・メモリに由来するどのデータが、関連するリモート・メモリ・キャッシュ（ＲＭＣ）にキャッシュされているかを表示しているディレクトリのことである。
【００１８】
無論、ＮＵＭＡコンピュータ・システム１０は、追加の装置をさらに備えてもよい。それらは、本発明を理解するのに必要でないので、本発明を曖昧にしないために図１には示されていない。たとえば、任意のノード１２は、Ｉ／Ｏアダプタ、ネットワーク・アダプタ、オペレーティング・システムやアプリケーション・ソフトウェアを格納する不揮発性記憶装置、および、ネットワークや付属装置への接続用のシリアル・ポートとパラレル・ポートをサポートしてもよい。
【００１９】
〔メモリの構成〕
【００２０】
ＮＵＭＡコンピュータ・システム１０の性能に影響するのは、とりわけ、データ・アクセス・レイテンシー（待ち時間）である。ノード内のデータ要求に対するアクセス・レイテンシーは、通常、ノード間のデータ要求に対するアクセス・レイテンシーよりもずっと小さいから、システム性能が向上するのは、一般に、処理装置１４を備えた各ノード１２が大データ記憶容量を備えてノード間データ要求を最小にした場合である。たとえば、典型的な実施形態では、ＮＵＭＡコンピュータ・システム１０は、４つのノード１２を備えている。各ノード１２は、４つの処理装置１４と４つのシステム・メモリ２６を備えている。各システム・メモリ２６の容量は、１ギガバイト（ＧＢ）以上である。したがって、システム・メモリの合計記憶容量は、数ギガバイトになる。システム・メモリ２６は、容量が大きいので、一般に、コストを考慮して、バイト当りのコストの低いメモリ技術（たとえばＤＲＡＭ〔動的ランダム・アクセス・メモリ〕）で構築する必要がある。
【００２１】
本発明によると、システム・メモリ２６の記憶容量は、（たとえばＮＵＭＡコンピュータ・システム１０のオペレーティング・システムによって）少なくとも１つのアドレス空間に区画されている。図１に示す実施形態では、各システム・メモリ２６は、システム・メモリ・アドレス空間２８を備えている。システム・メモリ・アドレス空間２８は、ＮＵＭＡコンピュータ・システム１０のオペレーティング・システムが、様々なオペレーティング・システム・プロセスとアプリケーション・プロセスに命令とデータの記憶用に割り当てたものである。さらに、各ノード１２の、処理装置１４を有する少なくとも１つのシステム・メモリ２６は、少なくとも１つの他のノード１２のシステム・メモリ中に存在するデータに対応するデータを格納するＲＭＣ３０を備えている。したがって、各ノード１２のリモート・メモリ・キャッシュは、１つの、可能であれば複数のシステム・メモリ２６中に組み込まれている。ＲＭＣ３０が複数のシステム・メモリ２６に分散している実施形態では、キャッシュ・ライン（これらは同じノード１２の少なくとも任意のＣＰＵ２０にとってアクセス可能である）は、特定のＲＭＣにマップされているのが望ましい。このマッピングは、キャッシュ・ラインに関連付けられた物理アドレスまたは論理アドレスをハッシュすることによって行なう。
【００２２】
リモート・メモリ・キャッシュは低コストのＤＲＡＭで実現しているので、ＲＭＣ３０のバイト当りのコストは、ＳＲＡＭで実現した場合と比べて大幅に低い。すなわち、追加のコストをほとんどかけなくとも、そのサイズを大幅に増大させることができる。さらに、リモート・メモリ・キャッシュを複数のシステム・メモリに分散させることにより、帯域幅が大幅に改善する。それは、アクセス制御を単一のノード・コントローラではなく複数のメモリ・コントローラ２４全体に分散させているからである。
【００２３】
留意点を挙げると、本発明の一部の実施形態では、オペレーティング・システムは、少なくとも１つのノードにおいて、リモート・メモリ・キャッシュに物理システム・メモリの一部または全部を割り当て、システム・メモリのアドレス空間に物理システム・メモリを全く割り当てないようにしている。このような実施形態では、システム・メモリのアドレス空間は、たとえばラック・システム中のディスク・メモリ引き出しとして実現された少なくとも１つのノードに局限されている。一方、処理装置を有する他のノードの物理システム・メモリは、リモート・メモリ・キャッシュとして割り当てられている。
【００２４】
上述したように、ＲＭＣ３０の少なくとも一部を保持するように割り当てられたシステム・メモリ２６に関連付けられた各メモリ・コントローラ２４は、ＲＭＤ３４を備えており、ＲＭＣ３０の自分に関連付けられた部分の内容をそれに記録する。既存のキャッシュ・ディレクトリの場合と同様に、ＲＭＤ３４は、ＲＭＣ３０中のデータに関係するアドレス情報だけでなく、コヒーレンシー情報、置き換え情報、および、任意事項としての追加の状態情報（たとえば包含性）をも格納するのが望ましい。
【００２５】
メモリ・コントローラ２４によるＲＭＤ３４への迅速なアクセスを支援するために、ＲＭＤ３４は、図１に示すように、高速のＳＲＡＭで実現することができる。この実現方法によるとアクセス・レイテンシーが大幅に低減するのは、要求に応答してなされるディレクトリの探索が迅速になるからである。しかし、ＲＭＣ３０の場合と同様に、ＲＭＤ３４にＳＲＡＭを使うと、実際のシステムでは、高価になるとともに、ＲＭＤ３４（したがってＲＭＣ３０）のサイズが制限されてしまう。これらの問題点を扱うのに、２つの方法をとることができる。
【００２６】
第１に、ＲＭＤ３４をＳＲＡＭ（または他の高コスト記憶技術）で実現する場合、ＲＭＤ３４は、大きなセクタを実現して（すなわち、大きなデータ・ブロックをタグと状態情報の組に関連付けて）、ＳＲＡＭの記憶容量の使用を最適化することができる。第２の方法は、ＲＭＤ３４をＲＭＣ３０と一緒にシステム・メモリ２６に組み込むものである。この方法で、ＲＭＤ３４を実現するコストを大幅に低減させることができる。あるいは、追加のコストなしに、ＲＭＤ３４とＲＭＣ３０のサイズを大幅に増大させることができる。ＲＭＤ３４をシステム・メモリ２６のＤＲＡＭに組み込むと、ディレクトリ・アクセス時間が増大する可能性があるけれども、メモリ・コントローラ２４に最近アクセスされた（したがってアクセスされる可能性の高い）ディレクトリ・エントリを含む小さなディレクトリ・キャッシュを備えることにより、余分なディレクトリ・アクセス・レイテンシーを低減させることができる。
【００２７】
ＮＵＭＡコンピュータ・システム１０のオペレーティング・システムがＲＭＤ３４および／またはＲＭＣ３０に割り当てるシステム・メモリの量は、性能を評価する上で重要である。（「Ａおよび／またはＢ」は「ＡおよびＢ、Ａ、またはＢ」を表わす。）というのは、大きなＲＭＣ３０とＲＭＤ３４を割り当てると、システム・メモリのアドレス空間２８が必然的に減少するからである。好適な実施形態では、ＲＭＣ３０とＲＭＤ３４に割り当てるシステム・メモリ２６対システム・メモリのアドレス空間の割合は、実行すべきアプリケーションの必要に応じて動的に変化しうる。たとえば、アプリケーションが自身が実行することになっているノード１２内のメモリしかアクセスしないことをオペレーティング・システムが検出した場合には、オペレーティング・システムは、システム・メモリのアドレス空間２８と比べてかなり小さな空間をＲＭＣ３０（およびそれに関連付けられたＲＭＤ３４）に割り当てるだけでよい。逆に、アプリケーションがリモート・メモリに対する頻繁なアクセスを必要とするようになることをオペレーティング・システムが検出した場合には、オペレーティング・システムは、システム・メモリの大きな部分をＲＭＣ３０（およびそれに関連付けられたＲＭＤ３４）に割り当てる必要がある。
【００２８】
ＲＭＣ３０（およびＲＭＤ３４）は、少なくとも２つの交換可能な方法に従って構成することができる。第１に、ＲＭＣ３０は、包含的（または疑似包含的）キャッシュとして実現することができる。包含的キャッシュとは、ローカル・キャッシュ階層体２２中に保持されている、他のノードに由来するデータのスーパーセット（拡大集合）を全体として格納するキャッシュのことである。この実施形態では、キャッシュ・ラインをあるノード１２のＲＭＣ３０中にロードするのは、要求されたキャッシュ・ラインを他のノード１２から受け取ったときである。あるいは、ＲＭＣ３０は、「犠牲キャッシュ」として実現することもできる。犠牲キャッシュとは、ローカル・キャッシュ階層体２２から割り当てを解除された共用あるいは変更コヒーレンシー状態にあるリモート・データのキャッシュ・ラインしか保持しないキャッシュのことである。
【００２９】
〔メモリ・コヒーレンシー〕
【００３０】
システム・メモリ２６に格納されているデータは、一般に、ＮＵＭＡコンピュータ・システム１０内の任意のＣＰＵ２０によって要求され、アクセスされ、変更されるから、ＮＵＭＡコンピュータ・システム１０は、互換性のあるキャッシュ・コヒーレンシー・プロトコルのうちの少なくとも１つを実装（implement)して、キャッシュ階層体２２とノード１２のＲＭＣ３０との間のコヒーレンシー（すなわち、システム・メモリのアドレス空間２８の全内容の一貫した見え方）を維持している。したがって、ＮＵＭＡコンピュータ・システム１０は、ＣＣ−ＮＵＭＡコンピュータ・システムとして分類するのが適切である（ＣＣ＝キャッシュ・コヒーレンス）。キャッシュ・コヒーレンス・プロトコルは、実装（implementation) に依存するとともに、たとえば、周知のＭＥＳＩ（Modified, Exclusive, Shared, Invalid）プロトコルまたはそれを変形したプロトコルから成る。当業者が理解しうるように、キャッシュ階層体２２が使用するコヒーレンシー・プロトコルは、ローカル相互接続体１８とノード相互接続体１５をまたいだ様々な実装依存メッセージの送信を必要とする。これらの実装依存メッセージには、キャッシュ階層体２２にＣＰＵ２０が実行する命令を知らせるためのもの、必要なデータと命令を取得するためのもの、変更したデータをシステム・メモリ２６にライトバックする（書き戻す）ためのもの、および、コヒーレンシーを維持するのに必要な他の機能を実行するためのもの、などがある。
【００３１】
ノード間のコヒーレンシーを維持するために、メモリ・コントローラ２４は、関連するシステム・メモリのアドレス空間２８からリモート・ノード１２に取り出したデータ（すなわちキャッシュ・ライン）のシステム・メモリ・アドレス表示をＬＭＤ３２に格納している。小規模なディレクトリを維持するのが重要な低価格の実装では、ＬＭＤ３２は、各データ・グラニュールに、当該データ・グラニュールが少なくとも１つのリモート・ノード１２に「取り出されている（checked out)」か否かに関して不明確な表示しか関連付けていない。これに対して、高価格の実装では、ＬＭＤ３２は、各データ・グラニュールに関連付けて、各リモート・ノード１２におけるキャッシュ・ラインのコヒーレンシー状態の表示を格納しているのが望ましい。本発明の典型的な実施形態によるＬＭＤ３２のエントリに格納されるノード当りのコヒーレンシー状態には、表１にまとめたようなものがある。
【００３２】
【表１】
0003924206.tif 000002
【００３３】
表１に示すように、高価格の実装においてさえ、リモート処理ノードが保持しているキャッシュ・ラインのコヒーレンシー状態は、ある程度の不明確さを伴わないと知ることができない。不明確さの程度は、当該コヒーレンシー・プロトコルの実装によって、リモート側が保持しているキャッシュ・ラインが、ホーム・ノードのＬＭＤ３２に知らせることなくＳからＩへ、ＥからＩへ、または、ＥからＭへ遷移できるか否かによる。
【００３４】
〔処理装置のアーキテクチャ〕
【００３５】
次に、図２を参照する。図２は、ＮＵＭＡコンピュータ・システム１０の処理装置１４の実施形態のより詳細なブロック図である。図２に示す実施形態では、処理装置１４は、単一の処理装置から成り、様々な実行装置、レジスタ、バッファ、メモリ、および、その他の機能装置を備えている。これらは、すべて、集積回路構成要素によって形成されている。
【００３６】
図２に（そして図１にも）示すように、処理装置２０は、ＣＰＵ２０、キャッシュ階層体２２、メモリ・コントローラ２４、および、インタフェース装置（ＩＵ）２５を備えている。ＩＵ２５は、処理装置２０をローカル相互接続体１８に接続している。ＩＵ２５は、さらに、キャッシュ階層体２２に接続されている。キャッシュ階層体２２は、図示した実施形態では、統合されたレベル２（Ｌ２）キャッシュ４２と別々のレベル１（Ｌ１）データ・キャッシュ４４およびＬ１命令キャッシュ４６とを備えている。Ｌ１データ・キャッシュ４４とＬ１命令キャッシュ４６にそれぞれ格納されているデータと命令には、アドレス・タグで特定してアクセスする。各アドレス・タグは、システム・メモリ２６中のデータまたは命令の物理アドレスの所定数の上位ビットから成る。後述するように、ＣＰＵ２０がデータと命令を参照するのに用いるのは、実効アドレスである。したがって、ＣＰＵ２０がキャッシュ４２、４４、４６中のデータと命令にアクセスできるようにするために、データ・メモリ管理装置（ＤＭＭＵ）４８と命令メモリ管理装置（ＩＭＭＵ）５０が、データと命令の実効アドレスをそれぞれ仮想アドレス、次いで物理アドレスに変換する。この物理アドレスがキャッシュ４２、４４、４６に供給される。
【００３７】
Ｌ１命令キャッシュ４６とＩＭＭＵ５０は、さらに、命令順序付け装置５２に接続されている。命令順序付け装置５２は、ＩＭＭＵ５０が変換したアドレスを用いてＬ１命令キャッシュ４６から実行用の命令をフェッチする。命令順序付け装置５２は、分岐命令は内部で処理し、順序（非分岐）命令は当該順序命令用の実行資源が利用可能になるまで一時的にバッファリングする。図示した実施形態では、プロセッサ２０の順序実行資源には、整数演算装置（ＩＵ）６２、ロード・ストア装置（ＬＳＵ）６８、および、浮動小数点演算装置（ＦＰＵ）７４がある。実行装置６２、６８、７４の各々は、通常、汎用レジスタ（ＧＰＲ）６６と浮動小数点レジスタ（ＦＰＲ）７２に格納されているオペランドを参照して、各プロセッサ時間内に特定の型の順序命令群のうちの少なくとも１つの順序命令を実行する。
【００３８】
実行装置６２、６８、７４のうちのあるものがある命令の実行を終了すると、当該実行装置は、完了装置７６に通知する。すると、完了装置７６は、当該命令の完了を指示する。必要な場合には、データのコミットメントがＣＰＵ２０の状態に反映される（コミットメントはコミットとロールバックの総称である）。
【００３９】
〔仮想アドレス空間〕
【００４０】
本発明を説明するために、一実施形態について述べる。この実施形態では、ＮＵＭＡデータ処理システム１０の各ＣＰＵ２０の命令順序付け装置５２とＬＳＵ６８は、命令とデータを参照するのに、３２ビットの実効アドレスを用いる。すなわち、ＣＰＵ２０は、４ギガ（Ｇ）バイト（２３２）の実効アドレス空間を有する。この実効アドレス空間は、５２ビットの仮想アドレスによって参照されるずっと大きな仮想アドレス空間のサブセット（部分集合）である。この仮想アドレス空間は、ＮＵＭＡデータ処理システム１０中の全ＣＰＵ２０が共用するが、多数（たとえば４キロ〔Ｋ〕バイト）のメモリ・ページに区画されている。各メモリ・ページは、ページ・テーブル・エントリ（ＰＴＥ）アドレス記述子を備えている。ＰＴＥは、（仮想）メモリ・ページの基底仮想アドレスと、１つのシステム・メモリ２６中の（物理）メモリ・ページの対応する（基底）物理アドレスとを関連付けている。
【００４１】
システム・メモリ２６を備えた複数のノード１２の各々は、自身のシステム・メモリ２６中に存在する少なくとも１つのページ・テーブルを有する。各ページ・テーブルに含まれているＰＴＥの構成は、ＮＵＭＡデータ処理システム１０のオペレーティング・システムが２つのハッシュ関数のうちの一方を用いて行なう。本発明によれば、特定の処理ノード１２中の処理装置１４は、ローカルの（すなわち自身の）システム・メモリ２６中のページ・テーブルに存在するＰＴＥだけにアクセスしてそれをキャッシュし、他のノード１２中のページ・テーブルにはアクセスしないのが望ましい。
【００４２】
〔ページ・テーブル〕
【００４３】
次に、図３を参照する。図３は、図１のＮＵＭＡコンピュータ・システム１０のシステム・メモリ２６中に存在するページ・テーブル１９の典型的な実施形態を示す詳細なブロック図である。ページ・テーブル１９は、可変サイズのデータ構造であり、多数のページ・テーブル・エントリ・グループ（ＰＴＥＧ）８０から成る。各ＰＴＥＧ８０は、多数のＰＴＥ８２を備えている。各ＰＴＥ８２は、ページ・テーブル１９中の主ＰＴＥＧ８４または副ＰＴＥＧ８６中の任意の場所に割り当てることができる。主ＰＴＥＧ８４にするか副ＰＴＥＧ８６にするかは、不揮発性記憶装置からページインするときに、オペレーティング・システム２１がメモリ中に関連するメモリ・ページをセットアップするのに主ハッシュ関数を使うか副ハッシュ関数を使うかによる。主ＰＴＥＧ８４と副ＰＴＥＧ８６のアドレスは、図２のテーブル・ウォーク・コントローラ７８によるページ・テーブル探索操作用のエントリ・ポイントとして機能する。
【００４４】
〔ページ・テーブル・エントリ（ＰＴＥ）〕
【００４５】
次に、図４を参照する。図４は、ページ・テーブル１９中の各ＰＴＥ８２の構造を示す図である。図示するように、各ＰＴＥ８２は、有効ビット９０、仮想セグメントＩＤ（ＶＳＩＤ）９２、ハッシュ関数識別子（Ｈ）９４、および、短縮ページ・インデックス（Abbreviated Page Index: ＡＰＩ）９６を備えている。有効ビット９０は、ＰＴＥエントリ８２が有効であるか否かを示す。ＶＳＩＤ９２は、仮想ページ番号の上位ビットを特定している。ハッシュ関数識別子（Ｈ）９４は、ＰＴＥ８２を生成するのに使用したのが主ハッシュ関数と副ハッシュ関数のうちのどちらであるかを示す。ＡＰＩ９６は、仮想ページ番号の下位ビットを特定している。ハッシュ関数識別子（Ｈ）９４と、ＶＳＩＤ９２およびＡＰＩ９６によって特定される仮想ページ番号とは、ページ・テーブル１９の探索中、または、ＤＭＭＵ４８とＩＭＭＵ５０が維持しているＴＬＢ（変換索引バッファ）４９と５１の探索中に特定のＰＴＥ８２を突き止めるのに使用する。
【００４６】
なお図４を参照する。各ＰＴＥ８２は、さらに、物理ページ番号（ＰＰＮ）９８、被参照（Ｒ）ビット１００、被変化（Ｃ）ビット１０２、メモリ・アクセス属性（ＷＩＭＧ）ビット１０４、および、ページ保護（ＰＰ）ビット１０６を備えている。物理ページ番号（ＰＰＮ）９８は、対応する物理メモリ・ページ・フレームを特定している。被参照（Ｒ）ビット１００と被変化（Ｃ）ビット１０２は、これらのビットをリセットしてからメモリ・ページがアクセスあるいは変更されたか否かを示している。メモリ・アクセス属性（ＷＩＭＧ）ビット１０４は、メモリ・ページに対するメモリ更新モードを特定している。ページ保護（ＰＰ）ビット１０６は、メモリ・ページに対するアクセス保護制約条件を定義している。最後に、各ＰＴＥ８２は、本発明が導入したノードに特有の次に示す新たな３つのフィールドを備えている。すなわち、ノード・ライトスルー（Node Write Through: ＮＷＴ）フィールド１０８、ノード・ノー・インテント・ツー・キャッシュ（Node No-Intent-to-Cache:ＮＮＣ）フィールド１１０、および、ノード・ローカル・リード・ウィズ・インテント・ツー・モディファイ（Node Local Read-with-Intent-to-Modify:ＮＬＭ）フィールド１１２である。
【００４７】
好適な実施形態では、ＮＷＴフィールド１０８は、ＮＵＭＡコンピュータ・システム１０中のノード１２ごとに１ビット備えている。各ビットは、当該ビットに関連付けられたノード１２の処理装置１４が、ＰＴＥ８２に関連付けられたメモリ・ページに属すあるデータに対してライトスルー・モードで動作するか否かを制御する。ただし、これを行なうのは、当該データが別のノード１２中のシステム・メモリ２６のアドレス空間２８に存在する場合である。たとえば、ノード１のＣＰＵ２０がノード１に対してライトスルーと印を付けられた、メモリ・ページ中の場所にストアを発行したとする。ＣＰＵ２０は、ＰＴＥ８２中にセットされたノード１用のビットを見つけると、自身の関連するキャッシュとメモリの階層体にストア・データ（変更したデータ）をＮＷＴ標識と一緒に送る。このＮＷＴ標識は、変更したデータのホーム・ノードがノード１以外のノード１２である場合には、当該変更したデータを保持しないようにキャッシュ階層体２２に命ずるものである。このＮＷＴ標識とストア・データを受け取ると、ＣＰＵ２０に関連付けられたキャッシュ階層体２２は、オペレーティング・システムがセットしたメモリ構成レジスタを参照して、ローカルのノード（すなわちＣＰＵ２０が属すノード）が当該ストア・データ用のホーム・ノードであるか否かを判断する。Ｙｅｓならば、キャッシュ階層体２２は、既存のアクセス制御（ＷＩＭＧ）ビット１０４（これは、通常、キャッシュ階層体２２が当該ストア・データをキャッシュすべきことを意味している）に従って当該ストア・データを処理する。このように、キャッシュ階層体２２は、引き続いて、変更介入により、他の要求者にストア・データを供給することができる。
【００４８】
しかしながら、ストア・データに対するホーム・ノードがローカルのノードでない場合、キャッシュ階層体２２は、変更したデータをホーム・ノード１２中のシステム・メモリ２６に書き戻すライト・トランザクションをローカル相互接続体１８に発行する。この場合、当該変更したデータをホーム・ノード１２に直ちに書き戻すので、ホーム・ノード１２のメモリ・コントローラ２４は、別のコヒーレンシー通信を通じてリモートのノード１２から当該変更したデータを書き戻すように要求する必要がない。この結果、コンシューマーによる引き続く読み出し要求のアクセス・レイテンシーが改善される。したがって、ＮＵＭＡコンピュータ・システム１０のオペレーティング・システムは、通常、プロデューサーを含むノード１２ごとにＮＷＴビットをセットするが、コンシューマーを含むノード１２用にはＮＷＴビットをセットしない。
【００４９】
余談になるが、留意点を挙げると、ＮＷＴフィールド１０８はアクセス制御（ＷＩＭＧ）ビット１０４に属すライトスルー（Ｗ）ビットに取って代わるものではないから、上位互換性は維持されている。その代わり、Ｗビットがセットされていると、ＮＷＴフィールド１０８は無視される。
【００５０】
ＮＷＴフィールド１０８と同様に、ＮＮＣフィールド１１０は、ＮＵＭＡコンピュータ・システム１０中のノード１２ごとに１ビット備えているのが望ましい。ＮＮＣフィールド１１０中の各ビットは、自身が関連するノード１２用のリード・ウィズ・ノー・インテント・ツー・キャッシュ（Read-With-No-Intent-To-Cache: ＲＷＮＩＴＣ）フラグとして機能する。たとえば、ノード２中のＣＰＵ２０がノード２用にセットされたＮＮＣビットを有する、メモリ・ページ中の場所にロードを発行したとする。すると、ＣＰＵ２０は、自身に関連するキャッシュとメモリの階層体にリード要求をＮＮＣ標識と一緒に送る。ただし、このＮＮＣ標識は、ＣＰＵ２０のキャッシュ階層体に、要求したデータをキャッシュしないように命ずるものである。上記リード要求がキャッシュ階層体２２でミスしたと仮定すると、リード要求とＮＮＣ標識に対するキャッシュ階層体２２の応答は、既存のリード要求ではなく、自身のローカル相互接続体１８にＲＷＮＩＴＣ要求（たとえば、ＮＮＣフラグをセットさせるリード要求）を発行することである。容易に理解しうるように、ＲＷＮＩＴＣ要求は、ローカルのノード・コントローラ１６が別のノード１２に送信してサービスさせるものである。
【００５１】
重要なのは、ＲＷＮＩＴＣ要求中のＮＮＣフラグが、キャッシュ階層体２２中のコヒーレンシー管理論理回路と要求を受け取ったメモリ・コントローラ２４とに、ＣＰＵのロード要求を満足させた後は、要求されたデータは要求元のキャッシュ階層体２２に保持されないということを知らせている点である。したがって、他のキャッシュ階層体２２中に存在する要求されたデータのコピーのコヒーレンシー状態は、ＲＷＮＩＴＣ要求に応答して更新する必要がない。そして、要求されたデータのホーム・ノード１２がＲＷＮＩＴＣ要求を処理した場合には、ホーム・ノード１２のＬＭＤ３２は、更新する必要がない。さらに、処理装置１４が引き続いて同じデータに対して（たとえばリード・ウィズ・インテント・ツー・モディファイ〔Read-with-Intent-to-Modify〕要求を発行することにより）排他的なアクセスを要求すると、要求されたデータが存在するホーム・ノード１２のシステム・メモリ２６のメモリ・コントローラ２４は、ノード２における要求されたデータのコピーを無効にする必要がない。したがって、ノード間のコヒーレンシー用の通信量が低減するので、性能が向上する。上述した点から認識しうるように、ＮＵＭＡコンピュータ・システム１０のオペレーティング・システムは、コンシューマーを有するノード１２ごとにＮＮＣビットをセットし、プロデューサーを有するノードに対してはＮＮＣビットをセットしないのが望ましい。
【００５２】
なお図４を参照する。各ＰＴＥ８２中のＮＬＭフィールド１１２は、ＮＵＭＡコンピュータ・システム１０中の各ノード１２に関連付けられた１ビットを有するのが望ましい。各ＮＬＭビットは、関連するノード１２中のハードウェアが、対応するメモリ・ページ中のアドレスに対してＮＵＭＡコンピュータ・システム１０全体のグローバル・コヒーレンシーを維持する必要があるか、あるいは、単一のノード内のローカル・コヒーレンシーを維持するだけでよいか（すなわち、ソフトウェアがコヒーレンシー・ハードウェアを支援するために、グローバル・コヒーレンシー管理を行なうことになるか否か）、というグローバル／ローカルの標識として機能する。
【００５３】
たとえば、ノード１中のＣＰＵ２０がＮＬＭフィールド１１２中にノード１に対して「ローカル」と印を付けられた、メモリ・ページ中の場所にストアを発行する場合、ＣＰＵ２０は、自身に関連するキャッシュ階層体２２にストア・データと一緒にＮＬＭローカル標識を送る。ＮＬＭローカル標識は、上記キャッシュ階層体２２に当該ＮＬＭローカル標識を、上記キャッシュ階層体２２が目標とするキャッシュ・ラインにアクセスするために発行したＲＷＩＴＭ要求に付加するように命ずる。ＮＬＭローカル標識を含んだＲＷＩＴＭ要求を受け取ると、ホーム・ノード１２中の適当なメモリ・コントローラ２４が、要求されたキャッシュ・ラインを供給するけれども、コヒーレンシーの観点からＲＷＩＴＭ要求を無視する。なぜなら、「ローカル」という設定は、目標とするメモリ・ページのグローバル・コヒーレンシーを処理するのはソフトウェアの責任である、ということを示しているからである。したがって、上記メモリ・コントローラ２４は、ＬＭＤ３２を更新しない。しかし、ハードウェアは、要求元ノード１２内のコヒーレンシーの管理を続ける。
【００５４】
通常、アプリケーションの実行が関連するノード１２に限定される動作シナリオでは、ＮＬＭ１１２中のあるビットが「ローカル」状態にセットされる。データとコヒーレンシーの転送に起因するＮＵＭＡコンピュータ・システム１０のノード間通信のレイテンシーはきわめて大きく（たとえば２０００ＣＰＵサイクル以上に）なりうるから、性能上の利点が得られるのは、上記動作シナリオにおいてソフトウェアがコヒーレンシー管理の支援をしうるようにした場合である。なぜなら、ソフトウェアは、コヒーレンシーを失うことなくレイテンシーの大きなグローバル・コヒーレンシー動作を除去できる、アドレスに関する追加の情報にアクセスできるからである。同時に１つのＮＬＭビットだけを「ローカル」状態にセットするのが望ましいけれども、本発明の一部の実施形態では、複数のＮＬＭビットを「ローカル」状態にセットすることができる。しかし、そのような実施形態では、ソフトウェアが大幅に余分に複雑になるので、性能上の利点が減少する。
【００５５】
〔アドレス変換〕
【００５６】
次に、図５を参照する。図５は、各ＣＰＵ２０が用いるアドレス変換プロセスの高レベルの流れ図を示す図である。アドレス変換プロセスでは、まず、ＣＰＵ２０が用いる実効アドレス（ＥＡ）を仮想アドレスに変換したのち、キャッシュ階層体２２、システム・メモリ２６、およびメモリ・マップＩ／Ｏ装置にアクセスするのに用いる物理アドレスに変換する。図２に示したように、ＬＳＵ６８は、各データ・アクセス要求の３２ビットのＥＡをＤＭＭＵ４８に送信する。同様に、命令順序付け装置５２は、各命令フェッチ要求の３２ビットのＥＡをＩＭＭＵ５０に送信する。ＤＭＭＵ４８とＩＭＭＵ５０は、各々、図５に示すプロセスを用いて、このようなＥＡを変換する。当業者が認識しうるように、同様の変換プロセスを用いて、６４ビットのアドレスや１２８ビットのアドレスも変換することができる。
【００５７】
図示するように、変換すべき３２ビットのＥＡ１２０を用いて、ＤＭＭＵ４８（データ用）またはＩＭＭＵ５０（命令用）中の１６個のセグメント・レジスタ１１２のうちの１つを選択する。（６４ビットのＥＡ実装では、セグメント化機構には図示したのとは異なるものを用い、アドレス変換の残りの部分は様々なフィールドのサイズのみが異なるようにするのが望ましい。）セグメント・レジスタ１２２の所定の１つに格納されているＶＳＩＤは、ＥＡ１２０の１６ビットのページ・インデックスおよび１２ビットのバイト・オフセットとともに５２ビットの仮想アドレス１２４を形成している。このＶＳＩＤをＤＴＬＢ４９またはＩＴＬＢ５１のうちの適切なものに渡す。ＤＴＬＢ４９とＩＴＬＢ５１は、一実施形態では、各々、２ウエイ・セット・アソシアティブのＰＴＥキャッシュとして実現する。次いで、ＥＡ１２０のビット１５〜１９を用いて、ＴＬＢの特定のラインに格納されている２つのＰＴＥを選択する。次いで、ＥＡ１２０のビット１０〜１４と、所定のＰＴＥとＶＳＩＤフィールドの各々に関連付けられたアドレス・タグとを比較する。次いで、ＡＰＩフィールド（ＥＡのビット４〜９）と所定のＰＴＥの対応するフィールドとを比較する。さらに、所定のＰＴＥの各々の有効（Ｖ）ビットを検査する。上記比較の結果、一致が存在すれば、一致したＰＴＥ８２のＰＰビットが例外に反していないか検査する。これらのビットが例外を引き起こしていなければ、一致したＰＴＥ８２に含まれる２０ビットのＰＰＮ（物理ページ番号）をＬ１データ・キャッシュ４４とＬ１命令キャッシュ４６のうちの適切なものに（適当な場合には、ＮＷＴ、ＮＮＣ、またはＮＬＭと一緒に）渡して、要求されたデータまたは命令が存在するか否かを判断する。図５に示すように、２０ビットのＰＰＮとＥＡ１２０が指定している１２ビットのバイト・オフセットとを連結すると、要求されたデータまたは命令の、システム・メモリ２６における３２ビットの物理アドレス１２６が得られる。
【００５８】
仮想アドレス１２４を物理アドレス１２６に変換するのに必要なＰＴＥ８２は、参照の局所性によって、通常、ＤＴＬＢ４９またはＩＴＬＢ５１の一方に存在するけれども、アドレス変換を実行するには、テーブルウォーク・コントローラ７８が、公知の方法を用いてキャッシュ階層体２２またはシステム・メモリ２６中で、必要なＰＴＥ８２を突き止める必要がある。
【００５９】
上述したように、本発明は、ノード特有の記憶とコヒーレンシー管理情報を格納したＰＴＥを含むページ・テーブルを備えたＮＵＭＡデータ処理システムを提供するものである。ノード特有の制御情報をＰＴＥに組み込むことにより、システム・ハードウェアが実行するデータ記憶とコヒーレンシー管理の活動を実行中のソフトウェアの振る舞いと適合させるのが容易になるので、不必要なコヒーレンシー通信がなくなるとともにデータ・アクセスのレイテンシーが低減する。
【００６０】
好適な実施形態について本発明を特に示しかつ説明したけれども、当業者が理解しうるように、本発明の本旨と範囲のうちで、形態と詳細を様々に変更しうる。たとえば、関連するＰＴＥを有する固定サイズの仮想メモリ・ページについて本発明を説明したけれども、理解すべき点を挙げると、本発明は、関連するブロック・アドレス・テーブル（ＢＡＴ）エントリを備えた可変ブロック・サイズの仮想メモリに適用することもできる。さらに、ページ・テーブルに組み込んだ特定のノード特有の制御情報について本発明を説明したけれども、当業者が認識しうるように、本発明は、その範囲がここで説明した特定の制御情報に限定されることなく、一般に、ページ・テーブル中のノード特有の制御情報の全体に適用することができる。
【図面の簡単な説明】
【図１】  本発明の方法とシステムを有利に使用する際に依拠するＮＵＭＡデータ処理システムの実施形態を示す図である。
【図２】  図１に示すＮＵＭＡデータ処理システム中の処理装置の実施形態を示すブロック図である。
【図３】  図１に示すＮＵＭＡデータ処理システムにおけるページ・テーブルの実施形態を示す図である。
【図４】  図１に示すＮＵＭＡデータ処理システムにおけるＰＴＥの典型的な実施形態を示す図である。
【図５】  本発明により実効アドレスを仮想アドレス次いで物理アドレスに変換するプロセスを示す高レベルの流れ図である。
【符号の説明】
１０  ＮＵＭＡコンピュータ・システム
１２  ノード
１４  処理装置
１５  ノード相互接続体
１９  ページ・テーブル
２２  キャッシュ階層体
２６  システム・メモリ
８２  ページ・テーブル・エントリ（ＰＴＥ）
１０８  ノード・ライトスルー（ＮＷＴ）フィールド
１１０  ノード・ノー・インテント・ツー・キャッシュ（ＮＮＣ）フィールド
１１２  ノード・ローカル・リード・ウィズ・インテント・ツー・モディファイ（ＮＬＭ）フィールド
１２４  仮想アドレス
１２６  物理アドレス
【図１】
0003924206.tif 000003
【図２】
0003924206.tif 000004
【図３】
0003924206.tif 000005
【図４】
0003924206.tif 000006
【図５】
0003924206.tif 000007