JP4520683B2 - プロセッサ内での動作モードの確立 - Google Patents
プロセッサ内での動作モードの確立 Download PDFInfo
- Publication number
- JP4520683B2 JP4520683B2 JP2001552211A JP2001552211A JP4520683B2 JP 4520683 B2 JP4520683 B2 JP 4520683B2 JP 2001552211 A JP2001552211 A JP 2001552211A JP 2001552211 A JP2001552211 A JP 2001552211A JP 4520683 B2 JP4520683 B2 JP 4520683B2
- Authority
- JP
- Japan
- Prior art keywords
- processor
- bit
- address
- segment
- descriptor
- 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
- 230000007246 mechanism Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 17
- 238000000034 method Methods 0.000 claims description 12
- 230000011218 segmentation Effects 0.000 claims description 4
- 230000015654 memory Effects 0.000 description 59
- 238000012545 processing Methods 0.000 description 46
- 238000010586 diagram Methods 0.000 description 19
- 238000013519 translation Methods 0.000 description 10
- 230000014616 translation Effects 0.000 description 10
- 239000000872 buffer Substances 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 230000001427 coherent effect Effects 0.000 description 4
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013480 data collection Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- DVMJYBCIQUOGGA-VABKMULXSA-N (2s)-2-[[(2s)-2-[[2-[[2-[[(2s)-2-amino-3-(4-hydroxyphenyl)propanoyl]amino]acetyl]amino]acetyl]amino]-3-(4-bromophenyl)propanoyl]amino]-4-methylpentanoic acid Chemical compound C([C@@H](C(=O)N[C@@H](CC(C)C)C(O)=O)NC(=O)CNC(=O)CNC(=O)[C@@H](N)CC=1C=CC(O)=CC=1)C1=CC=C(Br)C=C1 DVMJYBCIQUOGGA-VABKMULXSA-N 0.000 description 1
- 108700004926 4'-bromo-Phe(4)- enkephalin-Leu Proteins 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/342—Extension of operand address space
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の分野】
この発明はプロセッサの分野に関し、より具体的には、プロセッサ内のアドレスサイズおよびオペランドサイズに関する。
【0002】
【関連技術の説明】
x86アーキテクチャ(IA−32アーキテクチャとしても知られる)は市場で広く受け入れられ、成功を享受してきた。したがって、x86アーキテクチャに従ってプロセッサを設計することが有利である。このようなプロセッサは、x86アーキテクチャに書込まれた大量のソフトウェアから利益を得ることができる(このようなプロセッサはソフトウェアを実行でき、そのプロセッサを採用するコンピュータシステムは大量の利用可能なソフトウェアのために市場でより広く受け入れられ得るからである)。
【0003】
コンピュータシステムは進化し続けてきたため、64ビットアドレスサイズ(時としてオペランドサイズ)が望ましいものとなった。より大きなアドレスサイズによって、より大きなメモリフットプリント(プログラムによって動作させられるデータおよびプログラム内の命令によって占有されるメモリの量)を有するプログラムがメモリスペース内で動作することが可能となる。より大きなオペランドサイズによって、より大きなオペランド上で、より正確にはオペランド内での動作が可能となる。64ビットアドレスおよび/またはオペランドサイズを用いると、より高性能なアプリケーションおよび/またはオペレーティングシステムが可能となり得る。
【0004】
残念ながら、x86アーキテクチャは最大32ビットオペランドサイズおよび32ビットアドレスサイズに限定されている。オペランドサイズとは、プロセッサによって動作させられるビットの数(たとえば、ソースまたはデスティネーションオペランド内のビット数)を指す。アドレスサイズとは、プロセッサが生成するアドレス内のビットの数を指す。したがって、x86アーキテクチャを採用するプロセッサは、64ビットアドレスサイズまたはオペランドサイズから利益を得ることができるアプリケーションのニーズを満たさないおそれがある。
この発明の概要の前に、2つの背景技術文献が以下のように確認される。
US−A−5 774 686は、拡張指示(extension indication)を記憶するように構成される制御レジスタを含むプロセッサを開示し、ここでは、前記プロセッサは、前記拡張指示に応答して、さらには命令セットフラグ(flag)とシステムフラグとに応答して、命令セット構成およびシステム構成を確立するように構成される。
US−A−5 787 495は、セグメントレジスタへのセレクタの記憶のステップを開示している。
【0005】
【発明の概要】
上述の問題は、ここで説明されるようなプロセッサによって大部分が解決される。そのプロセッサは、アドレスサイズが32ビットよりも大きく、かつオペランドサイズが32ビットまたは64ビットであり得る第1の処理モードをサポートする。アドレスサイズは公称64ビットとして示され得るが、プロセッサの種々の実施例は、32ビットよりも大きく64ビット以下のあらゆるアドレスサイズを第1の処理モードで実現し得る。第1の処理モードは、制御レジスタ内のイネーブル指示をイネーブル状態にし、さらにはセグメント記述子内の第1の動作モード指示および第2の動作モード指示を予め規定された状態にセットする(set)ことによって、確立され得る。x86プロセッサアーキテクチャとの互換ができる32ビットおよび16ビット処理のための互換モードが提供されるように、(イネーブル指示はイネーブル状態のままで)第1の動作モード指示と第2の動作モード指示との他の組合せが用いられ得る。有利なことには、x86プロセッサアーキテクチャとの互換性が提供され、したがってx86プロセッサアーキテクチャに書込まれた既存のコードをサポートしながら、64ビット処理が提供され得る。
【0006】
さらに、第1の処理モードのためのイネーブル指示が制御レジスタ内で依然としてイネーブル状態である間に32ビットおよび16ビット処理のための互換モードを提供することによって、ソフトウェアの互換性が簡素化され得る。たとえば、第1の処理モードを利用するようにコーディングされたオペレーティングシステムは、32ビットモードまたは16ビットモードに書込まれたアプリケーションを依然として実行し得る。プロセッサは、オペレーティングシステムコードを実行する間に第1の処理モードで動作し得る。アプリケーションコードを実行している間に、プロセッサは、(対応するセグメント記述子内の第1の動作モード指示および第2の動作モード指示によって指示されるように)32ビットモードまたは16ビットモードで動作し得る。しかし、オペレーティングシステムへの呼出が行なわれるか、または、例外または割込によってオペレーティングシステムコードが実行させられると、イネーブル指示はプロセッサにオペレーティングシステムコードは第1の処理モードにあり得ることを示し、したがって(オペレーティングシステムに対応するセグメント記述子内の第1の動作モード指示および第2の動作モード指示に基づいて)第1の処理モードがスイッチで確立されることを可能にし得る。
【0007】
加えて、制御レジスタ内のイネーブル指示がディセーブル状態にあるならば、プロセッサは16ビットおよび32ビットx86動作モードをサポートし得る。イネーブル指示がディセーブルにされていると、第1の動作モード指示は不定とされ得る。第2の動作モード指示は、プロセッサの動作モードが16ビットかまたは32ビットかを決定し得る。このようなモードは、たとえば、プロセッサが異なる態様で第1の動作モード指示を規定するセグメント記述子をサポートするならば、用いられ得る。
【0008】
概して、さらにはこの発明の1つの局面に従って、特に請求項1で規定されるようなプロセッサが提供される。このプロセッサは、セグメントレジスタと制御レジスタとを含む。セグメントレジスタは、第1の動作モード指示および第2の動作モード指示を含むセグメント記述子を識別するセグメントセレクタを記憶するように構成される。制御レジスタは、イネーブル指示を記憶するように構成される。イネーブル指示、第1の動作モード指示、および第2の動作モード指示に応答して、プロセッサは動作モードを確立するように構成され、この動作モードは、プロセッサがそれを実行するように構成されている命令のためにデフォルトオペランドサイズおよびデフォルトアドレスサイズを特定する。
【0009】
請求項11で規定されるように、セグメントセレクタは、プロセッサが結合されるメモリ内に記憶されるセグメント記述子テーブルへのインデックスを含み得る。セグメント記述子は、インデックスによって示されるエントリ内のセグメント記述子テーブル内に記憶され、プロセッサは、セグメントセレクタに応答してセグメント記述子テーブルからセグメント記述子を読出すように構成され、プロセッサは、イネーブル指示がイネーブル状態にあり、かつ動作モード指示が第1の状態にあることに応答して仮想アドレスが32ビットよりも大きい動作モードで動作するように構成される。
【0010】
この発明の別の局面に従うと、特に請求項17で規定されるような方法が提供される。動作モードは、プロセッサ内の制御レジスタの中のイネーブル指示、セグメント記述子内の第1の動作モード指示、およびセグメント記述子内の第2の動作モード指示に応答して、プロセッサ内で確立される。この動作モードは、プロセッサがそれを実行するように構成されている命令のためにデフォルトオペランドサイズおよびデフォルトアドレスサイズを特定する。動作モードに応答して、オペランドが取出され、アドレスが生成される。
【0011】
以下の詳細な説明を読み、さらには添付の図を参照することによって、この発明の他の目的および利点が明らかとなるだろう。
【0012】
この発明には種々の変形および代替の形が可能であるが、その具体的な実施例は図における例によって示され、ここで詳細に説明される。しかし、図およびそれに対する詳細な説明は、この発明を開示されたある特定の形に限定することを意図するものではなく、逆に、追加の請求項によって規定されるようなすべての変形、均等物、および代替物を包含することが意図されることが理解されるべきである。
【0013】
【好ましい実施例の詳細な説明】
図1を参照して、プロセッサ10のある実施例を例示するブロック図が示される。他の実施例も可能であり、企図される。図1の実施例では、プロセッサ10は、命令キャッシュ12、実行コア14、データキャッシュ16、外部インターフェイスユニット18、メモリマネージメントユニット(MMU)20、およびレジスタファイル22を含む。例示される実施例では、MMU20は、1組のセグメントレジスタ24、第1の制御レジスタ26、第2の制御レジスタ28、ローカル記述子テーブルレジスタ(LDTR)30、およびグローバル記述子テーブルレジスタ(GDTR)32を含む。命令キャッシュ12は、外部インターフェイスユニット18、実行コア14、およびMMU20に結合される。実行コア14はさらに、MMU20、レジスタファイル22、およびデータキャッシュ16に結合される。データキャッシュ16はさらに、MMU20と外部インターフェイスユニット18とに結合される。外部インターフェイスユニット18はさらに、MMU20と外部インターフェイスとに結合される。
【0014】
一般に、プロセッサ10は、x86アーキテクチャと互換性があり、かつ64ビット処理をサポートするための追加のアーキテクチャ特徴を含む、プロセッサアーキテクチャを採用する。プロセッサ10は、現在実行されているコードに対応するコードセグメント記述子内に記憶された情報に応答して、さらには1つ以上の制御レジスタ内に記憶された1つ以上のイネーブル指示に応答して、動作モードを確立するように構成される。ここで用いられるように、「動作モード」はプログラム的に選択可能な種々のプロセッサ属性のためのデフォルト値を指定する。たとえば、動作モードは、デフォルトオペランドサイズとデフォルトアドレスサイズとを指定し得る。デフォルトオペランドサイズは、命令の符号化がデフォルトをオーバーライドしない限りは、命令のオペランド内のビット数を指定する。デフォルトアドレスサイズは、命令の符号化がデフォルトをオーバーライドしない限りは、命令のメモリオペランドのアドレス内のビット数を指定する。デフォルトアドレスサイズは、メモリオペランドの少なくとも仮想アドレスサイズを指定し、また物理アドレスサイズも指定し得る。代替的には、物理アドレスサイズは、デフォルトアドレスサイズから独立していてもよく、代わりに以下で説明されるLMEビットに依存し得るか(たとえば、物理アドレスは、LMEビットがクリア(clear)ならば、32ビットであり得るが、LMEビットがセットされている(set)ならば、32ビットよりも大きく64ビットよりも小さい実現例によって異なるサイズであり得る)、または別の制御ビット(たとえば、別の制御レジスタ内の物理アドレス拡張ビットまたはPAEビット)に依存し得る。ここで用いられるように、「仮想アドレス」とは、メモリにアクセスするために実際に用いられるアドレスである「物理アドレス」へとアドレス変換メカニズム(たとえば、ページングメカニズム)によって変換される前に生成されるアドレスである。加えて、ここで用いられるように、「セグメント記述子」とは、メモリのセグメントのための状況およびアクセスコントロールを規定するためにソフトウェアが作成し、かつプロセッサが用いるデータ構造である。「セグメント記述子テーブル」とは、多数のエントリを有するメモリ内のテーブルであり、各エントリはセグメント記述子を記憶することが可能である。
【0015】
例示される実施例では、MMU20は動作モードを生成し、その動作モードを実行コア14に伝達する。実行コア14は、動作モードを用いて命令を実行する。より具体的には、実行コア14は、(メモリオペランドがキャッシュ可能でデータキャッシュ16でヒットするならばデータキャッシュ16を通して、またはメモリオペランドがキャッシュ不可能でデータキャッシュ16でミスとなるならば外部インターフェイスユニット18を通して)レジスタファイル22またはメモリからデフォルトオペランドサイズを有するオペランドを取出すが、以上は、ある特定の命令の符号化がデフォルトオペランドサイズをオーバーライドする場合以外のことであり、オーバーライドする場合には、オーバーライドする(overriding)オペランドサイズが用いられる。同様に、実行コア14は、アドレスがデフォルトアドレスサイズを有する、メモリオペランドのアドレスを生成するが、これはある特定の命令の符号化がデフォルトアドレスサイズをオーバーライドしない限りにおいてのことであり、オーバーライドする場合には、オーバーライドするアドレスサイズが用いられる。他の実施例では、動作モードを用いるプロセッサ10の部分(たとえば、実行コア14)内で、動作モードを生成するために用いられる情報を局所的にバックアップ(shadow)することもでき、動作モードは局所的なシャドーコピー(shadow copies)から決定され得る。
【0016】
上述のように、MMU20は、実行されているコードに対応するコードセグメント記述子に応答して、さらには制御レジスタ内の1つ以上の値に応答して、動作モードを生成する。コードセグメント記述子からの情報がセグメントレジスタ24のうちの1つ(CSまたはコードセグメントと呼ばれるレジスタ)の中に記憶される。加えて、制御レジスタ26は、デフォルトアドレスサイズが32ビットよりも大きい動作モード(「32/64モード」)と、32ビットおよび16ビット動作モードのためのある特定の互換モードとをイネーブルにするために用いられるイネーブル指示(LME)を記憶する。デフォルトオペランドサイズは32/64モードでは32ビットであり得るが、所望ならば命令が64ビットオペランドサイズでデフォルト32ビットオペランドサイズをオーバーライドし得る。LME指示がイネーブル状態ならば、32ビットモードおよび16ビットモードに加えて32/64モードが用いられ得る。LME指示がディセーブル状態ならば、32/64ビットはディセーブルにされる。ある実施例では、32/64モードでのデフォルトアドレスサイズは、実現例に依存するものであり得るが、64ビット以下のいかなる値であってもよい。さらに、仮想アドレスのサイズは、所与の実現ではその実現での物理アドレスのサイズと異なり得る。
【0017】
イネーブル指示は、イネーブル状態がビットのセットされた状態であり、かつディセーブル状態がビットのクリアにされた状態であるビットとしてここで説明され得ることが注目される。しかし、多数のビットが用いられる符号化と、イネーブル状態がクリア状態でありかつディセーブル状態がセット状態である符号化とを含む、他の符号化も可能である。したがって、この説明の残りの部分は、制御レジスタ26内のLME指示をLMEビットとして呼び、ここではイネーブル状態がセットであり、ディセーブル状態がクリアであり得る。しかし、上述のように、LME指示の他の符号化も企図される。
【0018】
セグメントレジスタ24は、プロセッサ10が実行しているコードが現在使っているセグメント記述子からの情報を記憶する。上述のように、CSは、セグメントレジスタ24のうちの1つであり、メモリのコードセグメントを指定する。コードセグメントは実行されているコードを記憶する。他のセグメントレジスタが種々のデータセグメントを規定し得る(たとえば、SSセグメントレジスタが規定するスタックデータセグメント、ならびにDSセグメントレジスタと、ESセグメントレジスタと、FSセグメントレジスタと、GSセグメントレジスタとが規定する最大4つのデータセグメント)。図1は例示的なセグメントレジスタ24Aの内容を例示し、これは、セレクタフィールド24AAおよび記述子フィールド24ABを含む。セレクタフィールド24AAは、実行コア14が実行するある特定のセグメントロード命令に応答してセグメントセレクタでロードされてある特定のセグメントを活動化させる。セグメントセレクタは、メモリ内のセグメント記述子テーブルの中のセグメント記述子を識別する。より具体的には、プロセッサ10は2つのセグメント記述子テーブル、すなわち、ローカル記述子テーブルとグローバル記述子テーブルとを採用し得る。ローカル記述子テーブルの基底アドレスがLDTR30内に記憶される。同様に、グローバル記述子テーブルの基底アドレスがGDTR32内に記憶される。セグメントセレクタ内のあるビット(テーブルインディケータビット)が記述子テーブルを選択し、セグメントセレクタの残りが、選択されたテーブルへのインデックスとして用いられる。ある命令がセグメントセレクタをセグメントレジスタ24のうちの1つにロードすると、MMU20は、対応するセグメント記述子を選択されたセグメント記述子テーブルから読出し、セグメント記述子からの情報をセグメント記述子フィールド(たとえば、セグメントレジスタ24Aのためのセグメント記述子フィールド24AB)に記憶する。セグメント記述子フィールド内に記憶される情報は、所望ならば、すべてのセグメント記述子を含む好適なあらゆるセグメント記述子のサブセットを含み得る。加えて、所望ならば、セグメント記述子または他のソースから引き出された他の情報がセグメント記述子フィールド内に記憶され得る。たとえば、ある実施例は、コードセグメント記述子から動作モード指示を復号化することもでき、動作モード指示の元の値というよりはむしろ復号化された値を記憶し得る。ある命令によってCSがセグメントセレクタでロードされると、コードセグメントは変化して、したがってプロセッサ10の動作モードが変化し得る。セグメント記述子テーブルは以下でより詳細に説明される。
【0019】
ある実施例では、CSセグメントレジスタのみが32/64モードで用いられる。データセグメントレジスタは無視される。16ビットモードおよび32ビットモードでは、コードセグメントおよびデータセグメントが活動状態になり得る。さらに、制御レジスタ28内の第2のイネーブル指示(PE)がMMU20の動作に影響を及ぼし得る。PEイネーブル指示を用いて保護モードをイネーブルにすることもでき、ここではセグメンテーションおよび/またはページングアドレス変換メカニズムが用いられ得る。PEイネーブル指示がディセーブル状態にある場合には、セグメンテーションおよびページングメカニズムがディセーブルにされ、プロセッサ10は「実モード」となる(ここでは、実行コア14が生成するアドレスは物理アドレスである)。LME指示と同様に、PE指示は、イネーブル状態はセットされたビットで、かつディセーブル状態はクリアなビットである、ビットであり得る。しかし、上述のように他の実施例も企図される。
【0020】
MMU20は、所望であれば、さらなるハードウェアメカニズムを採用し得ることが注目される。たとえば、MMU20は、仮想アドレスから物理アドレスへのページングアドレス変換を実現するためのページングハードウェアを含み得る。ページングハードウェアは、ページ変換を記憶するための変換ルックアサイドバッファ(TLB)を含み得る。
【0021】
制御レジスタ26および28はアーキテクトされた制御レジスタとして実現され得る(たとえば、制御レジスタ26はCR4で、制御レジスタ28はCR0であり得る)ことが注目される。代替的には、制御レジスタのうちの1つまたは両者がモデル専用レジスタとして実現されて32/64モードに干渉することなしにアーキテクトされた制御レジスタの他の用途が可能にされてもよい。
【0022】
一般に、命令キャッシュ12は、命令バイトを記憶するための高速キャッシュメモリである。実行コア14は、実行のために命令キャッシュ12から命令を取出す。命令キャッシュ12は、直接マッピング、セットアソシエーティブ、および完全にアソシエーティブな構成を含む、好適なあらゆるキャッシュ機構を採用し得る。命令の取出が命令キャッシュ12内でミスとなると、命令キャッシュ12は外部インターフェイスユニット18と通信してミッシングキャッシュラインを命令キャッシュ12へと入れる(fill)こともできる。加えて、命令キャッシュ12はMMU20と通信して命令キャッシュ12から取出された仮想アドレスのための物理アドレス変換を受取り得る。
【0023】
実行コア14は命令キャッシュ12から取出された命令を実行する。実行コア14は、レジスタファイル22からレジスタオペランドを取出し、レジスタファイル22内のデスティネーションレジスタを更新する。レジスタオペランドのサイズは、動作モードと、ある特定の命令のための動作モードのすべてのオーバーライドとによって制御される。同様に、実行コア14は、メモリオペランドのキャッシュ性(cacheability)およびデータキャッシュ16内でのヒットを条件として、データキャッシュ16からメモリオペランドを取出し、データキャッシュ16内のデスティネーションメモリロケーションを更新する。メモリオペランドのサイズも同様に、動作モードと、ある特定の命令のための動作モードのすべてのオーバーライドとによって制御される。さらに、実行コア14が生成するメモリオペランドのアドレスのサイズは、動作モードと、ある特定の命令のための動作モードのすべてのオーバーライドとによって制御される。
【0024】
実行コア14は好適なあらゆる構造を採用し得る。たとえば、実行コア14は、スーパーパイプラインコア、スーパースカラコア、またはそれらの組合せであり得る。実行コア14は、設計上の選択に従って、アウトオブオーダ投機的実行またはインオーダ実行を採用し得る。
【0025】
レジスタファイル22は64ビットレジスタを含み得るが、これは、プロセッサ10の動作モードおよびある特定の命令のためのあらゆるオーバーライドによって指示されるように64ビットレジスタ、32ビットレジスタ、16ビットレジスタ、または8ビットレジスタとしてアクセスされてもよい。ある実施例のレジスタフォーマットが以下で図7に関して説明される。レジスタファイル22内に含まれるレジスタは、LEAXレジスタ、LEBXレジスタ、LECXレジスタ、LEDXレジスタ、LEDIレジスタ、LESIレジスタ、LESPレジスタ、およびLEBPレジスタを含み得る。レジスタファイル22はさらにLEIPレジスタを含み得る。代替的には、実行コア14は、レジスタファイル22内のあらゆるレジスタがアーキテクトされたレジスタにマッピングされ得るレジスタリネームの形を採用してもよい。レジスタファイル22内のレジスタの数は、このような実施例については実現例によって異なり得る。
【0026】
データキャッシュ16は、データを記憶するように構成された高速キャッシュメモリである。データキャッシュ16は、直接マッピング、セットアソシエーティブ、および完全にアソシエーティブな構成を含む、好適なあらゆるキャッシュ機構を採用し得る。データの取出または更新がデータキャッシュ16内でミスとなると、データキャッシュ16は外部インターフェイスユニット18と通信してデータキャッシュ16へとミッシングキャッシュラインを入れることもできる。加えて、データキャッシュ16がライトバックキャッシュポリシーを採用する場合には、データキャッシュ16から外に出される(cast out)更新されるキャッシュラインが外部インターフェイスユニット18に伝達されてメモリにライトバックされ得る。データキャッシュ16はMMU20と通信してデータキャッシュ16に与えられる仮想アドレスのための物理アドレス変換を受取り得る。
【0027】
外部インターフェイスユニット18は、プロセッサ10の外部のシステムの部分と通信を行なう。外部インターフェイスユニット18は、上述のような命令キャッシュ12およびデータキャッシュ16のためにキャッシュラインを伝達し、MMU20とも通信を行ない得る。たとえば、外部インターフェイスユニット18は、MMU20に代わってセグメント記述子テーブルおよび/またはページングテーブルにアクセスし得る。
【0028】
所望ならば、プロセッサ10は統合レベル(integrated level)2(L2)キャッシュを含み得ることが注目される。さらに、外部インターフェイスユニット18は、システムとの通信に加えてバックサイドキャッシュと通信するように構成され得る。
【0029】
図2を参照して、32/64モードのためのコードセグメント記述子40のある実施例のブロック図が示される。他の実施例も可能であり、企図される。図2の実施例では、コードセグメント記述子40は8バイトを含み、最下位4バイトの上方に最上位4バイトが例示される。最上位4バイトは最下位4バイトよりも数の上でより大きなアドレスに記憶される。4バイトの各グループの最上位ビットは、図2(および以下の図3)でビット31として示され、最下位ビットはビット0として示される。(図2および図3の両方において)4バイト内の短い垂直の線は各々のビットを区切り、長い垂直の線もビットを区切るが、それはまたフィールドも区切る。
【0030】
以下の図3で示される32ビットおよび16ビットコードセグメント記述子とは異なって、コードセグメント記述子40は基底アドレスまたはリミット(limit)を含まない。プロセッサ10は(32ビットおよび16ビットモードで採用されるセグメント化されたリニアアドレススペースというよりはむしろ)32/64モードのためにフラット(flat)仮想アドレススペースを採用する。したがって、それ以外の場合には基底アドレスおよびリミットを記憶するであろうコードセグメント記述子40の部分は、セグメント記述子40内でリザーブされる。セグメンテーションを通して提供される仮想アドレスはここで「リニアアドレス」とも呼ばれ得ることが注目される。「仮想アドレス」という用語は、セグメント化されていないアーキテクチャ内で生成される他の仮想アドレスおよびリニアアドレスを含む、メモリをアドレス指定するために実際に用いられる物理アドレスへと変換メカニズムを通して変換されるすべてのアドレスを含む。
【0031】
セグメント記述子40は、Dビット42、(32/64モードコードセグメントのために1にセットされる)Lビット44、使用可能(available)ビット(AVL)46、現在の(P)ビット48、記述子特権レベル(DPL)50、およびタイプフィールド52を含む。以下の図5で示されるように、Dビット42とLビット44とはプロセッサ10の動作モードを決定するために用いられる。AVLビット46は、システムソフトウェア(たとえば、動作システム)によって用いられることのために使用可能である。Pビット48が用いられてセグメントがメモリ内に存在するか否かが示される。Pビット48がセットされていると、セグメントは存在し、コードがセグメントから取出され得る。Pビット48がクリアであると、セグメントは存在せず、例外が生じて(たとえば、ディスク記憶デバイスから、またはネットワーク接続を通して)セグメントがメモリへとロードされる。DPLはセグメントの特権レベルを示す。プロセッサ10は、(DPLフィールド内で0から3として符号化され、かつレベル0が最も特権を与えられたレベルである)4つの特権レベルを採用する。ある特定の命令およびプロセッサリソース(たとえば、構成レジスタおよび制御レジスタ)は、より特権を与えられたレベルでのみ実行可能またはアクセス可能であり、より低い特権レベルでこれらの命令を実行すること、またはこれらのリソースにアクセスすることを試みることによって、結果として例外が生じる。コードセグメント40からの情報がCSセグメントレジスタにロードされると、DPLがプロセッサ10の現在の特権レベル(CPL)となる。タイプフィールド52はセグメントのタイプを符号化する。コードセグメントでは、タイプフィールド52の最上位ビット2ビットがセットされ得る(最上位ビットはシステムセグメントからコードまたはデータセグメントを区別し、第2の最上位ビットはデータセグメントからコードセグメントを区別する)。残りのビットはさらなるセグメントタイプ情報(たとえば、実行専用、実行および読出、または実行および読出専用、コンフォーミング、およびコードセグメントがアクセスされたか否か)を符号化し得る。
【0032】
コードセグメント記述子内のいくつかの指示は、セットされた値およびクリアされた値が規定の意味を有するビットとして説明されるが、他の実施例は所望であれば反対の符号化を採用してもよく、多数のビットを用いてもよいことが注目される。したがって、たとえば、Dビット42とLビット44との各々は、上述のイネーブル指示の考察と同様に、所望であれば1つ以上のビットであり得る動作モード指示の例であり得る。
【0033】
図3を参照して、32および16ビット互換モードのためのコードセグメント記述子54のある実施例のブロック図が示される。他の実施例も可能であり、企図される。図2の実施例と同様に、コードセグメント記述子54も8バイトを含み、最下位4バイトの上方に最上位4バイトが示される。
【0034】
コードセグメント記述子54は、コードセグメント記述子40の上の説明と同様に、Dビット42、Lビット44、AVLビット46、Pビット48、DPL50、およびタイプフィールド52を含む。加えて、コードセグメント記述子54は、基底アドレスフィールド(参照番号56A、56B、および56C)、リミットフィールド(参照番号57Aおよび57B)、およびGビット58を含む。基底アドレスフィールドは、(LEIPレジスタ内に記憶される)ロジカル取出アドレスに加えられる基底アドレスを記憶してある命令のリニアアドレスを形成し、これは次に任意でページング変換メカニズムを通して物理アドレスに変換され得る。リミットフィールドは、セグメントのサイズを規定するセグメントリミットを記憶する。セグメントリミットよりも大きな論理アドレスのバイトにアクセスする試みは、認められず、例外を生じさせる。Gビット58はセグメントリミットフィールドのスケーリングを決定する。Gビット58がセットされると、リミットは4Kバイトページにスケーリングされる(たとえば、12の最下位0がリミットフィールド内のリミットに追加される)。Gビット58がクリアならば、リミットはそのまま用いられる。
【0035】
32/64モードが制御レジスタ26内のLMEビットを介してイネーブルにされていない時の32および16ビットモードのためのコードセグメント記述子は、Lビットがリザーブされていて0であるように規定されている以外は、コードセグメント記述子54と同様のものであり得ることが注目される。ある実施例に従った32ビットモードおよび16ビットモード(LMEビットがセットされた互換モードと、LMEビットがクリアにされたモードとの両者)では、データセグメントも用いられることがさらに注目される。データセグメント記述子は、Dビット42がセグメントの上限を指示するように規定されているか、または(スタックセグメントのための)デフォルトスタックサイズを定めるように規定されていること以外は、コードセグメント記述子54と同様のものであり得る。
【0036】
次に図4を参照して、制御レジスタ26内のLMEビットと、32/64モード、ならびに32ビットモードおよび16ビットモードを実現する高度な柔軟性を可能にするための互換モードとの例示的な用途を例示する図が示される。ボックス60はLMEビットがセットされているときの例示的な動作を示し、ボックス62はLMEビットがクリアであるときの例示的な動作を示す。
【0037】
ボックス60で示されるように、LMEビットがセットされているときにサポートされる互換モードは、64ビットオペレーティングシステム(つまり、32ビットを超える仮想アドレススペースおよび物理アドレススペース、および/または64ビットのデータオペランドを利用するように設計されるオペレーティングシステム)が32ビットアプリケーションプログラム(つまり、32ビットのオペランドサイズおよびアドレスサイズを用いて書込まれるアプリケーションプログラム)で動作することを可能にし得る。オペレーティングシステムのためのコードセグメントは、図2で示される32/64モードコードセグメント記述子40によって規定され得るため、Lビットがセットされ得る。したがって、オペレーティングシステムは、(たとえば、セグメント記述子テーブルおよびページング変換テーブルを含む)オペレーティングシステムが維持するデータ構造およびオペレーティングシステムコードのために拡張された仮想アドレススペースおよび物理アドレススペースを利用することができる。オペレーティングシステムはまた、デフォルト32ビットオペランドサイズをオーバーライドする命令符号化を用いて32/64モードで規定される64ビットデータタイプを用いることもできる。さらに、オペレーティングシステムは、セグメント記述子テーブル内で1つ以上の32ビット互換モードセグメント記述子(クリアにされたLビット、セットされたDビット、たとえば、図2で示されるセグメント記述子54)を確立し、さらには互換モードセグメントのうちの1つへと分岐することによって、32ビットアプリケーションプログラムを実行することもできる。同様に、オペレーティングシステムは、セグメント記述子テーブル内で1つ以上の16ビット互換モードセグメント記述子(クリアにされたLビット、クリアにされたDビット、たとえば、図2で示されるセグメント記述子54)を確立させ、さらには互換モードセグメントのうちの1つへと分岐することによって、16ビットアプリケーションプログラムを実行することもできる。したがって、64ビットオペレーティングシステムは、互換モードで既存の32ビットアプリケーションプログラムおよび16ビットアプリケーションプログラムを実行するための能力を保持することができる。ある特定のアプリケーションプログラムは、拡張された能力がそのプログラムに望まれると32/64モードに移され得るか、または32ビットまたは16ビットのままであり得る。
【0038】
プロセッサ10が32ビットアプリケーションプログラムを実行している間、プロセッサ10の動作モードは32ビットである。したがって、アプリケーションプログラムは一般に、それが(たとえば、オペレーティングシステムも32ビットオペレーティングシステムである時)LMEビットがクリアな状態で32ビットモードで実行されるのと同じ態様で、実行され得る。しかし、アプリケーションプログラムは、オペレーティングシステムサービスを呼出し、例外を経験するか、または終了し得る。これらの事例ごとに、プロセッサ10は(図4の矢印64で示されるように)オペレーティングシステムコードの実行に戻り得る。オペレーティングシステムコードは32/64モードで動作するため、オペレーティングシステムサービスルーチン、例外ハンドラ等のアドレスは32ビットを超え得る。したがって、プロセッサ10は、オペレーティングシステムコードに戻る前に32ビットよりも大きなアドレスを生成する必要があり得る。LMEビットは、現在の動作モードがたとえ32ビットであったとしてもオペレーティングシステムは32/64モードで動作しているかもしれないという表示をプロセッサ10に提供し、このようにして、プロセッサ10は、オペレーティングシステム呼出および例外のためにより大きなアドレススペースを提供し得る。
【0039】
ある実施例では、割込セグメント記述子テーブル内に記憶される割込セグメント記述子を用いて、例外が処理される。LMEビットがセットされていると、割込セグメント記述子は、例外を処理するオペレーティングシステムルーチンの64ビットアドレスを含む16バイトエントリであり得る。LMEビットがクリアであると、割込セグメント記述子は、32ビットアドレスを含む8バイトエントリであり得る。したがって、プロセッサ10はLME指示に応答して割込記述子テーブルにアクセスする(つまり、LMEビットがセットされていると16バイトエントリを読出し、LMEビットがクリアであると8バイトエントリを読出す)。したがって、例外は、たとえアプリケーションプログラムが32ビット互換モードで実行されていても、64ビットオペレーティングシステムによって処理され得る。さらに、プロセッサ10は、LMEビットがクリアならば32ビット(または16ビット)オペレーティングシステムをサポートする。
【0040】
同様に、プロセッサ10内の呼出メカニズムは、LMEビットの状態に基づいて異なった態様で動作し得る。オペレーティングシステムは典型的にはアプリケーションプログラムよりもより高い特権レベルで実行されるため、アプリケーションプログラムからオペレーティングシステムへの転送(transfers)は、慎重に制御されてアプリケーションプログラムは許可されたオペレーティングシステムルーチンの実行のみ可能であることが確実にされる。より一般的には、特権レベルの変化は慎重に制御される。ある実施例では、プロセッサ10は、オペレーティングシステム呼出を行なうために少なくとも2つのメカニズムをサポートし得る。1つの方法は、(以下でより詳細に説明される)セグメント記述子テーブル内の呼出ゲートを通してのものであり得る。別の方法は、プロセッサ10がサポートするSYSCALL命令であり得るが、これはモデル専用レジスタをオペレーティングシステムルーチンのアドレスのソースとして用いる。モデル専用レジスタの更新は特権を与えられた動作であり、したがって、より高い特権レベルで実行されているコード(たとえば、オペレーティングシステムコード)のみが、SYSCALL命令によって用いられるモデル専用レジスタ内にアドレスを確立することができる。SYSCALL方法では、第2のモデル専用レジスタが、オペレーティングシステムルーチンのアドレスの最上位32ビットを記憶するように規定され得る。したがって、LMEビットがセットされていると、アドレスは2つのモデル専用レジスタから読出され得る。LMEビットがクリアであると、アドレスは最下位32ビットを記憶するモデル専用レジスタから読出され得る。代替的には、SYSCALL命令が用いるモデル専用レジスタは64ビットに拡張されてもよく、アドレスは、LMEビットの状態に基づいて32ビット(モデル専用レジスタの最下位32ビット)または64ビットであり得る。
【0041】
上述のように、LMEビットをセットすることによって、オペレーティングシステムは64ビットであり、かつ1つ以上のアプリケーションプログラムは64ビットではない(たとえば、図示されるように32ビットまたは上の説明と同様の様態で動作する16ビットである)システムでプロセッサ10が動作することが可能となり得る。加えて、ボックス62で示されるように、LMEビットをクリアにすることによって、x86アーキテクチャと互換性がある32ビットまたは16ビットモードでプロセッサ10が動作することが可能となり得る。上述のように、例外およびオペレーティングシステム呼出を処理するためのメカニズムは、セットされたまたはクリアなLMEビットを処理するように設計され、したがって、たとえプロセッサ10が32/64モードで動作可能であっても、32ビットおよび16ビットモードは変更されずに動作し得る。さらに、LMEビットがクリアなときにx86と互換性のある16ビットおよび32ビットモードを提供することによって(さらには、これらのモード内にリザーブされるLビットを無視することによって)、プロセッサ10は、Lビットが32/64モード以外の他のいくつかの目的のために規定されるシステムで動作し、LMEビットがセットされると依然として32/64モードをサポートし得る。したがって、32ビットオペレーティングシステムおよび32ビットまたは16ビットアプリケーションプログラムを採用するシステムは、プロセッサ10を採用することができる。続いて、システムは、プロセッサ10を変える必要なしに64ビットオペレーティングシステムへとアップグレードされ得る。
【0042】
図4で例示されていないものは、LMEビットがセットされた状態で動作する64ビットオペレーティングシステムおよび64ビットアプリケーションプログラムである。64ビットオペレーティングシステムおよび32ビットアプリケーションプログラムのために上で説明されたオペレーティングシステムルーチンの呼出のためのメカニズムは、64ビットアプリケーションプログラムにも等しく当てはまり得る。加えて、(以下でより詳細に説明されるように)64ビットオフセットをサポートする呼出ゲートがサポートされる。
【0043】
次に図5を参照して、プロセッサ10のある実施例に従った、LMEビット、コードセグメント記述子内のLビット、およびコードセグメント記述子内のDビットの状態と、プロセッサ10の対応する動作モードとを例示する表70が示される。他の実施例も可能であり、企図される。表70が示すように、LMEビットがクリアならば、Lビットはリザーブされる(0と規定される)。しかし、プロセッサ10は、LMEビットがクリアならば、Lビットをドントケアとして扱い得る。このようにして、LMEビットがクリアならば、x86と互換性のある16ビットおよび32ビットモードがプロセッサ10によって提供され得る。LMEビットがセットされていてコードセグメント内のLビットがクリアならば、プロセッサ10によって互換動作モードが確立され、Dビットが16ビットまたは32ビットモードを選択する。LMEビットおよびLビットがセットされていてDビットがクリアならば、プロセッサ10のために32/64モードが選択される。最後に、LMEビット、Lビット、およびDビットがすべてセットされているならば選択されるであろうモードがリザーブされる。
【0044】
上で言及され、以下の図6で例示されるように、32/64動作モードは(実現例に依存するが最大64ビットの)32ビットを超えるデフォルトアドレスサイズと、32ビットのデフォルトオペランドサイズとを含む。32ビットのデフォルトオペランドサイズは、ある特定の命令の符号化を介して64ビットへとオーバーライドされてもよい。プログラムが行なうデータ操作の多くにとって32ビットが十分であるプログラムのために平均命令長を最小にするために、32ビットのデフォルトオペランドサイズが選択される(なぜならば、64ビットへとオーバーライドすることは命令符号化に命令プレフィックスを含むことを伴い、これによって命令長が増大させられ得るためである)。(現在存在するプログラムのうちのかなりの数であり得る)このようなプログラムでは、64ビットオペランドサイズへと移ることによって、プログラムが達成する実行性能が実際に減じられるおそれがある(つまり、実行時間が増大する)。この減少は、64ビット値が記憶されるときにプログラムが用いるデータ構造のメモリサイズの倍増(doubling)にある程度起因し得る。32ビットが十分ならば、これらのデータ構造は32ビット値を記憶する。したがって、データ構造がアクセスされるときにアクセスされるバイトの数は、32ビット値が十分であり得るときに64ビット値が用いられると増大し、増大したメモリ帯域幅(および各値によって占有される増大したキャッシュスペース)によって、実行時間が増大するおそれがある。したがって、デフォルトオペランドサイズとして32ビットが選択され、ある特定の命令の符号化を介してデフォルトがオーバーライドされ得る。
【0045】
次に図6を参照して、ある特定の命令のために動作モードをオーバーライドするための命令プレフィックスの用途のある実施例を例示する表72が示される。他の実施例も可能であり、企図される。実行コア14は、表72に従ってある特定の命令のためにアドレスサイズおよびオペランドサイズを決定する。特に図6で示される実施例では、命令プレフィックスバイト(アドレスサイズオーバーライドプレフィックスバイト)が用いられてデフォルトアドレスサイズがオーバーライドされ、別の命令プレフィックスバイト(オペランドサイズオーバーライドプレフィックスバイト)が用いられてデフォルトオペランドサイズがオーバーライドされ得る。アドレスサイズオーバーライドプレフィックスバイトは(16進法では)67として符号化され、オペランドサイズオーバーライドプレフィックスバイトは(16進法では)66として符号化される。ある特定の命令でのオーバーライドプレフィックスの数によって、表の列が形成される。表の行は、動作モードおよび対応する列内のオーバーライドプレフィックスの数に基づいて、ある特定の命令のオペランドサイズおよびアドレスサイズを示す。オーバーライドプレフィックスの数は、対応するタイプのオーバーライドプレフィックスの数を指す(たとえば、アドレスサイズの行は、アドレスサイズオーバーライドプレフィックスの数に基づいたアドレスサイズであり、オペランドサイズの行は、オペランドサイズオーバーライドプレフィックスの数に基づいたオペランドサイズである)。
【0046】
オーバーライドプレフィックスの数で「0」とラベル付けされる列は、各動作モードのためのデフォルトオペランドサイズおよびアドレスサイズを示す。32ビットモードの行および16ビットモードの行は、互換モード(LMEセット)と標準モード(LMEクリア)との両者を指すことが注目される。さらに、デフォルトアドレスサイズは32/64モードでは64ビットであるが、アドレスビットの実際の数は、上述のように実現例に依存したものであり得る。
【0047】
表72で示されるように、32/64ビットモード内に1つのアドレスサイズオーバーライドプレフィックスを含むことによって、アドレスサイズが64ビット(所与の実現では64ビットよりも少ないものであり得るが、32ビットよりは大きい)から32ビットへと変化する。加えて、32/64ビットモード内に1つのオペランドサイズオーバーライドプレフィックスを含むことによって、オペランドサイズが32ビットから64ビットへと変化する。(たとえば、「C」プログラミング言語において短整数データ型をサポートするために)16ビットオペランドにも備えることが所望であり得る。したがって、32/64モード内に2つのオペランドサイズオーバーライドプレフィックスを含むことによって、16ビットのオペランドサイズが選択される。2つよりも多いオペランドサイズオーバーライドプレフィックスを含むことによって結果として、2つのオペランドサイズオーバーライドプレフィックスを含むときと同じオペランドサイズが得られる。同様に、1つよりも多いアドレスサイズオーバーライドプレフィックスを含むことによって結果として、1つのアドレスサイズオーバーライドプレフィックスを含むときと同じアドレスサイズが得られる。
【0048】
32ビットモードでは、1つのオーバーライドプレフィックスを含むことによって、デフォルト32ビットサイズが16ビットへと切換えられ、1つよりも多いオーバーライドプレフィックスを含むことは、1つのオーバーライドプレフィックスを含むことと同じ効果を有する。同様に、16ビットモードでは、1つのオーバーライドプレフィックスを含むことによって、デフォルト16ビットサイズが32ビットに切換えられ、1つよりも多いオーバーライドプレフィックスを含むことは、1つのオーバーライドプレフィックスを含むことと同じ効果を有する。
【0049】
図7を参照して、LEAXレジスタ74のある実施例を例示する図が示される。レジスタファイル22内の他のレジスタも同様であり得る。他の実施例も可能であり、企図される。図7の実施例では、レジスタ74は64ビットを含み、最上位ビットはビット63としてラベル付けされ、最下位ビットはビット0としてラベル付けされる。図7は、(Aレジスタがオペランドとして選択された場合)命令のオペランドサイズに基づいてアクセスされるLEAXレジスタの部分を示す。より具体的には、オペランドサイズが64ビットならば、(図7で「LEAX」とラベル付けされたブレース(brace)によって示されるように)レジスタ74全体がアクセスされる。オペランドサイズが32ビットならば、(図7で「EAX」とラベル付けされたブレースによって示されるように)レジスタ74のビット31:0がアクセスされる。オペランドサイズが16ビットならば、(図7で「AX」とラベル付けされたブレースによって示されるように)レジスタのビット16:0がアクセスされる。上述のオペランドサイズは、動作モードおよびオーバーライドプレフィックスのいずれかを含むことに基づいて選択され得る。しかし、8ビットレジスタ(図7のAHまたはAL)にアクセスするある特定の命令演算コードが規定される。
【0050】
次に図8を参照して、グローバル記述子テーブル80およびローカル記述子テーブル82のある実施例を例示するブロック図が示される。他の実施例も可能であり、企図される。図8で示され、かつ上で言及されるように、グローバル記述子テーブル80の基底アドレスはGDTR32によって提供され、ローカル記述子テーブル82の基底アドレスはLDTR30によって提供される。したがって、仮想アドレススペース内にグローバル記述子テーブル80とローカル記述子テーブル82とを恣意的に置くことをサポートするために、GDTR32とLDTR30とは64ビット基底アドレスを記憶し得る。LMEビットがクリアならば、基底アドレスの最下位32ビットが用いられて記述子テーブルが位置付け(locate)られ得る。
【0051】
グローバル記述子テーブル80とローカル記述子テーブル82との両者は、種々の種類のセグメント記述子を記憶するように構成される。たとえば、32/64モードコードセグメント記述子84、86、および90と、互換モード記述子92および94とが図8で示される。記述子84−94の各々は対応する記述子テーブル内でエントリを占有し、ここではエントリは1つのセグメント記述子(たとえば、図2および図3で示される実施例では8バイト)を記憶することができる。グローバル記述子テーブル80内の別の種類の記述子はローカル記述子テーブル記述子96であり、これは、ローカル記述子テーブル82のためにシステムセグメントを規定し、LDTR30内に記憶される基底アドレスを提供する。LDTR30は、グローバル記述子テーブル80内に記述子96を位置付けるセグメントセレクタをオペランドとして有するLLDT命令を用いて初期設定される。グローバル記述子テーブル80は、所望ならば、異なったローカル記述子テーブルを位置付ける多数のLDT記述子を記憶し得る。LMEビットがセットされているとLDT記述子96は64ビットオフセットを記憶し得るため、LDT記述子96はグローバル記述子テーブル80内に2つのエントリを占有し得る。LMEビットがクリアであると、LDT記述子96はグローバル記述子テーブル80内に単一のエントリを占有し得る。同様に、各々のタスクは、記述子テーブル80および82のうちの1つの中にタスク状態セグメント(TSS)記述子を有してタスクに関連するある特定の情報を記憶し得る。したがって、TSS記述子は2つのエントリを占有してTSS情報が64ビットアドレススペース内のどこにでも記憶されることを可能にし得る。
【0052】
ローカル記述子テーブルおよびグローバル記述子テーブルはまた、呼出ゲート記述子を記憶することもできる。たとえば、図8は呼出ゲート記述子100、102、および104を示す。呼出ゲート記述子は、64ビットオフセットもサポートし、したがって、対応する記述子テーブル内で2つのエントリを占有し得る。例示的な32/64呼出ゲート記述子が以下の図9で示される。
【0053】
セグメント記述子テーブル80および82を8バイトで維持し、かつ64ビットオフセットを含む記述子のために2つのエントリを用いることによって、16ビットモードおよび32ビットモードのための記述子は、64ビットオフセットを含む記述子と同じテーブル内に記憶され得る。したがって、互換モードで動作するアプリケーションは、64ビットオペレーティングシステムと同じセグメント記述子テーブル内で適切な記述子を有することができる。
【0054】
一般に、呼出ゲートが用いられてより小さい特権レベルを有するコードセグメントとより大きい特権レベルを有するコードセグメント(たとえば、オペレーティングシステムルーチンを呼出すアプリケーションプログラム)との間の遷移が管理される。より少ない特権を与えられたコードは、呼出または、ターゲットとしてセグメントセレクタ(および、この事例では無視されるが、セグメントへのオフセット)を特定する他の分岐命令を含む。セグメントセレクタは、記述子テーブル内の呼出ゲート記述子を識別し、これは、より大きな特権レベルコードを実行するのに必要とされる最小の特権レベルを含む。プロセッサ10が呼出または他の分岐命令を実行するとき、プロセッサ10はセグメントセレクタで記述子テーブルに索引をつけ、呼出ゲートを位置付ける。プロセッサ10の現在の特権レベルと、(セグメントセレクタの一部であり、特権検査目的のために現在の特権レベルを下げるために用いられ得る)リクエスタ(requestor)特権レベルとの両者が十分な特権を反映していると(たとえば、特権レベルは呼出ゲート記述子内の最小特権レベルよりも数の上において少ないかまたはそれと等しいと)、呼出が進み得る。呼出ゲート記述子は、ターゲットセグメント(より大きな特権レベルを有するコードセグメント)のためのセグメントセレクタと、コード取出がそこで開始されるターゲットセグメント内のオフセットとを含む。プロセッサ10は、呼出ゲート記述子からセグメントセレクタおよびオフセットを抽出し、ターゲットセグメント記述子を読出してより大きな特権レベルを有するコードの取出を開始する。一方で、現在の特権レベルまたはリクエスタ特権レベルのいずれかが呼出ゲート記述子内の最小特権レベルよりも小さい特権レベルであるならば(たとえば、現在の特権レベルまたはリクエスタ特権レベルのいずれかが最小特権レベルよりも数の上で大きいならば)、プロセッサ10は、呼出ゲート記述子にアクセスした後、かつターゲット記述子にはアクセスすることなしに、例外を知らせる。したがって、より大きな特権レベルで実行されているコードへのアクセスは慎重に制御される。
【0055】
上述のように、呼出ゲート記述子は、ターゲットセグメントセレクタおよびセグメント内のオフセットを含む。ターゲットセグメント記述子への参照は、呼出ゲート記述子から別の記述子への矢印として図8で例示される。たとえば、呼出ゲート記述子100はモード記述子90を参照し、呼出ゲート記述子102は32/64モード記述子86を参照し、呼出ゲート記述子104は32/64モード記述子84を参照する。図8で示されるように、呼出ゲート記述子は両方の記述子テーブル内に記憶されてもよく、他方のテーブル内または同じテーブル内の記述子を参照し得る。さらに、呼出ゲート記述子は、32/64モード記述子または互換モード記述子のいずれかを参照し得る。
【0056】
一般に、プロセッサ10がセグメントセレクタを用いて記述子テーブルのうちの1つから記述子を読出すと、1つの記述子テーブルエントリが読出される。しかし、LMEビットがセットされていて、かつプロセッサ10によってエントリが呼出ゲート記述子、LDT記述子、またはTSS記述子であることが検出されると、プロセッサ10はテーブル内の次に続くエントリを読出して記述子の残りを得る。したがって、呼出ゲート記述子、LDT記述子、およびTSS記述子は、テーブルエントリのサイズを再定義することなしに、さらには1つのエントリを占有する記述子のためにテーブルはどのように管理されるのかを再定義することなしに、異なるサイズの互換モード記述子(または標準モード記述子)とともにテーブル内で共存し得る。さらに、TSS記述子、LDT記述子、および呼出ゲート記述子の第2の部分はセグメント記述子としてアクセスされ得るため、以下の図9で示されるように、記述子が記述子テーブルへと記憶されると、第2の部分内での記述子のタイプフィールドであり得る記述子の部分が無効タイプにセットされる。代替的には、記述子テーブル読出が行なわれるたびに、プロセッサ10は2つの連続するエントリを記述子テーブルから読出すこともでき、第1のエントリが呼出ゲート、LDT記述子タイプ、またはTSS記述子タイプであると第2のエントリが用いられ得る。
【0057】
いずれかの動作モード(32/64モード、32ビット互換モード、または16ビット互換モード)で動作しているコードは、LMEビットがセットされていると呼出ゲート記述子を参照し得ることが注目される。したがって、32ビットまたは16ビットアプリケーションは、たとえルーチンのアドレスが32ビットまたは16ビットアドレススペースの外にあったとしても、呼出ゲートメカニズムを用いてオペレーティングシステムルーチンを呼出すことができる。加えて、呼出ゲート記述子は、あらゆる動作モードを有するコードセグメントを参照することができる。オペレーティングシステムは、(32ビットターゲットセグメントのために)呼出ゲート内のオフセットの最上位32ビットが0であるか、または(16ビットターゲットセグメントのために)呼出ゲート内のオフセットの最上位48ビットが0であることを保証し得る。
【0058】
図9を参照して、呼出ゲート記述子120のある実施例のブロック図が示される。他の実施例も可能であり、企図される。図2および図3と同様に、最下位バイトの上方に最上位バイトが示される。4バイトの各グループの最上位ビットがビット31として示され、最下位ビットがビット0として示される。4バイト内の短い垂直の線は各々のビットを区切り、長い垂直の線もビットを区切るが、それはまたフィールドも区切る。上述のように、呼出ゲート記述子は記述子テーブル内で2つのエントリを占有する。図9の水平方向の破線によって、呼出ゲート記述子120は(線の上の)上部と(線の下の)下部とに分割される。下部は、呼出ゲートのセグメントセレクタによって索引付けされるエントリ内に記憶され、上部は次に続くエントリ内に記憶される。
【0059】
呼出ゲート記述子120は、ターゲットセグメントセレクタ(フィールド122)、オフセット(フィールド124A、124B、および124C)、現在の(P)ビット126、記述子特権レベル(DPL)128、タイプフィールド130、および擬似タイプフィールド132を含む。Pビットは上述のPビット48と同様のものである。ターゲットセグメントセレクタは、(より大きな特権レベルを有する)ターゲットセグメント記述子が記憶される記述子テーブルのうちの1つのエントリを識別する。オフセットは、コード取出が開始されるアドレスを識別する。32/64モードでは、コードセグメントは基底アドレスを有さず、さらにはフラットリニアアドレス指定が用いられるため、オフセットはコード取出が始まるアドレスである。他のモードでは、オフセットはターゲットセグメント記述子が規定するセグメントベースに加えられてコード取出が始まるアドレスが生成される。上述のように、オフセットはこの実施例では64ビットを含み得る。
【0060】
DPL128は、(現在の特権レベルおよび要求された(requested)特権レベルの両方において)呼出ルーチンが有さなければならない最小特権レベルを記憶し、これは呼出ゲートをうまく通り抜け、ターゲットセグメント記述子内で特定される特権レベルにおいて呼出されたルーチンを実行し得る。
【0061】
タイプフィールド130は呼出ゲート記述子タイプにコーディングされる。ある実施例では、このタイプは、x86アーキテクチャ内で規定される32ビット呼出ゲートタイプとしてコーディングされる。代わりに、他の符号化が用いられてもよい。最後に、擬似タイプフィールド132が無効タイプ(たとえば、0)にコーディングされて呼出ゲート記述子120の上半分を記憶するセグメントテーブルエントリを識別するセグメントセレクタが与えられると(presented)、プロセッサ10によって例外が知らされることが保証される。
【0062】
LDT記述子96の下半分は32ビットLDT記述子と同様のものであり得ることと、LDT記述子96の上半分は呼出ゲート記述子120の上半分と同様のものであり得ることとが注目される。
【0063】
次に図10を参照して、プロセッサ10が実行する命令のための命令フォーマット140のブロック図が示される。他の実施例も可能であり、企図される。図10の実施例では、命令フォーマット140は、プレフィックスフィールド142、演算コードフィールド144、mod R/M(レジスタ/メモリ)フィールド146、SIB(スケールインデックスベース)フィールド148、変位フィールド150、および即値フィールド152を含む。演算コードフィールド144以外の各フィールドは任意である。したがって、命令フォーマット140によって、可変長命令が規定され得る。
【0064】
プレフィックスフィールド142は、命令のためのいかなる命令プレフィックスのためにも用いられる。上述のように、オペランドサイズオーバーライドプレフィックスおよびアドレスサイズオーバーライドプレフィックスはある命令へと符号化されてプロセッサ10の動作モードをオーバーライドし得る。これらのオーバーライドプレフィックスがプレフィックスフィールド142内に含まれる。上述のように、オペランドサイズオーバーライドプレフィックスおよびアドレスサイズオーバーライドプレフィックスの各々は、バイト単位で(by bytes)プレフィックスフィールド142内に含まれ得る。
【0065】
演算コードフィールド144は、命令の演算コード(つまり、命令セット内のどの命令が実行されているのか)を含む。いくつかの命令では、オペランドは演算コードフィールド144内で特定され得る。他の命令では、演算コードの一部がmod R/Mフィールド146内に含まれ得る。さらに、ある特定の演算コードは、オペランドとして8ビットまたは16ビットレジスタを特定する。したがって、演算コード符号化はまた、プロセッサ10の動作モードによって示されるデフォルトをオーバーライドするように働き得る。
【0066】
Mod R/Mフィールド146およびSIBフィールド148は、命令のオペランドを示す。変位フィールド150はいかなる変位情報をも含み、即値フィールド152は即値オペランドを含む。
【0067】
コンピュータシステム
図11を参照して、バスブリッジ202を通して種々のシステム構成要素に結合されるプロセッサ10を含むコンピュータシステム200のある実施例のブロック図が示される。他の実施例も可能であり、企図される。示されるシステムでは、メモリバス206を通してメインメモリ204がバスブリッジ202に結合され、AGPバス210を通してグラフィックスコントローラ208がバスブリッジ202に結合される。最後に、PCIバス214を通して複数のPCIデバイス212A−212Bがバスブリッジ202に結合される。EISA/ISAバス220を通した1つ以上のEISAまたはISAデバイス218への電気的インターフェイスに対応する(accomodate)ように、2次的なバスブリッジ216がさらに設けられ得る。プロセッサ10は、CPUバス224を通してバスブリッジ202に結合され、任意のL2キャッシュ228にも結合される。CPUバス224とL2キャッシュ228に対するインターフェイスとは共に、外部インターフェイスユニット18が結合し得る外部インタフェースを含み得る。
【0068】
バスブリッジ202は、プロセッサ10、メインメモリ204、グラフィックスコントローラ208、およびPCIバス214に接続されるデバイスの間のインターフェイスを提供する。バスブリッジ202に接続されるデバイスのうちの1つからある動作が受取られると、バスブリッジ202は動作のターゲット(たとえば、ある特定のデバイスまたは、PCIバス214の場合には、ターゲットはPCIバス214上にあること)を識別する。バスブリッジ202は動作をターゲットのデバイスへと経路付ける。バスブリッジ202は一般に、ソースデバイスまたはバスが用いるプロトコルからターゲットデバイスまたはバスが用いるプロトコルへと動作を変換する。
【0069】
ISA/EISAバスに対するインターフェイスをPCIバス214に提供することに加えて、所望ならば、2次的なバスブリッジ216はさらに付加的な機能を組込んでもよい。2次的なバスブリッジ216の外側にあるか、またはそれと一体化されている入力/出力コントローラ(図示せず)もコンピュータシステム200内に含まれてもよく、所望ならば、キーボードおよびマウス222、ならびに種々のシリアルポートおよびパラレルポートに動作サポートを提供し得る。他の実施例では、外部キャッシュユニット(図示せず)がさらにプロセッサ10とバスブリッジ202との間のCPUバス224に結合され得る。代替的には、外部キャッシュはバスブリッジ202に結合されてもよく、外部キャッシュのためのキャッシュ制御ロジックはバスブリッジ202と一体化され得る。L2キャッシュ228がさらに、プロセッサ10に対する後方構成で示される。L2キャッシュ228は、プロセッサ10から分離されていてもよく、プロセッサ10を備えるカートリッジ(たとえば、スロット1またはスロットA)と一体化されていてもよく、またはプロセッサ10を備える半導体基板とさえ一体化されていてもよいことが注目される。
【0070】
メインメモリ204は、アプリケーションプログラムが記憶され、さらにはそこからプロセッサ10が主に実行されるメモリである。好適なメインメモリ204はDRAM(ダイナミックランダムアクセスメモリ)を含む。たとえば、SDRAM(同期DRAM)またはランバスDRAM(RDRAM)の複数のバンクも好適であり得る。
【0071】
PCIデバイス212A−212Bは、たとえば、ネットワークインターフェイスカード、ビデオアクセラレータ、オーディオカード、ハードディスクドライブまたはハードドライブコントローラ、フロッピー(R)ディスクドライブまたはフロッピー(R)ドライブコントローラ、SCSI(小型コンピュータシステムインターフェイス)アダプタ、および電話カード等の種々の周辺デバイスを例証する。同様に、ISAデバイス218は、モデム、サウンドカード、ならびにGPIBまたはフィールドバスインターフェイスカード等の種々のデータ収集カード等の種々の種類の周辺デバイスを例証する。
【0072】
グラフィックスコントローラ208が設けられてディスプレイ226上のテキストおよび画像のレンダリングが制御される。グラフィックスコントローラ208は、メインメモリ204へと、さらにはそこから効果的にシフトされ得る三次元データ構造をレンダリングするような、当該技術分野で一般に公知の典型的なグラフィックスアクセラレータを具体化し得る。したがって、グラフィックスコントローラ208は、バスブリッジ202内のターゲットインターフェイスへのアクセスを要求し、かつそれを受取ってメインメモリ204へのアクセスを得ることができるという点で、AGPバス210のマスタであり得る。専用グラフィックスバスは、メインメモリ204からのデータの迅速な検索に対応する。ある特定の動作では、グラフィックスコントローラ208はさらに、AGPバス210上でPCIプロトコルトランザクションを生成するように構成され得る。したがって、バスブリッジ202のAGPインターフェイスは、AGPプロトコルトランザクションならびにPCIプロトコルターゲットとイニシエータトランザクションとの両者をサポートするための機能を含む。ディスプレイ226は、画像またはテキストが示され得るすべての電子ディスプレイである。好適なディスプレイ226は、陰極線管(“CRT”)、液晶ディスプレイ(“LCD”)等を含む。
【0073】
AGP、PCI、およびISAまたはEISAバスが上の説明で例として用いられてきたが、所望であればいかなるバスアーキテクチャも代わりになり得ることが注目される。コンピュータシステム200は、追加のプロセッサ(たとえば、コンピュータシステム200の任意の構成要素として示されるプロセッサ10a)を含む多重処理コンピュータシステムであってもよいことがさらに注目される。プロセッサ10aはプロセッサ10と同様のものであり得る。より具体的には、プロセッサ10aはプロセッサ10の同一コピーでもあり得る。プロセッサ10aは、(図11で示されるように)独立したバスを介してバスブリッジ202に接続されてもよく、またはプロセッサ10とともにCPUバス224を共有してもよい。さらに、プロセッサ10aは、L2キャッシュ228と同様の任意のL2キャッシュ228aに結合され得る。
【0074】
図12を参照して、コンピュータシステム300の別の実施例が示される。他の実施例も可能であり、企図される。図12の実施例では、コンピュータシステム300は、いくつかの処理ノード312A、312B、312C、および312Dを含む。各処理ノードは、それぞれの処理ノード312A−312D内に含まれるメモリコントローラ316A−316Dを介してそれぞれのメモリ314A−314Dに結合される。加えて、処理ノード312A−312Dは、処理ノード312A−312D間の通信のために用いられるインターフェイスロジックを含む。たとえば、処理ノード312Aは、処理ノード312Bと通信を行なうためのインターフェイスロジック318A、処理ノード312Cと通信を行なうためのインターフェイスロジック318B、およびさらなる別の処理ノード(図示せず)と通信を行なうための第3のインターフェイスロジック318Cを含む。同様に、処理ノード312Bは、インターフェイスロジック318D、318E、および318Fを含み、処理ノード312Cは、インターフェイスロジック318G、318H、および318Iを含み、処理ノード312Dは、インターフェイスロジック318J、318K、および318Lを含む。処理ノード312Dは、インターフェイスロジック318Lを介して複数の入力/出力デバイス(たとえば、デイジーチェーン構成のデバイス320A−320B)と通信するように結合される。他の処理ノードも同様の態様で他のI/Oデバイスと通信し得る。
【0075】
処理ノード312A−312Dは、処理ノード間の通信のためにパケットベースリンクを実現する。この実施例では、リンクは何組かの単方向ラインとして実現される(たとえば、ライン324Aが用いられて処理ノード312Aから処理ノード312Bへとパケットが伝送され、ライン324Bが用いられて処理ノード312Bから処理ノード312Aへとパケットが伝送される)。図12で示されるように、他の組のライン324C−324Hが用いられて他の処理ノード間でパケットが伝送される。一般に、ライン324の各々の組は、1つ以上のデータラインと、データラインに対応する1つの以上のクロックラインと、伝達されているパケットの種類を示す1つ以上のコントロールラインを含み得る。リンクは、処理ノード間の通信のためにキャッシュコヒーレント態様で動作され得るか、または処理ノードとI/Oデバイス(または、PCIバスまたはISAバス等の従来の構造のI/Oバスへのバスブリッジ)との間の通信のために非コヒーレント態様で動作され得る。さらに、リンクは、図示されるようなI/Oデバイス間のデイジーチェーン構造を用いて非コヒーレント態様で動作され得る。ある処理ノードから別のものへと伝送されるパケットは1つ以上の中間ノードを通り抜け得ることが注目される。たとえば、図12で示されるように、処理ノード312Aによって処理ノード312Dへと伝送されるパケットは、処理ノード312Bまたは処理ノード312Cのいずれかを通り抜け得る。好適なあらゆる配線アルゴリズムが用いられ得る。コンピュータシステム300の他の実施例は、図12で示される実施例よりもより多くの、またはより少ない処理ノードを含み得る。
【0076】
一般に、パケットは、ノード間のライン324上の1つ以上のビットタイム(bit times)として伝送され得る。ビットタイムは、対応するクロックライン上のクロック信号の立上がり端縁または立下がり端縁であり得る。パケットは、トランザクションを開始するためのコマンドパケット、キャッシュコヒーレンシを維持するためのプローブパケット、およびプローブとコマンドとに応答するための応答パケットを含み得る。
【0077】
メモリコントローラおよびインターフェイスロジックに加えて、処理ノード312A−312Dは1つ以上のプロセッサを含み得る。概して、処理ノードは、少なくとも1つのプロセッサを含み、所望であればメモリと通信するためのメモリコントローラおよび他のロジックを任意で含み得る。より具体的には、各処理ノード312A−312Dは、プロセッサ10の1つ以上のコピーを含み得る。外部インターフェイスユニット18は、ノード内にインターフェイスロジック318およびメモリコントローラ316を含み得る。
【0078】
メモリ314A−314Dは、好適なあらゆるメモリデバイスを含み得る。たとえば、メモリ314A−314Dは、1つ以上のRAMBUS DRAM(RDRAM)、同期DRAM(SDRAM)、スタティックRAM等を含み得る。コンピュータシステム300のアドレススペースはメモリ314A−314D内で分割される。処理ノード312A−312Dの各々は、どのアドレスがどのメモリ314A−314Dにマッピングされ、したがってどの処理ノード312A−312Dにある特定のアドレスのためのメモリ要求が経路付けされるべきなのかを判断するために用いられるメモリマップを含み得る。ある実施例では、コンピュータシステム300内のアドレスのためのコヒーレンシポイントは、アドレスに対応するメモリ記憶バイトに結合されたメモリコントローラ316A−316Dである。言換えると、メモリコントローラ316A−316Dは、対応するメモリ314A−314Dへのメモリアクセスの各々がキャッシュコヒーレント態様で起こることを保証することを担当する。メモリコントローラ316A−316Dは、メモリ314A−314Dとインターフェイスをとるための制御回路を含み得る。加えて、メモリコントローラ316A−316Dは、メモリ要求を列に並ばせるための要求待ち行列を含み得る。
【0079】
一般に、インターフェイスロジック318A−318Lは、リンクからパケットを受信し、さらにはリンク上で伝送されるべきパケットをバッファリングするための種々のバッファを含み得る。コンピュータシステム300は、パケットを伝送するための好適なあらゆるフロー制御メカニズムを採用し得る。たとえば、ある実施例では、各インターフェイスロジック318は、そのインターフェイスロジックが接続されるリンクの他端のレシーバ内に各々の種類のバッファの数のカウントを記憶する。インターフェイスロジックは、受信インターフェイスロジックがパケットを記憶するための解放されたバッファを有さない限りは、パケットを伝送しない。パケットを前方に(onward)経路付けることによって受信バッファが解放されると、受信インターフェイスロジックは送信インターフェイスロジックへとメッセージを伝送してバッファが解放されたことを示す。このようなメカニズムは「クーポンベース」システムと呼ばれ得る。
【0080】
I/Oデバイス320A−320Bは、好適なあらゆるI/Oデバイスであり得る。たとえば、I/Oデバイス320A−320Bは、ネットワークインターフェイスカード、ビデオアクセラレータ、オーディオカード、ハードディスクドライブまたはハードドライブコントローラ、フロッピー(R)ディスクドライブまたはフロッピー(R)ドライブコントローラ、SCSI(小型コンピュータシステムインターフェイス)アダプタおよび電話カード、モデム、サウンドカード、およびGPIBまたはフィールドバスインターフェイスカード等の種々のデータ収集カードを含み得る。
【0081】
上述の開示が完全に理解されると、多くの変更および変形が当業者に明らかとなるだろう。前掲の請求項はこのようなすべての変更および変形を包含すると解釈されることが意図される。
【図面の簡単な説明】
【図1】 プロセッサのある実施例のブロック図である。
【図2】 32/64モードのためのセグメント記述子のある実施例のブロック図である。
【図3】 互換モードのためのセグメント記述子のある実施例のブロック図である。
【図4】 図1で示されるプロセッサのある実施例に従った、互換モードおよびレガシーモードにおける動作を示すブロック図である。
【図5】 セグメント記述子および制御レジスタ値の関数としての動作モードの1つの実施例を例示する表である。
【図6】 デフォルト動作モードをオーバーライドするための命令プレフィックスの用途のある実施例を例示する表である。
【図7】 レジスタのある実施例を示すブロック図である。
【図8】 グローバル記述子テーブルおよびローカル記述子テーブルのある実施例を例示する図である。
【図9】 32/64呼出ゲート記述子のある実施例のブロック図である。
【図10】 命令フォーマットのブロック図である。
【図11】 図1で示されるプロセッサを含むコンピュータシステムのある実施例のブロック図である。
【図12】 図1で示されるプロセッサを含むコンピュータシステムの別の実施例のブロック図である。
Claims (16)
- プロセッサであって、
第1の動作モード指示と、第2の動作モード指示と、セグメント記述子によってコードセグメントとして記述されるセグメントを識別する1つ以上のビットとを含む前記セグメント記述子を識別するセグメントセレクタを記憶するように構成されるセグメントレジスタと、
イネーブル指示を記憶するように構成される制御レジスタとを含み、前記プロセッサは、前記イネーブル指示、前記第1の動作モード指示、および前記第2の動作モード指示に応答してデフォルトアドレスサイズを確立するように構成される、プロセッサ。 - 前記デフォルトアドレスサイズは、前記イネーブル指示がイネーブル状態にあり、かつ前記第1の動作モード指示が第1の状態にあると、第1のアドレスサイズであり、前記デフォルトアドレスサイズは、前記イネーブル指示が前記イネーブル状態にあり、かつ前記第1の動作モード指示が第2の状態にあり、さらには前記第2の動作モード指示が前記第1の状態にあると、第2のアドレスサイズである、請求項1に記載のプロセッサ。
- 前記第2のアドレスサイズは、前記イネーブル指示が前記イネーブル状態にあり、かつ前記第1の動作モード指示が前記第2の状態にあると、利用可能な複数のアドレスサイズのうちの1つであり、前記複数のアドレスサイズのうちの前記1つは、前記第2の動作モード指示の状態に応答して選択される、請求項2に記載のプロセッサ。
- 前記複数のアドレスサイズのうちの1つは32ビットアドレスサイズである、請求項3に記載のプロセッサ。
- 前記複数のアドレスサイズのうちの1つは16ビットアドレスサイズである、請求項3に記載のプロセッサ。
- 前記第1のアドレスサイズは32ビットよりも大きい、請求項2に記載のプロセッサ。
- 前記デフォルトアドレスサイズは前記プロセッサが生成する仮想アドレスに当てはまる、請求項6に記載のプロセッサ。
- 仮想アドレスは前記プロセッサが採用するセグメンテーションメカニズムに従って生成される、請求項7に記載のプロセッサ。
- 前記デフォルトアドレスサイズはさらに前記プロセッサが生成する物理アドレスに当てはまる、請求項7に記載のプロセッサ。
- 前記イネーブル指示がディセーブル状態にあると、前記第1の動作モード指示は不定として扱われ、前記プロセッサは前記第2の動作モード指示に応答して前記デフォルトアドレスサイズを確立するように構成される、請求項1に記載のプロセッサ。
- 方法であって、
プロセッサ内の制御レジスタ内のイネーブル指示、セグメント記述子内の第1の動作モード指示、および前記セグメント記述子内の第2の動作モード指示に応答して、前記プロセッサが、前記プロセッサ内でデフォルトアドレスサイズを確立するステップを含み、前記セグメント記述子はさらに、前記セグメント記述子によってコードセグメントとして記述されるセグメントを識別する1つ以上のビットを含み、さらに、
前記プロセッサが、前記デフォルトアドレスサイズのアドレスを生成するステップを含む、方法。 - 前記確立するステップは、前記イネーブル指示がイネーブル状態にあり、かつ前記第1の動作モード指示が第1の状態にあることに応答して第1のアドレスサイズを確立するステップを含み、前記第1のアドレスサイズは32ビットよりも大きい、請求項11に記載の方法。
- 前記デフォルトアドレスサイズは仮想アドレスに当てはまる、請求項12に記載の方法。
- 前記デフォルトアドレスサイズは物理アドレスに当てはまる、請求項13に記載の方法。
- 前記確立するステップはさらに、前記イネーブル指示がイネーブル状態にあり、かつ前記第1の動作モード指示が第2の状態にあり、さらには前記第2の動作モード指示が前記第1の状態にあることに応答して、前記プロセッサが、第2のアドレスサイズを確立するステップを含み、前記第2のアドレスサイズは32ビットである、請求項12に記載の方法。
- 前記確立するステップはさらに、前記イネーブル指示が前記イネーブル状態にあり、かつ前記第1の動作モード指示が第2の状態にあると、前記プロセッサが、複数のアドレスサイズのうちの1つを確立するステップを含み、前記複数のアドレスサイズのうちの前記1つは前記第2の動作モード指示の状態に応答して選択される、請求項12に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/483,101 US6973562B1 (en) | 2000-01-14 | 2000-01-14 | Establishing an operating mode in a processor |
US09/483,101 | 2000-01-14 | ||
PCT/US2000/019762 WO2001052058A1 (en) | 2000-01-14 | 2000-07-19 | Establishing an operating mode in a processor |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2003519868A JP2003519868A (ja) | 2003-06-24 |
JP2003519868A5 JP2003519868A5 (ja) | 2007-06-14 |
JP4520683B2 true JP4520683B2 (ja) | 2010-08-11 |
Family
ID=23918664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001552211A Expired - Lifetime JP4520683B2 (ja) | 2000-01-14 | 2000-07-19 | プロセッサ内での動作モードの確立 |
Country Status (8)
Country | Link |
---|---|
US (1) | US6973562B1 (ja) |
EP (1) | EP1247171B1 (ja) |
JP (1) | JP4520683B2 (ja) |
KR (1) | KR100636413B1 (ja) |
CN (1) | CN100419671C (ja) |
DE (1) | DE60005219T2 (ja) |
TW (1) | TW567434B (ja) |
WO (1) | WO2001052058A1 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1387250B8 (en) * | 2002-07-31 | 2012-02-29 | Texas Instruments Inc. | Processor that accomodates multiple instruction sets and multiple decode modes |
US7343378B2 (en) * | 2004-03-29 | 2008-03-11 | Microsoft Corporation | Generation of meaningful names in flattened hierarchical structures |
US7437541B2 (en) * | 2004-07-08 | 2008-10-14 | International Business Machiens Corporation | Atomically updating 64 bit fields in the 32 bit AIX kernel |
US20060282606A1 (en) * | 2005-06-08 | 2006-12-14 | Dell Products L.P. | System and method for automatically optimizing available virtual memory |
JP5289688B2 (ja) * | 2006-07-05 | 2013-09-11 | ルネサスエレクトロニクス株式会社 | プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法 |
US7451298B2 (en) * | 2006-08-03 | 2008-11-11 | Apple Inc. | Processing exceptions from 64-bit application program executing in 64-bit processor with 32-bit OS kernel by switching to 32-bit processor mode |
US7802252B2 (en) * | 2007-01-09 | 2010-09-21 | International Business Machines Corporation | Method and apparatus for selecting the architecture level to which a processor appears to conform |
US8938606B2 (en) * | 2010-12-22 | 2015-01-20 | Intel Corporation | System, apparatus, and method for segment register read and write regardless of privilege level |
US8528083B2 (en) * | 2011-03-10 | 2013-09-03 | Adobe Systems Incorporated | Using a call gate to prevent secure sandbox leakage |
US9378560B2 (en) | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
CN102331978A (zh) * | 2011-07-07 | 2012-01-25 | 曙光信息产业股份有限公司 | 一种龙芯刀片大内存地址设备dma控制器访问的实现方法 |
CN105094870A (zh) * | 2014-05-13 | 2015-11-25 | 中标软件有限公司 | 64位Linux操作系统兼容32位应用软件的方法 |
GB2522290B (en) | 2014-07-14 | 2015-12-09 | Imagination Tech Ltd | Running a 32-bit operating system on a 64-bit machine |
GB2546465B (en) * | 2015-06-05 | 2018-02-28 | Advanced Risc Mach Ltd | Modal processing of program instructions |
CN107870736B (zh) * | 2016-09-28 | 2021-08-10 | 龙芯中科技术股份有限公司 | 支持大于4gb非线性闪存的方法及装置 |
CN111026452B (zh) * | 2019-11-20 | 2023-10-20 | 北京明朝万达科技股份有限公司 | 一种远程32位进程注入64位进程的方法及系统 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4620274A (en) | 1983-04-01 | 1986-10-28 | Honeywell Information Systems Inc. | Data available indicator for an exhausted operand string |
US4701946A (en) | 1984-10-23 | 1987-10-20 | Oliva Raymond A | Device for controlling the application of power to a computer |
US4868740A (en) | 1986-06-04 | 1989-09-19 | Hitachi, Ltd. | System for processing data with multiple virtual address and data word lengths |
JPS63174145A (ja) * | 1987-01-14 | 1988-07-18 | Hitachi Ltd | デ−タ処理装置 |
JP2507756B2 (ja) * | 1987-10-05 | 1996-06-19 | 株式会社日立製作所 | 情報処理装置 |
US5381537A (en) * | 1991-12-06 | 1995-01-10 | International Business Machines Corporation | Large logical addressing method and means |
US5617554A (en) * | 1992-02-10 | 1997-04-01 | Intel Corporation | Physical address size selection and page size selection in an address translator |
US5692167A (en) * | 1992-07-31 | 1997-11-25 | Intel Corporation | Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor |
US5479627A (en) * | 1993-09-08 | 1995-12-26 | Sun Microsystems, Inc. | Virtual address to physical address translation cache that supports multiple page sizes |
US5517651A (en) | 1993-12-29 | 1996-05-14 | Intel Corporation | Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes |
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 |
US5758116A (en) | 1994-09-30 | 1998-05-26 | Intel Corporation | Instruction length decoder for generating output length indicia to identity boundaries between variable length instructions |
US5644755A (en) | 1995-02-24 | 1997-07-01 | Compaq Computer Corporation | Processor with virtual system mode |
US5774686A (en) * | 1995-06-07 | 1998-06-30 | Intel Corporation | Method and apparatus for providing two system architectures in a processor |
US5787495A (en) | 1995-12-18 | 1998-07-28 | Integrated Device Technology, Inc. | Method and apparatus for selector storing and restoration |
US5784638A (en) | 1996-02-22 | 1998-07-21 | International Business Machines Corporation | Computer system supporting control transfers between two architectures |
US5826074A (en) | 1996-11-22 | 1998-10-20 | S3 Incorporated | Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register |
US6086623A (en) | 1997-06-30 | 2000-07-11 | Sun Microsystems, Inc. | Method and implementation for intercepting and processing system calls in programmed digital computer to emulate retrograde operating system |
-
2000
- 2000-01-14 US US09/483,101 patent/US6973562B1/en not_active Expired - Lifetime
- 2000-07-19 WO PCT/US2000/019762 patent/WO2001052058A1/en active IP Right Grant
- 2000-07-19 DE DE60005219T patent/DE60005219T2/de not_active Expired - Lifetime
- 2000-07-19 KR KR1020027008331A patent/KR100636413B1/ko active IP Right Grant
- 2000-07-19 CN CNB008183414A patent/CN100419671C/zh not_active Expired - Lifetime
- 2000-07-19 JP JP2001552211A patent/JP4520683B2/ja not_active Expired - Lifetime
- 2000-07-19 EP EP00947565A patent/EP1247171B1/en not_active Expired - Lifetime
- 2000-12-16 TW TW089127001A patent/TW567434B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR20020091066A (ko) | 2002-12-05 |
EP1247171B1 (en) | 2003-09-10 |
WO2001052058A1 (en) | 2001-07-19 |
TW567434B (en) | 2003-12-21 |
CN1423773A (zh) | 2003-06-11 |
KR100636413B1 (ko) | 2006-10-19 |
JP2003519868A (ja) | 2003-06-24 |
DE60005219T2 (de) | 2004-06-24 |
CN100419671C (zh) | 2008-09-17 |
US6973562B1 (en) | 2005-12-06 |
EP1247171A1 (en) | 2002-10-09 |
DE60005219D1 (de) | 2003-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6560694B1 (en) | Double prefix overrides to provide 16-bit operand size in a 32/64 operating mode | |
US6457115B1 (en) | Apparatus and method for generating 64 bit addresses using a 32 bit adder | |
US7124286B2 (en) | Establishing an operating mode in a processor | |
US6671791B1 (en) | Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms | |
US6901505B2 (en) | Instruction causing swap of base address from segment register with address from another register | |
US7284115B2 (en) | Processor which overrides default operand size for implicit stack pointer references and near branches | |
US6757771B2 (en) | Stack switching mechanism in a computer system | |
US6807616B1 (en) | Memory address checking in a proccesor that support both a segmented and a unsegmented address space | |
US6898697B1 (en) | Efficient method for mode change detection and synchronization | |
US7100028B2 (en) | Multiple entry points for system call instructions | |
US6889312B1 (en) | Selective zero extension based on operand size | |
JP4520683B2 (ja) | プロセッサ内での動作モードの確立 | |
US6687806B1 (en) | Apparatus and method for generating 64 bit displacement and immediate values | |
US6968446B1 (en) | Flags handling for system call instructions | |
US6807617B2 (en) | Processor, method and apparatus with descriptor table storing segment descriptors of varying size | |
US7058791B1 (en) | Establishing a mode indication responsive to two or more indications | |
US6981132B2 (en) | Uniform register addressing using prefix byte | |
US6571330B1 (en) | Address size and operand size prefix overrides for default sizes defined by an operating mode of a processor | |
US6014739A (en) | Increasing general registers in X86 processors | |
US6810476B2 (en) | Variable state save formats based on operand size of state save instruction | |
JP4615810B2 (ja) | 64ビットアドレス指定のための呼出ゲート拡張 | |
US6880068B1 (en) | Mode dependent segment use with mode independent segment update | |
US6463517B1 (en) | Apparatus and method for generating virtual addresses for different memory models | |
US6324635B1 (en) | Method and apparatus for address paging emulation | |
US6732258B1 (en) | IP relative addressing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070424 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070424 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091130 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100105 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100401 |
|
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: 20100427 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100521 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130528 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4520683 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130528 Year of fee payment: 3 |
|
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 |
|
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 |
|
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 |