JP2007515718A - 実行フローシノニムのための方法及び装置 - Google Patents
実行フローシノニムのための方法及び装置 Download PDFInfo
- Publication number
- JP2007515718A JP2007515718A JP2006543843A JP2006543843A JP2007515718A JP 2007515718 A JP2007515718 A JP 2007515718A JP 2006543843 A JP2006543843 A JP 2006543843A JP 2006543843 A JP2006543843 A JP 2006543843A JP 2007515718 A JP2007515718 A JP 2007515718A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- flow
- execution
- synonym
- execution unit
- 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
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000008569 process Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 abstract description 3
- 238000007667 floating Methods 0.000 description 36
- 230000015654 memory Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Retry When Errors Occur (AREA)
Abstract
命令について複数のマイクロコードフローシノニム又はハードウェアフローシノニムを利用する方法及び装置が開示される。一実施例では、異なるタイプの2以上の実行ユニットでの実行のため、マイクロコードシノニムが生成される。実行ユニットの利用可能性ステータスに応じて、実行のための1つのマイクロコードシノニムが選択されてもよい。他の実施例では、実行のため、複数のマイクロコードシノニムが選択されてもよい。実行を終了した第1マイクロコードシノニムの結果はリタイアされてもよい。2つのマイクロコードシノニムの実行結果が一致しない場合、フォルト例外処理が行われてもよい。
Description
[技術分野]
本開示は、一般にマイクロプロセッサに関し、より詳細には、異なるタイプの複数の実行ユニットを有するマイクロプロセッサに関する。
本開示は、一般にマイクロプロセッサに関し、より詳細には、異なるタイプの複数の実行ユニットを有するマイクロプロセッサに関する。
[背景]
現在のマイクロプロセッサは、複雑な命令をよりシンプルな命令グループに変換することによって複雑な命令の実行をサポートするかもしれない。結果として得られるよりシンプルな命令グループは、「フロー(flow)」と呼ばれるかもしれない。マイクロオペレーションから構成され、マイクロコードにより記述されるフローが存在するかもしれない。これらのフローは、マイクロコードフローと呼ばれるかもしれない。よりシンプルな命令グループへの変換がハードウェアロジックセットにより実行可能なフローが存在するかもしれない。これらのフローは、ハードウェアフロート呼ばれるかもしれない。プロセッサはまず、命令をマイクロコードフロー又はハードウェアフローに復号化し、その後、1以上の実行ユニット上での実行のため、結果として得られるマイクロコードフローをスケジューリングするかもしれない。
現在のマイクロプロセッサは、複雑な命令をよりシンプルな命令グループに変換することによって複雑な命令の実行をサポートするかもしれない。結果として得られるよりシンプルな命令グループは、「フロー(flow)」と呼ばれるかもしれない。マイクロオペレーションから構成され、マイクロコードにより記述されるフローが存在するかもしれない。これらのフローは、マイクロコードフローと呼ばれるかもしれない。よりシンプルな命令グループへの変換がハードウェアロジックセットにより実行可能なフローが存在するかもしれない。これらのフローは、ハードウェアフロート呼ばれるかもしれない。プロセッサはまず、命令をマイクロコードフロー又はハードウェアフローに復号化し、その後、1以上の実行ユニット上での実行のため、結果として得られるマイクロコードフローをスケジューリングするかもしれない。
プロセッサの実行ユニットは、様々なタイプを有するかもしれない。例えば、1つのプロセッサは、それのアーキテクチャに以下のタイプの実行ユニット、すなわち、整数演算、浮動小数点演算、マルチメディア演算、ブランチ計算及び制御の1以上の実行ユニットと、メモリロード/ストアとを有するかもしれない。一般に、ある命令のマイクロコードフロー又はハードウェアフロー表現は、上記タイプの実行ユニットの1つにおいて実行するよう対象とされる。しかしながら、しばしば対象とされた実行ユニットは利用可能ではなく、又は少なくとも他のものより利用可能性が低い。それが利用可能でない、又は利用可能性が低い理由は、実行ユニットが他の命令に対応する他のフローを現在実行していることと同じくらいシンプルであるかもしれない。しかし、いくつかのケースでは、プロセッサが低電力モードに切り替えられた結果としてオフされるため、対象とされた実行ユニットは利用可能性が低くなるかもしれない。マイクロコードフロー又はハードウェアフローを実行するため、プロセッサはまず、このような低電力モードから立ち上げられねばならない。いくつかのケースでは、対象とされる実行ユニットは、ソフト又はハードの不具合により利用可能性が低くなるか、あるいは利用可能でないかもしれない。これらの状況のそれぞれは、命令のマイクロコードフロー又はハードウェアフロー表現の実行の問題を提起する。
[詳細な説明]
以下の説明は、プロセッサが単一の命令に対応する複数のマイクロコードフローシノニム(microcode flow synonym)及びハードウェアフローシノニム(hardware flow synonym)を利用し、異なるタイプの実行ユニット上での実行を可能にする技術を説明する。以下の説明では、ロジック実現形態、ソフトウェアモジュール配分、バス信号処理技術及び処理の詳細などの多数の具体的詳細が、本発明のより完全なる理解を提供するため与えられる。しかしながら、本発明はこのような具体的詳細なく実現可能であるということは、当業者には理解されるであろう。他の例では、制御構造、ゲートレベル回路及びフルソフトウェア命令シーケンスは、本発明を不明りょうとしないように詳細には図示されていない。含められた説明により当業者は、過度の実験なく適切な機能を実現することができるであろう。ある実施例では、本発明は、インテル(登録商標)コーポレイションにより製造されるようなItanium(登録商標)プロセッサファミリ(IPF)プロセッサ又はPentium(登録商標)ファミリプロセッサの形態により開示される。しかしながら、本発明は、複数のマイクロコードシノニム又はハードウェアシノニムを利用することを所望する他のタイプのプロセッサにより実現されてもよい。
以下の説明は、プロセッサが単一の命令に対応する複数のマイクロコードフローシノニム(microcode flow synonym)及びハードウェアフローシノニム(hardware flow synonym)を利用し、異なるタイプの実行ユニット上での実行を可能にする技術を説明する。以下の説明では、ロジック実現形態、ソフトウェアモジュール配分、バス信号処理技術及び処理の詳細などの多数の具体的詳細が、本発明のより完全なる理解を提供するため与えられる。しかしながら、本発明はこのような具体的詳細なく実現可能であるということは、当業者には理解されるであろう。他の例では、制御構造、ゲートレベル回路及びフルソフトウェア命令シーケンスは、本発明を不明りょうとしないように詳細には図示されていない。含められた説明により当業者は、過度の実験なく適切な機能を実現することができるであろう。ある実施例では、本発明は、インテル(登録商標)コーポレイションにより製造されるようなItanium(登録商標)プロセッサファミリ(IPF)プロセッサ又はPentium(登録商標)ファミリプロセッサの形態により開示される。しかしながら、本発明は、複数のマイクロコードシノニム又はハードウェアシノニムを利用することを所望する他のタイプのプロセッサにより実現されてもよい。
図1を参照するに、一実施例によるプロセッサにおけるフローシノニムを利用するパイプライン100の一部を示す図が示される。図1のパイプライン100の各ステージは、プロセッサにおけるフローシノニムの利用を説明するため示されている。他の実施例では、パイプラインの各ステージは、異なる機能及び順序を有するかもしれない。図1は、マルチメディア実行ユニット120、ブランチ実行ユニット122、整数実行ユニット124、浮動小数点実行ユニット126及びメモリロード/ストア実行ユニット128を有するパイプライン100の代表的な実行ユニットを示す。他の実施例では、上記実行ユニットのそれぞれが複数存在してもよいし、異なるタイプの実行ユニットが存在してもよい。
フェッチ段階104は、1以上のキャッシュからプログラム命令をフェッチ又はプリフェッチし、これらの命令を復号化段階106に供給する。復号化段階106は、これらの命令を実行ユニットでの以降の実行のため、フローと呼ばれるよりシンプルな命令グループに変換する必要がある。マイクロコードフローは、復号化段階106中にマイクロコードROM(Read−Only Memory)に格納されてもよい。他の実施例では、マイクロコードフローは、フラッシュメモリなどの不揮発性または書き換え可能メモリに格納されてもよい。ハードウェアフローは、復号化段階106中のハードウェアロジック要素セットを用いて実現されてもよい。従来のプロセッサでは、命令とそれのフロー、すなわち、マイクロコードフローまたはハードウェアフローの間に一対一の対応関係が存在する。しかしながら、本開示の一実施例では、マイクロコードフロー又はハードウェアフローを含む複数の相異なるフローのコピーが、いくつかの命令について存在するかもしれない。与えられた命令についてのこれら複数の相異なるフローのコピーが同一の結果をもたらす場合、それらはフローシノニム(flow synonym)と呼ばれるかもしれない。フローシノニムは、各々が与えられたタイプの実行ユニット上での実行を可能にするマイクロコードフローシノニム又はハードウェアフローシノニムであるかもしれないが、多くの有用なケースでは、それらは、異なるタイプの実行ユニット上での実行が可能である。
一実施例では、フローシノニムのペアであるフローシノニム1(110)とフローシノニム2(112)は、復号化段階106に含まれるかもしれない。他の実施例では、ある命令について2以上のフローシノニムが存在するかもしれない。フローシノニム1(110)とフローシノニム2(112)のそれぞれは、特定の命令を表すことが可能なマイクロコードフローであってもよいし、又はハードウェアフロー若しくは上記2つの組み合わせであってもよい。復号化段階106は、プロセッサステータス又は他のルールに応じて以降の実行のための対応する命令を復号化するため、フローシノニム1(110)又はフローシノニム2(112)の何れかを選択するためのロジックを有するかもしれない。復号化段階106は、特定の実行ユニットが利用可能性が高いか又は低いか判断するため、ステータスレジスタ118を確認するようにしてもよい。一実施例では、ステータスレジスタ118は、スケジューラ段階116によって求められる既存のステータスレジスタであってもよい。ある実行ユニットが利用可能性が低いか否かの表示は、当該実行ユニットが実行のため現在占用されているか、又は当該実行ユニットがプロセッサの低電力モードの一部として電源オフされていることを示すものであってもよい。一部のケースでは、ステータスレジスタ118は、ソフト又はハードの不具合が実行ユニットに検出されたことを示すものであってもよい。何れのケースにおいても、復号化段階106は、マイクロコードシノニム又はハードウェアシノニムにより利用された実行ユニットがより利用性が高いとき、命令を復号化するためのマイクロコードシノニム又はハードウェアシノニムを選択するようにしてもよい。ステータスレジスタ118が、プロセッサ低電力モード又はソフト若しくはハードの不具合を示していないとき、復号化段階106は、各種選択ルールを利用することによって、これらの状況を考慮するかもしれない。
複数の実行ユニットが利用性が高い場合、復号化段階106は、これら複数の利用性が高い実行ユニットに対応する複数のものの中から1つのマイクロコードシノニム又はハードウェアシノニムを選択する必要がある。一実施例では、この選択は単にデフォルトの選択に基づくものであってもよい。対応する実行ユニットのすべてが利用性が低い他のケースでは、復号化段階106は、ルール又は履歴に基づき複数のマイクロコードシノニム又はハードシノニムから調停する必要があるかもしれない。一実施例では、復号化段階106は、ブランチ予測回路において実行されるものと同様の方法により、ローカル又はグローバル履歴を調べることにより各種アービトレーション選択のシステムパフォーマンスを判断してもよい。他の実施例では、アービトレーション(arbitration)はデフォルトの選択により実行されてもよい。
他の実施例では、復号化段階106は、与えられた命令について利用可能な複数のマイクロコードシノニム又はハードウェアシノニム、又はすべてのマイクロコードシノニム又はハードウェアシノニムを選択し、それらをスケジューラ116に送信するようにしてもよい。一実施例において、フローシノニムS1(110)を浮動小数点実行ユニット126のための浮動小数点加算とし、フローシノニムS2(112)を整数実行ユニット124のための浮動小数点加算とする。通常、フローシノニムS1(110)は、フローシノニムS2(112)より速く実行するであろう。しかしながら、浮動小数点実行ユニット126はある状況において大きく占用される可能性があるため、ときどきS2(112)が最初に実行を完了するかもしれない。従って、この実施例では、スケジューラ116は、対象とされる各実行ユニットにおける実行のため、フローシノニムS1(110)とS2(112)の両方をスケジューリングするようにしてもよい。1つのみの結果がリタイアされ、プロセッサの状態を変更すべきであるため、リタイアメント(retirement)段階130は、フローシノニムS1(110)とS2(112)の何れが最初に実行を完了しようと、リタイアするようにしてもよい。予測をサポートするプロセッサでは、リタイアメント段階130は、その後、より遅く実行されるフローシノニムの予測をしなくてもよい。
他の実施例では、復号化段階106は、与えられた命令について利用可能な複数のフローシノニム又はすべてのフローシノニムを再び選択し、それらをスケジューラ116に送信するようにしてもよい。一実施例では、再びフローシノニムS1(110)を浮動小数点実行ユニット126のための浮動小数点加算とし、フローシノニムS2(112)を整数実行ユニット124のための浮動小数点加算とする。この場合、スケジューラ116は再び、各実行ユニットにおける実行のため、フローシノニムS1(110)とS2(112)の両方をスケジューリングしてもよい。それぞれ浮動小数点実行ユニット126と整数実行ユニット124で実行される2つのフローシノニムS1(110)とS2(112)の利用は、これら実行ユニットにおける故障によりもたらされるソフト又はハードエラーに関する情報を提供するものであってもよい。従って、本実施例では、リタイアメント段階130は、両方のフローシノニムが実行を終了し、これらの結果を比較するまで待機するようにしてもよい。結果が一致する場合には、問題はない。しかしながら、結果が一致しない場合、例外処理が発生され、ハードウェアステータスのさらなる調査が行われるかもしれない。
大部分ではないが、多くの命令は、マイクロコードシノニム又はハードウェアシノニムを有する候補であるかもしれない。整数演算や浮動小数点演算などの数値計算命令は、それらが異なるレベルのパフォーマンスにより異なるタイプの実行ユニット上で実行されるかもしれないため、当然候補となるかもしれない。制御命令でさえ異なるタイプの実行ユニット上で実行されるかもしれない。例えば、条件ブランチ命令は、ブランチ実行ユニット上で最も効率的に実行されるであろう。しかしながら、ブランチ命令が他のタイプの実行ユニットにより実行されるよう構成することは可能である。例えば、ブランチ命令は、整数実行ユニット上で実行可能であろう。整数実行ユニットは、条件判断をし、当該ブランチが「選択される」べきでない場合、マイクロコードの残りは処理しないようにすることができる。これは、次の命令がプログラムフローにおける次の命令となることを可能にするであろう。しかしながら、当該ブランチが「選択される」べきである場合、整数実行ユニットは、ゼロによる除算などの不適切な実行を実行せざるを得ない可能性がある。これは、「選択される」ブランチ命令アドレスを供給することが可能な例外処理ハンドラをの実行をもたらすであろう。
図2を参照するに、一実施例によるマイクロコードシノニムに復号化されたプログラムのプログラム実行を示す図が示される。復号化段階が命令シーケンスを復号化するとき、ソフトウェアリスト210がマイクロコードシノニムを含むマイクロコードフローの進捗を示すとする。このとき、マイクロコードフロー212は第1命令を表すとする。第2命令がマイクロコードROM252に含まれるような2つのマイクロコードシノニムS1(260)とS2(262)により表されるとする。条件判断214は、マイクロコードシノニムS1(260)に対応するマイクロコードフロー216によって第2命令を表すべきか、又はその代わりに、マイクロコードS2(262)に対応するマイクロコードフロー218により第2命令を表すべきか選択するため、復号化段階により実行されてもよい。例えば、条件判断214は、プロセッサが浮動小数点実行ユニット255をオフにした低電力モードから抜け出したか判断するためのものであってもよい。そうである場合、浮動小数点実行ユニット上で浮動小数点命令を実行するマイクロコードシノニムが選択されるかもしれない。そうではなく、浮動小数点実行ユニット255が依然としてオフである場合、整数実行ユニット254上で浮動小数点命令を実行するマイクロコードシノニムが選択されてもよい。マイクロコードフロー216又は218ノアと、第3命令がマイクロコードフロー220に復号化されてもよい。
一実施例では、条件判断214は、復号化段階内のロジックによって実行されてもよい。他の実施例では、条件判断214は、2つのマイクロコードシノニムS1(260)とS2(262)を含むマイクロコードROM252の一部であってもよい。本実施例では、条件判断214は、マイクロコードROM252が書き換え可能な不揮発性メモリとして実現される場合、マイクロコードROM252への更新により変更されてもよい。ここで、条件判断214は、復号化段階にロードされ、復号化段階の回路によって実行されるようにしてもよい。他の実施例では、マイクロコードROM252は、マイクロコードシノニムS1(260)とS2(262)の代わりに、ハードウェアフローシノニムを実現可能な復号化段階内の追加的な回路によって置換することができる。
図3を参照するに、本開示の他の実施例によるプロセッサにおいてマイクロコードシノニムを利用するパイプライン300の一部を示すブロック図が示される。図3に示される回路段階の多くは、図1に関して示された等価な段階と同様の機能を有するかもしれない。現在のプロセッサ設計では、1以上の倍精度(又は拡張精度)浮動小数点実行ユニット322を有することが望ましいとわかるかもしれない。しかしながら、電力と集積回路のダイサイズを考慮することがまた、1以上の単精度浮動小数点実行ユニット326を含めることが望ましいかもしれない。各タイプのタイプ数は、プロセッサ上で実行されることが予想されるタイプのソフトウェアにおける単精度対倍精度(又は拡張精度)浮動小数点命令の相対数の統計解析により影響を受けるかもしれない。しかしながら、これらは統計的な平均であるため、より多く又は少ない各タイプの命令が与えられたプログラムにおいて実行されることがしばしば生じるかもしれない。
従って一実施例では、マイクロコードROM308は、倍精度浮動小数点命令について2つのマイクロコードシノニムを含むかもしれない。マイクロコードシノニムS1(310)は、倍精度浮動小数点実行ユニット322上で倍精度浮動小数点命令を実行するための対象とされてもよい。マイクロコードシノニムS2(312)は、単精度浮動小数点実行ユニット326上で倍精度浮動小数点命令を実行するための対象とされてもよい。復号化段階306は、これら2つのマイクロコードシノニムS1(310)とS2(312)の何れが、システムパフォーマンスを考慮してスケジューラ段階316に送信するか決定するようにしてもよい。一実施例では、この判断は、ステータスレジスタ318からシステムステータスを読み出すことによってサポートされるかもしれない。例えば、倍精度浮動小数点実行ユニットがより利用性が高いとき、一般にマイクロコードシノニムS1(310)が選択されるかもしれない。しかし、倍精度浮動小数点実行ユニットが利用性が低く、単精度浮動小数点実行ユニットが利用性が高いとき、マイクロコードシノニムS2(312)が選択されてもよい。
他の実施例では、マイクロコードシノニムS1(310)は、単精度浮動小数点実行ユニット326上で単精度浮動小数点命令を実行するための対象とされてもよい。マイクロコードシノニムS2(312)は、倍精度不動小数点実行ユニット322上で単精度浮動小数点命令を実行するための対象とされてもよい。復号化段階306は、再び2つのマイクロコードシノニムS1(310)とS2(312)の何れがシステムパフォーマンスを考慮して、スケジューラ段階316に送信すべきか判断するようにしてもよい。一実施例では、この判断は再び、ステータスレジスタ318からシステムステータスを読み出すことによってサポートされてもよい。例えば、単精度浮動小数点実行ユニット326がより利用性が高いとき、一般にマイクロコードシノニムS1(310)が選択されるかもしれない。しかし、単精度浮動小数点実行ユニット326がより利用性が低く、倍精度浮動小数点実行ユニット322がより利用性が高いとき、マイクロコードシノニムS2(312)が選択されるかもしれない。
他の実施例では、マイクロコードROM308には第3マイクロコードシノニムが存在するかもしれない。例えば、単精度浮動小数点命令は、単精度浮動小数点実行ユニット326、倍精度浮動小数点実行ユニット322又は整数実行ユニット324上での実行のための対象とされるマイクロコードシノニムを有するかもしれない。与えられた命令についてマイクロコードシノニムの個数は限定されるものではない。他の実施例では、マイクロコードROM308は、マイクロコードシノニムS1(310)とS2(312)の代わりに、ハードウェアフローシノニムを実現可能な復号化段階内の追加的な回路により置換することができる。
図4を参照するに、本開示の一実施例によるトレースキャッシュのトレースとして発生するマイクロコードシノニムを示す図が示される。図1の実施例では、復号化段階106からの発行後、マイクロコードシノニムを含むマイクロコードフローを一時的に保持するためのバッファ段階114が示される。各復号化命令は、スケジューリングされたときに一回だけ利用され、その後廃棄される。
復号化命令を再利用するため、トレースキャッシュが開発された。トレースキャッシュ400は、マイクロ処理の共にリンクされた「トレース」として復号化されたマイクロコードフローを格納するかもしれない。トレースキャッシュ400は、複数の方法(ここでは、カラム(column)として示される)とセット(ここでは、ロー(row)として示される)を有するかもしれない。方法及びセットの各交差において、マイクロコードフローのマイクロ処理が、マイクロコードフローの次のマイクロ処理の方法及びセットの位置標識と共に配置されてもよい。図4において、トレースの例がトレース410と420として示される。トレース内の内部リンクにより、マイクロコードフローは、利用のため容易に抽出されるかもしれない。命令のマイクロコードフローへの元の復号化及び対応するトレースの構成の後、対応する命令が実行のためスケジューリングされる毎に、当該トレースは何回も再利用されてもよい。
トレースキャッシュ内のトレースが再利用のため残されているため、復号化段階は、命令の各繰り返しについて異なるマイクロコードシノニムを発行することはできないかもしれない。トレースとして現在インスタンス化されているマイクロコードシノニムの何れもが、単に再利用される。このため、トレースキャッシュにおいて異なるマイクロコードシノニムを利用するため、復号化段階は、複数のマイクロコードシノニムをトレースキャッシュに発行し、それぞれをトレース内に組み込む必要があるかもしれない。ある命令インスタンスにおいて、何れかのマイクロコードシノニムの選択に対応して、何れのトレースが利用されるべきかの選択は、復号化段階よりトレースキャッシュの回路において実行される必要があるかもしれない。同様に、トレースキャッシュが与えられた命令に対応してフローを排除する必要があるとき、トレースキャッシュは、トレースキャッシュ内に存在するすべてのマイクロコードシノニムを排除することができる必要があるかもしれない。
図5を参照するに、本開示の一実施例によるフローシノニムを利用する方法500を示すフローチャートが示される。図5のフローチャートにおいてマイクロコードフローシノニムが説明されるが、他の実施例では、ハードウェアフローシノニムが利用されてもよい。ある命令が判定ブロック510に入ると、当該命令についてマイクロコードフローシノニムが存在するか判断される。存在しない場合、方法500は、NOパスを介し判定ブロック510から抜けだし、1つのマイクロコードフローが復号化ブロック522において復号化される。しかしながら、当該命令について複数のマイクロコードフローシノニムが存在する場合、本方法は、YESパスを介し判定ブロック510から抜けだし、実行ユニットのステータスが、ブロック512においてチェックされてもよい。
その後判定ブロック516において、マイクロコードフローシノニムにより対象とされる実行ユニットの1以上についてクリアステータスが存在するか判断されるかもしれない。一実施例では、「クリアステータス(clear status)」は、実行ユニットが利用性が高いことを示すものであってもよい。そうでない場合、本方法はNOパスを介し判定ブロック516を抜けだし、ブロック520において、マイクロコードフローシノニムを選択するため、アービトレーションが行われる。このマイクロコードフローシノニムは、その後、復号化ブロック522に送信される。そうである場合、本方法はYESパスを介し判定ブロック516から抜けだし、ブロック518において、マイクロコードフローシノニムが選択される。1つの実行ユニットしか利用性が高くない場合、当該実行ユニットについて対象とされるマイクロコードフローシノニムが選択されるかもしれない。複数の実行ユニットが利用性が高い場合、これら利用性が高い実行ユニットの1つを対象とするマイクロコードフローシノニムが、デフォルト選択などの他のルールにより選択されてもよい。何れの場合でも、復号化ブロック522は、マイクロコードフローシノニムを用いて命令を復号化する。
復号化ブロック522から離れると、本方法はその後、実行ブロック526の対象とされた実行ユニット上での実行前に、スケジュールブロック524においてマイクロコードフローシノニムをスケジューリングするかもしれない。実行結果は、リタイアメントブロック528においてリタイアされてもよい。
図6を参照するに、本開示の他の実施例によるフローシノニムを利用する方法600を示すフローチャートが示される。図6のフローチャートにおいて、マイクロコードフローシノニムが説明されるが、他の実施例では、ハードウェアフローシノニムが利用されてもよい。ある命令が判定ブロック610に入ると、当該命令についてマイクロコードフローシノニムが存在するか判断されてもよい。存在しない場合、方法600はNOパスを介し判定ブロック610から抜け出し、ブロック620〜626において単一のマイクロコードフローが従来通り処理される。しかしながら、2以上のマイクロコードフローシノニムが当該命令について存在する場合、本方法はYESパスを介し判定ブロック610から抜け出す。
ブロック612において、デコーダは、対象となる命令について2以上のマイクロコードフローシノニムを発行するようにしてもよい。その後ブロック614において、対象とされた実行ユニットがより利用性が高いとき、2以上のマイクロコードフローシノニムが実行のためスケジューリングされてもよい。その後ブロック616において、これらの実行ユニットは、対応するマイクロコードフローシノニムを実行する。ブロック618において、リタイアメント段階は、実行を終了し、これらの結果をリタイアするため、最初のマイクロコードフローシノニムの結果を採用してもよい。他の実施例では、リタイアメント段階は、リタイアメント前にすべてのマイクロコードフローシノニムが終了し、結果を比較することを可能にするかもしれない。結果の一部が一致しない場合、リタイアメント段階は、プロセッサのハード又はソフトエラーを示す例外処理を生じさせるようにしてもよい。
図7A及び7Bを参照するに、本開示の2つの実施例によるフローシノニムの実行をサポートするプロセッサを含むシステムの概略図が示される。図7Aのシステムは、一般にプロセッサ、メモリ及び入出力装置がシステムバスにより相互接続されるシステムを示し、図7Bのシステムは、一般にプロセッサ、メモリ及び入出力装置がいくつかのポイント・ツー・ポイントインタフェースにより相互接続されるシステムを示す。
図7Aのシステムは、複数のプロセッサを有するが、そのうちの2つのプロセッサ40と60のみが簡単化のため示される。プロセッサ40と60は、レベル1キャッシュ42と62を有するかもしれない。図7Aのシステムは、システムバス6とのバスインタフェース44、64、12及び8を介し接続される複数の機能を有するかもしれない。一実施例では、システムバス6は、インテル(登録商標)コーポレイションにより製造されるPentium(登録商標)クラスマイクロプロセッサにより利用されるフロントサイドバス(FSB)であってもよい。他の実施例では、他のバスが利用されてもよい。いくつかの実施例では、メモリコントローラ34とバスブリッジ32はまとめてチップセットと呼ばれるかもしれない。いくつかの実施例では、チップセットの各機能は、図7Aの実施例に示されるものとは異なって、物理チップに分割されるかもしれない。
メモリコントローラ34は、プロセッサ50と60がシステムメモリ10及びBIOS(Basic Input/Output System)EPROM(Erasable Programmable Read−Only Memory)36から読み書きすることを許可するかもしれない。いくつかの実施例では、BIOS EPROM36は、フラッシュメモリを利用するかもしれない。メモリコントローラ34は、メモリリード及びライトデータがシステムバス6を介しバスエージェントに対して搬送されることを許可するためのバスインタフェース8を有するかもしれない。メモリコントローラ34はまた、ハイパフォーマンスグラフィックインタフェース39のハイパフォーマンスグラフィック回路38と接続されてもよい。ある実施例では、ハイパフォーマンスグラフィックインタフェース39は、アドバンストグラフィックポートAGPインタフェースであってもよい。メモリコントローラ34は、システムメモリ10からハイパフォーマンスグラフィックインタフェース39のハイパフォーマンスグラフィック回路38にリードデータを移すかもしれない。
図7Bのシステムはまた、複数のプロセッサを有してもよいが、簡単化のため、2つのプロセッサ70と80のみが示される。プロセッサ70と80のそれぞれは、メモリ2と4に接続されるローカルメモリチャネルハブ(MCH)72と82を有するようにしてもよい。プロセッサ70と80は、ポイント・ツー・ポイントインタフェース回路78と88を利用して、ポイント・ツー・ポイントインタフェース50を介しデータをやりとりするかもしれない。プロセッサ70と80はそれぞれ、ポイント・ツー・ポイントインタフェース回路76、94、86及び98を利用して、各ポイント・ツー・ポイントインタフェース52と54を介しチップセット90とデータをやりとりするかもしれない。チップセット90はまた、ハイパフォーマンスグラフィックインタフェース92を介しハイパフォーマンスグラフィック回路38とデータをやりとりするようにしてもよい。
図7Aのシステムでは、バスブリッジ32は、いくつかの実施例では、ISA(Industry Standard Architecture)バス又はPCI(Peripheral Component Interconnect)バスであるかもしれないシステムバス6とバス16との間のデータ交換を可能にするかもしれない。図7Bのシステムでは、チップセット90は、バスインタフェース96を介しバス16とデータをやりとりするかもしれない。何れかのシステムでは、いくつかの実施例では、ローパフォーマンスグラフィックコントローラ、ビデオコントローラ及びネットワーキングコントローラを含むバス16上の各種入出力(I/O)装置14が存在するかもしれない。いくつかの実施例では、他のバスブリッジ18が、バス16と20との間のデータ交換を可能にするため利用されてもよい。バス20は、いくつかの実施例では、SCSI(Small Computer System Interface)バス、IDE(Integrated Drive Electronics)バス又はUSB(Universal Serial Bus)バスであってもよい。これらは、キーボード、マウス、音声I/O24を含むカーソル制御装置22、モデム、ネットワークインタフェースを含む通信装置26、及びデータ記憶装置28を有するものであってもよい。ソフトウェアコード30は、データ記憶装置28に格納されてもよい。いくつかの実施例では、データ記憶装置28は、固定された磁気ディスク、フロッピー(登録商標)ディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、磁気テープ又はフラッシュメモリを含む不揮発性メモリであってもよい。
本明細書において、本発明が特定の実施例を参照して説明された。しかしながら、添付された請求項に与えられる本発明のより広範な趣旨及び範囲から逸脱することなく、各種改良及び変更が可能であるということは明らかであろう。従って、明細書及び図面は、限定的ではなく例示的なものであるとみなされるべきである。
Claims (42)
- 第1命令に対する第1及び第2フローシノニムを実現し、前記第1及び第2フローシノニムの1つを前記第1命令と関連付けるデコーダと、
実行のため、前記第1及び第2フローシノニムの1つをスケジューリングするスケジューラと、
から構成されることを特徴とするプロセッサ。 - 請求項1記載のプロセッサであって、
前記第1フローシノニムは、第1実行ユニットで実行され、
前記第2フローシノニムは、第2実行ユニットで実行される、
ことを特徴とするプロセッサ。 - 請求項2記載のプロセッサであって、
前記第1実行ユニットと前記第2実行ユニットとは、異なるタイプであることを特徴とするプロセッサ。 - 請求項2記載のプロセッサであって、
前記第1実行ユニットと前記第2実行ユニットとは、異なる精度を有することを特徴とするプロセッサ。 - 請求項1記載のプロセッサであって、
前記第1フローシノニムと前記第2フローシノニムとは、共通の実行ユニットで実行されることを特徴とするプロセッサ。 - 請求項1記載のプロセッサであって、
前記デコーダは、プロセッサステータスに基づき前記関連付けを行うことを特徴とするプロセッサ。 - 請求項1記載のプロセッサであって、
前記デコーダは、ルールに基づき前記関連付けを行うことを特徴とするプロセッサ。 - 請求項7記載のプロセッサであって、
前記ルールは、当該プロセッサの電力設定を考慮することを特徴とするプロセッサ。 - 請求項7記載のプロセッサであって、
前記ルールは、実行ユニットの故障ステータスを考慮することを特徴とするプロセッサ。 - 請求項1記載のプロセッサであって、
前記デコーダはさらに、前記第1及び第2フローシノニムの他の1つを前記第1命令と関連付けし、
前記スケジューラはさらに、実行のため、前記第1及び第2フローシノニムの他の1つをスケジューリングする、
ことを特徴とするプロセッサ。 - 請求項10記載のプロセッサであって、さらに、
前記第1フローシノニム又は前記第2フローシノニムの何れか最初に実行を完了させたものをリタイアするリタイアメントモジュールを有することを特徴とするプロセッサ。 - 請求項10記載のプロセッサであって、さらに、
前記第1及び第2フローシノニムの実行結果を比較し、不一致があると例外処理を実行するリタイアメントモジュールを実行するリタイアメントモジュールを有することを特徴とするプロセッサ。 - 複数の実行ユニットのそれぞれが利用可能であるか判断するステップと、
前記複数の実行ユニットの第1実行ユニットが利用可能である場合、前記利用可能な第1実行ユニットに対応する第1フローシノニムを選択し、さらに前記利用可能な第1実行ユニット上での実行のため、前記第1フローシノニムをスケジューリングするステップと、
から構成されることを特徴とする方法。 - 請求項13記載の方法であって、さらに、
前記複数の実行ユニットの何れも利用可能でない場合、複数のフローシノニムから第2フローシノニムを選択するよう調停するステップを有することを特徴とする方法。 - 請求項13記載の方法であって、さらに、
前記複数の実行ユニットの複数の実行ユニットが利用可能な場合、システムパフォーマンスルールに基づき、前記利用可能な実行ユニットの1つに対応して、複数のフローシノニムから前記第1フローシノニムを選択するステップを有することを特徴とする方法。 - 請求項13記載の方法であって、
前記判断するステップは、プロセッサステータスレジスタを読み出すことを特徴とする方法。 - 請求項16記載の方法であって、
前記プロセッサステータスレジスタは、前記複数の実行ユニットの第2実行ユニットが、該第2実行ユニットにおける故障により利用性が低いことを示すことを特徴とする方法。 - 請求項16記載の方法であって、
前記プロセッサステータスレジスタは、前記複数の実行ユニットの第2実行ユニットが、プロセッサの低電力モードにより利用可能であることを示すことを特徴とする方法。 - 命令を第1フローシノニムと第2フローシノニムとに復号化するステップと、
第1実行ユニットと第2実行ユニット上での実行のため、前記第1フローシノニムと第2フローシノニムとをスケジューリングするステップと、
前記第1実行ユニット上で前記第1フローシノニムを実行するステップと、
前記第2実行ユニット上で前記第2フローシノニムを実行するステップと、
から構成されることを特徴とする方法。 - 請求項19記載の方法であって、さらに、
前記第2フローシノニムが実行を終了する前、前記第1フローシノニムが実行を終了すると、前記第1フローシノニムをリタイアするステップを有することを特徴とする方法。 - 請求項19記載の方法であって、さらに、
前記第1フローシノニムの第1実行結果が前記第2フローシノニムの第2実行結果と等しくないとき、例外処理を実行するステップを有することを特徴とする方法。 - 第1命令に対する第1及び第2フローシノニムを実現し、前記第1及び第2フローシノニムの1つを前記第1命令と関連付けるデコーダと、実行のため、前記第1及び第2フローシノニムの1つをスケジューリングするスケジューラとを有するプロセッサと、
前記プロセッサと入出力回路とを接続するインタフェースと、
前記インタフェースに接続される音声入出力回路と、
から構成されるシステム。 - 請求項22記載のシステムであって、
前記第1フローシノニムは、第1実行ユニットで実行され、
前記第2フローシノニムは、第2実行ユニットで実行される、
ことを特徴とするシステム。 - 請求項23記載のシステムであって、
前記第1実行ユニットと前記第2実行ユニットとは、異なるタイプであることを特徴とするシステム。 - 請求項23記載のシステムであって、
前記第1実行ユニットと前記第2実行ユニットとは、異なる精度を有することを特徴とするシステム。 - 請求項22記載のシステムであって、
前記第1フローシノニムと前記第2フローシノニムとは、共通の実行ユニットで実行されることを特徴とするシステム。 - 請求項22記載のシステムであって、
前記デコーダは、プロセッサステータスに基づき前記関連付けを行うことを特徴とするシステム。 - 請求項22記載のシステムであって、
前記デコーダは、ルールに基づき前記関連付けを行うことを特徴とするシステム。 - 請求項28記載のシステムであって、
前記ルールは、当該プロセッサの電力設定を考慮することを特徴とするシステム。 - 請求項28記載のシステムであって、
前記ルールは、実行ユニットの故障ステータスを考慮することを特徴とするシステム。 - 請求項22記載のシステムであって、
前記デコーダはさらに、前記第1及び第2フローシノニムの他の1つを前記第1命令と関連付けし、
前記スケジューラはさらに、実行のため、前記第1及び第2フローシノニムの他の1つをスケジューリングする、
ことを特徴とするシステム。 - 請求項31記載のシステムであって、さらに、
前記第1フローシノニム又は前記第2フローシノニムの何れか最初に実行を完了させたものをリタイアするリタイアメントモジュールを有することを特徴とするシステム。 - 請求項31記載のシステムであって、さらに、
前記第1及び第2フローシノニムの実行結果を比較し、不一致があると例外処理を実行するリタイアメントモジュールを実行するリタイアメントモジュールを有することを特徴とするシステム。 - 複数の実行ユニットのそれぞれが利用可能であるか判断する手段と、
前記複数の実行ユニットの第1実行ユニットが利用可能であると前記判断するステップが判断する場合、前記利用可能な第1実行ユニットに対応する第1フローシノニムを選択する手段と、
前記利用可能な第1実行ユニット上での実行のため、前記第1フローシノニムをスケジューリングする手段と、
から構成されることを特徴とするプロセッサ。 - 請求項34記載のプロセッサであって、
前記複数の実行ユニットの何れも利用可能でないと前記判断する手段が判断する場合、複数のフローシノニムから第2フローシノニムを選択するよう調停する手段を有することを特徴とするプロセッサ。 - 請求項34記載のプロセッサであって、さらに、
前記複数の実行ユニットの複数の実行ユニットが利用可能であると前記判断する手段が判断する場合、システムパフォーマンスルールに基づき、前記利用可能な複数の実行ユニットの1つに対応して、複数のフローシノニムから前記第1フローシノニムを選択する手段を有することを特徴とするプロセッサ。 - 請求項34記載のプロセッサであって、
前記判断する手段は、プロセッサステータスレジスタを読み出す手段を有することを特徴とするプロセッサ。 - 請求項37記載のプロセッサであって、
前記プロセッサステータスレジスタは、前記複数の実行ユニットの第2実行ユニットが、該第2実行ユニットにおける故障により利用性が低いことを示すことを特徴とするプロセッサ。 - 請求項37記載のプロセッサであって、
前記プロセッサステータスレジスタは、前記複数の実行ユニットの第2実行ユニットが、プロセッサの低電力モードにより利用可能であることを示すことを特徴とするプロセッサ。 - 命令を第1フローシノニムと第2フローシノニムとに復号化する手段と、
第1実行ユニットと第2実行ユニット上での実行のため、前記第1フローシノニムと第2フローシノニムとをスケジューリングする手段と、
前記第1実行ユニット上で前記第1フローシノニムを実行する手段と、
前記第2実行ユニット上で前記第2フローシノニムを実行する手段と、
から構成されることを特徴とするプロセッサ。 - 請求項40記載のプロセッサであって、さらに、
前記第2フローシノニムが実行を終了する前、前記第1フローシノニムが実行を終了すると、前記第1フローシノニムをリタイアする手段を有することを特徴とするプロセッサ。 - 請求項40記載のプロセッサであって、さらに、
前記第1フローシノニムの第1実行結果が前記第2フローシノニムの第2実行結果と等しくないとき、例外処理を実行する手段を有することを特徴とするプロセッサ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/733,014 US7197628B2 (en) | 2003-12-10 | 2003-12-10 | Method and apparatus for execution flow synonyms |
PCT/US2004/038979 WO2005062166A2 (en) | 2003-12-10 | 2004-11-19 | Method and apparatus for execution flow synonyms |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007515718A true JP2007515718A (ja) | 2007-06-14 |
Family
ID=34652993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006543843A Pending JP2007515718A (ja) | 2003-12-10 | 2004-11-19 | 実行フローシノニムのための方法及び装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7197628B2 (ja) |
JP (1) | JP2007515718A (ja) |
KR (1) | KR100824488B1 (ja) |
CN (1) | CN100474238C (ja) |
DE (1) | DE112004002376T5 (ja) |
WO (1) | WO2005062166A2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7437512B2 (en) * | 2004-02-26 | 2008-10-14 | Marvell International Ltd. | Low power semi-trace instruction/trace hybrid cache with logic for indexing the trace cache under certain conditions |
US8103669B2 (en) * | 2008-05-23 | 2012-01-24 | Xerox Corporation | System and method for semi-automatic creation and maintenance of query expansion rules |
WO2013095477A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Apparatus and method for detecting and recovering from data fetch errors |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5892934A (en) | 1996-04-02 | 1999-04-06 | Advanced Micro Devices, Inc. | Microprocessor configured to detect a branch to a DSP routine and to direct a DSP to execute said routine |
US6438700B1 (en) * | 1999-05-18 | 2002-08-20 | Koninklijke Philips Electronics N.V. | System and method to reduce power consumption in advanced RISC machine (ARM) based systems |
US6654875B1 (en) * | 2000-05-17 | 2003-11-25 | Unisys Corporation | Dual microcode RAM address mode instruction execution using operation code RAM storing control words with alternate address indicator |
JP3459821B2 (ja) | 2001-05-08 | 2003-10-27 | 松下電器産業株式会社 | マイクロプロセッサ |
DE10136335B4 (de) | 2001-07-26 | 2007-03-22 | Infineon Technologies Ag | Prozessor mit mehreren Rechenwerken |
US7617490B2 (en) * | 2003-09-10 | 2009-11-10 | Intel Corporation | Methods and apparatus for dynamic best fit compilation of mixed mode instructions |
-
2003
- 2003-12-10 US US10/733,014 patent/US7197628B2/en not_active Expired - Fee Related
-
2004
- 2004-11-19 DE DE112004002376T patent/DE112004002376T5/de not_active Ceased
- 2004-11-19 KR KR1020067011413A patent/KR100824488B1/ko not_active IP Right Cessation
- 2004-11-19 WO PCT/US2004/038979 patent/WO2005062166A2/en active Application Filing
- 2004-11-19 CN CNB2004800339890A patent/CN100474238C/zh not_active Expired - Fee Related
- 2004-11-19 JP JP2006543843A patent/JP2007515718A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
DE112004002376T5 (de) | 2006-11-16 |
KR100824488B1 (ko) | 2008-04-22 |
WO2005062166A2 (en) | 2005-07-07 |
US20050132169A1 (en) | 2005-06-16 |
US7197628B2 (en) | 2007-03-27 |
CN100474238C (zh) | 2009-04-01 |
KR20060117967A (ko) | 2006-11-17 |
CN1930548A (zh) | 2007-03-14 |
WO2005062166A3 (en) | 2006-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101681259B (zh) | 用于使用局部条件码寄存器以加速管线处理器中的条件指令执行的系统和方法 | |
US20160055004A1 (en) | Method and apparatus for non-speculative fetch and execution of control-dependent blocks | |
US20080148282A1 (en) | Mechanism and method to track oldest processor event | |
US20050188185A1 (en) | Method and apparatus for predicate implementation using selective conversion to micro-operations | |
CN101876891A (zh) | 微处理器以及快速执行条件分支指令的方法 | |
US20090106533A1 (en) | Data processing apparatus | |
US10248488B2 (en) | Fault tolerance and detection by replication of input data and evaluating a packed data execution result | |
US7404065B2 (en) | Flow optimization and prediction for VSSE memory operations | |
EP3767462A1 (en) | Detecting a dynamic control flow re-convergence point for conditional branches in hardware | |
US8683261B2 (en) | Out of order millicode control operation | |
US10579378B2 (en) | Instructions for manipulating a multi-bit predicate register for predicating instruction sequences | |
US11907712B2 (en) | Methods, systems, and apparatuses for out-of-order access to a shared microcode sequencer by a clustered decode pipeline | |
US10719355B2 (en) | Criticality based port scheduling | |
JP3704046B2 (ja) | データハザードを検出するために用いられるデータを融合するためのシステム及び方法 | |
US20210200550A1 (en) | Loop exit predictor | |
US7213136B2 (en) | Apparatus and method for redundant zero micro-operation removal | |
JP2007515718A (ja) | 実行フローシノニムのための方法及び装置 | |
US10423421B2 (en) | Opportunistic utilization of redundant ALU | |
US20230195593A1 (en) | System, Method And Apparatus For High Level Microarchitecture Event Performance Monitoring Using Fixed Counters | |
US9710389B2 (en) | Method and apparatus for memory aliasing detection in an out-of-order instruction execution platform | |
KR19980086627A (ko) | 특정 유형의 인스트럭션을 동시에 처리할 수 있는 방법 및 데이터 프로세싱 시스템 | |
CN113918225A (zh) | 指令预测方法、指令数据处理装置、处理器以及存储介质 | |
US20190370108A1 (en) | Accelerating memory fault resolution by performing fast re-fetching | |
CN105242905B (zh) | 数据假相关的处理方法和装置 | |
US20230273811A1 (en) | Reducing silent data errors using a hardware micro-lockstep technique |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080826 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090217 |