JP2003263329A - タスクスケジュール装置 - Google Patents

タスクスケジュール装置

Info

Publication number
JP2003263329A
JP2003263329A JP2002062932A JP2002062932A JP2003263329A JP 2003263329 A JP2003263329 A JP 2003263329A JP 2002062932 A JP2002062932 A JP 2002062932A JP 2002062932 A JP2002062932 A JP 2002062932A JP 2003263329 A JP2003263329 A JP 2003263329A
Authority
JP
Japan
Prior art keywords
task
address
priority
register
ready queue
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
JP2002062932A
Other languages
English (en)
Inventor
Isao Uchiumi
功朗 内海
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 JP2002062932A priority Critical patent/JP2003263329A/ja
Publication of JP2003263329A publication Critical patent/JP2003263329A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 タスクのスケジューリングを高速に行う装置
を実現する。 【解決手段】 TCBテーブル71は、タスクのタスク
ナンバーに対応したアドレスにそのスタックポインタア
ドレスを格納する。タスクナンバーテーブル72は、優
先度別のアドレスに対応して、実行可能なタスクのタス
クナンバーを格納する。レディキューアドレス生成器1
11〜118は、次に実行するタスクのスタックポイン
タアドレスの要求を受けて、現在実行しているタスクの
優先度で実行可能なタスクが存在する場合はそのタスク
に対応したタスクナンバーテーブル72のアドレスを出
力する。TCBテーブルアドレス出力手段130は、レ
ディキューアドレス生成器111〜118から出力され
たアドレスに対応して、タスクナンバーテーブル72か
ら取り出されたタスクナンバーを保持し、かつ、そのタ
スクナンバーに対応したTCBテーブル71のアドレス
を出力する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、リアルタイムOS
装置における主処理であるタスクの切り替え処理をハー
ドウェアで高速に切り替えるタスクスケジュール装置に
関する。
【0002】
【従来の技術】一般に、リアルタイム性の厳しい組み込
みシステムでは、ソフトウェアで実現されたOS(オペ
レーティングシステム)の処理時間を短縮させることに
限界があるとされてきた。特に、通信のプロトコル処理
の分野では、例えば1マイクロ秒といった短時間にタス
クの切り替えを終了しなければならないという要求があ
る。こうしたリアルタイム性を厳しく要求される分野
で、ソフトウェアにより実現されたOSでは対応に限界
がある。そこで、タスクの切り替え処理をハードウェア
によって構成したリアルタイムOS装置が検討されてい
る(例えば、これらの技術を示す文献として、リアルタ
イムOSのハードウェア化とその評価、信学技法VLD93-
97(1993-12)や、シリコンTRONの実現とその評
価、信学技法VLD94-40(1994-07)等)。
【0003】
【発明が解決しようとする課題】しかしながら、上記従
来の技術では、ITRONをインプリメントされている
にもかかわらず、最大タスク数が5といった極めて少な
い数である。スケジューリングとしてのタスクの選択方
法は、トーナメント方式でタスク状態レジスタの値を最
大のものに選択するという極めて簡単なものであり、こ
のような技術では実用には耐えられないものである。ま
た、このような技術では、その他の機構に関して技術を
開示しておらず、ハードウェア化として不十分なもので
あった。
【0004】
【課題を解決するための手段】本発明は、前述の課題を
解決するため次の構成を採用する。 〈構成1〉タスクを識別するためのタスクナンバーに対
応したアドレスに、タスクのスタックポインタアドレス
を格納するTCBテーブルと、優先度別のアドレスに対
応して、実行可能なタスクのタスクナンバーを格納する
タスクナンバーテーブルと、優先度別に設けられ、次に
実行するタスクのスタックポインタアドレスの要求を受
けて、現在実行しているタスクの優先度で実行可能なタ
スクが存在するか否かを判定し、存在した場合はそのタ
スクに対応したタスクナンバーテーブルのアドレスを出
力し、存在しない場合は次に優先度が高くかつ実行可能
なタスクに対応したタスクナンバーテーブルのアドレス
を出力するレディキューアドレス生成器と、レディキュ
ーアドレス生成器から出力されたアドレスに対応して、
タスクナンバーテーブルから取り出されたタスクナンバ
ーを保持し、かつ、タスクナンバーに対応したTCBテ
ーブルのアドレスを出力するTCBテーブルアドレス出
力手段とを備えたことを特徴とするタスクスケジュール
装置。
【0005】〈構成2〉構成1に記載のタスクスケジュ
ール装置において、現在実行しているタスクの優先度で
次に実行可能なタスクが存在しない場合は、次に優先度
が高いレディキューアドレス生成器の出力を選択するプ
ライオリティエンコーダと、プライオリティエンコーダ
から出力された優先度の値を保持する優先度数レジスタ
と、優先度数レジスタで保持する値に対応したレディキ
ューアドレス生成器を指定するための信号を送出するデ
コーダと、デコーダから出力された信号に対応した優先
度の実行可能なタスクのアドレスを出力するレディキュ
ーアドレス生成器とを備えたことを特徴とするタスクス
ケジュール装置。
【0006】〈構成3〉構成1または2に記載のタスク
スケジュール装置において、TCBテーブルアドレス出
力手段は、TCBテーブルの固定的なアドレスであるタ
スクベースアドレスを保持するタスクベースアドレスレ
ジスタと、次に実行するタスクのタスクナンバーを保持
するタスクナンバーレジスタと、タスクベースアドレス
レジスタの値とタスクナンバーレジスタの値とを加算し
たアドレスを出力する加算器とからなることを特徴とす
るタスクスケジュール装置。
【0007】
【発明の実施の形態】以下、本発明の実施の形態を具体
例を用いて詳細に説明する。 《具体例》 〈構成〉図1は、本発明の具体例のタスクスケジュール
装置を示すブロック図である。この装置は、リアルタイ
ムOSの主処理であるタスクの切り替え処理をハードウ
ェアを用いて高速に実行することを実現している。この
装置の具体的な構成や動作を説明する前に、まずタスク
管理のためのレディキューとウェイトキューについての
説明を行う。
【0008】図2は、一般的なレディキューの構成例説
明図である。ビットテーブル1は、予め設けられている
優先度の数、ここでは31個のビットを持ち、該当する
優先度に、一つでもタスクコントロールブロック(TC
B)がつながっている場合には“1”がたつ。タスクコ
ントロールブロック(TCB)が1つもつながっていな
い場合には“0”がたつようにセットされている。優先
度が最も高いビットは図の最上段である。ここでは、優
先度が2番目のビットのビットテーブル1に“1”が立
っている。また、ここにはいくつかのタスクコントロー
ルブロックTCBがつながっている。TCBはタスクを
特定し、各タスクをコントロールするためのブロックで
あり、スタッカアドレスやタスクの状態等、該当するタ
スクに関わる様々な情報を保持するブロックである。O
Sは、こうしてTCBを参照し、処理を要求しているタ
スクのうちの最も優先度の高いタスクを次に実行するタ
スクに選択する。
【0009】タスクキューテーブル1Aは、同一優先度
のタスクが複数有る場合に、各タスクを順番にキューに
収容するためのテーブルである。タスクキューテーブル
1Aには、先頭のTCBと末尾のTCBを表すアドレス
が保持される。このように鎖のようにつながっているタ
スクのことをタスクチェーンと呼ぶ。このレディキュー
につながれているTCBはいずれも実行可能状態にあ
る。最も優先度が高くてタスクキューテーブル1Aに最
も近いTCBから順番にタスクが実行される。
【0010】図3には、一般的なウェイトキューの構成
例説明図を示す。ウェイトキューはイベント発生待ち状
態にあるTCBにつながれたキューである。ウェイトキ
ューポインタ3はイベント待ちのための先頭のTCBと
末尾のTCBを指すアドレスを保持する。このTCB
は、図2に示すTCBと同様のものである。各TCB
は、イベント待ち状態になるとレディキューからウェイ
トキューに移される。また、イベント待ち状態から実行
可能状態に遷移すると、ウェイトキューからレディキュ
ーの該当する優先度のチェーンの末尾につながれる。
【0011】通常は、図2に示す各TCBが優先度の高
い順であってタスクキューテーブル1Aに近い順に順番
に実行されていく。ここで、ウェイトキューにあったあ
るTCBが実行可能状態になると、その優先度に応じて
レディキューのいずれかのチェーンの該当部分の末尾に
接続される。このように、各タスクは、レディキューの
タスクキューテーブル1Aに示したアドレスに基づいて
並べられ、プロセッサはこの順番を参照しながらタスク
の切り替えを行う。この発明では、こうしたタスクの切
り替えをハードウェアによって実現して、プロセッサへ
のタスク切り替え処理のためのオーバーヘッドを軽減す
る。
【0012】図4は、具体例のタスクスケジュール装置
が適用されるリアルタイムOS装置のブロック図であ
る。図は、CPU4によって制御されるRTOSコプロ
セッサ5、メインメモリ6、ワークメモリ7及びデコー
ダ8を備える。メインメモリ6には、主にCPUが実行
するアプリケーションソフトウェアのプログラムやデー
タが記憶されている。RTOSコプロセッサ5は、リア
ルタイムOS装置を実現するためのハードウェア化した
コプロセッサである。このRTOSコプロセッサ5のシ
ーケンサ制御は、ハードワイアードで実現される。この
図には、その制御のための主要な制御線を示した。その
内容は、後で図1を用いて説明する。
【0013】ワークメモリ7は、RTOSコプロセッサ
5が動作する場合に利用するワークメモリである。ここ
には、RTOSコプロセッサ5の生成するスタックポイ
ンタアドレスによりアクセスされるスタックポインタレ
ジスタが記憶される。その内容は後述する。デコーダ8
は、CPU4から出力されるアドレスMAをデコードし
て、メインメモリ6あるいはRTOSコプロセッサ5の
チップセレクト信号MMCSあるいはHRCSを生成す
る回路である。
【0014】CPU4とRTOSコプロセッサ5とメイ
ンメモリ6との間のデータ交換には、データバスMDと
アドレスバスMAが利用される。また、RTOSコプロ
セッサ5とワークメモリ7との間のデータのやり取り
は、アドレスバスWAと、データバスWD及びチップセ
レクト信号WMCSを用いて行われる。
【0015】図1は、具体例のタスクスケジュール装置
のブロック図である。図示の構成は、図4におけるRT
OSコプロセッサ5とワークメモリ7に対応する構成で
あり、RTOSコプロセッサ5は、レディキューアドレ
ス生成器(RQADR7〜RQADR0)111〜11
8、プライオリティエンコーダ(PRIENC)12
1、マルチプレクサ(MUX)122、タスクベースア
ドレスレジスタ(TSKBSADR)131、タスクナ
ンバーレジスタ(CNTTSKNUM)132、加算器
(ADDR)133、優先度数レジスタ(CNTPRI
NUM)134、デコーダ(DEC)135、状態レジ
スタ(CNTSTANUM)136、マルチプレクサ
(MUX)137、有効レジスタ(TSKVLD)13
8、ドライバ(DR)141,142、マルチプレクサ
(MUX)143からなる。また、ワークメモリ7内に
はTCBテーブル71とタスクナンバーテーブル72が
形成されている。
【0016】レディキューアドレス生成器111〜11
8は、優先度に対応して設けられ、次に実行するタスク
のスタックポインタアドレスの要求を受けて、現在実行
しているタスクの優先度で実行可能なタスクが存在する
か否かを判定し、存在した場合はそのタスクに対応した
タスクナンバーテーブル72のアドレスを出力し、存在
しない場合は次の優先度で実行可能なタスクに対応した
タスクナンバーテーブル72のアドレスを出力するブロ
ックである。本具体例では、8個のレディキューアドレ
ス生成器111〜118が設けられており、その優先度
はレディキューアドレス生成器111〜118が最も高
く、レディキューアドレス生成器118が最も低いとす
る。これらの内部構成については後述する。
【0017】プライオリティエンコーダ121は、それ
ぞれのレディキューアドレス生成器111〜118から
出力されるnot_zero(0でない)信号を入力として、一
番レベルの高い(最も優先度が高い)値を出力する回路
であり、内部構成については公知の回路であるため、そ
の説明は省略する。タスクベースアドレスレジスタ13
1は、TCBテーブル71内のTCBテーブル71の固
定的なアドレスである先頭アドレスを格納するためのレ
ジスタである。ここで、TCBテーブル71の要素は次
のようになっている。
【0018】図5は、TCBテーブル71の要素とタス
クナンバーテーブル72の要素を示す説明図である。図
5(a)に示すように、TCBテーブル71の要素とし
て、タスク状態値(sta)と優先度レベル(pri)とスタ
ックポインタアドレスがあり、タスク状態値と優先度レ
ベルとが同一アドレスに、スタックポインタアドレスが
次のアドレスになるよう格納されている。尚、本具体例
では、タスクの実行可能状態のタスク状態値を“2”、
ウェイト状態を“1”とする。また、図5(b)に示す
ように、タスクナンバーテーブル72の要素として、そ
のタスクが有効か無効かを示すバリッドビットとタスク
ナンバーが格納されている。そして、これらのブロック
は、ワークメモリ7上において、次のように与えられて
いる。
【0019】図6は、ワークメモリ7内のTCBテーブ
ル71とタスクナンバーテーブル72の説明図である。
図示のように、(a)は図5(a)に示した要素を格納
する領域で、タスクベースアドレスレジスタ131が保
持している先頭アドレスからタスクナンバーに対応した
アドレスにそのタスクコントロールブロックを格納す
る。また、(b)は、図5(b)に示した要素を格納す
る領域であり、各優先度別に設けられ、各優先度のアド
レスに対応して、実行可能状態にあるタスクのタスクナ
ンバーのデータが格納されている。
【0020】図1に戻って、タスクナンバーレジスタ1
32は、現在実行しているタスクのタスクナンバーを格
納し、かつ、タスクのスケジューリング時に、次に実行
するタスクのタスクナンバーを格納するためのレジスタ
である。加算器133は、タスクベースアドレスレジス
タ131とタスクナンバーレジスタ132の値を加算す
る加算器である。そして、これらタスクベースアドレス
レジスタ131〜加算器133によって、レディキュー
アドレス生成器111〜118から出力されたアドレス
に対応して取り出されたタスクナンバーを保持し、か
つ、そのタスクナンバーに対応したTCBテーブル71
のアドレスを出力するTCBテーブルアドレス出力手段
130を構成している。
【0021】優先度数レジスタ134は、現在実行して
いるタスクの優先度を格納し、かつ、タスクのスケジュ
ーリング時に、次に実行するタスクの優先度を保持する
ためのレジスタである。デコーダ135は、優先度数レ
ジスタ134の保持しているデータをデコードしてレデ
ィキューアドレス生成器111〜118を指定させるた
めのデコーダである。状態レジスタ136は、現在実行
しているタスクの状態を保持するレジスタである。即
ち、実行可能状態を示す“2”やウェイト状態を示す
“1”が格納される。マルチプレクサ137は、優先度
数レジスタ134や状態レジスタ136にデータを設定
するための選択を行うマルチプレクサである。有効レジ
スタ138は、次に実行するタスクが有効である否かを
決定するためのバリッドビットを保持するためのレジス
タである。ドライバ141は、図4に示したCPU4の
データバスへのドライバ、ドライバ142は、ワークメ
モリ7へのデータバスへのドライバである。また、マル
チプレクサ143は、ワークメモリ7へのデータバス
に、タスク状態値や優先度あるいはスタックポインタア
ドレス等を出力するためのマルチプレクサである。
【0022】次に、上述したレディキューアドレス生成
器111〜118の内部構成について説明する。図7
は、レディキューアドレス生成器111〜118の内部
構成を示すブロック図である。図示のブロックは、ベー
スアドレスレジスタ(BASEADR)211、トップ
アドレスレジスタ(TOPADR)212、テールアド
レスレジスタ(TAILADR)213、ワイズレジス
タ(WIDTH)214、カウンタ(COUNT)21
5、マルチプレクサ(MUX)221、マスク回路(M
SK)222、加算器(ADD)223からなる。
【0023】ベースアドレスレジスタ211は、各レデ
ィキューアドレス生成器111〜118が保持する領域
の先頭アドレス(図6(b)における各優先度の領域の
先頭アドレス)の値を保持するためのレジスタである。
トップアドレスレジスタ212は、次に実行されるタス
クの先頭のアドレスの値を保持するためのレジスタであ
る。テールアドレスレジスタ213は、次に実行される
タスクの末尾のアドレスの値を保持するためのレジスタ
である。ワイズレジスタ214は、そのレディキューブ
ロックの領域の大きさを示すためのレジスタである。即
ち、レディキューはリング構成となっており、このワイ
ズレジスタ214に示した範囲に領域を持っている。例
えば、ワイズレジスタ214が000〜111までの8
ブロック分の領域を取り、そのアドレスで111の次は
000に戻る、といった構成となっている。
【0024】尚、テールアドレスレジスタ213は、各
レディキューの初期設定に使用するものである。即ち、
ワークメモリ7に各優先度に応じたレディキューのタス
クナンバーを設定する場合、先ず、設定したい優先度を
マルチプレクサ137を介して優先度数レジスタ134
に格納する。次に、その優先度に対応したレディキュー
アドレス生成器111〜118のベースアドレスレジス
タ211、トップアドレスレジスタ212、テールアド
レスレジスタ213に、タスクナンバーテーブル72の
アドレスを格納する。レディ状態にしたいタスクナンバ
ーをタスクナンバーテーブル72に書き込む度に、カウ
ンタ215のカウンタ値をインクリメントしていく。こ
れによりタスクナンバーをタスクナンバーテーブル72
上の連続したアドレスに入れることができる。
【0025】また、カウンタ215は、レディキューが
保持しているブロックをカウントするカウンタであり、
そのブロック数に対応した値から0までをカウントし、
以外の値の場合は“1”を、0になった場合は、“0”
を出力するよう構成されている。マルチプレクサ221
は、トップアドレスレジスタ212とテールアドレスレ
ジスタ213の値を選択するためのマルチプレクサであ
る。マスク回路222は、マルチプレクサ221で選択
されたアドレスとワイズレジスタ214で指定した領域
の幅とのAND演算を行うマスク回路である。即ち、こ
れらの値のモジュロ演算を行う機能を実現している。ま
た、加算器223はベースアドレスレジスタ211のア
ドレスとマスク回路222でマスク化されたアドレスと
を加算するための加算器である。
【0026】〈動作〉本装置は、図4に示したようなリ
アルタイムOS装置において、タスクのスケジューリン
グを高速に行うための装置である。タスクのスケジュー
リングでは、動作しているタスクが完了し、次に動作す
るタスクを取り出すことを行う。図8は、具体例の動作
を示すフローチャートである。この処理は、タスクが自
らのタスク動作を停止させるために、ソフトウェア割込
みを行い、現スタックにコンテキストを書き込むまでは
ソフトウェアが行う。なお、コンテキストとは、タスク
が再起動するために必要な様々なデータのことである。
それ以降、次の動作するタスクのスタックポインタのデ
ータは、本装置がハードウェアによって自動的に取り出
す。
【0027】先ず、図1におけるレディキューアドレス
生成器111〜118のカウンタ値は次のようになって
いるとする。 レディキューアドレス生成器111(優先度=7):カウンタ値=0 レディキューアドレス生成器112(優先度=6):カウンタ値=2 レディキューアドレス生成器113(優先度=5):カウンタ値=0 レディキューアドレス生成器114(優先度=4):カウンタ値=0 レディキューアドレス生成器115(優先度=3):カウンタ値=3 レディキューアドレス生成器116(優先度=2):カウンタ値=0 レディキューアドレス生成器117(優先度=1):カウンタ値=0 レディキューアドレス生成器118(優先度=0):カウンタ値=1 そして、現在、レディキューアドレス生成器112(優
先度=6)のタスクが実行を終えたとする。
【0028】[ステップS100]タスクベースアドレ
スレジスタ131とタスクナンバーレジスタ132とキ
ャリー1とで加算器133で加算されたアドレス値がw
102を経由して、マルチプレクサ122で選択され、
ワークメモリアドレスバスに出力される。そして、この
アドレスが指すワークメモリ7上のTCBテーブル71
に、更新されたCPU4のレジスタであるスタックポイ
ンタ値をw101を経由して、マルチプレクサ143、
ドライバ142を通してワークメモリデータバス上に書
き戻す。
【0029】[ステップS101]レディ状態を示す
“2”を保持している状態レジスタ136をウェイト状
態を示す“1”にして、優先度数レジスタ134の現在
の優先度の値と共にw103を経由してマルチプレクサ
143、ドライバ142を介してワークメモリデータバ
ス上に出力する。また、タスクベースアドレスレジスタ
131とタスクナンバーレジスタ132とで加算器13
3で加算されたアドレス値がw102を経由してマルチ
プレクサ122で選択されてワークメモリアドレスバス
に出力される。これにより、更新された状態レジスタ1
36、優先度数レジスタ134の値をワークメモリ7上
のTCBテーブルに書き戻す。
【0030】[ステップS102]優先度数レジスタ1
34が指す値(ここではレディキューアドレス生成器1
12の優先度の値=6とする)が、w103を経由して
デコーダ135に送られ、デコーダ135によってレデ
ィキューアドレス生成器111〜118を指定する。こ
の場合、レディキューアドレス生成器112が選択され
る。レディキューアドレス生成器112の内部におい
て、トップアドレスレジスタ212を1加算し、カウン
タ215を1減少させる。これにより、カウンタ値は1
となる。
【0031】[ステップS103]カウンタ215のカ
ウンタ値が0であるかどうかを判定する。カウンタ21
5には、カウンタ出力に対してOR論理を取る回路が設
けられており、OR論理の出力w202の出力が0であ
れば0ということで判断される。一方、w202が0で
ないということはその同じ優先度のレディキューアドレ
ス生成器にまだ実施すべきタスクがあるということを意
味している。この場合は、次のステップS110に進
む。
【0032】[ステップS110]同じレディキューア
ドレス生成器112の内、ベースアドレスレジスタ21
1にトップアドレスレジスタ212のアドレス値を加算
器223で加算し、そのアドレス値がw201を経由し
て出力される。この出力はマルチプレクサ122で選択
され、ワークメモリアドレスバスに出力される。このア
ドレスによって、ワークメモリ7のタスクナンバーテー
ブル72からアクセスする。即ち、図6(b)における
タスクナンバーテーブルの優先度6のベースアドレス+
トップアドレスに対応したアドレスにアクセスする。こ
れにより次に実行するタスクのタスクナンバーを取り出
す。
【0033】[ステップS111]ワークメモリ7上の
タスクナンバーテーブル72からタスクナンバーデータ
をアクセスする。ここで、タスクナンバーデータの構成
は、図5(b)に示す通りである。タスクナンバーテー
ブル72からアクセスされたタスクナンバーデータは、
ワークメモリデータバスからw104を経由して、バリ
ッドビットとタスクナンバーは、それぞれ有効レジスタ
138とタスクナンバーレジスタ132に保持される。
【0034】[ステップS112]タスクバリッドが0
かどうかを判定する。0の場合、これは無効なタスクな
ので次のタスクを取り出すためにステップS102に戻
る。ここでは、有効であるとして次のステップS113
に進む。
【0035】[ステップS113]タスクベースアドレ
スレジスタ131の値と、上記ステップS111で設定
されたタスクナンバーレジスタ132の値とが加算器1
33で加算される。そのアドレス値は次に実行するタス
クのTCBテーブルのアドレスを指すことになる。この
加算値はw102を経由してマルチプレクサ122で選
択され、ワークメモリアドレスバスに出力される。
【0036】[ステップS114]ワークメモリ7から
アクセスされたデータはワークメモリデータバスからw
104を経由してマルチプレクサ137で選択される。
そのアクセスしたデータであるタスク状態値と優先度数
(プライオリティ番号)は、それぞれ優先度数レジスタ
134および状態レジスタ136に保持される。
【0037】[ステップS115]タスクベースアドレ
スレジスタ131の値に、上記ステップS113で設定
されたタスクナンバーレジスタ132の値が+1キャリ
ーされて加算器133で加算される。この加算されたア
ドレス値は次に実行するタスクのTCBテーブルのスタ
ックポインタアドレスのアドレスを指すことになる。こ
のアドレス値はw102を経由してマルチプレクサ12
2で選択され、ワークメモリアドレスバスに出力され
る。一方、データ出力であるスタックポインタアドレス
はワークメモリデータバスからドライバ141を通して
CPU4に転送される。これにより、CPU4はスタッ
クポインタアドレスをセットし、そのスタックからコン
テキストを回復させてタスクを実行する。
【0038】[ステップS103]上記のステップS1
15でリードしたスタックポインタアドレスのタスク
(レディキューアドレス生成器112のカウンタ値が1
に対応したタスク)が終了し、ステップS100からス
テップS102まで実行したとする。このとき、レディ
キューアドレス生成器112のカウンタ215の値は0
となる。これにより、w202は0となる。
【0039】[ステップS120]各レディキューアド
レス生成器111〜118において、カウンタ215の
値が0でない場合、プライオリティエンコーダ121へ
の出力信号は1となる。ここで、レディキューアドレス
生成器111〜118からのカウンタ215の値が0で
ないのは、レディキューアドレス生成器115(優先度
=3)およびレディキューアドレス生成器118(優先
度=1)である。よって、w113、w110からnot_
zero信号がプライオリティエンコーダ121に出力され
ることになる。これにより、プライオリティエンコーダ
121は、レディキューアドレス生成器115に対応し
た値を生成する。
【0040】[ステップS121]プライオリティエン
コーダ121の出力結果(=3)がw105を経由して
マルチプレクサ137で選択されて、優先度数レジスタ
134に設定される。また、設定されたレジスタの値は
w103を経由してデコーダ135に送られる。デコー
ダ135では、対応するレディキューアドレス生成器1
15を制御する信号を生成する。そして、そのレディキ
ューアドレス生成器115において、ステップS110
の処理が実行される。
【0041】〈効果〉以上のように、本具体例のタスク
スケジュール装置によれば、タスクのスケジューリング
を、TCBテーブルとタスクナンバーテーブルおよびレ
ディキューアドレス生成器やTCBテーブルアドレス出
力手段といったハードウェアを用いて行うようにしたの
で、次に実行するタスクのスタックポインタアドレスへ
のアクセスがわずかなサイクル数で済ますことができ
る。これにより、タスクの切り替えがソフトウェアで行
うよりも数十倍も速く行うことができる。
【0042】図9は、本具体例の動作を示すタイミング
チャートである。ワークメモリ7へのアクセスが1サイ
クル(ウェイト0)であるとすると、図8のフローチャ
ートで示したシーケンスは図示のようなタイミングでな
される。即ち、ステップS100で、中断したタスクの
スタックポインタアドレスをワークメモリ7にライト
し、ステップS101で、中断したタスクの優先度と状
態値をワークメモリ7にライトし、…、といった処理を
行って、ステップS115でワークメモリ7から次のタ
スクのスタックポインタアドレスをリードするまで、8
サイクルで完了させることができる。
【0043】以上のように、本発明は、高速なスループ
ットが要求される組み込みCPUに広く利用することが
できる。更に、上記の各具体例では、MPUを想定して
説明を行ったが、プログラム実行のプロセッサであれば
他の様々なディジタルシグナルプロセッサを利用するこ
とが可能である。
【図面の簡単な説明】
【図1】本発明の具体例のタスクスケジュール装置を示
すブロック図である。
【図2】一般的なレディキューの構成例説明図である。
【図3】一般的なウェイトキューの構成例説明図を示
す。
【図4】本発明のタスクスケジュール装置が適用される
リアルタイムOS装置のブロック図である。
【図5】TCBテーブルの要素とタスクナンバーテーブ
ルの要素を示す説明図である。
【図6】ワークメモリ内のTCBテーブルとタスクナン
バーテーブルの説明図である。
【図7】レディキューアドレス生成器の内部構成を示す
ブロック図である。
【図8】本具体例の動作を示すフローチャートである。
【図9】本具体例の動作を示すタイミングチャートであ
る。
【符号の説明】
71 TCBテーブル 72 タスクナンバーテーブル 111〜118 レディキューアドレス生成器(RQA
DR7〜RQADR0) 121 プライオリティエンコーダ(PRIENC) 130 TCBテーブルアドレス出力手段 131 タスクベースアドレスレジスタ(TSKBSA
DR) 132 タスクナンバーレジスタ(CNTTSKNU
M) 133 加算器(ADDR) 134 優先度数レジスタ(CNTPRINUM) 136 状態レジスタ(CNTSTANUM)

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 タスクを識別するためのタスクナンバー
    に対応したアドレスに、当該タスクのスタックポインタ
    アドレスを格納するTCBテーブルと、 優先度別のアドレスに対応して、実行可能なタスクのタ
    スクナンバーを格納するタスクナンバーテーブルと、 優先度別に設けられ、次に実行するタスクのスタックポ
    インタアドレスの要求を受けて、現在実行しているタス
    クの優先度で実行可能なタスクが存在するか否かを判定
    し、存在した場合はそのタスクに対応した前記タスクナ
    ンバーテーブルのアドレスを出力し、存在しない場合は
    次に優先度が高くかつ実行可能なタスクに対応した前記
    タスクナンバーテーブルのアドレスを出力するレディキ
    ューアドレス生成器と、 前記レディキューアドレス生成器から出力されたアドレ
    スに対応して、前記タスクナンバーテーブルから取り出
    されたタスクナンバーを保持し、かつ、当該タスクナン
    バーに対応した前記TCBテーブルのアドレスを出力す
    るTCBテーブルアドレス出力手段とを備えたことを特
    徴とするタスクスケジュール装置。
  2. 【請求項2】 請求項1に記載のタスクスケジュール装
    置において、 現在実行しているタスクの優先度で次に実行可能なタス
    クが存在しない場合は、次に優先度が高いレディキュー
    アドレス生成器の出力を選択するプライオリティエンコ
    ーダと、 前記プライオリティエンコーダから出力された優先度の
    値を保持する優先度数レジスタと、 前記優先度数レジスタで保持する値に対応したレディキ
    ューアドレス生成器を指定するための信号を送出するデ
    コーダと、 前記デコーダから出力された信号に対応した優先度の実
    行可能なタスクのアドレスを出力するレディキューアド
    レス生成器とを備えたことを特徴とするタスクスケジュ
    ール装置。
  3. 【請求項3】 請求項1または2に記載のタスクスケジ
    ュール装置において、 TCBテーブルアドレス出力手段は、 TCBテーブルの固定的なアドレスであるタスクベース
    アドレスを保持するタスクベースアドレスレジスタと、 次に実行するタスクのタスクナンバーを保持するタスク
    ナンバーレジスタと、 前記タスクベースアドレスレジスタの値とタスクナンバ
    ーレジスタの値とを加算したアドレスを出力する加算器
    とからなることを特徴とするタスクスケジュール装置。
JP2002062932A 2002-03-08 2002-03-08 タスクスケジュール装置 Pending JP2003263329A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002062932A JP2003263329A (ja) 2002-03-08 2002-03-08 タスクスケジュール装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002062932A JP2003263329A (ja) 2002-03-08 2002-03-08 タスクスケジュール装置

Publications (1)

Publication Number Publication Date
JP2003263329A true JP2003263329A (ja) 2003-09-19

Family

ID=29196455

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002062932A Pending JP2003263329A (ja) 2002-03-08 2002-03-08 タスクスケジュール装置

Country Status (1)

Country Link
JP (1) JP2003263329A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008518294A (ja) * 2004-10-25 2008-05-29 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング コンピュータプログラムを処理する方法、駆動システムおよび計算装置
JP5155336B2 (ja) * 2008-01-15 2013-03-06 カーネロンシリコン株式会社 タスク処理装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008518294A (ja) * 2004-10-25 2008-05-29 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング コンピュータプログラムを処理する方法、駆動システムおよび計算装置
JP4648396B2 (ja) * 2004-10-25 2011-03-09 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング コンピュータプログラムを処理する方法、駆動システムおよび計算装置
JP5155336B2 (ja) * 2008-01-15 2013-03-06 カーネロンシリコン株式会社 タスク処理装置

Similar Documents

Publication Publication Date Title
US10579388B2 (en) Policies for shader resource allocation in a shader core
JP2514296B2 (ja) パ―ソナルコンピュ―タのためのディジタル信号処理サブシステム
JP4006180B2 (ja) マルチスレッド式プロセッサでスレッド切替えイベントを選択するための方法および装置
JP4690988B2 (ja) 持続的なユーザレベルスレッド用の装置、システムおよび方法
KR101455009B1 (ko) 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간 통신
US7120783B2 (en) System and method for reading and writing a thread state in a multithreaded central processing unit
JP3776449B2 (ja) マルチタスク低電力制御装置
US7925864B2 (en) Method and apparatus for binding shadow registers to vectored interrupts
US8963933B2 (en) Method for urgency-based preemption of a process
US10242420B2 (en) Preemptive context switching of processes on an accelerated processing device (APD) based on time quanta
US9176795B2 (en) Graphics processing dispatch from user mode
US20120147021A1 (en) Graphics compute process scheduling
JP2002533807A (ja) 割込み/ソフトウエア制御スレッド処理
WO2012082421A1 (en) Accessibility of graphics processing compute resources
US8803891B2 (en) Method for preempting graphics tasks to accommodate compute tasks in an accelerated processing device (APD)
JP2022509170A (ja) プロセッサにおける余裕認識(laxity-aware)型動的優先度変更
CN114610472A (zh) 异构计算中多进程管理方法及计算设备
EP2652616A1 (en) Methods and systems for synchronous operation of a processing device
WO2012082777A1 (en) Managed task scheduling on an accelerated processing device (apd)
EP2663926A2 (en) Computer system interrupt handling
CN108845969B (zh) 适用于不完全对称多处理微控制器的操作控制方法及操作系统
US20090172684A1 (en) Small low power embedded system and preemption avoidance method thereof
WO2013081975A1 (en) Saving and restoring shader and non-shader state using a command processor
JP2003263329A (ja) タスクスケジュール装置
CN109426562B (zh) 优先级加权轮转调度器

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061121

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070122

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070403