(57)【特許請求の範囲】
【請求項１】
第１のロード命令と、前記第１のロード命令とは命令コードが異なる第２のロード命令とを実行可能に構成されたプロセッサにおいて、論理アドレスを物理アドレスに変換するアドレス変換回路と、制御ビットと、前記第２のロード命令で前記アドレス変換回路がアドレス変換に失敗したとき、前記制御ビットの値によってアドレス変換例外を発生させるか否かを制御する制御機能とを備えたことを特徴とするプロセッサ。
【請求項２】
最近に行われた前記アドレス変換を保持するアドレス変換バッファを備えたことを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記第２のロード命令が、non faultingロード命令であることを特徴とする請求項１または２記載のプロセッサ。
【請求項４】
請求項１ないし３のうちいずれか１記載のプロセッサを備えたことを特徴とするコンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサ及びコンピュータシステムに係り、特に、普通のロード命令の他にnon faultingロード命令を処理するプロセッサ及びこのプロセッサを備えたコンピュータシステムに関する。
【０００２】
【従来の技術】
一般に、マイクロプロセッサにおけるロード命令の実行サイクル数は、演算命令の実行サイクル数より長い傾向がある。このため、プロセッサの性能を十分に引き出すためには、プログラムの中において、ロード命令とそのロードデータを使用する演算命令とをなるべく離して配置するすことが必要である。
【０００３】
しかし、メモリのスピード向上ペースは、ゲートのスピード向上ペースより遅いため、プロセッサの動作周波数が向上するにつれ、キャッシュヒットの場合でもロード命令の実行サイクル数は増加する傾向にある。さらに、スーパースカラ方式が採用され、複数の命令を１サイクル内で同時に実行するようになると、ロード命令とそのロードデータを使う演算命令とを十分離すには、さらに多くの命令をロード命令と演算命令との間に入れる必要がある。ところが、プログラムには、分岐命令が含まれており、この分岐命令が妨げとなって、ロード命令と演算命令とを十分に離すことができないことがある。一例として、次のようなＣ言語による
if(ptr ≠NULL)    ｘ＝*ptr + y；                          （１）
というプログラムを考える。
【０００４】
このプログラムは、もし、アドレスを示す変数ptr が０でなければ、そのアドレスptr を読み出してその読み出し内容*ptrにｙを加えてｘを求めるという命令プログラムである。この命令プログラムにおいて、*ptrをロードする命令と*ptr+yを計算する命令とを十分離すには、ptr ≠NULLの判定をする前に*ptrをロードすればよい。すなわち、
temp_reg＝*ptr；  （ロードした*ptrをレジスタに一時格納する命令）
関係ない命令；
if(ptr ≠NULL)    ｘ＝temp + y；                          （２）
の順となるように順に命令列を作成すればよい。
【０００５】
しかし、ほとんどのシステムの場合、ロード命令のアドレスがNULLの場合、例外が発生してプログラムの実行が中止されてしまうので、このような最適化を行うことができない。
【０００６】
前述した例は一例であり、一般的に、分岐命令の後ろにあるロード命令が実行されないとき、そのロードアドレスはどのような値になるかは判らない。従って、分岐命令の前にロード命令を移動すると例外が発生する可能性がある。
【０００７】
この問題を解決するための従来技術として、例えば、「David.L.Weaver and Tom Germond,The SPARC Architecture Manual,Version9,Prentice-Hall,Inc.,1994」に記載された、non faultingロード命令を導入するという技術がが知られている。このnon faultingロード命令の基本的な動作は、普通のロード命令と同一であるが次の２点が異なる。すなわち、
アドレス変換が可能で、そのメモリ領域に対してnon faultingロード実行可能属性が設定されていれば、例外を発生させない。また、address out of rangeなどが原因でアドレス変換ができない場合、システムソフトウェアとの協力によってターゲットレジスタに０が書き込まれて例外が無視され、プログラムの実行が継続される。
【０００８】
前述したようなnon faultingロード命令を普通のロード命令の代わりに使用する従来技術は、前述したような例の場合にも例外発生によってプログラム実行が中止されることがなくなる。このため、前述した従来技術は、ロード命令とその結果を使用する演算命令との距離を大きくし、プログラムの実行性能を向上させることができる。なお、分岐命令の前に移動したロード命令が例外を発生する場合、そもそもそのロード命令を実行する必要がない（そのようなアドレスのときは実行されないように分岐命令によって制御されていたはず）ので、このような方法としても問題はない。
【０００９】
【発明が解決しようとする課題】
前述した従来技術によれば、ロード命令を演算命令から離すために、ロード命令を分岐命令より前に移動し、プログラムの実行性能の向上を図ることが可能になる。しかし、前述の従来技術は、アドレス変換例外が発生する可能性が残る。この理由は、変換テーブルが大きくなりすぎるため、全てのアドレスについて変換エントリを用意することができないためである。従って、non faultingロード命令を使用する前述した従来技術は、アドレス変換例外発生の確率とその処理オーバヘッドがあってもプログラム実行が高速化できるか否かとを考慮する必要がある。
【００１０】
また、前述した従来技術は、アドレス変換にハッシュテーブルを使うアーキテクチャの場合、ハッシュの計算結果が同じ場所に登録できるアドレス変換の数に限りがあり、このため、全てのアドレス変換をハッシュテーブルに入れることができず、address out of rangeでないにもかかわらずアドレス変換例外が発生することがある。従って、non faultingロードでアドレス変換例外が起きたとき、まず、そのアドレスを調べ、address out of rangeであればアドレス変換例外を無視し、そうでなければハッシュテーブルを入れ替える必要がある。この処理は、オーバヘッドが大きく、また、ソフトウェアでTLB を入れ替えるアーキテクチャの場合にも、一度に扱えるアドレス変換の数に制約があるので同様の問題が生じる。
【００１１】
本発明の目的は、前述した従来技術の問題点を解決し、non faultingロードのアドレス変換例外の頻度を減らし、アプリケーションプログラムを高速に実行することを可能にしたnon faultingロード命令を処理するプロセッサ及びこのプロセッサを備えたコンピュータシステムを提供することにある。
【００１２】
【課題を解決するための手段】
本発明によれば前記目的は、第１のロード命令（通常のロード命令）と、前記第１のロード命令とは命令コードが異なる第２のロード命令（non faultingロード命令）とを実行可能に構成されたプロセッサにおいて、論理アドレスを物理アドレスに変換するアドレス変換回路と、制御ビットと、前記第２のロード命令で前記アドレス変換回路がアドレス変換に失敗したとき、前記制御ビットの値によってアドレス変換例外を発生させるか否かを制御する制御機能とを備えたことにより達成される。
【００１３】
本発明は、non faultingロード命令がアドレス変換例外を起こす必要がないとソフトウェアが判断したとき、例外を起こさないようにすることができ、これにより、アドレス変換例外の処理オーバヘッドを減らすことができる。
【００１４】
【発明の実施の形態】
以下、本発明によるnon faultingロード命令を処理するプロセッサ及びコンピュータシステムの実施形態を図面により詳細に説明する。
【００１５】
図１は本発明の一実施形態によるコンピュータシステムの構成を示すブロック図である。図１において、６０１は命令キャッシュ、６０２は命令ＴＬＢ、６１１は浮動小数点レジスタ、６１２は浮動小数点演算器、６２１は汎用レジスタ、６２２はＡＬＵ、６２３はデータキャッシュ、６２４はデータＴＬＢ、６２６はバスインタフェース、６３１はテーブル検索エンジン、６４１はプロセッサ、６４２はプロセッサバス、６４３はメインメモリ、６４４はＩ／Ｏ装置である。
【００１６】
図１に示すコンピュータシステムは、１または複数のプロセッサ６４１（図１には１台のみを示している）と、メインメモリ６４３及びＩ／Ｏ装置６４４とがプロセッサバス６４２により接続されて構成される。プロセッサ６４１は、分岐命令、整数演算命令、浮動小数点演算命令、ロード・ストア命令、システム制御命令等を実行することができ、また、通常のロード命令が例外を発生するようなケースでも例外を発生しないノンフォルトロード命令も実行可能である。
【００１７】
プロセッサ６４１は、命令キャッシュ６０１とデータキャッシュ６２３とを備えており、キャッシュミスの場合、命令キャッシュまたはデータキャッシュに必要なラインをメインメモリから転送してから処理を行う。また、プロセッサ６４１は、命令ＴＬＢ６０２、データＴＬＢ６２４、浮動小数点レジスタ６１１、浮動小数点演算器６１２、汎用レジスタ６２１、ＡＬＵ６２２、テーブル検索エンジン６３１を備え、これらが協力して命令を実行する。
【００１８】
前述において、汎用レジスタ６２１は、３２本の６４ビット汎用レジスタにより構成され、浮動小数点レジスタ６１１は、３２本の６４ビット浮動小数点レジスタにより構成されている。汎用レジスタ６２１は、整数演算の対象となるデータやロード・ストア命令のアドレスを保持するために使用され、浮動小数点レジスタ６１１は、浮動小数点演算の対象となるデータを保持するために使用される。また、プロセッサ６４１は、プロセッサ６４１の動作を制御する制御レジスタを幾つか備えている。制御レジスタとしては、non faultingロード許可レジスタＮＬＤＲ６２５、ページテーブルアドレスレジスタＰＡＲ６３２、ブロックテーブルアドレスレジスタＢＡＲ６３３等が備えられている。これらの制御レジスタの値は、mtcr／mfcr命令によって汎用レジスタとの間で読み書きすることが可能である。
【００１９】
ＡＬＵ６２２は、整数演算、論理演算を行うと共に、ロード・ストア命令のアドレスの計算をも行う。命令ＴＬＢ６０２とデータＴＬＢ６２４とは、最近使ったアドレス変換の幾つかを保持しており、これらのＴＬＢにヒットすればテーブルを検索する必要がないため、高速にアドレスを変換することができる。ＴＬＢミスの場合、テーブル検索エンジン６３１に対して、テーブル検索要求を発行して内容を入れ替える。
【００２０】
各ＴＬＢには、物理アドレスの他にページテーブル／ブロックテーブルのＰＰビットも保持されており、メモリアクセスが許可されているか否かのチェックも行うことができる。アクセスが禁止されている場合、命令フェッチアクセスと普通のロード命令ならば、メモリ保護例外が発生するが、non faultingロード命令の場合、ターゲットレジスタに０を書き込んで命令の実行が完了する。これに加えて、データＴＬＢには、ページテーブル／ブロックテーブルのＣビットのコピーも保持されている。ストア命令でこのビットが０ならば、データＴＬＢ６２４は、このビットを１にセットすると同時に、テーブル検索エンジン６３１を起動してページテーブル／ブロックテーブル本体のＣビットもセットする。
【００２１】
テーブル検索エンジン６３１は、命令ＴＬＢ６０２またはデータＴＬＢ６２４からの要求を受けて、図５と図６とにより後述するように、アドレス変換テーブルを検索してアドレス変換の処理を行う。このため、テーブル検索エンジン６３１は、内部にテーブル検索に必要なページテーブルアドレスレジスタＰＡＲ６３２、ブロックテーブルアドレスレジスタＢＡＲ６３３を備えている。検索に成功した場合、その変換エントリのＲビットがセットされ、変換結果が命令ＴＬＢ６０２またはデータＴＬＢ６２４に送られて登録される。また、データＴＬＢ６２４からのＣビットセット要求の場合、発見した変換エントリのＣビットをセットする。
【００２２】
また、テーブル検索エンジン６３１が検索に失敗した場合、テーブル検索エンジン６３１は、そのことを検索要求元のＴＬＢに通知する。命令ＴＬＢ６０２は、検索失敗が通知されると命令アドレス変換例外を発生させる。また、データＴＬＢ６２４は、命令の種類とＮＬＤＲ６２５の値によってデータアドレス変換例外を起こすかどうかを決定する。すなわち、普通のロード命令の場合、必ずアドレス変換例外を発生させ、non faultingロード命令の場合、ＮＬＤＲ＝０であれば、アドレス変換例外を生起させ、ＮＬＤＲ＝１であれば、ターゲットレジスタに０を書き込み命令を完了させる。
【００２３】
前述したような構成と機能とを有するプロセッサ６４１は、ロード・ストアアーキテクチャを採用しており、メモリ上のデータについて直接演算を行うことはできない。すなわち、プロセッサ６４１は、メモリ上のデータについて演算を行う場合、メモリのデータをロード命令または、non faultingロード命令により一旦レジスタに入れてから演算を行い、演算結果をストア命令によってレジスタからメモリに書き戻す。
【００２４】
また、プロセッサ６４１は、ロード・ストア命令として、１，２，４，８バイトのデータを扱うことができ、アドレスがデータサイズの整数倍でない場合、アライメント違反の例外が発生する。アドレス空間の大きさは、仮想アドレス空間も物理アドレス空間も２64バイトである。
【００２５】
図２は本発明の実施形態での通常のロード命令の処理動作を説明するフローチャートであり、次に、これについて説明する。
【００２６】
（１）処理が開始されると、まず、レジスタから読み出したデータを使用して、ロードデータの論理アドレスが計算される。次に、その論理アドレスを物理アドレスに変換するために変換テーブルが検索される。詳細は後で説明するが、本発明の実施形態によるプロセッサは、アドレス変換テーブルとしてハッシュテーブルを使用している（ステップ１０１〜１０３）。
【００２７】
（２）アドレス変換エントリが見つかったか否かをチェックし、アドレス変換エントリが見つかっていた場合、そのページに対するアクセス権がるか否かをチェックする（ステップ１０４、１０７）。
【００２８】
（３）ステップ１０７のチェックで、アクセスが許可されていた場合、メモリから読み出したデータをレジスタに書き込む。これにより、ロード命令の実行は正常に終了する（ステップ１０９、１１１）。
【００２９】
（４）ステップ１０４のチェックで、アドレス変換エントリが見つからなかった場合、アドレス変換例外が発生し、また、ステップ１０７のチェックで、アドレス変換エントリが見つかったがそのアドレスに対するアクセスが禁止されてた場合、メモリ保護例外が発生し、割り込みを発生させる（ステップ１１３）。
【００３０】
これらの例外が発生したとき、ターゲットレジスタの値は変わらない。そして、前述のメモリ保護例外、アドレス変換例外が発生した場合の例外処理ルーチンの動作は次の３種類となる。すなわち、メモリ保護例外の場合、そのプログラムの実行を中止する。アドレス変換例外であるが、address out of rangeではない場合（ハッシュテーブルからアドレス変換エントリがあふれたケース）、ハッシュテーブルをオペレーティングシステムが入れ替えてプログラムの実行を続ける。また、アドレス変換例外であってaddress out of rangeの場合、プログラムのバグとみなしてプログラムの実行を中止する。
【００３１】
図３は本発明の実施形態でのnon faultingロード命令の処理動作を説明するフローチャートであり、次に、これについて説明する。この命令の動作は、アドレス変換テーブルが見つかり、かつ、そのページに対するアクセスが許されていれば、普通のロード命令と同一である。すなわち、ステップ１０１から開始され、ステップ１０２〜１０４、１０７、１０９を経てステップ１１１で終了する処理は、図２により説明した場合と同一の処理となる。従って、以下では、図２の場合と異なる処理についてのみ説明する。
【００３２】
（１）ステップ１０４の処理で、アドレス変換テーブルのエントリがが見つかったが、ステップ１０７の処理でアクセスが禁止されていた場合、メモリ保護例外を発生させず、レジスタに０を書き込んで、このnon faultingロード命令の処理を正常終了する（ステップ１１０、１１１）。
【００３３】
（２）ステップ１０４の処理で、アドレス変換テーブルのエントリが見つからなかった場合、non faultingロード許可レジスタの値が１であるか否かを調べ、non faultingロード許可レジスタが１であればアドレス変換外を発生させず、ターゲットレジスタに０を書き込んで、このnon faultingロード命令の処理を正常終了する（ステップ１０６、１１０、１１１）。
【００３４】
（３）ステップ１０６のチェックで、non faultingロード許可レジスタが０であった場合、アドレス変換例外を発生させる。この場合、オペレーティングシステムは、address out of rangeのとき例外を無視し、そうでなければ、ハッシュテーブルを入れ替えてプログラムの実行を続ける（ステップ１１３）。
【００３５】
図４はnon faultingロード許可レジスタＮＬＤＲのレイアウトを説明する図である。non faultingロード許可レジスタＮＬＤＲ６２５は、図４に示すような構成の６４ビットのレジスタである。そして、ビット０〜６２は予約ビットであり、この部分にデータが書き込まれても無視され、この部分が読み出された場合、０が読み出される。ビット６３は、non faultingロードアドレス例外抑止ビットであり、このビットが１のとき、non faultingロード命令でアドレス変換が失敗しても例外を発生させない。オペレーティングシステムは、必要なアドレス変換が全てハッシュテーブルに入っていることを保証できるとき、このビットをセットする。その条件は、アドレス変換テーブルの構造と関係がある。
【００３６】
本発明の実施形態によるプロセッサは、論理アドレスを物理アドレスに変換するハードウェアを備えており、そのために２つのテーブルが使用される。これらは、ページ単位の変換を行うページテーブルＰＴＡＢと、ブロック単位でアドレスの変換を行うブロックテーブルＢＴＡＢとであり、以下、これらについて説明する。
【００３７】
図５はページテーブルＰＴＡＢを用いてページ単位のアドレス変換を行うアドレス変換機構の構成を示すブロック図である。図５において、４０６はページテーブル、４０７はページテーブルエントリグループ、４０８はページテーブルエントリである。なお、このアドレス変換機構は、図１に示すテーブル検索エンジン６３１に含まれるものであり、また、ページテーブル４０６そのものは、メインメモリまたはキャッシュ内に格納されている。
【００３８】
１ページの大きさは４キロバイトである。ページテーブルＰＴＡＢ４０６は、システム内の全プロセッサにより共有されており、複数のページテーブルエントリグループＰＴＥＧ４０７から構成され、それぞれのＰＴＥＧ４０７には、１エントリ１６バイトのページテーブルエントリＰＴＥ４０８が８個備えられている。このページテーブルＰＴＡＢ４０６の大きさは可変であり、ページテーブルアドレスレジスタＰＡＲ４０１／４０２（図１に示すＰＡＲ６３２）により指定される。また、ＰＡＲには、ＰＴＡＢ４０６の先頭アドレスも保持されている。
【００３９】
前述の各ＰＴＥには、このエントリが変換する論理ページのアドレスＬＰＮ（論理ページ番号）４０９、エントリの有効（Ｖ＝１）／無効（Ｖ＝０）を示すＶ（バリッド）４１０、変換結果の物理ページ番号ＰＰＮ（物理ページ番号）４１１、このエントリが変換するアドレスに対してアクセスがあったことを示し、アクセスがあったときにハードウェアからセットされるＲ（リファレンスビット）４１２、このエントリが変換するアドレスに対して書き込みアクセスがあったことを示し、アクセスがあったときにハードウェアからセットされるＣ（チェンジビット）４１３、アクセスの可否を制御するための４ビットからなる情報ＰＰ（プロテクション）４１４の各情報が保持されている。
【００４０】
前述において、Ｒビット４１２とＣビット４１３とは、オペレーティングシステムがページを入れ替える際に参照される。また、アクセスの可否を制御するための情報ＰＰ（プロテクション）の各ビットは、スーパバイザ書込み可を示すＳＷＥ、ユーザ書込み可を示すＵＷＥ、スーパバイザ読み出し可を示すＳＲＥ、ユーザ読み出し可を示すＵＲＥのビットである。
【００４１】
ページアドレスレジスタＰＡＲは、図１でも説明したように制御レジスタの１つであり、ビット０〜４５は PTABORG４０１と呼ばれ、ＰＴＡＢ４０６の先頭の物理アドレスを示している。また、PTABSIZE４０２と呼ばれるビット５９〜６３はＰＴＡＢ４０６の大きさを示している。PTABSIZEの値としては、０〜２８が許されており、ＰＴＡＢの大きさは２５６キロバイト×２PTABSIZEになる。
【００４２】
次に、ＰＴＡＢを使用して論理アドレスを物理アドレスに変換する手順について説明する。
【００４３】
まず、論理アドレスに対応するページテーブルエントリグループＰＴＥＧ４０７の物理アドレス４０５を求める。ＰＴＥＧ４０７の物理アドレス４０５は、PTABORG のビット０〜１７と、PTABORG のビット１８〜４５と論理アドレスのビット１３〜４０とをPTABSIZEに応じて選択したものと、論理アドレスのビット４１〜５１と、７ビットの０とを連結して得ることができる。
【００４４】
次に、ＰＴＥＧに含まれている８つのＰＴＥを調べる。論理アドレスに対応するＰＴＥが見つかったら、変換成功であり、見つからなければ、変換失敗である。そのＰＴＥが与えられた論理アドレスに対応するものであるか否かは、ＰＴＥ内のＶ（バリッド）４１０＝１であるか否か、ＰＴＥ内のＬＰＮ（論理ページ番号）＝論理アドレス（０〜４０）であるか否かにより判別し、両者が一致したとき、そのＰＴＥが与えられた論理アドレスに対応するものであると判別できる。変換結果の物理アドレスは、ＰＴＥの物理ページ番号４１１と論理アドレスのビット５２〜６３とにより与えられる。ＰＴＥＧの中に同じ論理アドレスに対応するＰＴＥが２つ以上含まれて場合、アドレス変換の結果は不定である。
【００４５】
図６はブロックテーブルＢＴＡＢを用いてブロック単位でアドレス変換を行うアドレス変換機構の構成を示すブロック図である。図６において、５０６はブロックテーブル、５０７はブロックエントリグループ、５０８はブロックエントリである。なお、このアドレス変換機構は、図１に示すテーブル検索エンジン６３１に含まれるものであり、また、ブロックテーブル５０６そのものは、メインメモリまたはキャッシュ内に格納されている。
【００４６】
図６に示すもう１つのテーブルであるブロック単位でアドレスを変換するブロックテーブルＢＴＡＢ５０６は、ＰＴＡＢと同様の構成を有している。１ブロックの大きさは１６メガバイトである。ＢＴＡＢ５０６は、複数のブロックエントリグループＢＴＥＧ５０７からなり、それぞれのＢＴＥＧには１エントリ１６バイトのブロックエントリＢＴＥ５０８が８個備えられている。このテーブルの大きさは可変であり、ブロックテーブルアドレスレジスタＢＡＲ５０１／５０２（図１に示すＢＡＲ６３３）により指定される。また、ＢＡＲには、ＢＴＡＢ５０６の先頭アドレスも保持されている。
【００４７】
前述のそれぞれのＢＴＥには、このエントリが変換する論理ブロック番号ＬＢＮ（論理ブロック番号）５０９、エントリの有効（Ｖ＝１）／無効（Ｖ＝０）を示すＶ（バリッド）５１０、変換結果の物理ブロック番号ＰＢＮ（物理ブロックページ番号）５１１、ＰＴＥのＲ，Ｃ，ＰＰと同一の意味を持つＲ、Ｃ、ＰＰ５１２〜５１４の各情報が保持されている。
【００４８】
ブロックテーブルアドレスレジスタＢＡＲも、図１で説明したように、制御レジスタの１つであり、ビット０〜４５は BTABORG５０１と呼ばれ、ＢＴＡＢ５０６の先頭の物理アドレスを示すフィールドである。また、ＢＴＡＢ５０６の大きさは、BTABSIZE５０２と呼ばれるビット６０〜６３に設定される。BTABSIZEの値としては、０〜１５が許されており、ＢＴＡＢの大きさは２５６キロバイト×２BTABSIZEになる。
【００４９】
ＢＴＡＢを使用して論理アドレスを物理アドレスに変換する手順はＰＴＡＢの場合と同様である。まず、論理アドレスに対応するブロックテーブルエントリグループＢＴＥＧの物理アドレス５０５を求める。ＢＴＥＧの物理アドレス５０５は、BTABORG のビット０〜４２と、BTABORG のビット４２〜４５と論理アドレスのビット２５〜２８とをBTABSIZEに応じて選択したものと、論理アドレスのビット２９〜３９と、７ビットの０とを連結して得ることができる。
【００５０】
次に、ＢＴＥＧに含まれている８つのＢＴＥを調べる。論理アドレスに対応するＢＴＥが見つかったら、変換成功であり、見つからなければ、変換失敗である。そのＢＴＥが与えられた論理アドレスに対応するものであるか否かは、ＢＴＥ内のＶ（バリッド）５１０＝１であるか否か、ＢＴＥ内のＬＢＮ（論理ページ番号）＝論理アドレス（０〜２８）であるか否かにより判別し、両者が一致したとき、そのＢＴＥが与えられた論理アドレスに対応するものであると判別できる。変換結果の物理アドレス５１５は、ＢＴＥの物理ブロック番号５１１と、論理アドレスのビット４６〜６３とを連結したものとして与えられる。ＢＴＥＧの中に同じ論理アドレスに対応するＢＴＥが２つ以上含まれて場合、アドレス変換の結果は不定である。
【００５１】
前述した２つのアドレス変換方法の両方で変換が可能な場合、ページテーブルによる変換が優先される。
【００５２】
前述で説明したアドレス変換機構は、必要なアドレス変換の全てがテーブルに入っているための条件は次のようになる。まず、変換テーブルの大きさは、１つのスレッドが使えるアドレス空間の大きさが１テラ（２40）バイトの場合、
ページテーブルの大きさ  ：２40÷２12×１６バイト＝４ギガバイト
ブロックテーブルの大きさ：２40÷２24×１６バイト＝１メガバイト
となる。すなわち、、ページ変換を使用した場合、１スレッド分のアドレス変換の全てをテーブルに入れておくことはできないので、できるだけ多くのアドレス変換にブロック変換を使用して１スレッド分のアドレス変換の全てがテーブルに入れらるようにしなければならない。
【００５３】
もう１つの条件は、スレッドの数である。ブロックテーブルグループの指定に論理アドレスのビット２５〜３９を使用しているので、スレッドの数が８を越えると、スラッシングによってブロックテーブルからアドレス変換があふれてしまう可能性がある。従って、本発明の実施形態は、スレッドの数が８以下でアドレス変換のほとんど、または、全てに対してブロック変換が適用されているときにnon faultingロードのアドレス変換例外を抑止することができる。
【００５４】
前述した本発明の実施形態によれば、non faultingロードでアドレス変換テーブルが見つからないときに例外を起こすか、起こさないかをソフトウェアで制御することができるようにし、必要のないときにはアドレス変換例外を抑止することとしているので、アプリケーションプログラムの実行を高速化することができる。
【００５５】
【発明の効果】
以上説明したように本発明によれば、non faultingロード処理のアドレス変換例外の頻度を減らし、アプリケーションプログラムを高速に実行することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態によるコンピュータシステムの構成を示すブロック図である。
【図２】本発明の実施形態での通常のロード命令の処理動作を説明するフローチャートである。
【図３】本発明の実施形態でのnon faultingロード命令の処理動作を説明するフローチャートである。
【図４】  non faultingロード許可レジスタＮＬＤＲのレイアウトを説明する図である。
【図５】ページテーブルＰＴＡＢを用いてページ単位のアドレス変換を行うアドレス変換機構の構成を示すブロック図である。
【図６】ブロックテーブルＢＴＡＢを用いてブロック単位でアドレス変換を行うアドレス変換機構の構成を示すブロック図である。
【符号の説明】
４０６  ページテーブル
４０７  ページテーブルエントリグループ
４０８  ページテーブルエントリ
５０６  ブロックテーブル
５０７  ブロックエントリグループ
５０８  ブロックエントリ
６０１  命令キャッシュ
６０２  命令ＴＬＢ
６１１  浮動小数点レジスタ
６１２  浮動小数点演算器
６２１  汎用レジスタ
６２２  ＡＬＵ
６２３  データキャッシュ
６２４  データＴＬＢ
６２６  バスインタフェース
６３１  テーブル検索エンジン
６４１  プロセッサ
６４２  プロセッサバス
６４３  メインメモリ
６４４  Ｉ／Ｏ装置
【図１】
0004011871.tif 000002
【図２】
0004011871.tif 000003
【図３】
0004011871.tif 000004
【図４】
0004011871.tif 000005
【図５】
0004011871.tif 000006
【図６】
0004011871.tif 000007