(57)【要約】【課題】マルチスレッドコンピュータにおけるスレッドの管理を効率化し、処理速度を向上すること。【解決手段】スレッドに対してプログラムカウンタおよびレジスタセットを固定的に割り当ててスレッド固有資源２１〜２４を設定する。実行部１４およびモジュール３〜５は、スレッドを直接指定した実行要求をスレッド管理部１１に送信し、スレッド管理部１１は、実行要求のあったスレッドを待機状態として記憶する。スレッド切替部１２は、実行部１４がスレッド切替要求を送信した場合に、待機状態のスレッドを選択し、選択したスレッドの固有資源をデコーダ１３に供給する。【選択図】      図１
2004234123.tif 000002
【特許請求の範囲】
【請求項１】
実行処理部が複数のスレッドを切り替えて実行するマルチスレッドコンピュータであって、
前記複数のスレッドの各々に対してあらかじめ固有に割り当てられ、すくなくともプログラムカウンタとレジスタセットとを有するスレッド固有資源と、
前記複数のスレッドのいずれかを指定した実行要求を受信した場合に、当該指定されたスレッドを待機状態にするスレッド管理部と、
前記実行処理部が実行するスレッドを前記スレッド管理部が待機状態としたスレッドから選択して切り替えるスレッド切替部と、
を備えたことを特徴とするマルチスレッドコンピュータ。
【請求項２】
前記スレッド管理部は、前記実行処理部によるスレッドの実行結果として他のスレッドを指定した実行要求が出力された場合に、当該指定されたスレッドを待機状態にすることを特徴とする請求項１に記載のマルチスレッドコンピュータ。
【請求項３】
前記スレッド管理部は、外部からスレッドを指定した実行要求を受信した場合に、当該指定されたスレッドを待機状態にすることを特徴とする請求項１または２に記載のマルチスレッドコンピュータ。
【請求項４】
前記スレッド切替部は、前記実行処理部によるスレッドの実行結果としてスレッドの切替を要求する切替要求が出力された場合に、前記スレッドの選択および切替をおこなうことを特徴とする請求項１，２または３に記載のマルチスレッドコンピュータ。
【請求項５】
前記スレッド切替部は、前記実行処理部によるスレッドの実行において所定の命令の実行が一定時間以内に終了しない場合に、前記スレッドの選択および切替をおこなうことを特徴とする請求項１〜４のいずれか一つに記載のマルチスレッドコンピュータ。
【請求項６】
前記実行処理部は、スレッドの実行において所定の命令の実行が一定時間以内に終了しない場合に、当該命令にもとづいてスレッドの切替をおこなうか否かを判断し、前記スレッド切替部は前記実行処理部がスレッドの切替をおこなうと判断した場合に前記スレッドの選択および切替をおこなうことを特徴とする請求項５に記載のマルチスレッドコンピュータ。
【請求項７】
前記スレッド管理部は、前記実行要求が発生した場合に、当該実行要求が指定したスレッドを直ちに待機状態とするか、他のスレッドからの実行要求または外部からの実行要求がさらに発生した時点で待機状態とするかを選択することを特徴とする請求項１〜６のいずれか一つに記載のマルチスレッドコンピュータ。
【請求項８】
前記スレッド管理部は、実行要求が指定したスレッドを待機状態とするか否かの条件を記憶する条件設定部をさらに備えたことを特徴とする請求項７に記載のマルチスレッドコンピュータ。
【請求項９】
前記スレッド管理部は、前記スレッドの待機状態を記憶する記憶部を複数備え、待機状態の記憶にいずれの記憶部を用いるかをスレッドごとに設定し、前記スレッド切替部がスレッドの切替をおこなう場合に前記複数の記憶部のうちいずれかの記憶部を選択し、当該選択した記憶部から実行するスレッドを選択させることを特徴とする請求項１〜８のいずれか一つに記載のマルチスレッドコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、実行処理部が複数のスレッドを切り替えて実行するマルチスレッドコンピュータに関し、特に、スレッドの切替を効率化し、処理速度を向上したマルチスレッドコンピュータに関する。
【０００２】
【従来の技術】
従来、プロセッサの使用効率を高めるため、複数のスレッドを切り替えて実行するマルチスレッドコンピュータが利用されてきた。マルチスレッドコンピュータは、複数のプログラムカウンタと複数のレジスタセットまたはレジスタファイルを実装し、単一のプロセッサがプログラムカウンタおよびレジスタセットを順次切り替えて使用する。
【０００３】
このようにプログラムカウンタとレジスタセットとを複数備えることで、各スレッドは割り当てられたプログラムカウンタおよびレジスタセットをその処理が終了するまで占有することができ、各スレッドを独立に実行することができる。したがって、たとえばＤＭＡ転送や通信制御などのレイテンシの大きい処理において応答を待つ間に、プロセッサは他の処理を行うことができ、また処理の切替時にプログラムカウンタおよびレジスタセットの内容に影響を与えないため、プロセッサにおける待ち時間を縮小できる。
【０００４】
ところで、従来のマルチスレッドコンピュータでは、オペレーションシステム（ＯＳ）によって管理される複数のプロセスがスレッドごとに動作しており、これらのプロセスがさらにいくつもの子プロセスを生成し、子プロセスの実行結果が元のプロセスに反映されていた。すなわち、元のプロセスは、定められた処理を実行し、比較的短い時間で消滅する子プロセスを生成することで、全体の処理の効率化を実現している。
【０００５】
これらのマルチスレッドコンピュータでは、プロセス間の情報の引継ぎと、プロセス間の実行順序の管理が重要となる。そこで、たとえば特許文献１や特許文献２に開示されたマルチスレッドコンピュータでは、元プロセスから子プロセスへ情報を引き継ぐ処理と、子プロセスから元プロセスへ情報を引き継ぐ処理の効率化が図られている。
【０００６】
また、たとえば特許文献３に開示されたマルチスレッドコンピュータでは、スレッド間に優先順位を設定して優先順位の高いスレッドから実行し、優先順位の高いスレッドの実行中にスレッド切替要因が発生した場合に優先順位の低いプロセスを実行するようにしている。
【０００７】
【特許文献１】
特開２０００−２０７２３３号公報
【特許文献２】
特開平１０−７８８８０号公報
【特許文献３】
特開平２−２５４５４４号公報
【０００８】
【発明が解決しようとする課題】
しかしながら、従来のマルチスレッドコンピュータでは、スレッドを立ち上げてレジスタセットおよびプログラムカウンタに割り当てるまでの処理に時間がかかるという問題点があった。
【０００９】
すなわち、従来のマルチスレッドコンピュータでは、スレッドの生成時にレジスタセットおよびプログラムカウンタを割り当てているため、レジスタセットおよびプログラムカウンタに割り当てるスレッドは毎回異なる。そのため、処理の汎用性が高めることができるが、同一のスレッドが繰り返し実行される場合では処理の汎用性を高めるよりもスレッドの準備にかかる時間を短くすることが望ましい。
【００１０】
特に組み込み用途のプロセッサのように、規定の処理が高頻度で繰り返し実行され、各処理が短時間で終了するプロセッサでは、スレッドの準備が処理全体に対して占める割合が大きくなるので、スレッドの準備によって全体の処理速度が低下することとなる。
【００１１】
また、組み込み用途のプロセッサでは、異なる装置からの入力を処理する場合など、スレッド間に優先順位を設定することができないことが多く、従来のようにスレッドに優先順位を付したスレッド管理はおこなうことができないという問題点があった。
【００１２】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、スレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することを目的とする。
【００１３】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するため、本発明に係るマルチスレッドコンピュータは、実行処理部が複数のスレッドを切り替えて実行するマルチスレッドコンピュータであって、前記複数のスレッドの各々に対してあらかじめ固有に割り当てられ、すくなくともプログラムカウンタとレジスタセットとを有するスレッド固有資源と、前記複数のスレッドのいずれかを指定した実行要求を受信した場合に、当該指定されたスレッドを待機状態にするスレッド管理部と、前記実行処理部が実行するスレッドを前記スレッド管理部が待機状態としたスレッドから選択して切り替えるスレッド切替部と、を備えたことを特徴とする。
【００１４】
この発明によれば、マルチスレッドコンピュータは、スレッドに対してプログラムカウンタとレジスタセットとをあらかじめ固定的に割り当て、実行要求があったスレッドを待機状態として記憶し、切替要求があった場合に待機状態にあるスレッドから次に実行するスレッドを選択して対応するスレッド固有資源の内容を実行処理部に供給するようにしている。
【００１５】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、前記実行処理部によるスレッドの実行結果として他のスレッドを指定した実行要求が出力された場合に、当該指定されたスレッドを待機状態にすることを特徴とする。
【００１６】
この発明によれば、マルチスレッドコンピュータは、スレッドの実行結果として他のスレッドの実行を指定する実行要求が出力された場合に、指定されたスレッドを待機状態とし、次回の実行時の選択候補としている。
【００１７】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、外部からスレッドを指定した実行要求を受信した場合に、当該指定されたスレッドを待機状態にすることを特徴とする。
【００１８】
この発明によれば、マルチスレッドコンピュータは、外部からスレッドを指定した実行要求を受信した場合に、指定されたスレッドを待機状態とし、次回の実行時の選択候補としている。
【００１９】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド切替部は、前記実行処理部によるスレッドの実行結果としてスレッドの切替を要求する切替要求が出力された場合に、前記スレッドの選択および切替をおこなうことを特徴とする。
【００２０】
この発明によれば、マルチスレッドコンピュータは、スレッドの実行結果としてスレッドの切替を要求する切替要求が出力された場合に、待機状態にあるスレッドから次に実行するスレッドを選択し、スレッドの切替をおこなう。
【００２１】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド切替部は、前記実行処理部によるスレッドの実行において所定の命令の実行が一定時間以内に終了しない場合に、前記スレッドの選択および切替をおこなうことを特徴とする。
【００２２】
この発明によれば、マルチスレッドコンピュータは、スレッドの実行時に処理が所定の時間内に終わらない場合に、待機状態にあるスレッドから次に実行するスレッドを選択し、スレッドの切替をおこなう。
【００２３】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記実行処理部は、スレッドの実行において所定の命令の実行が一定時間以内に終了しない場合に、当該命令にもとづいてスレッドの切替をおこなうか否かを判断し、前記スレッド切替部は前記実行処理部がスレッドの切替をおこなうと判断した場合に前記スレッドの選択および切替をおこなうことを特徴とする。
【００２４】
この発明によれば、マルチスレッドコンピュータは、スレッドの実行時に処理が所定の時間内に終わらない場合に、処理の内容にもとづいてスレッドを切り替えるか否かを判定する。
【００２５】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド固有資源の各々は、複数のプログラムカウンタと、実行時に使用するプログラムカウンタを指定するプログラムカウンタ指定メモリとを備えたことを特徴とする。
【００２６】
この発明によれば、マルチスレッドコンピュータは、各スレッドにたいして複数のプログラムカウンタを対応させ、実行時のプログラムカウンタを指定することでスレッドの開始位置を指定する。
【００２７】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド固有資源の各々は、前記複数のプログラムカウンタとして、スレッドの実行状態に従って値が変化する第１のプログラムカウンタと、スレッドの実行状態に対して独立した値を有する第２のプログラムカウンタとを備えたことを特徴とする。
【００２８】
この発明によれば、マルチスレッドコンピュータは、スレッドの実行状態にしたがって値が変化する第１のプログラムカウンタを用いることで、スレッドを継続して実行するか、スレッドの実行状態に対して独立した値を有する第２のプログラムカウンタを用いることで指定の状態からスレッドを実行するかを選択する。
【００２９】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記実行処理部は、前記第１のプログラムカウンタおよび／または前記第２のプログラムカウンタの値を書き換えることを特徴とする。
【００３０】
この発明によれば、マルチスレッドコンピュータは、第１のプログラムカウンタおよび／または第２のプログラムカウンタを書き換えることで、スレッドの開始状態を設定することができる。
【００３１】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、前記実行要求が発生した場合に、当該実行要求が指定したスレッドを直ちに待機状態とするか、他のスレッドからの実行要求または外部からの実行要求がさらに発生した時点で待機状態とするかを選択することを特徴とする。
【００３２】
この発明によれば、マルチスレッドコンピュータは、実行要求を発行する場合に、直ちに待機状態とするか、他のスレッドからの実行要求または外部からの実行要求が発生した時点で待機状態とするかを指定することができる。
【００３３】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、実行要求が指定したスレッドを待機状態とするか否かの条件を記憶する条件設定部をさらに備えたことを特徴とする。
【００３４】
この発明によれば、マルチスレッドコンピュータは、条件設定部にスレッドを待機状態にする条件を記憶させ、条件を満たしたときのみスレッドを待機状態とすることで、スレッドの実行に条件を設定することができる。
【００３５】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、前記スレッドの待機状態を記憶する記憶部を複数備え、待機状態の記憶にいずれの記憶部を用いるかをスレッドごとに設定し、前記スレッド切替部がスレッドの切替をおこなう場合に前記複数の記憶部のうちいずれかの記憶部を選択し、当該選択した記憶部から実行するスレッドを選択させることを特徴とする。
【００３６】
この発明によれば、マルチスレッドコンピュータは、複数の記憶部のいずれに待機状態を登録するかをスレッドごとに設定し、スレッドの切替時にいずれかの記憶部を選択し、選択した記憶部に登録されたスレッドから実行するスレッドを決定することで、スレッドの実行順序に重み付けを設定することができる。
【００３７】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、前記複数の記憶部に優先順位を設定し、該優先順位にしたがって記憶部の選択をおこなうことを特徴とする。
【００３８】
この発明によれば、マルチスレッドコンピュータは、優先順位を設けた複数の記憶部のいずれに待機状態を登録するかをスレッドごとに設定し、スレッドの切替時に優先順位の高い記憶部を選択し、選択した記憶部に登録されたスレッドから実行するスレッドを決定することで、スレッドの実行順序に優先順位を設定することができる。
【００３９】
【発明の実施の形態】
以下に添付図面を参照して、この発明に係るマルチスレッドコンピュータの好適な実施の形態を詳細に説明する。
【００４０】
図１は、本実施の形態にかかるマルチスレッドコンピュータであるマイクロコントローラの概要構成を示す概要構成図である。同図に示すように、マイクロコントローラ１は、バス２を介してモジュール３〜４と接続されている。また、マイクロコントローラ１は、その内部にスレッド管理部１１、スレッド切替部１２、デコーダ１３、実行部１４、書き戻し制御部１５およびスレッド固有資源２１〜２４を有している。なお、マイクロコントローラ１は、図示しないスレッド固有資源をさらに備えている。
【００４１】
スレッド固有資源２１は、その内部にプログラムカウンタ３１およびレジスタセット３２を備えている。同様に、スレッド固有資源２２〜２４、また図示しないスレッド固有資源は、それぞれプログラムカウンタとレジスタセットとを備えている。
【００４２】
スレッド固有資源２１〜２４および図示しないスレッド固有資源は、あらかじめ所定のスレッドに対して固定的に割り当てられている。したがって、ある処理を実行するスレッドは、常に同一のスレッド固有資源を用いて実行される。そこで、スレッドを指定することで、アクセスすべきスレッド固有資源は一意に決定されることとなり、また、スレッド固定資源が特定できれば、そこに記憶されている内容がどのスレッドに係るものかが判明することとなる。
【００４３】
マイクロコントローラ１では、モジュール３〜５からバス２を介してスレッドの実行要求を受信した場合、もしくは実行部１４が処理結果としてスレッドの実行要求を出力した場合に、スレッド管理部１１が実行要求されたスレッドを待機状態として登録する。その後、実行部１４がスレッドの切替要求を出力した場合に、スレッド切替部１２は、スレッド管理部１１が待機状態としたスレッドから次に実行するスレッドを選択し、対応するスレッド固有資源に切替をおこなう。デコーダは、スレッド切替部１２によって選択されたスレッド固定資源のプログラムカウンタおよびレジスタセットを用いて命令の解読をおこない、実行部１４に送信する。
【００４４】
実行部１４による命令の実行の結果は、書き戻し制御部１５を介してスレッド固有資源に反映される。この書き戻し制御は、スレッド切替部１２によるスレッド切替にしたがっておこなう。また、実行部１４による命令の実行の結果、あらたなスレッドを実行する必要が生じた場合、実行部１４は、スレッドを指定した実行要求をスレッド管理部１１に送信する。さらに実行部１４による命令実行の結果、スレッドを切り替える必要が生じた場合、実行部１４は、スレッドの切替要求をスレッド切替部１２に送信する。
【００４５】
つぎに、図２を参照し、このマイクロコントローラ１におけるスレッドの管理についてさらに詳細に説明する。同図に示すように、スレッド管理部１１は、その内部にビットマップＡを有する。ビットマップＡは、各スレッドについて、１ビットずつの容量を有し、各スレッドが待機状態であるか否かを記憶する。図２においては、ビットマップＡはスレッド数分のビット幅、同図では８ビットの容量を有し、スレッドの実行要求があった場合に、対応するビットの値を「１」にする。
【００４６】
スレッド切替部１２は、スレッドの切替要求を受信した場合に、ビットマップＡのうち、値が「１」であるスレッドの中から、次のスレッドを選択し、対応するプログラムカウンタの値およびレジスタセットの値をデコーダ１３および実行部１４にそれぞれ供給する。なお、スレッド管理部１１は、選択されたスレッドのビットを「０」に戻す。
【００４７】
実行部１４は、その内部にスレッド操作部４１、論理演算ユニット（ＡＬＵ）４２およびロード／ストア４３を有する。スレッド操作部４１は、デコーダ１３の出力をもとに、スレッドの実行要求およびスレッドの切替要求を出力する。ＡＬＵ４２は、レジスタセットの値をもとに、論理演算処理を実行する。一方、ロード／ストア４３は、バス２と接続され、バス２を介してモジュール３〜５との通信をおこなう。さらにロード／ストア４３は、通信の応答に時間がかかる場合に、スレッドの切替要求を出力する。
【００４８】
この通信の応答に時間がかかるか否かの判断は、たとえば通信先によって決定してもよいし、所定の時間経過後に切替要求を出力するようにしてもよい。なお所定のメモリ領域に対して、他のスレッドとの間で不可分なアクセスをしたい場合などは、通信の応答に時間がかかる場合であってもスレッドの切替要求は出力せず、応答があるまで待機する。
【００４９】
ここで、スレッド操作部４１およびロードストア４３が出力するスレッドの切替要求は、独立したコマンドであっても良いし、通常の命令に付加したビット情報であってもよい。
【００５０】
このようにスレッドに対して固有のプログラムカウンタおよびレジスタセットを割り当てることで、ＯＳや管理のためのスレッドを用いることなく、スレッドの切替を実現することができるとともにスレッドの準備に要する時間を削減できる。また、スレッドを固定することで、モジュール３〜５などの外部から直接にスレッドの実行要求を受信することができる。そこで、スレッド管理部１１では、実行部１４からの実行要求とバス２経由での実行要求との論理和をビットマップＡに登録するようにしている。
【００５１】
ところで、スレッド固有資源に設けるプログラムカウンタは、必ずしも一つに限定する必要はなく、任意の数のプログラムカウンタを設けることができる。複数のプログラムカウンタを有するスレッド固有資源を図３に示す。
【００５２】
図３に示したスレッド固有資源２１ａは、プログラムカウンタ３１、レジスタセット３２に加え、プログラムカウンタ３３とプログラムカウンタ指定メモリ３４を有する。プログラムカウンタ３１は、スレッドの実行時に用いられ、一般的なコンピュータシステムと同様に、プログラムの実行に対応して加算または上書きされる。一方、プログラムカウンタ３３は、スレッド操作部４１によって設定された値を保持する。プログラムカウンタ指定メモリ３４は、プログラムカウンタ３１とプログラムカウンタ３３のどちらの値を使用するかを記憶するメモリである。
【００５３】
つぎに、図４を参照し、スレッド固有資源が複数のプログラムカウンタを有する場合の処理動作について説明する。図４に示すように、プログラムカウンタが複数ある場合、スレッド操作部４１は、次回のスレッド起動時にプログラムカウンタ３１が示すアドレスから動作を再開するか、プログラムカウンタ３３が示すアドレスから動作を再開するかを決定し、プログラムカウンタ指定メモリ３４に登録する。
【００５４】
スレッド固有資源２１ａは、次回のスレッド起動時に、プログラムカウンタ指定メモリ３４の指定に従い、プログラムカウンタ３１またはプログラムカウンタ３３のいずれかの値をスレッド切替部１２に供給する。したがって、スレッド切替部１２は、スレッド固有資源が有するプログラムカウンタの数による動作の変更は必要としない。
【００５５】
プログラムカウンタ３１は、プログラムの実行に伴い、所定の数ずつ加算される。加算される数は実行するコマンドのサイズによって異なり、１６ビットのコマンドでは「２」、３２ビットのコマンドでは「４」、６４ビットのコマンドでは「８」ずつ加算される。一方、プログラムカウンタ３３は、特定のコマンドの実行された場合のみ、スレッド操作部４１によって更新される。したがって、プログラムカウンタ３１がプログラムの実行状況を示すのに対し、プログラムカウンタ３３は、コマンドによって指定されたプログラムの開始位置を示すこととなる。なお、プログラムカウンタ３３から実行した場合、プログラムカウンタ３３の値に所定数を加えた値がプログラムカウンタ３１に書き込まれ、処理が継続する場合にはプログラムカウンタ３１が使用される。
【００５６】
このように複数のプログラムカウンタを設けることで、たとえば、プログラムカウンタ３１は、同一のスレッドを継続して実行する場合に使用し、プログラムカウンタ３３は、他のスレッドや外部のモジュールからの実行要求によって起動する場合に使用する、といった条件別のスレッド実行が可能となる。
【００５７】
なお、スレッドに対する実行要求の条件分けを実現するため、図５に示すようにスレッド管理部１１ａはビットマップＢを備える。ここで、条件分けは、
条件１  ただちに指定したスレッドを待機状態とし、プログラムカウンタ３１から実行する。
条件２  ただちに指定したスレッドを待機状態とし、プログラムカウンタ３３から実行する。
条件３  他のスレッドまたはバス２経由の実行要求があった場合にスレッドを待機状態とし、プログラムカウンタ３１を使用する。
条件４  他のスレッドまたはバス２経由の実行要求があった場合にスレッドを待機状態とし、プログラムカウンタ３３を使用する。
とし、条件の設定はスレッド操作部４１によっておこなうものとする。
【００５８】
このスレッド管理部１１ａは、スレッドがビットマップＡに登録されている場合、またはスレッドが実行中である場合に他のスレッドまたはモジュール３〜５から実行要求を受けた場合に、その実行要求をビットマップＢに記憶する。このビットマップＢは、ビットマップＡと同様に、各スレッドに対して１ビットずつ、スレッド数分のビット幅を有し、ここでは８ビットのメモリとして説明する。
【００５９】
条件１が設定された実行要求を受信した場合、スレッド管理部１１ａは、ただちにビットマップＡにスレッドを登録し、ビットマップＢは参照も登録もしない。一方、条件２が設定された実行要求を受信した場合、スレッド管理部１１ａはただちにビットマップＡにスレッドを登録するとともに、ビットマップＢを参照し、ビットマップＢに実行要求が登録されていれば登録内容を消去する。
【００６０】
条件３が設定された実行要求を受信した場合、スレッド管理部１１ａは、他のスレッドからの実行要求を受信するか、またはモジュール３〜５からの実行要求を受信するまで登録を保留し、他のスレッドまたはモジュール３〜５からの実行要求を受信した場合にビットマップＡに登録する。このとき、ビットマップＢは参照も登録もおこなわない。
【００６１】
条件４が設定された実行要求を受信した場合、スレッド管理部１１ａは、他のスレッドからの実行要求を受信するか、またはモジュール３〜５からの実行要求を受信するまで登録を保留し、他のスレッドまたはモジュール３〜５からの実行要求を受信した場合にビットマップＡに登録する。さらに、ビットマップＢを参照し、ビットマップＢに実行要求が登録されていれば登録内容を消去する。
【００６２】
なお、スレッド管理部に条件設定用のテーブルを設ければ、さらに詳細な条件を設定することができる。図６は、条件テーブル５１を設けたスレッド管理部１１ｂを示す図である。同図に示すように、スレッド管理部１１ｂは、条件テーブル５１を備えている。条件テーブル５１は、左側の列にスレッド番号を、中央の列に条件を満たすか否かを、右側の列に条件内容を記憶している。
【００６３】
このスレッド管理部１１ｂでは、条件３または条件４を設定された実行要求を受信した場合、条件テーブル５１を参照し、条件テーブル５１に指定された条件を満たす場合にビットマップＡに登録し、条件を満たさない場合はビットマップＢに登録する。その他の構成および動作は、図５に示したスレッド管理部１１ａと同様であるので、説明を省略する。
【００６４】
条件テーブル５１によって設定する条件の内容は、例えば特定のモジュールからの実行要求などを用いることができる。条件の内容は、スレッド操作部４１からの登録によって設定および変更する。
【００６５】
このように、スレッド管理部に複数のビットマップを設けることでスレッドの起動に条件を設定することができ、またスレッド固有資源に複数のプログラムカウンタを設けることで、条件に応じたレジスタセットからスレッドを開始することができる。さらには、スレッド管理部に条件テーブルを備えることでより詳細な条件設定が可能となる。
【００６６】
なお、図４ではプログラムカウンタ３１を常にプログラムの実行状態に合わせたアドレスを記憶させ、スレッド操作部４１によるアドレスの変更はプログラムカウンタ３３のみにおこなっていたが、実行状態記憶用のプログラムカウンタが記憶するアドレスをスレッド操作部４１によって変更可能としてもよい。
【００６７】
実行状態記憶用のプログラムカウンタを変更可能とした構成を図７に示す。図７に示したスレッド固有資源２１ｂは、プログラムの実行状態記憶用としてプログラムカウンタ３１ａを有する。スレッド操作部４１は、このプログラムカウンタ２１ｂの値を直接に書き換えることができる。その他の構成および動作は図４と同様であるので、同一の符号を付して説明を省略する。
【００６８】
つぎに、スレッドの実行順序の優先順の設定について説明する。スレッド管理部１１，１１ａ，１１ｂでは、スレッドの待機状態を単一のビットマップＡによって管理し、スレッド間に優先順位は設定していなかった。スレッド間に優先順位を設ける場合におけるスレッド管理部の構成を図８に示す。
【００６９】
図８において、スレッド管理部１１ｃは、ビットマップＡ１およびビットマップＡ２、さらにビットマップＣを備える。ビットマップＡ１およびビットマップＡ２は、それぞれスレッドの待機状態を登録する記憶部として機能する。スレッド管理部１１，１１ａ，１１ｂにおけるビットマップＡとの差は、ビットマップＡが全てのスレッドの待機状態を登録するのに対し、ビットマップＡ１，Ａ２は、それぞれ担当するスレッドが設定されていることである。
【００７０】
ビットマップＡ１，Ａ２が担当するスレッドは、ビットマップＣによって割り当てられる。ビットマップＣにおいて値が「０」であるスレッドの待機状態は、スレッドＡ１に登録され、ビットマップＣにおいて値が「１」であるスレッドの待機状態は、ビットマップＡ２に登録される。
【００７１】
具体的には、ビットマップＣはスレッド０，２，４，６，７に対して値「０」を設定し、スレッド１，３，５に対して値「１」を設定している。したがって、スレッド０，２，４，６，７の待機状態はビットマップＡ１に登録され、ビットマップＡ２の待機状態はビットマップＡ２に登録されることとなる。ビットマップＣの値の設定は、スレッド操作部４１から任意におこなうことができる。
【００７２】
スレッド管理部１１ｃは、スレッド操作部４１から切替要求があった場合に、ビットマップＡ１とビットマップＡ２からそれぞれ１つずつスレッドを選択する。その後、ビットマップＡ１から選択されたスレッドと、ビットマップＡ２から選択されたスレッドとを交互に実行する。なお、一方のビットマップにスレッドが登録されていなければ、同一のビットマップから連続して選択する。
【００７３】
このように構成することで、待機中のスレッドが実行される確率を調整し、スレッド間の実行順序に重み付けをすることができる。また、重み付けの配分は、ビットマップＣの設定によって調整することができる。
【００７４】
なお、特定のスレッドを他のスレッドに対して常に優先して実行したい場合、一方のビットマップに登録されたスレッドを常に優先して選択すればよい。たとえば、ビットマップＡ１に待機状態として登録されたスレッドがある場合、ビットマップＡ２の登録状態に関わらず、ビットマップＡ１からスレッドを選択し、ビットマップＡ１に登録されたスレッドがない場合にビットマップＡ２に登録されたスレッドを選択することで、スレッド間に優先順位を設けることができる。
【００７５】
上述してきたように、本実施の形態では、スレッドに対してあらかじめ固有のプログラムカウンタおよびレジスタセットを割り当て、スレッド固有の資源を切り替えて実行するようにしているので、ＯＳや管理のためのスレッドを用いることなく、スレッドの切替を実現することができるとともに、スレッドの準備に要する時間を削減できる。したがって、マイクロコントローラの切替処理の効率化と処理速度の向上が実現できる。
【００７６】
また、スレッドを固定することで、外部のモジュールなどがスレッドを指定して直接に実行要求を発行することができる。さらに、スレッドに対する複数のプログラムカウンタ割り当てや、スレッドの実行条件の設定によってスレッドの実行内容を任意に設定することができる。
【００７７】
さらに、スレッドの待機状態を登録するビットマップを振り分けることで、スレッドの実行順序を管理することができる。
【００７８】
（付記１）実行処理部が複数のスレッドを切り替えて実行するマルチスレッドコンピュータであって、
前記複数のスレッドの各々に対してあらかじめ固有に割り当てられ、すくなくともプログラムカウンタとレジスタセットとを有するスレッド固有資源と、
前記複数のスレッドのいずれかを指定した実行要求を受信した場合に、当該指定されたスレッドを待機状態にするスレッド管理部と、
前記実行処理部が実行するスレッドを前記スレッド管理部が待機状態としたスレッドから選択して切り替えるスレッド切替部と、
を備えたことを特徴とするマルチスレッドコンピュータ。
【００７９】
（付記２）前記スレッド管理部は、前記実行処理部によるスレッドの実行結果として他のスレッドを指定した実行要求が出力された場合に、当該指定されたスレッドを待機状態にすることを特徴とする付記１に記載のマルチスレッドコンピュータ。
【００８０】
（付記３）前記スレッド管理部は、外部からスレッドを指定した実行要求を受信した場合に、当該指定されたスレッドを待機状態にすることを特徴とする付記１または２に記載のマルチスレッドコンピュータ。
【００８１】
（付記４）前記スレッド切替部は、前記実行処理部によるスレッドの実行結果としてスレッドの切替を要求する切替要求が出力された場合に、前記スレッドの選択および切替をおこなうことを特徴とする付記１，２または３に記載のマルチスレッドコンピュータ。
【００８２】
（付記５）前記スレッド切替部は、前記実行処理部によるスレッドの実行において所定の命令の実行が一定時間以内に終了しない場合に、前記スレッドの選択および切替をおこなうことを特徴とする付記１〜４のいずれか一つに記載のマルチスレッドコンピュータ。
【００８３】
（付記６）前記実行処理部は、スレッドの実行において所定の命令の実行が一定時間以内に終了しない場合に、当該命令にもとづいてスレッドの切替をおこなうか否かを判断し、前記スレッド切替部は前記実行処理部がスレッドの切替をおこなうと判断した場合に前記スレッドの選択および切替をおこなうことを特徴とする付記５に記載のマルチスレッドコンピュータ。
【００８４】
（付記７）前記スレッド固有資源の各々は、複数のプログラムカウンタと、実行時に使用するプログラムカウンタを指定するプログラムカウンタ指定メモリとを備えたことを特徴とする付記１〜６のいずれか一つに記載のマルチスレッドコンピュータ。
【００８５】
（付記８）前記スレッド固有資源の各々は、前記複数のプログラムカウンタとして、スレッドの実行状態に従って値が変化する第１のプログラムカウンタと、スレッドの実行状態に対して独立した値を有する第２のプログラムカウンタとを備えたことを特徴とする付記７に記載のマルチスレッドコンピュータ。
【００８６】
（付記９）前記実行処理部は、前記第１のプログラムカウンタおよび／または前記第２のプログラムカウンタの値を書き換えることを特徴とする付記８に記載のマルチスレッドコンピュータ。
【００８７】
（付記１０）前記スレッド管理部は、前記実行要求が発生した場合に、当該実行要求が指定したスレッドを直ちに待機状態とするか、他のスレッドからの実行要求または外部からの実行要求がさらに発生した時点で待機状態とするかを選択することを特徴とする付記１〜９のいずれか一つに記載のマルチスレッドコンピュータ。
【００８８】
（付記１１）前記スレッド管理部は、実行要求が指定したスレッドを待機状態とするか否かの条件を記憶する条件設定部をさらに備えたことを特徴とする付記１０に記載のマルチスレッドコンピュータ。
【００８９】
（付記１２）前記スレッド管理部は、前記スレッドの待機状態を記憶する記憶部を複数備え、待機状態の記憶にいずれの記憶部を用いるかをスレッドごとに設定し、前記スレッド切替部がスレッドの切替をおこなう場合に前記複数の記憶部のうちいずれかの記憶部を選択し、当該選択した記憶部から実行するスレッドを選択させることを特徴とする付記１〜１１のいずれか一つに記載のマルチスレッドコンピュータ。
【００９０】
（付記１３）前記スレッド管理部は、前記複数の記憶部に優先順位を設定し、該優先順位にしたがって記憶部の選択をおこなうことを特徴とする付記１２に記載のマルチスレッドコンピュータ。
【００９１】
【発明の効果】
以上説明したように、本発明にかかるマルチスレッドコンピュータは、スレッドに対してプログラムカウンタとレジスタセットとをあらかじめ固定的に割り当て、実行要求があったスレッドを待機状態として記憶し、切替要求があった場合に待機状態にあるスレッドから次に実行するスレッドを選択して対応するスレッド固有資源の内容を実行処理部に供給するようにしているので、スレッドの準備に要する処理を削減してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【００９２】
また、本発明によればマルチスレッドコンピュータは、スレッドの実行結果として他のスレッドの実行を指定する実行要求が出力された場合に、指定されたスレッドを待機状態とし、次回の実行時の選択候補としているので、スレッドの新たな生成を含むスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【００９３】
また、本発明によればマルチスレッドコンピュータは、外部からスレッドを指定した実行要求を受信した場合に、指定されたスレッドを待機状態とし、次回の実行時の選択候補としているので、スレッドの管理を効率化し、処理速度を向上するとともに、外部から直接スレッドを起動可能なマルチスレッドコンピュータを提供することができるという効果を奏する。
【００９４】
また、本発明によればマルチスレッドコンピュータは、スレッドの実行結果としてスレッドの切替を要求する切替要求が出力された場合に、待機状態にあるスレッドから次に実行するスレッドを選択し、スレッドの切替をおこなうので、スレッドの実行状態に応じたスレッドの切替をＯＳや管理用のスレッドを用いることなく実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【００９５】
また、本発明によればマルチスレッドコンピュータは、スレッドの実行時に処理が所定の時間内に終わらない場合に、待機状態にあるスレッドから次に実行するスレッドを選択し、スレッドの切替をおこなうので、処理の実行時間に応じたスレッドの切替をＯＳや管理用のスレッドを用いることなく実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【００９６】
また、本発明によればマルチスレッドコンピュータは、スレッドの実行時に処理が所定の時間内に終わらない場合に、処理の内容にもとづいてスレッドを切り替えるか否かを判定するので、処理内容に応じたスレッドの切替をＯＳや管理用のスレッドを用いることなく実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【００９７】
また、本発明によればマルチスレッドコンピュータは、各スレッドにたいして複数のプログラムカウンタを対応させ、実行時のプログラムカウンタを指定することでスレッドの開始位置を指定するので、スレッドの開始位置の選択を実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【００９８】
また、本発明によればマルチスレッドコンピュータは、スレッドの実行状態にしたがって値が変化する第１のプログラムカウンタを用いることで、スレッドを継続して実行するか、スレッドの実行状態に対して独立した値を有する第２のプログラムカウンタを用いることで指定の状態からスレッドを実行するかを選択するので、スレッドを継続して実行する場合と所定の開始位置から実行する場合との選択を実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【００９９】
また、本発明によればマルチスレッドコンピュータは、第１のプログラムカウンタおよび／または第２のプログラムカウンタを書き換えることで、スレッドの開始状態を設定することができるので、スレッドの開始位置の変更を実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【０１００】
また、本発明によればマルチスレッドコンピュータは、実行要求を発行する場合に、直ちに待機状態とするか、他のスレッドからの実行要求または外部からの実行要求が発生した時点で待機状態とするかを指定することができるので、スレッドを開始するための条件を設定してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【０１０１】
また、本発明によればマルチスレッドコンピュータは、条件設定部にスレッドを待機状態にする条件を記憶させ、条件を満たしたときのみスレッドを待機状態とすることで、スレッドの実行に条件を設定することができるので、スレッドの実行条件を詳細に設定してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【０１０２】
また、本発明によればマルチスレッドコンピュータは、複数の記憶部のいずれに待機状態を登録するかをスレッドごとに設定し、スレッドの切替時にいずれかの記憶部を選択し、選択した記憶部に登録されたスレッドから実行するスレッドを決定することで、スレッドの実行順序に重み付けを設定することができるので、スレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【０１０３】
また、本発明によればマルチスレッドコンピュータは、優先順位を設けた複数の記憶部のいずれに待機状態を登録するかをスレッドごとに設定し、スレッドの切替時に優先順位の高い記憶部を選択し、選択した記憶部に登録されたスレッドから実行するスレッドを決定することで、スレッドの実行順序に優先順位を設定することができるので、スレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【図面の簡単な説明】
【図１】本実施の形態にかかるマイクロコントローラの概要構成を示す概要構成図である。
【図２】図１に示したマイクロコントローラにおけるスレッドの管理を説明する説明図である。
【図３】複数のプログラムカウンタを有するスレッド固有資源を説明する説明図である。
【図４】スレッド固有資源が複数のプログラムカウンタを有する場合の処理動作について説明する説明図である。
【図５】スレッドに対する実行要求の条件分けを説明する説明図である。
【図６】条件テーブルを設けたスレッド管理部を説明する説明図である。
【図７】実行状態記憶用のプログラムカウンタを変更可能とする構成を示す図である。
【図８】スレッド間に優先順位を設けたスレッド管理部の構成を示す図である。
【符号の説明】
１  マイクロコントローラ
２  バス
３〜５  モジュール
１１，１１ａ，１１ｂ，１１ｃ  スレッド管理部
１２  スレッド切替部
１３  デコーダ
１４  実行部
１５  書き戻し制御部
２１〜２４，２１ａ  スレッド固有資源
３１，３３  プログラムカウンタ
３２  レジスタセット
３４  プログラムカウンタ指定メモリ
４１  スレッド操作部
４２  論理演算ユニット
４３  ロード／ストア
５１  条件テーブル
Ａ，Ａ１，Ａ２，Ｂ，Ｃ  ビットマップ
【図１】
2004234123.tif 000003
【図２】
2004234123.tif 000004
【図３】
2004234123.tif 000005
【図４】
2004234123.tif 000006
【図５】
2004234123.tif 000007
【図６】
2004234123.tif 000008
【図７】
2004234123.tif 000009
【図８】
2004234123.tif 000010