(57)【要約】      （修正有）【課題】複数のプロセッサを使用し、コンピュータ全体の速度を上げる場合において、個々のコンピュータへのデータおよび命令を、コンピュータ内で効率的に転送する。【解決手段】コンピュータ１２は互いに非同期的に通信し、コンピュータ１２はそれ自体が一般に非同期的な方式で内部的に動作する。１つのコンピュータ１２は、他のコンピュータとの通信を試行する場合、他のコンピュータ１２がトランザクションを完了する準備が整うまでスリープ状態になり、これによって電力を節約し、熱発生を削減する。スリープ状態のコンピュータ１２は、データまたは命令を待つことができる。命令の場合、スリープ状態のコンピュータ１２は、命令を格納するかまたは命令を即時実行するために待機することができる。後者の場合、命令は、受信されると、最初にそれらの命令をまずはメモリ内に配置するのではなく、命令レジスタ内に配置され、そこから実行される。【選択図】図１
2009064411.tif 000002
【特許請求の範囲】
【請求項１】
ポートを有するコンピュータプロセッサのグループと、
データ、場所、および命令のグループから選択された情報を、ポートを介して第１のプロセッサへと伝送するためのクローラとを備え、
前記第１のプロセッサは、前記第１のプロセッサ向けの情報を入力し、および前記クローラを第２のプロセッサに移送するようにプログラミングされることを特徴とするコンピュータシステム。
【請求項２】
前記第２のプロセッサは、当該第２のプロセッサ向けの情報を入力するように、および前記クローラ手段を第３のプロセッサに移送するようにプログラミングされることを特徴とする請求項１に記載のシステム。
【請求項３】
前記第２のプロセッサは、前記第１のプロセッサとの対話なしに入力ポートからの命令を実行するようにプログラミングされることを特徴とする請求項１に記載のシステム。
【請求項４】
前記クローラは、前記移送手段を前記第２のプロセッサに移送するために、上、下、左、および右のグループから選択された場所を含むことを特徴とする請求項２に記載のシステム。
【請求項５】
前記情報は、前記ポートから前記第２のプロセッサへの命令の転送であることを特徴とする請求項２に記載のシステム。
【請求項６】
前記情報は、前記ポートから前記第２のプロセッサへのデータの転送であることを特徴とする請求項２に記載のシステム。
【請求項７】
前記情報は、前記ポートから前記第２のプロセッサへと送信されるデータおよび／または命令の形態であることを特徴とする請求項２に記載のシステム。
【請求項８】
前記入力ポートは、外部デバイスと通信するための外部ポートであることを特徴とする請求項１に記載のシステム。
【請求項９】
前記プロセッサのうちの少なくとも１つは、
実行されるべき命令のグループを一時的に格納するための命令レジスタと、
命令のグループが前記命令レジスタに取り出されるアドレスを格納するためのプログラムカウントとを備え、
前記プログラムカウンタ内の前記アドレスは、メモリアドレスまたはレジスタのアドレスのいずれかとすることが可能であることを特徴とする請求項１に記載のシステム。
【請求項１０】
前記命令のグループは前記命令レジスタに略同時に取り出され、
前記複数の命令は、スタック上の数によって示された反復量だけ繰り返されることを特徴とする請求項９に記載のシステム。
【請求項１１】
前記プロセッサのうちの少なくとも１つは、
略同時に読み取られる複数の命令を備え、
前記複数の命令は、スタック上の数によって示された反復量だけ繰り返されることを特徴とする請求項１に記載のシステム。
【請求項１２】
入力ポートに直接接続されない少なくとも１つのコンピュータを有する、入力ポートを備えるマルチコンピュータアレイ内のコンピュータへデータを伝送するための方法であって、
（ａ）前記入力ポートに接続された第１のコンピュータに、前記入力の少なくとも一部を前記入力ポートに接続されない第２のコンピュータへ伝送させる、前記ポートへ入力を導入するステップと、
（ｂ）前記第２のコンピュータに、前記入力の前記一部のうちの少なくとも一部を入力させるステップと
を備えることを特徴とする方法。
【請求項１３】
前記第２のコンピュータは、タスクを実行することによって前記第１のコンピュータからの前記入力の前記一部に応答することを特徴とする請求項１２に記載の方法。
【請求項１４】
前記ポートからの入力に応答して、前記第２のコンピュータはルーチンを実行することを特徴とする請求項１２に記載の方法。
【請求項１５】
前記ルーチンは、第３のコンピュータとインターフェースするステップを含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記ルーチンは、前記第３のコンピュータへの書き込みを行うステップを含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記ルーチンは、前記第３のコンピュータへデータを送信するステップを含むことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記ルーチンは、前記第３のコンピュータへ命令を送信するステップを含むことを特徴とする請求項１５に記載の方法。
【請求項１９】
前記命令は、受信されると前記第３のコンピュータによって逐次実行されることを特徴とする請求項１８に記載の方法。
【請求項２０】
請求項１２乃至１９のいずれか一項に記載の方法を、コンピュータのアレイ上で実行される場合に前記アレイに実行させることを特徴とするコンピュータプログラム。
【請求項２１】
請求項１２、１３、１４、１５、１６、１７、１８、または１９に記載のステップを電子デバイスに実行させるために具体化されたコードを内部に有することを特徴とするコンピュータ読み取り可能媒体。
【請求項２２】
請求項２０に記載のプログラムを搬送することを特徴とする搬送波。
【請求項２３】
プロセッサのうちの１つに接続された少なくとも１つの入力ポートを含むプロセッサのグループと、
データ、命令、および場所のグループから選択された情報を、前記１つの入力ポートから前記プロセッサのうちの１つおよび前記プロセッサのうちの他の１つへと伝送するためのクローラ手段とを備え、
前記クローラ手段は、方向命令によって決定されたパスと、前記他のプロセッサにペイロードをロードするように命令するための手段とをさらに備えることを特徴とするコンピューティング用システム。
【請求項２４】
前記クローラ手段は、前記入力ポートに対する前記１つのプロセッサの場所を示すことを特徴とする請求項２３に記載のコンピューティング用システム。
【請求項２５】
前記クローラ手段は、上、下、右、および左からなるグループから選択された方向を含むことによって、前記入力ポートに対する前記１つのプロセッサの場所を示すことを特徴とする請求項２４に記載のコンピューティング用システム。
【請求項２６】
前記クローラ手段は、北、南、東、および西からなるグループから選択された方向を含むことによって、前記入力ポートに対する前記１つのプロセッサの場所を示すことを特徴とする請求項２４に記載のコンピューティング用システム。
【請求項２７】
前記クローラ手段は、前記１つのプロセッサのアドレスを含むことによって、前記１つのプロセッサの場所を絶対的に示すことを特徴とする請求項２３に記載のコンピューティング用システム。
【請求項２８】
前記ペイロードはデータであることを特徴とする請求項２３に記載のコンピューティング用システム。
【請求項２９】
前記ペイロードは命令であり、前記他のプロセッサは、前記命令を実行するように動作可能であることを特徴とする請求項２３に記載のコンピューティング用システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータおよびコンピュータプロセッサの分野に関する。
【背景技術】
【０００２】
コンピューティングの技術分野では、処理速度は非常に求められる品質であり、より高速のコンピュータおよびプロセッサを作成するための努力が続けられている。しかしながら当分野では一般に、少なくとも現在知られている技術を使用したマイクロプロセッサにおける高速化は、急速に限界に近づきつつあることが認められている。したがって、複数のプロセッサを使用し、プロセッサ間でコンピュータタスクを共有することによって、コンピュータ全体の速度を上げることへの関心が高まりつつある。
【０００３】
複数のプロセッサを使用すると、プロセッサ間での通信の必要性が生じる傾向がある。実際、プロセッサ間の通信はかなりの量となる可能性があり、結果として、プロセッサ間での命令およびデータの転送にかなりの時間が費やされる。こうした通信がかなりの量である場合、それを実施するために実行しなければならない追加のそれぞれの命令がプロセスにおける遅延を増加させ、これが累積すると大量になる可能性がある。あるコンピュータから別のコンピュータに命令またはデータを通信するための従来の方法には、まずデータまたは命令を受信側コンピュータに格納すること、そしてその後に、実行のため（命令の場合）、またはそこでの操作のため（データの場合）に、これを呼び出すことが含まれる。
【０００４】
コンピュータ間でデータまたは命令の形態の情報を送信、受信、およびその後使用するために必要な段階の数を減らすことが有用となる。しかしながら、本発明者の知る限りでは、従来技術のシステムの中で、前述のプロセスを飛躍的に合理化したものはない。
【０００５】
また従来技術では、時折、コンピュータの「アテンションを得る」必要があることが知られている。すなわち、たとえコンピュータが１つのタスクでビジーなことがあっても、そのコンピュータを一時的に第１のタスクから方向転換させることを必要とするような、別の時間依存タスク要求が発生する可能性がある。この例には、コンピュータに入力を提供するためにユーザ入力デバイスが使用される場合が含まれるが、これには限定されない。こうしたケースでは、コンピュータが入力を一時的に確認すること、および／またはこの入力に従って反応することが必要な場合がある。次にコンピュータは、入力の前に実行されていたことを続行するか、または実行されていたことを入力に基づいて変更することになる。ここでは一例として外部入力が使用されるが、コンピュータの内部状況間でのＡＬＵのアテンションに関して潜在的な競合が存在する場合にも、同じ状況が発生する。
【０００６】
Ｉ／Ｏポートからデータおよび状況の変化を受信した場合、従来技術ではこれまで２つの方法が使用可能であった。１つはポートを「ポーリング」する方法であり、これには、いずれかのデータが受信されたか、または状況に変化が生じたかを判別するために、一定間隔でポートの状況を読み取ることが含まれる。しかしながら、ポートのポーリングは、普通であれば他の事を実行してより有効に使用できる時間およびリソースを、かなり消費する。より適切な代替方法は、しばしば「割り込み」の使用であった。割り込みを使用する場合、プロセッサはその割り当てられたタスクに取り掛かり、その後、Ｉ／Ｏポート／デバイスは、あるバイトが受信されたかまたは状況が変化したという事実が示すように、アテンションを必要とする場合、プロセッサに割り込み要求（ＩＲＱ）を送信する。プロセッサは、割り込み要求を受信すると、その現在の命令を終了し、いくつかの事をスタックに置き、さらに、そのバイトをポートから除去してバッファ内に入れることが可能な適切な割り込みサービスルーチン（ＩＳＲ）を実行する。ＩＳＲが完了すると、プロセッサは元の場所に戻る。この方法を使用すると、プロセッサは時間を無駄にして、Ｉ／Ｏデバイスがアテンションを必要としているかどうかに目を向ける必要がなく、むしろデバイスは、アテンションが必要な場合にのみ、割り込みを提供することになる。しかしながら、割り込みの使用に関連するオーバヘッドが大量に存在する可能性があるため、割り込みを使用すること自体、多くのケースで決して望ましくない。たとえば、割り込みが発生するごとに、コンピュータは、その前に実施しようとしていたタスクに関するある種のデータを一時的に格納し、次に割り込みに関連するデータをロードし、その後割り込みが処理されると、前のタスクに必要なデータを再ロードしなければならない場合がある。割り込みは、時間に依存した処理に支障をきたす。本質的に、割り込みはタイミングを予測不可能にする。時間およびリソースを消費するこのオーバヘッドを低減するかまたはすべてなくすことが望ましいのは明らかである。しかしながら、割り込みの必要性を軽減する従来技術の方法は、いまだに開発されていない。
【０００７】
従来のパラレルコンピューティングは、通常、いくつかのコンピュータを通信データパスまたはバスに結合する。こうした配置構成では、個々のコンピュータにそれぞれアドレスが割り当てられる。たとえばベオウルフクラスタでは、個々のＰＣは、ＴＣＰ／ＩＰプロトコルによってイーサネット（登録商標）に接続され、アドレスまたはＵＲＬが与えられる。データまたは命令は、個々のコンピュータに送られる場合、そのコンピュータにアドレス指定されたパケット内に置かれる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
関連する問題は、個々のコンピュータへのデータおよび命令を、こうしたコンピュータ内でどのようにして効率的に転送するかである。この種のコンピュータのアーキテクチャは、別々にアドレス指定可能なコンピュータを含まないため、この問題はさらに困難である。
【課題を解決するための手段】
【０００９】
本発明の一態様は、コンピュータのポートをリンクするデータバスによってそれぞれが隣接コンピュータとリンクされたコンピュータのアレイを提供し、このアレイは、アレイ内のコンピュータのうちの任意の所望のコンピュータである宛先に情報を提供するための手段を有する。この情報は、データおよび／または命令（たとえばコンピュータのうちの所望の１つによって実施されることになるプログラム）であり得る。ある実施形態では、コンピュータのうちの任意の所望の１つに情報を提供するための手段は、以下でクローラ（ｃｒａｗｌｅｒ）と呼ばれるプログラムであり、このプログラムは、情報を搬送し、さらに、始点（すなわち、アレイの縁部にあることが可能な所定のコンピュータ）からコンピュータのうちの所望の１つである宛先へと、アレイを通るルートを事前に定義し、この事前に定義されたルートに沿ってそれ自体をコンピュータからコンピュータへとコピーする。所望の宛先コンピュータで、この情報がそのコンピュータに提供される。情報が命令である場合、命令はそのコンピュータで実行される。
【００１０】
クローラは、宛先コンピュータから、たとえばオリジナルの始点であるか、または異なるコンピュータともなり得る他のコンピュータへのルートも定義することができる。一実施形態では、クローラは命令の結果を他のコンピュータに送る。
【００１１】
一実施形態では、クローラは単に、プログラムおよび／またはデータをコンピュータまで運び、その後停止する。
【００１２】
ある実施形態では、ルートはクローラプログラムのペイロードに静的に定義され、言い換えれば、ペイロードがルートを事前に決定する（ルートが動的に定義されるＴＣＰ／ＩＰとは異なる）。
【００１３】
ある実施形態では、ルート情報は、クロール時にコンピュータのメモリからメモリへとルートに沿ってコピーされる。クローラ内のデータ／命令ペイロードがそのルートに関する情報を含み、このペイロードがルートに沿ったコンピュータによって消費されない場合、宛先コンピュータは、たどったルートおよびその起点に関する情報を受け取ることができる。
【００１４】
本発明の一実施形態は、それ自体のメモリを有するコンピュータを備えることによって、独立したコンピューティング機能を有する。本発明の一実施形態では、複数のコンピュータがアレイ内に配置構成される。タスクを協働的に実施するために、コンピュータは互いにデータおよび／または命令を渡さなければならない。同時に作業しているすべてのコンピュータは、通常、ほとんどのタスクによって要求されるコンピューティング能力よりもはるかに多くの能力を提供することになり、いくつかのコンピュータ間でタスクを配分するために使用されるいかなるアルゴリズムまたは方法も、ほぼ確実に割り当てを不均等に配分することになるため、少なくとも一部の、またおそらくはほとんどのコンピュータは、任意の所与の時点でタスクの実施に積極的に関与していない可能性があることが予想される。したがって、コンピューティングリソース、メモリのいずれか、または両方を「貸し出す」ことによって、よりビジーな隣接コンピュータを支援するために未使用のコンピュータを使用可能にするための方法を見つけることが望ましいであろう。こうした関係を効率的および有用にするために、隣接コンピュータ間の通信および対話を可能な限り迅速かつ効率的にすることが、さらに望ましいであろう。したがって、本発明の実施形態は、コンピュータが、命令の実行および／または他のコンピュータから直接提供されたデータ上での作業を、その前にデータおよび／または命令を受信して格納することなく行うための手段および方法を提供する。本発明のこの実施形態は、コンピュータに他のコンピュータからさらに他のコンピュータへと命令またはデータを「渡させる」ための仲介として働くことになる命令にとっても有用となることに留意されたい。
【００１５】
ある実施形態では、不必要な電力の消費および不必要な熱の発生を防ぐために、コンピュータは、その隣接コンピュータのうちの１つまたは複数との通信を試みる場合、隣接コンピュータまたはそのうちの１つが通信を完了するための動作を行うまで、実質的に電力を消費しない休眠モードとなる。しかしながら、これは本発明に不可欠な態様ではない。さらに、所望の電力の節約および熱発生の削減を実施するためには、通信の完了を待つ間の、開始コンピュータの停止、または少なくともその電力消費の大幅な削減が望ましい。これは、多くの手段のうちのいずれかによって実施可能であると考えられる。たとえば、コンピュータが内部または外部クロックのどちらかによって動作している場合、その期間中、そのクロックを遅らせるかまたは停止させることができる。
【００１６】
本明細書に記載された本発明の一実施形態では、命令およびデータは、それらのソースがコンピュータの内部メモリであるか、または、こうした命令およびデータが、他のコンピュータ、外部通信ポートなどの、他のソースから受け取られるものであるかにかかわらず、実質的に同一に取り扱われる。このことは、データまたは命令を格納し、その後内部メモリから再呼び出しするなどの、「追加」の動作を不要とし、それによって必要な命令数を削減し、関連するコンピュータの動作速度を向上させることになるため、重要である。
【００１７】
ある実施形態では、反復的繰り返しが必要な比較的単純な動作を即時および容易に実施できるように、非常に小規模な命令のグループを通常は同時に他のコンピュータに送ることができる。これにより、コンピュータ間での通信処理がかなり速められる。
【００１８】
ある実施形態では、様々なタスクを実行するために使用可能な複数のコンピュータが存在し、１つまたは複数のコンピュータは、入力を待つ間は実質的に電力を使用しない休眠状態に置くことが可能であるため、こうしたコンピュータに入力待機のタスクを割り当て、それによって、他のタスクを実施している可能性のある他のコンピュータに「割り込む」必要性を減らし又はなくすことができる。
【００１９】
ある実施形態では、データおよび命令を個々のコンピュータに効率的にロードして実行すること、および／またはこうしたコンピュータ間で転送することが可能である。これは、各コンピュータが限られた数の隣接コンピュータに直接接続されているのみの場合、共通バスに頼らずに実施することができる。
【００２０】
本発明の実施形態は、外部ソースから受け取られる命令を最初に格納することなく、コンピュータが命令を実行できるようにするための方法および手段と、この方法および手段を使用して、コンピュータ間の通信、ならびにコンピュータが他のコンピュータの使用可能リソースを使用するための機能を容易にするための関連方法とを提供する。この実施形態は、単一マイクロチップ上の複数コンピュータの組み合わせで、直接実行の方法および装置を提供し、ここでは、動作速度を上げる要求のためだけではなく、効率向上の結果である省電力および熱削減のためにも、動作効率が重要である。
【００２１】
当業者であれば、本明細書で説明され、いくつかの図面に例示された、本発明を実施するモードの説明およびその産業上の利用可能性に鑑みて、本発明の諸実施形態のこれらおよび他の目的および利点が明らかとなろう。列挙された目的および利点は、本発明の諸実施形態のすべての可能な利点を網羅するリストではない。さらに、たとえ適用例において所期の目的および／または利点のうちの１つまたは複数が欠如しているかまたは不要である場合であっても、本発明を実施することが可能となろう。
【００２２】
さらに当業者であれば、本発明の様々な実施形態が、説明された目的および／または利点のうちの、必ずしもすべてではなく、１つまたは複数を達成可能であることを理解されよう。したがって、本明細書で説明される目的および／または利点は本発明の不可欠な要素ではなく、制限とみなされるべきではない。
【発明を実施するための最良の形態】
【００２３】
本発明の実施形態について、図面を参照しながら以下の記載で説明するが、ここで同一の番号は同じかまたは同様の要素を表す。この実施形態は目的を達成するためのモードによって説明されるが、当業者であれば、本発明の趣旨または範囲を逸脱することなくこれらの教示に鑑みて変形が実施可能であることを理解されよう。
【００２４】
本明細書に記載された、および／または図面に示された、本発明の諸実施形態および変形形態は、単なる例として提示されたものであり、本発明の範囲に関して限定するものではない。特に言及のない限り、本発明の個々の態様および構成要素は、省略または修正可能であるか、あるいは、既知の等価物であるいは将来開発される可能性がある又は将来受け入れ可能な代替物であることがわかる可能性があるなどまだ知られていない代替物で置き換え可能である。本発明は、潜在的な適用例の範囲が広いため、および本発明が多くのこうした変形に適合可能であることが意図されているため、特許請求された本発明の趣旨および範囲内に留まったまま、様々な適用例についても修正可能である。
【００２５】
個々のコンピュータのアレイが、図１の概略図に示されており、全体参照番号１０によって指示されている。コンピュータアレイ１０は複数の（この例で示されているのは２４の）コンピュータ１２（時にはアレイの例で「コア」または「ノード」とも呼ばれる）を有する。示された例では、コンピュータ１２のすべてが単一のダイ１４上に配置される。本実施形態によれば、以下でより詳細に論じるように、コンピュータ１２はそれぞれ一般的に独立して機能するコンピュータである。コンピュータ１２は、複数の（その量は以下でより詳細に論じる）相互接続データバス１６によって相互接続される。この例では、データバス１６は双方向、非同期、高速の、並列データバスであるが、他の相互接続手段をその目的のために使用することも本発明の範囲内である。アレイ１０の本実施形態では、コンピュータ１２間のデータ通信が非同期であるのみならず、個々のコンピュータ１２も内部的に非同期モードで動作する。このことは、重要な利点を提供するために本発明者によって発見されている。たとえば、クロック信号はコンピュータアレイ１０全体にわたって配布される必要がないため、かなりの電力が節約される。さらに、クロック信号を配布する必要がないことで、アレイ１０のサイズを制限する可能性があり、または他の既知の困難を発生させる可能性のある、多くのタイミング問題を解消する。また、個々のコンピュータが非同期的に動作するという事実により、内部で実行中のクロックがないことから、各コンピュータが命令を実行していない場合は実質的に電力を使用しないことになるため、かなりの電力が節約される。
【００２６】
ダイ１４上には、理解しやすいように図１からは省略されている追加の構成要素があることを当業者であれば理解されよう。こうした追加の構成要素には、電力バス、外部接続パッド、およびマイクロプロセッサチップの他のこうした一般的な態様が含まれる。
【００２７】
コンピュータ１２ｅは、アレイ１０の縁部にはないコンピュータ１２のうちの１つの例である。すなわちコンピュータ１２ｅは、４つの直交的に隣接するコンピュータ１２ａ、１２ｘ、１２ｃ、および１２ｄを有する。このコンピュータ１２ａから１２ｅのグループ化は、たとえば以下の、アレイ１０のコンピュータ１２間での通信についてのより詳細な考察に関して使用されることになる。図１を見ればわかるように、コンピュータ１２ｅなどの内側のコンピュータは、バス１６を介して直接通信可能な４つの他のコンピュータ１２を有することになる。以下の考察では、アレイ１０の縁部にあるコンピュータ１２は他のコンピュータ１２のうちの３つのみと直接通信し、または隅のコンピュータ１２の場合は他のコンピュータ１２のうちの２つのみと直接通信することになるという点を除いて、論じられる原理は、コンピュータ１２のすべてに適用される。
【００２８】
図２は、コンピュータ１２の一部のみを示し、特にコンピュータ１２ａから１２ｅを含む、図１の一部をより詳細に示す図である。図２を見ると、データバス１６がそれぞれ読み取りライン１８、書き込みライン２０、および複数（この例では１８）のデータライン２２を有することもわかる。データライン２２は、１つの１８ビット命令語のすべてのビットをほぼ同時に並列に転送することができる。本発明の一実施形態では、コンピュータ１２の一部は隣接するコンピュータのミラーイメージであることに留意されたい。しかしながら、コンピュータ１２がすべて同一に配向されるか、または隣接コンピュータのミラーイメージとして配向されるかどうかは、現在説明している実施形態の態様ではない。したがって、この実施形態についてより適切に説明するために、この潜在的に複雑な問題についてはこれ以上考察しない。
【００２９】
本実施形態によれば、コンピュータ１２ｅなどのコンピュータ１２は、１つ、２つ、３つ、または４つすべての隣接するコンピュータ１２からデータを受信する準備が整うように、その読み取りライン１８のうちの１つ、２つ、３つ、または４つすべてを、「ハイ」に設定することができる。同様に、コンピュータ１２は、その書き込みライン２０のうちの１つ、２つ、３つ、または４つすべてを、「ハイ」に設定することも可能である。
【００３０】
隣接するコンピュータ１２ａ、１２ｘ、１２ｃ、または１２ｄのうちの１つが、それ自体とコンピュータ１２ｅとの間の書き込みライン２０を「ハイ」に設定した場合、コンピュータ１２ｅがすでに対応する読み取りライン１８を「ハイ」に設定してあれば、関連するデータライン２２上で、そのコンピュータ１２ａ、１２ｘ、１２ｃ、または１２ｄからコンピュータ１２ｅへと語が転送される。次に、送信側コンピュータ１２は書き込みライン２０を解放し、受信側コンピュータ（この例では１２ｅ）は書き込みライン２０および読み取りライン１８の両方を「ロー」に引き下げる。後者のアクションによって、送信側コンピュータ１２はデータが受信されたことを確認することになる。上記の説明は、必ずしもイベントのシーケンスを順番に示すことを意図していないことに留意されたい。実際の実施では、受信側コンピュータは、送信側コンピュータ１２がその書き込みライン２０を解放する（「ハイ」に引き上げるのを停止する）わずか前に、書き込みライン２０を「ロー」に設定するように試行する可能性がある。こうした例では、送信側コンピュータ１２がその書き込みライン２０を解放するとすぐに、書き込みライン２０は受信側コンピュータ１２ｅによって「ロー」に引き下げられることになる。
【００３１】
この例では、プログラミングエラーの場合にのみ、１つのバス１６の両端にあるコンピュータ１２の両方が、それらの間の読み取りライン１８を「ハイ」に設定しようとする。両方のコンピュータが読み取るのはエラーではない。実際、これはデフォルト条件である。最終的に、一方が読み取りおよび書き込みをやめることになる。同様に、前述のように、単一のコンピュータ１２に、その４つの書き込みライン２０のうちの複数を「ハイ」に設定させることが望ましいであろうとは現時点では予想されない。しかしながら、現在では、コンピュータ１２のうちの１つが、対応する書き込みライン２０を「ハイ」に設定するために、選択されたコンピュータ１２のうちの第１のコンピュータからのデータを待つ、待機状態とすることができるように、異なる組み合わせの読み取りライン１８を「ハイ」に設定することが望ましい場合がある。
【００３２】
前述の例では、コンピュータ１２ｅは、隣接コンピュータ（コンピュータ１２ａ、１２ｘ、１２ｃ、または１２ｄのうちの１つまたは複数から選択される）がその書き込みライン２０を「ハイ」に設定する前に、その読み取りライン１８のうちの１つまたは複数を「ハイ」に設定するものとして説明された。しかしながら、このプロセスは、逆の順序で確実に実行することができる。たとえば、コンピュータ１２ｅがコンピュータ１２ａへの書き込みを試行している場合、次にコンピュータ１２ｅは、コンピュータ１２ｅとコンピュータ１２ａとの間の書き込みライン２０を「ハイ」に設定することになる。コンピュータ１２ｅとコンピュータ１２ａとの間の読み取りライン１８が、まだコンピュータ１２ａによって「ハイ」に設定されていない場合、コンピュータ１２ｅは、コンピュータ１２ａがその読み取りライン１８を「ハイ」に設定するまで、ただ単に待機することになる。その後、前述のように、書き込みライン２０および読み取りライン１８の対応するペアの両方が「ハイ」になると、転送されるのを待っているデータがデータライン２２上で転送される。その後、受信側コンピュータ１２（この例ではコンピュータ１２ａ）は、送信側コンピュータ１２ｅが書き込みライン２０を解放するとすぐに、２つのコンピュータ（この例では１２ｅおよび１２ａ）間の読み取りライン１８および書き込みライン２０の両方を、「ロー」に設定する。
【００３３】
コンピュータ１２ｅなどのコンピュータ１２が書き込みを予想してその書き込みライン２０のうちの１つを「ハイ」に設定すると必ず、コンピュータ１２は、データの送信先となるコンピュータ１２がすでにその読み取りライン１８を「ハイ」に設定していない限り（その場合、データが即時伝送される）、前述のように適切な隣接コンピュータ１２からデータが「要求される」まで、実質的に電力を使用せずに、単に待機することになる。同様に、コンピュータ１２は、読み取りを予想してその読み取りライン１８のうちの１つまたは複数を「ハイ」に設定すると必ず、２つのコンピュータ１２間で命令語を転送するために、選択されたコンピュータ１２に接続された書き込みライン２０が「ハイ」になるまで、実質的に電力を使用せずに、単に待機することになる。
【００３４】
前述のように、コンピュータ１２を前述のように機能させるためのいくつかの潜在的な手段および／または方法が存在する可能性がある。しかしながらこの例では、コンピュータ１２は、（説明された非同期的な方法で、それらの間でデータを転送することに加えて）一般的に非同期的に内部で動作するため、挙動はかなり単純である。すなわち、一般に命令は順次完了される。書き込みまたは読み取り命令のいずれかが発生した場合、その命令が完了されるまで（または、おそらくは別の方法として、「リセット」などによってアボートされるまで）、他のアクションはない可能性がある。従来技術的には、規則的なクロックパルスはない。むしろパルスは、（読み取りまたは書き込みタイプの命令は、しばしば他の実体による完了を必要とすることを考えると）実行されている命令が読み取りまたは書き込みのいずれのタイプの命令でもない場合、あるいは、読み取りまたは書き込みタイプの動作が実際に完了した場合にのみ、次の命令を実施するために生成される。
【００３５】
図３は、図１および２のコンピュータ１２のうちの１つの例の一般的レイアウトを示すブロック図である。図３を見ればわかるように、コンピュータ１２はそれぞれ、それ自体のＲＡＭ  ２４およびＲＯＭ  ２６を有する、一般的な内蔵型コンピュータである。前述のように、コンピュータ１２は、この例では単一のチップ上で組み合わされていることを考えると、個々の「ノード」と呼ばれることもある。
【００３６】
コンピュータ１２の他の基本構成要素は、リターンスタック２８（以下で論じるＲレジスタ２９を含む）、命令領域３０、演算論理ユニット（「ＡＬＵ」または「プロセッサ」）３２、データスタック３４、および命令を復号するための復号化論理セクション３６である。当業者であれば、一般に、この例のコンピュータ１２などのスタックベースコンピュータの動作に精通しているであろう。コンピュータ１２は、データスタック３４および別々のリターンスタック２８を有するデュアルスタックコンピュータである。
【００３７】
本発明のこの実施形態では、コンピュータ１２は、隣接コンピュータ１２と通信するための４つの通信ポート３８を有する。通信ポート３８は、オフステータス、受信ステータス（信号をコンピュータ１２内に至らせる場合）、および送信ステータス（信号をコンピュータ１２から送出する場合）を有する、トライステートドライバである。もちろん、コンピュータ１２ｅの例などのように特定のコンピュータ１２がアレイの内側にない場合（図１）、通信ポート３８のうちの１つまたは複数は、少なくとも前述の目的ではその特定コンピュータでは使用されない。しかしながら、ダイ１４の縁部に隣接するそれらの通信ポート３８は、こうした通信ポート３８を外部Ｉ／Ｏポート３９（図１）として動作させるために、こうしたコンピュータ１２の内部に、またはコンピュータ１２の外部であるが関連付けられる、いずれかで設計された追加の回路を有することができる。こうした外部Ｉ／Ｏポート３９の例には、ＵＳＢ（ユニバーサルシリアルバス）ポート、ＲＳ２３２シリアルバスポート、パラレル通信ポート、アナログデジタルおよび／またはデジタルアナログ変換ポート、ならびに多くの他の可能な変形が含まれるが、これらに限定されない。この目的でどのタイプの追加または修正回路が使用されるかにかかわらず、本発明の現在説明している実施形態によれば、受信された命令および／またはデータの処理に関する「外部」Ｉ／Ｏポート３９の動作方法は、「内部」通信ポート３８に関して本明細書で説明する方法と同様である。図１で、「エッジ」コンピュータ１２ｆは、外部Ｉ／Ｏポート３９を介して外部デバイス８２と通信するために関連付けられた（ブロックの形式で示された）インターフェース回路８０と共に示される。
【００３８】
現在説明している実施形態では、命令領域３０は、この例ではＡレジスタ４０ａ、Ｂレジスタ４０ｂ、およびＰレジスタ４０ｃを含む、いくつかのレジスタ４０を含む。この例では、Ａレジスタ４０ａは１８ビットのフルレジスタであるが、Ｂレジスタ４０ｂおよびＰレジスタ４０ｃは９ビットレジスタである。
【００３９】
本発明はこの例に限定されるものではないが、このコンピュータ１２は、ネイティブ第４世代言語命令を実行するために実施される。第４世代コンピュータ言語に精通していればわかるように、第４世代「語」として知られる複雑な第４世代命令は、コンピュータ内に設計されたネイティブプロセッサ命令から構築される。第４世代語の集まりは、「ディクショナリ」として知られる。他の言語では、これは「ライブラリ」として知られる場合がある。以下でより詳細に説明するように、コンピュータ１２は１８ビットを、ＲＡＭ  ２４、ＲＯＭ  ２６から、またはデータバス１６（図２）のうちの１つから直接、同時に読み取る。しかしながら、第４世代ではほとんどの命令（オペランドなし命令として知られている）がそれらのオペランドをスタック２８および３４から直接取得するため、それらの長さは一般に５ビットのみであり、結果として、グループ内の最後の命令が、３ビットのみを必要とする制限付きの命令セットから選択されるとの条件で、４つまでの命令を単一の１８ビット命令語に含めることができる。（説明される実施形態では、最終位置にある命令内の２つの最下位ビットは「００」であるものと想定される。）また、図３にブロック図の形で示されるのは、スロットシーケンサ４２である。
【００４０】
本発明のこの実施形態では、データスタック３４は、ＡＬＵ  ３２によって操作されることになるパラメータの後入れ先出しスタックであり、リターンスタック２８は、ＣＡＬＬおよびＲＥＴＵＲＮ命令によって使用されるネストされたリターンアドレスの後入れ先出しスタックである。リターンスタック２８は、以下である程度詳細に論じるように、ＰＵＳＨ、ＰＯＰ、およびＮＥＳＴ命令によっても使用される。データスタック３４およびリターンスタック２８は、多くの従来技術コンピュータの場合のように、スタックポインタによってアクセスされるメモリ内のアレイではない。むしろ、スタック３４および２８はレジスタのアレイである。データスタック３４内の上位２つのレジスタは、Ｔレジスタ４４およびＳレジスタ４６である。データスタック３４の残りの部分は、この例ではＳ2からＳ9の番号が付けられた８つの追加ハードウェアレジスタを内部に有する、循環的なレジスタアレイ３４ａを有する。循環的なレジスタアレイ３４ａ内の８つのレジスタのうちの１つが、何時でもＳレジスタ４６の下部レジスタとして選択されることになる。Ｓレジスタの下になるスタックレジスタを選択するシフトレジスタ内の値は、ソフトウェアによって読み取りまたは書き込みすることはできない。同様に、リターンスタック２８内の上位は、専用Ｒレジスタ２９であるが、リターンスタック２８の残りの部分は、この例ではＲ1からＲ11の番号が付けられた８つの追加ハードウェアレジスタを内部に有する（具体的には図示せず）、循環的なレジスタアレイ２８ａを有する。
【００４１】
本発明のこの実施形態では、スタックのオーバフローまたはアンダフロー条件のハードウェア検出はない。一般に、従来技術のプロセッサは、スタックポインタがスタックに割り振られたメモリの範囲を外れた場合、エラー条件にフラグが立てられるように、スタックポインタおよびメモリ管理などを使用する。これは、スタックがメモリ内に配置された場合、オーバフローまたはアンダフローは、スタックの一部になることが意図されていない何かを上書きするか、またはスタックアイテムとして使用することになるからである。しかしながら本実施形態は、循環的なアレイ２８ａおよび３４ａをスタック２８および３４の下部に有するため、スタック２８および３４はスタック領域を外れてオーバフローまたはアンダフローすることはできない。その代わりに、循環的なアレイ２８ａおよび３４ａは、単に循環的なアレイのレジスタを循環することになる。スタック２８および３４は深さが有限であるため、スタック２８または３４の上部に何かをプッシュすることは、下部の何かが上書きされることを意味する。１０を超えるアイテムをデータスタック３４にプッシュすること、または１３を超えるアイテムをリターンスタック２８にプッシュすることは、そのように実行すると結果としてスタック２８または３４の下部のアイテムが上書きされるということを認識した上で実行しなければならない。スタック２８および３４上のアイテム数を追跡し続けること、ならびに、スタック２８および３４それぞれが保持できる以上のアイテムを置かないようにすることは、ソフトウェアの責務である。ハードウェアは、スタック下部のアイテムの上書きを検出すること、またはこれにエラーとしてフラグを立てることは、実行しない。しかしながら、ソフトウェアは、スタック２８および３４の下部の循環的なアレイ２８ａおよび３４ａをいくつかの方法で活用できることに留意されたい。単なる一例として、ソフトウェアは、いつでもスタック２８または３４が「空」であることを単に想定することができる。スタックが充填されると失われることになる下部方向に古いアイテムがプッシュされる際に、スタックからこれらを消去する必要はない。したがって、スタックが空であることを想定するためのプログラムに関して、初期化することは何もない。
【００４２】
本明細書で前述したレジスタに加えて、命令領域３０は、現在使用されている命令語４８を格納するための１８ビットの命令レジスタ３０ａ、および、現在実行されている特定命令内の命令に関する追加の５ビットのオペレーションコード（ｏｐｃｏｄｅ）バス３０ｂを有する。
【００４３】
図４は、命令語４８を示す概略図である。（命令語４８は、命令、データ、またはそれらの何らかの組み合わせを実際に含み得ることに留意されたい。）命令語４８は、１８のビット５０からなる。これは２進コンピュータであり、ビット５０はそれぞれ「１」または「０」となる。前述のように、１８ビット幅の命令語４８は、スロット０  ５４ａ、スロット１  ５４ｂ、スロット２  ５４ｃ、およびスロット３  ５４ｄと呼ばれる４つのスロット５４内に、最大で４つの命令５２を含むことができる。本発明のこの実施形態では、１８ビットの命令語４８は常に全体として読み取られる。したがって、命令語４８内には常に最大で４つの命令を有する可能性があるため、使用可能なスロット５４のすべてを使用することが不要であるかまたはさらには望ましくないときのインスタンスを与えるために、ノーオペレーション（オペレーションなし）命令がコンピュータ１２の命令セット内に含められる。本発明の特定の一実施形態によれば、交互スロット（具体的に言えば、スロット１  ５４ｂおよびスロット３  ５４ｄ）内のビット５０の極性（アクティブ「ロー」に対するアクティブ「ハイ」）が反転される。しかしながら、これは現在説明している実施形態の必要な態様ではないため、この実施形態についてより適切に説明するために、この潜在的に複雑な問題については以下では考察しない。
【００４４】
図５は、図３のスロットシーケンサ４２を示す概略図である。図５を見ればわかるように、スロットシーケンサ４２は、環に配置構成された複数（この例では１４）のインバータ５６および１つのＮＡＮＤゲート５８を有するため、結果として信号は、１４個のインバータ５６とＮＡＮＤゲート５８とを通過する間に奇数回反転される。ＯＲゲート６０への２つの入力のうちのいずれかが「ハイ」になると、信号がスロットシーケンサ４２内で開始される。第１のＯＲゲート入力６２は、実行中の命令５２のビットｉ４  ６６（図４）から導出される。ビットｉ４が「ハイ」の場合、その特定の命令５２はＡＬＵ命令であり、ｉ４ビット６６は「１」である。ｉ４ビットが「１」の場合、第１のＯＲゲート入力６２は「ハイ」であり、次の命令５２を実行させることになるパルスを開始するために、スロットシーケンサ４２がトリガされる。
【００４５】
第１のＯＲゲート入力６２が「ハイ」になること、または第２のＯＲゲート入力６４が「ハイ」になること（以下で考察される）のいずれかによって、スロットシーケンサ４２がトリガされた場合、信号はスロットシーケンサ４２を２周し、１周ごとにスロットシーケンサ出力６８で出力を生成する。信号はスロットシーケンサ出力６８を最初に通過すると「ロー」になり、スロットシーケンサ出力６８の２回目の出力は「ハイ」になる。スロットシーケンサ出力６８からの比較的幅広い出力は、出力として狭いタイミングパルスを生成するパルス生成器７０（ブロックの形で図示）に提供される。当業者であれば、コンピュータ１２のオペレーションを正確に開始するためには狭いタイミングパルスが望ましいことを理解されよう。
【００４６】
実行されている特定の命令５２が読み取りまたは書き込み命令である場合、あるいは、実行されている命令５２がシーケンス内で次の命令５２の即時実行をトリガすることが望ましくない任意の他の命令である場合、ｉ４ビット６６は「０」（「ロー」）であるため、第１のＯＲゲート入力６２も「ロー」である。当業者であれば、コンピュータ１２などのデバイス内のイベントのタイミングが一般に非常にクリティカルであり、これが例外でないことを理解されよう。スロットシーケンサ４２の検査時に、当業者であれば、当該環の第２周目を開始するために信号がＮＡＮＤゲート５８を通って循環した後まで、ＯＲゲート６０からの出力が「ハイ」のままでなければならないことを理解されよう。その後、望ましくない回路の発振が続くのを防ぐために、ＯＲゲート６０からの出力は第２周目中に「ロー」になる。
【００４７】
上記の考察に照らして理解されるように、ｉ４ビット６６が「０」の場合、以下で論じる第２のＯＲゲート入力６６が「ハイ」でないことを想定して、スロットシーケンサ４２はトリガされない。
【００４８】
前述のように、各命令５２のｉ４ビット６６は、その命令が入力または出力を必要としないものであるのとは対照的に、その命令が読み取りまたは書き込みタイプの命令か否かに従って設定される。命令５２内の残りのビット５０は、その命令に関する特定のオペレーションコードの残りを提供する。読み取りまたは書き込みタイプの命令の場合、ビットのうちの１つまたは複数を使用して、その特定コンピュータ１２内のどこからデータが読み取られるか、またはどこへ書き込まれるかを示すことができる。本発明のこの例では、書き込まれるデータは常にＴレジスタ４４（データスタック３４の上部）から出されるが、データは、それを実行できるところからＴレジスタ４４または命令領域３０のいずれかに選択的に読み込むことができる。これは、本発明のこの特定の実施形態では、データまたは命令のいずれかを本明細書で説明した方式で通信することが可能であり、したがって、命令をデータバス１６から直接実行できるためである。
【００４９】
ポート３８のうちのどれかを読み取りまたは書き込み用に設定すべき場合にそれがポート３８のうちのどれであるかを示すのに、ビット５０のうちの１つまたは複数が使用される。この後者のオペレーションは、１つまたは複数のビットを使用して、Ａレジスタ４０ａ、Ｂレジスタ４０ｂなどの、レジスタ４０を指定することによって、任意に実施される。こうした例では、指定されたレジスタ４０は、ポート３８（および、メモリ（ＲＡＭ  ２４またはＲＯＭ  ２６）、外部通信ポート３９、などの、コンピュータ１２が通信を試みている可能性のある任意の他の潜在的な実体）のそれぞれに対応するビットを有するデータと共に事前にロードされることになる。たとえば、特定レジスタ４０内の４つのビットそれぞれが、上ポート３８ａ、右ポート３８ｂ、左ポート３８ｃ、または下ポート３８ｄのそれぞれに対応することができる。それらのビット位置のいずれかに「１」がある、こうしたケースでは、通信は対応するポート３８を通って進行するように設定されることになる。本明細書で前述したように、本発明のこの実施形態では、読み取りオペレーションコードが単一命令で通信用の複数のポート３８を設定する可能性があることは予想されるが、書き込みオペレーションコードが単一命令で通信用の複数のポート３８を設定することは、可能ではあるが予想されない。
【００５０】
次の例では、コンピュータ１２ｅがコンピュータ１２ｃへの書き込みを試行している通信を想定するが、この例は、任意の隣接するコンピュータ１２の間での通信に適用可能である。書き込み命令が書き込み側コンピュータ１２ｅで実行される場合、選択された書き込みライン２０（この例では、コンピュータ１２ｅと１２ｃの間の書き込みライン２０）が「ハイ」に設定され、対応する読み取りライン１８がすでに「ハイ」である場合、データは、選択された場所から選択された通信ポート３８を介して即時に送信される。あるいは、対応する読み取りライン１８がまだ「ハイ」でない場合、コンピュータ１２ｅは、対応する読み取りライン１８が「ハイ」になるまで単に動作を停止することになる。読み取りまたは書き込みタイプの命令がある場合の、コンピュータ１２ａの停止（またはより正確には、それ以上の動作を実行可能にしないこと）のための機構については、本明細書で前述している。手短に言えば、命令５２のオペレーションコードは、ビット位置ｉ４  ６６で「０」を有することになるため、ＯＲゲート６０の第１のＯＲゲート入力６２は「ロー」であり、スロットシーケンサ４２は実行可能パルスを生成するようにトリガされない。
【００５１】
読み取りまたは書き込みタイプ命令が完了した場合にコンピュータ１２ｅの動作が再開される方法に関して、そのための機構は以下のとおりである。コンピュータ１２ｅと１２ｃとの間の読み取りライン１８および対応する書き込みライン２０の両方が「ハイ」の場合、両方のライン１８および２０は、これを「ハイ」で保持している各コンピュータ１２のそれぞれによって解放されることになる。（この例では、送信側コンピュータ１２ｅは書き込みライン２０を「ハイ」で保持し、受信側コンピュータ１２ｃは読み取りライン１８を「ハイ」で保持することになる。）次に、受信側コンピュータ１２ｃは両方のライン１８および２０を「ロー」にする。実際には、受信側コンピュータ１２ｃは、送信側コンピュータ１２ｅが書き込みライン２０を解放する前に、ライン１８および２０を「ロー」にするよう試みるかもしれない。しかしながら、ライン１８および２０は「ハイ」に引き上げられ、「ロー」で弱く保持（ラッチ）されるのみであるため、ライン１８または２０を「ロー」に引き下げようとするいかなる試みも、ライン１８または２０が、これを「ハイ」で保持しているコンピュータ１２によって解放されるまでは、実際には成功しないことになる。
【００５２】
データバス１６内のライン１８および２０の両方が「ロー」に引き下げられた場合、これは「肯定応答」条件である。コンピュータ１２ｅおよび１２ｃのそれぞれは、「肯定応答」条件で、それ自体の内部肯定応答ライン７２を「ハイ」に設定することになる。図５を見ればわかるように、肯定応答ライン７２は第２のＯＲゲート入力６４を提供する。ＯＲゲート６０の入力６２または６４のいずれかへの入力により、ＯＲゲート６０の出力が「ハイ」になり、これによって、本明細書で前述した方式で、スロットシーケンサ４２の動作が開始され、その結果、命令語４８の次のスロット５４内の命令５２が実行されることになる。肯定応答ライン７２は、スプリアスアドレスがアドレスバスに到達するのを防ぐために、次の命令５２が復号されるまで「ハイ」のままである。
【００５３】
実行されている命令５２が命令語４８のスロット３の位置にあるいずれの場合も、もちろん、ビットｉ４  ６６が「０」でない限り、または、以下でより詳細に説明する、スロット３内の命令が「次の」命令でない限り、コンピュータ１２は、待機している次の１８ビット命令語４８をフェッチすることになる。
【００５４】
実際には、本発明の機構は、命令語４８内のすべての命令５２の実行が終わる前にフェッチが開始できるように、命令を「プリフェッチ」するための方法および装置を含む。しかしながら、これも、現在説明している実施形態の不可欠な態様ではない。
【００５５】
以上、コンピュータ１２ｅがコンピュータ１２ｃに書き込んでいる例について、詳細に説明してきた。上記の考察に照らして理解されるように、最初にコンピュータ１２ｅがコンピュータ１２ｃへの書き込みを試行するか、最初にコンピュータ１２ｃがコンピュータ１２ｅからの読み取りを試行するかにかかわらず、本質的に動作は同じである。この動作は、コンピュータ１２ｅおよび１２ｃの両方の準備が整うまで完了不可能であり、コンピュータ１２ｅまたは１２ｃのどちらが最初に準備が整ったとしても、コンピュータ１２ｅまたは１２ｃの他方が転送を完了するまで、単に「スリープ状態になる」。前述のプロセスについて別の考え方をすれば、実際には、書き込み側コンピュータ１２ｅおよび受信側コンピュータ１２ｃの両方が、それぞれ書き込みおよび読み取り命令を実行する場合にスリープ状態になるが、後からトランザクションに入った方が、読み取りライン１８および書き込みライン２０の両方が「ハイ」になるとほぼ同時に覚醒するのに対して、トランザクションを開始する第１のコンピュータ１２は、第２のコンピュータ１２がプロセスを完了する準備が整うまで、ほぼ無期限にスリープ状態のままでいることが可能である。
【００５６】
本発明者は、デバイス間で効率的な非同期通信を可能にするための主要な機能は、ある種の肯定応答信号または条件であると考える。従来技術では、デバイス間のほとんどの通信はクロック同期されており、送信側デバイスにとって受信側デバイスが適切にデータを受信したことを知る直接の方法はない。チェックサム動作などの方法を使用して、データが正しく受信されるよう保証しようとする試みも可能であったが、送信側デバイスには動作が完了された旨の直接の表示がない。本明細書に記載されるように、本発明の方法は、デバイス間の非同期通信を可能にするかまたは少なくとも現実的にする、必要な肯定応答条件を提供する。さらにこの肯定応答条件は、肯定応答条件が発生するまで、１つまたは複数のデバイスを「スリープ状態にする」ことも可能にする。もちろん肯定応答条件は、（相互接続データバス１６または別の信号ラインを介して）コンピュータ１２間で別の信号を送信することによって、コンピュータ１２の間で通信することが可能であり、こうした肯定応答信号は本発明のこの態様の範囲内となる。しかしながら、本明細書に記載された本発明の実施形態によれば、肯定応答のための方法は、実際に通信を実行するために、いかなる追加の信号、クロックサイクル、タイミングパルス、または記載された以上の任意のこうしたリソースも必要としないという点において、ここではさらに節約が関係することが理解されよう。
【００５７】
４つの命令５２を命令語４８に含めることが可能であるため、および、本実施形態によれば、命令語４８全体をコンピュータ１２間で一度に通信することが可能であるため、１つの動作で非常に小さなプログラムを伝送するための理想的な機会が提示される。たとえば、小規模な「Ｆｏｒ／Ｎｅｘｔ」ループのほとんどが、単一の命令語４８内で実施可能である。図６は、マイクロループ１００を示す概略図である。マイクロループ１００は、他の従来技術のループと同様に、ＦＯＲ命令１０２およびＮＥＸＴ命令１０４を有する。命令語４８（図４）は最大で４つの命令５２を含むため、命令語４８は単一の命令語４８内に３つのオペレーション命令１０６を含むことができる。オペレーション命令１０６は、実質的に、プログラマがマイクロループ１００に含めることを望む任意の使用可能命令とすることができる。１つのコンピュータ１２から他のコンピュータ１２へと伝送可能なマイクロループ１００の典型的な例は、第１のコンピュータ１２が使用可能なＲＡＭ  ２４の容量を「借りる」ことができるように、第２のコンピュータ１２のＲＡＭ  ２４から読み取るため、またはこれに書き込むための、命令セットとすることができる。
【００５８】
ＦＯＲ命令１０２は、所望の反復数を表す値を、リターンスタック２８上にプッシュする。すなわち、データスタック３４上部のＴレジスタ４４上の値が、リターンスタック２８のＲレジスタ２９にＰＵＳＨされる。ＦＯＲ命令１０２は、しばしば命令語４８のスロット３  ５４ｄ内に配置されるが、実際は、任意のスロット５４内に配置することができる。ＦＯＲ命令１０２がスロット３  ５４ｄ内に配置されない場合、その命令語４８内の残りの命令５２は、マイクロループ１００に向かう前に実行されることになり、通常、次にロードされる命令語４８となる。
【００５９】
本発明の現在説明している実施形態によれば、図６に示されたＮＥＸＴ命令１０４は、特定タイプのＮＥＸＴ命令１０４である。これは、スロット３  ５４ｄ（図４）内に配置されるためである。本発明のこの実施形態によれば、「通常の」ＮＥＸＴ命令（図示せず）に従った特定命令語４０内のすべてのデータがアドレス（ｆｏｒ／ｎｅｘｔループが開始される場所のアドレス）であることが想定される。ＮＥＸＴ命令１０４のオペレーションコードは、４つのスロット５４のうちのどこにあろうとも（本明細書で前述したように明示的に書き込まれているのではなく、スロット３  ５４ｄである場合、最初の２桁が想定されるということは明らかな例外として）同じである。しかしながら、スロット３  ５４ｄ内にある場合、ＮＥＸＴ命令１０４に続くアドレスデータがない可能性があるため、スロット３  ５４ｄ内のＮＥＸＴ命令１０４がＭＩＣＲＯ−ＮＥＸＴ命令１０４ａであることも想定できる。ＵＮＥＸＴオペレーションコードはＮＥＸＴオペレーションとは異なる。これはいずれのスロット内でも可能である。ＭＩＣＲＯ−ＮＥＸＴ命令１０４ａは、それが配置された同じ命令語４８のスロット０  ５４ａ内に配置された第１の命令５２のアドレスを、戻り先のアドレスとして使用する。ＭＩＣＲＯ−ＮＥＸＴ命令１０４ａも、（ＦＯＲ命令１０２によって最初はそこにＰＵＳＨされた）Ｒレジスタ２９からの値を取り、これを１だけ減分した後、それをＲレジスタ２９に戻す。Ｒレジスタ２９上の値が所定の値（ゼロなど）に達すると、ＭＩＣＲＯ−ＮＥＸＴ命令は次の命令語４８をロードし、本明細書で前述したように続行する。しかしながら、ＭＩＣＲＯ−ＮＥＸＴ命令１０４ａは、Ｒレジスタ２９から所定の値よりも大きな値を読み取った場合、それ独自の命令語４８のスロット０  ５４ａでオペレーションを再開し、そのスロット０から３の間に配置された３つの命令５２を実行することになる。すなわち、本発明のこの実施形態では、ＭＩＣＲＯ−ＮＥＸＴ命令１０４ａは、常に、３つのオペレーション命令１０６を実行することになる。いくつかのインスタンスでは、３つの潜在的に使用可能な命令５２のすべてを使用することが望ましくない場合があるため、「ノーオペレーション」命令を使用してスロット５４のうちの１つまたは２つを必要に応じて埋めることができる。
【００６０】
単一のコンピュータ１２内でマイクロループ１００の全体を使用できることに留意されたい。実際、使用可能な機械言語命令の全セットが、オペレーション命令１０６として使用するために利用可能であり、マイクロループの適用例および用途は、プログラマの想像力によってのみ限定される。しかしながら、単一の命令語４８内でマイクロループ１００全体を実行するための機能が、コンピュータ１２が命令語４８を隣接するコンピュータ１２に送信し、そこで実質的にはデータバス１６から直接、命令５２を実行できるようにするための機能と組み合わされた場合、コンピュータ１２がその隣接コンピュータのリソースを利用できるようにするための強力なツールが提供される。
【００６１】
単一のデータ語４８内にすべてが含まれた小規模なマイクロループ１００は、本明細書に記載されるようにコンピュータ１２間で通信可能であり、本明細書に記載されるように、命令語４８に含まれる命令の任意の他のセットとまったく同様に、受信側コンピュータ１２の通信ポート３８から直接実行することができる。この種の「マイクロループ」１００の使い方は多数あるが、典型的な使い方は、１つのコンピュータ１２がいくつかのデータを隣接コンピュータ１２のメモリ上に格納したい場合であろう。たとえばこれは、最初に、特定のメモリアドレスに入ってくるデータ語を格納し、次にそのアドレスを増分し、次に所与の回数（伝送されるデータ語の数）だけ繰り返すようにとの命令を、その隣接コンピュータに送信することができる。データを再度読み取るために、第１のコンピュータは、第２のコンピュータ（ここでは格納に使用されたコンピュータ）に、同様のマイクロループを使用して、格納されたデータを第１のコンピュータに書き込むようにと指示するだけである。
【００６２】
このマイクロループ１００の構造を、本明細書に記載された直接実行の態様と共に使用することによって、コンピュータ１２は、データ格納の必要性が、個々のコンピュータ１２のそれぞれに組み込まれた比較的小さな容量を超える場合、超過したデータを格納するために、休眠中の隣接コンピュータ１２を他の方法で使用することができる。この例について、これまではデータストレージに関して説明してきたが、何らかのオペレーションを実行し、結果を格納し、所与の回数だけ反復するように、他のコンピュータ１２に実行させるマイクロループ１００を作成することによって、コンピュータ１２がその隣接コンピュータにそのコンピューティングリソースを共有させることができるようにするために、同じ技法を等しく使用することができる。本発明のマイクロループ１００構造が使用可能な方法の数は、ほぼ無限であることが理解されよう。
【００６３】
本明細書で前述したように、本発明の現在説明している実施形態では、データまたは命令のいずれかを本明細書に記載された方式で通信可能であるため、命令は、実質的にはデータバス１６から直接実行することができる。すなわち、命令をＲＡＭ  ２４に格納し、その後、実行前にそれらを再度呼び出す必要がない。その代わりに、この実施形態では、通信ポート３８で受信された命令語４８が、ＲＡＭ  ２４またはＲＯＭ  ２６から再度呼び出される場合と実質的に異ならないように取り扱われる。この相違点がないことは、コンピュータ１２の動作の説明に関する本明細書の前の考察で明らかにされているが、命令語４８がフェッチされ使用される方法についての以下のより具体的な考察によって、この実施形態がより理解しやすくなるであろう。
【００６４】
使用可能な機械言語命令の１つが、ＦＥＴＣＨ命令である。ＦＥＴＣＨ命令は、Ａレジスタ４０ａ上のアドレスを使用して、１８ビット語をどこからフェッチするかを決定する。もちろんこのプログラムは、正しいアドレスをすでにＡレジスタ４０ａ上に配置していなければならない。本明細書で前述したように、Ａレジスタ４０ａは１８ビットレジスタであり、結果として、フェッチの実行元とすることができる潜在的なソースを区別することができる、十分な範囲の使用可能なアドレスデータが存在する。すなわち、ＲＯＭに割り当てられたある範囲のアドレス、ＲＡＭに割り当てられた異なる範囲のアドレス、ならびに、ポート３８のそれぞれおよび外部Ｉ／Ｏポート３９用の特定アドレスが存在する。ＦＥＴＣＨ命令は、それがフェッチする１８ビットを常時Ｔレジスタ４４上に配置する。
【００６５】
これに対して、本明細書で前述したように、実行可能命令は（データとは対照的に）命令レジスタ３０ａ内に一時的に格納される。１８ビット命令語４８を命令レジスタ３０ａに「フェッチ」するための、特定のコマンドはない。その代わりに、命令レジスタ３０ａ内に実行可能命令が残っていない場合、コンピュータは自動的に「次」の命令語４８をフェッチする。「次」の命令語が配置されている場所は、「プログラムカウンタ」（Ｐレジスタ４０ｃ）によって決定される。Ｐレジスタ４０ｃは、一連の命令語４８がＲＡＭ  ２４またはＲＯＭ  ２６からフェッチされる場合と同様に、しばしば自動的に増分される。しかしながら、この一般的な規則にはいくつかの例外がある。たとえばＪＵＭＰまたはＣＡＬＬ命令は、ＪＵＭＰまたはＣＡＬＬ命令の後に、増分するのではなく、現在ロードされている命令語４８の残り部分にあるデータによって指定されたアドレスを、Ｐレジスタ４０ｃにロードすることになる。Ｐレジスタ４０ｃにポート３８のうちの１つまたは複数に対応するアドレスがロードされた場合、次の命令語４８が、ポート３８から命令レジスタ３０ａにロードされることになる。命令語４８がポート３８から命令レジスタ３０ａに取り出された直後には、Ｐレジスタ４０ｃも増分されない。むしろ、Ｐレジスタ４０ｃを変更するために特定のＪＵＭＰまたはＣＡＬＬ命令が実行されるまで、同じポートアドレスが保持されたままとなる。すなわち、コンピュータ１２は、ポート３８からのその次の命令を探すように指示されると、メモリ（ＲＡＭ  ２４またはＲＯＭ  ２６）に戻るなど、どこか他の場所を探すように指示されるまで、その次の命令語４８に関してその同じポート３８（または複数のポート３８）からの命令を探し続けることになる。ジャンプはＰレジスタをロードしない。ジャンプは、それらのアドレスをアドレスバス上に置き、命令が完了すると増分されてＰレジスタに格納される。
【００６６】
前述のように、コンピュータ１２は、現在の命令語４８内に実行可能命令が残っていない場合、次にフェッチされる１８ビットが命令レジスタ３０ａ内に配置されることがわかっている。定義上、ＪＵＭＰまたはＣＡＬＬ命令に続く１８ビット命令語の残りの部分は、ＪＵＭＰまたはＣＡＬＬ命令によって参照されるアドレス専用であるため、デフォルトでは、ＪＵＭＰまたはＣＡＬＬ命令の後（または、本明細書では具体的に考察しないある種の他の命令の後も）、現在の命令語４８内には何の実行可能命令も残らない。これを説明する他の方法は、前述のプロセスが多くの場合固有であることであり、これにはＪＵＭＰまたはＣＡＬＬ命令がメモリアドレスにだけではなく、オプションでポート３８になどとすることができるという事実を含むが、これに限定されるものではない。
【００６７】
本明細書で前述したように、コンピュータ１２は、その次の命令を１つのポート３８から、またはポート３８のグループのいずれかから探すことができることを想起されたい。したがってアドレスは、ポート３８の様々な組み合わせに対応するように提供される。たとえばコンピュータは、ポート３８のグループから命令をフェッチするように指示された場合、選択されたポート３８のいずれかから最初に使用可能な命令語４８を受け入れる。それらのポート３８のいずれかにすでに書き込みを試行した隣接コンピュータ１２がない場合、上記で詳細に説明したように、当該のコンピュータ１２は、隣接コンピュータが選択されたポート３８に書き込むまで「スリープ状態になる」。
【００６８】
こうしたコンピュータの場合、チップ１０上の個々のコンピュータ１２にデータをロードすることが望ましい。これは、こうしたアレイ内の個々のアドレスに要件がない場合、データを個々のコンピュータにアドレス指定することでは容易に実行されない。同様に、命令を個々のコンピュータ１２にロードして実行することが望ましい。これらの目的を実施するための１つの方法が提案されており、本明細書ではクローラと呼ばれる。この方法を検討することにより、当分野で平均的な技術を備えた人物であれば、いくつかの同様の方法を思いつくであろう。示されたクローラは、この方法をどのように実施するかの単なる例であり、本発明がその特定の特徴に限定されることを意味することを意図するものではない。たとえばその特徴は、マシンフォースオブジェクトコードの状況で説明されるが、その言語に限定されるものではない。この説明でマシンフォースを使用する理由は、発明者らがこの実施を開発したためだけではなく、これが標準のオブジェクトコードよりもかなりわかりやすく、動作を明確に教示するためでもある。この発明は、従来のオブジェクトコードでも動作可能である。この例が、特定コンピュータ上で命令を実行するように示されているのに加えて、この方法が、複数のコンピュータを含む任意のコンピュータに任意のデータまたは命令をロードするために使用できることも理解されたい。
【００６９】
図７は、この場合は１２である所望のコンピュータに、データまたは命令をロードするためのマシンフォースでの方法を示す。この方法は、クローラ２０１と呼ばれる。クローラ２０１は、ノードからノード（コンピュータ１２）へと移動する。クローラ２０１は各ノードでメモリにロードされ、コンピュータ１２を移動する際にサイズは小さくならない。代替のクローラは、ローディングなしにコンピュータ１２を直接移動することが可能であり、可変長とすることができる。クローラを作成するプログラマは、方向を指定することによって、どのコンピュータに実行またはロードさせるかを選択することができる。クローラ２０１は、コンピュータ１２ｄでストレステストを実行する。
【００７０】
図７に示されたクローラ２０１では、第１の語が、数値を１０進で解釈させ、アドレス４５で開始させる。第２の語は、オペレーションの名前をｃｒａｗｌとして宣言し、データスタック３４（ｔ）を方向として、およびリターンスタック（ｒ）２８を次のルートとして指定する。第３の語「ｂ！」は、クローラが入力する６３によって指定されたポート３９（図１）を指示し、６３はＲＡＭ  ２４（図３）に配置され、「＠ｐ＋」はリテラルとして６３をフェッチするためにこのスロットに配置される。ＰＵＳＨ命令は、続くＮＥＸＴ命令のコンテキストとして、ＲＡＭ  ２４のサイズよりも１つ少なくプッシュする。第４の語は、プログラムカウンタが指示している語をデータスタック３４上にコピーする。このケースで、プログラムカウンタは、リテラルとして取り扱われる「ｄｕｐ  ｘｏｒ  ａ！」を指示している。このアクションにより、ターゲットノード内のレジスタが明らかになる。第５の語は、命令語の２つのコピーを作成し、これを隣接ポートに２回送信する。第１の命令語は隣接ポートを覚醒させ、隣接ポートが４ポート読み取りモードになると破棄されるため、語の発生元を決定することはできない。２回目の語が送信されると、隣接ポートは発生元を決定し、どちらか命令が送信された方の実行を開始するために、ポートにジャンプすることができる。「ｄｕｐ  ｘｏｒ」命令は、スタックの上部アイテムを０に置き換える。クローラはソースノードおよび宛先ノードの両方のリソースをすべて使用できるため、以前のスタックコンテンツはいずれも重要でないことに留意されたい。第６の語は「＠ｐ＋」命令をＡレジスタ内に配置する。「＠ｐ＋」命令は、このノードが制御することになる命令ストリームの一部として次の２つの語を隣接に供給するための準備として、これらの語をスタックする。この命令がポートによって実行された場合、隣接はＲＡＭ  ２４のすべてを修正することができる。「！ａ＋．．．」を伴う第１の「＠ｐ＋」は、ポートからリテラルをフェッチし、これをＲＡＭ  ２４に格納してＲＡＭポインタを前進させ、第２の「ｐｕｓｈ：」は受信したアドレスでの実行を隣接に開始させる。次にｂｅｇｉｎ／ｎｅｘｔ命令は、第２の語の命令６３から６４回ループする。ループは、ＲＡＭ  ２４内のそれぞれおよびあらゆるアイテムを、隣接のＲＡＭ  ２４内の対応する位置にコピーする。ループ後の第１の命令は、隣接ノードに次の入力をリテラルとして使用するようにとのコマンドを出し、ノードのリターンアドレスは隣接に送信され、隣接のリターンスタック２８に配置される。この時点で、両方のノードは同一のＲＡＭ  ２４コンテンツを含む。隣接がリターンスタック２８上のアドレスから続行する場合、オリジナルノードが停止した地点から再開する。Ｃｏｌｄ命令はノードを４ポート読み取りステータスに戻し、「−；」命令は呼び出しをジャンプに変化させ、結果として、プログラムカウンタアドレスがリターンスタック上に残らず、スロットを占めることはない。図示されたプログラムはＲ、Ｌ、Ｕ、Ｄ命令を、右、左、上、および下として定義し、代替方法では、たとえば北、南、東、および西を使用することができる。あるいは、システムは、相対アドレスではな���絶対アドレスによって、特定のノードにアドレス指定することができる。図示されたようなクローラ２０１はＲＡＭ  ２４内の最後の１９の語を占める。
【００７１】
図１に戻ると、クローラ２０１のパス２０２が示されている。クローラ２０１はコンピュータ１２ｆで始まり、コンピュータ１２ｂへと下に移動した後、コンピュータ１２ｃへと右へ、コンピュータ１２ｇへと上へ、コンピュータ１２ａへと右へ、コンピュータ１２ｅへと下へ、その後コンピュータ１２ｄへと下へ移動し、ここでストレステストが実施される。これにより、桁上げエラー（ｃａｒｒｙ  ｅｒｒｏｒ）なしにコンピュータ１２ｄが「＄ＦＦＦ」を「＄１」に加算できるかどうかがテストされる。この結果はコンピュータ１２ｄのスタック３４に配置される。コンピュータ１２ｄは、メモリ２４内の語１０内にゼロを直接格納する。その後クローラは、コンピュータ１２ｅへと上へ、コンピュータ１２ａへと再度上へ、コンピュータ１２ｇへと左へ、次にコンピュータ１２ｃへと下へ、コンピュータ１２ｂへと再度左へ、その後再度上へと、コンピュータを逆に移動してコンピュータ１２ｆで終了する。この特定のテストは１７語を占めるが、このテストはより長く、またはより短くすることが可能であり、あるいは、データのローディング、データの抽出および伝送、または命令の実行を含む、任意の所望の機能を実行することも可能である。
【００７２】
図８は、クローラ２０１の方法を示すフロー図である。クローラ２０１は、所望のポートで第１のコンピュータ１２のメモリにロードすることによって開始される。実行予定の命令がある場合、その命令が実行される。実行予定の命令がない場合、クローラを移動させる命令があるかどうかが判別される。こうした命令がある場合、クローラはクローラにプログラミングされた次のノードにロードされる。このプロセスは、移動命令がなくなるまで繰り返される。こうした命令がない場合、クローラは終了する。
【００７３】
本発明への様々な修正は、その値または範囲を変更することなく実行可能である。たとえば本明細書では、本発明の実施形態について特定のコンピュータ１２の例を使用して説明してきたが、多数またはすべての本発明の態様は、他のコンピュータ設計、他の種類のコンピュータアレイなどに容易に適合可能である。
【００７４】
同様に本明細書では、本発明の実施形態について、主に単一ダイ１４上のアレイ１０内のコンピュータ１２間の通信との関係で説明してきたが、コンピュータ１２とその専用メモリとの間、またはアレイ１０内のコンピュータ１２と外部デバイスとの間の通信などの、他のデバイス間通信を実施するために、同じ原理および方法を使用すること、または使用のために修正することが可能である。
【００７５】
本明細書では、本発明のコンピュータアレイ１０、コンピュータ１２、クローラ２０１、パス２０２および関連付けられた装置、ならびに図７および８のクローラ方法の、特定の例について論じてきたが、まだ考察されていないこれらに関する非常に多くの適用例があることが予想される。実際のところ、本発明の方法および装置が非常に多彩な用途に適合可能であることが、本発明の利点の１つである。
【００７６】
前述のすべては、本発明の使用可能な諸実施形態の例の一部に過ぎない。当業者であれば、本発明の趣旨および範囲を逸脱することなく、多数の他の修正および変更が実行可能であることを容易に観察されよう。したがって、本明細書の開示は限定的であると意図されるものではなく、添付の特許請求の範囲が本発明の範囲全体を包含するものと解釈される。
【産業上の利用可能性】
【００７７】
本発明のコンピュータアレイ１０、コンピュータ１２、クローラ２０１、および図８のクローラ方法は、非常に多彩なコンピュータ適用例で広範に使用されることが意図される。これらは、かなりのコンピューティング能力が必要であり、さらに電力消費および熱発生も重要な考慮事項である適用例で、特に有用であることが予想される。
【００７８】
本明細書で前述したように、本発明の適用可能性は、アレイ内のコンピュータ間での情報およびリソースの共有が、速度および多用途性の両方で大幅に改善されるというものである。また、説明された方法および手段に従って、コンピュータアレイと他のデバイスとの間の通信も改善される。
【００７９】
本発明のコンピュータアレイ１０、コンピュータ１２、クローラ２０１、パス２０２および関連付けられた装置、ならびに図８に示されたクローラ方法は、容易に生成し、既存のタスク、入力／出力デバイスなどに統合することが可能であるため、ならびに、本明細書で説明された利点が提供されるため、これらが当業界で容易に受け入れられるであろうと予想される。これらおよび他の理由で、本発明の実用性および産業上の利用可能性は、かなりの広範囲にわたり、さらに長期間継続されることが予想される。
【図面の簡単な説明】
【００８０】
【図１】本発明に係るコンピュータアレイの概略図である。
【図２】図１のコンピュータのサブセットおよび図１のデータバスの相互接続をより詳細に示す図である。
【図３】図１および２のコンピュータのうちの１つの一般レイアウトを示すブロック図である。
【図４】本発明の適用例に係る命令語の概略を表す図である。
【図５】図３のスロットシーケンサ４２の概略を表す図である。
【図６】本発明に係るマイクロループの一例を示すフロー図である。
【図７】本発明の適用例に係るクローラ命令の概略を表す図である。
【図８】図７の発明方法の一例を示すフロー図である。
【符号の説明】
【００８１】
１０  コンピュータアレイ
１２  コンピュータ
１４  ダイ
１６  データバス
１８  読み取りライン
２０  書き込みライン
２２  データライン
２４  ＲＡＭ
２６  ＲＯＭ
２８  リターンスタック
２８ａ  レジスタアレイ
２９  専用Ｒレジスタ
３０  命令領域
３０ｂ  バス
３２  ＡＬＵ
３４  データスタック
３４ａ  レジスタアレイ
３６  復号化論理セクション
３８  通信ポート
３９  外部Ｉ／Ｏポート
４０ａ  Ａレジスタ
４０ｂ  Ｂレジスタ
４０ｃ  Ｐレジスタ
４２  スロットシーケンサ
４４  Ｔレジスタ
４６  Ｓレジスタ
４８  命令語
５０  ビット
５２  命令
５４  スロット
５６  インバータ
５８  ＮＡＮＤゲート
６０  ＯＲゲート
６２  第一のＯＲゲート入力
６４  第二のＯＲゲート入力
６６  ｉ４ビット
６８  スロットシーケンサ出力
７０  パルス生成器
７２  肯定応答
８０  インターフェース回路
８２  外部デバイス
１００  マイクロループ
１０２  ＦＯＲ命令
１０４  ＮＥＸＴ命令
１０６  オペレーション命令
２０１  クローラ
２０２  パス
【図１】
2009064411.tif 000003
【図２】
2009064411.tif 000004
【図３】
2009064411.tif 000005
【図４】
2009064411.tif 000006
【図５】
2009064411.tif 000007
【図６】
2009064411.tif 000008
【図７】
2009064411.tif 000009
【図８】
2009064411.tif 000010
【外国語明細書】
2009064411000001.pdf