JP5352780B2 - プロセッサ - Google Patents

プロセッサ Download PDF

Info

Publication number
JP5352780B2
JP5352780B2 JP2010509892A JP2010509892A JP5352780B2 JP 5352780 B2 JP5352780 B2 JP 5352780B2 JP 2010509892 A JP2010509892 A JP 2010509892A JP 2010509892 A JP2010509892 A JP 2010509892A JP 5352780 B2 JP5352780 B2 JP 5352780B2
Authority
JP
Japan
Prior art keywords
processor
data
bus
address
token
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.)
Expired - Fee Related
Application number
JP2010509892A
Other languages
English (en)
Other versions
JP2010528387A (ja
Inventor
アンダーソン、ジェームス、アーサー、ディーン、ワレス
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Publication of JP2010528387A publication Critical patent/JP2010528387A/ja
Application granted granted Critical
Publication of JP5352780B2 publication Critical patent/JP5352780B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/82Architectures of general purpose stored program computers data or demand driven
    • G06F15/825Dataflow computers
    • 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/82Architectures of general purpose stored program computers data or demand driven
    • 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
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Description

本発明は、プロセッサに関する。
プロセッサ・チップは、概して多数の個別プロセッサを有し、個々のプロセッサは、それぞれインストラクションを実行する構成となっている。通常、多くの異なるインストラクションは、異なるプロセッサによって実行され、個々のプロセッサは、ホストメモリと通信する。
各プロセッサにおいて、数多くのインストラクションをコード化する必要があるため、プロセッサは大型化し、一つのチップ上に組みつけられるプロセッサの数は限られてしまう。また、各プロセッサは、ホストメモリと通信しなければならないため、処理が遅くなってしまう。
本発明は、複数のプロセッサからなる処理装置を提供する。各プロセッサは、単一のインストラクションを実行するよう構成され、このインストラクションは、各プロセッサで同じでもよい。この処理装置は、更に、プロセッサ間でデータトークンとコントロールトークンを伝送するためのバスを備える。各プロセッサは、バスを介してコントロールトークンを受信すると、インストラクションを実行する。インストラクションを実行する際、各プロセッサはデータに対して演算を行う。これは、データ対象プロセッサとなるべきプロセッサを特定してもよい。プロセッサは、その特定されたデータ対象プロセッサに出力データを送信することもできる。プロセッサは、また、制御対象プロセッサとなるべきプロセッサを特定することも可能であり、その特定された制御対象プロセッサにコントロールトークンを送信することもできる。
出力データは、インストラクションの結果、あるいは、例えばプロセッサ内に保存されたデータであってもよい。
バスは、プロセッサ間でデータトークンとコントロールトークンを伝達するが、その際、ホストメモリからデータを取ってくる必要がない。
バスは、複数のバスフレームを有しており、各フレーム間でデータトークンやコントロールトークンを移動させて、データトークンとコントロールトークンがバスに沿って伝達されるよう構成されてもよい。各プロセッサには、対応する1つ以上のバスフレームが設けられ、データは、該バスフレームからプロセッサに書き込まれる。
また、データは、データトークンという形でバスに送信されてもよい。
各プロセッサは、他のすべてのプロセッサと同じインストラクションを実行するように配置されてもよい。各プロセッサは、1つのインストラクションのみを実行するよう構成されてもよい。各プロセッサは、インストラクションを実行する度に、データ対象プロセッサを0、1、あるいは1つ以上特定することができ、また制御対象プロセッサも0、1、あるいは1つ以上特定することが可能である。これにより、各プロセッサは、複数のプロセッサに並行してデータを送信することができる。バスが特定されたデータ対象プロセッサに演算結果を送信するように構成される。そのデータ対象プロセッサに演算結果が書き込まれる。
好ましくは、各プロセッサは、コントロールトークンが送信されるべき制御対象プロセッサのアドレスと一緒にコントロールトークンをバスに書き込むことによって、コントロールトークンを送信するように構成されている。各プロセッサは、インストラクションを実行する時、コントロールトークンを並行して送信する制御対象プロセッサを複数特定することができる。
各プロセッサは、対象として特定されたプロセッサに演算結果やコントロールトークンを送信する際、そのコントロールトークンを手放すように構成されていることが望ましい。これにより、各プロセッサは、次のコントロールトークンを受け取るまで、そのインストラクションを再度実行することはない。
インストラクションは、a× b+ c −> r’の形式の乗算加算であってもよい。
各プロセッサは、演算結果r’を基に制御プロセッサを選択するように構成されてもよい。例えば、各プロセッサは、演算結果r’が0より小さいか、0に等しいか、0より大きいか、あるいは無効であるかを判断し、それにしたがって、制御対象プロセッサあるいはデータ対象プロセッサを選択する。
各プロセッサは、インストラクションの入力が記憶される複数のメモリセルを備えてもよい。各プロセッサは、制御対象プロセッサのアドレスが記憶される複数のメモリセルを備えていてもよい。各プロセッサのメモリには、すべて電源投入時に固定値が設定されるような構成にしてもよい。これにより、電源投入時に任意の値が設定される場合にありがちな、プロセッサが恣意的なプログラムを実行してしまうことがなくなる。
本発明の1つの実施例にかかるプロセッサ・チップの回路図である。 図1のチップにおける、1つのプロセッサとバスの各セクションを示す概略図である。 図1のチップのバスのうちの1つの一部の回路図である。 図1のチップにおいて、バスに沿って、あるいはプロセッサ間を伝達されるデータフレームの略図である。 図1のチップのプロセッサの1つを示す略図である。 本発明の第2の実施の形態の一部を構成するバスにおけるアドレッシングを示す略図である。
以下、本発明の好適な実施の形態について、一例として、添付の図面を参照しつつ説明する。
図1に示すように、プロセッサ・チップ10は、プロセッサ12の2次元矩形アレイからなる。各プロセッサ、すなわちタプル12は、直交座標系X,Yによって表されるアドレスを有する。メインアレイは有限であり、Y座標は原点を中心として−Ymaxから+Ymaxまで延び、X座標もまた原点を中心として−Xmaxから+Xmaxまで延びている。プロセッサ12のメインアレイの各行、各列の終端は、出入力プロセッサであり、X座標が+∞若しくは−∞、あるいはY座標が+∞若しくは−∞である出入力装置14が設けられている。図1では、プロセッサ・チップ10の4分の1だけが、すなわち、座標系における正象限にある部分のみが図示されている。多数のチップを組み合わせることで、出入力装置14を介して各チップ間でデータが移動する単一の装置を形成する。
<バス>
プロセッサ12の間には、一組のバス20が矩形の格子状に配置される。各プロセッサ12の列の間には、Y軸方向に延びる一対のバスが設けられる。一方の+Yは、Y軸の正方向へのデータ転送を、他方の−Yは、Y軸の負方向へのデータ転送を行う。プロセッサ12の各行の間には、X軸方向に延びる一対のバスが設けられる。一方の+Xは、X軸の正方向へのデータ転送、他方の−Xは、X軸の負方向へのデータ転送を担う。バス20の各ペアは、図1では単一の線で表現されているが、図2にはプロセッサ12の1つを囲む各バス20の部分が示されている。すなわち、図2は、基本ユニットとなる1つのプロセッサ・タイル22を示している。この基本ユニットは、チップ10全体に渡って繰り返されてチップ全体を構成する。各プロセッサ12は、その4辺において隣接する4つのバス20のそれぞれと接続されており、したがって、各プロセッサは、データを4方向のうちのいずれかの方向に転送するために、データを適切なバスへと導く。
図3を参照すると、単方向バス20の各々は、一連のバスフレーム24と、それに平行な一連のテンポラリフレーム26とから成る。各バスフレーム24は、複数のメモリセルによって構成され、各テンポラリフレーム26も、同数のメモリセルによって構成される。各テンポラリフレーム26は、隣接する2つのバスフレーム24に接続されており、一方のバスフレーム24からデータを受け取り、他方のバスフレーム24にデータを出力することができるようになっている。したがって、データは、1つのバスフレーム24からバス20の方向に沿って次のバスフレーム24に、適切なテンポラリフレーム26を介して転送されることによって伝達される。プロセッサ12は、その近傍を通過するバス20の各々のバスフレーム24の1つと接続されており、その地点において、当該バスからのデータを受け取り、また、当該バスへのデータ書き込むことができるようになっている。
全てのプロセッサ12、全てのバスフレーム24およびテンポラリフレーム26は、クロック信号が伝達される共通のクロックライン28に接続されている。クロックライン28は、バス20に沿うと共に、バス20とプロセッサ12との間におけるデータ転送のタイミングを調整するために用いられる。クロックが刻まれる毎に、バスフレーム24のデータは、テンポラリバスフレーム26を介して隣接するバスフレーム24にコピーされる。一般に、バスフレーム間のデータ移動は、各プロセッサがインストラクションを実行する頻度より高い頻度で発生する。そのため、プロセッサは、1つのプロセッサクロックサイクルにおいて、バスに沿って一つ以上のデータを伝達できる。製作誤差を防ぎながら、プロセッサは、両側に隣接タプルを有し、出入力タプルは、片側にのみ隣接タプルを有する。
<演算>
この装置は、修正2の補数エンコーディングにおいて実行される固定小数点数演算を用いる。標準的な2の補数演算は、0用の1つのビット列と、連続する正の整数をコード化する奇数個のビット列と、連続する負の整数をコード化する偶数個のビット列とを有する。負の整数のビット列は、正の整数のビット列よりも1ビット多い。標準演算では、オーバーフロー時は、ステータスフラッグがセットされる。対照的に、本実施の形態では、無効を排除して、0のいずれか一方の側に位置する同数の奇数個のビット列を用いたコード化を発生させつつ、無効(nullity)Фを最上位負整数のビット列と同一であるとする修正2の補数演算が用いられる。符号付き無限大(±∞)は、無効及び符号付き無限大を排除し、0のいずれか一方の側に位置する同数の偶数個の連続(有限)整数を残しつつ、残りの最上位正整数及び最上位負整数用のビット列と同一視される。オーバーフロー時には、演算は、符号付き無限大を丸める。この整数の基礎コード化の下では、数は、固定小数点形式i.fで表される。但し、iは、整数ビットであり、fは、小数点以下部分ビットである。今述べたように、iビットは、修正2の補数エンコーディングを用いた、符号、無限大、及び無効を表すビットパターンを含む。すなわち、これは、整数部分と小数点以下部分が同じビット数である場合、小数点以下部分は、整数部分より正確であることを意味する。通常、数は、符号が付いていることを明確にするために、±(i.f)の形式で記載される。本実施の形態で使われる修正2の補数演算の詳細は、GB0625735.6に開示されている。無効の定義は、以下の原理による。すなわち、無効は、無限大から無限大を減算した結果であり、無効は、無限大に0を乗算した結果であり、任意の数を無効に加算した結果は無効であり、任意の数に無効を乗算した結果は無効である。
<データ・フォーマット>
図4を参照すると、バスは、ビットグループにあるデータや情報をトークンの形式で伝達する。各トークンは、3つのフィールドから成る。すなわち、整数ビットiと小数点以下部分ビットfを含む第1グループのビットからなるデータフィールドと、整数ビットiと小数点以下部分ビットfを含む第2グループのビットからなるアドレスフィールドと、トークンのステータスを様々な方法で示すタグとして用いられるc、d、a、aの4つのビットのグループからなるタグフィールドとである。各トークンは、以下に説明されるようにcとdのタグで特定される、コントロールトークンとデータトークンの2種類に分かれる。
データトークンは、バイナリ許容出力数に対するポテンシャルを与えつつ、1のゼネラルアドレス又は2つのアドレスを定義する±(i.f)の形式のアドレスフィールドを有する。また、データトークンは、さらに、書き込まれる予定のデータである1つの数±(i.f)を有する。コントロールトークンは、制御のバイナリ許容出力数に対するポテンシャルを与えつつ、1のゼネラルアドレス又は2つのアドレスを定義する±(i.f)の形式のアドレスフィールドを有する。
タグビットには、c、d、a、aの4つがある。cビットは、カレントバスフレームにコントロールトークンが含まれているか否かを示す。dビットは、カレントバスフレームにデータトークンが含まれているか否かを示す。本実施の形態において、2つのビットが特定され、故に、コントロールトークンとデータトークンとが同じプロセッサに送られることを単一のトークンで表示することができる。aビットは、トークンがアドレスaに送られるか否か、あるいは送られているか否かを示す。同様に、aビットは、当該トークンがアドレスaに送られるか否か、あるいは送られているか否かを示す。
図5は、簡素化のために3つのiビットと3つのfビットを示すが、本実施の形態では、整数部分に32ビット、小数点以下部分に32ビットの64ビットが用いられる。
<アドレス指定>
データフィールドは、それ全体で1つの数として解釈される。アドレスフィールドが、±∞の数又はФのいずれかである場合、アドレスフィールドは、単一の第1アドレスiとして解釈される。それ以外の場合、アドレスフィールドは、iビットによって定義される第1アドレスaと、fビットによって定義される第2アドレスaという2つのアドレスとして解釈される。タグフィールドは、4つのビットを表し、4ビットの各々は、セットされたり、あるいはクリアである。cタグが設定される場合、データフレームは、制御を運ぶ。それ以外は、cタグは制御を運んでいない。制御を運んでいるデータフレームは、コントロールトークンと呼ばれる。dタグが設定される場合、データフレームは、データを運ぶ。それ以外は、dタグは、データを運んでいない。データを運んでいるデータフレームは、データトークンと呼ばれる。aタグが設定される場合、データフレームは、±∞の第1アドレスa、あるいはゼネラルアドレスiに依然として伝送される。それ以外の場合には、このアドレスに伝送されない。aタグが設定される場合、データフレームは、第2アドレスaに依然として伝送される。そうでない場合は、もはやこのアドレスには伝送されない。アドレスフィールドが無効Фであれば、データフレームは、バスには乗っていない。アドレスa、aは、同じプロセッサをターゲットとしても、あるいは、別々のプロセッサをターゲットとしてもよい。2つの別々のアドレスを用いることで、単一のスレッドから2つの平行スレッドに許容出力するよう制御することが可能になる。対象となるプロセッサが異なる場合、データフレームは、第2アドレスaの前に第1アドレスaに送られることになる。aタグとaタグとが両方クリアである場合、データフレームは、空であり、プロセッサによる書き込まれる。
<バスとのタプルの接続>
上述したように、各タプル12は、左右上下の4つの線条バス20に重ね合わせられるように接続されている。図3は、タプル12とゼネラル、アップアドレス、又はダウンアドレスの線条バスとの接続を示す。本実施の形態のチップでは、4つの異なるバスが各タプルに接続されているが、他の実施の形態では、共有のために適切な空間的・時間的トレードオフがある場合には、隣接するタプル同士の間でバスを共有してもよい。チップのすべてのバスは、集合的に「バス」と称される。
<出入力タプル>
上述したように、タプル12は、見かけ上矩形の行列のアレイに配置される。各タプルは、左右上下4つの線条バスに重ね合わせられている。1の線条バスにおける最初と最後のタプルは、アドレス±∞とされて出入力を司る。一方、中間のタプルは、プロセッサとなる。オンチップ出入力装置は、トークンを関連するバスに伝達したり、出入力タプルにおいて関連するバスからトークンを外したりする。出入力タプルが、周辺機器からチップへと入力される対象のトークンである場合には、タプルは、反対側の線状バス上にある出力装置にトークンを書き込む。これにより、出入力タプルの接続テストが可能となる。トークンが外側境界バス上の出入力タプルに到着した場合、そのトークンは、出力装置に書き込まれる。もし、トークンがその出入力タプルをターゲットとしていない場合、そのトークンが先のターゲットによって捕捉されなかったために、トークンは到着する。すなわち、ハードウェアやコンパイラのエラーである。オフチッププロセッサは、このエラーを検証してもよい。出入力タプルがコントロールトークンを捕捉する動きは、アーキテクチャに依存するので、出入力処理の条件付けに用いることもできる。本実施の形態のチップにおいて、出入力タプルでコントロールトークンは用いられないが、出入力タプルは、チップ内のある場所にトークンを書き込んで、何らかの条件を報告してもよい。
無限大は、最も極端な数であり、無限大のプロセッサの0番目、uのセルを超えた任意のメモリセルにアドレスすることは可能ではない。無限大タプルは、常に実際に番号が付されたプロセッサを超えたところに位置する。したがって、線条バスにおけるプロセッサの個数、それ故にチップの形状は、チップ内のトークンの伝播に影響を及ぼすかもしれないが、チップの出入力には影響を与えない。これは、チップが、もともと製造形状が非矩形であったり、チップ内での製造誤差により、チップが矩形でない場合に有効である。
<プロセッサ>
図5を参照すると、各プロセッサ12は、8つの物理メモリセルu、v、w、r、l、z、g、nからなる8−タプルから成る。セルは、0から7まで番号が付いている。したがって、uは、タプルの0番目のエレメントとして認められ、nは、7番目のエレメントとして認められる。0から番号付けすることは、目標のターゲットを検出するためのアドレスをマスキングする際のハードウェアにおいて行われているように、モジュール演算を行う上で有益である。物理8−タプルは、マニピュレータ又は出入力装置12でもあるプロセッサ12によって操作されるデータをホールドする。いずれの種類の装置も、隣接する4つの線条バスのいずれかに書き込みすることができる。物理タプルは、ラベル−x、+x、−y、+yのバーチャルセルで書き込みアドレスを受け取ことによって、ラベルされたバスに書き込みをするように調整されている。このように、タプルの各物理セルに対応する4つのバーチャルメモリセルが存在し、全体で以下の32のバーチャルセルを提供する。
(u-x、u+x、u-y、u+y、v-x、v+x、v-y、v+y、w-x、w+x、w-y、w+y、r-x、r+x、r-y、r+y、l-x、l+x、l-y、l+y、z-x、z+x、z-y、z+y、g-x、g+x、g-y、g+y、n-x、n+x、n-y、n+y
確認するが、エレメントは、0から番号付けされているため、u-xは、バーチャル32−タプルの0番目のエレメントであり、n+yは、31番目のエレメントである。本実施の形態においては、これらのセルのアドレスは、アドレスの最下位5ビットによって表され、プロセッサのアドレスは、上位ビットによって表される。セルu-xは、ゼロであり、(00000)とラベル付けされ、残りのセルは、1から31まで(00001)から(11111)まで順に増えるようにラベル付けされている。各プロセッサのバーチャルメモリセルの各々は、それ自身のアドレスを有し、バスにある他のプロセッサから、あるいは同じプロセッサの内部からのデータによってターゲットとされる。
各プロセッサは、下記のインストラクションを実行するように配置されている。
u×v+w→r’
write(r’,r)
jump(r’,l,z,g,n)
一行目のインストラクションは、トランスリアル乗算及び加算である。したがって、プロセッサは、セルu、vにおける数の乗算を実行する乗算器50と、乗算器の出力をセルwの数に加算する加算器52とを有する。なお、乗算器の出力は、プロセッサ内に一時的な変数としてホールドされる。この行では、加算、減算、乗算いずれの組み合わせも計算することができる。除算は、逆数を作るインストラクションを用い、その逆数を乗算することによって実行される。同様に、数学の関数や一般的な計算は、多くのインストラクションの中で実行される。
2行目のインストラクションは、データトークンを正しい線条バスに置くことで、その演算結果r’を、1つまたは2つのタプルの1つまたは2つのメモリセルへの書き込む。アドレスrが、バーチャルレジスタr-xに書き込まれた場合、バス−Xにr’が書き込まれる。そして、これに対応して、r+x、r-y、r+yでrが受け取られると、バス+X、−Y、+Yにr’へと書き込まれる。これは、加算器52から出力を受け取り、その出力をデータトークンにするルータ53によって実現される。ルータ53は、また、バーチャルセルriからアドレスrを受け取り、アドレスrをデータトークンのアドレスフィールドに置き、そして、データトークンを適切なバスに乗せる。物理メモリセルl、z、g、wは、同様に扱われる。しかし、物理セルu、v、wは、演算用のデータであり、到達したバーチャルメモリセルによってその行動を変えることはない。しかしながら、これらは、今後の使用のためにバーチャルアドレスを維持するu-x、v-x、w-xとしてアドレス指定されるべきである。
ジャンプ(jump)インストラクションは、バス上にコントロールトークンを乗せる。加算器52からの演算結果r’は、4つのセレクタ55、57、59、61に入力される。r’が0以下の場合、最初のセレクタが反応し、r’が0の場合は、2つ目のセレクタが、r’が0以上の場合は、3つ目のセレクタが、r’が無効の場合は、4つ目のセレクタが反応する。トリガーされたセレクタは、それぞれ対応するルータ54、56、58、60の動作をトリガする。ルータは、バーチャルセルli、zi、gi、niからアドレスを取り出し、取り出したアドレスをコントロールトークンへのアドレスとし、適切なバスにコントロールトークンを乗せる。
ジャンプインストラクションがトークンをバス上に置く前に、書き込みインストラクションがバスにトークンを置く。したがって、データとコントロールトークンが同じタプルに渡されるとき、データトークンは、コントロールトークンの前に到着する。この時空間トポロジにより、インストラクションを用いてメモリロックキングアルゴリズムを実行することが可能となる。ハードウェアにおいて、タプルをバスにリンクさせる以外に、タイミング制御を行う必要はない。このリンクの正確な性質は、チップの性能に重要である。
ジャンプインストラクションは、中止したり、シリアルスレッドを継続したり、あるいは2つの並行するスレッドに分岐することも可能である。スレッドは、Фプロセッサにジャンプしたとき、中止される。これは、無効プロセッサは決して実行されないことになる。さらに、タプルアーキテクチャは、フェッチレス(すなわち読み込まない)なので、無効プロセッサに書き込みをすることはできず、したがって、無効プロセッサはメモリを必要としないことになる。無効プロセッサは、プロセッシングを行わず、メモリも有していないため、タプルとして実行される必要がない。無効プロセッサは、コントロールジャンプや書き込み先のアドレスに指定することはできるが、ジャンプや書き込みのソースにおいては、無演算命令として実行される。
無効プロセッサを排除することによる有用な予期せぬ結果は、トランスリアル面から無効で行を排除することである。これにより、トポロジは簡素化され、無限大に方向が向けられたラインと共に延在する実数平面になる。無限大でのラインは、全プロセッサが実数平面上に存在しながら、出入力に用いられる。
ジャンプインストラクションは、次のように実行される。
Jump to(l)if r’<0
Jump to(z)if r’=0
Jump to(g)if r’>0
Jump to(n)if r’=Ф
プロセッサは、コントロールトークンを適切な線状バスに置くことによって、ジャンプインストラクションを実行する。従って、コントロールトークンは、l、z、g、n=±(a・a)のうち、アドレスaとaに運ばれる。
プロセッサは、バスからトークンを受け取るバッファを有する。プロセッサは、演算をするとき、バッファを内部レジスタにコピーして、内部レジスタ上で動作する。
<バスでのトークンの取り扱い>
上述したように、各プロセッサは、プロセッサへの32のアドレスを示すために確保された5アドレスビットを有するアドレスPを有る。プロセッサにデータフレームが到着すると、データフレームは検査される。最初に、Pがiと合致し、aがセットされ、dもセットされる場合、データフィールドは、バスからプロセッサに書き込まれ、aがクリアされ、このアドレスへの伝達は、もはや必要なくなったことを示す。次に、第二に、Pがfと合致し、aがクリアで、aがセットされ、dがセットされている場合、データフィールドは、バスからプロセッサへとに書き込まれ、aとdがクリアされる。これは、伝達がどこに対しても不要となったことを示す。第三に、Pがiと合致し、aがセットされ、cがセットされている場合には、単一サイクルのプロセッサの実行が開始され、aがクリアされる。これは、このアドレスへの伝達はもはや必要なくなったことを示す。次に、第四に、Pがfと合致し、aがクリアでaがセットされ、cがセットされている場合、単一サイクルのプロセッサの実行が開始されてaがクリアされ、cもクリアされる。これは、どこへも伝達が不要となったことを示す。注意すべきは、iとfが同じプロセッサで実行を開始する度に、単一サイクルのみのプロセッサの実行が開始される。第五に、Pがfと合致し、aがセットされている場合、第1のアドレスへの伝達が失敗する。これは、エラーである。データは、プロセッサへ書き込まれず、実行は開始されない。データフレームは、データをどこにも伝達させずに、バスに沿って終点まで通過する。
バス上のすべてのプロセッサが、バス上の対応するデータフレームに書き込む機会を持ってしまうと、データフレームは、バス上で位置をひとつ移動させられる。好ましい実施の形態においては、これは、データフレームをテンポラリデータフレームにコピーし、それを隣のデータフレームにコピーすることによって実現される。
<出入力装置の動作>
バスの終点にあるデータフレームに、cあるいはdのいずれか一方がセットされていた場合、出入力装置によって、データフレームは、チップの外部に書き込まれる。単一のアドレスがアップアドレスバスで∞、あるいは、ダウンアドレスバスで−∞の場合、そのバスフレームは、出入力装置を正しく目標とし、オフチップデバイスによって、有効データフレームとして扱われる。他のアドレスは、伝達エラーを示し、オフチップデバイスによって適切なエラー処理が施される。
<プロセッサのバスへの接続動作>
タプルは、その位置においてバスフレームからトークンを受け取ったり、バスフレームへトークンを書き込んだりする。タプルは、そのバスフレームに書き込みをする前にバスフレームからトークンを受け取る。そのため、バスフレームを再利用することができる。これにより、バスの帯域幅を効率的に利用できることになる。また、孤立したチップ内における通信が隣接するタプル間での移動に限定されているとき、バスは、常にトークンを受け渡し可能な状態にあることになる。バスのこの準備は、たとえば、右と下向きの線条バスを隣接するタプルへの短い書き込み用とし、左と上向きのバスの領域においてのみ長い書き込みや隣接していないタプルへのジャンプを行うことによって、広範囲での応用が可能になる。長いジャンプは、バスの容量を越えないような密度で維持される必要がある。チップ上のどこにおいても迅速な通信を可能とするように、チップ内の領域で長短の配置の間での切替は可能である。
各プロセッサタプルは、バスを使わずに自身の内部に書き込みしたり、ジャンプしたりできる。この場合、書き込みやジャンプの時間は、標準インストラクション時間に含まれており、プロセッサは、トークンを読むよりも速くトークンを書き込みをすることはできない。
トークンは、バスからタプルのバッファへ任意の順番で伝達される。これにより、プロセッサ・バスコミュニケーションの任意のマルチプレクシングが可能となる。しかし、プロセッサがビジーでトークンを受け取れないとき、トークンは、出入力タプルによってチップを外れて書き込まれるまで、バス上に置かれたままになる。このようにして、バスの競合エラーは、自己報告される。ここでのバスの競合とは、コンパイラあるいはハードウェアのエラーであり、発生してならないものである。同様に、トークンがaに到着してもaに伝達されない場合、トークンは、バスに沿って伝達され、エラーが自動的に報告される。このため、トークンがaに届けられる前にaに伝達されず、aにおけるデータとコントロールは、aへの伝達を確認するために使用される。正しく実行するためにタイミングルールを利用することは、コンパイラの責任である。これは、バスのローカルエリアでのタイミングを判別することによるコンパイル時間で、あるいは、メモリロッキングアルゴリズムを実施するランタイムで、そのように行ってもよい。
<バスパワーマネジメント>
コントロールタグcとデータタグdがクリアならば、バスフレームは、コピーされていない。コントロールタグがセットされているが、データタグがクリアな場合は、タグ及びコントロールナンバ全体がコピーされる。データタグがセットされている場合、バスフレーム全体がコピーされる。このように、有効なデータのみを移動させるために、実質的なパワーが使用される。
<プロセッサによるデータの取り扱い>
プロセッサのメモリセルuiのいずれかをターゲットとするバスフレームに、タグdがセットされている場合、フレームのデータフィールドが、乗算器のメモリセルuに書き込まれる。同様に、メモリセルviのいずれかをターゲットとするデータフィールドは、乗算器のメモリセルvに書き込まれ、メモリセルwiのいずれかをターゲットとするデータフィールドは、加算器のフィールドwに書き込まれる。同様に、メモリセルriのいずれかをターゲットとするデータフィールドは、ルータのデータフレームアドレスフィールドに書き込まれ、該ルータが付加的な動作を実行する。データフィールドがr-xをターゲットとする場合、バス−Xが出力先として選択される。同様に、データフィールドがr+x、r-y、r+yをターゲットとしている場合には、対応するバス−X、−Y、+Yが出力先として選択される。
メモリセルliのすべてがルータ54に入力し、メモリセルzi、gi、niは、それぞれのルータ56、58、60に入力する。すべてのルータは、同じ様に動作する。例えば、プロセッサのメモリセルliのいずれかをターゲットとするデータフレームのタグdがセットされている場合は、フレームのデータフィールドは、ルータのアドレスフィールドに書き込まれる。データフィールドがl-x、をターゲットにしている場合は、−Xバスが出力先として選択される。同様に、データフィールドがl+x、l-y、l+yをターゲットにしている場合には、対応するバス−X、−Y、+Yが出力先として選択される。データフレームのタグフィールドは、第1と第2のアドレスへの制御の伝達を示すように設定される。
プロセッサでの実行は、タグcがセットされたデータフレーム、すなわち、コントロールトークンによって開始され、プロセッサの任意のバーチャルメモリセルをターゲットとする。バーチャルメモリセルに関連するアドレスビットを無視することは、単にプロセッサのアドレスPが用いられることを意味するが、しかし、これは、プロセッサのメモリセルのアドレスu-xに等しい。図5は、メモリセルu-xにコントロールトークンが到着してトリガされる実行を示す。このコントロールトークンが到着すると、乗算器は、自身のメモリセルuとvとを乗算し、その積を加算器に書き込む。加算器は、その積にセルwのコンテンツを加算する。そして、その結果である和は、データフレームのデータフィールドに書き込まれる。データフレームのタグフィールドは、第1と第2のアドレスへデータへの伝達を示すように設定される。アドレスが無効でなければ、選択された出力バスにデータフレームが書き込まれる。アドレスが無効であれば、データフレームは、バスに置かれない。また、加算器からの結果としての和は、4つのセレクタのそれぞれにも書き込まれ、和が0より小さいか、0に等しいか、0より大きいか、あるいは無効であるかによって、いずれか1つのルータがトリガされる。トリガされたルータは、アドレスが無効でなければ、選択された出力バスにデータフレームを書き込む。アドレスが無効の場合には、データフレームはバスには置かれない。この書き込みは、メモリセルをターゲットとするルータからのデータの書き込みの後に行われるように、タイミングが設定されている。
すべてのプロセッサのタイミングは、共通のクロック信号によって制御されている。このクロック信号は、バスの制御に使用されるものと同じでよい。プロセッサは、クロック信号に応答し、ワンサイクル毎に一度インストラクションを実行するよう構成されている。そして、全プロセッサは、同じタイミング動作するので、各プロセッサは、同時にデータをバスに置く。各サイクルにおいて、データがバスからプロセッサに書き込まれるタイミングは、プロセッサをアドレスとするデータがそのプロセッサに隣接するバスにある時間に依存する。データは、インストラクションが実行されるより頻繁にバスに沿って移動するため、プロセッサにデータが書き込まれる時間は、プロセッサ毎に異なる。
<記号>
好ましい実施の形態の記載において用いられる記号を以下にまとめる。
-x:デカルト座標系の原点から負のX軸を示す下付き添字。
-x:デカルト座標系の原点から正のX軸を示す下付き添字。
-y:デカルト座標系の原点から負のY軸を示す下付き添字。
+y:デカルト座標系の原点から正のY軸を示す下付き添字。
:±(a・a)の形式で最初に現れるアドレス。
:トークンがアドレスaに伝達されるべきなのか、あるいはすでに伝達されたのかを示すバスフレームのタグビット。
:±(a・a)の形式で2番目に現れるアドレス。
:トークンがアドレスaに伝達されるべきなのか、あるいはすでに伝達されたのかを示すバスフレームのタグビット。
c:フレームが制御を含むか否かを示すバスフレームのタグビット。
d:フレームがデータを含むか否かを示すバスフレームのタグビット。
f:固定小数点の小数点以下部分ビット。
g:物理8−タプルの6番目のセル、0より大きい結果の場合にジャンプするアドレス。
i:固定小数点の整数ビット、符号、無限大及び無効を示すビットパターンを含む。
l:物理8−タプルの4番目のセル、結果が0より小さい場合にジャンプするアドレス。
n:物理8−タプルの7番目のセル、結果が無効の場合にジャンプするアドレス。
P:プロセッサのアドレス。これは、物理8−タプルの0番目のセルuのアドレスである。
r、r’:物理8−タプルの3番目のセル。インストラクション・フラグメントu×v+w→r’の演算結果のアドレス。演算結果は、一時変数r’にホールドされる。
u:物理8−タプルの0番目のセル。インストラクション・フラグメントu×v+w→r’の第1の引数。
v:物理8−タプルの1番目のセル。インストラクション・フラグメントu×v+w→r’の第2の引数。
w:物理8−タプルの2番目のセル。インストラクション・フラグメントu×v+w→r’の第3の引数。
z:物理8−タプルの5番目のセル。解が0の場合にジャンプするアドレス。
<効果>
上述した実施の形態には、数多くの効果がある。
チップの周辺に、どこでも出入力及び電源供給ができる。したがって、出入力及び電源供給のいずれにおいても、膨大な帯域幅及び冗長性がある。しかし、冗長電源供給は、不要なチャージフローや電気的ノイズを防ぐよう注意して操作する必要がある。それでもなお、この帯域幅及び冗長性は、ある程度の将来の保証をもたらす。
周辺のどこででも出入力が可能という取り組みは、トークンが捉まらなかった場合、未捕捉トークンを調べるようプログラムされた出力装置に書き込まれたトークンによって、このエラーが自動的に報告されることを意味する。
プロセッサ・インストラクションは、2のべき乗の任意の長さのタプルにも拡張可能であり、したがって任意の複雑なインストラクションのセットも実行できる。このことは、ある程度の将来の保証をもたらす。
物理アドレスu、v、wのバーチャルバージョンに関連する冗長ビットが6つあり、プロセッサに異なった動作をさせるよう条件づけるために使用される。プロセッサのアーキテクチャやコンパイラのモジュールを変えるだけで柔軟性が生まれ、繰り返しになるが、ある程度の将来の保証がもたらされる。
上述した実施の形態においては、トランスナンバは、ビット列によって表される。厳密には、トランスリアル、すなわち、±∞又はФは、ビット列全体を使用するが、実数は、i.fという2つの部分で表現される。ここで、iは、数の整数部分であり、fは、小数点以下部分である。アドレス指定のスキームによって、0、1、または、2つの対象への指定が可能である。アドレスが無効Фである場合、データフレームは、バスに置かれず、したがってターゲットとして指定されるアドレスもない。アドレスが符号付き無限大±∞のうちの一方である場合には、1つの出入力装置がアドレス指定される。アドレスが実数の場合、iは第1のアドレス、fは第2のアドレスとして解釈される。一般に、iとfは、異なるプロセッサのメモリセルをターゲットとしており、2つのターゲットがアドレスとして指定される。しかし、単一のプロセッサ内の同一のメモリセル、又は異なるメモリセルにアドレス指定してもよい。この場合、1つのプロセッサ、あるいは1つのメモリセルが、アドレス指定される。このように、ターゲットなし、1つの出入力装置、1つのプロセッサ内の1つまたは2つのメモリセル、あるいは、2つの異なるプロセッサの2つのメモリセルをアドレスとして指定できる。これで全体的には十分であるが、iは符号ビットを含むが、fには符号ビットがないことが課題である。したがって、すべての正のアドレスと、負の第1アドレスについては自然な表現があるが、負の第2アドレスには自然な表現がない。
負のアドレスに対して自然な表現がないという問題は、正のアドレスのみを用いる適宜のスキームにおいて解決される。このようなスキームのうち最も簡単なものは、2次元のデカルト座標系の第一象限に配置された線や格子を使用することである。図1に示される座標系の一部がこれに相当する。しかし、この場合、各チップの結合が限定的になってしまう。この場合、チップは、正の軸方向にそって足すことはできるが、負の軸方向に沿って足すことはできない。これは、装置が利用できるスペースを制限する。
したがって、図6を参照すると、本発明の第2の実施の形態では、別の解決策が用いられている。ここで提案される解決策では、各バスを、入力装置に隣接するプロセッサのメモリセルu−xで0からの連続自然数、チップの端部では−∞が付され、出力プロセッサに近接するメモリセルn+yで正整数nとなり、チップの端部では+∞が付されるように、連続した自然数で番号付けする。このように、各メモリセルは、各バスにおいて異なるアドレスを有し、アドレスは、簡単な方法で互いに関連付けられている。さらには、アドレスは、チップ何個分も離れた場所にあるプロセッサ内の1つのメモリセルをターゲットしてアドレス指定できる。もっとも重要なことは、すべてのアドレスの計算は、トランス算術において自然な方法で実行される。
各バスは、−∞と番号付けされた入力装置で入り口を、+∞と番号付けされた出力装置で出口を有する。プロセッサの内部に介在するメモリセルには、図6に示されるように、0から正の数nまで順番に番号がふられている。このように、単一のメモリセルは、一般に、各バスに異なるアドレスを有する。
1つのバスのメモリセルのリアルアドレスcを、対向するバスのアドレスc’に変換するために、シンプルなアルゴリズム、
n−c→c’
が実行される。この演算は、冪等であり、故に
n−c’→c
である。
厳密には、トランスリアルアドレスは、そのままで正しい。トランスリアルアドレスは、反対側のバスのアドレスに写像する適宜の手段によって変換される必要はない。もし、リアルアドレスcがnより大きい場合、ターゲットとなるメモリセルは、別のチップの上にある。そこへアドレス指定されたトークンは、現在のチップからバスに沿って、+∞が付けられた出力装置に運ばれる。出力装置は、現在のチップの幅分、すなわちn+1分をそのアドレスからディクリメントして、トークンを出力する。従って、このトークンは、次のチップに置かれる。次のチップでは、アドレスは、そのチップでのアドレスに相当する十分に小さい数であるか、あるいは、そこへ伝送される場合は、大きすぎる数であるか、のいずれかである。この場合、トークンは、次のチップを横切ってとなりのチップの出力装置に向けて送られる。ここで、再び、アドレスはディクリメントされ、トークンは、更に次の隣接チップに置かれる。このプロセスは、トークンが適切なチップのプロセッサに伝達されるまで、何度でも繰り返えされる。この構成においては、各チップは、全プロセッサ用のアドレスを有し、また同じチップについては、対応するプロセッサのアドレスは同じであることが望ましい。しかし、トークンによって運ばれるようなターゲットのアドレスは、大きくてもよい。実際、このアドレスは「相対的」なものであり、トークンの現在の位置に関係した位置によって、ターゲットであるプロセッサを特定する。
本システムにおいては、各チップは、±∞が付けられたそれぞれの出入力装置を有している。これは、±∞までに多くのルートが存在することを示している。実数がつけられた負のアドレスは存在しない。そのようなアドレスは、特定のシステムの特定のデザインに依存する何らかのものをコード化するために用いられることになる。このようなアドレスは、対応する正のアドレスの2の補数になる。
チップに不具合があったり、形状が矩形ではない場合、異なるチップのバス上には異なる個数の有効なプロセッサが存在してもよい。したがって、各チップは、それ自身のデクリメントを行う必要がある。このデクリメントは、オフチップ装置にさせてもよい。チップが垂直方向に積層している場合、オフチップ装置は、ターゲットのチップまで迅速に信号を送ればよい。こうしたショートカットは、コンパイラが利用するタイミングルールに影響を及ぼすことがある。
10 プロセッサ・チップ
12 プロセッサ
20 バス

Claims (19)

  1. 各々がインストラクションを実行するように配置された複数のプロセッサと、前記プロセッサ間でデータトークン及びコントロールトークンを搬送するように配置されたバスとを有し、
    各プロセッサは、バスを介してコントロールトークンを受け取る場合に、前記インストラクションを実行し、前記インストラクションを実行する際には、データに演算を行って結果を生成し、データ対象プロセッサとなるべきプロセッサを特定し、特定されたデータ対象プロセッサに出力データを伝送し、制御対象プロセッサとなるべきプロセッサを特定し、特定した制御対象プロセッサにコントロールトークンを伝送することを特徴とする処理装置。
  2. 各プロセッサは、任意のデータ対象プロセッサのアドレスと一緒に前記バスに前記出力データを書き込むように配置されていることを特徴とする請求項1記載の処理装置。
  3. 各プロセッサは、前記出力データが並列に送られる複数のデータ対象プロセッサを特定できることを特徴とする請求項1又は2記載の処理装置。
  4. 前記バスは、前記特定されたデータ対象プロセッサに前記出力データを伝送するように配置され、前記出力データは、前記データ対象プロセッサに書き込まれることを特徴とする請求項1乃至3のいずれか一に記載の処理装置。
  5. 各プロセッサは、コントロールトークンが伝送される前記制御対象プロセッサのアドレスと共にバスに前記コントロールトークンを書き込むことによって前記コントロールトークンを伝送するように、配置されていることを特徴とする請求項1乃至4のいずれか一に記載の処理装置。
  6. 各プロセッサは、前記インストラクションを実行する際、コントロールトークンを並列に伝送できる複数の制御対象プロセッサを特定できることを特徴とする請求項1乃至5のいずれか一に記載の処理装置。
  7. 各プロセッサは、特定された対象プロセッサのいずれかに前記出力データ及びコントロールトークンを伝送するときに、他のコントロールトークンを受け取るまでは前記インストラクションを再度実行しないことを特徴とする請求項1乃至6のいずれか一に記載の処理装置。
  8. 各プロセッサは、同一のインストラクションを実行するように配置されていることを特徴とする請求項1乃至7のいずれか一に記載の処理装置。
  9. 各プロセッサは、唯一のインストラクションを実行するように配置されていることを特徴とする請求項1乃至8のいずれか一に記載の処理装置。
  10. 前記インストラクションは、
    a×b+c −> r’
    の乗算及び加算であることを特徴とする請求項1乃至9のいずれか一に記載の処理装置。
  11. 各プロセッサは、前記結果に基づいて対象プロセッサを選択するように配置されていることを特徴とする請求項1乃至10のいずれか一に記載の処理装置。
  12. 各プロセッサは、前記結果が、ゼロ未満、ゼロ、ゼロよりも大、又は無効のいずれに該当するかを判別し、それに応じて、対象プロセッサを選択するように配置されていることを特徴とする請求項11記載の処理装置
  13. 各プロセッサは、前記インストラクションへの入力が記憶される複数のメモリセルを有することを特徴とする請求項1乃至12のいずれか一に記載の処理装置。
  14. 各プロセッサは、対象プロセッサのアドレスが記憶される複数のメモリセルを有することを特徴とする請求項1乃至13のいずれか一に記載の処理装置。
  15. 各プロセッサは、前記オペレーションの結果が記憶される複数のメモリセルを有することを特徴とする請求項1乃至14のいずれか一に記載の処理装置。
  16. 各プロセッサの全メモリは、電源投入時には固定値に設定されることを特徴とする請求項1乃至15のいずれか一に記載の処理装置。
  17. 各々が複数のプロセッサからなる複数のチップを有し、各チップは、トークンが他のチップに転送される複数の出力装置を有し、
    各チップ上の各プロセッサは、関係するアドレスを有し、前記アドレスは範囲の内部にあり、
    前記範囲の外側にある対象アドレスを有するトークンを出力装置によって受け取ると、前記対象アドレスの変更を実行し、前記トークンを前記他のチップに転送することを特徴とする請求項1乃至16のいずれか一に記載の処理装置。
  18. 前記出力装置は、前記変更を実行するように配置されていることを特徴とする請求項17に記載の処理装置。
  19. 前記変更を実行するために配置された、さらなるオフチップ装置を有することを特徴とする請求項17に記載の処理装置。
JP2010509892A 2007-05-31 2008-05-30 プロセッサ Expired - Fee Related JP5352780B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB0710377.3A GB0710377D0 (en) 2007-05-31 2007-05-31 Processors
GB0710377.3 2007-05-31
PCT/GB2008/001821 WO2008145995A2 (en) 2007-05-31 2008-05-30 Processors

Publications (2)

Publication Number Publication Date
JP2010528387A JP2010528387A (ja) 2010-08-19
JP5352780B2 true JP5352780B2 (ja) 2013-11-27

Family

ID=38289590

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010509892A Expired - Fee Related JP5352780B2 (ja) 2007-05-31 2008-05-30 プロセッサ

Country Status (9)

Country Link
US (1) US8495340B2 (ja)
EP (1) EP2153343A2 (ja)
JP (1) JP5352780B2 (ja)
KR (1) KR20100084605A (ja)
CN (2) CN101802810B (ja)
CA (1) CA2689248C (ja)
GB (3) GB0710377D0 (ja)
HK (1) HK1138661A1 (ja)
WO (1) WO2008145995A2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0900667D0 (en) * 2009-01-16 2009-02-25 Univ Reading The Processors
GB2471067B (en) 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
US8656137B2 (en) * 2011-09-01 2014-02-18 Qualcomm Incorporated Computer system with processor local coherency for virtualized input/output
JP6449702B2 (ja) * 2015-03-30 2019-01-09 ルネサスエレクトロニクス株式会社 半導体装置
CN108140232B (zh) * 2015-06-10 2022-05-24 无比视视觉技术有限公司 用于处理图像的图像处理器和方法
US9690494B2 (en) * 2015-07-21 2017-06-27 Qualcomm Incorporated Managing concurrent access to multiple storage bank domains by multiple interfaces
CN114297130A (zh) * 2021-12-28 2022-04-08 深圳云天励飞技术股份有限公司 芯片系统中的数据传输处理方法及相关装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59146345A (ja) 1983-02-10 1984-08-22 Masahiro Sowa コントロ−ルフロ−並列計算機方式
US5152000A (en) * 1983-05-31 1992-09-29 Thinking Machines Corporation Array communications arrangement for parallel processor
US5765011A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
JPH05233853A (ja) 1992-02-24 1993-09-10 Sharp Corp 演算処理装置
US5784631A (en) 1992-06-30 1998-07-21 Discovision Associates Huffman decoder
US5361385A (en) * 1992-08-26 1994-11-01 Reuven Bakalash Parallel computing system for volumetric modeling, data processing and visualization
JP2652524B2 (ja) * 1994-10-19 1997-09-10 株式会社エーユーイー研究所 電子回路の組み立て方法およびその電子回路
US5737524A (en) * 1995-05-22 1998-04-07 International Business Machines Corporation Add-in board with programmable configuration registers for use in PCI bus computers
DE59909398D1 (de) * 1999-03-30 2004-06-09 Festo Ag & Co 1-Chip-Rechneranordnung
US6553442B1 (en) * 1999-11-09 2003-04-22 International Business Machines Corporation Bus master for SMP execution of global operations utilizing a single token with implied release
US6507904B1 (en) * 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
US7035996B2 (en) 2002-01-17 2006-04-25 Raytheon Company Generating data type token value error in stream computer
US7581081B2 (en) * 2003-03-31 2009-08-25 Stretch, Inc. Systems and methods for software extensible multi-processing
JP4527571B2 (ja) * 2005-03-14 2010-08-18 富士通株式会社 再構成可能演算処理装置
US8018849B1 (en) * 2005-03-25 2011-09-13 Tilera Corporation Flow control in a parallel processing environment
US7962717B2 (en) * 2007-03-14 2011-06-14 Xmos Limited Message routing scheme
EP2304577B1 (en) * 2008-05-27 2018-07-04 Stillwater Supercomputing, Inc. Execution engine
TW201044185A (en) * 2009-06-09 2010-12-16 Zillians Inc Virtual world simulation systems and methods utilizing parallel coprocessors, and computer program products thereof

Also Published As

Publication number Publication date
US8495340B2 (en) 2013-07-23
GB0921638D0 (en) 2010-01-27
WO2008145995A3 (en) 2009-01-15
US20100228949A1 (en) 2010-09-09
GB0710377D0 (en) 2007-07-11
KR20100084605A (ko) 2010-07-27
CA2689248C (en) 2017-09-05
GB201202099D0 (en) 2012-03-21
EP2153343A2 (en) 2010-02-17
GB2462770A (en) 2010-02-24
CA2689248A1 (en) 2008-12-04
CN103365823A (zh) 2013-10-23
GB2486092A (en) 2012-06-06
JP2010528387A (ja) 2010-08-19
GB2486092B (en) 2012-07-18
WO2008145995A2 (en) 2008-12-04
HK1138661A1 (en) 2010-08-27
CN101802810B (zh) 2013-06-12
CN101802810A (zh) 2010-08-11
GB2462770B (en) 2012-05-02

Similar Documents

Publication Publication Date Title
JP5352780B2 (ja) プロセッサ
EP0539595A1 (en) Data processor and data processing method
US5081575A (en) Highly parallel computer architecture employing crossbar switch with selectable pipeline delay
US8737392B1 (en) Configuring routing in mesh networks
US8151088B1 (en) Configuring routing in mesh networks
KR101703797B1 (ko) 벡터 소팅 알고리즘 및 다른 알고리즘들을 지원하기 위한 트리 구조를 갖춘 기능 유닛
KR20100092805A (ko) 재구성 가능한 구조의 프로세서
US20050160253A1 (en) Method for managing data in an array processor and array processor carrying out this method
CN111630505A (zh) 深度学习加速器系统及其方法
KR20070061538A (ko) Simd 프로세서 및 데이터 통신 방법
US20110185151A1 (en) Data Processing Architecture
KR100765567B1 (ko) 산술 논리 유닛 및 스택을 가지는 데이터 프로세서, 멀티미디어 장치 및 컴퓨터 판독가능 기록 매체
CN107851016A (zh) 向量算术指令
US7124280B2 (en) Execution control apparatus of data driven information processor for instruction inputs
CN112463218B (zh) 指令发射控制方法及电路、数据处理方法及电路
EP2254057B1 (en) Simd processor array system and data transfer method thereof
US20050240388A1 (en) Logical simulation device
US9317474B2 (en) Semiconductor device
US9092212B2 (en) Processors
JP4060960B2 (ja) キャッシュ記憶装置
EP1251425A2 (en) Very long instruction word information processing device and system
JP2005267362A (ja) Simdプロセッサを用いた画像処理方法及び画像処理装置
JP2655243B2 (ja) 複合化ベクトル並列計算機
Pechanek et al. An introduction to an array memory processor for application specific acceleration
CN117009287A (zh) 一种于弹性队列存储的动态可重构处理器

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120510

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130508

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130701

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20130709

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130716

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130807

R150 Certificate of patent or registration of utility model

Ref document number: 5352780

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees