(57)【要約】【課題】割り込み処理の長い遅延時間、およびプロセッサ・キューにおける非効率性を回避する。【解決手段】実行中のタスク６１０の第１の部分は、ダイレクト・メモリ・アクセスによってシステムメモリ６１６に格納される。マイクロ割り込みハンドラ６１２は、割込み信号を操作するために生成され、実行中のタスク６１０の第２の部分は、ＤＭＡチャンネル６１８によってシステムメモリ６１６に格納される。マイクロ割り込みハンドラ６１２は、ＳＰＵ６０２へコピーされ、ＳＰＵ６０２によって実行される。次に、以前に実行していたタスク６１０は、ＤＭＡチャンネル６１８を通じて読み出され、ＳＰＵ６０２に復帰させられる。【選択図】図９
2006216060.tif 000002
【特許請求の範囲】
【請求項１】
システムメモリと、
前記システムメモリと通信する、各々が割り込みチャンネルを有する複数の処理ユニットと、
前記システムメモリに格納された、所定の割り込みと関連付けられるタスクのサブセットを定めるマイクロ割り込みハンドラと、
前記システムメモリに格納される、前記所定の割り込みに関連付けられる、前記タスクのサブセット以外の全てのタスクを定めるハンドラと、
を備えることを特徴とするデータ処理システム。
【請求項２】
複数の処理ユニットの一つが、その割り込みチャンネル上の所定の割り込みを受信するとき、前記複数の処理ユニットの一つは、
システムメモリから所定の割り込みに関連付けられるマイクロ割り込みハンドラを読み込み、
前記マイクロ割り込みハンドラにおいて定められるタスクを実行し、
システムメモリから所定の割り込みに関連付けられるハンドラを読み込み、
前記ハンドラにおいて定められるタスクを実行することを特徴とする請求項１に記載のデータ処理システム。
【請求項３】
前記マイクロ割り込みハンドラは、前記ハンドラより小さいことを特徴とする請求項２に記載のデータ処理システム。
【請求項４】
既存のタスクの実行中に、複数の処理ユニットの一つが所定の割り込みを受信するとき、前記複数の処理ユニットの一つは、
前記既存のタスクの一部をシステムメモリに書き込み、
システムメモリから所定の割り込みに関連付けられるマイクロ割り込みハンドラを読み込み、
システムメモリに前記既存のタスクの残りの部分を書き込み、
前記マイクロ割り込みハンドラにおいて定められるタスクを実行し、
メモリから所定の割り込みに関連付けられるハンドラを読み込み、
前記ハンドラにおいて定められるタスクを実行することを特徴とする請求項１に記載のデータ処理システム。
【請求項５】
前記マイクロ割り込みハンドラは、前記ハンドラより小さいことを特徴とする請求項４に記載のデータ処理システム。
【請求項６】
システムメモリと、
前記システムメモリと通信する、各々が割り込みチャンネルを有する複数の処理ユニットと、
複数のマイクロ割り込みハンドラであって、各々のマイクロ割り込みハンドラが、複数の割り込みの一つと関連付けられ、前記システムメモリに格納され、関連付けられる割り込みと関連付けられるタスクのサブセットを定める複数のマイクロ割り込みハンドラと、
複数のハンドラであって、各々のハンドラが、複数の割り込みの一つと関連付けられ、前記システムメモリに格納され、タスクのサブセットを除き所定の割り込みと関連付けられる全てのタスクを定める複数のハンドラと、
を備えることを特徴とするデータ処理システム。
【請求項７】
複数の処理ユニットの一つがその割り込みチャンネル上の複数の割り込みの一つを受信するとき、前記複数の処理ユニットの一つは、
前記複数のマイクロ割り込みハンドラのうち、受信した割り込みと関連付けられる一つを決定し、
システムメモリから受信した割り込みに関連付けられるマイクロ割り込みハンドラを読み込み、
前記マイクロ割り込みハンドラにおいて定められるタスクを実行し、
システムメモリから受信した割り込みに関連付けられるハンドラを読み込み、
前記ハンドラにおいて定められるタスクを実行することを特徴とする請求項６に記載のデータ処理システム。
【請求項８】
既存のタスクの実行中に、複数の処理ユニットの一つが複数の割り込みの一つを受信するとき、前記複数の処理ユニットの一つは、
前記既存のタスクの一部をシステムメモリに書き込み、
前記複数のマイクロ割り込みハンドラのうち、受信した割り込みと関連付けられる一つを決定し、
システムメモリから受信した割り込みに関連付けられたマイクロ割り込みハンドラを読み込み、
システムメモリに、前記既存のタスクの残りの部分を書き込み、
前記マイクロ割り込みハンドラにおいて定められるタスクを実行し、
システムメモリから受信した割り込みに関連付けられたハンドラを読み込み、
前記ハンドラにおいて定められるタスクを実行することを特徴とする請求項６に記載のデータ処理システム。
【請求項９】
複数のプロセッサを有するシステムにおけるデータ処理方法であって、
前記複数のプロセッサの各々は、割り込みに関連付けられたマイクロ割り込みハンドラおよび割り込みに関連付けられたハンドラを格納するシステムメモリにアクセスし、
前記マイクロ割り込みハンドラは、割り込みに関連付けられたタスクのサブセットを定め、
前記ハンドラは、割り込みに関連付けられた残りのタスクを定めるものであり、
当該方法は、
プロセッサの複数の一つで割り込みを受信するステップと、
システムメモリから、所定の割り込みと関連付けられたマイクロ割り込みハンドラを読み込むステップと、
前記マイクロ割り込みハンドラにおいて定められるタスクを実行するステップと、
システムメモリから、前記所定の割り込みと関連付けられたハンドラを読み込むステップと、
前記ハンドラにおいて定められるタスクを実行するステップと、
を備えることを特徴とするデータ処理方法。
【請求項１０】
前記マイクロ割り込みハンドラは、前記ハンドラより小さいことを特徴とする請求項９に記載の方法。
【請求項１１】
複数のプロセッサの各々は、複数のマイクロ割り込みハンドラおよび複数のハンドラを格納するシステムメモリにアクセスし、前記複数のマイクロ割り込みの各々および前記複数のハンドラの各々は、割り込みに関連付けられ、前記複数のマイクロ割り込みハンドラの各々は関連付けられた割り込みに関係するタスクのサブセットを定め、前記複数のハンドラの各々は、関連付けられた割り込みに関係する残りのタスクを定める、複数のプロセッサを有するシステムにおいて、
前記複数のマイクロ割り込みハンドラのうち、受信した割り込みと関連付けられた一つを決定し、
システムメモリから、受信した割り込みと関連付けられたマイクロ割り込みハンドラを読み込むステップと、
前記マイクロ割り込みハンドラにおいて定められるタスクを実行するステップと、
システムメモリから、前記受信した割り込みと関連付けられたハンドラを読み込むステップと、
前記ハンドラにおいて定められるタスクを実行するステップと、
を備えることを特徴とするデータ処理方法。
【請求項１２】
前記プロセッサが、既存のタスクの一部をシステムメモリに書き込む割り込みを受信するステップをさらに備えることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記マイクロ割り込みハンドラは、前記ハンドラより小さいことを特徴とする請求項１１または１２に記載の方法。
【請求項１４】
複数のプロセッサの各々は、複数のマイクロ割り込みハンドラおよび複数のハンドラを格納するシステムメモリにアクセスし、前記複数のマイクロ割り込みの各々および前記複数のハンドラの各々は、割り込みに関連付けられ、前記複数のマイクロ割り込みハンドラの各々は関連付けられた割り込みに関係するタスクのサブセットを定め、前記複数のハンドラの各々は、関連付けられた割り込みに関係する残りのタスクを定める、複数のプロセッサを有するシステムにおいて、
既存のタスクの一部をシステムメモリに書き込むステップと、
前記複数のマイクロ割り込みハンドラのうち、受信した割り込みと関連付けられた一つを決定し、
システムメモリから、受信した割り込みと関連付けられたマイクロ割り込みハンドラを読み込むステップと、
システムメモリに既存のタスクの残りの部分を書き込むステップと、
前記マイクロ割り込みハンドラにおいて定められるタスクを実行するステップと、
メモリから、前記受信した割り込みと関連付けられたハンドラを読み込むステップと、
前記ハンドラにおいて定められるタスクを実行するステップと、
を備えることを特徴とするデータ処理方法。
【請求項１５】
複数のプロセッサユニットを有する複数のプロセッサエレメントを含むサーバコンピュータであって、
前記複数のプロセッサエレメントの少なくとも一つは、データ処理システムを含み、
当該サーバコンピュータは、
複数のサブ処理ユニットと、
メモリと、
割り込みチャンネルと、
割り込みチャンネルへのブロックを解除するため最少のコンピュータコードを提供する、前記メモリに保存されたマイクロ割り込みハンドラであって、前記割り当てられたサブ処理ユニットによる割り込み信号を受けて、前記複数のサブ処理ユニットの一つから前記割り当てられたサブ処理ユニットへコピーされるマイクロ割り込みハンドラと、
一部を残す割り込みハンドラタスクであって、前記一部を残す割り込みハンドラタスクと前記マイクロ割り込みハンドラが割り込みタスクの全体を定める、一部を残す割り込みハンドラタスクと、
複数のダイレクトメモリアクセスチャンネルと、
前記割り込み信号の受信前に、前記割り当てられたサブ処理ユニットによって実行されるサブ処理ユニットタスクと、を備え、
前記システムは、前記複数のダイレクトメモリアクセスチャンネルを使用して前記メモリに前記サブ処理ユニットタスクを保存し、前記複数のダイレクトメモリアクセスチャンネルを使用して前記割り当てられたサブ処理ユニットに前記マイクロ割り込みハンドラを保存し、前記マイクロ割り込みハンドラを実行し、残っている一部の前記割り込みハンドラタスクを実行することを特徴とするサーバコンピュータ。
【請求項１６】
複数のプロセッサユニットを有する複数のプロセッサエレメントであって、前記複数のプロセッサエレメントの少なくとも一つは、データ処理システムを含む複数のプロセッサユニットと、
複数のサブ処理ユニットと、
メモリと、
割り込みチャンネルと、
割り込みチャンネルへのブロックを解除するため最少のコンピュータコードを提供する、前記メモリに保存されたマイクロ割り込みハンドラであって、前記割り当てられたサブ処理ユニットによる割り込み信号の受信と共に、前記複数のサブ処理ユニットの一つから割り当てられたサブ処理ユニットへコピーされるマイクロ割り込みハンドラと、
前記マイクロ割り込みハンドラが割り込みタスクの全体を定める、一部を残す割り込みハンドラタスクと、
複数のダイレクトメモリアクセスチャンネルと、
前記割り込み信号の受信前に、前記割り当てられたサブ処理ユニットによって実行されるサブ処理ユニットタスクと、を備え、
前記複数のダイレクトメモリアクセスチャンネルを使用して前記メモリに前記サブ処理ユニットタスクを保存し、前記複数のダイレクトメモリアクセスチャンネルを使用して前記割り当てられたサブ処理ユニットに前記マイクロ割り込みハンドラを保存し、前記マイクロ割り込みハンドラを実行し、残っている一部の前記割り込みハンドラタスクを実行することを特徴とするクライアントコンピュータ。
【請求項１７】
ネットワークに接続され、個人用携帯情報端末、コンピュータに接続されたデジタルテレビ、無線コンピュータ、およびこれらの組合せなどのグループから選択される電子機器であって、
複数のプロセッサユニットを有する複数のプロセッサエレメントであって、前記複数のプロセッサエレメントの少なくとも一つは、データ処理システムを含む複数のプロセッサユニットと、
複数のサブ処理ユニットと、
メモリと、
割り込みチャンネルと、
割り込みチャンネルへのブロックを解除するため最少のコンピュータコードを提供する、前記メモリに保存されたマイクロ割り込みハンドラであって、前記割り当てられたサブ処理ユニットによる割り込み信号の受信と共に、前記複数のサブ処理ユニットの一つから割り当てられたサブ処理ユニットへコピーされるマイクロ割り込みハンドラと、
前記マイクロ割り込みハンドラが割り込みタスクの全体を定める、一部を残す割り込みハンドラタスクと、
複数のダイレクトメモリアクセスチャンネルと、
前記割り込み信号の受信前に、前記割り当てられたサブ処理ユニットによって実行されるサブ処理ユニットタスクと、を備え、
前記複数のダイレクトメモリアクセスチャンネルを使用して前記メモリに前記サブ処理ユニットタスクを保存し、前記複数のダイレクトメモリアクセスチャンネルを使用して前記割り当てられたサブ処理ユニットに前記マイクロ割り込みハンドラを保存し、前記マイクロ割り込みハンドラを実行し、残っている一部の前記割り込みハンドラタスクを実行することを特徴とする電子機器。
【請求項１８】
サブ処理ユニットが割り込み信号を受信する以前に、サブ処理ユニットで実行中のタスクを保存するステップと、
第１のダイレクトメモリアクセスチャンネルを使用して、前記サブ処理ユニットが割り込み信号を受信すると共に、割り当てられたサブ処理ユニットに、割り込みチャンネルのブロックを解除するために必要な最少のコンピュータコードを含むマイクロ割り込みハンドラを保存するステップと、
残っている一部の割り込みハンドラタスクをメモリに保存するステップと、
前記マイクロ割り込みハンドラを実行するステップと、
残っている一部の割り込みハンドラタスクを実行するステップと、
を備えることを特徴とするデータ処理方法。
【請求項１９】
前記サブ処理ユニットにおいて実行中のタスクを格納するステップは、第２のダイレクトメモリアクセスチャンネルを使用して前記サブ処理ユニットにおいて実行中のタスクの第１の部分を格納するステップを含むことを特徴とする請求項１８に記載のデータ処理方法。
【請求項２０】
サブプロセッサにおいて実行中のタスクの最初の部分は、プロセッサワードステータスおよびプログラムカウンタを含むことを特徴とする請求項１９に記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理方法およびデータ処理システムに関する。
【背景技術】
【０００２】
マルチプロセッサベースのシステムを含む、プロセッサベースのシステムの多くは、優先順位の高いシステム機器およびＩ／Ｏ機器要求を扱うため割り込みに依存する。複数のプロセシング・ユニットを持つシステムでは、通常各々の処理ユニットは、それ自身のオペレーティングシステム・カーネルを有する。また、各々の処理ユニットは、割り込みハンドリングが必要なタスクを定める割り込みハンドラと呼ばれるソフトウェアコードを、論理ストア（ＬＳ）またはプライベートメモリに含む。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
通常、一端割り込みが発生すると、割り込みチャンネルは、割り込みハンドラが割り込みの処理を完了するまで「ブロック」される。マルチプロセッサ・システムのどこでも起こり得る、特に各々の割り込みチャンネルが特定の割り込みハンドリングの間ブロックされる割り込みの操作は、時に困難である。
【０００４】
更に、マルチプロセッサ・システムにおいて、プロセッサはそれ自身のプライベート・メモリに存在するコードを実行することができるだけである。このように、従来の割り込み技術を使用するときは、各々のプロセッサはプライベート・メモリに格納される潜在的な割り込みを操作するために必要な全ての割り込みハンドラを有していなければならない。コンピュータ・アーキテクチャの見地において、これは相当なスペースの浪費につながる。
【０００５】
一つのＳＰＵにおいて割り込みを集中的にハンドリングするような他の構成は、処理のボトルネックをもたらす可能性がある。さらに、例えば必要性に応じて割り込みハンドラをプロセッサにコピーするような他の変形例は、コピーの間に長いシステム・レイテンシをもたらす可能性がある。
【０００６】
これらスペース、ボトルネック、およびレイテンシ期間の３つの問題があるため、マルチプロセッサ・システム、特にセル・アーキテクチャなど、広く分散されたマルチプロセッサ・システムにおいて、割り込みハンドリングを良好に改善することが要求される。
【課題を解決するための手段】
【０００７】
本発明は、データ処理方法およびデータ処理システムを提供する。本発明の一つの態様において、システムは、システムメモリ、およびシステムメモリと通信する、各々が割り込みチャンネルを有する複数の処理ユニットを含む。マイクロ割り込みハンドラは、システムメモリに格納され、所定の割り込みと関連付けられたタスクのサブセットを定める。割り込みハンドラもまたシステムメモリに格納され、マイクロ割り込みハンドラによって定められるタスクのサブセットを除き、所定の割り込みに関連付けられた全てのタスクを定める。
【０００８】
タスクを実行していない複数の処理ユニットの一つが、その割り込みチャンネルにおける所定の割り込みを受信するとき、多数のステップを実行する。それは、システムメモリから所定の割り込みに関連付けられたマイクロ割り込みハンドラを読み込み、それをそのローカルメモリに格納する。それは、マイクロ割り込みハンドラにおいて定められるタスクを実行する。それは、システムメモリからの所定の割り込みに関連付けられた割り込みハンドラを読み出して、そのローカルメモリに格納する。それはまた、割り込みハンドラにおいて定められるタスクを実行する。マイクロ割り込みハンドラは一般的に、最小限の動作による割り込みの原因を除去するために必要なコードを含む。割り込みハンドラは、割り込みの動作を完了するために必要なコードを含む。
【０００９】
本発明の一つの態様において、マイクロ割り込みハンドラは、割り込みハンドラより小さい。
【００１０】
すでにタスクを実行しているシステムの処理ユニットの一つが割り込みを受信するとき、その処理ユニットは追加的なタスクを実行する。それは、ローカルメモリに格納される実行中のタスクの少なくとも一部を、システムメモリに書き込む。それは、所定の割り込みに関連付けられたマイクロ割り込みハンドラをシステムメモリから読み出し、そのローカルメモリに格納する。処理ユニットが全てのタスクをシステムメモリに書き込まない場合、それは、システムメモリに既存のタスクの残りの部分を書き込む。それにおける処理は、マイクロ割り込みハンドラにおいて定められるタスクを実行する。また、それは、システムメモリからの割り込みに関連付けられた割り込みハンドラを読み出し、割り込みハンドラにおいて定められるタスクを実行する。
【００１１】
本発明の別の態様において、複数の処理ユニット、メモリおよび割り込みチャンネルを含む、データ処理システムが提供される。マイクロ割り込みハンドラは、前記メモリに保存され、割り込みチャンネルへのブロックを解除するため最少のコンピュータコードを提供し、前記割り当てられたサブ処理ユニットによる割り込み信号の受信と共に、前記複数のサブ処理ユニットの一つから割り当てられたサブ処理ユニットへコピーされる。全ての割り込みタスクは、残っている一部の割り込みハンドラタスクおよびマイクロ割り込みハンドラによって定められる。割り当てられたサブ処理ユニットによって実行されるサブ処理ユニットタスクと共に、システムは、複数のダイレクト・メモリ・アクセス・チャンネルを使用してメモリにサブ処理ユニットタスクを保存し、複数のダイレクト・メモリ・アクセス・チャンネルを使用して割り当てられたサブ処理ユニットにマイクロ割り込みハンドラを保存し、マイクロ割り込みハンドラを実行し、残っている一部の割り込みハンドラタスクを実行する。
【００１２】
本発明の別の態様において、ネットワークに接続され、個人用携帯情報端末、コンピュータに接続されたデジタル・テレビ、無線コンピュータ、およびこれらの組合せなどを含む電子装置が、本発明によって提供される。また、複数のプロセサユニットを有する複数のプロセッサエレメントが提供され、少なくとも一つのプロセッサエレメントは、上記のような本発明のデータ処理システムを含む。
【００１３】
本発明の別の態様において、上記のような本発明のデータ処理システムを含むサーバコンピュータが提供される。
【００１４】
本発明の更に別の態様において、上記のような本発明のデータ処理システムを含むクライアントコンピュータが提供される。
【発明を実施するための最良の形態】
【００１５】
本発明は、データ処理方法およびデータ処理システムに関し、マルチプロセシング・コンピュータ・システムに特に適用可能である。
【００１６】
マルチプロセシング・コンピュータ・システムにおいて、全てのプロセッサは、共通の計算モジュール（セルともいう）によって構成される。この種のマルチプロセッサ・コンピュータ・システムは、２００３年２月２５日に発行された米国特許第６,５２６,４９１号に記載されている。また、マルチプロセッサ・コンピュータ・システムは、２００２年９月２６日に公開されたアメリカ特許仮出願番号第２００２/０１３８６３７号に記載されている。
【００１７】
本明細書におけるマルチプロセシング・システムの記載、および前述した特許および特許出願は、セル・アーキテクチャのように周知のコンピュータ・アーキテクチャに関する。この共通のコンピュータモジュールは、共通の構成を有し、同一の命令セットアーキテクチャを用いるのが好ましい。マルチプロセッサのコンピュータシステムは、コンピュータプロセッサを用いて、１以上のクライアント、サーバ、ＰＣ、携帯端末、ゲーム機、ＰＤＡ、セットトップボックス、アプリケーション、デジタルテレビおよび他のデバイスから構成されうる。
【００１８】
本発明は、特定のマルチプロセッサ・コンピュータシステムに関して記載されているが、多種多様なコンピュータ・アーキテクチャに適用を行う。
【００１９】
セル・アーキテクチャにおいては、複数のコンピュータシステムは、また、必要に応じて一つのネットワークのメンバであってもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータの迅速な伝送ができる。またこの構造により、様々なサイズおよび処理能力をもつネットワークメンバの形成、ならびにこれらメンバによって処理されるアプリケーションの準備を簡略化できる。
【００２０】
図１は、セル・アーキテクチャの基本的な処理モジュールを示す図である。それは、プロセッサエレメント（ＰＥ）である。本図に示すように、ＰＥ１は、Ｉ／Ｏインタフェース２と、処理ユニット（ＰＵ）４と、複数のサブ処理ユニット８、すなわち、サブ処理ユニット８Ａと、サブ処理ユニット８Ｂと、サブ処理ユニット８Ｃと、サブ処理ユニット８Ｄとを含む。ローカル（すなわち内部）ＰＥバス１２は、ＰＵ４、ＳＰＵ８群、およびメモリインタフェース１０の間のデータおよびアプリケーションの伝送を行う。ローカルＰＥバス１２は、例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装するとより多くのハードウェアが必要になるが、利用可能な帯域が広がる。
【００２１】
ＰＥ１はディジタルロジック回路を実装する各種方法を利用して構成できる。好適には、ＰＥ１はシリコン基板上の相補的金属酸化膜半導体（ＣＭＯＳ）を用いる一つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるＩＩＩ−Ｂ族化合物が含まれる。ＰＥ１はまた、超伝導材料を用いて高速単一磁束量子（ＲＳＦＱ）ロジック回路等として実装することもできる。
【００２２】
ＰＥ１は、広帯域メモリ接続１６を介してダイナミックランダムアクセスメモリ（ＤＲＡＭ）１４に密接に関連付けられる。ＤＲＡＭ１４は、ＰＥ１のメインメモリとして機能する。メモリ１４は、好適にはダイナミックランダムアクセスメモリ（ＤＲＡＭ）だが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。ＤＭＡＣ６およびメモリインタフェース１０は、ＤＲＡＭ１４、サブ処理ユニット８、およびＰＥ１のＰＵ４の間におけるデータ転送を容易する。ここで、ＤＭＡＣ６および／またはメモリインタフェース１０は、サブ処理ユニット８とＰＵ４とから独立して設置されるようにしてもよいし、一体化されるようにしてもよい。実際に、以下に示す別の構成の代わりに、ＤＭＡＣ６および／またはメモリインタフェース１０は、ＰＵ８および一つ以上（好ましくは全て）のサブ処理ユニット８と一体的に機能することができるＤＭＡＣ６は破線で表示される。
【００２３】
ＰＵ４は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、ＰＵ４はサブ処理ユニット群によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。サブ処理ユニット群は、好適には一命令複数データ（ＳＩＭＤ）プロセッサである。ＰＵ４の制御下で、サブ処理ユニット群はデータおよびアプリケーションの処理を並列に、かつ独立して行う。ＤＭＡＣ６は、ＰＵ４およびサブ処理ユニット８によって、ＤＲＡＭ１４に格納されるデータおよびアプリケーションへのアクセスを制御する。ここで、ＰＵ４は、サブ処理ユニット８のうちの一つとして実装されてもよい。この場合、このサブ処理ユニット８は、メイン処理ユニットＰＵによる処理、すなわち各々のサブ処理ユニット８によるデータとアプリケーションの処理のスケジューリングと統合処理を行うものとすればよい。
【００２４】
このモジュール構造では、あるコンピュータシステムで使用されるプロセッサエレメントの数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは４つのプロセッサエレメント、ワークステーションは二つのプロセッサエレメント、ＰＤＡは一つのプロセッサエレメントを使用することができる。あるソフトウェアセルの処理に割り当てられるプロセッサエレメントのサブ処理ユニットの数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
【００２５】
図２は、サブ処理ユニット８の好ましい構造および機能を示す。サブ処理ユニット８は、ローカルメモリ５０、レジスタ５２、一つ以上の浮動小数点ユニット５４、および一つ以上の整数ユニット５６を含む。しかし、必要な処理能力に応じて、多数または少数の浮動小数点ユニット５４および整数ユニット５６が用いられてもよい。好適な実施の形態では、ローカルメモリ５０は２５６キロバイトのメモリを有し、レジスタ５２の容量は１２８×１２８ビットである。浮動小数点ユニット５４は、１秒につき３２０億の浮動小数点演算（３２ギガフロップス）の速度で演算することが好ましく、整数ユニット５６は、１秒につき３２０億の動作（３２のギガオプス）の速度で演算することが好ましい。
【００２６】
ローカルメモリ５０は、キャッシュメモリであってもよく、なくてもよい。ローカルメモリ５０は、好適にはスタティックＲＡＭ（ＳＲＡＭ）として構成される。処理ユニット４は、処理ユニット４によって開始されたダイレクト・メモリ・アクセスのためのキャッシュ整合性サポートを要求してもよい。しかし、キャッシュ整合性サポートは、処理ユニット４によって開始されたダイレクト・メモリ・アクセスのため、または外部装置からのおよび外部装置へのアクセスのためには要求されない。
【００２７】
サブ処理ユニット８は、アプリケーションおよびデータをサブ処理ユニット８へおよびサブ処理ユニット８から発信するためのバス・インターフェース（Ｉ／Ｆ）５８を更に含む。好適な実施の形態では、バスＩ／Ｆ５８は、それは、表示されているように、サブ処理ユニット８内に一体的に配置され、または外部に配置されることができることを表すため破線で示されるＤＭＡＣ２０６に結合する。一対のバス６８Ａ、６８Ｂは、バスＩ／Ｆ５８およびローカルメモリ５０の間で、ＤＭＡＣ２０６を相互接続する。バス６８Ａ、６８Ｂは、２５６ビット長であることが好ましい。
【００２８】
サブ処理ユニット８は、内部バス６０、６２および６４を更に含む。好適な実施の形態では、内部バス６０は２５６ビットの幅を有し、ローカルメモリ５０とレジスタ５２との間における通信を提供する。バス６２および６４は、レジスタ５２と浮動小数点ユニット５４との間、およびレジスタ５２と整数ユニット５６との間のそれぞれにおける通信を提供する。好適な実施の形態では、レジスタ５２から浮動小数点ユニットまたは整数ユニットへのバス６４および６２の幅は３８４ビットであり、浮動小数点ユニット５４または整数ユニット５６からレジスタ５２へのバス６４および６２の幅は１２８ビットである。これらのユニットからレジスタ５２までよりも大きな、レジスタ５２から浮動小数点ユニット５４または整数ユニット５６へのこれらのバスの幅は、処理の間、レジスタ５２からより大きいデータフローを収容する。最高３つのワードが、各々の算出のために必要とされる。しかし、各々の算出の結果は、通常一つのワードだけである。
【００２９】
図３から６は、図１に示すような多数のプロセッサエレメントが、高められた処理能力を提供するために共に接続されまたは組み合わされるマルチプロセシング・システムを示す図である。例えば、図３に示されるように、２つ以上のプロセッサエレメント１Ａ、１Ｂは、１セットのマルチプロセッサ装置を形成するために、例えば一つ以上のチップパッケージ内に、ともに実装されまたは接続されることができる。この構成は、広帯域エンジン（ＢＥ）と称してもよい。図３に示されるように、広帯域エンジン８０は、２つのプロセッサエレメント１Ｂ、１Ａを含み、バス１２の上のデータ通信のために相互接続される。追加的なデータバス１６は、好適にはプロセッサエレメント１Ａ、１Ｂおよび共有ＤＲＡＭ１４の間で通信ができるようにするために提供される。一つ以上のＩ／Ｏ（ｉｎｐｕｔ/ｏｕｔｐｕｔ）インターフェース２０２Ａおよび２０２Ｂおよび外部バス（図示せず）は、広帯域エンジン８０といかなる外部要素との間の通信をも提供する。広帯域エンジン８０の各々のプロセッサエレメント１Ａおよび１Ｂは、上記図２において説明したサブ処理ユニット８によるアプリケーションおよびデータの並行および独立処理と同じように並行におよび独立に、データおよびアプリケーションの処理を実行する。
【００３０】
図４は、マルチプロセシング・システムの好適な実施例の一つのブロック図を示す図であり、マルチプロセシング・システム１００は、バス１０８を介してたとえば共有メモリ（ＤＲＡＭ）１０６などのメモリに結合された複数の（いくつでもよい）プロセッサ１０２を含む。なお、共有メモリ１０６は要求されない（そして、このように破線で示される）。実際に、一つ以上の処理ユニット１０２には、それ自身のメモリ（図示せず）を使用でき、共有メモリ１０６を必要としない。
【００３１】
プロセッサ１０２の一つは、好適にはメイン処理ユニット（例えば処理ユニット１０２Ａ）である。他の処理ユニット１０２は、好適には複数のサブ処理ユニット（ＳＰＵｓ）（たとえば処理ユニット１０２Ｂ、１０２Ｃ、１０２Ｄ、その他）である。処理ユニット１０２は、周知のコンピュータ・アーキテクチャのいずれかを使用して行うことができる。処理ユニット１０２の全てが、同じアーキテクチャを使用して設けられる必要があるというわけではなく、実際にはそれらは異種または同種の構成であってもよい。演算において、サブ処理ユニット１０２Ｂ−Ｄがこれらのデータおよびアプリケーションの処理を並行しておよび独立に実行するように、メイン処理ユニット１０２Ａは、サブ処理ユニット１０２Ｂ−Ｄによって、データおよびアプリケーションの処理をスケジューリングし、編成する。
【００３２】
なお、例えば同じチップ、同じパッケージ、同じ回路基板、同じプロダクトにおいて、メイン処理ユニット１０２Ａが、サブ処理ユニット１０２Ｂ−Ｄに対してローカルに配置されていてもよい。あるいは、例えば異なるプロダクトで、メイン処理ユニット１０２Ａは、サブ処理ユニット１０２Ｂ−Ｄからリモートに配置されてもよい。それはバス、コミュニケーション・ネットワーク（例えばインターネット）等を通じて結合されることができる。同様に、サブ処理ユニット１０２Ｂ−Ｄは、相互にローカルにまたはリモートに配置されることができる。
【００３３】
関連付けられたサブ処理ユニットは、更に一つ以上のサブ処理ユニット、または、たとえばシステム１００（図４）、システム１（図１）、および／またはシステム８０（図３）のような、一つ以上の更なるマルチプロセシング・ユニットを含むことができる。以上の説明から当業者にとって明らかなように、関連付けられたサブ処理ユニットは、一つ以上のサブ処理ユニットのそれぞれのグループを含むことができる。各々グループは、それぞれのメイン処理ユニットと関連付けられた。図４のシステム１００では、メイン処理ユニットはプロセッサ１０２Ａであり、サブ処理ユニットのそれぞれのグループは、メイン処理ユニット１０２Ａと関連付けられたプロセッサ１０２Ｂ−Ｄを含む。同様に、図１のシステム１が用いられる場合、関連付けられたサブ処理ユニットは、更にメイン処理ユニット４と関連付けられたサブ処理ユニット８Ａ−Ｄを含むことができる。更に図９のシステム８０（広帯域エンジン）が使用される場合、関連付けられたサブ処理ユニットは、サブ処理ユニット２０８Ａ１−Ｄ１の追加的な二つ（またはそれ以上）のグループを含むことができる。サブ処理ユニット２０８Ａ１−Ｄ１は、メイン処理ユニット、およびメイン処理ユニット２０４Ｂと関連付けられたサブ処理ユニット２０８Ａ２−Ｄ２と関連付けられる。
【００３４】
この点において、関連付けられたグループのサブ処理ユニット（および、それぞれ関連付けられたメイン処理ユニット）は、例えば図３において、それぞれのグループのサブ処理ユニットが共通データバス１２Ａまたは１２Ｂを共有するように、マルチプロセシング・ユニットのセットの一部であってもよい。代わりに、または加えて、一つ以上のそれぞれの関連付けられたサブ処理ユニットのグループは、図１または２において図示されるように、それぞれのグループのサブの間に共通データバスが存在しないスタンドアローンであってもよい。さらに、一つ以上のそれぞれの関連付けられたサブ処理ユニットのグループは、少なくともいくつかのサブ処理ユニットが相互にリモートに配置される、分散されたマルチプロセシング・ユニットの少なくとも一部であってもよい。
【００３５】
図５において、１セットの一部またはスタンドアローン形態の一部におけるそれぞれのマルチプロセシング・ユニットは、共通のまたは異なる回路基板に、共通のまたは異なるプロダクトに、および／または共通のまたは異なる位置に配置されていてもよい。図５に示されるように、（（図１に表される）マルチプロセッサエレメント１のそれぞれのセットを含むことが生じ得る、）一対の広帯域エンジン８０Ａおよび８０Ｂは、共通の回路基板４０に配置される。この例では広帯域エンジン８０Ａおよび８０Ｂが示されているが、独立のマルチプロセシング・ユニット（例えば、図１のプロセッサエレメントを使用して）がまた考えられる。それぞれのマルチプロセシング・ユニット８０Ａおよび８０Ｂは、ブロードバンド・インターフェース（ＢＩＦ）４２を介して、相互接続される。
【００３６】
図６において、複数のマルチプロセシング・ユニット８０Ａ−Ｄは、異なる回路基板４０に配置されていてもよく、一方、回路基板４０は、単一プロダクト４４に配置される。より詳細には、マルチプロセシング・ユニット８０Ａおよび８０Ｂは、共通の回路基板４０Ａに配置され、一方、マルチプロセシング・ユニット８０Ｃおよび８０Ｄは、異なる回路基板４０Ｂに配置される。しかし、回路基板４０Ａおよび４０Ｂは、単一プロダクト４４内に配置される。このように、それぞれのマルチプロセシング・ユニット８０Ａ−Ｄ間のデータ通信は、イントラ回路基板部およびインター回路基板部を含むことができる広帯域インタフェース（ＢＩＦ）５０２を介して行われることができる。
【００３７】
上記のように、それぞれのマルチプロセシング・ユニットの関連サブ処理ユニット（例えば１０２Ｂ−Ｄおよび／または２０８Ａ−Ｄ）は、異なるプロダクトに配置されていてもよい。したがって、このようなプロダクト（およびサブ処理ユニット）の間におけるデータ通信は、単一プロダクトの範囲内でのバスインターフェースおよび／またはブロードバンド・インタフェース以上のものを使用しなければならない。この点において、以下図７を参照する。ここで、独立のマルチプロセシング・エレメント２０８または複数のマルチプロセシング・エレメント２８０（マルチプロセシング・エレメントのセット）は、マルチプロセシング・システム５００を形成するために複数のプロダクトに分配されることができる。（コンピュータおよび／または計算装置として設けられる）システム５００のエレメントまたはメンバーは、好適にはネットワーク５０４上の通信上におかれる。ネットワーク５０４は、インターネットまたは他のコンピュータネットワークのような、ローカル・エリア・ネットワーク（ＬＡＮ）、グローバルネットワークであってもよい。
【００３８】
ネットワーク５０４に接続するメンバーは、例えば、クライアントコンピュータ５０６、サーバコンピュータ５０８、パーソナル携帯情報機器（ＰＤＡ）５１０、５１２、デジタル・テレビ（ＤＴＶ）、および有線またはワイヤレスのコンピュータおよび計算装置を含む。例えば、クライアントは５０６Ａは、一つ以上のプロセッサエレメント１または他の適切なマルチプロセシング・システムから構成されるラップトップ・コンピュータであってもよい。クライアントコンピュータ５０６Ｂは、一つ以上のプロセッサエレメント１または他の適切なマルチプロセシング・システムから構成されるデスクトップ・コンピュータ（またはセットトップボックス）であってもよい。更に、サーバは５０６Ａは、好適には一つ以上のプロセッサエレメント１、およびその他から構成される、（データベース機能を使用する）管理部であってもよい。
【００３９】
マルチプロセシング・システム５００の処理能力は、（例えば一つのプロダクトのように）ローカルに配置され、または（例えば、多数のプロダクトのように）リモートに配置される、複数のプロセッサエレメント１に依存することができる。この点において、一つ以上の本発明の態様における、全体的なコンピュータネットワークのブロック図である図８を参照する。また、プロセッサエレメント１および／または（多数のプロセッサエレメントでできている）広帯域エンジン８０は、コンピュータ・システム５００のための全体的な分散アーキテクチャを実装するために用いられてもよい。
【００４０】
システム５００のサーバコンピュータ５０８は、クライアントコンピュータ５０６より多くのデータおよびアプリケーションの処理を実行するので、サーバコンピュータ５０８は、（例えば処置ユニット２００など）より多くのコンピュータ・モジュール、そしてクライアントコンピュータ５０６を含む。他方、ＰＤＡ５１０は、この例では、最少限の処理を実行する。このように、ＰＤＡ５１０は、最も少ない数のプロセッサエレメント１（例えば単一のプロセッサエレメント１）を含む。ＤＴＶ５１２は、実質的にクライアントコンピュータ５０６のものとサーバコンピュータ５０８のものとの間にある処理のレベルを実行する。このように、ＤＴＶ５１２は、クライアントコンピュータ５０６およびサーバコンピュータ５０８のそれの間で、多くのプロセッサエレメントを含む。
【００４１】
本発明は、マイクロ割り込みハンドラ（割り込み処理サブルーチン）によってデータ処理システム及びデータ処理方法を提供する。本発明のシステム及び方法は、図１から６と共に説明した先行のマルチプロセッサ・システムのようなマルチプロセッサ・システムと共に使用されるとき、効果的な割り込みの操作を提供する。
【００４２】
図９は、本発明の一つの態様を示す図である。プロセッサ（例えばＳＰＵ６０２）は、割り込み信号６０４を受信することができる。ＳＰＵ６０２へ割込み信号６０４が入力されたとき、ＳＰＵ６０２は、タスクを実行しているか確認するためチェックする。タスクが実行を開始している場合、ＳＰＵ６０２は、タスクをどうするべきかについて決定しなければならない。図９において、タスク６１０は、ＳＰＵ６０２のローカルメモリに在駐し、ＳＰＵ６０２によって実行される。図９の場合では、実行中のタスク６１０の第１の部分は、ダイレクト・メモリ・アクセスによってメモリに格納される。マイクロ割り込みハンドラ６１２は、割込み信号を操作するために生成され、実行中のタスクの第２の部分は、ＤＭＡチャンネル６１８を介してメモリ６１６に格納される。マイクロ割り込みハンドラ６１２は、ＳＰＵ６０２へコピーされ、ＳＰＵ６０２によって実行される。次に、以前に実行していたタスク６１０は、ＤＭＡチャンネル６１８を通じて読み出され、ＳＰＵ６０２に復帰させられる。割り込み処理の長い遅延時間、およびプロセッサ・タスク・キューにおける非効率性は、本発明によって回避される。実行中のタスク６１０の第１の部分は、プロセッサ・ステータス・ワード（ＰＳＷ）およびプログラム・カウンタＰＣを含むことができる。マイクロ割り込みハンドラは、割り込みを操作するために使用されるプログラムである。それは、割り当てられたＳＰＵに割り込みチャンネルを提供するために必要な、最少のコードを含む。実行中のタスクの第２の部分は、ダイレクト・メモリ・アクセスによって書き込まれる。
【００４３】
本発明は、その割り込みチャンネルを開放し、割り当てられたＳＰＵによって操作される割り込みを許可するために、特定の割り込みハンドラが、割り込みの受信において、最少のプログラム・コードなどをマイクロ割り込みハンドラにＤＭＡを通じてコピーすることを許可する。
【００４４】
図９における本発明の好適な実施例において、本発明による割り込みは、以下のように発生する。（１）ＳＰＵ６０２は、割り込み信号６０４を受信する。（２）ＳＰＵ６０２上で動作している現在のタスク６１０の第１の部分は、ＤＭＡチャンネル６１４を介してシステムメモリ６１６に格納される。（３）割り込み信号６０４のマイクロ割り込みハンドラ６１２は、ＤＭＡチャンネル６１４を介してシステムメモリ６１６から読み出される。（４）以前に実行していた他のタスクは、システムメモリにＤＭＡチャンネル６１４を介して書き込まれる。（５）マイクロ割り込みハンドラ６１２は、ＳＰＵ６０２によって実行され、（６）割り込みハンドラ６２２の残りの部分は、システムメモリからＳＰＵ６０２によって読み出され、ＳＰＵ６０２によって実行される。その後、タスク６１０は、メモリ６１６から読み出され、割り込みの前に実行していたＳＰＵ６０２における処理は継続する。
【００４５】
割り込みの間に実行されるタスクは、マイクロ割り込みハンドラおよび割り込みハンドラの間で分割される。各々のマイクロ割り込みハンドラおよび割り込みハンドラは、割り込みの間に実行されるタスクを定めるソフトウェアコードのある量のラインを含む。割り込みハンドラは、割り込みによって実行されるタスクを定めるコードの残りを含む。割り込みハンドラは、マイクロ割り込みハンドラに含まれない、割り込みと関連付けられた全てのコードを含む。
【００４６】
図１０は、本発明の一つの態様において、割り込みを操作するとき、例えばサブ処理ユニットなどの処理ユニットによって実行されるステップのフローチャートである。特に、図１０に示されるステップは、割り込みを受信したときにタスクを実行していないプロセッサのように、動作していない処理ユニットによる場合である。
【００４７】
ステップ７００において、処理ユニットは割り込みを受信する。割り込みを受信する処理ユニットは、以前に開示された処理ユニットのいずれかであってもよい。本発明の一つの態様において、図１から８に表されるセル・アーキテクチャを有するシステムを使用するとき、サブ処理ユニット８は、割り込みを受信する。
【００４８】
ステップ７０２において、割り込みを受信する処理ユニットは、どのマイクロ割り込みハンドラが割り込みに関連付けられているか否かを決定する。これは、システムにおいて生じ得る様々な割り込みにマイクロ割り込みハンドラを関連付けるルックアップテーブルによって達成することができる。割り込み受信と共にこのテーブルを参照することにより、適切なマイクロ割り込みハンドラが識別される。
【００４９】
ステップ７０４において、割り込みを受信する処理ユニットは、システムメモリにアクセスする。システムメモリは、全ての処理ユニットからアクセスすることができ、通常特定の処理ユニットに関連付けられていない。システムメモリは、システムで生じ得る全ての割り込みのための全てのマイクロ割り込みハンドラを格納する。ステップ７０２において決定される情報に基づいて、処理ユニットは、システムメモリから受信した割り込みに関連付けられたマイクロ割り込みハンドラを読み出す。マイクロ割り込みハンドラは、割り込みを受信するプロセッサのローカルメモリに格納される。勿論、どのマイクロ割り込みハンドラがプロセシング・ユニットによって読み出されるべきか否かを決定する機能は、例えばシステムメモリなど、処理ユニットの外部に組み込まれていてもよい。この場合、プロセッサは、システムメモリ、または他の構成要素に、どの割り込みを受信したかを通知する。システムメモリは、処理ユニットによる要求に応じて、割り込みを受信する処理ユニットに適切なマイクロ割り込みハンドラを分配する。
【００５０】
ステップ７０６において、処理ユニットはマイクロ割り込みハンドラを実行する。前述したように、マイクロ割り込みハンドラは、割り込みの間に実行するために必要な、タスクの小さい部分を定めることが好ましい。このように、本発明の好適な実施例において、マイクロ割り込みハンドラは、割り込みのための割り込みハンドラよりデータ量が小さく、このため実行負担も小さい。
【００５１】
ステップ７０８において、割り込みを受信した処理ユニットは、システムメモリから受信した割り込みに関連付けられた割り込みハンドラを読み出すためにシステムメモリにアクセスする。前述のように、例えば割り込みハンドラを割り込みに関連付けるルックアップテーブルを使用することによって、受信した割り込みに関連付けられた割り込みハンドラは、処理ユニットで決定されることができる。これは、適切なマイクロ割り込みハンドラを決定するために用いられる同一のルックアップテーブルであってもよくて、また、アクセスするための正しいマイクロ割り込みハンドラの決定と同時に達成されてもよい。あるいは、システムメモリから読み出される適切な割り込みハンドラは、例えば類似するルックアップテーブルによって、システムメモリなど処理ユニットの外部において決定されることができる。割り込みハンドラは、読み出されると、割り込みを受信したプロセッサのローカルメモリに格納される。ステップ７１０において、処理ユニットは割り込みハンドラを実行する。
【００５２】
図１０において、マイクロ割り込みハンドラを実行するステップの後実行する、システムメモリから割り込みハンドラを読み出すステップを示す。処理ユニットは、マイクロ割り込みハンドラを実行する前に、割り込みハンドラを読み出すことも可能である。しかし、本発明の好適な実施例において、割り込みハンドラを読み出すステップは、マイクロ割り込みハンドラを実行するステップの後、実行される。これによって、マイクロ割り込みハンドラを表すコードは、割り込みを受信するプロセッサのローカルメモリのスペースを確保するために、処理ユニットのローカルメモリから迅速に削除される。
【００５３】
図１０は、動作していない処理ユニットにおける、割り込みを受信する処理によって実行されるステップを示す図である。割り込みを受信する処理ユニットが動作しているとき、すなわちタスクを実行しているときに、追加ステップが実行される。図１１および図１２は、本発明の好適な実施例において、割り込みを受信する動作中の処理ユニットによって実行されるステップを示す図である。
【００５４】
ステップ７２０において、処理ユニットは割り込みを受信する。この時、処理ユニットは、その処理ユニットによって実行中の、ローカルメモリに格納されるタスクを有する。割り込み処理の間、処理ユニットは、タスクの実行中に生成された情報を失わないよう注意しなければならない。このように、ステップ７２２において、割り込みを受信する処理ユニットは、そのローカルメモリからシステムメモリへ、実行中のタスクの少なくとも一部を書き込む。
【００５５】
ステップ７２３において、割り込みを受信する処理ユニットは、どのマイクロ割り込みハンドラが受信した割り込みに関連付けられているか否かを決定する。このステップは、動作していない処理ユニットにおいて、前述したものと類似する。例えば、このステップは、ルックアップテーブルを使って前述と同様の方法で行うことができる。
【００５６】
ステップ７２４において、ステップ７２３で決定される情報に基づいて、割り込みを受信する処理ユニットは、システムメモリから適切なマイクロ割り込みハンドラを読み出す。ステップ７２６において、割り込みを受信する処理ユニットは、処理ユニットのローカルメモリからシステムメモリへ、実行中のタスクの残りを書き込む。
【００５７】
ステップ７２８において、割り込みを受信した処理ユニットは、関連付けられたマイクロ割り込みハンドラを実行する。なお、ステップ７２６およびステップ７２８は、並行して同時に実行されてもよい。ステップ７３０において、割り込みを受信する処理ユニットは、システムメモリから受信した割り込みに関連付けられた割り込みハンドラを読み出し、ステップ７３２において、割り込みを受信する処理ユニットは、割り込みハンドラを実行する。これにより、割り込みによって発生する、割り当てられたタスクを実行する。
【００５８】
ステップ７３４において、割り込みを受信した処理ユニットは、割り込み処理を完了し、好適には以前に実行していたタスクの処理を継続する。したがって、処理ユニットは、システムメモリから以前に動作していたタスクを復活させ、タスクを処理ユニットのローカルメモリに格納する。ステップ７３６において、処理ユニットはタスクの実行を再開する。
【００５９】
図１３は、本発明の好適な実施例において、実行中のタスクＴおよび割り込みハンドラＡが分割された状態を示す図である。タスクＴは、割り込み受信したときに、ローカルメモリ内で処理ユニットによって実行中のタスクである。割り込みハンドラＡは、システムメモリに格納されている。
【００６０】
処理ユニットは、割り込みを受信したときにタスクを実行中である場合、実行中のタスクＴを、第１タスクＴ１および第２タスクＴ２に分割してシステムメモリに送信する。このとき、処理ユニットは、第１タスクＴ１のデータサイズが、後述するマイクロ割り込みハンドラＡ１のデータサイズと同一またはわずかに大きくなるようタスクＴを分割する。このようにタスクＴが分割されることによって、第１タスクＴ１がシステムメモリに格納された場合に、第１タスクＴ１が占有していたローカルメモリの領域へのマイクロ割り込みハンドラＡ１の格納が可能となる。また、第１タスクＴ１のデータサイズは小さいので、短い時間での第１タスクＴ１のシステムメモリへの格納が可能となる。
【００６１】
また、処理ユニットは、割り込みハンドラＡをマイクロ割り込みハンドラＡ１および割り込みハンドラＡ２に分割してローカルメモリに読み出す。このとき、割り込みハンドリングシステムは、マイクロ割り込みハンドラＡ１が割り込みハンドラＡ２よりもデータサイズが小さく、実行負荷も小さくなるように分割する。マイクロ割り込みハンドラＡ１は、最低限のサービスを提供するサブルーチンによって構成され、通常は１−２ＫＢ程度の小さいデータサイズを有する。
【００６２】
図１４は、従来の割り込みハンドリング方法および本発明の好適な実施例に係る割り込みハンドリング方法のそれぞれにおけるコマンド実行タイミングとデータ転送タイミングを比較した図である。
【００６３】
ローカルメモリ内で処理ユニットによって実行中のタスクは、通常比較的大きなサイズを有する。また、システムメモリに格納されているハンドラも通常比較的大きなサイズを有する。割り込みハンドリングでは、ローカルメモリにあるタスクをシステムメモリに書き出すという処理と、システムメモリにある割り込みハンドラをローカルメモリに読み出す処理が実行される。
【００６４】
本実施形態に係る処理ユニットは、データを１バイトあたり約１クロックサイクルの割合で転送する。処理ユニットはクロック周波数３．２ＧＨｚで動作する。このため、処理ユニットは、１００ＫＢのデータの転送のために３０μｓｅｃを必要とし、１ＫＢのデータ転送のために０．３μｓｅｃを必要とする。また、タスクＴのデータサイズは１００ＫＢ、割り込みハンドラＡの全体のデータサイズは２０ＫＢ、マイクロ割り込みハンドラＡ１のデータサイズは１ＫＢである。
【００６５】
従来の割り込みハンドリング方法１では、処理ユニットは、ＤＭＡコマンドを実行すると、まずウエイトコマンドを実行すると共に実行中のタスクＴ全てをシステムメモリに書き込む。タスクＴの書き込みが終了すると、処理ユニットはＤＭＡコマンドを実行する。ＤＭＡコマンドの実行には約１０クロックサイクルの時間を要する。ＤＭＡコマンドの実行が終了すると処理ユニットはウエイトコマンドを実行すると共に割り込みハンドラＡのシステムメモリからの読み出しを開始する。割り込みハンドラＡの読み出しが終了すると、処理ユニットは割り込みハンドラの実行を開始する。このため、処理ユニットは、タスクＴの書き込み、ＤＭＡコマンドの実行、および割り込みハンドラの読み出しが完了した後、割り込みハンドラの実行を開始することができる。なお、ウエイトコマンドが実行されることによって、実行中のタスクをシステムメモリに書き込む間、または割り込みハンドラをローカルメモリに読み出す間のＤＭＡコマンドの実行が抑制される。
【００６６】
従来の割り込みハンドリング方法２では、処理ユニットは、フェンスコマンドによってＤＭＡコマンドを実行する。これによって、処理ユニットは、ＤＭＡコマンドおよびウエイトコマンドを実行することなく、タスクＴの書き込みの終了後すぐに割り込みハンドラの読み出しを開始することができる。フェンスコマンドを実行することによって、処理ユニットは、タスクＴの書き込みおよび割り込みハンドラの読み出しが完了した後、割り込みハンドラの実行を開始することができる。したがって、従来の割り込みハンドリング方法２は、割り込みハンドラの実行を従来の割り込みハンドリング方法１よりもＤＭＡコマンドの実行時間だけ早く開始することができる。本方法では、タスクＴの書き込みに３０μｓｅｃ、割り込みハンドラＡの読み出しに７μｓｅｃが必要とされ、割り込み信号を受信してから割り込みハンドラを実行するまで合計３７μｓｅｃが必要とされる。
【００６７】
これに対し、本実施例の割り込みハンドリング方法では、処理ユニットは、フェンスコマンドによってＤＭＡコマンドを実行し、第１タスクＴ１の書き込み終了後すぐにマイクロ割り込みハンドラＡ１の読み出しを開始する。マイクロ割り込みハンドラＡ１を読み出すと、処理ユニットは、フェンスコマンドによってＤＭＡコマンドを実行し、第２タスクＴ２の書き込み終了後すぐに割り込みハンドラＡ２の読み出しを開始する。
【００６８】
割り込みの種類によっては、マイクロ割り込みハンドラＡ１だけで割り込み要求を満たすことができる場合がある。この場合、第２タスクＴ２の書き込みおよび割り込みハンドラＡ２の読み出しは必要とされない。このため、割り込みハンドラを実行する時間が大幅に短縮される。本方法では、第１タスクＴ１の書き込みに０．３μｓｅｃ、マイクロ割り込みハンドラＡ１の読み出しに０．３μｓｅｃが必要とされ、割り込み信号を受信してから割り込みハンドラを実行するまで合計０．６μｓｅｃが必要とされる。
【００６９】
コンテキストスイッチを要求する場合などは、割り込みハンドラ全体を実行しなければならない。このときは、割り込みハンドラＡ２を読み出す必要がある。しかし、この場合ではマイクロ割り込みハンドラＡ１の実行と第２タスクのシステムメモリへの書き込みを並行して実行することができ、効率的な割り込みハンドリングを実現することが可能となる。
【００７０】
以上、特定の実施例を参照して本発明について説明したが、これらの実施例は、単に本発明の原理およびアプリケーションを例示するだけであることは理解されることろである。したがって、多数の変形が例示の実施例になされ得ることは理解されるところであり、請求の範囲に記載の本発明の趣旨および範囲から逸脱することなく、他の変形例が設けられることが可能である。
【図面の簡単な説明】
【００７１】
【図１】基本的な処理モジュールまたはプロセッサエレメントのブロック図である。
【図２】好適なサブ処理ユニッの構造および機能を示す図である。
【図３】マルチプロセッサ・ユニットのセットを形成するため一つ以上のチップパッケージにともに実装されまたは接続されるプロセッサエレメントを示す図である。
【図４】マルチプロセシング・システムの好適な実施例の一つのブロック図である。
【図５】セットの一部、およびスタンドアローン形態の一部のマルチプロセシング・ユニットを示す図である。
【図６】単一の製品に配置された異なる回路基板に配置され得る、複数のマルチプロセシング・ユニットを示す図である。
【図７】スタンドアローンのマルチプロセシング・エレメント、またはマルチプロセシング・システムを形成しるうために複数のプロダクトの間に分散され得る広帯域エンジン（マルチプロセシング・エレメントのセット）を示す図である。
【図８】本発明の一つ以上の態様おける、コンピュータネットワーク全体のブロック図である。
【図９】本発明の一つの態様をブロック図を用いて表した図である。
【図１０】本発明の一つの態様における処理ステップを示す図である。
【図１１】本発明の一つの態様における処理ステップを示す図である。
【図１２】本発明の一つの態様における処理ステップを示す図である。
【図１３】本発明の好適な実施例において、実行中のタスクおよび割り込みハンドラが分割された状態を示す図である。
【図１４】従来の割り込みハンドリング方法および本発明の好適な実施例に係る割り込みハンドリング方法のそれぞれにおけるコマンド実行タイミングとデータ転送タイミングを比較した図である。
【符号の説明】
【００７２】
６０２  ＳＰＵ、  ６０４  割り込み信号、  ６１０  タスク、  ６１２  マイクロ割り込みハンドラ、  ６１４  ＤＭＡチャンネル、  ６１６  メモリ、  ６１８  ＤＭＡチャンネル。
【図１】
2006216060.tif 000003
【図２】
2006216060.tif 000004
【図３】
2006216060.tif 000005
【図４】
2006216060.tif 000006
【図５】
2006216060.tif 000007
【図６】
2006216060.tif 000008
【図７】
2006216060.tif 000009
【図８】
2006216060.tif 000010
【図９】
2006216060.tif 000011
【図１０】
2006216060.tif 000012
【図１１】
2006216060.tif 000013
【図１２】
2006216060.tif 000014
【図１３】
2006216060.tif 000015
【図１４】
2006216060.tif 000016