JP2009064411A - データおよび命令をコンピュータにロードするための方法および装置 - Google Patents
データおよび命令をコンピュータにロードするための方法および装置 Download PDFInfo
- Publication number
- JP2009064411A JP2009064411A JP2008121123A JP2008121123A JP2009064411A JP 2009064411 A JP2009064411 A JP 2009064411A JP 2008121123 A JP2008121123 A JP 2008121123A JP 2008121123 A JP2008121123 A JP 2008121123A JP 2009064411 A JP2009064411 A JP 2009064411A
- Authority
- JP
- Japan
- Prior art keywords
- computer
- instructions
- instruction
- processor
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 55
- 238000012546 transfer Methods 0.000 claims abstract description 10
- 230000003993 interaction Effects 0.000 claims description 2
- 238000004590 computer program Methods 0.000 claims 1
- 230000007958 sleep Effects 0.000 abstract description 7
- 238000004891 communication Methods 0.000 description 36
- 230000008901 benefit Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000003491 array Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000003466 anti-cipated effect Effects 0.000 description 3
- 230000020169 heat generation Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000036962 time dependent Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000009193 crawling Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000010355 oscillation Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
- G06F9/4862—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3228—Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Multi Processors (AREA)
- Power Sources (AREA)
Abstract
【課題】複数のプロセッサを使用し、コンピュータ全体の速度を上げる場合において、個々のコンピュータへのデータおよび命令を、コンピュータ内で効率的に転送する。
【解決手段】コンピュータ12は互いに非同期的に通信し、コンピュータ12はそれ自体が一般に非同期的な方式で内部的に動作する。1つのコンピュータ12は、他のコンピュータとの通信を試行する場合、他のコンピュータ12がトランザクションを完了する準備が整うまでスリープ状態になり、これによって電力を節約し、熱発生を削減する。スリープ状態のコンピュータ12は、データまたは命令を待つことができる。命令の場合、スリープ状態のコンピュータ12は、命令を格納するかまたは命令を即時実行するために待機することができる。後者の場合、命令は、受信されると、最初にそれらの命令をまずはメモリ内に配置するのではなく、命令レジスタ内に配置され、そこから実行される。
【選択図】図1
【解決手段】コンピュータ12は互いに非同期的に通信し、コンピュータ12はそれ自体が一般に非同期的な方式で内部的に動作する。1つのコンピュータ12は、他のコンピュータとの通信を試行する場合、他のコンピュータ12がトランザクションを完了する準備が整うまでスリープ状態になり、これによって電力を節約し、熱発生を削減する。スリープ状態のコンピュータ12は、データまたは命令を待つことができる。命令の場合、スリープ状態のコンピュータ12は、命令を格納するかまたは命令を即時実行するために待機することができる。後者の場合、命令は、受信されると、最初にそれらの命令をまずはメモリ内に配置するのではなく、命令レジスタ内に配置され、そこから実行される。
【選択図】図1
Description
本発明は、コンピュータおよびコンピュータプロセッサの分野に関する。
コンピューティングの技術分野では、処理速度は非常に求められる品質であり、より高速のコンピュータおよびプロセッサを作成するための努力が続けられている。しかしながら当分野では一般に、少なくとも現在知られている技術を使用したマイクロプロセッサにおける高速化は、急速に限界に近づきつつあることが認められている。したがって、複数のプロセッサを使用し、プロセッサ間でコンピュータタスクを共有することによって、コンピュータ全体の速度を上げることへの関心が高まりつつある。
複数のプロセッサを使用すると、プロセッサ間での通信の必要性が生じる傾向がある。実際、プロセッサ間の通信はかなりの量となる可能性があり、結果として、プロセッサ間での命令およびデータの転送にかなりの時間が費やされる。こうした通信がかなりの量である場合、それを実施するために実行しなければならない追加のそれぞれの命令がプロセスにおける遅延を増加させ、これが累積すると大量になる可能性がある。あるコンピュータから別のコンピュータに命令またはデータを通信するための従来の方法には、まずデータまたは命令を受信側コンピュータに格納すること、そしてその後に、実行のため(命令の場合)、またはそこでの操作のため(データの場合)に、これを呼び出すことが含まれる。
コンピュータ間でデータまたは命令の形態の情報を送信、受信、およびその後使用するために必要な段階の数を減らすことが有用となる。しかしながら、本発明者の知る限りでは、従来技術のシステムの中で、前述のプロセスを飛躍的に合理化したものはない。
また従来技術では、時折、コンピュータの「アテンションを得る」必要があることが知られている。すなわち、たとえコンピュータが1つのタスクでビジーなことがあっても、そのコンピュータを一時的に第1のタスクから方向転換させることを必要とするような、別の時間依存タスク要求が発生する可能性がある。この例には、コンピュータに入力を提供するためにユーザ入力デバイスが使用される場合が含まれるが、これには限定されない。こうしたケースでは、コンピュータが入力を一時的に確認すること、および/またはこの入力に従って反応することが必要な場合がある。次にコンピュータは、入力の前に実行されていたことを続行するか、または実行されていたことを入力に基づいて変更することになる。ここでは一例として外部入力が使用されるが、コンピュータの内部状況間でのALUのアテンションに関して潜在的な競合が存在する場合にも、同じ状況が発生する。
I/Oポートからデータおよび状況の変化を受信した場合、従来技術ではこれまで2つの方法が使用可能であった。1つはポートを「ポーリング」する方法であり、これには、いずれかのデータが受信されたか、または状況に変化が生じたかを判別するために、一定間隔でポートの状況を読み取ることが含まれる。しかしながら、ポートのポーリングは、普通であれば他の事を実行してより有効に使用できる時間およびリソースを、かなり消費する。より適切な代替方法は、しばしば「割り込み」の使用であった。割り込みを使用する場合、プロセッサはその割り当てられたタスクに取り掛かり、その後、I/Oポート/デバイスは、あるバイトが受信されたかまたは状況が変化したという事実が示すように、アテンションを必要とする場合、プロセッサに割り込み要求(IRQ)を送信する。プロセッサは、割り込み要求を受信すると、その現在の命令を終了し、いくつかの事をスタックに置き、さらに、そのバイトをポートから除去してバッファ内に入れることが可能な適切な割り込みサービスルーチン(ISR)を実行する。ISRが完了すると、プロセッサは元の場所に戻る。この方法を使用すると、プロセッサは時間を無駄にして、I/Oデバイスがアテンションを必要としているかどうかに目を向ける必要がなく、むしろデバイスは、アテンションが必要な場合にのみ、割り込みを提供することになる。しかしながら、割り込みの使用に関連するオーバヘッドが大量に存在する可能性があるため、割り込みを使用すること自体、多くのケースで決して望ましくない。たとえば、割り込みが発生するごとに、コンピュータは、その前に実施しようとしていたタスクに関するある種のデータを一時的に格納し、次に割り込みに関連するデータをロードし、その後割り込みが処理されると、前のタスクに必要なデータを再ロードしなければならない場合がある。割り込みは、時間に依存した処理に支障をきたす。本質的に、割り込みはタイミングを予測不可能にする。時間およびリソースを消費するこのオーバヘッドを低減するかまたはすべてなくすことが望ましいのは明らかである。しかしながら、割り込みの必要性を軽減する従来技術の方法は、いまだに開発されていない。
従来のパラレルコンピューティングは、通常、いくつかのコンピュータを通信データパスまたはバスに結合する。こうした配置構成では、個々のコンピュータにそれぞれアドレスが割り当てられる。たとえばベオウルフクラスタでは、個々のPCは、TCP/IPプロトコルによってイーサネット(登録商標)に接続され、アドレスまたはURLが与えられる。データまたは命令は、個々のコンピュータに送られる場合、そのコンピュータにアドレス指定されたパケット内に置かれる。
関連する問題は、個々のコンピュータへのデータおよび命令を、こうしたコンピュータ内でどのようにして効率的に転送するかである。この種のコンピュータのアーキテクチャは、別々にアドレス指定可能なコンピュータを含まないため、この問題はさらに困難である。
本発明の一態様は、コンピュータのポートをリンクするデータバスによってそれぞれが隣接コンピュータとリンクされたコンピュータのアレイを提供し、このアレイは、アレイ内のコンピュータのうちの任意の所望のコンピュータである宛先に情報を提供するための手段を有する。この情報は、データおよび/または命令(たとえばコンピュータのうちの所望の1つによって実施されることになるプログラム)であり得る。ある実施形態では、コンピュータのうちの任意の所望の1つに情報を提供するための手段は、以下でクローラ(crawler)と呼ばれるプログラムであり、このプログラムは、情報を搬送し、さらに、始点(すなわち、アレイの縁部にあることが可能な所定のコンピュータ)からコンピュータのうちの所望の1つである宛先へと、アレイを通るルートを事前に定義し、この事前に定義されたルートに沿ってそれ自体をコンピュータからコンピュータへとコピーする。所望の宛先コンピュータで、この情報がそのコンピュータに提供される。情報が命令である場合、命令はそのコンピュータで実行される。
クローラは、宛先コンピュータから、たとえばオリジナルの始点であるか、または異なるコンピュータともなり得る他のコンピュータへのルートも定義することができる。一実施形態では、クローラは命令の結果を他のコンピュータに送る。
一実施形態では、クローラは単に、プログラムおよび/またはデータをコンピュータまで運び、その後停止する。
ある実施形態では、ルートはクローラプログラムのペイロードに静的に定義され、言い換えれば、ペイロードがルートを事前に決定する(ルートが動的に定義されるTCP/IPとは異なる)。
ある実施形態では、ルート情報は、クロール時にコンピュータのメモリからメモリへとルートに沿ってコピーされる。クローラ内のデータ/命令ペイロードがそのルートに関する情報を含み、このペイロードがルートに沿ったコンピュータによって消費されない場合、宛先コンピュータは、たどったルートおよびその起点に関する情報を受け取ることができる。
本発明の一実施形態は、それ自体のメモリを有するコンピュータを備えることによって、独立したコンピューティング機能を有する。本発明の一実施形態では、複数のコンピュータがアレイ内に配置構成される。タスクを協働的に実施するために、コンピュータは互いにデータおよび/または命令を渡さなければならない。同時に作業しているすべてのコンピュータは、通常、ほとんどのタスクによって要求されるコンピューティング能力よりもはるかに多くの能力を提供することになり、いくつかのコンピュータ間でタスクを配分するために使用されるいかなるアルゴリズムまたは方法も、ほぼ確実に割り当てを不均等に配分することになるため、少なくとも一部の、またおそらくはほとんどのコンピュータは、任意の所与の時点でタスクの実施に積極的に関与していない可能性があることが予想される。したがって、コンピューティングリソース、メモリのいずれか、または両方を「貸し出す」ことによって、よりビジーな隣接コンピュータを支援するために未使用のコンピュータを使用可能にするための方法を見つけることが望ましいであろう。こうした関係を効率的および有用にするために、隣接コンピュータ間の通信および対話を可能な限り迅速かつ効率的にすることが、さらに望ましいであろう。したがって、本発明の実施形態は、コンピュータが、命令の実行および/または他のコンピュータから直接提供されたデータ上での作業を、その前にデータおよび/または命令を受信して格納することなく行うための手段および方法を提供する。本発明のこの実施形態は、コンピュータに他のコンピュータからさらに他のコンピュータへと命令またはデータを「渡させる」ための仲介として働くことになる命令にとっても有用となることに留意されたい。
ある実施形態では、不必要な電力の消費および不必要な熱の発生を防ぐために、コンピュータは、その隣接コンピュータのうちの1つまたは複数との通信を試みる場合、隣接コンピュータまたはそのうちの1つが通信を完了するための動作を行うまで、実質的に電力を消費しない休眠モードとなる。しかしながら、これは本発明に不可欠な態様ではない。さらに、所望の電力の節約および熱発生の削減を実施するためには、通信の完了を待つ間の、開始コンピュータの停止、または少なくともその電力消費の大幅な削減が望ましい。これは、多くの手段のうちのいずれかによって実施可能であると考えられる。たとえば、コンピュータが内部または外部クロックのどちらかによって動作している場合、その期間中、そのクロックを遅らせるかまたは停止させることができる。
本明細書に記載された本発明の一実施形態では、命令およびデータは、それらのソースがコンピュータの内部メモリであるか、または、こうした命令およびデータが、他のコンピュータ、外部通信ポートなどの、他のソースから受け取られるものであるかにかかわらず、実質的に同一に取り扱われる。このことは、データまたは命令を格納し、その後内部メモリから再呼び出しするなどの、「追加」の動作を不要とし、それによって必要な命令数を削減し、関連するコンピュータの動作速度を向上させることになるため、重要である。
ある実施形態では、反復的繰り返しが必要な比較的単純な動作を即時および容易に実施できるように、非常に小規模な命令のグループを通常は同時に他のコンピュータに送ることができる。これにより、コンピュータ間での通信処理がかなり速められる。
ある実施形態では、様々なタスクを実行するために使用可能な複数のコンピュータが存在し、1つまたは複数のコンピュータは、入力を待つ間は実質的に電力を使用しない休眠状態に置くことが可能であるため、こうしたコンピュータに入力待機のタスクを割り当て、それによって、他のタスクを実施している可能性のある他のコンピュータに「割り込む」必要性を減らし又はなくすことができる。
ある実施形態では、データおよび命令を個々のコンピュータに効率的にロードして実行すること、および/またはこうしたコンピュータ間で転送することが可能である。これは、各コンピュータが限られた数の隣接コンピュータに直接接続されているのみの場合、共通バスに頼らずに実施することができる。
本発明の実施形態は、外部ソースから受け取られる命令を最初に格納することなく、コンピュータが命令を実行できるようにするための方法および手段と、この方法および手段を使用して、コンピュータ間の通信、ならびにコンピュータが他のコンピュータの使用可能リソースを使用するための機能を容易にするための関連方法とを提供する。この実施形態は、単一マイクロチップ上の複数コンピュータの組み合わせで、直接実行の方法および装置を提供し、ここでは、動作速度を上げる要求のためだけではなく、効率向上の結果である省電力および熱削減のためにも、動作効率が重要である。
当業者であれば、本明細書で説明され、いくつかの図面に例示された、本発明を実施するモードの説明およびその産業上の利用可能性に鑑みて、本発明の諸実施形態のこれらおよび他の目的および利点が明らかとなろう。列挙された目的および利点は、本発明の諸実施形態のすべての可能な利点を網羅するリストではない。さらに、たとえ適用例において所期の目的および/または利点のうちの1つまたは複数が欠如しているかまたは不要である場合であっても、本発明を実施することが可能となろう。
さらに当業者であれば、本発明の様々な実施形態が、説明された目的および/または利点のうちの、必ずしもすべてではなく、1つまたは複数を達成可能であることを理解されよう。したがって、本明細書で説明される目的および/または利点は本発明の不可欠な要素ではなく、制限とみなされるべきではない。
本発明の実施形態について、図面を参照しながら以下の記載で説明するが、ここで同一の番号は同じかまたは同様の要素を表す。この実施形態は目的を達成するためのモードによって説明されるが、当業者であれば、本発明の趣旨または範囲を逸脱することなくこれらの教示に鑑みて変形が実施可能であることを理解されよう。
本明細書に記載された、および/または図面に示された、本発明の諸実施形態および変形形態は、単なる例として提示されたものであり、本発明の範囲に関して限定するものではない。特に言及のない限り、本発明の個々の態様および構成要素は、省略または修正可能であるか、あるいは、既知の等価物であるいは将来開発される可能性がある又は将来受け入れ可能な代替物であることがわかる可能性があるなどまだ知られていない代替物で置き換え可能である。本発明は、潜在的な適用例の範囲が広いため、および本発明が多くのこうした変形に適合可能であることが意図されているため、特許請求された本発明の趣旨および範囲内に留まったまま、様々な適用例についても修正可能である。
個々のコンピュータのアレイが、図1の概略図に示されており、全体参照番号10によって指示されている。コンピュータアレイ10は複数の(この例で示されているのは24の)コンピュータ12(時にはアレイの例で「コア」または「ノード」とも呼ばれる)を有する。示された例では、コンピュータ12のすべてが単一のダイ14上に配置される。本実施形態によれば、以下でより詳細に論じるように、コンピュータ12はそれぞれ一般的に独立して機能するコンピュータである。コンピュータ12は、複数の(その量は以下でより詳細に論じる)相互接続データバス16によって相互接続される。この例では、データバス16は双方向、非同期、高速の、並列データバスであるが、他の相互接続手段をその目的のために使用することも本発明の範囲内である。アレイ10の本実施形態では、コンピュータ12間のデータ通信が非同期であるのみならず、個々のコンピュータ12も内部的に非同期モードで動作する。このことは、重要な利点を提供するために本発明者によって発見されている。たとえば、クロック信号はコンピュータアレイ10全体にわたって配布される必要がないため、かなりの電力が節約される。さらに、クロック信号を配布する必要がないことで、アレイ10のサイズを制限する可能性があり、または他の既知の困難を発生させる可能性のある、多くのタイミング問題を解消する。また、個々のコンピュータが非同期的に動作するという事実により、内部で実行中のクロックがないことから、各コンピュータが命令を実行していない場合は実質的に電力を使用しないことになるため、かなりの電力が節約される。
ダイ14上には、理解しやすいように図1からは省略されている追加の構成要素があることを当業者であれば理解されよう。こうした追加の構成要素には、電力バス、外部接続パッド、およびマイクロプロセッサチップの他のこうした一般的な態様が含まれる。
コンピュータ12eは、アレイ10の縁部にはないコンピュータ12のうちの1つの例である。すなわちコンピュータ12eは、4つの直交的に隣接するコンピュータ12a、12x、12c、および12dを有する。このコンピュータ12aから12eのグループ化は、たとえば以下の、アレイ10のコンピュータ12間での通信についてのより詳細な考察に関して使用されることになる。図1を見ればわかるように、コンピュータ12eなどの内側のコンピュータは、バス16を介して直接通信可能な4つの他のコンピュータ12を有することになる。以下の考察では、アレイ10の縁部にあるコンピュータ12は他のコンピュータ12のうちの3つのみと直接通信し、または隅のコンピュータ12の場合は他のコンピュータ12のうちの2つのみと直接通信することになるという点を除いて、論じられる原理は、コンピュータ12のすべてに適用される。
図2は、コンピュータ12の一部のみを示し、特にコンピュータ12aから12eを含む、図1の一部をより詳細に示す図である。図2を見ると、データバス16がそれぞれ読み取りライン18、書き込みライン20、および複数(この例では18)のデータライン22を有することもわかる。データライン22は、1つの18ビット命令語のすべてのビットをほぼ同時に並列に転送することができる。本発明の一実施形態では、コンピュータ12の一部は隣接するコンピュータのミラーイメージであることに留意されたい。しかしながら、コンピュータ12がすべて同一に配向されるか、または隣接コンピュータのミラーイメージとして配向されるかどうかは、現在説明している実施形態の態様ではない。したがって、この実施形態についてより適切に説明するために、この潜在的に複雑な問題についてはこれ以上考察しない。
本実施形態によれば、コンピュータ12eなどのコンピュータ12は、1つ、2つ、3つ、または4つすべての隣接するコンピュータ12からデータを受信する準備が整うように、その読み取りライン18のうちの1つ、2つ、3つ、または4つすべてを、「ハイ」に設定することができる。同様に、コンピュータ12は、その書き込みライン20のうちの1つ、2つ、3つ、または4つすべてを、「ハイ」に設定することも可能である。
隣接するコンピュータ12a、12x、12c、または12dのうちの1つが、それ自体とコンピュータ12eとの間の書き込みライン20を「ハイ」に設定した場合、コンピュータ12eがすでに対応する読み取りライン18を「ハイ」に設定してあれば、関連するデータライン22上で、そのコンピュータ12a、12x、12c、または12dからコンピュータ12eへと語が転送される。次に、送信側コンピュータ12は書き込みライン20を解放し、受信側コンピュータ(この例では12e)は書き込みライン20および読み取りライン18の両方を「ロー」に引き下げる。後者のアクションによって、送信側コンピュータ12はデータが受信されたことを確認することになる。上記の説明は、必ずしもイベントのシーケンスを順番に示すことを意図していないことに留意されたい。実際の実施では、受信側コンピュータは、送信側コンピュータ12がその書き込みライン20を解放する(「ハイ」に引き上げるのを停止する)わずか前に、書き込みライン20を「ロー」に設定するように試行する可能性がある。こうした例では、送信側コンピュータ12がその書き込みライン20を解放するとすぐに、書き込みライン20は受信側コンピュータ12eによって「ロー」に引き下げられることになる。
この例では、プログラミングエラーの場合にのみ、1つのバス16の両端にあるコンピュータ12の両方が、それらの間の読み取りライン18を「ハイ」に設定しようとする。両方のコンピュータが読み取るのはエラーではない。実際、これはデフォルト条件である。最終的に、一方が読み取りおよび書き込みをやめることになる。同様に、前述のように、単一のコンピュータ12に、その4つの書き込みライン20のうちの複数を「ハイ」に設定させることが望ましいであろうとは現時点では予想されない。しかしながら、現在では、コンピュータ12のうちの1つが、対応する書き込みライン20を「ハイ」に設定するために、選択されたコンピュータ12のうちの第1のコンピュータからのデータを待つ、待機状態とすることができるように、異なる組み合わせの読み取りライン18を「ハイ」に設定することが望ましい場合がある。
前述の例では、コンピュータ12eは、隣接コンピュータ(コンピュータ12a、12x、12c、または12dのうちの1つまたは複数から選択される)がその書き込みライン20を「ハイ」に設定する前に、その読み取りライン18のうちの1つまたは複数を「ハイ」に設定するものとして説明された。しかしながら、このプロセスは、逆の順序で確実に実行することができる。たとえば、コンピュータ12eがコンピュータ12aへの書き込みを試行している場合、次にコンピュータ12eは、コンピュータ12eとコンピュータ12aとの間の書き込みライン20を「ハイ」に設定することになる。コンピュータ12eとコンピュータ12aとの間の読み取りライン18が、まだコンピュータ12aによって「ハイ」に設定されていない場合、コンピュータ12eは、コンピュータ12aがその読み取りライン18を「ハイ」に設定するまで、ただ単に待機することになる。その後、前述のように、書き込みライン20および読み取りライン18の対応するペアの両方が「ハイ」になると、転送されるのを待っているデータがデータライン22上で転送される。その後、受信側コンピュータ12(この例ではコンピュータ12a)は、送信側コンピュータ12eが書き込みライン20を解放するとすぐに、2つのコンピュータ(この例では12eおよび12a)間の読み取りライン18および書き込みライン20の両方を、「ロー」に設定する。
コンピュータ12eなどのコンピュータ12が書き込みを予想してその書き込みライン20のうちの1つを「ハイ」に設定すると必ず、コンピュータ12は、データの送信先となるコンピュータ12がすでにその読み取りライン18を「ハイ」に設定していない限り(その場合、データが即時伝送される)、前述のように適切な隣接コンピュータ12からデータが「要求される」まで、実質的に電力を使用せずに、単に待機することになる。同様に、コンピュータ12は、読み取りを予想してその読み取りライン18のうちの1つまたは複数を「ハイ」に設定すると必ず、2つのコンピュータ12間で命令語を転送するために、選択されたコンピュータ12に接続された書き込みライン20が「ハイ」になるまで、実質的に電力を使用せずに、単に待機することになる。
前述のように、コンピュータ12を前述のように機能させるためのいくつかの潜在的な手段および/または方法が存在する可能性がある。しかしながらこの例では、コンピュータ12は、(説明された非同期的な方法で、それらの間でデータを転送することに加えて)一般的に非同期的に内部で動作するため、挙動はかなり単純である。すなわち、一般に命令は順次完了される。書き込みまたは読み取り命令のいずれかが発生した場合、その命令が完了されるまで(または、おそらくは別の方法として、「リセット」などによってアボートされるまで)、他のアクションはない可能性がある。従来技術的には、規則的なクロックパルスはない。むしろパルスは、(読み取りまたは書き込みタイプの命令は、しばしば他の実体による完了を必要とすることを考えると)実行されている命令が読み取りまたは書き込みのいずれのタイプの命令でもない場合、あるいは、読み取りまたは書き込みタイプの動作が実際に完了した場合にのみ、次の命令を実施するために生成される。
図3は、図1および2のコンピュータ12のうちの1つの例の一般的レイアウトを示すブロック図である。図3を見ればわかるように、コンピュータ12はそれぞれ、それ自体のRAM 24およびROM 26を有する、一般的な内蔵型コンピュータである。前述のように、コンピュータ12は、この例では単一のチップ上で組み合わされていることを考えると、個々の「ノード」と呼ばれることもある。
コンピュータ12の他の基本構成要素は、リターンスタック28(以下で論じるRレジスタ29を含む)、命令領域30、演算論理ユニット(「ALU」または「プロセッサ」)32、データスタック34、および命令を復号するための復号化論理セクション36である。当業者であれば、一般に、この例のコンピュータ12などのスタックベースコンピュータの動作に精通しているであろう。コンピュータ12は、データスタック34および別々のリターンスタック28を有するデュアルスタックコンピュータである。
本発明のこの実施形態では、コンピュータ12は、隣接コンピュータ12と通信するための4つの通信ポート38を有する。通信ポート38は、オフステータス、受信ステータス(信号をコンピュータ12内に至らせる場合)、および送信ステータス(信号をコンピュータ12から送出する場合)を有する、トライステートドライバである。もちろん、コンピュータ12eの例などのように特定のコンピュータ12がアレイの内側にない場合(図1)、通信ポート38のうちの1つまたは複数は、少なくとも前述の目的ではその特定コンピュータでは使用されない。しかしながら、ダイ14の縁部に隣接するそれらの通信ポート38は、こうした通信ポート38を外部I/Oポート39(図1)として動作させるために、こうしたコンピュータ12の内部に、またはコンピュータ12の外部であるが関連付けられる、いずれかで設計された追加の回路を有することができる。こうした外部I/Oポート39の例には、USB(ユニバーサルシリアルバス)ポート、RS232シリアルバスポート、パラレル通信ポート、アナログデジタルおよび/またはデジタルアナログ変換ポート、ならびに多くの他の可能な変形が含まれるが、これらに限定されない。この目的でどのタイプの追加または修正回路が使用されるかにかかわらず、本発明の現在説明している実施形態によれば、受信された命令および/またはデータの処理に関する「外部」I/Oポート39の動作方法は、「内部」通信ポート38に関して本明細書で説明する方法と同様である。図1で、「エッジ」コンピュータ12fは、外部I/Oポート39を介して外部デバイス82と通信するために関連付けられた(ブロックの形式で示された)インターフェース回路80と共に示される。
現在説明している実施形態では、命令領域30は、この例ではAレジスタ40a、Bレジスタ40b、およびPレジスタ40cを含む、いくつかのレジスタ40を含む。この例では、Aレジスタ40aは18ビットのフルレジスタであるが、Bレジスタ40bおよびPレジスタ40cは9ビットレジスタである。
本発明はこの例に限定されるものではないが、このコンピュータ12は、ネイティブ第4世代言語命令を実行するために実施される。第4世代コンピュータ言語に精通していればわかるように、第4世代「語」として知られる複雑な第4世代命令は、コンピュータ内に設計されたネイティブプロセッサ命令から構築される。第4世代語の集まりは、「ディクショナリ」として知られる。他の言語では、これは「ライブラリ」として知られる場合がある。以下でより詳細に説明するように、コンピュータ12は18ビットを、RAM 24、ROM 26から、またはデータバス16(図2)のうちの1つから直接、同時に読み取る。しかしながら、第4世代ではほとんどの命令(オペランドなし命令として知られている)がそれらのオペランドをスタック28および34から直接取得するため、それらの長さは一般に5ビットのみであり、結果として、グループ内の最後の命令が、3ビットのみを必要とする制限付きの命令セットから選択されるとの条件で、4つまでの命令を単一の18ビット命令語に含めることができる。(説明される実施形態では、最終位置にある命令内の2つの最下位ビットは「00」であるものと想定される。)また、図3にブロック図の形で示されるのは、スロットシーケンサ42である。
本発明のこの実施形態では、データスタック34は、ALU 32によって操作されることになるパラメータの後入れ先出しスタックであり、リターンスタック28は、CALLおよびRETURN命令によって使用されるネストされたリターンアドレスの後入れ先出しスタックである。リターンスタック28は、以下である程度詳細に論じるように、PUSH、POP、およびNEST命令によっても使用される。データスタック34およびリターンスタック28は、多くの従来技術コンピュータの場合のように、スタックポインタによってアクセスされるメモリ内のアレイではない。むしろ、スタック34および28はレジスタのアレイである。データスタック34内の上位2つのレジスタは、Tレジスタ44およびSレジスタ46である。データスタック34の残りの部分は、この例ではS2からS9の番号が付けられた8つの追加ハードウェアレジスタを内部に有する、循環的なレジスタアレイ34aを有する。循環的なレジスタアレイ34a内の8つのレジスタのうちの1つが、何時でもSレジスタ46の下部レジスタとして選択されることになる。Sレジスタの下になるスタックレジスタを選択するシフトレジスタ内の値は、ソフトウェアによって読み取りまたは書き込みすることはできない。同様に、リターンスタック28内の上位は、専用Rレジスタ29であるが、リターンスタック28の残りの部分は、この例ではR1からR11の番号が付けられた8つの追加ハードウェアレジスタを内部に有する(具体的には図示せず)、循環的なレジスタアレイ28aを有する。
本発明のこの実施形態では、スタックのオーバフローまたはアンダフロー条件のハードウェア検出はない。一般に、従来技術のプロセッサは、スタックポインタがスタックに割り振られたメモリの範囲を外れた場合、エラー条件にフラグが立てられるように、スタックポインタおよびメモリ管理などを使用する。これは、スタックがメモリ内に配置された場合、オーバフローまたはアンダフローは、スタックの一部になることが意図されていない何かを上書きするか、またはスタックアイテムとして使用することになるからである。しかしながら本実施形態は、循環的なアレイ28aおよび34aをスタック28および34の下部に有するため、スタック28および34はスタック領域を外れてオーバフローまたはアンダフローすることはできない。その代わりに、循環的なアレイ28aおよび34aは、単に循環的なアレイのレジスタを循環することになる。スタック28および34は深さが有限であるため、スタック28または34の上部に何かをプッシュすることは、下部の何かが上書きされることを意味する。10を超えるアイテムをデータスタック34にプッシュすること、または13を超えるアイテムをリターンスタック28にプッシュすることは、そのように実行すると結果としてスタック28または34の下部のアイテムが上書きされるということを認識した上で実行しなければならない。スタック28および34上のアイテム数を追跡し続けること、ならびに、スタック28および34それぞれが保持できる以上のアイテムを置かないようにすることは、ソフトウェアの責務である。ハードウェアは、スタック下部のアイテムの上書きを検出すること、またはこれにエラーとしてフラグを立てることは、実行しない。しかしながら、ソフトウェアは、スタック28および34の下部の循環的なアレイ28aおよび34aをいくつかの方法で活用できることに留意されたい。単なる一例として、ソフトウェアは、いつでもスタック28または34が「空」であることを単に想定することができる。スタックが充填されると失われることになる下部方向に古いアイテムがプッシュされる際に、スタックからこれらを消去する必要はない。したがって、スタックが空であることを想定するためのプログラムに関して、初期化することは何もない。
本明細書で前述したレジスタに加えて、命令領域30は、現在使用されている命令語48を格納するための18ビットの命令レジスタ30a、および、現在実行されている特定命令内の命令に関する追加の5ビットのオペレーションコード(opcode)バス30bを有する。
図4は、命令語48を示す概略図である。(命令語48は、命令、データ、またはそれらの何らかの組み合わせを実際に含み得ることに留意されたい。)命令語48は、18のビット50からなる。これは2進コンピュータであり、ビット50はそれぞれ「1」または「0」となる。前述のように、18ビット幅の命令語48は、スロット0 54a、スロット1 54b、スロット2 54c、およびスロット3 54dと呼ばれる4つのスロット54内に、最大で4つの命令52を含むことができる。本発明のこの実施形態では、18ビットの命令語48は常に全体として読み取られる。したがって、命令語48内には常に最大で4つの命令を有する可能性があるため、使用可能なスロット54のすべてを使用することが不要であるかまたはさらには望ましくないときのインスタンスを与えるために、ノーオペレーション(オペレーションなし)命令がコンピュータ12の命令セット内に含められる。本発明の特定の一実施形態によれば、交互スロット(具体的に言えば、スロット1 54bおよびスロット3 54d)内のビット50の極性(アクティブ「ロー」に対するアクティブ「ハイ」)が反転される。しかしながら、これは現在説明している実施形態の必要な態様ではないため、この実施形態についてより適切に説明するために、この潜在的に複雑な問題については以下では考察しない。
図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は「ハイ」であり、次の命令52を実行させることになるパルスを開始するために、スロットシーケンサ42がトリガされる。
第1のORゲート入力62が「ハイ」になること、または第2のORゲート入力64が「ハイ」になること(以下で考察される)のいずれかによって、スロットシーケンサ42がトリガされた場合、信号はスロットシーケンサ42を2周し、1周ごとにスロットシーケンサ出力68で出力を生成する。信号はスロットシーケンサ出力68を最初に通過すると「ロー」になり、スロットシーケンサ出力68の2回目の出力は「ハイ」になる。スロットシーケンサ出力68からの比較的幅広い出力は、出力として狭いタイミングパルスを生成するパルス生成器70(ブロックの形で図示)に提供される。当業者であれば、コンピュータ12のオペレーションを正確に開始するためには狭いタイミングパルスが望ましいことを理解されよう。
実行されている特定の命令52が読み取りまたは書き込み命令である場合、あるいは、実行されている命令52がシーケンス内で次の命令52の即時実行をトリガすることが望ましくない任意の他の命令である場合、i4ビット66は「0」(「ロー」)であるため、第1のORゲート入力62も「ロー」である。当業者であれば、コンピュータ12などのデバイス内のイベントのタイミングが一般に非常にクリティカルであり、これが例外でないことを理解されよう。スロットシーケンサ42の検査時に、当業者であれば、当該環の第2周目を開始するために信号がNANDゲート58を通って循環した後まで、ORゲート60からの出力が「ハイ」のままでなければならないことを理解されよう。その後、望ましくない回路の発振が続くのを防ぐために、ORゲート60からの出力は第2周目中に「ロー」になる。
上記の考察に照らして理解されるように、i4ビット66が「0」の場合、以下で論じる第2のORゲート入力66が「ハイ」でないことを想定して、スロットシーケンサ42はトリガされない。
前述のように、各命令52のi4ビット66は、その命令が入力または出力を必要としないものであるのとは対照的に、その命令が読み取りまたは書き込みタイプの命令か否かに従って設定される。命令52内の残りのビット50は、その命令に関する特定のオペレーションコードの残りを提供する。読み取りまたは書き込みタイプの命令の場合、ビットのうちの1つまたは複数を使用して、その特定コンピュータ12内のどこからデータが読み取られるか、またはどこへ書き込まれるかを示すことができる。本発明のこの例では、書き込まれるデータは常にTレジスタ44(データスタック34の上部)から出されるが、データは、それを実行できるところからTレジスタ44または命令領域30のいずれかに選択的に読み込むことができる。これは、本発明のこの特定の実施形態では、データまたは命令のいずれかを本明細書で説明した方式で通信することが可能であり、したがって、命令をデータバス16から直接実行できるためである。
ポート38のうちのどれかを読み取りまたは書き込み用に設定すべき場合にそれがポート38のうちのどれであるかを示すのに、ビット50のうちの1つまたは複数が使用される。この後者のオペレーションは、1つまたは複数のビットを使用して、Aレジスタ40a、Bレジスタ40bなどの、レジスタ40を指定することによって、任意に実施される。こうした例では、指定されたレジスタ40は、ポート38(および、メモリ(RAM 24またはROM 26)、外部通信ポート39、などの、コンピュータ12が通信を試みている可能性のある任意の他の潜在的な実体)のそれぞれに対応するビットを有するデータと共に事前にロードされることになる。たとえば、特定レジスタ40内の4つのビットそれぞれが、上ポート38a、右ポート38b、左ポート38c、または下ポート38dのそれぞれに対応することができる。それらのビット位置のいずれかに「1」がある、こうしたケースでは、通信は対応するポート38を通って進行するように設定されることになる。本明細書で前述したように、本発明のこの実施形態では、読み取りオペレーションコードが単一命令で通信用の複数のポート38を設定する可能性があることは予想されるが、書き込みオペレーションコードが単一命令で通信用の複数のポート38を設定することは、可能ではあるが予想されない。
次の例では、コンピュータ12eがコンピュータ12cへの書き込みを試行している通信を想定するが、この例は、任意の隣接するコンピュータ12の間での通信に適用可能である。書き込み命令が書き込み側コンピュータ12eで実行される場合、選択された書き込みライン20(この例では、コンピュータ12eと12cの間の書き込みライン20)が「ハイ」に設定され、対応する読み取りライン18がすでに「ハイ」である場合、データは、選択された場所から選択された通信ポート38を介して即時に送信される。あるいは、対応する読み取りライン18がまだ「ハイ」でない場合、コンピュータ12eは、対応する読み取りライン18が「ハイ」になるまで単に動作を停止することになる。読み取りまたは書き込みタイプの命令がある場合の、コンピュータ12aの停止(またはより正確には、それ以上の動作を実行可能にしないこと)のための機構については、本明細書で前述している。手短に言えば、命令52のオペレーションコードは、ビット位置i4 66で「0」を有することになるため、ORゲート60の第1のORゲート入力62は「ロー」であり、スロットシーケンサ42は実行可能パルスを生成するようにトリガされない。
読み取りまたは書き込みタイプ命令が完了した場合にコンピュータ12eの動作が再開される方法に関して、そのための機構は以下のとおりである。コンピュータ12eと12cとの間の読み取りライン18および対応する書き込みライン20の両方が「ハイ」の場合、両方のライン18および20は、これを「ハイ」で保持している各コンピュータ12のそれぞれによって解放されることになる。(この例では、送信側コンピュータ12eは書き込みライン20を「ハイ」で保持し、受信側コンピュータ12cは読み取りライン18を「ハイ」で保持することになる。)次に、受信側コンピュータ12cは両方のライン18および20を「ロー」にする。実際には、受信側コンピュータ12cは、送信側コンピュータ12eが書き込みライン20を解放する前に、ライン18および20を「ロー」にするよう試みるかもしれない。しかしながら、ライン18および20は「ハイ」に引き上げられ、「ロー」で弱く保持(ラッチ)されるのみであるため、ライン18または20を「ロー」に引き下げようとするいかなる試みも、ライン18または20が、これを「ハイ」で保持しているコンピュータ12によって解放されるまでは、実際には成功しないことになる。
データバス16内のライン18および20の両方が「ロー」に引き下げられた場合、これは「肯定応答」条件である。コンピュータ12eおよび12cのそれぞれは、「肯定応答」条件で、それ自体の内部肯定応答ライン72を「ハイ」に設定することになる。図5を見ればわかるように、肯定応答ライン72は第2のORゲート入力64を提供する。ORゲート60の入力62または64のいずれかへの入力により、ORゲート60の出力が「ハイ」になり、これによって、本明細書で前述した方式で、スロットシーケンサ42の動作が開始され、その結果、命令語48の次のスロット54内の命令52が実行されることになる。肯定応答ライン72は、スプリアスアドレスがアドレスバスに到達するのを防ぐために、次の命令52が復号されるまで「ハイ」のままである。
実行されている命令52が命令語48のスロット3の位置にあるいずれの場合も、もちろん、ビットi4 66が「0」でない限り、または、以下でより詳細に説明する、スロット3内の命令が「次の」命令でない限り、コンピュータ12は、待機している次の18ビット命令語48をフェッチすることになる。
実際には、本発明の機構は、命令語48内のすべての命令52の実行が終わる前にフェッチが開始できるように、命令を「プリフェッチ」するための方法および装置を含む。しかしながら、これも、現在説明している実施形態の不可欠な態様ではない。
以上、コンピュータ12eがコンピュータ12cに書き込んでいる例について、詳細に説明してきた。上記の考察に照らして理解されるように、最初にコンピュータ12eがコンピュータ12cへの書き込みを試行するか、最初にコンピュータ12cがコンピュータ12eからの読み取りを試行するかにかかわらず、本質的に動作は同じである。この動作は、コンピュータ12eおよび12cの両方の準備が整うまで完了不可能であり、コンピュータ12eまたは12cのどちらが最初に準備が整ったとしても、コンピュータ12eまたは12cの他方が転送を完了するまで、単に「スリープ状態になる」。前述のプロセスについて別の考え方をすれば、実際には、書き込み側コンピュータ12eおよび受信側コンピュータ12cの両方が、それぞれ書き込みおよび読み取り命令を実行する場合にスリープ状態になるが、後からトランザクションに入った方が、読み取りライン18および書き込みライン20の両方が「ハイ」になるとほぼ同時に覚醒するのに対して、トランザクションを開始する第1のコンピュータ12は、第2のコンピュータ12がプロセスを完了する準備が整うまで、ほぼ無期限にスリープ状態のままでいることが可能である。
本発明者は、デバイス間で効率的な非同期通信を可能にするための主要な機能は、ある種の肯定応答信号または条件であると考える。従来技術では、デバイス間のほとんどの通信はクロック同期されており、送信側デバイスにとって受信側デバイスが適切にデータを受信したことを知る直接の方法はない。チェックサム動作などの方法を使用して、データが正しく受信されるよう保証しようとする試みも可能であったが、送信側デバイスには動作が完了された旨の直接の表示がない。本明細書に記載されるように、本発明の方法は、デバイス間の非同期通信を可能にするかまたは少なくとも現実的にする、必要な肯定応答条件を提供する。さらにこの肯定応答条件は、肯定応答条件が発生するまで、1つまたは複数のデバイスを「スリープ状態にする」ことも可能にする。もちろん肯定応答条件は、(相互接続データバス16または別の信号ラインを介して)コンピュータ12間で別の信号を送信することによって、コンピュータ12の間で通信することが可能であり、こうした肯定応答信号は本発明のこの態様の範囲内となる。しかしながら、本明細書に記載された本発明の実施形態によれば、肯定応答のための方法は、実際に通信を実行するために、いかなる追加の信号、クロックサイクル、タイミングパルス、または記載された以上の任意のこうしたリソースも必要としないという点において、ここではさらに節約が関係することが理解されよう。
4つの命令52を命令語48に含めることが可能であるため、および、本実施形態によれば、命令語48全体をコンピュータ12間で一度に通信することが可能であるため、1つの動作で非常に小さなプログラムを伝送するための理想的な機会が提示される。たとえば、小規模な「For/Next」ループのほとんどが、単一の命令語48内で実施可能である。図6は、マイクロループ100を示す概略図である。マイクロループ100は、他の従来技術のループと同様に、FOR命令102およびNEXT命令104を有する。命令語48(図4)は最大で4つの命令52を含むため、命令語48は単一の命令語48内に3つのオペレーション命令106を含むことができる。オペレーション命令106は、実質的に、プログラマがマイクロループ100に含めることを望む任意の使用可能命令とすることができる。1つのコンピュータ12から他のコンピュータ12へと伝送可能なマイクロループ100の典型的な例は、第1のコンピュータ12が使用可能なRAM 24の容量を「借りる」ことができるように、第2のコンピュータ12のRAM 24から読み取るため、またはこれに書き込むための、命令セットとすることができる。
FOR命令102は、所望の反復数を表す値を、リターンスタック28上にプッシュする。すなわち、データスタック34上部のTレジスタ44上の値が、リターンスタック28のRレジスタ29にPUSHされる。FOR命令102は、しばしば命令語48のスロット3 54d内に配置されるが、実際は、任意のスロット54内に配置することができる。FOR命令102がスロット3 54d内に配置されない場合、その命令語48内の残りの命令52は、マイクロループ100に向かう前に実行されることになり、通常、次にロードされる命令語48となる。
本発明の現在説明している実施形態によれば、図6に示されたNEXT命令104は、特定タイプのNEXT命令104である。これは、スロット3 54d(図4)内に配置されるためである。本発明のこの実施形態によれば、「通常の」NEXT命令(図示せず)に従った特定命令語40内のすべてのデータがアドレス(for/nextループが開始される場所のアドレス)であることが想定される。NEXT命令104のオペレーションコードは、4つのスロット54のうちのどこにあろうとも(本明細書で前述したように明示的に書き込まれているのではなく、スロット3 54dである場合、最初の2桁が想定されるということは明らかな例外として)同じである。しかしながら、スロット3 54d内にある場合、NEXT命令104に続くアドレスデータがない可能性があるため、スロット3 54d内のNEXT命令104がMICRO−NEXT命令104aであることも想定できる。UNEXTオペレーションコードはNEXTオペレーションとは異なる。これはいずれのスロット内でも可能である。MICRO−NEXT命令104aは、それが配置された同じ命令語48のスロット0 54a内に配置された第1の命令52のアドレスを、戻り先のアドレスとして使用する。MICRO−NEXT命令104aも、(FOR命令102によって最初はそこにPUSHされた)Rレジスタ29からの値を取り、これを1だけ減分した後、それをRレジスタ29に戻す。Rレジスタ29上の値が所定の値(ゼロなど)に達すると、MICRO−NEXT命令は次の命令語48をロードし、本明細書で前述したように続行する。しかしながら、MICRO−NEXT命令104aは、Rレジスタ29から所定の値よりも大きな値を読み取った場合、それ独自の命令語48のスロット0 54aでオペレーションを再開し、そのスロット0から3の間に配置された3つの命令52を実行することになる。すなわち、本発明のこの実施形態では、MICRO−NEXT命令104aは、常に、3つのオペレーション命令106を実行することになる。いくつかのインスタンスでは、3つの潜在的に使用可能な命令52のすべてを使用することが望ましくない場合があるため、「ノーオペレーション」命令を使用してスロット54のうちの1つまたは2つを必要に応じて埋めることができる。
単一のコンピュータ12内でマイクロループ100の全体を使用できることに留意されたい。実際、使用可能な機械言語命令の全セットが、オペレーション命令106として使用するために利用可能であり、マイクロループの適用例および用途は、プログラマの想像力によってのみ限定される。しかしながら、単一の命令語48内でマイクロループ100全体を実行するための機能が、コンピュータ12が命令語48を隣接するコンピュータ12に送信し、そこで実質的にはデータバス16から直接、命令52を実行できるようにするための機能と組み合わされた場合、コンピュータ12がその隣接コンピュータのリソースを利用できるようにするための強力なツールが提供される。
単一のデータ語48内にすべてが含まれた小規模なマイクロループ100は、本明細書に記載されるようにコンピュータ12間で通信可能であり、本明細書に記載されるように、命令語48に含まれる命令の任意の他のセットとまったく同様に、受信側コンピュータ12の通信ポート38から直接実行することができる。この種の「マイクロループ」100の使い方は多数あるが、典型的な使い方は、1つのコンピュータ12がいくつかのデータを隣接コンピュータ12のメモリ上に格納したい場合であろう。たとえばこれは、最初に、特定のメモリアドレスに入ってくるデータ語を格納し、次にそのアドレスを増分し、次に所与の回数(伝送されるデータ語の数)だけ繰り返すようにとの命令を、その隣接コンピュータに送信することができる。データを再度読み取るために、第1のコンピュータは、第2のコンピュータ(ここでは格納に使用されたコンピュータ)に、同様のマイクロループを使用して、格納されたデータを第1のコンピュータに書き込むようにと指示するだけである。
このマイクロループ100の構造を、本明細書に記載された直接実行の態様と共に使用することによって、コンピュータ12は、データ格納の必要性が、個々のコンピュータ12のそれぞれに組み込まれた比較的小さな容量を超える場合、超過したデータを格納するために、休眠中の隣接コンピュータ12を他の方法で使用することができる。この例について、これまではデータストレージに関して説明してきたが、何らかのオペレーションを実行し、結果を格納し、所与の回数だけ反復するように、他のコンピュータ12に実行させるマイクロループ100を作成することによって、コンピュータ12がその隣接コンピュータにそのコンピューティングリソースを共有させることができるようにするために、同じ技法を等しく使用することができる。本発明のマイクロループ100構造が使用可能な方法の数は、ほぼ無限であることが理解されよう。
本明細書で前述したように、本発明の現在説明している実施形態では、データまたは命令のいずれかを本明細書に記載された方式で通信可能であるため、命令は、実質的にはデータバス16から直接実行することができる。すなわち、命令をRAM 24に格納し、その後、実行前にそれらを再度呼び出す必要がない。その代わりに、この実施形態では、通信ポート38で受信された命令語48が、RAM 24またはROM 26から再度呼び出される場合と実質的に異ならないように取り扱われる。この相違点がないことは、コンピュータ12の動作の説明に関する本明細書の前の考察で明らかにされているが、命令語48がフェッチされ使用される方法についての以下のより具体的な考察によって、この実施形態がより理解しやすくなるであろう。
使用可能な機械言語命令の1つが、FETCH命令である。FETCH命令は、Aレジスタ40a上のアドレスを使用して、18ビット語をどこからフェッチするかを決定する。もちろんこのプログラムは、正しいアドレスをすでにAレジスタ40a上に配置していなければならない。本明細書で前述したように、Aレジスタ40aは18ビットレジスタであり、結果として、フェッチの実行元とすることができる潜在的なソースを区別することができる、十分な範囲の使用可能なアドレスデータが存在する。すなわち、ROMに割り当てられたある範囲のアドレス、RAMに割り当てられた異なる範囲のアドレス、ならびに、ポート38のそれぞれおよび外部I/Oポート39用の特定アドレスが存在する。FETCH命令は、それがフェッチする18ビットを常時Tレジスタ44上に配置する。
これに対して、本明細書で前述したように、実行可能命令は(データとは対照的に)命令レジスタ30a内に一時的に格納される。18ビット命令語48を命令レジスタ30aに「フェッチ」するための、特定のコマンドはない。その代わりに、命令レジスタ30a内に実行可能命令が残っていない場合、コンピュータは自動的に「次」の命令語48をフェッチする。「次」の命令語が配置されている場所は、「プログラムカウンタ」(Pレジスタ40c)によって決定される。Pレジスタ40cは、一連の命令語48がRAM 24またはROM 26からフェッチされる場合と同様に、しばしば自動的に増分される。しかしながら、この一般的な規則にはいくつかの例外がある。たとえばJUMPまたはCALL命令は、JUMPまたはCALL命令の後に、増分するのではなく、現在ロードされている命令語48の残り部分にあるデータによって指定されたアドレスを、Pレジスタ40cにロードすることになる。Pレジスタ40cにポート38のうちの1つまたは複数に対応するアドレスがロードされた場合、次の命令語48が、ポート38から命令レジスタ30aにロードされることになる。命令語48がポート38から命令レジスタ30aに取り出された直後には、Pレジスタ40cも増分されない。むしろ、Pレジスタ40cを変更するために特定のJUMPまたはCALL命令が実行されるまで、同じポートアドレスが保持されたままとなる。すなわち、コンピュータ12は、ポート38からのその次の命令を探すように指示されると、メモリ(RAM 24またはROM 26)に戻るなど、どこか他の場所を探すように指示されるまで、その次の命令語48に関してその同じポート38(または複数のポート38)からの命令を探し続けることになる。ジャンプはPレジスタをロードしない。ジャンプは、それらのアドレスをアドレスバス上に置き、命令が完了すると増分されてPレジスタに格納される。
前述のように、コンピュータ12は、現在の命令語48内に実行可能命令が残っていない場合、次にフェッチされる18ビットが命令レジスタ30a内に配置されることがわかっている。定義上、JUMPまたはCALL命令に続く18ビット命令語の残りの部分は、JUMPまたはCALL命令によって参照されるアドレス専用であるため、デフォルトでは、JUMPまたはCALL命令の後(または、本明細書では具体的に考察しないある種の他の命令の後も)、現在の命令語48内には何の実行可能命令も残らない。これを説明する他の方法は、前述のプロセスが多くの場合固有であることであり、これにはJUMPまたはCALL命令がメモリアドレスにだけではなく、オプションでポート38になどとすることができるという事実を含むが、これに限定されるものではない。
本明細書で前述したように、コンピュータ12は、その次の命令を1つのポート38から、またはポート38のグループのいずれかから探すことができることを想起されたい。したがってアドレスは、ポート38の様々な組み合わせに対応するように提供される。たとえばコンピュータは、ポート38のグループから命令をフェッチするように指示された場合、選択されたポート38のいずれかから最初に使用可能な命令語48を受け入れる。それらのポート38のいずれかにすでに書き込みを試行した隣接コンピュータ12がない場合、上記で詳細に説明したように、当該のコンピュータ12は、隣接コンピュータが選択されたポート38に書き込むまで「スリープ状態になる」。
こうしたコンピュータの場合、チップ10上の個々のコンピュータ12にデータをロードすることが望ましい。これは、こうしたアレイ内の個々のアドレスに要件がない場合、データを個々のコンピュータにアドレス指定することでは容易に実行されない。同様に、命令を個々のコンピュータ12にロードして実行することが望ましい。これらの目的を実施するための1つの方法が提案されており、本明細書ではクローラと呼ばれる。この方法を検討することにより、当分野で平均的な技術を備えた人物であれば、いくつかの同様の方法を思いつくであろう。示されたクローラは、この方法をどのように実施するかの単なる例であり、本発明がその特定の特徴に限定されることを意味することを意図するものではない。たとえばその特徴は、マシンフォースオブジェクトコードの状況で説明されるが、その言語に限定されるものではない。この説明でマシンフォースを使用する理由は、発明者らがこの実施を開発したためだけではなく、これが標準のオブジェクトコードよりもかなりわかりやすく、動作を明確に教示するためでもある。この発明は、従来のオブジェクトコードでも動作可能である。この例が、特定コンピュータ上で命令を実行するように示されているのに加えて、この方法が、複数のコンピュータを含む任意のコンピュータに任意のデータまたは命令をロードするために使用できることも理解されたい。
図7は、この場合は12である所望のコンピュータに、データまたは命令をロードするためのマシンフォースでの方法を示す。この方法は、クローラ201と呼ばれる。クローラ201は、ノードからノード(コンピュータ12)へと移動する。クローラ201は各ノードでメモリにロードされ、コンピュータ12を移動する際にサイズは小さくならない。代替のクローラは、ローディングなしにコンピュータ12を直接移動することが可能であり、可変長とすることができる。クローラを作成するプログラマは、方向を指定することによって、どのコンピュータに実行またはロードさせるかを選択することができる。クローラ201は、コンピュータ12dでストレステストを実行する。
図7に示されたクローラ201では、第1の語が、数値を10進で解釈させ、アドレス45で開始させる。第2の語は、オペレーションの名前をcrawlとして宣言し、データスタック34(t)を方向として、およびリターンスタック(r)28を次のルートとして指定する。第3の語「b!」は、クローラが入力する63によって指定されたポート39(図1)を指示し、63はRAM 24(図3)に配置され、「@p+」はリテラルとして63をフェッチするためにこのスロットに配置される。PUSH命令は、続くNEXT命令のコンテキストとして、RAM 24のサイズよりも1つ少なくプッシュする。第4の語は、プログラムカウンタが指示している語をデータスタック34上にコピーする。このケースで、プログラムカウンタは、リテラルとして取り扱われる「dup xor a!」を指示している。このアクションにより、ターゲットノード内のレジスタが明らかになる。第5の語は、命令語の2つのコピーを作成し、これを隣接ポートに2回送信する。第1の命令語は隣接ポートを覚醒させ、隣接ポートが4ポート読み取りモードになると破棄されるため、語の発生元を決定することはできない。2回目の語が送信されると、隣接ポートは発生元を決定し、どちらか命令が送信された方の実行を開始するために、ポートにジャンプすることができる。「dup xor」命令は、スタックの上部アイテムを0に置き換える。クローラはソースノードおよび宛先ノードの両方のリソースをすべて使用できるため、以前のスタックコンテンツはいずれも重要でないことに留意されたい。第6の語は「@p+」命令をAレジスタ内に配置する。「@p+」命令は、このノードが制御することになる命令ストリームの一部として次の2つの語を隣接に供給するための準備として、これらの語をスタックする。この命令がポートによって実行された場合、隣接はRAM 24のすべてを修正することができる。「!a+...」を伴う第1の「@p+」は、ポートからリテラルをフェッチし、これをRAM 24に格納してRAMポインタを前進させ、第2の「push:」は受信したアドレスでの実行を隣接に開始させる。次にbegin/next命令は、第2の語の命令63から64回ループする。ループは、RAM 24内のそれぞれおよびあらゆるアイテムを、隣接のRAM 24内の対応する位置にコピーする。ループ後の第1の命令は、隣接ノードに次の入力をリテラルとして使用するようにとのコマンドを出し、ノードのリターンアドレスは隣接に送信され、隣接のリターンスタック28に配置される。この時点で、両方のノードは同一のRAM 24コンテンツを含む。隣接がリターンスタック28上のアドレスから続行する場合、オリジナルノードが停止した地点から再開する。Cold命令はノードを4ポート読み取りステータスに戻し、「−;」命令は呼び出しをジャンプに変化させ、結果として、プログラムカウンタアドレスがリターンスタック上に残らず、スロットを占めることはない。図示されたプログラムはR、L、U、D命令を、右、左、上、および下として定義し、代替方法では、たとえば北、南、東、および西を使用することができる。あるいは、システムは、相対アドレスではなく絶対アドレスによって、特定のノードにアドレス指定することができる。図示されたようなクローラ201はRAM 24内の最後の19の語を占める。
図1に戻ると、クローラ201のパス202が示されている。クローラ201はコンピュータ12fで始まり、コンピュータ12bへと下に移動した後、コンピュータ12cへと右へ、コンピュータ12gへと上へ、コンピュータ12aへと右へ、コンピュータ12eへと下へ、その後コンピュータ12dへと下へ移動し、ここでストレステストが実施される。これにより、桁上げエラー(carry error)なしにコンピュータ12dが「$FFF」を「$1」に加算できるかどうかがテストされる。この結果はコンピュータ12dのスタック34に配置される。コンピュータ12dは、メモリ24内の語10内にゼロを直接格納する。その後クローラは、コンピュータ12eへと上へ、コンピュータ12aへと再度上へ、コンピュータ12gへと左へ、次にコンピュータ12cへと下へ、コンピュータ12bへと再度左へ、その後再度上へと、コンピュータを逆に移動してコンピュータ12fで終了する。この特定のテストは17語を占めるが、このテストはより長く、またはより短くすることが可能であり、あるいは、データのローディング、データの抽出および伝送、または命令の実行を含む、任意の所望の機能を実行することも可能である。
図8は、クローラ201の方法を示すフロー図である。クローラ201は、所望のポートで第1のコンピュータ12のメモリにロードすることによって開始される。実行予定の命令がある場合、その命令が実行される。実行予定の命令がない場合、クローラを移動させる命令があるかどうかが判別される。こうした命令がある場合、クローラはクローラにプログラミングされた次のノードにロードされる。このプロセスは、移動命令がなくなるまで繰り返される。こうした命令がない場合、クローラは終了する。
本発明への様々な修正は、その値または範囲を変更することなく実行可能である。たとえば本明細書では、本発明の実施形態について特定のコンピュータ12の例を使用して説明してきたが、多数またはすべての本発明の態様は、他のコンピュータ設計、他の種類のコンピュータアレイなどに容易に適合可能である。
同様に本明細書では、本発明の実施形態について、主に単一ダイ14上のアレイ10内のコンピュータ12間の通信との関係で説明してきたが、コンピュータ12とその専用メモリとの間、またはアレイ10内のコンピュータ12と外部デバイスとの間の通信などの、他のデバイス間通信を実施するために、同じ原理および方法を使用すること、または使用のために修正することが可能である。
本明細書では、本発明のコンピュータアレイ10、コンピュータ12、クローラ201、パス202および関連付けられた装置、ならびに図7および8のクローラ方法の、特定の例について論じてきたが、まだ考察されていないこれらに関する非常に多くの適用例があることが予想される。実際のところ、本発明の方法および装置が非常に多彩な用途に適合可能であることが、本発明の利点の1つである。
前述のすべては、本発明の使用可能な諸実施形態の例の一部に過ぎない。当業者であれば、本発明の趣旨および範囲を逸脱することなく、多数の他の修正および変更が実行可能であることを容易に観察されよう。したがって、本明細書の開示は限定的であると意図されるものではなく、添付の特許請求の範囲が本発明の範囲全体を包含するものと解釈される。
本発明のコンピュータアレイ10、コンピュータ12、クローラ201、および図8のクローラ方法は、非常に多彩なコンピュータ適用例で広範に使用されることが意図される。これらは、かなりのコンピューティング能力が必要であり、さらに電力消費および熱発生も重要な考慮事項である適用例で、特に有用であることが予想される。
本明細書で前述したように、本発明の適用可能性は、アレイ内のコンピュータ間での情報およびリソースの共有が、速度および多用途性の両方で大幅に改善されるというものである。また、説明された方法および手段に従って、コンピュータアレイと他のデバイスとの間の通信も改善される。
本発明のコンピュータアレイ10、コンピュータ12、クローラ201、パス202および関連付けられた装置、ならびに図8に示されたクローラ方法は、容易に生成し、既存のタスク、入力/出力デバイスなどに統合することが可能であるため、ならびに、本明細書で説明された利点が提供されるため、これらが当業界で容易に受け入れられるであろうと予想される。これらおよび他の理由で、本発明の実用性および産業上の利用可能性は、かなりの広範囲にわたり、さらに長期間継続されることが予想される。
10 コンピュータアレイ
12 コンピュータ
14 ダイ
16 データバス
18 読み取りライン
20 書き込みライン
22 データライン
24 RAM
26 ROM
28 リターンスタック
28a レジスタアレイ
29 専用Rレジスタ
30 命令領域
30b バス
32 ALU
34 データスタック
34a レジスタアレイ
36 復号化論理セクション
38 通信ポート
39 外部I/Oポート
40a Aレジスタ
40b Bレジスタ
40c Pレジスタ
42 スロットシーケンサ
44 Tレジスタ
46 Sレジスタ
48 命令語
50 ビット
52 命令
54 スロット
56 インバータ
58 NANDゲート
60 ORゲート
62 第一のORゲート入力
64 第二のORゲート入力
66 i4ビット
68 スロットシーケンサ出力
70 パルス生成器
72 肯定応答
80 インターフェース回路
82 外部デバイス
100 マイクロループ
102 FOR命令
104 NEXT命令
106 オペレーション命令
201 クローラ
202 パス
12 コンピュータ
14 ダイ
16 データバス
18 読み取りライン
20 書き込みライン
22 データライン
24 RAM
26 ROM
28 リターンスタック
28a レジスタアレイ
29 専用Rレジスタ
30 命令領域
30b バス
32 ALU
34 データスタック
34a レジスタアレイ
36 復号化論理セクション
38 通信ポート
39 外部I/Oポート
40a Aレジスタ
40b Bレジスタ
40c Pレジスタ
42 スロットシーケンサ
44 Tレジスタ
46 Sレジスタ
48 命令語
50 ビット
52 命令
54 スロット
56 インバータ
58 NANDゲート
60 ORゲート
62 第一のORゲート入力
64 第二のORゲート入力
66 i4ビット
68 スロットシーケンサ出力
70 パルス生成器
72 肯定応答
80 インターフェース回路
82 外部デバイス
100 マイクロループ
102 FOR命令
104 NEXT命令
106 オペレーション命令
201 クローラ
202 パス
Claims (29)
- ポートを有するコンピュータプロセッサのグループと、
データ、場所、および命令のグループから選択された情報を、ポートを介して第1のプロセッサへと伝送するためのクローラとを備え、
前記第1のプロセッサは、前記第1のプロセッサ向けの情報を入力し、および前記クローラを第2のプロセッサに移送するようにプログラミングされることを特徴とするコンピュータシステム。 - 前記第2のプロセッサは、当該第2のプロセッサ向けの情報を入力するように、および前記クローラ手段を第3のプロセッサに移送するようにプログラミングされることを特徴とする請求項1に記載のシステム。
- 前記第2のプロセッサは、前記第1のプロセッサとの対話なしに入力ポートからの命令を実行するようにプログラミングされることを特徴とする請求項1に記載のシステム。
- 前記クローラは、前記移送手段を前記第2のプロセッサに移送するために、上、下、左、および右のグループから選択された場所を含むことを特徴とする請求項2に記載のシステム。
- 前記情報は、前記ポートから前記第2のプロセッサへの命令の転送であることを特徴とする請求項2に記載のシステム。
- 前記情報は、前記ポートから前記第2のプロセッサへのデータの転送であることを特徴とする請求項2に記載のシステム。
- 前記情報は、前記ポートから前記第2のプロセッサへと送信されるデータおよび/または命令の形態であることを特徴とする請求項2に記載のシステム。
- 前記入力ポートは、外部デバイスと通信するための外部ポートであることを特徴とする請求項1に記載のシステム。
- 前記プロセッサのうちの少なくとも1つは、
実行されるべき命令のグループを一時的に格納するための命令レジスタと、
命令のグループが前記命令レジスタに取り出されるアドレスを格納するためのプログラムカウントとを備え、
前記プログラムカウンタ内の前記アドレスは、メモリアドレスまたはレジスタのアドレスのいずれかとすることが可能であることを特徴とする請求項1に記載のシステム。 - 前記命令のグループは前記命令レジスタに略同時に取り出され、
前記複数の命令は、スタック上の数によって示された反復量だけ繰り返されることを特徴とする請求項9に記載のシステム。 - 前記プロセッサのうちの少なくとも1つは、
略同時に読み取られる複数の命令を備え、
前記複数の命令は、スタック上の数によって示された反復量だけ繰り返されることを特徴とする請求項1に記載のシステム。 - 入力ポートに直接接続されない少なくとも1つのコンピュータを有する、入力ポートを備えるマルチコンピュータアレイ内のコンピュータへデータを伝送するための方法であって、
(a)前記入力ポートに接続された第1のコンピュータに、前記入力の少なくとも一部を前記入力ポートに接続されない第2のコンピュータへ伝送させる、前記ポートへ入力を導入するステップと、
(b)前記第2のコンピュータに、前記入力の前記一部のうちの少なくとも一部を入力させるステップと
を備えることを特徴とする方法。 - 前記第2のコンピュータは、タスクを実行することによって前記第1のコンピュータからの前記入力の前記一部に応答することを特徴とする請求項12に記載の方法。
- 前記ポートからの入力に応答して、前記第2のコンピュータはルーチンを実行することを特徴とする請求項12に記載の方法。
- 前記ルーチンは、第3のコンピュータとインターフェースするステップを含むことを特徴とする請求項14に記載の方法。
- 前記ルーチンは、前記第3のコンピュータへの書き込みを行うステップを含むことを特徴とする請求項15に記載の方法。
- 前記ルーチンは、前記第3のコンピュータへデータを送信するステップを含むことを特徴とする請求項15に記載の方法。
- 前記ルーチンは、前記第3のコンピュータへ命令を送信するステップを含むことを特徴とする請求項15に記載の方法。
- 前記命令は、受信されると前記第3のコンピュータによって逐次実行されることを特徴とする請求項18に記載の方法。
- 請求項12乃至19のいずれか一項に記載の方法を、コンピュータのアレイ上で実行される場合に前記アレイに実行させることを特徴とするコンピュータプログラム。
- 請求項12、13、14、15、16、17、18、または19に記載のステップを電子デバイスに実行させるために具体化されたコードを内部に有することを特徴とするコンピュータ読み取り可能媒体。
- 請求項20に記載のプログラムを搬送することを特徴とする搬送波。
- プロセッサのうちの1つに接続された少なくとも1つの入力ポートを含むプロセッサのグループと、
データ、命令、および場所のグループから選択された情報を、前記1つの入力ポートから前記プロセッサのうちの1つおよび前記プロセッサのうちの他の1つへと伝送するためのクローラ手段とを備え、
前記クローラ手段は、方向命令によって決定されたパスと、前記他のプロセッサにペイロードをロードするように命令するための手段とをさらに備えることを特徴とするコンピューティング用システム。 - 前記クローラ手段は、前記入力ポートに対する前記1つのプロセッサの場所を示すことを特徴とする請求項23に記載のコンピューティング用システム。
- 前記クローラ手段は、上、下、右、および左からなるグループから選択された方向を含むことによって、前記入力ポートに対する前記1つのプロセッサの場所を示すことを特徴とする請求項24に記載のコンピューティング用システム。
- 前記クローラ手段は、北、南、東、および西からなるグループから選択された方向を含むことによって、前記入力ポートに対する前記1つのプロセッサの場所を示すことを特徴とする請求項24に記載のコンピューティング用システム。
- 前記クローラ手段は、前記1つのプロセッサのアドレスを含むことによって、前記1つのプロセッサの場所を絶対的に示すことを特徴とする請求項23に記載のコンピューティング用システム。
- 前記ペイロードはデータであることを特徴とする請求項23に記載のコンピューティング用システム。
- 前記ペイロードは命令であり、前記他のプロセッサは、前記命令を実行するように動作可能であることを特徴とする請求項23に記載のコンピューティング用システム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/800,714 US20080282062A1 (en) | 2007-05-07 | 2007-05-07 | Method and apparatus for loading data and instructions into a computer |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009064411A true JP2009064411A (ja) | 2009-03-26 |
Family
ID=39560054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008121123A Pending JP2009064411A (ja) | 2007-05-07 | 2008-05-07 | データおよび命令をコンピュータにロードするための方法および装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20080282062A1 (ja) |
EP (1) | EP1990718A1 (ja) |
JP (1) | JP2009064411A (ja) |
KR (1) | KR20080099193A (ja) |
CN (1) | CN101339544A (ja) |
TW (1) | TW200907698A (ja) |
WO (1) | WO2008137142A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010106934A1 (en) | 2009-03-17 | 2010-09-23 | Fujifilm Corporation | Dispersion-type electroluminescence device |
WO2010137262A1 (ja) * | 2009-05-25 | 2010-12-02 | パナソニック株式会社 | マルチプロセッサシステム、マルチプロセッサ制御方法、及びマルチプロセッサ集積回路 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007272895A (ja) * | 2006-03-31 | 2007-10-18 | Technology Properties Ltd | コンピュータプロセッサアレイの操作方法および装置 |
US8464143B2 (en) * | 2009-01-12 | 2013-06-11 | Board Of Regents Of The Nevada System Of Higher Education | Error detection method |
WO2013009442A2 (en) * | 2011-07-12 | 2013-01-17 | Rambus Inc. | Dynamically changing data access bandwidth by selectively enabling and disabling data links |
US8893088B2 (en) * | 2013-04-02 | 2014-11-18 | Apple Inc. | Dynamic program evaluation for system adaptation |
EP2952299A1 (en) | 2014-06-05 | 2015-12-09 | Aldebaran Robotics | Standby mode of a humanoid robot |
CN112395000B (zh) * | 2019-08-13 | 2023-05-26 | 杭州中天微***有限公司 | 一种数据预加载方法和指令处理装置 |
US11960438B2 (en) | 2020-09-08 | 2024-04-16 | Rambus Inc. | Methods and circuits for streaming data to processing elements in stacked processor-plus-memory architecture |
CN112615759B (zh) * | 2020-12-17 | 2023-03-31 | 上海哔哩哔哩科技有限公司 | 全链路压测组件、全链路压测方法及装置 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4215401A (en) * | 1978-09-28 | 1980-07-29 | Environmental Research Institute Of Michigan | Cellular digital array processor |
US4739474A (en) * | 1983-03-10 | 1988-04-19 | Martin Marietta Corporation | Geometric-arithmetic parallel processor |
US5021947A (en) * | 1986-03-31 | 1991-06-04 | Hughes Aircraft Company | Data-flow multiprocessor architecture with three dimensional multistage interconnection network for efficient signal and data processing |
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 |
US5765015A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Slide network for an array processor |
JPH0713945A (ja) * | 1993-06-16 | 1995-01-17 | Nippon Sheet Glass Co Ltd | 演算処理部および制御・記憶部分離型マルチプロセッサ ・システムのバス構造 |
US5832291A (en) * | 1995-12-15 | 1998-11-03 | Raytheon Company | Data processor with dynamic and selectable interconnections between processor array, external memory and I/O ports |
US6966002B1 (en) * | 1999-04-30 | 2005-11-15 | Trymedia Systems, Inc. | Methods and apparatus for secure distribution of software |
US20060248360A1 (en) * | 2001-05-18 | 2006-11-02 | Fung Henry T | Multi-server and multi-CPU power management system and method |
US20030005168A1 (en) * | 2001-06-29 | 2003-01-02 | Leerssen Scott Alan | System and method for auditing system call events with system call wrappers |
US7249357B2 (en) * | 2001-08-20 | 2007-07-24 | Silicon Graphics, Inc. | Transparent distribution and execution of data in a multiprocessor environment |
US6959372B1 (en) * | 2002-02-19 | 2005-10-25 | Cogent Chipware Inc. | Processor cluster architecture and associated parallel processing methods |
US7415594B2 (en) * | 2002-06-26 | 2008-08-19 | Coherent Logix, Incorporated | Processing system with interspersed stall propagating processors and communication elements |
US7237045B2 (en) * | 2002-06-28 | 2007-06-26 | Brocade Communications Systems, Inc. | Apparatus and method for storage processing through scalable port processors |
US7657861B2 (en) * | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
JP3987784B2 (ja) * | 2002-10-30 | 2007-10-10 | Necエレクトロニクス株式会社 | アレイ型プロセッサ |
US7353501B2 (en) * | 2002-11-18 | 2008-04-01 | Microsoft Corporation | Generic wrapper scheme |
US7673118B2 (en) * | 2003-02-12 | 2010-03-02 | Swarztrauber Paul N | System and method for vector-parallel multiprocessor communication |
US7712080B2 (en) * | 2003-05-21 | 2010-05-04 | The Regents Of The University Of California | Systems and methods for parallel distributed programming |
US7269805B1 (en) * | 2004-04-30 | 2007-09-11 | Xilinx, Inc. | Testing of an integrated circuit having an embedded processor |
US7484041B2 (en) * | 2005-04-04 | 2009-01-27 | Kabushiki Kaisha Toshiba | Systems and methods for loading data into the cache of one processor to improve performance of another processor in a multiprocessor system |
EP1821211A3 (en) * | 2006-02-16 | 2008-06-18 | Technology Properties Limited | Cooperative multitasking method in a multiprocessor system |
JP2007272895A (ja) * | 2006-03-31 | 2007-10-18 | Technology Properties Ltd | コンピュータプロセッサアレイの操作方法および装置 |
-
2007
- 2007-05-07 US US11/800,714 patent/US20080282062A1/en not_active Abandoned
-
2008
- 2008-04-29 EP EP08251560A patent/EP1990718A1/en not_active Withdrawn
- 2008-05-02 TW TW097116210A patent/TW200907698A/zh unknown
- 2008-05-06 WO PCT/US2008/005780 patent/WO2008137142A1/en active Application Filing
- 2008-05-07 JP JP2008121123A patent/JP2009064411A/ja active Pending
- 2008-05-07 CN CNA2008100969359A patent/CN101339544A/zh active Pending
- 2008-05-07 KR KR1020080042500A patent/KR20080099193A/ko not_active Application Discontinuation
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010106934A1 (en) | 2009-03-17 | 2010-09-23 | Fujifilm Corporation | Dispersion-type electroluminescence device |
WO2010137262A1 (ja) * | 2009-05-25 | 2010-12-02 | パナソニック株式会社 | マルチプロセッサシステム、マルチプロセッサ制御方法、及びマルチプロセッサ集積回路 |
US9032407B2 (en) | 2009-05-25 | 2015-05-12 | Panasonic Intellectual Property Corporation Of America | Multiprocessor system, multiprocessor control method, and multiprocessor integrated circuit |
Also Published As
Publication number | Publication date |
---|---|
TW200907698A (en) | 2009-02-16 |
EP1990718A1 (en) | 2008-11-12 |
WO2008137142A1 (en) | 2008-11-13 |
KR20080099193A (ko) | 2008-11-12 |
CN101339544A (zh) | 2009-01-07 |
US20080282062A1 (en) | 2008-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009064411A (ja) | データおよび命令をコンピュータにロードするための方法および装置 | |
EP1840742A2 (en) | Method and apparatus for operating a computer processor array | |
US7904615B2 (en) | Asynchronous computer communication | |
US20100281238A1 (en) | Execution of instructions directly from input source | |
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 | |
JP2009527815A (ja) | 高められた動作効率を有するコンピュータシステム | |
JP2009009550A (ja) | データの通信 | |
EP1821202B1 (en) | Execution of instructions directly from input source | |
US7934075B2 (en) | Method and apparatus for monitoring inputs to an asyncrhonous, homogenous, reconfigurable computer array | |
JP2009009549A (ja) | 一連のコンピュータでデータを処理するシステムおよび方法 | |
WO2009145821A1 (en) | Microprocessor communications system | |
US20040123073A1 (en) | Data processing system having a cartesian controller | |
EP1821217B1 (en) | Asynchronous computer communication | |
WO2007098024A2 (en) | Allocation of resources among an array of computers | |
TW200809529A (en) | Computer system with increased operating efficiency |