JPH11316680A - デ―タ処理システムにおいてレジスタを保存し且つ回復するシステム及び方法 - Google Patents

デ―タ処理システムにおいてレジスタを保存し且つ回復するシステム及び方法

Info

Publication number
JPH11316680A
JPH11316680A JP10373675A JP37367598A JPH11316680A JP H11316680 A JPH11316680 A JP H11316680A JP 10373675 A JP10373675 A JP 10373675A JP 37367598 A JP37367598 A JP 37367598A JP H11316680 A JPH11316680 A JP H11316680A
Authority
JP
Japan
Prior art keywords
state information
register file
task
register
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.)
Pending
Application number
JP10373675A
Other languages
English (en)
Inventor
H Soni Naresh
エイチ. ソニ ナレッシュ
Isaaman David
イサーマン デイビッド
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.)
ST MICROELECTRONICS Inc
Original Assignee
ST MICROELECTRONICS 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 ST MICROELECTRONICS Inc filed Critical ST MICROELECTRONICS Inc
Publication of JPH11316680A publication Critical patent/JPH11316680A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 浮動小数点演算とMMX演算との間のスイッ
チ切換えの場合のマイクロプロセサにおける浮動小数点
レジスタの状態を保存及び格納することに関連する待ち
時間を減少させるシステム及び方法を提供する。 【解決手段】 本発明によれば、CPU内において一次
的浮動小数点レジスタファイルと共に二次的レジスタフ
ァイルを維持する。該一次的レジスタはMMX又はその
他の文脈へのタスク切換えが発生すると浮動小数点タス
クの状態を「そのまま」維持する。FPU状態が保存さ
れる区域のアドレスが保存区域アドレスレジスタ内に維
持される。次いで、実行した命令の結果を格納するため
にその他の文脈によって二次的レジスタが利用される。
多くの場合に、浮動小数点演算への切換えが発生する場
合に、前の状態はメモリサブシステムから命令及びデー
タを検索する待ち時間を発生することなしに一次的レジ
スタから回復される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、大略、マイクロプ
ロセサにおける種々のレジスタの状態を保存し且つ回復
する方法及び装置に関するものであって、更に詳細に
は、メインメモリから検索されるべきデータ及び命令の
全てを必要とすることなしに、浮動小数点実行ユニット
の状態を回復させることを可能とする方法及び装置に関
するものである。
【0002】
【従来の技術】マルチメディア能力及び機能性を増加さ
せる消費者の要求に基づいて、コンピュータ業界は、マ
ルチメディアコンピュータソフトウエアアプリケーショ
ンの処理を行う場合の助けとなる新たな技術及び技術革
新で答えてきている。一つの例は、インテルマイクロプ
ロセサアーキテクチャに対するマルチメディアエックス
テンジョン(MMX)である。これらのMMX命令は、
ソフトウエアベンダがマルチメディア機能を強化させた
アプリケーションを作成することを可能とする能力を提
供している。
【0003】インテルマイクロプロセサのアーキテクチ
ャは、MMX命令が命令演算のために浮動小数点ユニッ
ト(FPU)レジスタを使用するものである。インテル
x86アーキテクチャマイクロプロセサ内のFPU回路
は、ユーザに対して、スタックのような態様でアクセス
される、即ちデータがレジスタファイルの上部から逐次
的にアクセスされる8個の80ビットFPUデータレジ
スタを具備するFPUデータレジスタファイルを提供す
る。浮動小数点レジスタはプログラマによって使用する
ためにその管理下にあり且つ使用可能である。インテル
アーキテクチャは、又、16ビット制御レジスタ及び1
6ビットステータスレジスタを提供している。データレ
ジスタタグワードも包含されており、それは8個の2ビ
ットフィールドを有しており、その各々は8個のデータ
レジスタのうちの一つと関連している。タグワードは、
8個のデータレジスタのうちの各々に対して空/非空ス
テータスを維持することによって文脈切換え及びスタッ
ク性能を改善するために使用される。
【0004】注意すべきことであるが、文脈又はタスク
切換えは、例えばOS/2、ウインドウズ95、ウイン
ドウズNTなどのオペレーティングシステム(OS)に
よって制御される。文脈切換えが所望される場合には、
オペレーティングシステムはトラップを発生し、それは
トラップハンドラによって受取られる。次いで、トラッ
プハンドラは、FSAVE、FSTENVなどを実行さ
せることによって前の文脈の状態を保存する。更に注意
すべきことであるが、タスクスイッチング即ちタスク切
換えは、単一の文脈内において発生することが可能であ
る。例えば、スイッチ即ち切換えは、浮動小数点文脈に
おける異なるタスク間において発生することが可能であ
る。同様に、タスク切換えも、完全にMMX文脈内にお
いて発生することが可能である。
【0005】更に、インテルアーキテクチャは、最後の
浮動小数点命令ワードを包含するメモリ位置に対する命
令ポインタと、最後の浮動小数点命令(存在する場合)
と関連するオペランドを包含するメモリ位置に対するデ
ータポインタとを有している。
【0006】上述したように、インテルアーキテクチャ
マイクロプロセサがMMX命令を実行する場合には、F
PUレジスタが命令演算のために利用される。従って、
80ビットFPUレジスタの64ビットがMMX命令に
よって使用される。例えば、浮動小数点演算からMMX
演算へのタスク切換えが発生すると、OSトラップハン
ドラが、浮動小数点保存(FSAVE)命令を使用して
そのレジスタ状態を保存させる。FSAVE命令は、レ
ジスタ状態(浮動小数点か又はMMX)をメインメモリ
へ格納させる。マイクロプロセサによるFSAVE命令
の実行は、53乃至155CPUクロックサイクルかか
る場合がある。クロックサイクルの数は、マイクロプロ
セサが動作するモード、例えば16ビット、32ビッ
ト、リアルモード、プロテクトモードなどに依存する。
従って、タスクが浮動小数点演算へスイッチバックする
ことが所望される場合には、オペレーティングシステム
は浮動小数点回復(FRSTOR)命令を使用してメイ
ンメモリからの浮動小数点レジスタをそれらがFSAV
E命令が実行されていた時に使用されていた状態へ復帰
させることが可能である。FRSTOR実行はマイクロ
プロセサのモードに依存して、75乃至95CPUクロ
ックサイクルかかる場合がある。従って、浮動小数点レ
ジスタの状態をメインメモリへ保存し、次いで、浮動小
数点とMMX演算との間でスイッチング即ち切換えが行
われる場合に、該レジスタを前の状態へ復帰させるため
に、従来の技術では128乃至250クロックサイクル
かかる場合があることを理解することが可能である。
【0007】
【発明が解決しようとする課題】従って、浮動小数点演
算とMMX演算との間又は同一の文脈における異なるタ
スクの間においてスイッチング即ち切換えを行う場合
に、最小のクロックサイクル数を使用して浮動小数点レ
ジスタファイルの状態を迅速に且つ効率的に保存し且つ
回復することが可能な技術を提供することが必要とされ
ている。
【0008】本発明は、以上の点に鑑みなされたもので
あって、上述した如き従来技術の欠点を解消し、迅速且
つ効率的に浮動小数点レジスタファイルの状態を保存し
且つ格納することが可能な方法及び装置を提供すること
を目的とする。
【0009】
【課題を解決するための手段】本発明は、浮動小数点演
算とMMX演算との間又は浮動小数点/MMX文脈内に
おける特定のタスク間でのスイッチング即ち切換え時に
FSAVE及びFRSTOR命令の実行に関連するレイ
テンシ即ち待ち時間を減少させるシステム及び方法が提
供される。
【0010】広義には、本発明は、浮動小数点演算とM
MX演算との間のタスクの切換え、又は同一の文脈内に
おけるタスクの間の切換えを行う場合に、マイクロプロ
セサにおける浮動小数点レジスタの状態を保存し且つ回
復することに関連する待ち時間を減少させる。本発明
は、CPUにおける一次的な浮動小数点レジスタファイ
ルと共に二次的なレジスタファイルを維持する。該一次
的レジスタファイルは、MMXへの、又は別の文脈への
タスクの切換えが発生する場合に「そのまま」浮動小数
点タスクの状態を維持する。FPU状態が保存されるエ
リア即ち区域のアドレスが区域アドレス保存レジスタ内
に維持される。次いで、該二次的レジスタファイルが他
の文脈によって利用されて、実行された命令の中間結果
を格納する。文脈が浮動小数点演算へスイッチバックす
るほとんどの場合において、前の状態はメモリサブシス
テムから命令及びデータを検索するための待ち時間を発
生することなしに、該一次的レジスタファイルから回復
される。二次的レジスタファイルに加えて、スヌープ
(snoop)即ち詮索メカニズムが状態保存区域のア
ドレスを使用して、状態保存区域が修正されたか否かを
決定する。状態保存区域が修正されている場合には、浮
動小数点状態は、従来の態様で、メモリサブシステムか
ら回復されねばならない。しかしながら、浮動小数点保
存区域はほとんど修正されることがなく且つCPU内に
おいて浮動小数点状態を維持するためのペナルティ即ち
犠牲は無視可能なものである。更に、本発明は、マイク
ロプロセサが、現在のオペレーティングシステム及びア
プリケーションソフトウエアと適合性のある態様で動作
することを可能とする。
【0011】本発明は、FSAVE及びFRSTOR命
令の実行に関連する待ち時間を約3乃至4サイクルへ減
少させることを可能とするものと考えられる。
【0012】
【発明の実施の形態】前述したように、インテルアーキ
テクチャと適合性のあるマイクロプロセサの場合、MM
X命令は命令を計算するために浮動小数点ユニット(F
PU)レジスタを使用する。
【0013】図1を参照すると、インテルx86アーキ
テクチャマイクロプロセサ内のFPU回路は、ユーザに
対して、スタックと同様の態様でアクセスされる8個の
80ビットFPUデータレジスタR0−R7を具備する
FPUデータレジスタファイル1を提供する。16ビッ
トの制御レジスタ2及び16ビットのステータスレジス
タ3も提供される。データレジスタタグワード4は8個
の2ビットフィールドを有しており、その各々は8個の
データレジスタR0−R7の一つと関連している。タグ
ワードは、コンテクトスイッチング(context
switching)即ち文脈切換え及びスタック性能
を、8個のデータレジスタの各々に対して空/非空ステ
ータスを維持することによって改善するために使用され
る。
【0014】図1には、更に、最後の浮動小数点命令ワ
ードを包含するメモリ位置に対する命令ポインタ5及び
最後の浮動小数点命令(存在する場合)と関連するオペ
ランドを包含するメモリ位置に対するデータポインタ6
が示されている。
【0015】本発明を説明する便宜上、浮動小数点演算
とMMX演算との間のタスクスイッチング即ちタスクの
切換えを使用して、本発明を説明する。しかしながら、
理解すべきことであるが、本発明は、例えば第一浮動小
数点タスクから第二浮動小数点タスクへのスイッチング
即ち切換えのような単一の文脈におけるタスク切換え及
び異なるMMXタスク間での切換えなどにも適用可能な
ものである。
【0016】上述したように、インテルアーキテクチャ
マイクロプロセサがMMX命令を実行する場合に、FP
Uレジスタが命令を計算するために使用される。従っ
て、80ビットFPUレジスタR0−R7の64ビット
がMMX命令によって使用される。浮動小数点演算から
MMXへ、MMXから浮動小数点へ、又は同様な状態で
タスクが切換わる場合に、レジスタの状態は、例えば、
浮動小数点(FSAVE)命令を使用して保存される。
FSAVE命令はメモリサブシステムに対するレジスタ
状態を格納する。
【0017】図1において、タグフィールド7はタグワ
ード内の8個の2ビットフィールドの各々のFPUデー
タレジスタファイル1内の物理的なデータレジスタのう
ちの一つとの関連性を示している。特に、タグワードレ
ジスタ4は各物理的データレジスタに対し2ビットから
構成されている。タグワードフィールド(フィールド7
の0−7)は、それらの関連するレジスタ(R0−R
7)の内容に依存して四つの値、即ちValid(0
0)、Zero(01)、Special(10)、E
mpty(11)、のうちの一つをとる。Specia
l(特別)値は、デノーマル(Denormal)、無
限(Infinity)、QNaN、SNaN、サポー
トなしフォーマットを包含している。タグ値は、インテ
ルマイクロプロセサによって透明状に維持され且つFS
TENV及びFSAVE命令を介して間接的にプログラ
マに対して使用可能であるに過ぎない。
【0018】FPU回路は、そのステータスに関する情
報及び演算結果をステータスレジスタ3を介してマイク
ロプロセサ内のその他の機能的ユニットへ通信する。F
PUステータスレジスタは例外ステータス、演算実行ス
テータス、レジスタステータス、オペランドクラス及び
比較結果を反映するビットフィールドから構成されてい
る。このレジスタは、制御又は実行ユニットの状態に拘
らずに、継続的に、マイクロプロセサCPU、即ち整数
ユニットに対してアクセス可能である。
【0019】FPUモード制御レジスタ2は、FPUの
演算モードを特定するためにCPUによって使用され
る。制御レジスタ2は、使用されるべき丸めモード、結
果を計算するために使用される精度(単精度又は倍精
度)及びトラップを介してCPUへ報告されるべき例外
条件を特定するビットフィールドを包含している。ユー
ザは、制御レジスタ2内の適宜のビットをセット又はク
リアすることによって、精度、丸め及び例外報告を制御
する。付加的な情報に関しては、エスジーエストムソン
マイクロエレクトロニクスインコーポレイテッドによっ
て出版されているST486DX/DX2データブッ
ク、及びペンチアムプロセサファミリー開発者のマニュ
アル(Pentinum Processor Fam
ily Developer’s Manual)、3
巻を参照するとよく、尚、これらは引用によって本明細
書に取込む。
【0020】図2を参照すると、FPUレジスタファイ
ル1が、制御レジスタ2、ステータスレジスタ3、タグ
ワード4、命令ポインタ5、データポインタ6、タグフ
ィールド7と共に示されている。又、図2においては、
フィールドMM0−MM7を具備する64ビットMMX
レジスタファイル1aとして使用されるFPUレジスタ
R0−R7が示されている。8個の2ビットタグフィー
ルド7が、MMX命令と関連して使用される場合のタグ
フィールド7aとして示されている。典型的に、インテ
ルアーキテクチャマイクロプロセサは、命令を計算する
ためにFPUレジスタを使用してMMX命令を実行す
る。従って、図2はMMX命令として使用されているF
PUレジスタR0−R7からなる64ビットを示してい
る。浮動小数点演算からMMXへ、MMXから浮動小数
点へ、又は同様な場合のタスクの切換えが発生すると、
そのレジスタ状態は、浮動小数点保存(FSAVE)命
令などを使用して保存される。FSAVE命令は、レジ
スタの状態(浮動小数点か又はMMXかの何れか)をメ
モリサブシステムへ格納する。注意すべきことである
が、FSAVE命令は、浮動小数点環境(制御レジス
タ、ステータスレジスタ、タグワード、命令ポインタ及
びデータポインタ)、及び浮動小数点レジスタ自身の内
容を保存する。FSTENV命令はFPU環境を格納す
る。FRSTOR命令はFPU環境及びレジスタをロー
ドし、一方FLDENV命令はFPU環境をロードす
る。
【0021】より詳細に説明すると、浮動小数点演算か
ら別の文脈、例えばMMX又は異なるFP(浮動小数
点)文脈へのタスクの切換えの場合に、現在の浮動小数
点状態はFSAVE/FSTENV命令を使用して保存
されねばならない。上述したように、これらの命令は浮
動小数点状態をメモリへ保存し且つ53乃至155CP
Uサイクルかかる。FSAVE/FSTENV命令の期
間中、以下の情報が保存される。即ち、FPU制御ワー
ド、FPUステータスワード、FPUタグワード、IP
オフセット、CSセレクタ、オプコード、データオペラ
ンドオフセット、及びオペランドセレクタである。この
情報を保存した後に、FSAVE/FSTENV命令は
制御ワードを037Fhexへセットし、ステータスワ
ードを0へセットし、タグワードをFFFFhexへセ
ットし、データポインタを0へセットし、命令ポインタ
を0へセットし、且つ最後の命令オプコードを0へセッ
トする。注意すべきことであるが、FSAVE命令は、
更に、FPデータレジスタ1の内容を格納する。このス
テータス情報が保存されると、浮動小数点又はMMXタ
スクが再開され且つ浮動小数点レジスタファイルを使用
する。従って、MMXから浮動小数点へ又はその逆のタ
スクの切換えはシステム効率及び待ち時間の点において
非常に高価なものである。従って、本発明は二つのレジ
スタファイル、即ち一次的ファイル及び二次的ファイル
を使用する。
【0022】図3を参照すると、インテル命令セットを
実行することが可能であり且つ本発明を実現する例示的
なマイクロプロセサのブロック図が大略参照番号10で
示されている。多くのその他の異なった形態のマイクロ
プロセサも本発明を実現するために使用可能であること
は当業者にとって自明である。
【0023】バスインターフェースユニット(BIU)
11がマイクロプロセサコンポーネントをシステムバス
12とインターフェースする。メインメモリ13及び種
々の入力/出力装置23もバス12へ接続している。I
/O装置はディスケットドライブ、キーボード、マウ
ス、パラレルポートなどを有することが可能である。制
御、アドレス及びデータ情報がマイクロプロセサ10か
らBIU11を介してバス12へ送信される。更に、メ
モリ13及びI/O装置23からの制御、アドレス及び
データ信号が、マイクロプロセサ10によって使用する
ためにBIU11によって受取られる。注意すべきこと
であるが、制御、アドレス及びデータ情報は、マイクロ
プロセサ命令、及び該命令によって操作されるオペラン
ドデータを包含している。
【0024】特定のアドレスモードを使用して実効的な
アドレスから物理的アドレスを計算することによってメ
モリ管理が与えられる。次いで、CPUは物理的メモリ
装置内の特定の位置へ実際にアドレスするために物理的
アドレスを使用する。メモリ管理ユニット(MMU)
(不図示)は、典型的に、ページングメカニズム用のキ
ャッシュである変換索引バッファ(TLB)を有してい
る。図3に示したものと同様な典型的なマイクロプロセ
サにおいては、TLBは頁テーブルキャッシュであり、
それは、プロセサ内の最も一般的に使用される頁テーブ
ルエントリを自動的に維持する。メモリ管理操作のため
にアドレス計算ユニットも設けられており、且つそれは
オフセットアドレス(実効的アドレス)を計算すること
によって物理的アドレスを計算するために使用される。
一般的に、該実効アドレスは、最大で三つの値、即ちベ
ース、インデックス、変位を加算することによって計算
される。ベースは、それが存在する場合には、命令の実
行時における8個の32ビット汎用レジスタ(不図示)
のうちの一つにおける値である。これらの汎用レジスタ
はインテルアーキテクチャの一部として設けられてい
る。インデックスも32ビット汎用レジスタのうちの一
つに含まれている値である。インデックスは、加算が行
われる前に1,2,4又は8のうちのスケールファクタ
によって最初に乗算されるという点においてベースと異
なっている。メモリアドレス計算へ加えられている3番
目のコンポーネントは変位であり、それは命令の一部と
して供給される最大で32ビットの値である。
【0025】ロード/格納機能は、演算論理ユニット
(ALU)に関する命令のロード及び格納(ストア)を
実行するロード/格納ユニット22によって実行され
る。ロード及び格納命令は、ストリングロード(LOD
S)、タスクロードレジスタ(LTR)、データ移動
(MOV)などを包含している。格納命令は、タスク格
納レジスタ(STR)、ストリング格納(STOS)な
どを包含している。一般的に、ロード命令はキャッシュ
/メモリからデータ及び/又は命令を検索し且つその情
報をマイクロプロセサレジスタのうちの一つの中に配置
させ、一方命令格納は、データ及び/又は命令をマイク
ロプロセサレジスタからキャッシュ/メモリ位置内へ配
置させる。整数ユニット21はロード及び格納命令に対
するアドレス計算を実施することが可能である。
【0026】注意すべきことであるが、ほとんどのマイ
クロプロセサは階層的メモリサブシステムを有してい
る。メモリサブシステムは、通常、レベル1(L1)命
令キャッシュ15及びデータキャッシュ16を有してお
り、それらは実行ユニット(FPU20、整数ユニット
21、ロード/格納ユニット22)へ命令及びデータを
供給する。多くのデータ処理システムにおいて、オフチ
ップレベル2(L2)キャッシュ(不図示)が設けられ
ている。L2キャッシュはメインメモリ13よりより小
型のものであるが、L2キャッシュからプロセサによっ
て使用される蓋然性のある情報を検索することはメイン
メモリから情報をローディングすることよりもかなり高
速である。メインメモリ13はメモリサブシステムにお
ける最後のレベルの格納である。メモリ13は最も大型
の格納エリア即ち区域であるが、マイクロプロセサによ
ってアクセスされるためには多数のサイクルを必要とす
る。より詳細に説明すると、レベル1(L1)命令キャ
ッシュ15は、図3に示したように、マイクロプロセサ
10内に設けられている。キャッシュ15はマイクロプ
ロセサ実行ユニットへ供給されるべきマイクロプロセサ
命令を格納する。
【0027】L1データキャッシュ16も、図3に示し
たように、設けられており、且つライトスルー(wri
te−through)モードにおいて、又はより高い
性能のライトバック(write−back)モードに
おいてラン即ち稼動させる形態とさせることが可能であ
る。ライトバックモードは不必要な外部書込みサイクル
によって発生されるバスボトルネックを取除くことによ
ってCPUコアの性能を最適化させる。ライトスルーキ
ャッシュアーキテクチャは、キャッシュへの全ての書込
みも外部メモリを同時的にアップデートすることを必要
とする。これらの不必要な書込みサイクルはボトルネッ
クを発生し、それがCPUをストールさせ且つ性能に悪
影響を与える場合がある。これと対比して、ライトバッ
クアーキテクチャは、外部メモリをアップデートするこ
となしにデータをキャッシュへ書込むことを可能とす
る。ライトバックキャッシュの場合、外部書込みサイク
ルは、キャッシュミスが発生した場合、修正したライン
がキャッシュ内において置換された場合、又は外部バス
マスターがデータへのアクセスを必要とする場合に必要
とされるに過ぎない。四方セットアソシエイティブアー
キテクチャ及び最低使用頻度(LRU)アルゴリズムが
キャッシュ16において使用される。勿論、キャッシュ
16は、所望により、ライトスルーモードで動作させる
ことが可能である。キャッシュアーキテクチャに依存し
て、キャッシュ16のライン寸法は16バイト、32バ
イトなどとすることが可能であり、且つ新たなラインは
メモリ読取りサイクル期間中にのみ割当てられる。有効
ステータスが16バイトキャッシュラインを基として維
持されるが、タグワード(ダブルワード)ステータス上
で修正されるか又はライトバックモード用の「ダーティ
(dirty)」ステータスが維持される。従って、ラ
インがキャッシュ内において置換される場合に、修正さ
れたダブルワードのみが外部メモリへ書戻される。CP
Uは読取り及び書込みの両方の場合に単一内部クロック
サイクルでキャッシュへアクセスすることが可能であ
る。上述したように、命令及びデータが性能を増加させ
るためにL1キャッシュ内に別個に格納される。
【0028】命令キャッシュ15が命令フェッチ/デコ
ードユニット18によってフェッチされる前に、マイク
ロプロセサ命令を格納するために設けられている命令プ
リフェッチバッファ19へ接続されている。命令は、命
令ストリームから「プリフェッチ」されることによって
バッファ内にロードされる。命令がユニット18によっ
てフェッチされると、新たな命令が該バッファ内にロー
ドされる。このことは、実行ユニットが、常に、継続的
な命令の供給を有しており且つパイプライン内において
「バブル」が発生することを防止することを確保してい
る。分岐ターゲットバッファ17が、「分岐」即ち「ジ
ャンプ」命令のターゲットアドレスを予測するために使
用されている。即ち、このターゲットアドレスは予め計
算され(予測され)且つバッファ17内に格納される。
従って、無条件分岐がとられる場合、又は条件付き分岐
命令に遭遇した場合には、次の(逐次的なものではな
い)命令に対するアドレスが既に知られており且つ対応
する実行ユニット(浮動小数点又は整数)によって使用
するために使用可能である。
【0029】ユニット18によってフェッチされること
に加えて、該命令は、又、デコードされ且つ発行され
る、即ちディスパッチされる。例えば、ロード/ストア
命令が実行及びメモリアドレス計算のためにロード/ス
トアユニット22へ発行され且つスケジューリングのた
めにメモリ制御ユニットなどへ発行される。ある場合に
は、整数ユニット21を、メモリアドレス計算を行うた
めに使用することが可能である。例えば加算(AD
D)、乗算(IMUL)、移動(MOV)などの整数命
令も、フェッチ/デコード/発行ユニット18によって
整数ユニット21へ発行される。浮動小数点ユニット2
0はそれに関して実行を行うためにユニット18から発
行された浮動小数点命令を受取る。浮動小数点ユニット
20は実行ユニット27(図4)を有している。FPU
20は64ビットインターフェースを具備する8個の8
0ビットレジスタを有しており且つ並列的な実行を行う
ことが可能である。例示的なインテルアーキテクチャ浮
動小数点ユニット20はx87命令セットを使用し且つ
IEEE標準754と適合性を有している。ロード/ス
トアユニット22はメモリサブシステムに亘ってのデー
タの一貫性を確保するスヌープ即ち詮索メカニズムを有
している。本発明は、以下に更に詳細に説明するよう
に、このスヌープ(詮索)メカニズムを利用する。
【0030】図4を参照すると、マイクロプロセサ10
の浮動小数点ユニット20のブロック図が示されてい
る。図4から理解することが可能であるように、浮動小
数点及びMMX命令は、両方共、FPU20によって実
行される。浮動小数点/MMX命令は、フェッチ/デコ
ード/発行ユニット18から発行され、そこで、それら
は浮動小数点命令であるか又はMMX命令であるかを決
定するために予めデコードされる。浮動小数点レジスタ
セット0,110及び/又はレジスタセット1,100
の使用を指定するためにこのステージにおいて付加的な
回路が設けられている。浮動小数点/MMX命令は、場
合によって、FPレジスタセット100,110内のそ
れらの対応するオペランドデータと関連している。
【0031】FP(浮動小数点)/MMXデコードユニ
ット51は、上述したように、フェッチ/デコード/発
行ユニット18から予めデコードされた命令を受取る。
浮動小数点/MMX命令は、浮動小数点/MMXデコー
ドユニット51において完全にデコードされる。次い
で、その命令は、実行ユニット27上での処理のために
ディスパッチされる前に、浮動小数点/MMX命令キュ
ー55内に格納される。ディスパッチユニット24は、
FP命令キュー55からの命令が何時実行ユニット27
へ供給されるべきかを決定する。該命令は、次いで、実
行を行うために実行ユニット27へ供給される。該命令
(浮動小数点又はMMX)は、浮動小数点実行ユニット
27によって実行される。実行ユニット27は、例えば
加算、乗算、シフト、絶対値、負数値演算などの典型的
な浮動小数点演算を実行する。FP実行ユニット27の
出力は結果キュー25へ供給され、そこで実行結果がバ
ッファされる。結果キュー25からの結果データは、フ
ェッチ/デコード/発行ステージ18によって指定され
たような態様で、レジスタファイル100,110へ書
戻される。更に、さらなる処理が必要とされる場合に
は、中間結果データを、実行ユニット27,結果キュー
25又はレジスタセット100,110から直接的にデ
ィスパッチユニット24へ供給することが可能である。
マイクロプロセサは、典型的に、FPレジスタファイル
110をアップデートする浮動小数点又はMMX命令で
初期化される。浮動小数点又はMMXストア(格納)命
令は、レジスタファイル100,110からの完了した
結果をロード/ストアユニット22を介してメインメモ
リ13へ書戻す。
【0032】次に、本発明の文脈切換え技術について説
明するが、その場合に、一次的浮動小数点及び二次的レ
ジスタが実行されるタスク(浮動小数点/MMX)に依
存して指定される。
【0033】図5はそれと関連する1ビットの修正され
た/修正されていないビットフィールド101を具備す
る二次的レジスタ100を示している。二次的レジスタ
ファイル100内の各レジスタは、対応するレジスタ
(R0−R7)が修正されているか否かを表わす修正/
無修正ビット(M0−M7)が取付けられている。この
修正/無修正ビットは0へ初期化される。二次的レジス
タのうちの一つが修正されると、その対応する修正/無
修正ビットは1へセットされる。浮動小数点一次的レジ
スタファイル110も図5に示してある。二次的レジス
タファイル100及び浮動小数点一次的レジスタファイ
ル110の各々は、図1及び2に関連して上述したよう
な8個のレジスタを有している。
【0034】従って、初期化及び初期的な浮動小数点演
算期間中に、二次的レジスタファイル100及び浮動小
数点一次的レジスタファイル110はそれらのレジスタ
内において同一の情報を有しており、従って二次的レジ
スタファイルは浮動小数点一次的レジスタファイルのミ
ラーイメージである。
【0035】一次的レジスタファイル内の内容はFSA
VE/FSTENV命令上に維持され且つ二次的レジス
タファイルは、FSAVE/FSTENV命令の後のタ
スクのために使用される。例えばFRSTOR/FLD
ENVなどの回復命令が実行されると、アクティブ即ち
活性状態のレジスタファイルは一次的レジスタである。
一次的ファイルと二次的ファイルとの間での一貫性を維
持するために、一組の修正/無修正ビットが使用され
る。これらの修正/無修正ビットは、対応するレジスタ
の内容が修正されている場合(異なる場合)に使用され
る(供給される)。読取り動作がレジスタに関して行わ
れる場合に、対応する修正/無修正ビットが読取られ
る。修正/無修正ビットがクリアされると(set=
0)、一次的レジスタファイルの内容が読取られ、そう
でない場合には、二次的レジスタファイルの内容が読取
られる。
【0036】本発明は修正/無修正ビットをセット
(1)又はクリア(0)するための幾つかの規則を使用
する。
【0037】1.リセットの場合に修正/無修正ビット
をクリアする。
【0038】2.FSAVE/FSTENV命令の実行
時に修正/無修正ビットをクリアする。
【0039】3.レジスタ書込みを実施する場合に対応
するレジスタの修正/無修正ビットをセットする。
【0040】4.最後の動作がFRSTORである場合
には、修正/無修正ビットを変更することはない。
【0041】本発明は、一次的又は二次的レジスタファ
イルが最後の文脈変化、即ちFSAVE又はFRSTO
Rに依存して書込まれるべきか否かを決定する以下の規
則を使用する。
【0042】1.最後の動作がFSAVE/FSTEN
Vである場合には、二次的レジスタファイルへ書込む。
【0043】2.最後の動作がFRSTOR/FLDE
NVである場合には、一次的レジスタファイルへ書込
む。
【0044】初期化において、一次的レジスタファイル
が使用される。修正/無修正ビットの全てがクリアされ
る(set=0)。
【0045】次に、図6を参照して本発明を説明する
が、その場合に、マイクロプロセサは浮動小数点モード
で初期化され且つ浮動小数点演算の実行を開始するもの
と仮定する。上述したように、本発明は、例えば異なる
浮動小数点タスクの間、又はMMXタスクの間などの同
一の文脈内においてのタスク切換えにも適用可能であ
る。FP演算を完了した後に、タスクがMMXマルチメ
ディア演算などへスイッチされる。MMX演算は侵入性
のものであるから、プログラマ及び/又はオペレーティ
ングシステムは、FSAVE/FSTENV命令を使用
してエリア即ち区域を保存するために浮動小数点状態を
保存する。FSAVE/FSTENVが退避すると、プ
ロセサはMMX命令などの実行のために二次的レジスタ
ファイルへ切換える。即ち、FSAVE/FSTENV
命令の後に、本プロセサは二次的レジスタファイルのみ
をアップデートし且つ一次的レジスタファイルをアップ
デートすることはない。本プロセサは二次的レジスタフ
ァイルのみをアップデートし、従って浮動小数点演算の
状態は、浮動小数点一次的レジスタ110において不変
のままである。この様に、マイクロプロセサは、MMX
/浮動小数点演算のために二次的レジスタファイル10
0を利用する一方、さらなる使用のために、レジスタフ
ァイル110内に浮動小数点/MMX演算の状態を維持
すること即ち保存することが可能である。以下に更に詳
細に説明するように、タスクが浮動小数点演算へ復帰す
ると、メモリサブシステムからの状態情報を検索するこ
との必要性なしに、演算を再開するために一次的レジス
タファイル110からの浮動小数点状態を使用する(本
明細書においては、「メモリサブシステム」とは、メイ
ンメモリ及びメモリ制御器、中間キャッシュ格納部及び
キャッシュ制御器のことを意味する)。
【0046】又、FSAVE/FSTENV命令に対応
するアドレスがスヌープアドレスレジスタ120内に保
存され、該レジスタは有効ビットフィールド「V」12
1を有している。アドレスがFSAVE/FSTENV
命令に従って保存されると、有効ビットがターンオンさ
れる(set=1)。更に、ロード/ストアユニット2
2へ信号が送られ、FSAVE/FSTENVアドレス
に対応するアドレスをスヌープヒットのためにモニタさ
せる。スヌープヒットが発生すると、保存したアドレス
の有効ビット「V」がクリアされ(set=0)、その
ことは、保存されているレジスタファイルの内容(この
場合には、一次的レジスタ110)が無効であり且つ状
態情報がメモリから検索されねばならないことを表わ
す。又、FSAVE/FSTENVアドレスに対応する
アドレスの一致に対して全ての格納動作をモニタする。
アドレス保存に対してストア即ち格納を実施すると、有
効ビットがset=0となり、この場合にも、状態情報
が修正されており且つメモリから回復されねばならない
ことを表わす。
【0047】FSAVE/FSTENV命令に対応する
格納されているエリア(区域)保存アドレスに対する有
効ビットを制御するために本発明によって以下の規則が
使用される。
【0048】1.FSAVE/FSTENV命令が実行
された後に有効ビットをセット。
【0049】2.一次的レジスタの内容が修正されてい
ない場合には、FRSTOR/FLDENV命令を実行
した後に有効ビットをクリア。
【0050】前述したメカニズムは、本発明のマイクロ
プロセサ上で稼動するソフトウエアに対するプログラム
の一体性即ち信頼性を与えている。本発明は、通常、メ
モリサブシステムからの状態情報を格納する必要性を取
除くことによって、保存及び回復機能を最適化させる。
なぜならば、プログラムアプリケーションは保存区域を
直接的に修正することは稀であることが知られているか
らである。プログラムが保存区域を修正する場合には、
アプリケーションにペナルティが課され且つメモリサブ
システム内の対応する保存区域から情報を獲得せねばな
らない。従って、浮動小数点状態は、時間の大部分にお
いて一次的浮動小数点レジスタファイル110から検索
することが可能であり、それにより、全体的なプロセサ
の性能を著しく増加させる。
【0051】この点において、浮動小数点状態情報がメ
モリサブシステム(保存区域)へ保存され且つ凍結され
た一次的レジスタファイル110内に維持される。従っ
て、入力してくるMMXタスク/サブルーチンは、マル
チメディア命令又は異なる文脈からのFP命令のために
二次的レジスタファイル100を使用することが可能で
ある。MMXタスクが二次的レジスタへ書込みを行う場
合に、対応する修正/無修正ビットがセットされる。F
SAVE/FSTENVエリア(区域)に対応するスト
ア(格納)命令は通常の格納命令と同一のパスをとる。
【0052】MMXタスクは、通常、MMX演算を実施
する前に、MMXレジスタをロードする。MMXタスク
がレジスタロード動作を実施すると、フィールド101
内の修正/無修正ビットはset=1となり、二次的レ
ジスタファイル100内の関連するレジスタが修正され
且つ一次的浮動小数点レジスタファイル内の同一のレジ
スタとは異なるものであることを表わす。即ち、二次的
レジスタファイル100のレジスタR0が修正される
と、フィールド101内のそれと関連するビットM0は
1にセットされる。しかしながら、一次的レジスタファ
イル110のレジスタR0はその修正されない状態に維
持され、即ちそれは、FSAVE/FSTENVが実行
された時の状態のままである。
【0053】次に、図7を参照して、MMXタスクが終
了し且つ浮動小数点タスクが再開される状態について説
明する。浮動小数点状態は、FRSTOR/FLDEN
V命令を実行することによって回復される。FRSTO
R/FLDENVが退避される(完了する)前に、スヌ
ープヒット(snoop hit)又は保存区域内の任
意のアドレスに対するストア(格納)動作(FSAVE
/FSTENV)が発生すると、FRSTOR/FLD
ENV命令の後の(それより若い)命令の全てがフラッ
シュされ且つ再発行される。この場合には、前の状態は
メモリサブシステムから回復される。なぜならば、保存
区域内の情報は無効となるからである(ストア(格納)
又はスヌープヒットが発生し、データ/命令が修正され
ていることを表わす)。FRSTOR/FLDENVに
対応するアドレスが保存区域アドレスFSAVE/FS
TENV(アプリケーション/タスクが前に保存した状
態を回復することを確保するため)とマッチングされ、
且つ一致が存在し且つ保存区域アドレスが有効(Vビッ
トがセット)であると、FP状態は、MMX演算期間中
に維持されていた一次的浮動小数点レジスタファイル1
10から回復することが可能である。しかしながら、ア
ドレスが一致しない場合には、FRSTOR/FLDE
NVに対応するアドレスにおけるメモリサブシステムか
らのロード動作が実施されてFP状態を回復する。
【0054】スヌープヒット又は格納動作がメモリ内の
保存区域に対して発生した場合には、浮動小数点/MM
X状態がメモリサブシステムから回復される。本発明に
よってスヌープメカニズムを設けることは、何ら付加的
な犠牲又はオーバーヘッドを発生するものではない。な
ぜならば、今日入手可能なマイクロプロセサのほとんど
は、既に、スヌープ能力を有しているからである。スヌ
ープメカニズムは、基本的に、スヌープレジスタ120
内の第一アドレスがFSAVE/FSTENV命令のア
ドレスと一致するか否かを決定するレンジ比較器などを
有している。有効ビットに加えて、関連するレコードも
格納され、それはオペランド長が16ビットか又は32
ビットかを表わす。
【0055】図7に示されているように、メモリサブシ
ステムからのロード操作は、メモリ保存区域から一次的
FPレジスタファイルへ復帰させる。一次的レジスタフ
ァイルを復帰した後に、FPタスクは一次的浮動小数点
レジスタファイル110のみをアップデートする。又、
一次的レジスタファイルを復帰すると、フィールド10
1における修正/無修正ビット及びビットフィールド1
21における有効ビットがクリアされる。全ての読取り
動作が一次的レジスタから行われ且つ全ての書込み動作
が一次的レジスタファイルに対して実施される。FRS
TOR/FLDENV(より若いもの)の後に発生する
全ての浮動小数点演算はFRSTOR/FLDENV命
令に依存し且つ一次的レジスタファイルを使用する。
【0056】オペレーティングシステムが浮動小数点命
令からMMX演算へタスクを切換えると(図8)、オペ
レーティングシステム即ちOSは、FSAVE/FST
ENV命令を実行させ、それは前述した如くFP状態を
保存する。保存区域のアドレスが、図8に示したよう
に、スヌープ(詮索)/ストア(格納)モニタ動作を行
うためにレジスタ120内にストア即ち格納される。
【0057】MMXタスクは、通常、MMX操作を実施
する前にMMXレジスタをロードする。しかしながら、
MMXタスクが保存又は読取り・修正・書込み動作(P
OR、PAND)などをMMXレジスタをアップデート
する前に実施すると、二次的レジスタ100の修正/無
修正ビット(フィールド101)が、そのレジスタが修
正されているか否か(ビット=1)であるか否かを決定
するために比較、即ちテストされる。そうでない場合に
は、一次的レジスタファイル110からの対応するレジ
スタの内容が計算のために使用される。より詳細に説明
すると、二次的レジスタファイル100のレジスタR0
に対するMMX保存操作が発生すると、本発明は、修正
/無修正ビットM0をテストする。M0がset(セッ
ト)=0(無修正)であると、対応する一次的レジスタ
R0からのデータ/命令が使用される。タスクが浮動小
数点演算からMMXへスイッチ即ち切換わると、一次的
浮動小数点レジスタファイルに対するアップデートが終
了され、浮動小数点レジスタ(保存区域)の一体性が維
持される。より詳細に説明すると、二次的レジスタファ
イル内の特定のレジスタに対応する修正/無修正ビット
が修正されない場合には、一次的レジスタファイル内の
対応するレジスタの内容がMMX保存操作のために使用
される。しかしながら、修正/無修正ビットがset=
1であると、そのことはデータが修正されていることを
表わし、二次的レジスタの内容がMMX保存操作のため
に使用される。これは、修正された二次的レジスタに対
応する一次的レジスタファイル内のデータが誤っている
という事実に起因するものである。即ち、二次的レジス
タ内の修正されたデータは最も現在のデータであり、一
方一次的レジスタ内の対応するデータは古いものであ
る。この様に、情報が、一次的レジスタファイルから
か、又は二次的レジスタファイルから、二次的レジスタ
ファイル内の情報の修正/無修正ステータスに依存し
て、選択的に使用される。
【0058】ある場合には、何ら中間的な格納命令(F
RSTOR/FLDENV)なしで、逐次的な、即ち連
続する保存命令(FSAVE/FSTENV)が存在す
る可能性がある。本発明は全ての場合において動作する
完全な解決法であるので、この可能性についても対処せ
ねばならない。
【0059】図9に示したように、現在のタスクは二次
的レジスタファイル100を使用している。プロセサが
FSAVE/FSTENV命令を実行すると、前に説明
した規則に従って、最後のFSAVE/FSTENV命
令以来中間的なFRSTOR/FLDENVが存在した
か否かを判別する。そうでない場合には、プロセサは、
各二次的レジスタの修正/無修正ビットをチェックす
る。それがセットされている場合には(1)、プロセサ
は修正された二次的レジスタの内容を対応する一次的レ
ジスタへ保存する。この転送は、マイクロコードを使用
して実行することが可能であり、それはフィールド10
1内の修正/無修正ビットのステータスをチェックす
る。又、この二つのレジスタファイル間の転送は典型的
な浮動小数点型の転送(マイクロコードで実現される)
ではないので、浮動小数点ALUにおける操作(演算)
は、一つのレジスタファイル(例えば、二次的ファイル
100)から別のレジスタファイル(例えば、一次的フ
ァイル110)への1対1の転送を実施するために定義
される。
【0060】図10はタスク(FP又はMMX)が二次
的レジスタファイルを使用して実行している場合の状態
を示している。二つの影線を付けたレジスタが示されて
おり、それらはセットされた(1)である対応する修正
/無修正ビットを有していることを理解することが可能
である。図11に示したように、プロセサがFSAVE
/FSTENV命令を実行すると、修正された二次的レ
ジスタが対応する一次的レジスタへ転送される。例え
ば、図5を図9,10,11と関連して検討すると、二
次的レジスタR2及びR5が修正されているものとして
指定されている場合(即ち、修正/無修正ビットM2及
びM5がset=1に設定されている)、保存操作(F
SAVE/FSTENV)が実行されると、これらの修
正されたレジスタR2及びR5は二次的レジスタファイ
ル100から一次的レジスタファイル110へ転送され
る(図11)。これらの修正されたレジスタの内容を二
次的レジスタファイルからコピーした後に、全ての修正
/無修正ビットがクリアされ、FSAVE/FSTEN
V命令内にエンコードされているアドレスに対する有効
ビット121がセットされ、且つFSAVE/FSTE
NV命令に対応するアドレスが保存される。この点にお
いて、本発明は、タスクが一次的レジスタ110を使用
して開始することが可能であるようにレジスタをリセッ
トしている。この様に、最も現在のデータを包含する修
正されたレジスタが一次的レジスタへ保存され、FSA
VE/FSTENV命令(それは一次的レジスタファイ
ルの状態を保存する)は最も現在のデータを有してい
る。即ち、二次的レジスタファイルからの修正されたデ
ータ(現在のタスクが二次的レジスタファイルに関して
実行されているので、それは最もアップツーデート即ち
最近のデータである)が一次的レジスタファイル内に格
納される。FSAVE/FSTENV命令が実行される
と、一次的レジスタファイルがメモリ保存区域内に格納
される。
【0061】次いで、図12に示したように、一次的レ
ジスタファイルを使用して新たなタスク(FP又はMM
X)が開始する。プロセサが別のFSAVE/FSTE
NV命令を実行すると、二次的レジスタファイルからの
修正されたレジスタが一次的レジスタファイル内にコピ
ーされ且つ本プログラムは二次的レジスタファイルへの
書込みを継続して行う。このことは、一次的レジスタフ
ァイルがタスクの切換え時(一次的レジスタファイルへ
の切換え)において現在の内容を有するものであること
を確保する。修正/無修正ビットの全てがクリアされ
る。FSAVE/FSTENV命令に対応するアドレス
が保存され且つその有効ビットがターンオンされる
(1)。
【0062】図13を参照すると、プロセサがFRST
OR/FLDENV命令を実行し、且つFRSTOR/
FLDENV命令のアドレスが最後のFSAVE/FS
TENV命令に対応するアドレスと一致し、且つその有
効ビットがターンオンされると(即ち保存区域が修正さ
れていない)、プロセサは一次的レジスタファイルへス
イッチする。その有効ビットがリセットされる。一次的
レジスタファイルの内容は、最後のFSAVE/FLD
ENV命令が実行された時に存在していたものと同一で
あり、即ち一次的レジスタは保存区域と同一である。
【0063】プロセサが2番目のFRSTOR/FLD
ENVを実行し且つ最後のFSAVE/FSTENVに
対応するアドレスがFRSTOR/FLDENV命令の
アドレスと一致し且つレジスタのうちの何れもが修正さ
れていない場合には、プロセサは、一次的レジスタを継
続して使用し且つFRSTOR/FLDENV命令をN
OP(操作なし)と考える。この場合には、一次的レジ
スタ110は保存区域に対応する。一次的レジスタが修
正されている場合には、前のFSAVE/FSTENV
命令に対応するレジスタの内容が喪失され且つプロセサ
はメモリサブシステムから一次的レジスタファイルの内
容を回復せねばならない。この場合には、有効ビット1
21もリセットされる。
【0064】図15A乃至15Cを参照して、本発明の
動作を、本発明によって実現されるプロセスを表わすフ
ローチャートを使用して更に詳細に説明する。注意すべ
きことであるが、説明の便宜上、この説明は浮動小数点
演算とMMX演算との間の文脈切換えの例を使用する。
しかしながら、本プロセスは例えば異なる浮動小数点文
脈の間などの任意のその他の文脈の間の切換えに適用す
ることが可能である。ステップ1において、本プログラ
ムが開始され、且つステップ2において初期化され、そ
れは浮動小数点命令がレジスタをアップデートする場合
に一次的浮動小数点レジスタ110のみをアップデート
させるためにレジスタファイルを初期化させ、且つ二次
的レジスタファイル100のフィールド101内の修正
/無修正ビットを0へクリアさせること(set=0)
を包含している。説明の便宜上、実行されるべき現在の
タスクが浮動小数点演算であると仮定する。ステップ3
において、浮動小数点タスクは一次的レジスタファイル
110のみを使用して実行される。次いで、ステップ4
において、MMX演算へのタスク切換えが発生すべきか
否かが判別される。そうでない場合には、プロセスはス
テップ3へループバックし、且つプロセサは浮動小数点
タスクの実行を継続して行う。しかしながら、ステップ
4において、MMX演算へのタスクの切換えが発生すべ
きであることが判別されると、ステップ5において、F
SAVE/FSTENV命令が実行されて、一次的レジ
スタファイル100によって反映された状態で浮動小数
点状態の状態を保存する。MMX演算は侵入的なもので
あり、従ってプログラマ及び/又はオペレーティングシ
ステムは浮動小数点状態を保存区域へ保存する。
【0065】FSAVE/FSTENV命令が実行する
と、プロセサは二次的レジスタファイル100へスイッ
チし且つ保存区域を維持するために一次的レジスタファ
イル110をアップデートすることはない(ステップ
6)。ステップ7において、一次的レジスタの状態が格
納されているメモリ内の保存区域のアドレスがレジスタ
120内に保存され且つフィールド121における有効
ビット「V」がset=1にセットされる。次いで、ス
テップ8が信号をロード/ストアユニット22へ送り、
該ユニットは、スヌープ(詮索)操作をして、レジスタ
120内の保存したアドレスに関する動作を開始させ
る。一般的に、MMXタスクはレジスタR0−R7をM
MX演算を実行する前に、二次的レジスタファイル10
0内にロードする。ステップ9において、二次的レジス
タファイルがロードされ、且つフィールド101内の対
応する修正/無修正ビットをset=1へセットし、ロ
ードされたレジスタがその前の内容に関して修正されて
いることを表わす。次いで、MMXタスクがステップ1
0において実行される。
【0066】次いで、ステップ11において、浮動小数
点(FP)演算への文脈切換えが発生すべきか否かが判
別される。そうでない場合には、プロセスはステップ1
0へループバックすることによってMMXタスクを継続
して行う。しかしながら、浮動小数点タスクへの文脈切
換えが発生すべき場合には、前の浮動小数点状態が回復
されねばならない。即ち、一次的レジスタファイルは前
の浮動小数点タスクが終了した時に存在していた状態へ
復帰されねばならない。FRSTOR/FLDENV命
令がステップ12において実行されて前に保存したFP
状態を回復する。本発明は、ステップ13において、ス
ヌープヒットが保存区域に対して発生したか、又は格納
命令が該保存区域へアクセスしたか否かを有効ビット1
21をチェックすることによって判別する。そのビット
がset=0にセットされている場合には、スヌープヒ
ット又はストア(格納)が保存区域に対して発生してお
り且つFRSTOR/FLDENV命令が実行された以
後に発行された全ての命令がフラッシュされ且つ再発行
されねばならない(ステップ16)。ステップ17にお
いて、保存区域が修正されているので、一次的レジスタ
はメモリサブシステムから回復される。ステップ13に
おいて、スヌープヒット又はストア(格納)操作が保存
区域に対して発生しなかったことが判別された場合に
は、ステップ14は、レジスタ120における保存区域
アドレスがFRSTOR/FLDENV命令においてエ
ンコードされているアドレスと一致しているか否かを決
定する。そうでない場合には、FP状態がメモリサブシ
ステムから回復されねばならず、且つ本プロセスはステ
ップ17へ継続する。しかしながら、保存区域及びFR
STOR/FLDENVアドレスが一致する場合には、
FP状態を、その状態が維持されている一次的レジスタ
ファイルへスイッチすることによって回復することが可
能であり、それにより必要とされるCPUサイクルの数
を最小とさせる(ステップ15)。ステップ15及び1
7に続いて、二次的レジスタファイルのフィールド10
1における修正/無修正ビット及び有効ビット121が
ステップ18においてクリアされる(set=0)。浮
動小数点状態が回復された後に、本プロセサは、ステッ
プ19において浮動小数点タスクを実行し且つ一次的レ
ジスタファイル110のみをアップデートする。
【0067】次いで、ステップ20は、MMXタスクへ
のスイッチバックが発生すべきか否かを決定する。そう
でない場合には、本プロセスは、ステップ19へループ
バックし且つ浮動小数点タスクの処理を継続して行う。
MMX(又は別の文脈)への文脈切換えが発生すべき場
合には、ステップ21が、FSAVE/FSTENV命
令を実行することによって浮動小数点状態を保存し、そ
れは一次的レジスタファイルの状態をメモリ内の保存区
域へ保存する。該保存区域のアドレスがステップ22に
おいてレジスタ120内に格納され、従ってスヌープ/
ストア操作のモニタ動作が発生することが可能である。
又、ステップ22において、フィールド121内の有効
ビットが論理1へセットされる。本プロセサは、次い
で、二次的レジスタファイル100へスイッチし且つ保
存区域を維持するために一次的レジスタファイル110
をアップデートすることを終了する(ステップ23)。
【0068】次いで、ステップ24において、MMX保
存操作又は読取り・修正・書込み(RMW)操作が、二
次的レジスタがMMXタスクによってロードされる前に
実現されるか否かを決定する。MMXタスクがその通常
の態様で動作し(即ち、保存又はRMWがレジスタのロ
ーディングの前に発生することはない)、且つMMX演
算を実行する前に二次的レジスタをロードすると、本発
明プロセスはステップ28へスキップし且つ二次的レジ
スタファイルがMMXタスクによってロードされる。し
かしながら、MMXタスクが二次的レジスタファイルを
ローディングする前に保存又はRMWを実現する場合に
は、本発明プロセスはステップ25へ移行する。このス
テップは、フィールド101内の修正/無修正ビットの
何れかがset=1即ち1にセットされているか否かを
決定し、その場合には、二次的レジスタファイル100
内におけるそれらの対応するレジスタに対して修正が行
われていることを表わす。そうでない場合には、二次的
レジスタファイル100内の修正されていないレジスタ
に対応する一次的レジスタファイル110内のレジスタ
がステップ26において保存される。対応する修正/無
修正ビットがset=1即ち1にセットされている二次
的レジスタファイル内のレジスタの場合には、前の保存
またはRMW操作がそのレジスタを修正したことを表わ
し、二次的レジスタファイル100からの修正したレジ
スタの内容を保存する(ステップ27)。上述したよう
に、対応する修正/無修正ビットが1にセットされてい
る二次的レジスタ内の修正されているデータが最も現在
のデータであり且つ選択的に保存される。二次的レジス
タファイル内のデータが一次的レジスタファイル内のデ
ータと同一である場合には(修正/無修正ビットがse
t=0、即ち0にセットされている)、一次的レジスタ
ファイル内のデータが保存される。
【0069】ステップ26に続いて、本発明プロセス
は、ステップ27へ移行し、そこで、二次的レジスタフ
ァイル内の残りの修正されたレジスタ(即ち、フィール
ド101内の対応するビットを有するレジスタが1にセ
ットされている)が二次的レジスタファイルから保存さ
れる。本発明は、状態情報の選択的保存を行うことを可
能とすることを理解することが可能である。
【0070】ステップ27に続いて、MMXがステップ
28において二次的レジスタファイルをロードする。次
いで、MMXタスクがステップ29において実行され
る。次いで、ステップ30において、浮動小数点演算へ
戻す文脈切換えが行われるべきか否かが判別される。そ
うでない場合には、本プロセスはステップ29へループ
バックし且つMMXタスクの実行を継続して行う。しか
しながら、浮動小数点演算への切換えが発生すべき場合
には、本発明プロセスはステップ12へ帰り且つFRS
TOR/FLDENV命令が実行され、それにより浮動
小数点状態が回復される。
【0071】従って、本発明は、二次的レジスタファイ
ルを使用することによってFPU、MMX又はその他の
文脈状態を保存し且つ回復する場合にクロックサイクル
の数を著しく減少させることを可能とすることを理解す
ることが可能である。前の文脈の状態がその文脈のレジ
スタファイル、例えばFP、MMX(一次的、二次的レ
ジスタファイル)内に維持されるので、選択的文脈格納
を行うことが可能である。
【0072】文脈保存操作が発生すると、その状態は選
択的にメモリサブシステムへ保存される。即ち、前の文
脈における修正されたレジスタのみが保存されることを
必要とするに過ぎない(即ち、二次的レジスタファイル
内の修正されたレジスタである)。なぜならば、修正さ
れていないレジスタの保存は、既に、FSAVE命令の
実行に関連して行われているからである。この様に、バ
ストラフィック及びシステムオーバーヘッドが節約され
る。なぜならば、文脈の回復のためにアクセスする場合
のある情報のみが転送されるに過ぎないからである。
【0073】前の文脈が回復されると、本発明は、最初
に、その文脈が保存されたメモリサブシステム内の区域
に対してスヌープヒットが発生したか否かを判別するた
めのチェックを行う。スヌープヒットが発生していた場
合には、その文脈はメモリから回復されねばならない。
しかし、スヌープヒットが発生しなかった場合(それが
ほとんどの場合である)且つ前のレジスタ(一次的/二
次的)が修正されていなかった場合には、回復は、前の
文脈の操作を単に再開することによって発生することが
可能である。
【0074】別の好適実施例においては、FSAVE及
びFRSTOR命令を実行することに関連する待ち時間
が、浮動小数点及び/又はMMX状態に対するデータキ
ャッシュ内のエリア即ち区域をリザーブすることによっ
て、減少させることが可能である。このデータキャッシ
ュ内にリザーブした区域は置換されることはない。この
技術は浮動小数点状態を保存/回復するために必要とさ
れるCPUサイクル数を少なくとも12−15CPUサ
イクルへ減少させるが、それは従来のFP保存/格納操
作によって必要とされる128−250クロックサイク
ルと比較して著しく小さなものである。キャッシュは何
れの時刻においてもメインメモリ内に浮動小数点/MM
X状態を保存することはないので、サイクルが節約され
る。FRSTOR命令が実行されると、同一のデータを
キャッシュ内のリザーブした位置から回復することが可
能である。この好適実施例においては、その他の命令が
キャッシュ内のFPU/MMXリザーブ区域内に格納さ
れているデータを修正するか又は上書きすることを防止
するためのメカニズムが設けられねばならない。FPU
/MMX区域をリザーブするためにキャッシュに対して
信号を送るための特別のビット又はレジスタが必要とさ
れる。この解決方法と関連するトレードオフ即ち利益衡
量は、ソフトウエアがFPU/MMX区域をリザーブす
るためにキャッシュに対して信号を供給することが必要
とされるということである。従って、インテルプラット
フォームに対して書かれている現在の市場において存在
する現在のコードに対する向上が必要とされる。この好
適実施例の場合には別のトレードオフが存在している。
なぜならば、リザーブされた部分はその他のマイクロプ
ロセサ操作のためにそのキャッシュの部分を使用するこ
とを排除するので、キャッシュ区域が実効的に減少され
るからである。このトレードオフはほとんどの設計の場
合に許容可能なものであると思われる。なぜならば、キ
ャッシュ寸法は今日のマイクロプロセサにおいて使用さ
れている新たな技術の場合に益々大型化しているからで
ある。
【0075】以上、本発明の具体的実施の態様について
詳細に説明したが、本発明は、これら具体例にのみ制限
されるべきものではなく、本発明の技術的範囲を逸脱す
ることなしに種々の変形が可能であることは勿論であ
る。
【図面の簡単な説明】
【図1】 インテルアーキテクチャマイクロプロセサに
おける浮動小数点実行ユニットによって使用される浮動
小数点状態の種々のレジスタを示した概略ブロック図。
【図2】 マルチメディア操作のためにMMX命令によ
って浮動小数点レジスタを使用する状態を示した図1に
図示したレジスタの概略ブロック図。
【図3】 本発明の好適実施例を実現することの可能な
例示的なマイクロプロセサを示した概略ブロック図。
【図4】 図3のマイクロプロセサの浮動小数点ユニッ
トを示した概略ブロック図。
【図5】 初期化期間中における一次的浮動小数点レジ
スタファイル及び二次的レジスタファイルを示した概略
ブロック図。
【図6】 MMXタスクへの切換え期間中の一次的及び
二次的浮動小数点レジスタ及び保存区域アドレスレジス
タを示した概略図。
【図7】 MMXから浮動小数点タスクへの切換え期間
中における本発明の一次的及び二次的浮動小数点レジス
タを示した概略図。
【図8】 MMXタスクへ復帰切換え期間中の一次的及
び二次的浮動小数点レジスタを示した概略図。
【図9】 二次的レジスタファイルを使用する現在のタ
スクの場合の一次的及び二次的FPレジスタの初期条件
を示した概略図。
【図10】 現在のタスクの実行期間中にセットされて
いる修正/無修正ビットを示した概略図。
【図11】 FSAVE/FSTENV命令の後の二次
的レジスタファイルから一次的レジスタファイルへの修
正されていない情報の転送を示した概略図。
【図12】 修正/無修正ビットがクリアされ且つ第二
FSAVE/FSTENVに遭遇した後(中間に介在す
るFRSTOR/FLDENVなしで)の一次的レジス
タを使用して現在実行中のタスクの場合のタスク切換え
を示した概略図。
【図13】 FRSTOR/FLDENV命令を実行し
且つそのアドレスが最後のFSAVE/FSTENVの
アドレスと一致する場合の二次的レジスタファイルへ復
帰するタスク切換えを示した概略図。
【図14】 第二FRSTOR/FLDENV命令(中
間に介在するFSAVE/FSTENVなし)の実行し
た後で且つ直前のFSAVE/FSTENVとアドレス
が一致する場合の二次的レジスタファイルを継続して使
用するタスクを示した概略図。
【図15A】 浮動小数点演算とMMX演算などのタス
ク間の文脈切換え期間中の本発明によって実現される処
理ステップを示したフローチャート。
【図15B】 浮動小数点演算とMMX演算などのタス
ク間の文脈切換え期間中の本発明によって実現される処
理ステップを示したフローチャート。
【図15C】 浮動小数点演算とMMX演算などのタス
ク間の文脈切換え期間中の本発明によって実現される処
理ステップを示したフローチャート。
【符号の説明】
1 FPUデータレジスタファイル 2 制御レジスタ 3 ステータスレジスタ 4 データレジスタタグワード 5 命令ポインタ 6 データポインタ 7 タグフィールド 10 マイクロプロセサ 11 バスインターフェースユニット 12 システムバス 13 メインメモリ 15 L1命令キャッシュ 16 L1のデータキャッシュ 17 分岐ターゲットバッファ 18 命令フェッチ/デコードユニット 19 命令プリフェッチバッファ 20 FPU(浮動小数点ユニット) 21 整数ユニット 22 ロード/ストアユニット 23 入力/出力装置
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ナレッシュ エイチ. ソニ アメリカ合衆国, カリフォルニア 92037, ラ ホーラ, カミニト フレ スコ 8959 (72)発明者 デイビッド イサーマン アメリカ合衆国, カリフォルニア 92131, サン ディエゴ, アベニダ マグニフィコ 10232

Claims (21)

    【特許請求の範囲】
  1. 【請求項1】 第一タスクによって使用するための第一
    レジスタファイルと第二タスクによって使用するための
    第二レジスタファイルとを有するCPUにおいて、前記
    第一及び第二タスクは前記CPUによって実行されるも
    のであり、 前記第二タスクへスイッチすると前記第一タスク用の第
    一状態情報を前記第一レジスタファイル内に保存する手
    段、 前記第二タスクの実行期間中に前記第一状態情報が修正
    されたか否かを決定する手段、 前記第一状態情報が修正されていない場合には前記第一
    タスクへスイッチすると前記第一レジスタファイルから
    前記第一状態情報を回復する手段、を有することを特徴
    とするCPU。
  2. 【請求項2】 請求項1において、前記第一レジスタフ
    ァイルが複数個の第一レジスタを有しており且つ前記第
    二レジスタファイルが複数個の第二レジスタであって、
    各々が前記複数個の第一レジスタのうちの一つに対応し
    ている複数個の第二レジスタを有していることを特徴と
    するCPU。
  3. 【請求項3】 請求項2において、更に、前記第二レジ
    スタファイルにおける前記第二レジスタのうちの何れか
    が修正される場合を表示する手段を有していることを特
    徴とするCPU。
  4. 【請求項4】 請求項3において、更に、 前記第一タスクへスイッチすると前記第二タスクに対す
    る第二状態情報を保存する手段、 前記第二レジスタファイルにおける前記第二レジスタの
    うちの何れかが修正されたか否かを決定する手段、を有
    することを特徴とするCPU。
  5. 【請求項5】 請求項4において、前記第二状態情報を
    保存する手段が、前記第二レジスタファイルにおける前
    記第二レジスタのうちの何れかが修正される場合に前記
    第二レジスタファイルからの前記第二状態情報を保存す
    る手段を有していることを特徴とするCPU。
  6. 【請求項6】 請求項4において、前記第二状態情報を
    保存する手段が、更に、前記第二レジスタファイルにお
    ける前記第二レジスタのうちの修正されたものから前記
    第二状態情報を保存する手段を有しており、且つ前記第
    二レジスタのうちの修正されていないものに対応して前
    記第一レジスタからの前記第一状態情報を前記第二状態
    情報として保存する手段を有していることを特徴とする
    CPU。
  7. 【請求項7】 請求項1において、前記第一状態情報を
    保存する手段が、メモリ内の保存区域へ前記第一状態情
    報を格納することを特徴とするCPU。
  8. 【請求項8】 請求項7において、前記決定する手段
    が、 前記保存区域に対応するアドレスを格納する手段、 前記保存区域がアクセスされたか否かを決定するために
    前記第二タスク期間中に前記保存区域アドレスに関して
    詮索する手段、 前記保存区域アドレスがアクセスされる場合に前記保存
    区域アドレスに対応する有効ビットを設定する手段、を
    有することを特徴とするCPU。
  9. 【請求項9】 請求項8において、前記回復する手段
    が、前記第一状態情報が格納されているメモリ位置に対
    応する回復アドレスを有するCPU命令を有しているこ
    とを特徴とするCPU。
  10. 【請求項10】 請求項9において、前記回復手段が、
    更に、 前記保存区域がアクセスされたか否かを決定する手段、 前記保存区域アドレスが前記回復アドレスと一致するか
    否かを決定する手段、を有することを特徴とするCP
    U。
  11. 【請求項11】 請求項10において、前記第一状態情
    報が、前記保存区域がアクセスされておらず且つ前記保
    存区域アドレスが前記回復アドレスと一致する場合にの
    み前記第一レジスタファイルから回復されることを特徴
    とするCPU。
  12. 【請求項12】 データ処理システムにおいて、 第一タスクによって使用されるべき複数個の第一レジス
    タを具備する第一レジスタファイルと、各々が第二タス
    クによって使用されるべき前記第一レジスタのうちの一
    つに対応する複数個の第二レジスタを具備する第二レジ
    スタファイルとを有する少なくとも1個の実行ユニット
    を有しており、前記第一及び第二タスクが前記実行ユニ
    ットによって処理されるCPU、 バスによって前記CPUへ接続されているメモリサブシ
    ステム、 前記第二タスクへスイッチすると前記第一レジスタファ
    イル内の前記第一タスクに対する第一状態情報を保存し
    且つ前記第一状態情報を前記メモリサブシステム内の保
    存区域へ格納する手段、 前記メモリサブシステムにおける前記保存区域に対応す
    るアドレスを保存区域アドレスレジスタ内に格納する手
    段、 前記保存区域アドレスを詮索することによって前記第二
    タスクの実行期間中に前記第一状態情報が修正されたか
    否かを決定する手段、 前記保存区域内の前記第一状態情報が修正されておらず
    且つ前記保存区域アドレスが前記第一状態情報を回復す
    るために前記実行ユニットによって使用されるCPU命
    令内に含まれている回復アドレスと一致する場合に、前
    記第一タスクへスイッチすると前記第一レジスタファイ
    ルから前記第一状態情報を回復する手段、を有すること
    を特徴とするシステム。
  13. 【請求項13】 請求項12において、更に、 前記第一タスクへスイッチすると前記第二状態情報を保
    存する手段、 前記第二レジスタファイル内の前記第二レジスタのうち
    の何れかが修正されたか否かを決定する手段、を有する
    ことを特徴とするシステム。
  14. 【請求項14】 請求項13において、前記第二状態情
    報を保存する手段が、前記第二レジスタファイルにおけ
    る前記第二レジスタのうちの何れかが修正された場合に
    前記第二レジスタファイルから前記第二状態情報を保存
    するための手段を有していることを特徴とするシステ
    ム。
  15. 【請求項15】 請求項13において、前記第二状態情
    報を保存する手段が、更に、 前記第二レジスタファイルにおける前記第二レジスタの
    うちの修正したものからの前記第二状態情報を保存する
    手段、 前記第二レジスタのうちの修正されていないものに対応
    する前記第一レジスタからの前記第一状態情報を前記第
    二状態情報として保存する手段、を有することを特徴と
    するシステム。
  16. 【請求項16】 CPUによって、第一レジスタファイ
    ルを使用して第一タスクを実行し且つ第二レジスタファ
    イルを使用して第二タスクを実行する方法において、 前記第一タスクに対する第一状態情報を前記第二タスク
    へスイッチする場合に前記第一レジスタ内に保存し、 前記第一状態情報が前記第二タスクの実行期間中に修正
    されたか否かを決定し、 前記第一状態情報が修正されていない場合に、前記第一
    タスクへスイッチすると前記第一レジスタファイルから
    の前記第一状態情報を回復する、上記各ステップを有す
    ることを特徴とする方法。
  17. 【請求項17】 請求項16において、更に、 前記第一タスクへスイッチすると前記第二タスクの第二
    状態情報を保存し、 前記第二レジスタファイルにおける前記第二レジスタの
    うちの何れかが修正されているか否かを決定する、上記
    各ステップを有することを特徴とする方法。
  18. 【請求項18】 請求項17において、前記第二状態情
    報を保存するステップが、前記第二レジスタファイルに
    おける前記第二レジスタのうちの何れかが修正されてい
    る場合に前記第二レジスタファイルから前記第二状態情
    報を保存するステップを有していることを特徴とする方
    法。
  19. 【請求項19】 請求項18において、前記第二状態情
    報を保存する手段が、更に、 前記第二レジスタファイルにおける前記第二レジスタの
    うちの修正したものから前記第二状態情報を保存し、 前記第二レジスタのうちの修正されていないものに対応
    して前記第一レジスタからの前記第一状態情報を前記第
    二状態情報として保存する、上記各ステップを有するこ
    とを特徴とする方法。
  20. 【請求項20】 請求項19において、前記決定するス
    テップが、 前記保存区域に対応するアドレスを格納し、 前記保存区域がアクセスされたか否かを決定するために
    前記第二タスク期間中に前記保存区域アドレスに関して
    詮索し、 前記保存区域アドレスがアクセスされている場合に前記
    保存区域アドレスに対応する有効ビットを設定する、上
    記各ステップを有することを特徴とする方法。
  21. 【請求項21】 請求項20において、前記回復するス
    テップが、 前記保存区域がアクセスされたか否かを決定し、 前記保存区域アドレスが前記第一状態情報を回復するた
    めのCPU命令内に含まれている回復アドレスと一致す
    るか否かを決定し、 前記第一状態情報が、前記保存区域がアクセスされてお
    らず且つ前記保存区域アドレスが前記回復アドレスと一
    致する場合にのみ、前記第一レジスタファイルから回復
    される、上記各ステップを有することを特徴とする方
    法。
JP10373675A 1997-12-29 1998-12-28 デ―タ処理システムにおいてレジスタを保存し且つ回復するシステム及び方法 Pending JPH11316680A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/999298 1997-12-29
US08/999,298 US6671762B1 (en) 1997-12-29 1997-12-29 System and method of saving and restoring registers in a data processing system

Publications (1)

Publication Number Publication Date
JPH11316680A true JPH11316680A (ja) 1999-11-16

Family

ID=25546161

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10373675A Pending JPH11316680A (ja) 1997-12-29 1998-12-28 デ―タ処理システムにおいてレジスタを保存し且つ回復するシステム及び方法

Country Status (2)

Country Link
US (1) US6671762B1 (ja)
JP (1) JPH11316680A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7945766B2 (en) 2008-03-21 2011-05-17 Fujitsu Limited Conditional execution of floating point store instruction by simultaneously reading condition code and store data from multi-port register file

Families Citing this family (24)

* 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
US7434222B2 (en) * 2001-12-20 2008-10-07 Infineon Technologies Ag Task context switching RTOS
US7313797B2 (en) * 2002-09-18 2007-12-25 Wind River Systems, Inc. Uniprocessor operating system design facilitating fast context switching
US20050138340A1 (en) * 2003-12-22 2005-06-23 Intel Corporation Method and apparatus to reduce spill and fill overhead in a processor with a register backing store
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
JP2005275703A (ja) * 2004-03-24 2005-10-06 Toshiba Corp プロセッサ及びコンテキスト切り替え方法
US7089341B2 (en) * 2004-03-31 2006-08-08 International Business Machines Corporation Method and apparatus for supporting interrupt devices configured for a particular architecture on a different platform
US7500244B2 (en) * 2004-06-30 2009-03-03 Intel Corporation Adaptive algorithm for selecting a virtualization algorithm in virtual machine environments
US7308565B2 (en) * 2005-06-15 2007-12-11 Seiko Epson Corporation Saving/restoring task state data from/to device controller host interface upon command from host processor to handle task interruptions
US7606363B1 (en) 2005-07-26 2009-10-20 Rockwell Collins, Inc. System and method for context switching of a cryptographic engine
US20080256551A1 (en) * 2005-09-21 2008-10-16 Freescale Semiconductor. Inc. System and Method For Storing State Information
US20070101325A1 (en) * 2005-10-19 2007-05-03 Juraj Bystricky System and method for utilizing a remote memory to perform an interface save/restore procedure
US7500049B2 (en) * 2005-10-31 2009-03-03 Intel Corporation Providing a backing store in user-level memory
WO2009029549A2 (en) * 2007-08-24 2009-03-05 Virtualmetrix, Inc. Method and apparatus for fine grain performance management of computer systems
US7996663B2 (en) * 2007-12-27 2011-08-09 Intel Corporation Saving and restoring architectural state for processor cores
US8131982B2 (en) * 2008-06-13 2012-03-06 International Business Machines Corporation Branch prediction instructions having mask values involving unloading and loading branch history data
US10338923B2 (en) * 2009-05-05 2019-07-02 International Business Machines Corporation Branch prediction path wrong guess instruction
US8521999B2 (en) * 2010-03-11 2013-08-27 International Business Machines Corporation Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history
US8782653B2 (en) * 2010-03-26 2014-07-15 Virtualmetrix, Inc. Fine grain performance resource management of computer systems
US8677071B2 (en) * 2010-03-26 2014-03-18 Virtualmetrix, Inc. Control of processor cache memory occupancy
AU2011100191B4 (en) * 2011-02-14 2011-10-20 Spartaflex Pty Limited Flexible hose
JP5848153B2 (ja) * 2012-02-17 2016-01-27 ルネサスエレクトロニクス株式会社 信号処理装置及び半導体装置
US9231595B2 (en) 2013-06-12 2016-01-05 International Business Machines Corporation Filtering event log entries
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

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63156236A (ja) 1986-12-19 1988-06-29 Toshiba Corp レジスタ装置
US5050067A (en) * 1987-08-20 1991-09-17 Davin Computer Corporation Multiple sliding register stacks in a computer
US5142677A (en) * 1989-05-04 1992-08-25 Texas Instruments Incorporated Context switching devices, systems and methods
US5444853A (en) * 1992-03-31 1995-08-22 Seiko Epson Corporation System and method for transferring data between a plurality of virtual FIFO's and a peripheral via a hardware FIFO and selectively updating control information associated with the virtual FIFO's
US5535397A (en) * 1993-06-30 1996-07-09 Intel Corporation Method and apparatus for providing a context switch in response to an interrupt in a computer process
US5481719A (en) * 1994-09-09 1996-01-02 International Business Machines Corporation Exception handling method and apparatus for a microkernel data processing system
US5727211A (en) * 1995-11-09 1998-03-10 Chromatic Research, Inc. System and method for fast context switching between tasks
US5742791A (en) * 1996-02-14 1998-04-21 Advanced Micro Devices, Inc. Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor
US6061774A (en) * 1997-05-23 2000-05-09 Compaq Computer Corporation Limited virtual address aliasing and fast context switching with multi-set virtual cache without backmaps
US5987258A (en) * 1997-06-27 1999-11-16 Lsi Logic Corporation Register reservation method for fast context switching in microprocessors
US5928356A (en) * 1997-10-11 1999-07-27 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for selectively controlling groups of registers
US6256776B1 (en) * 1998-04-02 2001-07-03 John L. Melanson Digital signal processing code development with fixed point and floating point libraries

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7945766B2 (en) 2008-03-21 2011-05-17 Fujitsu Limited Conditional execution of floating point store instruction by simultaneously reading condition code and store data from multi-port register file

Also Published As

Publication number Publication date
US6671762B1 (en) 2003-12-30

Similar Documents

Publication Publication Date Title
US6145049A (en) Method and apparatus for providing fast switching between floating point and multimedia instructions using any combination of a first register file set and a second register file set
JPH11316680A (ja) デ―タ処理システムにおいてレジスタを保存し且つ回復するシステム及び方法
JP3637920B2 (ja) スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法
JP3424202B2 (ja) プロセッサ内で命令を発行するための方法および装置
US5835967A (en) Adjusting prefetch size based on source of prefetch address
US5692168A (en) Prefetch buffer using flow control bit to identify changes of flow within the code stream
JP3285644B2 (ja) キャッシュメモリを有するデータプロセッサ
US5835951A (en) Branch processing unit with target cache read prioritization protocol for handling multiple hits
JP3132755B2 (ja) プロセッサのアーキテクチャ状態を維持するための方法および装置
US5913048A (en) Dispatching instructions in a processor supporting out-of-order execution
US5995743A (en) Method and system for interrupt handling during emulation in a data processing system
US5732243A (en) Branch processing unit with target cache using low/high banking to support split prefetching
JPH02208729A (ja) マイクロコード式実行装置での並列動作による複数機能装置の制御
JP2002525741A (ja) 間接分岐ターゲットを計算するための方法
US5732253A (en) Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches
CA2123448C (en) Blackout logic for dual execution unit processor
EP0649086B1 (en) Microprocessor with speculative execution
US5740416A (en) Branch processing unit with a far target cache accessed by indirection from the target cache
US5870612A (en) Method and apparatus for condensed history buffer
JPH08221272A (ja) 命令キャッシュに命令をロードする方法
US5812813A (en) Apparatus and method for of register changes during execution of a micro instruction tracking sequence
US5841999A (en) Information handling system having a register remap structure using a content addressable table
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions
JP2001147856A (ja) パイプラインプロセッサにおける命令キャッシュブロックの無効化メカニズム
US6175909B1 (en) Forwarding instruction byte blocks to parallel scanning units using instruction cache associated table storing scan block boundary information for faster alignment