JP2009527809A - 入力ソースから直接の命令の実行 - Google Patents

入力ソースから直接の命令の実行 Download PDF

Info

Publication number
JP2009527809A
JP2009527809A JP2008555354A JP2008555354A JP2009527809A JP 2009527809 A JP2009527809 A JP 2009527809A JP 2008555354 A JP2008555354 A JP 2008555354A JP 2008555354 A JP2008555354 A JP 2008555354A JP 2009527809 A JP2009527809 A JP 2009527809A
Authority
JP
Japan
Prior art keywords
computer
instructions
instruction
address
group
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
Application number
JP2008555354A
Other languages
English (en)
Other versions
JP2009527809A5 (ja
Inventor
エイチ.ムーア チャールズ
Original Assignee
ブイエヌエス ポートフォリオ リミテッド ライアビリティ カンパニー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/355,495 external-priority patent/US7904615B2/en
Priority claimed from US11/355,513 external-priority patent/US7904695B2/en
Priority claimed from US11/441,784 external-priority patent/US7752422B2/en
Priority claimed from US11/441,812 external-priority patent/US7913069B2/en
Priority claimed from US11/441,818 external-priority patent/US7934075B2/en
Application filed by ブイエヌエス ポートフォリオ リミテッド ライアビリティ カンパニー filed Critical ブイエヌエス ポートフォリオ リミテッド ライアビリティ カンパニー
Publication of JP2009527809A publication Critical patent/JP2009527809A/ja
Publication of JP2009527809A5 publication Critical patent/JP2009527809A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

コンピュータアレイ(10)が、複数のコンピュータ(12)を有する。コンピュータ(12)は、互いと非同期に通信し、コンピュータ(12)自体は、内部的に全般的に非同期の形で動作する。あるコンピュータ(12)は、別のコンピュータとの通信を試みる時に、他方のコンピュータ(12)がそのトランザクションを完了する準備ができるまで眠り、これによって、電力を節約し、熱発生量を減らす。眠っているコンピュータ(12)は、データまたは命令(12)を待っていることができる。命令の場合に、眠っているコンピュータ(12)は、それらの命令を保管するために、またはそれらの命令を即座に実行するために待っていることができる。後者の場合に、それらの命令は、まずそれらの命令をまずメモリに置くのではなく、受け取られた時に命令レジスタ(30a)に置かれ、そこから実行される。命令には、一連の動作を繰り返して実行することができるマイクロループ(100)を含めることができる。一応用例で、眠っているコンピュータ(12)は、入力によって覚醒され、そうでなければ他の形でアクティブなコンピュータの割込みを必要としたはずのアクションを開始するようになっている。

Description

本願は、同一の発明者による2006年2月16日出願の米国特許出願第11/355,513号の一部継続出願であり、同一の発明者による2006年3月31日出願の米国特許仮出願第60/788,265号および同一の発明者による2006年5月3日出願の米国特許仮出願第60/797,345号の利益を主張するものであり、これらのすべてが、参照によってその全体を組み込まれている。
本発明は、コンピュータおよびコンピュータプロセッサの分野に関し、より具体的には、コンピュータが、外部ソースから命令が受け取られる時にまず前記命令を保管することなく命令を実行することを可能にする方法および手段と、コンピュータの間での通信を容易にするためにその方法および手段を使用する関連する方法と、別のコンピュータの使用可能なリソースを使用する、コンピュータの能力とに関する。本発明的直接実行の方法および装置の有力な現在の用途は、高められた動作速度の要請のゆえのみならず、より高い効率の結果である電力節約および熱減少のゆえにも、動作効率が重要である、単一マイクロチップ上の複数のコンピュータの組合せにある。
コンピューティングの分野では、処理速度が、非常に望まれる品質であり、より高速のコンピュータおよびプロセッサを作成するための探求が、進行中である。しかし、少なくとも現在既知のテクノロジ時を使用するならば、マイクロプロセッサにおける速度向上の限界にすばやく達することになることが、産業界で一般に認められている。したがって、プロセッサの間でコンピュータタスクを共用することによって全体的なコンピュータ速度を高めるために複数のプロセッサを使用することへの関心が高まっている。
複数のプロセッサの使用は、プロセッサ間の通信の必要を生じる傾向がある。実際に、おそらくはプロセッサ間の大量の通信がある場合があり、時間のうちのかなりの部分が、プロセッサの間で命令およびデータを転送するのに費やされる。そのような通信の量が多い場合に、その通信を達成するために実行されなければならない各追加命令は、プロセスに増分的遅延を置き、この増分的遅延が、累積的に非常に大きくなり得る。あるコンピュータから別のコンピュータに命令またはデータを通信する従来の方法は、まず、受け取るコンピュータにデータまたは命令を保管し、その後、実行のため(命令の場合)またはそれに対する動作のため(データの場合)にそのデータまたは命令を呼び出すことを含む。
データまたは命令の形の情報をコンピュータ間で送り、受け取り、その後に使用するのに必要なステップ数を減らすことが、有用であるはずである。しかし、本発明人の知る限り、従来技術のシステムは、上で説明したプロセスを意味のある形で合理化してはこなかった。
また、従来技術では、時々コンピュータの「注意を引く」ことが必要であることが知られている。すなわち、時々、コンピュータがあるタスクで使用中の可能性がある場合であっても、そのコンピュータを一時的に第1のタスクからそらすことを必要とする可能性がある、もう1つの時間に敏感なタスク要件が発生し得る。例として、ユーザ入力デバイスがコンピュータに入力を供給するのに使用される場合があるが、これに限定はされない。そのような場合に、そのコンピュータは、一時的にその入力を肯定応答し、かつ/またはその入力に従って反応する必要がある場合がある。その後、そのコンピュータは、その入力の前に行っていたことを継続する、あるいはその入力に基づいて、行っていたことを変更することのいずれかを行う。外部入力が、ここでは例として使用されているが、コンピュータの内部態様の間でALUの注意に関する潜在的な衝突がある、同一の情況も、発生する。
I/Oポートからデータおよび状況の変化を受け取る時に、従来技術で使用可能な2つの方法がある。一方は、ポートを「ポーリング」することであり、これには、固定間隔でポートの状況を読み取って、データが受け取られたかどうかまたは状況の変化が発生したかどうかを判定することが含まれる。しかし、ポートのポーリングは、かなりの時間およびリソースを消費し、この時間およびリソースは、通常は他のことを行うのによりよく使用できるはずである。よりよい代替案は、しばしば、「割込み」の使用であった。割込みを使用する時には、プロセッサは、それに割り当てられたタスクの実行に取り掛かることができ、I/Oポート/デバイスが、バイトが受け取られたか状況が変化したという事実によって示されるように注意を必要とする時に、そのI/Oポート/デバイスは、割込み要求(IRQ)をプロセッサに送る。プロセッサは、割込み要求を受け取ったならば、現在の命令を終了し、スタックにいくつかのものを置き、適当な割込みサービスルーチン(ISR)を実行し、このISRが、バイトをポートから除去し、バッファに置くことができる。ISRが終了したならば、プロセッサは、中止したところに戻ることができる。この方法を使用すると、プロセッサが、I/Oデバイスが注意を必要としているかどうかを調べるために時間を浪費する必要がなくなり、デバイスが、注意を必要とする時に割込みをサービスするのみになる。しかし、割込みの使用自体は、多くの場合に、望ましいものをはるかに下回る。というのは、割込みの使用に関連する大量のオーバーヘッドがあり得るからである。たとえば、割込みが発生するたびに、コンピュータは、それが前に達成を試みていたタスクに関するある種のデータを一時的に保管し、次に、割込みに関するデータをロードし、次に、割込みが処理されたならば、前のタスクに必要なデータを再ロードしなければならない。明らかに、この時間とリソースとを消費するオーバーヘッドのすべてを減らすか除去することが望ましいはずである。しかし、割込みに関するこの必要を軽減する従来技術の方法は、開発されてこなかった。
したがって、本発明の目的は、複数のコンピュータがそれらの間でデータおよび/または命令を通信する動作の速度を高める装置および方法を提供することである。
本発明のもう1つの目的は、かなりの計算能力を安価に提供する装置および方法を提供することである。
本発明のもう1つの目的は、計算集中型タスクを最小限の時間で達成する装置および方法を提供することである。
本発明のもう1つの目的は、大量の処理能力を作り出すコンピュータデバイスを提供することである。
本発明のもう1つの目的は、コンピュータとコンピュータ制御されるデバイスとの間の通信の効率を高めることである。
本発明のもう1つの目的は、コンピュータ間の通信の効率を高めることである。
本発明のもう1つの目的は、コンピュータが互いにならびにユーザ入力デバイスおよび類似物などの他のデバイスと通信する形の効率を高めることである。
簡潔には、本発明の知り得る実施形態は、独立の計算機能が可能になるようにそれ自体のメモリを有するコンピュータである。本発明の一実施形態では、複数のコンピュータが、アレイに配置される。タスクを協力して達成するために、これらのコンピュータは、あるコンピュータから別のコンピュータにデータおよび/または命令を渡さなければならない。同時に働くコンピュータのすべてが、通常、ほとんどのタスクによって要求されるものよりはるかに高い計算能力を備え、複数のコンピュータの間でタスクを分散するのに使用されるどのようなアルゴリズムまたは方法であっても、ほとんど確実に割り当ての不均等な分配をもたらすので、少なくともいくつかの、おそらくはほとんどの、コンピュータが、どの所与の時にもタスクの達成に能動的に参加していない可能性があると予期される。したがって、計算リソースまたはメモリのいずれかあるいはその両方を「貸す」ことによって、あまり使用されていないコンピュータをより忙しい近傍の支援に使用可能にする形を見つけることが望ましいはずである。そのような関係が効率的であり、有用であるためには、さらに、隣接するコンピュータ間の通信および相互作用ができる限りすばやく、効率的であることが、望ましいはずである。したがって、本発明は、コンピュータが、そのようなアクションの前にデータおよび/または命令を受け取り、その後にそれらを保管する必要があるのではなく、別のコンピュータから直接に供給される命令を実行し、かつ/またはデータに作用する手段および方法を提供する。本発明が、コンピュータに、1つの他のコンピュータからの命令またはデータをもう1つのコンピュータに「渡させる」仲介物として働く命令にも有用であることに留意されたい。
説明される実施形態では、不必要な電力の消費および不必要な熱の発生を防ぐために、コンピュータがその近傍のうちの1つまたは複数との通信を試みる時に、そのコンピュータは、近傍または近傍のうちの1つが通信を完了するために働くまで、本質的に電力を消費しない休眠モードになる。しかし、これは、本発明の必要な態様ではない。さらに、所望の電力の節約および減らされた熱発生量を達成するためには、開始するコンピュータが、通信の完了を待っている間にその電力消費を止めるか、少なくとも大幅に減らすことが望ましい。これは、複数の手段のいずれかによって達成できると考えられる。たとえば、コンピュータが、内部クロックまたは外部クロックのいずれかによって刻時される場合に、そのクロックを、その時間期間中に低速化するか停止することができる。実際に、そのような実施形態を、本発明の範囲の外部の理由のために実施することが考えられるが、現在説明されている実施形態は、本発明人に現在既知の最良の最も効率的な実施形態である。
本明細書で説明する本発明の一態様は、命令およびデータが、そのソースがコンピュータの内部メモリであれ、そのような命令およびデータが別のコンピュータ、外部通信ポート、または類似物などの別のソースから受け取られつつあるのであれ、本質的に同一に扱われることである。これは、データまたは命令を保管することおよびその後にこれらを内部メモリからリコールすることなどの「追加」動作が不要になり、これによって、必要な命令の個数が減り、用いられるコンピュータの動作速度が高まるので、重要である。
説明される実施形態のもう1つの態様は、命令の非常に小さいグループを、別のコンピュータに、一般に同時に通信することができ、繰り返される反復を必要とする比較的単純な動作を、すばやく簡単に達成できることである。これは、コンピュータ間の通信のプロセスを大幅にはかどらせる。
説明される実施形態のもう1つの態様は、さまざまなタスクを実行するのに使用可能な、ある量のコンピュータがあり、1つまたは複数のコンピュータを、入力を待っている間に本質的に電力を使用しない休眠モードにすることができるので、そのようなコンピュータを、入力を待つというタスクに割り当てることができ、これによって、他のタスクを達成しつつある可能性がある他のコンピュータに「割り込む」必要を減らすかなくすことができることである。
本発明の上記および他の目的は、本明細書で説明され、図面の複数の図に示された、本発明を実行する態様の説明およびその産業上の利用可能性に鑑みて、当業者に明白になるであろう。リストされた目的および利点は、本発明のすべての可能な利点の網羅的なリストではない。さらに、所期の目的および/または利点のうちの1つまたは複数が応用例に存在しないか不要である可能性がある場合であっても、本発明を実践することが可能である。
さらに、当業者は、本発明のさまざまな実施形態が、説明される目的および/または利点の、必ずしもすべてではなく1つまたは複数を達成できることを認めるであろう。したがって、本明細書に記載の目的および/または利点は、本発明の本質的要素ではなく、限定と解釈されてはならない。
本発明を、図面を参照して次の説明で説明するが、図面では、類似する符号が、同一の要素または類似する要素を表す。本発明を、本発明の目的を達成する態様に関して説明するが、当業者は、本発明の趣旨または範囲から逸脱せずにこれらの教示に鑑みて変形形態を達成できることを諒解するであろう。
本明細書で説明され、かつ/または図面に示された実施形態および変形形態は、例としてのみ提示されるものであって、本発明の範囲を限定するものではない。そうでないと特に述べられない限り、本発明の個々の態様および構成要素は、省略するか変更することができ、あるいは、それゆえに既知の同等物を置換することができ、または将来に開発され得るものなどもしくは将来に受け入れられる置換物であることがわかる可能性があるものなどのまだ未知の置換物として存在することができる。本発明は、潜在的応用の範囲が非常に大きく、本発明が多数のそのような変形形態に適用可能であることが意図されているので、請求される発明の趣旨および範囲の中に留まりながら、さまざまな応用のために変更されることも可能である。
本発明を実行する知り得る態様は、個々のコンピュータのアレイである。このアレイは、図1の概略図に示され、図1では全般的参照符号10によって指定されている。コンピュータアレイ10は、複数(図示の例では24個)のコンピュータ12(時々、アレイの例で「コア」または「ノード」とも称する)を有する。図示の例では、コンピュータ12のすべてが、単一のダイ14上に置かれている。本発明によれば、コンピュータ12のそれぞれは、後でより詳細に述べるように、一般に独立に機能するコンピュータである。コンピュータ12は、複数の(その量は、後で詳細に述べる)相互接続するデータバス16によって相互接続される。この例では、データバス16が、両方向非同期高速並列データバスであるが、他の相互接続する手段をこの目的に使用できることが、本発明の範囲内である。アレイ10の本実施形態では、コンピュータ12間のデータ通信が非同期であるだけではなく、個々のコンピュータ12も、内部的に非同期モードで動作する。これは、本発明人によって、重要な利点をもたらすことが見つけられている。たとえば、クロック信号を、コンピュータアレイ10全体に分配する必要がないので、大量の電力が、節約される。さらに、クロック信号を分配する必要がないことは、アレイ10のサイズを制限し得る、または他の既知の問題を引き起こし得る多数のタイミング問題を除去する。また、個々のコンピュータが非同期に動作するという事実は、大量の電力を節約する。というのは、各コンピュータが、命令を実行していない時に、その中で動作するクロックがないので、本質的に電力を消費しないからである。
当業者は、図を明瞭にするために図1から省略されている、ダイ14上の追加構成要素があることを認めるであろう。そのような追加構成要素に、電力バス、外部接続パッド、およびマイクロプロセッサチップの他のそのような共通の態様が含まれる。
コンピュータ12eは、アレイ10の周囲部にあるのではないコンピュータ12のうちの1つの例である。すなわち、コンピュータ12eは、4つの直交に近接するコンピュータ12a、12b、12c、および12dを有する。コンピュータ12aから12eのこのグループ化は、たとえば、下で、アレイ10のコンピュータ12の間の通信のより詳細な議論に関して使用される。図1からわかるように、コンピュータ12eなどの内側コンピュータは、4つの他のコンピュータ12を有し、この4つの他のコンピュータと、バス16を介して直接に通信することができる。次の議論では、述べられる原理は、アレイ10の周辺部にあるコンピュータ12が3つの他のコンピュータだけと直接に通信し、角(corner)のコンピュータ12の場合にはコンピュータ12のうちの他の2つだけと直接に通信することを除いて、コンピュータ12のすべてにあてはまる。
図2は、コンピュータ12のうちの一部だけ、具体的には両端を含んでコンピュータ12aから12eまでを示す、図1の一部のより詳細な図である。図2には、それぞれが読取信号線18、書込信号線20、および複数の(この例では18本の)データ信号線22を有するデータバス16も示されている。データ信号線22は、1つの18ビット命令ワードの全ビットを全般的に同時に並列に転送することができる。本発明の一実施形態で、コンピュータ12のうちのいくつかが、近接するコンピュータのミラーイメージであることに留意されたい。しかし、コンピュータ12が、すべてが同一にまたは近接コンピュータのミラーイメージとして配置されているかどうかは、この現在説明されている発明の態様ではない。したがって、本発明をよりよく説明するために、この潜在的な複雑化は、本明細書ではこれ以上述べない。
本発明的方法によれば、コンピュータ12eなどのコンピュータ12は、その読取信号線18のうちの1つ、2つ、3つ、または4つすべてをハイにセットし、各々の1つ、2つ、3つ、または4つすべての近接するコンピュータ12からデータを受け取る準備をすることができる。同様に、コンピュータ12が、その書込信号線20のうちの1つ、2つ、3つ、または4つすべてをハイにセットすることも可能である。本発明人は、コンピュータ12の書込信号線20のうちの複数を一時にハイにセットすることに現在なんらかの実用的価値があると考えてはいないが、そのような動作の使用が将来に発生し得ると考えられるので、それを行うことは、本発明の範囲を超えない。
近接するコンピュータ12a、12b、12c、または12dのうちの1つが、それ自体とコンピュータ12eとの間の書込信号線20をハイにセットした時に、コンピュータ12eが対応する読取信号線18をすでにハイにセットしている場合には、ワードが、関連するデータ信号線22上でそのコンピュータ12a、12b、12c、または12dからコンピュータ12eに転送される。その後、送出側コンピュータ12は、書込信号線20を解放し、受取側コンピュータ(この例では12e)は、書込信号線20と読取信号線18との両方をロウにプルする。後者のアクションは、送出側コンピュータ12に、データが受け取られたことを肯定応答する。上の説明が、必ずしも順番のイベントのシーケンスを表すことを意図されていないことに留意されたい。実際の実践では、受取側コンピュータが、送出側コンピュータ12がその書込信号線20を解放する(ハイにプルするのを止める)よりわずかに前に書込信号線20をロウにセットすることを試みる場合がある。そのような場合に、送出側コンピュータ12がその書込信号線20を解放するや否や、書込信号線20は、受取側コンピュータ12eによってロウにプルされる。
本例では、プログラミングエラーだけが、バス16のうちの1つの両端の両方のコンピュータ12がその間の読取信号線18をハイにセットすることを試みることを引き起こすはずである。また、バス16のうちの1つの両端の両方のコンピュータ12が同時にその間の読取信号線18をハイにセットすることを試みることは、エラーであるはずである。同様に、上で述べたように、単一のコンピュータ12にその4つの書込信号線20のうちの複数をハイにセットさせることが望ましいことであるとは、現在は予期されていない。しかし、現在、コンピュータ12のうちの1つが、その対応する書込信号線20をハイにセットするために選択されたコンピュータ12のうちの第1の1つからのデータを待つ待機状態であることができるように、読取信号線18の異なる組合せをハイにセットすることが望ましい状況があることが、予期されている。
上で述べた例では、コンピュータ12eは、近接するコンピュータ(コンピュータ12a、12b、12c、または12dのうちの1つまたは複数から選択される)がその書込信号線20をハイにセットする前に、コンピュータ12eの読取信号線18のうちの1つまたは複数をハイにセットするものとして説明された。しかし、このプロセスは、確かに、反対の順序で発生することができる。たとえば、コンピュータ12eが、コンピュータ12aに書き込むことを試みている場合に、コンピュータ12eは、コンピュータ12eとコンピュータ12aとの間の書込信号線20をハイにセットする。コンピュータ12eとコンピュータ12aとの間の読取信号線18が、まだコンピュータ12aによってハイにセットされていない場合には、コンピュータ12eは、コンピュータ12aがその書込信号線20をハイにセットするまで単純に待つ。その後、上で述べたように、書込信号線18および読取信号線20の対応する対の両方がハイである時に、データ信号線22での転送を待っているデータが、転送される。その後、受取側のコンピュータ12(この例ではコンピュータ12a)は、送出側コンピュータ12eが書込信号線18を解放するや否や、この2つのコンピュータ(この例では12eおよび12a)の間の読取信号線18と書込信号線20との両方をロウにセットする。
コンピュータ12eなどのコンピュータ12が、書込を予期してその書込信号線20のうちの1つをハイにセットしている時に、必ず、そのコンピュータ12は、データが送られるコンピュータ12がその読取信号線18をすでにハイにセットしている(この場合にはデータが即座に送られる)のでない限り、適当な近接するコンピュータ12から、上で説明したようにデータが「要求」されるまで、本質的に電力を使用せずに単純に待つ。同様に、コンピュータ12が、読取を予期してその読取信号線18のうちの1つまたは複数をハイにセットしている時には、必ず、そのコンピュータ12は、選択されたコンピュータ12に接続された書込信号線20がこの2つのコンピュータ12の間で命令ワードを転送するためにハイになるまで、本質的に電力を使用せずに単純に待つ。
上で述べたように、コンピュータ12に説明したように機能させる複数の潜在的な手段および/または方法が存在する可能性がある。しかし、この本例では、コンピュータ12は、単に全般的に非同期に内部的に動作している(説明される非同期な形でのそれらの間のデータの転送に加えて)ので、そのように振る舞う。すなわち、命令は、一般に、順次式に完了される。書込命令または読取命令のいずれかが発生する時には、その命令が完了するまで(または、おそらくはその代わりに、「リセット」または類似物によってその命令が打ち切られるまで)、さらなるアクションはあり得ない。従来技術の意味での規則的なクロックパルスはない。そうではなく、パルスは、実行されている命令が読取タイプ命令もしくは書込タイプ命令ではない(読取タイプ命令または書込タイプ命令が、しばしば別の実体による、完了を必要とすると仮定して)時または読取タイプ動作もしくは書込タイプ動作が実際に完了した時のいずれかのみに、次の命令を達成するために生成される。
図3は、図1および2のコンピュータ12のうちの1つの例の全般的レイアウトを示すブロック図である。図3からわかるように、コンピュータ12のそれぞれは、全般的に、それ自体のRAM24およびROM26を有する自己完結型のコンピュータである。前に述べたように、コンピュータ12を、これらが本例で単一チップ上で組み合わされる場合に、時々、個々の「ノード」とも称する。
コンピュータ12の他の基本的な構成要素は、リターンスタック28(後で述べるRレジスタ29を含む)、命令エリア30、算術論理ユニット(「ALU」または「プロセッサ」)32、データスタック34、および命令をデコードするデコード論理セクション36である。当業者は、一般に、この本例のコンピュータ12などのスタックベースのコンピュータの動作に精通しているであろう。コンピュータ12は、データスタック34および別々のリターンスタック28を有するデュアルスタックコンピュータである。
本発明のこの実施形態では、コンピュータ12は、近接するコンピュータ12との通信用の4つの通信ポート38を有する。通信ポート38は、オフ状況、受取状況(コンピュータ12に信号を駆動するための)、および送出状況(コンピュータ12から信号を駆動するための)を有するトライステートドライバである。もちろん、特定のコンピュータ12が、コンピュータ12eの例など、アレイ(図1)の内側にあるのではない場合に、通信ポート38のうちの1つまたは複数が、少なくとも上で説明した理由から、その特定のコンピュータ内では使用されない。しかし、ダイ14のエッジに接する通信ポート38は、そのようなコンピュータ12内に設計されるまたはコンピュータ12の外部であるがこれに関連する、いずれかである追加回路を有して、そのような通信ポート38に外部I/Oポート39(図1)として働かせることができる。そのような外部I/Oポート39の例には、USB(universal serial bus)ポート、RS232シリアルバスポート、並列通信ポート、アナログ−ディジタル変換ポートおよび/またはディジタル−アナログ変換ポート、ならびに多数の他の可能な変形形態が含まれるが、これらに限定はされない。どのタイプの追加回路または変更された回路がこの目的に使用されるかにかかわりなく、本発明の現在説明されている実施形態によれば、それから受け取られる命令および/またはデータの処理に関する「外部」I/Oポート39の動作の方法は、本明細書で「内部」通信ポート38に関して説明されるものに似る。図1では、「エッジ」コンピュータ12fが、外部I/Oポート39を介して外部デバイス82と通信するための関連するインターフェース回路80(ブロック概略形式で図示)と共に示されている。
現在説明されている実施形態では、命令エリア30には、複数のレジスタ40が含まれ、レジスタ40には、この例では、Aレジスタ40a、Bレジスタ40b、およびPレジスタ40cが含まれる。この例では、Aレジスタ40aは、完全な18ビットレジスタであるが、Bレジスタ40bおよびPレジスタ40cは、9ビットレジスタである。
本発明は、この例によって限定されないが、このコンピュータ12は、ネイティブForth言語命令を実行するように実施される。Forthコンピュータ言語に精通した者が諒解するであろうとおり、Forth「ワード」として知られる複雑なForth命令は、コンピュータに設計されたネイティブプロセッサ命令から構成される。Forthワードの集合は、「辞書」として知られる。他の言語では、これが、「ライブラリ」として知られる場合がある。後でより詳細に説明するように、コンピュータ12は、RAM24から、ROM26から、または直接にデータバス16(図2)のうちの1つから、一時に18ビットを読み取る。しかし、Forthでは、ほとんどの命令(オペランドレス命令として知られる)が、そのオペランドをスタック28および34から直接に入手するので、これらの命令は、長さにおいて一般に5ビットのみであり、グループ内の最後の命令が3ビットだけを必要とする命令の限られたセットから選択されるという条件付きで、4つまでの命令を、単一の18ビット命令ワードに含めることができる(説明される実施形態では、最後の位置にある命令の下位2ビットが、「01」であると仮定される)。やはり図3にブロック概略形式で示されているのが、スロットシーケンサ42である。
本発明のこの実施形態では、データスタック34は、ALU32によって操作されるパラメータ用の後入れ先出しスタックであり、リターンスタック28は、CALL命令およびRETURN命令によって使用される入れ子になったリターンアドレス用の後入れ先出しスタックである。リターンスタック28は、後で多少より詳細に述べるように、PUSH命令、POP命令、およびNEXT命令によっても使用される。データスタック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という番号を付けられた、その中の12個の追加ハードウェアレジスタ(この図には具体的には図示せず)を有する円形レジスタアレイ28aを有する。
本発明のこの実施形態では、スタックオーバーフロー状態またはスタックアンダーフロー状態のハードウェア検出はない。一般に、従来技術のプロセッサは、スタックポインタおよびメモリ管理、または類似物を使用し、スタックポインタが、スタックに割り振られたメモリの範囲の外になった時に、エラー状態がフラグを立てられる。これは、スタックがメモリ内に置かれる場合に、オーバーフローまたはアンダーフローが、スタックの一部になることを意図されていないものを上書きするか、スタックアイテムとして使用するからである。しかし、本発明は、スタック28および34の最下部に円形アレイ28aおよび34aを有するので、スタック28および34が、スタックエリアの外にオーバーフローし、またはアンダーフローすることはできない。そうではなく、円形アレイ28aおよび34aは、単に、レジスタの円形アレイをラップアラウンドする。スタック28および34は、有限の深さを有するので、スタック28または34の最上部に何かをプッシュすることは、最下部の何かが上書きされることを意味する。データスタック34に10個を超えるアイテムをプッシュすること、またはリターンスタック28に13個を超えるアイテムをプッシュすることは、それを行うことがスタック28または34の最下部のアイテムの上書きをもたらすことの知識を伴って行われなければならない。スタック28および34のアイテムの個数を記憶し、各々のスタック28および34が保持できるものより多数のアイテムを置くことを試みないようにするのは、ソフトウェアの責任である。ハードウェアは、スタックの最下部でのアイテムの上書きを検出せず、エラーとしてこれにフラグを立てることはしない。しかし、ソフトウェアが、複数の形でスタック28および34の最下部の円形アレイ28aおよび34aを利用できることに留意されたい。単に1つの例として、ソフトウェアは、単純に、スタック28または34がいつでも「空」であると仮定することができる。スタックから古いアイテムをクリアする必要はない。というのは、古いアイテムは、最下部に向かって押し下げられ、この最下部で、古いアイテムが、スタックが満たされた時に失われるからである。したがって、スタックが空であるとプログラムが仮定するために、初期化すべきものはない。
本明細書で前に述べたレジスタのほかに、命令エリア30は、現在使用されつつある命令ワード48を保管する18ビットの命令レジスタ30aと、現在実行されつつある特定の命令内の命令用の追加の5ビットのオペコードレジスタ30bとを有する。
図4は、命令ワード48の概略図である(命令ワード48が、実際には命令、データ、またはそのある組合せを含むことができることに留意されたい)。命令ワード48は、18個のビット50からなる。これはバイナリコンピュータなので、ビット50のそれぞれは、「1」または「0」になる。本明細書で前に述べたように、18ビット幅の命令ワード48は、スロット0 54a、スロット1 54b、スロット2 54c、およびスロット3 54dと呼ばれる4つのスロット54内に4つまでの命令52を含むことができる。本発明の好ましい実施形態では、18ビットの命令ワード48は、必ずまとめて読み取られる。したがって、命令ワード48に4つまでの命令を有する可能性が必ずあるので、no−op(ノーオペレーション)命令が、使用可能なスロット54のすべてを使用することが不必要または望ましくない場合を提供するために、コンピュータ12の命令セットに含まれる。本発明の一特定の実施形態によれば、1つおきのスロット(具体的には、スロット1 54bおよびスロット3 54c)内のビット50の極性(アクティブロウと比較してアクティブハイ)が、逆転される。しかし、これは、現在説明されている発明の必要な態様ではなく、したがって、本発明をよりよく説明するために、この潜在的な複雑化を、次の議論では避ける。
図5は、図3のスロットシーケンサ42の概略図である。図5からわかるように、スロットシーケンサ42は、リングに配置された複数(この例では14個)のインバータ56および1つのNANDゲート58を有し、信号が、14個のインバータ56およびNANDゲート58を通って進む時に奇数回反転されるようになっている。信号は、ORゲート60への2つの入力のいずれかがハイになる時に、スロットシーケンサ42内で開始される。第1ORゲート入力62は、実行されている命令52のビットi4 66(図4)から導出される。ビットi4がハイの場合には、その特定の命令52は、ALU命令であり、i4ビット66は、「1」である。i4ビットが「1」の時には、第1ORゲート入力62は、ハイであり、スロットシーケンサ42は、パルスを開始するようにトリガされ、このパルスが、次の命令52の実行を引き起こす。
スロットシーケンサ42が、第1ORゲート入力62がハイになることによってまたは第2ORゲート入力64がハイになる(後で述べるように)ことによってのいずれかでトリガされる時に、信号が、2回スロットシーケンサ42を通って進み、そのたびにスロットシーケンサ出力68で出力が作られる。信号が初めてスロットシーケンサ出力68に進む時に、その信号は、ロウであり、2回目には、スロットシーケンサ出力68での出力は、ハイになる。スロットシーケンサ出力68からの比較的幅広い出力は、パルスジェネレータ70(ブロック概略形式で図示)に供給され、パルスジェネレータ70は、出力として狭いタイミングパルスを作る。当業者は、狭いタイミングパルスが、コンピュータ12の動作を正確に開始するのに望ましいことを認めるであろう。
実行されている特定の命令52が、読取命令または書込命令であるか、実行されている命令52がシーケンス内の次の命令52の即座の実行をトリガすることが望まれないすべての他の命令である時には、i4ビット66は、「0」(ロウ)であり、したがって、第1ORゲート入力62は、やはりロウである。当業者は、コンピュータ12などのデバイス内のイベントのタイミングが、一般に非常にクリティカルであり、これに例外がないことを認めるであろう。スロットシーケンサ42を調べる時に、当業者は、リングの第2「ラップ」を開始するために、信号がNANDゲート58を過ぎて循環した後になるまで、ORゲート60からの出力が、ハイのままにならなければならないことを認めるであろう。その後、ORゲート60からの出力は、回路の望まれない継続される発振を防ぐために、その第2「ラップ」中にロウになる。
上の議論に鑑みて諒解できるとおり、i4ビット66が「0」の時には、後で述べる第2ORゲート入力66がハイではないと仮定すると、スロットシーケンサ42は、トリガされない。
上で述べたように、各命令52のi4ビット66は、その命令が入力または出力を必要としない命令であるのではなく、その命令が読取タイプまたは書込タイプの命令であるか否かに従ってセットされる。命令52内の残りのビット50は、その命令の特定のオペコードの残りを提供する。読取タイプまたは書込タイプの命令の場合に、これらのビットのうちの1つまたは複数を使用して、データがその特定のコンピュータ12から読み取られるのかこれに書き込まれるのかを示すことができる。本発明の本例では、書き込まれるデータは、必ずTレジスタ44(データスタック34の最上部)から来るが、データを、Tレジスタ44またはそこからそのデータを実行できる命令エリア30のいずれかに選択的に読み込むことができる。これは、本発明のこの特定の実施形態で、データまたは命令のいずれかを、本明細書に記載の形で通信することができ、したがって、命令をデータバス16から直接に実行できるからである。
ビット50のうちの1つまたは複数が、ポート38のいずれかが読取または書込のためにセットされる場合に、どのポート38がそれであるかを示すのに使用される。この後者の動作は、任意選択として、Aレジスタ40a、Bレジスタ40b、または類似物などのレジスタ40を指定するために1つまたは複数のビットを使用することによって達成される。そのような例では、指定されたレジスタ40は、ポート38のそれぞれ(および、メモリ(RAM24またはROM26)、外部通信ポート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を停止させる(または、より正確にはそのさらなる動作をイネーブル(enable)しない)機構は、本明細書で前に述べた。短く言うと、命令52のオペコードは、ビット位置i4 66に「0」を有し、したがって、ORゲート60の第1ORゲート入力62は、ロウであり、したがって、スロットシーケンサ42は、イネーブルするパルスを生成するためにトリガはされない。
読取タイプまたは書込タイプの命令が完了した時に、コンピュータ12eの動作がどのように再開されるかに関して、そのための機構は、次の通りである。コンピュータ12eと12cとの間の読取信号線18と対応する書込信号線20との両方がハイの時に、信号線18と20との両方が、それをハイに保持している各々のコンピュータ12のそれぞれによって解放される(この例では、送出側のコンピュータ12eが、書込信号線18をハイに保持しており、受取側のコンピュータ12cが、読取信号線20をハイに保持している)。次に、受取側のコンピュータ12cが、信号線18と20との両方をロウにプルする。実際の実践では、受取側のコンピュータ12cは、送出側のコンピュータ12eが書込信号線18を解放する前に、信号線18および20をロウにプルすることを試みることができる。しかし、信号線18および20は、ハイにプルされ、ロウには弱く保持される(ラッチされる)のみなので、信号線18または20をロウにプルするすべての試みは、その信号線18または20がそれをハイに保持しているコンピュータ12によって解放されるまでは、実際には成功しない。
データバス16内の信号線18と20との両方がロウにプルされる時には、これが、「肯定応答」状態である。コンピュータ12eおよびコンピュータ12cのそれぞれは、肯定応答状態の際に、それ自体の内部の肯定応答信号線72をハイにセットする。図5からわかるように、肯定応答信号線72は、第2ORゲート入力64に供給される。ORゲート60の入力62または64のいずれかへの入力は、ORゲート60の出力をハイにするので、これは、本明細書で前に説明した形でのスロットシーケンサ42の動作を開始し、命令ワード48内の次のスロット54内の命令52が、実行される。肯定応答信号線72は、偽のアドレスがアドレスバスに達するのを防ぐために、次の命令52がデコードされるまで、ハイのままになる。
実行されている命令52が命令ワード48のスロット3位置にあるすべての場合に、コンピュータ12は、もちろんビットi4 66が「0」でない限り、また、スロット3内の命令が、後でより詳細に述べる「next」命令でない限り、次の待っている18ビットの命令ワード48をフェッチする。
実際の実践では、本発明的機構には、命令を「プリフェッチする」方法および装置が含まれ、命令ワード48内のすべての命令52の実行の終りの前に、フェッチを開始できるようになっている。しかし、これも、現在説明されている発明の必要な態様ではない。
コンピュータ12eがコンピュータ12cに書き込んでいる上の例を、詳細に説明した。上の議論に鑑みて諒解できるとおり、これらの動作は、コンピュータ12eがまずコンピュータ12cへの書込を試みているのか、コンピュータ12cがまずコンピュータ12eからの読取を試みているのかにかかわりなく、本質的に同一である。この動作は、両方のコンピュータ12eと12cとの準備ができるまで完了することができず、コンピュータ12eまたは12cのどちらが先に準備ができても、そのコンピュータは、他方のコンピュータ12eまたは12cが転送を完了するまで、単純に「眠る(goes to sleep)」。上で説明したプロセスを見るもう1つの形は、実際に、書き込むコンピュータ12eと受け取るコンピュータ12cとの両方が、これらがそれぞれ書込命令および読取命令を実行する時に眠るが、このトランザクションに最後に入るコンピュータは、読取信号線18と書込信号線20との両方がハイである時にほぼ瞬間的に再覚醒し、このトランザクションを開始した第1のコンピュータ12は、第2のコンピュータ12がこのプロセスを完了する準備ができるまで、ほぼ無期限に眠ったままになることができるということである。
本発明人は、デバイス間の効率的な非同期通信を可能にするための主要な特徴が、ある種の肯定応答信号または肯定応答状態であると考える。従来技術では、デバイス間のほとんどの通信が、刻時され、受取側デバイスがデータを正しく受け取ったことを送出側デバイスが知る直接の形はない。チェックサム動作などの方法が、データが正しく受け取られたことを保証することを試みるのに使用されてきた場合があるが、送出側デバイスは、動作が完了したことの直接の表示を有しない。本発明的方法は、本明細書で説明するように、デバイス間の非同期通信を可能にするか、少なくとも実用的にする、必要な肯定応答条件を提供する。さらに、この肯定応答条件は、デバイスのうちの1つまたは複数が、肯定応答条件が発生するまで「眠る」ことを可能にもする。もちろん、肯定応答条件は、コンピュータ12の間で送られる(相互接続するデータバス16上でまたは別々の信号線上でのいずれかで)別々の信号によってコンピュータ12の間で通信することができ、そのような肯定応答信号は、本発明のこの態様の範囲に含まれるはずである。しかし、本明細書で説明する発明の実施形態によれば、肯定応答の方法が、通信を実際にもたらすために、追加の信号、クロックサイクル、タイミングパルス、または説明されたものを超えるすべてのそのようなリソースを必要としないという点で、これに含まれるさらなる経済があることを諒解することができる。
4つの命令52を、1つの命令ワード48に含めることができ、本発明によれば、命令ワード48全体を、コンピュータ12の間で一時に通信することができるので、これは、非常に小さいプログラムを1つの動作で送る理想的な機会を提示する。たとえば、小さい「For/Next」ループのほとんどを、単一の命令ワード48内で実施することができる。図6は、マイクロループ100の概略図である。マイクロループ100は、他の従来技術のループと異なって、FOR命令102およびNEXT命令104を有する。命令ワード48(図4)には、4つもの命令52が含まれるので、命令ワード48は、単一の命令ワード48内に3つの動作命令106を含むことができる。動作命令106は、本質的に、プログラマがマイクロループ100内に含めることを望む可能性がある使用可能な命令のどれにでもすることができる。あるコンピュータ12から別のコンピュータに送ることができるマイクロループ100の通常の例は、第1のコンピュータ12が使用可能なRAM24容量を「借りる」ことができるように、第2のコンピュータ12のRAM24から読み取るかこれに書き込む命令の組とすることができる。
FOR命令102は、望まれる反復の回数を表す値をリターンスタック28にプッシュする。すなわち、データスタック34の最上部にあるTレジスタ44の値が、リターンスタック28のRレジスタ29にPUSHされる。FOR命令102は、しばしば命令ワード48のスロット3 54dに置かれるが、実際にはどのスロット54にも置くことができる。FOR命令102がスロット3 54dに置かれていない場合には、命令ワード48内の残りの命令52は、マイクロループ100に進む前に実行され、このマイクロループ100は、一般に、次にロードされる命令ワード48になる。
本発明の現在説明されている実施形態によれば、図6に示されたNEXT命令104は、特定のタイプのNEXT命令104である。これは、この命令がスロット3 54d(図4)に置かれているからである。本発明のこの実施形態によれば、「普通の」NEXT命令(図示せず)に続く特定の命令ワード 40内のすべてのデータは、アドレス(for/nextループが始まるアドレス)であると仮定される。NEXT命令104のオペコードは、それが4つのスロット54のうちのどれにあるかにかかわりなく同一である(本明細書で前に述べたように、これがスロット3 54dにある場合に、最初の2桁が、明示的に書き込まれるのではなく、仮定されるという明白な例外がある)。しかし、NEXT命令104がスロット3 54dにある時には、これに続くアドレスデータは存在し得ないので、スロット3 54dにあるNEXT命令104は、MICRO−NEXT命令104aであると仮定することもできる。MICRO−NEXT命令104aは、リターンすべきアドレスとして、それが置かれているのと同一の命令ワード48のスロット0 54aに置かれた最初の命令52のアドレスを使用する。MICRO−NEXT命令104aはまた、Rレジスタ29から値(最初にFOR命令102によってそこにPUSHされた)をとり、これを1つだけ減分し、次に、これをRレジスタ29に返す。Rレジスタ29の値が、所定の値(0など)に達した時に、MICRO−NEXT命令は、次の命令ワード48をロードし、本明細書で前に説明したように継続する。しかし、MICRO−NEXT命令104aが、所定の値より大きい値をRレジスタ29から読み取る時には、MICRO−NEXT命令104aは、それ自体の命令ワード48のスロット0 54aの動作を再開し、そのスロット0からスロット3(両端を含む)に置かれた3つの命令52を実行する。すなわち、MICRO−NEXT命令104aは、必ず、本発明のこの実施形態では、3つの動作命令106を実行する。いくつかの例で、3つの潜在的に使用可能な命令52のすべてを使用することが望まれない場合があるので、「no−op」命令が、必要に応じてスロット54のうちの1つまたは2つを充填するのに使用可能である。
マイクロループ100を、完全に単一のコンピュータ12内で使用できることに留意されたい。実際に、使用可能な機械語命令のセット全体が、動作命令106としての使用に使用可能であり、マイクロループの応用および使用は、プログラマの想像力によってのみ制限される。しかし、単一の命令ワード48内のマイクロループ100全体を実行する能力が、コンピュータ12が命令ワード48を近傍のコンピュータ12に送ってその中の命令52を本質的にデータバス16から直接に実行することを可能にする能力と組み合わされた時に、これは、コンピュータ12がその近傍のリソースを利用することを可能にする強力なツールをもたらす。
単一のデータワード48内にすべてが含まれる、小さいマイクロループ100を、本明細書で説明するようにコンピュータ12の間で通信することができ、これを、本明細書で説明するように、命令ワード48に含まれる命令のすべての他のセットと全く同様に、受取側のコンピュータ12の通信ポート38から直接に実行することができる。この種の「マイクロループ」100の多数の用途があるが、通常の使用は、1つのコンピュータ12があるデータを近傍のコンピュータ12のメモリに保管することを望む場合であるはずである。たとえば、そのコンピュータは、まず、着信データワードを特定のメモリアドレスに保管し、次に、そのアドレスを増分し、次に、所与の回数の反復(転送されるデータワードの個数)について繰り返すように指示する命令をその近傍のコンピュータに送る。そのデータを読み戻すために、第1のコンピュータは、類似するマイクロループを使用して、保管されたデータを第1のコンピュータに書き戻すように第2のコンピュータ(ここではストレージに使用されたコンピュータ)に指示するだけであるはずである。
本明細書で説明する直接実行態様と共にマイクロループ100構造を使用することによって、コンピュータ12は、データストレージの必要が各個々のコンピュータ12に組み込まれた比較的小さい容量を超える時に、余分なデータのストレージのために、そうでなければ休んでいる近傍のコンピュータ12を使用することができる。この例を、データストレージに関して説明したが、同一の技法を、他のコンピュータ12にある動作を実行させ、その結果を保管させ、所与の回数だけ繰り返させるマイクロループ100を作成することによって、コンピュータ12がその近傍にその計算リソースを共用させることを可能にするのに同等に使用することができる。諒解できるとおり、この発明的マイクロループ100構造を使用できる形の個数は、ほぼ無限である。
本明細書で前に述べたように、本発明の現在説明されている実施形態では、データまたは命令のいずれかを、本明細書で説明する形で通信することができ、したがって、命令を、本質的にデータバス16から直接に実行することができる。すなわち、命令をRAM24に保管し、その後、実行の前にこれらをリコールする必要はない。そうではなく、本発明のこの態様によれば、通信ポート38で受け取られた命令ワード48は、RAM24またはROM26からリコールされた場合と本質的に異なって扱われるのではない。この相違の欠如は、前の議論で明らかにされているが、本明細書では、コンピュータ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のシーケンスがRAM24またはROM26からフェッチされる場合にそうであるように、しばしば自動的に増分される。しかし、この一般的なルールに対する複数の例外がある。たとえば、JUMP命令またはCALL命令は、増分されるのではなく、Pレジスタ40cに、そのJUMP命令またはCALL命令の後に前にロードされた命令ワード48の残りに含まれるデータによって指定されるアドレスがロードされることを引き起こす。Pレジスタ40cが、その後、ポート38のうちの1つまたは複数に対応するアドレスをロードされる時に、次の命令ワード48は、そのポート38から命令レジスタ30aにロードされる。Pレジスタ40cは、命令ワード48がポート38から命令レジスタ30aに取り出されたばかりである時にも、増分されない。そうではなく、Pレジスタ40cは、特定のJUMP命令またはCALL命令が実行されてPレジスタ40cが変更されるまで、その同一のポートアドレスを保持し続ける。すなわち、コンピュータ12が、次の命令をポート38から探すように指示されたならば、そのコンピュータ12は、次の命令ワード48についてメモリ(RAM24またはROM26)に戻るなど、他の場所を探すように指示されるまで、その同一のポート38(1つまたは複数のポート)から命令を探し続ける。
上で注記したように、コンピュータ12は、現在の命令ワード48内に実行可能命令がもう残っていない時に、次にフェッチされる18ビットを命令レジスタ30aに置かなければならないことを知っている。デフォルトで、JUMP命令またはCALL命令の後には(あるいは、本明細書で具体的には述べないある種の他の命令の後にも)、現在の命令ワード48内に実行可能命令はもう残っていない。というのは、定義により、JUMP命令またはCALL命令に続く18ビット命令ワードの残りが、そのJUMP命令またはCALL命令によって参照されるアドレス専用であるからである。これを述べるもう1つの形は、上で説明したプロセスが、JUMP命令またはCALL命令を、任意選択としてメモリアドレスだけではなくポート38または類似物へのJUMP命令またはCALL命令とすることができるという事実を含むがこれに限定されない多数の形で独自であることである。
本明細書で前に述べたように、コンピュータ12が、次の命令を1つのポート38からまたはポート38のグループのいずれかから探すことができることを想起されたい。したがって、ポート38のさまざまな組合せに対応するために、アドレスが供給される。たとえば、コンピュータが、ポート38のグループから命令をフェッチするように指示される時に、そのコンピュータは、選択されたポート38のいずれかから、最初に使用可能な命令ワード48を受け入れる。近傍のコンピュータ12のどれもが、まだこれらのポート38のいずれかへの書込を試みていない場合には、当のコンピュータ12は、上で詳細に説明したように、近傍が選択されたポート38に実際に書き込むまで、「眠る」。
図7は、上で説明した直接実行方法120の例を示す流れ図である。動作の「普通の」流れは、本明細書で前に述べたように、命令レジスタ30aに実行可能命令がもう残っていない時に開始される。そのような時に、コンピュータ12は、「ワードをフェッチする」動作122によって示されるように、もう1つの命令ワードを「フェッチする」(用語「フェッチ」が、本明細書では、実際のFETCH命令が使用されないという点で、一般的な意味で使用されることに留意されたい)。その動作は、Pレジスタ40c内のアドレスに従って達成される(図7の流れ図で「アドレス」判断動作124によって示されるように)。Pレジスタ40c内のアドレスが、RAM24またはROM26のアドレスである場合には、次の命令ワード48は、「メモリからフェッチする」動作126で、指定されたメモリ位置から取り出される。その一方で、Pレジスタ40c内のアドレスが、1つまたは複数のポート38のアドレスである(メモリアドレスではない)場合には、次の命令ワード48は、「ポートからフェッチする」動作128で、指定されたポート位置から取り出される。どちらの場合でも、取り出された命令ワード48は、「命令ワードを取り出す」動作130で、命令レジスタ30c内に置かれる。「命令ワードを実行する」動作132で、命令ワード48のスロット54内の命令が、本明細書で前に説明したように、順次達成される。
「ジャンプ」判断動作134では、命令ワード48内の動作の1つがJUMP命令または本明細書で前に説明した継続される「普通の」進行から動作をそらせる他の命令であるかどうかを判定する。そうである場合には、JUMP(または他のそのような)命令の後の命令ワード48内で供給されるアドレスが、「Pレジスタにロードする」動作136でPレジスタ40cに供給され、このシーケンスは、図7に示されているように、もう一度「ワードをフェッチする」動作122で開始される。そうでない場合には、次のアクションは、「ポートアドレス」判断動作138に示されているように、最後にフェッチされた命令がポート38からまたはメモリアドレスからのどちらであるかに依存する。最後にフェッチされた命令がポート38からであった場合には、Pレジスタ30aに対する変更は行われず、このシーケンスが、「ワードをフェッチする」動作122から開始して繰り返される。その一方で、最後にフェッチされた命令がメモリアドレス(RAM24またはROM26)からであった場合には、「ワードをフェッチする」動作122が達成される前に、Pレジスタ30a内のアドレスが、図7の「Pレジスタを増分する」動作140によって示されるように増分される。
上の説明は、実際の動作ステップを表すことを意図されたものではない。そうではなく、これは、本発明の説明される実施形態に従って実行される、さまざまな判断とそれから生じる動作との図である。実際に、この流れ図は、説明され図示された各動作が別々の別個の順次ステップを必要とすることを意味すると理解されてはならない。実際に、図7の流れ図の説明された動作の多数が、実践において、一般に同時に達成される。
図8は、コンピュータに警告する本発明的な改善された方法の例を示す流れ図である。本明細書で前に説明したように、説明される実施形態のコンピュータ12は、入力を待っている間に「眠る」。そのような入力は、図1から5に関して説明された実施形態のように、隣接するコンピュータ12からとすることができる。その代わりに、やはり本明細書で前に述べたように、ダイ14のエッジに接する通信ポート38を有するコンピュータ12は、そのようなコンピュータ12内に設計されるまたはコンピュータ12の外部であるがこれに関連するかのいずれかである追加回路を有して、そのような通信ポート38に外部I/Oポート39として働かせることができる。どちらの場合でも、本発明的組合せは、「眠っている」コンピュータ12を、入力が受け取られた時に覚醒し(awake)、ある規定されたアクションに飛び込む用意を整え、準備をさせることができるという追加の利点をもたらすことができる。したがって、本発明は、入力が外部入力デバイスまたはアレイ10内の別のコンピュータ12のどちらから来るかにかかわらず、そのような入力を処理するための割込みの使用の代替案をも提供する。
割込みを処理するために、コンピュータ12に、それが行っていることを停止(または一時停止)させるのではなく、本明細書で説明する本発明的組合せは、上で説明したように、コンピュータ12が「眠っているが警告」状態になることを可能にする。したがって、1つまたは複数のコンピュータ12を、ある種の入力を受け取り、これに作用するように割り当てることができる。この特徴を使用できる多数の形があるが、単に1つのそのような「コンピュータ警告方法」を示すように働く例を、図8に示し、符号150によって本明細書で数え上げる。図8からわかるように、「警告状態に入る」動作152で、コンピュータ12が、「眠」らされ、1つの近傍のコンピュータ12もしくは複数の(4つすべてもの多数の)近傍のコンピュータ、または「エッジ」コンピュータ12の場合には外部入力からの入力、あるいは外部入力および/または近傍のコンピュータ12からの入力のある組合せを待っているようになる。本明細書で前に説明したように、コンピュータ12は、読取動作または書込動作のいずれかの完了を待ちながら「眠る」ことができる。コンピュータ12が、この例で説明するように、ある可能な「入力」を待つのに使用されている場合に、待っているコンピュータが、近傍または外側のソースからの「書込」を待って、その読取信号線18をハイにセットしていると仮定することが自然であるはずである。実際に、これが通常の条件になることが、現在は予期されている。しかし、待っているコンピュータ12が、その書込信号線20をハイにセットすること、したがって、近傍または外側のソースがそのコンピュータから「読み取る」時に覚醒されることは、本発明の範囲内である。
「覚醒する」動作154で、眠っているコンピュータ12は、隣接するコンピュータ12または外部デバイス39が、待たれているトランザクションを完了したので、動作を再開させられる。待たれているトランザクションが、実行される命令ワード48の受取であった場合に、コンピュータ12は、その中の命令の実行に進む。待たれているトランザクションが、データの受取であった場合に、コンピュータ12は、キュー内の次の命令の実行に進み、この命令は、現在の命令ワード48内の次のスロット54内の命令であるか、次の命令ワード48がロードされ、次の命令が、その次の命令ワード48のスロット0内にある、のいずれかである。どの場合でも、説明される形で使用されている間に、その、次の命令が、受け取られたばかりの入力を処理するための1つまたは複数の命令のシーケンスを開始する。そのような入力を処理するオプションには、ある事前定義された機能を内部で実行するために反応すること、アレイ10内の他のコンピュータ12のうちの1つまたは複数と通信すること、または入力を無視することさえ(普通の従来技術の割込みを規定された条件の下で無視できるのと同様に)含めることができる。このオプションは、図8では「入力に作用する」動作156として示されている。いくつかの場合に、入力の内容が重要でない場合があることに留意されたい。いくつかの場合に、入力の内容は、たとえば、外部デバイスが、関心を持たれている通信を試みたという事実そのものにすぎない場合がある。
コンピュータ12に、図8に示された形で「警告」コンピュータとして働くタスクが割り当てられる場合に、そのコンピュータ12は、一般に、図8に示されているように「眠っているが警告」状況に戻る。しかし、監視される特定の1つまたは複数の入力を監視する必要がもはやない時またはアレイ内のコンピュータ12のうちのある他のコンピュータにそのタスクを転送することがより便利である時など、コンピュータ12にある他のタスクを割り当てるオプションが常に開かれている。
当業者は、上で説明されたこの動作モードが、割込みの普通の使用に対するより効率的な代替案として有用になることを認めるであろう。コンピュータ12が、その読取信号線18(または書込信号線20)のうちの1つまたは複数をハイにセットしている時に、そのコンピュータ12を、「警告」状態であると言うことができる。警告状態では、コンピュータ12は、ハイにセットされている1つまたは複数の読取信号線18に対応するデータバス16でそのコンピュータ12に送られたすべての命令を即座に実行する準備ができており、あるいは、その代わりに、データバス16を介して転送されたデータに作用する準備ができている。使用可能なコンピュータ12のアレイがある場合に、その1つまたは複数を、入力の規定された組のどれもがアクションを起こすようにそれをトリガするように、いつでも、上で説明した警告状態になるように使用することができる。これは、コンピュータの「注意を引く」のに普通の割込み技法を使用することより好ましい。というのは、割込みは、コンピュータが、割込み要求に応答して、ある種のデータを保管する、ある種のデータをロードするなどを行わなければならなくするからである。本発明によれば、コンピュータを、警告状態にし、関心を持たれている入力を待つこと専用にすることができ、単一の命令期間すら、そのような入力によってトリガされる命令の実行を開始するのに浪費されなくなる。やはり、現在説明されている実施形態で、警告状態のコンピュータが、実際には「眠っているが警告」であり、これは、それらのコンピュータが、本質的に電力を使用していないという意味で「眠っている」が、入力によってアクションを起こすように瞬間的にトリガされるという点で「警告」であることを意味する。しかし、「警告」状態を、「眠って」いない場合であってもコンピュータ内で実施できることは、本発明のこの態様の範囲内である。説明された警告状態は、本質的に、普通の従来技術の割込み(ハードウェア割込みまたはソフトウェア割込みのいずれか)がそうでなければ使用されていた可能性があるすべての状況で使用することができる。
図9は、コンピュータ警告方法150aのもう1つの例である。これは、監視するコンピュータ12f(図1)と、ある他のタスクに割り当てられたもう1つのコンピュータ12g(図1)との間の相互作用が望ましいか必要である、1つの例にすぎない。図9からわかるように、コンピュータ12fおよび12gのそれぞれについて1つの、2つの全般的に独立の流れ図がある。これは、本発明の協力するコプロセッサ手法の性質を示し、ここで、コンピュータ12のそれぞれは、相互作用が本明細書に記載のように達成される機会を除いて、そのコンピュータが全般的に独立に実行するそれ自体の割当を有する。
コンピュータ12fに関して、「警告状況に入る」動作152、「覚醒する」動作154、および「入力に作用する」動作のそれぞれは、コンピュータ警告方法150の第1の例に関して本明細書で前に説明したように達成される。しかし、この例は、コンピュータ12fと12gとの間の相互作用の可能な必要を予期しているので、「入力に作用する」動作156に続いて、コンピュータ12fは、「情報を送るか」判断動作158に入り、ここで、そのプログラミングに従って、受け取られたばかりの入力が他方のコンピュータ12gの注意を必要とするかどうかが判定される。そうでない場合には、コンピュータ12fは、警告状況または本明細書で前に述べたものなどのある他の代替物に戻る。そうである場合には、コンピュータ12fは、「他方に送る」動作160で、本明細書で前に詳細に説明したように、コンピュータ12gとの通信を開始する。プログラマの選択に従って、コンピュータ12fが、外部デバイス82からの入力に応答して内部的に生成した可能性があるものなどまたは外部デバイス82から受け取った可能性があるものなどの命令を送ることができることに留意されたい。代替案では、コンピュータ12fが、コンピュータ12gにデータを渡すことができ、そのようなデータは、コンピュータ12fで内部的に生成するか、外部デバイス82から「パススルー」されたものとすることができる。もう1つの代替案は、コンピュータ12fが、いくつかの状況で、コンピュータ12gが外部デバイス82から入力を受け取る時にコンピュータ12gからの読取を試みることができることとすることができる。これらの機会のすべてが、プログラマが使用可能である。
それに対して、コンピュータ12gは、一般に、「主機能を実行する」動作162に示されているように、それに割り当てられた主タスクが何であれ、その主タスクを達成するためにコードを実行している。しかし、プログラマが、コンピュータ12fと12gとの間の随時の相互作用が望ましいと判断した場合に、そのプログラマは、コンピュータ12gが時折一時停止して、「入力を探す」動作166に示されているように、その近傍のうちの1つまたは複数が通信を試みたかどうかを調べることを提供する。「入力か」判断動作158によって示されるように、待っている通信がある場合(たとえば、コンピュータ12fがすでにコンピュータ12gへの書込を開始している場合など)。開始された通信がある場合(yes)、コンピュータ12gは、「他方から受け取る」動作170で、本明細書で前に詳細に説明したように、その通信を完了する。そうでない場合には、コンピュータ12gは、図9に示されているように、その主機能の実行162に戻る。「他方から受け取る」動作170の後に、コンピュータ12gは、「入力に作用する」動作172で、受け取られた入力に作用する。上で述べたように、プログラマは、コンピュータ12gが、入力として命令を期待していることを提供することができ、この場合に、コンピュータ12gは、本明細書で前に述べたように、その命令を実行する。その代わりに、コンピュータ12gを、作用されるデータを期待するようにプログラムすることができる。
図9の例では、「入力に作用する」動作172に続いて、コンピュータ12gが、その主機能の達成に戻る(すなわち、「主機能を実行する」動作162に戻る)ことが示されている。しかし、さらに複雑な例の可能性が、確かに存在する。たとえば、プログラミングを、コンピュータ12fから受け取られたある種の入力が、前に割り当てられた主機能を打ち切らせ、新しい機能を開始させるものとすることができ、あるいは、コンピュータ12fが、単純に一時的に停止し、さらなる入力を待つものとすることができる。当業者が認めるとおり、ここでのアクションに関するさまざまな可能性は、プログラマの想像力によってのみ制限される。
本明細書で説明される本発明の実施形態によれば、所与のコンピュータ12は、別のコンピュータ12が、そうでなければ割込みを必要とする可能性がある入力の監視および処理というタスクを割り当てられるので、タスクを実行している間に割り込まれる必要がない。しかし、別のタスクの処理で忙しいコンピュータ12は、入力についてそのポート38を調べることをそのプログラミングがもたらさない限り、かつ、それがもたらされるまで、邪魔されることもできないことに留意することが興味深い。したがって、コンピュータ12に他の入力を調べるために一時停止させることが、時々望ましい。本明細書で説明されているものが、以前は単一のプロセッサによって達成された可能性があるタスクが新しい興味深い形で複数のプロセッサの間で分割される「協力マルチタスキング」として記述できるコンピューティングのパラダイムの例であることを認めることが重要である。
さまざまな変更を、本発明の価値または範囲を変更せずに本発明に対して行うことができる。たとえば、本発明を、本明細書で特定のコンピュータ12の例を使用して説明したが、これらの発明的態様の多くまたはすべてが、他のコンピュータ設計、他の種類のコンピュータアレイ、および類似物にたやすく適合可能である。
同様に、本発明を、本明細書で主に単一のダイ14上のアレイ10内のコンピュータ12間の通信に関して説明したが、同一の原理および方法を、コンピュータ12とその専用メモリとの間またはアレイ10内のコンピュータ12と外部デバイスとの間の通信など、他のデバイス間通信を達成するのに使用するか、それに使用するために変更することができる。
発明的なコンピュータアレイ10、コンピュータ12、マイクロループ100、直接実行方法120および関連する装置、ならびにコンピュータ警告方法150の特定の例を本明細書で説明したが、まだ心に描かれたことがない、これらに関する非常に多数の応用例があると期待される。実際に、これらの発明的な方法および装置を非常にさまざまな用途に適合させることができることは、本発明の利点の1つである。
上記のすべてが、本発明の使用可能な実施形態の例の一部にすぎない。当業者は、多数の他の修正形態および代替形態を、本発明の趣旨および範囲から逸脱せずに作ることができることをたやすく観察するであろう。したがって、本明細書の開示は、限定的として意図されたものではなく、添付の特許請求の範囲は、本発明の範囲全体を含むものとして解釈されなければならない。
発明的なコンピュータアレイ10、コンピュータ12、マイクロループ100、直接実行方法120および関連する装置、ならびにコンピュータ警告方法150は、非常にさまざまなコンピュータ応用例で幅広く使用されることが意図されている。これらは、かなりの計算能力が要求され、なおかつ電力消費および熱発生量が重要な考慮事項である応用例で特に有用であると期待される。
本明細書で前に述べたように、本発明の適用可能性は、アレイ内のコンピュータ間の情報およびリソースの共用が、速度と多用性との両方で、非常に強化されるようになっている。また、コンピュータアレイと他のデバイスとの間の通信は、説明された方法および手段に従って強化される。
本発明のコンピュータアレイ10、コンピュータ12、マイクロループ100、直接実行方法120および関連する装置、ならびにコンピュータ警告方法150は、たやすく生産でき、既存のタスク、入出力デバイス、および類似物とたやすく一体化でき、本明細書で説明した利点が、もたらされるので、これらは、産業界ですぐに受け入れられると期待される。上記および他の理由から、本発明の有用性および産業上の利用可能性は、範囲において重要であると同時に持続期間において長続きするものになるであろう。
本発明によるコンピュータアレイを示す概略図である。 図1のコンピュータのサブセットと、図1の相互接続するデータバスのより詳細な図とを示す詳細図である。 図1および2のコンピュータのうちの1つの全般的レイアウトを示すブロック図である。 本発明的応用例による命令ワードを示す概略図である。 図3のスロットシーケンサ42を示す概略図である。 本発明によるマイクロループの例を示す流れ図である。 ポートからの命令を実行する発明的方法の例を示す流れ図である。 コンピュータに警告する発明的な改善された方法の例を示す流れ図である。 インアクティブプロセッサを覚醒させ、覚醒されたプロセッサから、入力データを処理するように動作する実行中のプロセッサに入力データを送る方法を示す流れ図である。
符号の説明
10 コンピュータアレイ
12 コンピュータ
14 ダイ
16 データバス
18 読取信号線
20 書込信号線
22 データ信号線
24 RAM
26 ROM
28 リターンスタック
28a 円形レジスタアレイ
29 Rレジスタ
30 命令エリア
30a 命令レジスタ
30b オペコードレジスタ
32 ALU
34 データスタック
34a 円形レジスタアレイ
36 デコードセクション
38 内部通信ポート
38a 上ポート
38b 右ポート
38c 左ポート
38d 下ポート
39 外部I/Oポート
40 レジスタ
40a Aレジスタ
40b Bレジスタ
40c Pレジスタ
42 スロットシーケンサ
44 Tレジスタ
46 Sレジスタ
48 命令ワード
50 ビット
52 命令
54 スロット
54a スロット0
54b スロット1
54c スロット2
54d スロット3
56 インバータ
58 NANDゲート
60 ORゲート
62 第1ORゲート入力
64 第2ORゲート入力
66 i4ビット
68 スロットシーケンサ出力
70 パルスジェネレータ
72 肯定応答信号線
80 インターフェース回路
82 外部デバイス
100 マイクロループ
102 FOR命令
104 NEXT命令
106 動作命令
108 MICRO−NEXT命令
120 直接実行方法
122 「ワードをフェッチする」動作
124 「アドレス」判断動作
126 「メモリからフェッチする」動作
128 「ポートからフェッチする」動作
130 「命令ワードを取り出す」動作
132 「命令ワードを実行する」動作
134 「ジャンプ」判断動作
136 「Pレジスタにロードする」動作
138 「ポートアドレス」判断動作
140 「Pレジスタを増分する」動作
150 コンピュータ警告方法
150a コンピュータ警告方法
152 「警告状態に入る」動作
154 「覚醒する」動作
156 「入力に作用する」動作
158 「情報を送るか」判断動作
160 「他方に送る」動作
162 「主機能を実行する」動作
166 「入力を探す」動作
168 「入力」判断動作
170 「他方から受け取る」動作
172 「入力に作用する」動作

Claims (21)

  1. 一連の命令を実行するコンピュータにおいて、
    実行される命令のグループを一時的に保管する命令レジスタと、
    そこから命令のグループが前記命令レジスタに取り出されるアドレスを保管するプログラムカウンタと
    を備え、前記プログラムカウンタ内の前記アドレスは、メモリアドレスまたはレジスタのアドレスのいずれかとすることができることを特徴とするコンピュータ。
  2. 前記プログラムカウンタ内のアドレスは、任意選択として、複数のレジスタをポイントすることができることを特徴とする請求項1に記載のコンピュータ。
  3. 前記命令のグループは、複数の命令を含むことを特徴とする請求項1に記載のコンピュータ。
  4. 前記命令レジスタ内に実行されるべき命令が残っていない時に、前記コンピュータは、前記プログラムカウンタ内に保管された前記アドレスに従って命令グループをフェッチすることを特徴とする請求項1に記載のコンピュータ。
  5. 前記コンピュータがメモリから命令のグループを取り出す時に、前記プログラムカウンタは増分され、
    前記コンピュータがレジスタから命令のグループを取り出す時に、前記プログラムカウンタは増分されないことを特徴とする請求項1に記載のコンピュータ。
  6. 前記命令のグループ内の命令がジャンプ命令である時に、前記プログラムカウンタは、前記ジャンプ命令によって示されるアドレスをロードされることを特徴とする請求項1に記載のコンピュータ。
  7. 前記ジャンプ命令によって示される前記アドレスは、前記命令のグループ内で前記ジャンプ命令に続くことを特徴とする請求項6に記載のコンピュータ。
  8. コンピュータ内で命令を実行する方法であって、
    (a)アドレスから命令のグループをフェッチすることであって、前記アドレスは、メモリ位置のアドレスまたはポートのアドレスのいずれかとすることができ、
    (b)実行されるために前記命令のグループを命令レジスタ内に置くことと、
    (c)前記命令のグループのうちの少なくとも1つを前記命令レジスタから実行することと
    を備えることを特徴とする方法。
  9. 前記アドレスは、プログラムカウンタレジスタから取り出されることを特徴とする請求項8に記載の方法。
  10. 前記命令グループ内の前記命令のすべてが実行された時に、命令のもう1つのグループはフェッチされることを特徴とする請求項8に記載の方法。
  11. 前記アドレスがメモリ位置の前記アドレスである場合に、前記アドレスは、前記命令のもう1つのグループがフェッチされる前に増分され、
    前記アドレスがポートの前記アドレスである場合に、前記アドレスは、前記命令のもう1つのグループがフェッチされる前に増分されないことを特徴とする請求項10に記載の方法。
  12. 前記アドレスは、複数のポートを示すことができることを特徴とする請求項8に記載の方法。
  13. ステップ(c)において、前記命令のグループ内のすべての命令を実行すること、または、ダイバージョン命令(diversion instruction)に出会うまで前記命令のグループ内の前記命令を実行することのいずれかをさらに備え、
    前記ダイバージョン命令は、もう1つの位置から命令のグループをフェッチすることをもたらす命令であることを特徴とする請求項8に記載の方法。
  14. 前記ダイバージョン命令は、JUMP命令であることを特徴とする請求項13に記載の方法。
  15. コンピュータ内でデータブロックを処理する方法であって、
    (a)アドレスからデータブロックをフェッチすることであって、前記アドレスは、メモリ位置のアドレスまたはポートのアドレスのいずれかとすることができ、
    (b)前記データブロックが命令のグループを含む場合に、前記データブロックを命令レジスタに供給することと、
    (c)前記データブロックが命令ではなくデータを含む場合に、前記データブロックをデータスタックの最上部に供給することと
    を備えることを特徴とする方法。
  16. 前記命令のグループは、任意選択で、データをも含むことができることを特徴とする請求項15に記載の方法。
  17. 前記データブロックが命令のグループまたはデータのどちらを含むかは、命令の前のグループ内の最後の命令が実行済みであるかどうかによって決定されることを特徴とする請求項15に記載の方法。
  18. 前記命令の前のグループ内の前記最後の命令が実行済みである時に、前記データブロックは命令のグループを含むと判定されることを特徴とする請求項17に記載の方法。
  19. 前記データスタックは、主データスタックであることを特徴とする請求項15に記載の方法。
  20. 前記データブロックが命令のグループを含む場合に、前記命令のグループからの命令を前記命令レジスタから実行することをさらに備えることを特徴とする請求項15に記載の方法。
  21. 一連の命令を実行するコンピュータであって、
    命令のグループを一時的に保管する命令レジスタと、
    前記命令レジスタに保管された前記命令を実行する論理ユニットと、
    前記命令のグループをポートから前記命令レジスタにフェッチする手段と
    を備えることを特徴とするコンピュータ。
JP2008555354A 2006-02-16 2007-02-16 入力ソースから直接の命令の実行 Pending JP2009527809A (ja)

Applications Claiming Priority (8)

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

Publications (2)

Publication Number Publication Date
JP2009527809A true JP2009527809A (ja) 2009-07-30
JP2009527809A5 JP2009527809A5 (ja) 2010-04-08

Family

ID=38066677

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2008555354A Pending JP2009527809A (ja) 2006-02-16 2007-02-16 入力ソースから直接の命令の実行
JP2008555372A Pending JP2009527816A (ja) 2006-02-16 2007-02-16 コンピュータへの入力を監視する方法および装置
JP2008555353A Pending JP2009527808A (ja) 2006-02-16 2007-02-16 マイクロループコンピュータ命令

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2008555372A Pending JP2009527816A (ja) 2006-02-16 2007-02-16 コンピュータへの入力を監視する方法および装置
JP2008555353A Pending JP2009527808A (ja) 2006-02-16 2007-02-16 マイクロループコンピュータ命令

Country Status (7)

Country Link
EP (3) EP1821200B1 (ja)
JP (3) JP2009527809A (ja)
KR (3) KR20090004394A (ja)
AT (2) ATE495491T1 (ja)
DE (1) DE602007011841D1 (ja)
TW (3) TW200809613A (ja)
WO (3) WO2007098006A2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020220935A1 (zh) * 2019-04-27 2020-11-05 中科寒武纪科技股份有限公司 运算装置
US11841822B2 (en) * 2019-04-27 2023-12-12 Cambricon Technologies Corporation Limited Fractal calculating device and method, integrated circuit and board card
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
GB2609243B (en) * 2021-07-26 2024-03-06 Advanced Risc Mach Ltd A data processing apparatus and method for transmitting triggered instructions between processing elements

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62288942A (ja) * 1986-05-30 1987-12-15 Yokogawa Hewlett Packard Ltd デ−タ処理装置
JPH03176757A (ja) * 1989-11-21 1991-07-31 Deutsche Itt Ind Gmbh アレイプロセッサ
JPH04367936A (ja) * 1991-06-17 1992-12-21 Mitsubishi Electric Corp スーパースカラープロセッサ
JPH05502125A (ja) * 1989-08-03 1993-04-15 ムーア チャールズ エイチ 後入れ先出しスタックを備えるマイクロプロセッサ、マイクロプロセッサシステム、及び後入れ先出しスタックの動作方法
JPH0594305A (ja) * 1991-02-19 1993-04-16 Matsushita Electric Ind Co Ltd キヤツシユメモリ装置
JP2004525440A (ja) * 2000-12-19 2004-08-19 ピコチップ デザインズ リミテッド プロセッサアーキテクチャ

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3757306A (en) * 1971-08-31 1973-09-04 Texas Instruments Inc Computing systems cpu
EP0227319A3 (en) * 1985-12-26 1989-11-02 Analog Devices, Inc. Instruction cache memory
JPS62180456A (ja) * 1986-02-03 1987-08-07 Nippon Telegr & Teleph Corp <Ntt> 並列計算機の信号バイパス方式
CA2019299C (en) * 1989-06-22 2002-01-15 Steven Frank Multiprocessor system with multiple instruction sources
US5390304A (en) * 1990-09-28 1995-02-14 Texas Instruments, Incorporated Method and apparatus for processing block instructions in a data processor
US5434989A (en) * 1991-02-19 1995-07-18 Matsushita Electric Industrial Co., Ltd. Cache memory for efficient access with address selectors
JPH0863355A (ja) * 1994-08-18 1996-03-08 Mitsubishi Electric Corp プログラム制御装置及びプログラム制御方法
US5680597A (en) * 1995-01-26 1997-10-21 International Business Machines Corporation System with flexible local control for modifying same instruction partially in different processor of a SIMD computer system to execute dissimilar sequences of instructions
US5727194A (en) 1995-06-07 1998-03-10 Hitachi America, Ltd. Repeat-bit based, compact system and method for implementing zero-overhead loops
US5752259A (en) * 1996-03-26 1998-05-12 Advanced Micro Devices, Inc. Instruction cache configured to provide instructions to a microprocessor having a clock cycle time less than a cache access time of said instruction cache
EP0992894A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Apparatus and method for loop execution
JP3344345B2 (ja) * 1998-12-15 2002-11-11 日本電気株式会社 共有メモリ型ベクトル処理システムとその制御方法及びベクトル処理の制御プログラムを格納する記憶媒体
US6938253B2 (en) * 2001-05-02 2005-08-30 Portalplayer, Inc. Multiprocessor communication system and method
EP1421476A1 (en) 2001-08-22 2004-05-26 Adelante Technologies B.V. Pipelined processor and instruction loop execution method
JP3509023B2 (ja) * 2002-06-26 2004-03-22 沖電気工業株式会社 ループ制御回路及びループ制御方法
JP4610218B2 (ja) 2004-03-30 2011-01-12 ルネサスエレクトロニクス株式会社 情報処理装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62288942A (ja) * 1986-05-30 1987-12-15 Yokogawa Hewlett Packard Ltd デ−タ処理装置
JPH05502125A (ja) * 1989-08-03 1993-04-15 ムーア チャールズ エイチ 後入れ先出しスタックを備えるマイクロプロセッサ、マイクロプロセッサシステム、及び後入れ先出しスタックの動作方法
JPH03176757A (ja) * 1989-11-21 1991-07-31 Deutsche Itt Ind Gmbh アレイプロセッサ
JPH0594305A (ja) * 1991-02-19 1993-04-16 Matsushita Electric Ind Co Ltd キヤツシユメモリ装置
JPH04367936A (ja) * 1991-06-17 1992-12-21 Mitsubishi Electric Corp スーパースカラープロセッサ
JP2004525440A (ja) * 2000-12-19 2004-08-19 ピコチップ デザインズ リミテッド プロセッサアーキテクチャ

Also Published As

Publication number Publication date
TW200809609A (en) 2008-02-16
TW200809531A (en) 2008-02-16
KR20090017390A (ko) 2009-02-18
EP1821200B1 (en) 2011-06-08
WO2007098006A2 (en) 2007-08-30
EP1821199B1 (en) 2012-07-04
KR20090016645A (ko) 2009-02-17
EP1821202A1 (en) 2007-08-22
ATE495491T1 (de) 2011-01-15
WO2007098005A2 (en) 2007-08-30
WO2007098026A2 (en) 2007-08-30
EP1821202B1 (en) 2011-01-12
KR20090004394A (ko) 2009-01-12
TW200809613A (en) 2008-02-16
JP2009527808A (ja) 2009-07-30
WO2007098005A3 (en) 2008-10-09
WO2007098026A3 (en) 2009-04-09
EP1821199A1 (en) 2007-08-22
ATE512400T1 (de) 2011-06-15
WO2007098006A3 (en) 2009-01-08
EP1821200A2 (en) 2007-08-22
DE602007011841D1 (de) 2011-02-24
JP2009527816A (ja) 2009-07-30
EP1821200A3 (en) 2008-09-24

Similar Documents

Publication Publication Date Title
US20100281238A1 (en) Execution of instructions directly from input source
EP1990718A1 (en) Method and apparatus for loading data and instructions into a computer
EP1840742A2 (en) Method and apparatus for operating a computer processor array
US7904615B2 (en) Asynchronous computer communication
US7904695B2 (en) Asynchronous power saving computer
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
EP1821211A2 (en) Cooperative multitasking method in a multiprocessor system
US7966481B2 (en) Computer system and method for executing port communications without interrupting the receiving computer
JP2009527809A (ja) 入力ソースから直接の命令の実行
US7934075B2 (en) Method and apparatus for monitoring inputs to an asyncrhonous, homogenous, reconfigurable computer array
US20090300334A1 (en) Method and Apparatus for Loading Data and Instructions Into a Computer
EP1821174A1 (en) Asynchronous power saving computer
JP2006285719A (ja) 情報処理装置および情報処理方法
JP2007328627A (ja) 半導体集積回路

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100216

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120831

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130308