JP4987882B2 - スレッドに最適化されたマルチプロセッサアーキテクチャ - Google Patents
スレッドに最適化されたマルチプロセッサアーキテクチャ Download PDFInfo
- Publication number
- JP4987882B2 JP4987882B2 JP2008553428A JP2008553428A JP4987882B2 JP 4987882 B2 JP4987882 B2 JP 4987882B2 JP 2008553428 A JP2008553428 A JP 2008553428A JP 2008553428 A JP2008553428 A JP 2008553428A JP 4987882 B2 JP4987882 B2 JP 4987882B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- processors
- processor
- register
- accumulator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims abstract description 29
- 238000012545 processing Methods 0.000 claims abstract description 19
- 230000008569 process Effects 0.000 claims abstract description 13
- 230000006870 function Effects 0.000 description 15
- 238000013461 design Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- VLCQZHSMCYCDJL-UHFFFAOYSA-N tribenuron methyl Chemical compound COC(=O)C1=CC=CC=C1S(=O)(=O)NC(=O)N(C)C1=NC(C)=NC(OC)=N1 VLCQZHSMCYCDJL-UHFFFAOYSA-N 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 101000782621 Bacillus subtilis (strain 168) Biotin carboxylase 2 Proteins 0.000 description 1
- 101100352780 Drosophila melanogaster poe gene Proteins 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000020169 heat generation Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7842—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
- G06F15/7846—On-chip cache and off-chip main memory
-
- 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
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
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)
- Multimedia (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Image Processing (AREA)
Description
1.次の命令のフェッチング(fetching)を、現在の命令の実行とオーバーラップさせること。
2.命令のパイプライン化(pipelining)。命令パイプラインは、各命令をできるだけ多くの部分に分解し、次にシーケンシャル命令を並列実行ユニットの中にマッピングすることを試みる。理論上最高の改良は、多段階命令の非効率性、並列実行ユニットを満たされた状態に保つための十分なシーケンシャル命令を提供するための多くのソフトウェアプログラムの無能力、および、分岐、ループ、またはケース構文が実行ユニットの補充を必要とする状態に遭遇したとき、払われるかなりの時間ペナルティ(penalty)のために、めったに達成されない。
3.単一命令多重データ(Single instruction multiple data)すなわちSIMD。この種の技術は、インテルペンティアム(登録商標)3および他のプロセッサの中で実現されているように、インテルSSE命令セットの中で見つかる。この技術においては、単一の命令が複数のデータセット上で実行される。この技術は、特別なアプリケーション、例えばビデオグラフィックスレンダリングの用途にだけ役立つ。
4.ハイパーキューブ。この技術は、プロセッサおよびローカルメモリの大きな二次元アレイ(array)、時には三次元アレイを用いる。プロセッサのこれらのアレイをサポートするのに必要な通信および相互接続は、本質的に、それらを非常に専門化されたアプリケーションに限定する。
1.命令の実行は、いくつかの連続した状態として定義されることが可能でなければならない。
2.各命令は、同じ数の状態を持っていなければならない。
3.命令当たりの状態の数は、並列実行ユニットの最大数を決定する。
1.ソフトウェアプログラムは、シーケンシャルな命令だけから構成されているわけではない。様々な研究は、実行フローの変化が8〜10命令毎に起こることを示している。プログラムのフローを変化させる分岐は、パイプラインを転覆させる。パイプラインの転覆を最小限にする試みは、複雑かつそれらの緩和において不完全でありがちである。
2.全ての命令に同じ数の状態を持つことを強いることは、しばしば最小公分母(すなわち、最も遅くて最も複雑な)命令の要求を満たす実行パイプラインに導く。パイプラインのため、全命令は、それらが必要とするか否かを考えないで、同じ数の状態にされる。例えば、論理演算(例えばANDまたはOR)は、ADDより1桁速く実行されるが、両者は、しばしば、実行のために同量の時間を割り当てられる。
3.パイプラインは、複数の状態を有する複雑な命令を助長する。2状態を必要とする可能性がある命令は、通常20状態を満たすように拡張される。なぜなら、それがパイプラインの深さであるからである。(インテルペンティアム(登録商標)4は、20状態のパイプラインを用いている。)
4.各パイプラインの状態のために必要な時間は、特定の状態に対する設計マージンまたは許容誤差に加えて、論理回路および関連するトランジスタによる伝播遅延が原因であるにちがいない。
5.パイプラインレジスタおよび他のリソースのアクセスのための調停は、調停論理のトランジスタの伝播遅延により、しばしば性能を低下させる。
6.状態を追加すると、速度が上がるよりはむしろ、実際には実行が遅くなるということ以前に、一命令が分割され得る状態の数に対する上限が存在する。いくつかの研究は、ディジタルイクイップメントコーポレーションのアルファプロセッサの最近の世代のパイプラインアーキテクチャがその地点を越え、かつ実際に以前のより短いパイプラインのバージョンのプロセッサより実行が遅いことを示している。
CPU設計の再考に対する1つの考え方は、複数(N個)の単純化されたプロセッサに分割された、パイプライン化された実行ユニットについて考えることである。(レジスタおよびいくつかの他のロジックは、このような設計においては複製されることが必要かもしれない。)N個の単純化されたプロセッサの各々は、上述したパイプラインアーキテクチャに勝る以下の利点がある。
1.パイプラインによる遅れがない。分岐予測が必要ない。
2.全ての命令に最も遅い命令と同じ実行時間を割り当てられるのではなく、命令に必要なだけの時間をとることができる。
3.命令は、必要な実行状態を減らすことによって単純化され、これによりパイプラインペナルティを減らすことができる。
4.パイプラインから除去される各状態によって伝播遅延を削減することができ、
かつこの状態のために必要な設計マージンを除くことができる。
5.レジスタの調停を除くことができる。
1.最大パイプライン並列性の制限がない。
2.パイプライン型プロセッサとは異なり、複数の独立型プロセッサは、使用しないときに、電力消費を減らすために、選択的に電源を切ることができる。
並列法の多くの実施態様は、アムダールの法則の制限に屈する。並列法による加速は、課題の直列不可能(non-serializable)部分に起因するオーバーヘッドによって制限される。本質的には、並列法の量が増加するにつれて、それをサポートするために必要な通信が、並列法に起因する増進を圧倒する。
現在のプロセッサの他の非効率性は、即時の計算要求に応ずるためにコンピューティングパワーを拡大縮小する能力がないことである。大部分のコンピュータは、何かが起こるのを待ちつつ、それらの時間の大部分を費やしている。それらは、入出力、次の命令、メモリアクセス、または時にはヒューマンインタフェースを待っている。この待機は、コンピューティングパワーの非効率的な浪費である。さらに、待機に費やされるコンピュータの時間は、しばしば電力消費および熱の発生を増加させる結果となる。
スレッディングは、単一のCPU上のソフトウェアプログラムを考慮するために、よく理解された技術である。スレッドレベル並列法は、TOMIプロセッサの使用を通してプログラムの加速を成し遂げることができる。
汎用コンピュータにとって、頻度を下げる順として最も一般的な動作は、ロードおよびストア、シーケンシング、および数学(Math)およびロジックである。
ロードおよびストアのパラメータは、ソースおよび宛先である。ロードおよびストアの力は、ソースおよび宛先の範囲である(例えば、4ギガバイトは、256バイトより強力な範囲である)。現在のソースおよび宛先と関連する局所性(locality)は、多くのデータセットにとって重要である。プラス1、マイナス1は最も役に立つ。現在のソースおよび宛先からのオフセットが増加するほど、次第に役立たなくなる。
分岐およびループは、基本的なシーケンシング命令である。テストに基づいてシーケンスが変わる命令は、コンピュータが決定を行うやり方である。
数学およびロジック動作は、3つの動作の中で使用が最も少ない。ロジック動作は、CPUが実行することができる最も速い動作であり、単一のロジックゲートの遅延と同じ程度に小さい遅延しか必要としない。数学動作は、より複雑である。なぜなら、上位ビットが下位ビットの演算の結果に依存するからである。32ビットADDは、桁上げ先回り制御を用いても、少なくとも32ゲートの遅延を必要とする。シフトおよび加算手法を用いるMULTIPLYは、32個のADDに相当するものを必要とする。
完全な命令セットは、演算コードから成り、それは、無限の可能なソース、宛先、演算、および次の命令を選択するのに十分大きい。残念なことに、完全な命令セットの演算コードは無限に幅が広く、従って命令のバンド幅はゼロである。
スタックアーキテクチャコンピュータは、ゼロオペランドアーキテクチャとも呼ばれる。スタックアーキテクチャは、プッシュダウンスタックの内容に基づいて、全ての動作を実行する。2オペランド動作は、スタックに両方のオペランドが存在することを必要とする。動作を実行するとき、両方のオペランドがスタックからPOPされ、動作が実行され、かつ結果がスタックにPUSHされて戻される。スタックアーキテクチャコンピュータは、非常に短い演算コードを有することができる。なぜなら、ソースおよび宛先は、スタックにあると暗示されているからである。
1.アレイの開始アドレスをPUSHする
2.アドレスをDUPLICATEする(それで、我々は、アレイに結果をストアするためのアドレスを持つ。)
3.アドレスをDUPLICATEする(それで、我々は、アレイから読み出すためのアドレスを持つ。)
4.PUSH INDIRECT(スタックの先頭によって示されているアレイ位置の内容をPUSHする)
5.PUSH 15
6.MULTIPLY(15かける我々が第3行の中で読み出したアレイの内容)
7.SWAP(次の命令のためにスタックの先頭のアレイアドレスを得る。)
8.POP INDIRECT(乗算結果をPOPして、それをアレイに戻してストアする。)
9.INCREMENT(次のアレイ項目に対するポイント。)
10.アレイが完了するまで、ステップ2へ行く。
第9行のループカウンタは、追加のパラメータを必要とする。いくつかのアーキテクチャにおいて、このパラメータは、他のスタックに格納される。
1.アレイの開始アドレスをSTORE POINTERする
2.READ POINTER(アキュムレータに示されているアドレスの内容を読む。)
3.MULTIPLY 15
4.STORE POINTER(示されたアドレスの中へ結果をストアする。)
5.INCREMENT POINTER
6.アレイが完了するまで、第2行へ行く。
1.アキュムレータアーキテクチャと同様に、アキュムレータは、インクリメント命令を除いて、常にオペランドのうちの1つである。
2.レジスタアーキテクチャと同様に、宛先は、常にオペランドレジスタのうちの1つである。
3.アキュムレータおよびプログラムカウンタは、レジスタ空間の中にもあり、従って操作され得る。
4.3つの特別なレジスタは、自動インクリメントおよび自動デクリメントであり、入出力のスタックおよびストリームを作成するのに役立つ。
5.全ての動作は、1クロックサイクル(および2状態:クロックハイ、クロックロー)を必要とする。
6.全ての命令は、長さが8ビットであり、命令デコードを単純化して速度を上げている。
7.BRANCHまたはJUMP命令がない。
8.図2に示すように、8ビット命令から3ビットのオペレータを選択することを可能にする7つの命令しかない。
1.全ての動作は、パイプラインによって必要とされるものと同等のものによって抑えられるのではなく、ロジックによって許容される最大速度で動く。論理演算は最も高速である。数学演算は次に高速である。メモリアクセスを必要とする動作は最も遅い。
2.アーキテクチャは、パッケージピン、加算器桁上げ時間、および有用性のみによって制限される任意のデータ幅に比例する。
3.アーキテクチャは、汎用コンピュータの全ての動作を実行するのに必要な最小限の可能な機能に近い。
4.アーキテクチャは、非常に透明で、非常に規則的であり、大部分の動作は、最適化コンパイラで利用可能である。
命令セットのうちの7つの命令が、それらのビットマッピングと共に図2に示されている。各命令は、好ましくは単一の8ビットワードから成る。
図3は、様々なアドレッシングモードの有効アドレスを示している。
即値
レジスタ
レジスタ 間接
レジスタ 間接 自動インクリメント
レジスタ 間接 自動デクリメント
レジスタ0およびレジスタ1の両方は、プログラムカウンタ(PC)を指す。オペランドとしてレジスタ0(PC)を持つ演算は、全て、アキュムレータキャリービット(C)が1に等しいという条件付きである。C=1であれば、PCの旧値はアキュムレータ(ACC)にスワップされる。オペランドとしてレジスタ1(PC)を持つ演算は、全て、無条件である。
分岐およびジャンプ動作は、通常、CPU設計者の課題である。なぜなら、それらが貴重な演算コード空間の多くのビットを必要とするからである。分岐機能は、LOADACC, xxを用いて所望の分岐アドレスをACCにロードして、次に、STOREACC, PC命令を用いて分岐を遂行することによって引き起こされ得る。分岐は、レジスタ0に保存したときのCの状態次第で、なされる。
スキップは、INC, PCを実行することによって引き起こされ得る。実行は2サイクルを必要とし、1つはカレントPCインクリメントサイクルを完了させるためであり、1つはINCのためである。スキップは、レジスタ0をインクリメントしたときのCの状態次第で、なされる。
相対分岐は、所望のオフセットをACCにロードして、次にADD, PC命令を実行することによって引き起こされ得る。相対分岐は、レジスタ0に加算したときのCの状態次第で、なされる。
前方への分岐は、後方への分岐より役に立つ。なぜなら、ループのために必要な後方への分岐の位置は、初めてループの先頭を通るプログラムステップのときPCを保存することによって、容易に捕獲されるからである。
LOADI, #1C
STOREACC, PC
ループの先頭は、LOADACC, PCを用いてセーブすることができる。結果として生じるループ構文の先頭に対するポインタは、レジスタにストアされるか、またはオートインデクシングレジスタのうちの1つにプッシュされる。ループの末尾で、ポインタはLOADACC, EAによって検索され、STOREACC, PCを用いてPCにリストアされ、これにより後方へのループが引き起こされる。ループは、レジスタ0への保存によるCの状態次第で、なされ、これにより条件付き後方へのループが引き起こされる。
STOREACC, PCを用いて自己変更コードを書くことが可能である。命令は、引き起こされ、またはACCにフェッチされ、そして、次の命令として実行されるPCに格納される。この技術は、CASE構文を作成するために用いられ得る。
ADD, JUMPTABLE インデックスをジャンプテーブルのベースアドレスに加算する。
LOADACC, (JUMPTABLE) インデックスされたアドレスをロードする
STOREACC, PC ジャンプを実行する。
各システムコールは、以下の通りに実行される。ここでSPECIAL_FUNCTIONは即値オペランド0−63の名前である。
LOADI, SPECIAL_FUNCTION システムコール番号をロードする
LOADACC, (ACC) システムコールのアドレスをロードする
STOREACC, PC 関数へジャンプする
基本的なアーキテクチャは、右シフト演算を想定していない。もしこのような演算が必要であれば、好ましい実施形態の解決策は、汎用レジスタのうちの1つを「右シフトレジスタ」に指定することである。STOREACC, RIGHTSHIFTは、「右シフトレジスタ」への単一の位置を右シフトしたACCをストアする。ここで、その値は、LOADACC, RIGHTSHIFTによって読むことができる。
TOMIアーキテクチャは、好ましくは8ビット命令を特徴とするが、データ幅は、制限される必要はない。図4は、いかにして4〜32ビットの任意の幅のデータ経路が容易に作成されるかを示している。より広い幅のデータ処理を行うことは、所望の幅に対して、レジスタセット、内部データ経路、およびALUの幅を増加させることを必要とするだけである。データ経路の上限は、加算器のキャリー伝播遅延およびトランジスタの予算によって制限されるのみである。
2の補数の数学は、いくつかの方法でなされ得る。汎用レジスタは、全て“1s”として予め設定され、ALLONESと名付けられる。オペランドは、OPERANDと名付けられたレジスタの中にあると仮定する。
LOADACC, ALLONES
XOR, OPERAND
INC, OPERAND “2s”の補数がOPERANDの中に残る。
大部分のコンピュータプログラムは、コンパイラによって生成される。従って、実用的なコンピュータアーキテクチャは、共通のコンパイラ構造に適合しているべきである。
汎用レジスタに都合よく適合させることができるときより、ファンクションコールを通過したより多くの要素があるときがある。以下の例のために、スタックプッシュ動作がスタックをデクリメントすると仮定する。もしSがスタックレジスタとして用いられているのであれば、スタックの先頭に対してN番目の項目を読むために、
LOADI, N
STOREACC, X
LOADACC, S
ADD, X
LOADACC, (X)
アレイ関数にエントリすると、アレイのベースアドレスは、ARRAYと名付けられた汎用レジスタに置かれる。アレイの中のN番目の要素を読むために、
LOADI, N
STOREACC, X
LOADACC, ARRAY
ADD, X
LOADACC, (X)
時々、アレイは、Nワード幅の要素に割り当てられる。アレイのベースアドレスは、ARRAYと名付けられた汎用レジスタに置かれる。5ワード幅アレイの中のN番目の要素の最初のワードにアクセスするために、
LOADI, N
STOREACC, X テンポラリレジスタにストアする
ADD, ACC 2をかける
ADD, ACC 再び2をかける=4
ADD, X プラス1=5
LOADACC, ARRAY
ADD, X アレイのベースアドレスをプラスする
LOADACC, (X)
キャッシュは、メインメモリと比べて、大きさにおいてより小型で、アクセスにおいてより高速なメモリである。減少されたアクセスタイムおよびプログラムおよびデータアクセスの局所性は、キャッシュ動作を可能にし、多くの動作のために好適なTOMIプロセッサの性能を増加させる。他の観点から見て、キャッシュは、TOMIプロセッサのメインメモリからの独立性を増加させることによって、並列処理性能を増加させる。キャッシュのメインメモリに対する相対的な性能およびキャッシュに、またはキャッシュから、他のメインメモリに、ロードまたはストアを要求する前に、TOMIプロセッサが実行可能なサイクル数は、TOMIプロセッサ並列法による性能の上昇の量を決定する。
命令−PCと関連する
ソース−Xレジスタと関連する
宛先−Yレジスタと関連する
一実施形態において、広いバスは、大きな埋め込まれたメモリをキャッシュに接続するので、キャッシュに対するロードまたはストア動作は、速く起こることができる。RAMに埋め込まれたTOMIプロセッサで、全てのキャッシュのロードまたはストアは、RAMの列に対する単一のメモリサイクルから成る。一実施形態において、埋め込まれたメモリは、63個のTOMIプロセッサの要求に応答しているので、1つのTOMIプロセッサに対するキャッシュのロードまたはストアの応答時間は、他のTOMIプロセッサのキャッシュのロードまたはストアが完了する間、延長可能である。
2次キャッシュは、キャッシュロード要求を予想してロードされ得る。2つのキャッシュは同一であり、PCの上位14ビットの内容に基づいて交互に選択されかつ選択から外される。上記の例では、PCの上位14ビットが、2次キャッシュの中に予め格納されたデータのそれと合うように変化するとき、2次キャッシュは、1次キャッシュとして選択されるようになる。旧1次キャッシュは、その時は2次キャッシュになる。大部分のコンピュータプログラムが線形にメモリの中で増加するので、本発明の一実施形態は、常にキャッシュの内容、現在のPCプラス1の上位14ビットによって示されるメインメモリの内容をフェッチする2次キャッシュを有する。
整数乗算および全ての浮動小数点演算は、特別な目的のハードウェアを用いてさえ、実行するために、多くのサイクルを必要とする。従って、それらは、基本的なTOMIプロセッサに含めるよりはむしろ、他のプロセッサを考慮に入れるべきである。デジタル信号処理(DSP)動作は、全乗算が多くのサイクルを必要とする場合であっても、しばしば、サイクル毎に結果を生じる高度にパイプライン化された乗算器を用いる。何度も同じアルゴリズムを繰り返す信号処理アプリケーションのために、このような乗算器アーキテクチャが最適であり、TOMIプロセッサに対する周辺プロセッサとして組み込まれ得るが、もしそれがTOMIプロセッサの中に直接組み込まれるのであれば、それは、たぶん複雑さを増加させ、かつ全体の性能を減少させる。図7は、広いシステムRAMバスを利用するために構成された追加の処理機能の一例を示している。
割り込みは、プロセッサの通常のシーケンシャル動作に対する外部イベントであり、それは、プロセッサに、その動作シーケンスを直ちに変えることを強いる。
TOMIプロセッサ環境の一実施形態において、単一のプロセッサが、外部の世界に対する全てのインターフェースについて責任を負っている。
一実施形態において、TOMIプロセッサシステムにおける外部の世界に対する即時の応答は、DMAコントローラを介して起こる。DMAコントローラは、外部装置によって要求されるときに、外部装置からシステムRAMに書き込みを行うための内部データバスにデータを転送する。同じコントローラが、また、要求されると、システムRAMから外部装置にデータを転送する。DMA要求は、内部バスアクセスに対する最高優先度を有する。
本発明の好ましい実施形態のTOMIプロセッサは、かなりの数、複製され、かつモノリシックチップ上の追加の処理機能、非常に幅の広い内部バス、およびシステムメモリと結合されるように設計されている。このようなシステムのための例示的なメモリマップが図8に示されている。
好ましく仕事をするためのTOMIプロセッサの稼働率のコーディネート(Coordination)は、図9に示すプロセッサ稼働率テーブルによって処理される。コーディネート(マスタ)プロセッサは、好ましくは以下の機能を実行することができる。
1.スレッドの実行アドレス、ソースメモリ、および宛先メモリを含むが、これらに限られない、そのスタック上にスレーブプロセッサのためにコールしているパラメータをプッシュする。
2.スレーブプロセッサを起動する。
3.ポーリングまたは割り込みに応答することによって、スレーブプロセッサスレッド完了イベントに応答する。
コーディネートプロセッサは、稼働率テーブルからプロセッサを要求することができる。available_flagが「0」にセットされた最低位のプロセッサの数が戻される。すると、コーディネートプロセッサは、利用可能なプロセッサに関するavailable_flagを「1」にセットし、これによりスレーブプロセッサを起動する。プロセッサが利用可能でない場合、要求はエラーを返す。代替案として、プロセッサは、実行されるべき要求された仕事に関する優先順位レベルに基づいて、コーディネートプロセッサによって割り当てられ得る。優先順位方式に基づいてリソースを割り当てる技術は、従来技術において周知である。図10は、プロセッサ割り当ての3つの好適な構成要素を示している。コーディネートプロセッサを起動する動作、スレーブプロセッサの動作、および割り込み応答によるコーディネートプロセッサの結果処理。
1.コーディネートプロセッサは、それ自身のスタック上へ走るためにスレッドに対するパラメータをプッシュする。パラメータは、以下のものを含む。スレッドの先頭アドレス、スレッドに対するソースメモリ、スレッドに対する宛先メモリ、および最後のパラメータカウント。
2.コーディネートプロセッサは、利用可能なプロセッサを要求する。
3.プロセッサ割り当てロジックは、その関連するavailable_flagをセットし、かつその関連するdone_flagをクリアする、数値的に最低のスレーブプロセッサの番号、またはエラーを返す。
4.エラーが返されると、コーディネートプロセッサは、スレーブプロセッサが利用可能になるまで要求を再試行するか、またはエラーを処理するためのいくつかの特別な動作を実行する。
5.利用可能なプロセッサ番号が返されたら、コーディネートプロセッサは、示されたプロセッサに対するavailable_flagをクリアする。この動作は、選択されたスレーブプロセッサのスタックに、スタックパラメータのparameter_count数をプッシュする。done_flagは、ゼロにクリアされる。
6.スレーブプロセッサは、先頭スタック項目を検索し、それをスレーブプロセッサのプログラムカウンタに転送する。
7.スレーブプロセッサは、次に、命令キャッシュの中に、プログラムカウンタによって示されるメモリカラムをフェッチする。
8.スレーブプロセッサは、命令キャッシュの始めから命令を実行し始める。最初の命令は、たぶん、スタックからコールしているパラメータを検索することである。
9.スレーブプロセッサは、命令キャッシュからのスレッドを実行する。スレッドが完了すると、その関連するdone_flagの状態をチェックする。done_flagがセットされている場合には、done_flagがクリアされるまで待つ。これは、コーディネートプロセッサがいかなる以前の結果も処理したことを示している。
10.スレーブプロセッサに関する割り込みベクトルが−1にセットされている場合には、done_flagをセットしても割り込みは発生しない。従って、コーディネートプロセッサは、done_flagがセットされるようにポーリングを行う。
TOMIプロセッサは、それらのキャッシュを通してシステムメモリを読み書きする。完全にキャッシュに入れられたカラムは、一度に読み書きされる。いかなるプロセッサも、システムメモリの任意の部分を読むことができる。個々のプロセッサは、その排他的な書き込みのために、メモリのカラムをロックすることができる。このロックメカニズムは、プロセッサ間でのメモリ書き込みコンフリクトを回避する。
並列法は、個々のプロセッサに対して仕事の独立した部分に入ると考えられるアプリケーションを効果的に加速する。うまく考えられた1つのアプリケーションは、ロボットの視覚のための画像操作である。画像操作アルゴリズムは、相関、等化、エッジ識別、および他の動作を含む。多くは、行列操作によって実行される。図11に示すように、このアルゴリズムは、非常にしばしば、うまく考えられる。
Claims (11)
- 単一のチップ上の複数の並列プロセッサと、
前記チップ上に置かれていて、かつ前記プロセッサの各々によってアクセス可能なコンピュータメモリとを備えたシステムにおいて、
前記プロセッサの各々は、de minimis命令セットを処理するように動作可能であり、
前記プロセッサの各々は、前記プロセッサの中の少なくとも3つの特定のレジスタの各々専用のローカルキャッシュを備えていて、
関連するキャッシュを有する少なくとも3つの特定のレジスタは、命令レジスタ、ソースレジスタ、および宛先レジスタを含み、
前記de minimis命令セットは、7つの命令から成り、
前記7つの命令とは、オペランドの値をアキュムレータにロードするための命令と、アドレスをアキュムレータにロードするための命令と、アキュムレータの値をアドレスにストアするための命令と、加算命令と、論理積命令と、排他的論理和命令と、インクリメント命令である
ことを特徴とするシステム。 - 前記ローカルキャッシュの各々のサイズは、前記チップ上のランダムアクセスメモリの1行に等しいことを特徴とする請求項1に記載のシステム。
- アキュムレータは、インクリメント命令を除く、あらゆる命令のためのオペランドであることを特徴とする請求項1に記載のシステム。
- 前記少なくとも3つの特定のレジスタを用いるアドレッシングモードは、レジスタ間接自動インクリメントアドレッシングモードおよびレジスタ間接自動デクリメントアドレッシングモードを含むことを特徴とする請求項1に記載のシステム。
- 各命令は、長さが最高でも8ビットであることを特徴とする請求項1に記載のシステム。
- 単一のマスタプロセッサが、前記並列プロセッサの各々を管理する役割を担っていることを特徴とする請求項1に記載のシステム。
- 単一のチップ上の複数の並列プロセッサと、
前記チップ上に置かれていて、かつ前記プロセッサの各々によってアクセス可能なコンピュータメモリとを備えたシステムにおいて、
前記プロセッサの各々は、de minimis命令セットを処理するように動作可能であり、
前記プロセッサの各々は、前記プロセッサの中の少なくとも3つの特定のレジスタの各々専用のローカルキャッシュを備えていて、
関連するキャッシュを有する少なくとも3つの特定のレジスタは、命令レジスタ、ソースレジスタ、および宛先レジスタを含み、
前記de minimis命令セットは、7つの命令から成り、
前記7つの命令とは、オペランドの値をアキュムレータにロードするための命令と、アドレスをアキュムレータにロードするための命令と、アキュムレータの値をアドレスにストアするための命令と、加算命令と、論理積命令と、排他的論理和命令と、インクリメント命令である
ことを特徴とするシステム。 - 前記ローカルキャッシュの各々のサイズは、前記チップ上のランダムアクセスメモリの1行に等しいことを特徴とする請求項7に記載のシステム。
- 単一のマスタプロセッサが、前記並列プロセッサの各々を管理する役割を担っていることを特徴とする請求項7に記載のシステム。
- 単一のチップ上の複数の並列プロセッサ、マスタプロセッサ、およびコンピュータメモリを利用するスレッドレベルの並列処理の方法において、前記複数のプロセッサの各々は、de minimis命令セットを処理し、
(a)ローカルキャッシュを、前記複数のプロセッサの各々の中の3つの特定のレジスタの各々に割り当てるステップと、
(b)単一のスレッドを処理するために複数のプロセッサのうちの1つを割り当てるステップと、
(c)前記プロセッサによって割り当てられた各スレッドを処理するステップと、
(d)スレッドが処理された後に前記複数のプロセッサのうちの1つの割り当てを解除するステップとを有していて、
前記3つの特定のレジスタとは、命令レジスタ、ソースレジスタ、および宛先レジスタであり、
前記de minimis命令セットは、7つの命令から成り、
前記7つの命令とは、オペランドの値をアキュムレータにロードするための命令と、アドレスをアキュムレータにロードするための命令と、アキュムレータの値をアドレスにストアするための命令と、加算命令と、論理積命令と、排他的論理和命令と、インクリメント命令である
ことを特徴とする方法。 - de minimis命令セットの中の各命令は、長さが最高でも8ビットであることを特徴とする請求項10に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US76495506P | 2006-02-03 | 2006-02-03 | |
US60/764,955 | 2006-02-03 | ||
PCT/US2007/003313 WO2007092528A2 (en) | 2006-02-03 | 2007-02-05 | Thread optimized multiprocessor architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009525545A JP2009525545A (ja) | 2009-07-09 |
JP4987882B2 true JP4987882B2 (ja) | 2012-07-25 |
Family
ID=38345789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008553428A Expired - Fee Related JP4987882B2 (ja) | 2006-02-03 | 2007-02-05 | スレッドに最適化されたマルチプロセッサアーキテクチャ |
Country Status (11)
Country | Link |
---|---|
US (1) | US8977836B2 (ja) |
EP (2) | EP2154607A3 (ja) |
JP (1) | JP4987882B2 (ja) |
KR (1) | KR101120398B1 (ja) |
CN (1) | CN101395578B (ja) |
AT (1) | ATE536585T1 (ja) |
AU (1) | AU2007212342B2 (ja) |
CA (1) | CA2642022A1 (ja) |
HK (1) | HK1127414A1 (ja) |
RU (1) | RU2427895C2 (ja) |
WO (1) | WO2007092528A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8977836B2 (en) | 2006-02-03 | 2015-03-10 | Russell H. Fish, III | Thread optimized multiprocessor architecture |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8984256B2 (en) | 2006-02-03 | 2015-03-17 | Russell Fish | Thread optimized multiprocessor architecture |
US7962553B2 (en) * | 2006-07-31 | 2011-06-14 | Hewlett-Packard Development Company, L.P. | Method and system for distribution of maintenance tasks in a multiprocessor computer system |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
US8407680B2 (en) * | 2008-12-16 | 2013-03-26 | International Business Machines Corporation | Operand data structure for block computation |
US8458439B2 (en) * | 2008-12-16 | 2013-06-04 | International Business Machines Corporation | Block driven computation using a caching policy specified in an operand data structure |
US8281106B2 (en) * | 2008-12-16 | 2012-10-02 | International Business Machines Corporation | Specifying an addressing relationship in an operand data structure |
US8285971B2 (en) * | 2008-12-16 | 2012-10-09 | International Business Machines Corporation | Block driven computation with an address generation accelerator |
US8327345B2 (en) * | 2008-12-16 | 2012-12-04 | International Business Machines Corporation | Computation table for block computation |
US20120131584A1 (en) * | 2009-02-13 | 2012-05-24 | Alexey Raevsky | Devices and Methods for Optimizing Data-Parallel Processing in Multi-Core Computing Systems |
JP5367416B2 (ja) * | 2009-03-04 | 2013-12-11 | 光洋サーモシステム株式会社 | 搬送ロボット装置 |
US9535876B2 (en) * | 2009-06-04 | 2017-01-03 | Micron Technology, Inc. | Conditional operation in an internal processor of a memory device |
US8527740B2 (en) * | 2009-11-13 | 2013-09-03 | International Business Machines Corporation | Mechanism of supporting sub-communicator collectives with O(64) counters as opposed to one counter for each sub-communicator |
US9823928B2 (en) * | 2011-09-30 | 2017-11-21 | Qualcomm Incorporated | FIFO load instruction |
KR101984635B1 (ko) | 2012-07-19 | 2019-05-31 | 삼성전자주식회사 | 어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법 |
JP6099329B2 (ja) * | 2012-08-02 | 2017-03-22 | シャープ株式会社 | 端末、基地局、通信方法および集積回路 |
US9760511B2 (en) * | 2014-10-08 | 2017-09-12 | International Business Machines Corporation | Efficient interruption routing for a multithreaded processor |
RU2693682C2 (ru) * | 2014-12-19 | 2019-07-03 | Сергей Анатольевич Горишний | Система и способ управления функционально связанными данными |
RU2612569C2 (ru) * | 2015-01-27 | 2017-03-09 | Акционерное общество "Научно-исследовательский институт Авиационного оборудования" | Способ автоматического управления избыточностью неоднородной вычислительной системы и устройство для его реализации |
CN104699449B (zh) * | 2015-04-03 | 2017-09-29 | 中国科学院软件研究所 | 一种基于gmp的大整数加法和减法多核并行化实现方法 |
CN111104062B (zh) * | 2019-11-22 | 2023-05-02 | 中科寒武纪科技股份有限公司 | 存储管理方法、装置和存储介质 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US530890A (en) * | 1894-12-11 | Patrick fitzgibbons | ||
DE1979808U (de) | 1967-01-12 | 1968-02-29 | Hovalwerk Ag Ospelt | Heizkessel zum verfeuern fluessiger oder gasfoermiger brennstoffe. |
US3990054A (en) * | 1974-11-05 | 1976-11-02 | Honeywell Inc. | Microprogram organization techniques |
US4641238A (en) * | 1984-12-10 | 1987-02-03 | Itt Corporation | Multiprocessor system employing dynamically programmable processing elements controlled by a master processor |
US5050075A (en) * | 1988-10-04 | 1991-09-17 | Bell Communications Research, Inc. | High performance VLSI data filter |
US5440749A (en) * | 1989-08-03 | 1995-08-08 | Nanotronics Corporation | High performance, low cost microprocessor architecture |
US5197140A (en) * | 1989-11-17 | 1993-03-23 | Texas Instruments Incorporated | Sliced addressing multi-processor and method of operation |
WO1991011765A1 (en) * | 1990-01-29 | 1991-08-08 | Teraplex, Inc. | Architecture for minimal instruction set computing system |
US5590345A (en) * | 1990-11-13 | 1996-12-31 | International Business Machines Corporation | Advanced parallel array processor(APAP) |
JP2539974B2 (ja) * | 1991-11-20 | 1996-10-02 | 富士通株式会社 | 情報処理装置におけるレジスタの読出制御方式 |
DE69425377T2 (de) * | 1994-11-29 | 2001-02-15 | International Business Machines Corp., Armonk | Einzel-Zyklus-Prozessor zur Echtzeitsverarbeitung |
US5941981A (en) * | 1997-11-03 | 1999-08-24 | Advanced Micro Devices, Inc. | System for using a data history table to select among multiple data prefetch algorithms |
US6606704B1 (en) * | 1999-08-31 | 2003-08-12 | Intel Corporation | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode |
DE10121792C2 (de) | 2000-05-26 | 2003-09-25 | Ibm | Universelle Ladeadresse/Wertevorhersageschema |
US7039776B2 (en) * | 2003-04-17 | 2006-05-02 | Broadcom Corporation | Patch memory system for a ROM-based processor |
US7353362B2 (en) * | 2003-07-25 | 2008-04-01 | International Business Machines Corporation | Multiprocessor subsystem in SoC with bridge between processor clusters interconnetion and SoC system bus |
JP4057989B2 (ja) * | 2003-09-26 | 2008-03-05 | 株式会社東芝 | スケジューリング方法および情報処理システム |
FI20040261A0 (fi) * | 2004-02-18 | 2004-02-18 | Nokia Corp | Aikatiedon tarjoaminen |
US7676646B2 (en) * | 2005-03-02 | 2010-03-09 | Cisco Technology, Inc. | Packet processor with wide register set architecture |
US8984256B2 (en) | 2006-02-03 | 2015-03-17 | Russell Fish | Thread optimized multiprocessor architecture |
AU2007212342B2 (en) | 2006-02-03 | 2011-05-12 | Russell H. Fish Iii | Thread optimized multiprocessor architecture |
-
2007
- 2007-02-05 AU AU2007212342A patent/AU2007212342B2/en not_active Ceased
- 2007-02-05 CN CN2007800080470A patent/CN101395578B/zh active Active
- 2007-02-05 JP JP2008553428A patent/JP4987882B2/ja not_active Expired - Fee Related
- 2007-02-05 KR KR1020087021561A patent/KR101120398B1/ko active IP Right Grant
- 2007-02-05 US US11/702,979 patent/US8977836B2/en active Active
- 2007-02-05 RU RU2008135666/08A patent/RU2427895C2/ru not_active IP Right Cessation
- 2007-02-05 AT AT07763540T patent/ATE536585T1/de active
- 2007-02-05 EP EP09174901A patent/EP2154607A3/en not_active Withdrawn
- 2007-02-05 WO PCT/US2007/003313 patent/WO2007092528A2/en active Application Filing
- 2007-02-05 CA CA002642022A patent/CA2642022A1/en not_active Abandoned
- 2007-02-05 EP EP07763540A patent/EP1979808B1/en not_active Not-in-force
-
2009
- 2009-06-04 HK HK09105041.9A patent/HK1127414A1/en not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8977836B2 (en) | 2006-02-03 | 2015-03-10 | Russell H. Fish, III | Thread optimized multiprocessor architecture |
Also Published As
Publication number | Publication date |
---|---|
EP1979808A4 (en) | 2009-04-08 |
KR20080109743A (ko) | 2008-12-17 |
EP1979808A2 (en) | 2008-10-15 |
CN101395578B (zh) | 2013-01-09 |
WO2007092528A3 (en) | 2008-08-28 |
US20070192568A1 (en) | 2007-08-16 |
WO2007092528A9 (en) | 2009-05-14 |
EP2154607A2 (en) | 2010-02-17 |
EP1979808B1 (en) | 2011-12-07 |
AU2007212342A1 (en) | 2007-08-16 |
CN101395578A (zh) | 2009-03-25 |
RU2008135666A (ru) | 2010-03-10 |
EP2154607A3 (en) | 2010-07-14 |
CA2642022A1 (en) | 2007-08-16 |
JP2009525545A (ja) | 2009-07-09 |
WO2007092528A2 (en) | 2007-08-16 |
US8977836B2 (en) | 2015-03-10 |
KR101120398B1 (ko) | 2012-02-24 |
HK1127414A1 (en) | 2009-09-25 |
ATE536585T1 (de) | 2011-12-15 |
RU2427895C2 (ru) | 2011-08-27 |
AU2007212342B2 (en) | 2011-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4987882B2 (ja) | スレッドに最適化されたマルチプロセッサアーキテクチャ | |
US9934196B2 (en) | Thread optimized multiprocessor architecture | |
Colwell et al. | A VLIW architecture for a trace scheduling compiler | |
US8972699B2 (en) | Multicore interface with dynamic task management capability and task loading and offloading method thereof | |
US20100115233A1 (en) | Dynamically-selectable vector register partitioning | |
KR20080104073A (ko) | 처리 유닛의 동적 로드 및 언로드 | |
KR20090045944A (ko) | 종속 명령 스레드 스케줄링 | |
CN117501254A (zh) | 使用近存储器计算为复杂操作提供原子性 | |
CN114610394B (zh) | 指令调度的方法、处理电路和电子设备 | |
US6785743B1 (en) | Template data transfer coprocessor | |
US20230367604A1 (en) | Method of interleaved processing on a general-purpose computing core | |
CN114510271B (zh) | 用于在单指令多线程计算系统中加载数据的方法和装置 | |
Cogswell et al. | Macs: A predictable architecture for real time systems | |
JP4384828B2 (ja) | コプロセッサ装置およびデータ転送を容易にするための方法 | |
CN114281414B (zh) | Aigpu架构中urf寄存器的数据写入方法 | |
CN117597691A (zh) | 用于深度神经网络体系结构中的推理处理的稀疏性感知数据储存器 | |
Lin et al. | A Multithreading Architecture with Multiple Independent Shared Pipelines | |
Lin et al. | Strategies for Implementing a Multithreaded Shared Pipeline Processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20091204 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20101007 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101207 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110906 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111201 |
|
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: 20120403 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120425 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150511 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |