JP2010532905A - スレッドに最適化されたマルチプロセッサアーキテクチャ - Google Patents

スレッドに最適化されたマルチプロセッサアーキテクチャ Download PDF

Info

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
Application number
JP2010518258A
Other languages
English (en)
Other versions
JP2010532905A5 (ja
Inventor
ラッセル・エイチ・フィッシュ
Original Assignee
ラッセル・エイチ・フィッシュ
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ラッセル・エイチ・フィッシュ filed Critical ラッセル・エイチ・フィッシュ
Publication of JP2010532905A publication Critical patent/JP2010532905A/ja
Publication of JP2010532905A5 publication Critical patent/JP2010532905A5/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7846On-chip cache and off-chip main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

一態様において本発明はシステムであり、(a)単一のチップ上の複数の並列プロセッサと、(b)チップ上に配置されていて、かつプロセッサの各々によってアクセス可能なコンピュータメモリとを備えていて、プロセッサの各々は、de minimis命令セットを処理するように動作可能であり、プロセッサの各々は、プロセッサの中の少なくとも3つの特定のレジスタの各々専用のローカルキャッシュを有している。別の態様において本発明はシステムであり、(a)単一のチップ上の複数の並列プロセッサと、(b)チップ上に配置されていて、かつプロセッサの各々によってアクセス可能なコンピュータメモリとを備えていて、プロセッサの各々は、スレッドレベルの並列処理のために最適化された命令セットを処理するように動作可能であり、各プロセッサは、チップ上のコンピュータメモリの内部データバスにアクセスし、内部データバスはメモリの1行の幅である。

Description

本発明は、スレッドに最適化されたマルチプロセッサアーキテクチャに関する。
コンピュータの速度は、2つの一般的な方法を用いて増加させることができる。命令実行速度を上げる、または並列により多くの命令を実行する。命令実行速度が、シリコン中の電子移動度の限界に近づくとき、並列法(parallelism)は、コンピュータの速度を上げるための最善の代替案になる。
並列法の以前の試みは、以下を含んでいる。
1.次の命令のフェッチング(fetching)を、現在の命令の実行とオーバーラップさせること。
2.命令のパイプライン化(pipelining)。命令パイプラインは、各命令をできるだけ多くの部分に分解し、次にシーケンシャル命令を並列実行ユニットの中にマッピングすることを試みる。理論上最高の改良は、多段階命令の非効率性、並列実行ユニットを満たされた状態に保つための十分なシーケンシャル命令を提供するための多くのソフトウェアプログラムの無能力、および、分岐、ループ、またはケース構文が実行ユニットの補充を必要とする状態に遭遇したとき、払われるかなりの時間ペナルティ(penalty)のために、めったに達成されない。
3.単一命令多重データ(Single instruction multiple data)すなわちSIMD。この種の技術は、インテルペンティアム(登録商標)3および他のプロセッサの中で実現されているように、インテルSSE命令セットの中で見つかる。この技術においては、単一の命令が複数のデータセット上で実行される。この技術は、特別なアプリケーション、例えばビデオグラフィックスレンダリングの用途にだけ役立つ。
4.ハイパーキューブ。この技術は、プロセッサおよびローカルメモリの大きな二次元アレイ(array)、時には三次元アレイを用いる。プロセッサのこれらのアレイをサポートするのに必要な通信および相互接続は、本質的に、それらを非常に専門化されたアプリケーションに限定する。
パイプラインは、1つの命令の実行の一部分、例えばフェッチ、デコード、実行、ストアなどを連続して実行する複数のシーケンシャルな段階から成る命令実行ユニットである。いくつかのパイプラインが並列に配置され得るので、全てのパイプラインが命令を実行している状態になるまで、プログラム命令が次々と各パイプラインに供給される。それから、満たされた命令は、最初のパイプラインで繰り返される。N個のパイプラインが命令および実行で満たされるとき、性能に対する効果は、単一の実行ユニットに対して実行速度をN倍増加させるのと理論的に同じである。
成功するパイプライン化は、以下に依存する。
1.命令の実行は、いくつかの連続した状態として定義されることが可能でなければならない。
2.各命令は、同じ数の状態を持っていなければならない。
3.命令当たりの状態の数は、並列実行ユニットの最大数を決定する。
パイプライン化は、並列のパイプラインの数に基づいて性能の上昇を成し遂げることができ、かつ、並列のパイプラインの数は、一命令の中の状態の数によって決定されるので、パイプラインは、複雑な複数の状態を持つ命令を助長する。
重度にパイプライン化されたコンピュータは、並列パイプライン実行ユニットから予想される理論的な性能の改善に近い性能を、めったに成し遂げることはない。このパイプラインペナルティ(penalty)のいくつかの理由は、以下を含んでいる。
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.レジスタの調停を除くことができる。
さらに、N個の単純化されたプロセッサを備えるシステムには、パイプライン化されたCPUに勝る以下の利点がある。
1.最大パイプライン並列性の制限がない。
2.パイプライン型プロセッサとは異なり、複数の独立型プロセッサは、使用しないときに、電力消費を減らすために、選択的に電源を切ることができる。
並列法への現在のアプローチに関する他の課題
並列法の多くの実施態様は、アムダールの法則の制限に屈する。並列法による加速は、課題の直列不可能(non-serializable)部分に起因するオーバーヘッドによって制限される。本質的には、並列法の量が増加するにつれて、それをサポートするために必要な通信が、並列法に起因する増進を圧倒する。
レッドライン(Redline)にあるストップライト(Stoplight)
現在のプロセッサの他の非効率性は、即時の計算要求に応ずるためにコンピューティングパワーを拡大縮小する能力がないことである。大部分のコンピュータは、何かが起こるのを待ちつつ、それらの時間の大部分を費やしている。それらは、入出力、次の命令、メモリアクセス、または時にはヒューマンインタフェースを待っている。この待機は、コンピューティングパワーの非効率的な浪費である。さらに、待機に費やされるコンピュータの時間は、しばしば電力消費および熱の発生を増加させる結果となる。
待機の原則に対する例外は、エンジンコントローラ、シグナルプロセッサ、およびファイアウォールルータのようなアプリケーションである。これらのアプリケーションは、課題のセットおよび解決策のセットの予め定められた性質のために、並列法を加速するための優れた候補である。N個の独立した乗算の積を必要とする課題は、N個の乗算器を用いれば、より速く解くことができる。
汎用コンピュータの認められた性能は、実際にはそのピークの性能である。最近、汎用コンピュータが忙しくなり始めたのは、高速なスクリーンリフレッシュを伴うビデオゲームを走らせること、大きなソースファイルをコンパイルすること、またはデータベースを検索することによる。最適な世界において、ビデオレンダリングは、特別な目的、シェーディング、変換、およびレンダリングハードウェアを考慮に入れている。このような特定用途のハードウェアに対するプログラミングについて考える1つの方法は、「スレッド」の使用である。
スレッドは、独立したプログラムであり、自己完結型であり、まれにしかデータを他のスレッドに伝達しない。スレッドの一般的な使用法は、ゆっくりとしたリアルタイムの動作からデータを収集して、整理された結果を提供することである。スレッドは、ディスプレイ上の変化を描画するために用いられることもある。スレッドは、他のスレッドとの更なる相互作用を要求する前に、数千または数百万の状態を通って遷移することができる。独立したスレッドは、並列法を通して性能が増強される機会を示している。
多くのソフトウェアコンパイラは、ソフトウェア設計プロセスを考慮に入れるために、スレッドの生成および管理をサポートする。同じ考慮は、好ましい実施形態におけるスレッドに最適化されたマイクロプロセッサ(TOMI)の中で実現されるスレッドレベル並列法の技術を介して、複数のCPUの並列処理をサポートする。
スレッドレベル並列法
スレッディングは、単一のCPU上のソフトウェアプログラムを考慮するために、よく理解された技術である。スレッドレベル並列法は、TOMIプロセッサの使用を通してプログラムの加速を成し遂げることができる。
他の並列法に勝るTOMIプロセッサの1つの重要な利点は、TOMIプロセッサが、現在のソフトウェアプログラミング技法に対して最小限の変更しか必要としないことである。新規なアルゴリズムが開発される必要はない。多くの既存のプログラムは、再コンパイルされる必要があるかもしれないが、実質的に書き直される必要はない。
効果的なTOMIコンピュータアーキテクチャは、多数の単純化されたプロセッサに関して構築されるべきである。異なるアーキテクチャが、異なるタイプのコンピューティング課題のために用いられ得る。
基本的なコンピュータの動作
汎用コンピュータにとって、頻度を下げる順として最も一般的な動作は、ロードおよびストア、シーケンシング、および数学(Math)およびロジックである。
ロードおよびストア
ロードおよびストアのパラメータは、ソースおよび宛先である。ロードおよびストアの力は、ソースおよび宛先の範囲である(例えば、4ギガバイトは、256バイトより強力な範囲である)。現在のソースおよび宛先と関連する局所性(locality)は、多くのデータセットにとって重要である。プラス1、マイナス1は最も役に立つ。現在のソースおよび宛先からのオフセットが増加するほど、次第に役立たなくなる。
ロードおよびストアは、メモリ階層によっても影響され得る。記憶装置からのロードは、CPUが実行することができる最も遅い動作である。
シーケンシング
分岐およびループは、基本的なシーケンシング命令である。テストに基づいてシーケンスが変わる命令は、コンピュータが決定を行うやり方である。
数学およびロジック
数学およびロジック動作は、3つの動作の中で使用が最も少ない。ロジック動作は、CPUが実行することができる最も速い動作であり、単一のロジックゲートの遅延と同じ程度に小さい遅延しか必要としない。数学動作は、より複雑である。なぜなら、上位ビットが下位ビットの演算の結果に依存するからである。32ビットADDは、桁上げ先回り制御を用いても、少なくとも32ゲートの遅延を必要とする。シフトおよび加算手法を用いるMULTIPLYは、32個のADDに相当するものを必要とする。
命令サイズのトレードオフ
完全な命令セットは、演算コードから成り、それは、無限の可能なソース、宛先、演算、および次の命令を選択するのに十分大きい。残念なことに、完全な命令セットの演算コードは無限に幅が広く、従って命令のバンド幅はゼロである。
高い命令バンド幅のためのコンピュータ設計は、最少の演算コードビットで最も多くの共通ソース、宛先、演算、および次の命令を能率的に定めることができる演算コードを有する命令セットの作成を必要とする。
幅の広い演算コードは、高い命令バスバンド幅の要求につながり、結果として生じるアーキテクチャは、フォンノイマンボトルネックによって急速に制限され、コンピュータの性能は、メモリから命令をフェッチする速度によって制限される。
メモリバスが64ビット幅である場合、各メモリサイクルの中で、単一の64ビット命令、2つの32ビット命令、4つの16ビット命令、または8つの8ビット命令をフェッチすることができる。32ビット命令は、16ビット命令の2倍役立つべきである。なぜなら、それは半分の命令バンド幅をカットしているからである。
命令セット設計の主な目的は、命令の冗長性を減らすことである。一般に、最適化された効率的な命令セットは、命令およびデータの局所性を利用する。最も簡単な命令の最適化は、ずっと以前になされた。大部分のコンピュータプログラムにとって、最も見込みのある次の命令は、メモリの中のシーケンシャルな次の命令である。従って、次の命令フィールドを有するあらゆる命令の代わりに、大部分の命令は、次の命令が現在の命令+1であると仮定する。ソースのための0ビットおよび宛先のための0ビットを有するアーキテクチャを構築することは可能である。
スタックアーキテクチャ
スタックアーキテクチャコンピュータは、ゼロオペランドアーキテクチャとも呼ばれる。スタックアーキテクチャは、プッシュダウンスタックの内容に基づいて、全ての動作を実行する。2オペランド動作は、スタックに両方のオペランドが存在することを必要とする。動作を実行するとき、両方のオペランドがスタックからPOPされ、動作が実行され、かつ結果がスタックにPUSHされて戻される。スタックアーキテクチャコンピュータは、非常に短い演算コードを有することができる。なぜなら、ソースおよび宛先は、スタックにあると暗示されているからである。
大部分のプログラムは、必要なときにスタックで必ずしも利用可能ではないグローバルレジスタの内容を必要とする。この発生を最小限にする試みは、スタックの先頭にあるオペランド以外のオペランドにアクセスすることを可能にするスタックインデクシングを含む。スタックインデクシングは、追加の演算コードビットがより大きい命令という結果をもたらすか、またはスタックインデックス値をスタック自体に配置するための追加の動作を必要とする。時には1つ以上の追加のスタックが定義される。より良好であるが最適ではない解決策は、コンビネーション スタック/レジスタ アーキテクチャである。
スタックアーキテクチャ動作は、明らかな最適化に逆らう方法で、しばしば冗長でもある。例えば、各POPおよびPUSH動作は、スタックがメモリの中で操作されるときに時間を浪費するメモリ動作を引き起こす可能性を有している。さらに、スタック動作は、次の動作のために直ちに必要となるかもしれないオペランドを消費する可能性があり、これにより、さらに別のメモリ動作の可能性によってオペランドの重複を必要とする。例えば、一次元アレイの全要素に15を乗算する動作である。
1つのスタックアーキテクチャにおいて、これは以下によって実行される。
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行へ行く。
上記の例で、スタックアーキテクチャのための9ステップ対レジスタアーキテクチャのための5ステップを比較せよ。さらにまた、スタック動作は、スタック動作に起因して、余分のメモリアクセスのために少なくとも3回のあり得る機会を有している。仮定的なレジスタ/アキュムレータ アーキテクチャのループ制御は、レジスタの中で容易に処理され得る。
スタックは、式(expression)を評価するために役立ち、ほとんどのコンパイラでこのように用いられる。スタックは、入れ子にされた動作、例えばファンクションコールのためにも役立つ。ほとんどのCコンパイラは、ファンクションコールをスタックによって実行する。しかし、汎用記憶装置を補わないと、スタックアーキテクチャは、多くの追加データの転送および操作を必要とする。最適化のために、スタックPUSHおよびPOP動作は、また、数学およびロジック動作と区別しなければならない。しかし、上記の例から分かるように、スタックは、繰り返しデータをロードかつストアするとき、特に非効率的である。なぜならアレイアドレスがPUSH INDIRECTおよびPOP INDIRECTによって消費されるからである。
一態様において、本発明はシステムであり、(a)単一のチップ上の複数の並列プロセッサと、(b)チップ上に配置されていて、プロセッサの各々によってアクセス可能なコンピュータメモリとを備えていて、プロセッサの各々は、de minimis命令セットを処理するように動作可能であり、プロセッサの各々は、プロセッサ内の少なくとも3つの特定のレジスタの各々専用のローカルキャッシュを備えている。
様々な実施形態において、(1)ローカルキャッシュの各々のサイズは、チップ上のランダムアクセスメモリの1行に等しい。(2)関連するキャッシュを有する少なくとも3つの特定のレジスタは、命令レジスタ、ソースレジスタ、および宛先レジスタを含む。(3)de minimis命令セットは、7つの命令から成る。(4)プロセッサの各々は、単一のスレッドを処理するように動作可能である。(5)アキュムレータは、インクリメント命令を除く、あらゆる命令のためのオペランドである。(6)各命令のための宛先は、常にオペランドレジスタである。(7)3つのレジスタは自動インクリメントであり、3つのレジスタは自動デクリメントである。(8)各命令は、完了するのに1クロックサイクルしか必要としない。(9)命令セットは、BRANCH命令およびJUMP命令を備えていない。(10)各命令は、長さが、長くても8ビットである。(11)単一のマスタプロセッサは、並列プロセッサの各々を管理する役割を果たす。
別の態様において、本発明はシステムであり、(a)単一のチップ上の複数の並列プロセッサと、(b)チップ上に配置されていて、プロセッサの各々によってアクセス可能なコンピュータメモリとを備えていて、プロセッサの各々は、スレッドレベルの並列処理のために最適化された命令セットを処理するように動作可能である。
様々な実施形態において、(1)プロセッサの各々は、de minimis命令セットを処理するように動作可能である。(2)プロセッサの各々は、プロセッサ内の少なくとも3つの特定のレジスタの各々専用のローカルキャッシュを備えている。(3)ローカルキャッシュの各々のサイズは、チップ上のランダムアクセスメモリの1行に等しい。(4)少なくとも3つの特定のレジスタは、命令レジスタ、ソースレジスタ、および宛先レジスタを含む。(5)de minimis命令セットは、7つの命令から成る。(6)プロセッサの各々は、単一のスレッドを処理するように動作可能である。(7)単一のマスタプロセッサは、並列プロセッサの各々を管理する役割を果たす。(8)de minimis命令セットは、プロセッサの動作を最適化してソフトウェアコンパイラの効率を促進するための命令拡張の最小限のセットを含んでいる。
別の態様において、本発明は、単一チップ上の複数の並列プロセッサ、マスタプロセッサ、およびコンピュータメモリを用いるスレッドレベルの並列処理方法であり、複数のプロセッサの各々は、de minimis命令セットを処理して、単一のスレッドを処理するように動作可能であり、(a)ローカルキャッシュを複数のプロセッサの各々の中の3つの特定のレジスタの各々に割り当てるステップと、(b)単一のスレッドを処理するために、複数のプロセッサのうちの1つを割り当てるステップと、(c)プロセッサによって各々の割り当てられたスレッドを処理するステップと、(d)プロセッサによって処理された各スレッドからの結果を処理するステップと、(e)スレッドが処理された後に、複数のプロセッサのうちの1つの割り当てを解除するステップとを有していて、(f)de minimis命令セットは、プロセッサの管理を最適化するための命令の最小限のセットを含んでいる。
様々な実施形態において、de minimis命令セットは、7つの基本命令から成り、de minimis命令セット内の命令は、長さが最長でも8ビットである。de minimis命令セットは、7つの基本命令を越えて、一組の拡張命令を含み得る。これは、TOMI CPUの内部動作を最適化し、かつTOMI CPUによって実行されるソフトウェアプログラム命令の実行を最適化するのを助け、かつTOMI CPUのためのソフトウェアコンパイラの動作を最適化する。複数のTOMI CPUコアを有する本発明の実施形態は、複数のCPUコアを管理するために用いられるプロセッサ管理命令の限られたセットを有していてもよい。
別の態様において、本発明は、以下のものを備えているシステムである。(a)メモリモジュール上に搭載された複数の並列プロセッサと、(b)外部メモリコントローラと、(c)汎用中央演算処理装置。ここで、並列プロセッサの各々は、スレッドレベルの並列処理のために最適化された命令セットを処理するように動作可能である。
様々な実施形態において、(1)並列プロセッサの各々は、de minimis命令セットを処理するように動作可能であり、(2)メモリモードレジスタ内で割り当てられた1つ以上のビットは、並列プロセッサのうちの1つ以上をイネーブルまたはディセーブルにするように動作可能であり、(3)メモリモジュールは、デュアルインラインメモリモジュールであり、(4)プロセッサの各々は、単一のスレッドを処理するように動作可能であり、(5)複数のスレッドは、共有メモリを通じてデータを共有し、(6)複数のスレッドは、1つ以上の共有変数によってデータを共有し、(7)メモリモジュールは、DRAM、SRAM、およびフラッシュメモリのうちの1つ以上であり、(8)少なくとも1つの並列プロセッサがマスタプロセッサとみなされ、他の並列プロセッサはスレーブプロセッサとみなされ、(9)各プロセッサは、クロック速度を有していて、マスタプロセッサ以外の各プロセッサは、性能または電力消費を最適化するために調整されたプロセッサのクロック速度を有するように動作可能であり、(10)各プロセッサは、マスタプロセッサまたはスレーブプロセッサとみなされるように動作可能であり、(11)マスタプロセッサは、いくつかのスレーブプロセッサによる処理を要求し、いくつかのスレーブプロセッサからの出力を待ち、かつ出力を結合し、(12)マスタプロセッサは、出力が、いくつかのプロセッサの各々から受信されると、いくつかのプロセッサからの出力を結合し、(13)1つ以上の並列プロセッサが停止されることを可能にすることによって、低電力消費が提供され、(14)並列プロセッサの各々は、プログラムカウンタを伴っていて、並列プロセッサに伴われているプログラムカウンタに全て1を書き込むことによって停止されるように動作可能である。
別の態様において、本発明は、ダイナミックランダムアクセスメモリ(DRAM)のダイの中に埋め込まれた複数の並列プロセッサを備えていて、複数の並列プロセッサは、外部メモリコントローラおよび外部プロセッサと通信し、並列プロセッサの各々は、スレッドレベルの並列処理のために最適化された命令セットを処理するように動作可能であることを特徴とするシステムである。
様々な他の実施形態において、(1)ダイは、DRAMピン配列を有するパッケージに入れられていて、(2)並列プロセッサは、デュアルインラインメモリモジュール上に搭載され、(3)システムは、プロセッサがDRAMモードレジスタによってイネーブルにされる場合を除き、DRAMとして動作し、(4)外部プロセッサは、関連する永久記憶装置からDRAMへデータおよび命令を転送するように動作可能であり、(5)永久記憶装置は、フラッシュメモリであり、(6)外部プロセッサは、並列プロセッサと外部装置との間の入出力インターフェースを提供するように動作可能である。
別の態様において、本発明は、以下のようなシステムである。(a)単一のチップ上の複数のプロセッサと、(b)チップ上に配置されていて、プロセッサの各々によってアクセス可能なコンピュータメモリとを備えていて、プロセッサの各々は、de minimis命令セットを処理するように動作可能であり、かつプロセッサの各々は、プロセッサ内の少なくとも3つの特定のレジスタの各々専用のローカルキャッシュを有している。
様々な他の実施形態において、(1)ローカルキャッシュの各々のサイズは、チップ上のランダムアクセスメモリの1行(row)に等しく、(2)各プロセッサは、チップ上のランダムアクセスメモリの内部データバスにアクセスし、内部データバスは、ランダムアクセスメモリの1行の幅を有していて、(3)内部データバスの幅は、1024、2048、4096、8192、16328、または32656ビットであり、(4)内部データバスの幅は、1024ビットの整数倍であり、(5)プロセッサ内の少なくとも3つの特定のレジスタの各々専用のローカルキャッシュは、1メモリ読出し又は書込みサイクル内で満たされるか又は消去されるように動作可能であり、(6)de minimis命令セットは、基本的に7つの基本命令から成り、(7)基本命令セットは、ADD、XOR、INC、AND、STOREACC、LOADACC、およびLOADI命令を含み、(8)de minimis命令セット内の各命令は、長さが最長でも8ビットであり、(9)de minimis命令セットは、プロセッサ上での命令シーケンスの実行を最適化するための複数の命令拡張を有していて、更に、このような命令拡張は、基本的に20未満の命令から成り、(10)各命令拡張は、長さが最長でも8ビットであり、(11)de minimis命令セットは、チップ上の複数のプロセッサを選択的に制御するための一組の命令を有していて、(12)各プロセッサ制御命令は、長さが最長でも8ビットであり、(13)複数のプロセッサは、モノリシックメモリ装置のために設計された半導体製造プロセスを用いてチップ上に配置されるコンピュータメモリと共にチップ上に製造され、(14)半導体製造プロセスは、4層未満のメタル相互接続を用いていて、(15)半導体製造プロセスは、3層未満のメタル相互接続を用いていて、(16)複数のプロセッサのコンピュータメモリ回路内への集積化は、チップダイサイズの30%未満の増加という結果をもたらし、(17)複数のプロセッサのコンピュータメモリ回路内への集積化は、チップダイサイズの20%未満の増加という結果をもたらし、(18)複数のプロセッサのコンピュータメモリ回路内への集積化は、チップダイサイズの10%未満の増加という結果をもたらし、(19)複数のプロセッサのコンピュータメモリ回路内への集積化は、チップダイサイズの5%未満の増加という結果をもたらし、(20)250,000個未満のトランジスタが、チップ上の各プロセッサを作成するために用いられ、(21)チップは、4層未満のメタル相互接続を用いた半導体製造プロセスを用いて製造され、(22)プロセッサの各々は、単一のスレッドを処理するように動作可能であり、(23)アキュムレータは、インクリメント命令を除く、あらゆる基本命令のためのオペランドであり、(24)各基本命令のための宛先は、常にオペランドレジスタであり、(25)3つのレジスタは自動インクリメントであり、かつ3つのレジスタは自動デクリメントであり、(26)各基本命令は、完了するために1クロックサイクルのみを必要とし、(27)命令セットは、BRANCH命令およびJUMP命令を有しておらず、(28)単一のマスタプロセッサが、並列プロセッサの各々を管理する役割を担っている。
別の態様において、本発明は、以下のようなシステムである。(a)単一のチップ上の複数の並列プロセッサと、(b)チップ上に配置されていて、プロセッサの各々によってアクセス可能なコンピュータメモリとを備えていて、プロセッサの各々は、スレッドレベルの並列処理のために最適化された命令セットを処理するように動作可能であり、かつ各プロセッサは、チップ上のコンピュータメモリの内部データバスにアクセスし、内部データバスは、メモリの1行より幅が広くない。
様々な実施形態において、(1)プロセッサの各々は、de minimis命令セットを処理するように動作可能であり、(2)プロセッサの各々は、プロセッサ内の少なくとも3つの特定のレジスタの各々専用のローカルキャッシュを有していて、(3)ローカルキャッシュの各々のサイズは、チップ上のコンピュータメモリの1行に等しく、(4)少なくとも3つの特定のレジスタは、命令レジスタ、ソースレジスタ、および宛先レジスタを含み、(5)de minimis命令セットは、基本的に7つの基本命令から成り、(6)基本命令セットは、ADD、XOR、INC、AND、STOREACC、LOADACC、およびLOADI命令を含み、(7)命令セット内の各命令は、長さが最長でも8ビットであり、(8)プロセッサの各々は、単一のスレッドを処理するように動作可能であり、(9)単一のマスタプロセッサが、並列プロセッサの各々を管理する役割を担っていて、(10)de minimis命令セットは、プロセッサ上での命令シーケンスの実行を最適化するための複数の命令拡張を有していて、更に、このような命令拡張は、20未満の命令を有していて、(11)各命令拡張は、長さが最長でも8ビットであり、(12)de minimis命令セットは、チップ上の複数のプロセッサを選択的に制御するための一組の命令を有していて、(13)各プロセッサ制御命令は、長さが最長でも8ビットであり、(14)複数のプロセッサは、モノリシックメモリデバイスのために設計された半導体製造プロセスを用いてチップ上に配置されるコンピュータメモリと共にチップ上に製造されることが可能である。
別の態様において、本発明は、単一のチップ上の複数の並列プロセッサ、マスタプロセッサ、およびコンピュータメモリを利用するスレッドレベルの並列処理の方法であり、複数のプロセッサの各々は、de minimis命令セットを処理し、かつ単一のスレッドを処理するように動作可能であり、以下のステップを有している。(a)ローカルキャッシュを複数のプロセッサの各々の中の3つの特定のレジスタの各々に割り当てるステップと、(b)単一のスレッドを処理するために複数のプロセッサのうちの1つを割り当てるステップと、(c)プロセッサによって各々の割り当てられたスレッドを処理するステップと、(d)プロセッサによって処理された各スレッドからの結果を処理するステップと、(e)スレッドが処理された後に、複数のプロセッサのうちの1つの割り当てを解除するステップ。
様々な実施形態において、(1)de minimis命令セットは、基本的に7つの基本命令から成り、(2)基本命令は、ADD、XOR、INC、AND、STOREACC、LOADACC、およびLOADI命令を有していて、(3)de minimis命令セットは、複数のプロセッサを選択的に制御するための一組の命令を有していて、(4)各プロセッサ制御命令は、長さが最長でも8ビットであり、(5)方法は、各プロセッサがメモリの内部データバスを用いてコンピュータメモリにアクセスするステップを更に有していて、内部データバスは、チップ上のメモリの1行の幅であり、(6)de minimis命令セット内の各命令は、長さが最長でも8ビットである。
別の態様において、本発明は、以下のようなシステムである。(a)メモリデバイスのための電子工業規格デバイスのパッケージングおよびピンレイアウトと互換性があるメモリチップ内に埋め込まれた複数のプロセッサを備えていて、(b)プロセッサのうちの1つ以上は、メモリチップのメモリモードレジスタに送信される情報によって起動することができ、ここで、メモリチップは、プロセッサのうちの1つ以上がメモリモードレジスタを通じて起動する場合を除き、工業規格メモリデバイスの動作と機能的に互換性がある。
一実施形態における例示的なTOMIアーキテクチャを示している。 例示的な命令セットを示している。 動作中の前方分岐を示している。 例示的なTOMI命令セットのための命令マップを示している。 複数のTOMIプロセッサ管理命令拡張の例示的なセットを示している。 TOMIプロセッサのためのクロックプログラミング回路を示している。 命令拡張の例示的なセットを示している。 様々なアドレッシングモードの有効アドレスを示している。 4〜32ビットから如何にしてデータ経路が容易に作成されるかを示している。 例示的なローカルキャッシュを示している。 例示的なキャッシュ管理状態を示している。 幅の広いシステムRAMバスを活用するために構成された追加の処理機能の一実施形態を示している。 TOMIプロセッサによってアクセスされる2つのメモリバンクに対するデータラインをインターリーブするための例示的な回路を示している。 例示的なメモリマップを示している。 例示的なプロセッサ稼働率テーブルを示している。 プロセッサ割り当ての3つの構成要素を示している。 DIMMパッケージ上の複数のTOMIプロセッサの一実施形態を示している。 汎用CPUとインターフェースしているDIMMパッケージ上の複数のTOMIプロセッサの一実施形態を示している。 複数のTOMIプロセッサの一実施形態のための例示的なTOMIプロセッサの初期化を示している。 TOMIプロセッサの初期化のためのメモリモードレジスタ5の使用を示している。 例示的なTOMIプロセッサ稼働状態図を示している。 例示的なプロセッサ間通信回路設計を示している。 仕事を実行するためのTOMIプロセッサを識別するための例示的なハードウェア実装を示している。 例示的なプロセッサ調停図を示している。 例示的なファクタリングを示している。 例示的なシステムRAMを示している。 64個のプロセッサのモノリシックアレイのための例示的な平面図を示している。 TOMIプロセッサのモノリシックアレイのための他の例示的な平面図を示している。 TOMI周辺機器コントローラチップ(TOMIPCC)のための例示的な平面図を示している。 TOMIPCCを用いている携帯電話言語翻訳ルーチンアプリケーションのための例示的な設計を示している。 TOMIPCCおよび複数のTOMI DIMMを用いているメモリ中心のデータベースアプリケーションのための例示的な設計を示している。 32ビットTOMIプロセッサの例示的な実施形態のための最高レベルの配線図を示している。 32ビットTOMIプロセッサの例示的な実施形態のための最高レベルの配線図を示している。 32ビットTOMIプロセッサの例示的な実施形態のための最高レベルの配線図を示している。 32ビットTOMIプロセッサの例示的な実施形態のための最高レベルの配線図を示している。 図15A〜Dに示した配線図のための信号の説明を示している。
本発明の少なくとも1つの実施形態のTOMIアーキテクチャは、好ましくは、汎用コンピュータとして動作可能な最小限のロジックを用いる。最も一般的な動作には優先権が与えられる。大部分の動作は、可視的、規則的、かつコンパイラ最適化のために利用可能である。
一実施形態において、図1に示すように、TOMIアーキテクチャは、アキュムレータ、レジスタ、およびスタックアーキテクチャ上での変形である。この実施形態において、
1.アキュムレータアーキテクチャと同様に、アキュムレータは、インクリメント命令を除いて、常にオペランドのうちの1つである。
2.レジスタアーキテクチャと同様に、宛先は、常にオペランドレジスタのうちの1つである。
3.アキュムレータおよびプログラムカウンタは、レジスタ空間の中にもあり、従って操作され得る。
4.3つの特別なレジスタは、自動インクリメントおよび自動デクリメントであり、入出力のスタックおよびストリームを作成するのに役立つ。
5.全ての命令は、長さが8ビットであり、命令デコードを単純化して速度を上げている。
6.分岐(BRANCH)またはジャンプ(JUMP)命令がない。
7.図2に示すように、8ビット命令から3ビットのオペレータを選択することを可能にする7つの命令しかない。
好ましい実施形態のいくつかの利点は、以下を含む。
1.全ての動作は、パイプラインによって必要とされるものと同等のものによって抑えられるのではなく、ロジックによって許容される最大速度で動く。論理演算は最も高速である。数学演算は次に高速である。メモリアクセスを必要とする動作は最も遅い。
2.アーキテクチャは、パッケージピン、加算器桁上げ時間、および有用性のみによって制限される任意のデータ幅に比例する。
3.アーキテクチャは、汎用コンピュータの全ての動作を実行するのに必要な最小限の可能な機能に近い。
4.アーキテクチャは、非常に透明で、非常に規則的であり、大部分の動作は、最適化コンパイラで利用可能である。
アーキテクチャは、単一のモノリシックチップ上で、多数回、複製されるために十分簡単に設計されている。一実施形態は、メモリとモノリシックのCPUの複数のコピーを埋め込んでいる。32ビットCPUは、大部分のゲートはレジスタを定めている1,500ゲート足らずで実現され得る。好ましい実施形態におけるほとんど1,000個のTOMI CPUは、単一のIntel Pentium(登録商標) 4と同数のトランジスタを用いて実現され得る。
TOMI CPUの縮小命令セットは、汎用コンピュータのために必要な動作を実行するために考慮に入れられる。1つのプロセッサのための命令セットが小さいほど、それは、より効率的に動作する。TOMI CPUは、最新のプロセッサアーキテクチャと比較して、非常に少ない数の命令によって設計されている。例えば、TOMI CPUの一実施形態が25命令を有しているのに比べて、Intel Pentiumプロセッサは286命令を有していて、Intel Itanium Montecitoプロセッサは195命令を有していて、StrongARMプロセッサは127命令を有していて、IBM Cellプロセッサは400以上の命令を有している。
TOMI CPUのための命令の基本セットは、単純化されていて、最新世代のPentiumプロセッサが必要とする30クロックサイクルとは対照的に、単一のシステムクロックサイクルの中で実行するように設計されている。TOMI CPUアーキテクチャは、「パイプラインのない」アーキテクチャである。このアーキテクチャおよび単一クロックサイクル命令実行は、他の並列処理またはパイプラインアーキテクチャで見られるストール、依存および浪費されるクロックサイクルを著しく減らすか又は除去する。基本命令が、実行するために単一クロックサイクルを必要とするのみであると共に、クロック速度は増加する(クロックサイクル時間は減少する)ので、実行結果を複雑な数学的命令(例えばADD)のために回路のトランジスタゲートを通して伝えるために必要な時間は、単一クロックサイクルの限界に達し得る。このような場合に、より速い命令の実行を減速させないために、特定の命令の実行に対して2クロックサイクルを許可することは最適であり得る。これは、CPU設計のシステムクロック速度、製造プロセス、および回路レイアウトに対する最適化に依存する。
TOMIの単純化された命令セットは、32ビットTOMI CPUが、5,000より少ないトランジスタ(キャッシュを含まない)で造られることを可能にする。単一の32ビットTOMI CPUの一実施形態のトップレベルの回路図が、図15Aから15Dに示されていて、信号の説明が、図15Eに示されている。キャッシュおよび関連するデコードロジックを含めても、32ビットTOMI CPUは、40,000から200,000個のトランジスタ(CPUキャッシュのサイズによる)を用いて造ることができる。これに比べて、最新世代のIntel Pentiumマイクロプロセッサチップのためには、250,000,000個のトランジスタが必要とされる。従来のマイクロプロセッサアーキテクチャ(少し例を挙げれば、Intel Pentium、Itanium、IBM Cell、およびStrongARM)は、処理能力の増加を成し遂げるために、膨大かつ増加しつつある数のトランジスタを必要とした。TOMI CPUアーキテクチャは、CPUコア当たり非常に少ない数のトランジスタを使用することによって、この工業の進行を否定する。TOMI CPUのための少ないトランジスタ数は、多数の利点を提供する。
TOMI CPUのコンパクトなサイズのため、複数のCPUを同じシリコンチップ上に造ることができる。これは、また、DRAMチップ自体の製造費用のほかに、少しの追加製造費用で、複数のCPUを、メインメモリ、例えばDRAMと同じチップ上に造ることを可能にする。従って、DRAMチップのためのダイサイズおよび製造費用の最小限の増加のみで、複数のTOMI CPUが、並列処理のために単一のチップ上に配置され得る。例えば、512MBのDRAMは、ほぼ700,000,000個のトランジスタを有している。64個のTOMI CPU(単一のTOMI CPUに対して200,000個のトランジスタを仮定する)は、いかなるDRAM設計に対しても、12,800,000個のトランジスタを加えるだけである。512MBのDRAMに対して、64個のTOMI CPUは、ダイサイズを5%未満だけ増加させる。
TOMI CPUは、例えばDRAM、SRAM、およびフラッシュメモリデバイスのための、既存の安価な必需品(commodity)メモリ製造プロセスを用いて製造されるように設計されている。TOMI CPUのための少ないトランジスタ数は、CPUが、8層以上のメタル相互接続を利用する大きなマイクロプロセッサチップ(例えばIntel Pentium)を製造するために用いられる複雑で高価な製造プロセスまたは他の論理プロセスではなく、2層のメタル相互接続による安価な半導体製造プロセスを用いて、小さい領域内に造ることができ、かつシリコン内で容易に相互接続することができることを意味する。現代のDRAMおよび他の必需品メモリチップは、より安い製造コスト、より多くの製品の生産量、及びより高い製品の歩留まりを達成するために、より少ない層(例えば2)のメタル相互接続による、より単純で、より安いコストの半導体製造プロセスを利用している。必需品メモリデバイスのための半導体製造プロセスは、通常、低い漏れ電流のデバイスの動作によって特徴付けられる。一方、最新のマイクロプロセッサを造るために用いられるプロセスは、トランジスタレベルの低い漏れ電流値よりはむしろ、高速および高性能特性のために努力する。DRAMおよび他のメモリデバイスのために用いられるのと同じ製造プロセスによって効率的に実現されるTOMI CPUの能力は、TOMI CPUが、既存のDRAMチップ(または他のメモリチップ)の中に埋め込まれて、低コスト、高い歩留まりのメモリチップ製造プロセスを利用することを可能にする。これは、また、TOMI CPUが、(例えば、メモリデバイスのためのJEDEC規格に準拠する)同じパッケージングおよびデバイスピンレイアウト、製造設備、試験設備、および現在産業界でDRAMおよび他のメモリチップのために用いる試験ベクトル(vector)を用いて製造され得るという利点を提供する。逆に、従来のマイクロプロセッサチップの中にDRAMメモリを埋め込むことは、反対方向に作用する。なぜなら、マイクロプロセッサチップは、メモリ回路を、マイクロプロセッサの動作によって生成される高レベルの電気的ノイズおよび熱にさらすことに加えて、8層以上のメタル相互接続による高価で複雑な論理製造プロセスを用いて製造されるからである。これは、次には、プロセッサチップの中に埋め込まれるメモリのタイプ、寸法、および機能に影響を及ぼす。その結果は、より高いコスト、低い歩留まり、高い電力消費、小さいメモリ、および最終的には低い性能のマイクロプロセッサである。
好ましい実施形態の他の利点は、TOMI CPUが、十分に小さい(かつ、ほとんど電力を必要としない)ので、それらが物理的にDRAM(または他のメモリ)回路の隣に存在することができ、かつ超幅広内部DRAMデータバスへのCPUのアクセスを可能にすることである。現代のDRAMにおいて、このバスは、1024、4096、または8192ビット幅(またはその整数倍)であり、これは、また、通常、DRAM設計におけるデータバンク内の1行のデータ幅に対応する。(比べて、Intel Pentiumデータバスは64ビットであり、Intel Itaniumバスは128ビット幅である。)TOMI CPUの内部キャッシュは、DRAMの行サイズに合うようにサイズ設定され得るので、CPUキャッシュは、単一のDRAMメモリ読出し又は書込みサイクル内に満たされる(または消去される)ことができる。TOMI CPUは、TOMI CPUのためのデータバスとして超幅広内部DRAMデータバスを用いる。TOMI CPUキャッシュは、TOMI CPUキャッシュへのデータ転送を含む、効率的なレイアウトおよび回路動作のために、DRAMの行(row)および/または列(column)ラッチ回路の設計を反映するように設計されてもよい。
好ましい実施形態の他の利点は、少ないトランジスタ数による、TOMI CPUによって生成される低レベルの電気的ノイズである。なぜなら、CPUは、データのためにオフチップメモリにアクセスする常に駆動しているI/O回路ではなく、メモリにアクセスする超幅広内部DRAMデータバスを利用するからである。オンチップCPUキャッシュは、オフチップメモリアクセスに対する必要性を最小限にする処理のために、データへの即時のアクセスを考慮に入れている。
プロセッサアーキテクチャの設計目的は、処理容量および速度を最大化し、一方その処理速度を達成するために必要な電力を最小限にすることである。TOMI CPUアーキテクチャは、極めて低い電力消費を有する、高速プロセッサである。プロセッサの電力消費は、設計において用いられるトランジスタの数に、直接、関係している。TOMI CPUのための少ないトランジスタ数は、その電力消費を最小限にする。簡略化された効率的な命令セットは、更に、TOMI CPUが、その電力消費を減らすことを可能にする。加えて、幅広内部DRAMデータバスを用いるTOMI CPUキャッシュおよびオンチップメモリへのアクセスは、オフチップメモリへのアクセスのためにI/O回路を絶えず駆動する必要をなくす。1GHzのクロック速度で動作している単一のTOMI CPUは、ほぼ20から25ミリワットの電力を消費する。対照的に、Intel Pentium 4プロセッサは2.93GHzで130ワットを必要とし、Intel Itaniumプロセッサは1.6GHzで52ワットを必要とし、StrongARMプロセッサは200MHzで1ワットを必要とし、IBM Cellプロセッサは3.2GHzで100ワットを必要とする。プロセッサ内での熱の発生が、プロセッサが必要とする電力の量に、直接、関係することは、よく知られている。極めて低い電力のTOMI CPUアーキテクチャは、現在のマイクロプロセッサアーキテクチャの中で見られるファン、大きなヒートシンク、および新型の冷却メカニズムの必要をなくす。同時に、低電力TOMI CPUアーキテクチャは、新しい低電力電池および太陽エネルギーアプリケーションを可能にする。
命令セット
命令セットのうちの7つの命令が、それらのビットマッピングと共に図2に示されている。各命令は、好ましくは単一の8ビットワードから成る。
アドレッシングモード
図3は、様々なアドレッシングモードの有効アドレスを示している。
アドレッシングモードは、以下の通りである。
即値
レジスタ
レジスタ 間接
レジスタ 間接 自動インクリメント
レジスタ 間接 自動デクリメント
特別なケース
レジスタ0およびレジスタ1の両方は、プログラムカウンタ(PC)を指す。オペランドとしてレジスタ0(PC)を持つ演算は、全て、アキュムレータキャリービット(C)が1に等しいという条件付きである。C=1であれば、PCの旧値はアキュムレータ(ACC)にスワップされる。オペランドとしてレジスタ1(PC)を持つ演算は、全て、無条件である。
代替実施形態において、宛先としてレジスタ0(PC)を有する書き込み動作は、キャリービット(C)が0に等しいという条件付きである。C=1である場合、動作は実行されない。C=0である場合、アキュムレータ(ACC)の値がPCに書き込まれ、プログラム制御が新しいPCアドレスに移行する。宛先としてレジスタ1(PC)を有する書き込み動作は、無条件である。アキュムレータ(ACC)の値がPCに書き込まれ、プログラム制御が新しいPCアドレスに移行する。
ソースとしてレジスタ0を有する読み出し動作は、PC+2の値をロードする。このような方法で、ループの先頭のアドレスが、読み出されることができて、後の使用のために格納され得る。ほとんどの場合、ループアドレスは、スタック(S)にプッシュされる。ソースとしてレジスタ1を有する読み出し動作は、PCによってアドレスされた次のフルワードによって指し示される値をロードする。このような方法で、32ビット即値オペランドがロードされ得る。32ビット即値オペランドは、ワード整列(word align)されなければならないが、LOADACC命令は、32ビット即値オペランドの直前の4バイトワードの中のいかなるバイト位置にあってもよい。読み出しの実行に続いて、PCは、それが、32ビット即値オペランドに続く最初のワード整列された命令をアドレスするようにインクリメントされる。
分岐がない
分岐およびジャンプ動作は、通常、CPU設計者の課題である。なぜなら、それらが貴重な演算コード空間の多くのビットを必要とするからである。分岐機能は、LOADACC, xxを用いて所望の分岐アドレスをACCにロードして、次に、STOREACC, PC命令を用いて分岐を遂行することによって引き起こされ得る。分岐は、レジスタ0に保存したときのCの状態次第で、なされる。
スキップ
スキップは、INC, PCを実行することによって引き起こされ得る。実行は2サイクルを必要とし、1つはカレントPCインクリメントサイクルを完了させるためであり、1つはINCのためである。スキップは、レジスタ0をインクリメントしたときのCの状態次第で、なされる。
相対分岐
相対分岐は、所望のオフセットをACCにロードして、次にADD, PC命令を実行することによって引き起こされ得る。相対分岐は、レジスタ0に加算したときのCの状態次第で、なされる。
前方への分岐
前方への分岐は、後方への分岐より役に立つ。なぜなら、ループのために必要な後方への分岐の位置は、初めてループの先頭を通るプログラムステップのときPCを保存することによって、容易に捕獲されるからである。
相対分岐より効率的な前方への分岐は、分岐エンドポイントの最下位ビットをACCにロードして、次にPCにストアすることによって、引き起こされ得る。PCは、レジスタ0またはレジスタ1の使用に応じて、条件付または無条件の両方でアクセスされ得るので、前方への分岐もまた、宛先オペランドとしてのPCレジスタの選択(レジスタ0またはレジスタ1)に応じて、条件付または無条件となり得る。
例えば、
LOADI, #1C
STOREACC, PC
もしACCの最上位ビットがゼロであれば、最下位6ビットのみがPCレジスタに転送される。もし現在のPCレジスタの最下位6ビットがロードされるべきACC値より小さいのであれば、レジスタの最上位ビットは不変のままである。もし現在のPCレジスタの最下位6ビットがロードされるべきACC値より大きいのであれば、現在のPCレジスタはインクリメントされ、第7ビットでスタートする。
これは、効果的に分岐を31命令前方まで可能にする。前方への分岐のこの方法は、可能な場合はいつでも用いられるべきである。なぜなら、それは、相対分岐のための3命令に対して2命令しか必要としないだけでなく、最も遅い動作のうちの1つである加算器を通る経路を必要としないからである。図2Aは、動作中の前方への分岐を示している。
ループ
ループの先頭は、LOADACC, PCを用いてセーブすることができる。結果として生じるループ構文の先頭に対するポインタは、レジスタにストアされるか、またはオートインデクシングレジスタのうちの1つにプッシュされる。ループの末尾で、ポインタはLOADACC, EAによって検索され、STOREACC, PCを用いてPCにリストアされ、これにより後方へのループが引き起こされる。ループは、レジスタ0への保存によるCの状態次第で、なされ、これにより条件付き後方へのループが引き起こされる。
自己変更(modifying)コード
STOREACC, PCを用いて自己変更コードを書くことが可能である。命令は、引き起こされ、またはACCにフェッチされ、そして、次の命令として実行されるPCに格納される。この技術は、CASE構文を作成するために用いられ得る。
JUMPTABLEのN個のアドレスとベースアドレスとから成るメモリ内のジャンプテーブルアレイを仮定する。便宜のために、JUMPTABLEは、ローメモリ20の中にあるので、そのアドレスは、LOADIまたは1以上の右シフトADD, ACCが続くLOADIによって生成され得る。
ジャンプテーブルへのインデックスが、ACCの中にあり、かつジャンプテーブルのベースアドレスが、JUMPTABLEと名付けられた汎用レジスタの中にあると仮定する。
ADD, JUMPTABLE インデックスをジャンプテーブルのベースアドレスに加算する。
LOADACC, (JUMPTABLE) インデックスされたアドレスをロードする
STOREACC, PC ジャンプを実行する。
0000からスタートする低位メモリがシステムコールに割り当てられる場合、
各システムコールは、以下の通りに実行される。ここでSPECIAL_FUNCTIONは即値オペランド0−63の名前である。
LOADI, SPECIAL_FUNCTION システムコール番号をロードする
LOADACC, (ACC) システムコールのアドレスをロードする
STOREACC, PC 関数へジャンプする
右シフト
基本的なアーキテクチャは、右シフト演算を想定していない。もしこのような演算が必要であれば、好ましい実施形態の解決策は、汎用レジスタのうちの1つを「右シフトレジスタ」に指定することである。STOREACC, RIGHTSHIFTは、「右シフトレジスタ」への単一の位置を右シフトしたACCをストアする。ここで、その値は、LOADACC, RIGHTSHIFTによって読むことができる。
アーキテクチャのスケーラビリティ
TOMIアーキテクチャは、好ましくは8ビット命令を特徴とするが、データ幅は、制限される必要はない。図4は、いかにして4〜32ビットの任意の幅のデータ経路が容易に作成されるかを示している。より広い幅のデータ処理を行うことは、所望の幅に対して、レジスタセット、内部データ経路、およびALUの幅を増加させることを必要とするだけである。データ経路の上限は、加算器のキャリー伝播遅延およびトランジスタの予算によって制限されるのみである。
好適なTOMIアーキテクチャは、説明を簡単にするため、フォンノイマンメモリ構成として実現されるが、(別々のデータおよび命令バスを有する)ハーバードアーキテクチャによって実現することも可能である。
共通の数学演算
2の補数の数学は、いくつかの方法でなされ得る。汎用レジスタは、全て“1s”として予め設定され、ALLONESと名付けられる。オペランドは、OPERANDと名付けられたレジスタの中にあると仮定する。
LOADACC, ALLONES
XOR, OPERAND
INC, OPERAND “2s”の補数がOPERANDの中に残る。
共通のコンパイラ構造
大部分のコンピュータプログラムは、コンパイラによって生成される。従って、実用的なコンピュータアーキテクチャは、共通のコンパイラ構造に適合しているべきである。
Cコンパイラは、通常、ファンクションコールにパラメータを渡すためのスタックを維持する。S、X、またはYレジスタをスタックポインタとして用いることができる。ファンクションコールは、例えば、STOREACC, (X)+を用いて、スタックとして動作するオートインデクシングレジスタのうちの1つにパラメータをプッシュする。関数を入力すると、パラメータは、使用のために汎用レジスタにPOPされる。
スタック相対アドレッシング
汎用レジスタに都合よく適合させることができるときより、ファンクションコールを通過したより多くの要素があるときがある。以下の例のために、スタックプッシュ動作がスタックをデクリメントすると仮定する。もし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ワード要素アレイへのインデクシング
時々、アレイは、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プロセッサのためのソフトウェアコンパイラを更に最適化するのを助ける。
SAVELOOP−この命令は、プログラムカウンタの現在の値をスタック上へプッシュする。Saveloopは、ループ構文の先頭で最も実行されそうである。ループの末尾で、保存されていたプログラムカウンタ値は、スタックからコピーされて、プログラムカウンタに格納され、ループの先頭への逆方向ジャンプを実行する。
SHIFTLOADBYTE−この命令は、ACCに残された8ビットを左へシフトして、命令に続く8ビットバイトを読み出し、それをACCの最下位8ビットに入れる。このような方法で、長い即値オペランドが、一連の命令を用いてロードされ得る。例えば14ビット即値オペランドをロードするために、
LOADI, #14 \\14ビットオペランドの最上位6ビットをロードする。
SHIFTLOADBYTE \\6ビットの8位置を左へシフトして、次の8ビット値をロードする。
CONSTANT #E8 \\8ビット即値オペランド。
ACCの結果としての16進値は14E8である。
LOOP−この命令は、スタックの最上部をプログラムカウンタにコピーする。Loopは、ループの先頭でプログラムカウンタを格納するために、Saveloopの実行に続くループ構文の末尾で最も実行されそうである。ループ実行時、保存されていたプログラムカウンタがスタックからコピーされ、プログラムカウンタに格納され、ループの先頭への逆方向ジャンプを実行する。
LOOP_IF−この命令は、スタックの最上部をプログラムカウンタにコピーする。それは、Cの値に基づいて、条件付きループを実行する。Loop_ifは、ループの先頭でプログラムカウンタを格納するために、Saveloopの実行に続くループ構文の末尾で最も実行されそうである。Loop_if実行時に、C=0である場合には、保存されていたプログラムカウンタが、スタックからコピーされて、プログラムカウンタに格納され、ループの先頭への逆方向ジャンプを実行する。C=1である場合には、次の逐次命令を指し示すために、プログラムカウンタがインクリメントされる。
NOTACC−ACCの各ビットの補数演算を行う。ACC=0である場合には、Cを1にセットする。それ以外の場合には、Cを0にセットする。
ROTATELEFT8−ACCを8ビット左に回転させる。各回転ステップで、ACCからシフトされたMSBは、ACCのLSBにシフトされる。
ORSTACK−ACCとスタックの最上部の値について論理和を実行する。結果をACCに入れる。ACC=0である場合には、Cを1にセットする。そうでない場合には、Cを0にセットする。
ORSTACK+−ACCとスタックの最上部の値について論理和を実行する。結果をACCに入れる。論理演算の後に、スタックポインタSをインクリメントする。ACC=0である場合には、Cを1にセットする。そうでない場合には、Cを0にセットする。
RIGHTSHIFTACC−ACCを右に単一ビットだけシフトする。ACCのLSBは、Cにシフトされる。
SETMSB−ACCの最上位ビットをセットする。Cに対する変化はない。この命令は、符号付きの比較を実行する中で用いられる。
ローカルTOMIキャッシング
キャッシュは、メインメモリと比べて、大きさにおいてより小型で、アクセスにおいてより高速なメモリである。減少されたアクセスタイムおよびプログラムおよびデータアクセスの局所性は、キャッシュ動作を可能にし、多くの動作のために好適なTOMIプロセッサの性能を増加させる。他の観点から見て、キャッシュは、TOMIプロセッサのメインメモリからの独立性を増加させることによって、並列処理性能を増加させる。キャッシュのメインメモリに対する相対的な性能およびキャッシュに、またはキャッシュから、他のメインメモリに、ロードまたはストアを要求する前に、TOMIプロセッサが実行可能なサイクル数は、TOMIプロセッサ並列法による性能の上昇の量を決定する。
TOMIローカルキャッシュは、TOMIプロセッサ並列法によって性能の上昇を強化する。図5に示すように、各TOMIプロセッサは、好ましくは3つの関連するローカルキャッシュを備えている。
命令−PCと関連する
ソース−Xレジスタと関連する
宛先−Yレジスタと関連する
キャッシュは、「データ」または「命令」フェッチよりはむしろ特定のレジスタと関係しているので、キャッシュ制御ロジックは単純化され、キャッシュ待ち時間は著しく減少する。これらのキャッシュの最適な大きさは、アプリケーションに依存する。典型的な実施形態は、各キャッシュに対して1024バイトを必要とする。換言すれば、1024の命令と、ソースおよび宛先の256の32ビットワードである。少なくとも2つの要因が、キャッシュの最適サイズを決定する。第1は、他のキャッシュのロードまたはストア動作が要求される前に、TOMIプロセッサが繰り返すことができる状態の数である。第2は、メインメモリの動作の間に可能なTOMIプロセッサ実行サイクルの数と関連するメインメモリからのキャッシュのロードまたはストア動作のコストである。
TOMIプロセッサのRAMの中への埋め込み
一実施形態において、広いバスは、大きな埋め込まれたメモリをキャッシュに接続するので、キャッシュに対するロードまたはストア動作は、速く起こることができる。RAMに埋め込まれたTOMIプロセッサで、全てのキャッシュのロードまたはストアは、RAMの列に対する単一のメモリサイクルから成る。一実施形態において、埋め込まれたメモリは、63個のTOMIプロセッサの要求に応答しているので、1つのTOMIプロセッサに対するキャッシュのロードまたはストアの応答時間は、他のTOMIプロセッサのキャッシュのロードまたはストアが完了する間、延長可能である。
図6に示すように、キャッシュは、関連するメモリアドレッシングレジスタX,Y,PCの変化に基づいて、ストアおよびロードされる。例えば、PCレジスタの全幅は、24ビットであり得る。PCキャッシュが1024バイトである場合、PCの下位10ビットは、PCキャッシュの中でのアクセスを定義する。上位14ビットの中に変化があるようにPCが書き込まれるとき、キャッシュロードサイクルが要求される。そのPCキャッシュと関連するTOMI CPUは、キャッシュロードサイクルが完了するまで実行を停止し、示された命令は、PCキャッシュからフェッチされ得る。
キャッシュダブルバッファリング
2次キャッシュは、キャッシュロード要求を予想してロードされ得る。2つのキャッシュは同一であり、PCの上位14ビットの内容に基づいて交互に選択されかつ選択から外される。上記の例では、PCの上位14ビットが、2次キャッシュの中に予め格納されたデータのそれと合うように変化するとき、2次キャッシュは、1次キャッシュとして選択されるようになる。旧1次キャッシュは、その時は2次キャッシュになる。大部分のコンピュータプログラムが線形にメモリの中で増加するので、本発明の一実施形態は、常にキャッシュの内容、現在のPCプラス1の上位14ビットによって示されるメインメモリの内容をフェッチする2次キャッシュを有する。
2次キャッシュの追加は、現在のキャッシュの境界線の外に移動するときに、TOMIプロセッサが、メモリデータがメインメモリからフェッチされるのを待たなければならない時間を減らす。2次キャッシュの追加は、TOMIプロセッサの複雑さをほとんど2倍にする。最適システムのために、複雑さが2倍になるのであれば、対応するTOMIプロセッサの性能も2倍になることで相殺されなければならない。さもないと、2次キャッシュのない2つのより簡単なTOMIプロセッサが、同じトランジスタ数で実現され得る。
高速乗算、浮動小数点演算、追加の機能
整数乗算および全ての浮動小数点演算は、特別な目的のハードウェアを用いてさえ、実行するために、多くのサイクルを必要とする。従って、これらの動作は、基本的なTOMIプロセッサに含めるよりはむしろ、他のプロセッサを考慮に入れることができる。しかし、簡単な16ビット×16ビット乗算器が、追加の機能および多用性をTOMI CPUアーキテクチャに提供するために、(1000トランジスタ未満を用いる)TOMI CPUに加えられ得る。
たとえ全乗算が多くのサイクルを必要とする可能性があっても、デジタル信号処理(DSP)動作は、しばしばサイクル毎に結果を生じる高度にパイプライン化された乗算器を用いる。何度も同じアルゴリズムを繰り返す信号処理アプリケーションに対して、このような乗算器アーキテクチャは最適であり、TOMIプロセッサに対する周辺プロセッサとして組み込まれ得る。しかし、それがTOMIプロセッサの中に、直接、組み込まれたとしても、それは、たぶん複雑さを増加させて全体の性能を低下させたであろう。図7Aは、幅が広いシステムRAMバスを利用するように構成された追加処理機能の一例を示している。
隣接するメモリバンクへのアクセス
メモリチップ内のメモリ回路の物理的レイアウト設計は、しばしば、メモリトランジスタがメモリセルの大きいバンクの中でレイアウトされるように設計される。バンクは、通常、等しいサイズにされた矩形領域として構成され、チップ上の2以上の列の中に配置される。セルの大きいバンクの中のメモリセルのレイアウトは、メモリ読出し及び/又は書込みアクセスをスピードアップするために用いられ得る。
本発明の一実施形態において、1つ以上のTOMIプロセッサが、メモリチップ内のメモリセルバンクの2列の間に配置され得る。図7Bに示したロジックを用いて、Select AまたはSelect Bをイネーブルにすることによって、TOMIプロセッサがメモリバンクAまたはメモリバンクBにアクセスすることができるように、2つのメモリバンクの行データラインはインターリーブされ得る。このような方法で、メモリチップ内の特定のTOMIプロセッサによって直接アドレス指定が可能なメモリが、2倍になり得る。
TOMI割り込みストラテジー
割り込みは、プロセッサの通常のシーケンシャル動作に対する外部イベントであり、それは、プロセッサに、その動作シーケンスを直ちに変えることを強いる。割り込みの例は、外部装置による動作の完了またはいくつかのハードウェアによるエラー状態である。従来のプロセッサは、通常のシーケンシャル動作を素早く停止し、現在の動作の状態をセーブし、割り込みを引き起こしたどんなイベントでも処理するために、いくつかの特別な動作の実行を開始し、特別な動作が完了されたときに以前の状態を回復し、シーケンシャル動作を続けるために、どんな事でもする。割り込み処理品質の主要な基準は、応答時間である。
割り込みは、従来のプロセッサに対していくつかの課題を提起する。それらは、実行時間を不確定にする。それらは、状態をストアしてそれからリストアするプロセッササイクルを浪費する。それらは、プロセッサ設計を難しくし、あらゆるプロセッサ動作を遅くする遅延をもたらす可能性がある。
即時の割り込み応答は、エラー処理および現実世界の活動に直接結びついているプロセッサを除いて、大部分のプロセッサに対しては不必要である。
マルチプロセッサTOMIシステムの一実施形態において、1つのプロセッサのみが、主な割り込み機能を備えている。他の全てのプロセッサは、それらがいくつかの割り当てられた仕事を完了して、それら自身で停止するまで、中断されずに動く。または、それらがコーディネートプロセッサによって停止させられるまで動く。
入出力(I/O)
TOMIプロセッサ環境の一実施形態において、単一のプロセッサが、外部の世界に対する全てのインターフェースについて責任を負っている。
ダイレクトメモリアクセス(DMA)制御
一実施形態において、TOMIプロセッサシステムにおける外部の世界に対する即時の応答は、DMAコントローラを介して起こる。DMAコントローラは、外部装置によって要求されるときに、外部装置からシステムRAMに書き込みを行うための内部データバスにデータを転送する。同じコントローラが、また、要求されると、システムRAMから外部装置にデータを転送する。DMA要求は、内部バスアクセスに対する最高優先度を有する。
TOMIプロセッサのアレイの編成
本発明の好ましい実施形態のTOMIプロセッサは、かなりの数、複製され、かつモノリシックチップ上の追加の処理機能、非常に幅の広い内部バス、およびシステムメモリと結合されるように設計されている。このようなシステムのための例示的なメモリマップが図8に示されている。
各プロセッサのためのメモリマップは、そのプロセッサ用のローカルレジスタに対して、最初の32の位置(16進法の1F)を費やす(図3参照)。メモリマップの残りは、それらのキャッシュレジスタを通して全てのプロセッサによってアドレス指定可能である(図6参照)。システムRAMのアドレス指定能力は、ローカルキャッシュと関連している3つのレジスタPC,X,およびYの幅のみによって制限される。レジスタが24ビット幅である場合、全アドレス指定能力は4メガバイトであるが、上限はない。
一実施形態において、64個のTOMIプロセッサは、メモリと共にモノリシックに実現される。単一のマスタプロセッサが、その他の63個を管理する役割を果たす。スレーブプロセッサのうちの1つがアイドル状態で、クロックが動いていないとき、それは、ほとんど電力を消費しないし、ほとんど熱を発生しない。初期化時には、マスタプロセッサのみが使用可能である。マスタは、スレッドが開始すべき時間まで、フェッチングおよび実行の命令を開始する。各スレッドは、プレコンパイルされて、メモリにロードされる。スレッドを開始するために、マスタは、このスレッドをTOMI CPUのうちの1つに割り当てる。
プロセッサ稼働
好ましく仕事をするための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がセットされるようにポーリングを行う。
コーディネートプロセッサが、done_flagがセットされたことを検出すると、スレーブプロセッサの結果を処理し、かつ、おそらく、新しい仕事をするためにスレーブプロセッサを再割り当てする。スレーブプロセッサの結果が処理されると、関連するコーディネートプロセッサは、関連するdone_flagをクリアする。
スレーブプロセッサに関する割り込みベクトルが−1に等しくない場合、関連するdone_flagをセットすると、コーディネートプロセッサに割り込みが発生し、かつ割り込みベクトルアドレスで割り込みハンドラを実行し始める。
関連するavailable_flagもまたセットされた場合、コーディネートプロセッサは、スレーブプロセッサのスタックにプッシュされたリターンパラメータを読み取ることもできる。
割り込みハンドラは、スレーブプロセッサの結果を処理し、かつ、おそらく、新しい仕事をするためにスレーブプロセッサを再割り当てする。スレーブプロセッサの結果が処理されると、コーディネートプロセッサ上で動作している割り込みハンドラは、関連するdone_flagをクリアする。
11.done_flagがクリアされると、スレーブプロセッサは、その関連するdone_flagをセットして、新しいstart_timeをセーブする。スレーブプロセッサは、仕事をし続けてもよいし、利用可能な状態に戻ってもよい。利用可能な状態に戻るために、スレーブプロセッサは、そのスタック上へリターンパラメータをプッシュし、続けてスタックカウントおよびそのavailable_flagをセットする。
メモリモードレジスタを用いたTOMIプロセッサの管理
複数のTOMIプロセッサを実装して管理するための1つの技術は、図10Aに示したように、TOMIプロセッサをデュアルインラインメモリモジュール(DIMM)上に搭載することである。TOMI/DIMMは、外部メモリコントローラおよび汎用CPU、例えばパーソナルコンピュータから成るシステムに含まれ得る。図10Bは、このような構成を示している。モードレジスタは、一般に、DRAM、SRAMおよびフラッシュメモリの中で見つかる。モードレジスタは、メモリアクセスとは関係ない外部メモリコントローラによって書き込まれ得る一組のラッチである。メモリモードレジスタ内のビットは、しばしば、パラメータ、例えば、タイミング、リフレッシュ制御、および出力バースト長を特定するために用いられる。
1ビット以上が、TOMI CPUをイネーブルまたはディスエーブルにするために、メモリモードレジスタ内で割り当てられ得る。例えば、TOMI CPUがモードレジスタによってディスエーブルにされる時、TOMI CPUを含んでいるメモリは、通常のDRAM、SRAMまたはフラッシュメモリとして機能する。モードレジスタがTOMI CPU初期化をイネーブルにする時、シーケンスが、図10Cの中で説明するように実行される。この実施形態の中では、単一のプロセッサが、マスタプロセッサであると定められる。リセット動作に続いて常に最初に起動するのは、このプロセッサである。初期化終了後、マスタプロセッサは、フルスピードで動作して、所望のアプリケーションプログラムを実行する。TOMI CPUが実行している間、DRAM、SRAM、またはフラッシュメモリはアクセス不能である。時々、メモリモードレジスタは、TOMI CPUの実行を停止させるために、外部メモリコントローラによって指示され得る。TOMI CPUが停止している時に、DRAM、SRAM、またはフラッシュの内容が、汎用CPUに接続された外部メモリコントローラによって読み出され得る。このような方法で、結果が、汎用CPUに渡され得る。そして、追加データまたは実行ファイルが、DRAM、SRAM、またはフラッシュメモリに書き込まれ得る。
汎用CPUが、DRAM、SRAM、またはフラッシュメモリの読み出し又は書き込みを完了した時、外部メモリコントローラは、モードレジスタに、停止から動作へのビットを書き込み、TOMI CPUは、中断したところから実行を続ける。図10Dは、DRAM、SRAM、またはフラッシュメモリからの典型的なメモリモードレジスタを示している。そして、そのレジスタが、TOMI CPUを制御するために、どのように変更されるかを示している。
プロセッサクロック速度の調整
プロセッサクロック速度は、プロセッサ電力消費を決定する。TOMIアーキテクチャは、1つのプロセッサ以外の全てを停止させることができることによって、低電力消費を可能にする。さらにまた、マスタプロセッサ以外の各プロセッサは、図2Dに示したロジックを用いて、性能または電力消費を最適化するように調整された、そのクロック速度を有することができる。
TOMIプロセッサ管理の他の実施形態
いくつかのコンピュータソフトウェアアルゴリズムは循環的である。換言すれば、アルゴリズムの第一の機能は、それ自体を呼ぶことである。「分割(divide)および獲得(conquer)」として知られているアルゴリズムのクラスは、しばしば循環的技術を用いて実現される。分割および獲得は、データの検索および分類、および特定の数学的機能に適用可能である。このようなアルゴリズムを、複数のプロセッサ、例えばTOMIアーキテクチャと共に利用可能なものと並行することが可能である。このようなアルゴリズムを実行するために、一つのTOMI CPUが、他のTOMI CPUに仕事を渡して、そのCPUから結果を受け取ることが可能でなければならない。TOMIプロセッサの他の実施形態は、任意のプロセッサがマスタプロセッサになり、かつ任意の他の利用可能なTOMIプロセッサをスレーブプロセッサとみなすことを可能にする。TOMIプロセッサの起動および停止、プロセッサ間の通信、および独立及び従属スレッドの管理は、この実施形態のプロセッサ管理の中でサポートされる。
TOMI CPUの停止
TOMI CPUは、そのPCに全て1を書き込むことによって停止され得る。TOMI CPUが停止される時、そのクロックは動いていないし、それは電力を消費していない。いかなるTOMI CPUも、それ自身のPCに全て1を書き込むことができる。
TOMI CPUの起動
TOMI CPUは、そのPCに全て1以外の値が書き込まれる時、実行を始めることができる。マスタプロセッサは、それが図10Dに示したようなモードレジスタによってリセットされる時、そのPCに書き込まれた0の値を有している。
独立プロセッサスレッド
複数のスレッドが単一の汎用プロセッサ上で実行される時、それらのスレッドは、まれに通信するのみで、非常に緩く連結され得る。実行、結果のリターン、および停止の代わりに、いくつかのスレッドは、結果を連続的かつ永久に送達することを、永遠に実行することができる。このようなスレッドの一例は、ネットワーク通信スレッドまたはマウスデバイスを読み出すスレッドである。マウススレッドは、連続的に動作して、マウス位置およびクリック情報を、ポーリングされ得る共有メモリ領域または直ちに示されるコールバックルーチンに送達する。
このような独立スレッドは、主に、性能を加速するよりはむしろ、プログラミングを単純化するために用いられる。類似のスレッドは、TOMIのようなマルチプロセッサシステム上で実行され得る。結果は、共有メモリ領域に送達され得る。場合によっては、通信は、共有変数によって達成され得る。
TOMIアーキテクチャにおいて、共有変数は、共有メモリより効率的であり得る。なぜなら、変数は、全ての行をX_cacheまたはY_cacheにロードするためのメモリRASサイクルの必要性を回避することができるからである。変数の使用の一例は、ネットワークトラフィックを監視するTOMI CPUのための受信バッファに対する入力ポインタである。ネットワーク監視CPUは、データが受信されると、変数をインクリメントする。データ消費CPUは、時々、変数を読み出し、十分なデータがある時、メモリの行をX_cacheまたはY_cacheにロードするための動作を実行する。それから、受信されたネットワークデータは、キャッシュから共有変数によって示される値まで読み出され得る。
従属プロセッサスレッド
いくつかのアルゴリズム(例えば分割および獲得として分類されるもの)は、いくつかのプロセッサ上でアルゴリズムの部分を同時に実行して、結果を結合することによって、並列処理を達成することができる。このような設計において、単一のマスタプロセッサは、いくつかのスレーブプロセッサから仕事を要求して、スレーブが並列に仕事を実行する間、待つ。このように、マスタプロセッサは、スレーブプロセッサによって完了される仕事に依存する。
スレーブプロセッサの仕事が完了する時、マスタプロセッサは、部分的な結果を読み出し、それらを最終結果に結合する。この機能は、TOMIアーキテクチャが、「分割および獲得」として知られたアルゴリズムのクラスを効率的に処理することを可能にする。より一般的で簡単な分割および獲得アルゴリズムのいくつかは、検索および分類である。
マルチプロセッサ管理命令セット拡張
基本的なTOMI命令セットに対する一連の拡張は、独立及び従属スレッド管理を可能にする。これらの命令は、図2Bに示したいくつかの利用可能なNOOPコードを用いて実行される。これらの管理拡張命令は、図2Cにまとめられている。
GETNEXTPROCESSOR−この命令は、プロセッサ稼働(availability)テーブルを問い合わせ、次の利用可能なプロセッサと関連する数を有するACCをロードする。
SELECTPROCESSOR−この命令は、ACCをプロセッサ選択レジスタに書き込む。プロセッサ選択レジスタは、どのプロセッサがTESTDONEおよびREADSHAREDVARIABLEによって評価されるかを選択する。
STARTPROCESSOR−この命令は、プロセッサ選択レジスタによって選択されたプロセッサのPCに書き込む。この命令は、マスタプロセッサが、停止しているスレーブプロセッサを起動したい時に、最も実行されそうである。スレーブプロセッサは、そのPCが全て1である場合に、停止される。値をスレーブプロセッサのPCに書き込むことによって、マスタプロセッサは、スレーブプロセッサに、書き込まれたPCの位置でプログラムを実行し始めさせる。動作が成功した場合、ACCは、選択されたプロセッサに書き込まれるPC値を含んでいる。動作が成功しなかった場合、ACCは、−1を含んでいる。失敗した動作の最も可能性がある理由は、選択されたプロセッサが利用できなかったということである。
TESTDONE−この命令は、プロセッサ選択レジスタによって選択されたプロセッサのPCをテストして、PC=全て1である場合に、コールしているプロセッサのCビットを「1」にセットする。このようにPCをテストするループは、以下の通りに作成され得る。
LOADI, processorNumber
SELECTPROCESSOR
LOADACC, LOOPADDRESS
TOP TESTDONE
STOREACC, PC_COND //選択されたプロセッサがPC=全て1で停止するまで、TOPへループ。
TESTAVAILABLE−この命令は、プロセッサ選択レジスタによって選択されたプロセッサのためのプロセッサ割当てテーブルビットの中で「利用可能な」ビットをテストして、選択されたプロセッサが利用可能な場合に、コールしているプロセッサのCビットをセットする。このように更なる仕事に対する可用性をテストするためのループは、以下の通りに作成され得る。
LOADI, processorNumber
SELECTPROCESSOR
LOADACC, LOOPADDRESS
TOP TESTAVAILABLE
STOREACC, PC_COND //選択されたプロセッサが利用可能であるまで、TOPへループ。
SETAVAILABLE−この命令は、プロセッサ選択レジスタによって選択されたプロセッサのためのプロセッサ割当てテーブルの中で「利用可能な」ビットをセットする。この命令は、他のプロセッサが図10Eに示すように仕事をすることを要求する1つのプロセッサによって、最も実行されそうである。仕事をしているプロセッサが、その仕事を完了する時に、それは、そのPCを全て1にセットすることによって停止する。要求側プロセッサは、仕事をしているプロセッサに対して周期的にTESTDONEを行う。仕事をしているプロセッサが、その仕事を完了した時、要求側プロセッサは、共有メモリ位置または共有変数によって結果を読み出す。結果が読み出される時、仕事をしていたプロセッサは、他の作業を再割り当てするために利用可能である。そして、要求側プロセッサは、SETAVAILABLEを用いるので、他のプロセッサは、それが更なる仕事をすることを要求し得る。
READSHAREDVARIABLE−この命令は、プロセッサ選択レジスタによって選択されるプロセッサの共有変数を読み出す。この命令は、他のプロセッサが仕事をすることを要求した1つのプロセッサによって、最も実行されそうである。共有変数は、割り当てられた仕事の進捗を判定するために、任意のプロセッサによって読み出され得る。例えば、仕事をしているプロセッサは、高速ネットワークから受け取っているプロセスデータに割り当てられる可能性がある。共有変数は、読み出されて他のプロセッサが利用可能であったデータの量を示している。各プロセッサは、共有変数を含んでいる。その共有変数は、任意の他のプロセッサによって読み出され得るが、共有変数は、それ自身のプロセッサによってのみ書き込まれ得る。
STORESHAREDVARIABLE−この命令は、ACCの値を、命令を実行しているプロセッサの共有変数に書き込む。共有変数は、任意の他のプロセッサによって読み出され得る。そして、他のプロセッサに状態および結果を伝達するために用いられる。
データレディ(Ready)ラッチを用いるプロセッサ間通信
図10Fは、TOMIプロセッサ間の通信の1つの可能なハードウェア実装を示している。1つのTOMIプロセッサは、SELECTPROCESSORコマンドを用いて、それ自体と他のTOMIプロセッサとの間の接続を確立することができる。この命令は、選択している、および選択されたプロセッサが、共有レジスタおよびREADSHAREDVARIABLEおよびSTORESHAREDVARIABLEコマンドを用いて、データを交換することを可能にする論理接続を確立する。
図10Fの上半分は、データをレディフラグレジスタによって制御される他のプロセッサに送信するプロセッサのためのロジックを示している。図10Fの下半分は、レディフラグレジスタによって制御される他のプロセッサからデータを受信するプロセッサのためのロジックを示している。
共有レジスタの状態は、選択している、または選択されたプロセッサのCビットの中に読み込まれ得る。動作中に、プロセッサは、データを、その共有レジスタに書き込む。これにより、関連するデータレディフラグをセットする。接続されたプロセッサは、Cビットが、関連するデータレディフラグがセットされたことを示すまで、その共有レジスタを読み出す。読み出し動作はレディフラグをクリアするので、プロセスを繰り返すことができる。
プロセッサ割り当ての調停
上述の通り、TOMIプロセッサは、仕事を、可用性がGETNEXTPROCESSORによって判定された他のTOMIプロセッサに委任することができる。
GETNEXTPROCESSORは、プロセッサが利用可能かどうかを判定する。利用可能なプロセッサとは、現在仕事を実行していなくて、かつ、まだREADSHAREDVARIABLEによって検索されていない以前の仕事の結果を保持していないものである。
図10Gは、仕事が委任され得る利用可能なプロセッサを識別するための1つのハードウェア実装を示している。図10Hは、例示的なプロセッサ調停のイベントを示している。そのプロセスは以下の通りである。
1.要求側プロセッサは、GETNEXTPROCESSOR命令を実行する。これは、「次の利用可能なプロセッサ要求」ラインを調停ロジックに引き下ろす。
2.調停ロジックは、「次の利用可能なプロセッサ」ライン上のTOMI CPUに対応する数を生成する。
3.要求側プロセッサは、SELECTPROCESSOR命令を実行する。
これは、数を、要求側プロセッサのPSR(プロセッサ選択レジスタ)の中に格納する。
4.要求側プロセッサは、それから、STARTPROCESSOR命令を実行する。これは、プロセッサ選択レジスタによって選択されたプロセッサのPCに書き込む。動作が成功した場合、選択されたプロセッサの数は、選択されたプロセッサが、もはや、仕事をするために割り当てられるために利用可能ではないことを示すために、更に、調停ロジックに格納される。動作が不成功の場合、その理由は、多分、選択されたプロセッサが利用可能ではないことである。要求側プロセッサは、他の利用可能なプロセッサを見つけるために、他のGETNEXTPROCESSORを実行する。
5.選択されたプロセッサが、その結果を利用可能にするために、STORESHAREDVARIABLEを実行する時、調停ロジックは、選択されたプロセッサが、読まれるのを待っている結果を持っていることを通知される。
6.選択されたプロセッサが、そのPCに−1を書き込むことによって停止される時、調停ロジックは、選択されたプロセッサが利用可能であることを通知される。
7.選択されたプロセッサの結果がREADSHAREDVARIABLEによって検索される時、調停ロジックは、選択されたプロセッサの結果が読み出されたことを通知される。
メモリのロック
TOMIプロセッサは、それらのキャッシュを通してシステムメモリを読み書きする。完全にキャッシュに入れられたカラムは、一度に読み書きされる。いかなるプロセッサも、システムメモリの任意の部分を読むことができる。個々のプロセッサは、その排他的な書き込みのために、メモリのカラムをロックすることができる。このロックメカニズムは、プロセッサ間でのメモリ書き込みコンフリクトを回避する。
提案されたアプリケーション
並列法は、個々のプロセッサに対して仕事の独立した部分に入ると考えられるアプリケーションを効果的に加速する。うまく考えられた1つのアプリケーションは、ロボットの視覚のための画像操作である。画像操作アルゴリズムは、相関、等化、エッジ識別、および他の動作を含む。多くは、行列操作によって実行される。図11に示すように、このアルゴリズムは、非常にしばしば、うまく考えられる。
図11に例示されたイメージマップは、全イメージマップの矩形のサブセットに対する画像データを操作するために割り当てられたプロセッサを含む、24個のプロセッサを示している。
図12は、一実施形態において、TOMIシステムRAMが、どのように割り当てられ得るかを示している。システムRAMの1つのブロックは、画像キャプチャの画素を保持し、他のブロックは、処理された結果を保持する。
動作中に、コーディネートプロセッサは、一定時間毎に外部ソースから内部システムRAMに画像ピクセルを転送するために、DMAチャンネルを割り当てる。画像キャプチャの一般的な速度は、1秒当たり60画像である。
コーディネートプロセッサは、次に、Xレジスタによって用いられるべき画像マップのアドレス、Yレジスタによって用いられるべき処理された画像のアドレス、2のパラメータカウント、および画像処理アルゴリズムのアドレスをプッシュすることによって、スレーブプロセッサ1をイネーブルにする。コーディネートプロセッサは、その後、同様に、プロセッサ2から25をイネーブルにする。プロセッサは、画像処理アルゴリズムが完了するまで、それぞれ並列に実行を続ける。
アルゴリズムが完了すると、各プロセッサは、プロセッサ稼働率テーブル内のその関連するdone_flagをセットする。結果は、コーディネートプロセッサによって処理される。それは、完了のためにポーリングすることであるか、または“done”イベント上での割り込みに応答することである。
図13Aおよび13Bは、オンチップシステムメモリを用いて実現される64個のTOMIプロセッサのモノリシックアレイのための例示的な平面図である。平面図は、回路設計およびメモリ回路のレイアウトおよび全体のチップのアーキテクチャによって変化し得る。
TOMI周辺機器コントローラチップ(TOMIPCC)
TOMIアーキテクチャの一実施形態は、1つ以上のTOMI CPUを標準DRAMダイに埋め込んでいる。結果として生じるダイは、標準DRAMピン配列を有する標準DRAMパッケージに入れられる。パッケージされた部品は、標準DRAM DIMM(デュアルインラインメモリモジュール)上に搭載され得る。
動作中、この実施形態は、埋め込まれたTOMI CPUがDRAMモードレジスタによってイネーブルにされる時を除き、標準DRAMのようにふるまう。TOMI CPUがイネーブルにされて動作している時、それらは、外部プロセッサによってDRAMにロードされたプログラムを実行する。TOMI CPUの計算の結果は、共有DRAMを通して外部プロセッサに提供される。
いくつかのアプリケーションにおいて、外部プロセッサは、PCによって提供される。他のアプリケーションにおいては、専門のプロセッサが、TOMI DRAMチップのための以下の機能を実行するために提供され得る。図14Aは、このようなプロセッサ、TOMI周辺機器コントローラチップ(TOMIPCC)の一実施形態を示している。このプロセッサの機能は、以下の通りである。
1.付随する永久記憶装置から使用のためのTOMIチップDRAMへデータおよび命令を転送するメカニズムを提供する。多くのシステムにおいて、永久記憶装置は、フラッシュRAMであり得る。
2.TOMIチップと、現実世界の装置、例えばディスプレイおよびネットワークとの間の入出力インターフェースを提供する。
3.TOMI CPU動作を調整するのに必要なオペレーティングシステム機能の小さい一組を実行する。
図14Bは、TOMIPCCを用いる非常に小さいシステムを示している。セルホン言語翻訳器の例は、3チップのみから成る。すなわち、フラッシュRAM、TOMIPCC、および単一のTOMI CPU/DRAM。この最小のアプリケーションにおいて、単一のTOMI CPU/DRAMは、D0−D7と表示された標準8ビットDRAM I/Oを通して通信する。
フラッシュRAMは、1つの形式から他の形式へ音声言語を解釈して翻訳するのに必要な命令に加えて音声言語を定義する音素および構文の辞書を含んでいる。
TOMIPCCは、アナログ音声言語(またはその等価物)を受け取り、それをデジタル表現に変換して、それを、解釈および翻訳のために、TOMI DRAMに提出する。結果として生じるデジタル化された音声は、TOMI DRAMからTOMIPCCに返され、アナログ音声表現に変換され、それからセルホンユーザに出力される。
図14Cは、TOMIPCCを用いる非常に大きなシステムを示している。このようなシステムの一例は、メモリ中心のデータベース機器(またはMCDB)である。MCDBシステムは、非常に遅いディスクまたは記憶装置内のそれのページング部分の代わりに、高速メモリ内の全データベース上で動作する。速い検索および分類は、メモリ中心のデータベースと同じチップ上にあるTOMI CPUで実行する、いわゆる分割および獲得アルゴリズムの使用によって、TOMIアーキテクチャで可能である。
このようなシステムは、おそらく、複数のTOMI CPUチップを組み込んでいるTOMI DIMM(デュアルインラインメモリモジュール)によって構築されるであろう。標準240ピンDIMMに対するデータパスは64ビットである。従って、メモリ中心のデータベースアプリケーションにおけるTOMIPCCは、D0−D63によって示されるような、64ビット幅のデータベースを駆動する。
本発明が、添付の図面を参照して例示のみのために記載されてきたこと、および、ここに記載した特定の実施形態に限定されないことは言うまでもない。当業者であれば認めるであろうが、改良および修正が、本発明の範囲または精神から逸脱することなく、ここに記載した本発明および例示的な実施形態に対してなされ得る。

Claims (74)

  1. メモリモジュール上に搭載された複数の並列プロセッサと、
    外部メモリコントローラと、
    汎用中央演算処理装置とを備えていて、
    前記並列プロセッサの各々は、スレッドレベルの並列処理のために最適化された命令セットを処理するように動作可能であることを特徴とするシステム。
  2. 前記並列プロセッサの各々は、de minimis命令セットを処理するように動作可能であることを特徴とする請求項1に記載のシステム。
  3. メモリモードレジスタに割り当てられる1以上のビットは、前記並列プロセッサのうちの1つ以上をイネーブルまたはディスエーブルにするように動作可能であることを特徴とする請求項1に記載のシステム。
  4. 前記メモリモジュールは、デュアルインラインメモリモジュールであることを特徴とする請求項1に記載のシステム。
  5. 前記プロセッサの各々は、単一のスレッドを処理するように動作可能であることを特徴とする請求項1に記載のシステム。
  6. 複数のスレッドが、共有メモリを通してデータを共有することを特徴とする請求項5に記載のシステム。
  7. 複数のスレッドが、1つ以上の共有変数を通してデータを共有することを特徴とする請求項5に記載のシステム。
  8. 前記メモリモジュールは、DRAM、SRAM、およびフラッシュメモリのうちの1つ以上であることを特徴とする請求項1に記載のシステム。
  9. 少なくとも一つの前記並列プロセッサがマスタプロセッサとみなされ、他の前記並列プロセッサはスレーブプロセッサとみなされることを特徴とする請求項1に記載のシステム。
  10. 各プロセッサは、クロック速度を有していて、前記マスタプロセッサ以外の各プロセッサは、性能または電力消費を最適化するように調整された前記プロセッサのクロック速度を有するように動作可能であることを特徴とする請求項9に記載のシステム。
  11. 各プロセッサは、マスタプロセッサまたはスレーブプロセッサとみなされるように動作可能であることを特徴とする請求項9に記載のシステム。
  12. 前記マスタプロセッサは、いくつかのスレーブプロセッサによる処理を要求し、前記いくつかのスレーブプロセッサからの出力を待ち、かつ前記出力を結合することを特徴とする請求項9に記載のシステム。
  13. 前記マスタプロセッサは、前記出力が前記いくつかのプロセッサの各々から受信されるとき、前記いくつかのプロセッサからの出力を結合することを特徴とする請求項12に記載のシステム。
  14. 停止されるべき前記並列プロセッサのうちの1つ以上をイネーブルにすることによって、低電力消費が提供されることを特徴とする請求項1に記載のシステム。
  15. 前記並列プロセッサの各々は、プログラムカウンタを伴っていて、前記並列プロセッサが伴っているプログラムカウンタに全て1を書き込むことによって停止されるように動作可能であることを特徴とする請求項14に記載のシステム。
  16. ダイナミックランダムアクセスメモリ(DRAM)のダイに埋め込まれた複数の並列プロセッサを備えていて、
    前記複数の並列プロセッサは、外部メモリコントローラおよび外部プロセッサと通信し、
    前記並列プロセッサの各々は、スレッドレベルの並列処理のために最適化された命令セットを処理するように動作可能であることを特徴とするシステム。
  17. 前記ダイは、DRAMピン配列を有するパッケージに入れられていることを特徴とする請求項16に記載のシステム。
  18. 前記並列プロセッサは、デュアルインラインメモリモジュール上に搭載されていることを特徴とする請求項16に記載のシステム。
  19. 前記システムは、前記プロセッサがDRAMモードレジスタを通してイネーブルにされる時以外は、DRAMとして動作することを特徴とする請求項16に記載のシステム。
  20. 前記外部プロセッサは、関連する永久記憶装置から前記DRAMにデータおよび命令を転送するように動作可能であることを特徴とする請求項16に記載のシステム。
  21. 前記永久記憶装置は、フラッシュメモリであることを特徴とする請求項20に記載のシステム。
  22. 前記外部プロセッサは、前記並列プロセッサと外部装置との間の入出力インターフェースを提供するように動作可能であることを特徴とする請求項16に記載のシステム。
  23. 単一のチップ上の複数のプロセッサと、
    前記チップ上に配置されていて、前記プロセッサの各々によってアクセス可能なコンピュータメモリとを備えていて、
    前記プロセッサの各々は、de minimis命令セットを処理するように動作可能であり、かつ
    前記プロセッサの各々は、前記プロセッサ内の少なくとも3つの特定のレジスタの各々専用のローカルキャッシュを有していることを特徴とするシステム。
  24. 前記ローカルキャッシュの各々のサイズは、前記チップ上のランダムアクセスメモリの1行に等しいことを特徴とする請求項23に記載のシステム。
  25. 各前記プロセッサは、前記チップ上のランダムアクセスメモリの内部データバスにアクセスし、前記内部データバスは、ランダムアクセスメモリの1行の幅を有していることを特徴とする請求項23に記載のシステム。
  26. 前記内部データバスの幅は、1024、2048、4096、8192、16328、または32656ビットであることを特徴とする請求項25に記載のシステム。
  27. 前記内部データバスの幅は、1024ビットの整数倍であることを特徴とする請求項25に記載のシステム。
  28. 前記プロセッサ内の少なくとも3つの特定のレジスタの各々専用のローカルキャッシュは、1メモリ読出し又は書込みサイクルの中で満たされるか又は消去されるように動作可能であることを特徴とする請求項23に記載のシステム。
  29. 前記de minimis命令セットは、基本的に7つの基本命令から成ることを特徴とする請求項23に記載のシステム。
  30. 前記基本命令セットは、ADD、XOR、INC、AND、STOREACC、LOADACC、およびLOADI命令を含むことを特徴とする請求項29に記載のシステム。
  31. 前記de minimis命令セット内の各命令は、長さが最長でも8ビットであることを特徴とする請求項23に記載のシステム。
  32. 前記de minimis命令セットは、プロセッサ上での命令シーケンスの実行を最適化するための複数の命令拡張を有していて、更に、このような命令拡張は、基本的に20未満の命令から成ることを特徴とする請求項23に記載のシステム。
  33. 各命令拡張は、長さが最長でも8ビットであることを特徴とする請求項23に記載のシステム。
  34. 前記de minimis命令セットは、前記チップ上の複数のプロセッサを選択的に制御するための一組の命令を有していることを特徴とする請求項23に記載のシステム。
  35. 各プロセッサ制御命令は、長さが最長でも8ビットであることを特徴とする請求項34に記載のシステム。
  36. 複数のプロセッサは、モノリシックメモリデバイスのために設計された半導体製造プロセスを用いて前記チップ上に配置されるコンピュータメモリと共に前記チップ上に製造されることを特徴とする請求項23に記載のシステム。
  37. 半導体製造プロセスは、4層未満のメタル相互接続を用いることを特徴とする請求項36に記載のシステム。
  38. 半導体製造プロセスは、3層未満のメタル相互接続を用いることを特徴とする請求項36に記載のシステム。
  39. 複数のプロセッサのコンピュータメモリ回路内への集積化は、チップダイサイズの30%未満の増加という結果をもたらすことを特徴とする請求項23に記載のシステム。
  40. 複数のプロセッサのコンピュータメモリ回路内への集積化は、チップダイサイズの20%未満の増加という結果をもたらすことを特徴とする請求項23に記載のシステム。
  41. 複数のプロセッサのコンピュータメモリ回路内への集積化は、チップダイサイズの10%未満の増加という結果をもたらすことを特徴とする請求項23に記載のシステム。
  42. 複数のプロセッサのコンピュータメモリ回路内への集積化は、チップダイサイズの5%未満の増加という結果をもたらすことを特徴とする請求項23に記載のシステム。
  43. 250,000個未満のトランジスタが、前記チップ上の各プロセッサを作成するために用いられることを特徴とする請求項23に記載のシステム。
  44. チップは、4層未満のメタル相互接続を用いる半導体製造プロセスを用いて製造されることを特徴とする請求項23に記載のシステム。
  45. 前記プロセッサの各々は、単一のスレッドを処理するように動作可能であることを特徴とする請求項23に記載のシステム。
  46. アキュムレータは、インクリメント命令を除く、あらゆる基本命令のためのオペランドであることを特徴とする請求項29に記載のシステム。
  47. 各基本命令のための宛先は、常にオペランドレジスタであることを特徴とする請求項29に記載のシステム。
  48. 3つのレジスタは自動インクリメントであり、かつ3つのレジスタは自動デクリメントであることを特徴とする請求項23に記載のシステム。
  49. 各基本命令は、完了するために1クロックサイクルのみを必要とすることを特徴とする請求項29に記載のシステム。
  50. 前記命令セットは、分岐命令およびジャンプ命令を有していないことを特徴とする請求項29に記載のシステム。
  51. 単一のマスタプロセッサが、前記並列プロセッサの各々を管理する役割を担っていることを特徴とする請求項23に記載のシステム。
  52. 単一のチップ上の複数の並列プロセッサと、
    前記チップ上に配置されていて、前記プロセッサの各々によってアクセス可能なコンピュータメモリとを備えていて、
    前記プロセッサの各々は、スレッドレベルの並列処理のために最適化された命令セットを処理するように動作可能であり、かつ
    各前記プロセッサは、前記チップ上のコンピュータメモリの内部データバスにアクセスし、前記内部データバスは、メモリの1行より幅が広くないことを特徴とするシステム。
  53. 前記プロセッサの各々は、de minimis命令セットを処理するように動作可能であることを特徴とする請求項52に記載のシステム。
  54. 前記プロセッサの各々は、前記プロセッサ内の少なくとも3つの特定のレジスタの各々専用のローカルキャッシュを有していることを特徴とする請求項52に記載のシステム。
  55. 前記ローカルキャッシュの各々のサイズは、前記チップ上のコンピュータメモリの1行に等しいことを特徴とする請求項54に記載のシステム。
  56. 少なくとも3つの特定のレジスタは、命令レジスタ、ソースレジスタ、および宛先レジスタを含むことを特徴とする請求項54に記載のシステム。
  57. 前記de minimis命令セットは、基本的に7つの基本命令から成ることを特徴とする請求項53に記載のシステム。
  58. 前記基本命令セットは、ADD、XOR、INC、AND、STOREACC、LOADACC、およびLOADI命令を含むことを特徴とする請求項57に記載のシステム。
  59. 前記命令セット内の各命令は、長さが最長でも8ビットであることを特徴とする請求項52に記載のシステム。
  60. 前記プロセッサの各々は、単一のスレッドを処理するように動作可能であることを特徴とする請求項52に記載のシステム。
  61. 単一のマスタプロセッサが、前記並列プロセッサの各々を管理する役割を担っていることを特徴とする請求項52に記載のシステム。
  62. 前記de minimis命令セットは、プロセッサ上での命令シーケンスの実行を最適化するための複数の命令拡張を有していて、更に、このような命令拡張は、20未満の命令を有していることを特徴とする請求項53に記載のシステム。
  63. 各命令拡張は、長さが最長でも8ビットであることを特徴とする請求項62に記載のシステム。
  64. 前記de minimis命令セットは、前記チップ上の複数のプロセッサを選択的に制御するための一組の命令を有していることを特徴とする請求項53に記載のシステム。
  65. 各プロセッサ制御命令は、長さが最長でも8ビットであることを特徴とする請求項64に記載のシステム。
  66. 複数のプロセッサは、モノリシックメモリデバイスのために設計された半導体製造プロセスを用いて前記チップ上に配置されるコンピュータメモリと共に前記チップ上に製造されることが可能であることを特徴とする請求項52に記載のシステム。
  67. 単一のチップ上の複数の並列プロセッサ、マスタプロセッサ、およびコンピュータメモリを利用するスレッドレベルの並列処理の方法において、前記複数のプロセッサの各々は、de minimis命令セットを処理し、かつ単一のスレッドを処理するように動作可能であり、
    (a)ローカルキャッシュを前記複数のプロセッサの各々の中の3つの特定のレジスタの各々に割り当てるステップと、
    (b)単一のスレッドを処理するために複数のプロセッサのうちの1つを割り当てるステップと、
    (c)前記プロセッサによって各々の割り当てられたスレッドを処理するステップと、
    (d)前記プロセッサによって処理された各スレッドからの結果を処理するステップと、(e)スレッドが処理された後に、前記複数のプロセッサのうちの1つの割り当てを解除するステップとを有していることを特徴とする方法。
  68. de minimis命令セットは、基本的に7つの基本命令から成ることを特徴とする請求項67に記載の方法。
  69. 前記基本命令は、ADD、XOR、INC、AND、STOREACC、LOADACC、およびLOADI命令を有していることを特徴とする請求項68に記載の方法。
  70. de minimis命令セットは、複数のプロセッサを選択的に制御するための一組の命令を有していることを特徴とする請求項67に記載の方法。
  71. 各プロセッサ制御命令は、長さが最長でも8ビットであることを特徴とする請求項70に記載の方法。
  72. 各プロセッサが前記メモリの内部データバスを用いてコンピュータメモリにアクセスするステップを更に有していて、内部データバスは、前記チップ上のメモリの1行の幅であることを特徴とする請求項52に記載の方法。
  73. de minimis命令セット内の各命令は、長さが最長でも8ビットであることを特徴とする請求項67に記載の方法。
  74. メモリデバイスのための電子工業規格デバイスのパッケージングおよびピンレイアウトと互換性があるメモリチップの中に埋め込まれた複数のプロセッサを備えていて、
    プロセッサのうちの1つ以上は、メモリチップのメモリモードレジスタに送信される情報によって起動することができ、メモリチップは、プロセッサのうちの1つ以上が前記メモリモードレジスタによって起動する場合を除き、工業規格メモリデバイスの動作と機能的に互換性があることを特徴とするシステム。
JP2010518258A 2008-06-26 2008-06-27 スレッドに最適化されたマルチプロセッサアーキテクチャ Pending JP2010532905A (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020181407A (ja) * 2019-04-25 2020-11-05 株式会社デンソー 並列化方法、半導体制御装置、及び車載制御装置

Families Citing this family (29)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (8)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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