JP5668014B2 - プロセッサにおけるタスクおよびデータ管理 - Google Patents

プロセッサにおけるタスクおよびデータ管理 Download PDF

Info

Publication number
JP5668014B2
JP5668014B2 JP2012094129A JP2012094129A JP5668014B2 JP 5668014 B2 JP5668014 B2 JP 5668014B2 JP 2012094129 A JP2012094129 A JP 2012094129A JP 2012094129 A JP2012094129 A JP 2012094129A JP 5668014 B2 JP5668014 B2 JP 5668014B2
Authority
JP
Japan
Prior art keywords
processor
segments
processing
size
event
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.)
Active
Application number
JP2012094129A
Other languages
English (en)
Other versions
JP2012198902A (ja
Inventor
ステンソン、リチャード、ビー.
ベイツ、ジョン、ピー.
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Interactive Entertainment Inc, Sony Computer Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Publication of JP2012198902A publication Critical patent/JP2012198902A/ja
Application granted granted Critical
Publication of JP5668014B2 publication Critical patent/JP5668014B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/253Centralized memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Image Generation (AREA)

Description

[関連出願との相互参照]
本出願は、2005年9月27日に提出された、本出願と譲受人が共通する特許文献1に関連し、その開示内容全体をここに援用する。
本出願は、2005年9月27日に提出された、本出願と譲受人が共通する特許文献2に関連し、その開示内容全体をここに援用する。
本出願はまた、2005年9月27日に提出された、本出願と譲受人が共通する特許文献3に関連し、その開示内容全体をここに援用する。
本出願はまた、2005年9月27日に提出された、本出願と譲受人が共通する特許文献4に関連し、その開示内容全体をここに援用する。
US patent application 11/238,077 entitled "CELL PROCESSOR METHODS AND APPARATUS" to John P. Bates, Payton R. White and Attila Vass US patent application 11/238,087 entitled "SPU TASK MANAGER FOR CELL PROCESSOR" to John P. Bates, Payton R. White, Richard Stenson, Howard Berkey, Attila Vass and Mark Cerny US patent application 11/238,086 entitled "OPERATING CELL PROCESSORS OVER A NETWORK" to Tatsuya Iwamoto US patent application 11/238,085 entitled "METHOD AND SYSTEM FOR PERFORMING MEMORY COPY FUNCTION ON A CELL PROCESSOR" to Antoine Labour John P. Bates and Richard B. Stenson
[発明の属する技術分野]
本発明の実施形態は、並列処理を対象とし、特に、cellプロセッサにおけるタスク処理およびデータ処理の管理に関する。
cellプロセッサは、並行処理を用いるマイクロプロセッサの一種である。cellプロセッサの基本的な構成は、「パワープロセッサエレメント」(「PPE」)(「プロセッシングエレメント」または「PE」ともいう)と、複数の「共有(Synergistic)プロセッシングエレメント」(「SPE」)とを含む。PPEと、SPEは、「エレメント接続バス」(「EIB」)と呼ばれる内部高速バスで接続される。cellプロセッサは、携帯用デバイスからメインフレームコンピュータまでの広範にわたる用途に適用できるように、スケーラブルに設計されている。
典型的なcellプロセッサは、1個のPPEと、8個以下のSPEを有する。各SPUは、典型的には単チップ、または、メインプロセッサとコプロセッサとを含む単チップの一部である。全てのSPUと、PPUが、例えば、メモリフローコントローラ(MFC)を介して、メインメモリにアクセスすることができる。SPUは、メインプロセッサ上で動作しているプログラムに連動して、オペレーションの並行処理を実行することができる。SPUは、ソフトウェアコードによって管理されるべき小さなローカルメモリ(典型的には256キロバイト程度)を有し、データは、非自動的にローカルSPUメモリへと、またはローカルSPUメモリから、転送されなければならない。高いパフォーマンスを達成するために、このコードとデータは、SPUソフトウェアによって管理される必要がある(PPUソフトウェアの関与は、最小限にする必要がある)。SPUからコードとデータを管理するための、様々な手法が存在する。多くの場合、SPUからコードとデータを管理するための異なる手法を、cellプロセッサ上で同時に実行する必要がある。SPUによって駆動されるタスク管理のためのプログラミングモデルは、多数存在する。残念ながら、全ての用途において適切であるような、単一のタスクシステムは存在しない。
cellプロセッサは、グラフィックスのための頂点処理のような用途に用いられる。処理された頂点データは、続いて、ピクセル処理のためにグラフィックスカードへと受け渡されてもよい。頂点処理においては、cellプロセッサが、多数のポリゴンを描画するために呼び出されてもよい。各ポリゴンは、三以上の頂点により、定義される。多数の頂点が処理されなければならない状況においては、このような頂点データの取り扱いが問題となる可能性がある。例えば、一万個のポリゴンを描画するためにcellプロセッサが呼び出されるかもしれない。各ポリゴンが、3個の頂点を必要とする場合、cellプロセッサは、30000個の頂点を処理しなけれぱならない。各頂点が、32バイトのデータを必要とするならば、一万個のポリゴンでは、960キロバイトのデータが必要となるであろう。残念ながら、これは典型的なSPUのローカルストレージ(典型的には256キロバイト程度)よりも大きい。
すなわち、このような問題に対処するやり方で、cellプロセッサのタスクを分配し、cellプロセッサのデータを管理するための方法およびシステムが必要とされている。
課題を解決する手段
上述の不利な点を克服するために、本発明の実施形態は向けられる。
本発明の教示するところは、添付される図面とともに下記の詳細な説明を考慮することで、容易に理解される。
本発明の実施形態における、セルのタスクおよびデータ管理を実現するセルブロードバンドエンジンアーキテクチャを示す模式図である。 本発明の実施形態におけるcellプロセッサに基づくシステムの模式図である。 本発明の実施形態における、大きなレンダイベントの分割を説明するブロック図である。 本発明の実施形態における、大きなレンダイベントおよび小さなレンダイベントの分割を説明するブロック図である。 本発明の実施形態におけるイベントの処理を説明するシークエンスブロック図である。 本発明の実施形態における、セグメントとグループのバッファリングを説明するブロック図である。 本発明の実施形態における、セルに基づくプロセッサシステム内のイベント処理を説明する一連のブロック図である。
以下の詳細な説明は、多数の、説明のための具体的な細かい内容を含むが、以下の詳細な記述の様々な変形や変更が、本発明の範囲内に含まれることは、当業者に理解される所である。従って、以下に記述される本発明の実施例は、請求項に記載された発明の一般性を失うことなく、また、請求項に記載された発明に制限を課すことなく、説明されている。本発明の実施例は、cellプロセッサのタスクおよびデータ管理(CTDM)を対象とする。本発明の実施形態においては、イベントと呼ばれる大きなタスクは、cellプロセッサの共有プロセッシングエレメント(SPE)のローカルストアに収まることができるように、セグメントに分割されることにより、管理される。各セグメントは、一度に一のSPUによって、タスク処理される。出力プロセッサのメモリの制約のため、二以上のセグメントが関連づけされて、一以上のグループとされてもよい。ここで出力プロセッサとは例えば、SPUから結果として生じた出力を処理するグラフィックスカードなどである。従って、各グループを、SPUによる一以上のセグメントの処理の結果生じた出力とみなしてもよい。
本発明の実施形態において、セルのデータ管理は、SPUが自ら、ローカルストレージからのまたはローカルストレージへのデータについて、ダイレクトメモリアクセス(DMA)転送を操作できる、という事実に依拠する。CTDMは、タスクコマンドをメインメモリに設定できる。PUが新たなコマンド書き込む間、およびSPUがデータにアクセスする間に、データをロックするために、セマフォが使われてもよい。SPUは、他のSPUやPUと競合する状況を避けるために、同じセマフォインタフェースを介して、コマンドリストから、コマンドを引き出すことができる。それらが完了したとき、SPUが新たなコマンドを引き出すことを可能とすることにより、SPUは常にアクティブな状態に保たれるだろう。これにより、データ構造が変化したときでさえも、一貫性のあるピーク効率を確保できるだろう。出力プロセッサへのコマンドについても同様に、コマンドリストに設定することができる。cellプロセッサSPUは、これらのコマンドを順番にに引き出し、出力プロセッサに受け渡すことができる。
図1は、Cellブロードバンドエンジン・アーキテクチャ(CBEA:Cell Broadband engine architecture)として知られるアーキテクチャ準拠プロセッサであることを特徴とする、あるタイプのcellプロセッサ100を示す図である。なお、図1は例示であり、制限を課すものではない。この例に示されるように、cellプロセッサは、PPEの複数のグループ(PPEグループ)とSPEの複数のグループ(SPEグループ)を含みうる。あるいは、cellプロセッサは、単一のSPEと、単一のPPEによる、単一のSPEグループと、単一のPPEグループのみを有してもよい。ハードウェア資源は、グループ内のユニット間で共有されうる。一方、ソフトウェアからは、SPEおよびPPEが独立のエレメントであるように見えなければならない。
図1に示される例では、cellプロセッサ100は、SG_0、...、SG_nといった複数のSPEグループと、PG_0、...、PG_pといった複数のPPEグループと、を含む。各SPEグループは、SPE0、...、SPEgといった複数のSPEを含む。cellプロセッサ100はまた、メインメモリMEMと、入出力機能I/Oも含む。
各PPEグループは、PPE_0、...、PPE_gといった複数のPPEを含む。この例においては、一のグループのSPEは、単一のキャッシュSL1を共有する。キャッシュSL1は、ローカルストレージとメインストレージの間のダイレクトメモリアクセス(DMA)転送のための第一レベルキャッシュである。グループ内の各PPEは、それぞれの第一レベル(内部)キャッシュL1を有する。これに加えて、グループ内のPPEは、単一の第二レベル(外部)キャッシュL2を共有する。図1では、SPEとPPEのためのキャッシュが示されているが、一般的にcellプロセッサ、特にCBEA準拠プロセッサにとって、これらは必須の構成ではない。
エレメント接続バス(EIB)は、上に列挙された様々なコンポーネントを接続する。各SPEグループのSPE、そして、各PPEグループのPPEが、バス・インタフェース・ユニットBIUを介して、EIBにアクセスすることができる。cellプロセッサ100はまた、通常のプロセッサに見出される典型的な二つのコントローラを含む。すなわち、EIBとメインメモリMEMの間のデータの流れを制御するメモリ・インタフェース・コントローラMICと、I/OとEIBの間のデータの流れを制御するバス・インタフェース・コントローラBICを含む。種々の実装において、MIC、BIC、BIUおよびEIBに必要とされる事項は様々であるが、これらの機能、およびこれらを実現するための回路は、当業者によく知られているであろう。
各SPEは、SPU(SPU0、...、SPUg)を含んで構成される。SPEグループ内の各SPUはそれぞれ、専用のローカルストレージ・エリアLSと、専用のメモリフローコントローラMFCを有する。MFCは、対応づけられたメモリ管理ユニット(MMU)を含む。MMUは、メモリ保護やアクセス許可についての情報を保持し、また処理することができる。
PPEは、例えば、対応するキャッシュ付きの64ビットパワーPCプロセッサ・ユニット(PPU)である。CBEA準拠システムは、PPE内に、ベクトル・マルチメディア拡張ユニット(vector multimedia extension unit)を含む。PPEは、汎用処理ユニットであり、(例えば、メモリ保護テーブルのような)システム管理資源にアクセスすることができる。CBEAに定義されるハードウェア資源は、PPEから見えるように、実アドレス空間に明示的にマップされる。従って、いずれのPPEも、適切かつ有効なアドレス値を用いて、これらの資源の任意のものに直接アドレスできる。PPEの主要な機能は、システム内におけるSPEタスクの割り当てと管理である。
SPEは、PPEと比べると、システム管理機能を実行しない点において、計算ユニットとして複雑ではない。一般的にSPUは、単一命令複数データ処理(SIMD:single instruction multiple data)能力を有し、主としてデータを処理し、割り当てられたタスクを実行するために必要なデータ転送を(PPEによりセットアップされたアクセス特性に従って)開始する。SPUの目的は、計算ユニットのいっそうの高密度集積を要求し、供給された命令セットを効果的に用いるアプリケーションを可能とすることである。PPEに管理される、システム内の多数のSPUにより、幅広い用途に渡ってコスト効率のよい処理が可能となる。SPUは、新たな命令セットアーキテクチャを実現する。
MFCコンポーネントは、基本的には、データ転送エンジンである。MFCは、データ転送、保護、そしてcellプロセッサのメインストレージとSPEのローカルストレージとの間の同期のための主要な方法を提供する。MFCコマンドは、実行すべき転送を記述する。MFCの主要な設計目的は、これらのデータ転送動作を、適正な方法で可能な限り早く実行し、それによってcellプロセッサ全体のスループットを最大化することである。データ転送のためのコマンドは、MFC・DMAコマンドと呼ばれる。これらのコマンドが変換されて、ローカルストレージ・ドメインとメインストレージ・ドメインとの間のDMA転送となる。
各MFCは、典型的には、複数のDMA転送を同時にサポートすることができ、複数のMFCコマンドを保持し、処理することができる。これを実現するために、MFCは、MFCコマンドの待ち行列(queue)を保持し、処理する。MFCは、複数の転送要求を待ち行列に投入したり、同時に複数の転送要求を発行したりすることができる。各MFCは、対応するSPUのための一の待ち行列(MFC・SPUコマンド待ち行列)と、他のプロセッサおよびデバイスのための一の待ち行列(MFCプロキシ・コマンド待ち行列)とを備える。論理的には、MFC待ち行列の集合は常に、cellプロセッサ中の各SPUと関連づけられている。しかし一部のアーキテクチャの実装においては、SPUグループのように複数のSPU間で、単一の物理MFCを共有してもよい。そのような場合、ソフトウェアから、すべてのMFCファシリティ(facility)が各SPUに関して独立であるように見えなければならない。各MFC・DMAデータ転送コマンド要求は、ローカルストレージ・アドレス(LSA)と有効アドレス(EA:effective address)との双方を伴う。ローカルストレージ・アドレスは、関連づけられたSPUのローカルストレージ・エリアのみ、直接アドレスできる。有効アドレスは、より一般的な用途を有する。すなわち、ローカルストレージ・エリアが実アドレス空間にエイリアス(aliase)されている場合には(つまり、MFC_SR1[D]が「1」に設定されているならば)、全てのSPUのローカルストレージ・エリアを含めて、メインストレージを参照できる。
MFCは2種類のインタフェースを提示する。1種類はSPU用であり、他の1種類は処理グループ内の他のプロセッサやデバイスすべてのためである。SPUは、MFCを制御するために、チャネルインタフェース(channel interface)を用いる。この場合、あるSPUで動作しているコードは、そのSPU用のMFC・SPUコマンド待ち行列にのみ、アクセスできる。他のプロセッサとデバイスは、メモリマップされたレジスタを用いることにより、そのMFCを制御する。システム内のいずれのプロセッサやデバイスも、SPUに代わってMFCを制御し、MFCプロキシ・コマンド要求を発行することが可能である。MFCはまた、帯域予約やデータ同期特性もサポートする。SPU間の、および/またはSPUとPPU間の通信を容易にするために、SPEおよびPPEは、シグナルイベントに対応づけられるシグナル通知レジスタを含んでもよい。典型的には、PPEとSPEは、PPEがSPEにメッセージを転送するルータとして動作するスター型トポロジで結合されてもよい。そのようなトポロジにおいては、SPE間の直接通信は提供されない。その代わり、各SPEと各PPEは、メールボックスと呼ばれる一方向シグナル通知レジスタを有する。メールボックスは、SPEとホストOSとの同期をとるために用いることができる。
IICコンポーネントは、PPEに提示された割り込みの、優先順位を制御する。IICの主要な目的は、プロセッサ中の他のコンポーネントからの割り込みを、メインシステムの割り込みコントローラを用いずに、処理可能とすることである。IICは、実際には、第二レベルのコントローラである。IICは、CBEA準拠プロセッサの内部割り込み、あるいは、CBEA準拠プロセッサのマルチプロセッサシステム内部割り込みの全てのを扱うことを意図している。システム割り込みコントローラは、典型的には、cellプロセッサ外部の全ての割り込みに対処する。
cellプロセッサシステムにおいては、ソフトウェアは多くの場合、まずIICを確認して、割り込みが外部システム割り込みコントローラから発生したものであるか判定する必要がある。IICは、全てのI/Oデバイスからの割り込みを処理するためのメインシステム割り込みコントローラを代替することを意図するものではない。
cellプロセッサ内部には、2種類のストレージ・ドメイン(storage domain)がある。すなわち、ローカルストレージ・ドメインと、メインストレージ・ドメインである。SPEのローカルストレージは、ローカルストレージ・ドメインに存在する。他の全てのファシリティやメモリは、メインストレージ・ドメインにある。ローカルストレージは、それぞれが特定のSPUと関連づけされた、メモリ・ストレージの一以上の分離したエリアで構成される。各SPUは、それ自身と関連づけられたローカルストレージ・ドメイン内部からの指示(データロードまたはデータストア操作を含む)のみを実行できる。従って、ローカルストレージのエイリアスが可能とされているのでないかぎり、システム内のいずれかのストレージへの、もしくはいずれかのストレージからのデータ転送要求は常に、(個々のSPUの)ローカルストレージ・ドメインとメインストレージ・ドメインとの間でデータを転送するためのMFC・DMAコマンドを発行することにより、実行されなければならない。
SPUプログラムは、ローカルアドレスを用いて、そのローカルストレージ・ドメインを参照する。一方、特権ソフトウェアにおいては、MFC_SR1のDbitを「1」に設定することにより、SPUのローカルストレージ・エリアを、メインストレージ・ドメインにエイリアス指定することが可能である。各ローカルストレージ・エリアは、メインストレージ・ドメイン内の実アドレスを割り当てられる(実アドレスは、システムメモリ内のバイト単位のアドレス、またはI/Oデバイスのバイト単位のアドレスである。)これにより、特権ソフトウェアは、ローカルストレージ・エリアを、アプリケーションの有効アドレス空間にマップすることができ、一のSPUのローカルストレージと、他の一ののSPUのローカルストレージ間でのDMA転送が可能となる。
ローカルストレージ・エリアをメインストレージドメインにエイリアス指定することで、メインストレージ・ドメインにアクセスする他のプログラムまたはデバイスは、ローカルストレージエリアに直接アクセスすることができる。このローカルストレージ・エリアは、ある変換方法によりメインストレージ・ドメインに示される実アドレス空間空間にマッピングされた、有効アドレスまたはI/Oバスアドレスを用いて、メインストレージドメインにエイリアス指定される。
メインストレージドメインにエイリアス指定されたローカルストレージエリアを用いるデータ転送は、キャッシュ禁止として行う必要がある。なぜならば、これらのアクセスは、ローカルストレージドメインにおいて、SPUローカルストレージアクセス(すなわち、SPUロード、ストア、命令フェッチ)と、整合性がないからである。ローカルストレージエリアを、メインストレージドメインの実アドレス空間空間にエイリアス指定することにより、メインストレージエリアにアクセスできる他のどのプログラムやデバイスも、ローカルストレージに直接アクセスすることができる。しかし、エイリアス指定されたローカルストレージは、キャッシュ不可として扱わねばならないため、PPEロードおよびストア命令を用いた大量のデータ転送においては、低いパフォーマンスしか得られないかもしれない。ローカルストレージ・ドメインと、メインストレージ・ドメインの間のデータ転送は、ストール(stall)を避けるために、MFC・DMAコマンドを用いなければならない。
CBEAにおける、メインストレージへのアドレス指定は、パワーPCアーキテクチャで定義されたアドレス指定と互換性がある。CPEAは、パワーPCアーキテクチャのコンセプトを基礎に構築され、さらに、それらをMFCによるメインストレージのアドレス指定に拡張している。
SPUあるいは他の任意のプロセッサやデバイスの中で実行されるアプリケーションプログラムは、メインメモリにアクセスするために、有効アドレスを用いる。有効アドレスは、PPEが、ロード、ストア、分岐、キャッシュ命令を実行するときや、また次の順次命令をフェッチするときに計算される。SPUプログラムは、MFCコマンドの中のパラメータとして、有効アドレスを与えなければならない。有効アドレスは、非特許文献1に記述される手順に従って、実アドレスに変換される。実アドレスは、変換された有効アドレスによって参照される、メインストレージ内の位置である。メインストレージは、システム内の全てのPPE、MFC、およびI/Oデバイスによって共有される。このレベルのストレージに保持される情報は、システム内の全てのプロセッサ、そして全てのデバイスからみることができる。このストレージエリアは、構造上一様でもよく、また、階層的なキャッシュ構造の一部でもよい。プログラムは、有効アドレスを用いて、このレベルのストレージを参照する。
Overview of addres translation in "power PC architechture Book III"
システムのメインメモリは、典型的には、システム・コンフィギュレーションや、データ転送同期、メモリマップドI/O、I/Oサブシステムなどの機能に用いられる特定目的のためのハードウェアレジスタまたはアレイに加えて、汎用および不揮発性のストレージの両方を含む。メインメモリについては、様々なコンフィギュレーションが可能である。表1は、セルブロードバンドエンジンアーキテクチャ(CBEA)として知られる特定の実装のcellプロセッサについて、メインメモリ中のアドレス空間の大きさを記載する。なお、表1は例示であり、制限を課すものではない。
Figure 0005668014
cellプロセッサ100は、プロセッサとシステム内のクリティカルな資源(critical resources)を管理するために、任意のファシリティを含んでもよい。cellプロセッサの管理対象となる資源は、変換ルックアサイド・バッファ(TLB: translation lookaside buffer)と、データおよび命令キャッシュである。これらの資源の管理は、実装に依存するテーブルにより、制御される。
TLBとキャッシュを管理するテーブルは、置換管理テーブルRMTと呼ばれ、各MMUと関連づけられてもよい。これらのテーブルはオプションではあるが、多くの場合、システムにおいてボトルネックになりうるクリティカルな資源それぞれについて、テーブルを備えることが有用である。SPEグループはまた、オプションでキャッシュ階層であるSL1キャッシュを含んでもよい。SL1キャッシュは、DMA転送のための第1レベルのキャッシュに相当する。SL1キャッシュはまた、オプションでRMTを含んでもよい。
cellプロセッサデータおよびタスク管理(CTDM)プログラム102は、メインメモリMEMに格納され、かつ/またはPPEグループのうちの一のPPUにおいて、実行されうる。CTDMプログラム102は、所与のSPEにおいて使用可能なメモリ空間よりも多くのメモリ空間を必要とする大きいタスク(処理イベント104という)を、より小さいサイズの塊(chunk)であるセグメント106に分割する。次に、CTDMプログラム102は、セグメント106の処理に関連する命令を含むコマンドリスト108を構築する。各セグメント106は、SPEのLSの使用可能なサイズ以下であることを特徴とする。SPEは、コマンドリスト108に従って、そのセグメントを処理し、対応する出力を生成する。この出力は、各グループが、関連するセグメント106を処理することにより生成された出力を有する、一以上のグループ110の形であってもよい。
上述の説明は、cellプロセッサの実装において用いられる用語の紹介と解説の提供を意図している。上述の議論はまた、本発明の実施形態におけるデータ構築と方法のためのコンテキストを説明することを意図している。かかる実施形態は、上述のアーキテクチャを有するcellプロセッサ上での、またはcellプロセッサを用いるものに限られない。、ただし、以下に述べる実施形態の一部または全部は、CTDMが用いられる環境として、そのようなCellアーキテクチャを用いて実装されうる。
図2は、本発明の実施形態におけるCTDMを実装すべく構成された、cellプロセッサに基づくシステム200の例を示す図である。説明のために、このシステムは、cellプロセッサ201と出力プロセッサ214を含むものとする。cellプロセッサ201は、メインメモリ202、単一のPPE204、そして8個のSPE206を含む。ただし、cellプロセッサ201は、任意の数のSPEで構成されてもよい。図2について、メモリ、PPE、そしてSPEは、リング型エレメント接続バス210越しに互いに通信することができ、またI/Oデバイス208と通信することができる。
CTDMプログラム205は、PPE204が、新たなコマンドを書き込み、SPUがデータにアクセスする間、データをロックするために、セマフォを用いてもよい。SPUは、他のSPUやPPE204との競合状態を避けるために、同じセマフォ・インタフェイスにより、メインメモリ202内のコマンドリスト211からコマンドを引き出す。それらが完了したとき、SPUが新たなコマンドを引き出すことを可能とすることにより、SPUは常にアクティブな状態に保たれる。これにより、コンフィギュレーションにおいてデータが変動したときでさえも、ピーク効率が定常的であることが保証されるだろう。コマンドリスト211はまた、出力プロセッサ214のためのコマンドを含んでもよい。cellプロセッサ201のSPUは、これらのコマンドを順序通りに引き出し、出力プロセッサ214に受け渡すことができる。
出力プロセッサ214は、cellプロセッサ201からの、グループを処理する。そのグループのサイズは、一般的に、出力プロセッサのためのターゲット入力サイズによって決定される。例えば、各出力セグメントが、わずか36キロバイトであるのに対して、出力プロセッサは、512キロバイトのデータを扱うことのできるI/Oバッファを有するかもしれない。それゆえ、各出力グループは、十六の出力セグメントを含むだろう。
一例として、適応性があり、効率的かつ取り扱いが簡単なグラフィックスAPIにおいて、システム200が用いられてよい。このような場合、出力プロセッサ214は、カリフォルニア州サンタクララのNvidiaコーポレーションで入手可能なモデルNV40、NV45、NV47のようなグラフィックスカードであってもよい。
PPE204は、以下で議論するようにSPUのタスクおよびデータを管理するCTDMプログラム205を実行する。CTDMプログラム205は、小さいイベントおよび大きいイベントを取り扱うことができるよう、充分な適応性があることが好ましい。CTDMプログラム205はまた、SPUおよび出力プロセッサにおけるそれらのイベントの管理にあたって、充分効率的であることが望ましい。CTDMプログラム205においてはまた、ストリーミングでの遅延処理をサポートするために、システム200を拡張することにより、効率性を保証することが望ましい。
このような、適応性および効率性が重要であることを説明するため、以下の例について参照する。この例においてイベントは、頂点データ303のための、大きいレンダイベント301である。頂点データ303は、さらなる処理のためにグラフィックスカードへ送られる前に、cellプロセッサにおいて処理される。さらなる処理とは、例えばシェーディングのようなピクセル処理などである。このようなシェーディングは、例えばCGのような既知のシェーディングソフトウェアによって、達成されてよい。図3Aは、CTDMに基づくレンダイベントの処理をドローコール(Draw Call)302の形式で説明する図である。そのようなレンダイベントは、頂点の組で表される、ビデオゲームのキャラクタのビューの平行移動や、回転、変化などを伴ってもよい。図3Aに示された例においては、ドローコール302は、大量の頂点データを処理するための命令である。大量のデータとは例えば、一のSPUが一度に処理可能である量よりも多いデータである。
符号304において、CTDMプログラムは、大きなレンダイベント301を複数のセグメントに細分し、そしてこれらのセグメントのサブセットを関連付けして、グループとする。具体的には、セグメント1から4は関連づけられてグループ1とされ、セグメント5から8は関連付けられてグループ2とされる。CTDMプログラム205は、これらのセグメントを、cellプロセッサ201の利用可能なSPU間で分配する。セグメントのSPUへの分配は、そのSPUの利用可能性に依存する。イベント301の頂点データ303を論理的に、一のSPUタスクについて一のセグメントとなるように、セグメントに分離し、セグメントを結合させてレンダグループとする。レンダグループは、一のSPU並行ジョブのためのデータを表す。このようにタスクを分離することにより、並行タスキング(tasking)が可能となり、単一のSPUの限られた使用可能なメモリのアコモデーション(accommodation)が可能となる。
PPE204に負荷をかけることなく、セグメントを利用可能なSPUに効率的に分配するために、CTDMプログラムは、コマンドリスト305を作成する。コマンドリストは、各セグメントについての必要なデータのアドレスに加えてさらに、SPUが必要な頂点データのレンダリングを実行するためのコード用のアドレスをも提供する。その結果、SPUは、利用可能になると、コードとデータにアクセスできる。SPUは、各セグメントの頂点データを並行に処理し、結果の出力データを出力プロセッサ(グラフィックスカード)214に、出力する。グラフィックスカード214のためのコマンドもまた、コマンドリスト305にセットされる。cellプロセッサ201のSPUは、それらを単に、順次引き出し、グラフィックスカード214に受け渡すことができる。例えば、一旦グループ内の最後のセグメントがグラフィックスカードに渡されると、そのデータを渡したSPUは、グラフィックスカードに、そのグループの処理を開始するよう指示する「キック」コマンドを引き出すだろう。
図3Bは、CTDMに基づく、小さなレンダイベント311と大きなレンダイベント321の処理を説明する。ここで、小さいイベント311については、1個のSPUタスクに足りるだけのデータであるため、1個のSPUのみが用いられる。この場合、出力グループは、ただ1個のセグメントの処理からの出力を含む。大きいイベント321は、それぞれ4個のセグメントを有する2個のグループに分割される。そのデータの一部は、1個のSPUが小さいイベント311を処理する間に、4個のSPUで並行に実行されるように設定可能である。このようにして、比較的データ量の少ない、小さいイベントがシステム200をストールさせることなく、それぞれのSPUが、DMA転送ごとに取り扱い可能な最大のデータのタスクを処理できる。もしも小さいイベントがSPU間で分割されたならば、このようにはいかないであろう。
一般的に、SPU間でのセグメントの分配は、利用可能なSPUの数がセグメントの数と等しい場合に、最も効率がよい。この条件を常に充たすことは不可能であるため、CTDMプログラム205により、利用可能なSPUの数よりも多いセグメントを有する大きなイベントを、利用可能なSPUが並行に処理することを可能とする。図4Aから4Cは、そのような、並行処理の一例を説明する図である。この場合もやはり例を示す意図で、グラフィックスAPIのための頂点描画呼び出しドローコールが説明されている。具体的には、図4Aで示されるように、ドローコール402に応じて、CTDMプログラム205は、大きなレンダイベント401を8個のレンダセグメントに分割し、コマンドリスト405を生成する。コマンドリスト405は、SPUに、そのセグメントを処理するためのコードとデータをどこで見出すことができるかを示す。グラフィックスカード406の制約のために、セグメントは2つのグループに分割される。
この例においては、レンダイベント401を処理するために、3個のSPUのみが、使用可能であると仮定している。SPU1がコマンドリスト405から、最初のコマンドを取り出す。それは、グループ1のためのセットアップコマンドである。セットアップコマンドは、この特定のグループに関連する特別なデータのリストを含む。そのデータのリストは、そのグループについての詳細を把握する必要がある、全ての他のプロセッサに渡す必要がある。グラフィックスの例の場合は、そのような特別なデータは、テクスチャや、ライティングや変換などのレンダ状態を含んでもよい。これらは、必ずしも処理されるSPUセグメントのために必要とされるのではなく、そのグループのSPUセグメントデータの出力を待つグラフィックスカードまたは他のプロセッサのために必要とされる。そして、SPU1、SPU2およびSPU3は、セグメント1、2および3のためのタスクを取り出す。これらのタスクコマンドは、SPUに、それを処理するためのデータとコードをどこで見出すことができるかを示す。SPUがすでに、そのローカルストアに必要なコードをロードしている場合には、コードをロードするステップを省略することができる。セグメント1、2、および3を処理した後、そのSPUは、結果の出力をグラフィックスカード406に転送する。しかしながら、グループ1のすべては処理されていないので、グラフィックスカード406は、それらの処理を開始しない。ただし、SPU1、SPU2およびSPU3は、セグメント1、2および3の処理を終了しているため、他のタスクのために利用可能である。
図4Bに示すように、SPU1は、タスクセグメント4を処理する。その後、キックコマンドをグループ1のために引き出し、グラフィックスカード406に渡す。グラフィックスカード406は、グループ1の処理を開始する。その間、SPU2とSPU3は、タスクセグメント5と6をそれぞれ引き出しており、それらの処理を開始する。一旦、タスクセグメント5、6が完了すると、結果の出力はグラフィックスカード406のバッファに受け渡され、グループ2の準備ができたときにプロセス開始されるべく、待機する。
図4Cに示されるように、SPU1は、タスクセグメント7を引き出し、SPU2は、タスクセグメント8を引き出す。これらのタスクセグメントの処理が完了したとき、これらのセグメントの対応する出力は、グラフィックスカード406のバッファに転送される。SPU2は、グループ2内の最後のセグメントであるタスクセグメント8を引き出したため、SPU2はその次に、グループ2のキックコマンドを引き出す。それは、セグメント8についてのDMAが完了した後、グラフィックスカード406に受け渡される。
この例においては、タスクセグメントは、順次処理されていることに留意されたい。これは、厳密に必須という訳ではない。また一方、効率的な動作を保証するためには、どのタスクが完了され、どのタスクが完了していないのか、SPUが把握することが望ましい。そのようにして、あるグループ内の最後の未処理タスクセグメントを処理したSPUは、それ自身がキックコマンドをグラフィックスカードに送るべきであることを判定できる。この目的を達成するためには、cellプロセッサ201がメモリ202内に「通知板」を含むことが望ましい。通知板に対して、定期的に問い合わせと更新を行うことにより、SPUは、追加のセグメントが処理を要求しているか、および/あるいは、特定のグループが完了したか、判定することができる。通知板は、例えば、下の表2に示されるように、編成されうる。
Figure 0005668014
表2は、図4Bに示される処理のスナップショットを表す。具体的には、タスク1、2、3および4は完了されており、グループ1が現在、完了されている。セグメント8はまだ、処理を待っている。SPU1の「グループの状態」欄内の「完了」は、SPU1が、「キックグループ1」コマンドをグラフィックスカード406に送るべきであることを、SPU1に示す。タスク1、2および3の「主体」欄の値「なし」は、これらのタスクについて、動作しているSPUがないことを示す。これらのタスクは完了しているためである。同様に、タスク7および8の「主体」欄の値「なし」は、これらのタスクについて動作しているSPUがないことを示す。なぜならば、「状態」欄の値「待機中」によって示されるように、これらのタスクは、まだ処理されていないからである。
cellプロセッサにおいて、各SPUは、ローカルストレージへの、またはローカルストレージからの他のデータを転送しながら同時に、データを処理できる。SPUが、タスクセグメントの処理を効率的に推進するためには、タスクセグメント内のデータをバッファリングすることにより、この能力を活かすことが望ましい。図5は、想定される例のうち、そのようなバッファリングがどのようにして実行されるのかについて説明する例の一を示す。この例においては、大きなレンダイベント501が、cellプロセッサ上で処理されるために、8個のセグメントの頂点データに分割される。cellプロセッサのSPU502は、インタリーブされたSPUタスクのタスキングのため、およびDMA転送のために、セグメントをバッファリングしてもよい。なお、これは例示であり、制限を課すものではない。その結果としてSPU502から出力された頂点データは、グラフィックスカードメモリ504に1以上のグループとして、ダブルバッファリングされる。これに代えて、グラフィックスカードメモリ504において、リングバッファメモリが用いられてもよい。
レンダセグメントのバッファリングは、以下の順序で進められてよい。符号1で示されるように、レンダセグメント1は、SPUローカルストレージのバッファA1の中にロードされる。このタスクデータは処理され、その結果の出力は、符号2に示されるように、SPUローカルストレージのバッファA2に格納される。レンダセグメント1がSPU502によって処理される間に、例えばダイレクトメモリアクセス(DMA)によって、符号3で示されるように、レンダセグメント2をバッファB1にロードすることができる。SPU502がレンダセグメント1の処理を終えたとき、対応する出力は、符号4に示されるように、グラフィックスカードメモリ504のバッファA2に転送される。セグメント1からの出力が転送されている間、SPU502は、レンダセグメント2を処理し、符号5で示されるように、その結果の出力をバッファB2に格納することができる。SPU502がレンダセグメント2を処理する間、DMAによって、符号6で示されるように、レンダセグメント3をバッファA1に転送することができる。SPU502がレンダセグメント2の処理を終えた場合、レンダセグメント3がバッファA1にロードされている間に、SPU502は結果の出力をグラフィックスカードメモリ504のバッファB2に転送してもよい。グラフィックスカードメモリ504が完全なグループを収容した時点で、その頂点データのグループを、例えばシェーディングのようなピクセル処理のために、グラフィックスプロセッサ506に受け渡すことができる。
図5は、セグメントが単一のSPUへ、または単一のSPUからバッファリングされる様子を示す。cellプロセッサならではの計算の効率性を十分に活用するためには、セグメント群を複数のSPUにおいて、並行に処理することが望ましい。そのような並行処理は、本発明の実施形態の範囲に含まれる。例えば、図6Aから6Bに示される図は、レンダイベントデータを並行処理できる3個のSPUが、4個の並行ジョブのための4個のレンダグループ用に組織化される様子を示す。レンダグループは、cellプロセッサ600のメインメモリ602内で編成される。メインメモリ602は、さらに、そのレンダイベントを実行するために必要な種々のコマンドを示すコマンドリスト604を含んでもよい。これらのコマンドは、レンダイベントセットアップコマンド、各セグメント用のレンダコマンド、および各グループのキックレンダコマンドを含む。これらは、上述のように実装されてよい。メモリ602は、前述のタイプの通知板606をさらに含んでもよい。
初めに、図6Aに示すように、レンダグループ1のセグメント1、2および3は、SPU1、SPU2およびSPU3により、破線の矢印で示されるように、それぞれのSPUのバッファA1にDMA転送される。SPU1、SPU2およびSPU3は、頂点処理セグメント1、2および3を、符号603の実線の矢印で示されるように、バッファA1からバッファA2へと転送する。これにより、バッファA1に格納されたセグメントデータが処理され、その結果の出力はバッファA2内に格納される。頂点タスキング603が進められる間、レンダグループ2のセグメント4、5および6は、符号605において点線の矢印で示されるように、DMAによってB1・SPUバッファに転送される。この時点で、通知板606は、テーブル3に示すように表されてもよい。
Figure 0005668014

この例においては、SPUにロードされたタスクセグメント全てについて、そのタスクがそのSPUによって処理されているか否かにかかわらず、「実行中」の状態が適用されている。
一旦SPU1、SPU2およびSPU3において、バッファA1、A2のタスクキングが終了すると、図6Bにおいて符号607の実線の矢印で示されるように、結果の出力データを、DMAにより、グラフィックスカードに送ることができる。グラフィックスカードの、現在使用中のバッファが、全部揃ったグループを含むときには、グラフィックスカードは、その全部揃ったグループを、処理することができる。この処理においては、例えば、ピクセルタスキングを実行したり、そのグループの頂点データをレンダリングしたりする。例えば、グループ1の最後のセグメントについて処理を終了したSPUは、コマンドリストから、「キックレンダグループ1」コマンドを渡す。SPUは、さらにレンダグループを処理しつづけることができ、データをグラフィックスプロセッサ610のバッファBにDMA転送することができる。例えば、セグメント4、5および6をB1からB2バッファへとタスキングしている間、符号609の破線の矢印で示されるように、SPU1、SPU2およびSPU3はそれぞれ、セグメント7、8および9をSPUのA1バッファに転送してよい。セグメント4、5および6についての処理が終了したとき、その結果の出力は、グラフィックスカードのバッファBに転送されてよい。そして、セグメント7、8および9を処理する。SPU1、SPU2およびSPU3は、これらのセグメントを処理する間、セグメント10、11、12を、符号611の破線矢印で示されるように、SPUのB1バッファに転送してよい。この時点で、通知板606は、テーブル4に示すように表されてもよい。
Figure 0005668014
この例において、通知板の「主体」欄は、セグメントを処理したSPUのIDを、処理が完了した後、保持していることに注意されたい。
また、この例においては簡単のため、一のSPUタスクパスによって、グラフィックスカードバッファを満たすSPUを示していることにも注意されたい。実際の実装においては、一レンダイベントを完了するためには、いくつかのレンダグループが必要であるかもしれない。
上記の議論においては、大きなイベントがセグメントに分割されるものとした。これらのセグメントの大きさは、いくぶんかは、イベントサイズと、SPU内の使用可能なストレージとに依存する。大きなイベントをセグメントに分割する処理の一部は、これらのセグメントのサイズと数の決定を伴う。これがどのように実行されるかを説明するためには、数値的な例が有用である。cellプロセッサとデータ管理部に受け渡されて処理される大量のデータである「処理イベント」が、以下の属性を有すると仮定する。なお、これは例示であり、制限を課すものではない。
1.SPU・CTDMローダプログラムは16キロバイト(16*1024バイト)を占める。
2.頂点プロセスは、それぞれ20キロバイトを占める二個のSPU処理プログラムを必要とする。
3.イベントのデータ量の総計は、1メガバイト(1*1024*1024バイト)である。
4.個々の入力データはそれぞれ32バイトである(これは、頂点、単なるxyzベクトルの集合、またはその他、を取り混ぜたものであるかもしれない)。
5.個々の出力データはそれぞれ48バイトである(これは、出力された頂点、単なる処理されたベクトルの集合、さらに、何か他のものなどである)。
6.SPUローカルストアの大きさは256キロバイト(256*1024バイト)である。
一般的に処理イベントは、他の情報を含むだろう。他の情報とは、例えば、元のデータの記憶場所、そのデータの転送先の記憶場所、そして、その出力と関連づけておく必要がある、処理イベントに特有の他のデータのようなデータである。そのような情報は、イベントに特有なデータのブラックボックスと見なされうる。しかし、これらは、簡単のため、この例には含まれていない。
CTDMプログラムは、これらの任意パラメータのSPU内における制約に基づいて、処理イベントを評価する。この例においては、SPUがクワッドバッファリングを用いると仮定する。しかしながら、CTDM・SPUメモリ構成は、適応性があり、ここで述べるクワッドバッファリング構造と同様、トリプルバッファまたはリングバッファ構造をサポートすることもできる。
初めに、CTDMは、プログラムが占める空間を判定する。この空間は、CTDMSPUローダのための16K+プロセスプログラム1のための20K+プロセスプログラム2のための20K=(ローダを含むプログラムのための56)を含む。この56Kをローカルストアの容量256Kから引くと、バッファ用に利用可能な200Kが残る。4個のバッファがあるとすると、これにより、200K/4個のバッファ=バッファあたり50Kが残る。
CTDMプログラムは、セグメントの入力と出力が50Kのバッファに収まることを保証しなければならない。一般的に、出力のサイズが入力のサイズよりも大きいときには、入力と出力の双方に、十分なスペースを提供することが望ましい。この場合、すでに所定の場所に存在する入力データの上に、出力データを直接上書きすることはできない。さらにまた、データ内で相互依存関係があるとき、すべての計算を完成させるために、データの一部が必要となるかもしれない。このような相互依存関係の例としては、全ての頂点が一つ一つの出力に影響を持ちうるような、スプラインに基づく曲線生成や、ポリゴンに基づく細分化曲面の計算などのおいてみられる。そのような場合、計算を実行する間、入力データを上書きすることはできない。もしも、相互依存関係がなく、かつ、入力データのサイズが出力データのサイズ以上であるときには、ただ一個のバッファが必要とされる。そのバッファは、入力および出力の両方のバッファとして機能する。この場合についてもまた、CTDMが処理することが可能である。
例として、CTDMは、以下の計算に基づいてデータのセグメントを生成してもよい。
SPUIOBufferSize = 51200 バイト;(50 * 1024バイト)( SPU入力+出力バッファサイズ)
InputElementSize = 32 バイト;(上記の項目4;)
OutputElementSize = 48 バイト;( 上記の項目5)
//初めに、一のバッファ入力+出力に、幾つの完全なエレメントが収まるか見出す必要がある。
NbrOfElementsPerSegment = SPUIOBufferSize / ( InputElementSize + OutputElementSize )
NbrOfElementsPerSegment = 640;
ActualSegmentSize = NbrOfElementsPerSegment * (InputElementSize + OutputElementSize)
//この場合、実際のサイズはバッファと同じであるが、殆どの場合はこれに当てはまらない。
ActualSegmentSize = 50k (すなわち 51200バイト) ;
NbrOfSegments = TotalDataSize / ActualSegmentSize;
NbrOfSegments = 1*1024バイト*1024バイト/ 51200バイト;
NbrOfSegments = 20; //これは、整数の変数である。余りは切り捨てられる。
//もしも余りがあるならば、その余りを処理するために、さらに一のセグメントを加えなければならない。以下のコードは、余りがあるか否か判定し、その余っているデータに、さらに一のセグメントを加える。
if ( TotalDataSize % ActualSegmentSize )
//%は、モジュラスと呼ばれ、整数の割り算の余りを返す。
NbrOfSegments = NbrOfSegments + 1;
NbrOfSegments = 21;
CTDMがSPU上で1メガバイトのデータを動的に処理するためには、上記のSPUの構成と、入力および出力のデータサイズを所与として、21(実際には20.48)個のデータセグメントが必要である。とはいえ、上の計算においては、セグメントのグルーピングについては考慮していないことに注意されたい。なぜなら、基本的に、SPUセグメント生成において、グルーピングは適切でないからである。出力ターゲットの出力を所与として、グルーピングは第二の計算として生じる。例えば、SPUからくるデータを入れるために、256kのバッファしかないかもしれない。この演算は、非常に似ている計算を含むが、異なるパラメータについても考慮している。
TargetDataSize = 256k; ( 256 * 1024バイト )
//幾つのセグメントがそのグループの入るべきか判定するために要するのは、出力サイズのみである。なぜならば、それが、例えばグラフィックスカードメモリバッファのターゲット出力に影響を与える全てであるからである。
NbrGroups = TargetDataSize / (NbrOfElementsPerSegment * OutputElementSize) ; (上記の項目5 によるエレメントサイズ)
NbrGroups = 262144バイト / (640 * 48 バイト);
NbrGroups = 8:
//余りが切り捨てられる。
//セグメント数の計算と同様に、CTDMは余りを確認し、必要であれば他のグループを加える。
if (TargetDataSize % (NbrOfElementsPerSegment*OutputElementSize))
NbrGroups = NbrGroups + 1;
上記の計算から分かるように、上記のSPUメモリ制約と入力および出力データサイズを所与として、CTDMがSPU上で、1メガバイトのデータを動的に処理するためには、9グループのデータセグメントが必要である。ここで、上記の処理は、CTDMの「データ委託(Data Delegation)」ポーション(portion)と呼ぶ。
当業者には認識されるように、ここで説明された実施形態については、様々な変形例が可能である。例えば、異なる数のSPUが用いられてもよく、また、セルアーキテクチャによっては複数のグループのSPUとPPEが用いられてもよい。さらに、上の議論においては、グラフィックスカードでのピクセル処理とともに、関連するcellプロセッサ上での頂点処理について述べたが、本発明の実施形態は、決して、そのような用途に制限されるものではない。当業者は、ここでの教示と一貫性のあるcellのタスクおよびデータ管理について、多くの異なる用途を考案することができるだろう。
CTDMの実施形態は、かならずしも、PPU上に常駐しなくてもよい。これに代えて、CTDMは、特別な役割を有するSPE(データ管理SPEと呼ばれる)上で動作してもよい。このような構成は、場合によっては、より効率的である可能性がある。このような構成によれば、所定の「データ管理SPE」に全般的に処理イベントをタスキングする場合をのぞいて、PPUがほぼ完全に中断されないからである。PPUは、セグメントおよびグループにした処理の各SPEへの移管を扱う必要はないであろう。全てのセグメントとグループを含む全般的な処理イベントが完了したとき、データ管理SPUは、PPUに信号を送ることが可能である。データ管理SPEはまた、その全般的なイベントのための完了キーを更新することが可能である。PPUは、そのアイドル時間に完了キーを確認する。これらの二つの可能性により、大小両方のデータに関連づけられた、両方の処理イベントのための効率的な通知が可能となるだろう。
以上は、本発明の好ましい実施形態の完全な記述であるが、他の様々な変形、変更、等価物への置換が可能である。それゆえ、本発明の範囲は、上記の記述によって決定されるのではなく、以下の請求項によって決定されるべきであり、その完全な等価物もその範囲に含まれる。ここで記述された特徴は、好ましいものであるか否かに関わらず、ここで述べたいずれの特徴と組み合わされてもよい。以下の請求項においては、特に明示的に断らない限りは、各要素の数量は一以上である。ここに、添付される請求項は、所与の請求項において、「〜ための手段」との語句を用いて明示的に示される場合の他は、ミーンズ・プラス・ファンクションの制限を含むと解されてはならない。

Claims (42)

  1. 1以上のコプロセッサエレメントを備えるプロセッサが、該プロセッサのコプロセッサエレメントのローカルストレージにおいて利用可能であるメモリ空間よりも、大きいメモリ空間を必要とするプロセッサイベントを、前記ローカルストレージにおいて利用可能であるメモリ空間の大きさ以下のセグメントサイズである2以上のセグメントに分割するステップと、
    前記2以上のセグメントを、前記プロセッサが、該プロセッサの1以上のコプロセッサエレメントにおいて処理し、対応する2以上の出力を生成するステップと、
    を備え、
    前記2以上のセグメントを処理するステップは、前記1以上のコプロセッサエレメントが、前記2以上のセグメントの全てのセグメントの処理が完了したか判定するために、前記2以上のセグメントのうちの1以上のセグメントの処理の状態に関する情報を格納する通知板を確認するステップを含むプロセッサのタスクおよびデータ管理方法。
  2. 前記2以上のセグメントを処理するステップは、プロセッサが、1以上のコマンドをコマンドリストから引き出すステップを含み、
    前記コマンドは、1以上のセグメントを処理する命令を含む請求項1に記載の方法。
  3. 前記2以上のセグメントを処理するステップは、プロセッサが、前記セグメントと対応する出力とをクワッドバッファリングするステップを含む請求項1または2に記載の方法。
  4. 前記セグメントサイズは、ローカルストレージ用バッファのサイズ以下である請求項1から3のいずれかに記載の方法。
  5. 前記プロセッサイベントを2以上のセグメントに分割するステップは、プロセッサが、ローカルストレージ用バッファのサイズと、プロセッサイベントのサイズと、個々の入力データである入力エレメントのサイズと、個々の出力データである出力エレメントのサイズとに基づいて、前記セグメントサイズを決定するステップを含む請求項1から4のいずれかに記載の方法。
  6. 前記プロセッサイベントを2以上のセグメントに分割するステップは、プロセッサが、前記プロセッサイベントのサイズおよび前記セグメントサイズに基づいて、前記プロセッサイベントを分割してなるセグメントの数を決定するステップを含む請求項5に記載の方法。
  7. プロセッサが、前記2以上の出力を関連づけて1以上のグループとするステップをさらに含む請求項1に記載の方法。
  8. 前記プロセッサは、各グループが、該プロセッサによって生成された出力に次の処理を施す出力プロセッサが処理可能なターゲットデータサイズ以下のメモリ容量を必要とするように前記2以上の出力を関連づけて1以上のグループとする請求項7に記載の方法。
  9. 前記2以上の出力を関連づけて1以上のグループとするステップは、
    個々の出力データである出力エレメントのサイズ、セグメント当たりの出力エレメントの数、および前記プロセッサによって生成された出力に次の処理を施す出力プロセッサが処理可能なターゲットデータサイズに基づいて、プロセッサが、グループの数を計算するステップを含む請求項7または8に記載の方法。
  10. 記出力プロセッサが、前記対応する2以上の出力を、該出力プロセッサへの入力として用いるステップをさらに備える請求項8または9に記載の方法。
  11. 前記出力プロセッサは、グラフィックスカードである請求項10に記載の方法。
  12. 前記プロセッサイベントは、頂点レンダリングイベントである請求項1から11のいずれかに記載の方法。
  13. 前記2以上の出力を関連づけて、1以上のグループとするステップをさらに含み、
    各グループのサイズは、前記プロセッサによって生成された出力に次の処理を施す出力プロセッサが処理可能なターゲットデータサイズ以下である請求項1に記載の方法。
  14. 前記次の処理は、プロセッサが、他のグループを第2のバッファにロードしながら、第1のバッファに格納された1以上のセグメントからなるグループについての処理を実行するステップを含む請求項13に記載の方法。
  15. 前記プロセッサイベントは頂点レンダリングイベントであり、前記次の処理はピクセルレンダリングイベントである請求項13または14に記載の方法。
  16. 前記ピクセルレンダリングイベントは、ピクセルシェーディングプロセスを含む請求項15に記載の方法。
  17. 前記2以上のセグメントを1以上のコプロセッサエレメントにおいて処理するステップは、
    プロセッサが、第1のコプロセッサエレメントで第1のセグメントを処理するステップと、
    プロセッサが、第2のコプロセッサエレメントで第2のセグメントを処理するステップとを含む請求項1から16のいずれかに記載の方法。
  18. プロセッサが、前記2以上の出力を関連づけて1以上のグループとするステップをさらに含み、
    各グループのサイズは、前記プロセッサによって生成された出力に次の処理を施す出力プロセッサが処理可能なターゲットデータサイズ以下であり、
    前記2以上のセグメントを1以上のコプロセッサエレメントにおいて処理するステップは、プロセッサが、前記関連づけられた2以上のセグメントのグループの各セグメントを異なるコプロセッサエレメントにおいて処理するステップを含む請求項1に記載の方法。
  19. 前記2以上のセグメントを1以上のコプロセッサエレメントにおいて処理するステップは、プロセッサが、一のセグメントをバッファにロードし、他のセグメントを他の1以上のバッファへと転送しながら、かつ/または、他の1以上のバッファから転送しながら、前記一のセグメントを処理するステップを含む請求項1から18のいずれかに記載の方法。
  20. メインプロセッサと、1以上のコプロセッサエレメントと、前記メインプロセッサおよびコプロセッサエレメントと接続されたメインメモリとを有するプロセッサであって、
    各コプロセッサエレメントはコプロセッサユニットとローカルストレージを含み、
    前記メインメモリ内部にはコプロセッサエレメントのローカルストレージにおいて利用可能であるメモリ空間よりも、大きいメモリ空間を必要とするプロセッサイベントを示すデータ、および/またはコードが組み込まれ、また、前記プロセッサによる1以上のコプロセッサエレメントにおける2以上のセグメントの処理の状態に関する情報を格納する通知板が組み込まれ、
    前記プロセッサは、タスクおよびデータ管理方法を実現するための、プロセッサ可読な命令を実行すべく構成され、
    前記方法は、
    前記プロセッサイベントを、前記ローカルストレージにおいて利用可能であるメモリ空間の大きさ以下のセグメントサイズである前記2以上のセグメントに分割するステップと、
    前記2以上のセグメントを、前記プロセッサの1以上のコプロセッサエレメントにおいて処理し、対応する2以上の出力を生成するステップとを備え
    前記前記2以上のセグメントを処理するステップは、前記1以上のコプロセッサエレメントが、前記2以上のセグメントの全てのセグメントの処理が完了したか判定するために、前記通知板を確認するステップを含むプロセッサ。
  21. 前記プロセッサイベントを2以上のセグメントに分割するステップは、
    ローカルストレージ用のバッファのサイズと、プロセッサイベントのサイズと、個々の入力データである入力エレメントのサイズと、個々の出力データである出力エレメントのサイズとに基づいて、前記セグメントサイズを計算するステップを含む請求項20に記載のプロセッサ。
  22. プロセッサイベントを2以上のセグメントに分割するステップは、前記プロセッサイベントのサイズおよび前記セグメントサイズに基づいて、前記プロセッサイベントを分割してなるセグメントの数を決定するステップを含む請求項21に記載のプロセッサ。
  23. メインメモリに組み込まれたコマンドリストをさらに備え、
    前記コマンドリストは、前記セグメントそれぞれの処理に付随する1以上のコマンドを含む請求項20から22のいずれかに記載のプロセッサ。
  24. 前記1以上のコマンドはキックコマンドを含み、
    前記キックコマンドは、他のプロセッサに、前記2以上の対応する出力を含むグループの処理を開始するよう命令する請求項23に記載のプロセッサ。
  25. 前記他のプロセッサは、グラフィックスカードである請求項24に記載のプロセッサ。
  26. 1以上のコプロセッサエレメントは、一のセグメントをバッファにロードし、他のセグメントを1以上の他のバッファへと、かつ/または、1以上の他のバッファから転送しながら、前記一のセグメントを処理するよう構成された請求項20から25のいずれかに記載のプロセッサ。
  27. 前記2以上のセグメントのグループのサイズは、前記プロセッサによって生成された出力に次の処理を施す出力プロセッサが処理可能なターゲットデータサイズ以下であり、
    前記2以上のセグメントを、1以上のコプロセッサエレメントにおいて処理するステップは、前記グループ内の各セグメントを異なるコプロセッサエレメントにおいて処理するステップを含む請求項20から26のいずれかに記載のプロセッサ。
  28. 前記プロセッサイベントは、頂点レンダリングイベントである請求項20から27のいずれかに記載のプロセッサ。
  29. 前記コプロセッサエレメントのうち選択された一のコプロセッサエレメントのローカルストレージに、タスクおよびデータ管理方法をプロセッサに実現させるための、プロセッサ可読な命令が組み込まれ、
    前記選択されたコプロセッサエレメントは、データ管理コプロセッサエレメントとして動作する請求項20から28のいずれかに記載のプロセッサ。
  30. メインプロセッサと、コプロセッサユニットおよびローカルストレージを含む1以上のコプロセッサエレメントと、前記メインプロセッサおよびコプロセッサエレメントと接続されたメインメモリとを有するプロセッサと、
    前記プロセッサによって生成された出力を処理できるよう該プロセッサと接続された出力プロセッサと、
    前記メインメモリおよび/または一以上のコプロセッサエレメントのローカルストレージ内に、タスクおよびデータ管理方法を前記プロセッサに実現させるよう構成されたプロセッサ可読な命令の集合とを備え、
    前記メインメモリには、以上のセグメントの処理の状態に関する情報を格納する通知板が組み込まれ、
    前記方法は、
    プロセッサイベントを、前記ローカルストレージにおいて利用可能であるメモリ空間の大きさ以下のセグメントサイズである前記2以上のセグメントに分割するステップと、
    前記2以上のセグメントを、前記プロセッサの1以上のコプロセッサエレメントにおいて処理し、対応する2以上の出力を生成するステップと、
    前記対応する2以上の出力を前記出力プロセッサに転送するステップと、
    前記出力プロセッサを用いて、前記対応する2以上の出力を処理するステップとを備え
    前記前記2以上のセグメントを処理するステップは、前記1以上のコプロセッサエレメントが、前記2以上のセグメントの全てのセグメントの処理が完了したか判定するために、前記通知板を確認するステップを含むプロセッサに基づくシステム。
  31. 前記プロセッサイベントを2以上のセグメントに分割するステップは、
    ローカルストレージ用バッファのサイズと、プロセッサイベントのサイズと、個々の入力データである入力エレメントのサイズと、個々の出力データである出力エレメントのサイズとに基づいて、前記セグメントサイズを計算するステップを含む請求項30に記載のシステム。
  32. 前記プロセッサイベントを2以上のセグメントに分割するステップは、前記プロセッサイベントのサイズおよび前記セグメントサイズに基づいて、前記プロセッサイベントを分割してなるセグメントの数を決定するステップを含む請求項31に記載のシステム。
  33. 前記プロセッサイベントは、頂点処理イベントである請求項30から32のいずれかに記載のシステム。
  34. 前記出力プロセッサは、グラフィックスカードである請求項30から33のいずれかに記載のシステム。
  35. 前記メインメモリに組み込まれたコマンドリストをさらに備え、
    前記コマンドリストは、前記セグメントそれぞれの処理に付随する1以上のコマンドを含む請求項30から34のいずれかに記載のシステム。
  36. 前記1以上のコマンドはキックコマンドを含み、
    前記キックコマンドは、前記出力プロセッサに、前記2以上の対応する出力を含むグループの処理を開始するよう命令する請求項35に記載のシステム。
  37. 前記2以上の出力が関連づけられて、前記出力プロセッサが処理可能なターゲットデータのサイズ以下のメモリ容量を要するグループされる請求項30から36のいずれかに記載のシステム。
  38. 前記プロセッサイベントは、頂点処理イベントであり、
    前記2以上のセグメントを処理するステップは、頂点データについての頂点変換
    を実行するステップを含み、
    前記出力プロセッサにおいて対応する2以上の出力を処理するステップは、前記対応する2以上の出力についてピクセル処理を実行するステップを含む請求項30から37のいずれかに記載のシステム。
  39. 前記ピクセル処理は、シェーディング処理である請求項38に記載のシステム。
  40. 前記2以上のセグメントを、1以上のコプロセッサエレメントにおいて処理するステップは、前記2以上のセグメントの各セグメントを異なるコプロセッサエレメントにおいて処理するステップを含む請求項30に記載のシステム。
  41. 1以上のコプロセッサエレメントを備えるプロセッサにプロセッサのタスクおよびデータ管理方法を実現させるためのプロセッサ可読命令の集合が組み込まれたプロセッサ可読媒体であって、
    前記方法は、
    プロセッサのコプロセッサエレメントのローカルストレージにおいて利用可能であるメモリ空間よりも、大きいメモリ空間を必要とするプロセッサイベントを、プロセッサが、前記ローカルストレージにおいて利用可能であるメモリ空間の大きさ以下のセグメントサイズである2以上のセグメントに分割するステップと、
    プロセッサが、前記2以上のセグメントを、前記プロセッサの1以上のコプロセッサエレメントにおいて処理し、対応する2以上の出力を生成するステップと、
    を備え、
    前記プロセッサは、以上のセグメントの処理の状態に関する情報を格納する通知板が内部に組み込まれたメインメモリを備え
    前記前記2以上のセグメントを処理するステップは、前記1以上のコプロセッサエレメントが、前記2以上のセグメントの全てのセグメントの処理が完了したか判定するために、前記通知板を確認するステップを含むプロセッサ可読媒体。
  42. 1以上のコプロセッサエレメントを備えるプロセッサ用のタスクおよびデータ管理装置であって、
    プロセッサのコプロセッサエレメントのローカルストレージにおいて利用可能であるメモリ空間よりも、大きいメモリ空間を必要とするプロセッサイベントを、前記ローカルストレージにおいて利用可能であるメモリ空間の大きさ以下のセグメントサイズである2以上のセグメントに分割する手段と、
    前記2以上のセグメントを、前記プロセッサの1以上のコプロセッサエレメントにおいて処理し、対応する2以上の出力を生成する手段と、
    とを備え、
    前記前記2以上のセグメントを処理する手段は、前記1以上のコプロセッサエレメントが、前記2以上のセグメントの全てのセグメントの処理が完了したか判定するために、通知板を確認する手段を含み、
    前記プロセッサイベントを分割する手段は、前記2以上のセグメントのうち1以上のセグメントの処理の状態に関する情報を格納する通知板が内部に組み込まれたメインメモリを備えるプロセッサタスクおよびデータ管理装置。
JP2012094129A 2005-09-27 2012-04-17 プロセッサにおけるタスクおよびデータ管理 Active JP5668014B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/238,095 US7522168B2 (en) 2005-09-27 2005-09-27 Cell processor task and data management
US11/238,095 2005-09-27

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008533494A Division JP2009510612A (ja) 2005-09-27 2006-09-25 Cellプロセッサにおけるタスクおよびデータ管理

Publications (2)

Publication Number Publication Date
JP2012198902A JP2012198902A (ja) 2012-10-18
JP5668014B2 true JP5668014B2 (ja) 2015-02-12

Family

ID=37698133

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2008533494A Pending JP2009510612A (ja) 2005-09-27 2006-09-25 Cellプロセッサにおけるタスクおよびデータ管理
JP2012094129A Active JP5668014B2 (ja) 2005-09-27 2012-04-17 プロセッサにおけるタスクおよびデータ管理

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2008533494A Pending JP2009510612A (ja) 2005-09-27 2006-09-25 Cellプロセッサにおけるタスクおよびデータ管理

Country Status (4)

Country Link
US (3) US7522168B2 (ja)
EP (2) EP2293191B1 (ja)
JP (2) JP2009510612A (ja)
WO (1) WO2007038456A1 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006027639A1 (en) * 2004-09-09 2006-03-16 Pirelli Tyre S.P.A. Method for allowing a control of a vehicle provided with at least two wheels in case of puncture of a tyre
US8037474B2 (en) * 2005-09-27 2011-10-11 Sony Computer Entertainment Inc. Task manager with stored task definition having pointer to a memory address containing required code data related to the task for execution
US7522168B2 (en) * 2005-09-27 2009-04-21 Sony Computer Entertainment Inc. Cell processor task and data management
US8141076B2 (en) * 2005-09-27 2012-03-20 Sony Computer Entertainment Inc. Cell processor methods and apparatus
US8316220B2 (en) * 2005-09-27 2012-11-20 Sony Computer Entertainment Inc. Operating processors over a network
US7975269B2 (en) * 2005-09-27 2011-07-05 Sony Computer Entertainment Inc. Parallel processor methods and apparatus
US7506123B1 (en) * 2005-09-27 2009-03-17 Sony Computer Entertainment Inc. Method and system for performing memory copy function on a cell processor
US7734827B2 (en) * 2005-09-27 2010-06-08 Sony Computer Entertainment, Inc. Operation of cell processors
US7472261B2 (en) * 2005-11-08 2008-12-30 International Business Machines Corporation Method for performing externally assisted calls in a heterogeneous processing complex
US8032675B2 (en) * 2005-12-28 2011-10-04 Intel Corporation Dynamic memory buffer allocation method and system
US8595747B2 (en) * 2005-12-29 2013-11-26 Sony Computer Entertainment Inc. Efficient task scheduling by assigning fixed registers to scheduler
US20070211070A1 (en) * 2006-03-13 2007-09-13 Sony Computer Entertainment Inc. Texture unit for multi processor environment
CA2638453C (en) 2006-03-14 2010-11-09 Transgaming Technologies Inc. General purpose software parallel task engine
US7647483B2 (en) * 2007-02-20 2010-01-12 Sony Computer Entertainment Inc. Multi-threaded parallel processor methods and apparatus
GB0703974D0 (en) * 2007-03-01 2007-04-11 Sony Comp Entertainment Europe Entertainment device
US20080229007A1 (en) * 2007-03-15 2008-09-18 Bellows Mark D Enhancements to an XDR Memory Controller to Allow for Conversion to DDR2
US7934063B2 (en) * 2007-03-29 2011-04-26 International Business Machines Corporation Invoking externally assisted calls from an isolated environment
US8589943B2 (en) 2007-08-15 2013-11-19 Sony Computer Entertainment Inc. Multi-threaded processing with reduced context switching
CN101373434B (zh) * 2007-08-22 2012-01-25 国际商业机器公司 在多处理器系统中快速加载和运行程序映像的方法和系统
CN101398803B (zh) * 2007-09-28 2011-04-06 国际商业机器公司 管理数据移动的方法和使用该方法的细胞宽带引擎处理器
US20100274385A1 (en) * 2008-01-18 2010-10-28 Abb Technology Ab Control system for controlling an industrial robot
CN102047241B (zh) 2008-05-30 2014-03-12 先进微装置公司 本地与全局数据共享
US8803897B2 (en) * 2009-09-03 2014-08-12 Advanced Micro Devices, Inc. Internal, processing-unit memory for general-purpose use
CN102576316B (zh) * 2009-10-13 2014-05-07 蔡光贤 单位协同处理装置和并行协同处理装置及其信息处理方法
US8275800B1 (en) * 2010-08-05 2012-09-25 Teradata Us, Inc. Splitting polygons with interior rings
US20130086315A1 (en) * 2011-10-04 2013-04-04 Moon J. Kim Direct memory access without main memory in a semiconductor storage device-based system
GB2504772A (en) 2012-08-10 2014-02-12 Ibm Coprocessor providing service address space for diagnostics collection
US10198674B2 (en) 2016-12-22 2019-02-05 Canon Kabushiki Kaisha Method, apparatus and system for rendering a graphical representation within limited memory
CN108920132B (zh) * 2018-06-28 2019-08-23 魏代利 一种事件构建方法和存储介质

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3496551A (en) 1967-07-13 1970-02-17 Ibm Task selection in a multi-processor computing system
US3596257A (en) 1969-09-17 1971-07-27 Burroughs Corp Method and apparatus for allocating small memory spaces to a computer program
US3796551A (en) * 1971-09-14 1974-03-12 Aluminum Co Of America Reaction chamber construction for the chlorination of alumina
US5047923A (en) 1987-08-21 1991-09-10 Siemens Aktiengesellschaft Modularly structured digital communication system for interconnecting terminal equipment and public networks
US5185694A (en) 1989-06-26 1993-02-09 Motorola, Inc. Data processing system utilizes block move instruction for burst transferring blocks of data entries where width of data blocks varies
US5136712A (en) 1989-06-29 1992-08-04 Digital Equipment Corporation Temporary object handling system and method in an object based computer operating system
EP0416767A3 (en) 1989-09-08 1992-04-29 Digital Equipment Corporation Position independent code location system
US5109512A (en) 1990-05-31 1992-04-28 International Business Machines Corporation Process for dispatching tasks among multiple information processors
US5452452A (en) 1990-06-11 1995-09-19 Cray Research, Inc. System having integrated dispatcher for self scheduling processors to execute multiple types of processes
JP2809962B2 (ja) 1993-03-02 1998-10-15 株式会社東芝 資源管理方式
JPH0764939A (ja) * 1993-08-24 1995-03-10 Sony Corp 信号処理装置
US5528513A (en) 1993-11-04 1996-06-18 Digital Equipment Corp. Scheduling and admission control policy for a continuous media server
US5745778A (en) 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
US5794017A (en) 1995-02-06 1998-08-11 International Business Machines Corporation Method and system of updating graphics memory in a graphics display system through multiple address transferring of pixel data
US6728959B1 (en) 1995-08-08 2004-04-27 Novell, Inc. Method and apparatus for strong affinity multiprocessor scheduling
US5832262A (en) 1995-09-14 1998-11-03 Lockheed Martin Corporation Realtime hardware scheduler utilizing processor message passing and queue management cells
US5978843A (en) * 1995-12-06 1999-11-02 Industrial Technology Research Institute Scalable architecture for media-on-demand servers
WO1997035254A1 (en) 1996-03-19 1997-09-25 Massachusetts Institute Of Technology Computer system and computer implemented process for representing software system descriptions and for generating executable computer programs and computer system configurations from software system descriptions
US5826081A (en) 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications
JP3292976B2 (ja) * 1996-07-22 2002-06-17 株式会社日立製作所 マルチプロセッサ描画処理装置
US6144986A (en) 1997-03-27 2000-11-07 Cybersales, Inc. System for sorting in a multiprocessor environment
JPH10334054A (ja) * 1997-05-29 1998-12-18 Hitachi Ltd 並列画像生成方法とそのためのデータ分割手法
US6003112A (en) 1997-06-30 1999-12-14 Intel Corporation Memory controller and method for clearing or copying memory utilizing register files to store address information
JPH1165989A (ja) * 1997-08-22 1999-03-09 Sony Computer Entertainment:Kk 情報処理装置
US6295598B1 (en) 1998-06-30 2001-09-25 Src Computers, Inc. Split directory-based cache coherency technique for a multi-processor computer system
US6289369B1 (en) 1998-08-25 2001-09-11 International Business Machines Corporation Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system
US6665699B1 (en) 1999-09-23 2003-12-16 Bull Hn Information Systems Inc. Method and data processing system providing processor affinity dispatching
JP2001118082A (ja) * 1999-10-15 2001-04-27 Toshiba Corp 描画演算処理装置
GB2394336B (en) 1999-11-19 2004-09-08 Gen Dynamics Decisions Systems Method of allocating memory
US7058750B1 (en) 2000-05-10 2006-06-06 Intel Corporation Scalable distributed memory and I/O multiprocessor system
US7565651B1 (en) 2000-05-25 2009-07-21 Oracle International Corporation Parallel task scheduling system for computers
US6981260B2 (en) 2000-05-25 2005-12-27 International Business Machines Corporation Apparatus for minimizing lock contention in a multiple processor system with multiple run queues when determining the threads priorities
US20030154284A1 (en) 2000-05-31 2003-08-14 James Bernardin Distributed data propagator
JP2002014829A (ja) * 2000-06-30 2002-01-18 Japan Research Institute Ltd 並列処理制御システム,方法および並列処理制御のためのプログラムを格納した媒体
US6502170B2 (en) 2000-12-15 2002-12-31 Intel Corporation Memory-to-memory compare/exchange instructions to support non-blocking synchronization schemes
US6526491B2 (en) 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6785756B2 (en) 2001-05-10 2004-08-31 Oracle International Corporation Methods and systems for multi-policy resource scheduling
CA2411294C (en) 2001-11-06 2011-01-04 Everyware Solutions Inc. A method and system for access to automatically synchronized remote files
JP3942979B2 (ja) * 2002-07-30 2007-07-11 大日本印刷株式会社 並列処理システム、サーバ、並列処理方法、プログラム、及び、記録媒体
US7089547B2 (en) 2002-09-13 2006-08-08 International Business Machines Corporation Firmware updating
JP2004287801A (ja) 2003-03-20 2004-10-14 Sony Computer Entertainment Inc 情報処理システム、情報処理装置、分散情報処理方法及びコンピュータプログラム
US7236738B2 (en) 2003-08-01 2007-06-26 Pathfire, Inc. Multicast control systems and methods for dynamic, adaptive time, bandwidth,frequency, and satellite allocations
US7478390B2 (en) 2003-09-25 2009-01-13 International Business Machines Corporation Task queue management of virtual devices using a plurality of processors
US7516456B2 (en) 2003-09-25 2009-04-07 International Business Machines Corporation Asymmetric heterogeneous multi-threaded operating system
US7236998B2 (en) 2003-09-25 2007-06-26 International Business Machines Corporation System and method for solving a large system of dense linear equations
US7523157B2 (en) 2003-09-25 2009-04-21 International Business Machines Corporation Managing a plurality of processors as devices
US7496917B2 (en) * 2003-09-25 2009-02-24 International Business Machines Corporation Virtual devices using a pluarlity of processors
US7321958B2 (en) 2003-10-30 2008-01-22 International Business Machines Corporation System and method for sharing memory by heterogeneous processors
US7565653B2 (en) 2004-02-20 2009-07-21 Sony Computer Entertainment Inc. Methods and apparatus for processor task migration in a multi-processor system
US7614053B2 (en) 2004-02-20 2009-11-03 Sony Computer Entertainment Inc. Methods and apparatus for task management in a multi-processor system
US7298377B2 (en) 2004-06-24 2007-11-20 International Business Machines Corporation System and method for cache optimized data formatting
US7304646B2 (en) 2004-08-19 2007-12-04 Sony Computer Entertainment Inc. Image data structure for direct memory access
US7522168B2 (en) * 2005-09-27 2009-04-21 Sony Computer Entertainment Inc. Cell processor task and data management
US8037474B2 (en) 2005-09-27 2011-10-11 Sony Computer Entertainment Inc. Task manager with stored task definition having pointer to a memory address containing required code data related to the task for execution
US7734827B2 (en) 2005-09-27 2010-06-08 Sony Computer Entertainment, Inc. Operation of cell processors
US7975269B2 (en) 2005-09-27 2011-07-05 Sony Computer Entertainment Inc. Parallel processor methods and apparatus
US8141076B2 (en) 2005-09-27 2012-03-20 Sony Computer Entertainment Inc. Cell processor methods and apparatus
US8316220B2 (en) 2005-09-27 2012-11-20 Sony Computer Entertainment Inc. Operating processors over a network

Also Published As

Publication number Publication date
US7760206B2 (en) 2010-07-20
JP2012198902A (ja) 2012-10-18
US20100251245A1 (en) 2010-09-30
US7522168B2 (en) 2009-04-21
US20090147013A1 (en) 2009-06-11
US20070074221A1 (en) 2007-03-29
EP2293191B1 (en) 2018-04-25
EP2293191A2 (en) 2011-03-09
EP2293191A3 (en) 2012-06-20
JP2009510612A (ja) 2009-03-12
EP1934738A1 (en) 2008-06-25
WO2007038456A1 (en) 2007-04-05
US8068109B2 (en) 2011-11-29

Similar Documents

Publication Publication Date Title
JP5668014B2 (ja) プロセッサにおけるタスクおよびデータ管理
US8316220B2 (en) Operating processors over a network
US7478390B2 (en) Task queue management of virtual devices using a plurality of processors
US9606936B2 (en) Generalized control registers
EP1696318B1 (en) Methods and apparatus for segmented stack management in a processor system
EP1839165B1 (en) Methods and apparatus for hybrid dma queue and dma table
US9176794B2 (en) Graphics compute process scheduling
US8549521B2 (en) Virtual devices using a plurality of processors
KR100881810B1 (ko) 외부 장치로부터 프로세서의 메모리로의 주소 번역을 위한방법 및 기구
JP4346612B2 (ja) 情報処理方法および装置
US9176795B2 (en) Graphics processing dispatch from user mode
US8037271B2 (en) Method and system for performing memory copy function
US20120188259A1 (en) Mechanisms for Enabling Task Scheduling
US20130141446A1 (en) Method and Apparatus for Servicing Page Fault Exceptions

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130731

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130903

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131101

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140401

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140530

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141215

R150 Certificate of patent or registration of utility model

Ref document number: 5668014

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

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