Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP5285828B2 - 並列データ処理装置 - Google Patents
[go: Go Back, main page]

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

並列データ処理装置 Download PDF

Info

Publication number
JP5285828B2
JP5285828B2 JP2000611183A JP2000611183A JP5285828B2 JP 5285828 B2 JP5285828 B2 JP 5285828B2 JP 2000611183 A JP2000611183 A JP 2000611183A JP 2000611183 A JP2000611183 A JP 2000611183A JP 5285828 B2 JP5285828 B2 JP 5285828B2
Authority
JP
Japan
Prior art keywords
data
processing
instruction
memory
processing element
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2000611183A
Other languages
English (en)
Other versions
JP2002541586A (ja
Inventor
ステュッタード、デイブ
ウイリアムズ、デイブ
オデア、イーモン
ファウルズ、ゴードン
ローデス、ジョン
キャメロン、ケン
アトキン、フィル
ウインザー、ポール
デビッド、ラッセル
マッコーネル、レイ
デイ、ティム
グリーア、トレイ
Original Assignee
ラムバス・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GB9908229A external-priority patent/GB2348983A/en
Priority claimed from GB9908227A external-priority patent/GB2349484A/en
Priority claimed from GB9908228A external-priority patent/GB2348982A/en
Priority claimed from GB9908211A external-priority patent/GB2348977A/en
Priority claimed from GB9908201A external-priority patent/GB2348972A/en
Priority claimed from GB9908203A external-priority patent/GB2348973B/en
Priority claimed from GB9908225A external-priority patent/GB2348980B/en
Priority claimed from GB9908226A external-priority patent/GB2348981A/en
Priority claimed from GB9908222A external-priority patent/GB2352306A/en
Priority claimed from GB9908209A external-priority patent/GB2348976A/en
Priority claimed from GB9908230A external-priority patent/GB2348984B/en
Priority claimed from GB9908204A external-priority patent/GB2348974B/en
Priority claimed from GB9908205A external-priority patent/GB2348975A/en
Priority claimed from GB9908199A external-priority patent/GB2348971B/en
Priority claimed from GB9908214A external-priority patent/GB2348978A/en
Priority claimed from GB9908219A external-priority patent/GB2348979A/en
Application filed by ラムバス・インコーポレーテッド filed Critical ラムバス・インコーポレーテッド
Publication of JP2002541586A publication Critical patent/JP2002541586A/ja
Application granted granted Critical
Publication of JP5285828B2 publication Critical patent/JP5285828B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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)

Description

本発明は、並列データ処理装置に関し、特にSIMD(単一命令複数データ)処理装置に関する。
データ処理システムは、ますます、大量のデータを処理することを必要とされている。さらに、このようなシステムのユーザは、データ処理の速度が加速することを要求している。大量データの高速処理に対するニーズの1つの特定の例は、コンピュータグラフィックスの分野にある。コンピュータグラフィックスにおいては、例えば、画面に表示されるオブジェクトや形状のジオメトリ、テキスチャ、および色に関係する大量データが作成される。コンピュータグラフィックスのユーザは、処理されるデータ量を増加し、データが処理されなければならない速度を加速するより真に迫った、より高速なグラフィックディスプレイをますます要求しつつある。
コンピュータシステム内で大量のデータを処理するために過去に提案された処理アーキテクチャは、処理要素の単一命令複数データ(SIMD)アレイを使用する。このようなアレイの中では、処理要素の全てが同じ命令ストリームを受け取るが、異なるそれぞれのデータ項目上で動作する。このようなアーキテクチャは、それによって並列でデータを処理することができるが、並列命令ストリームを作成する必要はない。これは、並列処理機械から優れた性能を得る効率的、かつ相対的に簡略な方法である。
発明が解決しようとする課題
しかしながら、SIMDアーキテクチャは、システムが多数の相対的に小さいデータ項目グループを処理しなければならないときには非効率となる場合がある。例えば、三角形などの小さいグラフィックプリミティブ用のグラフィック表示画面に関係するデータを処理するSIMDアレイの場合、アレイの相対的に少ない処理要素だけが、プリミティブに関係するデータを処理するためにイネーブルされるだろう。この場合では、大きな割合の処理要素は、データがある特定のグループに処理されている間、未使用のまま残ってよい。
したがって、この問題を克服する、あるいは緩和することができるシステムを作成することが望ましい。
課題を解決するための手段
本発明のある態様に従って、処理要素のSIMD(単一命令複数データ)アレイを備えるデータ処理装置が備えられ、処理要素は、複数の処理ブロックに作動可能に分割され、処理ブロックはデータ項目のそれぞれのグループを処理するように作動可能である。
本発明の別の態様に従って、共通した受信された命令に従ってそれぞれのデータ項目を処理するように作動可能な処理要素のアレイを備えるデータ処理装置が提供され、処理要素は、少なくとも1つの処理要素を有する複数の処理ブロックに分割され、該処理ブロックはデータ項目のそれぞれのグループを処理するように作動可能である。
本発明の多様な追加の態様とは、添付クレームによって例証される。
以下に記述されるデータ処理システムは、画面での表示のためにグラフィック画像を作成するためのグラフィックデータ処理システムである。しかしながら、この実施形態は純粋に例示的であり、グラフィックデータを処理するためにここに記述されている技法およびアーキテクチャは、ビデオデータなどのその他のデータ型に等しく適用可能である。このシステムは、言うまでもなく、その他の信号および/またはデータ処理技法およびシステムにも適用可能である。
システムの概要が示され、システムの多様な機能上のユニットの簡略な説明が続くだろう。それから、グラフィック処理方法が例によって説明され、後に機能ユニットの詳細な説明が続く。
概要
図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内の多様なユニットは、制御ユニットによって発行される命令を実行するために動作する。
グラフィックデータ処理システムを示すブロック図である。 図1のグラフィックデータ処理システムを示すさらに詳細なブロック図である。 図1のグラフィックデータ処理システムを示すさらに詳細なブロック図である。 図1のグラフィックデータ処理システムを示すさらに詳細なブロック図である。 図3のシステムの処理コアのブロック図である。 図5のシステムのスレッドマネージャのブロック図である。 図5のシステムのアレイコントローラのブロック図である。 図5のチャネルコントローラの命令発行ステート機械のブロック図である。 図5のシステムのビニングユニットのブロック図である。 図5のシステムの処理ブロックのブロック図である。 図1から図10のシステムを使用するデータ処理を示すフローチャートである。 図6のスレッドマネージャのスレッドプロセッサのさらに詳細なブロック図である。 図6のスレッドマネージャのスレッドプロセッサのさらに詳細なブロック図である。 図10の処理ブロックのプロセッサユニットのブロック図である。 処理要素インタフェースを示すブロック図である。 ブロックI/Oインタフェースを示すブロック図である。 図14のプロセッサユニットの一部のブロック図である。 図14のプロセッサユニットの別の部分のブロック図である。

Claims (25)

  1. 処理要素のSIMD(単一命令複数データ)アレイを備えるデータ処理装置であって、
    複数の命令ストリームの各々に対する命令項目を検索する手段と、
    前記複数の命令ストリームを結合してシリアル命令ストリームにする手段と、
    前記シリアル命令ストリームを処理要素のアレイのデータ処理を制御する処理コントローラまたは前記処理要素へおよび前記処理要素からのデータの転送を制御するデータ転送コントローラのいずれかに配分する手段と、
    各々が各命令ストリーム用であり、それぞれの命令ストリームを制御する複数の命令ストリームプロセッサと、
    命令ストリーム間の同期を制御するセマフォコントローラと、
    前記命令ストリームの各々に関する状態情報を供給する状態ブロックと、
    状態情報を受信するように接続され、かつ前記命令ストリームのどれがアクティブであるべきであるかを決定するように作動可能であるスケジューリング手段と、を具備し、
    前記処理要素が、複数の処理ブロックに作動可能に分割され、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能である、データ処理装置。
  2. 共通受信命令に従ってそれぞれのデータ項目を処理するように作動可能である処理要素のアレイを備えるデータ処理装置であって、
    複数の命令ストリームの各々に対する命令項目を検索する手段と、
    前記複数の命令ストリームを結合してシリアル命令ストリームにする手段と、
    前記シリアル命令ストリームを処理要素のアレイのデータ処理を制御する処理コントローラまたは前記処理要素へおよび前記処理要素からのデータの転送を制御するデータ転送コントローラのいずれかに配分する手段と、
    各々が各命令ストリーム用であり、それぞれの命令ストリームを制御する複数の命令ストリームプロセッサと、
    命令ストリーム間の同期を制御するセマフォコントローラと、
    前記命令ストリームの各々に関する状態情報を供給する状態ブロックと、
    状態情報を受信するように接続され、かつ前記命令ストリームのどれがアクティブであるべきであるかを決定するように作動可能であるスケジューリング手段と、を具備し、
    前記処理要素が、少なくとも1つの処理要素を有する複数の処理ブロックに作動可能に分割され、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能である、データ処理装置。
  3. 前記処理ブロックの中の少なくとも1つが、欠陥のある処理ブロックの代わりにデータ項目のグループを処理するように作動可能な冗長ブロックである、請求項1または2記載の装置。
  4. 処理ブロックに生じる欠陥を検出し、かつこの処理ブロックのデータ処理機能を冗長処理ブロックに転送するように作動可能な欠陥検出手段を備える、請求項3記載の装置。
  5. 各処理ブロックには、関連するブロックの欠陥処理要素の代わりにデータ項目を処理するように作動可能な少なくとも1つの冗長処理要素が装備されている、請求項1乃至請求項4のいずれか一項に記載の装置。
  6. 処理ブロックの前記処理要素が、その中の所定数の処理要素を有するグループに配置され、各々のこのようなグループが、前記グループの欠陥処理要素を取り換えるための少なくとも1つのこのような冗長処理要素を含む、請求項5記載の装置。
  7. 処理要素に生じる欠陥を検出し、かつこの処理要素のデータ処理機能を冗長処理要素に転送するように作動可能な欠陥検出手段を備える、請求項5または6記載の装置。
  8. 各処理ブロックが、各処理要素のための数式を評価し、かつそれぞれの評価を前記処理ブロックの前記処理要素に供給するように作動可能である、数式評価器を含む、請求項1乃至請求項7のいずれか一項に記載の装置。
  9. 前記ブロックの各処理要素のための式ax+by+cを評価するように作動可能であり、各処理要素が、特定の(x,y)値を割り当てられ、かつa、bおよびcが前記数式評価器に供給された係数である、請求項8記載の装置。
  10. 前記係数a、bおよびcが、前記処理ブロックの前記処理要素によって前記数式評価器に供給される、請求項9記載の装置。
  11. 前記係数a、bおよびcが、前記処理ブロックの外部にある供給源によって前記数式評価器に供給される、請求項9記載の装置。
  12. 前記処理要素によって処理される命令項目およびデータ項目が、互いから別々に前記処理要素に供給される、請求項1乃至請求項11のいずれか一項に記載の装置。
  13. 処理ブロックの処理要素によって処理されるデータ項目が、この処理ブロックの処理要素によって供給される、請求項1乃至請求項12のいずれか一項に記載の装置。
  14. 各処理要素が、データ項目および命令項目を受信し、受信命令項目に従って作動可能であるプロセッサユニットと、前記プロセッサユニットから受信されたデータ項目を記憶するメモリユニットと、前記プロセッサユニットと前記メモリユニットとの間に配置され、前記プロセッサユニットおよび前記メモリユニットからのデータ項目を記憶するように作動可能であり、これらのユニットの他方に転送し、かつ前記処理要素の前記プロセッサユニットによって処理するためのデータ項目を記憶するように作動可能であるレジスタファイルとを含む、請求項1乃至請求項13のいずれか一項に記載の装置。
  15. データ項目および命令項目を記憶する外部メモリと、
    各処理要素と前記外部メモリとの間のデータ項目および命令項目の転送を制御するコントローラ手段とを備え、
    前記または各処理要素が、
    データ項目および命令項目を受信するように接続され、かつ前記命令項目に従って前記データ項目を処理するように作動可能なプロセッサユニットと、
    前記プロセッサユニットに入力するためのデータ項目を一時的に記憶する複数の記憶レジスタであって、前記記憶レジスタの少なくとも1つがオフセット値を記憶するように作動可能である記憶レジスタと、
    データ項目と外部メモリアドレスを示すアドレスデータを記憶するメモリユニットと、
    データ項目を記憶するレジスタファイルであって、前記レジスタファイルが、前記プロセッサユニットと前記メモリユニットとの間に接続され、これらのユニットの他方に転送するためにこれらのユニットのいずれかからデータ項目を受信し、かつ前記処理要素の外部のメモリにデータ項目を転送し、かつ前記プロセッサユニットによって処理するためのデータ項目を記憶する、レジスタファイルとを備え、
    前記コントローラ手段が、オフセット値を前記記憶レジスタから検索し、前記オフセット値を所定の基準アドレスと結合し、計算された内部アドレスを生じさせ、前記内部メモリの前記計算された内部アドレスに記憶された外部アドレスデータを検索し、かつ前記外部アドレスで前記外部メモリにアクセスするように作動可能である、請求項1または2記載のデータ処理装置。
  16. 前記コントローラ手段が、記憶データまたは命令項目を外部メモリの外部アドレスから検索し、前記検索されたデータまたは命令項目を前記処理要素に転送するように作動可能である、請求項15記載のデータ処理装置。
  17. 前記コントローラ手段が、前記処理要素からのデータ項目を前記外部アドレスに記憶するための前記外部メモリに転送するように作動可能である、請求項15記載のデータ処理装置。
  18. 各処理要素が、
    命令項目に従ってデータ項目を処理するプロセッサユニットと、
    前記処理要素がデータ項目を処理するために使用可能であるかどうかを指示するイネーブルレジスタとを備え、
    前記イネーブルレジスタが、複数のインディケータを含み、各々が前記処理要素の使用許可状態または使用禁止状態を示すように作動可能であり、前記インディケータ全てが前記使用許可状態を示す場合、前記処理要素がデータ項目の処理のために利用可能である、請求項1乃至請求項17のいずれか一項に記載のデータ処理装置。
  19. 前記イネーブルレジスタの各インディケータが、関連される前記処理要素のための条件付処理ステップの状態を示すように作動可能である、請求項18記載のデータ処理装置。
  20. 前記イネーブルレジスタがハードウェアレジスタによって備えられる、請求項18または19記載のデータ処理装置。
  21. 各処理要素が、プロセッサユニットと、データ項目をデータ記憶ユニットへおよびデータ記憶ユニットから転送するメモリ入出力ポートと、データ項目を前記プロセッサユニットに転送するデータレジスタのセットとを備え、前記データレジスタのセットの前記レジスタの各々が、データ項目を前記メモリ入出力ポートから受信し、かつデータ項目を前記プロセッサユニットの出力から受信し、かつデータ項目を前記プロセッサユニットの入力に転送するために接続される、請求項1乃至請求項20のいずれか一項に記載のデータ処理装置。
  22. 請求項1乃至請求項21のいずれか一項に記載のデータ処理装置で命令ストリームをスケジュールする方法であって、どの命令ストリームが、時間における特定の瞬間に優先順位を有するかを決定し、かつこの命令ストリームを前記SIMDアレイに転送することを備える、方法。
  23. 処理要素のSIMD(単一命令複数データ)アレイを備えるデータ処理装置を使用してデータ項目を処理する方法であって、
    複数の命令ストリームの各々に対する命令項目を検索し、
    前記複数の命令ストリームを結合してシリアル命令ストリームにし、
    前記シリアル命令ストリームを処理要素のアレイのデータ処理を制御する処理コントローラまたは前記処理要素へおよび前記処理要素からのデータの転送を制御するデータ転送コントローラのいずれかに配分し、
    各々が各命令ストリーム用であり、それぞれの命令ストリームを制御し、
    命令ストリーム間の同期を制御し、
    前記命令ストリームの各々に関する状態情報を供給し、
    状態情報を受信するように接続され、かつ前記命令ストリームのどれがアクティブであるべきであるかを決定し、
    共通命令を前記アレイの前記処理要素の全てに供給し、
    各処理要素が前記共通命令に従って異なるデータ項目を処理するようにそれぞれのデータ項目を前記処理要素に供給することを備え、
    前記データ項目が、前記命令項目とは無関係に前記処理要素に供給される、方法。
  24. 前記アレイによって処理されるデータ項目が、前記アレイの前記処理要素の少なくとも1つによって直接供給される、請求項23記載の方法。
  25. 前記処理要素が、複数の処理ブロックに作動可能に分割され、各ブロックが所定のグループからデータ項目を処理するように作動可能である、請求項23記載の方法。
JP2000611183A 1999-04-09 2000-04-07 並列データ処理装置 Expired - Lifetime JP5285828B2 (ja)

Applications Claiming Priority (33)

Application Number Priority Date Filing Date Title
GB9908203.4 1999-04-09
GB9908201A GB2348972A (en) 1999-04-09 1999-04-09 Array controller for array of processing elements
GB9908222.4 1999-04-09
GB9908209.1 1999-04-09
GB9908203A GB2348973B (en) 1999-04-09 1999-04-09 Parallel data processing systems
GB9908199.4 1999-04-09
GB9908225A GB2348980B (en) 1999-04-09 1999-04-09 Parallel data processing systems
GB9908226A GB2348981A (en) 1999-04-09 1999-04-09 Parallel data processing system with SIMD array
GB9908222A GB2352306A (en) 1999-04-09 1999-04-09 Parallel processing apparatus using a SIMD array
GB9908205A GB2348975A (en) 1999-04-09 1999-04-09 Parallel data processing systems
GB9908229A GB2348983A (en) 1999-04-09 1999-04-09 Parallel data processing system
GB9908227A GB2349484A (en) 1999-04-09 1999-04-09 Parallel data processing system with SIMD array
GB9908201.8 1999-04-09
GB9908211.7 1999-04-09
GB9908219.0 1999-04-09
GB9908205.9 1999-04-09
GB9908226.5 1999-04-09
GB9908227.3 1999-04-09
GB9908225.7 1999-04-09
GB9908209A GB2348976A (en) 1999-04-09 1999-04-09 Single instruction multiple data array
GB9908199A GB2348971B (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
GB9908219A GB2348979A (en) 1999-04-09 1999-04-09 Parallel data processing system with shared memory
GB9908214.1 1999-04-09
GB9908204.2 1999-04-09
GB9908204A GB2348974B (en) 1999-04-09 1999-04-09 Parallel data processing systems
GB9908230A GB2348984B (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
GB9908228.1 1999-04-09
GB9908230.7 1999-04-09
GB9908228A GB2348982A (en) 1999-04-09 1999-04-09 Parallel data processing system
GB9908229.9 1999-04-09
PCT/GB2000/001332 WO2000062182A2 (en) 1999-04-09 2000-04-07 Parallel data processing apparatus

Related Child Applications (2)

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

Publications (2)

Publication Number Publication Date
JP2002541586A JP2002541586A (ja) 2002-12-03
JP5285828B2 true JP5285828B2 (ja) 2013-09-11

Family

ID=27585628

Family Applications (3)

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

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2010222021A Pending JP2011023036A (ja) 1999-04-09 2010-09-30 並列データ処理装置
JP2010222022A Pending JP2011023037A (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 (163)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8174530B2 (en) * 1999-04-09 2012-05-08 Rambus Inc. Parallel date processing apparatus
US20080162874A1 (en) * 1999-04-09 2008-07-03 Dave Stuttard Parallel data processing apparatus
US20080008393A1 (en) * 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US20070242074A1 (en) * 1999-04-09 2007-10-18 Dave Stuttard Parallel data processing apparatus
US7506136B2 (en) 1999-04-09 2009-03-17 Clearspeed Technology Plc Parallel data processing apparatus
US7627736B2 (en) 1999-04-09 2009-12-01 Clearspeed Technology Plc Thread manager to control an array of processing elements
US20080162875A1 (en) * 1999-04-09 2008-07-03 Dave Stuttard 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
US8169440B2 (en) 1999-04-09 2012-05-01 Rambus Inc. Parallel data processing apparatus
US7966475B2 (en) 1999-04-09 2011-06-21 Rambus Inc. Parallel data processing apparatus
US7802079B2 (en) 1999-04-09 2010-09-21 Clearspeed Technology Limited Parallel data processing apparatus
US8762691B2 (en) 1999-04-09 2014-06-24 Rambus Inc. Memory access consolidation for SIMD processing elements using transaction identifiers
EP1181648A1 (en) 1999-04-09 2002-02-27 Clearspeed Technology Limited Parallel data processing apparatus
US7526630B2 (en) 1999-04-09 2009-04-28 Clearspeed Technology, Plc Parallel data processing apparatus
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
US7013302B2 (en) * 2000-12-22 2006-03-14 Nortel Networks Limited Bit field manipulation
US7069422B2 (en) * 2000-12-22 2006-06-27 Modelski Richard P Load-shift carry instruction
EP1384160A2 (en) 2001-03-02 2004-01-28 Atsana Semiconductor Corp. Apparatus for variable word length computing in an array processor
US6895520B1 (en) 2001-03-02 2005-05-17 Advanced Micro Devices, Inc. Performance and power optimization via block oriented performance measurement and control
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
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
GB2417586B (en) 2002-07-19 2007-03-28 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
US7870553B2 (en) 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
EP1658563B1 (en) * 2003-08-28 2013-06-05 MIPS Technologies, Inc. Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor
US9032404B2 (en) 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7418585B2 (en) 2003-08-28 2008-08-26 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
US7836450B2 (en) * 2003-08-28 2010-11-16 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
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
US7577869B2 (en) * 2004-08-11 2009-08-18 Ati Technologies Ulc Apparatus with redundant circuitry and method therefor
US9098932B2 (en) * 2004-08-11 2015-08-04 Ati Technologies Ulc Graphics processing logic with variable arithmetic logic unit control 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
JP4893621B2 (ja) * 2005-05-20 2012-03-07 ソニー株式会社 信号処理装置
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
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
US7584342B1 (en) 2005-12-15 2009-09-01 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and SIMD instruction issue
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
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
US8074224B1 (en) * 2005-12-19 2011-12-06 Nvidia Corporation Managing state information for a multi-threaded processor
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
US7526634B1 (en) 2005-12-19 2009-04-28 Nvidia Corporation Counter-based delay of dependent thread group execution
WO2007082044A2 (en) * 2006-01-10 2007-07-19 Brightscale, Inc. Method and apparatus for processing algorithm steps of multimedia data in parallel processing systems
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
US20080059764A1 (en) * 2006-09-01 2008-03-06 Gheorghe Stefan Integral parallel machine
US20080059762A1 (en) * 2006-09-01 2008-03-06 Bogdan Mitu Multi-sequence control for a data parallel system
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
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
US8108625B1 (en) 2006-10-30 2012-01-31 Nvidia Corporation Shared memory with parallel access and access conflict resolution mechanism
US8429656B1 (en) 2006-11-02 2013-04-23 Nvidia Corporation Thread count throttling for efficient resource utilization
US7663621B1 (en) * 2006-11-03 2010-02-16 Nvidia Corporation Cylindrical wrapping using shader hardware
US8271746B1 (en) 2006-11-03 2012-09-18 Nvidia Corporation Tiering of linear clients
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
JP5394501B2 (ja) 2009-10-02 2014-01-22 シャープ株式会社 血管状態モニタリング方法
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
JP5386634B2 (ja) 2010-03-19 2014-01-15 シャープ株式会社 測定結果処理装置、測定システム、測定結果処理方法、制御プログラムおよび記録媒体
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
US10157060B2 (en) 2011-12-29 2018-12-18 Intel Corporation Method, device and system for control signaling in a data path module of a data stream processing engine
US9411584B2 (en) 2012-12-29 2016-08-09 Intel Corporation Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality
US9411592B2 (en) 2012-12-29 2016-08-09 Intel Corporation Vector address conflict resolution with vector population count 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
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US9934043B2 (en) 2013-08-08 2018-04-03 Linear Algebra Technologies Limited Apparatus, systems, and methods for providing computational imaging pipeline
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
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
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
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
JP2018165913A (ja) * 2017-03-28 2018-10-25 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
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
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
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
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast 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
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
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication 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
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations 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
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation 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
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
US12504958B2 (en) 2020-09-09 2025-12-23 Ascenium, Inc. Compute element processing using control word templates
US12493554B2 (en) 2020-09-09 2025-12-09 Ascenium, Inc. Parallel processing using hazard detection and mitigation
US12578991B2 (en) 2020-09-09 2026-03-17 Ascenium, Inc. Parallel processing architecture with distributed register files
US12086080B2 (en) 2020-09-26 2024-09-10 Intel Corporation Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits
EP4229572A4 (en) * 2020-10-15 2024-11-20 Ascenium, Inc. PARALLEL PROCESSING ARCHITECTURE WITH BACKGROUND LOADS
US12353320B2 (en) 2023-08-31 2025-07-08 Advanced Micro Devices, Inc Low latency offloading of collectives over a switch

Family Cites Families (119)

* 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
JPS62274454A (ja) * 1986-05-23 1987-11-28 Hitachi Ltd 並列処理計算機
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
US5159686A (en) * 1988-02-29 1992-10-27 Convex Computer Corporation Multi-processor computer system having process-independent communication register addressing
GB2216306A (en) 1988-02-29 1989-10-04 Ardent Computer Corp Load and synchronize computer architecture and process
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
JPH03132861A (ja) * 1989-10-19 1991-06-06 Agency Of Ind Science & Technol マルチプロセッサ・システムの再構成制御方式
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
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
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
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
US5590345A (en) 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5734921A (en) 1990-11-13 1998-03-31 International Business Machines Corporation Advanced parallel array processor computer package
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
US5815723A (en) * 1990-11-13 1998-09-29 International Business Machines Corporation Picket autonomy on a SIMD machine
US5828894A (en) * 1990-11-13 1998-10-27 International Business Machines Corporation Array processor having grouping of SIMD pickets
US5625836A (en) 1990-11-13 1997-04-29 International Business Machines Corporation SIMD/MIMD processing memory element (PME)
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 インターナショナル・ビジネス・マシーンズ・コーポレイション アレイ・プロセッサ
JPH0668053A (ja) * 1992-08-20 1994-03-11 Toshiba Corp 並列計算機
JPH06131309A (ja) * 1992-10-21 1994-05-13 Sanyo Electric Co Ltd 並列計算機システム
US5388206A (en) * 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
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 吴乾弥 管线式与心跳式及单指令多数据流的阵列处理架构及方法
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
US5487022A (en) 1994-03-08 1996-01-23 Texas Instruments Incorporated Normalization method for floating point numbers
US5652872A (en) * 1994-03-08 1997-07-29 Exponential Technology, Inc. Translator having segment bounds encoding for storage in a TLB
JP3300776B2 (ja) 1994-03-15 2002-07-08 株式会社日立製作所 並列プロセッサの切替え制御方式
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
JPH0926888A (ja) * 1995-07-13 1997-01-28 Hitachi Ltd 排他制御装置
US5831625A (en) * 1996-01-02 1998-11-03 Integrated Device Technology, Inc. Wavelet texturing
US6108460A (en) * 1996-01-02 2000-08-22 Pixelfusion Limited Load balanced image generation
US5808690A (en) * 1996-01-02 1998-09-15 Integrated Device Technology, Inc. Image generation system, methods and computer program products using distributed processing
US5892517A (en) * 1996-01-02 1999-04-06 Integrated Device Technology, Inc. Shared access texturing of computer graphic images
US5850489A (en) * 1996-01-02 1998-12-15 Integrated Device Technology, Inc. Linear expression evaluator
US5835925A (en) 1996-03-13 1998-11-10 Cray Research, Inc. Using external registers to extend memory reference capabilities of a microprocessor
JPH09288652A (ja) * 1996-04-23 1997-11-04 Nec Corp 並列プロセッサの冗長切り替え装置
US6104842A (en) * 1996-06-10 2000-08-15 Integrated Device Technology, Inc. Geometry processing of digital video models and images
DE69728086D1 (de) * 1996-07-02 2004-04-22 Sun Microsystems Inc Erweiterte symmetrische Multiprozessorarchitektur
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
JP3645671B2 (ja) * 1996-10-29 2005-05-11 富士通株式会社 命令バッファを有するプロセッサ装置
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
US20080008393A1 (en) 1999-04-09 2008-01-10 Dave Stuttard 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
US8762691B2 (en) 1999-04-09 2014-06-24 Rambus Inc. Memory access consolidation for SIMD processing elements using transaction identifiers
EP1181648A1 (en) 1999-04-09 2002-02-27 Clearspeed Technology Limited Parallel data processing apparatus
JP4893621B2 (ja) * 2005-05-20 2012-03-07 ソニー株式会社 信号処理装置
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP5285828B2 (ja) 並列データ処理装置
US7958332B2 (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
US7627736B2 (en) Thread manager to control an array of processing elements
US20160283241A1 (en) Parallel data processing apparatus
US20070294510A1 (en) Parallel data processing apparatus
US8169440B2 (en) Parallel data processing apparatus
US7966475B2 (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
GB2348984A (en) Parallel data processing system
GB2348973A (en) SIMD array with array controller
GB2348978A (en) Parallel redundant data processing apparatus
GB2348982A (en) Parallel data processing system
GB2348972A (en) Array controller for array of processing elements
GB2348980A (en) Parallel data processing system with SIMD array

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20041215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20041215

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070302

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100330

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100630

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100714

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100727

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100824

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100930

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20101105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20101105

A521 Request for written amendment filed

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: 20120214

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120510

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120517

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120614

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120621

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120713

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130125

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130307

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130517

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130603

R150 Certificate of patent or registration of utility model

Ref document number: 5285828

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term