JP2005078450A - タスク制御方法とタスク切替装置 - Google Patents

タスク制御方法とタスク切替装置 Download PDF

Info

Publication number
JP2005078450A
JP2005078450A JP2003309147A JP2003309147A JP2005078450A JP 2005078450 A JP2005078450 A JP 2005078450A JP 2003309147 A JP2003309147 A JP 2003309147A JP 2003309147 A JP2003309147 A JP 2003309147A JP 2005078450 A JP2005078450 A JP 2005078450A
Authority
JP
Japan
Prior art keywords
task
priority
register
effective
executed
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.)
Granted
Application number
JP2003309147A
Other languages
English (en)
Other versions
JP4047783B2 (ja
Inventor
Kimito Horie
公人 堀江
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP2003309147A priority Critical patent/JP4047783B2/ja
Publication of JP2005078450A publication Critical patent/JP2005078450A/ja
Application granted granted Critical
Publication of JP4047783B2 publication Critical patent/JP4047783B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Abstract

【課題】 自動車の制御のように常時変化する環境条件の下で、緊急性のある事象に対してリアルタイムに的確なタスク制御を行う。
【解決手段】 割込要求IRQにより、割込制御回路36から割込要因値VALが優先度決定回路40に与えられ、その処理を行うタスク番号と固定の優先度及び状況に応じた可変の横取り優先度が入力タスクレジスタ15に格納され、巡回レジスタ11,12に書込まれる。巡回レジスタ11,12の内容は、巡回レジスタ制御回路35によって順次読出され、処理待ちのタスク番号毎に優先度と横取り優先度が加算器16で加算され、実効優先度が算出される。一方、実行中のタスクの優先度と横取り優先度は、実行タスクレジスタ31から読出され、同様に実効優先度が算出される。そして、実効優先度の一番高いタスクが実行タスクとして選択される。
【選択図】 図1

Description

本発明は、リアルタイムOS(オペレーティング・システム)の下で制御される複数のタスクをその優先度に応じてハードウエアで切替える方法と装置に関するものである。
特開2001−75820号公報
上記特許文献1には、複数のタスクの優先度とその順位を示す情報を記憶した記憶回路と、この記憶回路から最も高い優先度を読出してその優先度と現在実行中のタスクの優先度を比較し、読出した優先度が実行中のタスクの優先度よりも高いときにプロセッサに対してタスク切替えの割込み信号を出力する割込信号出力回路と、前記記憶回路から読出したタスクの優先度と該記憶回路に記憶された該当する優先度のタスクの内から順位の高いタスクの順位を受け入れてタスク切替え用のスタックポインタ・アドレスを生成するスタックポインタアドレス生成回路を備えたリアルタイムOS装置が記載され、これにより、「ハードウエアによって複数のタスクをその優先度に応じてスケジューリングするようにしているので、プロセッサに負担をかけずに高速処理を行うOSが実現する」という効果が挙げられている。
しかし、このリアルタイムOS装置では、「複数のタスクの優先度とその順位を示す情報を記憶した記憶回路」と記載されているように、予め初期設定で割当てた優先度を基準にしているため、後から緊急かつ短時間に実行しなければならないタスクが発生した場合に、このタスクに対処できないおそれがある。
そもそも、優先度とは予め固定されたものではなく、時々刻々変化するものと考えられる。例えば自動車の場合、夜間にヘッドライトが故障するのは重大事故に直結するおそれがあるが、昼間にヘッドライトが故障した場合にはその危険度は低い。また、エンジントラブルの場合でも、時速40kmでの走行中と時速10kmでの徐行中とでは、その危険度は大きく異なる。従って、タスク間で競合している場合に、状況に応じて優先度を動的に変更することができれば、装置のより円滑かつ適切な動作が可能になる。
ところで、最近の自動車における電子制御の高度化に見られるように、各種の装置にシステムLSI(大規模集積回路)を組込んで、プログラム制御を行うことが一般化している。このようなプログラム制御には、ハードウエアとしてRISC(縮小命令セット・コンピュータ)を組込んだシステムLSIを用い、リアルタイムOSの下で複数のタスクを、実際の現象の進行に対応して動作させる方式が採用されることが多い。
システムLSI用のRISC構成のCPU(中央処理装置)として、例えば、ARM7DTMI(英国ARM社の登録商標)が良く知られている。このARM7DTMIでは、割込信号をFIQ(Fast Interrupt Request)とIRQ(Interrupt Request)とに分け、FIQはIRQよりも優先度が高く、FIQで処理中はIRQはマスクされるようになっている。そこで、通常の割込みにはIRQを用い、緊急の割込みにFIQを用いるというように、割込信号を使い分けている。また、IRQに対して割込制御回路で64レベルの優先度を設ける構成を採用し、ユーザーには各レベルに対して8レベルの「横取り優先度」を設けることを許容している。横取り優先度とは、実行中の優先度の低いタスクを強制終了させて、優先度の高いタスクを動作させるものであり、リアルタイムOSの下で制御される複数のタスクを、その緊急度に応じてハードウエアで切替える方式で用いられる概念である。
しかしながら、前記ARM7DTMIでは横取り優先度を設けることが可能であるが、その具体的な方法についての詳細は規定されておらず、このARM7DTMIを組込むシステムLSIの設計者の考えに委ねられている。従って、例えば自動車技術の分野のように、多数のタスクを取扱い、かつ緊急なタスクの処理もこなさなければならない場合、その要求に確実に応えるタスク切替えシステムが、未だ確立していないということが問題となっている。本発明は、自動車の制御のように常時変化する環境条件の下で、緊急性のある事象に対してリアルタイムに的確なタスク制御を行うことができる制御方法を確立することを目的としている。
本発明は、特定の事象が発生したときに該事象に対応するタスクに対して、その処理内容に応じて予め決められている固定の第1優先度を設定すると共に、該事象の発生したときの状態に応じて可変の第2優先度の初期値を設定する第1の処理と、前記事象が発生したときに実行待ちのタスクの前記第2優先度を該事象に応じて再設定する第2の処理と、実行中及び実行待ちのタスクのそれぞれに設定された第1優先度と第2優先度に基づいて各タスク毎の実効優先度を算出する第3の処理と、前記各タスクの中で前記実効優先度が一番高いタスクに制御を優先的に与える第4の処理とを行うことを特徴としている。
本発明では、特定の事象の発生したときに、対応するタスクの処理内容に応じて固定の第1優先度を設定すると共に、その時の状態に応じて可変の第2優先度を設定し、これらの第1優先度と第2優先度に基づいて実効優先度を算出し、この実効優先度に従ってタスク制御を行うようにしている。これにより、例えば、自動車の制御のように常時変化する環境条件の下で、緊急性のある事象に対してリアルタイムに的確なタスク制御を行うことが可能になるという効果がある。
割込要因が発生したとき、その処理を行うタスク番号とこのタスク番号に対応して予め設定されている固定の優先度(第1優先度)を決定すると共に、その割込要因が発生したときの状況に応じて可変の横取り優先度(第2優先度)を設定する。更に、このタスクの固定の優先度と横取り優先度を加算して実効優先度を求め、現在実行中のタスクの実効優先度と比較する。そして、新たに発生したタスクの実効優先度が高ければ、実行中のタスクを待機させて新たに発生したタスクを実行させる。また、実行中のタスクが終了したときは、実行待ちのタスクの横取り優先度を再設定した後、実効優先度の一番高いタスクを選択して実行させる。
この発明の前記並びにその他の目的と新規な特徴は、次の、好ましい実施例の説明を添付図面と照らし合わせて読むと、より完全に明らかになるであろう。但し、図面は、もっぱら解説のためのものであって、この発明の範囲を限定するものではない。
図1は、本発明の実施例を示すタスク切替装置の構成図である。
このタスク切替装置は、タスク番号/優先度巡回レジスタ11(以下、単に「巡回レジスタ11」という)と横取り優先度巡回レジスタ12(以下、単に「巡回レジスタ12」という)を備えている。これらの巡回レジスタ11,12は、タスクの実行待ち行列としての性格を有している。巡回レジスタ11は、実行待ちのタスクを特定するタスク番号と、このタスクに対して予め割当てられた固定の優先度を保持するものである。また、巡回レジスタ12は、このタスクに対して随時状況に応じて変更される横取り優先度を保持するものである。なお、巡回レジスタ11,12は、同時に起動される可能性のある最大タスク数分だけ用意されているが、使用されていないタスク番号は値0が割当てられ、優先度や横取り優先度には無効を示す値0が書込まれるようになっている。
これらの巡回レジスタ11,12の記憶内容は、クロック信号CKに従って先頭から順番に読出されると共に、巡回して後尾に保持されるようになっている。即ち、巡回レジスタ11の出力側(先頭)は、そのままセレクタ13を介してその入力側(後尾)に接続され、巡回レジスタ12の出力側は、横取り優先度変更回路20とセレクタ14を介してその入力側に接続されている。セレクタ13,14は、巡回されたタスク番号、優先度及び横取り優先度と、入力タスクレジスタ15に保持されたタスク番号、優先度及び横取り優先度のいずれか一方を、選択信号SEL1に従って選択出力するものである。横取り優先度変更回路20は、後述するように、巡回レジスタ12から読出されたタスクの横取り優先度を、所定の演算によって変更したり、与えられた制御信号CON1に基づいて変更するものである。
巡回レジスタ11から読出された優先度と、巡回レジスタ12から読出された横取り優先度は、加算器16の入力側と、セレクタ17,18の一方の入力側に与えられるようになっている。加算器15は、巡回レジスタ11,12から読出された優先度と横取り優先度を加算し、読出されたタスクの実効優先度を算出するものである。セレクタ17,18は、巡回レジスタ11,12から読出された優先度及び横取り優先度と、データバス19を介して与えられる優先度及び横取り優先度のいずれかを、選択信号SEL2に従って選択出力するものである。
セレクタ17,18の出力側には、実行タスクレジスタ31が接続されている。実行タスクレジスタ31は、現在実行中の現タスク番号と、その優先度及び横取り優先度を保持したレジスタである。実行タスクレジスタ31の出力側は、加算器32に接続されている。加算器32は、実行タスクレジスタ31に保持された現在実行中のタスクの優先度と横取り優先度を加算して、その実効優先度を算出するものである。
加算器16,32の加算結果は、比較器33に与えられて2つのタスクの実効優先度が比較されるようになっている。比較器33は、加算器16で計算された実行待ちタスクの実効優先度が、加算器32で計算された現在実行中のタスクの実効優先度よりも大きい時に、タスクを切替えるために論理値“1”を出力し、そうでない時には現在のタスクを引続き実行するために論理値“0”を出力するものである。比較器33の出力側は、割込フラグレジスタ34と巡回レジスタ制御回路35に接続されている。割込フラグレジスタ34は、比較器33から出力された信号を、書込制御信号WR3に従って保持し、割込信号INTとして図示しないCPUへ出力するものである。
巡回レジスタ制御回路35は、巡回レジスタ11,12等を制御するもので、これらの巡回レジスタ11,12に対するクロック信号CKを与えると共に、セレクタ13,14,17,18に対する選択信号SEL1,SEL2と、入力タスクレジスタ15、実行タスクレジスタ31及び割込フラグレジスタ34に対する書込制御信号WR1〜WR3を生成して出力するものである。更に、この巡回レジスタ制御回路35は、横取り優先度変更回路20及びタスク番号/優先度/横取り優先度決定回路40(以下、単に「優先度決定回路40」という)に対する制御信号CON1,CON2を生成して出力する機能を有している。
更に、このタスク切替装置は、割込制御回路36を有している。割込制御回路36は、図示しない外部回路からの割込入力IRQを受付け、その割込要因を判定して対応する割込要因値VALを、優先度決定回路40に与えるものである。優先度決定回路40は、後述するように、割込制御回路36から与えられる割込要因値VALに基づいて、予め設計で割当てられているタスク番号と固定の優先度の値を出力すると共に、その時点での環境パラメータENVに基づいて、そのタスクの横取り優先度の初期値を算出するものである。
図2(a)〜(c)は、図1中の横取り優先度変更回路20の例を示す構成図である。 図2(a)は、後発タスクを優先させる方式の回路構成である。即ち、この横取り優先度変更回路20aは、例えば、1ビット右シフタによる1/2回路21で構成され、巡回レジスタ12から読出された先発の実行待ちタスクの横取り優先度が、この1/2回路21に入力されるようになっている。そして、横取り優先度変更回路20aから、横取り優先度の値が半減されて出力され、セレクタ14を介して巡回レジスタ12へ巡回して保持されるようになっている。これにより、後発タスクの横取り優先度は初期値を保ち、先発の実行待ちタスクの横取り優先度が1/2となるので、後発タスクが優先されることになる。
図2(b)は、緊急性の低い実行待ちタスクの横取り優先度を0にする後発タスク優先方式の回路構成である。この横取り優先度変更回路20bは、巡回レジスタ12から読出された先発の実行待ちタスクの横取り優先度を示す各ビット毎に設けられた2入力のAND(論理積ゲート)22〜22と、この横取り優先度と入力タスクレジスタ15から与えられる後発タスクの横取り優先度を比較する比較器23を有している。比較器23は、実行待ちタスクの横取り優先度が後発タスクの横取り優先度よりも低いときに、“0”を出力し、そうでない場合には“1”を出力するものである。比較器23の出力側は、AND22〜22の第2の入力側に接続されている。
これにより、実行待ちタスクの横取り優先度が後発タスクの横取り優先度よりも低いと、比較器23から“0”が出力され、AND22〜22の出力信号がすべて“0”となる。また、実行待ちタスクの横取り優先度が後発タスクの横取り優先度以上であれば、比較器23から“1”が出力され、AND22〜22の出力信号は、巡回レジスタ12から読出された横取り優先度と同じである。従って、横取り優先度が後発タスクよりも低い実行待ちタスクは、その横取り優先度の値が0に変更される。
図2(c)は、実行待ちタスクの横取り優先度を1/2にするか否かを選択する方式の回路構成である。この横取り優先度変更回路20cは、巡回レジスタ12から読出された先発の実行待ちタスクの横取り優先度と、1/2回路21で半減された横取り優先度のいずれか一方を、巡回レジスタ制御回路35から与えられる制御信号CON1に従って選択するセレクタ24を有している。
これは、図2(a)の回路では、現実行タスクが終了した後、そのまま次の実行タスク選択のために巡回を行うと、実行待ちタスクの横取り優先度が半減し、必要以上に実行待ちタスクの横取り優先度が低くなってしまうことを防止するものである。即ち、現実行タスクが終了した後の巡回は、これを割込制御回路36から巡回レジスタ制御回路35への通知に基づいて検知し、この巡回レジスタ制御回路35からの制御信号CON1で先発の実行待ちタスクの横取り優先度を選択し、半減せずにそのままの値で巡回させるようにしたものである。なお、実行タスクレジスタ31に保持された現在実行中のタスクの横取り優先度は、これらの横取り優先度変更回路20a〜20cによって変更されることはない。
図3は、図1中のタスク番号/優先度/横取り優先度決定回路40の一例を示す構成図である。
この優先度決定回路40は、割込制御回路36から与えられる割込要因値VALに基づいて、予め割当てられているタスク番号と固定の優先度の値を設定するためのタスク番号/優先度対応表41を有している。タスク番号/優先度対応表41は、例えばEPROM(電気的に書込み可能な不揮発性メモリ)で構成され、割込要因値VALをアドレス信号として与え、このアドレスに予め記憶されているデータを、タスク番号と例えば5ビット(32レベル)の優先度として、入力タスクレジスタ15に出力するものである。
更に、この優先度決定回路40は、環境パラメータENVとして、例えば自動車の速度センサから走行速度Sが与えられ、その走行速度Sに対応した横取り優先度を設定するための微分部42、2乗部43、及び整数化部44を有している。
微分部42は、走行速度Sの単位時間当たりの変化量δS(即ち、加速度)を算出するものである。加速度センサから加速度のデータが得られる場合には、この微分部42は不要である。微分部42の出力側は、2乗部43に接続されている。2乗部43は、例えば乗算器の2つの入力端子に、微分部42の出力信号を与えることで実現できる。更に、2乗部43の出力側は、整数化部44に接続されている。整数化部44は、2乗部43の計算結果を、例えば32レベルに区分して5ビットの横取り優先度として、入力タスクレジスタ15に出力するものである。
この優先度決定回路40では、横取り優先度を走行速度Sの変化量δSの2乗に比例するものとしている。これは、自動車の場合、加速の場合でも減速の場合でも、走行速度Sの変化量δSが大きいほど危険度が倍加し、かつ、緊急性も高くなると考えたからである。なお、環境パラメータENVとしては、走行速度の他、気温、車内温度、気圧、風速、明るさ、湿度等、多種多様である。適用条件に応じて、最適な環境パラメータENVの組合わせを選択する必要があることはいうまでもない。
図4は、図1のタスク切替装置の概略の動作を示すフローチャートである。以下、この図4を参照しつつ図1の動作を説明する。
動作開始により、ステップS1において、割込制御回路36によって、割込入力IRQの有無が検出される。割込入力IRQが有ればステップS2へ進み、無ければステップS6へ進む。
ステップS2において、割込制御回路36によって割込入力IRQの要因が分析され、この割込制御回路36から優先度決定回路40に対して、割込要因値VALが出力される。ステップS2の後、ステップS3へ進む。
ステップS3において、優先度決定回路40によって割込要因値VALに基づいてタスク番号と優先度が読出されると共に、その時点での環境パラメータENVに従って横取り優先度が設定される。ステップS3の後、ステップS4へ進む。
ステップS4において、巡回レジスタ制御回路35から入力タスクレジスタ15に、書込制御信号WR1が出力され、優先度決定回路40で設定されたタスク番号と優先度及び横取り優先度が、この入力タスクレジスタ15へ書込まれる。ステップS4の後、ステップS5へ進む。
ステップS5において、巡回レジスタ制御回路35から出力される選択信号SEL1によって、セレクタ13,14が入力タスクレジスタ15側に切替えられ、この入力タスクレジスタ15に書込まれたタスク番号と優先度及び横取り優先度が、クロック信号CKに従って、巡回レジスタ11,12の後尾に書込まれる。ステップS5の後、ステップS8へ進む。
一方、ステップS1で割込入力IRQが検出されずにステップS6へ進んだ場合、このステップS6において、現タスクが終了したか否かが判定される。終了していなければ、ステップS1へ戻り、ステップS1,S6のループによるイベント発生待ち状態となる。ステップS6において、現タスクが終了していれば、ステップS7へ進む。
ステップS7において、終了したタスクが割込タスクとして実行されていた場合には、割込まれたタスクに実行権を戻すための処理(例えば、割込まれたタスク番号等を実行タスクレジスタ31に書戻す等の処理)が行われる。割込みのネスティングが無い場合には、実行タスクレジスタ31がリセットされ、この実行タスクレジスタ31に値0が書込まれる。ステップS7の後、ステップS8へ進む。
ステップS8において、巡回レジスタ制御回路35の制御に従って、巡回レジスタ11,12の巡回が開始される。まず、変数K,Mに、それぞれ初期値として1,0が書込まれる。これは、最後に実行タスクレジスタ31に書込んだ巡回レジスタ11,12の位置を確定するための処理である。ステップS8の後、ステップS9〜S14のループによる巡回処理が行われる。
ステップS9において、巡回レジスタ11,12の先頭タスクの実効優先度が加算器16で算出され、実行タスクレジスタ31に保持された実行タスクの現実効優先度が加算器32で算出される。これらの実効優先度と現実効優先度は、比較器33で比較される。
ステップS10において、実効優先度と現実効優先度の比較の判定が行われ、巡回レジスタ11,12の先頭タスクの実効優先度の方が高い場合には、ステップS11へ進み、そうでない場合には、ステップS12へ進む。
ステップS11において、巡回レジスタ制御回路35から与えられる書込制御信号WR2に従って、巡回レジスタ11,12の先頭タスクのタスク番号、優先度及び横取り優先度が、実行タスクレジスタ31に書込まれる。更に、最後の書込みを行った実行待ちタスクの特定のために、変数Mに変数Kの値が記憶される。
ステップS12において、巡回レジスタ11,12の後尾に、横取り優先度変更回路20によって変更された横取り優先度のデータ等が書込まれる。
ステップS13において、巡回レジスタ11,12に対する巡回が終了したか否かが調べられる。終了していなければ、ステップS14において、変数Kの値が1だけ増加され、ステップS9へ戻る。巡回が終了していれば、ステップS15へ進む。
ステップS15において、ステップS11における書込みがあったか否かが調べられる。これは、書込みがあればステップS11で変数Mに変数Kの値が記憶されるので、この変数Mが0であるか否かを調べることによって判別することができる。もしも書込みがあればステップS16へ進み、書込みがなければ処理は終了する。
ステップS16において、巡回レジスタ制御回路35によって巡回レジスタ11,12のM番目以降のレジスタが、1レジスタ分ずつ順にシフトさせられる。この結果、レジスタの値は重ね書きされ、その最も大きな実効優先度を持つタスクのデータは、巡回レジスタ11,12内から消失する。そして、後尾レジスタに値0が書込まれ、そのレジスタはリセットされる。これにより、新たな入力タスクの受付の準備ができる。最後に、巡回レジスタ制御回路35から与えられる書込制御信号WR3に従って、割込フラグレジスタ34への書込みが行われる。ここで、CPUに対する割込信号INTが生成されたとき(即ち、INT=“1”)には、CPUによるタスクの切替えが行われる。また、割込信号INTが生成されない(即ち、INT=“0”)場合は、一連の動作が終了する。
以上が、図1のタスク切替装置の全体の動作の概要であるが、次に、このタスク切替装置の主要な構成要素である巡回レジスタ11,12等の巡回動作を、具体例を挙げて詳細に説明する。
図5A〜図5Cは、図1中の巡回レジスタ11,12等の状態変化を示す説明図であり、現行タスクTaの実行中に割込入力IRQによって新たなタスクTbが生成された場合で、図2(a)に例示した横取り優先度変更回路20aを用いた場合を示している。
図5Aは、緊急性の高いタスクTbが生成された場合である。このタスクTbの現在の優先度の値は4であり、横取り優先度の値は15であるから、その実効優先度の値は19となる。巡回の直前、タスクTbのデータは入力タスクレジスタ15に書込まれており、かつ、巡回レジスタ11,12の後尾にも書込みが済んでいる。一方、現在実行中のタスクTaのデータは、実行タスクレジスタ31に書込まれ、実行待ちタスクT0,T1,T2,T3のデータは、巡回レジスタ11,12の先頭部のレジスタに書込まれている。なお、巡回レジスタ11,12でタスク番号が00となっているレジスタは、使用されていないことを示している。
次に巡回が始まると、実効優先度が最も高いタスクが実行タスクレジスタ31に書込まれ、かつ残存し、その後割込フラグレジスタ34に書込まれてCPUに対する割込信号INTが生成され、次の実行タスクとなる。ここで、タスクTaの実効優先度の値は17である。また、タスクTbの横取り優先度は半減されずに、そのままの値に保たれるので、その実効優先度の値は19である。その結果、次の実行タスクはタスクTbに決定される。ここでは、前回の巡回に伴い、他のタスクの横取り優先度は既に半減されている。また、タスクTbが実行タスクに決定されたので、その順番を記憶していた巡回レジスタ制御回路35によって、巡回後直ちに巡回レジスタ11,12中のタスクTbはリセット(0に消去)される。
最後に、巡回レジスタ制御回路35は、記憶していた巡回レジスタ11,12内の最初の無効なタスクを有するレジスタ番号を用いて、そのレジスタ以降のすべてのレジスタをシフトさせ、巡回レジスタ11,12の後尾をリセットする。このように、巡回後の各実行待ちタスクT0〜T3の横取り優先度は、巡回前の1/2になっている。
図5Bは、緊急性の低いタスクTbが生成された場合である。このタスクTbの現在の優先度の値は4、横取り優先度の値は6であるから、その実効優先度の値は10となる。一方、現在実行中のタスクTaの実効優先度の値は17で、実行待ちタスクT0,T1,T2,T3の実効優先度の値はすべてこれより小さい。
従って、巡回によって実行タスクレジスタ31への書込みは行われず、タスクTaの実行が阻止されることはない。また、タスクTbが実行タスクに決定されることはなく、巡回レジスタ11,12中のタスクTbのデータがリセットされることもない。但し、タスクTbの前に無効なタスクが存在しているため、後尾のレジスタをリセットする際に、1レジスタ分だけ上位にシフトされる。
図5Cは、緊急性の低いタスクTbが生成され、その後現在の実行タスクTaが終了した場合である。このタスクTbの現在の実効優先度の値は10であり、これは実行待ちのタスクT2と同じ値である。そこで、巡回レジスタ11,12内で先に位置するタスクT2が、次の実行タスクになる。タスクTbは、その前にタスクT2のレジスタをリセットしたために生じた無効なタスクが存在するため、後尾のレジスタをリセットする際に、1レジスタ分だけ上位にシフトされる。また、この巡回により実行待ちタスクの横取り優先度は更に半減する。従って、後発タスクの有利さが過度に増加する傾向にある。なお、これを是正するために、図2(c)のような横取り優先度変更回路20cの回路構成を採用することもできる。
このように、本実施例のタスク切替装置は、イベントの発生した時点で対応するタスクの横取り優先度をその環境条件に応じて設定する優先度決定回路40と、実行待ちタスクの横取り優先度を変更する横取り優先度変更回路20と、各タスク毎の本来の優先度と横取り優先度に基づいて実効優先度を計算し、この実効優先度が一番高いタスクに実行権を移すため巡回レジスタ制御回路35等を有している。これにより、本実施例のタスク切替装置は、自動車の制御のように常時変化する環境条件の下で、緊急性のある事象に対してリアルタイムに的確なタスク制御を行うことができるという利点がある。
なお、以上説明した実施例は、あくまでも、この発明の技術内容を明らかにするためのものである。この発明は、上記実施例にのみ限定して狭義に解釈されるものではなく、この発明の特許請求の範囲に述べる範囲内で、種々変更して実施することができる。その変形例としては、例えば、次のようなものがある。
(a) 横取り優先度変更回路20の構成及び機能は、図2(a)〜(c)に示したものに限定されない。例えば、図3に示した優先度決定回路40のように、環境パラメータENVを用いて、巡回時に横取り優先度を再計算して変更するようにしても良い。
(b) 優先度決定回路40は、図3に例示したものに限定されない。適用するシステムに応じて、最適な環境パラメータENVに基づいて適切な横取り優先度を算出する必要がある。
(c) 優先度と横取り優先度を単純加算して実効優先度を算出しているが、実効優先度の算出方法は単純加算に限定されない。例えば、加重加算やその他の関数を用いて算出するようにしても良い。
本発明の活用例として、自動車制御の他、電車や飛行機その他の各種の交通機関や、発電所、化学プラント等、コンピュータ制御を行うあらゆる産業に利用することができる。
本発明の実施例を示すタスク切替装置の構成図である。 図1中の横取り優先度変更回路20の例を示す構成図である。 図1中のタスク番号/優先度/横取り優先度決定回路40の一例を示す構成図である。 図1のタスク切替装置の概略の動作を示すフローチャートである。 図1中の巡回レジスタ11,12等の状態変化を示す説明図である。 図1中の巡回レジスタ11,12等の状態変化を示す説明図である。 図1中の巡回レジスタ11,12等の状態変化を示す説明図である。
符号の説明
11 タスク番号/優先度/巡回レジスタ(巡回レジスタ)
12 横取り優先度巡回レジスタ(巡回レジスタ)
13,14,17,18 セレクタ
15 入力タスクレジスタ
16,32 加算器
19 データバス
20 横取り優先度変更回路
31 実行タスクレジスタ
33 比較器
34 割込フラグレジスタ
35 巡回レジスタ制御回路
36 割込制御回路
40 タスク番号/優先度/横取り優先度決定回路(優先度決定回路)

Claims (9)

  1. 特定の事象が発生したときに該事象に対応するタスクに対して、その処理内容に応じて予め決められている固定の第1優先度を設定すると共に、該事象の発生したときの状態に応じて可変の第2優先度の初期値を設定する第1の処理と、
    前記事象が発生したときに実行待ちのタスクの前記第2優先度を該事象に応じて再設定する第2の処理と、
    実行中及び実行待ちのタスクのそれぞれに設定された第1優先度と第2優先度に基づいて各タスク毎の実効優先度を算出する第3の処理と、
    前記各タスクの中で前記実効優先度が一番高いタスクに制御を優先的に与える第4の処理とを、
    行うことを特徴とするタスク制御方法。
  2. 前記第1の処理における前記特定の事象とは、新たな外部割込の発生であり、前記事象の発生したときの状態とは、その外部割込の種別と環境パラメータであり、前記第3の処理では、各タスク毎に第1優先度と第2優先度を加算して実効優先度を算出することを特徴とする請求項1記載のタスク制御方法。
  3. 外部割込入力における割込要因値に基づいて対応するタスクを特定し、該特定されたタスクに予め割当てられている第1優先度を決定する第1の処理と、
    前記外部割込入力が発生したときの環境パラメータに従って前記タスクに対する第2優先度を設定する第2の処理と、
    前記タスクと実行中及び実行待ちの各タスク毎に、前記第1優先度と第2優先度に従って実効優先度を算出する第3の処理と、
    前記複数のタスクの中で前記実効優先度が一番高いタスクに制御を優先的に与える第4の処理とを、
    行うことを特徴とするタスク制御方法。
  4. 外部割込入力における割込要因値に基づいて対応するタスクを特定し、該特定されたタスクに予め割当てられている第1優先度を決定する第1の処理と、
    前記外部割込入力が発生したときの環境パラメータに従って前記タスクに対する第2優先度を設定する第2の処理と、
    前記タスクと実行中及び実行待ちの各タスク毎に、前記第1優先度と第2優先度に従って実効優先度を算出する第3の処理と、
    前記複数のタスクの中で前記実効優先度の一番高いタスクが前記第1の処理で特定されたタスクである場合には、前記実行中のタスクを待機させて該特定されたタスクに制御を与え、該実効優先度の一番高いタスクが該実行中のタスクである場合には、該特定されたタスクを待機させる第4の処理とを、
    行うことを特徴とするタスク制御方法。
  5. 前記第4の処理で実効優先度の一番高い実行中のタスクが終了したときに、実行待ちのタスクの実効優先度と前記待機させられた特定されたタスクの実効優先度を比較する第5の処理と、
    前記特定されたタスクの実効優先度が実行待ちのタスクの実効優先度よりも高いときには該特定されたタスクを実行し、該実行待ちのタスクの実効優先度が該特定されたタスクの実効優先度よりも高いときには該特定されたタスクを待機させて該実行待ちのタスクを実行する第6の処理とを、
    行うことを特徴とする請求項4記載のタスク制御方法。
  6. 実行待ちの各タスクの処理内容に応じて予め決められている固定の第1優先度と該各タスクの発生状態に応じて設定された可変の第2優先度を保持する第1のレジスタと、
    現在実行中のタスクの第1優先度と第2優先度を保持する第2のレジスタと、
    前記実行待ちの各タスク毎に前記第1のレジスタから読出される第1優先度と第2優先度を加算して実効優先度を算出する第1の加算器と、
    前記実行中のタスクの第1優先度と第2優先度を加算して実効優先度を算出する第2の加算器と、
    前記第1及び第2の加算器の加算結果を比較する比較器と、
    前記実行待ちのタスクの実効優先度が前記実行中のタスクの実効優先度よりも高いときに、該実行待ちのタスクの第1優先度と第2優先度を前記第2のレジスタに格納して中央制御装置に対する割込信号をセットし、該実行待ちタスクの実効優先度が該実行中のタスクの実効優先度よりも高くないときには、引き続き該実行中のタスクを動作させるレジスタ制御回路とを、
    備えたことを特徴とするタスク切替装置。
  7. 特定のイベントの発生毎に前記実行待ちのタスクの第2優先度を再設定する優先度変更回路を設けたことを特徴とする請求項6記載のタスク切替装置。
  8. 前記第1のレジスタを、前記レジスタ制御回路からの制御に従って記憶内容をシフトして順次出力すると共に与えられるデータを書込む巡回レジスタで構成し、前記第1のレジスタから出力される前記第2優先度を再設定して該第1のレジスタに与える優先度変更回路を設けたことを特徴とする請求項6記載のタスク切替装置。
  9. 割込入力で特定された割込要因値から実行すべきタスクとその第1優先度を特定し、該割込入力時の環境パラメータに基づいてその第2優先度を決定する優先度決定回路を設けたことを特徴とする請求項6記載のタスク切替装置。
JP2003309147A 2003-09-01 2003-09-01 タスク制御方法とタスク切替装置 Expired - Fee Related JP4047783B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003309147A JP4047783B2 (ja) 2003-09-01 2003-09-01 タスク制御方法とタスク切替装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003309147A JP4047783B2 (ja) 2003-09-01 2003-09-01 タスク制御方法とタスク切替装置

Publications (2)

Publication Number Publication Date
JP2005078450A true JP2005078450A (ja) 2005-03-24
JP4047783B2 JP4047783B2 (ja) 2008-02-13

Family

ID=34411398

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003309147A Expired - Fee Related JP4047783B2 (ja) 2003-09-01 2003-09-01 タスク制御方法とタスク切替装置

Country Status (1)

Country Link
JP (1) JP4047783B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007047866A (ja) * 2005-08-05 2007-02-22 Mitsubishi Electric Corp リアルタイム組込み簡易モニタプログラム
JP2007213477A (ja) * 2006-02-13 2007-08-23 Oki Electric Ind Co Ltd 割り込み優先順位設定回路
WO2007110906A1 (ja) * 2006-03-27 2007-10-04 Hitachi, Ltd データ処理装置
US8327122B2 (en) 2006-03-02 2012-12-04 Samsung Electronics Co., Ltd. Method and system for providing context switch using multiple register file
WO2018003474A1 (ja) * 2016-06-30 2018-01-04 富士通テン株式会社 情報処理装置および情報処理方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110109741B (zh) * 2019-05-09 2021-08-27 北京旷视科技有限公司 循环任务的管理方法、装置、电子设备及存储介质

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007047866A (ja) * 2005-08-05 2007-02-22 Mitsubishi Electric Corp リアルタイム組込み簡易モニタプログラム
US7472214B2 (en) 2005-08-05 2008-12-30 Mitsubishi Denki Kabushiki Kaisha Real-time embedded simple monitor method and computer product
JP2007213477A (ja) * 2006-02-13 2007-08-23 Oki Electric Ind Co Ltd 割り込み優先順位設定回路
JP4509946B2 (ja) * 2006-02-13 2010-07-21 Okiセミコンダクタ株式会社 割り込み優先順位設定回路
US8327122B2 (en) 2006-03-02 2012-12-04 Samsung Electronics Co., Ltd. Method and system for providing context switch using multiple register file
WO2007110906A1 (ja) * 2006-03-27 2007-10-04 Hitachi, Ltd データ処理装置
JP5024899B2 (ja) * 2006-03-27 2012-09-12 株式会社日立製作所 データ処理装置
WO2018003474A1 (ja) * 2016-06-30 2018-01-04 富士通テン株式会社 情報処理装置および情報処理方法

Also Published As

Publication number Publication date
JP4047783B2 (ja) 2008-02-13

Similar Documents

Publication Publication Date Title
JP5328366B2 (ja) プログラム可能な優先値を用いた割込み制御器
US8539203B2 (en) Multi-thread processor selecting threads on different schedule pattern for interrupt processing and normal operation
JP2006195867A (ja) バス調停方法及び半導体装置
JP2001229031A (ja) 割込強制レジスタを含む柔軟な割込コントローラ
EP2579164B1 (en) Multiprocessor system, execution control method, execution control program
US20060161924A1 (en) Scheduling method, in particular context scheduling method, and device to be used with a scheduling method
JP2010181989A (ja) データ処理装置
JP4047783B2 (ja) タスク制御方法とタスク切替装置
CN113377517B (zh) 基于实时操作系统的线程调度方法及系统
JP2011237929A (ja) マルチコア・プロセッサ
US20120226842A1 (en) Enhanced prioritising and unifying interrupt controller
JPS5999553A (ja) 割込制御方式
EP2495656B1 (en) Enhanced prioritising and unifying interrupt controller
JP3097648B2 (ja) 情報処理装置及び情報処理方法
JP2008532167A (ja) 割込み制御器を有するデータ処理システム及び割込み制御方法
JP2007047968A (ja) マルチプロセッサシステム
JP2005258509A (ja) ストレージ装置
JP4731126B2 (ja) 割り込み制御回路
US10540305B2 (en) Semiconductor device
JP4494701B2 (ja) プロセッサ内の機能単位の制御時に命令語を生成する方法
JP5245617B2 (ja) レジスタ制御回路およびレジスタ制御方法
US20040015676A1 (en) Sharing of a logic operator having a work register
JP2006301839A (ja) タスク制御方法
JP2001075778A (ja) 演算装置および方法
JP2013003966A (ja) データ書き込み装置およびデータ書き込み方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Effective date: 20060223

Free format text: JAPANESE INTERMEDIATE CODE: A621

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070803

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070821

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071017

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20071113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071122

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 3

Free format text: PAYMENT UNTIL: 20101130

R150 Certificate of patent (=grant) or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 3

Free format text: PAYMENT UNTIL: 20101130

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101130

Year of fee payment: 3

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111130

Year of fee payment: 4

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121130

Year of fee payment: 5

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 5

Free format text: PAYMENT UNTIL: 20121130

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121130

Year of fee payment: 5

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees