JP2008522277A - 優先度の付けられたタスク間の効率的な切り換え - Google Patents

優先度の付けられたタスク間の効率的な切り換え Download PDF

Info

Publication number
JP2008522277A
JP2008522277A JP2007542478A JP2007542478A JP2008522277A JP 2008522277 A JP2008522277 A JP 2008522277A JP 2007542478 A JP2007542478 A JP 2007542478A JP 2007542478 A JP2007542478 A JP 2007542478A JP 2008522277 A JP2008522277 A JP 2008522277A
Authority
JP
Japan
Prior art keywords
task
instruction
tasks
memory
priority
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.)
Revoked
Application number
JP2007542478A
Other languages
English (en)
Inventor
イェー エム ハイリヘルス,マルキュス
ユハース,エレオノラ
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
Koninklijke Philips Electronics NV
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 Koninklijke Philips NV, Koninklijke Philips Electronics NV filed Critical Koninklijke Philips NV
Publication of JP2008522277A publication Critical patent/JP2008522277A/ja
Revoked 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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • 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

Abstract

本発明は、
プログラム・ルーチンのタスクが、種々の優先度の少なくとも二つのメモリ・スタック機構(62、64)に、割り当てられた優先度に基づいて選択的に格納される、プロセッサ装置、タスク・スケジューリング方法およびコンピュータ・プログラム・プロダクトに関する。少なくとも二つのプロセッサ手段(20、30)で実行されるタスクの切り換えは、プログラム・ルーチンに挿入された同期命令への応答として前記少なくとも二つのメモリ・スタック機構(62、64)にアクセスすることによって制御される。それにより、優先度を付けられたタスク間の、効率的な0サイクルのタスク切り換えが達成できる。

Description

本発明は、優先度の付けられた(prioritized)タスク間の効率的な切り換えを提供するためにタスク・スケジューリングを実行するためのプロセッサ装置、方法およびコンピュータ・プログラム・プロダクトに関する。
伝統的な現状最新技術のコンピュータでは、タスク切り換え命令シーケンスは、タスク間で切り換えをするために費やされる時間の膨大な消費につながる。タスクとタスクの間で費やされる時間は、タスク変更処理のオーバーヘッドと呼ばれる。それは、レジスタを保存および復元するために使われる時間であり、タスク優先度(task priorities)およびタスク実行正当化(task execution justification)を判別するのに使われる時間のようなその他の遅延も含む。こうして、これらの時間期間は、有用な処理のために利用できなくなる。多くの現代のコンピュータまたはプロセッサ・システムにおいて、そのような中断およびタスク変更処理のオーバーヘッドは何十ないし何百サイクルにもなる。
たとえば消費者用途では、一部の周辺データはリアルタイムで処理される必要がある一方、他のタスクは最善努力の仕方で処理できる。したがって、プログラムは高優先度のタスクと低優先度のタスクを含んでおり、タスク間の時間依存性を導出するために依存性解析が実行される。主プロセッサは通例、一般的なタスクを実行するために設けられる。一方、コプロセッサは、専用タスクを時間/パワー効率のよい仕方で実行するために使われ、主プロセッサ上で走っているタスクによって前もって構成設定される必要がある。目標は、当該プログラムの最短遅延の実行を見出すことである。
図2(a)は、プログラムおよびその最も並列的な実行の例を示している。初期プログラムは、Cのような逐次手続き型言語で書き下される。プログラムは、高優先度の(high-priority)タスクHPi、低優先度の(low-priority)タスクLPiおよび独立したコプロセッサ(co-processor)で走ることのできるタスクCPiを含む。コンパイル時の依存性解析によって、図2(b)の例に示されるように諸タスクの部分的な順序が決定される。図2(b)によれば、低優先度のタスクLP1はすぐ開始でき、他のタスクに何らの依存性ももたない。一方、低優先度のタスクLP7は高優先度タスクHP4の実行に依存している。高優先度タスクHP2、HP4、HP6、HP8、HP10およびコプロセッサ・タスクCP3、CP5、CP9、CP11の依存性は図2(b)における時間順序から読み取れる。ここで、図の、より下の各タスクはより上のタスクに依存しており、よって該より上のタスクの完了前に実行することはできない。
図2(c)は、このプログラムの所望の実行フローを示している。一般すなわち主プロセッサ上での実行のために何らかの高優先度タスクが利用可能であれば、それはすぐ開始されるべきである。実行すべき利用可能な高優先度タスクがなくなったら、主プロセッサは低優先度タスクを実行するためにその時間を使うことができる。そのようなスケジューリングは、プリエンプティブ・スケジューリングとして知られ、たとえばJ. L. Peterson et al, ‘Operating System Concepts’, Addison Wesley, 1986に記載されている。
依存性解析は、高優先度タスクとコプロセッサ・タスクとがCプログラムの順序に配列され、その配列の可能な限り早いところに低優先度タスクが並列化される解析に単純化できる。
しかしながら、一般にはタスクの遅延はコンパイル時にはわからないので、実行トレースは、単一スレッドのアセンブリ・プログラムでは効率的にエンコードできない。
図3は、二つの異なる実行トレースの例を示している。こらの実行トレースは同じプログラムおよびその依存性解析から帰結するものだが、コプロセッサ・タスクCP3およびCP5の異なるランタイム遅延によって生じている。具体的には、図3(a)に示す第一の実行トレースでは、コプロセッサ・タスクCP3およびCP5は短いランタイム遅延で実行され、よって高優先度タスクがより早い段階で実行できる。それに対し、図3(b)に示す第二の実行トレースでは、コプロセッサ・タスクCP3およびCP5はより多くのサイクルを要しており、よって主プロセッサが低優先度タスクLP1の実行を待つ時間がより長く、高優先度タスクHP6、HP8およびHP10はより遅い段階に実行される。
したがって、実行トレースを事前に決定することはできず、タスク切り換えはランタイムの活動となる。どのようなタスクがあるかに依存して、オペレーティング・システムは、諸タスクを、その優先度に基づいてプロセッサに割り当てる。これを達成するため、タスクおよびその優先度を保存するためにヒープまたは優先度待ち行列が一般に使用される。これはたとえば、T. H. Cormen et al., ‘Introduction to algorithms’, MIT Press, 1990に記載されている。この提案の欠点は、そのような構造でのタスクの格納/取り出しは多数の処理サイクルを要するということである。これは、タスク切り換えの適用可能性を、タスクの数に比べて多くのサイクルをもつ、粒度の大きなタスクに限定する。そうでなければ、タスク切り換えのオーバーヘッドが有意になり、プログラムの逐次的な実行に比べてサイクルを損することにさえなりかねない。
しかしながら、タスクの粒度が細かい分野または用途では、このアプローチは有用ではなく、好ましくは0のサイクルでのタスク切り換えが望まれる。
したがって、本発明の一つの目的は、並列タスク切り換えが格納および取り出しのコストの不利益なく実行できる、改良されたタスク・スケジューリングのアプローチを提供することである。
この目的は、請求項1記載のプロセッサ装置、請求項8記載のスケジューリング方法および請求項12記載のコンピュータ・プログラム・プロダクトによって達成される。
それによると、タスク切り換えは、プログラム・ルーチンに挿入された同期命令(synchronization instructions)への応答として少なくとも二つのメモリ・スタックにアクセスすることによって実行される。タスクの初期プッシュは1サイクルを要し、一方、同期命令は通常のプログラム命令と同時に呼び出すことができ、オーバーヘッドなしでのタスク切り換えを許容する。こうして、優先度を付けられたタスク間での効率的な切り換えが達成できる。
前記少なくとも二つのメモリ・スタックをモニタリングし、優先度が最も高い空でないメモリ・スタックの一番上へのアクセスを提供するためのランタイム取扱手段が設けられる。それにより、メモリ・スタックにアクセスする際、高優先度のタスクが低優先度のタスクよりも優先されることが保証される。
同期命令は、プロセッサ手段の一つのプログラム・カウンタを所与のタスク・アドレスに設定し、前記プロセッサ手段の別の一つの現在タスクを、前記少なくとも二つのメモリ・スタックのうち高優先度のものからポップさせる開始命令(start instruction)を有しうる。この命令は、プロセッサ手段の高優先度のタスク間での効率的な切り換えを提供する。
さらに、同期命令は、所与のタスクを前記少なくとも二つのメモリ・スタックの高優先度のものにプッシュし、前記少なくとも二つのメモリ・スタックの低優先度のものの一番上を、前記プロセッサ手段の一つの次のタスク・アドレスで置き換える停止命令(stop instruction)を有しうる。この命令は、他のプロセッサ手段における従属タスクの実行後の効率的な戻し切り換えを提供する。
最後に、同期命令は、前記少なくとも二つのメモリ・スタックの高優先度のものから現在のタスクをポップさせ、所与のタスク・アドレスを格納する保持命令(hold instruction)を有しうる。この任意的な保持命令は、プリエンプティブな高優先度タスクとの関連で有利に使うことができる。
タスク切り換え手段は、命令自身から前記所与のタスク・アドレスを導出するよう適応されていてもよい。前記所与のタスク・アドレスはすでに同期命令に含まれているので、アドレス取得のための追加的なタスク切り換えサイクルは必要とされない。
同期命令をプログラム・ルーチンのアセンブリ・コードに挿入することは、該プログラム・ルーチンの諸タスクの依存性の解析ステップに基づいていてもよい。それにより、アセンブリ・コードの自動修正が、外部相互作用を何ら必要とすることなく達成できる。
低優先度タスクと高優先度タスクとの間の切り換えは、プログラム・ルーチンの通常または従来式の命令と同時に呼び出せる。この施策により、タスク切り換えのための追加的な処理サイクルは防止できる。
本発明についてこれから、付属の図面を参照しつつ好ましい実施形態に基づいて説明する。
これから記載する好ましい実施形態は、主プロセッサ20およびコプロセッサ30を有するプロセッサ装置についてのものである。該プロセッサ装置は、サポート機能をもつ両側スタック60に基づいて2レベルの優先度タスクの切り換えを実行するためのものである。
図1は、提案されるアーキテクチャのブロック概略図を示している。該アーキテクチャは、主プロセッサ20および専用タスクのためのコプロセッサ30を有しており、これらはいずれも、プログラム・コードもしくはルーチンおよび処理データが保存されているメモリ・システム10への独自のアクセスを有する。メモリ・システム10は単一のメモリ回路もしくはデバイスを有していても、複数のメモリ回路もしくはデバイスを有していてもよいが、該メモリ・システム10の少なくとも一部分は両方のプロセッサによって共有されうる。これは、両方のプロセッサが同じ共有メモリ位置にアクセスしうるということを意味している。主プロセッサ20は、システム・メモリ管理、システム・タスク管理およびシステム上で走るその他のネイティブなタスクを含むさまざまな機能を実行するオペレーティング・システムをホストしうる。
さらに、主プロセッサ20とコプロセッサ30との間のタスクの切り換えを制御するために、タスク・スケジューリング機能またはユニット50が設けられる。好ましい実施形態によれば、優先度を付けられたタスクが、スタック・メモリ60のそれぞれの優先度依存スタックに格納されている。スタック・メモリ60には、タスク切り換えユニット50は、該スタック・メモリ60へのアクセスを管理するランタイム取扱機能またはユニット40を介してアクセスできる。タスク・スケジューリング・ユニット50およびランタイム取扱ユニット40は別個のソフトウェアもしくはハードウェア機能として実装されてもよいし、あるいは主プロセッサ20上で走っているオペレーティング・システムの一部として設けられてもよいことを注意しておく。しかしながら、ソフトウェア実装は当然ながら効率に関してはトレードオフに導くことを注意しておく。
図4(a)は、両側スタックとして構成されたスタック・メモリ60の第一の例を示している。ここで、ランタイム取扱ユニット40がタスク切り換えのサポートを提供する。今の例では、タスク切り換えは2レベルの優先度のタスクに制限される。これは、対応するデジタル信号処理の背景では、高優先度タスクと低優先度タスクについて使用されうる場合である。この目的のため、スタック・メモリ60は低優先度スタック64および高優先度スタック62を有する。低優先度スタックと高優先度スタックは、空のスタックもしくはスタックフィールドによって、あるいは所定のビットパターンもしくは情報パターンによって分離されうる(図4(a)の斜線部で示すように)。
しかしながら、本発明は両側スタックや二つの別個のスタック・メモリに制限されるものではない。本発明は、種々の優先度レベルのための、たとえば高優先度、中優先度、低優先度もしくはさらに多くの優先度レベルのための、別個のスタックを使用するよう拡張できる。
図4(b)は、スタック・メモリ60の第二の例を示している。ここでは、それぞれが専用の優先度レベルを表す別個のスタック・メモリが設けられている。一番下のスタック・フィールド(斜線部で示される)は空であるか、またはスタックの終わりを示す所定の情報を含んでいる。
一般に、上記のスタック・メモリは、いかなる種類のメモリ・デバイスもしくは回路においていかなるスタック機構に基づいて実装されてもよい。
図1を参照すると、タスク・スケジューリング・ユニット50は主プロセッサ20およびコプロセッサ30の両方にアクセスできる。さらに、タスク・スケジューリング・ユニット50はメモリ・システム10にアクセスできる。タスク・スケジューリング・ユニット50は、ランタイム取扱ユニット40およびスタック・メモリ60と関連して、ランタイムにて同期命令を取り扱うことによってタスク切り換えをサポートする。命令は、オペレーティング・システムによって実行されうる依存性解析の結果に基づいて、メモリ・システム10内に格納されているプログラムまたはルーチンのアセンブリ・コードに挿入される。タスク・メモリ60へのタスクの初期プッシュは1サイクルを要する一方、コプロセッサ・タスクの開始、コプロセッサ・タスクの終了および低優先度タスクと高優先度タスクとの間の切り換えといった同期命令は通常命令と同時に呼び出される。追加的な同期命令の組み込みは、通常の命令に、単に余剰ビットを加えることによって達成されうる。それにより、オーバーヘッドなしでのタスク切り換えが許容される。
図5は、オーバーヘッドのない同期命令実行を示す概略的な流れ図である。同期命令は通常命令に添付されている。図5の例では、開始命令Start_cp(CP_address,HP_address)は高優先度タスクHP2の終わりに挿入される。それによりコプロセッサのプログラム・カウンタを所与のアドレスCP_addressに設定し、高優先度タスクの次のアドレスHP_addressを渡す。さらに、この開始命令は、スタック・メモリ60の高優先度スタック62から、コプロセッサ30をコールしている高優先度タスクをポップさせるポップ動作につながる。コプロセッサ・タスクCP3の終わりに、停止命令Stop(HP_address)が組み込まれる。これは、低優先度スタック64の一番上を、低優先度タスクの次のアドレスLP_addressで置き換え、高優先度タスクの次のアドレスHP_addressを低優先度スタック64にプッシュする。
ランタイム取扱ユニット40は、高優先度スタック62および低優先度スタック64を観察し、高優先度スタック62上の諸タスクを実行し、高優先度スタック62にタスクが残っていなければ、低優先度スタック64上のタスクを実行する。
こうして、アセンブリ・コードに、タスク切り換えを制御するための同期命令が挿入または組み込まれる。スタック・メモリ60は、ランタイム取扱ユニット40およびタスク切り換えユニット50とともに、ランタイムにてこれらの同期命令を取り扱うことによってタスク切り換えをサポートする。プリエンプティブでない高優先度タスクという上記の場合では、開始命令および停止命令が使用されうる。
代替または修正として、プリエンプティブな高優先度タスクのために追加的な保持命令を設けうる。それについて以下で説明する。
図6は、決定的な依存性での(at critical dependencies)高優先度タスクのプリエンプションを許容する、オーバーヘッドなしで実行される対応する同期命令の概略的な流れ図である。この解決策は、より詳細な依存性解析が実行され、高優先度タスクが実際にコプロセッサ・タスクからの情報を必要とする点までその実行を進めることが許容される場合に使える。
図6によれば、高優先度タスクHP2の実行の間に、開始命令Start_cp(CP_address)が挿入される。この開始命令は、コプロセッサのプログラム・カウンタを所与のアドレスCP_addressに設定する。さらに、保持命令Hold_task(HP_address)が挿入される。この保持命令は、高優先度スタック62から現在の高優先度タスクをポップさせ、その高優先度タスクの次のアドレスHP_addressを保存する。コプロセッサ・タスクCP3の実行後に、停止命令Stop(HP_address)が加えられる。これは、高優先度タスクが保持されている場合、低優先度スタック64に、低優先度タスクの次のアドレスLP_addressを保存し、高優先度タスクの次のアドレスを高優先度スタック62にプッシュする。
以下では、図7および図8を参照しつつ処理例を説明する。この例は、図5の非プリエンプティブ同期命令に基づいている。
具体的には、図7(a)は、オペレーティング・システムの依存性解析の結果を示し、図7(b)はスタック・メモリ60の内容を示し、図7(c)は主プロセッサ20で走っているプログラムを示している。高優先度タスクが現れると、それはタスク・スケジューリング・ユニット50によってランタイム取扱ユニット40を介して高優先度スタック62上にプッシュされる。それにより主プロセッサ20のプログラム・カウンタは、メモリ・システム10の、この高優先度タスクHP2が位置しているメモリ・アドレスに切り換わる。同様に、第一の低優先度タスクLP1は、対応するプッシュ動作によって低優先度スタック64の一番上にプッシュされる。
図8は、第一の高優先度タスクHP2が終了し、切り換え命令を発するときの状況を示している。高優先度スタック62が次の高優先度タスクHP4を含んでいる場合、ランタイム取扱ユニット40によるスタック・メモリ60へのアクセスの制御は、その高優先度タスクが同時に走っているコプロセッサ・タスクCP3への依存性を有するとの判断がタスク・スケジューリング・ユニット50によってされない限り、その高優先度タスクが実行されるように行われる。高優先度スタック62が空であるか、高優先度スタック62上の次の高優先度タスクが同時に走っているコプロセッサ・タスクCP3への依存性を有する(これは、図8(a)に示すように、高優先度タスクHP4がコプロセッサ30が完了するまで待たなければならないことを意味する)場合には、プログラム・カウンタは、低優先度スタック64上の第一の低優先度タスクLP1にジャンプし、コプロセッサ30からの割り込みが受領されるまでこのタスクを実行する。この割り込みは、低優先度タスクLP1の中断を引き起こし、プログラム・カウンタを、高優先度スタック62の列または待ち行列における次の高優先度タスクHP4に変更する。
好ましい実施形態によれば、同期命令によってトリガーされる機能呼び出しが高優先度タスクまたはコプロセッサ・タスクへのコールまたはジャンプとして扱われる限り、手続き型言語のサポートは維持される。対応する機能は高優先度スタック62上にプッシュされるか、コプロセッサ・タスクとして呼び出される。
図9は、タスク・スケジューリング・ユニット50によって実行される制御手順の概略的な流れ図を示している。ステップS100では、次の命令コード(アセンブリコード)がメモリ・システム10から取り出され、ステップS101において、もしあれば、同期命令が抽出される。次いで、ステップS102で同期命令がデコードされて、タスク・スケジューリングのための同期命令の種類が判別される。好ましい実施形態によれば、デコード・ステップS102は、コプロセッサ30のための開始命令を判別しうる。それにより手続きはステップS103に分岐し、そこでコプロセッサ30のプログラム・カウンタPC2が所与のコプロセッサ・アドレスに設定され、高優先度タスクの次のアドレスが渡される。他方、デコード・ステップS102でコプロセッサ30のための停止命令が検出される場合、手続きはステップS104に分岐し、そこでタスク・スケジューリング・ユニット50は、低優先度スタック64の一番上を低優先度タスクの次のアドレスで置き換え、高優先度タスクの次のアドレスを高優先度スタック62上にプッシュするはたらきをする。プリエンプティブな高優先度タスクが許容または実装される任意的な場合では、ステップS102で保持命令がデコードされることもあり、その場合、手続きはステップS105に分岐して、タスク・スケジューリング・ユニット50は、高優先度スタック62から現在のタスクをポップさせ、高優先度タスクの次のアドレスを格納するはたらきをする。それにより、優先度を付けられたタスク間での高効率のタスク切り換えが、粒度の細かいタスクのための0サイクルのタスク切り換えとして達成できる。
まとめると、タスク・スケジューリング方式が提案される。プログラム・ルーチンのタスクは、種々の優先度の少なくとも二つのメモリ・スタック機構に、割り当てられた優先度に基づいて選択的に格納される。少なくとも二つのプロセッサ手段で実行されるタスクの切り換えは、プログラム・ルーチンに挿入された同期命令への応答として前記少なくとも二つのメモリ・スタック機構にアクセスすることによって制御される。それにより、優先度を付けられたタスク間の、効率的な0サイクルのタスク切り換えが達成できる。
上記の好ましい実施形態に基づく提案される解決策は、共有されるレジスタの場合にコンテキスト切り換えまたは状態保存のために最終的な余剰サイクルのための留保がある、いかなる主プロセッサ/コプロセッサの筋書きにおいても導入できることを注意しておく。特に、本発明は、高優先度のタスクが実行されていないときに空の処理スロットをタスクが埋めることのできるいかなる領域においても適用可能である。そのような領域の例は、イメージ・ビジョン、ユーザー対話および背景場面のあるゲーム用途、危険な状況および危険でない状況をもつセキュリティ用途、危険な状況および危険でない状況をもつ衝突検出用途、誤方向処理および経路追跡処理をもつGPS(全地球測位システム)用途、ストリーミング処理およびユーザー・インターフェース処理をもつリアルタイム信号処理、通話処理およびゲーム処理をもつ携帯電話用となどである。
さらに、スタック・メモリ60の構造は、上記の両側メモリ・スタックに制限されず、他の型のメモリにおけるいかなる種類のスタック・メモリまたはスタック・メモリ機構をも使用できることを注意しておく。さらに、本発明は、二つ以上のプロセッサ装置間でタスクを切り換えるために使用できる。もちろん、スタック・メモリ60との関連でタスク切り換えを制御するために、他の表記法を用いた他の同期命令を使うこともできる。それらは、いかなる方法またはいかなる長さで従来式または通常のプログラム命令に組み込まれ、また追加えられてもよい。よって、好ましい実施形態は、付属の特許請求の範囲内においてさまざまでありうる。
上記の実施形態は本発明を限定するのではなく解説するものであり、当業者は付属の請求項で定義される本発明の範囲から外れることなく多くの代替的な実施形態を設計できるであろうことは注意しておくべきである。請求項において、括弧内に参照符号があったとしてもその請求項を限定するものと解釈してはならない。動詞「有する」などは請求項や明細書全体において挙げられているもの以外の要素またはステップの存在を排除しない。要素の単数形の言及はそのような要素の複数の存在を排除しない。逆もまたしかり。ある種の施策が互いに異なる従属請求項において言及されていたとしても、それらの施策の組み合わせが有利に使用できないことを示すものではない。
好ましい実施形態に基づくプロセッサ装置のブロック概略図である。 タスク切り換えでの並列化された実行フローの例を示すための概略図である。 タスク切り換えでの並列化された実行フローの例を示すための概略図である。 タスク切り換えでの並列化された実行フローの例を示すための概略図である。 ランタイム遅延に依存する異なる実行トレースの概略的な表現の一つを示す図である。 ランタイム遅延に依存する異なる実行トレースの概略的な表現の一つを示す図である。 好ましい実施形態に基づく両側スタック・メモリを示す図である。 好ましい実施形態に基づく種々の優先度レベルのための別個のスタック・メモリを示す図である。 オーバーヘッドのない同期命令実行の概略的な流れ図である。 好ましい実施形態に基づく、高優先度タスクのプリエンプションを許容する同期命令の実行の概略的な流れ図である。 好ましい実施形態に基づく、同期命令の実行の第一の例を示す概略的な流れ図の一部である。 好ましい実施形態に基づく、同期命令の実行の第一の例を示す概略的な流れ図の一部である。 好ましい実施形態に基づく、同期命令の実行の第一の例を示す概略的な流れ図の一部である。 好ましい実施形態に基づく、同期命令の実行の第二の例を示す概略的な流れ図の一部である。 好ましい実施形態に基づく、同期命令の実行の第二の例を示す概略的な流れ図の一部である。 好ましい実施形態に基づく、同期命令の実行の第二の例を示す概略的な流れ図の一部である。 好ましい実施形態に基づく、同期命令の処理の概略的な流れ図である。
符号の説明
S100 命令コードを取り出し
S101 挿入されている同期命令を抽出
S102 デコード命令
S103 コプロセッサのプログラム・カウンタを所与のCPアドレスに設定し、HPタスクの次のアドレスを渡す
S104 LPスタックの一番上を、LPタスクの次のアドレスで置き換え、HPタスクの次のアドレスをHPスタックにプッシュする
S105 HPスタックから現在のタスクをポップさせ、HPタスクの次のアドレスを保存

Claims (12)

  1. a)プログラム・ルーチンのタスクを該タスクに割り当てられた優先度に基づいて処理するための、独自のメモリ・アクセスをもつ少なくとも二つのプロセッサ手段と、
    b)タスクをその割り当てられた優先度に基づいて選択的に格納するための、異なる優先度の少なくとも二つのメモリ・スタック機構と、
    c)前記少なくとも二つのプロセッサ手段で実行されるタスクの切り換えの制御を、前記プログラム・ルーチンに挿入された同期命令に応じて前記少なくとも二つのメモリ・スタックにアクセスすることによって行う、タスク切り換え手段、
    とを有するプロセッサ装置。
  2. 前記少なくとも二つのメモリ・スタック機構をモニタリングし、優先度が最も高い空でないメモリ・スタック機構の一番上へのアクセスを提供するためのランタイム取扱手段をさらに有する、請求項1記載の装置。
  3. 前記同期命令が、前記プロセッサ手段の一つの、プログラム・カウンタを、所与のタスク・アドレスに設定し、前記プロセッサ手段の別の一つの、現在タスクを、前記少なくとも二つのメモリ・スタック機構のうち高優先度のものからポップさせる開始命令を含む、請求項1または2記載の装置。
  4. 前記同期命令が、所与のタスクを前記少なくとも二つのメモリ・スタック機構の高優先度のものにプッシュし、前記少なくとも二つのメモリ・スタック機構の低優先度のものの一番上を、前記プロセッサ手段の一つの次のタスク・アドレスで置き換える停止命令を含む、請求項1または2記載の装置。
  5. 前記同期命令が、前記少なくとも二つのメモリ・スタック機構の高優先度のものから現在のタスクをポップさせ、所与のタスク・アドレスを格納する保持命令を含む、請求項1または2記載の装置。
  6. 前記タスク切り換え手段が、前記所与のタスク・アドレスを前記命令から導出するよう適応されている、請求項3ないし5記載の装置。
  7. 前記同期命令が、前記プログラム・ルーチンの命令に追加的ビットとして添付されている、請求項1ないし6記載の装置。
  8. 独自のメモリ・アクセスをもつ少なくとも二つのプロセッサ手段を有するプロセッサ装置においてタスク・スケジューリングを実行する方法であって:
    a)プログラム・ルーチンのタスクを、割り当てられた優先度に基づいて、異なる優先度の少なくとも二つのメモリ・スタック機構に選択的に格納する段階と;
    b)前記プログラム・ルーチンに同期命令を挿入する段階と;
    c)前記少なくとも二つのプロセッサ手段で実行されるタスクの切り換えを、前記同期命令に応じて前記少なくとも二つのメモリ・スタックにアクセスすることによって制御する段階、
    とを有する方法。
  9. 前記プログラム・ルーチンの諸タスクの依存性を解析する段階と、該解析する段階の結果に基づいて前記プログラム・ルーチンのアセンブリ・コードに前記同期命令を挿入する段階とをさらに有する、請求項8記載の方法。
  10. 前記同期命令が、前記プロセッサ手段の一つにおいてタスクを開始するための開始命令、前記プロセッサ手段の一つにおいてタスクを停止させるための停止命令および前記プロセッサ手段の一つにおいてタスクを保持するための保持命令を含む、請求項8または9記載の方法。
  11. 低優先度タスクと高優先度タスクとの間の切り換えを、前記プログラム・ルーチンの通常の命令と同時的に呼び出す段階をさらに有する、請求項8ないし10のうちいずれか一項記載の方法。
  12. 前記プロセッサ装置のメモリにロードされたときに、プロセッサ装置を、請求項8ないし10のうちいずれか一項記載の前記諸段階を実行するよう制御するコード手段を有する、コンピュータ・プログラム・プロダクト。
JP2007542478A 2004-11-30 2005-11-24 優先度の付けられたタスク間の効率的な切り換え Revoked JP2008522277A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP04106190 2004-11-30
PCT/IB2005/053897 WO2006072841A2 (en) 2004-11-30 2005-11-24 Efficient switching between prioritized tasks

Publications (1)

Publication Number Publication Date
JP2008522277A true JP2008522277A (ja) 2008-06-26

Family

ID=36228556

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007542478A Revoked JP2008522277A (ja) 2004-11-30 2005-11-24 優先度の付けられたタスク間の効率的な切り換え

Country Status (7)

Country Link
US (1) US20080098398A1 (ja)
EP (1) EP1820100B1 (ja)
JP (1) JP2008522277A (ja)
CN (1) CN100535862C (ja)
AT (1) ATE406613T1 (ja)
DE (1) DE602005009398D1 (ja)
WO (1) WO2006072841A2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007026095A (ja) * 2005-07-15 2007-02-01 Matsushita Electric Ind Co Ltd 並列演算装置
US8032889B2 (en) * 2006-04-05 2011-10-04 Maxwell Technologies, Inc. Methods and apparatus for managing and controlling power consumption and heat generation in computer systems
US8281294B1 (en) * 2007-11-12 2012-10-02 Nvidia Corporation System and method for representing and managing a multi-architecture co-processor application program
US8276132B1 (en) * 2007-11-12 2012-09-25 Nvidia Corporation System and method for representing and managing a multi-architecture co-processor application program
WO2009090684A1 (ja) * 2008-01-15 2009-07-23 Netcleus Systems Corporation タスク処理装置
CN101290591B (zh) * 2008-06-03 2011-10-12 北京中星微电子有限公司 一种嵌入式操作系统中切换任务的方法和单元
CN101290590B (zh) * 2008-06-03 2012-01-11 北京中星微电子有限公司 一种嵌入式操作系统中切换任务的方法和单元
FR2942556B1 (fr) * 2009-02-24 2011-03-25 Commissariat Energie Atomique Unite d'allocation et de controle
US20120192147A1 (en) * 2011-01-25 2012-07-26 Argen Wong Develop real time software without an RTOS

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4286322A (en) * 1979-07-03 1981-08-25 International Business Machines Corporation Task handling apparatus
US4435780A (en) * 1981-06-16 1984-03-06 International Business Machines Corporation Separate stack areas for plural processes
GB2191612A (en) * 1986-06-11 1987-12-16 Ibm Display terminal
JPH02271435A (ja) * 1989-04-13 1990-11-06 Mitsubishi Electric Corp タスクトレース装置
US5161226A (en) * 1991-05-10 1992-11-03 Jmi Software Consultants Inc. Microprocessor inverse processor state usage
EP0706126A1 (en) * 1994-10-07 1996-04-10 International Business Machines Corporation Multi-priority level scheduler
WO1997005550A1 (en) * 1995-07-27 1997-02-13 Intel Corporation Protocol for arbitrating access to a shared memory area using historical state information
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US6157989A (en) * 1998-06-03 2000-12-05 Motorola, Inc. Dynamic bus arbitration priority and task switching based on shared memory fullness in a multi-processor system
JP4072271B2 (ja) * 1999-02-19 2008-04-09 株式会社日立製作所 複数のオペレーティングシステムを実行する計算機
US6993018B1 (en) * 1999-08-03 2006-01-31 Telefonaktiebolaget Lm Ericsson (Publ) Priority signaling for cell switching
FR2799081B1 (fr) * 1999-09-27 2002-02-22 Cit Alcatel Procede et dispositif de gestion des circuits de transmission d'un reseau
JP3641997B2 (ja) * 2000-03-30 2005-04-27 日本電気株式会社 プログラム変換装置及び方法並びに記録媒体
US6822959B2 (en) * 2000-07-31 2004-11-23 Mindspeed Technologies, Inc. Enhancing performance by pre-fetching and caching data directly in a communication processor's register set
US6751711B1 (en) * 2000-10-27 2004-06-15 Nortel Networks Limited Methods and systems for process rollback in a shared memory parallel processor computing environment
GB2369464B (en) * 2000-11-27 2005-01-05 Advanced Risc Mach Ltd A data processing apparatus and method for saving return state
US20030014474A1 (en) * 2001-05-30 2003-01-16 Mckaig Ray S. Alternate zero overhead task change circuit
EP1391820A3 (en) * 2002-07-31 2007-12-19 Texas Instruments Incorporated Concurrent task execution in a multi-processor, single operating system environment
US20050015768A1 (en) * 2002-12-31 2005-01-20 Moore Mark Justin System and method for providing hardware-assisted task scheduling
US8631176B2 (en) * 2003-02-11 2014-01-14 Gvbb Holdings S.A.R.L. Asynchronous communications technique
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
DE10353267B3 (de) * 2003-11-14 2005-07-28 Infineon Technologies Ag Multithread-Prozessorarchitektur zum getriggerten Thread-Umschalten ohne Zykluszeitverlust und ohne Umschalt-Programmbefehl
US7904905B2 (en) * 2003-11-14 2011-03-08 Stmicroelectronics, Inc. System and method for efficiently executing single program multiple data (SPMD) programs

Also Published As

Publication number Publication date
US20080098398A1 (en) 2008-04-24
EP1820100A2 (en) 2007-08-22
CN100535862C (zh) 2009-09-02
WO2006072841A2 (en) 2006-07-13
EP1820100B1 (en) 2008-08-27
WO2006072841A3 (en) 2006-10-12
CN101065728A (zh) 2007-10-31
DE602005009398D1 (de) 2008-10-09
ATE406613T1 (de) 2008-09-15

Similar Documents

Publication Publication Date Title
JP2008522277A (ja) 優先度の付けられたタスク間の効率的な切り換え
JP2007188398A (ja) マルチプロセッサシステム、マルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラム。
KR20130012126A (ko) 예외 이벤트 처리 장치 및 방법
US20100050184A1 (en) Multitasking processor and task switching method thereof
CN114168271B (zh) 一种任务调度方法、电子设备及存储介质
KR100439286B1 (ko) 처리시스템,프로세서,컴퓨터판독가능한메모리및컴파일러
KR100983135B1 (ko) 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법
KR20070090649A (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
CN111538535B (zh) 一种cpu指令处理方法、控制器和中央处理单元
KR100883655B1 (ko) 재구성 가능한 프로세서를 갖는 문맥 교환 시스템 및 방법
US20040098722A1 (en) System, method, and computer program product for operating-system task management
JP4170364B2 (ja) プロセッサ
CN113918336A (zh) 基于多核CPU的FreeRTOS运行任务方法及装置
US8910181B2 (en) Divided central data processing
JP2009175960A (ja) 仮想マルチプロセッサシステム
JP5678347B2 (ja) Itシステムの構成方法、そのコンピュータプログラムおよびitシステム
US7603673B2 (en) Method and system for reducing context switch times
JP2008537248A (ja) デジタルシグナルプロセッサ上でのマルチタスクの実施
US9619277B2 (en) Computer with plurality of processors sharing process queue, and process dispatch processing method
JP2007122337A (ja) 演算装置
JP6477216B2 (ja) 演算装置、スレッド切替方法、及びマルチスレッドプログラム
CN116361079A (zh) 堆栈切换方法、堆栈切换装置、处理器以及存储介质
JPS6227413B2 (ja)
KR20010067336A (ko) 데이터 처리 장치 및 그 제어 방법
JPH11134202A (ja) タスク切替え装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081121

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110706

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110823

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120612

AA91 Notification that invitation to amend document was cancelled

Free format text: JAPANESE INTERMEDIATE CODE: A971091

Effective date: 20120626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120717

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121211