JP2010102567A - 周期駆動タスク実行装置、周期駆動タスク実行方法及びプログラム - Google Patents

周期駆動タスク実行装置、周期駆動タスク実行方法及びプログラム Download PDF

Info

Publication number
JP2010102567A
JP2010102567A JP2008274431A JP2008274431A JP2010102567A JP 2010102567 A JP2010102567 A JP 2010102567A JP 2008274431 A JP2008274431 A JP 2008274431A JP 2008274431 A JP2008274431 A JP 2008274431A JP 2010102567 A JP2010102567 A JP 2010102567A
Authority
JP
Japan
Prior art keywords
task
periodic drive
periodic
context
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.)
Pending
Application number
JP2008274431A
Other languages
English (en)
Inventor
Tatsuaki Watanabe
竜明 渡邊
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008274431A priority Critical patent/JP2010102567A/ja
Priority to US12/502,534 priority patent/US20100107169A1/en
Publication of JP2010102567A publication Critical patent/JP2010102567A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic

Abstract

【課題】周期駆動タスク起床時のオーバーヘッドの少ない周期駆動タスク実行装置を実現する。
【解決手段】所定のシーケンスで実行される1以上の周期駆動タスクを実行するための周期駆動タスク実行装置(1、11d)は、1以上の周期駆動タスクのいずれかに対する起床要求があると、その起床要求時に実行中のタスク1の優先度と起床要求に係る周期駆動タスクAの優先度とを比較する比較部100と、比較の結果タスクAの優先度が実行中のタスク1の優先度よりも高い場合に、コンテキストの参照先を、周期駆動タスク用コンテキストレジスタ(PCTX)に切り替えるコンテキストレジスタ切り替え部101と、タスクAの実行が終了すると、所定のシーケンスにおいて定められた次に実行する周期駆動タスクBのコンテキストを、周期駆動タスク用コンテキストレジスタ(PCTX)に設定するコンテキスト設定部102を有する。
【選択図】図6

Description

本発明は、周期駆動タスク実行装置、周期駆動タスク実行方法及びプログラムに関し、特に、所定のシーケンスで実行される周期駆動タスクの実行するための周期駆動タスク実行装置、周期駆動タスク実行方法及びプログラムに関する。
従来より、コンピュータのオペレーティングシステム(以下、OSと略す)の一つとして、リアルタイムOSがあり、リアルタイムOSは広く利用されている。
リアルタイムOSでは、一般に、割込ハンドラが、リアルタイムで実行されるべきアプリケーションプログラム(以下、リアルタイムアプリケーションあるいはリアルタイムタスクともいう)を、例えば所定の時間間隔で、割込処理により実行する。
具体的には、割込ハンドラが、例えばハードウエアタイマ等により周期的に起動される。その割込ハンドラを起動するために、タスクの実行管理を行うスケジューラは、コンテキストの切り替え処理及びディスパッチ処理を行い、割込ハンドラが実行される。
その結果実行された割込ハンドラは、周期的に実行すべきリアルタイムアプリケーションの起床(activate)の要求を行う。
割込ハンドラの処理は、リアルタイムアプリケーションの起床要求後に終了し、処理は、タスクの実行管理を行うスケジューラに戻される。スケジューラは、所定のスケジューリング規則に基づいて、実行すべきタスクを決定し、コンテキストの切り替え処理及びディスパッチ処理を行う(例えば、特許文献1参照)。
すなわち、スケジューラが、優先度等に基づいて、次に実行すべきタスクがリアルタイムアプリケーションかあるいは他のタスクかを決定して、その決定された次に実行すべきタスクが実行される。そして、以上のような処理を繰り返すことによって、リアルタイムOSは、リアルタイムアプリケーションも含めて、各種タスクの実行を行う。
しかし、リアルタイムアプリケーションは割込ハンドラにより起床されるため、割込ハンドラの起床、及び割込ハンドラの実行後のスケジューラの実行という、オーバーヘッドが存在する。すなわち、リアルタイムOSは、リアルタイムアプリケーションの実行のために、オーバーヘッドである、2回のコンテキストの切り替え処理と1回のスケジューリングの処理が少なくとも必要となる、という問題を有している。
リアルタイムアプリケーションの実行性能の面からは、このようなオーバーヘッドは好ましくない。例えば、プログラムの設計時における検証において、種々のプログラムの機能、挙動を確認しなければならないので、上述したようなオーバーヘッドが無い方が、本来的には好ましい。オーバーヘッドが多いということは、ソフトウエアの逐次実行に対する妨げが多いということになり、ソフトウエアの検証の観点で見ると、ソフトウエアが実行を持っている状態が増加していることになり、ソフトウエアの品質自体の低下要因にもなる。
特開2001-75820号公報
そこで、本発明は、周期駆動タスク起床時のオーバーヘッドの少ない周期駆動タスク実行装置を提供することを目的とする。
本発明の一態様によれば、所定のシーケンスで実行される1以上の周期駆動タスクを実行するための周期駆動タスク実行装置であって、前記1以上の周期駆動タスクのいずれかに対する起床要求があると、その起床要求時に実行中のタスクの優先度と前記起床要求に係る周期駆動タスクの優先度とを比較する比較部と、該比較部の比較の結果、前記起床要求に係る周期駆動タスクの優先度が前記実行中のタスクの優先度よりも高い場合に、コンテキストの参照先を、前記起床要求に係る周期駆動タスクのコンテキストが格納された周期駆動タスク用コンテキストレジスタに切り替えるコンテキストレジスタ切り替え部と、前記起床要求に係る周期駆動タスクの実行が終了すると、前記所定のシーケンスにおいて定められた次に実行する周期駆動タスクのコンテキストを、前記周期駆動タスク用コンテキストレジスタに設定するコンテキスト設定部と、を有する周期駆動タスク実行装置を提供することができる。
本発明によれば、周期駆動タスク起床時のオーバーヘッドの少ない周期駆動タスク実行装置を実現するができる。
以下、図面を参照して本発明の実施の形態を説明する。
まず、図1に基づき、本実施の形態に係わるコンピュータシステムの構成を説明する。図1は、本実施の形態に係わるコンピュータシステムの構成を示す模式的構成図である。
コンピュータシステム1は、ハードウエア2とソフトウエア3とから構成される。ハードウエア2は、中央処理装置(以下、CPUという)11と、主メモリ12を含んで構成される。ハードウエア2は、半導体チップ等の半導体装置である。CPU11は、図示しないALU等の演算回路の他に、コンテキスト等を含む各種データを保持するレジスタ群11a、DMAの実行を制御するDMAコントローラ(以下、DMACという)11b、各種例外処理を実行する例外処理回路11c等を含んで構成される。ハードウエア2は、他にも種々の回路を含むが、図1では省略している。
ソフトウエア3は、それぞれが所定の処理を行うアプリケーションプログラムである複数のタスク14と、リアルタイムOSであるOS15を含む。ソフトウエア3は、他にも種々のソフトウエアを含むが、図1では省略している。複数のタスク14の中には、通常のタスクの他に、後述する1以上の周期駆動タスクが含まれている。複数のタスク14は、OS15の制御の下で、主メモリ12に展開されて、CPU11により実行される。また、図示しないが、通常の割り込みハンドラも含まれている。
後述する周期駆動タスク実行部11dは、本実施の形態では、ソフトウエアプログラムで実現される。周期駆動タスク実行部11dは、主メモリ12にロードされて、CPU11により実行されるが、図1では、説明を分かり易くするために、CPU11中に含まれるように図示している。
コンピュータシステム1は、周期駆動タスクを実行するための周期駆動タスク実行装置を構成する。周期駆動タスク実行部11dは、コンピュータシステム1に周期駆動タスクを実行させるためのプログラムである。なお、本実施の形態では、周期駆動タスク実行部11dは、ソフトウエアプログラムの例で説明するが、その一部又は全部をハードウエアにより実現してもよく、その場合は、周期駆動タスク実行部11dは、周期駆動タスク実行装置を構成する。
次に、本実施の形態における周期駆動タスクについて説明する。
本実施の形態における周期駆動タスクとは、所定のタイミングで、例えば、所定の時間、あるいは所定のイベント(部材の位置、角度等の検出というイベント)で、駆動されるタスクである。
図2と図3は、それぞれ周期駆動シーケンスの例を説明するための図である。図2は、所定の時間として、例えば2ミリ秒(ms)の時間周期で実行されるタスクの周期駆動シーケンスを示している。よって、この周期駆動タスクは、2ミリ秒毎に実行される。図3は、所定のイベントとして、例えばセンサにより検出された回転部材の角度が所定の角度になると実行されるタスクの周期駆動シーケンスを示している。
すなわち、周期駆動タスクは、所定の周期駆動シーケンスで実行される。周期駆動シーケンスは、ある周期駆動タスク、あるいは複数の周期駆動タスクのそれぞれについての実行の順序が予め決められているシーケンスである。
例えば、周期駆動シーケンスは、複数のタスク14中の、1つの周期駆動タスクAが、所定の時間間隔で実行されるものでもよいし、周期駆動タスクA、B、Cが、所定の順番に実行されるようなものでもよい。
具体的には、図2は、タスクAが0(ゼロ)ミリ秒(ms)で実行され、タスクBが2ミリ秒で実行され、タスクCが4ミリ秒で実行され、タスクAが6ミリ秒で実行され、タスクBが8ミリ秒で実行され、というように、2ミリ秒の周期で、タスクA,B,C,A,B,C,A,B,C,・・・というように実行されるシーケンスを示す。
図3は、ある回転部材の検出角度が0度の時に、タスクAが実行され、タスクBがその検出角度が30度の時に実行され、タスクCが50度の時に実行され、タスクAが80度と100度の時に実行され、タスクBが130度の時に実行され、というように、所定のイベントにおいて、所定のタスクが実行される、というようなシーケンスを示す。
従って、周期駆動タスクのシーケンスは予め決定されている。
次に、レジスタ群11aに含まれる各種レジスタについて説明する。図4は、ハードウエア2に設けられるレジスタ群11aの構成を示す図である。
レジスタ群11aは、カレントタスク優先度レジスタ(CPRI: Current task PRIority register。以下、CPRIと略す)と、周期駆動タスク以外の通常のタスクコンテキストを格納するレジスタ(以下、CCTXと略す)と、スケジューラポインタレジスタ(SCHEP: SCHEduler Pointer。以下、SCHEPと略す)と、周期駆動タスク優先度レジスタ(PPRI: Periodical task PRIority register。以下、PPRIと略す)と、周期駆動コンテキストレジスタ(PCTX: Periodical ConTeXt。以下、PCTXと略す)と、次周期駆動コンテキストポインタレジスタ(NCTXP: Next Periodical ConTeXt Pointer。以下、NCTXPと略す)と、を含む。PPRI,PCTX, NCTXPの3つが、合わせて周期駆動用レジスタ群である。
CPRIは、カレントタスク優先度レジスタであり、現在起動中すなわち実行中のタスクの優先度を格納するレジスタである。
SCHEPは、スケジューラポインタレジスタであり、スケジューラの先頭位置を示すアドレスを格納するレジスタである。
PPRIは、周期駆動タスク優先度レジスタであり、次に起動される周期駆動タスクの優先度を格納するレジスタである。
PCTXは、周期駆動コンテキストレジスタであり、通常のタスクコンテキストを格納するレジスタ(CCTX)と同じ構成を有するレジスタである。即ちプログラムカウンタ(PC)やスタックポインタ(SP)を含むタスクコンテキストを格納したレジスタ群である。なお、CCTXは、周期駆動タスク以外のタスクのコンテキストを格納する。
NCTXPは、次周期駆動コンテキストポインタレジスタであり、次に起動される周期駆動タスクのコンテキストが格納されているアドレスを格納するレジスタである。
後述するように、これらのレジスタ群は、CPRI,CCTX及びSCHEPを含む通常のタスクの実行時に使用されるレジスタ群21と、PPRI,PCTX及びNCTXPを含む、周期駆動タスクの実行時に使用される周期駆動タスク用レジスタ群22に分けられる。
なお、周期駆動タスク用レジスタ群22の各レジスタは、周期駆動タスク専用のレジスタでもよいが、従来よりあるレジスタ群の一部を、周期駆動タスク用として流用してもよい。
始めに、周期駆動タスクではない通常のタスクだけが実行される場合の処理の流れについて説明する。図5は、通常のタスク切り替えが発生する場合のタスク切り替えのアクティビティ図である。図5における各レジスタに対する処理は、通常のスケジューラ(図示せず)等により行われる。
図5に示すように、アプリケーションプログラム中の通常のタスクであるタスク1を実行中に、通常のタスクであるタスク2が起床されると、リアルタイムOSのスケジューラによるスケジューリングが実行される。スケジューリングでは、CPRIから現在実行中のタスク(以下、現タスクともいう)であるタスク1の優先度情報がCPRIから取得され、タスク1とタスク2の優先度が比較されて、次に実行するタスクが決定される。次に実行されるタスク(以下、次タスクともいう)が決定されると、CPRIに次タスクの優先度が設定され、ディスパッチが行われる。
スケジューリングにより、タスク2が次タスクと決定されると、通常のコンテキストレジスタであるCCTXから主メモリ12の所定の記憶領域に、タスク1のコンテキストが退避され、タスク2のコンテキストがCCTXに設定される。そして、次タスク2が実行中となる。
このように、周期駆動タスクでないときは、従来からあるCPRI、CCTX等のレジスタ群を用いて、タスクの切り替えが行われる。
次に、周期駆動タスクの実行時の処理の流れについて説明する。図6は、周期駆動タスクのタスク切り替えが発生する場合のタスク切り替えのアクティビティ図である。図7は、レジスタとコンテキストの関係を説明するための図である。
図6は、通常のタスクの実行から、周期駆動タスクの実行へ遷移し、再び通常タスクが起動される場合を示す。図6における各レジスタに対する処理は、周期駆動タスク実行部11dにより行われる。
まず、アプリケーションプログラムの中の通常のタスク1が実行中に、必要なサービスコールが発生すれば実行される。タスク1が実行中に、周期駆動タスクの実行要求が発生すると、スケジューリングが実行される。例えば、通常のタスク1が実行中に、周期駆動タスクAの実行要求の割り込みが発生したとする。なお、次に実行予定の周期駆動タスクAの優先度は、PPRIに予め設定されて記憶されている。
OSのスケジューラは、CPRIとPPRIを参照して、タスク1と周期駆動タスクAの優先度を比較して、次に実行するタスクを決定する。スケジューラは、最も高い優先度のタスクを実行するようにスケジューリングを行う。周期駆動タスクAの優先度がタスク1の優先度よりも高く無ければ(すなわちCPRIから読み出した優先度がPPRIから読み出した優先度以上の場合)、NOとなって、現タスクであるタスク1の継続実行を行う。
なお、周期駆動タスクAの優先度がタスク1の優先度と等しい場合は、タスク1継続実行をやめ、周期駆動タスクAを実行させるようにしてもよい。
周期駆動タスクAの方がタスク1よりも、優先度が高ければ、YESとなって、次タスクである周期駆動タスクAの優先度が設定されているPPRIの値がCPRIに設定される。このとき、PPRIとCPRIの値は一致する。
図7に示しかつ上述したように、レジスタ群11aは、通常のタスクの実行時に利用されるレジスタCPRI、CCTX,SCHEPを含むレジスタ群21の他に、PPRI,PCTX及びNCTXPを含む周期駆動用レジスタ群22を含む。
アプリケーションプログラムの中で、現タスクが通常のタスクであれば、レジスタ群21が、コンテキストレジスタの参照先となっている。
また、アプリケーションプログラムの中で、現タスクが周期駆動タスクであれば、レジスタ群22がコンテキストレジスタの参照先となっている。
図7に示すように、コンテキストレジスタとして、レジスタ群21と22のどちらを使用するかは、上記の判定結果に基づいて、参照先選択回路23によって選択される。レジスタ群21と22のどちらを選択するかの参照先選択回路23への選択指示は、周期駆動実行部11dによりなされる。参照先選択回路23は、例えば所定のレジスタ回路であって、選択状態を示すデータを保持する。
上述したように、周期駆動タスクについての所定の周期的な割り込みの発生、すなわち周期駆動タスクの起床要求があると、周期駆動実行部11dの比較部100が、現在のタスク1の優先度(CPRI)と、起床要求に係る周期駆動タスクAの優先度(PPRI)とを比較する。
比較部100は、周期駆動タスクのいずれかに対する起床要求があると、その起床要求時に実行中のタスクの優先度とその起床要求に係る周期駆動タスクの優先度とを比較する処理部である。
周期駆動タスクAの優先度の方が高い場合は、コンテキストの参照先の切り替えがコンテキストレジスタ切り替え部101により行われ、周期駆動コンテキストレジスタPCTXが選択されて、タスクコンテキストとして利用される。
コンテキストレジスタ切り替え部101は、起床要求に係る周期駆動タスクの優先度が実行中のタスクの優先度よりも高い場合に、コンテキストの参照先を、起床要求に係る周期駆動タスクのコンテキストが格納された周期駆動タスク用コンテキストレジスタ(PCTX)に切り替える処理部である。
現在のタスク1の優先度が周期駆動タスクAの優先度以上の場合は、引き続き現タスク1の実行を続け、タスクのスケジューリングによって、PPRIより低いタスクに切り替わるまで周期駆動タスクAの起床はペンディングにされる。
周期駆動タスクAの優先度の方が現在のタスク1の優先度より高い場合は、周期駆動タスクAは、コンテキストの参照先がレジスタ群22へ切り替ることによって、プログラムカウンタPCTX(PC)が参照されることから、自動的に実行状態に移る。
なお、周期駆動タスクAが実行中にもタスク切り替えが発生する場合もある。タスクの切り替えが発生する場合は、PCTX利用のまま通常のスケジューリングが行われる。すなわち、PCTX利用状態を前提として、通常のスケジューリングが行われる。よって、周期駆動タスクAよりも高い優先度のタスクがあれば、そのタスクが実行される。
すなわち、周期駆動タスクの実行中も、タスクの切り替え要求は受け付けられるようになっている。周期駆動タスクと実行要求されたタスクとの関係には、周期駆動タスクの優先度以下のタスクの実行要求がされた場合と、実行中の周期駆動タスクより優先度が高いタスクの実行要求がされた場合がある。前者の場合、スケジューリングが行なわれるだけで、周期駆動タスクが引き続き実行される点でタスク実行要求がない場合とその後の振舞いは変わらない。後者の場合、スケジューリングの結果、実行要求されたタスクが起動することになる。この場合、通常のタスク間での切り替えと同様にコンテキスト切り替えが発生する。このとき、コンテキストレジスタとしてPCTXを引き続き利用することにより、タスク、OS及びハードウエアは、それぞれ通常のコンテキストの切り替えと同じ処理を行なうだけでよい。
なお、周期駆動タスクの実行中に、周期駆動タスク期限切れ例外が発生する場合がある。周期駆動タスク期限切れ例外は、周期駆動タスクが処理終了に至る前に次の周期駆動タスク起動用の割り込みを受理した場合に発生する場合である。周期駆動タスク期限切れ例外が発生した場合は、所定の例外処理が実行されるようになっている。周期駆動タスク実行部11dは、所定の例外処理を行う例外処理部を含み、その例外処理部は、例えば、周期駆動タスク期限切れ例外が発生したときには、現タスクの実行を継続するか、次の処理に切り替えるかの判定がされる。
周期駆動タスクAの実行が終了すると、次の周期駆動タスクを起床するための準備が行なわれる。即ち、周期駆動タスク用レジスタ群22(PPRI, PCTX, NCTXPを含む)の値の更新が行われる。レジスタ群22のNCTXPには、所定のシーケンスにおいて定められた次に実行される周期駆動タスクのコンテキストが格納されているアドレスが格納している。よって、周期駆動タスク実行部11dのコンテキスト設定部102は、そのNCTXPを参照して、DMAを用いてレジスタ群22(NCTXP,PPRI,PCTX)の一斉更新を行う。
コンテキスト設定部102は、起床要求に係る周期駆動タスクの実行が終了すると、所定のシーケンスにおいて定められた次に実行する周期駆動タスクのコンテキストを、周期駆動タスク用コンテキストレジスタに設定する処理部である。
より具体的には、周期駆動タスクAの実行の終了が検知されると、周期駆動タスク実行部11dは、参照先選択回路23に対して、レジスタ群21を選択させて、それ以降コンテキストレジスタとしてCCTXを参照するように、設定を行う。
そして、コンテキスト設定部102は、実行の終了した周期駆動タスクAのコンテキストを、主メモリ12の対応する所定の記憶領域に退避し、次に実行する周期駆動タスクBのコンテキストを、主メモリ12の対応する所定の記憶領域から読み出して、レジスタ群22に設定する。
周期駆動タスクAの実行が終了したとき、レジスタ群22のNCTXPには、次に実行される周期駆動タスク、例えば周期駆動タスクBのコンテキストが格納されているアドレスが格納されている。よって、コンテキスト設定部102は、そのNCTXPを参照して、次の周期駆動タスクのコンテキストすなわちPPRI,PCTX,NCTXPの内容を、DMAにより主メモリ12から読み出して、レジスタ群22に設定することができる。
図2の場合の周期駆動シーケンスによれば、タスクAの次はタスクBであり、タスクBの次はタスクCであり、タスクCの次はタスクAである、というように、次に実行される周期駆動タスクは予め決められている。図3の場合の周期駆動シーケンスによれば、周期駆動タスクは、A、B、C、A、A、B、・・というように、次に実行される周期駆動タスクは予め決められている。
図7に示すように、主メモリ12には、複数の周期駆動タスクのコンテキストデータが、それぞれ対応する所定の記憶領域に記憶されている。各コンテキストデータ中にはNCTXPのデータが含まれる。NCTXPは、周期駆動シーケンスによって予め定められた、その周期駆動タスクの次に実行される周期駆動コンテキストのポインタデータを記憶する。上記の図2の例であれば、周期駆動タスクAの次にタスクBが実行されるので、タスクAのコンテキスト中のNCTXPには、周期駆動タスクBのコンテキストのポインタデータが記憶されている。
図7に示すように、周期駆動タスクAのコンテキストデータとして、NCTXPが含まれ、そのNSTXPは、次の周期駆動タスクBのコンテキストのポインタデータを記憶する。よって、周期駆動実行部11dは、周期駆動タスクAの実行が終了すると、周期駆動タスクAのコンテキストのNCTXPの示す、周期駆動タスクBのコンテキストのポインタデータに基づいて、DMAにより、主メモリ12から周期駆動タスクBのコンテキストを取得してレジスタ群22に設定する。周期駆動タスクBのコンテキストがレジスタ群22に設定されるが、このとき、レジスタ群22のNCTXPには、周期駆動タスクBの次に実行される周期駆動タスクCのコンテキストポインタの値が設定される(図2の場合)。
以上の処理が終了すると、SCHEPが参照され、CPU11のプログラムカウンタは、スケジューラの先頭アドレスに切り替えられて、スケジューリングが再度実行される。スケジューリングは、切り替わる前のタスク実行中に割り込みが発生した場合と同じ状態と、現在の状態との比較の下で、行われる。
このとき、次に実行される周期駆動タスクBのコンテキストは、レジスタ群22に設定されている。よって、次の所定の周期的な割り込みの発生に応じて周期駆動タスクBが実行されるとき、周期駆動タスクBの実行のための、従来のようなスケジューラディスパッチ処理及び割り込みハンドラ処理の実行というオーバーヘッドなく、タスクBの実行を行うことができる。
図8は、本実施の形態に係る、周期起動タスク実行時のコンピュータシステム1の動作を説明するための図である。図8は、各処理の実行が時間経過と共に示されている。
図8に示すように、ケースC1は、周期駆動タスク実行時の従来の動作を示す。ケースC1では、周期駆動タスクの実行が要求されると、スケジューリングとディスパッチ処理SD1、周期駆動タスクを起床するための割り込みハンドラ処理H及びスケジューリングとディスパッチ処理SD2の3つの処理が行われていた。その後、周期駆動タスク処理PTとその終了後のスケジューリングとディスパッチ処理SD3が行われる。
これに対して、上述した本実施の形態の場合、ケースC2に示すように、上述した3つの処理(SD1,H,SD2)は行われないで、周期駆動タスク処理PTの実行が直接開始される。
よって、上述した本実施の形態によれば、周期駆動タスクを、上述したオーバーヘッド無くの実行することができるので、実行時間の短縮化を図ることができる。
上述した例では、周期駆動タスク実行部11dの各種処理をソフトウエアにより実現しているが、一部の処理は、ハードウエアにより実現してもよい。図9は、図6における周期駆動タスクの実行開始を指示するための回路の例を示すブロック図である。
レジスタ群11a中のレジスタCPRIとPPRIには、それぞれOSからの更新データとNCTXP更新時の更新データが記憶されている。CPRIはリアルタイムOS上で実行中のタスクの優先度を示している。またPPRIは、次に実行が期待されている、周期駆動割り込みによって起動される周期駆動タスクの優先度を示している。そして、CPRIとPPRIのデータが比較器31で比較される。CPRIの優先度よりも、PPRIの優先度が高いとき、比較器31は、「1」を出力する。
一方、周期駆動タスクを実行させるための割り込みが発生するとその周期駆動割り込み信号は、ラッチ回路32に入力されラッチされる。周期駆動割り込み信号がラッチされると、ラッチ回路32は「1」を出力する。
比較器31の出力とラッチ回路32の出力が共に「1」の時に、AND回路33は、周期駆動タスク実行開始の指示信号を出力し、かつラッチ回路32をリセットする。
すなわち、周期駆動割り込み信号が発生したときに、現在実行中のタスクの優先度(CPRI)よりも、次に実行される周期駆動タスクの優先度(PPRI)が高い場合、タスクの処理は、周期駆動タスク処理へ遷移する。
以上のように、比較部100における比較判定すなわち周期駆動タスクへの遷移判定は、図9に示すようなハードウエア回路によって実現することができる。
また、PPRIがCPRI以下の場合は、周期駆動割り込みが発生しても周期駆動タスクへの処理へは遷移せずに現在のタスク処理が引き続き実行される。なお、周期駆動タスク処理中に再度周期駆動割り込みが発生した場合は、周期駆動タスク期限切れ例外が発生する。
図10は、図6における周期駆動タスクの実行終了の判定のための回路の例を示すブロック図である。
周期駆動タスク用のレジスタ群22の中のPCTXのスタックポインタSP(PCTX(SP))のデータと、主メモリ12上の対応する(PCTX(SP))のデータとが比較器36に入力される。また、周期駆動タスク用のレジスタ群22の中のPCTXのプログラムカウンタPC(PCTX(PC))のデータと、主メモリ12上の対応する(PCTX(PC))のデータとが比較器37に入力される。
比較器36は、主メモリ12上のPCTX(SP)とレジスタ群22のPCTX(SP)が等しいときに、「1」を出力する。レジスタ群22のPCTX(SP)の値は、各種関数が実行されるに従って変化する。そのレジスタ群22のPCTX(SP))の値と主メモリ12上の最初のスタックポインタの値(TCTX(SP)の値とが、異なっているときは、タスクの実行中であることを示し、同じときは、スタックポインタの位置は最初の位置に戻り、各種関数の実行処理が終了したことを意味する。
比較器37は、主メモリ12上のPCTX(PC)とレジスタ群22のPCTX(PC)が等しくないときに、「1」を出力する。主メモリ12上のPCTX(PC)は、変化しないが、レジスタ群22のPCTX(PC)は、タスクの実行に伴い、プログラムカウンタの値がインクリメントされるので、変化する。
AND回路38は、比較器36と37の出力が共に「1」のときに、周期駆動タスクの終了検知信号を出力する。
すなわち、プログラムカウンタの変化により周期駆動タスクが実行されたことを検出し、かつ、スタックポインタの一致により周期駆動タスクの実行が終了したことを検出することによって、図10の判定回路は、周期駆動タスクの終了と判定することができる。
以上のように、周期駆動タスクへの実行終了判定は、図10に示すようなハードウエア回路によって実現することができる。
なお、周期駆動タスクの終了は、周期駆動タスクのプログラム中に、周期駆動タスクの終了を意味する信号を出力する命令等を含ませ、その命令の出力によって、検知できるようにしてもよい。
すなわち、図10では、プログラムカウンタのレジスタPCとスタックポインタのレジスタSPの比較を、比較器により行なっているが、周期駆動タスク中に、周期駆動タスクの実行終了を知らせるための命令や、所定のレジスタに終了を意味する所定の値を書き込むことによって、ソフトウエアにより、明示的に周期駆動タスクの終了を知らせるようにしてもよい。
このようなソフトウエアによる方法によれば、ハードウエアの実装方法に選択肢が増え、さらに、周期駆動タスクの終了タイミングの発生及び通知の方法にバラエティを持たせることが可能になる。
以上のように、上述した本実施の形態によれば、周期駆動タスクは、従来のような割込ハンドラの起床、及び割込ハンドラの実行前後のスケジューラの実行というオーバーヘッドなく、実行されるので、リアルタイムアプリケーションの実行性能の向上及び検証の容易性の向上を図ることができる。よって、本実施の形態によれば、従来のような周期駆動用のハンドラは不要であり、周期駆動タスク起床時のオーバーヘッドの少ない周期駆動タスク実行装置を実現するができる。
なお、上述した実施の形態では、周期駆動タスクシーケンスが一つの場合であるが、周期駆動シーケンスが複数ある場合がある。このような場合、周期駆動用レジスタ群22(PPRI,PCTX,NCTXP)及び周期駆動タスク期限切れ例外処理回路を、周期駆動タスクシーケンス毎に設けることによって、上述した複数の周期駆動タスクシーケンスのそれぞれが一つの場合と同様の処理を行うことができる。
なお、この場合、通常のタスクと周期駆動タスクとの競合だけでなく、周期駆動タスク同士の競合も発生するが、周期駆動タスクが起床されるのは、その優先度がCPRIより高いときのみに起床されるため、競合時の処理は、通常タスクとの競合時と同様に行なうことができる。
従って、例えば、タイマ駆動の周期駆動タスクシーケンスと、回転物体の角度イベント等による駆動の周期駆動タスクシーケンスといった異なる周期駆動タスクが混在するシステムにおいても、上述したように周期駆動タスクの実行制御を行うことができる。
さらに、通常タスクが存在しない1以上の周期駆動タスクのみがプロセッサ上で実行されるシステムにおいて、上述した実施の形態に係る周期駆動タスクの実行制御を行うようにしてもよい。
上述した実施の形態は、通常のイベント駆動等の通常のタスクも混在するものであるが、通常のタスクが存在しないソフトウェアアーキテクチャ(すなわち周期駆動タスクシーケンスだけで構成されたアーキテクチャ)に上述した周期駆動タスクの実行制御を適用することができる。
例えば、所定のイベントをある周期駆動タスクによるポーリングにより検出するようにして、その所定のイベントに対応する処理を実行するようにすることができる。その結果、どの周期駆動タスクも起動していない場合は、マイクロプロセッサをいわゆるスリープモードに遷移させるようにすることによって、消費電力を抑制できるコンピュータシステムを構築することができる。その場合、周期駆動割り込みの発生に合わせてマイクロプロセッサはノーマルモードに遷移する。
また、周期駆動割り込みがタイマ等の事前予測可能な割り込みである場合、マイクロプロセッサのノーマルモードへの遷移を、実際の周期駆動割り込み発生より前に行なっておくことで、マイクロプロセッサのモード遷移によるオーバーヘッドを小さくしたタスク切り替えを可能とするシステムを構築することができる。
さらになお、上述した実施の形態では、周期駆動タスク期限切れ例外の発生によって処理を継続するか、次の処理に切り替えるかの判断およびその後の処理をソフトウエアによって行なうことを前提としている。すなわち、周期駆動タスク期限切れの場合には、そのソフトウエアにより、その例外の発生に対応する処理が行われる。
しかし、一方で一回のオーバーラップであれば、現在の周期駆動タスク処理を実行し、その実行の終了した後に、改めて次の周期駆動割り込みの検知及び次の周期駆動タスクの実行を行なわせたい、あるいは行わせてもよい、場合がある。
そこで、一度だけ例外要因を留めて例外を発生させないようにして、現在実行中の周期駆動タスクが終了した後は、周期駆動割り込みの発生に応じて、上述のような例外処理の実行をするようにしてもよい。
さらになお、上述した実施の形態では、周期駆動用のレジスタ更新は、主メモリ12からDMA等を行なうことによって実現していたが、周期駆動シーケンスにおける周期駆動タスク数が少ない場合は、周期駆動タスク毎に周期駆動用レジスタを設け、各周期に合わせて利用するレジスタを切り替えるようにしてもよい。このような構成にすれば、DMA機能の利用を削減することが可能である。
以上のように、上述した実施の形態に係る周期駆動タスク実行装置および方法によれば、周期駆動タスクのタスクスケジューリングを通常のタスクのスケジューリングとは別に管理して行うことにより、周期駆動タスク起床時のオーバーヘッドの少ない、周期駆動タスクの実行装置を実現することができる。その結果として、オーバーヘッドが少ないので、ソフトウエアの性能及び品質の向上にも繋がる。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
本発明の実施の形態に係わるコンピュータシステムの構成を示す模式的構成図である。 本発明の実施の形態に係わる周期駆動シーケンスの例を説明するための図である。 本発明の実施の形態に係わる周期駆動シーケンスの他の例を説明するための図である。 本発明の実施の形態に係わる、ハードウエアに設けられるレジスタ群11aの構成を示す図である。 本発明の実施の形態に係わる、通常のタスク切り替えが発生する場合のタスク切り替えのアクティビティ図である。 本発明の実施の形態に係わる、周期駆動タスクのタスク切り替えが発生する場合のタスク切り替えのアクティビティ図である。 本発明の実施の形態に係わる、レジスタとコンテキストの関係を説明するための図である。 本発明の実施の形態に係る、周期起動タスク実行時のコンピュータシステムの動作を説明するための図である。 図6における周期駆動タスクの実行開始を指示するための回路の例を示すブロック図である。 図6における周期駆動タスクの実行終了の判定のための回路の例を示すブロック図である。
符号の説明
1 コンピュータシステム、2 ハードウエア、3 ソフトウエア、11 CPU、12 主メモリ、14 タスク、15 OS、21 従来のレジスタ群、22 周期駆動タスク用レジスタ群、23 参照先選択回路

Claims (5)

  1. 所定のシーケンスで実行される1以上の周期駆動タスクを実行するための周期駆動タスク実行装置であって、
    前記1以上の周期駆動タスクのいずれかに対する起床要求があると、その起床要求時に実行中のタスクの優先度と前記起床要求に係る周期駆動タスクの優先度とを比較する比較部と、
    該比較部の比較の結果、前記起床要求に係る周期駆動タスクの優先度が前記実行中のタスクの優先度よりも高い場合に、コンテキストの参照先を、前記起床要求に係る周期駆動タスクのコンテキストが格納された周期駆動タスク用コンテキストレジスタに切り替えるコンテキストレジスタ切り替え部と、
    前記起床要求に係る周期駆動タスクの実行が終了すると、前記所定のシーケンスにおいて定められた次に実行する周期駆動タスクのコンテキストを、前記周期駆動タスク用コンテキストレジスタに設定するコンテキスト設定部と、
    を有することを特徴とする周期駆動タスク実行装置。
  2. 前記1以上の周期駆動タスクのそれぞれのコンテキストのそれぞれは、所定のメモリの所定の記憶領域に格納され、
    前記コンテキスト設定部は、前記次に実行する周期駆動タスクのコンテキストを、前記所定のメモリの対応する記憶領域から読み出して、前記周期駆動タスク用コンテキストレジスタに設定することを特徴とする請求項1に記載の周期駆動タスク実行装置。
  3. 前記1以上の周期駆動タスクのいずれかの実行中に、他の周期駆動タスクに対する起床要求が発生した場合、所定の例外処理を実行する例外処理部を有することを特徴とする請求項1に記載の周期駆動タスク実行装置。
  4. 所定のシーケンスで実行される1以上の周期駆動タスクを実行するための周期駆動タスク実行方法であって、
    前記1以上の周期駆動タスクのいずれかに対する起床要求があると、その起床要求時に実行中のタスクの優先度と前記起床要求に係る周期駆動タスクの優先度とを比較し、
    該比較の結果、前記起床要求に係る周期駆動タスクの優先度が前記実行中のタスクの優先度よりも高い場合に、コンテキストの参照先を、前記起床要求に係る周期駆動タスクのコンテキストが格納された周期駆動タスク用コンテキストレジスタに切り替え、
    前記起床要求に係る周期駆動タスクの実行が終了すると、前記所定のシーケンスにおいて定められた次に実行する周期駆動タスクのコンテキストを、前記周期駆動タスク用コンテキストレジスタに設定する、
    ことを特徴とする周期駆動タスク実行方法。
  5. コンピュータに、所定のシーケンスで実行される1以上の周期駆動タスクを実行させるためのプログラムであって、
    前記1以上の周期駆動タスクのいずれかに対する起床要求があると、その起床要求時に実行中のタスクの優先度と前記起床要求に係る周期駆動タスクの優先度とを比較する機能と、
    該比較の結果、前記起床要求に係る周期駆動タスクの優先度が前記実行中のタスクの優先度よりも高い場合に、コンテキストの参照先を、前記起床要求に係る周期駆動タスクのコンテキストが格納された周期駆動タスク用コンテキストレジスタに切り替る機能と、
    前記起床要求に係る周期駆動タスクの実行が終了すると、前記所定のシーケンスにおいて定められた次に実行する周期駆動タスクのコンテキストを、前記周期駆動タスク用コンテキストレジスタに設定する機能とを実行させるためのプログラム。
JP2008274431A 2008-10-24 2008-10-24 周期駆動タスク実行装置、周期駆動タスク実行方法及びプログラム Pending JP2010102567A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008274431A JP2010102567A (ja) 2008-10-24 2008-10-24 周期駆動タスク実行装置、周期駆動タスク実行方法及びプログラム
US12/502,534 US20100107169A1 (en) 2008-10-24 2009-07-14 Periodical task execution apparatus, periodical task execution method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008274431A JP2010102567A (ja) 2008-10-24 2008-10-24 周期駆動タスク実行装置、周期駆動タスク実行方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2010102567A true JP2010102567A (ja) 2010-05-06

Family

ID=42118775

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008274431A Pending JP2010102567A (ja) 2008-10-24 2008-10-24 周期駆動タスク実行装置、周期駆動タスク実行方法及びプログラム

Country Status (2)

Country Link
US (1) US20100107169A1 (ja)
JP (1) JP2010102567A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112650566A (zh) * 2020-12-21 2021-04-13 曙光信息产业股份有限公司 定时任务处理方法、装置、计算机设备和存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002052798A2 (en) * 2000-12-22 2002-07-04 Research In Motion Limited Wireless router system and method
US8179872B2 (en) 2007-05-09 2012-05-15 Research In Motion Limited Wireless router system and method

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128672A (en) * 1998-03-10 2000-10-03 Motorola, Inc. Data transfer using software interrupt service routine between host processor and external device with queue of host processor and hardware queue pointers on external device
US6567840B1 (en) * 1999-05-14 2003-05-20 Honeywell Inc. Task scheduling and message passing
US20050028160A1 (en) * 2003-08-01 2005-02-03 Honeywell International Inc. Adaptive scheduler for anytime tasks
US7607133B2 (en) * 2004-02-11 2009-10-20 Arm Limited Interrupt processing control

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112650566A (zh) * 2020-12-21 2021-04-13 曙光信息产业股份有限公司 定时任务处理方法、装置、计算机设备和存储介质
CN112650566B (zh) * 2020-12-21 2022-03-22 曙光信息产业股份有限公司 定时任务处理方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
US20100107169A1 (en) 2010-04-29

Similar Documents

Publication Publication Date Title
KR101503627B1 (ko) 리소스 세트 천이들을 스케줄링함으로써 휴대용 컴퓨팅 디바이스에 있어서의 프로세서 어플리케이션 상태들 간의 리소스 레이턴시의 최소화
US8001549B2 (en) Multithreaded computer system and multithread execution control method
JP4148223B2 (ja) プロセッサおよび情報処理方法
JPH0454255B2 (ja)
CN105988400B (zh) 微控制器单元
JP2009163658A (ja) 入出力制御装置およびそのファームウェア更新方法
JP4523910B2 (ja) 並列処理装置及び並列処理方法及び並列処理プログラム
JP2010102567A (ja) 周期駆動タスク実行装置、周期駆動タスク実行方法及びプログラム
JP4122725B2 (ja) リアルタイム制御システム
JPH07295694A (ja) 演算処理装置の省電力方法
JP5906584B2 (ja) 制御装置及び制御方法
JP2010097427A (ja) 処理装置、処理方法及びコンピュータプログラム
JPWO2018211865A1 (ja) 車両制御装置
JP2016184315A (ja) 電子制御装置
JP2001147821A (ja) プロセッサ
JP2007193744A (ja) 情報処理装置、プログラム、およびスケジューリング方法
JP3991999B2 (ja) 中央処理ユニット及びプロセッサ制御方法
CN113760364B (zh) 逻辑器件的控制器
JP4535663B2 (ja) ステートマシン制御方式およびステートマシン
JP2008225710A (ja) コンピュータシステム及び該システムで用いられるプロセス切替え方法
JP3910422B2 (ja) 管理装置及び管理方法
JP2013167945A (ja) 情報処理装置、タスク起床制御方法、及びタスク起動制御プログラム
JP2009199424A (ja) マイクロコンピュータ
JPH11224126A (ja) モーション制御装置
JP2008299740A (ja) 非同期マイクロプロセッサ、電子情報装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120606

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120626

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121023