(57)【特許請求の範囲】
【請求項１】
プロセッサと、事前記憶仮想アドレスおよびコンテキスト識別番号を含む少なくとも１つの変換テーブル・エントリを有する変換テーブルを含む変換索引バッファと協調して動作するように構成され、プロセッサから要求された仮想アドレスを物理アドレスに変換するように構成されたアドレス変換制御回路であって、
第１のコンテキスト記憶素子に第１のコンテキスト番号が含まれ、第２のコンテキスト記憶素子に第２のコンテキスト番号が含まれる複数のコンテキスト記憶素子と、
コンテキスト突合わせ回路であって、
（ｉ）前記第１のコンテキスト番号と前記コンテキスト識別番号を受けて両者を比較し、（ｉｉ）第１のコンテキスト番号がコンテキスト識別番号と等価であるか否かを示す第１の比較信号を出力する第１の比較ユニットと、
（ｉ）入力として第１の比較信号とコンテキスト選択ビットを受け、
（ｉｉ）第１のコンテキスト突合わせ信号を第１の論理ユニットに出力する第１の突合わせ論理ゲートと、
（ｉ）前記第２のコンテキスト番号と前記コンテキスト識別番号を受けて両者を比較し、（ｉｉ）第２のコンテキスト番号がコンテキスト識別番号と等価であるか否かを示す第２の比較信号を出力する第２の比較ユニットと、
前記コンテキスト選択ビットを受けてこれを反転するインバータと、
（ｉ）入力として第２の比較信号と前記コンテキスト選択ビットの補数を受け、
（ｉｉ）第２のコンテキスト突合わせ信号を前記第１の論理ユニットに出力する第２の突合わせ論理ゲートとを含むコンテキスト突合わせ回路と、
事前記憶仮想アドレスを要求仮想アドレスと比較し、事前記憶仮想アドレスが要求仮想アドレスと等価であるか否かを示す比較信号を出力する比較ユニットと、
前記第１の論理ユニットと前記比較ユニットとに結合し、前記コンテキスト識別番号が選択されたコンテキスト番号と等価であることを前記コンテキスト突合わせ信号が示し、かつ、事前記憶仮想アドレスが要求された仮想アドレスと等価であることを前記比較信号が示す場合に、変換ヒット信号を出力するように構成された第２の論理ユニットと、を備えるアドレス変換制御回路。
【請求項２】
プロセッサと、事前記憶仮想アドレスおよびコンテキスト識別番号を含む少なくとも１つの変換テーブル・エントリを有する変換テーブルを含む変換索引バッファと協調して動作するように構成され、プロセッサから要求された仮想アドレスを物理アドレスに変換するように構成されたアドレス変換制御回路であって、
第１のコンテキスト番号を記憶するように構成された基本コンテキスト記憶素子と、
第２のコンテキスト番号を記憶するように構成されたグループ・コンテキスト記憶素子と、
コンテキスト突合わせ回路であって、
（ｉ）前記第１のコンテキスト番号と少なくとも１つの変換テーブル・エントリから前記コンテキスト識別番号を受けて両者を比較し、
（ｉｉ）第１のコンテキスト番号がコンテキスト識別番号と等価であるか否かを示す第１の比較信号を出力する第１の比較ユニットと、
（ｉ）入力として第１の比較信号とコンテキスト選択ビットを受け、
（ｉｉ）第１のコンテキスト突合わせ信号を第１の論理ユニットに出力する第１の突合わせ論理ゲートと、
（ｉ）前記第２のコンテキスト番号と少なくとも１つの変換テーブル・エントリから前記コンテキスト識別番号を受けて両者を比較し、
（ｉｉ）第２のコンテキスト番号がコンテキスト識別番号と等価であるか否かを示す第２の比較信号を出力する第２の比較ユニットと、
前記コンテキスト選択ビットを受けてこれを反転するインバータと、
（ｉ）入力として第２の比較信号と前記コンテキスト選択ビットの補数を受け、
（ｉｉ）第２のコンテキスト突合わせ信号を前記第１の論理ユニットに出力する第２の突合わせ論理ゲートとを含むコンテキスト突合わせ回路と、
事前記憶仮想アドレスを要求仮想アドレスと比較し、事前記憶仮想アドレスが要求仮想アドレスと等価であるか否かを示す比較信号を出力する比較ユニットと、
前記第１の論理ユニットと前記比較ユニットとに結合し、前記コンテキスト識別番号が選択されたコンテキスト番号と等価であることを前記コンテキスト突合わせ信号が示し、かつ、事前記憶仮想アドレスが要求された仮想アドレスと等価であることを前記比較信号が示す場合、変換ヒット信号を出力するように構成された第２の論理ユニットと、を備えるアドレス変換制御回路。
【請求項３】
バスと、
前記バスに結合された処理ユニットとを備えるコンピュータ・システムであって、
前記処理ユニットが、
要求された仮想アドレスを物理アドレスに変換する要求を発行するように構成されたプロセッサと、
前記プロセッサに結合されたメモリ管理ユニットとを含み、
そのメモリ管理ユニットは、
事前記憶仮想アドレスとコンテキスト識別番号とを含む少なくとも１つの変換テーブル・エントリを有する変換テーブルを含む変換索引バッファと、
アドレス変換制御回路とを含み、
そのアドレス変換制御回路は、
第１のコンテキスト番号を記憶するように構成された基本コンテキスト記憶素子と、
第２のコンテキスト番号を記憶するように構成されたグループ・コンテキスト記憶素子と、
コンテキスト突合わせ回路であって、
（ｉ）前記第１のコンテキスト番号と前記コンテキスト識別番号を受けて両者を比較し、
（ｉｉ）第１のコンテキスト番号がコンテキスト識別番号と等価であるか否かを示す第１の比較信号を出力する第１の比較ユニットと、
（ｉ）入力として第１の比較信号とコンテキスト選択ビットを受け、
（ｉｉ）第１のコンテキスト突合わせ信号を第１の論理ユニットに出力する第１の突合わせ論理ゲートと、
（ｉ）前記第２のコンテキスト番号と前記コンテキスト識別番号を受けて両者を比較し、
（ｉｉ）第２のコンテキスト番号がコンテキスト識別番号と等価であるか否かを示す第２の比較信号を出力する第２の比較ユニットと、
前記コンテキスト選択ビットを受けてこれを反転するインバータと、
（ｉ）入力として第２の比較信号と前記コンテキスト選択ビットの補数を受け、
（ｉｉ）第２のコンテキスト突合わせ信号を前記第１の論理ユニットに出力する第２の突合わせ論理ゲートとを含むコンテキスト突合わせ回路と、
事前記憶仮想アドレスを要求仮想アドレスと比較し、事前記憶仮想アドレスが要求仮想アドレスと等価であるか否かを示す比較信号を出力する比較ユニットと、
前記第１の論理ユニットと前記比較ユニットとに結合し、前記コンテキスト識別番号が選択されたコンテキスト番号と等価であることを前記コンテキスト突合わせ信号が示し、かつ、事前記憶仮想アドレスが要求された仮想アドレスと等価であることを前記比較信号が示す場合に、変換ヒット信号を出力するように構成された第２の論理ユニットと、を含むコンピュータ・システム。
【請求項４】
バスと、
前記バスに結合された処理ユニットとを備えるコンピュータ・システムであって、
前記処理ユニットは、
要求された仮想アドレスの変換を要求するプロセッサと、
前記プロセッサに結合されたメモリ管理ユニットとを含み、
そのメモリ管理ユニットは、
事前記憶仮想アドレスおよびコンテキスト識別番号を含む少なくとも１つの変換テーブル・エントリを有する変換テーブルを含む変換索引バッファと、
アドレス変換制御回路とを含み、
そのアドレス変換制御回路は、
第１のコンテキスト番号を保持するように構成された基本コンテキスト記憶素子と、
第２のコンテキスト番号を保持するように構成されたグループ・コンテキスト記憶素子と、
コンテキスト突合わせ回路であって、
（ｉ）前記第１のコンテキスト番号と前記コンテキスト識別番号を受けて両者を比較し、
（ｉｉ）第１のコンテキスト番号がコンテキスト識別番号と等価であるか否かを示す第１の比較信号を出力する第１の比較ユニットと、
（ｉ）入力として第１の比較信号とコンテキスト選択ビットを受け、
（ｉｉ）第１のコンテキスト突合わせ信号を第１の論理ユニットに出力する第１の突合わせ論理ゲートと、
（ｉ）前記第２のコンテキスト番号と前記コンテキスト識別番号を受けて両者を比較し、
（ｉｉ）第２のコンテキスト番号がコンテキスト識別番号と等価であるか否かを示す第２の比較信号を出力する第２の比較ユニットと、
前記コンテキスト選択ビットを受けてこれを反転するインバータと、
（ｉ）入力として第２の比較信号と前記コンテキスト選択ビットの補数を受け、
（ｉｉ）第２のコンテキスト突合わせ信号を前記第１の論理ユニットに出力する第２の突合わせ論理ゲートとを含むコンテキスト突合わせ回路と、
事前記憶仮想アドレスを要求仮想アドレスと比較し、事前記憶仮想アドレスが要求仮想アドレスと等価であるか否かを示す比較信号を出力する比較ユニットと、
前記第１の論理ユニットと前記比較ユニットとに結合し、前記コンテキスト識別番号が選択されたコンテキスト番号と等価であることを前記コンテキスト突合わせ信号が示し、かつ、事前記憶仮想アドレスが要求された仮想アドレスと等価であることを前記比較信号が示す場合に、変換ヒット信号を出力するように構成された第２の論理ユニットと、を含むコンピュータ・システム。
【請求項５】
変換索引バッファを使用して電子装置からの仮想アドレスを物理アドレスに変換する方法であって、
第１のコンテキスト番号を、基本コンテキスト記憶素子にロードするステップと、
第２のコンテキスト番号を、グループ・コンテキスト記憶素子にロードするステップと、
仮想アドレスに関連づけられた変換索引バッファの変換テーブルの変換テーブル・エントリのタグ部分を得るステップであって、そのタグ部分は、コンテキスト選択ビットとコンテキスト識別番号と事前記憶仮想アドレスとを含むステップと、
前記第１のコンテキスト番号と前記コンテキスト識別番号を受けて両者を比較し、第１のコンテキスト番号がコンテキスト識別番号と等価であるか否かを示す第１の比較信号を出力するステップと、
入力として第１の比較信号とコンテキスト選択ビットを受け、第１のコンテキスト突合わせ信号を第１の論理ユニットに出力するステップと、
前記第２のコンテキスト番号と前記コンテキスト識別番号を受けて両者を比較し、第２のコンテキスト番号がコンテキスト識別番号と等価であるか否かを示す第２の比較信号を出力するステップと、
前記コンテキスト選択ビットを反転するステップと、
入力として第２の比較信号と前記コンテキスト選択ビットの補数を受け、第２のコンテキスト突合わせ信号を前記第１の論理ユニットに出力するステップと、
前記事前記憶仮想アドレスを仮想アドレスと比較するステップと、
（ｉ）前記第１のコンテキスト番号が前記コンテキスト識別番号と等価であることを前記第１のコンテキスト突合わせ信号が示すか、或いは、前記第２のコンテキスト番号が前記コンテキスト識別番号と等価であることを前記第２のコンテキスト突合わせ信号が示すこと、及び
（ｉｉ）前記事前記憶仮想アドレスが仮想アドレスと等価であることを条件として、該当する仮想−物理アドレス変換が変換索引バッファ内に含まれていることをオペレーティング・システム・ソフトウェアに通知する変換ヒット信号を送信するステップと、を含む方法。
【請求項６】
（ｉ）前記第１のコンテキスト番号が前記コンテキスト識別番号と等価でないことを前記第１のコンテキスト突合わせ信号が示し、かつ、前記第２のコンテキスト番号が前記コンテキスト識別番号と等価でないことを前記第２のコンテキスト突合わせ信号が示すこと、或いは（ｉｉ）前記事前記憶仮想アドレスが仮想アドレスと等価でないことを条件として、該当する仮想−物理アドレス変換が変換索引バッファ内に含まれていないことをオペレーティング・システム・ソフトウェアに通知する変換ミス信号を送信するステップをさらに含む請求項５に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般には電子的アドレス指定に関する。具体的には、本発明は変換索引バッファの変換テーブル・エントリを共有することによってパフォーマンスを向上させるアドレス指定アーキテクチャおよび方法に係わる。
【０００２】
【従来の技術】
現在、仮想−物理アドレス変換を行うためにコンピュータ内に実装された様々なアドレス指定アーキテクチャがある。このようなアドレス指定アーキテクチャは一般に、コンピュータのプロセッサと組み合わさって動作して、たとえば図１の「順送りページ・テーブル」方式などの特定のアドレス変換方式を実行するメモり管理ユニット（「ＭＭＵ」）として実装される。
【０００３】
順送りページ・テーブル方式１００は、３つの別個のテーブル、すなわち、コンテキスト・テーブル１２０、セグメント・テーブル１３０、およびページ・テーブル１４０に次々にアクセスすることによって仮想アドレス１１０を物理アドレス１５０に変換する。仮想アドレス１１０は、まず、ＭＭＵの初期設定中のプロセッサ・レジスタ・セットアップの内容（すなわちルート・テーブル・ポインタ１１５）と、コンテキスト・レジスタ１１６内の情報とを組み合わせることによって物理アドレス１５０に変換される。コンテキスト・レジスタ１１６は、同じ仮想アドレスを処理するプロセスを固有に識別する情報を記憶する記憶素子（たとえばプロセッサ・レジスタ）である。ルート・テーブル・ポインタ１１５をコンテキスト・レジスタ１１６の情報と組み合わせることによって、コンテキスト・テーブル１２０のエントリ１２１を指すポインタを作成する。このエントリ１２１は、仮想アドレス１１０のセグメント部分１１１の内容によってその基底アドレス・セットを有するセグメント・テーブル１３０内のエントリ１３１の内容にアクセスするための索引として使用される。同様に、エントリ１３１の内容は、ページ・エントリ１４１の内容にアクセスするために、その基底アドレスとしてページ部分１１２を有するページ・テーブル１４０の索引として使用される。仮想アドレス１１０のページ・オフセット１１３と組み合わされたページ・エントリ１４１の内容が、物理アドレス１５０を形成する。
【０００４】
６４ビット・アドレス空間をサポートするプロセッサの登場により、順送りページ・テーブル方式を使用するＭＭＵに付随するいくつかの欠点がある。１つの欠点は、この方式が共有をテーブルの細分性（たとえばＳｕｐｅｒＳＰＡＲＣTMアーキテクチャの場合は２５６キロバイト、ＭＩＰＳ（Ｒ）アーキテクチャの場合は４メガバイト）で行う必要があることである。したがって、順送りページ・テーブル方式をサポートするアーキテクチャは、すべての参加プロセスが、仮想ページの任意のセットのマッピングを共有するのではなく、ページ・テーブルによってマップされたすべてのページを共有する必要がある。順送りページ・テーブル方式に付随するもう一つの欠点は、６４ビット・アドレス空間がより頻繁に使用されるために、固定サイズの仮想−物理アドレス変換テーブルをサポートするのに大量の物理メモリが必要になることである。これは、コスト効果の高い手法ではない。他の欠点は、この方式は、オブジェクトの共有に使用される仮想アドレスをセグメン・テーブル境界またはページ・テーブル境界上で正しく位置合わせしなければならないために、位置合わせ要件が課されることである。これは、前述のようにページ・テーブル細分性（page table granularity）での共有を維持するために必要なものである。
【０００５】
ここ数年の時間の経過に伴い、６４ビット・アドレス空間が明らかに受け入れられるようになったことによって、固定ページ・テーブル要件を課さないソフトウエア管理変換索引バッファ（「ＴＬＢ」）によって仮想メモリをサポートするコンピュータ・アーキテクチャが急激に必要になっている。ＴＬＢは、主としてコンピュータのオペレーティング・システムによって管理される小型キャッシュである。ＴＬＢは、変換テーブルと、図２Ｂに示すように、要求されたアドレス変換に関係する情報が変換テーブル・エントリ（「ＴＴＥ」）に入っているかどうかをオペレーティング・システム・ソフトウェアに通知するタグ比較回路とを含むメモリを備える。
【０００６】
次に図２Ａを参照すると、ＴＬＢの変換テーブル２００のデータ構造体はいくつかのエントリ（「ＴＴＥ」）２１０を含み、各ＴＴＥはデータ２２０とタグ２３０を含む。ＴＴＥタグ２３０は、事前記憶済み仮想アドレス（「ＶＡ」）２３１と、プロセスを固有に識別するために使用されるプロセス・コンテキスト識別標識（「コンテキストＩＤ」）２３２と、グローバル・ビット２３３とを含む。データは、物理ページ番号（「ＰＰＮ」）２２１とページ属性（たとえば保護、参照、修正など）２２２とを含む。
【０００７】
従来のソフトウェア管理ＴＬＢ変換方式をサポートするために使用されるタグ比較回路を図２Ｂに示す。この回路２５０はＴＴＥタグ２３０を受け取り、コンテキストＩＤ２３２をデュアル入力比較器２５５の一方の入力端子に入力する。この回路２５０は、コンピュータのプロセス・システム状態を表すために、特定のコンテキスト切換え時にオペレーティング・システムによってロードされた選択されたコンテキスト番号を保持するコンテキスト・レジスタ２６０をさらに備える。比較器２５５が、コンテキストＩＤ２３２がコンテキスト・レジスタに入っている選択されたコンテキスト番号に相当すると判断した場合、比較器２５５は第１の論理ゲート２６２の第１の入力端子に結合されている制御線２６１をアクティブにする。この例では、第１の論理ゲート２６２はＯＲゲートとして機能するように設計されている。制御線２６１がアクティブになるかまたはグローバル・ビット２３３がアクティブの場合、第１の論理ゲート２６２は第２の論理ゲート２６５の第１の入力端子に結合された制御線２６３をアクティブにする。
【０００８】
さらに、ＴＴＥタグ２３０に入っている事前記憶済み仮想アドレス２３１が、変換するためにプロセッサによって直接供給された「プロセッサ仮想アドレス」２３６と呼ばれる要求仮想アドレスと比較される。この比較は第２の比較器２７０によって行われる。これらの仮想アドレスが同じであるか（ビット単位比較）、または等価である（ビット単位または非ビット単位比較）場合、第２の比較器２７０は第２の論理ゲート２６５の第２の入力端子に結合されている制御線２６４をアクティブにする。両方の入力端子が「アクティブ」信号を受け取った場合、第２の論理ゲート２６５は変換「ヒット」信号を送って、オペレーティング・システム・ソフトウェアに、ＴＬＢの変換テーブル内に変換が見つかったことを通知する。それ以外の場合は、すべての仮想−物理アドレス変換が入っているカーネル・ページ・テーブル内のエントリから変換を入手する。
【０００９】
一般に、前述の従来のソフトウェア管理ＴＬＢ変換方式では、複数のプロセスが物理オブジェクト（たとえば共有ライブラリ、メモリなど）を共有することができる。これらのプロセスは、単一の仮想アドレスを使用して共有物理ページにマップする。しかし、この変換方式は、それらのプロセスが同じ変換情報を使用する場合でも別々の各プロセスに別々のページ・テーブル・エントリとＴＴＥを割り当てるため、カーネル・メモリやＴＬＢなどの割振りメモリ使用を最適化することができない。
【００１０】
最近、単一の変換エントリを共有するために同じ物理アドレス空間にマップする同様の仮想アドレスを使用して異なるアドレス空間からの変換ができるようにする他の変換方式が導入されている。この方式を「共通マスク」方式と呼ぶ。図２Ｃに示すように、共通マスク方式は、共有ビット２３５をアクティブにするとプロセスによって共有される１組の共通領域（すなわち共有物理ページ）を識別するビット・ベクトル２３４を使用してＴＴＥ２１０のコンテキストＩＤ２３２を拡張する。共有ビット２３５がアクティブでない場合は、ビット・ベクトル２３４は、非共有変換に使用される元のコンテキストＩＤを表す。共通マスク方式は、ユーセフＡ．ハリーディー（Ｙｏｕｓｅｆ  Ａ．Ｋｈａｌｉｄｉ）およびマドスードハン・タルリー（Ｍａｄｈｕｓｕｄｈａｎ  Ｔａｌｌｕｒｉ）著「Ｉｍｐｒｏｖｉｎｇ  ｔｈｅ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ  Ｐｅｒｆｏｒｍａｎｃｅ  ｏｆ  Ｗｉｄｅｌｙ  Ｓｈａｒｅｄ  Ｐａｇｅｓ」という標題のサン・マイクロシステムズ・ラボラトリーズの出版物で開示されている。しかし、共通マスク・マッピング方式は複雑なアドレス指定アーキテクチャを必要とすることによって管理コストが高くつく。
【００１１】
【発明が解決しようとする課題】
上述のように、図２Ｃの共通マッピング方式には限界があり、管理コストが高くつく。たとえば、コンテキスト・レジスタのサイズが「ｍ＋ｎ」ビットに等しい場合、共通マスク・アーキテクチャはプロセスを固有に識別するために「ｍ」ビットを割り振り、マスクのコンテキスト識別子に「ｎ」ビットを割り振るとすると、所与の時点で共有することができるオブジェクトの合計数は「ｎ」個のオブジェクトに制限される。その結果、オペレーティング・システムはこれらの「ｎ」ビットを慎重に割り振らなければならず、それには割振り制御のための追加のシステム・オーバーヘッドを必要とする。
【００１２】
本発明の焦点は、ＴＬＢの変換テーブルの使用効率を最適化するために、ＴＴＥタグに格納する追加情報を使用する、改良型アドレス指定アーキテクチャの提供にある。
【００１３】
【課題を解決するための手段】
提案するアドレス指定アーキテクチャは、システムに２m+n 個のグループを与える番号としてフル・コンテキスト識別子を使用する。各プロセス・グループは、仮想アドレス空間のサイズによってのみ制限される複数のオブジェクトを共有することができる。プログラムの局所性を利用して複数グループ・メンバーシップをサポートすることができる。ページ・フォールト時には、オペレーティング・システムはグループ・コンテキスト・レジスタに、アクセスするオブジェクトの対応するグループ識別子をロードすることができる。これは小ページ・フォールトであるため、パフォーマンスはあまり低下しない。
【００１４】
本発明は、プロセッサと変換索引バッファ（「ＴＬＢ」）と組み合わせて動作して仮想アドレスを物理アドレスに変換すると同時に、ＴＬＢの共有エントリを使用するアドレス変換制御回路である。ＴＬＢの変換テーブルの各エントリは、少なくとも事前記憶済み仮想アドレスと、コンテキスト識別番号と、コンテキスト選択ビットとを含む。アドレス変換制御回路の好ましい実施態様は、基本コンテキスト記憶素子と、グループ・コンテキスト記憶素子と、コンテキスト突合わせ回路と、比較ユニットと、論理ユニットとを備える。コンテキスト突合わせ回路は、基本コンテキスト記憶素子とグループ・コンテキスト記憶素子とに結合され、それらのコンテキスト番号を受け取り、選択された変換テーブル・エントリからコンテキスト識別番号とコンテキスト選択ビット値を読み取る。それと並列して、比較ユニットがそのエントリに入っている事前記憶済み仮想アドレスを要求された仮想アドレスと比較する。論理ユニットがコンテキスト突合わせ回路と比較ユニットの出力を受け取って、ＴＬＢに該当する仮想−物理アドレス変換が入っているかどうかをオペレーティング・システム・ソフトウェアに通知する。コンテキスト突合わせ回路と比較ユニットからのアクティブ出力は、ＴＬＢに変換が入っていることを示す。
【００１５】
コンテキスト突合わせ回路には２つの好ましい実施態様がある。第１の実施態様は、マルチプレクシング・ユニットと比較ユニットを含む。マルチプレクシング・ユニットは、選択されたコンテキスト番号を出力する。このコンテキスト番号は、基本コンテキスト記憶素子とグループ・コンテキスト記憶素子によって供給されるコンテキスト番号のうちのいずれか１つであり、コンテキスト選択ビットのビット値によって決まる。比較ユニットは、選択されたコンテキスト番号をコンテキスト識別番号と比較して、一致があるかどうかを調べる。一致がある場合は、論理ユニットにアクティブ・コンテキスト突合わせ信号を出力する。第２の実施態様は、特定の論理ゲートと組み合わせて一対の比較ユニットを使用して、より実装が難しいマルチプレクシング・ユニットの使用を回避する。
【００１６】
【発明の実施の形態】
本発明の特徴と利点は、以下の本発明の詳細な説明を読めば明らかになろう。
【００１７】
本発明は、アドレス変換資源を共有するとき、いくつかのプロセスが変換索引バッファ（「ＴＬＢ」）の同じ変換テーブル・エントリ（「ＴＴＥ」）を共有することができるようにする改良型アドレス指定アーキテクチャを開示する。多くの特定の詳細を記載するが、それらの特定の詳細は本発明を実施するのに必要なものではないことは明らかである。他の場合には、本発明が不明瞭にならないように、周知の回路、装置、および同様のものについては説明しないことがある。
【００１８】
本明細書では、特定の周知の技術について一般的に定義する。たとえば、「プロセス」とは、正常な実行のためにアドレス変換資源（すなわち割り当てられたコード、データ、スタック、共有ライブラリ）に依存する、プロセッサによって実行される一連の動作ステップであると定義される。各プロセスには、固有のアドレス変換ハンドルが割り当てられる。「プロセッサのグループ」とは、共同して動作して特定の操作を実行するプロセスの集合である。「アクティブにされた」または「アクティブ」という用語は、通信線を通って伝播する信号が「論理ハイ」であること、または、信号がアクティブ・ロー信号である場合には「論理ロー」であることを示す。
【００１９】
図３を参照すると、本発明の改良型アドレス指定アーキテクチャを使用するコンピュータ・システムの簡略化された実施形態が図示されている。コンピュータ・システム３００は、通信リンク３６０を介して複数の端末（たとえばパーソナル・コンピュータ、ダム端末など）３５０ａ〜３５０ｎに結合されている。コンピュータ・システム３００は、第１のバス３１５を介して共に結合された処理装置３０５とメイン・メモリ３１０を含む。第１のバス３１５は、第１のバス３１５と第２のバス３２５（たとえばＩ／Ｏバス）との間に通信経路を形成する入出力コントローラ３２０に結合されている。第２のバス３２５は、複数の端末３５０ａ〜３５０ｎの１つから発信され、送受信ユニット３３０（たとえばモデム）から受け取った情報を伝播する。
【００２０】
図３にはさらに、プロセッサ３０６と、メイン・メモリ３１０内のデータにアクセスするときにプロセッサ３０６が仮想アドレスを物理アドレスに変換するために使用するメモリ管理ユニット（「ＭＭＵ」）３０７とを含む処理装置３０５が図示されている。ＭＭＵ３０７は、主としてオペレーティング・システム・ソフトウェア（図示せず）とそのアドレス変換制御回路の両方によって制御されるＴＬＢ３０８と、複数のコンテキスト記憶素子（たとえばレジスタおよびその他の記憶構成要素）、すなわち基本コンテキスト記憶素子３０９ａと、少なくとも１つのグループ・コンテキスト記憶素子３０９ｂを含む。基本コンテキスト記憶素子３０９ａは、現行プロセスを固有に規定するために使用するコンテキスト識別番号を保持し、グループ・コンテキスト記憶素子３０９ｂは物理ページを共有するプロセスのコンテキスト識別標識として使用される。メイン・メモリ３１０は通常、メモリ・コントローラ３１１を含み、メモリ・コントローラ３１１はプロセッサ３０６から物理アドレスを受け取り、たとえばダイナミック・ランダム・アクセス・メモリ（「ＤＲＡＭ」）、ビデオ・ランダム・アクセス・メモリ（「ＶＲＡＭ」）および同様のものなどの記憶素子３１２からのデータのアクセスを制御する。
【００２１】
コンピュータ・システム３００では、以下に述べるように仮想−物理アドレス変換が行われる。まず、プロセッサ３０６が要求された仮想アドレスを生成し、要求された仮想アドレスをＭＭＵ３０７に転送する。ＭＭＵ３０７、具体的にはアドレス変換制御回路は、物理アドレス探索を行い、その際、要求された仮想アドレスとコンテキスト情報（すなわち後述するグローバル・ビット、コンテキスト選択ビット、およびコンテキストＩＤ）を使用して、要求された仮想アドレスの変換情報がＴＬＢ３０８に格納されているかどうかを確認する。要求された仮想アドレスの物理アドレスがＴＬＢ３０８に入っている場合、ＴＬＢ３０８は変換「ヒット」信号を出力し、次にプロセッサ３０６にその物理アドレスを渡す。その物理アドレスがＴＬＢ３０８に入っていない場合は、ＭＭＵ３０７がプロセッサ３０６に変換「ミス」信号を送信することによってトラップを生成する。その後、オペレーティング・システム・ソフトウェアが、すべての仮想−物理アドレス変換を含むカーネル・ページ・テーブルの探索を行って、物理アドレスを入手し、プロセッサ３０６にそのアドレスを送る。
【００２２】
図４を参照すると、組み合わさってアドレス変換を行うオペレーティング・システム・ソフトウェアとＴＬＢのデータ構造体が図示されている。これらのデータ構造体については、本出願の出願人による「Ｓｅｐａｒａｔｅ  Ｃｏｄｅ  Ａｎｄ  Ｄａｔａ  Ｃｏｎｔｅｘｔｓ：Ａｎ  Ａｒｃｈｉｔｅｃｔｕｒａｌ  Ａｐｐｒｏａｃｈ  Ｔｏ  Ｖｉｒｔｕａｌ  Ｔｅｘｔ  Ｓｈａｒｉｎｇ」という名称の同時出願米国特許出願（代理人整理番号第０８２２２５．Ｐ１１７６号）で詳しく開示されており、これは参照により本明細書に組み込まれる。これらのデータ構造体は、カーネル・ページ・テーブル４１０と、変換ソフトウェア・バッファ４２０と、ＴＬＢ４３０とを含む。カーネル・ページ・テーブル４１０は、物理メモリに関連づけられたすべての物理ページを管理する。変換ソフトウェア・バッファ４２０は、基本的に、最も最近に使用されたアドレス変換のキャッシュとして機能する。これはこの変換方式の速度を高速化するので実装されることが好ましいが、任意選択であるのは明らかである。ＴＬＢ４３０は、アドレス変換制御回路によって制御されてキャッシュと同様にして動作するメモリ（たとえば変換テーブル）である。ＴＬＢ４３０は、選択された変換テーブル・エントリ（「ＴＴＥ」）のタグを受け取り、そのＴＴＥタグのビット部分を使用して、要求仮想アドレスに関連づけられた物理アドレスがＴＬＢ４３０に格納されているかどうかを確認する。
【００２３】
図４を続けて参照すると、異なるプロセスが同じアプリケーションを実行し、同じ仮想アドレスを使用して同じ物理ページを参照するときは、資源が二重化されることが明らかである。本質的には、共通セグメントを使用するプロセスの数を確認し、共通セグメントをグループ・コンテキスト番号「ｋ」によって識別される代理アドレス空間に分解することによって、グループ・プロセスを形成する。このグループ・プロセスは、このアドレス変換方式が以下の条件を採用して正確なアドレス指定を保証する限り、複数のプロセスに関連づけられたただ一つのＴＴＥを使用する。１つの条件は、すべての参加プロセスについてすべての共有セグメントが同じ仮想アドレスにマップされなければならないことである。これによって、共有セグメントの仮想アドレスから物理アドレスへのアドレス変換がグループ内のすべてのプロセスについて同じになることが保証される。第２の条件は、グループ・コンテキスト番号によってアドレス指定されるアドレス空間が、基本コンテキスト番号に関連づけられた各専用アドレス空間とは別個のものであることである。言い換えると、１つのプロセスにおいて共有セグメントにアクセスする仮想アドレスは、そのグループのすべてのプロセスにおいて同じ共有セグメントにアクセスしなければならない。これによって、グループ内の１つのプロセスが、仮想アドレスにある専用セグメントをマップし、次にグループ内の残りのプロセスが異なる共有セグメントをマップするといことがなくなる。
【００２４】
図５を参照すると、ＴＬＢの各エントリに関連づけられたアドレス変換制御回路５００は、コンテキスト突合わせ回路５２０と、少なくとも１つの比較ユニット５４０と、複数の論路ゲート５６０および５７０とを備える。アドレス変換制御回路５００は、コンピュータ・アーキテクチャ内に実装された基本コンテキスト記憶素子３０９ａとグループ・コンテキスト記憶素子３０９ｂの両方からコンテキスト情報を受け取る。コンテキスト記憶素子３０９ａ〜３０９ｂには、「ｍ」ビットのサイズのコンテキスト番号が入る（「ｍ」は任意のサイズ）。さらに、アドレス変換制御回路５００は、特定のプロセスまたはプロセスのグループに関連づけられたＴＴＥタグ５８０を受け取る。図のように、ＴＴＥタグ５８０はいくつかのビット・フィールドを含むように修正されている。これらのビット・フィールドにはグローバル・ビット・フィールド５８１、コンテキスト選択ビット・フィールド５８２、コンテキスト番号ビット・フィールド、および事前記憶仮想アドレス５８４を保持するビット・フィールドが含まれるが、これらだけに限定されない。ＴＴＥタグ２３０は、６４ビット幅（「ＴＡＧ［６３：０］」）であることが好ましく、そのうち事前記憶仮想アドレスが４２ビット幅（「ＴＡＧ［４１：０］」）、コンテキスト番号フィールドが１３ビット幅（「ＴＡＧ［６０−４８］」）、コンテキスト選択ビット・フィールドおよびグローバル・ビット・フィールド（「ＴＡＧ［６２］」および「ＴＡＧ［６３］」）が１ビット幅であることが好ましい。ＴＴＥタグ２３０のフィールドは、選定したコンピュータ・アーキテクチャに応じて他のビット・サイズとすることができる。
【００２５】
コンテキスト突合わせ回路５２０は、ＴＴＥタグ５８０内のコンテキスト番号ビット・フィールド５８３（サイズは「ｒ」ビット）に入っているコンテキスト識別番号を、基本コンテキスト記憶素子３０９ａまたはグループ・コンテキスト記憶素子３０９ｂに入っているコンテキスト番号と比較するように構成されている。コンテキスト選択ビット５８２は、どのコンテキスト番号をＴＴＥタグ５８０内のコンテキスト識別番号と比較するか、すなわち、コンテキスト番号を基本コンテキスト記憶素子３０９ａ（コンテキスト選択ビット５８２がイナクティブの場合）から入手するか、それともグループ・コンテキスト記憶素子３０９ｂ（コンテキスト選択ビット５８２がアクティブの場合）から入手するかを動的に選択する。事前記憶仮想アドレス５８４が「共有」ページに関連づけられている場合、オペレーティング・システム・ソフトウェアはアクティブなコンテキスト選択ビット５８２をロードする。それに対して、事前記憶仮想アドレス５８４が「非共有」ページと関連づけられている場合は、コンテキスト選択ビット５８２はイナクティブである。
【００２６】
コンテキスト突合わせ回路５２０は、コンテキスト番号が一致していると判断した場合、アクティブ・コンテキスト突合わせ信号を第１の論理ゲート５６０の第１の入力端子に入力する。第１の論理ゲート５６０はＯＲゲートとして機能する。一致していないと判断した場合は、イナクティブ・コンテキスト突合わせ信号が第１の論理ゲート５６０の第１の入力端子に転送される。さらに、特定の変換はコンテキストに依存しない場合があるため、グローバル・ビット５８１が第１の論理ゲート５６０の第２の入力端子に入力される。すべてのプロセスがオペレーティング・システム・カーネルを、そのアドレス空間の同じ仮想アドレスにマップするので、たとえば、グローバル・ビット５８１はオペレーティング・システムに対してオペレーティング・システム自体に単一のＴＴＥを使用する仕組みを与える。しかし、オペレーティング・システムには現在、別個の保護ドメインが割り振られ、それによってオペレーティング・システムはより大きな仮想アドレスを持つことができるため、このアーキテクチャはあまり頻繁には使用されない。現在の多くのアーキテクチャではグローバル・ビット５８１を使用することができないため、その使用はこのアドレス指定アーキテクチャにとっては任意選択である。
【００２７】
第１の論理ゲート５６０の入力の一方がアクティブ信号を受け取った場合、第１の論理ゲート５６０は、第２の論理ゲート５７０の第１の入力端子にアクティブ信号を送る。アドレス指定アーキテクチャがグローバル・ビット５８１を使用しない場合は、当然、論理ゲート５６０を取り除き、この実施形態ではコンテキスト突合わせ回路５２０の出力を第２の論理ゲート５７０に送ることができる。第２の論理ゲート５７０はＡＮＤゲートとして機能することが好ましい。第２の論理ゲート５７０の第２の入力端子は、比較ユニット５４０の出力端子に結合され、比較ユニット５４０は、ＴＴＥタグに含まれている事前記憶仮想アドレスをプロセッサから送られた要求仮想アドレスと比較する。この２つの仮想アドレスが同じ場合、ＴＴＥに正しい変換情報が入っていることを示し、比較ユニット５４０は第２の論理ゲート５７０の第２の入力端子にアクティブ比較信号を出力する。これによって、第２の論理ゲート５７０はプロセッサに変換「ヒット」信号を出力して、ＴＬＢによってそのアドレス変換に対応することができることを示す。それに対して、第１の論理ゲート５６０（またはグローバル・ビットがない場合はコンテキスト突合わせ回路）がイナクティブ信号を出力するか、比較ユニット５４０がイナクティブ信号を出力する場合、アドレス変換回路５００は変換「ミス」信号を出力して、ＴＬＢに変換が入っておらず、したがってカーネル・ページ・テーブルへのアクセスが必要であることを示す。
【００２８】
図６Ａおよび図６Ｂを参照すると、コンテキスト突合わせ回路５２０の実施形態が図示されている。図６Ａで、コンテキスト突合わせ回路５２０はマルチプレクシング・ユニット５２１および比較ユニット５２２として図示されている。マルチプレクシング・ユニット５２１は、入力値として基本コンテキスト記憶素子３０９ａのコンテキスト番号と、グループ・コンテキスト記憶素子３０９ｂのコンテキスト番号と、ＴＴＥタグのコンテキスト選択ビットのビット値に基づく選択信号とを受け取る「ｒ」デュアル入力マルチプレクサを特徴としている。しかし、コンテキスト選択フィールドのビット・サイズとマルチプレクサの構成および特性によって、他の実施形態も使用することができる。比較ユニット５２２はデュアル入力比較器として図示されているが、他の構成要素も使用可能である。
【００２９】
この実施形態では、コンテキスト選択ビットに従ってどちらのコンテキスト番号を選択しても、それが比較ユニット５２２の第１の入力端子に入力される。ＴＴＥタグに入っているコンテキスト識別番号が比較ユニット５２２の第２の入力端子に入力され、この２つの値が比較される。両者が同じ場合、比較ユニット５２２はアクティブ比較信号を第１の論理ゲート５６０の第１の入力端子に出力する。同じでない場合は、第１の論理ゲート５６０にイナクティブ比較信号を出力する。
【００３０】
図６Ｂにコンテキスト突合わせ回路の他の実施形態を示す。この実施形態では、グループ・コンテキスト記憶素子と基本コンテキスト記憶素子の双方のコンテキスト番号が、それぞれ比較ユニット５３０と５３１の第１の入力端子に入力される。これらのコンテキスト番号は並列して、ＴＴＥタグによって与えられるコンテキスト識別番号と比較される。その結果、比較ユニット５３０および５３１はそれぞれの比較信号を出力し、それがそれぞれＡＮＤゲートとして機能する第１および第２の突合わせ論理ゲート５３２および５３３の第１の入力端子に入力される。第１の突合わせ論理ゲート５３２は、第２の入力値としてＴＴＥタグからコンテキスト選択ビット値を受け取る。コンテキスト選択のビット値はインバータ・ゲート５３４によって反転されるたため、第２の突合わせ論理ゲート５３３は、第２の入力値としてコンテキスト選択ビットの補数を受け取る。したがって、第１および第２の突合わせ論理ゲート５３２および５３３のうちの一方だけが、図５の第１の論理ゲート５６０にアクティブ信号を出力する。したがって、この実施形態では、第１の論理ゲート５６０は、グローバル・ビットを使用する場合は３つの入力端子を必要として３入力ＯＲゲートとして機能し、グローバル・ビットを使用しない場合は２入力ＯＲゲートとして機能する。
【００３１】
コンテキスト突合わせ回路の第２の実施形態に伴う利点は、アドレス変換制御回路内の論理回路の量が削減されることに関連する。この場合、ｎビット比較器と２ビット・マルチプレクサを必要とし、実装がより難しいｎビット・マルチプレクサは必要がない。さらに、比較器を並列して処理することができ、それによってシステムの合計ゲート遅延が少なくなる。
【００３２】
以上、改良型アドレス指定方式について説明した。当業者なら、本発明の代替実施態様がわかるであろう。好ましい実施例は、例示のために使用したのであり、本発明の範囲を限定するものとみなすべきではない。
【図面の簡単な説明】
【図１】  従来の順送りページ・テーブル・マッピング方式を示す図。
【図２】  ＴＬＢの変換テーブルのデータ構造体とＴＴＥエントリを示すブロック図（Ａ）、ＴＬＢの変換テーブルと共に使用される従来のタグ比較回路を示すブロック図（Ｂ）、共通マスク変換方式をサポートするＴＴＥのコンテキストＩＤのデータ構造体を示すブロック図（Ｃ）。
【図３】  改良型ソフトウェア管理ＴＬＢ変換方式を使用するコンピュータ・システムを示すブロック図。
【図４】  改良型ソフトウェア管理ＴＬＢ変換方式を示すデータ構造の図。
【図５】  改良型ソフトウェア管理ＴＬＢ変換方式をサポートするアドレス指定変換制御回路の実施形態を示す図。
【図６】  図５のコンテキスト突合わせ回路のそれぞれ異なる二つの実施形態を示す詳細ブロック図。
【符号の説明】
３０５  処理装置、  ３０６  プロセッサ、  ３０７  メモリ管理ユニット
３０８  変換索引バッファ、  ３０９  コンテキスト記憶素子、  ３１０  メイン・メモリ、  ３１５  第１のバス、  ３２０  入出力コントローラ
３５０  端末、  ３６０  通信リンク、  ４１０  カーネル・ページ・テーブル、  ４２０  変換ソフトウェア・バッファ、  ４３０  ＴＬＢ、  ５００  アドレス変換制御回路、  ５２０  コンテキスト突合わせ回路、  ５２１  マルチプレクシング・ユニット、  ５２２、５３０、５３１、５４０  比較ユニット、５３２、５３３  突合わせ論理ゲート。
【図１】
0003920395.tif 000002
【図２】
0003920395.tif 000003
【図３】
0003920395.tif 000004
【図４】
0003920395.tif 000005
【図５】
0003920395.tif 000006
【図６】
0003920395.tif 000007