JP4134182B2 - タスク変更アプリケーションプログラミングインタフェースを提供する方法及び装置 - Google Patents

タスク変更アプリケーションプログラミングインタフェースを提供する方法及び装置 Download PDF

Info

Publication number
JP4134182B2
JP4134182B2 JP2006029218A JP2006029218A JP4134182B2 JP 4134182 B2 JP4134182 B2 JP 4134182B2 JP 2006029218 A JP2006029218 A JP 2006029218A JP 2006029218 A JP2006029218 A JP 2006029218A JP 4134182 B2 JP4134182 B2 JP 4134182B2
Authority
JP
Japan
Prior art keywords
processing
data unit
processor
output data
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006029218A
Other languages
English (en)
Other versions
JP2006221638A (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 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 Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of JP2006221638A publication Critical patent/JP2006221638A/ja
Application granted granted Critical
Publication of JP4134182B2 publication Critical patent/JP4134182B2/ja
Expired - Fee Related 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)
  • Advance Control (AREA)

Description

本発明は、1以上のタスク変更アプリケーションプログラミングインタフェース(API:Application Programming Interface)コードに応答して、マルチ処理システム内の複数のプロセッサ間でタスクを変更する機能を提供する方法及び装置に関する。
近年、最先端のコンピュータアプリケーションがますます複雑になり、かつ処理システムへの要求が増え続けているので、データスループットがより高いコンピュータ処理が常に望まれている。なかでも、グラフィックアプリケーションは処理システムへの要求が最も高いものの1つであり、その理由は、グラフィックアプリケーションが所望のビジュアル結果を実現するために、比較的短時間で非常に多くのデータアクセス、データ演算処理、及びデータ操作を要求するからである。
リアルタイムマルチメディアアプリケーションが重要性を増してきている。これらのアプリケーションには、1秒間に数千メガビットのデータ処理といった非常に高速な処理速度が必要である。シングルプロセッサを採用して高速の処理速度を実現している処理システムもある一方で、マルチプロセッサアーキテクチャを利用して実装されている処理システムもある。マルチプロセッサシステムでは、複数のサブプロセッサが並列に(或いは、少なくとも協調して)動作することで、所望の処理結果を得ることが出来る。
並列マルチプロセッサシステムにおいて複数のプロセッサを用いて数多くの処理ステップを実行するモデルとして、2つの基本処理モデル、すなわち、(i)データ並列処理モデル、(ii)機能並列処理モデルがある。これらのモデルを十二分に議論するために、いくつかの基本的な仮定を考える。アプリケーションプログラム(もしくはその一部)は、データからなるユニットを様々な方法で操作する複数のステップ(1、2、3、4、...)からなる。これらのデータユニットをUn(例えばn=1、2、3、4)で指定してもよい。ここで、Unはn個のデータオブジェクトU1、U2、U3、U4の組を表す。従って、ステップ1において、データユニットUn(U1、U2、U3、U4)はn個のデータオブジェクトのうちの1以上を処理操作した結果として求められる。ステップ間でデータユニットに何らかの依存性があると仮定すると、ステップ2において、データユニットUn'(U1'、U2'、U3'、U4')はデータユニットUnを操作することにより求められる。同様に、ステップ3において、データユニットUn''(U1''、U2''、U3''、U4'')はデータユニットUn'を操作することにより求められる。最終的に、ステップ4において、データユニットUn'''(U1'''、U2'''、U3'''、U4''')はデータユニットUn''を操作することにより求められる。
再度基本並列処理モデルに戻って、データ並列処理モデルでは、マルチプロセッサシステム内の各プロセッサはステップ1〜4の各々を順次(もしくはデータの依存性が要求するいかなるものにも応じて)実施する。これにより、マルチプロセッサシステム内に4個のプロセッサがある場合、各プロセッサはステップ1〜4を、4つのデータの組U1、U2、U3、U4のうち対応するものに対して実施する。しかし、機能並列処理モデルでは、CPUはそれぞれステップ1〜4のうちの1つのみを実施し、データユニットは、データ依存性に応じて変更された次のデータユニットを実現するために、あるCPUから次のCPUへと送られる。
この技術領域における従来の考え方は、機能並列処理モデルはデータ並列処理モデルよりも優れているというものである。その理由は、データ並列処理モデルは各プロセッサ内部においてタスク機能を変更できることが必要となり、これにより処理のスループットが悪くなるからである。しかし、この従来の考え方が正しくないことが明からかになっている。
理想的な (オーバヘッドのない)システムでは、4つのプロセッサを使用した場合、データ並列処理モデルと機能並列処理モデルの両方ともシングルプロセッサと比較して4倍速い処理を実現することができる。実際のシステムでは、データ並列処理モデルと機能並列処理モデルは異なるオーバヘッド特性を示すので、処理スピードも異なってくる。実験やシミュレーションにより以下のことが明らかになっている。例えば、「全オーバヘッド」分析を用いると、2以上のステップを行うのに必要な時間がかなり違う場合、データ並列処理モデルは機能並列処理モデルよりもオーバヘッドによる不利が4.65倍低くなる。また、「MFCセットアップオーバヘッド」分析を用いると、データ並列処理モデルは機能並列処理モデルよりもオーバヘッドによる不利が1.66倍低くなる。「同期化オーバヘッド」分析を用いると、データ並列処理モデルは機能並列処理モデルよりもオーバヘッドによる不利がやや高くなる。しかし、このやや高めのオーバヘッドによる不利は、上述の機能並列処理モデルのオーバヘッドによる不利よりはずっと低い。
よって、この技術領域において、マルチプロセッサシステムによるデータ並列処理モデルを実現する新たな手法が必要であり、これにより、その技術のわかるプログラマがタスク変更アプリケーションプログラミングインタフェースコードを用いてシステムの各プロセッサ内またはプロセッサ間でタスク変更を実現することができる。
本発明の1以上の態様によれば、マルチプロセッサシステムには、データ並列処理モデルを実行するタスク変更機能が備わっており、タスク変更はアプリケーションプログラミングインタフェース(API)コードを用いて実現される。マルチプロセッサシステムがMPEG2コーデック(ここで、ステップ1は可変長復号化(VLD:Variable Length Decoding)、ステップ2は逆量子化(IQ:Inverse Quantization)、ステップ3は逆離散コサイン変換(IDCT:Inverse Discrete Cosine Transform)、ステップ4は動き補償(MC:Motion Compensation)である)を実装している実験では、本発明の各態様によるタスク変更API符号化機能を用いたデータ並列処理モデルは、4個のプロセッサを用いることでシングルプロセッサシステムよりも3.6倍高速な処理を実現した。一方、同じMPEG2コーデックを実装する機能並列処理モデルは、4個のプロセッサを用いることでシングルプロセッサシステムよりも2.9倍高速な処理しか実現しなかった。
本発明の少なくとも1つの態様によれば、マルチ処理システムの複数のプロセッサ内においてデータ並列処理モデルに従って1以上のソフトウェアプログラムを実行する方法及び装置を提供する。ソフトウェアプログラムは複数の処理タスクからなり、各タスクは1以上の入力データユニットに命令を実行することにより出力データユニットを生成し、入出力の各データユニットは1以上のデータオブジェクトを含む。1以上のアプリケーションプログラミングインタフェースコードに応答して、プロセッサのうち所定の1以上のプロセッサ内部において、現在の処理タスクから次の処理タスクへの変更を呼び出す。さらに、次の処理タスクが現在の処理タスクによって生成された出力データユニットを入力データユニットとして用いて、同じプロセッサ内で更なる出力データユニットを生成する。
ソフトウェアプログラマは、複数のプロセッサがデータ並列処理モデルを実装するように1以上のソフトウェアプログラムを設計する場合に、アプリケーションプログラミングインタフェースコードを呼び出すことができる。
好ましくは、ソフトウェアアプリケーションは、最終結果を得るために異なるデータユニットに対して処理タスクを繰り返し実行することを命令する。データユニットのうちのいくつかは、好ましくは他の1以上のデータユニットに依存する。
各プロセッサは、メインメモリに頼らずに内部で処理タスクを実行するローカルメモリを含む。1又は複数のアプリケーションプログラミングインタフェースコードに応答して、当該プロセッサのローカルメモリ内で現在の処理タスクからの出力データユニットを保持する間に、所定のプロセッサ内で現在の処理タスクから次の処理タスクへの変更を呼び出す。
本方法及び本装置は、要求に応答して、現在の処理タスクから別のプロセッサへ出力データユニットをコピーして、異なる処理タスクの入力データユニットとして使用することを提供しうる。
一例では、ソフトウェアプログラムはN個のデータユニットに対して動作するM個の処理タスクを含みうる。ここでM及びNは整数である。このような場合、本発明の1以上の態様に従って、以下のステップ及び/又は機能を実行しうる。
処理タスクのうちの第1のタスクをデータユニットのうちの少なくとも第1のデータユニットに対して実行することにより、第1の出力データユニットを自身から生成して第1のプロセッサのローカルメモリに格納する、
1又は複数のアプリケーションプログラミングインタフェースコードに応答して、第1の処理タスクから少なくとも第1の出力データユニットに対して動作する第2の処理タスクへと変更することにより、第2の出力データユニットを自身から生成して第1のプロセッサのローカルメモリに格納する、
第1のプロセッサの第1のデータユニットに対して、M個の処理タスクの実行が完了するまでこれらの動作を繰り返す。
本発明の種々の態様はさらに、以下のことを提供するようにしてもよい。
第1のプロセッサの動作と同時に、処理タスクのうちの第1のタスクをデータユニットのうち少なくとも第2のデータユニットに対して実行することにより、第1の出力データユニットを自身から生成して第2のプロセッサのローカルメモリに格納する、
1又は複数のアプリケーションプログラミングインタフェースコードに応答して、第1の処理タスクから第2の処理タスクへ変更するとともに少なくとも第1の出力データユニットに対して動作することにより第2の出力データユニットを自身から生成して第2のプロセッサのローカルメモリに格納する、
第2のプロセッサの第2のデータユニットに対して、M個の処理タスクの実行が完了するまでこれらの動作を繰り返す。
好ましくは、さらに別のプロセッサにおけるN個のデータユニットのすべてに対してM個の処理タスクのすべての実行が完了するまで、データユニットに対してM個の処理タスクが順次実行される。
本明細書において、本発明を添付図面とともに説明した場合に、他の態様、特徴、利点等は当業者には明らかであろう。
本発明の様々な態様を説明するために、現在の好ましい形態を図面の形式にて示すが、本発明は図示したとおりの構成ならびに手段に限定されないことを理解されたい。
図1に本発明の1以上の態様を用いるのに適した処理システム100を示す。簡潔で分かりやすくするために、図1のブロック図をここでは装置100の図示として参照し、かつ説明するが、この説明は等しい効力を有する方法の様々な態様に容易に適用できることを理解されたい。なお、各図面において同じ要素は同じ番号で示している。
処理システム100は複数のプロセッサ102A、102B、102C、102Dを有しているが、本発明の趣旨および範囲から逸脱することなく任意のプロセッサ数を用いることができることを理解されたい。処理システム100は、複数のローカルメモリ104A、104B、104C、104D及び共有メモリ106を有している。プロセッサ102A〜D、ローカルメモリ104A〜D、及び共有メモリ106は、好ましくは、各構成要素間で適切なプロトコルに従ってデータを転送するように動作可能なバスシステム108で(直接または間接的に)互いに接続されている。
各プロセッサ102は同様の構成でも、或いは異なる構成でもよい。これらのプロセッサ102は、共有(或いはシステム)メモリ106からデータを要求し、そのデータを操作して所望の結果を得ることが可能な任意の従来技術を用いて実現することができる。例えば、プロセッサ102は、標準マイクロプロセッサや分散型マイクロプロセッサ等のソフトウェア及び/又はファームウェアの実行が可能な任意の従来のプロセッサを用いて実現できる。一例では、1以上のプロセッサ102は、グレースケール情報、色情報、テクスチャデータ、ポリゴン情報、ビデオフレーム情報等を含む画素データ等のデータを要求し、操作することが可能なグラフィックスプロセッサである。
処理システム100のプロセッサ102の少なくとも1つは、メイン(または管理)プロセッサとしての役割を担うことができる。メインプロセッサは、他のプロセッサによるデータ処理をスケジューリングして調整を行う。
共有メモリ106は、好ましくは、メモリインタフェース回路(図示せず)を介して各プロセッサ102に接続されるダイナミックランダムアクセスメモリ(DRAM:Dynamic Random Access Memory)である。共有メモリ106は好ましくはDRAMであるが、例えばスタティックランダムアクセスメモリ(SRAM:Static Random Access Memory)、磁気ランダムアクセスメモリ(MRAM:Magnetic Random Access Memory)、光メモリ、ホログラフィックメモリ等の他の手段を用いて実現されてもよい。
各プロセッサ102は、好ましくは、プロセッサコア及びそれに対応するローカルメモリ104を含み、これによりプログラムを実行する。これらの構成要素は共通の半導体基板上に一体化して配置してもよく、また、設計者の望むとおりに別個に配置してもよい。プロセッサコアは、好ましくは、論理命令がパイプライン方式で処理されるプロセッシングパイプラインを用いて実現することができる。パイプラインは、命令が処理される任意の数のステージに分けることができ、一般にパイプラインは、1以上の命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、及び命令の実行の各ステップを有している。この点に関しプロセッサコアは、命令バッファ、命令デコード回路、依存性チェック回路、命令発行回路、及び実行ステージを有する。
各ローカルメモリ104はバス経由で対応するプロセッサコア102に接続されており、好ましくは、プロセッサコアとして同じチップ(同じ半導体基板)上に位置されている。ローカルメモリ104は、好ましくは、ハードウェアキャッシュメモリ機能を実装するためのオンチップもしくはオフチップのハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラ等が存在しない点において、従来のハードウェアキャッシュメモリとは異なる。オンチップのスペースは限定されていることが多いので、その場合、各ローカルメモリ104の寸法は共有メモリ106よりもずっと小さい。
プロセッサ102は、好ましくは、データアクセスの要求を行い、共有メモリ106からバスシステム108を介して、プログラム実行及びデータ操作用の関連するローカルメモリ104へ、(プログラムデータを含みうる)データをコピーする。データアクセスを容易にするメカニズムは、既知の技術、例えばダイレクトメモリアクセス(DMA:Direct Memory Access)技術を利用して実現できる。この機能は、好ましくはメモリインタフェース回路によって実現される。
図2、3を参照すると、プロセッサ102は、好ましくは、自身に格納された1以上のソフトウェアプログラムを実行するために、共有メモリ106と動作可能な通信状態にある。ソフトウェアプログラムは多数の処理タスクから構成される。これらの処理タスクは、結果を得るために、データに対して1以上の命令を実行することを含む。データは、各々が1以上のデータオブジェクトを有するデータユニットUnを多数含む。
プロセッサ102は、好ましくは、1以上のアプリケーションプログラミングインタフェース(API:Application Programming Interface)コードに応答して、処理タスクを実行する。例えば動作200において、好ましくは、少なくとも1つの処理タスクを、共有メモリ106から所定のプロセッサ102に関連するローカルメモリ104へロードする。動作202では、当該プロセッサ102が処理タスクを実行して、入力データユニット(例えばUn)から出力データユニット(例えばUn')を生成する。その後、出力データユニットを当該プロセッサ102の当該ローカルメモリ104に格納する(動作204)。
ソフトウェアプログラム全体の実行に関連し、動作206において、好ましくはプロセッサ102は、1以上のAPIコードに応答して、(動作200からの)現在の処理タスクから、次の処理タスクへと変更する。さらに、次の処理タスクが用いるデータユニットは、好ましくは現在の処理タスクからの出力データユニット(例えばUn')であり、このユニットでは当該プロセッサ102内においてさらなる出力データユニット(例えばUn'')を求める。
上述に関連して、動作206では、プロセッサ102は1以上のAPIコードを評価して、1又は複数のAPIコードがタスク変更APIコードであるか否かについて判定を行う(動作208)。動作208での判定結果が否定的である場合には、プロセスフローは、好ましくは判定を受けたAPIコード上の適切な動作を行う動作210へ進む。他方、判定動作208での結果が肯定的である場合には、好ましくは、プロセスフローが現在の処理タスクの実行を停止する動作212へ進み、共有メモリ106等から新たな処理タスクを得る(動作214)。
現在の処理タスクを停止し引き続き新たな処理タスクを得る間、好ましくは、プロセッサ102が次の処理タスクが使用できるように、ローカルメモリ104内部にある現在の処理タスクからの出力データユニット(Un')を保持するように動作することができる。この点に関して、動作216では、好ましくは、プロセッサ102が先の処理タスクからの出力データユニット(Un')に対して次の処理タスクを実行して、さらなる出力データユニット(Un'')を生成する。このさらなる出力データユニットは、好ましくは、プロセッサ102に関連するローカルメモリ104に格納される(動作218)。その後、プロセスフローは、好ましくは動作206に戻り、更なるAPIコードを評価する。
図2〜3に示すプロセスフローは、好ましくは、最終結果を得るために所定のソフトウェアプログラムのすべての処理タスクをデータユニットで実行するように、必要に応じて繰り返される。一例として、図4に、図1のマルチプロセッサシステム100に実装され、かつ実行されるデータ並列処理モデルを示す。特に、図4のタイミング図に示されているのは、4つのプロセッサ102A〜D内で行われる各動作である。一般に、ソフトウェアプログラムはN個のデータユニットに対して動作するためのM個の処理タスクを含む。ここで、M及びNはそれぞれ整数である。図4に示す例では、M=4(4個の処理タスク)、N=6(6個のデータユニット)である。
第1の期間で、プロセッサ102A内で第1の処理タスクを実行することによりデータユニットU1が、プロセッサ102B内で第1の処理タスクを実行することによりデータユニットU2が、プロセッサ102C内で第1の処理タスクを実行することによりデータユニットU3が、そしてプロセッサ102D内で第1の処理タスクを実行することによりデータユニットU4が、それぞれ得られる。図2〜3に示す処理フローに従い、得られた出力データユニットU1、U2、U3、U4は、それぞれプロセッサ102に関連するローカルメモリ104に格納される。
1以上のタスク変更APIコードに応答して、各プロセッサ102は第1の処理タスクの実行を停止し、次に実行するための第2の処理タスクを得る。第2の期間では、出力データユニットU1'、U2'、U3'、U4'を求めるために、各プロセッサ102は、第2の処理タスクをそれぞれのデータユニットU1、U2、U3、U4に対して実行する。その後、各プロセッサ102A〜Dは、好ましくは第2の処理タスクの実行を停止して次に実行するための第3の処理タスクを得ることにより、1以上の更なるタスク変更APIコードに応答する。第3の期間では、各プロセッサ102は、好ましくは、出力データユニットU1''、U2''、U3''、U4''を生成するために、第3の処理タスクをそれぞれの出力データユニットU1'、U2'、U3'、U4'に対して実行する。
このプロセスは、好ましくは、すべてのデータユニットUnに対してすべての処理タスクの実行が完了するまで繰り返される。図4に示すように、出力データユニットU5'''、U6'''を生成するために、その後の期間を用いて、プロセッサ102A、102B内で4つの処理タスクを実行することができる。なお、1以上のタスク変更APIコードが処理タスクを変更すべきことを示している場合に、好ましくは、先の処理タスクからの出力データユニットを各プロセッサ102に関連するローカルメモリ104に格納して、次の処理タスクを実行する際に引き続き使用する。
なお、図4に示すタイミングシーケンスは、データ並列処理モデルを実現する際における実行可能な多数のシーケンスの中の一例に過ぎない。図1のマルチプロセッサシステム100が実行可能なタイミングシーケンスの別の例を図5に示す。しかしながら、図5に示すシーケンスは、図4での依存性とは異なるデータユニット依存性を示している。特に、第1の期間で出力データユニットU1は、第1の処理タスクをプロセッサ102A内の所定の入力データユニットに対して実行することにより求められる。第2の期間では、出力データユニットU1'は、第2の処理タスクをプロセッサ102A内のデータユニットU1に対して実行することにより求められる。同時に、出力データユニットU1を単独で若しくは他のデータと組み合わせて使用し、プロセッサ102B内で第1の処理タスクを実行することにより出力データユニットU2を求めることができる。第3の期間では、出力データユニットU1''は、第3の処理タスクをプロセッサ102A内の出力データユニットU1'に対して実行することにより求められる。同時に、出力データユニットU2'は、第2の処理タスクをプロセッサ102B内の出力データユニットU1'及び/又はデータユニットU2に対して実行することにより求めることができる。またさらに、出力データユニットU3は、データユニットU2のみに対して若しくはプロセッサ102C内の他のデータと組み合わせて第1の処理タスクを実行することにより得られる。
このシーケンスは、好ましくは、すべての処理タスクがすべてのデータユニットに対して動作して、所望の結果を得るまで繰り返される。各データユニットを必要に応じてプロセッサ102間で転送することにより、図5に示す依存性を実現する。
ソフトウェアプログラマがソフトウェアプログラムを設計する場合、好ましくは、タスク変更APIコードがソフトウェアプログラマによって呼び出される。タスク変更APIコードを適切に使用することにより、プログラマはデータ並列処理モデルを実現するマルチプロセッサシステム100を実現することができる。
以下に本明細書で説明している1以上の特徴を実行するのに適した、マルチプロセッサシステムのための好ましいコンピュータアーキテクチャを説明する。1以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステム、家庭用端末、PCシステム、サーバシステム、及びワークステーションなどのメディアリッチアプリケーションを、スタンドアローン処理及び/又は分散処理するために動作することができる、シングルチップソリューションとして実装することができる。ゲームシステムや家庭用端末などのいくつかのアプリケーションでは、リアルタイムの演算処理が必須である。例えば、リアルタイムの分散ゲームアプリケーションでは、ユーザにリアルタイムの経験をしていると思わせる程速く、1以上のネットワークイメージの復元、3Dコンピュータグラフィック、オーディオ生成、ネットワーク通信、物理的シミュレーション、及び人工知能処理が実行される必要がある。従って、マルチプロセッサシステムの各プロセッサは、短時間で、かつ予測可能時間でタスクを完了する必要がある。
このために、本コンピュータアーキテクチャによれば、マルチプロセッシングコンピュータシステムの全プロセッサは、共通の演算モジュール(或いはセル)から構成される。この共通の演算モジュールは、構造が一貫しており、また好ましくは、同じ命令セットアーキテクチャを採用している。マルチプロセッシングコンピュータシステムは、1以上のクライアント、サーバ、PC、モバイルコンピュータ、ゲームマシン、PDA、セットトップボックス、電気器具、デジタルテレビ、及びコンピュータプロセッサを使用する他のデバイスにより形成することができる。
複数のコンピュータシステムもまた、必要に応じてネットワークのメンバとなりうる。一貫したモジュール構造により、マルチプロセッシングコンピュータシステムによるアプリケーション及びデータの効率的な高速処理が可能になる。またネットワークが採用される場合は、ネットワーク上にアプリケーション及びデータの高速送信が可能になる。この構造はまた、大きさや処理能力が様々なネットワークのメンバの構築を単純化し、これらのメンバが処理するアプリケーションの準備を単純化する。
図6を参照すると、基本的な処理モジュールはプロセッサエレメント(PE)500である。PE500は、I/Oインタフェース502、プロセッシングユニット(PU)504、及び複数のサブプロセッシングユニット508、すなわち、サブプロセッシングユニット508A、サブプロセッシングユニット508B、サブプロセッシングユニット508C、及びサブプロセッシングユニット508Dを備えている。なお、好適には、PU504としてパワーPC(PPE:Power PC Element)を、SPU508としてシナジスティックプロセッシングエレメント(SPE:Synergisstic Processing Element)を用いる。ローカル(或いは内部)PEバス512は、データ及びアプリケーションを、PU504、サブプロセッシングユニット508、及びメモリインタフェース511間で送信する。ローカルPEバス512は、例えば従来のアーキテクチャを備えることができ、又は、パケット−スイッチネットワークとして実装することができる。パケットスイッチネットワークとして実装される場合は、更なるハードウェアが必要であるものの、利用可能な帯域幅を増やすことができる。
PE500は、デジタル論理回路を実現するように様々な方法を用いて構成可能である。しかしながら、好ましくは、PE500はSOI基板を用いた集積回路として構成でき、或いはシリコン基板に相補性金属酸化膜半導体(CMOS:Complementary Metal Oxide Semiconductor)を用いた単一の集積回路とすることも好適な構成である。基板の他の材料には、ガリウムヒ素、ガリウムアルミウムヒ素、及び、様々なドーパントを採用している他の、いわゆる、III−B化合物を含む。PE500はまた、高速単一磁束量子(RSFQ:Rapid Single-Flux-Quantum)論理回路などの超電導デバイスを用いて実現されてもよい。
PE500は高帯域のメモリ接続516を介して、共有(メイン)メモリ514と密接に結合するよう構成できる。なお、メモリ514をオンチップ化してもよい。好ましくは、メモリ514はダイナミックランダムアクセスメモリ(DRAM:Dynamic Random Access Memory)であるが、例えば、スタティックランダムアクセスメモリ(SRAM:Static Random Access Memory)、磁気ランダムアクセスメモリ(MRAM:Magnetic Random Access Memory)、光メモリ、ホログラフィックメモリなど他の方法を用いて実現してもよい。
PU504とサブプロセッシングユニット508は、それぞれダイレクトメモリアクセス(DMA)の機能を備えたメモリフローコントローラ(MFC:Memory Flow Controller)と結合されており、該メモリフローコントローラは、メモリインタフェース511と共に、PE500のDRAM514とサブプロセッシングユニット508、PU504との間のデータ転送を促進する。DMAC及び/又はメモリインタフェース511は、サブプロセッシングユニット508及びPU504に一体化して、或いは個別に配置される。更に、DMACの機能及び/又はメモリインタフェース511の機能は、1以上の(好ましくはすべての)サブプロセッシングユニット508及びPU504に統合することができる。なお、DRAM514は、PE500と一体化されて配置されてもよいし、PE500とは別個に配置されてもよい。例えば、DRAM514は、実例で示しているように、チップ外に配置してもよく、あるいは一体化してオンチップ配置としてもよい。
PU504はデータ及びアプリケーションをスタンドアローン処理できる標準プロセッサなどを用いることができる。動作時にPU504は、好ましくはサブプロセッシングユニットによるデータ及びアプリケーション処理をスケジューリングして調整を行う。サブプロセッシングユニットは、好ましくは、単一命令複数データ(SIMD:Single Instruction Multiple Data)プロセッサにより実現される。PU504の管理下、サブプロセッシングユニットは並列、かつ独立して、これらのデータ及びアプリケーション処理を行う。PU504は、好ましくは、RISC(Reduced Instruction Set Computing)技術を採用しているマイクロプロセッサアーキテクチャであるパワーPC(PowerPC)コアを用いて実現できる。RISCは、単純な命令の組合せを用いて、より複雑な命令を実行する。従って、プロセッサのタイミングは、単純で高速の動作に基づくものであり、マイクロプロセッサがより多くの命令を所定のクロック速度で実行できる。
PU504は、サブプロセッシングユニット508により、データ及びアプリケーション処理をスケジューリングして調整を行うことでメインプロセッシングユニットの役割を果たす、1つのサブプロセッシングユニットにより実現できる。更に、プロセッサエレメント500内には更に多くのPU504を設けてもよい。
本モジュール構造によれば、特定のコンピュータシステムが有するPE500の数は、そのシステムが要求する処理能力に基づく。例えば、サーバが有するPE500の数は4、ワークステーションが有するPE500の数は2、PDAが有するPE500の数は1とすることができる。特定のソフトウエアセルの処理に割当てられるPE500のサブプロセッシングユニット数は、セル内のプログラムやデータの複雑度や規模により決定される。このように、PE500はモジュール構造を有していることから拡張性が高く、搭載するシステムのスケール、パフォーマンスに応じて容易に拡張することができる。
図7にサブプロセッシングユニット(SPU)508の好ましい構造及び機能を例示する。SPU508アーキテクチャは、好ましくは多目的プロセッサ(平均して高性能を広範なアプリケーションに実現するように設計されているもの)と、特殊目的プロセッサ(高性能を単一のアプリケーションに実現するように設計されているもの)との間の間隙を埋める。SPU508は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどに高性能を実現するように、また、リアルタイムアプリケーションのプログラマに高度な制御を提供するように設計される。SPU508は、グラフィックジオメトリーパイプライン、サーフェースサブディビジョン、高速フーリエ変換、画像処理キーワード、ストリームプロセッシング、MPEGのエンコード/デコード、エンクリプション、デクリプション、デバイスドライバの拡張、モデリング、ゲーム物理学、コンテンツ制作、音響合成及び処理が可能である。
サブプロセッシングユニット508は2つの基本機能ユニットを有し、それらはSPUコア510A及びメモリフローコントローラ(MFC)510Bである。SPUコア510Aはプログラムの実行、データ操作、などを行い、一方でMFC510BはシステムのSPUコア510AとDRAM514の間のデータ転送に関連する機能を実行する。
SPUコア510Aは、ローカルメモリ550、命令ユニット(IU:Instruction Unit)552、レジスタ554、1以上の浮動小数点実行ステージ556、及び1以上の固定小数点実行ステージ558を有している。ローカルメモリ550は、好ましくは、SRAMなどの、シングルポートのランダムメモリアクセスを用いて実装される。殆どのプロセッサは、キャッシュの導入によりメモリへのレイテンシを小さくする一方で、SPUコア510Aはキャッシュより小さいローカルメモリ550を実装している。リアルタイムアプリケーション(及び本明細書に述べているように、他のアプリケーション)のプログラマたちに一貫した、予測可能なメモリアクセスレイテンシを提供するために、SPU508A内のキャッシュメモリアーキテクチャは好ましくない。キャッシュメモリのキャッシュヒット/ミスという特徴のために、数サイクルから数百サイクルまでの、予測困難なメモリアクセス時間が生じる。そのような予測困難性により、例えばリアルタイムアプリケーションのプログラミングに望ましい、アクセス時間の予測可能性が低下する。DMA転送をデータの演算処理にオーバーラップさせることで、ローカルメモリSRAM550においてレイテンシの隠蔽を実現しうる。これにより、リアルタイムアプリケーションのプログラミングが制御しやすくなる。DMAの転送に関連するレイテンシと命令のオーバーヘッドが、キャッシュミスにサービスしているレイテンシのオーバーヘッドを超過していることから、DMAの転送サイズが十分に大きく、十分に予測可能な場合(例えば、データが必要とされる前にDMAコマンドが発行される場合)に、このSRAMのローカルメモリ手法による利点が得られる。
サブプロセッシングユニット508のうちの、所定の1つのサブプロセッシングユニット上で実行しているプログラムは、ローカルアドレスを使用している関連のローカルメモリ550を参照する。しかしながら、ローカルメモリ550のそれぞれの場所はまた、システムのメモリマップ全体内に実アドレス(RA:Real Address)も割当てられる。これにより、プリビレッジソフトウエア(Privilege software)はローカルメモリ550をプロセスの有効アドレス(EA:Effective Address)にマッピングする、ローカルメモリ550と別のローカルメモリ550間のDMA転送を促進する。PU504はまた、有効アドレスを用いてローカルメモリ550に直接アクセスすることができる。好ましい実施形態では、ローカルメモリ550は556キロバイトのストレージを有し、またレジスタ554の容量は128×128ビットである。
SPUコア510Aは、好ましくは、論理命令をパイプライン方式で処理するプロセッシングパイプラインを用いて実装される。パイプラインは命令が処理されるいずれの数のステージに分けられうるが、一般にパイプラインは1以上の命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、及び命令の実行ステップを有している。これに関連して、IU552は命令バッファ、命令デコード回路、依存性チェック回路、及び命令発行回路を有する。
命令バッファは、好ましくは、ローカルメモリ550と結合され、また、フェッチされる際に一時的に命令を格納するように動作できる、複数のレジスタを備えている。命令バッファは好ましくは、全ての命令が一つのグループとしてレジスタから出て行く、つまり、実質的に同時に出て行くように動作する。命令バッファはいずれの大きさでもよいが、好ましくは、2あるいは3レジスタよりは大きくないサイズである。
一般に、デコード回路は命令を分解し、対応する命令の関数を実施する論理的マイクロオペレーションを生成する。例えば、論理的マイクロオペレーションは、算術論理演算、ローカルメモリ550へのロード及びストアオペレーション、レジスタソースオペランド、及び/又は即値データオペランドを特定しうる。デコード回路はまた、ターゲットレジスタアドレス、構造リソース、機能ユニット、及び/又はバスなど、命令がどのリソースを使用するかを示しうる。デコード回路はまた、リソースが要求される命令パイプラインステージを示す情報を与えることが出来る。命令デコード回路は好ましくは、命令バッファのレジスタ数に等しい数の命令を実質的に同時にデコードするように動作する。
依存性チェック回路は、所定の命令のオペランドがパイプラインの他の命令のオペランドに依存しているかどうかを判断するために試験を行う、デジタル論理回路を含む。その場合、所定の命令はそのような他のオペランドが(例えば、他の命令が実行の完了を許容することにより)アップデートされるまで、実行されない。依存性チェック回路は好ましくは、デコード回路から同時に送られる複数の命令の依存性を判断する。
命令発行回路は、浮動小数点実行ステージ556及び/又は固定小数点実行ステージ558へ命令を発行するように動作することができる。
レジスタ554は好ましくは、128エントリのレジスタファイルなどの、相対的に大きな統一レジスタファイルとして実装される。これにより、レジスタが足りなくなる状態を回避するよう、レジスタリネーミングを必要としない、深くパイプライン化された高周波数の実装品が可能になる。一般に、ハードウェアリネーミングには、処理システムのかなりの割合の領域と電力を消費する。その結果、ソフトウエアのループ展開、又は他のインターリーブ技術によりレイテンシがカバーされると、最新のオペレーションが実現されうる。
SPUコア510Aは、好ましくはスーパースカラアーキテクチャであり、これにより1以上の命令がクロックサイクル毎に発行される。SPUコア510Aは好ましくは、命令バッファから送られる同時命令の数、例えば2〜3命令(各クロックサイクル毎に2命令あるいは3命令が発行されることを意味する)に対応する程度まで、スーパースカラとして動作する。所望の処理能力に応じて、多数の、あるいは少数の浮動小数点実行ステージ556と、固定小数点実行ステージ558が採用される。好ましい実施形態では、浮動小数点実行ステージ556は1秒あたり320億の浮動小数点演算速度で演算し(32GFLOPS)、また、固定小数点実行ステージ558は1秒あたり320億回(32GOPS)の演算速度となっている。
MFC510Bは、好ましくは、バスインタフェースユニット(BIU:Bus Interface Unit)564、メモリ管理ユニット(MMU:Memory Management Unit)562、及びダイレクトメモリアクセスコントローラ(DMAC:Direct Memory Access Controller)560を備えている。DMAC560は例外として、MFC510Bは好ましくは、低電力化設計とするため、SPUコア510Aやバス512と比べて半分の周波数で(半分の速度で)動作する。MFC510Bはバス512からSPU508に入力されるデータや命令を処理するように動作することができ、DMACに対しアドレス変換を行い、また、データコヒーレンシに対しスヌープオペレーションを提供する。BIU564はバス512とMMU562及びDMAC560との間にインタフェースを提供する。従って、SPU508(SPUコア510A及びMFC510Bを含む)及びDMAC560は、バス512と物理的に及び/又は論理的に結合されている。
MMU562は、好ましくは、メモリアクセスのために、実アドレスに有効アドレスを変換するように動作することができる。例えば、MMU562は、有効アドレスの上位ビットを実アドレスビットに変換しうる。しかしながら下位のアドレスビットは、好ましくは変換不能であり、また、実アドレスの形成及びメモリへのアクセスリクエストに使用する場合には、ともに論理的及び物理的なものと考えられる。1以上の実施形態では、MMU562は、64ビットのメモリ管理モデルに基づいて実装され、また、4K−、64K−、1M−、及び16M−バイトのページサイズを有する264バイトの有効アドレススペースと、256MBのセグメントサイズを提供しうる。MMU562は好ましくは、DMAコマンドに対し、265バイトまでの仮想メモリ、242バイト(4テラバイト)までの物理メモリをサポートするように動作することができる。MMU562のハードウェアは、8−エントリでフルアソシエイティブのSLBと、256−エントリと、4ウエイセットアソシエイティブのTLBと、TLBに対してハードウェアTLBのミスハンドリングに使用される4×4リプレースメント管理テーブル(RMT:Replacement Management Table)と、を含む。
DMAC560は、好ましくは、SPUコア510Aや、PU504、及び/又は他のSPUなどの1以上の他のデバイスからのDMAコマンドを管理するように動作することができる。DMAコマンドには3つのカテゴリが存在し、それらは、プットコマンド、ゲットコマンド、及びストレージ制御コマンドである。プットコマンドは、ローカルメモリ550から共有メモリ514へデータを移動させるよう動作する。ゲットコマンドは、共有メモリ514からローカルメモリ550へデータを移動させるよう動作する。また、ストレージ制御コマンドには、SLIコマンドと同期化コマンドが含まれる。この同期化コマンドは、アトミックコマンド(atomic command)、信号送信コマンド、及び専用バリアコマンドを有しうる。DMAコマンドに応答して、MMU562は有効アドレスを実アドレスに変換し、実アドレスはBIU564へ送られる。
SPUコア510Aは、好ましくは、DMAC560内のインタフェースと通信(DMAコマンド、ステータスなどを送る)するために、チャネルインタフェース及びデータインタフェースを使用する。SPUコア510Aはチャネルインタフェースを介して、DMAC560のDMAキューへDMAコマンドを送る。DMAコマンドがDMAキューに存在すると、そのコマンドはDMAC560内の発行及び完了論理により処理される。DMAコマンドに対する全てのバストランザクションが終了すると、完了信号がチャネルインタフェースを越えて、SPUコア510Aへ送られる。
図8はPU504の好ましい構造及び機能を例示している。PU504は2つの基本的な機能ユニットを有しており、それらはPUコア504Aとメモリフローコントローラ(MFC)504Bである。PUコア504Aは、プログラム実行、データ操作、マルチプロセッサマネージメント機能などを実行し、一方でMFC504Bはシステム100のPUコア504Aとメモリスペース間のデータ転送に関連する機能を実行する。
PUコア504Aは、L1キャッシュ570、命令ユニット572、レジスタ574、1以上の浮動小数点実行ステージ576、及び1以上の固定小数点実行ステージ578を有することができる。L1キャッシュ570は、共有メモリ106、プロセッサ102、又はMFC504Bを介してメモリスペースの他の部分から受信したデータに対するデータキャッシングの機能を提供する。PUコア504Aが好ましくはスーパーパイプラインとして実装されるので、命令ユニット572は好ましくは、フェッチ、デコード、依存性チェック、発行などを含む、多くのステージを備えた命令パイプラインとして実装される。またPUコア504は好ましくは、スーパースカラ構成であり、一方で1以上の命令がクロックサイクル毎に命令ユニット572から発行される。高度な処理(演算)能力を実現するために、浮動小数点実行ステージ576と固定小数点実行ステージ578は、パイプライン構成で複数のステージを有する。要求される処理能力に応じて、多数の又は少数の浮動小数点実行ステージ576と固定小数点実行ステージ578が採用されうる。
MFC504Bは、バスインタフェースユニット(BIU)580、L2キャッシュメモリ582、キャッシュ不可能なユニット(NCU:Non-Cachable Unit)584、コアインタフェースユニット(CIU:Core Interface Unit)586、及びメモリ管理ユニット(MMU)588を備えている。殆どのMFC504Bは、低電力化設計とするために、PUコア504A及びバス108と比べて、半分の周波数(半分の速度)で動作する。
BIU580は、バス108とL2キャッシュ582とNCU584論理ブロック間にインタフェースを提供する。このためにBIU580は、バス108上で、十分にコヒーレントなメモリオペレーションを実施するために、マスタデバイスとして、また同様にスレーブデバイスとして機能する。マスタデバイスとして、BIU580はL2キャッシュ582とNCU584のために機能するため、バス108へロード/ストアリクエストを供給する。BIU580はまた、バス108へ送信されうるコマンドの合計数を制限するコマンドに対し、フロー制御機構を実装しうる。バス108上のデータオペレーションは、8ビート要するように設計され、そのために、BIU580は好ましくは128バイトキャッシュラインを有するように設計され、また、コヒーレンシーと同期化の粒度単位は128KBである。
L2キャッシュメモリ582(及びサポートハードウェア論理回路)は、好ましくは、512KBのデータをキャッシュするように設計されている。例えば、L2キャッシュ582はキャッシュ可能なロード/ストア、データプリフェッチ、命令フェッチ、命令プリフェッチ、キャッシュオペレーション、及びバリアオペレーションを処理しうる。L2キャッシュ582は、好ましくは8ウエイのセットアソシエイティブシステムである。L2キャッシュ582は、6つのキャストアウトキュー(6つのRCマシンなど)と一致する6つのリロードキューと、8つ(64バイト幅)のストアキューを備えうる。L2キャッシュ582は、L1キャッシュ570において、一部、あるいは全てのデータのコピーをバックアップするように動作しうる。この点は、処理ノードがホットスワップである場合に、状態を回復するのに便利である。このような構成により、L1キャッシュ570が少ないポート数でより速く動作することができ、また、より速くキャッシュツーキャッシュ転送ができる(リクエストがL2キャッシュ582でストップしうるため)。この構成はまた、キャッシュコヒーレンシー管理をL2キャッシュメモリ582へ送るための機構も提供しうる。
NCU584は、CIU586、L2キャッシュメモリ582、及びBIU580と連動しており、通常は、PUコア504Aとメモリシステム間のキャッシュ不可能なオペレーションに対して、キューイング/バッファリング回路として機能する。NCU584は好ましくは、キャッシュ抑制ロード/ストア、バリアオペレーション、及びキャッシュコヒーレンシーオペレーションなどの、L2キャッシュ582により処理されないPUコア504Aとのすべての通信を処理する。NCU584は、好ましくは、上述の低電力化目的を満たすように、半分の速度で動作されうる。
CIU586は、MFC504BとPUコア504Aの境界に配置され、実行ステージ576、578、命令ユニット572、及びMMUユニット588からのリクエストに対し、また、L2キャッシュ582及びNCU584へのリクエストに対し、ルーティング、アービトレーション、及びフロー制御ポイントして機能する。PUコア504A及びMMU588は、好ましくはフルスピードで実行され、一方でL2キャッシュ582及びNCU584は2:1の速度比で動作することができる。従って、周波数の境界がCIU586に存在し、その機能の一つは、2つの周波数ドメイン間でリクエストの送信及びデータのリロードを行いながら、周波数の差を適切に処理することである。
CIU586は3つの機能ブロックを有しており、それらは、ロードユニット、ストアユニット、及びリロードユニットである。更に、データプリフェッチ機能がCIU586により実施され、また好ましくは、ロードユニットの機能部である。CIU586は、好ましくは、
(i)PUコア504AとMMU588からのロード及びストアリクエストを受ける、
(ii)フルスピードのクロック周波数をハーフスピードに変換する(2:1のクロック周波数変換)、
(iii)キャッシュ可能なリクエストをL2キャッシュ582へ送り、キャッシュ不可能なリクエストをNCU584へ送る、
(iv)L2キャッシュ582に対するリクエストとNCU584に対するリクエストを公正に調停する、
(v)ターゲットウインドウでリクエストが受信されてオーバーフローが回避されるように、L2キャッシュ582とNCU584に対する転送のフロー制御を提供する、
(vi)ロードリターンデータを受信し、そのデータを実行ステージ576、578、命令ユニット572、又はMMU588へ送る、
(vii)スヌープリクエストを実行ステージ576、578、命令ユニット572、又はMMU588へ送る、
(viii)ロードリターンデータとスヌープトラフィックを、ハーフスピードからフルスピードへ変換する、
ように動作可能である。
MMU588は、好ましくはPUコア504Aに対して、第2レベルのアドレス変換機能などによりアドレス変換を行う。第1レベルの変換は、好ましくは、MMU588よりも小型で高速でありうる、別々の命令及びデータERAT(Effective to Real Address Translation)アレイにより、PUコア504Aにおいて提供されうる。
好ましい実施形態では、PU504は、64ビットの実装品で、4−6GHz、10F04で動作する。レジスタは、好ましくは64ビット長(1以上の特殊用途のレジスタは小型でありうるが)であり、また、有効アドレスは64ビット長である。命令ユニット572、レジスタ574、及び実行ステージ576、578は、好ましくは、(RISC)演算技術を実現するために、PowerPC技術を用いて実装される。
本コンピュータシステムのモジュール構造に関する更なる詳細は、米国特許第6,526,491号に解説されており、該特許は参照として本願に組込まれる。
本発明の少なくとも1つの更なる態様によれば、上述の方法及び装置は、図面において例示しているような、適切なハードウェアを利用して実現されうる。そのようなハードウェアは標準デジタル回路などの任意の従来技術、ソフトウエア、及び/またはファームウエアプログラムを実行するように動作可能な任意の従来のプロセッサ、プログラム可能なROM(PROM:Programmable Read Only Memory)、プログラム可能なアレイ論理デバイス(PAL:Programmable Array Logic)などの、1つ以上のプログラム可能なデジタルデバイスあるいはシステムを用いて実装されうる。更に、各図に図示している装置は、特定の機能ブロックに分割されて示されているが、そのようなブロックは別の回路を用いて実装されうる及び/あるいは組み合わされて1つ以上の機能ユニットになりうる。更に、本発明の様々な態様は、輸送及び/又は配布のために、(フロッピーディスク、メモリチップなどの)適切な1つまたは複数の記憶媒体に格納されうる、ソフトウエア及び/又はファームウエアプログラムを通じて実装されうる。
本発明の様々な態様により、ソフトウェアプログラマは、マルチプロセッサシステムを1つ以上のタスク変更APIコードに応答させてデータ並列処理モデルを実現することが可能となり、好都合である。
本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は本発明の原理および用途の例を示すものに過ぎないことを理解されたい。このため、添付の請求の範囲で定義した本発明の趣旨および範囲から逸脱することなく、これら例示的な実施形態を種々に変更したり、上記以外の構成を考案し得ることが理解されよう。
本発明の1以上の態様による2以上のサブプロセッサを有するマルチ処理システムの構造を示すブロック図である。 本発明の1以上の更なる態様による、図1の処理システムによって実行されうる処理ステップを示すフローチャートである。 本発明の1以上の更なる態様による、図1の処理システムによって実行されうる、さらに後の処理ステップを示すフローチャートである。 本発明の1以上の更なる態様による、図1のプロセッサによる処理タスク実行方法の一例を示すタイミング図である。 本発明の1以上の更なる態様による、図1のプロセッサによる処理タスク実行方法の別の例を示すタイミング図である。 本発明の1以上の更なる態様による、マルチプロセッサシステムを実装するのに使用されうる、好ましいプロセッサエレメント(PE)を示すブロック図である。 本発明の1以上の更なる態様による、図6のシステムのサブプロセッシングユニット(SPU)の一例の構造を示すブロック図である。 本発明の1以上の更なる態様による、図6のシステムのプロセッシングユニット(PU)の一例の構造を示すブロック図である。
符号の説明
100 処理システム
102、102A〜D プロセッサ
104、104A〜D ローカルメモリ
106 共有メモリ
108 バスシステム
500 プロセッサエレメント
502 I/Oインタフェース
504 プロセッシングユニット
504A PUコア
508、508A〜D サブプロセッシングユニット
510A SPUコア
510B メモリフローコントローラ
511 メモリインタフェース
512 ローカルPEバス
514 共有メモリ
516 高帯域のメモリ接続
550 ローカルメモリ
552、572 命令ユニット
554、574 レジスタ
556、576 浮動小数点実行ステージ
558、578 固定小数点実行ステージ
560 ダイレクトメモリアクセスコントローラ
562、588 メモリ管理ユニット
564、580 バスインタフェースユニット
570 L1キャッシュ
582 L2キャッシュ
584 NCU
586 CIU

Claims (30)

  1. メインメモリと通信可能であり、1以上のデータオブジェクトを含む1以上の入力データユニットに対して命令を実行して1以上のデータオブジェクトを含む出力データユニットを生成する処理タスクを複数有する1以上のソフトウェアプログラムを、データ並列処理モデルに従って実行する複数のプロセッサを備えており、
    各プロセッサは、プロセッサコア及び前記プロセッサコアに接続されたローカルメモリを有しており、
    前記各プロセッサの前記プロセッサコアは、
    前記メインメモリから同じプロセッサ内のローカルメモリにロードされた前記処理タスクを実行して出力データユニットを生成し、前記生成した出力データユニットを前記同じプロセッサ内のローカルメモリに格納後に、1以上のAPIコードがタスク変更APIコードであるか否かについて判定を行い、
    前記APIコードが前記タスク変更APIコードである場合に、前記生成した出力データユニットを前記同じプロセッサ内のローカルメモリにそのまま保持しつつ、前記同じプロセッサ内のローカルメモリにロードされた処理タスクを停止して前記メインメモリから新たな処理タスクを取得し、この新たな処理タスクを実行して前記生成した出力データユニットから別の出力データユニットを生成し、前記別の出力データユニットを前記同じプロセッサ内のローカルメモリに格納することを特徴とする、
    マルチプロセッサシステム
  2. 前記APIコードは、前記複数のプロセッサが前記データ並列処理モデルを実装する場合に呼び出されることを特徴とする、
    請求項1記載のマルチプロセッサシステム
  3. 前記ソフトウェアプログラムは、最終結果を得るまで、異なるデータユニットに対して前記処理タスクを繰り返し実行することを命令することを特徴とする、
    請求項1又は2記載のマルチプロセッサシステム
  4. 1以上の入力データユニット及び出力データユニットは、他の1以上の入力データユニット及び出力データユニットに依存することを特徴とする、
    請求項3記載のマルチプロセッサシステム
  5. 前記各プロセッサは、要求に応答して、別のプロセッサへ前記現在の処理タスクによる前記出力データユニットをコピーして、異なる処理タスクの入力データユニットとして使用することを特徴とする、
    請求項記載のマルチプロセッサシステム
  6. 前記ソフトウェアプログラムはN個のデータユニットに対して動作するM個の処理タスクを含み(M及びNは整数)、
    前記プロセッサのうちの第1のプロセッサは、前記処理タスクのうちの第1のタスクを前記データユニットのうち少なくとも第1のデータユニットに対して実行することにより、第1の出力データユニットを自身から生成して前記ローカルメモリに格納するように動作可能であり、
    前記第1のプロセッサは、前記1以上のAPIコードに応答して、前記第1の処理タスクから第2の処理タスクへ処理タスクを変更するとともに少なくとも前記第1の出力データユニットに対して動作することにより第2の出力データユニットを自身から生成して前記ローカルメモリに格納するように動作可能であり、
    前記第1のプロセッサは、前記第1のデータユニットに対して前記M個の処理タスクの実行が完了するまでこれらの動作を繰り返すようになっていることを特徴とする、
    請求項1又は5記載のマルチプロセッサシステム
  7. 前記プロセッサのうちの第2のプロセッサは、前記第1のプロセッサの動作と同時に、前記処理タスクのうちの第1のタスクを前記データユニットのうち少なくとも第2のデータユニットに対して実行することにより、第1の出力データユニットを自身から生成して前記ローカルメモリに格納するように動作可能であり、
    前記第2のプロセッサは、前記1以上のAPIコードに応答して、前記第1の処理タスクから前記第2の処理タスクへ処理タスクを変更するとともに少なくとも前記第1の出力データユニットに対して動作することにより第2の出力データユニットを自身から生成して前記ローカルメモリに格納するように動作可能であり、
    前記第2のプロセッサは、前記第2のデータユニットに対して前記M個の処理タスクの実行が完了するまでこれらの動作を繰り返すようになっていることを特徴とする、
    請求項記載のマルチプロセッサシステム
  8. さらに別の1以上のプロセッサは、前記N個のデータユニットのすべてに対して前記M個の処理タスクすべての実行が完了するまで、前記データユニットに対して前記M個の処理タスクを順次実行するようになっていることを特徴とする、
    請求項記載のマルチプロセッサシステム
  9. 各々が1以上のデータオブジェクトを含む1以上の入力データユニットに対して命令を実行することにより1以上のデータオブジェクトを含む出力データユニットを生成する処理タスクを複数有する1以上のソフトウェアプログラムを、マルチ処理システムを構成する各々がプロセッサコア及び前記プロセッサコアに接続されて前記処理タスクを実行するためのローカルメモリを有する複数のプロセッサ内でデータ並列処理モデルに従って実行し、
    前記プロセッサのうち所定の1以上のプロセッサの前記プロセッサコアが
    前記メインメモリから同じプロセッサ内のローカルメモリにロードされた前記処理タスクを実行して出力データユニットを生成し、
    前記生成した出力データユニットを前記同じプロセッサ内のローカルメモリに格納後に、1以上のAPIコードがタスク変更APIコードであるか否かについて判定を行い、
    前記APIコードが前記タスク変更APIコードである場合に、前記生成した出力データユニットを前記同じプロセッサ内のローカルメモリにそのまま保持しつつ、前記同じプロセッサ内のローカルメモリにロードされた処理タスクを停止して前記メインメモリから新たな処理タスクを取得し、この新たな処理タスクを実行して前記生成した出力データユニットから別の出力データユニットを生成し、前記別の出力データユニットを前記同じプロセッサ内のローカルメモリに格納することを特徴とする、
    データ処理方法。
  10. 前記APIコードが、前記複数のプロセッサが前記データ並列処理モデルを実装する場合に呼び出されることを特徴とする、
    請求項記載のデータ処理方法。
  11. 前記ソフトウェアプログラムが、最終結果を得るまで、異なるデータユニットに対して前記処理タスクを繰り返し実行することを命令することを特徴とする、
    請求項9又は10記載のデータ処理方法。
  12. 1以上の入力データユニット及び出力データユニットが、他の1以上の入力データユニット及び出力データユニットに依存することを特徴とする、
    請求項11記載のデータ処理方法。
  13. 要求に応答して、別のプロセッサへ前記現在の処理タスクによる前記出力データユニットをコピーして、異なる処理タスクの入力データユニットとして使用することを特徴とする、
    請求項記載のデータ処理方法。
  14. 前記ソフトウェアプログラムがN個のデータユニットに対して動作するM個の処理タスクを含む場合に(M及びNは整数)、
    前記処理タスクのうちの第1のタスクを前記データユニットのうち少なくとも第1のデータユニットに対して実行することにより、第1の出力データユニットを自身から生成して前記プロセッサのうちの第1のプロセッサのローカルメモリに格納し、
    前記1以上のAPIコードに応答して、前記第1の処理タスクから少なくとも前記第1の出力データユニットに対して動作するための第2の処理タスクへ処理タスクを変更することにより、第2の出力データユニットを自身から生成して前記プロセッサのうちの第1のプロセッサのローカルメモリに格納し、
    前記第1のプロセッサの第1のデータユニットに対して、前記M個の処理タスクの実行が完了するまでこれらの動作を繰り返すことを特徴とする、
    請求項9又は13記載のデータ処理方法。
  15. 前記プロセッサのうちの第2のプロセッサが、前記第1のプロセッサの動作と同時に、前記処理タスクのうちの第1のタスクを前記データユニットのうち少なくとも第2のデータユニットに対して実行することにより、第1の出力データユニットを自身から生成して前記第2のプロセッサのローカルメモリに格納し、
    前記1以上のAPIコードに応答して、前記第1の処理タスクから前記第2の処理タスクへ処理タスクを変更するとともに少なくとも前記第1の出力データユニットに対して動作することにより第2の出力データユニットを自身から生成して前記第2のプロセッサの前記ローカルメモリに格納し、
    前記第2のプロセッサの第2のデータユニットに対して、前記M個の処理タスクの実行が完了するまでこれらの動作を繰り返すことを特徴とする、
    請求項14記載のデータ処理方法。
  16. 別の1以上のプロセッサにおけるN個のデータユニットのすべてに対して前記M個の処理タスクすべての実行が完了するまで、前記データユニットに対して前記M個の処理タスクを順次実行することを特徴とする、
    請求項15記載のデータ処理方法。
  17. マルチ処理システムを構成する、各々がメインメモリと通信可能であり且つプロセッサコア及びこのプロセッサコアに接続されたローカルメモリを有する複数のプロセッサのうちの1以上のプロセッサの前記プロセッサコアに、
    以上のデータオブジェクトを含む1以上の入力データユニットに対して命令を実行することにより1以上のデータオブジェクトを含む出力データユニットを生成する処理タスクを複数有する1以上のソフトウェアプログラムを、データ並列処理モデルに従って実行し、
    前記メインメモリから同じプロセッサ内のローカルメモリにロードされた前記処理タスクを実行して出力データユニットを生成し、
    前記生成した出力データユニットを前記同じプロセッサ内のローカルメモリに格納後に、1以上のAPIコードがタスク変更APIコードであるか否かについて判定を行い、
    前記APIコードが前記タスク変更APIコードである場合に、前記生成した出力データユニットを前記同じプロセッサ内のローカルメモリにそのまま保持しつつ、前記同じプロセッサ内のローカルメモリにロードされた処理タスクを停止して前記メインメモリから新たな処理タスクを取得し、この新たな処理タスクを実行して前記生成した出力データユニットから別の出力データユニットを生成し、前記別の出力データユニットを前記同じプロセッサ内のローカルメモリに格納する、
    ことを特徴とする動作を実行させるためのコンピュータプログラム。
  18. 前記APIコードが、前記複数のプロセッサが前記データ並列処理モデルを実装する場合に呼び出されることを特徴とする、
    請求項17記載のコンピュータプログラム。
  19. 前記ソフトウェアプログラムに、最終結果を得るまで、異なるデータユニットに対して前記処理タスクを繰り返し実行することを命令させることを特徴とする、
    請求項17又は18記載のコンピュータプログラム。
  20. 1以上の入力データユニット及び出力データユニットが、他の1以上の入力データユニット及び出力データユニットに依存することを特徴とする、
    請求項19記載のコンピュータプログラム。
  21. 要求に応答して、別のプロセッサへ前記現在の処理タスクによる前記出力データユニットをコピーして、異なる処理タスクの入力データユニットとして使用させることを特徴とする、
    請求項17記載のコンピュータプログラム。
  22. 前記ソフトウェアプログラムがN個のデータユニットに対して動作するM個の処理タスクを含む場合に(M及びNは整数)、
    前記処理タスクのうちの第1のタスクを前記データユニットのうち少なくとも第1のデータユニットに対して実行することにより、第1の出力データユニットを自身から生成して前記プロセッサのうちの第1のプロセッサのローカルメモリに格納させ、
    前記1以上のAPIコードに応答して、前記第1の処理タスクから少なくとも前記第1の出力データユニットに対して動作するための第2の処理タスクへ処理タスクを変更させることにより、第2の出力データユニットを自身から生成して前記プロセッサのうちの第1のプロセッサのローカルメモリに格納させ、
    前記第1のプロセッサの第1のデータユニットに対して、前記M個の処理タスクの実行が完了するまでこれらの動作を繰り返させることを特徴とする、
    請求項17記載のコンピュータプログラム。
  23. 前記プロセッサのうちの第2のプロセッサに、前記第1のプロセッサの動作と同時に、前記処理タスクのうちの第1のタスクを前記データユニットのうち少なくとも第2のデータユニットに対して実行することにより、第1の出力データユニットを自身から生成して前記第2のプロセッサのローカルメモリに格納させ、
    前記1以上のAPIコードに応答して、前記第1の処理タスクから前記第2の処理タスクへ処理タスクを変更するとともに少なくとも前記第1の出力データユニットに対して動作することにより第2の出力データユニットを自身から生成して前記第2のプロセッサの前記ローカルメモリに格納させ、
    前記第2のプロセッサの第2のデータユニットに対して、前記M個の処理タスクの実行が完了するまでこれらの動作を繰り返させることを特徴とする、
    請求項22記載のコンピュータプログラム。
  24. さらに別の1以上のプロセッサにおけるN個のデータユニットのすべてに対して前記M個の処理タスクすべての実行が完了するまで、前記データユニットに対して前記M個の処理タスクを順次実行させることを特徴とする、
    請求項23記載のコンピュータプログラム。
  25. 請求項17〜24のいずれかに記載されたコンピュータプログラムが記録される、コンピュータが読み取り記録媒体。
  26. 共有メモリと、
    この共有メモリに接続されて、各々が1以上のデータオブジェクトを含む1以上の入力データユニットに対して命令を実行して1以上のデータオブジェクトを含む出力データユニットを生成する処理タスクを複数個有する1以上のソフトウェアプログラムを、データ並列処理モデルに従って実行する複数のプロセッサと、
    各プロセッサに対応しており、前記共有メモリに頼らずに前記処理タスクを実行するローカルメモリを備えた装置であって、
    各プロセッサは、
    前記共有メモリから同じプロセッサ内のローカルメモリにロードされた前記処理タスクを実行して出力データユニットを生成し、前記生成した出力データユニットを前記同じプロセッサ内のローカルメモリに格納後に、1以上のAPIコードがタスク変更APIコードであるか否かについて判定を行い、
    前記APIコードが前記タスク変更APIコードである場合に、前記生成した出力データユニットを前記同じプロセッサ内のローカルメモリにそのまま保持しつつ、前記同じプロセッサ内のローカルメモリにロードされた処理タスクを停止して前記共有メモリから新たな処理タスクを取得し、この新たな処理タスクを実行して前記生成した出力データユニットから別の出力データユニットを生成し、前記別の出力データユニットを前記同じプロセッサ内のローカルメモリに格納することを特徴とする、
    データ処理システム。
  27. 前記複数のプロセッサは共通の半導体基板上に形成されていることを特徴とする、
    請求項26記載のデータ処理システム。
  28. 前記プロセッサ及びこのプロセッサに対応するローカルメモリは、共通の半導体基板上に形成されていることを特徴とする、
    請求項27記載のデータ処理システム。
  29. 前記ローカルメモリはハードウェアキャッシュメモリではないことを特徴とする、
    請求項27又は28記載のデータ処理システム。
  30. 前記複数のプロセッサ、前記複数のローカルメモリ、及び共有メモリは共通の半導体基板上に形成されていることを特徴とする、
    請求項26記載のデータ処理システム。
JP2006029218A 2005-02-07 2006-02-07 タスク変更アプリケーションプログラミングインタフェースを提供する方法及び装置 Expired - Fee Related JP4134182B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US65074905P 2005-02-07 2005-02-07

Publications (2)

Publication Number Publication Date
JP2006221638A JP2006221638A (ja) 2006-08-24
JP4134182B2 true JP4134182B2 (ja) 2008-08-13

Family

ID=36777624

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006029218A Expired - Fee Related JP4134182B2 (ja) 2005-02-07 2006-02-07 タスク変更アプリケーションプログラミングインタフェースを提供する方法及び装置

Country Status (3)

Country Link
US (1) US20060179436A1 (ja)
JP (1) JP4134182B2 (ja)
WO (1) WO2006083046A2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006082091A2 (en) * 2005-02-07 2006-08-10 Pact Xpp Technologies Ag Low latency massive parallel data processing device
DE602005020218D1 (de) * 2004-07-29 2010-05-12 St Microelectronics Pvt Ltd Videodekoder mit Parallelprozessoren für die Dekodierung von Makroblocks
JP4833911B2 (ja) * 2007-04-25 2011-12-07 株式会社ソニー・コンピュータエンタテインメント プロセッサユニットおよび情報処理方法
KR101366075B1 (ko) * 2007-12-20 2014-02-21 삼성전자주식회사 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치
JP2009199414A (ja) * 2008-02-22 2009-09-03 Renesas Technology Corp マイクロコンピュータ
US8520571B2 (en) * 2008-03-26 2013-08-27 Qualcomm Incorporated Reconfigurable wireless modem sub-circuits to implement multiple air interface standards
US8458380B2 (en) * 2008-03-26 2013-06-04 Qualcomm Incorporated Off-line task list architecture utilizing tightly coupled memory system
US8787433B2 (en) * 2008-03-28 2014-07-22 Qualcomm Incorporated Wall clock timer and system for generic modem
JP4599438B2 (ja) * 2008-07-31 2010-12-15 株式会社東芝 パイプライン処理装置、パイプライン処理方法及びパイプライン制御プログラム
US8397088B1 (en) 2009-07-21 2013-03-12 The Research Foundation Of State University Of New York Apparatus and method for efficient estimation of the energy dissipation of processor based systems

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3039953B2 (ja) * 1989-04-28 2000-05-08 株式会社日立製作所 並列化装置
US5765011A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5963746A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation Fully distributed processing memory element
US5515535A (en) * 1991-11-05 1996-05-07 Thinking Machines Corporation System and method for parallel variable optimization
US6675189B2 (en) * 1998-05-28 2004-01-06 Hewlett-Packard Development Company, L.P. System for learning and applying integrated task and data parallel strategies in dynamic applications
US6480876B2 (en) * 1998-05-28 2002-11-12 Compaq Information Technologies Group, L.P. System for integrating task and data parallelism in dynamic applications
US6272601B1 (en) * 1999-05-20 2001-08-07 International Business Machines Corporation Critical word forwarding in a multiprocessor system
US6526491B2 (en) * 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks

Also Published As

Publication number Publication date
WO2006083046A3 (en) 2007-02-08
WO2006083046A2 (en) 2006-08-10
US20060179436A1 (en) 2006-08-10
JP2006221638A (ja) 2006-08-24

Similar Documents

Publication Publication Date Title
JP4645973B2 (ja) 命令セットのエミュレーションのための方法、装置及びシステム
JP4805341B2 (ja) アドレス空間の仮想化のための方法および装置
JP4134182B2 (ja) タスク変更アプリケーションプログラミングインタフェースを提供する方法及び装置
US7613886B2 (en) Methods and apparatus for synchronizing data access to a local memory in a multi-processor system
JP4421561B2 (ja) ハイブリッドdmaキュー及びdmaテーブルのデータ処理方法、装置及びシステム
JP4246204B2 (ja) マルチプロセッサシステムにおける共有メモリの管理のための方法及び装置
US7882379B2 (en) Power consumption reduction in a multiprocessor system
US7526608B2 (en) Methods and apparatus for providing a software implemented cache memory
JP4451397B2 (ja) Simdプロセッサスライスの有効/無効の制御のための方法ならびに装置
EP1834245B1 (en) Methods and apparatus for list transfers using dma transfers in a multi-processor system
US7689784B2 (en) Methods and apparatus for dynamic linking program overlay
EP1846829A1 (en) Methods and apparatus for address translation from an external device to a memory of a processor
JP2006172468A (ja) システム内部のデータ転送を処理する装置および方法
US7818507B2 (en) Methods and apparatus for facilitating coherency management in distributed multi-processor system
US20060179275A1 (en) Methods and apparatus for processing instructions in a multi-processor system
US20060206732A1 (en) Methods and apparatus for improving processing performance using instruction dependency check depth

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071211

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080212

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080602

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110606

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4134182

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110606

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120606

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120606

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130606

Year of fee payment: 5

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees