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