JP5653762B2 - 実行された命令の結果を選択的にコミットするためのシステムおよび方法 - Google Patents

実行された命令の結果を選択的にコミットするためのシステムおよび方法 Download PDF

Info

Publication number
JP5653762B2
JP5653762B2 JP2010550747A JP2010550747A JP5653762B2 JP 5653762 B2 JP5653762 B2 JP 5653762B2 JP 2010550747 A JP2010550747 A JP 2010550747A JP 2010550747 A JP2010550747 A JP 2010550747A JP 5653762 B2 JP5653762 B2 JP 5653762B2
Authority
JP
Japan
Prior art keywords
instruction
result
execution
instructions
pipeline
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
Application number
JP2010550747A
Other languages
English (en)
Other versions
JP2011517493A (ja
Inventor
コドレスキュ、ルシアン
レスター、ロバート・エー.
タボニー、チャールズ・ジェイ.
プロンドケ、エリッチ・ジェイ.
ジェング、マオ
ベンクマハンティ、スレシュ・ケー.
イングル、アジャイ・エー.
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2011517493A publication Critical patent/JP2011517493A/ja
Application granted granted Critical
Publication of JP5653762B2 publication Critical patent/JP5653762B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30069Instruction skipping instructions, e.g. SKIP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Description

本開示は、一般的に、実行された命令の結果を選択的にコミットするシステムおよび方法に関連する。
多くのアルゴリズムは、ある条件に基づいたオペレーション(operation)を選択的に行なう。ソフトウェアコードにおいて、そのような選択的なパフォーマンスは、比較オペレーション(compare operation)の複数の結果に基づいて前記コードの複数の部分を任意に読み飛ばす分岐命令によって後続される比較命令を使用して成し遂げられることができる。幾つかのアーキテクチャー(architectures)は、前記オペレーションそれ自身が条件付きで実行することを可能にでき、それによって分岐オペレーションを除去している。しかしながら、前記特定の条件の結果に対しては、なお依存性がある。
典型的に、超長命令語(Very Long Instruction Word)(VLIW)プロセッサのアーキテクチャーにおいて、比較オペレーションは行なわれることができ、そしてその比較命令からの結果は、ある正の数(some positive number)の複数のプロセッササイクル(processor cycle)の後に利用可能である。複数のコンピュータプログラムにおいて、比較オペレーションは、比較オペレーションの結果が分岐オペレーションを実行するかどうか決定するために使用されるところの分岐オペレーションによってしばしば後続される。典型的に、コンパイラは、そのような複数の依存性によるパイプラインの複数の機能停止(stalls)を減らす複数の命令を編成(organize)するために使用される。
非VLIW(non-VLIW)プロセッサのアーキテクチャーでは、複数の分岐の前記依存性を投機的(speculatively)に除去するために、分岐予測の複数の技術を利用することが一般的である。しかしながら、そのような分岐予測は、プロセッサのコア(core)の電力消費量を増加させ、および複雑性を増す。VLIWプロセッサの複数のアーキテクチャーがソフトウェアによってグループ化される多くのフライト中(in-flight)の命令を有するので、分岐予測は、VLIWプロセッサのアーキテクチャーにおいて、典型的に制限されるかあるいは存在しない。それにも拘わらず、比較および分岐オペレーション間の複数の依存性は、なお存在する。従って、命令の複数の依存性に起因するパイプラインの複数の機能停止を減らすために、改良されたプロセッサのアーキテクチャーの必要性がある。
特定の態様では、第1の実行パイプラインおよび第2の実行パイプラインを含む、複数の並列実行のパイプラインを有するプロセッサにおいて、第1の命令および第1の命令に依存する第2の命令を含む、命令のパケットを受信することを含む方法が開示される。さらにこの方法は、第1の命令の少なくとも一部および第2の命令の少なくとも一部を並行に実行することを含む。この方法はまた、第1の実行パイプラインを用いた第1の命令の実行に関連する第1の結果に基づいて、第2の実行パイプラインを用いて第2の命令の少なくとも一部を実行したことの第2の結果を選択的にコミットすることを含む。
別の特定の態様では、複数の並列実行のパイプラインを有するプロセッサにおいて、比較命令および第2の命令を含む命令のパケットを受信することを含む方法が開示される。第2の命令は比較命令に依存している。さらにこの方法は、第2の命令がコミットされるかどうかに関連する予測を決定するために第2の命令および比較命令を復号すること、第1の命令および第2の命令を並行に実行すること、および第2の命令におよび前記予測に一部基づいて、取り出しパイプラインを選択的に操縦すること(steering)とを含む。
なお別の特定の態様では、プロセッサは、複数の命令を並行して実行するように適応されたマルチプルな実行の複数のパイプラインを含む。このマルチプルな実行の複数のパイプラインは、比較命令を実行するための第1の実行パイプラインと、比較命令に依存する第2の命令を実行するための第2の実行パイプラインを含む。比較命令および第2の命令は同時に実行される。プロセッサはまた、比較命令の実行から決定される、第1の実行パイプラインからの第1の結果を、第2の命令による使用のために第2の実行パイプラインへ提供するように適応された論理回路を含む。
このシステムおよび複数の方法の複数の態様によって提供される1つの特定の利点は、コンパイラが依存性関連の(dependency-related)複数の待ち時間(latencies)を導入することなく、プロセッサによる同時実行のために、比較命令と共にその比較命令の結果を利用する分岐命令を単一のパケットにグループ化することができることである。
別の特定の利点は、比較命令が、比較オペレーションのその結果に依存する、算術のおよびメモリロード(memory load)の命令のような他の複数の命令と、グループ化されること、および並行して実行されることができることにおいて提供される。なお別の特定の利点は、これら複数の命令が、同じサイクルにおいて、ならびに実行ユニット(execution unit)がその複数の結果をコミットする必要がある前に、比較命令の結果を使用することができることにおいて提供され、それによって、不必要な書き込みオペレーションを防いでいる。
本開示の他の観点、利点、および特徴は、次に続く複数のセクション:図の簡単な説明、発明を実施するための形態、および特許請求の範囲、とを含む本出願全体のレビューの後に明白になるだろう。
図1は、並行に実行される(parallel-executed)複数の命令を条件付きでコミットするためのロジックを含むプロセッサの特定の例示的な実施形態を示すブロック図。 図2は、並行に実行される複数の命令を条件付きでコミットするためのプロセッサの、第2の特定の例示的な実施形態を示すブロック図。 図3は、第1の比較命令の実行からの第1の結果に基づく第2の結果の選択的なコミットメントを例示している、マルチプルな実行の複数のステージ(stage)を含む実行サイクルの特定の例示的な例を示す図。 図4は、比較命令、および比較命令の結果に依存する第2の命令を含む複数のパケットに複数の命令をコンパイルする方法の特定の例示的な実施形態を示す流れ図。 図5は、並行に実行される複数の命令を条件付きでコミットする方法の特定の例示的な実施形態を示す流れ図。 図6は、予測されるフローの条件付き変更に従って、取り出しパイプラインを操縦する方法の、特定の例示的な実施形態を示す流れ図。および、 図7は、並行に実行される複数の命令を条件付きでコミットするためのロジックを含む、代表的な携帯可能な(portable)通信装置を示すブロック図。
図1は、並行に実行される複数の命令を条件付でコミットするためのロジックを含むプロセッサ100の、特定の例示的な実施形態のブロック図である。プロセッサ100は、バスインターフェース108を介して命令キャッシュ110に結合されるメモリ102を含む。プロセッサ100はまた、バスインターフェース108を介してメモリ102に結合されるデータキャッシュ112を含む。命令キャッシュ110はバス111を介してシーケンサ114に結合される。シーケンサ114はまた、複数の一般的な割込み(general interrupts)116を受信し、それらは割込みレジスタ(表示されていない)から読み出されることができる。特定の実施形態では、命令キャッシュ110は、複数の現行命令のレジスタを介してシーケンサ114に結合されることができ、それはバス111に結合されることができ、ならびにプロセッサ100の特定の複数のスレッドに関連づけられる(associated with)ことができる。特定の実施形態では、プロセッサ100は、6つのスレッドを含む、インターリーブされた(interleaved)マルチスレッドのプロセッサである。
特定の実施形態では、バス111は百二十八ビット(128−ビット)のバスであり、またシーケンサ114は、各々が三十二(32)ビットの長さを有するマルチプルな命令を含む複数の命令のパケットを介してメモリ102から複数の命令を読み出すように構成される。バス111は、第1の命令実行ユニット118、第2の命令実行ユニット120、第3の命令実行ユニット122、および第4の命令実行ユニット124に結合される。各命令実行ユニット118、120、122、124は、第1のバス128を介して汎用レジスタファイル(general register file)126に結合されることができる。汎用レジスタファイル126はまた、第2のバス130を介してシーケンサ114、データキャッシュ112、およびメモリ102に結合されることができる。特定の例示的な実施形態では、データキャッシュ112は、まだ決定されていない条件に基づいて前記データが格納される一時記憶番地(temporary storage location)を提供するための、メモリを格納するバッファ132を含むことができる。
プロセッサ100はまた、複数の割込みを受け取るかどうか、ならびに複数の命令の実行を制御するかどうか、を決定するためのシーケンサ内の制御ロジックによってアクセスされることができる複数のビットを格納するための、複数の監視制御レジスタ134および複数のグローバル制御レジスタ(global control registers)136を含むことができる。プロセッサ100はまた、実行ユニット118、120、122、124に結合されるプレディケート論理回路138および複数のプレディケートレジスタ140を含んでいる。特定の実施形態では、複数のプレディケートレジスタ140は、スカラーおよびベクトルの比較オペレーションの結果を保持する4つの読み取り/書き込みの8―ビットレジスタを含むことができる。複数の比較の結果は、バス142を介して実行ユニット118、120、122および124によってプレディケートレジスタ140に書き込まれることができる。プレディケート論理回路138は、複数のプレディケートレジスタ140からデータを読み出しならびに複数の比較の結果を要する選択された実行ユニットに対して複数の比較の結果を提供するように適応される。特定の例では、プレディケート論理回路138は、各実行ユニット118、120、122および124内に組み込まれることができ、ならびに分岐命令に関連付けられる標識の存在に基づいてプレディケートレジスタ140からデータを読み出すことができる。例えば、分岐命令は、その分岐命令のために使用される条件付きのデータが同じ命令のパケット中に含まれた比較の結果であることを識別している何等かの他の標識あるいはビット設定を含むことができる。そのような標識は、複数のプレディケートレジスタ140から比較の結果を読み出すための、プレディケート制御ロジック(predicate control logic)を引き起こすことができる。
プレディケート論理回路138および複数のプレディケートレジスタ140は、第1の実行パイプラインの実行の初期のステージにおける比較命令からの結果を、分岐命令、論理オペレーション命令(すなわち、論理積(logical AND)、論理和(logical OR)、否定論理積(logical NAND)、否定論理和(logical NOR)、否定排他的論理和(logical exclusive-OR)、または他の複数の論理演算)、ロード命令、ストア命令、算術命令、別の条件付き命令、またはそれらのいずれの組み合わせで使用するために第2の実行パイプラインへ提供するためのプロセッサ100によって利用される。特定の実施形態では、プレディケート論理回路138は、比較の結果(プレディケート)が生成されたのと同じ実行サイクル内で、そのプレディケートを使用することを分岐に許可するために、第1の実行パイプラインから、別の実行パイプラインによって使用するための複数の結果を読み出すように適応される。特定の例において、分岐命令は、実行ユニット118によって実行される比較命令からの結果を使用して、その比較の結果が計算されたおよそゼロ(approximately zero)の観測されたサイクル(observed cycles)後に、実行ユニット120によって実行されることができる。従来のVLIWアーキテクチャーにおける比較オペレーションの結果が、多くの(a number of)サイクルの後に利用可能である一方、プロセッサ100は、分岐命令が、実行パイプラインからの利用可能な時間の中で、比較オペレーションの結果を受信することを可能にするために、プレディケート論理回路138を利用する。従って、比較の結果は、複数の命令が並行に実行している間は、その同じ命令のパケットの分岐命令によって使用されることができる、すなわち分岐命令は、比較の結果が決定されているのと同じ実行サイクルにおいてその比較の結果を受信する。
特定の実施形態では、プレディケート論理回路138は、実行ユニット118、120、122および124に対する外部の回路部品(circuit component)として例示される。代わりの実施形態では、プレディケート論理回路138は、実行ユニット118、120、122および124の各々の内部に組み込まれることができる。別の代わりの実施形態では、プレディケート論理回路138はシーケンサ114内に含まれることができる。
特定の例示的な実施形態では、複数の命令の複数のパケットは、バス111を介してシーケンサ114によって命令キャッシュ134から取り出される。シーケンサ114は、指定された命令実行ユニット118、120、122および124へ複数の命令を提供する。命令実行ユニット118、120、122および124は、前記複数の命令を並行して実行する、および複数の命令の間の依存性に依存して、命令実行ユニット118、120、122および124は、第1の命令の結果に基づいて第2の命令からの結果を条件付きでコミットするように適応される。
例えば、特定の実施形態では、複数の命令のパケットは、第2の命令は第1の命令の結果に依存しているところの第1および第2の命令を含むことができる。プロセッサ100は、フローの変更の命令(ジャンプ命令、分岐命令あるいは他のフローの変更の命令のような)、ロード命令、ストア命令、算術命令、別の依存するオペレーションあるいはそれらの何れの組み合わせとグループ化される比較命令を受け取るように適応される。特に、プロセッサ100は、分岐を取るか、特定のデータをロードするかまたはストアするか、を決定するために、第1の結果または第2の結果が正しいかどうかを決定するために、またはそれらの何れの組み合わせのために、比較オペレーションの結果が同じ実行サイクル内で使用されることができる実行パイプラインの十分に早い時点において、プレディケートレジスタ140に比較オペレーションの結果を提供するように適応される。
特定の例において、プロセッサ100は、1つまたは複数の実行ユニットからの複数の結果を一時的に格納するためのメモリを格納するバッファ132を利用して、その結果の計算と、メモリ102にその結果を書き込む書き戻し(write back)のオペレーションとの間に遅延を提供する。例えば、メモリを格納するバッファ132は、条件および複数の値がメモリ102に提供されるときに遅延を提供する。メモリを格納するバッファ132がなければ、条件および複数の値は、前記複数の結果を用意するには、あまりにも早く必要になり得る。メモリを格納するバッファ132は、条件の結果を得るために十分な遅延を提供する。プレディケート論理回路138は、条件が決定されるまでは、メモリを格納するバッファ132に前記複数の結果を書き込むように、実行ユニット118、120、122および124を制御することができる、そして次に、決定された条件に従って、記憶域(memory location)に前記複数の結果のうち1つだけを書き込む。
例えば、プロセッサ100は、比較命令と、その比較命令からの結果に依存する分岐命令とが、並行に実行されることを可能にすることができる。例えば、比較命令は実行ユニット118によって処理されることができ、ならびに分岐命令は実行ユニット120によって同時に実行されることができる。この分岐命令は、比較の結果が、別のパケットからの以前に実行された命令の結果からよりも、同じパケット中の比較命令から派生される(derived)べきであることを示す他の表記法(notation)あるいはビットを含むことができる。実行パイプライン内では、プレディケート論理回路138は、分岐の結果がコミットされる前に、前記結果が分岐命令において使用されることができるように、実行ユニット120へ比較命令の結果を提供するようにすることができる。実行パイプラインにおいて、比較オペレーションの結果を初期に利用可能にすることによって、分岐命令は、複数の結果がコミットされる前に正しい(correct)結果を決定するために前記結果を使用することができる。分岐の方向(branch direction)はパイプラインにおいて典型的に初期に決定されるので、分岐が採用された場合には、典型的に分岐命令は、パイプラインの機能停止を回避するために正しい次の命令のパケットを取り出すための時間がない。しかしながら、特定の実施形態では、プレディケート論理回路138はまた、分岐が取られるかどうかを決定するために、および/または実行パイプラインの前記データがコミットされるかどうかを予測するために、初期の比較の結果を使用するように適応されることができる。プレディケート論理回路138は、前記予測に従って、複数の命令を読み出すための取り出しオペレーションを開始するために、シーケンサ114と(例えば、表示されていないバスを介して)通信することができる。
図2は、並行に実行される複数の命令を条件付きでコミットするためのプロセッサ200の、第2の特定の例示的な実施形態を示すブロック図である。プロセッサ200は、バス203を介してシーケンサ204と通信する命令キャッシュ202を含む。命令キャッシュ202は、シーケンサ204に複数の命令のパケットを提供することができる。シーケンサ204は、複数の命令のパケットから派生される複数の命令を提供するために、第1の実行パイプライン210および第2の実行パイプライン212と通信する。第1の実行パイプライン210および第2の実行パイプライン212は、複数の命令を実行し、そして格納バッファ216へおよび、条件が満たされた場合は、メモリ218へ複数の命令の複数の結果を条件付きでコミットする。特定の実施形態では、データキャッシュ等のメモリ218は、図1の中のメモリ102における記憶位置(memory location)のような記憶域にデータを通信するためにバスに結合されることができる。
プロセッサ200はまた、制御論理回路206およびプレディケートレジスタ208を含む。プレディケートレジスタ208は、第2の実行パイプライン212および第1の実行パイプライン210によって実行される複数の比較命令の複数の結果を受信するように適応される。制御論理回路206は、プレディケートレジスタ208からそのような複数の結果を、並列して実行される命令において使用するために、第1の実行パイプライン210および第2の実行パイプライン212のうちの1つに選択的に通信するように適応される。制御論理回路206はまた、バス207を介してシーケンサ204と通信することができる。
特定の実施形態では、シーケンサ204は、バス203を介して命令キャッシュ202から第1の命令および第2の命令を含む複数の命令のパケットを受信することができる。第2の命令は、第1の命令の実行に関連する結果に依存することができる。例えば、第2の命令は、特定の分岐を取るべきかどうかを決定するための、第1の命令(比較命令のような)の結果を使用する分岐命令であることができる。第1の実行パイプライン210は第1の命令を実行することができ、ならびに第2の実行パイプライン212は第2の命令を並行して実行することができる。第1の実行ユニット210は、プレディケートレジスタ208に第1の命令(すなわち、比較命令)の結果を提供する。第2の実行パイプライン212は、プレディケートレジスタ208から前記結果を受信し、そして第2の命令の実行中に前記結果を使用し、結果として第2の命令の結果をコミットするかどうかを決定する。特定の実施形態では、制御論理回路206は第2の実行パイプライン212に前記結果を提供する。別の特定の実施形態では、第1の実行パイプライン210および第2の実行パイプライン212は、制御論理回路206を含むことができる。
特定の例において、シーケンサ204は、第1の比較命令および第2の分岐命令を含む複数の命令のパケットを受信することができる。第2の分岐命令は第1の比較命令の結果に依存することができる。特定の例において、第2の分岐命令は、ビットフラグ(bit flag)あるいは他の標識のような、その命令内に組み込まれる記述法を使用して第1の比較命令に対する依存性を示すことができる。第1の比較命令および第2の分岐命令の実行中に、第1の実行パイプライン210はプレディケートレジスタ208に比較の結果を書き込む。同じ実行サイクルにおいて、制御論理回路206は、分岐命令の実行において前記結果を使用する第2の実行パイプライン212と前記結果を共用する。同時に、制御論理回路206は、フローの変更と関連する複数の命令をメモリから読み出すための取り出しオペレーションを開始するために、バス207を介してシーケンサ204にシグナルを提供することができる。初期の表示(indication)(すなわち、実行ユニットは分岐命令に基づいてプログラムのフローを変更する見込みであるという予測)は、パイプラインの待ち時間を減らすための関連する複数の命令を取り出すために、シーケンサによって使用されることができる。
別の特定の例において、第1の命令が比較命令でありならびに第2の命令がストア命令であるときは、第1の実行パイプライン210は、プレディケートレジスタ208にその比較の結果を書き込むことができ、および制御論理回路206は、第2の実行パイプラインが結果をコミットする前に、第2の実行パイプラインへ前記結果を提供することができる。この実例において、第2の実行パイプラインと関連づけられる書き戻しのオペレーションは、書き戻しが開始される前にキャンセルされることができる。あるいは、データは、書き戻しのオペレーションをコミットする前に追加の遅延を提供するために格納バッファ216に一時的にコミットされることができ、それによって第1の実行パイプラインの比較の結果が、不必要な書き戻しのオペレーションを防ぐために利用されることを可能にする、そこでは第2の実行パイプラインからの前記データは必要とされない。
別の特定の例において、比較命令は、その比較命令の結果に依存する、メモリのロードのまたは算術の命令とパケット中にグループ化されることができる。第1の実行パイプライン210は、比較命令を実行し、そして実行サイクルの比較的に初期に、プレディケートレジスタにその結果を提供することができる、そして複数の条件付き命令の結果は、その複数の結果がコミットされるところのパイプラインのステージよりも前で、キャンセルされることができる。
一般に、複数の比較命令は実行され、そして、実行ユニット210および212は、その比較の結果に基づいて、複数のプレディケートビットをプレディケートレジスタ208の中に設定する。次に、これらのプレディケートビットは、ある複数の命令を条件付きで実行するために使用されることができる。複数の分岐命令、複数のロード命令、複数のストア命令、複数の算術命令および多重化された(multiplex)命令は、そのような条件付きで実行可能な命令の例である。あるスカラー演算(scalar operations)は、最下位のビットのような、プレディケートレジスタ208内の複数の特定のビットに条件付けることができる。対照的に、ベクトル演算は、特定のコードに依存して、プレディケートレジスタ208からのより多くのビットを利用することができる。
一般に、プロセッサ200は、データに依存する複数の命令(data dependent instructions)を並列に実行するために使用されることができる。例えば、そのようなデータに依存する複数の命令は、ロード命令または比較命令からのデータを使用する論理的なあるいは算術的なおよび他の数学的な命令を含むことができる。特定の例において、ロード命令は、比較の結果に基づいて、記憶域からデータを取り出すことができる。特定の実施形態では、そのような条件付きのあるいはデータに依存する複数の命令は、ドット−新規(dot-new)(すなわち、「.new」)の表記法、ドット−依存(つまり、「.dep」)の表記法、他の表記法またはそれら何れの組み合わせのような、特定のアセンブリ言語の記述法を使用して識別されることができる。特定の例において、アセンブリ言語コンパイラは、そのような表記法を認識し、ならびに順次にそのような表記法を含む複数の命令の複数のパケットをアレンジするように適応されることができる。(アセンブリ言語の表記法「.new」を使用している)比較命令の結果に基づいた、ワードを条件付きでロードするための条件付きのロードオペレーションを例示しているアセンブリ構文(assembly syntax)の例が、下記に現される:
Figure 0005653762
別の特定の例において、比較命令は、どのオペランドを選択するかを決定するために使用されることができ、また選択されるオペランドは、算術演算の中で使用されることができる。そのような条件付きの算術演算を例示しているアセンブリ構文の例が、下記に現される:
Figure 0005653762
別の特定の例において、マルチプルな複数の結果は計算されることができ、また比較の結果は、メモリにどの結果を書き込むかを決定するために使用されることができる。あるいは、比較の結果は、結果が格納されるべきかどうかを決定するために使用されることができる。条件付きのストア命令を例示しているアセンブリ構文の例が、下記に現される:
Figure 0005653762
一般に、条件付きの、転送、移動あるいは結合の命令を含む、何れの数の条件付き命令は実行されることができる。結合および転送の命令を例示しているアセンブリ構文の例が、下記に現される:
Figure 0005653762
一般に、ビットフラグ、標識、あるいはドット−新規の(「.new」)表記法のような特定の表記法は、認識されることができ、またそのようなコードは、プロセッサのパフォーマンスを向上させるために初期の比較の結果を利用するように複数のパケット中にグループ化されることができる。特に、プロセッサは、条件が計算され、そしてその計算された条件の結果が、同じ命令のパケットの実行中に使用されるように、そのような複数のデータに依存する命令を含む複数の命令のパケットを並列に実行することができる。例えば、比較命令の実行からの結果は、別の命令において、その複数の結果をコミットする(すなわち、メモリにその複数の結果を書き込む)かどうかを決定するために使用されることができる。前記条件が、前記結果はコミットされるべきでないと示す場合には、書き戻しのオペレーションはキャンセルされることができる。
どのようにドット−新規の表記法が使用されることができるかの例は、下記の表1および表2に示される。表1は、Cコードのサンプルセグメントを示し、そして表2は、ドット−新規の表記法を使用しているサンプルCコードのアセンブリのインプリメンテーション(implementation)を示す。
Figure 0005653762
ドット−新規タイプの表記法をサポートするプロセッサのための、アセンブリレベルのコード(assembly level code)の代表的な例が表2において下記に示される。
Figure 0005653762
この例において、比較命令および新しく生成されたプレディケートのマルチプルな用途は、同じパケット中にグループ化された。図1および2に関して上記で論じられたように、複数の実行ユニットは、同じ実行サイクルにおいて比較のおよびその依存する命令を実行することができる。一般に、パケット中の命令は、同じ宛先レジスタ(destination register)に書き込むことができない。アセンブラまたはコンパイラは、そのような複数のパケットを無効としてフラグを立てることができる。しかしながら、複数の条件付き命令は、提供される同じ宛先レジスタをターゲットにすることが許され、その複数の結果のうちのたった1つがコミットされる。
図3は、実行パイプライン300に関連付けられるマルチプルな複数の実行のステージの特定の例示的な例のブロック図である。実行パイプライン300は、第1の比較命令と、第1の命令の結果に依存する第2の命令を実行するように適応される。実行パイプライン300は、復号のステージ302、レジスタの読み出しのステージ304、第1の実行のステージ306、第2の実行のステージ308、第3の実行のステージ310および書き戻しのステージ312を含む。この例において、1つまたは複数の取り出しのステージは省略され、また実行パイプライン300は、あたかもそれが復号のステージ302から始まるかのように例示される。特定の例において、ステージ302、304、306、308、310および312の各々は、クロックサイクルを表わすことができる。
この例において、比較の結果は第2の実行のステージ中に、314において、決定され、そして結果は、316で比較の結果に基づいて結果をコミットするかあるいはキャンセルするかを決定するために、第3の実行のステージの310において使用される。どのタイプの依存する命令が処理されているかによって、314における比較の結果は、複数の機能停止を減らすために取り出しパイプラインを操縦するための制御論理を可能にするために、実行パイプライン300において十分に早く提供される。314での比較の結果は、「ドット−新規」の表記法または表示を使用している依存する命令によって選ばれる。さらに、復号のステージ302では、ジャンプまたは分岐が採用されるかどうかについての予測を作成することができる。特定の実施形態では、前記予測は静的な予測を使用して作成されることができる。前記予測は、分岐またはブランチが採用される見込みのときは、さらに複数の機能停止を減らすために取り出しパイプラインを操縦するために、使用されることができる。特に、比較の結果は、第2の実行のステージ308までは利用できないので、パイプラインの機能停止なしに次の命令を取り出すには、遅すぎることがある。しかしながら、前記予測(すなわち、「ジャンプ/分岐が採用される(jump/branch taken)」、「ジャンプ/分岐が採用されない(jump/branch not taken)」、他の予測またはそれら何れの組み合わせ)を追加することによって、制御論理は、フローの変更が生じる場合に、パイプラインの機能停止を防ぐために次の命令を取り出すことができる。静的な予測が間違っているときは、取り出しパイプラインはフラッシュされることができ、そして次の命令のパケットが処理のために取り出されることができる。
特定の例において、マルチスレッドのプロセッサの各スレッドは、他の複数の実行ユニットが、それが必要であり得る複数の結果を有することができるだろうかどうかを決定するためにおよび/または予測するために、前記パケット全体の複数の部分を復号することができる。別の特定の例では、書き戻しのオペレーションはキャンセルされることができ、それによって汎用レジスタファイルに対する書き込みオペレーションを防いでいる。
特定の例では、(314において)比較の結果が用意される前に、第2の実行のステージにおいて、書き戻しのオペレーションにコミットすることは、複数のタイミングの目的にとって、それは必要になることができる。この事例において、前記結果は、図1に例示されるメモリを格納するバッファ132のような、一時的なバッファの中に格納されることができる。メモリを格納するバッファは、さらに後の時点において、メモリ内へコミットすることができる。この例において、あなたは、データを格納するためにコミットすることを遅延させることができ、ならびにキャンセルされるべきである書き戻しの複数のオペレーションを防ぐためにバッファ付きの書き込み(buffered write)を使用することができる。
図4は、比較命令の結果に依存する第2の命令およびその比較命令を含む複数のパケットの中へ複数の命令をコンパイルするための方法の、特定の例示的な実施形態の流れ図である。この方法は、402において、1つまたは複数のコンパイリングのステージを介して、複数の超長命令語(VLIW)の命令を、複数の機械可読命令にコンパイルすることを含む。404へ前進して、この方法は、マルチスレッドのプロセッサによって並行に実行されることができる、複数の命令を含む複数のパケットに複数の機械可読命令を形成すること(すなわち、グループ化すること)をさらに含む。複数のパケットのうちの少なくとも1つのパケットは、同時に実行することが可能な第1の命令と第2の命令とを含む。第2の命令は第1の命令に依存している。第1および第2の命令は同時に実行される。特定の例において、第1の命令の結果は、同じ処理のサイクル内において第2の命令を処理するために使用される。この方法は406で終了する。
特定の実施形態では、複数のパケットのパケットは、同じ宛先レジスタをターゲットとする(target)少なくとも2つの条件付きの命令を含む。従来のコンパイラが誤りを返すことがある一方、ただ1つの条件付きの複数の命令がコミットされることができるという条件で、少なくとも2つの条件付きの命令は、同じ宛先レジスタをターゲットとすることを許されることができる。
図5は、並列に実行される複数の命令を条件付きでコミットする方法の特定の例示的な実施形態の流れ図である。この方法は、502において、第2の命令は第1の命令に依存するところの、複数の並列実行のパイプラインを有するプロセッサにおいて、第1の命令および第2の命令を含むパケットを受信することを含む。複数の並列実行のパイプラインは、第1の実行パイプラインおよび第2の実行パイプラインを含むことができる。第1の命令は比較命令であることができ、また第2の命令は、比較命令の結果に基づいて条件付きである命令であることができる。504へ進み、この方法は、第1の命令の少なくとも一部および第2の命令の少なくとも一部を、並列に、実行することを含む。特定の例において、各実行パイプラインは、第2の命令および第1の命令の一部を復号することができ、ならびに第1の実行パイプラインは第1の命令を実行することができ、そして同時に第2の実行パイプラインは第2の命令を実行することができる。例えば、第2の実行パイプラインは、第1の命令の一部と関連付けられる値を決定するために、あるいはビットの値を読み出すために、第1の命令の一部を復号することができる。
506まで継続し、実行パイプラインは、前記結果をコミットするかどうかを決定する。第1の命令を実行したことの第1の結果が、第2の命令を実行したことの第2の結果がコミットされる(すなわち、汎用レジスタファイル、メインメモリ、別のメモリ、あるいはそれらの何れの組み合わせに書き込まれる)べきであることを示す場合には、この方法は508へ進み、そして第2の命令を実行したことの第2の結果がコミットされる。あるいは、第1の結果が、第2の結果がコミットされるべきでないことを示す場合には、この方法は510へ進み、そして第2の結果のコミットメントはキャンセルさせる。この事例において、この方法は、第1の命令の実行に関連する第1の結果に基づいて、第2の命令を実行したことの第2の結果を選択的にコミットすることを含む。この方法は512で終了する。
特定の実施形態では、この方法は、実行の前にパケットから第1のおよび第2の命令を並行に抽出すること(読み出すこと)を含む。第1の命令の第1の結果は、プレディケートの結果(predicate result)を含むことができる。第1の命令は、プレディケートを生成する比較命令または別のタイプの命令であることができる。プレディケートは、分岐またはフローの変更が採用されるかどうかの初期の表示を提供することができる。特定の例では、ストア命令は、比較命令に基づいて条件付きであることができる。この事例において、実行パイプラインの書き戻しのステージにおける、書き戻しのオペレーションは、比較の結果に基づいてキャンセルされることができる。
別の特定の実施形態では、複数の命令のパケットは、同時に実行される命令からのプレイディケートデータを使用する第3の命令を含むことができる。特定の例において、第1のベクトルは、併合されるデータを生産するための前記データに基づく第2のベクトルと併合され、また第3のベクトルは、プレディケートレジスタからの前記データに従って併合されるデータに基づいて出力される。
別の例において、第1の命令は比較命令であり、また第2の命令はジャンプ命令である。この例において、この方法は、第2の結果がコミットされるかどうかを予測するために第1および第2の命令の一部を復号すること、および予測に従って、次の複数のパケットを取り出すことを含む。
特定の実施形態では、第2の命令は、第2の命令によって比較命令の第1の結果が使用されるべきであることを示す標識あるいはビットを含むことができる。第1の結果は、第2の結果がコミットされる前に、第2の命令が正しい結果を決定することができるように、第2の命令に対して利用できるようにされる。別の特定の例において、この方法は、第2の結果がコミットされないときに、第2の命令の実行によって引き起こされる複数の例外をキャンセルすることを含むことができる。
別の特定の例において、この方法は、並行に複数の命令を実行すること、ならびに第1の命令と第2の命令のうちの1つが、プレディケートレジスタの中のビットに基づいた有効なプレディケートを有するかどうかを決定すること、を含むことができる。この方法はまた、有効なプレディケートに従って、第1の結果および第2の結果のうちの、両方ではなく、1つをコミットすることを含む。
別の特定の例において、この方法は、第1のアドレスに第1の結果を書き込むことおよび並行して第2の宛先のアドレスに第2の結果を書きこむことを含むことができる。さらに、この方法は、第1の結果が第2の結果が放棄される(discarded)べきことを示すときは、第2の結果を放棄することを含むことができる。結果をコミットすることは、書き戻しのオペレーション、ストアのオペレーション、ロードのオペレーション、算術のオペレーション、およびジャンプまたは分岐のオペレーションのようなフローの変更のオペレーション、のうちの1つを行うことを参照することができる。
図6は、予測されるフローの条件付き変更に従って、取り出しパイプラインを操縦する方法の、特定の例示的な実施形態の流れ図である。602において、この方法は、複数の並列実行のパイプラインを有するプロセッサにおいて、比較命令および第2の命令を含むパケットを受信することを含む。第2の命令は比較命令に依存する。604へ進み、この方法は、第2の命令がコミットされるだろうかどうかに関連する予測を決定するために第2の命令および比較命令を復号することをさらに含む。特定の例において、前記予測は、実行ユニットにおけるあるいはシーケンサ内の予測のロジックによって作成された静的または動的な予測であることができる。606に前進して、この方法は、第1の命令および第2の命令を並行に実行することを含む。
608へ進み、この方法は、前記予測および第2の命令に一部基づいて「採用された」パスを下って取り出しパイプラインを操縦することを含む。例えば、取り出しパイプラインは、採用されたパスに関連する複数の命令を用いてロードされる(loaded)ことができる。610まで継続して、「採用された」パスが正しい場合には、この方法は612へ進み、そして第2の命令は、第1の結果に基づいて選択的にコミットされる。そうでなければ、610において選択されたパスが正しくない場合には、この方法は614へ進み、そして取り出しパイプラインがフラッシュされる。616へ前進して、この方法は、「採用されなかった」パス(すなわち、604で予測されなかったパス)を下って取り出しパイプラインを選択的に操縦することを含む。
特定の例において、分岐は投機的な(speculative)分岐であることができる。予測のロジックが、投機的な分岐が採用されるだろうことを予測する場合には、取り出しパイプラインは、前記予測に従ってロードされることができる。前記予測が正しくない場合には、パイプラインはフラッシュされ、そして別のパスへと操縦されることができる。
特定の例において、取り出しパイプラインを選択的に操縦することは、第2の命令がフローの変更の命令であるとき、および前記予測がフローの変更の命令がコミットされる見込みであることを示すときは、予測されたフローの変更に基づいて、メモリから複数の命令の読み出しを開始することを含む。別の例において、取り出しパイプラインを選択的に操縦することは、前記予測がフローの変更を示すときに、その予測に基づいて、メモリからフローの変更と関連する複数の命令の読み出しを開始することを含む。あるいは、読み出しは、前記予測がフローの変更を示さないときには開始されない。特定の例において、読み出された複数の命令は、前記予測が正しくないと決定された後に、取り出しパイプラインから削除される。
別の例において、第2の命令は、第2の命令が比較命令の第1の結果を使用することを示している命令の表記法を含む。第1の結果は、第2の結果がコミットされる前に、第2の命令が正しい結果を決定することができるように、第2の命令に対して利用可能である。特定の実施形態では、第2の命令の実行によって引き起こされる複数の例外は、第2の結果がコミットされないときには、キャンセルされる。別の例において、この方法はまた、第1の命令および第2の命令のうちの1つが有効なプレディケートを有するかどうかを決定すること、および有効なプレディケートに従って、第1の結果および第2の結果のうち、両方ではなく、1つをコミットすることを含む。
図7は、携帯可能な通信装置700として例示される、依存する複数の命令を同時に処理するように適応されるシステムの実施形態のブロック図である。携帯可能な通信装置700は、複数のプレディケートレジスタ760、プレディケート論理回路762、およびデータを格納するバッファ764を有するデジタル信号プロセッサ(DSP)710を含む。特定の実施形態では、DSP 710は、図1および2において例示されたプロセッサ100および200のような、マルチスレッドのプロセッサであることができる。DSP 710は、比較命令およびその比較の結果を使用する分岐命令のような、互いに依存する、並行に実行される複数の命令を条件付きでコミットするためのプレディケート論理回路762および複数のプレディケートレジスタ760を利用するように適応される。携帯可能な通信装置700は、デジタル信号プロセッサ710のようなプロセッサを含むオンチップ(on-chip)システム722を含む。DSP 710は、図1−3および5−6に関連して記述されるように、複数のプレディケートレジスタ760およびプレディケート論理回路762を含む。特定の例示的な実施形態では、プレディケートレジスタ760およびプレディケート論理762は、同じ実行サイクル内で、比較の結果を使用する依存する命令を処理している第2の実行パイプラインと共に、比較の結果を共有することを第1の実行パイプラインに許すことにより処理の効率を向上するために使用されることができる。さらに、プレディケートレジスタ760、プレディケート論理762およびデータを格納するバッファ762は、メモリに複数の結果を条件付きでコミットするために、そして前記条件が満たされなかったときには、書き戻しの複数のオペレーションをキャンセルするあるいは強制終了(kill)するために利用されることができる。
図7はまた、デジタル信号プロセッサ710におよび表示装置728に結合される表示装置制御器726を示す。そのうえ、入力装置730はデジタル信号プロセッサ710に結合される。さらに、メモリ732はデジタル信号プロセッサ710に結合される。符号器/復号器(CODEC)734もまた、デジタル信号プロセッサ710に結合されることができる。スピーカー736およびマイクロホン738は、CODEC 734に結合されることができる。
図7はまた、無線制御装置740は、デジタル信号プロセッサ710におよび無線アンテナ742に結合されることができることを示す。特定の実施形態では、電源744はオンチップシステム722に結合される。そのうえ、図7に例示されるように、表示装置728、入力装置730、スピーカー736、マイクロホン738、無線アンテナ742および電源744は、オンチップシステム722の外部にあることができる。しかしながら、各々はオンチップシステム722の構成要素に結合される。
特定の例示的な実施形態では、プレディケート論理回路762および複数のプレディケートレジスタ760は、望まれていない書き戻しの複数のオペレーションを減らすまたは除去するために使用されることができ、それによって、携帯可能な通信装置700の全体的なパフォーマンスを向上している。さらに、プレディケート論理回路762および複数のプレディケートレジスタ760は、様々な機能を条件付きで行うために使用されることができ、依存する複数の命令が並行に実行されることを可能にし、およびパイプラインの複数の機能停止という点においては、オーバーヘッド(over head)のペナルティーなしに望まれていない結果を放棄して、装置700のパフォーマンスを向上させている。
プレディケート論理回路762および複数のプレディケートレジスタ760は、DSP 710の別々の構成要素として描かれている一方、その代わりに、プレディケート論理回路762および複数のプレディケートレジスタ760は、図1において例示されるシーケンサ114のような制御回路に統合されることができることが理解されるべきである。同様に、プレディケート論理回路762およびデータを格納するバッファ764は、マルチスレッドのプロセッサの複数の実行ユニットに統合されることができる。
当業者は、ここに開示された複数の実施形態に関連して記述された、様々な例示的な、論理ブロック(logical blocks)、構成、モジュール、回路およびアルゴリズムのステップは、電子ハードウェア、コンピュータソフトウェア、あるいは両方の組み合わせとしてインプリメント(implemented)されることができることを、さらに評価するだろう。明白にハードウェアとソフトウェアのこの互換性を例示するために、様々な例示的な、構成要素、ブロック、構成、モジュール、回路、およびステップは、概してそれらの機能性の点から、上に記述されている。そのような機能性が、ハードウェアまたはソフトウェアとしてインプリメントされるかどうかは、全体的なシステムに課された設計の制約および特定のアプリケーションに依存する。当業者は、それぞれの特定のアプリケーションへ多様の仕方(ways)において、前記記述された機能性をインプリメントすることができるが、そのようなインプリメンテーションの決定は、本開示の範囲から逸脱すると解釈されるべきでない。
ここに開示された実施形態に関連して記述されるアルゴリズムまたは方法のステップは、ハードウェアにおいて、プロセッサによって実行されるソフトウェアモジュールにおいて、あるいは2つの組み合わせにおいて、直接具体化(embodied)されることができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、PROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、または当技術においてよく知られる記憶媒体のいずれの他の形式で、常駐する(reside)ことができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読みならびにそれに情報を書くことができるように、プロセッサに結合されることができる。代わりにおいて、記憶媒体はプロセッサに不可欠であることができる。プロセッサと記憶媒体は、ASICに常駐することができる。ASICは、ユーザ端末に常駐することができる。代わりにおいて、プロセッサと記憶媒体は、ユーザ端末の個別の構成要素として常駐することができる。
開示された複数の実施形態についての前の記述は、いずれの当業者が、開示された複数の実施形態を作るあるいは利用することができるようにするために提供される。これらの例に対する様々な変更(modification)は、当業者にとっては、容易に(readily)明白であることができ、ここに定義された一般的な(generic)複数の法則は、ここに記述された複数の新規の観点の精神または範囲から外れることなく、他の複数の実施形態へ応用されることができる。したがって、本開示は、ここに示される複数の実施形態に制限されるようには意図されず、次に述べる請求項の範囲によって定義されるように、ここに開示された複数の法則および複数の新規の特徴と一致する最も広い範囲を与えられることになる
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
下記を具備する方法:
第1の実行パイプラインおよび第2の実行パイプラインを含む、複数の並列実行のパイプラインを有するプロセッサにおいて、第1の命令および第1の命令に依存する第2の命令を含む命令のパケットを受信することと、
前記第1の命令の少なくとも一部および前記第2の命令の少なくとも一部を並行に実行することと、
前記第1の実行パイプラインを用いた前記第1の命令の実行に関連する第1の結果に基づいて、前記第2の実行パイプラインを用いて前記第2の命令の少なくとも一部を実行したことの第2の結果を選択的にコミットすること。
[C2]
C1に記載の方法、ここにおいて前記第2の命令は、前記第1の結果が前記第2の命令によって使用されることを示す命令表記を含む。
[C3]
プレディケートレジスタに、前記第1の結果に関連するデータを書き込むことをさらに具備する、C1に記載の方法。
[C4]
C3に記載の方法、ここにおいて前記第2の命令は、前記プレディケートレジスタから前記第1の結果に関連する前記データを受信する。
[C5]
C1に記載の方法、ここにおいて前記第2の結果を選択的にコミットすることは下記を具備する:
メモリを格納するバッファに前記第2の結果を書き込むことと、
前記第1の結果を利用できるときは、レジスタに対する書き戻しのオペレーションを選択的にキャンセルすること。
[C6]
C1に記載の方法、ここにおいて前記第2の命令は、フロー命令の条件付き変更を含む、前記方法はさらに下記を具備する:
前記第1の実行パイプラインおよび前記第2の実行パイプラインのうちの1つの復号のステージにおいて、前記第2の命令および前記第1の命令の一部を復号することと、
前記フロー命令の条件付き変更がコミットされる見込みか否かを指示する前記復号された一部に基づいて静的な予測を行うこと。
[C7]
前記静的な予測が、前記フロー命令の条件付き変更がコミットされる見込みであることを指示するときは、フローの変更に関連する複数の命令を読み出すために、命令の取り出しパイプラインを操縦することをさらに具備する、C6に記載の方法。
[C8]
前記第2の結果をコミットするかどうかを決定した後に、前記第2の結果を宛先レジスタに対して条件付き書き戻しすることをさらに具備する、C1に記載の方法。
[C9]
C1に記載の方法、ここにおいて前記第1の命令は比較命令を具備し、前記第2の命令は前記フローの変更の命令を具備する、前記方法はさらに下記を具備する:
前記第1の結果に基づいて、プレディケートビットをプレディケートレジスタに設定することと、
前記フローの変更の命令を実行した後に、前記プレディケートビットの値に基づいて、前記フローの変更の命令よって指示された前記フローの動作の変更を行うために、選択的にコミットすること。
[C10]
下記を具備する方法:
複数の並列実行のパイプラインを有するプロセッサにおいて、比較命令および第2の命令を含むパケットを受信すること、前記第2の命令は前記比較命令に依存している、
前記第2の命令がコミットされるかどうかに関連する予測を決定するために前記第2の命令および前記比較命令を復号すること、
前記第1の命令および前記第2の命令を並行に実行することと、
前記第2の命令におよび前記予測に一部基づいて、取り出しパイプラインを選択的に操縦すること。
[C11]
C10に記載の方法、ここにおいて前記取り出しパイプラインを選択的に操縦することは、前記第2の命令がフローの変更の命令であるとき、および前記フローの変更の命令がコミットされる見込みであると前記予測が指示するときに、予測されるフローの変更に基づいてメモリからの複数の命令の読み出しを開始することを具備する。
[C12]
C10に記載の方法、ここにおいて前記取り出しパイプラインを選択的に操縦することは、前記予測がフローの変更を指示するときは、前記予測に基づいてメモリからフローの変更に関連する複数の命令の読み出しを開始することを、しかし前記予測が前記フローの変更を指示しないときは、読み出しを開始しないことを、具備する。
[C13]
前記予測が誤りであると決定された後に、前記取り出しパイプラインから前記読み出された複数の命令を削除することをさらに具備する、C11に記載の方法。
[C14]
第1の実行パイプラインに関連づけられる前記第1の命令に関連する少なくとも第1の結果に基づいて、第2の実行パイプラインを用いて実行される前記第2の命令の前記第2の結果を選択的にコミットすることをさらに具備する、C10に記載の方法。
[C15]
C14に記載の方法、ここにおいて、前記第2の命令は、前記第2の命令が前記比較命令の前記第1の結果を利用することを指示する命令表記を含む、およびここにおいて前記第1の結果は、前記第2の結果がコミットされる前に、前記第2の命令に対して利用できる。
[C16]
前記第2の結果がコミットされないときに、前記第2の命令の実行により引き起こされる複数の例外をキャンセルすることをさらに具備する、C15に記載の方法。
[C17]
さらに下記を具備する、C10に記載の方法:
前記第1の命令および前記第2の命令のうちの1つは、有効なプレディケートを有するかどうかを決定すること、および
前記有効なプレディケートを有する前記命令に基づいて、前記第1の命令の第1の結果および前記第2の命令の第2の結果のうちの、両方ではなく、1つをコミットすること。
[C18]
下記を具備するプロセッサ:
複数の命令を並行して実行するように適応されたマルチプルな実行の複数のパイプライン、前記マルチプルな実行の複数のパイプラインは、第1の結果を決定する第1の命令を実行するための第1の実行パイプラインと、前記第1の命令から決定された前記第1の結果に依存する第2の命令を実行するための第2の実行パイプラインとを含む、前記第1の命令および前記第2の命令は同時に実行される、および
前記第1の命令の実行から決定される、前記第1の実行パイプラインからの前記第1の結果を、前記第2の命令による使用のために前記第2の実行パイプラインへ提供するように適応された論理回路。
[C19]
C18に記載のプロセッサ、ここにおいて前記論理回路は、前記第2の実行パイプラインと関連づけられる第2の結果がコミットされる前に、前記第1の結果を前記第2の実行パイプラインへ提供する。
[C20]
前記マルチプルな実行の複数のパイプラインにアクセス可能であり、ならびに前記第1の結果に関連するデータを格納するように適応されたプレディケートレジスタをさらに具備する、C18に記載のプロセッサ。
[C21]
前記第1の命令および前記第2の命令を含む複数の命令のパケットを受信するシーケンサ、前記シーケンサは前記第1の命令を前記第1の実行パイプラインに提供する、および前記シーケンサは前記第2の命令を前記第2の実行パイプラインに提供する、をさらに具備する、C18に記載のプロセッサ。
[C22]
C21に記載のプロセッサ、ここにおいて前記第1の命令は比較命令を具備する、およびここにおいて前記第2の命令は前記比較命令の実行の結果に依存する、およびここにおいて前記第2の命令は算術命令、論理演算命令、ロード命令、ストア命令、分岐命令、および飛越し命令のうちの少なくとも1つを具備する。
[C23]
前記第2の命令の実行による第2の結果がコミットされる前に、前記第1の命令の実行による前記第1の結果を取得するのに十分な遅延を提供するための、前記マルチプルな実行の複数のパイプラインに結合されたメモリバッファをさらに具備する、C18に記載のプロセッサ。
[C24]
下記を具備するプロセッサ:
第1の実行パイプラインおよび第2の実行パイプラインを含む複数の並列実行のパイプラインを有するプロセッサにおいて、第1の命令および第1の命令に依存する第2の命令を含む命令のパケットを受信するための手段と、
前記第1の命令の少なくとも一部および前記第2の命令の少なくとも一部を並行に実行するための手段と、
前記第1の実行パイプラインを用いて前記第1の命令を実行することに関連する第1の結果に基づいて、前記第2の実行パイプラインを用いて前記第2の命令の少なくとも一部を実行したことの第2の結果を選択的にコミットするための手段。
[C25]
下記をさらに具備する、C24に記載のプロセッサ:
メモリを格納するバッファに前記第2の結果を書き込むための手段と、
前記第1の結果が利用できるときは、レジスタに対する書き戻しのオペレーションを選択的にキャンセルするための手段。

Claims (26)

  1. 下記を具備する方法:
    第1の実行パイプラインおよび第2の実行パイプラインを含む、複数の並列実行のパイプラインを有するプロセッサにおいて、第1の命令および前記第1の命令に依存する第2の命令を含む命令のパケットを受信することと、
    前記第1の命令の少なくとも一部および前記第2の命令の少なくとも一部を並行に実行することと、
    第1の結果をプレディケートレジスタに書き込むことと、ここにおいて前記第1の結果は前記第1の実行パイプラインを用いた前記第1の命令の実行に関連する、
    前記第1の結果を前記プレディケートレジスタから読み出すことに応じて、前記読み出された第1の結果に基づいて、前記第2の実行パイプラインを用いた前記第2の命令の少なくとも一部を実行したことの第2の結果を選択的にコミットすること、
    ここにおいて、前記第2の命令は、前記第1の結果が前記第2の命令によって使用されることを示す命令表記を含む。
  2. 下記を具備する方法:
    第1の実行パイプラインおよび第2の実行パイプラインを含む、複数の並列実行のパイプラインを有するプロセッサにおいて、第1の命令および前記第1の命令に依存する第2の命令を含む命令のパケットを受信することと、
    前記第1の命令の少なくとも一部および前記第2の命令の少なくとも一部を並行に実行することと、
    第1の結果をプレディケートレジスタに書き込むことと、ここにおいて前記第1の結果は前記第1の実行パイプラインを用いた前記第1の命令の実行に関連する、
    前記第1の結果を前記プレディケートレジスタから読み出すことに応じて、前記読み出された第1の結果に基づいて、前記第2の実行パイプラインを用いた前記第2の命令の少なくとも一部を実行したことの第2の結果を選択的にコミットすること。
  3. 請求項2に記載の方法、ここにおいてスカラー演算は前記プレディケートレジスタに格納された最下位のビットに条件付けられ、ここにおいてベクトル演算は前記プレディケートレジスタに格納された少なくとも1つの他のビットに条件づけられる。
  4. 請求項2に記載の方法、ここにおいてプレディケート論理回路は前記第1の結果を前記第2の実行パイプラインに提供する。
  5. 請求項2に記載の方法、ここにおいて前記第2の命令は、前記プレディケートレジスタから前記第1の結果を受信する。
  6. 請求項2に記載の方法、ここにおいて前記第2の結果を選択的にコミットすることは下記を具備する:
    メモリを格納するバッファに前記第2の結果を書き込むことと、
    前記第1の結果を利用できるときは、レジスタに対する書き戻しのオペレーションを選択的にキャンセルすること。
  7. 請求項2に記載の方法、ここにおいて前記第2の命令は、条件付きのフローの変の命令を含む、前記方法はさらに下記を具備する:
    前記第1の実行パイプラインおよび前記第2の実行パイプラインのうちの1つの復号のステージにおいて、前記第2の命令および前記第1の命令の一部を復号することと、
    前記条件付きのフローの変の命令がコミットされる見込みか否かを指示する前記復号された一部に基づいて静的な予測を行うこと。
  8. 請求項7に記載の方法、ここにおいて前記静的な予測が、前記条件付きのフローの変の命令がコミットされる見込みであることを指示するときは、フローの変更に関連する複数の命令を読み出すために、命令の取り出しパイプラインを操縦することをさらに具備する。
  9. 請求項2に記載の方法、ここにおいて前記第2の結果をコミットするかどうかを決定した後に、前記第2の結果を宛先レジスタに対して条件付き書き戻しすることをさらに具備する、請求項2に記載の方法。
  10. 請求項2に記載の方法、ここにおいて前記第1の命令は比較命令を具備し、前記第2の命令はフローの変更の命令を具備する、前記方法はさらに下記を具備する:
    前記第1の結果に基づいて、プレディケートビットを前記プレディケートレジスタに設定することと、
    前記フローの変更の命令を実行した後に、前記プレディケートビットの値に基づいて、前記フローの変更の命令よって指示されたフローの動作の変更を行うために、選択的にコミットすること。
  11. 下記を具備する方法:
    複数の並列実行のパイプラインを有するプロセッサにおいて、比較命令および第2の命令を含むパケットを受信すること、前記第2の命令は前記比較命令に依存している、
    前記第2の命令がコミットされるかどうかに関連する予測を決定するために前記第2の命令および前記比較命令を復号すること、
    前記比較命令および前記第2の命令を並行に実行することと、
    第1の結果をプレディケートレジスタに書き込むことと、ここにおいて前記第1の結果は前記第1の実行パイプラインを用いた前記比較命令の実行に関連する、
    前記第1の結果を前記プレディケートレジスタから読み出すことに応じて、
    前記読み出された第1の結果に基づいて、前記第2の実行パイプラインを用いて前記第2の命令の少なくとも一部を実行したことの第2の結果を選択的にコミットすること
    前記第2の命令におよび前記予測に一部基づいて、取り出しパイプラインを選択的に操縦すること。
  12. 請求項11に記載の方法、ここにおいて前記取り出しパイプラインを選択的に操縦することは、前記第2の命令がフローの変更の命令であるとき、および前記フローの変更の命令がコミットされる見込みであると前記予測が指示するときに、予測されるフローの変更に基づいてメモリからの複数の命令の読み出しを開始することを具備する。
  13. 請求項11に記載の方法、ここにおいて前記取り出しパイプラインを選択的に操縦することは、前記予測がフローの変更を指示するときは、前記予測に基づいてメモリからのフローの変更に関連する複数の命令の読み出しを開始することを、しかし前記予測が前記フローの変更を指示しないときは、読み出しを開始しないことを、具備する。
  14. 請求項13に記載の方法、ここにおいて前記予測が誤りであると決定された後に、前記取り出しパイプラインから前記読み出された複数の命令を削除することをさらに具備する。
  15. 請求項11に記載の方法、ここにおいて第1の実行パイプラインに関連づけられる前記比較命令に関連する少なくとも第1の結果に基づいて、第2の実行パイプラインを用いた実行される前記第2の命令の前記第2の結果を選択的にコミットすることをさらに具備する。
  16. 請求項15に記載の方法、ここにおいて、前記第2の命令は、前記第2の命令が前記比較命令の前記第1の結果を利用することを指示する命令表記を含む、およびここにおいて前記第1の結果は、前記第2の結果がコミットされる前に、前記第2の命令に対して利用できる。
  17. 請求項16に記載の方法、ここにおいて前記第2の結果がコミットされないときに、前記第2の命令の実行により引き起こされる複数の例外をキャンセルすることをさらに具備する。
  18. さらに下記を具備する、請求項11に記載の方法:
    前記比較命令および前記第2の命令のうちの1つは、有効なプレディケートを有するかどうかを決定すること、および
    前記有効なプレディケートを有する前記命令に基づいて、前記比較命令の第1の結果および前記第2の命令の前記第2の結果のうちの、両方ではなく、1つをコミットすること。
  19. 下記を具備するプロセッサ:
    第1の命令および前記第1の命令から決定された第1の結果に依存する第2の命令を含む複数の命令のパケットを受信するシーケンサと、
    複数の命令を並行して実行するように適応されたマルチプルな実行の複数のパイプライン、前記マルチプルな実行の複数のパイプラインは、前記第1の結果を決定する前記第1の命令を実行するための第1の実行パイプラインと、前記第1の命令から決定された前記第1の結果に依存する前記第2の命令を実行するための第2の実行パイプラインとを含む、前記第1の命令および前記第2の命令は同時に実行される、
    前記マルチプルな実行パイプラインにアクセス可能であり、ならびに前記第1の結果を格納するように適応されたプレディケートレジスタと、
    前記プレディケートレジスタからの前記第1の結果を読み出し、前記第2の命令による使用のために前記第2の実行パイプラインへ前記第1の結果を提供するように適応された論理回路。
  20. 請求項19に記載のプロセッサ、ここにおいて前記論理回路は、前記第2の実行パイプラインと関連づけられる第2の結果がコミットされる前に、前記第1の結果を前記第2の実行パイプラインへ提供する。
  21. 請求項19に記載のプロセッサ、ここにおいて前記第2の命令は、前記第1の結果が前記第2の命令によって使用されることを示す命令表記を含む。
  22. 前記シーケンサは前記第1の命令を前記第1の実行パイプラインに提供し、および前記シーケンサは前記第2の命令を前記第2の実行パイプラインに提供するように構成される、請求項19に記載のプロセッサ。
  23. 請求項19に記載のプロセッサ、ここにおいて前記第1の命令は比較命令を具備する、およびここにおいて前記第2の命令は前記比較命令の実行の結果に依存する、およびここにおいて前記第2の命令は算術命令、論理演算命令、ロード命令、ストア命令、分岐命令、および飛越し命令のうちの少なくとも1つを具備する。
  24. 前記第2の命令の実行による第2の結果がコミットされる前に、前記第1の命令の実行による前記第1の結果を取得するのに十分な遅延を提供するための、前記マルチプルな実行の複数のパイプラインに結合されたメモリバッファをさらに具備する、請求項19に記載のプロセッサ。
  25. 下記を具備するプロセッサ:
    第1の実行パイプラインおよび第2の実行パイプラインを含む複数の並列実行のパイプラインを有するプロセッサにおいて、第1の命令および前記第1の命令に依存する第2の命令を含む命令のパケットを受信するための手段と、
    前記第1の命令の少なくとも一部および前記第2の命令の少なくとも一部を並行に実行するための手段と、
    第1の結果をプレディケートレジスタに書き込むための手段と、ここにおいて前記第1の結果は前記第1の実行パイプラインを用いた前記第1の命令の実行に関連する、
    前記プレディケートレジスタから読み出された前記第1の結果に基づいて、前記第2の実行パイプラインを用いた前記第2の命令の少なくとも一部を実行したことの第2の結果を選択的にコミットするための手段。
  26. 下記をさらに具備する、請求項25に記載のプロセッサ:
    メモリを格納するバッファに前記第2の結果を書き込むための手段と、
    前記第1の結果が利用できるときは、レジスタに対する書き戻しのオペレーションを選択的にキャンセルするための手段。
JP2010550747A 2008-03-11 2009-02-27 実行された命令の結果を選択的にコミットするためのシステムおよび方法 Expired - Fee Related JP5653762B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/045,825 2008-03-11
US12/045,825 US8990543B2 (en) 2008-03-11 2008-03-11 System and method for generating and using predicates within a single instruction packet
PCT/US2009/035372 WO2009114289A1 (en) 2008-03-11 2009-02-27 System and method of selectively committing a result of an executed instruction

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014196650A Division JP5889986B2 (ja) 2008-03-11 2014-09-26 実行された命令の結果を選択的にコミットするためのシステムおよび方法

Publications (2)

Publication Number Publication Date
JP2011517493A JP2011517493A (ja) 2011-06-09
JP5653762B2 true JP5653762B2 (ja) 2015-01-14

Family

ID=40602507

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2010550747A Expired - Fee Related JP5653762B2 (ja) 2008-03-11 2009-02-27 実行された命令の結果を選択的にコミットするためのシステムおよび方法
JP2014196650A Expired - Fee Related JP5889986B2 (ja) 2008-03-11 2014-09-26 実行された命令の結果を選択的にコミットするためのシステムおよび方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2014196650A Expired - Fee Related JP5889986B2 (ja) 2008-03-11 2014-09-26 実行された命令の結果を選択的にコミットするためのシステムおよび方法

Country Status (7)

Country Link
US (1) US8990543B2 (ja)
EP (1) EP2269134A1 (ja)
JP (2) JP5653762B2 (ja)
KR (1) KR101225075B1 (ja)
CN (1) CN101965554B (ja)
TW (1) TW200951811A (ja)
WO (1) WO2009114289A1 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US8624906B2 (en) 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
US8687008B2 (en) 2004-11-15 2014-04-01 Nvidia Corporation Latency tolerant system for executing video processing operations
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
US8683126B2 (en) 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8659601B1 (en) 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8489851B2 (en) 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
JP2012252670A (ja) * 2011-06-07 2012-12-20 Toshiba Corp 演算装置およびプログラム
US8843730B2 (en) 2011-09-09 2014-09-23 Qualcomm Incorporated Executing instruction packet with multiple instructions with same destination by performing logical operation on results of instructions and storing the result to the destination
JP5813484B2 (ja) * 2011-11-30 2015-11-17 ルネサスエレクトロニクス株式会社 Vliwプロセッサと命令構造と命令実行方法
US20140300614A1 (en) * 2011-12-19 2014-10-09 Intel Corporation Programmable prediction logic in command streamer instruction execution
US9298456B2 (en) 2012-08-21 2016-03-29 Apple Inc. Mechanism for performing speculative predicated instructions
US9250916B2 (en) * 2013-03-12 2016-02-02 International Business Machines Corporation Chaining between exposed vector pipelines
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
WO2014190263A2 (en) 2013-05-24 2014-11-27 Coherent Logix, Incorporated Memory-network processor with programmable optimizations
US10318293B2 (en) * 2013-07-09 2019-06-11 Texas Instruments Incorporated Predication methods for vector processors
CN103853526B (zh) * 2014-02-20 2017-02-15 清华大学 可重构处理器及可重构处理器的条件执行方法
US9513920B2 (en) * 2014-05-29 2016-12-06 Mill Computing, Inc. Computer processor employing split-stream encoding
CN104615412B (zh) * 2015-02-10 2018-11-09 清华大学 基于触发指令结构的执行控制流的方法及系统
US9904546B2 (en) * 2015-06-25 2018-02-27 Intel Corporation Instruction and logic for predication and implicit destination
KR102276718B1 (ko) * 2015-11-25 2021-07-13 삼성전자주식회사 Vliw 인터페이스 장치 및 제어 방법
WO2019200618A1 (zh) * 2018-04-21 2019-10-24 华为技术有限公司 一种指令执行方法及装置
US11269661B2 (en) * 2019-03-04 2022-03-08 Micron Technology, Inc. Providing, in a configuration packet, data indicative of data flows in a processor with a data flow manager
US11275712B2 (en) * 2019-08-20 2022-03-15 Northrop Grumman Systems Corporation SIMD controller and SIMD predication scheme
FR3100907B1 (fr) * 2019-09-16 2022-12-09 St Microelectronics Grenoble 2 Test de programme
JP2021135881A (ja) * 2020-02-28 2021-09-13 セイコーエプソン株式会社 ロボットの制御方法
US11748104B2 (en) * 2020-07-29 2023-09-05 International Business Machines Corporation Microprocessor that fuses load and compare instructions
US11907126B2 (en) * 2020-09-25 2024-02-20 Advanced Micro Devices, Inc. Processor with multiple op cache pipelines
US20220100519A1 (en) * 2020-09-25 2022-03-31 Advanced Micro Devices, Inc. Processor with multiple fetch and decode pipelines
US11663013B2 (en) 2021-08-24 2023-05-30 International Business Machines Corporation Dependency skipping execution

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6028A (en) * 1849-01-16 Improved lubricating compound
JP3494489B2 (ja) 1994-11-30 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
JP3442225B2 (ja) * 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
US6484253B1 (en) 1997-01-24 2002-11-19 Mitsubishi Denki Kabushiki Kaisha Data processor
US6366999B1 (en) 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
JP2000081973A (ja) 1998-09-04 2000-03-21 Hitachi Ltd データ処理装置及びデータ処理システム
JP2000222208A (ja) * 1999-01-29 2000-08-11 Mitsubishi Electric Corp 情報処理装置、命令割当て制御方法、命令割当て制御装置および命令割当て制御プログラムを記録したコンピュータで読取り可能な記録媒体
JP2001051845A (ja) 1999-08-12 2001-02-23 Hitachi Ltd アウトオブオーダー実行方式
US6513109B1 (en) * 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
EP1102165A1 (en) * 1999-11-15 2001-05-23 Texas Instruments Incorporated Microprocessor with execution packet spanning two or more fetch packets
US20040205326A1 (en) * 2003-03-12 2004-10-14 Sindagi Vijay K.G. Early predicate evaluation to reduce power in very long instruction word processors employing predicate execution
US20060174089A1 (en) * 2005-02-01 2006-08-03 International Business Machines Corporation Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture
US7523295B2 (en) * 2005-03-21 2009-04-21 Qualcomm Incorporated Processor and method of grouping and executing dependent instructions in a packet
US7774582B2 (en) 2005-05-26 2010-08-10 Arm Limited Result bypassing to override a data hazard within a superscalar processor
US7949861B2 (en) 2005-06-10 2011-05-24 Qualcomm Incorporated Method and apparatus for managing instruction flushing in a microprocessor's instruction pipeline
US7412591B2 (en) 2005-06-18 2008-08-12 Industrial Technology Research Institute Apparatus and method for switchable conditional execution in a VLIW processor
JP2007058731A (ja) * 2005-08-26 2007-03-08 Matsushita Electric Ind Co Ltd プロセッサ、及び並列命令実行対応デバッグ装置
US7721071B2 (en) 2006-02-28 2010-05-18 Mips Technologies, Inc. System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor
EP1855181A2 (en) 2006-05-10 2007-11-14 Marvell World Trade Ltd. System with high power and low power processors and thread transfer
US20080022050A1 (en) 2006-07-18 2008-01-24 Via Technologies, Inc. Pre-Fetching Data for a Predictably Requesting Device

Also Published As

Publication number Publication date
JP5889986B2 (ja) 2016-03-22
US8990543B2 (en) 2015-03-24
KR101225075B1 (ko) 2013-01-22
JP2011517493A (ja) 2011-06-09
CN101965554B (zh) 2015-04-15
CN101965554A (zh) 2011-02-02
TW200951811A (en) 2009-12-16
JP2015043216A (ja) 2015-03-05
KR20100132032A (ko) 2010-12-16
EP2269134A1 (en) 2011-01-05
US20090235051A1 (en) 2009-09-17
WO2009114289A1 (en) 2009-09-17

Similar Documents

Publication Publication Date Title
JP5889986B2 (ja) 実行された命令の結果を選択的にコミットするためのシステムおよび方法
US10296346B2 (en) Parallelized execution of instruction sequences based on pre-monitoring
US20110320787A1 (en) Indirect Branch Hint
US7444501B2 (en) Methods and apparatus for recognizing a subroutine call
JP2009540412A (ja) ローカル及びグローバル分岐予測情報の格納
US20130339711A1 (en) Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor
US7877578B2 (en) Processing apparatus for storing branch history information in predecode instruction cache
US9710269B2 (en) Early conditional selection of an operand
JP2006216040A (ja) ソフトウエアによる動的予測方法および装置
US6983359B2 (en) Processor and method for pre-fetching out-of-order instructions
US10108419B2 (en) Dependency-prediction of instructions
JP2007102333A (ja) データ処理装置およびデータ処理方法
CN115495155B (zh) 一种适用于通用处理器的硬件循环处理装置
JP7409208B2 (ja) 演算処理装置
JPH1196005A (ja) 並列処理装置
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法
WO2016156955A1 (en) Parallelized execution of instruction sequences based on premonitoring
US10296350B2 (en) Parallelized execution of instruction sequences
US20040128482A1 (en) Eliminating register reads and writes in a scheduled instruction cache
JP2014059665A (ja) マイクロコンピュータ及びマイクロコンピュータにおける命令処理方法

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130415

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130422

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130617

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130624

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130716

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131001

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131225

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140401

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140527

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140926

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20141003

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: 20141021

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141119

R150 Certificate of patent or registration of utility model

Ref document number: 5653762

Country of ref document: JP

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