JP2006216058A - Data processing method, system and apparatus for moving processor tasks in multiprocessor system - Google Patents
Data processing method, system and apparatus for moving processor tasks in multiprocessor system Download PDFInfo
- Publication number
- JP2006216058A JP2006216058A JP2006027686A JP2006027686A JP2006216058A JP 2006216058 A JP2006216058 A JP 2006216058A JP 2006027686 A JP2006027686 A JP 2006027686A JP 2006027686 A JP2006027686 A JP 2006027686A JP 2006216058 A JP2006216058 A JP 2006216058A
- Authority
- JP
- Japan
- Prior art keywords
- task
- multiprocessor
- application
- tasks
- data processing
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5033—Allocation 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 data affinity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5038—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/502—Proximity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
Abstract
Description
本発明は、ネットワークを介して分散されたマルチプロセッサシステムにおけるプロセッサタスクの管理方法および装置に関し、より詳細には、実質的に自己管理的に(self-governing)マルチプロセッサシステムのサブ処理ユニット間でネットワークを介してプロセッサタスクをスケジューリングして実行する方法および装置に関する。 The present invention relates to a method and apparatus for managing processor tasks in a multiprocessor system distributed over a network, and more particularly, between sub-processing units of a multiprocessor system substantially self-governing. The present invention relates to a method and apparatus for scheduling and executing processor tasks via a network.
本出願は、2004年2月20日に出願された米国一部継続特許出願第10/783,246号および第10/783,238号に関連し、2005年2月4日に出願された米国仮出願第60/650,153号に関連する。 This application is related to U.S. continuation patent applications 10 / 783,246 and 10 / 783,238, filed February 20, 2004, and filed on Feb. 4, 2005. Related to provisional application 60 / 650,153.
リアルタイムでマルチメディアのアプリケーションは、ますます重要になっている。これらのアプリケーションは、一秒当たり何千メガビットのデータといった極めて速い処理速度を必要とする。単一の処理ユニットでも高速の処理速度を実現できるが、一般にマルチプロセッサアーキテクチャの処理速度と一致することはできない。実際、マルチプロセッサシステムにおいては、複数のサブプロセッサが並行に(または、少なくとも協調して)動作して所望の処理結果を得ることができる。 Real-time multimedia applications are becoming increasingly important. These applications require extremely fast processing speeds, such as thousands of megabits of data per second. A single processing unit can achieve a high processing speed, but generally cannot match the processing speed of a multiprocessor architecture. In fact, in a multiprocessor system, a plurality of sub-processors can operate in parallel (or at least in cooperation) to obtain a desired processing result.
また、マルチプロセッサアーキテクチャは有用であるが、スケーラビリティは限定的である。より大きな効率は、ネットワークを介して複数のマルチプロセッサシステムをグループ化することによって実現することができ、各マルチプロセッサシステムが単独で動作するときの速度を超える速度で分散処理が実行される。 Multiprocessor architectures are also useful, but scalability is limited. Greater efficiency can be achieved by grouping multiple multiprocessor systems over a network, and distributed processing is performed at a rate that exceeds the rate at which each multiprocessor system operates alone.
マルチプロセッサ技術を使用することができるコンピュータおよびコンピューティングデバイスのタイプは、広範囲に及ぶ。コンピューティングデバイスには、パーソナルコンピュータ(PC)やサーバの他、携帯電話、モバイルコンピュータ、個人携帯情報機器(PDA)、セットトップボックス、デジタルテレビのほか多数が含まれる。 The types of computers and computing devices that can use multiprocessor technology are extensive. In addition to personal computers (PCs) and servers, computing devices include mobile phones, mobile computers, personal digital assistants (PDAs), set-top boxes, digital televisions, and many others.
リアルタイムでマルチメディアのソフトウェアアプリケーションは、処理命令や処理データなどの処理コードから構成される。処理命令および/または処理データの少なくとも一部の集合を、プロセッサタスクと呼ぶこともできる。あるプロセッサタスク内のプログラム文を順番に実行することもできるし、別のプロセッサタスクをマルチプロセッサシステム内の異なるプロセッサで並列にて実行することもできるし、あるいは、ネットワーク上の異なるマルチプロセッサシステム間に分散させることもできる。このように、ソフトウェアアプリケーションは、マルチプロセッサシステムによって実行されるプロセッサタスクを含むと考えることができる。 Real-time multimedia software applications are composed of processing codes such as processing instructions and processing data. A collection of at least a portion of processing instructions and / or processing data can also be referred to as a processor task. Program statements in one processor task can be executed sequentially, another processor task can be executed in parallel on different processors in a multiprocessor system, or between different multiprocessor systems on a network It can also be dispersed. Thus, a software application can be considered to include a processor task that is executed by a multiprocessor system.
マルチプロセッサシステムの設計懸念は、システムのいずれのサブ処理ユニットでいずれのプロセッサタスクを実行させるかを管理する方法であり、また、ネットワーク上のマルチプロセッサシステム間でのプロセッサタスクの分散を管理する方法である。マルチプロセッサシステムのなかには、いずれのサブ処理ユニットのプロセッサタスクが実行されるかを、プロセッサタスクが指定するものがある。この方法の欠点は、サブ処理ユニットの間でのプロセッサタスクの配分をプログラマが最適化することができないという点である。例えば、一つまたは複数のプロセッサタスクが、同時に同一のサブ処理ユニットを指定することがあり得る。これは、指定されたサブ処理ユニットが利用可能になるまで、プロセッサタスクの一部が保留されることを意味し、そのためプロセッサタスクの実行が遅延される。残念なことに、これはプロセッサタスクの実行について予測不可能なレイテンシを引き起こす。 A design concern for multiprocessor systems is how to manage which processor tasks are executed on which sub-processing units of the system, and how to manage the distribution of processor tasks among multiprocessor systems on a network It is. In some multiprocessor systems, a processor task designates which sub-processing unit's processor task is executed. The disadvantage of this method is that the programmer cannot optimize the distribution of processor tasks among the sub-processing units. For example, one or more processor tasks may specify the same sub-processing unit at the same time. This means that part of the processor task is suspended until the designated sub-processing unit is available, so that execution of the processor task is delayed. Unfortunately, this causes unpredictable latency for processor task execution.
他のシステムでは、管理要素がサブ処理ユニットと通信し、ユニット間のプロセッサタスクをスケジュールすることを検討する。したがって、このような通信を容易にするように通信プロトコルが実施されていなければならない。残念なことに、通信プロトコルは、管理要素とサブ処理ユニットの間のメッセージ遅延を引き起こすことが多い。実際、この種のプロトコルは、メモリマッピングされたレジスタを使用して、メモリマッピングされたI/O空間の使用が必要となり、これは一般的に低速である。さらに、システムのプロセッサ自身であってもよい管理要素が多数の分割領域を使用し、これは変更にかなりの時間(例えば、700マイクロ秒)を必要としうる。これらの特徴もまた、プロセッサタスクの実行を遅延させて予測不可能なレイテンシを引き起こす。このように、マルチプロセッサシステムのプロセッサ全体のスループットと効率が犠牲になり、システムのユーザのリアルタイムおよび/またはマルチメディア体験に重大な影響を与えうる。 In other systems, consider that the management element communicates with the sub-processing units and schedules processor tasks between the units. Therefore, a communication protocol must be implemented to facilitate such communication. Unfortunately, communication protocols often cause message delays between management elements and sub-processing units. In fact, this type of protocol requires the use of memory mapped I / O space using memory mapped registers, which is generally slow. In addition, a management element, which may be the system's processor itself, uses a large number of split regions, which can require a significant amount of time (eg, 700 microseconds) to change. These features also delay the execution of processor tasks and cause unpredictable latencies. In this way, the overall processor throughput and efficiency of the multiprocessor system is sacrificed and can have a significant impact on the real-time and / or multimedia experience of the user of the system.
したがって、当技術分野において、ネットワーク上のマルチプロセッサシステム間でプロセッサタスクの効率的な分散処理を実現する新規な方法および装置が必要とされている。 Accordingly, there is a need in the art for a new method and apparatus that implements efficient distributed processing of processor tasks among multiprocessor systems on a network.
本発明の一態様による、インターネット等のネットワークを介して第1のマルチプロセッサシステムから第2のマルチプロセッサシステムにタスクを移動するための方法およびシステムが提供される。 A method and system for moving tasks from a first multiprocessor system to a second multiprocessor system over a network, such as the Internet, in accordance with an aspect of the present invention is provided.
本方法の一態様によると、様々な理由のうち任意の理由のために、少なくとも一つのマルチプロセッサからタスクを移動すべきか否かをマルチプロセッサが決定する。マルチプロセッサがタスクを別のマルチプロセッサに移動すべきと決定すると、第1のマルチプロセッサシステムからアプリケーションをブロードキャストする。アプリケーションは、複数のタスクと一つの属性とを指定する。属性は、アプリケーションをブロードキャストした前段のマルチプロセッサ、もしくは初めにアプリケーションをブロードキャストしたマルチプロセッサ、のうち少なくとも一つからのアプリケーションの距離と、複数のタスクのそれぞれを終了するためのデッドラインと、を表している。 According to one aspect of the method, the multiprocessor determines whether to move a task from at least one multiprocessor for any of a variety of reasons. When the multiprocessor decides to move the task to another multiprocessor, it broadcasts the application from the first multiprocessor system. The application specifies a plurality of tasks and one attribute. The attribute represents the distance of the application from at least one of the previous multiprocessor that broadcast the application or the multiprocessor that first broadcast the application, and a deadline for ending each of the tasks. ing.
本発明の別の態様によると、属性は、タスクの実行に必要な処理能力を指定する。さらに、同一の属性または別の属性が、タスクの実行に必要なメモリを指定してもよい。アプリケーションは、自身が複数のタスクを保有することによって、またはタスクの位置する場所を示すポインタ情報を使用して、複数のタスクを指定することができる。 According to another aspect of the invention, the attribute specifies the processing power required to perform the task. Furthermore, the same attribute or another attribute may specify the memory required to execute the task. An application can specify a plurality of tasks by owning a plurality of tasks or by using pointer information indicating a position where the task is located.
本発明の別の態様によると、第1のマルチプロセッサシステムからブロードキャストされたアプリケーションは、ネットワークに接続された第2のマルチプロセッサで受け取られる。第2のマルチプロセッサは、移動されるべきタスクを含むアプリケーション内のタスクをばらす(unbundle)。第2のマルチプロセッサは、タスクを実行するための要件を指定する属性を調査して、当該タスクを第2のマルチプロセッサで実行すべきか否かを判定する。第2のマルチプロセッサは、必要な処理能力および必要なメモリを検査してもよい。 According to another aspect of the invention, an application broadcast from a first multiprocessor system is received by a second multiprocessor connected to the network. The second multiprocessor unbundles the tasks in the application that includes the task to be moved. The second multiprocessor examines an attribute that specifies a requirement for executing the task and determines whether the task should be executed by the second multiprocessor. The second multiprocessor may check the required processing power and the required memory.
本発明の別の態様によると、第2のマルチプロセッサもまた、アプリケーションをブロードキャストした前段のマルチプロセッサ、もしくは初めにアプリケーションをブロードキャストしたマルチプロセッサ、のうち少なくとも一つからのアプリケーションの距離を調べて、当該タスクを第2のマルチプロセッサシステムで実行すべきか否かを決定する。第2のマルチプロセッサは、第2のマルチプロセッサがタスクを実行しているか否かを第1のマルチプロセッサに連絡するのが好ましい。なお、ここでいう「距離」には時間的な距離と空間的な距離の両方が含まれ、より具体的にはレイテンシやアプリケーション間の帯域などがある。 According to another aspect of the invention, the second multiprocessor also examines the distance of the application from at least one of the previous multiprocessor that broadcast the application or the multiprocessor that originally broadcast the application, It is determined whether or not the task should be executed on the second multiprocessor system. The second multiprocessor preferably communicates to the first multiprocessor whether the second multiprocessor is performing a task. The “distance” here includes both a temporal distance and a spatial distance, and more specifically includes a latency, a band between applications, and the like.
本発明の別の態様によると、ブロードキャストされたアプリケーションは複数の他のマルチプロセッサによって受け取られる。複数の他のマルチプロセッサは、それぞれアプリケーションに含まれる移動されるべきタスク(単数または複数)をばらす。複数の他のマルチプロセッサは、それぞれ、タスクを実行するための要件を指定する属性を調査して、当該タスクを実行すべきか否かを決定する。好適には、複数の他のマルチプロセッサのそれぞれは、アプリケーションをブロードキャストした前段のマルチプロセッサ、もしくは初めにアプリケーションをブロードキャストしたマルチプロセッサ、のうち少なくとも一つからのアプリケーションの距離と、複数のタスクのそれぞれを終了するためのデッドラインと、を調査して、当該タスクを実行すべきか否かを決定する。 According to another aspect of the invention, the broadcast application is received by a plurality of other multiprocessors. Multiple other multiprocessors each distribute the task (s) to be moved included in the application. Each of the other multiprocessors examines an attribute that specifies a requirement for executing the task and determines whether or not the task should be executed. Preferably, each of the plurality of other multiprocessors includes a distance of the application from at least one of the preceding multiprocessor that broadcasts the application or the multiprocessor that initially broadcast the application, and each of the plurality of tasks. The deadline for ending the task is examined to determine whether or not the task should be executed.
本発明のさらに別の態様によると、タスクを移動するための装置が提供される。この装置は、ネットワークに接続可能なマルチプロセッサであって、該マルチプロセッサによってタスクを実行すべきか、またはネットワークに接続された少なくとも一つのマルチプロセッサに移動すべきかを決定するようにプログラムされたマルチプロセッサを含む。このマルチプロセッサは、少なくとも一つのマルチプロセッサにタスクを移動すべきと決定されたとき、ネットワークを介して当該マルチプロセッサからアプリケーションをブロードキャストするよう指示する。アプリケーションは複数のタスクと一つの属性とを指定し、この属性は、アプリケーションをブロードキャストした前段のマルチプロセッサ、もしくは初めにアプリケーションをブロードキャストしたマルチプロセッサ、のうち少なくとも一つからのアプリケーションの距離と、複数のタスクのそれぞれを終了するためのデッドラインと、を表示する。 According to yet another aspect of the invention, an apparatus for moving a task is provided. The apparatus is a multiprocessor connectable to a network and programmed to determine whether the multiprocessor should perform a task or move to at least one multiprocessor connected to the network including. When it is determined that the task should be moved to at least one multiprocessor, the multiprocessor instructs the multiprocessor to broadcast the application via the network. The application specifies a plurality of tasks and one attribute, and this attribute indicates the distance of the application from at least one of the preceding multiprocessor that broadcast the application or the multiprocessor that first broadcast the application, and the plurality of attributes. And a deadline for ending each of the tasks.
本発明の他の態様、特徴および利点は、添付の図面とともになされる本明細書の説明から当業者にとって明らかとなろう。 Other aspects, features and advantages of the present invention will become apparent to those skilled in the art from the present description taken together with the accompanying drawings.
説明のために、現時点で好適である形態が図面に示されるが、本発明は図示の正確な構成および手段に限定されないことを理解されよう。 For the purposes of explanation, the presently preferred form is shown in the drawings, but it will be understood that the invention is not limited to the precise arrangements and instrumentalities shown.
同様の符号が同様の要素を示す図面を参照して、図1は、本発明の一つまたは複数の態様によるマルチプロセッサシステム100を示す。マルチプロセッサシステム100は、バス108を介して、DRAMなどの共有メモリ106に連結される複数のプロセッサ102(任意の数を使用可能である)を備える。共有メモリ106はDRAMでなくてもよい点に注意する。実際、共有メモリは任意の既知の技術または今後開発される技術を用いて形成することができる。
Referring to the drawings, wherein like numerals indicate like elements, FIG. 1 illustrates a
プロセッサ102のうちの一台は、例えば処理ユニット102Aである主処理ユニットであることが好ましい。他の処理ユニット102は、サブ処理ユニット(SPU)、例えば処理ユニット102B、102C、102Dなどであることが好ましい。サブ処理ユニット102は、既知のまたは今後開発されるコンピュータアーキテクチャのうち任意のものを使用して実現可能なものであってよい。サブ処理ユニット102の全てが同一のアーキテクチャを使用して実現される必要はなく、実際、それらは異種または同種の構成のいずれであってもよい。主処理ユニット102Aは、サブ処理ユニット102B〜102Dに対してローカルに、例えば、同一チップ、同一のパッケージ、同一の回路基盤、同一の製品に位置してもよいことに注意する。代替的に、主処理ユニット102Aは、サブ処理ユニット102B〜102Dに対してリモートに、例えば、バスやインターネットのような通信ネットワークなどを介して接続可能な異なる製品に位置してもよい。同様に、サブ処理ユニット102B〜102Dは、互いにローカルにまたはリモートに位置してもよい。
One of the
主処理ユニット102Aを使用してサブ処理ユニット102B〜102Dによるデータおよびアプリケーションの処理をスケジューリングし調整する(orchestrate)ことで、サブ処理ユニット102B〜102Dは、並列に独立してこれらのデータおよびアプリケーションの処理を実行する。しかしながら、本発明の一部の態様によれば、主処理ユニット102Aは、サブ処理ユニットの間のプロセッサタスクの実行をスケジューリングする中心的な役割を果たさない。むしろ、そのようなスケジューリングは、SPU自身に任されることが好ましい。
By using the
図1のプロセッサ102に対する役割および機能の割り当ては柔軟的である。例えば、プロセッサ102のいずれもが主処理ユニットまたはサブ処理ユニットであってよい。
The assignment of roles and functions to the
図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それぞれにおけるデータ同期に関するルールを設定することもできる。
Referring to FIG. 2,
本発明の一つまたは複数のさらなる態様によれば、共有メモリ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号に見いだすことができ、その全ての開示は参照により本明細書に援用される。
In accordance with one or more further aspects of the present invention, only a defined number of
本発明の一つまたは複数の態様によると、プロセッサタスク110が共有メモリ106内に配置され、サブ処理ユニット102がタスクの実行を割り当てられた後、主処理ユニット102Aは、プロセッサタスク110の実行のスケジューリングおよび管理に参加しないことが好ましい。代わりに、それらの責任は関係する特定のサブ処理ユニット102に任される。
In accordance with one or more aspects of the present invention, after the
本発明の様々な実施形態のプロセッサタスク管理特徴に関してさらに詳細を述べる前に、マルチプロセッサシステムを実装するための好適なコンピュータ・アーキテクチャについて説明する。この点に関して、図3の基本処理モジュールまたはプロセッサ要素(processor element:PE)200のブロック図を参照する。このコンピュータアーキテクチャによると、マルチプロセッサシステムの全てのサブプロセッサは、共通のコンピューティングモジュール(またはセル)から構成される。この共通のコンピューティングモジュールは、一貫した構造を有し、好ましくは同一の命令セットアーキテクチャを使用する。本発明の別の実施形態では、サブ処理ユニットは異種の構成であってもよい。マルチプロセッサシステムは、一つまたは複数のクライアント、サーバ、PC、モバイルコンピュータ、ゲーム機、PDA、セットトップボックス、機器、デジタルテレビ、およびコンピュータプロセッサを使用する他の装置から形成することができる。 Before describing further details regarding the processor task management features of the various embodiments of the present invention, a preferred computer architecture for implementing a multiprocessor system will be described. In this regard, reference is made to the block diagram of the basic processing module or processor element (PE) 200 of FIG. According to this computer architecture, all sub-processors of a multiprocessor system are composed of a common computing module (or cell). This common computing module has a consistent structure and preferably uses the same instruction set architecture. In another embodiment of the invention, the sub-processing units may have different configurations. A multiprocessor system can be formed from one or more clients, servers, PCs, mobile computers, game consoles, PDAs, set-top boxes, devices, digital televisions, and other devices that use computer processors.
基本処理モジュールは、プロセッサ要素(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は、例えば、従来のアーキテクチャを有することができ、またはパケットスイッチネットワークとして実現することもできる。パケットスイッチネットワークとして実現すると、より多くのハードウェアを必要とするが、利用可能な帯域幅を増加することができる。
The basic processing module is a processor element (PE). As shown in FIG. 3, the
PE200は、デジタルロジックを実装する様々な方法を使用して構成されることができる。しかしながら、PE200は、シリコン基板上の相補型金属酸化膜半導体(CMOS)を使用する単一の集積回路として構成されることが好ましい。基板の代替的材料はガリウム・ヒ素、ガリウム・アルミニウム・ヒ素および多様なドーパントを使用するいわゆるIII−B合成物を含む。PE200は、超電導材料、例えば高速単一磁束量子(RSFQ)論理回路を使用して実現することもできる。
The
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のうち一つにより実現されてもよいことに注意する。
For example,
このモジュール構造にしたがって、特定のコンピュータシステムによって使用されるPE200の数は、そのシステムによって必要とされる処理能力に基づいて決まる。例えば、サーバは4つのPE200を使用することができ、ワークステーションは二つのPE200を使用することができ、PDAは一つのPE200を使用することができる。特定のアプリケーションを処理すべく割り当てられるPE200のサブ処理ユニットの数は、セル内のプログラムおよびデータの複雑さおよび大きさによって決まる。
According to this modular structure, the number of
図4は、サブ処理ユニット208の好適な構造および機能を示す。サブ処理ユニット208は、ローカルメモリ250、レジスタ252、一つまたは複数の浮動小数点ユニット254、および一つまたは複数の整数ユニット256を備える。しかしながら、必要とされる処理能力によって、より多数のまたはより少数の浮動小数点ユニット254および整数ユニット256を使用してもよい。浮動小数点ユニット254は、好ましくは一秒につき320億回の浮動小数点演算(32GFLOPS)をする速度で動作し、整数ユニット256は、好ましくは一秒につき320億回の演算(32GOPS)をする速度で動作する。
FIG. 4 shows the preferred structure and function of the
好ましい実施形態では、ローカルメモリ250は256キロバイトの記憶装置を含み、レジスタ252の容量は128×128ビットである。プロセッサタスク110が共有メモリ214を使用して実行されない点に注意する。むしろ、タスク110は、所与のサブ処理ユニット208のローカルメモリ250にコピーされ、ローカルに実行される。
In the preferred embodiment,
ローカルメモリ250は、キャッシュメモリであってもキャッシュメモリでなくてもよい。好ましくは、ローカルメモリ250はスタティック・ランダム・アクセス・メモリ(SRAM)として構成される。PU204は、PU204により起動されるダイレクトメモリアクセスのために、キャッシュ整合性サポートを必要としてよい。しかしながら、キャッシュ整合性サポートは、サブ処理ユニット208によって起動されるダイレクトメモリアクセス、または、外部装置との間でのアクセスについては、不要である。
The
サブ処理ユニット208は、サブ処理ユニット208との間でデータおよびアプリケーションを送受信するためのバスインタフェース(I/F)258をさらに含む。好ましい実施形態では、バスI/F258はDMAC206に連結される。DMAC206は、サブ処理ユニット208内に一体的に配置することもでき、あるいは外部に配置することもできることを示すよう、図3では点線で描かれている。一対のバス268A、268Bは、バスI/F258とローカルメモリ250の間でDMAC206を相互接続する。バス268A、268Bは、好ましくは256ビット長である。
The
サブ処理ユニット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参照)の一つに関連付けられるのが好ましい。
Returning to the various processor task management features of the present invention and referring to FIG. 2, to determine which
好ましい実施形態では、各タスクテーブルエントリは、ステータス表示(STAT)、優先度表示(PRI)、および一対のポインタ(PREV、NEXT)のうちの少なくとも一つを含んでもよい。STATは、所与のタスクテーブルエントリに関連付けられるプロセッサタスクが、一つまたは複数のサブ処理ユニットによって実行される準備ができている(READY)か、または実行中(RUNNING)であるかについての表示を提供することが好ましい。PRIは、関連するプロセッサタスク110の優先度についての表示を提供することが好ましい。プロセッサタスク110と関連付けられる優先度は任意の数であってよく、これは、ソフトウェアプログラマが設定してもよいし、または、ソフトウェアアプリケーションの実行によって後で設定することもできる。いずれにしても、プロセッサタスク110の優先度は、プロセッサタスクが実行される順序を設定するために利用されることができる。PREV値は、リンク付けされたタスクテーブルエントリの順序付きリスト(または、プロセッサタスクのリスト)において、前のタスクテーブルエントリ(または、前のプロセッサタスク110)へのポインタであることが好ましい。NEXT値は、リンク付けされたタスクテーブルエントリの順序付きリスト(または、プロセッサタスクのリスト)において、次のタスクテーブルエントリ(またはプロセッサタスク)へのポインタであることが好ましい。
In a preferred embodiment, each task table entry may include at least one of a status indication (STAT), a priority indication (PRI), and a pair of pointers (PREV, NEXT). STAT is an indication of whether the processor task associated with a given task table entry is ready (READY) or running (RUNNING) for execution by one or more sub-processing units Is preferably provided. The PRI preferably provides an indication of the priority of the associated
本発明の一つまたは複数の態様によると、タスクテーブル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値を含む。
According to one or more aspects of the present invention, task table 280 is preferably utilized by
図6を参照して、上記例のタスクテーブルエントリのリンク付きリストは、状態図として概念的に示すことができる。この状態図において、タスクテーブルエントリT1に関連付けられる特定のプロセッサタスクからの遷移が、タスクテーブルエントリT8に関連付けられている別のプロセッサタスクの選択および実行を引き起こす。タスクテーブルエントリT8に関連付けられるプロセッサタスクからの遷移が、タスクテーブルエントリT6に関連付けられるプロセッサタスクの選択および実行を引き起こし、以下同様である。第1の、または先頭のタスクテーブルエントリT1が、タスクテーブルエントリT9をポイントするPREV値を含むことを保証し、また、タスクテーブルエントリT9がタスクテーブルエントリT1をポイントするNEXT値を含むことを保証することによって、タスクテーブルエントリ(および/またはプロセッサタスク自身)の循環的な関連を達成することができる。 With reference to FIG. 6, the linked list of task table entries in the above example can be conceptualized as a state diagram. In this state diagram, a transition from a particular processor task associated with task table entry T1 causes the selection and execution of another processor task associated with task table entry T8. The transition from the processor task associated with task table entry T8 causes selection and execution of the processor task associated with task table entry T6, and so on. Guarantees that the first or first task table entry T1 contains a PREV value that points to task table entry T9, and that the task table entry T9 contains a NEXT value that points to task table entry T1 By doing so, a circular association of task table entries (and / or the processor task itself) can be achieved.
動作中、共有メモリ106のプロセッサタスク110(好ましくは所与の領域106Aまたは106B内の)のプールを実行するために割り当てられるそれぞれのサブ処理ユニット102は、いずれのプロセッサタスク110が実行のために次に占有されるかを判定するために、まず、タスクテーブル280にアクセスする。リンク付きリストの最初のまたは先頭のエントリの特定に役立てるために、サブ処理ユニット102は、図7に概念的に示すタスクキュー282へのアクセスを有することが好ましい。タスクキュー282は、関連するプロセッサタスク110それぞれの優先度のためのエントリを含むことが好ましい。各エントリは、HEADポインタおよびTAILポインタのうちの少なくとも一つを含むことが好ましい。
In operation, each
図6をさらに参照して、例示的なリンク付きリストの状態図は、優先度1を有するプロセッサタスク110を表している。実際、エントリT1、T8、T6およびT9のタスクテーブルエントリ(図5)は、それぞれ「1」のPRI値を含む。
Still referring to FIG. 6, an exemplary linked list state diagram represents a
優先度1と関連するタスクキューエントリのHEADポインタとTAILポインタは、それぞれ、タスクテーブルエントリT1とタスクテーブルエントリT9へのポインタを含む。タスクキュー282の他のエントリは、他のリンク付きリスト用の他の優先度のHEADポインタおよびTAILポインタと関連付けられる。このように、本発明の様々な実施形態は、(拡張プロセッサタスクによって)タスクテーブルエントリの多数のリンク付きリストを含むことができ、各リンク付きリストは同一のまたは少なくとも類似の優先度を含むことを考慮する。それぞれのサブ処理ユニット102は、タスクテーブル280とタスクキュー282を利用して、いずれのプロセッサタスク110が、実行のために共有メモリ106からコピーされるべきかについて決定することが好ましい。それぞれのリンク付きリストが作成され適切に維持されると仮定すると、ソフトウェア・アプリケーション全体の実行時に所望の結果を達成するために、プロセッサタスク110は適切な順序で実行されることができる。
The HEAD pointer and TAIL pointer of the task queue entry associated with
本発明の様々な態様によると、サブ処理ユニット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をポイントするように修正されてもよい。
According to various aspects of the invention,
本発明の好ましい態様によると、SPU102は、タスクテーブルエントリT1のSTAT値をREADYからRUNNINGに修正することが好ましい(図9のアクション310)。アクション312として、次のタスクを呼び出すためにSPU102がコール(アクション300)された時点で、SPU102が前のタスクを実行しているかに関しての判定がなされることが好ましい。SPU102上で動作中の前のタスクが他のタスクに譲るとき、これが生じてもよい。本実施例のために、前のタスクが次のプロセッサタスク110に実行権を譲渡(yield to)せず、さらに、アクション312における判定の結果が否定であったと仮定する。したがって、プロセスフローは好ましくはアクション318へ進む。ここで、SPU102は、修正されたタスクキュー282と修正されたタスク・テーブル280を共有メモリ106に書き戻す。この時点で、タスクテーブル280とタスクキュー282は更新され、他のサブ処理ユニット102によってコピーおよび修正されてもよいように、好ましい同期化技術にしたがってロックが解除される。
According to a preferred aspect of the present invention,
前のプロセッサタスク110が次のプロセッサタスクに実行権を譲渡したときのように、アクション312における判定結果が肯定である場合、プロセスフローは好ましくはアクション314へ進む。そこで、SPUは、好ましくは、実行権を譲渡するプロセッサタスクに関連付けられているタスクテーブルエントリのSTAT値を、RUNNINGからREADYに修正する。さらに、SPUは、実行権を譲渡するプロセッサタスクを適当なリンク付きリストに再導入(reintroduce)するために、実行権を譲渡するプロセッサタスクに関連するタスクテーブルエントリを含む様々なタスクテーブルエントリのPREVポインタとNEXTポインタを修正してもよい。好ましくは、関連するタスクテーブルエントリのPRI値に反映されるように、実行権を譲渡するプロセッサタスク110の優先度を参照することによって、これが達成される。アクション316で、プロセッサタスクが後に占有されてもよいように、実行権を譲渡するプロセッサタスクが共有メモリ106に書き込まれてもよい。その後、プロセスフローはアクション318へ進む。そこで、タスクキュー282とタスクテーブル280は、共有メモリ106に書き戻される。
If the determination at
アクション320(図10)で、次のプロセッサタスク110(例えば、タスクテーブルエントリT8に関連するプロセッサタスク)は、サブ処理ユニット102によって共有メモリ106から自身のローカルメモリにコピーされる。アクション322で、サブ処理ユニット102は、新たなプロセッサタスク110の実行に使用するため、(例えば、新たなプロセッサタスクと関連する任意のデータを有する)自身のレジスタを復元および/または更新することが好ましい。最後に、アクション324で、新たなプロセッサタスク110は、サブ処理ユニット102によって実行される。
At action 320 (FIG. 10), the next processor task 110 (eg, the processor task associated with task table entry T8) is copied by the
上記アクションは例示を目的としてのみ示されており、当業者は、本発明の趣旨および範囲から逸脱することなくこれらのアクションの順序を修正可能であることを理解するであろう。例えば、後述するように、プロセッサタスクが共有メモリからコピーされ共有メモリに書き戻される順序、および、タスクテーブルとタスクキュー282が利用される順序は、望ましい結果を達成するために修正可能である。
The above actions are shown for illustrative purposes only, and those skilled in the art will appreciate that the order of these actions can be modified without departing from the spirit and scope of the present invention. For example, as described below, the order in which processor tasks are copied from shared memory and written back to shared memory, and the order in which task tables and
上述のように、主処理ユニット102Aは、プロセッサタスク110の実行および管理がサブ処理ユニット102によって対処可能となる状態にシステムを準備するために、システムの初期段階の間に利用されることが好ましい。サブ処理ユニット102も、第1インスタンスでタスクテーブル280とタスクキュー282を作成するために、初期化ルーチンを実行することが好ましい。これらの初期化プロセスを、図11のフロー図に示す。
As described above, the
アクション350で、サービスプロセッサ(例えば、主処理ユニット102)は、システム上で実行されるソフトウェアアプリケーションを評価して、プロセッサタスク110を実行する複数のサブ処理ユニット102を割り当てる。プロセスフローは、好ましくはアクション352へ進み、そこで、サービスプロセッサがソフトウェアアプリケーションを評価して、プロセッサタスク110を受け取るために共有メモリ106の一つまたは複数の部分を割り当てる。アクション354で、アクション352で実行された任意のメモリ・アロケーションにしたがって、プロセッサタスク110が共有メモリ106にロードされる。初期化プロセスのこの段階においては、サービスプロセッサは、メンテナンスおよび/またはサブ処理ユニット102の間でのプロセッサタスクの配分に関与していないことが好ましい。
At
プロセスフローは、好ましくはアクション356へ進む。そこで、サブ処理ユニット102は互いを初期化し、いずれのSPUが第1インスタンスにおいてタスクテーブル280とタスクキュー282を準備するかを決定する。アクション358で、タスクテーブル280とタスクキュー282を作成する責任を有したサブ処理ユニット102は、この種の情報を準備して、同じものを共有メモリ106に格納する。例えば、タスクテーブル280とタスクキュー282の初期化は、好ましくは、各SPUカーネルに最初のタスクを実行させることによって行われることが好ましい。以下に示すプログラム「init.c」は、各SPUによって実行される最初のタスクの好適な実施例である。
#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;
}
Process flow preferably proceeds to
#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カーネルは次のタスクの検索を開始する。 In this program, “melchior”, “balthasar” and “caspar” are very early task names, which are typical startup tasks. All of the SPU kernels execute this initial task init.c. However, only one SPU (SPU having ID0) executes these tasks specified by the code line of if (spurs_get_spu_id () == 0). All other SPUs, for example all SPUs with different IDs, wait in spurs_end_init (). Thus, each SPU kernel executes the first task, and after this first task is finished, the SPU kernel begins searching for the next task as described herein.
上述のように、サービス・プロセッサとして動作する主処理ユニット102は、一つまたは複数のプロセッサタスク110をグループとして指定してもよいことに注意する。これは、初期化段階の間に実行されることが好ましい。例えば、二つ以上のプロセッサタスク110が互いに緊密に通信する必要があってもよく、したがって、それらがタスクグループ内でグループ化されている場合、プロセッサタスクをより効率的に実行することができる。暗号化プログラムは、プロセッサタスクが一つ以上のタスクグループに形成されている場合、緊密に通信しより効率的に実行されるプロセッサタスクを含むことができるアプリケーションの一例である。
As noted above, it should be noted that the
本発明のプロセッサタスク管理の特徴を利用して、主処理ユニット102Aが、特定のサブ処理ユニット102またはサブ処理ユニット102のグループのデバイスドライバをオフロード(off-load)するのを助けることができる。例えば、ギガビットイーサネットハンドラ(イーサネットは登録商標)のようなネットワークインタフェースは、CPUパワーの80%まで利用することができる。ネットワークインタフェースが主処理ユニット102Aによってのみ実行される場合、主処理ユニットは102Aは、他のサービス指向の処理タスクをするために利用することができない。したがって、主処理ユニットが102Aが、一つまたは複数のサブ処理ユニット102にネットワークインタフェースプログラムをオフロードすることは、有益でありえる。主処理ユニット102Aは、ネットワークインタフェースの処理タスクを共有メモリ106に配置し、これを実行する一つまたは複数のサブ処理ユニット102を割り当てることによって、この結果を達成してもよい。それに応じて、SPUは、そのようなプロセッサタスクの実行を管理しスケジューリングするのに適したタスクテーブル280とタスクキュー282を形成してもよい。したがって、有利なことには、主処理ユニット102Aは、より多くのCPUパワーを他のタスクの実行に充てることができる。主処理ユニット102Aは、また、例えばデジタルテレビデバイスドライバなどの他のデバイスドライバをオフロードしてもよい。SPUにオフロードさせるための好ましい候補である他のデバイスドライバは、重いプロトコルスタックを有するものである。例えば、HDDレコーダなどのリアルタイム高速アクセスデバイス用のドライバは、オフロードされると有利である。オフロードされてもよいタスクの他の実施例には、仮想プライベートネットワークおよびIP(例えばVoIP)アプリケーションを介したマルチメディアに使用されるネットワークパケット暗号化/解読タスクが含まれる。
The processor task management features of the present invention can be used to help
図12を参照して、プロセッサタスクのステータスの状態図の一例を示す。タスク状態は、実行(RUNNING)状態、準備(READY)状態、ブロック(BLOCKED)状態、休止(DORMANT)状態、および不在(NON−EXISTENT)状態の5つのカテゴリに分類することができる。プロセッサタスクは、現在実行中であるときは、実行(RUNNING)状態にある。ある条件下では、プロセッサタスクは、例えば割り込みの間、タスクコンテクストがなくても、実行状態を維持することができる。プロセッサタスクは、タスクの実行の準備ができているが、より高い優先順位を有する一つまたは複数のプロセッサタスクが既に実行されており、またサブ処理ユニットがタスクの占有のために利用できないため、実行することができないときに、準備(READY)状態にある。準備状態のプロセッサタスクの優先度が共有メモリ106の準備状態タスクのプールの中で十分に高い場合、サブ処理ユニットはそのプロセッサタスクを占有しそれを実行してもよい。このように、タスクがディスパッチされる(dispatch)とき、プロセッサタスクの状態は準備状態から実行状態に変化してもよい。反対に、この種のタスクがプリエンプティブ実行(先取り)されるかまたはその実行の間に侵害される場合、実行状態のタスクは準備状態に変化してもよい。プロセッサタスクのプリエンプティブ実行の実施例は、一つのプロセッサタスクが別のタスクに実行権を譲渡することに関連して、既に述べた。
With reference to FIG. 12, an example of a state diagram of the status of the processor task is shown. Task states can be divided into five categories: run (RUNNING) state, ready (READY) state, block (BLOCKED) state, dormant (DORMANT) state, and absent (NON-EXISTENT) state. A processor task is in a running (RUNNING) state when it is currently running. Under certain conditions, a processor task can maintain an execution state, for example, during an interrupt, without a task context. The processor task is ready to execute the task, but one or more processor tasks with higher priority are already running and the sub-processing unit is not available due to task occupancy, When it cannot be executed, it is in a ready state. If the priority of a ready processor task is sufficiently high in the pool of ready tasks in shared
ブロック状態カテゴリは、待機(WAITING)状態、中断(SUSPENDED)状態、および待機中断(WAITING−SUSPENDED)状態を含んでもよい。タスクの実行を継続する前に特定の条件が満足されなければならないことを規定するサービスコールの呼び出しのために、タスクがブロックされるとき、プロセッサタスクは待機(WAITING)状態にある。このように、タスクの実行状態は、サービスコールの呼び出し時に待機状態に変化してもよい。待機状態のプロセッサタスクは、規定された条件が満足するとき準備状態に解放されてもよく、これによって、その後に、処理中のタスクがサブ処理ユニット102に占有されることが可能になる。タスクが強制的に停止される(タスクそれ自身が呼び出してもよい)とき、プロセッサタスクは実行状態から中断(SUSPENDED)状態に入ってもよい。同様に、準備状態のプロセッサタスクは、強制されたアクションによって中断状態に入ってもよい。このようなプロセッサタスクの強制的な停止が開放されるとき、中断状態のプロセッサタスクが再開され準備状態に入ってもよい。プロセッサタスクは、タスクが満足するべき条件を待機しておりまた強制的に中断させられているとき、待機中断(WAITING−SUSPENDED)状態にある。したがって、待機中断状態のプロセッサタスクは、プロセッサタスクの強制的中断時に待機状態に入ってもよく、ここでプロセッサタスクは満足すべき条件を待機する。
The block state category may include a wait (WAITING) state, a suspended (SUSPENDED) state, and a wait suspended (WAITING-SUPENDED) state. A processor task is in a WAITING state when the task is blocked because of a service call invocation that specifies that certain conditions must be satisfied before continuing execution of the task. Thus, the task execution state may change to a standby state when a service call is invoked. A waiting processor task may be released to a ready state when a specified condition is satisfied, thereby allowing the
タスクが実行されていないかまたは既にその実行を終了したとき、プロセッサタスクは休止(DORMANT)状態にある。休止状態のプロセッサタスクは、適当な状況の下で準備状態に入ってもよい。不在(NON−EXISTENT)状態は、例えば、タスクがまだ作成されていなかったりまたは既に削除されているなどによって、タスクがシステム内に存在しないいわゆる仮想状態を指す。 A processor task is in a dormant state when the task is not running or has already finished its execution. A dormant processor task may enter a ready state under appropriate circumstances. The absence (NON-EXISTENT) state refers to a so-called virtual state in which the task does not exist in the system, for example, because the task has not yet been created or has already been deleted.
準備状態へ移動したタスクが実行状態のタスクより高い優先順位(または、優先度)を有する場合、より低い優先順位のタスクが準備状態へ移動し、より高い優先度のタスクがディスパッチされて実行状態へ移動することが好ましい。この状況において、より低い優先度のタスクは、より高い優先度のタスクによってプリエンプティブ実行されている。 If a task that has moved to the ready state has a higher priority (or priority) than a task in the running state, the task with the lower priority moves to the ready state and the higher priority task is dispatched to the running state It is preferable to move to. In this situation, lower priority tasks are preemptively executed by higher priority tasks.
ノン・プリエンプティブな(non-preemptive)、優先度に基づくタスクスケジューリングは、プロセッサタスクに割り当てられた優先度に基づいてなされる。同じ優先度を有する多くのプロセッサタスクがある場合、スケジューリングは、最初に来て最初に役立つ(first-come, first-served:FCFS)ことを基準に実行される。このタスクスケジューリングの規則は、タスク優先度に基づいたタスク間の優先順位を使用して定められてもよい。実行可能なタスクが存在する場合、せいぜい、高い優先順位のタスクと同数の割り当てられたサブ処理ユニット102が実行状態にある。実行可能なタスクの残りは、準備状態にある。異なる優先度を有するタスクの中で、最も高い優先度を有するタスクは、より高い優先順位を有する。同じ優先度のタスクの中で、最も早く実行可能な(実行中または準備ができている)状態に入ったプロセッサタスクは、より高い優先順位を有する。しかしながら、同じ優先度のタスク間の優先順位は、いくつかのサービスコールの呼び出しのせいで変化してもよい。プロセッサタスクが他のプロセッサタスクに対して優先順位を与えられると、ディスパッチが直ちに発生し、タスクが実行状態に移動することが好ましい。
Non-preemptive priority-based task scheduling is based on the priority assigned to the processor task. If there are many processor tasks with the same priority, scheduling is performed on the basis of first-come, first-served (FCFS) coming first. This task scheduling rule may be defined using priorities among tasks based on task priority. If there are tasks that can be executed, at most, the same number of assigned
図13と図14を参照して、本発明の特定の態様にしたがった特定のプリエンプション(preemption)特徴を示す。上述のように、実行状態にあるプロセッサタスク(例えばタスクA)はプリエンプティブ実行されるか、または準備状態にある別のプロセッサタスク(例えばタスクB)に実行権を譲渡してもよい。図13と図14に示すように、タスクAは、実行権の譲渡の時点まで、サブ処理ユニット102で実行されている。この時点で、SPUのカーネルは、共有メモリ106にタスクAをコピーする(タスクAを保存する)よう動作する。その後、タスクBは、共有メモリ106からSPUのローカルメモリにコピーされる(タスクBを復元する)。そして、SPUはタスクBを実行する。この技術は、ローカルメモリの使用量および高い帯域幅については比較的高い性能を享受する一方、実行権を譲渡した時点から最適化されないタスクBの実行の時点までのタスク実行レイテンシが存在する。
With reference to FIGS. 13 and 14, certain preemption features in accordance with certain aspects of the present invention are illustrated. As described above, a processor task in an execution state (eg, task A) may be preemptively executed, or the execution right may be transferred to another processor task (eg, task B) in a preparation state. As shown in FIGS. 13 and 14, the task A is executed by the
図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の実行との間のレイテンシを大きく削減する。
With reference to FIGS. 15 and 16, an alternative method according to a further aspect of the present invention is shown. In this scenario, task B may be copied from shared
図17と図18を参照して、本発明の一つまたは複数のさらなる態様にしたがって、実行権の譲渡とタスクBの実行との間のレイテンシをさらに削減することもできる。より詳細には、実行権の譲渡の時点までは、図15と図16に関して先に述べたのと実質的に同様な方法でサブ処理ユニット102が動作してよい。しかしながら、実行権の譲渡の後、サブ処理ユニット102はタスクBの実行を開始するのが好ましい。実質的に同時に、サブ処理ユニット102のカーネルは、タスクAをサブ処理ユニット102のローカルメモリから共有メモリ106にコピーするように動作することが好ましい。タスクBが実行件の譲渡後すぐに実行されるので、図14から図16に示した方法と比較してレイテンシが大きく削減される。
With reference to FIGS. 17 and 18, the latency between execution rights transfer and task B execution may be further reduced in accordance with one or more further aspects of the present invention. More specifically, up to the point of execution right transfer,
本発明の一つまたは複数の態様によると、サブ処理ユニット102は、実行のためにローカルメモリ内の多数のプロセッサタスクを維持してもよい。これは、図19で示される。多数のプロセッサタスクの実行を管理するために、ローカルメモリは、複数のページとページテーブルを含んでもよい。この方法の利点は、レイテンシがさらに削減できるという点である。但し、その欠点の一つとして、ローカルメモリ内の相当多くの空間がプロセスタスクの実行によって独占される。
According to one or more aspects of the present invention,
図20から図22を参照して、本発明の一つまたは複数の態様によるプロセッサタスクの移動(マイグレーション)を示す。これらの図は、プロセッサタスク、例えばタスクBが、サブ処理ユニットSPU1から別のサブ処理ユニットSPU2に移動される方法を示している。移動は、何らかの条件、例えばそれぞれのプロセッサタスクと関連付けられるそれぞれの優先度に基づいてもよい。本発明のいくつかの態様によれば、一つのサブ処理ユニットから別のサブ処理ユニットへのプロセッサタスクの移動は、プリエンプティブでなくてもよい。言い換えると、プロセッサタスクの移動は、優先度条件とタイミングの結果として自然に起こり、移動を引き起こす何らかの決定に基づくのではない。 With reference to FIGS. 20-22, migration of processor tasks in accordance with one or more aspects of the present invention is illustrated. These figures show how a processor task, for example task B, is moved from sub-processing unit SPU1 to another sub-processing unit SPU2. The movement may be based on some condition, eg, each priority associated with each processor task. According to some aspects of the invention, the movement of a processor task from one sub-processing unit to another may not be preemptive. In other words, movement of processor tasks occurs naturally as a result of priority conditions and timing and is not based on any decision that causes movement.
このノン・プリエンプティブな移動は、以下の実施例で示すことができる。タスクテーブルを利用している共有メモリ106からプロセッサタスクBが選択され、このタスクテーブルが、実行の準備ができているプロセッサタスクの優先度順序を表す、と仮定する。タスクBは、サブ処理ユニットSPU1上で動作している。同様に、タスクテーブルにしたがって共有メモリ106からプロセッサタスクCが選択され、サブ処理ユニットSPU2上で動作していると仮定する。プロセッサタスクBとプロセッサタスクCが選択された時点で、より高い優先度のプロセッサタスクAは実行の準備ができておらず、したがって実行のために選択されたなかったと仮定する。しかしながら、プロセッサタスクBとプロセッサタスクCが動作している間に、プロセッサタスクAの実行の準備ができると仮定する。
This non-preemptive movement can be demonstrated in the following example. Assume that processor task B is selected from shared
図21を参照して、プロセッサタスクBは、サブ処理ユニットSPU1の実行権を譲渡(yield)してもよい。プロセッサタスクBによるこの譲渡アクションは、実行権の譲渡がソフトウェアアプリケーションの全体的な実行に有益であると判断したプログラマにより発生してもよい。いずれの場合も、サブ処理ユニットSPU1は、共有メモリ106にプロセッサタスクBを書き込み、タスクテーブルを更新することによって、この実行権の譲渡に応答する。サブ処理ユニットSPU1はまた、タスクテーブルにアクセスし、共有メモリ106内の複数のプロセッサタスクのうちいずれをコピーし実行するべきかを判定する。この例では、タスクテーブルによるとプロセッサタスクAが最も高い優先度を持ち、したがって、サブ処理ユニットSP1は、プロセッサタスクAを実行のために共有メモリ106から自身のローカルメモリにコピーする。この時点で、サブ処理ユニットSP1はプロセッサタスクAを実行し、サブ処理ユニットSP2はプロセッサタスクCの実行を継続する。
Referring to FIG. 21, processor task B may yield the right to execute sub-processing unit SPU1. This transfer action by processor task B may occur by a programmer who has determined that transfer of execution rights is beneficial to the overall execution of the software application. In either case, the sub-processing unit SPU1 responds to this transfer of execution rights by writing the processor task B to the shared
図22をさらに参照して、プロセッサタスクCは、他のプロセッサタスクにサブ処理ユニットSPU2の実行権を譲渡してもよい。また、この実行権の譲渡は、プログラム命令および/またはプロセッサタスクCの条件によって呼び出されてもよい。いずれの場合も、サブ処理ユニットSP2はプロセッサタスクCを共有メモリ106に書き戻し、タスクテーブルを更新する。サブ処理ユニットSP2はまた、タスクテーブルにアクセスし、実行の準備ができているプロセッサタスクのうちいずれをコピーするかを決定する。この実施例では、プロセッサタスクBが実行の準備ができており、また実行の準備ができている複数のプロセッサタスクの中で最も高い優先度を持つ。したがって、サブ処理ユニットSPU2は、実行のためにプロセッサタスクBを共有メモリ106から自身のローカルメモリにコピーする。
Still referring to FIG. 22, processor task C may transfer the execution right of sub-processing unit SPU2 to another processor task. Also, this transfer of execution rights may be invoked by program instructions and / or processor task C conditions. In either case, the sub-processing unit SP2 writes the processor task C back to the shared
図20に示した処理状況と図22に示した処理状況を比較すると、プロセッサタスクBがサブ処理ユニットSPU1からサブ処理ユニットSPU2に移動したことが分かる。 Comparing the processing status shown in FIG. 20 with the processing status shown in FIG. 22, it can be seen that the processor task B has moved from the sub-processing unit SPU1 to the sub-processing unit SPU2.
図23および図24を参照して、本発明のプリエンプティブなマルチタスク態様を示す。本発明のこれらの態様は、例えばサブ処理ユニットSPU2であるサブ処理ユニット上で実行中の低い優先度のプロセッサタスクが、より高い優先度のプロセッサタスク、例えばプロセッサタスクAでプリエンプティブに置換されてもよいことを述べる。より詳細には、プロセッサタスクBはサブ処理ユニットSPU1上で動作していてもよいし、プロセッサタスクCはサブ処理ユニットSPU2(図23)上で動作していてもよい。その後、より高い優先度タスク、つまりタスクAの実行の準備ができるようになってもよい。これは、システムの他のサブ処理ユニットによる何らかのアクションを原因として発生してもよい。 23 and 24, the preemptive multitasking aspect of the present invention is shown. These aspects of the present invention are such that, for example, a lower priority processor task executing on a sub processing unit, eg, sub processing unit SPU2, is replaced preemptively by a higher priority processor task, eg, processor task A State good things. More specifically, the processor task B may be operating on the sub-processing unit SPU1, and the processor task C may be operating on the sub-processing unit SPU2 (FIG. 23). Thereafter, the higher priority task, that is, task A may be prepared for execution. This may occur due to some action by other sub-processing units of the system.
説明のため、例えばプロセッサタスクBの実行の結果として、サブ処理ユニットSPU1がタスクAのステータスを実行状態に変更したと仮定する。その結果、サブ処理ユニットSPU1は、プロセッサタスクAの優先度が、他のサブ処理ユニット上で動作中のプロセッサタスクのあらゆる優先度より高いか否かについての判定をすることが好ましい。この単純化されたケースにおいて、サブ処理ユニットSPU1は、プロセッサタスクAがプロセッサタスクCより高い優先度を持つか否かについて判定を行う。優先度が高い場合、サブ処理ユニットSPU1は、少なくともプロセッサタスクCをプロセッサタスクAで置換することを開始する。言い換えると、 サブ処理ユニットSPU1は、プロセッサタスクCにサブ処理ユニット102を明け渡してプロセッサタスクAに与えさせる。この点に関して、サブ処理ユニットSPU1のカーネルは、サブ処理ユニットSPU2のカーネルに割り込みを発行してもよい。割り込みに応答して、サブ処理ユニットSPU2は、共有メモリ106にプロセッサタスクCを書き戻して、タスクテーブル(図24)を更新してもよい。サブ処理ユニットSPU2はまた、実行のためにプロセッサタスクAを共有メモリから自身のローカルメモリにコピーしてもよい。
For the sake of explanation, it is assumed that, for example, as a result of execution of the processor task B, the sub-processing unit SPU1 has changed the status of the task A to an execution state. As a result, the sub processing unit SPU1 preferably determines whether or not the priority of the processor task A is higher than any priority of the processor tasks operating on other sub processing units. In this simplified case, the sub-processing unit SPU1 determines whether the processor task A has a higher priority than the processor task C. If the priority is high, the sub-processing unit SPU1 starts replacing at least the processor task C with the processor task A. In other words, the sub processing unit SPU1 yields the
図25と図26を参照して、本発明の特定の直接移動態様を示す。これらの態様は、サブ処理ユニットの一つで実行中のより高い優先度のプロセッサタスクが、より低い優先度のプロセッサタスクを実行している別のサブ処理ユニットに移動されてもよいことを述べる。この移動は、より高い優先度のプロセッサタスクを実行しているサブ処理ユニットによって受け取られる直接の割り込みに応答してなされてもよい。図25を参照して、サブ処理ユニットSPU1は、他のいくつかのタスクを実行しなければならないことを示す割り込みを受け取ってもよい。この割り込みは、サブ処理ユニットSPU1に、システムの他のサブ処理ユニットのいずれがより低い優先度のプロセッサタスクを実行しているかについての判定をさせるようにしてもよい。その場合、このようなサブ処理ユニットは、より高い優先度の処理タスクを支持して、プロセッサタスクの実行権を譲渡してもよい。より詳細には、サブ処理ユニットSPU1は、サブ処理ユニットSPU2がプロセッサタスクAより低い優先度のプロセッサタスク(例えばプロセッサタスクB)を実行していると判定する場合、サブ処理ユニットSPU1のカーネルは、サブ処理ユニットSPU2のカーネルに割り込みを発行することが好ましい。割り込みに応答して、サブ処理ユニットSPU2は、プロセッサタスクBを自身のローカルメモリから共有メモリ106に書き戻して、タスクテーブルを更新する。サブ処理ユニットSPU2はまた、実行のためにプロセッサタスクAをサブ処理ユニットSPU1のローカルメモリから自身のローカルメモリにコピーする(または、移動する)ことが好ましい。
With reference to FIGS. 25 and 26, a particular direct movement aspect of the present invention is shown. These aspects state that a higher priority processor task executing in one of the sub-processing units may be moved to another sub-processing unit executing a lower priority processor task. . This movement may be made in response to a direct interrupt received by a sub-processing unit executing a higher priority processor task. Referring to FIG. 25, the sub-processing unit SPU1 may receive an interrupt indicating that some other task must be performed. This interrupt may cause the sub-processing unit SPU1 to determine which of the other sub-processing units of the system is executing a lower priority processor task. In such a case, such a sub-processing unit may transfer the right to execute the processor task in support of a higher priority processing task. More specifically, when the sub processing unit SPU1 determines that the sub processing unit SPU2 is executing a processor task having a lower priority than the processor task A (for example, processor task B), the kernel of the sub processing unit SPU1 is It is preferable to issue an interrupt to the kernel of the sub-processing unit SPU2. In response to the interrupt, the sub-processing unit SPU2 writes back the processor task B from its local memory to the shared
図27は、処理ユニット(PU)が本発明の一態様にしたがって割り込みを処理する方法について示す。第1のステップにおいて、PUは割り込みを受け取る。PUは、いずれのサブ処理ユニット(この場合、SPU0、SPU1、SPU2のグループ)が最も低い優先度を有しているかを判定する。そして、PUは最も低い優先度を有するSPUに割り込みを送信する。図27の場合、SPU2が最も低い優先度を持つので、PUはSPU2に割り込みを送信する。 FIG. 27 illustrates how a processing unit (PU) handles an interrupt according to one aspect of the present invention. In the first step, the PU receives an interrupt. The PU determines which sub-processing unit (in this case, a group of SPU0, SPU1, and SPU2) has the lowest priority. The PU then sends an interrupt to the SPU having the lowest priority. In the case of FIG. 27, since SPU2 has the lowest priority, the PU transmits an interrupt to SPU2.
本発明の一つまたは複数のさらなる態様によると、サブ処理ユニットの一つから別のサブ処理ユニットへの割り込みは、多数の方法で処理することができる。図28を参照して、本発明の一実施形態において、一つのサブ処理ユニットが、システム内の他のサブ処理ユニットのいずれかに対する割り込みを管理するよう指定されていてもよい。指定されたサブ処理ユニットは、このようなタスク移動割り込みの全てを受け取り、それらを自ら処理するか、または他のサブ処理ユニットにその割り込みを渡すかについて判定をする。例えば、割り込みが指定されたサブ処理ユニットに向けられたものであった場合、指定されたサブ処理ユニット自身でその割り込みを処理してもよい。代替的に、割り込みが指定されたサブ処理ユニットに向けられたものでなかった場合、指定されたサブ処理ユニットは、その割り込みを、最も低い優先度のプロセッサタスクを実行しているサブ処理ユニットに送信してもよい。 According to one or more further aspects of the present invention, an interrupt from one sub-processing unit to another sub-processing unit can be handled in a number of ways. With reference to FIG. 28, in one embodiment of the present invention, one sub-processing unit may be designated to manage interrupts to any of the other sub-processing units in the system. The designated sub-processing unit receives all such task movement interrupts and determines whether to process them themselves or pass the interrupt to another sub-processing unit. For example, when an interrupt is directed to a designated sub-processing unit, the designated sub-processing unit itself may process the interrupt. Alternatively, if the interrupt was not directed to the designated sub-processing unit, the designated sub-processing unit sends the interrupt to the sub-processing unit executing the lowest priority processor task. You may send it.
図29は、分散割り込み処理スキームが使用される別の方法を示す。この技術によると、それぞれの割り込みは各サブ処理ユニットに割り当てられる。例えば、割り込みAがサブ処理ユニットSPU0に割り当てられてもよい。割り込みB、Cがサブ処理ユニットSPU1に割り当てられ、割り込みD、E、Fがサブ処理ユニットSPU2に割り当てられてもよい。 FIG. 29 illustrates another way in which a distributed interrupt handling scheme is used. According to this technique, each interrupt is assigned to each sub-processing unit. For example, the interrupt A may be assigned to the sub processing unit SPU0. Interrupts B and C may be assigned to the sub-processing unit SPU1, and interrupts D, E, and F may be assigned to the sub-processing unit SPU2.
図23から図26を参照して述べた説明では、システムの他のサブ処理ユニット上で動作中のるプロセッサタスクの優先度を、サブ処理ユニットが判定可能である必要があった。本発明の一実施形態によれば、サブ処理ユニットは、実行中のプロセッサタスクの優先度を判定する際に、共有のタスク優先度テーブルを利用してもよい。共有タスク優先度テーブルは共有メモリに置かれていてもよく、サブ処理ユニット識別子およびプロセッサタスク優先度識別子のための複数のエントリを含んでいてもよい。例えば、サブ処理ユニット識別子は、サブ処理ユニットに固有の数字および/または英数字のコードであってもよい。プロセッサタスク優先度識別子は、好ましくは、実行中の特定のプロセッサタスクの優先度を示す。共有タスク優先度テーブルの各エントリは、サブ処理ユニット識別子と優先度識別子のペアを含むことが好ましく、これらは、関連付けられたサブ処理ユニット上で実行中の所与のプロセッサタスクの優先度を示す。このように、実行中のプロセッサタスクの優先度を判定しようとしているサブ処理ユニットは、共有タスク優先度テーブルにアクセスして、より低い優先度のプロセッサタスクを実行しているサブ処理ユニットを発見してもよい。最も低い優先度のプロセッサタスクを実行中のサブ処理ユニットが特定されて、より高い優先度のプロセッサタスクに実行権を譲渡することが好ましい。 In the description given with reference to FIGS. 23 to 26, it is necessary for the sub processing unit to be able to determine the priority of the processor task operating on the other sub processing units of the system. According to one embodiment of the present invention, the sub-processing unit may utilize a shared task priority table when determining the priority of the processor task being executed. The shared task priority table may be located in shared memory and may include multiple entries for sub-processing unit identifiers and processor task priority identifiers. For example, the sub-processing unit identifier may be a numeric and / or alphanumeric code unique to the sub-processing unit. The processor task priority identifier preferably indicates the priority of the particular processor task being executed. Each entry in the shared task priority table preferably includes a sub-processing unit identifier and priority identifier pair, which indicates the priority of a given processor task executing on the associated sub-processing unit. . In this way, a sub-processing unit that is trying to determine the priority of a running processor task accesses the shared task priority table and finds a sub-processing unit that is executing a lower priority processor task. May be. Preferably, the sub-processing unit executing the lowest priority processor task is identified and the execution right is transferred to the higher priority processor task.
本発明の他の実施形態は、サブ処理ユニットが、いずれのサブ処理ユニットが最も低い優先度のプロセッサタスクを実行中かを表す共有変数を利用することを提供する。優先度の正確な表示が保証されるように、共有変数の使用は微少更新プロセス(atomic update process)を通して達成されることが好ましい。代替的な方法は、一つのサブ処理ユニットから別のサブ処理ユニットに順次送信される、連続したメッセージを利用してもよい。メッセージは、より低い優先度のプロセッサタスクの優先度識別子とサブ処理ユニット識別子によって更新されてもよい。 Other embodiments of the present invention provide that sub-processing units utilize a shared variable that indicates which sub-processing unit is executing the lowest priority processor task. The use of shared variables is preferably accomplished through an atomic update process so that an accurate indication of priority is assured. An alternative method may utilize a series of messages that are sent sequentially from one sub-processing unit to another. The message may be updated with a lower priority processor task priority identifier and sub-processing unit identifier.
図30を参照して、本発明の別の実施形態は、処理能力を強化するために、多数のPE200を結合することによって、プロセッサタスク110を実行するために割り当てられるサブ処理ユニット208の数を増加してもよいことを考察する。例えば、二つ以上のPE200A、200Bは、一つまたは複数のチップパッケージ内などにパッケージングされるか結合されて、一組のマルチプロセッサ装置を形成してもよい。この構成を広帯域エンジン(BE)と称してもよい。BE290は、二つのPE200A、200Bを含み、これらはバス212を介してデータ通信のために相互接続される。PE200A、200Bおよび共有DRAM214の間で通信を可能にするように、追加的なデータバス216が提供されることが好ましい。一つまたは複数の入出力(I/O)インタフェース202A、202Bおよび外部バス(図示せず)は、BE290と任意の外部要素の間の通信を提供する。BE290中のPE200A、200Bは、それぞれ、図3に関して上述したサブ処理ユニット208によって実行される並列で独立したアプリケーションおよびデータの処理に類似の並列で独立の態様で、データおよびアプリケーションの処理を実行する。本発明の様々な態様によれば、BEは単一のPEを備えていても多数のPEを備えていてもよい。さらに、BE自体が複数のBEを含むことで構成されてもよい。
Referring to FIG. 30, another embodiment of the present invention reduces the number of
図31を参照する。ここで、基本構成単位としてスタンドアロン型のSPU208、PE200、または複数のPEのセットであるBE290が複数の製品に分散されて、マルチプロセッサシステム500を形成してもよい。コンピュータおよび/またはコンピューティングデバイスとして実装された、システム500の要素またはメンバは、ネットワーク504を介して通信することが好ましい。ネットワーク504は、ローカルエリアネットワーク(LAN)であっても、インターネットや他の任意のコンピュータネットワークのような大域的ネットワークであってもよい。
Refer to FIG. Here, the stand-
例えば、ネットワーク504に接続されたメンバは、例えば、クライアントコンピュータ506、サーバコンピュータ508、個人携帯情報機器(PDA)510、デジタルテレビ(DTV)512、または、そのほかの有線または無線ワイヤレスコンピュータおよびコンピューティングデバイスを含む。例えば、クライアント506Aは、一つまたは複数のPE200、または他の適切なマルチプロセッサシステムから構成されるラップトップコンピュータであってもよい。クライアント506Bは、一つまたは複数のPE200、または他の適切なマルチプロセッサシステムから構成されるデスクトップコンピュータ(またはセットトップボックス)であってもよい。さらに、サーバ508Aはデータベース機能を使用した管理要素(administrative entity)であってもよく、これは一つまたは複数のPE200から好ましくは構成される。
For example, members connected to network 504 may include, for example, client computer 506,
したがって、マルチプロセッサシステム500の処理能力は、ローカルに(例えば、一つの製品に)またはリモートに(例えば複数の製品に)配置された複数のPE200に依存してもよい。この点に関して、図30は、本発明の一つまたは複数の態様による全体的なコンピュータネットワークのブロック図である。PE200および/または多数のPEからなるBE290は、コンピュータシステム500の全体的な分散アーキテクチャを実装するために利用することができる。
Accordingly, the processing power of the
システム500のサーバ508がクライアント506より多くのデータおよびアプリケーションの処理を実行するので、サーバ508は、クライアント506より多くのコンピュータモジュール(例えばPE200)を含む。他方、PDA510は、この実施例において最小の処理量を実行する。したがって、PDA510は、単一のPE200のように最小数のPE200を含む。DTV512は、実質的にクライアント506とサーバ508の間の処理レベルを実行する。したがって、DTV512は、クライアント506のPEとサーバ508のPEの間の数のPEを含む。
分散マルチプロセッサシステム500に関して、さらに詳細に述べる。システム500の均質的な構成は、適応性、処理速度、処理効率を促進する。システム500の各メンバが同一のコンピューティングモジュール、例えばPE200の一つまたは複数(またはその一部)を使用して処理を実行するので、データおよびアプリケーションの処理がネットワークメンバで共有されてもよいため、データおよび/またはアプリケーションの処理を実行するコンピュータおよびコンピューティングデバイスの特定は、重要でない。システム500により処理されるデータおよびアプリケーションを含むセルアプリケーションを固有に識別することによって、処理が発生した場所にかかわらず、その処理を要求するコンピュータまたはコンピューティングデバイスに処理結果を送信することができる。処理を実行するモジュールが共通の構造を有し、共通の命令セットアーキテクチャを使用するので、プロセッサ間の互換性を得るための追加ソフトウェアレイヤによる計算負荷が省かれる。このアーキテクチャおよびプログラミングモデルは、例えば、リアルタイムでマルチメディアのアプリケーションを実行するのに必要な処理速度を促進する。
Further details regarding the distributed
システム500により促進される処理速度および処理効率のさらなる利点を得るために、このシステムにより処理されるデータおよびアプリケーションは、固有に識別され一様にフォーマット化されたセルアプリケーション502にパッケージングされてもよい。各セルアプリケーション502は、アプリケーションおよびデータの両方を含み、または含んでもよい。後述するように、各セルアプリケーションはまた、ネットワーク504およびシステム500の全体にわたってセルを識別するためのIDを含む。
In order to obtain further benefits of processing speed and processing efficiency facilitated by
セルアプリケーションの構造の均質性、およびネットワーク全体にわたるセルアプリケーションの一様な識別により、ネットワーク504の任意のコンピュータまたはコンピューティングデバイス上でのアプリケーションおよびデータの処理が容易になる。例えば、クライアント506がセルアプリケーション502を実行してもよいが、クライアント506の処理能力が限られているため、セルアプリケーション502を処理のためにサーバ508に送信してもよい。したがって、セルアプリケーション502は、ネットワーク504上の処理リソースの利用可能性に基づいて、ネットワーク504の全体にわたって移動することができる。
The homogeneity of the structure of the cell application and the uniform identification of the cell application across the network facilitates the processing of applications and data on any computer or computing device in the
システム500のプロセッサおよびセルアプリケーション502の均質的な構造により、今日の異機種間ネットワークの課題の多くが回避される。任意の命令セット、例えばJava仮想マシン(Javaは登録商標)のような仮想マシンを使用して、任意のISAでのアプリケーションの処理を可能にしようとする非効率的なプログラムモジュールが回避される。したがって、システム500は、従来のネットワークより効果的にまた効率的に、ブロードバンド処理を実行することができる。
The homogeneous structure of the processor and
本発明の方法の一態様によると、第1のマルチプロセッサ(便宜上、例えば第1のBEとする)は、様々な理由のうち任意のもののために、第1のBEからタスクを移動するべきか否かを決定する。例えば、第1のBEは、指定されたデッドラインまたは合理的な期間内にタスクを終了するにはビジーであるという判定をしてもよい。第1のBEが、別の処理システムにタスクを移動すべきであると判定すると、第1のBEからネットワークを介してアプリケーションをブロードキャストする。アプリケーションは、複数のタスクと一つの属性とを指定するかまたは含む。移動されることになるタスクは、指定されたタスクまたは含まれているタスクのうちの一つである。属性は、アプリケーションをブロードキャストした前段のBE、もしくは初めにアプリケーションをブロードキャストしたBE、のうち少なくとも一つからのアプリケーションの距離と、複数のタスクのそれぞれを終了するためのデッドラインと、を表示することが好ましい。タスクキューを指定することもできる。アプリケーションは、アプリケーション自身がタスクを保有することによって複数のタスクを直接指定してもよいし、または、アプリケーションがポインタ情報を使用して間接的にタスクを指定してもよい。ポインタ情報は、例えばポインタ、インデックスまたは他の同等手法であり、タスクの位置する場所を表すか指し示すものである。あるいは、タスクキュー、各タスク、およびアプリケーション内の属性と組み合わされたタスクのブロックのうちのいずれか一つと、属性とがリンク付けされていてもよい。さらに、本発明の態様によると、タスクは、タスクを実行するための要件を指定する属性を有している。属性は、二つ以上のタスクで共通であるか、または全てのタスクで共通であってもよい。または、タスクのそれぞれが固有の独立した属性を有していてもよい。 According to one aspect of the method of the present invention, should the first multiprocessor (for convenience, eg, the first BE) move tasks from the first BE for any of a variety of reasons? Decide whether or not. For example, the first BE may determine that it is busy completing the task within a specified deadline or within a reasonable time period. If the first BE determines that the task should be moved to another processing system, it broadcasts the application from the first BE over the network. An application specifies or includes a plurality of tasks and a single attribute. The task to be moved is one of the designated task or the included tasks. The attribute indicates the distance of the application from at least one of the preceding BE that broadcast the application or the BE that first broadcast the application, and a deadline for ending each of the plurality of tasks. Is preferred. You can also specify a task queue. The application may directly specify a plurality of tasks by the application itself holding the task, or the application may indirectly specify the task using the pointer information. The pointer information is, for example, a pointer, index, or other equivalent technique, and represents or points to a location where the task is located. Alternatively, the attribute may be linked to any one of the task queue, each task, and a block of tasks combined with the attribute in the application. Further in accordance with an aspect of the present invention, a task has an attribute that specifies a requirement for performing the task. The attribute may be common to two or more tasks, or may be common to all tasks. Alternatively, each task may have a unique independent attribute.
アプリケーションの「距離」とは、転送レイテンシの尺度となりうる物理的距離のことをいう場合もあるが、好適には、ネットワークを越えて別の位置またはプロセッサにアプリケーションを移動する際の、ネットワークレイテンシのことを指す。 The “distance” of an application may refer to the physical distance that can be a measure of transfer latency, but preferably the network latency as it moves across the network to another location or processor. Refers to that.
例えば、送信元すなわち「オーナーBE」は、アプリケーションAの移動を決定し、ネットワークにアプリケーションAをブロードキャストする。アプリケーションAは、デッドラインと、必要となる計算リソース(例えば、SPUの数または複数のタスク)と、他のパラメータとを有している。別のセルである第1のBEは、アプリケーションAを受け取り、パラメータとオーナーBEへの「距離」とをチェックする。いくつかの理由により、第1のBEがアプリケーションAを処理しないと決定し、アプリケーションAをネットワークに戻してブロードキャストする。この場合、アプリケーションAの距離は、依然として、潜在的な新たなBEからオーナーBEへのネットワークレイテンシである。今度は、第2のBEがアプリケーションAを受け取り、パラメータとオーナーBEへの距離とをチェックする。この情報に基づいて、第2のBEはアプリケーションAの結果をオーナーBEへと戻してもよい。 For example, the transmission source or “owner BE” decides to move the application A and broadcasts the application A to the network. The application A has a deadline, necessary calculation resources (for example, the number of SPUs or a plurality of tasks), and other parameters. Another cell, the first BE, receives application A and checks the parameters and the “distance” to the owner BE. For some reason, the first BE decides not to process application A and broadcasts application A back to the network. In this case, Application A's distance is still the network latency from the potential new BE to the owner BE. This time, the second BE receives application A and checks the parameters and the distance to the owner BE. Based on this information, the second BE may return the result of application A to the owner BE.
あるいは、「距離」は、送信元すなわちオーナーBEでなく、直前のBEからの距離であってもよい。例えば、オーナーBEが、アプリケーションAをネットワーク上に移動させると決定したとする。アプリケーションAは、デッドラインと、必要となる計算リソース(例えば、SPUの数または複数のタスク)と、他のパラメータとを有している。第1のBEは、アプリケーションAを受け取り、パラメータとオーナーBEへの距離とをチェックする。いくつかの理由により、第1のBEがアプリケーションAの一部を「A’」として移動させると決定し、A’をネットワークにブロードキャストする。この場合、A’の距離は、潜在的な新たなBEから第1のBEへのネットワークレイテンシである。A’のデッドラインは、アプリケーションAよりも早い。第2のBEがA’を受け取り、パラメータと第1のBEへの距離とをチェックする。第2のBEは、A’の結果を第1のBEへと戻してもよい。第1のBEは、A’を有するアプリケーションAの結果を生成し、その結果をオーナーBEへと戻してもよい。 Alternatively, the “distance” may be a distance from the immediately preceding BE instead of the transmission source, that is, the owner BE. For example, the owner BE decides to move the application A onto the network. The application A has a deadline, necessary calculation resources (for example, the number of SPUs or a plurality of tasks), and other parameters. The first BE receives application A and checks the parameters and the distance to the owner BE. For some reason, the first BE decides to move part of application A as “A ′” and broadcasts A ′ to the network. In this case, A 'distance is the network latency from the potential new BE to the first BE. A 'deadline is faster than application A. The second BE receives A 'and checks the parameters and the distance to the first BE. The second BE may return the result of A 'to the first BE. The first BE may generate a result for application A having A 'and return the result to the owner BE.
属性は、タスクの実行に要求される処理能力を指定することが好ましい。したがって、上述のプロセッサアーキテクチャが使用される場合、この属性は、タスクの実行に必要なSPUの数を指定してもよい。さらに、同じ属性または異なる属性が、タスクの実行に必要とされるメモリの量を指定してもよい。 The attribute preferably specifies the processing capability required to execute the task. Thus, if the processor architecture described above is used, this attribute may specify the number of SPUs required to perform the task. Further, the same attribute or different attributes may specify the amount of memory required to perform the task.
第1のBEによってブロードキャストされたアプリケーションは、ネットワークにより第1のBEに接続される第2のBEで受け取られる。第2のBEは、アプリケーション内のタスクを分解し(unbundle)、いずれのタスクを第1のBEから移動させるべきかについて決定する。タスクをばらし移動させるべきタスクを決定した後、第2のBEは、好適には、ソフトウェアコマンドにより、タスクを実行するための要件を指定する属性を調べ、第2のBEによって実行されなければならないタスクを決定する。上述したように、属性(または、複数の属性)が必要な処理能力および必要なメモリを記述する場合、好適には第2のBEは、移動されるタスクに関連付けられている必要な処理能力および必要なメモリを検査する。 An application broadcast by the first BE is received at a second BE connected to the first BE by the network. The second BE unbundles the tasks in the application and determines which tasks should be moved from the first BE. After determining the task to be moved and moved, the second BE should be executed by the second BE, preferably by a software command, examining attributes specifying requirements for performing the task. Determine the task. As described above, when describing the required processing power and required memory for the attribute (or attributes), the second BE preferably has the required processing power associated with the task being moved and Check the required memory.
本発明の別の態様によると、第2のBEもまた、アプリケーションをブロードキャストした前段のBE、または、初めにアプリケーションをブロードキャストしたBE、のうちの少なくとも一つからのアプリケーションの距離と、複数のタスクのそれぞれを終了するためのデッドラインと、複数のタスクのそれぞれを終了するためのデッドラインとを調べる。そして、その複数のタスクを第2のBEで実行すべきか否かを決定する。第2のBEは、第1のBEに対して、第2のBEがタスク(単数または複数)を実行しているか否かを連絡することが好ましい。 According to another aspect of the invention, the second BE also has an application distance from at least one of the preceding BE that broadcast the application or the BE that originally broadcast the application, and a plurality of tasks. A deadline for ending each of the tasks and a deadline for ending each of the plurality of tasks are examined. Then, it is determined whether or not the plurality of tasks should be executed by the second BE. The second BE preferably informs the first BE whether or not the second BE is performing the task (s).
本発明の別の態様によると、ブロードキャストされたアプリケーションは、複数の他のBEによって受け取られる。複数の他のBEはそれぞれ、第2のBEに関して先に述べたステップを実行する。したがって、他のBEはそれぞれ、アプリケーション内のタスク(単数または複数)を分解する。移動されるべきタスク(単数または複数)は、アプリケーション内に含まれる。複数の他のBEはそれぞれ、複数のタスクを実行するための要件を指定する属性を調べて、タスクが実行されるべきか否かを決定する。さらに、複数の他のBEはそれぞれ、アプリケーションをブロードキャストした前段のBE、もしくは初めにアプリケーションをブロードキャストしたBE、のうち少なくとも一つからのアプリケーションの距離と、複数のタスクのそれぞれを終了するためのデッドラインと、を調べて、タスクが実行されるべきか否かを決定する。 According to another aspect of the invention, the broadcast application is received by a plurality of other BEs. Each of the other BEs performs the steps described above for the second BE. Accordingly, each of the other BEs decomposes the task (s) in the application. The task or tasks to be moved are included in the application. Each of the plurality of other BEs examines attributes that specify requirements for executing the plurality of tasks to determine whether the task should be executed. Further, each of the plurality of other BEs is a distance from the application to at least one of the preceding BE that broadcasts the application or the BE that first broadcast the application, and the dead for terminating each of the plurality of tasks. And determine whether the task should be executed.
上記説明においては、第1のマルチプロセッサとして第1のBE、第2のマルチプロセッサとして第2のBEを便宜上定めた。しかし、当然であるが、第1のマルチプロセッサおよび第2のマルチプロセッサはそれぞれ、図32に示した要素のいずれであってもよい。したがって、一例として、第1のマルチプロセッサはクライアント506のうちの一つであってもよいし、第2のマルチプロセッサはクライアント506のうちの別の一つまたはPDA510であってもよい。図32中では、ネットワーク504上を複数のセル502が移動している状態が示されているが、このセル502がこれまでの説明でBE間で転送またはブロードキャストされるとしたアプリケーションである。例えば、クライアント506内には複数の「セル」が描かれているが、これはクライアント506内の複数のBEまたはPEにおいて、セルアプリケーションが実行されているイメージを表したものである。クライアント506の他に、サーバ508内にも「セル」が描かれているが、これは必ずしもサーバやクライアント内のBEまたはPEが「セル」を実行中であるイメージを表しているわけではなく、「セル」を実行可能であることを示しているに過ぎない。各PEは、複数のSPUを持つ図3に示したようなアーキテクチャを有してもよい。しかしながら、本発明は、プロセッサのタイプまたはアーキテクチャにかかわらず、複数のネットワーク化されたプロセッサを有する任意のシステムに適用可能であることが理解される。
In the above description, the first BE is defined as the first multiprocessor and the second BE as the second multiprocessor for convenience. However, it will be appreciated that each of the first and second multiprocessors may be any of the elements shown in FIG. Thus, by way of example, the first multiprocessor may be one of the clients 506 and the second multiprocessor may be another one of the clients 506 or the
この点に関して、図33は本発明のセルサーバ600の一実施形態を示す。一つまたは複数の広帯域エンジン(BE)610は、セルサーバによって管理される。各BEは、上述の環境と同じく、処理ユニット(PU)630、複数の相乗的(synergistic)処理ユニット(SPU)640、有利には(図4に示す)複数のSPUのそれぞれに関連するローカルメモリ用の論理記憶装置(LS)(DMAC650を介してアクセスされる)を備える基本プロセッサ要素(PE)620と、共有メモリ660とを備える。BEは、BEバス670およびBE入出力チャネル675を介して内部通信する。加えて、セルサーバは、一つまたは複数のネットワークインタフェース680を有する。ネットワークインタフェースは、有利には、各PUまたはSPUに関連付けられているが、セルサーバに直接関連付けられていてもよい。有利には、セルサーバ600は、内部通信用のセルバス690とローカルセル入出力チャネル695とを備える。
In this regard, FIG. 33 illustrates one embodiment of the cell server 600 of the present invention. One or more broadband engines (BE) 610 are managed by the cell server. Each BE has a local memory associated with each of the processing units (PUs) 630, a plurality of synergistic processing units (SPUs) 640, and advantageously a plurality of SPUs (shown in FIG. 4), similar to the environment described above. A basic processor element (PE) 620 comprising a logical storage device (LS) for use (accessed via the DMAC 650) and a shared
BEの一実施形態の汎用メモリハンドリング特性の詳細は、2001年3月22日に出願された「SYSTEM AND METHOD FOR DATA SYNCHRONIZATION FOR A COMPUTER ARCHITECTURE FOR BROADBAND NETWORKS」と題する米国特許出願第09/815,554号に説明されており、これは本出願の譲受人に譲渡されている。ネットワーク化されたマルチプロセッサ環境におけるBEの基本的な相互接続の一実施形態の説明は、2004年4月22日に出願された「METHOD AND APPARATUS FOR PROVIDING AN INTERCONNECTION NETWORK FUNCTION」と題する米国仮特許出願第60/564,647号に説明されており、これは本出願の譲受人に譲渡されている。 Details of general purpose memory handling characteristics of one embodiment of BE are described in US patent application Ser. No. 09 / 815,554, filed Mar. 22, 2001, entitled “SYSTEM AND METHOD FOR DATA SYNCHRONIZATION FOR A COMPUTER ARCHITECTURE FOR BROADBAND NETWORKS”. Which is assigned to the assignee of the present application. A description of one embodiment of BE basic interconnection in a networked multiprocessor environment is described in US Provisional Patent Application entitled “METHOD AND APPARATUS FOR PROVIDING AN INTERCONNECTION NETWORK FUNCTION” filed on April 22, 2004. No. 60 / 564,647, which is assigned to the assignee of the present application.
各BEは、図34の一実施形態に模式的に示すように、一つまたは複数のBEタスク700を含む。BEタスク700は、タスクキュー710および関連するタスクテーブル720a〜720dを利用して、セルサーバの共有メモリ内に編成されることが好ましい。タスクテーブル720a〜720dは、それぞれタスクテーブルエントリのセットを備え(図35を参照)、タスクテーブルは、一つまたは複数のSPUによって実行されるべき一つまたは複数のSPUタスクを有する(図35を参照)。BEタスクは、固有のBEタスク識別子730を有することが好ましい。
Each BE includes one or
加えて、各BEタスクは、少なくとも以下の4つのパラメータを有することが好ましい。すなわち、BEタスクまたはタスクグループを実行するために必要となる最小のSPU数(最小必要SPU730a)、BEタスクまたはタスクグループによって要求されるメモリサイズ(メモリ割り当て730b)、セルレイテンシすなわちこのBEを所有するセルサーバと受取り側BEとの間の距離(セルレイテンシ730c)、およびBEタスクに含まれるSPUタスクのタスクデッドライン(タスクデッドライン730d)である。BEタスクは、セルサーバネットワークによって要求される他の値(730e)も含むことが好ましい。BEタスクの一例を表1に示す。
In addition, each BE task preferably has at least the following four parameters. That is, the minimum number of SPUs required to execute a BE task or task group (minimum required
図35は、本発明のタスクテーブルの一実施形態を示す。上述したように、各タスクテーブル740は、以下のパラメータのうち一つまたは複数を保持するテーブルエントリ750のセットを含む。すなわち、タスクステータス760a、タスク優先度760b、他のタスクテーブル値760c、前のタスクへのポインタ780、および次のタスクへのポインタ790である。各タスクテーブル740は、実行されるべき実際の命令に対する命令ポインタ770を有してもよい。
FIG. 35 shows an embodiment of the task table of the present invention. As described above, each task table 740 includes a set of
タスクステータス760aは、タスクの状態、例えば、タスクが実行中、準備、待機、待機中断、中断、休止、不在のいずれかを表す。タスク優先度760bは、タスクのレベルまたは重要度を表し、スケジューリング中にタスクの実行順序を決定するために使用される。前のタスクポインタ780および次のタスクポインタ790は、他のテーブルエントリ750に関連して使用され、タスクテーブル740内のリンク付きリストを形成する。前のタスクポインタ780および次のタスクポインタ790もまた、PUおよびSPUへのタスクテーブルの処理タスクの順序づけされたアクセスを提供する。
The
図36は、本発明のBEタスクキューの一実施形態を示す。各タスクキュー710は、複数のタスク優先度レベル820のそれぞれについての、ヘッドエントリポインタ800とテイルエントリポインタ810のセットを含む。具体的には、タスクキュー710は、セルサーバ上でBEでのタスク命令の実行を優先順位付けするために提供される、n優先度レベル(0からn−1)のそれぞれについて別個にヘッドエントリとテイルエントリの対を有する。一般に、優先度レベルと同じ数のリンク付きリストが存在する。したがって、各優先度レベルについて、その優先度レベルでのタスクのリンク付きリスト830は、その優先度のタスクテーブル740内の第1のタスクエントリ845をポイントするヘッドポインタ840と、その優先度のタスクテーブル内の最後のタスクエントリ855をポイントするテイルポインタ850とに関連付けられている。タスクキュー710の一実施例を表2に示す。
FIG. 36 shows an embodiment of the BE task queue of the present invention. Each
PUおよび/またはSPUは、BEタスクキューおよび関連するBEタスクテーブルを使用して、タスク処理のスケジューリングを実行する。具体的には、共有メモリから引き抜かれたプロセスタスクを実行のためにSPUの一つに入れる順序を決定する。セルサーバ内の各BEは、少なくとも一つのタスクキューと、関連するタスクテーブルとを維持することが好ましい。 The PU and / or SPU uses the BE task queue and associated BE task table to perform task processing scheduling. Specifically, the order in which process tasks extracted from the shared memory are put into one of the SPUs for execution is determined. Each BE in the cell server preferably maintains at least one task queue and an associated task table.
各BEについてのタスクキューおよびタスクテーブルは、同一セルサーバ内での一つのBEから別のBEへのプロセッサタスクの移動、または、ネットワークを介して接続された別個のセルサーバでの一つのBEから別のBEへのプロセッサタスクの移動を容易にする。別のBEに実行のために渡されるべきプロセッサタスクは、移動のためにアプリケーション内にバンドルされる(bundle)。一般に、アプリケーションは、以下に詳細に述べるように、他の情報でラップされた一つまたは複数のBEタスクを含む。特定のBEを管理するセルサーバは、一般に、そのBEのアプリケーションオーナーとみなされる。 The task queue and task table for each BE can be transferred from one BE to another BE within the same cell server, or from one BE on a separate cell server connected over the network. Facilitates moving processor tasks to another BE. A processor task to be passed to another BE for execution is bundled in the application for movement. In general, an application includes one or more BE tasks wrapped with other information, as described in detail below. A cell server that manages a particular BE is generally considered the application owner of that BE.
図37は、移動のためにアプリケーションをバンドルする方法の一実施形態を示す。一般に、例えば、他の状況と同じく、BE内(または、セルサーバの特定のSPU内)のプロセッサロードが高いとき、または、特定のSPU内で優先度の衝突が発生したとき、特定のセルサーバ内のBEが、一つまたは複数のBEタスクのセットを含むアプリケーションを別のBEへ移動する。特に、移動のためのアプリケーションのバンドリングは、送出し側BEによって処理されるステッププロセスを伴う。 FIG. 37 illustrates one embodiment of a method for bundling applications for movement. In general, as in other situations, for example, when the processor load in a BE (or in a cell server's specific SPU) is high, or when a priority conflict occurs in a specific SPU, a specific cell server One BE moves an application containing a set of one or more BE tasks to another BE. In particular, bundling applications for movement involves a step process that is handled by the sending BE.
通常のタスク処理状態900の間、移動判定ステップ910において、例えば高いプロセッサロード、低いメモリ利用可能性などのために、BEは、タスクの移動が必要であるか否かを判定する。移動が必要な場合、停止タスクステップ920において、現在実行中のタスク700が停止される。タスク更新ステップ930において、バンドリングの準備のために、送出し側BEの現在のタスクキュー710およびタスクテーブル720が更新される。バンドルステップ950において、移動されるべきBEタスクが移動のためにアプリケーション940にバンドルされる。好適には、セル940は、(タスクキュー710とタスクテーブル720の情報を含む)移動されるべきBEタスク700のみならず、BEタスクに関連するタスクデータ952も含む。有利には、アプリケーションは、必要に応じて、アプリケーションセキュリティを保証し、アプリケーション整合性を確認するために、圧縮されるか最小アプリケーションサイズに暗号化されてもよい。続いて、図38に詳細を示すポーリング−応答−移動−復帰プロセスを介する移動ステップ960によって、タスクが別のBEに移動される。移動プロセス(および、移動されたプロセスの復帰)が完了すると、BEは、通常のタスク処理状態900を介してタスクの処理の継続に復帰する。
During the normal
図38は、送出し側BEから、既知のセルサーバネットワーク上のいずれかにある受取り側BEへのBEタスクの移動プロセスの一実施形態を示す。図37のバンドルステップ950において述べたように、移動されるべきBEタスクがバンドルされた後、BEは、ポーリングステップ970において他のBEをポーリングする。好適には、BEは、一つまたは複数のセルサーバネットワーク974上で、同一のセルサーバ600および他の既知のセルサーバ972の双方にある、他のBE610をポーリングする。
FIG. 38 illustrates one embodiment of a process for moving a BE task from a sending BE to a receiving BE anywhere on a known cell server network. As described in the
好適には、ポーリングステップ970は、図39に示す既知のセルサーバネットワーク上の既知のBEに対して、ブロードキャストクエリを介して実行される。一実施形態では、ブロードキャストクエリメッセージ980は、複数の値を含むネットワークメッセージの形態をとる。値には、送信元セルサーバおよびBEの表示985a、移動されるべきタスクのタスク優先度の表示985b、必要なSPUおよび/またはメモリリソースの表示985c、移動中のタスクのタスクデッドラインの表示985d、および、ブロードキャストクエリによって送信されることが有利な他の任意の値985eが含まれるが、これらに限定されない。これらの値は、バンドルされたアプリケーションの一部であるタスクテーブル内に格納される。これらの値は、必要に応じて、他のデータ構造で記載されてもよい。
Preferably, the
図38に戻り、クエリ応答受信ステップ990において、送出しセルサーバ内の送出し側BEは、セルサーバネットワーク内の既知のBEから一つまたは複数の応答を受け取る。図40に示すように、好適には、クエリ応答は、特定の値を含むネットワークメッセージの形態をとる。特定の値には、応答BEおよびセルサーバロケーションの表示1005a、応答BEの現在のタスクデッドラインの表示1005b、現在のBEの空きSPU、プロセッサロード、および/またはメモリ負荷の表示1005c、クエリ応答1000内で必要とされるか要求されるかまたは含まれる任意の他のブロードキャスト応答メッセージ値1005dが含まれるが、これらに限定されない。
Returning to FIG. 38, in a query
再び図38に戻り、受取り側BE選択ステップ1010において、送出し側BEは、受け取ったクエリ応答1000から、応答BEの移動タスクのうちいずれのセットを送信すべきかを決定する。この選択は、セルレイテンシの短さもしくは受取り側BEと送出し側BE間のネットワークトポロジ構造上の短さ、受取り側BEにおいて現在実行しているタスクのデッドラインまでの時間の短さ、受取り側BEにおけるSPUおよびメモリの利用可能性が十分かどうか、の一部または全てを考慮に入れた決定に基づくことが好ましい。移動ステップ1020において、アプリケーション940内のバンドルされたタスクは、選択された受取り側BE1030に移動される。
Returning again to FIG. 38, in the receiving
アプリケーション940が受取り側BEに送信されると、受取り側BEタスクアンバンドルステップ1040において、有利には、受取り側BE1030は、共有メモリ内のアプリケーションをばらして処理する。受取り側BEタスク処理ステップ1050において、受取り側BE1030は、バンドルされたタスク、データ、タスクキュー、およびタスクテーブルにアクセスして、移動された処理タスクを実行する。
When the
ステップ1050において、移動されたタスクの処理が受取り側BEによって完了すると、受取り側BE再バンドルステップ1060において、完了したタスク、データ、タスクキュー、およびタスクテーブルがアプリケーションに再バンドルされ、送信元の送出し側BE、典型的には始めに移動されたBEタスクを所有するセルサーバに戻される。送出し側BE終了タスク受信ステップ1070において、終了したタスクが元の送出し側BEによって受け取られると、タスクアンバンドルステップ1080において、送出し側BEは終了BEタスクをばらす。続いて、終了タスク更新ステップ1090において、終了したBEタスクが関連するプロセスを更新し、一般のタスク処理状態900を再開する。有利には、メッセージ980、1000、アプリケーション600、およびタスクデータ952等の他の重要なデータは、例えばAES標準、Blowfish、または、RSAベースの公開鍵暗号化アルゴリズム等の既知のアルゴリズムによって暗号化されてもよい。同様に、本発明のメッセージ、データ構造および他の特徴は、例えばMD5等のダイジェストアルゴリズムによって情報を採取され(fingerprint)、タスク、タスクデータ、およびメッセージが信頼性のないネットワークおよびネットワークプロトコルによって送信されるときに、重要なデータ整合性を保証するようにしてもよい。
When the processing of the moved task is completed by the receiving BE in
図41は、本発明の安全なサーバランチ(ranch)の一実施形態を示す。このネットワークで相互接続されたセルサーバ1100は、有利には、サーバランチ1110と呼ばれるセルサーバのコミュニティを形成する。好適には、このサーバランチは、例えばインターネットまたはイントラネット等のIP(インターネットプロトコル)ベースのネットワーク等の、トポロジーフリーなネットワーク上で形成される。しかしながら、十分な効率性および信頼性のあるネットワークプロトコルを使用可能である。
FIG. 41 illustrates one embodiment of the secure server launch of the present invention. The
無線ネットワーク、安全でないローカルエリアネットワーク、広域エリアネットワーク、組織されたまたはトポロジカルなイントラネットまたはより一般的なインターネット等の他のオープンネットワーク上にサーバランチが存在する場合にセキュリティが重要であるように、有利にはサーバランチは、それが存在する上でのネットワークに関して安全でであってもよい。一実施形態では、安全なサーバランチ内の各セルサーバは公開鍵および個人鍵を使用し、ネットワークを介して分散されるセルサーバは、暗号化モジュール1120(一実施形態では、公開鍵暗号化(PKI)モジュール)を介してアプリケーションおよび他のメッセージを送信し、受信し、および認証することができる。しかしながら、AESベースのハンドシェークまたは圧縮−暗号化技術等の任意のタイプの暗号化アルゴリズムを使用してもよい。既知のネットワーク1130の外部のセルサーバは、一般にセルランチに参加可能であるが、適当なタイプの暗号化モジュールおよび適当な認証(すなわち、キーおよび/または署名)を持たない場合は、安全なサーバランチへの参加を控えることが好ましい。
Advantageous, as security is important when server launches exist on other open networks such as wireless networks, insecure local area networks, wide area networks, organized or topological intranets or the more general Internet The server launch may be secure with respect to the network on which it resides. In one embodiment, each cell server in the secure server launch uses a public key and a private key, and cell servers distributed over the network can have an encryption module 1120 (in one embodiment, public key encryption ( Applications and other messages can be sent, received and authenticated via the PKI) module). However, any type of encryption algorithm may be used such as an AES-based handshake or compression-encryption technique. Cell servers outside the known
本明細書において特定の実施形態を参照して本発明を記載したが、これらの実施形態が単に本発明の原理および応用を例示するものにすぎないことは理解されよう。したがって、例示した実施形態には多数の変形が可能であり、添付の特許請求の範囲で規定される本発明の精神および範囲から逸脱することなく他の構成を考案することができることが理解されよう。 Although the invention herein has been described with reference to particular embodiments, it will be understood that these embodiments are merely illustrative of the principles and applications of the present invention. Accordingly, it will be appreciated that many variations can be made to the illustrated embodiments, and that other configurations can be devised without departing from the spirit and scope of the invention as defined by the appended claims. .
600 セルサーバ、 610 BE、 650 DMAC、 660 共有メモリ、 670 BEバス、 675 BE入出力チャネル、 680 ネットワークインタフェース、 690 セルバス、 695 ローカルセル入出力チャネル。 600 cell server, 610 BE, 650 DMAC, 660 shared memory, 670 BE bus, 675 BE input / output channel, 680 network interface, 690 cell bus, 695 local cell input / output channel.
Claims (37)
一つのマルチプロセッサから少なくとも一つのマルチプロセッサにタスクを移動すべきか否かを決定し、
少なくとも一つのマルチプロセッサにタスクを移動すべきと決定されたとき、マルチプロセッサのうちの一つからアプリケーションをブロードキャストすることを含み、
前記アプリケーションは複数のタスクと一つの属性とを指定し、前記属性は、アプリケーションをブロードキャストした前段のマルチプロセッサ、もしくは初めにアプリケーションをブロードキャストしたマルチプロセッサ、のうち少なくとも一つからのアプリケーションの距離と、複数のタスクのそれぞれを終了するためのデッドラインと、を表すことを特徴とするデータ処理方法。 A data processing method for moving a task from one multiprocessor to at least one multiprocessor via a network,
Decide whether to move a task from one multiprocessor to at least one multiprocessor,
Broadcasting an application from one of the multiprocessors when it is determined that the task should be moved to at least one multiprocessor;
The application specifies a plurality of tasks and one attribute, and the attribute is a distance of the application from at least one of the preceding multiprocessor that broadcast the application, or the multiprocessor that initially broadcast the application, and A data processing method characterized by representing a deadline for ending each of a plurality of tasks.
前記アプリケーションで指定されたタスクをばらし、
第2のマルチプロセッサにおいて、タスクを実行するために必要な処理能力を指定する属性を調査して、当該タスクを第2のマルチプロセッサで実行すべきか否かを決定することをさらに含むことを特徴とする請求項2に記載のデータ処理方法。 Receiving the broadcasted application on a second multiprocessor;
Distribute the task specified in the application,
In the second multiprocessor, the method further includes examining an attribute designating a processing capability necessary for executing the task to determine whether or not the task should be executed in the second multiprocessor. The data processing method according to claim 2.
前記アプリケーションで指定されたタスクをばらし、
第2のマルチプロセッサにおいて、タスクを実行するために必要なメモリを指定する属性を調査して、当該タスクを第2のマルチプロセッサで実行すべきか否かを決定することをさらに含むことを特徴とする請求項8に記載のデータ処理方法。 Receiving the broadcasted application on a second multiprocessor;
Distribute the task specified in the application,
In the second multiprocessor, further comprising examining an attribute designating memory required to execute the task to determine whether the task should be executed on the second multiprocessor; The data processing method according to claim 8.
前記アプリケーションで指定されたタスクをばらし、
第2のマルチプロセッサにおいて、タスクを実行するための要件を指定する属性を調査して、当該タスクを第2のマルチプロセッサで実行すべきか否かを決定することをさらに含むことを特徴とする請求項1に記載のデータ処理方法。 Receiving the broadcasted application on a second multiprocessor;
Distribute the task specified in the application,
The method further comprises examining in the second multiprocessor an attribute that specifies a requirement to execute the task to determine whether the task should be executed on the second multiprocessor. Item 2. A data processing method according to Item 1.
前記アプリケーションで指定されたタスクを複数の他のマルチプロセッサのそれぞれでばらし、
複数の他のマルチプロセッサのそれぞれにおいて、タスクを実行するための要件を指定する属性を調査して、当該タスクを実行すべきか否かを決定することをさらに含むことを特徴とする請求項12に記載のデータ処理方法。 Receive broadcast applications on multiple other multiprocessors,
The task specified in the application is distributed to each of a plurality of other multiprocessors,
13. The method of claim 12, further comprising: examining, in each of a plurality of other multiprocessors, an attribute specifying a requirement for executing the task to determine whether the task should be executed. The data processing method described.
ネットワークと、
前記ネットワークに接続された複数のマルチプロセッサと、
一つのマルチプロセッサから少なくとも一つのマルチプロセッサにタスクを移動すべきか否かを決定する手段と、
少なくとも一つのマルチプロセッサにタスクを移動すべきと決定されたとき、マルチプロセッサの一つからネットワークを介してアプリケーションをブロードキャストする手段と、を備え、
前記アプリケーションは複数のタスクと一つの属性とを指定し、前記属性は、アプリケーションをブロードキャストした前段のマルチプロセッサ、もしくは初めにアプリケーションをブロードキャストしたマルチプロセッサ、のうち少なくとも一つからのアプリケーションの距離と、複数のタスクのそれぞれを終了するためのデッドラインと、を表すことを特徴とするデータ処理システム。 A data processing system for moving tasks,
Network,
A plurality of multiprocessors connected to the network;
Means for determining whether to move a task from one multiprocessor to at least one multiprocessor;
Means for broadcasting an application over a network from one of the multiprocessors when it is determined that the task should be moved to at least one multiprocessor;
The application specifies a plurality of tasks and one attribute, and the attribute is a distance of the application from at least one of the preceding multiprocessor that broadcast the application, or the multiprocessor that initially broadcast the application, and A data processing system representing a deadline for ending each of a plurality of tasks.
第2のマルチプロセッサにおいて前記アプリケーション内のタスクをばらす手段と、
第2のマルチプロセッサにおいて、タスクを実行するために必要な処理能力を指定する属性を調査して、当該タスクを第2のマルチプロセッサで実行すべきか否かを決定する手段と、
をさらに備えることを特徴とする請求項19に記載のデータ処理システム。 Means for receiving the broadcasted application on a second multiprocessor;
Means for distributing tasks in the application in a second multiprocessor;
Means for examining in the second multiprocessor an attribute designating a processing capability required to execute the task and determining whether the task should be executed by the second multiprocessor;
The data processing system according to claim 19, further comprising:
第2のマルチプロセッサにおいて前記アプリケーション内のタスクをばらす手段と、
第2のマルチプロセッサにおいて、タスクを実行するために必要なメモリを指定する属性を調査して、当該タスクを第2のマルチプロセッサで実行すべきか否かを決定する手段と、
をさらに備えることを特徴とする請求項22に記載のデータ処理システム。 Means for receiving the broadcasted application on a second multiprocessor;
Means for distributing tasks in the application in a second multiprocessor;
Means for examining in the second multiprocessor an attribute designating memory required to execute the task and determining whether the task should be executed on the second multiprocessor;
The data processing system according to claim 22, further comprising:
ブロードキャストされたアプリケーションを第2のマルチプロセッサで受け取る手段と、
前記アプリケーションにおいてタスクをばらす手段と、
第2のマルチプロセッサにおいて、タスクを実行するための要件を指定する属性を調査して、当該タスクを第2のマルチプロセッサで実行すべきか否かを決定する手段と、
をさらに備えることを特徴とする請求項18に記載のデータ処理システム。 A second multiprocessor connected to the network;
Means for receiving the broadcasted application on a second multiprocessor;
Means for distributing tasks in the application;
Means for examining in the second multiprocessor an attribute that specifies a requirement for executing the task and determining whether the task should be executed on the second multiprocessor;
The data processing system according to claim 18, further comprising:
前記アプリケーション内のタスクを複数の他のマルチプロセッサのそれぞれでばらす手段と、
複数の他のマルチプロセッサのそれぞれにおいて、タスクを実行するための要件を指定する属性を調査して、当該タスクを実行すべきか否かを決定する手段と、
をさらに備えることを特徴とする請求項31に記載のデータ処理システム。 Means for receiving the broadcasted application on multiple other multiprocessors;
Means for distributing tasks in the application with each of a plurality of other multiprocessors;
Means for examining in each of a plurality of other multiprocessors an attribute that specifies a requirement for performing the task and determining whether the task should be performed;
The data processing system according to claim 31, further comprising:
ネットワークに接続可能なマルチプロセッサであって、該マルチプロセッサによってタスクを実行すべきか、またはネットワークに接続された少なくとも一つのマルチプロセッサに移動すべきかを決定するようにプログラムされたマルチプロセッサを備え、
前記マルチプロセッサは、少なくとも一つのマルチプロセッサにタスクを移動すべきと決定されたとき、ネットワークを介して当該マルチプロセッサからアプリケーションをブロードキャストするよう指示し、
前記アプリケーションは複数のタスクと一つの属性とを指定し、前記属性は、アプリケーションをブロードキャストした前段のマルチプロセッサ、もしくは初めにアプリケーションをブロードキャストしたマルチプロセッサ、のうち少なくとも一つからのアプリケーションの距離と、複数のタスクのそれぞれを終了するためのデッドラインと、を表すことを特徴とするデータ処理装置。 A data processing device for moving a task,
A multiprocessor connectable to a network, the multiprocessor programmed to determine whether to perform a task by the multiprocessor or to move to at least one multiprocessor connected to the network;
When said multiprocessor determines that the task should be moved to at least one multiprocessor, it instructs to broadcast the application from said multiprocessor over the network;
The application specifies a plurality of tasks and one attribute, and the attribute is a distance of the application from at least one of the preceding multiprocessor that broadcast the application, or the multiprocessor that initially broadcast the application, and A data processing device representing a deadline for ending each of a plurality of tasks.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US65015305P | 2005-02-04 | 2005-02-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006216058A true JP2006216058A (en) | 2006-08-17 |
JP4183712B2 JP4183712B2 (en) | 2008-11-19 |
Family
ID=36685806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006027686A Active JP4183712B2 (en) | 2005-02-04 | 2006-02-03 | Data processing method, system and apparatus for moving processor task in multiprocessor system |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP4183712B2 (en) |
TW (1) | TWI338844B (en) |
WO (1) | WO2006083043A2 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110081499A (en) * | 2010-01-08 | 2011-07-14 | 삼성전자주식회사 | System and method for dynamic task migration on a multiprocessor system |
US8145820B2 (en) | 2009-05-25 | 2012-03-27 | Kabushiki Kaisha Toshiba | Multiprocessor system and computer program product |
US8495192B2 (en) | 2007-02-28 | 2013-07-23 | Sony Corporation | Distributed processing method, distributed processing system, server, program for the same, computer, and program for the same |
KR101496336B1 (en) | 2008-12-18 | 2015-02-26 | 삼성전자주식회사 | Method and system for migration task |
US9400691B2 (en) | 2011-09-16 | 2016-07-26 | Fujitsu Limited | Process allocation management apparatus, system and method |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2952731B1 (en) * | 2009-11-13 | 2011-11-04 | Bull Sas | METHOD AND DEVICE FOR OPTIMIZING THE EXECUTION OF SOFTWARE APPLICATIONS IN A MULTIPROCESSOR ARCHITECTURE COMPRISING SEVERAL INPUT / OUTPUT CONTROLLERS AND SECONDARY CALCULATION UNITS |
US11265263B2 (en) | 2020-05-25 | 2022-03-01 | Qualcomm Incorporated | Processing data using remote network computing resources |
-
2006
- 2006-02-03 TW TW095103850A patent/TWI338844B/en active
- 2006-02-03 JP JP2006027686A patent/JP4183712B2/en active Active
- 2006-02-06 WO PCT/JP2006/302406 patent/WO2006083043A2/en not_active Application Discontinuation
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8495192B2 (en) | 2007-02-28 | 2013-07-23 | Sony Corporation | Distributed processing method, distributed processing system, server, program for the same, computer, and program for the same |
KR101496336B1 (en) | 2008-12-18 | 2015-02-26 | 삼성전자주식회사 | Method and system for migration task |
US8145820B2 (en) | 2009-05-25 | 2012-03-27 | Kabushiki Kaisha Toshiba | Multiprocessor system and computer program product |
KR20110081499A (en) * | 2010-01-08 | 2011-07-14 | 삼성전자주식회사 | System and method for dynamic task migration on a multiprocessor system |
KR101697937B1 (en) | 2010-01-08 | 2017-02-01 | 삼성전자주식회사 | System and method for dynamic task migration on a multiprocessor system |
US9400691B2 (en) | 2011-09-16 | 2016-07-26 | Fujitsu Limited | Process allocation management apparatus, system and method |
Also Published As
Publication number | Publication date |
---|---|
TW200705208A (en) | 2007-02-01 |
WO2006083043A2 (en) | 2006-08-10 |
WO2006083043A3 (en) | 2007-02-08 |
TWI338844B (en) | 2011-03-11 |
JP4183712B2 (en) | 2008-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4526412B2 (en) | Task management method and apparatus in multiprocessor system | |
US8028292B2 (en) | Processor task migration over a network in a multi-processor system | |
JP2005235229A (en) | Method and apparatus for processor task migration in multiprocessor system | |
US7653908B2 (en) | Grouping processors and assigning shared memory space to a group in a heterogeneous computer environment | |
US7689694B2 (en) | Process management apparatus, computer systems, distributed processing method, and computer program for avoiding overhead in a process management device | |
JP3696563B2 (en) | Computer processor and processing device | |
JP4455822B2 (en) | Data processing method | |
US7516456B2 (en) | Asymmetric heterogeneous multi-threaded operating system | |
US8381230B2 (en) | Message passing with queues and channels | |
US20050120185A1 (en) | Methods and apparatus for efficient multi-tasking | |
JP4183712B2 (en) | Data processing method, system and apparatus for moving processor task in multiprocessor system | |
US20060026169A1 (en) | Communication method with reduced response time in a distributed data processing system | |
CA2536037A1 (en) | Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment | |
JP4364202B2 (en) | Data processing method and data processing system | |
EP1768024B1 (en) | Processing management device, computer system, distributed processing method, and computer program | |
US7140015B1 (en) | Microkernel for real time applications | |
JP6283376B2 (en) | System and method for supporting work sharing multiplexing in a cluster | |
US7320044B1 (en) | System, method, and computer program product for interrupt scheduling in processing communication | |
WO2022193108A1 (en) | Integrated chip and data transfer method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080221 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080226 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080422 |
|
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: 20080902 |
|
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: 20080902 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110912 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4183712 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: 20120912 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: 20130912 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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |