JP5335440B2 - Early conditional selection of operands - Google Patents
Early conditional selection of operands Download PDFInfo
- Publication number
- JP5335440B2 JP5335440B2 JP2008551563A JP2008551563A JP5335440B2 JP 5335440 B2 JP5335440 B2 JP 5335440B2 JP 2008551563 A JP2008551563 A JP 2008551563A JP 2008551563 A JP2008551563 A JP 2008551563A JP 5335440 B2 JP5335440 B2 JP 5335440B2
- Authority
- JP
- Japan
- Prior art keywords
- operand
- instruction
- operands
- pipeline
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 33
- 230000008569 process Effects 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000012360 testing method Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000007 visual effect Effects 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
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
【技術分野】
【0001】
本開示は、全体的に、プロセッサパイプラインにおいて命令を処理する技術、より具体的には、パイプラインプロセッサにおける前の命令の実行によって設定された条件に基づいて複数のオペランドからオペランドを早期に条件付きで選択することに関する。
【背景技術】
【0002】
携帯電話、ラップトップコンピュータ、パーソナルデータアシスタント(personal data assistant, PDA)、等のような一般にポータブルの製品は、通信およびマルチメディアアプリケーションをサポートするプログラムを実行するプロセッサの使用を必要とする。このような製品のための処理システムは、プロセッサ、命令のソース、入力オペランドのソース、および実行結果を記憶する記憶空間を含む。例えば、命令および入力オペランドは、汎用レジスタ、例えば命令キャッシュおよびデータキャッシュを含む多段キャッシュ(multi-level cache)、並びにシステムメモリから成る階層メモリ構成に記憶され得る。
【0003】
プログラムの実行において高い性能を提供するために、プロセッサは、一般に、プロセッサを製造するのに使用される処理技術およびアプリケーションに対して最適化されたパイプラインで命令を実行する。高性能プロセッサにおいて、記憶装置からオペランドにアクセスする速度は、プロセッサの命令実行速度よりも遅いことが多い。したがって、記憶装置からオペランドを指定した命令を得ることにより、記憶装置のアクセス時間とプロセッサのクロックサイクル時間との差に相当する1以上のサイクルの間、プロセッサをストールすることになり得る。さらに、命令が、前の命令の実行結果であるソースオペランドを指定することは、しばしば行われる。複数ステージの実行パイプラインにおいて、前の実行結果を必要とする命令は、前の命令の実行が完了するまで、ストールされなければならない。これらのストールは、プロセッサの性能を制限する。
【発明の開示】
【発明の概要】
【0004】
幾つかの態様において、本開示は、命令を実行するときに生じ得るストール数を最小化することが一般に好都合であると認識している。したがって、ストールを最小化し、通信およびマルチメディア アプリケーションをサポートするプログラムのようなプログラムにおいて分岐命令の使用を回避または最小化するのを助ける、選択オペランド命令(select operand instruction)を実施することが望まれ得る。プロセッサに対するこのような改良は、プロセッサの動作の性能および効率を向上する。
【0005】
本開示の実施形態は、パイプライン動作の方法に適用される。方法は、少なくとも2つのオペランドのグループから選択される少なくとも1つのオペランドを指定する命令を検出することを含み、その中の少なくとも1つは、パイプラインにおいて実行中(in flight)であり得る。別のステップは、次に、命令によって指定されたオペランド選択基準を決定する。選択基準が決定されると、次に、それを評価して、少なくとも2つのオペランドのグループから少なくとも1つのオペランドを選択する。少なくとも1つの選択されたオペランドが使用可能になると、選択されていないオペランドが使用可能になるのを待つことなく、命令は実行に引き渡され得る。
【0006】
本開示の別の態様は、パイプラインプロセッサにおいて命令を処理する装置に関する。装置は、複数の命令の中の各命令によって要求される入力オペランドデータを使用して、命令を実行する実行ステージを含む。ホールド回路を使用して、各命令に対してホールド(hold)を発生し、全ての入力オペランドデータが受信されると、ホールドを終了する。装置は、入力オペランドデータの受信を完了する前に、選択するオペランドデータを決定し、選択されたオペランドデータが使用可能であると決定すると、実行中の命令において指定された選択基準に関してホールドを終了する手段をさらに含む。
【0007】
本明細書に開示された発明の概念および別の特徴のより完全な理解は、次の詳細な説明および添付の図面から明らかになるであろう。
【詳細な説明】
【0008】
ここで、本開示の幾つかの実施形態が示されている添付の図面を参照して、本開示をより完全に説明する。しかしながら、この開示は、種々の形で具現することができ、本明細書で説明された実施形態に制限されると解釈されるべきではない。むしろ、この開示が行われて達成され、本開示の範囲を当業者に十分に伝えるために、これらの実施形態は与えられている。
【0009】
本開示の教示にしたがって動作を行うときまたは行うために実行されるコンピュータプログラムコードまたは“プログラムコード”は、C、C++、JAVA(登録商標)、Smalltalk、JavaScript(登録商標)、Visual Basic(登録商標)、TSQL、Perl、または種々の他のプログラミング言語のような高水準のプログラミング言語で最初に書かれ得る。これらの言語の1つで書かれたプログラムは、ターゲット プロセッサ アーキテクチャにコンパイルされ、高水準のプログラムコードをネイティブ アセンブラ プログラムに変換する。ターゲット プロセッサ アーキテクチャのプログラムは、直接にネイティブ アセンブラ言語で書かれることもある。ネイティブアセンブラ プログラムは、機械レベルの2値命令の命令ニーモニック表現(instruction mnemonic representation)を使用する。本明細書で使用されるプログラムコードまたはコンピュータ読み出し可能媒体は、そのフォーマットがプロセッサによって理解可能であるオブジェクトコードのような機械語コードを指す。
【0010】
図1は、本開示の実施形態が使用され得る例示的な無線通信システム100のブロック図である。説明の目的で、図1は、3つの遠隔ユニット120、130、および150と、2つの基地局140とを示している。一般に、無線通信システムは追加の遠隔ユニットおよび基地局を有し得ることが分かるであろう。遠隔ユニット120、130、および150は、本開示にしたがってプログラムコードを実行して、動作するプロセッサを有するハードウェア構成要素125A、125B、および125Cをそれぞれ含む。図1は、基地局140から遠隔ユニット120、130、および150への順方向リンク信号180と、遠隔ユニット120、130、および150から基地局140への逆方向リンク信号190とを示している。
【0011】
図1において、遠隔ユニット120は移動電話として示され、遠隔ユニット130はポータブルコンピュータとして示され、遠隔ユニット150は無線ローカルループシステムにおける固定位置の遠隔ユニットとして示されている。例えば、遠隔ユニットは、ハンドヘルド型のパーソナル通信システム(personal communication systems, PCS)ユニット、パーソナル データ アシスタントのようなポータブル データ ユニット、またはメータ示度装置(meter reading equipment)のような固定位置のデータユニットであり得る。図1は、本開示の教示にしたがう遠隔ユニットを示しているが、本開示は、これらの例示的な図示されたユニットに制限されない。例えば、向上した処理効率は、一般に、図示された遠隔デバイスだけでなく、内部プロセッサを有する大多数の製品にとって望ましい特徴である。命令の効率的な実行における改善は、本開示にしたがって、パイプラインプロセッサにおいて、ソースオペランドを条件付きで選択する命令をもつことによって得ることができる。
【0012】
プロセッサは、一般に、命令が指定したオペランドを演算する命令の様々なセットを使用する。ロード(load)、記憶(store)、加算(add)、乗算(multiply)、シフト(shift)、選択(select)、AND命令、またはOR命令は、命令セットアーキテクチャにおいて与えられ得る命令の例である。選択命令は、命令の一例であって、ここでは、オペランドは2つ以上のオペランドの選択肢から条件付きで選択され、選択されたオペランドはターゲット レジスタ アドレスに記憶され得る。選択命令を効率的に実行するために、どのオペランドを選択するかの決定およびフェッチ動作は、プロセッサのストールのために失われる時間を最短にして処理される。
【0013】
図2Aは、オペランド機能の条件付き選択が使用され得る、例示的なパイプラインプロセッサ複合体(pipelined processor complex)200の機能ブロック図である。プロセッサ複合体200は、プロセッサパイプライン202、L1命令キャッシュ204、L1データキャッシュ206、およびメモリ階層208を含む。プロセッサ複合体に接続し得る周辺デバイスは、説明を分かり易くするために示されていない。本開示の第1の実施形態にしたがって、プロセッサ複合体200は、メモリ階層208に記憶されているプログラムコードを実行するために、ハードウェア構成要素125Aないし125Cにおいて適切に使用され得る。
【0014】
プロセッサパイプライン202は、5つの主なステージ、命令フェッチステージ210、デコードステージ212、レジスタ読み出しステージ214、実行ステージ216、およびライトバックステージ218を含む。当業者は、これらのステージの何れが複数のステージに分割されて、関連する機能の一部を行い得るか、またはパイプラインが、追加の機能を提供する他のステージを含み得るかが分かるであろう。説明のために、主なステージの幾つかが1つのステージとして示されているが、各々は、高速設計のために2つ以上のステージに分割されてもよい。例えば、実行ステージ216は、3つのサブステージ、すなわち、実行A(executeA)220、実行B(executeB)222、および実行C(executeC)224に分割される。
【0015】
1つのプロセッサパイプライン202が示されているが、条件付きで選択されるオペランドに関する命令の処理は、スーパースカラ設計、および並列パイプラインを実施する他のアーキテクチャに適用可能である。別の実施においてオペランド命令の条件付き選択をサポートするプロセッサは、プロセッサパイプライン202よりも少ないステージまたは多いステージをもつこともある。例えば、高クロックレートのために設計されたスーパースカラ プロセッサは、2つ以上の並列パイプラインをもつことができ、各パイプラインは、高クロックレートをサポートするために、命令フェッチステージ210、デコードステージ212、レジスタ読み出しステージ214、実行Aステージ220、実行Bステージ222、および実行Cステージ224、およびライトバックステージ218を、2つ以上のパイプラインステージに分割し、全体的なプロセッサパイプラインの深度(depth)を高め得る。
【0016】
プロセッサパイプライン202において、第1のステージは、命令フェッチステージ210である。命令フェッチステージ210は、L1命令キャッシュ204から、後のステージによって処理するための命令をフェッチする。命令フェッチが、L1命令キャッシュ204においてミスすると、命令は、レベル2(L2)キャッシュおよびメインメモリを含み得るメモリ階層208からフェッチされる。命令は、ブート読み出し専用メモリ(read only memory, ROM)、ハードドライブ、光ディスクのような他のソースから、あるいはインターネットのような外部インターフェースから、メインメモリにロードされてもよい。
【0017】
命令フェッチステージ210は、各フェッチされた命令をデコードステージ212へ供給する。デコードステージ212は、命令を、パイプラインの次のステージに供給される制御ビットの集まり(collection)にデコードし、フェッチされた命令の実行に関連したデコードにおける追加の動作をサポートし得る。
【0018】
選択オペランドタイプ命令(select operand type instruction)の一般的な形態は、プロセッサパイプライン202において使用および実行され、例えば、後述で説明されるように、分岐を回避して、処理の前にデータを操作するか、またはデータをマージ(merge)し得る。例えば、ロード、記憶、算術(arithmetic)、論理、シフト、比較、ビット操作命令、等は、オペランドデータを条件付きで処理するために、オペランド選択機能の追加により増補(augment)され得る。選択オペランドロード命令(select operand load instruction)および選択オペランド記憶命令(select operand store instruction)において、選択は、少なくとも2つのメモリベースアドレス間で行われる。これらは、汎用レジスタ(general purpose register, GPR)ファイルに記憶され、GPRレジスタアドレスとして参照される。選択加算命令(select add instruction)において、オペランドは、少なくとも2つのオペランドの選択肢から選択され、選択されたオペランドは、別のオペランドに加算される。選択オペランド命令の一般的な形態において、オペランドの1つまたはグループは、満たされた1つ以上の選択基準に基づいて、オペランドのより大きなグループから選択され得る。オペランドの選択された1つまたはグループは、選択オペランド命令によって指示されるように、さらなる処理のために実行パスに供給される。1つ以上の基準が、選択を決定する基準として使用され得ることに注意すべきである。選択オペランドタイプ命令の一般的な形態のサブセットは、選択命令であり、オペランドは、2つのレジスタオペランドから条件付きで選択され、選択されたオペランドは、ターゲットレジスタ アドレスに記憶される。選択オペランド命令の別の形態は、レジスタオペランドおよび即値(immediate value)からの選択を指定する命令である。
【0019】
別の例は、ベクトルプロセッサで使用され得るオペランドの2つ以上のブロックの選択肢からオペランドのブロックを選択するのに使用される選択オペランド命令である。オペランドの各ブロックは、ブロックの始まりのポインタを含んでいる選択オペランド命令内のフィールドによって参照される。さらに、一般的な選択基準は、複数ビット選択基準から得ることができる3つ以上の選択肢を指定し得る。選択基準は、どのオペランドがより大きなグループから選択されるか、選択されるオペランドの数、またはプロセッサの命令セットアーキテクチャによって指定される他の選択機構を指定し得る。
【0020】
オペランドの選択を決定するのに使用される条件は、種々の算術、論理、および命令セットアーキテクチャにおいて一般に指定されている他の機能命令の実行において、プロセッサによって設定された条件フラグから生成され得る。例えば、負(negative, N)ビット226は、Nビットに影響を与える命令に対して、実行結果が負であるかどうかを示す。ゼロ(zero, Z)ビット228は、Zビットに影響を与える命令に対して、実行結果が全てゼロであるかどうかを示す。桁上げ(carry, C)ビット230は、Cビットに影響を与える命令に対して、実行結果が桁上げ(carry out)に関わるかどうかを示す。オーバーフロー(overflow, V)ビット232は、Vビットに影響を与える命令に対して、実行結果がオーバーフローするかどうかを示す。これらのビットは、プログラム状態レジスタの一部でもあり得る条件コード(condition code, CC)レジスタ234またはフラグレジスタに記憶され得る。
【0021】
条件コードビットは、実行の種々のステージによって設定され得るが、条件コードビットを変更するプログラムの順序(program order)は維持される。例えば、加算、論理演算、ビット選択、アドレス生成、等のような特定の演算は、実行Aステージ220において達成され得る。これらの実行Aステージ220の命令は、条件コードレジスタ234に影響を与えるようにも指定され、実行の最後に、影響を受けた条件コードビットをパス240により送り得る。レジスタシフト命令を用いた算術論理ユニット(arithmetic logic unit, ALU)の演算において指定されるようなより複雑な演算は、2つの別々の演算ステップに分割され得る。第1の演算ステップは、実行Aステージ220において達成され、第2の演算ステップは、実行Bステージ222において達成される。実行Bステージ222における命令の実行が完了すると、条件コードレジスタ234に対する変更は、パス242により送られ得る。より複雑な性質をもつ演算は、追加の実行ステージを利用して、達成し得る。例えば、乗算命令は、3つのステージ、すなわち、実行Aステージ220、実行Bステージ222、および実行Cステージ224を利用して、乗算の演算を完了し得る。第3のステージが完了すると、条件コードレジスタ234は、パス244を通って送られた適切なビットによって再び影響を受け得る。命令は、実行の長さの違いのために、プログラムの順序とは異なる順序で完了し得るので、条件コードレジスタ234内のビットは、プログラムの順序にしたがって設定される。条件レジスタ234のビットの設定を制御する機能は、説明のために、CC制御論理246に含まれている。
【0022】
選択オペランド命令の処理は、デコードステージ212から始まり得る。オペランド選択基準の状態を決定する前に、全てのオペランドがフェッチされるのを待つのではなく、デコードステージは、オペランド選択基準を最初に決定する。オペランド選択基準を決定するために、パイプラインを調べて、オペランド選択基準に影響を与え得る命令が、パイプラインに既に存在しているかどうかを決定しなければならない。条件コードレジスタに影響を与える命令は、レジスタ内の1ビットのみ、全ビット、またはビットのある組合せに影響を与え得るので、選択オペランド命令によって指定されるオペランド選択基準をデコードして、条件コードレジスタ内のビットのどの組合せが要求されているかを決定する。例えば、前の結果が、Zビット228の設定によりゼロであったときは、1つのオペランドが選択され、Zビットが設定されなかったときは、異なるオペランドが選択される。前の計算が正の非ゼロ(positive nonzero)になった場合のオペランドの選択は、Nビット226およびZビット228の両者を調べて、その両者が“ゼロ”に設定されているかどうかを確認することによって得ることがきる。条件コードレジスタ234の値は、条件コード(condition code, CC)パス248により、デコードステージ212、レジスタ読み出しステージ214、および実行Aステージ220へ転送(forward)され、ここで条件コードビットは監視され得る。
【0023】
デコードステージ212において選択オペランド命令を用いるとき、それの先に、プロセッサパイプライン202内に4つまでの追加の命令があり得る。これらの4つの追加の命令の中の3つは、異なる実行ステージにあり得る。複数の実行ステージが、同じ条件コードビットに影響を与え得る命令を用いて、同時に処理されるとき、実行のプログラムの順序は、条件コードビットの設定において、どの命令が優先されるかを指示する。選択オペランド命令よりも前にあって、オペランド選択基準に使用される条件コードビットに影響を与える最後の命令は、ルックアヘッド プロセスによって決定される。
【0024】
ルックアヘッド プロセスは、さらに、パイプラインを通っている各命令からデコードされた制御ビットを用いて、デコードを開始する。制御ビットの一部は、命令が影響を与える条件ビットを、もしあれば示す。各デコードされた命令の制御ビットは、パイプラインを通っている命令指定動作にしたがい、各パイプラインステージを調べて、その動作ステージが条件コードレジスタ234に影響を与えるかどうかを決定することができる。例えば、ルックアヘッドは、各パイプラインの実行ステージにおいて特定の制御ビットのORとして演算し得る。このアプローチは、パイプライン実行ステージにおける命令が、1つ以上の関連する条件ビットに影響を与えない場合のクイックテスト(quick test)として有益である。制御ビットは、パイプラインの各実行ステージにおいて使用可能であるので、条件レジスタが影響を受け得るときを決定することもできる。
【0025】
パイプライン実行ステージにおける命令が、1つ以上の関連する条件ビットに影響を与えないとき、デコードステージにおけるオペランド選択基準を決定するのに使用可能な十分な情報がある。どのオペランドが選択されるかが決定されると、処理は、次のレジスタ読み出しステージ214に進み、読み出しステージ214は、制御情報を与えられ、選択されたオペランドのみをフェッチする。
【0026】
パイプライン実行ステージにおける少なくとも1つの命令が、1つ以上の関連する条件ビットに影響を与えるとき、処理は、次のレジスタ読み出しステージ214に進み、レジスタ読み出しステージ214は、制御情報を与えられ、選択オペランド命令によって要求された全オペランドをフェッチする。全オペランドがフェッチされる一方で、選択基準の決定が監視される。さらに詳しく別途記載されるように、全てのオペランドがフェッチされる前に、選択基準が決定されてもよく、これを使用して、ストール時間を低減することができる。
【0027】
レジスタ読み出しステージ214は、例えば、実行Aステージ220において、処理されることを要求されたオペランドをフェッチする。オペランドは、汎用レジスタ(general purpose register, GPR)ファイル250から、または転送ネットワーク(forwarding network)(図示されていない)からフェッチされ得る。転送ネットワークは、実行ステージから結果のオペランドが使用可能になると直ぐにそれらを供給するために、GPRファイル250の周りに高速のパスを与えている。転送ネットワークを用いても、深い実行パイプライン202からの結果のオペランドは、プロセッサパイプライン202のように3サイクル、または別の実施では4サイクル以上かかり得る。これらのサイクルの間、実行パイプラインから結果のオペランドデータを要求するレジスタ読み出しステージ214における命令は、結果のオペランドが使用可能になるまで待たなければならない。
【0028】
説明されなければならないストーリング状況(stalling situation)の別の例は、ロード命令の実行により生じる。L1データキャッシュ206においてミスがあると、ロード命令の実行には、相当な数のサイクルがかかり得る。ロード命令は、GPRファイル250のレジスタを使用して、ベースアドレスを供給し、実行Aステージ220においてベースアドレスに即値を加えて、有効アドレスを生成し得る。有効アドレスは、データパスによりL1データキャッシュ206に送られる。L1データキャッシュ206においてミスがあると、データは、L2キャッシュおよびメインメモリを含み得る記憶階層208からフェッチされなければならない。L1データキャッシュのミスの後でデータをフェッチするのにかかるサイクルの間、ソースオペランドのような実行中のロードデータを要求する命令は、実行中のオペランドが使用可能になるまで、パイプラインにおいてストールされる。ストールは、レジスタ読み出しステージ214において、または実行Aステージ220の最初に生じると考えられ得る。ミスが解決すると、ロードデータは、パス254により、ライトバックステージ218の一部であると考えられ得るライトバック動作に転送される。次に、オペランドは、GPRファイルに書き込まれ、さらに、転送ネットワークへ送られ得る。後述で説明されるように、ロード動作が原因の、選択オペランド命令の実行におけるストールの影響は、最小化され得る。
【0029】
幾つかのプロセッサパイプラインでは、レジスタファイルへのアクセスが始まった後で、選択基準の評価が行われ得ることに注意すべきである。この場合に、オペランドが不要であって、まだ受信されていないと決定されると、オペランドが実行中であるときは、命令の処理が追跡を停止するか、またはプロセッサが、オペランドが使用可能であることを示すタグに対して、転送ネットワークを“リッスンすること(listening)”を停止する。この手続きは、フェッチ動作よりもパッシブな動作(passive operation)である。何れのアプローチも、本開示の教示の中で実行可能である。
【0030】
図2Bは、プロセッサの実行ステージに入る前にプロセッサパイプラインをストールするときを決定する条件を識別する例示的な判定テーブル265である。評価されるパイプライン内の命令は、2つのオペランドの選択肢、すなわち、オペランドA(operandA)およびオペランドB(operandB)から一方のオペランドの選択を指定する、選択オペランド命令である。オペランドBおよびオペランドAの使用可能性(availability)は、列(column)266および267にそれぞれ示されている。テーブル265は、選択基準がオペランドAの選択を決定するというシナリオに基づく。オペランドが使用可能であると示されると、オペランドを得るための追加のサイクルは不要である。選択基準の状態は、列268に示されている。フェッチ動作は、列269に示されているように、使用可能でない一方または両方のオペランドを得るように指示される。オペランドは、転送ネットワークによって、またはGPRファイルから与えられると、パイプラインをストールすることなく、使用可能であり得る。選択基準を決定することができない(使用可能でない)とき、これは、選択基準に影響を与え得る少なくとも1つの命令がパイプライン中にあるためであると見なされる。ストールの列270に示されているように、オペランドおよび選択基準を含めて、実行を完了するための入力が使用可能でないとき、パイプラインはストールされる。全体的な動作のシナリオは、テーブルの行(row)によって示されている。
【0031】
行271は、オペランドAもオペランドBも使用可能でなく、選択基準も使用可能でないことを示している。パイプラインはオペランド読出しステージにおいてストールされ、その間に両者のオペランドはフェッチされ、1つ以上の選択基準条件ビットは監視される。行272は、両者のオペランドが使用可能になる前に、選択基準が決定されることを示し、この場合、オペランドBは不要であることが分かる。例えば、行271のシナリオで、オペランドBのフェッチが始まっていた場合は、オペランドBのフェッチは支障なく(safely)終了することができる。パイプラインは、読み出しステージにおいてストールされ、オペランドAが使用可能になるのを待つ。行273および275のシナリオにおけるように、選択基準が決定される前に、オペランドAまたはオペランドBが使用可能になると、処理は読み出しステージにおいてストールされたままになって、他方のオペランドが使用可能になるか、または選択基準がオペランドフェッチ動作において影響を与え得るように選択基準が決定されるのを待つ。シナリオ277におけるように、パイプラインのストールは始まった後であるが、選択基準が決定される前に、両者のオペランドが使用可能である、または使用可能になると、処理は読み出しステージにおいてストールされたままになって、選択基準が決定されるのを待つ。行274のシナリオにおけるように、読み出しストールが始まった後で、選択基準が決定され、オペランドAは使用可能であるが、オペランドBが使用可能ではないときは、オペランドBのフェッチは終了し、処理は実行ステージを進む。処理が、ストールすることなく、行274のようなシナリオに達すると、入力は使用可能であり、処理は実行ステージを進むので、レジスタ読み出しステージにおけるストールは不要である。行276のシナリオにおけるように、読み出しストールが始まった後で、選択基準が決定され、オペランドBは使用可能であるが、オペランドAは使用可能ではないときは、オペランドAが使用可能になるまで、ストールは続く。処理が、ストールすることなく、行276のようなシナリオに達すると、オペランドAが使用可能ではないので、レジスタ読み出しステージにおいてストールが必要である。オペランドおよび選択基準の両者が使用可能であるとき、パイプラインのストールは不要であり、処理は実行ステージを進む。
【0032】
本明細書に教示されているように、選択オペランド命令が実行を開始し、選択されたオペランドが使用可能であるときは、使用されない他方のオペランドが使用可能でなくても、オペランドデータを待つのに必要なストールをスキップするか、またはストールを早く終了する。選択基準が決定され、選択されたオペランドがフェッチされ、使用可能になるまで、選択オペランド命令のオペランドを待つことに因るストールは、維持される。
【0033】
オペランドが処理のために使用可能になると、実行ステージに入る。選択基準に基づいて2つのGPRファイルのオペランドの中から選択し、選択されたオペランドをターゲットGPRファイルアドレスに記憶する選択命令において、動作は、実行ステージをバイパスし、選択されたオペランドをライトバックステージ218および転送ネットワーク(図示されていない)に転送し得る。通常、結果の転送ネットワーク(図示されていない)があり、各実行ステージの結果を、パイプラインを通っている後の命令に転送する。一般の選択オペランド命令(general select operand instruction)において、選択されたオペランドは、実行Aステージ220に渡され、実行ステージの処理が始まる。
【0034】
各実行ステージは、命令が指定した動作の複雑さに応じて、命令の処理を完了するか、または要求された動作の一部のみを処理し得る。各実行ステージがその動作を完了すると、結果は、ライトバックステージ218に直接に送られ得る。例えば、命令が、実行Aステージ220の最後に、その指定された動作を完了すると、結果は、パス252によりライトバックステージ218に転送され得る。同様に、実行Bステージ222の最後にその動作を完了する命令は、パス258により結果をライトバックステージ218に転送し、実行Cステージ224の最後にその動作を完了する命令は、パス260により結果をライトバックステージ218に転送する。ライトバックステージ218は、結果をレジスタのGPRファイル250にライトバックする。結果は、プログラムの順序と比較して順序を狂わせて(out of order)、ライトバックステージ218において受信され得るので、ライトバックステージ218は、GPRファイル250に結果を書き込むときに、プロセッサの機能を使用して、プログラムの順序を守る。
【0035】
パックされたデータの処理を使用するとき、選択オペランドタイプ命令は、追加のフラグの使用によって拡張され得る。例えば、フラグのセットは、パックされたデータの処理において、バイトベースで、同数以上の(greater than or equal, GE)フラグ、より少ないフラグ(less than flags, LE)、または他の条件指示(conditional indication, CI)のように設定され得る。32ビットのデータタイプでは、4個のCIフラグを使用することができる。64ビットのデータタイプでは、8個のCIフラグを使用することができる。
【0036】
図2Cは、本開示の第2の実施形態にしたがう、パックされたデータの選択オペランド命令(packed data select operand instruction)が使用され得る、パイプラインプロセッサ複合体280の機能ブロック図である。パイプラインプロセッサ282は、パックされた32ビットのオペランドをサポートするCIフラグ284に基づいて、1以上の選択基準を使用する。CIフラグ284は、プログラム状態語で、条件コードレジスタ286と共に、組み合わされたCC/CIレジスタ288として含まれ得る。
【0037】
パックされたデータの選択オペランド命令は、CIフラグを使用して、2つのパックされたデータオペランドからバイトを選択することができる。例えば、32ビットのパックされたデータ選択命令は、命令セットアーキテクチャにおいて、個々のCI[3:0]フラグを使用するように指定され得る。CI[3:0]フラグは、1で、オペランドAから対応するバイトを選択し、ゼロであるときは、オペランドBから対応するバイトを選択する。CI[3:0]=1010は、オペランドAからバイト3を選択し、オペランドBからバイト2を選択し、オペランドAからバイト1を選択し、オペランドBからバイト0を選択し、選択されたバイトを含んだ32ビットのターゲットレジスタを生成する。CI[3:0]=1111であるときは、オペランドAの全バイトが選択される。CI[3:0]=0000であるときは、オペランドBの全バイトが選択される。CI[3:0]=1111の条件では、オペランドBは不要であり、フェッチされる必要はない。CI[3:0]=0000の条件では、オペランドAは不要であり、フェッチされる必要はない。選択基準は、プログラム状態語におけるCIフラグのビット設定によって決定される。オペランドをフェッチするか、またはオペランドのフェッチングを抑えるかを決定するために、全て1であるか、または全て0であるCIフラグに基づいて選択基準が使用され得る。
【0038】
図2Aのホールド回路262および図2Cのホールド回路290のようなホールド回路を使用することによって、プロセッサパイプラインにおけるストールが生成され得る。ホールド回路は、ホールド信号を発生し、ホールド信号を使用して、例えば、パイプラインステージレジスタをゲート制御して、パイプラインにおいて命令をストールすることができる。図2Aのプロセッサパイプライン202および図2Cのパイプライン282では、レジスタ読み出しステージにおいて、全入力が使用可能であるわけではないとき、ホールド信号がアクティブにされ、入力が届くまで、パイプラインはホールドされる。全オペランドが使用可能になり、選択基準が決定されると、ホールド信号は解除される。例えば、図2Bのテーブル265に指定されているような動作シナリオにしたがって、ホールド信号を適切にアクティブにしたり、解除したりすることができる。
【0039】
選択オペランド命令の処理は、命令のタイプを決定し、条件コードおよびフラグ、例えば、CIフラグを調べ、条件およびフラグ状態を示し、選択基準を決定することを伴う。命令は、それが選択オペランド命令であることを示すフィールドを命令フォーマット内にもち得る。本開示の教示は、種々の命令フォーマットおよびアーキテクチャの仕様に適用可能である。
【0040】
図3は、本開示の教示にしたがう条件付きオペランド選択機能を指定する32ビットの命令300の一般的なフォーマットである。選択オペランド命令300は、命令を選択オペランド命令として識別するオペコード(opcode)302と、少なくとも2つのソース オペランドアドレス フィールドRa304およびRb306とを含んでいる。オペコード302は、選択基準と命令演算の両者を指定し、命令演算は、例えば、加算、乗算、シフト、論理、ビット操作、等である。その代わりに、1つ以上の別々のビットが、命令フォーマットにおいて、機能指定のみに使用されるオペコードおよび選択オペランド命令としての命令を識別するために指定され得る。他のビットフィールド308、310、および312は、命令を実行するかまたは命令を実行しないかを制御する条件フィールド、ターゲット レジスタ アドレスフィールド、データタイプ、等に使用するための命令指定フィールドであり得る。
【0041】
図4は、プロセッサパイプラインにおいてオペランドを条件付きで早期に選択するのに必要な演算ステップを示すフローチャート400である。ステップ404において、フェッチされた命令は、例えば、デコードステージ212のようなデコードステージにおいてデコードされる。ステップ406において、命令が選択オペランド命令であるかどうかが決定される。命令が選択オペランド命令でないときは、処理はステップ408に移る。ステップ408において、オペランドの全ては、例えば、GPRファイル250のような汎用レジスタファイルから、レジスタ読み出しステージ214に適宜にアクセスされる。オペランドが直ちに使用可能でないとステップ410で決定されると、ステップ412で指示されるように、命令はストールされ、オペランドの全てを待たなければならない。全てのオペランドが使用可能であるとステップ410で決定されると、命令は、ステップ414において、例えば、図2Aの実行ステージ220から始まる、実行パイプラインを進むことを許される。
【0042】
選択オペランド命令がフェッチされ、ステップ404でデコードされる別のシナリオを検討する。この場合には、ステップ406において、フェッチされた命令は選択オペランド命令であると決定され、処理はステップ416に移る。ステップ416において、図2AのCCレジスタ234または図2CのCC/CIレジスタ288のような条件コードレジスタの現在の状態に基づいて、オペランド選択基準を決定することができるかどうかを判定するテストが行われる。パイプライン内の実行中の命令または前の命令が条件フラグに影響を与え、したがって、オペランド選択基準に影響を与え得るときは、選択基準を決定することができない。CCまたはCIレジスタの現在の状態に基づいて、オペランド選択基準を決定することができるとき、処理はステップ418に移る。ステップ418において、選択基準に基づいて選択されたオペランドがフェッチされる。処理は、続いてステップ420に進み、例えば、レジスタ読み出しステージ214に達する。ステップ420において、選択されたオペランドが使用可能であるかどうかが決定される。選択されたオペランドが直ちに使用可能ではないとステップ420において決定されると、ステップ422で指示されるように、命令はストールされ、選択されたオペランドを待たなければならない。
【0043】
選択されたオペランドが使用可能であるとステップ420で決定されると、処理はステップ424に進み、命令が、一般の選択オペランド命令のタイプ(general select operand instruction type)のサブセットまたは一般の選択オペランド命令のタイプである選択命令であるかどうかを決定する。命令が選択命令であるときは、処理は、ステップ426に進み、実行ステージ216のような実行ステージはバイパスされ、オペランドは、ライトバックステージ218のようなライトバックステージに転送される。オペランドはさらに、転送ネットワークへ送られ得る。命令が、一般の選択オペランド命令であるとき、処理は、例えば、実行ステージ220から開始することによって、ステップ414に進む。
【0044】
ステップ416におけるテストが、パイプライン内の実行中の命令または前の命令がCCレジスタ234またはCC/CIレジスタ288に影響を与え、したがってオペランド選択基準に影響を与え得ると決定するといったシナリオが存在し得る。この場合に、処理はステップ430に進み、全てのオペランドをフェッチするプロセスが始まり、条件フラグは更新のために監視される。ステップ432において、選択基準の決定に関連する全てのCCまたはCIビットが更新されたかをどうかを決定するテストが行われる。関連するCCまたはCIビットが更新されていないときは、処理はステップ430に戻り、全オペランドのフェッチが続けられる。全ての関連するCCまたはCIビットが更新されたとステップ432において決定されると、処理はステップ434に進み、選択基準によって決定されるように、不要なオペランドのフェッチングは停止される。次に、処理はステップ420に進み、選択されたオペランドが使用可能であるかどうかが決定される。使用可能でないときは、ステップ422で指示されるように、選択されたオペランドが使用可能であると決定されるまで、命令の処理はストールされなければならない。
【0045】
選択されたオペランドが使用可能であるときは、処理はステップ424に進み、命令が、一般の選択オペランド命令のタイプのサブセットまたは一般の選択オペランド命令のタイプである選択命令であるかどうかを決定する。命令が選択命令であるときは、処理はステップ426に進み、実行ステージ216のような実行ステージはバイパスされ、オペランドは、ライトバックステージ218のようなライトバックステージに転送される。オペランドはさらに、転送ネットワークへ送られる。命令が一般の選択オペランド命令であるときは、処理は、例えば、実行ステージ220から開始することによって、ステップ414に進む。
【0046】
本開示は、現在の好ましいコンテキスト(context)において開示されたが、この教示は、この開示および本発明の請求項にしたがう種々のコンテキストに適応し得ることが分かるであろう。
【図面の簡単な説明】
【0047】
【図1】本開示の実施形態が使用され得る例示的な無線通信システムのブロック図。
【図2A】本開示の第1の実施形態にしたがう、オペランド機能の条件付き選択が使用され得る、パイプラインプロセッサ複合体の機能ブロック図。
【図2B】本開示にしたがってプロセッサの実行ステージに入る前にプロセッサパイプラインをストールするときを決定する条件を識別する判定テーブル。
【図2C】本開示の第2の実施形態にしたがう、パックされたデータオペランド機能の条件付き選択が使用され得る、パイプラインプロセッサ複合体の機能ブロック図。
【図3】本開示にしたがう、条件付きオペランド選択機能を指定する32ビットの命令の一般的なフォーマットの図。
【図4】本開示にしたがう、パイプラインにおいてオペランドを条件付きで初期に選択するのに必要な動作ステップのフローチャート。
【Technical field】
[0001]
The present disclosure generally relates to techniques for processing instructions in a processor pipeline, and more particularly to early conditional operands from multiple operands based on conditions set by execution of previous instructions in the pipeline processor. With regard to selecting with.
[Background]
[0002]
Generally portable products such as mobile phones, laptop computers, personal data assistants (PDAs), etc. require the use of a processor that executes programs that support communication and multimedia applications. A processing system for such a product includes a processor, a source of instructions, a source of input operands, and a storage space for storing execution results. For example, instructions and input operands may be stored in a hierarchical memory configuration consisting of general purpose registers, such as a multi-level cache including instruction and data caches, and system memory.
[0003]
In order to provide high performance in program execution, a processor typically executes instructions in a pipeline that is optimized for the processing technology and applications used to manufacture the processor. In high performance processors, the speed of accessing operands from storage is often slower than the instruction execution speed of the processor. Thus, obtaining an instruction specifying an operand from the storage device can stall the processor for one or more cycles corresponding to the difference between the access time of the storage device and the clock cycle time of the processor. Furthermore, it is often done that an instruction specifies a source operand that is the result of the execution of a previous instruction. In a multi-stage execution pipeline, an instruction that requires a previous execution result must be stalled until execution of the previous instruction is complete. These stalls limit the performance of the processor.
DISCLOSURE OF THE INVENTION
SUMMARY OF THE INVENTION
[0004]
In some aspects, the present disclosure recognizes that it is generally advantageous to minimize the number of stalls that can occur when executing instructions. Therefore, it is desirable to implement a select operand instruction that helps to minimize stalls and avoid or minimize the use of branch instructions in programs such as programs that support communication and multimedia applications. obtain. Such improvements to the processor improve the performance and efficiency of the operation of the processor.
[0005]
Embodiments of the present disclosure apply to a method of pipeline operation. The method includes detecting an instruction specifying at least one operand selected from a group of at least two operands, at least one of which is in the pipeline Running (In flight). Another step then determines the operand selection criteria specified by the instruction. Once the selection criteria are determined, it is then evaluated to select at least one operand from a group of at least two operands. When at least one selected operand becomes available, the instruction can be delivered to execution without waiting for an unselected operand to become available.
[0006]
Another aspect of the disclosure relates to an apparatus for processing instructions in a pipeline processor. The apparatus includes an execution stage that executes instructions using input operand data required by each instruction in the plurality of instructions. A hold circuit is used to generate a hold for each instruction and the hold ends when all input operand data is received. If the device determines the operand data to select before completing the reception of the input operand data and determines that the selected operand data is available, Running Means for terminating the hold with respect to the selection criteria specified in the instructions.
[0007]
A more complete understanding of the inventive concepts and other features disclosed herein will become apparent from the following detailed description and the accompanying drawings.
[Detailed explanation]
[0008]
The present disclosure will now be described more fully with reference to the accompanying drawings, in which some embodiments of the disclosure are shown. However, this disclosure can be embodied in various forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be accomplished and accomplished and will fully convey the scope of the disclosure to those skilled in the art.
[0009]
Computer program code or “program code” that is executed or performed to perform operations in accordance with the teachings of this disclosure is C, C ++, JAVA®, Smalltalk, JavaScript®, Visual Basic®. ), First written in a high level programming language such as TSQL, Perl, or various other programming languages. Programs written in one of these languages are compiled into the target processor architecture and convert high-level program code into native assembler programs. Target processor architecture programs may be written directly in native assembler language. Native assembler programs use an instruction mnemonic representation of machine-level binary instructions. Program code or computer readable media as used herein refers to machine language code such as object code whose format is understandable by a processor.
[0010]
FIG. 1 is a block diagram of an exemplary
[0011]
In FIG. 1,
[0012]
A processor typically uses a different set of instructions that operate on the operands specified by the instruction. Load, store, add, multiply, shift, select, AND, or OR instructions are examples of instructions that can be given in the instruction set architecture. . A select instruction is an example of an instruction, where an operand is conditionally selected from a choice of two or more operands, and the selected operand can be stored in a target register address. In order to efficiently execute the select instruction, the determination of which operand to select and the fetch operation are handled with the least amount of time lost due to processor stalls.
[0013]
FIG. 2A is a functional block diagram of an exemplary pipelined
[0014]
The
[0015]
Although one
[0016]
In the
[0017]
The instruction fetch
[0018]
The general form of a select operand type instruction is used and executed in the
[0019]
Another example is a select operand instruction used to select a block of operands from a choice of two or more blocks of operands that may be used in a vector processor. Each block of operands is referenced by a field in the select operand instruction that contains a pointer at the beginning of the block. Further, the general selection criteria may specify more than two options that can be obtained from the multi-bit selection criteria. The selection criteria may specify which operands are selected from a larger group, the number of operands selected, or other selection mechanism specified by the processor's instruction set architecture.
[0020]
The conditions used to determine the choice of operands can be generated from condition flags set by the processor in the execution of various arithmetic, logic, and other functional instructions commonly specified in the instruction set architecture. For example, a negative (N) bit 226 indicates whether the execution result is negative for an instruction that affects the N bit. Zero (Z)
[0021]
The condition code bits can be set by various stages of execution, but the program order of changing the condition code bits is maintained. For example, certain operations such as addition, logic operations, bit selection, address generation, etc. may be accomplished in the
[0022]
Processing of the selected operand instruction may begin at
[0023]
When using a select operand instruction in the
[0024]
The look-ahead process also initiates decoding using control bits decoded from each instruction passing through the pipeline. Some of the control bits indicate the condition bits, if any, that the instruction affects. The control bits of each decoded instruction can examine each pipeline stage according to the instruction-specific operation through the pipeline to determine whether that operation stage affects the
[0025]
When an instruction in the pipeline execution stage does not affect one or more associated condition bits, there is sufficient information that can be used to determine the operand selection criteria in the decode stage. Once it is determined which operand is selected, processing proceeds to the next register read
[0026]
When at least one instruction in the pipeline execution stage affects one or more associated condition bits, processing proceeds to the next register read
[0027]
The register read
[0028]
Another example of a stalling situation that must be accounted for arises from the execution of a load instruction. If there is a miss in the
[0029]
It should be noted that in some processor pipelines, the selection criteria may be evaluated after access to the register file begins. In this case, if it is determined that the operand is unnecessary and has not yet been received, the operand is Running The instruction processing stops tracking, or the processor stops “listening” the forwarding network for a tag indicating that the operand is available. This procedure is a passive operation rather than a fetch operation. Either approach is feasible within the teachings of this disclosure.
[0030]
FIG. 2B is an exemplary decision table 265 that identifies conditions that determine when to stall the processor pipeline before entering the execution stage of the processor. The instruction in the pipeline to be evaluated is a select operand instruction that specifies a choice of one operand from two operand choices, operand A (operand A) and operand B (operand B). The availability of operand B and operand A are shown in
[0031]
Line 271 indicates that neither operand A nor operand B is available, and that no selection criteria are available. The pipeline is stalled in the operand read stage, during which both operands are fetched and one or more selection criteria condition bits are monitored. Line 272 shows that the selection criteria are determined before both operands are available, in which case it can be seen that operand B is not needed. For example, in the scenario of line 271, if operand B fetching has begun, operand B fetching can be safely terminated. The pipeline is stalled in the read stage and waits for operand A to become available. As in the scenario in
[0032]
As taught herein, when a selected operand instruction begins execution and the selected operand is available, it waits for operand data even if the other unused operand is not available Skip the stall that is needed for it, or end the stall early. Stalls due to waiting for operands of the selected operand instruction are maintained until the selection criteria are determined and the selected operand is fetched and available.
[0033]
When the operand becomes available for processing, the execution stage is entered. In a select instruction that selects between two GPR file operands based on the selection criteria and stores the selected operand in the target GPR file address, the operation bypasses the execution stage and writes the selected operand to the write back stage. 218 and a forwarding network (not shown). There is usually a result transfer network (not shown) that transfers the results of each execution stage to the subsequent instruction through the pipeline. In a general select operand instruction, the selected operand is passed to the
[0034]
Each execution stage may complete processing of the instruction or process only a portion of the requested operation, depending on the complexity of the operation specified by the instruction. As each execution stage completes its operation, the result may be sent directly to the write-back stage 218. For example, if the instruction completes its designated operation at the end of execute A
[0035]
When using packed data processing, select operand type instructions can be extended by the use of additional flags. For example, a set of flags may be byte-based, greater than or equal (GE) flags, less than flags (LE), or other conditional indications when processing packed data. indication, CI). In the 32-bit data type, four CI flags can be used. For the 64-bit data type, 8 CI flags can be used.
[0036]
FIG. 2C is a functional block diagram of a
[0037]
A packed data select operand instruction can use the CI flag to select a byte from two packed data operands. For example, 32-bit packed data selection instructions may be specified to use individual CI [3: 0] flags in the instruction set architecture. The CI [3: 0] flag is 1, which selects the corresponding byte from operand A, and when it is zero, selects the corresponding byte from operand B. CI [3: 0] = 1010 selects
[0038]
By using hold circuits such as
[0039]
Processing of the selected operand instruction involves determining the type of instruction, examining condition codes and flags, eg, CI flags, indicating conditions and flag states, and determining selection criteria. An instruction may have a field in the instruction format that indicates that it is a selected operand instruction. The teachings of this disclosure are applicable to various instruction format and architecture specifications.
[0040]
FIG. 3 is a general format of a 32-
[0041]
FIG. 4 is a
[0042]
Consider another scenario where the selected operand instruction is fetched and decoded in
[0043]
If
[0044]
The test in
[0045]
If the selected operand is available, processing proceeds to step 424 to determine whether the instruction is a select instruction that is a subset of a general select operand instruction type or a general select operand instruction type. . If the instruction is a select instruction, processing proceeds to step 426 where an execution stage such as
[0046]
Although the present disclosure has been disclosed in the presently preferred context, it will be appreciated that the teachings can be adapted to various contexts according to the disclosure and the claims of the present invention.
[Brief description of the drawings]
[0047]
FIG. 1 is a block diagram of an example wireless communication system in which embodiments of the present disclosure may be used.
FIG. 2A is a functional block diagram of a pipeline processor complex in which conditional selection of operand functions may be used in accordance with the first embodiment of the present disclosure.
FIG. 2B is a decision table identifying conditions that determine when to stall the processor pipeline before entering the execution stage of the processor in accordance with the present disclosure.
FIG. 2C is a functional block diagram of a pipeline processor complex in which conditional selection of packed data operand functions may be used according to a second embodiment of the present disclosure.
FIG. 3 is a diagram of a general format of a 32-bit instruction specifying a conditional operand selection function in accordance with the present disclosure.
FIG. 4 is a flowchart of the operational steps required to conditionally initially select an operand in a pipeline according to the present disclosure.
Claims (20)
少なくとも2つのオペランドのグループを指定する現在の命令を検出することと、ここにおいて、1つのオペランドは前の命令の実行により影響を受けた条件値に基づいて前記少なくとも2つのオペランドのグループから選択され、前記2つのオペランドの少なくとも1つは前記パイプラインにおいて実行中である、
前記現在の命令によって指定されたオペランド選択基準を決定することと、
前記条件値を評価して、前記少なくとも2つのオペランドのグループから前記1つのオペランドを選択するための前記オペランド選択基準を満足するか否かを決定することと、
前記1つの選択されたオペランドが受信されると、前記現在の命令を実行に引き渡すことと、
前記1つのオペランドの選択に応答して前記グループから選択されなかったオペランドのフェッチを終了することと、
を含む方法。 In the method of pipeline operation,
Detecting a current instruction specifying a group of at least two operands, wherein one operand is selected from the group of at least two operands based on a condition value affected by execution of a previous instruction; , At least one of the two operands is executing in the pipeline;
Determining operand selection criteria specified by the current instruction;
Evaluating the condition value to determine whether to satisfy the operand selection criteria for selecting the one operand from the group of at least two operands;
When the one selected operand is received, and to hand over the previous SL current instruction execution,
And to end the fetch of an operand that has not been selected from the group in response to the selection of said one of the operands,
Including methods.
前記現在の命令をデコードして、前記オペランド選択基準の基礎として使用される少なくとも1つの条件フラグを決定することをさらに含む請求項1記載の方法。 Determining the operand selection criteria includes
The method of claim 1, further comprising decoding the current instruction to determine at least one condition flag used as a basis for the operand selection criteria.
前記条件フラグが、まだ実行中である前記前の命令によって指定される場合に影響を受ける前記オペランド選択基準によって指定される条件フラグを待つことをさらに含む請求項1記載の方法。 Evaluating the condition value is
The method of claim 1, further comprising waiting for a condition flag specified by the operand selection criteria to be affected if the condition flag is specified by the previous instruction that is still executing.
少なくとも1つの条件フラグが前記前の命令によって指定されるように影響を受けるかどうかを調べるために前記パイプラインにおいてルックアヘッドする(looking ahead)ことをさらに含む請求項1記載の方法。 Evaluating the condition value is
The method of claim 1, further comprising looking ahead in the pipeline to see if at least one condition flag is affected as specified by the previous instruction.
前記プロセッサパイプラインのデコードステージにおいて、前記選択オペランド命令で指定された1つ以上の選択基準をデコードすることと、
前の命令の実行により影響を受けた条件フラグを解析することと、ここにおいて、前記条件フラグは、前記1つまたは複数の選択基準により指定される、
前記条件フラグの解析が、前記選択オペランド命令において指定された少なくとも2つのオペランドのグループから1つのオペランドが選択されることを示すなら、選択されなかったオペランドのための待機を終了することと、
前記1つの選択されたオペランドを用いて、前記選択オペランド命令を実行することと、
を具備する方法。 In a method of processing a select operand instruction in a processor pipeline,
Decoding one or more selection criteria specified by the selected operand instruction in a decode stage of the processor pipeline;
Analyzing a condition flag affected by execution of a previous instruction, wherein the condition flag is specified by the one or more selection criteria;
If the condition flag analysis indicates that one operand is selected from the group of at least two operands specified in the selected operand instruction, terminating the wait for the unselected operand;
Executing the selected operand instruction with the one selected operand;
A method comprising:
前記条件フラグが、まだ実行中である前記前の命令によって指定されるように影響を受けるなら、前記1つまたは複数の選択基準によって指定される条件フラグが影響を受けるのを待つことをさらに含む請求項10記載の方法。 Analyzing the condition flag
If the condition flag is affected as specified by the previous instruction that is still executing, the method further comprises waiting for the condition flag specified by the one or more selection criteria to be affected. The method of claim 10.
前記1つの選択されたオペランドの機能である結果を戻すことをさらに含む請求項10記載の方法。 Executing the selected operand instruction comprises:
The method of claim 10, further comprising returning the function in which the result of the one selected operand.
1つのオペランドデータを用いて現在の命令を実行する実行ステージと、ここにおいて、条件基準の値が前の命令の実行により決定され、前記1つのオペランドデータが少なくとも2つのオペランドのグループからの前記値によって選択され、前記条件基準と前記少なくとも2つのオペランドは前記現在の命令によって指定される、
前記実行ステージにおける前記1つのオペランドデータの受信が完了するまで、前記実行ステージによる命令の実行前に、前記現在の命令に対するホールドを発生するホールド回路と、
前記グループからの選択されないオペランドが使用可能になるのを待つことなく前記1つのオペランドデータが使用可能であると決定すると、前記ホールドを終了する手段と、を具備するパイプラインプロセッサ。 In a pipeline processor that processes instructions,
An execution stage for executing the current instruction using one operand data, wherein a condition-based value is determined by execution of a previous instruction, and the one operand data is the value from a group of at least two operands The condition criteria and the at least two operands are specified by the current instruction;
A hold circuit for generating a hold for the current instruction before execution of the instruction by the execution stage until reception of the one operand data in the execution stage is completed;
Means for ending the hold when determining that the one operand data is available without waiting for an unselected operand from the group to become available.
前記パイプラインの全体にわたり、ステージごとに制御ビットを追跡するパイプラインステージと、
をさらに具備する請求項14記載のパイプラインプロセッサ。 A decoder for decoding each instruction of a plurality of instructions into control bits including a control bit designating a condition code representing the condition criterion;
A pipeline stage that tracks control bits for each stage throughout the pipeline;
The pipeline processor according to claim 14, further comprising:
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/336,357 US9710269B2 (en) | 2006-01-20 | 2006-01-20 | Early conditional selection of an operand |
US11/336,357 | 2006-01-20 | ||
PCT/US2007/060814 WO2007085010A2 (en) | 2006-01-20 | 2007-01-22 | Early conditional selection of an operand |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2009524167A JP2009524167A (en) | 2009-06-25 |
JP2009524167A5 JP2009524167A5 (en) | 2012-03-01 |
JP5335440B2 true JP5335440B2 (en) | 2013-11-06 |
Family
ID=38286963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008551563A Expired - Fee Related JP5335440B2 (en) | 2006-01-20 | 2007-01-22 | Early conditional selection of operands |
Country Status (6)
Country | Link |
---|---|
US (1) | US9710269B2 (en) |
EP (2) | EP1974254B1 (en) |
JP (1) | JP5335440B2 (en) |
KR (1) | KR100986375B1 (en) |
CN (1) | CN101371223B (en) |
WO (1) | WO2007085010A2 (en) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
PL3422178T3 (en) | 2011-04-01 | 2023-06-26 | Intel Corporation | Vector friendly instruction format and execution thereof |
US10157061B2 (en) | 2011-12-22 | 2018-12-18 | Intel Corporation | Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks |
US9280344B2 (en) * | 2012-09-27 | 2016-03-08 | Texas Instruments Incorporated | Repeated execution of instruction with field indicating trigger event, additional instruction, or trigger signal destination |
KR101711388B1 (en) | 2013-01-28 | 2017-03-02 | 삼성전자주식회사 | Device and method to compile for scheduling block at pipeline |
US10592252B2 (en) | 2015-12-31 | 2020-03-17 | Microsoft Technology Licensing, Llc | Efficient instruction processing for sparse data |
US10459727B2 (en) | 2015-12-31 | 2019-10-29 | Microsoft Technology Licensing, Llc | Loop code processor optimizations |
US11385897B2 (en) * | 2019-10-01 | 2022-07-12 | Marvell Asia Pte, Ltd. | Merge execution unit for microinstructions |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5150469A (en) * | 1988-12-12 | 1992-09-22 | Digital Equipment Corporation | System and method for processor pipeline control by selective signal deassertion |
GB2228597A (en) | 1989-02-27 | 1990-08-29 | Ibm | Data processor with conditional instructions |
JP3082944B2 (en) | 1990-12-20 | 2000-09-04 | 富士通株式会社 | Pipeline processing equipment |
GB2291515B (en) | 1994-07-14 | 1998-11-18 | Advanced Risc Mach Ltd | Data processing using multiply-accumulate instructions |
US5699537A (en) * | 1995-12-22 | 1997-12-16 | Intel Corporation | Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions |
TW325552B (en) | 1996-09-23 | 1998-01-21 | Advanced Risc Mach Ltd | Data processing condition code flags |
TW343318B (en) | 1996-09-23 | 1998-10-21 | Advanced Risc Mach Ltd | Register addressing in a data processing apparatus |
GB2317466B (en) | 1996-09-23 | 2000-11-08 | Advanced Risc Mach Ltd | Data processing condition code flags |
GB2317464A (en) | 1996-09-23 | 1998-03-25 | Advanced Risc Mach Ltd | Register addressing in a data processing apparatus |
US6173393B1 (en) * | 1998-03-31 | 2001-01-09 | Intel Corporation | System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data |
JP2000020309A (en) * | 1998-06-30 | 2000-01-21 | Toshiba Microelectronics Corp | Digital signal processor |
JP2001051845A (en) | 1999-08-12 | 2001-02-23 | Hitachi Ltd | Out-of-order execution system |
US6633971B2 (en) * | 1999-10-01 | 2003-10-14 | Hitachi, Ltd. | Mechanism for forward data in a processor pipeline using a single pipefile connected to the pipeline |
US20050188182A1 (en) * | 1999-12-30 | 2005-08-25 | Texas Instruments Incorporated | Microprocessor having a set of byte intermingling instructions |
US6604192B1 (en) | 2000-01-24 | 2003-08-05 | Hewlett-Packard Development Company, L.P. | System and method for utilizing instruction attributes to detect data hazards |
JP2001216275A (en) | 2000-02-01 | 2001-08-10 | Sony Corp | Image processor and image processing method |
KR20030007403A (en) | 2000-11-27 | 2003-01-23 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | Data processing apparatus with many-operand instruction |
JP4220722B2 (en) | 2001-05-02 | 2009-02-04 | パイオニア株式会社 | Information recording medium and information reading apparatus |
US7028171B2 (en) * | 2002-03-28 | 2006-04-11 | Intel Corporation | Multi-way select instructions using accumulated condition codes |
JP2004062401A (en) | 2002-07-26 | 2004-02-26 | Matsushita Electric Ind Co Ltd | Arithmetic processor and camera device using it |
US6944747B2 (en) * | 2002-12-09 | 2005-09-13 | Gemtech Systems, Llc | Apparatus and method for matrix data processing |
US7636837B2 (en) * | 2003-05-28 | 2009-12-22 | Fujitsu Limited | Apparatus and method for controlling instructions at time of failure of branch prediction |
GB2409063B (en) | 2003-12-09 | 2006-07-12 | Advanced Risc Mach Ltd | Vector by scalar operations |
-
2006
- 2006-01-20 US US11/336,357 patent/US9710269B2/en not_active Expired - Fee Related
-
2007
- 2007-01-22 CN CN200780002416.5A patent/CN101371223B/en active Active
- 2007-01-22 EP EP07717333A patent/EP1974254B1/en not_active Not-in-force
- 2007-01-22 JP JP2008551563A patent/JP5335440B2/en not_active Expired - Fee Related
- 2007-01-22 KR KR1020087020385A patent/KR100986375B1/en active IP Right Grant
- 2007-01-22 EP EP11196175.1A patent/EP2461246B1/en active Active
- 2007-01-22 WO PCT/US2007/060814 patent/WO2007085010A2/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US9710269B2 (en) | 2017-07-18 |
WO2007085010A3 (en) | 2007-12-13 |
EP2461246B1 (en) | 2017-03-29 |
EP1974254B1 (en) | 2012-06-06 |
EP1974254A2 (en) | 2008-10-01 |
WO2007085010A2 (en) | 2007-07-26 |
KR20080087171A (en) | 2008-09-30 |
US20070174592A1 (en) | 2007-07-26 |
EP2461246A1 (en) | 2012-06-06 |
JP2009524167A (en) | 2009-06-25 |
CN101371223A (en) | 2009-02-18 |
KR100986375B1 (en) | 2010-10-08 |
CN101371223B (en) | 2015-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9367471B2 (en) | Fetch width predictor | |
US8069336B2 (en) | Transitioning from instruction cache to trace cache on label boundaries | |
TWI654562B (en) | Backtracking compatibility by algorithm matching, deactivating features, or limiting performance | |
KR101225075B1 (en) | System and method of selectively committing a result of an executed instruction | |
US6721866B2 (en) | Unaligned memory operands | |
US5649138A (en) | Time dependent rerouting of instructions in plurality of reservation stations of a superscalar microprocessor | |
JP3599409B2 (en) | Branch prediction device | |
JP6718454B2 (en) | Hiding page translation miss latency in program memory controller by selective page miss translation prefetch | |
US6279105B1 (en) | Pipelined two-cycle branch target address cache | |
US20110320787A1 (en) | Indirect Branch Hint | |
US20120204008A1 (en) | Processor with a Hybrid Instruction Queue with Instruction Elaboration Between Sections | |
JP5335440B2 (en) | Early conditional selection of operands | |
KR20090061644A (en) | Methods and apparatus for emulating the branch prediction behavior of an explicit subroutine call | |
KR20090094335A (en) | Methods and apparatus for recognizing a subroutine call | |
JP5745638B2 (en) | Bimodal branch predictor encoded in branch instruction | |
JP2009524167A5 (en) | ||
US7779234B2 (en) | System and method for implementing a hardware-supported thread assist under load lookahead mechanism for a microprocessor | |
US6983359B2 (en) | Processor and method for pre-fetching out-of-order instructions | |
US20120110037A1 (en) | Methods and Apparatus for a Read, Merge and Write Register File | |
US20050144427A1 (en) | Processor including branch prediction mechanism for far jump and far call instructions | |
US7996655B2 (en) | Multiport execution target delay queue FIFO array | |
US7783692B1 (en) | Fast flag generation | |
CN115858022A (en) | Scalable switch point control circuitry for clustered decoding pipeline |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110621 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110726 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20111024 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20111031 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20111125 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20111202 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20111226 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20120106 |
|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20120116 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120117 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120828 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20121128 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20121205 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121225 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130312 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130612 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130702 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130731 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5335440 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |