JP2004234123A - マルチスレッドコンピュータ - Google Patents
マルチスレッドコンピュータ Download PDFInfo
- Publication number
- JP2004234123A JP2004234123A JP2003019246A JP2003019246A JP2004234123A JP 2004234123 A JP2004234123 A JP 2004234123A JP 2003019246 A JP2003019246 A JP 2003019246A JP 2003019246 A JP2003019246 A JP 2003019246A JP 2004234123 A JP2004234123 A JP 2004234123A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- execution
- unit
- standby state
- computer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 description 26
- 230000008569 process Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
Abstract
【課題】マルチスレッドコンピュータにおけるスレッドの管理を効率化し、処理速度を向上すること。
【解決手段】スレッドに対してプログラムカウンタおよびレジスタセットを固定的に割り当ててスレッド固有資源21〜24を設定する。実行部14およびモジュール3〜5は、スレッドを直接指定した実行要求をスレッド管理部11に送信し、スレッド管理部11は、実行要求のあったスレッドを待機状態として記憶する。スレッド切替部12は、実行部14がスレッド切替要求を送信した場合に、待機状態のスレッドを選択し、選択したスレッドの固有資源をデコーダ13に供給する。
【選択図】 図1
【解決手段】スレッドに対してプログラムカウンタおよびレジスタセットを固定的に割り当ててスレッド固有資源21〜24を設定する。実行部14およびモジュール3〜5は、スレッドを直接指定した実行要求をスレッド管理部11に送信し、スレッド管理部11は、実行要求のあったスレッドを待機状態として記憶する。スレッド切替部12は、実行部14がスレッド切替要求を送信した場合に、待機状態のスレッドを選択し、選択したスレッドの固有資源をデコーダ13に供給する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
この発明は、実行処理部が複数のスレッドを切り替えて実行するマルチスレッドコンピュータに関し、特に、スレッドの切替を効率化し、処理速度を向上したマルチスレッドコンピュータに関する。
【0002】
【従来の技術】
従来、プロセッサの使用効率を高めるため、複数のスレッドを切り替えて実行するマルチスレッドコンピュータが利用されてきた。マルチスレッドコンピュータは、複数のプログラムカウンタと複数のレジスタセットまたはレジスタファイルを実装し、単一のプロセッサがプログラムカウンタおよびレジスタセットを順次切り替えて使用する。
【0003】
このようにプログラムカウンタとレジスタセットとを複数備えることで、各スレッドは割り当てられたプログラムカウンタおよびレジスタセットをその処理が終了するまで占有することができ、各スレッドを独立に実行することができる。したがって、たとえばDMA転送や通信制御などのレイテンシの大きい処理において応答を待つ間に、プロセッサは他の処理を行うことができ、また処理の切替時にプログラムカウンタおよびレジスタセットの内容に影響を与えないため、プロセッサにおける待ち時間を縮小できる。
【0004】
ところで、従来のマルチスレッドコンピュータでは、オペレーションシステム(OS)によって管理される複数のプロセスがスレッドごとに動作しており、これらのプロセスがさらにいくつもの子プロセスを生成し、子プロセスの実行結果が元のプロセスに反映されていた。すなわち、元のプロセスは、定められた処理を実行し、比較的短い時間で消滅する子プロセスを生成することで、全体の処理の効率化を実現している。
【0005】
これらのマルチスレッドコンピュータでは、プロセス間の情報の引継ぎと、プロセス間の実行順序の管理が重要となる。そこで、たとえば特許文献1や特許文献2に開示されたマルチスレッドコンピュータでは、元プロセスから子プロセスへ情報を引き継ぐ処理と、子プロセスから元プロセスへ情報を引き継ぐ処理の効率化が図られている。
【0006】
また、たとえば特許文献3に開示されたマルチスレッドコンピュータでは、スレッド間に優先順位を設定して優先順位の高いスレッドから実行し、優先順位の高いスレッドの実行中にスレッド切替要因が発生した場合に優先順位の低いプロセスを実行するようにしている。
【0007】
【特許文献1】
特開2000−207233号公報
【特許文献2】
特開平10−78880号公報
【特許文献3】
特開平2−254544号公報
【0008】
【発明が解決しようとする課題】
しかしながら、従来のマルチスレッドコンピュータでは、スレッドを立ち上げてレジスタセットおよびプログラムカウンタに割り当てるまでの処理に時間がかかるという問題点があった。
【0009】
すなわち、従来のマルチスレッドコンピュータでは、スレッドの生成時にレジスタセットおよびプログラムカウンタを割り当てているため、レジスタセットおよびプログラムカウンタに割り当てるスレッドは毎回異なる。そのため、処理の汎用性が高めることができるが、同一のスレッドが繰り返し実行される場合では処理の汎用性を高めるよりもスレッドの準備にかかる時間を短くすることが望ましい。
【0010】
特に組み込み用途のプロセッサのように、規定の処理が高頻度で繰り返し実行され、各処理が短時間で終了するプロセッサでは、スレッドの準備が処理全体に対して占める割合が大きくなるので、スレッドの準備によって全体の処理速度が低下することとなる。
【0011】
また、組み込み用途のプロセッサでは、異なる装置からの入力を処理する場合など、スレッド間に優先順位を設定することができないことが多く、従来のようにスレッドに優先順位を付したスレッド管理はおこなうことができないという問題点があった。
【0012】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、スレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することを目的とする。
【0013】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するため、本発明に係るマルチスレッドコンピュータは、実行処理部が複数のスレッドを切り替えて実行するマルチスレッドコンピュータであって、前記複数のスレッドの各々に対してあらかじめ固有に割り当てられ、すくなくともプログラムカウンタとレジスタセットとを有するスレッド固有資源と、前記複数のスレッドのいずれかを指定した実行要求を受信した場合に、当該指定されたスレッドを待機状態にするスレッド管理部と、前記実行処理部が実行するスレッドを前記スレッド管理部が待機状態としたスレッドから選択して切り替えるスレッド切替部と、を備えたことを特徴とする。
【0014】
この発明によれば、マルチスレッドコンピュータは、スレッドに対してプログラムカウンタとレジスタセットとをあらかじめ固定的に割り当て、実行要求があったスレッドを待機状態として記憶し、切替要求があった場合に待機状態にあるスレッドから次に実行するスレッドを選択して対応するスレッド固有資源の内容を実行処理部に供給するようにしている。
【0015】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、前記実行処理部によるスレッドの実行結果として他のスレッドを指定した実行要求が出力された場合に、当該指定されたスレッドを待機状態にすることを特徴とする。
【0016】
この発明によれば、マルチスレッドコンピュータは、スレッドの実行結果として他のスレッドの実行を指定する実行要求が出力された場合に、指定されたスレッドを待機状態とし、次回の実行時の選択候補としている。
【0017】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、外部からスレッドを指定した実行要求を受信した場合に、当該指定されたスレッドを待機状態にすることを特徴とする。
【0018】
この発明によれば、マルチスレッドコンピュータは、外部からスレッドを指定した実行要求を受信した場合に、指定されたスレッドを待機状態とし、次回の実行時の選択候補としている。
【0019】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド切替部は、前記実行処理部によるスレッドの実行結果としてスレッドの切替を要求する切替要求が出力された場合に、前記スレッドの選択および切替をおこなうことを特徴とする。
【0020】
この発明によれば、マルチスレッドコンピュータは、スレッドの実行結果としてスレッドの切替を要求する切替要求が出力された場合に、待機状態にあるスレッドから次に実行するスレッドを選択し、スレッドの切替をおこなう。
【0021】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド切替部は、前記実行処理部によるスレッドの実行において所定の命令の実行が一定時間以内に終了しない場合に、前記スレッドの選択および切替をおこなうことを特徴とする。
【0022】
この発明によれば、マルチスレッドコンピュータは、スレッドの実行時に処理が所定の時間内に終わらない場合に、待機状態にあるスレッドから次に実行するスレッドを選択し、スレッドの切替をおこなう。
【0023】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記実行処理部は、スレッドの実行において所定の命令の実行が一定時間以内に終了しない場合に、当該命令にもとづいてスレッドの切替をおこなうか否かを判断し、前記スレッド切替部は前記実行処理部がスレッドの切替をおこなうと判断した場合に前記スレッドの選択および切替をおこなうことを特徴とする。
【0024】
この発明によれば、マルチスレッドコンピュータは、スレッドの実行時に処理が所定の時間内に終わらない場合に、処理の内容にもとづいてスレッドを切り替えるか否かを判定する。
【0025】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド固有資源の各々は、複数のプログラムカウンタと、実行時に使用するプログラムカウンタを指定するプログラムカウンタ指定メモリとを備えたことを特徴とする。
【0026】
この発明によれば、マルチスレッドコンピュータは、各スレッドにたいして複数のプログラムカウンタを対応させ、実行時のプログラムカウンタを指定することでスレッドの開始位置を指定する。
【0027】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド固有資源の各々は、前記複数のプログラムカウンタとして、スレッドの実行状態に従って値が変化する第1のプログラムカウンタと、スレッドの実行状態に対して独立した値を有する第2のプログラムカウンタとを備えたことを特徴とする。
【0028】
この発明によれば、マルチスレッドコンピュータは、スレッドの実行状態にしたがって値が変化する第1のプログラムカウンタを用いることで、スレッドを継続して実行するか、スレッドの実行状態に対して独立した値を有する第2のプログラムカウンタを用いることで指定の状態からスレッドを実行するかを選択する。
【0029】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記実行処理部は、前記第1のプログラムカウンタおよび/または前記第2のプログラムカウンタの値を書き換えることを特徴とする。
【0030】
この発明によれば、マルチスレッドコンピュータは、第1のプログラムカウンタおよび/または第2のプログラムカウンタを書き換えることで、スレッドの開始状態を設定することができる。
【0031】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、前記実行要求が発生した場合に、当該実行要求が指定したスレッドを直ちに待機状態とするか、他のスレッドからの実行要求または外部からの実行要求がさらに発生した時点で待機状態とするかを選択することを特徴とする。
【0032】
この発明によれば、マルチスレッドコンピュータは、実行要求を発行する場合に、直ちに待機状態とするか、他のスレッドからの実行要求または外部からの実行要求が発生した時点で待機状態とするかを指定することができる。
【0033】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、実行要求が指定したスレッドを待機状態とするか否かの条件を記憶する条件設定部をさらに備えたことを特徴とする。
【0034】
この発明によれば、マルチスレッドコンピュータは、条件設定部にスレッドを待機状態にする条件を記憶させ、条件を満たしたときのみスレッドを待機状態とすることで、スレッドの実行に条件を設定することができる。
【0035】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、前記スレッドの待機状態を記憶する記憶部を複数備え、待機状態の記憶にいずれの記憶部を用いるかをスレッドごとに設定し、前記スレッド切替部がスレッドの切替をおこなう場合に前記複数の記憶部のうちいずれかの記憶部を選択し、当該選択した記憶部から実行するスレッドを選択させることを特徴とする。
【0036】
この発明によれば、マルチスレッドコンピュータは、複数の記憶部のいずれに待機状態を登録するかをスレッドごとに設定し、スレッドの切替時にいずれかの記憶部を選択し、選択した記憶部に登録されたスレッドから実行するスレッドを決定することで、スレッドの実行順序に重み付けを設定することができる。
【0037】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、前記複数の記憶部に優先順位を設定し、該優先順位にしたがって記憶部の選択をおこなうことを特徴とする。
【0038】
この発明によれば、マルチスレッドコンピュータは、優先順位を設けた複数の記憶部のいずれに待機状態を登録するかをスレッドごとに設定し、スレッドの切替時に優先順位の高い記憶部を選択し、選択した記憶部に登録されたスレッドから実行するスレッドを決定することで、スレッドの実行順序に優先順位を設定することができる。
【0039】
【発明の実施の形態】
以下に添付図面を参照して、この発明に係るマルチスレッドコンピュータの好適な実施の形態を詳細に説明する。
【0040】
図1は、本実施の形態にかかるマルチスレッドコンピュータであるマイクロコントローラの概要構成を示す概要構成図である。同図に示すように、マイクロコントローラ1は、バス2を介してモジュール3〜4と接続されている。また、マイクロコントローラ1は、その内部にスレッド管理部11、スレッド切替部12、デコーダ13、実行部14、書き戻し制御部15およびスレッド固有資源21〜24を有している。なお、マイクロコントローラ1は、図示しないスレッド固有資源をさらに備えている。
【0041】
スレッド固有資源21は、その内部にプログラムカウンタ31およびレジスタセット32を備えている。同様に、スレッド固有資源22〜24、また図示しないスレッド固有資源は、それぞれプログラムカウンタとレジスタセットとを備えている。
【0042】
スレッド固有資源21〜24および図示しないスレッド固有資源は、あらかじめ所定のスレッドに対して固定的に割り当てられている。したがって、ある処理を実行するスレッドは、常に同一のスレッド固有資源を用いて実行される。そこで、スレッドを指定することで、アクセスすべきスレッド固有資源は一意に決定されることとなり、また、スレッド固定資源が特定できれば、そこに記憶されている内容がどのスレッドに係るものかが判明することとなる。
【0043】
マイクロコントローラ1では、モジュール3〜5からバス2を介してスレッドの実行要求を受信した場合、もしくは実行部14が処理結果としてスレッドの実行要求を出力した場合に、スレッド管理部11が実行要求されたスレッドを待機状態として登録する。その後、実行部14がスレッドの切替要求を出力した場合に、スレッド切替部12は、スレッド管理部11が待機状態としたスレッドから次に実行するスレッドを選択し、対応するスレッド固有資源に切替をおこなう。デコーダは、スレッド切替部12によって選択されたスレッド固定資源のプログラムカウンタおよびレジスタセットを用いて命令の解読をおこない、実行部14に送信する。
【0044】
実行部14による命令の実行の結果は、書き戻し制御部15を介してスレッド固有資源に反映される。この書き戻し制御は、スレッド切替部12によるスレッド切替にしたがっておこなう。また、実行部14による命令の実行の結果、あらたなスレッドを実行する必要が生じた場合、実行部14は、スレッドを指定した実行要求をスレッド管理部11に送信する。さらに実行部14による命令実行の結果、スレッドを切り替える必要が生じた場合、実行部14は、スレッドの切替要求をスレッド切替部12に送信する。
【0045】
つぎに、図2を参照し、このマイクロコントローラ1におけるスレッドの管理についてさらに詳細に説明する。同図に示すように、スレッド管理部11は、その内部にビットマップAを有する。ビットマップAは、各スレッドについて、1ビットずつの容量を有し、各スレッドが待機状態であるか否かを記憶する。図2においては、ビットマップAはスレッド数分のビット幅、同図では8ビットの容量を有し、スレッドの実行要求があった場合に、対応するビットの値を「1」にする。
【0046】
スレッド切替部12は、スレッドの切替要求を受信した場合に、ビットマップAのうち、値が「1」であるスレッドの中から、次のスレッドを選択し、対応するプログラムカウンタの値およびレジスタセットの値をデコーダ13および実行部14にそれぞれ供給する。なお、スレッド管理部11は、選択されたスレッドのビットを「0」に戻す。
【0047】
実行部14は、その内部にスレッド操作部41、論理演算ユニット(ALU)42およびロード/ストア43を有する。スレッド操作部41は、デコーダ13の出力をもとに、スレッドの実行要求およびスレッドの切替要求を出力する。ALU42は、レジスタセットの値をもとに、論理演算処理を実行する。一方、ロード/ストア43は、バス2と接続され、バス2を介してモジュール3〜5との通信をおこなう。さらにロード/ストア43は、通信の応答に時間がかかる場合に、スレッドの切替要求を出力する。
【0048】
この通信の応答に時間がかかるか否かの判断は、たとえば通信先によって決定してもよいし、所定の時間経過後に切替要求を出力するようにしてもよい。なお所定のメモリ領域に対して、他のスレッドとの間で不可分なアクセスをしたい場合などは、通信の応答に時間がかかる場合であってもスレッドの切替要求は出力せず、応答があるまで待機する。
【0049】
ここで、スレッド操作部41およびロードストア43が出力するスレッドの切替要求は、独立したコマンドであっても良いし、通常の命令に付加したビット情報であってもよい。
【0050】
このようにスレッドに対して固有のプログラムカウンタおよびレジスタセットを割り当てることで、OSや管理のためのスレッドを用いることなく、スレッドの切替を実現することができるとともにスレッドの準備に要する時間を削減できる。また、スレッドを固定することで、モジュール3〜5などの外部から直接にスレッドの実行要求を受信することができる。そこで、スレッド管理部11では、実行部14からの実行要求とバス2経由での実行要求との論理和をビットマップAに登録するようにしている。
【0051】
ところで、スレッド固有資源に設けるプログラムカウンタは、必ずしも一つに限定する必要はなく、任意の数のプログラムカウンタを設けることができる。複数のプログラムカウンタを有するスレッド固有資源を図3に示す。
【0052】
図3に示したスレッド固有資源21aは、プログラムカウンタ31、レジスタセット32に加え、プログラムカウンタ33とプログラムカウンタ指定メモリ34を有する。プログラムカウンタ31は、スレッドの実行時に用いられ、一般的なコンピュータシステムと同様に、プログラムの実行に対応して加算または上書きされる。一方、プログラムカウンタ33は、スレッド操作部41によって設定された値を保持する。プログラムカウンタ指定メモリ34は、プログラムカウンタ31とプログラムカウンタ33のどちらの値を使用するかを記憶するメモリである。
【0053】
つぎに、図4を参照し、スレッド固有資源が複数のプログラムカウンタを有する場合の処理動作について説明する。図4に示すように、プログラムカウンタが複数ある場合、スレッド操作部41は、次回のスレッド起動時にプログラムカウンタ31が示すアドレスから動作を再開するか、プログラムカウンタ33が示すアドレスから動作を再開するかを決定し、プログラムカウンタ指定メモリ34に登録する。
【0054】
スレッド固有資源21aは、次回のスレッド起動時に、プログラムカウンタ指定メモリ34の指定に従い、プログラムカウンタ31またはプログラムカウンタ33のいずれかの値をスレッド切替部12に供給する。したがって、スレッド切替部12は、スレッド固有資源が有するプログラムカウンタの数による動作の変更は必要としない。
【0055】
プログラムカウンタ31は、プログラムの実行に伴い、所定の数ずつ加算される。加算される数は実行するコマンドのサイズによって異なり、16ビットのコマンドでは「2」、32ビットのコマンドでは「4」、64ビットのコマンドでは「8」ずつ加算される。一方、プログラムカウンタ33は、特定のコマンドの実行された場合のみ、スレッド操作部41によって更新される。したがって、プログラムカウンタ31がプログラムの実行状況を示すのに対し、プログラムカウンタ33は、コマンドによって指定されたプログラムの開始位置を示すこととなる。なお、プログラムカウンタ33から実行した場合、プログラムカウンタ33の値に所定数を加えた値がプログラムカウンタ31に書き込まれ、処理が継続する場合にはプログラムカウンタ31が使用される。
【0056】
このように複数のプログラムカウンタを設けることで、たとえば、プログラムカウンタ31は、同一のスレッドを継続して実行する場合に使用し、プログラムカウンタ33は、他のスレッドや外部のモジュールからの実行要求によって起動する場合に使用する、といった条件別のスレッド実行が可能となる。
【0057】
なお、スレッドに対する実行要求の条件分けを実現するため、図5に示すようにスレッド管理部11aはビットマップBを備える。ここで、条件分けは、
条件1 ただちに指定したスレッドを待機状態とし、プログラムカウンタ31から実行する。
条件2 ただちに指定したスレッドを待機状態とし、プログラムカウンタ33から実行する。
条件3 他のスレッドまたはバス2経由の実行要求があった場合にスレッドを待機状態とし、プログラムカウンタ31を使用する。
条件4 他のスレッドまたはバス2経由の実行要求があった場合にスレッドを待機状態とし、プログラムカウンタ33を使用する。
とし、条件の設定はスレッド操作部41によっておこなうものとする。
【0058】
このスレッド管理部11aは、スレッドがビットマップAに登録されている場合、またはスレッドが実行中である場合に他のスレッドまたはモジュール3〜5から実行要求を受けた場合に、その実行要求をビットマップBに記憶する。このビットマップBは、ビットマップAと同様に、各スレッドに対して1ビットずつ、スレッド数分のビット幅を有し、ここでは8ビットのメモリとして説明する。
【0059】
条件1が設定された実行要求を受信した場合、スレッド管理部11aは、ただちにビットマップAにスレッドを登録し、ビットマップBは参照も登録もしない。一方、条件2が設定された実行要求を受信した場合、スレッド管理部11aはただちにビットマップAにスレッドを登録するとともに、ビットマップBを参照し、ビットマップBに実行要求が登録されていれば登録内容を消去する。
【0060】
条件3が設定された実行要求を受信した場合、スレッド管理部11aは、他のスレッドからの実行要求を受信するか、またはモジュール3〜5からの実行要求を受信するまで登録を保留し、他のスレッドまたはモジュール3〜5からの実行要求を受信した場合にビットマップAに登録する。このとき、ビットマップBは参照も登録もおこなわない。
【0061】
条件4が設定された実行要求を受信した場合、スレッド管理部11aは、他のスレッドからの実行要求を受信するか、またはモジュール3〜5からの実行要求を受信するまで登録を保留し、他のスレッドまたはモジュール3〜5からの実行要求を受信した場合にビットマップAに登録する。さらに、ビットマップBを参照し、ビットマップBに実行要求が登録されていれば登録内容を消去する。
【0062】
なお、スレッド管理部に条件設定用のテーブルを設ければ、さらに詳細な条件を設定することができる。図6は、条件テーブル51を設けたスレッド管理部11bを示す図である。同図に示すように、スレッド管理部11bは、条件テーブル51を備えている。条件テーブル51は、左側の列にスレッド番号を、中央の列に条件を満たすか否かを、右側の列に条件内容を記憶している。
【0063】
このスレッド管理部11bでは、条件3または条件4を設定された実行要求を受信した場合、条件テーブル51を参照し、条件テーブル51に指定された条件を満たす場合にビットマップAに登録し、条件を満たさない場合はビットマップBに登録する。その他の構成および動作は、図5に示したスレッド管理部11aと同様であるので、説明を省略する。
【0064】
条件テーブル51によって設定する条件の内容は、例えば特定のモジュールからの実行要求などを用いることができる。条件の内容は、スレッド操作部41からの登録によって設定および変更する。
【0065】
このように、スレッド管理部に複数のビットマップを設けることでスレッドの起動に条件を設定することができ、またスレッド固有資源に複数のプログラムカウンタを設けることで、条件に応じたレジスタセットからスレッドを開始することができる。さらには、スレッド管理部に条件テーブルを備えることでより詳細な条件設定が可能となる。
【0066】
なお、図4ではプログラムカウンタ31を常にプログラムの実行状態に合わせたアドレスを記憶させ、スレッド操作部41によるアドレスの変更はプログラムカウンタ33のみにおこなっていたが、実行状態記憶用のプログラムカウンタが記憶するアドレスをスレッド操作部41によって変更可能としてもよい。
【0067】
実行状態記憶用のプログラムカウンタを変更可能とした構成を図7に示す。図7に示したスレッド固有資源21bは、プログラムの実行状態記憶用としてプログラムカウンタ31aを有する。スレッド操作部41は、このプログラムカウンタ21bの値を直接に書き換えることができる。その他の構成および動作は図4と同様であるので、同一の符号を付して説明を省略する。
【0068】
つぎに、スレッドの実行順序の優先順の設定について説明する。スレッド管理部11,11a,11bでは、スレッドの待機状態を単一のビットマップAによって管理し、スレッド間に優先順位は設定していなかった。スレッド間に優先順位を設ける場合におけるスレッド管理部の構成を図8に示す。
【0069】
図8において、スレッド管理部11cは、ビットマップA1およびビットマップA2、さらにビットマップCを備える。ビットマップA1およびビットマップA2は、それぞれスレッドの待機状態を登録する記憶部として機能する。スレッド管理部11,11a,11bにおけるビットマップAとの差は、ビットマップAが全てのスレッドの待機状態を登録するのに対し、ビットマップA1,A2は、それぞれ担当するスレッドが設定されていることである。
【0070】
ビットマップA1,A2が担当するスレッドは、ビットマップCによって割り当てられる。ビットマップCにおいて値が「0」であるスレッドの待機状態は、スレッドA1に登録され、ビットマップCにおいて値が「1」であるスレッドの待機状態は、ビットマップA2に登録される。
【0071】
具体的には、ビットマップCはスレッド0,2,4,6,7に対して値「0」を設定し、スレッド1,3,5に対して値「1」を設定している。したがって、スレッド0,2,4,6,7の待機状態はビットマップA1に登録され、ビットマップA2の待機状態はビットマップA2に登録されることとなる。ビットマップCの値の設定は、スレッド操作部41から任意におこなうことができる。
【0072】
スレッド管理部11cは、スレッド操作部41から切替要求があった場合に、ビットマップA1とビットマップA2からそれぞれ1つずつスレッドを選択する。その後、ビットマップA1から選択されたスレッドと、ビットマップA2から選択されたスレッドとを交互に実行する。なお、一方のビットマップにスレッドが登録されていなければ、同一のビットマップから連続して選択する。
【0073】
このように構成することで、待機中のスレッドが実行される確率を調整し、スレッド間の実行順序に重み付けをすることができる。また、重み付けの配分は、ビットマップCの設定によって調整することができる。
【0074】
なお、特定のスレッドを他のスレッドに対して常に優先して実行したい場合、一方のビットマップに登録されたスレッドを常に優先して選択すればよい。たとえば、ビットマップA1に待機状態として登録されたスレッドがある場合、ビットマップA2の登録状態に関わらず、ビットマップA1からスレッドを選択し、ビットマップA1に登録されたスレッドがない場合にビットマップA2に登録されたスレッドを選択することで、スレッド間に優先順位を設けることができる。
【0075】
上述してきたように、本実施の形態では、スレッドに対してあらかじめ固有のプログラムカウンタおよびレジスタセットを割り当て、スレッド固有の資源を切り替えて実行するようにしているので、OSや管理のためのスレッドを用いることなく、スレッドの切替を実現することができるとともに、スレッドの準備に要する時間を削減できる。したがって、マイクロコントローラの切替処理の効率化と処理速度の向上が実現できる。
【0076】
また、スレッドを固定することで、外部のモジュールなどがスレッドを指定して直接に実行要求を発行することができる。さらに、スレッドに対する複数のプログラムカウンタ割り当てや、スレッドの実行条件の設定によってスレッドの実行内容を任意に設定することができる。
【0077】
さらに、スレッドの待機状態を登録するビットマップを振り分けることで、スレッドの実行順序を管理することができる。
【0078】
(付記1)実行処理部が複数のスレッドを切り替えて実行するマルチスレッドコンピュータであって、
前記複数のスレッドの各々に対してあらかじめ固有に割り当てられ、すくなくともプログラムカウンタとレジスタセットとを有するスレッド固有資源と、
前記複数のスレッドのいずれかを指定した実行要求を受信した場合に、当該指定されたスレッドを待機状態にするスレッド管理部と、
前記実行処理部が実行するスレッドを前記スレッド管理部が待機状態としたスレッドから選択して切り替えるスレッド切替部と、
を備えたことを特徴とするマルチスレッドコンピュータ。
【0079】
(付記2)前記スレッド管理部は、前記実行処理部によるスレッドの実行結果として他のスレッドを指定した実行要求が出力された場合に、当該指定されたスレッドを待機状態にすることを特徴とする付記1に記載のマルチスレッドコンピュータ。
【0080】
(付記3)前記スレッド管理部は、外部からスレッドを指定した実行要求を受信した場合に、当該指定されたスレッドを待機状態にすることを特徴とする付記1または2に記載のマルチスレッドコンピュータ。
【0081】
(付記4)前記スレッド切替部は、前記実行処理部によるスレッドの実行結果としてスレッドの切替を要求する切替要求が出力された場合に、前記スレッドの選択および切替をおこなうことを特徴とする付記1,2または3に記載のマルチスレッドコンピュータ。
【0082】
(付記5)前記スレッド切替部は、前記実行処理部によるスレッドの実行において所定の命令の実行が一定時間以内に終了しない場合に、前記スレッドの選択および切替をおこなうことを特徴とする付記1〜4のいずれか一つに記載のマルチスレッドコンピュータ。
【0083】
(付記6)前記実行処理部は、スレッドの実行において所定の命令の実行が一定時間以内に終了しない場合に、当該命令にもとづいてスレッドの切替をおこなうか否かを判断し、前記スレッド切替部は前記実行処理部がスレッドの切替をおこなうと判断した場合に前記スレッドの選択および切替をおこなうことを特徴とする付記5に記載のマルチスレッドコンピュータ。
【0084】
(付記7)前記スレッド固有資源の各々は、複数のプログラムカウンタと、実行時に使用するプログラムカウンタを指定するプログラムカウンタ指定メモリとを備えたことを特徴とする付記1〜6のいずれか一つに記載のマルチスレッドコンピュータ。
【0085】
(付記8)前記スレッド固有資源の各々は、前記複数のプログラムカウンタとして、スレッドの実行状態に従って値が変化する第1のプログラムカウンタと、スレッドの実行状態に対して独立した値を有する第2のプログラムカウンタとを備えたことを特徴とする付記7に記載のマルチスレッドコンピュータ。
【0086】
(付記9)前記実行処理部は、前記第1のプログラムカウンタおよび/または前記第2のプログラムカウンタの値を書き換えることを特徴とする付記8に記載のマルチスレッドコンピュータ。
【0087】
(付記10)前記スレッド管理部は、前記実行要求が発生した場合に、当該実行要求が指定したスレッドを直ちに待機状態とするか、他のスレッドからの実行要求または外部からの実行要求がさらに発生した時点で待機状態とするかを選択することを特徴とする付記1〜9のいずれか一つに記載のマルチスレッドコンピュータ。
【0088】
(付記11)前記スレッド管理部は、実行要求が指定したスレッドを待機状態とするか否かの条件を記憶する条件設定部をさらに備えたことを特徴とする付記10に記載のマルチスレッドコンピュータ。
【0089】
(付記12)前記スレッド管理部は、前記スレッドの待機状態を記憶する記憶部を複数備え、待機状態の記憶にいずれの記憶部を用いるかをスレッドごとに設定し、前記スレッド切替部がスレッドの切替をおこなう場合に前記複数の記憶部のうちいずれかの記憶部を選択し、当該選択した記憶部から実行するスレッドを選択させることを特徴とする付記1〜11のいずれか一つに記載のマルチスレッドコンピュータ。
【0090】
(付記13)前記スレッド管理部は、前記複数の記憶部に優先順位を設定し、該優先順位にしたがって記憶部の選択をおこなうことを特徴とする付記12に記載のマルチスレッドコンピュータ。
【0091】
【発明の効果】
以上説明したように、本発明にかかるマルチスレッドコンピュータは、スレッドに対してプログラムカウンタとレジスタセットとをあらかじめ固定的に割り当て、実行要求があったスレッドを待機状態として記憶し、切替要求があった場合に待機状態にあるスレッドから次に実行するスレッドを選択して対応するスレッド固有資源の内容を実行処理部に供給するようにしているので、スレッドの準備に要する処理を削減してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0092】
また、本発明によればマルチスレッドコンピュータは、スレッドの実行結果として他のスレッドの実行を指定する実行要求が出力された場合に、指定されたスレッドを待機状態とし、次回の実行時の選択候補としているので、スレッドの新たな生成を含むスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0093】
また、本発明によればマルチスレッドコンピュータは、外部からスレッドを指定した実行要求を受信した場合に、指定されたスレッドを待機状態とし、次回の実行時の選択候補としているので、スレッドの管理を効率化し、処理速度を向上するとともに、外部から直接スレッドを起動可能なマルチスレッドコンピュータを提供することができるという効果を奏する。
【0094】
また、本発明によればマルチスレッドコンピュータは、スレッドの実行結果としてスレッドの切替を要求する切替要求が出力された場合に、待機状態にあるスレッドから次に実行するスレッドを選択し、スレッドの切替をおこなうので、スレッドの実行状態に応じたスレッドの切替をOSや管理用のスレッドを用いることなく実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0095】
また、本発明によればマルチスレッドコンピュータは、スレッドの実行時に処理が所定の時間内に終わらない場合に、待機状態にあるスレッドから次に実行するスレッドを選択し、スレッドの切替をおこなうので、処理の実行時間に応じたスレッドの切替をOSや管理用のスレッドを用いることなく実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0096】
また、本発明によればマルチスレッドコンピュータは、スレッドの実行時に処理が所定の時間内に終わらない場合に、処理の内容にもとづいてスレッドを切り替えるか否かを判定するので、処理内容に応じたスレッドの切替をOSや管理用のスレッドを用いることなく実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0097】
また、本発明によればマルチスレッドコンピュータは、各スレッドにたいして複数のプログラムカウンタを対応させ、実行時のプログラムカウンタを指定することでスレッドの開始位置を指定するので、スレッドの開始位置の選択を実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0098】
また、本発明によればマルチスレッドコンピュータは、スレッドの実行状態にしたがって値が変化する第1のプログラムカウンタを用いることで、スレッドを継続して実行するか、スレッドの実行状態に対して独立した値を有する第2のプログラムカウンタを用いることで指定の状態からスレッドを実行するかを選択するので、スレッドを継続して実行する場合と所定の開始位置から実行する場合との選択を実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0099】
また、本発明によればマルチスレッドコンピュータは、第1のプログラムカウンタおよび/または第2のプログラムカウンタを書き換えることで、スレッドの開始状態を設定することができるので、スレッドの開始位置の変更を実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0100】
また、本発明によればマルチスレッドコンピュータは、実行要求を発行する場合に、直ちに待機状態とするか、他のスレッドからの実行要求または外部からの実行要求が発生した時点で待機状態とするかを指定することができるので、スレッドを開始するための条件を設定してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0101】
また、本発明によればマルチスレッドコンピュータは、条件設定部にスレッドを待機状態にする条件を記憶させ、条件を満たしたときのみスレッドを待機状態とすることで、スレッドの実行に条件を設定することができるので、スレッドの実行条件を詳細に設定してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0102】
また、本発明によればマルチスレッドコンピュータは、複数の記憶部のいずれに待機状態を登録するかをスレッドごとに設定し、スレッドの切替時にいずれかの記憶部を選択し、選択した記憶部に登録されたスレッドから実行するスレッドを決定することで、スレッドの実行順序に重み付けを設定することができるので、スレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0103】
また、本発明によればマルチスレッドコンピュータは、優先順位を設けた複数の記憶部のいずれに待機状態を登録するかをスレッドごとに設定し、スレッドの切替時に優先順位の高い記憶部を選択し、選択した記憶部に登録されたスレッドから実行するスレッドを決定することで、スレッドの実行順序に優先順位を設定することができるので、スレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【図面の簡単な説明】
【図1】本実施の形態にかかるマイクロコントローラの概要構成を示す概要構成図である。
【図2】図1に示したマイクロコントローラにおけるスレッドの管理を説明する説明図である。
【図3】複数のプログラムカウンタを有するスレッド固有資源を説明する説明図である。
【図4】スレッド固有資源が複数のプログラムカウンタを有する場合の処理動作について説明する説明図である。
【図5】スレッドに対する実行要求の条件分けを説明する説明図である。
【図6】条件テーブルを設けたスレッド管理部を説明する説明図である。
【図7】実行状態記憶用のプログラムカウンタを変更可能とする構成を示す図である。
【図8】スレッド間に優先順位を設けたスレッド管理部の構成を示す図である。
【符号の説明】
1 マイクロコントローラ
2 バス
3〜5 モジュール
11,11a,11b,11c スレッド管理部
12 スレッド切替部
13 デコーダ
14 実行部
15 書き戻し制御部
21〜24,21a スレッド固有資源
31,33 プログラムカウンタ
32 レジスタセット
34 プログラムカウンタ指定メモリ
41 スレッド操作部
42 論理演算ユニット
43 ロード/ストア
51 条件テーブル
A,A1,A2,B,C ビットマップ
【発明の属する技術分野】
この発明は、実行処理部が複数のスレッドを切り替えて実行するマルチスレッドコンピュータに関し、特に、スレッドの切替を効率化し、処理速度を向上したマルチスレッドコンピュータに関する。
【0002】
【従来の技術】
従来、プロセッサの使用効率を高めるため、複数のスレッドを切り替えて実行するマルチスレッドコンピュータが利用されてきた。マルチスレッドコンピュータは、複数のプログラムカウンタと複数のレジスタセットまたはレジスタファイルを実装し、単一のプロセッサがプログラムカウンタおよびレジスタセットを順次切り替えて使用する。
【0003】
このようにプログラムカウンタとレジスタセットとを複数備えることで、各スレッドは割り当てられたプログラムカウンタおよびレジスタセットをその処理が終了するまで占有することができ、各スレッドを独立に実行することができる。したがって、たとえばDMA転送や通信制御などのレイテンシの大きい処理において応答を待つ間に、プロセッサは他の処理を行うことができ、また処理の切替時にプログラムカウンタおよびレジスタセットの内容に影響を与えないため、プロセッサにおける待ち時間を縮小できる。
【0004】
ところで、従来のマルチスレッドコンピュータでは、オペレーションシステム(OS)によって管理される複数のプロセスがスレッドごとに動作しており、これらのプロセスがさらにいくつもの子プロセスを生成し、子プロセスの実行結果が元のプロセスに反映されていた。すなわち、元のプロセスは、定められた処理を実行し、比較的短い時間で消滅する子プロセスを生成することで、全体の処理の効率化を実現している。
【0005】
これらのマルチスレッドコンピュータでは、プロセス間の情報の引継ぎと、プロセス間の実行順序の管理が重要となる。そこで、たとえば特許文献1や特許文献2に開示されたマルチスレッドコンピュータでは、元プロセスから子プロセスへ情報を引き継ぐ処理と、子プロセスから元プロセスへ情報を引き継ぐ処理の効率化が図られている。
【0006】
また、たとえば特許文献3に開示されたマルチスレッドコンピュータでは、スレッド間に優先順位を設定して優先順位の高いスレッドから実行し、優先順位の高いスレッドの実行中にスレッド切替要因が発生した場合に優先順位の低いプロセスを実行するようにしている。
【0007】
【特許文献1】
特開2000−207233号公報
【特許文献2】
特開平10−78880号公報
【特許文献3】
特開平2−254544号公報
【0008】
【発明が解決しようとする課題】
しかしながら、従来のマルチスレッドコンピュータでは、スレッドを立ち上げてレジスタセットおよびプログラムカウンタに割り当てるまでの処理に時間がかかるという問題点があった。
【0009】
すなわち、従来のマルチスレッドコンピュータでは、スレッドの生成時にレジスタセットおよびプログラムカウンタを割り当てているため、レジスタセットおよびプログラムカウンタに割り当てるスレッドは毎回異なる。そのため、処理の汎用性が高めることができるが、同一のスレッドが繰り返し実行される場合では処理の汎用性を高めるよりもスレッドの準備にかかる時間を短くすることが望ましい。
【0010】
特に組み込み用途のプロセッサのように、規定の処理が高頻度で繰り返し実行され、各処理が短時間で終了するプロセッサでは、スレッドの準備が処理全体に対して占める割合が大きくなるので、スレッドの準備によって全体の処理速度が低下することとなる。
【0011】
また、組み込み用途のプロセッサでは、異なる装置からの入力を処理する場合など、スレッド間に優先順位を設定することができないことが多く、従来のようにスレッドに優先順位を付したスレッド管理はおこなうことができないという問題点があった。
【0012】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、スレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することを目的とする。
【0013】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するため、本発明に係るマルチスレッドコンピュータは、実行処理部が複数のスレッドを切り替えて実行するマルチスレッドコンピュータであって、前記複数のスレッドの各々に対してあらかじめ固有に割り当てられ、すくなくともプログラムカウンタとレジスタセットとを有するスレッド固有資源と、前記複数のスレッドのいずれかを指定した実行要求を受信した場合に、当該指定されたスレッドを待機状態にするスレッド管理部と、前記実行処理部が実行するスレッドを前記スレッド管理部が待機状態としたスレッドから選択して切り替えるスレッド切替部と、を備えたことを特徴とする。
【0014】
この発明によれば、マルチスレッドコンピュータは、スレッドに対してプログラムカウンタとレジスタセットとをあらかじめ固定的に割り当て、実行要求があったスレッドを待機状態として記憶し、切替要求があった場合に待機状態にあるスレッドから次に実行するスレッドを選択して対応するスレッド固有資源の内容を実行処理部に供給するようにしている。
【0015】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、前記実行処理部によるスレッドの実行結果として他のスレッドを指定した実行要求が出力された場合に、当該指定されたスレッドを待機状態にすることを特徴とする。
【0016】
この発明によれば、マルチスレッドコンピュータは、スレッドの実行結果として他のスレッドの実行を指定する実行要求が出力された場合に、指定されたスレッドを待機状態とし、次回の実行時の選択候補としている。
【0017】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、外部からスレッドを指定した実行要求を受信した場合に、当該指定されたスレッドを待機状態にすることを特徴とする。
【0018】
この発明によれば、マルチスレッドコンピュータは、外部からスレッドを指定した実行要求を受信した場合に、指定されたスレッドを待機状態とし、次回の実行時の選択候補としている。
【0019】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド切替部は、前記実行処理部によるスレッドの実行結果としてスレッドの切替を要求する切替要求が出力された場合に、前記スレッドの選択および切替をおこなうことを特徴とする。
【0020】
この発明によれば、マルチスレッドコンピュータは、スレッドの実行結果としてスレッドの切替を要求する切替要求が出力された場合に、待機状態にあるスレッドから次に実行するスレッドを選択し、スレッドの切替をおこなう。
【0021】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド切替部は、前記実行処理部によるスレッドの実行において所定の命令の実行が一定時間以内に終了しない場合に、前記スレッドの選択および切替をおこなうことを特徴とする。
【0022】
この発明によれば、マルチスレッドコンピュータは、スレッドの実行時に処理が所定の時間内に終わらない場合に、待機状態にあるスレッドから次に実行するスレッドを選択し、スレッドの切替をおこなう。
【0023】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記実行処理部は、スレッドの実行において所定の命令の実行が一定時間以内に終了しない場合に、当該命令にもとづいてスレッドの切替をおこなうか否かを判断し、前記スレッド切替部は前記実行処理部がスレッドの切替をおこなうと判断した場合に前記スレッドの選択および切替をおこなうことを特徴とする。
【0024】
この発明によれば、マルチスレッドコンピュータは、スレッドの実行時に処理が所定の時間内に終わらない場合に、処理の内容にもとづいてスレッドを切り替えるか否かを判定する。
【0025】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド固有資源の各々は、複数のプログラムカウンタと、実行時に使用するプログラムカウンタを指定するプログラムカウンタ指定メモリとを備えたことを特徴とする。
【0026】
この発明によれば、マルチスレッドコンピュータは、各スレッドにたいして複数のプログラムカウンタを対応させ、実行時のプログラムカウンタを指定することでスレッドの開始位置を指定する。
【0027】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド固有資源の各々は、前記複数のプログラムカウンタとして、スレッドの実行状態に従って値が変化する第1のプログラムカウンタと、スレッドの実行状態に対して独立した値を有する第2のプログラムカウンタとを備えたことを特徴とする。
【0028】
この発明によれば、マルチスレッドコンピュータは、スレッドの実行状態にしたがって値が変化する第1のプログラムカウンタを用いることで、スレッドを継続して実行するか、スレッドの実行状態に対して独立した値を有する第2のプログラムカウンタを用いることで指定の状態からスレッドを実行するかを選択する。
【0029】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記実行処理部は、前記第1のプログラムカウンタおよび/または前記第2のプログラムカウンタの値を書き換えることを特徴とする。
【0030】
この発明によれば、マルチスレッドコンピュータは、第1のプログラムカウンタおよび/または第2のプログラムカウンタを書き換えることで、スレッドの開始状態を設定することができる。
【0031】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、前記実行要求が発生した場合に、当該実行要求が指定したスレッドを直ちに待機状態とするか、他のスレッドからの実行要求または外部からの実行要求がさらに発生した時点で待機状態とするかを選択することを特徴とする。
【0032】
この発明によれば、マルチスレッドコンピュータは、実行要求を発行する場合に、直ちに待機状態とするか、他のスレッドからの実行要求または外部からの実行要求が発生した時点で待機状態とするかを指定することができる。
【0033】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、実行要求が指定したスレッドを待機状態とするか否かの条件を記憶する条件設定部をさらに備えたことを特徴とする。
【0034】
この発明によれば、マルチスレッドコンピュータは、条件設定部にスレッドを待機状態にする条件を記憶させ、条件を満たしたときのみスレッドを待機状態とすることで、スレッドの実行に条件を設定することができる。
【0035】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、前記スレッドの待機状態を記憶する記憶部を複数備え、待機状態の記憶にいずれの記憶部を用いるかをスレッドごとに設定し、前記スレッド切替部がスレッドの切替をおこなう場合に前記複数の記憶部のうちいずれかの記憶部を選択し、当該選択した記憶部から実行するスレッドを選択させることを特徴とする。
【0036】
この発明によれば、マルチスレッドコンピュータは、複数の記憶部のいずれに待機状態を登録するかをスレッドごとに設定し、スレッドの切替時にいずれかの記憶部を選択し、選択した記憶部に登録されたスレッドから実行するスレッドを決定することで、スレッドの実行順序に重み付けを設定することができる。
【0037】
また、本発明に係るマルチスレッドコンピュータは、上記の発明において、前記スレッド管理部は、前記複数の記憶部に優先順位を設定し、該優先順位にしたがって記憶部の選択をおこなうことを特徴とする。
【0038】
この発明によれば、マルチスレッドコンピュータは、優先順位を設けた複数の記憶部のいずれに待機状態を登録するかをスレッドごとに設定し、スレッドの切替時に優先順位の高い記憶部を選択し、選択した記憶部に登録されたスレッドから実行するスレッドを決定することで、スレッドの実行順序に優先順位を設定することができる。
【0039】
【発明の実施の形態】
以下に添付図面を参照して、この発明に係るマルチスレッドコンピュータの好適な実施の形態を詳細に説明する。
【0040】
図1は、本実施の形態にかかるマルチスレッドコンピュータであるマイクロコントローラの概要構成を示す概要構成図である。同図に示すように、マイクロコントローラ1は、バス2を介してモジュール3〜4と接続されている。また、マイクロコントローラ1は、その内部にスレッド管理部11、スレッド切替部12、デコーダ13、実行部14、書き戻し制御部15およびスレッド固有資源21〜24を有している。なお、マイクロコントローラ1は、図示しないスレッド固有資源をさらに備えている。
【0041】
スレッド固有資源21は、その内部にプログラムカウンタ31およびレジスタセット32を備えている。同様に、スレッド固有資源22〜24、また図示しないスレッド固有資源は、それぞれプログラムカウンタとレジスタセットとを備えている。
【0042】
スレッド固有資源21〜24および図示しないスレッド固有資源は、あらかじめ所定のスレッドに対して固定的に割り当てられている。したがって、ある処理を実行するスレッドは、常に同一のスレッド固有資源を用いて実行される。そこで、スレッドを指定することで、アクセスすべきスレッド固有資源は一意に決定されることとなり、また、スレッド固定資源が特定できれば、そこに記憶されている内容がどのスレッドに係るものかが判明することとなる。
【0043】
マイクロコントローラ1では、モジュール3〜5からバス2を介してスレッドの実行要求を受信した場合、もしくは実行部14が処理結果としてスレッドの実行要求を出力した場合に、スレッド管理部11が実行要求されたスレッドを待機状態として登録する。その後、実行部14がスレッドの切替要求を出力した場合に、スレッド切替部12は、スレッド管理部11が待機状態としたスレッドから次に実行するスレッドを選択し、対応するスレッド固有資源に切替をおこなう。デコーダは、スレッド切替部12によって選択されたスレッド固定資源のプログラムカウンタおよびレジスタセットを用いて命令の解読をおこない、実行部14に送信する。
【0044】
実行部14による命令の実行の結果は、書き戻し制御部15を介してスレッド固有資源に反映される。この書き戻し制御は、スレッド切替部12によるスレッド切替にしたがっておこなう。また、実行部14による命令の実行の結果、あらたなスレッドを実行する必要が生じた場合、実行部14は、スレッドを指定した実行要求をスレッド管理部11に送信する。さらに実行部14による命令実行の結果、スレッドを切り替える必要が生じた場合、実行部14は、スレッドの切替要求をスレッド切替部12に送信する。
【0045】
つぎに、図2を参照し、このマイクロコントローラ1におけるスレッドの管理についてさらに詳細に説明する。同図に示すように、スレッド管理部11は、その内部にビットマップAを有する。ビットマップAは、各スレッドについて、1ビットずつの容量を有し、各スレッドが待機状態であるか否かを記憶する。図2においては、ビットマップAはスレッド数分のビット幅、同図では8ビットの容量を有し、スレッドの実行要求があった場合に、対応するビットの値を「1」にする。
【0046】
スレッド切替部12は、スレッドの切替要求を受信した場合に、ビットマップAのうち、値が「1」であるスレッドの中から、次のスレッドを選択し、対応するプログラムカウンタの値およびレジスタセットの値をデコーダ13および実行部14にそれぞれ供給する。なお、スレッド管理部11は、選択されたスレッドのビットを「0」に戻す。
【0047】
実行部14は、その内部にスレッド操作部41、論理演算ユニット(ALU)42およびロード/ストア43を有する。スレッド操作部41は、デコーダ13の出力をもとに、スレッドの実行要求およびスレッドの切替要求を出力する。ALU42は、レジスタセットの値をもとに、論理演算処理を実行する。一方、ロード/ストア43は、バス2と接続され、バス2を介してモジュール3〜5との通信をおこなう。さらにロード/ストア43は、通信の応答に時間がかかる場合に、スレッドの切替要求を出力する。
【0048】
この通信の応答に時間がかかるか否かの判断は、たとえば通信先によって決定してもよいし、所定の時間経過後に切替要求を出力するようにしてもよい。なお所定のメモリ領域に対して、他のスレッドとの間で不可分なアクセスをしたい場合などは、通信の応答に時間がかかる場合であってもスレッドの切替要求は出力せず、応答があるまで待機する。
【0049】
ここで、スレッド操作部41およびロードストア43が出力するスレッドの切替要求は、独立したコマンドであっても良いし、通常の命令に付加したビット情報であってもよい。
【0050】
このようにスレッドに対して固有のプログラムカウンタおよびレジスタセットを割り当てることで、OSや管理のためのスレッドを用いることなく、スレッドの切替を実現することができるとともにスレッドの準備に要する時間を削減できる。また、スレッドを固定することで、モジュール3〜5などの外部から直接にスレッドの実行要求を受信することができる。そこで、スレッド管理部11では、実行部14からの実行要求とバス2経由での実行要求との論理和をビットマップAに登録するようにしている。
【0051】
ところで、スレッド固有資源に設けるプログラムカウンタは、必ずしも一つに限定する必要はなく、任意の数のプログラムカウンタを設けることができる。複数のプログラムカウンタを有するスレッド固有資源を図3に示す。
【0052】
図3に示したスレッド固有資源21aは、プログラムカウンタ31、レジスタセット32に加え、プログラムカウンタ33とプログラムカウンタ指定メモリ34を有する。プログラムカウンタ31は、スレッドの実行時に用いられ、一般的なコンピュータシステムと同様に、プログラムの実行に対応して加算または上書きされる。一方、プログラムカウンタ33は、スレッド操作部41によって設定された値を保持する。プログラムカウンタ指定メモリ34は、プログラムカウンタ31とプログラムカウンタ33のどちらの値を使用するかを記憶するメモリである。
【0053】
つぎに、図4を参照し、スレッド固有資源が複数のプログラムカウンタを有する場合の処理動作について説明する。図4に示すように、プログラムカウンタが複数ある場合、スレッド操作部41は、次回のスレッド起動時にプログラムカウンタ31が示すアドレスから動作を再開するか、プログラムカウンタ33が示すアドレスから動作を再開するかを決定し、プログラムカウンタ指定メモリ34に登録する。
【0054】
スレッド固有資源21aは、次回のスレッド起動時に、プログラムカウンタ指定メモリ34の指定に従い、プログラムカウンタ31またはプログラムカウンタ33のいずれかの値をスレッド切替部12に供給する。したがって、スレッド切替部12は、スレッド固有資源が有するプログラムカウンタの数による動作の変更は必要としない。
【0055】
プログラムカウンタ31は、プログラムの実行に伴い、所定の数ずつ加算される。加算される数は実行するコマンドのサイズによって異なり、16ビットのコマンドでは「2」、32ビットのコマンドでは「4」、64ビットのコマンドでは「8」ずつ加算される。一方、プログラムカウンタ33は、特定のコマンドの実行された場合のみ、スレッド操作部41によって更新される。したがって、プログラムカウンタ31がプログラムの実行状況を示すのに対し、プログラムカウンタ33は、コマンドによって指定されたプログラムの開始位置を示すこととなる。なお、プログラムカウンタ33から実行した場合、プログラムカウンタ33の値に所定数を加えた値がプログラムカウンタ31に書き込まれ、処理が継続する場合にはプログラムカウンタ31が使用される。
【0056】
このように複数のプログラムカウンタを設けることで、たとえば、プログラムカウンタ31は、同一のスレッドを継続して実行する場合に使用し、プログラムカウンタ33は、他のスレッドや外部のモジュールからの実行要求によって起動する場合に使用する、といった条件別のスレッド実行が可能となる。
【0057】
なお、スレッドに対する実行要求の条件分けを実現するため、図5に示すようにスレッド管理部11aはビットマップBを備える。ここで、条件分けは、
条件1 ただちに指定したスレッドを待機状態とし、プログラムカウンタ31から実行する。
条件2 ただちに指定したスレッドを待機状態とし、プログラムカウンタ33から実行する。
条件3 他のスレッドまたはバス2経由の実行要求があった場合にスレッドを待機状態とし、プログラムカウンタ31を使用する。
条件4 他のスレッドまたはバス2経由の実行要求があった場合にスレッドを待機状態とし、プログラムカウンタ33を使用する。
とし、条件の設定はスレッド操作部41によっておこなうものとする。
【0058】
このスレッド管理部11aは、スレッドがビットマップAに登録されている場合、またはスレッドが実行中である場合に他のスレッドまたはモジュール3〜5から実行要求を受けた場合に、その実行要求をビットマップBに記憶する。このビットマップBは、ビットマップAと同様に、各スレッドに対して1ビットずつ、スレッド数分のビット幅を有し、ここでは8ビットのメモリとして説明する。
【0059】
条件1が設定された実行要求を受信した場合、スレッド管理部11aは、ただちにビットマップAにスレッドを登録し、ビットマップBは参照も登録もしない。一方、条件2が設定された実行要求を受信した場合、スレッド管理部11aはただちにビットマップAにスレッドを登録するとともに、ビットマップBを参照し、ビットマップBに実行要求が登録されていれば登録内容を消去する。
【0060】
条件3が設定された実行要求を受信した場合、スレッド管理部11aは、他のスレッドからの実行要求を受信するか、またはモジュール3〜5からの実行要求を受信するまで登録を保留し、他のスレッドまたはモジュール3〜5からの実行要求を受信した場合にビットマップAに登録する。このとき、ビットマップBは参照も登録もおこなわない。
【0061】
条件4が設定された実行要求を受信した場合、スレッド管理部11aは、他のスレッドからの実行要求を受信するか、またはモジュール3〜5からの実行要求を受信するまで登録を保留し、他のスレッドまたはモジュール3〜5からの実行要求を受信した場合にビットマップAに登録する。さらに、ビットマップBを参照し、ビットマップBに実行要求が登録されていれば登録内容を消去する。
【0062】
なお、スレッド管理部に条件設定用のテーブルを設ければ、さらに詳細な条件を設定することができる。図6は、条件テーブル51を設けたスレッド管理部11bを示す図である。同図に示すように、スレッド管理部11bは、条件テーブル51を備えている。条件テーブル51は、左側の列にスレッド番号を、中央の列に条件を満たすか否かを、右側の列に条件内容を記憶している。
【0063】
このスレッド管理部11bでは、条件3または条件4を設定された実行要求を受信した場合、条件テーブル51を参照し、条件テーブル51に指定された条件を満たす場合にビットマップAに登録し、条件を満たさない場合はビットマップBに登録する。その他の構成および動作は、図5に示したスレッド管理部11aと同様であるので、説明を省略する。
【0064】
条件テーブル51によって設定する条件の内容は、例えば特定のモジュールからの実行要求などを用いることができる。条件の内容は、スレッド操作部41からの登録によって設定および変更する。
【0065】
このように、スレッド管理部に複数のビットマップを設けることでスレッドの起動に条件を設定することができ、またスレッド固有資源に複数のプログラムカウンタを設けることで、条件に応じたレジスタセットからスレッドを開始することができる。さらには、スレッド管理部に条件テーブルを備えることでより詳細な条件設定が可能となる。
【0066】
なお、図4ではプログラムカウンタ31を常にプログラムの実行状態に合わせたアドレスを記憶させ、スレッド操作部41によるアドレスの変更はプログラムカウンタ33のみにおこなっていたが、実行状態記憶用のプログラムカウンタが記憶するアドレスをスレッド操作部41によって変更可能としてもよい。
【0067】
実行状態記憶用のプログラムカウンタを変更可能とした構成を図7に示す。図7に示したスレッド固有資源21bは、プログラムの実行状態記憶用としてプログラムカウンタ31aを有する。スレッド操作部41は、このプログラムカウンタ21bの値を直接に書き換えることができる。その他の構成および動作は図4と同様であるので、同一の符号を付して説明を省略する。
【0068】
つぎに、スレッドの実行順序の優先順の設定について説明する。スレッド管理部11,11a,11bでは、スレッドの待機状態を単一のビットマップAによって管理し、スレッド間に優先順位は設定していなかった。スレッド間に優先順位を設ける場合におけるスレッド管理部の構成を図8に示す。
【0069】
図8において、スレッド管理部11cは、ビットマップA1およびビットマップA2、さらにビットマップCを備える。ビットマップA1およびビットマップA2は、それぞれスレッドの待機状態を登録する記憶部として機能する。スレッド管理部11,11a,11bにおけるビットマップAとの差は、ビットマップAが全てのスレッドの待機状態を登録するのに対し、ビットマップA1,A2は、それぞれ担当するスレッドが設定されていることである。
【0070】
ビットマップA1,A2が担当するスレッドは、ビットマップCによって割り当てられる。ビットマップCにおいて値が「0」であるスレッドの待機状態は、スレッドA1に登録され、ビットマップCにおいて値が「1」であるスレッドの待機状態は、ビットマップA2に登録される。
【0071】
具体的には、ビットマップCはスレッド0,2,4,6,7に対して値「0」を設定し、スレッド1,3,5に対して値「1」を設定している。したがって、スレッド0,2,4,6,7の待機状態はビットマップA1に登録され、ビットマップA2の待機状態はビットマップA2に登録されることとなる。ビットマップCの値の設定は、スレッド操作部41から任意におこなうことができる。
【0072】
スレッド管理部11cは、スレッド操作部41から切替要求があった場合に、ビットマップA1とビットマップA2からそれぞれ1つずつスレッドを選択する。その後、ビットマップA1から選択されたスレッドと、ビットマップA2から選択されたスレッドとを交互に実行する。なお、一方のビットマップにスレッドが登録されていなければ、同一のビットマップから連続して選択する。
【0073】
このように構成することで、待機中のスレッドが実行される確率を調整し、スレッド間の実行順序に重み付けをすることができる。また、重み付けの配分は、ビットマップCの設定によって調整することができる。
【0074】
なお、特定のスレッドを他のスレッドに対して常に優先して実行したい場合、一方のビットマップに登録されたスレッドを常に優先して選択すればよい。たとえば、ビットマップA1に待機状態として登録されたスレッドがある場合、ビットマップA2の登録状態に関わらず、ビットマップA1からスレッドを選択し、ビットマップA1に登録されたスレッドがない場合にビットマップA2に登録されたスレッドを選択することで、スレッド間に優先順位を設けることができる。
【0075】
上述してきたように、本実施の形態では、スレッドに対してあらかじめ固有のプログラムカウンタおよびレジスタセットを割り当て、スレッド固有の資源を切り替えて実行するようにしているので、OSや管理のためのスレッドを用いることなく、スレッドの切替を実現することができるとともに、スレッドの準備に要する時間を削減できる。したがって、マイクロコントローラの切替処理の効率化と処理速度の向上が実現できる。
【0076】
また、スレッドを固定することで、外部のモジュールなどがスレッドを指定して直接に実行要求を発行することができる。さらに、スレッドに対する複数のプログラムカウンタ割り当てや、スレッドの実行条件の設定によってスレッドの実行内容を任意に設定することができる。
【0077】
さらに、スレッドの待機状態を登録するビットマップを振り分けることで、スレッドの実行順序を管理することができる。
【0078】
(付記1)実行処理部が複数のスレッドを切り替えて実行するマルチスレッドコンピュータであって、
前記複数のスレッドの各々に対してあらかじめ固有に割り当てられ、すくなくともプログラムカウンタとレジスタセットとを有するスレッド固有資源と、
前記複数のスレッドのいずれかを指定した実行要求を受信した場合に、当該指定されたスレッドを待機状態にするスレッド管理部と、
前記実行処理部が実行するスレッドを前記スレッド管理部が待機状態としたスレッドから選択して切り替えるスレッド切替部と、
を備えたことを特徴とするマルチスレッドコンピュータ。
【0079】
(付記2)前記スレッド管理部は、前記実行処理部によるスレッドの実行結果として他のスレッドを指定した実行要求が出力された場合に、当該指定されたスレッドを待機状態にすることを特徴とする付記1に記載のマルチスレッドコンピュータ。
【0080】
(付記3)前記スレッド管理部は、外部からスレッドを指定した実行要求を受信した場合に、当該指定されたスレッドを待機状態にすることを特徴とする付記1または2に記載のマルチスレッドコンピュータ。
【0081】
(付記4)前記スレッド切替部は、前記実行処理部によるスレッドの実行結果としてスレッドの切替を要求する切替要求が出力された場合に、前記スレッドの選択および切替をおこなうことを特徴とする付記1,2または3に記載のマルチスレッドコンピュータ。
【0082】
(付記5)前記スレッド切替部は、前記実行処理部によるスレッドの実行において所定の命令の実行が一定時間以内に終了しない場合に、前記スレッドの選択および切替をおこなうことを特徴とする付記1〜4のいずれか一つに記載のマルチスレッドコンピュータ。
【0083】
(付記6)前記実行処理部は、スレッドの実行において所定の命令の実行が一定時間以内に終了しない場合に、当該命令にもとづいてスレッドの切替をおこなうか否かを判断し、前記スレッド切替部は前記実行処理部がスレッドの切替をおこなうと判断した場合に前記スレッドの選択および切替をおこなうことを特徴とする付記5に記載のマルチスレッドコンピュータ。
【0084】
(付記7)前記スレッド固有資源の各々は、複数のプログラムカウンタと、実行時に使用するプログラムカウンタを指定するプログラムカウンタ指定メモリとを備えたことを特徴とする付記1〜6のいずれか一つに記載のマルチスレッドコンピュータ。
【0085】
(付記8)前記スレッド固有資源の各々は、前記複数のプログラムカウンタとして、スレッドの実行状態に従って値が変化する第1のプログラムカウンタと、スレッドの実行状態に対して独立した値を有する第2のプログラムカウンタとを備えたことを特徴とする付記7に記載のマルチスレッドコンピュータ。
【0086】
(付記9)前記実行処理部は、前記第1のプログラムカウンタおよび/または前記第2のプログラムカウンタの値を書き換えることを特徴とする付記8に記載のマルチスレッドコンピュータ。
【0087】
(付記10)前記スレッド管理部は、前記実行要求が発生した場合に、当該実行要求が指定したスレッドを直ちに待機状態とするか、他のスレッドからの実行要求または外部からの実行要求がさらに発生した時点で待機状態とするかを選択することを特徴とする付記1〜9のいずれか一つに記載のマルチスレッドコンピュータ。
【0088】
(付記11)前記スレッド管理部は、実行要求が指定したスレッドを待機状態とするか否かの条件を記憶する条件設定部をさらに備えたことを特徴とする付記10に記載のマルチスレッドコンピュータ。
【0089】
(付記12)前記スレッド管理部は、前記スレッドの待機状態を記憶する記憶部を複数備え、待機状態の記憶にいずれの記憶部を用いるかをスレッドごとに設定し、前記スレッド切替部がスレッドの切替をおこなう場合に前記複数の記憶部のうちいずれかの記憶部を選択し、当該選択した記憶部から実行するスレッドを選択させることを特徴とする付記1〜11のいずれか一つに記載のマルチスレッドコンピュータ。
【0090】
(付記13)前記スレッド管理部は、前記複数の記憶部に優先順位を設定し、該優先順位にしたがって記憶部の選択をおこなうことを特徴とする付記12に記載のマルチスレッドコンピュータ。
【0091】
【発明の効果】
以上説明したように、本発明にかかるマルチスレッドコンピュータは、スレッドに対してプログラムカウンタとレジスタセットとをあらかじめ固定的に割り当て、実行要求があったスレッドを待機状態として記憶し、切替要求があった場合に待機状態にあるスレッドから次に実行するスレッドを選択して対応するスレッド固有資源の内容を実行処理部に供給するようにしているので、スレッドの準備に要する処理を削減してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0092】
また、本発明によればマルチスレッドコンピュータは、スレッドの実行結果として他のスレッドの実行を指定する実行要求が出力された場合に、指定されたスレッドを待機状態とし、次回の実行時の選択候補としているので、スレッドの新たな生成を含むスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0093】
また、本発明によればマルチスレッドコンピュータは、外部からスレッドを指定した実行要求を受信した場合に、指定されたスレッドを待機状態とし、次回の実行時の選択候補としているので、スレッドの管理を効率化し、処理速度を向上するとともに、外部から直接スレッドを起動可能なマルチスレッドコンピュータを提供することができるという効果を奏する。
【0094】
また、本発明によればマルチスレッドコンピュータは、スレッドの実行結果としてスレッドの切替を要求する切替要求が出力された場合に、待機状態にあるスレッドから次に実行するスレッドを選択し、スレッドの切替をおこなうので、スレッドの実行状態に応じたスレッドの切替をOSや管理用のスレッドを用いることなく実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0095】
また、本発明によればマルチスレッドコンピュータは、スレッドの実行時に処理が所定の時間内に終わらない場合に、待機状態にあるスレッドから次に実行するスレッドを選択し、スレッドの切替をおこなうので、処理の実行時間に応じたスレッドの切替をOSや管理用のスレッドを用いることなく実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0096】
また、本発明によればマルチスレッドコンピュータは、スレッドの実行時に処理が所定の時間内に終わらない場合に、処理の内容にもとづいてスレッドを切り替えるか否かを判定するので、処理内容に応じたスレッドの切替をOSや管理用のスレッドを用いることなく実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0097】
また、本発明によればマルチスレッドコンピュータは、各スレッドにたいして複数のプログラムカウンタを対応させ、実行時のプログラムカウンタを指定することでスレッドの開始位置を指定するので、スレッドの開始位置の選択を実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0098】
また、本発明によればマルチスレッドコンピュータは、スレッドの実行状態にしたがって値が変化する第1のプログラムカウンタを用いることで、スレッドを継続して実行するか、スレッドの実行状態に対して独立した値を有する第2のプログラムカウンタを用いることで指定の状態からスレッドを実行するかを選択するので、スレッドを継続して実行する場合と所定の開始位置から実行する場合との選択を実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0099】
また、本発明によればマルチスレッドコンピュータは、第1のプログラムカウンタおよび/または第2のプログラムカウンタを書き換えることで、スレッドの開始状態を設定することができるので、スレッドの開始位置の変更を実現してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0100】
また、本発明によればマルチスレッドコンピュータは、実行要求を発行する場合に、直ちに待機状態とするか、他のスレッドからの実行要求または外部からの実行要求が発生した時点で待機状態とするかを指定することができるので、スレッドを開始するための条件を設定してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0101】
また、本発明によればマルチスレッドコンピュータは、条件設定部にスレッドを待機状態にする条件を記憶させ、条件を満たしたときのみスレッドを待機状態とすることで、スレッドの実行に条件を設定することができるので、スレッドの実行条件を詳細に設定してスレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0102】
また、本発明によればマルチスレッドコンピュータは、複数の記憶部のいずれに待機状態を登録するかをスレッドごとに設定し、スレッドの切替時にいずれかの記憶部を選択し、選択した記憶部に登録されたスレッドから実行するスレッドを決定することで、スレッドの実行順序に重み付けを設定することができるので、スレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【0103】
また、本発明によればマルチスレッドコンピュータは、優先順位を設けた複数の記憶部のいずれに待機状態を登録するかをスレッドごとに設定し、スレッドの切替時に優先順位の高い記憶部を選択し、選択した記憶部に登録されたスレッドから実行するスレッドを決定することで、スレッドの実行順序に優先順位を設定することができるので、スレッドの管理を効率化し、処理速度を向上したマルチスレッドコンピュータを提供することができるという効果を奏する。
【図面の簡単な説明】
【図1】本実施の形態にかかるマイクロコントローラの概要構成を示す概要構成図である。
【図2】図1に示したマイクロコントローラにおけるスレッドの管理を説明する説明図である。
【図3】複数のプログラムカウンタを有するスレッド固有資源を説明する説明図である。
【図4】スレッド固有資源が複数のプログラムカウンタを有する場合の処理動作について説明する説明図である。
【図5】スレッドに対する実行要求の条件分けを説明する説明図である。
【図6】条件テーブルを設けたスレッド管理部を説明する説明図である。
【図7】実行状態記憶用のプログラムカウンタを変更可能とする構成を示す図である。
【図8】スレッド間に優先順位を設けたスレッド管理部の構成を示す図である。
【符号の説明】
1 マイクロコントローラ
2 バス
3〜5 モジュール
11,11a,11b,11c スレッド管理部
12 スレッド切替部
13 デコーダ
14 実行部
15 書き戻し制御部
21〜24,21a スレッド固有資源
31,33 プログラムカウンタ
32 レジスタセット
34 プログラムカウンタ指定メモリ
41 スレッド操作部
42 論理演算ユニット
43 ロード/ストア
51 条件テーブル
A,A1,A2,B,C ビットマップ
Claims (9)
- 実行処理部が複数のスレッドを切り替えて実行するマルチスレッドコンピュータであって、
前記複数のスレッドの各々に対してあらかじめ固有に割り当てられ、すくなくともプログラムカウンタとレジスタセットとを有するスレッド固有資源と、
前記複数のスレッドのいずれかを指定した実行要求を受信した場合に、当該指定されたスレッドを待機状態にするスレッド管理部と、
前記実行処理部が実行するスレッドを前記スレッド管理部が待機状態としたスレッドから選択して切り替えるスレッド切替部と、
を備えたことを特徴とするマルチスレッドコンピュータ。 - 前記スレッド管理部は、前記実行処理部によるスレッドの実行結果として他のスレッドを指定した実行要求が出力された場合に、当該指定されたスレッドを待機状態にすることを特徴とする請求項1に記載のマルチスレッドコンピュータ。
- 前記スレッド管理部は、外部からスレッドを指定した実行要求を受信した場合に、当該指定されたスレッドを待機状態にすることを特徴とする請求項1または2に記載のマルチスレッドコンピュータ。
- 前記スレッド切替部は、前記実行処理部によるスレッドの実行結果としてスレッドの切替を要求する切替要求が出力された場合に、前記スレッドの選択および切替をおこなうことを特徴とする請求項1,2または3に記載のマルチスレッドコンピュータ。
- 前記スレッド切替部は、前記実行処理部によるスレッドの実行において所定の命令の実行が一定時間以内に終了しない場合に、前記スレッドの選択および切替をおこなうことを特徴とする請求項1〜4のいずれか一つに記載のマルチスレッドコンピュータ。
- 前記実行処理部は、スレッドの実行において所定の命令の実行が一定時間以内に終了しない場合に、当該命令にもとづいてスレッドの切替をおこなうか否かを判断し、前記スレッド切替部は前記実行処理部がスレッドの切替をおこなうと判断した場合に前記スレッドの選択および切替をおこなうことを特徴とする請求項5に記載のマルチスレッドコンピュータ。
- 前記スレッド管理部は、前記実行要求が発生した場合に、当該実行要求が指定したスレッドを直ちに待機状態とするか、他のスレッドからの実行要求または外部からの実行要求がさらに発生した時点で待機状態とするかを選択することを特徴とする請求項1〜6のいずれか一つに記載のマルチスレッドコンピュータ。
- 前記スレッド管理部は、実行要求が指定したスレッドを待機状態とするか否かの条件を記憶する条件設定部をさらに備えたことを特徴とする請求項7に記載のマルチスレッドコンピュータ。
- 前記スレッド管理部は、前記スレッドの待機状態を記憶する記憶部を複数備え、待機状態の記憶にいずれの記憶部を用いるかをスレッドごとに設定し、前記スレッド切替部がスレッドの切替をおこなう場合に前記複数の記憶部のうちいずれかの記憶部を選択し、当該選択した記憶部から実行するスレッドを選択させることを特徴とする請求項1〜8のいずれか一つに記載のマルチスレッドコンピュータ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003019246A JP2004234123A (ja) | 2003-01-28 | 2003-01-28 | マルチスレッドコンピュータ |
US10/739,016 US20040148606A1 (en) | 2003-01-28 | 2003-12-19 | Multi-thread computer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003019246A JP2004234123A (ja) | 2003-01-28 | 2003-01-28 | マルチスレッドコンピュータ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004234123A true JP2004234123A (ja) | 2004-08-19 |
Family
ID=32732853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003019246A Pending JP2004234123A (ja) | 2003-01-28 | 2003-01-28 | マルチスレッドコンピュータ |
Country Status (2)
Country | Link |
---|---|
US (1) | US20040148606A1 (ja) |
JP (1) | JP2004234123A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007049610A1 (ja) * | 2005-10-25 | 2007-05-03 | Mitsubishi Electric Corporation | 画像処理装置 |
JP2007133456A (ja) * | 2005-11-08 | 2007-05-31 | Hitachi Ltd | 半導体装置 |
JP2008047145A (ja) * | 2005-03-18 | 2008-02-28 | Marvell World Trade Ltd | デュアルスレッドプロセッサ |
US8560812B2 (en) | 2009-06-09 | 2013-10-15 | Toyota Jidosha Kabushiki Kaisha | Device for executing an instruction using a target execution speed |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7051070B2 (en) | 2000-12-18 | 2006-05-23 | Timothy Tuttle | Asynchronous messaging using a node specialization architecture in the dynamic routing network |
US8505024B2 (en) * | 2000-12-18 | 2013-08-06 | Shaw Parsing Llc | Storing state in a dynamic content routing network |
US7669203B2 (en) * | 2003-12-19 | 2010-02-23 | Intel Corporation | Virtual multithreading translation mechanism including retrofit capability |
US20050183065A1 (en) * | 2004-02-13 | 2005-08-18 | Wolczko Mario I. | Performance counters in a multi-threaded processor |
CN101057476B (zh) * | 2004-08-17 | 2014-01-08 | 肖分析有限公司 | 用实时路由网络递送个人化内容的方法和装置 |
JP5162240B2 (ja) * | 2004-08-17 | 2013-03-13 | ショー パーシング リミティド ライアビリティ カンパニー | リアルタイム配信ネットワークによって個別コンテンツを配信する技法 |
WO2006023506A1 (en) * | 2004-08-17 | 2006-03-02 | Shaw Parsing Llc | Modular event-driven processing |
US20070067605A1 (en) * | 2005-08-17 | 2007-03-22 | Jung-Lin Chang | Architecture of a parallel-processing multi-microcontroller system and timing control method thereof |
KR100837400B1 (ko) * | 2006-07-20 | 2008-06-12 | 삼성전자주식회사 | 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치 |
US8046775B2 (en) | 2006-08-14 | 2011-10-25 | Marvell World Trade Ltd. | Event-based bandwidth allocation mode switching method and apparatus |
US7941643B2 (en) * | 2006-08-14 | 2011-05-10 | Marvell World Trade Ltd. | Multi-thread processor with multiple program counters |
US7904704B2 (en) * | 2006-08-14 | 2011-03-08 | Marvell World Trade Ltd. | Instruction dispatching method and apparatus |
US8261049B1 (en) | 2007-04-10 | 2012-09-04 | Marvell International Ltd. | Determinative branch prediction indexing |
US8832702B2 (en) | 2007-05-10 | 2014-09-09 | Freescale Semiconductor, Inc. | Thread de-emphasis instruction for multithreaded processor |
US20110191775A1 (en) * | 2010-01-29 | 2011-08-04 | Microsoft Corporation | Array-based thread countdown |
CN112860395B (zh) * | 2021-01-25 | 2022-03-25 | 中国人民解放军军事科学院国防科技创新研究院 | 用于gpu的多任务调度方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2882475B2 (ja) * | 1996-07-12 | 1999-04-12 | 日本電気株式会社 | スレッド実行方法 |
JP2970553B2 (ja) * | 1996-08-30 | 1999-11-02 | 日本電気株式会社 | マルチスレッド実行方法 |
US6073159A (en) * | 1996-12-31 | 2000-06-06 | Compaq Computer Corporation | Thread properties attribute vector based thread selection in multithreading processor |
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
US6018759A (en) * | 1997-12-22 | 2000-01-25 | International Business Machines Corporation | Thread switch tuning tool for optimal performance in a computer processor |
US6854075B2 (en) * | 2000-04-19 | 2005-02-08 | Hewlett-Packard Development Company, L.P. | Simultaneous and redundantly threaded processor store instruction comparator |
US6865579B1 (en) * | 2000-08-28 | 2005-03-08 | Sun Microsystems, Inc. | Simplified thread control block design |
-
2003
- 2003-01-28 JP JP2003019246A patent/JP2004234123A/ja active Pending
- 2003-12-19 US US10/739,016 patent/US20040148606A1/en not_active Abandoned
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008047145A (ja) * | 2005-03-18 | 2008-02-28 | Marvell World Trade Ltd | デュアルスレッドプロセッサ |
JP4610593B2 (ja) * | 2005-03-18 | 2011-01-12 | マーベル ワールド トレード リミテッド | デュアルスレッドプロセッサ |
WO2007049610A1 (ja) * | 2005-10-25 | 2007-05-03 | Mitsubishi Electric Corporation | 画像処理装置 |
JPWO2007049610A1 (ja) * | 2005-10-25 | 2009-04-30 | 三菱電機株式会社 | 画像処理装置 |
JP2007133456A (ja) * | 2005-11-08 | 2007-05-31 | Hitachi Ltd | 半導体装置 |
US8560812B2 (en) | 2009-06-09 | 2013-10-15 | Toyota Jidosha Kabushiki Kaisha | Device for executing an instruction using a target execution speed |
Also Published As
Publication number | Publication date |
---|---|
US20040148606A1 (en) | 2004-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004234123A (ja) | マルチスレッドコンピュータ | |
US6820187B2 (en) | Multiprocessor system and control method thereof | |
US7290261B2 (en) | Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor | |
US6631462B1 (en) | Memory shared between processing threads | |
KR101136610B1 (ko) | 시퀀서 어드레스 관리 | |
US8171267B2 (en) | Method and apparatus for migrating task in multi-processor system | |
US7412590B2 (en) | Information processing apparatus and context switching method | |
JP2004272894A (ja) | グラフィックス処理ユニットのマルチスレッド式カーネル | |
EP3855318B1 (en) | Apparatus and method for configuring sets of interrupts | |
JP2004252983A (ja) | コプロセッサの性能を強化するシステムおよび方法 | |
US7873961B2 (en) | Supervisory operating system for running multiple child operating systems simultaneously and optimizing resource usage | |
JP2005284749A (ja) | 並列処理コンピュータ | |
JP2000330806A (ja) | 計算機システム | |
JP2002533807A (ja) | 割込み/ソフトウエア制御スレッド処理 | |
JP2011076639A (ja) | オペレーティング・システム介入なしにos隔離シーケンサー上でスレッドをスケジューリングする機構 | |
JP2003167737A (ja) | スタック使用方法 | |
JP2010044784A (ja) | システムにおける要求のスケジューリング | |
WO2023103287A1 (zh) | 指令执行方法、处理器以及电子装置 | |
US20130024488A1 (en) | Semiconductor device | |
JP2001249808A (ja) | 情報処理装置 | |
JP3088303B2 (ja) | キャッシュ・メモリ・バンク制御装置 | |
JP3019317B2 (ja) | プロセススケジューリング方法 | |
JP3991443B2 (ja) | タスク切り替え方法及びデータ処理装置 | |
JP2002163121A (ja) | 仮想マルチスレッドプロセッサ及びスレッド実行方法 | |
JP4631442B2 (ja) | プロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051222 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070912 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071016 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080408 |