JP3745819B2 - ノン・フォルティング・ロード命令をインプリメントする方法及び装置 - Google Patents
ノン・フォルティング・ロード命令をインプリメントする方法及び装置 Download PDFInfo
- Publication number
- JP3745819B2 JP3745819B2 JP03366996A JP3366996A JP3745819B2 JP 3745819 B2 JP3745819 B2 JP 3745819B2 JP 03366996 A JP03366996 A JP 03366996A JP 3366996 A JP3366996 A JP 3366996A JP 3745819 B2 JP3745819 B2 JP 3745819B2
- Authority
- JP
- Japan
- Prior art keywords
- load instruction
- fault
- forting
- virtual
- bit
- 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 - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
Description
【発明の属する技術分野】
本発明は命令を推論に基づいて実行するパイプライン・プロセッサ、より詳細には、ノン・フォルティング・ロード命令(Non-faulting load instruction)及びノーマル(即ち、フォルティング)ロード命令(Normal (faulting) load instruction)をサポートすることに関する。
【0002】
【従来の技術及び発明が解決しようとする課題】
初期の一般的なマイクロプロセッサは中央演算処理装置(CPU)を含む。CPUはメモリとの間のインターフェースを提供し、かつ命令を連続的に順次実行し得る装置を実現する。図1は最近のプロセッサの簡単なブロック図である。一般的に、命令実行は少なくとも4つの主なステージ、即ち、命令及びオペランドのフェッチ1、命令の復号2、実行3、並びに結果の書き戻し4に分割される。最大クロック周波数は4つの全てのステージにおける最も長い伝搬遅延によって決定される。
【0003】
パイプラインの概念は各クロック・サイクルにおいて実施されるロジックの総数を削減することにより最大クロック周波数を増加させる。4つのステージをそれぞれ別のクロック・サイクルにおいて実行し、これによりスループットを増加すべくパイプラインの概念を拡大できる。また、スーパーパイプラインのデザインでは、命令実行を4個を越す数のパイプライン・ステージに分割して、任意の1つのステージを通じて形成される最大伝搬遅延を短縮し、これにより動作周波数及びスループットを増加させ得る。これを実現すべく、前記の4個のステージの全てまたは一部に含まれるロジックが分割される。プロセッサ・ロジックを同一の待ち時間をそれぞれに有するN個のステージへ分割することにより、理論的にはスループットをN倍に増やせる。
【0004】
スーパースカラ・マイクロプロセッサは複数の実行ユニットを有する。2個または3個の命令を同時に実行するスーパースカラ・プロセッサのデザインが一般に使用されている。更に4個の命令を同時に実行するデザインが既に存在する。将来的には、コンピュータ設計者が8〜16個の命令を同時に実行し得るチップを設計するであろう。殆どのスーパースカラ・マイクロプロセッサは特別な複数のパラレル実行分岐5を提供している。しかし、個々のパラレル実行分岐は命令セット全体をサポートできない。その代わり、各パラレル実行分岐は命令セットのサブセットを処理すべく設計されている。
【0005】
パイプライン・プロセッサ及びスーパースカラ・プロセッサに付随する基本的な問題は実行シーケンスに含まれる条件付き分岐の処理に関連する。殆どのプログラムは多くの条件付き分岐を含む。このようなプログラムをパイプラインで実行する場合、最終的に実行する分岐を正確に確定する方法がない。また、分岐命令の判断結果は同命令が実行されない限り得られない。この結果、分岐命令実行前に、同分岐命令直後に実行する命令を確定する方法は存在しない。フェッチ・ステージ1は分岐命令後に次の命令をパイプライン内へ既にフェッチしているため、分岐後の一連の命令の中止が必要となり得る。この問題は分岐実行ステージ以前のステージ数の増加に伴って更に悪化する。従って、プロセッサの処理速度を向上すべくパイプラインが更に長くなった場合、分岐の問題は更に複雑になる。
【0006】
スーパースカラ・プロセッサはパイプライン化されているか否かに拘わらず同様の問題を有し得る。スーパースカラ・プロセッサは任意の時点において複数の命令を実行できる。従って、条件付き分岐命令を一方の実行ユニットで実行する間に、同条件付き分岐命令の条件が満たされた場合にのみ実行される別の命令を他方の実行ユニットで実行できる。条件付き分岐命令の条件が満たされないことにより、命令を他方の実行ユニット内で実行すべきでない事態が発生した際、アーキテクチャはこのコンティンジェント命令(Contingent instruction)を中止またはリバースする方法を提供する必要がある。コンティンジェント命令がレジスタ位置またはメモリ位置への書き込みを行い、かつ以前の内容を破壊した場合、システムは同内容を回復する必要がある。これに代えて、中間記憶位置を使用することにより、潜在的に重要なレジスタ位置またはメモリ位置に対する上書きを、全てのコンティンジェンシ(Contingencies)を解決するまで保留すべくスーパースカラ・プロセッサのコンパイラを設計し得る。
【0007】
しかし、コンティンジェンシを確定するまでメモリ内容を破壊しないようにコンパイラを形成したとしても、別の問題が存在する。例えば、以下のCプログラム・フラグメントは概念上少なくとも2つの部分に分割できる。
【0008】
if(p !=NULL)x=*p+y;
Cプログラム言語において、*pはpがポインタであって、さらには*pがpに
よって示された位置の内容であることを表す。第1の部分は変数pを格納するメモリ位置がNULL記号で表されたコードを格納していないことを確認する条件付きテストである。条件が真である場合、第2の部分は変数yと、メモリ位置pに格納されたアドレスを有するメモリ位置に格納された数値との合計を、変数xを保持するメモリ位置に代入する。前記したように、条件付き分岐命令の結果を確定するまでは、変数xの現在の数値を上書きしないことによって同数値の破壊を防止すべくコンパイラは命令の順番付を行う。これにより、xの現在の数値が維持される。従って、前記の条件が偽である場合、回復は全く必要ない。この結果、コンパイラは前記のフラグメントを以下のシーケンスに分解し得る。
【0009】
temp_register=*p;
if(p!=NULL)x=temp_register+y;
temp_registerへの代入と、pがNULLでないことを確認するテストとを異なる実行ユニットにおいて同時に実施すべく、前記の命令をスケジュールし得る。しかし、前記のシーケンスを使用しても、以下の問題が依然発生し得る。即ち、pがNULLの場合、同pは何も指していない。このため、pが指す位置の内容を読み出す試みが無意味になる。そして、このpの内容に対するノーマル・アクセスは多くのプロセッサにおいてプログラムの中止を引き起こす。
【0010】
この問題を解決すべく、ノー・フォルト・ローディング(No-fault loading)の概念が導入された。ノー・フォルト・ローディングでは、pがNULLであって、かつ命令が*pのロードを試みる場合、ロードはフォルト、即ちエラーを形成する代わりにゼロなどの所定の数値を返す。違法アドレスからのノン・フォルティング・ロードによって返された数値を後から使用することは殆どない。このため同ノン・フォルティング・ロードによって返された数値は重要ではない。誤って予測され、かつノン・フォルティング・ロードを引き起こした分岐は同ロードによって返されたデータを使用する前に解決される。従って、同データが使用されることは殆どない。また、返されたデータが使用されたとしても、次の命令の実行結果は放棄される。この結果、違法アドレスのノン・フォルティング・ロードによって返された数値は、同数値が後から使用された場合にも例外を形成しないよう選択すべきである。
【0011】
ノン・フォルティング・ロードはその使用を防止する条件付き制御構造(Conditional control structures)の先へロードを移行させる最適化を可能にする。この結果、ノン・フォルティング・ロードは命令のスケジューリングを改善することによりロードの待ち時間が及ぼす影響を最小限に抑制し得る。ノン・フォルティング・ロードの意味は、回復不能なフォルト(例:アドレス・アウト・オブ・レンジ・エラー)が生じた場合を除いて他の全てのロードの意味と同一である。回復不能なフォルトが生じた場合、同フォルトは無視され、ハードウェア及びシステム・ソフトウェアは互いに協働してゼロを返すことによりロードが正常に完了したように見せかける。コンパイラのオプティマイザはノン・フォルティング・ロードと断定したロードに対してロード変更命令を形成する。これはクリティカル・コード・パスからアドレス確認を排除することにより特定のアルゴリズムにおける性能の改善を可能にする。ポインタの“間接参照(Dereferencing)”は同ポインタが指す位置の内容に対するアクセスを試みる。リンクされたリストに従う場合、ノン・フォルティング・ロードは、同リストの末端を指すヌル・ポインタを推論に基づいて先読みした際に、同ポインタを安全に間接参照することを可能にする。これにより仮想アドレス0x0に存在するページに対してペナルティを受けることなく安全にアクセスできる。
【0012】
最近のプロセッサは物理アドレス空間とは異なる仮想アドレス空間をサポートしている。仮想アドレスはプロセッサがメモリ位置を特定するために使用するラベルである。プロセッサは仮想アドレスを用いてメモリ位置へアクセスできる限り、物理メモリ内におけるメモリ位置の実際の場所を問題にしない。プロセッサ・アーキテクチャの仕様は、サポートを要する特定の仮想アドレス空間を限定する。コンピュータ・システムを管理するオペレーティング・システムは、仮想アドレス空間を物理メモリにマップする方法に関して柔軟性を有する。従って、仮想アドレスから物理アドレスへの翻訳が必要になる。
【0013】
オペレーティング・システムは翻訳情報を“ソフトウェア変換テーブル(Software translation table)”と称される任意のデータ構造内に維持している。1つ以上の変換索引バッファ(以下、TLBと称する)がソフトウェア変換テーブルの独立したキャッシュとして使用されている。変換索引バッファの使用により、頻繁にアクセスする仮想ページを1サイクルで翻訳できる。“TLBヒット”は所望の翻訳がオンチップTLB内に存在することを意味する。“TLBミス”は所望の翻訳がオンチップTLB内に存在しないことを意味する。TLBは小型、かつ高速である。ソフトウェア変換テーブルは大きく、かつ複雑であり得る。直接マップされたキャッシュ(Direct-mapped cache)として機能する変換格納バッファ(Translation storage buffer、略してTSB)はTLB及びソフトウェア変換テーブル間のインターフェースとして機能する。
【0014】
TLBミスが生じた場合、プロセッサはTLBミス処理を実施すべくオペレーティング・システム・ソフトウェアへ即座にトラップする。TLBミス・ハンドラは利用可能な任意の手段を用いてTLBを満たすオプションを有している。TLBが所望のアドレスの翻訳で満たされた後、TLBミスを初めに引き起こした命令が再実行される。
【0015】
一般的なTLBミス・ソフトウェアはTSBへのアクセスに必要な複数の特定のポインタを最初にロードする。ハンドラはこれらのポインタを使用して、所望の翻訳がTSB内に存在するか否かを確認すべくTSB内の適切な位置をチェックする。所望の翻訳がTSB内に存在する場合、同翻訳は置換アルゴリズムに基づいて選択されたTLBエントリ内へロードされる。翻訳がTSB内に存在しない場合、TLBミス・ハンドラは更に精巧、かつ処理速度の遅いTSBミス・ハンドラへジャンプする。TSBミス・ハンドラは大きく、かつ複雑なソフトウェア変換テーブル内において所望の翻訳を検索する。所望の翻訳がソフトウェア変換テーブル内に存在しない場合、所望のメモリ位置はメイン・メモリ内にマップされない。この場合、アドレスは違法であり得る。これに代えて、特定された仮想アドレスによって参照されたデータが合法であり、かつディスク等の別の記憶装置内に存在することがある。アドレスが合法であって、かつメイン・メモリ内に存在しない場合、要求されたデータをメイン・メモリ内にマップし、さらにはTLBミスを引き起こした命令が実行可能となる前に、該当する翻訳をTLB内へ格納する必要がある。
【0016】
ノン・フォルティング・ロードがTLBミスに直面した場合、オペレーティング・システムはページの翻訳を試みる必要がある。翻訳がエラー(例:アドレス・アウト・オブ・レンジ)を形成した場合、ゼロが返され、ロードは静的に完了する。従来の幾つかの方式では、所望のアドレスが違法な場合、同アドレスへアクセスするノン・フォルティング・ロード命令では、違法ページに対するマッピングは存在しない。従って、TLBミスが生じる。次いで、ソフトウェア・トラップはTSBミスを形成する。そして、アドレスが違法であることを最終的に確定するには比較的長い時間が必要である。この結果、プロセッサによる他の有用な作業の実施が阻害される。プロセッサが合法なページのマッピングのみを許容する場合、違法なアドレスからのノン・フォルティング・ロードは返しに長い時間を必要とするトラップを常に形成する。従って、ヌル・ポインタに対する間接参照は最終的にゼロを返す前に長い時間を要するソフトウェア・トラップを招来する。
【0017】
図2はロード命令を処理する従来の方法の流れ図である。一般的に、破線9によって囲まれた全てのステップはハードウェア内に実装されている。ロード命令はステップ10において最初にディスパッチされる。テスト11では、比較オペレーションが対応するハードウェアを用いて全ての変換テーブル・エントリに対して同時に実施される。現在のロードが要求する仮想ページ番号がTLB内において探索される。TLBヒットが存在する場合、TLBは適切な物理ページをステップ12において提供する。次いで、ロード命令がステップ13において実行される。そして、同ロード命令はステップ14において完了する。
【0018】
該当する仮想アドレスがTLB内に存在しない場合、TLBミス・ハンドラがステップ15において呼び出される。テスト16において、ソフトウェアは変換テーブル内において翻訳を探索する。該当する翻訳が変換テーブル内に存在する場合、ソフトウェアはTLBを適切な翻訳で満たし、ロードが実行される。また、同翻訳が変換テーブル・データ構造の全てのレベルに含まれていない場合、ソフトウェアはアドレスが合法であるか否かをテスト18で確定する。アドレスが合法である場合、回復可能なページ・フォルトがステップ19で発生する。ページ・フォルトが発生した場合、要求されたページはディスクまたは別の外部記憶装置内に存在し得る。そして、ページ・フォルトから回復すべく同ページをマップし、かつメイン・メモリ内へ転送する必要がある。アドレスが違法である場合、テスト20は現在の命令がノン・フォルティング・ロードであるか否かを確定する。現在の命令がノーマル(フォルティング)ロードである場合、違法アドレスは回復不能なフォルトをステップ19で形成する。しかし、現在の命令がノン・フォルティング・ロードである場合、ソフトウェアはステップ21においてゼロを返す。そして、ロード命令はステップ14において円滑に完了する。
【0019】
ゼロを返す処理速度を向上する1つの方法としては、全てがゼロであるページに対してアドレス・ゼロをマッピングすることが挙げられる。この方式を使用することにより、デザインはソフトウェア変換テーブル内に存在する全てのマッピングが合法ページに対するものとする標準的概念から離れる。このアプローチを使用した場合、違法ページはTLB内に翻訳を有し得る。ヌル・ポインタに対する間接参照が行われた場合、違法ページの翻訳はTLB内に存在するため、TLBヒットが生じる。そして、ソフトウェアへのトラップを伴うことなく即座にゼロが返される。実質的に、このアプローチは頻繁にアクセスする特定の違法アドレスを合法アドレスへ単に変換する。
【0020】
ノン・フォルティング・ロードによって頻繁にアクセスされない他の違法アドレスをノーマル・ロードがアクセスした際にフォルトを形成するように同違法アドレスをマップする必要はない。これらの違法アドレスはTLBミス及びソフトウェア・トラップを招来し、最終的にはゼロが返される。ノン・フォルティング・ロードが最も頻繁にアクセスするページ(例:0x0)のみをマップする必要がある。これにより、ノン・フォルティング・ロードがもたらす更に短い待ち時間の恩恵を享受できる一方、ノーマル・ロードが不正確に作用するリスクを最小限に抑制できる。
【0021】
ノン・フォルティング・ロード命令をサポートするプロセッサでは、ノーマル(フォルティング)ロードも併せてサポートする必要がある。しかし、全てがゼロであるページをマップした場合、ノーマル・ロードは他のメカニズムが存在しない限り同ページへアクセスし得る。技術的に、これは誤りである。このアプローチに付随する問題点としては、ノーマル・ロードも違法ページへアクセスできる点が挙げられる。ノーマル(フォルティング)ロードは同ロードが違法ページへのアクセスを試みた際、ゼロを返すよりも、寧ろフォルトを形成する必要がある。この方式を用いた場合、プログラマは違法ページからのノン・フォルティング・ロードにおいて迅速にゼロを返すことと、違法ページへアクセスした際にゼロを返すより、寧ろフォルトを形成して正確に作用するノーマル(フォルティング)ロードを有することのうちのいずれか一方をページ単位で選択する必要がある。
【0022】
多くのプログラマはコードをデバッグするためにアドレス0x0へアクセスした際に生じる例外を考慮する。仮想アドレス0x0は“ヌル”であり、常には違法なアドレスである。一般的なプログラムに多く発生するバグは、ヌル・ポインタに対する間接参照を試みる。ソフトウェア開発のデバッグ段階において、プログラマはヌル・ポインタを間接参照した際にフォルトを形成すべくノーマル(フォルティング)ロードをコード内に使用する。プログラマはフォルトの発生後、誤りの原因を確定すべくマシーンの状態を検査できる。
【0023】
プログラマはプログラムを完全にデバッグした後、ロードを条件付き分岐の先へ移行することにより実行速度を向上すべく、ノン・フォルティング・ロードを機械コード内に使用できることをコンパイラへ通知する。ノン・フォルティング・ロードの使用はデバッグ済みプログラム内において大きな問題となる回復不能なフォルトを防止する。しかし、ノン・フォルティング・ロードはアドレス0x0(または他の任意の違法アドレス)へアクセスする際、ページがメモリ位置0x0に対してマップされていない限りソフトウェア・トラップを引き起こす。これらの反復して実施されるトラップは非常に長い時間を要し得る。フォルト発生時における不必要な処理を最小限に抑制すべく、全てがゼロのページ(Page of all zeros)に対して小さい数値のアドレス(例、特にアドレス・ゼロ)をマップすることが好ましい。この結果、ヌル・ポインタを介した参照は不必要なトラップを形成しない。従って、ソフトウェア・トラップは全てがゼロのページをメモリ位置0x0へマップすることによって回避できる。
【0024】
最近のプログラム開発はステージ毎に実施される。特定のルーチンまたはプロシジャは他の関連するソフトウェアが完了し、かつデバッグされる前にデバッグされる。多くの場合、デバッグしたプロシジャはプログラム内にバグが含まれた状態でコンパイルする必要がある。全てがゼロであるページがメモリ位置0x0に対してマップされている場合、ヌル・ポインタを間接参照した際に、フォルトを形成する代わりにゼロが返される。このため、開発中のプログラムまたはプロシジャがフォルトを形成することの利点が失われる。アドレス0x0は違法であり、かつノーマル・ロードに対してゼロを返してはならない。このため、このゼロを返す動作は誤っている。他のメカニズムが存在しない限り、フォルティング・ロード及びノン・フォルティング・ロードを含む全てのロードは、全てがゼロであるページをメモリ位置0x0へマップした場合、ヌル・ポインタを間接参照した際にゼロを返す。
【0025】
本発明は前述した事情に鑑みてなされたものであって、その目的は、ノン・フォルティング・ロード命令及びノーマル(フォルティング)ロード命令の迅速かつ正確な処理を可能にする装置及び方法を提供することにある。
【0026】
【課題を解決するための手段】
本発明の変換テーブル・エントリは、同変換テーブル・エントリを適用する仮想アドレス空間を特定する仮想アドレス部分と、仮想アドレス空間に対応する物理アドレス空間を特定する物理アドレス部分と、仮想アドレス空間が違法であることを表示するノン・フォルト・オンリ・ビット(Non-fault-only bit)とを含む。そして、本発明の変換テーブルは変換テーブル・エントリを複数有する。仮想アドレス部分を仮想ページ番号とし、物理アドレス部分を物理ページ番号とすることができる。
【0027】
本発明の1つの態様では、ノン・フォルト・オンリ・ビットはページ毎に提供されており、同ノン・フォルト・オンリ・ビットをセットした場合、そのページに対してアクセスするノン・フォルティング・メモリ・アクセスとしてのノン・フォルティング・ロードは翻訳を招来する。ノン・フォルト・オンリ・ページに対する他の全てのアクセスはエラーであり、プロセッサはオペレーティング・システム・ソフトウェア・トラップを介してフォルトを形成する。ノン・フォルティング・ロードは、ノン・フォルト・オンリ・ビットがセットされたページに対してアクセスした際にもフォルトを形成しない点を除けば、ノーマル・ロードのように作用する。変換テーブル・エントリ内のノン・フォルト・オンリ・ビットは、ノン・フォルティング・ロードによる安全なアクセスを提供すべくマップされたページをマークする。しかし、これは他のノーマル・アクセスが行われた際に依然フォルトを形成し得る。
【0028】
ノーマル・メモリ・アクセスとしてのノーマル(フォルティング)ロードは、主張されたノン・フォルト・オンリ・ビット(Asserted non-fault-only bit)によってマークされた違法ページに対するアクセスを試みた際にフォルトを形成する。
【0029】
ノン・フォルト・オンリ・ビットは違法なページを表示する。変換索引バッファ・ヒットが発生した後、全ての結果はハードウェア・サポートを有する。このため、全てのノーマル・ロード及びノン・フォルティング・ロードはハードウェア内において迅速に処理され、かつ正確に実行される。仮想ページ0x0等の選択されたページを変換テーブル内でマップできる。アクセスが一度行われると、仮想ページ0x0に対する変換テーブル・エントリは変換索引バッファ内に存在する。この結果、ノン・フォルティング・ロードがヌル・ポインタを間接参照した場合、TLBヒットが生じる。このため、要求されたページを発見すべくソフトウェアへトラップすることなくゼロが即座に返される。
【0030】
本発明の別の態様では、TLBミスによって呼び出されたオペレーティング・システム・ソフトウェア・ルーチンを使用することにより、過去に変換テーブル内へ翻訳されたことがない違法な仮想ページに対するアクセスをノン・フォルティング・ロードが試みたことが発見された場合、オペレーティング・システムは同仮想ページに対する変換テーブル・エントリを形成する。変換テーブル・エントリは前記の仮想ページを全てがゼロである物理ページに対してマップし、さらには同仮想ページに対するノン・フォルト・オンリ・ビットを主張、即ちセットする。その後実行される同仮想ページからのノン・フォルティング・ロードは、TLBヒットを形成し、かつTLBミス・ハンドラを回避することと、前記の違法な仮想ページに対応する変換テーブル・エントリを探索すべくソフトウェア変換テーブル全体に対して実施される高い費用及び長い時間を要する不成功なソフトウェア・サーチを少なくとも回避することのうちの一方を招来する。
【0031】
【発明の実施の形態】
本発明に基づくノン・フォルト・オンリ・ビットはページ毎に形成された変換テーブル・エントリ内に存在する。ノン・フォルト・オンリ・ビットをセットした場合、該当するページにアクセスするノン・フォルティング・ロードは翻訳を招来する。ノン・フォルト・オンリ・ページに対する他の全てのアクセスはエラーであり、プロセッサはオペレーティング・システム・ソフトウェア・トラップを介してフォルトを形成する。ノン・フォルティング・ロードは、ノン・フォルト・オンリ・ビットがセットされたページに対してアクセスした際にもフォルトを形成しない点を除けば、ノーマル・ロードのように作用する。
【0032】
図3は本発明に基づく変換テーブル・エントリ22を示す。各エントリは仮想アドレス部分23を有している。変換テーブル内のエントリは仮想アドレスに基づいて編成されるとともに、同仮想アドレスに対する物理アドレス・マッピングを有する。一般的に、メモリは複数のページに分割されている。このため、仮想アドレス23及び対応する物理アドレス24の各ビットのうちの最も重要なビットのみが変換テーブル・エントリに格納されている。前記の仮想アドレス23及び物理アドレス24の各ビットのうち、変換テーブル・エントリに格納されなかった最も重要度の低いビットは、メモリ・ページ内にインデックスまたはオフセットを提供する。ノン・フォルト・オンリ・ビット25はエントリ毎に存在する。別の情報26も変換テーブル・エントリ内に存在し得る。
【0033】
主張されたノン・フォルト・オンリ・ビットを備えたページに対して実施されるノーマル・アクセス、即ち同ページからのロードはエラー・ハンドリング・ソフトウェア・トラップを招来し、同トラップはエラーを形成する。従って、変換テーブル・エントリ内のノン・フォルト・オンリ・ビットは特定のページをマークする。同ページはノン・フォルティング・ロードによる安全なアクセスを提供すべくマップされるとともに、同ページに対する他のノーマル・アクセスが行われた際にフォルトを引き起こし得る。これにより、デバッグ中のソフトウェアが使用するデバッグ済みライブラリ・ルーチンへのノン・フォルティング・アクセスを加速することによって得られる効果が維持される一方で、プログラマはデバッグ段階においてワイルド・ポインタ・リファレンスへのトラップが可能である。ノーマル(フォルティング)ロードは、主張されたノン・フォルト・オンリ・ビットによってマークされた違法ページに対するアクセスを試みた際にフォルトを形成する。このため、正確なプログラムの実行が保証される。
【0034】
ノン・フォルト・オンリ・ビットは違法なページを表示する。従って、全てがゼロである物理ページ(例えば、物理アドレス0xFに位置する)が仮想メモリ位置0x0に対してマップされた場合、仮想ページ0x0に対応する変換テーブル・エントリ内のノン・フォルト・オンリ・ビットが主張される。ノン・フォルティング・ロードがヌル・ポインタを間接参照した場合、仮想アドレス0x0は適切な物理ページ(0xF)へ翻訳される。そして、同ページに対応するメモリ位置の内容、即ちゼロが返される。しかし、ノーマル・フォルティング・ロードがヌル・ポインタを間接参照した場合、仮想アドレス0x0に対する変換テーブル・エントリ内に存在する主張されたノン・フォルト・オンリ・ビットにより、ページ0x0は違法である旨マークされている。このため、仮想アドレス0x0は翻訳されない。この違法ページに対するノーマル(フォルティング)ロード・アクセスはトラップを招来し、かつフォルトを形成する。従って、プログラマはノーマル(フォルティング)ロードの正確な作用に影響を及ぼすことなく、ノン・フォルティング・ロードに対して迅速にゼロを返すためにハードウェア・サポートがもたらす効果を享受できる。
【0035】
図4はヌル・ポインタを全てがゼロであるページに対してマッピングするエントリ31を有する小さな変換索引バッファ30を示している。そして、エントリ31に対するノン・フォルト・オンリ・ビット32は主張された状態にある。更に、図4は主張が取り消されたノン・フォルト・オンリ・ビット(Deasserted non-fault-only bit)34を有する合法な仮想アドレスに対するエントリ33を示す。図5は合法なアドレス(“Y”で表す)と、ヌル・ポインタの間接参照値(“X”で表す)とをそれぞれノーマル(フォルティング)ロード及びノン・フォルティング・ロードした際の結果を示す。ここで、ノーマル(フォルティング)ロードは“LOAD”を用いて示し、ノン・フォルティング・ロードは“NF_LOAD”で示す。
【0036】
ヌル・ポインタに対するTLBエントリ31に示すように、ハードウェア・サポートは違法ページへアクセスするノン・フォルティング・ロードに対して迅速にゼロを返すべく提供されている。ノン・フォルト・オンリ・ビットは仮想ページが合法であるか否かを実質的に表示する。ノン・フォルト・オンリ・ビットが主張された場合、仮想ページは違法である。主張されたノン・フォルト・オンリ・ビットを有する仮想ページに対してノーマル・ロードがアクセスを試みた場合、プロセッサは前記のソフトウェアへトラップし、かつフォルトを形成する。
【0037】
図6(a)はアクセスしたページに対する変換テーブル・エントリが存在する場合に、命令の実行及びフォルトの形成のうちのいずれを実施するか確定すべく使用するロジックの真理値表を示す。更に、図6(b)は前記のロジックを実施する簡単なロジック回路55を示す。ロジック回路55は3つの論理素子から構成され、2つの入力(NFL,NFO)及び2つの出力(TRANSLATE,FAULT)を備えている。出力TRANSLATEが論理レベル“1”の時は翻訳を行い、同出力が論理レベル“0”の時は翻訳を行わない。また、出力FAULTが論理レベル“1”の時はフォルトを形成し、同出力が論理レベル“0”の時はフォルトを形成しない。
図7はプロセッサ内においてロード命令を実行する際の本発明に基づく事象のシーケンスを示す。本発明のロード命令処理はステップ100において開始される。ステップ101は、ロードするメモリ位置についての仮想から物理ページへの翻訳に対するノン・フォルト・オンリ(NFO)ビットを含む変換テーブル・エントリが、変換索引バッファ(TLB)内に存在するか否かを確認する。該当するエントリが変換索引バッファ内に存在しない場合、プロセッサはオペレーティング・システム・ソフトウェア・ルーチンであるTLBミス・ハンドラ102へトラップする。TLBミス・ハンドラはロード命令が要求する仮想ページに対する変換テーブル・エントリを探索すべくソフトウェア変換テーブルの別のレベルを調べる。ソフトウェア変換テーブル内に翻訳が存在しない場合、テスト103はテスト114を呼び出す。テスト114はアドレスが真に違法であるか否かを確定する。アドレスが合法であって、かつ単にマップされていない場合、回復可能なフォルト104が形成される。例えば、これはメモリ位置がメイン・メモリより寧ろディスク上に存在する場合に発生し得る。この結果、ページ・フォルトが発生する。ページ・フォルトが発生した場合、適切なページがディスクから読み込まれ、同ページは物理メモリに対してマップされる。そして、その仮想アドレスに対する変換テーブル・エントリが形成され、同エントリは変換索引バッファ内に格納される。ロード命令を再実行した後、プロセッサはフォルトから回復する。要求された仮想アドレスが真に違法である場合、テスト111は現在のロードがノン・フォルティング・ロードであるか否かを確定する。現在のロードがノン・フォルティング・ロードである場合、ソフトウェアはステップ112においてゼロを返し、命令の実行はフォルティングを伴うことなく継続される。ソフトウェアがゼロを返した場合、ロード命令はステップ110において完了する。テスト111によって、現在のロードがノーマル(フォルティング)ロードであることが確定された場合、違法アドレスは回復不能なフォルト104を形成する。
【0038】
前記の説明から推測し得るように、フォルト・バブル(Fault bubble)104はソフトウェア・ルーチンへのトラップを示す。ページ・フォルト等の幾つかのフォルトは回復可能である。違法アドレスへのアクセスするノーマル・ロード等の他のフォルトは回復不能である。
【0039】
要求されたページに対する変換テーブル・エントリがソフトウェア・テーブル内で発見された場合、テスト103は、変換索引バッファを要求されたテーブル・エントリで満たすフィリングをステップ105において呼び出す。変換テーブル・エントリが検索された後、テスト106はロードがノン・フォルティング・ロードであるか否かを確認すべく現在のマシンの状態を確認する。現在のロードがノーマル(フォルティング)ロードである場合、テスト107はロードが要求するページに対してノン・フォルト・オンリ(略して、NFO)ビットが主張されているか否かを確認する。要求されたページに対してノン・フォルト・オンリ・ビットが主張されていない場合、要求されたページはノーマル・ページであり、ノン・フォルティング・ロード及びノーマル・ロードの両方によるアクセスに対して安全である。しかし、要求されたページに対してノン・フォルト・オンリ・ビットが主張されている場合、要求されたページは違法ページであり、ノーマル(フォルティング)ロードによるアクセスは回復不能なフォルト104を形成する。ステップ108において、仮想から物理アドレスへの翻訳が行われる。次いで、ロードはステップ109において実行され、ロード命令はステップ110において完了する。ステップ110に到達した後、次のロード命令の開始がステップ100で行われ得る。
【0040】
図7に示す破線内に存在する各ステップはハードウェア内に実装することが好ましい。現在の命令がノン・フォルティング・ロードであり、かつ要求されたページに対応する変換テーブル・エントリが発見された場合、テスト106は翻訳108及びロード実行109を招来する。ステップ101においてTLBヒットが存在する場合、本発明の効果が実現される。変換索引バッファ・ヒットが生じた後、全ての結果はハードウェア・サポートを有する。全てのノーマル・ロード及びノン・フォルティング・ロードはハードウェア内において迅速に処理され、かつ正確に実行される。仮想ページ0x0等の選択されたページは変換テーブル内でマップできる。アクセスが行われた後、仮想ページ0x0に対する変換テーブル・エントリは変換索引バッファ内に存在する。従って、ノン・フォルティング・ロードがヌル・ポインタを間接参照した場合、TLBヒットが生じ、要求されたページを発見すべくソフトウェアに対してトラップすることなくゼロが即座に返される。
【0041】
仮想ページ0x0等、ノン・フォルティング・ロードがアクセスする可能性の高いページのみが変換テーブル内にマップされる。このため、他の違法なページは変換テーブル内に存在しない。この場合、TLBミスによって引き起こされたオペレーティング・システム・ソフトウェア・トラップは、要求された仮想ページに対応する変換テーブル・エントリが存在しないことを最終的に発見し、ゼロを返す。
【0042】
本発明の第2の実施の形態では、TLBミスによって呼び出されたオペレーティング・システム・ソフトウェア・ルーチンを使用することにより、過去に変換テーブル内へ翻訳されたことがない違法な仮想ページに対するアクセスをノン・フォルティング・ロードが試みたことが発見された場合、オペレーティング・システムは同仮想ページに対する変換テーブル・エントリを形成する(図7のステップ113において)。変換テーブル・エントリは前記の仮想ページを全てがゼロである物理ページに対してマップし、さらには同仮想ページに対するノン・フォルト・オンリ・ビットを主張する。この結果、その後実行される同仮想ページからのノン・フォルティング・ロードは、TLBヒットを形成し、かつTLBミス・ハンドラを回避することと、前記の違法な仮想ページに対応する変換テーブル・エントリを探索すべくソフトウェア変換テーブル全体に対して実施される高い費用及び長い時間を要する不成功なソフトウェア・サーチを少なくとも回避することのうちの一方を招来する。
【0043】
この第2の実施の形態はプログラマまたはコンパイラが、ノン・フォルティング・ロードによってアクセスされる違法な仮想アドレスを命令の実行前に予測する必要性を排除する。ノン・フォルティング・ロードが違法ページを間接参照した場合、オペレーティング・システムは適切な変換テーブル・エントリを形成する。その後実施される同ページからのノン・フォルティング・ロードは変換索引バッファをヒットし、これによりソフトウェア・トラップを回避し得る。
【0044】
以上、本発明を少なくとも2種類のロード命令、即ち、ノン・フォルティング・ロード及びノーマル(フォルティング)ロードを処理する方法に関して詳述した。一般的に、最近のRISC(縮小命令セット・コンピューティング)プロセッサにおいて、ロード命令はメイン・メモリからデータを検索する唯一の命令である。しかし、これは本発明が任意のプロセッサに付随するメイン・メモリを参照する他の命令に使用できないことを意味しない。例えば、任意のプロセッサは内部レジスタよりも寧ろメイン・メモリから読み出される1つ以上のオペランドを使用する“add”命令をサポートし得る。この場合、加算命令に対応するオペランドをメイン・メモリから検索することは本明細書中に開示したロード命令に相当する。従って、CISC(複合命令セット・コンピューティング)プロセッサはノン・フォルティング加算命令及びノーマル(フォルティング)加算命令を有し得る。実質的に、本発明はメイン・メモリからのデータの検索を形成する任意の命令に使用できる。簡単なRISCプロセッサでは、このような命令はロード命令のみとなる場合がある。しかし、このような命令はメイン・メモリからデータを検索する全ての命令を一般的に含む。
【0045】
本発明の方法及び装置を現在における好ましい実施の形態に基づいて詳述したが、当業者は請求項に開示する本発明の精神及び範囲内における改良及び変更が可能なことを認識し得る。従って、本明細書及び図面は本発明を限定するものではなく、寧ろ本発明の例示を目的とする。
【0046】
以上詳述したように、ノン・フォルティング・ロードが違法ページへアクセスした際、最終的にゼロを返すまでに長い時間を要するソフトウェアへのトラップを伴うことなく、即座にゼロが返される。更に、ノン・フォルティング・ロードがアクセスする可能性の高いページのみが変換テーブル内にマップされており、同ページへのアクセスに要する時間を削減できる。また、過去に変換テーブル内へ翻訳されたことがない違法ページが発見された場合、オペレーティング・システムは同仮想ページに対する変換テーブル・エントリを形成するため、ノン・フォルティング・ロードが同ページへアクセスした際に、迅速にゼロを返し得る。この結果、ノン・フォルティング・ロード命令を迅速かつ正確に処理できる。更に、ノーマル(フォルティング)ロードが違法ページへアクセスした際に、ゼロを返すより、寧ろフォルトが形成される。このため、プログラム開発段階等におけるノーマル(フォルティング)ロード命令の迅速かつ正確な処理が保証される。
【0047】
【発明の効果】
本発明によれば、ノン・フォルティング・ロード命令及びノーマル(フォルティング)ロード命令の迅速かつ正確な処理を行い得るという優れた効果を発揮する。
【図面の簡単な説明】
【図1】従来のパイプライン型スーパスカラ・プロセッサを示すブロック図。
【図2】ロード命令を処理する従来の方法を示す流れ図。
【図3】本発明に基づく変換テーブル・エントリを示す図。
【図4】本発明に基づく変換索引バッファを示す図。
【図5】4つのロード命令と、変換索引バッファが図4に示すエントリを有する際に、同4つの命令が形成する結果とを示す図。
【図6】(a)アクセスされたページに対する変換テーブル・エントリが存在する際に、処理を指示する制御信号を実現する本発明のロジックの真理値表。(b)本発明のロジック回路。
【図7】本発明の第1及び第2の実施の形態に基づくロード命令を処理する方法を示す流れ図であり、ステップ113は第1の実施の形態にのみ含まれる。
【符号の説明】
22…変換テーブル・エントリ、23…仮想アドレス部分、24…物理アドレス部分、25…ノン・フォルト・オンリ・ビット、30…変換索引バッファ。
Claims (22)
- 変換テーブル・エントリを適用する仮想アドレス空間を特定する仮想アドレス部分と、
前記仮想アドレス空間に対応する物理アドレス空間を特定する物理アドレス部分と、
ノン・フォルティング・ロード命令、あるいはノーマル・フォルティング・ロード命令のどちらが前記仮想アドレス空間へのアクセスを行っているのかを表示するノン・フォルト・オンリ・ビットと
を含む変換テーブルを備えたプロセッサであって、
ノン・フォルティング・ロード命令が仮想アドレス空間へのアクセスを行っていることを前記ノン・フォルト・オンリ・ビットが表示している場合、当該プロセッサがノーマル・フォルティング・ロード命令によるアクセスを試みた際にフォルトを形成するフォルト・ユニットを備えたことを特徴とするプロセッサ。 - 前記仮想アドレス部分が仮想ページ番号である請求項1に記載のプロセッサ。
- 前記物理アドレス部分が物理ページ番号である請求項1に記載のプロセッサ。
- 前記変換テーブルは複数の変換テーブル・エントリを含む請求項1に記載のプロセッサ。
- 主張が取り消されたノン・フォルト・オンリ・ビットを備えた変換テーブル・エントリは合法仮想アドレスに対応している請求項4に記載のプロセッサ。
- 主張が取り消されたノン・フォルト・オンリ・ビットを備えた変換テーブル・エントリは、前記ノーマル・フォルティング・ロード命令のメモリ・アクセス及び前記ノン・フォルティング・ロード命令のメモリ・アクセスの両方がアクセスし得る仮想アドレスに対応している請求項5に記載のプロセッサ。
- 仮想ソース・ページ・アドレスに対する変換テーブル・エントリを使用して、ロード命令を処理する方法であって、
前記ロード命令がノン・フォルティング・ロード命令、あるいはノーマル・フォルティング・ロード命令のどちらであるのかを判定する工程と、
前記ロード命令がノーマル・フォルティング・ロード命令であるという判定に応答して、
前記変換テーブル・エントリ内のノン・フォルト・オンリ・ビットが主張されているか否かをテストする工程と、
前記ノン・フォルト・オンリ・ビットが主張されていないことが前記テスト工程で確定された場合、仮想ソース・ページ・アドレスを物理ソース・ページ・アドレスへ翻訳する工程と、
前記ノン・フォルト・オンリ・ビットが主張されていることが前記テスト工程で確定された場合、フォルトを形成する工程と
を含む方法。 - 前記ノン・フォルト・オンリ・ビットが主張されていないことが前記テスト工程で確定した場合、前記ロード命令を前記翻訳工程後に実行する工程を含む請求項7に記載の方法。
- 前記フォルトを形成する工程はオペレーティング・システム・ソフトウェア・ルーチンへトラップすることによって実現される請求項8に記載の方法。
- 仮想ソース・ページ・アドレスに対する変換テーブル・エントリを使用してロード命令を処理する方法であって、
前記ロード命令がノン・フォルティング・ロード命令であるか否かをテストする工程と、
前記ロード命令がノン・フォルティング・ロード命令である場合、仮想ソース・ページ・アドレスを物理ソース・ページ・アドレスへ翻訳する工程と、
前記ロード命令がノン・フォルティング・ロード命令でない場合、変換テーブル・エントリ内のノン・フォルト・オンリ・ビットが主張されているか否かをテストする工程と、
前記ノン・フォルト・オンリ・ビットが主張されておらず、かつ前記ロード命令がノン・フォルティング・ロード命令でない場合、仮想ソース・ページ・アドレスを物理ソース・ページ・アドレスへ翻訳する工程と、
前記ノン・フォルト・オンリ・ビットが主張され、かつ前記ロード命令がノン・フォルティング・ロード命令でない場合、フォルトを形成する工程と
を含む方法。 - 前記仮想ソース・ページ・アドレスを物理ソース・ページ・アドレスへ翻訳した後で、ロード命令を実行する工程を含む請求項10に記載の方法。
- 前記フォルトを形成する工程はオペレーティング・システム・ソフトウェア・ルーチンへトラップすることによって実現される請求項11に記載の方法。
- 仮想ソース・ページ・アドレスに対する変換テーブル・エントリを備え、かつロード命令を処理する装置であって、
前記ロード命令がノン・フォルティング・ロード命令、あるいはノーマル・フォルティング・ロード命令のどちらであるのかを判定するロード・タイプ判定回路と、
ノーマル・フォルティング・ロード命令である前記ロード命令に応答して前記変換テーブル・エントリ内のノン・フォルト・オンリ・ビットが主張されているか否かをテストするテスト回路と、
前記ノン・フォルト・オンリ・ビットが主張されていないことが前記テスト回路によって確定された場合、仮想ソース・ページ・アドレスを物理ソース・ページ・アドレスへ翻訳する翻訳回路と、
前記ノン・フォルト・オンリ・ビットが主張されていることが前記テスト回路によって確定された場合、フォルトを形成するフォルト・ユニットと
を含む装置。 - 前記ノン・フォルト・オンリ・ビットが主張されていないことが前記テスト回路によって確定された場合、翻訳回路が仮想ソース・ページ・アドレスを物理ソース・ページ・アドレスへ翻訳した後で、前記ロード命令を実行する実行ユニットを含む請求項13に記載の装置。
- 前記フォルト・ユニットはオペレーティング・システム・ソフトウェア・ルーチンへのトラップを形成する請求項14に記載の装置。
- 仮想ソース・ページ・アドレスに対する変換テーブル・エントリを備え、かつロード命令を処理する装置であって、
前記ロード命令がノン・フォルティング・ロード命令であるか否かをテストする第1のテスト回路と、
前記ロード命令がノン・フォルティング・ロード命令であることと、前記ノン・フォルト・オンリ・ビットが主張されておらず、かつ前記ロード命令がノン・フォルティング・ロード命令でないことのうちのいずれか一方が生じた際に、仮想ソース・ページ・アドレスを物理ソース・ページ・アドレスへ翻訳する翻訳回路と、
前記ロード命令がノン・フォルティング・ロード命令でない場合、変換テーブル・エントリ内のノン・フォルト・オンリ・ビットが主張されているか否かをテストする第2のテスト回路と、
前記ノン・フォルト・オンリ・ビットが主張され、かつ前記ロード命令がノン・フォルティング・ロード命令でない場合、フォルトを形成するフォルト・ユニットと
を含む装置。 - 前記仮想ソース・ページ・アドレスを物理ソース・ページ・アドレスへ翻訳した後で、前記ロード命令を実行する実行ユニットを含む請求項16に記載の装置。
- 前記フォルト・ユニットはオペレーティング・システム・ソフトウェア・ルーチンへのトラップを形成する請求項17に記載の装置。
- 変換テーブルをロード命令の処理中に維持する方法であって、
前記ロード命令が要求する仮想アドレスが違法であるか否かをテストする工程と、
前記ロード命令がノン・フォルティング・ロード命令であるか否かをテストする工程と、
前記仮想アドレスが違法であって、かつ前記ロード命令がノン・フォルティング・ロード命令である場合、主張されたノン・フォルト・オンリ・ビットを備えた仮想アドレスに対する変換テーブル・エントリを形成する工程と
を含む方法。 - 前記変換テーブル・エントリは仮想アドレスがゼロを含む物理アドレスをマップするように形成されている請求項19に記載の方法。
- 変換索引バッファを前記変換テーブル・エントリで満たす工程を含む請求項20に記載の方法。
- 前記変換テーブル・エントリは仮想アドレスのページに対して適用される請求項19に記載の方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/395,579 US5842225A (en) | 1995-02-27 | 1995-02-27 | Method and apparatus for implementing non-faulting load instruction |
| US08/395579 | 1995-02-27 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH08292886A JPH08292886A (ja) | 1996-11-05 |
| JP3745819B2 true JP3745819B2 (ja) | 2006-02-15 |
Family
ID=23563628
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP03366996A Expired - Lifetime JP3745819B2 (ja) | 1995-02-27 | 1996-02-21 | ノン・フォルティング・ロード命令をインプリメントする方法及び装置 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US5842225A (ja) |
| EP (1) | EP0729103B1 (ja) |
| JP (1) | JP3745819B2 (ja) |
| KR (1) | KR100421749B1 (ja) |
| DE (1) | DE69634315T2 (ja) |
Families Citing this family (24)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6434667B1 (en) | 1999-06-25 | 2002-08-13 | International Business Machines Corporation | Layered local cache with imprecise reload mechanism |
| US6463507B1 (en) | 1999-06-25 | 2002-10-08 | International Business Machines Corporation | Layered local cache with lower level cache updating upper and lower level cache directories |
| US6418513B1 (en) | 1999-06-25 | 2002-07-09 | International Business Machines Corporation | Queue-less and state-less layered local data cache mechanism |
| US6397300B1 (en) | 1999-06-25 | 2002-05-28 | International Business Machines Corporation | High performance store instruction management via imprecise local cache update mechanism |
| US6385694B1 (en) | 1999-06-25 | 2002-05-07 | International Business Machines Corporation | High performance load instruction management via system bus with explicit register load and/or cache reload protocols |
| US6446166B1 (en) | 1999-06-25 | 2002-09-03 | International Business Machines Corporation | Method for upper level cache victim selection management by a lower level cache |
| US6405285B1 (en) | 1999-06-25 | 2002-06-11 | International Business Machines Corporation | Layered local cache mechanism with split register load bus and cache load bus |
| US6684254B1 (en) | 2000-05-31 | 2004-01-27 | International Business Machines Corporation | Hyperlink filter for “pirated” and “disputed” copyright material on the internet in a method, system and program |
| US6785796B1 (en) | 2000-08-01 | 2004-08-31 | Sun Microsystems, Inc. | Method and apparatus for software prefetching using non-faulting loads |
| US7689782B1 (en) * | 2003-08-04 | 2010-03-30 | Azul Systems, Inc. | Processor instruction used to determine whether to perform a memory-related trap |
| US8108628B2 (en) * | 2003-08-04 | 2012-01-31 | Azul Systems, Inc. | Processor instruction used to perform a matrix test to generate a memory-related trap |
| US7206916B2 (en) * | 2004-03-08 | 2007-04-17 | Sun Microsystems, Inc. | Partial address compares stored in translation lookaside buffer |
| US7418582B1 (en) | 2004-05-13 | 2008-08-26 | Sun Microsystems, Inc. | Versatile register file design for a multi-threaded processor utilizing different modes and register windows |
| US7290116B1 (en) | 2004-06-30 | 2007-10-30 | Sun Microsystems, Inc. | Level 2 cache index hashing to avoid hot spots |
| US7571284B1 (en) | 2004-06-30 | 2009-08-04 | Sun Microsystems, Inc. | Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor |
| US7366829B1 (en) | 2004-06-30 | 2008-04-29 | Sun Microsystems, Inc. | TLB tag parity checking without CAM read |
| US7543132B1 (en) | 2004-06-30 | 2009-06-02 | Sun Microsystems, Inc. | Optimizing hardware TLB reload performance in a highly-threaded processor with multiple page sizes |
| US7509484B1 (en) | 2004-06-30 | 2009-03-24 | Sun Microsystems, Inc. | Handling cache misses by selectively flushing the pipeline |
| US7681188B1 (en) * | 2005-04-29 | 2010-03-16 | Sun Microsystems, Inc. | Locked prefetch scheduling in general cyclic regions |
| US7734842B2 (en) * | 2006-03-28 | 2010-06-08 | International Business Machines Corporation | Computer-implemented method, apparatus, and computer program product for managing DMA write page faults using a pool of substitute pages |
| US8589738B2 (en) * | 2009-05-05 | 2013-11-19 | Freescale Semiconductor, Inc. | Program trace message generation for page crossing events for debug |
| US8438547B2 (en) * | 2009-05-05 | 2013-05-07 | Freescale Semiconductor, Inc. | Address translation trace message generation for debug |
| GB2479780B (en) * | 2010-04-22 | 2018-04-04 | Advanced Risc Mach Ltd | Preload instruction control |
| US9223663B2 (en) * | 2012-06-22 | 2015-12-29 | International Business Machines Corporation | Resolving memory faults with reduced processing impact |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4410941A (en) * | 1980-12-29 | 1983-10-18 | Wang Laboratories, Inc. | Computer having an indexed local ram to store previously translated virtual addresses |
| US5237668A (en) * | 1989-10-20 | 1993-08-17 | International Business Machines Corporation | Process using virtual addressing in a non-privileged instruction to control the copying of a page of data in or between multiple media |
| CA2029628A1 (en) * | 1989-11-13 | 1991-05-14 | Anantakotirajv Vagesna | Translation look aside buffer with parallel exception checking and update bypass |
| US5530839A (en) * | 1991-09-05 | 1996-06-25 | Nec Corporation | Apparatus for checking access rights |
| US5479628A (en) * | 1993-10-12 | 1995-12-26 | Wang Laboratories, Inc. | Virtual address translation hardware assist circuit and method |
| US5623636A (en) * | 1993-11-09 | 1997-04-22 | Motorola Inc. | Data processing system and method for providing memory access protection using transparent translation registers and default attribute bits |
-
1995
- 1995-02-27 US US08/395,579 patent/US5842225A/en not_active Expired - Lifetime
-
1996
- 1996-02-21 JP JP03366996A patent/JP3745819B2/ja not_active Expired - Lifetime
- 1996-02-22 EP EP96630012A patent/EP0729103B1/en not_active Expired - Lifetime
- 1996-02-22 DE DE69634315T patent/DE69634315T2/de not_active Expired - Fee Related
- 1996-02-27 KR KR1019960005517A patent/KR100421749B1/ko not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JPH08292886A (ja) | 1996-11-05 |
| EP0729103B1 (en) | 2005-02-09 |
| EP0729103A2 (en) | 1996-08-28 |
| US5842225A (en) | 1998-11-24 |
| DE69634315T2 (de) | 2006-01-19 |
| KR960032184A (ko) | 1996-09-17 |
| KR100421749B1 (ko) | 2004-05-17 |
| DE69634315D1 (de) | 2005-03-17 |
| EP0729103A3 (en) | 1998-12-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3745819B2 (ja) | ノン・フォルティング・ロード命令をインプリメントする方法及び装置 | |
| US6549985B1 (en) | Method and apparatus for resolving additional load misses and page table walks under orthogonal stalls in a single pipeline processor | |
| US5421022A (en) | Apparatus and method for speculatively executing instructions in a computer system | |
| US6581151B2 (en) | Apparatus and method for speculatively forwarding storehit data based on physical page index compare | |
| US6351789B1 (en) | Built-in self-test circuit and method for validating an associative data array | |
| US6615300B1 (en) | Fast look-up of indirect branch destination in a dynamic translation system | |
| US6944718B2 (en) | Apparatus and method for speculative prefetching after data cache misses | |
| US7065632B1 (en) | Method and apparatus for speculatively forwarding storehit data in a hierarchical manner | |
| US5428807A (en) | Method and apparatus for propagating exception conditions of a computer system | |
| US6631460B1 (en) | Advanced load address table entry invalidation based on register address wraparound | |
| US5915117A (en) | Computer architecture for the deferral of exceptions on speculative instructions | |
| US7269718B2 (en) | Method and apparatus for verifying data types to be used for instructions and casting data types if needed | |
| US8667258B2 (en) | High performance cache translation look-aside buffer (TLB) lookups using multiple page size prediction | |
| US20080229156A1 (en) | Method and Apparatus for Hardware Awareness of Data Types | |
| JP6874264B2 (ja) | ベクトルアトミックメモリ更新命令 | |
| JP2001507151A (ja) | 先進のマイクロプロセッサのためのゲート格納バッファ | |
| US7020766B1 (en) | Processing essential and non-essential code separately | |
| US20020010851A1 (en) | Emulated branch effected by trampoline mechanism | |
| US5946718A (en) | Shadow translation look-aside buffer and method of operation | |
| JP4137735B2 (ja) | 動的遅延演算情報を使用して制御投機ロードの即時遅延を制御する方法およびシステム | |
| US6820254B2 (en) | Method and system for optimizing code using an optimizing coprocessor | |
| US6704861B1 (en) | Mechanism for executing computer instructions in parallel | |
| US8683178B2 (en) | Sharing a fault-status register when processing vector instructions | |
| US20050251706A1 (en) | Method and apparatus for data-aware hardware operations | |
| US5613081A (en) | Method of operating a data processor with rapid address comparison for data forwarding |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050307 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050315 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050615 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050712 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051007 |
|
| 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: 20051101 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051118 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091202 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101202 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111202 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111202 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121202 Year of fee payment: 7 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
| S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
| S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121202 Year of fee payment: 7 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121202 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131202 Year of fee payment: 8 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| EXPY | Cancellation because of completion of term |