(57)【要約】【課題】マルチプロセッサシステムにおいて割り込みを効率良く処理することは難しい。【解決手段】マルチプロセッサシステム（一例としてＰＥ１００）において、複数のプロセッサ（一例としてＳＰＵ１０８ａ〜１０８ｄ）のうちの１つが割り込みを処理し、割り込みを処理するための次のプロセッサを識別する責任を割り当てられる。１つのプロセッサがタスクを切り替え、タスク優先度に関する限り、自分はもはや最も重要度が低いプロセッサではないと判定するとき、そのプロセッサは次に、その割り込みに関連した責任（すなわち、割り込みを処理し、次の割り込みを処理するプロセッサを決定すること）を選んで、最も重要度が低いタスクを実行しているプロセッサへその責任を移す。選択されたプロセッサは、それがタスク切り替えを経て、異なるプロセッサを選ぶまでは、割り込み処理をするために指定される。【選択図】図１
2006216042.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステムにおいて割り込みを処理する方法であって、
プロセッサ毎に指定値を格納しておき、前記指定値を参照して、各プロセッサが、自分が前記システムに対する割り込みを処理するために指定されたプロセッサであるかどうかを識別するステップと、
前記指定されたプロセッサが、他の複数のプロセッサの中で次に指定されるべきプロセッサを選択するステップとを含み、
前記指定されたプロセッサが自分自身とは異なるプロセッサを選択する場合、前記指定されたプロセッサは、前記選択されたプロセッサが前記指定されたプロセッサであることを示すように、自分自身の前記指定値と前記選択されたプロセッサの前記指定値とを変更することを特徴とする方法。
【請求項２】
前記選択するステップは、前記指定されたプロセッサが新しいタスクに切り替えるときに行われることを特徴とする請求項１に記載の方法。
【請求項３】
最下位優先度タスクをもつプロセッサを識別する値と、そのタスクの優先度の値とを格納するための優先度記憶場所が設けられ、
前記選択するステップは、前記新しいタスクの優先度の値を前記優先度記憶場所に格納された優先度の値と比較するステップと、その比較結果にもとづいて、前記指定されたプロセッサか前記優先度記憶場所において特定されたプロセッサのどちらかを選択するステップとを含むことを特徴とする請求項１または２に記載の方法。
【請求項４】
前記指定されたプロセッサを識別する値を格納するために、ある特定のプロセッサメモリが設けられ、当該方法はさらに、
割り込みが発生したとき、前記特定のプロセッサメモリの値にもとづいて、割り込み情報を前記指定されたプロセッサに転送するステップと、前記指定されたプロセッサが前記割り込みに応答してタスクを実行するステップとを含むことを特徴とする請求項１から３のいずれかに記載の方法。
【請求項５】
割り込みの存在を示す情報を格納するためにポーリングメモリが設けられ、当該方法はさらに、
前記指定されたプロセッサが、割り込みが起きたかどうかを判定するために、ある時間間隔で前記ポーリングメモリを調べるステップと、前記指定されたプロセッサが、もし前記ポーリングメモリが割り込みが起きたことを示しているならば、割り込みに応答してタスクを実行するステップとを含むことを特徴とする請求項１から４のいずれかに記載の方法。
【請求項６】
複数のプロセッサを含むシステムにおいて割り込みを処理する方法であって、
メモリが前記複数のプロセッサの内、どの１つのプロセッサが指定されたプロセッサであるかを示しており、前記指定されたプロセッサにおいて割り込みを処理するステップと、
前記指定されたプロセッサが、自分自身か前記複数のプロセッサのうちの別の１つのプロセッサを指定されたプロセッサとして選択するステップとを含み、
前記指定されたプロセッサが、前記複数のプロセッサのうちの別の１つのプロセッサが指定されたプロセッサになるべきであると判定するならば、前記指定されたプロセッサは、前記別の１つのプロセッサが指定されたプロセッサであることを示すように前記メモリを変更することを特徴とする方法。
【請求項７】
プロセッサの識別情報と優先度の識別情報とを格納する優先度テーブルと、
第１優先度レベルにおいて非割り込みタスクを処理する第１プロセッサと、
第２優先度レベルにおいて割り込みタスクを処理する第２プロセッサとを含み、
前記第１プロセッサは、前記第１優先度レベルが前記優先度テーブルに格納された優先度以下であるならば、前記第１優先度レベルとプロセッサの識別情報を前記優先度テーブルに書き込み、
前記第２プロセッサは、タスク切替時に、前記優先度テーブルにおいて、より低い優先度レベルをもつ別のプロセッサがあるかどうかを調べ、もし見つかった場合、前記第１プロセッサを指定してその後の割り込みの処理をさせることを特徴とするマルチプロセッサシステム。
【請求項８】
マルチプロセッサシステムにおいて割り込みを処理する方法であって、
システムバスを介して通信する複数のプロセッサを設け、前記複数のプロセッサは複数の優先度レベルで複数のタスクを実行する機能を有し、前記複数のプロセッサの各々にはタスクメモリが関連づけられており、
複数のプロセッサ用の記憶領域をシステムメモリに設け、前記システムメモリは、前記システムバスを介して複数のプロセッサと情報のやりとりが可能であり、前記システムメモリは、前記複数のプロセッサと関連づけられた複数の優先度レベルの内、最下位優先度レベルを記憶するための記憶構造を有し、
前記記憶構造を介して、前記複数のプロセッサの内、最下位優先度レベルをもつ第１プロセッサを最下位優先度プロセッサとして指定し、
前記第１プロセッサが最下位優先度プロセッサとして指定されるように前記最下位優先度プロセッサの前記タスクメモリを設定し、
割り込み生成器の指定レジスタが前記最下位優先度プロセッサと関連づけられるように設定し、
前記割り込み生成器によって生成される第３タスクを直接、前記最下位優先度プロセッサに送り、
タスクが切り替えられるまでは、前記最下位優先度プロセッサにおいて前記第３タスクを処理し、タスク切り替えが起きた際、前記最下位優先度プロセッサにおいて、前記最下位優先度プロセッサが前記複数のプロセッサの中で最下位優先度レベルを依然としてもつかどうかを判定し、もしそうでないならば、前記複数のプロセッサの内、最下位優先度をもつ第２プロセッサが最下位優先度プロセッサとして指定されるように前記第２プロセッサのタスクメモリを設定することにより、前記第２プロセッサを前記最下位優先度プロセッサとして指定し、前記割り込み生成器の前記指定レジスタを前記第２プロセッサを指すように更新し、前記第１プロセッサの前記タスクメモリの設定を解除することを特徴とする方法。
【請求項９】
前記タスク切り替えは、前記複数のタスクの内、第１タスクから第２タスクへの切り替え、または、前記第３タスクの完了を含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記記憶構造は、前記複数のプロセッサの１つを最下位優先度プロセッサとしてリストする優先度テーブルを含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記割り込み生成器にポーリングレジスタとポーリングタイマが設けられ、前記割り込み生成器によって第４タスクが生成され、前記ポーリングレジスタに格納され、
前記ポーリングタイマによって設定されたポーリングタイムの期間において前記最下位優先度プロセッサが前記ポーリングレジスタをポーリングし、
前記最下位優先度プロセッサにおいて前記第４タスクが実行され、前記最下位優先度プロセッサによって前記ポーリングレジスタがクリアされることを特徴とする請求項８に記載の方法。
【請求項１２】
分散割り込み処理システムであって、
システムバスを介して接続された複数のプロセッサを含み、各プロセッサは、第１タスクと第２タスクを実行するためのオペレーティングシステムカーネルを含み、各プロセッサは優先度レベルをもち、各プロセッサが前記複数のプロセッサの中で最下位優先度プロセッサであるかどうかを識別するためのタスクメモリが各プロセッサに関連づけられており、
前記システムバスを介して前記複数のプロセッサからアクセス可能なシステムメモリであって、少なくとも前記最下位優先度プロセッサおよび前記複数のプロセッサの最下位優先度レベルに関連づけられた記憶構造を有するシステムメモリと、前記最下位優先度プロセッサと関連づけられた指定レジスタを含む割り込み生成器とを含み、
前記割り込み生成器により生成された第３タスクが、実行のために前記システムバスを介して前記最下位優先度プロセッサに直接送られ、
前記第１タスクから前記第２タスクに切り替えるタスク切り替えの際に前記優先度の構造が更新され、
前記最下位優先度プロセッサが前記優先度の構造においてもはや最下位優先度ではないならば、前記最下位優先度プロセッサは、前記複数のプロセッサの中で第２プロセッサの前記関連づけられたタスクメモリを設定し、前記割り込み生成器の前記指定レジスタを更新し、前記最下位優先度プロセッサの前記関連づけられたタスクメモリの設定を解除することにより、前記第２プロセッサを第２の最下位優先度プロセッサとして指定することを特徴とするシステム。
【請求項１３】
前記優先度の構造は、前記最下位優先度レベルと前記最下位優先度プロセッサに関連づけられたデータを含む優先度テーブルを含むことを特徴とする請求項１２に記載のシステム。
【請求項１４】
前記優先度テーブルは、１つのプロセッサの優先度レベルだけを含むことを特徴とする請求項１３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムにおいて割り込みを処理する技術に関する。
【背景技術】
【０００２】
マルチプロセッサシステムは、特定のアーキテクチャによって様々であるが、典型的には、デバイスやプロセッサ・タスクから発生する信号と割り込みを処理するためにサブシステムを用いている。典型的なマルチプロセッサシステムは、中央プロセッサ、複数のサブプロセッサ、メモリ、システムバス、およびデバイスやデータネットワークと通信するための入出力チャネルを含む。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
あるマルチプロセッサシステムは、中央プロセッサを通して割り込みの処理を試みる。中央プロセッサは、割り込みが発生したときにその割り込みを処理するための一つ以上のサブプロセッサを指定し、システム機器からの割り込みを受け取ると、指定されたサブプロセッサに割込みタスクがシステムバスを介して送られる。しかし、特に高度に複雑なシステムでは、割り込み処理を集中して行うと、中央プロセッサにおいて「ボトルネック」となりうる。
【０００４】
他のシステムでは、マルチプロセッサシステムは、全てのサブプロセッサに割り込みをブロードキャストするためにパラレルバスを用いている。１つ以上のサブプロセッサが割り込みを受け取り、その後割り込みタスクを実行するために指定されている。しかし、そのようなシステムは、マルチプロセッサシステムのサイズが大きくなり、それに伴って、全てのプロセッサにブロードキャストされる割り込みの数が増加するにつれて、輻輳問題に悩まされることになる。
【０００５】
本発明はこうした課題に鑑みてなされたものであり、その目的は、マルチプロセッサシステムにおいて割り込み処理を効率良く行う技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様は、マルチプロセッサシステムにおいて割り込みを処理する方法である。この方法は、プロセッサ毎に指定値を格納しておき、前記指定値を参照して、各プロセッサが、自分が前記システムに対する割り込みを処理するために指定されたプロセッサであるかどうかを特定するステップと、前記指定されたプロセッサが、他の複数のプロセッサの内のどのプロセッサが次に指定されるべきかを選択するステップとを含む。前記指定されたプロセッサが自分自身とは異なるプロセッサを選択する場合、前記指定されたプロセッサは、前記選択されたプロセッサが前記指定されたプロセッサであることを示すように、自分自身の前記指定値と前記選択されたプロセッサの前記指定値とを変更する。
【０００７】
本発明の別の態様は、複数のプロセッサを含むシステムにおいて割り込みを処理する方法である。この方法は、メモリが前記複数のプロセッサの内、どの１つのプロセッサが指定されたプロセッサであるかを示しており、前記指定されたプロセッサにおいて割り込みを処理するステップと、前記指定されたプロセッサが、自分自身か前記複数のプロセッサのうちの別の１つのプロセッサを指定されたプロセッサとして選択するステップとを含む。前記指定されたプロセッサが、前記複数のプロセッサのうちの別の１つのプロセッサが指定されたプロセッサになるべきであると判定するならば、前記指定されたプロセッサは、前記別の１つのプロセッサが指定されたプロセッサであることを示すように前記メモリを変更する。
【０００８】
本発明のさらに別の態様は、マルチプロセッサシステムである。このマルチプロセッサシステムは、プロセッサの識別情報と優先度の識別情報とを格納する優先度テーブルと、第１優先度レベルにおいて非割り込みタスクを処理する第１プロセッサと、第２優先度レベルにおいて割り込みタスクを処理する第２プロセッサとを含む。前記第１プロセッサは、前記第１優先度レベルが前記優先度テーブルに格納された優先度以下であるならば、前記第１優先度レベルとプロセッサの識別情報を前記優先度テーブルに書き込み、前記第２プロセッサは、タスク切替時に、前記優先度テーブルにおいて、より低い優先度レベルをもつ別のプロセッサがあるかどうかを調べ、もし見つかった場合、前記第１プロセッサを指定してその後の割り込みの処理をさせる。
【０００９】
本発明のさらに別の態様は、マルチプロセッサシステムにおいて割り込みを処理する方法である。この方法は、システムバスを介して通信する複数のプロセッサを設け、前記複数のプロセッサは複数の優先度レベルで複数のタスクを実行する機能を有し、前記複数のプロセッサの各々にはタスクメモリが関連づけられている。複数のプロセッサ用の記憶領域をシステムメモリに設け、前記システムメモリは、前記システムバスを介して複数のプロセッサと情報のやりとりが可能であり、前記システムメモリは、前記複数のプロセッサと関連づけられた複数の優先度レベルの内、最下位優先度レベルを記憶するための記憶構造を有する。前記記憶構造を介して、前記複数のプロセッサの内、最下位優先度レベルをもつ第１プロセッサを最下位優先度プロセッサとして指定し、前記第１プロセッサが最下位優先度プロセッサとして指定されるように前記最下位優先度プロセッサの前記タスクメモリを設定する。割り込み生成器の指定レジスタが前記最下位優先度プロセッサと関連づけられるように設定し、前記割り込み生成器によって生成される第３タスクを直接、前記最下位優先度プロセッサに送り、タスクが切り替えられるまでは、前記最下位優先度プロセッサにおいて前記第３タスクを処理する。タスク切り替えが起きた際、前記最下位優先度プロセッサにおいて、前記最下位優先度プロセッサが前記複数のプロセッサの中で最下位優先度レベルを依然としてもつかどうかを判定し、もしそうでないならば、前記複数のプロセッサの内、最下位優先度をもつ第２プロセッサが最下位優先度プロセッサとして指定されるように前記第２プロセッサのタスクメモリを設定することにより、前記第２プロセッサを前記最下位優先度プロセッサとして指定し、前記割り込み生成器の前記指定レジスタを前記第２プロセッサを指すように更新し、前記第１プロセッサの前記タスクメモリの設定を解除する。
【００１０】
本発明のさらに別の態様は、分散割り込み処理システムである。このシステムは、システムバスを介して接続された複数のプロセッサを含み、各プロセッサは、第１タスクと第２タスクを実行するためのオペレーティングシステムカーネルを含み、各プロセッサは優先度レベルをもち、各プロセッサが前記複数のプロセッサの中で最下位優先度プロセッサであるかどうかを識別するためのタスクメモリが各プロセッサに関連づけられている。前記システムバスを介して前記複数のプロセッサからアクセス可能なシステムメモリであって、少なくとも前記最下位優先度プロセッサおよび前記複数のプロセッサの最下位優先度レベルに関連づけられた記憶構造を有するシステムメモリと、前記最下位優先度プロセッサと関連づけられた指定レジスタを含む割り込み生成器とを含む。前記割り込み生成器により生成された第３タスクが、実行のために前記システムバスを介して前記最下位優先度プロセッサに直接送られる。前記第１タスクから前記第２タスクに切り替えるタスク切り替えの際に前記優先度の構造が更新される。前記最下位優先度プロセッサが前記優先度の構造においてもはや最下位優先度ではないならば、前記最下位優先度プロセッサは、前記複数のプロセッサの中で第２プロセッサの前記関連づけられたタスクメモリを設定し、前記割り込み生成器の前記指定レジスタを更新し、前記最下位優先度プロセッサの前記関連づけられたタスクメモリの設定を解除することにより、前記第２プロセッサを第２の最下位優先度プロセッサとして指定する。
【００１１】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１２】
本発明によれば、マルチプロセッサシステムにおいて割り込み処理を効率良く行うことができる。
【発明を実施するための最良の形態】
【００１３】
図１は、本発明のいろいろな態様において採用することのできる基本的な処理モジュールであるプロセッサ要素（ＰＥ）１００の構成図である。同図に示されるように、ＰＥ１００は、Ｉ／Ｏインタフェース１０２と、処理ユニット（ＰＵ）１０４と、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）１０６と、複数のサブ処理ユニット（ＳＰＵ）１０８、すなわち、ＳＰＵ群１０８Ａ〜１０８Ｄとを含む。ここでは４つのＳＰＵが図示されているが、ＰＥ１００は任意の数のＳＰＵのようなデバイスを含んでもよい。ローカル（すなわち内部）ＰＥバス１２０は、ＰＵ１０４、ＳＰＵ群１０８、Ｉ／Ｏインタフェース１０２、ＤＭＡＣ１０６およびメモリインタフェース１１０間のデータおよびアプリケーションの伝送を行う。ローカルＰＥバス１２０は、例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装するとより多くのハードウェアが必要になるが、利用可能な帯域が広がる。
【００１４】
ＰＥ１００は、タイマ１８０をさらに含むか、タイマ１８０にアクセスする。ここではタイマ１８０は、ＰＥの内部にあるように示されているが、ＰＥの外部に設けられてもよい。
【００１５】
ＰＥ１００は、内部的に、かつ、ＰＥ１００の外部のエレメントから支援されることなく、どのＳＰＵがタスクの優先度レベルに基づいて特定のタスクを実行するかを判定することができることが好ましい。たとえば、ＰＵ１０４は、タスクの優先度レベルに基づいて、どのＳＰＵ１０８が現在タスクを引き受けることが可能であるかを判定する。ＰＵ１０４はまた、ＳＰＵが優先順位の高いタスクを引き受けるために、それ自身の現在のタスクを別のプロセッサ（内部もしくは外部のＰＥ１００）に切り替えるべきかどうかを判定する。
【００１６】
ＰＥ１００は、割り込み発生器（ＩＧ）１５０を更に含んでもよい。割り込み発生器（ＩＧ）１５０は、保留（ペンディング）中の割り込み要求があるかどうかを示す情報を提供する。
【００１７】
ＩＧ１５０によって管理される割り込み情報は、ＩＧ１５０自体やＰＥ１００内の他のエレメントを含む任意のソースから来る割り込み、もしくはＰＥに接続されたデバイス、たとえばデバイス１７０（それは図２で示すようなＩ／Ｏ制御部２１２を含んでもよい）から来る割り込みに由来するものであってもよい。ＩＧ１５０は、専用の割込み信号線上で直接デバイス１７０から割込み要求を受け取ってもよく、あるいは、Ｉ／Ｏインタフェース１０２とローカルＰＥバス１２０を介して情報を受け取ってもよい。
【００１８】
ＩＧ１５０は、例えばローカルＰＥバス１２０を介して、ＰＥ１００の他のエレメントに情報を送ってもよい。ＰＥ１００の他のエレメント、例えばＰＵ１０４またはいずれかのＳＰＵ１０８が、情報を得るためにＩＧ１５０にポーリングしてもよい。
【００１９】
好ましくは、ＩＧ１５０は、指定レジスタ（Specify Register）１５１、ポーリングレジスタ１５２のいずれかを含むか、あるいは両方を含む。図１の中の点線は、発明のある実施の形態は一方のレジスタを含み、他方のレジスタは含まないという事実を示すことを意図している。この点に関して、「指定レジスタの実施例」と称する場合は、以下に示すように指定レジスタ１５１を使うが、ポーリングレジスタ１５２を使わないＰＥまたは他のシステムを指す。同様に、「ポーリングレジスタの実施例」と称する場合は、以下に示すようにポーリングレジスタ１５２を使うが、指定レジスタ１５１を使わないＰＥまたは他のシステムを指す。
【００２０】
指定レジスタの実施例、ポーリングレジスタの実施例のどちらにおいても、ＩＧ１５０もしくはその他の任意のエレメントは、ＰＥの様々なプロセッサ、たとえばＳＰＵ１０８やＰＵ１０４に対して割り込み情報をブロードキャストする必要がない。さらに、システムのこのような側面は、専用の割り込みチャネルや、アービトレーション、コンフリクト解消の必要性をなくすのに役立ち、それに伴ってオーバーヘッドを下げ、ボトルネックになることなく大きなシステムへのスケーラビリティの可能性を高める。しかしながら、本発明のいろいろな実施例により、そのようなブロードキャスト、チャンネル、アービトレーションまたはコンフリクト解消を不要とすることができる一方で、そのような方法やシステムは、本発明と相容れないものではなく、本発明とともに用いてもかまわない。
【００２１】
指定レジスタ１５１は、複数のＳＰＵ１０８のうちの１つを指す値を格納しており、それは、通常、どのＳＰＵが割込み要求を処理しなければならないかを示すために用いられる。
【００２２】
さらに、指定レジスタの実施例において、ＩＧ１５０は、好ましくは、指定レジスタ１５１によって指定されるＳＰＵ１０８にバス１２０を介して割り込みパケットを送るように構成されるのが好ましい。割り込みパケットは、ＳＰＵが割り込みに応じるために必要とする情報を含む。たとえば、割り込みパケットは、割込みハンドラタスクであってもよく、あるいはそのタスクへのポインタであってもよい。割り込みパケットはまた、割り込みと、その割り込みの発信元（ソース）の識別情報やユーザー定義の情報などのデータとを処理すべきプロセッサのアドレスを含んでもよい。
【００２３】
ポーリングレジスタ１５２は、割込み要求がペンディングしているかどうかに関する情報、たとえば割り込みパケットへのポインタや割り込みが起きた理由などの情報を格納する。
【００２４】
優先度テーブルは、どのプロセッサが次の割り込みを処理すべきかを決定するのを手助けするプロセッサからアクセス可能なメモリに格納される。優先度テーブルは、そのテーブルを用いるシステムエレメントからアクセス可能である限り、システム内部もしくはシステム外部の他のエレメントに設けられてもよい。たとえば、ＰＥ２００は、タスク実行中の複数のＳＰＵ１０８の集合を含むため、優先度テーブル１６０は、ＤＭＡＣ１０６に格納されてもよい。実質的にＤＭＡＣ１０６は、ＰＥ１００から構成されるシステムのためのシステム全体のメモリとして動作するからである。優先度テーブル１６０に含まれる情報は、ＳＰＵ１０８にとって、アトミック命令とアトミック・キャッシュを介してアクセス可能であってもよい。優先度テーブルをキャッシュメモリ、例えばＰＵ１０４のＬ１キャッシュまたはＬ２キャッシュ、または、個々のＳＰＵのアトミック・キャッシュに格納することもまた好ましい。
【００２５】
本発明のある態様では、優先度テーブルは、２つだけの情報を格納する。その２つの情報とは、複数のＳＰＵ１０８のうちの１つへのポインタと、そのＳＰＵによって実行されているタスクの優先度レベルに等しいかそれを指し示す値である。たとえば、ポインタが複数のＳＰＵ１０８のうちの１つに割り当てられるユニークなＩＤから構成されるならば、優先度テーブル１６０の総サイズは８バイトであり、ユニークなＩＤは４バイト長、優先度レベルは４バイト長である。ここでの説明は、ある特定の側面においてはＰＵ１０４に適用されてもよい。たとえば、ＰＵ１０４は、最下位プロセッサとして機能してもよく、その場合、ポインタはＰＵ１０４を特定してもよい。
【００２６】
ＰＥ１００はディジタルロジック回路を実装する各種方法を利用して構成できる。ただし好適には、ＰＥ１００はシリコン基板上の相補的金属酸化膜半導体（ＣＭＯＳ）を用いる一つの集積回路として構成される。ＰＥ１００は、広帯域メモリ接続１２２を介してメモリ１３０に密接に関連付けられる。メモリ１３０は、ＰＥ１００に対するメインメモリとして機能することが望ましい。メモリ１３０は好適にはダイナミックランダムアクセスメモリ（ＤＲＡＭ）であるが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。ＤＭＡＣ１０６とメモリインタフェース１１０は、メモリ１３０と、ＰＥ１００のＳＰＵ１０８およびＰＵ１０４との間のデータの転送を円滑にするものである。
【００２７】
ＰＵ１０４は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、ＰＵ１０４はＳＰＵ群によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。別の構成として、ＰＥ１００は、複数のＰＵ１０４を含んでもよい。複数のＰＵ１０４の各々は、複数のＳＰＵ１０８の内、１つのＳＰＵ、すべてのＳＰＵ、ある指定されたＳＰＵのグループを制御してもよい。ＳＰＵは、好適には、一命令複数データ（ＳＩＭＤ）プロセッサである。ＰＵ１０４の制御下で、複数のＳＰＵ１０８は、データおよびアプリケーションの処理を並列に、かつ独立して行ってもよい。好適には、ＰＥ１００のようなＰＥがたくさん集まって結合されたり、１つにまとめられ、あるいは、論理的に互いに関連づけられて、処理能力が強化されてもよい。
【００２８】
図２は、本発明のいろいろな態様において動作しうる複数のＰＥ２００（ＰＥ１、ＰＥ２、ＰＥ３およびＰＥ４）を含む処理アーキテクチャを示す。好ましくは、複数のＰＥ２００は単一のチップ上に設けられる。ＰＥ２００は、図１のＰＥ１００に関して上述したようなＰＵやＳＰＵ群のようなサブシステムを含んでもよいし、含まなくてもよい。複数のＰＥ２００は、要求される処理の種類に応じて、同じタイプのものであってもよく、異なるタイプのものであってもよい。たとえば、複数のＰＥ２００の内、１つ以上のＰＥは、一般的なマイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、グラフィックプロセッサ、マイクロコントローラなどであってもよい。
【００２９】
複数のＰＥ２００は共有バス２０２につながっていることが好ましい。メモリ制御部であるＤＭＡＣ２０６がメモリバス２０４を介して共有バス２０２に接続されていてもよい。ＤＭＡＣ２０６はメモリ２０８に接続されており、メモリ２０８は、上述したメモリ１３０のいくつかのタイプの１つであってもよい。Ｉ／Ｏ制御部２１２もまた、Ｉ／Ｏバス２１０を介して共有バス２０２に接続されてもよい。Ｉ／Ｏ制御部２１２は、フレームバッファ、ディスクドライブのような１つ以上のＩ／Ｏデバイス２１４と接続されてもよい。上述の処理モジュールおよびアーキテクチャは単なる例示であり、本発明のいろいろな態様が他の構成を利用して実現されても良い。他の構成として、たとえば、２００３年２月２５日に発行された米国特許第６，５２６，４９１号公報（発明の名称は"Memory Protection System and Method for Computer Architecture for Broadband Newtworks"）や、２００１年３月２２日に出願された米国特許出願第０９／８１６，００４号（発明の名称は"Computer Architecture and Software Cells for Broadband Networks）に開示されたタイプのマルチプロセッサシステムがあるが、これに限られるわけではない。
【００３０】
基本処理モジュールであるプロセッサ要素はモジュラー構造をもち、プロセッサ要素内に任意の数のサブ処理ユニットを設けることができる。プロセッサ要素が搭載されるＰＣ、サーバ、携帯機器、ゲーム機、家電製品などの各種情報機器に要求される処理性能に応じて、サブ処理ユニットの数を設計すればよい。また、情報機器には１つ以上のプロセッサ要素を設けてもよく、プロセッサ要素の数は、当該情報機器に要求される処理性能に応じて適宜選択することができる。さらにプロセッサ要素を搭載したノードがネットワークを介して接続されてなる分散処理システムを構成してもよく、当該分散処理システムに要求される処理性能に応じて、各ノードに搭載されるプロセッサ要素の数やプロセッサ要素内のサブ処理ユニットの数を設計してもよい。プロセッサ要素がモジュラー構造をもつことから、要求性能に応じてプロセッサ要素内のサブ処理ユニットの数やプロセッサ要素の数を任意に選択して実装することができ、システムに柔軟性や拡張性をもたせることができる。
【００３１】
図３は、本発明のいろいろな態様で採用されうるＳＰＵ３００の好適な構造と機能を示す図である。１つ以上のＳＰＵ３００がＰＥ１００内に統合されてもよい。ＰＥが複数のＰＵ１０４を含む場合、複数のＰＵ１０４の各々は、複数のＳＰＵ３００の内、１つのＳＰＵ、すべてのＳＰＵ、ある指定されたＳＰＵのグループを制御してもよい。
【００３２】
ＳＰＵ３００は、ローカルストア（ＬＳ）３０２、レジスタ群３０４、一つ以上の浮動小数点ユニット３０６、および一つ以上の整数ユニット３０８を含むか、論理的に関連づけられていることが好ましい。ＳＰＵ３００のコンポーネントは、以下に説明するようなサブコンポーネントを含むことになる。要求される処理能力に応じて、より多くの、あるいはより少ない数の浮動小数点ユニット（ＦＰＵ）３０６および整数ユニット（ＩＵ）３０８が用いられてもよい。ある好適な実施の形態において、ローカルストア３０２は、少なくとも１２８キロバイトの記憶領域を有し、レジスタ群３０４の容量は１２８×１２８ビットである。浮動小数点ユニット３０６は、好ましくは少なくとも毎秒３２ギガ浮動小数点オペレーション（３２ＧＦＬＯＰＳ）の速度で動作し、整数ユニット３０８は、好ましくは少なくとも毎秒３２ギガオペレーション（３２ＧＯＰＳ）の速度で動作する。
【００３３】
ローカルストア３０２は、キャッシュメモリではないことが好ましい。ＳＰＵ３００に対してキャッシュの一貫性をサポートする必要はない。その代わりに、ローカルストア３０２は、ＳＲＡＭとして構成されるのが好ましい。ＰＵ１０４によって開始されたダイレクトメモリアクセスに対してはキャッシュの一貫性がサポートされることが必要になることがある。しかしながら、ＳＰＵ３００によって開始されたダイレクトメモリアクセスや、たとえばＩ／Ｏデバイス２１４のような外部デバイスに対するアクセスに対しては、キャッシュの一貫性のサポートは要求されない。ローカルストア３０２は、たとえば、特定のＳＰＵ３００と関連づけられた物理メモリ、ＳＰＵ３００と関連づけられた仮想メモリ領域、物理メモリと仮想メモリの組み合わせ、あるいは、等価なハードウエア、ソフトウエアおよび／またはファームウエアの構成として実装してもよい。ローカルストア３０２がＳＰＵ３００の外部にある場合、ローカルストア３０２は、ＳＰＵ特有のローカルバスを介してＳＰＵ３００と結合されてもよく、あるいは、ローカルＰＥバス１２０のようなシステムバスを介して結合されてもよい。
【００３４】
ＳＰＵ３００は、バスインタフェース３１２を介して、ＳＰＵ３００との間でアプリケーションとデータを伝送するためのバス３１０をさらに含む。ある好適な実施の形態において、バス３１０は１０２４ビット幅である。ＳＰＵ３００は、さらに内部バス３１４、３１６および３１８を含む。ある好適な実施の形態において、バス３１４は２５６ビット幅であり、ローカルストア３０２とレジスタ群３０４の間の通信を提供する。バス３１６とバス３１８は、それぞれ、レジスタ群３０４と浮動小数点ユニット３０６の間の通信、レジスタ群３０４と整数ユニット３０８の間の通信を提供する。ある好適な実施の形態において、レジスタ群３０４から浮動小数点ユニットまたは整数ユニットへのバス３１６および３１８のビット幅は３８４ビットであり、浮動小数点ユニットまたは整数ユニットへのバス３１６および３１８からレジスタ群３０４へのバス３１６および３１８のビット幅は１２８ビットである。レジスタ群３０４から浮動小数点ユニット３０６および整数ユニット３０８へのバス幅が大きくなればなるほど、処理中にレジスタ群３０４からのより大きなデータフローに対応することができる。ある例では、各演算には最大３ワードが必要とされるが、各演算の結果は通常１ワードである。
【００３５】
好ましくは、各々のＳＰＵは識別子をもっており、優先度テーブル１６０は、その識別子を用いることでＳＰＵを特定することができる。もっとも、ＳＰＵを指し示すための優先度テーブルには、任意のデータ構造またはその種のものが用いられてもよい。
【００３６】
本発明のある態様によれば、各々のＳＰＵは、それが次の割り込みを処理するかどうかを示す値を格納し、維持する。好ましくは、複数のプロセッサの集合の中で一つのプロセッサだけが、自分が次の割り込みに関連するタスクを処理する予定であることを示す値を格納する。たとえば、各ＳＰＵ１０８は好ましくは１ビットのタスクフラグ１６５ａ−ｄを含み、タスクフラグ１６５ａ−ｄのうちの１つだけが１の値をもち、他のフラグの全てが０の値を持つ。各ＳＰＵはそれ自身のタスクフラグをチェックすることにより、自分が複数のＳＰＵ１０８の集合の中で指定された一つであるかどうかを、ＰＥ１００の他のどのエレメントにもアクセスすることなく、判定することができる。参照しやすさを考えて、タスクフラグが１に設定されたＳＰＵをここでは「最下位プロセッサ」と呼ぶ。このように命名したにもかかわらず、最下位プロセッサが最低優先度のタスクをもつＳＰＵではない瞬間が存在してもよい。
【００３７】
好ましくは、各ＳＰＵとＰＵは、それ自身のカーネルに従ってタスクを実行する。そのカーネルはそれぞれのプロセッサで同一であってもよい。
【００３８】
図４〜図７で例示される動作に加えて、本発明のいろいろな態様にしたがって各種の動作をこれから説明する。以下の動作は、これから説明する順序通りに正確に実行される必要はないことを理解すべきである。そればかりか、各種のステップは、逆順に、あるいは、同時に実行することもできる。
【００３９】
図４および図５は、プロセッサが新しいタスクに切り替えることを要求されるとき、プロセッサが優先度テーブル１６０、タスクフラグ１６５および他の情報を変える（あるいは変えない）方法の一例を説明する。この例の目的のために、複数のタスクフラグ１６５のうちの１つだけが１の値をもち、他のタスクフラグは０の値をもつことを仮定しなければならない。図４におけるステップの全てが、ＳＰＵ１０８ａのようなシングルプロセッサで実行されることが好ましい。
【００４０】
ＳＰＵが新しいタスクを実行するように指示されると、ＳＰＵは現タスクを処理しないようにまず自分自身をロックする（Ｓ１０）。
【００４１】
次に、タスクが切り替えられようとしているＳＰＵ（以下、「切替プロセッサ」または「切替ＳＰＵ」という）は、新しいタスクの優先度レベル（［新優先度レベル］）が優先度テーブル１６０において現在特定されるプロセッサ（［テーブルプロセッサＩＤ］）の優先度レベル（［テーブル優先度レベル］）にどのように関連しているかを判定するために必要な情報を集める（Ｓ１２、Ｓ１４）。
【００４２】
それから、切替ＳＰＵは、それ自身のタスクフラグ１６５が、当該ＳＰＵが最下位プロセッサであることを示しているかどうかを判定する（Ｓ１６）。上記のように、１つの実施の形態において、このテストは、複数のタスクフラグ１６５のうちの１つだけが１の値をもつことが許される場合に、タスクフラグの値が１であるかどうかを判定することによって実行される。
【００４３】
切替プロセッサが最下位プロセッサ（以下、最下位プロセッサでないプロセッサを「通常プロセッサ」と呼ぶ）でないならば、切替プロセッサは新しいタスクの優先度（［新優先度レベル］）を優先度テーブルに現在リストされたタスクの優先度（［テーブル優先度レベル］）と比較する（Ｓ１８）。
【００４４】
通常プロセッサの新しい優先度レベルが優先度テーブルに格納された優先度レベルより大きいなら、通常プロセッサはロックを解除し（Ｓ２４）、その新しいタスクを開始する（Ｓ２６）。
【００４５】
通常プロセッサの新しい優先度レベルが優先度テーブルに格納される優先度レベルより小さいなら、これは、通常プロセッサの新しいタスクが、その瞬間に、いろいろなプロセッサ（例えば複数のＳＰＵ１０８）の中でも最低優先度のタスクとなっている可能性があることを示している。したがって、通常プロセッサはそのＩＤと［新優先度レベル］を優先度テーブル１６０に格納する（Ｓ２０、Ｓ２２）。優先度テーブルを更新したあと、通常プロセッサはそれ自身のロックを解除し（Ｓ２４）、その新しいタスクを開始する（Ｓ２６）。
【００４６】
本発明の１つの態様によれば、通常プロセッサは、その新しいタスクが優先度テーブルにリストされたタスクより低い優先度をもっているという事実にもかかわらず、それ自身のタスクフラグや他のいずれのタスクフラグも変更せず、また、割り込み発生器のいずれのレジスタも変更しない。むしろ、それらの役目は、最下位プロセッサが最終的にタスクを切り替えるときに、その最下位プロセッサに実行が任される。この点に関していえば、任意の所与の瞬間において、最下位プロセッサは、必ずしも最下位優先順位タスクをもつプロセッサであるとは限らない。
【００４７】
切替ＳＰＵが最下位プロセッサであるならば、ＳＰＵは新しいタスクの優先度（［新優先度レベル］）を優先度テーブルにリストされているタスクの優先度［テーブル優先度レベル］と比較する（Ｓ２８）。
【００４８】
最下位プロセッサの新しい優先度レベルが優先度テーブルに格納される優先度レベルより小さいなら、最下位プロセッサはそのＩＤと新しい優先度レベルを優先度テーブル１６０に保存する（Ｓ２０、Ｓ２２）。優先度テーブルを更新したあと、最下位プロセッサは、ロックを解除し（Ｓ２４）、その新しいタスクを開始する（Ｓ２６）。
【００４９】
しかし、最下位プロセッサの新しい優先度レベルが優先度テーブルに格納された優先度レベル以上であるならば、最下位プロセッサは、優先度テーブルが自分を指し示しているかどうかを判定する（Ｓ３０）。言い換えると、この時点で、切替最下位プロセッサは、自分が最下位優先度のタスクをもっているプロセッサとして、優先度テーブルに現在リストされているかどうかを判定する。
【００５０】
優先度テーブルがこの時点で最下位プロセッサを指しているならば、最下位プロセッサは、優先度テーブルに含まれる優先度レベルをその新しいタスクと同じレベルに設定する（Ｓ２２）。しかし、次の最下位プロセッサは現在の最下位プロセッサではないため、優先度テーブルを最下位プロセッサを指すように変えることはしない。
【００５１】
優先度テーブルが最下位プロセッサを指しておらず、かつ、上述のように新しいタスクが優先度テーブルにリストされたタスクよりも重要であるならば、最下位プロセッサは、優先度テーブルにリストされたプロセッサのタスクフラグを１の値に設定する（このようにして、そのプロセッサは最下位プロセッサになる）（Ｓ３４）。切替プロセッサは、次にそれ自身のタスクフラグを０に変える（このようにして、切替プロセッサは最下位プロセッサから通常プロセッサに変わる）（Ｓ３６）。切替プロセッサ―それは最下位プロセッサであったが、現在は通常プロセッサである―は、自分自身のロックを解除し（Ｓ２４）、新しいタスクを開始する（Ｓ２６）。
【００５２】
このように、前述の動作によれば、どのプロセッサが最下位プロセッサに指定されるかを判定するのは、最下位プロセッサである。最下位プロセッサは、タスク切替の後も最下位プロセッサのままとどまることを決定するかもしれないし、あるいは、別の１つのプロセッサが最下位プロセッサになることを決定するかもしれない。さらに、通常プロセッサは、自分自身のタスクフラグや他のプロセッサのタスクフラグを変えることはせず、むしろ、それは最下位プロセッサの責任である。
【００５３】
指定レジスタの実施例では、切替プロセッサは、もう一つのプロセッサを最下位プロセッサに指定する前、あるいは、指定した後に、指定レジスタ１５１も更新する。具体的には、切替プロセッサは、指定レジスタをその新しい最下位プロセッサを指す値に等しく設定する。前述の例では、指定レジスタは［テーブルプロセッサＩＤ］に設定されることになる（Ｓ３２）。
【００５４】
図６は、１つのありうる動作を例示するものであり、割り込みが指定レジスタの実施例に従って処理される様子を示す。割り込みが起こるとき（Ｓ４０）、割り込み生成器１５０は指定レジスタ１５１に格納される値をチェックすることによって最下位プロセッサを識別する（Ｓ４２）。いったん最下位プロセッサが識別されると、ＩＧ１５０は最下位プロセッサに割り込みパケットを送る（Ｓ４４）。
【００５５】
図７は、１つのありうるオペレーションを例示するものであり、割り込みがポーリングレジスタの実施例に従って処理される様子を示す。割り込みが生じたとき（Ｓ５０）、ＩＧ１５０は、割り込みがペンディングしていることを示すようにポーリングレジスタの値をセットする（Ｓ５２）。たとえば、その値は、割り込みが処理を待っていることを示すフラグであってもよく、あるいは、特定のタイプの割り込みに割り当てられた数値であってもよい。もっとも、説明の目的のために、割り込みが処理を待ち構えているときはいつでも、ポーリングレジスタがその割り込みと関連づけられた割り込みパケットを指しているものと仮定する。
【００５６】
最下位プロセッサがタイマ１８０（図１）から１ティック（時間の刻み）を受け取ると、最下位プロセッサは、ポーリングレジスタを見て割り込みパケットが存在するかどうかを調べるべきかどうか判定する（Ｓ５４）。たとえば、特にプロセッサが通常１０ミリ秒ごとしかタスクを切り替えないならば、最下位プロセッサは１ミリ秒ごとにポーリングレジスタを自動的にチェックすればよい。
【００５７】
ポーリングレジスタがクリアになっているならば、最下位プロセッサと他のＳＰＵは単に自分の現在のペンディング中のタスクを処理する（Ｓ６４）。
【００５８】
ポーリングレジスタがクリアされていないならば、最下位プロセッサは、ポーリングレジスタによって指定された割り込みパケットを用いて、どのタスクが割り込みに応答して実行されるべきかを判定する（Ｓ５６〜Ｓ６０）。最下位プロセッサはその後、そのレジスタをクリアする（Ｓ６２）。
【００５９】
最下位プロセッサまたは他のいずれかのプロセッサが、自分の現在のタスクから割り込みを処理するためのタスクに切り替える場合、図４と関連づけて上で述べたのと同じ動作を実行するのが好ましい。したがって、割込みハンドラタスクが、別の１つのプロセッサが処理しているタスクのうちの１つよりも高い優先度をもつならば、割込みを処理するプロセッサは優先度テーブルを変える。そのことが原因となって、タスク切り替えが起きたときに異なるプロセッサが最下位プロセッサになる。
【００６０】
したがって、本発明のある態様は、割り込みを処理するための次のプロセッサを識別する責任を、複数のプロセッサの集合の中の１つのプロセッサに割り当てることになる。そのプロセッサがタスクを切り替えて、タスク優先度に関する限り、自分はもはや最も重要度が低いプロセッサではないと判定したときはいつでも、そのプロセッサは、その割り込み関連の責任（すなわち、割り込みの処理および次の割り込みを処理するプロセッサの判定）を選択し、最も重要度が低いタスクを実行しているプロセッサに移す。その選択されたプロセッサは、タスク切り替えを経て、別の異なるプロセッサを選ぶまでは、割り込みを処理するように指定される。
【００６１】
上述の動作にしたがって、以下のエレメントは、システムの他のエレメントに対して以下のようにアクセスすることがある。最下位プロセッサは、少なくとも次のことができる。優先度テーブル１６０に対する読み書き、他の複数のＳＰＵ１０８のうちの１つのタスクフラグ１６５への書き込み、および割り込み生成器１５０の指定レジスタ１５１またはポーリングレジスタ１５２への書き込み。通常プロセッサは、少なくとも優先度テーブル１６０に対する読み書きをすることができる。ＩＧ１５０は、少なくとも次のことができる。指定レジスタの実施例において、最下位プロセッサへの情報の送信、指定レジスタの実施例において、指定レジスタ１５１からの読み出し、およびポーリングレジスタの実施例において、ポーリングレジスタ１５２への書き込み。
【００６２】
本発明の利点の１つは、上述の構成要素例や動作に対する多種多様の代替手段に適応する能力があることである。
【００６３】
たとえば、前述の議論の大部分においては、割り込みを処理し、どのプロセッサが次の割り込みを処理するかを管理することのできるプロセッサの例として、複数のＳＰＵを用いた（そして、本発明は、上述のようなＰＥ群に関連づけて用いられるときに特に有利である）が、本発明は他のプロセッサの集合にも適用することができる。たとえば、本発明は、各々のＰＥが、割り込みを処理するプロセッサの集合の中の１つのプロセッサとみなされる図２に示すようなシステムレベルに適用してもよい。
【００６４】
前述の議論は、各々のＳＰＵが１つのタスクだけを実行すると仮定した。しかしながら、本発明は、自分自身でマルチタスクを実行する能力をもつＳＰＵにも等しく適用することができる。もっとも、本発明は、そのようなＳＰＵがこのマルチタスクの能力を発揮するためにマルチビットのタスクフラグをもつようなシステムにおいて好ましい。
【００６５】
優先度テーブル１６０は、追加情報を格納するために用いてもよい。たとえば、優先度テーブルは次の情報列を格納してもよい。（１）ＳＰＵの識別情報、（２）ＳＰＵに割り当てたタスクの識別情報、および（３）そのタスクの優先順位の値。さらに、優先度テーブルは、ＳＰＵ毎に一行の情報を格納してもよい。そのような優先度テーブルは、いろいろなＳＰＵの全ての優先度のスナップショットを提供することができるという利点を有する。もっとも、そのような優先度テーブルが使われるとしても、最下位優先度値のタスクをもつＳＰＵを早期に識別するための手段を提供することが好ましい。
【００６６】
優先度テーブルは、優先度反転の問題を避けるために、追加情報を格納してもよい。優先度反転の問題は以下の場合に起こりうる。通常のプロセッサが、最下位プロセッサよりも低い新しいタスクを受け取る（そして、その通常のプロセッサが「次の最下位プロセッサ」になる）とき、次の最下位プロセッサが優先度テーブルを上書するとき、次の最下位プロセッサが最下位プロセッサよりも高い新しいタスクを受け取るとき、および最下位プロセッサがより高いタスクを受け取り、次の最下位プロセッサに切り替わるとき。もっとも、その次の最下位プロセッサは、もはや最下位タスクをもつプロセッサではない。これを扱うために、優先度テーブルは次の情報を格納してもよい。最も低いタスク優先度を反映している優先度レベル、最下位優先度タスクをもつプロセッサを識別するプロセッサＩＤ、最下位プロセッサの優先度を反映している現（Ｃｕｒｒ）優先度レベル、および最下位プロセッサを識別する現（Ｃｕｒｒ）プロセッサＩＤ（現優先度レベルと現プロセッサＩＤが現在のプロセッサＩＤ情報を指す場合において）。
【００６７】
さらに、指定レジスタの実施例とポーリングレジスタの実施例は、互いに相容れないというものではない。一例としてであるが、ある特定の割り込み情報は、指定レジスタの実施例に従って、ＳＰＵに直ちに送ることができるのに対して、ポーリングレジスタの実施例において、他の割り込み情報が最下位プロセッサによってポーリングできるように設けられてもよい。
【００６８】
逆のことが明示されていない限り、「含む」、「たとえば」のような語句の使用は、「何ら限定することなく含む」ことを意味しており、一般的な記載を制限して、それが特定のもしくは類似した事項または事柄にすぐにでもつながるかのように解釈してはならない。「複数の」事物というときは、少なくとも２つの事物を意味しており、そうでないと明示されていない限り、「１つの」事物というときは、そのような事物を複数使う可能性を除外している。
【００６９】
前述の代替的な実施例の大部分は、互いに相容れないものではないが、特有の利点を成し遂げるために、いろいろな組合せで実行されてもよい。請求項により定義される本発明から逸脱することなく、上述の特徴のさまざまな変形や組み合わせを用いることができる。上記の実施の形態の記載は、請求項により定義される本発明を限定するものではなく、本発明を例示するものとして理解されるべきである。
【図面の簡単な説明】
【００７０】
【図１】実施の形態に係るプロセッサ要素（ＰＥ）の具体的な構成を例示する図である。
【図２】実施の形態に係る複数のＰＥを含むマルチプロセッシングシステムの具体的な構成を例示する図である。
【図３】実施の形態に係るサブ処理ユニット（ＳＰＵ）の具体的な構成を例示する図である。
【図４】タスクの切り替えの際、プロセッサによって実行されるいくつかのステップを示すフローチャートである。
【図５】タスクの切り替えの際、プロセッサによって実行されるいくつかのステップを示すフローチャートである。
【図６】指定レジスタの実施例にしたがって、システムによって実行されるいくつかのステップを示すフローチャートである。
【図７】ポーリングレジスタの実施例にしたがって、システムによって実行されるいくつかのステップを示すフローチャートである。
【符号の説明】
【００７１】
１００  プロセッサ要素、  １０２  Ｉ／Ｏインタフェース、  １０４  ＰＵ、  １０６  ＤＭＡＣ、  １０８  ＳＰＵ、  １１０  メモリインタフェース、  １３０  メモリ、  １５０  割り込み生成器、  １５１  指定レジスタ、  １５２  ポーリングレジスタ、  １６０  優先度テーブル、  １６５  タスクフラグ、  １７０  デバイス、  １８０  タイマ。
【図１】
2006216042.tif 000003
【図２】
2006216042.tif 000004
【図３】
2006216042.tif 000005
【図４】
2006216042.tif 000006
【図５】
2006216042.tif 000007
【図６】
2006216042.tif 000008
【図７】
2006216042.tif 000009