(57)【要約】【課題】マルチタスク処理を行うプロセッサにおいて、同時実行性を追求したときの処理効率の低下というリスクを緩和するプロセッサを提供する。【解決手段】実行単位別に、実行単位が処理すべきデータを記憶し、前記実行単位が実行され、記憶したデータ量が変化したことを検出すると、前記実行単位別に、記憶した処理すべきデータの記憶量を取得し、前記実行単位のそれぞれについて、取得した処理すべきデータ記憶量が、実行単位別に予め決まったデータ量よりも大きいときに、その実行単位は実行可能と判定するプロセッサとする。【選択図】  図３
2004295451.tif 000002
【特許請求の範囲】
【請求項１】
複数の実行単位のそれぞれをある微小時間ごとに切り替えて実行することで、該実行単位の同時実行を実現するマルチタスク処理を行うことが可能なプロセッサにおいて、
前記実行単位別に、少なくともある実行単位が処理すべきデータを記憶する記憶手段と、
前記実行単位の実行により、前記記憶手段に記憶したデータ量が変化したことを検出する記憶量変化検出手段と、
前記記憶量変化検出手段が前記記憶手段に記憶したデータ量の変化を検出したことを受けて、前記実行単位別に、前記記憶手段に記憶した処理すべきデータの記憶量を取得するデータ記憶量取得手段と、
前記実行単位のそれぞれについて、前記データ記憶量取得手段が取得した処理すべきデータの記憶量が、実行単位別に予め決まったデータ量よりも大きいときに、その実行単位は実行可能と判定する実行判定手段とを備え、
以降実行する実行単位を、前記実行判定手段が実行可能と判断した実行単位の中から選択することを特徴とするプロセッサ。
【請求項２】
複数の実行単位のそれぞれをある微小時間ごとに切り替えて実行することで、該実行単位の同時実行を実現するマルチタスク処理を行うことが可能なプロセッサにおいて、
前記実行単位別に、ある実行単位が処理すべきデータとこの実行単位が処理した実行結果のデータとを記憶する記憶手段と、
前記実行単位の実行により、前記記憶手段に記憶したデータ量が変化したことを検出する記憶量変化検出手段と、
前記記憶量変化検出手段が前記記憶手段に記憶したデータ量の変化を検出したことを受けて、前記実行単位別に、前記記憶手段に記憶した処理すべきデータの記憶量と、実行結果のデータを記憶することができる空データ記憶量とを取得するデータ記憶量取得手段と、
前記実行単位のそれぞれについて、前記データ記憶量取得手段が取得した処理すべきデータ記憶量が、処理すべきデータとして記憶する実行単位別に予め決まったデータ量よりも大きく、かつ空データ記憶量が、実行結果として記憶するデータの実行単位別に予め決まったデータ量よりも大きいときに、その実行単位は実行可能と判定する実行判定手段とを備え、
以降実行する実行単位を、前記実行判定手段が実行可能と判断した実行単位の中から選択することを特徴とするプロセッサ。
【請求項３】
前記記憶手段は複数のＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）型記憶手段からなり、この複数のＦＩＦＯ型記憶手段のうちの１つを、ある実行単位が処理すべきデータを記憶する記憶領域として割り当てることを特徴とする、請求項１に記載のプロセッサ。
【請求項４】
前記記憶手段は複数のＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）型記憶手段からなり、この複数のＦＩＦＯ型記憶手段のうちの１つを、ある実行単位が処理すべきデータを記憶する記憶領域として割り当て、さらに別の１つを、この実行単位が処理した実行結果を記憶する記憶領域として割り当てることを特徴とする、請求項２に記載のプロセッサ。
【請求項５】
前記記憶量変化検出手段は、前記記憶手段に記憶したデータ量の変化を検出したときに、前記記憶手段内の変化した記憶領域がいずれの実行単位の処理すべきデータを記憶する記憶領域であるかを求めるとともに、
前記データ記憶量取得手段は、前記記憶量変化検出手段が求めた実行単位が処理すべき、前記記憶手段に記憶したデータの記憶量を取得し、
前記実行判定手段は、前記記憶量変化検出手段が求めた実行単位について、前記データ記憶量取得手段が取得したデータ記憶量から、該実行単位のそれぞれについて実行可能かどうかを判定することを特徴とする請求項１に記載のプロセッサ。
【請求項６】
前記記憶量変化検出手段は、前記記憶手段に記憶したデータ量の変化を検出したときに、前記記憶手段内の変化した記憶領域がいずれの実行単位の処理すべきデータまたは処理した実行結果のデータを記憶する記憶領域であるかを求めるとともに、
前記データ記憶量取得手段は、前記記憶量変化検出手段が求めた実行単位が処理すべき前記記憶手段に記憶したデータの記憶量、及びこの実行単位が処理した実行結果のデータを記憶することができる、前記記憶手段の空データ記憶量を取得し、
前記実行判定手段は、前記記憶量変化検出手段が求めた実行単位について、前記データ記憶量取得手段が取得したデータ記憶量と空データ記憶量とから、該実行単位のそれぞれについて実行可能かどうかを判定することを特徴とする請求項２に記載のプロセッサ。
【請求項７】
プロセッサにて複数の実行単位を同時実行するときの、以降実行可能なタスクを選択する方法であって、
前記実行単位別に、少なくともある実行単位が処理すべきデータを記憶し、
前記実行単位が実行され、記憶したデータ量の変化を検出すると、前記実行単位別に、記憶した処理すべきデータの記憶量を取得し、
前記実行単位のそれぞれについて、取得した処理すべきデータ記憶量が、実行単位別に予め決まったデータ量よりも大きいときに、その実行単位は実行可能と判定することを特徴とする実行可能タスク選択方法。
【請求項８】
プロセッサにて複数の実行単位を同時実行するときの、以降実行可能なタスクを選択する方法であって、
前記実行単位別に、ある実行単位が処理すべきデータとこの実行単位が処理した実行結果のデータとを記憶し、
前記実行単位が実行され、記憶したデータ量が変化したことを検出すると、前記実行単位別に、記憶した処理すべきデータの記憶量と、実行結果のデータを記憶することができる空データ記憶量とを取得し、
前記実行単位のそれぞれについて、取得した処理すべきデータ記憶量が、処理すべきデータとして記憶する実行単位別に予め決まったデータ量よりも大きく、かつ空データ記憶量が、実行結果として記憶するデータの実行単位別に予め決まったデータ量よりも大きいときに、その実行単位は実行可能と判定することを特徴とする実行可能タスク選択方法。
【請求項９】
記憶したデータ量の変化を検出したときに、変化した記憶領域がいずれの実行単位の処理すべきデータを記憶する記憶領域であるかを求め、この求めた実行単位が処理すべきデータの記憶量を取得し、
前記求めた実行単位について、前記取得したデータ記憶量から、該実行単位のそれぞれについて実行可能かどうかを判定することを特徴とする請求項７に記載の実行可能タスク選択方法。
【請求項１０】
記憶したデータ量の変化を検出したときに、変化した記憶領域がいずれの実行単位の処理すべきデータまたは処理した実行結果のデータを記憶する記憶領域であるかを求め、この求めた実行単位が処理すべきデータの記憶量、及びこの実行単位が処理した実行結果のデータを記憶することができる空データ記憶量を取得し、
前記求めた実行単位について、前記取得したデータ記憶量と空データ記憶量とから、該実行単位のそれぞれについて実行可能かどうかを判定することを特徴とする請求項８に記載の実行可能タスク選択方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マルチタスク処理を行うプロセッサにおける、特に同時実行するタスクの実行条件の判別方法及びこの判別方法を用いたプロセッサに関する。
【０００２】
【従来の技術】
処理装置の処理を微小時間に時分割して、その微小時間ごとに実行する処理を切り替えることで、複数の処理を同時実行するマルチタスク処理を実現すべく、様々な工夫が成されてきた（例えば特許文献１を参照）。
【０００３】
同時に複数のタスクを実行する場合、一般的にオペレーティングシステムなどのシステム管理ソフトウェアを介在してタスクの切り替えを行っている。
【０００４】
複数のタスクを遅滞なく処理してゆくには、一定時間ごとに各タスクが実行できる状態になったかどうかを監視し、そのときに実行可能なタスクを順次切り替えながら実行してゆく必要がある。切り替えの処理をオペレーティングシステムなどのソフトウェアによって行うこととなると、本来処理すべきタスクの処理とこのタスク切り替えのための処理との両方の処理を同じプロセッサで行わねばならない。
【０００５】
さらにタスク切り替えの処理は適切なタイミングで、実行中の本来のタスク処理とは非同期に行う必要がある。このため現在実行中のタスクが復帰後継続して実行が行えるよう、タスク切り替えの処理に移る前に少なくとも作業途中のレジスタ等の内容を退避し、再び元のタスクに戻るときはそれらが復帰できるようになっていなければならない。各タスクを監視するために行う処理及びレジスタ等の作業内容の退避／復帰にかかる処理は、演算処理部に多大な負担を強いることとなる。
【０００６】
マルチタスク処理でより俊敏なリアルタイム応答を実現するには、より短期間に頻繁に実行中のタスクを切り替えねばならない。すると実行可能なタスクの監視に伴う処理も頻繁に行わねばならず、プロセッサの同時実行性を追求すればするほど処理効率が低下してしまう。
【０００７】
【特許文献１】
特開２００３−２９９８４公報
【０００８】
【発明が解決しようとする課題】
上記したように同時に複数のタスクを実行するようにすればするほど、これらタスクの切り替えに要する処理が増大し、本来行うべき処理についての処理効率が低下する。
【０００９】
本発明は上記問題を鑑みて成されたもので、マルチタスク処理を行うプロセッサにおいて、同時実行性を追求したときの処理効率の低下というリスクを緩和する実行タスク判別方法及びプロセッサを提供する。
【００１０】
【課題を解決するための手段】
本発明によれば、
複数の実行単位のそれぞれをある微小時間ごとに切り替えて実行することで、該実行単位の同時実行を実現するマルチタスク処理を行うことが可能なプロセッサにおいて、
前記実行単位別に、少なくともある実行単位が処理すべきデータを記憶する記憶手段と、
前記実行単位の実行により、前記記憶手段に記憶したデータ量が変化したことを検出する記憶量変化検出手段と、
前記記憶量変化検出手段が前記記憶手段に記憶したデータ量の変化を検出したことを受けて、前記実行単位別に、前記記憶手段に記憶した処理すべきデータの記憶量を取得するデータ記憶量取得手段と、
前記実行単位のそれぞれについて、前記データ記憶量取得手段が取得した処理すべきデータの記憶量が、実行単位別に予め決まったデータ量よりも大きいときに、その実行単位は実行可能と判定する実行判定手段とを備え、
以降実行する実行単位を、前記実行判定手段が実行可能と判断した実行単位の中から選択することを特徴とするプロセッサが提供される。
【００１１】
また、
プロセッサにて複数の実行単位を同時実行するときの、以降実行可能なタスクを選択する方法であって、
前記実行単位別に、少なくともある実行単位が処理すべきデータを記憶し、
前記実行単位が実行され、記憶したデータ量が変化したことを検出すると、前記実行単位別に、記憶した処理すべきデータの記憶量を取得し、
前記実行単位のそれぞれについて、取得した処理すべきデータ記憶量が、実行単位別に予め決まったデータ量よりも大きいときに、その実行単位は実行可能と判定することを特徴とする実行可能タスク選択方法が提供される。
【００１２】
【発明の実施の形態】
以下に図面を用いながら詳細に説明する。
【００１３】
（第１の実施形態）
図１は本実施形態にかかるプロセッサのブロック図の一例を示す図である。図１には、プログラムコードの処理または数値などの演算を行う演算処理部１０１、演算処理の作業域として用いられる一時記憶１０２、プロセッサで実行するタスクの状態を監視する状態監視部１０３、実行条件記憶部１０４、実行判定部１０５、判定記憶部１０６、プロセッサ全体の制御を司る実行制御部１０７及び比較的大きな記憶容量を備えた記憶部１０８が示されている。
【００１４】
演算処理部１０１は、本実施形態のプロセッサで実行するタスクに対応するプログラムコードの実行及び数値の演算処理を行うプロセッサのコアとなる部分である。プログラムコードの実行は、実行制御部１０７と連携して行われる。
【００１５】
一時記憶部１０２は、演算処理部１０１がタスクの処理を行うときの主に作業域として使用される記憶領域である。この作業域には、たとえば演算処理部１０１が数値演算を行うときのレジスタや、タスク処理の入力となるデータやあるいはデータを処理した後の結果を一時的に記憶する記憶域が設けられる。頻繁にアクセスがされる記憶域なので、アクセス速度が比較的高速な半導体メモリを用いて構成するのが好ましい。
【００１６】
ここに記憶されているデータはどのタスクが処理すべき、または書き込んだデータであるかが、たとえば実行制御部１０７内部に設けられたテーブルによって管理される。この方法に限らず、一時記憶部１０２に記憶されたデータがどのタスクのものかが識別できる方法であれば、管理の方法及び記憶フォーマットについては特に限定しない。
【００１７】
状態監視部１０３は、演算処理部１０１及び一時記憶部１０２から情報を得て実行状態あるいは待機状態にあるタスクの状況を監視する。ここでいうタスクの監視とは、タスクの一時記憶１０２に対するアクセスの検出と、そのタスクによってどれだけの量のデータがアクセスされたかを検出することを言う。状態監視部１０３がタスクの状態を監視するにあたって、たとえば演算処理部１０１からは実行中のタスクを識別するタスクＩＤ、一時記憶部１０２からはアクセスのあったバイト数などを受け取る。あるいは一時記憶部１０２自身が、記憶されているタスクごとのデータの量を状態監視部１０３に対して通知するようにしても良い。
【００１８】
実行条件記憶部１０４は、マルチタスクで実行される各タスクのそれぞれについて演算処理部１０１で実行するのに必要な条件を記憶する。マルチタスク処理を行うプロセッサの中には、各タスクが一定時間ごとに実行されるようになっているものもある。この場合、実行したときにそのタスクが処理すべきデータが未だ準備されていない、あるいは処理後の結果を記憶する領域がないといった実行条件を満たさないタスクがあったときでも、分け隔てなくに実行されてしまう。実行すべきでないタスクは、実行されたにもかかわらず何も処理せずに再び休止状態になる。しかしながら処理すべきでないタスクを実行すること自体がプロセッサにとって無駄な負荷となってしまう。実行条件記憶部１０４は、実行すべきタスクの実行条件を記憶し、無駄なタスクの実行がされないようにするために用いられる。
【００１９】
また実行条件記憶部１０４は、状態監視部１０３が検出した各タスクによる一時記憶部１０２へのアクセスの情報を受けて、各タスク別に設けた、一時記憶部１０２内におけるそれぞれのタスクが使用する記憶領域の使用状況に関する情報を更新する。
【００２０】
図２に実行条件記憶部１０４の記憶フォーマットの一例を示す。図２に示すように各タスクの識別となるタスクＩＤ、このタスクの実行をするのに必要な処理対象データのデータ量（実行に必要なデータ量）、およびこのデータが一時記憶部１０２に記憶されているデータの量（現在のデータ量）についての情報が記憶される。右欄の現在のデータ量については、状態監視部１０３が一時記憶部１０２のアクセスを検出するタイミングで更新する。
【００２１】
図２に示した例では、現在のデータ量が実行に必要なデータ量以上となれば、該当するタスクＩＤのタスクが実行可能であることを示している。
【００２２】
実行判定部１０５は、実行条件記憶部１０４に記憶した情報から実行が可能なタスクかどうかを判定する。図２を例にとって判定の様子を説明する。たとえばタスクＡの場合、処理すべき現在のデータ量がゼロであるから実行する段階にない。またタスクＢの場合には、実行に必要なデータ量がすでに準備されているため実行段階にあると判定される。タスクＣの場合は、実行するのに必要なデータ量が準備されていないし、タスクｎ（ｎは任意の値を示す）は実行に必要なデータ量よりも多くのデータがすでに準備されているので、実行する段階にあると判定される。
【００２３】
判定記憶部１０６は、実行判定部１０５が判定した結果をタスク別に記憶している。実行判定部１０５が行うタスクの実行判定は、タスクごとに順次行う。このため、実行制御部１０７が、以降実行すべきタスクをすべてのタスクの判定結果を考慮して決定するときに必要となる。
【００２４】
実行制御部１０７は、プロセッサ内で実行される全タスクを管理し、判定記憶部１０６が記憶した判定結果から以降実行するタスクのタスクＩＤを決定する。タスクＩＤの決定に際してはこの判定結果のみならず、予めタスクごとに設定された実行優先度を加味するようにしても良い。決定後、この決定したタスクＩＤを演算処理部１０１に指示し、このタスクＩＤに対応するタスクの実行を促す。その他、プロセッサ内部のタイミング同期といったプロセッサ各部の制御も行う。
【００２５】
記憶部１０８は、タスクに対応するプログラムコードや処理すべきデータの初期値などを記憶するためにプロセッサ内に設けられる。図示しないが、さらに外部に大容量な記憶装置がある場合には、記憶部１０８はデータやプログラムコードを高速にアクセスするためのキャッシュとして利用しても良い。
【００２６】
図３に本実施形態にかかるプロセッサの、実行可能タスク判定フローの一例を示す。
【００２７】
まず演算処理部１０１が一時記憶部１０２にデータ参照又はデータ記憶のためにアクセスを行ったかどうかを判断する（Ｓ０１）。アクセスがあった場合には、状態監視部１０３が一時記憶部１０２からアクセスのあったデータ量及び演算処理部１０１からそのアクセスを行ったタスクの情報を受け取る（Ｓ０２）。状態監視部１０３は、受け取った情報からどのタスクがどれだけのデータ量のアクセスを行ったかを判断する。そしてその判断した結果に従って、状態監視部１０３は実行条件記憶部１０４に記憶したタスクごとの現在のデータ量を更新する（Ｓ０３）。
【００２８】
次に実行すべきタスクのすべてについて、一時記憶部１０２の記憶領域の使用状況を判断する（Ｓ０４）。
【００２９】
あるタスクについて、実行条件記憶部１０４に記憶したそのタスクの記憶領域の利用状況と、予め設定したそのタスクの実行に必要なデータ量の情報とからそのタスクが実行可能条件を満たすかどうかを判断する（Ｓ０５）。実行条件記憶部１０４のところで説明したように、実行条件記憶部１０４に記憶したテーブルが図２のような記憶フォーマットを持っている場合には、現在のデータ量が実行に必要なデータ量以上だったときに、そのタスクＩＤのタスクは実行可能であると判断する（Ｓ０６）。それ以外の場合は、そのタスクＩＤのタスクは実行不可能と判断する（Ｓ０７）。判定結果は必要に応じて、タスク別に判定記憶部１０６に記憶される。
【００３０】
上記のような処理を実行すべき全タスクについて行うと、実行可能タスクの判定を終了する（Ｓ０４）。
【００３１】
上記処理により判定記憶部１０６に全タスクの実行状況がそろうと、次に実行制御部１０７は実行可能と判定されたタスクの中から以降実行すべきタスクを選び演算処理部１０１へ当該タスクの実行を指示する。実行制御部１０７が行う以降に実行するタスクの選択方法は、たとえばタスクＩＤが順番に振られるものであったならば、そのタスクＩＤが一番早い番号のものでかつ実行可能なタスクのタスクＩＤを選択するようにしても良い。判定記憶部１０６に示した実行可能なタスクのうちから、以降実行すべきタスクを選択する方法であればいずれの方法であっても構わない。
【００３２】
本実施形態のプロセッサによれば、タスク別に一時記憶部に記憶されたデータ量を比較するだけで、実行すべき複数のタスクから実行が可能なタスクを判別することができる。よって実行する必要のないタスクを次に実行すべきタスクから排除することができる。また、上記判定の方法はハードウェアでも比較的容易に構成することができることから、オペレーティングシステム等のソフトウェアにより行う実行可能タスクを判定するための監視及びそのための非同期切り替えといった煩雑な処理を、ハードウェアで代行することも可能となる。
【００３３】
これらの理由から、同時実行性を追求したときの処理効率の低下というリスクを緩和することができる。
【００３４】
（第２の実施形態）
次に第２の実施形態にかかるプロセッサの、特に第１の実施形態のプロセッサと相違する部分について説明する。
【００３５】
本実施形態のブロック構成図は、第１の実施形態のブロック構成図の一例として示した図１と同様である。
【００３６】
図４に実行条件記憶部１０４が備える、各タスク別に設けた、一時記憶部１０２内におけるそれぞれのタスクが使用する記憶領域の使用状況に関する情報の記憶フォーマットの一例を示す。
【００３７】
図４に示すように各タスクの識別となるタスクＩＤ、このタスクの実行をするのに必要な処理対象データのデータ量（実行に必要なデータ量）、このデータが一時記憶部１０２に記憶されているデータの量（現在のデータ量）と、このタスクが実行結果として書き出すデータ量に相当する一時記憶部１０２内に必要は空データ量（記憶に必要な空データ量）、および一時記憶部１０２に残っている空データ領域の量（現在の空データ量）についての情報が記憶される。欄中の現在のデータ量と現在の空データ量については、状態監視部１０３が一時記憶部１０２のアクセスを検出するタイミングで更新する。
【００３８】
図４に示した例では、現在のデータ量が実行に必要なデータ量以上となり、かつ現在の空データ量が記憶に必要な空データ量以上となれば、該当するタスクＩＤのタスクが実行可能であることを示している。
【００３９】
本実施形態における実行可能タスク判定フローは、第１の実施形態の実行可能タスク判定フローで示した図３と同様であるが、ステップＳ０５の判定方法が第１の実施形態とは相違する。
【００４０】
あるタスクについて、実行条件記憶部１０４に記憶したそのタスクの記憶領域の利用状況と、予め設定したそのタスクの実行に必要なデータ量の情報とからそのタスクが実行可能条件を満たすかどうかを判断する（Ｓ０５）。
【００４１】
実行条件記憶部１０４に記憶したテーブルが図４のような記憶フォーマットを持っている場合には、現在のデータ量が実行に必要なデータ量以上で、かつ現在の空データ量が実行結果を書き出すのに必要なデータ量だったときに、そのタスクＩＤのタスクは実行可能であると判断する（Ｓ０６）。それ以外の場合は、そのタスクＩＤのタスクは実行不可能と判断する（Ｓ０７）。
【００４２】
上記のように第１の実施形態のプロセッサと本実施形態とでは、実行条件の判定方法が異なる。本実施形態の場合は、第１の実施形態の実行判定方法に加え、そのタスクが実行結果を一時記憶部１０２に書き出しを行うための空き容量の有無も含めて各タスクの実行判定に用いることである。
【００４３】
このように構成すると第１の実施形態の効果に加え、実行可能なタスクの選別をより正確に判断することが可能となる。
【００４４】
（第３の実施形態）
次に第３の実施形態にかかるプロセッサの、特に第２の実施形態のプロセッサと相違する部分について説明する。
【００４５】
本実施形態のブロック構成図は、第２の実施形態のブロック構成図の一例として示した図１と同様である。
【００４６】
図５に本実施形態にかかるプロセッサの、実行可能タスク判定フローの一例を示す。
【００４７】
まず演算処理部１０１が一時記憶部１０２にデータ参照又はデータ記憶のためにアクセスを行ったかどうかを判断する（Ｓ０１）。アクセスがあった場合には、状態監視部１０３が一時記憶部１０２からアクセスのあったデータ量及び演算処理部１０１からそのアクセスを行ったタスクの情報を受け取る（Ｓ１２）。
【００４８】
状態監視部１０３は、受け取った情報から一時記憶部１０２内のこの記憶領域についてどれだけのデータ量のアクセスを行ったかを判定する。さらに、たとえば実行制御部１０７内部に設けられたテーブルから、タスクと記憶領域に記憶されたデータとの関係を調べ、この記憶領域をアクセスするすべてのタスクを特定する（Ｓ１２）。
【００４９】
そしてその判断した結果に従って、状態監視部１０３は実行条件記憶部１０４に記憶した、この記憶領域をアクセスするタスクの現在のデータ量を更新する（Ｓ１３）。
【００５０】
次に該当するタスクのすべてについて、一時記憶部１０２の記憶領域の使用状況を判断する（Ｓ１４）。
【００５１】
次に上記記憶領域をアクセスするタスクについて、実行条件記憶部１０４に記憶したそれぞれのタスクの記憶領域利用状況と、予め設定したそのタスクの実行に必要なデータ量の情報とからそのタスクが実行可能条件を満たすかどうかを判断する（Ｓ０５）。現在のデータ量が実行条件に合致するときは、そのタスクＩＤのタスクは実行可能であると判断する（Ｓ０６）。それ以外の場合は、そのタスクＩＤのタスクは実行不可能と判断する（Ｓ０７）。判定結果は必要に応じて、そのタスクに対応する情報を判定記憶部１０６に記憶する。
【００５２】
該当タスクすべてについて判定を終えると、実行可能タスクの判定を終了する（Ｓ１４）。
【００５３】
上記のように第２の実施形態のプロセッサと本実施形態とでは、実行条件の判定方法が異なる。本実施形態の場合は、データ量に変化のない、どのタスクもアクセスしていない一時記憶部１０２の記憶領域のデータ量を取得することなく、実行条件記憶部１０４に記憶したデータ量のうち、アクセスがあった記憶領域をアクセスするタスクについての記憶領域のデータ量のみを更新する。そしてタスクの実行判定を、このタスクについてのみ行うことである。
【００５４】
このように構成すると、一時記憶部に記憶したデータ量に変化のあった記憶領域に関係する、再判定が必要なタスクのみに実行判定を限定することができる。
【００５５】
（第４の実施形態）
次に第４の実施形態にかかるプロセッサの、特に第３の実施形態のプロセッサと相違する部分について説明する。
【００５６】
図６に本実施形態にかかるプロセッサのブロック図の一例を示す。第３の実施形態のブロック図を示す図１との相違は、一時記憶部１０２がＦＩＦＯ１０９となっている点である。
【００５７】
ＦＩＦＯ１０９は、先入先出し（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）型のメモリである。先入先出し型メモリでは、複数のデータを記憶したときに、先に記憶したデータの方が先に読み出される。さらにＦＩＦＯ１０９は複数のＦＩＦＯから構成されており、１つのＦＩＦＯが、第３の実施形態における一時記憶部１０２内の、１のタスクが処理すべきデータまたは実行結果を記憶する１の記憶領域に相当する。
【００５８】
第３の実施形態における一時記憶部１０２をＦＩＦＯ１０９とすることで、処理データの投入順序を整流化し、かつ記憶するデータの管理が容易になる。
【００５９】
図７に実行条件記憶部１０４が備える、各タスク別に設けた、ＦＩＦＯ１０９の１つのＦＩＦＯにおけるそれぞれのタスクが使用する記憶領域の使用状況に関する情報の記憶フォーマットの一例を示す。
【００６０】
図７に示すように各タスクの識別となるタスクＩＤ、このタスクの実行をするのに必要な処理対象データを記憶するＦＩＦＯの識別（ＦＩＦＯ−ＩＤ−ｉ）とそのデータ量（実行に必要なデータ量）、ＦＩＦＯ内の空領域の数（有効ＦＩＦＯエントリ数）およびこのＦＩＦＯを使用するタスクにとって処理データが準備されたかどうかの判定情報（読出しデータ準備）を記憶する。さらにこのタスクが実行結果として書き出す先となるＦＩＦＯの識別（ＦＩＦＯ−ＩＤ−ｏ）とそのデータ量に相当するＦＩＦＯ内に必要は空データ量（記憶に必要な空データ量）、ＦＩＦＯ内に残っている空データ領域の数（有効ＦＩＦＯ空エントリ）およびこのＦＩＦＯを使用するタスクにとって処理データを書き出す準備が整ったかどうかの情報（書出し準備）が記憶される。欄中の有効ＦＩＦＯエントリ数と有効ＦＩＦＯ空エントリ数および読出しデータ準備と書出し準備の欄については、あるタスクがＦＩＦＯ１０９へのアクセスしたことを状態監視部１０３が検出するタイミングで、そのタスクがアクセスしたＦＩＦＯ１０９の１のＦＩＦＯをアクセスするすべてのタスクの値を更新する。
【００６１】
図７に示した例では、有効ＦＩＦＯエントリ数で記憶可能なデータ量が実行に必要なデータ量以上となれば読出しデータ準備欄に「○」が入る。また有効空エントリ数で記憶可能なデータ量が記憶に必要な空データ量以上となれば書出し準備欄に「○」が入る。そして読出しデータ準備欄と書出し準備欄の両方の情報が「○」のときに、該当するタスクＩＤのタスクが実行可能であると判断することとなる。
【００６２】
本実施形態の実行可能タスク判定フローは、ステップＳ１３およびステップＳ０５を除き第３の実施形態の実行可能タスク判定フローの一例で示した図５と同様である。
【００６３】
本実施形態の場合、ステップＳ１３ではデータ量の更新以外に実行条件記憶部１０４に記憶する、読出しデータ準備欄と書出し準備欄の更新も併せて行う。
そしてステップＳ０５では、読出しデータ準備欄の値と書出し準備欄の値とが両方とも「○」の時に実行可能と判定する。
【００６４】
上記のように、実行判定の過程でデータ量の比較をせずに、たとえば「○」「×」といったフラグを参照することにより、より高速に判定処理を実行することができる。
【００６５】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【００６６】
【発明の効果】
本発明によれば、マルチタスク処理を行うプロセッサにおいて、各タスクの実行が可能かどうかの実行判定を迅速化し、同時実行性を追求したときの処理効率の低下というリスクを緩和することができる。
【図面の簡単な説明】
【図１】第１の実施形態におけるプロセッサのブロック図の一例を示す図である。
【図２】第１の実施形態におけるプロセッサの実行条件を記録する記録フォーマットの一例を示す図である。
【図３】第１の実施形態におけるプロセッサの実行可能タスク判定を行うフローの一例を示す図である。
【図４】第２の実施形態におけるプロセッサの実行条件を記録する記録フォーマットの一例を示す図である。
【図５】第３の実施形態におけるプロセッサの実行可能タスク判定を行うフローの一例を示す図である。
【図６】第４の実施形態におけるプロセッサのブロック図の一例を示す図である。
【図７】第４の実施形態におけるプロセッサの実行条件を記録する記録フォーマットの一例を示す図である。
【符号の説明】
１０１  演算処理部
１０２  一時記憶部
１０３  状態監視部
１０４  実行条件記憶部
１０５  実行判定部
１０６  判定記憶部
１０７  実行制御部
１０８  記憶部
１０９  ＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）
【図１】
2004295451.tif 000003
【図２】
2004295451.tif 000004
【図３】
2004295451.tif 000005
【図４】
2004295451.tif 000006
【図５】
2004295451.tif 000007
【図６】
2004295451.tif 000008
【図７】
2004295451.tif 000009