(57)【要約】【課題】処理を確実に実行すると共に、処理効率を向上させることが可能なマルチスレッド処理装置を提供すること。【解決手段】複数のスレッドがハードウエアを部分的に共有して処理を行なうマルチスレッド処理装置であって、前記複数のスレッドのうちいずれかが作動するように制御する作動制御手段と、前記複数のスレッドのうちいずれかに排他的アクセス権を取得させる排他的アクセス権設定手段と、を備え、前記作動制御手段は、前記複数のスレッドのうち他のスレッドが前記排他的アクセス権を取得していることにより待ち状態となるスレッドから他のスレッドに、作動時間の少なくとも一部を譲渡するように作動制御を行うことを特徴とする、マルチスレッド処理装置。【選択図】図５
2011170619.tif 000002
【特許請求の範囲】
【請求項１】
複数のスレッドがハードウエアを部分的に共有して処理を行なうマルチスレッド処理装置であって、
前記複数のスレッドのうちいずれかが作動するように制御する作動制御手段と、
前記複数のスレッドのうちいずれかに排他的アクセス権を取得させる排他的アクセス権設定手段と、を備え、
前記作動制御手段は、前記複数のスレッドのうち他のスレッドが前記排他的アクセス権を取得していることにより待ち状態となるスレッドから他のスレッドに、作動時間の少なくとも一部を譲渡するように作動制御を行うことを特徴とする、
マルチスレッド処理装置。
【請求項２】
請求項１に記載のマルチスレッド処理装置であって、
前記作動制御手段は、前記待ち状態となるスレッドから他のスレッドに、当該回の作動時間の全部を譲渡するように作動制御を行うことを特徴とする、
マルチスレッド処理装置。
【請求項３】
請求項１又は２に記載のマルチスレッド処理装置であって、
前記作動制御手段は、前記待ち状態となるスレッドから前記排他的アクセス権を取得しているスレッドに、作動時間の少なくとも一部を譲渡するように作動制御を行うことを特徴とする、
マルチスレッド処理装置。
【請求項４】
請求項１又は２に記載のマルチスレッド処理装置であって、
前記作動制御手段は、前記待ち状態となるスレッドから他の特定のスレッドに、作動時間の少なくとも一部を譲渡するように作動制御を行うことを特徴とする、
マルチスレッド処理装置。
【請求項５】
請求項１又は２に記載のマルチスレッド処理装置であって、
前記作動制御手段は、前記待ち状態となるスレッドから当該待ち状態となるスレッドを除く前記複数のスレッドから順に選択されたスレッドに、作動時間の少なくとも一部を譲渡するように作動制御を行うことを特徴とする、
マルチスレッド処理装置。
【請求項６】
車両に搭載され、各スレッドが車載機器制御のための命令を実行することを特徴とする、請求項１ないし５のいずれか１項に記載のマルチスレッド処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプログラムを独立に実行可能なマルチスレッド処理装置に関し、特に、複数のスレッドがハードウエアを部分的に共有して処理を行なうハードウエア・マルチスレッディング機能を有するマルチスレッド処理装置に関する。
【背景技術】
【０００２】
近年、プロセッサの性能向上に伴い、複数の機能を一つのプロセッサにより実現させるための技術が研究・実用化されている。例えば、車両に搭載される車載制御装置の分野では、ある車載機器を制御する制御装置と他の車載機器を制御する制御装置（例えば変速機の制御装置とエンジンの制御装置等）を統合して、コンピュータ・ハードウエアを縮小し、コストや重量の低減を図る動きが見られる。
【０００３】
こうしたハードウエア統合の一手法として、ハードウエア・マルチスレッディングと称されるものが知られている。ハードウエア・マルチスレッディングは、命令の出所や演算結果の格納場所を異にする複数のスレッドが、命令デコーダや演算回路等のハードウエアを共有して処理を行なうものである。ハードウエア・マルチスレッディングにおいては、異なるスレッドが同時に処理を行なうことは困難であるため、各スレッドに帯域を設定する処理（スケジューリング）が行われている。帯域とは、各スレッドがハードウエアを使用可能な時間の割合、すなわち各スレッドの作動割合を意味する。例えば、スレッド数が３（＃０〜＃２）で帯域が１：１：１であれば、スレッドはコンピュータの内部クロックが１クロック（又は複数クロック）経過する毎に切り替えられる。
【０００４】
ハードウエア・マルチスレッディングでは、一般的に、共有メモリに代表される共有資源にアクセスしているスレッドが、他のスレッドが同じ共有資源にアクセスしないように制御している。このような排他制御は、セマフォ等と称されている。
【０００５】
また、これに関連したプロセス制御装置についての発明が開示されている（例えば、特許文献１参照）。この装置では、プロセスがＣＰＵ目標時間までＣＰＵを使い切っているかどうかに基づいて、資源の解放を制御している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−２１１３８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、排他制御が行われるハードウエア・マルチスレッディングにおいては、共有資源へのアクセスが競合した場合、後にアクセス要求したスレッドが待ち状態となり、プロセッサの効率が低下するという課題が存在する。
【０００８】
図１は、係る課題を説明するための説明図である。各スレッドは、１クロックずつ作動時間が割り当てられている。図中、「get」は共有資源への排他的アクセス権取得であり、「req」は当該排他的アクセス権取得要求であり、「run」は共有資源への排他的アクセス権を取得した状態における処理であり、「rel」は共有資源への排他的アクセス権解放であり、「wt」は待ち状態を示している。
【０００９】
図示するように、スレッド＃０が共有資源への排他的アクセス権を取得している間、共有資源への排他的アクセス権取得要求を行ったスレッド＃１が待ち状態となっている。この待ち状態では、いずれのスレッドも処理を行うことができないため、処理効率の低下を招くことになる。
【００１０】
なお、上記特許文献１に記載の装置では、共有資源へのアクセス権の解放を強制的に行う場合があるため、処理が確実に実行されないおそれがある。
【００１１】
本発明はこのような課題を解決するためのものであり、処理を確実に実行すると共に、処理効率を向上させることが可能なマルチスレッド処理装置を提供することを、主たる目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するための本発明の一態様は、
複数のスレッドがハードウエアを部分的に共有して処理を行なうマルチスレッド処理装置であって、
前記複数のスレッドのうちいずれかが作動するように制御する作動制御手段と、
前記複数のスレッドのうちいずれかに排他的アクセス権を取得させる排他的アクセス権設定手段と、を備え、
前記作動制御手段は、前記複数のスレッドのうち他のスレッドが前記排他的アクセス権を取得していることにより待ち状態となるスレッドから他のスレッドに、作動時間の少なくとも一部を譲渡するように作動制御を行うことを特徴とする、
マルチスレッド処理装置である。
【００１３】
この本発明の一態様によれば、複数のスレッドのうち他のスレッドが前記排他的アクセス権を取得していることにより待ち状態となるスレッドから他のスレッドに、作動時間の少なくとも一部を譲渡するように作動制御を行うため、処理を確実に実行すると共に、処理効率を向上させることができる。
【００１４】
本発明の一態様において、
前記作動制御手段は、前記待ち状態となるスレッドから他のスレッドに、当該回の作動時間の全部を譲渡するように作動制御を行うことを特徴とするものとしてもよい。
【００１５】
また、本発明の一態様において、
前記作動制御手段は、前記待ち状態となるスレッドから前記排他的アクセス権を取得しているスレッドに、作動時間の少なくとも一部を譲渡するように作動制御を行うことを特徴とするものとしてもよい。
【００１６】
また、本発明の一態様において、
前記作動制御手段は、前記待ち状態となるスレッドから他の特定のスレッドに、作動時間の少なくとも一部を譲渡するように作動制御を行うことを特徴とするものとしてもよい。
【００１７】
また、本発明の一態様において、
前記作動制御手段は、前記待ち状態となるスレッドから当該待ち状態となるスレッドを除く前記複数のスレッドから順に選択されたスレッドに、作動時間の少なくとも一部を譲渡するように作動制御を行うことを特徴とするものとしてもよい。
【００１８】
また、本発明の一態様において、
車両に搭載され、各スレッドが車載機器制御のための命令を実行することを特徴とするものとしてもよい。
【発明の効果】
【００１９】
本発明によれば、処理を確実に実行すると共に、処理効率を向上させることが可能なマルチスレッド処理装置を提供することができる。
【図面の簡単な説明】
【００２０】
【図１】排他制御が行われるハードウエア・マルチスレッディングにおいて、共有資源へのアクセスが競合した場合、後にアクセス要求したスレッドが待ち状態となり、プロセッサの効率が低下するという課題を説明するための説明図である。
【図２】本発明の第１実施例に係るマルチスレッド処理装置１のシステム構成例である。
【図３】各スレッドが命令を処理するのに先立って、ＯＳ等により実行される処理の流れを示すフローチャートである。
【図４】各スレッドが命令を処理した後に、ＯＳ等により実行される処理の流れを示すフローチャートである。
【図５】図３及び図４で示した処理を行う結果として実現される、各スレッドの命令実行状況を示すタイミングチャートである。
【図６】スレッド＃１がスレッド＃２に帯域を譲渡するように予め規定されている場合の、各スレッドの命令実行状況を示すタイミングチャートである。
【図７】スレッド＃１がスレッド＃３に帯域を譲渡するように予め規定されている場合の、各スレッドの命令実行状況を示すタイミングチャートである。
【図８】第３実施例における、各スレッドの命令実行状況を示すタイミングチャートである。
【発明を実施するための形態】
【００２１】
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
【実施例】
【００２２】
＜第１実施例＞
以下、図面を参照し、本発明の第１実施例に係るマルチスレッド処理装置１について説明する。マルチスレッド処理装置１は、例えば車両に搭載され、各スレッドが種々の車載機器制御のための命令を実行する制御装置に、好適に適用される。後述の第２及び第３実施例についても同様である。
【００２３】
車載機器制御の例としては、例えばエンジン制御、ブレーキ制御、パワーステアリング等を制御するステアリング制御、ドアロック等を制御するボデー制御、ＶＳＣ（Vehicle  Stability  Control）やＶＤＩＭ（Vehicle  Dynamics  Integrated  Management）等の車両安定化制御、ＡＣＣ（Adaptive  Cruise  Control）等の運転支援制御、ナビゲーション制御等が挙げられる。
【００２４】
［構成］
図２は、本発明の第１実施例に係るマルチスレッド処理装置１のシステム構成例である。マルチスレッド処理装置１は、主要な構成として、ＲＯＭ（Read  Only  Memory）１０と、ＰＣ（プログラムカウンタ）１２と、命令Ｑｕｅｕｅ１４と、汎用レジスタ１６と、ＥＸＵ（演算ユニット）１８と、スケジューラ２０と、を備える。
【００２５】
ＲＯＭ１０には、マルチスレッド処理装置１の各スレッドが実行する一単位の命令が複数個格納されている。
【００２６】
ここで、スレッドとは、ハードウエアを部分的に共有して処理を行なう仮想的な処理主体をいい、本実施例の場合、ＰＣ１２、汎用レジスタ１６、供給されるユーザ／ＯＳリソース２２はスレッド毎に用意されているが、それ以外のＲＯＭ１０、命令Ｑｕｅｕｅ１４、ＥＸＵ１８、及びデータバス３２は各スレッドで共用される。以下の説明では、スレッドが４個設定されるものとし、これらをスレッド＃０〜＃３と称する。
【００２７】
スレッド＃０は、主として、ＰＣ１２のうちスレッド＃０に相当するものに従ってＲＯＭ１０から読み出された命令が命令Ｑｕｅｕｅ１４に格納され、次いで図示しない命令デコーダによって解読されて汎用レジスタ１６のうちスレッド＃０に相当するものに格納され、これがＥＸＵ１８により実行される命令の流れをいう。他のスレッドについても同様である。
【００２８】
なお、ユーザ／ＯＳリソース２２は、各スレッドに与えられる固有の演算対象、パラメータ等を含んでいる。
【００２９】
スレッドの切り替えは、図示しないＯＳ（Operating  System）の指示に従って、スケジューラ２０によって行われる。
【００３０】
スケジューラ２０は、内部クロックに応じて作動し、スレッド＃０〜＃３に対応して設定されているＰＣ１２のアドレスを、メモリバスを介してＲＯＭ１０に出力し、ＲＯＭ１０から命令Ｑｕｅｕｅ１４に命令を順次読み出す。命令Ｑｕｅｕｅ１４に格納された一連の命令には、スレッド番号が付与されている。
【００３１】
命令Ｑｕｅｕｅ１４に格納された命令は、図示しない命令デコーダによって解読され、汎用レジスタ１６に格納される。汎用レジスタ１６は、ＥＸＵ１８の演算結果、データバス３２を介して読み出されたデータ等を一時的に記憶する一群のレジスタである。命令デコーダによる解読結果は、例えば、演算の種別、１以上のソースオペランド、結果の格納場所等である。
【００３２】
ＥＸＵ１８は、演算の種類に応じて、汎用レジスタ１６に記憶されたデータに演算を施す。演算の内容は、ストア、ロード、加算、乗算、除算、分岐等である。例えばストア命令の場合、ＥＸＵ１８は演算したアドレスを指定してデータバス３２を介してＲＡＭ３０等からデータを読み出す。
【００３３】
また、ＥＸＵ１８は、加算等の演算結果、又は、データバス３２を介してＲＡＭ３０等から読み出したデータを、汎用レジスタ１６にライトバックする。
【００３４】
スケジューラ２０は、スレッドの切り替えを、例えばＯＳから与えられた初期配分に基づいて実行開始する。初期配分は、例えばスレッド＃０：＃１：＃２：＃３＝１：１：１：１のような形式で与えられる。このようなスレッド毎の作動割合（時間配分）は、「帯域」と称される。以下の説明では、スレッドの作動割合を、必要に応じて帯域と表記する。
【００３５】
また、マルチスレッド処理装置１は、排他制御をおこなうための共有レジスタとして、セマフォ用レジスタ４０を備える。セマフォ用レジスタ４０には、後述するセマフォ使用フラグが格納される。
【００３６】
［処理効率を向上させるための制御］
以下、図１で説明したような課題を解決するための特徴的な制御について説明する。
【００３７】
図３は、各スレッドが命令を処理するのに先立って、ＯＳ等により実行される処理の流れを示すフローチャートである。
【００３８】
まず、これから実行される命令（命令Ｑｕｅｕｅ１４に格納された命令のうち優先順位が最も高い命令）がセマフォ取得要求を含むか否かを判定する（Ｓ１００）。「命令がセマフォ取得要求を伴う」とは、当該命令がＲＡＭ３０等の共有資源への排他的アクセス権を取得するための要求を含む（或いは当該要求のみである）ことを意味する。
【００３９】
これから実行される命令がセマフォ取得要求を含まない場合は、何も処理を行わずに本フローを終了する。この場合、命令Ｑｕｅｕｅ１４に格納された命令のうち優先順位が最も高い命令が、内部クロックの立ち上がり等のタイミングで実行される。
【００４０】
これから実行される命令がセマフォ取得要求を含む場合は、セマフォ使用フラグがオン状態に設定されているか否かを判定する（Ｓ１０２）。セマフォ使用フラグとは、セマフォ用レジスタ４０に設定されるフラグであり、いずれかのスレッドが共有資源への排他的アクセス権を取得している場合にオン状態に設定される。
【００４１】
なお、セマフォ使用フラグは、セマフォ毎、すなわち、共有資源が複数個存在する場合には共有資源毎に設定される。例えば、ＲＡＭ３０の他に、他のバスを介して接続された共有資源（メモリや周辺回路等）が存在する場合、スレッド＃０がＲＡＭ３０への排他的アクセス権を確保していても、スレッド＃１が他の資源にアクセスするのは許容されるからである。
【００４２】
セマフォ使用フラグがオフ状態に設定されている場合は、他のスレッドが共有資源への排他的アクセス権を取得していないことを意味する。従って、これから命令を実行するスレッドの識別番号と共に、セマフォ使用フラグをオン状態に設定する（Ｓ１０４）。
【００４３】
一方、セマフォ使用フラグがオン状態に設定されている場合は、他のスレッドが共有資源への排他的アクセス権を取得していることを意味する。従って、以下の処理を実行する（Ｓ１０６〜Ｓ１１０）。
【００４４】
まず、これから命令を実行するスレッドの帯域を削減する（Ｓ１０６）。本処理は、例えば１００％削減であってもよいが、一部削減であっても構わない。以下の説明では、１００％削減を行うものとして説明する。
【００４５】
次に、削減したスレッドの帯域を他のスレッドに譲渡する（Ｓ１０８）。本実施例では、削減したスレッドの帯域を、共有資源への排他的アクセス権を確保しているスレッドに譲渡するものとする。
【００４６】
そして、リソース振り替えフラグをオン状態に設定して（Ｓ１１０）、本フローを終了する。リソース振り替えフラグは、リソース振り替えフラグ設定用レジスタ４２にスレッド毎に設定されるフラグであり、各スレッドが帯域を削減された状態であるか否かを示している。あるスレッドについてリソース振り替えフラグがオン状態である場合、当該スレッドは帯域を削減された状態であることが判る。
【００４７】
なお、リソース振り替えフラグは、セマフォ使用フラグと同様、セマフォ毎、すなわち、共有資源が複数個存在する場合には共有資源毎に設定される。従って、共有資源の個数×スレッド数のマトリクス状のデータがリソース振り替えフラグ設定用レジスタ４２に格納される。
【００４８】
こうしてあるスレッドについて帯域が削減されると、１００％削減である場合は、当該スレッドの命令実行がスキップされて次のスレッドの作動に移行する。この場合、ＯＳ等は、リソース振り替えフラグを参照するのみで、当該スレッドに関する図３のフローの事項を省略することができる。また、一部削減である場合は、セマフォ確認等の処理のみが実行されることになる。
【００４９】
図４は、各スレッドが命令を処理した後に、ＯＳ等により実行される処理の流れを示すフローチャートである。
【００５０】
まず、実行された命令がセマフォ解放要求を含むか否かを判定する（Ｓ２００）。「命令がセマフォ解放要求を伴う」とは、当該命令がＲＡＭ３０等の共有資源へのアクセスを終了し、排他的アクセス権を放棄するための要求が含まれる（或いは、当該要求のみである）ことを意味する。
【００５１】
実行された命令がセマフォ解放要求を含まない場合は、何も処理を行わずに本フローを終了する。この場合、図３で説明したフローが実行され、次に作動するスレッドによって命令が処理されることになる。
【００５２】
実行された命令がセマフォ解放要求を含む場合は、セマフォ使用フラグをオフ状態に変更する（Ｓ２０２）。
【００５３】
そして、リソース振り替えフラグ設定用レジスタ４２を参照し、リソース振り替えフラグが設定されているか否かを判定する（Ｓ２０４）。リソース振り替えフラグが設定されていない場合は、何も処理を行わずに本フローを終了する。
【００５４】
リソース振り替えフラグが設定されている場合は、以下の処理を実行する（Ｓ２０６〜Ｓ２１０。）
帯域が削減されている全てのスレッドの帯域を初期状態に戻す（Ｓ２０６）。
【００５５】
次に、帯域が譲渡されていたスレッド（今回、命令実行が終了したスレッドが該当する）の帯域を初期状態に戻す（Ｓ２０８）。
【００５６】
そして、リソース振り替えフラグをオフ状態に設定して（Ｓ２１０）、本フローを終了する。
【００５７】
図５は、図３及び図４で示した処理を行う結果として実現される、各スレッドの命令実行状況を示すタイミングチャートである。本図は、図１に例示した基本的なスレッド切り替えに対して、図３及び図４で示した処理を行った結果を示している。なお、図中「rep」は帯域譲渡を示している。
【００５８】
上記の如き処理を行った結果、スレッド＃１の帯域がスレッド＃０に譲渡されている。この結果、スレッド＃１の命令実行が２回スキップされ、その間にスレッド＃０が図１の例に比して２周期分多く命令実行を行っている。
【００５９】
これによって、スレッド＃０の命令実行が早く終了し、スレッド＃１が共有資源への排他的アクセス権を取得するのが、図１の例に比して２周期分早くなる。
【００６０】
これらにより、本実施例のマルチスレッド処理装置１では、図３や図４で説明した制御を行わないものに比して、処理効率を向上させることができる。また、強制的に共有資源への排他的アクセス権を解放させるような制御を行っていないため、各スレッドは処理を確実に実行することができる。
【００６１】
＜第２実施例＞
以下、図面を参照し、本発明の第２実施例に係るマルチスレッド処理装置２について説明する。
【００６２】
［構成］
マルチスレッド処理装置２は、ハードウエア構成において第１実施例に係るマルチスレッド処理装置１と共通するため、各構成要素についての説明は省略する。
【００６３】
［処理効率を向上させるための制御］
以下、第２実施例における特徴的な制御について説明する。マルチスレッド処理装置２は、図３におけるＳ１０８の処理を除き、第１実施例と同様の制御を行う。従って、当該処理を除き、図３及び図４を参照することとし、説明を省略する。
【００６４】
本実施例では、削減したスレッドの帯域を、他の特定のスレッドに譲渡する。すなわち、削減されるスレッドと、譲渡されるスレッドの関係が予めテーブルとして規定されており、このテーブルに従って譲渡先が一意に決定される。
【００６５】
図６は、スレッド＃１がスレッド＃２に帯域を譲渡するように予め規定されている場合の、各スレッドの命令実行状況を示すタイミングチャートである。図示するように、スレッド＃１の帯域がスレッド＃２に譲渡されている。この結果、スレッド＃１の命令実行が４回スキップされ、その間にスレッド＃２が図１の例に比して４周期分多く命令実行を行っている。
【００６６】
これによって、図１の例に比してスレッド＃２の命令実行が早く終了する。スレッド＃１が共有資源への排他的アクセス権を取得するタイミングは図１に比して早くなる訳ではないが、マルチスレッド処理装置２全体としては処理効率が向上している。
【００６７】
また、図７は、スレッド＃１がスレッド＃３に帯域を譲渡するように予め規定されている場合の、各スレッドの命令実行状況を示すタイミングチャートである。図示するように、スレッド＃１の帯域がスレッド＃２に譲渡されている。この結果、スレッド＃１の命令実行が４回スキップされ、その間にスレッド＃２が図１の例に比して４周期分多く命令実行を行っている。
【００６８】
これによって、図１の例に比してスレッド＃３の命令実行が早く終了する。スレッド＃１が共有資源への排他的アクセス権を取得するタイミングは図１に比して早くなる訳ではないが、マルチスレッド処理装置２全体としては処理効率が向上している。
【００６９】
これらにより、本実施例のマルチスレッド処理装置２では、帯域譲渡に関する制御を行わないものに比して、処理効率を向上させることができる。また、強制的に共有資源への排他的アクセス権を解放させるような制御を行っていないため、各スレッドは処理を確実に実行することができる。
【００７０】
＜第３実施例＞
以下、図面を参照し、本発明の第３実施例に係るマルチスレッド処理装置３について説明する。
【００７１】
［構成］
マルチスレッド処理装置３は、ハードウエア構成において第１実施例に係るマルチスレッド処理装置１と共通するため、各構成要素についての説明は省略する。
【００７２】
［処理効率を向上させるための制御］
以下、第３実施例における特徴的な制御について説明する。マルチスレッド処理装置３は、図３におけるＳ１０８の処理を除き、第１実施例と同様の制御を行う。従って、当該処理を除き、図３及び図４を参照することとし、説明を省略する。
【００７３】
本実施例では、削減したスレッドの帯域を、当該スレッドを除く複数のスレッドから順に選択されたスレッドに譲渡する。例えば、スレッド＃１の帯域が１００％削減される場合、まずスレッド＃０に帯域が譲渡され、次にスレッド＃２に帯域が譲渡され、次にスレッド＃３に帯域が譲渡される。そして、これをスレッド＃１に関するリソース振り替えフラグがオフ状態に設定されるまで繰り返し実行する。
【００７４】
図８は、第３実施例における、各スレッドの命令実行状況を示すタイミングチャートである。図示するように、スレッド＃１の帯域がスレッド＃０→スレッド＃２→スレッド＃３の順に譲渡されている。この結果、スレッド＃１の命令実行が３回スキップされ、その間にスレッド＃０、＃２、＃３が図１の例に比して１周期分多く命令実行を行っている。
【００７５】
これによって、図１の例に比してスレッド＃０、＃２、＃３の命令実行が早く終了する。また、スレッド＃１が共有資源への排他的アクセス権を取得するタイミングは図１に比して１周期分早くなる。従って、マルチスレッド処理装置２全体として処理効率が向上している。
【００７６】
これらにより、本実施例のマルチスレッド処理装置３では、帯域譲渡に関する制御を行わないものに比して、処理効率を向上させることができる。また、強制的に共有資源への排他的アクセス権を解放させるような制御を行っていないため、各スレッドは処理を確実に実行することができる。
【００７７】
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【００７８】
例えば、図２に示した構成はあくまで一例であり、パイプラインコントローラ、スレッド毎の命令バッファ等を備えるものとしてもよい。
【００７９】
また、図３や図４で示したフローの実行主体は、ＯＳに限定されず、専用の実行回路又はマイクロコンピュータを備えるものとしても構わない。
【符号の説明】
【００８０】
１、２、３  マルチスレッド処理装置
１０  ＲＯＭ
１２  ＰＣ（プログラムカウンタ）
１４  命令Ｑｕｅｕｅ
１６  汎用レジスタ
１８  ＥＸＵ（演算ユニット）
２０  スケジューラ
３０  ＲＡＭ
３２  データバス
４０  セマフォ用レジスタ
４２  リソース振り替えフラグ設定用レジスタ
【図１】
2011170619.tif 000003
【図２】
2011170619.tif 000004
【図３】
2011170619.tif 000005
【図４】
2011170619.tif 000006
【図５】
2011170619.tif 000007
【図６】
2011170619.tif 000008
【図７】
2011170619.tif 000009
【図８】
2011170619.tif 000010