JP2013534004A - 統合分岐先・述語予測 - Google Patents
統合分岐先・述語予測 Download PDFInfo
- Publication number
- JP2013534004A JP2013534004A JP2013515312A JP2013515312A JP2013534004A JP 2013534004 A JP2013534004 A JP 2013534004A JP 2013515312 A JP2013515312 A JP 2013515312A JP 2013515312 A JP2013515312 A JP 2013515312A JP 2013534004 A JP2013534004 A JP 2013534004A
- Authority
- JP
- Japan
- Prior art keywords
- predicate
- predicted
- prediction
- branch destination
- instruction
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 77
- 238000003860 storage Methods 0.000 claims description 20
- 238000004519 manufacturing process Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 33
- 238000004891 communication Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 230000000694 effects Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- 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/30058—Conditional branch 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/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
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
コンピューティングデバイス上で、予測述語値に少なくとも部分的に基づいて、ブロック内の述語付き命令の中から1つまたは複数の予測述語付き命令を実行することと、
予測述語付き命令に基づいて、第2のブロックコードを指示する予測分岐先ロケーションを予測することと、
第2のブロックコードで実行を継続することと
を含む動作を実行することを可能にするように構成されることができる。
Claims (24)
- コンピュータ命令の実行時間予測のためのコンピュータ実装方法であって、該方法は、
コンピューティングデバイス上で、制御点履歴(145)に少なくとも部分的に基づいて統合述語・分岐先予測(155)を生成すること(620)と、
前記コンピューティングデバイス上で、前記統合述語・分岐先予測に少なくとも部分的に基づいて、1つまたは複数の予測述語付き命令を実行すること(830)と、
前記コンピューティングデバイス上で、前記統合述語・分岐先予測に少なくとも部分的に基づいて、予測分岐先ロケーションにおいて実行を進行すること(850)と
を含む、方法。 - 生成することは、1つまたは複数の述語付き命令に対する1つまたは複数の予測述語値を生成することを含む、請求項1に記載の方法。
- 実行を進行することは、前記1つまたは複数の予測述語値に基づいて前記予測分岐先ロケーションを予測することを含む、請求項2に記載の方法。
- 前記1つまたは複数の予測述語値に基づいて前記予測分岐先ロケーションを予測することは、前記1つまたは複数の予測述語値に少なくとも部分的に基づいて予測制御フローグラフを通じて経路を追うことを含む、請求項3に記載の方法。
- 前記コンピュータ命令はブロック不可分アーキテクチャ内にあり、
前記方法は、前記コンピューティングデバイスによって、命令ブロックに対する前記予測制御フローグラフを生成することをさらに含み、
前記命令ブロック内の述語は前記予測制御フローグラフ内でノードとして表され、
分岐先は前記予測制御フローグラフ内で葉として表される、
請求項4に記載の方法。 - 前記予測制御フローグラフを通じて経路を追うことは、前記1つまたは複数の予測述語値に少なくとも部分的に基づいて述語間のエッジを追うことを含む、請求項4に記載の方法。
- 1つまたは複数の予測述語値を生成することは、複数のレベルの予測述語値を並列に生成することを含む、請求項2に記載の方法。
- 複数のレベルの予測述語値を並列に生成することは、レベルn、および、長さkの述語履歴を含む前記制御点履歴に関して、
最新のk個の述語に基づいてレベルnに対する予測述語値を生成することと、
最新のk−1個の述語およびレベルnに対する2つの可能な述語値に基づいてレベルn+1に対する2つの予測述語値を生成することと、
レベルnに対する前記予測述語値に基づいてレベルn+1に対する前記2つの予測述語値のうちのいずれが使用されるべきかを決定することと
を含む、請求項7に記載の方法。 - 複数のレベルの予測述語値を並列に生成することは、命令ブロック内の最大で所定のレベル数jに対して予測述語値を生成することを含む、請求項7に記載の方法。
- 内部にjよりも大きい数の述語レベルを含む命令ブロックに対して予測述語値が生成されるとき、複数のレベルの予測述語値を並列に生成することは、
前記ブロック内の前記述語レベルの数を超えるまで、jの倍数単位で予測述語値を繰り返し生成することと、
前記ブロック内の前記述語レベルの数を超える述語値を破棄することと
を含む、請求項9に記載の方法。 - 複数のレベルの予測述語値を並列に生成することは、前記命令ブロックに関連付けられるとともに前記ブロック内の前記述語レベルの数を表す、記憶されている値にアクセスすることをさらに含む、請求項10に記載の方法。
- 前記制御点履歴は述語履歴を含み、
前記1つまたは複数の予測述語値を生成することは、述語履歴をインデックスとして使用することに基づいて、予測述語の検索を実行することを含む、
請求項2に記載の方法。 - 前記制御点履歴は、進行中の実行の間に、以前に実行された1つまたは複数の命令を含む、請求項1に記載の方法。
- コンピュータ命令の予測ランタイム実行のためのシステムであって、該システムは、
1つまたは複数のコンピュータプロセッサ(910)と、
述語および/または分岐の履歴(145)を入力として受け入れるとともに、前記1つまたは複数のプロセッサによる動作に応答して、前記受け入れられた履歴に基づいて統合述語・分岐先予測(155)を生成する(620)ように構成される統合予測生成器(150)と、
前記1つまたは複数のプロセッサによる動作に応答して、
前記統合述語・分岐先予測から取得される予測述語値に基づいて1つまたは複数の述語付き命令を実行する(830)とともに、
予測分岐先ロケーションにおいてフェッチされた命令の実行を進行する(850)ように、前記1つまたは複数のプロセッサを制御するように構成される命令フェッチ・実行制御部(160)と
を備え、前記予測分岐先ロケーションは、前記予測述語値に少なくとも部分的に基づく、システム。 - 前記命令フェッチ・実行制御部は、前記1つまたは複数のプロセッサによる動作に応答して、前記予測述語値に少なくとも部分的に基づいて前記予測分岐先ロケーションを予測するようにさらに構成される、請求項14に記載のシステム。
- 前記1つまたは複数のコンピュータプロセッサに結合される記憶媒体、
前記記憶媒体上の1つまたは複数の予測制御フローグラフ
をさらに備え、それぞれの前記予測制御フローグラフは、それぞれのコードブロックに関して、前記コードブロック内の述語を内部ノードとして表し、他のコードブロックに対する分岐を葉として表す、請求項15に記載のシステム。 - 前記命令フェッチ・実行制御部は、
前記予測述語値にしたがって前記予測制御フローグラフを通る経路を追うとともに、
前記経路を追うことによって葉に達すると、前記葉に向かって分岐するコードブロックのロケーションを前記予測分岐先ロケーションとして予測することによって、前記予測分岐先ロケーションを予測するように構成される、請求項16に記載のシステム。 - 前記統合予測生成器は、前記1つまたは複数のプロセッサによる動作に応答して、予測述語値を特定するために述語の履歴を検索インデックスとして使用することによって統合述語・分岐先予測を生成するように構成される、請求項14に記載のシステム。
- 前記統合予測生成器は、前記1つまたは複数のプロセッサによる動作に応答して、複数の検索を並列に実行することによって統合述語・分岐先予測を生成するようにさらに構成される、請求項18に記載のシステム。
- 製造品であって、
有形コンピュータ可読媒体(1002)と、
前記有形コンピュータ可読媒体上に記憶される複数のコンピュータ実行可能命令(1004)とを備え、前記コンピュータ実行可能命令は、装置による実行に応答して、該装置に、述語付き命令および1つまたは複数の分岐先を有する第1のコードブロックに対して命令の実行をスケジューリングするための動作を実行させ、該動作は、
以前に実行された1つまたは複数の命令(145)に少なくとも部分的に基づいて、統合述語・分岐先予測(155)を特定すること(620)であって、該予測は、前記第1のコードブロック内の前記述語付き命令に対する1つまたは複数の予測述語値を含む、特定することと、
前記コンピューティングデバイス上で、前記予測述語値に少なくとも部分的に基づいて、前記ブロック内の前記述語付き命令の中から1つまたは複数の予測述語付き命令を実行すること(830)と、
前記予測述語付き命令に基づいて、第2のコードブロックを指す予測分岐先ロケーションを予測すること(840)と、
前記第2のコードブロックでの実行を継続すること(850)と
を含む、製造品。 - 予測分岐先ロケーションを予測することは、前記予測分岐先ロケーションを特定するために前記第1のコードブロックに関して予測制御フローグラフを通じて経路を追うことを含む、請求項20に記載の製造品。
- 前記動作は、コンピュータプログラム内のそれぞれのコードブロックについて、それぞれの予測制御フローグラフを生成することをさらに含む、請求項21に記載の製造品。
- 前記統合述語・分岐先予測を特定することは過去の述語値の履歴に基づいて予測述語値のセットの検索を実行することを含む、請求項20に記載の製造品。
- 述語化された述語のセットの検索を実行することは、
可能性のある予測述語値の複数の検索を並列に実行することと、
レベルnにおける可能性のある予測述語値に関して、レベルn−1における予測述語値を使用して前記可能性のある予測述語値を決定することと
を含む、請求項23に記載の製造品。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2010/039162 WO2011159309A1 (en) | 2010-06-18 | 2010-06-18 | Combined branch target and predicate prediction |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013534004A true JP2013534004A (ja) | 2013-08-29 |
JP5707011B2 JP5707011B2 (ja) | 2015-04-22 |
Family
ID=45348486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013515312A Active JP5707011B2 (ja) | 2010-06-18 | 2010-06-18 | 統合分岐先・述語予測 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9021241B2 (ja) |
JP (1) | JP5707011B2 (ja) |
KR (3) | KR101731742B1 (ja) |
WO (1) | WO2011159309A1 (ja) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
US9934035B2 (en) | 2013-03-21 | 2018-04-03 | Nxp Usa, Inc. | Device and method for tracing updated predicate values |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
US9507594B2 (en) * | 2013-07-02 | 2016-11-29 | Intel Corporation | Method and system of compiling program code into predicated instructions for execution on a processor without a program counter |
US20160179538A1 (en) * | 2014-12-19 | 2016-06-23 | Intel Corporation | Method and apparatus for implementing and maintaining a stack of predicate values with stack synchronization instructions in an out of order hardware software co-designed processor |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US9720693B2 (en) | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US9921814B2 (en) * | 2015-08-24 | 2018-03-20 | International Business Machines Corporation | Control flow graph analysis |
US10379858B2 (en) * | 2015-09-14 | 2019-08-13 | Spreadtrum Hong Kong Limited | Method and apparatus for executing conditional instruction predicated on execution result of predicate instruction |
US20170083320A1 (en) * | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Predicated read instructions |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10061584B2 (en) | 2015-09-19 | 2018-08-28 | Microsoft Technology Licensing, Llc | Store nullification in the target field |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US10719321B2 (en) | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US10095519B2 (en) | 2015-09-19 | 2018-10-09 | Microsoft Technology Licensing, Llc | Instruction block address register |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US10936316B2 (en) | 2015-09-19 | 2021-03-02 | Microsoft Technology Licensing, Llc | Dense read encoding for dataflow ISA |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US10031756B2 (en) | 2015-09-19 | 2018-07-24 | Microsoft Technology Licensing, Llc | Multi-nullification |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
US11106467B2 (en) | 2016-04-28 | 2021-08-31 | Microsoft Technology Licensing, Llc | Incremental scheduler for out-of-order block ISA processors |
US11531552B2 (en) | 2017-02-06 | 2022-12-20 | Microsoft Technology Licensing, Llc | Executing multiple programs simultaneously on a processor core |
US10963379B2 (en) | 2018-01-30 | 2021-03-30 | Microsoft Technology Licensing, Llc | Coupling wide memory interface to wide write back paths |
US10824429B2 (en) | 2018-09-19 | 2020-11-03 | Microsoft Technology Licensing, Llc | Commit logic and precise exceptions in explicit dataflow graph execution architectures |
US12026518B2 (en) | 2021-10-14 | 2024-07-02 | Braingines SA | Dynamic, low-latency, dependency-aware scheduling on SIMD-like devices for processing of recurring and non-recurring executions of time-series data |
US11977896B2 (en) * | 2022-09-12 | 2024-05-07 | Arm Limited | Issuing a sequence of instructions including a condition-dependent instruction |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5903750A (en) * | 1996-11-20 | 1999-05-11 | Institute For The Development Of Emerging Architectures, L.L.P. | Dynamic branch prediction for branch instructions with multiple targets |
JP2001175473A (ja) * | 1999-08-31 | 2001-06-29 | Internatl Business Mach Corp <Ibm> | コンピュータ処理システムにおいて実行述語を実現する方法及び装置 |
US6353883B1 (en) * | 1998-08-04 | 2002-03-05 | Intel Corporation | Method and apparatus for performing predicate prediction |
JP2002149401A (ja) * | 2000-09-28 | 2002-05-24 | Internatl Business Mach Corp <Ibm> | マイクロプロセッサ内の命令処理法方、マイクロプロセッサ及び情報処理システム |
JP2013500539A (ja) * | 2009-09-09 | 2013-01-07 | ボード オブ リージエンツ,ユニバーシテイ オブ テキサス システム | 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体 |
Family Cites Families (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5317734A (en) | 1989-08-29 | 1994-05-31 | North American Philips Corporation | Method of synchronizing parallel processors employing channels and compiling method minimizing cross-processor data dependencies |
US5666506A (en) | 1994-10-24 | 1997-09-09 | International Business Machines Corporation | Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle |
US5669001A (en) | 1995-03-23 | 1997-09-16 | International Business Machines Corporation | Object code compatible representation of very long instruction word programs |
US5729228A (en) | 1995-07-06 | 1998-03-17 | International Business Machines Corp. | Parallel compression and decompression using a cooperative dictionary |
US5790822A (en) | 1996-03-21 | 1998-08-04 | Intel Corporation | Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor |
US5920724A (en) | 1996-03-28 | 1999-07-06 | Intel Corporation | Software pipelining a hyperblock loop |
US8583895B2 (en) | 1996-05-15 | 2013-11-12 | Nytell Software LLC | Compressed instruction format for use in a VLIW processor |
US5796997A (en) | 1996-05-15 | 1998-08-18 | Hewlett-Packard Company | Fast nullify system and method for transforming a nullify function into a select function |
US5905893A (en) | 1996-06-10 | 1999-05-18 | Lsi Logic Corporation | Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set |
US5845103A (en) | 1997-06-13 | 1998-12-01 | Wisconsin Alumni Research Foundation | Computer with dynamic instruction reuse |
US5943501A (en) | 1997-06-27 | 1999-08-24 | Wisconsin Alumni Research Foundation | Multiple processor, distributed memory computer with out-of-order processing |
US5930158A (en) | 1997-07-02 | 1999-07-27 | Creative Technology, Ltd | Processor with instruction set for audio effects |
US6182210B1 (en) | 1997-12-16 | 2001-01-30 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
US6178498B1 (en) | 1997-12-18 | 2001-01-23 | Idea Corporation | Storing predicted branch target address in different storage according to importance hint in branch prediction instruction |
US6314493B1 (en) | 1998-02-03 | 2001-11-06 | International Business Machines Corporation | Branch history cache |
TW440793B (en) | 1998-02-25 | 2001-06-16 | Koninkl Philips Electronics Nv | A method for structuring a multi-instruction computer program from basic blocks that compose from internal instructions and external jumps in an internal directed acyclic graph, and a processor loaded with such program |
US6164841A (en) | 1998-05-04 | 2000-12-26 | Hewlett-Packard Company | Method, apparatus, and product for dynamic software code translation system |
US6988183B1 (en) | 1998-06-26 | 2006-01-17 | Derek Chi-Lan Wong | Methods for increasing instruction-level parallelism in microprocessors and digital system |
US6240510B1 (en) * | 1998-08-06 | 2001-05-29 | Intel Corporation | System for processing a cluster of instructions where the instructions are issued to the execution units having a priority order according to a template associated with the cluster of instructions |
US6367004B1 (en) | 1998-12-31 | 2002-04-02 | Intel Corporation | Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared |
US7430670B1 (en) | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US6477637B1 (en) | 1999-09-30 | 2002-11-05 | International Business Machines Corporation | Method and apparatus for transporting store requests between functional units within a processor |
US6918032B1 (en) | 2000-07-06 | 2005-07-12 | Intel Corporation | Hardware predication for conditional instruction path branching |
JP3664473B2 (ja) | 2000-10-04 | 2005-06-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの最適化方法及びこれを用いたコンパイラ |
US20030023959A1 (en) * | 2001-02-07 | 2003-01-30 | Park Joseph C.H. | General and efficient method for transforming predicated execution to static speculation |
US7032217B2 (en) | 2001-03-26 | 2006-04-18 | Intel Corporation | Method and system for collaborative profiling for continuous detection of profile phase transitions |
US7095343B2 (en) | 2001-10-09 | 2006-08-22 | Trustees Of Princeton University | code compression algorithms and architectures for embedded systems |
AU2002363142A1 (en) | 2001-10-31 | 2003-05-12 | Doug Burger | A scalable processing architecture |
US7114059B2 (en) * | 2001-11-05 | 2006-09-26 | Intel Corporation | System and method to bypass execution of instructions involving unreliable data during speculative execution |
US6892292B2 (en) | 2002-01-09 | 2005-05-10 | Nec Corporation | Apparatus for one-cycle decompression of compressed data and methods of operation thereof |
JP2005522773A (ja) | 2002-04-08 | 2005-07-28 | ユニバーシティー・オブ・テキサス・システム | 非均等型キャッシュ装置、システム及び方法 |
WO2004001584A2 (en) | 2002-06-24 | 2003-12-31 | Ante Vista Gmbh | A method for executing structured symbolic machine code on a microprocessor |
JP3804941B2 (ja) | 2002-06-28 | 2006-08-02 | 富士通株式会社 | 命令フェッチ制御装置 |
JP4196614B2 (ja) | 2002-08-22 | 2008-12-17 | パナソニック株式会社 | 命令スケジューリング方法、命令スケジューリング装置、及びプログラム |
US7299458B2 (en) | 2002-10-31 | 2007-11-20 | Src Computers, Inc. | System and method for converting control flow graph representations to control-dataflow graph representations |
US7308682B2 (en) | 2003-04-25 | 2007-12-11 | Intel Corporation | Method and apparatus for recovering data values in dynamic runtime systems |
US8607209B2 (en) | 2004-02-04 | 2013-12-10 | Bluerisc Inc. | Energy-focused compiler-assisted branch prediction |
EP1731998A1 (en) | 2004-03-29 | 2006-12-13 | Kyoto University | Data processing device, data processing program, and recording medium containing the data processing program |
US7424482B2 (en) | 2004-04-26 | 2008-09-09 | Storwize Inc. | Method and system for compression of data for block mode access storage |
JP4296996B2 (ja) | 2004-06-15 | 2009-07-15 | 富士通株式会社 | マルチコアプロセサ制御方式 |
US7302543B2 (en) | 2004-06-16 | 2007-11-27 | Nec Laboratories America, Inc. | Compressed memory architecture for embedded systems |
US7571284B1 (en) | 2004-06-30 | 2009-08-04 | Sun Microsystems, Inc. | Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor |
US7624386B2 (en) | 2004-12-16 | 2009-11-24 | Intel Corporation | Fast tree-based generation of a dependence graph |
US7552318B2 (en) | 2004-12-17 | 2009-06-23 | International Business Machines Corporation | Branch lookahead prefetch for microprocessors |
US7380038B2 (en) | 2005-02-04 | 2008-05-27 | Microsoft Corporation | Priority registers for biasing access to shared resources |
US7853777B2 (en) | 2005-02-04 | 2010-12-14 | Mips Technologies, Inc. | Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions |
US8312452B2 (en) | 2005-06-30 | 2012-11-13 | Intel Corporation | Method and apparatus for a guest to access a privileged register |
US8266413B2 (en) | 2006-03-14 | 2012-09-11 | The Board Of Trustees Of The University Of Illinois | Processor architecture for multipass processing of instructions downstream of a stalled instruction |
TW200739419A (en) * | 2006-04-07 | 2007-10-16 | Univ Feng Chia | Prediction mechanism of a program backward jump instruction |
US7487340B2 (en) | 2006-06-08 | 2009-02-03 | International Business Machines Corporation | Local and global branch prediction information storage |
US20070288733A1 (en) | 2006-06-08 | 2007-12-13 | Luick David A | Early Conditional Branch Resolution |
KR100817056B1 (ko) | 2006-08-25 | 2008-03-26 | 삼성전자주식회사 | 분기이력 길이표시기, 분기예측 시스템 및 분기 예측 방법 |
US7809926B2 (en) | 2006-11-03 | 2010-10-05 | Cornell Research Foundation, Inc. | Systems and methods for reconfiguring on-chip multiprocessors |
EP2527972A3 (en) | 2006-11-14 | 2014-08-06 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
US8291400B1 (en) | 2007-02-07 | 2012-10-16 | Tilera Corporation | Communication scheduling for parallel processing architectures |
US8180997B2 (en) | 2007-07-05 | 2012-05-15 | Board Of Regents, University Of Texas System | Dynamically composing processor cores to form logical processors |
US8447911B2 (en) | 2007-07-05 | 2013-05-21 | Board Of Regents, University Of Texas System | Unordered load/store queue |
JP2009026106A (ja) | 2007-07-20 | 2009-02-05 | Oki Electric Ind Co Ltd | 命令コード圧縮方法と命令フェッチ回路 |
US7516365B2 (en) | 2007-07-27 | 2009-04-07 | Sun Microsystems, Inc. | System and method for split hardware transactions |
JP5043560B2 (ja) * | 2007-08-24 | 2012-10-10 | パナソニック株式会社 | プログラム実行制御装置 |
US9384003B2 (en) | 2007-10-23 | 2016-07-05 | Texas Instruments Incorporated | Determining whether a branch instruction is predicted based on a capture range of a second instruction |
US7870371B2 (en) | 2007-12-17 | 2011-01-11 | Microsoft Corporation | Target-frequency based indirect jump prediction for high-performance processors |
US7818551B2 (en) | 2007-12-31 | 2010-10-19 | Microsoft Corporation | Feedback mechanism for dynamic predication of indirect jumps |
US8321850B2 (en) | 2008-06-06 | 2012-11-27 | Vmware, Inc. | Sharing and persisting code caches |
US20100146209A1 (en) | 2008-12-05 | 2010-06-10 | Intellectual Ventures Management, Llc | Method and apparatus for combining independent data caches |
US8127119B2 (en) | 2008-12-05 | 2012-02-28 | The Board Of Regents Of The University Of Texas System | Control-flow prediction using multiple independent predictors |
US20100191943A1 (en) * | 2009-01-26 | 2010-07-29 | Agere Systems Inc. | Coordination between a branch-target-buffer circuit and an instruction cache |
US20100325395A1 (en) | 2009-06-19 | 2010-12-23 | Doug Burger | Dependence prediction in a memory system |
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
US20110078424A1 (en) | 2009-09-30 | 2011-03-31 | International Business Machines Corporation | Optimizing program code using branch elimination |
US8464002B2 (en) | 2009-10-14 | 2013-06-11 | Board Of Regents Of The University Of Texas System | Burst-based cache dead block prediction |
WO2011067896A1 (en) | 2009-12-02 | 2011-06-09 | Mush-A Co., Ltd. | Data processing apparatus, data processing system, packet, recording medium, storage device, and data processing method |
JP5057256B2 (ja) | 2009-12-02 | 2012-10-24 | 株式会社Mush−A | データ処理装置、データ処理システムおよびデータ処理方法 |
EP2519876A1 (en) | 2009-12-28 | 2012-11-07 | Hyperion Core, Inc. | Optimisation of loops and data flow sections |
GB201001621D0 (en) | 2010-02-01 | 2010-03-17 | Univ Catholique Louvain | A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms |
KR101603751B1 (ko) | 2010-02-18 | 2016-03-16 | 삼성전자주식회사 | 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법 |
US8201024B2 (en) | 2010-05-17 | 2012-06-12 | Microsoft Corporation | Managing memory faults |
US20120158647A1 (en) | 2010-12-20 | 2012-06-21 | Vmware, Inc. | Block Compression in File System |
EP2689326B1 (en) | 2011-03-25 | 2022-11-16 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9304776B2 (en) | 2012-01-31 | 2016-04-05 | Oracle International Corporation | System and method for mitigating the impact of branch misprediction when exiting spin loops |
-
2010
- 2010-06-18 US US13/321,807 patent/US9021241B2/en active Active
- 2010-06-18 KR KR1020157010585A patent/KR101731742B1/ko active IP Right Grant
- 2010-06-18 JP JP2013515312A patent/JP5707011B2/ja active Active
- 2010-06-18 KR KR1020157032221A patent/KR101731752B1/ko active IP Right Grant
- 2010-06-18 WO PCT/US2010/039162 patent/WO2011159309A1/en active Application Filing
- 2010-06-18 KR KR1020137001476A patent/KR101523020B1/ko active IP Right Grant
-
2015
- 2015-03-25 US US14/668,300 patent/US9703565B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5903750A (en) * | 1996-11-20 | 1999-05-11 | Institute For The Development Of Emerging Architectures, L.L.P. | Dynamic branch prediction for branch instructions with multiple targets |
US6353883B1 (en) * | 1998-08-04 | 2002-03-05 | Intel Corporation | Method and apparatus for performing predicate prediction |
JP2001175473A (ja) * | 1999-08-31 | 2001-06-29 | Internatl Business Mach Corp <Ibm> | コンピュータ処理システムにおいて実行述語を実現する方法及び装置 |
JP2002149401A (ja) * | 2000-09-28 | 2002-05-24 | Internatl Business Mach Corp <Ibm> | マイクロプロセッサ内の命令処理法方、マイクロプロセッサ及び情報処理システム |
JP2013500539A (ja) * | 2009-09-09 | 2013-01-07 | ボード オブ リージエンツ,ユニバーシテイ オブ テキサス システム | 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体 |
Non-Patent Citations (3)
Title |
---|
JPN6014007361; David I. August et al.: '"Architectural Support for Compiler-Synthesized Dynamic Branch Prediction Strategies: Rationale and' Third International Symposium on High-Performance Computer Architecture, 1997. , 19970205, IEEE * |
JPN6014007362; Beth Simon et al.: '"Incorporating Predicate Information Into Branch Predictors"' Proceedings. The Ninth International Symposium on High-Performance Computer Architecture, 2003. HPCA , 20030212, IEEE * |
JPN6014007363; Nitya Ranganathan: '"Control flow speculation for distributed architectures"' Dissertation Presented to the Faculty of the Graduate School of The University of Texas at Austin , 200905, pages: i-ix,157-177,237-246, The University of Texas at Austin * |
Also Published As
Publication number | Publication date |
---|---|
WO2011159309A1 (en) | 2011-12-22 |
US9021241B2 (en) | 2015-04-28 |
US9703565B2 (en) | 2017-07-11 |
JP5707011B2 (ja) | 2015-04-22 |
KR101523020B1 (ko) | 2015-05-26 |
US20150199199A1 (en) | 2015-07-16 |
KR20130031896A (ko) | 2013-03-29 |
KR20150052350A (ko) | 2015-05-13 |
KR101731752B1 (ko) | 2017-04-28 |
KR20150132884A (ko) | 2015-11-26 |
KR101731742B1 (ko) | 2017-04-28 |
US20130086370A1 (en) | 2013-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5707011B2 (ja) | 統合分岐先・述語予測 | |
US9619298B2 (en) | Scheduling computing tasks for multi-processor systems based on resource requirements | |
US7401329B2 (en) | Compiling computer programs to exploit parallelism without exceeding available processing resources | |
US9990186B2 (en) | Determination of branch convergence in a sequence of program instruction | |
US6675380B1 (en) | Path speculating instruction scheduler | |
JP2004302706A (ja) | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム | |
Ogilvie et al. | Fast automatic heuristic construction using active learning | |
US20200387382A1 (en) | Mechanism for instruction fusion using tags | |
US11288047B2 (en) | Heterogenous computer system optimization | |
US8458679B2 (en) | May-constant propagation | |
JP2015201119A (ja) | コンパイルプログラム、コンパイル方法およびコンパイル装置 | |
US20180004627A1 (en) | Sequential monitoring and management of code segments for run-time parallelization | |
CN111061485A (zh) | 任务处理方法、编译器、调度服务器和介质 | |
US20090178054A1 (en) | Concomitance scheduling commensal threads in a multi-threading computer system | |
KR102161055B1 (ko) | 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치 | |
US20170115973A1 (en) | Operating method of semiconductor device and semiconductor system | |
JP2014228891A (ja) | コンパイラおよびコンパイル方法 | |
US20120089823A1 (en) | Processing apparatus, compiling apparatus, and dynamic conditional branch processing method | |
Kumar et al. | An approach for compiler optimization to exploit instruction level parallelism | |
US8549508B2 (en) | Mechanism for performing instruction scheduling based on register pressure sensitivity | |
JP6254352B2 (ja) | ループのプロローグまたはエピローグの無効演算を処理する装置及び方法 | |
KR100829167B1 (ko) | 소프트웨어 파이프라이닝의 데이터 의존도 완화 방법 | |
Keckler et al. | Combined branch target and predicate prediction for instruction blocks | |
WO2020172788A1 (en) | Workload oriented constant propagation for compiler | |
Keckler et al. | Combined branch target and predicate prediction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140210 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140228 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140508 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140604 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140910 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20140911 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20141007 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20141118 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150113 |
|
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: 20150202 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150228 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5707011 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: R3D04 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: R3D02 |
|
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 |
|
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |