JP5889986B2 - 実行された命令の結果を選択的にコミットするためのシステムおよび方法 - Google Patents
実行された命令の結果を選択的にコミットするためのシステムおよび方法 Download PDFInfo
- Publication number
- JP5889986B2 JP5889986B2 JP2014196650A JP2014196650A JP5889986B2 JP 5889986 B2 JP5889986 B2 JP 5889986B2 JP 2014196650 A JP2014196650 A JP 2014196650A JP 2014196650 A JP2014196650 A JP 2014196650A JP 5889986 B2 JP5889986 B2 JP 5889986B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- result
- execution
- instructions
- packet
- 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 title claims description 88
- 230000008859 change Effects 0.000 claims description 43
- 239000000872 buffer Substances 0.000 claims description 18
- 230000001419 dependent effect Effects 0.000 claims description 18
- 230000003068 static effect Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000012536 storage buffer Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- 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/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
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30069—Instruction skipping instructions, e.g. SKIP
-
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing 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
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
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)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
710の別々の構成要素として描かれている一方、その代わりに、プレディケート論理回路762および複数のプレディケートレジスタ760は、図1において例示されるシーケンサ114のような制御回路に統合されることができることが理解されるべきである。同様に、プレディケート論理回路762およびデータを格納するバッファ764は、マルチスレッドのプロセッサの複数の実行ユニットに統合されることができる。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[書類名]特許請求の範囲
[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 (34)
- 下記を具備する方法:
第1の実行パイプラインおよび第2の実行パイプラインを含む、複数の並列実行のパイプラインを有するプロセッサにおいて、第1の命令および前記第1の命令に依存する第2の命令を含む命令のパケットを受信することと、ここにおいて前記命令のパケットは、前記第2の命令が、別のパケットからの以前に実行された命令に関連づけられる結果の代わりに、前記第1の命令に関連づけられる第1の結果を使用して実行されるべきである表示を含む、
前記第1の命令の少なくとも一部および前記第2の命令の少なくとも一部を並行に実行することと、
前記第1の結果に基づいて、前記第2の実行パイプラインを用いて前記第2の命令の少なくとも一部を実行したことの第2の結果を選択的にコミットすること。 - 請求項1に記載の方法、ここにおいて前記命令のパケットは、超長命令語(VLIW)の命令のパケットであり、前記第1の命令は、比較命令であり、前記第2の命令は、ロード命令、ストア命令、算術命令、またはそれらの組み合わせである。
- 請求項1に記載の方法、ここにおいて前記命令のパケットは、同じ宛先レジスタをターゲットとする少なくとも2つの条件付きの命令を含む。
- 請求項3に記載の方法、プレディケートレジスタに、前記第1の結果に関連するデータを書き込むことをさらに具備し、ここにおいて前記第2の命令は、前記プレディケートレジスタから前記第1の結果に関連する前記データを受信し、前記第1の結果に関連する前記データは、前記プレディケートレジスタに格納された以前の結果を置き換える。
- 請求項1に記載の方法、ここにおいて前記第2の結果を選択的にコミットすることは下記を具備する:
メモリを格納するバッファに前記第2の結果を書き込むことと、
前記第1の結果を利用できるときは、レジスタに対する書き戻しのオペレーションを選択的にキャンセルすること。 - 請求項1に記載の方法、ここにおいて前記第2の命令は、条件付きのフローの変更の命令を含む、前記方法はさらに下記を具備する:
前記第1の実行パイプラインおよび前記第2の実行パイプラインのうちの1つの復号のステージにおいて、前記第2の命令および前記第1の命令の一部を復号することと、
前記条件付きのフローの変更の命令がコミットされる見込みか否かを指示する前記復号された一部に基づいて静的な予測を行うこと。 - 前記静的な予測が、前記条件付きのフローの変更の命令がコミットされる見込みであることを指示するときは、フローの変更に関連する複数の命令を読み出すために、命令の取り出しパイプラインを操縦することをさらに具備する、請求項6に記載の方法。
- 前記第2の結果をコミットするかどうかを決定した後に、前記第2の結果を宛先レジスタに対して条件付き書き戻しすることをさらに具備する、請求項1に記載の方法。
- 請求項1に記載の方法、ここにおいて前記第1の命令は比較命令を具備し、前記第2の命令はフローの変更の命令を具備する、前記方法はさらに下記を具備する:
前記第1の結果に基づいて、プレディケートビットをプレディケートレジスタに設定することと、
前記フローの変更の命令を実行した後に、前記プレディケートビットの値に基づいて、前記フローの変更の命令よって指示された前記フローの動作の変更を行うために、選択的にコミットすること。 - 第2のパイプラインが前記第1の実行パイプラインによって使用されるべき前記第1の結果を有するかどうかを決定するために、前記命令のパケットの一部を復号することをさらに備える、請求項1に記載の方法。
- 前記第2の実行パイプラインにおいて、前記第1の実行パイプラインが前記第2の命令に依存する前記第1の結果を有すると決定することをさらに備える、請求項1に記載の方法。
- 前記第1の命令の一部に関連づけられる値を決定するために、前記第2の実行パイプラインにおいて、前記第1の命令の一部を復号することをさらに備える、請求項1に記載の方法。
- 前記第1の命令および前記第2の命令の実行の前に、前記命令のパケットから前記第1の命令および前記第2の命令を並行に抽出することをさらに備える、請求項1に記載の方法。
- 下記を具備する方法:
複数の並列実行のパイプラインを有するプロセッサにおいて、比較命令および第2の命令を含むパケットを受信すること、前記第2の命令は前記比較命令に依存している、ここにおいて前記パケットは、前記第2の命令が、第2のパケットからの以前に実行された命令に関連づけられる結果の代わりに、前記比較命令に関連づけられる第1の結果を使用して実行されるべきである表示を含む、
前記第2の命令がコミットされるかどうかに関連する予測を決定するために前記第2の命令および前記比較命令を復号すること、
前記比較命令および前記第2の命令を並行に実行することと、
前記第2の命令におよび前記予測に一部基づいて、取り出しパイプラインを選択的に操縦すること。 - 請求項14に記載の方法、ここにおいて前記取り出しパイプラインを選択的に操縦することは、前記第2の命令がフローの変更の命令であるとき、および前記フローの変更の命令がコミットされる見込みであると前記予測が指示するときに、予測されるフローの変更に基づいてメモリからの複数の命令の読み出しを開始することを具備する。
- 請求項14に記載の方法、ここにおいて前記取り出しパイプラインを選択的に操縦することは、前記予測がフローの変更を指示するときは、前記予測に基づいてメモリからフローの変更に関連する複数の命令の読み出しを開始することを、しかし前記予測が前記フローの変更を指示しないときは、読み出しを開始しないことを、具備する。
- 前記予測が誤りであると決定された後に、前記取り出しパイプラインから前記読み出された複数の命令を削除することをさらに具備する、請求項15に記載の方法。
- 第1の実行パイプラインに関連づけられる前記比較命令に関連する少なくとも第1の結果に基づいて、第2の実行パイプラインを用いて実行される前記第2の命令の第2の結果を選択的にコミットすることをさらに具備する、請求項14に記載の方法。
- 請求項18に記載の方法、ここにおいて前記第1の結果は、前記第2の結果がコミットされる前に、前記第2の命令に対して利用できる。
- 前記第2の結果がコミットされないときに、前記第2の命令の実行により引き起こされる複数の例外をキャンセルすることをさらに具備する、請求項19に記載の方法。
- さらに下記を具備する、請求項14に記載の方法:
前記比較命令および前記第2の命令のうちの1つは、プレディケートレジスタの中のビットに基づいた有効なプレディケートを有するかどうかを決定すること、および
前記有効なプレディケートを有する前記命令に基づいて、前記比較命令の第1の結果および前記第2の命令の第2の結果のうちの、両方ではなく、1つをコミットすること。 - 請求項14に記載の方法、ここにおいて前記パケットに含まれる表示は、前記比較命令に関連づけられる前記第1の結果が前記第2の命令によって使用されるべきであることを指示する前記第2の命令におけるビットの値に基づく。
- 請求項14に記載の方法、ここにおいて前記パケットに含まれる表示は、前記第2の命令におけるビットフラグである。
- 下記を具備するプロセッサ:
複数の命令を並行して実行するように適応されたマルチプルな複数の実行パイプライン、前記マルチプルな複数の実行パイプラインは、第1の結果を決定する命令のパケットの第1の命令を実行するための第1の実行パイプラインと、前記第1の命令から決定された前記第1の結果に依存する前記命令のパケットの第2の命令を実行するための第2の実行パイプラインとを含む、前記第1の命令および前記第2の命令は同時に実行される、前記命令のパケットは、前記第2の命令が、別のパケットからの以前に実行された命令に関連づけられる結果の代わりに、前記第1の命令から決定される前記第1の結果を使用して実行されるべきである表示を含む、および
前記第1の命令の実行から決定される、前記第1の実行パイプラインからの前記第1の結果を、前記第2の命令による使用のために前記第2の実行パイプラインへ提供するように適応された論理回路。 - 請求項24に記載のプロセッサ、ここにおいて前記論理回路は、前記第2の実行パイプラインと関連づけられる第2の結果がコミットされる前に、前記第1の結果を前記第2の実行パイプラインへ提供する。
- 前記マルチプルな複数の実行パイプラインにアクセス可能であり、ならびに前記第1の結果に関連するデータを格納するように適応されたプレディケートレジスタをさらに具備する、請求項24に記載のプロセッサ。
- 前記第1の命令および前記第2の命令を含む複数の命令の前記パケットを受信するシーケンサをさらに具備し、前記シーケンサは、前記第1の命令を前記第1の実行パイプラインに提供し、前記第2の命令を前記第2の実行パイプラインに提供する、請求項24に記載のプロセッサ。
- 請求項27に記載のプロセッサ、ここにおいて前記第1の命令は比較命令を具備する、ここにおいて前記第2の命令は前記比較命令の実行の結果に依存する、およびここにおいて前記第2の命令は算術命令、論理演算命令、ロード命令、ストア命令、分岐命令、およびジャンプ命令のうちの少なくとも1つを具備する。
- 前記マルチプルな複数の実行パイプラインに結合され、前記第2の命令の実行による第2の結果がコミットされる前に、前記第1の命令の実行による前記第1の結果を取得するのに十分な遅延を提供するように構成されたメモリバッファをさらに具備する、請求項24に記載のプロセッサ。
- 下記を具備するプロセッサ:
第1の実行パイプラインおよび第2の実行パイプラインを含む複数の並列実行のパイプラインを有するプロセッサにおいて、第1の命令および前記第1の命令に依存する第2の命令を含む命令のパケットを受信するための手段と、ここにおいて前記命令のパケットは、前記第2の命令が、別のパケットからの以前に実行された命令に関連づけられる結果の代わりに、前記第1の命令に関連づけられる第1の結果を使用して実行されるべきである表示を含む、
前記第1の命令の少なくとも一部および前記第2の命令の少なくとも一部を並行に実行するための手段と、
前記第1の実行パイプラインを用いて前記第1の命令の実行に関連する前記第1の結果に基づいて、前記第2の実行パイプラインを用いて前記第2の命令の少なくとも一部の実行の第2の結果を選択的にコミットするための手段。 - 下記をさらに具備する、請求項30に記載のプロセッサ:
メモリを格納するバッファに前記第2の結果を書き込むための手段と、
前記第1の結果が利用できるときは、レジスタに対する書き戻しのオペレーションを選択的にキャンセルするための手段。 - 請求項30に記載のプロセッサ、ここにおいて前記命令のパケットは、条件を計算する命令を含み、前記条件は、前記第2の命令の実行中に計算され、前記計算された条件は、前記第2の命令の実行中に使用される。
- プロセッサにオペレーションを実行させるためのプログラム、ここにおいて、前記プロセッサは、第1の実行パイプラインおよび第2の実行パイプラインを含む複数の並列実行のパイプラインを有し、前記オペレーションは下記を具備する:
第1の命令および前記第1の命令に依存する第2の命令を含む命令のパケットを受信すること、ここにおいて前記命令のパケットは、前記第2の命令が、別のパケットからの以前に実行された命令に関連づけられる結果の代わりに、前記第1の命令に関連づけられる第1の結果を使用して実行されるべきである表示を含む、
前記第1の命令の少なくとも一部および前記第2の命令の少なくとも一部を並行に実行すること、
前記第1の結果に基づいて、前記第2の実行パイプラインを用いて前記第2の命令の少なくとも一部を実行したことの第2の結果を選択的にコミットすること。 - 請求項33に記載のプログラム、ここにおいて前記命令のパケットは、超長命令語(VLIW)の命令のパケットであり、前記第1の命令は、比較命令であり、前記第2の命令は、ロード命令、ストア命令、算術命令、またはそれらの組み合わせである。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/045,825 US8990543B2 (en) | 2008-03-11 | 2008-03-11 | System and method for generating and using predicates within a single instruction packet |
US12/045,825 | 2008-03-11 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010550747A Division JP5653762B2 (ja) | 2008-03-11 | 2009-02-27 | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2015043216A JP2015043216A (ja) | 2015-03-05 |
JP2015043216A5 JP2015043216A5 (ja) | 2015-08-13 |
JP5889986B2 true JP5889986B2 (ja) | 2016-03-22 |
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 Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010550747A Expired - Fee Related JP5653762B2 (ja) | 2008-03-11 | 2009-02-27 | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 |
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)
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 |
US8416251B2 (en) | 2004-11-15 | 2013-04-09 | Nvidia Corporation | Stream processing in a video processor |
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 |
US8698819B1 (en) | 2007-08-15 | 2014-04-15 | Nvidia Corporation | Software assisted shader merging |
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 |
US8411096B1 (en) | 2007-08-15 | 2013-04-02 | Nvidia Corporation | Shader program instruction fetch |
US9064333B2 (en) | 2007-12-17 | 2015-06-23 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8780123B2 (en) | 2007-12-17 | 2014-07-15 | 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 |
US9817663B2 (en) | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
US9348589B2 (en) | 2013-03-19 | 2016-05-24 | Apple Inc. | Enhanced predicate registers having predicates corresponding to element widths |
US9430369B2 (en) * | 2013-05-24 | 2016-08-30 | 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 |
WO2021035006A1 (en) * | 2019-08-20 | 2021-02-25 | 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 |
US12039337B2 (en) | 2020-09-25 | 2024-07-16 | 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)
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 | 株式会社日立製作所 | 演算処理装置 |
JP3670668B2 (ja) | 1997-01-24 | 2005-07-13 | 株式会社ルネサステクノロジ | データ処理装置 |
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 |
-
2008
- 2008-03-11 US US12/045,825 patent/US8990543B2/en active Active
-
2009
- 2009-02-27 JP JP2010550747A patent/JP5653762B2/ja not_active Expired - Fee Related
- 2009-02-27 CN CN200980108280.5A patent/CN101965554B/zh not_active Expired - Fee Related
- 2009-02-27 WO PCT/US2009/035372 patent/WO2009114289A1/en active Application Filing
- 2009-02-27 EP EP09719201A patent/EP2269134A1/en not_active Ceased
- 2009-02-27 KR KR1020107022672A patent/KR101225075B1/ko active IP Right Grant
- 2009-03-05 TW TW098107159A patent/TW200951811A/zh unknown
-
2014
- 2014-09-26 JP JP2014196650A patent/JP5889986B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101965554B (zh) | 2015-04-15 |
US8990543B2 (en) | 2015-03-24 |
JP5653762B2 (ja) | 2015-01-14 |
JP2011517493A (ja) | 2011-06-09 |
JP2015043216A (ja) | 2015-03-05 |
CN101965554A (zh) | 2011-02-02 |
WO2009114289A1 (en) | 2009-09-17 |
KR101225075B1 (ko) | 2013-01-22 |
KR20100132032A (ko) | 2010-12-16 |
TW200951811A (en) | 2009-12-16 |
US20090235051A1 (en) | 2009-09-17 |
EP2269134A1 (en) | 2011-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5889986B2 (ja) | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 | |
US10296346B2 (en) | Parallelized execution of instruction sequences based on pre-monitoring | |
US7444501B2 (en) | Methods and apparatus for recognizing a subroutine call | |
US20110320787A1 (en) | Indirect Branch Hint | |
JP2009540412A (ja) | ローカル及びグローバル分岐予測情報の格納 | |
JP2006313422A (ja) | 演算処理装置及びデータ転送処理の実行方法 | |
US7877578B2 (en) | Processing apparatus for storing branch history information in predecode instruction cache | |
US9710269B2 (en) | Early conditional selection of an operand | |
JP2007102333A (ja) | データ処理装置およびデータ処理方法 | |
US6983359B2 (en) | Processor and method for pre-fetching out-of-order instructions | |
JP7409208B2 (ja) | 演算処理装置 | |
JPH1196005A (ja) | 並列処理装置 | |
JP4728877B2 (ja) | マイクロプロセッサおよびパイプライン制御方法 | |
EP3278212A1 (en) | Parallelized execution of instruction sequences based on premonitoring | |
JP5229383B2 (ja) | プリフェッチ要求回路 | |
US10296350B2 (en) | Parallelized execution of instruction sequences | |
US20040128482A1 (en) | Eliminating register reads and writes in a scheduled instruction cache | |
Shah et al. | SPSIM: SuperScalar Processor SIMulater CS305 Project Report | |
JP2014059665A (ja) | マイクロコンピュータ及びマイクロコンピュータにおける命令処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150615 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20150615 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150722 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20150722 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150825 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20151125 |
|
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: 20160119 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160217 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5889986 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |