JP2010532905A - スレッドに最適化されたマルチプロセッサアーキテクチャ - Google Patents
スレッドに最適化されたマルチプロセッサアーキテクチャ Download PDFInfo
- Publication number
- JP2010532905A JP2010532905A JP2010518258A JP2010518258A JP2010532905A JP 2010532905 A JP2010532905 A JP 2010532905A JP 2010518258 A JP2010518258 A JP 2010518258A JP 2010518258 A JP2010518258 A JP 2010518258A JP 2010532905 A JP2010532905 A JP 2010532905A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- processors
- memory
- instruction
- chip
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 61
- 230000008569 process Effects 0.000 claims abstract description 34
- 238000012545 processing Methods 0.000 claims description 38
- 238000004519 manufacturing process Methods 0.000 claims description 25
- 239000004065 semiconductor Substances 0.000 claims description 13
- 239000002184 metal Substances 0.000 claims description 10
- 238000003860 storage Methods 0.000 claims description 9
- 230000010354 integration Effects 0.000 claims description 8
- 238000012546 transfer Methods 0.000 claims description 8
- 230000009977 dual effect Effects 0.000 claims description 7
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 21
- 238000013461 design Methods 0.000 description 19
- 238000004422 calculation algorithm Methods 0.000 description 16
- 230000008901 benefit Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 6
- 238000005457 optimization Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000002093 peripheral effect Effects 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
- 239000013598 vector Substances 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 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
- 230000001934 delay Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000013519 translation 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
- 230000004913 activation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007423 decrease 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
- 238000007620 mathematical function Methods 0.000 description 1
- 239000011159 matrix material Substances 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
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001502 supplementing effect Effects 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
Classifications
-
- 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/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30134—Register stacks; shift registers
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30163—Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
-
- 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
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- 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/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/46—Multiprogramming arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Microcomputers (AREA)
- Semiconductor Memories (AREA)
- Executing Machine-Instructions (AREA)
Abstract
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.全ての命令は、長さが8ビットであり、命令デコードを単純化して速度を上げている。
6.分岐(BRANCH)またはジャンプ(JUMP)命令がない。
7.図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)
本発明の他の実施形態は、図2に示した7つの基本命令の拡張を含んでいる。図2Eに示した命令セット拡張は、TOMIプロセッサの内部動作、ソフトウェアプログラム命令、およびTOMIプロセッサのためのソフトウェアコンパイラを更に最適化するのを助ける。
LOADI, #14 \\14ビットオペランドの最上位6ビットをロードする。
SHIFTLOADBYTE \\6ビットの8位置を左へシフトして、次の8ビット値をロードする。
CONSTANT #E8 \\8ビット即値オペランド。
ACCの結果としての16進値は14E8である。
キャッシュは、メインメモリと比べて、大きさにおいてより小型で、アクセスにおいてより高速なメモリである。減少されたアクセスタイムおよびプログラムおよびデータアクセスの局所性は、キャッシュ動作を可能にし、多くの動作のために好適な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プロセッサに含めるよりはむしろ、他のプロセッサを考慮に入れることができる。しかし、簡単な16ビット×16ビット乗算器が、追加の機能および多用性をTOMI CPUアーキテクチャに提供するために、(1000トランジスタ未満を用いる)TOMI CPUに加えられ得る。
メモリチップ内のメモリ回路の物理的レイアウト設計は、しばしば、メモリトランジスタがメモリセルの大きいバンクの中でレイアウトされるように設計される。バンクは、通常、等しいサイズにされた矩形領域として構成され、チップ上の2以上の列の中に配置される。セルの大きいバンクの中のメモリセルのレイアウトは、メモリ読出し及び/又は書込みアクセスをスピードアップするために用いられ得る。
割り込みは、プロセッサの通常のシーケンシャル動作に対する外部イベントであり、それは、プロセッサに、その動作シーケンスを直ちに変えることを強いる。割り込みの例は、外部装置による動作の完了またはいくつかのハードウェアによるエラー状態である。従来のプロセッサは、通常のシーケンシャル動作を素早く停止し、現在の動作の状態をセーブし、割り込みを引き起こしたどんなイベントでも処理するために、いくつかの特別な動作の実行を開始し、特別な動作が完了されたときに以前の状態を回復し、シーケンシャル動作を続けるために、どんな事でもする。割り込み処理品質の主要な基準は、応答時間である。
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つの技術は、図10Aに示したように、TOMIプロセッサをデュアルインラインメモリモジュール(DIMM)上に搭載することである。TOMI/DIMMは、外部メモリコントローラおよび汎用CPU、例えばパーソナルコンピュータから成るシステムに含まれ得る。図10Bは、このような構成を示している。モードレジスタは、一般に、DRAM、SRAMおよびフラッシュメモリの中で見つかる。モードレジスタは、メモリアクセスとは関係ない外部メモリコントローラによって書き込まれ得る一組のラッチである。メモリモードレジスタ内のビットは、しばしば、パラメータ、例えば、タイミング、リフレッシュ制御、および出力バースト長を特定するために用いられる。
プロセッサクロック速度は、プロセッサ電力消費を決定する。TOMIアーキテクチャは、1つのプロセッサ以外の全てを停止させることができることによって、低電力消費を可能にする。さらにまた、マスタプロセッサ以外の各プロセッサは、図2Dに示したロジックを用いて、性能または電力消費を最適化するように調整された、そのクロック速度を有することができる。
いくつかのコンピュータソフトウェアアルゴリズムは循環的である。換言すれば、アルゴリズムの第一の機能は、それ自体を呼ぶことである。「分割(divide)および獲得(conquer)」として知られているアルゴリズムのクラスは、しばしば循環的技術を用いて実現される。分割および獲得は、データの検索および分類、および特定の数学的機能に適用可能である。このようなアルゴリズムを、複数のプロセッサ、例えばTOMIアーキテクチャと共に利用可能なものと並行することが可能である。このようなアルゴリズムを実行するために、一つのTOMI CPUが、他のTOMI CPUに仕事を渡して、そのCPUから結果を受け取ることが可能でなければならない。TOMIプロセッサの他の実施形態は、任意のプロセッサがマスタプロセッサになり、かつ任意の他の利用可能なTOMIプロセッサをスレーブプロセッサとみなすことを可能にする。TOMIプロセッサの起動および停止、プロセッサ間の通信、および独立及び従属スレッドの管理は、この実施形態のプロセッサ管理の中でサポートされる。
TOMI CPUは、そのPCに全て1を書き込むことによって停止され得る。TOMI CPUが停止される時、そのクロックは動いていないし、それは電力を消費していない。いかなるTOMI CPUも、それ自身のPCに全て1を書き込むことができる。
TOMI CPUは、そのPCに全て1以外の値が書き込まれる時、実行を始めることができる。マスタプロセッサは、それが図10Dに示したようなモードレジスタによってリセットされる時、そのPCに書き込まれた0の値を有している。
複数のスレッドが単一の汎用プロセッサ上で実行される時、それらのスレッドは、まれに通信するのみで、非常に緩く連結され得る。実行、結果のリターン、および停止の代わりに、いくつかのスレッドは、結果を連続的かつ永久に送達することを、永遠に実行することができる。このようなスレッドの一例は、ネットワーク通信スレッドまたはマウスデバイスを読み出すスレッドである。マウススレッドは、連続的に動作して、マウス位置およびクリック情報を、ポーリングされ得る共有メモリ領域または直ちに示されるコールバックルーチンに送達する。
いくつかのアルゴリズム(例えば分割および獲得として分類されるもの)は、いくつかのプロセッサ上でアルゴリズムの部分を同時に実行して、結果を結合することによって、並列処理を達成することができる。このような設計において、単一のマスタプロセッサは、いくつかのスレーブプロセッサから仕事を要求して、スレーブが並列に仕事を実行する間、待つ。このように、マスタプロセッサは、スレーブプロセッサによって完了される仕事に依存する。
基本的なTOMI命令セットに対する一連の拡張は、独立及び従属スレッド管理を可能にする。これらの命令は、図2Bに示したいくつかの利用可能なNOOPコードを用いて実行される。これらの管理拡張命令は、図2Cにまとめられている。
LOADI, processorNumber
SELECTPROCESSOR
LOADACC, LOOPADDRESS
TOP TESTDONE
STOREACC, PC_COND //選択されたプロセッサがPC=全て1で停止するまで、TOPへループ。
LOADI, processorNumber
SELECTPROCESSOR
LOADACC, LOOPADDRESS
TOP TESTAVAILABLE
STOREACC, PC_COND //選択されたプロセッサが利用可能であるまで、TOPへループ。
図10Fは、TOMIプロセッサ間の通信の1つの可能なハードウェア実装を示している。1つのTOMIプロセッサは、SELECTPROCESSORコマンドを用いて、それ自体と他のTOMIプロセッサとの間の接続を確立することができる。この命令は、選択している、および選択されたプロセッサが、共有レジスタおよびREADSHAREDVARIABLEおよびSTORESHAREDVARIABLEコマンドを用いて、データを交換することを可能にする論理接続を確立する。
上述の通り、TOMIプロセッサは、仕事を、可用性がGETNEXTPROCESSORによって判定された他のTOMIプロセッサに委任することができる。
1.要求側プロセッサは、GETNEXTPROCESSOR命令を実行する。これは、「次の利用可能なプロセッサ要求」ラインを調停ロジックに引き下ろす。
2.調停ロジックは、「次の利用可能なプロセッサ」ライン上のTOMI CPUに対応する数を生成する。
3.要求側プロセッサは、SELECTPROCESSOR命令を実行する。
これは、数を、要求側プロセッサのPSR(プロセッサ選択レジスタ)の中に格納する。
4.要求側プロセッサは、それから、STARTPROCESSOR命令を実行する。これは、プロセッサ選択レジスタによって選択されたプロセッサのPCに書き込む。動作が成功した場合、選択されたプロセッサの数は、選択されたプロセッサが、もはや、仕事をするために割り当てられるために利用可能ではないことを示すために、更に、調停ロジックに格納される。動作が不成功の場合、その理由は、多分、選択されたプロセッサが利用可能ではないことである。要求側プロセッサは、他の利用可能なプロセッサを見つけるために、他のGETNEXTPROCESSORを実行する。
5.選択されたプロセッサが、その結果を利用可能にするために、STORESHAREDVARIABLEを実行する時、調停ロジックは、選択されたプロセッサが、読まれるのを待っている結果を持っていることを通知される。
6.選択されたプロセッサが、そのPCに−1を書き込むことによって停止される時、調停ロジックは、選択されたプロセッサが利用可能であることを通知される。
7.選択されたプロセッサの結果がREADSHAREDVARIABLEによって検索される時、調停ロジックは、選択されたプロセッサの結果が読み出されたことを通知される。
TOMIプロセッサは、それらのキャッシュを通してシステムメモリを読み書きする。完全にキャッシュに入れられたカラムは、一度に読み書きされる。いかなるプロセッサも、システムメモリの任意の部分を読むことができる。個々のプロセッサは、その排他的な書き込みのために、メモリのカラムをロックすることができる。このロックメカニズムは、プロセッサ間でのメモリ書き込みコンフリクトを回避する。
並列法は、個々のプロセッサに対して仕事の独立した部分に入ると考えられるアプリケーションを効果的に加速する。うまく考えられた1つのアプリケーションは、ロボットの視覚のための画像操作である。画像操作アルゴリズムは、相関、等化、エッジ識別、および他の動作を含む。多くは、行列操作によって実行される。図11に示すように、このアルゴリズムは、非常にしばしば、うまく考えられる。
TOMIアーキテクチャの一実施形態は、1つ以上のTOMI CPUを標準DRAMダイに埋め込んでいる。結果として生じるダイは、標準DRAMピン配列を有する標準DRAMパッケージに入れられる。パッケージされた部品は、標準DRAM DIMM(デュアルインラインメモリモジュール)上に搭載され得る。
1.付随する永久記憶装置から使用のためのTOMIチップDRAMへデータおよび命令を転送するメカニズムを提供する。多くのシステムにおいて、永久記憶装置は、フラッシュRAMであり得る。
2.TOMIチップと、現実世界の装置、例えばディスプレイおよびネットワークとの間の入出力インターフェースを提供する。
3.TOMI CPU動作を調整するのに必要なオペレーティングシステム機能の小さい一組を実行する。
Claims (74)
- メモリモジュール上に搭載された複数の並列プロセッサと、
外部メモリコントローラと、
汎用中央演算処理装置とを備えていて、
前記並列プロセッサの各々は、スレッドレベルの並列処理のために最適化された命令セットを処理するように動作可能であることを特徴とするシステム。 - 前記並列プロセッサの各々は、de minimis命令セットを処理するように動作可能であることを特徴とする請求項1に記載のシステム。
- メモリモードレジスタに割り当てられる1以上のビットは、前記並列プロセッサのうちの1つ以上をイネーブルまたはディスエーブルにするように動作可能であることを特徴とする請求項1に記載のシステム。
- 前記メモリモジュールは、デュアルインラインメモリモジュールであることを特徴とする請求項1に記載のシステム。
- 前記プロセッサの各々は、単一のスレッドを処理するように動作可能であることを特徴とする請求項1に記載のシステム。
- 複数のスレッドが、共有メモリを通してデータを共有することを特徴とする請求項5に記載のシステム。
- 複数のスレッドが、1つ以上の共有変数を通してデータを共有することを特徴とする請求項5に記載のシステム。
- 前記メモリモジュールは、DRAM、SRAM、およびフラッシュメモリのうちの1つ以上であることを特徴とする請求項1に記載のシステム。
- 少なくとも一つの前記並列プロセッサがマスタプロセッサとみなされ、他の前記並列プロセッサはスレーブプロセッサとみなされることを特徴とする請求項1に記載のシステム。
- 各プロセッサは、クロック速度を有していて、前記マスタプロセッサ以外の各プロセッサは、性能または電力消費を最適化するように調整された前記プロセッサのクロック速度を有するように動作可能であることを特徴とする請求項9に記載のシステム。
- 各プロセッサは、マスタプロセッサまたはスレーブプロセッサとみなされるように動作可能であることを特徴とする請求項9に記載のシステム。
- 前記マスタプロセッサは、いくつかのスレーブプロセッサによる処理を要求し、前記いくつかのスレーブプロセッサからの出力を待ち、かつ前記出力を結合することを特徴とする請求項9に記載のシステム。
- 前記マスタプロセッサは、前記出力が前記いくつかのプロセッサの各々から受信されるとき、前記いくつかのプロセッサからの出力を結合することを特徴とする請求項12に記載のシステム。
- 停止されるべき前記並列プロセッサのうちの1つ以上をイネーブルにすることによって、低電力消費が提供されることを特徴とする請求項1に記載のシステム。
- 前記並列プロセッサの各々は、プログラムカウンタを伴っていて、前記並列プロセッサが伴っているプログラムカウンタに全て1を書き込むことによって停止されるように動作可能であることを特徴とする請求項14に記載のシステム。
- ダイナミックランダムアクセスメモリ(DRAM)のダイに埋め込まれた複数の並列プロセッサを備えていて、
前記複数の並列プロセッサは、外部メモリコントローラおよび外部プロセッサと通信し、
前記並列プロセッサの各々は、スレッドレベルの並列処理のために最適化された命令セットを処理するように動作可能であることを特徴とするシステム。 - 前記ダイは、DRAMピン配列を有するパッケージに入れられていることを特徴とする請求項16に記載のシステム。
- 前記並列プロセッサは、デュアルインラインメモリモジュール上に搭載されていることを特徴とする請求項16に記載のシステム。
- 前記システムは、前記プロセッサがDRAMモードレジスタを通してイネーブルにされる時以外は、DRAMとして動作することを特徴とする請求項16に記載のシステム。
- 前記外部プロセッサは、関連する永久記憶装置から前記DRAMにデータおよび命令を転送するように動作可能であることを特徴とする請求項16に記載のシステム。
- 前記永久記憶装置は、フラッシュメモリであることを特徴とする請求項20に記載のシステム。
- 前記外部プロセッサは、前記並列プロセッサと外部装置との間の入出力インターフェースを提供するように動作可能であることを特徴とする請求項16に記載のシステム。
- 単一のチップ上の複数のプロセッサと、
前記チップ上に配置されていて、前記プロセッサの各々によってアクセス可能なコンピュータメモリとを備えていて、
前記プロセッサの各々は、de minimis命令セットを処理するように動作可能であり、かつ
前記プロセッサの各々は、前記プロセッサ内の少なくとも3つの特定のレジスタの各々専用のローカルキャッシュを有していることを特徴とするシステム。 - 前記ローカルキャッシュの各々のサイズは、前記チップ上のランダムアクセスメモリの1行に等しいことを特徴とする請求項23に記載のシステム。
- 各前記プロセッサは、前記チップ上のランダムアクセスメモリの内部データバスにアクセスし、前記内部データバスは、ランダムアクセスメモリの1行の幅を有していることを特徴とする請求項23に記載のシステム。
- 前記内部データバスの幅は、1024、2048、4096、8192、16328、または32656ビットであることを特徴とする請求項25に記載のシステム。
- 前記内部データバスの幅は、1024ビットの整数倍であることを特徴とする請求項25に記載のシステム。
- 前記プロセッサ内の少なくとも3つの特定のレジスタの各々専用のローカルキャッシュは、1メモリ読出し又は書込みサイクルの中で満たされるか又は消去されるように動作可能であることを特徴とする請求項23に記載のシステム。
- 前記de minimis命令セットは、基本的に7つの基本命令から成ることを特徴とする請求項23に記載のシステム。
- 前記基本命令セットは、ADD、XOR、INC、AND、STOREACC、LOADACC、およびLOADI命令を含むことを特徴とする請求項29に記載のシステム。
- 前記de minimis命令セット内の各命令は、長さが最長でも8ビットであることを特徴とする請求項23に記載のシステム。
- 前記de minimis命令セットは、プロセッサ上での命令シーケンスの実行を最適化するための複数の命令拡張を有していて、更に、このような命令拡張は、基本的に20未満の命令から成ることを特徴とする請求項23に記載のシステム。
- 各命令拡張は、長さが最長でも8ビットであることを特徴とする請求項23に記載のシステム。
- 前記de minimis命令セットは、前記チップ上の複数のプロセッサを選択的に制御するための一組の命令を有していることを特徴とする請求項23に記載のシステム。
- 各プロセッサ制御命令は、長さが最長でも8ビットであることを特徴とする請求項34に記載のシステム。
- 複数のプロセッサは、モノリシックメモリデバイスのために設計された半導体製造プロセスを用いて前記チップ上に配置されるコンピュータメモリと共に前記チップ上に製造されることを特徴とする請求項23に記載のシステム。
- 半導体製造プロセスは、4層未満のメタル相互接続を用いることを特徴とする請求項36に記載のシステム。
- 半導体製造プロセスは、3層未満のメタル相互接続を用いることを特徴とする請求項36に記載のシステム。
- 複数のプロセッサのコンピュータメモリ回路内への集積化は、チップダイサイズの30%未満の増加という結果をもたらすことを特徴とする請求項23に記載のシステム。
- 複数のプロセッサのコンピュータメモリ回路内への集積化は、チップダイサイズの20%未満の増加という結果をもたらすことを特徴とする請求項23に記載のシステム。
- 複数のプロセッサのコンピュータメモリ回路内への集積化は、チップダイサイズの10%未満の増加という結果をもたらすことを特徴とする請求項23に記載のシステム。
- 複数のプロセッサのコンピュータメモリ回路内への集積化は、チップダイサイズの5%未満の増加という結果をもたらすことを特徴とする請求項23に記載のシステム。
- 250,000個未満のトランジスタが、前記チップ上の各プロセッサを作成するために用いられることを特徴とする請求項23に記載のシステム。
- チップは、4層未満のメタル相互接続を用いる半導体製造プロセスを用いて製造されることを特徴とする請求項23に記載のシステム。
- 前記プロセッサの各々は、単一のスレッドを処理するように動作可能であることを特徴とする請求項23に記載のシステム。
- アキュムレータは、インクリメント命令を除く、あらゆる基本命令のためのオペランドであることを特徴とする請求項29に記載のシステム。
- 各基本命令のための宛先は、常にオペランドレジスタであることを特徴とする請求項29に記載のシステム。
- 3つのレジスタは自動インクリメントであり、かつ3つのレジスタは自動デクリメントであることを特徴とする請求項23に記載のシステム。
- 各基本命令は、完了するために1クロックサイクルのみを必要とすることを特徴とする請求項29に記載のシステム。
- 前記命令セットは、分岐命令およびジャンプ命令を有していないことを特徴とする請求項29に記載のシステム。
- 単一のマスタプロセッサが、前記並列プロセッサの各々を管理する役割を担っていることを特徴とする請求項23に記載のシステム。
- 単一のチップ上の複数の並列プロセッサと、
前記チップ上に配置されていて、前記プロセッサの各々によってアクセス可能なコンピュータメモリとを備えていて、
前記プロセッサの各々は、スレッドレベルの並列処理のために最適化された命令セットを処理するように動作可能であり、かつ
各前記プロセッサは、前記チップ上のコンピュータメモリの内部データバスにアクセスし、前記内部データバスは、メモリの1行より幅が広くないことを特徴とするシステム。 - 前記プロセッサの各々は、de minimis命令セットを処理するように動作可能であることを特徴とする請求項52に記載のシステム。
- 前記プロセッサの各々は、前記プロセッサ内の少なくとも3つの特定のレジスタの各々専用のローカルキャッシュを有していることを特徴とする請求項52に記載のシステム。
- 前記ローカルキャッシュの各々のサイズは、前記チップ上のコンピュータメモリの1行に等しいことを特徴とする請求項54に記載のシステム。
- 少なくとも3つの特定のレジスタは、命令レジスタ、ソースレジスタ、および宛先レジスタを含むことを特徴とする請求項54に記載のシステム。
- 前記de minimis命令セットは、基本的に7つの基本命令から成ることを特徴とする請求項53に記載のシステム。
- 前記基本命令セットは、ADD、XOR、INC、AND、STOREACC、LOADACC、およびLOADI命令を含むことを特徴とする請求項57に記載のシステム。
- 前記命令セット内の各命令は、長さが最長でも8ビットであることを特徴とする請求項52に記載のシステム。
- 前記プロセッサの各々は、単一のスレッドを処理するように動作可能であることを特徴とする請求項52に記載のシステム。
- 単一のマスタプロセッサが、前記並列プロセッサの各々を管理する役割を担っていることを特徴とする請求項52に記載のシステム。
- 前記de minimis命令セットは、プロセッサ上での命令シーケンスの実行を最適化するための複数の命令拡張を有していて、更に、このような命令拡張は、20未満の命令を有していることを特徴とする請求項53に記載のシステム。
- 各命令拡張は、長さが最長でも8ビットであることを特徴とする請求項62に記載のシステム。
- 前記de minimis命令セットは、前記チップ上の複数のプロセッサを選択的に制御するための一組の命令を有していることを特徴とする請求項53に記載のシステム。
- 各プロセッサ制御命令は、長さが最長でも8ビットであることを特徴とする請求項64に記載のシステム。
- 複数のプロセッサは、モノリシックメモリデバイスのために設計された半導体製造プロセスを用いて前記チップ上に配置されるコンピュータメモリと共に前記チップ上に製造されることが可能であることを特徴とする請求項52に記載のシステム。
- 単一のチップ上の複数の並列プロセッサ、マスタプロセッサ、およびコンピュータメモリを利用するスレッドレベルの並列処理の方法において、前記複数のプロセッサの各々は、de minimis命令セットを処理し、かつ単一のスレッドを処理するように動作可能であり、
(a)ローカルキャッシュを前記複数のプロセッサの各々の中の3つの特定のレジスタの各々に割り当てるステップと、
(b)単一のスレッドを処理するために複数のプロセッサのうちの1つを割り当てるステップと、
(c)前記プロセッサによって各々の割り当てられたスレッドを処理するステップと、
(d)前記プロセッサによって処理された各スレッドからの結果を処理するステップと、(e)スレッドが処理された後に、前記複数のプロセッサのうちの1つの割り当てを解除するステップとを有していることを特徴とする方法。 - de minimis命令セットは、基本的に7つの基本命令から成ることを特徴とする請求項67に記載の方法。
- 前記基本命令は、ADD、XOR、INC、AND、STOREACC、LOADACC、およびLOADI命令を有していることを特徴とする請求項68に記載の方法。
- de minimis命令セットは、複数のプロセッサを選択的に制御するための一組の命令を有していることを特徴とする請求項67に記載の方法。
- 各プロセッサ制御命令は、長さが最長でも8ビットであることを特徴とする請求項70に記載の方法。
- 各プロセッサが前記メモリの内部データバスを用いてコンピュータメモリにアクセスするステップを更に有していて、内部データバスは、前記チップ上のメモリの1行の幅であることを特徴とする請求項52に記載の方法。
- de minimis命令セット内の各命令は、長さが最長でも8ビットであることを特徴とする請求項67に記載の方法。
- メモリデバイスのための電子工業規格デバイスのパッケージングおよびピンレイアウトと互換性があるメモリチップの中に埋め込まれた複数のプロセッサを備えていて、
プロセッサのうちの1つ以上は、メモリチップのメモリモードレジスタに送信される情報によって起動することができ、メモリチップは、プロセッサのうちの1つ以上が前記メモリモードレジスタによって起動する場合を除き、工業規格メモリデバイスの動作と機能的に互換性があることを特徴とするシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/147,332 US8984256B2 (en) | 2006-02-03 | 2008-06-26 | Thread optimized multiprocessor architecture |
PCT/US2008/068566 WO2009157943A1 (en) | 2008-06-26 | 2008-06-27 | Thread optimized multiprocessor architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010532905A true JP2010532905A (ja) | 2010-10-14 |
JP2010532905A5 JP2010532905A5 (ja) | 2012-06-07 |
Family
ID=41444820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010518258A Pending JP2010532905A (ja) | 2008-06-26 | 2008-06-27 | スレッドに最適化されたマルチプロセッサアーキテクチャ |
Country Status (10)
Country | Link |
---|---|
US (2) | US8984256B2 (ja) |
EP (1) | EP2288988A4 (ja) |
JP (1) | JP2010532905A (ja) |
KR (1) | KR101121606B1 (ja) |
CN (2) | CN104536723A (ja) |
AU (1) | AU2008355072C1 (ja) |
BR (1) | BRPI0811497A2 (ja) |
CA (1) | CA2684753A1 (ja) |
RU (1) | RU2450339C2 (ja) |
WO (1) | WO2009157943A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020181407A (ja) * | 2019-04-25 | 2020-11-05 | 株式会社デンソー | 並列化方法、半導体制御装置、及び車載制御装置 |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8984256B2 (en) * | 2006-02-03 | 2015-03-17 | Russell Fish | Thread optimized multiprocessor architecture |
CN101395578B (zh) | 2006-02-03 | 2013-01-09 | 拉塞尔·H·菲什三世 | 多处理器系统和线程级并行处理方法 |
US8209597B2 (en) * | 2009-03-23 | 2012-06-26 | Cognitive Electronics, Inc. | System and method for achieving improved accuracy from efficient computer architectures |
US8612687B2 (en) | 2010-05-26 | 2013-12-17 | International Business Machines Corporation | Latency-tolerant 3D on-chip memory organization |
US20120151232A1 (en) * | 2010-12-12 | 2012-06-14 | Fish Iii Russell Hamilton | CPU in Memory Cache Architecture |
US9823928B2 (en) * | 2011-09-30 | 2017-11-21 | Qualcomm Incorporated | FIFO load instruction |
KR101946455B1 (ko) * | 2013-03-14 | 2019-02-11 | 삼성전자주식회사 | 시스템 온-칩 및 이의 동작 방법 |
RU2538920C2 (ru) * | 2013-05-06 | 2015-01-10 | Общество с ограниченной ответственностью "Аби ИнфоПоиск" | Способ распределения задач сервером вычислительной системы, машиночитаемый носитель информации и система для реализации способа |
US10521387B2 (en) * | 2014-02-07 | 2019-12-31 | Toshiba Memory Corporation | NAND switch |
US9870401B2 (en) * | 2014-04-17 | 2018-01-16 | Wisoncsin Alumni Research Foundation | Database system with highly denormalized database structure |
RU2579899C1 (ru) * | 2014-09-30 | 2016-04-10 | Общество с ограниченной ответственностью "Аби Девелопмент" | Обработка документа с использованием нескольких потоков обработки |
US20160147667A1 (en) * | 2014-11-24 | 2016-05-26 | Samsung Electronics Co., Ltd. | Address translation in memory |
US11567911B2 (en) * | 2014-12-19 | 2023-01-31 | Sergey Anatol'evich GORISHNIY | System and method for management of functionally linked data |
CN104598319B (zh) * | 2015-01-13 | 2017-06-30 | 浪潮电子信息产业股份有限公司 | 一种实现应用性能优化的节点分配方法 |
RU2612569C2 (ru) * | 2015-01-27 | 2017-03-09 | Акционерное общество "Научно-исследовательский институт Авиационного оборудования" | Способ автоматического управления избыточностью неоднородной вычислительной системы и устройство для его реализации |
US9959208B2 (en) | 2015-06-02 | 2018-05-01 | Goodrich Corporation | Parallel caching architecture and methods for block-based data processing |
CN105808256B (zh) * | 2016-03-08 | 2017-06-23 | 武汉斗鱼网络科技有限公司 | 一种构造合法堆栈返回值绕过函数调用检测的方法与系统 |
RU2644535C2 (ru) * | 2016-06-01 | 2018-02-12 | Владимир Викторович Ермишин | Архитектура параллельной вычислительной системы |
US20180113840A1 (en) * | 2016-10-25 | 2018-04-26 | Wisconsin Alumni Research Foundation | Matrix Processor with Localized Memory |
DE102016224747A1 (de) * | 2016-12-12 | 2018-06-14 | Robert Bosch Gmbh | Steuergerät |
US10459771B2 (en) | 2017-02-22 | 2019-10-29 | Red Hat Israel, Ltd. | Lightweight thread synchronization using shared memory state |
WO2019025864A2 (en) | 2017-07-30 | 2019-02-07 | Sity Elad | ARCHITECTURE OF DISTRIBUTED PROCESSORS BASED ON MEMORIES |
RU2665224C1 (ru) * | 2017-11-09 | 2018-08-28 | Российская Федерация, от имени которой выступает Государственная корпорация по космической деятельности "РОСКОСМОС" | Способ динамического контроля конфликтных ситуаций в сложных технических системах со средой облачных вычислений |
US10613955B2 (en) * | 2017-12-28 | 2020-04-07 | Intel Corporation | Platform debug and testing with secured hardware |
US11030148B2 (en) | 2018-04-04 | 2021-06-08 | Lawrence Livermore National Security, Llc | Massively parallel hierarchical control system and method |
CN111382091A (zh) * | 2018-12-30 | 2020-07-07 | 德克萨斯仪器股份有限公司 | 用于低周期存储器访问和附加功能的宽边随机访问存储器 |
CN111209042B (zh) * | 2020-01-06 | 2022-08-26 | 北京字节跳动网络技术有限公司 | 一种建立函数栈的方法、装置、介质和电子设备 |
KR20210156058A (ko) | 2020-06-17 | 2021-12-24 | 삼성전자주식회사 | 인-메모리 프로세싱을 수행하는 메모리 디바이스 |
CN117555599B (zh) * | 2024-01-10 | 2024-04-05 | 睿思芯科(成都)科技有限公司 | 加快关键数据访问速度的芯片设计方法、系统及相关设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06231092A (ja) * | 1992-05-22 | 1994-08-19 | Internatl Business Mach Corp <Ibm> | コンピュータ・システム |
JPH1049428A (ja) * | 1996-08-02 | 1998-02-20 | Nec Corp | 演算処理機能付メモリlsiとそれを用いる主記憶システム及びその制御方法 |
JPH11110215A (ja) * | 1997-10-03 | 1999-04-23 | Keisuke Shindo | マルチスレッドプログラムを使用する情報処理装置 |
JP2000020450A (ja) * | 1998-06-26 | 2000-01-21 | Nec Corp | 演算処理機能付パケット型メモリシステムおよびその制御方法 |
JP2000207248A (ja) * | 1999-01-14 | 2000-07-28 | Toshiba Corp | 並列プログラムの挙動生成装置及び方法並びに並列プログラムの挙動生成用ソフトウェアを記録した記録媒体 |
JP2002108691A (ja) * | 2000-09-29 | 2002-04-12 | Mitsubishi Electric Corp | 半導体記憶装置および半導体記憶装置の制御方法 |
WO2007092528A2 (en) * | 2006-02-03 | 2007-08-16 | Fish Russell H Iii | Thread optimized multiprocessor architecture |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US553890A (en) * | 1896-02-04 | zeidlee | ||
US3990054A (en) * | 1974-11-05 | 1976-11-02 | Honeywell Inc. | Microprogram organization techniques |
US4661900A (en) * | 1983-04-25 | 1987-04-28 | Cray Research, Inc. | Flexible chaining in vector processor with selective use of vector registers as operand and result registers |
US4641238A (en) * | 1984-12-10 | 1987-02-03 | Itt Corporation | Multiprocessor system employing dynamically programmable processing elements controlled by a master processor |
US5440749A (en) * | 1989-08-03 | 1995-08-08 | Nanotronics Corporation | High performance, low cost microprocessor architecture |
EP0715251B1 (en) * | 1994-11-29 | 2000-07-26 | International Business Machines Corporation | One cycle processor for real time processing |
US6524019B1 (en) * | 1995-03-27 | 2003-02-25 | Nec Corporation | Inter-cluster data transfer system and data transfer method |
JPH1111021A (ja) | 1997-06-23 | 1999-01-19 | Nippon Kayaku Co Ltd | 感熱記録材料 |
US6076152A (en) * | 1997-12-17 | 2000-06-13 | Src Computers, Inc. | Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem |
US7373440B2 (en) * | 1997-12-17 | 2008-05-13 | Src Computers, Inc. | Switch/network adapter port for clustered computers employing a chain of multi-adaptive processors in a dual in-line memory module format |
NO308149B1 (no) * | 1998-06-02 | 2000-07-31 | Thin Film Electronics Asa | Skalerbar, integrert databehandlingsinnretning |
FI117523B (fi) * | 1998-10-07 | 2006-11-15 | Nokia Corp | Menetelmä tehonkulutuksen säätämiseksi |
US6606704B1 (en) | 1999-08-31 | 2003-08-12 | Intel Corporation | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode |
US7043416B1 (en) * | 2001-07-27 | 2006-05-09 | Lsi Logic Corporation | System and method for state restoration in a diagnostic module for a high-speed microprocessor |
US7064579B2 (en) * | 2002-07-08 | 2006-06-20 | Viciciv Technology | Alterable application specific integrated circuit (ASIC) |
US6803786B1 (en) * | 2003-03-11 | 2004-10-12 | Xilinx, Inc. | Structures and methods providing columns of tightly coupled processor and RAM blocks within an array of logic blocks |
US7558920B2 (en) * | 2004-06-30 | 2009-07-07 | Intel Corporation | Apparatus and method for partitioning a shared cache of a chip multi-processor |
US7676646B2 (en) | 2005-03-02 | 2010-03-09 | Cisco Technology, Inc. | Packet processor with wide register set architecture |
US20070028010A1 (en) * | 2005-08-01 | 2007-02-01 | Texas Instruments, Inc. | Peripheral device utilization monitoring |
US7421566B2 (en) * | 2005-08-12 | 2008-09-02 | International Business Machines Corporation | Implementing instruction set architectures with non-contiguous register file specifiers |
US8984256B2 (en) | 2006-02-03 | 2015-03-17 | Russell Fish | Thread optimized multiprocessor architecture |
TW200737188A (en) * | 2006-03-27 | 2007-10-01 | Memocom Corp | Complex memory chip |
EP1855181A2 (en) * | 2006-05-10 | 2007-11-14 | Marvell World Trade Ltd. | System with high power and low power processors and thread transfer |
US7870551B2 (en) * | 2006-05-18 | 2011-01-11 | International Business Machines Corporation | Optimization of thread wake up for shared processor partitions |
US7917788B2 (en) * | 2006-11-01 | 2011-03-29 | Freescale Semiconductor, Inc. | SOC with low power and performance modes |
US20120151232A1 (en) | 2010-12-12 | 2012-06-14 | Fish Iii Russell Hamilton | CPU in Memory Cache Architecture |
-
2008
- 2008-06-26 US US12/147,332 patent/US8984256B2/en active Active
- 2008-06-27 AU AU2008355072A patent/AU2008355072C1/en not_active Ceased
- 2008-06-27 WO PCT/US2008/068566 patent/WO2009157943A1/en active Application Filing
- 2008-06-27 CN CN201410827036.7A patent/CN104536723A/zh active Pending
- 2008-06-27 KR KR1020097023628A patent/KR101121606B1/ko active IP Right Grant
- 2008-06-27 CN CN200880014972.9A patent/CN101796484B/zh active Active
- 2008-06-27 CA CA002684753A patent/CA2684753A1/en not_active Abandoned
- 2008-06-27 EP EP08772153A patent/EP2288988A4/en not_active Withdrawn
- 2008-06-27 JP JP2010518258A patent/JP2010532905A/ja active Pending
- 2008-06-27 RU RU2009145519/08A patent/RU2450339C2/ru active
- 2008-06-27 BR BRPI0811497-8A2A patent/BRPI0811497A2/pt not_active IP Right Cessation
-
2014
- 2014-11-25 US US14/553,262 patent/US9934196B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06231092A (ja) * | 1992-05-22 | 1994-08-19 | Internatl Business Mach Corp <Ibm> | コンピュータ・システム |
JPH1049428A (ja) * | 1996-08-02 | 1998-02-20 | Nec Corp | 演算処理機能付メモリlsiとそれを用いる主記憶システム及びその制御方法 |
JPH11110215A (ja) * | 1997-10-03 | 1999-04-23 | Keisuke Shindo | マルチスレッドプログラムを使用する情報処理装置 |
JP2000020450A (ja) * | 1998-06-26 | 2000-01-21 | Nec Corp | 演算処理機能付パケット型メモリシステムおよびその制御方法 |
JP2000207248A (ja) * | 1999-01-14 | 2000-07-28 | Toshiba Corp | 並列プログラムの挙動生成装置及び方法並びに並列プログラムの挙動生成用ソフトウェアを記録した記録媒体 |
JP2002108691A (ja) * | 2000-09-29 | 2002-04-12 | Mitsubishi Electric Corp | 半導体記憶装置および半導体記憶装置の制御方法 |
WO2007092528A2 (en) * | 2006-02-03 | 2007-08-16 | Fish Russell H Iii | Thread optimized multiprocessor architecture |
JP2009525545A (ja) * | 2006-02-03 | 2009-07-09 | ラッセル・エイチ・フィッシュ・ザ・サード | スレッドに最適化されたマルチプロセッサアーキテクチャ |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020181407A (ja) * | 2019-04-25 | 2020-11-05 | 株式会社デンソー | 並列化方法、半導体制御装置、及び車載制御装置 |
JP7107275B2 (ja) | 2019-04-25 | 2022-07-27 | 株式会社デンソー | 並列化方法、半導体制御装置、及び車載制御装置 |
Also Published As
Publication number | Publication date |
---|---|
AU2008355072C1 (en) | 2012-11-29 |
AU2008355072B2 (en) | 2012-05-31 |
EP2288988A4 (en) | 2012-06-27 |
CN101796484B (zh) | 2015-02-04 |
CN101796484A (zh) | 2010-08-04 |
US8984256B2 (en) | 2015-03-17 |
US20080320277A1 (en) | 2008-12-25 |
CA2684753A1 (en) | 2009-12-28 |
KR101121606B1 (ko) | 2012-02-28 |
RU2009145519A (ru) | 2011-06-20 |
US20150234777A1 (en) | 2015-08-20 |
AU2008355072A1 (en) | 2010-01-14 |
WO2009157943A1 (en) | 2009-12-30 |
BRPI0811497A2 (pt) | 2014-11-18 |
EP2288988A1 (en) | 2011-03-02 |
RU2450339C2 (ru) | 2012-05-10 |
US9934196B2 (en) | 2018-04-03 |
CN104536723A (zh) | 2015-04-22 |
KR20100032359A (ko) | 2010-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9934196B2 (en) | Thread optimized multiprocessor architecture | |
JP4987882B2 (ja) | スレッドに最適化されたマルチプロセッサアーキテクチャ | |
JP2966085B2 (ja) | 後入れ先出しスタックを備えるマイクロプロセッサ、マイクロプロセッサシステム、及び後入れ先出しスタックの動作方法 | |
US20170153959A1 (en) | Streaming engine with deferred exception reporting | |
US20200401526A1 (en) | Streaming engine with early and late address and loop count registers to track architectural state | |
US20180173422A1 (en) | Streaming engine with fetch ahead hysteresis | |
Kim et al. | Silent-PIM: Realizing the processing-in-memory computing with standard memory requests | |
CN115698970A (zh) | 具有近存储器地址生成的存储器访问命令 | |
CN115114186A (zh) | 用于多核架构的近数据加速的技术 | |
US20020099910A1 (en) | High speed low power cacheless computer system | |
Vieira et al. | A compute cache system for signal processing applications | |
CN117597691A (zh) | 用于深度神经网络体系结构中的推理处理的稀疏性感知数据储存器 | |
WO2009136402A2 (en) | Register file system and method thereof for enabling a substantially direct memory access | |
CN113448880A (zh) | 存储装置和存储器中的启用一致多处理的计算 | |
CN117667210A (zh) | 指令控制装置、方法、处理器、芯片和板卡 | |
WO2009156920A1 (en) | Method, register file system, and processing unit device enabling substantially direct cache memory access |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120410 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120814 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20121114 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20121121 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20121214 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20121221 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130115 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130122 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130214 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130319 |