JP2009009550A - データの通信 - Google Patents

データの通信 Download PDF

Info

Publication number
JP2009009550A
JP2009009550A JP2008114128A JP2008114128A JP2009009550A JP 2009009550 A JP2009009550 A JP 2009009550A JP 2008114128 A JP2008114128 A JP 2008114128A JP 2008114128 A JP2008114128 A JP 2008114128A JP 2009009550 A JP2009009550 A JP 2009009550A
Authority
JP
Japan
Prior art keywords
computer
data
register
write
read
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
JP2008114128A
Other languages
English (en)
Inventor
W Rible John
ダブリュ.リブル ジョン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Technology Properties Ltd
Original Assignee
Technology Properties Ltd
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
Application filed by Technology Properties Ltd filed Critical Technology Properties Ltd
Publication of JP2009009550A publication Critical patent/JP2009009550A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • 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
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】同様のコンピュータでよい他の装置に接続する複数のデータ経路(38a〜d)を有するコンピュータ(12)を提供すること。
【解決手段】レジスタ内でどのビットが同時にセットされるかに基づいてコンピュータがデータ経路のうちの複数を介して通信することができるように、データ経路のそれぞれをアドレス指定するようにプログラム式にセット可能なビット(110)を有するレジスタ(40d)が設けられる。任意選択で、コンピュータのうちの複数を直列に接続することができ(「パイプライン」と呼ばれる)、またはアレイ(10)を形成するように接続することができる。
【選択図】図3

Description

本発明は、一般には、処理アーキテクチャを有し、命令処理を実行する電気的コンピュータおよびデジタル処理システムに関し、より詳細には、データ転送オペレーションをサポートまたは実行する具体的な命令データの処理に関する。
コンピューティングの技術分野では、処理速度はよく要求される品質であり、より高速なコンピュータおよびプロセッサを作成する探究が進行中である。しかし、少なくとも現在周知の技術を用いると、マイクロプロセッサの速度を向上させることに関する限界に急速に近づきつつあることがこの業界では一般に知られている。したがって、複数のプロセッサを使用して、プロセッサ間でコンピュータタスクを共有することによって全体のコンピュータ速度を向上させることへの関心が高まっている。しかし、ワークロードの共有に関係する全体の効率がほぼ必然的にある程度低下することも一般に認識されている。すなわち、1人の人が杭穴を60分で掘ることができるということだけでは、必ずしも60人の人々が杭穴を1分で掘ることができることにはならないという古い格言が当てはまることになる。ほぼどんなタスクの分割にも同じ原理が当てはまり、プロセッサ間のタスクの分割は例外ではない。
もちろん、コンピュータプロセッサ間のタスクの共有をより効率的にするための努力は行われている。厳密にどのようにタスクを割り当てるべきかという問題が検討されており、プロセスが改善された。この領域での作業中に、ある状況下では、複数CPU環境で、あるCPUから別のCPUにデータを転送することは非常に厄介なものとなることがあるということが本発明者らの意見であった。例えば、データをあるCPUから別のCPUに転送しなければならず、ターゲットCPUとソースCPUとの間のあるCPUによってターゲットCPUがソースCPUから隔てられる場合、ソースCPUは、直に並ぶCPUにデータを書き込まなければならず、次いでそのCPUはデータを読み取り、次いでそれをターゲットCPUに書き込まなければならず、次いでターゲットCPUはデータを読み取らなければならない。そのようなプロセスは、多くの読取りオペレーションおよび書込みオペレーションを必要とし、大量のデータが転送されている場合、非常に多くの読取りコマンドおよび書込みコマンドがシステムオペレーションを妨げる可能性がある。
したがって、本発明の目的は、マルチポート読取りおよび書込みオペレーションのためのシステムおよび方法を提供することである。
本発明の一態様は、コンピュータを他の装置に接続する複数のデータ経路と、どのビットが同時にセットされるかに基づいてコンピュータが前記複数のデータ経路のうちの複数を介して通信することができるように、前記複数のデータ経路のそれぞれをアドレス指定するようにプログラム式にセット可能なビットを有するレジスタとを備えるコンピュータを提供する。コンピュータは、コンピュータアレイの一部でよく、前記他の装置のうちの少なくとも1つも、前記コンピュータアレイ内のコンピュータでよい。コンピュータは非同期式に通信することができる。
本発明の別の態様は、コンピュータがデータを通信するプロセスであって、(a)他の装置がデータをコンピュータに書き込むことを試みているという信号に関して、コンピュータを前記他の装置に接続する複数のデータ経路を監視すること、(b)前記第1の前記他の装置からデータを読み取ること、および(c)前記複数のデータ経路をアドレス指定するようにプログラム式にセット可能なビットを有するレジスタに基づいて、データを前記他の装置に書き込むことを備えるプロセスを提供する。コンピュータは、コンピュータアレイの一部でよく、前記他の装置のうちの少なくとも1つも、前記コンピュータアレイ内のコンピュータでよい。コンピュータは非同期式に通信することができる。
簡潔には、本発明の好ましい一実施形態は、コンピュータを他の装置に接続する複数のデータ経路を有するコンピュータであり、他の装置は、必ずしもそうではないが、通常は他のコンピュータである。コンピュータ内のレジスタは、データ経路のそれぞれをアドレス指定するようにプログラムされたビットを有し、したがってコンピュータは、ビットのうちのどれが同時にセットされるかに基づいて、データ経路のうちの複数を介して通信することができる。
簡潔には、本発明の別の好ましい実施形態は、コンピュータがデータを通信するプロセスである。コンピュータを他の装置に接続する複数のデータ経路が、別の装置がデータをコンピュータに書き込むことを試みているという信号に関して監視される。次いで、第1のそのような他の装置からデータが読み取られる。そして、複数のデータ経路をアドレス指定するようにプログラムされたビットを有するレジスタに基づいて、データがさらに別の装置に書き込まれる。
本発明の一実施形態の一利点は、プロセッサが多次元アレイとして構成され、かつプロセッサ当たり、データを読み込み、または書き込むことのできる3つ以上の経路を有するときは特に、複数のプロセッサ間のデータ転送の速度が向上することである。
本発明の一実施形態の別の利点は、プロセッサ間でタスクを共有することによって全体のコンピューティング速度を向上させるための複数のプロセッサの使用が容易となることである。
本発明の一実施形態の別の利点は、非同期式に通信するプロセッサによる使用に特に適していることである。
本発明の一実施形態の別の利点は、複数のプロセッサ間でタスクを共有するときにオーバヘッドを低減することである。
本発明はまた、適切なコンピュータ上で実行されるときに、本発明の前記別の態様のプロセスをコンピュータに実施させるコンピュータプログラムを提供する。プログラムはキャリア上でよく、キャリアは記憶媒体または信号でよい。記憶媒体は、他の例の中でもとりわけ、記録媒体またはメモリ装置でよい。
本発明の実施形態の上記およびその他の目的および利点は、本明細書に説明され、図面の各図に示される、現在知られている本発明を実施する最良の形態の説明と、好ましい実施形態の産業上の利用可能性の説明に鑑みて、当業者にはより明らかとなるであろう。
本発明の実施形態の目的および利点は、添付の図面の各図と共に、以下の詳細な説明から明らかとなるであろう。
図面の様々な図では、同様または類似の要素またはステップを示すのに同様の参照が使用される。
目的を達成するための形態に関して本発明の一実施形態を説明するが、本発明の精神または範囲から逸脱することなく、こうした教示に鑑みて変形形態を実施できることを当業者は理解されよう。
本明細書で説明し、かつ/または図面に示される本発明の実施形態および変形形態は、例として提示されるに過ぎず、本発明の範囲に関して限定するものではない。具体的に述べるのでない限り、本発明の個々の態様および構成要素を省略または変更することができ、あるいはそれらの代わりに、周知の均等物、または将来に開発される可能性のあるような、もしくは将来に受け入れられる代用品であることが判明する可能性のあるような、まだ未知の代用品を代用することができる。潜在的な応用例の範囲が広く、本発明が多くのそのような変形形態に適合可能であることが意図されるので、特許請求される発明の精神および範囲内にとどまりながら、様々な応用例に本発明を変更することもできる。
本発明の好ましい実施形態は、マルチポート読取りおよび書込みオペレーションのためのシステムおよび方法である。本明細書の様々な図面、特に図7に示されるように、本発明の好ましい実施形態が、全体参照番号100で示される。
本発明に対する背景および基礎として、非同期コンピュータ通信の詳細な例がまず提示される。これについて、コンピュータアレイが図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を有する。アレイ10のコンピュータ12間の通信のより詳細な議論に関連して、このコンピュータ12aから12eのグループ化が以下で使用される。図1からわかるように、コンピュータ12eなどの内側のコンピュータは、バス16を介して直接通信することのできる4つの他のコンピュータ12を有する。以下の議論では、論じられる原理は、アレイ10の縁部のコンピュータ12がコンピュータ12のうちの3つのみと直接通信し、または隅のコンピュータ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本すべてを「ハイ」にセットすることも可能である(どちらのケースも以下でより詳細に論じる)。
隣接するコンピュータ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が受信側コンピュータ12cによって「ロー」に引き下げられる。
この例では、プログラミングエラーのみが、1つのバス16の両端にある両方のコンピュータ12に、それらの間の読取り線18の両方を同時に「ハイ」にセットし、またはそれらの間の書込み線20の両方を同時に「ハイ」にセットするように試行させる。しかし、コンピュータ12のうちの1つが、その対応する書込み線20を「ハイ」にセットするために、選ばれたコンピュータ12のうちの最初の1つからのデータを待機する待ち状態となることができるように、異なる組合せの読取り線18を「ハイ」にセットすることが望ましい場合があることが現在は予想される。
上記で論じた例では、隣接するコンピュータ(コンピュータ12a、12b、12c、または12dのうちの1つまたは複数から選択された)がその書込み線20を「ハイ」にセットする前に、コンピュータ12eの読取り線18の1つまたは複数を「ハイ」にセットするものとしてコンピュータ12eを説明した。しかし、このプロセスは確かに、逆の順序で行うことができる。例えば、コンピュータ12eがコンピュータ12aに書き込むことを試みていた場合、コンピュータ12eは、コンピュータ12eとコンピュータ12aとの間の書込み線20を「ハイ」にセットする。コンピュータ12eとコンピュータ12aとの間の読取り線18がまだコンピュータ12aによって「ハイ」にセットされていない場合、コンピュータ12eは、コンピュータ12aが読取り線18を「ハイ」にセットするまで単に待機することになる。次いで、上記で論じたように、読取り線18と書込み線20の対応する対の両方が「ハイ」であるとき、データ線22上での転送を待機中のデータが転送される。その後に、送信側コンピュータ12eが書込み線20を解放するとすぐに、(この例では)受信側コンピュータ12aが、(この例では)2つのコンピュータ12eと12aの間の読取り線18と書込み線20の両方を「ロー」にセットする。
コンピュータ12eなどのコンピュータ12が書込みを予想してその書込み線20の1つを「ハイ」にセットしたときはいつでも、コンピュータ12は、データが送信されるべきコンピュータ12が既にその読取り線18を「ハイ」にセットしていない限り、適切な隣接するコンピュータ12からデータが上述のように「要求される」まで、本質的に電力を使用せずに単に待機し、データが送信されるべきコンピュータ12が既にその読取り線18を「ハイ」にセットしている場合、データが直ちに送信される。同様に、コンピュータ12が読み取りを予想してその読取り線18の1つまたは複数を「ハイ」にセットしたときはいつでも、コンピュータ12は、2つのコンピュータ12間で命令語を転送するために、選択されたコンピュータ12に接続された書込み線20が「ハイ」となるまで、本質的に電力を使用せずに単に待機する。
コンピュータ12を上述のように機能させるためのいくつかの潜在的な手段および/または方法が存在する可能性がある。しかし、この例では、コンピュータ12は(コンピュータ12間のデータの非同期式の転送に加えて)内部的に概して非同期で動作するので、コンピュータ12はそのように単純に振る舞う。すなわち、命令は順次完了する。書込み命令または読取り命令が行われるとき、その命令が完了するまで(または、恐らくは別法として、「リセット」などによってアボートされるまで)、次の動作がない可能性がある。従来技術の認識では、規則的なクロックパルスは存在しない。むしろ、実行中の命令が読取り型または書込み型命令ではないとき(読取り型または書込み型命令は別の実体による完了を必要とすると仮定すると)、または読取り型または書込み型オペレーションが実際に完了したときにのみ、次の命令を実施するためにパルスが生成される。
図3は、図1および2のコンピュータ12のうちの1つの一例の一般的レイアウトを示すブロック図である。図3からわかるように、コンピュータ12のそれぞれは、それ自体のRAM24およびROM26を有する、概して内蔵式のコンピュータ(generally self contained computer)である。この例でコンピュータ12が単一のチップ上に組み合わされると仮定すると、前述のように、コンピュータ12は、個々の「コア」と呼ばれることもある。
コンピュータ12の他の基本的構成要素は、リターンスタック28、命令エリア30、論理演算ユニット(ALU32)、データスタック34、および命令を復号化する復号化論理区域36である。この例のコンピュータ12などのスタックベースのコンピュータの動作に当業者は一般に通じているであろう。コンピュータ12は、データスタック34および別々のリターンスタック28を有するデュアルスタックコンピュータである。
本発明のこの実施形態では、コンピュータ12は、隣接するコンピュータ12と通信する4つの通信ポート38を有する。通信ポート38は、オフステータス、受信ステータス(信号をコンピュータ12内に至らせる場合)、および送信ステータス(信号をコンピュータ12の外に送出する場合)を有するトライステートドライバである。もちろん、特定のコンピュータ12がコンピュータ12eの例などのようにアレイの内側にない場合(図1)、通信ポートのうちの1つまたは複数は、少なくとも本明細書に記載の目的では、その特定のコンピュータでは使用されない。命令エリア30は、いくつかのレジスタ40を含み、この例では、Aレジスタ40a、Bレジスタ40b、Pレジスタ40c、ならびにI/O制御およびステータスレジスタ(IOCSレジスタ40d)である。この例では、Aレジスタ40aおよびIOCSレジスタ40dはフル18ビットレジスタであり、Bレジスタ40bおよびPレジスタ40cは9ビットレジスタである。
本発明はこの例によって限定されるわけではないが、このコンピュータ12は、ネイティブ第4世代言語命令を実行するように実装される。第4世代コンピュータ言語に通じている人は理解するであろうが、第4世代「ワード」と呼ばれる複雑な第4世代命令が、コンピュータ内に設計されたネイティブプロセッサ命令から構築される。第4世代ワードの集まりは「辞書」と呼ばれる。他の言語では、これは「ライブラリ」と呼ばれることがある。以下でより詳細に説明するように、コンピュータ12は、RAM24、ROM26、または直接的にデータバス16(図2)のうちの1つから、一度に18ビットを読み取る。しかし、第4世代の大部分の命令(オペランドなし命令として知られる)は、スタック28および34から直接的にそのオペランドを得るので、一般にはわずか5ビット長のビットを生成し、それによって、グループ内の最後の命令が3ビットのみを必要とする限定された命令のセットから選択されることを条件として、最大4つの命令を単一の18ビット命令語内に含めることができる。本発明のこの実施形態では、データスタック34内の上端の2つのレジスタはTレジスタ44およびSレジスタ46である。図3には、スロットシーケンサ42もブロック図形式で示されている(以下で詳細に論じる)。
図4は、命令語48の図式表現である(命令語48は、実際には命令、データ、またはその組合せを含むことができることに留意されたい)。命令語48は18ビット50からなる。これは、ビット50のそれぞれが「1」または「0」となる2進コンピュータである。本明細書で先に論じたように、18ビット幅の命令語48は、スロット0 54a、スロット1 54b、スロット2 54c、およびスロット3 54dと呼ばれる4つのスロット54内に最大で4つの命令52を含むことができる。この実施形態では、18ビット命令語48は常に全体として読み取られる。したがって、命令語48内に最大で4つの命令を有する可能性が常に存在するので、no−op(ノーオペレーション)命令が、利用可能なスロット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で開始する。第1ORゲート入力62が、実行中の命令52のi4ビット66(図4)から導出される。i4ビット66が「ハイ」である場合、その特定の命令52はALU命令であり、i4ビット66は「1」である。i4ビット66が「1」である場合、第1ORゲート入力62は「ハイ」であり、スロットシーケンサ42がトリガされ、次の命令52の実行を引き起こすパルスが開始される。
第1ORゲート入力62が「ハイ」となることによって、または第2ORゲート入力64が「ハイ」となることによってスロットシーケンサ42がトリガされたとき(以下で説明する)、信号はスロットシーケンサ42を2周し、その度にスロットシーケンサ出力68で出力を生成する。信号がスロットシーケンサ出力68を通過する1回目は、「ロー」となり、2回目は、スロットシーケンサ出力68での出力は「ハイ」となる。スロットシーケンサ出力68からの比較的広い出力がパルス発生器70(ブロック図形式で示す)に供給され、パルス発生器70は、狭いタイミングパルスを出力として生成する。コンピュータ12の動作を正確に開始するために狭いタイミングパルスが望ましいことを当業者は理解するであろう。
実行中の特定の命令52が読取り命令または書込み命令であるとき、または実行中の命令52がシーケンス中の次の命令52の即時実行をトリガすることが望ましくない任意の他の命令であるとき、i4ビット66は「0」(ロー)であり、したがって第1ORゲート入力62も「ロー」である。コンピュータ12などの装置内のイベントのタイミングは一般に非常に重要であり、これには例外はないことを当業者は理解されよう。スロットシーケンサ42の検査時に、当該環の第2周目を開始するために、信号がNANDゲート58を通過して循環した後になるまで、ORゲート60からの出力が「ハイ」のままでなければならないことを当業者は理解されよう。その後に、望ましくない回路の発振の継続を防止するために、第2周目中にORゲート60からの出力が「ロー」となる。
上記の議論に照らして理解することができるように、以下で論じる第2ORゲート入力64が「ハイ」でないと仮定すると、i4ビット66が「0」であるときスロットシーケンサ42はトリガされない。
上記で論じたように、各命令52のi4ビット66は、その命令が読取り型または書込み型命令であるかどうかに従ってセットされる。命令52内の残りのビット50は、その命令に関する特定の演算コードの残りを与える。読取り型または書込み型命令の場合、データをその特定のコンピュータ12内のどこから読むべきか、またはどこに書き込むべきかを示すためにビットのうちの1つまたは複数を使用することができる。この例では、書き込むべきデータは常にTレジスタ44(データスタック34の上端)から来るが、データは、それを実行できるところからTレジスタ44または命令領域30のいずれかに選択的に読み込むことができる。これは、この特定の実施形態では、データまたは命令を本明細書に記載の方式で通信することができ、したがって必須ではないがデータバス16から命令を直接的に実行することができるからである。さらに、ポート38のうちのいずれかを読取りまたは書込みのためにセットすべきである場合にそれがポート38のうちのどれであるかを示すのに、ビット50のうちの1つまたは複数が使用される。この後者のオペレーションは、1つまたは複数のビットを使用してAレジスタ40a、Bレジスタ40bなどのレジスタ40を指定することによって任意に実施される。そのような例では、指定されたレジスタ40には、ポート38のそれぞれ(さらには、メモリ、外部通信ポートなど、コンピュータ12が通信しようと試みている可能性のある他の潜在的実体)に対応するビットを有するデータがプリロードされる。例えば、特定のレジスタ40内の4つのビットのそれぞれは、上ポート38a、右ポート38b、左ポート38c、下ポート38dに対応することができる。そのような場合、そうしたビット位置のいずれかに「1」が存在する場合、通信は、対応するポート38を介して行うようにセットされる。
すぐ後に続く例は、コンピュータ12eがコンピュータ12cに書き込むことを試みている通信を仮定するが、この例は、任意の隣接するコンピュータ12間の通信に適用可能である。書込み側コンピュータ12eで書込み命令が実行されるとき、選択された書込み線20が「ハイ」にセットされる(この例では、コンピュータ12eと12cの間の書込み線20)。対応する読取り線18が既に「ハイ」である場合、選択された位置から、選択された通信ポート38を介してデータが直ちに送られる。あるいは、対応する読取り線18がまだ「ハイ」でない場合、コンピュータ12eは、対応する読取り線18が「ハイ」になるまで動作を単に停止する。読取り型または書込み型命令が存在するときにコンピュータ12aを停止する(またはより正確には、コンピュータ12aの次のオペレーションを可能にしない)機構は、本明細書で先に論じた。簡単に言えば、命令52の演算コードは、i4ビット66位置で「0」を有し、したがってORゲート60の第1ORゲート入力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を「ハイ」にラッチしているコンピュータ12によって線18または20が解放されるまで、線18または20を「ロー」に引き下げるどんな試みも実際には成功しない。
データバス16内の両方の線18および20が「ロー」に引き下げられるとき、これが「肯定応答」条件である。肯定応答条件時に、コンピュータ12eおよび12cのそれぞれがそれ自体の内部肯定応答線72を「ハイ」にセットする。図5からわかるように、肯定応答線72は第2ORゲート入力64を供給する。ORゲート60入力62または64のいずれかへの入力がORゲート60の出力を「ハイ」にするので、これにより、本明細書で先に述べた方式でスロットシーケンサ42の動作が開始し、それによって命令語48の次のスロット54内の命令52が実行される。スプリアスアドレスがアドレスバスに到達するのを防止するために、次の命令52が復号化されるまで、肯定応答線72は「ハイ」のままとどまる。
命令52が命令語48のスロット3位置で実行中であるいずれのケースでも、コンピュータ12は、もちろんi4ビット66が「0」でない限り、次の待機中の18ビット命令語48をフェッチする。実際には、フェッチが命令語48内のすべての命令52の実行の終了前に開始することができるように、命令を「プリフェッチ」する方法および装置を含めることができる。しかし、これもまた非同期データ通信には不可欠ではない。
コンピュータ12eがコンピュータ12cに書き込んでいる上記の例を詳細に説明した。上記の議論に照らして理解することができるように、コンピュータ12eがまずコンピュータ12cに書き込むことを試みるとしても、またはコンピュータ12cがまずコンピュータ12eから読み取ることを試みるとしても、動作は本質的に同じである。コンピュータ12eと12cの両方の準備ができるまで、動作は完了することができず、コンピュータ12eと12cのどちらが最初に準備ができるとしても、第1コンピュータ12は、他方のコンピュータ12eまたは12cが転送を完了するまで、単に「スリープに移る」。上述のプロセスを見る別の方法は、実際には、書込み側コンピュータ12eと受信側コンピュータ12cがそれぞれ書込み命令および読取り命令をそれぞれ実行するときにどちらもスリープに移るが、最後にトランザクションに入ったものが、読取り線18と書込み線20がどちらも「ハイ」となったときにほぼ瞬間的に覚醒するのに対して、トランザクションを開始する第1コンピュータ12は、第2コンピュータ12がプロセスを完了する準備ができるまで、ほぼ無期限にスリープのままとどまることができる。
装置間の効率的な非同期通信を可能にするために重要な機能は、何らかの種類の肯定応答信号または条件であると考えられる。従来技術では、装置間の大部分の通信がクロック同期されており、受信側装置が適切にデータを受信したことを送信側装置が知るための直接的な方法はない。データが正しく受信されたことを保証するのを試みるためにチェックサムオペレーションなどの方法を使用することもできたが、送信側装置は、動作が完了したという直接的な表示を有さない。本明細書に記載のこの方法は、装置間の非同期通信を可能にし、または少なくとも現実的にする、必要な肯定応答条件を提供する。さらに、肯定応答条件は、1つまたは複数の装置が肯定応答条件が生じるまで「スリープに移る」ことをも可能にする。もちろん、コンピュータ12間で送信されている別々の信号によってコンピュータ12間で肯定応答条件を通信することができる(データバス16を介して、または別々の信号線を介して)。しかし、通信を実際に実施するために、肯定応答のための方法がどんな追加の信号、クロックサイクル、タイミングパルスも必要とせず、説明したもの以上のそのようなどんな資源も必要としないという点で、ここではさらに節約が関係することを理解することができる。
それらを実施する手順および手段の上記の議論に照らして、以下のバックグラウンド方法の一例の簡潔な説明がここで理解される。図6は、この方法例を示すフロー図74である。「通信開始」オペレーション76では、あるコンピュータ12が命令52を実行し、命令52は、そのコンピュータ12に別のコンピュータ12と通信することを試みさせる。これは、書込みの試行でもまたは読取りの試行でもよい。「通信開始」オペレーション76と概して同時に行われる、「第1線を「ハイ」にセット」オペレーション78では、(第1コンピュータ12が読取りを試みているか、それとも書込みを試みているかに応じて)読取り線18または書込み線20が「ハイ」にセットされる。「第1線を「ハイ」にセット」オペレーション78の一部として、本明細書で先に詳細に説明したように、コンピュータ12はそのように行う。「第2線を「ハイ」にセット」オペレーション80では、第2線(書込み線20または読取り線18)が第2コンピュータ12によって「ハイ」にセットされる。「データを通信」オペレーション82では、データ(または命令など)がデータ線22を介して送信および受信される。「線を「ロー」に引き下げ」オペレーション84では、読取り線18および書込み線20が解放され、「ロー」に引き下げられる。「続行」オペレーション86では、肯定応答条件がコンピュータ12にそれらのオペレーションを再開させる。本発明の例の場合、肯定応答条件は肯定応答信号88(図5)を引き起こし、この場合は肯定応答信号88は、単に肯定応答線72の「「ハイ」」条件である。
図7は、図1および2のコンピュータ12のコンピュータアレイ10の区域100を、本発明による例示的実施形態に関するものとして示す詳細図である。しかし、区域100が本発明の一実施形態を利用することを強調するために、ここではコンピュータ(ノード、コアなど)をCPU12と呼ぶ。
図7からわかるように、中央CPU12eが、隣接するCPU12a、12b、12c、および12dにそれぞれのデータバス16を介して接続され、データバス16はそれぞれ、読取り線18、書込み線20、および18本のデータ線22を含む。しかし、CPU12では、バス16は内部的に接続され、複数のポート38(図3)を同時に読み取るべき場合、未定義のハードウェア状態を生み出すことができる。そのような状況からの回復を可能にするために、この条件はソフトウェア設計に反映されるべきである。
CPU12eは、それ自体のメモリ102(例えば図3に示されるRAM24およびROM26)を有し、メモリ102は、それ自体のソフトウェア104を含むことができる。CPU12eは、オペレーションのための操作ポインタを保有するための1組のレジスタ40も有することができる。これらは、データオペレーション用のAレジスタ40aおよびBレジスタ40bと、プログラムポインタを保持するためのPレジスタ40cと、I/O制御およびステータスレジスタ(IOCSレジスタ40d)を含む(図3も参照)。
図8a〜fは、図7の区域100のCPU12で使用可能なポートアドレス復号化の概要を示すテーブルダイアグラムである。図8aは、レジスタ40内のアドレスビット108が「1」にセットされたときに、レジスタ40が通常はポート38のうちの1つまたは複数をアドレス指定することを示す。逆に、図示していないが、アドレスビット108が「0」であるとき、レジスタ40は、メモリ102内の位置をアドレス指定している。アドレスビット108が「ハイ」にセットされるとき、次の8ビットは選択ビット110として働き、次いで選択ビットは、特定のどのポート38が選択され、それを読み取るべきか、それとも書き込むべきかを指定する。したがって、CPU12e内のレジスタ40では、「Right」は、隣接する右側または東側のCPU12aを示し、「Down」は、隣接する下側または南側のCPU12bを示し、「Left」は、隣接する左側または西側のCPU12cを示し、「Up」は、隣接する上側または北側のCPU12dを示す。アクション「RR」に関してセットされる選択ビット110は、保留中の読取り要求を示し、アクション「WR」に関してセットされる選択ビット110は、保留中の書込み要求を示す。
整合性と、混乱を最小限に抑えるために、「ハイ」または「1」が真条件を示し、「ロー」または「0」が偽条件を示すという一般的規約を守る。しかし、これは要件ではなく、代替規約を使用することができる。例えば、CPU12の現在のところ好ましいある実施形態は、RRビット位置では真に対して「0」を使用し、WRビット位置では真に対して「1」を使用する。
ちなみに、このポートアドレス復号化手法は、アドレスビット108を「1」にセットし、選択ビット110のいずれもセットしないことも可能にすることに留意されたい。有益なことに、このことを使用して、CPU12内の別の要素をアドレス指定することができる。例えば、IOCSレジスタ40dをこの方式でアドレス指定することができる。
CPU12のこの実施形態では、IOCSレジスタ40dは、ポート38の読取り線18および書込み線20の現ステータスをレポートするのに同一のポートアドレス構成を使用する。これにより、I/Oオペレーションのステータスをプログラム式にテストすることを可能にするのにIOCSレジスタ40d内のこうしたそれぞれのビットが有用なものとなる。例えば、CPU12eにCPU12bからの非同期読取りを委ねて、CPU12bがまだ共有書込み線20を「ハイ」にセットしていない場合にCPU12eがスリープに移ることになるのではなく、CPU12eは、IOCSレジスタ40d内のビット13(Down/WR)の状態(CPU12bをCPU12eに接続する書込み線20の状態を反映する)をテストし、レディデータに分岐し、CPU12bからレディデータを直ちに読み取るか、または別の命令に分岐し、別の命令を直ちに実行することができる。
図8bは単純な第1の例を示す。ここでは、Right/RRに関する選択ビット110がセットされ、ポート38bが読み取られるべきであることを示す。図8cは単純な第2の例を示す。ここでは、Right/WRに関する選択ビット110がセットされ、この場合、ポート38bが書き込まれるべきことを示す。
通常、1つの選択ビット110のみがイネーブルされ、単一ポート38および任意の所与の時間での単一動作(読取りまたは書込み)が指定される。次いで、複数の「ハイ」ビットはエラー条件として復号化される。しかし、本明細書で開示される新規な手法は、この規約に従わない。むしろ、有益なことに、ポート38に関する選択ビット110のうちの複数を同時にイネーブルすることができ、複数の読取りおよび/または書込みオペレーションを要求する。そのような場合、新しいデータが存在するという信号を含むデータがそれぞれのポート38のすべてに対して提示される。
図8d〜fは、複数の読取りおよび/または書込みオペレーションの例を示す。図8dは、CPU12e内のレジスタ40がどのようにCPU12bからの読取りとCPU12aへの書込みを同時に指定することができるかを示す。図8eは、CPU12bからの読取りとCPU12cへの書込みをどのように同時に指定することができるかを示す。図8fは、CPU12bからの読取りと、CPU12aまたはCPU12cへの書込みを指定することを示す(予示として、図8d〜fを、図9およびそこでの矢印132および134で表されるデータ転送経路と比較することができる)。
実際には、複数の書込み中に、CPU12eはデータを提示し、ターゲットCPU12a、12b、12c、または12dのうちの1つまたは複数と共有するバス16上で書込み線20を「ハイ」にセットする。次いでソースCPU12eは、データが読み取られたという表示を受信するまで待機する。ある最終的な時点で、恐らくは、ターゲットCPU12a、12b、12c、または12dのうちの1つまたは複数が、CPU12eと共有するバス16上でそのそれぞれの読取り線18を「ハイ」にセットする。次いで、ターゲットCPU12はデータを正式に読み取り、CPU12eと共有するバス16上でそれぞれの読取り線18と書込み線20をどちらも「ロー」に引き下げ、したがってCPU12eからのデータの受信を肯定応答する。
図9は、図7および図8d〜fに示される複数書込み手法を1つのデータ語120内に最大で4つの命令を含める能力とどのように組み合わせることができるかを示す概略ブロック図である。各命令は通常は5ビットであり、したがって18ビット幅のデータ語120は、約4つの命令を保持することができる。その場合、最後の命令は3ビットのみとなる可能性があるが、これは多くの命令にとって十分である。この特に有益な一態様は、非常に効率的なデータ転送機構を使用することを可能にすることである。
以下では、@=fetch、!=storeであり、pが「プログラムカウンタ」またはPレジスタ40cを指す。@p+および!p+中の「+」は、レジスタ内容が別のレジスタまたはポートをアドレス指定する場合にレジスタ内容が増分されないことを除いて、実行後にレジスタ内のメモリアドレスを増分することを指す。したがって、これらの後者のケースでの「+」は、これらの命令を通常の@p命令および!p命令ではなく、「特別」なものとして区別する。
図9は、あるCPU12から別のCPU12にデータを転送する単一命令シーケンスプログラムを、データの読取りおよび書込みに使用されるPレジスタ40cのみと共にどのように単一18ビットデータ語120内に含めることができるかについての一例を提示する。ここで、「@p+」は、スロット0 54a内にロードされた命令122である。これは、Pレジスタ40cで指定される現アドレスから次の18ビットデータ語120をフェッチし、データ語120をデータスタック34上にプッシュするリテラルオペレーションである(かつ、一般には、Pレジスタ40c内のアドレスを増分するが、そのアドレスがレジスタまたはポートに関するものであるときにこれが行われないことを除く。またここでは、Pレジスタ40c内のアドレスビット108は、ポートが指定されていることを示す)。次に、「.」はスロット1 54b内にロードされた命令124である。これは、何も行わない単純なnopオペレーション(ノーオペレーション)である。次に、「!p+」は、スロット2 54cにロードされた命令126である。これは、データスタック34から上端のデータ語120をポップし、この18ビットデータ語120をPレジスタ40cで指定された現アドレスに書き込むストアオペレーションである。Pレジスタ40cで指定されたアドレスは変化しておらず、単に機能的に、別個の隣接するCPU12にアクセスさせることに留意されたい。最後に「unext」は、スロット3 54dにロードされる命令128である。これは、リターンスタック28の上端が0であるかどうかに応じて異なる仕方で動作するmicro−nextオペレーションである。リターンスタック28が0でないとき、micro−nextはリターンスタック28を減分させ、実行のために、現在キャッシュされているデータ語120のスロット0 54a内の命令(すなわちここでの例では命令122)に進む。具体的には、ここでのmicro−nextの使用は新しいデータ語120をフェッチすることを必要としないことに留意されたい。対照的に、リターンスタック28が0であるとき、micro−nextは、Pレジスタ40cで指定された現アドレスから次のデータ語120をフェッチし、新しいデータ語120のスロット0 54a内の命令で実行を開始させる。
この特定の例では、Pレジスタ40cに101100000bをロードすることができ、リターンスタック28の上端は101b(10進数の5)を含むことができる。Pレジスタ40cは101100000bを含むので(例えば、図8aおよび8dを参照)、ここでの命令122内の「@p+」は、CPU12eに(そのポート38bを介して)CPU12bから次のデータ語120を読み取り、そのデータ語120をデータスタック34上にプッシュするように命令する。しかし、Pレジスタ40c内のアドレスはポートに関するものであるので、そのアドレスは増分されない。ここでの命令124内の「.」nopは単にフィラーであり、現データ語120の18ビットを満たす働きをする。次に、Pレジスタ40cは依然として101100000bを含むので、ここでの命令126内の「!p+」は、CPU12eにデータスタック34の上端のデータ語120(命令122によってプットされたのとまさに同じデータ語120)をポップオフし、そのデータ語120を(ポート38aを介して)CPU12a書き込むように命令する。この場合も、アドレスがポートに関するものであるので、Pレジスタ40c内のアドレスは増分されない。次いで、命令128内の「unext」が、リターンスタック28を100b(10進数の4)まで減分させ、実行のために命令122に進む。命令122、124、126、および128内の単一語プログラムはこの方式で続行し、リターンスタック28を011b、010b、001b、最終的には000b(10進数の0)に減分し、CPU12bから次のデータ語120をフェッチし、この新しいデータ語120のスロット0 54a内の命令を実行する。
要約すると、ここでの例におけるPレジスタ40cには、ソースと宛先(ポート38bおよび38a、したがってCPU12bおよび12a)の両方を指定する1つのアドレス値がロードされ、リターンスタック28には反復カウント(5)がロードされる。次いで5つのデータ語120がCPU12eを介して効率的に転送され(「パイプラインされる」)、次いでCPU12eは、やはりCPU12bによって提供される第6データ語120のスロット0 54a内の命令に進む。
様々な他の利点は、この単純であるが洗練された手法の使用から生じる。例えば、Aレジスタ40aおよびBレジスタ40bを使用する必要がなく、したがって他のデータ目的でそれらをCPU12eで利用することができる。これに続いて、データ転送を実施するときにポインタスワッピング(トラッシング)も省略することができる。
例えば、データパイプライン化のための従来型ソフトウェアルーチンは、ある時点で、入力ポートからデータを読み取り、別の時点で、データを出力ポートに書き込む。この場合、使用中のそれぞれの入力ポートおよび出力ポートへのポインタに加えて、メモリへの少なくとも1つのポインタが必要となる。ポートは異なるアドレスを有するので、ここで続行するための最も直接的な方式は、スタックに対する入力ポートアドレスにリテラル命令をロードし、そのアドレスをアドレス指定レジスタにプットし、入力ポートからの読取りを実施し、次いで、スタックに対する出力ポートのアドレスにリテラル命令をロードし、そのアドレスをアドレス指定レジスタにプットし、出力ポートに対する書込みを実施することである。
この手法での2つのリテラルロードはそれぞれ4サイクルかかり、2つのレジスタセット命令はそれぞれ1サイクルかかる。これは、入力ポインタおよび出力ポインタのまさに設定時にループの内部で費やされる合計10サイクルである。さらに、そのようなポインタスワッピングが必要となるときに追加のペナルティが存在する。ループの内部でメモリの3ワードが必要となり、したがって単一の18ビットワード内部に含まれるループの使用を可能にしないからである。したがって、この例での命令ループは、メモリアクセスを伴う分岐を必要とし、それにより、4サイクルの別のオーバヘッドが加えられ、合計のポインタ交換およびループオーバヘッドが少なくとも14サイクルとなる。
しかし対照的に、CPU12ではマルチポートアドレス指定が可能であるので、入力ポート38と出力ポート38の両方を選択するアドレスをI/Oループの外部にロードし、入力と出力の両方のために使用することができる。マルチポート読取り中に1つの隣接CPUのみからのデータが読み取られ、マルチポート書込み中に1つ隣接CPUのみが読み取るので、この手法は機能する。したがって、伝統的に入力ポインタおよび出力ポインタをセットするのに費やされるループの内部の14サイクルオーバヘッドが不要となる。ループは依然として読取り命令および書込み命令を有するが、ここでは同一のポインタを共に使用することができ、それを変更する必要がない。
このことは、マルチポート書込み技法の使用により、あるタイプのI/Oループのオーバヘッドを14サイクル(またはそれ以上)削減することができることを意味する。最良のケースでは、これにより、CPU12の処理ループで23サイクルから6サイクルまで削減が可能となるということが本発明者らの意見であった。1サイクルが約1ナノ秒かかる状況では、このことは、実効プロセッサ速度が43MHzから167MHzに増加することを表し、これはかなりの改善を表す。
少しの間、次に図8fおよび再度図9に進むと、これらは、単一語プログラムであっても複数書込みをどのように実施することができるかを示す。ここでは、CPU12eはCPU12bから読み取り、CPU12aまたはCPU12cのいずれかに書き込む。実際には、ここでのパイプライン処理は、CPU12aまたはCPU12cの最初に利用可能なものに対するものである。このことは、CPU12で可能な柔軟性が加わることを示し、本発明によるCPU12が以前は非常に困難または非現実的であると感じられた方式でどのように有用であるかについての単なる1つの可能な例である。
要約すると、CPU12は、ポート38の読取りおよびポート38へのジャンピングの両方を処理しなければならない。マルチポートアドレスから読み取り、またはマルチポートアドレスにジャンピングする際に、データまたは命令がどのポート38から得られるかは、明示的コードが実行されて発見されることなしには未知である(最も高速な方式は、ポート38が両方のCPU12について同一であることに依拠する)。伝統的には、このことは、回避すべき問題と理解されるはずである。異なるデータまたはコードが異なるポートから来るからである。しかし、仮定される協調的環境では、本発明者らは、すべてを利点に変える方法を見つけ出してきた。そしてこれがそのようなケースである。
CPU12が複数ポートアドレスから実行し、アドレス指定された隣接CPU12のすべてが協調的に(すなわち、同期して)書込み中である場合、ある隣接CPU12は命令ストリームを供給中でよく、異なるCPU12はリテラルデータを提供する。リテラルフェッチ演算コード(@p+)は、異なる隣接するCPU12によって選択的に(すべてのリテラルがこれを行う必要はない)満たすことのできるPレジスタ40c内のマルチポートアドレスからの読取りを生じさせる。このことは単に、隣接するCPU12間の広範囲の「協調」を必要とする。
しかし、パイプラインマルチポート使用では、ある隣接CPU12が読取り中であり、あるCPU12が書込み中である場合、同一のマルチポートアドレスに対する読取りおよび書込みは問題を引き起こさない。この概念は、そのようなマルチポートアドレスへのジャンピングおよびリテラルストア演算コード(!p+)の実行により、Pレジスタ40cが、まったく安全に2つのポート38をアドレス指定することが可能となることである。これにより、Aレジスタ40aとBレジスタ40bの両方がローカル使用のために解放される。
本発明の実施形態に対して、その価値または範囲を変更することなく様々な追加の変更を行うことができる。例えば、本明細書では読取り命令および書込み命令に関して本発明を説明したが、実際には、複数の読取り型命令および/または複数の書込み型命令が存在することができる。ほんの一例として、本発明の一実施形態では、レジスタを増分する書込み命令と、レジスタを増分しない別の書込み命令が存在することができる。同様に、本明細書で先に論じたように、書込み命令は、通信ポート38などを選択するのにどのレジスタ40が使用されるかに従って変化することができる。コンピュータ12の設計者がどの変形形態を代替の読取り挙動の有用な選択肢とみなすかということのみに応じて、いくつかの異なる読取り命令も存在することができる。
同様に、本明細書では単一ダイ14上のアレイ10内のコンピュータ12間の通信に関して本発明の実施形態を説明したが、コンピュータ12とその専用メモリとの間の通信、またはアレイ10内のコンピュータ12と外部装置との間の(入力/出力ポートなどを介する)通信などの他の装置間通信を実施するのに、同じ原理および方法を使用することができ、または使用のために変更することができる。実際に、いくつかの応用例は、アレイのアレイを必要とする可能性があることが予想され、現在説明する装置間通信方法は、潜在的にアレイのアレイ間の通信に適用可能である。
本発明のコンピュータアレイ10およびコンピュータ12の特定の例を本明細書で説明したが、まだ想定されていないものに対する非常に多数の応用例が存在することが予期される。実際、本発明の利点の1つは、本発明の方法および装置を非常に様々な用途に適合させることができることである。
本発明はまた、適切なコンピュータ上で実行されるときに、本明細書の上記で説明した本発明の方法をコンピュータに実施させるコンピュータプログラムを提供する。プログラムはキャリア上でよく、キャリアは記憶媒体または信号でよい。記憶媒体は、他の例の中でもとりわけ、記録媒体またはメモリ装置でよい。
上記のすべては、本発明の利用可能な実施形態の例のほんのいくつかに過ぎない。本発明の精神および範囲から逸脱することなく、多数の他の修正および変更を行えることを当業者は容易に観察するであろう。したがって、本明細書の開示は限定として意図されるものではなく、添付の特許請求の範囲は、本発明の範囲全体を包含するものとして解釈すべきである。
本発明によるコンピュータアレイの図である。 図1のコンピュータのサブセットを示す詳細な図と、図1の相互接続データバスの詳細な図である。 図1および2のコンピュータのうちの1つの一般的レイアウトを示すブロック図である。 図1および2のコンピュータで使用可能な命令語の図式表現である。 図3のスロットシーケンサの略図表現である。 本発明による方法の一例を示すフロー図である。 本発明による例示的実施形態を論じるのに使用される図1および2のコンピュータアレイの区域を示す詳細図である。 図7の区域内のコンピュータで使用可能なポートアドレス復号化の概要を示すテーブルダイアグラムである。 図7の区域内のコンピュータで使用可能なポートアドレス復号化の概要を示すテーブルダイアグラムである。 図7の区域内のコンピュータで使用可能なポートアドレス復号化の概要を示すテーブルダイアグラムである。 図7の区域内のコンピュータで使用可能なポートアドレス復号化の概要を示すテーブルダイアグラムである。 図7の区域内のコンピュータで使用可能なポートアドレス復号化の概要を示すテーブルダイアグラムである。 図7の区域内のコンピュータで使用可能なポートアドレス復号化の概要を示すテーブルダイアグラムである。 図7および図8d〜fに示される複数書込み手法を単一の命令語内に複数の命令を含める能力とどのように組み合わせることができるかを示す概略ブロック図である。

Claims (16)

  1. コンピュータを他の装置に接続する複数のデータ経路と、
    どのビットが同時にセットされるかに基づいてコンピュータが前記複数のデータ経路のうちの複数を介して通信することができるように、前記複数のデータ経路のそれぞれをアドレス指定するようにプログラム式にセット可能なビットを有するレジスタと
    を備えることを特徴とするコンピュータ。
  2. 前記レジスタは、コンピュータがデータを読み取ることができるソース装置としての前記他の装置のインスタンスと、コンピュータがデータを書き込むことのできる宛先装置としての前記他の装置のインスタンスとをそれぞれ表すビットを有し、それによって前記レジスタ内の単一アドレスは、コンピュータによって通信されるデータに関するソース装置と宛先装置の両方を表すことを可能にすることを特徴とする請求項1に記載のコンピュータ。
  3. コンピュータはスタック記憶素子を含み、
    コンピュータは前記レジスタおよび前記スタック記憶素子のみを使用して、第1の前記他の装置からデータを読み取り、前記データを第2の前記他の装置に書き込む
    ことを特徴とする請求項1または2に記載のコンピュータ。
  4. コンピュータは、複数の命令を含めるのに十分な長さを有する命令語を使用し、前記データ経路上に存在する前記命令語内に存在する前記命令のインスタンスを実行することができ、
    コンピュータは、前記レジスタ、前記スタック記憶素子、および単一の前記命令語内のプログラムのみを使用して、第1の前記他の装置からデータを読み取り、前記データを第2の前記他の装置に書き込む
    ことを特徴とする請求項1、2または3に記載のコンピュータ。
  5. コンピュータは、前記レジスタによって指定される第1前記データ経路を介して前記他の装置からデータを読み取り、
    コンピュータは、前記レジスタによって同時に指定される第2前記データ経路を介して、異なる前記他の装置にデータを書き込む
    ことを特徴とする請求項1、2、3または4に記載のコンピュータ。
  6. コンピュータは、前記レジスタによって同時に指定される複数の前記他の装置のうちの1つからデータを読み取ることができ、または
    コンピュータは、前記レジスタによって同時に指定される複数の前記他の装置にデータを書き込むことができ、
    コンピュータは、前記データを供給する第1の前記他の装置から読み取り、前記データを受け取る第2の前記他の装置に書き込む
    ことを特徴とする請求項5に記載のコンピュータ。
  7. コンピュータが読み取ることのできる前記他の装置を定義する前記レジスタ内の前記ビットは読取りビットであり、
    コンピュータが書き込むことのできる前記他の装置を定義する前記レジスタ内の前記ビットは書込みビットであり、
    コンピュータは、対応する読取りビットがセットされるときに、前記第2他の装置のすべてから読み取ることを試み、
    コンピュータは、対応する書込みビットがセットされるときに、前記第2他の装置のすべてに書き込むことを試みる
    ことを特徴とする請求項1乃至7のいずれかに記載のコンピュータ。
  8. コンピュータがデータを通信する方法であって、
    (a)他の装置がデータを前記コンピュータに書き込むことを試みているという信号に関して、前記コンピュータを前記他の装置に接続する複数のデータ経路を監視すること、
    (b)前記第1の前記他の装置から前記データを読み取ること、
    (c)前記複数のデータ経路をアドレス指定するようにプログラム式にセット可能なビットを有するレジスタに基づいて、前記データを前記他の装置に書き込むこと、
    を備えることを特徴とする方法。
  9. 前記(a)は、前記レジスタでセットされたそれぞれのビットを有する前記データ経路のみを監視することを含み、それによって、前記レジスタ内の単一アドレスが、通信中のデータに関する前記ソース装置と前記宛先装置の両方を表すことを可能にすることを特徴とする請求項8に記載の方法。
  10. 前記(b)は、前記レジスタ内にセットされたそれぞれのビットを有する前記他の装置のすべてから読み取ることを試みることを含むことを特徴とする請求項8または9に記載の方法。
  11. 前記(c)は、前記レジスタ内にセットされたそれぞれのビットを有する前記他の装置のすべてに書き込むことを試みることを含むことを特徴とする請求項8、9または10に記載の方法。
  12. 前記(a)は、第1の前記信号を受信することに応答して前記監視を停止することを含み、それによって、前記読取りが前記第1の前記信号に関連する前記他の装置からなされることを保証することを特徴とする請求項8、9、10または11に記載の方法。
  13. 前記データは一連のデータ語を含み、さらに、
    前記(b)は、前記コンピュータ内のスタック記憶素子への前記データ経路から直接的にそれぞれの前記データ語を読み取ることを含み、
    前記(c)は、前記スタック記憶素子から前記データ経路にそれぞれの前記データ語を直接的に書き込むことを含む
    ことを特徴とする請求項8、9,10,11または12に記載の方法。
  14. 前記コンピュータは、複数の命令を含めるのに十分な長さを有する命令語を使用し、さらに、
    前記(b)および前記(c)は、前記レジスタ、前記スタック記憶素子、および単一の前記命令語内のプログラムのみを使用することを含む
    ことを特徴とする請求項8乃至13のいずれか一項に記載の方法。
  15. 前記データ経路上で前記単一の前記命令語を受信することをさらに備えることを特徴とする請求項14に記載の方法。
  16. 適切なコンピュータ上で実行されるときに、請求項8乃至15に記載のうちの1つの方法をコンピュータに実施させることを特徴とするコンピュータプログラム。
JP2008114128A 2007-04-27 2008-04-24 データの通信 Pending JP2009009550A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/741,649 US7555637B2 (en) 2007-04-27 2007-04-27 Multi-port read/write operations based on register bits set for indicating select ports and transfer directions

Publications (1)

Publication Number Publication Date
JP2009009550A true JP2009009550A (ja) 2009-01-15

Family

ID=39591084

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008114128A Pending JP2009009550A (ja) 2007-04-27 2008-04-24 データの通信

Country Status (7)

Country Link
US (1) US7555637B2 (ja)
EP (1) EP1986093A1 (ja)
JP (1) JP2009009550A (ja)
KR (1) KR20080096484A (ja)
CN (2) CN101295241A (ja)
TW (1) TW200905556A (ja)
WO (1) WO2008133980A2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2398446B (en) * 2003-02-12 2006-06-07 Snell & Wilcox Ltd Image processing
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
US7904695B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US7904615B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US11349636B2 (en) 2019-03-25 2022-05-31 Micron Technology, Inc. Local ledger block chain for secure updates
US11397814B2 (en) * 2019-03-25 2022-07-26 Micron Technology, Inc. Local ledger block chain for secure electronic control unit updates

Family Cites Families (92)

* 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
US4107773A (en) * 1974-05-13 1978-08-15 Texas Instruments Incorporated Advanced array transform processor with fixed/floating point formats
US4215422A (en) * 1978-05-22 1980-07-29 International Business Machines Corporation Selectively modifiable phrase storage for a typewriter
US4298932A (en) * 1979-06-11 1981-11-03 International Business Machines Corporation Serial storage subsystem for a data processor
US4462074A (en) * 1981-11-19 1984-07-24 Codex Corporation Do loop circuit
US4821231A (en) * 1983-04-18 1989-04-11 Motorola, Inc. Method and apparatus for selectively evaluating an effective address for a coprocessor
US4589067A (en) * 1983-05-27 1986-05-13 Analogic Corporation Full floating point vector processor with dynamically configurable multifunction pipelined ALU
JPS60204149A (ja) 1984-03-29 1985-10-15 Mitsubishi Electric Corp デ−タ伝送装置
ATE94999T1 (de) * 1984-11-21 1993-10-15 Harris Corp Mikroprozessor fuer forth-aehnliche sprache.
US4984151A (en) * 1985-03-01 1991-01-08 Advanced Micro Devices, Inc. Flexible, next-address generation microprogram sequencer
EP0227319A3 (en) 1985-12-26 1989-11-02 Analog Devices, Inc. Instruction cache memory
US5053952A (en) * 1987-06-05 1991-10-01 Wisc Technologies, Inc. Stack-memory-based writable instruction set computer having a single data bus
US5029124A (en) * 1988-05-17 1991-07-02 Digital Equipment Corporation Method and apparatus for providing high speed parallel transfer of bursts of data
DE3937807C2 (de) 1988-11-19 1995-04-06 Vaillant Joh Gmbh & Co Verfahren zum Übertragen von Daten zwischen zwei sendenden und empfangenden Stationen
JPH0769791B2 (ja) * 1988-12-21 1995-07-31 三菱電機株式会社 マイクロプロセッサ
DE3901457A1 (de) * 1989-01-19 1990-08-02 Strahlen Umweltforsch Gmbh Verfahren zur adressbereichsueberwachung bei datenverarbeitungsgeraeten in echtzeit
CA2019299C (en) 1989-06-22 2002-01-15 Steven Frank Multiprocessor system with multiple instruction sources
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
DE58908974D1 (de) * 1989-11-21 1995-03-16 Itt Ind Gmbh Deutsche Datengesteuerter Arrayprozessor.
DE4019040A1 (de) * 1990-06-14 1991-12-19 Philips Patentverwaltung Multirechnersystem
US5390304A (en) * 1990-09-28 1995-02-14 Texas Instruments, Incorporated Method and apparatus for processing block instructions in a data processor
US5826101A (en) * 1990-09-28 1998-10-20 Texas Instruments Incorporated Data processing device having split-mode DMA channel
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
JP3102027B2 (ja) * 1990-11-20 2000-10-23 日本電気株式会社 ループ制御のネスティング管理機構
US5218682A (en) * 1991-05-10 1993-06-08 Chrysler Corporation Two-way handshake circuit and method for communication between processors
EP0519348B1 (en) * 1991-06-19 1999-07-28 Hewlett-Packard Company Co-processor supporting architecture adapted to a processor which does not natively support co-processing
EP1526446A3 (en) * 1991-07-08 2007-04-04 Seiko Epson Corporation Extensible RISC microprocessor architecture
CA2078315A1 (en) * 1991-09-20 1993-03-21 Christopher L. Reeve Parallel processing apparatus and method for utilizing tiling
JPH0581216A (ja) * 1991-09-20 1993-04-02 Hitachi Ltd 並列プロセツサ
GB2267588B (en) * 1992-06-06 1996-03-20 Motorola Inc FIFO memory system
DE69327688T2 (de) * 1992-08-12 2000-09-07 Advanced Micro Devices Inc Befehlsdecoder
US5473271A (en) * 1993-02-09 1995-12-05 Dallas Semiconductor Corporation Microprocessor output driver
CA2129882A1 (en) * 1993-08-12 1995-02-13 Soheil Shams Dynamically reconfigurable interprocessor communication network for simd multiprocessors and apparatus implementing same
US5535417A (en) * 1993-09-27 1996-07-09 Hitachi America, Inc. On-chip DMA controller with host computer interface employing boot sequencing and address generation schemes
US5893148A (en) * 1994-03-03 1999-04-06 International Business Machines Corporation System and method for allocating cache memory storage space
US6173387B1 (en) * 1994-05-11 2001-01-09 Intel Corporation Interleaved exchange in a network mesh
JPH0863355A (ja) * 1994-08-18 1996-03-08 Mitsubishi Electric Corp プログラム制御装置及びプログラム制御方法
US5706491A (en) * 1994-10-18 1998-01-06 Cyrix Corporation Branch processing unit with a return stack including repair using pointers from different pipe stages
US5692197A (en) * 1995-03-31 1997-11-25 Sun Microsystems, Inc. Method and apparatus for reducing power consumption in a computer network without sacrificing performance
US5727194A (en) * 1995-06-07 1998-03-10 Hitachi America, Ltd. Repeat-bit based, compact system and method for implementing zero-overhead loops
ATE241170T1 (de) 1995-10-06 2003-06-15 Patriot Scient Corp Architektur für einen risc-mikroprozessor
US5854760A (en) * 1995-11-10 1998-12-29 Nippon Telegraph And Telephone Corporation Two-dimensional PE array, content addressable memory, data transfer method and mathematical morphology processing method
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
US5784602A (en) * 1996-10-08 1998-07-21 Advanced Risc Machines Limited Method and apparatus for digital signal processing for integrated circuit architecture
US5911082A (en) * 1997-02-25 1999-06-08 Audio Digitalimaging Inc. Parallel processing building block chip
GB9704068D0 (en) * 1997-02-27 1997-04-16 Sgs Thomson Microelectronics Trigger sequencing controller
US6003128A (en) * 1997-05-01 1999-12-14 Advanced Micro Devices, Inc. Number of pipeline stages and loop length related counter differential based end-loop prediction
US6023753A (en) * 1997-06-30 2000-02-08 Billion Of Operations Per Second, Inc. Manifold array processor
US6381682B2 (en) * 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
US6101598A (en) * 1997-11-14 2000-08-08 Cirrus Logic, Inc. Methods for debugging a multiprocessor system
US6085304A (en) * 1997-11-28 2000-07-04 Teranex, Inc. Interface for processing element array
US6173389B1 (en) * 1997-12-04 2001-01-09 Billions Of Operations Per Second, Inc. Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor
US6112296A (en) * 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Floating point stack manipulation using a register map and speculative top of stack values
KR100252136B1 (ko) * 1997-12-29 2000-04-15 윤종용 디지털 신호 처리 칩에서의 반복 구문 실행 제어회로
US6219783B1 (en) * 1998-04-21 2001-04-17 Idea Corporation Method and apparatus for executing a flush RS instruction to synchronize a register stack with instructions executed by a processor
US6449709B1 (en) * 1998-06-02 2002-09-10 Adaptec, Inc. Fast stack save and restore system and method
US7028163B2 (en) * 1998-06-22 2006-04-11 Samsung Electronics, Co., Ltd. Apparatus for controlling multi-word stack operations using a multi-bank stack in digital data processors
US6353880B1 (en) * 1998-07-22 2002-03-05 Scenix Semiconductor, Inc. Four stage pipeline processing for a microcontroller
US6219685B1 (en) * 1998-09-04 2001-04-17 Intel Corporation Method to detect IEEE overflow and underflow conditions
US6148392A (en) * 1998-09-08 2000-11-14 Hyundai Electronics Industries Co., Ltd. Low power implementation of an asynchronous stock having a constant response time
EP0992896A1 (en) 1998-10-06 2000-04-12 Texas Instruments Inc. Pipeline protection
US6507649B1 (en) * 1998-12-18 2003-01-14 Ericsson Inc. Mechanism and method for distributing ISUP stacks over multiple loosely coupled processors
SE514785C2 (sv) 1999-01-18 2001-04-23 Axis Ab Processor och metod för att exekvera instruktioner från flera instruktionskällor
FR2789501B1 (fr) * 1999-02-09 2001-04-13 St Microelectronics Sa Procede et dispositif de reduction de la consommation d'un microcontroleur
US6427204B1 (en) * 1999-06-25 2002-07-30 International Business Machines Corporation Method for just in-time delivery of instructions in a data processing system
TW504608B (en) * 1999-08-30 2002-10-01 Ip Flex Inc Program product and data processing device
US6665793B1 (en) * 1999-12-28 2003-12-16 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for managing access to out-of-frame Registers
WO2001063434A1 (en) * 2000-02-24 2001-08-30 Bops, Incorporated Methods and apparatus for dual-use coprocessing/debug interface
US6725361B1 (en) * 2000-06-16 2004-04-20 Transmeta Corporation Method and apparatus for emulating a floating point stack in a translation process
GB2370381B (en) 2000-12-19 2003-12-24 Picochip Designs Ltd Processor architecture
DE10102202A1 (de) * 2001-01-18 2002-08-08 Infineon Technologies Ag Mikroprozessorschaltung für tragbare Datenträger
US7155602B2 (en) * 2001-04-30 2006-12-26 Src Computers, Inc. Interface for integrating reconfigurable processors into a general purpose computing system
US6938253B2 (en) 2001-05-02 2005-08-30 Portalplayer, Inc. Multiprocessor communication system and method
US6874079B2 (en) * 2001-07-25 2005-03-29 Quicksilver Technology Adaptive computing engine with dataflow graph based sequencing in reconfigurable mini-matrices of composite functional blocks
WO2003019356A1 (en) 2001-08-22 2003-03-06 Adelante Technologies B.V. Pipelined processor and instruction loop execution method
JP3656587B2 (ja) * 2001-10-01 2005-06-08 日本電気株式会社 並列演算プロセッサ、その演算制御方法及びプログラム
US6845412B1 (en) * 2001-11-07 2005-01-18 Lsi Logic Corporation Method and system for a host processor to broadcast data to instruction or data memories of several processors in a multi-processor integrated circuit
US6959372B1 (en) * 2002-02-19 2005-10-25 Cogent Chipware Inc. Processor cluster architecture and associated parallel processing methods
US6948040B2 (en) * 2002-05-17 2005-09-20 Samsung Electronics Co., Ltd. System and method for synchronizing a plurality of processors in a processor array
JP3509023B2 (ja) * 2002-06-26 2004-03-22 沖電気工業株式会社 ループ制御回路及びループ制御方法
US7237045B2 (en) * 2002-06-28 2007-06-26 Brocade Communications Systems, Inc. Apparatus and method for storage processing through scalable port processors
US6825843B2 (en) * 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
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エレクトロニクス株式会社 アレイ型プロセッサ
US7079046B2 (en) * 2003-03-28 2006-07-18 Yokogawa Electric Corporation Multi-point data acquisition apparatus
US7613900B2 (en) * 2003-03-31 2009-11-03 Stretch, Inc. Systems and methods for selecting input/output configuration in an integrated circuit
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
JP4610218B2 (ja) * 2004-03-30 2011-01-12 ルネサスエレクトロニクス株式会社 情報処理装置
US7269805B1 (en) * 2004-04-30 2007-09-11 Xilinx, Inc. Testing of an integrated circuit having an embedded processor
US7392366B2 (en) * 2004-09-17 2008-06-24 International Business Machines Corp. Adaptive fetch gating in multithreaded processors, fetch control and method of controlling fetches
US7330964B2 (en) * 2005-11-14 2008-02-12 Texas Instruments Incorporated Microprocessor with independent SIMD loop buffer
EP1821211A3 (en) 2006-02-16 2008-06-18 Technology Properties Limited Cooperative multitasking method in a multiprocessor system

Also Published As

Publication number Publication date
TW200905556A (en) 2009-02-01
WO2008133980A2 (en) 2008-11-06
US20080270648A1 (en) 2008-10-30
US7555637B2 (en) 2009-06-30
CN101295242A (zh) 2008-10-29
CN101295241A (zh) 2008-10-29
KR20080096484A (ko) 2008-10-30
WO2008133980A3 (en) 2008-12-24
EP1986093A1 (en) 2008-10-29

Similar Documents

Publication Publication Date Title
US7904615B2 (en) Asynchronous computer communication
US7904695B2 (en) Asynchronous power saving computer
JP2002509302A (ja) メモリサブシステムに複数のメモリアルゴリズムプロセッサを組込むマルチプロセッサコンピュータアーキテクチャ
JP2009009550A (ja) データの通信
JP2009064411A (ja) データおよび命令をコンピュータにロードするための方法および装置
US20100281238A1 (en) Execution of instructions directly from input source
JP2009009549A (ja) 一連のコンピュータでデータを処理するシステムおよび方法
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
US7934075B2 (en) Method and apparatus for monitoring inputs to an asyncrhonous, homogenous, reconfigurable computer array
EP1821199A1 (en) Microloop computer instructions
US20100325389A1 (en) Microprocessor communications system
JP2023533795A (ja) レジスタデータの消去
EP1821217B1 (en) Asynchronous computer communication
WO2009128924A2 (en) Method and apparatus for serializing and deserializing
WO2007098024A2 (en) Allocation of resources among an array of computers