JP2011023037A - 並列データ処理装置 - Google Patents

並列データ処理装置 Download PDF

Info

Publication number
JP2011023037A
JP2011023037A JP2010222022A JP2010222022A JP2011023037A JP 2011023037 A JP2011023037 A JP 2011023037A JP 2010222022 A JP2010222022 A JP 2010222022A JP 2010222022 A JP2010222022 A JP 2010222022A JP 2011023037 A JP2011023037 A JP 2011023037A
Authority
JP
Japan
Prior art keywords
data
processing
instruction
processing element
array
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2010222022A
Other languages
English (en)
Inventor
Dave Stuttard
デイブ・ステュッタード
Dave Williams
デイブ・ウイリアムズ
Eamon O'dea
イーモン・オデア
Gordon Faulds
ゴードン・ファウルズ
John Rhodes
ジョン・ローデス
Ken Cameron
ケン・キャメロン
Phil Atkin
フィル・アトキン
Paul Winser
ポール・ウインザー
Russell David
ラッセル・デビッド
Ray Mcconnell
レイ・マッコーネル
Tim Day
ティム・デイ
Trey Greer
トレイ・グリーア
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.)
Rambus Inc
Original Assignee
Rambus Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GB9908219A external-priority patent/GB2348979A/en
Priority claimed from GB9908211A external-priority patent/GB2348977A/en
Priority claimed from GB9908226A external-priority patent/GB2348981A/en
Priority claimed from GB9908229A external-priority patent/GB2348983A/en
Priority claimed from GB9908204A external-priority patent/GB2348974B/en
Priority claimed from GB9908205A external-priority patent/GB2348975A/en
Priority claimed from GB9908214A external-priority patent/GB2348978A/en
Priority claimed from GB9908228A external-priority patent/GB2348982A/en
Priority claimed from GB9908209A external-priority patent/GB2348976A/en
Priority claimed from GB9908222A external-priority patent/GB2352306A/en
Priority claimed from GB9908201A external-priority patent/GB2348972A/en
Priority claimed from GB9908225A external-priority patent/GB2348980B/en
Priority claimed from GB9908203A external-priority patent/GB2348973B/en
Priority claimed from GB9908230A external-priority patent/GB2348984B/en
Priority claimed from GB9908199A external-priority patent/GB2348971B/en
Priority claimed from GB9908227A external-priority patent/GB2349484A/en
Application filed by Rambus Inc filed Critical Rambus Inc
Publication of JP2011023037A publication Critical patent/JP2011023037A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)
  • Hardware Redundancy (AREA)
  • Image Processing (AREA)

Abstract

【課題】 SIMDアーキテクチャは、システムが多数の相対的に小さいデータ項目グループを処理しなければならないときには非効率となる問題を克服する並列データ処理装置を提供することを目的とする。
【解決手段】 データ処理装置は、処理要素のSIMD(単一命令複数データ)アレイ10を備える。前記処理要素は、複数の処理ブロックに作動可能に分割され、前記処理ブロックは、データ項目のそれぞれのグループを処理するように作動可能である。
【選択図】 図1

Description

本発明は、並列データ処理装置に関し、特にSIMD(単一命令複数データ)処理装置に関する。
データ処理システムは、ますます、大量のデータを処理することを必要とされている。さらに、このようなシステムのユーザは、データ処理の速度が加速することを要求している。大量データの高速処理に対するニーズの1つの特定の例は、コンピュータグラフィックスの分野にある。コンピュータグラフィックスにおいては、例えば、画面に表示されるオブジェクトや形状のジオメトリ、テキスチャ、および色に関係する大量データが作成される。コンピュータグラフィックスのユーザは、処理されるデータ量を増加し、データが処理されなければならない速度を加速するより真に迫った、より高速なグラフィックディスプレイをますます要求しつつある。
コンピュータシステム内で大量のデータを処理するために過去に提案された処理アーキテクチャは、処理要素の単一命令複数データ(SIMD)アレイを使用する。このようなアレイの中では、処理要素の全てが同じ命令ストリームを受け取るが、異なるそれぞれのデータ項目上で動作する。このようなアーキテクチャは、それによって並列でデータを処理することができるが、並列命令ストリームを作成する必要はない。これは、並列処理機械から優れた性能を得る効率的、かつ相対的に簡略な方法である。
しかしながら、SIMDアーキテクチャは、システムが多数の相対的に小さいデータ項目グループを処理しなければならないときには非効率となる場合がある。例えば、三角形などの小さいグラフィックプリミティブ用のグラフィック表示画面に関係するデータを処理するSIMDアレイの場合、アレイの相対的に少ない処理要素だけが、プリミティブに関係するデータを処理するためにイネーブルされるだろう。この場合では、大きな割合の処理要素は、データがある特定のグループに処理されている間、未使用のまま残ってよい。
したがって、この問題を克服する、あるいは緩和することができるシステムを作成することが望ましい。
本発明のある態様に従って、処理要素のSIMD(単一命令複数データ)アレイを備えるデータ処理装置が備えられ、処理要素は、複数の処理ブロックに作動可能に分割され、処理ブロックはデータ項目のそれぞれのグループを処理するように作動可能である。
本発明の別の態様に従って、共通した受信された命令に従ってそれぞれのデータ項目を処理するように作動可能な処理要素のアレイを備えるデータ処理装置が提供され、処理要素は、少なくとも1つの処理要素を有する複数の処理ブロックに分割され、該処理ブロックはデータ項目のそれぞれのグループを処理するように作動可能である。
本発明の多様な追加の態様とは、添付クレームによって例証される。
グラフィックデータ処理システムを示すブロック図である。 図1のグラフィックデータ処理システムを示すさらに詳細なブロック図である。 図1のグラフィックデータ処理システムを示すさらに詳細なブロック図である。 図1のグラフィックデータ処理システムを示すさらに詳細なブロック図である。 図3のシステムの処理コアのブロック図である。 図5のシステムのスレッドマネージャのブロック図である。 図5のシステムのアレイコントローラのブロック図である。 図5のチャネルコントローラの命令発行ステート機械のブロック図である。 図5のシステムのビニングユニットのブロック図である。 図5のシステムの処理ブロックのブロック図である。 図1から図10のシステムを使用するデータ処理を示すフローチャートである。 図6のスレッドマネージャのスレッドプロセッサのさらに詳細なブロック図である。 図6のスレッドマネージャのスレッドプロセッサのさらに詳細なブロック図である。 図10の処理ブロックのプロセッサユニットのブロック図である。 処理要素インタフェースを示すブロック図である。 ブロックI/Oインタフェースを示すブロック図である。 図14のプロセッサユニットの一部のブロック図である。 図14のプロセッサユニットの別の部分のブロック図である。
以下に記述されるデータ処理システムは、画面での表示のためにグラフィック画像を作成するためのグラフィックデータ処理システムである。しかしながら、この実施形態は純粋に例示的であり、グラフィックデータを処理するためにここに記述されている技法およびアーキテクチャは、ビデオデータなどのその他のデータ型に等しく適用可能である。このシステムは、言うまでもなく、その他の信号および/またはデータ処理技法およびシステムにも適用可能である。
システムの概要が示され、システムの多様な機能上のユニットの簡略な説明が続くだろう。それから、グラフィック処理方法が例によって説明され、後に機能ユニットの詳細な説明が続く。
概要
図1は、グラフィックデータ処理システム3を示すシステムレベルのブロック図である。システム3は、インタフェース2を介して、パーソナルコンピュータまたはワークステーションなどのホストシステム(図示せず)と接続する。このようなシステムは、制御目的のために従属(embedded)プロセッサユニット(EPU)を具備することができる。例えば、特定のグラフィックスシステム3は、グラフィックプロセッサの全体的な機能を制御するため、およびホストシステムと接続するための従属処理ユニット(EPU)8を含む。システムは、ビデオ出力インタフェース14を介して表示画面に出力するためにグラフィックデータを処理する処理コア10を含む。ローカルメモリ12が、グラフィックスシステム3のために提供される。
このようなデータ処理は、動作のためにホストシステムに接続できるか、あるいは特定のホストシステムを必要とせず、スタンドアロン処理システムを提供することができる。このような用途の例は、デジタルテレビ信号およびデジタルインターネット信号を受信し、復号するための「セットトップボックス」を含む。
図2、図3、および図4は、詳細にグラフィック処理システムを示す。ある特定の例では、グラフィックスシステムは、高度グラフィックポート(AGP)またはPCIインタフェース2を介してホストシステムに接続する。PCIインタフェースおよびAGI2は周知である。
ホストシステムは、例えば、PC99仕様パーソナルコンピュータ、またはワークステーションなどの任意の型のコンピュータシステムであってよい。
AGP2は、グラフィックスシステムからホストシステムメモリへ高帯域幅パスを提供する。これが、通常は、グラフィックスシステムと関連付けられたローカルメモリより大きいホストシステムメモリ内に大きなテクスチャデータベースを保持できるようにする。AGPは、また、グラフィックスシステム上の線形アドレス空間とホストシステムメモリ内の数多くの潜在的に散乱したメモリブロックの間でメモリを写像するための機構も提供する。この機構は、周知であるように、グラフィックスアドレス再写像テーブル(GART)によって実行される。
後述されるグラフィックスシステムは、好ましくは、図1に示されている機能の全てを提供する単一集積回路として実現される。しかしながら、システムが、複数の異なる構成要素を載せる別個の回路カード、またはホストのマザーボードの上に備えられる別個のチップセットとして提供されるか、あるいはホスト中央演算処理ユニット(CPU)と、あるいはこれらの実現またはそれ以外の実現の任意の適切な組み合わせで統合することができることが容易に明らかとなるだろう。
グラフィックスシステムは、専用のバスシステムを経由するデータの転送のために互いに接続されている、複数の機能上のユニットを含む。該バスシステムは、好ましくは1次バス4および2次バス6を含む。1次バスは、待ち時間非許容(intolerant)ユニットの接続のために使用され、2次バスは待ち時間許容ユニットの接続のために使用される。バスアーキテクチャは、好ましくは、出願人の同時係続英国特許出願、特にGB第9820430.8号に詳細に説明される通りである。任意の数の1次バスおよび2次バスが、システム内のバスアーキテクチャの中に提供できることが容易に理解されるだろう。図2に示されている特定のシステムは、2つの2次バスを含む。
おもに図2および図3を参照すると、1次バス4へのアクセスは、1次アービタ41によって制御され、2次バス6へのアクセスは、1対の2次アービタ61によって制御される。好ましくは、全てのデータ転送は、それぞれ32バイトのパケット単位である。2次バス6は、それぞれのインタフェースユニット(SIP)62によって1次バス4と接続される。
補助制御バス7は、制御信号をシステム内の多様なユニットに通信できるようにするために具備される。
AGP/PCIインタフェースは、2次バス6を経由してグラフィックスシステムに接続される。このインタフェースは、示されている例では、2次バスの任意の選択に、両方の2次バス6に接続することができる。グラフィックスシステムは、グラフィックスシステムの動作を制御するため、およびホストシステムと通信するために使用される従属処理ユニット(EPU)8も含む。ホストシステムは、AGP/PCI2内のダイレクトホストアクセスインタフェース9を介してEPU8への直接的なアクセスを有する。EPUは、バスインタフェースユニット(EPU FBI)90を介して1次バス4に接続される。
ローカルメモリシステム12もまた、1次バスに接続されている。ローカルメモリシステム12は、ローカルメモリ自体と通信するために使用される多くの、この例では4つのメモリインタフェースユニット121を含む。ローカルメモリは、グラフィックスシステムが使用するための多様な情報を記憶するために使用される。
システムは、表示画面(図示せず)にグラフィックスシステムを接続するために必要とされるハードウェア、およびビデオデータを含んでもよいデータ交換のためのその他のユニットを備える、ビデオインタフェースユニット14も含む。ビデオインタフェースユニットは、バスインタフェースユニット(FBI)を介して2次バス6に接続される。
システムのグラフィック処理機能は、処理コア10によって提供される。該コア10は、データの転送のために2次バス6に、および命令の転送のために1次バス4に接続される。以下にさらに詳細に説明されるように、2次バス接続はコアバスインタフェース(コアFBI)107およびビンナー(binner)バスインタフェース(Binner FBI)111によって行われ、1次バス接続は、スレッドマネージャバスインタフェース(スレッドマネージャFBI)103によって行われる。
以下にさらに詳細に説明されるように、処理コア10は、多くの制御ユニット、スレッドマネージャ102、アレイコントローラ104、チャネルコントローラ108、ブロックごとのビニング(binning)ユニット1069、およびマイクロコード記憶ユニット105を含む。これらの制御ユニットは、グラフィック処理自体を実行する多くの処理ブロック106の動作を制御する。
図3に示される例の中では、処理コア10には8つの処理ブロック106が備えられる。任意の数の処理ブロックが、このアーキテクチャを使用してグラフィックスシステムで提供できることが容易に理解されるだろう。
処理コア
図5は、処理コアをさらに詳細に示す。スレッドマネージャ102は、EPU8から制御信号を受信するために接続される。制御信号は、いつ命令がフェッチされるべきか、および命令がどこで見つけられるべきかに関して、スレッドマネージャに知らせる。スレッドマネージャ102は、これらの命令をアレイコントローラ104に、およびチャネルコントローラ108に提供するために接続される。アレイコントローラおよびチャネルコントローラ104と108は、受信された命令に依存する処理ブロック106に制御信号を転送するために接続される。
各処理ブロック106は、プロセッサ要素(PE)のアレイ1061および数式評価器(MEE)1062を備える。さらに詳細に以下に記述されるように、MEE係数フィードバックのためのパス1064が、入出力チャネル1067でのように、PEメモリから提供される。それぞれの処理ブロックは、ビニングユニット1069、ユニット1068およびチャネルコントローラ108からの命令を受けて入出力チャネルへ、および入出力チャネルからのデータ転送を制御するための転送エンジン1069を含む。
プロセッサ要素のアレイ1061は、単一命令複数データ(SIMD)処理構造を提供する。アレイ1061内の各PEには、関係する該PEに特殊なデータを処理するために使用される、同じ命令が供給される。
各処理要素(PE)1061は、アレイコントローラから受信される命令を実行するためのプロセッサユニット1061a、プロセッサユニット1061aが使用するためのデータを記憶するためのPEメモリユニット1061c、およびデータがそれを通してプロセッサユニット1061aとPEメモリユニット1061cの間で転送されるPEレジスタファイル1061bを含む。PEレジスタファイル1061bはまた、プロセッサユニット1061aによって処理されているデータを一時的に記憶するためにもプロセッサユニット1061aによって使用される。
多数のプロセッサ要素を提供すると、シリコンユニット内の素子の製造用の大きなダイサイズが生じることがある。したがって、素子に対する欠陥領域の影響を削減することが望ましい。したがって、システムは、好ましくは、あるダイ領域に欠陥があると、別の領域をその代わりに使用することができるように冗長なPEが備える。
特に、データを処理するために使用される処理要素のグループのために、追加の冗長処理要素を製造することができる。ある特定の例では、処理要素は、32PEの「パネル」で提供される。パネルごとに冗長なPEが提供され、その結果パネルのPEの中の1つにおける欠陥は、データの処理のために冗長なPEを使用することによって克服することができる。これは、さらに詳細に以下に記述されるだろう。
スレッドマネージャ
処理要素のアレイは、命令ストリームで一連の命令を実行するために制御される。処理ブロック106用のこのような命令ストリームは「スレッド」として知られている。各スレッドは、1つまたは複数のタスクを実行するために協調して動作する。用語「マルチスレッド」は、単一のタスクを実行するために複数のスレッドを使用することを指すが、用語「マルチタスキング」が、複数のタスクを同時に実行するための複数のスレッドを使用することを指す。これらの命令ストリームまたはスレッドを管理するのがスレッドマネージャ102である。
このようなデータ処理アーキテクチャで複数のスレッドを提供する複数の理由がある。処理要素アレイは、現在のアクティブスレッドが停止するときに別のスレッドを処理することによって、アクティブに保つことができる。スレッドは、必要に応じて任意のタスクに割り当てることができる。例えば、データをメモリへ、およびメモリから転送するためのデータI/O動作を処理するために複数のスレッドを割り当てることによって、これらの動作は、処理動作とI/O動作を重複してさらに効率よく実行することができる。メモリI/O動作の待ち時間は、さまざまなスレッドの使用によってシステムから効果的にマスクすることができる。
加えて、システムは外部イベントに対しさらに高速な応答時間を有し得る。異なる外部イベントで待機するために特定のスレッドを割り当て、その結果イベントが発生すると、それは即座に処理できる。
スレッドマネージャ102は、図6にさらに詳細に示され、スレッドごとにフェッチされた命令を記憶するためのキャッシュメモリユニット1024を備える。キャッシュユニット1024は、スレッドごとに1つずつ、一連の先入れ先出し(FIFO)バッファによって置換できる。スレッドマネージャは、命令フェッチユニット1023、スレッドスケジューラ1025、スレッドプロセッサ1026、セマフォコントローラ1028およびステータスブロック1030も含む。
スレッド用の命令は、ローカルメモリまたはEPU8からフェッチユニット1023によってフェッチされ、接続論理回路を介してキャッシュメモリ1024に供給される。
スレッドは、互いを基準にして優先順位を割り当てられる。言うまでもなく、ここに記述されている例は、8つのスレッドを有しているが、任意の数のスレッドがこのようにして制御できる。任意の特定のある瞬間に、各スレッドは、数多くのタスクの任意の1つに割り当てられてよい。例えば、スレッドゼロは、通受のシステム制御に割り当てられてよく、スレッド1は2D(2次元)活動を実行するために割り当てられ、スレッド2から7は(頂点、プリミティブまたはラスタリングの計算などの)3D活動を実行するために割り当てられる。
図6に示されている例では、スレッドマネージャは、スレッドごとに1つのスレッドプロセッサ1026を含む。スレッドプロセッサ1026は、同時にアクティブなプログラムスレッドの処理を維持するためにスレッドマネージャからのコア命令の発行を制御し、その結果、処理ブロック16の各々は、可能な限り多くの時間、アクティブとなることができる。この特定の例では、同じ命令ストリームが、システム内の処理ブロックの全てに供給される。
スレッドの数がスレッドプロセッサの数を超え、その結果各スレッドプロセッサは、複数のスレッドの制御を処理する。しかしながら、スレッドプロセッサをスレッドごとに提供すると、アクティブスレッドを変更するとき、コンテキスト切替えの必要性が削減され、それによりメモリアクセスを削減し、したがって動作の速度を加速する。
セマフォコントローラ1028は、他の1つとスレッドを同期させるために動作する。
スレッドマネージャ102内では、ステータスブロック1030は、スレッドの各ステータス情報1036を受け取る。ステータス情報は、ステータスブロック1030によってスレッドスケジューラ1025に転送される。ステータス情報は、どのスレッドが任意の一時点でアクティブであるべきかを判断するためにスレッドスケジューラ1025によって使用される。
スレッドマネージャ102によって発行されるコア命令1032は、アレイコントローラ104およびチャネルコントローラ108に送信される(図5)。
アレイコントローラ
アレイコントローラ104は、処理ブロック106の動作を命令し、図7にさらに詳細に示される。
アレイコントローラ104は、スレッドマネージャから命令を受け取るために接続されている命令ランチャ(launcher)1041を備える。命令ランチャ1041は、さらに特殊な命令情報を命令ランチャに提供する、命令テーブル1042に索引を付ける。
追加命令情報に基づき、命令ランチャは、命令情報をPE命令シーケンサ1044またはロード/記憶コントローラ1045のどちらかに命令する。PE命令シーケンサは、データ処理に関係する命令情報を受け取り、ロード/記憶コントローラは、データ転送動作に関係する情報を受け取る。
PE命令シーケンサ1044は、PEマイクロコード命令を処理アレイ内のPEに転送するための、PEマイクロコード記憶ユニット105に索引を付けるために受け取られた命令情報を使用する。
アレイコントローラは、特定のアクティブ命令によってPEレジスタの使用に関する情報を記憶するために使用されるスコアボードユニット1046も含む。スコアボードユニット1046は、PE命令シーケンサ1044およびロード/記憶コントローラ1045それぞれによって伝送される命令によるレジスタの使用に関する情報を提供できるように機能上分割される。
一般的な言葉では、PE命令シーケンサ1044は、プロセッサユニット1061a内のデータ処理を含む命令を処理する。ロード/記憶コントローラ1045は、他方、プロセッサユニット1061aおよびPEメモリユニット1061cのレジスタ間でのデータ転送を含む命令を処理する。ロード/記憶コントローラ1045を、さらに詳細に後述する。
命令ランチャ1041およびスコアボードユニット1046は、PE命令シーケンサ1044とロード/記憶コントローラ1045の間で並列動作を達成する一方で、連続命令実行の出現を維持する。
スレッドマネージャ102から発行される残りのコア命令1032は、チャネルコントローラ108に送られる。これが、PEメモリユニットと外部メモリ(AGPまたはPCI空間でのローカルメモリまたはシステムメモリのどちらか)間のデータ転送を制御する。
チャネルコントローラ
チャネルコントローラ108は、アレイコントローラ104による命令の実行に関して非同期で動作する。これが、計算および外部I/Oを同時に実行し、可能な限り重複できるようにする。計算(PE)動作は、さらに詳細に以下に説明されるように、スレッドマネージャのセマフォによってI/O動作と同期される。
チャネルコントローラ108は、それぞれの処理ブロック106と関連付けられているビニングユニット1068も制御する。これは、チャネルコントローラ命令によって達成される。
図8は、チャネルコントローラの動作の中心部にあり、以下にさらに詳細に記述されるチャネルコントローラの命令発行ステート機械を示す。
各ビニングユニット1069(図5)は、その関連付けられた処理ブロック106のI/Oチャネルに接続される。データは、一般的には、領域に基づいた処理のために正しい順序でホストシステムによって提供されないため、ビニングユニット1069の目的とは、領域ごとにプリミティブデータを並べ替えることである。
ビニングユニット1068は、処理要素から並べ替えプロセスを削除し、それによりデータ処理のためにPEを解放する、ハードウェアで実現された領域分類システム(図9に図示されている)を提供する。
メモリアクセス統合
単一のメモリ、またはその他のアドレス指定されたデバイスへのアクセスを要求する大多数の要素を有するコンピュータシステムにおいては、記憶ユニットへのアクセスは要素ごとに連続して実行される場合に処理速度のかなりの減速がある場合がある。
前述されたグラフィックスシステムは、このようなシステムの一例である。大多数のプロセッサ要素があり、その各システムのローカルメモリ内のデータへのアクセスを必要とする。メモリアクセスを必要とする要素の数が、任意のある時点に行うことができるメモリアクセス数を超えるため、ローカルメモリおよびシステムメモリに対するアクセスは、連続した動作を含む。このようにして、要素ごとのメモリアクセスの実行は、個々に、処理ブロックの動作の速度の劣化を引き起こすだろう。
この問題のシステムの処理速度に対する影響を削減するために、図1、図2、図3、および図4のシステムは、メモリアクセス統合機能を含む。
メモリアクセス統合は、図15と図16に関しても後述される。しかしながら、一般的には、メモリに対するアクセスを必要とする処理要素は、これが、表示フラグまたはマークビットを設定することにより当てはまることを示す。それから、第1のこのようにマークされたPE、およびそれがアクセスを必要とするメモリアドレスが処理ブロックの処理要素の全てに伝送される。アドレスは、対応するトランザクションIDとともに伝送される。アクセスを必要とする(つまり、表示フラグセットを有する)それらの処理要素は、伝送されたアドレスを、それらがアクセスを必要とするアドレスと比較し、比較が同じアドレスにアクセスしなければならないことを示す場合には、それらの処理要素はそのメモリアクセスのためのトランザクションIDを登録し、表示フラグをクリアする。
トランザクションIDが処理ブロックに戻されると、処理要素は、データを回復するために、記憶されたトランザクションIDを入信トランザクションIDと比較する。
単にアクセスされたアドレス情報を記憶する代わりにトランザクションIDを使用すると、複数のメモリアクセスを搬送し、それから任意の順序で戻すことができる。このようなデータを回復する「ファイアアンドフォーゲット(fire and forget)」方法は、プロセッサが処理ステップを続行する前にデータが戻るのを待機しなくてもよいため、プロセッサ時間を自由にすることができる。さらに、トランザクションIDを使用すると、データ回復トランザクションを特定するために処理要素によって記憶されなければならない情報量も削減される。アドレス情報は、通常、トランザクションID情報より大きなサイズである。
好ましくは、各メモリアドレスが、PEがアクセスを必要とするより多くのデータを記憶することができる。このようにして、複数のPEは、それらが同じデータへのアクセスを必要としなくても、同じメモリアドレスへのアクセスを必要とすることがある。この機構が、階層統合技法を提供することによって、さらにシステムによって必要とされるメモリアクセス数を削減することができる。例えば、各メモリアドレスは、データの4つのクワタ詰めバイトを記憶してよく、それぞれのPEが、任意の1回のアクセス時に1つのクワタ詰めバイトを必要とする。
この技法は、同じメモリアドレスの異なる部分に対する書込みアクセスを必要とするそれらのPEのためのメモリ書込みアクセス統合も可能にすることができる。
このようにして、システムは、処理ブロックに必要とされるメモリブロック数を削減し、したがって処理ブロックの動作速度を加速することができる。
表示フラグは、データをメモリに書き込むための別の技法でも使用できる。このような技法では、メモリ信号に書き込まれるデータを有するPEを設定することによるこの事実。データは、基本アドレスで開始し、順番にそれらのPEのそれぞれのメモリアドレスに書き込まれ、メモリ内に所定のスペーシングで階段状に並べられる。例えば、ステップサイズが1に設定される場合には、連続アドレスが、フラグ付きのPEからのデータとともに書き込まれる。
処理ブロック
処理ブロック106の1つは、図10にさらに詳細に示される。処理ブロック106は、それぞれのデータ項目で並列に動作するが、同じ命令(SIMD)を実行するように配列されているプロセッサ要素1061のアレイを含む。各プロセッサ要素1061は、プロセッサユニット1061a、PEレジスタファイル1061b、およびPEメモリユニット1061cを含む。PEメモリユニット1063cは、プロセッサユニット1061aによる処理のためのデータ項目を記憶するために使用される。各プロセッサユニット1061aは、PEレジスタファイル1061bを介して、そのPEメモリユニット1061cに、およびそのPEメモリユニット1061cからデータを転送できる。プロセッサユニット1061aは、処理中のデータを記憶するためにPEレジスタファイル1061bも使用する。プロセッサユニット1061aとメモリユニット1061c間でのデータ項目の転送は、アレイコントローラ104によって制御される。
処理要素の各々に、数式評価器(MEE)1062から入力されるデータが提供される。MEEは、PEの各々に関して数式を評価するために動作する。数式は、関係する特定のデータ処理用途に応じて、1次式、双1次式、3次式、2次式、またはさらに複雑な式である場合がある。
数式評価器の1つの特定の例が、1次式評価器(LEE)である。LEEは、以下の双1次式
ax+by+c
を、xとyの値の範囲に関して評価するための既知の装置である。
LEEは、米国特許番号第4,590,465号に詳細に記述されている。LEEは、双1次式を評価するための係数値a、b、およびcを供給され、x1とy1の異なる値に対応する出力の範囲を作成する。各処理要素1061は、ある特定の(x1、y1)組を表し、LEEはプロセッサ要素ごとに双1次式の特定の値を生じる。
例えば、双1次式は、表示されなければならない三角形の1つの辺の境界となる線を画定する。それから、1次式評価器は、プロセッサ要素に対し、プロセッサ要素がそのためにデータを処理しているピクセルが線上にあるのか、関係する線の一方の側にあるのか、それとも他方の側にあるのかどうかを示すために値を生じる。それから、グラフィックデータの追加の処理が続行できる。
数式評価器1062には、フィードバックバッファ(FBB)1068から、または処理ブロックの外部にあるソースから係数が与えられる(イメデェート(immediates)として知られている)。該フィードバックバッファ1068は、PEレジスタファイル1061bから、またはPEメモリユニット1061cから係数を供給される。
バス構造1064は、FBB1068にプロセッサ要素(レジスタファイルまたはメモリユニット)からデータを転送するために使用される。各PEは、それが係数データをMEEに供給する必要があるかどうかを判断するために制御される。
一例では、(一度に)1つのPEだけがフィードバックバッファFBB1068にデータを転送するために(イネーブルされる)。FBBは、MEE1062に送られるデータを待ち行列に入れる。別の例では、複数のPEが同時にFBBにデータを転送することができるため、データの転送の処理は、MEEフィードバックバス構造1064に依存するだろう。例えば、バスは、複数のデータが書き込まれる場合に、データの論理積がMEE1062に供給されるように、集約論理和となれるだろう。
MEEオペランドフィードバックパスは、該a係数およびb係数をゼロに設定し、c係数として通信されるデータを供給することによって、あるプロセッサ要素から関係するブロック内の他の全てにデータを通信するために効果的に使用することができる。それから、MEE結果の全ては、係数cに等しくなり、このようにして他のプロセッサ要素にデータを転送するだろう。
本システムにおいては、処理ブロック106は、互いから別個に式評価器のための演算符号(命令)およびオペランド(データ項目)を与えられる。過去には、命令およびデータは、単一命令ストリームで与えられた。特にオペランドがアレイ自体の中で作成されるときに、処理速度の減速を生じることのあるこのストリームは、処理中に作成されなければならない。
しかしながら、本システムでは、演算符号がオペランドから分離されるため、演算符号sおよびオペランドは、さまざまなソースによって作成することができ、オペランドがMEE1062によって実行されなければならないときにだけ結合される。
グラフィックデータ処理
図11は、図1から図10のシステムを使用するグラフィックデータ処理方法での簡略化されたステップを示す。ホストシステムは、グラフィックスシステムによって処理され、表示されるプリミティブグラフィック画像の頂点に関するデータを作成する。それから、データは、頂点データのブロックとして、あるいはそれはホストシステムによってグラフィックスシステムに対して作成されるため、頂点ごとにどちらかで転送される。
データは、各PEが1つの頂点のためのデータを含むように、グラフィックスシステムのPEの中にロードされる。それから、各PEは、線の最後、または三角形のような2次元形状の一部となるプリミティブの頂点を表す。
それから、受信されたデータは、ホストシステム基準空間から必要とされる画面空間へそれを変換するために処理される。例えば、3次元ジオメトリ、ビュー、照明および陰影その他は、選ばれるビューポイントに応じてデータを生じさせるために実行される。
それから、各PEは、それが線、三角形またはさらに複雑な多角形であるならば、各PEがグラフィックプリミティブに相当する頂点データの少なくとも1つの集合を有するように、その頂点データをその隣接するPEにコピーする。それから、データはPEに基づいてプリミティブの上に編成される。
それから、プリミティブデータは、それを領域ごとに並べ替えることができるために、PEからローカルメモリに出力される。これは、さらに詳細に後述されるように、図5のビニングユニット1069によって実行される。ビニングユニット1069は、データが、通常は、領域ベースの処理のための正しい順序でホストシステムによって提供されないため、領域ごとにプリミティブデータを並べ替える。
ビニングユニット1068は、処理要素から並べ替えプロセスを削除し、それによってデータ処理のためにPEを解放するハードウェアで実現される領域並べ替えシステムを提供する。
プリミティブデータは全てローカルメモリに書き込まれ、各プリミティブは1つのエントリを有する。ある特定のプリミティブに対するデータが書き込まれると、その範囲が領域の定義と比較される。各領域内で発生するプリミティブに関する情報は、ローカルメモリに記憶される。プリミティブの少なくとも一部がその中で発生する領域ごとに、参照は、プリミティブデータが記憶されるローカルメモリの一部に記憶される。このようにして、プリミティブデータの各集合は、一度記憶されればよい。
プリミティブ情報がいったんローカルメモリ内に記憶されると、それは個々のPEに読み戻される。しかしながら、この段階で、ある処理ブロック内のPEの全てが、単一の領域内で発生するそれぞれのプリミティブに関するデータを含む。この点から、指定された処理ブロックが、表示の単一領域に関連付けられたデータの上で動作する。
それから、各PEは、代わりに、ピクセルデータ内への処理のためにMEEにそのプリミティブに関するそのデータを転送する。例えば、PEは、三角形プリミティブの1つの辺を構成する線を画定するMEEに係数データを供給するだろう。それから、MEEは係数に基づいてピクセル値の全てを評価し、ピクセルが線の上に出現するのか、線の下に出現するのか、あるいは線上に出現するのかを示すピクセルごとの結果を生じる。三角形の場合、これは3回実行され、その結果、ピクセルが三角形内で発生するのか、それともその外側で発生するのかが判断できる。それから、各PEは、それぞれのピクセルに付いてのデータも含む(つまり、データはPE単位でピクセルに記憶される)。
いったん各ピクセルが、関係する三角形(プリミティブ)の外側、あるいは内側にあると判断されると、プリミティブのための処理は、プリミティブの内側に発生するそれらのピクセル上だけで実行することができる。処理ブロック内のPEの残りは、そのプリミティブが処理されるまで、処理にさらに加わらない。
前述された機能ユニットの詳細な説明
スレッドマネージャ
図6に関して前述されたように、スレッドごとにフェッチされた命令を記憶するためのキャッシュメモリユニット1024を備える、スレッドマネージャ102に関する詳細な説明がここで示される。キャッシュユニット1024は、スレッドごとに1つずつ、一連の先入れ先出し(FIFO)バッファによって置換できる。また、スレッドマネージャは、命令フェッチユニット1023、スレッドスケジューラ1025、スレッドプロセッサ1026、セマフォコントローラ1028、およびステータスブロック1030も含む。
スレッドのための命令は、ローカル外部メモリ103から、またはフェッチユニット1023によってEPU8からフェッチされ、接続論理を介してキャッシュメモリ1024に供給される。
指定されたときに、1つのスレッドだけが実行中であり、スレッド間で多重化する時間のスケジューリングは、プログラム実行の動的な条件によって決定される。このスケジューリングは、スレッドマネージャ102内でスレッドスケジューラによって実行され、それが、各プロセッサブロック106が可能な限り多くビジーで保たれることを確実にする。あるスレッドから別のスレッドへの切替えは、状態保存復元オーバヘッドを必要とする。したがって、スレッドの優先順位は、スレッド切替え数を削減し、それによって関連付けられたオーバヘッドを削減するために使用される。
コアスレッドマネージャ102によって発行されるコア命令は、2つの制御ユニット、アレイコントローラ104、またはチャネルコントローラ108の内の1つに送信される。
どのスレッドがアクティブとなる必要があるのかの決定
スレッドスケジューラは、実行時、以下のスケジューリングトリガの1つが発生すると必ず、どのスレッドがアクティブとならなければならないのかを計算し直す。
現在アクティブなスレッドより高い優先順位が設定されるスレッドは準備完了であるか、あるいは
スレッドは(準備完了ではなく)、影響を受けやすい(YIELDING)。
スレッドスケジューラは、それぞれのスレッドが、それが準備完了なのか、あるいは影響を受けやすいのかのステータスをスレッドスケジューラに報告し直し、スケジューラステータスレジスタとして知られているレジスタ内で調べられるため、これを決定することができる。
前記を決定する際には、スレッドは、それが
−命令キャッシュ失敗で待機中でない限り
−ゼロセマフォで待機中でない限り
−ビジー実行ユニットで待機中でない限り、あるいは
−HALT(停止)命令で待機中でない限り、
つねに準備完了であると見なされる。
スレッドが、例えばそれがメモリアクセスを必要とするために、動作を停止すると、それは「譲歩する(yielding)」または「譲歩しない(not yielding)」である場合がある。スレッドが譲歩する場合には、別のスレッドが準備完了しているならば、その他のスレッドがアクティブになることができる。スレッドが影響を受けやすくない場合には、その他のスレッドは、準備完了であるとしても、アクティブになるのを妨げられる。スレッドは、例えば、そのスレッドがただ動作中に短い休止を必要とする場合には譲歩しない。この技法が、特に高い優先順位のスレッドが単に瞬間的に休止するときに、アクティブスレッド間で不必要にスワップする必要性を回避する。
スケジューリングトリガが前述されたように発生する場合、スケジューラは有効となり、以下を実行する。第1に、それはアクティブスレッドが実行するのを停止し、あらゆるセマフォ減分が伝搬するのを待機する。
過去にアクティブなスレッドが譲歩する場合、スケジューラは最高の優先順位の準備完了スレッド、あるいは(これが別の即座のスケジューリングトリガを引き起こすため)スレッドが準備完了していない場合には最低の優先順位スレッドを活性化する。
過去にアクティブだったスレッドが譲歩しない場合、スケジューラは、過去にアクティブだったスレッドより高い優先順位を有する準備完了である最高の優先順位のスレッドを活性化する。このようなスレッドがない場合には、スケジューラは、過去にアクティブだったスレッドを再活性化する(それは、そのスレッドが準備完了になっていない場合、別のスケジューリングトリガを引き起こすだろう)。
スレッドスケジューラは、EPUインタフェースを通してディスエーブルすることが出きる。スケジューラがディスエーブルされると、EPUはスレッドの活性化を制御することができる。例えば、EPUはアクティブスレッドを起動、停止し、アクティブスレッドポインタを特定のスレッドに設定し、アクティブスレッドを単一で進むことができるだろう。
スレッドマネージャ102は、スレッドマネージャ命令またはセマフォ命令を復号するだけである。加えて、各スレッドは、図12に図示されているように、専用のスレッドプロセッサ1026を有する。該スレッドプロセッサ1026は、その動作の理解を助けるために複数の部分に分けることができる。
各スレッドプロセッサは、バイト論理演算ユニット540、述語論理演算ユニット550、分岐ユニット520、命令キャッシュ530、命令アセンブリ510、およびイネーブルユニット500を備える。
スレッドプロセッサ1026の目的は、(ループおよび条件付き分岐などの)スレッドのために実行される高水準フロー制御を可能にし、アレイコントローラ104およびチャネルコントローラ108に対して発行される命令をアセンブルすることである。
イネーブルユニット500は、前記の本文に概略されるように、スレッドが準備完了しているかどうかを決定するために使用される。
命令キャッシュ530は、分岐ユニット520からの命令のためにアドレスを受け取り、それらをキャッシュ5301からフェッチする。起動中、EPUは、分岐ユニット内でプログラムカウンタをプログラムすることができる。キャッシュ5301が命令を含まない場合、キャッシュ失敗が信号で知らされ、ローカルメモリからの命令フェッチが起動される。失敗がない場合には、命令は、命令レジスタ5302にラッチされる。
分岐加算器520は、次の命令のアドレスを制御する。イベントの通常の過程では、それは、最後のアドレスを増分し、このようにして連続してメモリ内の命令の中を進む。しかしながら、分岐が要求されると、それはカレントアドレスにオフセット(正または負)を追加することによって、あるいはメモリ内の絶対アドレスでカレントアドレスを置換することによって新しいアドレスを計算する。スレッドプロセッサが停止されると、PC0レジスタ5201は、PC1レジスタ5202は、すでに変更されているため、要求された前回のアドレスを提供する。
バイト論理演算ユニット540は、スレッドプロセッサ102内に含まれる16ビットレジスタで数学演算を実行するための機構を提供する。プログラマは、スレッドプロセッサ汎用レジスタ5402で論理演算を加算、減算、および実行するために、スレッドマネージャ命令を使用することができ、それによりループを書き込むことができるようにする。情報は、バイト論理演算ユニット540および命令アセンブラ510を使用することによって、汎用レジスタからアレイコントローラ104に渡すこともできる。
述語論理演算ユニット550は、16個の1ビット述語レジスタ5501を含む。これらは、真または偽の条件を表す。これらの述語のいくつかは、前回のバイト論理演算ユニット演算の繰上げ、オーバフロー、負、最上位ビットのステータスを示す。残りの述語は、(ループ終了のための)分岐に条件を設けるために使用され、アレイ内の「全イネーブルレジスタオフ」(AEO)を示すアレイコントローラ104からステータス情報を受け取ることができる。
命令アセンブラ510は、チャネルコントローラ108およびアレイコントローラ104などの多様なコントローラのための命令を組み立てる。大部分の命令は、修正されず、単にそれぞれの制御ユニットに渡されるだけである。しかしながら、時々、多様な命令でのフィールドは、汎用レジスタのコンテンツで置換されることがある。命令アセンブラ510は、関連コントローラに命令を渡す前に、これを実行する。命令アセンブラ510は、スレッドマネージャ102内のイネーブルユニット500、およびスケジューラに送信される譲歩ステータス、待機ステータス、および制御信号ステータスも計算する。
セマフォコントローラ
スレッドの同期および他のリソースへのアクセスの制御は、セマフォコントローラ1028によって提供される。
セマフォは、共通リソースへのアクセスを制御することによって、スレッド間の同期を達成するために使用される。リソースがスレッドによって使用中である場合には、対応するセマフォは、これを他のスレッドに示し、その結果リソースはその他のスレッドには使用できなくなる。セマフォは、関係するリソースへのアクセスを待ち行列に入れるために使用できる。
ある特定の例では、セマフォコントローラ1028は、セマフォがどのリソースに関係するのかに依存して4つのグループに分割される合計80個のセマフォを使用する。
セマフォカウントおよびオーバフロー
セマフォは、8ビットの符号なしカウントを有する。しかしながら、msb(ビット7)は、オーバフロービットとして使用され、このようにして絶対に設定されてはならない。任意のセマフォのビット7が設定されると必ず、スレッドマネージャステータスレジスタ内のセマフォオーバフローフラグがセットされる。対応する割込みイネーブルが設定されると、EPUは割り込まれる。セマフォオーバフローフラグは、EPUによってクリアされるまで設定されたままとなる。
セマフォ動作
以下の動作は、セマフォごとに提供される。
事前設定:スレッドは、セマフォ値を事前設定することができる。スレッドは、セマフォに未決の信号がないことが知られているときにだけ、事前設定命令を発行しなければならない。
待機:スレッドは、待機命令を発行することによってセマフォで待機動作を実行できる。セマフォがゼロ以外である場合、セマフォは減分される。それがゼロである場合、スレッドは休止され、待機命令を発行するのを待機する。
信号:セマフォは増分される。この動作はスレッド、PEシーケンサ、ロード/記憶ユニット、またはチャネルコントローラによって実行できる。しかしながら、一般的には、セマフォは、後述されるように、これらの内の1つによって信号で知らせることができる。
EPU8は、任意の時点でスレッドセマフォカウントを読書きすることができる。一般的には、コアは、EPUがその他のセマフォ値にアクセスすると、命令を実行していてはならない。
セマフォグループ
セマフォは、それらが、どの実行ユニットによって信号で知らされるのかに応じて4つのグループに分けられる。
(1)グループid
(2)グループ内のセマフォ数
(3)セマフォグループ名
(4)グループ内のセマフォが知らされる信号
において、
(1)0 (2)32 (3)スレッド (4)スレッドとEPU
(1)1 (2)16 (3)チャネル (4)チャネルコントローラ
(1)2 (2)16 (3)ロード/記憶 (4)ロード/記憶ユニット
(1)3 (2)16 (3)PE (4)PEシーケンサ
である。
EPUは、コアが凍結されると、全てのセマフォ値を読書きできる。加えて、EPUは、以下に示すように、任意のときにスレッドセマフォを事前設定、増分および減分することができる。
増分:EPUは、その増分レジスタを書き込むことによってセマフォを原子的に増分できる(原子動作とは、周知であるように、他の動作によって割り込むことができない動作である)。
減分:EPUは、その減分レジスタを読み取ることによってセマフォを原子的に減分できる。セマフォが、減分の前にゼロ以外である場合、読み取りは真に戻る。それ以外の場合、読み取りは偽に戻り、セマフォはゼロで残される。
各スレッドセマフォは、別個にイネーブルされたゼロ以外の割込みを有する。この割込みがイネーブルされると、セマフォは、ゼロ以外のときにEPUに割り込む。EPUは、典型的には、セマフォ減分から偽を受け取った後に、この割込みをイネーブルするだろう。割込みを受け取ると、減分を再び試みることが好ましい。
アレイコントローラ
ここで、図7に示されるように、アレイコントローラ104に関する詳細な説明が示される。アレイコントローラ104は、処理ブロック106の動作を命令する。アレイコントローラ104は、スレッドマネージャから命令を受け取るために接続されている命令ランチャ1041を備える。命令ランチャ1041は、追加の特定の命令情報を命令ランチャに提供する命令テーブル1042に索引を付ける。
追加命令情報に基づいて、命令ランチャは、命令情報を、PE命令シーケンサ1044またはロード/記憶コントローラ1045のどちらかに向ける。PE命令シーケンサは、データ処理に関する命令情報を受け取り、ロード/記憶コントローラは、データ転送動作に関する情報を受け取る。
PE命令シーケンサ1044は、PEマイクロコード命令を処理アレイに転送するための、PEマイクロコード記憶ユニット105に索引を付けるために受け取った命令情報を使用する。
アレイコントローラは、特定のアクティブな命令によるPEレジスタの使用に関する情報を記憶するために使用されるスコアボードユニット1046も含む。スコアボードユニット1046は、それぞれPE命令シーケンサ1044およびロード/記憶ユニット制御装置1045によって、伝送される命令によってレジスタの使用に関する情報を与えるために機能上分割される。
命令ランチャ1041およびスコアボードユニット1046は、PE命令シーケンサ1044とロード/記憶コントローラ1045の間の並列動作を達成する一方で、シリアル命令実行の出現を維持する。
スレッドマネージャ102から発行される残りのコア命令1032は、チャネルコントローラ108に送られる。これが、PEメモリユニットと外部メモリ(AGPまたはPC空間内のローカルメモリまたはシステムメモリのどちらか)の間でのデータの転送を制御する。
連続命令実行の出現を維持するために、PE命令シーケンサまたはロード/記憶コントローラは、その命令が、過去に起動され、依然として実行中の命令によって、それぞれロード/記憶コントローラおよびPE命令シーケンサからロックされるPEレジスタにアクセスするときに、命令の実行を機能停止にする。この機構は、命令の起動は遅延しない。命令の実行は、ロックが命令実行中に遭遇されるときだけ機能停止にされる。
機能停止を引き起こすPEレジスタアクセスは以下の通りである。
ロックされたレジスタへのアクセス
(ロード/記憶のためのイネーブルとして使用される)イネーブルスタックへの書込み
(ロード/記憶のための索引が付けられたアドレスとして使用される)Pレジスタへの書込み(図6)
(MEEフィードバック用のイネーブルとして使用される)Vレジスタへの書込み(図6)
命令ランチャ1041は、命令がアクセスするのがどのレジスタかを決定し、命令が起動されるとこれらのレジスタをロックする。命令が完了すると、レジスタはアンロックされる。ロード/記憶命令にとって、アクセスされたレジスタを決定することは率直である。これは、アクセスされたレジスタが命令で直接的に符号化されるためである。PE命令の場合、タスクは、アクセスされたレジスタの集合がマイクロコードに依存するため、さらに複雑である。この問題は、命令によってアクセスされる4つのオペランドのバイト長さを示す、命令テーブル1042をアドレス指定するためにPE命令の9つのビットを使用することによって解決される。
命令テーブル1042は、命令がイネーブルスタックを修正するのか、Pレジスタを修正するのか、またはVレジスタを修正するのかも決定する。さらに、それは、命令のためのマイクロコード開始アドレスも含む。
PE命令が起動されると、命令テーブル1042は、アクセスされたレジスタの集合を決定するためにアクセスされる。これらのレジスタは、スコアボード1046内で、その命令によってロックされているとしてマーキングされる。命令が完了すると、レジスタはアンロックされる。ロード/記憶命令は、それらが、PE命令シーケンサ1044によってロックされるレジスタにアクセスする、またはレジスタを使用すると機能停止にされる。
ロード/記憶命令が起動されると、その命令によってロードまたは記憶される全てのレジスタファイルレジスタ(R31−R0)がロックされる。レジスタは、命令が完了するとアンロックされる。PE命令は、それらがロード/記憶コントローラによってロックされるレジスタにアクセスすると機能停止される。
Pレジスタへの書込みは、以下の通りにロード/記憶ユニットの実行を機能停止する(Vレジスタおよびイネーブルスタックは類似している)。PE命令が起動されると、それは、命令テーブルルックアップが、命令がPレジスタを修正することを示す場合にPレジスタをロックする。Pレジスタは、命令が完了するまでロックされたままである。ロード/記憶命令は、ロード/記憶命令の間接ビットがセットされる場合、Pレジスタがロックされる間、機能停止する。ロード/記憶命令は、ロード/記憶命令がフィードバックバッファを書き込む場合に、Vレジスタがロックされる間、機能停止する。ロード/記憶命令は、ロード/記憶命令の条件ビットがセットされる場合、イネーブルスタックがロックされる間、機能停止する。
前述されたように、命令テーブル1042は、奥行きが512ワードで、幅が64ビットの小さいメモリ(RAM)であってよい。テーブルは、命令開始アドレスおよび型を決定するためにPE命令の命令インデックスフィールドによってアドレス指定される。テーブルは、アドレスロード命令およびデータ付帯演算ロード命令で書き込まれ、EPUバス上でIアドレスおよびIデータレジスタを介して読み取られる。
ロード/記憶コントローラ
ロード/記憶コントローラ1045の詳細な説明がここに示される。
ある特定の例では、PEメモリサイクルは、名目上、PEクロック速度の4分の1であるが、PEクロック速度の6分の1などの任意の所望の速度に連動することができる。メモリは、幅128ビット(1ページ)であり、PEレジスタファイルに対するクワタ詰めバイト(32ビット)幅のインタフェースを有する。このレジスタファイルインタフェースは、メモリサイクル速度の4倍で動作するため、レジスタファイルインタフェースは完全なメモリ速度で実行する。
ロード/記憶コントローラ命令は、それらが命令ランチャ1041によって、またはリフレッシュまたはI/Oのためにスチールされるサイクルによって機能停止しない限り、1メモリサイクル(名目上4PEサイクル)で実行する。
各ロード/記憶命令は、単一メモリページの一部または全てを転送する。単一ロード/記憶命令は複数のページにアクセスする。
ロード/記憶ユニット制御装置によって実行されるメモリ動作
ロード/記憶コントローラ1045は、PEメモリ1063上で以下の動作を実行する。
PEメモリ1063からPEレジスタファイルへロードし、記憶する。
PEメモリ1063からMEEフィードバックバッファへ読み取る。
PEメモリからPEメモリにコピーする。
PEメモリリフレッシュ
I/Oチャネル転送
PEメモリからPEレジスタファイルへのロードおよび記憶
ロード命令および記憶命令は、単一メモリページとレジスタファイルの4つのクワタ詰めバイトの間で示されるバイト数を、以下の通りに転送する。
メモリアクセスは、示されたメモリバイトアドレスで(アドレス操作を適用後、以下を参照)開始し、示されたバイト数の間進行し、ページの最後(バイト15)からページの最初(バイト0)まで送り込む。
レジスタファイルアクセスは、レジスタファイルの4つのクワタ詰めバイトに制約される。アクセスは示されたレジスタで開始し、4つのクワタ詰めバイトを通って進んでから、アクセスされた第1のクワタ詰めバイトのバイト0に送り込む。
いったん転送が起動されると、それは1メモリサイクル内で実行する。
PEメモリからLEEフィードバックバッファへの読み取り
メモリページの全てまたは一部は、MEEフィードバックバッファにコピーされてよい。ページアドレスは、メモリベースレジスタ機構(以下を参照)で修正できる。ページの各クワタ詰めバイトは、MEEフィードバックバッファのA部分、B部分、またはC部分の任意のサブセットにコピーすることができ、フィードバックバッファプッシュは、それぞれのクワタ詰めバイトの後に使用できる。
サイクル優先順位
メモリリフレッシュは、他の全てのメモリ動作に対して優先順位を有する。ロード/記憶対I/Oチャネルの優先順位は、ステータスレジスタビットで選択される。
リフレッシュ
PEメモリは動的であり、リフレッシュされなければならない。これは、全てのページがリフレッシュ期間のたびに読み取られることを保証することによって、ソフトウェア内で達成されてよい。しかしながら、好ましい方法は、アーキテクチャ内でのハードウェアリフレッシュを含むことである。
アドレス操作
ロード/記憶コントローラ1045によって使用されているメモリアドレスは、以下の2つの機構のどちらか、または両方で操作する命ことができる。
メモリベースレジスタ(MBR)
メモリベースレジスタは、命令の中のあるビットにより条件が設けられる、適切な命令によって指定されるページアドレスにオプションで追加される。
各スレッドは、アレイコントローラの中に自身のMBRを有する。スレッドは、自らのMBRに付帯演算命令をロードする。MBRは、EPUバス上で読み取ることができる。
アドレス索引付け
命令の索引ビットが設定されると、命令のメモリのクワタ詰めバイトアドレスの低い5つのビットが、PEごとに、PEのPレジスタの低い5つのビットと論理和される。
チャネルコントローラ
チャネルコントローラ108に関する詳細な説明を以下に続ける。前述されたように、チャネルコントローラは、外部メモリとPEメモリの間でデータの転送を制御する。各処理ブロック106では、転送エンジンが、ブロックI/Oレジスタとバスアーキテクチャ間で、直接メモリアクセスDMA転送を実行する。チャネル命令に応じて、データ転送はビニングユニット1069を通過するか、あるいは直接的に外部メモリへ/外部メモリから移動する。
チャネルコントローラ108は、3つの根本的な部分に分割される命令セットの上で動作する。
外部メモリからPEメモリにデータを転送する読み取り命令
PEメモリから外部メモリにデータを転送する書込み命令
チャネルおよびビニングユニット内でレジスタ値を操作する付帯演算命令
スレッドマネージャ102からの命令は、低優先順位、高優先順位およびビンナー命令に押し込まれる。各FIFOが、スレッドマネージャ102に送信される自身の「完全」表示を有し、その結果、完全命令FIFOでブロックされたスレッドは、別のスレッドが、いっぱいではない命令FIFOの中に命令を押し込むのを妨げないだろう。
図8は、チャネルコントローラ108の動作を制御する命令ステート機械を示す。
全ての命令は、アイドル状態1081から起動される。最高優先順位準備完了命令が起動され、そこでは命令の迅速さは、事前に設定された規則に従って決定される。
チャネル命令には3つの優先順位がある。アドレス指定ストライド(Strided)命令は、高優先順位または低優先順位として指定できる。ビニング命令は、つねに非常に高い優先順位として処理される。低い方の優先順位命令は、高い方の優先順位命令によって割り込まれ、あるいは先取りされてよい。転送命令が先取りされると、PEページレジスタのコンテンツは、それらが出現したPEメモリページに返される。それから、それらは、高い方の優先順位命令が完了したそれ以降のときに再起動することができる。
アドレス指定された命令とは、PEメモリと、あらゆるPEが、それが読み取るまたは書き込むことを希望するデータの外部メモリアドレスを指定する外部メモリの間でのデータ転送である。
データ転送は、統合プロセスの管理下にあり、その結果、例えば、それぞれが32バイトパケットアドレスの異なるバイトに書き込む4つのPEが、32バイトの単一メモリアクセスを生じ、その任意の部分集合は、外部メモリに書き込まれる有効なデータを含んでよい。また、同じパケットアドレスからデータを読み取ることを希望する任意の数のPEは、外部メモリへの単一アクセスの中にそのアクセスを統合させる。
書込みアドレス指定命令においては、各PEが、それが書き込まれなければならない外部メモリアドレスとともに8バイトのデータ、およびバイトイネーブルとして役立つ8ビットを供給する。同じパケットアドレスにデータを書き込むことを希望する任意の数のPEは、そのアクセスを外部メモリへの単一アクセスに統合させる。
読み取りアドレス指定命令においては、各PEは、それが読み取ることを希望するデータのアドレスを供給し、16バイトのデータ(メモリパケットの2分の1)がPEに送達して戻される。
「ストライド(Strided)」メモリアクセスとは、PEメモリと、各PEデータの外部メモリアドレスが転送エンジンによって生成される外部メモリの間でのデータ転送である。アドレスは、所定のステップサイズでベースレジスタから一命令ずつ実行され、その結果選択されたPEは、間隔をあけて配置された外部メモリアドレスへ送信または外部メモリアドレスから受信する。例えば、ステップサイズが1に設定される場合には、選択されたPEは連続メモリアドレスにアクセスする。これは、PEが、アドレス情報のためにそのいくらかを使用する代わりに、その全てのI/Oページレジスタデータを使用できるという点で「アドレス指定」転送に優る優位点を有する。転送のためのベースアドレスは、チャネルコントローラ命令とともに指定、またはEPUによって書き込むことができる。
書込みストライド(Strided)命令の場合、それぞれのPEが16バイトのデータを出力する。2つのPEからのデータが、1つの32バイトのデータパケットに組み込まれ、転送エンジンによって生成される外部メモリアドレスに書き込まれる。その結果、パケットは、増分するアドレスに書き込まれる。オプションでは、命令の中で、それぞれのPEのデータが書き込まれた外部アドレスは、PE I/Oページレジスタに戻すことができる。
潜在的な読み取りストライド命令の場合、各PEは、その結果として、転送エンジンの制御下で一命令ずつ実行されたアドレスから16バイトのデータを受信する。
ビニング命令は、PEメモリと、データが、ブロックI/Oバスと外部メモリへのシステムバス間の各コアブロックのビニングユニットを通って流れる外部メモリの間のデータ転送に関する。ビニングユニットは、特殊命令で設定される数多くの制御レジスタを備える。それは、外部メモリに書き込まれる、または外部メモリから読み出される全てのデータの外部メモリアドレスを生成する。それは、それらが該当する領域の中へのビニングプリミティブのサポート用、および外部メモリに保持される複数のビンリスト(BINリスト)をマージするための論理回路を含む。それは、また、外部メモリ内のビンリストの管理も実行する。
PEとビニングユニット間のデータフローは、FIFO内でバッファに入れられる。
BINNING機能
前述されたように、各処理ブロック106は、ブロックI/Oバスとシステムバス6の間で取り付けられている、関連付けられたビニングユニット1069を有する。ビニングユニットは、外部メモリ内のビンリストのプリミティブポインタの読み取りおよび書込みに対する特殊なサポートを提供する。
ビニングプロセスは、大部分のホストシステムの要件のためにジオメトリフェーズとラスタ化フェーズの間でプリミティブ命令を維持しなければならない。両方のフェーズともブロック並列であるため、任意のブロックとビンのいずれかの間、および任意のビンと任意のブロックの間でデータを転送するための機構がある必要がある。これは、ジオメトリデータを処理している処理ブロック106ごとに1つ、領域ごとに複数のビンリストを作成することによって実現される。これにより、ジオメトリ出力フェーズがブロック並列モードで進行できるようになる。それから、ラスタフェーズ中に、各領域は、ただ1つの処理ブロック106によって処理され、その領域のためのメモリ内の複数のビンリストのマージ並べ替えが実行される。
ビニングユニット1069は、ポインタを扱うだけである。プリミティブデータ自体は、通常のチャネル書込み動作を使用してメモリに書き込むことができる。それは、ビンナーハードウェアがいったん各PEにプリミティブポインタを提供すると、通常のチャネル読み取り動作を使用して読み取ることもできる。
どのくらい多くのプリミティブが各ビンに書き込まれるのかに関するレコードが保たれ、その結果、領域はブロック並列ラスタ化のために類似したサイズのグループに並べ替えることができる。加えて、プリミティブ「属性」フラグは領域ごとに記録される。これは、領域内のあらゆるプリミティブの数多くの画定されたフラグのビット単位の「論理和」を調べることによって、ラスタ化および領域ごとの陰影コードの最適化を可能にする。このようにして、類似した処理を必要とする領域は、処理時間の縮小を生じる並列処理のために分類することができる。
PEアレイ1061がプリミティブのためのバウンディングボックスを計算した後に、ビンナーハードウェアがPEアレイ1061からbinitizationプロセスをオフロードし、それを純粋なI/O動作に変換する。これにより、それを、ジオメトリデータの処理の次のバッチなどの追加のデータ処理と重複できるようになる。
書込み−ジオメトリパスの最後でプリミティブポインタを書き込むと、PEはポインタ、フラグ、およびチャネル上のプリミティブのためのバウンディングボックス情報を出力する。ビニングユニット1069は、ポインタを、そのプリミティブのためのバウンディングボックスに含まれるあらゆる領域のビンリストに付加する。それは、その領域のためのプリミティブカウントおよび属性フラグも更新する。ビンナーは、その処理ブロック106専用のビンリストを維持する責任があり、ビンリストの状態は複数のジオメトリパス全体で保存される。
読み取り−ビニングユニット1069は、ある特定の領域のために、要求するPEごとに1つ、命令されたプリミティブポインタを処理ブロック106に供給する。それはその領域の複数のビンリストを横断し、マージ並べ替えは、元のプリミティブ命令を復元するためである。ビンリスト状態は、複数のラスタ化パス全体で保存される。
ビニングメモリ組織
ビンリストは、リストデータをメモリに出力することによって、外部メモリ内で作成される。ビンリストは、メモリ内のビンのコンテンツの場所を示す。このようなリスト構造の保守は、ポインタアレイの形を取る追加の記憶ユニットを必要とする。ビンナーハードウェアは、メモリ内のこれらの構造に直接的にアクセスする。
ビニングハードウェア
ビニングハードウェアは、図9に詳細に示されており、PEアレイ1061が、プリミティブポインタを外部メモリに対して読書きできるようにするために必要とされるbinnitizationプロセスに関係する計算を処理する責任を負う。
命令デコーダ1101は、チャネルコントローラ108から命令を受け取り、ステート機械をトリガして動作させる。ステート機械1102は、プリミティブポインタを外部メモリから読み取る、または外部メモリに書き込むなどのある特定の機能を実行するためにビニングユニットの他の部分を配列する論理回路である。ステート機械1102は、複数の通信中のステート機械として実現されてよい。ビニングユニットの他の全ての部分への制御信号は、図示しない。
binnitization機能は、現在のビニングコンテキスト、つまり外部メモリ内のビンリストの場所、次にラスタ化する領域、動作モード等を定める内蔵レジスタ1103の集合に従ってビニングユニットによって実行される。この「状態」レジスタ1103の集合は、チャネルコントローラ108、ブロックI/Oバス、およびEPU8に複数移植(multiple ported)される(つまり、同時に使用できる数多くのポートを有している)。
ブロックI/Oバスとビニングユニット1069自体の間には、ビニングユニット1069の一部と見なされるデータバッファFIFO1104がある。データバッファ1104の目的とは、PE I/Oページレジスタとビニングユニット1069の間で流れるデータをバッファに入れ、ビニングユニット1069の不確定のタイミングを円滑にすることである。データは、バッファの奥行きに依存するサイズのバーストで、ビニングユニット1069に/へ転送される。ビニングユニット1069は、このバッファの状態をブロック制御論理の残りに提示し、全てのビニングユニットバッファ1104のステータスを見ることによって、チャネルコントローラ108は、効率的にビニングユニット1068に対するデータ転送バーストを予定することができる。
各ブロックのビニングユニット1069は、EPU8への専用のレジスタセットインタフェース1105を有する。EPU8は、インタフェース1105を介して、ビニングユニット1069タスクの次に示すセットを実行する。
初期化
ビンリストメモリの割当て
コンテキスト切替え時のビニング状態の保存および復元
ビニングユニット1069がBinner書込み命令を実行しているとき、それはビンリストの作成のために割り当てられる未知の量のメモリを必要とする。それは、このメモリにEPU8から一度に一部分を要求し、それを必要としているどのビンリストにもそれを割り当てる。ビンナーユニット1068は、32バイトの小さなチャンク(部分)をビンリストに割り当てるが、これは、それがこのレベルで割り当てられなければならないのであれば、不寛容にEPUをロードするだろう。代わりに、EPUは、それが適切であると決定するどのようなサイズ(例えば、64kBytesであるが、32バイトの任意の便利な倍数)であれデータの大きな部分を提供し、ビンナーユニット1068はこれを、チャンク発生器1106を使用して個々のチャンクに分割する。EPUからの大量のデータの転送は、EPUにとってさらに効率的であり、ビニングユニット1069の少量のデータの処理は、ビニングユニット1069にとってより効率的である。
ポインタ書込み中、PEからのプリミティブデータは、レジスタセット1107の中に入れられ、必要に応じてデータ論理回路1112に渡される。
Yステッパ1108は、y軸領域座標を、binitizationプロセスの一部としてポインタ書込み中にプリミティブバウンディングボックス全体で一命令ずつ実行するために使用される。それは、等式比較器付きのカウンタとレジスタの組を備える。
Xステッパ1109は、X軸領域座標を、binitizationプロセスの一部としてポインタ書込み中にプリミティブバウンディングボックス全体で一命令ずつ実行するために使用される。
それは、等式比較器付きのカウンタとレジスタの対も備える。しかしながら、Xステッパは、Yステッパ1108の値のたびに値の同じシーケンスも実行しなければならないため、カウンタは、初期値を記憶する余分なレジスタからロードおよび再ロードされる。
ポインタ読み取りプロセス中に領域のブロックビンリストをマージするために、専用のハードウェアセクション1110が提供される。プリミティブがビニングプロセスを通して命令できるように、バッチidコードがビンリストに追加される。ホストはジオメトリが正しい順序で戻されることを必要とするため、バッチidコードはジオメトリ順序付けに関係する。ステート機械1102の制御下で、ブロックカウンタ1117に補助され、ビニングユニット1069は、どのビンリストが最低のバッチIDを有するのかを評価し、そのリストからのポインタ読み取りを命令する。
追加バッチIDがそのリスト内で遭遇されると、あるいはNULL終止プログラムが遭遇されると、ブロック選択は評価し直される。ブロックカウンタ1117は、それが(ビンリスト選択ユニット1110に関連して)処理する次のビンリストを評価しているときに、ステート機械1102にループカウンタを提供する。
データ論理回路ユニット1112は、ビニングユニット1069のデータ処理ブロックである。それは、ポインタを増分し、属性フラグをマージし、データキャッシュ1115を介した外部メモリへの書込みのために異なるデータ型をフォーマットすることができる。
領域番号ユニット1116は、X/Yステッパ1108/1109から出力されたX領域座標およびY領域座標から線形領域番号を計算する。この数は、データ論理ユニット1112および状態レジスタ1103の出力とともに、ビンリストアレイエントリのためのメモリアドレスを計算するために、アドレス計算ユニット1113によって使用される。
データキャッシュ1115は、外部メモリバスから全てのメモリ参照を減結合するために具備される。それは、外部メモリ帯域幅を削減するため、およびデータが到着するのを待機することにより引き起こされるだろう機能停止時間を短縮するため、ビニングユニットメモリアクセスのアドレスコヒーレンスを利用する。
データキャッシュ1115は、アドレスタグセクション1114を有する。これは、任意の特定の外部メモリアクセスがデータキャッシュの中でヒットなのか、あるいは失敗なのかを、ビニングユニット1069に示す。失敗の時、ビニングユニット1069は、必要とされるデータパケットがメモリからフェッチされるまで機能停止される。
処理要素
図14は、図5および図10に図示されている処理要素の一部を形成する、プロセッサユニット1061aおよびPEレジスタファイル1061bを示す。PE1061は、マルチプレクサ210および212(AおよびB)を介して(R、S、VおよびPと示される)8ビットレジスタ202、204、206,208のブロックからデータ値を受け取るために接続される論理演算ユニット(ALU)214を含む。
PEとその関連付けられたPEメモリ間でデータをバッファに入れるため、およびプロセッサユニット1061aがその上で処理しているデータを一時的に記憶するために動作するPEレジスタファイル1061b。
RSVPレジスタ202、204、206、208は、ALU214にオペランドを供給するために動作する。Aマルチプレクサ210は、RレジスタおよびSレジスタからデータ値を受け取るため、それらのレジスタ値のどれがALU214に供給されるのかを制御する。Bマルチプレクサ212は、VレジスタとPレジスタから、およびMEE1062からもデータ値を受け取るために接続されるため、それらの値のどれがALUに供給される必要があるのかを制御する。
プロセッサユニット1061aは、さらに、Sレジスタ、VレジスタおよびPレジスタから出力されるデータ上で左シフトまたは右シフトを実行できるシフタ200を含む。
Rレジスタは、その過去の値を保持することができるか、あるいはレジスタファイルからバイト、またはALUの結果をロードできる。ALU結果は幅10バイトであるため、Rレジスタは、ブース乗算ステップのために、最初の8ビット(ビット7から0)、またはビット9から2を受け取ることができる。ブース増加は、1クロックサイクル内で増加結果を提供する周知の方法である。
Sレジスタは、その過去の値を保持することができるか、あるいはその過去の値のシフトされたバージョンをロードできる。Sレジスタは、ALU結果、レジスタファイルから1ビット、または(ブース乗算ステップのための)Sレジスタの過去の値の高い6ビットと連結されたALUからの低い2ビットもロードすることができる。
VレジスタおよびPレジスタは、ともにALU結果、またはレジスタファイルからのバイトの両方をロードできる。VレジスタのLSBは、MEEフィードバック転送に関与しているプロセッサ要素の集合を決定するために使用される。Pレジスタの5つの低いビットは、メモリアクセス内のメモリアドレスを修正するために使用される。
レジスタのいずれかがALU24にデータを提供することができるため、4つのレジスタR、S、VおよびPを使用することにより、システムには、過去に既知のシステムに優る改善された性能が提供される。さらに、レジスタのいずれかは、システムの汎用性を高め、浮動少数点動作にさらに優れたサポートを提供する、PEレジスタファイル1061bからのデータをロードすることもできる。Rレジスタ入力は絶対にシフトされないため、Rレジスタは、浮動少数点数の指数を記憶し、修正するために使用できる。
ALU214は、アレイコントローラ(図示せず)から命令を受け取り、その出力をPEレジスタファイル1061bに供給する。PEレジスタファイル1061bは、PEが即座に使用するためにデータを記憶するために使用され、例えば、レジスタファイル1061bは、長さ16ビットの16のワードを記憶できる。
レジスタファイルに書き込まれるデータは、書込みポートを介して転送され、レジスタファイルから読み取られるデータは読み取りポートを介して転送される。データは、ロード/記憶コントローラの制御下でのロード/記憶ポートを介してPEメモリのレジスタファイルに、およびレジスタファイルから転送される。
PEレジスタファイル1061bは、数多くの方法で、その書込みポートを通して記憶されるデータを受け取ることができる。つまり、16ビット値は要素の左隣または右隣を形成するプロセッサ要素から受け取ることができるか、16ビット値はステータス/イネーブルレジスタから受け取ることができるか、あるいは8ビット値がALU結果から受け取ることができる。ALU結果がレジスタファイルに供給されるケースでは、8ビット値は、関係するレジスタファイルエントリの高バイトと低バイトの両方にコピーされる。
書込みポートは、データのソースに基づいて制御され、通常、イネーブルスタックのコンテンツを介して制御される。イネーブルスタックコンテンツに関係なく、レジスタファイル書込みを強制することができる。
プロセッサユニット1061aは、ALU214がいつデータをプロセスできるのかを決定するために使用されるイネーブルスタックも含む。イネーブルスタックは、ALUがそれに供給されるデータに関して動作できるかどうかを示す8つのイネーブルビットを提供する。好ましい例では、ALU214は、全ての8ビットが論理1に設定される場合にだけ動作するだろう。イネーブルビットのスタックは、ALUがネスト化された条件付き命令を実行する必要があるときに特に有効である。このようなネスト化された命令は、IF、ELSE、ENDIF命令シーケンスで最も頻繁に発生する傾向がある。
複数ビットのイネーブルスタックをハードウェア内で提供することにより、ソフトウェアが、ALUがネスト化された命令シーケンスを処理しているときに、単一イネーブルビットのコンテンツを保存し、ロードする必要性を取り除くことができる。
PEレジスタファイル161bの読み取りポートおよび書込みポートは、16ビットデータワードを、隣接するPEの少なくとも1つのPEレジスタファイルにコピーできるようにする。
ロード動作および記憶動作は、アレイコントローラからマイクロコード化されたALU命令と並列に発行することができる。PEレジスタファイル1061bは、ALUがその中で直接的にメモリデバイスにアクセスした過去のシステムに優るいくつかの性能の優位点を提供する。PEレジスタファイル1061bは、メモリに対するプロセッサ要素より高速のアクセスを頻繁に使用されるデータ値に与えるか、あるいはメモリからメモリアーキテクチャが提供することができる。加えて、データが、さらに処理速度およびプログラミングの柔軟性を補助するレジスタファイル内で並べられる順序に対する制約はない。
図15は、処理要素、およびその要素へのデータ入力回線と出力回線を示すブロック図である。過去に記述されるように、処理要素は、プロセッサユニット1061a、PEレジスタファイル1061b、およびPEメモリユニット1061cを含む。メモリユニット1061cは、好ましくは、16バイトから成る128ページを記憶することができる。代わりに、その他のメモリ構成がPEメモリユニットに使用できるだろう。データ項目は、メモリ読み取りデータ回線およびメモリ書込みデータ回線1078と1079経由でPEレジスタファイル1061bとPEメモリユニット1061cの間で転送できる。
加えて、データは、プロセッサ要素の中から、および実際には、その中に要素が位置するプロセッサブロックの中から、ブロックI/Oデータアウトバス1067dを経由して転送でき、バス1067c内のブロックI/Oデータを経由してプロセッサブロックの中に転送できる。アドレストランザクションIDおよびデータトランザクションID情報は、バス1067aと1067bを経由してプロセッサブロックに転送できる。MEEフィードバックデータは、PEメモリユニット1061cまたはPEレジスタファイル1061bから、MEEフィードバックデータアウトガス1064を経由して、MEEフィードバックバッファ(図示せず)に転送される。
図16は、ブロックI/Oインタフェースをさらに詳細に示す。PEメモリ読み取りおよび書込みデータバス1078と1079は、レジスタと処理装置とメモリユニットの間でデータを転送するために、ブロックI/Oレジスタファイル1071と接続する。処理要素から読み出されるデータは、ブロックI/Oレジスタファイル1071からブロックI/Oデータアウトバス1067cの上に出力され、関係する処理要素の中に読み込まれるデータは、バス1067d内のブロックI/OからブロックI/Oレジスタファイル1071に入力される。
メモリへのアクセスを必要とする処理要素は、表示フラグまたはマークビットを設定することによってこれが当てはまることを示す。それから、第1のこのようなマーキングされたPEが選択され、それがアクセスを必要とするメモリアドレスは、処理ブロックの処理要素の全てに伝送される。アドレスは、対応するトランザクションIDとともに伝送される。アクセスを必要とする(つまり、表示フラグセットを有する)それらの処理要素は、伝送されたアドレスを彼らがアクセスを必要とするアドレスと比較し、比較が、同じアドレスがアクセスされなければならないことを示す場合には、それらの処理要素はそのメモリアクセスのトランザクションIDを登録し、表示フラグをクリアする。
それから、(選択されたPEを含む)メモリへのアクセスを必要とするそれら全てのPEは、必要とされるアドレスを、アドレス比較ユニット1073を経由してブロックI/Oインバス1067dで伝送されるアドレスと比較する。アドレス比較の結果が、選択されたアドレスが使用のために必要とされることを証明する場合には、バイトマスクが外され、関係するメモリアクセスのためのトランザクションIDがトランザクションIDレジスタ1075の中に記憶される。アドレストランザクションIDは、アドレストランザクションIDバス1067aで供給される。後に、同じトランザクションIDを搬送する必須データが、ブロックI/Oデータインバス1067dに沿って戻った。同時に、またはデータが戻される直前に、トランザクションIDは、データトランザクションIDバス1067bに沿って戻され、プロセッサ要素の全てが、戻されたデータトランザクションIDを、比較器1076によってトランザクションIDレジスタ1075に記憶されるトランザクションIDと比較する。比較が、戻されたトランザクションIDが記憶されているトランザクションIDに同等であることを示すと、ブロックI/Oデータインバス1067dで到着するデータは、PEレジスタファイル1061bの中に入力される。トランザクションIDが処理ブロックに戻されると、処理要素は、データを回復するために、記憶されているトランザクションIDを入信トランザクションIDに比較する。
単にアクセスされたアドレス情報を記憶する代わりにトランザクションIDを使用することによって、複数のメモリアクセスを搬送してから、任意の順序で戻すことができるようになる。
ブース増加は、図17にさらに詳細に図示されているBマルチプレクサ212を使用して達成される。Bマルチプレクサ212は、VレジスタとPレジスタから、およびMEE1602から入力230を受け取る。Bマルチプレクサ212はブース再コード化テーブル218およびシフトコンプリメントユニット220を含む。ブース再コード化テーブル218は、Sレジスタの2つの最下位ビットから、およびブースレジスタ(Sレジスタ(s reg)およびブースレジスタ(Boothreg))から入力224、226を受け取る。Booth再コード化は、これらの入力に基づき、ブース再コード化テーブルがこれらのビットを、シフトコンプリメントユニット220に送られる、シフトビット、トランスポートビットおよびインバート制御ビットに変換する。シフトコンプリメントユニット220は、シフト動作、トランスポート動作、およびインバート動作を、Vレジスタのコンテンツに適用する。シフト動作はVレジスタを左に1ビットシフトし、0でシフトし、トランスポートビットおよびインバートビットが、考えられるシフトされた結果をトランスポートさせる、インバートさせる、またはゼロにさせる、あるいはそれらの組み合わせを引き起こす。
図18は、図16に図示されているプロセッサ要素のALU214のブロック図を示す。ALU214は、AマルチプレクサおよびBマルチプレクサ210と212から10ビットの入力234を受け取り、BoothCarryInレジスタとCarryRegレジスタから入力244と246も受け取る。ALU24は、制御ユニットから命令も受け取る。ALU214は、桁上げ伝搬ユニット236、桁上げ生成ユニット238、および桁上げ選択ユニット242を含む。ALUは、ALU結果出力を判断するための排他的論理和(XOR)ゲート250も含む。CarryChainユニット240は、桁上げ伝搬ユニット236および桁上げ生成ユニット238から入力を受け取り、結果をXORゲート250に出力する。
ALU214内の多様なユニットは、制御ユニットによって発行される命令を実行するために動作する。

Claims (206)

  1. 処理要素のSIMD(単一命令複数データ)アレイを備えるデータ処理装置であって、前記処理要素が、複数の処理ブロックに作動可能に分割され、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能である、データ処理装置。
  2. 共通受信命令に従ってそれぞれのデータ項目を処理するように作動可能である処理要素のアレイを備えるデータ処理装置であって、前記処理要素が、少なくとも1つの処理要素を有する複数の処理ブロックに作動可能に分割され、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能である、データ処理装置。
  3. 前記処理ブロックの中の少なくとも1つが、欠陥のある処理ブロックの代わりにデータ項目のグループを処理するように作動可な冗長ブロックである、請求項1または2記載の装置。
  4. 処理ブロックに生じる欠陥を検出し、かつこの処理ブロックのデータ処理機能を冗長処理ブロックに転送するように作動可能な欠陥検出手段を備える、請求項3記載の装置。
  5. 各処理ブロックには、関連するブロックの欠陥処理要素の代わりにデータ項目を処理するように作動可能な少なくとも1つの冗長処理要素が装備されている、前述の請求項のいずれか一項に記載の装置。
  6. 処理ブロックの前記処理要素が、その中の所定数の処理要素を有するグループに配置され、各々のこのようなグループが、前記グループの欠陥処理要素を取り換えるための少なくとも1つのこのような冗長処理要素を含む、請求項5記載の装置。
  7. 処理要素に生じる欠陥を検出し、かつこの処理要素のデータ処理機能を冗長処理要素に転送するように作動可能な欠陥検出手段を備える、請求項5または6記載の装置。
  8. 各処理ブロックが、各処理要素のための数式を評価し、かつそれぞれの評価を前記処理ブロックの前記処理要素に供給するように作動可能である、前述の請求項のいずれか一項に記載の装置。
  9. 前記ブロックの各処理要素のための式ax+by+cを評価するように作動可能であり、各処理要素が、特定の(x,y)値を割り当てられ、かつa、bおよびcが式評価器に供給された係数である、請求項8記載の装置。
  10. 前記係数a、bおよびcが、前記処理ブロックの前記処理要素によって式評価器に供給される、請求項9記載の装置。
  11. 前記係数a、bおよびcが、前記処理ブロックの外部にある供給源によって前記式評価器に供給される、請求項9記載の装置。
  12. 前記処理要素によって処理される命令項目およびデータ項目が、互いから別々に前記処理要素に供給される、前述の請求項のいずれか一項に記載の装置。
  13. 処理ブロックの処理要素によって処理されるデータ項目が、この処理ブロックの処理要素によって供給される、前述の請求項のいずれか一項に記載の装置。
  14. 各処理要素が、データ項目および命令項目を受信し、受信命令項目に従って作動可能であるプロセッサユニットと、前記プロセッサユニットから受信されたデータ項目を記憶するメモリユニットと、前記プロセッサユニットと前記メモリユニットとの間に配置され、前記プロセッサユニットおよび前記メモリユニットからのデータ項目を記憶するように作動可能であり、これらのユニットの他方に転送し、かつ前記処理要素の前記プロセッサユニットによって処理するためのデータ項目を記憶するように作動可能であるレジスタファイルとを含む、前述の請求項のいずれか一項に記載の装置。
  15. データ項目および命令項目を記憶する外部メモリと、
    各処理要素と前記外部メモリとの間のデータ項目および命令項目の転送を制御するコントローラ手段とを備え、
    前記または各処理要素が、
    データ項目および命令項目を受信するように接続され、かつ前記命令項目に従って前記データ項目を処理するように作動可能なプロセッサユニットと、
    前記プロセッサユニットに入力するためのデータ項目を一時的に記憶する複数の記憶レジスタであって、前記記憶レジスタの少なくとも1つがオフセット値を記憶するように作動可能である記憶レジスタと、
    データ項目と外部メモリアドレスを示すアドレスデータを記憶するメモリユニットと、
    データ項目を記憶するレジスタファイルであって、前記レジスタファイルが、前記プロセッサユニットと前記メモリユニットとの間に接続され、これらのユニットの他方に転送するためにこれらのユニットのいずれかからデータ項目を受信し、かつ前記処理要素の外部のメモリにデータ項目を転送し、かつ前記プロセッサユニットによって処理するためのデータ項目を記憶する、レジスタファイルとを備え、
    前記コントローラが、オフセット値を前記記憶レジスタから検索し、前記オフセット値を所定の基準アドレスと結合し、計算された内部アドレスを生じさせ、前記内部メモリの前記計算された内部アドレスに記憶された外部アドレスデータを検索し、かつ前記外部アドレスで前記外部メモリにアクセスするように作動可能である、前述の請求項のいずれか一項に記載のデータ処理装置。
  16. 前記コントローラが、記憶データまたは命令項目を外部メモリの外部アドレスから検索し、前記検索されたデータまたは命令項目を前記処理要素に転送するように作動可能である、請求項15記載のデータ処理装置。
  17. 前記コントローラが、前記処理要素からのデータ項目を前記外部メモリアドレスに記憶するための前記外部メモリに転送するように作動可能である、請求項15記載のデータ処理装置。
  18. 各処理要素が、
    命令項目に従ってデータ項目を処理するプロセッサユニットと、
    前記処理要素がデータ項目を処理するために使用可能であるかどうかを指示するイネーブルレジスタとを備え、
    前記イネーブルレジスタが、複数のインディケータを含み、各々が前記処理要素の使用許可状態または使用禁止状態を示すように作動可能であり、前記インディケータ全てが前記使用許可状態を示す場合、前記処理要素がデータ項目の処理のために利用可能である、前述の請求項のいずれか一項に記載のデータ処理装置。
  19. 前記イネーブルレジスタの各インディケータが、関連される前記処理要素のための条件付処理ステップの状態を示すように作動可能である、請求項18記載のデータ処理装置。
  20. 前記イネーブルレジスタがハードウェアレジスタによって備えられる、請求項18または19記載のデータ処理装置。
  21. 前記アレイの各処理要素が、少なくとも1つの隣接処理要素にデータ項目を直接転送するように作動可能であり、かつ各処理ブロックが、データ項目を他の処理ブロックの処理要素に直接に転送するように作動可能である処理要素を含む、前述の請求項のいずれか一項に記載のデータ処理装置。
  22. 各処理要素が、データ項目および命令項目を受信し、かつ受信命令項目に従って受信データ項目を処理するように作動可能であるプロセッサユニットと、データ項目を記憶するメモリユニットと、データ項目を記憶し、かつデータ項目を前記プロセッサユニットおよびメモリユニットに転送するために接続されるレジスタファイルとを含み、前記レジスタファイルが、前記処理要素の外部のメモリにデータ項目を転送するために接続され、かつ隣接処理要素にデータ項目を転送するために接続されている、請求項21記載のデータ処理装置。
  23. 前記処理要素が、単一集積回路上に備えられている、請求項21または22記載のデータ処理装置。
  24. 各処理ブロックの前記処理要素が、前記集積回路でそれぞれ直列に接続され、前記直列の最初の処理要素を除いて、各処理要素が、データ項目を前記直列の前の処理要素に直接転送するように作動であり、かつ前記直列の最後の処理要素を除いて、各処理要素が、データ項目を前記直列の次の処理要素に直接転送するように作動可能である、請求項23記載のデータ処理装置。
  25. 前記処理ブロックの前記処理要素が、前記集積回路のそれぞれの2次元アレイに接続され、各処理要素が、データ項目を前記アレイの少なくとも3つの隣接処理要素に転送するように作動可能である、請求項23記載のデータ処理装置。
  26. 前記処理ブロックが直列に接続され、処理ブロックの最後の処理要素が、データを前記直列の他の処理ブロックの最初の処理要素に転送するように作動可能である、請求項24または25記載のデータ処理装置。
  27. 前記処理ブロックが直列に接続され、処理ブロックの最後の処理要素が、前記直列の前記最後の処理ブロックを除いて、データを前記直列の前記次の処理ブロックの最初の処理要素に転送するように作動可能である、請求項24または25記載のデータ処理装置。
  28. 複数の命令ストリームの各々に対する命令項目を検索する手段と、
    前記複数の命令ストリームを結合してシリアル命令ストリームにする手段と、
    前記シリアル命令ストリームを処理要素のアレイのデータ処理を制御する処理コントローラまたは前記処理要素へおよび前記処理要素からのデータの転送を制御するデータ転送コントローラのいずれかに配分する手段とを含むコントローラを備える、前述の請求項のいずれか一項に記載のデータ処理装置。
  29. 検索された命令項目を記憶するキャッシュメモリを含む、請求項28記載のデータ処理装置。
  30. 各々が各命令ストリーム用であり、それぞれの命令ストリームを制御する複数の命令ストリームプロセッサと、
    命令ストリーム間の同期を制御するセマフォコントローラと、
    前記命令ストリームの各々に関する状態情報を供給する状態ブロックと、
    状態情報を受信するように接続され、かつ前記命令ストリームのどれがアクティブであるべきであるかを決定するように作動可能であるスケジューリング手段とを備える、請求項28または29記載のデータ処理装置。
  31. 各命令ストリームが、相対優先順位レベルを割り当てられる、請求項28、29または30記載のデータ処理装置。
  32. 前記複数の別個の命令ストリームの実行間の同期を保持する手段を含むセマフォコントローラを備える、前述の請求項のいずれか一項に記載のデータ処理装置。
  33. セマフォをプリセットする手段を有する、請求項32記載のデータ処理装置。
  34. セマフォ値を減分する手段を有する、請求項32または33記載のデータ処理装置。
  35. セマフォ値を増分する手段を有する、請求項32乃至34記載のいずれか一項に記載のデータ処理装置。
  36. 前記セマフォを複数のグループに配列する手段を有する、請求項32乃至35のいずれか一項に記載のデータ処理装置。
  37. 前記セマフォをグループに配列する手段が、前記セマフォを増分できるその実行ユニットにより制御される、請求項36記載のデータ処理装置。
  38. 共有リソースに対する複数の命令ストリームのアクセスを制御する手段を有する、請求項32乃至37のいずれか一項に記載のデータ処理装置。
  39. プロセッサによって出された命令に応じてセマフォを増分および/または減分する手段を有する、請求項32乃至38のいずれか一項に記載のデータ処理装置。
  40. 命令を受信するように接続された手段と、受信命令を関連する命令に応じて処理要素のアレイに転送するように作動可能なルーティング手段とを含むアレイコントローラを備える、前述の請求項のいずれか一項に記載のデータ処理装置。
  41. 前記アレイコントローラが、受信命令をデータ処理命令およびデータ転送命令に分離する命令ランチャを備える、請求項40記載のデータ処理装置。
  42. 前記ルーティング手段が、
    前記処理要素によるデータの処理に関するデータ処理命令を処理する処理要素命令シーケンサと、
    前記処理要素へおよび/または前記処理要素からのデータ項目の転送に関するデータ転送命令を処理するデータ転送コントローラとを備える、請求項40または41記載のデータ処理装置。
  43. 前記処理要素命令シーケンサが、マイクロコード命令をマイクロコード命令が前記アレイのデータ処理機能に関連する前記処理要素のアレイに転送するように作動可能である、請求項42記載のデータ処理装置。
  44. 各処理要素がさらにレジスタのセットを備える、かつ前記命令ランチャが、前記処理要素のどのレジスタが命令によってアクセスされるかを決定する手段と、前記命令が実行されている間に他の命令がこれらのレジスタにアクセスすることを防止する手段とを含む、請求項40、41、42または43記載のデータ処理装置。
  45. 前記命令ランチャが、一旦命令が完了したとすると他の命令による使用のためのレジスタを取り外す手段を有する、請求項44記載のデータ処理装置。
  46. どのレジスタがデータ処理命令によってアクセスされるかを決定する際に前記命令ランチャを助ける命令テーブルをさらに備える、請求項40乃至45のいずれか一項に記載のデータ処理装置。
  47. 前記命令ランチャが、シリアル命令の出現を保持すると同時に前記処理要素命令シーケンサと前記データ転送コントローラとの間の並列動作も保持する、請求項40乃至46のいずれか一項に記載のデータ処理装置。
  48. 前記ルーティング手段が、前記プロセッサユニットレジスタのいずれかが命令によって使用中であることを記録するように作動可能なレジスタ使用モニタ手段を含む、請求項47記載のデータ処理装置。
  49. 前記レジスタ使用モニタ手段が、命令によって既に使用中であるレジスタの使用を必要とする他の命令の動作を防止するように作動可能である、請求項48記載のデータ処理装置。
  50. 前記データ転送コントローラが、処理要素のSIMD(単一命令複数のデータ)アレイの処理要素の内部メモリユニットへおよび/または前記内部メモリからデータの転送を制御するように作動可能であり、各処理要素が、処理ユニットおよび内部メモリユニットを含み、前記制御手段が、前記内部メモリユニットへおよび/または前記内部メモリからのデータ転送が、関連する前記処理要素の処理ユニットの動作とは無関係に実行される制御手段を備える、請求項40乃至49のいずれか一項に記載のデータ処理装置。
  51. 各処理要素が、前記処理ユニットと前記内部メモリユニットとの間の転送のためのデータ項目を記憶し、かつ前記プロセッサユニットによって処理するレジスタファイルを含み、かつ前記データ転送コントローラがさらに、前記内部メモリユニットと処理要素のレジスタファイルとの間のデータの転送を制御する手段を備える、請求項50記載のデータ処理装置。
  52. 数式評価器(MEE)をさらに含み、かつ前記データ転送コントローラが、処理要素の前記内部メモリユニットと前記式評価器との間のデータの転送を制御する手段を有する、請求項50または請求項51記載のデータ処理装置。
  53. 前記データ転送コントローラが、一方の処理要素の内部メモリユニットと他方の処理要素の前記内部メモリユニットとの間でデータを転送する手段を有する、請求項50、51、または52記載のデータ処理装置。
  54. 前記データ転送コントローラが、前記処理要素の内部メモリにメモリリフレッシュを実行する手段を有する、請求項50乃至53のいずれか一項に記載のデータ処理装置。
  55. 前記データ転送コントローラが、処理要素の内部メモリユニットと前記処理要素の外部のメモリとの間のデータの転送を実行する手段を有する、請求項50乃至55のいずれか一項に記載のデータ処理装置。
  56. 前記処理要素へおよび前記処理要素から転送するためのデータ項目を記憶するローカルメモリユニットであって、前記データ項目が、前記メモリユニットのアドレスに記憶されているローカルメモリユニットと、
    前記ローカルメモリユニットに関するセグメント情報を記憶する各処理ブロックのためのセグメントレジスタであって、前記セグメント情報が、関連する前記処理ブロックによってアクセスされる前記ローカルメモリユニットのアドレスエリアを示すセグメントレジスタを備える、前述の請求項のいずれか一項に記載のデータ処理装置。
  57. 前記処理要素が、前記ローカルメモリユニットに関するアドレス情報を含む命令項目を受信するように接続され、かつ受信アドレス情報および記憶セグメント情報に基づいて前記ローカルメモリユニットにアクセスするように作動可能である、請求項56記載のデータ処理装置。
  58. 前記処理要素が、前記セグメント情報を前記アドレス情報に加え、ローカルメモリユニットのターゲットアドレスを生じさせるように作動可能である、請求項57記載のデータ処理装置。
  59. 前述の請求項のいずれか一項に記載のデータ処理装置およびローカルメモリユニットのアドレスにデータ項目を記憶するローカルメモリユニットを使用してデータを処理する方法であって、
    命令項目を前記処理要素に供給することであって、前記命令項目が前記ローカルメモリユニットに記憶されたデータ項目に関するアドレス情報を含むことと、
    各処理ブロックのためのセグメント情報を得ることであって、前記セグメント情報が、処理ブロックがアクセスする前記ローカルメモリユニットのアドレス領域に関することと、
    セグメント情報およびアドレス情報を結合し、ターゲットアドレス情報を生成し、かつ
    前記ターゲットアドレス情報に基づいて前記ローカルメモリユニットにアクセスすることとを備える、方法。
  60. 各処理要素が、プロセッサユニットと、データ項目をデータ記憶ユニットへおよびデータ記憶ユニットから転送するメモリ入出力ポートと、データ項目を前記プロセッサユニットに転送するデータレジスタのセットとを備え、前記データレジスタのセットの前記レジスタの各々が、データ項目を前記メモリ入出力ポートから受信し、かつデータ項目を前記プロセッサユニットの出力から受信し、かつデータ項目を前記プロセッサユニットの入力に転送するために接続される、前述の請求項のいずれか一項に記載のデータ処理装置。
  61. 前記データレジスタのセットが4つのこのようなデータレジスタを含む、請求項60記載のデータ処理装置。
  62. 入力データ項目を前記データレジスタの3つから受信するように接続され、かつ所定数のデータビットだけ受信されたデータ項目をシフトし、シフトされたデータ項目を前記3つのデータレジスタに転送するように作動可能なデータシフタを備える、請求項60または61記載のデータ処理装置。
  63. 前記データシフタが浮動小数点計算のためにデータ項目を3つのデータレジスタから受信し、第4のデータレジスタが浮動小数点演算の指数を記憶するために使用される、請求項62記載のデータ処理装置。
  64. 前記処理装置が論理演算ユニットを備える、請求項60、61、62または63記載のデータ処理装置。
  65. 前記データレジスタのセットが、N(ここでNは少なくとも4である)個のこのようなレジスタを含む、請求項60記載のデータ処理装置。
  66. 入力データ項目を前記データレジスタのN−1個から受信し、かつ所定数のデータビットだけ受信されたデータ項目をシフトし、かつシフトされたデータ項目をNー1個のデータレジスタに転送するように作動可能であるデータシフタを備える、請求項65記載のデータ処理装置。
  67. 前記データシフタが、浮動小数点計算のためにデータ項目をN−1個のデータレジスタから受信し、第N番目のデータレジスタが、浮動小数点演算の指数を記憶するために使用される、請求項66記載のデータ処理装置。
  68. 前述の請求項のいずれか一項に記載のデータ処理装置で命令ストリームをスケジュールする方法であって、どの命令ストリームが、時間における特定の瞬間に優先順位を有するかを決定し、かつこの命令ストリームを前記SIMDアレイに転送することを備える、方法。
  69. 命令ストリームが、現在アクティブストリームがいつでも実行できるようになった高位優先順位を有しているかどうかを決定するステップと、
    高位優先順位命令ストリームがいつでも実行できるようになった場合、高位優先順位を有する前記命令ストリームを起動するステップとを備える、請求項68記載の方法。
  70. アクティブ命令ストリームがストールしたかどうかを決定するステップと、
    高位優先順位命令ストリームがペンディングである場合、前記高位優先順位を有する前記命令ストリームを起動するステップとを備える、請求項68記載の方法。
  71. 請求項1乃至67のいずれか一項に記載のデータ処理装置のメモリへのデータ読み出しアクセスを制御する方法であって、
    前記メモリへのアクセスを必要とする処理要素を選択し、
    ターゲットアドレスを選択された処理要素から検索し、
    前記ターゲットアドレスを前記複数の処理要素に伝送し、
    トランザクション識別情報を前記処理要素に伝送し、その情報が関連する前記ターゲットアドレスアクセスを識別し、
    前記トランザクション識別情報を前記ターゲットアドレスへのアクセスを必要とする前記または各処理要素に記憶し、
    前記トランザクション識別情報とともに前記ターゲットアドレスから得られたデータを前記複数の処理要素に伝送し、
    前記トランザクション識別情報が記憶される前記または各処理要素に得られたデータを記憶することとを含む、方法。
  72. 請求項1乃至67のいずれか一項に記載され、データ項目がその中のアドレスに記憶されたメモリユニットと、前記メモリユニットにアクセスする複数の処理要素とを含むデータ処理装置のメモリユニットからデータ項目を検索する方法であって、
    前記メモリユニットへのアクセスを必要とする前記アレイの各処理要素に対して、アクセスインディケータを関連する前記処理要素が前記メモリユニットへのアクセスを必要とすることを示すように設定し、かつこのようなアクセスが必要とされる前記メモリユニットのターゲットアドレスを記憶し、
    セットされたアクセスインディケータを有する前記処理要素の中の1つを選択し、かつ記憶されたターゲットアドレスをこの選択された処理要素から検索し、
    検索されたターゲットアドレスおよびトランザクション識別情報を前記アレイの前記処理要素に伝送し、
    セットされた前記アクセスインディケータを有する各処理要素に対して、伝送されたターゲットアドレスを記憶されたターゲットアドレスとを比較し、記憶されたターゲットアドレスおよび伝送されたターゲットアドレスが等しい場合、前記アクセスインディケータをクリアし、かつ前記トランザクション識別情報を記憶し、
    前記メモリユニットの伝送されたターゲットアドレスに記憶された少なくとも1つのデータ項目を検索し、
    前記検索されたデータ項目または各検索されたデータ項目および関連トランザクション識別情報を前記アレイの前記処理要素に伝送し、
    記憶されたトランザクション識別情報を有する各処理要素に対して、記憶されたトランザクション識別情報を前記伝送されたトランザクション識別情報とを比較し、かつ前記記憶されたトランザクション情報が前記伝送されたトランザクション情報に等しい場合、前記検索されたデータ項目または各検索されたデータ項目を受信することとを備える、方法。
  73. データ項目がその中のアドレスに記憶されたメモリユニットと、前記メモリユニットにアクセスする複数の処理要素とを含む請求項1乃至67のいずれか一項に記載のデータ処理装置のメモリユニットにデータ項目を書き込む方法であって、
    前記メモリユニットへのアクセスを必要とする前記アレイの各処理要素に対して、アクセスインディケータを関連する前記処理要素が前記メモリユニットへのアクセスを必要とすることを示すように設定し、かつこのようなアクセスが必要とされる前記メモリユニットのターゲットアドレスを記憶し、
    セットされたアクセスインディケータを有する前記処理要素の中の1つを選択し、かつ記憶されたターゲットアドレスをこの選択された処理要素から検索し、
    検索されたターゲットアドレスおよびトランザクション識別情報を前記アレイの前記処理要素全てに伝送し、
    セットされた前記アクセスインディケータを有する各処理要素に対して、伝送されたターゲットアドレスを記憶されたターゲットアドレスとを比較し、記憶されたターゲットアドレスおよび伝送されたターゲットアドレスが等しい場合、前記アクセスインディケータをクリアし、かつ前記トランザクション識別情報を記憶し、
    トランザクション識別情報を前記アレイの処理要素に伝送し、
    記憶されたトランザクション識別情報を有する各処理要素に対して、記憶されたトランザクション識別情報を前記伝送されたトランザクション識別情報とを比較し、かつ前記記憶されたトランザクション情報が前記伝送されたトランザクション情報に等しい場合、前記ターゲットアドレスで前記メモリユニットに記憶される少なくとも1つのデータ項目を伝送し、
    前記伝送されたデータ項目または各伝送されたデータ項目を前記メモリユニットの前記ターゲットアドレスに記憶することとを備える、方法。
  74. 処理要素が、データ項目を前記ターゲットメモリアドレスのそれぞれの領域に記憶する、請求項73記載の方法。
  75. 請求項1乃至67のいずれか一項に記載のデータ処理装置で作動する複数の命令ストリームを制御する方法であって、
    前記データ処理装置内のそれぞれのリソースの状態を示すのに役立つ複数のセマフォ値を供給し、
    前記セマフォ値に応じて前記命令ストリームの操作を制御することとを備える、方法。
  76. 命令ストリームの操作を制御することが、
    リソースに対するセマフォ値を評価し、
    前記評価されたセマフォ値が所定値に等しい場合、前記命令ストリームの操作を停止し、
    前記評価されたセマフォ値が前記所定値よりも大きい場合、前記セマフォ値を減分し、かつ前記命令ストリームの操作を継続することとを備える、請求項75記載の方法。
  77. 命令ストリームの操作を制御することが、
    リソースに対するセマフォ値を評価し、
    前記評価されたセマフォ値が所定値に等しい場合、前記命令ストリームの操作を停止し、
    前記評価されたセマフォ値が前記所定値よりも小さい場合、前記セマフォ値を増分し、かつ前記命令ストリームの操作を継続することとを備える、請求項75記載の方法。
  78. 負セマフォ値が、この特定のセマフォ値によって休止された命令ストリームの数を示す、請求項75、76または77記載の方法。
  79. 各セマフォ値が、命令ストリームまたは前記SIMDアレイの実行ユニットによって増分できる、請求項75乃至78のいずれか一項に記載の方法。
  80. 前記セマフォが複数のグループに配置される、請求項75乃至78のいずれか一項に記載の方法。
  81. 前記セマフォグループが、前記セマフォを増分できるその実行ユニットにより配置される、請求項80記載の方法。
  82. 所定のセマフォが、共有リソースへの複数の命令ストリームのアクセスを制御するために使用される、請求項75乃至81のいずれか一項に記載の方法。
  83. セマフォ値がプロセッサによって増分および/または減分できる請求項75乃至82のいずれか一項に記載の方法。
  84. 単一集積回路上に装備されている請求項1乃至67のいずれか一項に記載のデータ処理装置。
  85. 中央処理装置および請求項1乃至67のいずれか一項に記載のデータ処理装置を含むモノリシック集積回路。
  86. ホスト汎用データ処理装置および請求項1乃至67のいずれか一項に記載のデータ処理装置を含むグラフィックデータ処理システム。
  87. 単一集積回路上に装備されている請求項86記載のデータ処理装置。
  88. 複数の処理ブロックに作動可能に分割される複数の処理要素を備えるデータ処理装置であって、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能である、データ処理装置。
  89. 実質的に添付図面を参照して前述され、添付図面に示されるようなデータ処理装置。
  90. 処理要素のSIMD(単一命令複数データ)アレイを使用してデータ項目を処理する方法であって、
    共通命令を前記アレイの前記処理要素の全てに供給し、
    各処理要素が前記共通命令に従って異なるデータ項目を処理するようにそれぞれのデータ項目を前記処理要素に供給することを備え、
    前記データ項目が、前記命令項目とは無関係に前記処理要素に供給される、方法。
  91. 前記アレイによって処理されるデータ項目が、前記アレイの前記処理要素の少なくとも1つによって直接供給される、請求項90記載の方法。
  92. 前記処理要素が、複数の処理ブロックに作動可能に分割され、各ブロックが所定のグループからデータ項目を処理するように作動可能である、請求項90記載の方法。
  93. 処理要素のSIMD(単一命令複数データ)アレイおよび前記アレイの各処理要素に対する数式の評価を生じるように作動可能な数式評価器を使用して前記評価器によって受信された命令および係数に従って処理する方法であって、
    命令項目のストリームを前記評価器に供給し、
    少なくとも1つの係数を前記評価器に供給することとを備え、
    前記係数または各係数が前記命令項目とは無関係に前記評価器に供給される、方法。
  94. 前記係数または各係数が、前記アレイの前記処理要素の少なくとも1つによって供給される、請求項93記載の方法。
  95. 共通命令項目およびそれぞれのデータ項目を受信するように接続される処理要素のSIMD(単一命令複数データ)アレイを備えるデータ処理装置であって、前記データ項目および前記命令項目が互いに無関係に前記処理要素に供給される、データ処理装置。
  96. 共通命令項目およびそれぞれのデータ項目を受信するように接続される処理要素のSIMD(単一命令複数データ)アレイと、命令項目および係数データ項目を受信するように接続され、かつ各処理要素に対する数式を評価し、それぞれの評価を前記処理要素に供給するように作動可能な数式評価器とを備えるデータ処理装置であって、前記係数データ項目および前記命令項目が、互いに無関係に前記数式評価器に供給される、データ処理装置。
  97. 処理要素が、複数のアクティブ処理ブロックに作動可能に分割される処理要素のSIMD(単一命令複数データ)アレイを備えるデータ処理装置であって、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能であり、前記処理ブロックの少なくとも1つが、欠陥のある処理ブロックの代わりにデータ項目のグループを処理するように作動可能な冗長ブロックである、データ処理装置。
  98. 処理ブロックに生じる欠陥を検出し、かつこの処理ブロックの前記データ処理機能を冗長処理ブロックに転送するように作動可能な欠陥検出手段を備える、請求項97記載の装置。
  99. 各処理ブロックには、関連する前記ブロックの欠陥処理要素の代わりにデータ項目を処理するように作動可能な少なくとも1つの冗長処理要素が装備されている、請求項97または98記載の装置。
  100. 処理要素が、複数の処理ブロックに作動可能に分割されて前記処理要素のSIMD(単一命令複数データ)アレイを備えるデータ処理装置であって、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能であり、各処理ブロックには、関連するブロックの欠陥のある処理ブロックの代わりにデータ項目を処理するように作動可能な少なくとも1つの冗長処理要素が装備されている、データ処理装置。
  101. 処理ブロックの前記処理要素が、その中に所定数の処理要素を有するグループに配置され、各このようなグループが、前記グループの欠陥処理要素を取り換えるための少なくとも1つのこのような冗長処理要素を含む、請求項99または100記載の装置。
  102. 処理要素に生じる欠陥を検出し、かつこの処理要素のデータ処理機能を冗長処理要素に転送するように作動可能な欠陥検出手段を備える、請求項99、100または101記載の装置。
  103. 命令項目に従ってデータ項目を処理する処理要素の単一命令複数データ(SIMD)アレイであって、処理要素のアレイが、データ項目のそれぞれのグループを処理するように作動可能な複数の処理ブロックに作動可能に分割される単一命令複数データアレイと、
    前記処理要素へおよび前記処理要素から転送するためのデータ項目を記憶するローカルメモリユニットであって、前記データ項目が前記メモリユニットのアドレスに記憶されているローカルメモリユニットと、
    前記ローカルメモリユニットに関するセグメント情報を記憶する、各処理ブロックに対するセグメントレジスタであって、前記セグメント情報が、関連する前記処理ブロックによってアクセスされる前記ローカルメモリユニットのアドレス領域を示すセグメントレジスタ備える、データ処理装置。
  104. 命令項目に従ってデータ項目を処理する処理要素の単一命令複数データ(SIMD)アレイであって、処理要素のアレイが、データ項目のそれぞれのグループを処理するように作動可能な複数の処理ブロックに作動可能に分割される単一命令複数データアレイと、
    前記処理要素へおよび前記処理要素から転送するためのデータ項目を記憶するローカルメモリユニットであって、前記データ項目が前記メモリユニットのアドレスに記憶されているローカルメモリユニットと、
    前記ローカルメモリユニットに関するセグメント情報を記憶する、各処理ブロックに対するセグメントレジスタであって、前記セグメント情報が、関連する前記処理ブロックによってアクセスされる前記ローカルメモリユニットのアドレス領域を示すセグメントレジスタを備える、データ処理装置。
  105. 前記処理要素が、前記ローカルメモリユニットに関するアドレス情報を含む命令項目を受信するように接続され、かつ受信されたアドレス情報および記憶されたセグメント情報に基づいて前記ローカルメモリユニットにアクセスするように作動可能である、請求項103記載のデータ処理装置。
  106. 前記処理要素が、前記セグメント情報を前記アドレス情報に加え、ローカルメモリユニットターゲットアドレスを生じさせるように作動可能である請求項104記載のデータ処理装置。
  107. 処理要素の単一命令複数データ(SIMD)アレイであって、前記処理要素のアレイがデータ項目のそれぞれのグループを処理するように作動可能な複数の処理ブロックに作動可能に分割される単一命令複数データアレイと、前記処理要素へおよび前記処理要素から転送するためのデータ項目を記憶するローカルメモリユニットであって、前記データ項目が、前記ローカル記憶ユニットのアドレスに記憶されているローカルメモリユニットを含むデータ処理装置を使用してデータを処理する方法であって、
    命令項目を前記処理要素に供給することであって、前記命令項目が、前記ローカルメモリユニットに記憶されたデータ項目に関するアドレス情報を含むことと、
    各処理ブロックのためのセグメント情報を得ることであって、前記セグメント情報が、処理ブロックがアクセスする前記ローカルメモリユニットの前記アドレス領域に関することと、
    前記セグメント情報およびアドレス情報を結合し、ターゲットアドレス情報を生成し、
    前記ターゲットアドレス情報に基づいて前記ローカルメモリユニットにアクセスすることとを備える、方法。
  108. 前記セグメント情報およびアドレス情報が、前記セグメント情報を前記アドレス情報に付加することによって結合される、請求項106記載の方法。
  109. 処理要素のSIMD(単一命令複数データ)アレイを使用してデータ項目を処理する方法であって、
    共通命令を前記アレイの前記処理要素の全てに供給し、
    各処理要素が前記共通命令に従って異なるデータ項目を処理するようにそれぞれのデータ項目を前記処理要素に供給することとを備え、
    前記命令が、前記データ項目とは別々に前記処理要素に供給され、かつ前記データ項目が、前記アレイの前記処理要素の少なくとも1つによって供給される、方法。
  110. 処理要素のSIMD(単一命令複数データ)アレイを使用してデータ項目を処理する方法であって、
    共通命令を前記アレイの前記処理要素の全てに供給し、
    各処理要素に対する結果データ項目を生成する前記アレイの各処理要素に対する数式を評価し、
    それぞれの結果データ項目を前記処理要素に供給することとを備え、
    前記命令が、前記結果データ項目とは別々に前記処理要素に供給され、かつ前記数式のための係数が、前記アレイの前記処理要素の少なくとも1つによって供給される、方法。
  111. 前記処理要素が、複数の処理ブロックに作動可能に分割され、各ブロックが所定のデータ項目のグループからのデータ項目を処理するように作動可能である、請求項108または109記載の方法。
  112. 共通命令に従ってそれぞれのデータ項目を処理するように作動可能な複数の処理要素であって、前記処理要素が、それによって処理要素の単一命令複数データ(SIMD)を形成する複数の処理要素と、
    命令を前記処理要素に供給するように作動可能な制御手段と、
    データ項目を前記処理要素に供給するように作動可能であり、それによって前記処理要素によって受信された命令に従って処理するオペランド供給手段とを備え、
    前記オペランド供給手段が、前記アレイの前記処理要素の少なくとも1つから前記処理要素に供給するためのデータ項目を受信するように接続されている、データ処理装置。
  113. 共通命令に従ってそれぞれのデータ項目を処理するように作動可能な複数の処理要素であって、前記処理要素が、それによって処理要素の単一命令複数データ(SIMD)を形成する複数の処理要素と、
    命令を前記処理要素に供給するように作動可能な制御手段と、
    前記アレイの各処理要素に対する数式を評価するように作動可能な数式評価器と、
    係数をそれによって処理するために前記評価器に供給するように作動可能であるオペランド供給手段とを備え、
    前記オペランド供給手段が、前記アレイの前記処理要素の少なくとも1つから前記評価器に供給するための係数を受信するように接続されている、データ処理アーキテクチャ。
  114. ターゲット外部メモリアドレスがそれの中の内部アドレスに記憶され、内部アドレスがオフセット値だけ基準アドレスからオフセットされる内部メモリを含む処理要素によって外部メモリへのアクセスを制御する方法であって、前記ターゲットアドレスが、アクセスが必要とされる外部メモリのアドレスを示す方法において、
    前記オフセット値を検索し、
    前記基準アドレスおよび前記オフセット値を結合し、計算内部アドレスを生成し、
    前記ターゲットアドレスを前記計算された内部アドレスによって示されたそれの中の前記アドレスで前記内部メモリから前記ターゲットアドレスを検索し、
    前記検索されたターゲットアドレスに基づいて前記外部メモリにアクセスすることとを備える、方法。
  115. 前記処理要素が、受信命令に従ってデータ項目を処理するプロセッサユニットを備え、前記プロセッサユニットが、前記プロセッサユニットに転送するためのデータ項目を記憶し、かつ前記オフセット値を記憶するレジスタを含む、請求項113記載の方法。
  116. 前記外部メモリにアクセスすることが、記憶データまたは命令項目を前記外部メモリの前記ターゲットアドレスから検索し、かつ検索されたデータ項目または命令項目を前記処理要素に転送することを備える、請求項113または114記載の方法。
  117. 前記外部メモリにアクセスすることが、データ項目を前記ターゲットアドレスにその中に記憶するための前記外部メモリに供給することを備える、請求項113、114または115記載の方法。
  118. 命令項目に従ってデータ項目を処理する少なくとも1つの処理要素と、
    データ項目および命令項目を記憶する外部メモリと、
    前記または各処理要素と前記メモリとの間でデータ項目および命令項目の転送を制御するコントローラ手段とを備え、
    前記または各処理要素が、
    データ項目および命令項目を受信するように接続され、かつ前記命令項目に従って前記データ項目を処理するように作動可能であるプロセッサユニットと、
    前記プロセッサユニットに入力するためのデータ項目を一時的に記憶する複数の記憶レジスタであって、前記記憶レジスタの少なくとも1つが、オフセット値を記憶するように作動可能である複数の記憶レジスタと、
    外部メモリアドレスを示すデータ項目およびアドレスデータを記憶するメモリユニットと、
    データ項目を記憶するレジスタファイルとを備え、前記レジスタファイルが、前記プロセッサユニットと前記メモリユニットとの間に接続され、これらのユニットの他のユニットに転送するためのこれらのユニットのいずれかからデータ項目を受信し、前記処理要素に外部のメモリ中のデータ項目を転送し、かつ前記プロセッサユニットによって処理するためのデータ項目を記憶し、
    前記コントローラが、オフセット値を前記記憶レジスタから検索し、前記オフセット値を所定の基準アドレスと結合し、計算された内部アドレスを生じさせ、内部メモリの計算された内部アドレスに記憶された外部アドレスデータを検索し、かつ外部アドレスで前記外部メモリにアクセスするように作動可能である、データ処理装置。
  119. 前記コントローラが、記憶されたデータまたは命令項目を前記外部メモリの前記外部アドレスから検索し、かつ前記検索されたデータ項目または命令項目を前記処理要素に転送するように作動可能である、請求項117記載のデータ処理装置。
  120. 前記コントローラが、前記外部メモリアドレスでその中に記憶するためにデータ項目を前記処理要素から前記外部メモリに転送するように作動可能である、請求項117記載のデータ処理装置。
  121. 処理要素のSIMD(単一命令複数データ)アレイを備えるデータ処理装置であって、各処理要素が、
    命令項目に従ってデータ項目を処理するプロセッサユニットと、
    前記処理要素がデータ項目を処理するのに役立つかどうかを示すイネーブルレジスタとを備え、
    前記イネーブルレジスタが、各々が前記処理要素の使用許可状態または使用禁止状態を示すように作動可能である複数のインディケータを含み、前記インディケータ全てが前記使用許可状態を示す場合、前記処理要素が、データ項目を処理するのに役立つ、データ処理装置。
  122. 前記イネーブルレジスタの各インディケータが、関連する前記処理要素のための条件付処理ステップの状態を示すように作動可能である、請求項120記載のデータ処理装置。
  123. 処理要素のSIMD(単一命令複数データ)アレイを備えるデータ処理装置であって、各処理要素が、プロセッサユニットと、データ項目をデータ記憶ユニットへおよびデータ記憶ユニットから転送するメモリ入出力ポートと、データ項目を前記プロセッサユニットに転送するデータレジスタのセットとを備え、前記データレジスタのセットの前記レジスタの各々が、データ項目を前記メモリ入出力ポートから受信し、かつデータ項目を前記プロセッサユニットの出力から受信し、かつデータ項目を前記プロセッサユニットの入力に転送するために接続される、データ処理装置。
  124. 前記データレジスタのセットが4つのこのようなデータレジスタを含む、請求項122記載のデータ処理装置。
  125. 入力データ項目を前記データレジスタの3つから受信するように接続され、所定数のデータビットだけ受信データ項目をシフトし、かつシフトされたデータ項目を3つのデータレジスタに転送するように作動可能なデータシフタを備える、請求項122または123記載のデータ処理装置。
  126. 前記データシフタが、浮動小数点計算のためにデータ項目を3つのデータレジスタから受信し、4番目のデータレジスタが、浮動小数点演算の指数を記憶するために使用される、請求項124記載のデータ処理装置。
  127. 前記処理装置が論理演算ユニットを含む、請求項122乃至125のいずれか一項に記載のデータ処理装置。
  128. 前記データレジスタのセットが、N(ここで、Nは少なくとも4である)個のこのようなデータレジスタを含む、請求項122記載のデータ処理装置。
  129. 入力データ項目を前記データレジスタのN−1個から受信するように接続され、かつ所定数のデータビットだけ受信データ項目をシフトし、かつシフトされたデータ項目をN−1個のデータレジスタに転送するように作動可能なデータシフタを備える、請求項127記載のデータ処理装置。
  130. 前記データシフタが、浮動小数点計算のためにデータ項目をN−1個のデータレジスタから受信し、N番目のレジスタが、浮動小数点演算の指数を記憶するために使用される、請求項128記載のデータ処理装置。
  131. 処理要素のSIMD(単一命令複数データ)アレイを備えるデータ処理装置であって、各処理要素が、データ項目および命令項目を受信し、かつ受信命令項目に従って受信データ項目を処理するように作動可能なプロセッサユニットと、データ項目を記憶するメモリユニットと、データ項目を記憶し、かつ前記プロセッサユニットおよび前記メモリユニットの中のデータ項目を転送するために接続されたレジスタファイルとを備え、前記レジスタファイルも、外部のメモリ中のデータ項目を前記処理要素に転送するために接続され、かつ前記処理要素の前記プロセッサユニットによって処理するためのデータ項目を記憶するように作動可能である、データ処理装置。
  132. 各プロセッサユニットが、データ項目を前記レジスタファイルに記憶し、かつデータ項目を前記レジスタファイルから同時に読み出すように作動可能である請求項130記載のデータ処理装置。
  133. 各メモリユニットがダイナミックランダムアクセスメモリ(DRAM)ユニットによって装備されている、請求項130または131記載のデータ処理装置。
  134. 処理要素が複数の処理ブロックに作動可能に分割される処理要素のSIMD(単一命令複数データ)アレイを備えるデータ処理装置であって、前記処理ブロックが、データ項目のそれぞれのグループを処理するように作動可能であり、前記アレイの各処理要素が、少なくとも1つの隣接処理要素中のデータ項目を直接転送するように作動可能であり、かつ各処理ブロックが、他の処理ブロックの処理要素の中のデータ項目を直接転送するように作動可能である処理要素を含む、データ処理装置。
  135. 各処理要素が、データ項目および命令項目を受信し、かつ受信命令項目に従って受信データ項目を処理するように作動可能なプロセッサユニットと、データ項目を記憶するメモリユニットと、データ項目を記憶し、かつデータ項目を前記プロセッサユニットおよび前記メモリユニットに転送するために接続されたレジスタファイルとを備え、前記レジスタファイルが、データ項目を前記処理要素の外部のメモリに転送するために接続され、かつデータ項目を隣接処理要素に転送するために接続される、請求項133記載のデータ処理装置。
  136. 前記処理要素が単一集積回路上に備えられる、請求項133または134記載のデータ処理装置。
  137. 各処理ブロックの前記処理要素が、それぞれ前記集積回路において直列に接続され、各処理要素が、直列の最初を除いて、データ項目を前記直列の前の処理要素に直接転送するように作動可能であり、かつ各処理要素が、前記直列の最後を除いて、データ項目を前記直列の次の処理要素に直接転送するように作動可能である、請求項135記載のデータ処理装置。
  138. 前記処理ブロックの前記処理要素が、前記集積回路のそれぞれの2次元アレイに接続され、各処理要素が、データ項目を前記アレイの少なくとも3つの隣接処理要素に転送するように作動可能である請求項136記載のデータ処理装置。
  139. 前記処理ブロックが直列に接続され、処理ブロックの最後の処理要素が、前記直列の他の処理ブロックの最初の処理要素にデータを転送するように作動可能である、請求項136または137記載のデータ処理装置。
  140. 前記処理ブロックが直列に接続され、処理ブロックの最後の処理要素が、前記直列の最後の処理ブロックを除いて、前記直列の次の処理ブロックの最初の処理要素にデータを転送するように作動可能である、請求項136または137記載のデータ処理装置。
  141. その各々が処理ユニットおよび内部メモリユニットを含む処理要素のアレイを制御するコントローラであって、
    複数の命令ストリームの各々に対する命令項目を検索する手段と、
    前記複数の命令ストリームを結合し、シリアル命令ストリームにする手段と、
    前記シリアル命令ストリームを前記処理要素のアレイのデータ処理を制御する処理コントローラまたは前記処理要素へおよび前記処理要素からのデータの転送を制御するデータ転送コントローラのいずれかに分配する手段とを備えている、コントローラ。
  142. 検索された命令項目を記憶するキャッシュメモリを備える、請求項140記載のコントローラ。
  143. 各々が各命令ストリーム用であり、それぞれの命令ストリームを制御する複数の命令ストリームプロセッサと、
    命令ストリーム間の同期を制御するセマフォコントローラと、
    前記命令ストリームの各々に関する状態情報を供給する状態ブロックと、
    状態情報を受信するように接続され、命令ストリームのどれがアクティブであるべきであるかを決定するように作動可能であるスケジューリング手段とを備えている、請求項140または141記載のコントローラ。
  144. 各命令ストリームが相対優先順位レベルを割り当てられる、請求項140乃至142のいずれか一項に記載のコントローラ。
  145. 前記プロセッサのアレイがSIMD(単一命令複数データ)アレイである、請求項140乃至143のいずれか一項に記載のコントローラ。
  146. その各々が処理ユニットおよび内部メモリユニットを含む処理要素のアレイで使用するスレッドマネージャであって、
    複数のスレッドの各々に対する命令項目を外部メモリから検索する手段であって各スレッドは命令のストリームである手段と、
    前記スレッドを結合し、シリアル命令ストリームにする手段と、
    前記シリアル命令ストリームを前記処理要素のアレイのデータ処理を制御する処理コントローラまたは前記処理要素の外部メモリユニットと外部メモリユニットとの間でのデータの転送を制御する入出力データ転送チャネルコントローラのいずれかに分配する手段とを備えている、スレッドマネージャ。
  147. メモリからの前記命令検索をバッファリングするキャッシュメモリを含む、請求項145記載のスレッドマネージャ。
  148. 各々が各アクティブスレッド用であり、かつそれぞれのスレッドを制御する複数のスレッドプロセッサと、
    スレッド間の同期を制御するセマフォコントローラと、
    前記スレッドの各々に関する状態情報を供給する状態ブロックとを備えている、請求項145または146記載のスレッドマネージャ。
  149. どのスレッドが時間における任意の特定の瞬間にもアクティブであるべきであるかを決定するスケジューラを備える、請求項145乃至147のいずれか一項に記載のスレッドマネージャ。
  150. 前記プロセッサのアレイがSIMD(単一命令複数データ)アレイである、請求項145乃至148のいずれか一項に記載のスレッドマネージャ。
  151. 処理要素のSIMD(単一命令複数データ)アレイで命令ストリームをスケジュールする方法であって、どの命令ストリームが時間における特定の瞬間に優先順位を有するかを決定し、かつこの命令ストリームを前記SIMDアレイに転送することとを備える、方法。
  152. 現在のアクティブストリームがいつでも実行できるようになった高位優先順位を命令ストリームが有するかどうかを決定するステップと、 高位優先順位命令ストリームがいつでも実行できるようになった場合、前記高位優先順位を有する前記命令ストリームを起動するステップとを備える、請求項150記載の方法。
  153. アクティブ命令ストリームがストールしたかどうかを決定するステップと、
    高位命令ストリームがペンディングである場合、前記高位優先順位を有する前記命令ストリームを起動するステップとを備える、請求項151記載の方法。
  154. 処理要素のSIMD(単一命令複数データ)アレイを含むデータ処理装置で操作する複数の命令ストリームを制御する方法であって、
    前記データ処理装置内のそれぞれのリソースの状態を示すのに役立つ複数のセマフォ値を供給し、
    前記セマフォ値に依存して前記命令ストリームの操作を制御することとを備える方法。
  155. 命令ストリームの操作を制御することが、
    リソースのための前記セマフォ値を評価し、
    前記評価されたセマフォ値が所定の値を等しい場合、前記命令ストリームの操作を停止し、または
    前記評価されたセマフォ値が所定の値よりも大きい場合、前記命令ストリームの前記セマフォ値を減分し、かつ継続することとを備える、請求項153記載の方法。
  156. 命令ストリームの操作を制御することが、
    リソースのための前記セマフォ値を評価し、
    前記評価されたセマフォ値が所定の値に等しい場合、命令ストリームの操作を停止し、または
    前記評価されたセマフォ値が所定の値よりも小さい場合、前記命令ストリームの前記セマフォ値を増分し、かつ継続することとを備える、請求項153または154記載の方法。
  157. 負セマフォ値が、この特定のセマフォ値によって停止された命令ストリームの数を示す、請求項155記載の方法。
  158. 各セマフォ値が、命令ストリームまたは前記SIMDアレイの実行ユニットによって増分できる、請求項153乃至156のいずれか一項に記載の方法。
  159. 前記セマフォが複数のグループに配置されている、請求項153乃至157のいずれか一項に記載の方法。
  160. 前記セマフォグループが、前記セマフォが増分できる実行ユニットにより配置されている、請求項158記載の方法。
  161. 所定のセマフォが、共有リソースへの複数の命令ストリームのアクセスを制御するために使用される、請求項153乃至159のいずれか一項に記載の方法。
  162. セマフォ値が、プロセッサによって増分および/または減分できる、請求項153乃至160のいずれか一項に記載の方法。
  163. 処理要素が複数の処理ブロックに作動可能に分割され、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能であり、各処理要素が処理ユニットおよび内部メモリユニットを含み、かつ前記SIMD(単一命令複数データ)アレイが複数の別個の命令ストリームを処理する処理要素の前記SIMDアレイで使用するためのセマフォコントローラであって、
    複数の別個の命令ストリームの実行間の同期を保持する手段を備えている、セマフォコントローラ。
  164. セマフォ値をプリセットする手段を有する、請求項162記載のセマフォコントローラ。
  165. セマフォ値を減分する手段を有する、請求項162または163記載のセマフォコントローラ。
  166. セマフォ値を増分する手段を有する、請求項162乃至164のいずれか一項に記載のセマフォコントローラ。
  167. 前記セマフォを複数のグループに配列する手段を有する、請求項162乃至165のいずれか一項に記載のセマフォコントローラ。
  168. 前記セマフォをグループに配列する手段が、前記セマフォが増分できる実行ユニットにより制御される、請求項166記載のセマフォコントローラ。
  169. 共有リソースへの複数の命令ストリームのアクセスを制御する手段を有する、請求項162乃至167のいずれか一項に記載のセマフォコントローラ。
  170. EPUによって出された命令に応じてセマフォ値を増分および/または減分する手段を有する、請求項162乃至168のいずれか一項に記載のセマフォコントローラ。
  171. 処理要素のSIMD(単一命令複数データ)アレイとセマフォコントローラとを備えているデータ処理装置であって、
    前記複数の別個の命令ストリームの実行間の同期を保持する手段を含む、データ処理装置。
  172. データ処理システムでデータ項目の転送を制御するデータ転送コントローラであって、
    処理要素の内部メモリユニットへおよび処理要素の内部メモリユニットからのデータの転送を制御するように作動可能な制御手段を備え、各処理要素が、処理ユニットおよび内部メモリユニットを含み、前記制御手段が、前記内部メモリユニットへおよび/または前記内部メモリユニットからのデータ転送が関連する前記処理要素の前記処理ユニットの動作とは無関係に実行されるように作動可能である、データ転送コントローラ。
  173. 各処理要素が、データ項目を処理する処理ユニットと、データ項目を記憶する内部メモリユニットとを含む処理要素のアレイと、
    内部メモリユニットへおよび/または内部メモリユニットからのデータ転送が関連する前記処理要素の前記処理ユニットの動作とは無関係に実行されるように処理要素の内部メモリユニットへおよび/処理要素の内部メモリユニットからのデータの転送を制御するように作動可能なデータ転送コントローラとを備えている、データ処理装置。
  174. 前記処理要素のアレイがSIMD(単一命令複数データ)アレイである、請求項171または172記載のデータ処理装置。
  175. 前記処理要素が、複数の処理ブロックに作動可能に分割され、前記処理ブロックが、データ項目のそれぞれのグループを処理するように作動可能である、請求項171、172または173記載のデータ処理装置。
  176. 各処理要素が、前記プロセッサユニットと前記メモリユニットとの間で転送するためのデータ項目を記憶し、かつ前記プロセッサユニットによって処理するレジスタファイルを含み、かつ前記データ転送コントローラが、処理要素の前記内部メモリユニットと前記レジスタファイルとの間のデータ項目の転送を制御する手段をさらに含む、請求項171乃至174のいずれか一項に記載のデータ処理装置。
  177. 数式評価器(MEE)をさらに備え、かつ前記データ転送コントローラが、処理要素の前記内部メモリユニットと前記数式評価器との間のデータの転送を制御する手段を有する、請求項172、173、174または175記載のデータ処理装置。
  178. 前記データ転送コントローラが、一方の処理要素の前記内部メモリユニットと他方の処理要素の前記内部メモリユニットとの間でデータを転送する手段を有する、請求項172乃至176のいずれか一項に記載のデータ処理装置。
  179. 前記データ転送コントローラが、前記処理要素の前記内部メモリユニットでメモリリフレッシュを実行する手段を有する、請求項172乃至177のいずれか一項に記載のデータ処理装置。
  180. 前記データ転送コントローラが、処理要素の内部メモリユニットと前記処理要素の外部のメモリとの間のデータの転送を実行する手段を有する、請求項172乃至178のいずれか一項に記載のデータ処理装置。
  181. 各々が処理ユニットと内部メモリユニットとを含み、かつデータを処理するように作動可能である処理要素のアレイを含むデータ処理システムでデータを転送する方法であって、
    内部メモリユニットへおよび前記内部メモリユニットからのデータ転送が関連する前記処理要素のプロセッサユニットの動作とは無関係に実行されるように処理要素の前記内部メモリユニットへおよび/または前記内部メモリユニットからデータを転送することを備える、方法。
  182. 処理要素が複数の処理ブロックに作動可能に分割される処理要素のアレイを備えているデータ処理装置でデータを転送する方法であって、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能であり、各処理要素が、処理ユニットと内部メモリユニットとを含み、かつデータを処理するように作動可能である方法において、
    この内部メモリユニットへおよび/またはこの内部メモリユニットからのデータ転送が関連する前記処理要素の前記プロセッサユニットの動作とは無関係であるように処理要素の内部メモリユニットへおよび/または処理要素の内部メモリユニットからのデータの転送を制御することを備える、方法。
  183. データ項目を処理するように作動可能であり、かつ各々がその中にデータを記憶する複数のレジスタを含むプロセッサユニットと、内部メモリユニットとを備える処理要素のSIMD(単一命令複数データ)アレイと、
    命令を受信するように接続され、受信命令に従って前記SIMDアレイの動作を制御するように作動可能であるアレイコントローラとを備え、
    前記アレイコントローラが、
    受信命令をデータ処理命令およびデータ転送命令に分離する命令ランチャと、
    データ処理命令を前記命令ランチャから受信するために接続され、かつデータ処理命令を前記処理要素に転送する処理要素命令シーケンサと、
    データ転送命令を前記命令ランチャから受信するために接続され、かつ前記処理要素の前記それぞれの内部メモリユニットへおよびこの内部メモリユニットからのデータ転送を制御するデータ転送コントローラと、
    プロセッサユニットレジスタのどれが命令によって使用中であるかを記録するように作動可能なレジスタ使用モニタ手段とを備える、データ処理装置。
  184. 前記レジスタ使用モニタ手段が、既に命令によって使用中であるレジスタの使用を必要とする他の命令の動作を防止するように作動可能である請求項182記載のデータ処理装置。
  185. 前記処理要素が、データ項目のそれぞれのグループを処理する複数の処理ブロックに作動可能に分割される、請求項182または183記載のデータ処理装置。
  186. 処理要素が複数の処理ブロックに作動可能に分割される処理要素のSIMD(単一命令複数データ)アレイの動作を制御するアレイコントローラで使用するためのレジスタスコアボードユニットであって、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能であり、前記アレイコントローラが、データ処理命令を扱う処理要素命令シーケンサと、データ転送命令を扱うデータ転送コントローラとを備えるレジスタスコアボードユニットにおいて、
    シリアル命令実行の出現を維持すると同時に前記処理要素命令シーケンサと前記データ転送コントローラとの間で並列演算を行う手段を備える、レジスタスコアボードユニット。
  187. 処理要素のアレイの動作を制御するアレイコントローラであって、前記コントローラが、命令を受信するように接続された手段と、関連する命令に応じて受信命令を処理要素のアレイに転送するように作動可能なルーティング手段とを備える、アレイコントローラ。
  188. 受信命令をデータ処理命令およびデータ転送命令に分離する手段を備える、請求項186記載のコントローラ。
  189. 前記ルーティング手段が、
    前記処理要素によるデータの処理に関するデータ処理命令を処理する処理要素命令シーケンサと、
    前記処理要素へおよび/または前記処理要素からのデータ項目の転送に関するデータ転送命令を処理するデータ転送コントローラとを備えている、請求項185または186記載のコントローラ。
  190. 前記処理要素命令シーケンサが、マイクロコード命令が前記アレイのデータ処理機能に関する処理要素の前記アレイにマイクロコード命令を転送するように作動可能である請求項188記載のコントローラ。
  191. その各々が処理ユニットおよび内部メモリユニットを含み、かつデータを処理するように作動可能である処理要素のアレイと、
    命令を受信するように接続される手段と、関連する前記命令に応じて処理要素の前記アレイに受信命令を転送するように作動可能なルーティング手段とを備えるアレイコントローラとを備えているデータ処理装置。
  192. 前記アレイコントローラが、受信命令をデータ処理命令およびデータ転送命令に分離する命令ランチャを備える、請求項190記載のデータ処理装置。
  193. 前記ルーティング手段が、
    前記処理要素によるデータの処理に関するデータ処理命令を処理する処理要素命令シーケンサと、
    前記処理要素へおよび/または前記処理要素からのデータ項目の転送に関するデータ転送命令を処理するデータ転送コントローラとを備えている、請求項190または191記載のデータ処理装置。
  194. 前記処理要素命令シーケンサが、マイクロコード命令が前記アレイのデータ処理機能に関する処理要素の前記アレイにマイクロコード命令を転送するように作動可能である請求項192記載のデータ処理装置。
  195. 各処理要素がさらにレジスタのセットを備え、かつ前記命令ランチャが、前記処理要素のどのレジスタが命令によってアクセスされるかを決定する手段と、前記命令が実行されている間、他の命令がこれらのレジスタにアクセスすることを防止する手段とを含む、請求項190乃至193のいずれか一項に記載のデータ処理装置。
  196. 前記命令ランチャが、一旦前記命令が完了したとすると、他の命令によって使用するための前記レジスタを取り外す手段を有する、請求項194記載のデータ処理装置。
  197. どのレジスタがデータ処理命令によってアクセスされるかを決定する際に前記命令ランチャを助ける命令テーブルをさらに備える、請求項190乃至194のいずれか一項に記載のデータ処理装置。
  198. 前記命令ランチャが直列実行の出現を保持すると同時に前記処理要素命令シーケンサと前記データ転送コントローラとの間の並列動作も保持する、請求項190乃至196のいずれか一項に記載のデータ処理装置。
  199. 前記ルーティング手段が、前記プロセッサユニットのどれが命令によって使用中であるかを記録するように作動可能なレジスタ使用モニタ手段を含む、請求項197記載のデータ処理装置。
  200. 複数の処理要素を含むデータ処理装置のメモリへのデータ読み出しアクセスを制御する方法であって、
    前記メモリへのアクセスを必要とする処理要素を選択し、
    ターゲットアドレスを選択された処理要素から検索し、
    前記ターゲットアドレスを前記複数の処理要素に伝送し、
    その情報が関連する前記ターゲットアドレスアクセス動作を識別するトランザクション識別情報を前記処理要素に伝送し、
    前記トランザクション識別情報を前記ターゲットアドレスへのアクセスを必要とする前記または各処理要素に記憶し、
    前記トランザクション識別情報とともに前記ターゲットアドレスから得られたデータを前記複数の処理要素に伝送し、
    得られたデータを前記トランザクション識別情報が記憶される前記または各処理要素に記憶することとを備える、方法。
  201. データ項目がその中のアドレスに記憶されるメモリユニットと、前記メモリユニットにアクセスする複数の処理要素とを含むデータ処理装置のメモリユニットからデータ項目を検索する方法であって、
    前記メモリユニットへのアクセスを必要とする前記アレイの各処理要素に対して、関連する前記処理要素が前記メモリユニットへのアクセスを必要とすることを示すようにアクセスインディケータをセットし、かつこのようなアクセスが必要とされる前記メモリユニットのターゲットアドレスを記憶し、
    セットされた前記アクセスインディケータを有する処理要素の中の1つを選択し、かつ記憶されたターゲットアドレスをこの選択された処理要素から検索し、
    検索されたターゲットアドレスおよびトランザクション識別情報を前記アレイの前記処理要素に伝送し、
    セットされた前記アクセスインディケータを有する各処理要素に対して、伝送されたターゲットアドレスを記憶されたターゲットアドレスと比較し、かつ記憶されたターゲットアドレスおよび伝送されたターゲットアドレスが等しい場合、前記アクセスインディケータをクリアし、かつ前記トランザクション識別情報を記憶し、
    前記メモリユニットの前記伝送されたターゲットアドレスに記憶された少なくとも1つのデータ項目を検索し、
    前記検索されたデータ項目または各検索されたデータ項目および関連トランザクション識別情報を前記アレイの前記処理要素に伝送し、
    記憶されたトランザクション識別情報を有する各処理要素に対して、前記記憶されたトランザクション識別情報を前記伝送されたトランザクション識別情報と比較し、かつ記憶されたトランザクション情報が伝送されたトランザクション情報に等しい場合、前記検索されたデータ項目または各検索されたデータ項目を受信することとを備える、方法。
  202. 前記必要とされたデータが、前記トランザクション識別情報が発生された順序で戻される、請求項199または200記載の方法。
  203. 前記必要とされるデータが、前記メモリから検索された順序で戻される、請求項199または200記載の方法。
  204. データ項目がその中のアドレスに記憶されるメモリユニットと、前記メモリユニットにアクセスする複数の処理要素とを含むデータ処理装置のメモリユニットにデータ項目を書き込む方法であって、
    前記メモリユニットへのアクセスを必要とする前記アレイの各処理要素に対して、関連する前記処理要素が前記メモリユニットへのアクセスを必要とすることを示すようにアクセスインディケータをセットし、かつこのようなアクセスが必要とされる前記メモリユニットのターゲットアドレスを記憶し、
    セットされた前記アクセスインディケータを有する処理要素の中の1つを選択し、かつ記憶されたターゲットアドレスをこの選択された処理要素から検索し、
    検索されたターゲットアドレスおよびトランザクション識別情報を前記アレイの前記処理要素全てに伝送し、
    セットされた前記アクセスインディケータを有する各処理要素に対して、伝送されたターゲットアドレスを記憶されたターゲットアドレスと比較し、かつ記憶されたターゲットアドレスおよび伝送されたターゲットアドレスが等しい場合、前記アクセスインディケータをクリアし、かつ前記トランザクション識別情報を記憶し、
    トランザクション識別情報を前記アレイの前記処理要素に伝送し、
    記憶されたトランザクション識別情報を有する各処理要素に対して、前記記憶されたトランザクション識別情報を前記伝送されたトランザクション情報と比較し、かつ記憶されたトランザクション情報が伝送されたトランザクション情報に等しい場合、前記ターゲットアドレスで前記メモリユニットに記憶される少なくとも1つのデータ項目を伝送し、
    前記伝送されたデータ項目または各伝送されたデータ項目を前記メモリユニットの前記ターゲットアドレスに記憶することとを備える、方法。
  205. 処理要素が、前記ターゲットメモリアドレスのそれぞれの領域にデータ項目を記憶する、請求項203記載の方法。
  206. 処理要素のSIMD(単一命令複数データ)アレイと、前記処理要素によってアクセスするデータ項目を記憶するデータ記憶手段と、請求項199乃至204のいずれか一項に記載の方法に従って前記記憶手段へのアクセスを制御する制御手段とを備えている、データ処理装置。
JP2010222022A 1999-04-09 2010-09-30 並列データ処理装置 Pending JP2011023037A (ja)

Applications Claiming Priority (16)

Application Number Priority Date Filing Date Title
GB9908209A GB2348976A (en) 1999-04-09 1999-04-09 Single instruction multiple data array
GB9908229A GB2348983A (en) 1999-04-09 1999-04-09 Parallel data processing system
GB9908204A GB2348974B (en) 1999-04-09 1999-04-09 Parallel data processing systems
GB9908205A GB2348975A (en) 1999-04-09 1999-04-09 Parallel data processing systems
GB9908214A GB2348978A (en) 1999-04-09 1999-04-09 Parallel redundant data processing apparatus
GB9908228A GB2348982A (en) 1999-04-09 1999-04-09 Parallel data processing system
GB9908219A GB2348979A (en) 1999-04-09 1999-04-09 Parallel data processing system with shared memory
GB9908226A GB2348981A (en) 1999-04-09 1999-04-09 Parallel data processing system with SIMD array
GB9908225A GB2348980B (en) 1999-04-09 1999-04-09 Parallel data processing systems
GB9908201A GB2348972A (en) 1999-04-09 1999-04-09 Array controller for array of processing elements
GB9908203A GB2348973B (en) 1999-04-09 1999-04-09 Parallel data processing systems
GB9908211A GB2348977A (en) 1999-04-09 1999-04-09 Parallel data processing systems with a SIMD array
GB9908199A GB2348971B (en) 1999-04-09 1999-04-09 Parallel data processing systems
GB9908227A GB2349484A (en) 1999-04-09 1999-04-09 Parallel data processing system with SIMD array
GB9908230A GB2348984B (en) 1999-04-09 1999-04-09 Parallel data processing systems
GB9908222A GB2352306A (en) 1999-04-09 1999-04-09 Parallel processing apparatus using a SIMD array

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2000611183A Division JP5285828B2 (ja) 1999-04-09 2000-04-07 並列データ処理装置

Publications (1)

Publication Number Publication Date
JP2011023037A true JP2011023037A (ja) 2011-02-03

Family

ID=27585628

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2000611183A Expired - Lifetime JP5285828B2 (ja) 1999-04-09 2000-04-07 並列データ処理装置
JP2010222022A Pending JP2011023037A (ja) 1999-04-09 2010-09-30 並列データ処理装置
JP2010222021A Pending JP2011023036A (ja) 1999-04-09 2010-09-30 並列データ処理装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2000611183A Expired - Lifetime JP5285828B2 (ja) 1999-04-09 2000-04-07 並列データ処理装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2010222021A Pending JP2011023036A (ja) 1999-04-09 2010-09-30 並列データ処理装置

Country Status (5)

Country Link
US (3) US7363472B2 (ja)
EP (1) EP1181648A1 (ja)
JP (3) JP5285828B2 (ja)
AU (1) AU3829500A (ja)
WO (1) WO2000062182A2 (ja)

Families Citing this family (156)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080162875A1 (en) * 1999-04-09 2008-07-03 Dave Stuttard Parallel Data Processing Apparatus
US7526630B2 (en) * 1999-04-09 2009-04-28 Clearspeed Technology, Plc Parallel data processing apparatus
US20080162874A1 (en) * 1999-04-09 2008-07-03 Dave Stuttard Parallel data processing apparatus
US20070242074A1 (en) * 1999-04-09 2007-10-18 Dave Stuttard Parallel data processing apparatus
EP1181648A1 (en) 1999-04-09 2002-02-27 Clearspeed Technology Limited Parallel data processing apparatus
US7802079B2 (en) 1999-04-09 2010-09-21 Clearspeed Technology Limited Parallel data processing apparatus
US20080008393A1 (en) * 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US7966475B2 (en) 1999-04-09 2011-06-21 Rambus Inc. Parallel data processing apparatus
US8762691B2 (en) 1999-04-09 2014-06-24 Rambus Inc. Memory access consolidation for SIMD processing elements using transaction identifiers
US8174530B2 (en) * 1999-04-09 2012-05-08 Rambus Inc. Parallel date processing apparatus
US8169440B2 (en) 1999-04-09 2012-05-01 Rambus Inc. Parallel data processing apparatus
US8171263B2 (en) * 1999-04-09 2012-05-01 Rambus Inc. Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
US7069422B2 (en) * 2000-12-22 2006-06-27 Modelski Richard P Load-shift carry instruction
US7013302B2 (en) * 2000-12-22 2006-03-14 Nortel Networks Limited Bit field manipulation
EP1384160A2 (en) 2001-03-02 2004-01-28 Atsana Semiconductor Corp. Apparatus for variable word length computing in an array processor
US7185174B2 (en) 2001-03-02 2007-02-27 Mtekvision Co., Ltd. Switch complex selectively coupling input and output of a node in two-dimensional array to four ports and using four switches coupling among ports
US6895520B1 (en) 2001-03-02 2005-05-17 Advanced Micro Devices, Inc. Performance and power optimization via block oriented performance measurement and control
US7383421B2 (en) * 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
US7000090B2 (en) 2002-01-21 2006-02-14 Analog Devices, Inc. Center focused single instruction multiple data (SIMD) array system
US6941446B2 (en) * 2002-01-21 2005-09-06 Analog Devices, Inc. Single instruction multiple data array cell
US7480909B2 (en) * 2002-02-25 2009-01-20 International Business Machines Corporation Method and apparatus for cooperative distributed task management in a storage subsystem with multiple controllers using cache locking
US6865659B2 (en) * 2002-06-07 2005-03-08 Sun Microsystems, Inc. Using short references to access program elements in a large address space
US6980209B1 (en) * 2002-06-14 2005-12-27 Nvidia Corporation Method and system for scalable, dataflow-based, programmable processing of graphics data
US6825843B2 (en) * 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
GB2391083B (en) 2002-07-19 2006-03-01 Picochip Designs Ltd Processor array
JP2004362086A (ja) * 2003-06-03 2004-12-24 Matsushita Electric Ind Co Ltd 情報処理装置および機械語プログラム変換装置
US7421565B1 (en) * 2003-08-18 2008-09-02 Cray Inc. Method and apparatus for indirectly addressed vector load-add -store across multi-processors
US7836450B2 (en) * 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
JP4818918B2 (ja) * 2003-08-28 2011-11-16 ミップス テクノロジーズ インコーポレイテッド マルチスレッド化されたマイクロプロセッサで並行命令ストリームを開始する命令
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7711931B2 (en) * 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
US7870553B2 (en) 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US9032404B2 (en) 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US7239322B2 (en) 2003-09-29 2007-07-03 Ati Technologies Inc Multi-thread graphic processing system
US6897871B1 (en) 2003-11-20 2005-05-24 Ati Technologies Inc. Graphics processing architecture employing a unified shader
US8643659B1 (en) 2003-12-31 2014-02-04 3Dlabs Inc., Ltd. Shader with global and instruction caches
GB2411745B (en) * 2004-03-02 2006-08-02 Imagination Tech Ltd Method and apparatus for management of control flow in a simd device
US9098932B2 (en) * 2004-08-11 2015-08-04 Ati Technologies Ulc Graphics processing logic with variable arithmetic logic unit control and method therefor
US7577869B2 (en) * 2004-08-11 2009-08-18 Ati Technologies Ulc Apparatus with redundant circuitry and method therefor
GB2417105B (en) * 2004-08-13 2008-04-09 Clearspeed Technology Plc Processor memory system
US7827555B2 (en) * 2004-09-13 2010-11-02 Integrated Device Technology, Inc. Scheduler for a multiprocessing computing system
US7634774B2 (en) * 2004-09-13 2009-12-15 Integrated Device Technology, Inc. System and method of scheduling computing threads
US7644255B2 (en) * 2005-01-13 2010-01-05 Sony Computer Entertainment Inc. Method and apparatus for enable/disable control of SIMD processor slices
US7746349B1 (en) 2005-03-16 2010-06-29 Nvidia Corporation Method and apparatus for display of data
CN1993709B (zh) * 2005-05-20 2010-12-15 索尼株式会社 信号处理设备
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
US7475197B1 (en) * 2005-10-25 2009-01-06 Nvidia Corporation Cross process memory management
US7447873B1 (en) 2005-11-29 2008-11-04 Nvidia Corporation Multithreaded SIMD parallel processor with loading of groups of threads
US7594095B1 (en) 2005-11-29 2009-09-22 Nvidia Corporation Multithreaded SIMD parallel processor with launching of groups of threads
US7788468B1 (en) 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
US7584342B1 (en) 2005-12-15 2009-09-01 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and SIMD instruction issue
US7861060B1 (en) 2005-12-15 2010-12-28 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior
US8077174B2 (en) 2005-12-16 2011-12-13 Nvidia Corporation Hierarchical processor array
US7634637B1 (en) * 2005-12-16 2009-12-15 Nvidia Corporation Execution of parallel groups of threads with per-instruction serialization
US8074224B1 (en) * 2005-12-19 2011-12-06 Nvidia Corporation Managing state information for a multi-threaded processor
US7697007B1 (en) 2005-12-19 2010-04-13 Nvidia Corporation Predicated launching of compute thread arrays
US7728841B1 (en) * 2005-12-19 2010-06-01 Nvidia Corporation Coherent shader output for multiple targets
US7526634B1 (en) 2005-12-19 2009-04-28 Nvidia Corporation Counter-based delay of dependent thread group execution
US7865894B1 (en) 2005-12-19 2011-01-04 Nvidia Corporation Distributing processing tasks within a processor
US7631171B2 (en) * 2005-12-19 2009-12-08 Sun Microsystems, Inc. Method and apparatus for supporting vector operations on a multi-threaded microprocessor
CN101371263A (zh) * 2006-01-10 2009-02-18 光明测量公司 用于在并行处理系统中处理多媒体数据的算法步骤的方法和装置
US7647476B2 (en) * 2006-03-14 2010-01-12 Intel Corporation Common analog interface for multiple processor cores
US9563433B1 (en) 2006-09-01 2017-02-07 Allsearch Semi Llc System and method for class-based execution of an instruction broadcasted to an array of processing elements
US20080059762A1 (en) * 2006-09-01 2008-03-06 Bogdan Mitu Multi-sequence control for a data parallel system
WO2008027567A2 (en) * 2006-09-01 2008-03-06 Brightscale, Inc. Integral parallel machine
US20080055307A1 (en) * 2006-09-01 2008-03-06 Lazar Bivolarski Graphics rendering pipeline
US20080059467A1 (en) * 2006-09-05 2008-03-06 Lazar Bivolarski Near full motion search algorithm
US7627723B1 (en) 2006-09-21 2009-12-01 Nvidia Corporation Atomic memory operators in a parallel processor
US8087029B1 (en) 2006-10-23 2011-12-27 Nvidia Corporation Thread-type-based load balancing in a multithreaded processor
US8108872B1 (en) 2006-10-23 2012-01-31 Nvidia Corporation Thread-type-based resource allocation in a multithreaded processor
US8108625B1 (en) 2006-10-30 2012-01-31 Nvidia Corporation Shared memory with parallel access and access conflict resolution mechanism
US7680988B1 (en) 2006-10-30 2010-03-16 Nvidia Corporation Single interconnect providing read and write access to a memory shared by concurrent threads
US8176265B2 (en) 2006-10-30 2012-05-08 Nvidia Corporation Shared single-access memory with management of multiple parallel requests
US8429656B1 (en) 2006-11-02 2013-04-23 Nvidia Corporation Thread count throttling for efficient resource utilization
US8271746B1 (en) 2006-11-03 2012-09-18 Nvidia Corporation Tiering of linear clients
US7663621B1 (en) * 2006-11-03 2010-02-16 Nvidia Corporation Cylindrical wrapping using shader hardware
US9135017B2 (en) * 2007-01-16 2015-09-15 Ati Technologies Ulc Configurable shader ALU units
JP4913685B2 (ja) * 2007-07-04 2012-04-11 株式会社リコー Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法
GB2454865B (en) 2007-11-05 2012-06-13 Picochip Designs Ltd Power control
US20090248919A1 (en) * 2008-03-25 2009-10-01 Jerzy Szwagrzyk Method for external fifo acceleration
US8073559B2 (en) * 2008-06-19 2011-12-06 Varian Semiconductor Equipment Associates, Inc. Material transport systems using autonomous controls
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
KR101572879B1 (ko) 2009-04-29 2015-12-01 삼성전자주식회사 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
GB2470037B (en) 2009-05-07 2013-07-10 Picochip Designs Ltd Methods and devices for reducing interference in an uplink
GB2470771B (en) 2009-06-05 2012-07-18 Picochip Designs Ltd A method and device in a communication network
GB2470891B (en) 2009-06-05 2013-11-27 Picochip Designs Ltd A method and device in a communication network
WO2011040599A1 (ja) 2009-10-02 2011-04-07 シャープ株式会社 血管状態モニタリング装置およびモニタリング方法
GB2474071B (en) 2009-10-05 2013-08-07 Picochip Designs Ltd Femtocell base station
DE102009054637A1 (de) * 2009-12-15 2011-06-16 Robert Bosch Gmbh Verfahren zum Betreiben einer Recheneinheit
US8627042B2 (en) * 2009-12-30 2014-01-07 International Business Machines Corporation Data parallel function call for determining if called routine is data parallel
US9173604B2 (en) 2010-03-19 2015-11-03 Sharp Kabushiki Kaisha Measurement device, measurement method, measurement result processing device, measurement system, measurement result processing method, control program, and recording medium
US8683185B2 (en) 2010-07-26 2014-03-25 International Business Machines Corporation Ceasing parallel processing of first set of loops upon selectable number of monitored terminations and processing second set
GB2482869B (en) 2010-08-16 2013-11-06 Picochip Designs Ltd Femtocell access control
US9552206B2 (en) * 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US8688957B2 (en) * 2010-12-21 2014-04-01 Intel Corporation Mechanism for conflict detection using SIMD
GB2489716B (en) 2011-04-05 2015-06-24 Intel Corp Multimode base system
GB2489919B (en) 2011-04-05 2018-02-14 Intel Corp Filter
GB2491098B (en) 2011-05-16 2015-05-20 Intel Corp Accessing a base station
US9183614B2 (en) 2011-09-03 2015-11-10 Mireplica Technology, Llc Processor, system, and method for efficient, high-throughput processing of two-dimensional, interrelated data sets
US9037931B2 (en) 2011-12-21 2015-05-19 Advanced Micro Devices, Inc. Methods and systems for logic device defect tolerant redundancy
EP2608558A1 (en) * 2011-12-22 2013-06-26 Thomson Licensing System and method for adaptive streaming in a multipath environment
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US9411592B2 (en) 2012-12-29 2016-08-09 Intel Corporation Vector address conflict resolution with vector population count functionality
US9411584B2 (en) 2012-12-29 2016-08-09 Intel Corporation Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality
KR102102166B1 (ko) 2013-04-22 2020-04-21 삼성전자 주식회사 심드 구조 기반의 쓰레드 분기 관리 장치 및 방법
US9274904B2 (en) * 2013-06-18 2016-03-01 Advanced Micro Devices, Inc. Software only inter-compute unit redundant multithreading for GPUs
US9218291B2 (en) * 2013-07-25 2015-12-22 International Business Machines Corporation Implementing selective cache injection
US9934043B2 (en) * 2013-08-08 2018-04-03 Linear Algebra Technologies Limited Apparatus, systems, and methods for providing computational imaging pipeline
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
JP2016066218A (ja) * 2014-09-24 2016-04-28 株式会社ソシオネクスト プロセッサ、半導体集積回路、及びベクトル命令の処理方法
KR102497849B1 (ko) 2016-05-09 2023-02-07 삼성전자주식회사 분석물질 농도 예측 방법 및 장치
US10699362B2 (en) * 2016-06-23 2020-06-30 Intel Corporation Divergent control flow for fused EUs
US20180005059A1 (en) * 2016-07-01 2018-01-04 Google Inc. Statistics Operations On Two Dimensional Image Processor
US10616316B2 (en) 2016-09-15 2020-04-07 International Business Machines Corporation Processing element host management in a stream computing environment
US10162680B2 (en) * 2016-12-13 2018-12-25 GM Global Technology Operations LLC Control of data exchange between a primary core and a secondary core using a freeze process flag and a data frozen flag in real-time
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
JP2018165913A (ja) * 2017-03-28 2018-10-25 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US20190303297A1 (en) * 2018-04-02 2019-10-03 Intel Corporation Apparatus, methods, and systems for remote memory access in a configurable spatial accelerator
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11307873B2 (en) * 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
DE102018115902A1 (de) 2018-07-01 2020-01-02 Oliver Bartels SIMD-Prozessor mit CAM zur Operandenauswahl nach Mustererkennung
GB2578320B (en) 2018-10-23 2023-07-05 Advanced Risc Mach Ltd Graphics processing
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11074213B2 (en) * 2019-06-29 2021-07-27 Intel Corporation Apparatuses, methods, and systems for vector processor architecture having an array of identical circuit blocks
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US11500811B2 (en) * 2020-06-12 2022-11-15 Alibaba Group Holding Limited Apparatuses and methods for map reduce
KR20230087553A (ko) * 2020-10-15 2023-06-16 아세니움 인코포레이티드 백그라운드 로드를 갖는 병렬 처리 아키텍처

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62274454A (ja) * 1986-05-23 1987-11-28 Hitachi Ltd 並列処理計算機
JPH03132861A (ja) * 1989-10-19 1991-06-06 Agency Of Ind Science & Technol マルチプロセッサ・システムの再構成制御方式
JPH0668053A (ja) * 1992-08-20 1994-03-11 Toshiba Corp 並列計算機
JPH06131309A (ja) * 1992-10-21 1994-05-13 Sanyo Electric Co Ltd 並列計算機システム
JPH06231092A (ja) * 1992-05-22 1994-08-19 Internatl Business Mach Corp <Ibm> コンピュータ・システム
JPH07253957A (ja) * 1994-03-15 1995-10-03 Hitachi Ltd 並列プロセッサの切替え制御方式
JPH08503563A (ja) * 1992-11-13 1996-04-16 ザ・ユニヴァーシティ・オヴ・ノース・キャロライナ・アト・チャペル・ヒル 画像発生アーキテクチャおよび装置
JPH0926888A (ja) * 1995-07-13 1997-01-28 Hitachi Ltd 排他制御装置
JPH09288652A (ja) * 1996-04-23 1997-11-04 Nec Corp 並列プロセッサの冗長切り替え装置
JPH10133872A (ja) * 1996-10-29 1998-05-22 Fujitsu Ltd 命令バッファを有するプロセッサ装置
JPH10187631A (ja) * 1996-07-02 1998-07-21 Sun Microsyst Inc 拡張された対称マルチプロセッサ・アーキテクチャ

Family Cites Families (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3537074A (en) * 1967-12-20 1970-10-27 Burroughs Corp Parallel operating array computer
FR2253418A5 (ja) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
FR2253420A5 (ja) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
FR2253423A5 (ja) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US4229790A (en) * 1978-10-16 1980-10-21 Denelcor, Inc. Concurrent task and instruction processor and method
US4314349A (en) 1979-12-31 1982-02-02 Goodyear Aerospace Corporation Processing element for parallel array processors
US4435758A (en) * 1980-03-10 1984-03-06 International Business Machines Corporation Method for conditional branch execution in SIMD vector processors
GB2074351B (en) 1980-03-28 1984-01-04 Int Computers Ltd Data processing system
FI66995C (fi) 1980-06-12 1984-12-10 Elevator Gmbh Foerfarande och anordning foer att oeverfoera data mellanprocessorer i ett flerprocessorsystem
US4590465A (en) 1982-02-18 1986-05-20 Henry Fuchs Graphics display system using logic-enhanced pixel memory cells
US4484273A (en) * 1982-09-03 1984-11-20 Sequoia Systems, Inc. Modular computer system
US4602328A (en) * 1982-12-17 1986-07-22 L'etat Francais Represente Par Le Ministre Des P.T.T. (Centre National D'etudes Des Telecommunications) Management system for the memory of a processor or microprocessor
JPS59136859A (ja) * 1983-01-27 1984-08-06 Nec Corp バツフア制御装置
US5247689A (en) * 1985-02-25 1993-09-21 Ewert Alfred P Parallel digital processor including lateral transfer buses with interrupt switches to form bus interconnection segments
US5113523A (en) 1985-05-06 1992-05-12 Ncube Corporation High performance computer system
US4972314A (en) 1985-05-20 1990-11-20 Hughes Aircraft Company Data flow signal processor method and apparatus
US4754398A (en) * 1985-06-28 1988-06-28 Cray Research, Inc. System for multiprocessor communication using local and common semaphore and information registers
US4739476A (en) 1985-08-01 1988-04-19 General Electric Company Local interconnection scheme for parallel processing architectures
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
US4835729A (en) * 1985-12-12 1989-05-30 Alcatel Usa, Corp. Single instruction multiple data (SIMD) cellular array processing apparatus with on-board RAM and address generator apparatus
GB8605366D0 (en) * 1986-03-05 1986-04-09 Secr Defence Digital processor
JPS6353678A (ja) * 1986-08-22 1988-03-07 Hitachi Ltd ベクトル処理装置
CA1293819C (en) * 1986-08-29 1991-12-31 Thinking Machines Corporation Very large scale computer
US4985832A (en) * 1986-09-18 1991-01-15 Digital Equipment Corporation SIMD array processing system with routing networks having plurality of switching stages to transfer messages among processors
US5230079A (en) * 1986-09-18 1993-07-20 Digital Equipment Corporation Massively parallel array processing system with processors selectively accessing memory module locations using address in microword or in address register
US5175865A (en) * 1986-10-28 1992-12-29 Thinking Machines Corporation Partitioning the processors of a massively parallel single array processor into sub-arrays selectively controlled by host computers
US5165023A (en) * 1986-12-17 1992-11-17 Massachusetts Institute Of Technology Parallel processing system with processor array and network communications system for transmitting messages of variable length
US5127104A (en) * 1986-12-29 1992-06-30 Dataflow Computer Corporation Method and product involving translation and execution of programs by automatic partitioning and data structure allocation
FR2622989B1 (fr) * 1987-11-06 1992-11-27 Thomson Csf Machine multiprocesseur reconfigurable pour traitement du signal
US5081575A (en) 1987-11-06 1992-01-14 Oryx Corporation Highly parallel computer architecture employing crossbar switch with selectable pipeline delay
CA1309198C (en) 1987-12-10 1992-10-20 Carlo J. Evangelisti Parallel rendering of smoothly shaded color triangles with anti-aliased edges for a three dimensional color display
US4939638A (en) * 1988-02-23 1990-07-03 Stellar Computer Inc. Time sliced vector processing
GB2216306A (en) 1988-02-29 1989-10-04 Ardent Computer Corp Load and synchronize computer architecture and process
US5159686A (en) * 1988-02-29 1992-10-27 Convex Computer Corporation Multi-processor computer system having process-independent communication register addressing
US5038282A (en) * 1988-05-11 1991-08-06 Massachusetts Institute Of Technology Synchronous processor with simultaneous instruction processing and data transfer
US4970724A (en) 1988-12-22 1990-11-13 Hughes Aircraft Company Redundancy and testing techniques for IC wafers
US5151969A (en) * 1989-03-29 1992-09-29 Siemens Corporate Research Inc. Self-repairing trellis networks
EP0424618A3 (en) 1989-10-24 1992-11-19 International Business Machines Corporation Input/output system
JP2835103B2 (ja) 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
GB8925721D0 (en) 1989-11-14 1990-01-04 Amt Holdings Processor array system
US6070003A (en) 1989-11-17 2000-05-30 Texas Instruments Incorporated System and method of memory access in apparatus having plural processors and plural memories
US5339447A (en) 1989-11-17 1994-08-16 Texas Instruments Incorporated Ones counting circuit, utilizing a matrix of interconnected half-adders, for counting the number of ones in a binary string of image data
US5239654A (en) 1989-11-17 1993-08-24 Texas Instruments Incorporated Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode
US5522083A (en) 1989-11-17 1996-05-28 Texas Instruments Incorporated Reconfigurable multi-processor operating in SIMD mode with one processor fetching instructions for use by remaining processors
US5212777A (en) * 1989-11-17 1993-05-18 Texas Instruments Incorporated Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation
JP3102495B2 (ja) * 1989-12-28 2000-10-23 株式会社日立製作所 仮想記憶管理方法
US5185872A (en) 1990-02-28 1993-02-09 Intel Corporation System for executing different cycle instructions by selectively bypassing scoreboard register and canceling the execution of conditionally issued instruction if needed resources are busy
US5276886A (en) * 1990-10-11 1994-01-04 Chips And Technologies, Inc. Hardware semaphores in a multi-processor environment
US5625836A (en) 1990-11-13 1997-04-29 International Business Machines Corporation SIMD/MIMD processing memory element (PME)
US5815723A (en) * 1990-11-13 1998-09-29 International Business Machines Corporation Picket autonomy on a SIMD machine
US5734921A (en) 1990-11-13 1998-03-31 International Business Machines Corporation Advanced parallel array processor computer package
US5828894A (en) 1990-11-13 1998-10-27 International Business Machines Corporation Array processor having grouping of SIMD pickets
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
US5175858A (en) * 1991-03-04 1992-12-29 Adaptive Solutions, Inc. Mechanism providing concurrent computational/communications in SIMD architecture
JP2743608B2 (ja) * 1991-03-27 1998-04-22 日本電気株式会社 共有レジスタ制御方式
US5522080A (en) * 1991-10-24 1996-05-28 Intel Corporation Centralized control SIMD processor having different priority levels set for each data transfer request type and successively repeating the servicing of data transfer request in a predetermined order
CA2073516A1 (en) * 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
JP2642039B2 (ja) 1992-05-22 1997-08-20 インターナショナル・ビジネス・マシーンズ・コーポレイション アレイ・プロセッサ
JP2878538B2 (ja) * 1992-12-03 1999-04-05 富士通株式会社 データ処理装置及びデータ処理方法
GB2273377A (en) 1992-12-11 1994-06-15 Hughes Aircraft Co Multiple masks for array processors
US5437045A (en) * 1992-12-18 1995-07-25 Xerox Corporation Parallel processing with subsampling/spreading circuitry and data transfer circuitry to and from any processing unit
US5457779A (en) 1993-01-15 1995-10-10 Silicon Graphics, Inc. System for accessing graphic data in a SIMD processing environment
US5825921A (en) 1993-03-19 1998-10-20 Intel Corporation Memory transfer apparatus and method useful within a pattern recognition system
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
JP3199205B2 (ja) * 1993-11-19 2001-08-13 株式会社日立製作所 並列演算装置
US5745778A (en) 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
US5606683A (en) * 1994-01-28 1997-02-25 Quantum Effect Design, Inc. Structure and method for virtual-to-physical address translation in a translation lookaside buffer
CN1107597A (zh) 1994-02-24 1995-08-30 吴乾弥 管线式与心跳式及单指令多数据流的阵列处理架构及方法
US5487022A (en) 1994-03-08 1996-01-23 Texas Instruments Incorporated Normalization method for floating point numbers
US5673407A (en) 1994-03-08 1997-09-30 Texas Instruments Incorporated Data processor having capability to perform both floating point operations and memory access in response to a single instruction
US5652872A (en) * 1994-03-08 1997-07-29 Exponential Technology, Inc. Translator having segment bounds encoding for storage in a TLB
WO1995028686A1 (en) 1994-04-15 1995-10-26 David Sarnoff Research Center, Inc. Parallel processing computer containing a multiple instruction stream processing architecture
JP3308770B2 (ja) 1994-07-22 2002-07-29 三菱電機株式会社 情報処理装置および情報処理装置における計算方法
US5590356A (en) * 1994-08-23 1996-12-31 Massachusetts Institute Of Technology Mesh parallel computer architecture apparatus and associated methods
US5649135A (en) * 1995-01-17 1997-07-15 International Business Machines Corporation Parallel processing system and method using surrogate instructions
US5630160A (en) 1995-03-08 1997-05-13 Texas Instruments Incorporated Floating point exponent compare using repeated two bit compare cell
US5752031A (en) * 1995-04-24 1998-05-12 Microsoft Corporation Queue object for controlling concurrency in a computer system
US6112019A (en) 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US5808690A (en) * 1996-01-02 1998-09-15 Integrated Device Technology, Inc. Image generation system, methods and computer program products using distributed processing
US5850489A (en) * 1996-01-02 1998-12-15 Integrated Device Technology, Inc. Linear expression evaluator
US5831625A (en) * 1996-01-02 1998-11-03 Integrated Device Technology, Inc. Wavelet texturing
US5892517A (en) * 1996-01-02 1999-04-06 Integrated Device Technology, Inc. Shared access texturing of computer graphic images
US6108460A (en) * 1996-01-02 2000-08-22 Pixelfusion Limited Load balanced image generation
US5835925A (en) 1996-03-13 1998-11-10 Cray Research, Inc. Using external registers to extend memory reference capabilities of a microprocessor
US6104842A (en) * 1996-06-10 2000-08-15 Integrated Device Technology, Inc. Geometry processing of digital video models and images
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US6154225A (en) 1996-10-11 2000-11-28 Silicon Motion, Inc. Virtual refresh™ architecture for a video-graphics controller
US6016395A (en) 1996-10-18 2000-01-18 Samsung Electronics Co., Ltd. Programming a vector processor and parallel programming of an asymmetric dual multiprocessor comprised of a vector processor and a risc processor
US6697063B1 (en) 1997-01-03 2004-02-24 Nvidia U.S. Investment Company Rendering pipeline
US5796385A (en) * 1997-01-28 1998-08-18 Integrated Device Technology, Inc. Luminance controlled color resolution reduction
US5949426A (en) * 1997-01-28 1999-09-07 Integrated Device Technology, Inc. Non-linear texture map blending
US6055619A (en) 1997-02-07 2000-04-25 Cirrus Logic, Inc. Circuits, system, and methods for processing multiple data streams
US6131151A (en) 1997-11-12 2000-10-10 Lsi Logic Corporation Processing high-speed digital datastreams with reduced memory
US6055579A (en) 1997-11-17 2000-04-25 Silicon Graphics, Inc. Distributed control and synchronization of multiple data processors using flexible command queues
US6173389B1 (en) 1997-12-04 2001-01-09 Billions Of Operations Per Second, Inc. Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor
US6259460B1 (en) 1998-03-26 2001-07-10 Silicon Graphics, Inc. Method for efficient handling of texture cache misses by recirculation
US6173388B1 (en) 1998-04-09 2001-01-09 Teranex Inc. Directly accessing local memories of array processors for improved real-time corner turning processing
US6266759B1 (en) * 1998-12-14 2001-07-24 Cray, Inc. Register scoreboarding to support overlapped execution of vector memory reference instructions in a vector processor
US6304955B1 (en) 1998-12-30 2001-10-16 Intel Corporation Method and apparatus for performing latency based hazard detection
US6308252B1 (en) * 1999-02-04 2001-10-23 Kabushiki Kaisha Toshiba Processor method and apparatus for performing single operand operation and multiple parallel operand operation
EP1181648A1 (en) 1999-04-09 2002-02-27 Clearspeed Technology Limited Parallel data processing apparatus
US8171263B2 (en) 1999-04-09 2012-05-01 Rambus Inc. Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions
US7506136B2 (en) 1999-04-09 2009-03-17 Clearspeed Technology Plc Parallel data processing apparatus
US20080008393A1 (en) 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US8762691B2 (en) 1999-04-09 2014-06-24 Rambus Inc. Memory access consolidation for SIMD processing elements using transaction identifiers
CN1993709B (zh) * 2005-05-20 2010-12-15 索尼株式会社 信号处理设备
US7447873B1 (en) * 2005-11-29 2008-11-04 Nvidia Corporation Multithreaded SIMD parallel processor with loading of groups of threads
US20080059762A1 (en) * 2006-09-01 2008-03-06 Bogdan Mitu Multi-sequence control for a data parallel system

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62274454A (ja) * 1986-05-23 1987-11-28 Hitachi Ltd 並列処理計算機
JPH03132861A (ja) * 1989-10-19 1991-06-06 Agency Of Ind Science & Technol マルチプロセッサ・システムの再構成制御方式
JPH06231092A (ja) * 1992-05-22 1994-08-19 Internatl Business Mach Corp <Ibm> コンピュータ・システム
JPH0668053A (ja) * 1992-08-20 1994-03-11 Toshiba Corp 並列計算機
JPH06131309A (ja) * 1992-10-21 1994-05-13 Sanyo Electric Co Ltd 並列計算機システム
JPH08503563A (ja) * 1992-11-13 1996-04-16 ザ・ユニヴァーシティ・オヴ・ノース・キャロライナ・アト・チャペル・ヒル 画像発生アーキテクチャおよび装置
JPH07253957A (ja) * 1994-03-15 1995-10-03 Hitachi Ltd 並列プロセッサの切替え制御方式
JPH0926888A (ja) * 1995-07-13 1997-01-28 Hitachi Ltd 排他制御装置
JPH09288652A (ja) * 1996-04-23 1997-11-04 Nec Corp 並列プロセッサの冗長切り替え装置
JPH10187631A (ja) * 1996-07-02 1998-07-21 Sun Microsyst Inc 拡張された対称マルチプロセッサ・アーキテクチャ
JPH10133872A (ja) * 1996-10-29 1998-05-22 Fujitsu Ltd 命令バッファを有するプロセッサ装置

Also Published As

Publication number Publication date
US7363472B2 (en) 2008-04-22
JP2002541586A (ja) 2002-12-03
US20080040575A1 (en) 2008-02-14
JP5285828B2 (ja) 2013-09-11
EP1181648A1 (en) 2002-02-27
WO2000062182A2 (en) 2000-10-19
AU3829500A (en) 2000-11-14
US20070226458A1 (en) 2007-09-27
US7925861B2 (en) 2011-04-12
US20020174318A1 (en) 2002-11-21
JP2011023036A (ja) 2011-02-03
WO2000062182A3 (en) 2001-04-12

Similar Documents

Publication Publication Date Title
JP5285828B2 (ja) 並列データ処理装置
US7526630B2 (en) Parallel data processing apparatus
US7506136B2 (en) Parallel data processing apparatus
US8762691B2 (en) Memory access consolidation for SIMD processing elements using transaction identifiers
US8171263B2 (en) Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions
US7802079B2 (en) Parallel data processing apparatus
US20080008393A1 (en) Parallel data processing apparatus
US20080007562A1 (en) Parallel data processing apparatus
US20160283241A1 (en) Parallel data processing apparatus
US7627736B2 (en) Thread manager to control an array of processing elements
US20070294510A1 (en) Parallel data processing apparatus
US7966475B2 (en) Parallel data processing apparatus
US8169440B2 (en) Parallel data processing apparatus
US8174530B2 (en) Parallel date processing apparatus
US20070242074A1 (en) Parallel data processing apparatus
US20080162874A1 (en) Parallel data processing apparatus
US20080016318A1 (en) Parallel data processing apparatus
GB2348971A (en) Accessing a memory unit in a parallel data processing system
US20080162875A1 (en) Parallel Data Processing Apparatus
GB2348976A (en) Single instruction multiple data array
GB2348978A (en) Parallel redundant data processing apparatus
GB2348982A (en) Parallel data processing system
GB2348984A (en) Parallel data processing system
GB2348973A (en) SIMD array with array controller
GB2348972A (en) Array controller for array of processing elements

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101029

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101029

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20101105

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110411

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110411

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121219

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130516