JP2002503844A - 同じ論理的空間を占有する複数のレジスタファイルを含むマイクロプロセッサ - Google Patents

同じ論理的空間を占有する複数のレジスタファイルを含むマイクロプロセッサ

Info

Publication number
JP2002503844A
JP2002503844A JP2000531777A JP2000531777A JP2002503844A JP 2002503844 A JP2002503844 A JP 2002503844A JP 2000531777 A JP2000531777 A JP 2000531777A JP 2000531777 A JP2000531777 A JP 2000531777A JP 2002503844 A JP2002503844 A JP 2002503844A
Authority
JP
Japan
Prior art keywords
instruction
microprocessor
type
instructions
register file
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
JP2000531777A
Other languages
English (en)
Other versions
JP3837289B2 (ja
JP2002503844A5 (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 JP2002503844A publication Critical patent/JP2002503844A/ja
Publication of JP2002503844A5 publication Critical patent/JP2002503844A5/ja
Application granted granted Critical
Publication of JP3837289B2 publication Critical patent/JP3837289B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent 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)

Abstract

(57)【要約】 マイクロプロセッサは、マルチメディア命令についてのオペランドを記憶するよう定義される複数個のマルチメディアレジスタを含む第1のレジスタファイルと、浮動小数点命令についてのオペランドを記憶するよう定義される複数個の浮動小数点レジスタを含む第2のレジスタファイルとを含む。マルチメディアレジスタおよび浮動小数点レジスタは、マイクロプロセッサによって採用される命令セットに従って同じ論理的記憶装置に対応付けられる。浮動小数点命令がマルチメディア命令によって最も最近に更新されたレジスタを読出す際またはその逆の際に予め定義された挙動を維持するために、マイクロプロセッサは、1以上のマルチメディア命令の組の実行と1以上の浮動小数点命令の組の実行との間で第1および第2のレジスタファイルの同期化に備える(この場合いずれの組がプログラム順序で他のものに先行してもよく、この順序はどの方向に内容のコピーが実行されるか、すなわち第1のレジスタファイルから第2のレジスタファイルへ、またはその逆、に影響する)。このようにして、上述した状況における予め定められた挙動が維持される。マイクロプロセッサは空状態命令をサポートする。もし空状態命令が1以上のマルチメディア命令の組と1以上の浮動小数点命令の組との間にコードシーケンスで含まれれば、マイクロプロセッサはレジスタファイル同期化を禁止する。x86命令セットを含むある実施例では、空状態命令は、上記特徴に加えてEMMS命令と同じ動作の組を実行する。

Description

【発明の詳細な説明】
【0001】
【発明の分野】
この発明は、マイクロプロセッサの分野に関し、より特定的には、同じ論理的
記憶装置に対応付けられる複数のレジスタファイルを有するマイクロプロセッサ
に関する。
【0002】
【関連技術の説明】
マイクロプロセッサはしばしば、広範な問題に対する計算解決を与えるために
さまざまなデータ型を演算するように構成される。たとえば、整数データ型と浮
動小数点データ型とは普通に用いられる。整数データ型は、演算されるべき値が
おおよそ同じ絶対値(さらには関心の結果を発生するために計算される任意の中
間結果)である場合に使用されるであろう。一方で、演算されるべき値の絶対値
(または中間結果)が大きく変動すると予想されるならば、浮動小数点データ型
がより適切であろう。
【0003】 命令セット内の各命令によって使用されるデータ型は、典型的には、命令定義
の一部として予め定義される。たとえば整数命令は、整数データ型を演算するた
めに定義される命令である。同様に、浮動小数点命令は、浮動小数点データ型を
演算するために定義される。一般的には、命令とは、マイクロプロセッサが所望
の機能を実行するよう命じるために、プログラマが特定可能な最も基本的な演算
である。特定の順序で命令を配置することによって、プログラマは特定の目的を
達成し得る。命令は、他の命令とグルーピングされ、これらが演算するように定
義されたデータ型に従って異なった命令型を形成してもよい。典型的には、命令
は、演算を実行すべき1つ以上のオペランド(「ソースオペランド」)を受取る
よう定義され、結果(「デスティネーションオペランド」)を記憶するよう定義
される。ここに用いられる「命令セット」という言葉は、特定のプロセッサアー
キテクチャを介して定義される命令の群を指す。各命令は、その命令を命令セッ
ト内の他の命令から明白に識別する一意な符号を割当てられる。
【0004】 半導体製造プロセスの進歩に伴って、単一のチップに含まれ得るトランジスタ
の数を増加させ、かつ、チップの動作周波数を増大させることが可能となった。
したがって、マイクロプロセッサは、増大した動作周波数(すなわちより短いク
ロックサイクル)と、利用可能なトランジスタの増加によって可能となった進歩
したマイクロアーキテクチャとによって、性能を向上させることができるように
なった。
【0005】 利用可能なトランジスタの増加を利用する1つの方法は、新しいデータ型をマ
イクロプロセッサに加えることである。この新しいデータ型は、特定のタスクを
念頭に置いて特に設計されてもよい。データ型と、そのデータ型を演算するため
に定義される命令とは、特定のタスクのために最適化されてもよい。たとえば、
x86命令セットは、このようにして最近拡張されている。x86命令セットを
実現する先行のマイクロプロセッサ(たとえば、インテル社(Intel Corporatio
n)の80486およびアドバンストマイクロデバイス社の5K86)は一般的に
、浮動小数点データ型および整数データ型を特定する命令を実行するが、最も最
近のマイクロプロセッサの実現化例は、MMXデータ型を特定する命令をも実行
する。MMXデータ型は、1組のパックされた整数として処理される64ビット
のオペランドである。パックされた整数は、8個の8ビット整数、4個の16ビ
ット整数または2個の32ビット整数であってもよい。
【0006】 MMXデータ型およびこのデータ型を使用する命令は、ビデオおよびオーディ
オデータ操作のために最適化される。オーディオおよび/またはビデオ操作をこ
こでは「マルチメディア操作」と呼ぶ。コンピュータシステムが、オペレーティ
ングシステムおよびその上にインストールされたアプリケーションプログラムを
介してより進歩したグラフィカルユーザインターフェイスを採用するにつれて、
これらの型の演算はより重要となってきている。加えて、コンピュータシステム
のオーディオ能力が向上してきた。より特定的には、MMXデータ型は、パック
された整数内の整数値の各々に対して同じ演算が実行されることを考慮している
。1つの命令が複数の値を演算し得るために、所望の操作を実行するために採用
され得る命令は、そうでない場合に必要となる命令より少なくてすむ。多くのビ
デオおよび/またはオーディオ計算タスクについては、同じ演算がディスプレイ
または再生のために配置された多数のデータ要素に与えられるので、このため複
数のデータ要素に対して同じ演算を行なう命令が有利であろう。
【0007】 MMXデータ型および命令を付加するより前にx86アーキテクチャのために
設計されたオペレーティングシステムに対する影響を最小限にするために、MM
Xオペランドを記憶するように定義されたレジスタは、浮動小数点レジスタと共
有されるよう定義される。言い換えれば、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内のデスティネーションを更新する。レジスタユニット36
C−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は、空状態
命令を定義し、これを使用して特定の命令シーケンスがマルチメディアレジスタ
更新と浮動小数点レジスタ更新との間の同期化に頼らないことを示すことができ
る。もし空状態命令が命令シーケンス内で使用されれば、マイクロプロセッサ1
0は、レジスタファイル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を介して外
部メモリから与えられる。次に、必要とされないセクタ内のキャッシュラインは
無効であるとマークされる。必要とされるキャッシュラインは外部メモリによっ
て与えられるが、セクタ置換の場合とは違って、要求されなかったセクタ内のキ
ャッシュラインは同じ状態に維持される。代替の実施例では、命令キャッシュ1
4についての他の構成と、さまざまな置換ポリシーとが利用されてもよい。
【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演算」を生成する。R
ISC演算は、固定されたフォーマット内部命令であって、そのほとんどはマイ
クロプロセッサ10によって単一のクロックサイクルで実行可能である。RIS
C演算は、x86命令セットのあらゆる機能を形成するよう組合される。
【0030】 命令制御ユニット34は、スケジューラバッファ32に記憶される命令の飛越
実行を管理するのに必要な論理を含む。命令制御ユニット34はまた、データ転
送と、レジスタリネーミングと、RISC演算の同時発行およびリタイアメント
と、投機的実行とを管理する。ある実施例では、スケジューラバッファ32は、
最大12個のx86命令に等しい、24個までのRISC演算を一度に保持する
。可能であれば、命令制御ユニット34は、実行ユニット36の任意の利用可能
な1つにRISC演算を(バッファ32から)同時に発行してもよい。ある実施
例では、命令制御ユニット34は、1クロックサイクルあたり6個までのRIS
C演算を発行し、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バイト×1
6エントリ分岐ターゲットキャッシュと、16エントリリターンアドレススタッ
クとを含む。
【0037】 分岐予測論理22は、分岐ヒストリテーブルを使用して2レベル適応的ヒスト
リアルゴリズムを実現する。このテーブルは、実行される分岐情報を記憶し、個
々の分岐を予測し、分岐の群の挙動を予測する。ある実施例では、分岐ヒストリ
テーブルは、スペースを節約するために、予測されたターゲットアドレスを記憶
しない。これらのアドレスは代わりに、デコード段の間にオンザフライで計算さ
れる。分岐が取られると予測されるときのキャッシュフェッチの1クロックサイ
クルペナルティを回避するために、分岐論理22内の分岐ターゲットキャッシュ
は、(もし分岐ターゲットキャッシュ内にヒットが生ずれば)ターゲットアドレ
スの最初の16バイトを直接命令バッファに与える。
【0038】 分岐論理22はまた、コールおよびリターン命令を最適化するよう設計される
回路を含む。この回路は、メモリ内のコール命令に続く次の命令のアドレスがリ
ターンアドレススタック上にプッシュされることを可能にする。マイクロプロセ
ッサ10がリターン命令に遭遇すると、分岐論理22は、リターンスタックから
アドレスをポップしそのアドレスでフェッチを開始する。
【0039】 この発明の実施例に従えば、命令キャッシュ14と同様に、データキャッシュ
26もまた2ウェイセットアソシアティブの、32Kバイトのキャッシュとして
構成される。データTLB28は、線形アドレスを物理的アドレスに変換するた
めに使用され、たとえば、128エントリを含んでもよい。データキャッシュ2
6は、命令キャッシュ14と同様に区分されてもよい。
【0040】 図2を次に参照すると、デコードユニット10のある実施例のブロック図が示
される。他の実施例は可能で企図される。図2に示す実施例では、デコードユニ
ット20は、命令バッファ50と、1組のショートデコーダ52と、ロングデコ
ーダ54と、ベクトルデコーダ56と、シーケンサ58と、マイクロコードRO
M60と、出力選択マルチプレクサ(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つによって
デコードされディスパッチされるまで、命令バイトおよび対応するプリデコーダ
データを記憶するよう構成される。各クロックサイクルごとに、命令バッファ5
0は、デコードされた命令バイトを廃棄し、残りの命令バイトを命令キャッシュ
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からルーチンの残余をフェッチし、一度に4R
ISC演算まで、ルーチンを出力選択マルチプレクサ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によってマルチメディア命令である
と考えられる。したがって、空状態命令のデコードの後に、浮動小数点命令は例
外をもたらし、マルチメディア命令は、例外をもたらさないが、浮動小数点/マ
ルチメディア状態によって最も最近にデコードされた命令が空状態命令であった
ことを示さないようにセットされる。このようにして、マイクロコードROM6
0からフェッチされたマイクロコードルーチンは、レジスタファイル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は、F
P活性化状態72、マルチメディア活性化状態74、および、FEMMS状態7
6を含む。
【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からF
EMMS状態76への遷移はレジスタファイル同期化を招かない。このようにし
て、浮動小数点命令の実行からマルチメディア命令の実行への遷移は、空状態命
令によって開始可能であり、レジスタファイル同期化が禁止されることがある。
マイクロコードルーチンを完成すると、状態マシン70はデスティネーション状
態になる。
【0055】 状態マシン70がマルチメディア活性化状態74にあるとき、マルチメディア
命令または通常命令のいずれかのデコードによって、状態マシン70はマルチメ
ディア状態74に維持される。他方で、空状態命令のデコードによって、状態マ
シン70はFEMMS状態76に遷移し、浮動小数点命令のデコードによってF
P活性化状態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活性化状態7
2にセットし、記憶場所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を含むコンピュータシステム2
00のある実施例のブロック図が示される。他の実施例が可能であり企図される
。図示のシステムでは、主メモリ204はメモリバス206によってバスブリッ
ジ202に結合され、グラフィックコントローラ208はAGPバス210によ
ってバスブリッジ202に結合される。最後に、複数個のPCIデバイス212
A−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バス21
4の上にある)。バスブリッジ202は、演算をターゲットされたデバイスへ送
る。バスブリッジ202は一般的には、演算を、ソースデバイスまたはバスによ
って使用されるプロトコルからターゲットデバイスまたはバスによって使用され
たプロトコルに変換する。
【0073】 PCIバス214に対してISA/EISAバスへのインターフェイスを与え
るのに加え、2次バスブリッジ216は、所望であれば、さらなる機能をさらに
組込んでもよい。たとえば、ある実施例では、2次バスブリッジ216は、マス
タPCIアービタ(図示せず)を含んでPCIバス214の所有権を調停する。
入力/出力コントローラ(図示せず)は、外部からであっても2次バスブリッジ
216と統合されてもよいが、これを所望のごとくコンピュータシステム200
内に含んでキーボードおよびマウス222ならびにさまざまな直列および並列ポ
ートへの動作上のサポートを与えてもよい。他の実施例では、外部キャッシュユ
ニット(図示せず)がマイクロプロセッサ10とバスブリッジ202との間のC
PUバス224にさらに結合されてもよい。代替的に、外部キャッシュはバスブ
リッジ202に結合されてもよく、外部キャッシュに対するキャッシュ制御論理
はバスブリッジ202に統合されてもよい。
【0074】 主メモリ204は、この中にアプリケーションプログラムが記憶されここから
マイクロプロセッサ10が主に実行するメモリである。好適な主メモリ204は
、DRAM(ダイナミックランダムアクセスメモリ)と、好ましくはSDRAM
(シンクロナスDRAM)の複数個のバンクとを含む。
【0075】 PCIデバイス212A−212Bは、たとえば、ネットワークインターフェ
イスカード、ビデオアクセレータ、オーディオカード、ハードまたはフロッピー
ディスクドライブまたはドライブコントローラ、SCSI(スモールコンピュー
タシステムインターフェイス)アダプタ、および、電話機能カードなどのさまざ
まな周辺デバイスを例示するものである。同様に、ISAデバイス218は、モ
デム、サウンドカード、GPIBまたはフィールドバスインターフェイスカード
などのさまざまなデータ収集カードなどの、さまざまなタイプの周辺デバイスを
例示する。
【0076】 グラフィックコントローラ208は、ディスプレイ226上のテキストおよび
画像のレンダリングを制御するために設けられる。グラフィックコントローラ2
08は、一般的に公知である典型的なグラフィックアクセレータを具体化して、
主メモリ204へおよびそこから効果的にシフト可能である3次元データ構造を
レンダリングしてもよい。グラフィックコントローラ208はしたがって、それ
がバスブリッジ202内のターゲットインターフェイスへのアクセスを要求し受
取って主メモリ204へのアクセスを獲得することが可能であるという点で、A
GPバス210のマスタであり得る。専用グラフィックバスは、主メモリからの
データの迅速な検索を収容する。ある種の演算では、グラフィックコントローラ
208はさらに、AGPバス210上のPCIプロトコルトランザクションを生
成するよう構成されてもよい。したがって、バスブリッジ202のAGPインタ
ーフェイスは、AGPプロトコルトランザクションとPCIプロトコルターゲッ
トおよびイニシエータトランザクションとの両方をサポートする機能を含んでも
よい。ディスプレイ226は、画像またはテキストを与えることのできる任意の
電子ディスプレイである。好適なディスプレイ226は、陰極線管(「CRT」
)、液晶ディスプレイ(「LCD」)などを含む。
【0077】 なお、AGPバス、PGIバス、およびISAバスまたはEISAバスは、上
記説明では例として使用されるが、所望のごとくいかなるバスアーキテクチャと
置き換えてもよい。さらに、コンピュータシステム200は、付加的なマイクロ
プロセッサ(たとえばコンピュータシステム200の任意のコンポーネントとし
て示されるマイクロプロセッサ10a)を含むマルチプロセシングコンピュータ
システムであってもよい。マイクロプロセッサ10aは、マイクロプロセッサ1
0と同様であってもよい。より特定的には、マイクロプロセッサ10aは、マイ
クロプロセッサ10と全く同じコピーであってもよい。マイクロプロセッサ10
aは、マイクロプロセッサ10(図6に図示される)とCPUバス224を共有
してもよく、または、独立バスを介してバスブリッジ202に接続されてもよい
【0078】 上記開示に従うと、マイクロプロセッサは、同じ論理的記憶装置に対応付ける
よう定義された2つのレジスタファイル間の選択的レジスタファイル同期化をサ
ポートするものとして示される。有利には、レジスタファイル間の同期化が所望
されない場合、マイクロプロセッサは同期化を禁止してもよい。同じ論理的レジ
スタファイルにアクセスする命令とレジスタファイル同期化を必要としない命令
との両方の型を採用する命令シーケンスは、レジスタファイルの非同期化によっ
てより高い性能を達成し得る。他方で、レジスタファイル同期化を必要としない
コードシーケンスでも同期化の利益を受ける(おそらく達成される性能はより低
い)。
【0079】 上記開示を詳細に理解すると多くの変形および修正が当業者には明らかとなる
であろう。前掲のクレームはそのような変形および修正のすべてを含むものであ
ると理解されるべきである。
【図面の簡単な説明】
【図1】 マイクロプロセッサのある実施例のブロック図である。
【図2】 図1に示すデコードユニットのある実施例のブロック図である。
【図3】 図2に示すデコードユニットのある実施例の動作を例示する状態
マシンの図である。
【図4】 図2に示すデコードユニットのある実施例に従って図3に示す状
態マシンの一部を実現するマイクロコードシーケンスで実行されるステップを例
示するフローチャートである。
【図5】 高速の空状態命令の例示的使用とサブルーティン階層を例示する
図である。
【図6】 図1に示すマイクロプロセッサを含むコンピュータシステムのあ
る実施例のブロック図である。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成12年1月5日(2000.1.5)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0002
【補正方法】変更
【補正内容】
【0002】
【関連技術の説明】 WO−A−97/22924は、命令を実行するための方法およびマイクロプ
ロセッサを開示している。ある実施例では、マイクロプロセッサは、第1および
第2のレジスタファイル、すなわちパックされたデータレジスタおよび浮動小数
点レジスタを採用する。遷移ユニットは、これら2つの物理的レジスタファイル
間でデータをコピーすることによって、パックされたデータレジスタを浮動小数
点レジスタ上にエイリアスする。全体または部分的なエイリアスが開示されてい
る。全体のエイリアスの際には、パックされたデータモードへの遷移の間、物理
的浮動小数点レジスタファイルは、パックされたデータレジスタファイル上に完
全にエイリアスされ、同様に、浮動小数点モードへの遷移の間、物理的パックさ
れたデータレジスタファイルは、物理的浮動小数点レジスタファイル上に完全に
エイリアスされる。部分的エイリアスの間、物理的浮動小数点レジスタまたは物
理的パックされたデータレジスタのうち対応するタグが非空状態を示すものにの
み記憶されたデータについてコピーが行なわれる。この文献の開示は、前掲の独
立クレームの前文を形成する。 マイクロプロセッサはしばしば、広範な問題に対する計算解決を与えるために
さまざまなデータ型を演算するように構成される。たとえば、整数データ型と浮
動小数点データ型とは普通に用いられる。整数データ型は、演算されるべき値が
おおよそ同じ絶対値(さらには関心の結果を発生するために計算される任意の中
間結果)である場合に使用されるであろう。一方で、演算されるべき値の絶対値
(または中間結果)が大きく変動すると予想されるならば、浮動小数点データ型
がより適切であろう。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),JP,KR (72)発明者 フェイバー,ジョン・ジィ アメリカ合衆国、95066 カリフォルニア 州、スコッツ・バレー、ウッドランド・ド ライブ、4400 Fターム(参考) 5B013 DD02 5B022 AA00 BA01 BA02 CA01 CA07 EA03 FA00 5B033 BA01 DD01 【要約の続き】 持される。マイクロプロセッサは空状態命令をサポート する。もし空状態命令が1以上のマルチメディア命令の 組と1以上の浮動小数点命令の組との間にコードシーケ ンスで含まれれば、マイクロプロセッサはレジスタファ イル同期化を禁止する。x86命令セットを含むある実 施例では、空状態命令は、上記特徴に加えてEMMS命 令と同じ動作の組を実行する。

Claims (32)

    【特許請求の範囲】
  1. 【請求項1】 第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のレジスタファイルとの同期化を禁止するよう構成される、マ
    イクロプロセッサ。
  2. 【請求項2】 前記第1の型の命令はマルチメディア命令を含む、請求項1
    に記載のマイクロプロセッサ。
  3. 【請求項3】 前記第2の型の命令は浮動小数点命令を含む、請求項2に記
    載のマイクロプロセッサ。
  4. 【請求項4】 前記第1の型の命令は浮動小数点命令を含む、請求項1に記
    載のマイクロプロセッサ。
  5. 【請求項5】 前記第2の型の命令はマルチメディア命令を含む、請求項4
    に記載のマイクロプロセッサ。
  6. 【請求項6】 前記デコードユニットは、前記第1の命令とその後に前記空
    状態命令とさらにその後に前記第2の命令とである前記第1の命令シーケンスの
    プログラム順にのみ応答して前記同期化を禁止するよう構成される、請求項1に
    記載のマイクロプロセッサ。
  7. 【請求項7】 前記第1の命令シーケンスは、前記命令セットによって定義
    される第3の型の命令の1つ以上の命令をさらに含む、請求項6に記載のマイク
    ロプロセッサ。
  8. 【請求項8】 前記デコードユニットは、もし前記1つ以上の命令のいくつ
    かが前記第1の命令と前記空状態命令との間にプログラム順であるとしても前記
    同期化を禁止するよう構成される、請求項7に記載のマイクロプロセッサ。
  9. 【請求項9】 前記デコードユニットは、もし前記1つ以上の命令のいくつ
    かが前記第2の命令と前記空状態命令との間にプログラム順であるとしても前記
    同期化を禁止するよう構成される、請求項7に記載のマイクロプロセッサ。
  10. 【請求項10】 前記第3の型の命令は整数命令を含む、請求項7に記載の
    マイクロプロセッサ。
  11. 【請求項11】 前記デコードユニットは、前記第1および第2の命令を含
    むが前記空状態命令を除く第2の命令シーケンスがデコードされると前記第1の
    レジスタファイルと第2のレジスタファイルとの前記同期化を実行するよう構成
    される、請求項1に記載のマイクロプロセッサ。
  12. 【請求項12】 前記デコードユニットは、 命令をデコードするよう構成される1つ以上のデコーダと、 前記1つ以上のデコーダの1つによってマイクロコードされた命令がデコード
    されると命令を与えるよう結合されるマイクロコードROMとを含み、前記マイ
    クロコードROMは前記同期化を禁止する命令と前記同期化を実行する命令とを
    含むルーチンをさらに記憶する、請求項11に記載のマイクロプロセッサ。
  13. 【請求項13】 第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のレジスタフ
    ァイルとの同期化を禁止するステップとを含む、方法。
  14. 【請求項14】 前記第1のオペランドの前記読出は、前記第1のレジスタ
    ファイルからマルチメディア型の前記第1の命令についての前記第1のオペラン
    ドを読出すステップを含む、請求項13に記載の方法。
  15. 【請求項15】 前記第2のオペランドの前記読出は、前記第2のレジスタ
    ファイルから浮動小数点型の前記第2の命令についての前記第2のオペランドを
    読出すステップを含む、請求項14に記載の方法。
  16. 【請求項16】 前記命令シーケンスのプログラム順は、前記第1の命令と
    その後に前記空状態命令とさらにその後に前記第2の命令とを含む、請求項13
    に記載の方法。
  17. 【請求項17】 前記空状態命令と前記第2の命令との間に前記第1の型の
    第3の命令を含む前記命令シーケンスに応答して前記第1のレジスタファイルと
    前記第3のレジスタファイルとを同期化するステップをさらに含む、請求項16
    に記載の方法。
  18. 【請求項18】 前記命令セット内に定義される第3の型の命令の1つ以上
    の命令が、前記命令シーケンス内に前記第1の命令と前記空状態命令との間また
    は前記第2の命令と前記空状態命令との間に含まれるとしても前記禁止が実行さ
    れる、請求項13に記載の方法。
  19. 【請求項19】 前記空状態命令が前記命令シーケンスから除かれるならば
    、もし前記命令セット内に定義される第3の型の命令の1つ以上の命令が前記命
    令シーケンス内に前記第1の命令と前記第2の命令との間に含まれるとしても前
    記同期化が実行される、請求項13に記載の方法。
  20. 【請求項20】 第1の複数個のレジスタに対応する物理的記憶場所を含む
    第1のレジスタファイルと、 第2の複数個のレジスタに対応する物理的記憶場所を含む第2のレジスタファ
    イルとを含むマイクロプロセッサであって、 前記マイクロプロセッサは、第1の型の命令、第2の型の命令および空状態命
    令を含む命令セット内で定義される命令を実行するよう構成され、前記命令セッ
    トは、前記第2の複数個のレジスタの各々が割当てられた論理的記憶場所に前記
    第1の複数個のレジスタの対応する1つが割当てられるよう、前記第1の型の命
    令を介してアクセス可能な第1の複数個のレジスタと前記第2の型の命令を介し
    てアクセス可能な第2の複数個のレジスタとが論理的記憶装置に対応付けられる
    ようさらに定義し、前記マイクロプロセッサは、前記第1の型の第1の命令を実
    行した後にかつ前記第2の型の第2の命令を実行するより前に前記第1の命令お
    よび前記第2の命令を含む第1の命令シーケンスが前記空状態命令を含むことに
    応答して前記第1のレジスタファイルと前記第2のレジスタファイルとの同期化
    を禁止するよう構成される、マイクロプロセッサ。
  21. 【請求項21】 前記第1の型の命令はマルチメディア命令を含む、請求項
    20に記載のマイクロプロセッサ。
  22. 【請求項22】 前記第2の型の命令は浮動小数点命令を含む、請求項21
    に記載のマイクロプロセッサ。
  23. 【請求項23】 前記第1の型の命令は浮動小数点命令を含む、請求項20
    に記載のマイクロプロセッサ。
  24. 【請求項24】 前記第2の型の命令はマルチメディア命令を含む、請求項
    23に記載のマイクロプロセッサ。
  25. 【請求項25】 前記マイクロプロセッサは、前記第1の命令とその後に前
    記空状態命令とさらにその後に前記第2の命令とである前記第1の命令シーケン
    スのプログラム順にのみ応答して前記同期化を禁止するよう構成される、請求項
    20に記載のマイクロプロセッサ。
  26. 【請求項26】 前記第1の命令シーケンスは、前記命令セットによって定
    義される第3の型の命令の1つ以上の命令をさらに含む、請求項25に記載のマ
    イクロプロセッサ。
  27. 【請求項27】 前記マイクロプロセッサは、もし前記1つ以上の命令のい
    くつかが前記第1の命令と前記空状態命令との間にプログラム順であるとしても
    前記同期化を禁止するよう構成される、請求項26に記載のマイクロプロセッサ
  28. 【請求項28】 前記マイクロプロセッサは、もし前記1つ以上の命令のい
    くつかが前記第2の命令と前記空状態命令との間にプログラム順であるとしても
    前記同期化を禁止するよう構成される、請求項26に記載のマイクロプロセッサ
  29. 【請求項29】 前記第3の型の命令は整数命令を含む、請求項26に記載
    のマイクロプロセッサ。
  30. 【請求項30】 前記マイクロプロセッサは、前記第1の命令を実行した後
    にかつ前記第2の命令を実行するよりも前に前記第1の命令および第2の命令を
    含むが前記空状態命令を除く第2の命令シーケンスに応答して前記第1のレジス
    タファイルと第2のレジスタファイルとの前記同期化を実行するよう構成される
    、請求項20に記載のマイクロプロセッサ。
  31. 【請求項31】 第1の複数個のレジスタに対応する物理的記憶場所を含む
    第1のレジスタファイルと、第2の複数個のレジスタに対応する物理的記憶場所
    を含む第2のレジスタファイルとを含むマイクロプロセッサを含み、前記マイク
    ロプロセッサは、第1の型の命令、第2の型の命令および空状態命令を含む命令
    セット内で定義される命令を実行するよう構成され、前記命令セットは、前記第
    2の複数個のレジスタの各々が割当てられた論理的記憶場所に前記第1の複数個
    のレジスタの対応する1つが割当てられるよう、前記第1の型の命令を介してア
    クセス可能な第1の複数個のレジスタと前記第2の型の命令を介してアクセス可
    能な第2の複数個のレジスタとが論理的記憶装置に対応付けられるようにさらに
    定義し、前記マイクロプロセッサは、前記第1の型の第1の命令を実行した後に
    かつ前記第2の型の第2の命令を実行するより前に前記第1の命令および前記前
    記第2の命令を含む命令シーケンスが前記空状態命令も含むことに応答して前記
    第1のレジスタファイルと前記第2のレジスタファイルとの同期化を禁止するよ
    う構成され、さらに、 前記マイクロプロセッサに結合される主メモリを含み、前記主メモリは前記命
    令シーケンスを記憶し前記マイクロプロセッサに前記命令シーケンスがそこから
    要求されると前記命令シーケンスを与えるよう構成され、さらに、 前記主メモリに結合される入力/出力(I/O)デバイスを含み、前記I/O
    デバイスは前記主メモリと前記I/Oデバイスに結合される第2のコンピュータ
    システムとの間でデータを転送するよう構成される、コンピュータシステム。
  32. 【請求項32】 前記マイクロプロセッサと同一の第2のマイクロプロセッ
    サをさらに含む、請求項31に記載のコンピュータシステム。
JP2000531777A 1998-02-13 1999-02-12 同じ論理的空間を占有する複数のレジスタファイルを含むマイクロプロセッサ Expired - Fee Related JP3837289B2 (ja)

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 true JP2002503844A (ja) 2002-02-05
JP2002503844A5 JP2002503844A5 (ja) 2006-03-09
JP3837289B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010097593A (ja) * 2008-10-16 2010-04-30 Internatl Business Mach Corp <Ibm> 命令ブロック・シーケンサ・ロジックを有するマルチ実行ユニットによる命令実行のための回路構成、集積回路デバイス、プログラム、及び方法

Families Citing this family (16)

* Cited by examiner, † Cited by third party
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
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
US6748492B1 (en) 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
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
US9411585B2 (en) 2011-09-16 2016-08-09 International Business Machines Corporation Multi-addressable register files and format conversions associated therewith
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
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)

* Cited by examiner, † Cited by third party
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 三菱電機株式会社 データ処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010097593A (ja) * 2008-10-16 2010-04-30 Internatl Business Mach Corp <Ibm> 命令ブロック・シーケンサ・ロジックを有するマルチ実行ユニットによる命令実行のための回路構成、集積回路デバイス、プログラム、及び方法

Also Published As

Publication number Publication date
EP1053522A1 (en) 2000-11-22
KR100682635B1 (ko) 2007-02-15
US6237083B1 (en) 2001-05-22
DE69901338D1 (de) 2002-05-29
EP1053522B1 (en) 2002-04-24
JP3837289B2 (ja) 2006-10-25
KR20010040919A (ko) 2001-05-15
DE69901338T2 (de) 2002-12-12
WO1999041659A1 (en) 1999-08-19

Similar Documents

Publication Publication Date Title
KR100586058B1 (ko) 재명명 태그들을 교환함으로써 이동이 이루어지는 레지스터 재명명
JP3871883B2 (ja) 間接分岐ターゲットを計算するための方法
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
JP3837289B2 (ja) 同じ論理的空間を占有する複数のレジスタファイルを含むマイクロプロセッサ
US6202130B1 (en) Data processing system for processing vector data and method therefor
EP1031074B1 (en) Processor configured to generate lookahead results from collapsed moves, compares, and simple arithmetic instructions
EP1353267B1 (en) Microprocessor with repeat prefetch instruction
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
EP1241567B1 (en) Method and apparatus for executing coprocessor instructions
US20040186985A1 (en) Method and apparatus for branch prediction based on branch targets
US6026483A (en) Method and apparatus for simultaneously performing arithmetic on two or more pairs of operands
US7685406B2 (en) Determination of current stack pointer value using architectural and speculative stack pointer delta values
JP3345787B2 (ja) データ処理装置
WO1997016785A1 (en) A microprocessor using an instruction field to define dsp instructions
JP2008204249A (ja) データプロセッサ
JP2002229779A (ja) 情報処理装置
EP1499956A2 (en) Method and apparatus for swapping the contents of address registers
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
JPH03186935A (ja) データ処理装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

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