(57)【要約】【課題】複数のプロセッサにおけるコンテキストの復帰や退避によるアクセスの競合を軽減することが可能なコンテキスト切替え装置を提供する。【解決手段】コンテキス切替え装置１０は、コンテキストデータの転送を連続サイクルで行う第１転送モード、およびコンテキストデータ転送をサイクル毎に対象とするプロセッサを切替えながら行う第２転送モードの少なくとも一方によりコンテキストデータを転送する転送手段と、Ｍ個より多い数のプロセッサからのコンテキスト切替え要求が競合した場合に、第１転送モードの対象とすべきプロセッサと、第２転送モードの対象とすべきプロセッサとを決定し、決定に従って転送手段を制御する制御手段とを備える。【選択図】図１
2007102646.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムを切替えながら実行するＮ個のプロセッサと、Ｍ（Ｍ＜Ｎ）個のアクセスポートを有し、前記Ｎ個のプロセッサから退避されたコンテキストデータを記憶する共有メモリとを含む並列システムに用いられ、各プロセッサと共有メモリとの間でコンテキストデータを並列に転送することによって各プロセッサのコンテキストを切替えるコンテキス切替え装置であって、
コンテキストデータの転送を連続サイクルで行う第１転送モード、およびコンテキストデータ転送をサイクル毎に対象とするプロセッサを切替えながら行う第２転送モードの少なくとも一方によりコンテキストデータを転送する転送手段と、
Ｍ個より多い数のプロセッサからのコンテキスト切替え要求が競合した場合に、第１転送モードの対象とすべきプロセッサと、第２転送モードの対象とすべきプロセッサとを決定し、決定に従って転送手段を制御する制御手段と
を備えることを特徴とするコンテキスト切替え装置。
【請求項２】
前記制御手段は、
プロセッサの転送モードに関する転送モード情報を格納する転送モード格納手段と、
転送モード情報に基づいて前記競合に関わるプロセッサのうち第１転送モードの対象とすべきプロセッサを優先度を用いて判定し、判定結果に応じて第１および第２転送モードそれぞれの対象とすべきプロセッサを決定する優先度判定手段と
を備えることを特徴とする請求項１記載のコンテキスト切替え装置。
【請求項３】
前記転送モード情報は、第１転送モードの対象とすべきプロセッサの数を示し、
前記優先度判定手段は、転送モード情報に示される数の範囲内で第１転送モードの対象とすべきプロセッサを判定する
ことを特徴とする請求項２記載のコンテキスト切替え装置。
【請求項４】
前記転送モード情報は、プロセッサで実行されるプログラム毎に、第１転送モードの対象とすべきか否かを示す
ことを特徴とする請求項２記載のコンテキスト切替え装置。
【請求項５】
前記優先度判定手段は、プロセッサで実行されるプログラム毎に定められた優先度を格納する優先度格納手段を備える
ことを特徴とする請求項２記載のコンテキスト切替え装置。
【請求項６】
前記優先度判定手段は、各プロセッサで実行中のプログラムに割り当てられた時間の残り時間を比較することによって、プログラム毎に残り時間に依存する前記優先度を生成する実行時間比較手段を備える
ことを特徴とする請求項２記載のコンテキスト切替え装置。
【請求項７】
前記残り時間が最も少ないプログラムの優先度は最も高い
ことを特徴とする請求項６記載のコンテキスト切替え装置。
【請求項８】
前記実行時間比較手段は、さらに、転送手段において転送中の各コンテキストデータの転送完了待ち時間の最大値が最小になるように、第１転送モードの対象とすべきプロセッサ数を特定し、
前記転送手段は、特定された前記プロセッサ数に従ってコンテキストデータ転送を行う
ことを特徴とする請求項６記載のコンテキスト切替え装置。
【請求項９】
前記転送モード情報はモード選択情報を含み、
前記優先度判定手段は、
各プロセッサで実行中のプログラムに割り当てられた時間の残り時間を比較することによって、残り時間に依存する第１の優先度をプログラム毎に生成する実行時間比較手段と、
プロセッサで実行されるプログラム毎に定められた第２の優先度を格納する優先度格納手段と、
前記モード選択情報に従って、前記第１の優先度と前記第２の優先度とのいずれかを前記優先度として選択する選択手段とを備える
ことを特徴とする請求項２記載のコンテキスト切替え装置。
【請求項１０】
前記優先度判定手段は、さらに、
前記選択手段によって選択された優先度と、前記転送モード情報とに従って、第１および第２転送モードそれぞれの対象とすべきプロセッサを示すデータ転送情報を生成するデータ転送情報生成手段を備える
ことを特徴とする請求項９記載のコンテキスト切替え装置。
【請求項１１】
前記データ転送情報は、第１転送モードの対象とするプロセッサのプロセッサ番号と、第２転送モードの対象とするプロセッサのプロセッサ番号とを示す
ことを特徴とする請求項１０記載のコンテキスト切替え装置。
【請求項１２】
前記優先度判定手段は、さらに、
プログラムを実行させるための割り込み信号が入力されたとき、割り込み対象のプログラムを実行するプロセッサのコンテキストデータの転送を優先するための情報を前記転送手段に出力する割り込み情報生成手段を備える
ことを特徴とする請求項２記載のコンテキスト切替え装置。
【請求項１３】
前記優先度判定手段は、さらに、
前記割り込み対象のプログラムのコンテキストデータ転送の待ち時間を計数し、計数した待ち時間が所定数に達したことを要因として前記割り込み対象プログラムの優先度を高くする転送待ち時間計数手段を備える
ことを特徴とする請求項１２記載のコンテキスト切替え装置。
【請求項１４】
前記待ち時間は、コンテキストデータの転送がスキップされた回数である
ことを特徴とする請求項１３記載のコンテキスト切替え装置。
【請求項１５】
前記転送手段は、
第１のプログラムを実行するプロセッサのコンテキストデータの転送を一時的に中断し、中断中に第１のプログラムとは異なる第２のプログラムを実行するプロセッサのコンテキストデータを転送する転送中断制御手段を備える
ことを特徴とする請求項２記載のコンテキスト切替え装置。
【請求項１６】
前記共有メモリは複数のメモリで構成され、
前記転送手段は、インターリーブ方式によるアクセスにより複数の前記プロセッサの複数のコンテキストデータを同時に転送する
ことを特徴とする請求項１記載のコンテキスト切替え装置。
【請求項１７】
前記転送手段は、同時並列に転送するプロセッサの最大数を保持する最大アクセス数格納手段を備え、
前記転送手段は、１転送サイクルあたりに並列に入力または出力するデータ数を、最大アクセス数格納手段に設定された数の範囲内で行う
ことを特徴とする請求項１記載のコンテキスト切替え装置。
【請求項１８】
前記共有メモリは、Ｍ個のプロセッサが同時にアクセスすることが可能なマルチポートメモリで構成されている
ことを特徴とする請求項1記載のコンテキスト切替え装置。
【請求項１９】
複数のプログラムを切替えながら実行するＮ個のプロセッサと、Ｍ（Ｍ＜Ｎ）個のアクセスポートを有し、前記Ｎ個のプロセッサから退避されたコンテキストデータを記憶する共有メモリとを含む並列システムに用いられ、各プロセッサと共有メモリとの間でコンテキストデータを並列に転送することによって各プロセッサのコンテキストを切替えるコンテキス切替え方法であって、
Ｍ個より多い数のプロセッサからのコンテキスト切替え要求が競合した場合に、コンテキストデータの転送を連続サイクルで行う第１転送モードの対象とすべきプロセッサと、コンテキストデータ転送をサイクル毎に対象とするプロセッサを切替えながら行う第２転送モードの対象とすべきプロセッサとを決定する決定ステップと、
決定に従って、第１転送モードおよび第２転送モードの少なくとも一方によりコンテキストデータを転送する転送ステップと
を含むことを特徴とするコンテキスト切替え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサに関するものであり、特にマルチプロセッサシステムにおいて効率的にプログラムを実行する技術に関する。
【背景技術】
【０００２】
複数のプログラムを１つのプロセッサで並列実行する並列処理システムにおいて、プロセッサはプログラムの実行単位であるタスクを決められた要因によって切替えながら実行する。この制御により、１つのプロセッサで複数のプログラムを擬似的に並列実行させている。
【０００３】
また、各タスクは各々がプロセッサを独占して使用するように実行されるため、各々のタスクが個別に仮想的なプロセッサに割り当てられて実行されていると考えることができる。
【０００４】
仮想的なプロセッサは、実際のプロセッサの全機能を持つ必要はなく、タスクを実行するために必要な情報、すなわちプログラムカウンタ、フラグレジスタ、スタック領域、汎用レジスタなどの制御情報やデータ情報のみを持てばよい。タスクを実行するために必要なこれらの情報を「コンテキスト」という。
【０００５】
実行中のタスクを別のタスクに切替えるときには、コンテキストを切替えなければならない。通常、コンテキストはメモリに格納されているため、コンテキストの切替えとは現在実行しているタスクのコンテキストをメモリに書き出し（ここでは「退避」と書く）、次に実行するタスクのコンテキストをメモリから読み出す（ここでは「復帰」と書く）動作を意味する。
【０００６】
従来、このコンテキストの切替えはＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が行う方法の他に、例えば特許文献１のようにハードウェアで行う方法があった。コンテキストの切替えを行うハードウェアのことをコンテキスト切替え装置という。
【０００７】
図１７は、従来のコンテキスト切替え装置の構成を示す機能ブロック図である。
図１７において、従来のコンテキスト切替え装置１００１は、プロセッサ１００２と、コンテキストを格納するメモリ１００３とを備える。なお、ここではコンテキストを切替える動作の説明を簡単にするため、本図では説明に必要な機能ブロックのみを記載している。
【０００８】
プロセッサ１００２は、プロセッサユニット１００４と、コンテキストを格納するレジスタ群Ａ１００５，レジスタ群Ｂ１００６と、コンテキスト選択部１００７とから構成される。
【０００９】
プロセッサ１００２は、次の手順でタスクの切替えを行う。ここでは、現在実行しているタスクをタスク１とし、次にタスク２に処理を切替える場合について説明する。現在実行中のタスク１のコンテキストがレジスタ群Ａ１００５に格納されているとする。
【００１０】
１．  次に実行するタスク２のコンテキストをメモリ１００３からレジスタ群Ｂ１００６に復帰させる。
【００１１】
２．実行するタスクがタスク１からタスク２に切り換わるときに、プロセッサユニット１００４がレジスタ群Ｂ１００６、およびコンテキスト切替え装置１００１がレジスタ群Ａ１００５をアクセスするようにコンテキスト選択部１００７が制御する。
【００１２】
３．タスク２の実行を開始したのち、レジスタ群Ａ１００５に格納されているタスク１のコンテキストをメモリ１００３に退避する。
【００１３】
図１８は、このコンテキスト切替えの手順を図に示したものである。
まず、処理の前提を、図１８（ａ）で説明する。
【００１４】
プログラム（１）とプログラム（２）という２つのプログラムをプロセッサ１００２で実行するとする。各プログラムは、独立した２つの仮想的なプロセッサの各々に割り当てられているように動作するが、この仮想的なプロセッサのことを論理プロセッサ（以後ＬＰと記す）と呼ぶ。そして、プロセッサ１００２は２つのプログラム（１）および（２）を、タスクごとに切替えながら実行する。以後、例えばプログラム（１）を実行することを「プロセッサ１００２でＬＰ（１）を実行する」と記す。
【００１５】
図１８（ｂ）は、プロセッサ１００２で実行するＬＰ（１）及びＬＰ（２）の実行時間とＬＰ（２）のコンテキスト復帰要求との関係を表す図である。
【００１６】
プロセッサ１００２は時刻Ｔ０でＬＰ（１）の実行を開始し、時刻Ｔ３でＬＰ（２）に処理を切替える。
【００１７】
時刻Ｔ３でＬＰ（２）の実行を開始するために時刻Ｔ１でＬＰ（２）のコンテキストの復帰を開始する。コンテキストの復帰を開始する要因を「コンテキストの復帰要求」と書く。コンテキストの復帰要求が発生するとコンテキスト切替え装置１００１のデータ転送制御部１００９はコンテキストの復帰処理を開始して、時刻Ｔ２に完了する。
【００１８】
以後、「コンテキストの復帰要求」と「コンテキストの退避要求」を合わせて、「コンテキスト切替え要求」と書く。
【００１９】
コンテキスト切替え要求は、コンテキスト切替え装置１００１の内部で生成する。生成の方法についてはいくつかの手法が考えられるが、ここでは各ＬＰの実行開始時間を基準として、ある特定の時間が経過したときにコンテキスト切替え装置１００１内で生成するという手法を用いる。各ＬＰの実行時間は図１７のカウンタ１５００で計数する。
【００２０】
また、タスクを切替えるタイミングを決める方法についてもいくつかの手法が考えられるが、ここではカウンタ１５００で計数したＬＰの実行時間が、ある特定の時間に達したときにタスクを切替える要因をコンテキスト切替え装置１００１内で生成する手法を用いる。
【００２１】
この従来例によれば、確かに１つのプロセッサではコンテキストの切替えによるオーバーヘッドがなく、効率的にタスクの切替えを行うことができる。
【特許文献１】特開２００３−２７１３９９号公報
【発明の開示】
【発明が解決しようとする課題】
【００２２】
ところで、近年、処理の高速化のため、共有メモリの数を少なくしつつプロセッサの複数化を図りたいといった要望がある。
【００２３】
しかしながら、このように複数のタスクを擬似並行的に処理するプロセッサ１００２を複数個並列に動作させ、かつ共有メモリにすべてのプロセッサで実行するタスクのコンテキストを格納する場合、複数個のプロセッサの共有メモリへのアクセス（すなわち、コンテキストの復帰や退避）が競合することがあり、タスクの実行完了から次のタスクの実行開始までに時間がかかってしまうという問題がある。
【００２４】
図１８（ｂ）の記号で説明すると、共有メモリへのアクセスの競合の問題で、コンテキストの復帰が完了する時刻Ｔ２が、本来ＬＰ（１）からＬＰ（２）へ処理を切替える時刻Ｔ３よりも遅れてしまう場合がある。ＬＰ（１）のコンテキストの復帰が完了するまでＬＰ（２）の実行を開始できないので、結果としてタスク切替え時に不要な時間を消費してしまうことになる。
【００２５】
そこで、上述の課題を解決し、複数のプロセッサにおけるコンテキストの復帰や退避によるアクセスの競合を軽減することが可能なコンテキスト切替え装置を提供することを目的とする。
【課題を解決するための手段】
【００２６】
上記目的を達成するために、コンテキスト切替え装置においては、複数のプログラムを切替えながら実行するＮ個のプロセッサと、Ｍ（Ｍ＜Ｎ）個のアクセスポートを有し、前記Ｎ個のプロセッサから退避されたコンテキストデータを記憶する共有メモリとを含む並列システムに用いられ、各プロセッサと共有メモリとの間でコンテキストデータを並列に転送することによって各プロセッサのコンテキストを切替えるコンテキス切替え装置であって、コンテキストデータの転送を連続サイクルで行う第１転送モード、およびコンテキストデータ転送をサイクル毎に対象とするプロセッサを切替えながら行う第２転送モードの少なくとも一方によりコンテキストデータを転送する転送手段と、Ｍ個より多い数のプロセッサからのコンテキスト切替え要求が競合した場合に、第１転送モードの対象とすべきプロセッサと、第２転送モードの対象とすべきプロセッサとを決定し、決定に従って転送手段を制御する制御手段とを備えることを特徴とする。
【００２７】
これによって、共有メモリに対して複数のプロセッサがコンテキストデータ転送を行う場合においても、共有メモリへのアクセスの競合がタスクの切替え処理に与える影響を最小限に抑えられ、タスクの切替えの時間ロスを大幅に削減することが可能となる。したがって、上述の課題を解決し、複数のプロセッサにおけるコンテキストの復帰や退避によるアクセスの競合を軽減することが可能なコンテキスト切替え装置を提供することができる。
【００２８】
なお、本発明は、このようなコンテキスト切替え装置として実現することができるだけでなく、このようなコンテキスト切替え装置を含む並列システムとして構成したり、コンテキスト切替え装置を一体化したＬＳＩとして実現したり、コンテキスト切替え装置が備える特徴的な手段をステップとするコンテキスト切替え方法として実現したり、それらのステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ等の記録媒体やインターネット等の伝送媒体を介して配信することができるのは言うまでもない。
【発明の効果】
【００２９】
以上の説明から明らかなように、本発明によれば、共有メモリに対して複数のプロセッサがコンテキストデータ転送を行う場合においても、共有メモリへのアクセスの競合がタスクの切替え処理に与える影響を最小限に抑えられ、タスクの切替えの時間ロスを大幅に削減することが可能となる。
【００３０】
よって、本発明により、オーバーヘッドが軽減され、並列システムが普及してきた今日における本願発明の実用的価値は極めて高い。
【発明を実施するための最良の形態】
【００３１】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
【００３２】
（実施の形態１）
図１は本発明の実施の形態１に係るコンテキスト切替え装置を用いた、並列システムの全体構成を示す機能ブロック図である。
【００３３】
図１に示されるように、並列システム１は、複数の物理的プロセッサから構成されるプロセッサ２０と、複数のコンテキストメモリから構成される共有メモリ３０と、コンテキスト切替え装置１０とを備える。プロセッサ２０は、コンテキスト切替え装置１０を介して、共有メモリ３０に対してコンテキストデータの復帰あるいは退避を行う。
【００３４】
コンテキスト切替え装置１０は、転送モード格納部１１と、優先度判定部１２と、データ転送制御部１３と、複数のカウンタ１５とを備える。
【００３５】
転送モード格納部１１は、レジスタで構成され、プロセッサ２０が１つのプロセッサとして動作するシステムモードにおいて、コンテキスト転送モードに関する情報をこのプロセッサ２０から書き込む。このコンテキスト転送モードに関する情報は、連続転送プロセッサ数１１１と、コンテキスト転送属性１１２と、選択情報１１３と、モード選択情報１１４とで構成される。
【００３６】
優先度判定部１２は、転送モード格納部１１に格納されているコンテキスト転送モードに関する情報と、上記システムモードにおいてプロセッサ２０から転送されてくる優先度情報等とに基づいてデータ転送制御部１３に必要な情報を生成するものであり、優先度格納部１２１と、実行時間比較部１２２と、割り込み情報生成部１２３と、転送待ち時間計数部１２４と、選択部１２５と、データ転送情報生成部１２６とを備える。
【００３７】
データ転送制御部１３は、優先度判定部１２が生成した情報に基づいて、コンテキストを転送する順番を動的に切替えることにより、複数のプロセッサにおけるコンテキストの復帰や退避によるアクセスの競合を軽減するものであり、転送中断制御部１３１と、最大アクセス数格納部１３２と、制御部１３３と、データ経路切替え部１３４とを備える。
【００３８】
カウンタ１５は、各ＬＰに割り当てられた実行サイクル数の残り時間を計数する。
なお、データ転送制御部１３のデータ経路切替え部１３４は、請求項における転送手段を構成し、転送モード格納部１１、優先度判定部１２およびデータ転送制御部１３の転送中断制御部１３１、最大アクセス数格納部１３２、制御部１３３によって請求項における制御手段が構成される。
【００３９】
次いで、転送モード格納部１１、優先度判定部１２およびデータ転送制御部１３の構成をさらに詳細に説明する。
【００４０】
まず転送モード格納部１１について、図２を用いて説明する。
コンテキスト転送モードに関する情報は、上記したように、連続転送プロセッサ数１１１と、コンテキスト転送属性１１２と、選択情報１１３と、モード選択情報１１４との４つの情報で構成される。
【００４１】
連続転送プロセッサ数１１１は、複数のＬＰのコンテキスト切替え要求が競合したときに、コンテキストデータを連続転送するプロセッサの個数の情報である。共有メモリ３０には最大Ｍ個のプロセッサからのデータ転送を実行することができるので、連続転送プロセッサ数１１１の有効な最小の設定値は「０」、また有効な最大の設定値は「Ｍ」である。
【００４２】
コンテキスト転送属性１１２は、各ＬＰを実行する際のコンテキストデータの転送を、連続転送するか否かを指定する情報である。なお、ここではプロセッサ２０で実行するＬＰの最大数を「Ｓ」として説明する。
【００４３】
選択情報１１３は、連続転送プロセッサ数１１１の情報とコンテキスト転送属性１１２のいずれの情報を有効にするかを選択する情報である。選択情報１１３によって選択した連続転送プロセッサ数１１１の情報またはコンテキスト転送属性１１２の情報を、転送モード情報１１０として出力する。
【００４４】
モード選択情報１１４は、優先度格納部１２１が生成する情報と、実行時間比較部１２２が生成する情報とのいずれかを、優先度判定部１２の選択部１２５に選択させる情報である。
【００４５】
次に、優先度判定部１２について図３を用いて説明する。
優先度判定部１２は、優先度格納部１２１と、実行時間比較部１２２と、割り込み情報生成部１２３と、転送待ち時間計数部１２４と、選択部１２５と、データ転送情報生成部１２６とを備える。
【００４６】
優先度格納部１２１は、各ＬＰのコンテキストデータ転送の優先度情報を格納する。この優先度情報は最大Ｓ個の情報で構成される。ここでは便宜上、優先度情報「１」が最も優先度が高いことを表すものとし、順に優先度情報「１」、「２」、…、「Ｓ」と割り振る。たとえば、Ｓ＝３のとき、ＬＰ（１），ＬＰ（２），ＬＰ（３）の３つのＬＰが定義されているが、ＬＰ（２），ＬＰ（１），ＬＰ（３）の順にコンテキストデータの転送優先度の高い場合、ＬＰ（１），ＬＰ（２），ＬＰ（３）の各ＬＰの優先度情報はそれぞれ「２」、「１」、「３」である。なお、優先度格納部１２１には、システムモードにおいてプロセッサ２０から優先度情報が格納される。
【００４７】
実行時間比較部１２２は、各ＬＰに割り当てられた実行サイクル数の残り時間を計数するカウンタ１５の計数値を入力し、タスク切替えまでの残り時間が短いものから順に上述した優先度情報を付与した情報を生成する。
【００４８】
割り込み情報生成部１２３は、外部から割り込み信号４００が入力されると、割り込み信号４００に対応づけられたＬＰを特定し、さらに特定したＬＰ番号の優先度を特定する。そののち、割り込み情報生成部１２３は選択部１２５に対して、割り込み信号４００に対応したＬＰのＬＰ番号情報、特定した優先度情報、及び切替え要求信号を出力する。
【００４９】
転送待ち時間計数部１２４は、制御部１３３からの情報に基づき、コンテキストデータ転送待ちの状態になったあとに転送をスキップされた回数（先にコンテキストデータを転送したＬＰの個数）を計数し、計数した値が所定の回数に達したときには、転送待ちのＬＰに最も高い優先度を付与して、切替え要求とともに選択部１２５に出力する。
【００５０】
選択部１２５は、転送モード格納部１１が出力するモード選択情報１１４を入力し、実行時間比較部１２２が生成する各ＬＰの優先度情報と、優先度格納部１２１が生成する各ＬＰの優先度情報のいずれか一方の情報を選択して出力する。ただし、選択部１２５は、割り込み情報生成部１２３や転送待ち時間計数部１２４が生成する切替え要求信号が入力されているときは、後述するようにそれぞれが生成するＬＰ番号情報を受け付ける。
【００５１】
データ転送情報生成部１２６は、転送モード情報１１０の情報と、選択部１２５の情報とを入力し、連続転送するプロセッサ番号情報１２７、連続転送しないプロセッサ番号情報１２８、及び転送中断情報１２９を出力する。
【００５２】
例えば、Ｍ＝３のシステムで、転送モード情報１１０が「連続転送プロセッサ数が１である」という情報であり、さらに選択部１２５から入力する情報が「プロセッサＰ（１）でＬＰ（１）、プロセッサＰ（２）でＬＰ（２）、プロセッサＰ（３）でＬＰ（３）が実行されており、ＬＰ（１），ＬＰ（２），ＬＰ（３）の優先度がそれぞれ「２」、「１」、「３」である」場合、連続転送するプロセッサ番号情報１２７としてＬＰ（２）を実行しているプロセッサＰ（２）のプロセッサ番号すなわち「２」、連続転送しないプロセッサ番号情報１２８としてＬＰ（１）とＬＰ（３）をそれぞれ実行しているプロセッサＰ（１）およびＰ（３）のプロセッサ番号すなわち「１」と「３」を出力する。
【００５３】
さらにデータ転送情報生成部１２６は、後述するように、あるプロセッサのコンテキストデータを転送中に、より高い優先度のＬＰを実行しているプロセッサのコンテキスト切替え要求が発生したときには、転送中断情報１２９を出力する。
【００５４】
次に、データ転送制御部１３について図４を用いて説明する。
データ転送制御部１３は、転送中断制御部１３１と、最大アクセス数格納部１３２と、制御部１３３と、データ経路切替え部１３４とを備える。
【００５５】
転送中断制御部１３１は、優先度判定部１２が生成する転送中断情報１２９を入力し、コンテキストデータ転送中の場合はその転送を中断することを指示する情報と、転送中断情報１２９に含まれるプロセッサ番号のプロセッサのコンテキストデータを転送することを指示する情報とを、制御部１３３に出力する。
【００５６】
最大アクセス数格納部１３２は、プロセッサ２０の中で、同時に並列に実行するプロセッサの個数を格納する。情報の格納は、プロセッサ２０が行う。
【００５７】
制御部１３３は、連続転送するプロセッサ番号情報１２７及び連続転送しないプロセッサ番号情報１２８を入力し、データ経路切替え部１３４を制御する。
【００５８】
また、プロセッサ２０及び共有メモリ３０に対しては、コンテキストデータのアドレスや、データをアクセスするタイミングを示すイネーブル情報を出力する。
【００５９】
データ経路切替え部１３４は、制御部１３３の制御情報に従って、プロセッサ２０の各プロセッサＰ（ｋ）（ｋ＝１〜Ｎ）と共有メモリ３０の各メモリＣＭ（ｊ）（ｊ＝１〜Ｍ）との間のデータ線の接続を切替える。
【００６０】
次に、コンテキスト切替え装置１０の動作について、図を用いて説明する。なお、本実施の形態１では、各ＬＰのコンテキストデータはすべて１０個であるとし、さらに１つのプロセッサは１サイクルにつき１個のコンテキストデータを転送できるものとして説明する。これらの値は説明の便宜上決めたものであり、これらの値に限るものではない。
【００６１】
図５は、連続転送プロセッサ数１１１の設定を有効にした場合におけるコンテキストデータ転送のタイミングチャートである。
【００６２】
なお、ここでは、連続転送プロセッサ数１１１には値「２」を設定し、選択情報１１３には連続転送プロセッサ数１１１が有効になる値を設定する。さらにモード選択情報１１４には、選択部１２５が優先度格納部１２１の情報を有効とする設定を行うものとする。また、プロセッサ２０はＮ＝３個のプロセッサで構成され、共有メモリ３０はＭ＝２、つまり２個のプロセッサが同時にアクセス可能であるとする。
【００６３】
さらにＰ（１）、Ｐ（２）、Ｐ（３）ではいずれもタスク切替え後にＬＰ（１），ＬＰ（２），ＬＰ（３）をそれぞれ実行するものとし、優先度格納部１２１の優先度情報はＬＰ（１），ＬＰ（２），ＬＰ（３）にそれぞれ「１」、「３」、「２」を設定する。本実施の形態１では、コンテキストデータの転送は、各ＬＰのコンテキストの復帰を表すものとする。
【００６４】
さて、図５（ａ）は、時刻Ｔ０で３つのプロセッサＬＰ（１），ＬＰ（２），ＬＰ（３）のコンテキスト切替え要求が発生した場合のタイミングチャートである。図では、各ＬＰを実行するプロセッサ番号で表している。連続転送プロセッサ数１１１の設定が「２」であるので、この情報とＬＰの優先度情報とを合わせて、連続転送するプロセッサ番号情報１２７は［１，３］となる。
【００６５】
連続転送しないプロセッサ番号情報１２８は、連続転送するプロセッサ番号情報１２７以外のプロセッサ番号であるから、この例では［２］のみである。
【００６６】
制御部１３３と、データ経路切替え部１３４は、連続転送するプロセッサ番号情報１２７の情報［１，３］と、連続転送しないプロセッサ番号情報１２８の情報［２］とに基づき、Ｔ０から１０サイクルの期間にＬＰ（１）のコンテキストデータ及びＬＰ（３）のコンテキストデータを全て連続転送する。そして、転送が完了した時刻Ｔ１０で残りのＬＰ（２）のコンテキストデータを転送する。
【００６７】
この結果、ＬＰ（１）及びＬＰ（３）のコンテキストデータ転送は、いずれも切替え要求から１０サイクル後に完了する。しかし、ＬＰ（２）のコンテキストデータ転送は切替え要求から２０サイクル後に完了することになる。
【００６８】
次に、図５（ｂ）は連続転送プロセッサ数１１１の設定が「１」である点を除いて、図５（ａ）と全く同じ設定を行う。この場合、連続転送するプロセッサ番号情報１２７は［１］、連続転送しないプロセッサ番号情報１２８は［３，２］である。
【００６９】
制御部１３３と、データ経路切替え部１３４は、連続転送するプロセッサ番号情報１２７の情報［１］と、連続転送しないプロセッサ番号情報１２８の情報［３，２］とに基づき、Ｔ０から最初の１０サイクルの期間にＬＰ（１）のコンテキストデータを全て連続転送する。
【００７０】
一方、ＬＰ（３）とＬＰ（２）のコンテキストデータは１サイクルごとに交互に転送する。ＬＰ（１）のコンテキストデータ転送が完了する時刻Ｔ１０以降は、ＬＰ（３）とＬＰ（２）のコンテキストデータを並列に転送する。
【００７１】
この結果、ＬＰ（１）のコンテキストデータ転送はいずれも切替え要求から１０サイクル後に完了する。一方、ＬＰ（３）及びＬＰ（２）のコンテキストデータ転送は切替え要求から１５サイクル後に完了することになる。
【００７２】
図５（ａ）と比較して、ＬＰ（３）のコンテキストデータ転送の完了が５サイクル増加するが、ＬＰ（１），ＬＰ（２），ＬＰ（３）の全てのコンテキストデータ転送の完了が５サイクル削減できることになる。
【００７３】
図６および図７は、Ｎ＝４，Ｍ＝３の場合において、連続転送プロセッサ数１１１の設定を使用したときのコンテキストデータ転送のタイミングチャートである。
【００７４】
ＬＰの優先度は、高い優先度ものから順にＬＰ（１），ＬＰ（３），ＬＰ（４），ＬＰ（２）であり、ＬＰ（１），ＬＰ（２），ＬＰ（３），ＬＰ（４）はそれぞれプロセッサＰ（１），Ｐ（２），Ｐ（３），Ｐ（４）で実行する。
【００７５】
図６（ａ）より、連続転送プロセッサ数の設定値が「３」のときは、ＬＰ（１），ＬＰ（３），ＬＰ（４）のコンテキストデータ転送が切替え要求から１０サイクル後、ＬＰ（２）のコンテキストデータ転送は２０サイクル後に完了する。
【００７６】
図６（ｂ）より、連続転送プロセッサ数の設定値が「２」のときは、ＬＰ（１）とＬＰ（３）のコンテキストデータ転送が切替え要求から１０サイクル後、ＬＰ（４）とＬＰ（２）のコンテキストデータ転送は１５サイクル後に完了する。
【００７７】
図７（ａ）より、連続転送プロセッサ数の設定値が「１」のときは、ＬＰ（１）のコンテキストデータ転送が切替え要求から１０サイクル後、ＬＰ（３）とＬＰ（４）が１２サイクル後、ＬＰ（２）が１３サイクル後にコンテキストデータ転送を完了する。
【００７８】
図７（ｂ）より、連続転送プロセッサ数の設定値が「０」のときは、図７（ａ）の結果と同じである。
【００７９】
次に、コンテキスト転送属性１１２の設定を使用した場合について説明する。
図８および図９は、Ｎ＝３、Ｍ＝２、Ｓ＝６の場合で、コンテキスト転送属性１１２の設定はＬＰ（１），ＬＰ（２），ＬＰ（４）が「連続転送する」、ＬＰ（３），ＬＰ（５），ＬＰ（６）が「連続転送しない」である場合のコンテキストデータ転送のタイミングチャートである。
【００８０】
図８（ａ）は、タスク切替え後にＬＰ（１），ＬＰ（２），ＬＰ（３）をそれぞれプロセッサＰ（１），Ｐ（２），Ｐ（３）で実行することになっており、かつ３つのプロセッサのコンテキストデータ転送が競合した場合である。
【００８１】
ＬＰ（１）と、ＬＰ（２）のコンテキスト転送属性が「連続転送する」であるので、切替え要求が発生した時刻Ｔ０から１０サイクル間でＬＰ（１）とＬＰ（２）コンテキストデータ転送を完了し、時刻Ｔ１０からＬＰ（３）のコンテキストデータ転送を行う。
【００８２】
図８（ｂ）は、タスク切替え後にＬＰ（４），ＬＰ（５），ＬＰ（６）をそれぞれプロセッサＰ（１），Ｐ（２），Ｐ（３）ですることになっており、かつ３つのプロセッサのコンテキストデータ転送が競合した場合である。
【００８３】
ＬＰ（４）のコンテキスト転送属性のみが「連続転送する」であるので、切替え要求が発生した時刻Ｔ０から１０サイクル間で、ＬＰ（４）のコンテキストデータ転送を完了する。一方、ＬＰ（５）とＬＰ（６）のコンテキストデータ転送は時刻Ｔ０から１サイクルごとに交互に転送を行い、時刻Ｔ１０からは並列に転送して時刻Ｔ１５で転送を完了する。
【００８４】
図９（ａ）はタスク切替え後にＬＰ（１），ＬＰ（２），ＬＰ（４）をそれぞれプロセッサＰ（１），Ｐ（２），Ｐ（３）で実行することになっており、かつ３つのプロセッサのコンテキストデータ転送が競合した場合である。
【００８５】
ＬＰ（１），ＬＰ（２），ＬＰ（４）のコンテキスト転送属性が全て「連続転送する」であるが、Ｍ＝２であるので、全てのプロセッサのコンテキストデータ全てを連続転送することができない。この場合は、ＬＰの番号の小さいＬＰの優先度が高いとする。したがって、ＬＰ（１）とＬＰ（２）のコンテキストデータをＴ０から１０サイクルの間に連続転送し、時刻Ｔ１０からＬＰ（４）のコンテキストデータを連続転送する。従って、図８（ａ）と同じ結果となる。
【００８６】
なお、ここで「ＬＰの番号の小さいＬＰの優先度が高い」と決めたが、優先度の決め方はこれに限定するものではない。
【００８７】
図９（ｂ）は、タスク切替え後にＬＰ（３），ＬＰ（５），ＬＰ（６）をそれぞれプロセッサＰ（１），Ｐ（２），Ｐ（３）で実行することになっており、かつ３つのプロセッサのコンテキストデータ転送が競合した場合である。
【００８８】
ＬＰ（１），ＬＰ（２），ＬＰ（４）のコンテキスト転送属性が全て「連続転送しない」であるので、時刻Ｔ０からＬＰ（３），ＬＰ（５），ＬＰ（６）のコンテキストデータを１サイクルごとに交互に転送する。全てのコンテキストデータ転送は１５サイクル後に完了する。
【００８９】
このように、コンテキストデータ転送を１０サイクルで転送完了させたいＬＰを指定することで、データ転送の競合がＭ個以内であれば、必ずデータ転送を１０サイクルで完了させることができる。
【００９０】
また、それ以外のＬＰについては、「連続転送しない」というコンテキスト転送属性を設定することにより、図５（ｂ）と同様の理由で全体のコンテキストデータ転送を早く完了させることができるという効果がある。
【００９１】
次に、実行時間比較部１２２を使用した場合について、図を用いて説明する。
モード選択情報１１４には、選択部１２５が実行時間比較部１２２の情報を選択してデータ転送情報生成部１２６へ出力することを指定する情報を設定する。
【００９２】
図１０は、実行時間比較部１２２において実施される処理を示すフローチャートである。また、図１１は、図１０のフローチャートを説明するための処理の例である。
【００９３】
まず、タスク切替え後にＬＰ（１），ＬＰ（２），ＬＰ（３）をそれぞれ実行する３つのプロセッサＰ（１），Ｐ（２），Ｐ（３）のコンテキストデータの切替え要求が、時刻Ｔ０で同時に発生する。
【００９４】
次いで、実行時間比較部１２２は、ステップＳ００１でコンテキストデータの切替え要求が競合したＬＰ番号を特定する。図１１では、ＬＰ（１），ＬＰ（２），ＬＰ（３）が該当するので、ＬＰ番号はそれぞれ「１」、「２」、「３」である。
【００９５】
次に、実行時間比較部１２２は、ステップＳ００２で、ステップＳ００１において特定した各ＬＰに割り当てられた実行時間の残り時間を特定する。図１１では、ＬＰ（１），ＬＰ（２），ＬＰ（３）の実行に割り当てられた残り時間が、それぞれＲ１（符号１２２１）、Ｒ２（符号１２２２）、Ｒ３（符号１２２３）である。
【００９６】
次に、実行時間比較部１２２は、ステップＳ００３、ステップＳ００２で特定した残り時間の大小判定を実施する。図１１では、残り時間を最も短いものから並べるとＲ３，Ｒ１，Ｒ２の順となる。
【００９７】
最後に、実行時間比較部１２２は、ステップＳ００４で、残り時間の少ないＬＰから順に高い優先度情報を生成する。図１１では、ＬＰ（３）の優先度情報として「１」、ＬＰ（１）の優先度情報として「２」、ＬＰ（２）の優先度情報として「３」を生成する。
【００９８】
実行時間比較部１２２によって優先度情報を生成した後の動作については、図８と同様であるため、詳細な説明は省略する。
【００９９】
このように、タスク切替えまでの残り時間を比較してコンテキスト切替えの優先度を決定するので、コンテキスト切替えが競合したときにおいても、タスク切替えまでにコンテキスト切替えを完了する頻度がより高くなる。
【０１００】
次に、転送中断制御部１３１を使用した場合の動作について説明する。
図１２は、転送中断制御部１３１を使用した場合のタイミングチャートである。
【０１０１】
コンテキスト転送属性１１２には、ＬＰ（１），ＬＰ（２），ＬＰ（３）のいずれについても「連続転送する」を設定し、選択情報１１３にはコンテキスト転送属性１１２が有効になる値を設定する。さらにモード選択情報１１４には、選択部１２５が優先度格納部１２１の情報を有効とする設定を行うものとする。また、プロセッサ２０はＮ＝３個のプロセッサで構成され、共有メモリ３０はＭ＝２、つまり２個のプロセッサが同時にアクセス可能であるとする。さらに、タスク切替え後にＬＰ（１），ＬＰ（２），ＬＰ（３）はそれぞれプロセッサＰ（１），Ｐ（２），Ｐ（３）で実行するものとし、優先度格納部１２１の優先度情報はＬＰ（１），ＬＰ（２），ＬＰ（３）にそれぞれ「１」、「３」、「２」を設定するものとする。
【０１０２】
図１２（ａ）において、時刻Ｔ０でＬＰ（１）及びＬＰ（２）のコンテキストデータの切替え要求が発生している。連続転送プロセッサ数１１１の設定が「２」であるので、ＬＰ（１）及びＬＰ（２）のコンテキストを同時に転送する。
【０１０３】
図１２（ｂ）は、図１２（ａ）の時刻Ｔ２に、ＬＰ（３）のコンテキストデータ切替え要求が発生している。このとき、ＬＰ（３）の優先度がＬＰ（２）の優先度よりも高いので、ＬＰ（２）のコンテキストデータ転送を一時的に中断し、先にＬＰ（３）のコンテキストデータの転送を行う。ＬＰ（１），ＬＰ（２），ＬＰ（３）のコンテキスト転送属性１１２はいずれも「連続転送する」を指定しているので、ＬＰ（１）とＬＰ（３）はコンテキストデータ転送を連続に実行し、いずれもデータ転送開始から１０サイクルで転送を完了する。
【０１０４】
時刻Ｔ１０において、Ｐ（１）のコンテキストデータ転送が完了するので、中断していたＰ（２）のコンテキストデータ転送を時刻Ｔ１０から再開する。
【０１０５】
なお、ここで説明したＬＰ（３）のコンテキストデータ切替え要求は、割り込み情報生成部１２３によっても発生する。割り込み情報生成部１２３は、外部から割り込み信号４００が入力されると、割り込み信号４００に対応づけられたＬＰを特定し、さらに特定したＬＰ番号の優先度を特定する。そののち、割り込み情報生成部１２３は選択部１２５に対して、割り込み信号４００に対応したＬＰのＬＰ番号情報、特定した優先度情報、及び切替え要求信号を出力する。
【０１０６】
ここで、割り込み信号４００とＬＰ番号との対応に関する情報は、優先度格納部１２１に格納されており、この情報はプロセッサ２０から設定可能である。
【０１０７】
また図１２の動作について、複数ある割り込み信号４００の２本がＬＰ（１）とＬＰ（３）に関連付けられており、本実施の形態で１０個と仮定したコンテキストデータの数がさらに多いシステムを想定すると、割り込み信号４００が頻繁に入力された場合にＬＰ（２）のコンテキストデータ転送が長時間にわたって実行できないことがある。この問題を解決するために、転送待ち時間計数部１２４は、制御部１３３からの情報に基づいて、コンテキストデータ転送待ちの状態になったあとに転送をスキップされた回数、すなわちＰ（２）より先にコンテキストデータを転送したＬＰの個数を計数する。転送待ち時間計数部１２４は、ＬＰ（２）の転送待ち回数情報を保持しており、転送待ち時間計数部１２４の計数した値がこの回数に達したときには、ＬＰ（２）に最も高い優先度を付与して、切替え要求とともに選択部１２５に出力する。
【０１０８】
ここで、ＬＰ（２）の最大の転送待ち回数情報と書いたが、この転送待ち回数情報はすべてのＬＰについて設定可能であり、また格納する機能ブロックは転送待ち時間計数部１２４に限らず、例えば優先度格納部１２１でもよい。また、この転送待ち回数情報はプロセッサ２０から設定可能である。
【０１０９】
なお、共有メモリ３０はＭ個のプロセッサが同時にアクセスできる構成を用いると説明したが、これは例えばＭ個の入力ポート及び出力ポートを持つマルチポートメモリを用いれば実現できる。
【０１１０】
あるいは、共有メモリ３０については、シングルポートのメモリをＭ個並列に接続することによっても実現できる。ただし、任意の番号のＬＰがプロセッサ２０で順不同に実行されるため、例えばＬＰ（１）のコンテキストをシングルポートのメモリのＣＭ（１）にすべて配置する方法を用いると、必ずＣＭ（１）のメモリへのアクセスが競合してしまう。これを解決する方法として、例えば図１３（ａ）に示すデータの格納方法を行い、図１３（ｂ）のようにインターリーブ方式によってアクセスする方法がある。
【０１１１】
図１３（ａ）では共有メモリＣＭ（１）にＬＰ（１）を実行するときのコンテキストデータＬＰ（１）＿１，ＬＰ（１）＿４，ＬＰ（１）＿７，ＬＰ（１）＿１０と、ＬＰ（２）を実行するときのコンテキストデータＬＰ（２）＿１，ＬＰ（２）＿４，ＬＰ（２）＿７，ＬＰ（２）＿１０を格納する。ＬＰ（１）＿１の添え字“＿１”はコンテキストデータに割り振ったデータ番号である。ＣＭ（２），ＣＭ（３）についても同様とする。
【０１１２】
そして、図１３（ｂ）のタイミングチャートで示すように、共有メモリ３０に対してタイミングチャート中のデータ番号と上記のデータ番号が一致するようにアクセスすればよい。この図のデータ格納方法と、データアクセス方法を用いれば、任意のＬＰ番号の順にアクセスが同時に発生しても、アクセスするプロセッサの数が３個までならば、同時並列してアクセス可能である。
【０１１３】
ここでは説明の便宜上、プロセッサ数を「３」としたが、Ｍ個の同時並列アクセスを実現する場合も同様に考えればよい。また、図１３（ｂ）に示したアクセスの方法も１つの例であり、これに限定するものではない。
【０１１４】
また、共有メモリ３０にシングルポートのメモリをＭ個並列に接続する構成をとる場合、Ｍ個のメモリの中で使用する最大アクセス数格納部１３２に、使用するメモリの個数を設定する。
【０１１５】
通常、共有メモリ３０のメモリ容量はＬＰの実装数「Ｓ」から決定する。しかし、アプリケーションによっては実装したＬＰ数よりも少ないＬＰ数で動作させる場合がある。例えばＬＰの実装数が「８」であっても、アプリケーションでは４つのＬＰしか使用しない場合も考えられる。このとき、実装する共有メモリ３０の個数Ｍ（ここでは同時アクセス可能なプロセッサ数と等しいと想定する）が４個である場合、共有メモリ３０の容量としては２個のメモリで足りる。
【０１１６】
このとき、最大アクセス数格納部１３２には値「２」を設定する。制御部１３３は、共有メモリ３０の同時アクセス可能なプロセッサ数Ｍが「２」であるとして、データ切替え部１３４を制御する。詳細な説明図は省略するが、共有メモリ３０の中で、同時アクセス可能なプロセッサ数Ｍの対象となるメモリのみ稼動させ、残りのメモリの電力供給を止めることにより、消費電力を小さくすることが可能となる。
【０１１７】
なお、本実施の形態１では、コンテキストの復帰に関して説明したが、コンテキストの退避に関しても全く同様である。
【０１１８】
さらに、コンテキストの復帰と退避の競合が発生する場合には、共有メモリのポート数あるいはメモリ数を増設するか、本実施の形態と同様のデータ転送の制御を行うことで効率的にデータ転送を行うことができる。
【０１１９】
なお、この実施の形態１に書かれた構成は説明の便宜上のものであり、実施の形態を限定するものではない。
【０１２０】
（実施の形態２）
本発明の実施の形態２について、図面を参照しながら詳細に説明する。
【０１２１】
実施の形態２は図１と同じ機能ブロックで構成されるが、実施の形態１と異なる点は実行時間比較部１２２の機能である。
【０１２２】
図１４は、実施の形態２における、実行時間比較部１２２において実施される処理を示すフローチャートである。ステップＳ００３までは図１０と同じであるため、詳細な説明を省略する。
【０１２３】
ステップＳ０１０からステップＳ０１８では、実行時間比較部１２２は、コンテキストデータの連続転送プロセッサ数を１〜Ｍの範囲で変化させ、それぞれの場合において各プロセッサに割り当てられた時間内にすべてのプロセッサのコンテキストデータの転送完了を全て完了するための連続転送プロセッサの数を探索し、連続転送プロセッサ数情報とする。
【０１２４】
もし、すべてのプロセッサのコンテキストデータの転送完了が全て完了する連続転送プロセッサの数が存在しなければ、すべてのプロセッサのコンテキストデータの転送完了待ち時間の最大値ｔＭＡＸが最小になる連続転送プロセッサ数を探索する。
【０１２５】
そして、連続転送プロセッサ数を決定したのち、各ＬＰの優先度情報と、決定した連続転送プロセッサ数情報を選択部１２５に出力する。
【０１２６】
なお、本実施の形態２では、転送モード情報１１０は使用しない。すなわち、本実施の形態２における連続転送プロセッサ数は転送モード情報１１０に設定する連続転送プロセッサ数１１１とは異なる。
【０１２７】
次に図１５を用いて、Ｎ＝３，Ｍ＝２の場合について、図１４の具体的な動作を説明する。図１５において、Ｐ（１），Ｐ（２），Ｐ（３）のタスク切替え時刻がそれぞれＴ１１，Ｔ１３，Ｔ２１であるとする。
【０１２８】
図１５（ａ）は、連続転送を行うプロセッサ数を「１」とした場合のタイムチャートである。このとき、Ｐ（１）とＰ（２）についてはタスク切替え時刻までにコンテキストデータ転送が完了するが、Ｐ（３）は完了しない。
【０１２９】
一方、図１５（ｂ）は、連続転送を行うプロセッサ数を「２」とした場合のタイムチャートである。このとき、Ｐ（１），Ｐ（２），Ｐ（３）のすべてのプロセッサにおいて、タスク切替え時刻までにコンテキストデータ転送が完了する。すなわち、ｔＭＡＸ（２）＝０である。
【０１３０】
従って、ステップＳ０１８で生成する連続転送プロセッサ数情報を［２］と決定することになる。
【０１３１】
また、別の例として、図１６を用いて説明する。図１６において、Ｐ（１），Ｐ（２），Ｐ（３）のタスク切替え時刻がそれぞれＴ１１，Ｔ１３，Ｔ１３であるとする。
【０１３２】
図１６（ａ）は、連続転送を行うプロセッサ数を「１」とした場合のタイムチャートである。このとき、Ｐ（１）についてはタスク切替え時刻までにコンテキストデータ転送が完了するが、Ｐ（２）とＰ（３）は完了しない。
【０１３３】
一方、図１６（ｂ）は、連続転送を行うプロセッサ数を「２」とした場合のタイムチャートである。このとき、Ｐ（１）とＰ（３）についてはＬＰ切替え時刻までにコンテキストデータ転送が完了するが、Ｐ（２）は完了しない。
【０１３４】
いずれの場合も、ｔＭＡＸの値が０にならないので、ｔＭＡＸの値の大きさで評価することになる。
【０１３５】
図１６（ａ）では、Ｐ（１），Ｐ（２），Ｐ（３）のＬＰ切替え時刻に対してそれぞれ０サイクル、２サイクル、２サイクルの待ち時間が発生するので、ｔＭＡＸ（１）＝２である。
【０１３６】
図１６（ｂ）では、Ｐ（１），Ｐ（２），Ｐ（３）のＬＰ切替え時刻に対してそれぞれ０サイクル、７サイクル、０サイクルの待ち時間が発生するので、ｔＭＡＸ（２）＝７である。
【０１３７】
従って、ステップＳ０１８で生成する連続転送プロセッサ数情報は、ｔＭＡＸの値が最小となる連続転送プロセッサの数をとるので、連続転送プロセッサ情報は［１］と決定することになる。
【０１３８】
なお、本実施の形態においては、図１６のフローチャートに従って処理を実施する回路で構成してもよいし、プロセッサ数Ｎや共有メモリの同時並列アクセス数Ｍ、そして実行時の残りサイクル数などを用い、あらかじめ処理の一部あるいは全ての処理を数値テーブルにして実装しておいてもよい。
【０１３９】
また、本実施の形態では、全プロセッサのコンテキスト転送完了待ち時間を最小にするという評価を行っているが、他にも特定のＬＰに関しては常に優先度情報を高くするといった方法も考えられる。評価する対象は本実施の形態で説明した内容に限定するものではない。
【０１４０】
なお、この実施の形態２に書かれた構成は説明の便宜上のものであり、実施の形態を限定するものではない。
【産業上の利用可能性】
【０１４１】
本発明にかかるコンテキスト切替え装置は、携帯電話機等のモバイル機器等における音楽再生処理や、映像再生処理を複数のプロセッサで並行して実行する再生機器や、映像再生機器として適用できる。
【図面の簡単な説明】
【０１４２】
【図１】本発明の実施の形態１におけるコンテキスト切替え装置の機能ブロック図である。
【図２】転送モード格納部１１の機能ブロック図である。
【図３】優先度判定部１２の機能ブロック図である。
【図４】データ転送制御部１３の機能ブロック図である。
【図５】連続転送プロセッサ数１１１の設定を有効にした場合の、コンテキストデータ転送のタイミングチャートである（Ｎ＝３、Ｍ＝２）。
【図６】連続転送プロセッサ数１１１の設定を使用した場合のコンテキストデータ転送のタイミングチャートである（Ｎ＝４、Ｍ＝３）。
【図７】連続転送プロセッサ数１１１の設定を使用した場合のコンテキストデータ転送のタイミングチャートである（Ｎ＝４、Ｍ＝３）。
【図８】コンテキスト転送属性１１２の設定を用いた場合のコンテキストデータ転送のタイミングチャートである。
【図９】コンテキスト転送属性１１２の設定を用いた場合のコンテキストデータ転送のタイミングチャートである。
【図１０】実行時間比較部１２２において実施される処理を示すフローチャートである。
【図１１】図１０のフローチャートを説明するための処理の例である。
【図１２】転送中断制御部１３１を使用した場合のタイミングチャートである。
【図１３】共有メモリ３０の構成例である。
【図１４】本発明の実施の形態２における、実行時間比較部１２２において実施される処理を示すフローチャートである。
【図１５】本発明の実施の形態２における、コンテキストデータ転送のタイミングチャートである（ｔＭＡＸ＝０の場合）。
【図１６】本発明の実施の形態２における、コンテキストデータ転送のタイミングチャートである（ｔＭＡＸ≠０の場合）。
【図１７】従来のコンテキスト切替え装置の機能ブロック図である。
【図１８】従来のコンテキスト切替え装置におけるプログラム、ＬＰ、及びプロセッサの関係と、コンテキスト切替え処理を説明する図である。
【符号の説明】
【０１４３】
１  並列システム
１０  コンテキスト切替え装置
１１  転送モード格納部
１２  優先度判定部
１３  データ転送制御部
１５  カウンタ
２０  プロセッサ
３０  共有メモリ
１１０  転送モード情報
１１１  連続転送プロセッサ数
１１２  コンテキスト転送属性
１１３  選択情報
１１４  モード選択情報
１２１  優先度格納部
１２２  実行時間比較部
１２３  割り込み情報生成部
１２４  転送待ち時間計数部
１２５  選択部
１２６  データ転送情報生成部
１２７  連続転送するプロセッサ番号情報
１２８  連続転送しないプロセッサ番号情報
１２９  転送中断情報
１３１  転送中断制御部
１３２  最大アクセス数格納部
１３３  制御部
１３４  データ経路切替え部
４００  割り込み信号
【図１】
2007102646.tif 000003
【図２】
2007102646.tif 000004
【図３】
2007102646.tif 000005
【図４】
2007102646.tif 000006
【図５】
2007102646.tif 000007
【図６】
2007102646.tif 000008
【図７】
2007102646.tif 000009
【図８】
2007102646.tif 000010
【図９】
2007102646.tif 000011
【図１０】
2007102646.tif 000012
【図１１】
2007102646.tif 000013
【図１２】
2007102646.tif 000014
【図１３】
2007102646.tif 000015
【図１４】
2007102646.tif 000016
【図１５】
2007102646.tif 000017
【図１６】
2007102646.tif 000018
【図１７】
2007102646.tif 000019
【図１８】
2007102646.tif 000020