JP2009512920A - 集積プロセッサアレイ、命令シーケンサ、及び、i/oコントローラ - Google Patents
集積プロセッサアレイ、命令シーケンサ、及び、i/oコントローラ Download PDFInfo
- Publication number
- JP2009512920A JP2009512920A JP2008534793A JP2008534793A JP2009512920A JP 2009512920 A JP2009512920 A JP 2009512920A JP 2008534793 A JP2008534793 A JP 2008534793A JP 2008534793 A JP2008534793 A JP 2008534793A JP 2009512920 A JP2009512920 A JP 2009512920A
- Authority
- JP
- Japan
- Prior art keywords
- data
- computer system
- instruction
- processing engine
- processing
- 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.)
- Abandoned
Links
- 238000012545 processing Methods 0.000 claims abstract description 157
- 230000015654 memory Effects 0.000 claims abstract description 50
- 238000012546 transfer Methods 0.000 claims abstract description 35
- 238000004364 calculation method Methods 0.000 claims description 18
- 230000008859 change Effects 0.000 claims description 7
- 238000004891 communication Methods 0.000 claims description 5
- 230000006870 function Effects 0.000 claims description 2
- 239000013598 vector Substances 0.000 description 30
- 238000000034 method Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures 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
- G06F15/8023—Two dimensional arrays, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Programmable Controllers (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本発明は、集積化命令シーケンサ、処理エンジンのアレイ及びI/Oコントローラを有するコンピュータプロセッサに関する。前記命令シーケンサは、ホストからの命令をシーケンスし、これら命令を対応するエンジンに転送し、それらの動作を指令する。I/Oコントローラは、処理エンジンへ及び該エンジンからのI/Oデータの転送を、命令シーケンサにより制御された処理と並列して制御する。処理エンジン自体は、整数算術及び論理ユニット(ALU)、1ビットALU、決定ユニット並びにレジスタを用いて構築される。命令シーケンサからの命令は、整数ALUに対して、1ビットALUに保存された論理状態及び決定ユニットに保存されたデータに従う整数演算を実行するように指令する。1ビットALU及び決定ユニットは、それらの保存された情報を、整数ALUがその演算を行うのと同じクロック周期で改変することができる。処理エンジンはまた命令及びデータを保存するためのローカルメモリーを含む。
【選択図】図1
【選択図】図1
Description
本発明は、一般にはコンピュータプロセッサに関する。更に詳細に言えば、本発明は集積化されたプロセッサアレイ、命令シーケンサ及びI/Oコントローラに関する。
なお、本出願は、米国仮出願第60/729,178号の利益を主張するものであり、その開示の全体を全ての目的で本明細書の一部として援用する。
計算速度についての常に増大する要求によって、より一層速くかつ更に効率的なプロセッサについての強い要望が生じている。特に、プロセッサは、益々、より大きな速度で、計算及び他のデータ処理のような数学的演算を実行することが求められる。また、マルチメディア及び他のアプリケーションは更に大量のデータを記憶するより大きなファイルを用いるので、プロセッサは、益々、より大きなデータを更に高速で転送することが要求される。
したがって、コンピュータプロセッサの速度及び特性を改善するための継続した努力が存在している。特に、プロセッサがデータを操作する速度及び効率の両方及びプロセッサがI/Oデータを転送する速度を改善するための努力が存在している。
本発明は、方法、システム及び装置を含む多くの様式で実施することができる。以下に、本発明の種々の実施形態を述べる。
一つの実施形態において、コンピュータシステムは、データを処理するための命令をシーケンスし、該シーケンスされた命令を転送するための命令シーケンスユニットを含んでいる。当該コンピュータシステムはまた、前記シシーケンスされた命令に対応した命令を受信ように構成された処理エンジンのアレイを含んでおり、該アレイの各処理エンジンはデータを受信するように構成される。各処理エンジンは、データを記憶するように構成された第一のメモリと、決定データを記憶するように構成された決定ユニットと、論理状態を記憶し、該論理状態を受信された命令に従って改変するように構成されたブールユニットとを有している。各処理エンジンはまた、記憶された決定データ、受信された命令及び論理状態に従って、記憶されたデータに対して条件的に整数演算を実施して、整数結果データを発生するように構成された整数ユニット、並びにI/Oデータを記憶するように構成された第二のメモリを有している。ブールユニットは、整数ユニットが整数演算を実施するのと同じクロック周期で、論理状態を改変するように構成される。該コンピュータシステムはまた、I/Oデータを前記処理エンジンのアレイに送信し、かつ該アレイからI/Oデータを受信するように構成されたI/Oコントローラを含んでいる。
もう一つの実施形態において、コンピュータシステムは、処理エンジンの行及び処理エンジンの列を形成するように、行及び列で直列に相互接続された処理エンジンを有する処理アレイを具備しており、該処理アレイは、I/Oデータを処理エンジンの列を通して連続的にI/OデータをシフトさせることによってI/O演算を実行し、計算データを処理エンジンの行を横切って連続的にシフトさせ、また該シフトされた計算データに対して、前記I/O演算と並列に計算演算を実行するように構成される。該コンピュータシステムはまた、計算演算を制御するために、命令をシーケンスして該命令を処理アレイの処理エンジンに転送するように構成された、命令シーケンスユニットを含んでいる。それはまた、I/Oデータを、処理アレイの処理エンジンと交換するように構成されたI/Oコントローラを含んでいる。
本発明の他の側面及び利点は、本発明の原理を一例として示す添付の図面と共に読むことにより、以下の詳細な説明から明らかになるであろう。
本発明のより良い理解のために、添付の図面と共に、以下の詳細な説明を参照すべきである。
これらの図面を通して同じ参照番号は対応する部分を示している。
これらの図面を通して同じ参照番号は対応する部分を示している。
一つの意味において、本発明は、集積化された命令シーケンサを有するコンピュータプロセッサに関する。命令シーケンサは、ホストからの命令をシーケンスし、これら命令を処理エンジンに転送して、それらの演算を指令する。I/Oコントローラは、前記命令シーケンスによって制御される処理と平行して、処理エンジンとの間でのI/Oデータの転送を制御する。命令シーケンサからの命令の効率的実行を促進し、かつI/OコントローラとのI/Oデータの交換を容易にするために、処理エンジン自身は、整数演算及び論理ユニット(ALU)、1ビットALU、決定ユニット及びレジスタを用いて構築される。命令シーケンサからの命令は、整数ALUに対し、1ビットALUに記憶された論理状態及び決定ユニットに記憶されたデータに従って、整数演算を実行するように指令する。1ビットALU及び決定ユニットは、整数ALUがその演算を行うのと同じクロック周期でそれらの記憶された情報を改変することができ、より迅速かつより効率的な処理を可能にする。該処理エンジンはまた、当該エンジンの間でシフトされるべき命令及びデータを記憶するための、ローカルメモリを含んでいる。
図1は、本発明のプロセッサをブロック図形態で示している。該プロセッサ100は、命令シーケンサ102、処理エンジンのアレイ104及びI/Oコントローラ106を含んでいる。命令シーケンサ102は、ホスト(図示せず)からタスクを受信して、アレイ104による適正な使用のために、各タスクを命令シーケンスに変換する。複数の異なるアプリケーションのサポートを容易にするために、デコーダ108、110は、命令シーケンサ102からの命令をデコード化し、種々のアプリケーションの命令を、アレイ104が理解する対応した本来の命令に翻訳することができる。次いで、命令はパイプラインレジスタ112に供給され、そこではそれらが連続的にアレイ104に供給される。
アレイ104はまた、I/Oデータを取扱うように構成される。I/Oコントローラ106は、ホスト又は外部メモリからI/Oデータを受取って、それをI/Oインタフェイス114に転送する。そこでは、該データが、アレイ104の個々の処理エンジンにおけるローカルメモリのためにフォーマットされる。以下で更に説明するように、プロセッサ100は、効率及び速度を最大化するように、I/Oデータを多くの方法で個々の処理エンジンに転送する能力を含んでいる。
処理エンジンが、データをプロセッサの間でシフトさせることを含めて、データに対するそれらの種々の動作を完了したときに、該データはアレイ104からシフトされる。I/OデータがI/Oコントローラ106にシフトされる一方、他のデータは、所望であれば加算器116を介して、ホストへの転送のために命令シーケンサ102へとシフトされる。
上記の説明から分るように、処理エンジンは、I/Oデータの転送及び他のデータに対する演算を同時に行い、プロセッサ100の速度及び効率に付加する能力を有している。これは、部分的には、アレイ104内の処理エンジン自身の構造によって達成される。図2は、アレイ104における処理エンジン間の相互接続を示している。この実施形態では、アレイ104は、処理エンジンPEijの二次元アレイとして構築される。処理エンジンPEijは、行及び列において直列に相互接続される。即ち、処理エンジンPEijは行及び列において整列され、各処理エンジンPEijは、その行及びその隣接列の両方において、その隣接する処理エンジンとデータを交換することができる。各行の最後の処理エンジンは、データを次の行の最初の処理エンジンと交換することができ、逆もまた同様である。同様に、各列の最後の処理エンジンは、データを、同じ列の最初の処理エンジンに転送することができる。したがって、これらの処理エンジンは、I/Oデータ及び他のデータを列方向及び行方向で転送するように構成することができる。
このようにして、I/Oコントローラ106は、I/Oデータを(おそらくはI/Oインターフェー114によるフォーマッティングの後に)種々の処理エンジンに転送し、これら処理エンジンは、該I/Oデータを、それらの各列を下流へと連続的に転送する。同時に、命令シーケンサからの命令を伴って種々の処理エンジンの中に挿入されたこのI/Oデータ又は他のデータは、各処理エンジンにより演算され、行でシフトされることができる。このようにして、アレイ104はI/Oデータを転送すると共に、該データ又は他のデータに対する種々の演算を同時に行うことができる。
このI/Oデータ及び他の形態のデータの両方を取り扱う能力、並びに両者に対する演算を行う能力は、他のシステムを凌駕する利点を付与する。第一に、データ転送を計算及び他のデータ操作と平行して行うことができるから、より速くかつより効率的な処理を生じる。第二に、プロセッサ100が、現代のコンピュータによって最も頻繁に見られる計算を取扱うために効果的に最適化されることを可能にする。即ち、多くのコンピュータプロセスが「I/O束縛」又は「計算束縛」の何れかであることが分っている。I/O束縛のプロセスは、大量のデータを、該データに対する有意な計算動作(例えばマルチメディアファイル再生、ファイル複製、又は大量のデータの他の転送)を行うことなく転送する必要性によって左右される。逆に、計算束縛のプロセスは、計算、例えば図形レンダリング及びシミュレーション等を実行する必要性によって支配される。I/Oデータを転送及び計算するための専用のハードウエアを組込むことによって、プロセッサ100は、I/O束縛のプロセス及び計算束縛のプロセスを、他のプロセッサよりも迅速かつ効率的に取扱う。
プロセッサ100の一つの側面には、I/Oデータ及び命令を取扱うための専用のI/Oコントローラ106及び命令シーケンサ102が含まれるが、処理エンジンPEij自身もまた、I/O束縛及び計算束縛のプロセスの有利な取扱いに寄与する。図3は、本発明による個々の処理エンジンPEijのブロック図を示している。この実施形態において、各処理エンジン300は、整数ALU302、1ビットALU304及び決定ユニット306を含んでおり、これらは種々の演算を実行し、又は実行を容易にする。処理エンジン300はまた、ローカルデータメモリ308及びレジスタ310を含んでいる。図示のように、整数ALU302、1ビットALU304、及び決定ユニット306は、相互に並列に動作するように接続される。特に、1ビットALU304及び決定ユニット306は、それらの電流論理状態を整数ALU302に送信する共に、同じクロック周期でこれらの状態を改変することができる。
動作において、処理エンジン300は、命令シーケンサ102からシーケンスされた命令を受信する。この命令は、整数ALU302に、並びにレジスタ310及びローカルデータメモリ308に送られる。該命令はまた、1ビットALU304及び決定ユニット306にも送られる。
計算を要求する命令は、レジスタ310及び/又はローカルデータメモリ308に対して、処理のためのデータを整数ALU302に転送するように指令する。図示の実施形態において、該データは、左及び右オペランドとしてレジスタ308から整数ALU302に転送されることができるが、本発明は、ローカルデータメモリ308、レジスタ310及び整数ALU302の間での如何なるデータ転送形態をも含むものである。この命令はまた、1ビットALU304の論理状態をも改変する。この実施形態において、1ビットALU304は単一のビットを記憶し、その二値論理状態が整数ALU302によって読取られる。命令シーケンサ302からの命令は、整数ALU302に対して、1ビットALU304の論理状態を読取り、該論理状態に応じて異なる演算を実行するように指令することができる。例えば、命令は指数ALU302に対して、その論理状態が二値のうちの「0」であるときには、隣接する処理エンジン300からのデータにそのデータを加えるように、又はその論理状態が二値のうちの「1」であるときには、隣接する処理エンジン300のデータからそのデータを差引くように指令することができる。このようにして、1ビットALU34は、2以上の演算を表すための単一の命令を可能にする。また、該命令は、決定ユニット306に記憶されている決定状態を変更する。この決定状態は、その命令の実行のために特定のプロセッサが「標識され」、又は「標識されない」で該命令を実行しないように指令されるかを示す。これは、必要に応じて個々の処理エンジン300が演算を実行するように、又は演算の実行を回避するように、命令シーケンサ102が選択的に命令することを可能にする。これは、アレイ104が、更に複雑で詳細なプロセスを実行することを可能にする。
なお、ALU302がその演算を実行するのと同じクロック周期で、1ビットALU304及び決定ユニット306がそれらの状態を変更できるように、整数ALU302、1ビットALU304及び決定ユニット306は並列に配列されることに留意すべきである。整数ALU302は、1ビットALU304及び決定ユニット306が先ず更新されるのを待たなければならないのではなく、各クロック周期で新たな演算を実行できるので、これによって各処理エンジン300の速度が上がる。
ローカルメモリ308及びレジスタ310は、整数ALU302が実行する演算のために必要なデータ及び命令を記憶する。レジスタ310は、隣接する処理エンジン300のレジスタと電子的に通信状態にあり(行及び列で)、したがって、隣接する処理エンジン300との間でのデータの交換を可能にする。ローカルメモリ308はレジスタ310とデータを交換することができるので、該データは、必要に応じて、記憶のためにレジスタ310からローカルデータメモリ308にシフトされることができる。次いで、このデータはレジスタによって検索されることができ、また処理のために整数ALU302に送られるか、或いは、アレイ104からの最終的な転送のために隣接する処理エンジン300のレジスタにシフトされる。
ローカルデータメモリ308及びレジスタ310は、処理エンジン300の計算能力の改善を補助することに加えて、I/Oデータの転送をも可能にする。上記のように、I/Oコントローラ106、及び/又はI/Oインタフェイス114は、典型的にはデータをレジスタ310に転送することによって、I/Oデータを種々の処理エンジン300の中に配置することができる。もし、このI/Oデータに関する計算が要求されるならば、それらは上記のようにして行うことができ、またそうでなければ、I/Oデータは列に沿ってアレイ104からホストまでシフトダウンすることができる。或いは、それは更なる処理又は転送のために、ローカルデータメモリ308にシフトされることができる。
当業者は、本発明が、本発明の種々のメモリ及び命令についての如何なる寸法をも包含することを理解するであろう。しかし、少なくとも一つの実施形態において、処理エンジン300は、少なくとも256個の16ビット語を保持できるローカルデータメモリ308を有している。レジスタ310は、整数ALU302において処理するための整数ベクトルの活性成分を選択するために、少なくとも8個の16ビット語、並びに8のブールビットを保持することができる。図4は、このような実施形態のベクトル表現(ベクトルは単純にデータの表現である)を示しており、ここでは1024の処理エンジン300がチャートの頂部に沿って示されているのに対して、各エンジン300の種々のベクトル、レジスタ及びブールビットが側部に沿って走っている。このことから、ベクトル(例えばベクトル_000)はデータの1024成分ベクトルであり、その各成分は16ビットの長さであり、かつ一つの処理エンジン300に送られるから、命令及びデータは処理エンジン300に送信されるものと考え得ることが分る。同様に、ベクトルブール_0は単一ビットの1024成分ベクトルであり、その各々は処理エンジン300の1ビットALU304に送信される。各処理エンジン300は、図4の列として表されることができ、256個の16ビット語のデータ、8個の16ビット語のレジスタ情報、及び8個のブールビットを記憶することができる。例えば、処理エンジン「0」は、そのレジスタ310におけるレジスタ_O〜レジスタ_7の各々からの最初の16ビット語を、待ち行列に入れられた命令又は転送されたデータとして、またそのレジスタ310又は1ビットALU302におけるブール_0〜ブール_7の各々からの最初のビットを、待ち行列に入れられた論理状態として記憶することができる。
プロセッサ100の基本的動作を説明してきたが、今度は、特定の利点を導く本発明の一定の顕著な特徴についての、更に詳細な説明に注意を向ける。
<命令のデコード化>
最初のこのような特徴は、命令のデコード化に関する。上記で述べたように、命令シーケンサ102は、命令をデコード化するためのデコーダ108、110を含むことができる。これらのデコーダ108、110は、何れかのアプリケーションの命令組に対応するマイクロコード命令を記憶することができる。次いで、命令シーケンサ102は、シーケンスされた命令をデコーダ108、110に送信し、これらは対応するマイクロコードを検索して、それらをアレイ104の処理エンジン300に送信する。これは、何れかのアプリケーションのための命令に対応するマイクロコードがデコーダ108,110に記憶され得る限り、プロセッサ100は、当該アプリケーションと適合できることを可能にする。
最初のこのような特徴は、命令のデコード化に関する。上記で述べたように、命令シーケンサ102は、命令をデコード化するためのデコーダ108、110を含むことができる。これらのデコーダ108、110は、何れかのアプリケーションの命令組に対応するマイクロコード命令を記憶することができる。次いで、命令シーケンサ102は、シーケンスされた命令をデコーダ108、110に送信し、これらは対応するマイクロコードを検索して、それらをアレイ104の処理エンジン300に送信する。これは、何れかのアプリケーションのための命令に対応するマイクロコードがデコーダ108,110に記憶され得る限り、プロセッサ100は、当該アプリケーションと適合できることを可能にする。
幾つかの実施形態において、デコーダ108、110はSRAMデコーダであるのが好ましく、これはユーザが記憶された命令組を周期的に更新し、或いは変更することを可能にする。しかし、本発明は、種々のアプリケーションについての命令に対応したマイクロコード命令を記憶するために、如何なる形態のメモリを用いたデコーダ108,110をも包含するものである。また、時には、一方のデコーダ108は整数ALU302の演算コードを記憶するための専用である一方、他のデコーダ110は、ブール演算コードを記憶するための専用であるのが好ましい。当業者は、本発明が二つの別々のデコーダ108,110を含む実施形態に限定されず、時には、両者に対して独立の変更を可能にするように、整数及びブール演算コードについての別々のデコーダ108、110を含むのが好ましいことを理解するであろう。加えて、デコーダ108、110は複数のアプリケーションに対応したマイクロコードを記憶できるので、記憶されたマイクロコードは、ホストから受信された命令よりも長いことが多い。したがって、デコーダ108、110は、これら受信された命令を効果的に拡張するように働く場合が多い。例えば、ホスト命令は僅か8ビット又は16ビット命令に過ぎないが、デコーダ108,110に記憶された拡張されたマイクロコード命令は、64ビットのマイクロコード命令であることができる(264の可能な独特の命令を可能にする)。したがって、たとえプロセッサ100が8ビット又は16ビット命令のような比較的小さい命令を受信し得るとしても、それは内部的にはより大きい64ビットで働く可能性がある。
<データアドレッシング>
第二の斯かる特徴は、データアドレッシングに関する。I/Oコントローラ106、及び/又はI/Oインタフェイス114は、I/Oデータを、何れかの処理エンジン300に送信することができる。即ち、データは、何れかの任意に選択された処理エンジン300に送信されることができる。これにより、I/Oデータは、より活動的でなく直ちに該データを取扱うことができる処理エンジン300に優先的に送られることができるから、アレイ104のより効率的な使用が可能になる。
第二の斯かる特徴は、データアドレッシングに関する。I/Oコントローラ106、及び/又はI/Oインタフェイス114は、I/Oデータを、何れかの処理エンジン300に送信することができる。即ち、データは、何れかの任意に選択された処理エンジン300に送信されることができる。これにより、I/Oデータは、より活動的でなく直ちに該データを取扱うことができる処理エンジン300に優先的に送られることができるから、アレイ104のより効率的な使用が可能になる。
一つの実施形態において、特定の処理エンジン300の任意な選択は、先ず各処理エンジンに対して、そのローカルメモリ308における利用可能なアドレスを、I/Oコントローラ106に送信するように命令することによって達成される。このアドレスは如何なるフォーマットであってもよいが、アドレスをベクトルとして送信するのが便利であることが多く、この場合に、ベクトルの各要素は異なる処理エンジン300を表す。こうして、各要素は、データを保持するために利用可能なローカルデータメモリ308の中の位置(もしあれば)によって満たされることができる。ゼロ値は、I/Oデータのために利用可能でない処理エンジンを表すことができる。このようにして、各処理エンジン300はそのメモリ308における位置を送信するように指令され、これらの位置は、各利用可能な処理エンジン300及び各々の利用可能なメモリ位置の同定を効果的に含むベクトルへと組立てられる。このベクトルは、I/Oデータが何処に転送され得るかを、I/Oコントローラ106が迅速に決定することを可能にする。
当業者は、これらのベクトルもまた、プロセッサ100の外部のメモリに/からのデータの転送に使用できることを理解するであろう。例えば、アレイ104は、外部メモリにアクセスする際に使用されるアドレスを含んだベクトルを構築するように指令されることができる。このベクトルは、次いで、外部のメモリに対する/からのデータの転送のために外部メモリの望ましい部分をアドレスするように、I/Oコントローラ106を通して転送されることができる。
当業者はまた、これらのベクトルがデータの検索において使用できること、即ち、処理エンジン300は、それらが記憶しているI/Oデータのメモリ位置を送信するように指令され得ること、及び、これらの位置は、処理エンジン300からデータを検索できるアドレスをI/Oコントローラ106に知らせるベクトルに組立てられ得ることを理解するであろう。当業者はまた、命令シーケンサ102からの単一の命令が、利用可能な全ての処理エンジン300の同定を可能にし、またこれら処理エンジンとの間でだけデータを転送させることを可能にするから、このアプローチがプロセッサ100の全体の効率を増大させることを理解するであろう。
<データフォーマッティング>
第三の斯かる特徴は、データフォーマッティングに関する。上記のように、I/Oコントローラ106及び/又はI/Oインタフェイス114は、データを、処理エンジン300のローカルデータメモリ308に適合するようにフォーマットすることができる。本発明は、如何なるデータフォーマットをも包含する。例えば、I/Oコントローラ106は、シャッフルモード、直接転送モード及び間接転送モードで、データをロード/記憶することができる。I/Oコントローラ106はまた、バイト拡張されたロード及びバイト圧縮された記憶、並びにワード拡張されたロード及びワード圧縮された記憶を実行することができる。
第三の斯かる特徴は、データフォーマッティングに関する。上記のように、I/Oコントローラ106及び/又はI/Oインタフェイス114は、データを、処理エンジン300のローカルデータメモリ308に適合するようにフォーマットすることができる。本発明は、如何なるデータフォーマットをも包含する。例えば、I/Oコントローラ106は、シャッフルモード、直接転送モード及び間接転送モードで、データをロード/記憶することができる。I/Oコントローラ106はまた、バイト拡張されたロード及びバイト圧縮された記憶、並びにワード拡張されたロード及びワード圧縮された記憶を実行することができる。
上記で述べたデータフォーマットは知られている。しかし、実施例は有益である。シャッフルモードにおいて、ホストからのデータは、偶数語を有する一つのベクトル及び奇数語を有する一つのベクトルの、二つのベクトルに分割される。即ち、ホストが16バイト語フォーマットでデータを送信し、各処理エンジン300が16ビットフォーマットでデータを記憶し、またアレイ104が1024の処理エンジン300を含むならば、I/Oコントローラ106は、ホストからの2048個の成分二倍長ベクトル、即ち、[w0,w1,・・・,w2047]を集積でき、ここでの各成分wiは2バイト語である。次いで、I/コントローラ106は、このベクトルを二つの1024成分ベクトルに分解する:
v1=[w0,w2,・・・,w2046]
及び
v2=[w1,w3,・・・,w2047]
この二つの1024成分ベクトルは、次いで1024の処理エンジン300に送られ、ここでの各2バイト(即ち、16ビット)成分は既に、レジスタ310及びローカルデータメモリ308における記憶のためにフォーマットされている。こうして、I/Oコントローラ106は、ホストでフォーマットされたデータを二つの1024成分ベクトルに分解し、その各成分は、処理エンジン300のためにフォーマットされたデータを含んでいる。
v1=[w0,w2,・・・,w2046]
及び
v2=[w1,w3,・・・,w2047]
この二つの1024成分ベクトルは、次いで1024の処理エンジン300に送られ、ここでの各2バイト(即ち、16ビット)成分は既に、レジスタ310及びローカルデータメモリ308における記憶のためにフォーマットされている。こうして、I/Oコントローラ106は、ホストでフォーマットされたデータを二つの1024成分ベクトルに分解し、その各成分は、処理エンジン300のためにフォーマットされたデータを含んでいる。
バイト拡張されたロードのために、I/Oコントローラ106は、512個の2バイト語[w0,w1,・・・,w511]を集積することができ、次いで、これらは1024の2バイト語に分割され、各語の最も重要なバイトはゼロに設定される:
{8’bO,w0[7:0]}、{8’bO,w0[15:8]}、
{8’b0,w1[7:0]}、{8’bO,w1[15:8]}、
・・・・・・
{8’b0,w510[7:0]}、{8’bO,w510[15:8]}、
{8’b0,w511[7:0]}、{8’bO,w511[15:8]}、
換言すれば、外部メモリからの各バイトは、最も重要なバイトをゼロにした16ビット数として記憶される。逆に、バイト圧縮された記憶については、記憶された16ビット数のベクトルが検索され、ゼロ値の最も重要なバイトが除去されて、再度1024個の2バイト語を生じる:{w0[7:0],w1[7:0],・・・,w1023[7:0]}。
{8’bO,w0[7:0]}、{8’bO,w0[15:8]}、
{8’b0,w1[7:0]}、{8’bO,w1[15:8]}、
・・・・・・
{8’b0,w510[7:0]}、{8’bO,w510[15:8]}、
{8’b0,w511[7:0]}、{8’bO,w511[15:8]}、
換言すれば、外部メモリからの各バイトは、最も重要なバイトをゼロにした16ビット数として記憶される。逆に、バイト圧縮された記憶については、記憶された16ビット数のベクトルが検索され、ゼロ値の最も重要なバイトが除去されて、再度1024個の2バイト語を生じる:{w0[7:0],w1[7:0],・・・,w1023[7:0]}。
ワード拡張されたロードのために、I/Oコントローラ106は、522個の2バイト語[w0,w1,・・・,w511]のベクトルを集積することができ、次いで、これらは1024個の2バイト語に変換され、ここでの他の全ての2バイト語はゼロに設定される。この1024個の2バイト語は、次いで下記のベクトルとして、アレイ104の中にロードされる:
[w0,16’bO,w1,16’bO,・・・,w510,16’bO,w511,16’bO]
逆に、語圧縮された記憶については、全ての他の2バイト語(即ち、ゼロ値の語)が除去されて、もう一度512個の2バイト語のベクトルが達成される:[w0,w2,・・・,w1020,w1O22]。
[w0,16’bO,w1,16’bO,・・・,w510,16’bO,w511,16’bO]
逆に、語圧縮された記憶については、全ての他の2バイト語(即ち、ゼロ値の語)が除去されて、もう一度512個の2バイト語のベクトルが達成される:[w0,w2,・・・,w1020,w1O22]。
直接転送モードでは、I/Oコントローラ106は特定された増分を使用し、この増分に基づいてデータを処理エンジン300に転送する。例えば、増分が2であれば、I/Oコントローラ106は、そのデータを全ての他の処理エンジン300に転送する。対照的に、間接転送モードは、上記で述べたデータアドレス技術と同様に、各処理エンジン300により与えられたアドレスを含んでいる。例えば、各処理エンジン300は、それがデータを受信するのに十分に利用可能であるかどうかに基づいて、そのアドレスを与えるように指令される。I/Oコントローラは次いで、そのデータを、そこからアドレスを受信した処理エンジン300に送信する。
<算術演算>
データを隣接する処理エンジン300へ/からシフトさせる各処理エンジンの能力は、コンピュータ演算を実行するためのエンジン300を選択的にマークする命令シーケンサ102の能力と結合されて、計算における大きな柔軟性及び速度を可能にし、遥かに迅速な計算束縛のプロセスを提供する。特に、命令シーケンサ102からの単一の命令は、種々の演算を実行するように、アレイ104における全ての処理エンジン300に命令することができ、この場合の異なるエンジン300は、当該命令により個別に設定された論理状態に従って、異なる演算を実行するように指令され、又は如何なる計算も実行しないように指令される。このようにして、それぞれの個々の命令は、必要に応じてエンジン300毎に変化し得る「包括的」な一組の演算を制御することができる。例えば、アレイ104は、連続的乗算アルゴリズムのような機能を遥かに迅速に実行することができる。乗算は、各ステップにおける2ビットを点検し、適切な付加を決定し、二つの位置シフトを行うプロセスを使用して実行することができる。これは、プロセッサ100において三つの命令のみ(init_mult、mult、endjtnult;各々はプログラム可能なデコーダ108及び110により発生された特殊なマイクロコードを有する)で達成でき、従って乗算速度を大幅に高めることができる。ここで、2ビットの被乗数は、各サイクルにおいて試験することができる:
{b(i),b(i−1)}=00であれば、この部分的な結果は右に2バイナリー位置だけシフトされる。
{b(i),b(i−1)}=01であれば、乗数が加えられ、その結果は右に2バイナリー位置だけシフトされる。
{b(i),b(i−1)}=10であれば、乗数は左に1バイナリ位置だけシフトされ、その結果は右に2バイナリー位置だけシフトされる。
{b(i),b(i−1)}=11であれば、乗数が差引かれ、その結果は右に2バイナリー位置だけシフトされ、次のクロック周期において乗数が加えられる。
各周期において、結果は二つのレジスタに戻して記憶され、同様に最終結果も一対のレジスタに記憶される。
データを隣接する処理エンジン300へ/からシフトさせる各処理エンジンの能力は、コンピュータ演算を実行するためのエンジン300を選択的にマークする命令シーケンサ102の能力と結合されて、計算における大きな柔軟性及び速度を可能にし、遥かに迅速な計算束縛のプロセスを提供する。特に、命令シーケンサ102からの単一の命令は、種々の演算を実行するように、アレイ104における全ての処理エンジン300に命令することができ、この場合の異なるエンジン300は、当該命令により個別に設定された論理状態に従って、異なる演算を実行するように指令され、又は如何なる計算も実行しないように指令される。このようにして、それぞれの個々の命令は、必要に応じてエンジン300毎に変化し得る「包括的」な一組の演算を制御することができる。例えば、アレイ104は、連続的乗算アルゴリズムのような機能を遥かに迅速に実行することができる。乗算は、各ステップにおける2ビットを点検し、適切な付加を決定し、二つの位置シフトを行うプロセスを使用して実行することができる。これは、プロセッサ100において三つの命令のみ(init_mult、mult、endjtnult;各々はプログラム可能なデコーダ108及び110により発生された特殊なマイクロコードを有する)で達成でき、従って乗算速度を大幅に高めることができる。ここで、2ビットの被乗数は、各サイクルにおいて試験することができる:
{b(i),b(i−1)}=00であれば、この部分的な結果は右に2バイナリー位置だけシフトされる。
{b(i),b(i−1)}=01であれば、乗数が加えられ、その結果は右に2バイナリー位置だけシフトされる。
{b(i),b(i−1)}=10であれば、乗数は左に1バイナリ位置だけシフトされ、その結果は右に2バイナリー位置だけシフトされる。
{b(i),b(i−1)}=11であれば、乗数が差引かれ、その結果は右に2バイナリー位置だけシフトされ、次のクロック周期において乗数が加えられる。
各周期において、結果は二つのレジスタに戻して記憶され、同様に最終結果も一対のレジスタに記憶される。
以上の記述では、説明の目的で、本発明の完全な理解を提供するために特定の命名法を使用した。しかし、当業者には、本発明を実施するために特別な詳細は必要とされないことが明らかであろう。したがって、本発明の特定の実施形態に関する上記の説明は、例示及び説明の目的で提示されるものである。それらは、網羅的であることを意図するものではなく、或いは、本発明を開示された正確な形態に限定するものでもない。上記の教示を考慮して、多くの改変及び変形が可能である。例えば、アレイ104は、行及び列の二次元アレイに限定される必要はなく、如何なる様式でも組織できる。また、一定の実施形態においては、SRAMデコーダ108,110及びI/Oインタフェイス114が望ましいかもしれないが、それらは本発明の実施に必要とされるものではない。実施形態は、本発明の原理及びその実際的な応用を最良に説明し、それによって他の当業者が本発明、及び特定の使用に適すると思われる種々の改変を備えた種々の実施形態を最良に利用できるように選択及び説明されたものである。
Claims (32)
- データを処理するための命令をシーケンスし、該シーケンスされた命令を送信するように構成された、命令シーケンスユニットと、
前記シーケンスされた命令に対応する命令を受信するように構成された処理エンジンのアレイと、
を具備し、
前記処理エンジンの前記アレイにおける各処理エンジンが、前記データを受信するように構成されており、
各処理エンジンが、
前記データを記憶するように構成された第1のメモリと、
決定データを記憶するように構成された決定ユニットと、
論理状態を記憶し、前記受信した命令に従って前記論理状態を変更するように構成されたブールユニットと、
整数結果データを発生させるように、前記記憶された決定データ、前記受信した命令及び前記論理状態に従って、前記記憶されたデータに対して条件付きで整数演算を実行するように構成された整数ユニットと、
I/Oデータを記憶するように構成された第2のメモリと、
を有し、
前記ブールユニットは、前記整数ユニットが前記整数演算を実行するときと同一のクロック周期により前記論理状態を変更するように構成された、
コンピュータシステムであって、
さらに、前記I/Oデータを処理エンジンの前記アレイに送信しかつ該I/Oデータを該アレイから受信するように構成されたI/Oコントローラを具備する、
ことを特徴とするコンピュータシステム。 - 処理エンジンの前記アレイ及び前記I/Oコントローラと通信するI/Oインタフェイスであって、前記処理エンジンの前記第2のメモリに記憶するために前記I/Oデータをフォーマットするように構成されたI/Oインタフェイス、をさらに具備する、請求項1に記載のコンピュータシステム。
- 前記I/Oインタフェイスが、さらに、シャッフルモードにおいて前記第2のメモリにロードするために前記I/Oデータをフォーマットするように構成された、請求項2に記載のコンピュータシステム。
- 前記I/Oインタフェイスが、さらに、前記I/Oデータをバイト拡張することにより該I/Oデータをフォーマットするように構成された、請求項2に記載のコンピュータシステム。
- 前記I/Oインタフェイスが、前記I/Oデータをワード拡張することにより該I/Oデータをフォーマットするように構成された、請求項2に記載のコンピュータシステム。
- 前記I/Oインタフェイスが、直接転送モードにおいて前記第2のメモリにロードするために前記I/Oデータをフォーマットするように構成された、請求項2に記載のコンピュータシステム。
- 前記I/Oインタフェイスが、直接転送モードにおいて前記第2のメモリにロードするために前記I/Oデータをフォーマットするように構成された、請求項2に記載のコンピュータシステム。
- 処理エンジンの前記アレイ及び前記命令シーケンスユニットと通信し、該命令シーケンスユニットから受信した前記シーケンスされた命令に対応した拡張命令を有する命令セットを記憶するメモリを有するデコーダユニットであって、
前記命令シーケンスユニットから前記シーケンスされた命令を受信し、
前記命令シーケンスユニットから受信した前記シーケンスされた命令に対応した前記拡張命令を前記メモリから検索し、かつ、
処理エンジンの前記アレイに対して前記検索された拡張命令を送信する、
ように構成されたデコーダユニットを、
さらに具備する、請求項1に記載のコンピュータシステム。 - 前記メモリがSRAMメモリである、請求項8に記載のコンピュータシステム。
- 前記シーケンスされたメモリが8ビット命令であり、
前記拡張命令が64ビットマイクロコード命令である、請求項8に記載のコンピュータシステム。 - 前記決定データが、前記処理エンジンをマークされた処理エンジン及びマークされない処理エンジンとして選択的に指定するデータであり、
前記処理エンジンは、マークされた処理エンジンとして指定されたときには前記整数演算を実行するように構成されており、
前記処理エンジンは、マークされない処理エンジンとして指定されたときには前記整数演算を中断するように構成されている、請求項1に記載のコンピュータシステム。 - 前記処理エンジンが、第1の方向と第2の方向とを有するアレイ内において直列に相互接続され、
前記処理エンジンが、前記第1の方向に沿って前記I/Oデータを連続的にシフトさせるように構成されており、
前記処理エンジンが、前記第2の方向に沿って前記記憶されたデータをシフトさせるように構成され、記憶されシフトされたデータを生成する、請求項1に記載のコンピュータシステム。 - 前記処理エンジンが、さらに、
前記記憶されシフトされたデータに対する前記整数演算のうちの少なくとも1つを実行することにより、算術機能の実行を可能にするように構成されている、請求項12に記載のコンピュータシステム。 - 前記整数ユニット及び前記ブールユニットが、それぞれの演算を並列に実行するように構成されている、請求項1に記載のコンピュータシステム。
- 前記処理エンジンの各々が、さらに、
前記ブールユニットが第1の論理状態を記憶するときに、前記受信された命令のうちの1つに従って前記記憶されたデータに対して第1の演算を実行し、
前記ブールユニットが第2の論理状態を記憶するときに、前記受信された命令のうちの1つに従って前記記憶されたデータに対して第2の演算を実行する、
ように構成されている、請求項1に記載のコンピュータシステム。 - 前記第1の演算及び前記第2の演算の各々が、前記記憶されたデータを前記処理エンジンのうちの別の処理エンジンに対してシフトさせるシフト演算、又は、算術演算である、請求項15に記載のコンピュータシステム。
- 前記命令シーケンスユニットが、さらに、前記処理エンジンのうちのいくつかに対してアドレスを発生させるよう命令するように構成され、
前記処理エンジンのうちのいくつかが、さらに、アドレスを発生させ、発生させた該アドレスを前記I/Oコントローラに対して送信するように構成されている、請求項1に記載のコンピュータシステム。 - 行及び列において直列に相互接続された処理エンジンを有して、処理エンジンの行及び処理エンジンの列を形成する処理アレイであって、処理エンジンの前記列において連続的にI/OデータをシフトさせることによりI/O動作を実行し、処理エンジンの前記行において連続的に計算データをシフトさせ、前記I/O動作と並行して前記シフトさせたI/O計算データに対して計算動作を実行する、ように構成された処理アレイと、
命令をシーケンスし、前記処理アレイの前記処理エンジンに対して前記命令を転送して、前記計算動作を制御するように構成された、処理シーケンスユニットと、
前記処理アレイの前記処理エンジンと前記I/Oデータを交換するように構成されたI/Oコントローラと、
を具備することを特徴とするコンピュータシステム。 - 前記処理エンジンの各々が、さらに、
論理状態を記憶し、前記転送された命令に従って前記論理状態を変更するように構成された論理ユニットと、
決定状態を記憶し、前記転送された命令に従って前記決定状態を変更するように構成された決定ユニットと、
前記決定状態に基づいた整数演算を条件付きで実行するように構成された整数ユニットと、
を具備し、
前記整数演算が、前記論理状態及び前記転送された命令に従って前記シフトされた計算データに対して実行されるものであり、
前記処理エンジンの各々が、さらに、
前記論理ユニット、前記決定ユニット及び前記整数ユニットと通信するレジスタであって、前記シフトされた計算データ及び前記論理状態を受信し、前記シフトされた計算データ及び前記論理状態を前記命令シーケンスユニットに対して送信するように構成されたレジスタと、
該レジスタと通信し、前記シフトされた計算データを記憶するように構成されたローカルメモリと、
を具備する請求項18に記載のコンピュータシステム。 - 前記決定状態が、前記処理エンジンをマークされた処理エンジン及びマークされない処理エンジンとして選択的に指定する状態であり、
前記整数ユニットが、マークされない処理エンジンとして指定するときには前記整数演算を実行するように構成され、
前記整数ユニットは、マークされた処理エンジンとして指定するときには前記整数演算を中断するように構成される、請求項19に記載のコンピュータシステム。 - 前記整数ユニットの各々が、さらに、
前記論理状態が第1の論理状態のときに、前記転送された命令のうちの1つに従って、前記シフトされた計算データに対して第1の演算を実行し、
前記論理状態が第2の論理状態のときに、前記転送された命令のうちの1つに従って、前記シフトされた計算データに対して第2の演算を実行する、
ように構成された、請求項19に記載のコンピュータシステム。 - 前記第1の演算及び前記第2の演算が、前記記憶されたデータを前記処理エンジンのうちの別の処理エンジンに対してシフトさせるシフト演算、又は、算術演算である、請求項21に記載のコンピュータシステム。
- 前記処理アレイ及び前記I/Oコントローラと通信し、前記処理エンジンの前記ローカルメモリに記憶するために前記I/Oデータをフォーマットするように構成されたI/Oインタフェイスをさらに具備する、請求項22に記載のコンピュータシステム。
- 前記I/Oインタフェイスが、さらに、シャッフルモードにおいて前記ローカルメモリにロードするために前記I/Oデータをフォーマットするように構成された、請求項23に記載のコンピュータシステム。
- 前記I/Oインタフェイスが、さらに、前記I/Oデータを拡張することにより前記I/Oデータをフォーマットするように構成された、請求項23に記載のコンピュータシステム。
- 前記I/Oインタフェイスが、さらに、前記I/Oデータをワード拡張することにより前記I/Oデータをフォーマットするように構成された、請求項23に記載のコンピュータシステム。
- 前記I/Oインタフェイスが、直接転送モードにおいて前記ローカルメモリにロードするために前記I/Oデータをフォーマットするように構成された、請求項23に記載のコンピュータシステム。
- 前記I/Oインタフェイスが、さらに、直接転送モードにおいて前記ローカルメモリにロードするために前記I/Oデータをフォーマットするように構成された、請求項23に記載のコンピュータシステム。
- 前記処理アレイ及び前記命令シーケンスユニットと通信し、前記命令シーケンスユニットから受信した前記シーケンスされた命令に対応する拡張命令を有する命令セットを記憶するデコーダメモリを有するデコーダユニットであって、
前記命令シーケンスユニットから前記シーケンスされた命令を受信し、前記命令シーケンスユニットから受信した前記シーケンスされた命令に対応する前記拡張命令を、前記デコーダメモリから検索し、処理エンジンの前記アレイに対して前記検索された拡張命令を送信する、ように構成されたデコーダユニット、
をさらに具備する請求項18に記載のコンピュータシステム。 - 前記デコーダメモリがSRANMメモリである、請求項29に記載のコンピュータシステム。
- 前記シーケンスされた命令が8ビット命令であり、前記拡張された命令が64ビットマイクロコード命令である、請求項29に記載のコンピュータシステム。
- 前記命令シーケンスユニットが、さらに、前記処理エンジンのうちのいくつかに対してアドレスを発生させるよう命令するように構成され、
前記処理エンジンのうちのいくつかが、アドレスを発生させ、該発生させたアドレスを前記I/Oコントローラに対して送信するように構成されている、請求項18に記載のコンピュータシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US72917805P | 2005-10-21 | 2005-10-21 | |
US11/584,480 US7451293B2 (en) | 2005-10-21 | 2006-10-19 | Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing |
PCT/US2006/040975 WO2007050444A2 (en) | 2005-10-21 | 2006-10-20 | Integrated processor array, instruction sequencer and i/o controller |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009512920A true JP2009512920A (ja) | 2009-03-26 |
Family
ID=37968408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008534793A Abandoned JP2009512920A (ja) | 2005-10-21 | 2006-10-20 | 集積プロセッサアレイ、命令シーケンサ、及び、i/oコントローラ |
Country Status (7)
Country | Link |
---|---|
US (2) | US7451293B2 (ja) |
EP (1) | EP1941380A2 (ja) |
JP (1) | JP2009512920A (ja) |
KR (1) | KR20080091754A (ja) |
CA (1) | CA2626184A1 (ja) |
TW (1) | TW200745876A (ja) |
WO (1) | WO2007050444A2 (ja) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7383421B2 (en) * | 2002-12-05 | 2008-06-03 | Brightscale, Inc. | Cellular engine for a data processing system |
US8427490B1 (en) | 2004-05-14 | 2013-04-23 | Nvidia Corporation | Validating a graphics pipeline using pre-determined schedules |
US8624906B2 (en) * | 2004-09-29 | 2014-01-07 | Nvidia Corporation | Method and system for non stalling pipeline instruction fetching from memory |
US8416251B2 (en) | 2004-11-15 | 2013-04-09 | Nvidia Corporation | Stream processing in a video processor |
US9092170B1 (en) | 2005-10-18 | 2015-07-28 | Nvidia Corporation | Method and system for implementing fragment operation processing across a graphics bus interconnect |
US7451293B2 (en) * | 2005-10-21 | 2008-11-11 | Brightscale Inc. | Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing |
CN101371264A (zh) * | 2006-01-10 | 2009-02-18 | 光明测量公司 | 用于在并行处理系统中处理多媒体数据的子块的方法和装置 |
US20080028192A1 (en) * | 2006-07-31 | 2008-01-31 | Nec Electronics Corporation | Data processing apparatus, and data processing method |
US20080059467A1 (en) * | 2006-09-05 | 2008-03-06 | Lazar Bivolarski | Near full motion search algorithm |
US8683126B2 (en) | 2007-07-30 | 2014-03-25 | Nvidia Corporation | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory |
US8698819B1 (en) | 2007-08-15 | 2014-04-15 | Nvidia Corporation | Software assisted shader merging |
US8659601B1 (en) | 2007-08-15 | 2014-02-25 | Nvidia Corporation | Program sequencer for generating indeterminant length shader programs for a graphics processor |
US8411096B1 (en) * | 2007-08-15 | 2013-04-02 | Nvidia Corporation | Shader program instruction fetch |
US9024957B1 (en) | 2007-08-15 | 2015-05-05 | Nvidia Corporation | Address independent shader program loading |
US8028150B2 (en) * | 2007-11-16 | 2011-09-27 | Shlomo Selim Rakib | Runtime instruction decoding modification in a multi-processing array |
US9064333B2 (en) | 2007-12-17 | 2015-06-23 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8780123B2 (en) | 2007-12-17 | 2014-07-15 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8923385B2 (en) | 2008-05-01 | 2014-12-30 | Nvidia Corporation | Rewind-enabled hardware encoder |
US8681861B2 (en) | 2008-05-01 | 2014-03-25 | Nvidia Corporation | Multistandard hardware video encoder |
US8489851B2 (en) | 2008-12-11 | 2013-07-16 | Nvidia Corporation | Processing of read requests in a memory controller using pre-fetch mechanism |
WO2012141694A1 (en) | 2011-04-13 | 2012-10-18 | Hewlett-Packard Development Company, L.P. | Input/output processing |
CN103392165B (zh) * | 2011-06-24 | 2016-04-06 | 株式会社日立制作所 | 存储系统 |
JP5739758B2 (ja) * | 2011-07-21 | 2015-06-24 | ルネサスエレクトロニクス株式会社 | メモリコントローラ及びsimdプロセッサ |
CN107748674B (zh) * | 2017-09-07 | 2021-08-31 | 中国科学院微电子研究所 | 面向比特粒度的信息处理系统 |
Family Cites Families (103)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3308436A (en) * | 1963-08-05 | 1967-03-07 | Westinghouse Electric Corp | Parallel computer system control |
US4212076A (en) * | 1976-09-24 | 1980-07-08 | Giddings & Lewis, Inc. | Digital computer structure providing arithmetic and boolean logic operations, the latter controlling the former |
US4575818A (en) * | 1983-06-07 | 1986-03-11 | Tektronix, Inc. | Apparatus for in effect extending the width of an associative memory by serial matching of portions of the search pattern |
JPS6224366A (ja) * | 1985-07-03 | 1987-02-02 | Hitachi Ltd | ベクトル処理装置 |
US4907148A (en) * | 1985-11-13 | 1990-03-06 | Alcatel U.S.A. Corp. | Cellular array processor with individual cell-level data-dependent cell control and multiport input memory |
US4783738A (en) * | 1986-03-13 | 1988-11-08 | International Business Machines Corporation | Adaptive instruction processing by array processor having processor identification and data dependent status registers in each processing element |
GB2211638A (en) * | 1987-10-27 | 1989-07-05 | Ibm | Simd array processor |
US4873626A (en) * | 1986-12-17 | 1989-10-10 | Massachusetts Institute Of Technology | Parallel processing system with processor array having memory system included in system memory |
US5122984A (en) * | 1987-01-07 | 1992-06-16 | Bernard Strehler | Parallel associative memory system |
DE3877105D1 (ja) * | 1987-09-30 | 1993-02-11 | Siemens Ag, 8000 Muenchen, De | |
US4876644A (en) * | 1987-10-30 | 1989-10-24 | International Business Machines Corp. | Parallel pipelined processor |
US4983958A (en) * | 1988-01-29 | 1991-01-08 | Intel Corporation | Vector selectable coordinate-addressable DRAM array |
US5241635A (en) * | 1988-11-18 | 1993-08-31 | Massachusetts Institute Of Technology | Tagged token data processing system with operand matching in activation frames |
AU624205B2 (en) * | 1989-01-23 | 1992-06-04 | General Electric Capital Corporation | Variable length string matcher |
US5497488A (en) * | 1990-06-12 | 1996-03-05 | Hitachi, Ltd. | System for parallel string search with a function-directed parallel collation of a first partition of each string followed by matching of second partitions |
US5319762A (en) * | 1990-09-07 | 1994-06-07 | The Mitre Corporation | Associative memory capable of matching a variable indicator in one string of characters with a portion of another string |
US5963746A (en) * | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | Fully distributed processing memory element |
DE69131272T2 (de) * | 1990-11-13 | 1999-12-09 | International Business Machines Corp., Armonk | Paralleles Assoziativprozessor-System |
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 |
US5150430A (en) * | 1991-03-15 | 1992-09-22 | The Board Of Trustees Of The Leland Stanford Junior University | Lossless data compression circuit and method |
US5228098A (en) * | 1991-06-14 | 1993-07-13 | Tektronix, Inc. | Adaptive spatio-temporal compression/decompression of video image signals |
US5706290A (en) * | 1994-12-15 | 1998-01-06 | Shaw; Venson | Method and apparatus including system architecture for multimedia communication |
US5373290A (en) * | 1991-09-25 | 1994-12-13 | Hewlett-Packard Corporation | Apparatus and method for managing multiple dictionaries in content addressable memory based data compression |
US5640582A (en) * | 1992-05-21 | 1997-06-17 | Intel Corporation | Register stacking in a computer system |
US5450599A (en) * | 1992-06-04 | 1995-09-12 | International Business Machines Corporation | Sequential pipelined processing for the compression and decompression of image data |
US5818873A (en) * | 1992-08-03 | 1998-10-06 | Advanced Hardware Architectures, Inc. | Single clock cycle data compressor/decompressor with a string reversal mechanism |
US5440753A (en) * | 1992-11-13 | 1995-08-08 | Motorola, Inc. | Variable length string matcher |
US5446915A (en) * | 1993-05-25 | 1995-08-29 | Intel Corporation | Parallel processing system virtual connection method and apparatus with protection and flow control |
JPH07114577A (ja) * | 1993-07-16 | 1995-05-02 | Internatl Business Mach Corp <Ibm> | データ検索装置、データ圧縮装置及び方法 |
US6073185A (en) * | 1993-08-27 | 2000-06-06 | Teranex, Inc. | Parallel data processor |
US5490264A (en) * | 1993-09-30 | 1996-02-06 | Intel Corporation | Generally-diagonal mapping of address space for row/column organizer memories |
US6085283A (en) * | 1993-11-19 | 2000-07-04 | Kabushiki Kaisha Toshiba | Data selecting memory device and selected data transfer device |
US5602764A (en) * | 1993-12-22 | 1997-02-11 | Storage Technology Corporation | Comparing prioritizing memory for string searching in a data compression system |
US5758176A (en) * | 1994-09-28 | 1998-05-26 | International Business Machines Corporation | Method and system for providing a single-instruction, multiple-data execution unit for performing single-instruction, multiple-data operations within a superscalar data processing system |
US5631849A (en) * | 1994-11-14 | 1997-05-20 | The 3Do Company | Decompressor and compressor for simultaneously decompressing and compressng a plurality of pixels in a pixel array in a digital image differential pulse code modulation (DPCM) system |
US5682491A (en) * | 1994-12-29 | 1997-10-28 | International Business Machines Corporation | Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier |
US6128720A (en) * | 1994-12-29 | 2000-10-03 | International Business Machines Corporation | Distributed processing array with component processors performing customized interpretation of instructions |
US5867726A (en) * | 1995-05-02 | 1999-02-02 | Hitachi, Ltd. | Microcomputer |
US5926642A (en) | 1995-10-06 | 1999-07-20 | Advanced Micro Devices, Inc. | RISC86 instruction set |
US6317819B1 (en) * | 1996-01-11 | 2001-11-13 | Steven G. Morton | Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction |
US5963210A (en) * | 1996-03-29 | 1999-10-05 | Stellar Semiconductor, Inc. | Graphics processor, system and method for generating screen pixels in raster order utilizing a single interpolator |
US5828593A (en) * | 1996-07-11 | 1998-10-27 | Northern Telecom Limited | Large-capacity content addressable memory |
JP2882475B2 (ja) * | 1996-07-12 | 1999-04-12 | 日本電気株式会社 | スレッド実行方法 |
US5867598A (en) * | 1996-09-26 | 1999-02-02 | Xerox Corporation | Method and apparatus for processing of a JPEG compressed image |
US6212237B1 (en) * | 1997-06-17 | 2001-04-03 | Nippon Telegraph And Telephone Corporation | Motion vector search methods, motion vector search apparatus, and storage media storing a motion vector search program |
US5909686A (en) * | 1997-06-30 | 1999-06-01 | Sun Microsystems, Inc. | Hardware-assisted central processing unit access to a forwarding database |
US5951672A (en) * | 1997-07-02 | 1999-09-14 | International Business Machines Corporation | Synchronization method for work distribution in a multiprocessor system |
EP0905651A3 (en) * | 1997-09-29 | 2000-02-23 | Canon Kabushiki Kaisha | Image processing apparatus and method |
US6089453A (en) * | 1997-10-10 | 2000-07-18 | Display Edge Technology, Ltd. | Article-information display system using electronically controlled tags |
US6226710B1 (en) * | 1997-11-14 | 2001-05-01 | Utmc Microelectronic Systems Inc. | Content addressable memory (CAM) engine |
US6101592A (en) * | 1998-12-18 | 2000-08-08 | Billions Of Operations Per Second, Inc. | Methods and apparatus for scalable instruction set architecture with dynamic compact instructions |
US6145075A (en) * | 1998-02-06 | 2000-11-07 | Ip-First, L.L.C. | Apparatus and method for executing a single-cycle exchange instruction to exchange contents of two locations in a register file |
US6295534B1 (en) * | 1998-05-28 | 2001-09-25 | 3Com Corporation | Apparatus for maintaining an ordered list |
US6088044A (en) * | 1998-05-29 | 2000-07-11 | International Business Machines Corporation | Method for parallelizing software graphics geometry pipeline rendering |
US6119215A (en) * | 1998-06-29 | 2000-09-12 | Cisco Technology, Inc. | Synchronization and control system for an arrayed processing engine |
EP0992916A1 (en) | 1998-10-06 | 2000-04-12 | Texas Instruments Inc. | Digital signal processor |
US6269354B1 (en) * | 1998-11-30 | 2001-07-31 | David W. Arathorn | General purpose recognition e-circuits capable of translation-tolerant recognition, scene segmentation and attention shift, and their application to machine vision |
US6173386B1 (en) | 1998-12-14 | 2001-01-09 | Cisco Technology, Inc. | Parallel processor with debug capability |
FR2788873B1 (fr) * | 1999-01-22 | 2001-03-09 | Intermec Scanner Technology Ct | Procede et dispositif de detection de segments de droites dans un flot de donnees numeriques representatives d'une image, dans lequel sont identifies les points contours de ladite image |
JP5285828B2 (ja) * | 1999-04-09 | 2013-09-11 | ラムバス・インコーポレーテッド | 並列データ処理装置 |
US6542989B2 (en) * | 1999-06-15 | 2003-04-01 | Koninklijke Philips Electronics N.V. | Single instruction having op code and stack control field |
US6611524B2 (en) * | 1999-06-30 | 2003-08-26 | Cisco Technology, Inc. | Programmable data packet parser |
WO2001010136A1 (en) * | 1999-07-30 | 2001-02-08 | Indinell Sociedad Anonima | Method and apparatus for processing digital images and audio data |
US6745317B1 (en) * | 1999-07-30 | 2004-06-01 | Broadcom Corporation | Three level direct communication connections between neighboring multiple context processing elements |
US7072398B2 (en) * | 2000-12-06 | 2006-07-04 | Kai-Kuang Ma | System and method for motion vector generation and analysis of digital video clips |
US7191310B2 (en) * | 2000-01-19 | 2007-03-13 | Ricoh Company, Ltd. | Parallel processor and image processing apparatus adapted for nonlinear processing through selection via processor element numbers |
US20020107990A1 (en) * | 2000-03-03 | 2002-08-08 | Surgient Networks, Inc. | Network connected computing system including network switch |
US7020671B1 (en) * | 2000-03-21 | 2006-03-28 | Hitachi America, Ltd. | Implementation of an inverse discrete cosine transform using single instruction multiple data instructions |
GB0019341D0 (en) | 2000-08-08 | 2000-09-27 | Easics Nv | System-on-chip solutions |
US6898304B2 (en) * | 2000-12-01 | 2005-05-24 | Applied Materials, Inc. | Hardware configuration for parallel data processing without cross communication |
US6772268B1 (en) * | 2000-12-22 | 2004-08-03 | Nortel Networks Ltd | Centralized look up engine architecture and interface |
US7013302B2 (en) * | 2000-12-22 | 2006-03-14 | Nortel Networks Limited | Bit field manipulation |
US20020133688A1 (en) * | 2001-01-29 | 2002-09-19 | Ming-Hau Lee | SIMD/MIMD processing on a reconfigurable array |
US7290162B2 (en) * | 2001-02-14 | 2007-10-30 | Clearspeed Solutions Limited | Clock distribution system |
US6985633B2 (en) * | 2001-03-26 | 2006-01-10 | Ramot At Tel Aviv University Ltd. | Device and method for decoding class-based codewords |
US6782054B2 (en) * | 2001-04-20 | 2004-08-24 | Koninklijke Philips Electronics, N.V. | Method and apparatus for motion vector estimation |
JP2003069535A (ja) * | 2001-06-15 | 2003-03-07 | Mitsubishi Electric Corp | 誤り訂正多重化装置、誤り訂正多重分離装置、これらを用いた光伝送システムおよび誤り訂正多重化伝送方法 |
US6760821B2 (en) * | 2001-08-10 | 2004-07-06 | Gemicer, Inc. | Memory engine for the inspection and manipulation of data |
US6938183B2 (en) | 2001-09-21 | 2005-08-30 | The Boeing Company | Fault tolerant processing architecture |
JP2003100086A (ja) * | 2001-09-25 | 2003-04-04 | Fujitsu Ltd | 連想メモリ回路 |
US7116712B2 (en) * | 2001-11-02 | 2006-10-03 | Koninklijke Philips Electronics, N.V. | Apparatus and method for parallel multimedia processing |
JP3902741B2 (ja) * | 2002-01-25 | 2007-04-11 | 株式会社半導体理工学研究センター | 半導体集積回路装置 |
US6901476B2 (en) * | 2002-05-06 | 2005-05-31 | Hywire Ltd. | Variable key type search engine and method therefor |
US7000091B2 (en) * | 2002-08-08 | 2006-02-14 | Hewlett-Packard Development Company, L.P. | System and method for independent branching in systems with plural processing elements |
GB2395299B (en) * | 2002-09-17 | 2006-06-21 | Micron Technology Inc | Control of processing elements in parallel processors |
US20040081238A1 (en) * | 2002-10-25 | 2004-04-29 | Manindra Parhy | Asymmetric block shape modes for motion estimation |
US7120195B2 (en) * | 2002-10-28 | 2006-10-10 | Hewlett-Packard Development Company, L.P. | System and method for estimating motion between images |
JP4496209B2 (ja) * | 2003-03-03 | 2010-07-07 | モービリゲン コーポレーション | メモリワードアレイ構成およびメモリアクセス予測結合 |
US7581080B2 (en) * | 2003-04-23 | 2009-08-25 | Micron Technology, Inc. | Method for manipulating data in a group of processing elements according to locally maintained counts |
US9292904B2 (en) * | 2004-01-16 | 2016-03-22 | Nvidia Corporation | Video image processing with parallel processing |
JP4511842B2 (ja) * | 2004-01-26 | 2010-07-28 | パナソニック株式会社 | 動きベクトル検出装置及び動画撮影装置 |
GB2411745B (en) * | 2004-03-02 | 2006-08-02 | Imagination Tech Ltd | Method and apparatus for management of control flow in a simd device |
US7196708B2 (en) * | 2004-03-31 | 2007-03-27 | Sony Corporation | Parallel vector processing |
DE602005020218D1 (de) * | 2004-07-29 | 2010-05-12 | St Microelectronics Pvt Ltd | Videodekoder mit Parallelprozessoren für die Dekodierung von Makroblocks |
JP2006140601A (ja) * | 2004-11-10 | 2006-06-01 | Canon Inc | 画像処理装置及び画像処理装置の制御方法 |
US7725691B2 (en) * | 2005-01-28 | 2010-05-25 | Analog Devices, Inc. | Method and apparatus for accelerating processing of a non-sequential instruction stream on a processor with multiple compute units |
JP5318561B2 (ja) * | 2005-03-10 | 2013-10-16 | クゥアルコム・インコーポレイテッド | マルチメディア処理のためのコンテンツ分類 |
US8149926B2 (en) * | 2005-04-11 | 2012-04-03 | Intel Corporation | Generating edge masks for a deblocking filter |
US8619860B2 (en) * | 2005-05-03 | 2013-12-31 | Qualcomm Incorporated | System and method for scalable encoding and decoding of multimedia data using multiple layers |
US20070071404A1 (en) * | 2005-09-29 | 2007-03-29 | Honeywell International Inc. | Controlled video event presentation |
US7451293B2 (en) * | 2005-10-21 | 2008-11-11 | Brightscale Inc. | Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing |
CN101371264A (zh) * | 2006-01-10 | 2009-02-18 | 光明测量公司 | 用于在并行处理系统中处理多媒体数据的子块的方法和装置 |
US20080126278A1 (en) * | 2006-11-29 | 2008-05-29 | Alexander Bronstein | Parallel processing motion estimation for H.264 video codec |
-
2006
- 2006-10-19 US US11/584,480 patent/US7451293B2/en not_active Expired - Fee Related
- 2006-10-20 EP EP06836411A patent/EP1941380A2/en not_active Withdrawn
- 2006-10-20 WO PCT/US2006/040975 patent/WO2007050444A2/en active Application Filing
- 2006-10-20 JP JP2008534793A patent/JP2009512920A/ja not_active Abandoned
- 2006-10-20 CA CA002626184A patent/CA2626184A1/en not_active Abandoned
- 2006-10-20 KR KR1020087009137A patent/KR20080091754A/ko not_active Application Discontinuation
- 2006-10-20 TW TW095138731A patent/TW200745876A/zh unknown
-
2008
- 2008-05-28 US US12/128,528 patent/US20080307196A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
WO2007050444A2 (en) | 2007-05-03 |
WO2007050444A3 (en) | 2009-04-30 |
EP1941380A2 (en) | 2008-07-09 |
US7451293B2 (en) | 2008-11-11 |
US20070130444A1 (en) | 2007-06-07 |
KR20080091754A (ko) | 2008-10-14 |
TW200745876A (en) | 2007-12-16 |
CA2626184A1 (en) | 2007-05-03 |
US20080307196A1 (en) | 2008-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7451293B2 (en) | Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing | |
KR101202445B1 (ko) | 프로세서 | |
US9495153B2 (en) | Methods, apparatus, and instructions for converting vector data | |
US10083394B1 (en) | Neural processing engine and architecture using the same | |
JP4480997B2 (ja) | Simd整数乗算上位丸めシフト | |
JP2020521192A (ja) | ハードウェアにおける行列乗算の実行 | |
CN116522058A (zh) | 可重新配置的矩阵乘法器系统和方法 | |
KR100904318B1 (ko) | 단일 명령, 다중 데이터 실행 엔진에 대한 조건형 명령 | |
JP2020519981A (ja) | 専用ニューラルネットワークトレーニングチップ | |
US8239438B2 (en) | Method and apparatus for implementing a multiple operand vector floating point summation to scalar function | |
US20080140994A1 (en) | Data-Parallel processing unit | |
WO2001035224A1 (en) | Bit-serial memory access with wide processing elements for simd arrays | |
US8671266B2 (en) | Staging register file for use with multi-stage execution units | |
TWI780116B (zh) | 用於資料處理設備、方法、電腦可讀式儲存媒體及虛擬機器的向量逐元素操作 | |
JP3683773B2 (ja) | Simd演算を実行するために標準macユニットを利用する浮動小数点ユニット | |
JP3990423B2 (ja) | データアクセスプログラム命令のコード化 | |
US6802017B1 (en) | Partial enabling of functional unit based on data and size pair in register | |
CN111158757B (zh) | 并行存取装置和方法以及芯片 | |
JP2021108104A (ja) | 部分的読み取り/書き込みが可能な再構成可能なシストリックアレイのシステム及び方法 | |
US11443014B1 (en) | Sparse matrix multiplier in hardware and a reconfigurable data processor including same | |
US20110208951A1 (en) | Instruction processor and method therefor | |
JPS62171032A (ja) | パイプライン式演算装置用マイクロシ−ケンサ | |
GB2617828A (en) | Technique for handling data elements stored in an array storage | |
GB2617829A (en) | Technique for handling data elements stored in an array storage | |
JPH10240528A (ja) | Risc計算機 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20090522 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20090522 |