JPH11288372A - 二組のレジスタファイルを使用して浮動小数点命令及びマルチメディア命令の間で高速の切換えを与える方法及び装置 - Google Patents
二組のレジスタファイルを使用して浮動小数点命令及びマルチメディア命令の間で高速の切換えを与える方法及び装置Info
- Publication number
- JPH11288372A JPH11288372A JP10374316A JP37431698A JPH11288372A JP H11288372 A JPH11288372 A JP H11288372A JP 10374316 A JP10374316 A JP 10374316A JP 37431698 A JP37431698 A JP 37431698A JP H11288372 A JPH11288372 A JP H11288372A
- Authority
- JP
- Japan
- Prior art keywords
- register
- environment
- register set
- task
- state
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving 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 Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】
【課題】 マイクロプロセサにおける種々のレジスタの
状態を保存し且つ回復する改良した方法及び装置を提供
する。 【解決手段】 本発明によれば、マイクロプロセサの浮
動小数点実行ユニット内に別の浮動小数点レジスタセッ
トを付加している。従って、浮動小数点状態又は環境が
イメージとしてメモリ内に格納される場合に、それは付
加的な内部レジスタ内にコピーとして格納される。状態
又は環境が回復されるべき場合には、必要な情報は、通
常、その付加的なレジスタ内に存在しており、従ってメ
モリからイメージを再ロードすることを回避することに
よってCPUサイクルを節約している。
状態を保存し且つ回復する改良した方法及び装置を提供
する。 【解決手段】 本発明によれば、マイクロプロセサの浮
動小数点実行ユニット内に別の浮動小数点レジスタセッ
トを付加している。従って、浮動小数点状態又は環境が
イメージとしてメモリ内に格納される場合に、それは付
加的な内部レジスタ内にコピーとして格納される。状態
又は環境が回復されるべき場合には、必要な情報は、通
常、その付加的なレジスタ内に存在しており、従ってメ
モリからイメージを再ロードすることを回避することに
よってCPUサイクルを節約している。
Description
【0001】
【発明の属する技術分野】本発明は、大略、マイクロプ
ロセサにおける種々のレジスタの状態を保存し且つ回復
する方法及び装置に関するものであって、更に詳細に
は、メモリから全てのデータを回復することを必要とす
ることなしに、浮動小数点実行ユニットの状態を回復さ
せることを可能とする方法及び装置に関するものであ
る。
ロセサにおける種々のレジスタの状態を保存し且つ回復
する方法及び装置に関するものであって、更に詳細に
は、メモリから全てのデータを回復することを必要とす
ることなしに、浮動小数点実行ユニットの状態を回復さ
せることを可能とする方法及び装置に関するものであ
る。
【0002】
【従来の技術】増加されたマルチメディア能力及び機能
性に対する消費者の需要に基づいて、コンピュータ業界
は、マルチメディアコンピュータソフトウエアアプリケ
ーションの処理の助けとなる向上及び新たな技術を提供
している。一つの例は、インテルマイクロプロセサアー
キテクチャに対するマルチメディアエックステンジョン
(MMX)である。これらのMMX命令は、ソフトウエ
アベンダが、向上したマルチメディア機能を有するアプ
リケーションを作成することを可能とする能力を提供し
ている。
性に対する消費者の需要に基づいて、コンピュータ業界
は、マルチメディアコンピュータソフトウエアアプリケ
ーションの処理の助けとなる向上及び新たな技術を提供
している。一つの例は、インテルマイクロプロセサアー
キテクチャに対するマルチメディアエックステンジョン
(MMX)である。これらのMMX命令は、ソフトウエ
アベンダが、向上したマルチメディア機能を有するアプ
リケーションを作成することを可能とする能力を提供し
ている。
【0003】インテルマイクロプロセサのアーキテクチ
ャは、MMX命令が命令の計算のために浮動小数点ユニ
ット(FPU)レジスタを使用させるものである。MM
X命令は、一度実行されると、前の浮動小数点状態を上
書きする。従って、前の浮動小数点状態は、最初に、こ
の様なFP状態をメモリへ保存することなしに維持する
ことは不可能である。前の浮動小数点状態は、メモリか
らFP情報をローディングすることによって回復するこ
とが可能であり、且つ浮動小数点命令は、残存するFP
状態からの実行を継続することが可能である。インテル
MMXアーキテクチャは、浮動小数点命令が実行される
ことが許容される前に、MMX命令が蓄積する状態を空
にする(EMMS命令を実行することによって)を必要
とする。そうでない場合には、浮動小数点例外が発生す
る。換言すると、浮動小数点例外を発生することなしに
浮動小数点命令を実行することが可能となる前に、MM
X状態を消去し且つ浮動小数点状態をリセットせねばな
らない。従って、MMX状態は、EMMS命令の実行前
に、メモリ内に保存することなしに維持することは不可
能である。前のMMX状態は、メモリから情報をローデ
ィングすることによって回復することが可能であり、且
つMMX命令は残存するMMX状態から実行を継続して
行うことが可能である。しかしながら、メモリからの状
態の回復は、多数のCPUサイクルを必要とし且つシス
テム性能の観点からは非常にコスト高なものである。
ャは、MMX命令が命令の計算のために浮動小数点ユニ
ット(FPU)レジスタを使用させるものである。MM
X命令は、一度実行されると、前の浮動小数点状態を上
書きする。従って、前の浮動小数点状態は、最初に、こ
の様なFP状態をメモリへ保存することなしに維持する
ことは不可能である。前の浮動小数点状態は、メモリか
らFP情報をローディングすることによって回復するこ
とが可能であり、且つ浮動小数点命令は、残存するFP
状態からの実行を継続することが可能である。インテル
MMXアーキテクチャは、浮動小数点命令が実行される
ことが許容される前に、MMX命令が蓄積する状態を空
にする(EMMS命令を実行することによって)を必要
とする。そうでない場合には、浮動小数点例外が発生す
る。換言すると、浮動小数点例外を発生することなしに
浮動小数点命令を実行することが可能となる前に、MM
X状態を消去し且つ浮動小数点状態をリセットせねばな
らない。従って、MMX状態は、EMMS命令の実行前
に、メモリ内に保存することなしに維持することは不可
能である。前のMMX状態は、メモリから情報をローデ
ィングすることによって回復することが可能であり、且
つMMX命令は残存するMMX状態から実行を継続して
行うことが可能である。しかしながら、メモリからの状
態の回復は、多数のCPUサイクルを必要とし且つシス
テム性能の観点からは非常にコスト高なものである。
【0004】本明細書においては、「コンテクストスイ
ッチ(context switch)」、即ち「文脈
切換え」という用語は、状態を保存し且つ回復するプロ
セスのことを意味する。注意すべきことであるが、浮動
小数点/MMX状態は、あるタイプの命令を実行するた
めには保存し、次いで回復することは必要ではない。本
発明は、状態情報の喪失がコードの実行の正確さに影響
を与えるものではないような場合においては有用性が低
い場合がある。本発明は、浮動小数点/MMX状態が維
持されねばならないことがプログラマによって決定され
る場合に、浮動小数点/MMXユニットの状態を迅速に
保存し且つ格納する技術である。
ッチ(context switch)」、即ち「文脈
切換え」という用語は、状態を保存し且つ回復するプロ
セスのことを意味する。注意すべきことであるが、浮動
小数点/MMX状態は、あるタイプの命令を実行するた
めには保存し、次いで回復することは必要ではない。本
発明は、状態情報の喪失がコードの実行の正確さに影響
を与えるものではないような場合においては有用性が低
い場合がある。本発明は、浮動小数点/MMX状態が維
持されねばならないことがプログラマによって決定され
る場合に、浮動小数点/MMXユニットの状態を迅速に
保存し且つ格納する技術である。
【0005】インテルx86アーキテクチャマイクロプ
ロセサ内のFPU回路は、ユーザに対して、スタックの
ような態様でアクセスされる8個の80ビットFPUデ
ータレジスタを具備するFPUデータレジスタファイル
を提供している。該浮動小数点レジスタはプログラマの
管理下にあり且つプログラマによって使用するために提
供されている。インテルアーキテクチャは、又、16ビ
ット制御レジスタと16ビットステータスレジスタとを
提供している。データレジスタタグワードも提供されて
おり、それは8個の2ビットフィールドを有しており、
該フィールドの各々は8個のデータレジスタのうちの一
つと関連している。タグワードは、8個のデータレジス
タのうちの各々に対して空/非空ステータスを維持する
ことによって文脈切換え及びスタック性能を改善するた
めに使用される。
ロセサ内のFPU回路は、ユーザに対して、スタックの
ような態様でアクセスされる8個の80ビットFPUデ
ータレジスタを具備するFPUデータレジスタファイル
を提供している。該浮動小数点レジスタはプログラマの
管理下にあり且つプログラマによって使用するために提
供されている。インテルアーキテクチャは、又、16ビ
ット制御レジスタと16ビットステータスレジスタとを
提供している。データレジスタタグワードも提供されて
おり、それは8個の2ビットフィールドを有しており、
該フィールドの各々は8個のデータレジスタのうちの一
つと関連している。タグワードは、8個のデータレジス
タのうちの各々に対して空/非空ステータスを維持する
ことによって文脈切換え及びスタック性能を改善するた
めに使用される。
【0006】更に、インテルアーキテクチャは命令ワー
ドを包含するメモリ位置に対する命令ポインタ、及び現
在の命令(存在する場合)と関連するオペランドを包含
するメモリ位置に対するデータポインタを有している。
又、最後の命令オプコードが11ビットレジスタ内に格
納される。前述した制御レジスタ、ステータスレジス
タ、タグワード、命令ポインタ、データポインタ、オプ
コードは浮動小数点環境(ENV)を画定する。この環
境は、浮動小数点レジスタ(REG)と結合して、浮動
小数点状態を構成する。
ドを包含するメモリ位置に対する命令ポインタ、及び現
在の命令(存在する場合)と関連するオペランドを包含
するメモリ位置に対するデータポインタを有している。
又、最後の命令オプコードが11ビットレジスタ内に格
納される。前述した制御レジスタ、ステータスレジス
タ、タグワード、命令ポインタ、データポインタ、オプ
コードは浮動小数点環境(ENV)を画定する。この環
境は、浮動小数点レジスタ(REG)と結合して、浮動
小数点状態を構成する。
【0007】上述したように、インテルアーキテクチャ
マイクロプロセサがMMX命令を実行する場合に、FP
Uレジスタが命令の計算のために利用される。従って、
80ビットFPUレジスタのうちの64ビットがMMX
命令によって使用される。浮動小数点演算からMMXへ
のタスク切換えの場合に、該環境及びレジスタ状態が浮
動小数点保存(FNSAVE又はFSAVE)命令を使
用して保存される。浮動小数点ストア(格納)環境命令
(FNSTENV又はFSTENV)がメモリに対して
該環境を保存する。FNSAVE命令はメインメモリに
対して浮動小数点レジスタ状態を格納する。FNSTE
NV命令はメインメモリに対して浮動小数点環境を格納
する。浮動小数点ロード環境(FLDENV)又は浮動
小数点回復(FRSTOR)命令が実行されて、残存す
る状態情報から浮動小数点演算が再開されるべき場合
に、メインメモリから、該環境、又は環境及びレジスタ
を、それぞれ、ロードさせる。この文脈切換えは、FL
DENV及びFRSTOR命令に起因して、32乃至9
5CPUサイクルかかる場合があり、一方FNSTEN
V及びFNSAVE命令に起因する切換え時間は48乃
至151サイクル程度かかる場合がある。従って、浮動
小数点文脈を保存し且つ格納する従来の技術は、浮動小
数点演算とマルチメディア演算との間での切換え時に、
浮動小数点状態をメインメモリへ保存し、次いで該レジ
スタをそれらの前の状態へ回復させるために80乃至2
46クロックサイクルかかる場合がある。
マイクロプロセサがMMX命令を実行する場合に、FP
Uレジスタが命令の計算のために利用される。従って、
80ビットFPUレジスタのうちの64ビットがMMX
命令によって使用される。浮動小数点演算からMMXへ
のタスク切換えの場合に、該環境及びレジスタ状態が浮
動小数点保存(FNSAVE又はFSAVE)命令を使
用して保存される。浮動小数点ストア(格納)環境命令
(FNSTENV又はFSTENV)がメモリに対して
該環境を保存する。FNSAVE命令はメインメモリに
対して浮動小数点レジスタ状態を格納する。FNSTE
NV命令はメインメモリに対して浮動小数点環境を格納
する。浮動小数点ロード環境(FLDENV)又は浮動
小数点回復(FRSTOR)命令が実行されて、残存す
る状態情報から浮動小数点演算が再開されるべき場合
に、メインメモリから、該環境、又は環境及びレジスタ
を、それぞれ、ロードさせる。この文脈切換えは、FL
DENV及びFRSTOR命令に起因して、32乃至9
5CPUサイクルかかる場合があり、一方FNSTEN
V及びFNSAVE命令に起因する切換え時間は48乃
至151サイクル程度かかる場合がある。従って、浮動
小数点文脈を保存し且つ格納する従来の技術は、浮動小
数点演算とマルチメディア演算との間での切換え時に、
浮動小数点状態をメインメモリへ保存し、次いで該レジ
スタをそれらの前の状態へ回復させるために80乃至2
46クロックサイクルかかる場合がある。
【0008】通常、FNSAVE及びFRSTOR命令
は、FNSTENV及びFLDENV命令のように、互
いに関連して使用される。注意すべきことであるが、F
NSAVE、FRSTOR、FNSTENV、FLDE
NV命令は、1996年におけるMMX命令のコンピュ
ータ業界への導入よりかなり前にインテル命令セットに
よって使用されている。これらの命令はMMX命令の実
行に対して重要なものとなる。なぜならば、MMXコー
ドは、インテル浮動小数点命令と浮動小数点レジスタの
使用を分かち合うからである。
は、FNSTENV及びFLDENV命令のように、互
いに関連して使用される。注意すべきことであるが、F
NSAVE、FRSTOR、FNSTENV、FLDE
NV命令は、1996年におけるMMX命令のコンピュ
ータ業界への導入よりかなり前にインテル命令セットに
よって使用されている。これらの命令はMMX命令の実
行に対して重要なものとなる。なぜならば、MMXコー
ドは、インテル浮動小数点命令と浮動小数点レジスタの
使用を分かち合うからである。
【0009】
【発明が解決しようとする課題】従って、最小数のクロ
ックサイクルを使用して浮動小数点演算とマルチメディ
ア演算との間の切換え時に、浮動小数点レジスタファイ
ルの状態を迅速に且つ効率的に保存し且つ回復すること
の可能な技術を提供することが望まれている。
ックサイクルを使用して浮動小数点演算とマルチメディ
ア演算との間の切換え時に、浮動小数点レジスタファイ
ルの状態を迅速に且つ効率的に保存し且つ回復すること
の可能な技術を提供することが望まれている。
【0010】本発明は、以上の点に鑑みなされたもので
あって、上述した如き従来技術の欠点を解消し、最小数
のクロックサイクルを使用して、浮動小数点演算とマル
チメディア演算との切換え時に、迅速且つ効率的に浮動
小数点レジスタファイルの状態を保存し且つ格納するこ
との可能な方法及び装置を提供することを目的とする。
あって、上述した如き従来技術の欠点を解消し、最小数
のクロックサイクルを使用して、浮動小数点演算とマル
チメディア演算との切換え時に、迅速且つ効率的に浮動
小数点レジスタファイルの状態を保存し且つ格納するこ
との可能な方法及び装置を提供することを目的とする。
【0011】
【課題を解決するための手段】従来技術と対比して、本
発明は、浮動小数点演算とマルチメディア演算との間で
のタスクを切換える場合に、例えばFNSAVE及びF
RSTORなどの保存及びロード命令の実行と関連する
待ち時間を減少させることを可能とした装置及び方法を
提供している。
発明は、浮動小数点演算とマルチメディア演算との間で
のタスクを切換える場合に、例えばFNSAVE及びF
RSTORなどの保存及びロード命令の実行と関連する
待ち時間を減少させることを可能とした装置及び方法を
提供している。
【0012】広義には、本発明は、CPUにおける付加
的な浮動小数点レジスタセットを提供している。この様
に、CPUが浮動小数点状態又は環境をイメージとして
メモリ内に格納する場合に、それは、又、その状態又は
環境を付加的な内部レジスタ内にコピーとして格納す
る。CPUがその状態又は環境を回復することを必要と
する場合には、その必要な情報(データ及び/又は命
令)を該付加的なレジスタから回復し、従ってメインメ
モリからそのイメージを再ロードすることを回避するこ
とによってCPUサイクルを節約している。本明細書に
おいては、「オンチップイメージ」という用語は、付加
的な内部レジスタセット内に格納されたものとしての状
態情報のことを意味するために使用し、且つ「メモリイ
メージ」という用語は、メインメモリ内に格納されたも
のとしての状態情報のことを意味するものとして使用す
る。
的な浮動小数点レジスタセットを提供している。この様
に、CPUが浮動小数点状態又は環境をイメージとして
メモリ内に格納する場合に、それは、又、その状態又は
環境を付加的な内部レジスタ内にコピーとして格納す
る。CPUがその状態又は環境を回復することを必要と
する場合には、その必要な情報(データ及び/又は命
令)を該付加的なレジスタから回復し、従ってメインメ
モリからそのイメージを再ロードすることを回避するこ
とによってCPUサイクルを節約している。本明細書に
おいては、「オンチップイメージ」という用語は、付加
的な内部レジスタセット内に格納されたものとしての状
態情報のことを意味するために使用し、且つ「メモリイ
メージ」という用語は、メインメモリ内に格納されたも
のとしての状態情報のことを意味するものとして使用す
る。
【0013】本発明は、二つのレジスタセット(又はそ
の組合わせ)のうちの何れかが、与えられた時刻におい
て、作業用のセットとなることを可能とし、他方がシャ
ドーレジスタセットとなる。メモリ書込みサイクルの全
てがモニタされて(即ち、スヌープ(詮索)されて)、
オンチップイメージ内の情報が最後の格納操作以来変更
されているか否かを決定する。変更されている場合に
は、メモリイメージは、文脈切換えが発生する時にロー
ドされる。
の組合わせ)のうちの何れかが、与えられた時刻におい
て、作業用のセットとなることを可能とし、他方がシャ
ドーレジスタセットとなる。メモリ書込みサイクルの全
てがモニタされて(即ち、スヌープ(詮索)されて)、
オンチップイメージ内の情報が最後の格納操作以来変更
されているか否かを決定する。変更されている場合に
は、メモリイメージは、文脈切換えが発生する時にロー
ドされる。
【0014】一般的に、単一CPUシステムにおいて
は、オンチップメモリ書込み操作がCPUから発生され
るメモリ書込みを参照する。注意すべきことであるが、
バスマスター装置が単一CPUシステムにおけるメモリ
書込み動作を発生することが可能である。しかしなが
ら、CPU以外のバスマスターから発生されるメモリ書
込み操作は、オンチップメモリ書込みとして言及される
ことはない。
は、オンチップメモリ書込み操作がCPUから発生され
るメモリ書込みを参照する。注意すべきことであるが、
バスマスター装置が単一CPUシステムにおけるメモリ
書込み動作を発生することが可能である。しかしなが
ら、CPU以外のバスマスターから発生されるメモリ書
込み操作は、オンチップメモリ書込みとして言及される
ことはない。
【0015】シャドー型レジスタファイルはMMX又は
別の文脈へのタスク切換えが発生する場合に浮動小数点
レジスタファイルの状態を「そのままとして」維持する
ことを可能とする。本発明は、又、環境及びレジスタダ
ーティビットと共に、環境及びレジスタポインタビット
を提供する。これらのビットは、四つの1ビットレジス
タ内に格納される。
別の文脈へのタスク切換えが発生する場合に浮動小数点
レジスタファイルの状態を「そのままとして」維持する
ことを可能とする。本発明は、又、環境及びレジスタダ
ーティビットと共に、環境及びレジスタポインタビット
を提供する。これらのビットは、四つの1ビットレジス
タ内に格納される。
【0016】本発明のアーキテクチャにおいては二組の
レジスタが存在しており、即ちレジスタセット0とレジ
スタセット1である。各セットは、それ自身の浮動小数
点環境(ENV)レジスタ及び浮動小数点及び/又はマ
ルチメディア命令、即ちMMXに対して8個の80ビッ
トレジスタ(REG)を有している。作業用レジスタセ
ットは、プロセサによってアクセスされている何れかの
セットから環境レジスタ(制御、ステータス、タグ、命
令/データポインタ)及び浮動小数点レジスタを構成す
る。プログラマに対して、該作業用レジスタセットは目
に見える浮動小数点又はMMX状態である。シャドー型
レジスタセットは、作業用レジスタセット内にはない環
境レジスタ及び浮動小数点データレジスタを構成する。
シャドー型レジスタセットの全体又は一部は最も最近の
FNSAVE又はFSTENV命令に応答してオンチッ
プイメージを格納するために使用される。換言すると、
オンチップイメージはシャドー型レジスタセットのサブ
セットである。
レジスタが存在しており、即ちレジスタセット0とレジ
スタセット1である。各セットは、それ自身の浮動小数
点環境(ENV)レジスタ及び浮動小数点及び/又はマ
ルチメディア命令、即ちMMXに対して8個の80ビッ
トレジスタ(REG)を有している。作業用レジスタセ
ットは、プロセサによってアクセスされている何れかの
セットから環境レジスタ(制御、ステータス、タグ、命
令/データポインタ)及び浮動小数点レジスタを構成す
る。プログラマに対して、該作業用レジスタセットは目
に見える浮動小数点又はMMX状態である。シャドー型
レジスタセットは、作業用レジスタセット内にはない環
境レジスタ及び浮動小数点データレジスタを構成する。
シャドー型レジスタセットの全体又は一部は最も最近の
FNSAVE又はFSTENV命令に応答してオンチッ
プイメージを格納するために使用される。換言すると、
オンチップイメージはシャドー型レジスタセットのサブ
セットである。
【0017】スヌープ(snoop)アドレスレジスタ
が提供され、それは最も最近のFNSAVE又はFST
ENV命令からのメモリイメージのアドレスを保持す
る。環境ポインタは、常に、作業用レジスタセットのE
NVレジスタに対してポイントし、即ち、そのビットは
環境レジスタセット1に対してset=1にセットされ
且つ環境レジスタセット0に対してset=0にセット
される。レジスタポインタビットは、常に、作業用レジ
スタセットのREGレジスタ、即ち浮動小数点レジスタ
R0−R8に対してポイントする。環境ダーティビット
はシャドー型レジスタセットの環境レジスタのステータ
スを追従し、一方レジスタダーティビットはシャドー型
レジスタセットのレジスタのステータスをトラッキング
する。
が提供され、それは最も最近のFNSAVE又はFST
ENV命令からのメモリイメージのアドレスを保持す
る。環境ポインタは、常に、作業用レジスタセットのE
NVレジスタに対してポイントし、即ち、そのビットは
環境レジスタセット1に対してset=1にセットされ
且つ環境レジスタセット0に対してset=0にセット
される。レジスタポインタビットは、常に、作業用レジ
スタセットのREGレジスタ、即ち浮動小数点レジスタ
R0−R8に対してポイントする。環境ダーティビット
はシャドー型レジスタセットの環境レジスタのステータ
スを追従し、一方レジスタダーティビットはシャドー型
レジスタセットのレジスタのステータスをトラッキング
する。
【0018】ポインタ及びダーティビットは、本発明の
デュアル(二重)レジスタセットに対するアルゴリズム
を簡単化するために使用される。FNSAVE、FRS
TOR、FNSTENV、FLDENV命令のうちの一
つが実行される場合に作業用レジスタセット及びシャド
ー型レジスタセットの両方から環境レジスタ及び浮動小
数点レジスタを選択的に採取することによって新たな作
業用レジスタセットが形成される。
デュアル(二重)レジスタセットに対するアルゴリズム
を簡単化するために使用される。FNSAVE、FRS
TOR、FNSTENV、FLDENV命令のうちの一
つが実行される場合に作業用レジスタセット及びシャド
ー型レジスタセットの両方から環境レジスタ及び浮動小
数点レジスタを選択的に採取することによって新たな作
業用レジスタセットが形成される。
【0019】本発明は、単一CPUサイクルにおける新
たな作業用レジスタセットを形成するアルゴリズムを使
用して環境及び浮動小数点レジスタを選択的に採取す
る。本発明は、又、インテルx86命令セットとの適合
性を維持する。注意すべきことであるが、本発明は、レ
ジスタセット0又は1の何れかからのレジスタファイル
と結合してレジスタセット0又は1の何れかの環境から
作業用レジスタセットを動的に形成することを可能とす
る。例えば、作業用レジスタセットは、セット0からの
環境レジスタ及びセット0からのレジスタファイル、セ
ット1からの環境レジスタ及びセット1からのレジスタ
ファイル、セット0からの環境レジスタ及びセット1か
らのレジスタファイル、又はセット1からの環境レジス
タ及びレジスタセット0からのレジスタファイルを有す
ることが可能である。
たな作業用レジスタセットを形成するアルゴリズムを使
用して環境及び浮動小数点レジスタを選択的に採取す
る。本発明は、又、インテルx86命令セットとの適合
性を維持する。注意すべきことであるが、本発明は、レ
ジスタセット0又は1の何れかからのレジスタファイル
と結合してレジスタセット0又は1の何れかの環境から
作業用レジスタセットを動的に形成することを可能とす
る。例えば、作業用レジスタセットは、セット0からの
環境レジスタ及びセット0からのレジスタファイル、セ
ット1からの環境レジスタ及びセット1からのレジスタ
ファイル、セット0からの環境レジスタ及びセット1か
らのレジスタファイル、又はセット1からの環境レジス
タ及びレジスタセット0からのレジスタファイルを有す
ることが可能である。
【0020】
【発明の実施の形態】前述したように、インテルアーキ
テクチャと適合性を有するマイクロプロセサの場合、M
MX命令は命令の計算を行うために浮動小数点ユニット
(FPU)レジスタを使用する。従って、プロセサがF
P命令を実行することからMMX命令へ又はその逆に変
化する場合に、タスクスイッチ即ちタスクの切換えが発
生する場合がある。タスク切換えは、又、種々の浮動小
数点タスクの間で発生する場合があり、その場合には、
FNSAVE命令を実行することによって前のタスクの
状態を保存せねばならず且つFRSTOR命令などによ
って前のタスクの状態を回復せねばならない。説明の便
宜上、本発明を、FP演算とMMX演算との間のタスク
切換えの例を使用して説明する。しかしながら、本発明
は、同一の文脈、例えば浮動小数点内においてのタスク
切換えをも目論んでおり、且つ別のタスクへの切換え時
に前の状態情報を保存するために必要とされるクロック
サイクル数を最小とし且つオペレーティングシステムが
第一タスクへ戻るための切換え時に第一状態を回復する
上で有用である。
テクチャと適合性を有するマイクロプロセサの場合、M
MX命令は命令の計算を行うために浮動小数点ユニット
(FPU)レジスタを使用する。従って、プロセサがF
P命令を実行することからMMX命令へ又はその逆に変
化する場合に、タスクスイッチ即ちタスクの切換えが発
生する場合がある。タスク切換えは、又、種々の浮動小
数点タスクの間で発生する場合があり、その場合には、
FNSAVE命令を実行することによって前のタスクの
状態を保存せねばならず且つFRSTOR命令などによ
って前のタスクの状態を回復せねばならない。説明の便
宜上、本発明を、FP演算とMMX演算との間のタスク
切換えの例を使用して説明する。しかしながら、本発明
は、同一の文脈、例えば浮動小数点内においてのタスク
切換えをも目論んでおり、且つ別のタスクへの切換え時
に前の状態情報を保存するために必要とされるクロック
サイクル数を最小とし且つオペレーティングシステムが
第一タスクへ戻るための切換え時に第一状態を回復する
上で有用である。
【0021】注意すべきことであるが、文脈即ちタスク
切換えは、例えばウインドウズ95、ウインドウズN
T、OS/2などのオペレーティングシステム(OS)
によって制御することも可能である。文脈切換えが所望
される場合には、オペレーティングシステムはトラップ
を発生し、それはトラップハンドラによって受取られ
る。トラップハンドラは、FNSAVE命令、FSTE
NV命令などを実行させることによって前の文脈の状態
を保存する。注意すべきことであるが、タスク切換え
は、単一の文脈内において発生することが可能である。
例えば、スイッチ即ち切換えは、浮動小数点文脈におけ
る異なるタスク間において発生することが可能である。
同様に、タスク切換えは、又、完全にMMX文脈内にお
いて発生することも可能である。
切換えは、例えばウインドウズ95、ウインドウズN
T、OS/2などのオペレーティングシステム(OS)
によって制御することも可能である。文脈切換えが所望
される場合には、オペレーティングシステムはトラップ
を発生し、それはトラップハンドラによって受取られ
る。トラップハンドラは、FNSAVE命令、FSTE
NV命令などを実行させることによって前の文脈の状態
を保存する。注意すべきことであるが、タスク切換え
は、単一の文脈内において発生することが可能である。
例えば、スイッチ即ち切換えは、浮動小数点文脈におけ
る異なるタスク間において発生することが可能である。
同様に、タスク切換えは、又、完全にMMX文脈内にお
いて発生することも可能である。
【0022】図1を参照すると、インテル命令セットを
実行し且つ本発明を実現することの可能な例示的なマイ
クロプロセサの概略ブロック図が参照番号10で大略的
に示されている。当業者にとって理解されるように、多
くの他の異なった形態のマイクロプロセサも本発明を実
現するために使用することが可能である。
実行し且つ本発明を実現することの可能な例示的なマイ
クロプロセサの概略ブロック図が参照番号10で大略的
に示されている。当業者にとって理解されるように、多
くの他の異なった形態のマイクロプロセサも本発明を実
現するために使用することが可能である。
【0023】バスインターフェースユニット(BIU)
11が、マイクロプロセサのコンポーネントをシステム
バス12とインターフェースしている。メインメモリ1
3及び種々の入力/出力装置23もバス12へ接続され
ている。I/O装置は、ディスケットドライブ、キーボ
ード、マウス、パラレルポートなどを有することが可能
である。制御、アドレス及びデータ情報がマイクロプロ
セサ10からBIU11を介してバス12上へ送信され
る。更に、メモリ13及びI/O装置23からの制御、
アドレス及びデータ信号がマイクロプロセサ10によっ
て使用するためにBIU11によって受取られる。注意
すべきことであるが、制御、アドレス及びデータ情報は
マイクロプロセサ命令、及び該マイクロプロセサ命令に
よって処理されるオペランドデータを有している。
11が、マイクロプロセサのコンポーネントをシステム
バス12とインターフェースしている。メインメモリ1
3及び種々の入力/出力装置23もバス12へ接続され
ている。I/O装置は、ディスケットドライブ、キーボ
ード、マウス、パラレルポートなどを有することが可能
である。制御、アドレス及びデータ情報がマイクロプロ
セサ10からBIU11を介してバス12上へ送信され
る。更に、メモリ13及びI/O装置23からの制御、
アドレス及びデータ信号がマイクロプロセサ10によっ
て使用するためにBIU11によって受取られる。注意
すべきことであるが、制御、アドレス及びデータ情報は
マイクロプロセサ命令、及び該マイクロプロセサ命令に
よって処理されるオペランドデータを有している。
【0024】メモリ管理は、しばしば実行アドレスと呼
ばれるオフセットアドレスを計算するアドレスモードを
使用して物理的なアドレスを決定することによって与え
られる。CPUの動作モードに依存して、該オフセット
がメモリ管理メカニズムを使用して結合されて物理的ア
ドレスを形成し、それは、実際に物理的メモリ装置をア
ドレスする。メモリ管理ユニット(MMU)(不図示)
は、典型的に、変換索引バッファ(TLB)を有してお
り、それはページング(paging)メカニズムに対
するキャッシュである。図1に示したものと同様な典型
的なマイクロプロセサにおいては、TLBは頁テーブル
キャッシュであり、それは、自動的に、最も一般的に使
用される頁テーブルエントリをプロセサ内に維持する。
アドレス計算ユニットもメモリ管理操作のために設けら
れており、且つオフセットアドレス(実行アドレス)を
計算することによって物理的アドレスを計算する。一般
的に、実行アドレスは、最大で三つの値、即ちベース、
インデックス、変位を一体的に加算することによって計
算される。ベースは、存在する場合には、その命令の実
行時における32ビット汎用レジスタのうちの一つにお
ける値である。インデックスも32ビット汎用レジスタ
のうちの一つに含まれる値である。インデックスは、加
算が行われる前に、1、2、4又は8のスケールファク
タによって最初に乗算されるという点においてベースと
は異なっている。メモリアドレス計算に加えられる3番
目のコンポーネントは変位であり、それは最大で32ビ
ットの値であって、それは命令の一部として供給され
る。
ばれるオフセットアドレスを計算するアドレスモードを
使用して物理的なアドレスを決定することによって与え
られる。CPUの動作モードに依存して、該オフセット
がメモリ管理メカニズムを使用して結合されて物理的ア
ドレスを形成し、それは、実際に物理的メモリ装置をア
ドレスする。メモリ管理ユニット(MMU)(不図示)
は、典型的に、変換索引バッファ(TLB)を有してお
り、それはページング(paging)メカニズムに対
するキャッシュである。図1に示したものと同様な典型
的なマイクロプロセサにおいては、TLBは頁テーブル
キャッシュであり、それは、自動的に、最も一般的に使
用される頁テーブルエントリをプロセサ内に維持する。
アドレス計算ユニットもメモリ管理操作のために設けら
れており、且つオフセットアドレス(実行アドレス)を
計算することによって物理的アドレスを計算する。一般
的に、実行アドレスは、最大で三つの値、即ちベース、
インデックス、変位を一体的に加算することによって計
算される。ベースは、存在する場合には、その命令の実
行時における32ビット汎用レジスタのうちの一つにお
ける値である。インデックスも32ビット汎用レジスタ
のうちの一つに含まれる値である。インデックスは、加
算が行われる前に、1、2、4又は8のスケールファク
タによって最初に乗算されるという点においてベースと
は異なっている。メモリアドレス計算に加えられる3番
目のコンポーネントは変位であり、それは最大で32ビ
ットの値であって、それは命令の一部として供給され
る。
【0025】ロード/ストア機能は、ロード/ストアユ
ニット22によって実行され、該ユニットは演算論理ユ
ニット(ALU)に関するロード及びストア命令を実行
する。ロード及びストア命令は、ロードをストリング
(LODS)、タスクレジスタをロード(LTR)、デ
ータを移動(MOV)などを包含している。ストア(格
納)命令は、タスクレジスタ格納(STR)、ストリン
グ格納(STOS)などを包含している。一般的に、ロ
ード命令はキャッシュ/メモリからデータ及び/又は命
令を検索し且つその情報をマイクロプロセサレジスタの
うちの一つの中に配置させ、一方ストア命令はデータ及
び/又は命令をマイクロプロセサレジスタからキャッシ
ュ/メモリ位置内へ配置させる。整数ユニット21はロ
ード及びストア命令に対するアドレス計算を実施するこ
とが可能である。
ニット22によって実行され、該ユニットは演算論理ユ
ニット(ALU)に関するロード及びストア命令を実行
する。ロード及びストア命令は、ロードをストリング
(LODS)、タスクレジスタをロード(LTR)、デ
ータを移動(MOV)などを包含している。ストア(格
納)命令は、タスクレジスタ格納(STR)、ストリン
グ格納(STOS)などを包含している。一般的に、ロ
ード命令はキャッシュ/メモリからデータ及び/又は命
令を検索し且つその情報をマイクロプロセサレジスタの
うちの一つの中に配置させ、一方ストア命令はデータ及
び/又は命令をマイクロプロセサレジスタからキャッシ
ュ/メモリ位置内へ配置させる。整数ユニット21はロ
ード及びストア命令に対するアドレス計算を実施するこ
とが可能である。
【0026】注意すべきことであるが、図1のマイクロ
プロセサ10は階層的メモリサブシステムを有してい
る。メモリサブシステムは、レベル1(L1)命令キャ
ッシュ15及びデータキャッシュ16を有しており、そ
れらは実行ユニット(FPU20、整数ユニット21、
ロード/ストアユニット22)に対して命令及びデータ
を供給する。オフチップレベル2(L2)キャッシュ
(不図示)が通常与えられる。L2キャッシュはメイン
メモリ13よりも一層小さいものであるが、L2キャッ
シュからプロセサによって使用される蓋然性のある情報
を検索することは、メインメモリから情報をローディン
グする場合よりも一層高速である。メインメモリ13は
メモリサブシステムにおける最後のレベルの格納部であ
る。メモリ13は最も大きな格納エリア即ち区域である
が、又、マイクロプロセサによってアクセスされるべき
最大のサイクル数を必要とする。
プロセサ10は階層的メモリサブシステムを有してい
る。メモリサブシステムは、レベル1(L1)命令キャ
ッシュ15及びデータキャッシュ16を有しており、そ
れらは実行ユニット(FPU20、整数ユニット21、
ロード/ストアユニット22)に対して命令及びデータ
を供給する。オフチップレベル2(L2)キャッシュ
(不図示)が通常与えられる。L2キャッシュはメイン
メモリ13よりも一層小さいものであるが、L2キャッ
シュからプロセサによって使用される蓋然性のある情報
を検索することは、メインメモリから情報をローディン
グする場合よりも一層高速である。メインメモリ13は
メモリサブシステムにおける最後のレベルの格納部であ
る。メモリ13は最も大きな格納エリア即ち区域である
が、又、マイクロプロセサによってアクセスされるべき
最大のサイクル数を必要とする。
【0027】より詳細に説明すると、レベル1(L1)
命令キャッシュ15は図1に示したようにマイクロプロ
セサ10内に設けられている。キャッシュ15は、ライ
トスルーモードで稼動するように、又は、より高い性能
のライトバックモードで稼動すべき形態とすることが可
能である。ライトバックモードは、不必要な外部書込み
サイクルによって発生されるバスボトルネックを取除く
ことによって、CPUコアの性能を最適化させる。ライ
トスルーキャッシュアーキテクチャは、キャッシュへの
全ての書込みが同時的に外部メモリをアップデートする
ことを必要とする。これらの不必要な書込みサイクルは
ボトルネックを形成し、それはCPUをストールさせ且
つ性能に悪影響を与える場合がある。それと対比して、
ライトバックアーキテクチャは外部メモリをアップデー
トすることなしにデータをキャッシュへ書込むことを可
能とする。ライトバックキャッシュの場合、外部書込み
サイクルは、キャッシュミスが発生する場合、修正され
たラインがキャッシュ内で置換される場合、又は外部バ
スマスターがデータへのアクセスを必要とする場合に必
要とされるに過ぎない。キャッシュ15は、より高速で
且つ複雑性の少ない命令の検索を与えるためにのみ命令
を格納する。四方セットアソシエイティブアーキテクチ
ャ及び最低使用頻度(LRU)アルゴリズムがキャッシ
ュ15において使用される。勿論、キャッシュ15は、
所望とされる場合には、ライトスルーモードで動作させ
ることが可能である。キャッシュ15のライン寸法は1
6バイトであり且つ新たなラインはメモリ読取りサイク
ル期間中に割当てられるに過ぎない。有効ステータスが
16バイトキャッシュラインベースで維持されるが、修
正されるか、又は書戻しモード用の「ダーティ」ステー
タスが4バイト(ダブルワード)ステータス上で維持さ
れる。従って、修正されたダブルワードのみが、ライン
がキャッシュ内において置換される場合に、外部メモリ
へ書戻されるに過ぎない。CPUは、読取り及び書込み
の両方に対して単一内部クロックサイクルでキャッシュ
へアクセスすることが可能である。
命令キャッシュ15は図1に示したようにマイクロプロ
セサ10内に設けられている。キャッシュ15は、ライ
トスルーモードで稼動するように、又は、より高い性能
のライトバックモードで稼動すべき形態とすることが可
能である。ライトバックモードは、不必要な外部書込み
サイクルによって発生されるバスボトルネックを取除く
ことによって、CPUコアの性能を最適化させる。ライ
トスルーキャッシュアーキテクチャは、キャッシュへの
全ての書込みが同時的に外部メモリをアップデートする
ことを必要とする。これらの不必要な書込みサイクルは
ボトルネックを形成し、それはCPUをストールさせ且
つ性能に悪影響を与える場合がある。それと対比して、
ライトバックアーキテクチャは外部メモリをアップデー
トすることなしにデータをキャッシュへ書込むことを可
能とする。ライトバックキャッシュの場合、外部書込み
サイクルは、キャッシュミスが発生する場合、修正され
たラインがキャッシュ内で置換される場合、又は外部バ
スマスターがデータへのアクセスを必要とする場合に必
要とされるに過ぎない。キャッシュ15は、より高速で
且つ複雑性の少ない命令の検索を与えるためにのみ命令
を格納する。四方セットアソシエイティブアーキテクチ
ャ及び最低使用頻度(LRU)アルゴリズムがキャッシ
ュ15において使用される。勿論、キャッシュ15は、
所望とされる場合には、ライトスルーモードで動作させ
ることが可能である。キャッシュ15のライン寸法は1
6バイトであり且つ新たなラインはメモリ読取りサイク
ル期間中に割当てられるに過ぎない。有効ステータスが
16バイトキャッシュラインベースで維持されるが、修
正されるか、又は書戻しモード用の「ダーティ」ステー
タスが4バイト(ダブルワード)ステータス上で維持さ
れる。従って、修正されたダブルワードのみが、ライン
がキャッシュ内において置換される場合に、外部メモリ
へ書戻されるに過ぎない。CPUは、読取り及び書込み
の両方に対して単一内部クロックサイクルでキャッシュ
へアクセスすることが可能である。
【0028】レベル1(L1)データキャッシュ16
も、図3に示したように設けられている。上述したよう
に、命令及びデータは性能を向上させるためにL1キャ
ッシュ内に別々に格納されている。キャッシュ16は、
又、四方セットアソシエイティブキャッシュであって、
例えば、16バイトのライン寸法を有しており、且つ最
小使用頻度(LRU)置換アルゴリズムを使用する。
も、図3に示したように設けられている。上述したよう
に、命令及びデータは性能を向上させるためにL1キャ
ッシュ内に別々に格納されている。キャッシュ16は、
又、四方セットアソシエイティブキャッシュであって、
例えば、16バイトのライン寸法を有しており、且つ最
小使用頻度(LRU)置換アルゴリズムを使用する。
【0029】命令キャッシュ15は命令プリフェッチバ
ッファ19へ接続しており、それは、命令フェッチ/デ
コードユニット18によってフェッチされる前にマイク
ロプロセサ命令を格納するために設けられている。命令
は、命令ストリームから「プリフェッチ」されることに
よって該バッファ内にロードされる。命令がユニット1
8によってフェッチされると、新たな命令が該バッファ
内にロードされる。このことは、実行ユニットが、常
に、命令を連続して供給し且つパイプライン内において
「バブル」が発生することを防止することを確保してい
る。分岐ターゲットバッファ17が、「分岐」即ち「ジ
ャンプ」命令のターゲットアドレスを予測するために使
用される。即ち、ターゲットアドレスは予め計算され
(予測され)且つバッファ17内に格納される。従っ
て、無条件分岐がとられる場合には、又は条件分岐命令
に遭遇する場合には、次の(逐次的でない)命令に対す
るアドレスは常に知られており且つ対応する実行ユニッ
ト(浮動小数点又は整数)によって使用するために使用
可能である。
ッファ19へ接続しており、それは、命令フェッチ/デ
コードユニット18によってフェッチされる前にマイク
ロプロセサ命令を格納するために設けられている。命令
は、命令ストリームから「プリフェッチ」されることに
よって該バッファ内にロードされる。命令がユニット1
8によってフェッチされると、新たな命令が該バッファ
内にロードされる。このことは、実行ユニットが、常
に、命令を連続して供給し且つパイプライン内において
「バブル」が発生することを防止することを確保してい
る。分岐ターゲットバッファ17が、「分岐」即ち「ジ
ャンプ」命令のターゲットアドレスを予測するために使
用される。即ち、ターゲットアドレスは予め計算され
(予測され)且つバッファ17内に格納される。従っ
て、無条件分岐がとられる場合には、又は条件分岐命令
に遭遇する場合には、次の(逐次的でない)命令に対す
るアドレスは常に知られており且つ対応する実行ユニッ
ト(浮動小数点又は整数)によって使用するために使用
可能である。
【0030】ユニット18によってフェッチされること
に加えて、命令は、又、デコードされ且つ発行、即ちデ
ィスパッチされる。例えば、ロード/ストア命令が実行
のためにロード/ストアユニット22に対して、メモリ
アドレスを計算するために整数ユニット21に対して、
且つスケージュリングのためにメモリ制御ユニットなど
に対して発行される。例えば加算(ADD)、乗算(I
MUL)、移動(MOV)などの付加的な整数命令もフ
ェッチ/デコード/発行ユニット18によって整数ユニ
ット21に対して発行される。浮動小数点ユニット20
はユニット18から発行された浮動小数点命令を受取り
それに関して実行を行う。浮動小数点ユニット20は実
行ユニット27を有している(図4)。FPU20は6
4ビットインターフェースを具備する8個の80ビット
レジスタを有しており、且つ並列実行が可能である。例
示的なインテルアーキテクチャ浮動小数点ユニット20
はx87命令セットを使用し且つIEEE標準754と
適合性がある。ロード/ストアユニット22はスヌープ
(詮索)メカニズムを有しており、それはメモリサブシ
ステムを介してのデータの一貫性を確保する。本発明
は、以下に更に詳細に説明するように、このスヌープメ
カニズムを利用している。
に加えて、命令は、又、デコードされ且つ発行、即ちデ
ィスパッチされる。例えば、ロード/ストア命令が実行
のためにロード/ストアユニット22に対して、メモリ
アドレスを計算するために整数ユニット21に対して、
且つスケージュリングのためにメモリ制御ユニットなど
に対して発行される。例えば加算(ADD)、乗算(I
MUL)、移動(MOV)などの付加的な整数命令もフ
ェッチ/デコード/発行ユニット18によって整数ユニ
ット21に対して発行される。浮動小数点ユニット20
はユニット18から発行された浮動小数点命令を受取り
それに関して実行を行う。浮動小数点ユニット20は実
行ユニット27を有している(図4)。FPU20は6
4ビットインターフェースを具備する8個の80ビット
レジスタを有しており、且つ並列実行が可能である。例
示的なインテルアーキテクチャ浮動小数点ユニット20
はx87命令セットを使用し且つIEEE標準754と
適合性がある。ロード/ストアユニット22はスヌープ
(詮索)メカニズムを有しており、それはメモリサブシ
ステムを介してのデータの一貫性を確保する。本発明
は、以下に更に詳細に説明するように、このスヌープメ
カニズムを利用している。
【0031】図2を参照すると、マイクロプロセサ10
の浮動小数点ユニット20のブロック図が示されてい
る。図2から理解されるように、浮動小数点及びMMX
命令は、両方共、FPU20によって実行される。浮動
小数点/MMX命令は、フェッチ/デコード/発行ユニ
ット18から発行され、そこで、それらは予めデコード
されて、それらが浮動小数点命令であるか又はMMX命
令であるかの何れかであるかを判別する。付加的な回路
がこのステージにおいて設けられており、浮動小数点レ
ジスタセット0,110及び/又はレジスタセット1,
100の使用を指定する。浮動小数点/MMX命令は、
場合により、FPレジスタセット100,110内のそ
れらに対応するオペランドデータと関連している。
の浮動小数点ユニット20のブロック図が示されてい
る。図2から理解されるように、浮動小数点及びMMX
命令は、両方共、FPU20によって実行される。浮動
小数点/MMX命令は、フェッチ/デコード/発行ユニ
ット18から発行され、そこで、それらは予めデコード
されて、それらが浮動小数点命令であるか又はMMX命
令であるかの何れかであるかを判別する。付加的な回路
がこのステージにおいて設けられており、浮動小数点レ
ジスタセット0,110及び/又はレジスタセット1,
100の使用を指定する。浮動小数点/MMX命令は、
場合により、FPレジスタセット100,110内のそ
れらに対応するオペランドデータと関連している。
【0032】FP/MMXデコードユニット51は、上
述した如く、フェッチ/デコード/発行ユニット18か
ら予めデコードされた命令を受取る。浮動小数点/MM
X命令は、次いで、浮動小数点/MMXデコードユニッ
ト51において完全にデコードされる。該命令は、次い
で、実行ユニット27上での処理のためにディスパッチ
される前に、浮動小数点/MMX命令キュー55内に格
納される。ディスパッチユニット24は、FP命令キュ
ー55からの命令を何時実行ユニット27へ供給すべき
かを決定する。該命令は、次いで、実行をするために実
行ユニット27へ供給される。次いで、該命令(浮動小
数点又はMMX)は、浮動小数点実行ユニット27によ
って実行される。実行ユニット27は、例えば加算、乗
算、シフト、絶対値、負数字操作などの典型的な浮動小
数点処理を実施する。FP実行ユニット27の出力は結
果キュー25へ供給され、そこで実行結果がバッファさ
れる。結果キュー25からの結果データはフェッチ/デ
コード/発行ステージ18によって指定された態様で、
レジスタファイル100,110へ書戻される。更に、
さらなる処理が必要とされる場合には、実行ユニット2
7、結果キュー25又はレジスタセット100,110
から直接的にディスパッチユニット24へ中間結果デー
タを供給することが可能である。マイクロプロセサは、
典型的に、浮動小数点又はMMX命令で初期化され、F
Pレジスタファイル110をアップデートする。浮動小
数点又はMMXストア(格納)命令は、レジスタファイ
ル100,110からの完成した結果をロード/ストア
ユニット22を介してメインメモリへ書戻す。
述した如く、フェッチ/デコード/発行ユニット18か
ら予めデコードされた命令を受取る。浮動小数点/MM
X命令は、次いで、浮動小数点/MMXデコードユニッ
ト51において完全にデコードされる。該命令は、次い
で、実行ユニット27上での処理のためにディスパッチ
される前に、浮動小数点/MMX命令キュー55内に格
納される。ディスパッチユニット24は、FP命令キュ
ー55からの命令を何時実行ユニット27へ供給すべき
かを決定する。該命令は、次いで、実行をするために実
行ユニット27へ供給される。次いで、該命令(浮動小
数点又はMMX)は、浮動小数点実行ユニット27によ
って実行される。実行ユニット27は、例えば加算、乗
算、シフト、絶対値、負数字操作などの典型的な浮動小
数点処理を実施する。FP実行ユニット27の出力は結
果キュー25へ供給され、そこで実行結果がバッファさ
れる。結果キュー25からの結果データはフェッチ/デ
コード/発行ステージ18によって指定された態様で、
レジスタファイル100,110へ書戻される。更に、
さらなる処理が必要とされる場合には、実行ユニット2
7、結果キュー25又はレジスタセット100,110
から直接的にディスパッチユニット24へ中間結果デー
タを供給することが可能である。マイクロプロセサは、
典型的に、浮動小数点又はMMX命令で初期化され、F
Pレジスタファイル110をアップデートする。浮動小
数点又はMMXストア(格納)命令は、レジスタファイ
ル100,110からの完成した結果をロード/ストア
ユニット22を介してメインメモリへ書戻す。
【0033】図3を参照すると、インテルx86アーキ
テクチャマイクロプロセサ内のFPU回路は、スタック
のような態様でアクセスされる8個の80ビットFPU
データレジスタR0−R7を具備するFPUデータレジ
スタファイル1をユーザへ供給する。16ビット制御レ
ジスタ2及び16ビットステータスレジスタ3も供給さ
れる。データレジスタタグワード4は8個の2ビットフ
ィールドを包含しており、その各々は8個のデータレジ
スタR0−R7のうちの一つと関連している。タグワー
ドは、8個のデータレジスタの各々に対して例えば空/
非空などのステータスを指定するために使用される。
テクチャマイクロプロセサ内のFPU回路は、スタック
のような態様でアクセスされる8個の80ビットFPU
データレジスタR0−R7を具備するFPUデータレジ
スタファイル1をユーザへ供給する。16ビット制御レ
ジスタ2及び16ビットステータスレジスタ3も供給さ
れる。データレジスタタグワード4は8個の2ビットフ
ィールドを包含しており、その各々は8個のデータレジ
スタR0−R7のうちの一つと関連している。タグワー
ドは、8個のデータレジスタの各々に対して例えば空/
非空などのステータスを指定するために使用される。
【0034】更に、図3には現在の命令ワードを包含す
るメモリ位置に対する命令ポインタ5及び現在の命令
(存在する場合)と関連するオペランドを包含するメモ
リ位置に対するデータポインタ6が示されている。11
ビットオプコードレジスタ8も示されており、それは最
後に実行された命令のオプコードを包含している。図3
に示されるように、制御レジスタ2、ステータスレジス
タ3、タグワードレジスタ4、命令ポインタ5、データ
ポインタ6、オプコードレジスタ8は環境レジスタであ
る。上述した環境レジスタとレジスタファイル1との組
合わせが浮動小数点状態を構成する。
るメモリ位置に対する命令ポインタ5及び現在の命令
(存在する場合)と関連するオペランドを包含するメモ
リ位置に対するデータポインタ6が示されている。11
ビットオプコードレジスタ8も示されており、それは最
後に実行された命令のオプコードを包含している。図3
に示されるように、制御レジスタ2、ステータスレジス
タ3、タグワードレジスタ4、命令ポインタ5、データ
ポインタ6、オプコードレジスタ8は環境レジスタであ
る。上述した環境レジスタとレジスタファイル1との組
合わせが浮動小数点状態を構成する。
【0035】更に図3を詳細に参照すると、タグフィー
ルド(不図示)は、タグワード内の8個の2ビットフィ
ールドの各々をFPUデータレジスタファイル1内の物
理的なデータレジスタのうちの一つと関連付けるために
使用されている。タグワードレジスタ4は各物理的デー
タレジスタに対して2ビットから構成されている。タグ
ワードフィールド(タグフィールドの0−7)は、それ
らの関連するレジスタ(R0−R7)の内容に依存して
四つの値、即ちValid(00)、Zero(0
1)、Special(10)、Empty(11)、
のうちの一つをとる。Special(特別)値は、デ
ノーマル(Denormal)、無限(Infinit
y)、QNaN、SNaN、サポートされないフォーマ
ットを包含している。タグ値はインテルマイクロプロセ
サによって透明的に維持され且つFSTENV及びFS
AVE命令を介して間接的にプログラマに対して与えら
れているに過ぎない。
ルド(不図示)は、タグワード内の8個の2ビットフィ
ールドの各々をFPUデータレジスタファイル1内の物
理的なデータレジスタのうちの一つと関連付けるために
使用されている。タグワードレジスタ4は各物理的デー
タレジスタに対して2ビットから構成されている。タグ
ワードフィールド(タグフィールドの0−7)は、それ
らの関連するレジスタ(R0−R7)の内容に依存して
四つの値、即ちValid(00)、Zero(0
1)、Special(10)、Empty(11)、
のうちの一つをとる。Special(特別)値は、デ
ノーマル(Denormal)、無限(Infinit
y)、QNaN、SNaN、サポートされないフォーマ
ットを包含している。タグ値はインテルマイクロプロセ
サによって透明的に維持され且つFSTENV及びFS
AVE命令を介して間接的にプログラマに対して与えら
れているに過ぎない。
【0036】FPU回路は、そのステータス及び演算結
果に関する情報を、ステータスレジスタ3を介してマイ
クロプロセサ内のその他の機能的ユニットへ通信する。
FPUステータスレジスタは、例外ステータス、演算実
行ステータス、レジスタステータス、オペランドクラ
ス、比較結果を反映するビットフィールドから構成され
ている。このレジスタは、制御又は実行ユニットの状態
に拘らずに、マイクロプロセサCPU、即ち整数ユニッ
トに対して常にアクセス可能である。
果に関する情報を、ステータスレジスタ3を介してマイ
クロプロセサ内のその他の機能的ユニットへ通信する。
FPUステータスレジスタは、例外ステータス、演算実
行ステータス、レジスタステータス、オペランドクラ
ス、比較結果を反映するビットフィールドから構成され
ている。このレジスタは、制御又は実行ユニットの状態
に拘らずに、マイクロプロセサCPU、即ち整数ユニッ
トに対して常にアクセス可能である。
【0037】FPUモード制御レジスタ2はCPUによ
って使用されて、FPUの動作モードを特定する。制御
レジスタ2は使用されるべき丸めモード、結果を計算す
るために使用する精度(単精度又は倍精度)及びトラッ
プを介してCPUへ報告されるべき例外条件などを特定
するビットフィールドを包含している。ユーザは精度、
丸め及び例外報告を、制御レジスタ2内の適宜のビット
をセット又はクリアすることによって制御する。付加的
な情報に関しては、エスジーエストムソンマイクロエレ
クトロニクスインコーポレイテッドによって出版されて
いるST486DX/DX2データブック、及びインテ
ルコーポレーションによって出版されている「ペンチア
ムプロセサファミリー開発者のマニュアル(Penti
um Processor Family Devel
oper’s Manual)」を参照するとよく、尚
これらの文献は引用によって本明細書に取込む。
って使用されて、FPUの動作モードを特定する。制御
レジスタ2は使用されるべき丸めモード、結果を計算す
るために使用する精度(単精度又は倍精度)及びトラッ
プを介してCPUへ報告されるべき例外条件などを特定
するビットフィールドを包含している。ユーザは精度、
丸め及び例外報告を、制御レジスタ2内の適宜のビット
をセット又はクリアすることによって制御する。付加的
な情報に関しては、エスジーエストムソンマイクロエレ
クトロニクスインコーポレイテッドによって出版されて
いるST486DX/DX2データブック、及びインテ
ルコーポレーションによって出版されている「ペンチア
ムプロセサファミリー開発者のマニュアル(Penti
um Processor Family Devel
oper’s Manual)」を参照するとよく、尚
これらの文献は引用によって本明細書に取込む。
【0038】本発明のデュアルレジスタセットを図4に
示してある。レジスタセット0は参照番号110で示さ
れており且つレジスタセット1は参照番号100で示さ
れている。レジスタセット110は、8個の80ビット
レジスタ及び図3に関連して前に説明したような態様で
機能する一組の環境レジスタ112(制御、ステータ
ス、タグ、オプコード、命令ポインタ、データポイン
タ)を有している。レジスタセット100は、環境レジ
スタ102及びレジスタファイル101を有しており、
それらは、機能的には、レジスタセット110の環境レ
ジスタ112及びレジスタファイル111と同一であ
る。FNSAVE、FRSTOR、FSTENV、FL
DENV命令をデコードすることが、どの様にしてステ
ートマシンなどをドライブし、レジスタセット0又は1
(又は、それらの何らかの組合わせ)の何れが作業用レ
ジスタセットであるかを決定するポインタビット、及び
前のタスクと関連している状態情報がメモリからロード
されねばならないか否かを決定するダーティ(dirt
y)ビットをセットするかは当業者にとって自明であ
る。更に、本発明においては付加的な変換ステップが設
けられており、それは、浮動小数点ユニットにおいて実
行される各命令に対して、ポインタビットの値を決定
し、従って、どのレジスタセット(0又は1)へアクセ
スするかを決定する。
示してある。レジスタセット0は参照番号110で示さ
れており且つレジスタセット1は参照番号100で示さ
れている。レジスタセット110は、8個の80ビット
レジスタ及び図3に関連して前に説明したような態様で
機能する一組の環境レジスタ112(制御、ステータ
ス、タグ、オプコード、命令ポインタ、データポイン
タ)を有している。レジスタセット100は、環境レジ
スタ102及びレジスタファイル101を有しており、
それらは、機能的には、レジスタセット110の環境レ
ジスタ112及びレジスタファイル111と同一であ
る。FNSAVE、FRSTOR、FSTENV、FL
DENV命令をデコードすることが、どの様にしてステ
ートマシンなどをドライブし、レジスタセット0又は1
(又は、それらの何らかの組合わせ)の何れが作業用レ
ジスタセットであるかを決定するポインタビット、及び
前のタスクと関連している状態情報がメモリからロード
されねばならないか否かを決定するダーティ(dirt
y)ビットをセットするかは当業者にとって自明であ
る。更に、本発明においては付加的な変換ステップが設
けられており、それは、浮動小数点ユニットにおいて実
行される各命令に対して、ポインタビットの値を決定
し、従って、どのレジスタセット(0又は1)へアクセ
スするかを決定する。
【0039】本発明は、更に、スヌープアドレスレジス
タ120を有しており、それはFNSAVE又はFST
ENV命令のそれぞれの結果として保存されるFP状態
(レジスタファイル又は環境)及び/又はFP環境に対
応するメモリアドレスを格納する。レジスタ120内の
アドレスがスヌープ即ち詮索され、保存されている情報
が修正されたか否かを決定する。本発明によれば、前の
タスクの状態はメモリ内の情報が修正されていない限
り、「オンチップ」イメージから回復することが可能で
ある。保存されているメモリ情報が修正されている場合
には、浮動小数点状態はメモリから回復されねばならな
い。
タ120を有しており、それはFNSAVE又はFST
ENV命令のそれぞれの結果として保存されるFP状態
(レジスタファイル又は環境)及び/又はFP環境に対
応するメモリアドレスを格納する。レジスタ120内の
アドレスがスヌープ即ち詮索され、保存されている情報
が修正されたか否かを決定する。本発明によれば、前の
タスクの状態はメモリ内の情報が修正されていない限
り、「オンチップ」イメージから回復することが可能で
ある。保存されているメモリ情報が修正されている場合
には、浮動小数点状態はメモリから回復されねばならな
い。
【0040】更に詳細に図4を参照すると、レジスタセ
ット0,110のブロック図が示されており、それは環
境レジスタ112とレジスタファイル111とを有して
いる。レジスタセット1,100も示されており、それ
は環境レジスタ102とレジスタファイル101とを有
している。浮動小数点命令FNSTENV/FLDEN
Vは、それぞれ、環境をストア(格納)及びロードする
ものであるから、それらは環境レジスタ102及び11
2に対応するに過ぎない。FNSAVE及びFRSTO
R命令は環境レジスタ102,112及びレジスタファ
イル101,111と関連している。なぜならば、これ
らの命令は、それぞれ、環境レジスタ及びレジスタファ
イルをそれぞれ保存及び回復させるからである。
ット0,110のブロック図が示されており、それは環
境レジスタ112とレジスタファイル111とを有して
いる。レジスタセット1,100も示されており、それ
は環境レジスタ102とレジスタファイル101とを有
している。浮動小数点命令FNSTENV/FLDEN
Vは、それぞれ、環境をストア(格納)及びロードする
ものであるから、それらは環境レジスタ102及び11
2に対応するに過ぎない。FNSAVE及びFRSTO
R命令は環境レジスタ102,112及びレジスタファ
イル101,111と関連している。なぜならば、これ
らの命令は、それぞれ、環境レジスタ及びレジスタファ
イルをそれぞれ保存及び回復させるからである。
【0041】スヌープアドレスレジスタ120が図4に
示されており、それはこのアドレスに対応する情報の何
らかの修正がその情報を「ダーティ」なものであるとさ
せ且つメモリロードが前の文脈を回復することを必要と
させるシャドー型レジスタセット(プログラマには見え
ない)のアドレスを有している。
示されており、それはこのアドレスに対応する情報の何
らかの修正がその情報を「ダーティ」なものであるとさ
せ且つメモリロードが前の文脈を回復することを必要と
させるシャドー型レジスタセット(プログラマには見え
ない)のアドレスを有している。
【0042】環境ポインタビットレジスタ121は、レ
ジスタセット0又はレジスタセット1内の環境レジスタ
102又は112のどれが作業用環境であり且つどれが
シャドー型環境であるかを表わす。レジスタ121内の
論理0は、ENV112が作業用環境レジスタであるこ
とを意味し、一方論理1は、ENV102が作業用環境
であることを表わす。同様に、ポインタビットレジスタ
123は、レジスタセット0又はレジスタセット1内の
どのレジスタファイル101又は111が作業用レジス
タファイルであり且つどれがシャドー型レジスタファイ
ルであるかを表わす。この場合にも、レジスタ123内
の論理0はREG111が作業用ファイルであることを
表わし且つ論理1はREG101が作業用ファイルであ
ることを意味する。
ジスタセット0又はレジスタセット1内の環境レジスタ
102又は112のどれが作業用環境であり且つどれが
シャドー型環境であるかを表わす。レジスタ121内の
論理0は、ENV112が作業用環境レジスタであるこ
とを意味し、一方論理1は、ENV102が作業用環境
であることを表わす。同様に、ポインタビットレジスタ
123は、レジスタセット0又はレジスタセット1内の
どのレジスタファイル101又は111が作業用レジス
タファイルであり且つどれがシャドー型レジスタファイ
ルであるかを表わす。この場合にも、レジスタ123内
の論理0はREG111が作業用ファイルであることを
表わし且つ論理1はREG101が作業用ファイルであ
ることを意味する。
【0043】環境レジスタダーティビットレジスタ12
2及びレジスタファイルダーティビット124は、両方
共、CPUがリセットされる場合にset=1とされ、
即ち1にセットされる。次いで、対応するレジスタファ
イルに対する新たに形成されたオンチップイメージに対
してダーティビットがターンオフされ、即ちset=0
とされ、即ち0にセットされる。即ち、オンチップイメ
ージが形成されると(ENV102又は112がシャド
ー型ENVとして保存される)、ENVダーティビット
レジスタがset=0とされ、即ち0にセットされる。
同様に、REGダーティビットレジスタもシャドー型レ
ジスタファイルとして保存されている対応するレジスタ
ファイルREG101又は111に対して0にセットさ
れる。別の命令又は演算がシャドー型ENV又はREG
を修正すると、対応するビットは論理1へフリップさ
れ、それにより、保存された情報が修正されていること
及びその状態が文脈切換え時にメインメモリから回復さ
れねばならないことを表わす。この様に、ENV及びR
EGダーティビットは、それぞれ、シャドー型ENV及
びREGのステータスをトラッキング即ち追跡する。
2及びレジスタファイルダーティビット124は、両方
共、CPUがリセットされる場合にset=1とされ、
即ち1にセットされる。次いで、対応するレジスタファ
イルに対する新たに形成されたオンチップイメージに対
してダーティビットがターンオフされ、即ちset=0
とされ、即ち0にセットされる。即ち、オンチップイメ
ージが形成されると(ENV102又は112がシャド
ー型ENVとして保存される)、ENVダーティビット
レジスタがset=0とされ、即ち0にセットされる。
同様に、REGダーティビットレジスタもシャドー型レ
ジスタファイルとして保存されている対応するレジスタ
ファイルREG101又は111に対して0にセットさ
れる。別の命令又は演算がシャドー型ENV又はREG
を修正すると、対応するビットは論理1へフリップさ
れ、それにより、保存された情報が修正されていること
及びその状態が文脈切換え時にメインメモリから回復さ
れねばならないことを表わす。この様に、ENV及びR
EGダーティビットは、それぞれ、シャドー型ENV及
びREGのステータスをトラッキング即ち追跡する。
【0044】例えば、シャドー型レジスタセットがオン
チップイメージとして保存される場合に、ENVダーテ
ィビットレジスタ122及びREGダーティビットレジ
スタ124はset=0とされ、即ち0にセットされ、
且つシャドー型レジスタセットのメモリアドレスはスヌ
ープアドレスレジスタ120内に格納される。スヌープ
ヒット(snoop hit)が発生すると、レジスタ
122及び/又は124内のダーティビットがset=
1とされ、即ち1にセットされ、オンチップイメージが
修正されており且つタスク切換えが発生する場合にメモ
リからロードされねばならないことを表わす。
チップイメージとして保存される場合に、ENVダーテ
ィビットレジスタ122及びREGダーティビットレジ
スタ124はset=0とされ、即ち0にセットされ、
且つシャドー型レジスタセットのメモリアドレスはスヌ
ープアドレスレジスタ120内に格納される。スヌープ
ヒット(snoop hit)が発生すると、レジスタ
122及び/又は124内のダーティビットがset=
1とされ、即ち1にセットされ、オンチップイメージが
修正されており且つタスク切換えが発生する場合にメモ
リからロードされねばならないことを表わす。
【0045】ポインタビット及びダーティビットは、本
発明のデュアル(二重)レジスタセットに対するアルゴ
リズムを簡単化させるために使用されている。新たな作
業用セットが、FNSAVE、FSTENV、FRST
OR、FLDENV命令のうちの一つが実行される場合
に作業用セット及び/又はシャドー型セットの両方から
ENV及びREGレジスタを選択的に採取することによ
って形成される。本発明のアルゴリズムは、命令の適合
性を維持しながら、単一CPUサイクルにおいて新たな
作業用セットを形成する。
発明のデュアル(二重)レジスタセットに対するアルゴ
リズムを簡単化させるために使用されている。新たな作
業用セットが、FNSAVE、FSTENV、FRST
OR、FLDENV命令のうちの一つが実行される場合
に作業用セット及び/又はシャドー型セットの両方から
ENV及びREGレジスタを選択的に採取することによ
って形成される。本発明のアルゴリズムは、命令の適合
性を維持しながら、単一CPUサイクルにおいて新たな
作業用セットを形成する。
【0046】一般的に、本アルゴリズムは、FNSAV
E命令(環境レジスタ及びレジスタファイルを保存)又
はFSTENV命令(環境レジスタを格納)の何れかが
実行されると、ポインタレジスタ121,123内のビ
ットをフリップ即ち反転させる。更に、該命令がFRS
TOR(環境レジスタ及びレジスタファイルを回復)又
はFLDENV(環境レジスタをロード)の何れかであ
ると、スヌープアドレスレジスタ(格納されている情報
が修正されていない)との一致が発生し且つダーティビ
ットはオフ(set=0)である。注意すべきことであ
るが、FRSTORの場合、レジスタ121,123内
のENV及びREGダーティビットの両方がオフでなけ
ればならず、且つFLDENVの場合、レジスタ121
内のENVダーティビットのみがオフであることが必要
である。
E命令(環境レジスタ及びレジスタファイルを保存)又
はFSTENV命令(環境レジスタを格納)の何れかが
実行されると、ポインタレジスタ121,123内のビ
ットをフリップ即ち反転させる。更に、該命令がFRS
TOR(環境レジスタ及びレジスタファイルを回復)又
はFLDENV(環境レジスタをロード)の何れかであ
ると、スヌープアドレスレジスタ(格納されている情報
が修正されていない)との一致が発生し且つダーティビ
ットはオフ(set=0)である。注意すべきことであ
るが、FRSTORの場合、レジスタ121,123内
のENV及びREGダーティビットの両方がオフでなけ
ればならず、且つFLDENVの場合、レジスタ121
内のENVダーティビットのみがオフであることが必要
である。
【0047】本発明のアルゴリズムは、ダーティビット
をターンオン(set=1)又はオフ(set=0)す
ることによってダーティビットを制御する。新たに形成
されたオンチップイメージに対して、レジスタ122,
124内の対応するダーティビットはターンオフされ
る。オンチップイメージに対して、ダーティビットは、
対応するメモリイメージが修正される場合にターンオン
する。レジスタ122内のENVダーティビット及びレ
ジスタ124内のREGダーティビットの両方が、CP
Uがリセットされる場合に、ターンオンされる。
をターンオン(set=1)又はオフ(set=0)す
ることによってダーティビットを制御する。新たに形成
されたオンチップイメージに対して、レジスタ122,
124内の対応するダーティビットはターンオフされ
る。オンチップイメージに対して、ダーティビットは、
対応するメモリイメージが修正される場合にターンオン
する。レジスタ122内のENVダーティビット及びレ
ジスタ124内のREGダーティビットの両方が、CP
Uがリセットされる場合に、ターンオンされる。
【0048】本発明の動作について、マイクロプロセサ
10上でのFNSAVE、FNSTENV、FRSTO
R、FLDENV命令の実際の実行に関連して以下に説
明する。
10上でのFNSAVE、FNSTENV、FRSTO
R、FLDENV命令の実際の実行に関連して以下に説
明する。
【0049】本発明の説明の便宜上、初期的に、作業用
レジスタセット={ENV〔env_ptr〕,REG
〔reg_ptr〕}であると仮定する。次いで、FN
SAVEが処理され且つCPUが、環境ポインタENV
〔〜env_ptr〕を初期化させ且つ現在の作業用セ
ットREGポインタREG〔reg_ptr〕をREG
〔〜reg_ptr〕へコピーし、即ちレジスタポイン
タビット123を作業用レジスタセットに対応する値
(0又は1)と等しくセットすることによって、シャド
ー型レジスタセットへのスイッチオーバー即ち切換えの
準備を行う。この初期化及びコピー動作は、命令レベル
におけるFNSAVE命令に対する必要条件であり、且
つ命令セットアーキテクチャとの適合性を維持するため
に必要である。次いで、CPUはスヌープアドレスレジ
スタ120に対してFNSAVE命令からのストア(格
納)アドレスで上書きする。レジスタ121内のENV
ポインタビット及びレジスタ123内のREGポインタ
ビットをフリップ即ち反転させて、新たな作業用セット
={ENV〔env_ptr〕,REG〔reg_pt
r〕}を形成する。レジスタ122,124内のENV
及びREGダーティビットがターンオフされ、且つ新た
なオンチップイメージ={ENV〔〜env_pt
r〕,REG〔〜reg_ptr〕}が形成される。前
に説明した動作の全ては一つのCPUサイクルにおいて
発生する。
レジスタセット={ENV〔env_ptr〕,REG
〔reg_ptr〕}であると仮定する。次いで、FN
SAVEが処理され且つCPUが、環境ポインタENV
〔〜env_ptr〕を初期化させ且つ現在の作業用セ
ットREGポインタREG〔reg_ptr〕をREG
〔〜reg_ptr〕へコピーし、即ちレジスタポイン
タビット123を作業用レジスタセットに対応する値
(0又は1)と等しくセットすることによって、シャド
ー型レジスタセットへのスイッチオーバー即ち切換えの
準備を行う。この初期化及びコピー動作は、命令レベル
におけるFNSAVE命令に対する必要条件であり、且
つ命令セットアーキテクチャとの適合性を維持するため
に必要である。次いで、CPUはスヌープアドレスレジ
スタ120に対してFNSAVE命令からのストア(格
納)アドレスで上書きする。レジスタ121内のENV
ポインタビット及びレジスタ123内のREGポインタ
ビットをフリップ即ち反転させて、新たな作業用セット
={ENV〔env_ptr〕,REG〔reg_pt
r〕}を形成する。レジスタ122,124内のENV
及びREGダーティビットがターンオフされ、且つ新た
なオンチップイメージ={ENV〔〜env_pt
r〕,REG〔〜reg_ptr〕}が形成される。前
に説明した動作の全ては一つのCPUサイクルにおいて
発生する。
【0050】FNSAVE用の擬似コード:
【0051】
【数1】
【0052】次に、ストア(格納)環境命令(FSTE
NV)について説明する。この場合も、作業用セット
は、初期的に、{ENV〔env_ptr〕,REG
〔reg_ptr〕}にセットされる。次いで、FNS
TENV命令が処理され且つCPUは、作業用セットに
対する前の環境ポインタビット値をレジスタ121内の
新たな環境ビットポインタとしてセットすることによ
り、即ちENV〔env_ptr〕をENV〔〜env
_ptr〕とセットすることによって新たな作業用セッ
トへのスイッチオーバー即ち切換えの準備を行う。この
場合も、このコピーオーバーは適合性を確保するために
命令レベルにおけるFSTENVの必要条件である。次
いで、CPUはFSTENV命令からのアドレスでスヌ
ープアドレスレジスタ120を上書きする。次いで、E
NVポインタビットがフリップ即ち反転され、且つ新た
な作業用セット{ENV〔env_ptr〕,REG
〔reg_ptr〕}が形成される。注意すべきことで
あるが、FSTENV命令は、環境のみを格納するもの
であって、レジスタファイルを格納するものではなく、
従って、レジスタ121内のENVポインタビットのみ
がフリップされて新たな作業用セットを形成する。次
に、レジスタ122内のENVダーティビットがターン
オフされ(0)、且つレジスタ124内のREGダーテ
ィビットがターンオン(1)され、且つ新たなオンチッ
プイメージが形成される、即ち{ENV〔〜env_p
tr〕}である。この場合も、FSTENVは環境レジ
スタを格納するに過ぎないので、ENVダーティビット
が0にセットされる唯一のビットである。従って、新た
なオンチップイメージは、図3に示したように、環境レ
ジスタのみを包含する。これらのFSTENV命令の実
行に関する動作は全て単一のCPUサイクルにおいて発
生する。
NV)について説明する。この場合も、作業用セット
は、初期的に、{ENV〔env_ptr〕,REG
〔reg_ptr〕}にセットされる。次いで、FNS
TENV命令が処理され且つCPUは、作業用セットに
対する前の環境ポインタビット値をレジスタ121内の
新たな環境ビットポインタとしてセットすることによ
り、即ちENV〔env_ptr〕をENV〔〜env
_ptr〕とセットすることによって新たな作業用セッ
トへのスイッチオーバー即ち切換えの準備を行う。この
場合も、このコピーオーバーは適合性を確保するために
命令レベルにおけるFSTENVの必要条件である。次
いで、CPUはFSTENV命令からのアドレスでスヌ
ープアドレスレジスタ120を上書きする。次いで、E
NVポインタビットがフリップ即ち反転され、且つ新た
な作業用セット{ENV〔env_ptr〕,REG
〔reg_ptr〕}が形成される。注意すべきことで
あるが、FSTENV命令は、環境のみを格納するもの
であって、レジスタファイルを格納するものではなく、
従って、レジスタ121内のENVポインタビットのみ
がフリップされて新たな作業用セットを形成する。次
に、レジスタ122内のENVダーティビットがターン
オフされ(0)、且つレジスタ124内のREGダーテ
ィビットがターンオン(1)され、且つ新たなオンチッ
プイメージが形成される、即ち{ENV〔〜env_p
tr〕}である。この場合も、FSTENVは環境レジ
スタを格納するに過ぎないので、ENVダーティビット
が0にセットされる唯一のビットである。従って、新た
なオンチップイメージは、図3に示したように、環境レ
ジスタのみを包含する。これらのFSTENV命令の実
行に関する動作は全て単一のCPUサイクルにおいて発
生する。
【0053】FSTENV用の擬似コード:
【0054】
【数2】
【0055】実行ユニットの状態が回復されるべき場合
には、FRSTOR命令が処理される。初期的には、作
業用セット={ENV〔env_ptr〕,REG〔r
eg_ptr〕}及びFRSTORが処理される。CP
Uは、FRSTOR命令エンコーディングからのデータ
アドレスをスヌープレジスタ120内のアドレスと比較
する。CPUは、更に、ENVダーティビットレジスタ
122及びREGダーティビットレジスタ124の両方
における値をルックアップする。レジスタ121内のE
NVポインタビット及びレジスタ123内のREGポイ
ンタビットが次いでフリップされ、且つレジスタ122
内のENVダーティビット及びレジスタ124内のRE
Gダーティビットがターンオンされるが、それは、
(1)スヌープアドレスレジスタ120とFRSTOR
命令との間のアドレス比較が一致し、且つ(2)レジス
タ122,124内の両方のダーティビットがオフ
(0)であると判別される場合においてのみである。こ
のことは、メモリイメージも修正されておらず且つ状態
がシャドー型レジスタセットから回復されることを表わ
す。新たな作業用セット{ENV〔env_ptr〕,
REG〔reg_ptr〕}及び新たなシャドー型セッ
ト{ENV〔〜env_ptr〕,REG〔〜reg_
ptr〕}が形成される。これらのFRSTORと関連
する演算の全ては、一つのCPUクロックサイクル内に
おいて発生する。スヌープアドレスがFRSTORアド
レスと一致しないか、又はレジスタ122,124内の
うちのダーティビットの何れかがターンオン(1)され
ると、ポインタ及びダーティビットは変化されず且つ状
態はメモリからロードされる。
には、FRSTOR命令が処理される。初期的には、作
業用セット={ENV〔env_ptr〕,REG〔r
eg_ptr〕}及びFRSTORが処理される。CP
Uは、FRSTOR命令エンコーディングからのデータ
アドレスをスヌープレジスタ120内のアドレスと比較
する。CPUは、更に、ENVダーティビットレジスタ
122及びREGダーティビットレジスタ124の両方
における値をルックアップする。レジスタ121内のE
NVポインタビット及びレジスタ123内のREGポイ
ンタビットが次いでフリップされ、且つレジスタ122
内のENVダーティビット及びレジスタ124内のRE
Gダーティビットがターンオンされるが、それは、
(1)スヌープアドレスレジスタ120とFRSTOR
命令との間のアドレス比較が一致し、且つ(2)レジス
タ122,124内の両方のダーティビットがオフ
(0)であると判別される場合においてのみである。こ
のことは、メモリイメージも修正されておらず且つ状態
がシャドー型レジスタセットから回復されることを表わ
す。新たな作業用セット{ENV〔env_ptr〕,
REG〔reg_ptr〕}及び新たなシャドー型セッ
ト{ENV〔〜env_ptr〕,REG〔〜reg_
ptr〕}が形成される。これらのFRSTORと関連
する演算の全ては、一つのCPUクロックサイクル内に
おいて発生する。スヌープアドレスがFRSTORアド
レスと一致しないか、又はレジスタ122,124内の
うちのダーティビットの何れかがターンオン(1)され
ると、ポインタ及びダーティビットは変化されず且つ状
態はメモリからロードされる。
【0056】FRSTOR用の擬似コード:
【0057】
【数3】
【0058】FLDENV命令を処理することによって
保存環境をローディングするための本発明の操作につい
て次に説明する。初期的には、作業用セットは{ENV
〔env_ptr〕,REG〔reg_ptr〕}であ
る。次いで、FLDENV命令が処理される。CPU
は、FLDENV命令エンコーディングからのデータア
ドレスをスヌープレジスタ120内のアドレスと比較す
る。CPUは、更に、レジスタ122内のENVダーテ
ィビットをルックアップし、それが未だにオフであるか
否かを決定する。レジスタ121内のENVポインタビ
ットがフリップされ且つENVダーティビット及びRE
Gダーティビットの両方がターンオン(1)されるが、
それは、(1)FLDENVアドレスとスヌープレジス
タ120内のアドレスとの間のアドレス比較が一致であ
り、且つ(2)レジスタ122内のENVダーティビッ
トがターンオフ(0)である場合においてのみである。
新たな作業用セット{ENV〔env_ptr〕,RE
G〔reg_ptr〕}及び新たなシャドー型セット
{ENV〔〜env_ptr〕,REG〔〜reg_p
tr〕}が形成される。これらの操作は、FLDENV
命令と関連して、全て単一のCPUサイクルにおいて発
生する。FLDENVアドレスとのスヌープアドレス比
較が一致でない場合か、又はレジスタ122内のENV
ダーティビットがオン(1)である場合には、ポインタ
及びダーティビットは変化されておらず且つ環境はメモ
リからロードされる。
保存環境をローディングするための本発明の操作につい
て次に説明する。初期的には、作業用セットは{ENV
〔env_ptr〕,REG〔reg_ptr〕}であ
る。次いで、FLDENV命令が処理される。CPU
は、FLDENV命令エンコーディングからのデータア
ドレスをスヌープレジスタ120内のアドレスと比較す
る。CPUは、更に、レジスタ122内のENVダーテ
ィビットをルックアップし、それが未だにオフであるか
否かを決定する。レジスタ121内のENVポインタビ
ットがフリップされ且つENVダーティビット及びRE
Gダーティビットの両方がターンオン(1)されるが、
それは、(1)FLDENVアドレスとスヌープレジス
タ120内のアドレスとの間のアドレス比較が一致であ
り、且つ(2)レジスタ122内のENVダーティビッ
トがターンオフ(0)である場合においてのみである。
新たな作業用セット{ENV〔env_ptr〕,RE
G〔reg_ptr〕}及び新たなシャドー型セット
{ENV〔〜env_ptr〕,REG〔〜reg_p
tr〕}が形成される。これらの操作は、FLDENV
命令と関連して、全て単一のCPUサイクルにおいて発
生する。FLDENVアドレスとのスヌープアドレス比
較が一致でない場合か、又はレジスタ122内のENV
ダーティビットがオン(1)である場合には、ポインタ
及びダーティビットは変化されておらず且つ環境はメモ
リからロードされる。
【0059】FLDENV用の擬似コード:
【0060】
【数4】
【0061】CPUは、以下の如くにして初期化された
制御ビットでリセットされる。即ち、(1)レジスタ1
21内のENVポインタ=0;(2)レジスタ122内
のENVダーティビット=0;(3)レジスタ123内
のREGポインタ=0;(4)レジスタ124内のRE
Gダーティビット=1である。これらのビットは、初期
的には、これらの値にセットされ且つ、FNSAVE、
FRSTOR、FSTENV、FLDENV命令のうち
の何れか一つが実行されるまでその状態に止どまる。基
本的には、ポインタビットがset=0、即ち0にセッ
トされるということは、CPUに対する初期的な作業用
セットがレジスタセット0,100(図2及び4参照)
であることを表わす。ダーティビット=1を初期化する
ことにより、このことは、FRSTOR又はFLDEN
V命令のうちの何れかが実行されるべき最初の命令であ
る場合には、データが、初期的には、メモリから現在の
作業用セット(初期化におけるレジスタ0)内へロード
されることを意味する。
制御ビットでリセットされる。即ち、(1)レジスタ1
21内のENVポインタ=0;(2)レジスタ122内
のENVダーティビット=0;(3)レジスタ123内
のREGポインタ=0;(4)レジスタ124内のRE
Gダーティビット=1である。これらのビットは、初期
的には、これらの値にセットされ且つ、FNSAVE、
FRSTOR、FSTENV、FLDENV命令のうち
の何れか一つが実行されるまでその状態に止どまる。基
本的には、ポインタビットがset=0、即ち0にセッ
トされるということは、CPUに対する初期的な作業用
セットがレジスタセット0,100(図2及び4参照)
であることを表わす。ダーティビット=1を初期化する
ことにより、このことは、FRSTOR又はFLDEN
V命令のうちの何れかが実行されるべき最初の命令であ
る場合には、データが、初期的には、メモリから現在の
作業用セット(初期化におけるレジスタ0)内へロード
されることを意味する。
【0062】CPUリセット用の擬似コード:
【0063】
【数5】
【0064】アドレスレジスタ120をスヌープ動作す
る場合に、CPUは全てのメモリ書込みサイクルを見
る。浮動小数点状態メモリイメージ(ENV及びRE
G)が書込まれている場合には、レジスタ122内のE
NVダーティビット及びレジスタ124内のREGダー
ティビットの両方が同一のCPUサイクルにおいてター
ンオン(1)される。浮動小数点環境メモリイメージ
(ENVのみ)が書込まれている場合には、レジスタ1
22内のENVダーティビットが単一のCPUサイクル
においてターンオン(1)される。
る場合に、CPUは全てのメモリ書込みサイクルを見
る。浮動小数点状態メモリイメージ(ENV及びRE
G)が書込まれている場合には、レジスタ122内のE
NVダーティビット及びレジスタ124内のREGダー
ティビットの両方が同一のCPUサイクルにおいてター
ンオン(1)される。浮動小数点環境メモリイメージ
(ENVのみ)が書込まれている場合には、レジスタ1
22内のENVダーティビットが単一のCPUサイクル
においてターンオン(1)される。
【0065】図5を参照すると、本発明が作業用セット
としてレジスタセット0,110で示されている。作業
用セット110はENVレジスタ112及びREGファ
イル111を有している。図5において、FSTENV
命令が実行されており、それによりENVをメモリ13
内の位置132へ格納する。レジスタセット1,100
はENVレジスタ102を包含しており、シャドー型レ
ジスタセットであり且つオンチップイメージを構成して
いる。FSTENV命令の場合、オンチップイメージは
ENVのみである。なぜならば、それが格納されるもの
だからである。FNSAVE命令が実行されると、該オ
ンチップイメージはENV及びREGの両方である。な
ぜならば、FP状態の全体がこの命令によって保存され
るからである。従って、オンチップイメージはシャドー
型レジスタのサブセットであること理解することが可能
である。スヌープアドレスの一致が存在せず且つレジス
タ122内のENVダーティビットがターンオフされて
いる場合には、文脈切換えの発生(ポインタビットのフ
リップ)に起因して前の状態がロードされる場合(FL
DENV)に、浮動小数点環境はオンチップイメージの
ENVレジスタ102から回復することが可能である。
としてレジスタセット0,110で示されている。作業
用セット110はENVレジスタ112及びREGファ
イル111を有している。図5において、FSTENV
命令が実行されており、それによりENVをメモリ13
内の位置132へ格納する。レジスタセット1,100
はENVレジスタ102を包含しており、シャドー型レ
ジスタセットであり且つオンチップイメージを構成して
いる。FSTENV命令の場合、オンチップイメージは
ENVのみである。なぜならば、それが格納されるもの
だからである。FNSAVE命令が実行されると、該オ
ンチップイメージはENV及びREGの両方である。な
ぜならば、FP状態の全体がこの命令によって保存され
るからである。従って、オンチップイメージはシャドー
型レジスタのサブセットであること理解することが可能
である。スヌープアドレスの一致が存在せず且つレジス
タ122内のENVダーティビットがターンオフされて
いる場合には、文脈切換えの発生(ポインタビットのフ
リップ)に起因して前の状態がロードされる場合(FL
DENV)に、浮動小数点環境はオンチップイメージの
ENVレジスタ102から回復することが可能である。
【0066】図6は全体的な状態が保存される場合、即
ちFNSAVE命令が実行される場合における作業用セ
ットと、メモリと、シャドー型セットとの間の関係を示
している。この場合にも、レジスタセット0,110が
作業用セットであり且つCPUが例えば浮動小数点又は
MMXなどの命令(文脈に依存して)を実行するために
ENVレジスタ112及びREGファイル111へアク
セスするものと仮定する。その文脈がスイッチ即ち切換
えである場合には、FNSAVE命令が実行され且つE
NV112及びREG111(状態)の両方がそれぞれ
位置132,131においてメモリ13内に格納され
る。この場合には、オンチップイメージはメモリイメー
ジのコピーであって、ENVレジスタ102はメモリ位
置132と同一の情報を有しており且つREGファイル
101はメモリ位置131と同一の情報を有している。
FRSTOR命令の実行時に、CPUはスヌープアドレ
スとFRSTORアドレスをチェックし且つENV及び
REGダーティビットがオフであるか否かを決定する。
スヌープヒットが存在しておらず且つダーティビットが
オフである場合には、その文脈はオンチップイメージか
ら回復することが可能である。
ちFNSAVE命令が実行される場合における作業用セ
ットと、メモリと、シャドー型セットとの間の関係を示
している。この場合にも、レジスタセット0,110が
作業用セットであり且つCPUが例えば浮動小数点又は
MMXなどの命令(文脈に依存して)を実行するために
ENVレジスタ112及びREGファイル111へアク
セスするものと仮定する。その文脈がスイッチ即ち切換
えである場合には、FNSAVE命令が実行され且つE
NV112及びREG111(状態)の両方がそれぞれ
位置132,131においてメモリ13内に格納され
る。この場合には、オンチップイメージはメモリイメー
ジのコピーであって、ENVレジスタ102はメモリ位
置132と同一の情報を有しており且つREGファイル
101はメモリ位置131と同一の情報を有している。
FRSTOR命令の実行時に、CPUはスヌープアドレ
スとFRSTORアドレスをチェックし且つENV及び
REGダーティビットがオフであるか否かを決定する。
スヌープヒットが存在しておらず且つダーティビットが
オフである場合には、その文脈はオンチップイメージか
ら回復することが可能である。
【0067】説明の便宜上、図5及び6においては、作
業用セットが、レジスタセット0に対応するENV及び
REGレジスタを有しており、且つシャドー型セットが
物理的にレジスタセット1の一部であるENV及びRE
Gレジスタを有しているものとして示してある。
業用セットが、レジスタセット0に対応するENV及び
REGレジスタを有しており、且つシャドー型セットが
物理的にレジスタセット1の一部であるENV及びRE
Gレジスタを有しているものとして示してある。
【0068】上述したように、レジスタセット0又はレ
ジスタセット1の何れかが作業用又はシャドー型セット
として指定される。しかしながら、本発明は、又、作業
用セットがレジスタセット0からのENVレジスタ及び
レジスタセット1からのREGレジスタを有する場合、
即ち作業用セットがENV112とREG101とから
構成される場合の形態をも取込むものである。このこと
は、ENVポインタビットがset=0、即ち0にセッ
トされ且つREGポインタビットがset=1、即ち1
にセットされる場合に発生する。この場合には、ENV
102及びREG111はシャドー型セットである。勿
論、ENVレジスタ102及びREGレジスタ111は
作業用セットとして指定し、ENV112及びREG1
01をシャドー型セットとして指定することが可能であ
るが、この場合はENVポインタビットが1にセットさ
れ且つREGポインタビットが0にセットされる。この
好適実施例は図7に示してある。ENV及びREGポイ
ンタビットの両方がset=0、即ち0にセットされる
と、レジスタセット0,110は作業用セットであり且
つENV112は参照番号150で示したようにREG
111と共に動作する。両方のポインタビットがset
=1、即ち1にセットされると、レジスタセット100
が作業用セットであり、そのことは参照番号151によ
って示されている。しかしながら、ENVビットが0に
セットされ且つREGビットが1にセットされる場合に
は、作業用セットはENV112及びREG101であ
って、それは参照番号152で示してある。同様に、参
照番号153は、ENVポインタが1にセットされ且つ
REGポインタが0にセットされる場合を示している。
従って、本発明は、作業用セットとシャドー型セットを
構成するレジスタをダイナミックに選択することを可能
とすることによって多大な柔軟性を提供している。
ジスタセット1の何れかが作業用又はシャドー型セット
として指定される。しかしながら、本発明は、又、作業
用セットがレジスタセット0からのENVレジスタ及び
レジスタセット1からのREGレジスタを有する場合、
即ち作業用セットがENV112とREG101とから
構成される場合の形態をも取込むものである。このこと
は、ENVポインタビットがset=0、即ち0にセッ
トされ且つREGポインタビットがset=1、即ち1
にセットされる場合に発生する。この場合には、ENV
102及びREG111はシャドー型セットである。勿
論、ENVレジスタ102及びREGレジスタ111は
作業用セットとして指定し、ENV112及びREG1
01をシャドー型セットとして指定することが可能であ
るが、この場合はENVポインタビットが1にセットさ
れ且つREGポインタビットが0にセットされる。この
好適実施例は図7に示してある。ENV及びREGポイ
ンタビットの両方がset=0、即ち0にセットされる
と、レジスタセット0,110は作業用セットであり且
つENV112は参照番号150で示したようにREG
111と共に動作する。両方のポインタビットがset
=1、即ち1にセットされると、レジスタセット100
が作業用セットであり、そのことは参照番号151によ
って示されている。しかしながら、ENVビットが0に
セットされ且つREGビットが1にセットされる場合に
は、作業用セットはENV112及びREG101であ
って、それは参照番号152で示してある。同様に、参
照番号153は、ENVポインタが1にセットされ且つ
REGポインタが0にセットされる場合を示している。
従って、本発明は、作業用セットとシャドー型セットを
構成するレジスタをダイナミックに選択することを可能
とすることによって多大な柔軟性を提供している。
【0069】図8を参照すると、2ビットポインタビッ
トステートマシンが示されており、それはレジスタ12
1及び123内のENV及びREGポインタビットが、
それぞれ、どの様にしてセットされるかに関して本発明
の動作を説明するために使用する。ステートマシンは、
「現在の状態」、「入力」、「次の状態」として組織化
され、「X」は「don’t care」値であること
を意味している(即ち、それは論理0又は論理1の何れ
かとすることが可能である)。四つの可能な現在の状態
が存在しており、即ち、レジスタセット0は作業用セッ
トであり、レジスタセット1は作業用セットであり、レ
ジスタセット0のENV及びレジスタセット1のREG
は作業用セットであり、且つレジスタセット1のENV
及びレジスタセット0のREGは作業用セットである。
ステートマシンはスヌープヒットが発生し且つ保存され
ているアドレスが回復アドレスと一致しない場合に対処
するものではない。なぜならば、この状態は、メモリか
ら回復されねばならず且つ全てのポインタ及びダーティ
ビットは不変だからである。ENV及びREGダーティ
ビットは、本発明によって、保存した情報が修正されて
いる場合にスヌープヒットが発生する状態に対処するた
めに与えられている。
トステートマシンが示されており、それはレジスタ12
1及び123内のENV及びREGポインタビットが、
それぞれ、どの様にしてセットされるかに関して本発明
の動作を説明するために使用する。ステートマシンは、
「現在の状態」、「入力」、「次の状態」として組織化
され、「X」は「don’t care」値であること
を意味している(即ち、それは論理0又は論理1の何れ
かとすることが可能である)。四つの可能な現在の状態
が存在しており、即ち、レジスタセット0は作業用セッ
トであり、レジスタセット1は作業用セットであり、レ
ジスタセット0のENV及びレジスタセット1のREG
は作業用セットであり、且つレジスタセット1のENV
及びレジスタセット0のREGは作業用セットである。
ステートマシンはスヌープヒットが発生し且つ保存され
ているアドレスが回復アドレスと一致しない場合に対処
するものではない。なぜならば、この状態は、メモリか
ら回復されねばならず且つ全てのポインタ及びダーティ
ビットは不変だからである。ENV及びREGダーティ
ビットは、本発明によって、保存した情報が修正されて
いる場合にスヌープヒットが発生する状態に対処するた
めに与えられている。
【0070】図8のポインタステートマシンは、FNS
AVE、FRSTOR、FSTENV、FLDENV命
令のうちの各々に対応する擬似コードを参照して前に説
明したプロセスの実現例を与えている。
AVE、FRSTOR、FSTENV、FLDENV命
令のうちの各々に対応する擬似コードを参照して前に説
明したプロセスの実現例を与えている。
【0071】現在の状態値は現在のENV及びREGポ
インタビットに対応しており、次の状態値はENV及び
REGポインタが実行中の命令に基づいて駆動される論
理値に対応する。この入力値は、スヌープヒットが発生
するかどうか及びENV及びREGダーティビットの状
態に拘らずに、どの命令が実行されているかに対応する
(FNSAVE、FRSTOR、FSTENV、FLD
ENV)。
インタビットに対応しており、次の状態値はENV及び
REGポインタが実行中の命令に基づいて駆動される論
理値に対応する。この入力値は、スヌープヒットが発生
するかどうか及びENV及びREGダーティビットの状
態に拘らずに、どの命令が実行されているかに対応する
(FNSAVE、FRSTOR、FSTENV、FLD
ENV)。
【0072】初期的な現在の状態において(ポインタビ
ットレジスタ121,123の)、REG及びENVビ
ットの両方はset=0(0,0)であり、従って作業
用セットはレジスタセット0,110である。ストアE
NV(FSTENV)命令が実行されると、ENVの格
納が実行され且つenv_dirtyビット及びreg
_dirtyビットはdon’t careであるの
で、スヌープヒット(is_match)は存在しな
い。従って、ENVのみが保存される場合には、レジス
タ121内のENVポインタビットが提供される唯一の
ポインタである。従って、次の状態は(1,0)であ
る。ロードENV(FLDENV)が実行され且つスヌ
ープメカニズムが、保存したENVアドレスがロード命
令におけるアドレスと同一(一致)であることを判別す
る場合には、次の状態は(1,0)に止どまる。なぜな
らば、ENVは「オンチップ」イメージからロードする
ことが可能だからである。次に、FNSAVE命令のた
めに、REG及びENVポインタビットの両方が(0,
0)から(1,1)へフリップされる。なぜならば、こ
の命令はREG及びENV状態の両方を保存するからで
ある。保存した状態がFRSTOR命令によって回復さ
れるべきであり且つアドレス一致が発生する場合には、
ENV及びREGビットは(1,1)の次の状態に止ど
まる。上述した条件のうちの何れもが満足されない場合
(ELSE)、ENV及びREGポインタビット値にお
いて変化はない。注意すべきことであるが、FNSAV
E、FRSTOR、FSTENV、FLDENV命令は
相互に排他的な態様で実行し、従ってステートマシン内
のこれらの命令に対応するフィールドのうちの一つのみ
が一度においてアクティブ即ち活性状態となることが可
能であるに過ぎない。
ットレジスタ121,123の)、REG及びENVビ
ットの両方はset=0(0,0)であり、従って作業
用セットはレジスタセット0,110である。ストアE
NV(FSTENV)命令が実行されると、ENVの格
納が実行され且つenv_dirtyビット及びreg
_dirtyビットはdon’t careであるの
で、スヌープヒット(is_match)は存在しな
い。従って、ENVのみが保存される場合には、レジス
タ121内のENVポインタビットが提供される唯一の
ポインタである。従って、次の状態は(1,0)であ
る。ロードENV(FLDENV)が実行され且つスヌ
ープメカニズムが、保存したENVアドレスがロード命
令におけるアドレスと同一(一致)であることを判別す
る場合には、次の状態は(1,0)に止どまる。なぜな
らば、ENVは「オンチップ」イメージからロードする
ことが可能だからである。次に、FNSAVE命令のた
めに、REG及びENVポインタビットの両方が(0,
0)から(1,1)へフリップされる。なぜならば、こ
の命令はREG及びENV状態の両方を保存するからで
ある。保存した状態がFRSTOR命令によって回復さ
れるべきであり且つアドレス一致が発生する場合には、
ENV及びREGビットは(1,1)の次の状態に止ど
まる。上述した条件のうちの何れもが満足されない場合
(ELSE)、ENV及びREGポインタビット値にお
いて変化はない。注意すべきことであるが、FNSAV
E、FRSTOR、FSTENV、FLDENV命令は
相互に排他的な態様で実行し、従ってステートマシン内
のこれらの命令に対応するフィールドのうちの一つのみ
が一度においてアクティブ即ち活性状態となることが可
能であるに過ぎない。
【0073】次の可能な現在の状態は、ENVがレジス
タセット0からであり且つREGがレジスタセット
(1,0)からである場合である。この場合にも、FS
TENV命令はENVポインタビットに影響を与えるに
過ぎず、且つ次の状態はレジスタセット1からENVへ
フリップされ、REGポインタは同一に止どまる。従っ
て、次の状態は(1,1)である。FLDENV命令
も、ENVポインタビットに影響を与えるに過ぎず、且
つアドレスが一致する場合には、次の状態は(1,1)
である。FNSAVE及びFRSTOR命令の場合に
は、ENV及びREGポインタビットの両方が影響され
且つフリップされて、これらの場合の両方に対する次の
状態は(1,0)である。上述した条件のうちの何れも
が発生しない場合には、現在の状態は不変である。
タセット0からであり且つREGがレジスタセット
(1,0)からである場合である。この場合にも、FS
TENV命令はENVポインタビットに影響を与えるに
過ぎず、且つ次の状態はレジスタセット1からENVへ
フリップされ、REGポインタは同一に止どまる。従っ
て、次の状態は(1,1)である。FLDENV命令
も、ENVポインタビットに影響を与えるに過ぎず、且
つアドレスが一致する場合には、次の状態は(1,1)
である。FNSAVE及びFRSTOR命令の場合に
は、ENV及びREGポインタビットの両方が影響され
且つフリップされて、これらの場合の両方に対する次の
状態は(1,0)である。上述した条件のうちの何れも
が発生しない場合には、現在の状態は不変である。
【0074】現在の状態がレジスタセット1からのEN
V及びレジスタセット0からのREGを使用する場合
(1,0)、FSTENV及びFLDENV命令はEN
Vポインタビットをフリップし、次の状態を(0,0)
とさせる。一方、FNSAVE及びFRSTOR命令が
ENV及びREGポインタビットの両方に影響を与え、
それらを次の状態に対して(0,1)へ変化させる。こ
れらの条件が発生しない場合には、何ら変化は存在しな
い。
V及びレジスタセット0からのREGを使用する場合
(1,0)、FSTENV及びFLDENV命令はEN
Vポインタビットをフリップし、次の状態を(0,0)
とさせる。一方、FNSAVE及びFRSTOR命令が
ENV及びREGポインタビットの両方に影響を与え、
それらを次の状態に対して(0,1)へ変化させる。こ
れらの条件が発生しない場合には、何ら変化は存在しな
い。
【0075】最後に、作業用セットがレジスタセット1
である場合には(ENV及びREGがset=1)、
(1,1)、FSTENV及びFLDENV命令がEN
V状態のみを保存し且つ回復し且つENVポインタビッ
トは0へフリップされ、次の状態を(0,1)とさせ
る。この場合も、FNSAVE及びFRSTOR命令
は、ENV及びREGビットの両方をしてフリップさせ
且つ次の状態は(0,0)となる。そうでない場合に
は、REG及びENVポインタビット値において変化は
なく且つそれらは(1,1)に止どまる。
である場合には(ENV及びREGがset=1)、
(1,1)、FSTENV及びFLDENV命令がEN
V状態のみを保存し且つ回復し且つENVポインタビッ
トは0へフリップされ、次の状態を(0,1)とさせ
る。この場合も、FNSAVE及びFRSTOR命令
は、ENV及びREGビットの両方をしてフリップさせ
且つ次の状態は(0,0)となる。そうでない場合に
は、REG及びENVポインタビット値において変化は
なく且つそれらは(1,1)に止どまる。
【0076】前に説明したように、このステートマシン
においては四つの状態が存在しており、即ち状態00、
状態01、状態10、状態11である。これらの状態
は、エンコードされ、従ってエンコードされた状態ビッ
トはポインタビットである。最大桁ビット(最も左側の
ビット)はENVポインタビットに対応し、一方最小桁
ビット(最も右側のビット)はREGポインタビットに
対応する。例えば、ステートマシンが状態10にある場
合には、作業用セットはレジスタセット1からの環境レ
ジスタ、レジスタセット0からのデータレジスタを有し
ている。このステートマシンを駆動するために使用され
る入力信号はis_fnsave、is_frsto
r、is_fnstenv、is_fldenv、is
_match、env_dirty、reg_dirt
yである。信号is_fnsave、is_frsto
r、is_fnstenv、is_fldenvはフェ
ッチ/デコード/発行ステージ18から発生され、且つ
それらのうちの一つのみが一度に高状態(1)となるこ
とが可能である。信号is_matchは、スヌープレ
ジスタからのアドレスとFRSTOR又はFLDENV
命令のうちの何れかのソースオペランドからのアドレス
との間でアドレスの一致が見つかったことを意味する。
信号env_dirty及びreg_dirtyはダー
ティビットステートマシンの現在の状態ビットである。
においては四つの状態が存在しており、即ち状態00、
状態01、状態10、状態11である。これらの状態
は、エンコードされ、従ってエンコードされた状態ビッ
トはポインタビットである。最大桁ビット(最も左側の
ビット)はENVポインタビットに対応し、一方最小桁
ビット(最も右側のビット)はREGポインタビットに
対応する。例えば、ステートマシンが状態10にある場
合には、作業用セットはレジスタセット1からの環境レ
ジスタ、レジスタセット0からのデータレジスタを有し
ている。このステートマシンを駆動するために使用され
る入力信号はis_fnsave、is_frsto
r、is_fnstenv、is_fldenv、is
_match、env_dirty、reg_dirt
yである。信号is_fnsave、is_frsto
r、is_fnstenv、is_fldenvはフェ
ッチ/デコード/発行ステージ18から発生され、且つ
それらのうちの一つのみが一度に高状態(1)となるこ
とが可能である。信号is_matchは、スヌープレ
ジスタからのアドレスとFRSTOR又はFLDENV
命令のうちの何れかのソースオペランドからのアドレス
との間でアドレスの一致が見つかったことを意味する。
信号env_dirty及びreg_dirtyはダー
ティビットステートマシンの現在の状態ビットである。
【0077】ポインタビットステートマシンは、(1)
FNSAVE命令がデコードステージにおいて見つかる
か、又は(2)FRSTOR命令がデコードステージに
おいて見つかるかの何れかの場合に、状態からの遷移を
行う。又、オンチップイメージはFRSTORが回復す
ることを意図した状態(信号is_matchによって
示される)を有しており且つオンチップイメージのメモ
リ内容が最後の状態保存操作以来修正されていないこと
(信号env_dirty及びreg_dirtyの両
方が低状態であることによって示される)を理解するこ
とが可能である。状態図(図10)において、条件
(1)及び(2)は「OR」処理され、信号「s」はそ
れが状態に関連しているものであることを示す。ポイン
タビットステートマシンは、更に、(3)FNSTEN
V命令がデコードステージにおいて見つかるか、又は
(4)FLDENV命令がデコードステージにおいて見
つかる場合に、状態からの遷移を行う。オンチップイメ
ージはFLDENVが回復することを意図した環境デー
タを有しており(信号is_matchによって示され
る)且つオンチップイメージのメモリ内容が最後の状態
保存以来修正されていないこと(信号env_dirt
yが低状態にあることによって示される)が理解され
る。状態図(図10)において、条件(3)及び(4)
が「OR」処理され、信号「e」はそれが環境データに
関連しているものであることを示す。ステートマシン
は、その他の全ての場合においてはその元の状態に止ど
まる。状態遷移条件は図10における各状態遷移円弧と
関連している。
FNSAVE命令がデコードステージにおいて見つかる
か、又は(2)FRSTOR命令がデコードステージに
おいて見つかるかの何れかの場合に、状態からの遷移を
行う。又、オンチップイメージはFRSTORが回復す
ることを意図した状態(信号is_matchによって
示される)を有しており且つオンチップイメージのメモ
リ内容が最後の状態保存操作以来修正されていないこと
(信号env_dirty及びreg_dirtyの両
方が低状態であることによって示される)を理解するこ
とが可能である。状態図(図10)において、条件
(1)及び(2)は「OR」処理され、信号「s」はそ
れが状態に関連しているものであることを示す。ポイン
タビットステートマシンは、更に、(3)FNSTEN
V命令がデコードステージにおいて見つかるか、又は
(4)FLDENV命令がデコードステージにおいて見
つかる場合に、状態からの遷移を行う。オンチップイメ
ージはFLDENVが回復することを意図した環境デー
タを有しており(信号is_matchによって示され
る)且つオンチップイメージのメモリ内容が最後の状態
保存以来修正されていないこと(信号env_dirt
yが低状態にあることによって示される)が理解され
る。状態図(図10)において、条件(3)及び(4)
が「OR」処理され、信号「e」はそれが環境データに
関連しているものであることを示す。ステートマシン
は、その他の全ての場合においてはその元の状態に止ど
まる。状態遷移条件は図10における各状態遷移円弧と
関連している。
【0078】図9を参照すると、2ビットのダーティビ
ットステートマシンが示されておりこれについて以下に
説明する。図8のポインタステートマシンの場合におけ
るように、FNSAVE、FRSTOR、FSTEN
V、FLDENV命令は相互に排他的であり且つ単一の
時刻において一つのみがアクティブ即ち活性状態となる
ことが可能である。一般的に、ダーティビットがシャド
ー型作業用セットへ取付けられる。レジスタ122から
のENVダーティビット及び/又はレジスタ124から
のREGダーティビットがオン、即ちset=1、即ち
1にセットされていると、対応する環境又はレジスタ情
報はメモリから検索されねばならない。例えば、ENV
ダーティビット122が論理1であると、切換えられる
タスク用のENVはメモリから回復されねばならない。
ダーティビットレジスタ122,124における実際の
ビットは二つの理由の場合に論理1となる。即ち、
(1)該ビットがその使用を防止するために何らかの
「don’t care」インスタンスに対しset=
1であり、且つ(2)実際のスヌープヒットが発生する
場合である。
ットステートマシンが示されておりこれについて以下に
説明する。図8のポインタステートマシンの場合におけ
るように、FNSAVE、FRSTOR、FSTEN
V、FLDENV命令は相互に排他的であり且つ単一の
時刻において一つのみがアクティブ即ち活性状態となる
ことが可能である。一般的に、ダーティビットがシャド
ー型作業用セットへ取付けられる。レジスタ122から
のENVダーティビット及び/又はレジスタ124から
のREGダーティビットがオン、即ちset=1、即ち
1にセットされていると、対応する環境又はレジスタ情
報はメモリから検索されねばならない。例えば、ENV
ダーティビット122が論理1であると、切換えられる
タスク用のENVはメモリから回復されねばならない。
ダーティビットレジスタ122,124における実際の
ビットは二つの理由の場合に論理1となる。即ち、
(1)該ビットがその使用を防止するために何らかの
「don’t care」インスタンスに対しset=
1であり、且つ(2)実際のスヌープヒットが発生する
場合である。
【0079】図9のダーティビットステートマシンはF
NSAVE、FRSTOR、FSTENV、FLDEN
V命令の各々に対応する擬似コードを参照して前に説明
したプロセスの実現例を示している。ダーティビットス
テートマシンに対する「don’t care」状態の
多くは図9から削除されている。
NSAVE、FRSTOR、FSTENV、FLDEN
V命令の各々に対応する擬似コードを参照して前に説明
したプロセスの実現例を示している。ダーティビットス
テートマシンに対する「don’t care」状態の
多くは図9から削除されている。
【0080】図9に示した最初の現在の状態の場合、レ
ジスタ122におけるENVダーティビット及びレジス
タ124におけるREGダーティビットはset=0、
即ち0にセットされており、スヌープヒットが発生して
おらず且つ前の状態から保存した情報が修正されていな
いことを表わす。FSTENV命令の場合、保存したE
NV情報のアドレスが一致するか否かは問題ではない。
なぜならば、回復される情報が存在しないからである。
CPUは、スヌープアドレスレジスタ120をFSTE
NVストアアドレスで上書きし、且つENVダーティビ
ットはオフを維持し、REGダーティビットはターンオ
ンされてストアされているENV情報から構成される新
たなオンチップイメージを形成する。FLDENV命令
が実行されると、CPUはFLDENVデータアドレス
をスヌープアドレスと比較し且つENVダーティビット
をルックアップする。ENV及びREGダーティビット
は、(1)アドレス比較が一致であり且つENVダーテ
ィビットがオフ(0)である場合に、ターンオンされ
る。現在の状態はENVダーティビットがset=0、
即ち0にセットされており、且つ一致が発生している
(is_match)であるから、ENV及びREGダ
ーティビットの両方がset=1、即ち1にセットされ
ている(1,1)。FRSTOR命令が実行されると、
CPUは回復命令内のデータアドレスをスヌープレジス
タ120内のアドレスと比較する。ENV及びREGダ
ーティビットは、両方共、それらが両方共初期的にオフ
であり且つアドレスの一致が発生した場合に、次の状態
(1,1)へターンオンされる。上述した条件の何れも
が発生しない場合(ELSE)、変化は存在せず且つE
NV及びREGダーティビットの次の状態は(0,0)
に止どまる。
ジスタ122におけるENVダーティビット及びレジス
タ124におけるREGダーティビットはset=0、
即ち0にセットされており、スヌープヒットが発生して
おらず且つ前の状態から保存した情報が修正されていな
いことを表わす。FSTENV命令の場合、保存したE
NV情報のアドレスが一致するか否かは問題ではない。
なぜならば、回復される情報が存在しないからである。
CPUは、スヌープアドレスレジスタ120をFSTE
NVストアアドレスで上書きし、且つENVダーティビ
ットはオフを維持し、REGダーティビットはターンオ
ンされてストアされているENV情報から構成される新
たなオンチップイメージを形成する。FLDENV命令
が実行されると、CPUはFLDENVデータアドレス
をスヌープアドレスと比較し且つENVダーティビット
をルックアップする。ENV及びREGダーティビット
は、(1)アドレス比較が一致であり且つENVダーテ
ィビットがオフ(0)である場合に、ターンオンされ
る。現在の状態はENVダーティビットがset=0、
即ち0にセットされており、且つ一致が発生している
(is_match)であるから、ENV及びREGダ
ーティビットの両方がset=1、即ち1にセットされ
ている(1,1)。FRSTOR命令が実行されると、
CPUは回復命令内のデータアドレスをスヌープレジス
タ120内のアドレスと比較する。ENV及びREGダ
ーティビットは、両方共、それらが両方共初期的にオフ
であり且つアドレスの一致が発生した場合に、次の状態
(1,1)へターンオンされる。上述した条件の何れも
が発生しない場合(ELSE)、変化は存在せず且つE
NV及びREGダーティビットの次の状態は(0,0)
に止どまる。
【0081】ダーティビットの次の現在の状態は、EN
Vダーティビットがset=0、即ち0にセットされ、
且つREGダーティビットがset=1、即ち1にセッ
トされる場合であり、格納されたREG状態が修正され
たことを表わす。この場合には、FLDENV命令が発
生し且つアドレスの一致が存在しており、且つENVダ
ーティビットがオフ(0)である場合には、ENV及び
REGダーティビットは、両方共、次の状態へターンオ
ンされる(set=1)(1,1)。FNSAVE命令
の場合、アドレスの一致が発生するか否かは問題ではな
い。なぜならば、スヌープレジスタ120のアドレスは
FNSAVEアドレスで上書きされるからである。EN
V及びREGダーティビットは、両方共、ターンオフさ
れ且つ新たなオフチップイメージが形成される。上述し
た条件のうちの何れもが満足されることがない場合に
は、ENV及びREGダーティビットの現在の状態が
(0,1)である場合には、次の状態は現在の状態から
変化されることはなく且つ(0,1)に止どまる。
Vダーティビットがset=0、即ち0にセットされ、
且つREGダーティビットがset=1、即ち1にセッ
トされる場合であり、格納されたREG状態が修正され
たことを表わす。この場合には、FLDENV命令が発
生し且つアドレスの一致が存在しており、且つENVダ
ーティビットがオフ(0)である場合には、ENV及び
REGダーティビットは、両方共、次の状態へターンオ
ンされる(set=1)(1,1)。FNSAVE命令
の場合、アドレスの一致が発生するか否かは問題ではな
い。なぜならば、スヌープレジスタ120のアドレスは
FNSAVEアドレスで上書きされるからである。EN
V及びREGダーティビットは、両方共、ターンオフさ
れ且つ新たなオフチップイメージが形成される。上述し
た条件のうちの何れもが満足されることがない場合に
は、ENV及びREGダーティビットの現在の状態が
(0,1)である場合には、次の状態は現在の状態から
変化されることはなく且つ(0,1)に止どまる。
【0082】ENV及びREGダーティビットの現在の
状態が(1,1)であり且つFSTENV命令が実行さ
れると、CPUはスヌープレジスタ120をFSTEN
V命令からのストアアドレスで上書きする。ENVダー
ティビットがターンオフされ(0)且つREGダーティ
ビットがターンオンされる(1)。従って、次の状態は
ENVダーティビットがset=0であり、REGダー
ティビットがset=1のままであり、即ち(0,1)
である。FNSAVE命令の場合、スヌープレジスタの
アドレスもFNSAVE命令からのストアアドレスで上
書きされる。ENV及びREGダーティビットはset
=0とされ、即ち0にセットされる(0,0)。これら
の条件が満足されない場合(ELSE)、変化が発生す
ることはなく且つ次の状態は現在の状態と同一であり、
即ち(1,1)である。
状態が(1,1)であり且つFSTENV命令が実行さ
れると、CPUはスヌープレジスタ120をFSTEN
V命令からのストアアドレスで上書きする。ENVダー
ティビットがターンオフされ(0)且つREGダーティ
ビットがターンオンされる(1)。従って、次の状態は
ENVダーティビットがset=0であり、REGダー
ティビットがset=1のままであり、即ち(0,1)
である。FNSAVE命令の場合、スヌープレジスタの
アドレスもFNSAVE命令からのストアアドレスで上
書きされる。ENV及びREGダーティビットはset
=0とされ、即ち0にセットされる(0,0)。これら
の条件が満足されない場合(ELSE)、変化が発生す
ることはなく且つ次の状態は現在の状態と同一であり、
即ち(1,1)である。
【0083】このダーティビットステートマシンにおい
ては三つの状態が存在しており、即ち状態00,状態0
1,状態11である。これらの状態は、エンコードさ
れ、従ってエンコードされた状態ビットはダーティビッ
トである。最大桁ビット(最も左側のビット)はENV
ダーティビットに対応しており、一方最小桁ビット(最
も右側のビット)はREGダーティビットに対応してい
る。例えば、ステートマシンが状態01にある場合に
は、シャドー型セット内の環境レジスタは非ダーティで
あるとしてマーク付けがされ且つシャドー型セット内の
データレジスタファイルはダーティであるとしてマーク
付けがされる。該ステートマシンをドライブするために
使用される入力信号はis_fnsave、is_fr
stor、is_fnstenv、is_flden
v、is_matchである。信号is_fnsav
e、is_frstor、is_fnstenv、is
_fldenvはフェッチ/デコード/発行ステージ1
8から発行され、且つそれらのうちの一つのみがある時
刻において高状態(1)であることが可能である。信号
is_matchは、スヌープレジスタからのアドレス
とFRSTOR又はFLDENV命令のうちの何れかの
ソースオペランドからのアドレスとの間においてアドレ
スの一致が見出されることを意味する。
ては三つの状態が存在しており、即ち状態00,状態0
1,状態11である。これらの状態は、エンコードさ
れ、従ってエンコードされた状態ビットはダーティビッ
トである。最大桁ビット(最も左側のビット)はENV
ダーティビットに対応しており、一方最小桁ビット(最
も右側のビット)はREGダーティビットに対応してい
る。例えば、ステートマシンが状態01にある場合に
は、シャドー型セット内の環境レジスタは非ダーティで
あるとしてマーク付けがされ且つシャドー型セット内の
データレジスタファイルはダーティであるとしてマーク
付けがされる。該ステートマシンをドライブするために
使用される入力信号はis_fnsave、is_fr
stor、is_fnstenv、is_flden
v、is_matchである。信号is_fnsav
e、is_frstor、is_fnstenv、is
_fldenvはフェッチ/デコード/発行ステージ1
8から発行され、且つそれらのうちの一つのみがある時
刻において高状態(1)であることが可能である。信号
is_matchは、スヌープレジスタからのアドレス
とFRSTOR又はFLDENV命令のうちの何れかの
ソースオペランドからのアドレスとの間においてアドレ
スの一致が見出されることを意味する。
【0084】ダーティビットステートマシンは、FRS
TOR又はFLDENV命令のうちの何れかがデコード
ステージにおいて見出され且つオンチップイメージがF
RSTOR又はFLDENV命令のうちの何れかが回復
することを意図した状態又は環境データを有するもので
ある場合には、状態00から状態11への遷移を行う。
環境ダーティビット及びレジスタダーティビットは、両
方共、高状態のマークが付けられて、シャドー型セット
が回復の後において有効なオンチップイメージを有する
ものではないことを示す。状態00から状態01への遷
移は、FSTENV命令がデコードステージにおいて見
つけられる場合に行われる。環境ダーティビットは低状
態のマークが付けられて、シャドー型セットからの環境
レジスタはオンチップイメージの一部であることを示
す。レジスタダーティビットは高状態であるとしてマー
クが付けられて、シャドー型セット内のレジスタファイ
ルがオンチップイメージの一部ではないことを示す。そ
うでない場合には、該ステートマシンは状態00のまま
に止どまる。
TOR又はFLDENV命令のうちの何れかがデコード
ステージにおいて見出され且つオンチップイメージがF
RSTOR又はFLDENV命令のうちの何れかが回復
することを意図した状態又は環境データを有するもので
ある場合には、状態00から状態11への遷移を行う。
環境ダーティビット及びレジスタダーティビットは、両
方共、高状態のマークが付けられて、シャドー型セット
が回復の後において有効なオンチップイメージを有する
ものではないことを示す。状態00から状態01への遷
移は、FSTENV命令がデコードステージにおいて見
つけられる場合に行われる。環境ダーティビットは低状
態のマークが付けられて、シャドー型セットからの環境
レジスタはオンチップイメージの一部であることを示
す。レジスタダーティビットは高状態であるとしてマー
クが付けられて、シャドー型セット内のレジスタファイ
ルがオンチップイメージの一部ではないことを示す。そ
うでない場合には、該ステートマシンは状態00のまま
に止どまる。
【0085】ダーティビットステートマシンは、FNS
AVE命令がデコードステージにおいて見出される場合
に、状態11から状態00への遷移を行う。環境ダーテ
ィビット及びレジスタダーティビットは、両方共、低状
態としてマークが付けられ、シャドー型セット内の環境
レジスタ及びレジスタファイルの両方共オンチップイメ
ージの一部であることを意味する。状態11から状態0
1への遷移は、FSTENV命令がデコードステージに
おいて見出される場合に行われる。環境ダーティビット
は、低状態であるとしてマークが付けられて、シャドー
型セットからの環境レジスタがオンチップイメージの一
部であることを意味する。レジスタダーティビットは、
高状態であるとしてマークが付けられて、シャドー型セ
ット内のレジスタファイルがオンチップイメージの一部
でないことを意味する。そうでない場合には、状態マシ
ンは状態11に止どまる。
AVE命令がデコードステージにおいて見出される場合
に、状態11から状態00への遷移を行う。環境ダーテ
ィビット及びレジスタダーティビットは、両方共、低状
態としてマークが付けられ、シャドー型セット内の環境
レジスタ及びレジスタファイルの両方共オンチップイメ
ージの一部であることを意味する。状態11から状態0
1への遷移は、FSTENV命令がデコードステージに
おいて見出される場合に行われる。環境ダーティビット
は、低状態であるとしてマークが付けられて、シャドー
型セットからの環境レジスタがオンチップイメージの一
部であることを意味する。レジスタダーティビットは、
高状態であるとしてマークが付けられて、シャドー型セ
ット内のレジスタファイルがオンチップイメージの一部
でないことを意味する。そうでない場合には、状態マシ
ンは状態11に止どまる。
【0086】ダーティビットステートマシンは、FNS
AVE命令がデコードステージにおいて見出される場合
に、状態01から状態00への遷移を行う。環境ダーテ
ィビット及びレジスタダーティビットは、両方共、低状
態としてマークが付けられて、シャドー型セットからの
環境レジスタ及びレジスタファイルが両方共オンチップ
イメージの一部であることを意味する。状態01から状
態11への遷移は、FLDENV命令がデコードステー
ジにおいて見出され且つオンチップイメージがFLDE
NVが回復することを意図した環境データを包含するも
のである場合に発生する。環境ダーティビット及びレジ
スタダーティビットは、両方共、高状態であるとしてマ
ークが付けられて、シャドー型セットが有効なオンチッ
プイメージを有するものではないことを意味する。そう
でない場合には、ステートマシンは状態01に止どま
る。
AVE命令がデコードステージにおいて見出される場合
に、状態01から状態00への遷移を行う。環境ダーテ
ィビット及びレジスタダーティビットは、両方共、低状
態としてマークが付けられて、シャドー型セットからの
環境レジスタ及びレジスタファイルが両方共オンチップ
イメージの一部であることを意味する。状態01から状
態11への遷移は、FLDENV命令がデコードステー
ジにおいて見出され且つオンチップイメージがFLDE
NVが回復することを意図した環境データを包含するも
のである場合に発生する。環境ダーティビット及びレジ
スタダーティビットは、両方共、高状態であるとしてマ
ークが付けられて、シャドー型セットが有効なオンチッ
プイメージを有するものではないことを意味する。そう
でない場合には、ステートマシンは状態01に止どま
る。
【0087】図10を参照すると、図8のポインタビッ
トステートマシンに対する状態線図が示されている。四
つの可能なポインタビット状態のうちの各々が示されて
おり、第一キャラクタはレジスタ121におけるENV
ポインタを表わしており且つ第二キャラクタはレジスタ
123におけるREGポインタを表わしている。例え
ば、状態(0,0)は、ENVポインタ及びREGポイ
ンタが、両方共、set=0、即ち0にセットされてお
り、従ってレジスタセット0が作業用セットであること
を表わしている。状態(1,1)は、レジスタセット1
が作業用セットであることを表わしている。なぜなら
ば、ENV及びREGポインタは、両方共、ENVレジ
スタ102及びREGレジスタ101を参照するからで
ある。状態(1,0)は、作業用セットがENVレジス
タ102及びREG111、又はレジスタセット1及び
0の組合わせを包含していることを意味している。同様
に、状態(0,1)は、ENVレジスタ112及びRE
G101を有しており、従ってレジスタ1及び0の組合
せは作業用セットとして指定される。
トステートマシンに対する状態線図が示されている。四
つの可能なポインタビット状態のうちの各々が示されて
おり、第一キャラクタはレジスタ121におけるENV
ポインタを表わしており且つ第二キャラクタはレジスタ
123におけるREGポインタを表わしている。例え
ば、状態(0,0)は、ENVポインタ及びREGポイ
ンタが、両方共、set=0、即ち0にセットされてお
り、従ってレジスタセット0が作業用セットであること
を表わしている。状態(1,1)は、レジスタセット1
が作業用セットであることを表わしている。なぜなら
ば、ENV及びREGポインタは、両方共、ENVレジ
スタ102及びREGレジスタ101を参照するからで
ある。状態(1,0)は、作業用セットがENVレジス
タ102及びREG111、又はレジスタセット1及び
0の組合わせを包含していることを意味している。同様
に、状態(0,1)は、ENVレジスタ112及びRE
G101を有しており、従ってレジスタ1及び0の組合
せは作業用セットとして指定される。
【0088】図10の状態線図において使用した三つの
信号は以下のように定義される。(s)命令がFNSA
VEであり且つFRSTOR命令アドレスがスヌープレ
ジスタアドレスと一致し且つENV及びREGダーティ
ビットが、両方共、オフである場合には、{is_fn
save‖(is_frstor&&is_match
&&!env_dirty&&!reg_dirt
y)};(e)命令がFNSTENVであり且つFLD
ENV命令アドレスがスヌープレジスタアドレスと一致
し且つENVダーティビットがオフである場合には、
{is_fnstenv‖(is_fldenv&&i
s_match&&!env_dirty)};(r)
関数(s)及び(r)の結果が0である場合には、{!
(s‖e)}であり、且つ状態における変化は発生しな
い。
信号は以下のように定義される。(s)命令がFNSA
VEであり且つFRSTOR命令アドレスがスヌープレ
ジスタアドレスと一致し且つENV及びREGダーティ
ビットが、両方共、オフである場合には、{is_fn
save‖(is_frstor&&is_match
&&!env_dirty&&!reg_dirt
y)};(e)命令がFNSTENVであり且つFLD
ENV命令アドレスがスヌープレジスタアドレスと一致
し且つENVダーティビットがオフである場合には、
{is_fnstenv‖(is_fldenv&&i
s_match&&!env_dirty)};(r)
関数(s)及び(r)の結果が0である場合には、{!
(s‖e)}であり、且つ状態における変化は発生しな
い。
【0089】図10の状態線図から理解されるように、
FNSAVE命令及び対応するFRSTOR命令は、信
号内に実施化されており、ENV及びREGポインタビ
ットの両方をして状態を変化させる。例えば、状態
(0,0)は、信号(s)が印加される場合に、状態
(1,1)へ変化する。又、信号(s)が印加される場
合に、状態(1,1)は状態(0,0)へ変化する。同
様に、信号(s)に応答して、状態(0,1)は状態
(1,0)となり且つ状態(1,0)は状態(0,1)
となる。前述したように、FNSAVE命令及びFRS
TOR命令はENVレジスタ及びREGレジスタファイ
ルの両方を保存及び回復させ、従ってENV及びREG
ポインタビットの両方は、これらの命令に応答して状態
を変化させねばならない。
FNSAVE命令及び対応するFRSTOR命令は、信
号内に実施化されており、ENV及びREGポインタビ
ットの両方をして状態を変化させる。例えば、状態
(0,0)は、信号(s)が印加される場合に、状態
(1,1)へ変化する。又、信号(s)が印加される場
合に、状態(1,1)は状態(0,0)へ変化する。同
様に、信号(s)に応答して、状態(0,1)は状態
(1,0)となり且つ状態(1,0)は状態(0,1)
となる。前述したように、FNSAVE命令及びFRS
TOR命令はENVレジスタ及びREGレジスタファイ
ルの両方を保存及び回復させ、従ってENV及びREG
ポインタビットの両方は、これらの命令に応答して状態
を変化させねばならない。
【0090】しかしながら、FNSTENV及びFLD
ENV命令は、ENV状態情報をストア(格納)し且つ
ロードするに過ぎない。従って、ENVポインタビット
のみが信号(e)の印加に応答して状態を変化させる。
図10から、信号(e)に応答して、状態(1,1)が
状態(0,1)となり且つ状態(0,1)が状態(1,
1)へリターンすることを理解することが可能である。
又、信号(e)が印加される場合に、状態(0,0)は
状態(1,0)となる。同様に、信号(e)は状態
(1,0)をして状態(0,0)とさせる。信号(e)
が使用される各場合において、FNSTENV及びFL
DENV命令は、レジスタ121における第一ポインタ
ビット(ENV)のみを変化させ、一方レジスタ123
内のREGポインタビットは一定の状態を維持する。全
ての場合において、信号(r)はENV及びREGポイ
ンタビットの状態において変化を発生させることはな
い。
ENV命令は、ENV状態情報をストア(格納)し且つ
ロードするに過ぎない。従って、ENVポインタビット
のみが信号(e)の印加に応答して状態を変化させる。
図10から、信号(e)に応答して、状態(1,1)が
状態(0,1)となり且つ状態(0,1)が状態(1,
1)へリターンすることを理解することが可能である。
又、信号(e)が印加される場合に、状態(0,0)は
状態(1,0)となる。同様に、信号(e)は状態
(1,0)をして状態(0,0)とさせる。信号(e)
が使用される各場合において、FNSTENV及びFL
DENV命令は、レジスタ121における第一ポインタ
ビット(ENV)のみを変化させ、一方レジスタ123
内のREGポインタビットは一定の状態を維持する。全
ての場合において、信号(r)はENV及びREGポイ
ンタビットの状態において変化を発生させることはな
い。
【0091】図11を参照すると、図9のダーティビッ
トステートマシンを表わす状態線図が示されている。三
つの可能な状態が示されており、即ち(0,0)、
(0,1)、(1,1)が示されている。状態(0,
0)から状態(1,1)へ状態を変化させるためには、
該ステートマシンは、FRSTOR又はFLDENVの
何れかのエンコードされたアドレスとスヌープアドレス
レジスタ120におけるアドレスとの間に一致が存在す
ることを決定する{is_match&&(is_fr
stor‖is_fldenv)}。この場合には、E
NV及びREGダーティビットは、両方共、1にセット
される。状態(1,1)から状態(0,0)への状態変
化は、その命令がFNSAVE(is_fnsave)
であることが判別される場合に発生する。
トステートマシンを表わす状態線図が示されている。三
つの可能な状態が示されており、即ち(0,0)、
(0,1)、(1,1)が示されている。状態(0,
0)から状態(1,1)へ状態を変化させるためには、
該ステートマシンは、FRSTOR又はFLDENVの
何れかのエンコードされたアドレスとスヌープアドレス
レジスタ120におけるアドレスとの間に一致が存在す
ることを決定する{is_match&&(is_fr
stor‖is_fldenv)}。この場合には、E
NV及びREGダーティビットは、両方共、1にセット
される。状態(1,1)から状態(0,0)への状態変
化は、その命令がFNSAVE(is_fnsave)
であることが判別される場合に発生する。
【0092】FLDENV命令内のアドレス及びレジス
タ120内のスヌープアドレスが一致する場合(is_
fldenv&&is_match)に、状態(0,
1)から状態(1,1)への状態が変化する。状態
(1,1)から状態(0,1)への状態変化は、FNS
TENV命令(is_fnstenv)が実行される場
合に発生する。保存命令(is_fnsave)が発生
すると状態(0,1)は状態(0,0)となり、一方ス
トア環境命令が実行されると(is_fnsten
v)、状態が(0,0)から(0,1)へ変化する。
タ120内のスヌープアドレスが一致する場合(is_
fldenv&&is_match)に、状態(0,
1)から状態(1,1)への状態が変化する。状態
(1,1)から状態(0,1)への状態変化は、FNS
TENV命令(is_fnstenv)が実行される場
合に発生する。保存命令(is_fnsave)が発生
すると状態(0,1)は状態(0,0)となり、一方ス
トア環境命令が実行されると(is_fnsten
v)、状態が(0,0)から(0,1)へ変化する。
【0093】状態(0,0)は、命令がストア環境(F
NSTENV)であり且つ対応する回復命令又はロード
環境命令(FRSTOR,FLDENV)のうちの何れ
かにおいてエンコードされているアドレスがスヌープレ
ジスタ内のアドレスと一致する場合{!(is_fns
tenv‖(is_match&&(is_frsto
r‖is_fldenv)))}である場合に維持され
る。
NSTENV)であり且つ対応する回復命令又はロード
環境命令(FRSTOR,FLDENV)のうちの何れ
かにおいてエンコードされているアドレスがスヌープレ
ジスタ内のアドレスと一致する場合{!(is_fns
tenv‖(is_match&&(is_frsto
r‖is_fldenv)))}である場合に維持され
る。
【0094】命令が保存状態又は保存環境命令(FNS
AVE又はFNSTENV)、即ち{!(is_fns
ave‖is_fnstenv)}である場合に、状態
(1,1)は不変のままに止どまる。
AVE又はFNSTENV)、即ち{!(is_fns
ave‖is_fnstenv)}である場合に、状態
(1,1)は不変のままに止どまる。
【0095】最後に、保存命令が実行中であり(FNS
AVE)及びロード環境(FLDENV)命令内のエン
コードされているアドレスがスヌープレジスタ120内
のアドレスと一致する場合、即ち{!(is_fnsa
ve‖(is_fldenv&&is_matc
h))}である場合に、状態(0,1)は不変のままで
ある。
AVE)及びロード環境(FLDENV)命令内のエン
コードされているアドレスがスヌープレジスタ120内
のアドレスと一致する場合、即ち{!(is_fnsa
ve‖(is_fldenv&&is_matc
h))}である場合に、状態(0,1)は不変のままで
ある。
【0096】本発明を実現するマイクロプロセサの動作
の幾つかの例について以下に説明する。これらの例示的
な場合においては、プログラマはインテルアーキテクチ
ャのメモリスタックモデルに従うことが必要ではないこ
とに注意すべきである。メモリスタックモデルの下にお
いては、命令FNSAVE/FRSTOR又はFNST
ENV/FLDENVは対であるように思われる。最も
内側のストア即ち格納部は、常に、ストアアドレスから
のロード検索データによって追従される。
の幾つかの例について以下に説明する。これらの例示的
な場合においては、プログラマはインテルアーキテクチ
ャのメモリスタックモデルに従うことが必要ではないこ
とに注意すべきである。メモリスタックモデルの下にお
いては、命令FNSAVE/FRSTOR又はFNST
ENV/FLDENVは対であるように思われる。最も
内側のストア即ち格納部は、常に、ストアアドレスから
のロード検索データによって追従される。
【0097】これらの例においては、以下の表記法が適
用される。即ち、(1)スヌープアドレスレジスタに対
してSnoop Reg.;(2)ENVポインタに対
してENV ptr;(3)ENVダーティビットに対
してENV drt;(4)REGポインタに対してR
EG ptr;(5)REGダーティビットに対してR
EG drt;(6)発生事象は、このランにおいて何
かが発生した場合に、そのSnoop Reg.、EN
V ptrなどに対する結果が対応する行上に記録さ
れ;(7)メモリからのロードは、ロードされているイ
メージの供給源を表わし、「No」は、そのイメージが
内部プライベートレジスタ(シャドー型レジスタセット
から回復)からロードされたものであることを意味し且
つ「Yes」はそのイメージがメモリからロードされた
ものであることを意味し;(8)「X」は、その値が
「don’t care」であることを意味し;(9)
〔アドレス〕は、〔〕内側の記号がアドレスであること
を意味する。
用される。即ち、(1)スヌープアドレスレジスタに対
してSnoop Reg.;(2)ENVポインタに対
してENV ptr;(3)ENVダーティビットに対
してENV drt;(4)REGポインタに対してR
EG ptr;(5)REGダーティビットに対してR
EG drt;(6)発生事象は、このランにおいて何
かが発生した場合に、そのSnoop Reg.、EN
V ptrなどに対する結果が対応する行上に記録さ
れ;(7)メモリからのロードは、ロードされているイ
メージの供給源を表わし、「No」は、そのイメージが
内部プライベートレジスタ(シャドー型レジスタセット
から回復)からロードされたものであることを意味し且
つ「Yes」はそのイメージがメモリからロードされた
ものであることを意味し;(8)「X」は、その値が
「don’t care」であることを意味し;(9)
〔アドレス〕は、〔〕内側の記号がアドレスであること
を意味する。
【0098】最初の例は、前に説明したメモリスタック
モデルに続くものである。
モデルに続くものである。
【0099】例1
【0100】
【数6】
【0101】この例においては、回復命令(frsto
r〔A〕)が、内部プライベートレジスタENV及びR
EG(現在再開中である前のタスクの状態を維持してい
たシャドー型セット)からの浮動小数点状態をロードす
る。両方のダーティビットがfrstor〔A〕によっ
てターンオンされる(set=1)。しかしながら、ア
ドレスB(frstor〔B〕)を包含する回復命令
は、メモリから浮動小数点状態をロードする。なぜなら
ば、メモリ内のREGイメージは修正されているからで
ある(スヌープヒット)。frstor〔B〕命令は、
メモリからのイメージをロードするので、円形状のバッ
ファを前進させるものではない。
r〔A〕)が、内部プライベートレジスタENV及びR
EG(現在再開中である前のタスクの状態を維持してい
たシャドー型セット)からの浮動小数点状態をロードす
る。両方のダーティビットがfrstor〔A〕によっ
てターンオンされる(set=1)。しかしながら、ア
ドレスB(frstor〔B〕)を包含する回復命令
は、メモリから浮動小数点状態をロードする。なぜなら
ば、メモリ内のREGイメージは修正されているからで
ある(スヌープヒット)。frstor〔B〕命令は、
メモリからのイメージをロードするので、円形状のバッ
ファを前進させるものではない。
【0102】次の例もメモリスタックモデルに従うもの
である。
である。
【0103】例2
【0104】
【数7】
【0105】この場合には、ロード環境命令「flde
nv〔A〕」が、オンチップイメージの内部プライベー
トレジスタからの浮動小数点環境をロードする(EN
V)。アドレスBに対しての中間のストア環境命令が存
在していたので、ロード環境命令(fldenv
〔B〕)は、又、オンチップイメージのプライベート内
部レジスタからの浮動小数点環境をロードすることも可
能である。
nv〔A〕」が、オンチップイメージの内部プライベー
トレジスタからの浮動小数点環境をロードする(EN
V)。アドレスBに対しての中間のストア環境命令が存
在していたので、ロード環境命令(fldenv
〔B〕)は、又、オンチップイメージのプライベート内
部レジスタからの浮動小数点環境をロードすることも可
能である。
【0106】3番目の例はメモリスタックモデルに従う
ものではなく且つ連続的なセーブ及びロード命令が許容
される。
ものではなく且つ連続的なセーブ及びロード命令が許容
される。
【0107】例3
【0108】
【数8】
【0109】尚、この例においては、アドレスBに対す
るストア環境(fnstenv〔B〕)が実行される時
までに、作業用セットはレジスタセット1のENV及び
レジスタセット0のREGファイルである。従って、オ
ンチップイメージは、レジスタセット0のENVレジス
タと、シャドー型セットに対応するレジスタ1に対する
REGファイルの反対の組合わせである。オンチップイ
メージ/シャドー型セットのENVレジスタ(セット0
のENVレジスタ)は、ストア環境命令(fstenv
〔B〕)が実行された後にダーティであるとしてマーク
付けがされる。レジスタセット1のREGファイルは、
修正されないまま止どまる。なぜならば、それは、スト
ア環境命令FSTENVによって影響を受けることはな
く且つアドレスAに対する保存命令(fnsave
〔A〕)に起因して発生したオンチップイメージの一部
を維持するからである。従って、frstor〔B〕命
令は、アドレスの一致が存在する場合であっても、メモ
リから浮動小数点状態を再ロードせねばならず、即ち、
それは、REGファイルのオンチップイメージが前のf
nsave〔A〕命令によって制御され且つその後のf
stenv命令がREGファイルに影響を与えることが
ないものであるから、メモリから再ロードせねばならな
い。
るストア環境(fnstenv〔B〕)が実行される時
までに、作業用セットはレジスタセット1のENV及び
レジスタセット0のREGファイルである。従って、オ
ンチップイメージは、レジスタセット0のENVレジス
タと、シャドー型セットに対応するレジスタ1に対する
REGファイルの反対の組合わせである。オンチップイ
メージ/シャドー型セットのENVレジスタ(セット0
のENVレジスタ)は、ストア環境命令(fstenv
〔B〕)が実行された後にダーティであるとしてマーク
付けがされる。レジスタセット1のREGファイルは、
修正されないまま止どまる。なぜならば、それは、スト
ア環境命令FSTENVによって影響を受けることはな
く且つアドレスAに対する保存命令(fnsave
〔A〕)に起因して発生したオンチップイメージの一部
を維持するからである。従って、frstor〔B〕命
令は、アドレスの一致が存在する場合であっても、メモ
リから浮動小数点状態を再ロードせねばならず、即ち、
それは、REGファイルのオンチップイメージが前のf
nsave〔A〕命令によって制御され且つその後のf
stenv命令がREGファイルに影響を与えることが
ないものであるから、メモリから再ロードせねばならな
い。
【0110】例4は、メモリスタックモデルに従うもの
ではなく、且つ連続的保存/格納命令の可能性に対処す
るものである。
ではなく、且つ連続的保存/格納命令の可能性に対処す
るものである。
【0111】例4
【0112】
【数9】
【0113】この場合には、ロード環境命令(flde
nv〔A〕)は、保存命令(fnsave〔A〕)によ
って前に保存されたENVイメージを再ロードすること
を試みる。このロード環境命令は、CPU内部プライベ
ートレジスタ(オンチップイメージ)からENVイメー
ジを得ることが可能である。fldenv〔A〕命令に
続いて、作業用セットがレジスタセット0からのENV
レジスタとレジスタセット1からのREGファイルとに
よって構成される。保存命令fnsave〔A〕のEN
Vオンチップイメージは作業用セットのENVレジスタ
とオーバーラップする。従って、その後の浮動小数点命
令がアドレスAにおける保存命令(fnsave
〔A〕)のENVオンチップイメージを変更させる可能
性がある(それの作業用セットとのオーバーラップに起
因して)。従って、回復命令(frstor〔A〕)は
プログラムの一体性即ち信頼性を確保するために状態イ
メージをメモリからロードする。
nv〔A〕)は、保存命令(fnsave〔A〕)によ
って前に保存されたENVイメージを再ロードすること
を試みる。このロード環境命令は、CPU内部プライベ
ートレジスタ(オンチップイメージ)からENVイメー
ジを得ることが可能である。fldenv〔A〕命令に
続いて、作業用セットがレジスタセット0からのENV
レジスタとレジスタセット1からのREGファイルとに
よって構成される。保存命令fnsave〔A〕のEN
Vオンチップイメージは作業用セットのENVレジスタ
とオーバーラップする。従って、その後の浮動小数点命
令がアドレスAにおける保存命令(fnsave
〔A〕)のENVオンチップイメージを変更させる可能
性がある(それの作業用セットとのオーバーラップに起
因して)。従って、回復命令(frstor〔A〕)は
プログラムの一体性即ち信頼性を確保するために状態イ
メージをメモリからロードする。
【0114】理解されるように、本発明は、浮動小数点
保存及び回復命令を効率的に取扱うシステム及び方法を
提供している。命令レベルにおいて、MMX命令を何ら
悪影響を発生することなしにFNSAVE、FRSTO
R、FNSTENV、FLDENV命令と混合させるこ
とが可能である。本発明は、FNSAVE、FRSTO
R、FNSTENV、FLDENV命令を、それらが浮
動小数点状態及び環境に従って使用されていたのと正確
に同一の態様でMMX状態(環境及びレジスタファイ
ル)及び環境情報を保存/回復するために使用すること
が可能であることを意図している。従って、本発明は、
異なる文脈間のタスク切換え(MMX及び浮動小数点)
及び単一の文脈内におけるタスク切換え(MMX又は浮
動小数点文脈内における異なるタスク)に対して適用可
能である。
保存及び回復命令を効率的に取扱うシステム及び方法を
提供している。命令レベルにおいて、MMX命令を何ら
悪影響を発生することなしにFNSAVE、FRSTO
R、FNSTENV、FLDENV命令と混合させるこ
とが可能である。本発明は、FNSAVE、FRSTO
R、FNSTENV、FLDENV命令を、それらが浮
動小数点状態及び環境に従って使用されていたのと正確
に同一の態様でMMX状態(環境及びレジスタファイ
ル)及び環境情報を保存/回復するために使用すること
が可能であることを意図している。従って、本発明は、
異なる文脈間のタスク切換え(MMX及び浮動小数点)
及び単一の文脈内におけるタスク切換え(MMX又は浮
動小数点文脈内における異なるタスク)に対して適用可
能である。
【0115】浮動小数点命令とMMX命令との間の迅速
なスイッチング即ち切換えは、コンピュータ業界が直面
している比較的新たな問題である。本発明の好適実施例
は、この問題を前述したようにして対処している。しか
しながら、当業者は、ソフトウエアベンダがMMX命令
を使用するアプリケーションを開発すると、その他の問
題が発生する場合があることを理解している。本発明の
技術的範囲は、第一の文脈から第二の文脈への切換え又
はその逆の場合においてシステム性能を改善することが
可能である任意の場合を包含することを意図している。
なスイッチング即ち切換えは、コンピュータ業界が直面
している比較的新たな問題である。本発明の好適実施例
は、この問題を前述したようにして対処している。しか
しながら、当業者は、ソフトウエアベンダがMMX命令
を使用するアプリケーションを開発すると、その他の問
題が発生する場合があることを理解している。本発明の
技術的範囲は、第一の文脈から第二の文脈への切換え又
はその逆の場合においてシステム性能を改善することが
可能である任意の場合を包含することを意図している。
【0116】以上、本発明の具体的実施の態様について
詳細に説明したが、本発明は、これら具体例にのみ制限
されるべきものではなく、本発明の技術的範囲を逸脱す
ることなしに種々の変形が可能であることは勿論であ
る。
詳細に説明したが、本発明は、これら具体例にのみ制限
されるべきものではなく、本発明の技術的範囲を逸脱す
ることなしに種々の変形が可能であることは勿論であ
る。
【図1】 本発明の好適実施例を実現することの可能な
例示的マイクロプロセサを示した概略ブロック図。
例示的マイクロプロセサを示した概略ブロック図。
【図2】 図1のマイクロプロセサの浮動小数点ユニッ
トを示した概略ブロック図。
トを示した概略ブロック図。
【図3】 浮動小数点レジスタ及び浮動小数点環境を包
含する浮動小数点状態を示した概略ブロック図。
含する浮動小数点状態を示した概略ブロック図。
【図4】 FPR、環境、スヌープアドレスレジスタ、
ダーティ及びポインタビットレジスタを包含する本発明
のデュアルレジスタセットを示した概略図。
ダーティ及びポインタビットレジスタを包含する本発明
のデュアルレジスタセットを示した概略図。
【図5】 FSTENV命令が処理された場合の作業用
セットレジスタ、シャドー型セット及びメモリの間の関
係を示した概略ブロック図。
セットレジスタ、シャドー型セット及びメモリの間の関
係を示した概略ブロック図。
【図6】 FNSAVE命令が実行された場合の作業用
セット、シャドー型セット、メモリの間の関係を示した
概略ブロック図。
セット、シャドー型セット、メモリの間の関係を示した
概略ブロック図。
【図7】 作業用セットがレジスタセット0又は1の何
れかからの環境及びレジスタセット1又は0の他方から
のレジスタファイルを有することが可能な本発明の好適
実施例を示した概略ブロック図。
れかからの環境及びレジスタセット1又は0の他方から
のレジスタファイルを有することが可能な本発明の好適
実施例を示した概略ブロック図。
【図8】 ポインタビットを制御するためのステートマ
シンを定義するステートマシンテーブルを示した概略
図。
シンを定義するステートマシンテーブルを示した概略
図。
【図9】 ダーティビットを制御するためのメカニズム
を提供する別のステートマシンテーブルを示した概略
図。
を提供する別のステートマシンテーブルを示した概略
図。
【図10】 ポインタビットを制御するためのメカニズ
ムの状態線図。
ムの状態線図。
【図11】 ダーティビットの状態をどの様にして制御
するかを示した別の状態線図。
するかを示した別の状態線図。
10 マイクロプロセサ 11 バスインターフェースユニット(BIU) 12 システムバス 13 メインメモリ 15 L1命令キャッシュ 16 データキャッシュ 17 分岐ターゲットバッファ 18 命令フェッチ/デコードユニット 19 命令プリフェッチバッファ 20 FPU(浮動小数点ユニット) 21 整数ユニット 22 ロード/ストアユニット 23 入力/出力装置 27 実行ユニット 51 浮動小数点/MMXデコードユニット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 デイビッド ウォン アメリカ合衆国, カリフォルニア 92128, サン ディエゴ, ワールド トレード ドライブ 12035, ナンバー 4
Claims (20)
- 【請求項1】 データ処理装置において、 第一レジスタセット又は第二レジスタセットのうちの一
つを作業用レジスタセットとして指定する手段、 前記第一レジスタセットが前記作業用レジスタセットと
して指定されている場合に前記第一レジスタセットを使
用して第一タスクを実施する手段、 第二タスクへ切換えられると前記第一タスクに対応する
第一状態情報を前記第一レジスタセット内に維持する手
段、 前記第一状態情報が修正されるか否かを決定する手段、 前記第一状態情報が修正されていない場合に前記第二タ
スクから前記第一タスクへの切換え時に前記第一レジス
タセットから前記第一状態情報を回復する手段、を有す
ることを特徴とするデータ処理装置。 - 【請求項2】 請求項1において、更に、前記第二レジ
スタセットが前記作業用レジスタセットとして指定され
ている場合に、前記第二レジスタセットを使用して前記
第二タスクを実施する手段を有していることを特徴とす
るデータ処理装置。 - 【請求項3】 請求項2において、前記第一レジスタセ
ットが第一環境レジスタ及び第一レジスタファイルを有
しており、且つ前記第二レジスタセットが第二環境レジ
スタ及び第二レジスタファイルを有していることを特徴
とするデータ処理装置。 - 【請求項4】 請求項3において、前記指定する手段
が、前記作業用レジスタセットをして、前記第一環境レ
ジスタ又は前記第二環境レジスタのうちの一つと、前記
第一レジスタファイル又は前記第二レジスタファイルの
うちの一つとの任意の組合わせを包含させる手段を有し
ていることを特徴とするデータ処理装置。 - 【請求項5】 請求項4において、前記決定する手段
が、前記第一環境レジスタ、前記第二環境レジスタ、前
記第一レジスタファイル及び前記第二レジスタファイル
のうちの何れか一つに含まれる情報が修正されているこ
とを表示する手段を有していることを特徴とするデータ
処理装置。 - 【請求項6】 請求項5において、前記指定する手段
が、更に、 前記第一環境レジスタ又は前記第二環境レジスタが前記
作業用レジスタセット内に含まれているか否かを指定す
る環境ポインタビットを格納する環境ポインタレジスタ
と、 前記第一レジスタファイル又は前記第二レジスタファイ
ルが前記作業用レジスタセット内に含まれているか否か
を指定するレジスタポインタビットを格納するレジスタ
ファイルポインタレジスタと、を有することを特徴とす
るデータ処理装置。 - 【請求項7】 請求項6において、前記決定する手段
が、更に、 前記第一環境レジスタ又は前記第二環境レジスタのうち
の一方が修正されているか否かを表示する環境ダーティ
ビットを格納する環境ダーティビットレジスタと、 前記第一レジスタファイル又は前記第二レジスタファイ
ルのうちの一方が修正されているか否かを表示するレジ
スタダーティビットを格納するレジスタファイルダーテ
ィビットレジスタと、を有することを特徴とするデータ
処理装置。 - 【請求項8】 請求項7において、前記維持する手段
が、 前記第一レジスタセットの状態のオンチップイメージと
して前記第一状態情報を格納する手段、 前記第一状態情報をメモリ内に格納する手段、を有する
ことを特徴とするデータ処理装置。 - 【請求項9】 請求項8において、前記回復する手段
が、前記第一レジスタセット内の前記第一状態情報が修
正されている場合に、前記第一状態情報を前記メモリか
らローディングする手段を有していることを特徴とする
データ処理装置。 - 【請求項10】 請求項9において、前記第一タスクが
浮動小数点演算を包含しており且つ前記第二タスクがマ
ルチメディア演算を包含していることを特徴とするデー
タ処理装置。 - 【請求項11】 データ処理装置上で実現される第一タ
スクと第二タスクとの間の切換えを行う方法において、 第一レジスタセット又は第二レジスタセットのうちの一
方を作業用レジスタセットとして指定し、 前記第一レジスタセットが前記作業用レジスタセットと
して指定されている場合に前記第一レジスタセットを使
用して前記第一タスクを実施し、 前記第二タスクへの切換え時に、前記第一タスクに対応
する第一状態情報を前記第一レジスタセット内に維持
し、 前記第一状態情報が修正されているか否かを決定し、 前記第一状態情報が修正されていない場合に、前記第二
タスクから前記第一タスクへの切換え時に前記第一レジ
スタセットから前記第一状態情報を回復する、上記各ス
テップを有することを特徴とする方法。 - 【請求項12】 請求項11において、更に、前記第二
レジスタセットが前記作業用レジスタセットとして指定
されている場合に、前記第二レジスタセットを使用して
前記第二タスクを実施するステップを有していることを
特徴とする方法。 - 【請求項13】 請求項12において、前記第一レジス
タセットが第一環境レジスタ及び第二レジスタファイル
を有しており、且つ前記第二レジスタセットが第二環境
レジスタ及び第二レジスタファイルを有していることを
特徴とする方法。 - 【請求項14】 請求項13において、前記指定するス
テップが、前記作業用レジスタセットをして、前記第一
環境レジスタ又は前記第二環境レジスタのうちの一方
と、前記第一レジスタファイル又は前記第二レジスタフ
ァイルのうちの一方との任意の組合わせを包含させるス
テップを有していることを特徴とする方法。 - 【請求項15】 請求項14において、前記決定するス
テップが、前記第一環境レジスタ、前記第二環境レジス
タ、前記第一レジスタファイル及び前記第二レジスタフ
ァイルのうちの何れか一つに含まれる情報が修正されて
いるか否かを表示するステップを有していることを特徴
とする方法。 - 【請求項16】 請求項15において、前記指定するス
テップが、更に、 前記第一環境レジスタ又は前記第二環境レジスタの何れ
かが前記第一作業用レジスタセット内に含まれているこ
とを指定する環境ポインタビットを環境ポインタレジス
タ内に格納し、 前記第一レジスタファイル又は前記第二レジスタファイ
ルの何れかが前記作業用レジスタセット内に含まれてい
ることを指定するレジスタポインタビットをレジスタフ
ァイルポインタレジスタ内に格納する、上記各ステップ
を有することを特徴とする方法。 - 【請求項17】 請求項16において、前記決定するス
テップが、更に、 前記第一環境レジスタ又は前記第二環境レジスタのうち
の一方が修正されているか否かを表示する環境ダーティ
ビットを環境ダーティビットレジスタ内に格納し、 前記第一レジスタファイル又は前記第二レジスタファイ
ルのうちの一方が修正されているか否かを表示するレジ
スタダーティビットをレジスタファイルダーティビット
レジスタ内に格納する、上記各ステップを有することを
特徴とする方法。 - 【請求項18】 請求項17において、前記維持するス
テップが、前記第一レジスタセットの状態のオンチップ
イメージとして前記第一状態情報を格納するステップを
有していることを特徴とする方法。 - 【請求項19】 請求項18において、前記第一タスク
が浮動小数点演算を包含しており且つ前記第二タスクが
マルチメディア演算を包含していることを特徴とする方
法。 - 【請求項20】 少なくとも第一タスクと第二タスクと
を実行するデータ処理システムにおいて、 浮動小数点実行ユニットを包含するプロセサが設けられ
ており、前記浮動小数点実行ユニットは、第一レジスタ
セットと第二レジスタセットとを有しており、前記レジ
スタセットの各々は互いに同一であり、 前記第一レジスタセット又は前記第二レジスタセットの
うちの一方を作業用レジスタセットとして指定する手段
が設けられており、前記第一レジスタセット又は第二レ
ジスタセットのうちの作業用レジスタセットとして指定
されていないものをシャドー型レジスタセットとして指
定し、 前記第一レジスタセットが前記作業用レジスタセットと
して指定されている場合に前記第一レジスタセットを使
用して前記第一タスクを実施し、 前記第二タスクへの切換え時に、前記シャドー型レジス
タセットとして指定されている前記第一レジスタセット
内に前記第一タスクに対応する第一状態情報を維持し、 前記第二レジスタセットが前記作業用レジスタセットと
して指定されている場合に前記第二レジスタセットを使
用して第二タスクを実施し、 前記第一タスクへの切換え時に前記シャドー型レジスタ
セットとして指定されている前記第二レジスタセット内
に前記第二タスクに対応する第二状態情報を維持し、 前記第一状態情報が修正されているか否かを決定し、 前記第一状態情報が修正されていない場合に前記第二タ
スクから前記第一タスクへの切換え時に前記第一レジス
タセットから前記第一状態情報を回復し、 前記第二状態情報が修正されているか否かを決定し、 前記第二状態情報が修正されていない場合に前記第一タ
スクから前記第二タスクへの切換え時に前記第二レジス
タセットから前記第二状態情報を回復する、ことを特徴
とするデータ処理システム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/999206 | 1997-12-29 | ||
| US08/999,206 US6145049A (en) | 1997-12-29 | 1997-12-29 | 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 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH11288372A true JPH11288372A (ja) | 1999-10-19 |
Family
ID=25546019
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP10374316A Pending JPH11288372A (ja) | 1997-12-29 | 1998-12-28 | 二組のレジスタファイルを使用して浮動小数点命令及びマルチメディア命令の間で高速の切換えを与える方法及び装置 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US6145049A (ja) |
| JP (1) | JPH11288372A (ja) |
Families Citing this family (49)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5940859A (en) | 1995-12-19 | 1999-08-17 | Intel Corporation | Emptying packed data state during execution of packed data instructions |
| US6792523B1 (en) | 1995-12-19 | 2004-09-14 | Intel Corporation | Processor with instructions that operate on different data types stored in the same single logical register file |
| US6128728A (en) * | 1997-08-01 | 2000-10-03 | Micron Technology, Inc. | Virtual shadow registers and virtual register windows |
| US6205543B1 (en) * | 1998-12-03 | 2001-03-20 | Sun Microsystems, Inc. | Efficient handling of a large register file for context switching |
| US6324598B1 (en) * | 1999-01-11 | 2001-11-27 | Oak Technology | Software enlarged tag register and method thereof for noting the completion of a DMA transfer within a chain of DMA transfers |
| US6327650B1 (en) * | 1999-02-12 | 2001-12-04 | Vsli Technology, Inc. | Pipelined multiprocessing with upstream processor concurrently writing to local register and to register of downstream processor |
| US6314510B1 (en) * | 1999-04-14 | 2001-11-06 | Sun Microsystems, Inc. | Microprocessor with reduced context switching overhead and corresponding method |
| US6385716B1 (en) * | 1999-07-09 | 2002-05-07 | Ip-First, L.L.C. | Method and apparatus for tracking coherence of dual floating point and MMX register files |
| US6339823B1 (en) * | 1999-07-20 | 2002-01-15 | Ip-First, L.L.C. | Method and apparatus for selective writing of incoherent MMX registers |
| EP1132813A3 (en) * | 2000-02-29 | 2003-12-17 | Fujitsu Limited | Computer with high-speed context switching |
| US7093260B1 (en) * | 2000-05-04 | 2006-08-15 | International Business Machines Corporation | Method, system, and program for saving a state of a task and executing the task by a processor in a multiprocessor system |
| US6791564B1 (en) | 2000-05-05 | 2004-09-14 | Ipfirst, Llc | Mechanism for clipping RGB value during integer transfer |
| US6877084B1 (en) | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
| US6981132B2 (en) * | 2000-08-09 | 2005-12-27 | Advanced Micro Devices, Inc. | Uniform register addressing using prefix byte |
| US6470435B2 (en) * | 2000-12-28 | 2002-10-22 | Intel Corporation | Dual state rename recovery using register usage |
| US6975679B2 (en) | 2001-06-01 | 2005-12-13 | Microchip Technology Incorporated | Configuration fuses for setting PWM options |
| US6552625B2 (en) | 2001-06-01 | 2003-04-22 | Microchip Technology Inc. | Processor with pulse width modulation generator with fault input prioritization |
| US6985986B2 (en) | 2001-06-01 | 2006-01-10 | Microchip Technology Incorporated | Variable cycle interrupt disabling |
| US6604169B2 (en) | 2001-06-01 | 2003-08-05 | Microchip Technology Incorporated | Modulo addressing based on absolute offset |
| US6952711B2 (en) | 2001-06-01 | 2005-10-04 | Microchip Technology Incorporated | Maximally negative signed fractional number multiplication |
| US7020788B2 (en) | 2001-06-01 | 2006-03-28 | Microchip Technology Incorporated | Reduced power option |
| US6937084B2 (en) | 2001-06-01 | 2005-08-30 | Microchip Technology Incorporated | Processor with dual-deadtime pulse width modulation generator |
| US6976158B2 (en) | 2001-06-01 | 2005-12-13 | Microchip Technology Incorporated | Repeat instruction with interrupt |
| US7003543B2 (en) | 2001-06-01 | 2006-02-21 | Microchip Technology Incorporated | Sticky z bit |
| US6728856B2 (en) | 2001-06-01 | 2004-04-27 | Microchip Technology Incorporated | Modified Harvard architecture processor having program memory space mapped to data memory space |
| US6934728B2 (en) | 2001-06-01 | 2005-08-23 | Microchip Technology Incorporated | Euclidean distance instructions |
| US7007172B2 (en) | 2001-06-01 | 2006-02-28 | Microchip Technology Incorporated | Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection |
| US7467178B2 (en) | 2001-06-01 | 2008-12-16 | Microchip Technology Incorporated | Dual mode arithmetic saturation processing |
| US6601160B2 (en) | 2001-06-01 | 2003-07-29 | Microchip Technology Incorporated | Dynamically reconfigurable data space |
| US20020184566A1 (en) | 2001-06-01 | 2002-12-05 | Michael Catherwood | Register pointer trap |
| US7478394B1 (en) * | 2001-06-04 | 2009-01-13 | Hewlett-Packard Development Company, L.P. | Context-corrupting context switching |
| US6552567B1 (en) | 2001-09-28 | 2003-04-22 | Microchip Technology Incorporated | Functional pathway configuration at a system/IC interface |
| US20040021483A1 (en) * | 2001-09-28 | 2004-02-05 | Brian Boles | Functional pathway configuration at a system/IC interface |
| US7434222B2 (en) * | 2001-12-20 | 2008-10-07 | Infineon Technologies Ag | Task context switching RTOS |
| JP3813930B2 (ja) * | 2002-01-09 | 2006-08-23 | 松下電器産業株式会社 | プロセッサ及びプログラム実行方法 |
| US20030177342A1 (en) * | 2002-03-15 | 2003-09-18 | Hitachi Semiconductor (America) Inc. | Processor with register dirty bits and special save multiple/return instructions |
| GB2388213A (en) * | 2002-04-30 | 2003-11-05 | Innovation Ct | Improvements relating to task dispatch in priority pre-emptive real-time operating systems |
| US7117346B2 (en) * | 2002-05-31 | 2006-10-03 | Freescale Semiconductor, Inc. | Data processing system having multiple register contexts and method therefor |
| FR2849228A1 (fr) * | 2002-12-23 | 2004-06-25 | St Microelectronics Sa | Dispositif de transfert de donnees entre deux sous-systemes asynchrones disposant d'une memoire tampon |
| US20040128475A1 (en) * | 2002-12-31 | 2004-07-01 | Gad Sheaffer | Widely accessible processor register file and method for use |
| JP4750350B2 (ja) * | 2003-03-13 | 2011-08-17 | パナソニック株式会社 | タスク切換装置、方法及びプログラム |
| US20060294344A1 (en) * | 2005-06-28 | 2006-12-28 | Universal Network Machines, Inc. | Computer processor pipeline with shadow registers for context switching, and method |
| US7370176B2 (en) * | 2005-08-16 | 2008-05-06 | International Business Machines Corporation | System and method for high frequency stall design |
| US7500049B2 (en) * | 2005-10-31 | 2009-03-03 | Intel Corporation | Providing a backing store in user-level memory |
| US7461223B2 (en) * | 2006-05-29 | 2008-12-02 | Microsoft Corporation | Retaining shadow copy data during replication |
| US8161273B2 (en) * | 2008-02-26 | 2012-04-17 | Oracle America, Inc. | Method and apparatus for programmatically rewinding a register inside a transaction |
| US9170968B2 (en) * | 2012-09-27 | 2015-10-27 | Intel Corporation | Device, system and method of multi-channel processing |
| CN110569001B (zh) * | 2019-09-17 | 2020-09-22 | 深圳忆联信息系统有限公司 | 基于固态硬盘的L2P表dirty位标记方法和装置 |
| CN113626078B (zh) * | 2021-07-13 | 2024-09-24 | 镕铭微电子(济南)有限公司 | 一种提高芯片设计模块性能的快速环境切换方法 |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63156236A (ja) * | 1986-12-19 | 1988-06-29 | Toshiba Corp | レジスタ装置 |
| US5222241A (en) * | 1987-06-05 | 1993-06-22 | Mitsubishi Denki Kabushiki Kaisha | Digital signal processor having duplex working registers for switching to standby state during interrupt processing |
| 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 |
| 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 |
| JP2677202B2 (ja) * | 1994-08-12 | 1997-11-17 | 日本電気株式会社 | マイクロプロセッサ |
| 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 |
| 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 |
-
1997
- 1997-12-29 US US08/999,206 patent/US6145049A/en not_active Expired - Lifetime
-
1998
- 1998-12-28 JP JP10374316A patent/JPH11288372A/ja active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| US6145049A (en) | 2000-11-07 |
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 | |
| US6671762B1 (en) | System and method of saving and restoring registers in a data processing system | |
| US6052769A (en) | Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction | |
| US6571328B2 (en) | Method and apparatus for obtaining a scalar value directly from a vector register | |
| JP3285644B2 (ja) | キャッシュメモリを有するデータプロセッサ | |
| JP3055980B2 (ja) | マルチプロセッサ又はパイプラインプロセッサシステムにおいてデータの完全性を確保する方法 | |
| US6321326B1 (en) | Prefetch instruction specifying destination functional unit and read/write access mode | |
| JP3105960B2 (ja) | 簡略命令セットプロセッサでレジスタ内データ操作を行なう方法 | |
| US5887161A (en) | Issuing instructions in a processor supporting out-of-order execution | |
| US5867724A (en) | Integrated routing and shifting circuit and method of operation | |
| US5913048A (en) | Dispatching instructions in a processor supporting out-of-order execution | |
| JP3132755B2 (ja) | プロセッサのアーキテクチャ状態を維持するための方法および装置 | |
| US5995743A (en) | Method and system for interrupt handling during emulation in a data processing system | |
| JPS63193230A (ja) | 高性能マイクロプロセッサ集積回路とメモリ参照を行なう方法 | |
| JP2002525741A (ja) | 間接分岐ターゲットを計算するための方法 | |
| WO1996012231A1 (en) | A translation buffer for detecting and preventing conflicting virtual addresses from being stored therein | |
| EP0649086B1 (en) | Microprocessor with speculative execution | |
| CA2123448C (en) | Blackout logic for dual execution unit processor | |
| GB2390700A (en) | Narrow/wide Cache | |
| JPH08221272A (ja) | 命令キャッシュに命令をロードする方法 | |
| US6363474B1 (en) | Process switching register replication in a data processing system | |
| EP0459233A2 (en) | Selectively locking memory locations within a microprocessor's on-chip cache | |
| US9582279B2 (en) | Execution of condition-based instructions | |
| US5721867A (en) | Method and apparatus for executing single beat write store instructions during a cache store linefill operation | |
| US6175909B1 (en) | Forwarding instruction byte blocks to parallel scanning units using instruction cache associated table storing scan block boundary information for faster alignment |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051220 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060704 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070417 |