JP2003519868A - プロセッサ内での動作モードの確立 - Google Patents

プロセッサ内での動作モードの確立

Info

Publication number
JP2003519868A
JP2003519868A JP2001552211A JP2001552211A JP2003519868A JP 2003519868 A JP2003519868 A JP 2003519868A JP 2001552211 A JP2001552211 A JP 2001552211A JP 2001552211 A JP2001552211 A JP 2001552211A JP 2003519868 A JP2003519868 A JP 2003519868A
Authority
JP
Japan
Prior art keywords
processor
instruction
bit
segment
mode
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.)
Granted
Application number
JP2001552211A
Other languages
English (en)
Other versions
JP2003519868A5 (ja
JP4520683B2 (ja
Inventor
マクグラス,ケビン・ジェイ
クラーク,マイケル・ティ
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2003519868A publication Critical patent/JP2003519868A/ja
Publication of JP2003519868A5 publication Critical patent/JP2003519868A5/ja
Application granted granted Critical
Publication of JP4520683B2 publication Critical patent/JP4520683B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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)
  • 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)

Abstract

(57)【要約】 プロセッサは、アドレスサイズが32ビットよりも大きく、かつオペランドサイズが32ビットまたは64ビットであり得る処理モードをサポートする。アドレスサイズは公称64ビットとして示され得るが、プロセッサの種々の実施例は、32ビットよりも大きく64ビット以下のすべてのアドレスサイズを処理モードで実現し得る。処理モードは、制御レジスタ内のイネーブル指示をイネーブル状態にし、かつセグメント記述子内の第1の動作モード指示および第2の動作モード指示を予め規定された状態にセットすることによって、確立され得る。x86プロセッサアーキテクチャとの互換ができる32ビットおよび16ビット処理のための互換モードが提供されるように、(イネーブル指示はイネーブル状態のままで)第1の動作モード指示と第2の動作モード指示との他の組合せが用いられ得る。

Description

【発明の詳細な説明】
【0001】
【発明の分野】
この発明はプロセッサの分野に関し、より具体的には、プロセッサ内のアドレ
スサイズおよびオペランドサイズに関する。
【0002】
【関連技術の説明】
x86アーキテクチャ(IA−32アーキテクチャとしても知られる)は市場
で広く受け入れられ、成功を享受してきた。したがって、x86アーキテクチャ
に従ってプロセッサを設計することが有利である。このようなプロセッサは、x
86アーキテクチャに書込まれた大量のソフトウェアから利益を得ることができ
る(このようなプロセッサはソフトウェアを実行でき、そのプロセッサを採用す
るコンピュータシステムは大量の利用可能なソフトウェアのために市場でより広
く受け入れられ得るからである)。
【0003】 コンピュータシステムは進化し続けてきたため、64ビットアドレスサイズ(
時としてオペランドサイズ)が望ましいものとなった。より大きなアドレスサイ
ズによって、より大きなメモリフットプリント(プログラムによって動作させら
れるデータおよびプログラム内の命令によって占有されるメモリの量)を有する
プログラムがメモリスペース内で動作することが可能となる。より大きなオペラ
ンドサイズによって、より大きなオペランド上で、より正確にはオペランド内で
の動作が可能となる。64ビットアドレスおよび/またはオペランドサイズを用
いると、より高性能なアプリケーションおよび/またはオペレーティングシステ
ムが可能となり得る。
【0004】 残念ながら、x86アーキテクチャは最大32ビットオペランドサイズおよび
32ビットアドレスサイズに限定されている。オペランドサイズとは、プロセッ
サによって動作させられるビットの数(たとえば、ソースまたはデスティネーシ
ョンオペランド内のビット数)を指す。アドレスサイズとは、プロセッサが生成
するアドレス内のビットの数を指す。したがって、x86アーキテクチャを採用
するプロセッサは、64ビットアドレスサイズまたはオペランドサイズから利益
を得ることができるアプリケーションのニーズを満たさないおそれがある。
【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の動作モード指示および第2の
動作モード指示を含むセグメント記述子を識別するセグメントセレクタを記憶す
るように構成される。制御レジスタは、イネーブル指示を記憶するように構成さ
れる。イネーブル指示、第1の動作モード指示、および第2の動作モード指示に
応答して、プロセッサは動作モードを確立するように構成される。
【0009】 加えて、セグメントレジスタと、イネーブル指示を記憶するように構成される
制御レジスタとを含むプロセッサが企図される。セグメントレジスタは、セグメ
ント記述子からの情報およびセグメントセレクタを記憶するように構成される。
セグメントセレクタは、プロセッサが結合されるメモリ内に記憶されたセグメン
ト記述子テーブルへのインデックスを含み、セグメント記述子は、インデックス
によって指示されるエントリ内のセグメント記述子テーブル内に記憶される。プ
ロセッサは、セグメントセレクタに応答してセグメント記述子テーブルからセグ
メント記述子を読出すように構成され、セグメント記述子は動作モード指示を含
む。プロセッサは、イネーブル指示がイネーブル状態にあることと動作モード指
示が第1の状態にあることとに応答して仮想アドレスが32ビットよりも大きい
動作モードで動作するように構成される。
【0010】 さらに、方法が企図される。動作モードは、プロセッサ内の制御レジスタの中
のイネーブル指示、セグメント記述子内の第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、およびデータキャッシュ1
6に結合される。データキャッシュ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またはメ
モリからデフォルトオペランドサイズを有するオペランドを取出すが、以上は、
ある特定の命令の符号化がデフォルトオペランドサイズをオーバーライドする場
合以外のことであり、オーバーライドする場合には、オーバーライドする(overr
iding)オペランドサイズが用いられる。同様に、実行コア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/6
4モードでのデフォルトアドレスサイズは、実現例に依存するものであり得るが
、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内でミスとなると、命令キャッシュ1
2は外部インターフェイスユニット18と通信してミッシングキャッシュライン
を命令キャッシュ12へと入れる(fill)こともできる。加えて、命令キャッシュ
12はMMU20と通信して命令キャッシュ12から取出された仮想アドレスの
ための物理アドレス変換を受取り得る。
【0023】 実行コア14は命令キャッシュ12から取出された命令を実行する。実行コア
14は、レジスタファイル22からレジスタオペランドを取出し、レジスタファ
イル22内のデスティネーションレジスタを更新する。レジスタオペランドのサ
イズは、動作モードと、ある特定の命令のための動作モードのすべてのオーバー
ライドとによって制御される。同様に、実行コア14は、メモリオペランドのキ
ャッシュ性(cacheability)およびデータキャッシュ16内でのヒットを条件とし
て、データキャッシュ16からメモリオペランドを取出し、データキャッシュ1
6内のデスティネーションメモリロケーションを更新する。メモリオペランドの
サイズも同様に、動作モードと、ある特定の命令のための動作モードのすべての
オーバーライドとによって制御される。さらに、実行コア14が生成するメモリ
オペランドのアドレスのサイズは、動作モードと、ある特定の命令のための動作
モードのすべてのオーバーライドとによって制御される。
【0024】 実行コア14は好適なあらゆる構造を採用し得る。たとえば、実行コア14は
、スーパーパイプラインコア、スーパースカラコア、またはそれらの組合せであ
り得る。実行コア14は、設計上の選択に従って、アウトオブオーダ投機的実行
またはインオーダ実行を採用し得る。
【0025】 レジスタファイル22は64ビットレジスタを含み得るが、これは、プロセッ
サ10の動作モードおよびある特定の命令のためのあらゆるオーバーライドによ
って指示されるように64ビットレジスタ、32ビットレジスタ、16ビットレ
ジスタ、または8ビットレジスタとしてアクセスされてもよい。ある実施例のレ
ジスタフォーマットが以下で図7に関して説明される。レジスタファイル22内
に含まれるレジスタは、LEAXレジスタ、LEBXレジスタ、LECXレジス
タ、LEDXレジスタ、LEDIレジスタ、LESIレジスタ、LESPレジス
タ、およびLEBPレジスタを含み得る。レジスタファイル22はさらにLEI
Pレジスタを含み得る。代替的には、実行コア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とも通信を行ない得る。たとえば、外部インターフェイスユニット1
8は、MMU20に代わってセグメント記述子テーブルおよび/またはページン
グテーブルにアクセスし得る。
【0028】 所望ならば、プロセッサ10は統合レベル(integrated level)2(L2)キャ
ッシュを含み得ることが注目される。さらに、外部インターフェイスユニット1
8は、システムとの通信に加えてバックサイドキャッシュと通信するように構成
され得る。
【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/6
4モードのためにフラット(flat)仮想アドレススペースを採用する。したがって
、それ以外の場合には基底アドレスおよびリミットを記憶するであろうコードセ
グメント記述子40の部分は、セグメント記述子40内でリザーブされる。セグ
メンテーションを通して提供される仮想アドレスはここで「リニアアドレス」と
も呼ばれ得ることが注目される。「仮想アドレス」という用語は、セグメント化
されていないアーキテクチャ内で生成される他の仮想アドレスおよびリニアアド
レスを含む、メモリをアドレス指定するために実際に用いられる物理アドレスへ
と変換メカニズムを通して変換されるすべてのアドレスを含む。
【0031】 セグメント記述子40は、Dビット42、(32/64モードコードセグメン
トのために1にセットされる)Lビット44、使用可能(available)ビット(A
VL)46、現在の(P)ビット48、記述子特権レベル(DPL)50、およ
びタイプフィールド52を含む。以下の図5で示されるように、Dビット42と
Lビット44とはプロセッサ10の動作モードを決定するために用いられる。A
VLビット46は、システムソフトウェア(たとえば、動作システム)によって
用いられることのために使用可能である。Pビット48が用いられてセグメント
がメモリ内に存在するか否かが示される。Pビット48がセットされていると、
セグメントは存在し、コードがセグメントから取出され得る。Pビット48がク
リアであると、セグメントは存在せず、例外が生じて(たとえば、ディスク記憶
デバイスから、またはネットワーク接続を通して)セグメントがメモリへとロー
ドされる。DPLはセグメントの特権レベルを示す。プロセッサ10は、(DP
Lフィールド内で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、DPL
50、およびタイプフィールド52を含む。加えて、コードセグメント記述子5
4は、基底アドレスフィールド(参照番号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ビットがセットされていると、割
込セグメント記述子は、例外を処理するオペレーティングシステムルーチンの6
4ビットアドレスを含む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モードをサポートし得る。したがって、3
2ビットオペレーティングシステムおよび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によって提供され得る。L
MEビットがセットされていてコードセグメント内の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ビッ
ト値が記憶されるときにプログラムが用いるデータ構造のメモリサイズの倍増(d
oubling)にある程度起因し得る。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で「LEA
X」とラベル付けされたブレース(brace)によって示されるように)レジスタ7
4全体がアクセスされる。オペランドサイズが32ビットならば、(図7で「E
AX」とラベル付けされたブレースによって示されるように)レジスタ74のビ
ット31:0がアクセスされる。オペランドサイズが16ビットならば、(図7
で「AX」とラベル付けされたブレースによって示されるように)レジスタのビ
ット16:0がアクセスされる。上述のオペランドサイズは、動作モードおよび
オーバーライドプレフィックスのいずれかを含むことに基づいて選択され得る。
しかし、8ビットレジスタ(図7のAHまたはAL)にアクセスするある特定の
命令演算コードが規定される。
【0050】 次に図8を参照して、グローバル記述子テーブル80およびローカル記述子テ
ーブル82のある実施例を例示するブロック図が示される。他の実施例も可能で
あり、企図される。図8で示され、かつ上で言及されるように、グローバル記述
子テーブル80の基底アドレスはGDTR32によって提供され、ローカル記述
子テーブル82の基底アドレスはLDTR30によって提供される。したがって
、仮想アドレススペース内にグローバル記述子テーブル80とローカル記述子テ
ーブル82とを恣意的に置くことをサポートするために、GDTR32とLDT
R30とは64ビット基底アドレスを記憶し得る。LMEビットがクリアならば
、基底アドレスの最下位32ビットが用いられて記述子テーブルが位置付け(loc
ate)られ得る。
【0051】 グローバル記述子テーブル80とローカル記述子テーブル82との両者は、種
々の種類のセグメント記述子を記憶するように構成される。たとえば、32/6
4モードコードセグメント記述子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、1
02、および104を示す。呼出ゲート記述子は、64ビットオフセットもサポ
ートし、したがって、対応する記述子テーブル内で2つのエントリを占有し得る
。例示的な32/64呼出ゲート記述子が以下の図9で示される。
【0053】 セグメント記述子テーブル80および82を8バイトで維持し、かつ64ビッ
トオフセットを含む記述子のために2つのエントリを用いることによって、16
ビットモードおよび32ビットモードのための記述子は、64ビットオフセット
を含む記述子と同じテーブル内に記憶され得る。したがって、互換モードで動作
するアプリケーションは、64ビットオペレーティングシステムと同じセグメン
ト記述子テーブル内で適切な記述子を有することができる。
【0054】 一般に、呼出ゲートが用いられてより小さい特権レベルを有するコードセグメ
ントとより大きい特権レベルを有するコードセグメント(たとえば、オペレーテ
ィングシステムルーチンを呼出すアプリケーションプログラム)との間の遷移が
管理される。より少ない特権を与えられたコードは、呼出または、ターゲットと
してセグメントセレクタ(および、この事例では無視されるが、セグメントへの
オフセット)を特定する他の分岐命令を含む。セグメントセレクタは、記述子テ
ーブル内の呼出ゲート記述子を識別し、これは、より大きな特権レベルコードを
実行するのに必要とされる最小の特権レベルを含む。プロセッサ10が呼出また
は他の分岐命令を実行するとき、プロセッサ10はセグメントセレクタで記述子
テーブルに索引をつけ、呼出ゲートを位置付ける。プロセッサ10の現在の特権
レベルと、(セグメントセレクタの一部であり、特権検査目的のために現在の特
権レベルを下げるために用いられ得る)リクエスタ(requestor)特権レベルとの
両者が十分な特権を反映していると(たとえば、特権レベルは呼出ゲート記述子
内の最小特権レベルよりも数の上において少ないかまたはそれと等しいと)、呼
出が進み得る。呼出ゲート記述子は、ターゲットセグメント(より大きな特権レ
ベルを有するコードセグメント)のためのセグメントセレクタと、コード取出が
そこで開始されるターゲットセグメント内のオフセットとを含む。プロセッサ1
0は、呼出ゲート記述子からセグメントセレクタおよびオフセットを抽出し、タ
ーゲットセグメント記述子を読出してより大きな特権レベルを有するコードの取
出を開始する。一方で、現在の特権レベルまたはリクエスタ特権レベルのいずれ
かが呼出ゲート記述子内の最小特権レベルよりも小さい特権レベルであるならば
(たとえば、現在の特権レベルまたはリクエスタ特権レベルのいずれかが最小特
権レベルよりも数の上で大きいならば)、プロセッサ10は、呼出ゲート記述子
にアクセスした後、かつターゲット記述子にはアクセスすることなしに、例外を
知らせる。したがって、より大きな特権レベルで実行されているコードへのアク
セスは慎重に制御される。
【0055】 上述のように、呼出ゲート記述子は、ターゲットセグメントセレクタおよびセ
グメント内のオフセットを含む。ターゲットセグメント記述子への参照は、呼出
ゲート記述子から別の記述子への矢印として図8で例示される。たとえば、呼出
ゲート記述子100はモード記述子90を参照し、呼出ゲート記述子102は3
2/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ビット互換モード、または1
6ビット互換モード)で動作しているコードは、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は、ターゲットセグメントセレクタ(フィールド12
2)、オフセット(フィールド124A、124B、および124C)、現在の
(P)ビット126、記述子特権レベル(DPL)128、タイプフィールド1
30、および擬似タイプフィールド132を含む。Pビットは上述のPビット4
8と同様のものである。ターゲットセグメントセレクタは、(より大きな特権レ
ベルを有する)ターゲットセグメント記述子が記憶される記述子テーブルのうち
の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は、プレフィックスフィールド14
2、演算コードフィールド144、mod R/M(レジスタ/メモリ)フィー
ルド146、SIB(スケールインデックスベース)フィールド148、変位フ
ィールド150、および即値フィールド152を含む。演算コードフィールド1
44以外の各フィールドは任意である。したがって、命令フォーマット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、な
らびに種々のシリアルポートおよびパラレルポートに動作サポートを提供し得る
。他の実施例では、外部キャッシュユニット(図示せず)がさらにプロセッサ1
0とバスブリッジ202との間のCPUバス224に結合され得る。代替的には
、外部キャッシュはバスブリッジ202に結合されてもよく、外部キャッシュの
ためのキャッシュ制御ロジックはバスブリッジ202と一体化され得る。L2キ
ャッシュ228がさらに、プロセッサ10に対する後方構成で示される。L2キ
ャッシュ228は、プロセッサ10から分離されていてもよく、プロセッサ10
を備えるカートリッジ(たとえば、スロット1またはスロットA)と一体化され
ていてもよく、またはプロセッサ10を備える半導体基板とさえ一体化されてい
てもよいことが注目される。
【0070】 メインメモリ204は、アプリケーションプログラムが記憶され、さらにはそ
こからプロセッサ10が主に実行されるメモリである。好適なメインメモリ20
4はDRAM(ダイナミックランダムアクセスメモリ)を含む。たとえば、SD
RAM(同期DRAM)またはランバスDRAM(RDRAM)の複数のバンク
も好適であり得る。
【0071】 PCIデバイス212A−212Bは、たとえば、ネットワークインターフェ
イスカード、ビデオアクセラレータ、オーディオカード、ハードディスクドライ
ブまたはハードドライブコントローラ、フロッピー(R)ディスクドライブまた
はフロッピー(R)ドライブコントローラ、SCSI(小型コンピュータシステ
ムインターフェイス)アダプタ、および電話カード等の種々の周辺デバイスを例
証する。同様に、ISAデバイス218は、モデム、サウンドカード、ならびに
GPIBまたはフィールドバスインターフェイスカード等の種々のデータ収集カ
ード等の種々の種類の周辺デバイスを例証する。
【0072】 グラフィックスコントローラ208が設けられてディスプレイ226上のテキ
ストおよび画像のレンダリングが制御される。グラフィックスコントローラ20
8は、メインメモリ204へと、さらにはそこから効果的にシフトされ得る三次
元データ構造をレンダリングするような、当該技術分野で一般に公知の典型的な
グラフィックスアクセラレータを具体化し得る。したがって、グラフィックスコ
ントローラ208は、バスブリッジ202内のターゲットインターフェイスへの
アクセスを要求し、かつそれを受取ってメインメモリ204へのアクセスを得る
ことができるという点で、AGPバス210のマスタであり得る。専用グラフィ
ックスバスは、メインメモリ204からのデータの迅速な検索に対応する。ある
特定の動作では、グラフィックスコントローラ208はさらに、AGPバス21
0上でPCIプロトコルトランザクションを生成するように構成され得る。した
がって、バスブリッジ202のAGPインターフェイスは、AGPプロトコルト
ランザクションならびにPCIプロトコルターゲットとイニシエータトランザク
ションとの両者をサポートするための機能を含む。ディスプレイ226は、画像
またはテキストが示され得るすべての電子ディスプレイである。好適なディスプ
レイ226は、陰極線管(“CRT”)、液晶ディスプレイ(“LCD”)等を
含む。
【0073】 AGP、PCI、およびISAまたはEISAバスが上の説明で例として用い
られてきたが、所望であればいかなるバスアーキテクチャも代わりになり得るこ
とが注目される。コンピュータシステム200は、追加のプロセッサ(たとえば
、コンピュータシステム200の任意の構成要素として示されるプロセッサ10
a)を含む多重処理コンピュータシステムであってもよいことがさらに注目され
る。プロセッサ10aはプロセッサ10と同様のものであり得る。より具体的に
は、プロセッサ10aはプロセッサ10の同一コピーでもあり得る。プロセッサ
10aは、(図11で示されるように)独立したバスを介してバスブリッジ20
2に接続されてもよく、またはプロセッサ10とともにCPUバス224を共有
してもよい。さらに、プロセッサ10aは、L2キャッシュ228と同様の任意
のL2キャッシュ228aに結合され得る。
【0074】 図12を参照して、コンピュータシステム300の別の実施例が示される。他
の実施例も可能であり、企図される。図12の実施例では、コンピュータシステ
ム300は、いくつかの処理ノード312A、312B、312C、および31
2Dを含む。各処理ノードは、それぞれの処理ノード312A−312D内に含
まれるメモリコントローラ316A−316Dを介してそれぞれのメモリ314
A−314Dに結合される。加えて、処理ノード312A−312Dは、処理ノ
ード312A−312D間の通信のために用いられるインターフェイスロジック
を含む。たとえば、処理ノード312Aは、処理ノード312Bと通信を行なう
ためのインターフェイスロジック318A、処理ノード312Cと通信を行なう
ためのインターフェイスロジック318B、およびさらなる別の処理ノード(図
示せず)と通信を行なうための第3のインターフェイスロジック318Cを含む
。同様に、処理ノード312Bは、インターフェイスロジック318D、318
E、および318Fを含み、処理ノード312Cは、インターフェイスロジック
318G、318H、および318Iを含み、処理ノード312Dは、インター
フェイスロジック318J、318K、および318Lを含む。処理ノード31
2Dは、インターフェイスロジック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で示されるように、処理ノード31
2Aによって処理ノード312Dへと伝送されるパケットは、処理ノード312
Bまたは処理ノード312Cのいずれかを通り抜け得る。好適なあらゆる配線ア
ルゴリズムが用いられ得る。コンピュータシステム300の他の実施例は、図1
2で示される実施例よりもより多くの、またはより少ない処理ノードを含み得る
【0076】 一般に、パケットは、ノード間のライン324上の1つ以上のビットタイム(b
it times)として伝送され得る。ビットタイムは、対応するクロックライン上の
クロック信号の立上がり端縁または立下がり端縁であり得る。パケットは、トラ
ンザクションを開始するためのコマンドパケット、キャッシュコヒーレンシを維
持するためのプローブパケット、およびプローブとコマンドとに応答するための
応答パケットを含み得る。
【0077】 メモリコントローラおよびインターフェイスロジックに加えて、処理ノード3
12A−312Dは1つ以上のプロセッサを含み得る。概して、処理ノードは、
少なくとも1つのプロセッサを含み、所望であればメモリと通信するためのメモ
リコントローラおよび他のロジックを任意で含み得る。より具体的には、各処理
ノード312A−312Dは、プロセッサ10の1つ以上のコピーを含み得る。
外部インターフェイスユニット18は、ノード内にインターフェイスロジック3
18およびメモリコントローラ316を含み得る。
【0078】 メモリ314A−314Dは、好適なあらゆるメモリデバイスを含み得る。た
とえば、メモリ314A−314Dは、1つ以上のRAMBUS DRAM(R
DRAM)、同期DRAM(SDRAM)、スタティックRAM等を含み得る。
コンピュータシステム300のアドレススペースはメモリ314A−314D内
で分割される。処理ノード312A−312Dの各々は、どのアドレスがどのメ
モリ314A−314Dにマッピングされ、したがってどの処理ノード312A
−312Dにある特定のアドレスのためのメモリ要求が経路付けされるべきなの
かを判断するために用いられるメモリマップを含み得る。ある実施例では、コン
ピュータシステム300内のアドレスのためのコヒーレンシポイントは、アドレ
スに対応するメモリ記憶バイトに結合されたメモリコントローラ316A−31
6Dである。言換えると、メモリコントローラ316A−316Dは、対応する
メモリ314A−314Dへのメモリアクセスの各々がキャッシュコヒーレント
態様で起こることを保証することを担当する。メモリコントローラ316A−3
16Dは、メモリ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で示されるプロセッサを含むコンピュータシステムの別の
実施例のブロック図である。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成14年4月2日(2002.4.2)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0004
【補正方法】変更
【補正の内容】
【0004】 残念ながら、x86アーキテクチャは最大32ビットオペランドサイズおよび
32ビットアドレスサイズに限定されている。オペランドサイズとは、プロセッ
サによって動作させられるビットの数(たとえば、ソースまたはデスティネーシ
ョンオペランド内のビット数)を指す。アドレスサイズとは、プロセッサが生成
するアドレス内のビットの数を指す。したがって、x86アーキテクチャを採用
するプロセッサは、64ビットアドレスサイズまたはオペランドサイズから利益
を得ることができるアプリケーションのニーズを満たさないおそれがある。 この発明の概要の前に、2つの背景技術文献が以下のように確認される。 US−A−5 774 686は、拡張指示(extension indication)を記憶す
るように構成される制御レジスタを含むプロセッサを開示し、ここでは、前記プ
ロセッサは、前記拡張指示に応答して、さらには命令セットフラグ(flag)とシス
テムフラグとに応答して、命令セット構成およびシステム構成を確立するように
構成される。 US−A−5 787 495は、セグメントレジスタへのセレクタの記憶の
ステップを開示している。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0008
【補正方法】変更
【補正の内容】
【0008】 概して、さらにはこの発明の1つの局面に従って、特に請求項1で規定される
ようなプロセッサが提供される。このプロセッサは、セグメントレジスタと制御
レジスタとを含む。セグメントレジスタは、第1の動作モード指示および第2の
動作モード指示を含むセグメント記述子を識別するセグメントセレクタを記憶す
るように構成される。制御レジスタは、イネーブル指示を記憶するように構成さ
れる。イネーブル指示、第1の動作モード指示、および第2の動作モード指示に
応答して、プロセッサは動作モードを確立するように構成され、この動作モード
は、プロセッサがそれを実行するように構成されている命令のためにデフォルト
オペランドサイズおよびデフォルトアドレスサイズを特定する。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0009
【補正方法】変更
【補正の内容】
【0009】 請求項11で規定されるように、セグメントセレクタは、プロセッサが結合さ
れるメモリ内に記憶されるセグメント記述子テーブルへのインデックスを含み得
る。セグメント記述子は、インデックスによって示されるエントリ内のセグメン
ト記述子テーブル内に記憶され、プロセッサは、セグメントセレクタに応答して
セグメント記述子テーブルからセグメント記述子を読出すように構成され、プロ
セッサは、イネーブル指示がイネーブル状態にあり、かつ動作モード指示が第1
の状態にあることに応答して仮想アドレスが32ビットよりも大きい動作モード
で動作するように構成される。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0010
【補正方法】変更
【補正の内容】
【0010】 この発明の別の局面に従うと、特に請求項17で規定されるような方法が提供
される。動作モードは、プロセッサ内の制御レジスタの中のイネーブル指示、セ
グメント記述子内の第1の動作モード指示、およびセグメント記述子内の第2の
動作モード指示に応答して、プロセッサ内で確立される。この動作モードは、プ
ロセッサがそれを実行するように構成されている命令のためにデフォルトオペラ
ンドサイズおよびデフォルトアドレスサイズを特定する。動作モードに応答して
、オペランドが取出され、アドレスが生成される。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0012
【補正方法】変更
【補正の内容】
【0012】 この発明には種々の変形および代替の形が可能であるが、その具体的な実施例
は図における例によって示され、ここで詳細に説明される。しかし、図およびそ
れに対する詳細な説明は、この発明を開示されたある特定の形に限定することを
意図するものではなく、逆に、追加の請求項によって規定されるようなすべての
変形、均等物、および代替物を包含することが意図されることが理解されるべき
である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マクグラス,ケビン・ジェイ アメリカ合衆国、95033 カリフォルニア 州、ロス・ガトス、ハチソン・ロード、 22876 (72)発明者 クラーク,マイケル・ティ アメリカ合衆国、78739 テキサス州、オ ースティン、モードレッド・レーン、6137 Fターム(参考) 5B033 AA10 DA07 DA17

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】 プロセッサであって、 第1の動作モード指示と第2の動作モード指示とを含むセグメント記述子を識
    別するセグメントセレクタを記憶するように構成されるセグメントレジスタと、 イネーブル指示を記憶するように構成される制御レジスタとを含み、前記プロ
    セッサは、前記イネーブル指示、前記第1の動作モード指示、および前記第2の
    動作モード指示に応答して動作モードを確立するように構成される、プロセッサ
  2. 【請求項2】 前記動作モードは、前記イネーブル指示がイネーブル状態に
    あり、かつ前記第1の動作モード指示が第1の状態にあると、第1の動作モード
    であり、前記動作モードは、前記イネーブル指示が前記イネーブル状態にあり、
    かつ前記第1の動作モード指示が第2の状態にあり、さらには前記第2の動作モ
    ード指示が前記第1の状態にあると、第2の動作モードである、請求項1に記載
    のプロセッサ。
  3. 【請求項3】 前記第2の動作モードは、前記イネーブル指示が前記イネー
    ブル状態にあり、かつ前記第1の動作モード指示が前記第2の状態にあると、利
    用可能な複数の動作モードのうちの1つであり、前記複数の動作モードのうちの
    前記1つは、前記第2の動作モード指示の状態に応答して選択される、請求項2
    に記載のプロセッサ。
  4. 【請求項4】 前記複数の動作モードのうちの1つは32ビット動作モード
    である、請求項3に記載のプロセッサ。
  5. 【請求項5】 前記複数の動作モードのうちの1つは16ビット動作モード
    である、請求項3に記載のプロセッサ。
  6. 【請求項6】 前記第1の動作モードは32ビットよりも大きいデフォルト
    アドレスサイズを含む、請求項2に記載のプロセッサ。
  7. 【請求項7】 前記デフォルトアドレスサイズは前記プロセッサが生成する
    仮想アドレスに当てはまる、請求項6に記載のプロセッサ。
  8. 【請求項8】 仮想アドレスは前記プロセッサが採用するセグメンテーショ
    ンメカニズムに従って生成される、請求項7に記載のプロセッサ。
  9. 【請求項9】 前記デフォルトアドレスサイズはさらに前記プロセッサが生
    成する物理アドレスに当てはまる、請求項7に記載のプロセッサ。
  10. 【請求項10】 前記イネーブル指示がディセーブル状態にあると、前記第
    1の動作モード指示は不定とされ、前記プロセッサは前記第2の動作モード指示
    に応答して前記動作モードを確立するように構成される、請求項1に記載のプロ
    セッサ。
  11. 【請求項11】 プロセッサであって、 セグメント記述子からの情報およびセグメントセレクタを記憶するように構成
    されるセグメントレジスタを含み、前記セグメントセレクタは、前記プロセッサ
    が結合されるメモリ内に記憶されたセグメント記述子テーブルへのインデックス
    を含み、前記セグメント記述子は、前記インデックスによって示されるエントリ
    内の前記セグメント記述子テーブル内に記憶され、前記プロセッサは前記セグメ
    ントセレクタに応答して前記セグメント記述子テーブルから前記セグメント記述
    子を読出すように構成され、前記セグメント記述子は動作モード指示を含み、前
    記プロセッサはさらに、 イネーブル指示を記憶するように構成される制御レジスタを含み、 前記プロセッサは、前記イネーブル指示がイネーブル状態にあり、かつ前記動
    作モード指示が第1の状態にあることに応答して、仮想アドレスが32ビットよ
    りも大きい動作モードで動作するように構成される、プロセッサ。
  12. 【請求項12】 物理アドレスは前記動作モードでは32ビットよりも大き
    い、請求項11に記載のプロセッサ。
  13. 【請求項13】 物理アドレスは64ビットよりも少ないかまたはそれに等
    しいビットの第1の数である、請求項12に記載のプロセッサ。
  14. 【請求項14】 仮想アドレスは64ビットよりも少ないかまたはそれに等
    しいビットの第1の数である、請求項11に記載のプロセッサ。
  15. 【請求項15】 前記セグメント記述子はさらに特権レベルを含む、請求項
    11に記載のプロセッサ。
  16. 【請求項16】 第2のイネーブル指示を記憶するように構成される第2の
    制御レジスタをさらに含み、前記プロセッサは、前記第2のイネーブル指示が前
    記イネーブル状態にあることに応答して前記セグメント記述子テーブルから前記
    セグメント記述子を読出すように構成される、請求項11に記載のプロセッサ。
  17. 【請求項17】 方法であって、 前記プロセッサ内の制御レジスタ内のイネーブル指示、セグメント記述子内の
    第1の動作モード指示、および前記セグメント記述子内の第2の動作モード指示
    に応答して、プロセッサ内で動作モードを確立するステップと、 前記動作モードに応答してオペランドを取出し、アドレスを生成するステップ
    とを含む、方法。
  18. 【請求項18】 前記確立するステップは、前記イネーブル指示がイネーブ
    ル状態にあり、かつ前記第1の動作モード指示が第1の状態にあることに応答し
    て第1の動作モードを確立するステップを含み、前記第1の動作モードは32ビ
    ットよりも大きなデフォルトアドレスサイズを含む、請求項17に記載の方法。
  19. 【請求項19】 前記デフォルトアドレスサイズは仮想アドレスに当てはま
    る、請求項18に記載の方法。
  20. 【請求項20】 前記デフォルトアドレスサイズは物理アドレスに当てはま
    る、請求項19に記載の方法。
  21. 【請求項21】 前記確立するステップはさらに、前記イネーブル指示がイ
    ネーブル状態にあり、かつ前記第1の動作モード指示が第2の状態にあり、さら
    には前記第2の動作モードが前記第1の状態にあることに応答して第2の動作モ
    ードを確立するステップを含み、前記第1の動作モードは32ビットのデフォル
    トアドレスサイズを含む、請求項18に記載の方法。
  22. 【請求項22】 前記確立するステップはさらに、前記イネーブル指示が前
    記イネーブル状態にあり、かつ前記第1の動作モード指示が第2の状態にあると
    複数の動作モードのうちの1つを確立するステップを含み、前記複数の動作モー
    ドのうちの前記1つは前記第2の動作モード指示の状態に応答して選択される、
    請求項18に記載の方法。
JP2001552211A 2000-01-14 2000-07-19 プロセッサ内での動作モードの確立 Expired - Lifetime JP4520683B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/483,101 2000-01-14
US09/483,101 US6973562B1 (en) 2000-01-14 2000-01-14 Establishing an operating mode in a processor
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 true JP2003519868A (ja) 2003-06-24
JP2003519868A5 JP2003519868A5 (ja) 2007-06-14
JP4520683B2 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008015720A (ja) * 2006-07-05 2008-01-24 Nec Electronics Corp プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法
JP2008171428A (ja) * 2007-01-09 2008-07-24 Internatl Business Mach Corp <Ibm> プロセッサが規格合致するように見えるアーキテクチャ・レベルを選択するための方法および装置
JP2014505926A (ja) * 2010-12-22 2014-03-06 インテル・コーポレーション 特権レベルに関わらずセグメントレジスタの読み取りおよび書き込みを行うシステム、装置、および方法

Families Citing this family (13)

* Cited by examiner, † Cited by third party
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
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
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位进程的方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63174145A (ja) * 1987-01-14 1988-07-18 Hitachi Ltd デ−タ処理装置
JPH0193847A (ja) * 1987-10-05 1989-04-12 Hitachi Ltd アドレス拡張方式
US5774686A (en) * 1995-06-07 1998-06-30 Intel Corporation Method and apparatus for providing two system architectures in a processor

Family Cites Families (15)

* Cited by examiner, † Cited by third party
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
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
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63174145A (ja) * 1987-01-14 1988-07-18 Hitachi Ltd デ−タ処理装置
JPH0193847A (ja) * 1987-10-05 1989-04-12 Hitachi Ltd アドレス拡張方式
US5774686A (en) * 1995-06-07 1998-06-30 Intel Corporation Method and apparatus for providing two system architectures in a processor

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6009068231, インテル株式会社, インテル・アーキテクチャ・ソフトウェア・ディベロッパーズ・マニュアル 下巻:システムプログラミングガ, 1997, pp.3−9〜pp.3−15, JP, CQ出版株式会社 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008015720A (ja) * 2006-07-05 2008-01-24 Nec Electronics Corp プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法
JP2008171428A (ja) * 2007-01-09 2008-07-24 Internatl Business Mach Corp <Ibm> プロセッサが規格合致するように見えるアーキテクチャ・レベルを選択するための方法および装置
JP2014505926A (ja) * 2010-12-22 2014-03-06 インテル・コーポレーション 特権レベルに関わらずセグメントレジスタの読み取りおよび書き込みを行うシステム、装置、および方法

Also Published As

Publication number Publication date
EP1247171B1 (en) 2003-09-10
DE60005219D1 (de) 2003-10-16
EP1247171A1 (en) 2002-10-09
US6973562B1 (en) 2005-12-06
TW567434B (en) 2003-12-21
KR100636413B1 (ko) 2006-10-19
CN100419671C (zh) 2008-09-17
WO2001052058A1 (en) 2001-07-19
KR20020091066A (ko) 2002-12-05
JP4520683B2 (ja) 2010-08-11
CN1423773A (zh) 2003-06-11
DE60005219T2 (de) 2004-06-24

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
US6901505B2 (en) Instruction causing swap of base address from segment register with address from another register
US6671791B1 (en) Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms
US6807616B1 (en) Memory address checking in a proccesor that support both a segmented and a unsegmented address space
US6757771B2 (en) Stack switching mechanism in a computer system
US6898697B1 (en) Efficient method for mode change detection and synchronization
US7284115B2 (en) Processor which overrides default operand size for implicit stack pointer references and near branches
US6889312B1 (en) Selective zero extension based on operand size
US7100028B2 (en) Multiple entry points for system call instructions
US6321314B1 (en) Method and apparatus for restricting memory access
US6968446B1 (en) Flags handling for system call instructions
US6687806B1 (en) Apparatus and method for generating 64 bit displacement and immediate values
JP4520683B2 (ja) プロセッサ内での動作モードの確立
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
US6065108A (en) Non-quick instruction accelerator including instruction identifier and data set storage and method of implementing same
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

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