JP2011128767A - マルチスレッド処理装置、及びその帯域変更制御方法 - Google Patents

マルチスレッド処理装置、及びその帯域変更制御方法 Download PDF

Info

Publication number
JP2011128767A
JP2011128767A JP2009285114A JP2009285114A JP2011128767A JP 2011128767 A JP2011128767 A JP 2011128767A JP 2009285114 A JP2009285114 A JP 2009285114A JP 2009285114 A JP2009285114 A JP 2009285114A JP 2011128767 A JP2011128767 A JP 2011128767A
Authority
JP
Japan
Prior art keywords
thread
processing load
processing
bandwidth
task
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
Application number
JP2009285114A
Other languages
English (en)
Inventor
Tetsuaki Wakabayashi
哲明 若林
Kotaro Sato
浩太郎 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toyota Motor Corp
Renesas Electronics Corp
Original Assignee
Toyota Motor Corp
Renesas Electronics Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toyota Motor Corp, Renesas Electronics Corp filed Critical Toyota Motor Corp
Priority to JP2009285114A priority Critical patent/JP2011128767A/ja
Publication of JP2011128767A publication Critical patent/JP2011128767A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】処理負荷の変動に柔軟に対応することが可能なマルチスレッド処理装置、及びその帯域変更制御方法を提供すること。
【解決手段】複数のスレッドがハードウエアを部分的に共有して処理を行なうマルチスレッド処理装置であって、前記複数のスレッドに対して、スレッドの作動割合である帯域を設定する帯域設定手段と、前記複数のスレッドに含まれる各スレッドの処理負荷を監視し、該各スレッドの処理負荷が平滑化するような帯域変更を前記帯域設定手段に指示する帯域変更制御手段と、を備えるマルチスレッド処理装置。
【選択図】図1

Description

本発明は、複数のプログラムを独立に実行可能なマルチスレッド処理装置に関し、特に、複数のスレッドがハードウエアを部分的に共有して処理を行なうハードウエア・マルチスレッディング機能を有するマルチスレッド処理装置、及びその帯域変更制御方法に関する。
近年、プロセッサの性能向上に伴い、複数の機能を一つのプロセッサにより実現させるための技術が研究・実用化されている。例えば、車両に搭載される車載制御装置の分野では、ある車載機器を制御する制御装置と他の車載機器を制御する制御装置(例えば変速機の制御装置とエンジンの制御装置等)を統合して、コンピュータ・ハードウエアを縮小し、コストや重量の低減を図る動きが見られる。
こうしたハードウエア統合の一手法として、ハードウエア・マルチスレッディングと称されるものが知られている。ハードウエア・マルチスレッディングは、命令の出所や演算結果の格納場所を異にする複数のスレッドが、命令デコーダや演算回路等のハードウエアを共有して処理を行なうものである。ハードウエア・マルチスレッディングにおいては、異なるスレッドが同時に処理を行なうことは困難であるため、各スレッドに帯域を設定する処理(スケジューリング)が行われている。帯域とは、各スレッドがハードウエアを使用可能な時間の割合、すなわち各スレッドの作動割合を意味する。
これに対し、単一または複数種類のプロセッサユニットを複数個有するシステムについての発明が開示されている(例えば、特許文献1参照)。このシステムでは、入力プログラムの解析を行って当該入力プログラムの並列性を抽出し、処理プロセッサ情報に基づいてプロセッサユニットに対するプログラム部分の割り当て(スケジューリング)を行なっている。更には、並列タスク中で、専用コンパイラにより効率的に処理可能な部分の抽出、及び処理時間の見積もりを行なうことにより、スケジューリングを行なっている。
特開2007−328416号公報
ところで、マルチスレッド処理装置が現実に使用される場面においては、割り込みの発生等によって処理の遅延が生じたり、同一タスクであっても扱うデータ量が変動することによって処理負荷が変動したりするため、プログラムの内容やハードウエアの性能のみから処理負荷を事前に正確に見積もることは困難である。
従って、上記特許文献1に記載のシステムでは、プロセッサ間の特質の違い等の起因する静的な処理負荷のバラツキを解消することは可能であるが、環境等に応じてタスクの処理負荷が変動する動的な処理負荷のバラツキを解消することができない。
ここで、動的な処理負荷のバラツキを吸収可能とすべく、プロセッサの演算能力を過剰に高いものにすると、装置のコストが増大してしまう。これでは、前述したようなハードウエアの統合によるコストや重量の低減という目的を達成することはできない。
本発明はこのような課題を解決するためのものであり、処理負荷の変動に柔軟に対応することが可能なマルチスレッド処理装置、及びその帯域変更制御方法を提供することを、主たる目的とする。
上記目的を達成するための本発明の一態様は、
複数のスレッドがハードウエアを部分的に共有して処理を行なうマルチスレッド処理装置であって、
前記複数のスレッドに対して、スレッドの作動割合である帯域を設定する帯域設定手段と、
前記複数のスレッドに含まれる各スレッドの処理負荷を監視し、該各スレッドの処理負荷が平滑化するような帯域変更を前記帯域設定手段に指示する帯域変更制御手段と、
を備えるマルチスレッド処理装置である。
この本発明の一態様によれば、複数のスレッドに含まれる各スレッドの処理負荷を監視し、各スレッドの処理負荷が平滑化するような帯域変更を帯域設定手段に指示するため、処理負荷の変動に柔軟に対応することができる。
本発明の一態様において、
前記帯域変更制御手段は、
前記複数のスレッドに含まれる各スレッドの単位時間あたりの有効命令実行数を監視する実行状況監視手段と、
前記実行状況監視手段から取得した各スレッドの単位時間あたりの有効命令実行数に前記帯域設定手段によりその時点で設定されている帯域を加味して、前記複数のスレッドに含まれる各スレッドの処理負荷を算出する処理負荷算出手段と、
該処理負荷算出手段により算出された処理負荷の低いスレッドから処理負荷の高いスレッドに帯域を移動させるように前記帯域設定手段に指示する帯域変更管理手段と、
を備える手段であるものとしてもよい。
また、本発明の一態様において、
前記帯域変更管理手段は、前記処理負荷算出手段により算出された処理負荷の差が所定値量以上である場合に、処理負荷の低いスレッドから処理負荷の高いスレッドに帯域を移動させるように前記帯域設定手段に指示する手段であるものとしてもよい。
また、本発明の一態様において、
前記複数のスレッドのうちいずれかが実行中のタスクの残存時間を監視する残存時間監視手段を備え、
前記帯域変更制御手段は、前記残存時間監視手段により監視されているタスクの残存時間を基準としたタイミングで、前記帯域設定手段への指示を実行する手段であるものとしてもよい。
この場合、
前記帯域変更制御手段は、前記残存時間監視手段により監視されているタスクの残存時間の減少に応じて前記各スレッドの処理負荷の差を段階的に減少させるような帯域変更を、前記帯域設定手段に指示する手段であるものとしてもよい。
また、本発明の一態様において、
前記残存時間監視手段は、前記タスクの残存時間が経過したときに該タスクが終了していない場合には、該タスクを強制終了させる手段であるものとしてもよい。
また、本発明の一態様において、
前記帯域変更監視手段は、前記複数のスレッドのうち処理期限が設定されているタスクを実行中のスレッドの処理負荷が、処理期限が設定されていないタスクを実行中のスレッドの処理負荷に比して低い場合には、処理期限が設定されているタスクを実行中のスレッドから処理期限が設定されていないタスクを実行中のスレッドへ帯域を移動させる指示を行わないことを特徴とするものとしてもよい。
こうすれば、比較的緊急性の高い、処理期限が設定されているタスクを優先的に実行することができる。
本発明の他の態様は、
複数のスレッドがハードウエアを部分的に共有して処理を行なうマルチスレッド処理装置において、前記複数のスレッドに対して設定される、スレッドの作動割合である帯域の変更制御方法であって、
前記複数のスレッドに含まれる各スレッドの処理負荷を算出する第1のステップと、
前記算出した各スレッドの処理負荷のうち最も処理負荷が高いものと最も処理負荷が低いものとの差が閾値以上であるか否かを判定する第2のステップと、
前記算出した各スレッドの処理負荷のうち最も高いものと最も低いものとの差が閾値以上である場合に、前記最も処理負荷が低いスレッドから最も処理負荷が高いスレッドに帯域を規定量移動させる第3のステップと、
を所定時間毎に繰り返し実行することを特徴とする、
マルチスレッド処理装置における帯域変更制御方法である。
この本発明の他の態様によれば、算出した各スレッドの処理負荷のうち最も処理負荷が高いものと最も処理負荷が低いものとの差が閾値以上である場合に、最も処理負荷が低いスレッドから最も処理負荷が高いスレッドに帯域を規定量移動させるため、処理負荷の変動に柔軟に対応することができる。
本発明の他の態様において、
前記第3のステップにおいて、前記最も処理負荷が低いスレッドが実行中のタスクに処理期限が設定されている場合には、前記算出した各スレッドの処理負荷のうち最も高いものと最も低いものとの差が閾値以上である場合であっても、前記最も処理負荷が低いスレッドから最も処理負荷が高いスレッドに帯域を規定量移動させないことを特徴とするものとしてもよい。
こうすれば、比較的緊急性の高い、処理期限が設定されているタスクを優先的に実行することができる。
本発明によれば、処理負荷の変動に柔軟に対応することが可能なマルチスレッド処理装置、及びその帯域変更制御方法を提供することができる。
本発明の一実施例に係るマルチスレッド処理装置1のシステム構成例である。 残存時間監視装置50の構成及び接続関係を示す図である。 実行状況監視装置30の構成及び接続関係を示す図である。 スケジュールフィードバック装置40の構成及び接続関係を示す図である。 帯域変更管理部44が、残存時間監視装置50により監視されているタスクの残存時間を基準としたタイミングで各スレッドの処理負荷の差を段階的に減少させる様子を示す図である。 本実施例のスケジュールフィードバック装置40により実行される特徴的な処理の流れを示すフローチャートである。 スケジュールフィードバック装置40のような帯域変更のための構成を有さない従来構成のマルチスレッド処理装置が複数のタスクを実行する際の処理の流れを示す図である。 図7と同様の従来構成のマルチスレッド処理装置が時間内にタスクを終了できなかった場合の処理の流れを示す図である。 本実施例のマルチスレッド処理装置1による処理の流れを概念的に示す図である。 2つのCPUがそれぞれ実行していた処理の計算量を示す図である。 従来構成のマルチスレッド処理装置が実行する場合の計算量を示す図である。 本実施例のマルチスレッド処理装置1により、2つのCPUが実行する処理を統合した場合の計算量の変動を模式的に示す図である。
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
[基本構成]
以下、図面を参照し、本発明の一実施例に係るマルチスレッド処理装置1について説明する。図1は、本発明の一実施例に係るマルチスレッド処理装置1のシステム構成例である。マルチスレッド処理装置1は、主要な構成として、命令側メモリ・バス70及びデータ側メモリ・バス72に接続されたプロセッサ部10と、残存時間監視装置50と、を備える。
プロセッサ10は、複数の命令バッファ12と(後にスレッドを#0,#1,#2と表現するため、必要に応じて命令バッファ12#0,12#1,12#2等と表現する)、セレクタ14と、スレッドスケジュール装置16と、命令デコーダ18と、複数のレジスタファイル20と、演算回路22と、パイプライン制御回路24と、実行状況監視装置30と、スケジュールフィードバック装置40と、を備える。
命令バッファ12#0〜12#2は、それぞれ命令側メモリ・バス70に接続されている。命令側メモリ・バス70は、複数のプログラムを記憶したROM、EEPROM等の記憶装置に接続されている。
スレッドスケジュール装置16は、命令バッファ12#0〜12#2に対応して設定されているプログラムカウンタのアドレスを命令側メモリ・バス70に出力し、命令バッファ12#0〜12#2にプログラムを順次読み出す。命令バッファ12#0〜12#2は、セレクタ14に接続されている。
また、スレッドスケジュール装置16は、命令を発行する命令バッファを選択し、選択した命令バッファと命令デコーダ18を接続するようにセレクタ14を制御する。
命令デコーダ18は、命令バッファ12#0〜12#2のいずれかから入力された命令を解読し、解読結果をレジスタファイル20及びパイプライン制御回路24に出力する。レジスタファイル20は、演算回路22の演算結果、及び、データ側メモリ・バス72を介して読み出されたデータを一時的に記憶する一群のレジスタである。命令デコーダ18による解読結果は、例えば、演算の種別、1以上のソースオペランド、結果の格納場所、等である。ソースオペランドはレジスタファイル20に供給されるので、演算回路22が演算に使用するレジスタが指定される。
命令デコーダ18が演算の種類をパイプライン制御回路24に送出すると、パイプライン制御回路24は演算回路22が実行する演算を指定する。演算回路22は、演算の種類に応じて、レジスタファイル20に記憶されたデータに演算を施す。演算の内容は、ストア、ロード、加算、乗算、除算、分岐等、演算回路22に応じて種々のものが用意されている。そして、ストアやロード命令の場合、演算回路22は演算したアドレスを指定してデータ側メモリ・バス72からデータをフェッチする。そして、演算回路22は、加算等の演算結果、又は、読み出したデータを、レジスタファイル20の、結果の格納場所により指定されるレジスタにライトバックする。また、演算回路22の演算結果は、必要に応じてデータ側メモリ・バス72に出力され、外部機器によって使用される。
パイプライン制御回路24は、以上のパイプライン制御の各ステージ(命令フェッチ、命令デコード、命令実行、オペランドフェッチ、ライトバック等)を動作クロックに基づき制御する。
以降、命令バッファ12#0から入力された命令が命令デコーダ18に解読され、演算回路22において演算処理が行われる命令処理の流れをスレッド#0と称する。同様に、命令バッファ12#1から入力された命令による流れをスレッド#1と、命令バッファ12#2から入力された命令による流れをスレッド#2と、それぞれ称する。なお、スレッド数は3に限定されず、2以上の任意の数であってよい。
スレッドスケジュール装置16は、スレッド#0〜#2を1クロックで切り替えて(同じスレッドが連続して作動してもよい)異なるプログラムを実行するので、プロセッサ10は、物理的には一つの存在であり乍ら、複数の仮想的なCPUを有するように振る舞う(ハードウエア・マルチスレッディング機能)。このように、仮想的なCPUを複数有することで、異なるプログラムを独立・並行して実行することができる。
スレッドスケジュール装置16は、このようなスレッドの切り替えを、例えばOS(Operating System)から与えられた初期配分に基づいて実行開始する。初期配分は、例えば命令実行の1サイクルが16クロックであるものとすると、「スレッド#0に対して8/16、スレッド#1に対して6/16、スレッド#2に対して2/16」のような形式で与えられる。
スレッドスケジュール装置16は、与えられた初期配分が上記のようなものであった場合、例えば[#0,#0,#0,#0,#0,#0,#0,#0,#1,#1,#1,#1,#1,#1,#2,#2]の順にスレッドが作動するように、セレクタ14を制御する。
なお、このように、各スレッドに与えられるハードウエアを使用可能な時間の割合、すなわち各スレッドの作動割合を「帯域」と称し、この帯域が実現されるようにセレクタ14を制御することを、「帯域を設定する」と称する。
残存時間監視装置50は、複数のデクリメントカウンター52を中心として構成される。残存時間監視装置50は、各スレッドが実行する一連の命令(以下、タスクと称する)のうち、デッドライン(処理期限)が設定されているタスクに関して、デッドラインまでの残存時間を監視している。そして、デッドラインに至る(=残存時間がゼロとなり、デクリメントカウンター52が満了する)と、割り込みコントローラ60に指示して当該タスクを強制的に終了させる(異常終了通知)。デクリメントカウンター52が複数個存在することによって、複数のタスクにデッドラインが設定されている場合に対応することができる。なお、タスクに関するデッドラインの設定情報は、例えばOSから残存時間監視装置50に与えられている。
割り込みコントローラ60は、上記残存時間監視装置50からの指示の他、ADコンバータ、DMAコントローラ、CANコントローラ(車載装置の場合)等、周辺回路から割り込み通知がなされる。
ところで、このようにしてハードウエア・マルチスレッディングを行なうマルチスレッド処理装置1においては、各スレッドの処理負荷の動的変動という課題が存在する。すなわち、OSから与えられた帯域の初期配分は、各スレッドが実行する一連の命令の処理負荷に応じたものとなっているが、各スレッドにおける処理負荷は、プロセッサ10の処理とは非同期に発生する割り込み通知によって処理の遅延が生じたり、同一タスクであっても扱うデータ量が変動する等、種々の要因によって変動するものである。このため、あるスレッドにおける処理負荷が増大すると、処理の遅延によってデッドラインに至り、強制終了される場合が多く生じる可能性があり、好ましくない。
そこで、本実施例のマルチスレッド処理装置1では、以下のような構成によって処理負荷の変動に動的に対応している。
[帯域変更について]
図2は、残存時間監視装置50の構成及び接続関係を示す図である。図示するように、残存時間監視装置50は、スケジュールフィードバック装置40及び割り込みコントローラ60に接続されており、スケジュールフィードバック装置40にはデクリメントカウンター52によりカウントされている各スレッドに関する残存時間を、割り込みコントローラ60には前述の異常終了通知を、それぞれ出力している。
図3は、実行状況監視装置30の構成及び接続関係を示す図である。図示するように、実行状況監視装置30はパイプライン制御回路24及びスケジュールフィードバック装置40に接続されている。パイプライン制御回路24から実行状況監視装置30には命令実行完了情報が入力され、実行状況監視装置30からスケジュールフィードバック装置40には単位時間あたりの有効命令実行数が出力されている。
なお、パイプライン制御回路24は、前述のように、命令バッファ12やレジスタファイル20、演算回路22の対応付け(スレッド定義)を行っているため、例えばレジスタへのライトバックが行われたこと等によって各スレッドの命令実行完了状況を把握している。
実行状況監視装置30は、実行状況監視部32と、複数のカウンター部34と、を有する。実行状況監視部32は、パイプライン制御回路24から各スレッドの命令実行完了情報が入力されると、カウンター部34のうち各スレッドに対応したものを1インクリメントさせる。但し、装置のアイドル動作時には、NOP命令等が実行されている場合があるため、実行状況監視部32は、NOP命令等を除外してインクリメントを行なう。
そして、図示しないグローバルタイマーの出力によって把握される単位時間が経過すると、カウンター部34は、各スレッドに対応するカウンター値をスケジュールフィードバック装置40に出力した後に、カウンター値をゼロクリアする。
図4は、スケジュールフィードバック装置40の構成及び接続関係を示す図である。図示するように、スケジュールフィードバック装置40には、スレッドスケジュール装置16からその時点で設定されている帯域に関する情報が、実行状況監視装置30から単位時間あたりの有効命令実行数が、残存時間監視装置50から各スレッドに関する残存時間が、それぞれ入力されている。また、スケジュールフィードバック装置40からスレッドスケジュール装置16には、帯域変更要求信号が出力される。
スケジュールフィードバック装置40は、処理負荷算出部42と、帯域変更管理部44と、を備える。
処理負荷算出部42は、各スレッドについて、単位時間あたりの有効命令実行数を、その時点で設定されている帯域で除して、処理負荷を示す値を算出する。例えば、単位時間あたりの有効命令実行数が110、その時点で設定されている帯域が8/16であるとすると、処理負荷を示す値は220となる。有効命令実行数を帯域で除するのは、単に有効命令実行数を処理負荷とすると、設定帯域が大きいスレッドの処理負荷が相対的に高く見積もられてしまうからである。
帯域変更管理部44は、処理負荷算出部42により算出された処理負荷の低いスレッドから、処理負荷の高いスレッドに帯域を移動させるように、スレッドスケジュール装置16に帯域変更要求信号を出力する。具体的には、例えば、処理負荷算出部42により算出された各スレッド処理負荷の差を閾値と比較し、差が閾値よりも大きい場合に帯域変更要求信号を出力する。
また、帯域変更管理部44は、残存時間監視装置50により監視されているタスクの残存時間を基準としたタイミングで、各スレッドの処理負荷の差を段階的に減少させるように、帯域変更要求信号を出力する。
具体的には、残存時間監視装置50により監視されているタスクの残存時間をTaとすると、これをn分割した基準時間の経過毎(Ta/n,2Ta/n,…,nTa/n=Taの各時間の経過毎)に、前述の処理負荷に関する判定を行なって、帯域変更要求信号を出力するか否かを決定する。
そして、帯域変更要求信号を出力する際には、ハンチング等により制御が不安定な状態とならないように、帯域を所定幅ずつ変更するように、帯域変更要求信号を出力する。
例えば、前述のように命令実行の1サイクルが16クロックであり、スレッド#0に対して8/16、スレッド#1に対して6/16、スレッド#2に対して2/16の帯域が設定されているとする。Ta/n経過時に、スレッド#0の処理負荷がスレッド#1の処理負荷よりも閾値以上高い場合、スレッド#0に対して9/16、スレッド#1に対して5/16に帯域を変更する。次に2Ta/n経過時に、スレッド#0の処理負荷がスレッド#1の処理負荷よりも依然として閾値以上高い場合、スレッド#0に対して10/16、スレッド#1に対して4/16に帯域を変更する。
図5は、帯域変更管理部44が、残存時間監視装置50により監視されているタスクの残存時間を基準としたタイミングで各スレッドの処理負荷の差を段階的に減少させる様子を示す図である。本図における初期条件は、有効実装スレッド数が3(#0,#1,#2)、設定帯域がスレッド#0に対して8/16、スレッド#1に対して6/16、スレッド#2に対して2/16となっている。図示するように、あるスレッドのデッドラインが設定されているタスクが起動したタイミングで帯域変更管理部44の制御が開始される。時間がTa/n経過すると(図中(2))、前述のようにスレッド#0に対して9/16、スレッド#1に対して5/16に帯域が変更される。次いで、時間が2Ta/n経過すると(図中(3))、スレッド#0に対して10/16、スレッド#1に対して4/16に帯域が変更され、時間が3Ta/n経過すると(図中(4))、スレッド#0に対して11/16、スレッド#1に対して3/16に帯域が変更される。
このようにして、スケジュールフィードバック装置40は、各スレッドの処理負荷を監視し、各スレッドの処理負荷が平滑化するような帯域変更をスレッドスケジュール装置16に指示する。
但し、スケジュールフィードバック装置40は(帯域変更管理部44は)複数のスレッドのうちデッドラインが設定されているタスクを実行中のスレッドの処理負荷が、デッドラインの設定されていないタスクを実行中のスレッドの処理負荷に比して低い場合には、これらが処理負荷の最も低いものと最も高いものであっても、帯域変更要求信号を出力しないものとしてよい。これは、デッドラインが設定されているタスクは相対的に緊急性が高く、他方、デッドラインが設定されていないタスクは処理の終了が若干遅くなっても許容される場合が多いからである。
図6は、本実施例のスケジュールフィードバック装置40により実行される特徴的な処理の流れを示すフローチャートである。本フローは、デッドラインの設定されているタスクが起動するタイミングで開始される。なお、デッドラインの設定されているタスクが複数起動した場合、図6のようなフローが並行して実行されてよい。
まず、帯域変更管理部44は、時間がk×Ta/n経過するまで待機する(S100)。なお、値kは初期値としてゼロが設定されている制御パラメータであり、帯域変更管理部44の内部メモリ等に格納される。
時間k×Ta/n経過すると、処理負荷算出部42が、各スレッドについて、前述のように処理負荷を示す値を算出する(S102)。
そして、最も処理負荷が高いスレッドの処理負荷と、最も処理負荷が低いスレッドの処理負荷との差が閾値以上であるかを判定する(S104)。
最も処理負荷が高いスレッドの処理負荷と、最も処理負荷が低いスレッドの処理負荷との差が閾値未満である場合は、値kを1インクリメントさせ(S106)、本フローの1ルーチンを終了する。
一方、最も処理負荷が高いスレッドの処理負荷と、最も処理負荷が低いスレッドの処理負荷との差が閾値以上である場合は、処理負荷が低い側のスレッドにデッドラインが設定されているか否かを判定する(S108)。
処理負荷が低い側のスレッドにデッドラインが設定されていない場合は、最も処理負荷が高いスレッドの帯域を規定量増加させると共に最も処理負荷が低いスレッドの帯域を規定量減少させるようにスレッドスケジュール装置16に指示し(S110)、値kを1インクリメントさせ(S106)、本フローの1ルーチンを終了する。
処理負荷が低い側のスレッドにデッドラインが設定されている場合は、最も処理負荷が高いスレッドの処理負荷と、2番目に処理負荷が低いスレッドの処理負荷との差が閾値以上であるかを判定する(S112)。
最も処理負荷が高いスレッドの処理負荷と、2番目に処理負荷が低いスレッドの処理負荷との差が閾値未満である場合は、値kを1インクリメントさせ(S106)、本フローの1ルーチンを終了する。
一方、最も処理負荷が高いスレッドの処理負荷と、2番目に処理負荷が低いスレッドの処理負荷との差が閾値以上である場合は、処理負荷が低い側のスレッド(この場合、2番目に処理負荷が低いスレッド)にデッドラインが設定されているか否かを判定する(S114)。
処理負荷が低い側のスレッドにデッドラインが設定されていない場合は、最も処理負荷が高いスレッドの帯域を規定量増加させると共に2番目に処理負荷が低いスレッドの帯域を規定量減少させるようにスレッドスケジュール装置16に指示し(S116)、値kを1インクリメントさせ(S106)、本フローの1ルーチンを終了する。
処理負荷が低い側のスレッドにデッドラインが設定されている場合は、値kを1インクリメントさせ(S106)、本フローの1ルーチンを終了する。
なお、本フローはスレッド数が3であることを前提としているため以上の構成としたが、スレッド数が4以上である場合は、S112〜S116のような処理を更に「3番目に処理負荷が低いスレッド…」について行なってよい。また、スレッド数が2であれば、S112〜S116の処理は不要であるし、デッドラインの設定されていないタスクを実行中のスレッドの帯域を減少させることも許容する場合には、S108の判定は不要である。
図7は、スケジュールフィードバック装置40のような帯域変更のための構成を有さない従来構成のマルチスレッド処理装置が複数のタスクを実行する際の処理の流れを示す図である。図示するように、先ず、タスク#aが実行され、これが終了すると、OSがタスクスケジューリングを行なう。そして、残存時間監視装置50にデッドラインを通知して設定させると共に、タスク#bをいずれかのスレッドに開始させる。時間内にタスク#bが終了すると、デッドラインがクリアされる(正常終了)。
一方、図8は、図7と同様の従来構成のマルチスレッド処理装置が時間内にタスクを終了できなかった場合の処理の流れを示す図である。図示するように、先ず、タスク#aが実行され、これが終了すると、OSがタスクスケジューリングを行なう。そして、残存時間監視装置50にデッドラインを通知して設定させると共に、タスク#bをいずれかのスレッドに開始させる。ところが、割り込みの発生やデータ量の増大等によってタスク#bを実行しているスレッドの処理負荷が高くなり、時間内にタスク#bが終了しない場合、残存時間監視装置50から割り込みコントローラ60にデッドライン通知割り込みが通知され、タスク#bが強制終了されることになる(異常終了)。この場合タスク#bは無効となってしまう。
これに対し図9は、本実施例のマルチスレッド処理装置1による処理の流れを概念的に示す図である。本実施例のマルチスレッド処理装置1では、タスク#bをいずれかのスレッドが開始した後に、他のスレッドに比して処理負荷が高い場合には、帯域が他のスレッドから配分され、処理時間の割合が増加する。図9においてタスク#bの起動後の線の太さが、帯域の量を示している。このように、処理負荷の高いスレッドについて、段階的に帯域が増加する。従って、デッドライン前にタスクを終了することができる可能性を高めることができる。
また、図10及び図11は、2つのCPUが実行する処理を、従来構成のマルチスレッド処理装置に統合した場合の計算量の変動を模式的に示す図である。図10は、2つのCPUがそれぞれ実行していた処理の計算量を示しており、図11は、従来構成のマルチスレッド処理装置が実行する場合の計算量を示している。図11に示すように、従来構成のマルチスレッド処理装置では、前述の異常終了を回避するために、各スレッドの計算量の上限近くにまで帯域をそれぞれ割り当てる必要があるため、結果としてCPUの性能を高いものにしなければならなかった。従って、装置のコスト低減といった目的を達成するのが困難であった。
これに対し、図12は、本実施例のマルチスレッド処理装置1により、2つのCPUが実行する処理を統合した場合の計算量の変動を模式的に示す図である。図示するように、本実施例のマルチスレッド処理装置1では、必要に応じて処理負荷の高いスレッドの設定帯域が増加するように帯域を変更するため、演算資源を有効に活用することができる。この結果、CPU(プロセッサ)の性能を過剰に高いものにする必要がなくなり、装置のコスト低減といった目的を達成することができるため、車載制御装置等に好適に適用することができる。
以上説明した本実施例のマルチスレッド処理装置1によれば、処理負荷の低いスレッドから処理負荷の高いスレッドに帯域を移動させるように制御するため、処理負荷の変動に柔軟に対応することができる。
また、複数のCPU(プロセッサ)が有していた機能を統合する際に、プログラミング構造を維持することが可能となるため、統合コストの低減を実現することができる。
また、タスクの起動タイミングに関する検討が不要となるため、ソフトウエアの流通性を高めることができる。
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
例えば、スケジュールフィードバック装置40において、時間Ta/nの経過毎に帯域変更のための処理を行なうものとしたが、制御の基準時間幅を一定時間とするのではなく、例えば時間の経過と共に長く(又は短く)なる制御の基準時間幅を用いて帯域変更を行なってもよい。
また、処理負荷の差に拘わらず帯域を規定量移動させるものとしたが、処理負荷の差が大きい場合には帯域を多く移動させ、処理負荷の差が小さい場合には帯域を少なく移動させるような制御を行なってもよい。
1 マルチスレッド処理装置
10 プロセッサ
12 命令バッファ
14 セレクタ
16 スレッドスケジュール装置
18 命令デコーダ
20 レジスタファイル
22 演算回路
24 パイプライン制御回路
30 実行状況監視装置
32 実行状況監視部
34 カウンター部
40 スケジュールフィードバック装置
42 処理負荷算出部
44 帯域変更管理部
50 残存時間監視装置
52 デクリメントカウンター
60 割り込みコントローラ
70 命令側メモリ・バス
72 データ側メモリ・バス

Claims (9)

  1. 複数のスレッドがハードウエアを部分的に共有して処理を行なうマルチスレッド処理装置であって、
    前記複数のスレッドに対して、スレッドの作動割合である帯域を設定する帯域設定手段と、
    前記複数のスレッドに含まれる各スレッドの処理負荷を監視し、該各スレッドの処理負荷が平滑化するような帯域変更を前記帯域設定手段に指示する帯域変更制御手段と、
    を備えるマルチスレッド処理装置。
  2. 前記帯域変更制御手段は、
    前記複数のスレッドに含まれる各スレッドの単位時間あたりの有効命令実行数を監視する実行状況監視手段と、
    前記実行状況監視手段から取得した各スレッドの単位時間あたりの有効命令実行数に前記帯域設定手段によりその時点で設定されている帯域を加味して、前記複数のスレッドに含まれる各スレッドの処理負荷を算出する処理負荷算出手段と、
    該処理負荷算出手段により算出された処理負荷の低いスレッドから処理負荷の高いスレッドに帯域を移動させるように前記帯域設定手段に指示する帯域変更管理手段と、
    を備える手段である、
    請求項1に記載のマルチスレッド処理装置。
  3. 前記帯域変更管理手段は、前記処理負荷算出手段により算出された処理負荷の差が所定値量以上である場合に、処理負荷の低いスレッドから処理負荷の高いスレッドに帯域を移動させるように前記帯域設定手段に指示する手段である、
    請求項2に記載のマルチスレッド処理装置。
  4. 前記複数のスレッドのうちいずれかが実行中のタスクの残存時間を監視する残存時間監視手段を備え、
    前記帯域変更制御手段は、前記残存時間監視手段により監視されているタスクの残存時間を基準としたタイミングで、前記帯域設定手段への指示を実行する手段である、
    請求項1ないし3のいずれか1項に記載のマルチスレッド処理装置。
  5. 前記帯域変更制御手段は、前記残存時間監視手段により監視されているタスクの残存時間の減少に応じて前記各スレッドの処理負荷の差を段階的に減少させるような帯域変更を、前記帯域設定手段に指示する手段である、
    請求項4に記載のマルチスレッド処理装置。
  6. 前記残存時間監視手段は、前記タスクの残存時間が経過したときに該タスクが終了していない場合には、該タスクを強制終了させる手段である、
    請求項4又は5に記載のマルチスレッド処理装置。
  7. 前記帯域変更監視手段は、前記複数のスレッドのうち処理期限が設定されているタスクを実行中のスレッドの処理負荷が、処理期限が設定されていないタスクを実行中のスレッドの処理負荷に比して低い場合には、処理期限が設定されているタスクを実行中のスレッドから処理期限が設定されていないタスクを実行中のスレッドへ帯域を移動させる指示を行わないことを特徴とする、
    請求項1ないし6のいずれか1項に記載のマルチスレッド処理装置。
  8. 複数のスレッドがハードウエアを部分的に共有して処理を行なうマルチスレッド処理装置において、前記複数のスレッドに対して設定される、スレッドの作動割合である帯域の変更制御方法であって、
    前記複数のスレッドに含まれる各スレッドの処理負荷を算出する第1のステップと、
    前記算出した各スレッドの処理負荷のうち最も高いものと最も低いものとの差が閾値以上であるか否かを判定する第2のステップと、
    前記算出した各スレッドの処理負荷のうち最も高いものと最も低いものとの差が閾値以上である場合に、前記最も処理負荷が低いスレッドから最も処理負荷が高いスレッドに帯域を規定量移動させる第3のステップと、
    を所定時間毎に繰り返し実行することを特徴とする、
    マルチスレッド処理装置における帯域変更制御方法。
  9. 前記第3のステップにおいて、前記最も処理負荷が低いスレッドが実行中のタスクに処理期限が設定されている場合には、前記算出した各スレッドの処理負荷のうち最も高いものと最も低いものとの差が閾値以上である場合であっても、前記最も処理負荷が低いスレッドから最も処理負荷が高いスレッドに帯域を規定量移動させないことを特徴とする、
    請求項8に記載のマルチスレッド処理装置における帯域変更制御方法。
JP2009285114A 2009-12-16 2009-12-16 マルチスレッド処理装置、及びその帯域変更制御方法 Pending JP2011128767A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009285114A JP2011128767A (ja) 2009-12-16 2009-12-16 マルチスレッド処理装置、及びその帯域変更制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009285114A JP2011128767A (ja) 2009-12-16 2009-12-16 マルチスレッド処理装置、及びその帯域変更制御方法

Publications (1)

Publication Number Publication Date
JP2011128767A true JP2011128767A (ja) 2011-06-30

Family

ID=44291325

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009285114A Pending JP2011128767A (ja) 2009-12-16 2009-12-16 マルチスレッド処理装置、及びその帯域変更制御方法

Country Status (1)

Country Link
JP (1) JP2011128767A (ja)

Similar Documents

Publication Publication Date Title
US8560812B2 (en) Device for executing an instruction using a target execution speed
US6542921B1 (en) Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
KR101486025B1 (ko) 프로세서에서의 쓰레드 스케쥴링
US8046775B2 (en) Event-based bandwidth allocation mode switching method and apparatus
KR101100470B1 (ko) 멀티쓰레드 프로세서에서의 자동 저전력 모드 호출을 위한장치 및 방법
US7941643B2 (en) Multi-thread processor with multiple program counters
EP2793133B1 (en) Multi-core processor
JP5413853B2 (ja) マルチスレッド型プロセッサのためのスレッドデエンファシス方法及びデバイス
JP2010503070A (ja) 従属命令スレッドスケジューリング
Mische et al. How to enhance a superscalar processor to provide hard real-time capable in-order smt
US8782293B1 (en) Intra-processor operation control
WO2006129767A1 (ja) マルチスレッド中央演算装置および同時マルチスレッディング制御方法
Yamasaki et al. Prioritized SMT architecture with IPC control method for real-time processing
JP2011170619A (ja) マルチスレッド処理装置
JP2011216004A (ja) マイクロプロセッサ、電子制御ユニット、実行比率切り替え方法
Zhang et al. On maximizing resource utilization for simultaneous multi-threading (smt) processors by instruction recalling
US9870599B2 (en) Analysis system and method for reducing the control flow divergence in the Graphics Processing Units (GPUs)
JP2011128767A (ja) マルチスレッド処理装置、及びその帯域変更制御方法
US20130205143A1 (en) Autonomous microprocessor re-configurability via power gating pipelined execution units using static profiling
US7904703B1 (en) Method and apparatus for idling and waking threads by a multithread processor
JP2016184315A (ja) 電子制御装置
Zhang et al. Recalling instructions from idling threads to maximize resource utilization for simultaneous multi-threading processors
JP2012168725A (ja) マルチスレッド・プロセッサ
JP7157542B2 (ja) プリフェッチコントローラ
JP2011008617A (ja) マルチスレッド実行装置、オブジェクトプログラムの生成方法、プログラム