JP2011216004A - マイクロプロセッサ、電子制御ユニット、実行比率切り替え方法 - Google Patents
マイクロプロセッサ、電子制御ユニット、実行比率切り替え方法 Download PDFInfo
- Publication number
- JP2011216004A JP2011216004A JP2010085145A JP2010085145A JP2011216004A JP 2011216004 A JP2011216004 A JP 2011216004A JP 2010085145 A JP2010085145 A JP 2010085145A JP 2010085145 A JP2010085145 A JP 2010085145A JP 2011216004 A JP2011216004 A JP 2011216004A
- Authority
- JP
- Japan
- Prior art keywords
- task
- idle
- programs
- register
- qos
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】タスク内容に応じて複数のプログラムのQoSを切り替え可能なマイクロプロセッサ等を提供する。
【解決手段】n(2以上の自然数)個のハードウェアスレッドを切り替えて、n個のプログラムを実行するマイクロプロセッサであって、n個のプログラムそれぞれのメインタスク、及びアイドルタスクを記憶する記憶手段24、n個のプログラムのそれぞれの目標実行比率に基づき、n個のハードウェアスレッドのいずれかに実行権を与えるスケジュール制御手段16と、各ハードウェアスレッドによるn個のプログラムの実行アドレスと、記憶手段における各アイドルタスクのアドレス情報を比較した結果に基づくn個のプログラムの動作状況に応じた目標実行比率を前記スケジュール制御手段16に指示するソフトウェア監視手段18とを有する。
【選択図】図2
【解決手段】n(2以上の自然数)個のハードウェアスレッドを切り替えて、n個のプログラムを実行するマイクロプロセッサであって、n個のプログラムそれぞれのメインタスク、及びアイドルタスクを記憶する記憶手段24、n個のプログラムのそれぞれの目標実行比率に基づき、n個のハードウェアスレッドのいずれかに実行権を与えるスケジュール制御手段16と、各ハードウェアスレッドによるn個のプログラムの実行アドレスと、記憶手段における各アイドルタスクのアドレス情報を比較した結果に基づくn個のプログラムの動作状況に応じた目標実行比率を前記スケジュール制御手段16に指示するソフトウェア監視手段18とを有する。
【選択図】図2
Description
本発明は、複数のハードウェアスレッドを備えたマイクロプロセッサ等に関し、特に、ハードウェアスレッド間の実行比率を制御可能なマイクロプロセッサ、電子制御ユニット及びアドレス変換方法に関する。
1つのマイクロプロセッサが複数のスレッド(プログラム)を同時並行的に実行するようなマルチスレッドが実現されるようになった。マルチスレッド型のマイクロプロセッサは、複数のスレッドをそれぞれ実行するので、スレッド間の実行比率を制御したい場合が少なくない。
例えば、マルチスレッドが可能なプロセッサにおいて、スレッドを切り替えるための技術が考案されている(例えば、特許文献1参照。)。特許文献1には、複数のプロセッサを有するプロセッサグループにおいて、各プロセッサに、スレッドごとのプロセッサ・リソース使用率をカウントするプロセッサ使用サイクル・カウンタが組み込まれたプロセッサグループが開示されている。
例えば、マルチスレッドが可能なプロセッサにおいて、スレッドを切り替えるための技術が考案されている(例えば、特許文献1参照。)。特許文献1には、複数のプロセッサを有するプロセッサグループにおいて、各プロセッサに、スレッドごとのプロセッサ・リソース使用率をカウントするプロセッサ使用サイクル・カウンタが組み込まれたプロセッサグループが開示されている。
ところで、車両ではプロセッサが搭載された種々のECU(Electronic Control Unit)を、HMT(ハードウェアマルチスレッド)機能を有する1つ又は数個のECUに統合することが検討されている。統合前のあるECUで動作するプログラムが、優先度が高いメインタスクと優先度が低いアイドルタスクを有する場合がある(2つのタスクで1つのプログラムである)。統合前のECUは、一般的に、イベントが発生したり、周期タスク(メインタスクに含まれる)のタイミングが到来すると、メインタスクを開始し、優先度が高いメインタスクが終了した時点で優先度が低いアイドルタスクを実行する。アイドルタスクは、具体的な処理を受け持つわけではなく、メインタスクが実行されていない場合に、レジスタチェック、フェールセーフ処理、又は、無限ループによるメインタスクの待ち状態等を提供するタスクである。
ここで、2つのECU_A、ECU_Bの機能を、HMT型のマイクロプロセッサを持ったECUに統合した場合を考える。ECU_Aは、プログラムAとしてメインタスクAとアイドルタスクAを有し、ECU_BはプログラムBとしてメインタスクBとアイドルタスクBを有する。MHTプロセッサを有する統合後の機能統合ECUは、プログラムAとプログラムBを同時並行的に実行する。すると、機能統合ECUは、プログラムAのメインタスクAとプログラムBのアイドルタスクBを同時並行に実行することもある。プログラムB内では、メインタスクBがアイドルタスクBよりも優先されるようにコーディングされているが、異なるプログラムに含まれるメインタスクAとアイドルタスクBには、メインタスクAをアイドルタスクBよりも優先させるような仕組みが含まれていない。その逆に、メインタスクBとアイドルタスクAにも、メインタスクBをアイドルタスクAよりも優先させるような仕組みも含まれていない。
上記のように、アイドルタスクBは具体的な処理を行っていないので、プログラムAとプログラムBを統合した後、機能統合ECU200はメインタスクAをアイドルタスクBよりも、又は、メインタスクBをアイドルタスクAよりも、優先することが好ましい。このためには、例えば、機能統合ECUがメインタスクAとアイドルタスクBを同時並行して実行している間は、プログラムAとプログラムBのQoS(Quality of Service)を変える(例えば、プログラムA:80%、プログラムB:20%)ことが考えられる。
しかしながら、特許文献1に開示されたプロセッサグループのように、各プロセッサにプロセッサ使用サイクル・カウンタを搭載して、処理負荷を実行比率の変更のトリガーとすることは、却ってプロセッサの処理負荷が増大してしまうという問題がある。
また、プロセッサ使用サイクル・カウンタにより処理負荷を監視してプログラムの優先度を切り替えると、処理負荷の変動に起因してプログラムの切り替わりが頻繁に生じる可能性があり、オーバヘッドとなるという問題がある。すなわち、機能統合ECUでは非同期にイベントが発生するので、処理負荷に応じてプログラムAとプログラムBのQoSを入れ替えると、本来の目的であるプログラムAとプログラムBの並行処理よりもQoSの入れ替えにリソースが費やされるおそれがある。
また、例えば、OSのスケジューラがイベントを取得するためのポーリングを実行することも考えられるが、ポーリングによるイベント検出は長い待ち時間が必要であるため、こちらもオーバーヘッドが大きくなるという不都合を生じさせるおそれがある。
本発明は、上記課題に鑑み、HMT機能を有するマイクロプロセッサにおいて、独立したプログラムのタスク内容に応じてプログラムのQoSを切り替え可能なマイクロプロセッサ、電子制御ユニット及び実行比率切り替え方法を提供することを目的とする。
上記課題に鑑み、本発明は、n(2以上の自然数)個のハードウェアスレッドを切り替えて、n個のプログラムを実行するマイクロプロセッサであって、n個のプログラムそれぞれのメインタスク、及び、アイドルタスク、を記憶した記憶手段と、n個のプログラムのそれぞれの目標実行比率に基づき、n個のハードウェアスレッドに実行権を与えるスケジュール制御手段と、各ハードウェアスレッドによるn個のプログラムの実行アドレスと、記憶手段における各アイドルタスクのアドレス情報、を比較する比較手段と、比較手段の比較結果に基づき、n個のプログラムの動作状況を監視し、該動作状況に応じた目標実行比率を前記スケジュール制御手段に指示する目標実行比率指示手段と、を有する。
を有することを特徴とする。
を有することを特徴とする。
HMT機能を有するマイクロプロセッサにおいて、処理負荷やイベントを監視することなく、タスク内容に応じてプログラムのQoSを切り替え可能なマイクロプロセッサ、電子制御ユニット及び実行比率切り替え方法を提供することができる。
以下、本発明を実施するための形態について図面を参照しながら実施例を挙げて説明する。
本実施形態のマイクロプロセッサは、ハードウェアマルチスレッド(以下、HMTという)機能を有する。HMTについては後述する。マイクロプロセッサは、ハードウェアスレッド(以下、HTという)を切り替えることで擬似的に同時に複数のプログラムを実行している。
そして、本実施形態のマイクロプロセッサの概略的な特徴は以下のようになる。
(1)各プログラムは、メインタスクとアイドルタスクを有するソフト構造になっている。
(2)HTの切り替えを制御するスケジュール制御装置を有する。
(3)各プログラムのタスクの動作状況を監視するソフトウェア監視装置を有する。
(4)ソフトウェア監視装置はタスクの動作状況に基づき、プログラムAとBのQoS(Quality of Service)を切り替えるよう、スケジュール制御装置に通知する。
(1)各プログラムは、メインタスクとアイドルタスクを有するソフト構造になっている。
(2)HTの切り替えを制御するスケジュール制御装置を有する。
(3)各プログラムのタスクの動作状況を監視するソフトウェア監視装置を有する。
(4)ソフトウェア監視装置はタスクの動作状況に基づき、プログラムAとBのQoS(Quality of Service)を切り替えるよう、スケジュール制御装置に通知する。
このように、ソフトウェア監視装置がプログラムの動作状況を監視するので、プログラムAのメインタスクとプログラムBのアイドルタスクが同時並行に実行される状況では、スケジュール制御装置は、プログラムAの実行比率をプログラムBよりも大きくするなど、QoSを変更することができる。よって、統合前の各ECUが実行していた各プログラムを、HMT機能を有するECUに搭載しても、別々のプログラムのメインタスクとアイドルタスクのQoSを適切に制御することができる。
また、ソフトウェアの開発時に、統合前の各ECUが実行していた各プログラムを、アイドルタスクが開始したことを検出できるように修正する必要もないので、機能統合ECUの開発コストを低減できる。
〔ECUの機能統合について〕
図1は、ECUの機能統合を模式的に説明する図の一例である。本実施形態では、複数のECUを1つのECU(以下、機能統合ECU200という)に統合したこと(すること)を前提にする。統合前のECUが実行していたプログラムを実行する、機能統合ECU200の一連のハードウェアをHTという。
図1は、ECUの機能統合を模式的に説明する図の一例である。本実施形態では、複数のECUを1つのECU(以下、機能統合ECU200という)に統合したこと(すること)を前提にする。統合前のECUが実行していたプログラムを実行する、機能統合ECU200の一連のハードウェアをHTという。
図1の左側に示すように、機能統合前はECU_A上でプログラムAが動作しており、ECU_B上でプログラムAが動作する。それぞれのプログラムA、Bには車両制御に必要な演算や入出力制御を行うメインタスクA,Bと、メインタスクA,Bが処理を完了し次回、メインタスクA,Bが立ち上がるまで動作するアイドルタスクA,Bが存在する。
機能統合後は、図1の右側に示すように、1つの機能統合ECU200内でプログラムAとBが独立に実行される。プログラムAを実行する一連のハードウェアがHT0、プログラムBを実行する一連のハードウェアがHT1、である。それぞれHT0,1は、プログラムAとプログラムBを擬似的に並行処理する。このため、外部からは、機能統合によるタイムラグが意識されることなく、1つの機能統合ECU200がECU_AとECU_Bの機能を不足なく提供できる。
なお、統合前のECUがOS上でプログラムを実行する場合があるが、この場合は、OSとプログラムが1つの“プログラム”となる。マイクロプロセッサ100は、実行している命令がプログラムかOSなのかを区別せずに実行する。こうすることで、統合前のECUが実行するプログラムとOSの振る舞いをそのままマイクロプロセッサ100に持ち込むことができる。したがって、プログラムはOSを含んでいてもよいし、OSを含んでいなくてもよい。本実施形態では、プログラムという場合、OSを含むか否かを問わない。
ECUの機能統合は、大幅なECU開発費の削減を可能とする可能性が高く、車両の価格競争力という点からも重要な技術となる。例えば、機能統合において、開発済みのプログラムをそのまま(機能統合後の機能統合ECU200に搭載可能か否かを詳しく検証することなく)機能統合ECU200に搭載できれば、機能統合ECU200の開発費を削減できることが期待される。
HMTという技術は、従来、ソフトウェアにより実現していた複数プログラムの同時実行をハードウェアにより実現する。ハードウェアで実現することで、プログラムの切り替え時のオーバヘッドをほぼゼロにでき、結果的にリアルタイム性が厳しく要求される車両の機能統合ECU200にも実装できるようになり、複数のECUの機能統合が実現される。
なお、統合前のECUは、例えば、燃料噴射量、エンジン回転数、吸気バルブの開放時間、空燃比の決定等を決定するエンジンECU、各輪のホイルシリンダ圧を決定するブレーキECU、エンジンとモータそれぞれの出力トルク、運転モード(モータ運転モード、エンジン+モータ運転モード)等を決定するハイブリッドECU等である。なお、このようなリアルタイム性が強い制御系のECUだけでなく、ボディECUやナビゲーション用のECUを統合してもよい。
〔マイクロプロセッサ100の構成〕
図2、3を用いて、マイクロプロセッサ100について説明する。図2は、マイクロプロセッサ100の概略構成図の一例を、図3はHMTプロセッサであるマイクロプロセッサ100のHTを模式的に説明する図の一例である。図2のマイクロプロセッサ100は、統合前の2つのECUを統合した例を示すが、3以上のECUを統合することもできる。また、統合することなく1つのプログラムのみを実行してもよい。
図2、3を用いて、マイクロプロセッサ100について説明する。図2は、マイクロプロセッサ100の概略構成図の一例を、図3はHMTプロセッサであるマイクロプロセッサ100のHTを模式的に説明する図の一例である。図2のマイクロプロセッサ100は、統合前の2つのECUを統合した例を示すが、3以上のECUを統合することもできる。また、統合することなく1つのプログラムのみを実行してもよい。
マイクロプロセッサ100は、命令フェッチバス25を介して命令記憶部23と、データアクセスバス26を介してデータ記憶部24と、それぞれ接続されている。図2のマイクロプロセッサ100は、HMT型のプロセッサである。図2のHMTを簡単に説明すれば、命令バッファ11(区別する場合、命令バッファ0,1という)と命令デコーダ12(区別する場合、命令デコーダ0,1という)を接続するマルチプレクサ19を、スケジュール制御装置16が切替制御することで、ハードウェア的にプログラム(HT)を選択し、選択したHTにプログラムの実行権を与えるという処理の実行方法である。
図2,3に示すように、マイクロプロセッサ100は、命令デコーダ0,1はレジスタ群0,1と接続されている。図4に示したように、命令バッファ0は命令デコーダ0と、命令デコーダ0はレジスタ群0と接続され、命令バッファ1は命令デコーダ1と、命令デコーダ1はレジスタ群1と接続される。
また、レジスタ群0,1はバス22を介して演算器14及びLSU15と接続される。スケジュール制御装置16はマルチプレクサ19に接続され、パイプライン制御装置17は命令デコーダ0,1、レジスタ群0,1、並びに、演算器14及びLSU15と接続されている。また、オフセットアドレス制御装置18には、命令デコーダ0,1、パイプライン制御装置17、並びに、演算器14及びLSU15と接続されている。
スケジュール制御装置16は、マルチプレクサ19を1クロックで切替制御できるので、プログラムの切り替え時のオーバヘッドはほぼ無視できる。
命令フェッチバス25は、アドレスバスとデータバスを有し、命令記憶部23に記憶された命令のアドレスをアドレスバスで指定して、読み出されたコード(例えば、全長32bitの長さのオペコードとオペランド)を、データバスを介して命令バッファ0,1に供給する。命令記憶部23は、機能統合ECU200ではフラッシュメモリなどの不揮発メモリであることが多い。なお、図3では命令記憶部23とデータ記憶部24が別体であるが、両者が一体の不揮発メモリに配置されることもある。
データアクセスバス26には、バスブリッジが設けられており、バスブリッジを介してRAM(SRAM、DRAM等の揮発メモリ)、周辺機器(A/D変換器、シリアルポート等)と接続されている。RAMには制御信号となる電圧値が一次保存されたり、周辺機器にはセンサ類の出力が接続されている。なお、上記のように、データ記憶部24が命令記憶部23と一体の不揮発メモリとなっていることが多い。
命令バッファ0,1にはそれぞれPC(プログラムカウンタ)が設けられている。命令バッファ0は、PCが指定するアドレスの1以上のコードをFIFOにて記憶するバッファであり、命令バッファ1は、プログラムBの1以上のコードをFIFOにて記憶するバッファである。
命令デコーダ12は命令バッファ11のコードのオペコードから命令を解読して演算の種類を特定し、オペランドから1つ以上のソースオペランド、演算結果の格納先等を解読する。オペコードの位置は先頭bitを基準にnbitからmbitのように仕様として定められている。解読結果は、命令デコーダ12が属するHTのレジスタ群13に格納される。
レジスタ群13は、命令デコーダ12の解読結果(命令の種別、1以上のソースオペランド、結果の格納場所等)、演算器の演算結果、LSU15がデータアクセスバス26を介してデータ記憶部24から読み出したデータ、及び、LSU15がデータ記憶部24に格納するデータ、を一時的に記憶する複数のレジスタ(汎用レジスタやフラグレジスタ)を集積したものである。
演算器14及びLSU15はHT0,1に対し共通に設けられている。演算器14はオペコードの解読結果に応じて四則演算を行ったりレジスタ群13のレジスタ操作を行う。また、演算器14は演算結果をレジスタ群13にライトバックする。LSU15はオペコードの解読結果がロード命令の場合、レジスタ群13のソースオペランドが指示する変位量とレジスタ内容からアドレスを決定し、データアクセスバス26を介してデータ記憶部24からデータを読み出す。読み出したデータは、ソースオペランドが指示するレジスタに格納する。同様に、LSU15はオペコードの解読結果がストア命令の場合、レジスタ群13のソースオペランドが指示する変位量とレジスタ内容からアドレスを決定し、ソースオペランドが指示するレジスタに格納されたデータを、決定したアドレスのデータ記憶部24に記憶させる。
<スケジュール制御>
スケジュール制御装置16は、各プログラムの実行比率が目標実行比率になるように命令の発行比率を制御する。具体的には、スケジュール制御装置16はマルチプレクサ19において命令バッファ0(1)と命令デコーダ0(1)を接続するか否か、を制御する。
スケジュール制御装置16は、各プログラムの実行比率が目標実行比率になるように命令の発行比率を制御する。具体的には、スケジュール制御装置16はマルチプレクサ19において命令バッファ0(1)と命令デコーダ0(1)を接続するか否か、を制御する。
実行比率は、HT0において例えば「実行される命令の数/単位時間」(=IPC:クロック単位の命令実行数)と、HT1におけるIPCの比である。両者の命令の実行速度を比較する指標であればIPC以外の比から求めてもよい。
目標実行比率は、各プログラムに提供すべきQoSにより予め定まっている。車両では、安全性を最重要視してプログラムの優先度が決まっており、この優先度はECUを機能統合しても変わらない。例えば、プログラムAが単位時間にA個の命令の実行が保証されるべきであり、プログラムBが単位時間にB個の命令の実行が保証されるべきであるなら、機能統合後もプログラムAとプログラムBの実行比率が保たれるべきだからである。統合前のプログラムA、Bの実行比率は開発者が決定するパラメータである。
ところで、パイプライン制御装置17は、各命令のステージを制御しているので、どのプログラムの命令が完了したかを検出でき、単位時間の実行完了命令数を監視できる。これをスケジュール制御装置16に通知すれば、スケジュール制御装置16は予め既知の実行効率と比較して、各プログラムの命令の発行比率を制御できる。
しかしながら、車載される機能統合ECU200、特に制御用の機能統合ECU200は後からプログラムが追加されることはほとんどないので、単位時間の実行完了命令数を監視するまでもなく、例えば、車両の設計時にカウントした単位時間の実行完了命令数は、市中を走行中の車両でも大きく変わることはない。このため、フィードバック的な制御は不要であり、スケジュール制御装置16は、車両の設計時に、統合前のプログラムA、Bの実行比率が保証されるように、目標実行効率になる命令の発行比率(目標発行比率)を定めておくことができる。なお、命令の種類によって実行完了するまでのクロック数が異なるので、発行比率と実行比率は一致しないが、この関係も調整して目標発行比率(=QoS)が定められる。以下の実施例を含め、スケジュール制御装置16がいくつか異なるQoSに目標発行比率を切り替えることが特徴となる。
また、目標発行比率は、例えば、単位時間のプログラムAの命令の発行数と、プログラムBの命令の発行数の比をいい、「30:70」「50:50」のように表すことができる。前者の場合、スケジュール制御装置16は、10回のクロックのうち3回、プログラムAの命令を命令デコーダ0に読み出し、10回のクロックのうち7回、プログラムBの命令を命令デコーダ1に読み出す。なお、マイクロプロセッサ100の性能が向上し、機能統合ECU200の実行速度が大きくなりすぎた場合、スケジュール制御装置16は「20:60:20(アイドル)」のように、マイクロプロセッサ100が命令を実行しないアイドル状態のタームを設けることもできる。スケジュール制御装置16には予めデフォルトの目標発行比率のQoSが定められている。
目標発行比率に従い、スケジュール制御装置16は、資源を割り当てるHTをクロック単位で制御しており、パイプライン制御装置17に該HTを通知している。こうすることで、パイプライン制御装置17は、資源を割り当てられたHTのステージを制御しながら命令を実行できる。
<パイプライン制御>
パイプライン制御装置17は、スケジュール制御装置16から通知されたHT毎に、命令バッファ11から命令デコーダ12へのコードの読み出し(命令フェッチ)、命令をデコードしてレジスタ群13への書き込み(命令デコード)、命令の実行、メモリアクセス(四則演算ではなにもしないステージ)、レジスタ群13へのライトバック、の各ステージの進行を制御する。すなわち、パイプライン制御装置17は、あるクロックにおいて、命令nのライトバック,命令n+1のメモリ・アクセス、命令n+2の実行,命令n+3の命令デコード、命令n+4の命令フェッチを、同時に行う。したがって、1クロック毎に平均的に1つの命令の実行結果が得られる。
パイプライン制御装置17は、スケジュール制御装置16から通知されたHT毎に、命令バッファ11から命令デコーダ12へのコードの読み出し(命令フェッチ)、命令をデコードしてレジスタ群13への書き込み(命令デコード)、命令の実行、メモリアクセス(四則演算ではなにもしないステージ)、レジスタ群13へのライトバック、の各ステージの進行を制御する。すなわち、パイプライン制御装置17は、あるクロックにおいて、命令nのライトバック,命令n+1のメモリ・アクセス、命令n+2の実行,命令n+3の命令デコード、命令n+4の命令フェッチを、同時に行う。したがって、1クロック毎に平均的に1つの命令の実行結果が得られる。
「HT毎に」とは、図3に示したように、命令バッファ0(1)と命令デコーダ12がマルチプレクサ19を介して接続された状態では、必ず、命令デコーダ12とレジスタ群0(1)が接続されることを意味する。
パイプラインのステージはHT毎に制御する必要があるため、パイプライン制御装置17は各HTを識別しながら(HTを識別する信号と共に)のパイプラインを制御している。すなわち、パイプライン制御装置17は、制御対象のHTを常に特定している。
なお、パイプライン制御装置17は、演算の種類やソースオペランド等を参照して、前の命令の実行結果を次の命令が必要とする場合には、次の命令のステージにアイドルステージを挿入するなどして、各ステージ間の整合性を確保する。また、例えば、あるプログラム(例えばプログラムA)にI/O待ちのようなハザードが生じた場合、パイプライン制御装置17はスレッドスケジュール装置にそのプログラムAを停止させ、別のプログラムBを実行するよう要求する。
なお、パイプライン制御装置17は、演算の種類やソースオペランド等を参照して、前の命令の実行結果を次の命令が必要とする場合には、次の命令のステージにアイドルステージを挿入するなどして、各ステージ間の整合性を確保する。また、例えば、あるプログラム(例えばプログラムA)にI/O待ちのようなハザードが生じた場合、パイプライン制御装置17はスレッドスケジュール装置にそのプログラムAを停止させ、別のプログラムBを実行するよう要求する。
<ソフトウェア監視装置18>
ソフトウェア監視装置18は、プログラムA、Bの動作状況を監視して、動作状況をスケジュール制御装置16に通知する。ソフトウェア監視装置18の具体的な動作については実施例2以下で説明する。
ソフトウェア監視装置18は、プログラムA、Bの動作状況を監視して、動作状況をスケジュール制御装置16に通知する。ソフトウェア監視装置18の具体的な動作については実施例2以下で説明する。
スケジュール制御装置16は、動作状況に応じて目標発行比率を、デフォルトのQoSから、動作状況に応じたQoSに切り替える。スケジュール制御装置16は、例えばレジスタから各QoSを読み出せるようになっている。
本実施例では説明のため、次のようにQoSが定められているとする。
・デフォルトのQoS
HT0:50
HT1:50
・第一のQoS
HT0:80
HT1:20
・第二のQoS
HT0:20
HT1:80
第一のQoSは、HT0の目標発行比率がHT1よりも高いので、プログラムAのメインタスクAとプログラムBのアイドルタスクBとが同時並行的に実行される動作状況のQoSである。逆に、第二のQoSは、プログラムAのアイドルタスクAとプログラムBのメインタスクBとが同時並行的に実行される動作状況のQoSである。
・デフォルトのQoS
HT0:50
HT1:50
・第一のQoS
HT0:80
HT1:20
・第二のQoS
HT0:20
HT1:80
第一のQoSは、HT0の目標発行比率がHT1よりも高いので、プログラムAのメインタスクAとプログラムBのアイドルタスクBとが同時並行的に実行される動作状況のQoSである。逆に、第二のQoSは、プログラムAのアイドルタスクAとプログラムBのメインタスクBとが同時並行的に実行される動作状況のQoSである。
ただし、スケジュール制御装置16は、プログラムAのメインタスクAとプログラムBのメインタスクBが同時並行的に実行される動作状況では、デフォルトのQoSを採用する。これにより、プログラムAとBのメインタスクA、Bに公平にQoSを提供できる。また、プログラムAのアイドルタスクAとプログラムBのアイドルタスクBが同時並行的に実行される動作状況では、スケジュール制御装置16は、動作状況が変わっても新たなQoSを採用せず、直前のQoSを採用したままとする。これにより、不要なQoSの切り替えを防止し消費電力を抑制でき、また、オーバヘッドの発生も抑制できる。
なお、スケジュール制御装置16は1クロック毎にHT0,1を切り替えることができるので、上記QoSは一例に過ぎず、0:100、1:99、2:98、3:97、…、99:1、100:0、のようにより多段階のQoSを採用できる。
また、HTが3つ以上の場合、ソフトウェア監視装置18は、3つのプログラムの動作状況をスケジュール制御装置16に通知する。スケジュール制御装置16は、個数分のHTに対応したQoSを採用する(例えば、HTが3つの場合、10:20:70)。
図4は、プログラムの動作状況とQoSの関係の一例を示す図である。プログラムAのメインタスクAとアイドルタスクA、プログラムBのメインタスクAとアイドルタスクBの組み合わせに応じて動作状況が定まる。スケジュール制御装置16は、動作状況に応じてQoSを切り替えていく。便宜的に、プログラムA、Bの動作状況を(HT0:HT1)の順番で表し、(メインA:メインB)を動作状況I、(メインA:アイドルB)を動作状況III、(アイドルA:メインB)を動作状況II、(アイドルA:アイドルB)を動作状況IV、と呼ぶことにする。図4の左から順番に説明する。
動作状況III:HT0はメインタスクAを、HT1はアイドルタスクBを、それぞれ実行している。したがって、スケジュール制御装置16は、QoSを(80:20)に設定する。
タスク変化I:イベントの発生や周期タスクのタイミングの到来等(以下、単にイベントの発生という)により、HT1が実行するタスクが、アイドルタスクBからメインタスクBに変化した。ソフトウェア監視装置18は、この変化を検出して、プログラムの動作状況をスケジュール制御装置16に通知する。
動作状況I:HT0はメインタスクAを、HT1はメインタスクBを、それぞれ実行している。したがって、スケジュール制御装置16は、QoSを(50:50)に設定する。
タスク変化II:HT0において、メインタスクAの実行が完了し、続いてアイドルタスクAの実行が始まった。ソフトウェア監視装置18は、この変化を検出して、プログラムの動作状況をスケジュール制御装置16に通知する。
動作状況II:HT0はアイドルタスクAを、HT1はメインタスクBを、それぞれ実行している。したがって、スケジュール制御装置16は、QoSを(20:80)に設定する。
タスク変化III:イベントの発生により、HT0が実行するタスクが、アイドルタスクAからメインタスクAに変化した。また、ほぼ同時期に、HT1において、メインタスクBの実行が完了し、続いてアイドルタスクBの実行が始まった。ソフトウェア監視装置18は、この変化を検出して、プログラムの動作状況をスケジュール制御装置16に通知する。
動作状況III:HT0はメインタスクAを、HT1はアイドルタスクBを、それぞれ実行している。したがって、スケジュール制御装置16は、QoSを(80:20)に設定する。
タスク変化IV:HT0において、メインタスクAの実行が完了し、続いてアイドルタスクAの実行が始まった。ソフトウェア監視装置18は、この変化を検出するが、プログラムの動作状況をスケジュール制御装置16に通知しない。
動作状況IV:HT0はアイドルタスクAを、HT1はアイドルタスクBを、それぞれ実行している。この場合、スケジュール制御装置16は、QoSを切り替えないので、QoSは(80:20)のままである。
タスク変化V:イベントの発生により、HT1が実行するタスクが、アイドルタスクBからメインタスクBに変化した。ソフトウェア監視装置18は、この変化を検出して、プログラムの動作状況をスケジュール制御装置16に通知する。
動作状況II:HT0はアイドルタスクAを、HT1はメインタスクBを、それぞれ実行している。この場合、スケジュール制御装置16は、QoSを(20:80)に設定する。
このように、マイクロプロセッサ100は、プログラムA,Bの動作状況に応じてHT0,1のQoSを切り替えるので、ECUを機能統合して別のプログラムA,Bが、メインタスクとアイドルタスクを実行する動作状況でも、適切なQoSにて各プログラムを実行することができる。
本実施例では、実施例1のソフトウェア監視装置18の具体的な実現方法について説明する。
図5は、マイクロプロセッサ100の概略構成図の一例を示す。図5のマイクロプロセッサ100は、ソフトウェア監視装置18がアドレス監視装置33に置き換わった点で図2と異なる。なお、図5において図2と同一部には同一の符号を付しその説明は省略する。
図5は、マイクロプロセッサ100の概略構成図の一例を示す。図5のマイクロプロセッサ100は、ソフトウェア監視装置18がアドレス監視装置33に置き換わった点で図2と異なる。なお、図5において図2と同一部には同一の符号を付しその説明は省略する。
アドレス監視装置33の概略的な特徴部は次のようになる。
(1)アドレス監視装置33は、プログラムAのアイドルタスクAの開始(終了)アドレス、アイドル属性タスクAの開始(終了)アドレス、並びに、プログラムBのアイドルタスクBの開始(終了)アドレス及びアイドル属性タスクBの開始(終了)アドレス、を読み出すことができる。
(2)アドレス監視装置33は、HT0,1のPCの値を監視する。
(3)アドレス監視装置33は、HT0,1のPCの値と、上記の各アドレスを比較して、動作状況を判定する。
(1)アドレス監視装置33は、プログラムAのアイドルタスクAの開始(終了)アドレス、アイドル属性タスクAの開始(終了)アドレス、並びに、プログラムBのアイドルタスクBの開始(終了)アドレス及びアイドル属性タスクBの開始(終了)アドレス、を読み出すことができる。
(2)アドレス監視装置33は、HT0,1のPCの値を監視する。
(3)アドレス監視装置33は、HT0,1のPCの値と、上記の各アドレスを比較して、動作状況を判定する。
PCの値を、開始アドレスAと終了アドレスAと比較すれば、HT0がアイドルタスクAを実行しているか否か(つまりメインタスクAを実行していることか否かも)を判定できる。プログラムBについても同様である。したがって、アドレス監視装置33は、実施例1と同様に動作状況を判定することができる。
〔レジスタについて〕
本実施例のマイクロプロセッサ100は、レジスタ群0,1とは別に複数のレジスタを有する。まず、アドレス監視装置33には、アイドルタスク開始アドレスレジスタ1、アイドルタスク開始アドレスレジスタ2、アイドルタスク終了アドレスレジスタ1、及び、アイドルタスク終了アドレスレジスタ2、が接続されている。さらに、アドレス監視装置33には、アイドル属性タスク開始アドレスレジスタ1、アイドル属性タスク開始アドレスレジスタ2、アイドル属性タスク終了アドレスレジスタ1、及び、アイドル属性タスク終了アドレスレジスタ2、が接続されている。
本実施例のマイクロプロセッサ100は、レジスタ群0,1とは別に複数のレジスタを有する。まず、アドレス監視装置33には、アイドルタスク開始アドレスレジスタ1、アイドルタスク開始アドレスレジスタ2、アイドルタスク終了アドレスレジスタ1、及び、アイドルタスク終了アドレスレジスタ2、が接続されている。さらに、アドレス監視装置33には、アイドル属性タスク開始アドレスレジスタ1、アイドル属性タスク開始アドレスレジスタ2、アイドル属性タスク終了アドレスレジスタ1、及び、アイドル属性タスク終了アドレスレジスタ2、が接続されている。
各レジスタに設定される値は以下のようになる。
アイドルタスク開始アドレスレジスタ1:アイドルタスクAの開始アドレス
アイドルタスク開始アドレスレジスタ2:アイドルタスクBの開始アドレス
アイドルタスク終了アドレスレジスタ1:アイドルタスクAの終了アドレス
アイドルタスク終了アドレスレジスタ2:アイドルタスクBの終了アドレス
アイドル属性タスク開始アドレスレジスタ1:アイドル属性タスクAの開始アドレス
アイドル属性タスク開始アドレスレジスタ2:アイドル属性タスクBの開始アドレス
アイドル属性タスク終了アドレスレジスタ1:アイドル属性タスクAの終了アドレス
アイドル属性タスク終了アドレスレジスタ2:アイドル属性タスクBの終了アドレス
図6は、これらのレジスタに設定される値をアドレスマップにて説明する図の一例である。マイクロプロセッサ100がアクセスできるアドレス空間は定まっており、このアドレス空間の中に命令記憶部23におけるプログラムA、プログラムBのアドレス、データ記憶部24におけるデータのアドレスも含まれる。
アイドルタスク開始アドレスレジスタ1:アイドルタスクAの開始アドレス
アイドルタスク開始アドレスレジスタ2:アイドルタスクBの開始アドレス
アイドルタスク終了アドレスレジスタ1:アイドルタスクAの終了アドレス
アイドルタスク終了アドレスレジスタ2:アイドルタスクBの終了アドレス
アイドル属性タスク開始アドレスレジスタ1:アイドル属性タスクAの開始アドレス
アイドル属性タスク開始アドレスレジスタ2:アイドル属性タスクBの開始アドレス
アイドル属性タスク終了アドレスレジスタ1:アイドル属性タスクAの終了アドレス
アイドル属性タスク終了アドレスレジスタ2:アイドル属性タスクBの終了アドレス
図6は、これらのレジスタに設定される値をアドレスマップにて説明する図の一例である。マイクロプロセッサ100がアクセスできるアドレス空間は定まっており、このアドレス空間の中に命令記憶部23におけるプログラムA、プログラムBのアドレス、データ記憶部24におけるデータのアドレスも含まれる。
不揮発性の命令記憶部23に記憶されたプログラムAとプログラムBのアドレスは固定であるので、アイドルタスクAの開始アドレス、アイドルタスクBの開始アドレス、アイドルタスクAの終了アドレス、アイドルタスクBの終了アドレスも固定である。したがって、ソフトウェア開発者がこれらのアドレスを特定しておけば、レジスタへの登録も可能となる。図6にはレジスタの値により示される各タスクのアドレスの範囲を示した。
ここで、アイドル属性タスクとは、アイドルタスクの処理をプリエンプトして(剥奪して)マイクロプロセッサ100を使用した後、アイドルタスクに処理を返すタスクである。アイドル属性タスクは、例えば、アイドルタスクから呼び出されるライブラリを実体とする。アイドル属性タスクの開始アドレスと終了アドレスを登録するレジスタを備えたことで、アイドルタスクがアイドル属性タスクにプリエンプトされても、アイドルタスクの実行中かメインタスクの実行中かを判定可能となる。
しかしながら、アイドル属性タスクはライブラリであるため、メインタスクもアイドル属性タスクを使用することがある。すると、PCがアイドル属性タスクAの開始アドレス〜アイドル属性タスクAの終了アドレスの範囲を示している場合、HT0がアイドルタスクAを実行しているのかメインタスクAを実行しているのか不明となる。そこで、後述するように、PCが、アイドル属性タスクAの開始アドレス〜アイドル属性タスクAの終了アドレスの範囲を示している場合、アドレス監視装置33は、アイドルタスクAの開始アドレス〜アイドルタスクの終了アドレスからその範囲のアドレスに移行したか否により、アイドルタスクの実行中か否かを判定する。
また、スケジュール制御装置16には、スケジュールレジスタ1、スケジュールレジスタ2、及び、デフォルトレジスタが接続されている。これらのレジスタに設定される値は以下のようになる。
スケジュールレジスタ1:第一のQoS
スケジュールレジスタ2:第二のQoS
デフォルトレジスタ :デフォルトのQoS
図7は、スケジュールレジスタ1、スケジュールレジスタ2及びデフォルトレジスタに格納される値を模式的に示す図の一例である。図7(a)はスケジュールレジスタ1を示し、第一のQoSが設定される。例えば上位16bitに「プログラムA実行割り当て設定エリア(80)」が、下位16bitに「プログラムB実行割り当て設定エリア(20)」が、それぞれ設定される。図7(b)はスケジュールレジスタ2を示し、第二のQoSが設定される。例えば上位16bitに「プログラムA実行割り当て設定エリア(20)」が、下位16bitに「プログラムB実行割り当て設定エリア(80)」が、それぞれ設定される。図7(c)はデフォルトレジスタを示し、デフォルトのQoSが設定される。例えば上位16bitに「プログラムA実行割り当て設定エリア(50)」が、下位16bitに「プログラムB実行割り当て設定エリア(50)」が、それぞれ設定される。
スケジュールレジスタ1:第一のQoS
スケジュールレジスタ2:第二のQoS
デフォルトレジスタ :デフォルトのQoS
図7は、スケジュールレジスタ1、スケジュールレジスタ2及びデフォルトレジスタに格納される値を模式的に示す図の一例である。図7(a)はスケジュールレジスタ1を示し、第一のQoSが設定される。例えば上位16bitに「プログラムA実行割り当て設定エリア(80)」が、下位16bitに「プログラムB実行割り当て設定エリア(20)」が、それぞれ設定される。図7(b)はスケジュールレジスタ2を示し、第二のQoSが設定される。例えば上位16bitに「プログラムA実行割り当て設定エリア(20)」が、下位16bitに「プログラムB実行割り当て設定エリア(80)」が、それぞれ設定される。図7(c)はデフォルトレジスタを示し、デフォルトのQoSが設定される。例えば上位16bitに「プログラムA実行割り当て設定エリア(50)」が、下位16bitに「プログラムB実行割り当て設定エリア(50)」が、それぞれ設定される。
〔レジスタへの値の設定〕
これらのレジスタ31とレジスタ32は、例えばシステムレジスタである。システムレジスタは、マイクロプロセッサ100が実行環境を制御するために使用したり、割り込み又は例外発生時にマイクロプロセッサ100の状態を保持するレジスタである。汎用レジスタを使用してもよいが、システムレジスタを使用することでこれらのレジスタへの書き換え経路を限定でき、プログラムA、Bの実行中にレジスタの内容が書き換わることを防止できる。
これらのレジスタ31とレジスタ32は、例えばシステムレジスタである。システムレジスタは、マイクロプロセッサ100が実行環境を制御するために使用したり、割り込み又は例外発生時にマイクロプロセッサ100の状態を保持するレジスタである。汎用レジスタを使用してもよいが、システムレジスタを使用することでこれらのレジスタへの書き換え経路を限定でき、プログラムA、Bの実行中にレジスタの内容が書き換わることを防止できる。
システムレジスタの書き換えには、マイクロプロセッサ100が用意するシステムレジスタ書き込み専用命令を利用する。そしてこのシステムレジスタ書き込み専用命令が記述されたソフトウェアが管理ソフト20である。管理ソフト20は、例えば、OSのマイクロカーネル、BIOS、ブートローダ等、どのようなソフトウェアを実体としてもよい。
機能統合ECU200の電源がオンになると、マイクロプロセッサ100が管理ソフト20を自動実行する。管理ソフト20は、自らに直接記述された、又は、データ記憶部24に記憶されているテーブルを読み出し、アイドルタスクAの開始アドレス、アイドルタスクBの開始アドレス、アイドルタスクAの終了アドレス、アイドルタスクBの終了アドレス、アイドル属性タスクAの開始アドレス、アイドル属性タスクBの開始アドレス、アイドル属性タスクAの終了アドレス、アイドル属性タスクBの終了アドレス、第一のQoS、第二のQoS及びデフォルトのQoS、をレジスタ31、32に設定する。
このようにソフト的にアイドルタスクのアドレスを操作することで、機能統合ECU200の可用性・柔軟性が向上する。また、ハードウェアに負担を与えずにQoSを切り替えることができる。
〔アドレス監視装置33による動作状況の判定〕
レジスタ31とレジスタ32に値が設定されると、アドレス監視装置33はプログラムA、Bの動作状況の判定を開始する。
図8は、アドレス監視装置33の機能を模式的に示す図の一例である。アドレス監視装置33は、アイドルタスク開始アドレスレジスタ1、アイドルタスク開始アドレスレジスタ2、アイドルタスク終了アドレスレジスタ1、アイドルタスク終了アドレスレジスタ2、アイドル属性タスク開始アドレスレジスタ1、アイドル属性タスク開始アドレスレジスタ2、アイドル属性タスク終了アドレスレジスタ1、及び、アイドル属性タスク終了アドレスレジスタ2、が入力側に接続された、比較器34を有する。また、比較器34の入力側には、命令バッファ0,1のPCがそれぞれ接続されている。比較器34の出力側にはスケジュール制御装置16が接続されている。
レジスタ31とレジスタ32に値が設定されると、アドレス監視装置33はプログラムA、Bの動作状況の判定を開始する。
図8は、アドレス監視装置33の機能を模式的に示す図の一例である。アドレス監視装置33は、アイドルタスク開始アドレスレジスタ1、アイドルタスク開始アドレスレジスタ2、アイドルタスク終了アドレスレジスタ1、アイドルタスク終了アドレスレジスタ2、アイドル属性タスク開始アドレスレジスタ1、アイドル属性タスク開始アドレスレジスタ2、アイドル属性タスク終了アドレスレジスタ1、及び、アイドル属性タスク終了アドレスレジスタ2、が入力側に接続された、比較器34を有する。また、比較器34の入力側には、命令バッファ0,1のPCがそれぞれ接続されている。比較器34の出力側にはスケジュール制御装置16が接続されている。
比較器34は命令バッファ0から出力されたPCの値が変化したことを検出した場合、又は、1クロック毎に、PCの値と、アイドルタスク開始アドレスレジスタ1、アイドルタスク終了アドレスレジスタ1、アイドル属性タスク開始アドレスレジスタ1、及び、アイドル属性タスク終了アドレスレジスタ1の値を比較する。
これにより、HT0がアイドルタスクAの実行中であることが検出できる。アイドルタスクAの実行中であることが検出できることは、アイドルタスクAの実行が開始されたこと及び終了されたことも検出できる。なお、具体的には、アイドルタスクAの実行中であることは、現在のPCの値が、
(a1)アイドルタスクA実行アドレス範囲に含まれること、
(a2)アイドルタスクA実行アドレス範囲から、プログラムAライブラリアドレス範囲に含まれる状態になったこと、
のいずれかを満たす場合として検出される。
(a1)アイドルタスクA実行アドレス範囲に含まれること、
(a2)アイドルタスクA実行アドレス範囲から、プログラムAライブラリアドレス範囲に含まれる状態になったこと、
のいずれかを満たす場合として検出される。
同様に、アドレス監視装置33は、現在のPCの値が、
(a1‘)メインタスクA実行アドレス範囲に含まれること、
(a2‘)メインタスクA実行アドレス範囲から、プログラムAライブラリアドレス範囲に含まれる状態になったこと、
のいずれかを満たす場合に、メインタスクAの実行中であることを検出できる。しかしながら、本実施例ではアイドルタスクAが実行されていなければメインタスクAが実行されていること、及び、アイドルタスクBが実行されていなければメインタスクBが実行されていること、を判断できる。
(a1‘)メインタスクA実行アドレス範囲に含まれること、
(a2‘)メインタスクA実行アドレス範囲から、プログラムAライブラリアドレス範囲に含まれる状態になったこと、
のいずれかを満たす場合に、メインタスクAの実行中であることを検出できる。しかしながら、本実施例ではアイドルタスクAが実行されていなければメインタスクAが実行されていること、及び、アイドルタスクBが実行されていなければメインタスクBが実行されていること、を判断できる。
よって、メインタスクA、Bが実行中か否かは積極的に判断しなくても、アイドルタスクの動作状況を監視することで、メインタスクA、Bの動作状況を監視した場合と同様になる。当然ながら、メインタスクA、Bが実行中か否かを判定しても、メインタスクA、Bの動作状況を監視できる。この監視方法は、エンジンが高回転時のエンジン制御など、メインタスクA、Bの負荷が高く、ある期間、アイドルタスクが1回も実行されない状況で有効である。
アドレス監視装置33は、PCの値が、アイドルタスクA実行アドレス範囲に一度でも含まれると、アイドルフラグAを「1(オン)」に設定する。つまり、アドレス監視装置33は、アイドルフラグAが「1」になった後、PCの値がアイドルタスクA実行アドレス範囲に含まれなくなっても、アイドルフラグAを「0」にしない。
また、アドレス監視装置33は、PCの値が、アイドルタスクAの終了アドレスに一致した場合にのみ、アイドルフラグAを「0」にする。こうすることで、HT0がプログラムAライブラリアドレス範囲の命令を実行しても、アイドルフラグAが「0」になることを防止できる。
このようにして、アドレス監視装置33は、HT0が、アイドルフラグAが「1」の場合はアイドルタスクA(ライブラリを含む)を実行中であると、アイドルフラグAが「0」の場合はメインタスクA(ライブラリを含む)を実行中であると、それぞれ判定できる。
同様に、HT1が、アイドルタスクBの実行中であることは、現在のPCの値が、
(b1)アイドルタスクB実行アドレス範囲に含まれること、
(a2)アイドルタスクB実行アドレス範囲から、プログラムBライブラリアドレス範囲に含まれる状態になったこと、
のいずれかを満たす場合として検出される。
(b1)アイドルタスクB実行アドレス範囲に含まれること、
(a2)アイドルタスクB実行アドレス範囲から、プログラムBライブラリアドレス範囲に含まれる状態になったこと、
のいずれかを満たす場合として検出される。
アドレス監視装置33は、アイドルフラグBの状態が「1」か「0」かによって、アイドルタスクB(ライブラリを含む)を実行中であること、又は、メインタスクB(ライブラリを含む)を実行中であること、をそれぞれ判定できる。
〔切り替え要求信号の出力〕
アドレス監視装置33は、HT0がアイドルタスクAを実行中か否か(メインタスクAが実行中か否か)、及び、HT1がアイドルタスクBを実行中か否か(メインタスクBが実行中か否か)、に基づき、切り替え要求信号を出力する。切り替え要求信号は、スケジュール制御装置16に、第一のQoS、第二のQoS又はデフォルトのQoSのいずれかを指示する信号である。
アドレス監視装置33は、HT0がアイドルタスクAを実行中か否か(メインタスクAが実行中か否か)、及び、HT1がアイドルタスクBを実行中か否か(メインタスクBが実行中か否か)、に基づき、切り替え要求信号を出力する。切り替え要求信号は、スケジュール制御装置16に、第一のQoS、第二のQoS又はデフォルトのQoSのいずれかを指示する信号である。
図9は、プログラムA、Bの動作状況と、アドレス監視装置33が出力する切り替え要求信号の関係の一例を示す図である。図9では、列方向にHT0がメインタスクAとアイドルタスクAのどちらを実行中かの条件が、行方向にHT1がメインタスクBとアイドルタスクBのどちらを実行中かの条件が、配置されている。したがって、図9では4つの動作状況に区分されている。
動作状況Iは、「HT0:メインタスクA HT1:メインタスクB」の動作状況なので、アドレス監視装置33はデフォルトレジスタのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。
動作状況IIは、「HT0:アイドルタスクA HT1:メインタスクB」の動作状況なので、アドレス監視装置33は第二のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。
動作状況IIIは、「HT0:メインタスクA HT1:アイドルタスクB」の動作状況なので、アドレス監視装置33は第一のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。
動作状況IVは、「HT0:アイドルタスクA HT1:アイドルタスクB」の動作状況なので、アドレス監視装置33は切り替え要求信号をスケジュール制御装置16に出力しない。
アドレス監視装置33は、動作状況が変化した場合にだけ、切り替え要求信号をスケジュール制御装置16に出力する。これにより、消費電力を抑制できる。また、アドレス監視装置33は、動作状況I〜IVに対応した切り替え要求信号を、継続的にスケジュール制御装置16に出力してもよい。
〔QoSの切り替え〕
スケジュール制御装置16は、切り替え要求信号をデコードして、切り替え要求信号に対応づけられたレジスタ32からQoSを読み出し、スケジュール制御装置16に設定する。すなわち、切り替え要求信号に基づき、スケジュールレジスタ1、スケジュールレジスタ2又はデフォルトレジスタのいずれかから、それぞれ第一のQoS、第二のQoS又はデフォルトのQoSを読み出す。こうすることで、マイクロプロセッサ100は、プログラムA、Bの動作状況に応じたQoSにてHT0,1を切り替えることができる(HT0,1に実行権を与えることができる)。
スケジュール制御装置16は、切り替え要求信号をデコードして、切り替え要求信号に対応づけられたレジスタ32からQoSを読み出し、スケジュール制御装置16に設定する。すなわち、切り替え要求信号に基づき、スケジュールレジスタ1、スケジュールレジスタ2又はデフォルトレジスタのいずれかから、それぞれ第一のQoS、第二のQoS又はデフォルトのQoSを読み出す。こうすることで、マイクロプロセッサ100は、プログラムA、Bの動作状況に応じたQoSにてHT0,1を切り替えることができる(HT0,1に実行権を与えることができる)。
〔プログラムの動作状況とQoSの関係〕
図10は、プログラムの動作状況とQoSの関係の一例を示す図である。図10の動作状況は図4と同じである。なお、タスク変化の数値I〜Vと、動作状況の数値I〜IVは特に関係していない。
図10は、プログラムの動作状況とQoSの関係の一例を示す図である。図10の動作状況は図4と同じである。なお、タスク変化の数値I〜Vと、動作状況の数値I〜IVは特に関係していない。
タスク変化I: 動作状況III→I
アドレス監視装置33は、動作状況がIに変化したことを検出して、デフォルトのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(50:50)に設定する。
アドレス監視装置33は、動作状況がIに変化したことを検出して、デフォルトのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(50:50)に設定する。
タスク変化II: 動作状況I→II
アドレス監視装置33は、動作状況がIIに変化したことを検出して、第二のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(20:80)に設定する。
アドレス監視装置33は、動作状況がIIに変化したことを検出して、第二のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(20:80)に設定する。
タスク変化III: 動作状況II→III
アドレス監視装置33は、動作状況がIIIに変化したことを検出して、第一のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(80:20)に設定する。
アドレス監視装置33は、動作状況がIIIに変化したことを検出して、第一のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(80:20)に設定する。
タスク変化IV: 動作状況III→IV
アドレス監視装置33は、動作状況がIVに変化したことを検出する。この場合、アドレス監視装置33は切り替え要求信号を出力しない。よって、QoSは(80:20)のままである。
アドレス監視装置33は、動作状況がIVに変化したことを検出する。この場合、アドレス監視装置33は切り替え要求信号を出力しない。よって、QoSは(80:20)のままである。
タスク変化V: 動作状況IV→II
アドレス監視装置33は、動作状況がIIに変化したことを検出して、第二のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(20:80)に設定する。
アドレス監視装置33は、動作状況がIIに変化したことを検出して、第二のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(20:80)に設定する。
以上説明したように、マイクロプロセッサ100は、プログラムA,Bの動作状況に応じてHT0,1のQoSを切り替えるので、ECUを機能統合して別のプログラムA,Bが、メインタスクとアイドルタスクを実行する動作状況でも、適切なQoSにて各プログラムを実行することができる。ソフト的にアイドルタスクのアドレスを操作することで、機能統合ECU200の可用性・柔軟性が向上し、コスト増を抑制できる。
既に述べたように、メインタスクは、イベント等が発生したことをトリガに実行され、アイドルタスクは、メインタスクが実行されていない場合にメインタスクの待ち状態を提供するタスクであることが多い。したがって、アイドルタスクの終了は、イベント発生と同じ意味である場合が多い。本実施例では、この事実を利用して、HT0,1がメインタスクの開始割り込みをトリガに、アイドルタスクの終了を検出し、動作状況の変化を検出するアドレス監視装置33について説明する。このような態様は、種々の割り込みをトリガにメインタスクを開始する車両のECUに応用しやすいものとなる。
図11は、マイクロプロセッサ100の概略構成図の一例を示す。図11のマイクロプロセッサ100において、図5と同一部には同一の符号を付しその説明は省略する。本実施例のマイクロプロセッサ100は割り込み判断装置35を有し、割り込み判断装置35がINTC(割り込みコントローラ)36と接続されている。また、アドレス監視装置33には、アイドルタスク開始アドレスレジスタ1、アイドルタスク開始アドレスレジスタ2、アイドル属性タスク開始アドレスレジスタ1、及び、アイドル属性タスク開始アドレスレジスタ2、が接続されている。すなわち、アイドルタスク終了アドレスレジスタ1、アイドルタスク終了アドレスレジスタ2、アイドル属性タスク終了アドレスレジスタ1、及び、アイドル属性タスク終了アドレスレジスタ2、を有する必要がない。
本実施例のマイクロプロセッサ100の概略的な特徴部は次のようになる。
(1)アドレス監視装置33は、プログラムAのアイドルタスクAの開始アドレス、アイドル属性タスクAの開始アドレス、並びに、プログラムBのアイドルタスクBの開始アドレス及びアイドル属性タスクBの開始アドレス、を読み出すことができる。
(2)アドレス監視装置33は、HT0,1のPCの値を監視する。
(3)アドレス監視装置33は、HT0,1のPCの値と、上記(1)の各アドレスを比較すると共に、割り込み判断装置35からの割り込み判断結果を取得して、動作状況を判定する。
(1)アドレス監視装置33は、プログラムAのアイドルタスクAの開始アドレス、アイドル属性タスクAの開始アドレス、並びに、プログラムBのアイドルタスクBの開始アドレス及びアイドル属性タスクBの開始アドレス、を読み出すことができる。
(2)アドレス監視装置33は、HT0,1のPCの値を監視する。
(3)アドレス監視装置33は、HT0,1のPCの値と、上記(1)の各アドレスを比較すると共に、割り込み判断装置35からの割り込み判断結果を取得して、動作状況を判定する。
PCの値を、アイドルタスクAの開始アドレスと比較すれば、アドレス監視装置33は、アイドルタスクAが開始されたことを検出でき、メインタスクAを開始する割り込み判断結果を取得すれば、アイドルタスクAが終了されたこと(メインタスクAが開始されたこと)を判定できる。プログラムBについても同様である。
図11の構成では、ソフトウェア開発者が、アイドルタスクAの終了アドレス、アイドルタスクBの終了アドレス、アイドル属性タスクAの終了アドレス、及び、アイドル属性タスクBの終了アドレス、を考慮しなくてよいので、レジスタの数も少なくて済み、開発コストを低減できる。
図12は、アドレスマップを説明する図の一例である。図6と異なり、アイドルタスクAの終了アドレス、アイドルタスクBの終了アドレス、アイドル属性タスクAの終了アドレス、及び、アイドル属性タスクBの終了アドレスは、アドレス監視装置33にとって不明となる。これを補うのがINTC36と割り込み判断装置35である。
〔INTC36、割り込み判断装置35〕
INTC36は、周辺機器(タイマ、センサ、他のECU等)、からの割り込み要因を受け付けて、マイクロプロセッサ100に割り込み要求するICである。INTC36と割り込み判断装置35は、REQ線51、ACK線52及びVEC線53を介して接続されている。REQ線51は、INTC36が割り込みの要求を通知する信号線である。割り込み判断装置35は、既に割り込みの処理をしているなどの多重割り込みを調整して、割り込みを許可する場合にACK線52を介して通知する。INTC36はVEC線53を介して、割り込み要因を通知する。
INTC36は、周辺機器(タイマ、センサ、他のECU等)、からの割り込み要因を受け付けて、マイクロプロセッサ100に割り込み要求するICである。INTC36と割り込み判断装置35は、REQ線51、ACK線52及びVEC線53を介して接続されている。REQ線51は、INTC36が割り込みの要求を通知する信号線である。割り込み判断装置35は、既に割り込みの処理をしているなどの多重割り込みを調整して、割り込みを許可する場合にACK線52を介して通知する。INTC36はVEC線53を介して、割り込み要因を通知する。
割り込み要因は、例えば、マイクロプロセッサ100の異常発生、車両の他のECUからの異常発生、周期タイマの経過通知、特定のI/O(センサ)からの信号の通知、等である。INTC36は、VEC線53を介して、この割り込み要因に応じて定められている割り込みベクタ番号を割り込み判断装置35に通知する。なお、INTC36は、プログラムAとBのいずれの割り込み要因も受け付ける。
割り込み判断装置35は、割り込みベクタ番号に対応づけて割り込みハンドラの開始アドレスが登録された割込みベクターテーブルを有する。本実施例では、例えば割込みベクターテーブルに、その割り込みベクタ番号がプログラムAのメインタスクAを呼び出すものなのか、プログラムBのメインタスクBを呼び出すものなのか、が登録されている。割り込み判断装置35は、INTC36から通知された割り込みベクタ番号に対応づけられた割り込みハンドラの開始アドレスをPCに設定する。これにより、割り込みハンドラが、アイドルタスクからメインタスクに切り替える処理を行い、HT0,1がメインタスクを開始することができる。
割り込み判断装置35は、INTC36から割り込み要求を受け付けた場合、メインタスクA又はメインタスクBを実行させるいずれかの割り込みが検出されたことを示す割り込み要求信号をアドレス監視装置33に出力する。
〔アドレス監視装置33による動作状況の判定〕
アドレス監視装置33は、例えば、機能統合ECU200の電源がオンになるとプログラムA、Bの動作状況の判定を開始する。
図13は、アドレス監視装置33の機能を模式的に示す図の一例である。本実施例のアドレス監視装置33の比較器34には、アイドルタスク開始アドレスレジスタ1、アイドルタスク開始アドレスレジスタ2、アイドル属性タスク開始アドレスレジスタ1、及び、アイドル属性タスク開始アドレスレジスタ2、が入力側に接続されている。また、比較器34の入力側には、命令バッファ0,1のPCがそれぞれ接続されている。また、比較器34の入力側には割り込み判断装置35が接続されている。比較器34の出力側にはスケジュール制御装置16が接続されている。
アドレス監視装置33は、例えば、機能統合ECU200の電源がオンになるとプログラムA、Bの動作状況の判定を開始する。
図13は、アドレス監視装置33の機能を模式的に示す図の一例である。本実施例のアドレス監視装置33の比較器34には、アイドルタスク開始アドレスレジスタ1、アイドルタスク開始アドレスレジスタ2、アイドル属性タスク開始アドレスレジスタ1、及び、アイドル属性タスク開始アドレスレジスタ2、が入力側に接続されている。また、比較器34の入力側には、命令バッファ0,1のPCがそれぞれ接続されている。また、比較器34の入力側には割り込み判断装置35が接続されている。比較器34の出力側にはスケジュール制御装置16が接続されている。
比較器34は命令バッファ0から出力されたPCの値が変化したことを検出した場合、又は、1クロック毎に、PCの値と、アイドルタスク開始アドレスレジスタ1の値を比較する。
これにより、HT0がアイドルタスクAを実行中であることが検出できる。より正確には、アイドルタスクAが開始したことを検出でき、終了していないことが間接的に(メインタスクAの実行が開始されない)検出できる。なお、アイドルタスクAの実行中であることは、PCの値が、
(a1)アイドルタスクAの開始アドレスと一致したこと、かつ、割り込み要求信号がメインタスクAの実行の開始を要求しないこと
を満たす場合として検出される。
(a1)アイドルタスクAの開始アドレスと一致したこと、かつ、割り込み要求信号がメインタスクAの実行の開始を要求しないこと
を満たす場合として検出される。
このように、本実施例のアドレス監視装置33は、割り込み要求信号に基づきメインタスクAの実行が開始されたこと(=アイドルタスクAの実行が終了したこと)を検出する。
具体的には、アドレス監視装置33は、PCの値が、アイドルタスクAの開始アドレスに一致すると、アイドルフラグAを「1(オン)」に設定する。アドレス監視装置33は、アイドルフラグAが「1」になった後、PCの値がアイドルタスクAの開始アドレスに一致しなくなっても、アイドルフラグAを「0」にしない。
また、アドレス監視装置33は、メインタスクAの割り込みを要求する割り込み要求信号を検出した場合にのみ、PCの値に関係なく、アイドルフラグAを「0」にする。こうすることで、HT0がプログラムAライブラリアドレス範囲の命令を実行しても、アイドルフラグAが「0」になることを防止できる。
このようにして、アドレス監視装置33は、アイドルフラグAが「1」の場合、HT0がアイドルタスクA(ライブラリを含む)を実行中であると、アイドルフラグAが「0」の場合、メインタスクA(ライブラリを含む)を実行中であると、それぞれ判定できる。
同様に、HT1が、アイドルタスクBの実行中であることは、現在のPCの値が、
(b1)アイドルタスクBの開始アドレスと一致したこと、かつ、割り込み要求信号がメインタスクBの実行の開始を要求しないこと
を満たす場合として検出される。
(b1)アイドルタスクBの開始アドレスと一致したこと、かつ、割り込み要求信号がメインタスクBの実行の開始を要求しないこと
を満たす場合として検出される。
アドレス監視装置33は、アイドルフラグBの状態が「1」か「0」かによって、アイドルタスクB(ライブラリを含む)を実行中であること、又は、メインタスクB(ライブラリを含む)を実行中であること、をそれぞれ判定できる。
〔切り替え要求信号の出力〕
アドレス監視装置33は、実施例2と同様に、切り替え要求信号を出力する。
図14は、プログラムA、Bの動作状況と、アドレス監視装置33が出力する切り替え要求信号の関係の一例を示す図である。図14は図9と同じものである。本実施例は、プログラムA,Bの動作状況の判定方法が実施例2と異なり、動作状況と切り替え要求信号の関係は実施例2と同じである。
アドレス監視装置33は、実施例2と同様に、切り替え要求信号を出力する。
図14は、プログラムA、Bの動作状況と、アドレス監視装置33が出力する切り替え要求信号の関係の一例を示す図である。図14は図9と同じものである。本実施例は、プログラムA,Bの動作状況の判定方法が実施例2と異なり、動作状況と切り替え要求信号の関係は実施例2と同じである。
すなわち、動作状況Iでは、アドレス監視装置33はデフォルトレジスタのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。動作状況IIでは、アドレス監視装置33は第二のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。動作状況IIIでは、アドレス監視装置33は第一のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。動作状況IVでは、アドレス監視装置33は切り替え要求信号をスケジュール制御装置16に出力しない。
〔QoSの切り替え〕
スケジュール制御装置16によるQoSの切り替えは、実施例2と同様であるので説明を省略する。
スケジュール制御装置16によるQoSの切り替えは、実施例2と同様であるので説明を省略する。
〔プログラムの動作状況とQoSの関係〕
図15は、プログラムの動作状況とQoSの関係の一例を示す図である。図15の動作状況は図4、図10と同じであるが、QoS入れ替えのトリガが異なる。
図15は、プログラムの動作状況とQoSの関係の一例を示す図である。図15の動作状況は図4、図10と同じであるが、QoS入れ替えのトリガが異なる。
タスク変化I: 動作状況III→I
INTC36が、割り込み要因に基づく割り込みベクタ信号を割り込み判断装置35に通知する。割り込み判断装置35が割り込みベクタ信号からメインタスクBを開始させる割り込み要求を受け付け、割り込み要求信号をアドレス監視装置33に通知する。アドレス監視装置33は、動作状況がIに変化したことを検出して、デフォルトのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(50:50)に設定する。
INTC36が、割り込み要因に基づく割り込みベクタ信号を割り込み判断装置35に通知する。割り込み判断装置35が割り込みベクタ信号からメインタスクBを開始させる割り込み要求を受け付け、割り込み要求信号をアドレス監視装置33に通知する。アドレス監視装置33は、動作状況がIに変化したことを検出して、デフォルトのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(50:50)に設定する。
タスク変化II: 動作状況I→II
アドレス監視装置33は、PCの値がアイドルタスクAの開始アドレスと一致したことから、動作状況がIIに変化したことを検出して、第二のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(20:80)に設定する。
アドレス監視装置33は、PCの値がアイドルタスクAの開始アドレスと一致したことから、動作状況がIIに変化したことを検出して、第二のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(20:80)に設定する。
タスク変化III: 動作状況II→III
INTC36が、割り込み要因に基づく割り込みベクタ信号を割り込み判断装置35に通知する。割り込み判断装置35が割り込みベクタ信号からメインタスクAを開始させる割り込み要求を受け付け、割り込み要求信号をアドレス監視装置33に通知する。また、アドレス監視装置33は、PCの値がアイドルタスクBの開始アドレスと一致したことを検出する。これらからアドレス監視装置33は、動作状況がIIIに変化したことを検出して、第一のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(80:20)に設定する。
INTC36が、割り込み要因に基づく割り込みベクタ信号を割り込み判断装置35に通知する。割り込み判断装置35が割り込みベクタ信号からメインタスクAを開始させる割り込み要求を受け付け、割り込み要求信号をアドレス監視装置33に通知する。また、アドレス監視装置33は、PCの値がアイドルタスクBの開始アドレスと一致したことを検出する。これらからアドレス監視装置33は、動作状況がIIIに変化したことを検出して、第一のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(80:20)に設定する。
タスク変化IV: 動作状況III→IV
アドレス監視装置33は、PCの値がアイドルタスクAの開始アドレスと一致したことから、動作状況がIVに変化したことを検出する。この場合、アドレス監視装置33は切り替え要求信号を出力しない。よって、QoSは(80:20)のままである。
アドレス監視装置33は、PCの値がアイドルタスクAの開始アドレスと一致したことから、動作状況がIVに変化したことを検出する。この場合、アドレス監視装置33は切り替え要求信号を出力しない。よって、QoSは(80:20)のままである。
タスク変化V: 動作状況IV→II
INTC36が、割り込み要因に基づく割り込みベクタ信号を割り込み判断装置35に通知する。割り込み判断装置35が割り込みベクタ信号からメインタスクBを開始させる割り込み要求を受け付け、割り込み要求信号をアドレス監視装置33に通知する。アドレス監視装置33は、動作状況がIIに変化したことを検出して、第二のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(20:80)に設定する。
INTC36が、割り込み要因に基づく割り込みベクタ信号を割り込み判断装置35に通知する。割り込み判断装置35が割り込みベクタ信号からメインタスクBを開始させる割り込み要求を受け付け、割り込み要求信号をアドレス監視装置33に通知する。アドレス監視装置33は、動作状況がIIに変化したことを検出して、第二のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(20:80)に設定する。
以上説明したように、マイクロプロセッサ100は、実施例2の効果に加え、車両のECUに応用しやすい態様で、QoSを切り替えることができる。割り込み判断装置35やINTC36は一般的なECUに設けられているので、レジスタの数が減っただけ実施例2よりもコスト減とすることができる。
これまでの実施例ではプログラムがOSを含むか否かを限定しなかったが、本実施例ではOSの機能を利用してQoSを切り替えるマイクロプロセッサ100について説明する。元々、OSが備える機能(Hook機能)とその機能をトリガにした処理(Hook処理)によりQoSを切り替えることで、レジスタ31の数を含めハードウェアリソースに影響されることなく、QoS比率の変更が可能になる。また、ソフトウェア開発時の自由度も増す。
図16は、マイクロプロセッサ100の概略構成図の一例を示す。図16において図2と同一部には同一の符号を付しその説明は省略する。図16のプログラムA、Bは、共通のOS37上で実行される。また、マイクロプロセッサ100は、ソフトウェア監視装置18としてHook監視装置38を有する。また、Hook監視装置38にはスケジュール切り替えレジスタ39が設けられている。
本実施例のマイクロプロセッサ100の概略的な特徴部は次のようになる。
(1)OS37のスケジューラがメインタスクA、アイドルタスクA、メインタスクB及びアイドルタスクBの状態を管理する。
(2)OS37のスケジューラが、アイドルタスクA、Bの実行を監視し、PreTaskHook及びPostTaskHookを利用してHook処理を起動する。
(3)Hook処理がスケジュール切り替えレジスタ39を操作する。
(1)OS37のスケジューラがメインタスクA、アイドルタスクA、メインタスクB及びアイドルタスクBの状態を管理する。
(2)OS37のスケジューラが、アイドルタスクA、Bの実行を監視し、PreTaskHook及びPostTaskHookを利用してHook処理を起動する。
(3)Hook処理がスケジュール切り替えレジスタ39を操作する。
〔Hook処理〕
図16に示したようにプログラムA、BはそれぞれOS37上で実行される。OS37はプログラムA,Bに共通である必要はなく、HT0がプログラムAに専用のOS_Aを実行し、HT1がプログラムBに専用のOS_Bを、それぞれ実行してもよい。
図16に示したようにプログラムA、BはそれぞれOS37上で実行される。OS37はプログラムA,Bに共通である必要はなく、HT0がプログラムAに専用のOS_Aを実行し、HT1がプログラムBに専用のOS_Bを、それぞれ実行してもよい。
OS37は、マルチタスクに対応したリアルタイムOS(タスクの最長実行時間が保証されている)であることが好ましい。OS37の一例としては、μITRON、Toppers/OSEK(Open system together with interfaces for automotive electronics)等が挙げられる。
図17は、OS37が提供するHook処理を模式的に説明する図の一例である。機能統合ECU200の起動時に、スケジューラにはメインタスクとアイドルタスクが登録される。各タスクは、例えば、実行状態、実行可能状態、及び、待ち状態の3つの状態を取り得るが、スケジューラは、HT0、1にそれぞれ割り当てるタスクをスケジューリングする。実行状態は、HT0、1がそのタスクを実行している状態を、実行可能状態は、タスクの実行に必要な条件は整っているが、当該タスクよりも優先順位が高いタスクが実行状態であるため、HT0、1が開放されるのを待っている状態である。実行待ち状態は、タスクを実行するための条件、例えば、周期サイクルの経過やイベント(主に割り込みの発生)を待っている状態である。
スケジューラとディスパッチャは、例えば次のような手順で状態間を遷移させる。
a)実行可能状態のタスクがアイドルタスクだけであれば、ディスパッチャがアイドルタスクをHT0(1)にディスパッチする。
b)割り込みなどによりメインタスクが実行可能状態になると、スケジューラがアイドルタスクを実行可能状態にする。
c)メインタスクの方が優先であることから、ディスパッチャがメインタスクをHT0(1)にディスパッチする。
d)メインタスクの実行が完了すると、メインタスクは消滅する。
e)ディスパッチャが、アイドルタスクをHT0(1)にディスパッチする。
a)実行可能状態のタスクがアイドルタスクだけであれば、ディスパッチャがアイドルタスクをHT0(1)にディスパッチする。
b)割り込みなどによりメインタスクが実行可能状態になると、スケジューラがアイドルタスクを実行可能状態にする。
c)メインタスクの方が優先であることから、ディスパッチャがメインタスクをHT0(1)にディスパッチする。
d)メインタスクの実行が完了すると、メインタスクは消滅する。
e)ディスパッチャが、アイドルタスクをHT0(1)にディスパッチする。
図17において、アイドルタスクが実行された状態から説明する。アイドルタスクが継続的に実行されるため、アイドルタスクは常に実行状態である。何らかの割り込みが発生すると、アイドルタスクが終了して(中断して)実行可能状態になるが、スケジューラはこの遷移をフックして、メインタスクに実行権を与える。
メインタスクとアイドルタスクが実行可能状態になるので、ディスパッチャはメインタスクを実行状態にする。ディスパッチの直後、PreTaskHookが起こり、HT0,1はHook処理Prを実行する。
メインタスクの実行を完了すると、スケジューラは実行状態のタスクが消滅したことを検出する。すでに、アイドルタスクが実行可能状態なので、スケジューラはアイドルタスクに実行権を与える。アイドルタスクが実行可能状態になるので、ディスパッチャはアイドルタスクを実行状態にする。ディスパッチの直後、PostTaskHookが起こり、HT0,1はHook処理Ptを実行する。
このように、メインタスクの処理開始の直後にPreTaskHookによるHook処理Prが、メインタスクの処理終了の直後にPostTaskHookによるHook処理Ptが、それぞれ実行される。
〔Hook処理〕
Hook処理Prは、PreTaskHookが呼び出すHook処理であり、Hook処理PtはPostTaskHookが呼び出すHook処理である。しかしながら、いずれのHook処理もスケジュール切り替えレジスタ39に値を書き込む処理である。
Hook処理Prは、PreTaskHookが呼び出すHook処理であり、Hook処理PtはPostTaskHookが呼び出すHook処理である。しかしながら、いずれのHook処理もスケジュール切り替えレジスタ39に値を書き込む処理である。
スケジュール切り替えレジスタ39は、第一のQoS、第二のQoS、又は、デフォルトのQoSのいずれかを指示する情報が書き込まれる、レジスタである。スケジュール切り替えレジスタ39が、HT0,1に共通であれば、Hook監視装置38は、例えばスケジュール切り替えレジスタ39の上位16bitにプログラムAの「アイドルタスクAの開始を示す情報」又は「アイドルタスクAの終了を示す情報」を書き込む。同様に、Hook監視装置38は、例えばスケジュール切り替えレジスタ39の下位16bitにプログラムBの「アイドルタスクBの開始を示す情報」又は「アイドルタスクBの終了を示す情報」を書き込む。
また、スケジュール切り替えレジスタ39が、HT0,1に別々に用意されていてもよい。この場合は、Hook監視装置38が、プログラムA、Bそれぞれのスケジュール切り替えレジスタ39に、「アイドルタスクA(B)の開始を示す情報」又は「アイドルタスクA(B)の終了を示す情報」を書き込む。
なお、スケジュール切り替えレジスタ39に値を書き込む方法は以下の2つの方法が例としてあげられる。
(i) システムレジスタアクセス専用命令を使う。
(i) システムレジスタアクセス専用命令を使う。
スケジュール切り替えレジスタ39がシステムレジスタとして定義されている場合に有効である。システムレジスタに書き込むための命令は、OS37の特権モードで使用が許可されるシステムレジスタアクセス専用なので、誤ってスケジュール切り替えレジスタ39に値が書き込まれることがない。
(ii) スケジュール切り替えレジスタ39切り替え(書き換え)専用命令を使う。
(ii) スケジュール切り替えレジスタ39切り替え(書き換え)専用命令を使う。
スケジュール切り替えレジスタ39がI/Oレジスタとして定義されている場合に有効である。スケジュール切り替えレジスタ39には、専用の命令が用意される。この命令はOS37のユーザモードでのみ使用できる命令である。
(i)と(ii)を使い分けることで、セキュリティ性が向上するという効果が得られる。
〔Hook監視装置38〕
図18は、Hook監視装置38の概略構成図の一例を示す。スケジュール切り替えレジスタ39がプログラムA,Bに共通の場合、0x00000000、0x00000001、0x00010000、又は、0x00010001、がスケジュール切り替えレジスタ39に設定される。Hook監視装置38は、この値をそのままスケジュール制御装置16に出力する。この値が本実施例の切り替え要求信号である。
図18は、Hook監視装置38の概略構成図の一例を示す。スケジュール切り替えレジスタ39がプログラムA,Bに共通の場合、0x00000000、0x00000001、0x00010000、又は、0x00010001、がスケジュール切り替えレジスタ39に設定される。Hook監視装置38は、この値をそのままスケジュール制御装置16に出力する。この値が本実施例の切り替え要求信号である。
例えば、0x00000000がアイドルタスクAの終了とアイドルタスクBの終了を(=HT0がメインタスクAを、HT1がメインタスクBを実行中)、0x00000001がアイドルタスクAの終了とアイドルタスクBの開始を(=HT0がメインタスクAを、HT1がアイドルタスクBを実行中)、0x00010001がアイドルタスクAの開始とアイドルタスクBの開始を(=HT0がアイドルタスクAを、HT1がアイドルタスクBを実行中)、0x00010000がアイドルタスクAの開始とアイドルタスクBの終了を(=HT0がアイドルタスクAを、HT1がメインタスクBを実行中)、を意味する。
〔QoSの切り替え〕
スケジュール制御装置16による、切り替え要求信号をデコードしてHT0とHT1のQoSの切り替える。
すなわち、スケジュール制御装置16は、次のように、スケジュール切り替えレジスタ1,2又はデフォルトレジスタから、QoSを読み出しHT0とHT1のQoSを切り替える。
・切り替え要求信号=0x00000000
HT0:HT1=(50:50)
・切り替え要求信号=0x00000001
HT0:HT1=(80:20)
・切り替え要求信号=0x00010001
直前のQoSを維持。または、Hook監視装置38が切り替え要求信号を出力しないようにしてもよい。
・切り替え要求信号=0x00010000
HT0:HT1=(20:80)
〔プログラムの動作状況とQoSの関係〕
図19は、プログラムの動作状況とQoSの関係の一例を示す図である。図19の動作状況は図4、図10、図15と同じであるが、QoS入れ替えのトリガが異なる。
スケジュール制御装置16による、切り替え要求信号をデコードしてHT0とHT1のQoSの切り替える。
すなわち、スケジュール制御装置16は、次のように、スケジュール切り替えレジスタ1,2又はデフォルトレジスタから、QoSを読み出しHT0とHT1のQoSを切り替える。
・切り替え要求信号=0x00000000
HT0:HT1=(50:50)
・切り替え要求信号=0x00000001
HT0:HT1=(80:20)
・切り替え要求信号=0x00010001
直前のQoSを維持。または、Hook監視装置38が切り替え要求信号を出力しないようにしてもよい。
・切り替え要求信号=0x00010000
HT0:HT1=(20:80)
〔プログラムの動作状況とQoSの関係〕
図19は、プログラムの動作状況とQoSの関係の一例を示す図である。図19の動作状況は図4、図10、図15と同じであるが、QoS入れ替えのトリガが異なる。
タスク変化I: 動作状況III→I
メインタスクBの実行が開始することでアイドルタスクBの実行が終了される。これにより、OS37がPreTaskHookを実行し、スケジュール切り替えレジスタ39に値を書き込む。Hook監視装置38は、切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(50:50)に設定する。
メインタスクBの実行が開始することでアイドルタスクBの実行が終了される。これにより、OS37がPreTaskHookを実行し、スケジュール切り替えレジスタ39に値を書き込む。Hook監視装置38は、切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(50:50)に設定する。
タスク変化II: 動作状況I→II
メインタスクAの実行が完了すると、OS(ディスパッチャ)がアイドルタスクAをディスパッチする前に、OS37がPostTaskHookを実行し、スケジュール切り替えレジスタ39に値を書き込む。Hook監視装置38は、切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(20:80)に設定する。
メインタスクAの実行が完了すると、OS(ディスパッチャ)がアイドルタスクAをディスパッチする前に、OS37がPostTaskHookを実行し、スケジュール切り替えレジスタ39に値を書き込む。Hook監視装置38は、切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(20:80)に設定する。
タスク変化III: 動作状況II→III
メインタスクAの実行が開始することでアイドルタスクAの実行が終了される。これにより、OS37がPrTaskHookを実行し、スケジュール切り替えレジスタ39に値を書き込む。Hook監視装置38は、切り替え要求信号をスケジュール制御装置16に出力する。
メインタスクAの実行が開始することでアイドルタスクAの実行が終了される。これにより、OS37がPrTaskHookを実行し、スケジュール切り替えレジスタ39に値を書き込む。Hook監視装置38は、切り替え要求信号をスケジュール制御装置16に出力する。
また、ほぼ同時期に、メインタスクBの実行が完了し、OS(ディスパッチャ)がアイドルタスクBをディスパッチする前に、OS37がPostTaskHookを実行し、スケジュール切り替えレジスタ39に値を書き込む。
Hook監視装置38は、切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(80:20)に設定する。
タスク変化IV: 動作状況III→IV
メインタスクAの実行が完了すると、OS(ディスパッチャ)がアイドルタスクAをディスパッチする前に、OS37がPostTaskHookを実行し、スケジュール切り替えレジスタ39に値を書き込む。Hook監視装置38は、切り替え要求信号をスケジュール制御装置16に出力する。この場合、動作状況がIVなので、Hook監視装置38が切り替え要求信号を出力しても、スケジュール制御し装置はQoSを切り替えないか、又は、Hook監視装置38が切り替え要求信号を出力しない。よって、QoSは(80:20)のままである。
メインタスクAの実行が完了すると、OS(ディスパッチャ)がアイドルタスクAをディスパッチする前に、OS37がPostTaskHookを実行し、スケジュール切り替えレジスタ39に値を書き込む。Hook監視装置38は、切り替え要求信号をスケジュール制御装置16に出力する。この場合、動作状況がIVなので、Hook監視装置38が切り替え要求信号を出力しても、スケジュール制御し装置はQoSを切り替えないか、又は、Hook監視装置38が切り替え要求信号を出力しない。よって、QoSは(80:20)のままである。
タスク変化V: 動作状況IV→II
メインタスクBの実行が開始することでアイドルタスクBの実行が終了される。これにより、OS37がPreTaskHookを実行し、スケジュール切り替えレジスタ39に値を書き込む。Hook監視装置38は、切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(20:80)に設定する。
メインタスクBの実行が開始することでアイドルタスクBの実行が終了される。これにより、OS37がPreTaskHookを実行し、スケジュール切り替えレジスタ39に値を書き込む。Hook監視装置38は、切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(20:80)に設定する。
以上説明したように、マイクロプロセッサ100は、OS37の機能を利用してQoSを切り替えることができるので、多くのレジスタを用意する実施例2,3と比べてコスト減とすることができる。
実施例4では、OS37のHook機能を利用したが、本実施例ではOS37が管理するタスクIDを利用してQoSを切り替えるマイクロプロセッサ100について説明する。タスクIDを利用することで、Hook処理を多用する必要がなくなり、ソフトウェア開発時の自由度が増大する。
図20は、マイクロプロセッサ100の概略構成図の一例を示す。図20において図16と同一部には同一の符号を付しその説明は省略する。図20のマイクロプロセッサ100は、ソフトウェア監視装置18としてTaskID監視装置41を有する。
本実施例のマイクロプロセッサ100の概略的な特徴部は次のようになる。
(1)OS37のスケジューラがメインタスクA、アイドルタスクA、メインタスクB及びアイドルタスクBの状態を管理して、現在実行中のタスクのタスクIDをカレントTaskIDレジスタ1,2に設定する。
(2)OS37等の管理ソフト20が、アイドルタスクA、BのタスクIDをアイドルTaskIDレジスタ1,2に設定する。
(3)TaskID監視装置41が、カレントTaskIDレジスタ1,2とアイドルTaskIDレジスタ1,2に設定された値を比較して、切り替え要求信号を出力する。
(1)OS37のスケジューラがメインタスクA、アイドルタスクA、メインタスクB及びアイドルタスクBの状態を管理して、現在実行中のタスクのタスクIDをカレントTaskIDレジスタ1,2に設定する。
(2)OS37等の管理ソフト20が、アイドルタスクA、BのタスクIDをアイドルTaskIDレジスタ1,2に設定する。
(3)TaskID監視装置41が、カレントTaskIDレジスタ1,2とアイドルTaskIDレジスタ1,2に設定された値を比較して、切り替え要求信号を出力する。
〔タスクID〕
実施例4にて説明したように、OS37は各タスクをスケジューリングしたりディスパッチしたりするため、タスクを管理している。このため、OS37は各タスクにユニークなタスクIDを割り当て、タスクIDで各タスクを識別する。したがって、例えば、OS37のスケジューラにとって、HT0,1のそれぞれで実行状態にある(カレントの)タスクのタスクIDは既知である。したがって、カレントのタスクのタスクIDを、アイドルタスクのタスクIDと比較すれば、HT0,1のそれぞれがアイドルタスクA、Bを実行しているか否か、すなわち動作状況が明らかになる。
実施例4にて説明したように、OS37は各タスクをスケジューリングしたりディスパッチしたりするため、タスクを管理している。このため、OS37は各タスクにユニークなタスクIDを割り当て、タスクIDで各タスクを識別する。したがって、例えば、OS37のスケジューラにとって、HT0,1のそれぞれで実行状態にある(カレントの)タスクのタスクIDは既知である。したがって、カレントのタスクのタスクIDを、アイドルタスクのタスクIDと比較すれば、HT0,1のそれぞれがアイドルタスクA、Bを実行しているか否か、すなわち動作状況が明らかになる。
管理ソフト20は、例えば、機能統合ECU200の起動時に、アイドルTaskIDレジスタ1にアイドルタスクAのタスクIDを、アイドルTaskIDレジスタ2にアイドルタスクBのタスクIDを、それぞれ設定する。
また、例えば、スケジューラは、HT0のタスクが切り替わると、カレントTaskIDレジスタ1に実行状態のタスクのタスクIDを設定し、HT1のタスクが切り替わると、カレントTaskIDレジスタ2に実行状態のタスクのタスクIDを設定する。
よって、アイドルTaskIDレジスタ1の値とカレントTaskIDレジスタ1の値の比較結果、及び、アイドルTaskIDレジスタ2の値とカレントTaskIDレジスタ2の値の比較結果から、TaskID監視装置41はプログラムA、Bの動作状況を特定できる。
〔TaskID監視装置41による動作状況の判定〕
TaskID監視装置41は、例えば、機能統合ECU200の電源がオンになるとプログラムA、Bの動作状況の判定を開始する。
図21は、TaskID監視装置41の機能を模式的に示す図の一例である。TaskID監視装置41の比較器34には、アイドルTaskIDレジスタ1、カレントTaskIDレジスタ1、アイドルTaskIDレジスタ2、及び、カレントTaskIDレジスタ2が接続されている。本実施例ではPCの接続は不要である。
TaskID監視装置41は、例えば、機能統合ECU200の電源がオンになるとプログラムA、Bの動作状況の判定を開始する。
図21は、TaskID監視装置41の機能を模式的に示す図の一例である。TaskID監視装置41の比較器34には、アイドルTaskIDレジスタ1、カレントTaskIDレジスタ1、アイドルTaskIDレジスタ2、及び、カレントTaskIDレジスタ2が接続されている。本実施例ではPCの接続は不要である。
比較器34は、アイドルTaskIDレジスタ1、カレントTaskIDレジスタ1、アイドルTaskIDレジスタ2、又は、カレントTaskIDレジスタ2の設定値が変化したことを検出した場合、又は、1クロック毎に、アイドルTaskIDレジスタ1の値とカレントTaskIDレジスタ1の値を比較し、又は、アイドルTaskIDレジスタ2の値とカレントTaskIDレジスタ2の値を比較する。
アイドルTaskIDレジスタ1の値とカレントTaskIDレジスタ1の値が一致すれば、HT0はアイドルタスクAを実行していることになる。一致しなければ、HT0はメインタスクAを実行していることになる。アイドルTaskIDレジスタ2の値とカレントTaskIDレジスタ2の値が一致すれば、HT1はアイドルタスクBを実行していることになる。一致しなければ、HT1はメインタスクBを実行していることになる。
〔切り替え要求信号の出力〕
TaskID監視装置41は、プログラムA、Bの動作状況に応じて切り替え要求信号を出力する。
図22は、プログラムA、Bの動作状況と、TaskID監視装置41が出力する切り替え要求信号の関係の一例を示す図である。図22は、図14、図9と同じものである。すなわち、動作状況と切り替え要求信号の関係は実施例2と同じである。
TaskID監視装置41は、プログラムA、Bの動作状況に応じて切り替え要求信号を出力する。
図22は、プログラムA、Bの動作状況と、TaskID監視装置41が出力する切り替え要求信号の関係の一例を示す図である。図22は、図14、図9と同じものである。すなわち、動作状況と切り替え要求信号の関係は実施例2と同じである。
これまでと同様、動作状況Iでは、TaskID監視装置41はデフォルトレジスタのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。動作状況IIでは、TaskID監視装置41は第二のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。動作状況IIIでは、TaskID監視装置41は第一のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。動作状況IVでは、TaskID監視装置41は切り替え要求信号をスケジュール制御装置16に出力しない。
〔プログラムの動作状況とQoSの関係〕
図23は、プログラムの動作状況とQoSの関係の一例を示す図である。図23の動作状況は図4、図10、図15、図19と同じであるが、QoS入れ替えのトリガが異なる。既に、管理ソフト20は、アイドルTaskIDレジスタ1にアイドルタスクAのタスクIDを、アイドルTaskIDレジスタ2にアイドルタスクBのタスクIDを、設定している。
図23は、プログラムの動作状況とQoSの関係の一例を示す図である。図23の動作状況は図4、図10、図15、図19と同じであるが、QoS入れ替えのトリガが異なる。既に、管理ソフト20は、アイドルTaskIDレジスタ1にアイドルタスクAのタスクIDを、アイドルTaskIDレジスタ2にアイドルタスクBのタスクIDを、設定している。
タスク変化I: 動作状況III→I
メインタスクBの実行が開始することでアイドルタスクBの実行が終了される。OS37のスケジューラは、メインタスクBのタスクIDをカレントTaskIDレジスタ2に設定する。カレントTaskIDレジスタ2の値とアイドルTaskIDレジスタ2の値は一致しない。また、HT0はメインタスクAを実行しているので、動作状況はIになる。よって、TaskID監視装置41は、デフォルトのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(50:50)に設定する。
メインタスクBの実行が開始することでアイドルタスクBの実行が終了される。OS37のスケジューラは、メインタスクBのタスクIDをカレントTaskIDレジスタ2に設定する。カレントTaskIDレジスタ2の値とアイドルTaskIDレジスタ2の値は一致しない。また、HT0はメインタスクAを実行しているので、動作状況はIになる。よって、TaskID監視装置41は、デフォルトのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(50:50)に設定する。
タスク変化II: 動作状況I→II
メインタスクAの実行が完了すると、OS37のスケジューラは、アイドルタスクAのタスクIDをカレントTaskIDレジスタ1に設定する。したがって、アイドルTaskIDレジスタ1のタスクIDとカレントTaskIDレジスタ1のタスクIDが一致する。また、HT1はメインタスクBを実行しているので、動作状況はIIになる。よって、TaskID監視装置41は、第二のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(20:80)に設定する。
メインタスクAの実行が完了すると、OS37のスケジューラは、アイドルタスクAのタスクIDをカレントTaskIDレジスタ1に設定する。したがって、アイドルTaskIDレジスタ1のタスクIDとカレントTaskIDレジスタ1のタスクIDが一致する。また、HT1はメインタスクBを実行しているので、動作状況はIIになる。よって、TaskID監視装置41は、第二のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(20:80)に設定する。
タスク変化III: 動作状況II→III
メインタスクAの実行が開始されることでアイドルタスクAの実行が終了される。OS37のスケジューラは、メインタスクAのタスクIDをカレントTaskIDレジスタ1に設定する。カレントTaskIDレジスタ1の値とアイドルTaskIDレジスタ1の値は一致しない。また、メインタスクBの実行が完了すると、OS37のスケジューラは、アイドルタスクBのタスクIDをカレントTaskIDレジスタ2に設定する。したがって、アイドルTaskIDレジスタ2のタスクIDとカレントTaskIDレジスタ2のタスクIDが一致する。よって、動作状況はIIIになる。TaskID監視装置41は、第一のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(80:20)に設定する。
メインタスクAの実行が開始されることでアイドルタスクAの実行が終了される。OS37のスケジューラは、メインタスクAのタスクIDをカレントTaskIDレジスタ1に設定する。カレントTaskIDレジスタ1の値とアイドルTaskIDレジスタ1の値は一致しない。また、メインタスクBの実行が完了すると、OS37のスケジューラは、アイドルタスクBのタスクIDをカレントTaskIDレジスタ2に設定する。したがって、アイドルTaskIDレジスタ2のタスクIDとカレントTaskIDレジスタ2のタスクIDが一致する。よって、動作状況はIIIになる。TaskID監視装置41は、第一のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(80:20)に設定する。
タスク変化IV: 動作状況III→IV
メインタスクAの実行が完了すると、OS37のスケジューラは、アイドルタスクAのタスクIDをカレントTaskIDレジスタ1に設定する。したがって、アイドルTaskIDレジスタ1のタスクIDとカレントTaskIDレジスタ1のタスクIDが一致する。また、HT1はアイドルタスクBを実行しているので、動作状況はIVになる。よって、TaskID監視装置41は、切り替え要求信号をスケジュール制御装置16に出力しない。よって、QoSは(80:20)のままである。
メインタスクAの実行が完了すると、OS37のスケジューラは、アイドルタスクAのタスクIDをカレントTaskIDレジスタ1に設定する。したがって、アイドルTaskIDレジスタ1のタスクIDとカレントTaskIDレジスタ1のタスクIDが一致する。また、HT1はアイドルタスクBを実行しているので、動作状況はIVになる。よって、TaskID監視装置41は、切り替え要求信号をスケジュール制御装置16に出力しない。よって、QoSは(80:20)のままである。
タスク変化V: 動作状況IV→II
メインタスクBの実行が開始することでアイドルタスクBの実行が終了される。OS37のスケジューラは、メインタスクBのタスクIDをカレントTaskIDレジスタ2に設定する。カレントTaskIDレジスタ2の値とアイドルTaskIDレジスタ2の値は一致しない。また、HT0はアイドルタスクAを実行しているので、動作状況はIIになる。よって、TaskID監視装置41は、第二のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(20:80)に設定する。
メインタスクBの実行が開始することでアイドルタスクBの実行が終了される。OS37のスケジューラは、メインタスクBのタスクIDをカレントTaskIDレジスタ2に設定する。カレントTaskIDレジスタ2の値とアイドルTaskIDレジスタ2の値は一致しない。また、HT0はアイドルタスクAを実行しているので、動作状況はIIになる。よって、TaskID監視装置41は、第二のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(20:80)に設定する。
以上説明したように、マイクロプロセッサ100は、OS37の機能を利用してQoSを切り替えることができるので、多くのレジスタを用意する実施例4と比べてコスト減とすることができる。
本実施例では、QoSをより多段階に切り替えるマルチプロセッサについて説明する。
図24は、マイクロプロセッサ100の概略構成図の一例を示す。図24において、図5と同一部には同一の符号を付しその説明は省略する。図24のマイクロプロセッサ100は、パイプライン制御装置17がアドレス監視装置33にHT0,1の負荷比を通知する点で、これまでの実施例と異なる。また、スケジュール制御装置16に、スケジュールレジスタ1,2,3、4及びデフォルトレジスタが接続されている。
図24は、マイクロプロセッサ100の概略構成図の一例を示す。図24において、図5と同一部には同一の符号を付しその説明は省略する。図24のマイクロプロセッサ100は、パイプライン制御装置17がアドレス監視装置33にHT0,1の負荷比を通知する点で、これまでの実施例と異なる。また、スケジュール制御装置16に、スケジュールレジスタ1,2,3、4及びデフォルトレジスタが接続されている。
本実施例のマイクロプロセッサ100の概略的な特徴部は次のようになる。
(1)パイプライン制御装置が、HT0,1の負荷比をアドレス監視装置33に通知する。
(2)管理ソフト20がスケジュールレジスタ1,2,3、4及びデフォルトレジスタにそれぞれ異なる5つのQoSを設定する。
(3)スケジュール制御装置16は、プログラムA、Bの動作状況と負荷比に基づき、HT0、1を5段階のQoSに切り替える。
(1)パイプライン制御装置が、HT0,1の負荷比をアドレス監視装置33に通知する。
(2)管理ソフト20がスケジュールレジスタ1,2,3、4及びデフォルトレジスタにそれぞれ異なる5つのQoSを設定する。
(3)スケジュール制御装置16は、プログラムA、Bの動作状況と負荷比に基づき、HT0、1を5段階のQoSに切り替える。
HT0がメインタスクAを、HT1がアイドルタスクBを実行している場合、又は、HT0がアイドルタスクAを、HT1がメインタスクBを実行している場合、アドレス監視装置33は負荷比に応じて適切なQoSをスケジュール制御装置16に指示することができる。
〔プログラムA、Bの動作状況〕
本実施例では、実施例2と同様に、アドレス監視装置33は、現在のPCの値が、
(a1)アイドルタスクA実行アドレス範囲に含まれること、
(a2)アイドルタスクA実行アドレス範囲から、プログラムAライブラリアドレス範囲に含まれる状態になったこと、
のいずれかを満たす場合に、HT0がアイドルタスク0を実行中であると判定する。プログラムBについても同様である。
本実施例では、実施例2と同様に、アドレス監視装置33は、現在のPCの値が、
(a1)アイドルタスクA実行アドレス範囲に含まれること、
(a2)アイドルタスクA実行アドレス範囲から、プログラムAライブラリアドレス範囲に含まれる状態になったこと、
のいずれかを満たす場合に、HT0がアイドルタスク0を実行中であると判定する。プログラムBについても同様である。
なお、プログラム動作状況は、実施例3のようにアドレス監視装置33と割り込み判断装置35により、実施例4のようにHook監視装置38により、又は、実施例5のようにTaskID監視装置41により、検出してもよい。
〔HT0,1の負荷比〕
パイプライン制御装置17は、上記のようにステージを制御しているHT0,1を特定している。したがって、パイプライン制御装置17にとって、HT0,1の実際の実行比率である負荷比は既知である。負荷比は、例えば、単位時間におけるHT0の命令の発行数とHT1の命令の発行数の比、又は、単位時間におけるHT0の命令の完了数とHT1の命令の完了数の比、である。ここでは、例えば、後者の指標を採用し、所定クロック数(時間)の命令の完了数から負荷比を求めるものとする。なお、負荷比は、一の位を丸め10%単位にする。
パイプライン制御装置17は、上記のようにステージを制御しているHT0,1を特定している。したがって、パイプライン制御装置17にとって、HT0,1の実際の実行比率である負荷比は既知である。負荷比は、例えば、単位時間におけるHT0の命令の発行数とHT1の命令の発行数の比、又は、単位時間におけるHT0の命令の完了数とHT1の命令の完了数の比、である。ここでは、例えば、後者の指標を採用し、所定クロック数(時間)の命令の完了数から負荷比を求めるものとする。なお、負荷比は、一の位を丸め10%単位にする。
上記のように、スケジュール制御装置16はフィードバック制御していないので、QoSと実際の負荷比は完全には一致しない。そこで、アドレス監視装置33は、動作状況毎に負荷比を記録しておき、動作状況と負荷比に応じて切り替え要求信号をスケジュール制御装置16に出力する。
図25は、アドレス監視装置33が記録した動作状況毎の負荷比の一例を模式的に示す図の一例である。アドレス監視装置33は、各動作状況毎に最も新しい負荷比を記憶している。ここで、動作状況IVの負荷比の合計が100でないのでは、HT0,1がNOPを実行するなど、両者ともライトバックに至る命令をほとんど実行しなかったためである。
〔レジスタについて〕
レジスタ31は、実施例2と同じものである。また、レジスタ31の値の設定方法も実施例2と同じである。
レジスタ31は、実施例2と同じものである。また、レジスタ31の値の設定方法も実施例2と同じである。
これに対し、スケジュール制御装置16には、スケジュールレジスタ1〜4、及び、デフォルトレジスタが接続されている。これらのレジスタに設定される値は以下のようになる。
スケジュールレジスタ1:第一の1のQoS
スケジュールレジスタ2:第一の2のQoS
スケジュールレジスタ3:第二の1のQoS
スケジュールレジスタ4:第二の2のQoS
デフォルトレジスタ :デフォルトのQoS
第一の1のQoSと第一の2のQoSは、HT0がメインタスクAをかつHT1がアイドルタスクBを、それぞれ実行している場合に設定されるQoSである。同様に、第二の1のQoSと第二の2のQoSは、HT1がメインタスクBをかつHT0がアイドルタスクAを、それぞれ実行している場合に設定されるQoSである。
スケジュールレジスタ1:第一の1のQoS
スケジュールレジスタ2:第一の2のQoS
スケジュールレジスタ3:第二の1のQoS
スケジュールレジスタ4:第二の2のQoS
デフォルトレジスタ :デフォルトのQoS
第一の1のQoSと第一の2のQoSは、HT0がメインタスクAをかつHT1がアイドルタスクBを、それぞれ実行している場合に設定されるQoSである。同様に、第二の1のQoSと第二の2のQoSは、HT1がメインタスクBをかつHT0がアイドルタスクAを、それぞれ実行している場合に設定されるQoSである。
QoSのフォーマットは実施例2と同様である。すなわち、上位16bitが「プログラムA実行割り当て設定エリア」で、下位16bitが「プログラムB実行割り当て設定エリア」である。
なお、アドレス監視装置33が有するスケジュール切り替えレジスタ39については後述する。
レジスタに値を設定するのは、実施例2と同様に管理ソフト20とすることができる。本実施例では管理ソフト20の一例として、OS37が値を設定するものとする。
図26は、OS37によるスケジュールレジスタ1〜4への値の設定を模式的に説明する図の一例である。OS37等の管理ソフト20は、マイクロプロセッサ100のRAM又はROMにスケジュール管理テーブル42を記憶している。本実施例では、このスケジュール管理テーブル42に、スケジュールレジスタ1〜4に設定すべき値が登録されている。
図26の左に示すように、スケジュール管理テーブル42には第一の1のQoS=(90:10)、第一の2のQoS=(60:40)、第二の1のQoS=(40:60)、第二の2のQoS=(10:90)の4つのQoSが登録されている。
そして、例えば、機能統合ECU200の電源がオンになると、マイクロプロセッサ100がOS(管理ソフト20)37を自動実行する。OS37は、スケジュール管理テーブル42を読み出し、スケジュールレジスタ1〜4に、それぞれのQoSを設定する。
〔切り替え要求信号の出力〕
図27を用いて本実施例の切り替え要求信号について説明する。図27の比較器34以下の構成は図8と同じものである。したがって、比較器34は、動作状況を識別する信号を出力することができる。比較器34は、動作状況がI〜IIIの場合は、スケジュール切り替えレジスタ39の上位16bitに「1」を設定する。動作状況がIVの場合は、QoSを切り替えないので、スケジュール切り替えレジスタ39の上位16bitに「0」を設定する。上位16bit(スケジュール切り替えトリガ)が「1」の場合、下位16bitのスケジュール指示値の値がスケジュール制御装置16に送信される。
図27を用いて本実施例の切り替え要求信号について説明する。図27の比較器34以下の構成は図8と同じものである。したがって、比較器34は、動作状況を識別する信号を出力することができる。比較器34は、動作状況がI〜IIIの場合は、スケジュール切り替えレジスタ39の上位16bitに「1」を設定する。動作状況がIVの場合は、QoSを切り替えないので、スケジュール切り替えレジスタ39の上位16bitに「0」を設定する。上位16bit(スケジュール切り替えトリガ)が「1」の場合、下位16bitのスケジュール指示値の値がスケジュール制御装置16に送信される。
動作状況を識別する信号は、図25に示した動作状況毎の負荷比を選択する信号となり、例えば、動作状況IIの場合はメインタスクAの負荷比として「90」を選択し、動作状況IIIの場合はメインタスクBの負荷比として「90」を選択する。
選択された負荷比は第2比較器43に出力され、定数と比較される。この定数の値もレジスタ31と同様に設定される。図では、第2比較器43は、メインタスクAの実際の負荷比「90」と定数(80)を比較し、負荷比の方が大きい場合は「1」を、負荷比が定数以下の場合は「2」を、スケジュール切り替えレジスタ39の下位16bitに設定する。同様に、第2比較器43は、メインタスクBの実際の負荷比「90」と定数(80)を比較し、負荷比の方が大きい場合は「4」を、負荷比が定数以下の場合は「3」を、スケジュール切り替えレジスタ39の下位16bitに設定する。
スケジュール切り替えレジスタ39の下位16bitのスケジュール指示値は、スケジュールレジスタ1〜4のいずれかを選択するスケジュール指示の信号となる。したがって、アドレス監視装置33は、負荷比に応じて、適切なQoSに切り替える切り替え要求信号をスケジュール制御装置16に出力することができる。
なお、動作状況がIの場合、比較器34がスケジュール切り替えレジスタ39の下位16bitにデフォルトレジスタを指示する値(例えば「5」)を設定することで、アドレス監視装置33は、デフォルトのQoSをスケジュール制御装置16に出力することができる。動作状況がIの場合も、第2比較器43を介して、QoSを多段階に指定するようにしてもよい。
〔プログラムの動作状況とQoSの関係〕
図28は、プログラムの動作状況とQoSの関係の一例を示す図である。図28の動作状況は図4、図10、図15、図19、図23と同じであるが、各動作状況に負荷比が記されている。この負荷比は、対応する動作状況の負荷比である。
図28は、プログラムの動作状況とQoSの関係の一例を示す図である。図28の動作状況は図4、図10、図15、図19、図23と同じであるが、各動作状況に負荷比が記されている。この負荷比は、対応する動作状況の負荷比である。
タスク変化I: 動作状況III→I
アドレス監視装置33は、動作状況がIに変化したことを検出して、デフォルトのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(50:50)に設定する。
アドレス監視装置33は、動作状況がIに変化したことを検出して、デフォルトのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(50:50)に設定する。
タスク変化II: 動作状況I→II
アドレス監視装置33は、動作状況がIIに変化したことを検出する。これにより、第2比較器43が過去の不図示の動作状況IIの負荷比と定数を比較して、スケジュールレジスタ4を指示するスケジュール指示値をスケジュール切り替えレジスタ39の下位16bitに設定する。これにより、スケジュール制御装置16は、スケジュールレジスタ4から読み出した(10:90)のQoSを設定する。
アドレス監視装置33は、動作状況がIIに変化したことを検出する。これにより、第2比較器43が過去の不図示の動作状況IIの負荷比と定数を比較して、スケジュールレジスタ4を指示するスケジュール指示値をスケジュール切り替えレジスタ39の下位16bitに設定する。これにより、スケジュール制御装置16は、スケジュールレジスタ4から読み出した(10:90)のQoSを設定する。
タスク変化III: 動作状況II→III
アドレス監視装置33は、動作状況がIIIに変化したことを検出する。これにより、第2比較器43が最後の動作状態IIIの負荷比(90:10)と定数を比較して、スケジュールレジスタ1を指示するスケジュール指示値をスケジュール切り替えレジスタ39の下位16bitに設定する。これにより、スケジュール制御装置16は、スケジュールレジスタ1から読み出した(90:10)のQoSを設定する。
アドレス監視装置33は、動作状況がIIIに変化したことを検出する。これにより、第2比較器43が最後の動作状態IIIの負荷比(90:10)と定数を比較して、スケジュールレジスタ1を指示するスケジュール指示値をスケジュール切り替えレジスタ39の下位16bitに設定する。これにより、スケジュール制御装置16は、スケジュールレジスタ1から読み出した(90:10)のQoSを設定する。
タスク変化IV: 動作状況III→IV
アドレス監視装置33は、動作状況がIVに変化したことを検出する。この場合、アドレス監視装置33は切り替え要求信号を出力しない。よって、QoSは(90:10)のままである。
アドレス監視装置33は、動作状況がIVに変化したことを検出する。この場合、アドレス監視装置33は切り替え要求信号を出力しない。よって、QoSは(90:10)のままである。
タスク変化V: 動作状況IV→II
アドレス監視装置33は、動作状況がIIに変化したことを検出する。これにより、第2比較器43が最後の動作状態IIの負荷比(10:90)と定数を比較して、スケジュールレジスタ4を指示するスケジュール指示値をスケジュール切り替えレジスタ39の下位16bitに設定する。これにより、スケジュール制御装置16は、スケジュールレジスタ4から読み出した(10:90)のQoSを設定する。
アドレス監視装置33は、動作状況がIIに変化したことを検出する。これにより、第2比較器43が最後の動作状態IIの負荷比(10:90)と定数を比較して、スケジュールレジスタ4を指示するスケジュール指示値をスケジュール切り替えレジスタ39の下位16bitに設定する。これにより、スケジュール制御装置16は、スケジュールレジスタ4から読み出した(10:90)のQoSを設定する。
以上説明したように、本実施例のマイクロプロセッサ100は、プログラムA、Bの同じ動作状況でもQoSを多段階に設定することができる。多段階のQoSは、マイクロプロセッサ100の負荷率から決定されるので、負荷率に応じてQoSを調整することができる。
本実施例では、アイドルタスクの内容を区分して、HT0がメインタスクAをHT1がアイドルタスクBを実行している場合、そのアイドルタスクBが比較的重要なアイドルタスクかそうでないかに応じて、QoSを変えるマイクロプロセッサ100について説明する。HT0がアイドルタスクAを、HT1がメインタスクBをそれぞれ実行している場合も同様である。
アイドルタスクには、I/OレジスタやRAMの内容をチェックして値に変化がないかどうかを確認する比較的重要なアイドル処理(以下、フェールセーフ処理という)と、メインタスクを待つ(ポーリング状態)だけのアイドル処理(以下、無限ループ処理というお)がある。無限ループ処理に対し割り当てられるQoSが減少して処理速度が低下しても問題はないが、フェールセーフ処理はある一定期間内に処理を終了させる必要があるため、QoSが減少して処理速度が低下することは好ましくない。
そこで、本実施例では、マイクロプロセッサ100が、アイドルタスクがフェールセーフ処理か、無限ループ処理かを区別して、QoSを切り替えることで、フェールセーフ処理のアイドルタスクには大きなQoSが割り当てられるようにする。
図29は、マイクロプロセッサ100の概略構成図の一例を示す。図29において、図20と同一部には同一の符号を付しその説明は省略する。図29に示すように、アイドルタスクAは、アイドルタスクA1とアイドルタスクA2を、アイドルタスクBは、アイドルタスクB1とアイドルタスクB2を、有する。アイドルタスクA1とアイドルタスクB1がフェールセーフ処理、アイドルタスクA2とアイドルタスクB2が無限ループ処理、であるとする。
また、TaskID監視装置41には、カレントTaskIDレジスタ1,2,アイドルタスクIDレジスタ1〜4が接続されている。
本実施例のマイクロプロセッサ100の概略的な特徴部は次のようになる。
(1)OS37のスケジューラがメインタスクA、アイドルタスクA、メインタスクB及びアイドルタスクBの状態を管理して、現在実行中のタスクのタスクIDをカレントTaskIDレジスタに設定する。
(2)OS37等の管理ソフト20が、アイドルタスクA1、A2、B1、B2のタスクIDをアイドルTaskIDレジスタ1〜4に設定する。
(3)TaskID監視装置41が、カレントTaskIDレジスタとアイドルTaskIDレジスタ1〜4に設定された値を比較して、切り替え要求信号を出力する。
(1)OS37のスケジューラがメインタスクA、アイドルタスクA、メインタスクB及びアイドルタスクBの状態を管理して、現在実行中のタスクのタスクIDをカレントTaskIDレジスタに設定する。
(2)OS37等の管理ソフト20が、アイドルタスクA1、A2、B1、B2のタスクIDをアイドルTaskIDレジスタ1〜4に設定する。
(3)TaskID監視装置41が、カレントTaskIDレジスタとアイドルTaskIDレジスタ1〜4に設定された値を比較して、切り替え要求信号を出力する。
こうすることで、メインタスクとアイドルタスクが並行して実行されている状態で、アイドルタスクの内容に応じてQoSを適切に切り替えることができる。
なお、本実施例では、TaskID監視装置41が動作状況を判定するが、アドレス監視装置33、アドレス監視装置33+割り込み判断装置35,又は、Hook処理のいずれでも動作状況を判定できる。
〔レジスタについて〕
図29では、スケジュール制御装置16にスケジュールレジスタ1〜4及びデフォルトレジスタが接続されている。スケジュールレジスタ1〜4には、メインタスクとアイドルタスクが並行して実行されている状態のQoSが設定される。設定される値は、例えば、以下のようになる。
スケジュールレジスタ1:第一のQoS
HT0がメインタスクAを、HT1がアイドルタスクB1を実行している場合のQoS(例えば、70:30)。
スケジュールレジスタ2:第二のQoS
HT0がメインタスクAを、HT1がアイドルタスクB2を実行している場合のQoS(例えば、90:10)。
スケジュールレジスタ3:第三のQoS
HT0がアイドルタスクA1を、HT1がメインタスクBを実行している場合のQoS(例えば、30:70)。
スケジュールレジスタ4:第四のQoS
HT0がアイドルタスクA2を、HT1がメインタスクBを実行している場合のQoS(例えば、10:90)。
これらの値は、管理ソフト20が起動時に設定する。
図29では、スケジュール制御装置16にスケジュールレジスタ1〜4及びデフォルトレジスタが接続されている。スケジュールレジスタ1〜4には、メインタスクとアイドルタスクが並行して実行されている状態のQoSが設定される。設定される値は、例えば、以下のようになる。
スケジュールレジスタ1:第一のQoS
HT0がメインタスクAを、HT1がアイドルタスクB1を実行している場合のQoS(例えば、70:30)。
スケジュールレジスタ2:第二のQoS
HT0がメインタスクAを、HT1がアイドルタスクB2を実行している場合のQoS(例えば、90:10)。
スケジュールレジスタ3:第三のQoS
HT0がアイドルタスクA1を、HT1がメインタスクBを実行している場合のQoS(例えば、30:70)。
スケジュールレジスタ4:第四のQoS
HT0がアイドルタスクA2を、HT1がメインタスクBを実行している場合のQoS(例えば、10:90)。
これらの値は、管理ソフト20が起動時に設定する。
また、カレントTaskIDレジスタ1,2に設定される値は、図20と同じ、HTが現在実行しているタスクのタスクIDである。
また、アイドルTaskIDレジスタ1にはアイドルタスクA1のタスクIDが、アイドルTaskIDレジスタ2にはアイドルタスクA2のタスクIDが、アイドルTaskIDレジスタ3にはアイドルタスクB1のタスクIDが、アイドルTaskIDレジスタ4にはアイドルタスクB2のタスクIDが、それぞれ設定される。
上記のように、OS37のスケジューラは各タスクにユニークなタスクIDを割り当て、タスクIDで各タスクを識別している。本実施例では、ソフトウェア開発者がアイドルタスクA、Bを処理内容に応じて区分しておき、OS37がアイドルタスクA1,A2、B1,B2を管理するものとする。OS37等の管理ソフト20は、スケジューラからタスクIDを取得して、例えば、機能統合ECU200の起動時に、アイドルTaskIDレジスタ1にアイドルタスクA1のタスクIDを、アイドルTaskIDレジスタ2にアイドルタスクA2のタスクIDを、アイドルTaskIDレジスタ3にアイドルタスクB1のタスクIDを、アイドルTaskIDレジスタ4にアイドルタスクB2のタスクIDを、それぞれ設定する。
よって、カレントTaskIDレジスタ1の値とアイドルTaskIDレジスタ1又は2の比較結果、及び、カレントTaskIDレジスタ2の値とアイドルTaskIDレジスタ3又は4の比較結果から、TaskID監視装置41はプログラムA、Bの動作状況を特定できる。
〔TaskID監視装置41による動作状況の判定〕
TaskID監視装置41は、例えば、機能統合ECU200の電源がオンになるとプログラムA、Bの動作状況の判定を開始する。
図30は、TaskID監視装置41の機能を模式的に示す図の一例である。TaskID監視装置41の比較器34には、アイドルTaskIDレジスタ1〜4、カレントTaskIDレジスタ1、2が接続されている。
TaskID監視装置41は、例えば、機能統合ECU200の電源がオンになるとプログラムA、Bの動作状況の判定を開始する。
図30は、TaskID監視装置41の機能を模式的に示す図の一例である。TaskID監視装置41の比較器34には、アイドルTaskIDレジスタ1〜4、カレントTaskIDレジスタ1、2が接続されている。
比較器34は、例えば、入力側のいずれかのレジスタの値が変化した場合、又は、1クロック毎に、比較を実行する。
比較器34は、カレントTaskIDレジスタ1の値とアイドルTaskIDレジスタ1の値を比較する。一致した場合、HT0はアイドルタスクA1を実行していることになる。一致しない場合、比較器34は、カレントTaskIDレジスタ1の値とアイドルTaskIDレジスタ2の値を比較する。一致した場合、HT0はアイドルタスクA2を実行していることになる。どちらも一致しない場合、HT0はメインタスクAを実行していることになる。
比較器34は、カレントTaskIDレジスタ1の値とアイドルTaskIDレジスタ1の値を比較する。一致した場合、HT0はアイドルタスクA1を実行していることになる。一致しない場合、比較器34は、カレントTaskIDレジスタ1の値とアイドルTaskIDレジスタ2の値を比較する。一致した場合、HT0はアイドルタスクA2を実行していることになる。どちらも一致しない場合、HT0はメインタスクAを実行していることになる。
比較器34は、カレントTaskIDレジスタ2の値とアイドルTaskIDレジスタ3の値を比較する。一致した場合、HT1はアイドルタスクB1を実行していることになる。一致しない場合、比較器34は、カレントTaskIDレジスタ2の値とアイドルTaskIDレジスタ4の値を比較する。一致した場合、HT1はアイドルタスクB2を実行していることになる。どちらも一致しない場合、HT1はメインタスクBを実行していることになる。
このように、TaskID監視装置41は、プログラムA、Bの動作状況を判別できる。TaskID監視装置41は、以下の切り替え要求信号をスケジュール制御装置16に出力する。
・HT0がメインタスクA、HT1がアイドルタスクB1を実行している場合、第一のQoSを指示する切り替え要求信号
・HT0がメインタスクA、HT1がアイドルタスクB2を実行している場合、第二のQoSを指示する切り替え要求信号
・HT0がアイドルタスクA1を、HT1がメインタスクBを実行している場合、第三のQoSを指示する切り替え要求信号
・HT0がアイドルタスクA2を、HT1がメインタスクBを実行している場合、第四のQoSを指示する切り替え要求信号
なお、これまでと同様、動作状況Iでは、TaskID監視装置41はデフォルトレジスタのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。動作状況IVでは、TaskID監視装置41は切り替え要求信号をスケジュール制御装置16に出力しない。
・HT0がメインタスクA、HT1がアイドルタスクB1を実行している場合、第一のQoSを指示する切り替え要求信号
・HT0がメインタスクA、HT1がアイドルタスクB2を実行している場合、第二のQoSを指示する切り替え要求信号
・HT0がアイドルタスクA1を、HT1がメインタスクBを実行している場合、第三のQoSを指示する切り替え要求信号
・HT0がアイドルタスクA2を、HT1がメインタスクBを実行している場合、第四のQoSを指示する切り替え要求信号
なお、これまでと同様、動作状況Iでは、TaskID監視装置41はデフォルトレジスタのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。動作状況IVでは、TaskID監視装置41は切り替え要求信号をスケジュール制御装置16に出力しない。
〔プログラムの動作状況とQoSの関係〕
図31は、プログラムの動作状況とQoSの関係の一例を示す図である。同じ動作状況でも、QoSが異なっていることが分かる。
図31は、プログラムの動作状況とQoSの関係の一例を示す図である。同じ動作状況でも、QoSが異なっていることが分かる。
タスク変化I: 動作状況III→I
メインタスクBの実行が開始することでアイドルタスクBの実行が終了される。OS37のスケジューラは、メインタスクBのタスクIDをカレントTaskIDレジスタ2に設定する。この場合、動作状況はIになる。よって、TaskID監視装置41は、デフォルトのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(50:50)に設定する。
メインタスクBの実行が開始することでアイドルタスクBの実行が終了される。OS37のスケジューラは、メインタスクBのタスクIDをカレントTaskIDレジスタ2に設定する。この場合、動作状況はIになる。よって、TaskID監視装置41は、デフォルトのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(50:50)に設定する。
タスク変化II: 動作状況I→II
メインタスクAの実行が完了すると、OS37のスケジューラは、アイドルタスクA1のタスクIDをカレントTaskIDレジスタ1に設定する。したがって、アイドルTaskIDレジスタ1のタスクIDとカレントTaskIDレジスタ1のタスクIDが一致する。また、HT1はメインタスクBを実行している。よって、TaskID監視装置41は、第三のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(30:70)に設定する。
メインタスクAの実行が完了すると、OS37のスケジューラは、アイドルタスクA1のタスクIDをカレントTaskIDレジスタ1に設定する。したがって、アイドルTaskIDレジスタ1のタスクIDとカレントTaskIDレジスタ1のタスクIDが一致する。また、HT1はメインタスクBを実行している。よって、TaskID監視装置41は、第三のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(30:70)に設定する。
タスク変化III: 動作状況II→III
メインタスクAの実行が開始することでアイドルタスクAの実行が終了される。OS37のスケジューラは、メインタスクAのタスクIDをカレントTaskIDレジスタ1に設定する。カレントTaskIDレジスタ1の値とアイドルTaskIDレジスタ1の値は一致しない。また、メインタスクBの実行が完了すると、OS37のスケジューラは、アイドルタスクB2のタスクIDをカレントTaskIDレジスタ2に設定する。よって、TaskID監視装置41は、第一のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(90:10)に設定する。
メインタスクAの実行が開始することでアイドルタスクAの実行が終了される。OS37のスケジューラは、メインタスクAのタスクIDをカレントTaskIDレジスタ1に設定する。カレントTaskIDレジスタ1の値とアイドルTaskIDレジスタ1の値は一致しない。また、メインタスクBの実行が完了すると、OS37のスケジューラは、アイドルタスクB2のタスクIDをカレントTaskIDレジスタ2に設定する。よって、TaskID監視装置41は、第一のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(90:10)に設定する。
タスク変化IV: 動作状況III→IV
メインタスクAの実行が完了すると、OS37のスケジューラは、アイドルタスクA2のタスクIDをカレントTaskIDレジスタ1に設定する。したがって、アイドルTaskIDレジスタ2のタスクIDとカレントTaskIDレジスタ1のタスクIDが一致する。また、HT1はアイドルタスクB2を実行している。よって、TaskID監視装置41は、切り替え要求信号をスケジュール制御装置16に出力しない。よって、QoSは(90:10)のままである。
メインタスクAの実行が完了すると、OS37のスケジューラは、アイドルタスクA2のタスクIDをカレントTaskIDレジスタ1に設定する。したがって、アイドルTaskIDレジスタ2のタスクIDとカレントTaskIDレジスタ1のタスクIDが一致する。また、HT1はアイドルタスクB2を実行している。よって、TaskID監視装置41は、切り替え要求信号をスケジュール制御装置16に出力しない。よって、QoSは(90:10)のままである。
タスク変化V: 動作状況IV→II
メインタスクBの実行が開始することでアイドルタスクBの実行が終了される。OS37のスケジューラは、メインタスクBのタスクIDをカレントTaskIDレジスタ2に設定する。また、HT0はアイドルタスクA2を実行している。よって、TaskID監視装置41は、第四のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(10:90)に設定する。
メインタスクBの実行が開始することでアイドルタスクBの実行が終了される。OS37のスケジューラは、メインタスクBのタスクIDをカレントTaskIDレジスタ2に設定する。また、HT0はアイドルタスクA2を実行している。よって、TaskID監視装置41は、第四のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。これにより、スケジュール制御装置16は、QoSを(10:90)に設定する。
以上説明したように、マイクロプロセッサ100は、メインタスクとアイドルタスクが並行して実行されている状態でも、アイドルタスクの内容に応じてQoSを適切に切り替えることができる。
実施例7では、アイドルタスクA、Bを内容に応じてフェールセーフ処理と無限ループ処理に分け、QoSを切り替えた。こうすることで、アイドルタスクであってもマイクロプロセッサ100がフェールセーフ処理を確実に実行できるようになる。しかしながら、フェールセーフ処理は、ある程度の頻度で実行すれば十分であり、それ以上の実行はフェールセーフ処理の効果が薄れ、消費電力が増大する。
そこで、本実施例では、単位時間のフェールセーフ処理の回数をカウントし、規定回数以上の場合は、アイドルタスクをキャンセルする、すなわちアイドルタスクのQoSを「0」にするマイクロプロセッサ100について説明する。
図32は、マイクロプロセッサ100の概略構成図の一例を示す。図32において、図29と同一部には同一の符号を付しその説明は省略する。図32では、OS37がカウンタAとカウンタBを有する。OS37がソフト的にカウントするのでなく、TaskIDレジスタにカウンタA,Bを設け、OS37からの指示がある度に値をインクリメントしてもよい。また、TaskID監視装置41は、フラグA、Bを有する。
本実施例のマイクロプロセッサ100の概略的な特徴部は次のようになる。
(1)OS37のスケジューラがメインタスクA、アイドルタスクA、メインタスクB及びアイドルタスクBの状態を管理して、現在実行中のタスクのタスクIDをカレントTaskIDレジスタに設定する。
(2)OS37等の管理ソフト20が、アイドルタスクA1、A2、B1、B2のタスクIDをアイドルTaskIDレジスタ1〜4に設定する。
(3)OS37が単位時間のアイドルタスクの実行回数(実行頻度)をカウントし、フラグA又はBをオンにする。
(4)TaskID監視装置41は、カレントTaskIDレジスタとアイドルTaskIDレジスタ1〜4に設定された値を比較して、動作状況I〜IVを判定する。
(5)動作状況II又はIIIの場合、TaskID監視装置41はフラグA、Bの状態を監視して、切り替え要求信号を出力する。
(1)OS37のスケジューラがメインタスクA、アイドルタスクA、メインタスクB及びアイドルタスクBの状態を管理して、現在実行中のタスクのタスクIDをカレントTaskIDレジスタに設定する。
(2)OS37等の管理ソフト20が、アイドルタスクA1、A2、B1、B2のタスクIDをアイドルTaskIDレジスタ1〜4に設定する。
(3)OS37が単位時間のアイドルタスクの実行回数(実行頻度)をカウントし、フラグA又はBをオンにする。
(4)TaskID監視装置41は、カレントTaskIDレジスタとアイドルTaskIDレジスタ1〜4に設定された値を比較して、動作状況I〜IVを判定する。
(5)動作状況II又はIIIの場合、TaskID監視装置41はフラグA、Bの状態を監視して、切り替え要求信号を出力する。
こうすることで、メインタスクとアイドルタスクが並行して実行されている状態で、フェールセーフ処理のアイドルタスクを過不足なく実行できるよう適切なQoSに切り替えることができる。
〔フラグA、B〕
フラグAは、アイドルタスクA1(フェールセーフ処理)が単位時間に規定回数以上、実行された場合にオンになるフラグである。(規定回数以上でないとオフになる)。フラグBは、アイドルタスクB1(フェールセーフ処理)が単位時間に規定回数以上、実行された場合にオンになるフラグである。(規定回数以上でないとオフになる)。
フラグAは、アイドルタスクA1(フェールセーフ処理)が単位時間に規定回数以上、実行された場合にオンになるフラグである。(規定回数以上でないとオフになる)。フラグBは、アイドルタスクB1(フェールセーフ処理)が単位時間に規定回数以上、実行された場合にオンになるフラグである。(規定回数以上でないとオフになる)。
具体的には、例えばOS37のスケジューラが、単位時間毎に初期化しながらアイドルタスクA1、B1の実行回数をカウントして、単位時間が経過すると規定回数と比較する。そして、OS37は、アイドルタスクA1の実行回数が規定回数以上ならフラグAをオンにして、アイドルタスクB1の実行回数が規定回数以上ならフラグBをオンにする。
〔レジスタについて〕
レジスタの種類は図29と同様であるが、設定される値が異なる。設定される値は、例えば、以下のようになる。
スケジュールレジスタ1:第一のQoS
HT0がメインタスクAを実行し、HT1が、フラグBが「オフ」の状態で、アイドルタスクB1を実行している場合のQoS(例えば、70:30)。
スケジュールレジスタ2:第二のQoS
・HT0がメインタスクAを実行し、HT1が、フラグBが「オン」の状態で、アイドルタスクB1を実行している場合のQoS。
・HT0がメインタスクAを実行し、HT1がアイドルタスクB2を実行している場合のQoS。
レジスタの種類は図29と同様であるが、設定される値が異なる。設定される値は、例えば、以下のようになる。
スケジュールレジスタ1:第一のQoS
HT0がメインタスクAを実行し、HT1が、フラグBが「オフ」の状態で、アイドルタスクB1を実行している場合のQoS(例えば、70:30)。
スケジュールレジスタ2:第二のQoS
・HT0がメインタスクAを実行し、HT1が、フラグBが「オン」の状態で、アイドルタスクB1を実行している場合のQoS。
・HT0がメインタスクAを実行し、HT1がアイドルタスクB2を実行している場合のQoS。
第二のQoSは例えば(100:0)である。これにより、規定回数以上のフェールセーフ処理及び数に関係なく、本来の処理以外の無限ループ処理の実行を禁止できる。
スケジュールレジスタ3:第三のQoS
フラグAが「オフ」の状態で、HT0がアイドルタスクA1を、HT1がメインタスクBを実行している場合のQoS(例えば、30:70)。
スケジュールレジスタ4:第四のQoS
・フラグAが「オン」の状態で、HT0がアイドルタスクA1を、HT1がメインタスクBを実行している場合のQoS。
HT0がアイドルタスクA2を、HT1がメインタスクBを実行している場合のQoS。
スケジュールレジスタ3:第三のQoS
フラグAが「オフ」の状態で、HT0がアイドルタスクA1を、HT1がメインタスクBを実行している場合のQoS(例えば、30:70)。
スケジュールレジスタ4:第四のQoS
・フラグAが「オン」の状態で、HT0がアイドルタスクA1を、HT1がメインタスクBを実行している場合のQoS。
HT0がアイドルタスクA2を、HT1がメインタスクBを実行している場合のQoS。
第四のQoSは例えば(0:100)である。これにより、規定回数以上のフェールセーフ処理及び数に関係なく無限ループ処理の実行を禁止できる。
これらの値は、管理ソフト20が起動時に設定する。
これらの値は、管理ソフト20が起動時に設定する。
〔TaskID監視装置41による動作状況の判定〕
TaskID監視装置41は、例えば、機能統合ECU200の電源がオンになるとプログラムA、Bの動作状況の判定を開始する。なお、本実施例では、TaskID監視装置41が動作状況を判定するが、アドレス監視装置33、アドレス監視装置33+割り込み判断装置35,又は、Hook処理のいずれでも動作状況を判定できる。
TaskID監視装置41は、例えば、機能統合ECU200の電源がオンになるとプログラムA、Bの動作状況の判定を開始する。なお、本実施例では、TaskID監視装置41が動作状況を判定するが、アドレス監視装置33、アドレス監視装置33+割り込み判断装置35,又は、Hook処理のいずれでも動作状況を判定できる。
図33は、TaskID監視装置41の機能を模式的に示す図の一例である。図33において図30と同一部の説明は省略する。図33では、比較器34にフラグAとフラグBが接続されている。
実施例7と同様に、比較器34は、HT0がアイドルタスクA1を実行しているか、HT0がアイドルタスクA2を実行しているか、又は、HT0がメインタスクAを実行しているか、を判定する。同様に、比較器34は、HT1がアイドルタスクB1を実行しているか、HT1がアイドルタスクB2を実行しているか、又は、HT1がメインタスクBを実行しているか、を判定する。
そして、比較器34は、HT0がアイドルタスクA1を実行し、HT1がメインタスクBを実行している場合、フラグAが「オン」か「オフ」かを判定する。フラグAが「オン」の場合、TaskID監視装置41は、第四のQoSを指示する切り替え要求信号を出力する。フラグAが「オフ」の場合、TaskID監視装置41は、第三のQoSを指示する切り替え要求信号を出力する。
比較器34は、HT0がメインタスクAを実行し、HT1がアイドルタスクB1を実行している場合、フラグBが「オン」か「オフ」かを判定する。フラグBが「オン」の場合、TaskID監視装置41は、第二のQoSを指示する切り替え要求信号を出力する。フラグBが「オフ」の場合、TaskID監視装置41は、第一のQoSを指示する切り替え要求信号を出力する。
なお、HT0がアイドルタスクA2(無限ループ処理)を実行し、HT1がメインタスクBを実行している場合、TaskID監視装置41は、第四のQoSを指示する切り替え要求信号を出力する。HT0がメインタスクAを実行し、HT1がアイドルタスクB2(無限ループ処理)を実行している場合、TaskID監視装置41は、第二のQoSを指示する切り替え要求信号を出力する。
なお、これまでと同様、動作状況Iでは、TaskID監視装置41はデフォルトレジスタのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。動作状況IVでは、TaskID監視装置41は切り替え要求信号をスケジュール制御装置16に出力しない。
〔プログラムの動作状況とQoSの関係〕
図34は、プログラムの動作状況とQoSの関係の一例を示す図である。同じ動作状況でも、QoSが異なっていることが分かる。
図34は、プログラムの動作状況とQoSの関係の一例を示す図である。同じ動作状況でも、QoSが異なっていることが分かる。
動作状況III(HT0:メインタスクA、HT1:アイドルタスクB1、フラグB:オフ)
フラグBがオフなので、アイドルタスクB1が十分に実行されていないことになる。このため、スケジュール制御装置16は、切り替え要求信号を受けて、QoSを(70:30)に設定する。
フラグBがオフなので、アイドルタスクB1が十分に実行されていないことになる。このため、スケジュール制御装置16は、切り替え要求信号を受けて、QoSを(70:30)に設定する。
動作状況I(HT0:メインタスクA、HT1:メインタスクB)
HT0とHT1が共にメインタスクを実行しているので、スケジュール制御装置16は、切り替え要求信号を受けて、QoSを(50:50)に設定する。
HT0とHT1が共にメインタスクを実行しているので、スケジュール制御装置16は、切り替え要求信号を受けて、QoSを(50:50)に設定する。
動作状況II(HT0:アイドルタスクA1、HT1:メインタスクB、フラグA:オフ)
フラグAがオフなので、アイドルタスクA1が十分に実行されていないことになる。このため、スケジュール制御装置16は、切り替え要求信号を受けて、QoSを(30:70)に設定する。
フラグAがオフなので、アイドルタスクA1が十分に実行されていないことになる。このため、スケジュール制御装置16は、切り替え要求信号を受けて、QoSを(30:70)に設定する。
動作状況III(HT0:メインタスクA、HT1:アイドルタスクB1、フラグB:オン)
フラグBがオンなので、アイドルタスクB1が十分に実行されたことになる。このため、スケジュール制御装置16は、切り替え要求信号を受けて、QoSを(100:0)に設定する。
フラグBがオンなので、アイドルタスクB1が十分に実行されたことになる。このため、スケジュール制御装置16は、切り替え要求信号を受けて、QoSを(100:0)に設定する。
動作状況IV(HT0:アイドルタスクA1、HT1:アイドルタスクB1)
HT0とHT1が共にアイドルタスクを実行しているので、TaskID監視装置41は切り替え要求信号を出力しない。よって、QoSは(100:0)のままである。
HT0とHT1が共にアイドルタスクを実行しているので、TaskID監視装置41は切り替え要求信号を出力しない。よって、QoSは(100:0)のままである。
動作状況II(HT0:アイドルタスクA1、HT1:メインタスクB、フラグA:オン)
フラグAがオンなので、アイドルタスクA1が十分に実行されたことになる。このため、スケジュール制御装置16は、切り替え要求信号を受けて、QoSを(0:100)に設定する。
フラグAがオンなので、アイドルタスクA1が十分に実行されたことになる。このため、スケジュール制御装置16は、切り替え要求信号を受けて、QoSを(0:100)に設定する。
以上説明したように、マイクロプロセッサ100は、メインタスクとアイドルタスクが並行して実行されている状態において、重要なアイドルタスクの実行頻度を監視してその結果に応じてQoSを切り替えることで、ハードウェアリソースを効率よく使用することができる。
これまでの実施例ではメインタスクAとメインタスクBが並行に実行される場合、デフォルトのQoSが割り当てられると説明した。しかしながら、メインタスクAとメインタスクBの一方の優先度が高い場合があり、この場合には優先度の高いメインタスクに多くのQoSが割り当てられることが好ましいといえる。
図35は、本実施例の課題を説明する図の一例である。一般に車両の制御用のECUには、周期処理の間に、必ず実行されるべき高優先度メインタスクと、一部処理しなくても問題のない低優先度タスクとに、分割されたメインタスクが搭載されることがある。HMTのマイクロプロセッサ100では、プログラムAの高優先度タスクAとプログラムBの高優先度タスクBが並行して実行されることもある。図35では網線の部分がメインタスクAの高優先度タスクと、プログラムBの高優先度タスクが並行して実行されている(以下、この状況を高優先競合状況という)。高優先競合状況では、どちらのプログラムも100%のQoSを要求するため、リソースの配分が困難になりやすい。
そこで、本実施例では、高優先競合状況をハード的に回避するマイクロプロセッサ100について説明する。
図36は、マイクロプロセッサ100の概略構成図の一例を示す。図36において、図29と同一部には同一の符号を付しその説明は省略する。図36に示すように、メインタスクAは、高優先度タスクAと低優先度タスクAを、メインタスクBは、高優先度タスクBと低優先度タスクタスクBを、有する。なお、さらに、実施例8と同様にアイドルタスクA、Bをそれぞれフェールセーフ処理と無限ループ処理に分割してもよい。
また、TaskID監視装置41には、カレントTaskIDレジスタ1,2,アイドルタスクIDレジスタ1、2及び高優先度TaskIDレジスタ1,2が接続されている。また、スケジュール制御装置16には、スケジュールレジスタ1〜3及びデフォルトレジスタが接続されている。
本実施例のマイクロプロセッサ100の概略的な特徴部は次のようになる。
(1)OS37のスケジューラがメインタスクA(高優先度タスクAと低優先度タスクA)、アイドルタスクA、メインタスクB(高優先度タスクBと低優先度タスクB)及びアイドルタスクBの状態を管理して、現在実行中のタスクのタスクIDをカレントTaskIDレジスタに設定する。
(2)OS37等の管理ソフト20が、高優先度タスクA、BのタスクIDを高優先度タスクIDレジスタ1、2に設定する。OS37等の管理ソフト20が、アイドルタスクA、BのタスクIDをアイドルTaskIDレジスタ1、2に設定する。
(3)TaskID監視装置41が、カレントTaskIDレジスタと高優先TaskIDレジスタ1、2に設定された値を比較して、切り替え要求信号を出力する。
(1)OS37のスケジューラがメインタスクA(高優先度タスクAと低優先度タスクA)、アイドルタスクA、メインタスクB(高優先度タスクBと低優先度タスクB)及びアイドルタスクBの状態を管理して、現在実行中のタスクのタスクIDをカレントTaskIDレジスタに設定する。
(2)OS37等の管理ソフト20が、高優先度タスクA、BのタスクIDを高優先度タスクIDレジスタ1、2に設定する。OS37等の管理ソフト20が、アイドルタスクA、BのタスクIDをアイドルTaskIDレジスタ1、2に設定する。
(3)TaskID監視装置41が、カレントTaskIDレジスタと高優先TaskIDレジスタ1、2に設定された値を比較して、切り替え要求信号を出力する。
こうすることで、高優先度タスクAと高優先度タスクBが並行して実行されている状態で、より優先的に実行すべきメインタスクに好ましいQoSを割り当てることができる。なお、本実施例では説明のため、高優先度タスクAは高優先度タスクBよりも優先度が高く設定されているものとする。
〔レジスタについて〕
スケジュールレジスタ1と2に設定される値は例えば実施例2と同じである。すなわち、一方がメインタスクで他方がアイドルタスクの動作状況に対応して、以下の値が設定される。
スケジュールレジスタ1:第一のQoS
スケジュールレジスタ2:第二のQoS
これに対しスケジュールレジスタ3には以下の値が設定される。
スケジュールレジスタ3:高優先競合状況のQoS
本実施例は「高優先度タスクAは高優先度タスクBよりも優先度が高い」と仮定したので、スケジュールレジスタ3は1つあればよい。スケジュールレジスタ3に設定される値は、高優先競合状況のQoS=(100:0)である。
スケジュールレジスタ1と2に設定される値は例えば実施例2と同じである。すなわち、一方がメインタスクで他方がアイドルタスクの動作状況に対応して、以下の値が設定される。
スケジュールレジスタ1:第一のQoS
スケジュールレジスタ2:第二のQoS
これに対しスケジュールレジスタ3には以下の値が設定される。
スケジュールレジスタ3:高優先競合状況のQoS
本実施例は「高優先度タスクAは高優先度タスクBよりも優先度が高い」と仮定したので、スケジュールレジスタ3は1つあればよい。スケジュールレジスタ3に設定される値は、高優先競合状況のQoS=(100:0)である。
本実施例では、スケジュールレジスタ1には第一のQoS=(80:20)が、スケジュールレジスタ2には第二のQoS=(20:80)が、設定される。
カレントTaskIDレジスタ1,2に設定される内容は、HTが現在実行しているタスクのタスクIDである。
高優先TaskIDレジスタ1には高優先度タスクAのタスクIDが、高優先TaskIDレジスタ2には高優先度タスクBのタスクIDが、それぞれ設定される。また、アイドルTaskIDレジスタ1にはアイドルタスクAのタスクIDが、アイドルTaskIDレジスタ2にはアイドルタスクBのタスクIDが、それぞれ設定される。
OS37等の管理ソフト20は、例えば、機能統合ECU200の起動時に、高優先TaskIDレジスタ1に高優先度タスクAのタスクIDを、高優先TaskIDレジスタ2に高優先度タスクBのタスクIDを、アイドルTaskIDレジスタ1にアイドルタスクAのタスクIDを、アイドルTaskIDレジスタ2にアイドルタスクBのタスクIDを、それぞれ設定する。
よって、カレントTaskIDレジスタ1の値とアイドルTaskIDレジスタ1の比較結果により、TaskID監視装置41はHT0がメインタスクAを実行しているか又はアイドルタスクAを実行しているかを特定できる。さらに、TaskID監視装置41は、HT0がメインタスクAを実行している場合、カレントTaskIDレジスタ1の値と高優先度タスクIDレジスタ1の値を比較することで、HT0が高優先度タスクAを実行しているか否かを判定できる。HT1についても同様である。
〔TaskID監視装置41による動作状況の判定〕
TaskID監視装置41は、例えば、機能統合ECU200の電源がオンになるとプログラムA、Bの動作状況の判定を開始する。
図37は、TaskID監視装置41の機能を模式的に示す図の一例である。TaskID監視装置41の比較器34には、アイドルTaskIDレジスタ1、2、高優先TaskIDレジスタ1,2及びカレントTaskIDレジスタ1、2が接続されている。
TaskID監視装置41は、例えば、機能統合ECU200の電源がオンになるとプログラムA、Bの動作状況の判定を開始する。
図37は、TaskID監視装置41の機能を模式的に示す図の一例である。TaskID監視装置41の比較器34には、アイドルTaskIDレジスタ1、2、高優先TaskIDレジスタ1,2及びカレントTaskIDレジスタ1、2が接続されている。
比較器34は、例えば、入力側のいずれかのレジスタの値が変化した場合、又は、1クロック毎に、比較を実行する。
図38は、比較器34の比較によって得られる動作状況の一例を示す図である。動作状況I〜IVに区分されると共に、動作状況Iがさらに動作状況I1〜I4に区分されている。
動作状況I1:メインタスクAが高優先度タスクA、メインタスクBが高優先度タスクB
動作状況I2:メインタスクAが低優先度タスクA、メインタスクBが高優先度タスクB
動作状況I3:メインタスクAが高優先度タスクA、メインタスクBが低優先度タスクB
動作状況I4:メインタスクAが低優先度タスクA、メインタスクBが低優先度タスクB
なお、メインタスクAとアイドルタスクBが並行に実行される動作状況III、アイドルタスクAとメインタスクBが並行に実行される動作状況II、又は、アイドルタスクAとアイドルタスクBが並行に実行される動作状況IV、の切り替え要求信号については、例えば実施例2と同様なので説明を省略する。
動作状況I1:メインタスクAが高優先度タスクA、メインタスクBが高優先度タスクB
動作状況I2:メインタスクAが低優先度タスクA、メインタスクBが高優先度タスクB
動作状況I3:メインタスクAが高優先度タスクA、メインタスクBが低優先度タスクB
動作状況I4:メインタスクAが低優先度タスクA、メインタスクBが低優先度タスクB
なお、メインタスクAとアイドルタスクBが並行に実行される動作状況III、アイドルタスクAとメインタスクBが並行に実行される動作状況II、又は、アイドルタスクAとアイドルタスクBが並行に実行される動作状況IV、の切り替え要求信号については、例えば実施例2と同様なので説明を省略する。
TaskID監視装置41は、動作状況I1又はI3であると判定すると、第三のQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。TaskID監視装置41は、動作状況I2であると判定すると、デフォルトのQoSを指示する切り替え要求信号をスケジュール制御装置16に出力する。TaskID監視装置41は、動作状況I4であると判定すると、切り替え要求信号をスケジュール制御装置16に出力しない。
〔プログラムの動作状況とQoSの関係〕
図39は、プログラムの動作状況とQoSの関係の一例を示す図である。
・動作状況IV(HT0:アイドルタスクA、HT1:アイドルタスクB)
HT0とHT1が共にアイドルタスクを実行しているので、直前のQoSが維持される。このため、QoSは(50:50)になっている。
・動作状況III(HT0:高優先度タスクA、HT1:アイドルタスクB)
スケジュール制御装置16は、これまでの実施例と同様、切り替え要求信号を受けて、QoSを(80:20)に設定する。
・動作状況I1(HT0:高優先度タスクA、HT1:高優先度タスクB)
高優先度タスクAは、高優先度タスクBよりも優先されるので、スケジュール制御装置16は、切り替え要求信号を受けて、QoSを(100:0)に設定する。この結果、実際には動作状況I1では、プログラムBは実行されない。
・動作状況I2(HT0:低優先度タスクA、HT1:高優先度タスクB)
HT0が高優先度タスクAの実行を終えて、低優先度タスクAの実行を開始する。高優先度タスクBと低優先度タスクAは特に優先関係がないものとして、スケジュール制御装置16は、切り替え要求信号を受けて、QoSを(50:50)に設定する。
・動作状況II(HT0:アイドルタスクA、HT1:低優先度タスクB)
スケジュール制御装置16は、これまでの実施例と同様、切り替え要求信号を受けて、QoSを(20:80)に設定する。
・動作状況III(HT0:高優先度タスクA、HT1:アイドルタスクB)
スケジュール制御装置16は、これまでの実施例と同様、切り替え要求信号を受けて、QoSを(80:20)に設定する。
・動作状況I1(HT0:高優先度タスクA、HT1:高優先度タスクB)
高優先度タスクAは、高優先度タスクBよりも優先されるので、スケジュール制御装置16は、切り替え要求信号を受けて、QoSを(100:0)に設定する。実際には動作状況I1では、プログラムBは実行されない。
図39は、プログラムの動作状況とQoSの関係の一例を示す図である。
・動作状況IV(HT0:アイドルタスクA、HT1:アイドルタスクB)
HT0とHT1が共にアイドルタスクを実行しているので、直前のQoSが維持される。このため、QoSは(50:50)になっている。
・動作状況III(HT0:高優先度タスクA、HT1:アイドルタスクB)
スケジュール制御装置16は、これまでの実施例と同様、切り替え要求信号を受けて、QoSを(80:20)に設定する。
・動作状況I1(HT0:高優先度タスクA、HT1:高優先度タスクB)
高優先度タスクAは、高優先度タスクBよりも優先されるので、スケジュール制御装置16は、切り替え要求信号を受けて、QoSを(100:0)に設定する。この結果、実際には動作状況I1では、プログラムBは実行されない。
・動作状況I2(HT0:低優先度タスクA、HT1:高優先度タスクB)
HT0が高優先度タスクAの実行を終えて、低優先度タスクAの実行を開始する。高優先度タスクBと低優先度タスクAは特に優先関係がないものとして、スケジュール制御装置16は、切り替え要求信号を受けて、QoSを(50:50)に設定する。
・動作状況II(HT0:アイドルタスクA、HT1:低優先度タスクB)
スケジュール制御装置16は、これまでの実施例と同様、切り替え要求信号を受けて、QoSを(20:80)に設定する。
・動作状況III(HT0:高優先度タスクA、HT1:アイドルタスクB)
スケジュール制御装置16は、これまでの実施例と同様、切り替え要求信号を受けて、QoSを(80:20)に設定する。
・動作状況I1(HT0:高優先度タスクA、HT1:高優先度タスクB)
高優先度タスクAは、高優先度タスクBよりも優先されるので、スケジュール制御装置16は、切り替え要求信号を受けて、QoSを(100:0)に設定する。実際には動作状況I1では、プログラムBは実行されない。
以上説明したように、マイクロプロセッサ100は、メインタスクとアイドルタスクが並行して実行されている状態において、HT0とHT1のメインタスクの重要度に応じてQoSを切り替えることで、より優先的に実行すべきメインタスクを優先的に実行することができる。
本実施形態のマイクロプロセッサは、個別だったECUを、HMT機能を有するECUに機能統合した場合、タスク内容に応じてHT間のQoSを適切に切り替えることができる。
11 命令バッファ
12 命令デコーダ
13 レジスタ群
14 演算器
15 LSU
16 スケジュール制御装置
17 パイプライン制御装置
18 ソフトウェア監視装置
19 マルチプレクサ
20 管理ソフト
22 バス
23 命令記憶部
24 データ記憶部
25 命令フェッチバス
26 データアクセスバス
33 アドレス監視装置
34 比較器
35 割り込み判断装置
36 INTC
37 OS
38 Hook監視装置
39 スケジュール切り替えレジスタ
41 TaskID監視装置
100 マイクロプロセッサ
200 機能統合ECU
12 命令デコーダ
13 レジスタ群
14 演算器
15 LSU
16 スケジュール制御装置
17 パイプライン制御装置
18 ソフトウェア監視装置
19 マルチプレクサ
20 管理ソフト
22 バス
23 命令記憶部
24 データ記憶部
25 命令フェッチバス
26 データアクセスバス
33 アドレス監視装置
34 比較器
35 割り込み判断装置
36 INTC
37 OS
38 Hook監視装置
39 スケジュール切り替えレジスタ
41 TaskID監視装置
100 マイクロプロセッサ
200 機能統合ECU
Claims (15)
- n(2以上の自然数)個のハードウェアスレッドを切り替えて、前記n個のプログラムを実行するマイクロプロセッサであって、
前記n個のプログラムそれぞれのメインタスク、及び、アイドルタスク、を記憶した記憶手段と、
前記n個のプログラムのそれぞれの目標実行比率に基づき、前記n個のハードウェアスレッドのいずれかに実行権を与えるスケジュール制御手段と、
各ハードウェアスレッドによる前記n個のプログラムの実行アドレスと、前記記憶手段における各アイドルタスクのアドレス情報、を比較する比較手段と、
前記比較手段の比較結果に基づき、前記n個のプログラムの動作状況を監視し、該動作状況に応じた目標実行比率を前記スケジュール制御手段に指示する目標実行比率指示手段と、
を有することを特徴とするマイクロプロセッサ。 - 割り込みコントローラから受け付けた割り込み情報に応じて、前記n個のメインタスクのいずれかを対応する前記n個のハードウェアスレッドのいずれかに開始させる割り込み制御手段を有し、
前記目標実行比率指示手段は、前記割り込み制御手段から取得した、前記n個のメインタスクのいずれかの割り込み実行の通知に基づき、前記動作状況を判定する、
ことを特徴とする請求項1記載のマイクロプロセッサ。 - n(2以上の自然数)個のハードウェアスレッドを切り替えて、前記n個のプログラムを実行するマイクロプロセッサであって、
前記n個のプログラムそれぞれのメインタスク、アイドルタスク、及び、OSを記憶した記憶手段と、
前記n個のプログラムのそれぞれの目標実行比率に基づき、前記n個のハードウェアスレッドのいずれかに実行権を与えるスケジュール制御手段と、
前記n個のメインタスクそれぞれの開始と終了、又は、前記n個のアイドルタスクそれぞれの開始と終了、を前記OSが提供する機能にて検出する開始終了検出手段と、
前記開始終了検出手段が検出した、前記n個のアイドルタスクの開始情報又は終了情報を記憶する動作状態記憶手段と、
前記動作状態記憶手段の記憶結果により定まる、前記n個のプログラムの動作状況に応じた目標実行比率を前記スケジュール制御手段に指示する目標実行比率指示手段と、
を有することを特徴とするマイクロプロセッサ。 - n(2以上の自然数)個のハードウェアスレッドを切り替えて、前記n個のプログラムを実行するマイクロプロセッサであって、
前記n個のプログラムそれぞれのメインタスク、アイドルタスク、及び、OSを記憶した記憶手段と、
前記n個のプログラムのそれぞれの目標実行比率に基づき、前記n個のハードウェアスレッドのいずれかに実行権を与えるスケジュール制御手段と、
前記n個のアイドルタスクのタスクIDを記憶する前記n個の第1のレジスタと、
各ハードウェアスレッド毎に、実行しているタスクのタスクIDを前記n個の第2のレジスタに登録タスクID登録手段と、
ハードウェアスレッド毎に、前記第1のレジスタの値と前記第2のレジスタの値を比較する比較手段と、
前記比較手段の比較結果に基づき、前記n個のプログラムの動作状況を監視し、該動作状況に応じた目標実行比率を前記スケジュール制御手段に指示する目標実行比率指示手段と、
を有することを特徴とするマイクロプロセッサ。 - 前記n個のプログラムの実行比率を監視する実行比率監視手段と、
前記動作状況に対応づけて前記実行比率を登録した実行比率テーブルと、を有し、
前記目標実行比率指示手段は、監視の結果の前記動作状況に対応づけられた、前記実行比率テーブルの前記実行比率と閾値を比較して、前記目標実行比率を決定する、
ことを特徴とする請求項1〜4いずれか1項記載のマイクロプロセッサ。 - n(2以上の自然数)個のハードウェアスレッドを切り替えて、前記n個のプログラムを実行するマイクロプロセッサであって、
前記n個のプログラムそれぞれのメインタスク、及び、アイドルタスク、を記憶した記憶手段と、
前記n個のプログラムのそれぞれの目標実行比率に基づき、前記n個のハードウェアスレッドのいずれかに実行権を与えるスケジュール制御手段と、
前記n個のハードウェアスレッドのそれぞれが実行しているのが、メインタスク、アイドルタスクのフェールセーフ処理タスク又は非フェールセーフ処理タスク、のいずれかに基づき、前記n個のプログラムの動作状況を判定する比較手段と、
前記n個のハードウェアスレッドのそれぞれが実行しているのが、メインタスク、フェールセーフ処理タスク又は非フェールセーフ処理タスクのいずれかに応じて、目標実行比率を前記スケジュール制御手段に指示する目標実行比率指示手段と、
を有することを特徴とするマイクロプロセッサ。 - 前記目標実行比率指示手段は、
第1のハードウェアスレッドが第1のメインタスクを実行し、第2のハードウェアスレッドが第2のアイドルタスクのフェールセーフ処理タスクを実行している場合、
前記第1のハードウェアスレッドが前記第1のメインタスクを実行し、前記第2のハードウェアスレッドが前記第2のアイドルタスクの非フェールセーフ処理タスクを実行している場合よりも、第1のプログラムよりも第2のプログラムに割り当てられる値が大きい目標実行比率を前記スケジュール制御手段に指示する、
ことを特徴とする請求項6記載のマイクロプロセッサ。 - 前記第1のアイドルタスクのフェールセーフ処理タスクの第1の実行頻度、及び、前記第2のアイドルタスクのフェールセーフ処理タスクの第2の実行頻度、をカウントするカウント手段を有し、
前記第1の実行頻度が閾値未満の場合、
前記目標実行比率指示手段は、前記第1のハードウェアスレッドが前記第1のメインタスクを実行し、前記第2のハードウェアスレッドが前記第2のアイドルタスクのフェールセーフ処理タスクを実行している場合、前記第1のハードウェアスレッドが前記第1のメインタスクを実行し、前記第2のハードウェアスレッドが前記第2のアイドルタスクの非フェールセーフ処理タスクを実行している場合よりも、前記第2のプログラムに割り当てられる値が大きい目標実行比率を前記スケジュール制御手段に指示し、
前記第1の実行頻度が閾値以上の場合、
前記目標実行比率指示手段は、前記第1のハードウェアスレッドが前記第1のメインタスクを実行し、前記第2のハードウェアスレッドが前記第2のアイドルタスクのフェールセーフ処理タスクを実行している場合でも、前記第2のプログラムに割り当てられる値がゼロの目標実行比率を前記スケジュール制御手段に指示する、
ことを特徴とする請求項6記載のマイクロプロセッサ。 - n(2以上の自然数)個のハードウェアスレッドを切り替えて、前記n個のプログラムを実行するマイクロプロセッサであって、
前記n個のプログラムそれぞれのメインタスク、及び、アイドルタスク、を記憶した記憶手段と、
前記n個のプログラムのそれぞれの目標実行比率に基づき、前記n個のハードウェアスレッドのいずれかに実行権を与えるスケジュール制御手段と、
前記n個のハードウェアスレッドのそれぞれが、メインタスクの高優先度タスク、メインタスクの低優先度タスク、又は、アイドルタスク、のいずれを実行しているかに応じて、前記n個のプログラムの動作状況を判定する比較手段と、
前記n個のハードウェアスレッドのそれぞれが実行しているのが、メインタスクの高優先度タスク、メインタスクの低優先度タスク、又は、アイドルタスク、のいずれかに応じて、目標実行比率を前記スケジュール制御手段に指示する目標実行比率指示手段と、
を有することを特徴とするマイクロプロセッサ。 - 前記目標実行比率指示手段は、
第1のハードウェアスレッドが第1の高優先度タスクを実行し、第2のハードウェアスレッドが第2のメインタスクを実行している場合、
前記第1のハードウェアスレッドが第1の低優先度タスクを実行し、前記第2のハードウェアスレッドが第2の高優先度タスクを実行している場合よりも、第1のプログラムに割り当てられる値が第2のプログラムよりも大きい目標実行比率を前記スケジュール制御手段に指示する、
ことを特徴とする請求項9記載のマイクロプロセッサ。 - 前記目標実行比率指示手段は、
前記第1のハードウェアスレッドが前記第1の高優先度タスクを実行し、前記第2のハードウェアスレッドが前記第2のメインタスクを実行している場合、前記第1のプログラムに割り当てられる値がゼロの目標実行比率を前記スケジュール制御手段に指示する、
ことを特徴とする請求項9記載のマイクロプロセッサ。 - 請求項1〜11のいずれか1項に記載されたマイクロプロセッサを搭載した、車両の電子制御ユニット。
- 前記プログラムは、単一スレッド型の電子制御ユニットが実行していたプログラムである、ことを特徴とする請求項12記載の電子制御ユニット。
- n(2以上の自然数)個のプログラムをそれぞれ実行する前記n個のハードウェアスレッドと、
前記n個のプログラムそれぞれのメインタスク、及び、アイドルタスク、を記憶した記憶手段と、
前記n個のプログラムのそれぞれの目標実行比率に基づき、前記n個のハードウェアスレッドのいずれかに実行権を与えるスケジュール制御手段と、を有するマイクロプロセッサの実行比率切り替え方法であって、
比較手段が、各ハードウェアスレッドによる前記n個のプログラムの実行アドレスと、前記記憶手段における各アイドルタスクのアドレス情報、を比較するステップと、
目標実行比率指示手段が、前記比較手段の比較結果に基づき、前記n個のプログラムの動作状況を監視し、該動作状況に応じた目標実行比率を前記スケジュール制御手段に指示するステップと、
を有することを特徴とする実行比率切り替え方法。 - 請求項14に記載されたマイクロプロセッサの実行比率切り替え方法を搭載した、車両の電子制御ユニット。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010085145A JP2011216004A (ja) | 2010-04-01 | 2010-04-01 | マイクロプロセッサ、電子制御ユニット、実行比率切り替え方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010085145A JP2011216004A (ja) | 2010-04-01 | 2010-04-01 | マイクロプロセッサ、電子制御ユニット、実行比率切り替え方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011216004A true JP2011216004A (ja) | 2011-10-27 |
Family
ID=44945638
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010085145A Pending JP2011216004A (ja) | 2010-04-01 | 2010-04-01 | マイクロプロセッサ、電子制御ユニット、実行比率切り替え方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011216004A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013257695A (ja) * | 2012-06-12 | 2013-12-26 | Renesas Electronics Corp | コンピュータシステム |
KR20170025625A (ko) * | 2015-08-31 | 2017-03-08 | 삼성전자주식회사 | Cpu의 작동 방법과 상기 cpu를 포함하는 시스템의 작동 방법 |
JP2019020853A (ja) * | 2017-07-12 | 2019-02-07 | 富士通株式会社 | 情報処理装置、情報処理方法およびプログラム |
JP2020098507A (ja) * | 2018-12-18 | 2020-06-25 | ルネサスエレクトロニクス株式会社 | 半導体装置、電子制御装置、電子制御装置の検証方法および電子制御装置の製造方法 |
US10843704B2 (en) | 2017-03-20 | 2020-11-24 | Hyundai Motor Company | Vehicle and control method thereof |
-
2010
- 2010-04-01 JP JP2010085145A patent/JP2011216004A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013257695A (ja) * | 2012-06-12 | 2013-12-26 | Renesas Electronics Corp | コンピュータシステム |
KR20170025625A (ko) * | 2015-08-31 | 2017-03-08 | 삼성전자주식회사 | Cpu의 작동 방법과 상기 cpu를 포함하는 시스템의 작동 방법 |
JP2017049999A (ja) * | 2015-08-31 | 2017-03-09 | 三星電子株式会社Samsung Electronics Co.,Ltd. | Cpuの作動方法と、該cpuを含むシステムの作動方法 |
KR102375925B1 (ko) | 2015-08-31 | 2022-03-17 | 삼성전자주식회사 | Cpu의 작동 방법과 상기 cpu를 포함하는 시스템의 작동 방법 |
US10843704B2 (en) | 2017-03-20 | 2020-11-24 | Hyundai Motor Company | Vehicle and control method thereof |
JP2019020853A (ja) * | 2017-07-12 | 2019-02-07 | 富士通株式会社 | 情報処理装置、情報処理方法およびプログラム |
JP2020098507A (ja) * | 2018-12-18 | 2020-06-25 | ルネサスエレクトロニクス株式会社 | 半導体装置、電子制御装置、電子制御装置の検証方法および電子制御装置の製造方法 |
JP7141942B2 (ja) | 2018-12-18 | 2022-09-26 | ルネサスエレクトロニクス株式会社 | 半導体装置および電子制御装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9417920B2 (en) | Method and apparatus for dynamic resource partition in simultaneous multi-thread microprocessor | |
US8046775B2 (en) | Event-based bandwidth allocation mode switching method and apparatus | |
US9069605B2 (en) | Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention | |
JP6294586B2 (ja) | 命令スレッドを組み合わせた実行の管理システムおよび管理方法 | |
US9436464B2 (en) | Instruction-issuance controlling device and instruction-issuance controlling method | |
CN101542412A (zh) | 用于多线程处理器中自动低功率模式调用的装置和方法 | |
US7941643B2 (en) | Multi-thread processor with multiple program counters | |
KR20070055554A (ko) | 스레드 라이브록 유닛 | |
US8321874B2 (en) | Intelligent context migration for user mode scheduling | |
JP5413853B2 (ja) | マルチスレッド型プロセッサのためのスレッドデエンファシス方法及びデバイス | |
EP1890225B1 (en) | Method, apparatus and computer program product for handling switching among threads within a multithread processor | |
JP2011216004A (ja) | マイクロプロセッサ、電子制御ユニット、実行比率切り替え方法 | |
JP2009223842A (ja) | 仮想計算機制御プログラム及び仮想計算機システム | |
JP5866430B2 (ja) | オペレーティング・システムを実行するプロセッサ・コアの動的割当 | |
WO2006129767A1 (ja) | マルチスレッド中央演算装置および同時マルチスレッディング制御方法 | |
JP5699896B2 (ja) | 情報処理装置、異常判定方法 | |
US7904703B1 (en) | Method and apparatus for idling and waking threads by a multithread processor | |
JP2005521937A (ja) | コンピュータオペレーティングシステムにおけるコンテキスト切り替え方法及び装置 | |
US7603673B2 (en) | Method and system for reducing context switch times | |
JP4759026B2 (ja) | プロセッサ | |
US20240231867A9 (en) | Paravirtual pause loops in guest user space | |
Tsukahara et al. | Implementation of fluid scheduling using ipc control mechanism | |
JP2012168725A (ja) | マルチスレッド・プロセッサ | |
JP2006228074A (ja) | マルチタスクシステムおよびマルチタスク制御方法 | |
JP2011008617A (ja) | マルチスレッド実行装置、オブジェクトプログラムの生成方法、プログラム |