JP2013522724A - プロセッサにおいてスレッドを実行するシステムおよび方法 - Google Patents

プロセッサにおいてスレッドを実行するシステムおよび方法 Download PDF

Info

Publication number
JP2013522724A
JP2013522724A JP2012557074A JP2012557074A JP2013522724A JP 2013522724 A JP2013522724 A JP 2013522724A JP 2012557074 A JP2012557074 A JP 2012557074A JP 2012557074 A JP2012557074 A JP 2012557074A JP 2013522724 A JP2013522724 A JP 2013522724A
Authority
JP
Japan
Prior art keywords
thread
value
priority value
quantization
quantum
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012557074A
Other languages
English (en)
Other versions
JP5593404B2 (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 JP2013522724A publication Critical patent/JP2013522724A/ja
Application granted granted Critical
Publication of JP5593404B2 publication Critical patent/JP5593404B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • 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

Abstract

複数のスレッドを実行するための方法およびシステムが、説明される。方法は、ある休止中のスレッドの実行の準備ができた場合に、その休止中のスレッドと関連付けられたスレッド規定優先度値を、その休止中のスレッドと関連付けられたスレッド量子化優先度値にマッピングするステップを含み得る。方法はさらに、休止中のスレッドを、実行の準備ができているキューに追加するステップと、スレッド量子化優先度値を更新するステップとを含み得る。休止中のスレッドと関連付けられたスレッド量子値も更新することができ、または、量子値と量子化優先度値の組合せを、両方更新してもよい。

Description

関連特許出願の相互参照および優先権の主張
本出願は、2010年3月15日に出願された米国特許仮出願第61/314085号への、米国特許法第119条(e)による優先権を主張する。この特許仮出願の内容全体が、参照により本明細書に組み込まれる。
ポータブルコンピューティングデバイス(PD)は至る所にある。これらのデバイスは、セルラー電話、携帯情報端末(PDA)、ポータブルゲームコンソール、パームトップコンピュータ、および他のポータブル電子デバイスを含み得る。これらのデバイスの多くは主要機能に加えて、周辺機能を含む。たとえば、セルラー電話はセルラー電話で電話をかけるという主要機能、およびスチールカメラ、ビデオカメラ、全地球測位システム(GPS)のナビゲーション、ウェブブラウジング、電子メールの送受信、テキストメッセージの送受信、プッシュツートーク能力などの周辺機能を含み得る。そのようなデバイスの機能の増大に伴い、動作スレッドの数が増えている。さらに、動作スレッドの数の増大に伴い、スレッドの実行を効果的に管理できるようにすることが、さらに難しくなっている。
したがって、必要とされるのは、1つまたは複数のプロセッサ上で、複数のスレッドを実行する改善されたシステムおよび方法である。
複数のスレッドを実行するための方法およびシステムは、ある休止中のスレッドの実行の準備ができた場合に、その休止中のスレッドと関連付けられたスレッド規定優先度値を、その休止中のスレッドと関連付けられたスレッド量子化優先度値にマッピングすることを含む。このマッピングは、休止中のスレッドに、バケット優先度値を割り当てることを含む。そして、休止中のスレッドが、実行する準備ができているキューに追加される。次いで、休止中のスレッドと関連付けられた、スレッド量子化優先度値、スレッド量子値、またはこれらの組合せが更新され得る。この更新は、マップを用いて静的に更新することと、スレッドに割り当てられたバケット優先度値に基づいて動的に更新することのうちの、1つを含み得る。
図中、別段に規定されていない限り、類似の参照番号は、様々な図の全体を通じて、類似の部分を指す。
閉位置におけるポータブルコンピューティングデバイス(PCD)の第1の態様の正面図である。 開位置のPCDの第1の態様の正面図である。 PCDの第2の態様のブロック図である。 処理システムのブロック図である。 優先順位付けシステムのブロック図である。 複数のスレッドを優先順位付ける方法を示すフローチャートである。 複数のスレッドを実行する方法の第1の態様を示すフローチャートである。 スレッド優先度量子化、スレッド量子値、またはこれらの組合せを、静的に更新する方法を示すフローチャートである。 スレッド優先度量子化、スレッド量子値、またはこれらの組合せを、動的に更新する方法の第1の部分を示すフローチャートである。 スレッド優先度量子化、スレッド量子値、またはこれらの組合せを、動的に更新する方法の第2の部分を示すフローチャートである。
「例示的な」という言葉は、「一例、実例または例示となること」を意味するように本明細書で使用される。「例示的な」ものとして本明細書で説明する態様は、必ずしも他の態様よりも好ましい、または有利であると解釈されるわけではない。
本明細書では、「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイルおよびパッチなど、実行可能コンテンツを有するファイルを含むこともある。加えて、本明細書で言及する「アプリケーション」は、開かれる必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなど、本質的に実行可能ではないファイルを含むこともある。
「コンテンツ」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、パッチなど、実行可能コンテンツを有するファイルを含むこともある。加えて、本明細書で言及する「コンテンツ」は、オープンされる必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなど、本質的に実行可能ではないファイルを含むこともある。
本明細書で使用される場合、「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、実行中のソフトウェアを問わず、コンピュータ関連のエンティティを指すことが意図されている。たとえば構成要素は、プロセッサ上で作動しているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラムおよび/またはコンピュータであってよいが、これらであることに限定されない。例を挙げると、コンピューティングデバイス上で作動しているアプリケーションとコンピューティングデバイスの両方が構成要素であり得る。1つまたは複数の構成要素は、プロセスおよび/または実行スレッドの中に存在してよく、1つの構成要素を1つのコンピュータに局在化すること、および/または2つ以上のコンピュータに分散することが可能である。加えて、これらの構成要素は、様々なデータ構造を記憶している様々なコンピュータ可読媒体から実行することができる。構成要素は、1つまたは複数のデータパケット(たとえば、信号によりローカルシステム、分散システムにおいて、かつ/または他のシステムとインターネットなどのネットワークにわたって、別の構成要素と対話する1つの構成要素からのデータ)を有する信号に従うなどしてローカルプロセスおよび/またはリモートプロセスの方法により通信することができる。
最初に図1および図2を参照すると、例示的なポータブルコンピューティングデバイス(PCD)が示されており、全体的に100と表される。図示のように、PCD100は、ハウジング102を含み得る。ハウジング102は、上側ハウジング部104および下側ハウジング部106を含み得る。図1は、上側ハウジング部104がディスプレイ108を含み得ることを示す。特定の態様において、ディスプレイ108は、タッチスクリーンディスプレイでもよい。上側ハウジング部104は、トラックボール入力デバイス110を含むこともできる。さらに、図1に示されるように、上側ハウジング部104は、電源投入ボタン112および電源切断ボタン114を含み得る。図1に示されるように、PCD100の上側ハウジング部104は、複数のインジケータライト116およびスピーカー118を含み得る。各インジケータライト116は、発光ダイオード(LED)でもよい。
特定の態様では、図2に示すように、上位ハウジング部分104は下位ハウジング部分106に対して摺動可能である。具体的には、上位ハウジング部分104は下位ハウジング部分106に対してスライド可能であってよい。図2に示すように、下位ハウジング部分106はマルチボタン型キーボード120を含むことができる。特定の態様では、マルチボタン型キーボード120は標準型QWERTYキーボードであり得る。マルチボタン型キーボード120は、上位ハウジング部分104が下位ハウジング部分106に対して移動したときに現れ得る。図2は、PCD100が下位ハウジング部分106上にリセットボタン122を含み得ることをさらに示している。
図3を参照すると、ポータブルコンピューティングデバイス(PCD)の例示的な非限定的態様が示されており、全体的に320と表される。図示のように、PCD100はマルチコアCPU324を含むオンチップシステム322を含む。マルチコアCPU324は、第0のコア325、第1のコア326および第Nのコア327を含み得る。
図3に示すように、ディスプレイコントローラ328およびタッチスクリーンコントローラ330がマルチコアCPU324に結合される。次に、オンチップシステム322の外部にあるタッチスクリーンディスプレイ332が、ディスプレイコントローラ328およびタッチスクリーンコントローラ330に結合される。
図3は、ビデオエンコーダ334、たとえば位相反転線(PAL)エンコーダ、順次式カラーメモリ(SECAM:sequential couleur a memoire)エンコーダまたは全米テレビジョン方式委員会(NTSC)エンコーダがマルチコアCPU324に結合されることをさらに示している。さらに、ビデオ増幅器336がビデオエンコーダ334およびタッチスクリーンディスプレイ332に結合される。また、ビデオポート338がビデオ増幅器336に結合される。図3に示すように、ユニバーサルシリアルバス(USB)コントローラ340がマルチコアCPU324に結合される。また、USBポート342がUSBコントローラ340に結合される。メモリ344および加入者識別モジュール(SIM)カード346も、マルチコアCPU324に結合され得る。さらに、図3に示すように、デジタルカメラ348がマルチコアCPU324に結合され得る。例示的な態様では、デジタルカメラ348は、電荷結合デバイス(CCD)カメラまたは相補型金属酸化物半導体(CMOS)カメラである。
図3にさらに示すように、ステレオオーディオコーデック350がマルチコアCPU324に結合され得る。さらに、オーディオ増幅器352がステレオオーディオコーデック350に結合され得る。例示的な態様では、第1のステレオスピーカー354および第2のステレオスピーカー356がオーディオ増幅器352に結合される。図3は、マイクロフォン増幅器358もステレオオーディオコーデック350に結合され得ることを示している。加えて、マイクロフォン360がマイクロフォン増幅器358に結合され得る。特定の態様では、周波数変調(FM)ラジオチューナー362がステレオオーディオコーデック350に結合され得る。また、FMアンテナ364がFMラジオチューナー362に結合される。さらに、ステレオヘッドフォン366がステレオオーディオコーデック350に結合され得る。
図3は、高周波(RF)トランシーバ368がマルチコアCPU324に結合され得ることをさらに示している。RFスイッチ370がRFトランシーバ368およびRFアンテナ372に結合され得る。図3に示すように、キーパッド374がマルチコアCPU324に結合され得る。また、マイクロフォンを備えたモノヘッドセット376がマルチコアCPU324に結合され得る。さらに、バイブレータデバイス378がマルチコアCPU324に結合され得る。図3は、電源380がオンチップシステム322に結合され得ることも示している。特定の態様では、電源380は電力を必要とするPCD100の様々な構成要素に電力を供給する直流(DC)電源である。さらに、特定の態様において、電源は、AC電源に接続された交流(AC)-DC変成器から導かれた充電式DCバッテリまたはDC電源である。
図3は、PCD100がデータネットワーク、たとえばローカルエリアネットワーク、パーソナルエリアネットワーク、その他のネットワークにアクセスするために使用できるネットワークカード388も含み得ることをさらに示している。ネットワークカード388は、Bluetooth(登録商標)ネットワークカード、WiFiネットワークカード、パーソナルエリアネットワーク(PAN)カード、パーソナルエリアネットワーク超低電力技術(PeANUT)ネットワークカード、または当技術分野で知られている任意の他のネットワークカードとすることができる。さらに、ネットワークカード388は、チップに組み込むことができ、すなわち、ネットワークカード388は、チップでのフルソリューションとすることができ、個別のネットワークカード388でなくてもよい。
図3に示すように、タッチスクリーンディスプレイ332、ビデオポート338、USBポート342、カメラ348、第1のステレオスピーカー354、第2のステレオスピーカー356、マイクロフォン360、FMアンテナ364、ステレオヘッドフォン366、RFスイッチ370、RFアンテナ372、キーパッド374、モノヘッドセット376、バイブレータ378および電源380は、オンチップシステム322の外部にある。
特定の態様において、本明細書で説明する方法のステップのうちの1つまたは複数は、コンピュータプログラム命令としてメモリ344に記憶され得る。これらの命令は、本明細書で説明する方法を実行するために、マルチコアCPU324によって実行され得る。さらに、マルチコアCPU324、メモリ344、またはこれらの任意の組合せは、複数のタスクまたはスレッドを実行するための、本明細書で説明される方法のステップの1つまたは複数を実行するための手段として、機能し得る。マルチコアCPU324、メモリ344、またはこれらの任意の組合せは、スレッド優先度量子化、スレッド量子値、またはこれらの組合せを静的に更新するための、本明細書で説明される方法のステップの1つまたは複数を実行するための手段として、機能し得る。加えて、マルチコアCPU324、メモリ344、またはこれらの任意の組合せは、スレッド優先度量子化、スレッド量子値、またはこれらの組合せを動的に更新するための、本明細書で説明される方法のステップの1つまたは複数を実行するための手段として、機能し得る。また、マルチコアCPU324、メモリ344、またはこれらの任意の組合せは、複数のスレッドの各々に優先度を割り当てるための手段として、機能し得る。
図4を参照すると、処理システムが示され、全体的に400と表される。特定の態様では、処理システム400は、図3に関して上述したPCD100に組み込まれ得る。図示のように、処理システム400はマルチコア中央処理装置(CPU)324、およびマルチコアCPU324に接続されたメモリ344を含み得る。マルチコアCPU324は、第0のコア325、第1のコア326および第Nのコア327を含み得る。第0のコア325は、その上で実行される第0の動的クロックおよび電圧スケーリング(dynamic clock and voltage scaling:DCVS)アルゴリズム416を含み得る。第1のコア326は、その上で実行される第1のDCVSアルゴリズム417を含み得る。さらに、第Nのコア327は、その上で実行される第NのDCVSアルゴリズム418を含み得る。特定の態様では、各DCVSアルゴリズム416、417、418は、それぞれのコア326、327、416上で独立して実行されることができる。
さらに、図示のように、メモリ344は、オペレーティングシステム420を記憶し得る。オペレーティングシステム420はスケジューラ422を含むことができ、スケジューラ422は第1の実行キュー424、第2の実行キュー426、第Nの実行キュー428を含み得る。メモリ344は、第1のアプリケーション430、第2のアプリケーション432および第Nのアプリケーション434も記憶し得る。
特定の態様において、アプリケーション430、432、434は、マルチコアCPU324内のコア325、326、327で処理される1つまたは複数のタスク436をオペレーティングシステム420に送ることができる。タスク436は、単一のタスク、スレッド、またはこれらの組合せとして処理または実行され得る。さらに、スケジューラ422は、マルチコアCPU324内で実行するタスク、スレッド、またはそれらの組合せをスケジューリングすることができる。加えて、スケジューラ422は、実行キュー424、426、428にタスク、スレッド、またはこれらの組合せを配置することができる。コア325、326、327は、タスク、スレッド、またはそれらの組合せを、たとえばオペレーティングシステム420によってコア325、326、327でそれらのタスクおよびスレッドを処理または実行するよう命令された場合、実行キュー424、426、428から取り出すことができる。
特定の態様では、スケジューラ422、メモリ344、コア325、326、327、またはこれらの任意の組合せは、複数のタスク/スレッド436を実行するための、本明細書で説明された方法のステップの1つまたは複数を実行するための手段として、機能し得る。スケジューラ422、メモリ344、コア325、326、327、またはこれらの任意の組合せは、スレッド優先度量子化、スレッド量子値、またはこれらの組合せを静的に更新するための、本明細書で説明される方法のステップの1つまたは複数を実行するための手段としても、機能し得る。さらに、スケジューラ422、メモリ344、コア325、326、327、またはこれらの任意の組合せは、スレッド優先度量子化、スレッド量子値、またはこれらの組合せを動的に更新するための、本明細書で説明される方法のステップの1つまたは複数を実行するための手段として、機能し得る。さらに、スケジューラ422、メモリ344、コア325、326、327、またはこれらの任意の組合せは、複数のスレッドの各々に優先度を割り当てるための手段として、機能し得る。
特定の態様では、スレッド優先度は、様々なスレッド436およびそれらの依存関係を分析し、各スレッド436の処理と関連する重要度に基づいて優先度値を割り当てることによって、調整され、または場合によっては操作され得る。並列のスレッドの数が増え、優先度の数が増えるにつれて、それぞれの優先度に基づいてスレッド436を調整することはより複雑になる。本明細書で説明されるように、各スレッドは、規定優先度値、量子化優先度値、および量子値を有し得る。
規定優先度値は、たとえば、図5で示され以下で詳細に説明されるバケット504、506、および508に対応する、高い値、中程度の値、または低い値のような、相対的な値として表され得る。量子値は、時間の値、たとえばミリ秒として表され得る。たとえば、ある特定のスレッドは、1ミリ秒(ms)、5ミリ秒(ms)、10ミリ秒(ms)などの量子値を有し得る。
各スレッドの規定優先度値、量子化優先度値、および量子値に基づいて、スレッド436は、相対的により重要ではないスレッド436を妨げることなくより重要なスレッド436を処理できるように、処理され得る。さらに、複数のスレッドが実質的に同時に実行されており、実質的に同じ重要度、すなわち優先度を有する場合には、各々のスレッドが、いずれかのスレッドを妨げることなく処理に進めるように、スレッドは、たとえば量子値を用いることで、互いにハンドシェークすることができる。
図5は、優先順位付けシステムを示し、全体的に500と表される。示されるように、量子化優先順位付けシステム500は、スケジューラ422を含み得る。スケジューラ422は、第1のスレッドバケット504へのアクセスを有し得る。さらに、スケジューラ422は、第2のスレッドバケット506へのアクセスを有し得る。示されるように、スケジューラ422は、第Nのスレッドバケット508へのアクセスも有し得る。特定の態様では、示されるように、スケジューラ422は、高い優先度、中程度の優先度、および低い優先度という3つの優先度値に対応する、3つのスレッドバケット504、506、508へのアクセスを有し得る。しかし、スケジューラ422は、他の中間の優先度値(図示せず)に対応する、4つのスレッドバケット、5つのスレッドバケット、6つのスレッドバケットなどへのアクセスを有してもよいことが、理解され得る。
特定の態様では、各スレッドバケット504は、バケット優先度値510、512、514を割り当てられ得る。具体的には、第1のスレッドバケット504は、第1のバケット優先度値510を割り当てられ得る。第2のスレッドバケット506は、第2のバケット優先度値512を割り当てられ得る。また、第Nのスレッドバケット508は、第Nのバケット優先度値514を割り当てられ得る。
一態様では、バケット優先度値510、512、514は互いに関連があり得る。たとえば、第1のバケット優先度値510は、高いバケット優先度値であってよい。第2のバケット優先度値512は、中間のバケット優先度値であってよい。さらに、第3のバケット優先度値514は、低いバケット優先度値であってよい。以下で説明されるスレッドは、各スレッドと関連付けられた規定優先度値に基づいて、各バケット504、506、508に配置され得る。同様の規定優先度値を有するスレッドは、同じバケット504、506、508に配置され得る。
さらに図5を参照すると、第1のバケット504は、第1のスレッド520および第2のスレッド522を含み得る。第1のスレッド520は、規定優先度値524、量子化優先度値526、および量子値528を含み得る。規定優先度値524は、スレッドにより規定される優先度値である。規定優先度値は、スレッドの実行に対して優先度を与えるのに用いられる。たとえば、優先度値が高いと、特定のスレッドを、より低い優先度値を有するスレッドよりも前に実行させることができる。量子化優先度値526は、スレッドの実行情報に少なくとも一部基づいて求められる、優先度値であり得る。量子値528は、あるスレッドが、同じバケットの別のスレッドにより阻止される前に実行されることが許可され得る、タイムスライスであってよい。示されるように、第2のスレッド522は、規定優先度値530、量子化優先度値532、および量子値534を含み得る。
図5に示されるように、第2のバケット506は、第3のスレッド540および第4のスレッド542を含み得る。第3のスレッド540は、規定優先度値544、量子化優先度値546、および量子値548を含み得る。示されるように、第4のスレッド542は、規定優先度値550、量子化優先度値552、および量子値554を含み得る。
第Nのバケット508は、第N-1のスレッド506および第Nのスレッド562を含み得る。第N-1のスレッド560は、規定優先度値564、量子化優先度値566、および量子値568を含み得る。示されるように、第Nのスレッド562は、規定優先度値570、量子化優先度値572、および量子値574を含み得る。
特定の態様では、スレッド520、522、540、542、560、562は、各スレッドと関連付けられたランタイム情報に基づいて、バケット504、506、508の間で、スケジューラ422により移動され得る。たとえば、第1のスレッド520と関連付けられた量子化優先度値526は、第1のバケット504と関連付けられたバケット優先度値510よりも低くなり得る。第1のスレッド520の量子化優先度値526が、第1のバケット504のバケット優先度値510よりも低くなると、第1のスレッド520は、第1のスレッド520の量子化優先度値526に応じて、第1のバケット504から、第2のバケット506と第Nのバケット508のいずれかに、スケジューラ422により移動され得る。
別の例として、第3のスレッド540と関連付けられた量子化優先度値546は、第2のバケット506と関連付けられたバケット優先度値512よりも大きくなり得る。第3のスレッド540の量子化優先度値546が、第2のバケット506と関連付けられたバケット優先度値512よりも大きくなると、第3のスレッド540は、第2のバケット506から第1のバケット504に、スケジューラ422により移動され得る。
図5はさらに、スケジューラ422にアクセス可能な、量子化優先度値マップ580および量子値マップ582を示す。スケジューラ422は、各スレッド520、522、540、542、560、562と関連付けられた量子化優先度値526、532、546、552、566、572を、各スレッド520、522、540、542、560、562の規定優先度値524、530、544、550、564、570にマッピングし、各量子化優先度値を、適切なスレッド520、522、540、542、560、562と関連付けて、量子化優先度値マップ580に保存することができる。加えて、スケジューラ422は、各スレッド520、522、540、542、560、562と関連付けられた量子値528、534、548、554、568、574を、各スレッド520、522、540、542、560、562の規定優先度値524、530、544、550、564、570にマッピングし、各量子値を、適切なスレッド520、522、540、542、560、562と関連付けて、量子値マップ582に保存することができる。量子化優先度値マップ580は、バケットの優先度の割り当てに関係なく、量子化優先度値に基づいて、全てのスレッド436を一覧にする。同様に、量子値マップ582は、バケットの優先度の割り当てに関係なく、量子値に基づいて、全てのスレッド436を一覧にする。
優先順位付けシステム500は、スケジューラ422が、割り当てられたバケット504、506、および508の中でスレッド436を管理し、実行時間/ランタイム中に優先度が転換または変化し得るときに、スレッド436を他のバケット504、506、および508に再び割り当てることを、可能にする。ランタイム中の、それぞれの割り当てられたバケット504、506、および508の中でのスレッド436のこの管理は、スレッド優先度の動的な更新と呼ばれ得る。
一方、量子化優先度値マップ580および量子値マップ582により、スケジューラ422は、個々のバケットの割り当てとは無関係に、かつさほど頻繁ではないがバケットの割り当ての追跡と関連して、複数のスレッド436の優先度を追跡して更新することもできる。個々のバケットの割り当てとは無関係に、かつさほど頻繁ではないがバケットの割り当ての追跡と関連して、マップ580および582に基づいて複数のスレッド436の優先度をこのように追跡して更新することは、一般に、スレッド優先度の静的な更新と呼ばれる。
図6は、複数のスレッドの各々に優先度を割り当てるための方法を示し、全体的に600と表される。ブロック602において開始し、スケジューラ422は、スレッド602の規定優先度値を受け取ることができる。方法600は、ブロック606に進むことができ、スケジューラ422は、スレッドの量子化優先度値を求めることができる。
ブロック608に移り、スケジューラ422は、量子化優先度値を、規定優先度値およびスレッドと関連付けることができる。さらに、ブロック610において、スケジューラ422は、量子値を、規定優先度値およびスレッドと関連付けることができる。その後、方法600は終了することができる。
動作中、スケジューラ422は、各スレッドの規定優先度値、量子化優先度値、および量子値を利用して、各スレッドの処理を制御することができる。たとえば、高い規定優先度値または量子化優先度値を有するスレッドは、低い規定優先度値または量子化優先度値を有するスレッドよりも前に、実行され得る。
2つのスレッドが、実質的に同じ規定優先度値または量子化優先度値を有し、同じバケットに位置する場合、2つのスレッドは、関連する量子値に基づいて処理され得る。そのような場合、一方の特定のスレッドが5ミリ秒(5ms)の量子値を有する場合、もう一方のスレッドは1ミリ秒(1ms)の量子値を有する。5ミリ秒の量子値を有するスレッドは、5ミリ秒の間、または完了するまで(いずれか短い期間)実行することを許され、そして、1ミリ秒の量子値を有するスレッドが、ランまたは実行を許される。特定の態様では、ラウンドロビンスケジューリングにより、2つのスレッドの一方または両方がそれぞれの作業を完了するまで、スレッドの実行をその2つのスレッドの間で交互に行うことを、続けることができる。
図7を参照すると、複数のスレッドを実行する方法が示されており、全体的に700と表される。特定の態様では、オペレーティングシステム(OS)スレッド/プロセススケジューラ422が、少数の別個のバケット504、506、508へ規定スレッド優先度を量子化するために、修正され得る。各バケットは特定の優先度を有してもよく、特定の優先度のスレッドの全てが、バケットの優先度を割り当てられ得る。さらに、特定のバケットの中のスレッドの各々は、優先度が同じであるかのように、スケジューラ422によりランされ、または場合によっては実行され得る。しかし、特定のバケットの中の各スレッドはまた、スケジューラ量子値、すなわち、同じバケットの別のスレッドにより阻止される前にスレッドを実行できる最大のタイムスライスを、割り当てられ得る。スケジューラ422はさらに、各スレッドに割り当てられたスケジューラ量子値に基づいて、各バケットの中のスレッドの優先度を量子化することができる。
たとえば、スケジューラ422は、3つのバケット、たとえば、優先度の高いバケット、優先度が中程度のバケット、および優先度の低いバケットのうちの1つに、各スレッドを配置することができる。そして、各バケットの中の各スレッドの優先度は、スケジューラ量子値に量子化され得る。実行中、特定のバケットの中のスレッドは、別のバケットの中のスレッドよりも前に実行されてよい。たとえば、優先度が中程度および低いバケットよりも前に優先度が高いバケットが実行される、優先度が低いバケットよりも前に優先度が中程度のバケットが実行される、などである。特定のバケットの中のスレッドは、各スレッドの具体的なスケジューラ量子値に基づいて、実行され得る。
各スレッドは、ビデオアプリケーション、音声アプリケーション、電子メールアプリケーション、ワイヤレスネットワークアプリケーション、セルラーネットワークアプリケーション、ショートメッセージサービス(SMS)アプリケーション、通信アプリケーション、セキュリティアプリケーション、カレンダアプリケーション、インスタントメッセージングアプリケーション、スチールカメラアプリケーション、全地球測位システム(GPS)アプリケーション、ブラウザアプリケーション、メモ帳アプリケーション、クロックアプリケーション、ゲームアプリケーション、計算機アプリケーション、銀行業務アプリケーション、パスワードキーパーアプリケーション、ヘルプアプリケーション、電子商取引アプリケーション、ソフトウェア配信アプリケーション、検索アプリケーション、オプションアプリケーション、確立アプリケーション、電話アプリケーション、接続管理アプリケーション、セキュリティアプリケーション、任意の他のアプリケーション、またはそれらの組合せと関連付けられる、ワークロードの一部であってよい。
ブロック704で開始して、休止中のスレッド706を実行する準備ができた場合、スケジューラ422は、3つの異なる優先度を有する3つのバケットを作成することによって、スレッド規定優先度値を量子化優先度値にマッピングすることができる。特定の態様では、量子化優先度値は、特定のスレッドに対して求められた実際のランタイムに基づいて、求められ得る。特定の態様では、スケジューラ422は、図5の量子化マップ580のように、スレッド規定優先度値を量子化優先度値に静的にマッピングすることができる。別の態様では、スケジューラ422は、図5の量子マップ582のように、スレッド規定優先度値を量子値に静的にマッピングすることができる。
特定の態様では、休止中のスレッド706は、まだ実行キューにはないスレッド、実行をちょうど開始したスレッド、またはこれらの組合せであってよい。ブロック708において、スケジューラ422は、実行の準備ができているキューにスレッドを追加することができる。さらに、ブロック710において、スケジューラ422は、スレッド量子化優先度値、スレッド量子値、またはこれらの組合せを、更新することができる。特定の態様では、スケジューラ422は、スレッド量子化優先度値、スレッド量子値、またはこれらの組合せを、図8の静的な更新方法710Aまたは図9の動的な更新方法710Bを用いることで、以下で説明されるように静的に更新することができる。
ブロック712に移り、スケジューラ422は、実行されるべき、すなわちプロセッサにおいて実行される、実行キュー上で最高の量子化優先度値を有する次のスレッドを選択することができる。特定の態様では、スケジューラ422は、ラウンドロビン方式で、最高の量子化優先度値を有する次のスレッドを選択することができる。または、スケジューラ422は、当技術分野でよく知られる任意の他の方式でこの選択を行ってもよい。ブロック714において、スケジューラ422は、スレッド規定優先度値を、スレッド量子値、すなわちタイムスライスにマッピングすることができる。その後、スレッドは、プロセッサにおいてランされ、または場合によっては実行され得る。プロセッサは、シングルコアCPU、マルチコアCPU、複数のシングルコアCPU、複数のマルチコアCPU、またはそれらの組合せであってよい。
判定718に移り、スケジューラ422は、実行中のスレッド716と関連付けられた作業が完了したかどうかを判定することができる。作業が完了していない場合、方法700は、ブロック710に戻ることができ、本明細書で説明するように継続することができる。判定718において、作業が完了している場合、方法700は、ブロック720に進むことができ、スレッドは休止状態に入ることができる。その後、方法700は終了することができる。
図8を参照すると、スレッド優先度の量子化、スレッド量子値、またはこれらの組合せを静的に更新する方法710Aが示され、全体的に710Aと表される。図8に示される方法710Aは、スレッド優先度の量子化、スレッド量子値、またはこれらの組合せを更新するために、スケジューラ422により実行され得る。
ブロック802において開始して、スケジューラ422は、特定のスレッドと関連付けられる平均のランタイムを更新することができる。ブロック804において、スケジューラ422は、スレッド規定優先度値を、スレッド量子化優先度値に静的にマッピングすることができる。言い換えると、図5の量子化スレッド優先度マップ(MapQuantizedPriority)580の中での位置が、スレッドと関連付けられた量子化優先度値と等しくなるように設定され得る。
特定の態様では、量子化優先度値マップは、スレッドの優先度を量子化された優先度の1つにマッピングする、静的な表であってよい。ブロック806に移り、スケジューラ422は、スレッド規定優先度値を、スレッド量子値に静的にマッピングすることができる。言い換えると、図5のスレッド量子値マップ(MapThreadQuantum value)582の中での位置が、スレッドと関連付けられたスレッド量子値と等しくなるように設定され得る。スレッド量子値マップは、スレッドの優先度を、スレッド量子値、すなわちタイムスライスにマッピングする、静的な表であってよい。その後、方法710Aは終了することができる。
図9は、スレッド優先度の量子化、スレッド量子値、またはこれらの組合せを動的に更新する方法710Bを示す。方法は、全体的に710Bと表される。さらに、図9に示される方法710Bは、スレッド優先度の量子化、スレッド量子値、またはこれらの組合せを更新するために、スケジューラ422により実行され得る。
ブロック902において開始して、スケジューラ422は、特定のスレッドと関連付けられる平均のランタイムを更新することができる。ブロック904において、スケジューラ422は、量子値(スレッド)の値を、平均ランタイム(スレッド)の値と等しくなるように設定することができる。量子値(スレッド)の値は、スレッドと関連付けられた現在の量子値であってよい。さらに、平均ランタイム(スレッド)の値は、休止期間と休止期間の間の、スレッドが実行される平均の期間であってよい。
判定906に移り、スケジューラ422は、量子化優先度(スレッド)の値が、最大優先度(スレッド)の値よりも小さいかどうかを判定することができ、ここで、量子化優先度(スレッド)の値は、スレッドと関連付けられた現在の量子化優先度値であり、最大優先度(スレッド)の値は、スレッドを実行すべき最大の優先度である。量子化優先度(スレッド)の値が、最大優先度(スレッド)の値よりも小さい場合、方法710Bは判定908に進むことができ、スケジューラ422は、平均ランタイム(スレッド)の値が最小平均ランタイム(バケット)の値よりも小さいかどうかを判定することができ、ここで、最小平均ランタイム(バケット)の値は、特定のバケットの中の全てのスレッドが維持すべき、最小の平均ランタイムである。
平均ランタイム(スレッド)の値が、最小平均ランタイム(バケット)の値よりも小さい場合、方法710Bはブロック910に進むことができ、スケジューラ422は、次により大きな量子化優先度値に等しくなるように、量子化優先度(スレッド)の値を設定することができる。すなわち、スレッドは、現在のバケットの優先度よりも高い優先度を有する、バケットの列の中の次のバケットに、昇格する。その後、方法710Bは判定906に戻ることができ、方法710Bは本明細書で説明するように継続することができる。判定908に戻り、平均ランタイム(スレッド)の値が、最小平均ランタイム(バケット)の値よりも小さくない場合、すなわちそれ以上である場合、方法710Bは判定912に進むことができる。さらに、判定906に戻り、量子化優先度(スレッド)の値が、最大優先度(スレッド)の値よりも小さくない場合、すなわちそれ以上である場合も、方法710Bは判定912に進むことができる。
判定912において、スケジューラ422は、量子化優先度(スレッド)の値が、最小優先度(スレッド)の値よりも大きいかどうか判定することができ、ここで、最小優先度(スレッド)の値は、スレッドを実行すべき最小の優先度である。量子化優先度(スレッド)の値が、最小優先度(スレッド)の値よりも大きい場合、方法710Bは判定914に進むことができ、スケジューラ422は、平均ランタイム(スレッド)の値が最大平均ランタイム(バケット)の値よりも大きいかどうかを判定することができ、ここで、最大平均ランタイム(バケット)の値は、特定の、すなわち現在のバケットの中の全てのスレッドが維持すべき、最大の平均ランタイムである。
平均ランタイム(スレッド)の値が、最大平均ランタイム(バケット)の値よりも大きい場合、方法710Bはブロック916に進むことができ、スケジューラ422は、次に小さな量子化優先度値に等しくなるように、量子化優先度(スレッド)の値を設定することができる。すなわち、スレッドは、現在のバケットの優先度よりも低い優先度を有する、バケットの列の中の次のバケットに、降格される。その後、方法は判定912に戻ることができ、方法710Bは本明細書で説明するように継続することができる。判定914に戻り、平均ランタイム(スレッド)の値が、最大平均ランタイム(バケット)の値よりも大きくない場合、すなわちそれ以下である場合、方法710Bは図10の判定1002に進むことができる。判定912に戻り、量子化優先度(スレッド)の値が、最小優先度(スレッド)の値よりも大きくない場合、すなわちそれ以下である場合も、方法710Bは図10の判定1002に進むことができる。
図10の判定1002において、スケジューラ422は、平均スケジューリング時間(バケット)の値が、最大平均スケジューリング時間(バケット)の値よりも大きいかどうか判定することができ、ここで、平均スケジューリング時間(バケット)の値は、スレッドが特定のバケットの中にある場合に、スレッドが実行キュー上に配置された後に開始するまでにかかる平均の時間であり、最大平均スケジューリング時間(バケット)の値は、特定のバケットに対して望まれる最大の平均スケジューリング時間であってよい。特定の態様では、スレッドの配置は、最初の配置であってもよく、または、スレッドが実行され量子値を使い果たした後の、再配置であってもよい。
平均スケジューリング時間(バケット)の値が、最大平均スケジューリング時間(バケット)の値よりも大きくない場合、すなわちそれ以下である場合、方法710Bは終了することができる。また、平均スケジューリング時間(バケット)の値が最大平均スケジューリング時間(バケット)の値よりも大きい場合、方法710Bは判定1004に進むことができ、スケジュールは、最大スレッド量子値(バケット)の値が最小スレッド量子値(バケット)の値よりも大きいかどうかを判定することができ、ここで、最大スレッド量子値(バケット)の値は、特定のバケットの中の任意のスレッドに対する最大の量子値であり、最小スレッド量子値(バケット)の値は、特定のバケットの中の任意のスレッドに対して望まれる最小のスレッド量子値である。最大スレッド量子値(バケット)の値が最小スレッド量子値(バケット)の値よりも実際に大きい場合は、方法710Bはブロック1006に進むことができる。
ブロック1006において、スケジューラ422は、量子値(最大スレッド)の値を整数1だけ下げることができ、ここで量子値(最大スレッド)の値は、特定のバケットの中の最大のスレッド量子値である。さらに、ブロック1006において、スケジューラ422は、平均スケジューリング時間(バケット)の値を整数1だけ下げることができる。その後、方法710Bは判定1002に戻ることができ、方法710Bは本明細書で説明するように継続することができる。
判定1004に戻り、最大スレッド量子値(バケット)の値が、最小スレッド量子値(バケット)の値よりも大きくない場合、すなわちそれ以下である場合、方法710Bは判定1008に進むことができる。判定1008において、方法710Bは、最も低い最小スレッド優先度(バケット)の値が優先度(バケット)の値よりも小さいかどうか判定することができ、ここで、最も低い最小スレッド優先度(バケット)の値は、特定のバケットの中の任意のスレッドに対する最も低い最小の優先度であり、優先度(バケット)の値は、特定のバケットの優先度である。最も低い最小スレッド優先度(バケット)の値が、優先度(バケット)の値よりも小さくない場合、すなわちそれ以上である場合、方法710Bは終了することができる。
逆に、最も低い最小スレッド優先度(バケット)の値が、優先度(バケット)の値よりも小さい場合は、方法710Bはブロック1010に進むことができる。ブロック1010において、スケジューラ422は、量子化優先度(最低スレッド)の値を、次のより小さな量子化優先度値と等しくなるように設定することができ、ここで、最低スレッドは、最も低い最小の優先度を有するスレッドである。すなわち、最も低い最小の優先度を有するスレッドは、現在のバケットの優先度よりも低い優先度を有する、バケットの列の中の次のバケットに、降格される。さらに、ブロック1010において、スケジューラ422は、平均スケジューリング時間(バケット)の値を、平均スケジューリング時間(バケット)の値から量子値(最低スレッド)の値を引いたものと、0との、大きい方に等しくなるように設定することができ、ここで、量子値(最低スレッド)の値は、現在のバケットの中で最も低い最小の優先度を有するスレッドの、量子値である。その後、方法710Bは判定1002に戻ることができ、方法710Bは本明細書で説明するように継続することができる。
本明細書で説明する方法ステップは、必ずしも説明どおりの順序で実施する必要はないことを理解されたい。さらに、「その後」、「次いで」、「次に」などの語は、ステップの順序を限定することを意図していない。これらの語は、方法ステップの説明を通じて読者を案内するために使用されているにすぎない。さらに、本明細書で説明する方法はポータブルコンピューティングデバイス(PCD)上で実行可能なものとして説明している。PCDはモバイル電話デバイス、携帯情報端末デバイス、スマートブックコンピューティングデバイス、ネットブックコンピューティングデバイス、ラップトップコンピューティングデバイス、デスクトップコンピューティングデバイス、またはそれらの組合せであってよい。さらに、本明細書で説明される方法ステップは、シングルコアプロセッサ、マルチコアプロセッサ、複数のシングルコアプロセッサ、複数のマルチコアプロセッサ、またはそれらの任意の組合せ上で実行され得る。
本明細書で説明される構成により、システムおよび方法は、スレッドの優先度を、少数のスケジューリング可能な優先度と、スレッドに対するスケジューラの量子値(タイムスライス)とに、量子化することができる。さらに、システムおよび方法は、複数のスレッドが同じ実質的な優先度に量子化された場合に、優先度の高いスレッドが連続的に実行されることによって引き起こされる、優先度の低いスレッドの完全な妨害を実質的に防ぐことができる。システムおよび方法はまた、複数のスレッドが同じ実質的な優先度に量子化された場合に、優先度の高いスレッドが連続的に実行されることによって、優先度の低いスレッドが妨害される最大の期間の限度を、実質的に短くすることもできる。
特定の態様では、本明細書のシステムおよび方法は、スレッドの優先度により引き起こされる競合状態および妨害を追跡する際の複雑さを、たとえば、スレッドの優先度の数を減らすことによって、実質的に低減することができる。さらに、本明細書で説明されるシステムおよび方法は、スレッドがスケジューラの実行キュー上にあるときに、規定優先度の高いスレッドが、他のスレッドを妨害することなく、より大きな割合の処理時間を得られるようにし得る。本明細書のシステムおよび方法は、さらに、実質的な優先度を変えることなく、スレッドのCPU利用率を向上させるように規定スレッド優先度を変更することを可能にし得るので、望ましくない、または場合によっては予期しない、他のスレッドの妨害および/または競合状態をもたらさないようにし得る。
特定の態様では、本明細書のシステムおよび方法は、スケジューリング可能な優先度のレベルの数を減らすことで、スレッドの妨害を実質的に減らすことができる。規定優先度値をより少数の優先度に量子化して、各スレッドをタイムスライスに分けることによって、規定優先度が異なるスレッドが同じ量子化優先度値にマッピングされた場合はいつでも、たとえば、優先度の高いスレッドが常に実行されることにより引き起こされる完全な妨害を、実質的に防ぐことができる。さらに、規定優先度値をより少数の優先度に量子化して、各スレッドをタイムスライスに分けることによって、たとえば、優先度の高いスレッドが常に実行されることにより引き起こされる妨害の長さを、同じ量子化優先度値にマッピングされ同時に実行されるようにスケジューリングされた全ての他のスレッドの、累積のタイムスライスの最大値にまで、実質的に短くすることができる。別の態様では、規定優先度値をより少数の優先度に量子化することによって、妨害および/または競合状態が起きる可能性が実質的に下がる。なぜなら、そのような状態が存在しないことを確認するのに必要な分析は、関与する優先度の組合せの数によるからである。
本明細書で説明されるシステムおよび方法は、優先度の高いスレッドにより高い量子値をマッピングすることによって、規定優先度の高いスレッドが、より長いCPU時間を得られるようにし得る。特定の態様では、スレッド量子値が高いほど、スレッドは、阻止される前により長くランまたは実行され得る。したがって、優先度の低いスレッドが実行を許可され得る場合でも、スレッドは、潜在的に高い割合のCPU利用率を有し得る。さらに、スレッド量子化優先度値が同じままになるようにスレッド規定優先度値を変えても、スレッドの実質的な優先度は変わらず、デッドロックおよび/または競合状態の基本的な増加にはつながらない。
1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せで実装することができる。ソフトウェアで実装した場合、これらの機能を機械可読媒体すなわちコンピュータ可読媒体などのコンピュータプログラム製品に記憶すること、またはそのようなコンピュータプログラム製品上の1つもしくは複数の命令あるいはコードとして送信することができる。コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体の両方を含み、1つの場所から別の場所へのコンピュータプログラムの転送を容易にするあらゆる媒体を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であってよい。限定ではなく、例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROM、または他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形式で所望のプログラムコードを伝送もしくは記憶するために使用でき、コンピュータによってアクセスされ得るその他の媒体を含むことができる。また、あらゆる接続がコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアがウェブサイト、サーバ、または他のリモートソースから同軸ケーブル、光ファイバーケーブル、より対線、デジタル加入者回線(DSL)、または赤外線、無線およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、より対線、DSL、または赤外線、無線およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれ得る。本明細書で使用するディスク(diskおよびdisc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多目的ディスク(disc)(DVD)、フレキシブルディスク(disk)およびブルーレイディスク(disc)を含み、diskは通常、磁気的にデータを再生し、discはレーザで光学的にデータを再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるものとする。
選択された態様について詳細に説明し、詳述してきたが、以下の請求項によって定められた本発明の趣旨および範囲から離れることなく、そのような態様において様々な代替および改変を実施できることが理解されよう。
100 ポータブルコンピューティングデバイス
108 ディスプレイ
322 オンチップシステム
324 マルチコアCPU
325 第0のコア
344 メモリ
400 処理システム
416 第1のDCVSアルゴリズム
420 オペレーティングシステム
422 タイムスケジューラ
424 第1の実行キュー
430 第1のアプリケーション
500 優先順位付けシステム
504 第1のバケット
520 第1のスレッド
524 規定優先度値
526 量子化優先度値
528 量子値
580 量子化優先度値マップ
582 量子値マップ

Claims (40)

  1. 複数のスレッドを実行する方法であって、
    休止中のスレッドにバケット優先度値を割り当てることによって、前記休止中のスレッドの実行の準備ができた場合に、前記休止中のスレッドと関連付けられたスレッド規定優先度値を、前記休止中のスレッドと関連付けられたスレッド量子化優先度値にマッピングするステップと、
    前記休止中のスレッドを、実行の準備ができているキューに追加するステップと、
    前記休止中のスレッドと関連付けられた、前記スレッド量子化優先度値、スレッド量子値、またはこれらの組合せを更新するステップであって、マップを用いて静的に更新するステップと、バケット優先度値に基づいて動的に更新するステップとのうちの1つを含む、ステップと
    を含む、方法。
  2. 前記スレッド量子化優先度値が、前記スレッドの実際のランタイムに基づく前記スレッドの優先度値を含む、請求項1に記載の方法。
  3. 量子化優先度値を選択された優先度値にマッピングするステップをさらに含む、請求項1に記載の方法。
  4. 前記スレッド量子化優先度値、前記スレッド量子値、またはこれらの組合せが、静的に、動的に、またはこれらの組合せにより更新される、請求項1に記載の方法。
  5. 実行キュー上で実行すべきスレッドを選択するステップ
    をさらに含む、請求項1に記載の方法。
  6. 前記選択されたスレッドが、最高の量子化優先度値を有するスレッドのグループから選択される、請求項4に記載の方法。
  7. 量子値を規定優先度値にマッピングするステップ
    をさらに含む、請求項4に記載の方法。
  8. 前記選択されたスレッドを実行するステップ
    をさらに含む、請求項6に記載の方法。
  9. 前記選択されたスレッドと関連付けられたスレッド量子値が完了した場合に、前記選択されたスレッドに対する、スレッド量子化優先度値、前記スレッド量子値、またはこれらの組合せを、更新するステップ
    をさらに含む、請求項7に記載の方法。
  10. 前記選択されたスレッドと関連付けられた作業が完了した場合に、前記選択されたスレッドに対する、スレッド量子化優先度値、スレッド量子値、またはこれらの組合せを、更新するステップ
    をさらに含む、請求項7に記載の方法。
  11. 複数のスレッドを実行するためのデバイスであって、
    休止中のスレッドにバケット優先度値を割り当てることによって、前記休止中のスレッドの実行の準備ができた場合に、前記休止中のスレッドと関連付けられたスレッド規定優先度値を、前記休止中のスレッドと関連付けられたスレッド量子化優先度値にマッピングするための手段と、
    前記休止中のスレッドを、実行の準備ができているキューに追加するための手段と、
    前記休止中のスレッドと関連付けられた、前記スレッド量子化優先度値、スレッド量子値、またはこれらの組合せを更新するための手段であって、マップを用いて静的に更新するための手段と、バケット優先度値に基づいて動的に更新するための手段とのうちの1つを含む、手段と
    を含む、デバイス。
  12. 前記スレッド量子化優先度値が、前記スレッドの実際のランタイムに基づく前記スレッドの優先度値を含む、請求項11に記載のデバイス。
  13. 前記スレッドを、複数のスレッドを含む特定のバケットの中の別のスレッドにより阻止される前に実行できる、最大のタイムスライスを前記量子値が含む、請求項11に記載のデバイス。
  14. 量子化優先度値を選択された優先度値にマッピングするための手段をさらに含む、請求項11に記載のデバイス。
  15. 実行キュー上で実行すべきスレッドを選択するための手段
    をさらに含む、請求項11に記載のデバイス。
  16. 前記選択されたスレッドが、最高の量子化優先度値を有するスレッドのグループから選択される、請求項14に記載のデバイス。
  17. 量子値を規定優先度値にマッピングするための手段
    をさらに含む、請求項14に記載のデバイス。
  18. 前記選択されたスレッドを実行するための手段
    をさらに含む、請求項16に記載のデバイス。
  19. 前記選択されたスレッドと関連付けられたスレッド量子値が完了した場合に、前記選択されたスレッドに対する、スレッド量子化優先度値、前記スレッド量子値、またはこれらの組合せを、更新するための手段
    をさらに含む、請求項17に記載のデバイス。
  20. 前記選択されたスレッドと関連付けられた作業が完了した場合に、前記選択されたスレッドに対する、スレッド量子化優先度値、スレッド量子値、またはこれらの組合せを、更新するための手段
    をさらに含む、請求項17に記載のデバイス。
  21. プロセッサを含むデバイスであって、前記プロセッサが、
    休止中のスレッドにバケット優先度値を割り当てることによって、前記休止中のスレッドの実行の準備ができた場合に、前記休止中のスレッドと関連付けられたスレッド規定優先度値を、前記休止中のスレッドと関連付けられたスレッド量子化優先度値にマッピングし、
    前記休止中のスレッドを、実行の準備ができているキューに追加し、
    前記休止中のスレッドと関連付けられた、前記スレッド量子化優先度値、スレッド量子値、またはこれらの組合せを更新する
    ように動作可能であり、前記更新が、前記プロセッサがマップを用いて静的に更新することと、前記プロセッサがバケット優先度値に基づいて動的に更新することのうちの1つを含む、デバイス。
  22. 前記スレッド量子化優先度値が、前記スレッドの実際のランタイムに基づく前記スレッドの優先度値を含む、請求項21に記載のデバイス。
  23. 前記スレッドを、複数のスレッドを含む特定のバケットの中の別のスレッドにより阻止される前に実行できる、最大のタイムスライスを前記量子値が含む、請求項21に記載のデバイス。
  24. 前記プロセッサが、
    量子化優先度値を選択された優先度値にマッピングする
    ようにさらに動作可能である、請求項21に記載のデバイス。
  25. 前記プロセッサが、
    実行キュー上で実行すべきスレッドを選択する
    ようにさらに動作可能である、請求項21に記載のデバイス。
  26. 前記選択されたスレッドが、最高の量子化優先度値を有するスレッドのグループから選択される、請求項24に記載のデバイス。
  27. 前記プロセッサが、
    量子値を規定優先度値にマッピングする
    ようにさらに動作可能である、請求項24に記載のデバイス。
  28. 前記プロセッサが、
    前記選択されたスレッドを実行する
    ようにさらに動作可能である、請求項26に記載のデバイス。
  29. 前記プロセッサが、
    前記選択されたスレッドと関連付けられたスレッド量子値が完了した場合に、前記選択されたスレッドに対する、スレッド量子化優先度値、前記スレッド量子値、またはこれらの組合せを、更新する
    ようにさらに動作可能である、請求項27に記載のデバイス。
  30. 前記プロセッサが、
    前記選択されたスレッドと関連付けられた作業が完了した場合に、前記選択されたスレッドに対する、スレッド量子化優先度値、スレッド量子値、またはこれらの組合せを、更新する
    ようにさらに動作可能である、請求項27に記載のデバイス。
  31. 複数のスレッドを実行するためのコンピュータにより実行可能な命令を記録したコンピュータ読み取り可能な記録媒体であって、
    休止中のスレッドにバケット優先度値を割り当てることによって、前記休止中のスレッドの実行の準備ができた場合に、前記休止中のスレッドと関連付けられたスレッド規定優先度値を、前記休止中のスレッドと関連付けられたスレッド量子化優先度値にマッピングするための少なくとも1つの命令と、
    前記休止中のスレッドを、実行の準備ができているキューに追加するための少なくとも1つの命令と、
    前記休止中のスレッドと関連付けられた、前記スレッド量子化優先度値、スレッド量子値、またはこれらの組合せを更新するための少なくとも1つの命令であって、前記更新するステップが、マップを用いて静的に更新するステップと、バケット優先度値に基づいて動的に更新するステップのうちの1つを含む、命令と
    を含む、記録媒体。
  32. 前記スレッド量子化優先度値が、前記スレッドの実際のランタイムに基づく前記スレッドの優先度値を含む、請求項31に記載の記録媒体。
  33. 前記スレッドを、複数のスレッドを含む特定のバケットの中の別のスレッドにより阻止される前に実行できる、最大のタイムスライスを前記量子値が含む、請求項31に記載の記録媒体。
  34. 量子化優先度値を選択された優先度値にマッピングするための少なくとも1つの命令をさらに含む、請求項31に記載の記録媒体。
  35. 実行キュー上で実行すべきスレッドを選択するための少なくとも1つの命令
    をさらに含む、請求項31に記載の記録媒体。
  36. 前記選択されたスレッドが、最高の量子化優先度値を有するスレッドのグループから選択される、請求項34に記載の記録媒体。
  37. 量子値を規定優先度値にマッピングするための少なくとも1つの命令
    をさらに含む、請求項34に記載の記録媒体。
  38. 前記選択されたスレッドを実行するための少なくとも1つの命令
    をさらに含む、請求項36に記載の記録媒体。
  39. 前記選択されたスレッドと関連付けられたスレッド量子値が完了した場合に、前記選択されたスレッドに対する、スレッド量子化優先度値、前記スレッド量子値、またはこれらの組合せを、更新するための少なくとも1つの命令
    をさらに含む、請求項37に記載の記録媒体。
  40. 前記選択されたスレッドと関連付けられた作業が完了した場合に、前記選択されたスレッドに対する、スレッド量子化優先度値、スレッド量子値、またはこれらの組合せを、更新するための少なくとも1つの命令
    をさらに含む、請求項37に記載の記録媒体。
JP2012557074A 2010-03-15 2011-02-23 プロセッサにおいてスレッドを実行するシステムおよび方法 Active JP5593404B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US31408510P 2010-03-15 2010-03-15
US61/314,085 2010-03-15
US12/964,342 2010-12-09
US12/964,342 US8904399B2 (en) 2010-03-15 2010-12-09 System and method of executing threads at a processor
PCT/US2011/025890 WO2011115732A1 (en) 2010-03-15 2011-02-23 System and method of executing threads at a processor

Publications (2)

Publication Number Publication Date
JP2013522724A true JP2013522724A (ja) 2013-06-13
JP5593404B2 JP5593404B2 (ja) 2014-09-24

Family

ID=44561164

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012557074A Active JP5593404B2 (ja) 2010-03-15 2011-02-23 プロセッサにおいてスレッドを実行するシステムおよび方法

Country Status (7)

Country Link
US (1) US8904399B2 (ja)
EP (1) EP2548120A1 (ja)
JP (1) JP5593404B2 (ja)
KR (1) KR101522081B1 (ja)
CN (1) CN103140831B (ja)
BR (1) BR112012022431B1 (ja)
WO (1) WO2011115732A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5376042B2 (ja) * 2010-03-18 2013-12-25 富士通株式会社 マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム
US20130060555A1 (en) * 2011-06-10 2013-03-07 Qualcomm Incorporated System and Apparatus Modeling Processor Workloads Using Virtual Pulse Chains
US9086883B2 (en) 2011-06-10 2015-07-21 Qualcomm Incorporated System and apparatus for consolidated dynamic frequency/voltage control
CN102740256A (zh) * 2012-05-31 2012-10-17 华为终端有限公司 一种短消息屏蔽方法和移动终端
US8963933B2 (en) * 2012-07-23 2015-02-24 Advanced Micro Devices, Inc. Method for urgency-based preemption of a process
US9274832B2 (en) * 2013-02-07 2016-03-01 Htc Corporation Method and electronic device for thread scheduling
CN103995742B (zh) * 2014-05-20 2017-02-22 万向钱潮股份有限公司 一种基于mcu的嵌入式实时调度控制装置及方法
CN104536345A (zh) * 2014-12-17 2015-04-22 万向钱潮股份有限公司 一种基于汽车电控控制系统的多任务控制方法
CN105828308B (zh) * 2015-10-20 2020-10-16 维沃移动通信有限公司 一种限制电子设备通信功能的方法、电子设备及微型基站
US10134103B2 (en) * 2015-10-23 2018-11-20 Qualcomm Incorporated GPU operation algorithm selection based on command stream marker
CN105843687A (zh) * 2016-03-31 2016-08-10 乐视控股(北京)有限公司 一种任务资源的量化方法和装置
US10146583B2 (en) * 2016-08-11 2018-12-04 Samsung Electronics Co., Ltd. System and method for dynamically managing compute and I/O resources in data processing systems
CN109766131B (zh) * 2017-11-06 2022-04-01 上海宝信软件股份有限公司 基于多线程技术实现软件智能化自动升级的系统及方法
CN110502320B (zh) * 2018-05-18 2022-03-04 杭州海康威视数字技术股份有限公司 线程优先级调整方法、装置、电子设备及存储介质
US10866834B2 (en) * 2019-03-29 2020-12-15 Intel Corporation Apparatus, method, and system for ensuring quality of service for multi-threading processor cores
US11954518B2 (en) * 2019-12-20 2024-04-09 Nvidia Corporation User-defined metered priority queues
CN113742091A (zh) * 2021-08-31 2021-12-03 深圳Tcl新技术有限公司 一种线程运行方法、装置、计算机设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11212809A (ja) * 1997-10-31 1999-08-06 Sun Microsyst Inc プロセッサ共有方法および装置
US20060294522A1 (en) * 2005-06-27 2006-12-28 Microsoft Corporation Class scheduler

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5812844A (en) * 1995-12-07 1998-09-22 Microsoft Corporation Method and system for scheduling the execution of threads using optional time-specific scheduling constraints
US5826081A (en) * 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications
US6658447B2 (en) 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US6182120B1 (en) 1997-09-30 2001-01-30 International Business Machines Corporation Method and system for scheduling queued messages based on queue delay and queue priority
CA2252238A1 (en) * 1997-10-31 1999-04-30 Sun Microsystems, Inc. Method and apparatus for sharing a time quantum
US7051330B1 (en) * 2000-11-21 2006-05-23 Microsoft Corporation Generic application server and method of operation therefor
JP3975703B2 (ja) * 2001-08-16 2007-09-12 日本電気株式会社 情報処理システムにおける優先実行制御方法及びその装置並びにプログラム
US7080376B2 (en) 2001-09-21 2006-07-18 Intel Corporation High performance synchronization of accesses by threads to shared resources
ES2305216T3 (es) * 2002-01-30 2008-11-01 Real Enterprise Solutions Development B.V. Metodo para establecer niveles de prioridad en un sistema de computo de multiprogramacion con planificacion por prioridades, sistema de computo de multiprogramacion y programa para esto.
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
US7536689B2 (en) 2003-01-10 2009-05-19 Tricerat, Inc. Method and system for optimizing thread scheduling using quality objectives
US8566828B2 (en) 2003-12-19 2013-10-22 Stmicroelectronics, Inc. Accelerator for multi-processing system and method
US7458077B2 (en) * 2004-03-31 2008-11-25 Intel Corporation System and method for dynamically adjusting a thread scheduling quantum value
US7487503B2 (en) 2004-08-12 2009-02-03 International Business Machines Corporation Scheduling threads in a multiprocessor computer
DE102004054571B4 (de) 2004-11-11 2007-01-25 Sysgo Ag Verfahren zur Verteilung von Rechenzeit in einem Rechnersystem
US7904906B2 (en) * 2004-11-23 2011-03-08 Stratus Technologies Bermuda Ltd. Tracking modified pages on a computer system
US8255912B2 (en) * 2005-04-13 2012-08-28 Qualcomm Incorporated Techniques for setting events in a multi-threaded system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11212809A (ja) * 1997-10-31 1999-08-06 Sun Microsyst Inc プロセッサ共有方法および装置
US20060294522A1 (en) * 2005-06-27 2006-12-28 Microsoft Corporation Class scheduler

Also Published As

Publication number Publication date
CN103140831A (zh) 2013-06-05
BR112012022431A2 (pt) 2016-07-05
US20110225590A1 (en) 2011-09-15
KR101522081B1 (ko) 2015-05-20
WO2011115732A1 (en) 2011-09-22
US8904399B2 (en) 2014-12-02
JP5593404B2 (ja) 2014-09-24
CN103140831B (zh) 2016-08-10
EP2548120A1 (en) 2013-01-23
KR20130004502A (ko) 2013-01-10
BR112012022431B1 (pt) 2021-08-03

Similar Documents

Publication Publication Date Title
JP5593404B2 (ja) プロセッサにおいてスレッドを実行するシステムおよび方法
EP2513746B1 (en) System and method for controlling central processing unit power with guaranteed transient deadlines
US9201693B2 (en) Quota-based resource management
US8689037B2 (en) System and method for asynchronously and independently controlling core clocks in a multicore central processing unit
KR101516859B1 (ko) 보장된 정상 상태 데드라인을 가진 중앙 처리 장치 전력을 제어하는 시스템 및 방법
KR20170062493A (ko) 이종 스레드 스케줄링
JP2017526996A (ja) プロセッサデバイス電力消費を管理するシステムおよび方法
JP5662478B2 (ja) 中央処理装置内のデータをサンプリングするシステムおよび方法
JP2013513899A (ja) 周波数変動を低減させて中央処理装置電力を制御するためのシステムおよび方法
JP5460883B2 (ja) ワークロードの要求に基づいて動的なクロックおよび電圧切替えアルゴリズムを調整するシステムおよび方法
US11422857B2 (en) Multi-level scheduling
CN116028005A (zh) 音频会话获取方法、装置、设备和存储介质

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140619

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140804

R150 Certificate of patent or registration of utility model

Ref document number: 5593404

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250