特許第5792351号(P5792351)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ クゥアルコム・インコーポレイテッドの特許一覧

特許5792351マルチスレッドプロセッサ内で割り込みを割り当てるための方法及びシステム
<>
  • 特許5792351-マルチスレッドプロセッサ内で割り込みを割り当てるための方法及びシステム 図000002
  • 特許5792351-マルチスレッドプロセッサ内で割り込みを割り当てるための方法及びシステム 図000003
  • 特許5792351-マルチスレッドプロセッサ内で割り込みを割り当てるための方法及びシステム 図000004
  • 特許5792351-マルチスレッドプロセッサ内で割り込みを割り当てるための方法及びシステム 図000005
  • 特許5792351-マルチスレッドプロセッサ内で割り込みを割り当てるための方法及びシステム 図000006
  • 特許5792351-マルチスレッドプロセッサ内で割り込みを割り当てるための方法及びシステム 図000007
  • 特許5792351-マルチスレッドプロセッサ内で割り込みを割り当てるための方法及びシステム 図000008
  • 特許5792351-マルチスレッドプロセッサ内で割り込みを割り当てるための方法及びシステム 図000009
  • 特許5792351-マルチスレッドプロセッサ内で割り込みを割り当てるための方法及びシステム 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5792351
(24)【登録日】2015年8月14日
(45)【発行日】2015年10月7日
(54)【発明の名称】マルチスレッドプロセッサ内で割り込みを割り当てるための方法及びシステム
(51)【国際特許分類】
   G06F 9/48 20060101AFI20150917BHJP
   G06F 9/46 20060101ALI20150917BHJP
【FI】
   G06F9/46 311B
   G06F9/46 320D
   G06F9/46 410
【請求項の数】3
【外国語出願】
【全頁数】16
(21)【出願番号】特願2014-96363(P2014-96363)
(22)【出願日】2014年5月7日
(62)【分割の表示】特願2011-527930(P2011-527930)の分割
【原出願日】2009年9月16日
(65)【公開番号】特開2014-179119(P2014-179119A)
(43)【公開日】2014年9月25日
【審査請求日】2014年5月26日
(31)【優先権主張番号】12/233,688
(32)【優先日】2008年9月19日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】100108855
【弁理士】
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100109830
【弁理士】
【氏名又は名称】福原 淑弘
(74)【代理人】
【識別番号】100103034
【弁理士】
【氏名又は名称】野河 信久
(74)【代理人】
【識別番号】100075672
【弁理士】
【氏名又は名称】峰 隆司
(74)【代理人】
【識別番号】100153051
【弁理士】
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100140176
【弁理士】
【氏名又は名称】砂川 克
(74)【代理人】
【識別番号】100158805
【弁理士】
【氏名又は名称】井関 守三
(74)【代理人】
【識別番号】100179062
【弁理士】
【氏名又は名称】井上 正
(74)【代理人】
【識別番号】100124394
【弁理士】
【氏名又は名称】佐藤 立志
(74)【代理人】
【識別番号】100112807
【弁理士】
【氏名又は名称】岡田 貴志
(74)【代理人】
【識別番号】100111073
【弁理士】
【氏名又は名称】堀内 美保子
(72)【発明者】
【氏名】エリッチ・ジェイムズ・プロンケ
(72)【発明者】
【氏名】ルシアン・コドレスキュ
【審査官】 篠塚 隆
(56)【参考文献】
【文献】 特開2005−4562(JP,A)
【文献】 特開平4−302353(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F9/46−9/50
(57)【特許請求の範囲】
【請求項1】
マルチスレッドプロセッサにおける割り込みを管理するための手段であって、第1タスク優先度に関連する第1タスクを実行するように構成される第1スレッドと、第2タスク優先度に関連する第2タスクを実行するように構成される第2スレッドとを含む複数のスレッドの内の最低優先度スレッドの指示を受け取るように構成される管理手段と、
マルチスレッドプロセッサにおける複数の記憶するための手段であって、前記第1タスク優先度に対応する第1スレッド優先度を記憶するように構成される第1の記憶するための手段と、前記第2タスク優先度に対応する第2スレッド優先度を記憶するように構成される第2の記憶するための手段とを含む複数の記憶手段と、
マルチスレッドプロセッサにおけるエンコードするための手段であって、前記管理手段に、前記最低優先度スレッドの指示を供給するエンコード手段と
を具備し、
前記最低優先度スレッドは、前記複数のスレッドの各スレッドに対応するスレッド優先度に基づく最も低いスレッド優先度を有し、
前記複数のスレッドの各スレッドに対応するスレッド優先度は、前記複数の記憶手段の内の対応する記憶手段から受け取られる機器
【請求項2】
前記管理手段は、
前記割り込みの割り込み優先度が、前記最低優先度スレッドに対応する前記最も低いスレッド優先度よりも高い優先度であるか否かを判定し、
前記割り込みを前記最低優先度スレッドに供給することによって、前記最低優先度スレッドに前記割り込みを割り当てるように構成され、
前記最低優先度スレッドは、前記割り込みを受け取ったことに基づいて、特定の対応するタスクを処理することを中断し、前記割り込みを処理するように構成される請求項1記載の機器
【請求項3】
前記管理手段は、
前記割り込みの割り込み優先度と、前記最低優先度スレッドの特定の優先度とに基づいて、前記最低優先度スレッドに前記割り込みを課すように構成される請求項1記載の機器
【発明の詳細な説明】
【技術分野】
【0001】
ここに開示される発明概念の実施形態は、一般にデータ処理システムの分野に関する。より具体的には、ここに開示される発明概念の実施形態は、マルチスレッドプロセッサ(multi-threaded processor)に割り込み(interrupt)を割り当てることに関する。
【背景技術】
【0002】
マルチスレッドプロセッサは、タスクを処理できるスピードを増大させるために、2以上のスレッドを含むことができる。スレッドは、タスクが処理されるハードウェアであり得る。タスクは、アプリケーションやプログラムのような、システムファンクションに関連する命令シーケンスであり得る。いくつかのアプリケーション又はプログラムは、同時に2以上のタスクと関連付けられる可能性がある。スレッドは、タスクに関連する命令シーケンスを実行することにより、そのタスクを処理又は実行することができる。
【0003】
あるスレッドがあるタスクを処理すると同時に、別のスレッドは別のタスクを処理することができる。処理のステージは、フェッチ(タスクに関連する命令を取得すること)、デコード(命令を演算とオペランドとに分割すること)、レジスタファイルからオペランドを読み出すこと、命令を実行すること、結果をライトバックすることを含み得る。プロセスは、タスクの全命令が実行されるまで、タスク内の次の命令のために繰り返され得る。各タスクは、優先度に関連付けられ、その優先度に基づいてスレッドに割り当てられ得る。例えば、ソフトウェアは各タスクに優先度を割り当てることができ、スケジューラは、タスクを処理する準備ができているスレッドを提供するための、最も高い優先度を有する次のタスクを決定することができる。
【0004】
スレッドは、割り込みを処理することもでき得る。割り込みは、ソフトウェアによって生成された、又はシステムデバイスからの割り込みハンドラに関連する通知であり得る。割り込みハンドラは、スケジューリングされていないタスクであるルーチンであり得る。割り込みが受け取られたとき、それはマルチスレッドプロセッサのいずれかのスレッドによって処理され得る。例えば、第1スレッドが現在タスクの命令を処理していても処理していなくても、また、他のスレッドが待ち状態(wait mode)であっても(すなわち、いずれのタスクも処理していなくても)、割り込みハンドラは、フェッチステージで第1スレッドに供給されることができる。割り込みを処理することは、スレッドがタスクの命令を処理することを中断することと、割り込みハンドラに関連する命令シーケンスを処理することとを含む。
【0005】
割り込みを処理するために現在のタスクを処理することを中断するスレッドは、高優先度のタスクを処理することによるように、高優先度のスレッドであるかもしれない。1以上のスレッドが待ち状態である場合、又は割り込みを処理するために処理中の低優先度のスレッドが利用可能である場合、高優先度のスレッドが高優先度のタスクを処理し続け、割り込みのためにその処理を中断しないことが望ましい。
【0006】
したがって、他のスレッドが割り込みの処理のために利用可能であるときに、高優先度のスレッド上で割り込みを実行することによるオーバヘッドを減らすために、割り込みを割り当てることができるマルチスレッドプロセッサのためのシステム及びプロセスが望ましい。
【発明の概要】
【0007】
実施形態では、マルチスレッドプロセッサが記述される。マルチスレッドプロセッサは、割り込みモジュールとタスクを実行するためのスレッドとを含む。各スレッドはタスクを実行することができる。割り込みモジュールは、スレッドそれぞれの優先度を識別することができ、少なくともその優先度に基づいて、スレッドの内の1つに割り込みを割り当てることができる。
【0008】
この実例となる実施形態は、ここに開示された発明概念を限定又は定義することを意図せず、それらの理解を支援するための例を提供することを意図する。本開示の他の態様、利点及び特徴は、次のセクション、すなわち、図面の説明、詳細な説明及び特許請求の範囲を含む出願全体の検討後に明らかになるであろう。
【図面の簡単な説明】
【0009】
添付の図面を参照して後続する詳細な説明が読まれるとき、ここに開示された、本願発明概念のこれら及び他の特徴、態様及び利点はより理解される。
図1図1は、プロセッサスレッドに割り込みを割り当てるプロセッサユニットの例を示す概略図である。
図2図2は、図1のプロセッサユニットの実施形態を示す概略図である。
図3図3は、図1のプロセッサユニットの第2実施形態を示す概略図である。
図4図4は、プロセッサスレッドに割り込みを割り当てる典型的な処理を示すフローチャートである。
図5図5は、プロセッサユニットの実施形態を含み得るポータブル通信デバイスの例を示す概略図である。
図6図6は、プロセッサユニットの実施形態を含み得る携帯電話の例を示す概略図である。
図7図7は、プロセッサユニットの実施形態を含み得る無線インターネットプロトコル電話の例を示す概略図である。
図8図8は、プロセッサユニットの実施形態を含み得るポータブルデジタルアシスタントの例を示す概略図である。
図9図9は、プロセッサユニットの実施形態を含み得るオーディオファイルプレーヤの例を示す概略図である。
【発明を実施するための形態】
【0010】
記載の全体にわたって、説明のために、多くの特定の詳細は、ここに開示された発明概念の詳細な理解を提供するために示される。しかしながら、当業者に、ここに開示された発明概念が、これら特定の詳細の一部なしに実行され得ることは明らかであろう。他の事例では、ここに開示された発明概念の基礎をなす原理を不明瞭にしないようにするために、周知の(well-known)構造及びデバイスはブロック図の形式で示される。
【0011】
ここに開示された発明概念の実施形態は、スレッド優先度に基づいて、スレッドに割り込みを割り当てることができるマルチスレッドプロセッサに関する。スレッドの優先度は、スレッドがタスクを実行しているか否か、及び/又は実行しているタスクの優先度に基づくことができる。いくつかの実施形態では、各タスクの優先度は、ソフトウェアによって生成され、マルチスレッドプロセッサの内のプロセッサユニットによって受け取られる。スレッドがタスクを実行しているとき、スレッドの優先度は、それが実行しているタスクに一致することができる。スレッドが待ち状態にある(つまり、タスクを実行していない)とき、その優先度は、可能な限り低い優先度に対応し得る。いくつかの実施形態では、“1”及び“0”のような2つの優先度は、“1”がスレッドがタスクを実行していることを示すために、又は“0”が待ち状態であることを示すために用いられ、割り込みは、待ち状態及び“0”に関連付けられたスレッドへの割り当てのように、優先度に基づいて割り当てられる。
【0012】
タスクは、互いに関連する命令シーケンスを含むことができる。プロセッサスレッドは、タスクに関連する命令の各々を処理することによって、タスクを実行することができる。マルチスレッドプロセッサは、あるスレッド上であるタスクに関連する命令シーケンスを、別のスレッド上で別のタスクに関連する命令シーケンスを処理することによって、同時に2以上のタスクを実行し得る。
【0013】
マルチスレッドプロセッサのプロセッサユニットは、割り込みを受け取り、スレッドの優先度に基づいて割り込みを供給するためのスレッドを決定することができる。例えば、プロセッサユニットは、待ち状態にあるスレッドを識別することができ、また、マルチスレッドプロセッサ内の全てのスレッドがタスクを実行している場合には、最も低い優先度を有するスレッドを識別することができる。プロセッサユニットは、識別されたスレッドに割り込みを割り当てることができる。
【0014】
割り込みは、デバイス又はシステムソフトウェアから受け取られた、割り込みハンドラのようなスケジューリングされていないイベントに関連する通知であり得る。例えば、割り込みハンドラは、スレッドによって処理される命令シーケンスを含む、スケジューリングされていないタスクであり得る。いくつかの実施形態では、割り込みは優先度を含む。プロセッサユニットは、スレッドの優先度及び割り込みの優先度に基づいて、実行中のタスクを中断するか否かを判定することができる。例えば、プロセッサユニットは、割り込みの優先度がスレッドの優先度よりも高いか否かを判定することができる。割り込みの優先度がスレッドの優先度より高い場合、最も低い優先度を有するスレッドを中断することができ、割り込みはそのスレッドに供給されることができる。割り込みの優先度がスレッドより低い場合、スレッドがその現在のタスクの実行を完了するまで、そうでなければ割り込みよりも高い優先度を有するタスクが実行されるまで、割り込みは待ち行列に入れられる。スレッドの優先度に基づいて割り込みを割り当てることによって、あるプロセッサユニットの実施形態は、割り込み処理によるレイテンシーのようなオーバヘッドを減らし、且つ/又は高優先度のタスクがより早く実行されることを可能にすることができる。
【0015】
いくつかの実施形態によるマルチスレッドプロセッサは、タスクの実行中にデータにアクセスするために、処理システムのさまざまなコンポーネントを伴って実装される可能性がある。図1は、割り込みハンドラ101に関連付けられた割り込みを、プロセッサスレッドに割り当てるためのプロセッサユニット102を含むマルチスレッドプロセッサの一実施形態の実装のブロック図を示す。いくつかの実施形態では、プロセッサユニット102は、タスクキュー内その他のタスクのような、各々がプロセッサスレッドによって実行される命令シーケンスを含む実行可能なタスク104を含む。タスクに関連する命令は、スレッドと、レジスタ又は関連するスレッドの優先度を格納する各スレッドに関連する他の一時記憶コンポーネントとを含む実行モジュール106内で実行することができる。実行モジュール106は、限られた数のスレッドのような、あらゆる数のスレッドを含むことができる。各スレッドは、タスクに関連する命令シーケンスの実行によるように、タスクを実行することができる。プロセッサユニット102は、割り込みを供給するための、そうでなければ、割り込み100とそれらに関連する割り込みハンドラ101との割り当てを決定するためのスレッドを決定することができる割り込みモジュール108を含むこともできる。
【0016】
各タスクには、オペレーティングシステムによって割り当てられる優先度のような優先度が関連付けられる。プロセッサユニット102、又はオペレーティングシステムのようなソフトウェアは、いつスレッド上でタスクを実行するかを決定するために優先度を用いることができる。いくつかの実施形態では、いくつかのタスクは同時に受け取られ、タスクの優先度に基づいて、限られた数のスレッドに供給される。高い優先度に関連付けられたタスクは、低い優先度に関連付けられたタスクの前に実行されることができる。
【0017】
プロセッサユニット102は、メモリ管理ユニット110と、そのタスクの実行においてプロセッサユニット102を支援するリソース112に結合することができる。実行中、プロセッサユニット102は、メモリ管理ユニット110を介してリソース112にアクセスし得る。例えば、プロセッサユニット102は、リソース112からのデータ、命令、オペランド、又は他の情報に関する要求を供給することができる。メモリ管理ユニット110は、プロセッサユニット102によって探索された情報がある記憶位置の物理アドレスを提供するために、変換索引(lookaside)バッファ又は他のコンポーネントを使用することによるように、リソース112へのアクセスを管理することができる。
【0018】
リソース112その他のようなシステムデバイスからの割り込み100は、受け取ることができ、それらが関連する割り込みハンドラ101はプロセッサユニット102によって実行される。割り込みモジュール108は、相対的に低い優先度のスレッドを停止すること、又は割り込みを実行するために待ち状態のスレッドを識別することによるように、実行モジュール106内のスレッドの優先度に基づいて割り込み100に割り当てるように構成される。
【0019】
プロセッサユニット102の実施形態は、待ち状態のスレッドに割り込みを割り当て、且つ/又はスレッド及び実行待ちのタスクの優先度に基づいて割り込みを割り当てるコンポーネントを含む、スレッドに割り込みを割り当てるためのさまざまなコンポーネントを含むことができる。図2及び図3は、割り込みを割り当てるように構成されたプロセッサユニットの実装の実施形態を示す。図2は、スケーリングされたスレッド優先度を使用した、待ち状態のスレッドへの割り込みの割り当ての例を示す。図3は、二択の優先度に基づくスレッドへの割り込みの割り当ての例を示す。
【0020】
図2内のプロセッサユニット102は、スレッド202を備える実行モジュールを含むマルチスレッドプロセッサである。説明のため、スレッド202は6つのスレッドA−Fを含む。あらゆる数のスレッドを使用することができる。実行モジュールは、スレッド202それぞれの優先度を格納するスレッドレジスタ204A−Fも含む。各スレッドレジスタは、1つのスレッドに関連付けられる。例えば、スレッドレジスタ204Aは、スレッド202Aに対応する。スレッドがタスクを実行しているとき、タスクの優先度に対応する優先度は、スレッドに関連するレジスタに格納される。スレッドがタスクを実行することを完了するか、そうでなければ停止するとき、関連するレジスタ内の優先度は“null”に変更される。“null”の優先度は、可能な限り低い優先度に相当し得る。スレッドが実行する別のタスクを受け取るとき、タスクの優先度に対応する優先度は関連するレジスタに格納される。
【0021】
いくつかの実施形態では、レジスタは、優先度に関する値を識別する1以上のビットを格納する。あらゆる優先度のスケールは、相対的なスレッドの優先度を表すために用いることができる。図2に示される実施形態では、“1”と“99”との間の数は、より低い数がより高い優先度を表して使用される。例えば、スレッドレジスタ204Aは、スレッド202Aの相対的な優先度を表す“5”の優先度を含む。スレッドレジスタ204Bは、スレッド202Bの相対的な優先度を表し、スレッド202Aがスレッド202Bより高い優先度を有することを示す“25”の優先度を含む。スレッドレジスタ204Cは、スレッド202Cが現在タスクを実行しておらず、待ち状態にあることを示す“null”の優先度を含む。スレッド優先度値を示すための数値及び“null”を含むスケールは、典型的な目的のために用いられ、相対的なスレッドの優先度と待ち状態のスレッドとのあらゆる識別に用いられる。
【0022】
実行モジュールは、スレッドレジスタ204につながれる優先度エンコーダ(priority encoder)206も含む。優先度エンコーダ206は、スレッドレジスタ204内の優先度を受け取り、最も低い優先度を含むレジスタを決定するように構成することができる。示された実施形態では、優先度エンコーダ206は、“null”が最も低い優先度であるので、それを含むレジスタに関連するスレッドを決定する。例えば、スレッドレジスタ204はそれぞれ、優先度エンコーダ206に、スレッドレジスタに関連するスレッドの優先度及び識別を供給することができる。図2に示される実施形態では、スレッドレジスタ204Cは“null”を含み、優先度エンコーダ206によって最も低い優先度のスレッドであると識別される。
【0023】
優先度エンコーダ206によって識別されたスレッドは、優先度エンコーダ206から受け取られた優先度情報に基づいて、割り込みを割り当てるように構成された割り込みモジュール208に提供される。いくつかの実施形態では、優先度エンコーダ206は、割り込みモジュール208に優先度情報を継続的に供給する。他の実施形態では、優先度エンコーダ206は、割り込みモジュール208から優先度情報の要求を受け取った後に、割り込みモジュール208に優先度情報を供給する。
【0024】
割り込みモジュール206は、割り込みを受け取り、それをスレッド202のうちの1つに割り当てることができる。いくつかの実施形態では、割り込みモジュール206は、割り込みの優先度を決定し、割り込みを割り当てるために優先度エンコーダ206から受け取ったスレッド優先度に加えて、割り込み優先度を使用する。他の実施形態では、割り込みモジュール206は割り込みの優先度を決定せずに、割り込みを割り当てる。割り込みモジュール206は、待ち状態のスレッドのような最も低い優先度を有するスレッドを識別することにより、割り込みを割り当て、識別されたスレッドに割り込みを供給することができる。例えば、スレッド202Cが、待ち状態であるような最も低い優先度スレッドであるので、割り込みモジュール208はスレッド202Cを識別し、割り込みをスレッド202Cに供給する。スレッド202Cは、高い優先度のスレッドのような他のスレッドの実行を中断させることなく、割り込みを実行する。
【0025】
全てのスレッド202がタスクを実行している場合、割り込みモジュール208はさらに、低い優先度のスレッドに割り込みを供給するように構成することができる。低い優先度のスレッドは、タスクの実行を中断し、割り込みに関連する割り込みハンドラの命令を実行することにより、割り込みの処理を開始することができる。例えば、スレッド202Cが“17”の優先度を有するタスクを実行している場合、優先度エンコーダ206は、最も低い優先度を有するものとしてスレッド202Eを識別し、割り込みモジュール208に202Eの識別を提供する。割り込みモジュール208は、スレッド202E内で実行中のタスクを中断し、実行のための割り込みを受け取ることができる。例えば、スレッド202Eは、タスクに関連する命令シーケンスの内の命令の実行を中断し、割り込みに関連する割り込みハンドラの命令の実行を開始し得る。スレッド202Eは、より高い優先度のスレッドを中断させずに、割り込みを実行する。スレッド202E内で形式的に実行するタスクは、スレッドが実行を完了し、別のタスクを実行する準備ができるまで、止められ得る。
【0026】
いくつかの実施形態では、割り込みは、スレッドが待ち状態であるかタスクを実行中であるかを示すような、より単純なスレッド優先度に基づいて割り当てられることができる。図3は、スレッド302A−Fと、スレッド302A−Fに対応するスレッドレジスタ304A−Fとを備える実行モジュールを含むプロセッサユニット102の実施形態を示す。スレッドレジスタ304A−Fはそれぞれ、各スレッドの優先度を示すための“1”又は“0”を含む。“1”は、関連するスレッドが現在タスクを実行していることを示すことができ、“0”は、関連するスレッドが待ち状態であることを示すことができる。例えば、スレッドは304A、304C、304D、及び304Fはそれぞれ、関連するスレッド302A、302C、302D、及び302Fがタスクを実行していることを示す “1”を含む。スレッドレジスタ304B及び304Eは、関連するスレッド302B及び302Eがタスクを実行しておらず、待ち状態であることを示す“0”を含む。
【0027】
スレッドレジスタ304A−Fは、割り込みモジュール308へのスレッド優先度を識別する優先度エンコーダ306につながれる。いくつかの実施形態では、優先度エンコーダ306は、スレッドレジスタ304A−Fからの優先度に基づいて、割り込みモジュール308への待ち状態の1以上のスレッドを識別するように構成される。図3に示される実施形態では、例えば、優先度エンコーダ306は、割り込みモジュール308へのスレッド302B及び302Eを識別し得る。割り込みモジュール308は、割り込みを中止し受諾するために、現在タスクを処理しているスレッドに対する要求なしにそれを処理することができる、識別されたスレッド302B又は302Eの内の1つに割り込みを供給することができる。
【0028】
いくつかの実施形態では、全てのスレッド302A−Fがタスクを処理していて、スレッドレジスタ304A−Fの各々は、関連するスレッドそれぞれが現在タスクを処理していることを示す“1”を含む可能性がある。優先度エンコーダ306は、全てのスレッド302A−Fがタスクを処理しているという指示を、割り込みモジュール308に供給するように構成することができる。割り込みモジュール308は、スレッド302A−Fの内の1つに、割り込みとその割り込みハンドラを供給することができる。スレッドは、そのタスクの処理を中断し、その割り込みハンドラに関連する命令を実行することにより割り込みの処理を開始できる。
【0029】
上述されたように、さまざまな方法は、割り込みをマルチスレッドプロセッサ内に割り当てるために実装することができる。割り当て方法のある実施形態は、スレッド優先度、割り込み優先度、及び/又はタスク待ち行列内のタスクの優先度に基づいて割り込みを割り当てることができる。図4は、スレッド優先度と割り込み優先度に基づいて割り込みを割り当てる一実施形態による典型的な割り込み割り当て方法を示す。
【0030】
プロセッサユニットが実行のためのタスク及び各タスクの優先度を受け取るとき、方法はブロック402で開始され得る。タスクは、ソフトウェアプログラム又は他のシステムアプリケーションから受け取られ得、マルチスレッドプロセッサ内のスレッドによって実行される命令シーケンスを含み得る。各タスクの優先度は、オペレーティングシステムのようなシステムソフトウェアによって決定され得る。いくつかの実施形態では、プロセッサユニットは、タスクが受け取られるとき、各タスクの優先度を決定するように構成されたロジックを含む。
【0031】
ブロック404では、各タスクはスレッド上で実行される。タスクの数が、タスクの実行に利用可能なスレッドの数を超過する場合。いくつかの実施形態では、スケジューラは、各タスクの優先度を識別し、実行の最初に、スレッドに最も高い優先度のタスクを供給する。
【0032】
ブロック406では、プロセッサユニットは、タスクの優先度に基づいて各スレッドの優先度を識別する。いくつかの実施形態では、プロセッサユニットはスレッドを監視し、各スレッド上で実行するタスクの優先度を識別する。各スレッドの優先度は、スレッド上で実行するタスクの優先度に対応することがある。プロセッサユニットは、待ち状態であるスレッドの優先度を識別することもできる。プロセッサユニットは、スレッドに関連するレジスタに各スレッドのための優先度を格納できる。
【0033】
ブロック408では、プロセッサユニットは、システムデバイス又はソフトウェアアプリケーションから割り込みを受け取り、その優先度を決定する。その割り込みは、スケジューリングされていないタスクである割り込みハンドラに関連し得る。いくつかの実施形態では、割り込み優先度は割り込みで受け取られる。例えば、オペレーティングシステムのようなシステムソフトウェアは、割り込みが生成されるときに、割り込みに優先度を割り当てる。他の実施形態では、プロセッサユニットは、メモリ又は他のシステムコンポーネントにアクセスすることによって、割り込みの優先度を読み出す。
【0034】
ブロック410では、プロセッサユニット内の割り込みモジュールは、割り込み優先度が少なくとも1つのスレッドよりも高いか否かを判定する。いくつかの実施形態では、割り込みモジュールは、スレッドの各々の優先度を受け取り、それらを割り込み優先度と比較する。割り込み優先度が少なくとも1つのスレッドより高い場合、ブロック412では、最も低い優先度を有するスレッドが識別され、そのタスクを処理することが中断され、割り込みに関連する割り込みハンドラが最も低い優先度を有するスレッドに供給される。割り込み優先度が少なくとも1つのスレッドよりも高くない場合、ブロック414で、割り込みはキューに格納される。方法は、割り込み優先度が少なくとも1つのスレッドよりも高いかどうかを判定するためにブロック410に戻り、割り込み優先度が少なくとも1つのスレッドより高いときまで継続する。いくつかの実施形態では、割り込みはキューに格納され、スレッドが利用可能であり、且つ割り込みがキュー内の最も高い優先度の割り込み及び/又はタスクであるとき、スレッドに供給される。
【0035】
上述の特徴を含む例のデバイス
プロセッサスレッドに割り込みを割り当てることができるプロセッサユニットは、デジタル信号プロセッサのような任意のタイプのプロセッサ内に含まれ得る。図5から図9の概略図は、マルチスレッドプロセッサのスレッドに割り込みを割り当てるために、プロセッサユニットを組み込み得る例のデバイスを示す。
【0036】
図5は、ポータブル通信デバイス500の典型的な実施形態を示す図である。図5の概略図に示されるように、ポータブル通信デバイスはデジタル信号プロセッサ(DSP)504を含む、オンチップシステム502を含む。図5の概略図は、さらに、DSP504及びディスプレイ508につながれるディスプレイコントローラ506を示す。さらに、入力デバイス510はDSP504につながれる。図のように、メモリ512はDSP504につながれる。また、コーダ/デコーダ(CODEC)514は、DSP504につながれ得る。スピーカー516及びマイクロホン518は、CODEC514につながれ得る。
【0037】
図5の概略図は、デジタル信号プロセッサ504につながれた無線コントローラ520と無線アンテナ522とをさらに示す。特定の実施形態では、電源524はオンチップシステム502につながれる。ディスプレイ508、入力デバイス510、スピーカー516、マイクロホン518、無線アンテナ522、及び電源524は、オンチップシステム502の外側にあり得る。しかしながら、各々は、オンチップシステム502のコンポーネントにつなぐことができる。
【0038】
特定の実施形態では、DSP504は、図2又は図3を参照して記述されるように、スレッドに割り込みを割り当て、割り込み処理によるレイテンシーのようなオーバヘッドを減らし、且つ/又は高い優先度のタスクがより早く実行されることを可能にすることができるプロセッサユニット562を含む。例えば、DSP504は、各スレッドが、そのスレッドが処理しているタスクの優先度に基づいて優先度を割り当てられ得る、マルチスレッドプロセッサであり得る。プロセッサユニット562は、割り込みを受け取り、スレッドそれぞれの優先度に基づいて、タスクを処理していないスレッド又は低い優先度のスレッドのような、処理するために割り込みを送るスレッドを決定することができる。
【0039】
図6は、携帯電話600の典型的な実施形態を示す図である。図のように、携帯電話600は、相互に連結されるデジタルベースバンドプロセッサ604とアナログベースバンドプロセッサ606とを含む、オンチップシステム602を含む。特定の実施形態では、デジタルベースバンドプロセッサ604は、デジタル信号プロセッサである。図6の概略図で示されるように、ディスプレイコントローラ608とタッチスクリーンコントローラ610とは、デジタルベースバンドプロセッサ604につながれる。同様に、オンチップシステム602の外部のタッチスクリーンディスプレイ612は、ディスプレイコントローラ608とタッチスクリーンコントローラ610とにつながれる。
【0040】
図6の概略図は、ビデオエンコーダ614、例えば、位相交代ライン(PAL)エンコーダ、順次式カラーメモリ(SECAM)エンコーダ、又は全国テレビ方式委員会(NTSC)エンコーダが、デジタルベースバンドプロセッサ604につながれることをさらに示す。さらに、ビデオ増幅器616は、ビデオエンコーダ614とタッチスクリーンディスプレイ612とにつながれる。また、ビデオポート618はビデオ増幅器616につながれる。ユニバーサルシリアルバス(USB)コントローラ620は、デジタルベースバンドプロセッサ604につながれる。さらに、USBポート622はUSBコントローラ620につながれる。メモリ624及び加入者識別モジュール(SIM)カード626も、デジタルベースバンドプロセッサ604につながれ得る。さらに、図6の概略図で示されるように、デジタルカメラ628はデジタルベースバンドプロセッサ604につながれ得る。典型的な実施形態では、デジタルカメラ628は、電荷結合素子(CCD)カメラ又は相補型金属酸化膜半導体(CMOS)カメラである。
【0041】
さらに図6の概略図で示すように、ステレオオーディオCODEC630は、アナログベースバンドプロセッサ606につながれ得る。さらに、オーディオ増幅器632は、ステレオオーディオCODEC630につながれ得る。典型的な実施形態では、第1ステレオスピーカー634及び第2ステレオスピーカー636は、オーディオ増幅器632につながれる。マイクホン増幅器638も、ステレオオーディオCODEC630につながれ得る。さらに、マイクロホン640はマイクホン増幅器638につながれ得る。特定の実施形態では、周波数変調(FM)ラジオチューナ642はステレオオーディオCODEC630につながれ得る。FMアンテナ644は、FMラジオチューナ642につなぐことができる。さらに、ステレオヘッドホン646は、ステレオオーディオCODEC630につながれ得る。
【0042】
図6の概略図は、アナログベースバンドプロセッサ606につながれ得る無線周波数(RF)トランシーバ648をさらに示す。RFスイッチ650は、RFトランシーバ648及びRFアンテナ652につながれ得る。キーパッド654は、アナログベースバンドプロセッサ606につながれ得る。さらに、マイクロホンを備えるモノヘッドセット656は、アナログベースバンドプロセッサ606につながれ得る。さらに、バイブレータデバイス658は、アナログベースバンドプロセッサ606につながれ得る。図6の概略図は、さらにオンチップシステム602につながれ得る電源660を示す。特定の実施形態では、電源660は、携帯電話600のさまざまなコンポーネントに電力を供給する直流(DC)電源である。さらに、特定の実施形態では、電源は、再充電可能なDCバッテリー、又は交流(AC)電源につながれる交流・直流変換から導かれるDC電源である。
【0043】
図6の概略図のように、タッチスクリーンディスプレイ612、ビデオポート618、USBポート622、カメラ628、第1ステレオスピーカー634、第2ステレオスピーカー636、マイクロホン640、FMアンテナ644、ステレオヘッドホン646、RFスイッチ650、RFアンテナ652、キーパッド654、モノヘッドセット656、バイブレータ658、及び電源660は、オンチップシステム602の外側にあり得る。特定の実施形態では、デジタルベースバンドプロセッサ604は、図2又は図3を参照して記載されるように、割り込みをスレッドに割り当て、割り込み処理によるレイテンシーのようなオーバヘッドを減らし、且つ/又は高い優先度のタスクがより早く実行されることを可能にすることができるプロセッサユニット662を含み得る。例えば、DSP604は、スレッドが処理しているタスクの優先度に基づいて、各スレッドに優先度が割り当てられるマルチスレッドプロセッサであり得る。プロセッサユニット662は、割り込みを受け取り、各スレッドの優先度に基づいて、タスクを処理していないスレッド又は低い優先度のスレッドのような、処理するために割り込みを送るべきスレッドを決定することができる。
【0044】
図7は、無線インターネットプロトコル(IP)電話700の典型的な実施形態を示す図である。図のように、無線IP電話700は、デジタル信号プロセッサ(DSP)704を含む、オンチップシステム702を含む。ディスプレイコントローラ706は、DSP704につながれ得、ディスプレイ708は、ディスプレイコントローラ706につながれる。典型的な実施形態では、ディスプレイ708は液晶ディスプレイ(LCD)である。図7は、キーパッド710がDSP704につながれ得ることをさらに示す。
【0045】
フラッシュメモリ712はDSP704につながれ得る。シンクロナスダイナミックアクセスメモリ(SDRAM)714、スタティックランダムアクセスメモリ(SRAM)716、及び電気的消去可能なリードオンリーメモリ(EEPROM)718も、DSP704につながれ得る。図7の概略図は、さらに、発光ダイオード(LED)720がDSP704につながれ得ることを示す。さらに、特定の実施形態では、音声CODEC722は、DSP704につながれ得る。増幅器724は音声CODEC722につながれ得、モノスピーカー726は増幅器724につながれ得る。図7の概略図は、音声CODEC722につながれたモノヘッドセット728をさらに示す。特定の実施形態では、モノヘッドセット728はマイクロホンを含む。
【0046】
無線ローカルエリアネットワーク(WLAN)ベースバンドプロセッサ730は、DSP704につながれ得る。RFトランシーバ732はWLANベースバンドプロセッサ730につながれ得、RFアンテナ734はRFトランシーバ732につながれ得る。特定の実施形態では、Bluetooth(登録商標)コントローラ736もDSP704につながれ得、Bluetoothアンテナ738はコントローラ736につながれ得る。図7の概略図は、さらに、USBポート740もDSP704につながれる得ることを示す。さらに、電源742は、オンチップシステム702につながれ、無線IP電話700のさまざまなコンポーネントに電力を供給する。
【0047】
図7の概略図に示すように、ディスプレイ708、キーパッド710、LED720、モノスピーカー726、モノヘッドセット728、RFアンテナ734、Bluetoothアンテナ738、USBポート740、及び電源742は、オンチップシステム702の外側にあり、オンチップシステム702の1以上のコンポーネントにつながれ得る。特定の実施形態では、DSP704は、図2又は図3を参照して示すように、スレッドに割り込みを割り当て、割り込み処理によるレイテンシーのようなオーバヘッドを減らし、且つ/又は高い優先度のタスクがより早く実行されるようにすることができるプロセッサユニット762を含む。例えば、DSP704は、各スレッドに、そのスレッドが処理しているタスクの優先度に基づいて、優先度が割り当てられるマルチスレッドプロセッサであり得る。プロセッサユニット762は、割り込みを受け取り、各スレッドの優先度に基づいて、タスクを処理していないスレッド又は低い優先度のスレッドのような、処理するために割り込みを送るべきスレッドを決定することができる。
【0048】
図8は、ポータブルデジタルアシスタント(PDA)800の典型的な実施形態を示す図である。図のように、PDA800はデジタル信号プロセッサ(DSP)804を含む、オンチップシステム802を含む。タッチスクリーンコントローラ806とディスプレイコントローラ808とは、DSP804につながれる。さらに、タッチスクリーンディスプレイ810は、タッチスクリーンコントローラ806とディスプレイコントローラ808とにつながれる。図8の概略図は、さらにキーパッド812がDSP804につながれ得ることを示す。
【0049】
特定の実施形態では、ステレオオーディオCODEC826は、DSP804につながれ得る。第1ステレオ増幅器828は、ステレオオーディオCODEC826につながれ得、第1ステレオスピーカー830は第1ステレオ増幅器828につながれ得る。さらに、マイクホン増幅器832はステレオオーディオCODEC826につながれ得、マイクロホン834はマイクホン増幅器832につながれ得る。図8の概略図は、さらに、ステレオオーディオCODEC826につながれ得る第2ステレオ増幅器836と、第2ステレオ増幅器836につながれ得る第2ステレオスピーカー838とを示す。特定の実施形態では、ステレオヘッドホン840もステレオオーディオCODEC826につながれ得る。
【0050】
図8の概略図は、DSP804につながれ得る802.11コントローラ842と、802.11コントローラ842につながれ得る802.11アンテナ844とを示す。さらに、Bluetoothコントローラ846はDSP804につながれ得、Bluetoothアンテナ848はBluetoothコントローラ846につながれ得る。USBコントローラ850は、DSP804につながれ得、USBポート852はUSBコントローラ850につながれ得る。さらに、スマートカード854、例えばマルチメディアカード(MMC)、セキュアデジタルカード(SD)は、DSP804につながれ得る。さらに、電源856は、オンチップシステム802につながれ得、PDA800のさまざまなコンポーネントに電力を供給し得る。
【0051】
図8の概略図に示すように、ディスプレイ810、キーパッド812、IrDAポート822、デジタルカメラ824、第1ステレオスピーカー830、マイクロホン834、第2ステレオスピーカー838、ステレオヘッドホン840、802.11アンテナ844、Bluetoothアンテナ848、USBポート852、及び電源856は、オンチップシステム802の外側にあるかもしれないし、オンチップシステム802上の1以上のコンポーネントにつながれるかもしれない。特定の実施形態では、DSP804は、図2又は図3を参照して示すように、スレッドに割り込みを割り当て、割り込み処理によるレイテンシーのようなオーバヘッドを減らし、且つ/又は高い優先度のタスクがより早く実行されることを可能にすることができるプロセッサユニット862を含む。例えば、DSP804は、各スレッドに、そのスレッドが処理しているタスクの優先度に基づいて優先度が割り当てられる、マルチスレッドプロセッサであり得る。プロセッサユニット862は、割り込みを受け取り、各スレッドの優先度に基づいて、タスクを処理していないスレッド又は低い優先度のスレッドのような、処理するために割り込みを送るべきスレッドを決定することができる。
【0052】
図9は、オーディオファイルプレーヤ(例えば、MP3プレーヤ)900の典型的な実施形態を示す図である。図のように、オーディオファイルプレーヤ900は、デジタル信号プロセッサ(DSP)904を含むオンチップシステム902を含む。ディスプレイコントローラ906はDSP904につながれ得、ディスプレイ908はディスプレイコントローラ906につながれる。典型的な実施形態では、ディスプレイ908は液晶ディスプレイ(LCD)である。キーパッド910はDSP904につながれ得る。
【0053】
図9の概略図でさらに描かれるように、フラッシュメモリ912とリードオンリーメモリ(ROM)914とは、DSP904につながれ得る。さらに、特定の実施形態では、オーディオCODEC916はDSP904につながれ得る。増幅器918はオーディオCODEC916につながれ得、モノスピーカー920は増幅器918につながれ得る。図9の概略図は、マイクロホン入力922とステレオ入力924とがオーディオCODEC916につながれ得ることもさらに示す。特定の実施形態では、ステレオヘッドホン926もオーディオCODEC916につながれ得る。
【0054】
USBポート928とスマートカード930とは、DSP904につながれ得る。さらに、電源932は、オンチップシステム902につながれ得、オーディオファイルプレーヤ900のさまざまなコンポーネントに電力を供給し得る。
【0055】
図9の概略図に示されるように、ディスプレイ908、キーパッド910、モノスピーカー920、マイクロホン入力922、ステレオ入力924、ステレオヘッドホン926、USBポート928、及び電源932は、オンチップシステム902の外部にあり、オンチップシステム902上の1以上のコンポーネントにつながれる。特定の実施形態では、DSP904は、図2又は図3を参照して記述されるように、スレッドに割り込みを割り当て、割り込み処理によるレイテンシーのようなオーバヘッドを減らし、且つ/又は高い優先度のタスクがより早く実行されることを可能にすることができるプロセッサユニット962を含む。例えば、DSP904は、各スレッドに、そのスレッドが処理しているタスクの優先度に基づいて優先度が割り当てられる、マルチスレッドプロセッサであり得る。プロセッサユニット962は、割り込みを受け取り、各スレッドの優先度に基づいて、タスクを処理していないスレッド又は低い優先度のスレッドのような、処理するために割り込みを送るべきスレッドを決定することができる。
【0056】
総則
ここに開示された発明概念の実施形態の上記の記述は、図解と説明の目的でのみ表されており、完全であること、又はここに開示された発明概念を開示された精細な形態に限定することを意図しない。ここに開示された発明概念の精神及び範囲から逸脱することなく、多数の変更及び適用は当業者に明らかである。
図1
図2
図3
図4
図5
図6
図7
図8
図9