(57)【要約】【課題】回路規模の増大を抑制しつつ、複数のタスクを同時に並行して実行できるマルチタスクプロセッサを提供する。【解決手段】本発明のマルチタスクプロセッサ１Ａは、プログラムを格納する命令メモリ８Ａと、命令メモリ８Ａに格納されたプログラムに記述された命令を読み出してデコードし、タスクとして実行する命令処理部４Ａおよび５Ａと、複数のタスクの優先度にもとづいて命令処理部４Ａおよび５Ａのためにタスクを選択し、選択されたタスクを命令処理部４Ａおよび５Ａに割り当てるスケジューラ９Ａとを備える。【選択図】図１
2007328822.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクを同時に並行して実行するマルチタスクプロセッサであって、
プログラムを格納する命令メモリと、
各々が、前記命令メモリに格納されたプログラムに記述された命令を読み出してデコードし、タスクとして実行する複数の命令処理部と、
前記複数のタスクの各々に与えられる実行順序を示す優先度にもとづいて、前記複数の命令処理部の各々のためにタスクを選択し、選択されたタスクを前記複数の命令処理部の各々に割り当てるスケジューラとを備える
ことを特徴とするマルチタスクプロセッサ。
【請求項２】
請求項１に記載のマルチタスクプロセッサと、
前記複数の命令処理部の各々によって、当該命令処理部が実行するタスクにもとづいた起動がなされ、当該タスクのための処理を行うハードウェアエンジンとを備える
ことを特徴とするデータ処理システム。
【請求項３】
請求項１に記載のマルチタスクプロセッサにおいて、
タスクの切り替えが生じるときに、
前記複数の命令処理部の各々は、実行状態にあるタスクの処理を中断し、処理を中断したタスクを実行待ち状態のタスクとし、
前記スケジューラは、実行待ち状態にあるタスクの各々の前記優先度にもとづいて、前記実行待ち状態にあるタスクの中から、前記優先度が高い順に、前記複数の命令処理部の数と同数のタスクを選択し、当該複数の命令処理部の各々に割り当てる
ことを特徴とするマルチタスクプロセッサ。
【請求項４】
請求項２に記載のデータ処理システムにおいて、
前記マルチタスクプロセッサにおいて、タスクの切り替えが生じるときに、
前記複数の命令処理部の各々は、実行状態にあるタスクの処理を中断し、処理を中断したタスクを実行待ち状態のタスクとし、
前記スケジューラは、実行待ち状態にあるタスクの各々の前記優先度にもとづいて、前記実行待ち状態にあるタスクの中から、前記優先度が高い順に、前記複数の命令処理部の数と同数のタスクを選択し、当該複数の命令処理部の各々に割り当てる
ことを特徴とするデータ処理システム。
【請求項５】
請求項１に記載のマルチタスクプロセッサにおいて、
タスクの切り替えが生じるときに、
前記スケジューラは、タスクが割り当てられていない命令処理部がある場合、実行待ち状態にあるタスクの各々の前記優先度にもとづいて、前記実行待ち状態にあるタスクの中から、前記優先度が高い順に、前記タスクが割り当てられていない命令処理部の数と同数のタスクを選択し、前記タスクが割り当てられていない命令処理部に割り当てる
ことを特徴とするマルチタスクプロセッサ。
【請求項６】
請求項２に記載のデータ処理システムにおいて、
前記マルチタスクプロセッサにおいて、タスクの切り替えが生じるときに、
前記スケジューラは、タスクが割り当てられていない命令処理部がある場合、実行待ち状態にあるタスクの各々の前記優先度にもとづいて、前記実行待ち状態にあるタスクの中から、前記優先度が高い順に、前記タスクが割り当てられていない命令処理部の数と同数のタスクを選択し、前記タスクが割り当てられていない命令処理部に割り当てる
ことを特徴とするデータ処理システム。
【請求項７】
請求項１に記載のマルチタスクプロセッサにおいて、
タスクの切り替えが生じるときに、
前記スケジューラは、実行状態にあるタスクの各々の前記優先度と実行待ち状態にあるタスクの各々の前記優先度にもとづいて、前記実行状態にあるタスクと前記実行待ち状態にあるタスクとの中から、前記優先度が高い順に、前記複数の命令処理部の数と同数のタスクを選択し、
前記実行状態にあるタスクが選択された場合には、
選択された前記実行状態にあるタスクの処理を行っている命令処理部にその処理を続行させ、
前記実行待ち状態にあるタスクが選択された場合には、
選択された前記実行待ち状態にあるタスクを、前記実行状態にあるタスクの処理を続行させる命令処理部以外の命令処理部に割り当てる
ことを特徴とするマルチタスクプロセッサ。
【請求項８】
請求項２に記載のデータ処理システムにおいて、
前記マルチタスクプロセッサにおいて、タスクの切り替えが生じるときに、
前記スケジューラは、実行状態にあるタスクの各々の前記優先度と実行待ち状態にあるタスクの各々の前記優先度にもとづいて、前記実行状態にあるタスクと前記実行待ち状態にあるタスクとの中から、前記優先度が高い順に、前記複数の命令処理部の数と同数のタスクを選択し、
前記実行状態にあるタスクが選択された場合には、
選択された前記実行状態にあるタスクの処理を行っている命令処理部にその処理を続行させ、
前記実行待ち状態にあるタスクが選択された場合には、
選択された前記実行待ち状態にあるタスクを、前記実行状態にあるタスクの処理を続行させる命令処理部以外の命令処理部に割り当てる
ことを特徴とするデータ処理システム。
【請求項９】
複数のタスクを同時に並行して実行するマルチタスクプロセッサであって、
プログラムを格納する命令メモリと、
各々が、前記命令メモリに格納されたプログラムに記述された命令を読み出してデコードし、タスクとして実行する命令処理部と、
前記複数のタスクの各々に与えられる実行順序を示す優先度にもとづいて、前記命令処理部のためにタスクを選択し、選択したタスクを前記命令処理部に割り当てるスケジューラとを備え、
タスクの切り替えが生じるときに、
前記スケジューラは、
実行状態にあるタスクの各々の前記優先度と実行待ち状態にあるタスクの各々の前記優先度とにもとづいて、前記実行状態にあるタスクと前記実行待ち状態にあるタスクとの中から、前記優先度が最も高いタスクを選択し、
前記実行状態にあるタスクが選択された場合には、
選択された前記実行状態にあるタスクの処理を行っている命令処理部にその処理を続行させ、
前記実行待ち状態にあるタスクが選択された場合には、
選択された前記実行待ち状態にあるタスクを前記命令処理部に割り当てる
ことを特徴とするマルチタスクプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチタスク機能をもつプロセッサと、そのマルチタスクプロセッサを用いて複数のハードウェアエンジンを制御するデータ処理システムに関するものである。
【背景技術】
【０００２】
プロセッサは、命令メモリ、命令処理部、データメモリ、汎用レジスタなどからなる。命令メモリは、処理手順が記述されたプログラムを格納する。命令処理部は、命令実行に必要な演算器などを含んでおり、命令メモリから読み出した命令をデコードして実行する。データメモリや汎用レジスタは、処理に必要なデータや演算の中間データ、命令の実行結果などを格納する。
【０００３】
データ処理システムの処理能力を高めるためには、プロセッサにおいてプログラムに応じて実行される処理のうち、独立して実行できる処理を切り出し、その処理を行う専用のハードウェアエンジンを設ける。ハードウェアを用いて処理を行うことによって、処理の高速化はある程度実現できる。この場合、切り出された処理が他の処理と因果関係がなく互いに独立であるならば、それらの処理は同時に並行して実行することができる。したがって、このように分割された処理をそれぞれ別々のハードウェアエンジンを用いて並列に実行させ、一つのプロセッサはそれら複数個のハードウェアエンジンを制御するような構成を採る。
【０００４】
このような構成を採るため、プロセッサにおける制御手順を一つのプログラムで記述しようとすると非常に複雑なものとなる。そこで、マルチタスク機能をもつプロセッサを用いれば、あるひとつのハードウェアエンジンを制御するためのプログラムを一つのタスクとして記述することができ、プログラミングの見通しが容易になる。また、タスクに優先度を設定すれば、スケジューラによって優先度の高いタスクが自動的に選択され、選択されたタスクのプログラムがプロセッサで実行される。
【０００５】
さらに、データ処理システムの処理能力をより高めるためには、プロセッサを複数備えることによって、複数のタスクを同時に並行して実行することが考えられる。
【特許文献１】特開平０８−２９２９３２号公報
【特許文献２】特許３０４８９１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、以上のような従来のデータ処理システムは、複数のタスクを同時に並行して実行するためには、プロセッサを複数備える必要があり、回路規模の増大を招く。
【０００７】
そこで、上記に鑑み、本発明の目的は、回路規模の増大を抑制しつつ、複数のタスクを並行して実行可能なマルチタスクプロセッサおよびデータ処理システムを提供することである。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明が講じた手段は、複数のタスクを同時に並行して実行するマルチタスクプロセッサであって、プログラムを格納する命令メモリと、各々が、命令メモリに格納されたプログラムに記述された命令を読み出してデコードし、タスクとして実行する複数の命令処理部と、複数のタスクの各々に与えられる実行順序を示す優先度にもとづいて、複数の命令処理部の各々のためにタスクを選択し、選択されたタスクを複数の命令処理部の各々に割り当てるスケジューラとを備えるものである。
【０００９】
本発明によると、マルチタスクプロセッサの核となる命令処理部のみを複数備え、命令メモリなどは共用化する構成を採るため、全体として回路規模の増大を抑えつつ、複数のタスクを並列して実行することができる。
【００１０】
また、本発明は、上記マルチタスクプロセッサと、複数の命令処理部の各々によって、当該命令処理部が実行するタスクにもとづいた起動がなされ、当該タスクのための処理を行うハードウェアエンジンとを備えるものである。
【００１１】
このようにすると、全体として回路規模の増大を抑えつつ、複数のタスクを並行して実行可能なマルチタスクプロセッサを備えたデータ処理システムを実現できる。
【００１２】
また、本発明は、上記マルチタスクプロセッサにおいて、タスクの切り替えが生じるときに、複数の命令処理部の各々は、実行状態にあるタスクの処理を中断し、処理を中断したタスクを実行待ち状態のタスクとし、スケジューラは、実行待ち状態にあるタスクの各々の優先度にもとづいて、実行待ち状態にあるタスクの中から、優先度が高い順に、複数の命令処理部の数と同数のタスクを選択し、当該複数の命令処理部の各々に割り当てるものとする。
【００１３】
このようにすると、上記一連の処理によって、複数のタスクを並行して実行できる。
【００１４】
また、本発明は、上記データ処理システムにおいて、マルチタスクプロセッサにおいて、タスクの切り替えが生じるときに、複数の命令処理部の各々は、実行状態にあるタスクの処理を中断し、処理を中断したタスクを実行待ち状態のタスクとし、スケジューラは、実行待ち状態にあるタスクの各々の優先度にもとづいて、実行待ち状態にあるタスクの中から、優先度が高い順に、複数の命令処理部の数と同数のタスクを選択し、当該複数の命令処理部の各々に割り当てるものとする。
【００１５】
このようにすると、上記一連の処理によって、複数のタスクを並行して実行できる。
【００１６】
また、本発明は、上記マルチタスクプロセッサにおいて、タスクの切り替えが生じるときに、スケジューラは、タスクが割り当てられていない命令処理部がある場合、実行待ち状態にあるタスクの各々の優先度にもとづいて、実行待ち状態にあるタスクの中から、優先度が高い順に、タスクが割り当てられていない命令処理部の数と同数のタスクを選択し、タスクが割り当てられていない命令処理部に割り当てるものとする。
【００１７】
このようにすると、上記一連の処理によって、複数のタスクを並行して実行できる。
【００１８】
また、本発明は、上記データ処理システムにおいて、マルチタスクプロセッサにおいて、タスクの切り替えが生じるときに、スケジューラは、タスクが割り当てられていない命令処理部がある場合、実行待ち状態にあるタスクの各々の優先度にもとづいて、実行待ち状態にあるタスクの中から、優先度が高い順に、タスクが割り当てられていない命令処理部の数と同数のタスクを選択し、タスクが割り当てられていない命令処理部に割り当てるものとする。
【００１９】
このようにすると、上記一連の処理によって、複数のタスクを並行して実行できる。
【００２０】
また、本発明は、上記マルチタスクプロセッサにおいて、タスクの切り替えが生じるときに、スケジューラは、実行状態にあるタスクの各々の優先度と実行待ち状態にあるタスクの各々の優先度にもとづいて、実行状態にあるタスクと実行待ち状態にあるタスクとの中から、優先度が高い順に、複数の命令処理部の数と同数のタスクを選択し、実行状態にあるタスクが選択された場合には、選択された実行状態にあるタスクの処理を行っている命令処理部にその処理を続行させ、実行待ち状態にあるタスクが選択された場合には、選択された実行待ち状態にあるタスクを、実行状態にあるタスクの処理を続行させる命令処理部以外の命令処理部に割り当てるものとする。
【００２１】
このようにすると、上記一連の処理によって、複数のタスクを並行して実行できる。
【００２２】
また、本発明は、上記データ処理システムにおいて、マルチタスクプロセッサにおいて、タスクの切り替えが生じるときに、スケジューラは、実行状態にあるタスクの各々の優先度と実行待ち状態にあるタスクの各々の優先度にもとづいて、実行状態にあるタスクと実行待ち状態にあるタスクとの中から、優先度が高い順に、複数の命令処理部の数と同数のタスクを選択し、実行状態にあるタスクが選択された場合には、選択された実行状態にあるタスクの処理を行っている命令処理部にその処理を続行させ、実行待ち状態にあるタスクが選択された場合には、選択された実行待ち状態にあるタスクを、実行状態にあるタスクの処理を続行させる命令処理部以外の命令処理部に割り当てるものとする。
【００２３】
このようにすると、上記一連の処理によって、複数のタスクを並行して実行できる。
【００２４】
また、本発明は、複数のタスクを同時に並行して実行するマルチタスクプロセッサであって、プログラムを格納する命令メモリと、各々が、命令メモリに格納されたプログラムに記述された命令を読み出してデコードし、タスクとして実行する命令処理部と、複数のタスクの各々に与えられる実行順序を示す優先度にもとづいて、命令処理部のためにタスクを選択し、選択したタスクを命令処理部に割り当てるスケジューラとを備え、タスクの切り替えが生じるときに、スケジューラは、実行状態にあるタスクの各々の優先度と実行待ち状態にあるタスクの各々の優先度とにもとづいて、実行状態にあるタスクと実行待ち状態にあるタスクとの中から、優先度が最も高いタスクを選択し、実行状態にあるタスクが選択された場合には、選択された実行状態にあるタスクの処理を行っている命令処理部にその処理を続行させ、実行待ち状態にあるタスクが選択された場合には、選択された実行待ち状態にあるタスクを命令処理部に割り当てるものである。
【００２５】
本発明によると、命令処理部を複数備えることなく、複数のタスクを並行して実行できる。
【発明の効果】
【００２６】
上述の通り、本発明のマルチタスクプロセッサは、プロセッサの核となる命令処理部のみを複数備えたため、全体として回路規模の増大を抑制しつつ、複数のタスクを同時に実行することができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の各実施形態について、図面を参照しながら説明する。
【００２８】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るデータ処理システムの構成例を示す図である。図１に示すデータ処理システムは、２つのハードウェアエンジン２Ａおよび３Ａと、プロセッサ１Ａ（マルチタスクプロセッサに対応する）とを有している。
【００２９】
ハードウェアエンジン２Ａおよび３Ａはプロセッサ１Ａにより制御される。
【００３０】
プロセッサ１Ａは、２つの命令処理部４Ａおよび５Ａと、汎用レジスタ６Ａと、データメモリ７Ａと、命令メモリ８Ａと、スケジューラ９Ａとを有している。
【００３１】
命令メモリ８Ａは、処理手順がタスクとして記述されたプログラムを格納する。
【００３２】
命令処理部４Ａ、５Ａは、プログラムから１命令ずつ読み出してデコードする。そして、命令処理部４Ａ、５Ａは、デコードされた命令の内容に応じて、ハードウェアエンジン２Ａ、３Ａに対する入力設定および実行起動、ハードウェアエンジン２Ａ、３Ａからの出力結果の読み出し、および演算などを行う。
【００３３】
汎用レジスタ６Ａやデータメモリ７Ａは、ハードウェアエンジン２Ａ、３Ａの設定に必要な初期値データや、演算の中間データ、実行結果などを格納する。
【００３４】
スケジューラ９Ａは、タスクの実行順序を示す優先度にもとづいて、命令処理部４Ａ、５Ａに実行させるタスクを選択し、そのタスクを命令処理部４Ａ、５Ａに割り当てる。
【００３５】
以上のように構成されたデータ処理システムの動作について説明する。
【００３６】
図２はデータ処理システムの動作を説明するための図である。
【００３７】
以下では、３つのタスクＴＡ０〜ＴＡ２が実行される場合について考える。ここで、タスクＴＡ０〜ＴＡ２の優先度はそれぞれ実行順序の高い順に高、中、低とする。また、タスクの切り替えは、タスクの実行停止またはハードウェアエンジンの実行終了によって発生するものとする。
【００３８】
図２では、右方向を正としてサイクルｔ０〜ｔ８までの時間の流れがあるとする。また、各タスクＴＡ０〜ＴＡ２に対して、実線の矢印、荒い破線、細かい破線は、それぞれ、そのタスクが実行状態、実行待ち状態、ハードウェアエンジン実行終了待ち状態であることを示している。なお、実行待ち状態のタスクは実行可能であるが、ハードウェアエンジン実行終了待ち状態のタスクは、ハードウェアエンジンの実行が終了するまで実行は不可能である。また、各タスクに対する実線の矢印上にある｛ｐ−４Ａ｝または｛ｐ−５Ａ｝は、そのタスクが実行されている命令処理部を示している。つまり、命令処理部４Ａによって実行されているタスクは｛ｐ−４Ａ｝、命令処理部５Ａによって実行されているタスクは｛ｐ−５Ａ｝が付されている。また、各ハードウェアエンジン２Ａおよび３Ａに対して示された実線の矢印は、そのハードウェアエンジンが実行状態であることを示している。
【００３９】
＜サイクルｔ０＞
タスクＴＡ２、ＴＡ１は実行状態にあり、それぞれ命令処理部４Ａ、５Ａによって実行されており、タスクＴＡ０は実行待ち状態にある。また、ハードウェアエンジン２Ａおよび３Ａはいずれも停止している。
【００４０】
＜サイクルｔ１＞
タスクＴＡ２が一旦停止し、実行状態から実行待ち状態に移行したとする。このとき、タスクの切り替えが発生し、スケジューラ９Ａは優先度にしたがってタスクＴＡ１およびＴＡ０を次に実行すべきタスクとして選択する。そのため、タスクＴＡ０は命令処理部４Ａで実行され、タスクＴＡ１はそのまま命令処理部５Ａで実行が続行される。
【００４１】
＜サイクルｔ２＞
タスクＴＡ１によりハードウェアエンジン２Ａが起動される場合、タスクＴＡ１は一旦停止し、タスクの切り替えが発生する。タスクＴＡ１はハードウェアエンジン２Ａの実行が終了するまで処理を再開できないため、スケジューラ９ＡによってタスクＴＡ０およびＴＡ２が選ばれる。そのため、タスクＴＡ０は命令処理部４Ａで実行が続行され、タスクＴＡ２は命令処理部５Ａで実行される。
【００４２】
＜サイクルｔ３＞
タスクＴＡ０によりハードウェアエンジン３Ａが起動される場合、タスクＴＡ０は一旦停止し、タスクの切り替えが発生する。タスクＴＡ０はハードウェアエンジン３Ａの実行が終了するまで処理を再開できないため、スケジューラ９ＡによってタスクＴＡ２のみが選ばれる。そのため、タスクＴＡ２は命令処理部５Ａで実行が続行される。
【００４３】
＜サイクルｔ４＞
ハードウェアエンジン３Ａの実行が終了し、タスクの切り替えが発生する。タスクＴＡ０は、ハードウェアエンジン３Ａの実行が終了したので、その処理を再開することができる。そのため、スケジューラ９ＡによってタスクＴＡ０およびＴＡ２が選ばれるので、タスクＴＡ０は命令処理部４Ａで実行され、タスクＴＡ２は命令処理部５Ａで実行が続行される。
【００４４】
＜サイクルｔ５＞
ハードウェアエンジン２Ａの実行が終了し、タスクの切り替えが発生する。タスクＴＡ１は、ハードウェアエンジン２Ａの実行が終了したので、その処理を再開することができる。スケジューラ９Ａは優先度にしたがってタスクＴＡ０およびＴＡ２を選択する。そのため、タスクＴＡ１は命令処理部５Ａで実行され、タスクＴＡ０は命令処理部４Ａで実行が続行される。なお、タスクＴＡ２の実行は一旦中断される。
【００４５】
＜サイクルｔ６＞
タスクＴＡ２の実行が終了し、タスクの切り替えが発生する。そのため、スケジューラによってタスクＴＡ１およびＴＡ０が選ばれるので、タスクＴＡ１は命令処理部５Ａで実行が続行され、タスクＴＡ０は命令処理部４Ａで実行される。
【００４６】
＜サイクルｔ７＞
タスクＴＡ１の実行が終了し、タスクの切り替えが発生する。そのため、スケジューラ９ＡによってタスクＴＡ２が選ばれるので、タスクＴＡ２は命令処理部４Ａで実行が続行される。
【００４７】
＜サイクルｔ８＞
タスクＴＡ２の実行が終了し、これで全てのタスクの実行が終了する。
【００４８】
以上のように、本実施形態によると、プロセッサを複数備えることなく、命令処理部のみを複数備え、命令メモリなどを共有化することで、複数のタスクを同時に並行して実行することができる。
【００４９】
（第２の実施形態）
以下では、上記第１の実施形態に係るマルチタスクプロセッサおよびデータ処理システムにおける複数のタスクの処理の変形例について図３〜図５を参照しながら説明する。
【００５０】
以下では、４つのタスクＴＡ０〜ＴＡ３が実行される場合について考える。
【００５１】
タスクＴＡ０〜ＴＡ３の優先度は、タスクＴＡ０が最も高い優先度を有するものとし、続いてタスクＴＡ１、タスクＴＡ２、タスクＴＡ３の順に優先度が小さくなるものとする。また、タスクの切り替えは、タスクが実行状態からそれ以外の状態へ移行した場合またはタスクが実行不可状態から実行待ち状態に移行した場合に発生するものとする。
【００５２】
また、上記各図面では、右方向を正としてステージＳＴ０〜ＳＴ４までの時間の経過があるとする。命令処理部４Ａ、命令処理部５Ａに対応する欄には、その命令処理部で実行状態にあるタスクを示している。実行待ち状態、実行不可状態に対応する欄には、それぞれの状態にあるタスクを示している。
【００５３】
図３は、本実施形態に係るマルチタスクプロセッサおよびデータ処理システムにおける複数のタスクの第１の処理例を示す図である。
【００５４】
ステージＳＧ０において、タスクＴＡ２、ＴＡ３は、それぞれ命令処理部４Ａ、命令処理部５Ａで実行され、タスクＴＡ０、ＴＡ１は、それぞれ実行待ち状態、実行不可状態にあるとする。
【００５５】
ステージＳＧ１において、実行状態のタスクＴＡ３が実行待ち状態に移るとタスクの切り替えが発生する。実行状態のタスクＴＡ２は実行が一旦中断され、実行待ち状態に移される。このとき、実行待ち状態にはタスクＴＡ０、ＴＡ２、ＴＡ３があり、スケジューラ９Ａは優先度にしたがって２つのタスクＴＡ０、ＴＡ２を選択し、それぞれ命令処理部４Ａ、５Ａに割り当てる。
【００５６】
ステージＳＧ２において、スケジューラ９Ａによって選択されたタスクＴＡ０、ＴＡ２は、それぞれ命令処理部４Ａ、命令処理部５Ａで実行される。
【００５７】
ステージＳＧ３において、実行不可状態にあるタスクＴＡ１が実行待ち状態へ移されると、タスクの切り替えが発生する。このとき、実行状態のタスクＴＡ０、ＴＡ２は実行が一旦中断され、実行待ち状態に移される。ここで、実行待ち状態にはタスクＴＡ０、ＴＡ１、ＴＡ２、ＴＡ３があり、スケジューラ９Ａは優先度にしたがって２つのタスクＴＡ０およびＴＡ１を選択し、命令処理部４Ａ、５Ａにそれぞれ割り当てる。
【００５８】
ステージＳＧ４において、タスクＴＡ０、ＴＡ１がそれぞれ命令処理部４Ａ、５Ａで実行される。
【００５９】
また、図４は、本実施形態に係るマルチタスクプロセッサおよびデータ処理システムにおける複数のタスクの第２の処理例を示す図である。
【００６０】
ステージＳＧ０において、タスクＴＡ２、ＴＡ３は、それぞれ命令処理部４Ａ、５Ａで実行され、タスクＴＡ０、ＴＡ１は、それぞれ実行待ち状態、実行不可状態にあるする。
【００６１】
ステージＳＧ１において、実行状態のタスクＴＡ３が実行待ち状態に移るとタスクの切り替えが発生する。この場合、実行状態のタスクＴＡ２の処理は実行が続行され、使用されていない命令処理部は命令処理部５Ａである。このとき、実行待ち状態にあるタスクＴＡ０、ＴＡ３の中から、スケジューラ９Ａは、優先度にしたがって１つのタスクＴＡ０を選択し、使用されていない命令処理部５Ａに割り当てる。
【００６２】
ステージＳＧ２において、タスクＴＡ０が命令処理部５Ａに割り当てられ、タスクＴＡ０、ＴＡ２は、それぞれ命令処理部５Ａ、命令処理部４Ａで実行される。
【００６３】
ステージＳＧ３において、実行不可状態にあるタスクＴＡ１が実行待ち状態へ移され、タスクの切り替えが発生する。このとき、実行待ち状態にはタスクＴＡ１、ＴＡ３があるが、使用されていない命令処理部はないため、スケジューラ９Ａによってタスクの選択は行われない。
【００６４】
したがって、ステージＳＧ４において、タスクの再割り当ては発生しないため、命令処理部４Ａ、５Ａにおいて、それぞれタスクＴＡ２、ＴＡ０の処理は実行が続行される。
【００６５】
図５は、本実施形態に係るマルチタスクプロセッサおよびデータ処理システムにおける複数のタスクの第３の処理例を示す図である。
【００６６】
ステージＳＧ０において、タスクＴＡ２、ＴＡ３は、それぞれ命令処理部４Ａ、５Ａで実行され、タスクＴＡ０、ＴＡ１は、それぞれ実行待ち状態、実行不可状態にあるとする。
【００６７】
ステージＳＧ１において、実行状態のタスクＴＡ３が実行待ち状態に移るとタスクの切り替えが発生する。このとき、実行状態にはタスクＴＡ２が、実行待ち状態にはタスクＴＡ０、ＴＡ３がある。スケジューラ９Ａは、これらのタスクの中から優先度にしたがって２つのタスクＴＡ０、ＴＡ２を選択し、それぞれ命令処理部５Ａ、４Ａに割り当てる。
【００６８】
ステージＳＧ２において、タスクＴＡ０は命令処理部５Ａで実行される。タスクＴＡ２は命令処理部４Ａでそのまま実行が続行される。
【００６９】
ステージＳＧ３において、実行不可状態にあるタスクＴＡ１が実行待ち状態へ移されるとタスクの切り替えが発生する。このとき、実行状態にはタスクＴＡ０、ＴＡ２が、実行待ち状態にはタスクＴＡ１、ＴＡ３がある。スケジューラ９Ａは、これらのタスクの中から優先度にしたがって２つのタスクＴＡ０、ＴＡ１を選択し、それぞれ命令処理部５Ａ、４Ａに割り当てる。
【００７０】
ステージＳＧ４において、タスクＴＡ２は実行が一旦中断され、実行待ち状態に移される。タスクＴＡ１は命令処理部４Ａで実行され、タスクＴＡ０は命令処理部５Ａでそのまま実行が続行される。
【００７１】
以上のように、本実施形態によると、回路規模の増大の抑制を可能としたデータ処理システムにおいて、上記図３〜図５でそれぞれ説明した一連の処理によって、複数のタスクを同時に並行して実行できる。
【００７２】
（第３の実施形態）
図６は、本実施形態に係るデータ処理システムの他の構成例を示す図である。
【００７３】
図６に示すデータ処理システムは、２つのハードウェアエンジン２Ｂおよび３Ｂと、プロセッサ１Ｂ（マルチタスクプロセッサに対応する）とを有している。
【００７４】
ハードウェアエンジン２Ｂおよび３Ｂは、プロセッサ１Ｂによって制御される。
【００７５】
プロセッサ１Ｂは、命令処理部４Ｂと、汎用レジスタ６Ｂと、データメモリ７Ｂと、命令メモリ８Ｂと、スケジューラ９Ｂとを有している。
【００７６】
図６に示すデータ処理システムが図１に示したデータ処理システムと異なる点は、命令処理部４Ｂを１つだけ有している点であり、その他の点は同様である。
【００７７】
図７は、本実施形態に係るマルチタスクプロセッサおよびデータ処理システムにおける複数のタスクの処理例を示す図である。
【００７８】
ここでは、第２の実施形態と同様に、４つのタスクＴＡ０〜ＴＡ３を実行する場合について考える。  
【００７９】
図７では、右方向を正としてステージＳＴ０〜ＳＴ６までの時間の経過があるとする。命令処理部４Ｂに対応する欄には、その命令処理部４Ｂで実行状態にあるタスクを示している。実行待ち状態、実行不可状態に対応する欄には、それぞれの状態にあるタスクを示している。なお、タスクＴＡ０〜ＴＡ３の優先度やタスクの切り替えについては、上記第２の実施形態と同様とする。
【００８０】
ステージＳＧ０において、タスクＴＡ２が命令処理部４Ｂで実行され、タスクＴＡ１は実行待ち状態にあり、タスクＴＡ０およびＴＡ３は実行不可状態にあるとする。
【００８１】
ステージＳＧ１において、実行状態のタスクＴＡ２が実行待ち状態に移るとタスクの切り替えが発生する。このとき、実行状態のタスクはなく、実行待ち状態にはタスクＴＡ１、ＴＡ２がある。そして、これらのタスクの中から、スケジューラ９Ｂは、優先度にしたがって１つのタスクＴＡ１を選択し、命令処理部４Ｂに割り当てる。
【００８２】
ステージＳＧ２において、タスクＴＡ１は命令処理部４Ｂで実行される。
【００８３】
ステージＳＧ３において、実行不可状態にあるタスクＴＡ０が実行待ち状態へ移されるとタスクの切り替えが発生する。このとき、実行状態にあるのはタスクＴＡ１であり、実行待ち状態にあるのはタスクＴＡ０、ＴＡ２である。そして、これらのタスクの中から、スケジューラ９Ｂは、優先度にしたがって１つのタスクＴＡ０を選択し、命令処理部４Ｂに割り当てる。
【００８４】
ステージＳＧ４において、それまで実行状態であったタスクＴＡ１は選択されなかったので、タスクＴＡ１の実行が一旦中断され実行待ち状態に移される。そして、タスクＴＡ０は命令処理部４Ｂで実行される。
【００８５】
ステージＳＧ５において、実行不可状態にあるタスクＴＡ３が実行待ち状態へ移されるとタスクの切り替えが発生する。このとき、実行状態にあるのはタスクＴＡ０であり、実行待ち状態にあるのはタスクＴＡ１、ＴＡ２、ＴＡ３である。そして、これらのタスクの中から、スケジューラ９Ｂは、優先度にしたがって１つのタスクＴＡ０を選択する。
【００８６】
ステージＳＧ６において、タスクＴＡ０は実行が続行される。
【００８７】
以上のように、本実施形態によると、複数の命令処理部を備えることなく、複数のタスクの処理が可能になる。
【産業上の利用可能性】
【００８８】
本発明は、回路規模の増大を抑制しつつ、複数のタスクを同時に並行して実行できるマルチタスクプロセッサにとって有用である。
【図面の簡単な説明】
【００８９】
【図１】本発明の第１の実施形態に係るデータ処理システムの構成例を示す図である。
【図２】第１の実施形態に係るデータ処理システムの実行例を示す図である。
【図３】本発明の第２の実施形態に係るデータ処理システムにおける複数のタスクの第１の処理例を示す図である。
【図４】本発明の第２の実施形態に係るデータ処理システムにおける複数のタスクの第２の処理例を示す図である。
【図５】本発明の第２の実施形態に係るデータ処理システムにおける複数のタスクの第３の処理例を示す図である。
【図６】本発明の第３の実施形態に係るデータ処理システムの構成例を示す図である。
【図７】第３の実施形態に係るデータ処理システムにおける複数のタスクの処理例を示す図である。
【符号の説明】
【００９０】
１Ａ、１Ｂ        プロセッサ
４Ａ、５Ａ、４Ｂ  命令処理部
６Ａ、６Ｂ        汎用レジスタ
７Ａ、７Ｂ        データメモリ
８Ａ、８Ｂ        命令メモリ
９Ａ、９Ｂ        スケジューラ
２Ａ、２Ｂ、３Ａ、３Ｂ    ハードウェアエンジン
【図１】
2007328822.tif 000003
【図２】
2007328822.tif 000004
【図３】
2007328822.tif 000005
【図４】
2007328822.tif 000006
【図５】
2007328822.tif 000007
【図６】
2007328822.tif 000008
【図７】
2007328822.tif 000009
【手続補正書】
【提出日】平成19年10月9日(2007.10.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のハードウェアエンジンと協働して動作し、複数のタスクを同時に並行して実行するマルチタスクプロセッサであって、
前記複数のタスクのうち少なくとも２つのタスクに対して、
プログラムに記述された命令を読み出してデコードし、タスクとして実行する複数の命令処理部と、
前記複数のタスクの各々に与えられた優先度にもとづいて、前記複数の命令処理部の各々にタスクを切り替えさせるスケジューラとを備え、
前記複数のハードウェアエンジンの各々は、前記複数の命令処理部の各々による起動に従ってデータ処理の実行を開始し、かつ当該データ処理の実行が終了すると前記スケジューラに対して実行終了を知らせ、
前記スケジューラは、前記複数のハードウェアエンジンのうちのいずれかのハードウェアエンジンの実行終了を検出した場合には、前記複数の命令処理部の各々にタスクを切り替えさせる
ことを特徴とするマルチタスクプロセッサ。
【請求項２】
請求項１に記載のマルチタスクプロセッサにおいて、
タスクの切り替えが生じるときに、
前記複数の命令処理部の各々は、実行状態にあるタスクの処理を中断し、処理を中断したタスクを実行待ち状態のタスクとし、
前記スケジューラは、実行待ち状態にあるタスクの各々の前記優先度にもとづいて、前記実行待ち状態にあるタスクの中から、前記優先度が高い順に、前記複数の命令処理部の数と同数のタスクを選択し、当該複数の命令処理部の各々に割り当てる
ことを特徴とするマルチタスクプロセッサ。
【請求項３】
請求項１に記載のマルチタスクプロセッサにおいて、
タスクの切り替えが生じるときに、
前記スケジューラは、タスクが割り当てられていない命令処理部がある場合、実行待ち状態にあるタスクの各々の前記優先度にもとづいて、前記実行待ち状態にあるタスクの中から、前記優先度が高い順に、前記タスクが割り当てられていない命令処理部の数と同数のタスクを選択し、前記タスクが割り当てられていない命令処理部に割り当てる
ことを特徴とするマルチタスクプロセッサ。
【請求項４】
請求項１に記載のマルチタスクプロセッサにおいて、
タスクの切り替えが生じるときに、
前記スケジューラは、実行状態にあるタスクの各々の前記優先度と実行待ち状態にあるタスクの各々の前記優先度にもとづいて、前記実行状態にあるタスクと前記実行待ち状態にあるタスクとの中から、前記優先度が高い順に、前記複数の命令処理部の数と同数のタスクを選択し、
前記実行状態にあるタスクが選択された場合には、
選択された前記実行状態にあるタスクの処理を行っている命令処理部にその処理を続行させ、
前記実行待ち状態にあるタスクが選択された場合には、
選択された前記実行待ち状態にあるタスクを、前記実行状態にあるタスクの処理を続行させる命令処理部以外の命令処理部に割り当てる
ことを特徴とするマルチタスクプロセッサ。