JP3837289B2 - 同じ論理的空間を占有する複数のレジスタファイルを含むマイクロプロセッサ - Google Patents
同じ論理的空間を占有する複数のレジスタファイルを含むマイクロプロセッサ Download PDFInfo
- Publication number
- JP3837289B2 JP3837289B2 JP2000531777A JP2000531777A JP3837289B2 JP 3837289 B2 JP3837289 B2 JP 3837289B2 JP 2000531777 A JP2000531777 A JP 2000531777A JP 2000531777 A JP2000531777 A JP 2000531777A JP 3837289 B2 JP3837289 B2 JP 3837289B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- microprocessor
- type
- register file
- registers
- 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 - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 21
- 230000002401 inhibitory effect Effects 0.000 claims 2
- 230000007704 transition Effects 0.000 description 23
- 230000004913 activation Effects 0.000 description 13
- 230000006399 behavior Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
【0001】
【発明の分野】
この発明は、マイクロプロセッサの分野に関し、より特定的には、同じ論理的記憶装置に対応付けられる複数のレジスタファイルを有するマイクロプロセッサに関する。
【0002】
【関連技術の説明】
WO−A−97/22924は、命令を実行するための方法およびマイクロプロセッサを開示している。ある実施例では、マイクロプロセッサは、第1および第2のレジスタファイル、すなわちパックされたデータレジスタおよび浮動小数点レジスタを採用する。遷移ユニットは、これら2つの物理的レジスタファイル間でデータをコピーすることによって、パックされたデータレジスタを浮動小数点レジスタ上にエイリアスする。全体または部分的なエイリアスが開示されている。全体のエイリアスの際には、パックされたデータモードへの遷移の間、物理的浮動小数点レジスタファイルは、パックされたデータレジスタファイル上に完全にエイリアスされ、同様に、浮動小数点モードへの遷移の間、物理的パックされたデータレジスタファイルは、物理的浮動小数点レジスタファイル上に完全にエイリアスされる。部分的エイリアスの間、物理的浮動小数点レジスタまたは物理的パックされたデータレジスタのうち対応するタグが非空状態を示すものにのみ記憶されたデータについてコピーが行なわれる。この文献の開示は、前掲の独立クレームの前文を形成する。
マイクロプロセッサはしばしば、広範な問題に対する計算解決を与えるためにさまざまなデータ型を演算するように構成される。たとえば、整数データ型と浮動小数点データ型とは普通に用いられる。整数データ型は、演算されるべき値がおおよそ同じ絶対値(さらには関心の結果を発生するために計算される任意の中間結果)である場合に使用されるであろう。一方で、演算されるべき値の絶対値(または中間結果)が大きく変動すると予想されるならば、浮動小数点データ型がより適切であろう。
【0003】
命令セット内の各命令によって使用されるデータ型は、典型的には、命令定義の一部として予め定義される。たとえば整数命令は、整数データ型を演算するために定義される命令である。同様に、浮動小数点命令は、浮動小数点データ型を演算するために定義される。一般的には、命令とは、マイクロプロセッサが所望の機能を実行するよう命じるために、プログラマが特定可能な最も基本的な演算である。特定の順序で命令を配置することによって、プログラマは特定の目的を達成し得る。命令は、他の命令とグルーピングされ、これらが演算するように定義されたデータ型に従って異なった命令型を形成してもよい。典型的には、命令は、演算を実行すべき1つ以上のオペランド(「ソースオペランド」)を受取るよう定義され、結果(「デスティネーションオペランド」)を記憶するよう定義される。ここに用いられる「命令セット」という言葉は、特定のプロセッサアーキテクチャを介して定義される命令の群を指す。各命令は、その命令を命令セット内の他の命令から明白に識別する一意な符号を割当てられる。
【0004】
半導体製造プロセスの進歩に伴って、単一のチップに含まれ得るトランジスタの数を増加させ、かつ、チップの動作周波数を増大させることが可能となった。したがって、マイクロプロセッサは、増大した動作周波数(すなわちより短いクロックサイクル)と、利用可能なトランジスタの増加によって可能となった進歩したマイクロアーキテクチャとによって、性能を向上させることができるようになった。
【0005】
利用可能なトランジスタの増加を利用する1つの方法は、新しいデータ型をマイクロプロセッサに加えることである。この新しいデータ型は、特定のタスクを念頭に置いて特に設計されてもよい。データ型と、そのデータ型を演算するために定義される命令とは、特定のタスクのために最適化されてもよい。たとえば、x86命令セットは、このようにして最近拡張されている。x86命令セットを実現する先行のマイクロプロセッサ(たとえば、インテル社(Intel Corporation)の80486およびアドバンストマイクロデバイス社の5K86)は一般的に、浮動小数点データ型および整数データ型を特定する命令を実行するが、最も最近のマイクロプロセッサの実現化例は、MMXデータ型を特定する命令をも実行する。MMXデータ型は、1組のパックされた整数として処理される64ビットのオペランドである。パックされた整数は、8個の8ビット整数、4個の16ビット整数または2個の32ビット整数であってもよい。
【0006】
MMXデータ型およびこのデータ型を使用する命令は、ビデオおよびオーディオデータ操作のために最適化される。オーディオおよび/またはビデオ操作をここでは「マルチメディア操作」と呼ぶ。コンピュータシステムが、オペレーティングシステムおよびその上にインストールされたアプリケーションプログラムを介してより進歩したグラフィカルユーザインターフェイスを採用するにつれて、これらの型の演算はより重要となってきている。加えて、コンピュータシステムのオーディオ能力が向上してきた。より特定的には、MMXデータ型は、パックされた整数内の整数値の各々に対して同じ演算が実行されることを考慮している。1つの命令が複数の値を演算し得るために、所望の操作を実行するために採用され得る命令は、そうでない場合に必要となる命令より少なくてすむ。多くのビデオおよび/またはオーディオ計算タスクについては、同じ演算がディスプレイまたは再生のために配置された多数のデータ要素に与えられるので、このため複数のデータ要素に対して同じ演算を行なう命令が有利であろう。
【0007】
MMXデータ型および命令を付加するより前にx86アーキテクチャのために設計されたオペレーティングシステムに対する影響を最小限にするために、MMXオペランドを記憶するように定義されたレジスタは、浮動小数点レジスタと共有されるよう定義される。言い換えれば、MMXレジスタは、浮動小数点レジスタと同じ論理的記憶場所を使用するようにアーキテクチャ的に定義される。こうすればいかなる新しい状態もマイクロプロセッサに加えられない。MMX命令によって使用されるデータは浮動小数点データと同じ組のレジスタに記憶されるので、MMX命令を認識しないオペレーティングシステムでも適切に動作し得る。これらのオペレーティングシステムは既に浮動小数点レジスタを処理しているので、MMXレジスタは自動的に処理される。
【0008】
データ型間のレジスタの共有は、オペレーティングシステムの互換性については有利であるかもしれないが、新しいデータ型および命令をサポートするマイクロプロセッサについてはさらなるハードウェア上の問題を生ずる。共有レジスタ内に1つのデータ型の値を記憶して、異なったデータ型を演算する命令のために共有レジスタをソースオペランドとして使用することは一般的には非論理的であるが、そのような状況においても定義された挙動を提供することが望ましい。新しいデータ型を使用して書かれたソフトウェアとの互換性を維持するために、アーキテクチャを実現するマイクロプロセッサを設計するときにこの定義された挙動を維持することが望ましい。マイクロプロセッサの性能への最小限の影響でこの挙動を維持することがまた望まれる。
【0009】
【発明の概要】
以上に略述した問題は、この発明に従うマイクロプロセッサによって大部分解決される。マイクロプロセッサは、マルチメディア命令についてのオペランドを記憶するよう定義される複数個のマルチメディアレジスタを含む第1のレジスタファイルと、浮動小数点命令についてのオペランドを記憶するよう定義される複数個の浮動小数点レジスタを含む第2のレジスタファイルとを含む。マルチメディアレジスタおよび浮動小数点レジスタは、マイクロプロセッサによって採用される命令セットに従って同じ論理的記憶装置に対応付けられる。浮動小数点命令がマルチメディア命令によって最も最近に更新されたレジスタを読出すとき、またはその逆のときに予め定められた挙動を維持するために、マイクロプロセッサは、1以上のマルチメディア命令の組と1以上の浮動小数点命令の組とを実行するときの間での第1および第2のレジスタファイルの同期化に備える(ここではどちらの組がプログラム順で他方に先行してもよく、この順序はどちらの方向に内容のコピーが行なわれるか、すなわち第1のレジスタファイルから第2のレジスタファイルへかまたはその逆か、に影響を及ぼす)。有利には、レジスタファイルの同期化は、自動的に実行される。上述した状況における予め定められた挙動は、このようにして維持される。
【0010】
予め定められた挙動が必要でない場合に、より高い性能をサポートするために、マイクロプロセッサは空状態命令をサポートする。もし空状態命令が1以上のマルチメディア命令の組と1以上の浮動小数点命令の組との間にコードシーケンスで含まれれば、マイクロプロセッサはレジスタファイル同期化を禁止する。レジスタファイル同期化が実行されないので、同期化に関連する遅延は回避される。有利には、より効率的なコード実行が実現されてもよい。x86命令セットを含むある実施例では、空状態命令は、上記特徴に加えてEMMS命令と同じ動作のセットを実行する。レジスタファイル同期化および空状態命令を与えることによって、予め定められた挙動を期待するソフトウェアとの互換性が維持されながらも、予め定められた挙動を必要としないソフトウェアにレジスタファイル同期化を備えない柔軟性を与える。
【0011】
概して、この発明は、デコードユニット、第1のレジスタファイル、第2のレジスタファイル、第1の実行ユニットおよび第2の実行ユニットを含むマイクロプロセッサを企図する。デコードユニットは、第1の型の命令、第2の型の命令および空状態命令を含む命令セット内で定義される命令をデコードするよう構成される。加えて、命令セットは、第2の複数個のレジスタの各々が割当てられた論理的記憶場所に、第1の複数個のレジスタの対応する1つが割当てられるように、第1の型の命令を介してアクセス可能である第1の複数個のレジスタと第2の型の命令を介してアクセス可能である第2の複数個レジスタとが、論理的記憶装置に対応付けられるよう定義する。第1のレジスタファイルは、第1の複数個のレジスタに対応する物理的記憶場所を含む。同様に、第2のレジスタファイルは、第2の複数個のレジスタに対応する物理的記憶場所を含む。第1のレジスタファイルに結合され、第1の実行ユニットは、第1の型の命令を実行するよう構成される。加えて、第1の実行ユニットは、第1の型の命令についてのオペランドを第1のレジスタファイルから読出すよう構成される。同様に、第2の実行ユニットは、第2のレジスタファイルに結合され、第2の型の命令を実行するよう構成される。第2の実行ユニットは、第2の型の命令についてのオペランドを第2のレジスタファイルから読出すよう構成される。デコードユニットは、第1の型の第1の命令、空状態命令および第2の型の第2の命令を含む第1の命令シーケンスをデコードすると、第1の命令の実行と第2の命令の実行との間で第1のレジスタファイルと第2のレジスタファイルとの同期化を禁止するよう構成される。
【0012】
この発明は、第1の型の命令、第2の型の命令および空状態命令を含む命令セット内で定義される命令を実行するための方法をさらに企図する。命令セットは、第2の複数個のレジスタの各々が割当てられた論理的記憶場所に、第1の複数個レジスタの対応する1つが割当てられるよう、第1の型の命令を介してアクセス可能な第1の複数個のレジスタと第2の型の命令を介してアクセス可能な第2の複数個のレジスタとが論理的記憶装置に対応付けられるようにさらに定義する。第1の型の第1の命令についての第1のオペランドは、第1の複数個のレジスタの各々についての物理的記憶場所を含む第1のレジスタファイルから読出される。第2の型の第2の命令についての第2のオペランドは、第2の複数個のレジスタの各々についての物理的記憶場所を含む第2のレジスタファイルから読出される。もし空状態命令が第1の命令と第2の命令との間に命令シーケンスで含まれていなければ、第1のレジスタファイルと第2のレジスタファイルとは、第1のオペランドの読出と第2のオペランドの読出との間で同期化される。もし空状態命令が第1の命令と第2の命令との間に命令シーケンスで含まれていれば、第1のレジスタファイルと第2のレジスタファイルとの同期化は禁止される。
【0013】
さらに、この発明は、第1のレジスタファイルおよび第2のレジスタファイルを含むマイクロプロセッサを企図する。第1のレジスタファイルは、第1の複数個のレジスタに対応する物理的記憶場所を含む。同様に、第2のレジスタファイルは、第2の複数個のレジスタに対応する物理的記憶場所を含む。マイクロプロセッサは、第1の型の命令、第2の型の命令および空状態命令を含む命令セット内で定義される命令を実行するよう構成され、命令セットは、第2の複数個レジスタの各々が割当てられた論理的記憶場所に第1の複数個のレジスタの対応する1つが割当てられるように、第1の型の命令を介してアクセス可能な第1の複数個のレジスタと第2の型の命令を介してアクセス可能な第2の複数個のレジスタとが論理的記憶装置に対応付けられるようさらに定義する。加えて、マイクロプロセッサは、第1の命令および第2の命令を含む第1の命令シーケンスが空状態命令をも含むことに応答して、第1の型の第1の命令を実行した後に、かつ、第2の型の第2の命令を実行する前に、第1のレジスタファイルと第2のレジスタファイルとの同期化を禁止するよう構成される。
【0014】
この発明は、マイクロプロセッサ、メモリ、I/O装置を含むコンピュータシステムをさらに企図する。マイクロプロセッサは、第1の複数個のレジスタに対応する物理的記憶場所を含む第1のレジスタファイルと、第2の複数個レジスタに対応する物理的記憶場所を含む第2のレジスタファイルとを含む。マイクロプロセッサは、第1の型の命令、第2の型の命令および空状態命令を含む命令セット内で定義される命令を実行するよう構成され、命令セットは、第2の複数個レジスタファイルが割当てられた論理的記憶場所に、第1の複数個レジスタの対応する1つが割当てられるように、第1の型の命令を介してアクセス可能な第1の複数個のレジスタと第2の型の命令を介してアクセス可能な第2の複数個のレジスタとが論理的記憶装置に対応付けられるようさらに定義する。さらに、マイクロプロセッサは、第1の命令および第2の命令を含む命令シーケンスが空状態命令も含むことに応答して、第1の型の第1の命令を実行した後に、かつ、第2の型の第2の命令を実行するより前に、第1のレジスタファイルと第2のレジスタファイルとの同期化を禁止するよう構成される。マイクロプロセッサに結合され、主メモリは、命令シーケンスを記憶し、マイクロプロセッサから命令シーケンスを要求されると、命令シーケンスをマイクロプロセッサに与えるよう構成される。主メモリに結合され、I/O装置は、主メモリとI/O装置に結合される第2のコンピュータシステムとの間でデータを転送するよう構成される。
【0015】
この発明の他の目的および利点は、以下の詳細な説明を読みかつ添付の図面を参照することによって明らかとなるであろう。
【0016】
この発明は、さまざまな変形および代替形を許すが、その特定の実施例は、図面の例によって示され、ここに詳細に記載される。しかしながら、図面およびこれに対する詳細な説明は、開示される特定の形態にこの発明を限定するものではなく、反対に、前掲のクレームによって規定されるようなこの発明の精神および範囲内にあるすべての変形、等価および代替を含むものである。
【0017】
【詳細な説明】
図1を参照すると、マイクロプロセッサ10のある実施例のブロック図が示される。他の実施例も可能であり、企図される。図1の実施例では、マイクロプロセッサ10は、命令キャッシュ14およびプリデコードキャッシュ15に結合されるプリデコード論理ブロック12を含む。キャッシュ14および15はまた、命令TLB16を含む。キャッシュコントローラ18は、プリデコード論理ブロック12、命令キャッシュ14およびプリデコードキャッシュ15に結合される。コントローラ18はさらに、バスインターフェイスユニット24、レベル1データキャッシュ26(これはデータTLB28を含む)、およびL2キャッシュ40に結合される。マイクロプロセッサ10は、デコードユニット20をさらに含み、これは命令キャッシュ14から命令を受取りプリデコードキャッシュ15からのデータをプリデコードする。この情報は、分岐論理ユニット22から受取られる入力に従って実行エンジン30に転送される。
【0018】
実行エンジン30は、デコードユニット20から入力を受取るよう結合されるスケジューラバッファ32を含む。スケジューラバッファ32は、命令制御ユニット34から受取られる入力に従って、デコードされた命令を複数個の実行ユニット36A−36Eに送るよう結合される。実行ユニット36A−36Eは、ロードユニット36A、ストアユニット36B、レジスタXユニット36C、レジスタYユニット36D、および、浮動小数点ユニット36Eを含む。ロードユニット36Aはデータキャッシュ26から入力を受取り、ストアユニット36Bはストアキュー38を介してデータキャッシュ26にインターフェイスする。後ろに文字が付いた参照番号でここに参照される要素は、参照番号だけで集合的に参照される。たとえば、実行ユニット36A−36Eは、実行ユニット36として集合的に参照される。
【0019】
図1に示すとおり、レジスタユニット36C−36Dはレジスタファイル44に結合され、レジスタユニット36C−36Dはここからソースオペランドを読出すよう構成され、レジスタユニット36C−36Dはここにデスティネーション結果値を記憶するよう構成される。浮動小数点ユニット36Eはまた、レジスタファイル42を含むものとして示される。レジスタファイル42は、設計に従った浮動小数点レジスタの各々に割当てられる物理的記憶場所を含む。レジスタファイル44はまた、設計に従った浮動小数点レジスタの各々に割当てられる物理的記憶場所を含む。浮動小数点命令は、浮動小数点ユニット36Eによって実行され、これはレジスタファイル42からソースオペランドを読出し、また、レジスタファイル42内のデスティネーションを更新する。レジスタユニット36C−36Dは、整数命令を実行し、レジスタファイル44からソースオペランドを読出し、レジスタファイル44内のデスティネーションを更新する。しかしながら、整数レジスタは、浮動小数点レジスタから論理的に分離している(すなわち、別個の記憶場所であるようにアーキテクチャ的に定義されている)。加えて、レジスタユニット36C−36Dは、マルチメディア命令を実行するよう構成され、この実施例では、これは論理的に浮動小数点レジスタと同じ記憶場所であるマルチメディアレジスタからソースオペランドを読出すよう定義される。したがって、レジスタファイル44内のマルチメディアレジスタに対応する物理的記憶場所は、レジスタファイル42内の物理的記憶場所と論理的に同じである。ここに使用される、マルチメディア命令という言葉は、上記のパックされた整数演算(たとえばx86命令セット内のMMX命令によって定義されるものなどの演算)を指す。さらに、マルチメディア命令という言葉は、3次元グラフィック計算のために最適化された浮動小数点命令を指してもよい。これらの命令は、たとえば、所与の浮動小数点レジスタにパックされた2つの32ビットの浮動小数点数を演算するように定義されてもよい。
【0020】
レジスタファイル42および44内の物理的記憶場所の別個の組は、1組の論理的記憶場所(すなわち設計に従った浮動小数点レジスタ)に対応付けられるので、マイクロプロセッサ10は、以下の場合に予測可能な挙動を可能にするためにレジスタファイル42および44の同期化をサポートする。すなわち、(i)浮動小数点命令がソースオペランドとしてレジスタを使用し、レジスタへの最も最近の更新がマルチメディア命令に応答して実行された場合と、(ii)マルチメディア命令がソースオペランドとしてレジスタを使用し、レジスタへの最も最近の更新が浮動小数点命令に応答して実行された場合とである。しかしながら、レジスタファイルの同期化は比較的遅いプロセスである。一般的に、レジスタファイル42と44との同期化は、マルチメディア命令と浮動小数点命令とで論理的に共有されるレジスタを表わすレジスタファイルのうちの一方の内の各物理的記憶場所の内容を、他方のレジスタファイルにコピーすることを伴う。コピーの方向(すなわちレジスタファイル42からレジスタファイル44へ、または、レジスタファイル44からレジスタファイル42へ)は、どの型の命令(浮動小数点またはマルチメディア)が最近実行されたかに依存する。ここに使用される、「論理的記憶場所」という言葉は、存在するようアーキテクチャ的に定義される記憶場所(すなわちレジスタ)を指す。言い換えれば、命令セット定義は、記憶場所を定義し、命令は、命令のさまざまな符号を介してオペランドとして記憶場所を特定することができる。反対に、「物理的記憶場所」は、マイクロプロセッサによって実際に実現される記憶場所を指す。論理的記憶場所にアクセスするよう符号化された命令が、結果として特定の物理的記憶場所にアクセスすれば、論理的記憶場所は特定の物理的記憶場所に「対応付け」られたことになる。
【0021】
上記のとおり、レジスタファイル42と44との同期化は、比較的遅いプロセスである。したがって、レジスタファイル42と44との同期化は、マイクロプロセッサ10の性能を不当に制限してしまうことがある。前述のとおり、浮動小数点命令がソースオペランドとしてマルチメディア結果を使用すること、およびその逆もまた、一般的には非論理的である。マイクロプロセッサ10は、空状態命令を定義し、これを使用して特定の命令シーケンスがマルチメディアレジスタ更新と浮動小数点レジスタ更新との間の同期化に頼らないことを示すことができる。もし空状態命令が命令シーケンス内で使用されれば、マイクロプロセッサ10は、レジスタファイル42と44との同期化を禁止する。このようにして、同期化を必要としないコードシーケンスは、マイクロプロセッサ10によってより迅速に実行される可能性があり、したがって、他の態様で可能であるよりも、より高い性能レベルを達成し得る。
【0022】
ある実施例では、マイクロプロセッサ10は、x86命令セットを採用し、空状態命令は、レジスタファイル同期化を禁止するのに加えて、EMMS命令について定義される演算を実行する。より特定的には、浮動小数点ユニット36E内のタグワードレジスタが、空状態命令が実行されると更新されて各浮動小数点レジスタが有効でないことを示す。空状態命令はEMMS命令とは異なって符号化され、マイクロプロセッサ10はまた、EMMS命令を実行するよう構成される。しかしながら、EMMS命令は、レジスタファイル42と44とが同期化されるかどうかに影響しない。言い換えれば、もしEMMS命令が実行され空状態命令が実行されなければ、レジスタファイル42と44とは同期化される。ある特定の実施例では、(EMMS命令の符号0F 77に対して)0F 0E(16進法)の符号が、空状態命令に割当てられ、命令ニーモニックはFEMMSである。
【0023】
なお、レジスタファイル42内の特定の物理的場所が、所与の論理的浮動小数点レジスタに永続的に割当てられないように(同様に、レジスタファイル44内の特定の物理的場所が所与の論理的マルチメディアレジスタに永続的に割当てられないように)、マイクロプロセッサ10はレジスタファイル42および44に関してレジスタリネーミングを採用してもよい。しかしながら、所与の特定の命令の実行より前に、各レジスタファイル内の1組の物理的場所が論理的レジスタに対応する。したがって、レジスタリネーミングの存在下でもレジスタファイルの同期化はなお実行される。さらに、上記説明は、レジスタソースオペランドおよびデスティネーションを有するものとして浮動小数点命令およびマルチメディア命令について言及するが、これらの命令は、メモリオペランド(すなわち、レジスタの使用とは反対に直接にメモリ場所から読出されそこに記憶されるオペランド)を有することを妨げられないことが注目される。さらに、マルチメディアおよび浮動小数点命令型が、共有レジスタセットを有するものとしてここに記載されるが、他の型の命令が同様に構成されてもよく、空状態命令はそのような実施例で使用されてもよいことが企図される。
【0024】
ある実施例では、命令キャッシュ14はセクタとして構成され、各セクタは2個の32バイトキャッシュラインを含む。セクタの2個のキャッシュラインは、共通のタグを共有し、ラインのステータスを追跡する別個の状態ビットを有する。したがって、2つの形態のキャッシュミス(および関連するキャッシュフィル)が起こり得る。すなわちセクタ置換およびキャッシュライン置換とである。セクタ置換の場合、ミスは命令キャッシュ14内のタグミスマッチによるものであって、必要とされるキャッシュラインが、バスインターフェイス24を介して外部メモリから与えられる。次に、必要とされないセクタ内のキャッシュラインは無効であるとマークされる。必要とされるキャッシュラインは外部メモリによって与えられるが、セクタ置換の場合とは違って、要求されなかったセクタ内のキャッシュラインは同じ状態に維持される。代替の実施例では、命令キャッシュ14についての他の構成と、さまざまな置換ポリシーとが利用されてもよい。
【0025】
ある実施例では、マイクロプロセッサ10はセクタ置換の場合においてのみプリフェッチを実行する。セクタ置換の間、必要とされるキャッシュラインが満たされる。もしこの必要とされるキャッシュラインがセクタの前半にあれば、セクタ内の他のキャッシュラインがプリフェッチされる。もしこの必要とされるキャッシュラインがセクタの後半にあれば、いかなるプリフェッチも実行されない。なお、他のプリフェッチ方法がマイクロプロセッサ10の異なる実施例において採用されてもよい。
【0026】
命令データのキャッシュラインがバスインターフェイスユニット24によって外部メモリから検索されると、データはプリデコード論理ブロック12に送られる。ある実施例では、マイクロプロセッサ10によって処理されキャッシュ14内に記憶される命令は、可変長(たとえばx86命令セット)である。可変長命令のデコードは特に複雑であるので、プリデコード論理ブロック12は、プリデコードキャッシュ15に記憶されるべき付加的な情報を与えてデコードの際に支援するように構成される。ある実施例では、プリデコード論理ブロック12は、命令キャッシュ14に記憶される各バイトごとにプリデコードビットを生成する。プリデコードビットは、次の可変長命令の開始に対してバイトの数を示す。これらのプリデコードビットは、プリデコードキャッシュ15に記憶され、命令バイトがキャッシュ14から要求されるとデコードユニット20に送られる。
【0027】
命令キャッシュ14は、32Kバイトの2ウェイセットアソシアティブキャッシュとして実現されてもよい。キャッシュラインサイズは、たとえば32バイトであってもよい。キャッシュ14はまた、線形アドレスを物理的アドレスに変換するために使用されるTLB16を含む。TLB16は、たとえば64エントリを含んでもよい。
【0028】
命令フェッチアドレスは、キャッシュコントローラ18によって命令キャッシュ14に与えられる。ある実施例では、1クロックサイクルあたり16バイトまでがキャッシュ14からフェッチされてもよい。対応するプリデコード情報は、プリデコードキャッシュ15から並列にフェッチされる。フェッチされた情報は、デコードユニット20内の命令バッファに置かれる。マイクロプロセッサ10のある実施例では、フェッチは、7個までの未決の分岐が取られる単一の実行ストリームに沿って行なわれてもよい。
【0029】
デコードユニット20は、1プロセッサクロックサイクルあたり多数の命令をデコードするよう構成される。ある実施例では、デコードユニット20は、命令バイトを受付け、命令バッファからビットをプリデコードし(x86フォーマットにおいて)、命令境界を位置付け、対応する「RISC演算」を生成する。RISC演算は、固定されたフォーマット内部命令であって、そのほとんどはマイクロプロセッサ10によって単一のクロックサイクルで実行可能である。RISC演算は、x86命令セットのあらゆる機能を形成するよう組合される。
【0030】
命令制御ユニット34は、スケジューラバッファ32に記憶される命令の飛越実行を管理するのに必要な論理を含む。命令制御ユニット34はまた、データ転送と、レジスタリネーミングと、RISC演算の同時発行およびリタイアメントと、投機的実行とを管理する。ある実施例では、スケジューラバッファ32は、最大12個のx86命令に等しい、24個までのRISC演算を一度に保持する。可能であれば、命令制御ユニット34は、実行ユニット36の任意の利用可能な1つにRISC演算を(バッファ32から)同時に発行してもよい。ある実施例では、命令制御ユニット34は、1クロックサイクルあたり6個までのRISC演算を発行し、4個までのRISC演算をリタイアメントしてもよい。
【0031】
図1に示すとおり、マイクロプロセッサ10は、5個の実行ユニット36を含む。ストアユニット36Bおよびロードユニット36Aは、2段階のパイプライン設計である。ストアユニット36Aは、1クロックサイクル後ロードに応じられるデータメモリ書込を実行する。ロードユニット36Aは、メモリ読出を実行する。これらの読出からのデータは、2クロックサイクル後に利用可能である。ロードユニットおよびストアユニットは、さまざまなレイテンシを持つ他の実施例でも可能である。
【0032】
実行ユニット36Cは、ALU演算、乗算、除算(符号付きおよび符号なしの両方とも)、シフトおよびローテートを演算するよう構成される固定小数点(または整数)実行ユニットである。対照的に、実行ユニット36Dは、基本語および倍長語ALU演算(たとえば加算および比較など)を演算するよう構成される固定小数点実行ユニットである。
【0033】
実行ユニット36C−36Dはまた、マルチメディア命令を使用して書かれたソフトウェアの性能を加速するよう構成される。マルチメディア命令の利用が可能なアプリケーションは、グラフィック、ビデオおよびオーディオ圧縮および伸長、音声認識、ならびに、電話機能を含む。
【0034】
実行ユニット36Eは、x86浮動小数点命令を利用するソフトウェアの性能を加速するよう設計されるIEEE754に従った浮動小数点ユニットを含む。実行ユニット36Eは、加算器ユニットと、乗算器ユニットと、除算/平方根ルートユニットとを含んでもよい。実行ユニット36Eは、コプロセッサの形態で動作してもよく、この場合デコードユニット20が浮動小数点命令を実行ユニット36Eに直接ディスパッチする。浮動小数点命令はなおも、スケジューラバッファ32に割当てられ、命令の正順リタイアメントを可能にする。実行ユニット36Eとスケジューラバッファ32とは、いつ浮動小数点命令がリタイアメントの準備ができたかを決定するよう通信する。
【0035】
分岐解決ユニット35は、これが分岐条件が評価された後に条件分岐を解決するという点で分岐予測論理22から分離している。分岐解決ユニット35は、効率的な投機的実行を可能にし、マイクロプロセッサ10が分岐予測が正しいかどうかわかる前に条件分岐を超えて命令を実行することを可能にする。上記のとおり、ある実施例ではマイクロプロセッサ10は、7個までの未決の分岐を処理するよう構成される。
【0036】
デコードユニット20に結合される分岐予測論理22は、条件分岐がマイクロプロセッサ10において予測される正確さを増大させるよう構成される。分岐予測論理22は、分岐挙動および、遅延された命令フェッチによるストールなどの、命令実行へのその否定的影響を処理するよう構成される。ある実施例では、分岐予測論理22は、8192エントリ分岐ヒストリテーブルと、16バイト×16エントリ分岐ターゲットキャッシュと、16エントリリターンアドレススタックとを含む。
【0037】
分岐予測論理22は、分岐ヒストリテーブルを使用して2レベル適応的ヒストリアルゴリズムを実現する。このテーブルは、実行される分岐情報を記憶し、個々の分岐を予測し、分岐の群の挙動を予測する。ある実施例では、分岐ヒストリテーブルは、スペースを節約するために、予測されたターゲットアドレスを記憶しない。これらのアドレスは代わりに、デコード段の間にオンザフライで計算される。分岐が取られると予測されるときのキャッシュフェッチの1クロックサイクルペナルティを回避するために、分岐論理22内の分岐ターゲットキャッシュは、(もし分岐ターゲットキャッシュ内にヒットが生ずれば)ターゲットアドレスの最初の16バイトを直接命令バッファに与える。
【0038】
分岐論理22はまた、コールおよびリターン命令を最適化するよう設計される回路を含む。この回路は、メモリ内のコール命令に続く次の命令のアドレスがリターンアドレススタック上にプッシュされることを可能にする。マイクロプロセッサ10がリターン命令に遭遇すると、分岐論理22は、リターンスタックからアドレスをポップしそのアドレスでフェッチを開始する。
【0039】
この発明の実施例に従えば、命令キャッシュ14と同様に、データキャッシュ26もまた2ウェイセットアソシアティブの、32Kバイトのキャッシュとして構成される。データTLB28は、線形アドレスを物理的アドレスに変換するために使用され、たとえば、128エントリを含んでもよい。データキャッシュ26は、命令キャッシュ14と同様に区分されてもよい。
【0040】
図2を次に参照すると、デコードユニット10のある実施例のブロック図が示される。他の実施例は可能で企図される。図2に示す実施例では、デコードユニット20は、命令バッファ50と、1組のショートデコーダ52と、ロングデコーダ54と、ベクトルデコーダ56と、シーケンサ58と、マイクロコードROM60と、出力選択マルチプレクサ(mux)62とを含む。命令バッファ50は、分岐が取られると予測される場合に、命令キャッシュ14およびプリデコードキャッシュ15または分岐論理ユニット22から命令バイトおよび対応するプリデコードデータを受取るよう結合される。命令バッファ50はまた、ショートデコーダ52とロングデコーダ54とベクトルデコーダ56とに結合される。ショートデコーダ52、ロングデコーダ54、ベクトルデコーダ56およびシーケンサ58の各々は、出力選択マルチプレクサ62に入力を与えるよう結合される。ベクトルデコーダ56はまた、シーケンサ58に結合され、これはさらにマイクロコードROM60に結合される。出力選択マルチプレクサ62は、スケジューラバッファ32に結合される。ベクトルデコーダ56は、1対の記憶場所64および66を含む。記憶場所64は、マルチメディアイネーブル表示を記憶し、記憶場所66は浮動小数点イネーブル表示を記憶する。シーケンサ58は、マイクロコードROM60に記憶されるマイクロコードルーチンによって使用されるスクラッチRAM68を含む。スクラッチRAM68は、浮動小数点/マルチメディア状態についての記憶装置を含む。
【0041】
命令バッファ50は、バイトがデコーダ52、54および56の1つによってデコードされディスパッチされるまで、命令バイトおよび対応するプリデコーダデータを記憶するよう構成される。各クロックサイクルごとに、命令バッファ50は、デコードされた命令バイトを廃棄し、残りの命令バイトを命令キャッシュ14/プリデコードキャッシュ15または分岐論理ユニット22から受取られた命令バイトとマージする。ある実施例では、命令バッファ50は、最大16命令バイトと対応するプリデコードデータとを記憶する。
【0042】
ショートデコーダ52は、最も共通して使用されるx86命令(たとえば転送、シフト、分岐など)を0、1または2個のRISC演算に各々変換する。ショートデコーダ52は、「短い」x86命令を演算するよう構成される。言い換えれば、ショートデコーダ52は、予め定められた最大長までの複数バイトを有する命令をデコードするよう構成される。ある実施例では、予め定められた最大長は7バイトである。ある実施例では、ショートデコーダ52は、2個の並列デコーダを含む。
【0043】
ロングデコーダ54は、1クロックサイクル毎に1つの命令をデコードし、命令に応答して4個までのRISC演算を生成する。デコーダ54は、ショートデコーダ52によってサポートされる予め定められた最大長よりも長いが多くとも4RISC演算になおも分解可能である命令をデコードするよう構成される。ある実施例では、ロングデコーダ54は、長さが11バイトまでの命令をデコードするよう構成される。
【0044】
ベクトルデコーダ56は、ショートデコーダ52またはロングデコーダ54によって処理されない残りの命令をデコードする。ベクトルデコーダ56は、デコードされる命令に対応するマイクロコードルーチンの最初の4個のRISC演算を生成するよう構成される。並列して、ベクトルデコーダ56は、ルーチンの残余が記憶されるエントリポイント(すなわちマイクロコードROM60内のアドレス)を生成するよう構成される。シーケンサ58は、その後のクロックサイクルの間マイクロコードROM60からルーチンの残余をフェッチし、一度に4RISC演算まで、ルーチンを出力選択マルチプレクサ62に転送する。
【0045】
命令のうちこれに対してショートデコーダ52およびロングデコーダ54が設計されないものを処理するのに加えて、ベクトルデコーダ56は、ある例外条件を検出しこの例外条件に応答してエントリポイントおよびマイクロコードルーチンに対応するものの最初のRISC演算を生成する。これらの例外条件の1つは、以下のいずれかの検出である、すなわち、(i)浮動小数点命令のデコードの後、しかし任意の他のマルチメディア命令のデコードの前のマルチメディア命令と、(ii)マルチメディア命令のデコードの後、しかし任意の他の浮動小数点命令のデコードの前の浮動小数点命令とのいずれかである。これらの場合の各々について、レジスタファイル42と44との同期化が必要とされ得る。
【0046】
ベクトルデコーダ56は、記憶場所64および66に記憶されるマルチメディアイネーブル表示および浮動小数点イネーブル表示を使用して上記の場合を検出する。各表示は、セットされたとき、対応する命令型のデコードが能動化されたことを示し、かつ、クリアされたとき、対応する命令型のデコードが不能化されたことを示すビットを含んでもよい。代替的に、各表示は、セットされたとき、対応する命令型のデコードが不能化されたことを示し、かつ、クリアされたとき、対応する命令型のデコードが能動化されたことを示すビットを含んでもよい。マルチメディアイネーブル表示および浮動小数点イネーブル表示によって表わされる命令型のうちの1つのみが、任意の所与の時間で能動化され得る。不能化される命令型をデコードすると、ベクトルデコーダ56は例外条件を生成する。
【0047】
シーケンサ58はマイクロコードルーチンをフェッチし、これはレジスタファイル42と44との間のレジスタファイル同期化を実行するべきか否かを決定し、その同期化を選択的に実行する。マイクロコードルーチンはまた、実行ユニット36C−36Dと実行ユニット36Eとの間である種の他の同期化を行なう。たとえば、上記のマルチメディア命令を含むx86アーキテクチャを採用するマイクロプロセッサ10の実施例では、浮動小数点実行ユニット36Eによって使用され浮動小数点レジスタの有効性およびステータスワードのスタック部分の最上部を示すタグワードは、マルチメディア命令の実行に応答して変更される。したがって、もし例外が生成されて浮動小数点命令がデコードされれば、36Eの浮動小数点実行内の最上部スタックおよびタグワードは従って変更される。
【0048】
シーケンサ58は、浮動小数点/マルチメディア状態をスクラッチRAM68内に記憶する。浮動小数点/マルチメディア状態は、ベクトルデコーダ56によって維持されるマルチメディアイネーブル表示および浮動小数点イネーブル表示と同様に、浮動小数点命令デコードまたはマルチメディア命令デコードが能動化されるか否かを示す。しかしながら、付加的に、浮動小数点/マルチメディア状態はまた、最も最近にデコードされたマルチメディア命令が空状態命令であったかどうかも示す。ベクトルデコーダ56が空状態命令をデコードすると、浮動小数点/マルチメディア状態はセットされ最も最近にデコードされたマルチメディア命令が空状態命令であったかどうかを示す。浮動小数点/マルチメディア状態は、浮動小数点またはマルチメディア命令のいずれかがその後にデコードされるまで、最も最近デコードされたマルチメディア命令が空状態命令であったことを示す。(マルチメディアイネーブル表示および浮動小数点イネーブル表示によって示されるとおり)もしその後にデコードされるマルチメディアまたは浮動小数点命令が能動化されれば、浮動小数点/マルチメディア状態は更新されその命令型およびデコードされた最終命令が空状態命令でなかったことを示す。ある実施例では、空状態命令はベクトルデコーダ56によってマルチメディア命令であると考えられる。したがって、空状態命令のデコードの後に、浮動小数点命令は例外をもたらし、マルチメディア命令は、例外をもたらさないが、浮動小数点/マルチメディア状態によって最も最近にデコードされた命令が空状態命令であったことを示さないようにセットされる。このようにして、マイクロコードROM60からフェッチされたマイクロコードルーチンは、レジスタファイル42と44との同期化が所望されるか否かを決定することができる。代替的に、シーケンサ58は、浮動小数点/マルチメディア状態、および、ベクトルデコーダ56によるマルチメディア命令のデコードの場合にはマルチメディア命令が空状態命令であるかどうかに依存して、異なったマイクロコードルーチンをフェッチしてもよい。マイクロコードルーチンはまた、先に能動化された命令型を不能化し、記憶場所64および66に先に不能化された命令型を能動化する。その後に、ベクトルデコーダ56が例外を生成した命令は、再びフェッチされる。対応する命令型はここで能動化されているので、例外は生成されるはずはない。加えて、反対の命令型の命令がその後にデコードされれば、別の例外が生成される(レジスタファイル42と44との同期化をする、または同期化をしない機会が生ずる)。
【0049】
上記のようにして、デコードユニット20は、レジスタファイル42と44との同期化を禁止するか、または、現在能動化されていない命令型をデコードすると同期化を実行するよう構成される。イネーブル表示は、たとえさまざまな他の命令型がその間にデコードされるとしても(たとえば整数命令)、デコードユニット20が1つ以上の浮動小数点命令のセットと1つ以上のマルチメディア命令のセットとの間の境界を検出することを可能にする。なお、いくつかの場合においては、いずれの命令型のデコードも能動化されないことがある。たとえば、浮動小数点命令の実行は、マイクロプロセッサ10によって採用されるアーキテクチャによって定義される制御レジスタ内のさまざまな制御ビットを介して不能化されることがある。そのような場合には、たとえマルチメディア命令のデコードが不能化されているとしても浮動小数点命令のデコードは不能化される。
【0050】
出力選択マルチプレクサ62は、そこに命令を与えているソースの1つから命令を選択しこれらの命令をスケジューラバッファ32に伝送するよう構成される。命令のソースの各々は、RISC演算を出力選択マルチプレクサ62に与え、このためスケジューラバッファ32はRISC演算のみを受取る。出力選択マルチプレクサ62は、デコーダおよびシーケンサ58の各々から制御信号(わかりやすくするため図面には図示せず)によって制御される。
【0051】
なお、命令バッファ50からの命令は、デコーダ52、54および56の各々に並列に与えられる。デコーダの各々は、与えられた命令バイトをデコードしようと試み、命令を実際にデコードすることのできるデコーダによって出力選択マルチプレクサ62はその出力を選択する。さらに、マイクロコードROM60は、レジスタファイルの同期化(またはその欠如)のために上記のルーチンを記憶するのに加えて、所望のごとく、さまざまな他の目的のためにルーチンを記憶する。マイクロコードルーチンは、特定の目的を達成するよう配置される命令のシーケンス(たとえばRISC演算)を含む。
【0052】
図3を参照すると、シーケンサ58によって維持される浮動小数点/マルチメディア状態のある実施例の状態を示す例示の状態マシン70が図示される。他の実施例を企図することが可能である。図3の実施例では、状態マシン70は、FP活性化状態72、マルチメディア活性化状態74、および、FEMMS状態76を含む。
【0053】
FP活性化状態72は、レジスタファイル同期化を実行するべきかどうかを決定する例外を生じることなしに、浮動小数点命令がデコードされディスパッチされ得る状態である。マルチメディア活性化状態74またはFEMMS状態76のいずれかでは、レジスタファイル同期化を実行するべきかどうかを決定する例外を生ずることなしにマルチメディア命令はデコードされディスパッチされ得る。状態マシン70に図示されるさまざまなアークは、状態変化を起こさせる事象を示す。点線のアークは、レジスタファイル同期化が実行されるべきかどうかを決定するためにベクトルデコーダ56によって合図される例外を示す。実線のアークは、例外なしに実行される状態変化(またはその欠如)を示す。
【0054】
状態マシン70がFP活性化状態72にあるとき、浮動小数点または「通常」命令のいずれかのデコードによって状態マシン70はFP活性化状態72に維持される。これを説明すると、「通常」命令とは、浮動小数点命令、マルチメディア命令または空状態命令ではない命令を指す。たとえば、整数命令はこの説明では通常命令である。他方で、マルチメディア命令または空状態命令(図3に示す「FEMMS命令」)のデコードによって、FP活性化状態72からマルチメディア活性化状態74またはFEMMS状態76の1つに、それぞれ遷移する。これらの遷移の各々は、ベクトルデコーダ56によってシーケンサ58に合図される例外を介して生ずる。FP活性化状態72からマルチメディア活性化状態74への遷移は、レジスタファイル同期化を招き、一方、FP活性化状態72からFEMMS状態76への遷移はレジスタファイル同期化を招かない。このようにして、浮動小数点命令の実行からマルチメディア命令の実行への遷移は、空状態命令によって開始可能であり、レジスタファイル同期化が禁止されることがある。マイクロコードルーチンを完成すると、状態マシン70はデスティネーション状態になる。
【0055】
状態マシン70がマルチメディア活性化状態74にあるとき、マルチメディア命令または通常命令のいずれかのデコードによって、状態マシン70はマルチメディア状態74に維持される。他方で、空状態命令のデコードによって、状態マシン70はFEMMS状態76に遷移し、浮動小数点命令のデコードによってFP活性化状態72に遷移する。FEMMS状態76への遷移は例外を生ずることなしに起きる(なぜなら空状態命令は、状態マシン70に関してはおよびレジスタファイル42と44との同期化に関してはマルチメディア命令と考えられるからである)。逆にFP活性化状態72への遷移は例外を介して起こる。
【0056】
状態マシン70がFEMMS状態76にあるとき、通常命令のデコードによって状態マシン70はFEMMS状態76に維持される。このようにして、1つ以上の通常命令は、空状態命令とその後のマルチメディア命令または浮動小数点命令との間にコードシーケンスで挿入可能であり、コードシーケンス内の空状態命令の存在によるレジスタファイル同期化への影響は、あたかも通常命令がコードシーケンスにはなかったかのように同じである。したがって、空状態命令を使用するプログラミングモデルは、より柔軟になる可能性がある。他方で、マルチメディア命令のデコードによって状態マシン70はマルチメディア活性化状態74に遷移する(空状態命令はマルチメディア命令であると考えられるので、ここでもレジスタファイルの同期化はない)。浮動小数点命令のデコードは、FP活性化状態72への遷移と、レジスタファイルの同期化が所望されるかどうかを決定する例外とをもたらす。FEMMS状態76からFP活性化状態72への遷移は、レジスタファイル同期化なしに達成される、なぜならFEMMS状態76にある状態マシン70は、最も最近に実行されたマルチメディアまたは浮動小数点命令が空状態であったことを示し、したがってレジスタファイル同期化は所望されないからである。
【0057】
なお、上記説明は、例外をもたらす遷移のうちどれがレジスタファイル同期化を招き、どれがそうでないかを示すが、これらの状態マシンの遷移は、マイクロコードルーチンを介して管理される。したがって、状態遷移の実行の間、レジスタファイル同期化が実行されるかどうかを決定するのはマイクロコードルーチンである。さらに、空状態命令はマルチメディア命令であると考えられるので、マルチメディア活性化状態74とFEMMS状態76との間の遷移は、例外をもたらすことなしに実行され得ることが注目される。したがって、レジスタファイル同期化は必要とされない。シーケンサ58によって維持される浮動小数点/マルチメディア状態が、新しい状態に更新されるだけである。さらに、上記の状態マシンは、一部マイクロコードルーチンで、一部ハードウェアで実現される。しかしながら、状態マシンは、適切なレジスタファイル同期化を含め、ハードウェアにおいて完全に実現可能であることが企図される。さらにまた他の実施例が企図され、状態マシン70およびデコードユニット20によって表される機能がデコード段とは異なったパイプラインにおける段に採用されてもよい。いかなる好適な構成が使用されてもよい。
【0058】
ある実施例に従うと、状態マシン70の状態は、マイクロプロセッサ10によって予測される各分岐命令とともにディスパッチされてもよいことが注目される。分岐の予測誤りが起きれば、その分岐命令とともにディスパッチされた状態は状態マシン70にリストアされてもよい。代替的に、分岐命令とともに状態をディスパッチすることとある種の命令を実行する前に実行命令をストールすることとを組合わせてこれを所望のごとく採用してもよい。投機的命令実行がリダイレクトされるとき(たとえば分岐の予測誤りおよび例外)状態マシン70の状態を回復するための任意の好適な方法が使用されてもよい。
【0059】
次に図4を参照すると、上記説明に従ってレジスタファイル同期化を選択的に実行するために用いられる1つ以上のマイクロコードルーチンによって実行される動作の例示の組を図示するフローチャートが示される。他の実施例も可能であり企図される。図4に示すステップは場合によっては直列順に例示されるが、いかなる好適な順が使用されてもよい。この説明の残りの部分では、マイクロコードルーチンという用語を使用する。しかしながら、1つ以上のマイクロコードルーチンが図4に示すステップを実行するために使用されてもよいことが理解される。
【0060】
マイクロコードルーチンは、記憶場所64および66に記憶される浮動小数点イネーブル表示およびマルチメディアイネーブル表示の状態を調べて実行するべき適切な動作を決定する(決定ブロック80および82)。浮動小数点命令およびマルチメディア命令のいずれも能動化されなければ、マイクロコードルーチンはソフトウェア割込ハンドラに制御を転送する(ステップ84)。ソフトウェア割込ハンドラは、浮動小数点および/またはマルチメディア実行が能動化されるべきか否かを決定してもよい。もし浮動小数点イネーブル表示が能動化されれば(すなわち状態マシン70がFP活性化状態72にある)、マイクロコードルーチンは、デコードされるべきマルチメディア命令が空状態命令であるかどうかを決定する(決定ブロック86)。もしマルチメディア命令が空状態命令であれば、浮動小数点命令とマルチメディア命令との間の遷移が検出されており、マルチメディア命令は空状態命令で開始される。したがって、レジスタファイル同期化は所望されない。マイクロコードルーチンは浮動小数点/マルチメディア状態をFEMMS状態76にセットし(ステップ88)、記憶場所64および66をさらにセットしてマルチメディアが能動化され浮動小数点が不能化されたことを示す。
【0061】
他方で、もしデコードされるべきマルチメディア命令が空状態命令でなければ、浮動小数点命令とマルチメディア命令との間の遷移が検出されており、レジスタファイル同期化が所望される。したがって、レジスタファイル42内のレジスタの各々は、レジスタファイル44内の対応するレジスタにコピーされる(ステップ90)。加えて、マイクロコードルーチンは、浮動小数点/マルチメディア状態をマルチメディア活性化状態74にセットし、記憶場所64および66をセットしてマルチメディアが能動化され浮動小数点が不能化されたことを示す。
【0062】
逆に、もし浮動小数点が不能化されマルチメディアが能動化されれば、マイクロコードルーチンは、状態マシン70がFEMMS状態76にあるかどうかを決定する(決定ブロック92)。もし状態マシン70がFEMMS状態76にあれば、マルチメディア命令と浮動小数点命令との間の遷移が検出されており、レジスタファイル同期化は所望されない。したがって、マイクロコードルーチンは浮動小数点実行ユニット36E内のタグワードをセットしてレジスタファイル42内の各レジスタが無効であることを示す(なぜなら最も最近に実行されたマルチメディア命令は空状態命令であったからである)。加えて、マイクロコードルーチンは、(マルチメディア命令定義に従って)ステータスワードのスタック部分の最上部をセットする。さらに、マイクロコードルーチンは、浮動小数点/マルチメディア状態をFP活性化状態72にセットし、記憶場所64および66をセットしてマルチメディアが不能化され浮動小数点が能動化されたことを示す(ステップ94)。
【0063】
もし浮動小数点が不能化され、マルチメディアが能動化され、状態マシン70がマルチメディア活性化状態74にあるならば、マルチメディア命令と浮動小数点命令との間の遷移が検出されており、レジスタファイル同期化が所望される。したがって、マイクロコードルーチンは、ステータスワードのスタック部分を0にセットする(ステップ96)。加えて、タグワードは、最も最近に実行されたマルチメディア命令がEMMS命令であったか否かまたは別のマルチメディア命令であったかどうかに依存して、各レジスタ毎に有効または無効のいずれかにセットされる。加えて、マイクロコードルーチンは、レジスタファイル44内のレジスタをレジスタファイル42内の対応するレジスタにコピーする。最後に、マイクロコードルーチンは、浮動小数点/マルチメディア状態をFP活性化状態72にセットし、記憶場所64および66をセットしてマルチメディアが不能化され浮動小数点が能動化されたことを示す。
【0064】
次に図5を参照すると、空状態命令の例示的使用を示す例示のソフトウェア階層が示される。さまざまなルーチンがボックス100−108によって例示される。各ボックスは、上部および下部に分かたれる。上部分は、ルーチンの型を特定し、下部分はルーチンのその型に含まれる命令のセットを示す。ボックスの間の矢印は、どのルーチンが互いと通信可能であるか(すなわちコールするかまたはコールされる)を示す。
【0065】
ボックス100は、浮動小数点ルーチンによってコールされず浮動小数点ルーチンをコールしない通常ルーチン(すなわち浮動小数点命令またはマルチメディア命令を含まないルーチン)を例示する。したがって、通常ルーチンは、1つ以上の通常命令を含む。もしマルチメディアルーチンが通常ルーチンによってコールされるならば、オプションとして1つ以上の通常命令に続くのは空状態命令である。リターン命令が通常ルーチンを締めくくる。したがって、ボックス108によって表わされるルーチンなどのルーチンは、ルーチンの最後に空状態命令を省略し得る。さらに、もしボックス108によって表わされるルーチンをコールする通常ルーチンおよび任意のマルチメディアルーチンがボックス108によって表わされるルーチンをコールする前に空状態命令を含めば、ボックス108によって表わされるルーチンはルーチンの開始時に空状態命令を省略し得る。
【0066】
ボックス108によって例示されるルーチンは、マルチメディアルーチンまたは通常ルーチンによってのみコールされるマルチメディアルーチン(すなわち1つ以上のマルチメディア命令および任意で1つ以上の通常命令を含むルーチン)である。ボックス108によって例示されるルーチンは、マルチメディアルーチンまたは通常ルーチンによってのみコールされるので、ボックス108によって例示されるルーチンは、空状態命令を省略し、コールされたルーチンが任意の浮動小数点命令の実行より前に空状態命令を挿入するとすることができる。ボックス108によって例示されるルーチンは、リターン命令で終わる。
【0067】
ボックス102によって例示されるルーチンは、浮動小数点ルーチンを含む、任意のルーチンによってコールされ得る通常ルーチンである。したがって、ルーチンは、リターン命令で終わる1つ以上の通常命令を含む。
【0068】
ボックス104は、たとえば浮動小数点ルーチンを含む非マルチメディアルーチンによってコール可能であるマルチメディアルーチンを例示する。したがって、もしルーチンが浮動ルーチンによってコールされるか、または、浮動小数点ルーチンの実行の後にしかし異なったマルチメディアルーチンの実行よりも前にコールされれば、ルーチンは空状態命令によって開始されレジスタファイル同期化を禁止する。空状態命令の後に1つ以上のマルチメディアおよび/または通常命令が続く。ルーチンは、別の空状態命令およびリターン命令で終わる。もしその後のルーチンが浮動小数点命令を実行すれば、最後の空状態命令は、レジスタファイル同期化を禁止する。
【0069】
浮動小数点ルーチンはボックス106によって例示される。浮動小数点ルーチンは、いかなる他のルーチンによってコールされてもよく、1つ以上の浮動小数点および/または通常命令を含み、リターン命令で終わる。
【0070】
図5に例示するルーチンは、プログラムによって採用される可能性のあるさまざまなルーチンに含まれる空状態命令の数を最小限にしようとする例である。さらに、もしレジスタファイル同期化が所望されれば、空状態命令をこれらのルーチンに使用するべきではないことが注目される。
【0071】
次に図6を参照すると、バスブリッジ202を介してさまざまなシステムコンポーネントに結合されるマイクロプロセッサ10を含むコンピュータシステム200のある実施例のブロック図が示される。他の実施例が可能であり企図される。図示のシステムでは、主メモリ204はメモリバス206によってバスブリッジ202に結合され、グラフィックコントローラ208はAGPバス210によってバスブリッジ202に結合される。最後に、複数個のPCIデバイス212A−212BがPCIバス214によってバスブリッジ202に結合される。2次バスブリッジ216をさらに設けてEISA/ISAバス220によって1つ以上のEISAまたはISAデバイス218への電気的インターフェイスを可能にしてもよい。マイクロプロセッサ10は、CPUバス224によってバスブリッジ202に結合される。
【0072】
バスブリッジ202は、マイクロプロセッサ10と主メモリ204とグラフィックコントローラ208とPCIバス214に接結されるデバイスとのインターフェイスを与える。演算がバスブリッジ202に接続されるデバイスの1つから受取られると、バスブリッジ202は演算のターゲットを特定する(たとえば、特定のデバイスまたは、PCIバス214の場合、ターゲットはPCIバス214の上にある)。バスブリッジ202は、演算をターゲットされたデバイスへ送る。バスブリッジ202は一般的には、演算を、ソースデバイスまたはバスによって使用されるプロトコルからターゲットデバイスまたはバスによって使用されたプロトコルに変換する。
【0073】
PCIバス214に対してISA/EISAバスへのインターフェイスを与えるのに加え、2次バスブリッジ216は、所望であれば、さらなる機能をさらに組込んでもよい。たとえば、ある実施例では、2次バスブリッジ216は、マスタPCIアービタ(図示せず)を含んでPCIバス214の所有権を調停する。入力/出力コントローラ(図示せず)は、外部からであっても2次バスブリッジ216と統合されてもよいが、これを所望のごとくコンピュータシステム200内に含んでキーボードおよびマウス222ならびにさまざまな直列および並列ポートへの動作上のサポートを与えてもよい。他の実施例では、外部キャッシュユニット(図示せず)がマイクロプロセッサ10とバスブリッジ202との間のCPUバス224にさらに結合されてもよい。代替的に、外部キャッシュはバスブリッジ202に結合されてもよく、外部キャッシュに対するキャッシュ制御論理はバスブリッジ202に統合されてもよい。
【0074】
主メモリ204は、この中にアプリケーションプログラムが記憶されここからマイクロプロセッサ10が主に実行するメモリである。好適な主メモリ204は、DRAM(ダイナミックランダムアクセスメモリ)と、好ましくはSDRAM(シンクロナスDRAM)の複数個のバンクとを含む。
【0075】
PCIデバイス212A−212Bは、たとえば、ネットワークインターフェイスカード、ビデオアクセレータ、オーディオカード、ハードまたはフロッピーディスクドライブまたはドライブコントローラ、SCSI(スモールコンピュータシステムインターフェイス)アダプタ、および、電話機能カードなどのさまざまな周辺デバイスを例示するものである。同様に、ISAデバイス218は、モデム、サウンドカード、GPIBまたはフィールドバスインターフェイスカードなどのさまざまなデータ収集カードなどの、さまざまなタイプの周辺デバイスを例示する。
【0076】
グラフィックコントローラ208は、ディスプレイ226上のテキストおよび画像のレンダリングを制御するために設けられる。グラフィックコントローラ208は、一般的に公知である典型的なグラフィックアクセレータを具体化して、主メモリ204へおよびそこから効果的にシフト可能である3次元データ構造をレンダリングしてもよい。グラフィックコントローラ208はしたがって、それがバスブリッジ202内のターゲットインターフェイスへのアクセスを要求し受取って主メモリ204へのアクセスを獲得することが可能であるという点で、AGPバス210のマスタであり得る。専用グラフィックバスは、主メモリからのデータの迅速な検索を収容する。ある種の演算では、グラフィックコントローラ208はさらに、AGPバス210上のPCIプロトコルトランザクションを生成するよう構成されてもよい。したがって、バスブリッジ202のAGPインターフェイスは、AGPプロトコルトランザクションとPCIプロトコルターゲットおよびイニシエータトランザクションとの両方をサポートする機能を含んでもよい。ディスプレイ226は、画像またはテキストを与えることのできる任意の電子ディスプレイである。好適なディスプレイ226は、陰極線管(「CRT」)、液晶ディスプレイ(「LCD」)などを含む。
【0077】
なお、AGPバス、PGIバス、およびISAバスまたはEISAバスは、上記説明では例として使用されるが、所望のごとくいかなるバスアーキテクチャと置き換えてもよい。さらに、コンピュータシステム200は、付加的なマイクロプロセッサ(たとえばコンピュータシステム200の任意のコンポーネントとして示されるマイクロプロセッサ10a)を含むマルチプロセシングコンピュータシステムであってもよい。マイクロプロセッサ10aは、マイクロプロセッサ10と同様であってもよい。より特定的には、マイクロプロセッサ10aは、マイクロプロセッサ10と全く同じコピーであってもよい。マイクロプロセッサ10aは、マイクロプロセッサ10(図6に図示される)とCPUバス224を共有してもよく、または、独立バスを介してバスブリッジ202に接続されてもよい。
【0078】
上記開示に従うと、マイクロプロセッサは、同じ論理的記憶装置に対応付けるよう定義された2つのレジスタファイル間の選択的レジスタファイル同期化をサポートするものとして示される。有利には、レジスタファイル間の同期化が所望されない場合、マイクロプロセッサは同期化を禁止してもよい。同じ論理的レジスタファイルにアクセスする命令とレジスタファイル同期化を必要としない命令との両方の型を採用する命令シーケンスは、レジスタファイルの非同期化によってより高い性能を達成し得る。他方で、レジスタファイル同期化を必要としないコードシーケンスでも同期化の利益を受ける(おそらく達成される性能はより低い)。
【0079】
上記開示を詳細に理解すると多くの変形および修正が当業者には明らかとなるであろう。前掲のクレームはそのような変形および修正のすべてを含むものであると理解されるべきである。
【図面の簡単な説明】
【図1】 マイクロプロセッサのある実施例のブロック図である。
【図2】 図1に示すデコードユニットのある実施例のブロック図である。
【図3】 図2に示すデコードユニットのある実施例の動作を例示する状態マシンの図である。
【図4】 図2に示すデコードユニットのある実施例に従って図3に示す状態マシンの一部を実現するマイクロコードシーケンスで実行されるステップを例示するフローチャートである。
【図5】 高速の空状態命令の例示的使用とサブルーティン階層を例示する図である。
【図6】 図1に示すマイクロプロセッサを含むコンピュータシステムのある実施例のブロック図である。
【発明の分野】
この発明は、マイクロプロセッサの分野に関し、より特定的には、同じ論理的記憶装置に対応付けられる複数のレジスタファイルを有するマイクロプロセッサに関する。
【0002】
【関連技術の説明】
WO−A−97/22924は、命令を実行するための方法およびマイクロプロセッサを開示している。ある実施例では、マイクロプロセッサは、第1および第2のレジスタファイル、すなわちパックされたデータレジスタおよび浮動小数点レジスタを採用する。遷移ユニットは、これら2つの物理的レジスタファイル間でデータをコピーすることによって、パックされたデータレジスタを浮動小数点レジスタ上にエイリアスする。全体または部分的なエイリアスが開示されている。全体のエイリアスの際には、パックされたデータモードへの遷移の間、物理的浮動小数点レジスタファイルは、パックされたデータレジスタファイル上に完全にエイリアスされ、同様に、浮動小数点モードへの遷移の間、物理的パックされたデータレジスタファイルは、物理的浮動小数点レジスタファイル上に完全にエイリアスされる。部分的エイリアスの間、物理的浮動小数点レジスタまたは物理的パックされたデータレジスタのうち対応するタグが非空状態を示すものにのみ記憶されたデータについてコピーが行なわれる。この文献の開示は、前掲の独立クレームの前文を形成する。
マイクロプロセッサはしばしば、広範な問題に対する計算解決を与えるためにさまざまなデータ型を演算するように構成される。たとえば、整数データ型と浮動小数点データ型とは普通に用いられる。整数データ型は、演算されるべき値がおおよそ同じ絶対値(さらには関心の結果を発生するために計算される任意の中間結果)である場合に使用されるであろう。一方で、演算されるべき値の絶対値(または中間結果)が大きく変動すると予想されるならば、浮動小数点データ型がより適切であろう。
【0003】
命令セット内の各命令によって使用されるデータ型は、典型的には、命令定義の一部として予め定義される。たとえば整数命令は、整数データ型を演算するために定義される命令である。同様に、浮動小数点命令は、浮動小数点データ型を演算するために定義される。一般的には、命令とは、マイクロプロセッサが所望の機能を実行するよう命じるために、プログラマが特定可能な最も基本的な演算である。特定の順序で命令を配置することによって、プログラマは特定の目的を達成し得る。命令は、他の命令とグルーピングされ、これらが演算するように定義されたデータ型に従って異なった命令型を形成してもよい。典型的には、命令は、演算を実行すべき1つ以上のオペランド(「ソースオペランド」)を受取るよう定義され、結果(「デスティネーションオペランド」)を記憶するよう定義される。ここに用いられる「命令セット」という言葉は、特定のプロセッサアーキテクチャを介して定義される命令の群を指す。各命令は、その命令を命令セット内の他の命令から明白に識別する一意な符号を割当てられる。
【0004】
半導体製造プロセスの進歩に伴って、単一のチップに含まれ得るトランジスタの数を増加させ、かつ、チップの動作周波数を増大させることが可能となった。したがって、マイクロプロセッサは、増大した動作周波数(すなわちより短いクロックサイクル)と、利用可能なトランジスタの増加によって可能となった進歩したマイクロアーキテクチャとによって、性能を向上させることができるようになった。
【0005】
利用可能なトランジスタの増加を利用する1つの方法は、新しいデータ型をマイクロプロセッサに加えることである。この新しいデータ型は、特定のタスクを念頭に置いて特に設計されてもよい。データ型と、そのデータ型を演算するために定義される命令とは、特定のタスクのために最適化されてもよい。たとえば、x86命令セットは、このようにして最近拡張されている。x86命令セットを実現する先行のマイクロプロセッサ(たとえば、インテル社(Intel Corporation)の80486およびアドバンストマイクロデバイス社の5K86)は一般的に、浮動小数点データ型および整数データ型を特定する命令を実行するが、最も最近のマイクロプロセッサの実現化例は、MMXデータ型を特定する命令をも実行する。MMXデータ型は、1組のパックされた整数として処理される64ビットのオペランドである。パックされた整数は、8個の8ビット整数、4個の16ビット整数または2個の32ビット整数であってもよい。
【0006】
MMXデータ型およびこのデータ型を使用する命令は、ビデオおよびオーディオデータ操作のために最適化される。オーディオおよび/またはビデオ操作をここでは「マルチメディア操作」と呼ぶ。コンピュータシステムが、オペレーティングシステムおよびその上にインストールされたアプリケーションプログラムを介してより進歩したグラフィカルユーザインターフェイスを採用するにつれて、これらの型の演算はより重要となってきている。加えて、コンピュータシステムのオーディオ能力が向上してきた。より特定的には、MMXデータ型は、パックされた整数内の整数値の各々に対して同じ演算が実行されることを考慮している。1つの命令が複数の値を演算し得るために、所望の操作を実行するために採用され得る命令は、そうでない場合に必要となる命令より少なくてすむ。多くのビデオおよび/またはオーディオ計算タスクについては、同じ演算がディスプレイまたは再生のために配置された多数のデータ要素に与えられるので、このため複数のデータ要素に対して同じ演算を行なう命令が有利であろう。
【0007】
MMXデータ型および命令を付加するより前にx86アーキテクチャのために設計されたオペレーティングシステムに対する影響を最小限にするために、MMXオペランドを記憶するように定義されたレジスタは、浮動小数点レジスタと共有されるよう定義される。言い換えれば、MMXレジスタは、浮動小数点レジスタと同じ論理的記憶場所を使用するようにアーキテクチャ的に定義される。こうすればいかなる新しい状態もマイクロプロセッサに加えられない。MMX命令によって使用されるデータは浮動小数点データと同じ組のレジスタに記憶されるので、MMX命令を認識しないオペレーティングシステムでも適切に動作し得る。これらのオペレーティングシステムは既に浮動小数点レジスタを処理しているので、MMXレジスタは自動的に処理される。
【0008】
データ型間のレジスタの共有は、オペレーティングシステムの互換性については有利であるかもしれないが、新しいデータ型および命令をサポートするマイクロプロセッサについてはさらなるハードウェア上の問題を生ずる。共有レジスタ内に1つのデータ型の値を記憶して、異なったデータ型を演算する命令のために共有レジスタをソースオペランドとして使用することは一般的には非論理的であるが、そのような状況においても定義された挙動を提供することが望ましい。新しいデータ型を使用して書かれたソフトウェアとの互換性を維持するために、アーキテクチャを実現するマイクロプロセッサを設計するときにこの定義された挙動を維持することが望ましい。マイクロプロセッサの性能への最小限の影響でこの挙動を維持することがまた望まれる。
【0009】
【発明の概要】
以上に略述した問題は、この発明に従うマイクロプロセッサによって大部分解決される。マイクロプロセッサは、マルチメディア命令についてのオペランドを記憶するよう定義される複数個のマルチメディアレジスタを含む第1のレジスタファイルと、浮動小数点命令についてのオペランドを記憶するよう定義される複数個の浮動小数点レジスタを含む第2のレジスタファイルとを含む。マルチメディアレジスタおよび浮動小数点レジスタは、マイクロプロセッサによって採用される命令セットに従って同じ論理的記憶装置に対応付けられる。浮動小数点命令がマルチメディア命令によって最も最近に更新されたレジスタを読出すとき、またはその逆のときに予め定められた挙動を維持するために、マイクロプロセッサは、1以上のマルチメディア命令の組と1以上の浮動小数点命令の組とを実行するときの間での第1および第2のレジスタファイルの同期化に備える(ここではどちらの組がプログラム順で他方に先行してもよく、この順序はどちらの方向に内容のコピーが行なわれるか、すなわち第1のレジスタファイルから第2のレジスタファイルへかまたはその逆か、に影響を及ぼす)。有利には、レジスタファイルの同期化は、自動的に実行される。上述した状況における予め定められた挙動は、このようにして維持される。
【0010】
予め定められた挙動が必要でない場合に、より高い性能をサポートするために、マイクロプロセッサは空状態命令をサポートする。もし空状態命令が1以上のマルチメディア命令の組と1以上の浮動小数点命令の組との間にコードシーケンスで含まれれば、マイクロプロセッサはレジスタファイル同期化を禁止する。レジスタファイル同期化が実行されないので、同期化に関連する遅延は回避される。有利には、より効率的なコード実行が実現されてもよい。x86命令セットを含むある実施例では、空状態命令は、上記特徴に加えてEMMS命令と同じ動作のセットを実行する。レジスタファイル同期化および空状態命令を与えることによって、予め定められた挙動を期待するソフトウェアとの互換性が維持されながらも、予め定められた挙動を必要としないソフトウェアにレジスタファイル同期化を備えない柔軟性を与える。
【0011】
概して、この発明は、デコードユニット、第1のレジスタファイル、第2のレジスタファイル、第1の実行ユニットおよび第2の実行ユニットを含むマイクロプロセッサを企図する。デコードユニットは、第1の型の命令、第2の型の命令および空状態命令を含む命令セット内で定義される命令をデコードするよう構成される。加えて、命令セットは、第2の複数個のレジスタの各々が割当てられた論理的記憶場所に、第1の複数個のレジスタの対応する1つが割当てられるように、第1の型の命令を介してアクセス可能である第1の複数個のレジスタと第2の型の命令を介してアクセス可能である第2の複数個レジスタとが、論理的記憶装置に対応付けられるよう定義する。第1のレジスタファイルは、第1の複数個のレジスタに対応する物理的記憶場所を含む。同様に、第2のレジスタファイルは、第2の複数個のレジスタに対応する物理的記憶場所を含む。第1のレジスタファイルに結合され、第1の実行ユニットは、第1の型の命令を実行するよう構成される。加えて、第1の実行ユニットは、第1の型の命令についてのオペランドを第1のレジスタファイルから読出すよう構成される。同様に、第2の実行ユニットは、第2のレジスタファイルに結合され、第2の型の命令を実行するよう構成される。第2の実行ユニットは、第2の型の命令についてのオペランドを第2のレジスタファイルから読出すよう構成される。デコードユニットは、第1の型の第1の命令、空状態命令および第2の型の第2の命令を含む第1の命令シーケンスをデコードすると、第1の命令の実行と第2の命令の実行との間で第1のレジスタファイルと第2のレジスタファイルとの同期化を禁止するよう構成される。
【0012】
この発明は、第1の型の命令、第2の型の命令および空状態命令を含む命令セット内で定義される命令を実行するための方法をさらに企図する。命令セットは、第2の複数個のレジスタの各々が割当てられた論理的記憶場所に、第1の複数個レジスタの対応する1つが割当てられるよう、第1の型の命令を介してアクセス可能な第1の複数個のレジスタと第2の型の命令を介してアクセス可能な第2の複数個のレジスタとが論理的記憶装置に対応付けられるようにさらに定義する。第1の型の第1の命令についての第1のオペランドは、第1の複数個のレジスタの各々についての物理的記憶場所を含む第1のレジスタファイルから読出される。第2の型の第2の命令についての第2のオペランドは、第2の複数個のレジスタの各々についての物理的記憶場所を含む第2のレジスタファイルから読出される。もし空状態命令が第1の命令と第2の命令との間に命令シーケンスで含まれていなければ、第1のレジスタファイルと第2のレジスタファイルとは、第1のオペランドの読出と第2のオペランドの読出との間で同期化される。もし空状態命令が第1の命令と第2の命令との間に命令シーケンスで含まれていれば、第1のレジスタファイルと第2のレジスタファイルとの同期化は禁止される。
【0013】
さらに、この発明は、第1のレジスタファイルおよび第2のレジスタファイルを含むマイクロプロセッサを企図する。第1のレジスタファイルは、第1の複数個のレジスタに対応する物理的記憶場所を含む。同様に、第2のレジスタファイルは、第2の複数個のレジスタに対応する物理的記憶場所を含む。マイクロプロセッサは、第1の型の命令、第2の型の命令および空状態命令を含む命令セット内で定義される命令を実行するよう構成され、命令セットは、第2の複数個レジスタの各々が割当てられた論理的記憶場所に第1の複数個のレジスタの対応する1つが割当てられるように、第1の型の命令を介してアクセス可能な第1の複数個のレジスタと第2の型の命令を介してアクセス可能な第2の複数個のレジスタとが論理的記憶装置に対応付けられるようさらに定義する。加えて、マイクロプロセッサは、第1の命令および第2の命令を含む第1の命令シーケンスが空状態命令をも含むことに応答して、第1の型の第1の命令を実行した後に、かつ、第2の型の第2の命令を実行する前に、第1のレジスタファイルと第2のレジスタファイルとの同期化を禁止するよう構成される。
【0014】
この発明は、マイクロプロセッサ、メモリ、I/O装置を含むコンピュータシステムをさらに企図する。マイクロプロセッサは、第1の複数個のレジスタに対応する物理的記憶場所を含む第1のレジスタファイルと、第2の複数個レジスタに対応する物理的記憶場所を含む第2のレジスタファイルとを含む。マイクロプロセッサは、第1の型の命令、第2の型の命令および空状態命令を含む命令セット内で定義される命令を実行するよう構成され、命令セットは、第2の複数個レジスタファイルが割当てられた論理的記憶場所に、第1の複数個レジスタの対応する1つが割当てられるように、第1の型の命令を介してアクセス可能な第1の複数個のレジスタと第2の型の命令を介してアクセス可能な第2の複数個のレジスタとが論理的記憶装置に対応付けられるようさらに定義する。さらに、マイクロプロセッサは、第1の命令および第2の命令を含む命令シーケンスが空状態命令も含むことに応答して、第1の型の第1の命令を実行した後に、かつ、第2の型の第2の命令を実行するより前に、第1のレジスタファイルと第2のレジスタファイルとの同期化を禁止するよう構成される。マイクロプロセッサに結合され、主メモリは、命令シーケンスを記憶し、マイクロプロセッサから命令シーケンスを要求されると、命令シーケンスをマイクロプロセッサに与えるよう構成される。主メモリに結合され、I/O装置は、主メモリとI/O装置に結合される第2のコンピュータシステムとの間でデータを転送するよう構成される。
【0015】
この発明の他の目的および利点は、以下の詳細な説明を読みかつ添付の図面を参照することによって明らかとなるであろう。
【0016】
この発明は、さまざまな変形および代替形を許すが、その特定の実施例は、図面の例によって示され、ここに詳細に記載される。しかしながら、図面およびこれに対する詳細な説明は、開示される特定の形態にこの発明を限定するものではなく、反対に、前掲のクレームによって規定されるようなこの発明の精神および範囲内にあるすべての変形、等価および代替を含むものである。
【0017】
【詳細な説明】
図1を参照すると、マイクロプロセッサ10のある実施例のブロック図が示される。他の実施例も可能であり、企図される。図1の実施例では、マイクロプロセッサ10は、命令キャッシュ14およびプリデコードキャッシュ15に結合されるプリデコード論理ブロック12を含む。キャッシュ14および15はまた、命令TLB16を含む。キャッシュコントローラ18は、プリデコード論理ブロック12、命令キャッシュ14およびプリデコードキャッシュ15に結合される。コントローラ18はさらに、バスインターフェイスユニット24、レベル1データキャッシュ26(これはデータTLB28を含む)、およびL2キャッシュ40に結合される。マイクロプロセッサ10は、デコードユニット20をさらに含み、これは命令キャッシュ14から命令を受取りプリデコードキャッシュ15からのデータをプリデコードする。この情報は、分岐論理ユニット22から受取られる入力に従って実行エンジン30に転送される。
【0018】
実行エンジン30は、デコードユニット20から入力を受取るよう結合されるスケジューラバッファ32を含む。スケジューラバッファ32は、命令制御ユニット34から受取られる入力に従って、デコードされた命令を複数個の実行ユニット36A−36Eに送るよう結合される。実行ユニット36A−36Eは、ロードユニット36A、ストアユニット36B、レジスタXユニット36C、レジスタYユニット36D、および、浮動小数点ユニット36Eを含む。ロードユニット36Aはデータキャッシュ26から入力を受取り、ストアユニット36Bはストアキュー38を介してデータキャッシュ26にインターフェイスする。後ろに文字が付いた参照番号でここに参照される要素は、参照番号だけで集合的に参照される。たとえば、実行ユニット36A−36Eは、実行ユニット36として集合的に参照される。
【0019】
図1に示すとおり、レジスタユニット36C−36Dはレジスタファイル44に結合され、レジスタユニット36C−36Dはここからソースオペランドを読出すよう構成され、レジスタユニット36C−36Dはここにデスティネーション結果値を記憶するよう構成される。浮動小数点ユニット36Eはまた、レジスタファイル42を含むものとして示される。レジスタファイル42は、設計に従った浮動小数点レジスタの各々に割当てられる物理的記憶場所を含む。レジスタファイル44はまた、設計に従った浮動小数点レジスタの各々に割当てられる物理的記憶場所を含む。浮動小数点命令は、浮動小数点ユニット36Eによって実行され、これはレジスタファイル42からソースオペランドを読出し、また、レジスタファイル42内のデスティネーションを更新する。レジスタユニット36C−36Dは、整数命令を実行し、レジスタファイル44からソースオペランドを読出し、レジスタファイル44内のデスティネーションを更新する。しかしながら、整数レジスタは、浮動小数点レジスタから論理的に分離している(すなわち、別個の記憶場所であるようにアーキテクチャ的に定義されている)。加えて、レジスタユニット36C−36Dは、マルチメディア命令を実行するよう構成され、この実施例では、これは論理的に浮動小数点レジスタと同じ記憶場所であるマルチメディアレジスタからソースオペランドを読出すよう定義される。したがって、レジスタファイル44内のマルチメディアレジスタに対応する物理的記憶場所は、レジスタファイル42内の物理的記憶場所と論理的に同じである。ここに使用される、マルチメディア命令という言葉は、上記のパックされた整数演算(たとえばx86命令セット内のMMX命令によって定義されるものなどの演算)を指す。さらに、マルチメディア命令という言葉は、3次元グラフィック計算のために最適化された浮動小数点命令を指してもよい。これらの命令は、たとえば、所与の浮動小数点レジスタにパックされた2つの32ビットの浮動小数点数を演算するように定義されてもよい。
【0020】
レジスタファイル42および44内の物理的記憶場所の別個の組は、1組の論理的記憶場所(すなわち設計に従った浮動小数点レジスタ)に対応付けられるので、マイクロプロセッサ10は、以下の場合に予測可能な挙動を可能にするためにレジスタファイル42および44の同期化をサポートする。すなわち、(i)浮動小数点命令がソースオペランドとしてレジスタを使用し、レジスタへの最も最近の更新がマルチメディア命令に応答して実行された場合と、(ii)マルチメディア命令がソースオペランドとしてレジスタを使用し、レジスタへの最も最近の更新が浮動小数点命令に応答して実行された場合とである。しかしながら、レジスタファイルの同期化は比較的遅いプロセスである。一般的に、レジスタファイル42と44との同期化は、マルチメディア命令と浮動小数点命令とで論理的に共有されるレジスタを表わすレジスタファイルのうちの一方の内の各物理的記憶場所の内容を、他方のレジスタファイルにコピーすることを伴う。コピーの方向(すなわちレジスタファイル42からレジスタファイル44へ、または、レジスタファイル44からレジスタファイル42へ)は、どの型の命令(浮動小数点またはマルチメディア)が最近実行されたかに依存する。ここに使用される、「論理的記憶場所」という言葉は、存在するようアーキテクチャ的に定義される記憶場所(すなわちレジスタ)を指す。言い換えれば、命令セット定義は、記憶場所を定義し、命令は、命令のさまざまな符号を介してオペランドとして記憶場所を特定することができる。反対に、「物理的記憶場所」は、マイクロプロセッサによって実際に実現される記憶場所を指す。論理的記憶場所にアクセスするよう符号化された命令が、結果として特定の物理的記憶場所にアクセスすれば、論理的記憶場所は特定の物理的記憶場所に「対応付け」られたことになる。
【0021】
上記のとおり、レジスタファイル42と44との同期化は、比較的遅いプロセスである。したがって、レジスタファイル42と44との同期化は、マイクロプロセッサ10の性能を不当に制限してしまうことがある。前述のとおり、浮動小数点命令がソースオペランドとしてマルチメディア結果を使用すること、およびその逆もまた、一般的には非論理的である。マイクロプロセッサ10は、空状態命令を定義し、これを使用して特定の命令シーケンスがマルチメディアレジスタ更新と浮動小数点レジスタ更新との間の同期化に頼らないことを示すことができる。もし空状態命令が命令シーケンス内で使用されれば、マイクロプロセッサ10は、レジスタファイル42と44との同期化を禁止する。このようにして、同期化を必要としないコードシーケンスは、マイクロプロセッサ10によってより迅速に実行される可能性があり、したがって、他の態様で可能であるよりも、より高い性能レベルを達成し得る。
【0022】
ある実施例では、マイクロプロセッサ10は、x86命令セットを採用し、空状態命令は、レジスタファイル同期化を禁止するのに加えて、EMMS命令について定義される演算を実行する。より特定的には、浮動小数点ユニット36E内のタグワードレジスタが、空状態命令が実行されると更新されて各浮動小数点レジスタが有効でないことを示す。空状態命令はEMMS命令とは異なって符号化され、マイクロプロセッサ10はまた、EMMS命令を実行するよう構成される。しかしながら、EMMS命令は、レジスタファイル42と44とが同期化されるかどうかに影響しない。言い換えれば、もしEMMS命令が実行され空状態命令が実行されなければ、レジスタファイル42と44とは同期化される。ある特定の実施例では、(EMMS命令の符号0F 77に対して)0F 0E(16進法)の符号が、空状態命令に割当てられ、命令ニーモニックはFEMMSである。
【0023】
なお、レジスタファイル42内の特定の物理的場所が、所与の論理的浮動小数点レジスタに永続的に割当てられないように(同様に、レジスタファイル44内の特定の物理的場所が所与の論理的マルチメディアレジスタに永続的に割当てられないように)、マイクロプロセッサ10はレジスタファイル42および44に関してレジスタリネーミングを採用してもよい。しかしながら、所与の特定の命令の実行より前に、各レジスタファイル内の1組の物理的場所が論理的レジスタに対応する。したがって、レジスタリネーミングの存在下でもレジスタファイルの同期化はなお実行される。さらに、上記説明は、レジスタソースオペランドおよびデスティネーションを有するものとして浮動小数点命令およびマルチメディア命令について言及するが、これらの命令は、メモリオペランド(すなわち、レジスタの使用とは反対に直接にメモリ場所から読出されそこに記憶されるオペランド)を有することを妨げられないことが注目される。さらに、マルチメディアおよび浮動小数点命令型が、共有レジスタセットを有するものとしてここに記載されるが、他の型の命令が同様に構成されてもよく、空状態命令はそのような実施例で使用されてもよいことが企図される。
【0024】
ある実施例では、命令キャッシュ14はセクタとして構成され、各セクタは2個の32バイトキャッシュラインを含む。セクタの2個のキャッシュラインは、共通のタグを共有し、ラインのステータスを追跡する別個の状態ビットを有する。したがって、2つの形態のキャッシュミス(および関連するキャッシュフィル)が起こり得る。すなわちセクタ置換およびキャッシュライン置換とである。セクタ置換の場合、ミスは命令キャッシュ14内のタグミスマッチによるものであって、必要とされるキャッシュラインが、バスインターフェイス24を介して外部メモリから与えられる。次に、必要とされないセクタ内のキャッシュラインは無効であるとマークされる。必要とされるキャッシュラインは外部メモリによって与えられるが、セクタ置換の場合とは違って、要求されなかったセクタ内のキャッシュラインは同じ状態に維持される。代替の実施例では、命令キャッシュ14についての他の構成と、さまざまな置換ポリシーとが利用されてもよい。
【0025】
ある実施例では、マイクロプロセッサ10はセクタ置換の場合においてのみプリフェッチを実行する。セクタ置換の間、必要とされるキャッシュラインが満たされる。もしこの必要とされるキャッシュラインがセクタの前半にあれば、セクタ内の他のキャッシュラインがプリフェッチされる。もしこの必要とされるキャッシュラインがセクタの後半にあれば、いかなるプリフェッチも実行されない。なお、他のプリフェッチ方法がマイクロプロセッサ10の異なる実施例において採用されてもよい。
【0026】
命令データのキャッシュラインがバスインターフェイスユニット24によって外部メモリから検索されると、データはプリデコード論理ブロック12に送られる。ある実施例では、マイクロプロセッサ10によって処理されキャッシュ14内に記憶される命令は、可変長(たとえばx86命令セット)である。可変長命令のデコードは特に複雑であるので、プリデコード論理ブロック12は、プリデコードキャッシュ15に記憶されるべき付加的な情報を与えてデコードの際に支援するように構成される。ある実施例では、プリデコード論理ブロック12は、命令キャッシュ14に記憶される各バイトごとにプリデコードビットを生成する。プリデコードビットは、次の可変長命令の開始に対してバイトの数を示す。これらのプリデコードビットは、プリデコードキャッシュ15に記憶され、命令バイトがキャッシュ14から要求されるとデコードユニット20に送られる。
【0027】
命令キャッシュ14は、32Kバイトの2ウェイセットアソシアティブキャッシュとして実現されてもよい。キャッシュラインサイズは、たとえば32バイトであってもよい。キャッシュ14はまた、線形アドレスを物理的アドレスに変換するために使用されるTLB16を含む。TLB16は、たとえば64エントリを含んでもよい。
【0028】
命令フェッチアドレスは、キャッシュコントローラ18によって命令キャッシュ14に与えられる。ある実施例では、1クロックサイクルあたり16バイトまでがキャッシュ14からフェッチされてもよい。対応するプリデコード情報は、プリデコードキャッシュ15から並列にフェッチされる。フェッチされた情報は、デコードユニット20内の命令バッファに置かれる。マイクロプロセッサ10のある実施例では、フェッチは、7個までの未決の分岐が取られる単一の実行ストリームに沿って行なわれてもよい。
【0029】
デコードユニット20は、1プロセッサクロックサイクルあたり多数の命令をデコードするよう構成される。ある実施例では、デコードユニット20は、命令バイトを受付け、命令バッファからビットをプリデコードし(x86フォーマットにおいて)、命令境界を位置付け、対応する「RISC演算」を生成する。RISC演算は、固定されたフォーマット内部命令であって、そのほとんどはマイクロプロセッサ10によって単一のクロックサイクルで実行可能である。RISC演算は、x86命令セットのあらゆる機能を形成するよう組合される。
【0030】
命令制御ユニット34は、スケジューラバッファ32に記憶される命令の飛越実行を管理するのに必要な論理を含む。命令制御ユニット34はまた、データ転送と、レジスタリネーミングと、RISC演算の同時発行およびリタイアメントと、投機的実行とを管理する。ある実施例では、スケジューラバッファ32は、最大12個のx86命令に等しい、24個までのRISC演算を一度に保持する。可能であれば、命令制御ユニット34は、実行ユニット36の任意の利用可能な1つにRISC演算を(バッファ32から)同時に発行してもよい。ある実施例では、命令制御ユニット34は、1クロックサイクルあたり6個までのRISC演算を発行し、4個までのRISC演算をリタイアメントしてもよい。
【0031】
図1に示すとおり、マイクロプロセッサ10は、5個の実行ユニット36を含む。ストアユニット36Bおよびロードユニット36Aは、2段階のパイプライン設計である。ストアユニット36Aは、1クロックサイクル後ロードに応じられるデータメモリ書込を実行する。ロードユニット36Aは、メモリ読出を実行する。これらの読出からのデータは、2クロックサイクル後に利用可能である。ロードユニットおよびストアユニットは、さまざまなレイテンシを持つ他の実施例でも可能である。
【0032】
実行ユニット36Cは、ALU演算、乗算、除算(符号付きおよび符号なしの両方とも)、シフトおよびローテートを演算するよう構成される固定小数点(または整数)実行ユニットである。対照的に、実行ユニット36Dは、基本語および倍長語ALU演算(たとえば加算および比較など)を演算するよう構成される固定小数点実行ユニットである。
【0033】
実行ユニット36C−36Dはまた、マルチメディア命令を使用して書かれたソフトウェアの性能を加速するよう構成される。マルチメディア命令の利用が可能なアプリケーションは、グラフィック、ビデオおよびオーディオ圧縮および伸長、音声認識、ならびに、電話機能を含む。
【0034】
実行ユニット36Eは、x86浮動小数点命令を利用するソフトウェアの性能を加速するよう設計されるIEEE754に従った浮動小数点ユニットを含む。実行ユニット36Eは、加算器ユニットと、乗算器ユニットと、除算/平方根ルートユニットとを含んでもよい。実行ユニット36Eは、コプロセッサの形態で動作してもよく、この場合デコードユニット20が浮動小数点命令を実行ユニット36Eに直接ディスパッチする。浮動小数点命令はなおも、スケジューラバッファ32に割当てられ、命令の正順リタイアメントを可能にする。実行ユニット36Eとスケジューラバッファ32とは、いつ浮動小数点命令がリタイアメントの準備ができたかを決定するよう通信する。
【0035】
分岐解決ユニット35は、これが分岐条件が評価された後に条件分岐を解決するという点で分岐予測論理22から分離している。分岐解決ユニット35は、効率的な投機的実行を可能にし、マイクロプロセッサ10が分岐予測が正しいかどうかわかる前に条件分岐を超えて命令を実行することを可能にする。上記のとおり、ある実施例ではマイクロプロセッサ10は、7個までの未決の分岐を処理するよう構成される。
【0036】
デコードユニット20に結合される分岐予測論理22は、条件分岐がマイクロプロセッサ10において予測される正確さを増大させるよう構成される。分岐予測論理22は、分岐挙動および、遅延された命令フェッチによるストールなどの、命令実行へのその否定的影響を処理するよう構成される。ある実施例では、分岐予測論理22は、8192エントリ分岐ヒストリテーブルと、16バイト×16エントリ分岐ターゲットキャッシュと、16エントリリターンアドレススタックとを含む。
【0037】
分岐予測論理22は、分岐ヒストリテーブルを使用して2レベル適応的ヒストリアルゴリズムを実現する。このテーブルは、実行される分岐情報を記憶し、個々の分岐を予測し、分岐の群の挙動を予測する。ある実施例では、分岐ヒストリテーブルは、スペースを節約するために、予測されたターゲットアドレスを記憶しない。これらのアドレスは代わりに、デコード段の間にオンザフライで計算される。分岐が取られると予測されるときのキャッシュフェッチの1クロックサイクルペナルティを回避するために、分岐論理22内の分岐ターゲットキャッシュは、(もし分岐ターゲットキャッシュ内にヒットが生ずれば)ターゲットアドレスの最初の16バイトを直接命令バッファに与える。
【0038】
分岐論理22はまた、コールおよびリターン命令を最適化するよう設計される回路を含む。この回路は、メモリ内のコール命令に続く次の命令のアドレスがリターンアドレススタック上にプッシュされることを可能にする。マイクロプロセッサ10がリターン命令に遭遇すると、分岐論理22は、リターンスタックからアドレスをポップしそのアドレスでフェッチを開始する。
【0039】
この発明の実施例に従えば、命令キャッシュ14と同様に、データキャッシュ26もまた2ウェイセットアソシアティブの、32Kバイトのキャッシュとして構成される。データTLB28は、線形アドレスを物理的アドレスに変換するために使用され、たとえば、128エントリを含んでもよい。データキャッシュ26は、命令キャッシュ14と同様に区分されてもよい。
【0040】
図2を次に参照すると、デコードユニット10のある実施例のブロック図が示される。他の実施例は可能で企図される。図2に示す実施例では、デコードユニット20は、命令バッファ50と、1組のショートデコーダ52と、ロングデコーダ54と、ベクトルデコーダ56と、シーケンサ58と、マイクロコードROM60と、出力選択マルチプレクサ(mux)62とを含む。命令バッファ50は、分岐が取られると予測される場合に、命令キャッシュ14およびプリデコードキャッシュ15または分岐論理ユニット22から命令バイトおよび対応するプリデコードデータを受取るよう結合される。命令バッファ50はまた、ショートデコーダ52とロングデコーダ54とベクトルデコーダ56とに結合される。ショートデコーダ52、ロングデコーダ54、ベクトルデコーダ56およびシーケンサ58の各々は、出力選択マルチプレクサ62に入力を与えるよう結合される。ベクトルデコーダ56はまた、シーケンサ58に結合され、これはさらにマイクロコードROM60に結合される。出力選択マルチプレクサ62は、スケジューラバッファ32に結合される。ベクトルデコーダ56は、1対の記憶場所64および66を含む。記憶場所64は、マルチメディアイネーブル表示を記憶し、記憶場所66は浮動小数点イネーブル表示を記憶する。シーケンサ58は、マイクロコードROM60に記憶されるマイクロコードルーチンによって使用されるスクラッチRAM68を含む。スクラッチRAM68は、浮動小数点/マルチメディア状態についての記憶装置を含む。
【0041】
命令バッファ50は、バイトがデコーダ52、54および56の1つによってデコードされディスパッチされるまで、命令バイトおよび対応するプリデコーダデータを記憶するよう構成される。各クロックサイクルごとに、命令バッファ50は、デコードされた命令バイトを廃棄し、残りの命令バイトを命令キャッシュ14/プリデコードキャッシュ15または分岐論理ユニット22から受取られた命令バイトとマージする。ある実施例では、命令バッファ50は、最大16命令バイトと対応するプリデコードデータとを記憶する。
【0042】
ショートデコーダ52は、最も共通して使用されるx86命令(たとえば転送、シフト、分岐など)を0、1または2個のRISC演算に各々変換する。ショートデコーダ52は、「短い」x86命令を演算するよう構成される。言い換えれば、ショートデコーダ52は、予め定められた最大長までの複数バイトを有する命令をデコードするよう構成される。ある実施例では、予め定められた最大長は7バイトである。ある実施例では、ショートデコーダ52は、2個の並列デコーダを含む。
【0043】
ロングデコーダ54は、1クロックサイクル毎に1つの命令をデコードし、命令に応答して4個までのRISC演算を生成する。デコーダ54は、ショートデコーダ52によってサポートされる予め定められた最大長よりも長いが多くとも4RISC演算になおも分解可能である命令をデコードするよう構成される。ある実施例では、ロングデコーダ54は、長さが11バイトまでの命令をデコードするよう構成される。
【0044】
ベクトルデコーダ56は、ショートデコーダ52またはロングデコーダ54によって処理されない残りの命令をデコードする。ベクトルデコーダ56は、デコードされる命令に対応するマイクロコードルーチンの最初の4個のRISC演算を生成するよう構成される。並列して、ベクトルデコーダ56は、ルーチンの残余が記憶されるエントリポイント(すなわちマイクロコードROM60内のアドレス)を生成するよう構成される。シーケンサ58は、その後のクロックサイクルの間マイクロコードROM60からルーチンの残余をフェッチし、一度に4RISC演算まで、ルーチンを出力選択マルチプレクサ62に転送する。
【0045】
命令のうちこれに対してショートデコーダ52およびロングデコーダ54が設計されないものを処理するのに加えて、ベクトルデコーダ56は、ある例外条件を検出しこの例外条件に応答してエントリポイントおよびマイクロコードルーチンに対応するものの最初のRISC演算を生成する。これらの例外条件の1つは、以下のいずれかの検出である、すなわち、(i)浮動小数点命令のデコードの後、しかし任意の他のマルチメディア命令のデコードの前のマルチメディア命令と、(ii)マルチメディア命令のデコードの後、しかし任意の他の浮動小数点命令のデコードの前の浮動小数点命令とのいずれかである。これらの場合の各々について、レジスタファイル42と44との同期化が必要とされ得る。
【0046】
ベクトルデコーダ56は、記憶場所64および66に記憶されるマルチメディアイネーブル表示および浮動小数点イネーブル表示を使用して上記の場合を検出する。各表示は、セットされたとき、対応する命令型のデコードが能動化されたことを示し、かつ、クリアされたとき、対応する命令型のデコードが不能化されたことを示すビットを含んでもよい。代替的に、各表示は、セットされたとき、対応する命令型のデコードが不能化されたことを示し、かつ、クリアされたとき、対応する命令型のデコードが能動化されたことを示すビットを含んでもよい。マルチメディアイネーブル表示および浮動小数点イネーブル表示によって表わされる命令型のうちの1つのみが、任意の所与の時間で能動化され得る。不能化される命令型をデコードすると、ベクトルデコーダ56は例外条件を生成する。
【0047】
シーケンサ58はマイクロコードルーチンをフェッチし、これはレジスタファイル42と44との間のレジスタファイル同期化を実行するべきか否かを決定し、その同期化を選択的に実行する。マイクロコードルーチンはまた、実行ユニット36C−36Dと実行ユニット36Eとの間である種の他の同期化を行なう。たとえば、上記のマルチメディア命令を含むx86アーキテクチャを採用するマイクロプロセッサ10の実施例では、浮動小数点実行ユニット36Eによって使用され浮動小数点レジスタの有効性およびステータスワードのスタック部分の最上部を示すタグワードは、マルチメディア命令の実行に応答して変更される。したがって、もし例外が生成されて浮動小数点命令がデコードされれば、36Eの浮動小数点実行内の最上部スタックおよびタグワードは従って変更される。
【0048】
シーケンサ58は、浮動小数点/マルチメディア状態をスクラッチRAM68内に記憶する。浮動小数点/マルチメディア状態は、ベクトルデコーダ56によって維持されるマルチメディアイネーブル表示および浮動小数点イネーブル表示と同様に、浮動小数点命令デコードまたはマルチメディア命令デコードが能動化されるか否かを示す。しかしながら、付加的に、浮動小数点/マルチメディア状態はまた、最も最近にデコードされたマルチメディア命令が空状態命令であったかどうかも示す。ベクトルデコーダ56が空状態命令をデコードすると、浮動小数点/マルチメディア状態はセットされ最も最近にデコードされたマルチメディア命令が空状態命令であったかどうかを示す。浮動小数点/マルチメディア状態は、浮動小数点またはマルチメディア命令のいずれかがその後にデコードされるまで、最も最近デコードされたマルチメディア命令が空状態命令であったことを示す。(マルチメディアイネーブル表示および浮動小数点イネーブル表示によって示されるとおり)もしその後にデコードされるマルチメディアまたは浮動小数点命令が能動化されれば、浮動小数点/マルチメディア状態は更新されその命令型およびデコードされた最終命令が空状態命令でなかったことを示す。ある実施例では、空状態命令はベクトルデコーダ56によってマルチメディア命令であると考えられる。したがって、空状態命令のデコードの後に、浮動小数点命令は例外をもたらし、マルチメディア命令は、例外をもたらさないが、浮動小数点/マルチメディア状態によって最も最近にデコードされた命令が空状態命令であったことを示さないようにセットされる。このようにして、マイクロコードROM60からフェッチされたマイクロコードルーチンは、レジスタファイル42と44との同期化が所望されるか否かを決定することができる。代替的に、シーケンサ58は、浮動小数点/マルチメディア状態、および、ベクトルデコーダ56によるマルチメディア命令のデコードの場合にはマルチメディア命令が空状態命令であるかどうかに依存して、異なったマイクロコードルーチンをフェッチしてもよい。マイクロコードルーチンはまた、先に能動化された命令型を不能化し、記憶場所64および66に先に不能化された命令型を能動化する。その後に、ベクトルデコーダ56が例外を生成した命令は、再びフェッチされる。対応する命令型はここで能動化されているので、例外は生成されるはずはない。加えて、反対の命令型の命令がその後にデコードされれば、別の例外が生成される(レジスタファイル42と44との同期化をする、または同期化をしない機会が生ずる)。
【0049】
上記のようにして、デコードユニット20は、レジスタファイル42と44との同期化を禁止するか、または、現在能動化されていない命令型をデコードすると同期化を実行するよう構成される。イネーブル表示は、たとえさまざまな他の命令型がその間にデコードされるとしても(たとえば整数命令)、デコードユニット20が1つ以上の浮動小数点命令のセットと1つ以上のマルチメディア命令のセットとの間の境界を検出することを可能にする。なお、いくつかの場合においては、いずれの命令型のデコードも能動化されないことがある。たとえば、浮動小数点命令の実行は、マイクロプロセッサ10によって採用されるアーキテクチャによって定義される制御レジスタ内のさまざまな制御ビットを介して不能化されることがある。そのような場合には、たとえマルチメディア命令のデコードが不能化されているとしても浮動小数点命令のデコードは不能化される。
【0050】
出力選択マルチプレクサ62は、そこに命令を与えているソースの1つから命令を選択しこれらの命令をスケジューラバッファ32に伝送するよう構成される。命令のソースの各々は、RISC演算を出力選択マルチプレクサ62に与え、このためスケジューラバッファ32はRISC演算のみを受取る。出力選択マルチプレクサ62は、デコーダおよびシーケンサ58の各々から制御信号(わかりやすくするため図面には図示せず)によって制御される。
【0051】
なお、命令バッファ50からの命令は、デコーダ52、54および56の各々に並列に与えられる。デコーダの各々は、与えられた命令バイトをデコードしようと試み、命令を実際にデコードすることのできるデコーダによって出力選択マルチプレクサ62はその出力を選択する。さらに、マイクロコードROM60は、レジスタファイルの同期化(またはその欠如)のために上記のルーチンを記憶するのに加えて、所望のごとく、さまざまな他の目的のためにルーチンを記憶する。マイクロコードルーチンは、特定の目的を達成するよう配置される命令のシーケンス(たとえばRISC演算)を含む。
【0052】
図3を参照すると、シーケンサ58によって維持される浮動小数点/マルチメディア状態のある実施例の状態を示す例示の状態マシン70が図示される。他の実施例を企図することが可能である。図3の実施例では、状態マシン70は、FP活性化状態72、マルチメディア活性化状態74、および、FEMMS状態76を含む。
【0053】
FP活性化状態72は、レジスタファイル同期化を実行するべきかどうかを決定する例外を生じることなしに、浮動小数点命令がデコードされディスパッチされ得る状態である。マルチメディア活性化状態74またはFEMMS状態76のいずれかでは、レジスタファイル同期化を実行するべきかどうかを決定する例外を生ずることなしにマルチメディア命令はデコードされディスパッチされ得る。状態マシン70に図示されるさまざまなアークは、状態変化を起こさせる事象を示す。点線のアークは、レジスタファイル同期化が実行されるべきかどうかを決定するためにベクトルデコーダ56によって合図される例外を示す。実線のアークは、例外なしに実行される状態変化(またはその欠如)を示す。
【0054】
状態マシン70がFP活性化状態72にあるとき、浮動小数点または「通常」命令のいずれかのデコードによって状態マシン70はFP活性化状態72に維持される。これを説明すると、「通常」命令とは、浮動小数点命令、マルチメディア命令または空状態命令ではない命令を指す。たとえば、整数命令はこの説明では通常命令である。他方で、マルチメディア命令または空状態命令(図3に示す「FEMMS命令」)のデコードによって、FP活性化状態72からマルチメディア活性化状態74またはFEMMS状態76の1つに、それぞれ遷移する。これらの遷移の各々は、ベクトルデコーダ56によってシーケンサ58に合図される例外を介して生ずる。FP活性化状態72からマルチメディア活性化状態74への遷移は、レジスタファイル同期化を招き、一方、FP活性化状態72からFEMMS状態76への遷移はレジスタファイル同期化を招かない。このようにして、浮動小数点命令の実行からマルチメディア命令の実行への遷移は、空状態命令によって開始可能であり、レジスタファイル同期化が禁止されることがある。マイクロコードルーチンを完成すると、状態マシン70はデスティネーション状態になる。
【0055】
状態マシン70がマルチメディア活性化状態74にあるとき、マルチメディア命令または通常命令のいずれかのデコードによって、状態マシン70はマルチメディア状態74に維持される。他方で、空状態命令のデコードによって、状態マシン70はFEMMS状態76に遷移し、浮動小数点命令のデコードによってFP活性化状態72に遷移する。FEMMS状態76への遷移は例外を生ずることなしに起きる(なぜなら空状態命令は、状態マシン70に関してはおよびレジスタファイル42と44との同期化に関してはマルチメディア命令と考えられるからである)。逆にFP活性化状態72への遷移は例外を介して起こる。
【0056】
状態マシン70がFEMMS状態76にあるとき、通常命令のデコードによって状態マシン70はFEMMS状態76に維持される。このようにして、1つ以上の通常命令は、空状態命令とその後のマルチメディア命令または浮動小数点命令との間にコードシーケンスで挿入可能であり、コードシーケンス内の空状態命令の存在によるレジスタファイル同期化への影響は、あたかも通常命令がコードシーケンスにはなかったかのように同じである。したがって、空状態命令を使用するプログラミングモデルは、より柔軟になる可能性がある。他方で、マルチメディア命令のデコードによって状態マシン70はマルチメディア活性化状態74に遷移する(空状態命令はマルチメディア命令であると考えられるので、ここでもレジスタファイルの同期化はない)。浮動小数点命令のデコードは、FP活性化状態72への遷移と、レジスタファイルの同期化が所望されるかどうかを決定する例外とをもたらす。FEMMS状態76からFP活性化状態72への遷移は、レジスタファイル同期化なしに達成される、なぜならFEMMS状態76にある状態マシン70は、最も最近に実行されたマルチメディアまたは浮動小数点命令が空状態であったことを示し、したがってレジスタファイル同期化は所望されないからである。
【0057】
なお、上記説明は、例外をもたらす遷移のうちどれがレジスタファイル同期化を招き、どれがそうでないかを示すが、これらの状態マシンの遷移は、マイクロコードルーチンを介して管理される。したがって、状態遷移の実行の間、レジスタファイル同期化が実行されるかどうかを決定するのはマイクロコードルーチンである。さらに、空状態命令はマルチメディア命令であると考えられるので、マルチメディア活性化状態74とFEMMS状態76との間の遷移は、例外をもたらすことなしに実行され得ることが注目される。したがって、レジスタファイル同期化は必要とされない。シーケンサ58によって維持される浮動小数点/マルチメディア状態が、新しい状態に更新されるだけである。さらに、上記の状態マシンは、一部マイクロコードルーチンで、一部ハードウェアで実現される。しかしながら、状態マシンは、適切なレジスタファイル同期化を含め、ハードウェアにおいて完全に実現可能であることが企図される。さらにまた他の実施例が企図され、状態マシン70およびデコードユニット20によって表される機能がデコード段とは異なったパイプラインにおける段に採用されてもよい。いかなる好適な構成が使用されてもよい。
【0058】
ある実施例に従うと、状態マシン70の状態は、マイクロプロセッサ10によって予測される各分岐命令とともにディスパッチされてもよいことが注目される。分岐の予測誤りが起きれば、その分岐命令とともにディスパッチされた状態は状態マシン70にリストアされてもよい。代替的に、分岐命令とともに状態をディスパッチすることとある種の命令を実行する前に実行命令をストールすることとを組合わせてこれを所望のごとく採用してもよい。投機的命令実行がリダイレクトされるとき(たとえば分岐の予測誤りおよび例外)状態マシン70の状態を回復するための任意の好適な方法が使用されてもよい。
【0059】
次に図4を参照すると、上記説明に従ってレジスタファイル同期化を選択的に実行するために用いられる1つ以上のマイクロコードルーチンによって実行される動作の例示の組を図示するフローチャートが示される。他の実施例も可能であり企図される。図4に示すステップは場合によっては直列順に例示されるが、いかなる好適な順が使用されてもよい。この説明の残りの部分では、マイクロコードルーチンという用語を使用する。しかしながら、1つ以上のマイクロコードルーチンが図4に示すステップを実行するために使用されてもよいことが理解される。
【0060】
マイクロコードルーチンは、記憶場所64および66に記憶される浮動小数点イネーブル表示およびマルチメディアイネーブル表示の状態を調べて実行するべき適切な動作を決定する(決定ブロック80および82)。浮動小数点命令およびマルチメディア命令のいずれも能動化されなければ、マイクロコードルーチンはソフトウェア割込ハンドラに制御を転送する(ステップ84)。ソフトウェア割込ハンドラは、浮動小数点および/またはマルチメディア実行が能動化されるべきか否かを決定してもよい。もし浮動小数点イネーブル表示が能動化されれば(すなわち状態マシン70がFP活性化状態72にある)、マイクロコードルーチンは、デコードされるべきマルチメディア命令が空状態命令であるかどうかを決定する(決定ブロック86)。もしマルチメディア命令が空状態命令であれば、浮動小数点命令とマルチメディア命令との間の遷移が検出されており、マルチメディア命令は空状態命令で開始される。したがって、レジスタファイル同期化は所望されない。マイクロコードルーチンは浮動小数点/マルチメディア状態をFEMMS状態76にセットし(ステップ88)、記憶場所64および66をさらにセットしてマルチメディアが能動化され浮動小数点が不能化されたことを示す。
【0061】
他方で、もしデコードされるべきマルチメディア命令が空状態命令でなければ、浮動小数点命令とマルチメディア命令との間の遷移が検出されており、レジスタファイル同期化が所望される。したがって、レジスタファイル42内のレジスタの各々は、レジスタファイル44内の対応するレジスタにコピーされる(ステップ90)。加えて、マイクロコードルーチンは、浮動小数点/マルチメディア状態をマルチメディア活性化状態74にセットし、記憶場所64および66をセットしてマルチメディアが能動化され浮動小数点が不能化されたことを示す。
【0062】
逆に、もし浮動小数点が不能化されマルチメディアが能動化されれば、マイクロコードルーチンは、状態マシン70がFEMMS状態76にあるかどうかを決定する(決定ブロック92)。もし状態マシン70がFEMMS状態76にあれば、マルチメディア命令と浮動小数点命令との間の遷移が検出されており、レジスタファイル同期化は所望されない。したがって、マイクロコードルーチンは浮動小数点実行ユニット36E内のタグワードをセットしてレジスタファイル42内の各レジスタが無効であることを示す(なぜなら最も最近に実行されたマルチメディア命令は空状態命令であったからである)。加えて、マイクロコードルーチンは、(マルチメディア命令定義に従って)ステータスワードのスタック部分の最上部をセットする。さらに、マイクロコードルーチンは、浮動小数点/マルチメディア状態をFP活性化状態72にセットし、記憶場所64および66をセットしてマルチメディアが不能化され浮動小数点が能動化されたことを示す(ステップ94)。
【0063】
もし浮動小数点が不能化され、マルチメディアが能動化され、状態マシン70がマルチメディア活性化状態74にあるならば、マルチメディア命令と浮動小数点命令との間の遷移が検出されており、レジスタファイル同期化が所望される。したがって、マイクロコードルーチンは、ステータスワードのスタック部分を0にセットする(ステップ96)。加えて、タグワードは、最も最近に実行されたマルチメディア命令がEMMS命令であったか否かまたは別のマルチメディア命令であったかどうかに依存して、各レジスタ毎に有効または無効のいずれかにセットされる。加えて、マイクロコードルーチンは、レジスタファイル44内のレジスタをレジスタファイル42内の対応するレジスタにコピーする。最後に、マイクロコードルーチンは、浮動小数点/マルチメディア状態をFP活性化状態72にセットし、記憶場所64および66をセットしてマルチメディアが不能化され浮動小数点が能動化されたことを示す。
【0064】
次に図5を参照すると、空状態命令の例示的使用を示す例示のソフトウェア階層が示される。さまざまなルーチンがボックス100−108によって例示される。各ボックスは、上部および下部に分かたれる。上部分は、ルーチンの型を特定し、下部分はルーチンのその型に含まれる命令のセットを示す。ボックスの間の矢印は、どのルーチンが互いと通信可能であるか(すなわちコールするかまたはコールされる)を示す。
【0065】
ボックス100は、浮動小数点ルーチンによってコールされず浮動小数点ルーチンをコールしない通常ルーチン(すなわち浮動小数点命令またはマルチメディア命令を含まないルーチン)を例示する。したがって、通常ルーチンは、1つ以上の通常命令を含む。もしマルチメディアルーチンが通常ルーチンによってコールされるならば、オプションとして1つ以上の通常命令に続くのは空状態命令である。リターン命令が通常ルーチンを締めくくる。したがって、ボックス108によって表わされるルーチンなどのルーチンは、ルーチンの最後に空状態命令を省略し得る。さらに、もしボックス108によって表わされるルーチンをコールする通常ルーチンおよび任意のマルチメディアルーチンがボックス108によって表わされるルーチンをコールする前に空状態命令を含めば、ボックス108によって表わされるルーチンはルーチンの開始時に空状態命令を省略し得る。
【0066】
ボックス108によって例示されるルーチンは、マルチメディアルーチンまたは通常ルーチンによってのみコールされるマルチメディアルーチン(すなわち1つ以上のマルチメディア命令および任意で1つ以上の通常命令を含むルーチン)である。ボックス108によって例示されるルーチンは、マルチメディアルーチンまたは通常ルーチンによってのみコールされるので、ボックス108によって例示されるルーチンは、空状態命令を省略し、コールされたルーチンが任意の浮動小数点命令の実行より前に空状態命令を挿入するとすることができる。ボックス108によって例示されるルーチンは、リターン命令で終わる。
【0067】
ボックス102によって例示されるルーチンは、浮動小数点ルーチンを含む、任意のルーチンによってコールされ得る通常ルーチンである。したがって、ルーチンは、リターン命令で終わる1つ以上の通常命令を含む。
【0068】
ボックス104は、たとえば浮動小数点ルーチンを含む非マルチメディアルーチンによってコール可能であるマルチメディアルーチンを例示する。したがって、もしルーチンが浮動ルーチンによってコールされるか、または、浮動小数点ルーチンの実行の後にしかし異なったマルチメディアルーチンの実行よりも前にコールされれば、ルーチンは空状態命令によって開始されレジスタファイル同期化を禁止する。空状態命令の後に1つ以上のマルチメディアおよび/または通常命令が続く。ルーチンは、別の空状態命令およびリターン命令で終わる。もしその後のルーチンが浮動小数点命令を実行すれば、最後の空状態命令は、レジスタファイル同期化を禁止する。
【0069】
浮動小数点ルーチンはボックス106によって例示される。浮動小数点ルーチンは、いかなる他のルーチンによってコールされてもよく、1つ以上の浮動小数点および/または通常命令を含み、リターン命令で終わる。
【0070】
図5に例示するルーチンは、プログラムによって採用される可能性のあるさまざまなルーチンに含まれる空状態命令の数を最小限にしようとする例である。さらに、もしレジスタファイル同期化が所望されれば、空状態命令をこれらのルーチンに使用するべきではないことが注目される。
【0071】
次に図6を参照すると、バスブリッジ202を介してさまざまなシステムコンポーネントに結合されるマイクロプロセッサ10を含むコンピュータシステム200のある実施例のブロック図が示される。他の実施例が可能であり企図される。図示のシステムでは、主メモリ204はメモリバス206によってバスブリッジ202に結合され、グラフィックコントローラ208はAGPバス210によってバスブリッジ202に結合される。最後に、複数個のPCIデバイス212A−212BがPCIバス214によってバスブリッジ202に結合される。2次バスブリッジ216をさらに設けてEISA/ISAバス220によって1つ以上のEISAまたはISAデバイス218への電気的インターフェイスを可能にしてもよい。マイクロプロセッサ10は、CPUバス224によってバスブリッジ202に結合される。
【0072】
バスブリッジ202は、マイクロプロセッサ10と主メモリ204とグラフィックコントローラ208とPCIバス214に接結されるデバイスとのインターフェイスを与える。演算がバスブリッジ202に接続されるデバイスの1つから受取られると、バスブリッジ202は演算のターゲットを特定する(たとえば、特定のデバイスまたは、PCIバス214の場合、ターゲットはPCIバス214の上にある)。バスブリッジ202は、演算をターゲットされたデバイスへ送る。バスブリッジ202は一般的には、演算を、ソースデバイスまたはバスによって使用されるプロトコルからターゲットデバイスまたはバスによって使用されたプロトコルに変換する。
【0073】
PCIバス214に対してISA/EISAバスへのインターフェイスを与えるのに加え、2次バスブリッジ216は、所望であれば、さらなる機能をさらに組込んでもよい。たとえば、ある実施例では、2次バスブリッジ216は、マスタPCIアービタ(図示せず)を含んでPCIバス214の所有権を調停する。入力/出力コントローラ(図示せず)は、外部からであっても2次バスブリッジ216と統合されてもよいが、これを所望のごとくコンピュータシステム200内に含んでキーボードおよびマウス222ならびにさまざまな直列および並列ポートへの動作上のサポートを与えてもよい。他の実施例では、外部キャッシュユニット(図示せず)がマイクロプロセッサ10とバスブリッジ202との間のCPUバス224にさらに結合されてもよい。代替的に、外部キャッシュはバスブリッジ202に結合されてもよく、外部キャッシュに対するキャッシュ制御論理はバスブリッジ202に統合されてもよい。
【0074】
主メモリ204は、この中にアプリケーションプログラムが記憶されここからマイクロプロセッサ10が主に実行するメモリである。好適な主メモリ204は、DRAM(ダイナミックランダムアクセスメモリ)と、好ましくはSDRAM(シンクロナスDRAM)の複数個のバンクとを含む。
【0075】
PCIデバイス212A−212Bは、たとえば、ネットワークインターフェイスカード、ビデオアクセレータ、オーディオカード、ハードまたはフロッピーディスクドライブまたはドライブコントローラ、SCSI(スモールコンピュータシステムインターフェイス)アダプタ、および、電話機能カードなどのさまざまな周辺デバイスを例示するものである。同様に、ISAデバイス218は、モデム、サウンドカード、GPIBまたはフィールドバスインターフェイスカードなどのさまざまなデータ収集カードなどの、さまざまなタイプの周辺デバイスを例示する。
【0076】
グラフィックコントローラ208は、ディスプレイ226上のテキストおよび画像のレンダリングを制御するために設けられる。グラフィックコントローラ208は、一般的に公知である典型的なグラフィックアクセレータを具体化して、主メモリ204へおよびそこから効果的にシフト可能である3次元データ構造をレンダリングしてもよい。グラフィックコントローラ208はしたがって、それがバスブリッジ202内のターゲットインターフェイスへのアクセスを要求し受取って主メモリ204へのアクセスを獲得することが可能であるという点で、AGPバス210のマスタであり得る。専用グラフィックバスは、主メモリからのデータの迅速な検索を収容する。ある種の演算では、グラフィックコントローラ208はさらに、AGPバス210上のPCIプロトコルトランザクションを生成するよう構成されてもよい。したがって、バスブリッジ202のAGPインターフェイスは、AGPプロトコルトランザクションとPCIプロトコルターゲットおよびイニシエータトランザクションとの両方をサポートする機能を含んでもよい。ディスプレイ226は、画像またはテキストを与えることのできる任意の電子ディスプレイである。好適なディスプレイ226は、陰極線管(「CRT」)、液晶ディスプレイ(「LCD」)などを含む。
【0077】
なお、AGPバス、PGIバス、およびISAバスまたはEISAバスは、上記説明では例として使用されるが、所望のごとくいかなるバスアーキテクチャと置き換えてもよい。さらに、コンピュータシステム200は、付加的なマイクロプロセッサ(たとえばコンピュータシステム200の任意のコンポーネントとして示されるマイクロプロセッサ10a)を含むマルチプロセシングコンピュータシステムであってもよい。マイクロプロセッサ10aは、マイクロプロセッサ10と同様であってもよい。より特定的には、マイクロプロセッサ10aは、マイクロプロセッサ10と全く同じコピーであってもよい。マイクロプロセッサ10aは、マイクロプロセッサ10(図6に図示される)とCPUバス224を共有してもよく、または、独立バスを介してバスブリッジ202に接続されてもよい。
【0078】
上記開示に従うと、マイクロプロセッサは、同じ論理的記憶装置に対応付けるよう定義された2つのレジスタファイル間の選択的レジスタファイル同期化をサポートするものとして示される。有利には、レジスタファイル間の同期化が所望されない場合、マイクロプロセッサは同期化を禁止してもよい。同じ論理的レジスタファイルにアクセスする命令とレジスタファイル同期化を必要としない命令との両方の型を採用する命令シーケンスは、レジスタファイルの非同期化によってより高い性能を達成し得る。他方で、レジスタファイル同期化を必要としないコードシーケンスでも同期化の利益を受ける(おそらく達成される性能はより低い)。
【0079】
上記開示を詳細に理解すると多くの変形および修正が当業者には明らかとなるであろう。前掲のクレームはそのような変形および修正のすべてを含むものであると理解されるべきである。
【図面の簡単な説明】
【図1】 マイクロプロセッサのある実施例のブロック図である。
【図2】 図1に示すデコードユニットのある実施例のブロック図である。
【図3】 図2に示すデコードユニットのある実施例の動作を例示する状態マシンの図である。
【図4】 図2に示すデコードユニットのある実施例に従って図3に示す状態マシンの一部を実現するマイクロコードシーケンスで実行されるステップを例示するフローチャートである。
【図5】 高速の空状態命令の例示的使用とサブルーティン階層を例示する図である。
【図6】 図1に示すマイクロプロセッサを含むコンピュータシステムのある実施例のブロック図である。
Claims (56)
- 第1の型の命令、第2の型の命令および空状態命令を含む命令セット内で定義される命令をデコードするよう構成されるデコードユニットを含み、前記命令セットは、第2の複数個のレジスタの各々が割当てられた論理的記憶場所に第1の複数個のレジスタの対応する1つが割当てられるよう、前記第1の型の命令を介してアクセス可能な前記第1の複数個のレジスタと前記第2の型の命令を介してアクセス可能な前記第2の複数個のレジスタとが論理的記憶装置に対応付けられるようさらに定義し、さらに、
前記第1の複数個のレジスタに対応する物理的記憶場所を含む第1のレジスタファイルと、
前記第2の複数個のレジスタに対応する物理的記憶場所を含む第2のレジスタファイルと、
前記第1のレジスタファイルに結合される第1の実行ユニットとを含み、前記第1の実行ユニットは前記第1の型の命令を実行するよう構成され、前記第1の実行ユニットは前記第1の型の前記命令についてのオペランドを前記第1のレジスタファイルから読出すよう構成され、さらに、
前記第2のレジスタファイルに結合される第2の実行ユニットを含み、前記第2の実行ユニットは前記第2の型の命令を実行するよう構成され、前記第2の実行ユニットは前記第2の型の前記命令についてのオペランドを前記第2のレジスタファイルから読出すよう構成され、
前記第1の型の第1の命令、前記空状態命令、および前記第2の型の前記第2の命令を含む第1の命令シーケンスの実行に応答して、前記第1の命令の実行と前記第2の命令の実行との間で前記第1のレジスタファイルと前記第2のレジスタファイルとの同期化を禁止するよう構成される、マイクロプロセッサ。 - 前記第1の型の命令はマルチメディア命令を含む、請求項1に記載のマイクロプロセッサ。
- 前記第2の型の命令は浮動小数点命令を含む、請求項2に記載のマイクロプロセッサ。
- 前記第1の型の命令は浮動小数点命令を含む、請求項1に記載のマイクロプロセッサ。
- 前記第2の型の命令はマルチメディア命令を含む、請求項4に記載のマイクロプロセッサ。
- 前記マイクロプロセッサは、前記第1の命令とその後に前記空状態命令とさらにその後に前記第2の命令とである前記第1の命令シーケンスのプログラム順にのみ応答して前記同期化を禁止するよう構成される、請求項1に記載のマイクロプロセッサ。
- 前記第1の命令シーケンスは、前記命令セットによって定義される第3の型の命令の1つ以上の命令をさらに含む、請求項6に記載のマイクロプロセッサ。
- 前記マイクロプロセッサは、もし前記1つ以上の命令のいくつかが前記第1の命令と前記空状態命令との間にプログラム順であるとしても前記同期化を禁止するよう構成される、請求項7に記載のマイクロプロセッサ。
- 前記マイクロプロセッサは、もし前記1つ以上の命令のいくつかが前記第2の命令と前記空状態命令との間にプログラム順であるとしても前記同期化を禁止するよう構成される、請求項7に記載のマイクロプロセッサ。
- 前記第3の型の命令は整数命令を含む、請求項7に記載のマイクロプロセッサ。
- 前記第1の命令シーケンスは、前記命令セットによって定義される第3の型の命令の1つ以上の命令をさらに含む、請求項1に記載のマイクロプロセッサ。
- 前記マイクロプロセッサは、もし前記1つ以上の命令のいくつかが前記第1の命令と前記空状態命令との間にプログラム順であるとしても前記同期化を禁止するよう構成される、請求項11に記載のマイクロプロセッサ。
- 前記マイクロプロセッサは、もし前記1つ以上の命令のいくつかが前記第2の命令と前記空状態命令との間にプログラム順であるとしても前記同期化を禁止するよう構成される、請求項11に記載のマイクロプロセッサ。
- 前記第3の型の命令は整数命令を含む、請求項11に記載のマイクロプロセッサ。
- 前記マイクロプロセッサは、前記第1および第2の命令を含むが前記空状態命令を除く第2の命令シーケンスがデコードされると前記第1のレジスタファイルと第2のレジスタファイルとの前記同期化を実行するよう構成される、請求項1に記載のマイクロプロセッサ。
- 前記デコードユニットは、
命令をデコードするよう構成される1つ以上のデコーダと、
前記1つ以上のデコーダの1つによってマイクロコードされた命令がデコードされると命令を与えるよう結合されるマイクロコードROMとを含み、前記マイクロコードROMは前記同期化を禁止する命令と前記同期化を実行する命令とを含むルーチンをさらに記憶する、請求項15に記載のマイクロプロセッサ。 - 第1の型の命令、第2の型の命令および空状態命令を含む命令セット内で定義される命令を実行するための方法であって、前記命令セットは、第2の複数個のレジスタの各々が割当てられた論理的記憶場所に第1の複数個のレジスタの対応する1つが割当てられるよう、前記第1の型の命令を介してアクセス可能な前記第1の複数個のレジスタと前記第2の型の命令を介してアクセス可能な前記第2の複数個のレジスタとが論理的記憶装置に対応付けられるようにさらに定義し、前記方法は、
前記第1の複数個のレジスタの各々についての物理的記憶場所を含む第1のレジスタファイルから前記第1の型の第1の命令についての第1のオペランドを読出すステップと、
前記第2の複数個のレジスタの各々についての物理的記憶場所を含む第2のレジスタファイルから前記第2の型の第2の命令についての第2のオペランドを読出すステップと、
前記第1の命令と前記第2の命令との間に前記空状態命令を含まない命令シーケンスの実行に応答して、前記第1のオペランドの前記読出と前記第2のオペランドの前記読出との間で前記第1のレジスタファイルと前記第2のレジスタファイルとを同期化するステップと、
前記第1の命令と前記第2の命令との間に前記空状態命令を含む前記命令シーケンスの実行に応答して、前記第1のレジスタファイルと前記第2のレジスタファイルとの同期化
を禁止するステップとを含む、方法。 - 前記第1のオペランドの前記読出は、前記第1のレジスタファイルからマルチメディア型の前記第1の命令についての前記第1のオペランドを読出すステップを含む、請求項17に記載の方法。
- 前記第2のオペランドの前記読出は、前記第2のレジスタファイルから浮動小数点型の前記第2の命令についての前記第2のオペランドを読出すステップを含む、請求項18に記載の方法。
- 前記命令シーケンスのプログラム順は、前記第1の命令とその後に前記空状態命令とさらにその後に前記第2の命令とを含む、請求項17に記載の方法。
- 前記空状態命令と前記第2の命令との間に前記第1の型の第3の命令を含む前記命令シーケンスに応答して前記第1のレジスタファイルと前記第2のレジスタファイルとを同期化するステップをさらに含む、請求項20に記載の方法。
- 前記命令セット内に定義される第3の型の命令の1つ以上の命令が、前記命令シーケンス内に前記第1の命令と前記空状態命令との間または前記第2の命令と前記空状態命令との間に含まれるとしても前記禁止が実行される、請求項17に記載の方法。
- 前記空状態命令が前記命令シーケンスから除かれるならば、もし前記命令セット内に定義される第3の型の命令の1つ以上の命令が前記命令シーケンス内に前記第1の命令と前記第2の命令との間に含まれるとしても前記同期化が実行される、請求項17に記載の方法。
- 第1の複数個のレジスタに対応する物理的記憶場所を含む第1のレジスタファイルと、
第2の複数個のレジスタに対応する物理的記憶場所を含む第2のレジスタファイルとを含むマイクロプロセッサであって、
前記マイクロプロセッサは、第1の型の命令、第2の型の命令および空状態命令を含む命令セット内で定義される命令を実行するよう構成され、前記命令セットは、前記第1の複数個のレジスタが前記第1の型の命令を介してアクセス可能であり、前記第2の複数個のレジスタが前記第2の型の命令を介してアクセス可能であることをさらに定義し、前記命令セットはさらに、前記第1の複数個のレジスタおよび前記第2の複数個のレジスタが、前記第2の複数個のレジスタの各々が割当てられた論理的記憶場所に前記第1の複数個のレジスタの対応する1つが割当てられるように論理的記憶装置に対応付けられることを定義し、前記マイクロプロセッサは、前記第1の型の第1の命令を実行した後にかつ前記第2の型の第2の命令を実行するより前に、前記第1の命令および前記第2の命令を含みかつ前記空状態命令も含む第1の命令シーケンスの実行に応答して前記第1のレジスタファイルと前記第2のレジスタファイルとの同期化を禁止するよう構成される、マイクロプロセッサ。 - 前記第1の型の命令はマルチメディア命令を含む、請求項24に記載のマイクロプロセッサ。
- 前記第2の型の命令は浮動小数点命令を含む、請求項25に記載のマイクロプロセッサ。
- 前記第1の型の命令は浮動小数点命令を含む、請求項24に記載のマイクロプロセッサ。
- 前記第2の型の命令はマルチメディア命令を含む、請求項27に記載のマイクロプロセッサ。
- 前記マイクロプロセッサは、前記第1の命令とその後に前記空状態命令とさらにその後に前記第2の命令とである前記第1の命令シーケンスのプログラム順にのみ応答して前記同期化を禁止するよう構成される、請求項24に記載のマイクロプロセッサ。
- 前記第1の命令シーケンスは、前記命令セットによって定義される第3の型の命令の1つ以上の命令をさらに含む、請求項29に記載のマイクロプロセッサ。
- 前記マイクロプロセッサは、もし前記1つ以上の命令のいくつかが前記第1の命令と前記空状態命令との間にプログラム順であるとしても前記同期化を禁止するよう構成される、請求項30に記載のマイクロプロセッサ。
- 前記マイクロプロセッサは、もし前記1つ以上の命令のいくつかが前記第2の命令と前記空状態命令との間にプログラム順であるとしても前記同期化を禁止するよう構成される、請求項30に記載のマイクロプロセッサ。
- 前記第3の型の命令は整数命令を含む、請求項30に記載のマイクロプロセッサ。
- 前記マイクロプロセッサは、前記第1の命令を実行した後にかつ前記第2の命令を実行するよりも前に前記第1の命令および第2の命令を含むが前記空状態命令を除く第2の命令シーケンスに応答して前記第1のレジスタファイルと第2のレジスタファイルとの前記同期化を実行するよう構成される、請求項24に記載のマイクロプロセッサ。
- 第1の複数個のレジスタに対応する物理的記憶場所を含む第1のレジスタファイルと、第2の複数個のレジスタに対応する物理的記憶場所を含む第2のレジスタファイルとを含むマイクロプロセッサを含み、前記マイクロプロセッサは、第1の型の命令、第2の型の命令および空状態命令を含む命令セット内で定義される命令を実行するよう構成され、前記命令セットは、前記第1の複数個のレジスタが前記第1の型の命令を介してアクセス可能であり、前記第2の複数個のレジスタが前記第2の型の命令を介してアクセス可能であることをさらに定義し、前記命令セットはさらに、前記第1の複数個のレジスタおよび前記第2の複数個のレジスタが、前記第2の複数個のレジスタの各々が割当てられた論理的記憶場所に前記第1の複数個のレジスタの対応する1つが割当てられるように論理的記憶装置に対応付けられることを定義し、前記マイクロプロセッサは、前記第1の型の第1の命令を実行した後にかつ前記第2の型の第2の命令を実行するより前に、前記第1の命令および前記前記第2の命令を含みかつ前記空状態命令も含む命令シーケンスの実行に応答して前記第1のレジスタファイルと前記第2のレジスタファイルとの同期化を禁止するよう構成され、さらに、
前記マイクロプロセッサに結合される主メモリを含み、前記主メモリは前記命令シーケンスを記憶し前記マイクロプロセッサに前記命令シーケンスがそこから要求されると前記命令シーケンスを与えるよう構成され、さらに、
前記主メモリに結合される入力/出力(I/O)デバイスを含み、前記I/Oデバイスは前記主メモリと前記I/Oデバイスに結合される第2のコンピュータシステムとの間でデータを転送するよう構成される、コンピュータシステム。 - 前記マイクロプロセッサと同一の第2のマイクロプロセッサをさらに含む、請求項35に記載のコンピュータシステム。
- 前記第1の複数個のレジスタに対応する物理的記憶場所を含む第3のレジスタファイルおよび前記第2の複数個のレジスタに対応する物理的記憶場所を含む第4のレジスタファイルを含む第2のマイクロプロセッサをさらに含み、前記第2のマイクロプロセッサは、前記第1の型の命令、前記第2の型の命令および前記空状態命令を含む前記命令セット内で定義される命令を実行するよう構成され、前記第2のマイクロプロセッサは、前記第1の型の前記第1の命令を実行した後にかつ前記第2の型の前記第2の命令を実行するより前に、前記第1の命令および前記前記第2の命令を含みかつ前記空状態命令も含む前記命令シーケンスの実行に応答して前記第3のレジスタファイルと前記第4のレジスタファイルとの前記同期化を禁止するよう構成される、請求項35に記載のコンピュータシステム。
- 第1の複数個のレジスタに対応する物理的記憶場所を含む第1のレジスタファイルと、
第2の複数個のレジスタに対応する物理的記憶場所を含む第2のレジスタファイルとを含むマイクロプロセッサであって、
前記マイクロプロセッサは、第1の型の命令、第2の型の命令および第3の命令を含む命令セット内で定義される命令を実行するよう構成され、前記命令セットは、前記第1の複数個のレジスタが前記第1の型の命令を介してアクセス可能であり、前記第2の複数個のレジスタが前記第2の型の命令を介してアクセス可能であることをさらに定義し、前記命令セットはさらに、前記第1の複数個のレジスタおよび前記第2の複数個のレジスタが、前記第2の複数個のレジスタの各々が割当てられた論理的記憶場所に前記第1の複数個のレジスタの対応する1つが割当てられるように論理的記憶装置に対応付けられることを定義し、前記マイクロプロセッサは、前記第1の命令および前記第2の命令を含む第1の命令シーケンスの実行中に、前記第1の命令シーケンス中の前記第3の命令の存在または不在に応答して前記第1のレジスタファイルと前記第2のレジスタファイルとを選択的に同期化するよう構成される、マイクロプロセッサ。 - 前記マイクロプロセッサは、前記第3の命令の前記不在に応答して前記第1のレジスタファイルと前記第2のレジスタファイルとを同期化するよう構成され、前記マイクロプロセッサは、前記第3の命令の前記存在に応答して前記第1のレジスタファイルと前記第2のレジスタファイルとの同期化を禁止するよう構成される、請求項38に記載のマイクロプロセッサ。
- 前記第1の型の命令はマルチメディア命令を含む、請求項38に記載のマイクロプロセッサ。
- 前記第2の型の命令は浮動小数点命令を含む、請求項40に記載のマイクロプロセッサ。
- 前記第1の型の命令は浮動小数点命令を含む、請求項38に記載のマイクロプロセッサ。
- 前記第2の型の命令はマルチメディア命令を含む、請求項42に記載のマイクロプロセッサ。
- 前記マイクロプロセッサは、前記第1の命令とその後に前記第3の命令とさらにその後に前記第2の命令とである前記第1の命令シーケンスのプログラム順にのみ応答して同期化を禁止するよう構成される、請求項38に記載のマイクロプロセッサ。
- 前記第1の命令シーケンスは、前記命令セットによって定義される第3の型の命令の1つ以上の命令をさらに含む、請求項44に記載のマイクロプロセッサ。
- 前記マイクロプロセッサは、もし前記1つ以上の命令のいくつかが前記第1の命令と前記第3の命令との間にプログラム順であるとしても前記同期化を禁止するよう構成される、請求項45に記載のマイクロプロセッサ。
- 前記マイクロプロセッサは、もし前記1つ以上の命令のいくつかが前記第2の命令と前記第3の命令との間にプログラム順であるとしても前記同期化を禁止するよう構成される、請求項45に記載のマイクロプロセッサ。
- 前記第3の型の命令は整数命令を含む、請求項45に記載のマイクロプロセッサ。
- 第1の型の命令、第2の型の命令および第3の命令を含む命令セット内で定義される命令を実行するための方法であって、前記命令セットは、第2の複数個のレジスタの各々が割当てられた論理的記憶場所に第1の複数個のレジスタの対応する1つが割当てられるよう、前記第1の型の命令を介してアクセス可能な前記第1の複数個のレジスタと前記第2の型の命令を介してアクセス可能な前記第2の複数個のレジスタとが論理的記憶装置に対応付けられるようにさらに定義し、前記方法は、
前記第1の複数個のレジスタの各々についての物理的記憶場所を含む第1のレジスタファイルから前記第1の型の第1の命令についての第1のオペランドを読出すステップと、
前記第2の複数個のレジスタの各々についての物理的記憶場所を含む第2のレジスタファイルから前記第2の型の第2の命令についての第2のオペランドを読出すステップと、
前記第1の命令および前記第2の命令を含む命令シーケンス中の前記第3の命令の存在または不在に応答して前記第1のオペランドの前記読出と前記第2のオペランドの前記読出との間で前記第1のレジスタファイルと前記第2のレジスタファイルとを選択的に同期化するステップとを含む、方法。 - 前記第1のオペランドの前記読出は、前記第1のレジスタファイルからマルチメディア型の前記第1の命令についての前記第1のオペランドを読出すステップを含む、請求項49に記載の方法。
- 前記第2のオペランドの前記読出は、前記第2のレジスタファイルから浮動小数点型の前記第2の命令についての前記第2のオペランドを読出すステップを含む、請求項50に記載の方法。
- 前記命令シーケンスのプログラム順は、前記第1の命令とその後に前記第3の命令とさらにその後に前記第2の命令とを含む、請求項49に記載の方法。
- もし前記命令セット内に定義される第3の型の命令の1つ以上の命令が前記命令シーケンス内の前記第1の命令と前記第3の命令との間または前記第2の命令と前記第3の命令との間に含まれるとしても前記選択的な同期化が実行される、請求項49に記載の方法。
- 前記選択的に同期化するステップは、
前記第3の命令の前記不在に応答して前記第1のレジスタファイルと前記第2のレジスタファイルとを同期化するステップと、
前記第3の命令の前記存在に応答して前記第1のレジスタファイルと前記第2のレジスタファイルとの同期化を禁止するステップとを含む、請求項49に記載の方法。 - 第1の複数個のレジスタに対応する物理的記憶場所を含む第1のレジスタファイルと、第2の複数個のレジスタに対応する物理的記憶場所を含む第2のレジスタファイルとを含むマイクロプロセッサを含み、前記マイクロプロセッサは、第1の型の命令、第2の型の命令および第3の命令を含む命令セット内で定義される命令を実行するよう構成され、前記命令セットは、前記第1の複数個のレジスタが前記第1の型の命令を介してアクセス可能であり、前記第2の複数個のレジスタが前記第2の型の命令を介してアクセス可能であることをさらに定義し、前記命令セットはさらに、前記第1の複数個のレジスタおよび前記第2の複数個のレジスタが、前記第2の複数個のレジスタの各々が割当てられた論理的記憶場所に前記第1の複数個のレジスタの対応する1つが割当てられるように論理的記憶装置に対応付けられることを定義し、前記マイクロプロセッサは、前記第1の命令および前記第2の命令を含む第1の命令シーケンスの実行中に、前記第1の命令シーケンス中の前記第3の命令の存在または不在に応答して前記第1のレジスタファイルと前記第2のレジスタファイルとを選択的に同期化するよう構成され、さらに、
主メモリに結合される入力/出力(I/O)デバイスを含み、前記I/Oデバイスは前記主メモリと前記I/Oデバイスに結合される第2のコンピュータシステムとの間でデータを転送するよう構成される、コンピュータシステム。 - 前記第1の複数個のレジスタに対応する物理的記憶場所を含む第3のレジスタファイルおよび前記第2の複数個のレジスタに対応する物理的記憶場所を含む第4のレジスタファイルを含む第2のマイクロプロセッサをさらに含み、前記第2のマイクロプロセッサは、前記第1の型の命令、前記第2の型の命令および前記第3の命令を含む前記命令セット内で定義される命令を実行するよう構成され、前記第2のマイクロプロセッサは、前記第1の命令および前記第2の命令を含む前記第1の命令シーケンスの実行中に、前記第1の命令シーケンス中の前記第3の命令の前記存在または前記不在に応答して前記第3のレジスタファイルと前記第4のレジスタファイルとを選択的に同期化するよう構成される、請求項55に記載のコンピュータシステム。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12027598A | 1998-02-13 | 1998-02-13 | |
US09/120,275 | 1998-02-13 | ||
US09/110,518 | 1998-07-06 | ||
US09/110,518 US6237083B1 (en) | 1998-02-13 | 1998-07-06 | Microprocessor including multiple register files mapped to the same logical storage and inhibiting sychronization between the register files responsive to inclusion of an instruction in an instruction sequence |
PCT/US1999/003121 WO1999041659A1 (en) | 1998-02-13 | 1999-02-12 | Microprocessor including multiple register files occupying the same logical space |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2002503844A JP2002503844A (ja) | 2002-02-05 |
JP2002503844A5 JP2002503844A5 (ja) | 2006-03-09 |
JP3837289B2 true JP3837289B2 (ja) | 2006-10-25 |
Family
ID=26808103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000531777A Expired - Fee Related JP3837289B2 (ja) | 1998-02-13 | 1999-02-12 | 同じ論理的空間を占有する複数のレジスタファイルを含むマイクロプロセッサ |
Country Status (6)
Country | Link |
---|---|
US (1) | US6237083B1 (ja) |
EP (1) | EP1053522B1 (ja) |
JP (1) | JP3837289B2 (ja) |
KR (1) | KR100682635B1 (ja) |
DE (1) | DE69901338T2 (ja) |
WO (1) | WO1999041659A1 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6205543B1 (en) * | 1998-12-03 | 2001-03-20 | Sun Microsystems, Inc. | Efficient handling of a large register file for context switching |
US6412065B1 (en) * | 1999-06-25 | 2002-06-25 | Ip First, L.L.C. | Status register associated with MMX register file for tracking writes |
US6647462B1 (en) * | 2000-06-29 | 2003-11-11 | Motorola, Inc. | Apparatus and a method for providing decoded information |
US6748492B1 (en) | 2000-08-07 | 2004-06-08 | Broadcom Corporation | Deterministic setting of replacement policy in a cache through way selection |
US6732234B1 (en) * | 2000-08-07 | 2004-05-04 | Broadcom Corporation | Direct access mode for a cache |
US6848024B1 (en) | 2000-08-07 | 2005-01-25 | Broadcom Corporation | Programmably disabling one or more cache entries |
US6748495B2 (en) | 2001-05-15 | 2004-06-08 | Broadcom Corporation | Random generator |
US8578387B1 (en) * | 2007-07-31 | 2013-11-05 | Nvidia Corporation | Dynamic load balancing of instructions for execution by heterogeneous processing engines |
US9304775B1 (en) | 2007-11-05 | 2016-04-05 | Nvidia Corporation | Dispatching of instructions for execution by heterogeneous processing engines |
US7941644B2 (en) * | 2008-10-16 | 2011-05-10 | International Business Machines Corporation | Simultaneous multi-thread instructions issue to execution units while substitute injecting sequence of instructions for long latency sequencer instruction via multiplexer |
US9727336B2 (en) * | 2011-09-16 | 2017-08-08 | International Business Machines Corporation | Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers |
US9411585B2 (en) | 2011-09-16 | 2016-08-09 | International Business Machines Corporation | Multi-addressable register files and format conversions associated therewith |
US8914615B2 (en) | 2011-12-02 | 2014-12-16 | Arm Limited | Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format |
US20130339666A1 (en) * | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Special case register update without execution |
GB2552154B (en) * | 2016-07-08 | 2019-03-06 | Advanced Risc Mach Ltd | Vector register access |
US11327757B2 (en) * | 2020-05-04 | 2022-05-10 | International Business Machines Corporation | Processor providing intelligent management of values buffered in overlaid architected and non-architected register files |
US11561794B2 (en) * | 2021-05-26 | 2023-01-24 | International Business Machines Corporation | Evicting and restoring information using a single port of a logical register mapper and history buffer in a microprocessor comprising multiple main register file entries mapped to one accumulator register file entry |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4597044A (en) | 1982-10-14 | 1986-06-24 | Honeywell Information Systems, Inc. | Apparatus and method for providing a composite descriptor in a data processing system |
US4803622A (en) | 1987-05-07 | 1989-02-07 | Intel Corporation | Programmable I/O sequencer for use in an I/O processor |
JP2884831B2 (ja) | 1991-07-03 | 1999-04-19 | 株式会社日立製作所 | 処理装置 |
JPH05233281A (ja) | 1992-02-21 | 1993-09-10 | Toshiba Corp | 電子計算機 |
EP0594240B1 (en) | 1992-10-19 | 2000-01-05 | Koninklijke Philips Electronics N.V. | Data processor with operation units sharing groups of register files |
US5604912A (en) | 1992-12-31 | 1997-02-18 | Seiko Epson Corporation | System and method for assigning tags to instructions to control instruction execution |
WO1994027216A1 (en) | 1993-05-14 | 1994-11-24 | Massachusetts Institute Of Technology | Multiprocessor coupling system with integrated compile and run time scheduling for parallelism |
US5649174A (en) | 1994-12-09 | 1997-07-15 | Vlsi Technology Inc. | Microprocessor with instruction-cycle versus clock-frequency mode selection |
US5956747A (en) * | 1994-12-15 | 1999-09-21 | Sun Microsystems, Inc. | Processor having a plurality of pipelines and a mechanism for maintaining coherency among register values in the pipelines |
US5701508A (en) | 1995-12-19 | 1997-12-23 | Intel Corporation | Executing different instructions that cause different data type operations to be performed on single logical register file |
US5940859A (en) * | 1995-12-19 | 1999-08-17 | Intel Corporation | Emptying packed data state during execution of packed data instructions |
US5889975A (en) | 1996-11-07 | 1999-03-30 | Intel Corporation | Method and apparatus permitting the use of a pipe stage having an unknown depth with a single microprocessor core |
JP3578883B2 (ja) | 1997-01-31 | 2004-10-20 | 三菱電機株式会社 | データ処理装置 |
-
1998
- 1998-07-06 US US09/110,518 patent/US6237083B1/en not_active Expired - Fee Related
-
1999
- 1999-02-12 JP JP2000531777A patent/JP3837289B2/ja not_active Expired - Fee Related
- 1999-02-12 EP EP99932527A patent/EP1053522B1/en not_active Expired - Lifetime
- 1999-02-12 DE DE69901338T patent/DE69901338T2/de not_active Expired - Fee Related
- 1999-02-12 WO PCT/US1999/003121 patent/WO1999041659A1/en active IP Right Grant
- 1999-02-12 KR KR1020007008827A patent/KR100682635B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
EP1053522A1 (en) | 2000-11-22 |
JP2002503844A (ja) | 2002-02-05 |
KR20010040919A (ko) | 2001-05-15 |
KR100682635B1 (ko) | 2007-02-15 |
DE69901338D1 (de) | 2002-05-29 |
EP1053522B1 (en) | 2002-04-24 |
US6237083B1 (en) | 2001-05-22 |
WO1999041659A1 (en) | 1999-08-19 |
DE69901338T2 (de) | 2002-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3871883B2 (ja) | 間接分岐ターゲットを計算するための方法 | |
US6256721B1 (en) | Register renaming in which moves are accomplished by swapping tags | |
US6073215A (en) | Data processing system having a data prefetch mechanism and method therefor | |
US6119203A (en) | Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system | |
US6112293A (en) | Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result | |
JP3837289B2 (ja) | 同じ論理的空間を占有する複数のレジスタファイルを含むマイクロプロセッサ | |
US6151662A (en) | Data transaction typing for improved caching and prefetching characteristics | |
US6055650A (en) | Processor configured to detect program phase changes and to adapt thereto | |
US6275927B2 (en) | Compressing variable-length instruction prefix bytes | |
US6260134B1 (en) | Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte | |
US6457117B1 (en) | Processor configured to predecode relative control transfer instructions and replace displacements therein with a target address | |
US6470444B1 (en) | Method and apparatus for dividing a store operation into pre-fetch and store micro-operations | |
US6212621B1 (en) | Method and system using tagged instructions to allow out-of-program-order instruction decoding | |
US6460116B1 (en) | Using separate caches for variable and generated fixed-length instructions | |
US6332187B1 (en) | Cumulative lookahead to eliminate chained dependencies | |
US5951671A (en) | Sharing instruction predecode information in a multiprocessor system | |
US5961580A (en) | Apparatus and method for efficiently calculating a linear address in a microprocessor | |
EP1499956B1 (en) | Method and apparatus for swapping the contents of address registers | |
WO1997016785A1 (en) | A microprocessor using an instruction field to define dsp instructions | |
US5895497A (en) | Microprocessor with pipelining, memory size evaluation, micro-op code and tags | |
KR100572038B1 (ko) | 프리디코딩에서 제어 전송 비트를 이용하여 제어 전송 명령을 식별하는 프로세서 | |
IE901519A1 (en) | Multiple instruction preprocessing system with data¹dependency resolution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060118 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060118 |
|
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: 20060718 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060731 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |