JP4526412B2 - マルチプロセッサシステムにおけるタスク管理方法および装置 - Google Patents

マルチプロセッサシステムにおけるタスク管理方法および装置 Download PDF

Info

Publication number
JP4526412B2
JP4526412B2 JP2005044874A JP2005044874A JP4526412B2 JP 4526412 B2 JP4526412 B2 JP 4526412B2 JP 2005044874 A JP2005044874 A JP 2005044874A JP 2005044874 A JP2005044874 A JP 2005044874A JP 4526412 B2 JP4526412 B2 JP 4526412B2
Authority
JP
Japan
Prior art keywords
task
processor
sub
processing unit
table entry
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
JP2005044874A
Other languages
English (en)
Other versions
JP2005235228A (ja
JP2005235228A5 (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 JP2005235228A publication Critical patent/JP2005235228A/ja
Publication of JP2005235228A5 publication Critical patent/JP2005235228A5/ja
Application granted granted Critical
Publication of JP4526412B2 publication Critical patent/JP4526412B2/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
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/5038Allocation 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 the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

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)
  • Hardware Redundancy (AREA)
  • Exchange Systems With Centralized Control (AREA)

Description

本発明は、マルチプロセッサシステムにおけるプロセッサのタスク管理方法および装置に関し、より詳細には、実質的に自己支配的に(self-governing)マルチプロセッサシステムのサブ処理ユニット間でプロセッサタスクをスケジュールして実行する方法および装置に関する。
リアルタイムでマルチメディアのアプリケーションは、ますます重要になっている。これらのアプリケーションは、一秒当たり何千メガビットのデータといった極めて速い処理速度を必要とする。単一の処理ユニットでも高速の処理速度を実現できるが、一般にマルチプロセッサアーキテクチャの処理速度と一致することはできない。実際、マルチプロセッサシステムにおいては、複数のサブプロセッサが並行に(または、少なくとも協調して)動作して所望の処理結果を得ることができる。
マルチプロセッシング技術を使用することができるコンピュータおよびコンピューティングデバイスのタイプは、広範囲に及ぶ。コンピューティングデバイスには、パーソナルコンピュータ(PC)やサーバの他、携帯電話、モバイルコンピュータ、個人携帯情報機器(PDA)、セットトップボックス、デジタルテレビのほか多数が含まれる。
リアルタイムでマルチメディアのソフトウェアアプリケーションは、処理命令や処理データなどの処理コードから構成される。処理命令および/または処理データの少なくとも一部の集合を、プロセッサタスクと呼ぶこともできる。あるプロセッサタスク内のプログラム文を順番に実行することもできるし、別のプロセッサタスクをマルチプロセッサシステム内の異なるプロセッサで並行して実行することもできる。このように、ソフトウェアアプリケーションは、マルチプロセッサシステムによって実行されるプロセッサタスクを含むと考えることができる。
マルチプロセッサシステムの設計懸念は、システムのいずれのサブ処理ユニットにいずれのプロセッサタスクを実行させるかを管理する方法である。マルチプロセッサシステムのなかには、いずれのサブ処理ユニットのプロセッサタスクが実行されるかを、プロセッサタスクが指定するものがある。この方法の欠点は、サブ処理ユニットの間でのプロセッサタスクの配分をプログラマが最適化することができないという点である。例えば、ひとつまたは複数のプロセッサタスクが、同時に同一のサブ処理ユニットを指定することがあり得る。これは、指定されたサブ処理ユニットが利用可能になるまで、プロセッサタスクの一部が保留されることを意味し、そのためプロセッサタスクの実行が遅延される。残念なことに、これはプロセッサタスクの実行について予測不可能なレイテンシを引き起こす。
他のシステムでは、管理要素がサブ処理ユニットと通信し、ユニット間のプロセッサタスクをスケジュールすることを検討する。したがって、このような通信を容易にするように通信プロトコルが実施されていなければならない。残念なことに、通信プロトコルは、管理要素とサブ処理ユニットの間のメッセージ遅延を引き起こすことが多い。実際、この種のプロトコルは、メモリマッピングされたレジスタを使用して、メモリマッピングされたI/O空間の使用が必要となり、これは一般的に低速である。さらに、システムのプロセッサ自身であってもよい管理要素が多数の分割領域を使用し、これは変更にかなりの時間(例えば、700マイクロ秒)を必要としうる。これらの特徴もまた、プロセッサタスクの実行を遅延させて予測不可能なレイテンシを引き起こす。このように、マルチプロセッサシステムのプロセッサ全体のスループットと効率が犠牲になり、システムのユーザのリアルタイムおよび/またはマルチメディア体験に重大な影響を与えうる。
したがって、当技術分野において、ハードプロセッサのエラーの悪影響を低減する効率的なマルチプロセッシングを達成する新規な方法および装置が必要とされている。
本発明のひとつまたは複数の態様によると、マルチプロセッサシステムのプロセッサタスクの管理方法は、マルチプロセッサシステムの複数のサブ処理ユニットによってアクセス可能な共有メモリにプロセッサタスクを保存し、サブ処理ユニットが、プロセッサタスクの優先度に基づいて、いずれのプロセッサタスクを共有メモリからコピーし実行するかを決定することを許可することを含む。
本発明のひとつまたは複数のさらなる態様によると、マルチプロセッサシステムのプロセッサタスクの管理方法は、マルチプロセッサシステムの複数のサブ処理ユニットによってアクセス可能な共有メモリにプロセッサタスクを格納し、プロセッサタスクのそれぞれと関連付けられたタスクテーブルエントリを含むタスクテーブルを共有メモリに格納し、タスクテーブルエントリの少なくとも一部をリンク付けして、階層的な順序で呼び出されるプロセッサタスクの少なくともひとつのリストを取得し、サブ処理ユニットがタスクテーブルを使用して、プロセッサタスクのリストにしたがっていずれのプロセッサタスクを共有メモリからコピーし実行するかを決定することを許可することを含む。
タスクテーブルエントリはそれぞれ、以下のうち少なくともひとつを含むことが好ましい:(i) 処理ユニットのひとつまたは複数によって関連するプロセッサタスクが実行される準備ができているか否かを示す表示、(ii) 関連するプロセッサタスクの優先度に関する指示、(iii) タスクテーブルエントリのリストでの前のタスクテーブルへのポインタ(PREVポインタ)、(iv) タスクテーブルエントリのリストでの次のタスクテーブルエントリへのポインタ(NEXTポインタ)。
本方法は、リスト内のプロセッサタスクの最初のひとつを表示するヘッドポインタと、前記ト内のプロセッサタスクの最後のひとつを表示するテイルポインタのうち、少なくともひとつを含むタスクキューを共有メモリに格納し、処理ユニットが、タスクテーブルとタスクキューを使用して、プロセッサタスクのリストにしたがっていずれのプロセッサタスクを実行すべきかを判定することを許可することをさらに含んでもよい。
好ましくは、本方法は、タスクテーブルエントリの各グループをリンク付けして、階層的順序であるプロセッサタスクのリストを生成し、各エントリが、プロセッサタスクのリストについてヘッドポインタとテイルポインタのうち少なくともひとつを含む、タスクキューエントリを備えるタスクキューを提供することをさらに含む。好ましくは、各リストは共通の優先度のプロセッサタスクと関連付けられており、タスクキューは、プロセッサタスクの複数の優先度のそれぞれに対するタスクキューエントリを含む。
好ましくは、本方法は、タスクキューとタスクテーブルを共有メモリからサブ処理ユニットの所与のひとつのローカルメモリにコピーし、呼び出しの準備ができているプロセッサタスクのうち所与のひとつへ向かうヘッドポインタを求めてタスクキューを検索し、実行のために所与のプロセッサタスクを共有メモリから所与のサブ処理ユニットのローカルメモリにコピーすることをさらに含む。
タスクキューを検索するステップは、呼び出しの準備ができているプロセッサタスクのうち最高の優先度を持つものへのヘッドポインタを検索することを含むことが好ましい。
本方法は、リストから所与のプロセッサタスクを除去することさらに含んでもよい。除去ステップは、呼び出しの準備ができているリスト内の新たな第1のプロセッサタスクを識別するようタスクキューのヘッドポインタを修正することをさらに含んでもよい。各タスクテーブルエントリは、次のタスクテーブルエントリへのポインタ(NEXTポインタ)を含むことが好ましく、また、修正ステップは、所与のタスクテーブルエントリのNEXTポインタを使用して、次に呼び出しの準備ができたときに、新たな第1のプロセッサタスクを識別するようヘッドポインタを変更することを含むことが好ましい。各タスクテーブルエントリは、前のタスクテーブルエントリへのポインタ(PREVポインタ)を含むことが好ましく、また、本方法は、リストの新たな第1のプロセッサタスクと関連付けられたタスクテーブルエントリをポイントするように、リストの最後のタスクテーブルエントリのPREVポインタを修正することをさらに含むことが好ましい。
本発明のひとつまたは複数のさらなる態様によると、マルチプロセッサシステムのプロセッサタスクの管理方法は、マルチプロセッサシステムの複数のサブ処理ユニットによってアクセス可能な共有メモリにプロセッサタスクを格納し、各プロセッサタスクに関連付けられたタスクテーブルエントリを含むタスクテーブルを共有メモリに格納し、少なくとも一部のタスクテーブルエントリをリンク付けして、階層的な順序でプロセッサタスクの少なくともひとつのリストを取得し、サブ処理ユニットの所与のひとつの範囲内でリストのプロセッサタスクの最初のタスクの実行を少なくとも開始し、前記プロセッサタスクの最初のタスクは、プロセッサタスクの別のタスクが実行可能となるように所与のサブ処理ユニットにおける実行権を譲渡し、所与のサブ処理ユニットにタスクテーブルを使用して判定する許可を与えることによって、所与のサブ処理ユニット内で次に実行すべき他のプロセッサタスクを判定することを含む。
本方法は、リスト内のプロセッサタスクの最初のひとつを表示するヘッドポインタと、リスト内のプロセッサタスクの最後のひとつを表示するテイルポインタのうち、少なくともひとつを含むタスクキューを供給メモリに格納し、処理ユニットが、タスクテーブルとタスクキューを使用して、次にいずれのプロセッサタスクを実行すべきかを判定することを許可することをさらに含んでもよい。
判定ステップは、タスクキューとタスクテーブルを共有メモリから所与のサブ処理ユニットのローカルメモリにコピーし、呼び出しの準備ができている新たな第1のプロセッサタスクへのヘッドポインタを求めてタスクキューを検索することを含むことが好ましい。本方法は、新たな第1のプロセッサタスクを共有メモリから所与のサブ処理ユニットのローカルメモリに実行のためにコピーすることをさらに含むことが好ましい。本方法は、その後、所与のサブ処理ユニットのローカルメモリから第1のプロセッサタスクを共有メモリに戻すようにコピーすることをさらに含んでもよい。判定ステップは、所与のサブ処理ユニットのローカルメモリから共有メモリに戻すように第1のプロセッサタスクがコピーされる前に、実行されることが好ましい。判定ステップは、所与のサブ処理ユニットによって、第1のプロセッサタスクの実行を完了する前に開始されてもよい。所与のサブ処理ユニットのローカルメモリから共有メモリへ第1のプロセッサタスクをコピーするステップは、新たな第1の処理タスクの実行を開始する前に実行されることが好ましい。所与のサブ処理ユニットのローカルメモリから共有メモリへ第1のプロセッサタスクを戻すようにコピーするステップは、少なくとも新たな第1の処理タスクの一部が所与のサブ処理ユニットによって実行される間に実行されてもよい。
本方法は、所与のサブ処理ユニットのローカルメモリから共有メモリに第1のプロセッサタスクを戻すようにコピーすることをさらに含むことが好ましい。本方法は、その後、実行のために共有メモリから所与のサブ処理ユニットのローカルメモリに新たな第1のプロセッサタスクをコピーすることをさらに含んでもよい。
本方法は、第1のプロセッサタスクをリストに加えることをさらに含むことが好ましい。好ましくは、各タスクテーブルエントリは、次のタスクテーブルエントリへのポインタ(NEXTポインタ)と、前のタスクテーブルエントリへのポインタ(PREVポインタ)とを含むことが好ましく、また、加えるステップは、第1のプロセッサタスクに関連するタスクテーブルエントリへのリンクを含むように、タスクテーブルエントリのリンク付けを修正することを含むことが好ましい。
タスクテーブルエントリのリンク付けを修正するステップは、以前は互いにリンク付けされていた前のタスクテーブルエントリと後のタスクテーブルエントリとの間で、第1のプロセッサタスクに関連するタスクテーブルエントリをリンク付けすることを含んでもよい。
好ましくは、本方法は、第1のプロセッサタスクに関連するタスクテーブルをポイントするように、前のタスクテーブルエントリのNEXTポインタを修正し、前のタスクテーブルエントリをポイントするように、第1のプロセッサタスクに関連するタスクテーブルエントリのPREVポインタを修正し、後のタスクテーブルエントリをポイントするように、第1のプロセッサタスクに関連するタスクテーブルエントリのNEXTポインタを修正し、第1のプロセッサタスクに関連するタスクテーブルエントリをポイントするように、後のタスクテーブルエントリのPREVポインタを修正することをさらに含む。
タスクテーブルエントリのリンク付けを修正するステップは、第1のプロセッサタスクに関連付けられたタスクテーブルエントリをリンクの先頭にリンク付けすることを含んでもよい。修正するステップは、リストから新たな第1のプロセッサタスクを除去することをさらに含んでもよい。除去するステップは、第1のプロセッサタスクと関連付けられたタスクテーブルエントリをポイントするようにタスクキューの先頭のポインタを修正することをさらに含んでもよい。
好ましくは、本方法は、第1のプロセッサタスクに関連付けられているタスクテーブルエントリのNEXTポインタを、新たな第1のプロセッサタスクに関連付けられているタスクテーブルエントリのNEXTポインタで置換することと、第1のプロセッサタスクに関連付けられるタスクテーブルエントリをポイントするように、新たな第1のプロセッサタスクに関連付けられているタスクテーブルエントリのNEXTポインタによって識別されるタスクテーブルエントリのPREVポインタを修正することをさらに含む。本方法はまた、第1のプロセッサタスクに関連付けられるタスクテーブルエントリをポイントするように、リンクの最後のタスクテーブルエントリのPREVポインタを修正することを含んでもよい。
本発明のひとつまたは複数のさらなる態様によると、マルチプロセッサ装置は、プロセッサタスクを実行するためのローカルメモリをそれぞれが含む複数のサブ処理ユニットと、実行の準備ができたプロセッサタスクを格納するように動作可能な共有メモリと、を備え、前記サブ処理ユニットは、プロセッサタスクの優先度に基づいて、いずれのプロセッサタスクを共有メモリからコピーして実行するかを決定するように動作可能であることを特徴とする。
本発明のひとつまたは複数のさらなる態様によると、マルチプロセッサ装置は、プロセッサタスクを実行するためのローカルメモリをそれぞれ備える複数のサブ処理ユニットと、(i) 実行の準備ができているプロセッサタスクと、(ii) 各プロセッサタスクに関連するタスクテーブルエントリを含むタスクテーブルと、を格納するよう動作可能な共有メモリと、を備え、前記サブ処理ユニットは、タスクテーブルを使用して、いずれのプロセッサタスクを共有メモリから自身のローカルメモリにコピーして実行すべきかを判定することを特徴とする。
本発明のひとつまたは複数のさらなる態様によると、マルチプロセッサ装置は、プロセッサタスクを実行するためのローカルメモリをそれぞれ備える複数のサブ処理ユニットと、(i) 実行の準備ができているプロセッサタスクと、(ii) 各プロセッサタスクに関連するタスクテーブルエントリを含むタスクテーブルと、を格納するように動作可能な共有メモリと、を備え、サブ処理ユニットは、少なくとも、第1のプロセッサタスクの実行を開始し、プロセッサタスクの別のタスクが実行可能になるように第1のプロセッサタスクの実行権を譲渡するよう動作可能であり、さらに、サブ処理ユニットは、タスクテーブルに基づいて、いずれの他のプロセッサタスクを次に実行すべきかを判定するよう動作可能であることを特徴とする。
本発明のひとつまたは複数のさらなる態様によると、本装置のサブ処理ユニットは、上述の方法ステップを実行するよう動作可能であってもよい。
本発明の他の態様、特徴および利点は、添付の図面とともになされる本明細書の説明から当業者にとって明らかであろう。
説明のために、現時点で好適である形式が図面に示されるが、本発明は提示された詳細な構成および手段に限定されないことを理解されよう。
同様の符号が同様の要素を示す図面を参照して、図1は、本発明のひとつまたは複数の態様によるマルチプロセッサシステム100を示す。マルチプロセッサシステム100は、バス108を介して、DRAMなどの共有メモリ106に連結される複数のプロセッサ102(任意の数を使用可能である)を備える。共有メモリ106はDRAMでなくてもよい点に注意する。実際、共有メモリは任意の既知の技術または今後開発される技術を用いて形成することができる。
プロセッサ102のうちの一台は、例えば処理ユニット102Aである主処理ユニットであることが好ましい。他の処理ユニット102は、サブ処理ユニット(SPU)、例えば処理ユニット102B、102C、102Dなどであることが好ましい。サブ処理ユニット102は、既知のまたは今後開発されるコンピュータアーキテクチャのうち任意のものを使用して実現可能なものであってよい。サブ処理ユニット102の全てが同一のアーキテクチャを使用して実現される必要はなく、実際、それらは異種または同種の構成のいずれであってもよい。主処理ユニット102Aは、サブ処理ユニット102B〜102Dに対してローカルに、例えば、同一チップ、同一のパッケージ、同一の回路基盤、同一の製品に位置してもよいことに注意する。代替的に、主処理ユニット102Aは、サブ処理ユニット102B〜102Dに対してリモートに、例えば、バスやインターネットのような通信ネットワークなどを介して接続可能な異なる製品に位置してもよい。同様に、サブ処理ユニット102B〜102Dは、互いにローカルにまたはリモートに位置してもよい。
主処理ユニット102Aを使用してサブ処理ユニット102B〜102Dによるデータおよびアプリケーションの処理をスケジューリングし調整する(orchestrate)ことで、サブ処理ユニット102B〜102Dは、並列に独立してこれらのデータおよびアプリケーションの処理を実行する。しかしながら、本発明の一部の態様によれば、主処理ユニット102Aは、サブ処理ユニットの間のプロセッサタスクの実行をスケジューリングする中心的な役割を果たさない。むしろ、そのようなスケジューリングは、SPU自身に任されることが好ましい。
図1のプロセッサ102に対する役割および機能の割り当ては柔軟的である。例えば、プロセッサ102のいずれもが主処理ユニットまたはサブ処理ユニットであってよい。
図2を参照して、主処理ユニット102Aは、特にSPUの間でのプロセッサタスクのスケジューリングおよび管理に関して、SPU102B〜102Fに対するサービスプロセッサの役割を担うことが好ましい。本発明のいくつかの態様によれば、主処理ユニット102Aは、ソフトウェアアプリケーションの範囲内に含まれるプロセッサタスクを評価することができ、共有メモリ106の割り当て、SPUの割り当て、および共有メモリ106内のプロセッサタスク110の最初の記憶に関わることができる。共有メモリ106の割り当てに関して、主処理ユニット102Aは、所与の数のプロセッサタスク110に割り当てられるべきメモリ空間の量を決定することが好ましい。この点に関して、主処理ユニット102Aは、いくつかのプロセッサタスク110の記憶用に共有メモリ106の第1の領域106Aを割り当て、他のプロセッサタスク110の記憶用に共有メモリ106の第2の領域106Bを割り当ててもよい。主処理ユニット102Aは、共有メモリ106内の領域106Aおよび領域106Bそれぞれにおけるデータ同期に関するルールを設定することもできる。
本発明のひとつまたは複数のさらなる態様によれば、共有メモリ106の領域106Aおよび領域106Bには、定められた数のサブ処理ユニット102のみアクセスすることができる。例えば、共有メモリ106の所与の領域の中に格納される特定のプロセッサタスク110を実行するために割り当てられるサブ処理ユニット102のみアクセスすることができる。例えば、サブ処理ユニット102B〜102Dのみが、共有メモリ106の第1の領域106A内のプロセッサタスク110へのアクセスが許可されていることが好ましい。同様に、サブ処理ユニット102E〜102Fのみが、共有メモリ106の第2の領域106B内のプロセッサタスク110へのアクセスが許可されていることが好ましい。共有メモリ106の各領域106Aおよび106Bを保護する技術に関するさらなる詳細は、「ブロードバンドネットワーク用のコンピュータアーキテクチャのメモリ保護システムおよび方法」と題する米国特許第6,526,491号に見いだすことができ、その全ての開示は参照により本明細書に援用される。
本発明のひとつまたは複数の態様によると、プロセッサタスク110が共有メモリ106内に配置され、サブ処理ユニット102がタスクの実行を割り当てられた後、主処理ユニット102Aは、プロセッサタスク110の実行のスケジューリングおよび管理に参加しないことが好ましい。代わりに、それらの責任は関係する特定のサブ処理ユニット102に任される。
本発明の様々な実施形態のプロセッサタスク管理特徴に関してさらに詳細を述べる前に、マルチプロセッサシステムを実装するための好適なコンピュータ・アーキテクチャについて説明する。この点に関して、図3の基本処理モジュールまたはプロセッサ要素(processor element:PE)200のブロック図を参照する。このコンピュータアーキテクチャによると、マルチプロセッサシステムの全てのサブプロセッサは、共通のコンピューティングモジュール(またはセル)から構成される。この共通のコンピューティングモジュールは、一貫した構造を有し、好ましくは同一の命令セットアーキテクチャを使用する。本発明の別の実施形態では、サブ処理ユニットは異種の構成であってもよい。マルチプロセッサシステムは、ひとつまたは複数のクライアント、サーバ、PC、モバイルコンピュータ、ゲーム機、PDA、セットトップボックス、機器、デジタルテレビ、およびコンピュータプロセッサを使用する他の装置から形成することができる。
基本処理モジュールは、プロセッサ要素(PE)である。図3に示すように、PE200は、I/Oインタフェース202、処理ユニット(processing unit:PU)204、ダイレクト・メモリ・アクセス・コントローラ(DMAC)206、複数のサブ処理ユニット208、すなわち、サブ処理ユニット208A、サブ処理ユニット208B、サブ処理ユニット208Cおよびサブ処理ユニット208Dを含む。ローカル(または内部)PEバス212は、PU204、サブ処理ユニット208、DMAC206およびメモリインタフェース210の間でデータおよびアプリケーションを送信する。ローカルPEバス212は、例えば、従来のアーキテクチャを有することができ、またはパケットスイッチネットワークとして実現することもできる。パケットスイッチネットワークとして実現すると、より多くのハードウェアを必要とするが、利用可能な帯域幅を増加することができる。
PE200は、デジタルロジックを実装する様々な方法を使用して構成されることができる。しかしながら、PE200は、シリコン基板上の相補型金属酸化膜半導体(CMOS)を使用する単一の集積回路として構成されることが好ましい。基板の代替的材料はガリウム・ヒ素、ガリウム・アルミニウム・ヒ素および多様なドーパントを使用するいわゆるIII−B合成物を含む。PE200は、超電導材料、例えば高速単一磁束量子(RSFQ)論理回路を使用して実現することもできる。
PE200は、高帯域幅のメモリ接続216を通して、ダイナミック・ランダム・アクセス・メモリ(DRAM)214と密接に関連する。DRAM214は、PE200用のメインメモリ(または共有メモリ)として機能する。DRAM214は好ましくはダイナミック・ランダム・アクセス・メモリであるが、例えば、スタティック・ランダム・アクセス・メモリ(SRAM)、磁気ランダム・アクセス・メモリ(MRAM)、光学メモリ、ホログラフィック・メモリなどの他の手段を使用して実現することもできる。DMAC206およびおよびメモリインタフェース210は、DRAM214と、PE200のサブ処理ユニット208およびPU204との間のデータの転送を容易にする。DMAC206および/またはメモリインタフェース210は、サブ処理ユニット208およびPU204に対して一体的にまたは別々に配置されていてもよい点に注意する。実際、図示のように別々の構成とする代わりに、DMAC206の機能および/またはメモリインタフェース210の機能は、サブ処理ユニット208およびPU204のひとつまたは複数(好ましくは全て)と一体であってもよい。
例えば、PU204は、データおよびアプリケーションを独立して処理することができる標準のプロセッサであってもよい。サブ処理ユニット208は、好ましくは単一命令マルチデータ(SIMD)プロセッサである。サブ処理ユニット208は、並行にまたは独立して、データおよびアプリケーションの処理を実行することが好ましい。DMAC206は、PU204およびサブ処理ユニット208による、共有DRAM24に格納されるデータおよびアプリケーション(例えば、プロセッサタスク110)へのアクセスを制御する。PU204は、主処理ユニットの役割を引き受けているサブ処理ユニット208のうちひとつにより実現されてもよいことに注意する。
このモジュール構造にしたがって、特定のコンピュータシステムによって使用されるPE200の数は、そのシステムによって必要とされる処理能力に基づいて決まる。例えば、サーバは4つのPE200を使用することができ、ワークステーションは2つのPE200を使用することができ、PDAはひとつのPE200を使用することができる。特定のソフトウェアセルを処理すべく割り当てられるPE200のサブ処理ユニットの数は、セル内のプログラムおよびデータの複雑さおよび大きさによって決まる。
図4は、サブ処理ユニット208の好適な構造および機能を示す。サブ処理ユニット208は、ローカルメモリ250、レジスタ252、ひとつまたは複数の浮動小数点ユニット254、およびひとつまたは複数の整数ユニット256を備える。しかしながら、必要とされる処理能力によって、より多数のまたはより少数の浮動小数点ユニット254および整数ユニット256を使用してもよい。浮動小数点ユニット254は、好ましくは一秒につき320億回の浮動小数点演算(32GFLOPS)をする速度で動作し、整数ユニット256は、好ましくは一秒につき320億回の演算(32GOPS)をする速度で動作する。
好ましい実施形態では、ローカルメモリ250は256キロバイトの記憶装置を含み、レジスタ252の容量は128×128ビットである。プロセッサタスク110が共有メモリ214を使用して実行されない点に注意する。むしろ、タスク110は、所与のサブ処理ユニット208のローカルメモリ250にコピーされ、ローカルに実行される。
ローカルメモリ250は、キャッシュメモリであってもキャッシュメモリでなくてもよい。好ましくは、ローカルメモリ250はスタティック・ランダム・アクセス・メモリ(SRAM)として構成される。PU204は、PU204により起動されるダイレクトメモリアクセスのために、キャッシュ整合性サポートを必要としてよい。しかしながら、キャッシュ整合性サポートは、サブ処理ユニット208によって起動されるダイレクトメモリアクセス、または、外部装置との間でのアクセスについては、不要である。
サブ処理ユニット208は、サブ処理ユニット208との間でデータおよびアプリケーションを送受信するためのバスインタフェース(I/F)258をさらに含む。好ましい実施形態では、バスI/F258はDMAC206に連結される。DMAC206は、サブ処理ユニット208内に一体的に配置することもでき、あるいは外部に配置することもできることを示すよう、図3では点線で描かれている。一対のバス268A、268Bは、バスI/F258とローカルメモリ250の間でDMAC206を相互接続する。バス268A、268Bは、好ましくは256ビット長である。
サブ処理ユニット208は、内部バス260、262および264をさらに含む。好ましい実施形態では、バス260は256ビットの幅を有し、ローカルメモリ250およびレジスタ252の間の通信を提供する。バス262および264は、それぞれ、レジスタ252と浮動小数点ユニット254の間、レジスタ252と整数ユニット256の間の通信を提供する。好ましい実施形態では、レジスタ252から浮動小数点ユニットまたは整数ユニットに向かうバス264と262のバス幅は384ビットであり、浮動小数点ユニット254または整数ユニット256からレジスタ252に向かうバス264および262のバス幅は、128ビットである。浮動小数点ユニット254または整数ユニット256からレジスタ252へのバス幅より、レジスタ252から両ユニットへのバス幅が大きいため、処理の間、レジスタ252からより大きいデータフローを収容する。各計算のために、最大で3ワードが必要である。しかしながら、各計算の結果は、通常1ワードのみである。
本発明の様々なプロセッサタスク管理特徴に戻り、図2を参照して、実行のために共有メモリ106からSPU102のローカルメモリのひとつにいずれのプロセッサタスク110をコピーすべきかを決定するために、サブ処理ユニット102はタスクテーブルを利用することが好ましい。この点に関して、図5を参照する。図5は、本発明の様々な態様により利用可能なタスクテーブル280の概念的な説明である。タスクテーブル280は、好ましくは共有メモリ106に格納される。タスクテーブル280の初期化方法の詳細は、後述する。タスクテーブル280は、複数のタスクテーブルエントリT1、T2、T3その他を含むことが好ましい。各タスクテーブルエントリは、例えば、タスクテーブルエントリをプロセッサタスク110に関係付ける連想アドレス指定または他の手段によって、プロセッサタスク110(図2参照)のひとつに関連付けられるのが好ましい。
好ましい実施形態では、各タスクテーブルエントリは、ステータス表示(STAT)、優先度表示(PRI)、および一対のポインタ(PREV、NEXT)のうちの少なくともひとつを含んでもよい。STATは、所与のタスクテーブルエントリに関連付けられるプロセッサタスクが、ひとつまたは複数のサブ処理ユニットによって実行される準備ができている(READY)か、または実行中(RUNNING)であるかについての表示を提供することが好ましい。PRIは、関連するプロセッサタスク110の優先度についての表示を提供することが好ましい。プロセッサタスク110と関連付けられる優先度は任意の数であってよく、これは、ソフトウェアプログラマが設定してもよいし、または、ソフトウェアアプリケーションの実行によって後で設定することもできる。いずれにしても、プロセッサタスク110の優先度は、プロセッサタスクが実行される順序を設定するために利用されることができる。PREV値は、リンク付けされたタスクテーブルエントリの順序付きリスト(または、プロセッサタスクのリスト)において、前のタスクテーブルエントリ(または、前のプロセッサタスク110)へのポインタであることが好ましい。NEXT値は、リンク付けされたタスクテーブルエントリの順序付きリスト(または、プロセッサタスクのリスト)において、次のタスクテーブルエントリ(またはプロセッサタスク)へのポインタであることが好ましい。
本発明のひとつまたは複数の態様によると、タスクテーブル280は、プロセッサタスク110が実行のために共有メモリ106からコピーされる順序を決定するために、サブ処理ユニット208によって利用されることが好ましい。例えば、マルチプロセッサシステム100または200上のソフトウェアアプリケーションを適切に実行するために、特定のプロセッサタスク110は、特定の順序、すなわち少なくとも一般的な順序、つまりT1、T8、T6、T9の順序で実行される必要があってもよい。プロセッサタスク配列のこの実施例を反映するために、タスクテーブル280は、拡張プロセッサタスクによる、タスクテーブルエントリのリンク付きリストを作成するタスクテーブルエントリのPREV部分およびNEXT部分におけるポインタを含むことが好ましい。上記例の特殊性によると、タスクテーブルエントリT1は、タスクテーブルエントリT8をポイントするNEXT値を含む。タスクテーブルエントリT8は、タスクテーブルエントリT1をポイントするPREV値と、タスクテーブルエントリT6をポイントするNEXT値を含む。タスクテーブルエントリT6は、タスクテーブルエントリT8をポイントするPREV値と、タスクテーブルエントリT9をポイントするNEXT値を含む。タスクテーブルエントリT9は、タスクテーブルエントリT6をポイントするPREV値を含む。
図6を参照して、上記例のタスクテーブルエントリのリンク付きリストは、状態図として概念的に示すことができる。この状態図において、タスクテーブルエントリT1に関連付けられる特定のプロセッサタスクからの遷移が、タスクテーブルエントリT8に関連付けられている別のプロセッサタスクの選択および実行を引き起こす。タスクテーブルエントリT8に関連付けられるプロセッサタスクからの遷移が、タスクテーブルエントリT6に関連付けられるプロセッサタスクの選択および実行を引き起こし、以下同様である。第1の、または先頭のタスクテーブルエントリT1が、タスクテーブルエントリT9をポイントするPREV値を含むことを保証し、また、タスクテーブルエントリT9がタスクテーブルエントリT1をポイントするNEXT値を含むことを保証することによって、タスクテーブルエントリ(および/またはプロセッサタスク自身)の循環的な関連を達成することができる。
動作中、共有メモリ106のプロセッサタスク110(好ましくは所与の領域106Aまたは106B内の)のプールを実行するために割り当てられるそれぞれのサブ処理ユニット102は、いずれのプロセッサタスク110が実行のために次に占有されるかを判定するために、まず、タスクテーブル280にアクセスする。リンク付きリストの最初のまたは先頭のエントリの特定に役立てるために、サブ処理ユニット102は、図7に概念的に示すタスクキュー282へのアクセスを有することが好ましい。タスクキュー282は、関連するプロセッサタスク110それぞれの優先度のためのエントリを含むことが好ましい。各エントリは、HEADポインタおよびTAILポインタのうちの少なくともひとつを含むことが好ましい。
図6をさらに参照して、例示的なリンク付きリストの状態図は、優先度1を有するプロセッサタスク110を表している。実際、エントリT1、T8、T6およびT9のタスクテーブルエントリ(図5)は、それぞれ「1」のPRI値を含む。
優先度1と関連するタスクキューエントリのHEADポインタとTAILポインタは、それぞれ、タスクテーブルエントリT1とタスクテーブルエントリT9へのポインタを含む。タスクキュー282の他のエントリは、他のリンク付きリスト用の他の優先度のHEADポインタおよびTAILポインタと関連付けられる。このように、本発明の様々な実施形態は、(拡張プロセッサタスクによって)タスクテーブルエントリの多数のリンク付きリストを含むことができ、各リンク付きリストは同一のまたは少なくとも類似の優先度を含むことを考慮する。それぞれのサブ処理ユニット102は、タスクテーブル280とタスクキュー282を利用して、いずれのプロセッサタスク110が、実行のために共有メモリ106からコピーされるべきかについて決定することが好ましい。それぞれのリンク付きリストが作成され適切に維持されると仮定すると、ソフトウェア・アプリケーション全体の実行時に所望の結果を達成するために、プロセッサタスク110は適切な順序で実行されることができる。
本発明の様々な態様によると、サブ処理ユニット102は、ソフトウェアアプリケーションの実行の間、タスクテーブル280とタスクキュー282を維持し修正する。この点に関して、図8から図10を参照する。これらは、本発明のひとつまたは複数の望ましい特徴を達成するのに適したプロセスフローを表すフロー図である。アクション300で、特定のサブ処理ユニット102が呼び出されて、プロセッサタスク110を共有メモリ106から自身のローカルメモリにコピーし始める。アクション302で、サブ処理ユニット102はタスクキュー282をロックし、タスクキュー282を自身のローカルメモリにコピーする。その後、タスクキュー282は、最も高い優先度の準備ができたタスクを求めて検索される(アクション304)。図7で示した実施例を使用すれば、タスクキュー282は、最高の優先度、例えば優先度1のプロセッサタスクに関連付けられているタスクテーブルエントリT1をポイントするHEADポインタを含む。タスクテーブルエントリT1に関連付けられたプロセッサタスクが実行のために目標とされるので、サブ処理ユニット102は、好ましくはタスクキュー282を修正して、そのプロセッサタスクへの参照を除去する(アクション306)。好ましい実施形態では、これは、タスクテーブルエントリT1へのHEADポインタを、実行のために占有されるべき次のプロセッサタスクを表示する新規な第1の(または先頭の)タスクテーブルエントリになる別のタスクテーブルエントリへと修正することを伴う。特に、タスクテーブルエントリT1のNEXTポインタが、優先度1の新たなHEADポインタとして用いられてもよい。実際、図6に示したように、タスクテーブルエントリT1に関連するプロセッサタスクが実行中である(RUNNING)と、もはや準備のできた(READY)状態ではなく、状態図から除去されなければならない。状態図の先頭のエントリとして、タスクテーブルエントリT8を残さなければならない。タスクテーブルエントリT1がもはやREADY状態図の一部でないとき、タスクテーブルエントリT8のPREVポインタはタスクテーブルエントリT9をポイントするように修正されてもよい。このように、アクション308において、タスクテーブルが修正可能となるように、タスクテーブルはラベル付けされSPU102のローカルメモリにコピーされる。同様に、タスクテーブルエントリT9のNEXTポインタは、タスクテーブルエントリT8をポイントするように修正されてもよい。
本発明の好ましい態様によると、SPU102は、タスクテーブルエントリT1のSTAT値をREADYからRUNNINGに修正することが好ましい(図9のアクション310)。アクション312として、次のタスクを呼び出すためにSPU102がコール(アクション300)された時点で、SPU102が前のタスクを実行しているかに関しての判定がなされることが好ましい。SPU102上で動作中の前のタスクが他のタスクに譲るとき、これが生じてもよい。本実施例のために、前のタスクが次のプロセッサタスク110に実行権を譲渡(yield to)せず、さらに、アクション312における判定の結果が否定であったと仮定する。したがって、プロセスフローは好ましくはアクション318へ進む。ここで、SPU102は、修正されたタスクキュー282と修正されたタスク・テーブル280を共有メモリ106に書き戻す。この時点で、タスクテーブル280とタスクキュー282は更新され、他のサブ処理ユニット102によってコピーおよび修正されてもよいように、好ましい同期化技術にしたがってロックが解除される。
前のプロセッサタスク110が次のプロセッサタスクに実行権を譲渡したときのように、アクション312における判定結果が肯定である場合、プロセスフローは好ましくはアクション314へ進む。そこで、SPUは、好ましくは、実行権を譲渡するプロセッサタスクに関連付けられているタスクテーブルエントリのSTAT値を、RUNNINGからREADYに修正する。さらに、SPUは、実行権を譲渡するプロセッサタスクを適当なリンク付きリストに再導入(reintroduce)するために、実行権を譲渡するプロセッサタスクに関連するタスクテーブルエントリを含む様々なタスクテーブルエントリのPREVポインタとNEXTポインタを修正してもよい。好ましくは、関連するタスクテーブルエントリのPRI値に反映されるように、実行権を譲渡するプロセッサタスク110の優先度を参照することによって、これが達成される。アクション316で、プロセッサタスクが後に占有されてもよいように、実行権を譲渡するプロセッサタスクが共有メモリ106に書き込まれてもよい。その後、プロセスフローはアクション318へ進む。そこで、タスクキュー282とタスクテーブル280は、共有メモリ106に書き戻される。
アクション320(図10)で、次のプロセッサタスク110(例えば、タスクテーブルエントリT8に関連するプロセッサタスク)は、サブ処理ユニット102によって共有メモリ106から自身のローカルメモリにコピーされる。アクション322で、サブ処理ユニット102は、新たなプロセッサタスク110の実行に使用するため、(例えば、新たなプロセッサタスクと関連する任意のデータを有する)自身のレジスタを復元および/または更新することが好ましい。最後に、アクション324で、新たなプロセッサタスク110は、サブ処理ユニット102によって実行される。
上記アクションは例示を目的としてのみ示されており、当業者は、本発明の趣旨および範囲から逸脱することなくこれらのアクションの順序を修正可能であることを理解するであろう。例えば、後述するように、プロセッサタスクが共有メモリからコピーされ共有メモリに書き戻される順序、および、タスクテーブルとタスクキュー282が利用される順序は、望ましい結果を達成するために修正可能である。
上述のように、主処理ユニット102Aは、プロセッサタスク110の実行および管理がサブ処理ユニット102によって対処可能となる状態にシステムを準備するために、システムの初期段階の間に利用されることが好ましい。サブ処理ユニット102も、第1インスタンスでタスクテーブル280とタスクキュー282を作成するために、初期化ルーチンを実行することが好ましい。これらの初期化プロセスを、図11のフロー図に示す。
アクション350で、サービスプロセッサ(例えば、主処理ユニット102)は、システム上で実行されるソフトウェアアプリケーションを評価して、プロセッサタスク110を実行する複数のサブ処理ユニット102を割り当てる。プロセスフローは、好ましくはアクション352へ進み、そこで、サービスプロセッサがソフトウェアアプリケーションを評価して、プロセッサタスク110を受け取るために共有メモリ106のひとつまたは複数の部分を割り当てる。アクション354で、アクション352で実行された任意のメモリ・アロケーションにしたがって、プロセッサタスク110が共有メモリ106にロードされる。初期化プロセスのこの段階においては、サービスプロセッサは、メンテナンスおよび/またはサブ処理ユニット102の間でのプロセッサタスクの配分に関与していないことが好ましい。
プロセスフローは、好ましくはアクション356へ進む。そこで、サブ処理ユニット102は互いを初期化し、いずれのSPUが第1インスタンスにおいてタスクテーブル280とタスクキュー282を準備するかを決定する。アクション358で、タスクテーブル280とタスクキュー282を作成する責任を有したサブ処理ユニット102は、この種の情報を準備して、同じものを共有メモリ106に格納する。例えば、タスクテーブル280とタスクキュー282の初期化は、好ましくは、各SPUカーネルに最初のタスクを実行させることによって行われることが好ましい。以下に示すプログラム「init.c」は、各SPUによって実行される最初のタスクの好適な実施例である。
(表1)
#include <spurs.h>
#include "task_instance.h"

int
main()
{
spurs_beggin_init();
if(spurs_get_spu_id() = = 0){
spurs_create_task(melchior);
spurs_create_task(balthasar);
spurs_create_task(caspar);

spurs_start_task(melchior);
spurs_start_task(balthasar);
spurs_start_task(caspar);
}
spurs_end_init();
return 0;
}
このプログラムにおいて、「melchior」、「balthasar」および「caspar」は非常に初期のタスクの名称であり、これらは典型的なスタートアップタスクである。SPUカーネルの全てがこの初期タスクinit.cを実行する。しかし、ひとつのSPU(ID0を持つSPU)だけは、if(spurs_get_spu_id () = = 0)のコードラインで指定されるこれらのタスクを実行する。他のSPUの全て、例えば異なるIDを持つSPUの全ては、spurs_end_init()で待機する。このように、各SPUカーネルは最初のタスクを実行し、この最初のタスクが終了した後、本明細書で述べるように、SPUカーネルは次のタスクの検索を開始する。
上述のように、サービス・プロセッサとして動作する主処理ユニット102は、ひとつまたは複数のプロセッサタスク110をグループとして指定してもよいことに注意する。これは、初期化段階の間に実行されることが好ましい。例えば、2つ以上のプロセッサタスク110が互いに緊密に通信する必要があってもよく、したがって、それらがタスクグループ内でグループ化されている場合、プロセッサタスクをより効率的に実行することができる。暗号化プログラムは、プロセッサタスクがひとつ以上のタスクグループに形成されている場合、緊密に通信しより効率的に実行されるプロセッサタスクを含むことができるアプリケーションの一例である。
本発明のプロセッサタスク管理の特徴を利用して、主処理ユニット102Aが、特定のサブ処理ユニット102またはサブ処理ユニット102のグループのデバイスドライバをオフロード(off-load)するのを助けることができる。例えば、ギガビットイーサネットハンドラ(イーサネットは登録商標)のようなネットワークインタフェースは、CPUパワーの80%まで利用することができる。ネットワークインタフェースが主処理ユニット102Aによってのみ実行される場合、主処理ユニットは102Aは、他のサービス指向の処理タスクをするために利用することができない。したがって、主処理ユニットが102Aが、ひとつまたは複数のサブ処理ユニット102にネットワークインタフェースプログラムをオフロードすることは、有益でありえる。主処理ユニット102Aは、ネットワークインタフェースの処理タスクを共有メモリ106に配置し、これを実行するひとつまたは複数のサブ処理ユニット102を割り当てることによって、この結果を達成してもよい。それに応じて、SPUは、そのようなプロセッサタスクの実行を管理しスケジューリングするのに適したタスクテーブル280とタスクキュー282を形成してもよい。したがって、有利なことには、主処理ユニット102Aは、より多くのCPUパワーを他のタスクの実行に充てることができる。主処理ユニット102Aは、また、例えばデジタルテレビデバイスドライバなどの他のデバイスドライバをオフロードしてもよい。SPUにオフロードさせるための好ましい候補である他のデバイスドライバは、重いプロトコルスタックを有するものである。例えば、HDDレコーダなどのリアルタイム高速アクセスデバイス用のドライバは、オフロードされると有利である。オフロードされてもよいタスクの他の実施例には、仮想プライベートネットワークおよびIP(例えばVoIP)アプリケーションを介したマルチメディアに使用されるネットワークパケット暗号化/解読タスクが含まれる。
図12を参照して、プロセッサタスクのステータスの状態図の一例を示す。タスク状態は、実行(RUNNING)状態、準備(READY)状態、ブロック(BLOCKED)状態、休止(DORMANT)状態、および不在(NON−EXISTENT)状態の5つのカテゴリに分類することができる。プロセッサタスクは、現在実行中であるときは、実行(RUNNING)状態にある。ある条件下では、プロセッサタスクは、例えば割り込みの間、タスクコンテクストがなくても、実行状態を維持することができる。プロセッサタスクは、タスクの実行の準備ができているが、より高い優先順位を有するひとつまたは複数のプロセッサタスクが既に実行されており、またサブ処理ユニットがタスクの占有のために利用できないため、実行することができないときに、準備(READY)状態にある。準備状態のプロセッサタスクの優先度が共有メモリ106の準備状態タスクのプールの中で十分に高い場合、サブ処理ユニットはそのプロセッサタスクを占有しそれを実行してもよい。このように、タスクがディスパッチされる(dispatch)とき、プロセッサタスクの状態は準備状態から実行状態に変化してもよい。反対に、この種のタスクがプリエンプティブ実行(先取り)されるかまたはその実行の間に侵害される場合、実行状態のタスクは準備状態に変化してもよい。プロセッサタスクのプリエンプティブ実行の実施例は、ひとつのプロセッサタスクが別のタスクに実行権を譲渡することに関連して、既に述べた。
ブロック状態カテゴリは、待機(WAITING)状態、中断(SUSPENDED)状態、および待機中断(WAITING−SUSPENDED)状態を含んでもよい。タスクの実行を継続する前に特定の条件が満足されなければならないことを規定するサービスコールの呼び出しのために、タスクがブロックされるとき、プロセッサタスクは待機(WAITING)状態にある。このように、タスクの実行状態は、サービスコールの呼び出し時に待機状態に変化してもよい。待機状態のプロセッサタスクは、規定された条件が満足するとき準備状態に解放されてもよく、これによって、その後に、処理中のタスクがサブ処理ユニット102に占有されることが可能になる。タスクが強制的に停止される(タスクそれ自身が呼び出してもよい)とき、プロセッサタスクは実行状態から中断(SUSPENDED)状態に入ってもよい。同様に、準備状態のプロセッサタスクは、強制されたアクションによって中断状態に入ってもよい。このようなプロセッサタスクの強制的な停止が開放されるとき、中断状態のプロセッサタスクが再開され準備状態に入ってもよい。プロセッサタスクは、タスクが満足するべき条件を待機しておりまた強制的に中断させられているとき、待機中断(WAITING−SUSPENDED)状態にある。したがって、待機中断状態のプロセッサタスクは、プロセッサタスクの強制的中断時に待機状態に入ってもよく、ここでプロセッサタスクは満足すべき条件を待機する。
タスクが実行されていないかまたは既にその実行を終了したとき、プロセッサタスクは休止(DORMANT)状態にある。休止状態のプロセッサタスクは、適当な状況の下で準備状態に入ってもよい。不在(NON−EXISTENT)状態は、例えば、タスクがまだ作成されていなかったりまたは既に削除されているなどによって、タスクがシステム内に存在しないいわゆる仮想状態を指す。
準備状態へ移動したタスクが実行状態のタスクより高い優先順位(または、優先度)を有する場合、より低い優先順位のタスクが準備状態へ移動し、より高い優先度のタスクがディスパッチされて実行状態へ移動することが好ましい。この状況において、より低い優先度のタスクは、より高い優先度のタスクによってプリエンプティブ実行されている。
ノン・プリエンプティブな(non-preemptive)、優先度に基づくタスクスケジューリングは、プロセッサタスクに割り当てられた優先度に基づいてなされる。同じ優先度を有する多くのプロセッサタスクがある場合、スケジューリングは、最初に来て最初に役立つ(first-come, first-served:FCFS)ことを基準に実行される。このタスクスケジューリングの規則は、タスク優先度に基づいたタスク間の優先順位を使用して定められてもよい。実行可能なタスクが存在する場合、せいぜい、高い優先順位のタスクと同数の割り当てられたサブ処理ユニット102が実行状態にある。実行可能なタスクの残りは、準備状態にある。異なる優先度を有するタスクの中で、最も高い優先度を有するタスクは、より高い優先順位を有する。同じ優先度のタスクの中で、最も早く実行可能な(実行中または準備ができている)状態に入ったプロセッサタスクは、より高い優先順位を有する。しかしながら、同じ優先度のタスク間の優先順位は、いくつかのサービスコールの呼び出しのせいで変化してもよい。プロセッサタスクが他のプロセッサタスクに対して優先順位を与えられると、ディスパッチが直ちに発生し、タスクが実行状態に移動することが好ましい。
図13と図14を参照して、本発明の特定の態様にしたがった特定のプリエンプション(preemption)特徴を示す。上述のように、実行状態にあるプロセッサタスク(例えばタスクA)はプリエンプティブ実行されるか、または準備状態にある別のプロセッサタスク(例えばタスクB)に実行権を譲渡してもよい。図13と図14に示すように、タスクAは、実行権の譲渡の時点まで、サブ処理ユニット102で実行されている。この時点で、SPUのカーネルは、共有メモリ106にタスクAをコピーする(タスクAを保存する)よう動作する。その後、タスクBは、共有メモリ106からSPUのローカルメモリにコピーされる(タスクBを復元する)。そして、SPUはタスクBを実行する。この技術は、ローカルメモリの使用量および高い帯域幅については比較的高い性能を享受する一方、実行権を譲渡した時点から最適化されないタスクBの実行の時点までのタスク実行レイテンシが存在する。
図15と図16を参照して、本発明のさらなる態様による代替的方法を示す。このシナリオにおいて、タスクAをローカルメモリから共有メモリ106にコピーする前に、タスクBを共有メモリ106からサブ処理ユニット102のローカルメモリにコピーしてもよい。この点に関して、サブ処理ユニット102は、共有メモリ106からタスクBを特定して読み出すための処置を同時にとりながら、タスクAを実行してもよい。これは、タスクテーブル280とタスクキュー282を共有メモリ106からサブ処理ユニット102Aのローカルメモリにコピーし、それらを用いて次の準備状態のタスク、すなわちタスクBを特定することを伴う。実行権の譲渡の時点で、サブ処理ユニット102Aのカーネルは、ローカルメモリから共有メモリ106にタスクAをコピーするが、これは、上述のようにタスクテーブル280とタスクキュー282を修正することを伴ってもよい。その後、サブ処理ユニット102はタスクBの実行を占有してもよい。この技術は、図13と図14に示した技術と比較して、実行権の譲渡とタスクBの実行との間のレイテンシを大きく削減する。
図17と図18を参照して、本発明のひとつまたは複数のさらなる態様にしたがって、実行権の譲渡とタスクBの実行との間のレイテンシをさらに削減することもできる。より詳細には、実行権の譲渡の時点までは、図15と図16に関して先に述べたのと実質的に同様な方法でサブ処理ユニット102が動作してよい。しかしながら、実行権の譲渡の後、サブ処理ユニット102はタスクBの実行を開始するのが好ましい。実質的に同時に、サブ処理ユニット102のカーネルは、タスクAをサブ処理ユニット102のローカルメモリから共有メモリ106にコピーするように動作することが好ましい。タスクBが実行件の譲渡後すぐに実行されるので、図14から図16に示した方法と比較してレイテンシが大きく削減される。
本発明のひとつまたは複数の態様によると、サブ処理ユニット102は、実行のためにローカルメモリ内の多数のプロセッサタスクを維持してもよい。これは、図19で示される。多数のプロセッサタスクの実行を管理するために、ローカルメモリは、複数のページとページテーブルを含んでもよい。この方法の利点は、レイテンシがさらに削減できるという点である。但し、その欠点のひとつとして、ローカルメモリ内の相当多くの空間がプロセスタスクの実行によって独占される。
図20から図22を参照して、本発明のひとつまたは複数の態様によるプロセッサタスクの移動(マイグレーション)を示す。これらの図は、プロセッサタスク、例えばタスクBが、サブ処理ユニットSPU1から別のサブ処理ユニットSPU2に移動される方法を示している。移動は、何らかの条件、例えばそれぞれのプロセッサタスクと関連付けられるそれぞれの優先度に基づいてもよい。本発明のいくつかの態様によれば、ひとつのサブ処理ユニットから別のサブ処理ユニットへのプロセッサタスクの移動は、プリエンプティブでなくてもよい。言い換えると、プロセッサタスクの移動は、優先度条件とタイミングの結果として自然に起こり、移動を引き起こす何らかの決定に基づくのではない。
このノン・プリエンプティブな移動は、以下の実施例で示すことができる。タスクテーブルを利用している共有メモリ106からプロセッサタスクBが選択され、このタスクテーブルが、実行の準備ができているプロセッサタスクの優先度順序を表す、と仮定する。タスクBは、サブ処理ユニットSPU1上で動作している。同様に、タスクテーブルにしたがって共有メモリ106からプロセッサタスクCが選択され、サブ処理ユニットSPU2上で動作していると仮定する。プロセッサタスクBとプロセッサタスクCが選択された時点で、より高い優先度のプロセッサタスクAは実行の準備ができておらず、したがって実行のために選択されたなかったと仮定する。しかしながら、プロセッサタスクBとプロセッサタスクCが動作している間に、プロセッサタスクAの実行の準備ができると仮定する。
図21を参照して、プロセッサタスクBは、サブ処理ユニットSPU1の実行権を譲渡(yield)してもよい。プロセッサタスクBによるこの譲渡アクションは、実行権の譲渡がソフトウェアアプリケーションの全体的な実行に有益であると判断したプログラマにより発生してもよい。いずれの場合も、サブ処理ユニットSPU1は、共有メモリ106にプロセッサタスクBを書き込み、タスクテーブルを更新することによって、この実行権の譲渡に応答する。サブ処理ユニットSPU1はまた、タスクテーブルにアクセスし、共有メモリ106内の複数のプロセッサタスクのうちいずれをコピーし実行するべきかを判定する。この例では、タスクテーブルによるとプロセッサタスクAが最も高い優先度を持ち、したがって、サブ処理ユニットSP1は、プロセッサタスクAを実行のために共有メモリ106から自身のローカルメモリにコピーする。この時点で、サブ処理ユニットSP1はプロセッサタスクAを実行し、サブ処理ユニットSP2はプロセッサタスクCの実行を継続する。
図22をさらに参照して、プロセッサタスクCは、他のプロセッサタスクにサブ処理ユニットSPU2の実行権を譲渡してもよい。また、この実行権の譲渡は、プログラム命令および/またはプロセッサタスクCの条件によって呼び出されてもよい。いずれの場合も、サブ処理ユニットSP2はプロセッサタスクCを共有メモリ106に書き戻し、タスクテーブルを更新する。サブ処理ユニットSP2はまた、タスクテーブルにアクセスし、実行の準備ができているプロセッサタスクのうちいずれをコピーするかを決定する。この実施例では、プロセッサタスクBが実行の準備ができており、また実行の準備ができている複数のプロセッサタスクの中で最も高い優先度を持つ。したがって、サブ処理ユニットSPU2は、実行のためにプロセッサタスクBを共有メモリ106から自身のローカルメモリにコピーする。
図20に示した処理状況と図22に示した処理状況を比較すると、プロセッサタスクBがサブ処理ユニットSPU1からサブ処理ユニットSPU2に移動したことが分かる。
図23および図24を参照して、本発明のプリエンプティブなマルチタスク態様を示す。本発明のこれらの態様は、例えばサブ処理ユニットSPU2であるサブ処理ユニット上で実行中の低い優先度のプロセッサタスクが、より高い優先度のプロセッサタスク、例えばプロセッサタスクAでプリエンプティブに置換されてもよいことを述べる。より詳細には、プロセッサタスクBはサブ処理ユニットSPU1上で動作していてもよいし、プロセッサタスクCはサブ処理ユニットSPU2(図23)上で動作していてもよい。その後、より高い優先度タスク、つまりタスクAの実行の準備ができるようになってもよい。これは、システムの他のサブ処理ユニットによる何らかのアクションを原因として発生してもよい。
説明のため、例えばプロセッサタスクBの実行の結果として、サブ処理ユニットSPU1がタスクAのステータスを実行状態に変更したと仮定する。その結果、サブ処理ユニットSPU1は、プロセッサタスクAの優先度が、他のサブ処理ユニット上で動作中のプロセッサタスクのあらゆる優先度より高いか否かについての判定をすることが好ましい。この単純化されたケースにおいて、サブ処理ユニットSPU1は、プロセッサタスクAがプロセッサタスクCより高い優先度を持つか否かについて判定を行う。優先度が高い場合、サブ処理ユニットSPU1は、少なくともプロセッサタスクCをプロセッサタスクAで置換することを開始する。言い換えると、 サブ処理ユニットSPU1は、プロセッサタスクCにサブ処理ユニット102を明け渡してプロセッサタスクAに与えさせる。この点に関して、サブ処理ユニットSPU1のカーネルは、サブ処理ユニットSPU2のカーネルに割り込みを発行してもよい。割り込みに応答して、サブ処理ユニットSPU2は、共有メモリ106にプロセッサタスクCを書き戻して、タスクテーブル(図24)を更新してもよい。サブ処理ユニットSPU2はまた、実行のためにプロセッサタスクAを共有メモリから自身のローカルメモリにコピーしてもよい。
図25と図26を参照して、本発明の特定の直接移動態様を示す。これらの態様は、サブ処理ユニットのひとつで実行中のより高い優先度のプロセッサタスクが、より低い優先度のプロセッサタスクを実行している別のサブ処理ユニットに移動されてもよいことを述べる。この移動は、より高い優先度のプロセッサタスクを実行しているサブ処理ユニットによって受け取られる直接の割り込みに応答してなされてもよい。図25を参照して、サブ処理ユニットSPU1は、他のいくつかのタスクを実行しなければならないことを示す割り込みを受け取ってもよい。この割り込みは、サブ処理ユニットSPU1に、システムの他のサブ処理ユニットのいずれがより低い優先度のプロセッサタスクを実行しているかについての判定をさせるようにしてもよい。その場合、このようなサブ処理ユニットは、より高い優先度の処理タスクを支持して、プロセッサタスクの実行権を譲渡してもよい。より詳細には、サブ処理ユニットSPU1は、サブ処理ユニットSPU2がプロセッサタスクAより低い優先度のプロセッサタスク(例えばプロセッサタスクB)を実行していると判定する場合、サブ処理ユニットSPU1のカーネルは、サブ処理ユニットSPU2のカーネルに割り込みを発行することが好ましい。割り込みに応答して、サブ処理ユニットSPU2は、プロセッサタスクBを自身のローカルメモリから共有メモリ106に書き戻して、タスクテーブルを更新する。サブ処理ユニットSPU2はまた、実行のためにプロセッサタスクAをサブ処理ユニットSPU1のローカルメモリから自身のローカルメモリにコピーする(または、移動する)ことが好ましい。
図27は、処理ユニット(PU)が本発明の一態様にしたがって割り込みを処理する方法について示す。第1のステップにおいて、PUは割り込みを受け取る。PUは、いずれのサブ処理ユニット(この場合、SPU0、SPU1、SPU2のグループ)が最も低い優先度を有しているかを判定する。そして、PUは最も低い優先度を有するSPUに割り込みを送信する。図27の場合、SPU2が最も低い優先度を持つので、PUはSPU2に割り込みを送信する。
本発明のひとつまたは複数のさらなる態様によると、サブ処理ユニットのひとつから別のサブ処理ユニットへの割り込みは、多数の方法で処理することができる。図28を参照して、本発明の一実施形態において、ひとつのサブ処理ユニットが、システム内の他のサブ処理ユニットのいずれかに対する割り込みを管理するよう指定されていてもよい。指定されたサブ処理ユニットは、このようなタスク移動割り込みの全てを受け取り、それらを自ら処理するか、または他のサブ処理ユニットにその割り込みを渡すかについて判定をする。例えば、割り込みが指定されたサブ処理ユニットに向けられたものであった場合、指定されたサブ処理ユニット自身でその割り込みを処理してもよい。代替的に、割り込みが指定されたサブ処理ユニットに向けられたものでなかった場合、指定されたサブ処理ユニットは、その割り込みを、最も低い優先度のプロセッサタスクを実行しているサブ処理ユニットに送信してもよい。
図29は、分散割り込み処理スキームが使用される別の方法を示す。この技術によると、それぞれの割り込みは各サブ処理ユニットに割り当てられる。例えば、割り込みAがサブ処理ユニットSPU0に割り当てられてもよい。割り込みB、Cがサブ処理ユニットSPU1に割り当てられ、割り込みD、E、Fがサブ処理ユニットSPU2に割り当てられてもよい。
図23から図26を参照して述べた説明では、システムの他のサブ処理ユニット上で動作中のるプロセッサタスクの優先度を、サブ処理ユニットが判定可能である必要があった。本発明の一実施形態によれば、サブ処理ユニットは、実行中のプロセッサタスクの優先度を判定する際に、共有のタスク優先度テーブルを利用してもよい。共有タスク優先度テーブルは共有メモリに置かれていてもよく、サブ処理ユニット識別子およびプロセッサタスク優先度識別子のための複数のエントリを含んでいてもよい。例えば、サブ処理ユニット識別子は、サブ処理ユニットに固有の数字および/または英数字のコードであってもよい。プロセッサタスク優先度識別子は、好ましくは、実行中の特定のプロセッサタスクの優先度を示す。共有タスク優先度テーブルの各エントリは、サブ処理ユニット識別子と優先度識別子のペアを含むことが好ましく、これらは、関連付けられたサブ処理ユニット上で実行中の所与のプロセッサタスクの優先度を示す。このように、実行中のプロセッサタスクの優先度を判定しようとしているサブ処理ユニットは、共有タスク優先度テーブルにアクセスして、より低い優先度のプロセッサタスクを実行しているサブ処理ユニットを発見してもよい。最も低い優先度のプロセッサタスクを実行中のサブ処理ユニットが特定されて、より高い優先度のプロセッサタスクに実行権を譲渡することが好ましい。
本発明の他の実施形態は、サブ処理ユニットが、いずれのサブ処理ユニットが最も低い優先度のプロセッサタスクを実行中かを表す共有変数を利用することを提供する。優先度の正確な表示が保証されるように、共有変数の使用は微少更新プロセス(atomic update process)を通して達成されることが好ましい。代替的な方法は、ひとつのサブ処理ユニットから別のサブ処理ユニットに順次送信される、連続したメッセージを利用してもよい。メッセージは、より低い優先度のプロセッサタスクの優先度識別子とサブ処理ユニット識別子によって更新されてもよい。
図30を参照して、本発明の別の実施形態は、処理能力を強化するために、多数の処理要素200を結合することによって、プロセッサタスク110を実行するために割り当てられるサブ処理ユニット208の数を増加してもよいことを考察する。例えば、2つ以上のプロセッサ要素200A、200Bは、ひとつまたは複数のチップパッケージ内などにパッケージングされるか結合されて、一組のマルチプロセッサ装置を形成してもよい。この構成を広帯域エンジン(BE)と称してもよい。広帯域エンジン290は、2つのプロセッサ要素200A、200Bを含み、これらはバス212を介してデータ通信のために相互接続される。プロセッサ要素200A、200Bおよび共有DRAM214の間で通信を可能にするように、追加的なデータバス216が提供されることが好ましい。ひとつまたは複数の入出力(I/O)インタフェース202A、202Bおよび外部バス(図示せず)は、広帯域エンジン290と任意の外部要素の間の通信を提供する。広帯域エンジン290のプロセッサ要素200A、200Bは、それぞれ、図3に関して上述したサブ処理装置208によって実行される並列で独立したアプリケーションおよびデータの処理に類似の並列で独立の態様で、データおよびアプリケーションの処理を実行する。本発明の様々な態様によれば、広帯域エンジンは単一のプロセッサ要素を備えていても多数の処理要素を備えていてもよい。さらに、広帯域エンジンはマルチプロセッシング広帯域エンジンから形成されてもよい。
図31を参照する。ここで、スタンドアロン型のマルチプロセッシング要素208、またはマルチプロセッシング要素のセットである広帯域エンジン290が複数の製品に分散されて、マルチプロセッサシステム500を形成してもよい。コンピュータおよび/またはコンピューティングデバイスとして実装された、システム500の要素またはメンバは、ネットワーク504を介して通信することが好ましい。ネットワーク504は、ローカルエリアネットワーク(LAN)であっても、インターネットや他の任意のコンピュータネットワークのような大域的ネットワークであってもよい。
例えば、ネットワーク504に接続されたメンバは、例えば、クライアントコンピュータ506、サーバコンピュータ508、個人携帯情報機器(PDA)510、デジタルテレビ(DTV)512、または、そのほかの有線または無線ワイヤレスコンピュータおよびコンピューティングデバイスを含む。例えば、クライアント506Aは、ひとつまたは複数のPE200、または他の適切なマルチプロセッサシステムから構成されるラップトップコンピュータであってもよい。クライアント506Bは、ひとつまたは複数のPE200、または他の適切なマルチプロセッサシステムから構成されるデスクトップコンピュータ(またはセットトップボックス)であってもよい。さらに、サーバ508Aはデータベース機能を使用した管理要素(administrative entity)であってもよく、これはひとつまたは複数のPE200から好ましくは構成される。
したがって、マルチプロセッサシステム500の処理能力は、ローカルに(例えば、ひとつの製品に)またはリモートに(例えば複数の製品に)配置された複数のプロセッサ要素200に依存してもよい。この点に関して、図32は、本発明のひとつまたは複数の態様による全体的なコンピュータネットワークのブロック図である。PE200および/または多数のPEからなる広帯域エンジン290は、コンピュータシステム500の全体的な分散アーキテクチャを実装するために利用することができる。
システム500のサーバ508がクライアント506より多くのデータおよびアプリケーションの処理を実行するので、サーバ508は、クライアント506より多くのコンピュータモジュール(例えばPE200)を含む。他方、PDA510は、この実施例において最小の処理量を実行する。したがって、PDA510は、単一のPE200のように最小数のPE200を含む。DTV512は、実質的にクライアント506とサーバ508の間の処理レベルを実行する。したがって、DTV512は、クライアント506のプロセッサ要素とサーバ508のプロセッサ要素の間の数のプロセッサ要素を含む。
分散マルチプロセッサシステム500に関して、さらに詳細に述べる。システム500の均質的な構成は、適応性、処理速度、処理効率を促進する。システム500の各メンバが同一のコンピューティングモジュール、例えばプロセッサ要素200のひとつまたは複数(またはその一部)を使用して処理を実行するので、データおよびアプリケーションの処理がネットワークメンバで共有されてもよいため、データおよび/またはアプリケーションの処理を実行するコンピュータおよびコンピューティングデバイスの特定は、重要でない。システム500により処理されるデータおよびアプリケーションを含むソフトウェアセルを固有に識別することによって、処理が発生した場所にかかわらず、その処理を要求するコンピュータまたはコンピューティングデバイスに処理結果を送信することができる。処理を実行するモジュールが共通の構造を有し、共通の命令セットアーキテクチャを使用するので、プロセッサ間の互換性を得るための追加ソフトウェアレイヤによる計算負荷が省かれる。このアーキテクチャおよびプログラミングモデルは、例えば、リアルタイムでマルチメディアのアプリケーションを実行するのに必要な処理速度を促進する。
システム500により促進される処理速度および処理効率のさらなる利点を得るために、このシステムにより処理されるデータおよびアプリケーションは、固有に識別され一様にフォーマット化されたソフトウェアセル502にパッケージングされてもよい。各ソフトウェアセル502は、アプリケーションおよびデータの両方を含み、または含んでもよい。各ソフトウェアセルはまた、ネットワーク504およびシステム500の全体にわたってセルを識別するためにIDを持つ。ソフトウェアセルの構造の均質性、およびネットワーク全体にわたるソフトウェアセルの一様な識別により、ネットワーク504の任意のコンピュータまたはコンピューティングデバイス上でのアプリケーションおよびデータの処理が容易になる。例えば、クライアント506がソフトウェアセル502を実行してもよいが、クライアント506の処理能力が限られているため、ソフトウェアセル502を処理のためにサーバ508に送信してもよい。したがって、ソフトウェアセル502は、ネットワーク504上の処理リソースの利用可能性に基づいて、ネットワーク504の全体にわたって移動することができる。
システム500のプロセッサおよびソフトウェアセル502の均質的な構造により、今日の異機種間ネットワークの課題の多くが回避される。任意の命令セット、例えばJava仮想マシン(Javaは登録商標)のような仮想マシンを使用して、任意のISAでのアプリケーションの処理を可能にしようとする非効率的なプログラムモジュールが回避される。したがって、システム500は、従来のネットワークより効果的にまた効率的に、ブロードバンド処理を実行することができる。
「マルチプロセッサシステムにおけるプロセッサタスクの移動方法および装置」と題する同時に譲渡された米国特許出願第10/783,238号(代理人番号SCEI 1.0−187)は、本出願と同日に米国特許商標庁に出願され、参照により完全に本願明細書に援用される。
本明細書において特定の実施形態を参照して本発明を記載したが、これらの実施形態が単に本発明の原理および応用を例示するものにすぎないことは理解されよう。したがって、例示した実施形態に多数の修正を施すことができることが理解され、また、その他の構成を、添付の特許請求の範囲に記載の本発明の趣旨および範囲から逸脱することなく考案することができる。
本発明のひとつまたは複数の態様によるマルチプロセッサシステムの構造を示す図である。 共有メモリ内のプロセッサタスクの格納を示すブロック図である。 本発明のプロセッサ要素(PE)の好適な構造を示す図である。 本発明による例示的なサブ処理ユニット(SPU)の構造を示す図である。 本発明のひとつまたは複数の態様により使用可能なプロセッサタスクテーブルの一例を示す図である。 図5のタスクテーブルによって設定されるプロセッサタスクのリンク付きリストの状態図である。 図5のタスクテーブルとともに使用してプロセッサタスクの実行を管理することができるタスクキューの一例を示す図である。 本発明のひとつまたは複数の態様によるマルチプロセッサシステムによって実行可能なプロセスステップを示すフロー図である。 本発明のマルチプロセッサシステムによって実行可能なプロセスステップを示すフロー図である。 本発明のマルチプロセッサシステムによって実行可能なプロセスステップを示すフロー図である。 共有メモリ内のプロセッサタスクを初期化し、本発明の様々な態様によるマルチプロセッサシステムにより実行可能なプロセスステップを示すフロー図である。 本発明のひとつまたは複数の態様による、プロセッサタスクの異なるステータス状態を示す状態図である。 本発明のひとつまたは複数の態様による、プロセッサタスクが共有メモリからコピーされ共有メモリに書き戻される方法を示すブロック図である。 図13のコピーおよび書き戻し技術に関連するレイテンシの処理を示すタイミング図である。 本発明のひとつまたは複数の態様による、プロセッサタスクが共有メモリからコピーされ共有メモリに書き戻される方法を示すブロック図である。 図15のコピーおよび書き戻し技術に関連するレイテンシの処理を示すタイミング図である。 本発明のひとつまたは複数の態様による、プロセッサタスクが共有メモリからコピーされ共有メモリに書き戻される方法を示すブロック図である。 図17のコピーおよび書き戻し技術に関連するレイテンシの処理を示すタイミング図である。 本発明のひとつまたは複数の態様による、プロセッサタスクが共有メモリからコピーされ共有メモリに書き戻される方法を示すブロック図である。 本発明の特定の態様のノン・プリエンプティブなプロセッサタスク移動を示すブロック図である。 本発明の特定の態様のノン・プリエンプティブなプロセッサタスク移動を示すブロック図である。 本発明の特定の態様のノン・プリエンプティブなプロセッサタスク移動を示すブロック図である。 本発明の特定の態様のプリエンプティブなマルチタスクを示すブロック図である。 本発明の特定の態様のプリエンプティブなマルチタスクを示すブロック図である。 本発明の特定の態様のプリエンプティブなプロセッサタスク移動を示すブロック図である。 本発明の特定の態様のプリエンプティブなプロセッサタスク移動を示すブロック図である。 本発明のひとつまたは複数の態様による特定プロセッサ割り込み技術を示す部分的なブロック図と部分的なフロー図である。 本発明のひとつまたは複数の態様によるプロセッサ割り込み技術を示す部分的なブロック図と部分的なフロー図である。 本発明のひとつまたは複数の態様によるプロセッサ割り込み技術を示す部分的なブロック図と部分的なフロー図である。 本発明のひとつまたは複数の態様による2つ以上のサブ処理ユニットを含む処理システムの構造を示す図である。 本発明のひとつまたは複数の態様による分散マルチプロセッサシステムのシステム図である。 本発明のマルチプロセッシングユニットと共に使用可能なソフトウェアセルのブロック図である。
符号の説明
100 マルチプロセッサシステム、 102 サブ処理ユニット、 106 共有メモリ、 110 プロセッサタスク。

Claims (12)

  1. サービスプロセッサとして動作する主処理ユニットと、各々がローカルメモリを有する複数のサブ処理ユニットとを含むマルチプロセッサシステムにおいて複数のプロセッサタスクを管理する方法であって、
    前記主処理ユニットが、前記複数のサブ処理ユニットによってアクセス可能な共有メモリに前記複数のプロセッサタスクを格納するステップと、
    前記主処理ユニットが、前記複数のプロセッサタスクのそれぞれと関連付けられるタスクテーブルエントリの少なくとも一部を互いにリンク付けするプロセッサタスクのリンク付きリストを含み、各サブ処理ユニットが自身のローカルメモリに前記プロセッサタスクをコピーすべき順序を決定するためのタスクテーブルを前記共有メモリに格納するステップと、
    処理ユニットが、前記リンク付きリスト内の複数のプロセッサタスクのうち新たな最初のタスクを表すヘッドポインタと、前記リンク付きリスト内の複数のプロセッサタスクのうち最後のひとつを表すテイルポインタのうち、少なくともひとつを含むとともに、各プロセッサタスクの優先度に関するエントリを含むタスクキューを前記共有メモリに格納するステップと、
    前記サブ処理ユニットが、他のサブ処理ユニットによるコピーおよび修正を防ぐために前記共有メモリ内の前記タスクテーブルと前記タスクキューとをロックし、該タスクテーブルと該タスクキューを自身のローカルメモリにコピーするステップと、
    前記サブ処理ユニットが、前記タスクテーブルと前記タスクキューとを使用して、該サブ処理ユニット内でいずれのプロセッサタスクを次に実行すべきかを判定するステップと、
    前記サブ処理ユニットが、前記リンク付きリスト内の複数のプロセッサタスクのうち最初のプロセッサタスクの実行権を、前記複数のプロセッサタスクのうち別のプロセッサタスクが実行可能となるように譲渡させるステップと、
    前記サブ処理ユニットが、実行すべきと判定されたプロセッサタスクへの参照を前記タスクテーブルおよび前記タスクキューから除去するように修正するステップと、
    前記サブ処理ユニットが、修正されたタスクテーブルと修正されたタスクキューとを前記共有メモリに書き戻しロックを解除するステップと、
    を含むプロセッサタスクの管理方法。
  2. 記サブ処理ユニットが、呼び出しの準備ができている新たな最初のプロセッサタスクへのヘッドポインタを求めて前記タスクキューを検索するステップとをさらに含む請求項1に記載のプロセッサタスクの管理方法。
  3. 前記サブ処理ユニットが、前記最初のプロセッサタスクを前記リンク付きリストに加えるステップをさらに含む請求項1または2に記載のプロセッサタスクの管理方法。
  4. 前記タスクテーブルエントリが、それぞれ次のタスクテーブルエントリへのポインタと前のタスクテーブルエントリへのポインタを含み、
    前記加えるステップは、前記サブ処理ユニットが、前記最初のプロセッサタスクに関連するタスクテーブルエントリへのリンクを含むように、前記タスクテーブルエントリのリンク付けを修正するステップを含む請求項3に記載のプロセッサタスクの管理方法。
  5. 前記タスクテーブルエントリのリンク付けを修正するステップは、前記サブ処理ユニットが、以前は互いにリンク付けされていた前のタスクテーブルエントリと後のタスクテーブルエントリとの間で、前記最初のプロセッサタスクに関連するタスクテーブルエントリをリンク付けするステップを含む請求項4に記載のプロセッサタスクの管理方法。
  6. 前記サブ処理ユニットが、前記最初のプロセッサタスクに関連するタスクテーブルをポイントするように、前のタスクテーブルエントリのNEXTポインタを修正するステップと、
    前記サブ処理ユニットが、前のタスクテーブルエントリをポイントするように、前記最初のプロセッサタスクに関連するタスクテーブルエントリのPREVポインタを修正するステップと、
    前記サブ処理ユニットが、後のタスクテーブルエントリをポイントするように、前記最初のプロセッサタスクに関連するタスクテーブルエントリのNEXTポインタを修正するステップと、
    前記サブ処理ユニットが、前記最初のプロセッサタスクに関連するタスクテーブルエントリをポイントするように、後のタスクテーブルエントリのPREVポインタを修正するステップをさらに含む請求項5に記載のプロセッサタスクの管理方法。
  7. プロセッサタスクを実行するためのローカルメモリをそれぞれ備える複数のサブ処理ユニットと、
    (i) 実行の準備ができている複数のプロセッサタスクと、(ii)各プロセッサタスクに関連付けられるタスクテーブルエントリの少なくとも一部を互いにリンク付けするプロセッサタスクのリンク付きリストを含み、各サブ処理ユニットが自身のローカルメモリに前記プロセッサタスクをコピーすべき順序を決定するためのタスクテーブルと、(iii)前記リンク付きリスト内の複数のプロセッサタスクのうち新たな最初のタスクを表すヘッドポインタと、前記リンク付きリスト内の複数のプロセッサタスクのうち最後のひとつを表すテイルポインタのうち、少なくともひとつを含むとともに、各プロセッサタスクの優先度に関するエントリを含むタスクキューと、を格納するよう動作可能な共有メモリと、を備えるマルチプロセッサ装置であって、
    前記サブ処理ユニットは、
    他のサブ処理ユニットによるコピーおよび修正を防ぐために前記共有メモリ内の前記タスクテーブルと前記タスクキューとをロックし、該タスクテーブルと該タスクキューを自身のローカルメモリにコピーし、
    前記タスクテーブルと前記タスクキューとを使用して、前記サブ処理ユニット内でいずれのプロセッサタスクを次に実行すべきかを判定し、
    前記リンク付きリスト内の複数のプロセッサタスクのうち最初のプロセッサタスクの実行権を、前記複数のプロセッサタスクのうち別のプロセッサタスクが実行可能となるように譲渡させ、
    実行すべきと判定されたプロセッサタスクへの参照を前記タスクテーブルおよび前記タスクキューから除去するように修正し、
    修正されたタスクテーブルと修正されたタスクキューとを前記共有メモリに書き戻しロックを解除するよう動作可能であることを特徴とするマルチプロセッサ装置。
  8. 前記サブ処理ユニットは、
    び出しの準備ができている新たな最初のプロセッサタスクへのヘッドポインタを求めて前記タスクキューを検索するよう動作可能であることを特徴とする請求項7に記載のマルチプロセッサ装置。
  9. 前記サブ処理ユニットは、前記最初のプロセッサタスクを前記リンク付きリストに加えるよう動作可能であることを特徴とする請求項7または8に記載のマルチプロセッサ装置。
  10. 前記タスクテーブルエントリが、それぞれ次のタスクテーブルエントリへのポインタと前のタスクテーブルエントリへのポインタとを含み、
    前記サブ処理ユニットは、前記最初のプロセッサタスクに関連するタスクテーブルエントリへのリンクを含むように、前記タスクテーブルエントリのリンク付けを修正するよう動作可能であることを特徴とする請求項9に記載のマルチプロセッサ装置。
  11. 前記サブ処理ユニットは、以前は互いにリンク付けされていた前のタスクテーブルエントリと後のタスクテーブルエントリとの間で、前記最初のプロセッサタスクに関連するタスクテーブルエントリをリンク付けすることによって、前記タスクテーブルエントリのリンク付けを修正するよう動作可能であることを特徴とする請求項10に記載のマルチプロセッサ装置。
  12. 前記サブ処理ユニットは、
    前記最初のプロセッサタスクに関連するタスクテーブルをポイントするように、前のタスクテーブルエントリのNEXTポインタを修正し、
    前のタスクテーブルエントリをポイントするように、前記最初のプロセッサタスクに関連するタスクテーブルエントリのPREVポインタを修正し、
    後のタスクテーブルエントリをポイントするように、前記最初のプロセッサタスクに関連するタスクテーブルエントリのNEXTポインタを修正し、
    前記最初のプロセッサタスクに関連するタスクテーブルエントリをポイントするように、後のタスクテーブルエントリのPREVポインタを修正するよう動作可能であることを特徴とする請求項11に記載のマルチプロセッサ装置。
JP2005044874A 2004-02-20 2005-02-21 マルチプロセッサシステムにおけるタスク管理方法および装置 Expired - Fee Related JP4526412B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/783,246 US7614053B2 (en) 2004-02-20 2004-02-20 Methods and apparatus for task management in a multi-processor system

Publications (3)

Publication Number Publication Date
JP2005235228A JP2005235228A (ja) 2005-09-02
JP2005235228A5 JP2005235228A5 (ja) 2008-05-22
JP4526412B2 true JP4526412B2 (ja) 2010-08-18

Family

ID=34861183

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005044874A Expired - Fee Related JP4526412B2 (ja) 2004-02-20 2005-02-21 マルチプロセッサシステムにおけるタスク管理方法および装置

Country Status (7)

Country Link
US (1) US7614053B2 (ja)
EP (1) EP1716486B1 (ja)
JP (1) JP4526412B2 (ja)
AT (1) ATE431943T1 (ja)
DE (1) DE602005014540D1 (ja)
TW (1) TW200612342A (ja)
WO (1) WO2005081105A2 (ja)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8458754B2 (en) 2001-01-22 2013-06-04 Sony Computer Entertainment Inc. Method and system for providing instant start multimedia content
US7734456B2 (en) * 2004-03-30 2010-06-08 Osamu Fujita Method and apparatus for priority based data processing
US20060048160A1 (en) * 2004-09-02 2006-03-02 International Business Machines Corporation Method, apparatus, and computer program product for providing a self-tunable parameter used for dynamically yielding an idle processor
US20060080389A1 (en) * 2004-10-06 2006-04-13 Digipede Technologies, Llc Distributed processing system
US7743377B2 (en) * 2004-10-25 2010-06-22 Microsoft Corporation Cooperative threading in a managed code execution environment
US8849968B2 (en) * 2005-06-20 2014-09-30 Microsoft Corporation Secure and stable hosting of third-party extensions to web services
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
JP2007087244A (ja) * 2005-09-26 2007-04-05 Sony Corp コプロセッサ及びコンピュータシステム
US7734827B2 (en) * 2005-09-27 2010-06-08 Sony Computer Entertainment, Inc. Operation of cell processors
US7506123B1 (en) * 2005-09-27 2009-03-17 Sony Computer Entertainment Inc. Method and system for performing memory copy function on a cell processor
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
US8595747B2 (en) * 2005-12-29 2013-11-26 Sony Computer Entertainment Inc. Efficient task scheduling by assigning fixed registers to scheduler
US20070174411A1 (en) 2006-01-26 2007-07-26 Brokenshire Daniel A Apparatus and method for efficient communication of producer/consumer buffer status
GB2435335A (en) * 2006-02-21 2007-08-22 Sony Computer Entertainment Inc Multi-processor emulation by a multi-processor
CN100517236C (zh) * 2006-04-03 2009-07-22 北京握奇数据系统有限公司 智能卡嵌入式操作系统及其控制方法
JP4557949B2 (ja) * 2006-04-10 2010-10-06 富士通株式会社 資源ブローカリングプログラム、該プログラムを記録した記録媒体、資源ブローカリング装置、および資源ブローカリング方法
JP4766487B2 (ja) * 2006-09-08 2011-09-07 株式会社ソニー・コンピュータエンタテインメント プログラム改ざん検出装置
US7647483B2 (en) * 2007-02-20 2010-01-12 Sony Computer Entertainment Inc. Multi-threaded parallel processor methods and apparatus
US8112751B2 (en) * 2007-03-01 2012-02-07 Microsoft Corporation Executing tasks through multiple processors that process different portions of a replicable task
US20080244589A1 (en) * 2007-03-29 2008-10-02 Microsoft Corporation Task manager
US8789063B2 (en) * 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US7853950B2 (en) * 2007-04-05 2010-12-14 International Business Machines Corporarion Executing multiple threads in a processor
US8799902B2 (en) * 2007-04-09 2014-08-05 Intel Corporation Priority based throttling for power/performance quality of service
US20080263106A1 (en) * 2007-04-12 2008-10-23 Steven Asherman Database queuing and distributed computing
US8589943B2 (en) * 2007-08-15 2013-11-19 Sony Computer Entertainment Inc. Multi-threaded processing with reduced context switching
US9483405B2 (en) 2007-09-20 2016-11-01 Sony Interactive Entertainment Inc. Simplified run-time program translation for emulating complex processor pipelines
US8239879B2 (en) * 2008-02-01 2012-08-07 International Business Machines Corporation Notification by task of completion of GSM operations at target node
US8146094B2 (en) * 2008-02-01 2012-03-27 International Business Machines Corporation Guaranteeing delivery of multi-packet GSM messages
US8214604B2 (en) * 2008-02-01 2012-07-03 International Business Machines Corporation Mechanisms to order global shared memory operations
US8484307B2 (en) * 2008-02-01 2013-07-09 International Business Machines Corporation Host fabric interface (HFI) to perform global shared memory (GSM) operations
US8275947B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Mechanism to prevent illegal access to task address space by unauthorized tasks
US8200910B2 (en) * 2008-02-01 2012-06-12 International Business Machines Corporation Generating and issuing global shared memory operations via a send FIFO
US8255913B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Notification to task of completion of GSM operations by initiator node
US20090300629A1 (en) 2008-06-02 2009-12-03 Mois Navon Scheduling of Multiple Tasks in a System Including Multiple Computing Elements
US9058206B2 (en) * 2008-06-19 2015-06-16 Freescale emiconductor, Inc. System, method and program product for determining execution flow of the scheduler in response to setting a scheduler control variable by the debugger or by a processing entity
US20110099552A1 (en) * 2008-06-19 2011-04-28 Freescale Semiconductor, Inc System, method and computer program product for scheduling processor entity tasks in a multiple-processing entity system
US8966490B2 (en) * 2008-06-19 2015-02-24 Freescale Semiconductor, Inc. System, method and computer program product for scheduling a processing entity task by a scheduler in response to a peripheral task completion indicator
US8341638B2 (en) * 2008-09-30 2012-12-25 International Business Machines Corporation Delegated virtualization across physical partitions of a multi-core processor (MCP)
US8732716B2 (en) 2008-09-30 2014-05-20 International Business Machines Corporation Virtualization across physical partitions of a multi-core processor (MCP)
JP5509564B2 (ja) * 2008-09-30 2014-06-04 富士通株式会社 メッセージ送信方法及びプログラム
US8438404B2 (en) * 2008-09-30 2013-05-07 International Business Machines Corporation Main processing element for delegating virtualized control threads controlling clock speed and power consumption to groups of sub-processing elements in a system such that a group of sub-processing elements can be designated as pseudo main processing element
US8897372B2 (en) 2009-02-18 2014-11-25 Nec Corporation Task allocation device, task allocation method, and storage medium storing task allocation program
US9207943B2 (en) * 2009-03-17 2015-12-08 Qualcomm Incorporated Real time multithreaded scheduler and scheduling method
JP5214537B2 (ja) * 2009-05-25 2013-06-19 株式会社東芝 マルチプロセッサシステム
US9032407B2 (en) * 2009-05-25 2015-05-12 Panasonic Intellectual Property Corporation Of America Multiprocessor system, multiprocessor control method, and multiprocessor integrated circuit
US8126987B2 (en) 2009-11-16 2012-02-28 Sony Computer Entertainment Inc. Mediation of content-related services
US9158713B1 (en) * 2010-04-07 2015-10-13 Applied Micro Circuits Corporation Packet processing with dynamic load balancing
US10678744B2 (en) * 2010-05-03 2020-06-09 Wind River Systems, Inc. Method and system for lockless interprocessor communication
US8433759B2 (en) 2010-05-24 2013-04-30 Sony Computer Entertainment America Llc Direction-conscious information sharing
CN103119574B (zh) * 2010-06-22 2016-01-20 富士通株式会社 数据传送控制装置及方法
RU2011117765A (ru) 2011-05-05 2012-11-10 ЭлЭсАй Корпорейшн (US) Устройство (варианты) и способ реализации двухпроходного планировщика задач линейной сложности
US8904451B2 (en) * 2012-04-13 2014-12-02 Theplatform, Llc Systems for prioritizing video processing events based on availability of media file and agent to process the event type
US10552205B2 (en) * 2016-04-02 2020-02-04 Intel Corporation Work conserving, load balancing, and scheduling
US10592280B2 (en) * 2016-11-23 2020-03-17 Amazon Technologies, Inc. Resource allocation and scheduling for batch jobs
US10754706B1 (en) 2018-04-16 2020-08-25 Microstrategy Incorporated Task scheduling for multiprocessor systems
WO2019222748A1 (en) * 2018-05-18 2019-11-21 Rigetti & Co, Inc. Computing platform with heterogenous quantum processors
TWI714003B (zh) * 2018-10-11 2020-12-21 力晶積成電子製造股份有限公司 可執行人工智慧運算的記憶體晶片及其操作方法
US10996981B2 (en) * 2019-03-15 2021-05-04 Toshiba Memory Corporation Processor zero overhead task scheduling
CN111708624B (zh) * 2020-06-16 2023-09-29 北京百度网讯科技有限公司 基于多传输机的并发度分配方法、装置、设备和存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02171952A (ja) * 1988-12-26 1990-07-03 Hitachi Ltd マルチプロセッサにおけるディスパッチ方式
JPH03157733A (ja) * 1989-11-16 1991-07-05 Mitsubishi Electric Corp タスクレディキュー管理装置
JPH05233572A (ja) * 1992-02-21 1993-09-10 Toshiba Corp マルチプロセッサに於けるプロセスディスパッチ方式
JPH06259386A (ja) * 1993-03-02 1994-09-16 Toshiba Corp 資源管理方式
JPH1055284A (ja) * 1996-05-06 1998-02-24 Sun Microsyst Inc スレッドをスケジュールする方法及びそのシステム
JPH10146333A (ja) * 1996-11-21 1998-06-02 Toshiba Corp Ct画像再構成方法
JPH10283200A (ja) * 1997-04-04 1998-10-23 Sony United Kingdom Ltd 自動ジョブスケジュール方法及び装置
JP2000259429A (ja) * 1999-03-11 2000-09-22 Mitsubishi Electric Corp タイマー管理装置および方法
JP2000276362A (ja) * 1999-03-29 2000-10-06 Nec Kofu Ltd プロセス管理方式
JP2003303134A (ja) * 2001-03-22 2003-10-24 Sony Computer Entertainment Inc コンピュータ処理システム及びコンピュータで実行される処理方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5841538B2 (ja) 1975-12-04 1983-09-13 株式会社東芝 マルチプロセツサシステム ノ ユウセンセイギヨホウシキ
US4394727A (en) 1981-05-04 1983-07-19 International Business Machines Corporation Multi-processor task dispatching apparatus
US4837688A (en) 1986-07-25 1989-06-06 International Business Machines Corporation Multi-channel shared resource processor
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
JPH04195577A (ja) * 1990-11-28 1992-07-15 Hitachi Ltd マルチプロセッサにおけるタスクスケジューリング方式
US5469571A (en) 1991-07-15 1995-11-21 Lynx Real-Time Systems, Inc. Operating system architecture using multiple priority light weight kernel task based interrupt handling
US5630128A (en) 1991-08-09 1997-05-13 International Business Machines Corporation Controlled scheduling of program threads in a multitasking operating system
US5379428A (en) 1993-02-01 1995-01-03 Belobox Systems, Inc. Hardware process scheduler and processor interrupter for parallel processing computer systems
JPH08241212A (ja) * 1995-03-03 1996-09-17 Kokusai Electric Co Ltd タスク管理装置及びその制御方法
US6105053A (en) 1995-06-23 2000-08-15 Emc Corporation Operating system for a non-uniform memory access multiprocessor system
JPH09237256A (ja) 1996-02-29 1997-09-09 Mitsubishi Electric Corp 並列計算機における動的負荷分散方法
US6321308B1 (en) * 1997-03-21 2001-11-20 Emc Corporation Method and apparatus for managing access requests from a plurality of devices using dual level queue locking scheme and a doubly-linked circular queue
US6243735B1 (en) * 1997-09-01 2001-06-05 Matsushita Electric Industrial Co., Ltd. Microcontroller, data processing system and task switching control method
FI108478B (fi) 1998-01-21 2002-01-31 Nokia Corp Sulautettu jõrjestelmõ
JP2002007364A (ja) 2000-06-22 2002-01-11 Fujitsu Ltd 並列計算機システムのジョブスケジューリングを行うスケジューリング装置
JP3472540B2 (ja) 2000-09-11 2003-12-02 日本電信電話株式会社 サーバ選択装置、サーバ選択方法、及びサーバ選択プログラムを記録した記録媒体
US6904483B2 (en) * 2001-03-20 2005-06-07 Wind River Systems, Inc. System and method for priority inheritance
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US7178145B2 (en) * 2001-06-29 2007-02-13 Emc Corporation Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system
JP3884990B2 (ja) 2002-04-26 2007-02-21 富士通株式会社 マルチプロセッサ装置
US7389508B2 (en) * 2003-09-25 2008-06-17 International Business Machines Corporation System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment
US7516456B2 (en) * 2003-09-25 2009-04-07 International Business Machines Corporation Asymmetric heterogeneous multi-threaded operating system

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02171952A (ja) * 1988-12-26 1990-07-03 Hitachi Ltd マルチプロセッサにおけるディスパッチ方式
JPH03157733A (ja) * 1989-11-16 1991-07-05 Mitsubishi Electric Corp タスクレディキュー管理装置
JPH05233572A (ja) * 1992-02-21 1993-09-10 Toshiba Corp マルチプロセッサに於けるプロセスディスパッチ方式
JPH06259386A (ja) * 1993-03-02 1994-09-16 Toshiba Corp 資源管理方式
JPH1055284A (ja) * 1996-05-06 1998-02-24 Sun Microsyst Inc スレッドをスケジュールする方法及びそのシステム
JPH10146333A (ja) * 1996-11-21 1998-06-02 Toshiba Corp Ct画像再構成方法
JPH10283200A (ja) * 1997-04-04 1998-10-23 Sony United Kingdom Ltd 自動ジョブスケジュール方法及び装置
JP2000259429A (ja) * 1999-03-11 2000-09-22 Mitsubishi Electric Corp タイマー管理装置および方法
JP2000276362A (ja) * 1999-03-29 2000-10-06 Nec Kofu Ltd プロセス管理方式
JP2003303134A (ja) * 2001-03-22 2003-10-24 Sony Computer Entertainment Inc コンピュータ処理システム及びコンピュータで実行される処理方法

Also Published As

Publication number Publication date
JP2005235228A (ja) 2005-09-02
WO2005081105A2 (en) 2005-09-01
WO2005081105A3 (en) 2006-08-10
DE602005014540D1 (de) 2009-07-02
EP1716486A2 (en) 2006-11-02
US20050188373A1 (en) 2005-08-25
US7614053B2 (en) 2009-11-03
ATE431943T1 (de) 2009-06-15
WO2005081105B1 (en) 2006-09-28
EP1716486B1 (en) 2009-05-20
TW200612342A (en) 2006-04-16

Similar Documents

Publication Publication Date Title
JP4526412B2 (ja) マルチプロセッサシステムにおけるタスク管理方法および装置
US7565653B2 (en) Methods and apparatus for processor task migration in a multi-processor system
US8028292B2 (en) Processor task migration over a network in a multi-processor system
US7653908B2 (en) Grouping processors and assigning shared memory space to a group in a heterogeneous computer environment
US7137116B2 (en) Method and system for performing a task on a computer
US7921151B2 (en) Managing a plurality of processors as devices
JP4410795B2 (ja) 共有リソースの同時アクセス
US7478390B2 (en) Task queue management of virtual devices using a plurality of processors
US7373640B1 (en) Technique for dynamically restricting thread concurrency without rewriting thread code
US8549521B2 (en) Virtual devices using a plurality of processors
US10402223B1 (en) Scheduling hardware resources for offloading functions in a heterogeneous computing system
JP4364202B2 (ja) データ処理方法およびデータ処理システム
JP2005166056A (ja) マルチタスク処理方法および装置
CN107463442B (zh) 一种星载多核SoC任务级负载均衡并行调度方法
JP4183712B2 (ja) マルチプロセッサシステムにおいてプロセッサタスクを移動するデータ処理方法、システムおよび装置
JP2007052511A (ja) スケジューリング方法およびスケジューリング装置
US20140068625A1 (en) Data processing systems
JP2005322240A (ja) インデックス付きレジスタアクセス用の方法および装置
JP2021060707A (ja) 同期制御システムおよび同期制御方法
US11860785B2 (en) Method and system for efficient communication and command system for deferred operation
US20240111578A1 (en) Hierarchical work scheduling

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080404

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091228

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100430

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100510

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

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

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

Free format text: PAYMENT UNTIL: 20130611

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees