JP2009527814A - コンピュータのアレイ間でのリソースの割り当て - Google Patents

コンピュータのアレイ間でのリソースの割り当て Download PDF

Info

Publication number
JP2009527814A
JP2009527814A JP2008555370A JP2008555370A JP2009527814A JP 2009527814 A JP2009527814 A JP 2009527814A JP 2008555370 A JP2008555370 A JP 2008555370A JP 2008555370 A JP2008555370 A JP 2008555370A JP 2009527814 A JP2009527814 A JP 2009527814A
Authority
JP
Japan
Prior art keywords
computer
computers
instruction
instructions
array
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.)
Withdrawn
Application number
JP2008555370A
Other languages
English (en)
Other versions
JP2009527814A5 (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
Priority claimed from US11/355,513 external-priority patent/US7904695B2/en
Priority claimed from US11/355,495 external-priority patent/US7904615B2/en
Priority claimed from US11/441,784 external-priority patent/US7752422B2/en
Priority claimed from US11/441,812 external-priority patent/US7913069B2/en
Priority claimed from US11/441,818 external-priority patent/US7934075B2/en
Application filed by ブイエヌエス ポートフォリオ リミテッド ライアビリティ カンパニー filed Critical ブイエヌエス ポートフォリオ リミテッド ライアビリティ カンパニー
Publication of JP2009527814A publication Critical patent/JP2009527814A/ja
Publication of JP2009527814A5 publication Critical patent/JP2009527814A5/ja
Withdrawn legal-status Critical Current

Links

Images

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
    • 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
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • 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/321Program or instruction counter, e.g. incrementing
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

コンピュータアレイ(10)は、複数のコンピュータ(12)を有する。コンピュータ(12)は、隣接するコンピュータと直接通信し、アレイ内の他のコンピュータと間接的に通信する。コンピュータは、データおよび/または命令を含むデータ語を渡す。4つもの命令を、18ビットのデータ語1つに含むことができる。4つの命令は一度に伝達されるため、4つもの命令で構成されるマイクロループ全体を通信することができる。本発明のコンピュータは、その入力レジスタから直接命令を実行できる。

Description

本発明は、コンピュータおよびコンピュータプロセッサの分野に関し、より詳細には、コンピュータ間の一意なタイプの対話の方法および手段に関する。本発明のコンピュータアレイの使用例で現在有力なものは、単一マイクロチップ上で複数のコンピュータを組み合わせるものである。
先行技術において、協調する複数のコンピュータプロセッサを使用して、タスクを遂行することが知られている。マルチスレッディングおよび他のいくつかのスキームを使用して、プロセッサを協調させることを可能にしてきた。しかし、一般的に、当該領域において改善の余地が大いにあると認識されている。さらに、複数のプロセッサを単一チップ上で組み合わせることが現在の傾向であり、それによって問題を悪化させ、コンピュータを効率的に協調させる解決策を見つけることの緊急性を高めている。現在、いくつかの理由により、多くのアプリケーションに対する複数のプロセッサの最適な配置は、それぞれが処理機能と少なくともいくつかの専用メモリとを有する多くのコンピュータから成るアレイであることが考えられる。このような例では、コンピュータそれぞれは、それ自体では特に強力ではないが、計算能力は複数のコンピュータの緊密な協調によって達成されることになる。
同じ発明者の同時係属出願では、このようなコンピュータの配置方法およびこのようなコンピュータ間の通信チャネルの発生方法に関するいくつかの詳細を含め、このようなコンピュータアレイの多くの独創的な態様を記述し、特許請求している。しかしながら、最高の効率性で動作するようにコンピュータアレイの比較的新しい概念を実装するためには、さらなる革新が必要であろう。
明らかに、コンピュータアレイの配置、コンピュータアレイ間の通信、コンピュータアレイ間のタスク分割、およびコンピュータアレイの他の使用の最適な方法に関して、解決すべき多くの問題がある。このような問題のいくつかは解決済みのものもあるが、おそらく既存の解決方法に対してさえも改善の余地があるであろう。他の場合においては、先行技術に存在しなかった新しい問題を解決するために、先例のない問題に対処する解決策が必要であると考えられる。
したがって、本発明の1つの目的は、コンピュータアレイにおいて利用可能な計算能力を効率的に使用する方法および装置を提供することである。
本発明の別の目的は、実質的な計算能力を安価で提供する装置および方法を提供することである。
本発明のさらに別の目的は、マルチコンピュータアレイの動作速度を向上する装置および方法を提供することである。
本発明のさらに別の目的は、計算主体の(computationally intensive)タスクを遂行する装置および方法を提供することである。
本発明のさらに別の目的は、コンピュータグループ内の1つが、1つまたは複数の他のコンピュータのリソースと通信すること、および/またはこれを利用することができる速度および効率を向上させることである。
簡潔に述べると、本発明の公知の実施形態は、各コンピュータが自身のメモリを有し独立した計算機能を実行することができる、複数のコンピュータの1つのアレイである。協調的にタスクを遂行するために、コンピュータは、データおよび/または命令を相互に受け渡しをする必要がある。本発明の1つの実施形態によると、複数の該コンピュータは、各コンピュータが4つもの「近傍(neighbors)」と直接通信することができるように、直角に隣接したコンピュータ間の接続データ経路(connecting data path)を有する。あるコンピュータが、直接の近傍でない別のコンピュータと通信することが望ましい場合、通信は他の複数のコンピュータを通して所望の宛先に送られることとなる。
説明される本発明の実施形態によると、4つもの命令を含むデータ語を、複数のコンピュータ間および各コンピュータの内部メモリの間の両方において、並列に受け渡しをすることができるので、本発明により、各データ語を、本明細書でマイクロループ(micro-loops)と呼ばれる最小プログラム(min-program)で構成することができる。プロセッサの大規模なアレイにおいては、大規模なタスクは理想的には複数の小規模なタスクに分割され、小規模なタスクの各々を、幾分制限された能力を有するプロセッサによって容易に遂行できることは、念頭に置かれたい。したがって、4つの命令ループが非常に有効であると考えられる。この事実は、コンピュータは制限された機能を有するため、該コンピュータがしばしば近傍から機能を「借りる(borrow)」ことが好都合であろう、という関連する事実によってさらに顕著になる。このことは、マイクロループの使用に関する理想的な機会が与えるであろう。あるコンピュータが処理能力などを近傍から借りる必要があることがある一方で、該コンピュータは近傍からいくらかのメモリを借り、それを自身の内部メモリと幾分同じ方法で使用する必要があることがあるという別の可能性もある。マイクロループを近傍に渡して、近傍に一連のデータを読み書きするよう命令することによって、このようなメモリの借用を容易に遂行することができる。このようなマイクロループには、例えば、特定の内部メモリの位置から書込みをし、その位置を増分し、所与の回数の対話を繰り返す命令を含めることができる。
マイクロループを近傍へ渡す上記の例は、本発明のさらに別の態様の例であり、現在「フォースレット(Forthlets)」と呼ばれている。これは、それらが現在はフォース(Forth)コンピュータ言語で実装されているためである。ただし、本発明の適用は、フォースによる使用に厳密に制限されるわけではない。フォースレットは、実行用コンピュータに直接送信できるミニプログラム(mini-program)である。先行技術のコンピュータでは、実行前に命令を読出して格納しなければならないが、本明細書の「発明を実施するための最良の形態」に照らしてわかるように、本発明によればそれは不要である。実際、本発明の重要な態様は、コンピュータがフォースレットを生成し、それを別の実行用コンピュータに渡すことができることであると期待される。フォースレットは、プログラマが「あらかじめ書込み」し、格納して使用することができる。実際、フォースレットを必要に応じて使用するために「ライブラリ」に蓄積することができる。しかしながら、あらかじめプログラムされた基準に従って、フォースレットをコンピュータ内部で生成できることも本発明の範囲内である。
例として、本発明の実施形態において、I/Oレジスタはメモリアドレスとして扱われ、このことは、メモリを読み書きする同一(または同様)の命令はI/O操作も実行することができることを意味する。マルチコアチップ(multi-core chips)の場合、I/O構造としてこれを選択すると強力な効果がある。コアプロセッサは、自身のローカルのROMおよびRAMから命令を読出して実行することができるだけでなく、I/Oポートまたはレジスタ上に与えられた命令を読出して実行することもできる。データを送信するタイトなループという概念は非常に強力になる。この概念により、命令ストリームをコアにI/Oポートで提供され、I/Oポートから直接実行することが可能になる。したがって、あるコアは、コードオブジェクトを、それを直接実行することができる隣接コアプロセッサに送信することができる。コードオブジェクトをコア間で渡すことができ、コアはコアオブジェクトをレジスタで実行する。各コアは本質的に完全に自身のローカルアドレス空間内で、コード命令の送信に費やされる見かけ時間(apparent time)なしに動作するため、コードオブジェクトは非常に高速で到着する。
前述のように、各命令フェッチは、複数(現在説明している実施形態では4つ)の命令をコアプロセッサにもたらす。この種の組込み「キャッシュ」は確かに小さいが、命令自体がキャッシュを利用するときは、組込みキャッシュは非常に効果的である。例えば、単一の18ビット命令語(instruction word)の範囲内に完全に含まれるミクロなfor−nextループを構築することができる。これらのタイプの構成は、それは大きなデータブロックを単一の命令フェッチだけで転送可能であることを意味するため、I/Oレジスタに組み込まれた自動状態信号送信(automatic status signaling)と結合される場合に望ましい。また、この種の命令パッキングにより、そのレジスタに現れる各語は1つではなく4つの命令を表すため、近傍のプロセッサコアから共有I/Oレジスタ上に提供された命令を実行するという概念は、新しい能力を獲得する。マルチコアチップにおけるこれらのタイプのソフトウェア/ハードウェア構造およびパフォーマンスに対するその驚異的な影響は、従来の言語では絶対に得られないものである。これらは複数の命令が単一語にパックされ、完全なループをその語の内部から実行できるような命令セットにおいてのみ可能である。
本明細書内で説明され、複数の図面に図示されるように、本発明を実行する形態の説明および本発明の産業上の利用可能性を考慮すると、本発明に関するこれらおよび他の目的と利点は当業者に明らかになるであろう。列挙した目的と利点は、本発明の全ての可能な利点の完全なリストではない。さらに本発明は、適用の際に、意図される目的および/または利点の1つまたは複数が欠如するかまたは要求されない場合であっても、実践することができるであろう。
さらに当業者は、本発明の様々な実施形態が、必ずしも全てではないが1つまたは複数の上述の目的および/または利点を達成可能であることを認識するであろう。したがって、本明細書で記述される目的および/または利点は、本発明の本質的な要素ではなく、限定事項として解釈されるべきではない。
本発明を、以下の説明において図面と関連して説明するが、図面において同様の番号は同一または類似の要素を表す。本発明は、本発明の目的を達成する形態に関して説明されるが、これらの教示を考慮して、本発明の精神または範囲から逸脱することなく変更を行うことができることは、当業者により理解されるであろう。
本明細書において説明され、および/または図に示される本発明の実施形態および変形形態は、例示としてのみ示されており、本発明の範囲を限定するものではない。特に記述しない限り、本発明の個々の態様および構成要素を省略または修正することができ、あるいはしたがって公知の均等物を代用するか、あるいは将来開発されるかまたは将来受け入れ可能な代用物と認められるような未知の代用物で代用することができる。本発明は可能な適用範囲が広く、上記の多くの変形形態に適応可能であることが意図されるため、本発明は、特許請求される発明の精神と範囲内に留まりつつ、様々な応用に対して修正することができる。
以下の実施形態は、コンピュータ間の非同期通信と、個々に非同期的に動作するコンピュータとの両方を有するコンピュータアレイの例を使用して説明されているが、本発明の適用は決してこの内容に限定されることはない。
本発明を実行する公知の形態は、個別のコンピュータのアレイである。本発明のコンピュータアレイを、図1の線図に示し、図内では一般的な参照番号10で指定する。コンピュータアレイ10は、複数(示される例では24個)のコンピュータ12(アレイの例では「コア」または「ノード」と呼ばれることもある)を有する。示された例では、コンピュータ12の全ては、単一のダイ(die)14上に位置する。本発明によると、コンピュータ12の各々は、以下でより詳細に説明されるように、一般的に独立に機能するコンピュータである。コンピュータ12は、複数(その数量は、以下でより詳細に説明する)の相互接続データバス16によって相互接続される。この例では、データバス16は双方向の非同期高速並列データバスであるが、他の相互接続手段を目的で利用することができることも本発明の範囲の範囲内である。アレイ10の本実施形態では、コンピュータ12間のデータ通信が非同期であるだけでなく、個々のコンピュータ12も内部的に非同期モードで動作する。このことは、重要な利点を与えることが本発明者により見出された。例えば、クロック信号がコンピュータアレイ10全体にわたって分散される必要がないため、大量の電力が節約される。さらに、クロック信号を分散させる必要がないため、アレイ10の大きさを制限し得る多くのタイミング問題、または他の公知の困難性を招く多くのタイミング問題が除去される。
当業者は、ダイ14上に、明確にするため図1から省略されている追加のコンポーネントがあることを認識するであろう。このような追加のコンポーネントには、電力バス、外部接続パッド、およびマイクロプロセッサチップの他の上記の一般的態様が含まれる。
コンピュータ12eは、アレイ10の外周上にないコンピュータ12の1つの例である。すなわち、コンピュータ12eは4つの垂直に隣接したコンピュータ12a、12b、12cおよび12dを有する。コンピュータ12aから12eのこのグループ化は、以下で、アレイ10のコンピュータ12間の通信のより詳細な説明に関連して使用されることになる。図1からわかるように、コンピュータ12eなどの内側のコンピュータは、バス16を介して直接通信できる他の4つのコンピュータ12を有することになる。以下の説明において、説明される原理は、アレイ10の外周上にあるコンピュータ12は3つのコンピュータ12とのみ直接通信し、または隅のコンピュータ12の場合は他の2つのコンピュータ12とのみ直接通信することを除いて、コンピュータ12の全てに適用される。
図2は、図1の一部のより詳細な図であり、コンピュータ12の一部、特にコンピュータ12aから12eを含んで示している。図2は、データバス16の各々が読出し線(read line)18、書込み線(write line)20、および複数(この例では18個)のデータ線(data line)22を有することも示す。データ線22は、1つが18ビットの命令語の全ビットを一般的に同時に並列で転送することができる。本発明の一実施形態において、コンピュータ12の一部は、隣接コンピュータのミラーイメージであることに留意されたい。しかしながら、コンピュータ12が全て同等の指向であるか隣接するコンピュータのミラーイメージであるかは、ここで説明される本発明の一態様ではない。したがって、本発明をより良く説明するため、この可能性のある複雑性については本明細書内ではさらには説明しないことにする。
本発明の方法によれば、コンピュータ12eなどのコンピュータ12は、それぞれ1つ、2つ、3つ、または4つ全ての隣接コンピュータ12からデータを受信する準備が整うように、1つ、2つ、3つ、または4つ全ての読出し線18を設定するができる。同様に、コンピュータ12は1つ、2つ、3つ、または4つ全ての書込み線20を、高(high)に設定することもできる。本発明者は、現在2つ以上のコンピュータ12の書込み線20を一度に高に設定する実際の値が存在するとは考えていないが、上記の動作を使用することがあり得ると考えられるので、そうすることは本発明の範囲を超えるものではない。
隣接コンピュータ12a、12b、12c、または12dの1つが、それ自身とコンピュータ12eとの間の書込み線20を高に設定すると、コンピュータ12eが既に対応する読出し線18を高に設定している場合は、語はコンピュータ12a、12b、12c、または12dからコンピュータ12eに関連データ線22上で転送される。次いで、送信コンピュータ12は書込み線20を解放し、受信コンピュータ(この例では12e)は書込み線20と読出し線18の両方を低(low)にする。後者のアクションは送信コンピュータ12に対して、データが受信されたことの応答となる。上記の説明は、必ずしもイベントの順序を順番に示すことを意図していないことに留意されたい。実際に実施において、この例では、受信コンピュータは、送信コンピュータ12がその書込み線20を解放する(高にするのを止める)少し前に、書込み線20を低に設定することを試みることができる。このような場合は、送信コンピュータ12がその書込み線20を解放するとすぐに、書込み線20は受信コンピュータ12eによって低にされることになる。
本例では、プログラミングの誤りのみが、バス16の1つの両端上にあるコンピュータ12の両方がそれらの間の読出し線18を高に設定しようと試みる原因となる。さらに、バス16の1つの両端上にあるコンピュータ12の両方がそれらの間の読出し線18を同時に高に設定しようとするのは誤りである。同様に、上述のように、自身の4つの書込み線20のうち2つ以上を高に設定された単一のコンピュータ12を有することが望ましいとは、現在は予想されていない。しかしながら、コンピュータ12の1つが待ち状態であり、選択されたコンピュータ12の第1のものからのデータを待ち、その対応する書込み線20を高に設定することができるように、読出し線18の異なる組み合わせを高に設定することが望ましい場合があることが、現在予想されている。
上述の例では、(1つまたは複数のコンピュータ12a、12b、12cまたは12dから選択された)隣接コンピュータがその書込み線20を高に設定する前に、コンピュータ12eが、1つまたは複数のその読出し線18を高に設定するとして説明した。しかしながら、このプロセスは逆の順序で生じ得ることも確かである。例えば、コンピュータ12eがコンピュータ12aに書き込もうとする場合、コンピュータ12eはコンピュータ12eとコンピュータ12aとの間の書込み線20を高に設定するであろう。次いで、コンピュータ12eとコンピュータ12aとの間の読出し線18がコンピュータ12aによってまだ高に設定されていない場合は、コンピュータ12eはコンピュータ12aがその読出し線20を高に設定するまで単に待機するだけである。次いで、上述のように、対応するペアの書込み線18と読出し線20の両方が高のときに、データ線22上で転送を待っているデータが転送される。その後、受信コンピュータ12(この例では、コンピュータ12a)は、2つのコンピュータ(この例では、12eと12a)間の読出し線18と書込み線20の両方を、送信コンピュータ12eがそれ解放するとすぐに低に設定する。
コンピュータ12eなどのコンピュータ12が書込みを期待してその書込み線20の1つを高に設定している場合はいつでも、コンピュータ12は、本質的に電力を使用せずに、上述のように適切な隣接コンピュータ12からデータが「要求」されるまで単に待機する。ただし、データが送信されるべきコンピュータ12がその読出し線18を既に高に設定している場合は除かれ、この場合はデータがすぐに送信される。同様に、コンピュータ12が読出しを期待して1つまたは複数のその読出し線18を高に設定している場合はいつでも、コンピュータ12は、本質的に電力を使用せずに、選択されたコンピュータ12に接続された書込み線20が高になり命令語を2つのコンピュータ12間で転送するまで、単に待機する。
コンピュータ12を上述のように機能させる可能な手段および/または方法は、いくつか存在し得る。しかしながら、この例において、コンピュータ12がそのように振舞うのは、単にそれらが(説明される非同期的な方法で、データをそれらの間で転送することに加えて)一般に非同期的に内部で動作しているためである。すなわち、命令は逐次的に完了する。書込みまたは読出し命令のいずれかが発生すると、その命令が完了するまで(または、おそらく代わりに「リセット」などによりそれが中止されるまで)さらなる操作はあり得ない。先行技術の意味での通常のクロックパルスはない。むしろ、実行されている命令が読出しまたは書込みタイプの命令のいずれでもないとき(読出しまたは書込みタイプの命令は別のエンティティによって完了される必要があると仮定する)、あるいは読出しまたは書込みタイプの操作が実際に完了したときにのみ、パルスが生成されて次の命令を遂行する。
図3は、図1および図2のコンピュータ12の1つの例の一般的な配置を示すブロック図である。図3からわかるように、コンピュータ12のそれぞれは、一般に自身のRAM24およびROM26を有する内蔵型コンピュータである。前述のように、コンピュータ12は、この例において単一チップ上で結合される場合、個々の「コア」と呼ばれることもある。
コンピュータ12の他の基本的なコンポーネントは、リターンスタック28、命令領域30、演算論理装置(「ALU」:Arithmetic Logic Unit)32、データスタック34、および命令をデコードするためのデコード論理部36である。当業者は、一般的にこの例のコンピュータ12などのスタックベースのコンピュータの操作に精通しているであろう。コンピュータ12は、データスタック34と、独立したリターンスタック28とを有するデュアルスタックコンピュータである。
本発明のこの実施形態において、コンピュータ12は、隣接コンピュータ12と通信する4つの通信ポート38を有する。通信ポート38はトリステート(tri-state)ドライバであり、オフ状態、(信号をコンピュータ12に取り込む)受信状態、および(信号をコンピュータ12から引き出す)送信状態を有する。もちろん、特定のコンピュータ12がコンピュータ12eの例のようにアレイ(図1)の内部にない場合、1つまたは複数の通信ポートは、その特定のコンピュータにおいて少なくとも本明細書内で説明される目的では使用されないであろう。命令領域30は、この例ではAレジスタ40a、Bレジスタ40b、およびPレジスタ40cを含む複数のレジスタ40を含む。この例において、Aレジスタ40aは完全な18ビットレジスタであるが、一方、Bレジスタ40bとPレジスタ40cは9ビットレジスタである。
本発明はこの例に制限されないが、本コンピュータ12は、ネイティブなフォース言語の命令を実行するように実装されている。フォースコンピュータ言語に詳しい者は理解するであろうが、フォース「語」として知られる複雑なフォース命令は、コンピュータ内に設計されたネイティブプロセッサ命令から構築される。フォース語の集合は「ディクショナリ」として知られる。他の言語では、これは「ライブラリ」として知られる可能性がある。以下でさらに詳細に説明されるように、コンピュータ12は、18ビットを一度にRAM24、ROM26から、または直接データバス16(図2)の1つから読み出す。しかしながら、フォースにおいて大部分の命令(オペランド不要命令として知られる)は、そのオペランドをスタック28および34から直接取得するので、それらの命令は一般に5ビットの長さしかなく、したがって、グループ内の最後の命令が3ビットのみを必要とする制限付き命令のセットから選択されるという条件で、最大4つの命令を単一の18ビットの命令語に含むことができる。また、図3においてブロック図の形式で示されているのは、スロットシーケンサ42である。本発明のこの実施形態において、データスタック34内の最上部にある2つのレジスタは、Tレジスタ44とSレジスタ46である。
図4は、命令語48の図表示である(命令語48は、実際には命令、データ、またはその何らかの組み合わせを含むことができることに留意されたい)。命令語48は、18個のビット50で構成される。これはバイナリコンピュータであり、ビット50のそれぞれは、「1」または「0」である。前述のように、18ビット幅の命令語48は、スロット0 54a、スロット1 54b、スロット2 54c、およびスロット3 54dと呼ばれる4つのスロット54内に最大4つの命令52を含むことができる。本発明のこの実施形態において、18ビットの命令語48は常に全体として読み出される。したがって、命令語48内に最大4つの命令を有する可能性が常にあるので、利用可能なスロット54の全てを使用することが不必要な場合または望ましくない場合は、無操作(no-op)(操作なし)命令をコンピュータ12の命令セットに含めてインスタンスを提供する。本発明のある特定の実施形態によると、代替スロット(具体的には、スロット1 54bおよびスロット3 54c)内のビット50の極性(アクティブロー(active low)と比べたアクティブハイ(active high))が反転されることに留意されたい。しかしながら、これは現在説明されている本発明の必要な態様ではなく、したがって、本発明をより良く説明するため、この可能性のある複雑性は以下の説明では避けることにする。
図5は、図3のスロットシーケンサ42の概略図である。図5からわかるように、スロットシーケンサ42は、環状に配置された複数(この例では14個)のインバータ56および1つのNANDゲート58を有し、信号が14個のインバータ56とNANDゲート58を通過すると、その信号は奇数回反転される。ORゲート60への2つの入力のいずれかが高になると、信号がスロットシーケンサ42内で開始される。第1のORゲートの入力62は、実行中の命令52のビットi4 66(図4)から導出される。ビットi4が高である場合は、その特定の命令52はALU命令であり、i4ビット66は「1」である。i4ビットが「1」のとき、第1のORゲートの入力62は高であり、スロットシーケンサ42がトリガされ、次の命令52を実行させることになるパルスを開始する。
第1のORゲートの入力62が高になること、または第2のORゲートの入力64ハイになること(本明細書の以下で説明される)のいずれかによってスロットシーケンサ42がトリガされると、信号はスロットシーケンサ42の周りを2度通過し、出力をスロットシーケンサ出力68でその都度生成する。信号がスロットシーケンサ出力68を最初に通過するとき、出力は低であり、2回目はスロットシーケンサ出力68での出力は高になる。スロットシーケンサ出力68からの比較的広範囲の出力は、狭いタイミングパルスを出力として生成するパルス生成器70(ブロック図の形式で示される)に提供される。当業者は、狭いタイミングパルスはコンピュータ12の操作を正確に開始するのに望ましいことを認識するであろう。
実行中の特定の命令52が読出しまたは書込み命令である場合、または実行中の命令52がシーケンス内の次の命令52の即時実行をトリガするのが望ましくない任意の他の命令である場合は、i4ビット66は「0」(低)であり、第1のORゲートの入力62もしたがって低である。当業者は、コンピュータ12などのデバイスにおいてイベントのタイミングは一般に非常に重要であり、これは例外がないことを認識するであろう。スロットシーケンサ42の検証において、当業者は、ORゲート60からの出力は、環の第2の「ラップ(lap)」を開始するために信号がNANDゲート58を巡回して通過するまで、高でなければならないことを認識するであろう。その後、ORゲート60からの出力は、回路が不必要に連続的に振動するのを防止するためにその第2の「ラップ」中に低になる。
上の説明に照らして理解できるように、第2のORゲートの入力66が以下で説明されるように高でないと仮定すると、i4ビット66が「0」のときスロットシーケンサ42はトリガされないことになる。
前述のように、各命令52のi4ビット66は、その命令が読出しまたは書込みタイプの命令であるかどうかに従って設定される。命令52内の残りのビット50は、その命令に対する特定のオペコードの残りを提供する。読出しまたは書込みタイプの命令の場合、1つまたは複数のビットを使用して、特定のコンピュータ12においてどこからデータを読み出すか、またはどこに書き込むかを示すことができる。本発明のこの例において、書き込まれるデータは常にTレジスタ44(データスタック34の最上部)から来るが、データは、Tレジスタ44または他の命令領域30のいずれかに選択的に読込むことができ、命令領域30からそのデータを実行することができる。これは、本発明のこの特定の実施形態において、データまたは命令のいずれかを本明細書内で説明される方法で通信でき、したがってデ命令をータバス16から直接実行することができるからであるが、このことは本発明の必要な態様ではない。さらに、1つまたは複数のビット50を使用して、ポート38がある場合に、どのポート38が読出しまたは書込みに設定されるべきかを示すことになる。この後者の操作は、1つまたは複数のビットを使用してAレジスタ40a、Bレジスタなどのレジスタ40を指定することにより、任意選択的に遂行することができる。上記の例では、指定されるレジスタ40は、ポート38(および、さらに、メモリ、外部通信ポートなどの、コンピュータ12が通信を試みる可能性のある任意の他の可能なエンティティ)のそれぞれに対応するビットを有するデータがあらかじめロードされるであろう。例えば、特定のレジスタ40内の4つのビットのそれぞれは、上ポート38a、右ポート38b、左ポート38c、または下ポート38dのそれぞれに対応することができる。このような場合において、任意のビット位置に「1」がある場合、通信が、対応するポート38を介して進むように設定される。前述のように、本発明のこの実施形態において、読出しオペコードが2つ以上のポート38を通信用に単一命令で設定することができることが期待されるが、書込みオペコードが2つ以上のポート38を通信用に単一命令で設定することは、可能ではあるが期待されていない。
すぐ下の例は、コンピュータ12eがコンピュータ12cへの書込みを試みる通信を想定しているが、この例は任意の隣接コンピュータ12間の通信に適用可能である。書込み命令が書込みコンピュータ12e内で実行されると、選択された書込み線20(この例では、コンピュータ12eと12cの間の書込み線20)が高に設定され、対応する読出し線18が既に高である場合、データは、選択された通信ポート38を通して選択された位置から即座に送信される。あるいは、対応する読出し線18がまだ高ではない場合、コンピュータ12eは単に、その対応する読出し線18が高になるまで操作を停止する。読出しまたは書込みタイプの命令があるときのコンピュータ12aの停止(または、より正確には、コンピュータ12aのさらなる操作を有効にしないこと)のメカニズムは、本明細書で前述されている。要するに、命令52のオペコードがビット位置i4 66の位置に「0」を有するため、ORゲート60の第1のORゲートの入力62は低であり、したがって、スロットシーケンサ42は有効化パルス(enabling pulse)を生成するようにトリガされない。
読出しまたは書込みタイプの命令の完了時にコンピュータ12eの操作が再開される方法に関して、そのメカニズムは以下のとおりである。すなわち、コンピュータ12eと12cの間の読出し線18および対応する書込み線20の両方が高のときに、線18と20の両方は、それを高に保持する各コンピュータ12のそれぞれによって解放される(この例において、送信コンピュータ12eは書込み線18を高に保持し、受信コンピュータ12cは読出し線20を高に保持することになる)。次いで、受信コンピュータ12cは線18および20を低にすることになる。実際の実施においては、受信コンピュータ12cは、送信コンピュータ12eが書込み線18を解放する前に、線18および20を低にしようと試みることができる。しかしながら、線18および20は高にされ、弱く低に保持(ラッチ)されるのみであるので、線18または20を低にするいずれの試みも、実際には、線18または20がそれを高にラッチしているコンピュータ12によって解放されるまで成功しないことになる。
データバス16内の線18と20の両方が低になると、これは「肯定応答(acknowledge)」状態である。コンピュータ12eと12cのそれぞれは、肯定応答状態の際、自身の内部の肯定応答線(acknowledge line)72を高に設定する。図5からわかるように、肯定応答線72は、第2のORゲートの入力64を提供する。ORゲート60の入力62または64のいずれかに対する入力がORゲート60の出力を高にすることになるため、この入力は、スロットシーケンサ42の操作を前述の方法で開始することになり、その結果、命令語48の次のスロット54内の命令52が実行されることになる。肯定応答線72は、次の命令52がデコードされるまで高であり、誤ったアドレス(spurious address)がアドレスバスに到着することを防止する。
実行中の命令52が命令語48のスロットの3つの位置にあるときはいずれの場合でも、もちろんビットi4 66が「0」である場合を除いて、コンピュータ12は次の待機中の18ビット命令語48をフェッチすることになる。実際の実施では、本発明のメカニズムは、命令語48内の命令52全ての実行が終了する前にフェッチを開始することができるように、命令を「プリフェッチ(prefetch)」する方法および装置を含む。しかしながら、これも非同期データ通信に関する本発明の方法および装置の必須の態様ではない。
コンピュータ12eがコンピュータ12cに書き込む上記の例を、詳細に説明してきた。上記の説明から理解できるように、コンピュータ12eがコンピュータ12cに最初に書き込むことを試みるかどうかにかかわらず、またはコンピュータ12cがコンピュータ12eから読み出すことを最初に試みるかどうかにかかわらず、操作は本質的に同じである。操作は、コンピュータ12eまたは12cのどちらが最初に準備できても、コンピュータ12および12cの両方が準備できるまで完了することができず、その第1のコンピュータ12は、他のコンピュータ12eまたは12cが転送を完了するまで「スリープ状態になる」だけである。上述のプロセスを別の観点から見ると、書込みコンピュータ12eと受信コンピュータ12cの両方が、それぞれ書込みおよび読出し命令を実行するときに実際にスリープ状態になるが、トランザクションに最後に入ったものは、読出し線18と書込み線20の両方が高になったときほぼ瞬時にスリープ状態が解除され(reawaken)、その一方でトランザクションを開始する第1のコンピュータ12は、第2のコンピュータ12がプロセスを完了する準備ができるまで、ほぼ無制限にスリープ状態でいることができる。
本発明者は、デバイス間の効率的な非同期通信を可能にする重要な機能は、ある種の肯定応答信号または肯定応答状態であると考えている。先行技術では、デバイス間の通信のほとんどはクロック制御されており、受信デバイスがデータを正しく受信したことを送信デバイスが認識する直接的な方法はない。チェックサム操作などの方法を使用して確実にデータが正しく受信されるように試みてきたが、送信デバイスは、操作が完了したことの直接の通知を有しない。本明細書で説明されるように、本発明の方法は、デバイス間の非同期通信を可能にまたは少なくとも現実的にする必要な肯定応答状態を提供する。さらに、肯定応答状態は、肯定応答状態が発生するまで1つまたは複数のデバイスを「スリープ状態にする」こともできる。もちろん、肯定応答状態を、コンピュータ12間で(相互接続データバス16上または別個の信号線上のいずれかで)送信中の別個の信号によってコンピュータ12間で通信することができ、このような肯定応答信号は本発明のこの態様の範囲内である。しかしながら、本明細書で説明される本発明の実施形態によると、肯定応答の方法は実際に通信に影響する信号、クロック周期、タイミングパルス、または説明した以外の任意のそのようなリソースを一切追加する必要がないという意味で、さらに経済的であると考えられる。
本発明に対して、その価値または範囲を変更することなく、様々な修正を加えることができる。例えば本明細書では、本発明を読出し命令および書込み命令に関して説明してきたが、実際の実施では、2つ以上の読出しタイプの命令および/または2つ以上の書込みタイプの命令が存在することができる。単に一例として、本発明の一実施形態では、レジスタを増分させる1つの書込み命令と、レジスタを増分させない他の書込み命令がある。同様に、書込み命令は、前述のようにどのレジスタ40を使用して通信ポート38などを選択するかに従って変化することができる。コンピュータ12の設計者が代替的な読出しの振舞いとしてどの変形形態を有用な選択と考えるかのみによって、いくつかの異なる読出し命令も存在することができる。
同様に、本発明を、単一のダイ14上のアレイ10におけるコンピュータ12間の通信に関して本明細書内で説明してきたが、同じ原理と方法を使用し、または使用するために修正して、コンピュータ12とその専用メモリ間の通信、またはアレイ10内のコンピュータ12と外部デバイス間の(入力/出力ポートなどを介した)通信などの他のデバイス間通信を実現することができる。実際に、一部の応用例では、アレイのアレイ間の通信に適用可能な現在説明したデバイス間通信の方法とともに、アレイのアレイを必要とする可能性があると予想される。
本発明のコンピュータアレイ10およびコンピュータ12の特定の例について本明細書内で説明してきたが、これらに対してまだ想定されていない非常に多くの応用例が存在すると考えられる。実際、本発明の方法および装置は非常に様々な用途に対して適用可能であることが、本発明の利点の1つである。
上記の全ては、本発明の利用可能な実施形態の例の一部にすぎない。当業者は、本発明の精神および範囲から逸脱することなく他の多くの修正および変更が可能であることに容易に気づくであろう。したがって、本開示は限定として意図されておらず、添付の特許請求の範囲が本発明の範囲全体を網羅するとして解釈されるべきである。
本発明のコンピュータアレイ10、コンピュータ12、および関連方法74は、非常に多様なコンピュータアプリケーションで広範囲に使用されるよう意図される。それらは、際立った計算能力を必要とするが電力消費および熱産生(heat production)が重要な問題であるアプリケーションにおいて特に有用であることが期待されている。
本明細書で既に説明したように、本発明の利用可能性は、それによってデバイス間の様々なタイプのコンピュータ通信を改善できることである。使用中でないときは一部のコンピュータを「スリープ状態にする」ことができる本発明の方法を使用して、様々な応用例および実装例において、電力消費を削減し、熱産生を抑え、コンピュータ間およびコンピュータ化されたデバイス間の通信の効率を改善することが期待される。
本発明のコンピュータアレイ10、コンピュータ12、および方法74は、容易に生成でき、既存のタスク、入力/出力デバイスなどと容易に統合することができ、また、本明細書で説明した利点が提供されるため、産業界で容易に受け入れられることが期待される。これらおよび他の理由により、本発明の有用性と産業上の利用可能性は、持続時間の範囲および持続時間が長期に渡ることの両方に関して重要であることが期待されている。
本発明によるコンピュータアレイの図である。 図1のコンピュータのサブセットを示す詳細図であり、図1の相互接続データバスのより詳細な図である。 図1および図2のコンピュータの1つの一般的な配置を示すブロック図である。 本発明の適用による命令語を示す図である。 図3のスロットシーケンサ42を示す概略図である。
符号の説明
10 コンピュータアレイ
12 コンピュータ
14 ダイ
16 データバス
18 読出し線
20 書込み線
22 データ線
24 RAM
26 ROM
28 リターンスタック
30 命令領域
32 ALU
34 データスタック
36 デコード部
38 内部通信ポート
38a 上ポート
38b 右ポート
38c 左ポート
38d 下ポート
40 レジスタ
40a Aレジスタ
40b Bレジスタ
40c Pレジスタ
42 スロットシーケンサ
44 Tレジスタ
46 Sレジスタ
48 命令語
50 ビット
52 命令
54 スロット
54a スロット0
54b スロット1
54c スロット2
54d スロット3
56 インバータ
58 NANDゲート
60 ORゲート
62 第1のORゲートの入力
64 第2のORゲートの入力
66 i4ビット
68 スロットシーケンサ出力
70 パルス生成器
72 肯定応答線

Claims (13)

  1. 複数のコンピュータと、
    前記複数のコンピュータを接続する複数のデータ経路と
    を備え、
    各コンピュータは、最も近い近傍の少なくともいくつかとの直接通信経路を有する
    ことを特徴とするコンピュータアレイ。
  2. 各コンピュータは、自身の最も近い近傍の全てとの直接通信経路を有することを特徴とする請求項1に記載のコンピュータアレイ。
  3. 近傍の定義は、対象のコンピュータと直接隣接するコンピュータに制限されることを特徴とする請求項1に記載のコンピュータアレイ。
  4. 前記近傍の定義は、前記対象のコンピュータと水平に直接隣接するコンピュータまたは前記対象のコンピュータと垂直に直接隣接するコンピュータのいずれかを含むことを特徴とする請求項1に記載のコンピュータアレイ。
  5. 前記対象のコンピュータは、前記アレイ内の直接隣接しない他のコンピュータと、前記他のコンピュータの少なくともいくつかを通してメッセージを渡すことによって、通信することができることを特徴とする請求項1に記載のコンピュータアレイ。
  6. 命令が任意選択的に入力レジスタから直接実行されることを特徴とするコンピュータ。
  7. 複数の語命令のセットを有するコンピュータにおいて、
    前記複数の語命令のセット内の最初の命令にループバックするように、前記複数の語命令のセットにループ命令を含むことを特徴とする改善。
  8. 前記ループ命令は、前記複数の語命令のセット内において最後の命令であることを特徴とする請求項7に記載の改善。
  9. ループ全体を構成するのに4つ未満の命令が必要とされる前記複数の語命令のセット内に含むための無操作命令をさらに含むことを特徴とする請求項7に記載の改善。
  10. 複数のコンピュータのアレイにおいて、
    前記複数のコンピュータの第1のコンピュータに、命令グループを前記複数のコンピュータの第2のコンピュータに伝達させることと、
    前記複数のコンピュータの前記第2のコンピュータに、前記命令グループを入力レジスタから直接実行させることと
    を含むことを特徴とする改善。
  11. 前記複数のコンピュータの前記第1のコンピュータと前記複数のコンピュータの前記第2のコンピュータは、その間に直接通信経路を有することを特徴とする請求項10に記載の改善。
  12. 前記命令グループは、前記第1のコンピュータと前記第2のコンピュータとの間の少なくとも第3のコンピュータを通してルーティングされることを特徴とする請求項10に記載の改善。
  13. 前記命令グループは、前記命令グループを前記第1のコンピュータから前記第2のコンピュータにルーティングする命令に関連付けられていることを特徴とする請求項10に記載の改善。
JP2008555370A 2006-02-16 2007-02-16 コンピュータのアレイ間でのリソースの割り当て Withdrawn JP2009527814A (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US11/355,513 US7904695B2 (en) 2006-02-16 2006-02-16 Asynchronous power saving computer
US11/355,495 US7904615B2 (en) 2006-02-16 2006-02-16 Asynchronous computer communication
US78826506P 2006-03-31 2006-03-31
US11/441,784 US7752422B2 (en) 2006-02-16 2006-05-26 Execution of instructions directly from input source
US11/441,812 US7913069B2 (en) 2006-02-16 2006-05-26 Processor and method for executing a program loop within an instruction word
US11/441,818 US7934075B2 (en) 2006-02-16 2006-05-26 Method and apparatus for monitoring inputs to an asyncrhonous, homogenous, reconfigurable computer array
PCT/US2007/004081 WO2007098024A2 (en) 2006-02-16 2007-02-16 Allocation of resources among an array of computers

Publications (2)

Publication Number Publication Date
JP2009527814A true JP2009527814A (ja) 2009-07-30
JP2009527814A5 JP2009527814A5 (ja) 2010-04-08

Family

ID=38437887

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008555370A Withdrawn JP2009527814A (ja) 2006-02-16 2007-02-16 コンピュータのアレイ間でのリソースの割り当て

Country Status (4)

Country Link
EP (1) EP1984836A4 (ja)
JP (1) JP2009527814A (ja)
KR (1) KR20090003217A (ja)
WO (1) WO2007098024A2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115586972B (zh) * 2022-11-25 2023-02-28 成都登临科技有限公司 命令生成方法、装置、ai芯片、电子设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5222237A (en) * 1988-02-02 1993-06-22 Thinking Machines Corporation Apparatus for aligning the operation of a plurality of processors
US5440749A (en) 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
DE4019040A1 (de) 1990-06-14 1991-12-19 Philips Patentverwaltung Multirechnersystem
SE514785C2 (sv) 1999-01-18 2001-04-23 Axis Ab Processor och metod för att exekvera instruktioner från flera instruktionskällor
US7415594B2 (en) * 2002-06-26 2008-08-19 Coherent Logix, Incorporated Processing system with interspersed stall propagating processors and communication elements
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array

Also Published As

Publication number Publication date
WO2007098024A2 (en) 2007-08-30
KR20090003217A (ko) 2009-01-09
WO2007098024A3 (en) 2008-12-31
EP1984836A4 (en) 2009-08-26
EP1984836A2 (en) 2008-10-29

Similar Documents

Publication Publication Date Title
US8825924B2 (en) Asynchronous computer communication
US7904695B2 (en) Asynchronous power saving computer
JP2007272895A (ja) コンピュータプロセッサアレイの操作方法および装置
JP2009064411A (ja) データおよび命令をコンピュータにロードするための方法および装置
US20100281238A1 (en) Execution of instructions directly from input source
KR20090016644A (ko) 동작 효율성을 증가시킨 컴퓨터 시스템
JP2009009550A (ja) データの通信
US8468323B2 (en) Clockless computer using a pulse generator that is triggered by an event other than a read or write instruction in place of a clock
US7966481B2 (en) Computer system and method for executing port communications without interrupting the receiving computer
JP2009009549A (ja) 一連のコンピュータでデータを処理するシステムおよび方法
US7934075B2 (en) Method and apparatus for monitoring inputs to an asyncrhonous, homogenous, reconfigurable computer array
JP2009527814A (ja) コンピュータのアレイ間でのリソースの割り当て
KR20090004394A (ko) 입력 소스로부터의 직접적인 명령어들의 실행
US20100325389A1 (en) Microprocessor communications system
EP1821217B1 (en) Asynchronous computer communication

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100216

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100216

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20100301