JP5538442B2 - リアルタイムマルチスレッドスケジューラおよびスケジューリング方法 - Google Patents

リアルタイムマルチスレッドスケジューラおよびスケジューリング方法 Download PDF

Info

Publication number
JP5538442B2
JP5538442B2 JP2011554278A JP2011554278A JP5538442B2 JP 5538442 B2 JP5538442 B2 JP 5538442B2 JP 2011554278 A JP2011554278 A JP 2011554278A JP 2011554278 A JP2011554278 A JP 2011554278A JP 5538442 B2 JP5538442 B2 JP 5538442B2
Authority
JP
Japan
Prior art keywords
task
priority
thread
tasks
executable
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.)
Expired - Fee Related
Application number
JP2011554278A
Other languages
English (en)
Other versions
JP2012520531A (ja
Inventor
エーリヒ・ジェームズ・プロンドケ
ルシアン・コドレスク
Original Assignee
クアルコム,インコーポレイテッド
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 クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2012520531A publication Critical patent/JP2012520531A/ja
Application granted granted Critical
Publication of JP5538442B2 publication Critical patent/JP5538442B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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

Description

本開示は、概して、リアルタイムマルチスレッドスケジューラおよびスケジューリング方法を対象とする。
技術の進歩により、コンピューティングデバイスは、より小型でより強力になった。たとえば、現在、小型で軽量な、ユーザが容易に持ち運べる携帯型無線電話、携帯情報端末(PDA)、およびページングデバイスなどの無線コンピューティングデバイスを含む様々な携帯型パーソナルコンピューティングデバイスが存在する。より具体的には、セルラー電話やインターネットプロトコル(IP)電話などの携帯型無線電話は、音声およびデータパケットを無線ネットワークを介して伝達することができる。さらに、多くのそのような無線電話は、その中に組み込まれた他のタイプのデバイスを含む。たとえば、無線電話は、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、およびオーディオファイルプレーヤをも含むことができる。また、そのような無線電話は、ウェブブラウザアプリケーションなど、インターネットにアクセスするために使用できるソフトウェアアプリケーションを含む実行可能命令を処理することができる。したがって、これらの無線電話はかなりの計算能力を含むことができる。
デジタル信号プロセッサ(DSP)、画像プロセッサ、および他の処理デバイスは、携帯型パーソナルコンピューティングデバイスにおいて頻繁に使用され、オペレーティングシステムと連携して動作する。リアルタイムオペレーティングシステム(RTOS)の1つの要件は、厳しい優先度スケジューリングである。シングルプロセッサ上では、この要件は、最高優先度実行可能タスクをスケジュールすべきであるということである。一般に、複数の中央処理ユニット(CPU)をもつマルチスレッドまたはマルチプロセッサシステムでは、特定のタスクが特定のハードウェアスレッドまたはCPUに結合され、シングルプロセッサスケジューラアルゴリズムが各ハードウェアスレッドまたはCPU上で独立して実行される。この手法は、最高優先度実行可能タスクを全体的にスケジュールすべきであるというRTOS制約条件を満たさず、どのハードウェアスレッドまたはCPUが先にタスクをスケジュールすべきかの知識という、入手可能でないことがある知識を必要とする。
特定の一実施形態では、第1のスレッドにおいて割り込みを受信するステップを含む方法が開示され、第1のスレッドは、第1の時間におけるプロセッサにおける複数の実行中スレッド(executing thread)のうちの最低優先度スレッドを含む。本方法はまた、第2のスレッドを識別するステップを含み、第2のスレッドは、第2の時間におけるプロセッサにおける複数の実行中スレッドのうちの最低優先度スレッドを含む。本方法はさらに、後続の割り込みを第2のスレッドに向けるステップを含む。
別の実施形態では、スレッドのセットのうちの第1のスレッドにおいて割り込みを受信するステップを含む方法が開示される。スレッドのセットの各スレッドは、実行中タスク(executing task)のセットのそれぞれのタスクを実行する。実行中タスクのセットの各タスクおよび実行可能タスク(ready task)のセットの各タスクは、それぞれの優先度を有する。本方法はまた、実行中タスクのセットの各タスクは、実行可能タスクのセットのあらゆるタスクの優先度よりも大きいかまたはそれに等しい優先度を有するまで、実行中タスクのセットのうちの最低優先度タスクを実行可能タスクのセットのうちの最高優先度タスクと反復的にスワップするステップを含む。
別の実施形態では、複数の実行中スレッドが最高優先度タスクを実行しているように複数のスレッドを実行するように構成されたマルチスレッドプロセッサを含むシステムが開示される。マルチスレッドプロセッサは、実行中タスクがすべての実行可能タスクの最高優先度と少なくとも同じ高さの優先度を有するようにタスクをスケジュールするように構成される。
別の実施形態では、コンピュータ読み取り可能な媒体が開示される。コンピュータ読み取り可能な媒体は、コンピュータに、割り込みを複数の実行中スレッドのうちの最低優先度スレッドに向けさせるように実行可能であるコンピュータ実行可能命令を含んでいる。割り込みは、少なくとも1つのタスクが実行される準備ができていることを示す。複数の実行中スレッドのうちの最低優先度スレッドは、最低優先度タスクを実行しているかまたはアイドルスレッドであるかのいずれかである。複数の実行中スレッドのうちの最低優先度スレッドは、割り込みを受信し、割り込みルーチンを開始して実行可能タスクリストから最高優先度タスクを選択する。
開示する実施形態によって与えられる1つの特定の利点は、割り込みからの妨げが軽減されて最高優先度スレッドが実行されるようにタスクがスケジュールされることである。優先度の低いスレッドが割り込みを受信するので、再スケジュール割り込みを起こすと、自動的に、最高優先度スレッドを妨げることなしに優先度の低いスレッドを再スケジュールする。さらに、外部割り込みは、最高優先度スレッドではなく最低優先度スレッドに割り込みをかける。
開示する実施形態によって与えられる別の特定の利点は、複数のタスクが、実行する準備が整えられ、2つ以上の実行中タスクよりも優先度が高いシナリオでは、優先度の低い実行中タスクは、最小数のスワップを用いて、他の優先度の高い実行中タスクへのオーバーヘッドなしに、新しいより高い優先度のタスクとスワップされることである。
開示する実施形態によって与えられる別の利点は、割り込みハンドラスレッドの優先度を、現在実行中スレッドの優先度と直接比較することができることである。現在実行中スレッドが割り込みハンドラスレッドよりも低い優先度を有する場合、割り込みハンドラスレッドは直ちにスケジュールされ得る。
本開示の他の態様、利点、および特徴は、以下のセクション、すなわち、図面の簡単な説明、発明を実施するための形態、および特許請求の範囲を含む、本出願全体の検討後に明らかになろう。
処理システムの特定の例示的な実施形態のブロック図である。 最低優先度実行中スレッドに向けられた割り込みを示す、処理システムの別の特定の例示的な実施形態のブロック図である。 タスクスワップを示す、図2の処理システムの特定の例示的な実施形態のブロック図である。 最低優先度実行中スレッドに向けられた別の割り込みを示す、図2の処理システムの特定の例示的な実施形態のブロック図である。 実行可能タスクリストから実行中タスクリストに移動しているタスクを示す、図2の処理システムの特定の例示的な実施形態のブロック図である。 最低優先度実行中スレッドに向けられた別の割り込みを示す、図2の処理システムの特定の例示的な実施形態のブロック図である。 タスクスワップを示す、図2の処理システムの特定の例示的な実施形態のブロック図である。 最低優先度実行中スレッドに向けられた別の割り込みを示す、図2の処理システムの特定の例示的な実施形態のブロック図である。 タスクスワップを示す、図2の処理システムの特定の例示的な実施形態のブロック図である。 マルチスレッドプロセッサ上でリアルタイムにタスクをスケジュールするための方法の第1の例示的な実施形態の流れ図である。 スケジューラアルゴリズムの流れ図である。 スケジューラ確認の流れ図である。 マルチスレッドプロセッサ上でリアルタイムにタスクをスケジュールするための方法の第2の例示的な実施形態の流れ図である。 マルチスレッドプロセッサ上でリアルタイムにタスクをスケジュールするための方法の第3の例示的な実施形態の流れ図である。 マルチスレッドプロセッサ上でリアルタイムにタスクをスケジュールするための方法の第4の例示的な実施形態の流れ図である。 リアルタイムマルチスレッドスケジューラモジュールを含む携帯型通信デバイスの特定の一実施形態のブロック図である。
図1を参照すると、処理システムの特定の例示的な実施形態が示され、全体的に100と称される。マルチスレッドプロセッサ100は、バスインタフェース108を介して命令キャッシュ110に結合されたメモリ102を含む。マルチスレッドプロセッサ100はまた、バスインタフェース108を介してメモリ102に結合されたデータキャッシュ112を含む。命令キャッシュ110はバス111を介してシーケンサ114に結合される。特定の一例では、シーケンサ114は汎用割り込み116を受信することもでき、その汎用割り込み116は割り込みレジスタ(図示せず)から取り出され得る。特定の一実施形態では、命令キャッシュ110は複数のカレント命令レジスタを介してシーケンサ114に結合され得、それらのカレント命令レジスタは、バス111に結合され、マルチスレッドプロセッサ100の特定のスレッドに関連付けられ得る。特定の一実施形態では、マルチスレッドプロセッサ100は、6つのスレッドを含むインターリーブ型マルチスレッドプロセッサである。
特定の一実施形態では、バス111は64ビットバスであり、シーケンサ114は、それぞれ32ビット長を有する複数の命令を含む命令パケットを介してメモリ102から命令を取り出すように構成される。バス111は、第1の命令実行ユニット118と、第2の命令実行ユニット120と、第3の命令実行ユニット122と、第4の命令実行ユニット124とに結合される。各命令実行ユニット118、120、122、124は、第2のバス128を介して汎用レジスタファイル126に結合され得る。汎用レジスタファイル126はまた、第3のバス130を介してシーケンサ114と、データキャッシュ112と、メモリ102とに結合され得る。
マルチスレッドプロセッサ100はまた、1つまたは複数の優先度設定を記憶するためのスーパバイザ制御レジスタ132を含み得、それらの優先度設定は、処理スレッドの各々においてどのタスクを実行すべきかを判断するためにリアルタイム優先度スケジューラ158と割り込みコントローラ156とを含む制御ユニット150によってアクセスされ得る。リアルタイム優先度スケジューラ158はソフトウェアルーチンとして実装され得る。各処理スレッドは、特定のスレッドに専用のスーパバイザ状態レジスタに記憶される1つまたは複数のビット値など、1つまたは複数の関連する優先度設定を有し得る。
動作中、マルチスレッドプロセッサ100は、複数の実行中スレッドが最高優先度タスクを実行しているように複数のスレッドを実行し、マルチスレッドプロセッサ100は、すべての実行中タスクがすべての実行可能タスクの最高優先度と少なくとも同じ高さの優先度を有するようにタスクをスケジュールする。特定の一実施形態では、リアルタイム優先度スケジューラ158は、すべての実行中タスクがすべての実行可能タスクの最高優先度と少なくとも同じ高さの優先度を有するようにタスクをスケジュールする。特定の一実施形態では、マルチスレッドプロセッサ100は、複数の実行中スレッドのうちの最低優先度スレッドに向けられた割り込みが、複数の実行中スレッドのうちの最高優先度スレッドの性能に影響を及ぼさないように構成される。たとえば、割り込みコントローラ156は、複数の実行中スレッドのうちの最低優先度スレッドに向けられた割り込みが、複数の実行中スレッドのうちの最高優先度スレッドの性能に影響を及ぼさないように構成され得る。本明細書で使用する割り込みは、通常の実行を停止し、特殊ハンドラの実行を開始するいかなるものでもあり得る。割り込みは、通常のプログラムフローのいかなる中断をも意味し得る。
特定の一実施形態では、マルチスレッドプロセッサ100は、複数の実行中スレッドのうちの最低優先度スレッドが、割り込みを受信し、割り込みルーチンを実行して実行可能タスクリストから最高優先度タスクを選択するように構成される。たとえば、割り込みコントローラ156は、複数の実行中スレッドのうちの最低優先度スレッドが割り込みを受信し、リアルタイム優先度スケジューラ158が割り込みルーチンを実行して実行可能タスクリストから最高優先度タスクを選択することができるように構成され得る。割り込みロジックは、最低優先度スレッドのみが割り込みを受け取ることが可能であるように構成され得る。特定の一実施形態では、マルチスレッドプロセッサ100は、実行可能タスクリストの最高優先度タスクを実行し、前の実行中タスクを実行可能タスクリストに戻すためのタスクの各スワップの後に、スケジュールを確認していずれかの実行可能タスクがいずれかの実行中タスクよりも高い優先度を有するかどうかを判断するように構成され得る。たとえば、リアルタイム優先度スケジューラ158は、実行可能タスクリストの最高優先度タスクを実行し、前の実行中タスクを実行可能タスクリストに戻すためのタスクの各スワップの後に、スケジュールを確認していずれかの実行可能タスクがいずれかの実行中タスクよりも高い優先度を有するかどうかを判断し得る。
特定の一実施形態では、マルチスレッドプロセッサ100は、更新されたスケジュールのあらゆる実行中タスクが実行可能タスクの最高優先度と少なくとも同じ高さの優先度を有するように、実行中タスクと実行可能タスクとの可能な最小数のスワップを使用してスケジュールが更新されるように構成される。たとえば、リアルタイム優先度スケジューラ158は、更新されたスケジュールのあらゆる実行中タスクが実行可能タスクの最高優先度と少なくとも同じ高さの優先度を有するように、実行中タスクと実行可能タスクとの可能な最小数のスワップを使用してスケジュールが更新されるように構成され得る。
図2を参照すると、処理システムの特定の例示的な実施形態が示され、全体的に200と称される。特定の一実施形態では、マルチスレッドプロセッサ200は、図1のマルチスレッドプロセッサ100と実質的に同様である。マルチスレッドプロセッサ200は、割り込みコントローラ204と、割り込みマスク220と、第1のデータ構造206と、第2のデータ構造210とに結合されたリアルタイム優先度スケジューラ202を含む。第1のデータ構造206は、複数の実行中スレッド214上で実行されているタスクの優先順位付けされた実行中タスクリスト208を含む。タスクは、0が最高優先度タスクを示し、1が次に高い優先度タスクを示すなど、それぞれの優先度によって示されている。特定の一実施形態では、アイドルタスクが最低優先度を有する。第2のデータ構造210は、複数の実行中スレッド214上で実行する準備ができているタスクの優先順位付けされた実行可能タスクリスト212を含む。割り込みコントローラ204は、矢印218によって示されるように、割り込みを複数の実行中スレッド214のうちの最低優先度スレッドに向けるように構成され得る。割り込みマスク220は、割り込みを受信するための各スレッドの利用可能性を示すためのビットマスクとすることができる。特定の一実施形態では、割り込みマスク220は、矢印218によって示されるように、割り込みを複数の実行中スレッド214のうちの最低優先度スレッドに向けるように構成され得る。
リアルタイム優先度スケジューラ202は、最高優先度タスクを第2のデータ構造210の優先順位付けされた実行可能タスクリスト212から第1のデータ構造206の優先順位付けされた実行中タスクリスト208に移動して割り込まれた最低優先度スレッド上で最高優先度タスクを実行するように構成され得る。リアルタイム優先度スケジューラ202はまた、スケジュール222を確認して第2のデータ構造210中のいずれかの実行可能タスクが第1のデータ構造206中の最低優先度実行中タスクよりも高い優先度を有するかどうかを判断するように構成され得る。スケジュール222を確認することは、第1のデータ構造206と第2のデータ構造210とを検査して第2のデータ構造210中のいずれかの実行可能タスクが第1のデータ構造206中の最低優先度実行中タスクよりも高い優先度を有するかどうかを判断することを含み得る。特定の一実施形態では、複数の実行中スレッド214のうちの最低優先度スレッドは、第1のデータ構造206の優先順位付けされた実行中タスクリスト208からの最低優先度タスクを実行している。たとえば、図2において6の優先度をもつタスクを実行しているスレッドが最低優先度スレッドであり得る。
動作中、矢印216によって示されるように、複数の実行中スレッド214上で実行されている4の優先度をもつ2つのタスクのうちの一方が、2の優先度をもつタスクを起動または「ウェイクアップ」することができる。この優先度2のタスクは、第2のデータ構造210の優先順位付けされた実行可能タスクリスト212上に現れている。割り込みマスク220は、優先度6のタスクを実行している最低優先度スレッドを除いて、割り込みコントローラ204から複数の実行中スレッド214上で実行されているすべてのタスクをマスクオフする。割り込みコントローラ204は、優先度2のタスクの起動またはウェイクアップに応答して、矢印218によって示されるように、割り込みを、複数の実行中スレッド214のうちの最低優先度スレッドである優先度6のタスクを実行しているスレッドに向け得る。
図3を参照すると、リアルタイム優先度スケジューラ202は、矢印300によって示されるように、最高優先度タスクである優先度2のタスクを第2のデータ構造210の優先順位付けされた実行可能タスクリスト212から第1のデータ構造206の優先順位付けされた実行中タスクリスト208に移動して、割り込まれた最低優先度スレッド上で最高優先度タスクである優先度2のタスクを実行し得る。矢印300によって示されるように、タスクをスワップして、優先順位付けされた実行可能タスクリスト212からの最高優先度タスクである優先度2のタスクを実行し、前の実行中タスクである優先度6のタスクを優先順位付けされた実行可能タスクリスト212に戻した後、リアルタイム優先度スケジューラ202は、スケジュール222を確認して第2のデータ構造210中のいずれかの実行可能タスクが第1のデータ構造206中の最低優先度実行中タスクよりも高い優先度を有するかどうかを判断し得る。図3では、矢印300によって示されるタスクのスワップの後、第2のデータ構造210中の実行可能タスクは、優先度6または優先度8のいずれかを有し、第1のデータ構造206中の最低優先度実行中タスクは2つの優先度4のタスクであり、したがって、第2のデータ構造210中の実行可能タスクのいずれも、第1のデータ構造206中の最低優先度実行中タスクよりも高い優先度を有しない。割り込みマスク220は、優先度4のタスクを実行している最低優先度スレッドを除いて、割り込みコントローラ204から複数の実行中スレッド214上で実行されているすべてのタスクをマスクオフする。
図4を参照すると、動作の別の例として、矢印400によって示されるように、複数の実行中スレッド214上で実行されている6の優先度をもつタスクは、2の優先度をもつタスクと4の優先度をもつ2つのタスクとを起動または「ウェイクアップ」することができる。優先度2のタスクと2つの優先度4のタスクとは、第2のデータ構造210の優先順位付けされた実行可能タスクリスト212上に現れている。割り込みマスク220は、アイドルである最低優先度スレッドを除いて、割り込みコントローラ204から複数の実行中スレッド214上で実行されているすべてのタスクをマスクオフする。タスクの起動またはウェイクアップに応答して、割り込みコントローラ204は、矢印402によって示されるように、割り込みを複数の実行中スレッド214のうちの最低優先度スレッドに向け得る。特定の一実施形態では、複数の実行中スレッド214のうちの最低優先度スレッドは、そのアイドル状態により、第1のデータ構造206の優先順位付けされた実行中タスクリスト208上で最低優先度を有すると定義されるアイドルタスクを実行しているアイドルスレッドである。
図5を参照すると、図4のリアルタイム優先度スケジューラ202は、矢印500によって示されるように、割り込まれた最低優先度スレッド上で、最高優先度タスクである優先度2のタスクを実行するために、最高優先度タスクである優先度2のタスクを第2のデータ構造210の優先順位付けされた実行可能タスクリスト212から第1のデータ構造206の優先順位付けされた実行中タスクリスト208に移動し得る。矢印500によって示されるように、優先順位付けされた実行可能タスクリスト212から最高優先度タスクである優先度2のタスクを移動した後、リアルタイム優先度スケジューラ202は、スケジュール222を確認して第2のデータ構造210中のいずれかの実行可能タスクが第1のデータ構造206中の最低優先度実行中タスクよりも高い優先度を有するかどうかを判断し得る。図5では、矢印500によって示されるタスクの移動後、第2のデータ構造210中の実行可能タスクは両方とも優先度4を有し、第1のデータ構造206中の最低優先度実行中タスクは優先度8のタスクであり、したがって、第2のデータ構造210中の実行可能タスクの両方は、第1のデータ構造206中の最低優先度実行中タスクよりも高い優先度を有する。割り込みマスク220は、優先度8のタスクを実行している最低優先度スレッドを除いて、割り込みコントローラ204から複数の実行中スレッド214上で実行されているすべてのタスクをマスクオフする。
図6を参照すると、2つの優先度4のタスクが、第2のデータ構造210の優先順位付けされた実行可能タスクリスト212上に残っている。割り込みマスク220は、優先度8のタスクを実行している最低優先度スレッドを除いて、割り込みコントローラ204から複数の実行中スレッド214上で実行されているすべてのタスクをマスクオフしている。割り込みコントローラ204は、矢印600によって示されるように、割り込みを、複数の実行中スレッド214のうちの最低優先度スレッドである、優先度8のタスクを実行しているスレッドに向け得る。
図7を参照すると、リアルタイム優先度スケジューラ202は、矢印700によって示されるように、割り込まれた最低優先度スレッド上で最高優先度タスクである優先度4のタスクのうちの一方を実行するために、最高優先度タスクである優先度4のタスクのいずれかを第2のデータ構造210の優先順位付けされた実行可能タスクリスト212から第1のデータ構造206の優先順位付けされた実行中タスクリスト208に移動し得る。矢印700によって示されるように、タスクをスワップして、優先順位付けされた実行可能タスクリスト212からの最高優先度タスクである優先度4のタスクのうちの一方を実行し、前の実行中タスクである優先度8のタスクを優先順位付けされた実行可能タスクリスト212に戻した後、リアルタイム優先度スケジューラ202は、スケジュール222を確認して第2のデータ構造210中のいずれかの実行可能タスクが第1のデータ構造206中の最低優先度実行中タスクよりも高い優先度を有するかどうかを判断し得る。図7では、矢印700によって示されるタスクのスワップの後、第2のデータ構造210中の実行可能タスクは優先度4および優先度8を有し、第1のデータ構造206中の最低優先度実行中タスクは優先度6のタスクであり、したがって、第2のデータ構造210中の実行可能タスクのうちの一方、すなわち、優先度4のタスクは、第1のデータ構造206中の最低優先度実行中タスクよりも高い優先度を有する。割り込みマスク220は、優先度6のタスクを実行している最低優先度スレッドを除いて、割り込みコントローラ204から複数の実行中スレッド214上で実行されているすべてのタスクをマスクオフする。
図8を参照すると、優先度4のタスクが、優先度8のタスクとともに第2のデータ構造210の優先順位付けされた実行可能タスクリスト212上に残っている。割り込みマスク220は、優先度6のタスクを実行している最低優先度スレッドを除いて、割り込みコントローラ204から複数の実行中スレッド214上で実行されているすべてのタスクをマスクオフしている。図7の矢印700によって示されるタスクスワップに応答して、割り込みコントローラ204は、矢印800によって示されるように、割り込みを、複数の実行中スレッド214のうちの最低優先度スレッドである、優先度6のタスクを実行しているスレッドに向け得る。
図9を参照すると、リアルタイム優先度スケジューラ202は、矢印900によって示されるように、割り込まれた最低優先度スレッド上で、最高優先度タスクである優先度4のタスクを実行するために、最高優先度タスクである優先度4のタスクを第2のデータ構造210の優先順位付けされた実行可能タスクリスト212から第1のデータ構造206の優先順位付けされた実行中タスクリスト208に移動し得る。矢印900によって示されるように、タスクをスワップして、優先順位付けされた実行可能タスクリスト212からの最高優先度タスクである優先度4のタスクを実行し、前の実行中タスクである優先度6のタスクを優先順位付けされた実行可能タスクリスト212に戻した後、リアルタイム優先度スケジューラ202は、スケジュール222を確認して第2のデータ構造210中のいずれかの実行可能タスクが第1のデータ構造206中の最低優先度実行中タスクよりも高い優先度を有するかどうかを判断し得る。図9では、矢印900によって示されるタスクのスワップの後、第2のデータ構造210中の実行可能タスクは優先度6および優先度8を有し、第1のデータ構造206中の最低優先度実行中タスクは優先度4のタスクであり、したがって、第2のデータ構造210中の実行可能タスクのいずれも、第1のデータ構造206中の最低優先度実行中タスクよりも高い優先度を有しない。割り込みマスク220は、優先度4のタスクを実行している最低優先度スレッドを除いて、割り込みコントローラ204から複数の実行中スレッド214上で実行されているすべてのタスクをマスクオフする。
図10Aを参照すると、マルチスレッドプロセッサ上でリアルタイムにタスクをスケジュールするための方法の第1の例示的な実施形態の流れ図が示され、全体的に1000と称される。特定の一実施形態では、方法1000は図1のマルチスレッドプロセッサ100上で実装される。方法1000は、1002において、割り込みを受信するステップと、割り込まれたタスクからのコンテキストを保存するステップとを含む。方法1000はまた、1004において、実行可能キューへの割り込みを待っている1つまたは複数のタスクを追加するステップを含む。特定の一実施形態では、実行可能キューは、複数の実行中スレッド214上で実行する準備ができているタスクの優先順位付けされた実行可能タスクリスト212を含む、図2に示す第2のデータ構造210に対応する。
方法1000はさらに、1006において、図10Bに示すスケジューラアルゴリズムを実行するステップを含む。方法1000はまた、1008において、コンテキストを復元するステップと、割り込まれない演算に戻るステップとを含む。スケジューラは、割り込まれたタスクに戻る前に他のタスクを実行することがあるので、コンテキストを復元するステップと、割り込まれない演算に戻るステップとは後の時点において生じてもよい。
図10Bを参照すると、スケジューラアルゴリズムが1010に示されている。スケジューラアルゴリズム1010は、1012において、実行中キューから現在実行中のタスクを削除するステップと、そのタスクを実行可能キューに追加するステップとを含む。特定の一実施形態では、実行中キューは、複数の実行中スレッド214上で実行されているタスクの優先順位付けされた実行中タスクリスト208を含む、図2に示す第1のデータ構造206に対応する。スケジューラアルゴリズム1010はまた、1014において、実行可能キューから最高優先度タスクを削除するステップと、そのタスクを実行中キューに追加してそのタスクを新しい現在実行中タスクにするステップとを含む。スケジューラアルゴリズム1010はさらに、1016において、新しい現在実行中タスクが最低優先度実行中タスクであるかどうかを判断するステップを含む。新しい現在実行中タスクが最低優先度実行中タスクである場合、1018において、新しい現在実行中タスクが実行されているスレッドは、割り込みを受け取るように構成される。新しい現在実行中タスクが最低優先度実行中タスクではない場合、1020において、新しい現在実行中タスクが実行されているスレッドは、割り込みを受け取らないように構成される。スケジューラアルゴリズム1010はさらに、1022において、図10Cに示すスケジューラ確認を実行するステップを含む。
図10Cを参照すると、スケジューラ確認が1024に示されている。スケジューラ確認1024は1026において開始する。スケジューラ確認1024は、1028において、いくつかのスレッドが割り込みを受け取るように構成されているかどうかを判断するステップを含む。どのスレッドも割り込みを受け取るように構成されていない場合、1034において、(1つまたは複数の)最低優先度スレッドは割り込みを受け取るように構成される。スケジューラ確認1024はまた、1030において、最低優先度実行中タスクが最高優先度実行可能タスクよりも低い優先度を有するかどうかを判断するステップを含む。最低優先度実行中タスクが最高優先度実行可能タスクよりも低い優先度を有する場合、1036において、再スケジューリングイベントを引き起こす割り込みがトリガされ、1038において、スケジューラ確認1024は終了する。
最低優先度実行中タスクが最高優先度実行可能タスクよりも低い優先度を有しない場合、スケジューラ確認1024はさらに、1032において、いずれかのタスクが実行可能である間、いずれかのスレッドがアイドルであるかどうかを判断するステップを含む。いずれかのタスクが実行可能である間、いずれかのスレッドがアイドルである場合、1036において、再スケジューリングイベントを引き起こす割り込みがトリガされ、1038において、スケジューラ確認1024は終了する。いずれかのタスクが実行可能である間、どのスレッドもアイドルでない場合、1038において、スケジューラ確認1024は終了する。特定の一実施形態では、割り込みコントローラは、1036においてトリガされる割り込みが最低優先度スレッドまたはアイドルスレッドに送出されるようにすでにセットアップされている。
図11を参照すると、マルチスレッドプロセッサ上でリアルタイムにタスクをスケジュールするための方法の第2の例示的な実施形態の流れ図が示され、全体的に1100と称される。特定の一実施形態では、方法1100は図1のマルチスレッドプロセッサ100上で実装される。方法1100は、1102において、第1のスレッドにおいて割り込みを受信するステップを含み、第1のスレッドは、第1の時間におけるプロセッサにおける複数の実行中スレッドのうちの最低優先度スレッドを含む。方法1100はまた、1104において、第2のスレッドを識別するステップを含み、第2のスレッドは、第2の時間におけるプロセッサにおける複数の実行中スレッドのうちの最低優先度スレッドを含む。特定の一実施形態では、第2のスレッドは第1のスレッドとは異なる。方法1100はさらに、1106において、後続の割り込みを第2のスレッドに向けるステップを含む。たとえば、上記で説明したように、図2の矢印218、図4の矢印402、図6の矢印600、および図8の矢印800によって示されるように、割り込みは複数の実行中スレッド214のうちの最低優先度スレッドに向けられ得る。特定の一実施形態では、割り込みは、少なくとも1つのタスクが実行される準備ができていることを示す。たとえば、図2の矢印218によって示される割り込みは、優先度2のタスクが実行される準備ができていることを示し、図4の矢印402によって示される割り込みは、優先度2のタスクが実行される準備ができていることを示し、図6の矢印600によって示される割り込みは、優先度4のタスクが実行される準備ができていることを示し、図8の矢印800によって示される割り込みは、優先度4のタスクが実行される準備ができていることを示し得る。
特定の一実施形態では、第1のスレッドは、複数の実行中タスクのうちの最低優先度タスクを実行している。たとえば、図2の複数の実行中スレッド214のうちの最低優先度スレッドは優先度6のタスクを実行していることがあり得、図3の最低優先度スレッドは優先度4のタスクを実行しており、図5および図6の最低優先度スレッドは優先度8のタスクを実行していることがあり得、図7および図8の最低優先度スレッドは優先度6のタスクを実行していることがあり得、図9の最低優先度スレッドは優先度4のタスクを実行している。特定の一実施形態では、第1のスレッドはアイドルスレッドである。たとえば、図4の複数の実行中スレッド214のうちの最低優先度スレッドはアイドルスレッドであり得る。特定の一実施形態では、アイドルスレッドはアイドルタスクを実行している。
方法1100はまた、1108において、第1のスレッドが割り込みを受信したとき、割り込みルーチンを実行して実行可能タスクリストから最高優先度タスクを選択するステップを含む。実行可能タスクリストからの最高優先度タスクの第1の優先度は、実行中タスクリストからの最低優先度タスクの第2の優先度と比較され得、第1の優先度が第2の優先度よりも高いときのみ、タスクはスワップされる。たとえば、図2では、矢印218によって示されるように、複数の実行中スレッド214のうちの最低優先度スレッドである、優先度6のタスクを実行しているスレッドが割り込みを受信したとき、割り込みルーチンを実行して優先順位付けされた実行可能タスクリスト212から最高優先度タスクである優先度2のタスクを選択することができる。
方法1100はさらに、1110において、タスクをスワップして、第1のスレッドにおいて実行可能タスクリストの最高優先度タスクを実行し、前の実行中タスクを実行可能タスクリストに戻した後、実行可能タスクリストのいずれかの実行可能タスクが最低優先度実行中タスクよりも高い優先度を有するかどうかを判断するステップを含む。たとえば、図3の矢印300によって示されるように、優先度2のタスクと優先度6のタスクとをスワップした後、優先順位付けされた実行可能タスクリスト212の優先度6および優先度8をもつどの実行可能タスクも、優先順位付けされた実行中タスクリスト208の優先度4をもつ最低優先度実行中タスクよりも高い優先度を有しないことが判断され得る。同様に、図7の矢印700によって示されるように、優先度4のタスクと優先度8のタスクとをスワップした後、優先順位付けされた実行可能タスクリスト212の優先度4をもつ1つの実行可能タスクが、優先順位付けされた実行中タスクリスト208の優先度6をもつ最低優先度実行中タスクよりも高い優先度を有することが判断され得る。
特定の一実施形態では、必要に応じて方法1100を繰り返して、スケジュールを確認し、最低優先度実行中タスクを最高優先度実行可能タスクと比較することによっていずれかの追加の実行可能タスクが現在の最低優先度実行中タスクよりも高い優先度を有するかどうかを判断することができる。最低優先度実行中タスクを最高優先度実行可能タスクと比較するステップは、実行可能タスクリストのいずれかの実行可能タスクが最低優先度実行中タスクよりも高い優先度を有するかどうかを判断する1つの方法であり得る。たとえば、図3では、優先度4のタスクを最高優先度実行可能タスクである優先度6のタスクと比較することによって、どの実行可能タスクも最低優先度実行中タスクである優先度4のタスクよりも高い優先度を有しないことが判断され得る。同様に、図5では、優先度8のタスクを最高優先度実行可能タスクである優先度4のタスクと比較することによって、優先度4をもつ両方の実行可能タスクが最低優先度実行中タスクである優先度8のタスクよりも高い優先度を有することが判断され得る。
特定の一実施形態では、方法1100はさらに、最低優先度実行中タスクを判断するステップと、割り込みルーチンを使用して後続の割り込みを第2のスレッドに向けるステップとを含み、第2のスレッドは最低優先度実行中タスクを実行している。たとえば、図7の矢印700によって示されるように、優先度4のタスクと優先度8のタスクとをスワップした後、優先度6のタスクが最低優先度実行中タスクであると判断され得、図8の矢印800によって示されるように、割り込みルーチンを使用して、後続の割り込みを、複数の実行中スレッド214のうちの優先度6のタスクを実行している最低優先度スレッドに向け得る。
特定の一実施形態では、方法1100はさらに、スケジュールを確認していずれかの実行可能タスクが最低優先度実行中タスクよりも高い優先度を有するかどうかを判断した結果に基づいて、後続の割り込みを選択的に設定するステップを含む。たとえば、図8の矢印800によって示されるように、後続の割り込みは、図7のスケジュール222を確認し、実行可能タスクのうちの優先度4をもつ実行可能タスクが、優先度6のタスクである最低優先度実行中タスクよりも高い優先度を有すると判断した結果に基づいて、選択的に設定され得る。
特定の一実施形態では、図2〜図9の割り込みコントローラ204は、複数の実行中スレッド214のうちの最低優先度スレッド以外の、複数の実行中スレッド214のうちのスレッドが、割り込みを受信することからマスクされるように指示する。たとえば、図2〜図9に示すように、割り込みコントローラ204は、割り込みマスク220に指示して、複数の実行中スレッド214のうちの最低優先度スレッドを除いて、割り込みを受信することから複数の実行中スレッド214をマスクオフし得る。
図12を参照すると、マルチスレッドプロセッサ上でリアルタイムにタスクをスケジュールするための方法の第3の例示的な実施形態の流れ図が示され、全体的に1200と称される。特定の一実施形態では、方法1200は図1のマルチスレッドプロセッサ100上で実装される。方法1200は、1202において、スレッドのセットのうちの第1のスレッドにおいて割り込みを受信するステップを含み、スレッドのセットの各スレッドは、実行中タスクのセットのそれぞれのタスクを実行し、実行中タスクのセットの各タスクおよび実行可能タスクのセットの各タスクは、それぞれの優先度を有する。たとえば、図6に示すように、優先度8のタスクを実行しているスレッドは、矢印600によって示されるように割り込みを受信し得、複数の実行中スレッド214の各スレッドは、優先順位付けされた実行中タスクリスト208のそれぞれのタスクを実行し、優先順位付けされた実行中タスクリスト208の各タスクおよび優先順位付けされた実行可能タスクリスト212の各タスクは、それぞれの優先度を有する。特定の一実施形態では、アイドルスレッドが、最低優先度を有するアイドルタスクを実行する。たとえば、図4に示すように、アイドルタスクを実行しているスレッドは、矢印402によって示されるように割り込みを受信し得る。
方法1200はまた、1204において、実行中タスクのセットの各タスクが、実行可能タスクのセットのあらゆるタスクの優先度よりも大きいかまたはそれに等しい優先度を有するまで、実行中タスクのセットのうちの最低優先度タスクを実行可能タスクのセットのうちの最高優先度タスクと反復的にスワップするステップを含む。たとえば、図4〜図9に示すように、優先順位付けされた実行中タスクリスト208の最低優先度タスクは、図9に示すように、優先順位付けされた実行中タスクリスト208の各タスクが、優先順位付けされた実行可能タスクリスト212のあらゆるタスクの優先度よりも大きいかまたはそれに等しい優先度を有するまで、優先順位付けされた実行可能タスクリスト212のそれぞれの最高優先度タスクと反復的にスワップされ得る。
特定の一実施形態では、反復的スワップは、1206において、各実行中タスクを実行可能タスクとスワップして実行中タスクの次のセットと実行可能タスクの次のセットとを形成した後、実行中タスクの次のセットのうちの最低優先度タスクを判断するステップを含む。反復的スワップの各反復は、実行中タスクの次のセットのうちの最低優先度タスクを判断するステップを含み得る。たとえば、図7の矢印700によって示されるように、優先度4のタスクを優先度8のタスクとスワップした後、実行中タスクの次のセットは、優先度0のタスクと、2つの優先度2のタスクと、2つの優先度4のタスクと、優先度6のタスクとを含み得、実行可能タスクの次のセットは、優先度4のタスクと、優先度8のタスクとを含み得、優先度6のタスクは、実行中タスクの次のセットのうちの最低優先度タスクであると判断され得る。反復的スワップはさらに、1208において、実行中タスクの次のセットのうちの最低優先度タスクの優先度が、実行可能タスクの次のセットのうちの最高優先度タスクの優先度よりも小さいとき、最低優先度スレッドに割り込みを送信して反復的スワップの次の反復を実行するステップを含む。たとえば、図8の矢印800によって示されるように、優先度6のタスクが、実行可能タスクの次のセットの最高優先度を有する優先度4のタスクよりも低い優先度を有するので、割り込みが実行中タスクの次のセットのうちの最低優先度タスクである優先度6のタスクに送信されて反復的スワップの次の反復を実行し得る。
図13を参照すると、マルチスレッドプロセッサ上でリアルタイムにタスクをスケジュールするための方法の第4の例示的な実施形態の流れ図が示され、全体的に1300と称される。特定の一実施形態では、方法1300は図1のマルチスレッドプロセッサ100上で実装される。方法1300は、1302において、割り込みを複数の実行中スレッドのうちの最低優先度スレッドに向けるステップを含み、その割り込みは、少なくとも1つのタスクが実行される準備ができていることを示し、複数の実行中スレッドのうちの最低優先度スレッドは、最低優先度タスクを実行しているかまたはアイドルスレッドであるかのいずれかであり、複数の実行中スレッドのうちの最低優先度スレッドは、割り込みを受信し、割り込みルーチンを開始して実行可能タスクリストから最高優先度タスクを選択する。たとえば、図2の矢印218によって示されるように、割り込みは、複数の実行中スレッド214のうちの最低優先度スレッドに向けられ得、その割り込みは、優先度2のタスクが実行される準備ができていることを示し得、最低優先度スレッドは、優先度6のタスクである最低優先度タスクを実行していることがあり得、優先度6のタスクを実行している最低優先度スレッドは、割り込みを受信し得、割り込みルーチンを開始して優先順位付けされた実行可能タスクリスト212から優先度2のタスクである最高優先度タスクを選択し得る。
方法1300はまた、1304において、タスクをスワップして、実行可能タスクリストからの最高優先度タスクを実行し、前の実行中タスクを実行可能タスクリストに戻した後、スケジュールを確認していずれかの実行可能タスクがいずれかの実行中タスクよりも高い優先度を有するかどうかを判断するステップを含み、スケジュールを確認していずれかの実行可能タスクがいずれかの実行中タスクよりも高い優先度を有するかどうかを判断するステップは、最低優先度実行中タスクを最高優先度実行可能タスクと比較するステップを含む。たとえば、図7の矢印700によって示されるように、優先度4のタスクと優先度8のタスクとをスワップした後、スケジュール222を確認して、優先度6のタスクである最低優先度実行中タスクを優先度4のタスクである最高優先度実行可能タスクと比較することによって、いずれかの実行可能タスクがいずれかの実行中タスクよりも高い優先度を有するかどうかを判断し得る。
方法1300はさらに、1306において、割り込みルーチンを使用して、後続の割り込みを、複数の実行中スレッドのうちの最低優先度タスクを実行している特定のスレッドに向けるステップを含む。たとえば、図8の矢印800によって示されるように、割り込みルーチンを使用して、後続の割り込みを、複数の実行中スレッド214のうちの、優先度6のタスクである最低優先度タスクを実行している特定のスレッドに向け得る。方法1300はまた、1308において、スケジュールを確認していずれかの実行可能タスクが最低優先度実行中タスクよりも高い優先度を有するかどうかを判断した結果に基づいて、後続の割り込みを選択的に起こすかまたは開始するステップを含む。たとえば、図8の矢印800によって示されるように、後続の割り込みは、スケジュール222を確認し、優先度4の実行可能タスクが優先度6の実行中タスクである最低優先度実行中タスクよりも高い優先度を有すると判断した結果に基づいて、選択的に起こされるかまたは開始され得る。
図14は、リアルタイムマルチスレッドスケジューラモジュール1464を含むシステム1400の特定の一実施形態のブロック図である。システム1400は、携帯型電子デバイスにおいて実装され得、メモリ1432に結合されたデジタル信号プロセッサ(DSP)などのプロセッサ1410を含む。例示的な例では、リアルタイムマルチスレッドスケジューラモジュール1464は、図1〜図9のシステムのいずれかを含み、図10〜図13の実施形態のいずれか、またはそれらの任意の組合せに従って動作する。リアルタイムマルチスレッドスケジューラモジュール1464は、プロセッサ1410中にあるか、または別個のデバイスもしくは回路(図示せず)とすることができる。特定の一実施形態では、図1のリアルタイムマルチスレッドスケジューラ106は、デジタル信号プロセッサにとってアクセス可能である。たとえば、図14に示すように、リアルタイムマルチスレッドスケジューラモジュール1464は、デジタル信号プロセッサ(DSP)1410にとってアクセス可能である。
カメラインタフェース1468は、プロセッサ1410に結合され、また、ビデオカメラ1470などのカメラに結合される。ディスプレイコントローラ1426は、プロセッサ1410とディスプレイデバイス1428とに結合される。コーダ/デコーダ(コーデック)1434も信号プロセッサ1410に結合され得る。スピーカー1436およびマイクロフォン1438がコーデック1434に結合され得る。無線インタフェース1440は、プロセッサ1410と無線アンテナ1442とに結合され得る。
リアルタイムマルチスレッドスケジューラモジュール1464は、メモリ1432のようなコンピュータ読み取り可能な媒体に記憶されたコンピュータ実行可能命令1466を実行して、リアルタイムマルチスレッドスケジューラモジュール1464に、割り込みを複数の実行中スレッドのうちの最低優先度スレッドに向けさせるように構成され、その割り込みは、少なくとも1つのタスクが実行される準備ができていることを示し、複数の実行中スレッドのうちの最低優先度スレッドは、最低優先度タスクを実行しているかまたはアイドルスレッドであるかのいずれかであり、複数の実行中スレッドのうちの最低優先度スレッドは、割り込みを受信し、割り込みルーチンを開始して実行可能タスクリストから最高優先度タスクを選択する。このようにして、リアルタイムマルチスレッドスケジューラモジュール1464は、モデムタスクなどの優先度の高いタスクが、ユーザインタフェースタスクなどの優先度のより低いタスクによって割り込まれないようにすることができる。
特定の一実施形態では、プロセッサ1410、ディスプレイコントローラ1426、メモリ1432、コーデック1434、無線インタフェース1440、およびカメラインタフェース1468は、システムインパッケージまたはシステムオンチップデバイス1422中に含まれる。特定の一実施形態では、入力デバイス1430および電源1444はシステムオンチップデバイス1422に結合される。その上、特定の一実施形態では、図14に示すように、ディスプレイデバイス1428、入力デバイス1430、スピーカー1436、マイクロフォン1438、無線アンテナ1442、ビデオカメラ1470、および電源1444は、システムオンチップデバイス1422の外部にある。ただし、ディスプレイデバイス1428、入力デバイス1430、スピーカー1436、マイクロフォン1438、無線アンテナ1442、ビデオカメラ1470、および電源1444の各々は、インタフェースまたはコントローラなどのシステムオンチップデバイス1422の構成要素に結合され得る。
さらに、本明細書で開示した実施形態に関して説明した様々な例示的な論理ブロック、構成、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者は理解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、構成、モジュール、回路、およびステップを、上記では概して、それらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装することができるが、そのような実装の決定は、本開示の範囲からの逸脱を生じるものと解釈すべきではない。
本明細書で開示した実施形態に関して説明した方法またはアルゴリズムのステップは、直接ハードウェアで実施するか、プロセッサによって実行されるソフトウェアモジュールで実施するか、またはその2つの組合せで実施することができる。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読み取り専用メモリ(ROM)、プログラマブル読み取り専用メモリ(PROM)、消去的可能プログラマブル読み取り専用メモリ(EPROM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読み取り専用メモリ(CD-ROM)、または当技術分野で知られている他の形態の記憶媒体中に存在することができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサに一体化することができる。プロセッサおよび記憶媒体は特定用途向け集積回路(ASIC)中に存在することができる。ASICはコンピューティングデバイスまたはユーザ端末中に存在することができる。代替として、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末中に個別構成要素として存在することができる。
開示した実施形態の上記の説明は、開示した実施形態を当業者が作成または使用できるように行ったものである。これらの実施形態への様々な修正は当業者には容易に明らかであり、本明細書で定義した一般原理は、本開示の趣旨または範囲から逸脱することなく他の実施形態に適用され得る。したがって、本開示は、本明細書に示した実施形態に限定されるものではなく、以下の特許請求の範囲によって定義される原理および新規の特徴と一致する可能な最も広い範囲を与えられるべきである。
100 マルチスレッドプロセッサ
102 メモリ
108 バスインタフェース
110 命令キャッシュ
111、128、130 バス
112 データキャッシュ
114 シーケンサ
116 汎用割り込み
118、120、122、124 命令実行ユニット
126 汎用レジスタファイル
132 スーパバイザ制御レジスタ
150 制御ユニット
156 割り込みコントローラ
158 リアルタイム優先度スケジューラ
200 マルチスレッドプロセッサ
202 リアルタイム優先度スケジューラ
204 割り込みコントローラ
206 第1のデータ構造
208 優先順位付けされた実行中タスクリスト
210 第2のデータ構造
212 優先順位付けされた実行可能タスクリスト
214 複数の実行中スレッド
220 割り込みマスク
222 スケジュール
1400 システム
1410 プロセッサ
1422 システムオンチップデバイス
1426 ディスプレイコントローラ
1428 ディスプレイデバイス
1430 入力デバイス
1432 メモリ
1434 コーデック
1436 スピーカー
1438 マイクロフォン
1440 無線インタフェース
1442 無線アンテナ
1444 電源
1464 リアルタイムマルチスレッドスケジューラモジュール
1466 コンピュータ実行可能命令
1468 カメラインタフェース
1470 ビデオカメラ

Claims (23)

  1. タスクを前記タスクの実行を可能にするように複数のハードウェアスレッドのうちのハードウェアスレッドに割り当てるように構成されたマルチスレッドプロセッサの第1のハードウェアスレッドにおいて割り込みを受信するステップを有し、
    前記第1のハードウェアスレッドは、第1の時間における前記マルチスレッドプロセッサにおける前記複数のハードウェアスレッドに割り当てられた複数のタスクのうちの最低優先度タスク第1のハードウェアスレッドによる実行に基づいて特定され、
    前記第1のハードウェアスレッドにおける前記割り込みの受信に基づいて、前記第1のハードウェアスレッドにおいて割り込みルーチンを開始して実行可能タスクリストから最高優先度タスクを選択するステップと、
    前記マルチスレッドプロセッサの第2のハードウェアスレッドを識別するステップとをさらに有し、
    前記第2のハードウェアスレッドは、前記第1の時間の後に発生する第2の時間における前記マルチスレッドプロセッサにおける前記複数のハードウェアスレッドに割り当てられた複数のタスクのうちの最低優先度タスク第2のハードウェアスレッドによる実行に基づいて特定され、
    後続の割り込みを前記第2のハードウェアスレッドにマッピングするステップをさらに有する方法。
  2. 前記割り込みは、少なくとも1つのタスクが実行される準備ができていることを示す請求項1に記載の方法。
  3. 前記第1の時間において、アイドルタスクが前記第1のハードウェアスレッドに割り当てられる請求項1に記載の方法。
  4. 前記割り込みルーチンを実行することが、前記実行可能タスクリストからの前記最高優先度タスクの第1の優先度、実行中タスクリストからの最低優先度タスクの第2の優先度と比較することを含み、前記実行中タスクリストが、前記マルチスレッドプロセッサの前記複数のハードウェアスレッドに割り当てられた1つ以上のタスクを記憶するように構成され、前記割り込みルーチンを実行することが、前記第1の優先度が前記第2の優先度より高い場合に前記最高優先度タスクと前記最低優先度タスクスワップすることをさらに含む請求項1に記載の方法。
  5. 前記第1の優先度が前記第2の優先度より高い場合に前記最高優先度タスクと前記最低優先度タスクをスワップした後、前記第1のハードウェアスレッドにおいて前記実行可能タスクリストからの前記最高優先度タスクを実行することと、以前に前記第1のハードウェアスレッドに割り当てられた前記最低優先度タスクを前記実行可能タスクリストに加えることとをさらに含む請求項4に記載の方法。
  6. 前記複数のハードウェアスレッドに割り当てられた前記複数のタスクのうちの前記後続の最低優先度実行中タスクを判断するステップと、
    前記割り込みルーチンを使用して前記後続の割り込みを前記第2のハードウェアスレッドにマッピングするステップと、をさらに有し、
    前記第2のハードウェアスレッドは前記複数のハードウェアスレッドに割り当てられた前記複数のタスクのうちの前記後続の最低優先度実行中タスクを実行している請求項5に記載の方法。
  7. スケジュールを確認していずれかの実行可能タスクが前記複数のハードウェアスレッドに割り当てられた前記複数のタスクのうちの前記後続の最低優先度実行中タスクより高い優先度を有するかどうかを判断した結果に基づいて、前記後続の割り込みを選択的に設定するステップをさらに有する請求項6に記載の方法。
  8. 前記第1のハードウェアスレッドが前記割り込みを受信できるようにするために、前記マルチスレッドプロセッサの割り込みコントローラ、前記複数のハードウェアスレッドのうちの前記第1のハードウェアスレッド以外のハードウェアスレッドが前記割り込みを受信することからマスクされるように指示するステップをさらに有する請求項1に記載の方法。
  9. タスクを前記タスクの実行を可能にするようにハードウェアスレッドに割り当てるように構成されたマルチスレッドプロセッサのハードウェアスレッドのセットのうちの第1のハードウェアスレッドにおいて割り込みを受信するステップを有し、前記ハードウェアスレッドのセットの各ハードウェアスレッドは、実行中タスクのセットのそれぞれのタスクを実行し、前記実行中タスクのセットの各タスクおよび実行可能タスクのセットの各タスクは、それぞれの優先度を有し、
    前記第1のハードウェアスレッドにおける前記割り込みの受信の後で、前記実行中タスクのセットの各タスクが前記実行可能タスクのセットの全てのタスクの優先度より大きいかまたはそれに等しい優先度を有するまで、前記実行中タスクのセットのうちの最低優先度タスクを前記実行可能タスクのセットのうちの最高優先度タスクと反復的にスワップするステップをさらに有する方法。
  10. 前記反復的スワップの各反復は、前記実行中タスクのセットのうちの前記最低優先度タスクを前記実行可能タスクのセットのうちの前記最高優先度タスクとスワップした後、
    前記実行中タスクのセットのうちの後続の最低優先度タスクを判断するステップと、
    前記実行中タスクのセットのうちの前記後続の最低優先度タスクの後続の最低優先度が、前記実行可能タスクのセットのうちの後続の最高優先度タスクの後続の最高優先度より小さいとき、後続の割り込みを、前記実行中タスクのセットのうちの前記後続の最低優先度タスクを実行する特定のハードウェアスレッドに出力して、前記反復的スワップの次の反復を実行するステップとを含む請求項9に記載の方法。
  11. タスクを前記タスクの実行を可能にするように複数のハードウェアスレッドのうちのハードウェアスレッドに割り当てるように構成され、前記複数のハードウェアスレッドが最高優先度タスクを実行しているように前記複数のハードウェアスレッドを実行するように構成され、そして、前記複数のハードウェアスレッドに割り当てられた複数のタスクのうちの最低優先度タスクを、前記複数のハードウェアスレッドのうちの前記最低優先度タスクを実行する特定のハードウェアスレッドが割り込みを受信した後、前記複数のハードウェアスレッドに割り当てられたすべてのタスクがすべての実行可能タスクの最高優先度と少なくとも同じ高さの優先度を有するように、最高優先度実行可能タスクとスワップすることによって、1つ以上のタスクをスケジュールするように構成されたマルチスレッドプロセッサを備えるシステム。
  12. 前記マルチスレッドプロセッサは、前記複数のハードウェアスレッドのうちの前記最低優先度タスクを実行する特定のハードウェアスレッドが、前記割り込みを受信した後に、割り込みルーチンを起動して実行可能タスクリストから最高優先度タスクを選択するように構成された請求項11に記載のシステム。
  13. 前記マルチスレッドプロセッサは、タスクをそれぞれスワップして、実行可能タスクリストの最高優先度タスクを前記複数のハードウェアスレッドのうちの特定のハードウェアスレッドに割り当て、前記最低優先度タスクを前記実行可能タスクリストに加えた後、スケジュールが確認されて、前記実行可能タスクリストのうちのいずれかの実行可能タスクが前記複数のハードウェアスレッドに割り当てられたいずれかのタスクより高い優先度を有するかどうかを判断するように構成された請求項11に記載のシステム。
  14. 第1のデータ構造が、前記複数のハードウェアスレッドに割り当てられたタスクの優先順位付けされた実行中タスクリストを含み、第2のデータ構造が、前記複数のハードウェアスレッドに割り当てられる準備ができているタスクの優先順位付けされた実行可能タスクリストを含む請求項11に記載のシステム。
  15. 割り込みを、前記複数のハードウェアスレッドのうちの前記第1のデータ構造の前記優先順位付けされた実行中タスクリストからの最低優先度タスクを実行している特定のハードウェアスレッドにマッピングするように構成された割り込みコントローラをさらに備える請求項14に記載のシステム。
  16. 割り込みマスクは、割り込みを前記複数のハードウェアスレッドのうちの特定のハードウェアスレッドにマッピングするように構成され、前記複数のハードウェアスレッドのうちの前記特定のハードウェアスレッドは、前記第1のデータ構造の前記優先順位付けされた実行中タスクリストからの最低優先度タスクを実行している請求項14に記載のシステム。
  17. 前記最高優先度タスクを前記第2のデータ構造の前記優先順位付けされた実行可能タスクリストから前記第1のデータ構造の前記優先順位付けされた実行中タスクリストに移動して、前記最高優先度タスクを前記特定のハードウェアスレッドに割り当て、スケジュールを確認して前記第2のデータ構造中のいずれかの実行可能タスクが前記第1のデータ構造中の最低優先度実行中タスクより高い優先度を有するかどうかを判断するように構成されたスケジューラをさらに備える請求項15に記載のシステム。
  18. 前記複数のハードウェアスレッドのうちの前記特定のハードウェアスレッドは、アイドルタスクと関連付けられたアイドルハードウェアスレッドである請求項17に記載のシステム。
  19. マルチスレッドプロセッサを備えるコンピュータに、
    タスクを前記タスクの実行を可能にするように前記マルチスレッドプロセッサの複数のハードウェアスレッドのうちのハードウェアスレッドに割り当てるように構成された前記複数のハードウェアスレッドのうちの、最低優先度タスクを実行している特定のハードウェアスレッドを判定させると共に、
    割り込みを前記複数のハードウェアスレッドのうちの前記特定のハードウェアスレッドにマッピングさせるように実行可能であるコンピュータ実行可能命令を含むコンピュータ読み取り可能な媒体であって、
    前記割り込みは、少なくとも1つのタスクが実行される準備ができていることを示し、前記複数のハードウェアスレッドのうちの前記特定のハードウェアスレッドは、前記割り込みを受信し、前記割り込みに基づいて割り込みルーチンを開始して実行可能タスクリストから最高優先度タスクを選択するコンピュータ読み取り可能な媒体。
  20. 前記コンピュータ実行可能命令は、前記コンピュータに、
    タスクをスワップさせて、前記実行可能タスクリストからの前記最高優先度タスクを前記複数のハードウェアスレッドのうちの前記特定のハードウェアスレッドに割り当てさせ、前記最低優先度タスクを前記実行可能タスクリストに加えさせた後、スケジュールを確認させていずれかの実行可能タスクがいずれかの実行中タスクより高い優先度を有するかどうかを判断させるようにさらに実行可能であり、前記スケジュールを確認させていずれかの実行可能タスクがいずれかの実行中タスクより高い優先度を有するかどうかを判断させることは、新しい最低優先度実行中タスクを新しい最高優先度実行可能タスクと比較させることを含み、
    前記コンピュータ実行可能命令は、前記コンピュータに、割り込みルーチンを使用させて、後続の割り込みを、前記複数のハードウェアスレッドのうちの前記新しい最低優先度実行中タスクを実行している新しい特定のハードウェアスレッドにマッピングさせ、
    前記スケジュールを確認させていずれかの実行可能タスクが前記新しい最低優先度実行中タスクより高い優先度を有するかどうかを判断させた結果に基づいて、前記後続の割り込みを選択的に出力させるようにさらに実行可能である請求項19に記載のコンピュータ読み取り可能な媒体。
  21. タスクを前記タスクの実行を可能にするようにハードウェアスレッドのセットのうちのハードウェアスレッドに割り当てるように構成されたマルチスレッドプロセッサの前記ハードウェアスレッドのセットのうちの第1のハードウェアスレッドにおいて割り込みを受信するための手段を備え、前記ハードウェアスレッドのセットの各ハードウェアスレッドは、実行中タスクのセットのそれぞれのタスクを実行し、前記実行中タスクのセットの各実行中タスクおよび実行可能タスクのセットの各実行可能タスクは、それぞれの優先度を有し、
    前記割り込みに基づいて、前記実行中タスクのセットの各実行中タスクが前記実行可能タスクのセットの全ての実行可能タスクの優先度より大きいかまたはそれに等しい優先度を有するまで、前記実行中タスクのセットのうちの最低優先度タスクを前記実行可能タスクのセットのうちの最高優先度タスクと反復的にスワップするための手段をさらに備える装置。
  22. 前記マルチスレッドプロセッサは処理システムに含まれ、前記処理システムは複数の命令実行ユニットを備える請求項1に記載の方法。
  23. 前記マルチスレッドプロセッサは、最高第2の数までのタスクを処理するように、インターリーブされた方法で同時に実行可能である第1の数のハードウェアスレッドを備え、前記第1の数のハードウェアスレッドのうちの各ハードウェアスレッドは、実行のために単一の対応するタスクに割り当てられると共に、前記第1の数と前記第2の数は同じである請求項1に記載の方法。
JP2011554278A 2009-03-17 2010-03-16 リアルタイムマルチスレッドスケジューラおよびスケジューリング方法 Expired - Fee Related JP5538442B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/405,271 2009-03-17
US12/405,271 US9207943B2 (en) 2009-03-17 2009-03-17 Real time multithreaded scheduler and scheduling method
PCT/US2010/027453 WO2010107774A2 (en) 2009-03-17 2010-03-16 Real-time multithreaded scheduler and scheduling method

Publications (2)

Publication Number Publication Date
JP2012520531A JP2012520531A (ja) 2012-09-06
JP5538442B2 true JP5538442B2 (ja) 2014-07-02

Family

ID=42738766

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011554278A Expired - Fee Related JP5538442B2 (ja) 2009-03-17 2010-03-16 リアルタイムマルチスレッドスケジューラおよびスケジューリング方法

Country Status (7)

Country Link
US (1) US9207943B2 (ja)
EP (1) EP2409220A4 (ja)
JP (1) JP5538442B2 (ja)
KR (1) KR101350851B1 (ja)
CN (1) CN102341780B (ja)
TW (1) TW201135597A (ja)
WO (1) WO2010107774A2 (ja)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI410870B (zh) * 2010-03-26 2013-10-01 Novatek Microelectronics Corp 電腦系統架構
US20120192147A1 (en) * 2011-01-25 2012-07-26 Argen Wong Develop real time software without an RTOS
JP5303593B2 (ja) * 2011-03-16 2013-10-02 株式会社コア パケット送信制御装置及びパケット送信制御方法
US9105009B2 (en) 2011-03-21 2015-08-11 Microsoft Technology Licensing, Llc Email-based automated recovery action in a hosted environment
US20120260080A1 (en) * 2011-04-08 2012-10-11 Nokia Corporation Method and Apparatus for Preprocessing Operations During a Boot Process
JP5765423B2 (ja) * 2011-07-27 2015-08-19 富士通株式会社 マルチコアプロセッサシステム、およびスケジューリング方法
US20130074088A1 (en) * 2011-09-19 2013-03-21 Timothy John Purcell Scheduling and management of compute tasks with different execution priority levels
US8839257B2 (en) * 2011-11-22 2014-09-16 Microsoft Corporation Superseding of recovery actions based on aggregation of requests for automated sequencing and cancellation
US9460303B2 (en) 2012-03-06 2016-10-04 Microsoft Technology Licensing, Llc Operating large scale systems and cloud services with zero-standing elevated permissions
US9026705B2 (en) * 2012-08-09 2015-05-05 Oracle International Corporation Interrupt processing unit for preventing interrupt loss
JP6017260B2 (ja) * 2012-10-17 2016-10-26 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ
US8881249B2 (en) 2012-12-12 2014-11-04 Microsoft Corporation Scalable and automated secret management
WO2014138472A2 (en) * 2013-03-06 2014-09-12 Robotex Inc. System and method for collecting and processing data and for utilizing robotic and/or human resources
US9135062B2 (en) 2013-04-09 2015-09-15 National Instruments Corporation Hardware assisted method and system for scheduling time critical tasks
US10037511B2 (en) * 2013-06-04 2018-07-31 International Business Machines Corporation Dynamically altering selection of already-utilized resources
NL2014169B1 (en) 2015-01-21 2017-01-05 Huisman Well Tech Apparatus and method for drilling a directional borehole in the ground.
US9762585B2 (en) 2015-03-19 2017-09-12 Microsoft Technology Licensing, Llc Tenant lockbox
US9921891B1 (en) * 2015-03-31 2018-03-20 Integrated Device Technology, Inc. Low latency interconnect integrated event handling
US10931682B2 (en) 2015-06-30 2021-02-23 Microsoft Technology Licensing, Llc Privileged identity management
US10445100B2 (en) 2016-06-09 2019-10-15 International Business Machines Corporation Broadcasting messages between execution slices for issued instructions indicating when execution results are ready
CN106375435A (zh) * 2016-08-31 2017-02-01 福建天晴数码有限公司 Web线程超时监控的方法及其系统
CN106445070B (zh) * 2016-09-12 2019-04-02 华侨大学 一种硬实时系统资源受限偶发任务能耗优化调度方法
CN109144682A (zh) 2017-06-27 2019-01-04 阿里巴巴集团控股有限公司 任务的优先级处理方法和处理装置
CN107577523B (zh) * 2017-07-31 2021-01-05 创新先进技术有限公司 一种任务执行的方法及装置
TWI639955B (zh) * 2017-11-06 2018-11-01 晨星半導體股份有限公司 多處理器系統及其處理器管理方法
CN109871275A (zh) * 2017-12-01 2019-06-11 晨星半导体股份有限公司 多处理器系统及其处理器管理方法
US20190196867A1 (en) * 2017-12-21 2019-06-27 Qualcomm Incorporated System and method of priority-based interrupt steering
CN108235133B (zh) * 2018-01-15 2021-03-02 北京陌上花科技有限公司 视频识别方法及装置
CN108509260B (zh) * 2018-01-31 2021-08-13 深圳市万普拉斯科技有限公司 线程识别处理方法、装置、计算机设备和存储介质
CN108762905B (zh) * 2018-05-24 2020-12-11 苏州乐麟无线信息科技有限公司 一种多任务事件的处理方法和装置
US10691490B2 (en) * 2018-07-06 2020-06-23 Apple Inc. System for scheduling threads for execution
KR102641520B1 (ko) 2018-11-09 2024-02-28 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법
JP7197794B2 (ja) * 2019-03-28 2022-12-28 富士通株式会社 情報処理装置および実行制御プログラム
US11544065B2 (en) 2019-09-27 2023-01-03 Advanced Micro Devices, Inc. Bit width reconfiguration using a shadow-latch configured register file
CN110737522B (zh) * 2019-10-16 2023-03-03 福州物联网开放实验室有限公司 一种嵌入式操作系统的待机任务调度方法
US20210132985A1 (en) * 2019-10-30 2021-05-06 Advanced Micro Devices, Inc. Shadow latches in a shadow-latch configured register file for thread storage
CN111367652A (zh) * 2020-01-07 2020-07-03 苏州大学 一种嵌入式实时操作系统的任务调度处理系统和方法
US11599359B2 (en) 2020-05-18 2023-03-07 Advanced Micro Devices, Inc. Methods and systems for utilizing a master-shadow physical register file based on verified activation
JP7380415B2 (ja) * 2020-05-18 2023-11-15 トヨタ自動車株式会社 エージェント制御装置
JP7380416B2 (ja) 2020-05-18 2023-11-15 トヨタ自動車株式会社 エージェント制御装置
CN112905317B (zh) * 2021-02-04 2023-12-15 西安电子科技大学 快速可重构信号处理异构平台下任务调度方法和系统
CN113377517B (zh) * 2021-06-28 2023-02-28 上海鲲宜软件技术有限公司 基于实时操作系统的线程调度方法及系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5168566A (en) 1983-11-25 1992-12-01 Sharp Kabushiki Kaisha Multi-task control device for central processor task execution control provided as a peripheral device and capable of prioritizing and timesharing the tasks
JP3524961B2 (ja) 1994-07-21 2004-05-10 株式会社東芝 マルチプロセッサシステムおよび同システムにおけるタスクスケジューリング方法
US6076157A (en) 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US7257814B1 (en) * 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US6754690B2 (en) 1999-09-16 2004-06-22 Honeywell, Inc. Method for time partitioned application scheduling in a computer operating system
US6931641B1 (en) 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
EP1299801B1 (en) 2000-06-12 2010-12-29 MIPS Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US7080379B2 (en) 2002-06-20 2006-07-18 International Business Machines Corporation Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue
US7650601B2 (en) * 2003-12-04 2010-01-19 International Business Machines Corporation Operating system kernel-assisted, self-balanced, access-protected library framework in a run-to-completion multi-processor environment
US7360064B1 (en) * 2003-12-10 2008-04-15 Cisco Technology, Inc. Thread interleaving in a multithreaded embedded processor
US7614053B2 (en) 2004-02-20 2009-11-03 Sony Computer Entertainment Inc. Methods and apparatus for task management in a multi-processor system
US7757238B2 (en) * 2004-06-29 2010-07-13 Intel Corporation Task switching with a task containing code region to adjust priority
US8756605B2 (en) 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US8255912B2 (en) 2005-04-13 2012-08-28 Qualcomm Incorporated Techniques for setting events in a multi-threaded system
US7913255B2 (en) 2005-10-20 2011-03-22 Qualcomm Incorporated Background thread processing in a multithread digital signal processor
US8621475B2 (en) * 2007-12-06 2013-12-31 International Business Machines Corporation Responsive task scheduling in cooperative multi-tasking environments

Also Published As

Publication number Publication date
CN102341780B (zh) 2015-11-25
US9207943B2 (en) 2015-12-08
US20100242041A1 (en) 2010-09-23
EP2409220A2 (en) 2012-01-25
WO2010107774A2 (en) 2010-09-23
CN102341780A (zh) 2012-02-01
TW201135597A (en) 2011-10-16
JP2012520531A (ja) 2012-09-06
EP2409220A4 (en) 2012-02-01
WO2010107774A3 (en) 2011-01-13
KR20110127757A (ko) 2011-11-25
KR101350851B1 (ko) 2014-01-13

Similar Documents

Publication Publication Date Title
JP5538442B2 (ja) リアルタイムマルチスレッドスケジューラおよびスケジューリング方法
JP5329563B2 (ja) マルチスレッド・プロセッサのための共有割込みコントローラ
JP2017204307A (ja) ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法
JP4148223B2 (ja) プロセッサおよび情報処理方法
US8140823B2 (en) Multithreaded processor with lock indicator
US8479207B2 (en) Priority inheritance in multithreaded systems
US9606818B2 (en) Systems and methods of executing multiple hypervisors using multiple sets of processors
JP2006243865A (ja) プロセッサおよび情報処理方法
CN112416546A (zh) 多任务调度方法、电子装置和计算机存储介质
US20100050184A1 (en) Multitasking processor and task switching method thereof
JP5254342B2 (ja) n−ウェイキャッシュを用いるシステムおよび方法
US9715392B2 (en) Multiple clustered very long instruction word processing core
JP2006243864A (ja) プロセッサおよび情報処理方法
KR100978147B1 (ko) 중앙형 인터럽트 콘트롤러를 위한 장치, 방법 및 시스템
US20150363227A1 (en) Data processing unit and method for operating a data processing unit
US11347544B1 (en) Scheduling work items based on declarative constraints

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130318

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130402

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130701

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131105

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140305

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140312

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: 20140331

R150 Certificate of patent or registration of utility model

Ref document number: 5538442

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140428

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees