JP5816298B2 - 自動的にプログラムを複数の並列スレッドに分解するハードウェア及びソフトウェアシステム用のシステム、装置、及び方法 - Google Patents
自動的にプログラムを複数の並列スレッドに分解するハードウェア及びソフトウェアシステム用のシステム、装置、及び方法 Download PDFInfo
- Publication number
- JP5816298B2 JP5816298B2 JP2013546184A JP2013546184A JP5816298B2 JP 5816298 B2 JP5816298 B2 JP 5816298B2 JP 2013546184 A JP2013546184 A JP 2013546184A JP 2013546184 A JP2013546184 A JP 2013546184A JP 5816298 B2 JP5816298 B2 JP 5816298B2
- Authority
- JP
- Japan
- Prior art keywords
- code
- processor core
- branch
- store
- cache
- 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 115
- 230000015654 memory Effects 0.000 claims description 97
- 230000008569 process Effects 0.000 claims description 28
- 239000000872 buffer Substances 0.000 claims description 23
- 238000001514 detection method Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 13
- 230000003139 buffering effect Effects 0.000 claims description 6
- 238000005096 rolling process Methods 0.000 claims 1
- 230000003068 static effect Effects 0.000 description 62
- 238000012545 processing Methods 0.000 description 47
- 239000003550 marker Substances 0.000 description 32
- 238000004458 analytical method Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 17
- 238000004364 calculation method Methods 0.000 description 15
- 238000003860 storage Methods 0.000 description 14
- 230000008901 benefit Effects 0.000 description 10
- 238000000926 separation method Methods 0.000 description 10
- 230000002441 reversible effect Effects 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 8
- 238000013500 data storage Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000006399 behavior Effects 0.000 description 7
- 230000001419 dependent effect Effects 0.000 description 6
- 230000010076 replication Effects 0.000 description 6
- 230000003936 working memory Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000010354 integration Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 230000001427 coherent effect Effects 0.000 description 3
- 238000000354 decomposition reaction Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 235000019580 granularity Nutrition 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 229920006395 saturated elastomer Polymers 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 241001388118 Anisotremus taeniatus Species 0.000 description 1
- 101100220616 Caenorhabditis elegans chk-2 gene Proteins 0.000 description 1
- 241000201976 Polycarpon Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000010899 nucleation Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000002994 raw material Substances 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing the number of cache misses; Data prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- 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/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0038—System on Chip
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Devices For Executing Special Programs (AREA)
Description
各グローバルコミット点と見合った正確なメモリの状態を知っておく必要もある。適宜、ハードウェアがソフトウェアと協働して、アーキテクチャプログラム状態(レジスタ及びメモリ両方)を、最後のグローバルコミット点に復元できるようにしておく必要があるが、これに関しては後述する。第4の機能は、ソフトウェアは正確に実行できるコードの生成をかなり良好に行うことができるとはいえ、ソフトウェアがいつでも100パーセント正確にはできないこともある。このいい例が、ソフトウェアが、コードのスレッドバージョンを生成する際に、メモリアドレスを完璧に予想できない、ということである。したがってスレッドコードが、ロードの誤った結果を得る場合がある。ハードウェアが、誤ってしまう可能性を全て検証する必要がある。不正確なものが見つかると、ハードウェアはソフトウェアと協働で、プログラム状態を直す必要がある。これは通常、コアの状態を最終のグローバルにコミットされていた状態に復元することにより行われている。最後の機能は、元のコードストリームを複数のスレッドに分解するときに、元のコードに指定されているメモリのストアを、複数の論理プロセッサの間で分配して、これら論理プロセッサの間で無作為な順序で実行させる機能である。動的スレッド切り替え論理は、他のコードストリームが、正確に実行されている元のコードが定義している不正確なメモリ状態を「見る」ことができないようにする必要がある。
一部の実施形態では、ハードウェアラッパーを動的スレッド切り替え実行論理に利用する。ラッパーハードウェアは、1)ホット領域の検知(ホットコードルート検知)、2)ホット領域(プロファイル)を特徴付ける情報の生成、3)トランザクションを実行するときの状態のバッファリング、4)成功した場合のバッファリング状態に対するコミット、5)アボートされた場合のバッファリング状態の破棄、6)コヒーレンシーイベント(たとえば書き込み―書き込み及び読み出し―書き込みのコンフリクト等)の検知、7)相互修正コードに対する保護、及び、8)ページングに関する変更に対する保護、という機能の少なくとも1以上をサポートする。これら機能それぞれは、上述されているものもあれば、後述するものもある。
動的スレッド切り替え実行(DTSE)ソフトウェアは、「フロー」と称されるコードの重要な静的サブセットを定義するために、ハードウェアが収集したプロファイリング情報を利用する。一部の実施形態では、このソフトウェアが自身の作業メモリスペースを有している。フローの元のコードは、この作業メモリで繰り返される。作業メモリのコードのコピーは、ソフトウェアにより変更することができる。元のコードはそっくり元の形態のままで、メモリの、元の位置に維持される。
補題1:分岐B2が分岐B1からその再収束点までの経路にある場合には、B2からその再収束点までの全経路も、またB1からその再収束点までの経路にあることになる。
B1からその再収束点R1までの経路はB2につながる。したがって、B2からのすべての経路に続く。B1が再収束する場合には、B2も再収束する。まだB2について特定されている「再収束点」に到達していない場合には、R1がより良い点である。再収束点のアルゴリズムは、最良の点を見つけるので、R1を見つけている必要がある。
定理2:ループBの1つの分岐が、ループAの分岐からその再収束点までの経路にある場合には、BがA内にネストされている。
Xが、AからAの再収束点RAまでの経路にあるBの分岐であるとする。補題1では、Xからその再収束点RBまでの経路が、AからRAまでの経路にある。ループBは、XからRBまでの経路の上のすべての分岐の集合体である。これらは全て、AからRAまでの経路の上にある。
定理3:BがA内にネストされており、CがB内にネストされているとすると、CはA内にネストされていることになる。Xを、再収束点RCをもつCの分岐であるとする。するとXはB内の分岐YからBの再収束点RBまでの経路にあることになる。補題1では、XからRCまでの経路が、YからRBまでの経路の上nある。Bの分岐Yは、Aの分岐ZからAの再収束点RAまでの経路にある。補題1から、YからRBまでの経路はZからRAまでの経路上にある。したがってXからRCまでの経路は、ZからRAまでの経路の上にある。したがってXは確実にZからRAの経路にある。これはC内の全てのXについてあてはまるしたがってCはA内にネストされている。
定理4:1つのバックエッジは、1つのループ1つのみに「関連付けられている」。目に見える分岐からその再収束点までの経路にはないバックエッジ自身はループである。目に見える分岐からその再収束点までの経路にバックエッジがある場合には、この分岐が属している分岐群は、少なくとも1つのバックエッジを有することになるので、ループである。
たとえばループLに関連づけられたバックエッジEがあるとする。Mを別個のループであるとする。LまたはMが分岐のないループである場合(つまり、これらが単に1つのバックエッジである場合)には、定理は正しい。L及びM両方が分岐を有していると想定する。続いて再収束点が定義される。Mの再収束点がまず定義された場合には、EはMからその再収束点までの経路にあるので、Eが隠されていることになる。後でLに見えるようにはならない。Lの再収束点がまず定義された場合には、EはMには隠されて、後で見えるようにはならない。
非定理5:あるフローで2度以上実行されるすべてのコードはあるループ内にある、というのは真ではない。
いずれかのループ内になく、複数回実行される、フローのなかのコードの一例が、ある分岐で終了する2つの基本ブロックである。1つの分岐のアームが、第1の基本ブロックを対象としており、分岐の他のアームが、第2の基本ブロックを対象としているとする。分岐の再収束点は、第2の分岐ブロックのエントリポイントである。第1の基本ブロックのコードは、ループ内にあるが、第2の基本ブロックのコードはループ内にはない、つまり、ループの分岐からその再収束点までの任意の経路にはないことになる。
「逆バックエッジ」とは、ループ分岐群に関連付けられているバックエッジであり、このバックエッジから順方向に進むと、ループ分岐群の再収束点が、このループ分岐群のいずれの分岐よりも前にヒットする(そしておそらくは、このループ分岐群のいずれの分岐にもヒットしない)。バックエッジは、ループ分岐群に見える場合にそのループ分岐群に関連に「関連付けられている」と称され、ループ分岐群の分岐からループ分岐群の再収束点までの経路にあることになる。
ループを抜けるループ分岐を持つ典型的な(classical)分岐では、バックエッジからの経路がまずループ分岐にヒットしてから、その再収束点にヒットする。バックエッジが逆バックエッジである場合には、このバックエッジからの経路が、まず再収束点にヒットして、そしてループ分岐にヒットする。
定理6:いずれのループ内にもないフローで2度以上実行される命令が存在する場合には、このフローが逆バックエッジを含んでいる。
図10は、上述した動作の1以上を利用して修正されたバックエッジ及び再収束点のエッジを示す。C00への入り口は、今ではループB00−B01の分岐の再収束点である。C10へのエントリポイントは、今ではループB10−B11への再収束点である。外部ループ、静的コピー00及び10は両方とも、共通の再収束点に向かう。C01及びC11の対象でもある共通の再収束点が存在している。C01及びC11が死んでいるコードであるためにこれはあまり興味がない。このコードに到達する方法はない。実際のところ、このコードからの退出は、常にC00またはC10から来る静的コピー00にある。図11では、死んでいるコード及び死んでいる経路を取り除いて、より明確にどのように動作するかを示す。静的コピー00内にあるこのコードの生きている入口は1つしかなく、静的コピー00内にあるこのコードの生きている出口も1つしかない点に留意されたい。一部の実施形態では、DTSEソフトウェアが、いずれかのコードを特に「取り除」かない。コードのコピーが1つだけある。取り除くものはない。ソフトウェアは、基本ブロックA及びCが、2つの名称00及び10の依存情報を必要としており、4つの名称の依存情報は必要としてないことを理解している。基本ブロックBは、4つの名称の依存情報を必要としている。
Claims (16)
- アプリケーションのオリジナルのソースコードを物理保護キャッシュに格納する段階と、
第1のプロセッサコアで前記アプリケーションのオリジナルのソースコードを実行する段階と、
第2のプロセッサコアが前記第1のプロセッサコアと協働する異なる実行モードに切り替える旨を示す情報を検知する検知フェーズに、前記第2のプロセッサコアを配置する段階と、
前記第1のプロセッサコアで前記オリジナルのソースコードの実行中のコードに関する情報を収集する段階と、
前記第2のプロセッサコアで、前記収集する段階で収集した情報を利用して前記第1のプロセッサコアと前記第2のプロセッサコアとが協働して実行することができる協働コードを前記オリジナルのソースコードから生成する段階であって、前記協働コードは利用可能なエントリポイントを伴う前記オリジナルのソースコードのスレッド化されたバージョンであり、前記エントリポイントは、前記オリジナルのソースコードにおける前記第1のプロセッサコア及び前記第2のプロセッサコアが協働して前記協働コードを実行する実行モードに切り替えるためのポイントである段階と、
前記第2のプロセッサコアで協働実行モードに切り替える旨を示す情報を検知する段階と、
前記第1のプロセッサコア及び前記第2のプロセッサコアにおいて、生成された前記協働コードを実行する段階と、
前記エントリポイントを格納するホットコードエントリポイントキャッシュにおける、各エントリポイントのフローを識別する署名をチェックすることにより、前記協働コードに、違反又は例外の発生により前記実行モードを終了するダーティな退出があるか判断する段階と、
前記ダーティな退出があるとき、前記物理保護キャッシュに格納されたオリジナルのソースコードを実行し、前記ダーティな退出がないとき、前記協働コードをコミットする段階と、
を備える方法。 - ホットコードエントリポイントキャッシュの署名をチェックすることにより、前記協働コードにダーティな退出があるか判断する段階は、前記第1のプロセッサコア及び前記第2のプロセッサコアの前記ホットコードエントリポイントキャッシュにおける署名をチェックする段階を含む、
請求項1に記載の方法。 - 前記切り替える旨を示す情報にヒットしたことに応じて、前記第1のプロセッサコアに異なる実行モードに入るように準備させる段階を更に備える、
請求項1又は2に記載の方法。 - 前記オリジナルのソースコードの実行中のコードに関する情報を収集することは、一定量の命令についてのロード、ストア、及び、分岐に関する情報を収集することを含む、
請求項1から3のいずれか1項に記載の方法。 - 生成された前記協働コードの成功裡の完了に応じて、前記第1のプロセッサコア及び前記第2のプロセッサコアにおける生成された前記協働コードの実行を停止する段階を更に備える、
請求項1から4のいずれか1項に記載の方法。 - 前記第1のプロセッサコア及び前記第2のプロセッサコアにおいて、生成された前記協働コードを実行する段階は、
2個のスレッドを分離して実行する段階と、
ラッパーハードウエアを用いてメモリのロード及びストアをバッファする段階と、
バッファされた前記メモリのロード及びストアに違反の可能性が無いかチェックする段階と、
メモリオーダリングを維持しながら先のプロセスを提供するためにアトミックに前記ストア及び前記ロードの処理をコミットする段階と、
を有する請求項1から5のいずれか1項に記載の方法。 - 違反に応じて前記第1のプロセッサコア及び前記第2のプロセッサコアにおける生成された前記協働コードの実行を中断し、最後のコミットポイントにロールバックする段階を更に備える、
請求項6に記載の方法。 - 違反に応じて前記第1のプロセッサコア及び前記第2のプロセッサコアにおける生成された前記協働コードの実行を中断することに応じて、前記第1のプロセッサコアで前記オリジナルのソースコードを実行し、前記第2のプロセッサコアが前記協働実行モードに切り替える旨を示す情報を検知する前記検知フェーズに、前記第2のプロセッサコアを戻す段階を更に備える、
請求項7に記載の方法。 - アプリケーションのオリジナルのソースコードのための物理保護キャッシュと、
前記オリジナルのソースコードの実行中にホットコードエントリポイントを検出したことに応じて、協働コードを実行する第1のプロセッサコア及び第2のプロセッサコアと、
ハードウェアラッパーと、
を備え、
前記協働コードは利用可能なエントリポイントを伴う前記オリジナルのソースコードのスレッド化されたバージョンであり、
前記第1のプロセッサコアは、一定量の命令についての情報を収集し、前記第2のプロセッサコアは、収集した前記情報に基づいて前記オリジナルのソースコードのホット領域を検出し、前記情報が収集された前記ソースコードから前記協働コードを生成し、前記ホット領域は、前記コードの動的実行部分に対応するコードの部分であり、
前記ハードウェアラッパーは、前記第1のプロセッサコア及び前記第2のプロセッサコアにより実行されるメモリのロード及びストアをバッファし、バッファされた前記メモリのロード及びストアに対し、ホットコードエントリキャッシュを用いて違反の可能性がないかをチェックし、更に、メモリオーダリングを維持しながら先のプロセスを提供するためにアトミックに前記ロード及び前記ストアの処理をコミットし、
前記ホット領域は、ハードウェアテーブルを用いてアクセスされる頻度に基づいてホット領域を検出することで検知される、
装置。 - 前記ロード及び前記ストアのコミットに利用される中間レベルキャッシュを更に備える、
請求項9に記載の装置。 - 最終レベルキャッシュを更に備える、
請求項9又は10に記載の装置。 - 前記ハードウェアラッパーは、アボートに応じてバッファされた前記メモリのロード及びストアを破棄する、
請求項9から11のいずれか1項に記載の装置。 - 前記アボートは、異なるスレッドの2つのストアが同じスパンのメモリの同じアドレスに書き込みをするときに生じるストア−ストア違反に応じて検出される、
請求項12に記載の装置。 - 前記アボートは、異なるスレッドのストア及びロードが同じスパンのメモリの同じアドレスに書き込みをするときに生じるロード−ストア違反に応じて検出される、
請求項12に記載の装置。 - 前記アボートに応じて、前記第1のプロセッサコアは、最後のコミットポイントにロールバックする、
請求項12に記載の装置。 - 前記一定量の命令についての情報は、ロード、ストア、及び分岐に関する情報である請求項9から15のいずれか1項に記載の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/978,557 US9672019B2 (en) | 2008-11-24 | 2010-12-25 | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US12/978,557 | 2010-12-25 | ||
PCT/US2011/063466 WO2012087561A2 (en) | 2010-12-25 | 2011-12-06 | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014500562A JP2014500562A (ja) | 2014-01-09 |
JP5816298B2 true JP5816298B2 (ja) | 2015-11-18 |
Family
ID=46314724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013546184A Expired - Fee Related JP5816298B2 (ja) | 2010-12-25 | 2011-12-06 | 自動的にプログラムを複数の並列スレッドに分解するハードウェア及びソフトウェアシステム用のシステム、装置、及び方法 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9672019B2 (ja) |
JP (1) | JP5816298B2 (ja) |
CN (1) | CN103282877B (ja) |
DE (1) | DE112011104596T5 (ja) |
GB (1) | GB2499762B (ja) |
TW (1) | TWI470425B (ja) |
WO (1) | WO2012087561A2 (ja) |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10621092B2 (en) | 2008-11-24 | 2020-04-14 | Intel Corporation | Merging level cache and data cache units having indicator bits related to speculative execution |
US9672019B2 (en) | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US9189233B2 (en) | 2008-11-24 | 2015-11-17 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
KR20120058455A (ko) * | 2009-04-28 | 2012-06-07 | 인터내셔널 비지네스 머신즈 코포레이션 | 멀티 스레드 상에서 동작하는 프로그램의 프로그램 코드를 록 충돌이 적은 프로그램 코드로 변환하기 위한 방법, 및 그 컴퓨터 프로그램 및 컴퓨터 시스템 |
US9013991B2 (en) * | 2009-12-21 | 2015-04-21 | Empire Technology Development Llc | Multicore processor including two or more collision domain networks |
US8589895B2 (en) * | 2010-01-13 | 2013-11-19 | International Business Machines Corporation | Architectural support for automated assertion checking |
US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
US10229139B2 (en) | 2011-08-02 | 2019-03-12 | Cavium, Llc | Incremental update heuristics |
WO2013048468A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
US8745607B2 (en) * | 2011-11-11 | 2014-06-03 | International Business Machines Corporation | Reducing branch misprediction impact in nested loop code |
US10387324B2 (en) * | 2011-12-08 | 2019-08-20 | Intel Corporation | Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution |
WO2014003974A1 (en) * | 2012-06-26 | 2014-01-03 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US9032381B2 (en) | 2012-06-29 | 2015-05-12 | Intel Corporation | State recovery methods and apparatus for computing platforms |
US9760549B2 (en) * | 2012-07-18 | 2017-09-12 | Software Ag Usa, Inc. | Systems and/or methods for performing atomic updates on large XML information sets |
US9922089B2 (en) | 2012-07-18 | 2018-03-20 | Software Ag Usa, Inc. | Systems and/or methods for caching XML information sets with delayed node instantiation |
US10515141B2 (en) | 2012-07-18 | 2019-12-24 | Software Ag Usa, Inc. | Systems and/or methods for delayed encoding of XML information sets |
WO2014031540A1 (en) * | 2012-08-20 | 2014-02-27 | Cameron Donald Kevin | Processing resource allocation |
US9063721B2 (en) | 2012-09-14 | 2015-06-23 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9069782B2 (en) | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
US9710275B2 (en) * | 2012-11-05 | 2017-07-18 | Nvidia Corporation | System and method for allocating memory of differing properties to shared data objects |
US9442852B2 (en) * | 2012-11-27 | 2016-09-13 | International Business Machines Corporation | Programmable coherent proxy for attached processor |
US10558437B1 (en) * | 2013-01-22 | 2020-02-11 | Altera Corporation | Method and apparatus for performing profile guided optimization for high-level synthesis |
TWI507991B (zh) * | 2013-02-27 | 2015-11-11 | Rdc Semiconductor Co Ltd | 多核心處理器及其相關控制方法與電腦系統 |
US9116816B2 (en) | 2013-03-05 | 2015-08-25 | International Business Machines Corporation | Prefetching for a parent core in a multi-core chip |
US9135180B2 (en) | 2013-03-05 | 2015-09-15 | International Business Machines Corporation | Prefetching for multiple parent cores in a multi-core chip |
US9141550B2 (en) | 2013-03-05 | 2015-09-22 | International Business Machines Corporation | Specific prefetch algorithm for a chip having a parent core and a scout core |
US9792120B2 (en) | 2013-03-05 | 2017-10-17 | International Business Machines Corporation | Anticipated prefetching for a parent core in a multi-core chip |
US9405551B2 (en) | 2013-03-12 | 2016-08-02 | Intel Corporation | Creating an isolated execution environment in a co-designed processor |
US10083200B2 (en) | 2013-03-14 | 2018-09-25 | Cavium, Inc. | Batch incremental update |
US9582256B2 (en) * | 2013-03-14 | 2017-02-28 | Sas Institute Inc. | Automated cooperative concurrency with minimal syntax |
US9448799B2 (en) | 2013-03-14 | 2016-09-20 | Samsung Electronics Co., Ltd. | Reorder-buffer-based dynamic checkpointing for rename table rebuilding |
US9880842B2 (en) | 2013-03-15 | 2018-01-30 | Intel Corporation | Using control flow data structures to direct and track instruction execution |
US9195939B1 (en) | 2013-03-15 | 2015-11-24 | Cavium, Inc. | Scope in decision trees |
US9595003B1 (en) | 2013-03-15 | 2017-03-14 | Cavium, Inc. | Compiler with mask nodes |
US10229144B2 (en) | 2013-03-15 | 2019-03-12 | Cavium, Llc | NSP manager |
US9891936B2 (en) | 2013-09-27 | 2018-02-13 | Intel Corporation | Method and apparatus for page-level monitoring |
GB2524063B (en) | 2014-03-13 | 2020-07-01 | Advanced Risc Mach Ltd | Data processing apparatus for executing an access instruction for N threads |
US9569613B2 (en) * | 2014-12-23 | 2017-02-14 | Intel Corporation | Techniques for enforcing control flow integrity using binary translation |
GB2536205A (en) * | 2015-03-03 | 2016-09-14 | Advanced Risc Mach Ltd | Cache maintenance instruction |
US10402199B2 (en) | 2015-10-22 | 2019-09-03 | Texas Instruments Incorporated | Conditional execution specification of instructions using conditional extension slots in the same execute packet in a VLIW processor |
US10108448B2 (en) * | 2015-10-27 | 2018-10-23 | International Business Machines Corporation | Dynamic SMT |
US10108530B2 (en) * | 2016-02-24 | 2018-10-23 | Stmicroelectronics (Rousset) Sas | Method and tool for generating a program code configured to perform control flow checking on another program code containing instructions for indirect branching |
US10120686B2 (en) * | 2016-06-07 | 2018-11-06 | Intel Corporation | Eliminating redundant store instructions from execution while maintaining total store order |
US10078505B2 (en) | 2016-07-20 | 2018-09-18 | International Business Machines Corporation | Partial connection of iterations during loop unrolling |
US10540178B2 (en) * | 2016-09-14 | 2020-01-21 | Intel Corporation | Eliminating redundant stores using a protection designator and a clear designator |
CN107977305B (zh) * | 2016-10-24 | 2019-05-03 | 百度在线网络技术(北京)有限公司 | 用于检测应用的方法和装置 |
WO2018094087A1 (en) * | 2016-11-17 | 2018-05-24 | The Mathworks, Inc. | Systems and methods for generating code for parallel processing units |
US10908998B2 (en) * | 2017-08-08 | 2021-02-02 | Toshiba Memory Corporation | Managing function level reset in an IO virtualization-enabled storage device |
US10503626B2 (en) | 2018-01-29 | 2019-12-10 | Oracle International Corporation | Hybrid instrumentation framework for multicore low power processors |
US11061681B2 (en) | 2019-07-25 | 2021-07-13 | International Business Machines Corporation | Instruction streaming using copy select vector |
US11194575B2 (en) * | 2019-11-07 | 2021-12-07 | International Business Machines Corporation | Instruction address based data prediction and prefetching |
US11250128B2 (en) * | 2020-02-18 | 2022-02-15 | Bank Of America Corporation | System and method for detecting source code anomalies |
US11360772B2 (en) * | 2020-03-31 | 2022-06-14 | International Business Machines Corporation | Instruction sequence merging and splitting for optimized accelerator implementation |
US11157388B1 (en) * | 2020-07-10 | 2021-10-26 | Microsoft Technology Licensing, Llc | Trace identification based on wait chain coverage analysis |
US11714615B2 (en) | 2020-09-18 | 2023-08-01 | International Business Machines Corporation | Application migration using cost-aware code dependency graph |
US11604642B2 (en) | 2021-01-04 | 2023-03-14 | Bank Of America Corporation | System for computer program code issue detection and resolution using an automated progressive code quality engine |
CN114443139B (zh) * | 2022-01-27 | 2023-06-30 | 上海壁仞智能科技有限公司 | 将顺序代码转换为并行代码的方法、系统、设备和介质 |
Family Cites Families (180)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3601341B2 (ja) * | 1999-02-09 | 2004-12-15 | 株式会社日立製作所 | 並列プログラム生成方法 |
JPS63106836A (ja) | 1986-10-24 | 1988-05-11 | Hitachi Ltd | 異ア−キテクチヤ・エミユレ−シヨン方式 |
CA1325288C (en) | 1989-02-03 | 1993-12-14 | Ricky C. Hetherington | Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system |
JPH0581070A (ja) | 1990-12-10 | 1993-04-02 | Omron Corp | プログラマブルコントローラ、およびプログラマブルコントローラにおけるユーザプログラム実行方法 |
US5345576A (en) | 1991-12-31 | 1994-09-06 | Intel Corporation | Microprocessor simultaneously issues an access to an external cache over an external cache bus and to an internal cache, cancels the external cache access on an internal cache hit, and reissues the access over a main memory bus on an external cache miss |
WO1994003860A1 (en) * | 1992-08-07 | 1994-02-17 | Thinking Machines Corporation | Massively parallel computer including auxiliary vector processor |
JP3516963B2 (ja) | 1993-03-12 | 2004-04-05 | 株式会社東芝 | メモリアクセス制御装置 |
US5524208A (en) | 1994-06-09 | 1996-06-04 | Dell Usa, L.P. | Method and apparatus for performing cache snoop testing using DMA cycles in a computer system |
JPH08123697A (ja) | 1994-10-24 | 1996-05-17 | Nec Corp | エミュレーション高速化方式 |
JP2669603B2 (ja) | 1994-12-15 | 1997-10-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンパイラにおけるコード生成方法及びコンパイラ |
US5724565A (en) | 1995-02-03 | 1998-03-03 | International Business Machines Corporation | Method and system for processing first and second sets of instructions by first and second types of processing systems |
US6077315A (en) * | 1995-04-17 | 2000-06-20 | Ricoh Company Ltd. | Compiling system and method for partially reconfigurable computing |
US5895503A (en) | 1995-06-02 | 1999-04-20 | Belgard; Richard A. | Address translation method and mechanism using physical address information including during a segmentation process |
JPH09160774A (ja) | 1995-12-08 | 1997-06-20 | Hitachi Ltd | 命令拡張を容易にした情報処理装置 |
US5826089A (en) | 1996-01-04 | 1998-10-20 | Advanced Micro Devices, Inc. | Instruction translation unit configured to translate from a first instruction set to a second instruction set |
JP3634379B2 (ja) | 1996-01-24 | 2005-03-30 | サン・マイクロシステムズ・インコーポレイテッド | スタックキャッシングのための方法及び装置 |
US6711667B1 (en) * | 1996-06-28 | 2004-03-23 | Legerity, Inc. | Microprocessor configured to translate instructions from one instruction set to another, and to store the translated instructions |
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
US6031992A (en) | 1996-07-05 | 2000-02-29 | Transmeta Corporation | Combining hardware and software to provide an improved microprocessor |
JPH1097431A (ja) | 1996-07-31 | 1998-04-14 | Fujitsu Ltd | シミュレーション装置及びシミュレーション方法並びにコンピュータ読取可能な記録媒体 |
US5926832A (en) | 1996-09-26 | 1999-07-20 | Transmeta Corporation | Method and apparatus for aliasing memory data in an advanced microprocessor |
US5860107A (en) * | 1996-10-07 | 1999-01-12 | International Business Machines Corporation | Processor and method for store gathering through merged store operations |
JP3139392B2 (ja) | 1996-10-11 | 2001-02-26 | 日本電気株式会社 | 並列処理システム |
US6175906B1 (en) | 1996-12-06 | 2001-01-16 | Advanced Micro Devices, Inc. | Mechanism for fast revalidation of virtual tags |
US5835775A (en) * | 1996-12-12 | 1998-11-10 | Ncr Corporation | Method and apparatus for executing a family generic processor specific application |
US5890008A (en) * | 1997-06-25 | 1999-03-30 | Sun Microsystems, Inc. | Method for dynamically reconfiguring a processor |
US6157988A (en) | 1997-08-01 | 2000-12-05 | Micron Technology, Inc. | Method and apparatus for high performance branching in pipelined microsystems |
US5999734A (en) * | 1997-10-21 | 1999-12-07 | Ftl Systems, Inc. | Compiler-oriented apparatus for parallel compilation, simulation and execution of computer programs and hardware models |
DE69737750T2 (de) * | 1997-12-17 | 2008-03-06 | Hewlett-Packard Development Co., L.P., Houston | Erst- und Zweitprozessoren verwendetes Verfahren |
US6631514B1 (en) | 1998-01-06 | 2003-10-07 | Hewlett-Packard Development, L.P. | Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations |
US6480952B2 (en) | 1998-05-26 | 2002-11-12 | Advanced Micro Devices, Inc. | Emulation coprocessor |
US6289506B1 (en) | 1998-06-30 | 2001-09-11 | Intel Corporation | Method for optimizing Java performance using precompiled code |
US6327704B1 (en) | 1998-08-06 | 2001-12-04 | Hewlett-Packard Company | System, method, and product for multi-branch backpatching in a dynamic translator |
US7516453B1 (en) | 1998-10-26 | 2009-04-07 | Vmware, Inc. | Binary translator with precise exception synchronization mechanism |
US7257814B1 (en) | 1998-12-16 | 2007-08-14 | Mips Technologies, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
JP2002536712A (ja) | 1999-01-28 | 2002-10-29 | エーティーアイ インターナショナル エスアールエル | 第2のアーキテクチャのコンピュータにおける第1のコンピュータアーキテクチャ用プログラムの実行 |
US8127121B2 (en) | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US8065504B2 (en) * | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
US7941647B2 (en) | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US6314491B1 (en) | 1999-03-01 | 2001-11-06 | International Business Machines Corporation | Peer-to-peer cache moves in a multiprocessor data processing system |
US7089404B1 (en) * | 1999-06-14 | 2006-08-08 | Transmeta Corporation | Method and apparatus for enhancing scheduling in an advanced microprocessor |
US6438747B1 (en) | 1999-08-20 | 2002-08-20 | Hewlett-Packard Company | Programmatic iteration scheduling for parallel processors |
US6415379B1 (en) | 1999-10-13 | 2002-07-02 | Transmeta Corporation | Method and apparatus for maintaining context while executing translated instructions |
US7590644B2 (en) | 1999-12-21 | 2009-09-15 | International Business Machine Corporation | Method and apparatus of streaming data transformation using code generator and translator |
US6618801B1 (en) | 2000-02-02 | 2003-09-09 | Hewlett-Packard Development Company, L.P. | Method and apparatus for implementing two architectures in a chip using bundles that contain microinstructions and template information |
US6542862B1 (en) | 2000-02-18 | 2003-04-01 | Hewlett-Packard Development Company, L.P. | Determining register dependency in multiple architecture systems |
US6678817B1 (en) | 2000-02-22 | 2004-01-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for fetching instructions from the memory subsystem of a mixed architecture processor into a hardware emulation engine |
US6615340B1 (en) | 2000-03-22 | 2003-09-02 | Wilmot, Ii Richard Byron | Extended operand management indicator structure and method |
JP3641997B2 (ja) * | 2000-03-30 | 2005-04-27 | 日本電気株式会社 | プログラム変換装置及び方法並びに記録媒体 |
US6615300B1 (en) | 2000-06-19 | 2003-09-02 | Transmeta Corporation | Fast look-up of indirect branch destination in a dynamic translation system |
EP1182567B1 (en) | 2000-08-21 | 2012-03-07 | Texas Instruments France | Software controlled cache configuration |
US6884171B2 (en) | 2000-09-18 | 2005-04-26 | Nintendo Co., Ltd. | Video game distribution network |
GB0028079D0 (en) * | 2000-11-17 | 2001-01-03 | Imperial College | System and method |
US7350200B2 (en) | 2001-03-29 | 2008-03-25 | Intel Corporation | Method and system of controlling dynamically compiled native code size |
US7178137B1 (en) * | 2001-04-05 | 2007-02-13 | Network Appliance, Inc. | Automatic verification of scheduling domain consistency |
US20020156977A1 (en) | 2001-04-23 | 2002-10-24 | Derrick John E. | Virtual caching of regenerable data |
US6718839B2 (en) | 2001-06-26 | 2004-04-13 | Sun Microsystems, Inc. | Method and apparatus for facilitating speculative loads in a multiprocessor system |
US7752423B2 (en) | 2001-06-28 | 2010-07-06 | Intel Corporation | Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor |
JP3661614B2 (ja) | 2001-07-12 | 2005-06-15 | 日本電気株式会社 | キャッシュメモリ制御方法及びマルチプロセッサシステム |
JP3632635B2 (ja) | 2001-07-18 | 2005-03-23 | 日本電気株式会社 | マルチスレッド実行方法及び並列プロセッサシステム |
US6907519B2 (en) | 2001-11-29 | 2005-06-14 | Hewlett-Packard Development Company, L.P. | Systems and methods for integrating emulated and native code |
US20030172253A1 (en) | 2002-03-06 | 2003-09-11 | Sun Microsystems, Inc. | Fast instruction dependency multiplexer |
US7171546B2 (en) | 2002-05-23 | 2007-01-30 | Adams Phillip M | CPU life-extension apparatus and method |
US7100060B2 (en) | 2002-06-26 | 2006-08-29 | Intel Corporation | Techniques for utilization of asymmetric secondary processing resources |
US6976131B2 (en) | 2002-08-23 | 2005-12-13 | Intel Corporation | Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system |
GB2393274B (en) | 2002-09-20 | 2006-03-15 | Advanced Risc Mach Ltd | Data processing system having an external instruction set and an internal instruction set |
US7765532B2 (en) * | 2002-10-22 | 2010-07-27 | Oracle America, Inc. | Inducing concurrency in software code |
US7346902B2 (en) * | 2002-10-22 | 2008-03-18 | Sun Microsystems, Inc. | System and method for block-based concurrentization of software code |
US7603664B2 (en) * | 2002-10-22 | 2009-10-13 | Sun Microsystems, Inc. | System and method for marking software code |
US7269825B1 (en) | 2002-12-27 | 2007-09-11 | Unisys Corporation | Method and system for relative address translation |
WO2004064075A1 (de) * | 2003-01-15 | 2004-07-29 | Continental Teves Ag & Co. Ohg | Verfahren zur erkennung und/oder korrektur von speicherzugriffsfehlern und elektronische schaltungsanordnung zur durchführung des verfahrens |
US7216202B1 (en) | 2003-02-25 | 2007-05-08 | Sun Microsystems, Inc. | Method and apparatus for supporting one or more servers on a single semiconductor chip |
US7373640B1 (en) * | 2003-07-31 | 2008-05-13 | Network Appliance, Inc. | Technique for dynamically restricting thread concurrency without rewriting thread code |
US7290253B1 (en) | 2003-09-30 | 2007-10-30 | Vmware, Inc. | Prediction mechanism for subroutine returns in binary translation sub-systems of computers |
JP3901180B2 (ja) * | 2004-06-30 | 2007-04-04 | 日本電気株式会社 | プログラム並列化装置及びその方法並びにプログラム |
JP3901181B2 (ja) * | 2004-06-30 | 2007-04-04 | 日本電気株式会社 | プログラム並列化装置及びその方法並びにプログラム |
US7376800B1 (en) | 2004-09-14 | 2008-05-20 | Azul Systems, Inc. | Speculative multiaddress atomicity |
US7458065B2 (en) | 2004-09-21 | 2008-11-25 | Intel Corporation | Selection of spawning pairs for a speculative multithreaded processor |
US20090217020A1 (en) * | 2004-11-22 | 2009-08-27 | Yourst Matt T | Commit Groups for Strand-Based Computing |
US7466316B1 (en) * | 2004-12-14 | 2008-12-16 | Nvidia Corporation | Apparatus, system, and method for distributing work to integrated heterogeneous processors |
US7446773B1 (en) * | 2004-12-14 | 2008-11-04 | Nvidia Corporation | Apparatus, system, and method for integrated heterogeneous processors with integrated scheduler |
US20060136878A1 (en) * | 2004-12-17 | 2006-06-22 | Arun Raghunath | Method and apparatus for enabling compiler and run-time optimizations for data flow applications in multi-core architectures |
US8255882B2 (en) | 2004-12-30 | 2012-08-28 | Intel Corporation | Selecting formats for multi-format instructions in binary translation of code from a hybrid source instruction set architecture to a unitary target instruction set architecture |
US7810083B2 (en) | 2004-12-30 | 2010-10-05 | Intel Corporation | Mechanism to emulate user-level multithreading on an OS-sequestered sequencer |
US7818724B2 (en) | 2005-02-08 | 2010-10-19 | Sony Computer Entertainment Inc. | Methods and apparatus for instruction set emulation |
US7673345B2 (en) | 2005-03-31 | 2010-03-02 | Intel Corporation | Providing extended memory protection |
US7734895B1 (en) * | 2005-04-28 | 2010-06-08 | Massachusetts Institute Of Technology | Configuring sets of processor cores for processing instructions |
US7882339B2 (en) | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
US7363471B2 (en) | 2005-06-27 | 2008-04-22 | Intel Corporation | Apparatus, system, and method of dynamic binary translation supporting a denormal input handling mechanism |
JP3938387B2 (ja) * | 2005-08-10 | 2007-06-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラ、制御方法、およびコンパイラ・プログラム |
US7774558B2 (en) | 2005-08-29 | 2010-08-10 | The Invention Science Fund I, Inc | Multiprocessor resource optimization |
US7757221B2 (en) | 2005-09-30 | 2010-07-13 | Intel Corporation | Apparatus and method for dynamic binary translator to support precise exceptions with minimal optimization constraints |
US7757222B2 (en) | 2005-09-30 | 2010-07-13 | Intel Corporation | Generating efficient parallel code using partitioning, coalescing, and degenerative loop and guard removal |
EP1783604A3 (en) * | 2005-11-07 | 2007-10-03 | Slawomir Adam Janczewski | Object-oriented, parallel language, method of programming and multi-processor computer |
GB0524720D0 (en) | 2005-12-05 | 2006-01-11 | Imec Inter Uni Micro Electr | Ultra low power ASIP architecture II |
US8387034B2 (en) * | 2005-12-21 | 2013-02-26 | Management Services Group, Inc. | System and method for the distribution of a program among cooperating processing elements |
US7765536B2 (en) * | 2005-12-21 | 2010-07-27 | Management Services Group, Inc. | System and method for the distribution of a program among cooperating processors |
US8108863B2 (en) * | 2005-12-30 | 2012-01-31 | Intel Corporation | Load balancing for multi-threaded applications via asymmetric power throttling |
US7506217B2 (en) | 2005-12-30 | 2009-03-17 | Intel Corporation | Apparatus and method for software-based control flow checking for soft error detection to improve microprocessor reliability |
US9038040B2 (en) * | 2006-01-25 | 2015-05-19 | International Business Machines Corporation | Method for partitioning programs between a general purpose core and one or more accelerators |
US20070226696A1 (en) * | 2006-02-03 | 2007-09-27 | Dell Products L.P. | System and method for the execution of multithreaded software applications |
US20070234315A1 (en) * | 2006-02-09 | 2007-10-04 | International Business Machines Corporation | Compiling an application by cluster members |
US7404041B2 (en) | 2006-02-10 | 2008-07-22 | International Business Machines Corporation | Low complexity speculative multithreading system based on unmodified microprocessor core |
US20090031082A1 (en) | 2006-03-06 | 2009-01-29 | Simon Andrew Ford | Accessing a Cache in a Data Processing Apparatus |
CA2638453C (en) | 2006-03-14 | 2010-11-09 | Transgaming Technologies Inc. | General purpose software parallel task engine |
US7640399B1 (en) | 2006-05-10 | 2009-12-29 | Advanced Micro Devices, Inc. | Mostly exclusive shared cache management policies |
JP4208895B2 (ja) | 2006-05-30 | 2009-01-14 | 株式会社東芝 | キャッシュメモリ装置および処理方法 |
US8453147B2 (en) | 2006-06-05 | 2013-05-28 | Cisco Technology, Inc. | Techniques for reducing thread overhead for systems with multiple multi-threaded processors |
JP4784827B2 (ja) * | 2006-06-06 | 2011-10-05 | 学校法人早稲田大学 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
US7814486B2 (en) * | 2006-06-20 | 2010-10-12 | Google Inc. | Multi-thread runtime system |
US8136102B2 (en) * | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for compiling an application for a parallel-processing computer system |
US8589666B2 (en) | 2006-07-10 | 2013-11-19 | Src Computers, Inc. | Elimination of stream consumer loop overshoot effects |
US8463589B2 (en) | 2006-07-28 | 2013-06-11 | Synopsys, Inc. | Modifying a virtual processor model for hardware/software simulation |
US20080263324A1 (en) * | 2006-08-10 | 2008-10-23 | Sehat Sutardja | Dynamic core switching |
US8505002B2 (en) * | 2006-09-29 | 2013-08-06 | Arm Limited | Translation of SIMD instructions in a data processing system |
US8156480B2 (en) * | 2006-09-29 | 2012-04-10 | Intel Corporation | Methods and apparatus to form a resilient objective instruction construct |
US7937567B1 (en) * | 2006-11-01 | 2011-05-03 | Nvidia Corporation | Methods for scalably exploiting parallelism in a parallel processing system |
US7752613B2 (en) | 2006-12-05 | 2010-07-06 | Intel Corporation | Disambiguation in dynamic binary translation |
US20080141268A1 (en) * | 2006-12-12 | 2008-06-12 | Tirumalai Partha P | Utility function execution using scout threads |
US20080163183A1 (en) * | 2006-12-29 | 2008-07-03 | Zhiyuan Li | Methods and apparatus to provide parameterized offloading on multiprocessor architectures |
US8181168B1 (en) * | 2007-02-07 | 2012-05-15 | Tilera Corporation | Memory access assignment for parallel processing architectures |
US8010954B2 (en) * | 2007-02-14 | 2011-08-30 | The Mathworks, Inc. | Parallel programming interface to dynamically allocate program portions |
BRPI0700691A (pt) | 2007-02-15 | 2008-09-30 | Edson Roberto Minatel | dispositivo opto-eletrÈnico para auxìlio e controle de processos industriais baseados em montagens manuais através de visão computacional, realidade virtual aumentada, computação gráfica e análise de movimentos |
US8141048B2 (en) | 2007-02-22 | 2012-03-20 | International Business Machines Corporation | Sequential encoding for relational analysis (SERA) of a software model |
US20080244538A1 (en) | 2007-03-26 | 2008-10-02 | Nair Sreekumar R | Multi-core processor virtualization based on dynamic binary translation |
CN101295265A (zh) | 2007-04-25 | 2008-10-29 | 国际商业机器公司 | 全系统isa仿真系统及其识别进程的方法 |
US8214808B2 (en) * | 2007-05-07 | 2012-07-03 | International Business Machines Corporation | System and method for speculative thread assist in a heterogeneous processing environment |
WO2008155825A1 (ja) | 2007-06-19 | 2008-12-24 | Fujitsu Limited | 演算処理装置および演算処理方法 |
US7849290B2 (en) | 2007-07-09 | 2010-12-07 | Oracle America, Inc. | Store queue architecture for a processor that supports speculative execution |
US8010763B2 (en) | 2007-08-02 | 2011-08-30 | International Business Machines Corporation | Hypervisor-enforced isolation of entities within a single logical partition's virtual address space |
US8127283B2 (en) * | 2007-09-05 | 2012-02-28 | Intel Corporation | Enabling graphical notation for parallel programming |
US8789031B2 (en) * | 2007-09-18 | 2014-07-22 | Intel Corporation | Software constructed strands for execution on a multi-core architecture |
EP2203814A4 (en) * | 2007-09-19 | 2012-11-07 | Kpit Cummins Infosystems Ltd | MECHANISM FOR RELEASING PLUG AND PLAY HARDWARE COMPONENTS FOR SEMI-AUTOMATIC SOFTWARE MIGRATION |
JP5067425B2 (ja) | 2007-09-21 | 2012-11-07 | 富士通株式会社 | 翻訳装置と翻訳方法および翻訳プログラムとプロセッサコアの制御方法およびプロセッサ |
US7962724B1 (en) | 2007-09-28 | 2011-06-14 | Oracle America, Inc. | Branch loop performance enhancement |
US20090172353A1 (en) * | 2007-12-28 | 2009-07-02 | Optillel Solutions | System and method for architecture-adaptable automatic parallelization of computing code |
US8296749B2 (en) | 2007-12-28 | 2012-10-23 | Intel Corporation | Program translation and transactional memory formation |
US8146106B2 (en) | 2007-12-31 | 2012-03-27 | Intel Corporation | On-demand emulation via user-level exception handling |
US20110067015A1 (en) * | 2008-02-15 | 2011-03-17 | Masamichi Takagi | Program parallelization apparatus, program parallelization method, and program parallelization program |
US8615647B2 (en) | 2008-02-29 | 2013-12-24 | Intel Corporation | Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state |
JP4687729B2 (ja) | 2008-03-04 | 2011-05-25 | 日本電気株式会社 | キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法 |
JP2010039536A (ja) * | 2008-07-31 | 2010-02-18 | Panasonic Corp | プログラム変換装置、プログラム変換方法およびプログラム変換プログラム |
CN102165428B (zh) * | 2008-08-13 | 2015-05-20 | 高通股份有限公司 | 软件应用性能增强 |
US8806145B2 (en) | 2008-11-07 | 2014-08-12 | Oracle America, Inc. | Methods and apparatuses for improving speculation success in processors |
US9672019B2 (en) * | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
BRPI0920541A2 (pt) | 2008-11-24 | 2018-11-06 | Intel Corp | sistemas, métodos e aparelho para decompor um programa sequencial em multicadeias, executar as ditas cadeias, e reconstruir a execução sequencial |
US20100274972A1 (en) | 2008-11-24 | 2010-10-28 | Boris Babayan | Systems, methods, and apparatuses for parallel computing |
US20100146209A1 (en) | 2008-12-05 | 2010-06-10 | Intellectual Ventures Management, Llc | Method and apparatus for combining independent data caches |
US9940138B2 (en) | 2009-04-08 | 2018-04-10 | Intel Corporation | Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations |
US9766911B2 (en) | 2009-04-24 | 2017-09-19 | Oracle America, Inc. | Support for a non-native application |
US9354944B2 (en) | 2009-07-27 | 2016-05-31 | Advanced Micro Devices, Inc. | Mapping processing logic having data-parallel threads across processors |
US8392693B2 (en) | 2009-08-28 | 2013-03-05 | Via Technologies, Inc. | Fast REP STOS using grabline operations |
US8713294B2 (en) | 2009-11-13 | 2014-04-29 | International Business Machines Corporation | Heap/stack guard pages using a wakeup unit |
US8316193B2 (en) | 2009-12-02 | 2012-11-20 | Vmware, Inc. | Optimizing segment access in binary translation |
US8893280B2 (en) | 2009-12-15 | 2014-11-18 | Intel Corporation | Sensitive data tracking using dynamic taint analysis |
US8464035B2 (en) | 2009-12-18 | 2013-06-11 | Intel Corporation | Instruction for enabling a processor wait state |
US8996845B2 (en) | 2009-12-22 | 2015-03-31 | Intel Corporation | Vector compare-and-exchange operation |
US8700943B2 (en) | 2009-12-22 | 2014-04-15 | Intel Corporation | Controlling time stamp counter (TSC) offsets for mulitple cores and threads |
US8775153B2 (en) | 2009-12-23 | 2014-07-08 | Intel Corporation | Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment |
US9501644B2 (en) | 2010-03-15 | 2016-11-22 | F-Secure Oyj | Malware protection |
US8479176B2 (en) | 2010-06-14 | 2013-07-02 | Intel Corporation | Register mapping techniques for efficient dynamic binary translation |
US8521944B2 (en) | 2010-08-31 | 2013-08-27 | Intel Corporation | Performing memory accesses using memory context information |
US8307169B2 (en) | 2011-03-10 | 2012-11-06 | Safenet, Inc. | Protecting guest virtual machine memory |
JP5614348B2 (ja) | 2011-03-18 | 2014-10-29 | 富士通株式会社 | 命令処理方法、命令処理装置、及び命令処理プログラム |
WO2013048468A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
WO2013048460A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Instruction and logic to control transfer in a partial binary translation system |
US8984478B2 (en) | 2011-10-03 | 2015-03-17 | Cisco Technology, Inc. | Reorganization of virtualized computer programs |
US9348594B2 (en) | 2011-12-29 | 2016-05-24 | Intel Corporation | Core switching acceleration in asymmetric multiprocessor system |
US8893094B2 (en) | 2011-12-30 | 2014-11-18 | Intel Corporation | Hardware compilation and/or translation with fault detection and roll back functionality |
US8826257B2 (en) | 2012-03-30 | 2014-09-02 | Intel Corporation | Memory disambiguation hardware to support software binary translation |
CN109032609A (zh) | 2012-03-30 | 2018-12-18 | 英特尔公司 | 用于实现页级自动二进制转换的硬件剖析机制 |
US20130290693A1 (en) | 2012-04-27 | 2013-10-31 | Esencia Technologies Inc. | Method and Apparatus for the Automatic Generation of RTL from an Untimed C or C++ Description as a Fine-Grained Specialization of a Micro-processor Soft Core |
US9329872B2 (en) | 2012-04-27 | 2016-05-03 | Esencia Technologies Inc. | Method and apparatus for the definition and generation of configurable, high performance low-power embedded microprocessor cores |
US9141361B2 (en) | 2012-09-30 | 2015-09-22 | Intel Corporation | Method and apparatus for performance efficient ISA virtualization using dynamic partial binary translation |
US9411739B2 (en) | 2012-11-30 | 2016-08-09 | Intel Corporation | System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators |
CN104956322B (zh) | 2013-03-05 | 2019-03-01 | 英特尔公司 | 分析向量化的潜在效益 |
US9405551B2 (en) | 2013-03-12 | 2016-08-02 | Intel Corporation | Creating an isolated execution environment in a co-designed processor |
US20170192788A1 (en) | 2016-01-05 | 2017-07-06 | Intel Corporation | Binary translation support using processor instruction prefixes |
US10761849B2 (en) | 2016-09-22 | 2020-09-01 | Intel Corporation | Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction |
US10209764B2 (en) | 2016-12-20 | 2019-02-19 | Intel Corporation | Apparatus and method for improving power-performance using a software analysis routine |
-
2010
- 2010-12-25 US US12/978,557 patent/US9672019B2/en not_active Expired - Fee Related
-
2011
- 2011-12-06 GB GB1310833.7A patent/GB2499762B/en not_active Expired - Fee Related
- 2011-12-06 CN CN201180062500.2A patent/CN103282877B/zh not_active Expired - Fee Related
- 2011-12-06 WO PCT/US2011/063466 patent/WO2012087561A2/en active Application Filing
- 2011-12-06 JP JP2013546184A patent/JP5816298B2/ja not_active Expired - Fee Related
- 2011-12-06 DE DE112011104596.4T patent/DE112011104596T5/de not_active Withdrawn
- 2011-12-08 TW TW100145350A patent/TWI470425B/zh not_active IP Right Cessation
-
2017
- 2017-06-06 US US15/615,798 patent/US10725755B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
GB2499762A (en) | 2013-08-28 |
GB201310833D0 (en) | 2013-07-31 |
GB2499762B (en) | 2019-12-11 |
DE112011104596T5 (de) | 2014-01-16 |
US10725755B2 (en) | 2020-07-28 |
JP2014500562A (ja) | 2014-01-09 |
CN103282877B (zh) | 2017-03-29 |
CN103282877A (zh) | 2013-09-04 |
WO2012087561A3 (en) | 2012-08-16 |
US9672019B2 (en) | 2017-06-06 |
US20180060049A1 (en) | 2018-03-01 |
TW201237619A (en) | 2012-09-16 |
US20110167416A1 (en) | 2011-07-07 |
TWI470425B (zh) | 2015-01-21 |
WO2012087561A2 (en) | 2012-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5816298B2 (ja) | 自動的にプログラムを複数の並列スレッドに分解するハードウェア及びソフトウェアシステム用のシステム、装置、及び方法 | |
US9189233B2 (en) | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads | |
Mittal | A survey of recent prefetching techniques for processor caches | |
US20100274972A1 (en) | Systems, methods, and apparatuses for parallel computing | |
JP5547208B2 (ja) | シーケンシャル・プログラムを複数スレッドに分解し、スレッドを実行し、シーケンシャルな実行を再構成するシステム、方法および装置 | |
KR101355496B1 (ko) | 복수의 병렬 클러스터들을 포함하는 계층 프로세서의스케쥴링 메카니즘 | |
KR101524446B1 (ko) | 하드웨어 제한에 기초한 조절가능한 트랜잭션 크기를 이용하여 코드를 동적으로 최적화하는 장치, 방법 및 시스템 | |
EP1668500B1 (en) | Methods and apparatuses for thread management of multi-threading | |
US10055230B2 (en) | Accurate tracking of transactional read and write sets with speculation | |
US20090217020A1 (en) | Commit Groups for Strand-Based Computing | |
KR20130064792A (ko) | 원자 영역에서 조건부 커미트를 위한 결정 메카니즘 제공 장치, 방법, 및 시스템 | |
KR101531455B1 (ko) | 하드웨어 및 소프트웨어 시스템이 자동으로 프로그램을 복수의 병렬 스레드들로 분해하는 시스템들, 장치들, 및 방법들 | |
Warg | Techniques to reduce thread-level speculation overhead | |
Tabbakh et al. | An efficient sequential consistency implementation with dynamic race detection for GPUs | |
WO2014003974A1 (en) | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads | |
Stipić et al. | TagTM-accelerating STMs with hardware tags for fast meta-data access | |
Xiang et al. | MSpec: A design pattern for concurrent data structures | |
Bell et al. | Skewed redundancy | |
Øren | Cache Behaviour in Multi-/Many-Core Environment: N-Core Configurable Cache Simulator Performance Evaluation | |
Purser | Slipstream processors | |
Mameesh et al. | Speculative-Aware Execution: A simple and efficient technique for utilizing multi-cores to improve single-thread performance | |
Moreira et al. | Profiling and Optimizing Micro-Architecture Bottlenecks on the Hardware Level | |
Stone et al. | Synchronizing store sets (SSS): Balancing the benefits and risks of inter-thread load speculation | |
Álvarez Martí | Transparent management of scratchpad memories in shared memory programming models | |
Nunez | Development and evaluation of a simultaneous multithreading processor simulator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130624 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140623 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140701 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20141001 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150113 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150319 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150512 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150601 |
|
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: 20150728 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150826 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150925 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5816298 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |