複数の割り込みソースは、ソースの特性及びソースから受信した複数の割り込みを処理するための要求に従って分類されることができる。例えば、いくつかの割り込み(本明細書における「ハード割り込み」又は「クリティカルな割り込み」、例えば、セルラー伝送規格に関連する、例えば、周期的な割り込み)は、処理する前に、意図的に遅延させられることなくサービス提供される。他の割り込み(本明細書における「ソフト割り込み」又は「非クリティカルな割り込み」)は、時間的制約が少なく、例えば、周辺デバイス/アプリケーション等の割り込みソースの性質に従って割り当てられる時間遅延で、意図的に遅延させることができる。
実施形態において、プログラム可能な遅延値をイベントごと又は複数のイベントのグループごとに確立することができる。複数の割り込みは、プロセッサがインアクティブ(「スリープ」)状態からアクティブ化(「アウェイク化」)されたときに、プロセッサが複数の割り込みを処理(例えば、「バッチ処理」)することができるように、グループ化されることができる。複数の割り込みのバッチ処理は、プロセッサが特定の時間フレームで経験するアクティブ/インアクティブサイクルの総数を低減でき、プロセッサの全体的な消費電力を低くできる。
複数の実施形態において、プログラムされた遅延タイマー値は、例えば、プロセッサ及び/又はシステムオンチップ(SoC)が節電(インアクティブ)状態にあるときに、例えば、アドバンスドコンピューティングアンドパワーインタフェース(ACPI)パワーダウン状態C1〜C6のうちの1つにあるときに、(例えば、割り込みに関連するハンドラの実行を利用した)割り込み処理を遅延させるべく、オペレーティングシステムで利用可能である。様々なタイプの割り込みに対する複数のプログラムされた遅延値は、プロセッサ又はSoCの各インアクティブからアクティブへの遷移に起因して大きな電力消費を引き起こす可能性がある、各割り込みの個別処理の代わりに割り込み処理のバッチ処理を可能とする。実施形態において、割り込み処理は、各割り込みに割り当てられる対応する遅延時間に動的に基づいて複数のイベントを自動的にグループ化する。
図1は、本発明の実施形態に係るシステム100のブロック図である。システム100は、1又は複数のコア1020−102N、割込コントローラ104及び割込遅延コントローラ106を含むプロセッサ110と、プロセッサ110に連結される複数の周辺デバイス1200−120Mと、プロセッサ110に連結されるダイナミックランダムアクセスメモリ(DRAM)130とを含む。
動作中、プロセッサ110は、周辺デバイス1200−120Mのうちの1又は複数から、複数の割り込みメッセージ(また、本明細書において「複数の割り込み」)を受信してよい。複数の割り込み(「ハード割り込み」)の1又は複数は、割り込みが、例えば、意図的に遅延させられずに、受信したときに処理されるための対応するハードリアルタイム割り込みイベントに関連してよい。例えば、ハード割り込みは、セルラー規格に関連する周期的なイベントに関連してよく、ハード割り込みは、例えば、意図的に時間遅延させられることなく、受信されると、プロセッサ110により処理される。
他の割り込みは、周期的(例えば、同期)又は非周期的(例えば、非同期)であってよいが、複数のハードリアルタイム割り込みイベントに関連しておらず、従って、そのような複数の割り込み(「ソフト割り込み」)の処理は、遅延させられてよい、例えば、意図的に時間を遅延させられてよい。例えば、複数の非同期の割り込みは、センサ入力、タッチスクリーン、周期的に受信され得るデータ等のような複数の非同期イベントに関連してよい。
複数のソフトイベントを作成する(例えば、複数のソフト割り込みを生成する)周辺デバイス1200−120Mごとに、各ソフト割り込みを処理する対応する時間遅延が割り当てられてよい。発信元の周辺デバイスから受信された複数のソフト割り込みを処理する時間遅延は、発信元の周辺デバイスの特性に基づいて判断されてよく、システム100の使用の前に判断されてよい。例えば、複数のソフト割り込みに対する許容可能な時間遅延の判断において考慮されるべき1つの要因は、関連するイベント発生の最悪ケースの周期(worst case frequency)であってよい。例えば、最悪ケース推定において、イベントが100ミリ秒毎に発生する場合、関連する割り込みを処理する100μsの遅延は、性能に対する影響を無視できる。時間遅延は、プロセッサ110による1又は複数の割り込みの受信前に、提供されてよい(例えば、プロセッサ110内に格納されてよい)。
周辺デバイス1200−120Mの1又は複数から割込遅延コントローラ106により受信された複数のハード割り込みは、意図的に時間遅延させられることなく処理されるべく、割込コントローラ104に渡されてよい。ソフト割り込みがプロセッサ110により受信されたときに、割込遅延コントローラ106は、ソフト割り込みを提供した周辺デバイス120に基づいて、対応する時間遅延(例えば、割込遅延コントローラ106内に格納されている)を選択してよい。受信したソフト割り込みごとに、割込遅延コントローラは、例えば、対応するタイマーを用いて、対応する時間遅延のカウントを開始してよく、対応するタイマーが時間遅延の終了に至ったときに、ソフト割り込みは、割込コントローラ104へとリリースされてよく、ソフト割り込みは、コア1020−102Nのうちの1つにより処理されるべく、割込コントローラ104により振り分けられてよい。
実施形態において、ハード割り込みが、即時処理のためにプロセッサ110により受信されたときに、割込遅延コントローラ106は、いずれのソフト割り込みがペンディング中であるか否かを判断してよく、例えば、関連するタイマーが、ソフト割り込みに対する時間遅延をカウントすることを開始しており、かつ、そのカウントを完了していないかを判断してよい。割込遅延コントローラ106は、コア1020−102Nのうちの1つによる処理のために、例えば、関連するタイマーのカウントを完了することなく、1又は複数のペンディング中のソフト割り込みを割込コントローラ104へとリリースしてよい。コアによる処理のためにリリースされる複数の割り込みは、コアがアクティブである間、例えば、コアが、リリースされた全てのソフト割り込みの処理が完了するまでに、ハード割り込みが受信された時点からアクティブを維持している間、に処理される。
別の実施形態において、第1のソフト割り込みは、タイマーの満了に起因して、例えば、関連するタイマーが各時間遅延のそのカウントを完了したことに起因して、コア1020−102Nのうちの第1のコアにより処理される。割込遅延コントローラ106は、各時間遅延のそれぞれの完了前に第1のコアに処理させるために、他の1又は複数のペンディング中のソフト割り込みを割込コントローラ104へとリリースしてよい。第1のコアによる処理のためにリリースされる複数の割り込みは、バッチ処理され、例えば、第1のソフト割り込みの処理の結果として、第1のコアがアクティブである間に処理される。コアは、リリースされた複数の割り込みの処理が完了するまでアクティブを維持する。
上記で説明した複数の実施形態のそれぞれにおいて、特定の割り込みが、処理されるべく、割込コントローラに送信されるときに、割込遅延コントローラ106は、コアの単一アクティブ期間の間に処理されるべく、1又は複数のペンディング中の割り込みをリリースしてよい。従って、特定のコアは、処理される割り込みごとにインアクティブとアクティブ状態との間を変動しない。複数の割り込みのバッチ処理は、スラッシングを低減することができ、さもなければ「ウェイクアップ」電力コストに起因して費やされることになるプロセッサの消費電力を低減することができる。つまり、複数の割り込みをバッチ処理することにより、処理される複数の割り込みに対して、ウェイクアップの複数の過程から単一のウェイクアップ過程となって、コアを再アクティブ化するために費やされる電力は、低減され得る。
図2は、本発明の複数の実施形態に係る割込遅延コントローラ200のブロック図である。割込遅延コントローラ200は、時間遅延カウンタ2101−210Lと、時間遅延レジスタ2201−220Lと、割込検出論理224、カウンタ割当論理226、及びペンディング割込リリース論理228を含む割込遅延論理222とを含む。割込検出論理224、カウンタ割当論理226、及びペンディング割込リリース論理228を含む割込遅延論理222は、ソフトウェア、ハードウェア、ファームウェア又はこれらの組み合わせに実装されてよい。
動作中、複数の周辺デバイスは、割り込み2021−202jを生成してよい。いくつかの周辺デバイスから受信された複数の割り込みのいくつかは、例えば、意図的に遅延させられることなく処理される複数のハード割り込みであってよい。他の割り込みは、複数のソフト割り込みであってよく、処理の前に遅延させられてよい。
割込検出論理224は、受信される各ハード割り込みを検出してよく、処理のために特定のコアに出力されるべく、遅延させることなく割込コントローラ230に各ハード割り込みを送信してよい。
各カウンタ2101−210Lは、複数のソフト割り込みを発行する特定の周辺デバイスに対応する判断された時間遅延を格納する、関連する時間遅延レジスタ2101−210Lを有する。上記で説明されるように、特定の周辺デバイスに対する時間遅延は、(例えば、割込遅延コントローラ200の動作の前に、)関連する時間遅延レジスタ2101−210Lに格納されてよく、複数の要因(例えば、性能に対する影響)に依存してよい。カウンタ割当論理226は、特定の周辺デバイスから受信した各割り込みを当該特定の周辺デバイスに関連する時間遅延レジスタ220iに対応するカウンタ210iに割り当ててよい。例えば、第1の割り込みが第1の周辺デバイスから受信されたときに、第1の割り込みは、第1の周辺デバイスに関連する第1の時間遅延値に対する時間カウントを開始する第1のタイマー2101に対して、カウンタ割当論理226により割り当てられてよく、レジスタ2201に格納される(例えば、第1の時間遅延値からのカウントダウンする又は、第1の時間遅延値へのカウントアップする)。時間カウントが満了したときに、割り込みは、割込コントローラ230により判断された複数のコアのうちの選択されたコアによる処理のために、割込コントローラ230へとリリースされる。
割込検出論理224は、ハード割り込みの受信を検出してよく、意図的に遅延させることなく、受信したハード割り込みを割込コントローラ230に振り分けてよい。ハード割り込みを処理することは、ペンディング割込リリース論理228をトリガして、割り当て時間遅延の完了前に、例えば、時間遅延カウンタ210を介して意図的に遅延させられている、ペンディング中である1又は複数のソフト割り込みを割込コントローラ230へとリリースしてよい。
また、カウンタ210がその関連する時間遅延のカウントを完了する過程ごとに、対応する割り込みは、プロセッサの特定のコア(割込コントローラ230により判断される特定のコア)により処理されるべく、割込コントローラ230へとリリースされる。割り込みのリリースによって、ペンディング割込リリース論理228が1又は複数のペンディング中の割り込みを、特定のコアにより処理されるべく、割込コントローラ230へとリリースさせてよい。
図3Aを参照すると、本発明の一実施形態に係るプロセッサコア300のブロック図が示されている。図3Aに示されるように、プロセッサコア300は、複数段のパイプライン化されたアウトオブオーダプロセッサであってよい。
コア300は、本発明の複数の実施形態に係る割り込み遅延ユニット302を含んでよい。複数の割り込みは、様々な周辺デバイスから受信されてよく、割込検出論理304は、受信した割り込みがハード割り込みかソフト割り込みかを検出してよい。受信した割り込みがハード割り込みである場合、受信した割り込みは、フロントエンドユニット310に送信され、遅延させられることなく(例えば、意図的に時間遅延させられることを導入することなく)実行ユニット320により処理される。受信した割り込みがソフト割り込みである場合、割込検出論理304は、受信した割り込みに対して遅延カウンタ3071−307Lのうちの1つを割り当てるように、カウンタ割当論理306に指示してよい。割り当てられた遅延カウンタ307iは、判断された時間遅延Tiをカウントしてよく、ここで、Tiは、対応する時間遅延レジスタ3091−309Lに格納されており、割り込み遅延ユニット302は、対応する遅延カウンタ307iが各時間遅延Tiをカウントする間に受信したソフト割り込みが処理されることを遅延させてよい。
本発明の複数の実施形態によれば、別の割り込み(例えば、ハード割り込み又は遅延カウンタが満了した別のソフト割り込み)が処理されるときに、受信した(ソフト)割り込みがペンディング中である(例えば、各遅延カウンタ307iが満了するまで割り込み遅延ユニット302によりストールされている)場合、ペンディング割込リリース論理308は、その各遅延カウンタ307iの満了前、かつ、実行ユニット320がアクティブである間に処理するために、ペンディング中のソフト割り込みをリリースさせてよい。
何の割り込みも処理されておらず、かつ、何の命令も処理されていない場合、電力調整論理318は、消費電力の完全にアクティブなレベルからより低いレベルに消費電力を低減することを実行ユニット320に指示してよい。複数の割り込み及び/又は複数の命令が処理されるべくキューに並べられたときに、電力調整論理318は、電源を入れた状態を再開することを実行ユニット320に指示してよい。
図3Aに示されるように、コア300は、フロントエンドユニット310を含み、フロントエンドユニット310は、実行される複数の命令をフェッチし、プロセッサにおける後の使用のためにそれらの命令を準備するために使用されてよい。例えば、フロントエンドユニット310は、フェッチユニット301、命令キャッシュ303及び命令デコーダ305を含んでよい。いくつかの実装において、フロントエンドユニット310は、マイクロコード記憶装置及びマイクロオペレーション記憶装置と併せて、トレースキャッシュを更に含んでよい。フェッチユニット301は、例えば、メモリ又は命令キャッシュ303から複数のマクロ命令をフェッチし、当該複数のマクロ命令を基本命令に、すなわち、プロセッサによる実行のための複数のマイクロオペレーションにデコードするべく、命令デコーダ305に供給してよい。
フロントエンドユニット310と、実行ユニット320との間には、複数のマイクロ命令を受信し、実行のために複数のマイクロ命令を準備することに使用され得るアウトオブオーダ(OOO)エンジン315が連結される。より具体的には、OOOエンジン315は、レジスタファイル330及び拡張レジスタファイル335のような様々なレジスタファイル内における複数の格納位置上の複数の論理レジスタの名前を変更することを提供するだけでなく、マイクロ命令フローを再度順序付けし、実行のために必要な様々なリソースを割り当てる様々なバッファを含んでよい。レジスタファイル330は、整数及び浮動小数点操作に対する別個のレジスタファイルを含んでよい。拡張レジスタファイル335は、ストレージをベクトルサイズの単位、例えば、1レジスタあたり256又は512ビットで提供してよい。
様々なリソースは、実行ユニット320内に存在してよく、例えば、専用ハードウェアの中でも特に、様々な整数、浮動小数点及び単一命令複数データ(SIMD)論理ユニットを含む。例えば、そのような複数の実行ユニットは、他のそのような複数の実行ユニットの中でも特に、1又は複数の算術論理演算ユニット(ALU)322を含んでよい。
複数の実行ユニットからの複数の結果は、リタイア論理、すなわち、リオーダバッファ(ROB)340に提供されてよい。より具体的には、ROB340は、実行される複数の命令に関連する情報を受信する様々なアレイ及び論理を含んでよい。この情報は、その後、ROB340により検証され、複数の命令が正当にリタイアされ、かつ、プロセッサのアーキテクチャ状態にコミットしたデータをもたらすことができるか否か、又は、複数の命令の適切なリタイアを防ぐ1又は複数の例外が発生したか否かが判断される。当然ながら、ROB340は、リタイアに関連する他の動作を処理してよい。
図3Aに示されるように、ROB340は、キャッシュ350に連結され、一実施形態において、キャッシュ350は、低レベルキャッシュ(例えば、L1キャッシュ)であってよいが、本発明の範囲は、この点に限定されない。また、実行ユニット320は、キャッシュ350に直接連結されることができる。キャッシュ350からのデータ通信は、より高いレベルのキャッシュ、システムメモリ等と行われてよい。図3Aの実施形態では、この高レベルとともに示されるが、本発明の範囲は、この点に限定されないことと理解されたい。例えば、図3Aの実装は、いわゆるx86命令セットアーキテクチャ(ISA)のようなアウトオブオーダマシンに関するが、本発明の範囲は、この点に限定されない。つまり、他の実施形態は、インオーダプロセッサ、ARMベースのプロセッサのような縮小命令セットコンピューティング(RISC)プロセッサ、又は、エミュレーションエンジン及び関連する論理回路を介して異なるISAの複数の命令及び複数の動作をエミュレートできるISAの別のタイプのプロセッサに実装されてよい。
図3Bは、本発明の複数の実施形態に係る、処理されるべき複数の割り込みのタイミング図である。
割り込み1メッセージ(354−360)は、ハード割り込みである。割り込み2メッセージ(362、366、370、374)は、周期的なソフト割り込みである。割り込み3メッセージ(378、382)は、非周期的なソフト割り込みである。
全ての割り込みは、同一のコアにより処理される。複数のソフト割り込みは、遅延させられてよく、図2に関して上記で説明されたように、各ソフト割り込みは、対応する時間遅延を有する。周期的なソフト割り込み362、366、370及び374のそれぞれは、遅延させられた割り込み364、368、372、及び376としてそれぞれ処理されるべく、時間的に遅延させられる。非同期ソフト割り込み378及び382のそれぞれは、割り込み380及び384としてそれぞれ処理されるべく、時間的に遅延させられる。
ハード割り込み354−360のそれぞれは、意図的に遅延させられることなく処理され、各割り込み354−360は、複数の割り込みを処理するコアにおけるインアクティブからアクティブへの遷移(386、390、394、396)に関連する。割り込み354、356、358及び360は、コアの時点386、390、394及び396で、それぞれ処理される。
各割り込み354、356、358、360が処理されるにつれて、(例えば、まだ処理されておらず、対応する時間遅延期間の満了を待っている)1又は複数のペンディング中の割り込みは、コアがアクティブ状態にある間に処理されるべく、リリースされてよい。例えば、割り込み370は、372への処理のために遅延させられており(本明細書において、370→372と表記される)、割り込み358が処理されているときにはペンディング中である。従って、割り込み(370→372)は、時点394での処理のためにリリースされ、リリースは、割り込み358の処理によりトリガされる。このようにして、2つの割り込み(358及び370→372)は、394で開始するコアの同一のアクティブ期間において処理される。
割り込み374は、376へ遅延させられており、例えば、時点396で割り込み360が処理されるときにペンディング中である。従って、割り込み(374→376)は、396で開始するコアアクティビティの期間の間の処理のためにリリースされる。更に、割り込み382は、384へ遅延させられており、割り込み360の処理が開始するときにペンディング中である。従って、割り込み(382→384)は、396で開始するコアアクティビティの期間の間の処理のためにリリースされる。このようにして、3つの割り込み、360、(374→376)及び(382→384)は、396で開始するコアの連続的にアクティブな期間の間に処理される。
割り込み366は、368での処理のために遅延させられる。他の割り込みが366と368との間の期間で処理されるためにスケジューリングされていないので、遅延させられた割り込み(366→368)は、時点392で処理され、処理は、コアを時点392でインアクティブからアクティブへ遷移させる。コアは、遅延させられた割り込み(366→368)が処理された後に、インアクティブ状態に戻る。
割り込み362は、364へ遅延させられる(362→364)。非同期ソフト割り込み378は、380へ遅延させられる(378→380)。いずれかの他の割り込みが処理されることが予定されている一方、遅延させられた割り込み(362→364)は、ペンディング中ではなく、従って、364に対応する時点388で処理され、当該時点は、その時間遅延の終了時点である。遅延させられた割り込み(378→380)は、時点388でペンディング中であり、従って、遅延させられた割り込み(362→364)の処理に起因して、コアがアクティブ状態にある間の処理のためにリリースされる。このようにして、2つの割り込み364及び(378→380)は、388で開始する1つのアクティブ期間内に処理される。
コアのインアクティブからアクティブ状態への6つの遷移(386−396)の合計は、受信した10回の割り込みを処理することに起因する。従って、複数のソフト割り込みの処理の前における時間遅延の導入は、コアのインアクティブからアクティブへの遷移の総数を低減できる。コアのインアクティブからアクティブへの遷移の回数の低減は、コアのインアクティブからアクティブへの遷移に関連する電力コストの低減に起因して総電力消費量を低減できる。
図4は、本発明の実施形態に係る、プロセッサによる複数の割り込みイベントを処理する方法のフロー図400である。ブロック410で、プロセッサは、周辺デバイスから割り込みを受信する。判断ひし形420へと続くと、第1の割り込みが、例えば、遅延時間TN=0のハードリアルタイムイベントに関連するハード割り込みである場合、ブロック450に進み、割り込みは、意図されない時間遅延でプロセッサにより処理される。判断ひし形460に進むと、他のペンディング中の割り込みがある場合、ブロック450に戻り、当該ペンディング中の割り込みが処理される。判断ひし形460で、他のペンディング中の割り込みがない場合、方法は、470で終了する。
判断ひし形420で、N番目の割り込みがハード割り込みでない場合、例えば、N番目の割り込みがハードリアルタイムイベントに関連していない場合、ブロック430へ進み、対応する遅延タイマーがN番目の割り込みの対応する時間遅延TNをカウントすることを開始する。判断ひし形440へと移動すると、遅延タイマーが満了したときに、ブロック450へと進み、N番目の割り込みが処理される。判断ひし形460へと進むと、N番目の割り込みが処理されるときに、他のペンディング中の割り込みがある場合、ブロック450に戻り、例えば、N番目の割り込みの処理の代わりに、これらの遅延時間のそれぞれの満了前に、当該他のペンディング中の割り込みが処理される。判断ひし形460で、他のペンディング中の割り込みがない場合、方法は、470で終了する。
複数の実施形態は、様々なシステムのタイプに実装されてよい。図5を参照すると、本発明の実施形態に係るシステムのブロック図が示される。図5に示されるように、マルチプロセッサシステム500は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続550を介して連結される第1のプロセッサ570及び第2のプロセッサ580を含む。図5に示すように、プロセッサ570及び580のそれぞれは、マルチコアプロセッサであってよく、第1及び第2のプロセッサコア(すなわち、コア574a及び574b並びにコア584a及び584b)を含むが、潜在的により多くのコアがプロセッサ内に存在してよい。本発明の複数の実施形態に従って、プロセッサ570は、割込遅延コントローラ502及び割込コントローラ504を含み、プロセッサ580は、割込遅延コントローラ506及び割込コントローラ508を含む。各割込遅延コントローラ502、506は、複数の入力割り込みを検出する。入力割り込みがハードリアルタイムイベントに関連する場合、割り込みは、意図的に遅延させられることなく処理されるべく、各割込コントローラ504、508に送信される。
ソフト割り込みである第1の割り込みに対し、第2の割り込みが処理されている間、第1の割り込みがペンディングされていない限り、処理されるべき第1の割り込みをコアに振り分ける各割込コントローラ504、508に第1の割り込みを送信する前に、割込遅延コントローラ502、506は、特定の遅延時間で割り込みの処理を遅延させる。本発明の複数の実施形態に従って、第2の割り込みが処理されている間、第1の割り込みがペンディング中である場合、割込遅延コントローラ502、506は、コアが第2の割り込みの処理によりトリガされるアクティブ状態にある間に処理するためにコアに振り分けられるべく、第1の割り込みを各割込コントローラ504、508へ送信する。
図5を更に参照すると、第1のプロセッサ570は、メモリコントローラハブ(MCH)572及びポイントツーポイント(P−P)インタフェース576及び578を更に含む。同様に、第2のプロセッサ580は、MCH582並びにP−Pインタフェース586及び588を含む。図5に示されるように、MCH572及び582は、プロセッサを各メモリ、すなわち、メモリ532及びメモリ534に連結し、これらのメモリは、各プロセッサに対してローカルに取り付けられるシステムメモリ(例えば、DRAM)の一部であってよい。第1のプロセッサ570及び第2のプロセッサ580は、それぞれP−P相互接続562及び584を介してチップセット590に連結される。図5に示されるように、チップセット590は、P−Pインタフェース594及び598を含む。
更に、チップセット590は、P−P相互接続539を介してチップセット590と高性能グラフィックスエンジン538とを連結するインタフェース592を含む。次に、チップセット590は、インタフェース596を介して第1のバス516に連結されてよい。図5に示されるように、様々な入力/出力(I/O)デバイス514は、バスブリッジ518と併せて、第1のバス516に連結されてよく、バスブリッジ518は、第1のバス516を第2のバス520に連結する。一実施形態において、例えば、キーボード/マウス522、通信デバイス526、及び、コード530を含み得るディスクドライブ又は他の大容量ストレージデバイスのようなデータストレージユニット528を含む、様々なデバイスが、第2のバス520に連結されてよい。更に、オーディオ入力/出力(I/O)524は、第2のバス520に連結されてよい。本発明の複数の実施形態に従って、デバイス514、522、524、526のうちの1又は複数は、プロセッサ570又はプロセッサ580により処理されるべく、複数の割り込みを提供してよい。複数の実施形態は、スマート携帯電話、タブレットコンピュータ、ネットブック、ウルトラブック(登録商標)等のようなモバイルデバイスを含む他のタイプのシステムに組み込まれ得る。
複数の実施形態は、携帯電話のようなモバイルデバイスを含む他のタイプのシステムに組み込まれ得る。図6を参照すると、本発明の別の実施形態に係るシステムのブロック図が示される。図6に示されるように、システム600は、モバイルデバイスであってよく、様々なコンポーネントを含んでよい。図6の俯瞰図に示されるように、アプリケーションプロセッサ610は、デバイスの中央処理ユニットであってよく、ストレージ615を含む、様々なコンポーネントと通信を行う。ストレージ615は、様々な実施形態において、プログラム及びデータストレージ部分の両方を含んでよい。
アプリケーションプロセッサ610は、更に、入力/出力システム620に連結されてよく、様々な実施形態において、入力/出力システム620は、ディスプレイ及びタッチキーパッドのような1又は複数の入力デバイスを含んでよく、処理されるときにタッチキーバッド自体をディスプレイ上に表示することができる。システム600は、1又は複数のセンサ670からデータを受信し得る統合センサハブ(ISH)660も含んでよい。いくつかの実施形態において、統合センサハブは、複数のソフト割り込みを検出し、対応する遅延時間(TN)でソフト割り込みの実行を遅延させる割込遅延コントローラ(IDC)662を含む。本発明の複数の実施形態に従って、割り込みがペンディング中である間に別の割り込みが処理される場合、当該割り込みは、その時間遅延を完了することなく処理される。
本発明の複数の実施形態に従って、アプリケーションプロセッサ610は、割込遅延コントローラ(IDC)602を含んでよい。IDC602は、(例えば、送受信機640及び/又はベースバンドプロセッサ630から)ハードリアルタイムイベントに関連する入力ハード割り込みを検出してよく、処理(例えば、操作)されるべきアプリケーションプロセッサ610のコアに割り込みを送信する割込コントローラ(不図示)にハード割り込みを、意図的に遅延させることなく、送信してよい。
(例えば、I/O620及び/又は統合センサハブ660から受信した)ソフト割り込みである第1の割り込みについて、割込遅延コントローラ602は、第2の割り込みが第1のコアで処理されているときに、第1の割り込みがペンディングされていない限り、割込コントローラに第1の割り込みをリリースする前に第1の遅延時間で第1の割り込みの処理を遅延させてよい。割込コントローラは、処理されるべきアプリケーションプロセッサ610の第1のコアに第1の割り込みを送信する。本発明の複数の実施形態に従って、第1のコアで第2の割り込みが処理されているときに、第1の割り込みがペンディング中である場合、コアが第2の割り込みの処理によりトリガされるアクティブ状態にある間に処理するために第1のコアに振り分けられるべく、第2の割り込みの処理は、割込遅延コントローラ602をトリガして、時間遅延を完了することなく第1の割り込みを割込コントローラに送信する。第2の割り込みは、ハード割り込み又は時間遅延が完了(例えば、時間遅延カウンタが満了)したソフト割り込みであってよい。
アプリケーションプロセッサ610は、ベースバンドプロセッサ630に連結してもよく、入力電話信号及び他の信号を調整することと同様に、出力用の音声及びデータ通信のような複数の信号を調整してよい。本発明の複数の実施形態に従って、ベースバンドプロセッサ630は、複数の周辺デバイス634から複数の割り込みを受信し、別の割り込みが処理されている間、ソフト割り込みがペンディングされていない限り、受信したソフト割り込みの実行を遅延させることができるIDC632を含んでよい。示されるように、ベースバンドプロセッサ630は、送受信機640に連結し、送受信機640は、受信機能及び送信機能の両方を有効にし得る。次に、送受信機640は、アンテナ650、例えば、無線ワイドエリアネットワーク(例えば、3G又は4Gネットワーク)、及び/又は、BLUETOOTH(登録商標)又は米国電気電子技術者協会802.11規格に従ういわゆるWi−Fi(登録商標)ネットワークのような無線ローカルエリアネットワークを介したような1又は複数の通信プロトコルを介して、音声及びデータ信号を送信及び受信することを可能とする任意のタイプのアンテナと通信を行ってよい。
示されるように、システム600は、モバイル環境における動作を有効にする充電式バッテリを有する充電式電源625を更に含んでよい。図6の実施形態では、この特定の実装例で示されているが、本発明の範囲は、この点に限定されない。
図7は、本発明の実施形態に係るシステムオンチップ(SoC)のブロック図である。SoC700は、マルチコアサブシステム710、モデムサブシステム720、マルチメディアサブシステム730、システムファブリック740、電源750、及び、1又は複数の外部デバイスをインタフェース接続するインタフェース760を含む。SoC700は、複数のタスク、例えば、モデムタスク、マルチメディアタスク及び他の処理タスクを同時に実行してよい。
マルチコアサブシステム710は、マルチコアプロセッサ712及び714、L1キャッシュ716及び718、L2キャッシュ742を含む。マルチコアプロセッサ712及び714のそれぞれは、対応する割込遅延コントローラ(IDC)702、704を含んでよい。各割込遅延コントローラ702、704は、(例えば、インタフェース760から)複数のハードリアルタイムイベントに関連する複数の入力ハード割り込みを検出し、受信すると、処理されるべきプロセッサ712、714のそれぞれのコアに割り込みを振り分ける割込コントローラ(不図示)のそれぞれに対して、各ハード割り込みを送信する。
(例えば、インタフェース760から受信した)ソフト割り込みである第1の割り込みについて、割込遅延コントローラ702、704は、第2の割り込みがコアにより処理されている間に第1の割り込みがペンディングされていない限り、処理されるべきコアに割り込みを振り分ける割込コントローラのそれぞれに第1の割り込みを送信することを、第1の時間遅延で、遅延させる。本発明の複数の実施形態に従って、第2の割り込みがコアにより処理されている間、第1の割り込みがペンディング中である場合、割込遅延コントローラ702、704は、コアが、第2の割り込みの処理によりトリガされるアクティブ状態にある間に処理するためにコアに振り分けられるべく、時間遅延を完了することなく第1の割り込みを割込コントローラに送信する。
モデムサブシステム720は、高速データの無線通信のためのロングタームエボリューション(LTE)モデム722を含んでよい。モデムサブシステム720は、全地球測位システム(GPS)724、及び、少なくとも2つのデジタル信号プロセッサ(DSP)コア726及び728を含んでもよい。本発明の複数の実施形態に従って、LTEモデム722は、モデムサブシステム720から(例えば、GPS724から)入力される複数の割り込みを検出し、複数のソフト割り込みを遅延させるIDC721を含んでよい。
マルチメディアサブシステム730は、グラフィックス処理ユニット(GPU)732、オーディオ/ビデオハードウェアアクセラレータ734、デジタル信号処理コア736、及び、MMXプロセッサ738を含んでよく、例えば、単一命令複数データ(SIMD)命令を処理することを可能としてよい。
他の実施形態が以下に説明される。
第1の実施例において、プロセッサは、第1のコアを有する少なくとも1つのコアを備える。プロセッサは、第1の時点で第1の割り込みを受信し、第1のコアによる第2の割り込みの処理を開始するときに第2の時点で第1の割り込みがペンディングされていない限り、第1のコアによる第1の割り込みの処理を、第1の時点で開始する第1の時間遅延で遅延させ、第1の割り込みが第2の時点でペンディング中である場合、第1の時間遅延の完了前に第1の割り込みの処理を開始することを第1のコアに指示する割込遅延論理も含む。
第1の実施例のプロセッサを含む第2の実施例において、割込遅延論理は、第1の割り込みを含み、第2の時点でペンディング中である複数の割り込みを受信し、第1のコアは、第2の時点で開始する第1のアクティブ期間の間に、複数のペンディング中の割り込みを処理し、第1のコアは、第1のアクティブ期間を通してアクティブ状態にある。
第2の実施例のプロセッサを含む第3の実施例において、第1のコアは、第2の割り込み及び複数のペンディング中の割り込みが処理された後にアクティブ状態からインアクティブ状態に遷移する。
第1の実施例のプロセッサを含む第4の実施例において、第1のコアは、第1の割り込み及び第2の割り込みが処理されている間、アクティブ状態にあり、第1の割り込み及び第2の割り込みが処理された後にインアクティブ状態に遷移する。
第1の実施例のプロセッサを含む第5の実施例において、第2の割り込みは、周期的に受信され、受信した第2の割り込みの発生ごとに、第2の割り込みは、意図的に遅延させられることなく第1のコアにより処理され、割込遅延論理は、対応する時間遅延の完了前、かつ、コアがアクティブ状態にある間、追加のペンディング中である割り込みの処理を開始することを第1のコアに指示する。
第5の実施例のプロセッサを含む第6の実施例において、第2の割り込みの受信の発生ごとに、第2の割り込み及び追加のペンディング中である割り込みの処理が完了すると、第1のコアは、インアクティブ状態に遷移する。
第1の実施例のプロセッサを含む第7の実施例において、割込遅延論理は、更に、第3の時点で第3の割り込みを受信し、第2の時間遅延を第3の割り込みに割り当て、割込遅延論理は、第1の割り込み又は第2の割り込みが処理されている間、第3の割り込みがペンディングされていない限り、第3の時点から第2の時間遅延で、第3の割り込みの処理を遅延させ、第1の割り込み又は第2の割り込みが処理されている間、第3の割り込みがペンディング中である場合、第2の時間遅延を完了することなく第3の割り込みを処理することを第1のコアに指示する。
第7の実施例のプロセッサを含む第8の実施例において、第1の割り込み又は第2の割り込みが処理されている間、第3の割り込みがペンディング中でない場合、割込遅延論理は、第2の時間遅延の完了後に第3の割り込みを処理することをコアに指示する。
第1の実施例のプロセッサを含む第9の実施例において、割込遅延論理は、第1の時間遅延をカウントするカウンタを含む。
第10の実施例において、システムは、ダイナミックランダムアクセスメモリ(DRAM)と、1又は複数のコアを有するプロセッサと、1又は複数のコアのうちの第1のコアに、受信した1又は複数の割り込みのそれぞれを振り分ける割込コントローラとを備える。プロセッサはまた、対応する割り込みを処理するべく、各時間遅延をカウントする1又は複数の遅延カウンタを有する割込遅延コントローラと、別の割り込みの実行に応答して、第1のコアがアクティブ状態にある間、第1のコアに振り分けられるべく、各ペンディング中の割り込みを割込コントローラに送信するペンディング割込リリース論理とを有し、プロセッサが、対応する非クリティカルな割り込みを受信すると、各遅延カウンタは、各カウントを開始する。
第10の実施例のシステムを含む第11の実施例において、第2の割り込みに関連する各時間遅延の間に他の割り込みが処理されていない場合、割込遅延コントローラは、対応する遅延カウンタのカウントを完了すると、割り込みを割込コントローラに送信する。
第10の実施例のシステムを含む第12の実施例において、第2の遅延カウンタのカウントが完了したときに、ペンディング割込リリース論理は、第1のコアがアクティブ状態である間に処理されるべく、各ペンディング中の割り込みを割込コントローラに送信する。
第10の実施例のシステムを含む第13の実施例において、ペンディング中の割り込みが処理された後に、対応するコアは、インアクティブになる。
第10の実施例のシステムを含む第14の実施例において、プロセッサは、ハード割り込みを受信すると、意図的に遅延させることなくハード割り込みを割込コントローラに送信するクリティカルな割込検出論理を更に有する。
第10の実施例のシステムを含む第15の実施例において、プロセッサは、対応する遅延カウンタを受信した各非クリティカルな割り込みに割り当てるカウンタ割当論理を更に有する。
第16の実施例において、方法は、プロセッサのコアが、第1の時点で開始する第1の割り込みを処理する段階と、プロセッサが、第2の時点で受信した第2の割り込みに時間遅延を割り当てる段階と、コアが、第2の割り込みが第1の時点でペンディングされていない限り、第2の時点で開始する時間遅延の満了後に第2の割り込みを処理する段階と、第2の割り込みが第1の時点でペンディング中である場合、コアが、時間遅延の満了前に第2の割り込みを処理する段階とを含む。
第16の実施例の方法を含む第17の実施例において、方法は、第2の割り込みが第1の時点でペンディング中である場合、第1の割り込みの処理に応答して、コアがアクティブ状態である間に第2の割り込みを処理する段階を含む。
第16の実施例の方法を含む第18の実施例において、方法は、第1の割り込み及び第2の割り込みが処理された後に、コアをインアクティブ状態に遷移させる段階を含む。
第16の実施例の方法を含む第19の実施例において、方法は、複数の割り込みが第1の時点でペンディング中の場合、複数の割り込みのそれぞれの各時間遅延の完了前に、コアにより処理されるべく、複数の割り込みをコアに送信する段階を含み、コアは、複数の割り込みが処理されている間、アクティブ状態に維持される。
第19の実施例の方法を含む第20の実施例において、方法は、全てのペンディング中の割り込みが処理された後に、コアをインアクティブ状態に遷移させる段階を含む。
第16の実施例の方法を含む第21の実施例において、時間遅延は、周辺デバイスの1又は複数の特性に基づいて判断され、第2の割り込みは、周辺デバイスから受信される。
第16の実施例の方法を含む第22の実施例において、方法は、複数の割り込みのそれぞれに対応する時間遅延を割り当てる段階を含み、当該複数の割り込みのそれぞれは、別の割り込みが処理されない限り、処理されることが、各受信時点から開始する対応する時間遅延で遅延させられる。
第22の実施例の方法を含む第23の実施例において、方法は、特定の割り込みの処理が開始するときに、対応する時間遅延を完了することなく、処理するためにコアにペンディング中の割り込みを送信する段階を含む。
第24の実施例において、装置は、第16実施例〜第23の実施例のいずれか一つの方法を実行する手段を含む。
第25の実施例において、少なくとも1つのコンピュータ可読媒体は、実行されるときに、第16実施例〜第23の実施例のいずれか一つの方法をシステムに実行させることを有効にする複数の命令を含む。
複数の実施形態は、様々なタイプのシステムに使用されてよい。例えば、一実施形態において、通信デバイスは、本明細書で説明された様々な方法及び技術を実行するように構成されることができる。当然ながら、本発明の範囲は、通信デバイスに限定されず、代わり、他の実施形態は、複数の命令を処理するための他のタイプの装置を対象とすることができ、又は、コンピューティングデバイス上で処理されることに応答して、本明細書で説明された方法及び技術の1又は複数をデバイスに実行させる複数の命令を含む1又は複数の機械可読媒体を対象とすることができる。
複数の実施形態は、コードで実装されてよく、複数の命令を実行するシステムをプログラムするのに使用できる複数の命令をそれに格納した非一時的記憶媒体に格納されてよい。記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、ソリッドステートドライブ(SSD)、コンパクトディスクリードオンリメモリ(CD−ROM)、コンパクトディスクリライタブル(CD−RW)、及び、磁気−光ディスクを含む任意のタイプのディスク、リードオンリメモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)のようなランダムアクセスメモリ(RAM)、スタティックランダムアクセスメモリ(SRAM)、消去可能プログラマブルリードオンリメモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、磁気又は光カード、又は、複数の電子命令を格納するのに適した任意の他のタイプの媒体のような半導体デバイスを含んでよいが、これらに限定されない。
本発明は、限定された数の実施形態に関して説明されてきたが、当業者は、そこから多数の修正形態及び改変形態を想起するであろう。添付の特許請求の範囲は、本発明の真の趣旨及び範囲内に入るようにそのような全ての修正形態及び改変形態を網羅することが意図される。