(57)【要約】【課題】  ＳＩＭＤアーキテクチャは、システムが多数の相対的に小さいデータ項目グループを処理しなければならないときには非効率となる問題を克服する並列データ処理装置を提供することを目的とする。【解決手段】  データ処理装置は、処理要素のＳＩＭＤ（単一命令複数データ）アレイ１０を備える。前記処理要素は、複数の処理ブロックに作動可能に分割され、前記処理ブロックは、データ項目のそれぞれのグループを処理するように作動可能である。【選択図】    図１
2011023036.tif 000002
【特許請求の範囲】
【請求項１】
処理要素のＳＩＭＤ（単一命令複数データ）アレイを備えるデータ処理装置であって、前記処理要素が、複数の処理ブロックに作動可能に分割され、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能である、データ処理装置。
【請求項２】
共通受信命令に従ってそれぞれのデータ項目を処理するように作動可能である処理要素のアレイを備えるデータ処理装置であって、前記処理要素が、少なくとも１つの処理要素を有する複数の処理ブロックに作動可能に分割され、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能である、データ処理装置。
【請求項３】
前記処理ブロックの中の少なくとも１つが、欠陥のある処理ブロックの代わりにデータ項目のグループを処理するように作動可な冗長ブロックである、請求項１または２記載の装置。
【請求項４】
処理ブロックに生じる欠陥を検出し、かつこの処理ブロックのデータ処理機能を冗長処理ブロックに転送するように作動可能な欠陥検出手段を備える、請求項３記載の装置。
【請求項５】
各処理ブロックには、関連するブロックの欠陥処理要素の代わりにデータ項目を処理するように作動可能な少なくとも１つの冗長処理要素が装備されている、前述の請求項のいずれか一項に記載の装置。
【請求項６】
処理ブロックの前記処理要素が、その中の所定数の処理要素を有するグループに配置され、各々のこのようなグループが、前記グループの欠陥処理要素を取り換えるための少なくとも１つのこのような冗長処理要素を含む、請求項５記載の装置。
【請求項７】
処理要素に生じる欠陥を検出し、かつこの処理要素のデータ処理機能を冗長処理要素に転送するように作動可能な欠陥検出手段を備える、請求項５または６記載の装置。
【請求項８】
各処理ブロックが、各処理要素のための数式を評価し、かつそれぞれの評価を前記処理ブロックの前記処理要素に供給するように作動可能である、前述の請求項のいずれか一項に記載の装置。
【請求項９】
前記ブロックの各処理要素のための式ａｘ＋ｂｙ＋ｃを評価するように作動可能であり、各処理要素が、特定の（ｘ，ｙ）値を割り当てられ、かつａ、ｂおよびｃが式評価器に供給された係数である、請求項８記載の装置。
【請求項１０】
前記係数ａ、ｂおよびｃが、前記処理ブロックの前記処理要素によって式評価器に供給される、請求項９記載の装置。
【請求項１１】
前記係数ａ、ｂおよびｃが、前記処理ブロックの外部にある供給源によって前記式評価器に供給される、請求項９記載の装置。
【請求項１２】
前記処理要素によって処理される命令項目およびデータ項目が、互いから別々に前記処理要素に供給される、前述の請求項のいずれか一項に記載の装置。
【請求項１３】
処理ブロックの処理要素によって処理されるデータ項目が、この処理ブロックの処理要素によって供給される、前述の請求項のいずれか一項に記載の装置。
【請求項１４】
各処理要素が、データ項目および命令項目を受信し、受信命令項目に従って作動可能であるプロセッサユニットと、前記プロセッサユニットから受信されたデータ項目を記憶するメモリユニットと、前記プロセッサユニットと前記メモリユニットとの間に配置され、前記プロセッサユニットおよび前記メモリユニットからのデータ項目を記憶するように作動可能であり、これらのユニットの他方に転送し、かつ前記処理要素の前記プロセッサユニットによって処理するためのデータ項目を記憶するように作動可能であるレジスタファイルとを含む、前述の請求項のいずれか一項に記載の装置。
【請求項１５】
データ項目および命令項目を記憶する外部メモリと、
各処理要素と前記外部メモリとの間のデータ項目および命令項目の転送を制御するコントローラ手段とを備え、
前記または各処理要素が、
データ項目および命令項目を受信するように接続され、かつ前記命令項目に従って前記データ項目を処理するように作動可能なプロセッサユニットと、
前記プロセッサユニットに入力するためのデータ項目を一時的に記憶する複数の記憶レジスタであって、前記記憶レジスタの少なくとも１つがオフセット値を記憶するように作動可能である記憶レジスタと、
データ項目と外部メモリアドレスを示すアドレスデータを記憶するメモリユニットと、
データ項目を記憶するレジスタファイルであって、前記レジスタファイルが、前記プロセッサユニットと前記メモリユニットとの間に接続され、これらのユニットの他方に転送するためにこれらのユニットのいずれかからデータ項目を受信し、かつ前記処理要素の外部のメモリにデータ項目を転送し、かつ前記プロセッサユニットによって処理するためのデータ項目を記憶する、レジスタファイルとを備え、
前記コントローラが、オフセット値を前記記憶レジスタから検索し、前記オフセット値を所定の基準アドレスと結合し、計算された内部アドレスを生じさせ、前記内部メモリの前記計算された内部アドレスに記憶された外部アドレスデータを検索し、かつ前記外部アドレスで前記外部メモリにアクセスするように作動可能である、前述の請求項のいずれか一項に記載のデータ処理装置。
【請求項１６】
前記コントローラが、記憶データまたは命令項目を外部メモリの外部アドレスから検索し、前記検索されたデータまたは命令項目を前記処理要素に転送するように作動可能である、請求項１５記載のデータ処理装置。
【請求項１７】
前記コントローラが、前記処理要素からのデータ項目を前記外部メモリアドレスに記憶するための前記外部メモリに転送するように作動可能である、請求項１５記載のデータ処理装置。
【請求項１８】
各処理要素が、
命令項目に従ってデータ項目を処理するプロセッサユニットと、
前記処理要素がデータ項目を処理するために使用可能であるかどうかを指示するイネーブルレジスタとを備え、
前記イネーブルレジスタが、複数のインディケータを含み、各々が前記処理要素の使用許可状態または使用禁止状態を示すように作動可能であり、前記インディケータ全てが前記使用許可状態を示す場合、前記処理要素がデータ項目の処理のために利用可能である、前述の請求項のいずれか一項に記載のデータ処理装置。
【請求項１９】
前記イネーブルレジスタの各インディケータが、関連される前記処理要素のための条件付処理ステップの状態を示すように作動可能である、請求項１８記載のデータ処理装置。
【請求項２０】
前記イネーブルレジスタがハードウェアレジスタによって備えられる、請求項１８または１９記載のデータ処理装置。
【請求項２１】
前記アレイの各処理要素が、少なくとも１つの隣接処理要素にデータ項目を直接転送するように作動可能であり、かつ各処理ブロックが、データ項目を他の処理ブロックの処理要素に直接に転送するように作動可能である処理要素を含む、前述の請求項のいずれか一項に記載のデータ処理装置。
【請求項２２】
各処理要素が、データ項目および命令項目を受信し、かつ受信命令項目に従って受信データ項目を処理するように作動可能であるプロセッサユニットと、データ項目を記憶するメモリユニットと、データ項目を記憶し、かつデータ項目を前記プロセッサユニットおよびメモリユニットに転送するために接続されるレジスタファイルとを含み、前記レジスタファイルが、前記処理要素の外部のメモリにデータ項目を転送するために接続され、かつ隣接処理要素にデータ項目を転送するために接続されている、請求項２１記載のデータ処理装置。
【請求項２３】
前記処理要素が、単一集積回路上に備えられている、請求項２１または２２記載のデータ処理装置。
【請求項２４】
各処理ブロックの前記処理要素が、前記集積回路でそれぞれ直列に接続され、前記直列の最初の処理要素を除いて、各処理要素が、データ項目を前記直列の前の処理要素に直接転送するように作動であり、かつ前記直列の最後の処理要素を除いて、各処理要素が、データ項目を前記直列の次の処理要素に直接転送するように作動可能である、請求項２３記載のデータ処理装置。
【請求項２５】
前記処理ブロックの前記処理要素が、前記集積回路のそれぞれの２次元アレイに接続され、各処理要素が、データ項目を前記アレイの少なくとも３つの隣接処理要素に転送するように作動可能である、請求項２３記載のデータ処理装置。
【請求項２６】
前記処理ブロックが直列に接続され、処理ブロックの最後の処理要素が、データを前記直列の他の処理ブロックの最初の処理要素に転送するように作動可能である、請求項２４または２５記載のデータ処理装置。
【請求項２７】
前記処理ブロックが直列に接続され、処理ブロックの最後の処理要素が、前記直列の前記最後の処理ブロックを除いて、データを前記直列の前記次の処理ブロックの最初の処理要素に転送するように作動可能である、請求項２４または２５記載のデータ処理装置。
【請求項２８】
複数の命令ストリームの各々に対する命令項目を検索する手段と、
前記複数の命令ストリームを結合してシリアル命令ストリームにする手段と、
前記シリアル命令ストリームを処理要素のアレイのデータ処理を制御する処理コントローラまたは前記処理要素へおよび前記処理要素からのデータの転送を制御するデータ転送コントローラのいずれかに配分する手段とを含むコントローラを備える、前述の請求項のいずれか一項に記載のデータ処理装置。
【請求項２９】
検索された命令項目を記憶するキャッシュメモリを含む、請求項２８記載のデータ処理装置。
【請求項３０】
各々が各命令ストリーム用であり、それぞれの命令ストリームを制御する複数の命令ストリームプロセッサと、
命令ストリーム間の同期を制御するセマフォコントローラと、
前記命令ストリームの各々に関する状態情報を供給する状態ブロックと、
状態情報を受信するように接続され、かつ前記命令ストリームのどれがアクティブであるべきであるかを決定するように作動可能であるスケジューリング手段とを備える、請求項２８または２９記載のデータ処理装置。
【請求項３１】
各命令ストリームが、相対優先順位レベルを割り当てられる、請求項２８、２９または３０記載のデータ処理装置。
【請求項３２】
前記複数の別個の命令ストリームの実行間の同期を保持する手段を含むセマフォコントローラを備える、前述の請求項のいずれか一項に記載のデータ処理装置。
【請求項３３】
セマフォをプリセットする手段を有する、請求項３２記載のデータ処理装置。
【請求項３４】
セマフォ値を減分する手段を有する、請求項３２または３３記載のデータ処理装置。
【請求項３５】
セマフォ値を増分する手段を有する、請求項３２乃至３４記載のいずれか一項に記載のデータ処理装置。
【請求項３６】
前記セマフォを複数のグループに配列する手段を有する、請求項３２乃至３５のいずれか一項に記載のデータ処理装置。
【請求項３７】
前記セマフォをグループに配列する手段が、前記セマフォを増分できるその実行ユニットにより制御される、請求項３６記載のデータ処理装置。
【請求項３８】
共有リソースに対する複数の命令ストリームのアクセスを制御する手段を有する、請求項３２乃至３７のいずれか一項に記載のデータ処理装置。
【請求項３９】
プロセッサによって出された命令に応じてセマフォを増分および／または減分する手段を有する、請求項３２乃至３８のいずれか一項に記載のデータ処理装置。
【請求項４０】
命令を受信するように接続された手段と、受信命令を関連する命令に応じて処理要素のアレイに転送するように作動可能なルーティング手段とを含むアレイコントローラを備える、前述の請求項のいずれか一項に記載のデータ処理装置。
【請求項４１】
前記アレイコントローラが、受信命令をデータ処理命令およびデータ転送命令に分離する命令ランチャを備える、請求項４０記載のデータ処理装置。
【請求項４２】
前記ルーティング手段が、
前記処理要素によるデータの処理に関するデータ処理命令を処理する処理要素命令シーケンサと、
前記処理要素へおよび／または前記処理要素からのデータ項目の転送に関するデータ転送命令を処理するデータ転送コントローラとを備える、請求項４０または４１記載のデータ処理装置。
【請求項４３】
前記処理要素命令シーケンサが、マイクロコード命令をマイクロコード命令が前記アレイのデータ処理機能に関連する前記処理要素のアレイに転送するように作動可能である、請求項４２記載のデータ処理装置。
【請求項４４】
各処理要素がさらにレジスタのセットを備える、かつ前記命令ランチャが、前記処理要素のどのレジスタが命令によってアクセスされるかを決定する手段と、前記命令が実行されている間に他の命令がこれらのレジスタにアクセスすることを防止する手段とを含む、請求項４０、４１、４２または４３記載のデータ処理装置。
【請求項４５】
前記命令ランチャが、一旦命令が完了したとすると他の命令による使用のためのレジスタを取り外す手段を有する、請求項４４記載のデータ処理装置。
【請求項４６】
どのレジスタがデータ処理命令によってアクセスされるかを決定する際に前記命令ランチャを助ける命令テーブルをさらに備える、請求項４０乃至４５のいずれか一項に記載のデータ処理装置。
【請求項４７】
前記命令ランチャが、シリアル命令の出現を保持すると同時に前記処理要素命令シーケンサと前記データ転送コントローラとの間の並列動作も保持する、請求項４０乃至４６のいずれか一項に記載のデータ処理装置。
【請求項４８】
前記ルーティング手段が、前記プロセッサユニットレジスタのいずれかが命令によって使用中であることを記録するように作動可能なレジスタ使用モニタ手段を含む、請求項４７記載のデータ処理装置。
【請求項４９】
前記レジスタ使用モニタ手段が、命令によって既に使用中であるレジスタの使用を必要とする他の命令の動作を防止するように作動可能である、請求項４８記載のデータ処理装置。
【請求項５０】
前記データ転送コントローラが、処理要素のＳＩＭＤ（単一命令複数のデータ）アレイの処理要素の内部メモリユニットへおよび／または前記内部メモリからデータの転送を制御するように作動可能であり、各処理要素が、処理ユニットおよび内部メモリユニットを含み、前記制御手段が、前記内部メモリユニットへおよび／または前記内部メモリからのデータ転送が、関連する前記処理要素の処理ユニットの動作とは無関係に実行される制御手段を備える、請求項４０乃至４９のいずれか一項に記載のデータ処理装置。
【請求項５１】
各処理要素が、前記処理ユニットと前記内部メモリユニットとの間の転送のためのデータ項目を記憶し、かつ前記プロセッサユニットによって処理するレジスタファイルを含み、かつ前記データ転送コントローラがさらに、前記内部メモリユニットと処理要素のレジスタファイルとの間のデータの転送を制御する手段を備える、請求項５０記載のデータ処理装置。
【請求項５２】
数式評価器（ＭＥＥ）をさらに含み、かつ前記データ転送コントローラが、処理要素の前記内部メモリユニットと前記式評価器との間のデータの転送を制御する手段を有する、請求項５０または請求項５１記載のデータ処理装置。
【請求項５３】
前記データ転送コントローラが、一方の処理要素の内部メモリユニットと他方の処理要素の前記内部メモリユニットとの間でデータを転送する手段を有する、請求項５０、５１、または５２記載のデータ処理装置。
【請求項５４】
前記データ転送コントローラが、前記処理要素の内部メモリにメモリリフレッシュを実行する手段を有する、請求項５０乃至５３のいずれか一項に記載のデータ処理装置。
【請求項５５】
前記データ転送コントローラが、処理要素の内部メモリユニットと前記処理要素の外部のメモリとの間のデータの転送を実行する手段を有する、請求項５０乃至５５のいずれか一項に記載のデータ処理装置。
【請求項５６】
前記処理要素へおよび前記処理要素から転送するためのデータ項目を記憶するローカルメモリユニットであって、前記データ項目が、前記メモリユニットのアドレスに記憶されているローカルメモリユニットと、
前記ローカルメモリユニットに関するセグメント情報を記憶する各処理ブロックのためのセグメントレジスタであって、前記セグメント情報が、関連する前記処理ブロックによってアクセスされる前記ローカルメモリユニットのアドレスエリアを示すセグメントレジスタを備える、前述の請求項のいずれか一項に記載のデータ処理装置。
【請求項５７】
前記処理要素が、前記ローカルメモリユニットに関するアドレス情報を含む命令項目を受信するように接続され、かつ受信アドレス情報および記憶セグメント情報に基づいて前記ローカルメモリユニットにアクセスするように作動可能である、請求項５６記載のデータ処理装置。
【請求項５８】
前記処理要素が、前記セグメント情報を前記アドレス情報に加え、ローカルメモリユニットのターゲットアドレスを生じさせるように作動可能である、請求項５７記載のデータ処理装置。
【請求項５９】
前述の請求項のいずれか一項に記載のデータ処理装置およびローカルメモリユニットのアドレスにデータ項目を記憶するローカルメモリユニットを使用してデータを処理する方法であって、
命令項目を前記処理要素に供給することであって、前記命令項目が前記ローカルメモリユニットに記憶されたデータ項目に関するアドレス情報を含むことと、
各処理ブロックのためのセグメント情報を得ることであって、前記セグメント情報が、処理ブロックがアクセスする前記ローカルメモリユニットのアドレス領域に関することと、
セグメント情報およびアドレス情報を結合し、ターゲットアドレス情報を生成し、かつ
前記ターゲットアドレス情報に基づいて前記ローカルメモリユニットにアクセスすることとを備える、方法。
【請求項６０】
各処理要素が、プロセッサユニットと、データ項目をデータ記憶ユニットへおよびデータ記憶ユニットから転送するメモリ入出力ポートと、データ項目を前記プロセッサユニットに転送するデータレジスタのセットとを備え、前記データレジスタのセットの前記レジスタの各々が、データ項目を前記メモリ入出力ポートから受信し、かつデータ項目を前記プロセッサユニットの出力から受信し、かつデータ項目を前記プロセッサユニットの入力に転送するために接続される、前述の請求項のいずれか一項に記載のデータ処理装置。
【請求項６１】
前記データレジスタのセットが４つのこのようなデータレジスタを含む、請求項６０記載のデータ処理装置。
【請求項６２】
入力データ項目を前記データレジスタの３つから受信するように接続され、かつ所定数のデータビットだけ受信されたデータ項目をシフトし、シフトされたデータ項目を前記３つのデータレジスタに転送するように作動可能なデータシフタを備える、請求項６０または６１記載のデータ処理装置。
【請求項６３】
前記データシフタが浮動小数点計算のためにデータ項目を３つのデータレジスタから受信し、第４のデータレジスタが浮動小数点演算の指数を記憶するために使用される、請求項６２記載のデータ処理装置。
【請求項６４】
前記処理装置が論理演算ユニットを備える、請求項６０、６１、６２または６３記載のデータ処理装置。
【請求項６５】
前記データレジスタのセットが、Ｎ（ここでＮは少なくとも４である）個のこのようなレジスタを含む、請求項６０記載のデータ処理装置。
【請求項６６】
入力データ項目を前記データレジスタのＮ−１個から受信し、かつ所定数のデータビットだけ受信されたデータ項目をシフトし、かつシフトされたデータ項目をＮー１個のデータレジスタに転送するように作動可能であるデータシフタを備える、請求項６５記載のデータ処理装置。
【請求項６７】
前記データシフタが、浮動小数点計算のためにデータ項目をＮ−１個のデータレジスタから受信し、第Ｎ番目のデータレジスタが、浮動小数点演算の指数を記憶するために使用される、請求項６６記載のデータ処理装置。
【請求項６８】
前述の請求項のいずれか一項に記載のデータ処理装置で命令ストリームをスケジュールする方法であって、どの命令ストリームが、時間における特定の瞬間に優先順位を有するかを決定し、かつこの命令ストリームを前記ＳＩＭＤアレイに転送することを備える、方法。
【請求項６９】
命令ストリームが、現在アクティブストリームがいつでも実行できるようになった高位優先順位を有しているかどうかを決定するステップと、
高位優先順位命令ストリームがいつでも実行できるようになった場合、高位優先順位を有する前記命令ストリームを起動するステップとを備える、請求項６８記載の方法。
【請求項７０】
アクティブ命令ストリームがストールしたかどうかを決定するステップと、
高位優先順位命令ストリームがペンディングである場合、前記高位優先順位を有する前記命令ストリームを起動するステップとを備える、請求項６８記載の方法。
【請求項７１】
請求項１乃至６７のいずれか一項に記載のデータ処理装置のメモリへのデータ読み出しアクセスを制御する方法であって、
前記メモリへのアクセスを必要とする処理要素を選択し、
ターゲットアドレスを選択された処理要素から検索し、
前記ターゲットアドレスを前記複数の処理要素に伝送し、
トランザクション識別情報を前記処理要素に伝送し、その情報が関連する前記ターゲットアドレスアクセスを識別し、
前記トランザクション識別情報を前記ターゲットアドレスへのアクセスを必要とする前記または各処理要素に記憶し、
前記トランザクション識別情報とともに前記ターゲットアドレスから得られたデータを前記複数の処理要素に伝送し、
前記トランザクション識別情報が記憶される前記または各処理要素に得られたデータを記憶することとを含む、方法。
【請求項７２】
請求項１乃至６７のいずれか一項に記載され、データ項目がその中のアドレスに記憶されたメモリユニットと、前記メモリユニットにアクセスする複数の処理要素とを含むデータ処理装置のメモリユニットからデータ項目を検索する方法であって、
前記メモリユニットへのアクセスを必要とする前記アレイの各処理要素に対して、アクセスインディケータを関連する前記処理要素が前記メモリユニットへのアクセスを必要とすることを示すように設定し、かつこのようなアクセスが必要とされる前記メモリユニットのターゲットアドレスを記憶し、
セットされたアクセスインディケータを有する前記処理要素の中の１つを選択し、かつ記憶されたターゲットアドレスをこの選択された処理要素から検索し、
検索されたターゲットアドレスおよびトランザクション識別情報を前記アレイの前記処理要素に伝送し、
セットされた前記アクセスインディケータを有する各処理要素に対して、伝送されたターゲットアドレスを記憶されたターゲットアドレスとを比較し、記憶されたターゲットアドレスおよび伝送されたターゲットアドレスが等しい場合、前記アクセスインディケータをクリアし、かつ前記トランザクション識別情報を記憶し、
前記メモリユニットの伝送されたターゲットアドレスに記憶された少なくとも１つのデータ項目を検索し、
前記検索されたデータ項目または各検索されたデータ項目および関連トランザクション識別情報を前記アレイの前記処理要素に伝送し、
記憶されたトランザクション識別情報を有する各処理要素に対して、記憶されたトランザクション識別情報を前記伝送されたトランザクション識別情報とを比較し、かつ前記記憶されたトランザクション情報が前記伝送されたトランザクション情報に等しい場合、前記検索されたデータ項目または各検索されたデータ項目を受信することとを備える、方法。
【請求項７３】
データ項目がその中のアドレスに記憶されたメモリユニットと、前記メモリユニットにアクセスする複数の処理要素とを含む請求項１乃至６７のいずれか一項に記載のデータ処理装置のメモリユニットにデータ項目を書き込む方法であって、
前記メモリユニットへのアクセスを必要とする前記アレイの各処理要素に対して、アクセスインディケータを関連する前記処理要素が前記メモリユニットへのアクセスを必要とすることを示すように設定し、かつこのようなアクセスが必要とされる前記メモリユニットのターゲットアドレスを記憶し、
セットされたアクセスインディケータを有する前記処理要素の中の１つを選択し、かつ記憶されたターゲットアドレスをこの選択された処理要素から検索し、
検索されたターゲットアドレスおよびトランザクション識別情報を前記アレイの前記処理要素全てに伝送し、
セットされた前記アクセスインディケータを有する各処理要素に対して、伝送されたターゲットアドレスを記憶されたターゲットアドレスとを比較し、記憶されたターゲットアドレスおよび伝送されたターゲットアドレスが等しい場合、前記アクセスインディケータをクリアし、かつ前記トランザクション識別情報を記憶し、
トランザクション識別情報を前記アレイの処理要素に伝送し、
記憶されたトランザクション識別情報を有する各処理要素に対して、記憶されたトランザクション識別情報を前記伝送されたトランザクション識別情報とを比較し、かつ前記記憶されたトランザクション情報が前記伝送されたトランザクション情報に等しい場合、前記ターゲットアドレスで前記メモリユニットに記憶される少なくとも１つのデータ項目を伝送し、
前記伝送されたデータ項目または各伝送されたデータ項目を前記メモリユニットの前記ターゲットアドレスに記憶することとを備える、方法。
【請求項７４】
処理要素が、データ項目を前記ターゲットメモリアドレスのそれぞれの領域に記憶する、請求項７３記載の方法。
【請求項７５】
請求項１乃至６７のいずれか一項に記載のデータ処理装置で作動する複数の命令ストリームを制御する方法であって、
前記データ処理装置内のそれぞれのリソースの状態を示すのに役立つ複数のセマフォ値を供給し、
前記セマフォ値に応じて前記命令ストリームの操作を制御することとを備える、方法。
【請求項７６】
命令ストリームの操作を制御することが、
リソースに対するセマフォ値を評価し、
前記評価されたセマフォ値が所定値に等しい場合、前記命令ストリームの操作を停止し、
前記評価されたセマフォ値が前記所定値よりも大きい場合、前記セマフォ値を減分し、かつ前記命令ストリームの操作を継続することとを備える、請求項７５記載の方法。
【請求項７７】
命令ストリームの操作を制御することが、
リソースに対するセマフォ値を評価し、
前記評価されたセマフォ値が所定値に等しい場合、前記命令ストリームの操作を停止し、
前記評価されたセマフォ値が前記所定値よりも小さい場合、前記セマフォ値を増分し、かつ前記命令ストリームの操作を継続することとを備える、請求項７５記載の方法。
【請求項７８】
負セマフォ値が、この特定のセマフォ値によって休止された命令ストリームの数を示す、請求項７５、７６または７７記載の方法。
【請求項７９】
各セマフォ値が、命令ストリームまたは前記ＳＩＭＤアレイの実行ユニットによって増分できる、請求項７５乃至７８のいずれか一項に記載の方法。
【請求項８０】
前記セマフォが複数のグループに配置される、請求項７５乃至７８のいずれか一項に記載の方法。
【請求項８１】
前記セマフォグループが、前記セマフォを増分できるその実行ユニットにより配置される、請求項８０記載の方法。
【請求項８２】
所定のセマフォが、共有リソースへの複数の命令ストリームのアクセスを制御するために使用される、請求項７５乃至８１のいずれか一項に記載の方法。
【請求項８３】
セマフォ値がプロセッサによって増分および／または減分できる請求項７５乃至８２のいずれか一項に記載の方法。
【請求項８４】
単一集積回路上に装備されている請求項１乃至６７のいずれか一項に記載のデータ処理装置。
【請求項８５】
中央処理装置および請求項１乃至６７のいずれか一項に記載のデータ処理装置を含むモノリシック集積回路。
【請求項８６】
ホスト汎用データ処理装置および請求項１乃至６７のいずれか一項に記載のデータ処理装置を含むグラフィックデータ処理システム。
【請求項８７】
単一集積回路上に装備されている請求項８６記載のデータ処理装置。
【請求項８８】
複数の処理ブロックに作動可能に分割される複数の処理要素を備えるデータ処理装置であって、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能である、データ処理装置。
【請求項８９】
実質的に添付図面を参照して前述され、添付図面に示されるようなデータ処理装置。
【請求項９０】
処理要素のＳＩＭＤ（単一命令複数データ）アレイを使用してデータ項目を処理する方法であって、
共通命令を前記アレイの前記処理要素の全てに供給し、
各処理要素が前記共通命令に従って異なるデータ項目を処理するようにそれぞれのデータ項目を前記処理要素に供給することを備え、
前記データ項目が、前記命令項目とは無関係に前記処理要素に供給される、方法。
【請求項９１】
前記アレイによって処理されるデータ項目が、前記アレイの前記処理要素の少なくとも１つによって直接供給される、請求項９０記載の方法。
【請求項９２】
前記処理要素が、複数の処理ブロックに作動可能に分割され、各ブロックが所定のグループからデータ項目を処理するように作動可能である、請求項９０記載の方法。
【請求項９３】
処理要素のＳＩＭＤ（単一命令複数データ）アレイおよび前記アレイの各処理要素に対する数式の評価を生じるように作動可能な数式評価器を使用して前記評価器によって受信された命令および係数に従って処理する方法であって、
命令項目のストリームを前記評価器に供給し、
少なくとも１つの係数を前記評価器に供給することとを備え、
前記係数または各係数が前記命令項目とは無関係に前記評価器に供給される、方法。
【請求項９４】
前記係数または各係数が、前記アレイの前記処理要素の少なくとも１つによって供給される、請求項９３記載の方法。
【請求項９５】
共通命令項目およびそれぞれのデータ項目を受信するように接続される処理要素のＳＩＭＤ（単一命令複数データ）アレイを備えるデータ処理装置であって、前記データ項目および前記命令項目が互いに無関係に前記処理要素に供給される、データ処理装置。
【請求項９６】
共通命令項目およびそれぞれのデータ項目を受信するように接続される処理要素のＳＩＭＤ（単一命令複数データ）アレイと、命令項目および係数データ項目を受信するように接続され、かつ各処理要素に対する数式を評価し、それぞれの評価を前記処理要素に供給するように作動可能な数式評価器とを備えるデータ処理装置であって、前記係数データ項目および前記命令項目が、互いに無関係に前記数式評価器に供給される、データ処理装置。
【請求項９７】
処理要素が、複数のアクティブ処理ブロックに作動可能に分割される処理要素のＳＩＭＤ（単一命令複数データ）アレイを備えるデータ処理装置であって、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能であり、前記処理ブロックの少なくとも１つが、欠陥のある処理ブロックの代わりにデータ項目のグループを処理するように作動可能な冗長ブロックである、データ処理装置。
【請求項９８】
処理ブロックに生じる欠陥を検出し、かつこの処理ブロックの前記データ処理機能を冗長処理ブロックに転送するように作動可能な欠陥検出手段を備える、請求項９７記載の装置。
【請求項９９】
各処理ブロックには、関連する前記ブロックの欠陥処理要素の代わりにデータ項目を処理するように作動可能な少なくとも１つの冗長処理要素が装備されている、請求項９７または９８記載の装置。
【請求項１００】
処理要素が、複数の処理ブロックに作動可能に分割されて前記処理要素のＳＩＭＤ（単一命令複数データ）アレイを備えるデータ処理装置であって、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能であり、各処理ブロックには、関連するブロックの欠陥のある処理ブロックの代わりにデータ項目を処理するように作動可能な少なくとも１つの冗長処理要素が装備されている、データ処理装置。
【請求項１０１】
処理ブロックの前記処理要素が、その中に所定数の処理要素を有するグループに配置され、各このようなグループが、前記グループの欠陥処理要素を取り換えるための少なくとも１つのこのような冗長処理要素を含む、請求項９９または１００記載の装置。
【請求項１０２】
処理要素に生じる欠陥を検出し、かつこの処理要素のデータ処理機能を冗長処理要素に転送するように作動可能な欠陥検出手段を備える、請求項９９、１００または１０１記載の装置。
【請求項１０３】
命令項目に従ってデータ項目を処理する処理要素の単一命令複数データ（ＳＩＭＤ）アレイであって、処理要素のアレイが、データ項目のそれぞれのグループを処理するように作動可能な複数の処理ブロックに作動可能に分割される単一命令複数データアレイと、
前記処理要素へおよび前記処理要素から転送するためのデータ項目を記憶するローカルメモリユニットであって、前記データ項目が前記メモリユニットのアドレスに記憶されているローカルメモリユニットと、
前記ローカルメモリユニットに関するセグメント情報を記憶する、各処理ブロックに対するセグメントレジスタであって、前記セグメント情報が、関連する前記処理ブロックによってアクセスされる前記ローカルメモリユニットのアドレス領域を示すセグメントレジスタ備える、データ処理装置。
【請求項１０３】
命令項目に従ってデータ項目を処理する処理要素の単一命令複数データ（ＳＩＭＤ）アレイであって、処理要素のアレイが、データ項目のそれぞれのグループを処理するように作動可能な複数の処理ブロックに作動可能に分割される単一命令複数データアレイと、
前記処理要素へおよび前記処理要素から転送するためのデータ項目を記憶するローカルメモリユニットであって、前記データ項目が前記メモリユニットのアドレスに記憶されているローカルメモリユニットと、
前記ローカルメモリユニットに関するセグメント情報を記憶する、各処理ブロックに対するセグメントレジスタであって、前記セグメント情報が、関連する前記処理ブロックによってアクセスされる前記ローカルメモリユニットのアドレス領域を示すセグメントレジスタを備える、データ処理装置。
【請求項１０４】
前記処理要素が、前記ローカルメモリユニットに関するアドレス情報を含む命令項目を受信するように接続され、かつ受信されたアドレス情報および記憶されたセグメント情報に基づいて前記ローカルメモリユニットにアクセスするように作動可能である、請求項１０３記載のデータ処理装置。
【請求項１０５】
前記処理要素が、前記セグメント情報を前記アドレス情報に加え、ローカルメモリユニットターゲットアドレスを生じさせるように作動可能である請求項１０４記載のデータ処理装置。
【請求項１０６】
処理要素の単一命令複数データ（ＳＩＭＤ）アレイであって、前記処理要素のアレイがデータ項目のそれぞれのグループを処理するように作動可能な複数の処理ブロックに作動可能に分割される単一命令複数データアレイと、前記処理要素へおよび前記処理要素から転送するためのデータ項目を記憶するローカルメモリユニットであって、前記データ項目が、前記ローカル記憶ユニットのアドレスに記憶されているローカルメモリユニットを含むデータ処理装置を使用してデータを処理する方法であって、
命令項目を前記処理要素に供給することであって、前記命令項目が、前記ローカルメモリユニットに記憶されたデータ項目に関するアドレス情報を含むことと、
各処理ブロックのためのセグメント情報を得ることであって、前記セグメント情報が、処理ブロックがアクセスする前記ローカルメモリユニットの前記アドレス領域に関することと、
前記セグメント情報およびアドレス情報を結合し、ターゲットアドレス情報を生成し、
前記ターゲットアドレス情報に基づいて前記ローカルメモリユニットにアクセスすることとを備える、方法。
【請求項１０７】
前記セグメント情報およびアドレス情報が、前記セグメント情報を前記アドレス情報に付加することによって結合される、請求項１０６記載の方法。
【請求項１０８】
処理要素のＳＩＭＤ（単一命令複数データ）アレイを使用してデータ項目を処理する方法であって、
共通命令を前記アレイの前記処理要素の全てに供給し、
各処理要素が前記共通命令に従って異なるデータ項目を処理するようにそれぞれのデータ項目を前記処理要素に供給することとを備え、
前記命令が、前記データ項目とは別々に前記処理要素に供給され、かつ前記データ項目が、前記アレイの前記処理要素の少なくとも１つによって供給される、方法。
【請求項１０９】
処理要素のＳＩＭＤ（単一命令複数データ）アレイを使用してデータ項目を処理する方法であって、
共通命令を前記アレイの前記処理要素の全てに供給し、
各処理要素に対する結果データ項目を生成する前記アレイの各処理要素に対する数式を評価し、
それぞれの結果データ項目を前記処理要素に供給することとを備え、
前記命令が、前記結果データ項目とは別々に前記処理要素に供給され、かつ前記数式のための係数が、前記アレイの前記処理要素の少なくとも１つによって供給される、方法。
【請求項１１０】
前記処理要素が、複数の処理ブロックに作動可能に分割され、各ブロックが所定のデータ項目のグループからのデータ項目を処理するように作動可能である、請求項１０８または１０９記載の方法。
【請求項１１１】
共通命令に従ってそれぞれのデータ項目を処理するように作動可能な複数の処理要素であって、前記処理要素が、それによって処理要素の単一命令複数データ（ＳＩＭＤ）を形成する複数の処理要素と、
命令を前記処理要素に供給するように作動可能な制御手段と、
データ項目を前記処理要素に供給するように作動可能であり、それによって前記処理要素によって受信された命令に従って処理するオペランド供給手段とを備え、
前記オペランド供給手段が、前記アレイの前記処理要素の少なくとも１つから前記処理要素に供給するためのデータ項目を受信するように接続されている、データ処理装置。
【請求項１１２】
共通命令に従ってそれぞれのデータ項目を処理するように作動可能な複数の処理要素であって、前記処理要素が、それによって処理要素の単一命令複数データ（ＳＩＭＤ）を形成する複数の処理要素と、
命令を前記処理要素に供給するように作動可能な制御手段と、
前記アレイの各処理要素に対する数式を評価するように作動可能な数式評価器と、
係数をそれによって処理するために前記評価器に供給するように作動可能であるオペランド供給手段とを備え、
前記オペランド供給手段が、前記アレイの前記処理要素の少なくとも１つから前記評価器に供給するための係数を受信するように接続されている、データ処理アーキテクチャ。
【請求項１１３】
ターゲット外部メモリアドレスがそれの中の内部アドレスに記憶され、内部アドレスがオフセット値だけ基準アドレスからオフセットされる内部メモリを含む処理要素によって外部メモリへのアクセスを制御する方法であって、前記ターゲットアドレスが、アクセスが必要とされる外部メモリのアドレスを示す方法において、
前記オフセット値を検索し、
前記基準アドレスおよび前記オフセット値を結合し、計算内部アドレスを生成し、
前記ターゲットアドレスを前記計算された内部アドレスによって示されたそれの中の前記アドレスで前記内部メモリから前記ターゲットアドレスを検索し、
前記検索されたターゲットアドレスに基づいて前記外部メモリにアクセスすることとを備える、方法。
【請求項１１４】
前記処理要素が、受信命令に従ってデータ項目を処理するプロセッサユニットを備え、前記プロセッサユニットが、前記プロセッサユニットに転送するためのデータ項目を記憶し、かつ前記オフセット値を記憶するレジスタを含む、請求項１１３記載の方法。
【請求項１１５】
前記外部メモリにアクセスすることが、記憶データまたは命令項目を前記外部メモリの前記ターゲットアドレスから検索し、かつ検索されたデータ項目または命令項目を前記処理要素に転送することを備える、請求項１１３または１１４記載の方法。
【請求項１１６】
前記外部メモリにアクセスすることが、データ項目を前記ターゲットアドレスにその中に記憶するための前記外部メモリに供給することを備える、請求項１１３、１１４または１１５記載の方法。
【請求項１１７】
命令項目に従ってデータ項目を処理する少なくとも１つの処理要素と、
データ項目および命令項目を記憶する外部メモリと、
前記または各処理要素と前記メモリとの間でデータ項目および命令項目の転送を制御するコントローラ手段とを備え、
前記または各処理要素が、
データ項目および命令項目を受信するように接続され、かつ前記命令項目に従って前記データ項目を処理するように作動可能であるプロセッサユニットと、
前記プロセッサユニットに入力するためのデータ項目を一時的に記憶する複数の記憶レジスタであって、前記記憶レジスタの少なくとも１つが、オフセット値を記憶するように作動可能である複数の記憶レジスタと、
外部メモリアドレスを示すデータ項目およびアドレスデータを記憶するメモリユニットと、
データ項目を記憶するレジスタファイルとを備え、前記レジスタファイルが、前記プロセッサユニットと前記メモリユニットとの間に接続され、これらのユニットの他のユニットに転送するためのこれらのユニットのいずれかからデータ項目を受信し、前記処理要素に外部のメモリ中のデータ項目を転送し、かつ前記プロセッサユニットによって処理するためのデータ項目を記憶し、
前記コントローラが、オフセット値を前記記憶レジスタから検索し、前記オフセット値を所定の基準アドレスと結合し、計算された内部アドレスを生じさせ、内部メモリの計算された内部アドレスに記憶された外部アドレスデータを検索し、かつ外部アドレスで前記外部メモリにアクセスするように作動可能である、データ処理装置。
【請求項１１８】
前記コントローラが、記憶されたデータまたは命令項目を前記外部メモリの前記外部アドレスから検索し、かつ前記検索されたデータ項目または命令項目を前記処理要素に転送するように作動可能である、請求項１１７記載のデータ処理装置。
【請求項１１９】
前記コントローラが、前記外部メモリアドレスでその中に記憶するためにデータ項目を前記処理要素から前記外部メモリに転送するように作動可能である、請求項１１７記載のデータ処理装置。
【請求項１２０】
処理要素のＳＩＭＤ（単一命令複数データ）アレイを備えるデータ処理装置であって、各処理要素が、
命令項目に従ってデータ項目を処理するプロセッサユニットと、
前記処理要素がデータ項目を処理するのに役立つかどうかを示すイネーブルレジスタとを備え、
前記イネーブルレジスタが、各々が前記処理要素の使用許可状態または使用禁止状態を示すように作動可能である複数のインディケータを含み、前記インディケータ全てが前記使用許可状態を示す場合、前記処理要素が、データ項目を処理するのに役立つ、データ処理装置。
【請求項１２１】
前記イネーブルレジスタの各インディケータが、関連する前記処理要素のための条件付処理ステップの状態を示すように作動可能である、請求項１２０記載のデータ処理装置。
【請求項１２２】
処理要素のＳＩＭＤ（単一命令複数データ）アレイを備えるデータ処理装置であって、各処理要素が、プロセッサユニットと、データ項目をデータ記憶ユニットへおよびデータ記憶ユニットから転送するメモリ入出力ポートと、データ項目を前記プロセッサユニットに転送するデータレジスタのセットとを備え、前記データレジスタのセットの前記レジスタの各々が、データ項目を前記メモリ入出力ポートから受信し、かつデータ項目を前記プロセッサユニットの出力から受信し、かつデータ項目を前記プロセッサユニットの入力に転送するために接続される、データ処理装置。
【請求項１２３】
前記データレジスタのセットが４つのこのようなデータレジスタを含む、請求項１２２記載のデータ処理装置。
【請求項１２４】
入力データ項目を前記データレジスタの３つから受信するように接続され、所定数のデータビットだけ受信データ項目をシフトし、かつシフトされたデータ項目を３つのデータレジスタに転送するように作動可能なデータシフタを備える、請求項１２２または１２３記載のデータ処理装置。
【請求項１２５】
前記データシフタが、浮動小数点計算のためにデータ項目を３つのデータレジスタから受信し、４番目のデータレジスタが、浮動小数点演算の指数を記憶するために使用される、請求項１２４記載のデータ処理装置。
【請求項１２６】
前記処理装置が論理演算ユニットを含む、請求項１２２乃至１２５のいずれか一項に記載のデータ処理装置。
【請求項１２７】
前記データレジスタのセットが、Ｎ（ここで、Ｎは少なくとも４である）個のこのようなデータレジスタを含む、請求項１２２記載のデータ処理装置。
【請求項１２８】
入力データ項目を前記データレジスタのＮ−１個から受信するように接続され、かつ所定数のデータビットだけ受信データ項目をシフトし、かつシフトされたデータ項目をＮ−１個のデータレジスタに転送するように作動可能なデータシフタを備える、請求項１２７記載のデータ処理装置。
【請求項１２９】
前記データシフタが、浮動小数点計算のためにデータ項目をＮ−１個のデータレジスタから受信し、Ｎ番目のレジスタが、浮動小数点演算の指数を記憶するために使用される、請求項１２８記載のデータ処理装置。
【請求項１３０】
処理要素のＳＩＭＤ（単一命令複数データ）アレイを備えるデータ処理装置であって、各処理要素が、データ項目および命令項目を受信し、かつ受信命令項目に従って受信データ項目を処理するように作動可能なプロセッサユニットと、データ項目を記憶するメモリユニットと、データ項目を記憶し、かつ前記プロセッサユニットおよび前記メモリユニットの中のデータ項目を転送するために接続されたレジスタファイルとを備え、前記レジスタファイルも、外部のメモリ中のデータ項目を前記処理要素に転送するために接続され、かつ前記処理要素の前記プロセッサユニットによって処理するためのデータ項目を記憶するように作動可能である、データ処理装置。
【請求項１３１】
各プロセッサユニットが、データ項目を前記レジスタファイルに記憶し、かつデータ項目を前記レジスタファイルから同時に読み出すように作動可能である請求項１３０記載のデータ処理装置。
【請求項１３２】
各メモリユニットがダイナミックランダムアクセスメモリ（ＤＲＡＭ）ユニットによって装備されている、請求項１３０または１３１記載のデータ処理装置。
【請求項１３３】
処理要素が複数の処理ブロックに作動可能に分割される処理要素のＳＩＭＤ（単一命令複数データ）アレイを備えるデータ処理装置であって、前記処理ブロックが、データ項目のそれぞれのグループを処理するように作動可能であり、前記アレイの各処理要素が、少なくとも１つの隣接処理要素中のデータ項目を直接転送するように作動可能であり、かつ各処理ブロックが、他の処理ブロックの処理要素の中のデータ項目を直接転送するように作動可能である処理要素を含む、データ処理装置。
【請求項１３４】
各処理要素が、データ項目および命令項目を受信し、かつ受信命令項目に従って受信データ項目を処理するように作動可能なプロセッサユニットと、データ項目を記憶するメモリユニットと、データ項目を記憶し、かつデータ項目を前記プロセッサユニットおよび前記メモリユニットに転送するために接続されたレジスタファイルとを備え、前記レジスタファイルが、データ項目を前記処理要素の外部のメモリに転送するために接続され、かつデータ項目を隣接処理要素に転送するために接続される、請求項１３３記載のデータ処理装置。
【請求項１３５】
前記処理要素が単一集積回路上に備えられる、請求項１３３または１３４記載のデータ処理装置。
【請求項１３６】
各処理ブロックの前記処理要素が、それぞれ前記集積回路において直列に接続され、各処理要素が、直列の最初を除いて、データ項目を前記直列の前の処理要素に直接転送するように作動可能であり、かつ各処理要素が、前記直列の最後を除いて、データ項目を前記直列の次の処理要素に直接転送するように作動可能である、請求項１３５記載のデータ処理装置。
【請求項１３７】
前記処理ブロックの前記処理要素が、前記集積回路のそれぞれの２次元アレイに接続され、各処理要素が、データ項目を前記アレイの少なくとも３つの隣接処理要素に転送するように作動可能である請求項１３６記載のデータ処理装置。
【請求項１３８】
前記処理ブロックが直列に接続され、処理ブロックの最後の処理要素が、前記直列の他の処理ブロックの最初の処理要素にデータを転送するように作動可能である、請求項１３６または１３７記載のデータ処理装置。
【請求項１３９】
前記処理ブロックが直列に接続され、処理ブロックの最後の処理要素が、前記直列の最後の処理ブロックを除いて、前記直列の次の処理ブロックの最初の処理要素にデータを転送するように作動可能である、請求項１３６または１３７記載のデータ処理装置。
【請求項１４０】
その各々が処理ユニットおよび内部メモリユニットを含む処理要素のアレイを制御するコントローラであって、
複数の命令ストリームの各々に対する命令項目を検索する手段と、
前記複数の命令ストリームを結合し、シリアル命令ストリームにする手段と、
前記シリアル命令ストリームを前記処理要素のアレイのデータ処理を制御する処理コントローラまたは前記処理要素へおよび前記処理要素からのデータの転送を制御するデータ転送コントローラのいずれかに分配する手段とを備えている、コントローラ。
【請求項１４１】
検索された命令項目を記憶するキャッシュメモリを備える、請求項１４０記載のコントローラ。
【請求項１４２】
各々が各命令ストリーム用であり、それぞれの命令ストリームを制御する複数の命令ストリームプロセッサと、
命令ストリーム間の同期を制御するセマフォコントローラと、
前記命令ストリームの各々に関する状態情報を供給する状態ブロックと、
状態情報を受信するように接続され、命令ストリームのどれがアクティブであるべきであるかを決定するように作動可能であるスケジューリング手段とを備えている、請求項１４０または１４１記載のコントローラ。
【請求項１４３】
各命令ストリームが相対優先順位レベルを割り当てられる、請求項１４０乃至１４２のいずれか一項に記載のコントローラ。
【請求項１４４】
前記プロセッサのアレイがＳＩＭＤ（単一命令複数データ）アレイである、請求項１４０乃至１４３のいずれか一項に記載のコントローラ。
【請求項１４５】
その各々が処理ユニットおよび内部メモリユニットを含む処理要素のアレイで使用するスレッドマネージャであって、
複数のスレッドの各々に対する命令項目を外部メモリから検索する手段であって各スレッドは命令のストリームである手段と、
前記スレッドを結合し、シリアル命令ストリームにする手段と、
前記シリアル命令ストリームを前記処理要素のアレイのデータ処理を制御する処理コントローラまたは前記処理要素の外部メモリユニットと外部メモリユニットとの間でのデータの転送を制御する入出力データ転送チャネルコントローラのいずれかに分配する手段とを備えている、スレッドマネージャ。
【請求項１４６】
メモリからの前記命令検索をバッファリングするキャッシュメモリを含む、請求項１４５記載のスレッドマネージャ。
【請求項１４７】
各々が各アクティブスレッド用であり、かつそれぞれのスレッドを制御する複数のスレッドプロセッサと、
スレッド間の同期を制御するセマフォコントローラと、
前記スレッドの各々に関する状態情報を供給する状態ブロックとを備えている、請求項１４５または１４６記載のスレッドマネージャ。
【請求項１４８】
どのスレッドが時間における任意の特定の瞬間にもアクティブであるべきであるかを決定するスケジューラを備える、請求項１４５乃至１４７のいずれか一項に記載のスレッドマネージャ。
【請求項１４９】
前記プロセッサのアレイがＳＩＭＤ（単一命令複数データ）アレイである、請求項１４５乃至１４８のいずれか一項に記載のスレッドマネージャ。
【請求項１５０】
処理要素のＳＩＭＤ（単一命令複数データ）アレイで命令ストリームをスケジュールする方法であって、どの命令ストリームが時間における特定の瞬間に優先順位を有するかを決定し、かつこの命令ストリームを前記ＳＩＭＤアレイに転送することとを備える、方法。
【請求項１５１】
現在のアクティブストリームがいつでも実行できるようになった高位優先順位を命令ストリームが有するかどうかを決定するステップと、  高位優先順位命令ストリームがいつでも実行できるようになった場合、前記高位優先順位を有する前記命令ストリームを起動するステップとを備える、請求項１５０記載の方法。
【請求項１５２】
アクティブ命令ストリームがストールしたかどうかを決定するステップと、
高位命令ストリームがペンディングである場合、前記高位優先順位を有する前記命令ストリームを起動するステップとを備える、請求項１５１記載の方法。
【請求項１５３】
処理要素のＳＩＭＤ（単一命令複数データ）アレイを含むデータ処理装置で操作する複数の命令ストリームを制御する方法であって、
前記データ処理装置内のそれぞれのリソースの状態を示すのに役立つ複数のセマフォ値を供給し、
前記セマフォ値に依存して前記命令ストリームの操作を制御することとを備える方法。
【請求項１５４】
命令ストリームの操作を制御することが、
リソースのための前記セマフォ値を評価し、
前記評価されたセマフォ値が所定の値を等しい場合、前記命令ストリームの操作を停止し、または
前記評価されたセマフォ値が所定の値よりも大きい場合、前記命令ストリームの前記セマフォ値を減分し、かつ継続することとを備える、請求項１５３記載の方法。
【請求項１５５】
命令ストリームの操作を制御することが、
リソースのための前記セマフォ値を評価し、
前記評価されたセマフォ値が所定の値に等しい場合、命令ストリームの操作を停止し、または
前記評価されたセマフォ値が所定の値よりも小さい場合、前記命令ストリームの前記セマフォ値を増分し、かつ継続することとを備える、請求項１５３または１５４記載の方法。
【請求項１５６】
負セマフォ値が、この特定のセマフォ値によって停止された命令ストリームの数を示す、請求項１５５記載の方法。
【請求項１５７】
各セマフォ値が、命令ストリームまたは前記ＳＩＭＤアレイの実行ユニットによって増分できる、請求項１５３乃至１５６のいずれか一項に記載の方法。
【請求項１５８】
前記セマフォが複数のグループに配置されている、請求項１５３乃至１５７のいずれか一項に記載の方法。
【請求項１５９】
前記セマフォグループが、前記セマフォが増分できる実行ユニットにより配置されている、請求項１５８記載の方法。
【請求項１６０】
所定のセマフォが、共有リソースへの複数の命令ストリームのアクセスを制御するために使用される、請求項１５３乃至１５９のいずれか一項に記載の方法。
【請求項１６１】
セマフォ値が、プロセッサによって増分および／または減分できる、請求項１５３乃至１６０のいずれか一項に記載の方法。
【請求項１６２】
処理要素が複数の処理ブロックに作動可能に分割され、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能であり、各処理要素が処理ユニットおよび内部メモリユニットを含み、かつ前記ＳＩＭＤ（単一命令複数データ）アレイが複数の別個の命令ストリームを処理する処理要素の前記ＳＩＭＤアレイで使用するためのセマフォコントローラであって、
複数の別個の命令ストリームの実行間の同期を保持する手段を備えている、セマフォコントローラ。
【請求項１６３】
セマフォ値をプリセットする手段を有する、請求項１６２記載のセマフォコントローラ。
【請求項１６４】
セマフォ値を減分する手段を有する、請求項１６２または１６３記載のセマフォコントローラ。
【請求項１６５】
セマフォ値を増分する手段を有する、請求項１６２乃至１６４のいずれか一項に記載のセマフォコントローラ。
【請求項１６６】
前記セマフォを複数のグループに配列する手段を有する、請求項１６２乃至１６５のいずれか一項に記載のセマフォコントローラ。
【請求項１６７】
前記セマフォをグループに配列する手段が、前記セマフォが増分できる実行ユニットにより制御される、請求項１６６記載のセマフォコントローラ。
【請求項１６８】
共有リソースへの複数の命令ストリームのアクセスを制御する手段を有する、請求項１６２乃至１６７のいずれか一項に記載のセマフォコントローラ。
【請求項１６９】
ＥＰＵによって出された命令に応じてセマフォ値を増分および／または減分する手段を有する、請求項１６２乃至１６８のいずれか一項に記載のセマフォコントローラ。
【請求項１７０】
処理要素のＳＩＭＤ（単一命令複数データ）アレイとセマフォコントローラとを備えているデータ処理装置であって、
前記複数の別個の命令ストリームの実行間の同期を保持する手段を含む、データ処理装置。
【請求項１７１】
データ処理システムでデータ項目の転送を制御するデータ転送コントローラであって、
処理要素の内部メモリユニットへおよび処理要素の内部メモリユニットからのデータの転送を制御するように作動可能な制御手段を備え、各処理要素が、処理ユニットおよび内部メモリユニットを含み、前記制御手段が、前記内部メモリユニットへおよび／または前記内部メモリユニットからのデータ転送が関連する前記処理要素の前記処理ユニットの動作とは無関係に実行されるように作動可能である、データ転送コントローラ。
【請求項１７２】
各処理要素が、データ項目を処理する処理ユニットと、データ項目を記憶する内部メモリユニットとを含む処理要素のアレイと、
内部メモリユニットへおよび／または内部メモリユニットからのデータ転送が関連する前記処理要素の前記処理ユニットの動作とは無関係に実行されるように処理要素の内部メモリユニットへおよび／処理要素の内部メモリユニットからのデータの転送を制御するように作動可能なデータ転送コントローラとを備えている、データ処理装置。
【請求項１７３】
前記処理要素のアレイがＳＩＭＤ（単一命令複数データ）アレイである、請求項１７１または１７２記載のデータ処理装置。
【請求項１７４】
前記処理要素が、複数の処理ブロックに作動可能に分割され、前記処理ブロックが、データ項目のそれぞれのグループを処理するように作動可能である、請求項１７１、１７２または１７３記載のデータ処理装置。
【請求項１７５】
各処理要素が、前記プロセッサユニットと前記メモリユニットとの間で転送するためのデータ項目を記憶し、かつ前記プロセッサユニットによって処理するレジスタファイルを含み、かつ前記データ転送コントローラが、処理要素の前記内部メモリユニットと前記レジスタファイルとの間のデータ項目の転送を制御する手段をさらに含む、請求項１７１乃至１７４のいずれか一項に記載のデータ処理装置。
【請求項１７６】
数式評価器（ＭＥＥ）をさらに備え、かつ前記データ転送コントローラが、処理要素の前記内部メモリユニットと前記数式評価器との間のデータの転送を制御する手段を有する、請求項１７２、１７３、１７４または１７５記載のデータ処理装置。
【請求項１７７】
前記データ転送コントローラが、一方の処理要素の前記内部メモリユニットと他方の処理要素の前記内部メモリユニットとの間でデータを転送する手段を有する、請求項１７２乃至１７６のいずれか一項に記載のデータ処理装置。
【請求項１７８】
前記データ転送コントローラが、前記処理要素の前記内部メモリユニットでメモリリフレッシュを実行する手段を有する、請求項１７２乃至１７７のいずれか一項に記載のデータ処理装置。
【請求項１７９】
前記データ転送コントローラが、処理要素の内部メモリユニットと前記処理要素の外部のメモリとの間のデータの転送を実行する手段を有する、請求項１７２乃至１７８のいずれか一項に記載のデータ処理装置。
【請求項１８０】
各々が処理ユニットと内部メモリユニットとを含み、かつデータを処理するように作動可能である処理要素のアレイを含むデータ処理システムでデータを転送する方法であって、
内部メモリユニットへおよび前記内部メモリユニットからのデータ転送が関連する前記処理要素のプロセッサユニットの動作とは無関係に実行されるように処理要素の前記内部メモリユニットへおよび／または前記内部メモリユニットからデータを転送することを備える、方法。
【請求項１８１】
処理要素が複数の処理ブロックに作動可能に分割される処理要素のアレイを備えているデータ処理装置でデータを転送する方法であって、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能であり、各処理要素が、処理ユニットと内部メモリユニットとを含み、かつデータを処理するように作動可能である方法において、
この内部メモリユニットへおよび／またはこの内部メモリユニットからのデータ転送が関連する前記処理要素の前記プロセッサユニットの動作とは無関係であるように処理要素の内部メモリユニットへおよび／または処理要素の内部メモリユニットからのデータの転送を制御することを備える、方法。
【請求項１８２】
データ項目を処理するように作動可能であり、かつ各々がその中にデータを記憶する複数のレジスタを含むプロセッサユニットと、内部メモリユニットとを備える処理要素のＳＩＭＤ（単一命令複数データ）アレイと、
命令を受信するように接続され、受信命令に従って前記ＳＩＭＤアレイの動作を制御するように作動可能であるアレイコントローラとを備え、
前記アレイコントローラが、
受信命令をデータ処理命令およびデータ転送命令に分離する命令ランチャと、
データ処理命令を前記命令ランチャから受信するために接続され、かつデータ処理命令を前記処理要素に転送する処理要素命令シーケンサと、
データ転送命令を前記命令ランチャから受信するために接続され、かつ前記処理要素の前記それぞれの内部メモリユニットへおよびこの内部メモリユニットからのデータ転送を制御するデータ転送コントローラと、
プロセッサユニットレジスタのどれが命令によって使用中であるかを記録するように作動可能なレジスタ使用モニタ手段とを備える、データ処理装置。
【請求項１８３】
前記レジスタ使用モニタ手段が、既に命令によって使用中であるレジスタの使用を必要とする他の命令の動作を防止するように作動可能である請求項１８２記載のデータ処理装置。
【請求項１８４】
前記処理要素が、データ項目のそれぞれのグループを処理する複数の処理ブロックに作動可能に分割される、請求項１８２または１８３記載のデータ処理装置。
【請求項１８５】
処理要素が複数の処理ブロックに作動可能に分割される処理要素のＳＩＭＤ（単一命令複数データ）アレイの動作を制御するアレイコントローラで使用するためのレジスタスコアボードユニットであって、前記処理ブロックがデータ項目のそれぞれのグループを処理するように作動可能であり、前記アレイコントローラが、データ処理命令を扱う処理要素命令シーケンサと、データ転送命令を扱うデータ転送コントローラとを備えるレジスタスコアボードユニットにおいて、
シリアル命令実行の出現を維持すると同時に前記処理要素命令シーケンサと前記データ転送コントローラとの間で並列演算を行う手段を備える、レジスタスコアボードユニット。
【請求項１８６】
処理要素のアレイの動作を制御するアレイコントローラであって、前記コントローラが、命令を受信するように接続された手段と、関連する命令に応じて受信命令を処理要素のアレイに転送するように作動可能なルーティング手段とを備える、アレイコントローラ。
【請求項１８７】
受信命令をデータ処理命令およびデータ転送命令に分離する手段を備える、請求項１８６記載のコントローラ。
【請求項１８８】
前記ルーティング手段が、
前記処理要素によるデータの処理に関するデータ処理命令を処理する処理要素命令シーケンサと、
前記処理要素へおよび／または前記処理要素からのデータ項目の転送に関するデータ転送命令を処理するデータ転送コントローラとを備えている、請求項１８５または１８６記載のコントローラ。
【請求項１８９】
前記処理要素命令シーケンサが、マイクロコード命令が前記アレイのデータ処理機能に関する処理要素の前記アレイにマイクロコード命令を転送するように作動可能である請求項１８８記載のコントローラ。
【請求項１９０】
その各々が処理ユニットおよび内部メモリユニットを含み、かつデータを処理するように作動可能である処理要素のアレイと、
命令を受信するように接続される手段と、関連する前記命令に応じて処理要素の前記アレイに受信命令を転送するように作動可能なルーティング手段とを備えるアレイコントローラとを備えているデータ処理装置。
【請求項１９１】
前記アレイコントローラが、受信命令をデータ処理命令およびデータ転送命令に分離する命令ランチャを備える、請求項１９０記載のデータ処理装置。
【請求項１９２】
前記ルーティング手段が、
前記処理要素によるデータの処理に関するデータ処理命令を処理する処理要素命令シーケンサと、
前記処理要素へおよび／または前記処理要素からのデータ項目の転送に関するデータ転送命令を処理するデータ転送コントローラとを備えている、請求項１９０または１９１記載のデータ処理装置。
【請求項１９３】
前記処理要素命令シーケンサが、マイクロコード命令が前記アレイのデータ処理機能に関する処理要素の前記アレイにマイクロコード命令を転送するように作動可能である請求項１９２記載のデータ処理装置。
【請求項１９４】
各処理要素がさらにレジスタのセットを備え、かつ前記命令ランチャが、前記処理要素のどのレジスタが命令によってアクセスされるかを決定する手段と、前記命令が実行されている間、他の命令がこれらのレジスタにアクセスすることを防止する手段とを含む、請求項１９０乃至１９３のいずれか一項に記載のデータ処理装置。
【請求項１９５】
前記命令ランチャが、一旦前記命令が完了したとすると、他の命令によって使用するための前記レジスタを取り外す手段を有する、請求項１９４記載のデータ処理装置。
【請求項１９６】
どのレジスタがデータ処理命令によってアクセスされるかを決定する際に前記命令ランチャを助ける命令テーブルをさらに備える、請求項１９０乃至１９４のいずれか一項に記載のデータ処理装置。
【請求項１９７】
前記命令ランチャが直列実行の出現を保持すると同時に前記処理要素命令シーケンサと前記データ転送コントローラとの間の並列動作も保持する、請求項１９０乃至１９６のいずれか一項に記載のデータ処理装置。
【請求項１９８】
前記ルーティング手段が、前記プロセッサユニットのどれが命令によって使用中であるかを記録するように作動可能なレジスタ使用モニタ手段を含む、請求項１９７記載のデータ処理装置。
【請求項１９９】
複数の処理要素を含むデータ処理装置のメモリへのデータ読み出しアクセスを制御する方法であって、
前記メモリへのアクセスを必要とする処理要素を選択し、
ターゲットアドレスを選択された処理要素から検索し、
前記ターゲットアドレスを前記複数の処理要素に伝送し、
その情報が関連する前記ターゲットアドレスアクセス動作を識別するトランザクション識別情報を前記処理要素に伝送し、
前記トランザクション識別情報を前記ターゲットアドレスへのアクセスを必要とする前記または各処理要素に記憶し、
前記トランザクション識別情報とともに前記ターゲットアドレスから得られたデータを前記複数の処理要素に伝送し、
得られたデータを前記トランザクション識別情報が記憶される前記または各処理要素に記憶することとを備える、方法。
【請求項２００】
データ項目がその中のアドレスに記憶されるメモリユニットと、前記メモリユニットにアクセスする複数の処理要素とを含むデータ処理装置のメモリユニットからデータ項目を検索する方法であって、
前記メモリユニットへのアクセスを必要とする前記アレイの各処理要素に対して、関連する前記処理要素が前記メモリユニットへのアクセスを必要とすることを示すようにアクセスインディケータをセットし、かつこのようなアクセスが必要とされる前記メモリユニットのターゲットアドレスを記憶し、
セットされた前記アクセスインディケータを有する処理要素の中の１つを選択し、かつ記憶されたターゲットアドレスをこの選択された処理要素から検索し、
検索されたターゲットアドレスおよびトランザクション識別情報を前記アレイの前記処理要素に伝送し、
セットされた前記アクセスインディケータを有する各処理要素に対して、伝送されたターゲットアドレスを記憶されたターゲットアドレスと比較し、かつ記憶されたターゲットアドレスおよび伝送されたターゲットアドレスが等しい場合、前記アクセスインディケータをクリアし、かつ前記トランザクション識別情報を記憶し、
前記メモリユニットの前記伝送されたターゲットアドレスに記憶された少なくとも１つのデータ項目を検索し、
前記検索されたデータ項目または各検索されたデータ項目および関連トランザクション識別情報を前記アレイの前記処理要素に伝送し、
記憶されたトランザクション識別情報を有する各処理要素に対して、前記記憶されたトランザクション識別情報を前記伝送されたトランザクション識別情報と比較し、かつ記憶されたトランザクション情報が伝送されたトランザクション情報に等しい場合、前記検索されたデータ項目または各検索されたデータ項目を受信することとを備える、方法。
【請求項２０１】
前記必要とされたデータが、前記トランザクション識別情報が発生された順序で戻される、請求項１９９または２００記載の方法。
【請求項２０２】
前記必要とされるデータが、前記メモリから検索された順序で戻される、請求項１９９または２００記載の方法。
【請求項２０３】
データ項目がその中のアドレスに記憶されるメモリユニットと、前記メモリユニットにアクセスする複数の処理要素とを含むデータ処理装置のメモリユニットにデータ項目を書き込む方法であって、
前記メモリユニットへのアクセスを必要とする前記アレイの各処理要素に対して、関連する前記処理要素が前記メモリユニットへのアクセスを必要とすることを示すようにアクセスインディケータをセットし、かつこのようなアクセスが必要とされる前記メモリユニットのターゲットアドレスを記憶し、
セットされた前記アクセスインディケータを有する処理要素の中の１つを選択し、かつ記憶されたターゲットアドレスをこの選択された処理要素から検索し、
検索されたターゲットアドレスおよびトランザクション識別情報を前記アレイの前記処理要素全てに伝送し、
セットされた前記アクセスインディケータを有する各処理要素に対して、伝送されたターゲットアドレスを記憶されたターゲットアドレスと比較し、かつ記憶されたターゲットアドレスおよび伝送されたターゲットアドレスが等しい場合、前記アクセスインディケータをクリアし、かつ前記トランザクション識別情報を記憶し、
トランザクション識別情報を前記アレイの前記処理要素に伝送し、
記憶されたトランザクション識別情報を有する各処理要素に対して、前記記憶されたトランザクション識別情報を前記伝送されたトランザクション情報と比較し、かつ記憶されたトランザクション情報が伝送されたトランザクション情報に等しい場合、前記ターゲットアドレスで前記メモリユニットに記憶される少なくとも１つのデータ項目を伝送し、
前記伝送されたデータ項目または各伝送されたデータ項目を前記メモリユニットの前記ターゲットアドレスに記憶することとを備える、方法。
【請求項２０４】
処理要素が、前記ターゲットメモリアドレスのそれぞれの領域にデータ項目を記憶する、請求項２０３記載の方法。
【請求項２０５】
処理要素のＳＩＭＤ（単一命令複数データ）アレイと、前記処理要素によってアクセスするデータ項目を記憶するデータ記憶手段と、請求項１９９乃至２０４のいずれか一項に記載の方法に従って前記記憶手段へのアクセスを制御する制御手段とを備えている、データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列データ処理装置に関し、特にＳＩＭＤ（単一命令複数データ）処理装置に関する。
【背景技術】
【０００２】
データ処理システムは、ますます、大量のデータを処理することを必要とされている。さらに、このようなシステムのユーザは、データ処理の速度が加速することを要求している。大量データの高速処理に対するニーズの１つの特定の例は、コンピュータグラフィックスの分野にある。コンピュータグラフィックスにおいては、例えば、画面に表示されるオブジェクトや形状のジオメトリ、テキスチャ、および色に関係する大量データが作成される。コンピュータグラフィックスのユーザは、処理されるデータ量を増加し、データが処理されなければならない速度を加速するより真に迫った、より高速なグラフィックディスプレイをますます要求しつつある。
【０００３】
コンピュータシステム内で大量のデータを処理するために過去に提案された処理アーキテクチャは、処理要素の単一命令複数データ（ＳＩＭＤ）アレイを使用する。このようなアレイの中では、処理要素の全てが同じ命令ストリームを受け取るが、異なるそれぞれのデータ項目上で動作する。このようなアーキテクチャは、それによって並列でデータを処理することができるが、並列命令ストリームを作成する必要はない。これは、並列処理機械から優れた性能を得る効率的、かつ相対的に簡略な方法である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ＳＩＭＤアーキテクチャは、システムが多数の相対的に小さいデータ項目グループを処理しなければならないときには非効率となる場合がある。例えば、三角形などの小さいグラフィックプリミティブ用のグラフィック表示画面に関係するデータを処理するＳＩＭＤアレイの場合、アレイの相対的に少ない処理要素だけが、プリミティブに関係するデータを処理するためにイネーブルされるだろう。この場合では、大きな割合の処理要素は、データがある特定のグループに処理されている間、未使用のまま残ってよい。
【０００５】
したがって、この問題を克服する、あるいは緩和することができるシステムを作成することが望ましい。
【課題を解決するための手段】
【０００６】
本発明のある態様に従って、処理要素のＳＩＭＤ（単一命令複数データ）アレイを備えるデータ処理装置が備えられ、処理要素は、複数の処理ブロックに作動可能に分割され、処理ブロックはデータ項目のそれぞれのグループを処理するように作動可能である。
【０００７】
本発明の別の態様に従って、共通した受信された命令に従ってそれぞれのデータ項目を処理するように作動可能な処理要素のアレイを備えるデータ処理装置が提供され、処理要素は、少なくとも１つの処理要素を有する複数の処理ブロックに分割され、該処理ブロックはデータ項目のそれぞれのグループを処理するように作動可能である。
【０００８】
本発明の多様な追加の態様とは、添付クレームによって例証される。
【図面の簡単な説明】
【０００９】
【図１】グラフィックデータ処理システムを示すブロック図である。
【図２】図１のグラフィックデータ処理システムを示すさらに詳細なブロック図である。
【図３】図１のグラフィックデータ処理システムを示すさらに詳細なブロック図である。
【図４】図１のグラフィックデータ処理システムを示すさらに詳細なブロック図である。
【図５】図３のシステムの処理コアのブロック図である。
【図６】図５のシステムのスレッドマネージャのブロック図である。
【図７】図５のシステムのアレイコントローラのブロック図である。
【図８】図５のチャネルコントローラの命令発行ステート機械のブロック図である。
【図９】図５のシステムのビニングユニットのブロック図である。
【図１０】図５のシステムの処理ブロックのブロック図である。
【図１１】図１から図１０のシステムを使用するデータ処理を示すフローチャートである。
【図１２】図６のスレッドマネージャのスレッドプロセッサのさらに詳細なブロック図である。
【図１３】図６のスレッドマネージャのスレッドプロセッサのさらに詳細なブロック図である。
【図１４】図１０の処理ブロックのプロセッサユニットのブロック図である。
【図１５】処理要素インタフェースを示すブロック図である。
【図１６】ブロックＩ／Ｏインタフェースを示すブロック図である。
【図１７】図１４のプロセッサユニットの一部のブロック図である。
【図１８】図１４のプロセッサユニットの別の部分のブロック図である。
【発明を実施するための形態】
【００１０】
以下に記述されるデータ処理システムは、画面での表示のためにグラフィック画像を作成するためのグラフィックデータ処理システムである。しかしながら、この実施形態は純粋に例示的であり、グラフィックデータを処理するためにここに記述されている技法およびアーキテクチャは、ビデオデータなどのその他のデータ型に等しく適用可能である。このシステムは、言うまでもなく、その他の信号および／またはデータ処理技法およびシステムにも適用可能である。
【００１１】
システムの概要が示され、システムの多様な機能上のユニットの簡略な説明が続くだろう。それから、グラフィック処理方法が例によって説明され、後に機能ユニットの詳細な説明が続く。
【００１２】
概要
図１は、グラフィックデータ処理システム３を示すシステムレベルのブロック図である。システム３は、インタフェース２を介して、パーソナルコンピュータまたはワークステーションなどのホストシステム（図示せず）と接続する。このようなシステムは、制御目的のために従属（ｅｍｂｅｄｄｅｄ）プロセッサユニット（ＥＰＵ）を具備することができる。例えば、特定のグラフィックスシステム３は、グラフィックプロセッサの全体的な機能を制御するため、およびホストシステムと接続するための従属処理ユニット（ＥＰＵ）８を含む。システムは、ビデオ出力インタフェース１４を介して表示画面に出力するためにグラフィックデータを処理する処理コア１０を含む。ローカルメモリ１２が、グラフィックスシステム３のために提供される。
【００１３】
このようなデータ処理は、動作のためにホストシステムに接続できるか、あるいは特定のホストシステムを必要とせず、スタンドアロン処理システムを提供することができる。このような用途の例は、デジタルテレビ信号およびデジタルインターネット信号を受信し、復号するための「セットトップボックス」を含む。
【００１４】
図２、図３、および図４は、詳細にグラフィック処理システムを示す。ある特定の例では、グラフィックスシステムは、高度グラフィックポート（ＡＧＰ）またはＰＣＩインタフェース２を介してホストシステムに接続する。ＰＣＩインタフェースおよびＡＧＩ２は周知である。
【００１５】
ホストシステムは、例えば、ＰＣ９９仕様パーソナルコンピュータ、またはワークステーションなどの任意の型のコンピュータシステムであってよい。
【００１６】
ＡＧＰ２は、グラフィックスシステムからホストシステムメモリへ高帯域幅パスを提供する。これが、通常は、グラフィックスシステムと関連付けられたローカルメモリより大きいホストシステムメモリ内に大きなテクスチャデータベースを保持できるようにする。ＡＧＰは、また、グラフィックスシステム上の線形アドレス空間とホストシステムメモリ内の数多くの潜在的に散乱したメモリブロックの間でメモリを写像するための機構も提供する。この機構は、周知であるように、グラフィックスアドレス再写像テーブル（ＧＡＲＴ）によって実行される。
【００１７】
後述されるグラフィックスシステムは、好ましくは、図１に示されている機能の全てを提供する単一集積回路として実現される。しかしながら、システムが、複数の異なる構成要素を載せる別個の回路カード、またはホストのマザーボードの上に備えられる別個のチップセットとして提供されるか、あるいはホスト中央演算処理ユニット（ＣＰＵ）と、あるいはこれらの実現またはそれ以外の実現の任意の適切な組み合わせで統合することができることが容易に明らかとなるだろう。
【００１８】
グラフィックスシステムは、専用のバスシステムを経由するデータの転送のために互いに接続されている、複数の機能上のユニットを含む。該バスシステムは、好ましくは１次バス４および２次バス６を含む。１次バスは、待ち時間非許容（ｉｎｔｏｌｅｒａｎｔ）ユニットの接続のために使用され、２次バスは待ち時間許容ユニットの接続のために使用される。バスアーキテクチャは、好ましくは、出願人の同時係続英国特許出願、特にＧＢ第９８２０４３０．８号に詳細に説明される通りである。任意の数の１次バスおよび２次バスが、システム内のバスアーキテクチャの中に提供できることが容易に理解されるだろう。図２に示されている特定のシステムは、２つの２次バスを含む。
【００１９】
おもに図２および図３を参照すると、１次バス４へのアクセスは、１次アービタ４１によって制御され、２次バス６へのアクセスは、1対の２次アービタ６１によって制御される。好ましくは、全てのデータ転送は、それぞれ３２バイトのパケット単位である。２次バス６は、それぞれのインタフェースユニット（ＳＩＰ）６２によって１次バス４と接続される。
【００２０】
補助制御バス７は、制御信号をシステム内の多様なユニットに通信できるようにするために具備される。
【００２１】
ＡＧＰ／ＰＣＩインタフェースは、２次バス６を経由してグラフィックスシステムに接続される。このインタフェースは、示されている例では、２次バスの任意の選択に、両方の２次バス６に接続することができる。グラフィックスシステムは、グラフィックスシステムの動作を制御するため、およびホストシステムと通信するために使用される従属処理ユニット（ＥＰＵ）８も含む。ホストシステムは、ＡＧＰ／ＰＣＩ２内のダイレクトホストアクセスインタフェース９を介してＥＰＵ８への直接的なアクセスを有する。ＥＰＵは、バスインタフェースユニット（ＥＰＵ  ＦＢＩ）９０を介して１次バス４に接続される。
【００２２】
ローカルメモリシステム１２もまた、１次バスに接続されている。ローカルメモリシステム１２は、ローカルメモリ自体と通信するために使用される多くの、この例では４つのメモリインタフェースユニット１２１を含む。ローカルメモリは、グラフィックスシステムが使用するための多様な情報を記憶するために使用される。
【００２３】
システムは、表示画面（図示せず）にグラフィックスシステムを接続するために必要とされるハードウェア、およびビデオデータを含んでもよいデータ交換のためのその他のユニットを備える、ビデオインタフェースユニット１４も含む。ビデオインタフェースユニットは、バスインタフェースユニット（ＦＢＩ）を介して２次バス６に接続される。
【００２４】
システムのグラフィック処理機能は、処理コア１０によって提供される。該コア１０は、データの転送のために２次バス６に、および命令の転送のために１次バス４に接続される。以下にさらに詳細に説明されるように、２次バス接続はコアバスインタフェース（コアＦＢＩ）１０７およびビンナー（ｂｉｎｎｅｒ）バスインタフェース（Ｂｉｎｎｅｒ  ＦＢＩ）１１１によって行われ、１次バス接続は、スレッドマネージャバスインタフェース（スレッドマネージャＦＢＩ）１０３によって行われる。
【００２５】
以下にさらに詳細に説明されるように、処理コア１０は、多くの制御ユニット、スレッドマネージャ１０２、アレイコントローラ１０４、チャネルコントローラ１０８、ブロックごとのビニング（binning）ユニット１０６９、およびマイクロコード記憶ユニット１０５を含む。これらの制御ユニットは、グラフィック処理自体を実行する多くの処理ブロック１０６の動作を制御する。
【００２６】
図３に示される例の中では、処理コア１０には８つの処理ブロック１０６が備えられる。任意の数の処理ブロックが、このアーキテクチャを使用してグラフィックスシステムで提供できることが容易に理解されるだろう。
【００２７】
処理コア
図５は、処理コアをさらに詳細に示す。スレッドマネージャ１０２は、ＥＰＵ８から制御信号を受信するために接続される。制御信号は、いつ命令がフェッチされるべきか、および命令がどこで見つけられるべきかに関して、スレッドマネージャに知らせる。スレッドマネージャ１０２は、これらの命令をアレイコントローラ１０４に、およびチャネルコントローラ１０８に提供するために接続される。アレイコントローラおよびチャネルコントローラ１０４と１０８は、受信された命令に依存する処理ブロック１０６に制御信号を転送するために接続される。
【００２８】
各処理ブロック１０６は、プロセッサ要素（ＰＥ）のアレイ１０６１および数式評価器（ＭＥＥ）１０６２を備える。さらに詳細に以下に記述されるように、ＭＥＥ係数フィードバックのためのパス１０６４が、入出力チャネル１０６７でのように、ＰＥメモリから提供される。それぞれの処理ブロックは、ビニングユニット１０６９、ユニット１０６８およびチャネルコントローラ１０８からの命令を受けて入出力チャネルへ、および入出力チャネルからのデータ転送を制御するための転送エンジン１０６９を含む。
【００２９】
プロセッサ要素のアレイ１０６１は、単一命令複数データ（ＳＩＭＤ）処理構造を提供する。アレイ１０６１内の各ＰＥには、関係する該ＰＥに特殊なデータを処理するために使用される、同じ命令が供給される。
【００３０】
各処理要素（ＰＥ）１０６１は、アレイコントローラから受信される命令を実行するためのプロセッサユニット１０６１ａ、プロセッサユニット１０６１ａが使用するためのデータを記憶するためのＰＥメモリユニット１０６１ｃ、およびデータがそれを通してプロセッサユニット１０６１ａとＰＥメモリユニット１０６１ｃの間で転送されるＰＥレジスタファイル１０６１ｂを含む。ＰＥレジスタファイル１０６１ｂはまた、プロセッサユニット１０６１ａによって処理されているデータを一時的に記憶するためにもプロセッサユニット１０６１ａによって使用される。
【００３１】
多数のプロセッサ要素を提供すると、シリコンユニット内の素子の製造用の大きなダイサイズが生じることがある。したがって、素子に対する欠陥領域の影響を削減することが望ましい。したがって、システムは、好ましくは、あるダイ領域に欠陥があると、別の領域をその代わりに使用することができるように冗長なＰＥが備える。
【００３２】
特に、データを処理するために使用される処理要素のグループのために、追加の冗長処理要素を製造することができる。ある特定の例では、処理要素は、３２ＰＥの「パネル」で提供される。パネルごとに冗長なＰＥが提供され、その結果パネルのＰＥの中の１つにおける欠陥は、データの処理のために冗長なＰＥを使用することによって克服することができる。これは、さらに詳細に以下に記述されるだろう。
【００３３】
スレッドマネージャ
処理要素のアレイは、命令ストリームで一連の命令を実行するために制御される。処理ブロック１０６用のこのような命令ストリームは「スレッド」として知られている。各スレッドは、１つまたは複数のタスクを実行するために協調して動作する。用語「マルチスレッド」は、単一のタスクを実行するために複数のスレッドを使用することを指すが、用語「マルチタスキング」が、複数のタスクを同時に実行するための複数のスレッドを使用することを指す。これらの命令ストリームまたはスレッドを管理するのがスレッドマネージャ１０２である。
【００３４】
このようなデータ処理アーキテクチャで複数のスレッドを提供する複数の理由がある。処理要素アレイは、現在のアクティブスレッドが停止するときに別のスレッドを処理することによって、アクティブに保つことができる。スレッドは、必要に応じて任意のタスクに割り当てることができる。例えば、データをメモリへ、およびメモリから転送するためのデータＩ／Ｏ動作を処理するために複数のスレッドを割り当てることによって、これらの動作は、処理動作とＩ／Ｏ動作を重複してさらに効率よく実行することができる。メモリＩ／Ｏ動作の待ち時間は、さまざまなスレッドの使用によってシステムから効果的にマスクすることができる。
【００３５】
加えて、システムは外部イベントに対しさらに高速な応答時間を有し得る。異なる外部イベントで待機するために特定のスレッドを割り当て、その結果イベントが発生すると、それは即座に処理できる。
【００３６】
スレッドマネージャ１０２は、図６にさらに詳細に示され、スレッドごとにフェッチされた命令を記憶するためのキャッシュメモリユニット１０２４を備える。キャッシュユニット１０２４は、スレッドごとに１つずつ、一連の先入れ先出し（ＦＩＦＯ）バッファによって置換できる。スレッドマネージャは、命令フェッチユニット１０２３、スレッドスケジューラ１０２５、スレッドプロセッサ１０２６、セマフォコントローラ１０２８およびステータスブロック１０３０も含む。
【００３７】
スレッド用の命令は、ローカルメモリまたはＥＰＵ８からフェッチユニット１０２３によってフェッチされ、接続論理回路を介してキャッシュメモリ１０２４に供給される。
【００３８】
スレッドは、互いを基準にして優先順位を割り当てられる。言うまでもなく、ここに記述されている例は、８つのスレッドを有しているが、任意の数のスレッドがこのようにして制御できる。任意の特定のある瞬間に、各スレッドは、数多くのタスクの任意の１つに割り当てられてよい。例えば、スレッドゼロは、通受のシステム制御に割り当てられてよく、スレッド１は２Ｄ（２次元）活動を実行するために割り当てられ、スレッド２から７は（頂点、プリミティブまたはラスタリングの計算などの）３Ｄ活動を実行するために割り当てられる。
【００３９】
図６に示されている例では、スレッドマネージャは、スレッドごとに１つのスレッドプロセッサ１０２６を含む。スレッドプロセッサ１０２６は、同時にアクティブなプログラムスレッドの処理を維持するためにスレッドマネージャからのコア命令の発行を制御し、その結果、処理ブロック１６の各々は、可能な限り多くの時間、アクティブとなることができる。この特定の例では、同じ命令ストリームが、システム内の処理ブロックの全てに供給される。
【００４０】
スレッドの数がスレッドプロセッサの数を超え、その結果各スレッドプロセッサは、複数のスレッドの制御を処理する。しかしながら、スレッドプロセッサをスレッドごとに提供すると、アクティブスレッドを変更するとき、コンテキスト切替えの必要性が削減され、それによりメモリアクセスを削減し、したがって動作の速度を加速する。
【００４１】
セマフォコントローラ１０２８は、他の１つとスレッドを同期させるために動作する。
【００４２】
スレッドマネージャ１０２内では、ステータスブロック１０３０は、スレッドの各ステータス情報１０３６を受け取る。ステータス情報は、ステータスブロック１０３０によってスレッドスケジューラ１０２５に転送される。ステータス情報は、どのスレッドが任意の一時点でアクティブであるべきかを判断するためにスレッドスケジューラ１０２５によって使用される。
【００４３】
スレッドマネージャ１０２によって発行されるコア命令１０３２は、アレイコントローラ１０４およびチャネルコントローラ１０８に送信される（図５）。
【００４４】
アレイコントローラ
アレイコントローラ１０４は、処理ブロック１０６の動作を命令し、図７にさらに詳細に示される。
【００４５】
アレイコントローラ１０４は、スレッドマネージャから命令を受け取るために接続されている命令ランチャ（ｌａｕｎｃｈｅｒ）１０４１を備える。命令ランチャ１０４１は、さらに特殊な命令情報を命令ランチャに提供する、命令テーブル１０４２に索引を付ける。
【００４６】
追加命令情報に基づき、命令ランチャは、命令情報をＰＥ命令シーケンサ１０４４またはロード／記憶コントローラ１０４５のどちらかに命令する。ＰＥ命令シーケンサは、データ処理に関係する命令情報を受け取り、ロード／記憶コントローラは、データ転送動作に関係する情報を受け取る。
【００４７】
ＰＥ命令シーケンサ１０４４は、ＰＥマイクロコード命令を処理アレイ内のＰＥに転送するための、ＰＥマイクロコード記憶ユニット１０５に索引を付けるために受け取られた命令情報を使用する。
【００４８】
アレイコントローラは、特定のアクティブ命令によってＰＥレジスタの使用に関する情報を記憶するために使用されるスコアボードユニット１０４６も含む。スコアボードユニット１０４６は、ＰＥ命令シーケンサ１０４４およびロード／記憶コントローラ１０４５それぞれによって伝送される命令によるレジスタの使用に関する情報を提供できるように機能上分割される。
【００４９】
一般的な言葉では、ＰＥ命令シーケンサ１０４４は、プロセッサユニット１０６１ａ内のデータ処理を含む命令を処理する。ロード／記憶コントローラ１０４５は、他方、プロセッサユニット１０６１ａおよびＰＥメモリユニット１０６１ｃのレジスタ間でのデータ転送を含む命令を処理する。ロード／記憶コントローラ１０４５を、さらに詳細に後述する。
【００５０】
命令ランチャ１０４１およびスコアボードユニット１０４６は、ＰＥ命令シーケンサ１０４４とロード／記憶コントローラ１０４５の間で並列動作を達成する一方で、連続命令実行の出現を維持する。
【００５１】
スレッドマネージャ１０２から発行される残りのコア命令１０３２は、チャネルコントローラ１０８に送られる。これが、ＰＥメモリユニットと外部メモリ（ＡＧＰまたはＰＣＩ空間でのローカルメモリまたはシステムメモリのどちらか）間のデータ転送を制御する。
【００５２】
チャネルコントローラ
チャネルコントローラ１０８は、アレイコントローラ１０４による命令の実行に関して非同期で動作する。これが、計算および外部Ｉ／Ｏを同時に実行し、可能な限り重複できるようにする。計算（ＰＥ）動作は、さらに詳細に以下に説明されるように、スレッドマネージャのセマフォによってＩ／Ｏ動作と同期される。
【００５３】
チャネルコントローラ１０８は、それぞれの処理ブロック１０６と関連付けられているビニングユニット１０６８も制御する。これは、チャネルコントローラ命令によって達成される。
【００５４】
図８は、チャネルコントローラの動作の中心部にあり、以下にさらに詳細に記述されるチャネルコントローラの命令発行ステート機械を示す。
【００５５】
各ビニングユニット１０６９（図５）は、その関連付けられた処理ブロック１０６のＩ／Ｏチャネルに接続される。データは、一般的には、領域に基づいた処理のために正しい順序でホストシステムによって提供されないため、ビニングユニット１０６９の目的とは、領域ごとにプリミティブデータを並べ替えることである。
【００５６】
ビニングユニット１０６８は、処理要素から並べ替えプロセスを削除し、それによりデータ処理のためにＰＥを解放する、ハードウェアで実現された領域分類システム（図９に図示されている）を提供する。
【００５７】
メモリアクセス統合
単一のメモリ、またはその他のアドレス指定されたデバイスへのアクセスを要求する大多数の要素を有するコンピュータシステムにおいては、記憶ユニットへのアクセスは要素ごとに連続して実行される場合に処理速度のかなりの減速がある場合がある。
【００５８】
前述されたグラフィックスシステムは、このようなシステムの一例である。大多数のプロセッサ要素があり、その各システムのローカルメモリ内のデータへのアクセスを必要とする。メモリアクセスを必要とする要素の数が、任意のある時点に行うことができるメモリアクセス数を超えるため、ローカルメモリおよびシステムメモリに対するアクセスは、連続した動作を含む。このようにして、要素ごとのメモリアクセスの実行は、個々に、処理ブロックの動作の速度の劣化を引き起こすだろう。
【００５９】
この問題のシステムの処理速度に対する影響を削減するために、図１、図２、図３、および図４のシステムは、メモリアクセス統合機能を含む。
【００６０】
メモリアクセス統合は、図１５と図１６に関しても後述される。しかしながら、一般的には、メモリに対するアクセスを必要とする処理要素は、これが、表示フラグまたはマークビットを設定することにより当てはまることを示す。それから、第１のこのようにマークされたＰＥ、およびそれがアクセスを必要とするメモリアドレスが処理ブロックの処理要素の全てに伝送される。アドレスは、対応するトランザクションＩＤとともに伝送される。アクセスを必要とする（つまり、表示フラグセットを有する）それらの処理要素は、伝送されたアドレスを、それらがアクセスを必要とするアドレスと比較し、比較が同じアドレスにアクセスしなければならないことを示す場合には、それらの処理要素はそのメモリアクセスのためのトランザクションＩＤを登録し、表示フラグをクリアする。
【００６１】
トランザクションＩＤが処理ブロックに戻されると、処理要素は、データを回復するために、記憶されたトランザクションＩＤを入信トランザクションＩＤと比較する。
【００６２】
単にアクセスされたアドレス情報を記憶する代わりにトランザクションＩＤを使用すると、複数のメモリアクセスを搬送し、それから任意の順序で戻すことができる。このようなデータを回復する「ファイアアンドフォーゲット（ｆｉｒｅ  ａｎｄ  ｆｏｒｇｅｔ）」方法は、プロセッサが処理ステップを続行する前にデータが戻るのを待機しなくてもよいため、プロセッサ時間を自由にすることができる。さらに、トランザクションＩＤを使用すると、データ回復トランザクションを特定するために処理要素によって記憶されなければならない情報量も削減される。アドレス情報は、通常、トランザクションＩＤ情報より大きなサイズである。
【００６３】
好ましくは、各メモリアドレスが、ＰＥがアクセスを必要とするより多くのデータを記憶することができる。このようにして、複数のＰＥは、それらが同じデータへのアクセスを必要としなくても、同じメモリアドレスへのアクセスを必要とすることがある。この機構が、階層統合技法を提供することによって、さらにシステムによって必要とされるメモリアクセス数を削減することができる。例えば、各メモリアドレスは、データの４つのクワタ詰めバイトを記憶してよく、それぞれのＰＥが、任意の１回のアクセス時に１つのクワタ詰めバイトを必要とする。
【００６４】
この技法は、同じメモリアドレスの異なる部分に対する書込みアクセスを必要とするそれらのＰＥのためのメモリ書込みアクセス統合も可能にすることができる。
【００６５】
このようにして、システムは、処理ブロックに必要とされるメモリブロック数を削減し、したがって処理ブロックの動作速度を加速することができる。
【００６６】
表示フラグは、データをメモリに書き込むための別の技法でも使用できる。このような技法では、メモリ信号に書き込まれるデータを有するＰＥを設定することによるこの事実。データは、基本アドレスで開始し、順番にそれらのＰＥのそれぞれのメモリアドレスに書き込まれ、メモリ内に所定のスペーシングで階段状に並べられる。例えば、ステップサイズが１に設定される場合には、連続アドレスが、フラグ付きのＰＥからのデータとともに書き込まれる。
【００６７】
処理ブロック
処理ブロック１０６の１つは、図１０にさらに詳細に示される。処理ブロック１０６は、それぞれのデータ項目で並列に動作するが、同じ命令（ＳＩＭＤ）を実行するように配列されているプロセッサ要素１０６１のアレイを含む。各プロセッサ要素１０６１は、プロセッサユニット１０６１ａ、ＰＥレジスタファイル１０６１ｂ、およびＰＥメモリユニット１０６１ｃを含む。ＰＥメモリユニット１０６３ｃは、プロセッサユニット１０６１ａによる処理のためのデータ項目を記憶するために使用される。各プロセッサユニット１０６１ａは、ＰＥレジスタファイル１０６１ｂを介して、そのＰＥメモリユニット１０６１ｃに、およびそのＰＥメモリユニット１０６１ｃからデータを転送できる。プロセッサユニット１０６１ａは、処理中のデータを記憶するためにＰＥレジスタファイル１０６１ｂも使用する。プロセッサユニット１０６１ａとメモリユニット１０６１ｃ間でのデータ項目の転送は、アレイコントローラ１０４によって制御される。
【００６８】
処理要素の各々に、数式評価器（ＭＥＥ）１０６２から入力されるデータが提供される。ＭＥＥは、ＰＥの各々に関して数式を評価するために動作する。数式は、関係する特定のデータ処理用途に応じて、１次式、双１次式、３次式、２次式、またはさらに複雑な式である場合がある。
【００６９】
数式評価器の１つの特定の例が、１次式評価器（ＬＥＥ）である。ＬＥＥは、以下の双１次式
ａｘｉ＋ｂｙｊ＋ｃ
を、ｘｉとｙｊの値の範囲に関して評価するための既知の装置である。
【００７０】
ＬＥＥは、米国特許番号第４，５９０，４６５号に詳細に記述されている。ＬＥＥは、双１次式を評価するための係数値ａ、ｂ、およびｃを供給され、ｘ１とｙ１の異なる値に対応する出力の範囲を作成する。各処理要素１０６１は、ある特定の（ｘ１、ｙ１）組を表し、ＬＥＥはプロセッサ要素ごとに双１次式の特定の値を生じる。
【００７１】
例えば、双１次式は、表示されなければならない三角形の１つの辺の境界となる線を画定する。それから、１次式評価器は、プロセッサ要素に対し、プロセッサ要素がそのためにデータを処理しているピクセルが線上にあるのか、関係する線の一方の側にあるのか、それとも他方の側にあるのかどうかを示すために値を生じる。それから、グラフィックデータの追加の処理が続行できる。
【００７２】
数式評価器１０６２には、フィードバックバッファ（ＦＢＢ）１０６８から、または処理ブロックの外部にあるソースから係数が与えられる（イメデェート（immediates）として知られている）。該フィードバックバッファ１０６８は、ＰＥレジスタファイル１０６１ｂから、またはＰＥメモリユニット１０６１ｃから係数を供給される。
【００７３】
バス構造１０６４は、ＦＢＢ１０６８にプロセッサ要素（レジスタファイルまたはメモリユニット）からデータを転送するために使用される。各ＰＥは、それが係数データをＭＥＥに供給する必要があるかどうかを判断するために制御される。
【００７４】
一例では、（一度に）１つのＰＥだけがフィードバックバッファＦＢＢ１０６８にデータを転送するために（イネーブルされる）。ＦＢＢは、ＭＥＥ１０６２に送られるデータを待ち行列に入れる。別の例では、複数のＰＥが同時にＦＢＢにデータを転送することができるため、データの転送の処理は、ＭＥＥフィードバックバス構造１０６４に依存するだろう。例えば、バスは、複数のデータが書き込まれる場合に、データの論理積がＭＥＥ１０６２に供給されるように、集約論理和となれるだろう。
【００７５】
ＭＥＥオペランドフィードバックパスは、該ａ係数およびｂ係数をゼロに設定し、ｃ係数として通信されるデータを供給することによって、あるプロセッサ要素から関係するブロック内の他の全てにデータを通信するために効果的に使用することができる。それから、ＭＥＥ結果の全ては、係数ｃに等しくなり、このようにして他のプロセッサ要素にデータを転送するだろう。
【００７６】
本システムにおいては、処理ブロック１０６は、互いから別個に式評価器のための演算符号（命令）およびオペランド（データ項目）を与えられる。過去には、命令およびデータは、単一命令ストリームで与えられた。特にオペランドがアレイ自体の中で作成されるときに、処理速度の減速を生じることのあるこのストリームは、処理中に作成されなければならない。
【００７７】
しかしながら、本システムでは、演算符号がオペランドから分離されるため、演算符号ｓおよびオペランドは、さまざまなソースによって作成することができ、オペランドがＭＥＥ１０６２によって実行されなければならないときにだけ結合される。
【００７８】
グラフィックデータ処理
図１１は、図１から図１０のシステムを使用するグラフィックデータ処理方法での簡略化されたステップを示す。ホストシステムは、グラフィックスシステムによって処理され、表示されるプリミティブグラフィック画像の頂点に関するデータを作成する。それから、データは、頂点データのブロックとして、あるいはそれはホストシステムによってグラフィックスシステムに対して作成されるため、頂点ごとにどちらかで転送される。
【００７９】
データは、各ＰＥが１つの頂点のためのデータを含むように、グラフィックスシステムのＰＥの中にロードされる。それから、各ＰＥは、線の最後、または三角形のような２次元形状の一部となるプリミティブの頂点を表す。
【００８０】
それから、受信されたデータは、ホストシステム基準空間から必要とされる画面空間へそれを変換するために処理される。例えば、３次元ジオメトリ、ビュー、照明および陰影その他は、選ばれるビューポイントに応じてデータを生じさせるために実行される。
【００８１】
それから、各ＰＥは、それが線、三角形またはさらに複雑な多角形であるならば、各ＰＥがグラフィックプリミティブに相当する頂点データの少なくとも１つの集合を有するように、その頂点データをその隣接するＰＥにコピーする。それから、データはＰＥに基づいてプリミティブの上に編成される。
【００８２】
それから、プリミティブデータは、それを領域ごとに並べ替えることができるために、ＰＥからローカルメモリに出力される。これは、さらに詳細に後述されるように、図５のビニングユニット１０６９によって実行される。ビニングユニット１０６９は、データが、通常は、領域ベースの処理のための正しい順序でホストシステムによって提供されないため、領域ごとにプリミティブデータを並べ替える。
【００８３】
ビニングユニット１０６８は、処理要素から並べ替えプロセスを削除し、それによってデータ処理のためにＰＥを解放するハードウェアで実現される領域並べ替えシステムを提供する。
【００８４】
プリミティブデータは全てローカルメモリに書き込まれ、各プリミティブは１つのエントリを有する。ある特定のプリミティブに対するデータが書き込まれると、その範囲が領域の定義と比較される。各領域内で発生するプリミティブに関する情報は、ローカルメモリに記憶される。プリミティブの少なくとも一部がその中で発生する領域ごとに、参照は、プリミティブデータが記憶されるローカルメモリの一部に記憶される。このようにして、プリミティブデータの各集合は、一度記憶されればよい。
【００８５】
プリミティブ情報がいったんローカルメモリ内に記憶されると、それは個々のＰＥに読み戻される。しかしながら、この段階で、ある処理ブロック内のＰＥの全てが、単一の領域内で発生するそれぞれのプリミティブに関するデータを含む。この点から、指定された処理ブロックが、表示の単一領域に関連付けられたデータの上で動作する。
【００８６】
それから、各ＰＥは、代わりに、ピクセルデータ内への処理のためにＭＥＥにそのプリミティブに関するそのデータを転送する。例えば、ＰＥは、三角形プリミティブの１つの辺を構成する線を画定するＭＥＥに係数データを供給するだろう。それから、ＭＥＥは係数に基づいてピクセル値の全てを評価し、ピクセルが線の上に出現するのか、線の下に出現するのか、あるいは線上に出現するのかを示すピクセルごとの結果を生じる。三角形の場合、これは３回実行され、その結果、ピクセルが三角形内で発生するのか、それともその外側で発生するのかが判断できる。それから、各ＰＥは、それぞれのピクセルに付いてのデータも含む（つまり、データはＰＥ単位でピクセルに記憶される）。
【００８７】
いったん各ピクセルが、関係する三角形（プリミティブ）の外側、あるいは内側にあると判断されると、プリミティブのための処理は、プリミティブの内側に発生するそれらのピクセル上だけで実行することができる。処理ブロック内のＰＥの残りは、そのプリミティブが処理されるまで、処理にさらに加わらない。
【００８８】
前述された機能ユニットの詳細な説明
スレッドマネージャ
図６に関して前述されたように、スレッドごとにフェッチされた命令を記憶するためのキャッシュメモリユニット１０２４を備える、スレッドマネージャ１０２に関する詳細な説明がここで示される。キャッシュユニット１０２４は、スレッドごとに１つずつ、一連の先入れ先出し（ＦＩＦＯ）バッファによって置換できる。また、スレッドマネージャは、命令フェッチユニット１０２３、スレッドスケジューラ１０２５、スレッドプロセッサ１０２６、セマフォコントローラ１０２８、およびステータスブロック１０３０も含む。
【００８９】
スレッドのための命令は、ローカル外部メモリ１０３から、またはフェッチユニット１０２３によってＥＰＵ８からフェッチされ、接続論理を介してキャッシュメモリ１０２４に供給される。
【００９０】
指定されたときに、１つのスレッドだけが実行中であり、スレッド間で多重化する時間のスケジューリングは、プログラム実行の動的な条件によって決定される。このスケジューリングは、スレッドマネージャ１０２内でスレッドスケジューラによって実行され、それが、各プロセッサブロック１０６が可能な限り多くビジーで保たれることを確実にする。あるスレッドから別のスレッドへの切替えは、状態保存復元オーバヘッドを必要とする。したがって、スレッドの優先順位は、スレッド切替え数を削減し、それによって関連付けられたオーバヘッドを削減するために使用される。
【００９１】
コアスレッドマネージャ１０２によって発行されるコア命令は、２つの制御ユニット、アレイコントローラ１０４、またはチャネルコントローラ１０８の内の１つに送信される。
【００９２】
どのスレッドがアクティブとなる必要があるのかの決定
スレッドスケジューラは、実行時、以下のスケジューリングトリガの１つが発生すると必ず、どのスレッドがアクティブとならなければならないのかを計算し直す。
【００９３】
現在アクティブなスレッドより高い優先順位が設定されるスレッドは準備完了であるか、あるいは
スレッドは（準備完了ではなく）、影響を受けやすい（ＹＩＥＬＤＩＮＧ）。
【００９４】
スレッドスケジューラは、それぞれのスレッドが、それが準備完了なのか、あるいは影響を受けやすいのかのステータスをスレッドスケジューラに報告し直し、スケジューラステータスレジスタとして知られているレジスタ内で調べられるため、これを決定することができる。
【００９５】
前記を決定する際には、スレッドは、それが
−命令キャッシュ失敗で待機中でない限り
−ゼロセマフォで待機中でない限り
−ビジー実行ユニットで待機中でない限り、あるいは
−ＨＡＬＴ（停止）命令で待機中でない限り、
つねに準備完了であると見なされる。
【００９６】
スレッドが、例えばそれがメモリアクセスを必要とするために、動作を停止すると、それは「譲歩する（ｙｉｅｌｄｉｎｇ）」または「譲歩しない（ｎｏｔ  ｙｉｅｌｄｉｎｇ）」である場合がある。スレッドが譲歩する場合には、別のスレッドが準備完了しているならば、その他のスレッドがアクティブになることができる。スレッドが影響を受けやすくない場合には、その他のスレッドは、準備完了であるとしても、アクティブになるのを妨げられる。スレッドは、例えば、そのスレッドがただ動作中に短い休止を必要とする場合には譲歩しない。この技法が、特に高い優先順位のスレッドが単に瞬間的に休止するときに、アクティブスレッド間で不必要にスワップする必要性を回避する。
【００９７】
スケジューリングトリガが前述されたように発生する場合、スケジューラは有効となり、以下を実行する。第１に、それはアクティブスレッドが実行するのを停止し、あらゆるセマフォ減分が伝搬するのを待機する。
【００９８】
過去にアクティブなスレッドが譲歩する場合、スケジューラは最高の優先順位の準備完了スレッド、あるいは（これが別の即座のスケジューリングトリガを引き起こすため）スレッドが準備完了していない場合には最低の優先順位スレッドを活性化する。
【００９９】
過去にアクティブだったスレッドが譲歩しない場合、スケジューラは、過去にアクティブだったスレッドより高い優先順位を有する準備完了である最高の優先順位のスレッドを活性化する。このようなスレッドがない場合には、スケジューラは、過去にアクティブだったスレッドを再活性化する（それは、そのスレッドが準備完了になっていない場合、別のスケジューリングトリガを引き起こすだろう）。
【０１００】
スレッドスケジューラは、ＥＰＵインタフェースを通してディスエーブルすることが出きる。スケジューラがディスエーブルされると、ＥＰＵはスレッドの活性化を制御することができる。例えば、ＥＰＵはアクティブスレッドを起動、停止し、アクティブスレッドポインタを特定のスレッドに設定し、アクティブスレッドを単一で進むことができるだろう。
【０１０１】
スレッドマネージャ１０２は、スレッドマネージャ命令またはセマフォ命令を復号するだけである。加えて、各スレッドは、図１２に図示されているように、専用のスレッドプロセッサ１０２６を有する。該スレッドプロセッサ１０２６は、その動作の理解を助けるために複数の部分に分けることができる。
【０１０２】
各スレッドプロセッサは、バイト論理演算ユニット５４０、述語論理演算ユニット５５０、分岐ユニット５２０、命令キャッシュ５３０、命令アセンブリ５１０、およびイネーブルユニット５００を備える。
【０１０３】
スレッドプロセッサ１０２６の目的は、（ループおよび条件付き分岐などの）スレッドのために実行される高水準フロー制御を可能にし、アレイコントローラ１０４およびチャネルコントローラ１０８に対して発行される命令をアセンブルすることである。
【０１０４】
イネーブルユニット５００は、前記の本文に概略されるように、スレッドが準備完了しているかどうかを決定するために使用される。
【０１０５】
命令キャッシュ５３０は、分岐ユニット５２０からの命令のためにアドレスを受け取り、それらをキャッシュ５３０１からフェッチする。起動中、ＥＰＵは、分岐ユニット内でプログラムカウンタをプログラムすることができる。キャッシュ５３０１が命令を含まない場合、キャッシュ失敗が信号で知らされ、ローカルメモリからの命令フェッチが起動される。失敗がない場合には、命令は、命令レジスタ５３０２にラッチされる。
【０１０６】
分岐加算器５２０は、次の命令のアドレスを制御する。イベントの通常の過程では、それは、最後のアドレスを増分し、このようにして連続してメモリ内の命令の中を進む。しかしながら、分岐が要求されると、それはカレントアドレスにオフセット（正または負）を追加することによって、あるいはメモリ内の絶対アドレスでカレントアドレスを置換することによって新しいアドレスを計算する。スレッドプロセッサが停止されると、ＰＣ０レジスタ５２０１は、ＰＣ１レジスタ５２０２は、すでに変更されているため、要求された前回のアドレスを提供する。
【０１０７】
バイト論理演算ユニット５４０は、スレッドプロセッサ１０２内に含まれる１６ビットレジスタで数学演算を実行するための機構を提供する。プログラマは、スレッドプロセッサ汎用レジスタ５４０２で論理演算を加算、減算、および実行するために、スレッドマネージャ命令を使用することができ、それによりループを書き込むことができるようにする。情報は、バイト論理演算ユニット５４０および命令アセンブラ５１０を使用することによって、汎用レジスタからアレイコントローラ１０４に渡すこともできる。
【０１０８】
述語論理演算ユニット５５０は、１６個の１ビット述語レジスタ５５０１を含む。これらは、真または偽の条件を表す。これらの述語のいくつかは、前回のバイト論理演算ユニット演算の繰上げ、オーバフロー、負、最上位ビットのステータスを示す。残りの述語は、（ループ終了のための）分岐に条件を設けるために使用され、アレイ内の「全イネーブルレジスタオフ」（ＡＥＯ）を示すアレイコントローラ１０４からステータス情報を受け取ることができる。
【０１０９】
命令アセンブラ５１０は、チャネルコントローラ１０８およびアレイコントローラ１０４などの多様なコントローラのための命令を組み立てる。大部分の命令は、修正されず、単にそれぞれの制御ユニットに渡されるだけである。しかしながら、時々、多様な命令でのフィールドは、汎用レジスタのコンテンツで置換されることがある。命令アセンブラ５１０は、関連コントローラに命令を渡す前に、これを実行する。命令アセンブラ５１０は、スレッドマネージャ１０２内のイネーブルユニット５００、およびスケジューラに送信される譲歩ステータス、待機ステータス、および制御信号ステータスも計算する。
【０１１０】
セマフォコントローラ
スレッドの同期および他のリソースへのアクセスの制御は、セマフォコントローラ１０２８によって提供される。
【０１１１】
セマフォは、共通リソースへのアクセスを制御することによって、スレッド間の同期を達成するために使用される。リソースがスレッドによって使用中である場合には、対応するセマフォは、これを他のスレッドに示し、その結果リソースはその他のスレッドには使用できなくなる。セマフォは、関係するリソースへのアクセスを待ち行列に入れるために使用できる。
【０１１２】
ある特定の例では、セマフォコントローラ１０２８は、セマフォがどのリソースに関係するのかに依存して４つのグループに分割される合計８０個のセマフォを使用する。
【０１１３】
セマフォカウントおよびオーバフロー
セマフォは、８ビットの符号なしカウントを有する。しかしながら、ｍｓｂ（ビット７）は、オーバフロービットとして使用され、このようにして絶対に設定されてはならない。任意のセマフォのビット７が設定されると必ず、スレッドマネージャステータスレジスタ内のセマフォオーバフローフラグがセットされる。対応する割込みイネーブルが設定されると、ＥＰＵは割り込まれる。セマフォオーバフローフラグは、ＥＰＵによってクリアされるまで設定されたままとなる。
【０１１４】
セマフォ動作
以下の動作は、セマフォごとに提供される。
【０１１５】
事前設定：スレッドは、セマフォ値を事前設定することができる。スレッドは、セマフォに未決の信号がないことが知られているときにだけ、事前設定命令を発行しなければならない。
【０１１６】
待機：スレッドは、待機命令を発行することによってセマフォで待機動作を実行できる。セマフォがゼロ以外である場合、セマフォは減分される。それがゼロである場合、スレッドは休止され、待機命令を発行するのを待機する。
【０１１７】
信号：セマフォは増分される。この動作はスレッド、ＰＥシーケンサ、ロード／記憶ユニット、またはチャネルコントローラによって実行できる。しかしながら、一般的には、セマフォは、後述されるように、これらの内の１つによって信号で知らせることができる。
【０１１８】
ＥＰＵ８は、任意の時点でスレッドセマフォカウントを読書きすることができる。一般的には、コアは、ＥＰＵがその他のセマフォ値にアクセスすると、命令を実行していてはならない。
【０１１９】
セマフォグループ
セマフォは、それらが、どの実行ユニットによって信号で知らされるのかに応じて４つのグループに分けられる。
【０１２０】
（１）グループｉｄ
（２）グループ内のセマフォ数
（３）セマフォグループ名
（４）グループ内のセマフォが知らされる信号
において、
（１）０  （２）３２  （３）スレッド      （４）スレッドとＥＰＵ
（１）１  （２）１６  （３）チャネル      （４）チャネルコントローラ
（１）２  （２）１６  （３）ロード／記憶  （４）ロード／記憶ユニット
（１）３  （２）１６  （３）ＰＥ          （４）ＰＥシーケンサ
である。
【０１２１】
ＥＰＵは、コアが凍結されると、全てのセマフォ値を読書きできる。加えて、ＥＰＵは、以下に示すように、任意のときにスレッドセマフォを事前設定、増分および減分することができる。
【０１２２】
増分：ＥＰＵは、その増分レジスタを書き込むことによってセマフォを原子的に増分できる（原子動作とは、周知であるように、他の動作によって割り込むことができない動作である）。
【０１２３】
減分：ＥＰＵは、その減分レジスタを読み取ることによってセマフォを原子的に減分できる。セマフォが、減分の前にゼロ以外である場合、読み取りは真に戻る。それ以外の場合、読み取りは偽に戻り、セマフォはゼロで残される。
【０１２４】
各スレッドセマフォは、別個にイネーブルされたゼロ以外の割込みを有する。この割込みがイネーブルされると、セマフォは、ゼロ以外のときにＥＰＵに割り込む。ＥＰＵは、典型的には、セマフォ減分から偽を受け取った後に、この割込みをイネーブルするだろう。割込みを受け取ると、減分を再び試みることが好ましい。
【０１２５】
アレイコントローラ
ここで、図７に示されるように、アレイコントローラ１０４に関する詳細な説明が示される。アレイコントローラ１０４は、処理ブロック１０６の動作を命令する。アレイコントローラ１０４は、スレッドマネージャから命令を受け取るために接続されている命令ランチャ１０４１を備える。命令ランチャ１０４１は、追加の特定の命令情報を命令ランチャに提供する命令テーブル１０４２に索引を付ける。
【０１２６】
追加命令情報に基づいて、命令ランチャは、命令情報を、ＰＥ命令シーケンサ１０４４またはロード／記憶コントローラ１０４５のどちらかに向ける。ＰＥ命令シーケンサは、データ処理に関する命令情報を受け取り、ロード／記憶コントローラは、データ転送動作に関する情報を受け取る。
【０１２７】
ＰＥ命令シーケンサ１０４４は、ＰＥマイクロコード命令を処理アレイに転送するための、ＰＥマイクロコード記憶ユニット１０５に索引を付けるために受け取った命令情報を使用する。
【０１２８】
アレイコントローラは、特定のアクティブな命令によるＰＥレジスタの使用に関する情報を記憶するために使用されるスコアボードユニット１０４６も含む。スコアボードユニット１０４６は、それぞれＰＥ命令シーケンサ１０４４およびロード／記憶ユニット制御装置１０４５によって、伝送される命令によってレジスタの使用に関する情報を与えるために機能上分割される。
【０１２９】
命令ランチャ１０４１およびスコアボードユニット１０４６は、ＰＥ命令シーケンサ１０４４とロード／記憶コントローラ１０４５の間の並列動作を達成する一方で、シリアル命令実行の出現を維持する。
【０１３０】
スレッドマネージャ１０２から発行される残りのコア命令１０３２は、チャネルコントローラ１０８に送られる。これが、ＰＥメモリユニットと外部メモリ（ＡＧＰまたはＰＣ空間内のローカルメモリまたはシステムメモリのどちらか）の間でのデータの転送を制御する。
【０１３１】
連続命令実行の出現を維持するために、ＰＥ命令シーケンサまたはロード／記憶コントローラは、その命令が、過去に起動され、依然として実行中の命令によって、それぞれロード／記憶コントローラおよびＰＥ命令シーケンサからロックされるＰＥレジスタにアクセスするときに、命令の実行を機能停止にする。この機構は、命令の起動は遅延しない。命令の実行は、ロックが命令実行中に遭遇されるときだけ機能停止にされる。
【０１３２】
機能停止を引き起こすＰＥレジスタアクセスは以下の通りである。
【０１３３】
ロックされたレジスタへのアクセス
（ロード／記憶のためのイネーブルとして使用される）イネーブルスタックへの書込み
（ロード／記憶のための索引が付けられたアドレスとして使用される）Ｐレジスタへの書込み（図６）
（ＭＥＥフィードバック用のイネーブルとして使用される）Ｖレジスタへの書込み（図６）
命令ランチャ１０４１は、命令がアクセスするのがどのレジスタかを決定し、命令が起動されるとこれらのレジスタをロックする。命令が完了すると、レジスタはアンロックされる。ロード／記憶命令にとって、アクセスされたレジスタを決定することは率直である。これは、アクセスされたレジスタが命令で直接的に符号化されるためである。ＰＥ命令の場合、タスクは、アクセスされたレジスタの集合がマイクロコードに依存するため、さらに複雑である。この問題は、命令によってアクセスされる４つのオペランドのバイト長さを示す、命令テーブル１０４２をアドレス指定するためにＰＥ命令の９つのビットを使用することによって解決される。
【０１３４】
命令テーブル１０４２は、命令がイネーブルスタックを修正するのか、Ｐレジスタを修正するのか、またはＶレジスタを修正するのかも決定する。さらに、それは、命令のためのマイクロコード開始アドレスも含む。
【０１３５】
ＰＥ命令が起動されると、命令テーブル１０４２は、アクセスされたレジスタの集合を決定するためにアクセスされる。これらのレジスタは、スコアボード１０４６内で、その命令によってロックされているとしてマーキングされる。命令が完了すると、レジスタはアンロックされる。ロード／記憶命令は、それらが、ＰＥ命令シーケンサ１０４４によってロックされるレジスタにアクセスする、またはレジスタを使用すると機能停止にされる。
【０１３６】
ロード／記憶命令が起動されると、その命令によってロードまたは記憶される全てのレジスタファイルレジスタ（Ｒ３１−Ｒ０）がロックされる。レジスタは、命令が完了するとアンロックされる。ＰＥ命令は、それらがロード／記憶コントローラによってロックされるレジスタにアクセスすると機能停止される。
【０１３７】
Ｐレジスタへの書込みは、以下の通りにロード／記憶ユニットの実行を機能停止する（Ｖレジスタおよびイネーブルスタックは類似している）。ＰＥ命令が起動されると、それは、命令テーブルルックアップが、命令がＰレジスタを修正することを示す場合にＰレジスタをロックする。Ｐレジスタは、命令が完了するまでロックされたままである。ロード／記憶命令は、ロード／記憶命令の間接ビットがセットされる場合、Ｐレジスタがロックされる間、機能停止する。ロード／記憶命令は、ロード／記憶命令がフィードバックバッファを書き込む場合に、Ｖレジスタがロックされる間、機能停止する。ロード／記憶命令は、ロード／記憶命令の条件ビットがセットされる場合、イネーブルスタックがロックされる間、機能停止する。
【０１３８】
前述されたように、命令テーブル１０４２は、奥行きが５１２ワードで、幅が６４ビットの小さいメモリ（ＲＡＭ）であってよい。テーブルは、命令開始アドレスおよび型を決定するためにＰＥ命令の命令インデックスフィールドによってアドレス指定される。テーブルは、アドレスロード命令およびデータ付帯演算ロード命令で書き込まれ、ＥＰＵバス上でＩアドレスおよびＩデータレジスタを介して読み取られる。
【０１３９】
ロード／記憶コントローラ
ロード／記憶コントローラ１０４５の詳細な説明がここに示される。
【０１４０】
ある特定の例では、ＰＥメモリサイクルは、名目上、ＰＥクロック速度の４分の１であるが、ＰＥクロック速度の６分の１などの任意の所望の速度に連動することができる。メモリは、幅１２８ビット（１ページ）であり、ＰＥレジスタファイルに対するクワタ詰めバイト（３２ビット）幅のインタフェースを有する。このレジスタファイルインタフェースは、メモリサイクル速度の４倍で動作するため、レジスタファイルインタフェースは完全なメモリ速度で実行する。
【０１４１】
ロード／記憶コントローラ命令は、それらが命令ランチャ１０４１によって、またはリフレッシュまたはＩ／Ｏのためにスチールされるサイクルによって機能停止しない限り、１メモリサイクル（名目上４ＰＥサイクル）で実行する。
【０１４２】
各ロード／記憶命令は、単一メモリページの一部または全てを転送する。単一ロード／記憶命令は複数のページにアクセスする。
【０１４３】
ロード／記憶ユニット制御装置によって実行されるメモリ動作
ロード／記憶コントローラ１０４５は、ＰＥメモリ１０６３上で以下の動作を実行する。
【０１４４】
ＰＥメモリ１０６３からＰＥレジスタファイルへロードし、記憶する。
【０１４５】
ＰＥメモリ１０６３からＭＥＥフィードバックバッファへ読み取る。
【０１４６】
ＰＥメモリからＰＥメモリにコピーする。
【０１４７】
ＰＥメモリリフレッシュ
Ｉ／Ｏチャネル転送
ＰＥメモリからＰＥレジスタファイルへのロードおよび記憶
ロード命令および記憶命令は、単一メモリページとレジスタファイルの４つのクワタ詰めバイトの間で示されるバイト数を、以下の通りに転送する。
【０１４８】
メモリアクセスは、示されたメモリバイトアドレスで（アドレス操作を適用後、以下を参照）開始し、示されたバイト数の間進行し、ページの最後（バイト１５）からページの最初（バイト０）まで送り込む。
【０１４９】
レジスタファイルアクセスは、レジスタファイルの４つのクワタ詰めバイトに制約される。アクセスは示されたレジスタで開始し、４つのクワタ詰めバイトを通って進んでから、アクセスされた第１のクワタ詰めバイトのバイト０に送り込む。
【０１５０】
いったん転送が起動されると、それは１メモリサイクル内で実行する。
【０１５１】
ＰＥメモリからＬＥＥフィードバックバッファへの読み取り
メモリページの全てまたは一部は、ＭＥＥフィードバックバッファにコピーされてよい。ページアドレスは、メモリベースレジスタ機構（以下を参照）で修正できる。ページの各クワタ詰めバイトは、ＭＥＥフィードバックバッファのＡ部分、Ｂ部分、またはＣ部分の任意のサブセットにコピーすることができ、フィードバックバッファプッシュは、それぞれのクワタ詰めバイトの後に使用できる。
【０１５２】
サイクル優先順位
メモリリフレッシュは、他の全てのメモリ動作に対して優先順位を有する。ロード／記憶対Ｉ／Ｏチャネルの優先順位は、ステータスレジスタビットで選択される。
【０１５３】
リフレッシュ
ＰＥメモリは動的であり、リフレッシュされなければならない。これは、全てのページがリフレッシュ期間のたびに読み取られることを保証することによって、ソフトウェア内で達成されてよい。しかしながら、好ましい方法は、アーキテクチャ内でのハードウェアリフレッシュを含むことである。
【０１５４】
アドレス操作
ロード／記憶コントローラ１０４５によって使用されているメモリアドレスは、以下の２つの機構のどちらか、または両方で操作する命ことができる。
【０１５５】
メモリベースレジスタ（ＭＢＲ）
メモリベースレジスタは、命令の中のあるビットにより条件が設けられる、適切な命令によって指定されるページアドレスにオプションで追加される。
【０１５６】
各スレッドは、アレイコントローラの中に自身のＭＢＲを有する。スレッドは、自らのＭＢＲに付帯演算命令をロードする。ＭＢＲは、ＥＰＵバス上で読み取ることができる。
【０１５７】
アドレス索引付け
命令の索引ビットが設定されると、命令のメモリのクワタ詰めバイトアドレスの低い５つのビットが、ＰＥごとに、ＰＥのＰレジスタの低い５つのビットと論理和される。
【０１５８】
チャネルコントローラ
チャネルコントローラ１０８に関する詳細な説明を以下に続ける。前述されたように、チャネルコントローラは、外部メモリとＰＥメモリの間でデータの転送を制御する。各処理ブロック１０６では、転送エンジンが、ブロックＩ／Ｏレジスタとバスアーキテクチャ間で、直接メモリアクセスＤＭＡ転送を実行する。チャネル命令に応じて、データ転送はビニングユニット１０６９を通過するか、あるいは直接的に外部メモリへ／外部メモリから移動する。
【０１５９】
チャネルコントローラ１０８は、３つの根本的な部分に分割される命令セットの上で動作する。
【０１６０】
外部メモリからＰＥメモリにデータを転送する読み取り命令
ＰＥメモリから外部メモリにデータを転送する書込み命令
チャネルおよびビニングユニット内でレジスタ値を操作する付帯演算命令
スレッドマネージャ１０２からの命令は、低優先順位、高優先順位およびビンナー命令に押し込まれる。各ＦＩＦＯが、スレッドマネージャ１０２に送信される自身の「完全」表示を有し、その結果、完全命令ＦＩＦＯでブロックされたスレッドは、別のスレッドが、いっぱいではない命令ＦＩＦＯの中に命令を押し込むのを妨げないだろう。
【０１６１】
図８は、チャネルコントローラ１０８の動作を制御する命令ステート機械を示す。
【０１６２】
全ての命令は、アイドル状態１０８１から起動される。最高優先順位準備完了命令が起動され、そこでは命令の迅速さは、事前に設定された規則に従って決定される。
【０１６３】
チャネル命令には３つの優先順位がある。アドレス指定ストライド（Ｓｔｒｉｄｅｄ）命令は、高優先順位または低優先順位として指定できる。ビニング命令は、つねに非常に高い優先順位として処理される。低い方の優先順位命令は、高い方の優先順位命令によって割り込まれ、あるいは先取りされてよい。転送命令が先取りされると、ＰＥページレジスタのコンテンツは、それらが出現したＰＥメモリページに返される。それから、それらは、高い方の優先順位命令が完了したそれ以降のときに再起動することができる。
【０１６４】
アドレス指定された命令とは、ＰＥメモリと、あらゆるＰＥが、それが読み取るまたは書き込むことを希望するデータの外部メモリアドレスを指定する外部メモリの間でのデータ転送である。
【０１６５】
データ転送は、統合プロセスの管理下にあり、その結果、例えば、それぞれが32バイトパケットアドレスの異なるバイトに書き込む４つのＰＥが、32バイトの単一メモリアクセスを生じ、その任意の部分集合は、外部メモリに書き込まれる有効なデータを含んでよい。また、同じパケットアドレスからデータを読み取ることを希望する任意の数のＰＥは、外部メモリへの単一アクセスの中にそのアクセスを統合させる。
【０１６６】
書込みアドレス指定命令においては、各ＰＥが、それが書き込まれなければならない外部メモリアドレスとともに８バイトのデータ、およびバイトイネーブルとして役立つ８ビットを供給する。同じパケットアドレスにデータを書き込むことを希望する任意の数のＰＥは、そのアクセスを外部メモリへの単一アクセスに統合させる。
【０１６７】
読み取りアドレス指定命令においては、各ＰＥは、それが読み取ることを希望するデータのアドレスを供給し、１６バイトのデータ（メモリパケットの２分の１）がＰＥに送達して戻される。
【０１６８】
「ストライド（Ｓｔｒｉｄｅｄ）」メモリアクセスとは、ＰＥメモリと、各ＰＥデータの外部メモリアドレスが転送エンジンによって生成される外部メモリの間でのデータ転送である。アドレスは、所定のステップサイズでベースレジスタから一命令ずつ実行され、その結果選択されたＰＥは、間隔をあけて配置された外部メモリアドレスへ送信または外部メモリアドレスから受信する。例えば、ステップサイズが１に設定される場合には、選択されたＰＥは連続メモリアドレスにアクセスする。これは、ＰＥが、アドレス情報のためにそのいくらかを使用する代わりに、その全てのＩ／Ｏページレジスタデータを使用できるという点で「アドレス指定」転送に優る優位点を有する。転送のためのベースアドレスは、チャネルコントローラ命令とともに指定、またはＥＰＵによって書き込むことができる。
【０１６９】
書込みストライド（Ｓｔｒｉｄｅｄ）命令の場合、それぞれのＰＥが１６バイトのデータを出力する。２つのＰＥからのデータが、１つの３２バイトのデータパケットに組み込まれ、転送エンジンによって生成される外部メモリアドレスに書き込まれる。その結果、パケットは、増分するアドレスに書き込まれる。オプションでは、命令の中で、それぞれのＰＥのデータが書き込まれた外部アドレスは、ＰＥ  Ｉ／Ｏページレジスタに戻すことができる。
【０１７０】
潜在的な読み取りストライド命令の場合、各ＰＥは、その結果として、転送エンジンの制御下で一命令ずつ実行されたアドレスから１６バイトのデータを受信する。
【０１７１】
ビニング命令は、ＰＥメモリと、データが、ブロックＩ／Ｏバスと外部メモリへのシステムバス間の各コアブロックのビニングユニットを通って流れる外部メモリの間のデータ転送に関する。ビニングユニットは、特殊命令で設定される数多くの制御レジスタを備える。それは、外部メモリに書き込まれる、または外部メモリから読み出される全てのデータの外部メモリアドレスを生成する。それは、それらが該当する領域の中へのビニングプリミティブのサポート用、および外部メモリに保持される複数のビンリスト（BINリスト）をマージするための論理回路を含む。それは、また、外部メモリ内のビンリストの管理も実行する。
【０１７２】
ＰＥとビニングユニット間のデータフローは、ＦＩＦＯ内でバッファに入れられる。
【０１７３】
ＢＩＮＮＩＮＧ機能
前述されたように、各処理ブロック１０６は、ブロックＩ／Ｏバスとシステムバス６の間で取り付けられている、関連付けられたビニングユニット１０６９を有する。ビニングユニットは、外部メモリ内のビンリストのプリミティブポインタの読み取りおよび書込みに対する特殊なサポートを提供する。
【０１７４】
ビニングプロセスは、大部分のホストシステムの要件のためにジオメトリフェーズとラスタ化フェーズの間でプリミティブ命令を維持しなければならない。両方のフェーズともブロック並列であるため、任意のブロックとビンのいずれかの間、および任意のビンと任意のブロックの間でデータを転送するための機構がある必要がある。これは、ジオメトリデータを処理している処理ブロック１０６ごとに１つ、領域ごとに複数のビンリストを作成することによって実現される。これにより、ジオメトリ出力フェーズがブロック並列モードで進行できるようになる。それから、ラスタフェーズ中に、各領域は、ただ１つの処理ブロック１０６によって処理され、その領域のためのメモリ内の複数のビンリストのマージ並べ替えが実行される。
【０１７５】
ビニングユニット１０６９は、ポインタを扱うだけである。プリミティブデータ自体は、通常のチャネル書込み動作を使用してメモリに書き込むことができる。それは、ビンナーハードウェアがいったん各ＰＥにプリミティブポインタを提供すると、通常のチャネル読み取り動作を使用して読み取ることもできる。
【０１７６】
どのくらい多くのプリミティブが各ビンに書き込まれるのかに関するレコードが保たれ、その結果、領域はブロック並列ラスタ化のために類似したサイズのグループに並べ替えることができる。加えて、プリミティブ「属性」フラグは領域ごとに記録される。これは、領域内のあらゆるプリミティブの数多くの画定されたフラグのビット単位の「論理和」を調べることによって、ラスタ化および領域ごとの陰影コードの最適化を可能にする。このようにして、類似した処理を必要とする領域は、処理時間の縮小を生じる並列処理のために分類することができる。
【０１７７】
ＰＥアレイ１０６１がプリミティブのためのバウンディングボックスを計算した後に、ビンナーハードウェアがＰＥアレイ１０６１からｂｉｎｉｔｉｚａｔｉｏｎプロセスをオフロードし、それを純粋なＩ／Ｏ動作に変換する。これにより、それを、ジオメトリデータの処理の次のバッチなどの追加のデータ処理と重複できるようになる。
【０１７８】
書込み−ジオメトリパスの最後でプリミティブポインタを書き込むと、ＰＥはポインタ、フラグ、およびチャネル上のプリミティブのためのバウンディングボックス情報を出力する。ビニングユニット１０６９は、ポインタを、そのプリミティブのためのバウンディングボックスに含まれるあらゆる領域のビンリストに付加する。それは、その領域のためのプリミティブカウントおよび属性フラグも更新する。ビンナーは、その処理ブロック１０６専用のビンリストを維持する責任があり、ビンリストの状態は複数のジオメトリパス全体で保存される。
【０１７９】
読み取り−ビニングユニット１０６９は、ある特定の領域のために、要求するＰＥごとに１つ、命令されたプリミティブポインタを処理ブロック１０６に供給する。それはその領域の複数のビンリストを横断し、マージ並べ替えは、元のプリミティブ命令を復元するためである。ビンリスト状態は、複数のラスタ化パス全体で保存される。
【０１８０】
ビニングメモリ組織
ビンリストは、リストデータをメモリに出力することによって、外部メモリ内で作成される。ビンリストは、メモリ内のビンのコンテンツの場所を示す。このようなリスト構造の保守は、ポインタアレイの形を取る追加の記憶ユニットを必要とする。ビンナーハードウェアは、メモリ内のこれらの構造に直接的にアクセスする。
【０１８１】
ビニングハードウェア
ビニングハードウェアは、図９に詳細に示されており、ＰＥアレイ１０６１が、プリミティブポインタを外部メモリに対して読書きできるようにするために必要とされるｂｉｎｎｉｔｉｚａｔｉｏｎプロセスに関係する計算を処理する責任を負う。
【０１８２】
命令デコーダ１１０１は、チャネルコントローラ１０８から命令を受け取り、ステート機械をトリガして動作させる。ステート機械１１０２は、プリミティブポインタを外部メモリから読み取る、または外部メモリに書き込むなどのある特定の機能を実行するためにビニングユニットの他の部分を配列する論理回路である。ステート機械１１０２は、複数の通信中のステート機械として実現されてよい。ビニングユニットの他の全ての部分への制御信号は、図示しない。
【０１８３】
ｂｉｎｎｉｔｉｚａｔｉｏｎ機能は、現在のビニングコンテキスト、つまり外部メモリ内のビンリストの場所、次にラスタ化する領域、動作モード等を定める内蔵レジスタ１１０３の集合に従ってビニングユニットによって実行される。この「状態」レジスタ１１０３の集合は、チャネルコントローラ１０８、ブロックＩ／Ｏバス、およびＥＰＵ８に複数移植（ｍｕｌｔｉｐｌｅ  ｐｏｒｔｅｄ）される（つまり、同時に使用できる数多くのポートを有している）。
【０１８４】
ブロックＩ／Ｏバスとビニングユニット１０６９自体の間には、ビニングユニット１０６９の一部と見なされるデータバッファＦＩＦＯ１１０４がある。データバッファ１１０４の目的とは、ＰＥ  Ｉ／Ｏページレジスタとビニングユニット１０６９の間で流れるデータをバッファに入れ、ビニングユニット１０６９の不確定のタイミングを円滑にすることである。データは、バッファの奥行きに依存するサイズのバーストで、ビニングユニット１０６９に／へ転送される。ビニングユニット１０６９は、このバッファの状態をブロック制御論理の残りに提示し、全てのビニングユニットバッファ１１０４のステータスを見ることによって、チャネルコントローラ１０８は、効率的にビニングユニット１０６８に対するデータ転送バーストを予定することができる。
【０１８５】
各ブロックのビニングユニット１０６９は、ＥＰＵ８への専用のレジスタセットインタフェース１１０５を有する。ＥＰＵ８は、インタフェース１１０５を介して、ビニングユニット１０６９タスクの次に示すセットを実行する。
【０１８６】
初期化
ビンリストメモリの割当て
コンテキスト切替え時のビニング状態の保存および復元
ビニングユニット１０６９がＢｉｎｎｅｒ書込み命令を実行しているとき、それはビンリストの作成のために割り当てられる未知の量のメモリを必要とする。それは、このメモリにＥＰＵ８から一度に一部分を要求し、それを必要としているどのビンリストにもそれを割り当てる。ビンナーユニット１０６８は、３２バイトの小さなチャンク（部分）をビンリストに割り当てるが、これは、それがこのレベルで割り当てられなければならないのであれば、不寛容にＥＰＵをロードするだろう。代わりに、ＥＰＵは、それが適切であると決定するどのようなサイズ（例えば、６４ｋＢｙｔｅｓであるが、３２バイトの任意の便利な倍数）であれデータの大きな部分を提供し、ビンナーユニット１０６８はこれを、チャンク発生器１１０６を使用して個々のチャンクに分割する。ＥＰＵからの大量のデータの転送は、ＥＰＵにとってさらに効率的であり、ビニングユニット１０６９の少量のデータの処理は、ビニングユニット１０６９にとってより効率的である。
【０１８７】
ポインタ書込み中、ＰＥからのプリミティブデータは、レジスタセット１１０７の中に入れられ、必要に応じてデータ論理回路１１１２に渡される。
【０１８８】
Ｙステッパ１１０８は、ｙ軸領域座標を、ｂｉｎｉｔｉｚａｔｉｏｎプロセスの一部としてポインタ書込み中にプリミティブバウンディングボックス全体で一命令ずつ実行するために使用される。それは、等式比較器付きのカウンタとレジスタの組を備える。
【０１８９】
Ｘステッパ１１０９は、Ｘ軸領域座標を、ｂｉｎｉｔｉｚａｔｉｏｎプロセスの一部としてポインタ書込み中にプリミティブバウンディングボックス全体で一命令ずつ実行するために使用される。
【０１９０】
それは、等式比較器付きのカウンタとレジスタの対も備える。しかしながら、Ｘステッパは、Ｙステッパ１１０８の値のたびに値の同じシーケンスも実行しなければならないため、カウンタは、初期値を記憶する余分なレジスタからロードおよび再ロードされる。
【０１９１】
ポインタ読み取りプロセス中に領域のブロックビンリストをマージするために、専用のハードウェアセクション１１１０が提供される。プリミティブがビニングプロセスを通して命令できるように、バッチｉｄコードがビンリストに追加される。ホストはジオメトリが正しい順序で戻されることを必要とするため、バッチｉｄコードはジオメトリ順序付けに関係する。ステート機械１１０２の制御下で、ブロックカウンタ１１１７に補助され、ビニングユニット１０６９は、どのビンリストが最低のバッチＩＤを有するのかを評価し、そのリストからのポインタ読み取りを命令する。
【０１９２】
追加バッチＩＤがそのリスト内で遭遇されると、あるいはＮＵＬＬ終止プログラムが遭遇されると、ブロック選択は評価し直される。ブロックカウンタ１１１７は、それが（ビンリスト選択ユニット１１１０に関連して）処理する次のビンリストを評価しているときに、ステート機械１１０２にループカウンタを提供する。
【０１９３】
データ論理回路ユニット１１１２は、ビニングユニット１０６９のデータ処理ブロックである。それは、ポインタを増分し、属性フラグをマージし、データキャッシュ１１１５を介した外部メモリへの書込みのために異なるデータ型をフォーマットすることができる。
【０１９４】
領域番号ユニット１１１６は、Ｘ／Ｙステッパ１１０８／１１０９から出力されたＸ領域座標およびＹ領域座標から線形領域番号を計算する。この数は、データ論理ユニット１１１２および状態レジスタ１１０３の出力とともに、ビンリストアレイエントリのためのメモリアドレスを計算するために、アドレス計算ユニット１１１３によって使用される。
【０１９５】
データキャッシュ１１１５は、外部メモリバスから全てのメモリ参照を減結合するために具備される。それは、外部メモリ帯域幅を削減するため、およびデータが到着するのを待機することにより引き起こされるだろう機能停止時間を短縮するため、ビニングユニットメモリアクセスのアドレスコヒーレンスを利用する。
【０１９６】
データキャッシュ１１１５は、アドレスタグセクション１１１４を有する。これは、任意の特定の外部メモリアクセスがデータキャッシュの中でヒットなのか、あるいは失敗なのかを、ビニングユニット１０６９に示す。失敗の時、ビニングユニット１０６９は、必要とされるデータパケットがメモリからフェッチされるまで機能停止される。
【０１９７】
処理要素
図１４は、図５および図１０に図示されている処理要素の一部を形成する、プロセッサユニット１０６１ａおよびＰＥレジスタファイル１０６１ｂを示す。ＰＥ１０６１は、マルチプレクサ２１０および２１２（ＡおよびＢ）を介して（Ｒ、Ｓ、ＶおよびＰと示される）８ビットレジスタ２０２、２０４、２０６，２０８のブロックからデータ値を受け取るために接続される論理演算ユニット（ＡＬＵ）２１４を含む。
【０１９８】
ＰＥとその関連付けられたＰＥメモリ間でデータをバッファに入れるため、およびプロセッサユニット１０６１ａがその上で処理しているデータを一時的に記憶するために動作するＰＥレジスタファイル１０６１ｂ。
【０１９９】
ＲＳＶＰレジスタ２０２、２０４、２０６、２０８は、ＡＬＵ２１４にオペランドを供給するために動作する。Ａマルチプレクサ２１０は、ＲレジスタおよびＳレジスタからデータ値を受け取るため、それらのレジスタ値のどれがＡＬＵ２１４に供給されるのかを制御する。Ｂマルチプレクサ２１２は、ＶレジスタとＰレジスタから、およびＭＥＥ１０６２からもデータ値を受け取るために接続されるため、それらの値のどれがＡＬＵに供給される必要があるのかを制御する。
【０２００】
プロセッサユニット１０６１ａは、さらに、Ｓレジスタ、ＶレジスタおよびＰレジスタから出力されるデータ上で左シフトまたは右シフトを実行できるシフタ２００を含む。
【０２０１】
Ｒレジスタは、その過去の値を保持することができるか、あるいはレジスタファイルからバイト、またはＡＬＵの結果をロードできる。ＡＬＵ結果は幅１０バイトであるため、Ｒレジスタは、ブース乗算ステップのために、最初の８ビット（ビット７から０）、またはビット９から２を受け取ることができる。ブース増加は、１クロックサイクル内で増加結果を提供する周知の方法である。
【０２０２】
Ｓレジスタは、その過去の値を保持することができるか、あるいはその過去の値のシフトされたバージョンをロードできる。Ｓレジスタは、ＡＬＵ結果、レジスタファイルから１ビット、または（ブース乗算ステップのための）Ｓレジスタの過去の値の高い６ビットと連結されたＡＬＵからの低い２ビットもロードすることができる。
【０２０３】
ＶレジスタおよびＰレジスタは、ともにＡＬＵ結果、またはレジスタファイルからのバイトの両方をロードできる。ＶレジスタのＬＳＢは、ＭＥＥフィードバック転送に関与しているプロセッサ要素の集合を決定するために使用される。Ｐレジスタの５つの低いビットは、メモリアクセス内のメモリアドレスを修正するために使用される。
【０２０４】
レジスタのいずれかがＡＬＵ２４にデータを提供することができるため、４つのレジスタＲ、Ｓ、ＶおよびＰを使用することにより、システムには、過去に既知のシステムに優る改善された性能が提供される。さらに、レジスタのいずれかは、システムの汎用性を高め、浮動少数点動作にさらに優れたサポートを提供する、ＰＥレジスタファイル１０６１ｂからのデータをロードすることもできる。Ｒレジスタ入力は絶対にシフトされないため、Ｒレジスタは、浮動少数点数の指数を記憶し、修正するために使用できる。
【０２０５】
ＡＬＵ２１４は、アレイコントローラ（図示せず）から命令を受け取り、その出力をＰＥレジスタファイル１０６１ｂに供給する。ＰＥレジスタファイル１０６１ｂは、ＰＥが即座に使用するためにデータを記憶するために使用され、例えば、レジスタファイル１０６１ｂは、長さ１６ビットの１６のワードを記憶できる。
【０２０６】
レジスタファイルに書き込まれるデータは、書込みポートを介して転送され、レジスタファイルから読み取られるデータは読み取りポートを介して転送される。データは、ロード／記憶コントローラの制御下でのロード／記憶ポートを介してＰＥメモリのレジスタファイルに、およびレジスタファイルから転送される。
【０２０７】
ＰＥレジスタファイル１０６１ｂは、数多くの方法で、その書込みポートを通して記憶されるデータを受け取ることができる。つまり、１６ビット値は要素の左隣または右隣を形成するプロセッサ要素から受け取ることができるか、１６ビット値はステータス／イネーブルレジスタから受け取ることができるか、あるいは８ビット値がＡＬＵ結果から受け取ることができる。ＡＬＵ結果がレジスタファイルに供給されるケースでは、８ビット値は、関係するレジスタファイルエントリの高バイトと低バイトの両方にコピーされる。
【０２０８】
書込みポートは、データのソースに基づいて制御され、通常、イネーブルスタックのコンテンツを介して制御される。イネーブルスタックコンテンツに関係なく、レジスタファイル書込みを強制することができる。
【０２０９】
プロセッサユニット１０６１ａは、ＡＬＵ２１４がいつデータをプロセスできるのかを決定するために使用されるイネーブルスタックも含む。イネーブルスタックは、ＡＬＵがそれに供給されるデータに関して動作できるかどうかを示す８つのイネーブルビットを提供する。好ましい例では、ＡＬＵ２１４は、全ての８ビットが論理１に設定される場合にだけ動作するだろう。イネーブルビットのスタックは、ＡＬＵがネスト化された条件付き命令を実行する必要があるときに特に有効である。このようなネスト化された命令は、ＩＦ、ＥＬＳＥ、ＥＮＤＩＦ命令シーケンスで最も頻繁に発生する傾向がある。  
複数ビットのイネーブルスタックをハードウェア内で提供することにより、ソフトウェアが、ＡＬＵがネスト化された命令シーケンスを処理しているときに、単一イネーブルビットのコンテンツを保存し、ロードする必要性を取り除くことができる。
【０２１０】
ＰＥレジスタファイル１６１ｂの読み取りポートおよび書込みポートは、１６ビットデータワードを、隣接するＰＥの少なくとも１つのＰＥレジスタファイルにコピーできるようにする。
【０２１１】
ロード動作および記憶動作は、アレイコントローラからマイクロコード化されたＡＬＵ命令と並列に発行することができる。ＰＥレジスタファイル１０６１ｂは、ＡＬＵがその中で直接的にメモリデバイスにアクセスした過去のシステムに優るいくつかの性能の優位点を提供する。ＰＥレジスタファイル１０６１ｂは、メモリに対するプロセッサ要素より高速のアクセスを頻繁に使用されるデータ値に与えるか、あるいはメモリからメモリアーキテクチャが提供することができる。加えて、データが、さらに処理速度およびプログラミングの柔軟性を補助するレジスタファイル内で並べられる順序に対する制約はない。
【０２１２】
図１５は、処理要素、およびその要素へのデータ入力回線と出力回線を示すブロック図である。過去に記述されるように、処理要素は、プロセッサユニット１０６１ａ、ＰＥレジスタファイル１０６１ｂ、およびＰＥメモリユニット１０６１ｃを含む。メモリユニット１０６１ｃは、好ましくは、１６バイトから成る１２８ページを記憶することができる。代わりに、その他のメモリ構成がＰＥメモリユニットに使用できるだろう。データ項目は、メモリ読み取りデータ回線およびメモリ書込みデータ回線１０７８と１０７９経由でＰＥレジスタファイル１０６１ｂとＰＥメモリユニット１０６１ｃの間で転送できる。
【０２１３】
加えて、データは、プロセッサ要素の中から、および実際には、その中に要素が位置するプロセッサブロックの中から、ブロックＩ／Ｏデータアウトバス１０６７ｄを経由して転送でき、バス１０６７ｃ内のブロックＩ／Ｏデータを経由してプロセッサブロックの中に転送できる。アドレストランザクションＩＤおよびデータトランザクションＩＤ情報は、バス１０６７ａと１０６７ｂを経由してプロセッサブロックに転送できる。ＭＥＥフィードバックデータは、ＰＥメモリユニット１０６１ｃまたはＰＥレジスタファイル１０６１ｂから、ＭＥＥフィードバックデータアウトガス１０６４を経由して、ＭＥＥフィードバックバッファ（図示せず）に転送される。
【０２１４】
図１６は、ブロックＩ／Ｏインタフェースをさらに詳細に示す。ＰＥメモリ読み取りおよび書込みデータバス１０７８と１０７９は、レジスタと処理装置とメモリユニットの間でデータを転送するために、ブロックＩ／Ｏレジスタファイル１０７１と接続する。処理要素から読み出されるデータは、ブロックＩ／Ｏレジスタファイル１０７１からブロックＩ／Ｏデータアウトバス１０６７ｃの上に出力され、関係する処理要素の中に読み込まれるデータは、バス１０６７ｄ内のブロックＩ／ＯからブロックＩ／Ｏレジスタファイル１０７１に入力される。
【０２１５】
メモリへのアクセスを必要とする処理要素は、表示フラグまたはマークビットを設定することによってこれが当てはまることを示す。それから、第１のこのようなマーキングされたＰＥが選択され、それがアクセスを必要とするメモリアドレスは、処理ブロックの処理要素の全てに伝送される。アドレスは、対応するトランザクションＩＤとともに伝送される。アクセスを必要とする（つまり、表示フラグセットを有する）それらの処理要素は、伝送されたアドレスを彼らがアクセスを必要とするアドレスと比較し、比較が、同じアドレスがアクセスされなければならないことを示す場合には、それらの処理要素はそのメモリアクセスのトランザクションＩＤを登録し、表示フラグをクリアする。
【０２１６】
それから、（選択されたＰＥを含む）メモリへのアクセスを必要とするそれら全てのＰＥは、必要とされるアドレスを、アドレス比較ユニット１０７３を経由してブロックＩ／Ｏインバス１０６７ｄで伝送されるアドレスと比較する。アドレス比較の結果が、選択されたアドレスが使用のために必要とされることを証明する場合には、バイトマスクが外され、関係するメモリアクセスのためのトランザクションＩＤがトランザクションＩＤレジスタ１０７５の中に記憶される。アドレストランザクションＩＤは、アドレストランザクションＩＤバス１０６７ａで供給される。後に、同じトランザクションＩＤを搬送する必須データが、ブロックＩ／Ｏデータインバス１０６７ｄに沿って戻った。同時に、またはデータが戻される直前に、トランザクションＩＤは、データトランザクションＩＤバス１０６７ｂに沿って戻され、プロセッサ要素の全てが、戻されたデータトランザクションＩＤを、比較器１０７６によってトランザクションＩＤレジスタ１０７５に記憶されるトランザクションＩＤと比較する。比較が、戻されたトランザクションＩＤが記憶されているトランザクションＩＤに同等であることを示すと、ブロックＩ／Ｏデータインバス１０６７ｄで到着するデータは、ＰＥレジスタファイル１０６１ｂの中に入力される。トランザクションＩＤが処理ブロックに戻されると、処理要素は、データを回復するために、記憶されているトランザクションＩＤを入信トランザクションＩＤに比較する。
【０２１７】
単にアクセスされたアドレス情報を記憶する代わりにトランザクションＩＤを使用することによって、複数のメモリアクセスを搬送してから、任意の順序で戻すことができるようになる。
【０２１８】
ブース増加は、図１７にさらに詳細に図示されているＢマルチプレクサ２１２を使用して達成される。Ｂマルチプレクサ２１２は、ＶレジスタとＰレジスタから、およびＭＥＥ１６０２から入力２３０を受け取る。Ｂマルチプレクサ２１２はブース再コード化テーブル２１８およびシフトコンプリメントユニット２２０を含む。ブース再コード化テーブル２１８は、Ｓレジスタの２つの最下位ビットから、およびブースレジスタ（Ｓレジスタ（ｓ  ｒｅｇ）およびブースレジスタ（Ｂｏｏｔｈｒｅｇ））から入力２２４、２２６を受け取る。Ｂｏｏｔｈ再コード化は、これらの入力に基づき、ブース再コード化テーブルがこれらのビットを、シフトコンプリメントユニット２２０に送られる、シフトビット、トランスポートビットおよびインバート制御ビットに変換する。シフトコンプリメントユニット２２０は、シフト動作、トランスポート動作、およびインバート動作を、Ｖレジスタのコンテンツに適用する。シフト動作はＶレジスタを左に１ビットシフトし、０でシフトし、トランスポートビットおよびインバートビットが、考えられるシフトされた結果をトランスポートさせる、インバートさせる、またはゼロにさせる、あるいはそれらの組み合わせを引き起こす。
【０２１９】
図１８は、図１６に図示されているプロセッサ要素のＡＬＵ２１４のブロック図を示す。ＡＬＵ２１４は、ＡマルチプレクサおよびＢマルチプレクサ２１０と２１２から１０ビットの入力２３４を受け取り、ＢｏｏｔｈＣａｒｒｙＩｎレジスタとＣａｒｒｙＲｅｇレジスタから入力２４４と２４６も受け取る。ＡＬＵ２４は、制御ユニットから命令も受け取る。ＡＬＵ２１４は、桁上げ伝搬ユニット２３６、桁上げ生成ユニット２３８、および桁上げ選択ユニット２４２を含む。ＡＬＵは、ＡＬＵ結果出力を判断するための排他的論理和（ＸＯＲ）ゲート２５０も含む。ＣａｒｒｙＣｈａｉｎユニット２４０は、桁上げ伝搬ユニット２３６および桁上げ生成ユニット２３８から入力を受け取り、結果をＸＯＲゲート２５０に出力する。
【０２２０】
ＡＬＵ２１４内の多様なユニットは、制御ユニットによって発行される命令を実行するために動作する。
【図１】
2011023036.tif 000003
【図２】
2011023036.tif 000004
【図３】
2011023036.tif 000005
【図４】
2011023036.tif 000006
【図５】
2011023036.tif 000007
【図６】
2011023036.tif 000008
【図７】
2011023036.tif 000009
【図８】
2011023036.tif 000010
【図９】
2011023036.tif 000011
【図１０】
2011023036.tif 000012
【図１１】
2011023036.tif 000013
【図１２】
2011023036.tif 000014
【図１３】
2011023036.tif 000015
【図１４】
2011023036.tif 000016
【図１５】
2011023036.tif 000017
【図１６】
2011023036.tif 000018
【図１７】
2011023036.tif 000019
【図１８】
2011023036.tif 000020
【手続補正書】
【提出日】平成22年10月29日(2010.10.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
処理要素のアレイを制御するコントローラであって、
複数の命令ストリームの各々に対する命令項目を検索し、各命令ストリームは複数の命令項目を有する検索ユニットと、
前記複数の命令ストリームを結合し、シリアル命令ストリームにする結合ユニットと、
前記シリアル命令ストリームを処理要素のアレイに分配する分配ユニットと、
各々が各命令ストリーム用であり、前記命令ストリームそれぞれを制御する複数の命令ストリームプロセッサと、
命令ストリーム間の同期を制御する同期制御コントローラと、
前記命令ストリームの各々に関するステータス情報を提供するステータスブロックと、
ステータス情報を受け取るように接続され、前記命令ストリームのどれがアクティブであるべきかを決定するスケジューラと、を具備するコントローラ。
【請求項２】
処理要素のアレイを制御するコントローラであって、
複数の命令ストリームの各々に対する命令項目を検索し、各命令ストリームは複数の命令項目を有する検索ユニットと、
前記複数の命令ストリームを結合し、シリアル命令ストリームにする結合ユニットと、
前記シリアル命令ストリームを処理要素のアレイに分配する分配ユニットと、
複数の命令ストリームを制御する命令ストリームプロセッサと、
命令ストリーム間での同期を制御する同期制御コントローラと、
前記命令ストリームの各々に関するステータス情報を提供するステータスブロックと、
ステータス情報を受け取るように接続され、前記命令ストリームのどれがアクティブであるべきかを決定するスケジュール手段と、を具備するコントローラ。
【外国語明細書】
2011023036000001.pdf