JP2009512920A - 集積プロセッサアレイ、命令シーケンサ、及び、i/oコントローラ - Google Patents

集積プロセッサアレイ、命令シーケンサ、及び、i/oコントローラ Download PDF

Info

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
Application number
JP2008534793A
Other languages
English (en)
Inventor
ミトュ ボグダン
ゲオルゲ ステファン
ダン トメスク
Original Assignee
ブライトスケール インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ブライトスケール インコーポレイテッド filed Critical ブライトスケール インコーポレイテッド
Publication of JP2009512920A publication Critical patent/JP2009512920A/ja
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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

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

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は、当該アプリケーションと適合できることを可能にする。
幾つかの実施形態において、デコーダ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のより効率的な使用が可能になる。
一つの実施形態において、特定の処理エンジン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はまた、バイト拡張されたロード及びバイト圧縮された記憶、並びにワード拡張されたロード及びワード圧縮された記憶を実行することができる。
上記で述べたデータフォーマットは知られている。しかし、実施例は有益である。シャッフルモードにおいて、ホストからのデータは、偶数語を有する一つのベクトル及び奇数語を有する一つのベクトルの、二つのベクトルに分割される。即ち、ホストが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のためにフォーマットされたデータを含んでいる。
バイト拡張されたロードのために、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]}。
ワード拡張されたロードのために、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]。
直接転送モードでは、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バイナリー位置だけシフトされ、次のクロック周期において乗数が加えられる。
各周期において、結果は二つのレジスタに戻して記憶され、同様に最終結果も一対のレジスタに記憶される。
以上の記述では、説明の目的で、本発明の完全な理解を提供するために特定の命名法を使用した。しかし、当業者には、本発明を実施するために特別な詳細は必要とされないことが明らかであろう。したがって、本発明の特定の実施形態に関する上記の説明は、例示及び説明の目的で提示されるものである。それらは、網羅的であることを意図するものではなく、或いは、本発明を開示された正確な形態に限定するものでもない。上記の教示を考慮して、多くの改変及び変形が可能である。例えば、アレイ104は、行及び列の二次元アレイに限定される必要はなく、如何なる様式でも組織できる。また、一定の実施形態においては、SRAMデコーダ108,110及びI/Oインタフェイス114が望ましいかもしれないが、それらは本発明の実施に必要とされるものではない。実施形態は、本発明の原理及びその実際的な応用を最良に説明し、それによって他の当業者が本発明、及び特定の使用に適すると思われる種々の改変を備えた種々の実施形態を最良に利用できるように選択及び説明されたものである。
図1は、本発明に従って構築されたプロセッサのブロック図を示し、集積化された命令シーケンサ、処理エンジンのアレイ及びI/Oコントローラを含む。 図2は、本発明に従って構築された複数の処理エンジン及びそれらの相互接続の更なる詳細を示す。 図3は、本発明による各処理エンジンのブロック図を示す。 図4は、図3の処理エンジンにより実行される命令のベクトル表現である。

Claims (32)

  1. データを処理するための命令をシーケンスし、該シーケンスされた命令を送信するように構成された、命令シーケンスユニットと、
    前記シーケンスされた命令に対応する命令を受信するように構成された処理エンジンのアレイと、
    を具備し、
    前記処理エンジンの前記アレイにおける各処理エンジンが、前記データを受信するように構成されており、
    各処理エンジンが、
    前記データを記憶するように構成された第1のメモリと、
    決定データを記憶するように構成された決定ユニットと、
    論理状態を記憶し、前記受信した命令に従って前記論理状態を変更するように構成されたブールユニットと、
    整数結果データを発生させるように、前記記憶された決定データ、前記受信した命令及び前記論理状態に従って、前記記憶されたデータに対して条件付きで整数演算を実行するように構成された整数ユニットと、
    I/Oデータを記憶するように構成された第2のメモリと、
    を有し、
    前記ブールユニットは、前記整数ユニットが前記整数演算を実行するときと同一のクロック周期により前記論理状態を変更するように構成された、
    コンピュータシステムであって、
    さらに、前記I/Oデータを処理エンジンの前記アレイに送信しかつ該I/Oデータを該アレイから受信するように構成されたI/Oコントローラを具備する、
    ことを特徴とするコンピュータシステム。
  2. 処理エンジンの前記アレイ及び前記I/Oコントローラと通信するI/Oインタフェイスであって、前記処理エンジンの前記第2のメモリに記憶するために前記I/Oデータをフォーマットするように構成されたI/Oインタフェイス、をさらに具備する、請求項1に記載のコンピュータシステム。
  3. 前記I/Oインタフェイスが、さらに、シャッフルモードにおいて前記第2のメモリにロードするために前記I/Oデータをフォーマットするように構成された、請求項2に記載のコンピュータシステム。
  4. 前記I/Oインタフェイスが、さらに、前記I/Oデータをバイト拡張することにより該I/Oデータをフォーマットするように構成された、請求項2に記載のコンピュータシステム。
  5. 前記I/Oインタフェイスが、前記I/Oデータをワード拡張することにより該I/Oデータをフォーマットするように構成された、請求項2に記載のコンピュータシステム。
  6. 前記I/Oインタフェイスが、直接転送モードにおいて前記第2のメモリにロードするために前記I/Oデータをフォーマットするように構成された、請求項2に記載のコンピュータシステム。
  7. 前記I/Oインタフェイスが、直接転送モードにおいて前記第2のメモリにロードするために前記I/Oデータをフォーマットするように構成された、請求項2に記載のコンピュータシステム。
  8. 処理エンジンの前記アレイ及び前記命令シーケンスユニットと通信し、該命令シーケンスユニットから受信した前記シーケンスされた命令に対応した拡張命令を有する命令セットを記憶するメモリを有するデコーダユニットであって、
    前記命令シーケンスユニットから前記シーケンスされた命令を受信し、
    前記命令シーケンスユニットから受信した前記シーケンスされた命令に対応した前記拡張命令を前記メモリから検索し、かつ、
    処理エンジンの前記アレイに対して前記検索された拡張命令を送信する、
    ように構成されたデコーダユニットを、
    さらに具備する、請求項1に記載のコンピュータシステム。
  9. 前記メモリがSRAMメモリである、請求項8に記載のコンピュータシステム。
  10. 前記シーケンスされたメモリが8ビット命令であり、
    前記拡張命令が64ビットマイクロコード命令である、請求項8に記載のコンピュータシステム。
  11. 前記決定データが、前記処理エンジンをマークされた処理エンジン及びマークされない処理エンジンとして選択的に指定するデータであり、
    前記処理エンジンは、マークされた処理エンジンとして指定されたときには前記整数演算を実行するように構成されており、
    前記処理エンジンは、マークされない処理エンジンとして指定されたときには前記整数演算を中断するように構成されている、請求項1に記載のコンピュータシステム。
  12. 前記処理エンジンが、第1の方向と第2の方向とを有するアレイ内において直列に相互接続され、
    前記処理エンジンが、前記第1の方向に沿って前記I/Oデータを連続的にシフトさせるように構成されており、
    前記処理エンジンが、前記第2の方向に沿って前記記憶されたデータをシフトさせるように構成され、記憶されシフトされたデータを生成する、請求項1に記載のコンピュータシステム。
  13. 前記処理エンジンが、さらに、
    前記記憶されシフトされたデータに対する前記整数演算のうちの少なくとも1つを実行することにより、算術機能の実行を可能にするように構成されている、請求項12に記載のコンピュータシステム。
  14. 前記整数ユニット及び前記ブールユニットが、それぞれの演算を並列に実行するように構成されている、請求項1に記載のコンピュータシステム。
  15. 前記処理エンジンの各々が、さらに、
    前記ブールユニットが第1の論理状態を記憶するときに、前記受信された命令のうちの1つに従って前記記憶されたデータに対して第1の演算を実行し、
    前記ブールユニットが第2の論理状態を記憶するときに、前記受信された命令のうちの1つに従って前記記憶されたデータに対して第2の演算を実行する、
    ように構成されている、請求項1に記載のコンピュータシステム。
  16. 前記第1の演算及び前記第2の演算の各々が、前記記憶されたデータを前記処理エンジンのうちの別の処理エンジンに対してシフトさせるシフト演算、又は、算術演算である、請求項15に記載のコンピュータシステム。
  17. 前記命令シーケンスユニットが、さらに、前記処理エンジンのうちのいくつかに対してアドレスを発生させるよう命令するように構成され、
    前記処理エンジンのうちのいくつかが、さらに、アドレスを発生させ、発生させた該アドレスを前記I/Oコントローラに対して送信するように構成されている、請求項1に記載のコンピュータシステム。
  18. 行及び列において直列に相互接続された処理エンジンを有して、処理エンジンの行及び処理エンジンの列を形成する処理アレイであって、処理エンジンの前記列において連続的にI/OデータをシフトさせることによりI/O動作を実行し、処理エンジンの前記行において連続的に計算データをシフトさせ、前記I/O動作と並行して前記シフトさせたI/O計算データに対して計算動作を実行する、ように構成された処理アレイと、
    命令をシーケンスし、前記処理アレイの前記処理エンジンに対して前記命令を転送して、前記計算動作を制御するように構成された、処理シーケンスユニットと、
    前記処理アレイの前記処理エンジンと前記I/Oデータを交換するように構成されたI/Oコントローラと、
    を具備することを特徴とするコンピュータシステム。
  19. 前記処理エンジンの各々が、さらに、
    論理状態を記憶し、前記転送された命令に従って前記論理状態を変更するように構成された論理ユニットと、
    決定状態を記憶し、前記転送された命令に従って前記決定状態を変更するように構成された決定ユニットと、
    前記決定状態に基づいた整数演算を条件付きで実行するように構成された整数ユニットと、
    を具備し、
    前記整数演算が、前記論理状態及び前記転送された命令に従って前記シフトされた計算データに対して実行されるものであり、
    前記処理エンジンの各々が、さらに、
    前記論理ユニット、前記決定ユニット及び前記整数ユニットと通信するレジスタであって、前記シフトされた計算データ及び前記論理状態を受信し、前記シフトされた計算データ及び前記論理状態を前記命令シーケンスユニットに対して送信するように構成されたレジスタと、
    該レジスタと通信し、前記シフトされた計算データを記憶するように構成されたローカルメモリと、
    を具備する請求項18に記載のコンピュータシステム。
  20. 前記決定状態が、前記処理エンジンをマークされた処理エンジン及びマークされない処理エンジンとして選択的に指定する状態であり、
    前記整数ユニットが、マークされない処理エンジンとして指定するときには前記整数演算を実行するように構成され、
    前記整数ユニットは、マークされた処理エンジンとして指定するときには前記整数演算を中断するように構成される、請求項19に記載のコンピュータシステム。
  21. 前記整数ユニットの各々が、さらに、
    前記論理状態が第1の論理状態のときに、前記転送された命令のうちの1つに従って、前記シフトされた計算データに対して第1の演算を実行し、
    前記論理状態が第2の論理状態のときに、前記転送された命令のうちの1つに従って、前記シフトされた計算データに対して第2の演算を実行する、
    ように構成された、請求項19に記載のコンピュータシステム。
  22. 前記第1の演算及び前記第2の演算が、前記記憶されたデータを前記処理エンジンのうちの別の処理エンジンに対してシフトさせるシフト演算、又は、算術演算である、請求項21に記載のコンピュータシステム。
  23. 前記処理アレイ及び前記I/Oコントローラと通信し、前記処理エンジンの前記ローカルメモリに記憶するために前記I/Oデータをフォーマットするように構成されたI/Oインタフェイスをさらに具備する、請求項22に記載のコンピュータシステム。
  24. 前記I/Oインタフェイスが、さらに、シャッフルモードにおいて前記ローカルメモリにロードするために前記I/Oデータをフォーマットするように構成された、請求項23に記載のコンピュータシステム。
  25. 前記I/Oインタフェイスが、さらに、前記I/Oデータを拡張することにより前記I/Oデータをフォーマットするように構成された、請求項23に記載のコンピュータシステム。
  26. 前記I/Oインタフェイスが、さらに、前記I/Oデータをワード拡張することにより前記I/Oデータをフォーマットするように構成された、請求項23に記載のコンピュータシステム。
  27. 前記I/Oインタフェイスが、直接転送モードにおいて前記ローカルメモリにロードするために前記I/Oデータをフォーマットするように構成された、請求項23に記載のコンピュータシステム。
  28. 前記I/Oインタフェイスが、さらに、直接転送モードにおいて前記ローカルメモリにロードするために前記I/Oデータをフォーマットするように構成された、請求項23に記載のコンピュータシステム。
  29. 前記処理アレイ及び前記命令シーケンスユニットと通信し、前記命令シーケンスユニットから受信した前記シーケンスされた命令に対応する拡張命令を有する命令セットを記憶するデコーダメモリを有するデコーダユニットであって、
    前記命令シーケンスユニットから前記シーケンスされた命令を受信し、前記命令シーケンスユニットから受信した前記シーケンスされた命令に対応する前記拡張命令を、前記デコーダメモリから検索し、処理エンジンの前記アレイに対して前記検索された拡張命令を送信する、ように構成されたデコーダユニット、
    をさらに具備する請求項18に記載のコンピュータシステム。
  30. 前記デコーダメモリがSRANMメモリである、請求項29に記載のコンピュータシステム。
  31. 前記シーケンスされた命令が8ビット命令であり、前記拡張された命令が64ビットマイクロコード命令である、請求項29に記載のコンピュータシステム。
  32. 前記命令シーケンスユニットが、さらに、前記処理エンジンのうちのいくつかに対してアドレスを発生させるよう命令するように構成され、
    前記処理エンジンのうちのいくつかが、アドレスを発生させ、該発生させたアドレスを前記I/Oコントローラに対して送信するように構成されている、請求項18に記載のコンピュータシステム。
JP2008534793A 2005-10-21 2006-10-20 集積プロセッサアレイ、命令シーケンサ、及び、i/oコントローラ Abandoned JP2009512920A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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