(57)【要約】  コンピュータアレイ（１０）が、複数のコンピュータ（１２）を有する。コンピュータ（１２）は、互いと非同期に通信し、コンピュータ（１２）自体は、内部的に全般的に非同期の形で動作する。あるコンピュータ（１２）は、別のコンピュータとの通信を試みる時に、他方のコンピュータ（１２）がそのトランザクションを完了する準備ができるまで眠り、これによって、電力を節約し、熱発生量を減らす。眠っているコンピュータ（１２）は、データまたは命令（１２）を待っていることができる。命令の場合に、眠っているコンピュータ（１２）は、それらの命令を保管するために、またはそれらの命令を即座に実行するために待っていることができる。後者の場合に、それらの命令は、まずそれらの命令をまずメモリに置くのではなく、受け取られた時に命令レジスタ（３０ａ）に置かれ、そこから実行される。命令には、一連の動作を繰り返して実行することができるマイクロループ（１００）を含めることができる。一応用例で、眠っているコンピュータ（１２）は、入力によって覚醒され、そうでなければ他の形でアクティブなコンピュータの割込みを必要としたはずのアクションを開始するようになっている。
2009527808.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにおいて、
全般的に同時に読み取られる複数の命令
を含み、前記複数の命令は、スタック上の数によって示されるある量の反復だけ繰り返されることを特徴とするコンピュータ。
【請求項２】
前記スタック上の前記数は、各反復の後に減分されることを特徴とする請求項１に記載のコンピュータ。
【請求項３】
前記複数の命令内の最後の命令は、ＮＥＸＴ命令であることを特徴とする請求項１に記載のコンピュータ。
【請求項４】
前記ＮＥＸＴ命令は、前記スタック上の前記数を変更させ、さらに、前記コンピュータの動作に、前記スタック上の前記数が所定の値に達するまで前記複数の命令内の最初の命令で継続させることを特徴とする請求項３に記載のコンピュータ。
【請求項５】
ＮＥＸＴ命令が前記複数の命令内の最後の命令である時に、前記コンピュータは、前記スタック上の前記数が所定の値に達するまで前記複数の命令内の最初の命令で動作を継続することを特徴とする請求項１に記載のコンピュータ。
【請求項６】
前記所定の値は０であることを特徴とする請求項５に記載のコンピュータ。
【請求項７】
前記複数の命令に先行するＦＯＲ命令をさらに含むことを特徴とする請求項１に記載のコンピュータ。
【請求項８】
前記ＦＯＲ命令は、前記数を前記スタックに置かせることを特徴とする請求項７に記載のコンピュータ。
【請求項９】
前記ＦＯＲ命令は、前記複数の命令の直前の命令のグループ内にあることを特徴とする請求項７に記載のコンピュータ。
【請求項１０】
コンピュータにループを実行させる方法であって
（ａ）ＮＥＸＴ命令が命令のグループ内の最後の命令として現れる時に前記コンピュータが前記ＮＥＸＴ命令の後の命令のグループ全体をカウンタによって示される回数だけ順次実行するように、前記コンピュータを構成することと、
（ｂ）前記ＮＥＸＴ命令を前記命令のグループ内の最後の位置に置くことと、
（ｃ）前記命令のグループの前にＦＯＲ命令を置くこととを備え、前記ＦＯＲ命令は前記カウンタをセットし、
前記命令のグループは、前記コンピュータによって単一の単位として全般的に同時に読み取られることを特徴とする方法。
【請求項１１】
前記命令のグループは、４つの命令を含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記命令のグループ内の前記命令のうちの少なくとも１つは、ＮＯ−ＯＰ命令であり、前記ＮＯ−ＯＰ命令は、前記コンピュータが実行せずにスキップオーバーするプレースホルダであることを特徴とする請求項１０に記載の方法。
【請求項１３】
前記カウンタは、スタックの最上部の値であることを特徴とする請求項１０に記載の方法。
【請求項１４】
前記ＮＥＸＴ命令は、前記カウンタを変化させることを特徴とする請求項１０に記載の方法。
【請求項１５】
前記ＮＥＸＴ命令は、前記カウンタを減分させることを特徴とする請求項１０に記載の方法。
【請求項１６】
電子デバイスに請求項１０に記載のステップを実行させるコードを実装したことを特徴とするコンピュータ読取可能な記録媒体。
【請求項１７】
コンピュータ内で命令を実行する方法であって、
（ａ）数をレジスタに置くことと、
（ｂ）命令のグループをフェッチすることと、
（ｃ）前記命令のグループ内の前記命令を順次実行することと、
（ｄ）前記レジスタ内の前記数を変化させることと、
（ｅ）前記レジスタ内の前記数が所定の値に達するまで、ステップ（ｃ）および（ｄ）を繰り返すことと
を備えることを特徴とする方法。
【請求項１８】
命令のもう１つのグループをフェッチすることと、
前記命令のもう１つのグループ内の最初の命令から継続することとをさらに備えることを特徴とする請求項１７に記載の方法。
【請求項１９】
ステップ（ｂ）で、前記命令のグループは、命令レジスタにフェッチされ、
ステップ（ｃ）で、前記命令は、前記命令レジスタから実行されることを特徴とする請求項１７に記載の方法。
【請求項２０】
ステップ（ｂ）で、前記命令のグループ内の前記命令は、全般的に同時にフェッチされることを特徴とする請求項１７に記載の方法。
【請求項２１】
前記レジスタは、スタック内の最上部要素であることを特徴とする請求項１７に記載の方法。
【請求項２２】
ステップ（ｃ）で、前記数は、減分することを特徴とする請求項１７に記載の方法。
【請求項２３】
電子デバイスに請求項１７に記載のステップを実行させるコードを実装したことを特徴とするコンピュータ読取可能な記録媒体。
【請求項２４】
複数の命令を全般的に同時に読み取る手段と、
前記複数の命令をある量の反復だけ繰り返す手段と
を備えることを特徴とするコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、少なくとも１人の共通の発明者による２００６年２月１６日出願の米国特許出願第１１／３５５，５１３号の一部継続出願であり、少なくとも１人の共通の発明者による２００６年３月３１日出願の米国特許仮出願第６０／７８８，２６５号および少なくとも１人の共通の発明者による２００６年５月３日出願の米国特許仮出願第６０／７９７，３４５号の利益を主張するものであり、これらのすべてが、参照によってその全体を組み込まれている。
【０００２】
本発明は、コンピュータおよびコンピュータプロセッサの分野に関し、より具体的には、コンピュータが、外部ソースから命令が受け取られる時にまず前記命令を保管することなく命令を実行することを可能にする方法および手段と、コンピュータの間での通信を容易にするためにその方法および手段を使用する関連する方法と、別のコンピュータの使用可能なリソースを使用する、コンピュータの能力とに関する。本発明的直接実行の方法および装置の有力な現在の用途は、高められた動作速度の要請のゆえのみならず、より高い効率の結果である電力節約および熱減少のゆえにも、動作効率が重要である、単一マイクロチップ上の複数のコンピュータの組合せにある。
【背景技術】
【０００３】
コンピューティングの分野では、処理速度が、非常に望まれる品質であり、より高速のコンピュータおよびプロセッサを作成するための探求が、進行中である。しかし、少なくとも現在既知のテクノロジ時を使用するならば、マイクロプロセッサにおける速度向上の限界にすばやく達することになることが、産業界で一般に認められている。したがって、プロセッサの間でコンピュータタスクを共用することによって全体的なコンピュータ速度を高めるために複数のプロセッサを使用することへの関心が高まっている。
【０００４】
複数のプロセッサの使用は、プロセッサ間の通信の必要を生じる傾向がある。実際に、おそらくはプロセッサ間の大量の通信がある場合があり、時間のうちのかなりの部分が、プロセッサの間で命令およびデータを転送するのに費やされる。そのような通信の量が多い場合に、その通信を達成するために実行されなければならない各追加命令は、プロセスに増分的遅延を置き、この増分的遅延が、累積的に非常に大きくなり得る。あるコンピュータから別のコンピュータに命令またはデータを通信する従来の方法は、まず、受け取るコンピュータにデータまたは命令を保管し、その後、実行のため（命令の場合）またはそれに対する動作のため（データの場合）にそのデータまたは命令を呼び出すことを含む。
【０００５】
データまたは命令の形の情報をコンピュータ間で送り、受け取り、その後に使用するのに必要なステップ数を減らすことが、有用であるはずである。しかし、本発明人の知る限り、従来技術のシステムは、上で説明したプロセスを意味のある形で合理化してはこなかった。
【０００６】
また、従来技術では、時々コンピュータの「注意を引く」ことが必要であることが知られている。すなわち、時々、コンピュータがあるタスクで使用中の可能性がある場合であっても、そのコンピュータを一時的に第１のタスクからそらすことを必要とする可能性がある、もう１つの時間に敏感なタスク要件が発生し得る。例として、ユーザ入力デバイスがコンピュータに入力を供給するのに使用される場合があるが、これに限定はされない。そのような場合に、そのコンピュータは、一時的にその入力を肯定応答し、かつ／またはその入力に従って反応する必要がある場合がある。その後、そのコンピュータは、その入力の前に行っていたことを継続する、あるいはその入力に基づいて、行っていたことを変更することのいずれかを行う。外部入力が、ここでは例として使用されているが、コンピュータの内部態様の間でＡＬＵの注意に関する潜在的な衝突がある、同一の情況も、発生する。
【０００７】
Ｉ／Ｏポートからデータおよび状況の変化を受け取る時に、従来技術で使用可能な２つの方法がある。一方は、ポートを「ポーリング」することであり、これには、固定間隔でポートの状況を読み取って、データが受け取られたかどうかまたは状況の変化が発生したかどうかを判定することが含まれる。しかし、ポートのポーリングは、かなりの時間およびリソースを消費し、この時間およびリソースは、通常は他のことを行うのによりよく使用できるはずである。よりよい代替案は、しばしば、「割込み」の使用であった。割込みを使用する時には、プロセッサは、それに割り当てられたタスクの実行に取り掛かることができ、Ｉ／Ｏポート／デバイスが、バイトが受け取られたか状況が変化したという事実によって示されるように注意を必要とする時に、そのＩ／Ｏポート／デバイスは、割込み要求（ＩＲＱ）をプロセッサに送る。プロセッサは、割込み要求を受け取ったならば、現在の命令を終了し、スタックにいくつかのものを置き、適当な割込みサービスルーチン（ＩＳＲ）を実行し、このＩＳＲが、バイトをポートから除去し、バッファに置くことができる。ＩＳＲが終了したならば、プロセッサは、中止したところに戻ることができる。この方法を使用すると、プロセッサが、Ｉ／Ｏデバイスが注意を必要としているかどうかを調べるために時間を浪費する必要がなくなり、デバイスが、注意を必要とする時に割込みをサービスするのみになる。しかし、割込みの使用自体は、多くの場合に、望ましいものをはるかに下回る。というのは、割込みの使用に関連する大量のオーバーヘッドがあり得るからである。たとえば、割込みが発生するたびに、コンピュータは、それが前に達成を試みていたタスクに関するある種のデータを一時的に保管し、次に、割込みに関するデータをロードし、次に、割込みが処理されたならば、前のタスクに必要なデータを再ロードしなければならない。明らかに、この時間とリソースとを消費するオーバーヘッドのすべてを減らすか除去することが望ましいはずである。しかし、割込みに関するこの必要を軽減する従来技術の方法は、開発されてこなかった。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、本発明の目的は、複数のコンピュータがそれらの間でデータおよび／または命令を通信する動作の速度を高める装置および方法を提供することである。
【０００９】
本発明のもう１つの目的は、かなりの計算能力を安価に提供する装置および方法を提供することである。
【００１０】
本発明のもう１つの目的は、計算集中型タスクを最小限の時間で達成する装置および方法を提供することである。
【００１１】
本発明のもう１つの目的は、大量の処理能力を作り出すコンピュータデバイスを提供することである。
【００１２】
本発明のもう１つの目的は、コンピュータとコンピュータ制御されるデバイスとの間の通信の効率を高めることである。
【００１３】
本発明のもう１つの目的は、コンピュータ間の通信の効率を高めることである。
【００１４】
本発明のもう１つの目的は、コンピュータが互いにならびにユーザ入力デバイスおよび類似物などの他のデバイスと通信する形の効率を高めることである。
【課題を解決するための手段】
【００１５】
簡潔には、本発明の知り得る実施形態は、独立の計算機能が可能になるようにそれ自体のメモリを有するコンピュータである。本発明の一実施形態では、複数のコンピュータが、アレイに配置される。タスクを協力して達成するために、これらのコンピュータは、あるコンピュータから別のコンピュータにデータおよび／または命令を渡さなければならない。同時に働くコンピュータのすべてが、通常、ほとんどのタスクによって要求されるものよりはるかに高い計算能力を備え、複数のコンピュータの間でタスクを分散するのに使用されるどのようなアルゴリズムまたは方法であっても、ほとんど確実に割り当ての不均等な分配をもたらすので、少なくともいくつかの、おそらくはほとんどの、コンピュータが、どの所与の時にもタスクの達成に能動的に参加していない可能性があると予期される。したがって、計算リソースまたはメモリのいずれかあるいはその両方を「貸す」ことによって、あまり使用されていないコンピュータをより忙しい近傍の支援に使用可能にする形を見つけることが望ましいはずである。そのような関係が効率的であり、有用であるためには、さらに、隣接するコンピュータ間の通信および相互作用ができる限りすばやく、効率的であることが、望ましいはずである。したがって、本発明は、コンピュータが、そのようなアクションの前にデータおよび／または命令を受け取り、その後にそれらを保管する必要があるのではなく、別のコンピュータから直接に供給される命令を実行し、かつ／またはデータに作用する手段および方法を提供する。本発明が、コンピュータに、１つの他のコンピュータからの命令またはデータをもう１つのコンピュータに「渡させる」仲介物として働く命令にも有用であることに留意されたい。
【００１６】
説明される実施形態では、不必要な電力の消費および不必要な熱の発生を防ぐために、コンピュータがその近傍のうちの１つまたは複数との通信を試みる時に、そのコンピュータは、近傍または近傍のうちの１つが通信を完了するために働くまで、本質的に電力を消費しない休眠モードになる。しかし、これは、本発明の必要な態様ではない。さらに、所望の電力の節約および減らされた熱発生量を達成するためには、開始するコンピュータが、通信の完了を待っている間にその電力消費を止めるか、少なくとも大幅に減らすことが望ましい。これは、複数の手段のいずれかによって達成できると考えられる。たとえば、コンピュータが、内部クロックまたは外部クロックのいずれかによって刻時される場合に、そのクロックを、その時間期間中に低速化するか停止することができる。実際に、そのような実施形態を、本発明の範囲の外部の理由のために実施することが考えられるが、現在説明されている実施形態は、本発明人に現在既知の最良の最も効率的な実施形態である。
【００１７】
本明細書で説明する本発明の一態様は、命令およびデータが、そのソースがコンピュータの内部メモリであれ、そのような命令およびデータが別のコンピュータ、外部通信ポート、または類似物などの別のソースから受け取られつつあるのであれ、本質的に同一に扱われることである。これは、データまたは命令を保管することおよびその後にこれらを内部メモリからリコールすることなどの「追加」動作が不要になり、これによって、必要な命令の個数が減り、用いられるコンピュータの動作速度が高まるので、重要である。
【００１８】
説明される実施形態のもう１つの態様は、命令の非常に小さいグループを、別のコンピュータに、一般に同時に通信することができ、繰り返される反復を必要とする比較的単純な動作を、すばやく簡単に達成できることである。これは、コンピュータ間の通信のプロセスを大幅にはかどらせる。
【００１９】
説明される実施形態のもう１つの態様は、さまざまなタスクを実行するのに使用可能な、ある量のコンピュータがあり、１つまたは複数のコンピュータを、入力を待っている間に本質的に電力を使用しない休眠モードにすることができるので、そのようなコンピュータを、入力を待つというタスクに割り当てることができ、これによって、他のタスクを達成しつつある可能性がある他のコンピュータに「割り込む」必要を減らすかなくすことができることである。
【００２０】
本発明の上記および他の目的は、本明細書で説明され、図面の複数の図に示された、本発明を実行する態様の説明およびその産業上の利用可能性に鑑みて、当業者に明白になるであろう。リストされた目的および利点は、本発明のすべての可能な利点の網羅的なリストではない。さらに、所期の目的および／または利点のうちの１つまたは複数が応用例に存在しないか不要である可能性がある場合であっても、本発明を実践することが可能である。
【００２１】
さらに、当業者は、本発明のさまざまな実施形態が、説明される目的および／または利点の、必ずしもすべてではなく１つまたは複数を達成できることを認めるであろう。したがって、本明細書に記載の目的および／または利点は、本発明の本質的要素ではなく、限定と解釈されてはならない。
【発明を実施するための最良の形態】
【００２２】
本発明を、図面を参照して次の説明で説明するが、図面では、類似する符号が、同一の要素または類似する要素を表す。本発明を、本発明の目的を達成する態様に関して説明するが、当業者は、本発明の趣旨または範囲から逸脱せずにこれらの教示に鑑みて変形形態を達成できることを諒解するであろう。
【００２３】
本明細書で説明され、かつ／または図面に示された実施形態および変形形態は、例としてのみ提示されるものであって、本発明の範囲を限定するものではない。そうでないと特に述べられない限り、本発明の個々の態様および構成要素は、省略するか変更することができ、あるいは、それゆえに既知の同等物を置換することができ、または将来に開発され得るものなどもしくは将来に受け入れられる置換物であることがわかる可能性があるものなどのまだ未知の置換物として存在することができる。本発明は、潜在的応用の範囲が非常に大きく、本発明が多数のそのような変形形態に適用可能であることが意図されているので、請求される発明の趣旨および範囲の中に留まりながら、さまざまな応用のために変更されることも可能である。
【００２４】
本発明を実行する知り得る態様は、個々のコンピュータのアレイである。このアレイは、図１の概略図に示され、図１では全般的参照符号１０によって指定されている。コンピュータアレイ１０は、複数（図示の例では２４個）のコンピュータ１２（時々、アレイの例で「コア」または「ノード」とも称する）を有する。図示の例では、コンピュータ１２のすべてが、単一のダイ１４上に置かれている。本発明によれば、コンピュータ１２のそれぞれは、後でより詳細に述べるように、一般に独立に機能するコンピュータである。コンピュータ１２は、複数の（その量は、後で詳細に述べる）相互接続するデータバス１６によって相互接続される。この例では、データバス１６が、両方向非同期高速並列データバスであるが、他の相互接続する手段をこの目的に使用できることが、本発明の範囲内である。アレイ１０の本実施形態では、コンピュータ１２間のデータ通信が非同期であるだけではなく、個々のコンピュータ１２も、内部的に非同期モードで動作する。これは、本発明人によって、重要な利点をもたらすことが見つけられている。たとえば、クロック信号を、コンピュータアレイ１０全体に分配する必要がないので、大量の電力が、節約される。さらに、クロック信号を分配する必要がないことは、アレイ１０のサイズを制限し得る、または他の既知の問題を引き起こし得る多数のタイミング問題を除去する。また、個々のコンピュータが非同期に動作するという事実は、大量の電力を節約する。というのは、各コンピュータが、命令を実行していない時に、その中で動作するクロックがないので、本質的に電力を消費しないからである。
【００２５】
当業者は、図を明瞭にするために図１から省略されている、ダイ１４上の追加構成要素があることを認めるであろう。そのような追加構成要素に、電力バス、外部接続パッド、およびマイクロプロセッサチップの他のそのような共通の態様が含まれる。
【００２６】
コンピュータ１２ｅは、アレイ１０の周囲部にあるのではないコンピュータ１２のうちの１つの例である。すなわち、コンピュータ１２ｅは、４つの直交に近接するコンピュータ１２ａ、１２ｂ、１２ｃ、および１２ｄを有する。コンピュータ１２ａから１２ｅのこのグループ化は、たとえば、下で、アレイ１０のコンピュータ１２の間の通信のより詳細な議論に関して使用される。図１からわかるように、コンピュータ１２ｅなどの内側コンピュータは、４つの他のコンピュータ１２を有し、この４つの他のコンピュータと、バス１６を介して直接に通信することができる。次の議論では、述べられる原理は、アレイ１０の周辺部にあるコンピュータ１２が３つの他のコンピュータだけと直接に通信し、角（corner）のコンピュータ１２の場合にはコンピュータ１２のうちの他の２つだけと直接に通信することを除いて、コンピュータ１２のすべてにあてはまる。
【００２７】
図２は、コンピュータ１２のうちの一部だけ、具体的には両端を含んでコンピュータ１２ａから１２ｅまでを示す、図１の一部のより詳細な図である。図２には、それぞれが読取信号線１８、書込信号線２０、および複数の（この例では１８本の）データ信号線２２を有するデータバス１６も示されている。データ信号線２２は、１つの１８ビット命令ワードの全ビットを全般的に同時に並列に転送することができる。本発明の一実施形態で、コンピュータ１２のうちのいくつかが、近接するコンピュータのミラーイメージであることに留意されたい。しかし、コンピュータ１２が、すべてが同一にまたは近接コンピュータのミラーイメージとして配置されているかどうかは、この現在説明されている発明の態様ではない。したがって、本発明をよりよく説明するために、この潜在的な複雑化は、本明細書ではこれ以上述べない。
【００２８】
本発明的方法によれば、コンピュータ１２ｅなどのコンピュータ１２は、その読取信号線１８のうちの１つ、２つ、３つ、または４つすべてをハイにセットし、各々の１つ、２つ、３つ、または４つすべての近接するコンピュータ１２からデータを受け取る準備をすることができる。同様に、コンピュータ１２が、その書込信号線２０のうちの１つ、２つ、３つ、または４つすべてをハイにセットすることも可能である。本発明人は、コンピュータ１２の書込信号線２０のうちの複数を一時にハイにセットすることに現在なんらかの実用的価値があると考えてはいないが、そのような動作の使用が将来に発生し得ると考えられるので、それを行うことは、本発明の範囲を超えない。
【００２９】
近接するコンピュータ１２ａ、１２ｂ、１２ｃ、または１２ｄのうちの１つが、それ自体とコンピュータ１２ｅとの間の書込信号線２０をハイにセットした時に、コンピュータ１２ｅが対応する読取信号線１８をすでにハイにセットしている場合には、ワードが、関連するデータ信号線２２上でそのコンピュータ１２ａ、１２ｂ、１２ｃ、または１２ｄからコンピュータ１２ｅに転送される。その後、送出側コンピュータ１２は、書込信号線２０を解放し、受取側コンピュータ（この例では１２ｅ）は、書込信号線２０と読取信号線１８との両方をロウにプルする。後者のアクションは、送出側コンピュータ１２に、データが受け取られたことを肯定応答する。上の説明が、必ずしも順番のイベントのシーケンスを表すことを意図されていないことに留意されたい。実際の実践では、受取側コンピュータが、送出側コンピュータ１２がその書込信号線２０を解放する（ハイにプルするのを止める）よりわずかに前に書込信号線２０をロウにセットすることを試みる場合がある。そのような場合に、送出側コンピュータ１２がその書込信号線２０を解放するや否や、書込信号線２０は、受取側コンピュータ１２ｅによってロウにプルされる。
【００３０】
本例では、プログラミングエラーだけが、バス１６のうちの１つの両端の両方のコンピュータ１２がその間の読取信号線１８をハイにセットすることを試みることを引き起こすはずである。また、バス１６のうちの１つの両端の両方のコンピュータ１２が同時にその間の読取信号線１８をハイにセットすることを試みることは、エラーであるはずである。同様に、上で述べたように、単一のコンピュータ１２にその４つの書込信号線２０のうちの複数をハイにセットさせることが望ましいことであるとは、現在は予期されていない。しかし、現在、コンピュータ１２のうちの１つが、その対応する書込信号線２０をハイにセットするために選択されたコンピュータ１２のうちの第１のコンピュータからのデータを待つ待機状態であることができるように、読取信号線１８の異なる組合せをハイにセットすることが望ましい状況があることが、予期されている。
【００３１】
上で述べた例では、コンピュータ１２ｅは、近接するコンピュータ（コンピュータ１２ａ、１２ｂ、１２ｃ、または１２ｄのうちの１つまたは複数から選択される）がその書込信号線２０をハイにセットする前に、コンピュータ１２ｅの読取信号線１８のうちの１つまたは複数をハイにセットするものとして説明された。しかし、このプロセスは、確かに、反対の順序で発生することができる。たとえば、コンピュータ１２ｅが、コンピュータ１２ａに書き込むことを試みている場合に、コンピュータ１２ｅは、コンピュータ１２ｅとコンピュータ１２ａとの間の書込信号線２０をハイにセットする。コンピュータ１２ｅとコンピュータ１２ａとの間の読取信号線１８が、まだコンピュータ１２ａによってハイにセットされていない場合には、コンピュータ１２ｅは、コンピュータ１２ａがその書込信号線２０をハイにセットするまで単純に待つ。その後、上で述べたように、書込信号線１８および読取信号線２０の対応する対の両方がハイである時に、データ信号線２２での転送を待っているデータが、転送される。その後、受取側のコンピュータ１２（この例ではコンピュータ１２ａ）は、送出側コンピュータ１２ｅが書込信号線１８を解放するや否や、この２つのコンピュータ（この例では１２ｅおよび１２ａ）の間の読取信号線１８と書込信号線２０との両方をロウにセットする。
【００３２】
コンピュータ１２ｅなどのコンピュータ１２が、書込を予期してその書込信号線２０のうちの１つをハイにセットしている時に、必ず、そのコンピュータ１２は、データが送られるコンピュータ１２がその読取信号線１８をすでにハイにセットしている（この場合にはデータが即座に送られる）のでない限り、適当な近接するコンピュータ１２から、上で説明したようにデータが「要求」されるまで、本質的に電力を使用せずに単純に待つ。同様に、コンピュータ１２が、読取を予期してその読取信号線１８のうちの１つまたは複数をハイにセットしている時には、必ず、そのコンピュータ１２は、選択されたコンピュータ１２に接続された書込信号線２０がこの２つのコンピュータ１２の間で命令ワードを転送するためにハイになるまで、本質的に電力を使用せずに単純に待つ。
【００３３】
上で述べたように、コンピュータ１２に説明したように機能させる複数の潜在的な手段および／または方法が存在する可能性がある。しかし、この本例では、コンピュータ１２は、単に全般的に非同期に内部的に動作している（説明される非同期な形でのそれらの間のデータの転送に加えて）ので、そのように振る舞う。すなわち、命令は、一般に、順次式に完了される。書込命令または読取命令のいずれかが発生する時には、その命令が完了するまで（または、おそらくはその代わりに、「リセット」または類似物によってその命令が打ち切られるまで）、さらなるアクションはあり得ない。従来技術の意味での規則的なクロックパルスはない。そうではなく、パルスは、実行されている命令が読取タイプ命令もしくは書込タイプ命令ではない（読取タイプ命令または書込タイプ命令が、しばしば別の実体による、完了を必要とすると仮定して）時または読取タイプ動作もしくは書込タイプ動作が実際に完了した時のいずれかのみに、次の命令を達成するために生成される。
【００３４】
図３は、図１および２のコンピュータ１２のうちの１つの例の全般的レイアウトを示すブロック図である。図３からわかるように、コンピュータ１２のそれぞれは、全般的に、それ自体のＲＡＭ２４およびＲＯＭ２６を有する自己完結型のコンピュータである。前に述べたように、コンピュータ１２を、これらが本例で単一チップ上で組み合わされる場合に、時々、個々の「ノード」とも称する。
【００３５】
コンピュータ１２の他の基本的な構成要素は、リターンスタック２８（後で述べるＲレジスタ２９を含む）、命令エリア３０、算術論理ユニット（「ＡＬＵ」または「プロセッサ」）３２、データスタック３４、および命令をデコードするデコード論理セクション３６である。当業者は、一般に、この本例のコンピュータ１２などのスタックベースのコンピュータの動作に精通しているであろう。コンピュータ１２は、データスタック３４および別々のリターンスタック２８を有するデュアルスタックコンピュータである。
【００３６】
本発明のこの実施形態では、コンピュータ１２は、近接するコンピュータ１２との通信用の４つの通信ポート３８を有する。通信ポート３８は、オフ状況、受取状況（コンピュータ１２に信号を駆動するための）、および送出状況（コンピュータ１２から信号を駆動するための）を有するトライステートドライバである。もちろん、特定のコンピュータ１２が、コンピュータ１２ｅの例など、アレイ（図１）の内側にあるのではない場合に、通信ポート３８のうちの１つまたは複数が、少なくとも上で説明した理由から、その特定のコンピュータ内では使用されない。しかし、ダイ１４のエッジに接する通信ポート３８は、そのようなコンピュータ１２内に設計されるまたはコンピュータ１２の外部であるがこれに関連する、いずれかである追加回路を有して、そのような通信ポート３８に外部Ｉ／Ｏポート３９（図１）として働かせることができる。そのような外部Ｉ／Ｏポート３９の例には、ＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）ポート、ＲＳ２３２シリアルバスポート、並列通信ポート、アナログ−ディジタル変換ポートおよび／またはディジタル−アナログ変換ポート、ならびに多数の他の可能な変形形態が含まれるが、これらに限定はされない。どのタイプの追加回路または変更された回路がこの目的に使用されるかにかかわりなく、本発明の現在説明されている実施形態によれば、それから受け取られる命令および／またはデータの処理に関する「外部」Ｉ／Ｏポート３９の動作の方法は、本明細書で「内部」通信ポート３８に関して説明されるものに似る。図１では、「エッジ」コンピュータ１２ｆが、外部Ｉ／Ｏポート３９を介して外部デバイス８２と通信するための関連するインターフェース回路８０（ブロック概略形式で図示）と共に示されている。
【００３７】
現在説明されている実施形態では、命令エリア３０には、複数のレジスタ４０が含まれ、レジスタ４０には、この例では、Ａレジスタ４０ａ、Ｂレジスタ４０ｂ、およびＰレジスタ４０ｃが含まれる。この例では、Ａレジスタ４０ａは、完全な１８ビットレジスタであるが、Ｂレジスタ４０ｂおよびＰレジスタ４０ｃは、９ビットレジスタである。
【００３８】
本発明は、この例によって限定されないが、本コンピュータ１２は、ネイティブＦｏｒｔｈ言語命令を実行するように実施される。Ｆｏｒｔｈコンピュータ言語に精通した者が諒解するであろうとおり、Ｆｏｒｔｈ「ワード」として知られる複雑なＦｏｒｔｈ命令は、コンピュータに設計されたネイティブプロセッサ命令から構成される。Ｆｏｒｔｈワードの集合は、「辞書」として知られる。他の言語では、これが、「ライブラリ」として知られる場合がある。後でより詳細に説明するように、コンピュータ１２は、ＲＡＭ２４から、ＲＯＭ２６から、または直接にデータバス１６（図２）のうちの１つから、一時に１８ビットを読み取る。しかし、Ｆｏｒｔｈでは、ほとんどの命令（オペランドレス命令として知られる）が、そのオペランドをスタック２８および３４から直接に入手するので、これらの命令は、長さにおいて一般に５ビットのみであり、グループ内の最後の命令が３ビットだけを必要とする命令の限られたセットから選択されるという条件付きで、４つまでの命令を、単一の１８ビット命令ワードに含めることができる（説明される実施形態では、最後の位置にある命令の下位２ビットが、「０１」であると仮定される）。やはり図３にブロック概略形式で示されているのが、スロットシーケンサ４２である。
【００３９】
本発明のこの実施形態では、データスタック３４は、ＡＬＵ３２によって操作されるパラメータ用の後入れ先出しスタックであり、リターンスタック２８は、ＣＡＬＬ命令およびＲＥＴＵＲＮ命令によって使用される入れ子になったリターンアドレス用の後入れ先出しスタックである。リターンスタック２８は、後で多少より詳細に述べるように、ＰＵＳＨ命令、ＰＯＰ命令、およびＮＥＸＴ命令によっても使用される。データスタック３４およびリターンスタック２８は、多くの従来技術のコンピュータのようにスタックポインタによってアクセスされるメモリ内のアレイではない。そうではなく、スタック３４および２８は、レジスタのアレイである。データスタック３４内の最上部の２つのレジスタが、Ｔレジスタ４４およびＳレジスタ４６である。データスタック３４の残りは、その中でこの例ではＳ2からＳ9という番号を付けられた８つの追加のハードウェアレジスタを有する円形レジスタアレイ３４ａを有する。円形レジスタアレイ３４ａ内の８つのレジスタのうちの１つが、いつでも、Ｓレジスタ４６の下のレジスタとして選択される。Ｓの下になるスタックレジスタを選択するシフトレジスタ内の値は、ソフトウェアによって読み取ることも書き込むこともできない。同様に、リターンスタック２８内の一番上の位置は、専用のＲレジスタ２９であり、リターンスタック２８の残りは、この例ではＲ1からＲ11という番号を付けられた、その中の１２個の追加ハードウェアレジスタ（この図には具体的には図示せず）を有する円形レジスタアレイ２８ａを有する。
【００４０】
本発明のこの実施形態では、スタックオーバーフロー状態またはスタックアンダーフロー状態のハードウェア検出はない。一般に、従来技術のプロセッサは、スタックポインタおよびメモリ管理、または類似物を使用し、スタックポインタが、スタックに割り振られたメモリの範囲の外になった時に、エラー状態がフラグを立てられる。これは、スタックがメモリ内に置かれる場合に、オーバーフローまたはアンダーフローが、スタックの一部になることを意図されていないものを上書きするか、スタックアイテムとして使用するからである。しかし、本発明は、スタック２８および３４の最下部に円形アレイ２８ａおよび３４ａを有するので、スタック２８および３４が、スタックエリアの外にオーバーフローし、またはアンダーフローすることはできない。そうではなく、円形アレイ２８ａおよび３４ａは、単に、レジスタの円形アレイをラップアラウンドする。スタック２８および３４は、有限の深さを有するので、スタック２８または３４の最上部に何かをプッシュすることは、最下部の何かが上書きされることを意味する。データスタック３４に１０個を超えるアイテムをプッシュすること、またはリターンスタック２８に１３個を超えるアイテムをプッシュすることは、それを行うことがスタック２８または３４の最下部のアイテムの上書きをもたらすことの知識を伴って行われなければならない。スタック２８および３４のアイテムの個数を記憶し、各々のスタック２８および３４が保持できるものより多数のアイテムを置くことを試みないようにするのは、ソフトウェアの責任である。ハードウェアは、スタックの最下部でのアイテムの上書きを検出せず、エラーとしてこれにフラグを立てることはしない。しかし、ソフトウェアが、複数の形でスタック２８および３４の最下部の円形アレイ２８ａおよび３４ａを利用できることに留意されたい。単に１つの例として、ソフトウェアは、単純に、スタック２８または３４がいつでも「空」であると仮定することができる。スタックから古いアイテムをクリアする必要はない。というのは、古いアイテムは、最下部に向かって押し下げられ、この最下部で、古いアイテムが、スタックが満たされた時に失われるからである。したがって、スタックが空であるとプログラムが仮定するために、初期化すべきものはない。
【００４１】
本明細書で前に述べたレジスタのほかに、命令エリア３０は、現在使用されつつある命令ワード４８を保管する１８ビットの命令レジスタ３０ａと、現在実行されつつある特定の命令内の命令用の追加の５ビットのオペコードレジスタ３０ｂとを有する。
【００４２】
図４は、命令ワード４８の概略図である（命令ワード４８が、実際には命令、データ、またはそのある組合せを含むことができることに留意されたい）。命令ワード４８は、１８個のビット５０からなる。これはバイナリコンピュータなので、ビット５０のそれぞれは、「１」または「０」になる。本明細書で前に述べたように、１８ビット幅の命令ワード４８は、スロット０  ５４ａ、スロット１  ５４ｂ、スロット２  ５４ｃ、およびスロット３  ５４ｄと呼ばれる４つのスロット５４内に４つまでの命令５２を含むことができる。本発明の好ましい実施形態では、１８ビットの命令ワード４８は、必ずまとめて読み取られる。したがって、命令ワード４８に４つまでの命令を有する可能性が必ずあるので、ｎｏ−ｏｐ（ノーオペレーション）命令が、使用可能なスロット５４のすべてを使用することが不必要または望ましくない場合を提供するために、コンピュータ１２の命令セットに含まれる。本発明の特定の一実施形態によれば、１つおきのスロット（具体的には、スロット１  ５４ｂおよびスロット３  ５４ｃ）内のビット５０の極性（アクティブロウと比較してアクティブハイ）が、逆転されることに留意されたい。しかし、これは、現在説明されている発明の必要な態様ではなく、したがって、本発明をよりよく説明するために、この潜在的な複雑化を、次の議論では避ける。
【００４３】
図５は、図３のスロットシーケンサ４２の概略図である。図５からわかるように、スロットシーケンサ４２は、リングに配置された複数（この例では１４個）のインバータ５６および１つのＮＡＮＤゲート５８を有し、信号が、１４個のインバータ５６およびＮＡＮＤゲート５８を通って進む時に奇数回反転されるようになっている。信号は、ＯＲゲート６０への２つの入力のいずれかがハイになる時に、スロットシーケンサ４２内で開始される。第１ＯＲゲート入力６２は、実行されている命令５２のビットｉ４  ６６（図４）から導出される。ビットｉ４がハイの場合には、その特定の命令５２は、ＡＬＵ命令であり、ｉ４ビット６６は、「１」である。ｉ４ビットが「１」の時には、第１ＯＲゲート入力６２は、ハイであり、スロットシーケンサ４２は、パルスを開始するようにトリガされ、このパルスが、次の命令５２の実行を引き起こす。
【００４４】
スロットシーケンサ４２が、第１ＯＲゲート入力６２がハイになることによってまたは第２ＯＲゲート入力６４がハイになる（後で述べる）ことによってのいずれかでトリガされる時に、信号が、２回スロットシーケンサ４２を通って進み、そのたびにスロットシーケンサ出力６８で出力が作られる。信号が初めてスロットシーケンサ出力６８に進む時に、その信号は、ロウであり、２回目には、スロットシーケンサ出力６８での出力は、ハイになる。スロットシーケンサ出力６８からの比較的幅広い出力は、パルスジェネレータ７０（ブロック概略形式で図示）に供給され、パルスジェネレータ７０は、出力として狭いタイミングパルスを作る。当業者は、狭いタイミングパルスが、コンピュータ１２の動作を正確に開始するのに望ましいことを認めるであろう。
【００４５】
実行されている特定の命令５２が、読取命令または書込命令であるか、実行されている命令５２がシーケンス内の次の命令５２の即座の実行をトリガすることが望まれないすべての他の命令である時には、ｉ４ビット６６は、「０」（ロウ）であり、したがって、第１ＯＲゲート入力６２は、やはりロウである。当業者は、コンピュータ１２などのデバイス内のイベントのタイミングが、一般に非常にクリティカルであり、これに例外がないことを認めるであろう。スロットシーケンサ４２を調べる時に、当業者は、リングの第２「ラップ」を開始するために、信号がＮＡＮＤゲート５８を過ぎて循環した後になるまで、ＯＲゲート６０からの出力が、ハイのままにならなければならないことを認めるであろう。その後、ＯＲゲート６０からの出力は、回路の望まれない継続される発振を防ぐために、その第２「ラップ」中にロウになる。
【００４６】
上の議論に鑑みて諒解できるとおり、ｉ４ビット６６が「０」の時には、後で述べる第２ＯＲゲート入力６６がハイではないと仮定すると、スロットシーケンサ４２は、トリガされない。
【００４７】
上で述べたように、各命令５２のｉ４ビット６６は、その命令が入力または出力を必要としない命令であるのではなく、その命令が読取タイプまたは書込タイプの命令であるか否かに従ってセットされる。命令５２内の残りのビット５０は、その命令の特定のオペコードの残りを提供する。読取タイプまたは書込タイプの命令の場合に、これらのビットのうちの１つまたは複数を使用して、データがその特定のコンピュータ１２から読み取られるのかこれに書き込まれるのかを示すことができる。本発明の本例では、書き込まれるデータは、必ずＴレジスタ４４（データスタック３４の最上部）から来るが、データを、Ｔレジスタ４４またはそこからそのデータを実行できる命令エリア３０のいずれかに選択的に読み込むことができる。これは、本発明のこの特定の実施形態で、データまたは命令のいずれかを、本明細書に記載の形で通信することができ、したがって、命令をデータバス１６から直接に実行できるからである。
【００４８】
ビット５０のうちの１つまたは複数が、ポート３８のいずれかが読取または書込のためにセットされる場合に、どのポート３８がそれであるかを示すのに使用される。この後者の動作は、任意選択として、Ａレジスタ４０ａ、Ｂレジスタ４０ｂ、または類似物などのレジスタ４０を指定するために１つまたは複数のビットを使用することによって達成される。そのような例では、指定されたレジスタ４０は、ポート３８のそれぞれ（および、メモリ（ＲＡＭ２４またはＲＯＭ２６）、外部通信ポート３９、または類似物など、コンピュータ１２が通信を試みることができるすべての他の潜在的な実体も）に対応するビットを有するデータを事前にロードされる。たとえば、特定のレジスタ４０内の４つのビットのそれぞれが、上ポート３８ａ、右ポート３８ｂ、左ポート３８ｃ、または下ポート３８ｄのそれぞれに対応することができる。これらのビット位置のいずれかに「１」がある場合に、通信が、対応するポート３８を介して進行するようにセットされる。本明細書で前に述べたように、本発明の本実施形態では、読取オペコードが、単一の命令で通信について複数のポート３８をセットすることができると予期されているが、書込オペコードが、単一の命令で通信について複数のポート３８をセットすることは、可能ではあるが、予期されてはいない。
【００４９】
直後の例では、コンピュータ１２ｅがコンピュータ１２ｃへの書込を試みる通信を仮定するが、この例は、すべての近接するコンピュータ１２の間の通信に適用可能である。書込命令が、書き込むコンピュータ１２ｅ内で実行される時に、選択された書込信号線２０（この例では、コンピュータ１２ｅと１２ｃとの間の書込信号線２０）が、ハイにセットされ、対応する読取信号線１８がすでにハイである場合には、データが、選択された位置から選択された通信ポート３８を介して即座に送られる。その代わりに、対応する読取信号線１８がまだハイではない場合には、コンピュータ１２ｅは、対応する読取信号線１８がハイになるまで、単純に動作を停止する。読取タイプまたは書込タイプの命令がある時にコンピュータ１２ａを停止させる（または、より正確にはそのさらなる動作をイネーブル（enable）しない）機構は、本明細書で前に述べた。短く言うと、命令５２のオペコードは、ビット位置ｉ４  ６６に「０」を有し、したがって、ＯＲゲート６０の第１ＯＲゲート入力６２は、ロウであり、したがって、スロットシーケンサ４２は、イネーブルするパルスを生成するためにトリガはされない。
【００５０】
読取タイプまたは書込タイプの命令が完了した時に、コンピュータ１２ｅの動作がどのように再開されるかに関して、そのための機構は、次の通りである。コンピュータ１２ｅと１２ｃとの間の読取信号線１８と対応する書込信号線２０との両方がハイの時に、信号線１８と２０との両方が、それをハイに保持している各々のコンピュータ１２のそれぞれによって解放される（この例では、送出側のコンピュータ１２ｅが、書込信号線１８をハイに保持しており、受取側のコンピュータ１２ｃが、読取信号線２０をハイに保持している）。次に、受取側のコンピュータ１２ｃが、信号線１８と２０との両方をロウにプルする。実際の実践では、受取側のコンピュータ１２ｃは、送出側のコンピュータ１２ｅが書込信号線１８を解放する前に、信号線１８および２０をロウにプルすることを試みることができる。しかし、信号線１８および２０は、ハイにプルされ、ロウには弱く保持される（ラッチされる）のみなので、信号線１８または２０をロウにプルするすべての試みは、その信号線１８または２０がそれをハイに保持しているコンピュータ１２によって解放されるまでは、実際には成功しない。
【００５１】
データバス１６内の信号線１８と２０との両方がロウにプルされる時には、これが、「肯定応答」状態である。コンピュータ１２ｅおよびコンピュータ１２ｃのそれぞれは、肯定応答状態の際に、それ自体の内部の肯定応答信号線７２をハイにセットする。図５からわかるように、肯定応答信号線７２は、第２ＯＲゲート入力６４に供給される。ＯＲゲート６０の入力６２または６４のいずれかへの入力は、ＯＲゲート６０の出力をハイにするので、これは、本明細書で前に説明した形でのスロットシーケンサ４２の動作を開始し、命令ワード４８内の次のスロット５４内の命令５２が、実行される。肯定応答信号線７２は、偽のアドレスがアドレスバスに達するのを防ぐために、次の命令５２がデコードされるまで、ハイのままになる。
【００５２】
実行されている命令５２が命令ワード４８のスロット３位置にあるすべての場合に、コンピュータ１２は、もちろんビットｉ４  ６６が「０」でない限り、また、スロット３内の命令が、後でより詳細に述べる「ｎｅｘｔ」命令でない限り、次の待っている１８ビットの命令ワード４８をフェッチする。
【００５３】
実際の実践では、本発明的機構には、命令を「プリフェッチする」方法および装置が含まれ、命令ワード４８内のすべての命令５２の実行の終りの前に、フェッチを開始できるようになっている。しかし、これも、現在説明されている発明の必要な態様ではない。
【００５４】
コンピュータ１２ｅがコンピュータ１２ｃに書き込んでいる上の例を、詳細に説明した。上の議論に鑑みて諒解できるとおり、これらの動作は、コンピュータ１２ｅがまずコンピュータ１２ｃへの書込を試みているのか、コンピュータ１２ｃがまずコンピュータ１２ｅからの読取を試みているのかにかかわりなく、本質的に同一である。この動作は、両方のコンピュータ１２ｅと１２ｃとの準備ができるまで完了することができず、コンピュータ１２ｅまたは１２ｃのどちらが先に準備ができても、そのコンピュータは、他方のコンピュータ１２ｅまたは１２ｃが転送を完了するまで、単純に「眠る（goes to sleep）」。上で説明したプロセスを見るもう１つの形は、実際に、書き込むコンピュータ１２ｅと受け取るコンピュータ１２ｃとの両方が、これらがそれぞれ書込命令および読取命令を実行する時に眠るが、このトランザクションに最後に入るコンピュータは、読取信号線１８と書込信号線２０との両方がハイである時にほぼ瞬間的に再覚醒し、このトランザクションを開始した第１のコンピュータ１２は、第２のコンピュータ１２がこのプロセスを完了する準備ができるまで、ほぼ無期限に眠ったままになることができるということである。
【００５５】
本発明人は、デバイス間の効率的な非同期通信を可能にするための主要な特徴が、ある種の肯定応答信号または肯定応答状態であると考える。従来技術では、デバイス間のほとんどの通信が、刻時され、受取側デバイスがデータを正しく受け取ったことを送出側デバイスが知る直接の形はない。チェックサム動作などの方法が、データが正しく受け取られたことを保証することを試みるのに使用されてきた場合があるが、送出側デバイスは、動作が完了したことの直接の表示を有しない。本発明的方法は、本明細書で説明するように、デバイス間の非同期通信を可能にするか、少なくとも実用的にする、必要な肯定応答条件を提供する。さらに、この肯定応答条件は、デバイスのうちの１つまたは複数が、肯定応答条件が発生するまで「眠る」ことを可能にもする。もちろん、肯定応答条件は、コンピュータ１２の間で送られる（相互接続するデータバス１６上でまたは別々の信号線上でのいずれかで）別々の信号によってコンピュータ１２の間で通信することができ、そのような肯定応答信号は、本発明のこの態様の範囲に含まれるはずである。しかし、本明細書で説明する発明の実施形態によれば、肯定応答の方法が、通信を実際にもたらすために、追加の信号、クロックサイクル、タイミングパルス、または説明されたものを超えるすべてのそのようなリソースを必要としないという点で、これに含まれるさらなる経済があることを諒解することができる。
【００５６】
４つの命令５２を、１つの命令ワード４８に含めることができ、本発明によれば、命令ワード４８全体を、コンピュータ１２の間で一時に通信することができるので、これは、非常に小さいプログラムを１つの動作で送る理想的な機会を提示する。たとえば、小さい「Ｆｏｒ／Ｎｅｘｔ」ループのほとんどを、単一の命令ワード４８内で実施することができる。図６は、マイクロループ１００の概略図である。マイクロループ１００は、他の従来技術のループと異なって、ＦＯＲ命令１０２およびＮＥＸＴ命令１０４を有する。命令ワード４８（図４）には、４つもの命令５２が含まれるので、命令ワード４８は、単一の命令ワード４８内に３つの動作命令１０６を含むことができる。動作命令１０６は、本質的に、プログラマがマイクロループ１００内に含めることを望む可能性がある使用可能な命令のどれにでもすることができる。あるコンピュータ１２から別のコンピュータに送ることができるマイクロループ１００の通常の例は、第１のコンピュータ１２が使用可能なＲＡＭ２４容量を「借りる」ことができるように、第２のコンピュータ１２のＲＡＭ２４から読み取るかこれに書き込む命令の組とすることができる。
【００５７】
ＦＯＲ命令１０２は、望まれる反復の回数を表す値をリターンスタック２８にプッシュする。すなわち、データスタック３４の最上部にあるＴレジスタ４４の値が、リターンスタック２８のＲレジスタ２９にＰＵＳＨされる。ＦＯＲ命令１０２は、しばしば命令ワード４８のスロット３  ５４ｄに置かれるが、実際にはどのスロット５４にも置くことができる。ＦＯＲ命令１０２がスロット３  ５４ｄに置かれていない場合には、命令ワード４８内の残りの命令５２は、マイクロループ１００に進む前に実行され、このマイクロループ１００は、一般に、次にロードされる命令ワード４８になる。
【００５８】
本発明の現在説明されている実施形態によれば、図６に示されたＮＥＸＴ命令１０４は、特定のタイプのＮＥＸＴ命令１０４である。これは、この命令がスロット３  ５４ｄ（図４）に置かれているからである。本発明のこの実施形態によれば、「普通の」ＮＥＸＴ命令（図示せず）に続く特定の命令ワード４０内のすべてのデータは、アドレス（ｆｏｒ／ｎｅｘｔループが始まるアドレス）であると仮定される。ＮＥＸＴ命令１０４のオペコードは、それが４つのスロット５４のうちのどれにあるかにかかわりなく同一である（本明細書で前に述べたように、これがスロット３  ５４ｄにある場合に、最初の２桁が、明示的に書き込まれるのではなく、仮定されるという明白な例外がある）。しかし、ＮＥＸＴ命令１０４がスロット３  ５４ｄにある時には、これに続くアドレスデータは存在し得ないので、スロット３  ５４ｄにあるＮＥＸＴ命令１０４は、ＭＩＣＲＯ−ＮＥＸＴ命令１０４ａであると仮定することもできる。ＭＩＣＲＯ−ＮＥＸＴ命令１０４ａは、リターンすべきアドレスとして、それが置かれているのと同一の命令ワード４８のスロット０  ５４ａに置かれた最初の命令５２のアドレスを使用する。ＭＩＣＲＯ−ＮＥＸＴ命令１０４ａはまた、Ｒレジスタ２９から値（最初にＦＯＲ命令１０２によってそこにＰＵＳＨされた）をとり、これを１つだけ減分し、次に、これをＲレジスタ２９に返す。Ｒレジスタ２９の値が、所定の値（０など）に達した時に、ＭＩＣＲＯ−ＮＥＸＴ命令は、次の命令ワード４８をロードし、本明細書で前に説明したように継続する。しかし、ＭＩＣＲＯ−ＮＥＸＴ命令１０４ａが、所定の値より大きい値をＲレジスタ２９から読み取る時には、ＭＩＣＲＯ−ＮＥＸＴ命令１０４ａは、それ自体の命令ワード４８のスロット０  ５４ａの動作を再開し、そのスロット０からスロット３（両端を含む）に置かれた３つの命令５２を実行する。すなわち、ＭＩＣＲＯ−ＮＥＸＴ命令１０４ａは、必ず、本発明のこの実施形態では、３つの動作命令１０６を実行する。いくつかの例で、３つの潜在的に使用可能な命令５２のすべてを使用することが望まれない場合があるので、「ｎｏ−ｏｐ」命令が、必要に応じてスロット５４のうちの１つまたは２つを充填するのに使用可能である。
【００５９】
マイクロループ１００を、完全に単一のコンピュータ１２内で使用できることに留意されたい。実際に、使用可能な機械語命令のセット全体が、動作命令１０６としての使用に使用可能であり、マイクロループの応用および使用は、プログラマの想像力によってのみ制限される。しかし、単一の命令ワード４８内のマイクロループ１００全体を実行する能力が、コンピュータ１２が命令ワード４８を近傍のコンピュータ１２に送ってその中の命令５２を本質的にデータバス１６から直接に実行することを可能にする能力と組み合わされた時に、これは、コンピュータ１２がその近傍のリソースを利用することを可能にする強力なツールをもたらす。
【００６０】
単一のデータワード４８内にすべてが含まれる、小さいマイクロループ１００を、本明細書で説明するようにコンピュータ１２の間で通信することができ、これを、本明細書で説明するように、命令ワード４８に含まれる命令のすべての他のセットと全く同様に、受取側のコンピュータ１２の通信ポート３８から直接に実行することができる。この種の「マイクロループ」１００の多数の用途があるが、通常の使用は、１つのコンピュータ１２があるデータを近傍のコンピュータ１２のメモリに保管することを望む場合であるはずである。たとえば、そのコンピュータは、まず、着信データワードを特定のメモリアドレスに保管し、次に、そのアドレスを増分し、次に、所与の回数の反復（転送されるデータワードの個数）について繰り返すように指示する命令をその近傍のコンピュータに送る。そのデータを読み戻すために、第１のコンピュータは、類似するマイクロループを使用して、保管されたデータを第１のコンピュータに書き戻すように第２のコンピュータ（ここではストレージに使用されたコンピュータ）に指示するだけであるはずである。
【００６１】
本明細書で説明する直接実行態様と共にマイクロループ１００構造を使用することによって、コンピュータ１２は、データストレージの必要が各個々のコンピュータ１２に組み込まれた比較的小さい容量を超える時に、余分なデータのストレージのために、そうでなければ休んでいる近傍のコンピュータ１２を使用することができる。この例を、データストレージに関して説明したが、同一の技法を、他のコンピュータ１２にある動作を実行させ、その結果を保管させ、所与の回数だけ繰り返させるマイクロループ１００を作成することによって、コンピュータ１２がその近傍にその計算リソースを共用させることを可能にするのに同等に使用することができる。諒解できるとおり、この発明的マイクロループ１００構造を使用できる形の個数は、ほぼ無限である。
【００６２】
本明細書で前に述べたように、本発明の現在説明されている実施形態では、データまたは命令のいずれかを、本明細書で説明する形で通信することができ、したがって、命令を、本質的にデータバス１６から直接に実行することができる。すなわち、命令をＲＡＭ２４に保管し、その後、実行の前にこれらをリコールする必要はない。そうではなく、本発明のこの態様によれば、通信ポート３８で受け取られた命令ワード４８は、ＲＡＭ２４またはＲＯＭ２６からリコールされた場合と本質的に異なって扱われるのではない。この相違の欠如は、前の議論で明らかにされているが、本明細書では、コンピュータ１２の説明される動作に関して、命令ワード４８がどのようにフェッチされ使用されるかの次のより特定の議論が、本発明を理解するのを助けるであろう。
【００６３】
使用可能な機械語命令の１つが、ＦＥＴＣＨ命令である。ＦＥＴＣＨ命令は、Ａレジスタ４０ａのアドレスを使用して、どこから１８ビットワードをフェッチするかを決定する。もちろん、プログラムは、Ａレジスタ４０ａに正しいアドレスを置くことをすでに実現している必要がある。本明細書で前に述べたように、Ａレジスタ４０ａは、１８ビットレジスタであり、そこからフェッチを行うことができる潜在的なソースのすべてを区別できる使用可能なアドレスデータの十分な範囲がある。すなわち、ＲＯＭに割り当てられたアドレスの範囲、ＲＡＭに割り当てられたアドレスの異なる範囲、ポート３８のそれぞれおよび外部Ｉ／Ｏポート３９のための特定のアドレスがある。ＦＥＴＣＨ命令は、必ず、それがフェッチする１８ビットをＴレジスタ４４に置く。
【００６４】
対照的に、本明細書で前に述べたように、実行可能命令（データではなく）は、命令レジスタ３０ａに一時的に保管される。１８ビットの命令ワード４８を命令レジスタ３０ａに「フェッチする」特定のコマンドはない。そうではなく、命令レジスタ３０ａに実行可能命令がもう残っていない時には、コンピュータは、「次の」命令ワード４８を自動的にフェッチする。「次の」命令ワードが置かれている場所は、「プログラムカウンタ」（Ｐレジスタ４０ｃ）によって決定される。Ｐレジスタ４０ｃは、命令ワード４８のシーケンスがＲＡＭ２４またはＲＯＭ２６からフェッチされる場合にそうであるように、しばしば自動的に増分される。しかし、この一般的なルールに対する複数の例外がある。たとえば、ＪＵＭＰ命令またはＣＡＬＬ命令は、増分されるのではなく、Ｐレジスタ４０ｃに、そのＪＵＭＰ命令またはＣＡＬＬ命令の後に前にロードされた命令ワード４８の残りに含まれるデータによって指定されるアドレスがロードされることを引き起こす。Ｐレジスタ４０ｃが、その後、ポート３８のうちの１つまたは複数に対応するアドレスをロードされる時に、次の命令ワード４８は、そのポート３８から命令レジスタ３０ａにロードされる。Ｐレジスタ４０ｃは、命令ワード４８がポート３８から命令レジスタ３０ａに取り出されたばかりである時にも、増分されない。そうではなく、Ｐレジスタ４０ｃは、特定のＪＵＭＰ命令またはＣＡＬＬ命令が実行されてＰレジスタ４０ｃが変更されるまで、その同一のポートアドレスを保持し続ける。すなわち、コンピュータ１２が、次の命令をポート３８から探すように指示されたならば、そのコンピュータ１２は、次の命令ワード４８についてメモリ（ＲＡＭ２４またはＲＯＭ２６）に戻るなど、他の場所を探すように指示されるまで、その同一のポート３８（１つまたは複数のポート）から命令を探し続ける。
【００６５】
上で注記したように、コンピュータ１２は、現在の命令ワード４８内に実行可能命令がもう残っていない時に、次にフェッチされる１８ビットを命令レジスタ３０ａに置かなければならないことを知っている。デフォルトで、ＪＵＭＰ命令またはＣＡＬＬ命令の後には（あるいは、本明細書で具体的には述べないある種の他の命令の後にも）、現在の命令ワード４８内に実行可能命令はもう残っていない。というのは、定義により、ＪＵＭＰ命令またはＣＡＬＬ命令に続く１８ビット命令ワードの残りが、そのＪＵＭＰ命令またはＣＡＬＬ命令によって参照されるアドレス専用であるからである。これを述べるもう１つの形は、上で説明したプロセスが、ＪＵＭＰ命令またはＣＡＬＬ命令を、任意選択としてメモリアドレスだけではなくポート３８または類似物へのＪＵＭＰ命令またはＣＡＬＬ命令とすることができるという事実を含むがこれに限定されない多数の形で独自であることである。
【００６６】
本明細書で前に述べたように、コンピュータ１２が、次の命令を１つのポート３８からまたはポート３８のグループのいずれかから探すことができることを想起されたい。したがって、ポート３８のさまざまな組合せに対応するために、アドレスが供給される。たとえば、コンピュータが、ポート３８のグループから命令をフェッチするように指示される時に、そのコンピュータは、選択されたポート３８のいずれかから、最初に使用可能な命令ワード４８を受け入れる。近傍のコンピュータ１２のどれもが、まだこれらのポート３８のいずれかへの書込を試みていない場合には、当のコンピュータ１２は、上で詳細に説明したように、近傍が選択されたポート３８に実際に書き込むまで、「眠る」。
【００６７】
図７は、上で説明した直接実行方法１２０の例を示す流れ図である。動作の「普通の」流れは、本明細書で前に述べたように、命令レジスタ３０ａに実行可能命令がもう残っていない時に開始される。そのような時に、コンピュータ１２は、「ワードをフェッチする」動作１２２によって示されるように、もう１つの命令ワードを「フェッチする」（用語「フェッチ」が、本明細書では、実際のＦＥＴＣＨ命令が使用されないという点で、一般的な意味で使用されることに留意されたい）。その動作は、Ｐレジスタ４０ｃ内のアドレスに従って達成される（図７の流れ図で「アドレス」判断動作１２４によって示されるように）。Ｐレジスタ４０ｃ内のアドレスが、ＲＡＭ２４またはＲＯＭ２６のアドレスである場合には、次の命令ワード４８は、「メモリからフェッチする」動作１２６で、指定されたメモリ位置から取り出される。その一方で、Ｐレジスタ４０ｃ内のアドレスが、１つまたは複数のポート３８のアドレスである（メモリアドレスではない）場合には、次の命令ワード４８は、「ポートからフェッチする」動作１２８で、指定されたポート位置から取り出される。どちらの場合でも、取り出された命令ワード４８は、「命令ワードを取り出す」動作１３０で、命令レジスタ３０ｃ内に置かれる。「命令ワードを実行する」動作１３２で、命令ワード４８のスロット５４内の命令が、本明細書で前に説明したように、順次達成される。
【００６８】
「ジャンプ」判断動作１３４では、命令ワード４８内の動作の１つがＪＵＭＰ命令または本明細書で前に説明した継続される「普通の」進行から動作をそらせる他の命令であるかどうかを判定する。そうである場合には、ＪＵＭＰ（または他のそのような）命令の後の命令ワード４８内で供給されるアドレスが、「Ｐレジスタにロードする」動作１３６でＰレジスタ４０ｃに供給され、このシーケンスは、図７に示されているように、もう一度「ワードをフェッチする」動作１２２で開始される。そうでない場合には、次のアクションは、「ポートアドレス」判断動作１３８に示されているように、最後にフェッチされた命令がポート３８からまたはメモリアドレスからのどちらであるかに依存する。最後にフェッチされた命令がポート３８からであった場合には、Ｐレジスタ３０ａに対する変更は行われず、このシーケンスが、「ワードをフェッチする」動作１２２から開始して繰り返される。その一方で、最後にフェッチされた命令がメモリアドレス（ＲＡＭ２４またはＲＯＭ２６）からであった場合には、「ワードをフェッチする」動作１２２が達成される前に、Ｐレジスタ３０ａ内のアドレスが、図７の「Ｐレジスタを増分する」動作１４０によって示されるように増分される。
【００６９】
上の説明は、実際の動作ステップを表すことを意図されたものではない。そうではなく、これは、本発明の説明される実施形態に従って実行される、さまざまな判断とそれから生じる動作との図である。実際に、この流れ図は、説明され図示された各動作が別々の別個の順次ステップを必要とすることを意味すると理解されてはならない。実際に、図７の流れ図の説明された動作の多数が、実践において、一般に同時に達成される。
【００７０】
図８は、コンピュータに警告する発明的な改善された方法の例を示す流れ図である。本明細書で前に説明したように、説明される実施形態のコンピュータ１２は、入力を待っている間に「眠る」。そのような入力は、図１から５に関して説明された実施形態のように、隣接するコンピュータ１２からとすることができる。その代わりに、やはり本明細書で前に述べたように、ダイ１４のエッジに接する通信ポート３８を有するコンピュータ１２は、そのようなコンピュータ１２内に設計されるまたはコンピュータ１２の外部であるがこれに関連するかのいずれかである追加回路を有して、そのような通信ポート３８に外部Ｉ／Ｏポート３９として働かせることができる。どちらの場合でも、本発明的組合せは、「眠っている」コンピュータ１２を、入力が受け取られた時に覚醒し（awake）、ある規定されたアクションに飛び込む用意を整え、準備をさせることができるという追加の利点をもたらすことができる。したがって、本発明は、入力が外部入力デバイスまたはアレイ１０内の別のコンピュータ１２のどちらから来るかにかかわらず、そのような入力を処理するための割込みの使用の代替案をも提供する。
【００７１】
割込みを処理するために、コンピュータ１２に、それが行っていることを停止（または一時停止）させるのではなく、本明細書で説明する本発明的組合せは、上で説明したように、コンピュータ１２が「眠っているが警告」状態になることを可能にする。したがって、１つまたは複数のコンピュータ１２を、ある種の入力を受け取り、これに作用するように割り当てることができる。この特徴を使用できる多数の形があるが、単に１つのそのような「コンピュータ警告方法」を示すように働く例を、図８に示し、符号１５０によって本明細書で数え上げる。図８からわかるように、「警告状態に入る」動作１５２で、コンピュータ１２が、「眠」らされ、１つの近傍のコンピュータ１２もしくは複数の（４つすべてもの多数の）近傍のコンピュータ、または「エッジ」コンピュータ１２の場合には外部入力からの入力、あるいは外部入力および／または近傍のコンピュータ１２からの入力のある組合せを待っているようになる。本明細書で前に説明したように、コンピュータ１２は、読取動作または書込動作のいずれかの完了を待ちながら「眠る」ことができる。コンピュータ１２が、この例で説明するように、ある可能な「入力」を待つのに使用されている場合に、待っているコンピュータが、近傍または外側のソースからの「書込」を待って、その読取信号線１８をハイにセットしていると仮定することが自然であるはずである。実際に、これが通常の条件になることが、現在は予期されている。しかし、待っているコンピュータ１２が、その書込信号線２０をハイにセットすること、したがって、近傍または外側のソースがそのコンピュータから「読み取る」時に覚醒されることは、本発明の範囲内である。
【００７２】
「覚醒する」動作１５４で、眠っているコンピュータ１２は、隣接するコンピュータ１２または外部デバイス３９が、待たれているトランザクションを完了したので、動作を再開させられる。待たれているトランザクションが、実行される命令ワード４８の受取であった場合に、コンピュータ１２は、その中の命令の実行に進む。待たれているトランザクションが、データの受取であった場合に、コンピュータ１２は、キュー内の次の命令の実行に進み、この命令は、現在の命令ワード４８内の次のスロット５４内の命令であるか、次の命令ワード４８がロードされ、次の命令が、その次の命令ワード４８のスロット０内にある、のいずれかである。どの場合でも、説明される形で使用されている間に、その、次の命令が、受け取られたばかりの入力を処理するための１つまたは複数の命令のシーケンスを開始する。そのような入力を処理するオプションには、ある事前定義された機能を内部で実行するために反応すること、アレイ１０内の他のコンピュータ１２のうちの１つまたは複数と通信すること、または入力を無視することさえ（普通の従来技術の割込みを規定された条件の下で無視できるのと同様に）含めることができる。このオプションは、図８では「入力に作用する」動作１５６として示されている。いくつかの場合に、入力の内容が重要でない場合があることに留意されたい。いくつかの場合に、入力の内容は、たとえば、外部デバイスが、関心を持たれている通信を試みたという事実そのものにすぎない場合がある。
【００７３】
コンピュータ１２に、図８に示された形で「警告」コンピュータとして働くタスクが割り当てられる場合に、そのコンピュータ１２は、一般に、図８に示されているように「眠っているが警告」状況に戻る。しかし、監視される特定の１つまたは複数の入力を監視する必要がもはやない時またはアレイ内のコンピュータ１２のうちのある他のコンピュータにそのタスクを転送することがより便利である時など、コンピュータ１２に他のタスクをいくらか割り当てるオプションが常に開かれている。
【００７４】
当業者は、上で説明されたこの動作モードが、割込みの普通の使用に対するより効率的な代替案として有用になることを認めるであろう。コンピュータ１２が、その読取信号線１８（または書込信号線２０）のうちの１つまたは複数をハイにセットしている時に、そのコンピュータ１２を、「警告」状態であると言うことができる。警告状態では、コンピュータ１２は、ハイにセットされている１つまたは複数の読取信号線１８に対応するデータバス１６でそのコンピュータ１２に送られたすべての命令を即座に実行する準備ができており、あるいは、その代わりに、データバス１６を介して転送されたデータに作用する準備ができている。使用可能なコンピュータ１２のアレイがある場合に、その１つまたは複数を、入力の規定された組のどれもがアクションを起こすようにそれをトリガするように、いつでも、上で説明した警告状態になるように使用することができる。これは、コンピュータの「注意を引く」のに普通の割込み技法を使用することより好ましい。というのは、割込みは、コンピュータが、割込み要求に応答して、ある種のデータを保管する、ある種のデータをロードするなどを行わなければならなくするからである。本発明によれば、コンピュータを、警告状態にし、関心を持たれている入力を待つこと専用にすることができ、単一の命令期間すら、そのような入力によってトリガされる命令の実行を開始するのに浪費されなくなる。やはり、現在説明されている実施形態で、警告状態のコンピュータが、実際には「眠っているが警告」であり、これは、それらのコンピュータが、本質的に電力を使用していないという意味で「眠っている」が、入力によってアクションを起こすように瞬間的にトリガされるという点で「警告」であることを意味する。しかし、「警告」状態を、「眠って」いない場合であってもコンピュータ内で実施できることは、本発明のこの態様の範囲内である。説明された警告状態は、本質的に、普通の従来技術の割込み（ハードウェア割込みまたはソフトウェア割込みのいずれか）がそうでなければ使用されていた可能性があるすべての状況で使用することができる。
【００７５】
図９は、コンピュータ警告方法１５０ａのもう１つの例である。これは、監視するコンピュータ１２ｆ（図１）と、ある他のタスクに割り当てられたもう１つのコンピュータ１２ｇ（図１）との間の相互作用が望ましいか必要である、１つの例にすぎない。図９からわかるように、コンピュータ１２ｆおよび１２ｇのそれぞれについて１つの、２つの全般的に独立の流れ図がある。これは、本発明の協力するコプロセッサ手法の性質を示し、ここで、コンピュータ１２のそれぞれは、相互作用が本明細書に記載のように達成される機会を除いて、そのコンピュータが全般的に独立に実行するそれ自体の割当を有する。
【００７６】
コンピュータ１２ｆに関して、「警告状況に入る」動作１５２、「覚醒する」動作１５４、および「入力に作用する」動作のそれぞれは、コンピュータ警告方法１５０の第１の例に関して本明細書で前に説明したように達成される。しかし、この例は、コンピュータ１２ｆと１２ｇとの間の相互作用の可能な必要を予期しているので、「入力に作用する」動作１５６に続いて、コンピュータ１２ｆは、「情報を送るか」判断動作１５８に入り、ここで、そのプログラミングに従って、受け取られたばかりの入力が他方のコンピュータ１２ｇの注意を必要とするかどうかが判定される。そうでない場合には、コンピュータ１２ｆは、警告状況または本明細書で前に述べたものなどのある他の代替物に戻る。そうである場合には、コンピュータ１２ｆは、「他方に送る」動作１６０で、本明細書で前に詳細に説明したように、コンピュータ１２ｇとの通信を開始する。プログラマの選択に従って、コンピュータ１２ｆが、外部デバイス８２からの入力に応答して内部的に生成した可能性があるものなどまたは外部デバイス８２から受け取った可能性があるものなどの命令を送ることができることに留意されたい。代替案では、コンピュータ１２ｆが、コンピュータ１２ｇにデータを渡すことができ、そのようなデータは、コンピュータ１２ｆで内部的に生成するか、外部デバイス８２から「パススルー」されたものとすることができる。もう１つの代替案は、コンピュータ１２ｆが、いくつかの状況で、コンピュータ１２ｇが外部デバイス８２から入力を受け取る時にコンピュータ１２ｇからの読取を試みることができることとすることができる。これらの機会のすべてが、プログラマが使用可能である。
【００７７】
それに対して、コンピュータ１２ｇは、一般に、「主機能を実行する」動作１６２に示されているように、それに割り当てられた主タスクが何であれ、その主タスクを達成するためにコードを実行している。しかし、プログラマが、コンピュータ１２ｆと１２ｇとの間の随時の相互作用が望ましいと判断した場合に、そのプログラマは、コンピュータ１２ｇが時折一時停止して、「入力を探す」動作１６６に示されているように、その近傍のうちの１つまたは複数が通信を試みたかどうかを調べることを提供する。「入力か」判断動作１５８によって示されるように、待っている通信がある場合（たとえば、コンピュータ１２ｆがすでにコンピュータ１２ｇへの書込を開始している場合など）。開始された通信がある場合（ｙｅｓ）、コンピュータ１２ｇは、「他方から受け取る」動作１７０で、本明細書で前に詳細に説明したように、その通信を完了する。そうでない場合には、コンピュータ１２ｇは、図９に示されているように、その主機能の実行１６２に戻る。「他方から受け取る」動作１７０の後に、コンピュータ１２ｇは、「入力に作用する」動作１７２で、受け取られた入力に作用する。上で述べたように、プログラマは、コンピュータ１２ｇが、入力として命令を期待していることを提供することができ、この場合に、コンピュータ１２ｇは、本明細書で前に述べたように、その命令を実行する。その代わりに、コンピュータ１２ｇを、作用されるデータを期待するようにプログラムすることができる。
【００７８】
図９の例では、「入力に作用する」動作１７２に続いて、コンピュータ１２ｇが、その主機能の達成に戻る（すなわち、「主機能を実行する」動作１６２に戻る）ことが示されている。しかし、さらに複雑な例の可能性が、確かに存在する。たとえば、プログラミングを、コンピュータ１２ｆから受け取られたある種の入力が、前に割り当てられた主機能を打ち切らせ、新しい機能を開始させるものとすることができ、あるいは、コンピュータ１２ｆが、単純に一時的に停止し、さらなる入力を待つものとすることができる。当業者が認めるとおり、ここでのアクションに関するさまざまな可能性は、プログラマの想像力によってのみ制限される。
【００７９】
本明細書で説明される本発明の実施形態によれば、所与のコンピュータ１２は、別のコンピュータ１２が、そうでなければ割込みを必要とする可能性がある入力の監視および処理というタスクを割り当てられるので、タスクを実行している間に割り込まれる必要がないことに留意されたい。しかし、別のタスクの処理で忙しいコンピュータ１２は、入力についてそのポート３８を調べることをそのプログラミングがもたらさない限り、かつ、それがもたらされるまで、邪魔されることもできないことに留意することが興味深い。したがって、コンピュータ１２に他の入力を調べるために一時停止させることが、時々望ましい。本明細書で説明されているものが、以前は単一のプロセッサによって達成された可能性があるタスクが新しい興味深い形で複数のプロセッサの間で分割される「協力マルチタスキング」として記述できるコンピューティングのパラダイムの例であることを認めることが重要である。
【００８０】
さまざまな変更を、本発明の価値または範囲を変更せずに本発明に対して行うことができる。たとえば、本発明を、本明細書で特定のコンピュータ１２の例を使用して説明したが、これらの発明的態様の多くまたはすべてが、他のコンピュータ設計、他の種類のコンピュータアレイ、および類似物にたやすく適合可能である。
【００８１】
同様に、本発明を、本明細書で主に単一のダイ１４上のアレイ１０内のコンピュータ１２間の通信に関して説明したが、同一の原理および方法を、コンピュータ１２とその専用メモリとの間またはアレイ１０内のコンピュータ１２と外部デバイスとの間の通信など、他のデバイス間通信を達成するのに使用するか、それに使用するために変更することができる。
【００８２】
発明的なコンピュータアレイ１０、コンピュータ１２、マイクロループ１００、直接実行方法１２０および関連する装置、ならびにコンピュータ警告方法１５０の特定の例を本明細書で説明したが、まだ心に描かれたことがない、これらに関する非常に多数の応用例があると期待される。実際に、これらの発明的な方法および装置を非常にさまざまな用途に適合させることができることは、本発明の利点の１つである。
【００８３】
上記のすべてが、本発明の使用可能な実施形態の例の一部にすぎない。当業者は、多数の他の修正形態および代替形態を、本発明の趣旨および範囲から逸脱せずに作ることができることをたやすく観察するであろう。したがって、本明細書の開示は、限定的として意図されたものではなく、添付の特許請求の範囲は、本発明の範囲全体を含むものとして解釈されなければならない。
【産業上の利用可能性】
【００８４】
発明的なコンピュータアレイ１０、コンピュータ１２、マイクロループ１００、直接実行方法１２０および関連する装置、ならびにコンピュータ警告方法１５０は、非常にさまざまなコンピュータ応用例で幅広く使用されることが意図されている。これらは、かなりの計算能力が要求され、なおかつ電力消費および熱発生量が重要な考慮事項である応用例で特に有用であると期待される。
【００８５】
本明細書で前に述べたように、本発明の適用可能性は、アレイ内のコンピュータ間の情報およびリソースの共用が、速度と多用性との両方で、非常に強化されるようになっている。また、コンピュータアレイと他のデバイスとの間の通信は、説明された方法および手段に従って強化される。
【００８６】
本発明のコンピュータアレイ１０、コンピュータ１２、マイクロループ１００、直接実行方法１２０および関連する装置、ならびにコンピュータ警告方法１５０は、たやすく生産でき、既存のタスク、入出力デバイス、および類似物とたやすく一体化でき、本明細書で説明した利点が、もたらされるので、これらは、産業界ですぐに受け入れられると期待される。上記および他の理由から、本発明の有用性および産業上の利用可能性は、範囲において重要であると同時に持続期間において長続きするものになるであろう。
【図面の簡単な説明】
【００８７】
【図１】本発明によるコンピュータアレイを示す概略図である。
【図２】図１のコンピュータのサブセットと、図１の相互接続するデータバスのより詳細な図とを示す詳細図である。
【図３】図１および２のコンピュータのうちの１つの全般的レイアウトを示すブロック図である。
【図４】本発明的応用例による命令ワードを示す概略図である。
【図５】図３のスロットシーケンサ４２を示す概略図である。
【図６】本発明によるマイクロループの例を示す流れ図である。
【図７】ポートからの命令を実行する発明的方法の例を示す流れ図である。
【図８】コンピュータに警告する発明的な改善された方法の例を示す流れ図である。
【図９】インアクティブプロセッサを覚醒させ、覚醒されたプロセッサから、入力データを処理するように動作する実行中のプロセッサに入力データを送る方法を示す流れ図である。
【符号の説明】
【００８８】
１０  コンピュータアレイ
１２  コンピュータ
１４  ダイ
１６  データバス
１８  読取信号線
２０  書込信号線
２２  データ信号線
２４  ＲＡＭ
２６  ＲＯＭ
２８  リターンスタック
２８ａ  円形レジスタアレイ
２９  Ｒレジスタ
３０  命令エリア
３０ａ  命令レジスタ
３０ｂ  オペコードレジスタ
３２  ＡＬＵ
３４  データスタック
３４ａ  円形レジスタアレイ
３６  デコードセクション
３８  内部通信ポート
３８ａ  上ポート
３８ｂ  右ポート
３８ｃ  左ポート
３８ｄ  下ポート
３９  外部Ｉ／Ｏポート
４０  レジスタ
４０ａ  Ａレジスタ
４０ｂ  Ｂレジスタ
４０ｃ  Ｐレジスタ
４２  スロットシーケンサ
４４  Ｔレジスタ
４６  Ｓレジスタ
４８  命令ワード
５０  ビット
５２  命令
５４  スロット
５４ａ  スロット０
５４ｂ  スロット１
５４ｃ  スロット２
５４ｄ  スロット３
５６  インバータ
５８  ＮＡＮＤゲート
６０  ＯＲゲート
６２  第１ＯＲゲート入力
６４  第２ＯＲゲート入力
６６  ｉ４ビット
６８  スロットシーケンサ出力
７０  パルスジェネレータ
７２  肯定応答信号線
８０  インターフェース回路
８２  外部デバイス
１００  マイクロループ
１０２  ＦＯＲ命令
１０４  ＮＥＸＴ命令
１０６  動作命令
１０８  ＭＩＣＲＯ−ＮＥＸＴ命令
１２０  直接実行方法
１２２  「ワードをフェッチする」動作
１２４  「アドレス」判断動作
１２６  「メモリからフェッチする」動作
１２８  「ポートからフェッチする」動作
１３０  「命令ワードを取り出す」動作
１３２  「命令ワードを実行する」動作
１３４  「ジャンプ」判断動作
１３６  「Ｐレジスタにロードする」動作
１３８  「ポートアドレス」判断動作
１４０  「Ｐレジスタを増分する」動作
１５０  コンピュータ警告方法
１５０ａ  コンピュータ警告方法
１５２  「警告状態に入る」動作
１５４  「覚醒する」動作
１５６  「入力に作用する」動作
１５８  「情報を送るか」判断動作
１６０  「他方に送る」動作
１６２  「主機能を実行する」動作
１６６  「入力を探す」動作
１６８  「入力」判断動作
１７０  「他方から受け取る」動作
１７２  「入力に作用する」動作
【図１】
2009527808.tif 000003
【図２】
2009527808.tif 000004
【図３】
2009527808.tif 000005
【図４】
2009527808.tif 000006
【図５】
2009527808.tif 000007
【図６】
2009527808.tif 000008
【図７】
2009527808.tif 000009
【図８】
2009527808.tif 000010
【図９】
2009527808.tif 000011
【国際調査報告】
2009527808.tif 000012