JPH1055281A - 非セグメント化仮想アドレス空間を備えるマイクロプロセッサによってセグメント化仮想アドレス空間をエミュレートするシステムおよび方法 - Google Patents

非セグメント化仮想アドレス空間を備えるマイクロプロセッサによってセグメント化仮想アドレス空間をエミュレートするシステムおよび方法

Info

Publication number
JPH1055281A
JPH1055281A JP9060197A JP6019797A JPH1055281A JP H1055281 A JPH1055281 A JP H1055281A JP 9060197 A JP9060197 A JP 9060197A JP 6019797 A JP6019797 A JP 6019797A JP H1055281 A JPH1055281 A JP H1055281A
Authority
JP
Japan
Prior art keywords
virtual address
linear
segmentation
address translation
segment
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.)
Pending
Application number
JP9060197A
Other languages
English (en)
Inventor
Paul H Hohensee
ポール・エイチ・ホーヘンシー
David Dice
デイヴィッド・ダイス
Robert G Vandette
ロバート・ジィ・ヴァンデット
David L Reese
デイヴィッド・エル・リース
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH1055281A publication Critical patent/JPH1055281A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】 セグメント化仮想アドレス空間内のセグメン
ト化仮想アドレスを線形仮想アドレス空間内の線形仮想
アドレスに変換するためにセグメント化−線形・仮想ア
ドレス変換命令を処理するプロセッサを提供する。 【解決手段】 セグメント化仮想アドレス空間はそれぞ
れが1つのセグメントIDによって識別される複数のセ
グメントを含み、各セグメントは1つのページIDによ
って識別される少なくとも1つのページを含む。線形仮
想アドレス空間はそれぞれが1つのページIDによって
識別される複数のページを含む。セグメント化−線形・
仮想アドレス変換命令を処理する際に、プロセッサは、
それぞれがセグメント化仮想アドレス空間内の1つのペ
ージに関連する複数のセグメント化−線形・仮想アドレ
ス変換記述子を使用する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般にディジタル
・コンピュータ・システムに関し、より具体的には非セ
グメント化線形仮想アドレス空間を備えるマイクロプロ
セッサによるセグメント化仮想アドレス空間の効率のよ
いエミュレーションを促進するためのシステムおよび方
法に関する。
【0002】
【従来の技術】ディジタル・コンピュータは多種多様な
タイプのプログラムを処理するが、各プログラムはコン
ピュータが特定のデータ要素に関して特定の操作を実行
できるようにする一連の命令を含んでいる。ディジタル
・コンピュータ・システムで使用するために様々なタイ
プのプロセッサが入手可能であるが、各タイプのプロセ
ッサは、とりわけ、そのアーキテクチャに応じて構築さ
れたプロセッサが実行すると思われる1組の命令、様々
な命令のフォーマット(複数も可)、処理可能なデータ
のタイプとフォーマット、命令処理中に使用可能な様々
なレジスタの定義、コンピュータのメモリ内の情報にア
クセスする方法、そのアーキテクチャに応じて構築され
たプロセッサが命令処理中に検出可能な例外条件を処理
する方法を記述するアーキテクチャに応じて構築されて
いる。
【0003】「エミュレート済みプロセッサ」としての
あるタイプのプロセッサを「ホスト・プロセッサ」とし
ての別のタイプのプロセッサによってエミュレートでき
るようにすることが望ましい場合が多い。一般に、ホス
ト・プロセッサは、エミュレート済みプロセッサによっ
て生成されると思われる出力に効率よく調和する出力を
生成するためにエミュレート済みプロセッサ用に作成さ
れたプログラムを処理することにより、エミュレート済
みプロセッサをエミュレートする。一般に、エミュレー
ションは、エミュレート済みプロセッサによる実行のた
めに生成されたプログラム(「元の」プログラム)をホ
スト・プロセッサによって処理可能なプログラム(「変
換済み」プログラム)に変換することによって行われ
る。この変換プロセスは、元のプログラムの命令および
その他の要素からホスト・プロセッサのアーキテクチャ
に基づく命令およびその他の要素を生成し、それにより
変換済みプログラムを提供することなどを含むこともで
きる。この変換は、たとえば、ホスト・プロセッサその
もの、同一コンピュータ・システム内の別のプロセッ
サ、または別のコンピュータ・システムによって実行す
ることができ、変換プログラムの制御下でプログラムを
処理するはずのホスト・プロセッサが使用できるように
することができる。変換を実行する際に、元のプログラ
ム(すなわち、エミュレート済みプロセッサのアーキテ
クチャに基づくプログラム)中の各命令あるいは一連の
命令または各種命令グループを、ホスト・プロセッサに
よる処理用の1つの命令あるいは一連の命令または1つ
の命令グループに変換することができる。通常、変換プ
ロセスは、プロセッサが元のプログラムの処理を開始し
たときに元のプログラムのすべての部分または指定の部
分について実行されるが、処理が進行するにつれて元の
プログラムのうちの1つの命令または1つの命令グルー
プを変換できることに留意されたい。さらに、エミュレ
ート済みプロセッサのデータ・フォーマットがホスト・
プロセッサによって直接使用可能ではない場合、そのデ
ータを処理し、エミュレート済みプロセッサのフォーマ
ットからホスト・プロセッサによって使用可能なフォー
マットに変換することができる。
【0004】前述のように、アーキテクチャ定義は、そ
のアーキテクチャに応じて構築されたプロセッサがコン
ピュータのメモリ内の情報にアクセスする方法に関する
記述を含む。プログラム開発者のためにメモリの管理を
単純化するため、さらにマイクロプロセッサが複数のプ
ログラムを同時に処理したときにプログラムが互いに干
渉しないようにするために、最新のマイクロプロセッサ
およびオペレーティング・システムでは各プログラムご
とに「コンテキスト」を用意し、様々なコンテキストに
よってそれぞれの「仮想アドレス空間」が定義されてい
る。プログラムがメモリ内の記憶位置へのアクセスを必
要とする場合、それ(プログラム)は、仮想アドレス空
間内の仮想アドレスをマイクロプロセッサ(より一般的
には、マイクロプロセッサに関連するメモリ管理ユニッ
ト)に与え、マイクロプロセッサは、仮想アドレス空間
内の仮想アドレスに対応するメモリ内の位置の実際の物
理アドレスを決定する。メモリ管理ユニットは、仮想ア
ドレスから物理アドレスへの変換操作の実行に加え、プ
ログラムがその位置に関して必要なアクセス操作を実行
できることを確認するための検査操作を実行する。
【0005】現在は8086、8088、80286、
80386、80486、「Pentium」系列のマ
イクロプロセッサを含む、インテル社のx86系マイク
ロプロセッサなどの一部のマイクロプロセッサでは、仮
想アドレス空間がセグメント化される。すなわち、プロ
グラムによって与えられる1つのアドレスが複数のセグ
メントのうちの1つを定義し、様々なセグメントが単一
の「セグメント化」仮想アドレス空間の様々な領域を占
有する。単一の仮想アドレス空間が設けられているが、
様々なセグメント内の位置を表す仮想アドレスだけにア
クセスすることができる。その他のマイクロプロセッサ
では、仮想アドレス空間がセグメント化されないが、ど
のアドレスでも仮想アドレス空間内の位置を表すことが
できる。非セグメント化「線形」仮想アドレス空間を用
意するマイクロプロセッサがセグメント化仮想アドレス
空間を用意するインテル社のx86系などのマイクロプ
ロセッサをエミュレートできるようにする必要がある場
合、両方のマイクロプロセッサは同じような方法でメモ
リ管理を処理するわけではないので、問題が発生する。
【0006】
【発明が解決しようとする課題】本発明は、線形仮想ア
ドレス空間を備えているマイクロプロセッサによるセグ
メント化仮想アドレス空間の効率のよいエミュレーショ
ンを促進するための新規かつ改良されたシステムおよび
方法を提供する。
【0007】
【課題を解決するための手段】簡単に要約すると、本発
明は、「セグメント化」仮想アドレス空間内のセグメン
ト化仮想アドレスを「線形」仮想アドレス空間内の線形
仮想アドレスに変換するために単一のセグメント化−線
形・仮想アドレス変換命令を処理するプロセッサを提供
する。セグメント化仮想アドレス空間はそれぞれが1つ
のセグメントIDによって識別される複数のセグメント
を含み、各セグメントは1つのページIDによって識別
される少なくとも1つのページを含む。線形仮想アドレ
ス空間はそれぞれが1つのページIDによって識別され
る複数のページを含む。セグメント化−線形・仮想アド
レス変換命令を処理する際に、プロセッサは、それぞれ
がセグメント化仮想アドレス空間内の1つのページに関
連する複数のセグメント化−線形・仮想アドレス変換記
述子を使用し、各セグメント化−線形・仮想アドレス変
換記述子は線形仮想アドレス空間内のページのうちの1
つのページのページIDを識別する。セグメント化−線
形・仮想アドレス変換命令は、セグメント化仮想アドレ
ス空間内のセグメント化仮想アドレスIDを含む。セグ
メント化−線形・仮想アドレス変換命令を処理する際
に、プロセッサは、セグメント化−線形・仮想アドレス
変換命令内のセグメント化仮想アドレスIDを使用し
て、セグメント化−線形・仮想アドレス変換記述子の1
つを選択する。セグメント化−線形・仮想アドレス変換
記述子の選択後、プロセッサは、線形仮想アドレス空間
内の仮想アドレスを生成する際に、選択したセグメント
化−線形・仮想アドレス変換記述子からの線形仮想アド
レス空間のページIDと、セグメント化−線形・仮想ア
ドレス変換命令内のセグメント化仮想アドレスIDとを
使用する。したがって、プロセッサは、単一のセグメン
ト化−線形・仮想アドレス変換命令を処理することによ
り、セグメント化仮想アドレス空間内の仮想アドレスか
ら線形仮想アドレス空間内の仮想アドレスを生成するこ
とができる。
【0008】特許請求の範囲の特殊性によって本発明を
示す。本発明の上記およびその他の利点は、添付図面に
関連して以下の説明を参照することにより、十分に理解
できるだろう。
【0009】
【発明の実施の形態】図1は、本発明に応じて構築され
たセグメント化仮想アドレス・エミュレータ50を含む
ディジタル・コンピュータ・システム10の機能ブロッ
ク図である。図1を参照すると、ディジタル・コンピュ
ータ・システム10は、メモリ管理ユニット14により
メモリ・サブシステム12および1つまたは複数の入出
力サブシステム(全体を参照番号13で示す)とやりと
りするマイクロプロセッサ11を含む。メモリ・サブシ
ステム12は、マイクロプロセッサ11によって処理す
べきデータと命令(ここではまとめて「情報」という)
を格納可能ないくつかの物理アドレス可能記憶位置を含
む。さらに、マイクロプロセッサ11は、データの処理
後、格納のために処理済みデータをメモリ・サブシステ
ム12に転送することができる。
【0010】ディジタル・コンピュータ・システム10
は、大容量記憶サブシステム、オペレータ入出力サブシ
ステム、ネットワーク・ポートなど、いくつかの多様な
タイプの入出力サブシステム13を含むことができる。
大容量記憶サブシステムは、一般に、マイクロプロセッ
サ11が処理する可能性のある情報を長期間格納するこ
とができる。また、大容量記憶サブシステムは、情報を
そこに格納したり、情報をそこから取り出すことが可能
な、ディスクまたはテープ・サブシステム、光ディスク
記憶装置、CD−ROM装置などの装置を含むことがで
きる。1つまたは複数の大容量記憶サブシステムは、オ
ペレータが取り外したり取り付けることができる取外し
可能記憶媒体を使用することができ、それにより、オペ
レータはディジタル・コンピュータ・システム10にプ
ログラムとデータをロードし、そこから処理済みデータ
を入手することができる。マイクロプロセッサ11によ
ってそれに供給される制御情報の制御下で、格納のため
に、大容量記憶サブシステムに格納された情報をメモリ
・サブシステム12に転送することができる。メモリ・
サブシステム12に情報を格納した後、マイクロプロセ
ッサ11は、処理のためにメモリ・サブシステム12か
らそれを取り出すことができる。処理済みデータの生成
後、マイクロプロセッサ11は、比較的長期間格納する
ために、大容量記憶サブシステムによってメモリ・サブ
システム12から処理済みデータを取り出すこともでき
る。
【0011】オペレータ入出力サブシステムは、一般
に、ディジタル・コンピュータ・システム10へのオペ
レータ・インタフェースを構成するものである。特に、
オペレータ入力サブシステムは、たとえば、キーボード
とマウス装置を含むことができ、オペレータはこれらを
使用して、処理のためにディジタル・コンピュータ・シ
ステム10に情報を対話式に入力することができる。さ
らに、オペレータ入力サブシステムは、それによりオペ
レータがディジタル・コンピュータ・システム10を制
御することができる機構を含むこともできる。オペレー
タ出力サブシステムは、ビデオ表示装置などの装置を含
むことができ、それにより、ディジタル・コンピュータ
・システム10はマイクロプロセッサ11の制御下で処
理の結果をオペレータに対して表示する。さらに、オペ
レータにハードコピー出力を供給するために、プリンタ
を設けることもできる。
【0012】ネットワーク・ポートは、ディジタル・コ
ンピュータ・システム10を通信リンクに接続できるよ
うにするものであり、それにより、コンピュータ・ネッ
トワークでコンピュータ・システム10を接続すること
ができる。ネットワーク・ポートにより、コンピュータ
・システム10は、ネットワーク内の他のコンピュータ
・システムおよび他の装置(図示せず)に情報(プログ
ラム命令とデータの両方を含む)を送り、それらから情
報を受けることができる。たとえば、クライアントサー
バ・パラダイムにより編成された典型的なネットワーク
では、ネットワーク内の所与のコンピュータ・システム
がサーバとして指定され、これが残りのクライアント・
コンピュータ・システムによる処理のために情報を格納
し、それにより、クライアント・コンピュータ・システ
ムが都合よく情報を共用することができる。特定のサー
バによって管理されている情報へのアクセスを必要とす
るクライアント・コンピュータ・システムにより、サー
バはネットワークを介してそれに情報をダウンロードで
きるようになる。データの処理後、クライアント・コン
ピュータ・システムは、格納のために処理済みデータを
サーバに返すこともできる。ネットワークは、コンピュ
ータ・システム(上記のサーバとクライアントを含む)
に加え、プリンタやファクシミリ装置、ディジタル・オ
ーディオ/ビデオ記憶分配装置なども含むことができる
が、これらはネットワーク内に接続された様々なコンピ
ュータ・システム間で共用することができる。ネットワ
ーク内のコンピュータ・システムを相互接続する通信リ
ンクは、従来通り、コンピュータ・システム間で信号を
伝達するためのワイヤ、光ファイバ、その他の媒体を含
む、都合のよい情報伝達媒体を含むことができる。コン
ピュータ・システムは、通信リンクを介して転送された
メッセージにより、ネットワークを介して情報を転送す
るが、各メッセージはそのメッセージを受信するための
装置を識別するIDと情報を含む。
【0013】従来通り、それぞれの入出力サブシステム
13は、通常、それぞれの入出力サブシステム13によ
って実行される操作を制御し、その動作状況を示すため
に使用する制御情報、状況情報、その他の情報を格納す
る、レジスタおよびその他のデータ記憶要素(図示せ
ず)を含む。マイクロプロセッサ11は、メモリ・サブ
システム12に情報を格納するのと同様の方法でレジス
タおよびその他のデータ記憶要素に情報を格納し、それ
により、それぞれの入出力サブシステム13を制御する
ことができる。同様に、マイクロプロセッサ11は、メ
モリ・サブシステム12内の情報を取り出すのと同様の
方法で入出力サブシステム13に収容された情報を取り
出し、それぞれの入出力サブシステム13の動作状況を
確認することができる。
【0014】メモリ管理ユニット14は、いくつかの操
作を実行する。特に、メモリ管理ユニット14は、通
常、メモリ・キャッシュを含み、これはメモリ・サブシ
ステム12からマイクロプロセッサ11が要求した情報
をキャッシュする。さらに、通常通り、マイクロプロセ
ッサ11がメモリ・サブシステム12などから取り出す
べき情報を要求するか、またはメモリ・サブシステム1
2などに格納するために処理済みデータを与えると、マ
イクロプロセッサ11は、仮想アドレス空間内のアドレ
スをメモリ管理ユニット14に供給する。マイクロプロ
セッサ11が処理する様々なアプリケーション・プログ
ラムに対して、それぞれの仮想アドレス空間を用意する
ことができる。この仮想アドレス空間は複数の「ペー
ジ」に分割され、そのそれぞれは指定の数の仮想アドレ
ス可能記憶位置を含み、それぞれの仮想アドレス可能記
憶位置が情報を格納する。アプリケーション・プログラ
ムの仮想アドレス空間のページは通常、大容量記憶サブ
システム上に格納されるので、処理中に必要になると、
マイクロプロセッサ11により、個々のページをメモリ
・サブシステム12にコピーすることができ、処理中に
変更されたページについては、マイクロプロセッサ11
により、長期間の格納のためにそのページを大容量記憶
サブシステムにコピーすることができる。
【0015】仮想アドレス空間のそれぞれのページは、
物理アドレスによって識別されるメモリ・サブシステム
12内の物理位置に簡潔に格納することができ、マイク
ロプロセッサ11からの要求に応答して特定の仮想アド
レス空間位置に関するアクセス操作(すなわち、特定の
物理位置での情報の取出しまたは格納)を実行する際
に、メモリ管理ユニット14は、メモリ・サブシステム
12に関するアクセス操作の実行時に使用するための物
理アドレスを入手するために仮想アドレスの変換を実行
する。さらに、メモリ管理ユニット14は、そのページ
がメモリ・サブシステム12に入っているかどうか、ア
プリケーション・プログラムがそのページへのアクセス
(すなわち、データからの読取りまたはデータへの書込
み)を行うための許可を備えているかどうか、要求され
たページが仮想アドレス空間内に有効ページであるかど
うかなどを判定するための検査を含む、いくつかの検査
操作を実行することができる。メモリ管理ユニット14
が検査操作で否定的な判定を行った場合、すなわち、そ
のページがメモリ・サブシステム12に入っていないと
か、アプリケーション・プログラムが適切なアクセス許
可を備えていないとか、または仮想アドレス空間ページ
の要求されたページがアプリケーション・プログラムの
仮想アドレス空間内の有効ページではないなどと判定さ
れた場合、メモリ管理ユニット14はACCESS F
AULT表示を生成することができるが、これはマイク
ロプロセッサ11が受信し、指定の障害処理操作の実行
時に使用できるものである。
【0016】一実施形態のシステム10で有用なマイク
ロプロセッサ11は、SPARCInternatio
nal, Inc [David L. Weaver
およびTom Germond (eds)]によるT
he SPARC Architecture Man
ual Version 9 (Prentice−H
all, 1944)(以下「SPARCアーキテクチ
ャ・マニュアル、バージョン9」という)に記載された
SPARCバージョン9アーキテクチャに応じて構築さ
れたマイクロプロセッサを含む。一般に、マイクロプロ
セッサ11は、レジスタ・セット20と、1つまたは複
数の機能ユニット21と、バス・インタフェース22
と、制御回路23とを含む、いくつかの要素を含む。制
御回路23は、プログラムによって提供される命令の制
御下でマイクロプロセッサ11によって実行される処理
操作を制御する。一般に、バス・インタフェース22
は、制御回路23の制御下で、メモリ管理ユニット14
と協調して、処理のために特定の入出力サブシステム1
3によって管理されているデータ記憶要素、またはメモ
リ・サブシステム12から命令とデータを取り出し、取
り出したデータをレジスタ・セット20内のレジスタに
ロードする。また、機能ユニット21も制御回路23の
制御下で、制御回路23がレジスタ・セット20から転
送できるデータに関する論理操作、整数および浮動小数
点算術操作、その他の処理操作を実行し、処理済みデー
タを生成して、格納のためにレジスタ・セット20に転
送する。また、制御回路23により、バス・インタフェ
ース22は、同じくメモリ管理ユニット14と協調して
格納のためにレジスタ・セット20から特定の入出力サ
ブシステム13によって管理されているデータ記憶要素
またはメモリ・サブシステム12に処理済みデータを転
送することができる。
【0017】さらに、本発明によれば、マイクロプロセ
ッサ11によって提供される機能ユニット21の1つ、
すなわち、セグメント化仮想アドレス・エミュレータ5
0は、後述するようにセグメント化仮想アドレス・アー
キテクチ内の仮想アドレスを線形仮想アドレス・アーキ
テクチャの仮想アドレスに変換するためにプログラムに
よって提供可能なセグメント化−線形・仮想アドレス変
換命令を処理する。一実施形態のセグメント化仮想アド
レス・エミュレータ50は、インテル社のx86系のマ
イクロプロセッサ(現在はインテル社の8086、80
88、80286、80386、80486、「Pen
tium」系列のマイクロプロセッサを含む)を含むマ
イクロプロセッサによって提供されるセグメント化仮想
アドレス空間など、セグメント化仮想アドレス空間に関
連するプログラムの効率のよいエミュレーションを促進
するものであり、そのエミュレーションは、非セグメン
ト化または「線形」仮想アドレス空間を使用するマイク
ロプロセッサ11などのマイクロプロセッサによって実
行される。次にセグメント化仮想アドレス空間エミュレ
ーションは、マイクロプロセッサ11によりx86系の
マイクロプロセッサ用に作成されたプログラムの効率の
よいエミュレーションの促進を支援する。線形仮想アド
レス空間アーキテクチャを特徴とするマイクロプロセッ
サ11はここでは「ホスト」マイクロプロセッサ11と
呼び、セグメント化仮想アドレス空間アーキテクチャを
特徴とするマイクロプロセッサはここでは「エミュレー
ト済み」マイクロプロセッサと呼ぶ。同様に、エミュレ
ート済みマイクロプロセッサ用に作成したプログラム
(複数も可)はここでは「元のプログラム(複数も
可)」と呼び、元のプログラム(複数も可)のエミュレ
ーション時にホスト・マイクロプロセッサによって処理
するために生成したプログラム(複数も可)はここでは
「変換済みプログラム(複数も可)」と呼ぶ。
【0018】先に進む前に、セグメント化仮想アドレス
空間例のアドレスをメモリ・アクセスに使用する物理ア
ドレスに変換するための構成の概略を説明すると、役に
立つと思われる。ここで説明する構成は、図2に概略を
示すが、x86アーキテクチャに応じて構築されたマイ
クロプロセッサによって処理すべきプログラムに関して
使用される。図2を参照すると、1つのセグメント化仮
想アドレス空間がいくつかのセグメントから形成され、
そのそれぞれはセグメント・レジスタ30内のセグメン
ト・レジスタ30(0)〜30(M)(一般に参照番号
30(m)で示す)に関連している。たとえば、x86
アーキテクチャでは、通常、プログラム命令コードを格
納するために使用可能なコード・セグメントと、通常、
プログラム・データを格納するために使用可能なデータ
・セグメントと、通常、アプリケーション・プログラム
が使用するスタック(複数も可)を格納するために使用
可能なスタック・セグメントと、アプリケーション・プ
ログラムがアレイや一時データ構造の格納など、その他
の目的に使用できる3つの余分なセグメント(「E
S」、「FS」、「GS」)とを含む、6つのセグメン
ト(すなわち、M=5)が存在する。このアーキテクチ
ャの各セグメント・レジスタ30(m)は、全セグメン
トのうちの特定の1つに関連付けられ、その特定のセグ
メント用の記述子ポインタを含むことになり、その結
果、セグメント・レジスタ30(0)はコード・セグメ
ント用の記述子ポインタを含むことができ、セグメント
・レジスタ(1)はデータ・セグメント用の記述子ポイ
ンタを含むことができ、セグメント・レジスタ30
(2)はスタック・セグメント用の記述子ポインタを含
むことができ、その他のセグメント・レジスタ30
(3)〜30(M)はその他のセグメント用の記述子ポ
インタを含むことになる。
【0019】各セグメント・レジスタ30(m)は、セ
グメント記述子テーブル31内の複数のセグメント記述
子31(0)〜31(N)(一般に参照番号31(n)
で示す)のうちの1つを識別するポインタを含む。一般
に、セグメント記述子テーブル31内の各セグメント記
述子31(n)は、アクセス権フィールド32(n)
と、セグメント長フィールド33(n)と、セグメント
基底アドレス・フィールド34(n)とを含む3つのフ
ィールドを含んでいる。アクセス権フィールド32
(n)はアクセス権情報を含むが、その使い方について
は後述する。セグメント基底アドレス・フィールド34
(n)はセグメント基底仮想アドレスを含み、セグメン
ト長フィールド33(n)はセグメント長値を含むが、
いずれもセグメント化仮想アドレス空間内の特定のセグ
メントを定義するように機能する。それぞれのセグメン
ト記述子テーブル31内の記述子31(n)はオペレー
ティング・システム(図示せず)によって管理されるこ
とが好ましく、各セグメント・レジスタ30(m)内で
管理される特定の記述子ポインタ値もオペレーティング
・システムによって制御されることが好ましい。
【0020】メモリ・アクセス操作が開始されると、図
2に示す構造を有するアドレスが供給されるが、図2に
示す各種要素はそのアドレスを使用してセグメント化仮
想アドレスに変換し、メモリにアクセスするためにセグ
メント化仮想アドレスから物理アドレスに変換する。図
2に示すように、アドレス(アドレス・レジスタ35に
例示する)は、セグメントID部分36とオフセット部
分37とを含む。セグメントID部分36はそのアドレ
スが参照する特定のセグメントを識別し、オフセット部
分37はセグメントへのオフセット値を含む。セグメン
トID部分36は特定のセグメント・レジスタ30
(m)を選択する(矢印40が表す通り)ために使用す
るが、そのレジスタの内容はセグメント化仮想アドレス
の生成時に使用すべき特定のセグメント記述子31
(n)を選択する(矢印41が表す通り)ために記述子
ポインタとして使用する。指定の記述子31(n)のセ
グメント基底アドレス・フィールド34(n)からの基
底アドレスは加算器42に結合され、セグメント長フィ
ールド33(n)からのセグメント長値は比較器43の
1つの入力に結合される。
【0021】そのアドレスのオフセット部分37は、そ
のセグメントの基底からメモリ・アクセス操作で使用す
べきセグメントへのオフセットを表すので、セグメント
基底アドレス・フィールド34(n)からのセグメント
基底アドレス値とともに、加算器42のそれぞれの入力
に結合される。加算器42はオフセットとセグメント基
底アドレス値との合計に対応する値を生成するが、この
値は、レジスタ35内のアドレスによって表されるセグ
メント化仮想アドレス空間内の位置を識別するセグメン
ト化仮想アドレスSEG VIRT ADRSに対応す
る。次に、セグメント化仮想アドレスは仮想アドレス変
換器44に結合され、その変換器は従来通りセグメント
化仮想アドレスを物理アドレスに変換する。
【0022】セグメント記述子31(n)のフィールド
33(n)内のセグメント長値が定義するように、セグ
メント化仮想アドレスがそのセグメントの終わりを越え
るアドレスを表していないことを確認するため、それ
(フィールド33(n)からのセグメント長値)とオフ
セット部分37は比較器43のそれぞれの入力に結合さ
れる。次に比較器43は、オフセット部分37からのオ
フセット値をセグメント長フィールド33(n)からの
セグメント長値と比較する。オフセット部分37からの
オフセット値がセグメント長フィールド33(n)から
のセグメント長値と等しいかそれより小さいと比較器4
3が判定した場合、加算器42によって生成されたセグ
メント化仮想アドレスは、指定の記述子31(n)
(m)によって定義されるセグメント内にあるセグメン
ト化仮想アドレス空間内の位置を表す。これに対して、
オフセット部分37からのオフセット値がセグメント長
フィールド33(n)からのセグメント長値より大きい
と比較器43が判定した場合、加算器42によって生成
されたセグメント化仮想アドレスは、指定の記述子31
(n)(m)によって定義されるセグメントの終わりを
越える位置を表す。その場合、比較器43はSEG L
EN VIOLというセグメント長違反表示を生成する
が、その結果、セグメント長違反例外と、処理のための
オペレーティング・システムへのトラップが発生する可
能性がある。
【0023】上記のように、各セグメント記述子はアク
セス権フィールド32(n)も含んでいる。一般に、ア
クセス権フィールド32(n)は、メモリ・アクセスを
制御する際に有用なアクセス権情報を含んでいる。アプ
リケーション・プログラムによって開始されたアクセス
操作がアクセス権フィールド32(n)に示されている
アクセス権の範囲内である場合、アクセス操作を続行す
ることができる。これに対して、アクセス操作がアクセ
ス権フィールド32(n)に示されているアクセス権の
範囲内ではない場合、アクセス操作は続行されず、その
結果、アクセス権違反例外と、処理のためのオペレーテ
ィング・システムへのトラップが発生する可能性があ
る。x86アーキテクチャでは、特定のセグメントにア
プリケーション・プログラムがアクセスできるかまたは
オペレーティング・システムしかアクセスできないかを
制御し、アプリケーション・プログラムが特定のセグメ
ント内の記憶位置に情報を格納できるかどうかを制御す
るためにアクセス権を使用することができ、それによ
り、特定のアプリケーション・プログラムによるファイ
ルまたはファイルの一部分への読取り専用アクセスを促
進することができる。さらに、アクセス権を使用する
と、特定のセグメントが「実行専用」であることを示す
ことができるが、これにより、アプリケーション・プロ
グラムだけが取り出して実行できるプログラム・コード
がこのようなセグメントに含まれることを示すことがで
きる。
【0024】上記のように、本発明は、非セグメント化
または「線形」仮想アドレス空間を使用するマイクロプ
ロセッサによるセグメント化仮想アドレス空間の効率の
よいエミュレーションを促進するためにセグメント化−
線形・仮想アドレス変換命令を処理するように、機能ユ
ニット20の1つとしてセグメント化仮想アドレス・エ
ミュレータ50を提供する。本発明によるセグメント化
仮想アドレス・エミュレータ50を図3にブロック図形
式で示す。図3を参照すると、セグメント化仮想アドレ
ス・エミュレータ50は、キャッシュ51と、制御レジ
スタ52と、制御回路53と、比較器54、55、58
とを含む。一実施形態のセグメント化仮想アドレスは、
図2に関して前述したx86のセグメント化仮想アドレ
スに対応し、特に、加算器42(図2)によって生成さ
れる仮想アドレスに対応する。同じ実施形態の線形仮想
アドレスは、マイクロプロセッサがメモリ管理ユニット
14(図1)に与える線形仮想アドレス空間内のアドレ
スに対応する。セグメント化−線形・仮想アドレス変換
命令を処理する際に、セグメント化仮想アドレス・エミ
ュレータ50は、メモリ・サブシステム12(図1)の
ストア59に含まれるセグメント化−線形・仮想アドレ
ス空間変換情報を使用する。以下に概略を記載するよう
に、セグメント化−線形・仮想アドレス変換命令とセグ
メント化−線形・仮想アドレス空間変換情報はどちら
も、エミュレート済みマイクロプロセッサによる実行用
の元のプログラムをホスト・マイクロプロセッサ11に
よる実行用の変換済みプログラムに変換している間また
は変換済みプログラムの処理中に生成することができ
る。
【0025】先に進む前に、セグメント化−線形・仮想
アドレス変換命令、キャッシュ51、制御レジスタ5
2、制御回路53の構造について説明すると役に立つと
思われる。セグメント化−線形・仮想アドレス変換命令
は、参照番号110によって識別されるレジスタに入れ
てセグメント化仮想アドレス・エミュレータ50に供給
されるものとして図3に示されている。セグメント化−
線形・仮想アドレス変換命令は、命令IDフィールド1
11と、セグメント化仮想アドレス入力レジスタIDフ
ィールド112と、線形仮想アドレス・レジスタ出力レ
ジスタIDフィールド113と、セグメント・レジスタ
番号フィールド114と、2つのフラグ、すなわち、特
権フラグ115および書込みイネーブル・フラグ116
とを含む、いくつかのフィールドを含んでいる。命令I
Dフィールド111は、命令操作コードに対応する値を
含み、これはその命令をセグメント化−線形・アドレス
変換命令として識別するものである。セグメント化仮想
アドレス入力レジスタIDフィールド112は、レジス
タ・セット20内のレジスタの1つをセグメント化仮想
アドレス入力レジスタ56として識別するものであり、
これはセグメント化仮想アドレスを含んでいる。線形仮
想アドレス出力レジスタIDフィールド113は、レジ
スタ・セット20内のレジスタの1つを線形仮想アドレ
ス出力レジスタ57として識別するものであり、そこに
セグメント化仮想アドレス・エミュレータ50が線形仮
想アドレスを格納する。一般に、レジスタ・セット20
内のどのレジスタでも、セグメント化仮想アドレス入力
レジスタ56および線形仮想アドレス出力レジスタ57
として選択することができる。
【0026】命令入力レジスタ110のセグメント・レ
ジスタ番号フィールド114は、セグメント化仮想アド
レス入力レジスタ56がどのセグメントについて生成さ
れたのかを識別するセグメント番号を含んでいる。
【0027】命令入力レジスタ110内の特権フラグ1
15と書込みフラグ116は、セグメント化仮想アドレ
ス入力レジスタ56が表す位置にアクセスできるかどう
かを判定する際に使用するアクセス制御情報を含んでい
る。特権フラグ115は、命令入力レジスタ110によ
って開始されたセグメント化−線形・仮想アドレス変換
操作が、マイクロプロセッサ11によってエミュレート
中のアプリケーション・プログラムまたはオペレーティ
ング・システム、すなわち、x86系マイクロプロセッ
サ用に作成されたアプリケーション・プログラムと、そ
のアプリケーション・プログラムが作成されたオペレー
ティング・システムであって、同じくx86系マイクロ
プロセッサ用に作成されたプログラムでもあるオペレー
ティング・システムとによって開始された記憶操作の一
部であるかどうかを示すものである。このアプリケーシ
ョン・プログラムとオペレーティング・システムはどち
らもマイクロプロセッサ11によってエミュレートされ
る。書込みフラグ115は、命令入力レジスタ110に
よって開始されたセグメント化−線形・仮想アドレス変
換操作が、セグメント化仮想アドレス入力レジスタ56
内のセグメント化仮想アドレスによって表される位置に
情報を格納するような記憶操作の一部であるかどうかを
示すものである。
【0028】キャッシュ51は、セグメント化−線形・
仮想アドレス変換命令を処理する際に有用な、ストア5
9からのセグメント化−線形・仮想アドレス空間変換情
報をキャッシュするものである。キャッシュ51はいく
つかのキャッシュ項目51(0)〜51(N)(一般に
参照番号51(n)で示す)を含み、それぞれのキャッ
シュ項目は、セグメント化仮想アドレス空間の特定のペ
ージ用のセグメント化仮想アドレスを線形仮想アドレス
空間の1ページ用の線形仮想アドレスに変換する際に有
用な、ストア59からのセグメント化−線形・仮想アド
レス空間変換情報を1つずつ含んでいる。各項目51
(n)は、セグメント化仮想アドレス・タグ・フィール
ド60(n)と、コンテキストIDフィールド61
(n)と、セグメント・レジスタ番号フィールド62
(n)と、線形仮想アドレス(下位)フィールド63
(n)と、セグメント化仮想アドレス・ページ長レジス
タ64(n)とを含む、いくつかのフィールドを含んで
いる。キャッシュ51は本質的に連想メモリを形成し、
項目51(n)はセグメント化仮想アドレス入力レジス
タ56に格納されたセグメント化仮想アドレスの一部
分、特に、セグメント化仮想アドレス入力レジスタ56
のフィールド56(P)内のセグメント化仮想アドレス
空間ページID部分と、キャッシュ51の項目51
(n)のセグメント化仮想アドレス・タグ・フィールド
60(n)の内容との比較に基づいて使用される。前述
の線形仮想アドレスの場合と同様、セグメント化仮想ア
ドレス空間も複数のページに分割され、フィールド56
(P)内のページID部分はレジスタ56内の仮想アド
レス用のセグメント化仮想アドレス空間ページを識別す
る。項目51(n)のセグメント化仮想アドレス・タグ
・フィールド60(n)の内容がフィールド56(P)
内のセグメント化仮想アドレス空間ページIDに対応す
る場合、セグメント化−線形・仮想アドレス変換命令を
処理する際に使用するために項目51(n)が選択され
る。
【0029】これに対して、セグメント化仮想アドレス
入力レジスタ56のフィールド56(P)内のセグメン
ト化仮想アドレス空間ページIDがキャッシュ項目51
(n)のセグメント化仮想アドレス・タグ・フィールド
60(n)の内容に対応しない場合は、「キャッシュ・
ミス」条件が存在し、それに応答して制御回路53によ
り、マイクロプロセッサ11の他の構成要素は適切な情
報を取り出してキャッシュ51を更新することができ
る。キャッシュ51の更新に関連して実行する操作につ
いては、以下に概略を説明する。
【0030】キャッシュ項目51(n)のコンテキスト
IDフィールド61(n)は、項目51(n)内のセグ
メント化−線形・仮想アドレス変換情報が有効になるコ
ンテキストを示すコンテキストIDを含んでいる。マイ
クロプロセッサ11により、様々なエミュレート済みx
86プログラムに様々なセグメント化仮想アドレス空間
を割り当てることができ、それに対して次にそれぞれの
コンテキストID値が割り当てられる。現在マイクロプ
ロセッサ11がエミュレート中のx86プログラムに関
連するコンテキストは、制御レジスタ52に格納されて
いる。セグメント化−線形・仮想アドレス変換命令を処
理する際に、指定の項目51(n)(すなわち、項目5
1(n)のセグメント化仮想アドレス・タグ・フィール
ド60(n)の内容がセグメント化仮想アドレス入力レ
ジスタ56のフィールド56(P)内のセグメント化仮
想アドレス空間ページID部分に対応するような項目5
1(n))のコンテキストIDフィールド61(n)の
内容が、比較器54によって制御レジスタ52が識別す
る現行コンテキストと比較される。指定の項目のフィー
ルド61(n)内のコンテキストIDが制御レジスタ5
2に格納された現行コンテキストIDに対応すると比較
器54が判定した場合、セグメント化−線形・仮想アド
レス変換命令を処理する際に、項目51(n)に格納さ
れたセグメント化−線形・仮想アドレス空間変換情報が
使用される。
【0031】これに対して、コンテキストIDフィール
ド61(n)の内容によって現行コンテキストが識別さ
れない場合、項目51(n)に格納されたセグメント化
−線形・仮想アドレス空間変換情報は、マイクロプロセ
ッサ11が現在エミュレート中のx86プログラム用の
セグメント化仮想アドレス空間用としては正しくない。
その場合、比較器54はACC EXCアクセス例外条
件を示し、それに応答して制御回路53により、マイク
ロプロセッサ11の他の構成要素は、マイクロプロセッ
サが現在エミュレート中のx86プログラム用のセグメ
ント化仮想アドレス空間にとって適切な情報をストア5
9から取り出してキャッシュ51を更新することができ
る。
【0032】セグメント・レジスタ番号フィールド62
(n)は、フィールド60(n)内のセグメント化仮想
アドレス・ページID用のセグメントを識別する値を含
んでいる。セグメント化−線形・仮想アドレス変換命令
を処理する際に、命令からのセグメント・レジスタ番号
フィールド114からのセグメント・レジスタ番号値
と、指定の項目51(n)のフィールド62(n)から
のセグメント・レジスタ番号値とが比較器58によって
比較される。フィールド114および62(n)からの
セグメント・レジスタ番号値が同じであると比較器58
が判定した場合、指定の項目51(n)の内容はセグメ
ント化−線形・仮想アドレス変換命令で要求されたのと
同じセグメント用として生成されている。これに対し
て、フィールド114および62(n)からのセグメン
ト・レジスタ番号値が同じではないと比較器58が判定
した場合、指定の項目51(n)の内容はセグメント化
−線形・仮想アドレス変換命令で要求されたのと同じセ
グメント用として生成されていないので、比較器58は
セグメント・レジスタ番号例外表示を生成するが、これ
は制御回路53で受け、以下のように処理することがで
きる。
【0033】上記のように、各キャッシュ項目51
(n)は、セグメント化仮想アドレス・ページ長フィー
ルド64(n)をさらに含んでいる。通常、仮想アドレ
ス空間のページはいずれも均一サイズになるが、ロード
可能なセグメント化仮想アドレスが定義するようなセグ
メント化仮想アドレス空間では、1つのセグメントの最
後のページなどの1ページの一部分であるレジスタ56
を完全に満たすことはできない。たとえば、セグメント
記述子31(n)によって定義されたセグメントが記述
子のフィールド33(n)で定義されたセグメント長を
備えている場合で、しかもそのセグメントがセグメント
化仮想アドレス空間内の1ページ分の仮想アドレスの先
頭から始まる場合、最後のページは、セグメント長をセ
グメント化仮想アドレス・ページのサイズで割った商の
剰余に対応する複数の位置だけを定義することになる。
指定の項目51(n)のセグメント化仮想アドレス・ペ
ージ長フィールド64(n)は、セグメント化仮想アド
レス・ページ内の位置の数を識別する。
【0034】レジスタ56内のセグメント化仮想アドレ
スによって1ページの終わりを越える位置が識別されな
いことを確認するため、セグメント化仮想アドレス・レ
ジスタ56のセグメント化仮想アドレス・ページ長フィ
ールド64(n)とフィールド56(O)内のページ・
オフセット部分の内容が比較器55に結合される。フィ
ールド56(O)内のセグメント化仮想アドレス・ペー
ジ・オフセットの内容がセグメント化仮想アドレス・ペ
ージ長フィールド64(n)より大きいと比較器55が
判定した場合、セグメント仮想アドレス入力レジスタ5
6はセグメント化仮想アドレス空間を越える位置を識別
し、その場合、そのレジスタはPAGELEN VIO
Lというページ長違反表示を生成し、制御回路53は後
述するようにこの表示を使用することができる。
【0035】これに対して、フィールド56(O)内の
セグメント化仮想アドレス・ページ・オフセットの内容
がセグメント化仮想アドレス・ページ長フィールド64
(n)と等しいかまたはそれより小さいと比較器55が
判定した場合、セグメント仮想アドレス入力レジスタ5
6はセグメント化仮想アドレス空間内の有効な位置を識
別する。その場合、一実施形態の場合と同様に、線形仮
想アドレス空間内のページがセグメント化仮想アドレス
空間のページと同じであると、セグメント化−線形仮想
アドレス空間変換命令を処理する際にレジスタ56のセ
グメント化仮想アドレス・ページ・オフセット・フィー
ルド56(O)の内容を使用することができる。セグメ
ント化仮想アドレス空間のページ構造が線形仮想アドレ
ス空間のページ構造に似ている一実施形態では、フィー
ルド56(O)からのセグメント化仮想アドレス・ペー
ジ・オフセットをレジスタ57の線形仮想アドレス・ペ
ージ・オフセット・フィールド57(O)にコピーする
ことができる。
【0036】さらに、各項目51(n)は、2つのフラ
グ、すなわち、特権フラグ65(n)と書込みフラグ6
6(n)とを含む。指定のキャッシュ項目51(n)の
フラグ65(n)および66(n)は、制御回路53に
結合され、変換操作を続行できるかどうかを判定するた
めに命令110の特権フラグ115および書込みフラグ
116とともに使用される。特に特権フラグ65(n)
は、項目51(n)の内容によって表されるセグメント
化仮想アドレス空間のページがアプリケーション・プロ
グラム(すなわち、マイクロプロセッサ11がエミュレ
ート中のx86アプリケーション・プログラム)によっ
てアクセスできるか、またはオペレーティング・システ
ム(すなわち、マイクロプロセッサ11がエミュレート
中のx86アプリケーション・プログラム用のx86オ
ペレーティング・システム)によってのみアクセスでき
るかを示すものである。指定のキャッシュ項目51
(n)内の特権フラグ65(n)がクリアされ、項目5
1(n)に関連するセグメント化仮想アドレス空間ペー
ジがマイクロプロセッサ11によってエミュレート中の
x86アプリケーション・プログラムによってアクセス
可能であることを示している場合は、命令内の特権フラ
グ115の状態にかかわらず、セグメント化仮想アドレ
ス・エミュレータ50は、命令レジスタ110内の命令
によって開始されたセグメント化−線形・仮想アドレス
変換操作を実行することができる。これに対して、指定
のキャッシュ項目51(n)内の特権フラグ65(n)
が設定され、項目51(n)に関連するセグメント化仮
想アドレス空間ページがマイクロプロセッサ11によっ
てエミュレート中のx86オペレーティング・システム
によってのみアクセス可能であることを示している場合
は、命令内の特権フラグ115も設定されている場合の
み、セグメント化仮想アドレス・エミュレータ50は、
命令レジスタ110内の命令によって開始されたセグメ
ント化−線形・仮想アドレス変換操作を実行することが
できる。
【0037】書込みフラグ66(n)は、項目51
(n)の内容によって表されるセグメント化仮想アドレ
ス空間のページがマイクロプロセッサ11によってエミ
ュレート中のx86プログラムによって作成できるかど
うかを示すものである。指定のキャッシュ項目51
(n)内の書込みフラグ66(n)が設定され、項目5
1(n)に関連するセグメント化仮想アドレス空間ペー
ジがマイクロプロセッサ11によってエミュレート中の
x86アプリケーション・プログラムによって作成でき
ることを示している場合は、命令内の書込みフラグ11
6の状態にかかわらず、セグメント化仮想アドレス・エ
ミュレータ50は、命令レジスタ110内の命令によっ
て開始されたセグメント化−線形・仮想アドレス変換操
作を実行することができる。これに対して、指定のキャ
ッシュ項目51(n)内の書込みフラグ66(n)がク
リアされ、項目51(n)に関連するセグメント化仮想
アドレス空間ページがマイクロプロセッサ11によって
エミュレート中のx86プログラムによって作成できな
いことを示している場合は、命令内の書込みフラグ11
6もクリアされている場合のみ、セグメント化仮想アド
レス・エミュレータ50は、命令レジスタ110内の命
令によって開始されたセグメント化−線形・仮想アドレ
ス変換操作を実行することができる。
【0038】制御レジスタ52は、コンテキストIDフ
ィールド70および線形仮想アドレス(上位)フィール
ド71を含むいくつかのフィールドと、イネーブル・フ
ラグ72とを含んでいる。コンテキストIDフィールド
70は、マイクロプロセッサ11によって処理中のx8
6プログラム用の現行コンテキストを識別するコンテキ
ストIDを含んでいる。コンテキストIDフィールド7
0からの現行コンテキストIDは、キャッシュ51の指
定の項目51(n)のコンテキストIDとともに比較器
54のそれぞれの入力に結合され、この比較器は、前述
の通り、その項目のコンテキストIDフィールド61
(n)の内容とコンテキストIDフィールド70内の現
行コンテキストIDとを比較して、ACC EXCアク
セス例外条件が存在するかどうかを判定する。
【0039】上記のように、制御レジスタ52は線形仮
想アドレス(上位)フィールド71も含んでいる。一実
施形態では、セグメント化仮想アドレス・エミュレータ
50によって変換可能なコンテキストに関連する線形仮
想アドレスの上位部分が各コンテキストごとに変化しな
いので、キャッシュ51内の空間を節約するため、不変
の上位部分が制御レジスタ52に格納される。セグメン
ト化−線形・仮想アドレス変換命令の処理中に、その上
位部分は線形仮想アドレス(上位)フィールド71から
線形仮想アドレス出力レジスタ57の上位線形仮想アド
レス・ページ・フィールド57(HP)にコピーされ
る。
【0040】最後に、上記のように、制御レジスタ52
はイネーブル・フラグ72を含んでいる。イネーブル・
フラグ72は、セグメント化仮想アドレス・エミュレー
タ50の動作を制御するためにマイクロプロセッサ11
によって制御することができる。イネーブル・フラグ7
2が設定されていると、制御回路53は、セグメント化
仮想アドレス・エミュレータ50の他の構成要素を制御
して、セグメント化仮想アドレス・エミュレータ50に
出されたセグメント化−線形・仮想アドレス変換命令を
処理できるようになる。これに対して、イネーブル・フ
ラグ72がクリアされている間、制御回路53は、セグ
メント化仮想アドレス・エミュレータ50に出されたセ
グメント化−線形・仮想アドレス変換命令を処理できな
くなる。
【0041】制御回路53は、セグメント化仮想アドレ
ス・エミュレータ50の様々な構成要素の動作を制御す
る。制御回路53はいくつかのレジスタを含むが、これ
については図4に示す。図4を参照すると、制御回路5
3は、キャッシュ・サイズ・レジスタ80と、キャッシ
ュ項目データ入力レジスタ81と、キャッシュ項目イン
デックス・レジスタ82とを含み、いずれもキャッシュ
51内の様々な項目51(n)への情報のロードに関連
して有用なものである。キャッシュ・サイズ・レジスタ
80は、キャッシュ51内のキャッシュ項目51(n)
の数を識別する「最後のキャッシュ項目」値を含んでい
る。制御回路53は、マイクロプロセッサの制御回路2
3によってそれ(制御回路53)が項目51(n)に情
報をロードできるようになっている場合に、キャッシュ
・サイズ・レジスタ80内のキャッシュ・サイズ値を使
用して、ロードすべき情報を受信する項目が存在するこ
とを確認することができる。
【0042】キャッシュ項目データ入力レジスタ81
は、キャッシュ項目51(n)のそれぞれのフィールド
60(n)〜66(n)に対応するいくつかのフィール
ド90〜96を含んでいる。一実施形態では、キャッシ
ュ51の項目51(n)の内容は2つの構成を使用して
更新することができる。一方の構成では、マイクロプロ
セッサの制御回路23は、キャッシュ項目データ入力レ
ジスタ81に対して特定の項目51(n)にロードすべ
き情報と、その情報のロード先になる項目51(n)を
識別する項目IDとを供給することができ、その後、マ
イクロプロセッサの制御回路23により、キャッシュの
制御回路53は、(i)キャッシュ・サイズ・レジスタ
80を使用してその項目IDに対応する項目51(n)
が存在することを確認し、(ii)存在する場合にキャ
ッシュ項目データ入力レジスタ81からの情報を指定の
項目51(n)にロードできるようになる。第2の構成
でも、マイクロプロセッサの制御回路23は、項目51
(n)にロードすべき情報をキャッシュ項目データ入力
レジスタ81に供給し、その後、マイクロプロセッサの
制御回路23により、キャッシュの制御回路53は、指
定のキャッシュ置換方式を使用してその情報をロードす
べきキャッシュ項目51(n)を選択し、その情報を指
定の項目51(n)にロードできるようになる。適当な
キャッシュ置換方式は当技術分野では周知のものなの
で、本明細書には記載しない。いずれの構成でも、制御
回路53は、キャッシュ項目51(n)に情報をロード
すると、キャッシュ項目インデックス・レジスタ82に
項目51(n)へのポインタもロードする。その結果、
キャッシュ項目インデックス・レジスタ82は、情報が
格納されていた最後の項目51(n)を識別する値を含
むことになる。
【0043】制御回路53は、例外状況レジスタ83
と、キャッシュ項目アクセス・レジスタ84と、障害ア
ドレス・レジスタ85とを含む、例外状況情報に関連し
て使用するいくつかのレジスタを含んでいる。セグメン
ト化−線形・仮想アドレス変換命令の処理に関連する例
外条件が存在する場合、制御回路53は、例外のタイプ
を識別する例外IDを例外状況レジスタ83にロードす
る。一実施形態では、以下のものを含む、いくつかの例
外条件が存在する可能性がある。 (i)アクセス例外。前述のように、指定のキャッシュ
項目51(n)のフィールド61(n)内のコンテキス
トIDが制御レジスタ70のフィールド70内のコンテ
キストIDとは異なると比較器54が判定した場合。 (ii)特権違反例外。指定のキャッシュ項目51(n)
の特権フラグ65(n)が設定され、命令レジスタ11
0内の命令の特権フラグ115がクリアされていると制
御回路53が判定した場合に発生する可能性がある。 (iii )書込み違反例外。指定のキャッシュ項目51
(n)の書込みフラグ66(n)がクリアされ、命令レ
ジスタ110内の命令の書込みフラグ116が設定され
ていると制御回路53が判定した場合に発生する可能性
がある。 (iv)セグメント・レジスタ番号例外。指定のキャッシ
ュ項目51(n)のフィールド62(n)と命令レジス
タ110のフィールド114のセグメント・レジスタ番
号値が互いに異なると比較器58が判定した場合。 (v)ページ長違反。セグメント化仮想アドレス入力レ
ジスタ56のフィールド56(O)内のセグメント・ペ
ージ・オフセットが指定のキャッシュ項目51(n)の
セグメント仮想アドレス・ページ長フィールド64
(n)より大きいと比較器55が判定した場合。いくつ
かのタイプの例外は、セグメント化−線形・仮想アドレ
ス変換命令を出したプログラムの処理に関連する致命的
エラーを表している可能性があり、その結果、マイクロ
プロセッサがプログラムの処理を終了する場合もある。
しかし、その例外がアクセス例外(上記の項目(i))
である場合、制御回路53により、マイクロプロセッサ
の制御回路23は、前述の通り、正しいコンテキストに
関する適切な情報をキャッシュ項目51(n)にロード
できるようになる。
【0044】マイクロプロセッサの制御回路23がキャ
ッシュ項目のロードを開始できるようにするため、制御
回路23は、アクセス例外レジスタ84とアクセス例外
セグメント仮想アドレス・レジスタ85に情報を格納す
る。特に、制御回路53は以下のようにロードする。 (i)セグメント化−線形・仮想アドレス変換命令の処
理中に選択された項目51(n)のセグメント化仮想ア
ドレス・タグ・フィールド60(n)の内容を、アクセ
ス例外を引き起こした項目51(n)を識別するように
機能するフィールド100にロードする。 (ii)制御レジスタ70のコンテキストIDフィールド
70からのコンテキストIDを、現行コンテキストを識
別するフィールド101にロードする。これにより、項
目51(n)にロードするように選択された更新情報が
正しいコンテキスト用であるという確認が可能になる。 (iii)セグメント化−線形・仮想アドレス変換命令の特
権フラグ115および書込みフラグ116とフィールド
114からのセグメント・レジスタ番号とを、フィール
ド102〜104にロードする。この場合も、項目51
(n)にロードするように選択された更新情報が命令の
処理のために適正な情報を備えているという確認が可能
になる。
【0045】このような背景の場合、セグメント化−線
形・仮想アドレス変換命令の処理に関連して制御回路5
3が実行する操作については、図5−図10に関連して
説明する。予備段階として、変換すべきアドレスが、セ
グメントID部分36とオフセット部分37を含む、図
2に関連して前述したものと同様のアドレスの形式にな
っている場合、マイクロプロセッサ11は、セグメント
化仮想アドレス(加算器42の出力に対応する)を生成
し、それをレジスタ・セット20内のレジスタに格納す
るために図2に関連して前述した操作を実行するが、こ
のレジスタは、セグメント化−線形・仮想アドレス変換
命令用のセグメント化仮想アドレス入力レジスタとして
後で使用する(ステップ150)。一般に、セグメント
化仮想アドレスを生成するためにステップ150中に実
行する操作は、加算器などのその他の機能ユニット21
を使用して行われる。その後、マイクロプロセッサ11
は、セグメント化−線形・仮想アドレス変換命令を取り
出し、その命令をレジスタ110に格納する(ステップ
151)。
【0046】レジスタ110で命令を受け取った後に、
イネーブル・フラグ72が設定されている場合(ステッ
プ160)、制御回路53は、キャッシュ51内の項目
51(n)がレジスタ110内の命令で識別されたセグ
メント化仮想アドレス入力レジスタ56のセグメント化
仮想アドレス・ページIDフィールド56(P)の内容
に対応するセグメント化仮想アドレス・タグ・フィール
ド60(n)を備えているかどうかを判定する(ステッ
プ161)。制御回路53は、ステップ161で肯定的
な判定を行った場合、レジスタ56のセグメント化仮想
アドレス・ページIDフィールド56(P)の内容に対
応するセグメント化仮想アドレス・タグ・フィールド6
0(n)を備えた項目51(n)を選択し、それをセグ
メント化仮想アドレス・エミュレータ50の他の構成要
素に結合する(ステップ162)。特に、制御回路53
により、以下の状況が可能になる。 (i)指定の項目51(n)のコンテキストIDフィー
ルド61(n)と制御レジスタ52のコンテキストID
フィールド70からのコンテキストIDが比較器54に
結合される(ステップ163a)。 (ii)指定の項目51(n)のセグメント・レジスタ番
号フィールド62(n)と命令レジスタ110のセグメ
ント・レジスタ番号フィールド114からのセグメント
・レジスタ番号値が比較器58に結合される(ステップ
163b)。 (iii)指定の項目のフィールド64(n)からのセグメ
ント化仮想アドレス・ページ限界値とセグメント化仮想
アドレス入力レジスタ56のフィールド56(O)から
のセグメント仮想アドレス・ページ・オフセット値が比
較器55に結合される(ステップ163c)。さらに、
制御回路53は、命令レジスタ110内のセグメント化
−線形・仮想アドレス変換命令の対応フラグ115およ
び116との比較のために、指定の項目のフィールド6
5(n)および66(n)から特権フラグおよび書込み
フラグを受け取る(ステップ163d)。
【0047】前述のように、 (i)比較器55は、ステップ163aで、指定の項目
51(n)のコンテキストIDフィールド61(n)と
制御レジスタ52のコンテキストIDフィールド70か
らのコンテキストIDが同じ値を有すると判定した場
合、ACC EXCというアクセス例外表示を生成しな
い。 (ii)比較器58は、ステップ163bで、指定の項目
51(n)のセグメント・レジスタ番号フィールド62
(n)と命令レジスタ110のセグメント・レジスタ番
号フィールド114からのセグメント・レジスタ番号値
が同じ値を有すると判定した場合、SRN EXCとい
うセグメント・レジスタ番号例外表示を生成しない。 (iii)比較器55は、ステップ163cで、指定の項目
51(n)のフィールド64(n)からのセグメント化
仮想アドレス・ページ限界値がセグメント化仮想アドレ
ス入力レジスタ56のフィールド56(O)からのセグ
メント仮想アドレス・ページ・オフセット値と等しいか
またはそれより大きいと判定した場合、PAGE LE
N VIOLというページ長違反例外表示を生成しな
い。 (iv)制御回路53は、ステップ163dで、指定の項
目のフィールド65(n)および66(n)から特権フ
ラグおよび書込みフラグの状態が命令レジスタ110内
のセグメント化−線形・仮想アドレス変換命令のフラグ
115および116の状態と適切に対応すると判定した
場合、制御回路53により、以下の状況が可能になる。 (a)制御レジスタ52のフィールド71内の線形仮想
アドレス・ページ・アドレスの上位部分の内容が線形仮
想アドレス出力レジスタ57のフィールド57(HP)
に格納される(ステップ164a)。 (b)指定の項目のフィールド63(n)内の線形仮想
アドレス・ページ・アドレスの下位部分の内容が線形仮
想アドレス出力レジスタ57のフィールド57(LP)
に格納される(ステップ164b)。 (c)セグメント化仮想アドレス入力レジスタ56のフ
ィールド56(O)からコピーすべきセグメント化仮想
アドレス・ページ・オフセット値の内容が線形仮想アド
レス出力レジスタ57の線形仮想アドレス・ページ・オ
フセット・フィールド57(O)に格納される(ステッ
プ164c)。ステップ164cの後、制御回路53
は、マイクロプロセッサの制御回路23に制御権を返す
ことができる(ステップ165)。
【0048】ステップ163aに戻り、制御回路53
は、指定の項目51(n)のコンテキストIDフィール
ド61(n)と制御レジスタ52のコンテキストIDフ
ィールド70からのコンテキストIDが別々の値を有す
ることを示すアクセス例外が比較器54によって生成さ
れたとそのステップで判定すると、ステップ170に移
行して、レジスタ83〜85に適切な情報をロードし
(ステップ170)、マイクロプロセッサの制御回路2
3がアクセス例外を処理できるようにする。アクセス例
外を処理する際に、マイクロプロセッサ11は、メモリ
12からレジスタ56内のセグメント化仮想アドレスに
関する適切な変換情報を入手するか、あるいはその情報
を生成して、キャッシュ51の項目51(n)に格納す
るためにセグメント化仮想アドレス・エミュレータ50
にその情報を供給することができる(ステップ17
1)。その後、制御回路53は、前述のようにセグメン
ト化−線形・仮想アドレス変換操作を実行する(ステッ
プ161〜166)。
【0049】ステップ163bおよび163cに戻り、
比較器55および58がPAGELEN VIOLペー
ジ長違反例外またはSRN EXCセグメント・レジス
タ番号例外を生成すると制御回路53がそのステップで
判定した場合、または指定の項目のフィールド65
(n)および66(n)からの特権フラグおよび書込み
フラグの状態が命令レジスタ110内のセグメント化−
線形・仮想アドレス変換命令のフラグ115および11
6の状態に適切に対応しないと制御回路がステップ16
3dで判定した場合、それ(制御回路53)は、マイク
ロプロセッサの制御回路23が適切な例外を処理できる
ようにする(ステップ172)。マイクロプロセッサの
制御回路23は、例外を引き起こした条件を矯正できる
場合(ステップ173)、制御回路53に制御権を返
し、その後、制御回路53は、前述のようにセグメント
化−線形・仮想アドレス変換操作を実行する(ステップ
161〜166)。
【0050】ステップ161に戻り、制御回路53は、
そのセグメント化仮想アドレス・タグ・フィールド60
(n)がレジスタ56内のセグメント化仮想アドレスの
セグメント化仮想アドレス・ページIDフィールド56
(P)の内容に対応するような項目51(n)をキャッ
シュ51が含まないとステップ161で判定した場合、
ステップ174に移行して、マイクロプロセッサ11が
レジスタ56内のセグメント化仮想アドレスに関する適
切な変換情報を供給できるようにするが、その情報はマ
イクロプロセッサ11がメモリ12から入手するかある
いは生成することができるものである。その後、制御回
路53は、前述のようにセグメント化−線形・仮想アド
レス変換操作を実行する(ステップ161〜166)。
【0051】前述のように、セグメント化仮想アドレス
・エミュレータ50(図1)によって実行されるセグメ
ント化−線形・仮想アドレス変換命令と、エミュレータ
50によって使用されるセグメント化−線形・仮想アド
レス空間変換情報はどちらも、エミュレート済みマイク
ロプロセッサによって実行すべき元のプログラムをホス
ト・マイクロプロセッサ11による実行用の変換済みプ
ログラムに変換している間、または変換済みプログラム
を処理している間に、生成することができる。予備段階
として、元のプログラムのエミュレーション中に、元の
プログラム用のセグメント・レジスタ30とセグメント
記述子テーブル31がエミュレートされ、それをレジス
タ・セット20またはメモリ・サブシステム12あるい
はその両方に保管できることに留意されたい。さらに、
セグメント化仮想アドレス空間内の各ページ(セグメン
ト化仮想アドレス・ページIDによって定義される)を
線形仮想アドレス空間内の特定のページ(線形仮想アド
レス・ページIDの上位部分と下位部分の両方によって
定義される)に関連付けることができるように、元のプ
ログラム用のセグメント化仮想アドレス空間と、元のプ
ログラムがエミュレートされるホスト・マイクロプロセ
ッサ11のコンテキスト用の線形仮想アドレス空間との
対応が確立される。
【0052】セグメント化−線形・仮想アドレス変換命
令は、元のプログラム中のメモリ・アクセス操作を開始
する命令に応答して生成される。セグメント化−線形・
仮想アドレス変換命令を生成する場合、最初にその命令
用の命令IDをフィールド111(図3)にロードする
ことができる。前述のように、メモリ・アクセス操作を
開始する元のプログラム命令はセグメントIDとオフセ
ット値とを含むアドレスを含み、元のプログラム命令か
らのセグメントIDはセグメント化−線形・仮想アドレ
ス変換命令のセグメント・レジスタ番号フィールド11
4(図3)で使用される。さらに、セグメント化仮想ア
ドレス入力レジスタ56および線形仮想アドレス出力レ
ジスタ57として機能するレジスタ・セット20内のレ
ジスタは従来通り選択され、これらのレジスタを識別す
るポインタはそれぞれのフィールド112および113
にロードされる。さらに、セグメント化−線形・仮想ア
ドレス変換命令の特権フラグ115および書込みフラグ
116は、元のプログラム命令によってアクセスされる
セグメント用のセグメント記述子31(n)のフィール
ド32(n)(図2)内のアクセス権に応じて条件付け
することができる。セグメント化−線形・仮想アドレス
変換命令を実行したときにセグメント化仮想アドレス入
力レジスタ56内に供給されるセグメント化仮想アドレ
スを生成するために、セグメント化−線形・仮想アドレ
ス変換命令に先立って実行するための変換済みプログラ
ム内に1つまたは複数の追加命令が用意されることに留
意されたい。このような追加の命令では、エミュレート
済みセグメント・レジスタおよびエミュレート済みセグ
メント記述子テーブルの内容と、元のプログラム命令に
よって供給されるアドレスからのオフセット値とを使用
することができる。
【0053】セグメント化−線形・仮想アドレス空間変
換情報の情報は、エミュレート済みセグメント記述子テ
ーブルならびにセグメント化仮想アドレス空間と線形仮
想アドレス空間との前述の対応から生成することができ
る。特に、エミュレート済みセグメント記述子テーブル
内の各エミュレート済みセグメント記述子ごとに、1つ
または複数のセグメント化−線形・仮想アドレス空間変
換情報が生成される。それ(セグメント)がセグメント
化仮想アドレス空間の単一ページに収まるようにエミュ
レート済みセグメント長フィールド(図2のフィールド
33(n)を参照)が決定した長さをセグメントが備え
ている場合、生成する必要があるセグメント化−線形・
仮想アドレス空間変換情報は1つだけである。これに対
して、セグメント化仮想アドレス空間の複数ページが必
要になるような長さをセグメントが備えている場合、各
ページに1つずつ、複数の情報のセグメント化−線形・
仮想アドレス空間変換情報を生成することが必要にな
る。
【0054】各情報を生成する場合、その情報のセグメ
ント化仮想アドレス・タグ(図3のフィールド60
(n)を参照)と線形仮想アドレス・フィールド(下
位)(図3のフィールド63(n)を参照)用の値は、
セグメント化仮想アドレス空間と線形仮想アドレス空間
との対応に応じて条件付けされる。セグメント・レジス
タ番号(図3のフィールド62(n)を参照)は、エミ
ュレート済みセグメント記述子が生成されたセグメント
IDに対応する。その情報の仮想アドレス・ページ限界
(図3のフィールド64(n)を参照)もセグメント化
仮想アドレス空間と線形仮想アドレス空間との対応に応
じて条件付けされる。すなわち、セグメント化仮想アド
レス空間のページが満たされている場合、仮想アドレス
・ページ限界フィールドは、1ページ内の位置の最大数
に対応する値を含むことになる。これに対して、ページ
が満たされていない場合(たとえば、前述のようにセグ
メントの最後のページを含む場合もある)、仮想アドレ
ス・ページ限界フィールドは、実際にそのページ内にあ
る位置の数に対応する値を含むことになる。したがっ
て、セグメントの最後のページの場合、その値は、セグ
メント長をセグメント化仮想アドレス・ページのサイズ
で割った商の剰余に対応する可能性がある。さらに、そ
の情報の特権フラグおよび書込みフラグ(図3のフラグ
65(n)および66(n)を参照)は、その情報が生
成されたセグメント用のセグメント記述子のフィールド
32(n)(図2)内のアクセス権に応じて条件付けす
ることができる。最後に、コンテキストID(図3のフ
ィールド61(n)を参照)はホスト・マイクロプロセ
ッサのオペレーティング・システムによって割り当てる
ことができる。
【0055】本発明はいくつかの利点をもたらすことに
留意されたい。特に、本発明は、インテル社のx86系
のマイクロプロセッサ用に作成されたプログラムに関連
して使用するようなセグメント化仮想アドレス空間を、
非セグメント化線形仮想アドレス空間を使用するマイク
ロプロセッサによってエミュレートする場合にそのエミ
ュレーションを促進するための効率のよい構成を提供す
る。
【0056】さらに、上記の実施形態に対していくつか
の拡張や変更が可能であることに留意されたい。たとえ
ば、前述のように、キャッシュ51の特定の項目51
(n)が正しいセグメントに関連するセグメント化−線
形・仮想アドレス変換情報を含むことを確認するため、
項目51(n)のセグメント・レジスタ番号フィールド
62(n)からのセグメント・レジスタ番号値をセグメ
ント化−線形・仮想アドレス変換命令のセグメント・レ
ジスタ番号フィールド114の内容と比較する。しか
し、x86アーキテクチャは、そのアーキテクチャに応
じて構築されたマイクロプロセッサがセグメント・レジ
スタ30(m)の1つに値をロードできるようにするセ
グメント・レジスタ・ロード命令を与える。セグメント
・レジスタ30(m)の内容は、セグメント・レジスタ
30(m)に関連するセグメントを定義するようなセグ
メント記述子テーブル31内の特定のセグメント記述子
31(n)を識別するので、セグメント・レジスタに含
まれる値を変更するための命令によって、セグメントが
変化する可能性がある。
【0057】その場合、マイクロプロセッサ11がx8
6セグメント・レジスタ・ロード命令をエミュレートす
ると、そのセグメント・レジスタ30(m)がセグメン
ト・レジスタ・ロード命令によってロードされるような
セグメントに関連するキャッシュ51の特定の項目51
(n)内のセグメント化−線形・仮想アドレス変換情報
は無効な情報を含むはずである。それに対処するため、
一実施形態のマイクロプロセッサ11は、たとえば、項
目51(n)をクリアするなど、そのセグメント・レジ
スタ30(m)がロードされるような特定のセグメント
に関連するキャッシュ51内の項目51(n)を無効に
することにより、x86セグメント・レジスタ・ロード
命令をエミュレートすることができる。その操作中に
は、連続項目51(n)の内容を検査して、セグメント
・レジスタ・ロード命令に応答してそのセグメント・レ
ジスタ30(m)がロードされるようなセグメントを識
別する値をそのセグメント・レジスタ番号フィールド6
2(n)が含むかどうかを判定することができる。
【0058】あるいは、複数のビットを有するビット・
マップ(図示せず)に各セグメントを関連付け、次に各
ビットをキャッシュ51の1つの項目51(n)に関連
付けることができる。その場合、項目51(n)のセグ
メント・レジスタ番号フィールド62(n)が特定のセ
グメントを識別すると、その項目51(n)に関連する
ビットがそのセグメントのビット・マップに設定され、
その項目51(n)に関連するビットが残りのセグメン
トのビット・マップでクリアされる。マイクロプロセッ
サ11は、特定のセグメント・レジスタ30(m)用の
x86セグメント・レジスタ・ロード命令をエミュレー
トする場合、ロードすべきセグメント・レジスタ30
(m)に関連するセグメント用のビット・マップを使用
して、そのセグメント用のセグメント化−線形・仮想ア
ドレス変換情報を含む項目51(n)であって、従っ
て、無効にすべき項目51(n)を識別することができ
る。
【0059】さらに、完全アソシアティブ、直接マッピ
ング、「n」ウェイ・セットアソシアティブ(「n」は
整数)など、都合のよいキャッシュ構成に応じてキャッ
シュ51を編成できることに留意されたい。特定の一実
施形態では、キャッシュ51は直接マッピング・キャッ
シュであり、そのセグメント化仮想アドレス入力レジス
タ56内のセグメント化仮想アドレスのフィールド56
(P)に含まれるセグメント化仮想アドレス・ページI
Dの低位部分は、その内容がステップ161〜165に
関連して前述した操作で使用されることになっているキ
ャッシュ51内の単一項目51(n)を識別する。これ
らの操作では、項目51(n)のセグメント化仮想アド
レス・タグ・フィールド60(n)の内容がレジスタ5
6のフィールド56(P)内のセグメント化仮想アドレ
ス・ページIDに対応しない場合(ステップ161を参
照)、レジスタ56内のセグメント化仮想アドレス用の
項目51(n)に格納するために、適切なセグメント化
−線形・仮想アドレス変換情報が供給されるが、その情
報はメモリ12から入手するかあるいは生成することが
できる(ステップ174を参照)。項目51(n)に格
納するために適切なセグメント化−線形・仮想アドレス
変換情報が供給された後、セグメント化−線形・仮想ア
ドレス変換操作が実行される(ステップ161〜165
を参照)。
【0060】さらに、ホスト・マイクロプロセッサ11
とメモリ管理ユニット14は、個別の要素を含み、メモ
リ管理ユニット14がバス・インタフェース22を介し
てマイクロプロセッサとやりとりするものとして図1に
示されているが、ホスト・マイクロプロセッサ11とメ
モリ管理ユニット14は1つまたは複数の集積回路チッ
プ上にまとめて集積された単一要素を含むことができる
ことに留意されたい。ホスト・マイクロプロセッサ11
とメモリ管理ユニット14がまとめて集積されている場
合、バス・インタフェース22とメモリ管理ユニット1
4を単一要素内に一体化することもできる。
【0061】適当なエミュレーション・プログラムまた
はマイクロコードが用意された別のアーキテクチャなど
のマイクロプロセッサを使用して、本発明によるセグメ
ント化仮想アドレス・エミュレータをさらに含む、指定
のアーキテクチャ(前述のSPARC Archite
cture Manual, Version 9に記
載されている前述のSPARCバージョン9アーキテク
チャなど)に応じて構築されたホスト・マイクロプロセ
ッサ11全体をエミュレートできることにさらに留意さ
れたい。
【0062】しかも、本発明によるセグメント化仮想ア
ドレス・エミュレータを含むマイクロプロセッサ11
が、そのいずれの部分でも適当なプログラムによって制
御可能な1つまたは複数のプログラム制御可能装置ある
いは専用ハードウェアから、全体的にまたは部分的に構
築できることに留意されたい。
【0063】上記の説明は本発明の具体的な実施形態に
限定されている。しかし、本発明の利点の一部または全
部を達成することにより、本発明の様々な変形および変
更が可能であることは明らかになるだろう。特許請求の
範囲の目的は、上記の変形および変更ならびに本発明の
真の精神および範囲に含まれるようなその他の変形およ
び変更を含めることである。
【図面の簡単な説明】
【図1】本発明に応じて構築されたセグメント化仮想ア
ドレス・エミュレータを含むディジタル・コンピュータ
・システムを示す機能ブロック図である。
【図2】セグメント化仮想アドレスを生成する際に指定
のアーキテクチャのマイクロプロセッサ(すなわち、イ
ンテル社のx86系のマイクロプロセッサ)によって実
行される操作を理解するのに役立ち、本発明を理解する
のに役立つ図である。
【図3】セグメント化仮想アドレスを線形仮想アドレス
に変換するために本発明に応じて構築されたセグメント
化仮想アドレス・エミュレータであって、図1に示すデ
ィジタル・コンピュータ・システムで有用なセグメント
化仮想アドレス・エミュレータの機能ブロック図であ
る。
【図4】図1に示すセグメント化仮想アドレス・エミュ
レータで有用ないくつかのレジスタの構造を示す図であ
る。
【図5】セグメント化仮想アドレスを線形仮想アドレス
に変換する際にセグメント化仮想アドレス・エミュレー
タによって実行される操作を示す流れ図である。
【図6】セグメント化仮想アドレスを線形仮想アドレス
に変換する際にセグメント化仮想アドレス・エミュレー
タによって実行される操作を示す流れ図である。
【図7】セグメント化仮想アドレスを線形仮想アドレス
に変換する際にセグメント化仮想アドレス・エミュレー
タによって実行される操作を示す流れ図である。
【図8】セグメント化仮想アドレスを線形仮想アドレス
に変換する際にセグメント化仮想アドレス・エミュレー
タによって実行される操作を示す流れ図である。
【図9】セグメント化仮想アドレスを線形仮想アドレス
に変換する際にセグメント化仮想アドレス・エミュレー
タによって実行される操作を示す流れ図である。
【図10】セグメント化仮想アドレスを線形仮想アドレ
スに変換する際にセグメント化仮想アドレス・エミュレ
ータによって実行される操作を示す流れ図である。
【符号の説明】
10 ディジタル・コンピュータ・システム 11 マイクロプロセッサ 12 メモリ・サブシステム 13 入出力サブシステム 14 メモリ管理ユニット 20 レジスタ・セット 21 機能ユニット 22 バス・インタフェース 23 制御回路 50 セグメント化仮想アドレス・エミュレータ 59 セグメント化−線形・仮想アドレス空間変換情報
───────────────────────────────────────────────────── フロントページの続き (72)発明者 デイヴィッド・ダイス アメリカ合衆国・02035・マサチューセッ ツ州・フォックスボロ・ウィルケソン ウ ェイ・15 (72)発明者 ロバート・ジィ・ヴァンデット アメリカ合衆国・01845・マサチューセッ ツ州・アンドバー・ブルー リッジ ロー ド・345 (72)発明者 デイヴィッド・エル・リース アメリカ合衆国・01581・マサチューセッ ツ州・ウェストボロー・メイプル サーク ル・1

Claims (30)

    【特許請求の範囲】
  1. 【請求項1】 それぞれが1つのセグメント化ページI
    Dによって識別される少なくとも1つのセグメント・ペ
    ージを含む複数のセグメントを有するセグメント化仮想
    アドレス空間内のセグメント化仮想アドレスを、それぞ
    れが1つの線形ページIDによって識別される複数の線
    形ページを含む線形仮想アドレス空間内の線形仮想アド
    レスに変換するためにセグメント化−線形・仮想アドレ
    ス変換命令を処理するプロセッサであって、そのプロセ
    ッサはそれぞれが1つのセグメント・ページに関連する
    複数のセグメント化−線形・仮想アドレス変換記述子を
    使用し、各セグメント化−線形・仮想アドレス変換記述
    子は前記線形ページのうちの1つのページのページID
    を識別し、前記セグメント化−線形・仮想アドレス変換
    命令は、前記セグメント化仮想アドレス空間内にあり、
    前記セグメント・ページの1つを識別するセグメント化
    仮想アドレスを識別するようになっているときに、プロ
    セッサが、 A.セグメント化−線形・仮想アドレス変換命令によっ
    て識別された前記セグメント・ページの1つに関連する
    前記セグメント化−線形・仮想アドレス変換記述子の1
    つを選択するセグメント化−線形・仮想アドレス変換記
    述子セレクタ要素と、 B.前記セグメント化−線形・仮想アドレス変換記述子
    セレクタ要素によって選択されたセグメント化−線形・
    仮想アドレス変換記述子からの線形仮想アドレス空間の
    ページIDと、セグメント化−線形・仮想アドレス変換
    命令内のセグメント化仮想アドレスIDとを使用して、
    前記線形仮想アドレス空間内の仮想アドレスを生成する
    線形仮想アドレス生成器とを含むことを特徴とするプロ
    セッサ。
  2. 【請求項2】 プロセッサがメモリに接続され、メモリ
    がセグメント化−線形・仮想アドレス変換記述子を格納
    し、プロセッサが、前記線形仮想アドレス生成器による
    使用のために前記セグメント化−線形・仮想アドレス変
    換記述子要素によって選択されたセグメント化−線形・
    仮想変換記述子をメモリから取り出すための記述子取出
    し要素をさらに含むことを特徴とする請求項1に記載の
    プロセッサ。
  3. 【請求項3】 前記プロセッサが前記記述子取出し要素
    によって取り出されたセグメント化−線形・仮想アドレ
    ス変換記述子をキャッシュするためのキャッシュをさら
    に含み、セグメント化−線形・仮想アドレス変換記述子
    セレクタ要素が、セグメント化−線形・仮想アドレス変
    換命令によって識別されたセグメント・ページに関連す
    るセグメント化−線形・仮想アドレス変換記述子をキャ
    ッシュが含むかどうかを最初に判定し、含む場合にはそ
    のセグメント化−線形・仮想アドレス変換記述子を選択
    することを特徴とする請求項2に記載のプロセッサ。
  4. 【請求項4】 前記セグメント化−線形・仮想アドレス
    変換記述子セレクタ要素が、セグメント化−線形・仮想
    アドレス変換命令によって識別されたセグメント・ペー
    ジに関連するセグメント化−線形・仮想アドレス変換記
    述子をキャッシュが含まないと判定した場合に、前記線
    形仮想アドレス生成器による使用のために前記セグメン
    ト化−線形・仮想アドレス変換記述子要素によって選択
    されたセグメント化−線形・仮想変換記述子をメモリか
    ら取り出すための取出し操作を開始することを特徴とす
    る請求項3に記載のプロセッサ。
  5. 【請求項5】 前記セグメント化−線形・仮想アドレス
    変換命令が線形仮想アドレス空間内の1ページに関連す
    るアクセス操作で使用され、前記セグメント化−線形・
    仮想アドレス変換命令がアクセス権情報を含み、さらに
    各セグメント化−線形・仮想アドレス変換記述子がアク
    セス権要件表示を含み、プロセッサが、前記セグメント
    化−線形・仮想アドレス変換命令内のアクセス権情報が
    アクセス権要件表示に適合することを確認するためのア
    クセス権検査器をさらに含むことを特徴とする請求項1
    に記載のプロセッサ。
  6. 【請求項6】 前記セグメント化−線形・仮想アドレス
    変換命令内のアクセス権情報が前記指定のセグメント化
    −線形・仮想アドレス変換記述子内のアクセス権要件表
    示に適合しないとアクセス権検査器が判定した場合に指
    定の回復操作を実行するための例外ハンドラを前記プロ
    セッサがさらに含むことを特徴とする請求項5に記載の
    プロセッサ。
  7. 【請求項7】 前記セグメント化−線形・仮想アドレス
    変換命令内の前記アクセス権情報が複数のアクセス特権
    レベルのうちの1つを示し、前記アクセス権要件表示が
    線形仮想アドレス空間内のページに関連するアクセス操
    作に必要なアクセス特権レベルを示し、前記セグメント
    化−線形・仮想アドレス変換命令によって示されるアク
    セス特権レベルが指定のセグメント化−線形・仮想アド
    レス変換記述子によって示されるアクセス特権レベルが
    必要とするレベルを備えていることをアクセス権検査器
    が確認することを特徴とする請求項5に記載のプロセッ
    サ。
  8. 【請求項8】 プロセッサが複数の指定のアクセス・タ
    イプのアクセス操作に関連するセグメント化−線形・仮
    想アドレス変換命令を処理し、前記セグメント化−線形
    ・仮想アドレス変換命令のそれぞれに含まれるアクセス
    権情報がそれが処理されているアクセス・タイプを示
    し、各セグメント化−線形・仮想アドレス変換記述子の
    アクセス権要件表示がそれに関連するセグメント・ペー
    ジについて許可されたアクセス・タイプを示し、指定の
    セグメント化−線形・仮想アドレス変換記述子内のアク
    セス権要件表示が示すアクセス・タイプが許可されてい
    ることを処理中のセグメント化−線形・仮想アドレス変
    換命令のアクセス権情報が示すことをアクセス権検査器
    が確認することを特徴とする請求項5に記載のプロセッ
    サ。
  9. 【請求項9】 前記アクセス・タイプの1つが記憶操作
    であり、前記線形仮想アドレス生成器によって生成され
    た仮想アドレスによって識別される前記線形仮想アドレ
    ス空間のページに情報が格納され、前記セグメント化−
    線形・仮想アドレス変換命令のそれぞれに含まれるアク
    セス権情報はそのアクセス・タイプが記憶操作であるか
    どうかを示し、各セグメント化−線形・仮想アドレス変
    換記述子のアクセス権要件表示は記憶操作がそれに関連
    するセグメント・ページについて許可されたアクセス・
    タイプであるかどうかを示すことを特徴とする請求項8
    に記載のプロセッサ。
  10. 【請求項10】 前記セグメント化仮想アドレス空間内
    の各セグメントが複数のセグメントIDの1つに関連付
    けられ、各セグメント化−線形・仮想アドレス変換記述
    子が、それぞれのセグメント化−線形・仮想アドレス変
    換記述子に関連するセグメント・ページを含むセグメン
    ト用のセグメントIDに対応するセグメントID値を含
    み、さらに前記セグメント化−線形・仮想アドレス変換
    命令に応答して変換すべき各セグメント化仮想アドレス
    が1つのセグメントID値を含み、プロセッサが、前記
    セグメント化−線形・仮想アドレス変換命令に含まれる
    セグメントID値が前記セグメント化−線形・仮想アド
    レス変換記述子に含まれるセグメントID値に対応する
    ことを確認するためのセグメント検査器をさらに含むこ
    とを特徴とする請求項1に記載のプロセッサ。
  11. 【請求項11】 前記セグメント化−線形・仮想アドレ
    ス変換命令に含まれるセグメントID値が前記セグメン
    ト化−線形・仮想アドレス変換記述子に含まれるセグメ
    ントID値に対応しないとセグメント検査器が判定した
    場合に指定の回復操作を実行するための例外ハンドラを
    前記プロセッサがさらに含むことを特徴とする請求項9
    に記載のプロセッサ。
  12. 【請求項12】 各セグメント化−線形・仮想アドレス
    変換記述子がそれに関連するセグメント・ページの長さ
    を識別する長さ値をさらに含み、各セグメント化仮想ア
    ドレスが前記セグメント化仮想アドレスによって識別さ
    れるセグメント・ページへのオフセットを識別するオフ
    セット値をさらに含み、前記セグメント化仮想アドレス
    に含まれるオフセット値が前記セグメント化−線形・仮
    想アドレス変換記述子に含まれる長さ値より大きくない
    ことを確認するための長さ検査器をプロセッサがさらに
    含むことを特徴とする請求項1に記載のプロセッサ。
  13. 【請求項13】 前記セグメント化仮想アドレスに含ま
    れるオフセット値が前記セグメント化−線形・仮想アド
    レス変換記述子に含まれる長さ値より大きいと長さ検査
    器が判定した場合に指定の回復操作を実行するための例
    外ハンドラを前記プロセッサがさらに含むことを特徴と
    する請求項12に記載のプロセッサ。
  14. 【請求項14】 各セグメント化仮想アドレスが前記セ
    グメント化仮想アドレスによって識別されたセグメント
    ・ページへのオフセットを識別するオフセット値をさら
    に含み、線形仮想アドレス生成器が前記線形仮想アドレ
    ス空間内の前記仮想アドレスを生成する際にオフセット
    値を使用することを特徴とする請求項1に記載のプロセ
    ッサ。
  15. 【請求項15】 前記線形仮想アドレス生成器が、セグ
    メント化仮想アドレスからのオフセット値を指定のセグ
    メント化−線形・仮想アドレス変換記述子からの線形仮
    想アドレス空間のページIDに連結することにより、前
    記線形仮想アドレス空間内の前記仮想アドレスを生成す
    ることを特徴とする請求項14に記載のプロセッサ。
  16. 【請求項16】 セグメント化仮想アドレス空間内のセ
    グメント化仮想アドレスを線形仮想アドレス空間内の線
    形仮想アドレスに変換するためにセグメント化−線形・
    仮想アドレス変換命令を処理する方法において、セグメ
    ント化仮想アドレス空間は複数のセグメントを含み、各
    セグメントは1つのセグメント化ページIDによって識
    別される少なくとも1つのセグメント・ページを含み、
    線形仮想アドレス空間はそれぞれが1つの線形ページI
    Dによって識別される複数の線形ページを含み、前記方
    法はそれぞれが1つのセグメント・ページに関連する複
    数のセグメント化−線形・仮想アドレス変換記述子を使
    用し、各セグメント化−線形・仮想アドレス変換記述子
    は前記線形ページのうちの1つのページのページIDを
    識別し、セグメント化−線形・仮想アドレス変換命令は
    前記セグメント化仮想アドレス空間内のセグメント化仮
    想アドレスを識別し、セグメント化仮想アドレスは前記
    セグメント・ページの1つを識別し、前記方法が、 A.セグメント化−線形・仮想アドレス変換命令によっ
    て識別された前記セグメント・ページの1つに関連する
    前記セグメント化−線形・仮想アドレス変換記述子の1
    つを選択するステップと、 B.前記セグメント化−線形・仮想アドレス変換記述子
    セレクタ要素によって選択されたセグメント化−線形・
    仮想アドレス変換記述子からの線形仮想アドレス空間の
    ページIDと、セグメント化−線形・仮想アドレス変換
    命令内のセグメント化仮想アドレスIDとを使用して、
    前記線形仮想アドレス空間内の仮想アドレスを生成する
    ステップとを含むことを特徴とする方法。
  17. 【請求項17】 メモリがセグメント化−線形・仮想ア
    ドレス変換記述子を格納し、前記方法が、前記線形仮想
    アドレス内の前記仮想アドレスを生成する際に指定の使
    い方をメモリから取り出すステップをさらに含むことを
    特徴とする請求項16に記載の方法。
  18. 【請求項18】 取り出されたセグメント化−線形・仮
    想アドレス変換記述子をキャッシュするためのキャッシ
    ュが設けられ、前記方法が、セグメント化−線形・仮想
    アドレス変換命令によって識別されたセグメント・ペー
    ジに関連するセグメント化−線形・仮想アドレス変換記
    述子をキャッシュが含むかどうかを最初に判定し、含む
    場合にはそのセグメント化−線形・仮想アドレス変換記
    述子を選択することを特徴とする請求項17に記載の方
    法。
  19. 【請求項19】 セグメント化−線形・仮想アドレス変
    換命令によって識別されたセグメント・ページに関連す
    るセグメント化−線形・仮想アドレス変換記述子をキャ
    ッシュが含まない場合に、前記線形仮想アドレス空間内
    の前記仮想アドレスを生成する際に使用するために選択
    されたセグメント化−線形・仮想変換記述子をメモリか
    ら取り出すための取出し操作を開始することを特徴とす
    る請求項18に記載の方法。
  20. 【請求項20】 前記セグメント化−線形・仮想アドレ
    ス変換命令が線形仮想アドレス空間内の1ページに関連
    するアクセス操作で使用され、前記セグメント化−線形
    ・仮想アドレス変換命令がアクセス権情報を含み、さら
    に各セグメント化−線形・仮想アドレス変換記述子がア
    クセス権要件表示を含み、前記方法が、前記セグメント
    化−線形・仮想アドレス変換命令内のアクセス権情報が
    アクセス権要件表示に適合することを確認するステップ
    をさらに含むことを特徴とする請求項16に記載の方
    法。
  21. 【請求項21】 前記セグメント化−線形・仮想アドレ
    ス変換命令内のアクセス権情報が前記指定のセグメント
    化−線形・仮想アドレス変換記述子内のアクセス権要件
    表示に適合しないと判定された場合に例外ハンドラが指
    定の回復操作を実行することを特徴とする請求項20に
    記載の方法。
  22. 【請求項22】 前記セグメント化−線形・仮想アドレ
    ス変換命令内の前記アクセス権情報が複数のアクセス特
    権レベルのうちの1つを示し、前記アクセス権要件表示
    が線形仮想アドレス空間内のページに関連するアクセス
    操作に必要なアクセス特権レベルを示し、前記セグメン
    ト化−線形・仮想アドレス変換命令によって示されるア
    クセス特権レベルが指定のセグメント化−線形・仮想ア
    ドレス変換記述子によって示されるアクセス特権レベル
    が必要とするレベルを備えていることをアクセス権検査
    ステップが確認することを特徴とする請求項20に記載
    の方法。
  23. 【請求項23】 複数の指定のアクセス・タイプのアク
    セス操作に関連するセグメント化−線形・仮想アドレス
    変換命令が処理され、前記セグメント化−線形・仮想ア
    ドレス変換命令のそれぞれに含まれるアクセス権情報が
    それが処理されているアクセス・タイプを示し、各セグ
    メント化−線形・仮想アドレス変換記述子のアクセス権
    要件表示がそれに関連するセグメント・ページについて
    許可されたアクセス・タイプを示し、指定のセグメント
    化−線形・仮想アドレス変換記述子内のアクセス権要件
    表示が示すアクセス・タイプが許可されていることを処
    理中のセグメント化−線形・仮想アドレス変換命令のア
    クセス権情報が示すことをアクセス権検査ステップが確
    認することを特徴とする請求項20に記載の方法。
  24. 【請求項24】 前記アクセス・タイプの1つが記憶操
    作であり、前記線形仮想アドレス生成器によって生成さ
    れた仮想アドレスによって識別される前記線形仮想アド
    レス空間のページに情報が格納され、前記セグメント化
    −線形・仮想アドレス変換命令のそれぞれに含まれるア
    クセス権情報はそのアクセス・タイプが記憶操作である
    かどうかを示し、各セグメント化−線形・仮想アドレス
    変換記述子のアクセス権要件表示は記憶操作がそれに関
    連するセグメント・ページについて許可されたアクセス
    ・タイプであるかどうかを示すことを特徴とする請求項
    23に記載の方法。
  25. 【請求項25】 前記セグメント化仮想アドレス空間内
    の各セグメントが複数のセグメントIDの1つに関連付
    けられ、各セグメント化−線形・仮想アドレス変換記述
    子が、それぞれのセグメント化−線形・仮想アドレス変
    換記述子に関連するセグメント・ページを含むセグメン
    ト用のセグメントIDに対応するセグメントID値を含
    み、さらに前記セグメント化−線形・仮想アドレス変換
    命令に応答して変換すべき各セグメント化仮想アドレス
    が1つのセグメントID値を含み、前記方法が、前記セ
    グメント化−線形・仮想アドレス変換命令に含まれるセ
    グメントID値が前記セグメント化−線形・仮想アドレ
    ス変換記述子に含まれるセグメントID値に対応するこ
    とを確認するステップをさらに含むことを特徴とする請
    求項16に記載の方法。
  26. 【請求項26】 前記セグメント化−線形・仮想アドレ
    ス変換命令に含まれるセグメントID値が前記セグメン
    ト化−線形・仮想アドレス変換記述子に含まれるセグメ
    ントID値に対応しないと判定された場合に例外ハンド
    ラが指定の回復操作を実行することを特徴とする請求項
    25に記載の方法。
  27. 【請求項27】 各セグメント化−線形・仮想アドレス
    変換記述子がそれに関連するセグメント・ページの長さ
    を識別する長さ値をさらに含み、各セグメント化仮想ア
    ドレスが前記セグメント化仮想アドレスによって識別さ
    れるセグメント・ページへのオフセットを識別するオフ
    セット値をさらに含み、前記セグメント化仮想アドレス
    に含まれるオフセット値が前記セグメント化−線形・仮
    想アドレス変換記述子に含まれる長さ値より大きくない
    ことを確認するステップを前記方法がさらに含むことを
    特徴とする請求項16に記載の方法。
  28. 【請求項28】 前記セグメント化仮想アドレスに含ま
    れるオフセット値が前記セグメント化−線形・仮想アド
    レス変換記述子に含まれる長さ値より大きいと判定され
    た場合に例外ハンドラが指定の回復操作を実行すること
    を特徴とする請求項27に記載の方法。
  29. 【請求項29】 各セグメント化仮想アドレスが前記セ
    グメント化仮想アドレスによって識別されたセグメント
    ・ページへのオフセットを識別するオフセット値をさら
    に含み、前記仮想アドレス生成ステップ中に前記線形仮
    想アドレス空間内の前記仮想アドレスを生成する際にオ
    フセット値を使用することを特徴とする請求項16に記
    載の方法。
  30. 【請求項30】 セグメント化仮想アドレスからのオフ
    セット値を指定のセグメント化−線形・仮想アドレス変
    換記述子からの線形仮想アドレス空間のページIDに連
    結することにより、前記線形仮想アドレス空間内の前記
    仮想アドレスを生成することを特徴とする請求項29に
    記載の方法。
JP9060197A 1996-02-28 1997-02-28 非セグメント化仮想アドレス空間を備えるマイクロプロセッサによってセグメント化仮想アドレス空間をエミュレートするシステムおよび方法 Pending JPH1055281A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/608,571 US5765206A (en) 1996-02-28 1996-02-28 System and method for emulating a segmented virtual address space by a microprocessor that provides a non-segmented virtual address space
US08/608571 1996-02-28

Publications (1)

Publication Number Publication Date
JPH1055281A true JPH1055281A (ja) 1998-02-24

Family

ID=24437085

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9060197A Pending JPH1055281A (ja) 1996-02-28 1997-02-28 非セグメント化仮想アドレス空間を備えるマイクロプロセッサによってセグメント化仮想アドレス空間をエミュレートするシステムおよび方法

Country Status (3)

Country Link
US (1) US5765206A (ja)
EP (1) EP0793179A3 (ja)
JP (1) JPH1055281A (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6408386B1 (en) 1995-06-07 2002-06-18 Intel Corporation Method and apparatus for providing event handling functionality in a computer system
US5774686A (en) * 1995-06-07 1998-06-30 Intel Corporation Method and apparatus for providing two system architectures in a processor
GB9606928D0 (en) * 1996-04-02 1996-06-05 Memory Corp Plc Memory devices
US6195746B1 (en) * 1997-01-31 2001-02-27 International Business Machines Corporation Dynamically typed register architecture
US6360282B1 (en) * 1998-03-25 2002-03-19 Network Appliance, Inc. Protected control of devices by user applications in multiprogramming environments
US6530017B1 (en) * 1998-04-20 2003-03-04 Sun Microsystems, Inc. System and method providing an arrangement for efficiently emulating an operating system call
US6446034B1 (en) * 1998-12-16 2002-09-03 Bull Hn Information Systems Inc. Processor emulation virtual memory address translation
GB2354605B (en) 1999-06-25 2002-06-19 Jacobs Rimell Automated provisioning system
US6560690B2 (en) * 2000-12-29 2003-05-06 Intel Corporation System and method for employing a global bit for page sharing in a linear-addressed cache
JP2003140972A (ja) * 2001-11-08 2003-05-16 Nec Corp プログラム実行装置及びプログラム実行方法並びにそれを用いた携帯端末及び情報提供システム
US6854039B1 (en) * 2001-12-05 2005-02-08 Advanced Micro Devices, Inc. Memory management system and method providing increased memory access security
KR100470822B1 (ko) * 2001-12-24 2005-03-08 매그나칩 반도체 유한회사 마이크로 컨트롤러의 메모리 어드레싱 방법 및 페이지매핑장치
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
US7689782B1 (en) * 2003-08-04 2010-03-30 Azul Systems, Inc. Processor instruction used to determine whether to perform a memory-related trap
US7644409B2 (en) * 2004-06-04 2010-01-05 Sun Microsystems, Inc. Techniques for accessing a shared resource using an improved synchronization mechanism
US7594234B1 (en) 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
US7475397B1 (en) 2004-07-28 2009-01-06 Sun Microsystems, Inc. Methods and apparatus for providing a remote serialization guarantee
US7818515B1 (en) * 2004-08-10 2010-10-19 Symantec Operating Corporation System and method for enforcing device grouping rules for storage virtualization
WO2006027021A1 (en) * 2004-09-10 2006-03-16 Freescale Semiconductor, Inc. Memory management unit and a method for memory management
JP4810548B2 (ja) * 2008-02-07 2011-11-09 株式会社東芝 サーバ装置、更新画像検出方法およびプログラム
GB0813833D0 (en) 2008-07-29 2008-09-03 Transitive Ltd Apparatus and method for handling page protection faults in a computing system
JP5792577B2 (ja) * 2010-11-10 2015-10-14 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 動的バイナリ・トランスレータに関するメモリ管理のための装置、方法、およびコンピュータ・プログラム
MA44821A (fr) 2016-02-27 2019-01-02 Kinzinger Automation Gmbh Procédé d'allocation d'une pile de registres virtuels dans une machine à pile

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5144551A (en) * 1989-05-19 1992-09-01 Compaq Computer Corporation Computer memory management method utilizing segmentation and protection techniques
US5539899A (en) * 1992-04-03 1996-07-23 International Business Machines Corporation System and method for handling a segmented program in a memory for a multitasking data processing system utilizing paged virtual storage
US5515525A (en) * 1993-09-28 1996-05-07 Bull Hn Information Systems Inc. Emulating the memory functions of a first system on a second system
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5440710A (en) * 1994-03-08 1995-08-08 Exponential Technology, Inc. Emulation of segment bounds checking using paging with sub-page validity
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer

Also Published As

Publication number Publication date
EP0793179A3 (en) 1998-04-15
EP0793179A2 (en) 1997-09-03
US5765206A (en) 1998-06-09

Similar Documents

Publication Publication Date Title
US5765206A (en) System and method for emulating a segmented virtual address space by a microprocessor that provides a non-segmented virtual address space
US8719548B2 (en) Method and system for efficient emulation of multiprocessor address translation on a multiprocessor
US6321314B1 (en) Method and apparatus for restricting memory access
US9454490B2 (en) Invalidating a range of two or more translation table entries and instruction therefore
US5517651A (en) Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes
EP1914627B1 (en) Invalidating storage, clearing buffer entries
DK2862089T3 (en) COMPARISON AND REPLACEMENT OF DATE TABLE ENTRY
US7213125B2 (en) Method for patching virtually aliased pages by a virtual-machine monitor
US5317717A (en) Apparatus and method for main memory unit protection using access and fault logic signals
JPH10116200A (ja) ディジタルコンピュータシステムにおける所定の型の例外の回避を容易にするためのシステム及び方法
US5778211A (en) Emulating a delayed exception on a digital computer having a corresponding precise exception mechanism
US7600097B1 (en) Detecting raw hazards in an object-addressed memory hierarchy by comparing an object identifier and offset for a load instruction to object identifiers and offsets in a store queue
JPH03225455A (ja) データ処理システム
JP2015523650A (ja) ローカル・クリア制御
US8788799B2 (en) Server computer, computer system, and file management method
US5339417A (en) Computer system with two levels of guests
EP3649550B1 (en) An apparatus and method for controlling execution of instructions
JPH07210381A (ja) プロセッサ及びコンピュータ・システム
US7100006B2 (en) Method and mechanism for generating a live snapshot in a computing system
US5280592A (en) Domain interlock
CA1308812C (en) Apparatus and method for main memory unit protection using access and fault logic signals
US6324635B1 (en) Method and apparatus for address paging emulation
US20040073907A1 (en) Method and system of determining attributes of a functional unit in a multiple processor computer system
US5117491A (en) Ring reduction logic using parallel determination of ring numbers in a plurality of functional units and forced ring numbers by instruction decoding
CN117222990A (zh) 用于使用能力约束对存储器的访问的技术