JP5492305B2 - マルチコアプロセッサのための割込みマスク - Google Patents

マルチコアプロセッサのための割込みマスク Download PDF

Info

Publication number
JP5492305B2
JP5492305B2 JP2012534273A JP2012534273A JP5492305B2 JP 5492305 B2 JP5492305 B2 JP 5492305B2 JP 2012534273 A JP2012534273 A JP 2012534273A JP 2012534273 A JP2012534273 A JP 2012534273A JP 5492305 B2 JP5492305 B2 JP 5492305B2
Authority
JP
Japan
Prior art keywords
core
processor
processor cores
interrupt
unavailable
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.)
Active
Application number
JP2012534273A
Other languages
English (en)
Other versions
JP2013507719A (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 JP2013507719A publication Critical patent/JP2013507719A/ja
Application granted granted Critical
Publication of JP5492305B2 publication Critical patent/JP5492305B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt

Description

特に指示しない限り、本項に記載される資料は本出願における特許請求の範囲の先行技術ではなく、本項に含まれることにより先行技術であると認められるものではない。
割込み要求(「IRQ」)は、コンピューティングシステムに、割込みサービスルーチン(「ISR」)とも呼ばれる割込みハンドラの実行によってサービスを受けるべきイベントを知らせることができる。IRQを受け取ったことに応答してコンピューティングシステムのプロセッサは、その現在のタスクの実行から受け取った割込み要求と関連付けられた割込みハンドラの実行へ遷移するためのコンテキスト切換えを行うことができる。現在のプロセッサタスクからの遷移は、現在のタスクの割込みとみなすことができる。受け取った割込み要求についてのISRを実行のためにマルチコアプロセッサ内の特定のプロセッサコアに割り振ることは、複雑な処理を発生し得る。
本開示では、複数のプロセッサコアを有するマルチコアプロセッサ内で割込みを処理するためのいくつかの方法を概説する。ある方法例は、以下の動作のうちの1つまたは複数を含む。割込みサービスルーチンと関連付けられた割込みが受け取られる。コア割込みマスクが評価されて、複数のプロセッサコアの中から1つまたは複数の利用可能なプロセッサコアが識別される。受け取った割込みと関連付けられた割込みサービスルーチンは、1つまたは複数の利用可能なプロセッサコアのうちの少なくとも1つに割り当てられる。
本開示では、複数のプロセッサコアを含むマルチコアプロセッサ内で割込みを処理するように構成されたいくつかのシステムを概説する。あるシステム例は、割込み要求を、マルチコアプロセッサ、コア割込みマスク、および割込み制御器に伝えるように適合された割込み線を含むように構成され得る。ある割込み線の例は、割込み要求をマルチコアプロセッサに伝えるように適合される。あるコア割込みマスクの例は、複数のプロセッサコアのそれぞれと関連付けられた状況を指定するように適合される。状況は、利用可能なプロセッサコアと利用不可能なプロセッサコアのどちらかに対応し得る。ある割込み制御器は、以下の動作のうちの1つまたは複数を実行するように構成される。割込み制御器は割込み線を介して割込み要求を受け取る。割込み制御器は、コア割込みマスクを評価して1つまたは複数の利用可能なプロセッサコアを識別する。割込み制御器は、割込み要求の処理を、利用可能なプロセッサコアのうちの1つに割り当てる。
本開示では、いくつかのコンピュータ記憶媒体を概説する。あるコンピュータ記憶媒体の例は、複数のプロセッサコアを含むコンピュータシステムによって実行されると、コンピュータシステムを、以下の動作のうちの1つまたは複数を実行するように適合させる方法のためのコンピュータ実行可能命令の記憶を含む。コンピュータシステムは、コア割込みマスクを、複数のプロセッサコアのそれぞれと関連付けられた状況を指定するように構成する。状況は、利用可能なプロセッサコアと利用不可能なプロセッサコアのどちらかに対応し得る。コンピュータシステムは、割込みサービスルーチンと関連付けられた割込み要求を受け取る。コンピュータシステムは、コア割込みマスクを評価して1つまたは複数の利用可能なプロセッサを識別する。コンピュータシステムは、受け取った割込み要求と関連付けられた割込みサービスルーチンを、利用可能なプロセッサコアのうちの少なくとも1つに割り当てる。
以上の概要は例示にすぎず、いかなる点においても限定のためのものではない。図面および以下の詳細な説明を参照すれば、前述の例示的態様、実施形態、および特徴に加えて、さらに別の態様、実施形態、および特徴も明らかになるであろう。
本開示の上記その他の特徴は、以下の説明および添付の特許請求の範囲を、添付の図面と併せて読めばより十分に明らかになるであろう。これらの図面は本開示によるいくつかの実施形態を示すものにすぎず、したがって、本開示の範囲を限定するものとみなすべきでないことを踏まえ、添付の図面を使用して、本開示をさらに具体的に詳細に説明する。
マルチコアプロセッサのための動作環境を示す機能ブロック図である。 割込み制御器を有するマルチコアプロセッサを示すブロック図である。 割込み制御器、コア割込みマスク(「CIM」)、制御モジュール、および割込みマスクレジスタ(「IMR」)を示すブロック図である。 CIMと関連付けられたマスクビットを示すブロック図である。 CIMを有するマルチコア・プロセッサ・コンピューティング・システムにおいて割込みを処理するためのプロセスを示す流れ図である。 コンピューティングシステムの例を示すブロック図である。 すべて本明細書で示す少なくともいくつかの実施形態に従って配置されたコンピュータプログラム製品を示す概略図である。
以下の詳細な説明では、本出願の一部を形成する添付の図面を参照する。図面では、文脈上他の意味に解される場合を除き、類似の記号は、通常、類似の構成要素を識別する。詳細な説明、図面、および特許請求の範囲に記載される例示的実施形態は、限定を意図するものではない。本出願で提示する主題の趣旨または範囲を逸脱することなく、他の実施形態が利用されてもよく、他の変更が加えられてもよい。本明細書において概説し、図に例示する本開示の態様は、多種多様な構成として配置し、置換し、結合し、分離し、設計することができ、それらすべてが本明細書において明確に企図されていることが容易に理解されるであろう。
本開示は一般に、とりわけ、マルチコアプロセッサに関連した方法、装置、システム、およびコンピュータプログラム製品を対象とするものである。マルチコアプロセッサ内の特定のプロセッサコアへの割込みの割当てに影響を及ぼすようにコア別の割込みマスク(「CIM」)を構成するための技法が説明される。CIMは、特定のプロセッサコアに、割込みを処理するのに利用可能と利用不可能のどちらかであるというフラグを立てるように構成され得る。CIMが特定のプロセッサコアに利用可能というフラグを立てている場合には、マルチコアプロセッサの一部であるコンピュータシステムは、割込みサービス要求(「IRQ」)に対応する割込みサービスルーチン(「ISR」)を当該の特定のプロセッサコアへ経路指定し得る。次いでこの特定のプロセッサコアはISRを実行し得る。CIMが特定のプロセッサコアに利用不可能というフラグを立てている場合には、コンピュータシステムは、ISRを当該の特定のプロセッサコアから離して別の利用可能なプロセッサコアへ経路指定し得る。コンピュータシステムは、ISRを実行するのに、全般的システム性能に最小限の影響しか及ぼさないプロセッサコアが選択され得るようにCIMを構成し得る。
次に図1を見ると、機能ブロック図100で、本明細書で提示する少なくともいくつかの実施形態に従って構成されたマルチコアプロセッサ110のための動作環境が示されている。マルチコアプロセッサ110は、第1のプロセッサコア115A、第2のプロセッサコア115B、第3のプロセッサコア115C、第4のプロセッサコア115D、第Nのプロセッサコア115Eといった複数の内部プロセッサコアを組み込むことができる。これらのプロセッサコアをまとめて、または一般的に、プロセッサコア115と呼んでもよい。プロセッサコア115は一般に、並列処理、並列タスク、並列スレッド、別々の順次プロセス、またはこれらの任意の組み合わせをサポートすることができる。
メモリ120は、マルチコアプロセッサ110によるアクセスのために適合され得る。マルチコアプロセッサ110は、メモリ120からの読取りおよび/またはメモリ120への書込みを行うように構成することができる。そのような読取り動作および書込み動作は、マルチコアプロセッサ110の複数のコアの動作と関連付けられた命令とデータの両方に関連し得る。一般に、マルチコアプロセッサ110内の各プロセッサコアは、メモリ120に個々にアクセスするように構成され得る。メモリ120は、ランダム・アクセス・メモリ(「RAM」)、スタティックRAM(「SRAM」)、ダイナミックRAM(「DRAM」)、シンクロナスダイナミックRAM(「SDRAM」)、または他の任意の種類の揮発性または不揮発性メモリとすることができる。
マルチコアプロセッサ110の複数のプロセッサコア115上での動作と関連付けられた命令およびデータは、1つまたは複数の記憶媒体装置130に記憶され得る。記憶媒体装置130は、情報の不揮発性記憶をサポートし得る。記憶媒体130は、マルチコアプロセッサ110内の複数のプロセッサコアによるアクセスのために適合され得る。記憶媒体130は、マルチコアプロセッサ110内の複数のプロセッサコア115上で実行するためのソフトウェア132を記憶するように構成することができる。
例えば、それだけに限らないが、コンピュータ可読媒体には、コンピュータ記憶媒体と通信媒体とが含まれ得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータといった情報の記憶のための任意の方法または技術において実施される、揮発性、不揮発性、取り外し可能、および取り外し不能の媒体が含まれ得る。コンピュータ記憶媒体には、それだけに限らないが、RAM、読取り専用メモリ(「ROM」)、消去可能プログラム可能読取り専用メモリ(「EPROM」)、電気的EPROM(「EEPROM」)、フラッシュメモリ、その他の固体メモリ技術、コンパクトディスクROM(「CD−ROM」)、デジタル多用途ディスク(「DVD」)、高品位DVD(「HD−DVD」)、ブルーレイ、その他の光記憶、磁気カセット、磁気テープ、ハード・ディスク・ドライブ(「HDD」)などの磁気ディスク記憶、その他の磁気記憶装置、あるいは所望の情報を記憶するのに使用することができ、マルチコアプロセッサ110によってアクセスされ得る他の任意の媒体が含まれ得る。
マルチコアプロセッサ110と関連付けられたソフトウェア132、または他の命令、コード、モジュール、もしくはプログラムには、割込みイベントに応答するように適合されたモジュールが含まれ得る。そのようなモジュールをISR134と呼んでもよい。ISR134は、それぞれ割込み要求をもたらし得る、特定の割込みイベント、特定の割込みの原因、割込みのソース、または特定の割込み信号線と関連付けられ得る。ISR134は、割込み要求がマルチコアプロセッサ110において受け取られたことに応答して実行され得る。ISR134は、マルチコアプロセッサ110と関連付けられた他の動作に割り込む、すなわちそれらの動作に取って代わるように構成され得る。そのような横取り(preemption)は、マルチコアプロセッサ110における割込み要求の到着に迅速に応答したISR134の実行をサポートし得る。迅速な応答は、様々なソフトウェアモジュールのリアルタイム、ハードリアルタイム、ソフトリアルタイム、または準リアルタイムの動作をサポートすることができる。
ISR134は、デバイスドライバ、または他のソフトウェア、ファームウェア、もしくは外部機器のサポートと関連付けられたモジュールと関連付けられていてもよい。外部機器に加えて、そのようなモジュールは、割込み要求を提供することができる内部回路ブロックもサポートしてよい。サポートされる機器、すなわち関連付けられたインターフェース回路は、デバイスドライバまたはISR134と関連付けられた割込みのソースとみなされ得る。割込み要求を受け取ると、関連付けられたISR134は、即座に、特定の制限時間内に、またはISR134および他の動作と関連付けられた優先度に従って実行され得る。
外部クロック(「CLK」)140は、マルチコアプロセッサ110にクロック信号を提供することができる。CLK140は、水晶発振器または他の任意のクロックまたは発振源(不図示)を含み得る。CLK140はクロックドライバ回路(不図示)を含み得る。CLK140と関連付けられたクロック信号は、マルチコアプロセッサ110内の様々な回路の時間を計測し、同期を取るのに使用され得る。またマルチコアプロセッサ110は、リアル・タイム・クロック(「RTC」)145にもインターフェースし得る。RTC145は、時刻、曜日、暦日付、年などといった時間を維持管理するのに使用することができる。RTC145は、タイマ、アラーム、および/またはウォッチドッグ回路に関連したマルチコアプロセッサ110への割込みイベントを生成するように構成され得る。
マルチコアプロセッサ110にインターフェースすることのできる様々な機器を、割込み要求を生成するように構成することができる。そのような割込み要求は、マルチコアプロセッサ110に、機器によってサービスが要求されていることを知らせることができる。ISR134は機器からの割込み要求に対応するために実行され得る。非限定的な例として、図1にいくつかの異なる機器が示されている。例えば、割込み側機器はネットワークインターフェース150とすることができる。ネットワークインターフェース150は、マルチコアプロセッサ110をネットワーク155に接続するのに使用され得る。ネットワークインターフェース150は、ネットワーク155からデータパケットが受信されるときに割込み要求を生成することができる。その場合、ネットワークインターフェース150からデータパケットを受信するために、ネットワークインターフェース150と関連付けられたISR134などの割込みハンドラが実行され得る。同様に、アンテナ165を使用して無線ネットワークまたは移動通信システムに無線データパケットの送信および/または受信を行い得る無線インターフェース160も、ISR134によって処理され得る割込み要求を生成することができる。
1つまたは複数のインターフェースバス170がマルチコアプロセッサ110とインターフェースするように適合され得る。インターフェースバスの例には、産業標準アーキテクチャ(「ISA」)バス、周辺装置相互接続(「PCI」)バス、PCI−Expressバス、アクセラレーテッド・グラフィックス・ポート(「AGP」)バス、ユニバーサル・シリアル・バス(「USB」))、アドバンスド・テクノロジ・アタッチメント(「ATA」)バス、シリアルATA(「SATA」)バス、小型コンピュータ・システム・インターフェース(「SCSI」)、ならびにコンピュータおよび埋め込みプロセッサシステムにおいて使用される他のそのようなバスおよびインターフェースが含まれ得る。バス、すなわちバスと関連付けられたインターフェース回路は、マルチコアプロセッサ110への割込み要求を生成するように適合された1つまたは複数の割込み機構を組み込んでいてよい。アナログインターフェース180がマルチコアプロセッサ110に結合されていてもよい。アナログインターフェース180は、デジタル/アナログ変換器(「DAC」)、アナログ/デジタル変換器(「ADC」)、またはその両方を含んでいてよい。アナログインターフェース180は、ビデオ信号、オーディオ信号、赤外線信号、無線周波数(「RF」)信号、センサ信号、または他の任意のアナログ信号に使用され得る。アナログインターフェース180、すなわちアナログインターフェース180をサポートする回路は、マルチコアプロセッサ110への割込み要求を生成するように適合され得る。
また、マルチコアプロセッサ110には1つまたは複数の人間・機械インターフェース190が結合されていてもよい。人間・機械インターフェース190には、ビデオディスプレイ、キーボード、マウス、ライトペン、プロジェクタ、音声認識、スイッチ、ボタン、表示器、または人間から入力を受け取り、もしくは人間に出力を提供するための他の任意の機構が含まれ得る。人間・機械インターフェース190、すなわち人間・機械インターフェース190と関連付けられた回路は、マルチコアプロセッサ110に割込み要求を提供するように適合され得る。
図1のブロック図100は簡略化されており、マルチコアプロセッサ110に結合されたものとして図示されている構成要素のうちの1つまたは複数が、マルチコアプロセッサ110に間接的に結合されていてもよいことを理解すべきである。特に、当業者には予期され得るように、1つまたは複数の構成要素をマルチコアプロセッサ110に結合するのに様々な種類の中間機器が利用されてもよい。
次に図2を見ると、ブロック図で、本明細書で提示する少なくともいくつかの実施形態に従って構成された、割込み制御器200を有するマルチコアプロセッサ110が示されている。マルチコアプロセッサ110は、プロセッサコア115などの複数の内部プロセッサコアを有し得る。マルチコアプロセッサ110に届く割込み要求は、外部インターフェース230からもたらされる場合もある。外部インターフェース230と関連付けられた割込み要求は、図1に関連して論じたような外部機器から発せられ得る。同様に、マルチコアプロセッサ110の内部の機器も割込み要求を生成し得る。例えば、タイマ240、電源管理機構242、直接メモリアクセス(「DMA」)制御器244、他のオンチップ周辺機器246などが、外部インターフェース230から発せられる割込み要求と同様の割込み要求を生成し得る。
内部機器と外部インターフェース230とからの様々な割込み信号は、個々に割込み線225上で割込み制御器220まで搬送され得る。各割込み線225が別々のISRと関連付けられてもよく、ISRが割込み線225のうちの複数と関連付けられてもよい。割込み制御器220は、割込みバス215上でプロセッサコア115とインターフェースすることができる。割込みバス215は、シリアルバスとすることもでき、パラレルバスとすることもでき、割込み制御器220と複数のプロセッサコア115との間で信号をやりとりするための任意の通信路とすることもできる。割込みバスは、汎用システムでも、入力/出力(「I/O」)でも、割込み制御器220と複数のプロセッサコア115との間で信号をやりとりするためにも使用することができるメモリバスでもよい。割込みバス215は、割込み制御器220とプロセッサコア115との間で割込み情報に関するメッセージ(例えば割込み要求など)を搬送することができる。割込みバス215上で伝えられるメッセージは、信号、パルス、論理レベル、パケット、フレーム、または当分野で公知の他の任意の表現として符号化することができる。さらに別の実施形態では、割込み制御器220、タイマ240、電源管理機構242、DMA制御器244、および/またはその他のオンチップ周辺機器246は、マルチコアプロセッサ110の外部にあってもよい。
割込み要求は、プロセッサ実行リソースに取って代わることによって現在実行中のプロセスを遅延させることができる。現在のタスクからISR134への交換はコンテキスト切換えによって行うことができる。コンテキスト切換えは、順序を変えて動作を完了させることができる。またコンテキスト切換えは動作を打ち切らせ、かつ/または再実行させてもよい。コンテキスト切換えはさらに、内部バッファをクリアさせ、かつ/またはキャッシュを変更させてもよい。またキャッシュ線および変換索引バッファ(「TLB」)エントリが、ISR134からのコードまたはデータによって無効化されてもよい。キャッシュは、最近アクセスされたデータまたはコードを後で高速でアクセスするためにより高速なキャッシュメモリに保持することができる。これは、反復アクセスおよび参照の局所性という考え方によれば、最近アクセスされたメモリ位置、またはその近くのメモリ位置は、近い将来において再度アクセスされる候補になる可能性が高いため、有益となり得る。割込み応答待ち時間および割込み処理時間は、ISR134と関連付けられたコードまたはデータが別のプロセッサコア上で変更された状態でキャッシュされている場合に遅延され得る。
割込みが頻繁である場合、割込みサービスルーチンが相当量のコードもしくはデータを伴う場合、または相当量の全般的な計算処理時間が割込みに対応するために費やされるときには、システムにおいて分断による影響が増大し得る。そのような条件は、リアルタイムスケジュールに結び付けられた大量のデータを伴う複雑な計算処理タスクが生じる場合に、汎用と専用どちらのコンピューティングシステムにおいても発生し得る。類似の条件は、大量のネットワークトラフィックまたは記憶システムI/O動作を処理しているサーバコンピュータにおいても生じ得る。
割込みが割込み制御器220に届く(例えば割込み要求信号がアサートされる、割込み要求メッセージが送られるなどの)ときに、割込み制御器220は、割込みと関連付けられたISR134を、プロセッサコア115の最初の利用可能なプロセッサコアに割り当ててもよい。例えば、プロセッサコア115のリストを含むプロセッサ待ち行列(不図示)が維持されていてもよい。割込み制御器220は、利用可能なプロセッサコアが見つかるまでプロセッサ待ち行列内の各プロセッサコア115をトラバースし得る。プロセッサコアは、現在動作を実行していない場合に、利用可能とみなされ得る。しかし、割込み制御器220がISR134を最初の利用可能なプロセッサコアに割り当てるような手法はいくつかの欠点を有し得る。
第1の例としては、第1のプロセッサコア115Aと第2のプロセッサコア115Bとは、物理的に近接しているため、1つのタスクを実行するために相互にやりとりし合うのにより適している場合である。割込み制御器220は、第1のプロセッサコア115Aが利用可能であるため、ISR134を第1のプロセッサコア115Aに割り当てる。第1のプロセッサコア115AはISR134で占有されているため、第2のプロセッサコア115Bは、第1のプロセッサコア115Aよりも第2のプロセッサコア115Bからの物理的距離が大きいところにある、第Nのプロセッサコア115Eなどの別のプロセッサを用いてタスクを完了するよう制限される。第2のプロセッサコア115Bと第Nのプロセッサコア115Eとの間の距離の増加は、タスクを完了するための時間量を増加させ得る。
第2の例としては、第1のプロセッサコア115Aが特定のバスに物理的近接性を有する場合である。よって、第1のプロセッサコア115Aは、データがそのバス上で送信され、受信されるデータ集約的プロセスを実行するのにより適している。割込み制御器220がISR134を第1のプロセッサコア115Aに割り当てる場合には、別のプロセッサ、例えば第Nのプロセッサコア115Eがデータ集約的プロセスを実行し得る。しかし、第Nのプロセッサコア115Eはバスから物理的距離がより大きいところに位置決めされている。この距離の増加は、データ集約的プロセスを実行するための時間量を増加させ得る。
第3の例としては、第1のプロセッサコア115Aがタスクを実行するためにキャッシュを利用し、キャッシュが相当量のデータを含む場合である。キャッシュは、他のプロセッサと共用されており、キャッシュ内のデータは他のキャッシュにおいてミラーリングされていない場合がある。第1のプロセッサコア115がISR134を実行するときに、ISR134は第1のプロセッサコア115Aにキャッシュをフラッシュさせる。第1のプロセッサコア115Aが高優先度のタスクの実行に戻るときに、前にキャッシュ内にあったデータにアクセスするとキャッシュミスを生じ、それによって、タスクを完了するための時間量が増加し得る。
第4の例としては、第1のプロセッサコア115Aと第2のプロセッサコア115Bとが高優先度のタスクを実行している場合である。第1のプロセッサコア115Aは、高優先度のタスクを実行している間に利用可能になり得る。特に、第1のプロセッサコア115Aは、第2のプロセッサコア115Bからのデータを待っている間に遊休状態になる。第1のプロセッサコア115Aが第2のプロセッサコア115Bからのデータを待っている間に、割込み制御器220はISR134を第1のプロセッサコア115Aに割り当てる。というのは、第1のプロセッサコア115Aは遊休状態であり、よって、利用可能であるとみなされ得るからである。第1のプロセッサコア115AがISR134を実行する際に、高優先度のタスクは、第1のプロセッサコア115AがISR134の実行を完了するまで遅延され得る。また第2のプロセッサコア115Bも、第1のプロセッサコア115AがISR134から戻って高優先度のタスクを実行するまで遊休状態のままになり得る。
いくつかの実施形態によれば、CIMは、以下でより詳細に説明するように、特定のプロセッサコアを、ISR134を実行するために利用不可能であり、または利用可能であるものとして識別するように適合され得る。オペレーティングシステムまたは他の適切な制御機構が、CIMを、全般的システム性能に大きな影響を及ぼすプロセッサコアが利用不可能と指定されるように構成し得る。割込み制御器220内のISR誘導論理235がCIMを読み取るときに、ISR誘導論理235はISR134を利用不可能なプロセッサコアから離して、全般的システム性能に最小限の影響しか及ぼさないプロセッサコアに誘導し得る。
アムダールの法則によれば、全般的システム性能は、並列計算処理の割合が増加し、非並列(すなわち直列の)計算処理の割合が減少するに従って向上する。割込みを全般的システム性能に最小限の影響しか及ぼさないプロセッサコアに誘導することにより、CIMは、アムダールの法則に従って全般的システム性能を向上させ得る。例えば、第1のプロセッサコア115Aが直列性の高いタスクを実行しているとする。アムダールの法則によれば、全般的システム性能は、第1のプロセッサコア115Aが、ISR134といったさらに別の直列計算処理を処理するために直列タスクの実行を遅延させる場合に低下し得る。ISR134を、タスクを実行していない別のプロセッサコアに向ければ、割込み制御器220は、タスクを同時に実行しているプロセッサコアの数を増やすことにより、並列計算処理の割合を増加させ得る。
次に図3を見ると、ブロック図300で、本明細書で提示する少なくともいくつかの実施形態に従って構成された、割込み制御器220、CIM305、制御モジュール310、および割込みマスクレジスタ(「IMR」)315が示されている。図3には示されていないが、CIM305および/またはIMR315は割込み制御器220内で実施されていてもよい。割込み制御器220は、1つまたは複数の割込み線225上で届くIRQを受け取り、ラッチするように適合され得る。IRQに応答して、割込み制御器220は、IRQに応答するためのプロセッサコア115のうちの1つを識別し得る。特に、割込み制御器220は、CIM305において表示される利用可能なプロセッサコアのうちの1つを識別し得る。
いくつかの実施形態によれば、CIM305は、いくつかのビットを含むレジスタとして実施され得る。実施態様によっては、各ビットはプロセッサコア115のうちの1つまたは複数に対応していてもよい。実施態様によっては、1つまたは複数のビットが各プロセッサコア115に対応していてもよい。別の実施形態では、CIM305は、別の種類のハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせとして実施されてもよい。
場合によっては、各ビットは、プロセッサコア115のうちの個々の1つに対応していてもよい。実施態様によっては、ビットの値「1」が、対応するプロセッサコアが利用可能であることを表示してもよく、ビットの値「0」が、対応するプロセッサコアが利用不可能であることを表示してもよい。他の実施態様では、対応するプロセッサコアに関する情報を表示するのに複数のビットが利用されてもよい。例えば、ビットの値「0」は、対応するプロセッサコアが利用不可能であることを表示し、ビットの値「1」は、対応するプロセッサコアが直前に利用可能になった(例えば、第1の閾値クロックサイクル数より少ないクロックサイクル数にわたって利用可能であったなど)ことを表示し、ビットの値「2」は、対応するプロセッサコアが第1の閾値クロックサイクル数より多いが、第2の閾値クロックサイクル数より少ないクロックサイクル数にわたって利用可能であったことを表示し、ビットの値「3」が、対応するプロセッサコアが第2の閾値クロックサイクル数より多いクロックサイクル数にわたって利用可能であったことを表示してもよい。さらに別の実施態様では、複数のプロセッサコア内のビットが符号化されてもよい。またCIM305内の各ビットは、当業者によって企図され得る他の情報も表示してよい。割込み制御器220内のISR誘導論理235は、ISR134を、利用不可能なプロセッサコアから離し、利用可能なプロセッサコアへ経路指定するように構成され得る。
いくつかの実施形態によれば、制御モジュール310内のCIMビット制御論理325は、CIM305内のビット405の値を設定するように適合させることができる。制御モジュール310は、オペレーティングシステム、監視システム、または他の適切な集中制御機構において実施され得る。また、いくつかのさらに別の実施形態では、第1のCIM設定モジュール320A、第2のCIM設定モジュール320B、第NのCIM設定モジュール320EといったCIM設定モジュールも、プロセッサコア115のうちの1つまたは複数において実施され得る。第1のCIM設定モジュール320A、第2のCIM設定モジュール320B、および第NのCIM設定モジュール320Eをまとめて、または一般的に、CIM設定モジュール320と呼んでもよい。CIM設定モジュール320は、プロセッサコア115のうちの1つまたは複数がCIM305内のそれぞれに対応するビットを直接設定することを可能にし得る。
制御モジュール310内のCIMビット制御論理325は、様々なCIM設定基準335に従ってビット405を設定するように構成され得る。第1の実施態様の例において、制御モジュール310は、プロセッサコアがタスクを実行し始めるときに、プロセッサコアを利用不可能と設定し得る。動作中のプロセッサコアを利用不可能と設定することにより、制御モジュール310は、プロセッサコアがタスクの実行中に一時的に遊休状態になり得るときに、割込み制御器220がプロセッサコアにISR134を割り当てる可能性を防止することができる。
第2の実施態様の例において、制御モジュール310は、プロセッサコアと関連付けられたキャッシュが相当量のデータを含むときに、プロセッサコアを利用不可能と設定するように構成され得る。例えば、制御モジュール310内のプロセッサキャッシュ使用論理340は、プロセッサコアと関連付けられたキャッシュが相当量のデータを含むかどうか判定し得る。キャッシュ内のデータは、他のプロセッサコアと関連付けられた他のキャッシュにおいてミラーリングされていない可能性がある。キャッシュが満杯であるプロセッサコアを利用不可能と設定することにより、制御モジュール310はISR134を、より利用度の低いキャッシュを有するプロセッサコアに割り当てることができる。利用度の高いキャッシュと関連付けられたコアの割込み横取りを回避すれば、潜在的なキャッシュミスの件数を低減することができる。そのようなキャッシュミスは、利用度の高いキャッシュをフラッシュした後で生じ得る。
第3の実施態様の例において、制御モジュール310は、プロセッサコアが特定のバスに物理的に近接して位置決めされているときに、プロセッサコアを利用不可能と設定するように構成され得る。例えば、制御モジュール310内のプロセッサバス近接性論理345は、プロセッサコアが特定のバスに物理的に近接して位置決めされているかどうか判定し得る。バスの近くのプロセッサコアを利用不可能と設定することにより、制御モジュール310はISR134をバスへの物理的近接性がより大きいプロセッサコアに割り当てることができ、それによって、バスに近いプロセッサコアを、バス上でのデータの送信および受信を伴うタスクを実行するために利用することができる。
第4の実施態様の例において、制御モジュール310は、第1のプロセッサコアが第2のプロセッサコアと物理的に近接しており、協働するときに、第1のプロセッサコアと第2のプロセッサコアとを利用不可能と設定するように構成され得る。例えば、協働プロセッサ論理350は、2つ以上のプロセッサコアが物理的に近接しており、相互に協働し合うかどうか判定し得る。協働するプロセッサコアを利用不可能と設定することにより、プロセッサコアは、割込みを処理する割込みなしで引き続き協働し得る。上記の実施態様は単なる例にすぎず、他の適切な基準も同様に利用され得ることを理解すべきである。
実施態様によっては、制御モジュール310は、最初に、CIM305内の各ビット405を値「1」に設定(または変更/初期設定/リセット)し、各プロセッサコア115が利用可能であることを表示するように構成されてもよい。制御モジュール310は、CIM305内のビット405のうちの1つまたは複数を、値「1」から値「0」に変更(または設定/切換え)し、1つまたは複数の対応するプロセッサコア115が利用不可能であることを表示するように構成されてもよい。これらの変更は、前述のように、CIM設定基準335に基づくものとすることができる。CIM設定基準335が満たされなくなると、制御モジュール310は、CIM305内のビット405を値「0」から値「1」に戻す(または変更/再初期設定/リセットする)ように構成されてもよい。
実施態様によっては、CIM設定モジュール320は、最初に、CIM305内の各ビット405を値「1」に設定し、各プロセッサコア115が利用可能であることを表示するように構成されてもよい。CIM設定モジュール320は、前述のように、CIM設定基準335に基づいて、CIM305内のビット405のうちの1つまたは複数を値「1」から値「0」に変更し、1つまたは複数の対応するプロセッサコア115が利用不可能であることを表示するように構成されてもよい。CIM設定基準335が満たされなくなると、CIM設定モジュール320は、CIM305内のビット405を値「0」から値「1」に戻すように構成されてもよい。
実施態様によっては、制御モジュール310またはCIM設定モジュール320は、最初に、CIM305内の各ビット405を値「0」に設定し、各プロセッサコア115が利用不可能であることを表示するように構成されてもよい。制御モジュール310は、プロセッサコア115のうちの1つまたは複数、特に、CIM設定モジュール320のうちの1つまたは複数から、割込みの処理を引き受ける命令を受け取り得る。命令を受け取ったことに応答して、制御モジュール310は、引受先のプロセッサコア115に対応するCIM305内のビット405を値「0」から値「1」に変更し、個々のプロセッサコア115が利用可能であることを表示するように適合され得る。また制御モジュール310は、プロセッサコア115のうちの1つまたは複数から、割込みの処理の引受けを取り消し、それによって、制御モジュール310に、CIM305内のビット405を値「1」から値「0」に戻させる命令を受け取るようにも構成され得る。あるいは、CIM設定モジュール320は、引受先のプロセッサコア115に対応するビット405を値「0」から値「1」へ、また値「1」から値「0」へ直接変更するように構成されてもよい。
いくつかの実施形態によれば、制御モジュール310は、CIM305のビット405を設定するときに、閾値を超える数のプロセッサコア115が利用不可能と指定されるのを防止するCIM設定規則355を実施し得る。制御モジュール310は、割込み制御器220が割込みを処理するのに十分な量のプロセッサ能力を有することを保証するようにCIM設定規則355を実施し得る。またCIM設定規則355は、第1のCIM設定モジュール320AのようなCIM設定モジュール320によっても実施され得る。例えば、第1のCIM設定モジュール320Aが、第1のプロセッサコア115Aが割込みを処理するのに利用不可能であると指定するビットを設定しようと試みるときに、CIM設定規則355は、第1のCIM設定モジュール320Aが当該ビットを設定するのを防止し得る。
また割込み制御器220は、CIM305に加えて割込みマスクレジスタ(「IMR」)315も実施し得る。IMR315は、割込み線225のうちの1つまたは複数に対応する1組のビットを含み得る。IMR315においてビットが設定されているときに、割込み制御器220は設定ビットに対応する割込み線から受け取られる割込みを無視し得る。IMR315上に関連付けられたビットを有する割込みを、マスク可能な割込みと呼んでもよい。しかし、マスク不可能な割込みと呼ばれる割込みの中には、IMR315上に関連付けられたビットのないものもある。よって、マスク不可能な割込みは、IMR315の使用によって無視することができない。
いくつかの実施形態によれば、CIM305は、マスク可能な割込みとマスク不可能な割込みとを区別しなくてもよい。例えば、第1のプロセッサコア115Aが利用不可能であることを表示するCIM305内のビットが設定されている場合には、割込み制御器220は、マスク不可能な割込みについてでさえも、ISR134を別のプロセッサコアに誘導する。CIM305とIMR315の両方が実施されているときに、割込み制御器220は、IMR315を読み取る前にCIM305を読み取ってもよい。あるいは、CIM305とIMR315の両方が実施されているときに、割込み制御器220は、CIM305を読み取る前にIMR315を読み取ってもよい。前述のように、割込み制御器220は、CIM305を読み取ってプロセッサコア115のうちのどれが割込みを処理するのに利用可能であるか判定し得る。割込み制御器220は、IMR315を読み取って、所与の割込みがマスク可能な割込みであるかそれともマスク不可能な割込みであるか判定し得る。割込み制御器220は、マスク可能な割込みは無視するが、マスク不可能な割込みは無視しないように構成されてもよい。
次に図4を見ると、ブロック図で、本明細書で提示する少なくともいくつかの実施形態に従って構成された、CIM305と関連付けられたマスクビットが示されている。CIM305は、第1のビット405A、第2のビット405B、第3のビット405C、第4のビット405D、および第Nのビット405Eを含む。第1のビット405A、第2のビット405B、第3のビット405C、第4のビット405D、および第Nのビット405Eは、それぞれ、第1のプロセッサコア115A、第2のプロセッサコア115B、第3のプロセッサコア115C、第4のプロセッサコア115D、および第Nのプロセッサコア115Eに対応する。第1のビット405A、第2のビット405B、第3のビット405C、第4のビット405D、および第Nのビット405Eを、まとめて、または一般的に、CIMビット405と呼んでもよい。さほど制限されないが、図4に示すCIM305は、各プロセッサコア115に対応する1つのCIMビット405を有する。別の実施形態では、CIMビット405のうちの2つ以上が各プロセッサコア115に対応してもよい。さらに別の実施形態では、各CIMビット405がプロセッサコア115のうちの2つ以上に対応してもよい。
図4に示す例では、第1のビット405A、第2のビット405B、第3のビット405C、第4のビット405D、および第Nのビット405Eは、それぞれ、値「0」、値「1」、値「0」、値「1」、および値「1」に設定されている。前述のように、実施態様によっては、ビットの値「1」は、対応するプロセッサコアが利用可能であることを表示し、ビットの値「0」は対応するプロセッサコアが利用不可能であることを表示し得る。そのような実施態様では、図4に示すCIM305は、第1のビット405Aと第3のビット405Cとが値「0」に設定されているため、第1のプロセッサコア115Aと第3のプロセッサコア115Cとが利用不可能であることを指定し得る。割込み制御器220は、IRQを受け取ると、CIM305を確認し得る。割込み制御器220は、第1のビット405Aと第3のビット405Cとが設定されていることを読み取ると、ISR134を第1のプロセッサコア115Aと第3のプロセッサコア115Cから離して、第2のプロセッサコア115B、第4のプロセッサコア115C、第Nのプロセッサコア115Eといった利用可能なプロセッサコアのうちの1つに経路指定し得る。
次に図5を参照して、マルチコアプロセッサにおける割込みマスクについて本明細書で提示する実施形態に関してさらに詳細に説明する。特に、図5は、本明細書で提示する少なくともいくつかの実施形態に従って構成された、CIM305を有するマルチコア・プロセッサ・コンピューティング・システムにおいて割込みを処理するためのプロセス500を示す流れ図である。
本明細書で説明する動作は、一連の動作もしくは製造行為として、一連のコンピュータによる動作もしくはコンピューティングシステム上で走るプログラムモジュールとして、または相互接続された機械論理回路もしくはコンピューティングシステム内の回路モジュールとして実施されることを理解すべきである。実施態様は、様々な実施形態の性能および他の要件に依存する選択の問題である。本明細書で説明する論理動作の中には、状態動作、構造的装置、作用、またはモジュールと、様々な名称で呼ばれるものがある。これらの動作、機能、構造的装置、作用、およびモジュールは、ソフトウェア、ファームウェア、専用デジタル論理として実施されても、これらの組み合わせとして実施されてもよい。また、各図に示され、本明細書に記載される動作よりも多い、または少ない動作が実施されてもよいことも理解すべきである。またこれらの動作は、順次に実施されても、並列に実施されても、本明細書に記載されるのとは異なる順序で実施されてもよい。
プロセス500は、ブロック502、ブロック504および/またはブロック506のうちの1つまたは複数によって示される様々な動作、機能、または措置を含み得る。プロセス500は、ブロック502(割込みサービスルーチンと関連付けられた割込みを受け取る)から開始してよく、そこで割込み制御器220は割込み線225からIRQを受け取り得る。IRQはISR134といったISRと関連付けられていてよい。ブロック502に続いてブロック504が行われ得る。
ブロック504(利用可能なプロセッサコアを決定する)で、割込み制御器220、特にISR誘導論理235は、CIM305を読み取る(すなわち評価する)ことによって利用可能なプロセッサコアを決定し得る。例えば、CIM305は、プロセッサコア115における利用可能なプロセッサコアと利用不可能なプロセッサコアとを表示するビット値を記憶し得る。ブロック504に続いてブロック506が行われ得る。
ブロック506(割込みサービスルーチンを利用可能なプロセッサに割り当てる)で、割込み制御器220、特にISR誘導論理235は、関連付けられたISR134を、CIM305によって指定される利用可能なプロセッサコアのうちの1つに割り当てることができる。また割込み制御器220は、IRQを、CIM305によって指定される利用可能なプロセッサコアのうちの1つに割り当ててもよい。ブロック506の後で、プロセスは(例えば、周期的に、連続して、または必要に応じて要求時に)繰り返しても、終了してもよい。
図6は、本明細書で提示する少なくともいくつかの実施形態を実施することのできるコンピューティングシステムのための例示的なコンピュータ・ハードウェア・アーキテクチャを示すコンピュータアーキテクチャ図である。図6は、マルチコアプロセッサ110と、メモリ620と、1つまたは複数のドライブ630とを含むコンピュータ600を含む。コンピュータ600は、通常のコンピュータシステム、埋め込み制御コンピュータ、ラップトップとして、もしくはサーバコンピュータ、モバイル機器、セット・トップ・ボックス、キオスク、車両情報システム、携帯電話、カスタマイズマシン、または他のハードウェアプラットフォームとして実施されてよい。プロセッサ610は、汎用プロセッサ、プロセッサコア、マルチプロセッサ、マルチコアプロセッサ、グラフィックスプロセッサ、デジタル信号処理(「DSP」)プロセッサ、特定用途向け集積回路(「ASIC」)内に実装されたカスタマイズ・コンピューティング・デバイス、フィールド・プログラマブル・ゲート・アレイ(「FPGA」)内に実装されたカスタマイズ・コンピューティング・デバイス、任意の種類のプログラマブル論理内に実装されたカスタマイズ・コンピューティング・デバイス、状態機械、再構成可能なプロセッサ、他の任意の処理装置、またはこれらの組み合わせもしくは複合とすることができる。いくつかの実施形態によれば、プロセッサ610は、前述のようなCIM305、割込み制御器220、IMR315、および/またはCIM設定モジュール320を含み得る。
ドライブ630、および各ドライブと関連付けられたコンピュータ記憶媒体は、コンピュータ600のためのコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの記憶を提供することができる。ドライブ630は、オペレーティングシステム640、アプリケーションプログラム650、プログラムモジュール660、およびデータベース680を含むことができる。コンピュータ600はさらに、ユーザがコマンドおよびデータを入力するためのユーザ入力機器690を含む。入力機器には、電子デジタイザ、マイクロホン、キーボードおよび一般にマウスと呼ばれるポインティングデバイス、トラックボールまたはタッチパッドが含まれ得る。他の入力機器には、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどが含まれ得る。
上記その他の入力機器は、システムバスに結合されたユーザ入力インターフェースを介してプロセッサ610に結合することができるが、パラレルポート、ゲームポート、ユニバーサル・シリアル・バス(「USB」)といった他のインターフェースおよびバス構造によって結合されてもよい。またコンピュータ600などのコンピュータは、スピーカなどの他の周辺出力機器を含んでいてもよく、それらの出力機器は、出力周辺インターフェース694などを介して結合され得る。
コンピュータ600は、ネットワークインターフェース696に結合されたリモートコンピュータなど、1つまたは複数のコンピュータへの論理接続を使用したネットワークで接続された環境において動作し得る。リモートコンピュータは、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスまたは他の一般的なネットワークノードとすることができ、コンピュータ600に関して上述した要素の多くまたは全部を含むことができる。ネットワーキング環境は、オフィス、企業の広域ネットワーク(「WAN」)、ローカル・エリア・ネットワーク(「LAN」)、イントラネットおよびインターネットにおいてよく見られる。
LANまたはWLANネットワーキング環境で使用されるときに、コンピュータ600は、ネットワークインターフェース696またはアダプタを介してLANに結合される。WANネットワーキング環境で使用されるときに、コンピュータ600は通常、モデム、またはインターネットやネットワーク608などのWAN上での通信を確立するための他の手段を含む。WANには、インターネット、図示のネットワーク608、他の様々なネットワーク、またはそれらの任意の組み合わせが含まれ得る。コンピュータ間の通信リンク、リング、メッシュ、バス、クラウド、またはネットワークを確立する他の機構が使用されてもよいことが理解されるであろう。
いくつかの実施形態によれば、コンピュータ600は、プロセッサ610および/またはプログラムモジュール660が、本明細書の実施形態に従ってマルチコアプロセッサ内で割込みを処理することができるようにネットワーキング環境に結合され得る。コンピュータ600は、ドライブ630または他の記憶装置と関連付けられた1つまたは複数の物理的なコンピュータ可読記憶媒体の1つまたは複数の例を含み得る。システムバスは、プロセッサ610がコンピュータ可読記憶媒体との間でコードおよび/またはデータを読み取ることを可能にし得る。媒体は、それだけに限らないが、半導体、磁性材料、光媒体、電気的記憶、電気化学的記憶、または他の任意のそのような記憶技術を含む任意の適切な技術を使用して実施された記憶素子としての装置を表し得る。媒体は、RAM、ROM、フラッシュ、または他の種類の揮発性もしくは不揮発性メモリ技術のいずれとして特徴付けられるにせよ、メモリ620と関連付けられた構成要素を表し得る。また媒体は、記憶ドライブ630として実施されるにせよ、別のやり方で実施されるにせよ、2次記憶も表し得る。ハードドライブ実装形態は、固体として特徴付けられてもよく、磁気的に符号化された情報を記憶する回転媒体を含んでいてもよい。
記憶媒体は、制御モジュール310および/またはISR134といった1つまたは複数のプログラムモジュール660を含み得る。プログラムモジュール660は、プロセッサ610にロードされ、実行されると、汎用コンピューティングシステムを、本明細書で開示されるマルチコアプロセッサ内で割込みを処理するようにカスタマイズされた専用コンピューティングシステムに変換するソフトウェア命令を含み得る。本明細書を全体で詳述するように、プログラムモジュール660は、コンピュータ600が、本明細書で論じるコンポーネント、論理フロー、および/またはデータ構造を使用して全般的なシステムまたは動作環境内で関与するための様々なツールまたは技法を提供し得る。
プロセッサ610は、任意の数のトランジスタまたは他の回路素子から構築されていてよく、これらのトランジスタまたは他の回路素子は、個々に、またはまとまって任意の数の状態を帯びることが可能である。より具体的には、プロセッサ610は、状態機械または有限状態機械として動作し得る。そのような機械は、プログラムモジュール660内に含まれる実行可能命令をロードすることにより第2の機械、または特定の機械に変換され得る。これらのコンピュータ実行可能命令は、プロセッサ610が状態間をどのように遷移するか指定することによってプロセッサ610を変換し、それによって、プロセッサ610を構成するトランジスタまたは他の回路素子を、第1の機械から第2の機械へと変換することができ、第2の機械は、マルチコアプロセッサにおける割込みを処理するように特に構成され得る。またどちらの機械の状態も、1つもしくは複数のユーザ入力機器690、ネットワークインターフェース696、他の周辺機器、他のインターフェース、または1名もしくは複数のユーザもしくは他の動作者から入力を受け取ることによっても変換され得る。またどちらの機械も、状態、すなわち、プリンタ、スピーカ、ビデオディスプレイなどといった様々な出力機器の様々な物理的特性も変換し得る。
また、プログラムモジュール660を符号化することにより、記憶媒体の物理的構造も変換され得る。物理的構造の特定の変換は、本明細書の様々な実体態様における様々な要因に左右され得る。そのような要因の例には、それだけに限らないが、記憶媒体を実施するのに使用される技術、記憶媒体が1次記憶として特徴付けられるかそれとも2次記憶として特徴付けられるかなどが含まれ得る。例えば、記憶媒体が半導体ベースのメモリとして実施される場合、プログラムモジュール660は、ソフトウェアがそこで符号化されるときに、半導体メモリ620の物理的状態を変換し得る。例えば、ソフトウェアは、半導体メモリ620を構成するトランジスタ、コンデンサ、または他のディスクリート回路素子の状態を変換し得る。
別の例として、記憶媒体は、ドライブ630などの磁気的技術または光学的技術を使用して実施されてもよい。そのような実施態様では、プログラムモジュール660は、ソフトウェアがそこで符号化されるときに、磁気媒体または光媒体の物理的状態を変換し得る。これらの変換は、所与の磁気媒体内の特定の位置の磁気特性を変更することを含み得る。またこれらの変換は、所与の光媒体内の特定の位置の物理的特徴または特性を変更して、それらの位置の光学的特性を変更することも含み得る。本明細書の範囲および趣旨を逸脱することなく、物理媒体の他の様々な変換も可能であることを理解すべきである。
次に図7を見ると、概略図に、本明細書で提示する少なくともいくつかの実施形態に従って構成されたコンピューティング機器上でコンピュータプロセスを実行するためのコンピュータプログラムを含むコンピュータプログラム製品700の部分図が示されている。コンピュータプログラム製品例の例示的実施形態が、信号保持媒体702を使用して提供され、コンピュータプログラム製品は、以下の命令704のうちの少なくとも1つを含み得る。コア割込みマスクを、マルチコアプロセッサ上の複数のプロセッサコアにおける利用可能なプロセッサコアと利用不可能なプロセッサコアとを指定するように構成するための1つもしくは複数の命令;割込みサービスルーチンと関連付けられた割込みを受け取るための1つもしくは複数の命令;コア割込みマスクを読み取ることによって利用可能なプロセッサコアを識別するための1つもしくは複数の命令;または、割込みサービスルーチンを、利用不可能なプロセッサコアから離して利用可能なプロセッサコアのうちの少なくとも1つに割り当てるための1つもしくは複数の命令。1つまたは複数の命令は、例えば、コンピュータ実行可能命令および/または論理による命令とすることができる。実施形態によっては、1つまたは複数のコンピュータプログラム製品700の信号保持媒体702は、コンピュータ可読媒体706、記録可能媒体708、および/または通信媒体710を含む。
本明細書で説明する主題は、コンピュータシステム上でオペレーティングシステムおよびアプリケーションプログラムの実行と併せて実行されるプログラムモジュールの一般的状況において提示されているが、当業者は、別の実施態様が別の種類のプログラムモジュールとの組み合わせで実施されてもよいことを理解するであろう。一般に、プログラムモジュールには、ルーチン、プログラム、コンポーネント、データ構造、および特定のタスクを実行し、または特定の抽象データ型を実施する別の種類の構造が含まれる。さらに、本明細書で説明する主題は、ハンドヘルド機器、マルチコア・プロセッサ・システム、マイクロプロセッサベースまたはプログラマブル家電製品、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成を用いて実施されてもよいことも当業者は理解するであろう。
本開示は、様々な態様の例示として意図されている本出願に記載される特定の実施形態だけに限定されるものではない。当業者には理解されるように、本開示の趣旨および範囲を逸脱することなく、多くの改変および変形を加えることができる。本明細書に記載されているもの以外の、本開示の範囲内の機能的に等価な方法および装置も、以上の説明を読めば当業者には明らかになるであろう。そのような改変および変形は、添付の特許請求の範囲の範囲内に含まれるべきである。本開示は、添付の特許請求の範囲の各項と、かかる特許請求の範囲の権利付与の対象となる全範囲の均等物とによってのみ限定されるべきである。本開示は、特定の方法、試薬、化合物、組成物、または生体系だけに限定されず、当然ながら多様であり得ることを理解すべきである。また、本明細書において使用される用語は特定の実施形態を説明するためのものにすぎず、限定的であることが意図されていないことも理解すべきである。
本明細書における実質的にいかなる複数形および/または単形数の用語の使用についても、当業者は、状況および/または用途に適するように、複数形から単数形に、かつ/または単数形から複数形に変換することができる。本明細書においては明確にするために様々な単数形/複数形の置換形が明示され得る。
一般に、本明細書において、特に添付の特許請求の範囲(例えば添付の特許請求の範囲の本文など)において使用される語は、一般には、「非限定的な(open)」語として意図されている(例えば、「including(〜を含み)」という語は「それだけに限らないが〜を含み」と解釈すべきであり、「having(〜を有し)」という語は「少なくとも〜を有し」と解釈すべきであり、「includes(〜を含む)」という語は、「それだけに限らないが、〜を含む」と解釈すべきであるなど)ことが当業者には理解されるであろう。さらに、特定の数の導入請求項記載が意図される場合、そのような意図は当該請求項において明示的に記載され、そのような記載がない場合にはそのような意図が存在しないことも当業者には理解されるであろう。例えば、理解の一助として、添付の特許請求の範囲は、請求項記載を導入するために、「少なくとも1つの」および「1つまたは複数の」という導入句の使用を含み得る。しかし、そのような句の使用は、同じ請求項が「1つまたは複数の」あるいは「少なくとも1つの」という導入句および「a」や「an」といった不定冠詞を含むときでさえも、不定冠詞「a」または「an」による請求項記載の導入が、そのような導入請求項記載を含む任意の特定の請求項を、ただ1つのそのような記載を含む実施形態だけに限定することを意味するものと解釈されるべきではない(例えば、「a」および/または「an」は「少なくとも1つの」または「1つまたは複数の」を意味するものと解釈されるべきであるなど)。同じことが、請求項記載を導入するのに使用される定冠詞の使用についても当てはまる。加えて、特定の数の導入請求項記載が明示的に記載されている場合でさえも、そのような記載が、少なくとも記載される数を意味するものと解釈されるべきであることを当業者は理解するであろう(例えば、他の修飾語句を伴わない「2つの記載」という記載だけで、少なくとも2つの記載、または2つ以上の記載を意味するなど)。さらに、「A、B、およびCのうちの少なくとも1つなど」に類似した慣用表現が使用される場合、一般にそのような構造は、当業者が当該慣用表現を理解するはずの意味として意図されるものである(例えば、「A、B、およびCのうちの少なくとも1つを有するシステム」は、それだけに限らないが、Aだけを、Bだけを、Cだけを、AとBとを共に、AとCとを共に、BとCとを共に、かつ/またはA、B、およびCを共に有するシステムを含むはずであるなど)。「A、B、またはCのうちの少なくとも1つなど」に類似した慣用表現が使用される場合、一般にそのような構造は、当業者が当該慣用表現を理解するはずの意味として意図されるものである(例えば、「A、B、またはCのうちの少なくとも1つを有するシステム」は、それだけに限らないが、Aだけを、Bだけを、Cだけを、AとBとを共に、AとCとを共に、BとCとを共に、かつ/またはA、B、およびCを共に有するシステムを含むはずであるなど)。さらに、2つ以上の択一的項目を提示する事実上あらゆる選言的な語および/または句は、本明細書においてであれ、特許請求の範囲においてであれ、図面においてであれ、それらの項目のうちの1つ、それらの項目のうちのどちらか、またはそれらの項目の両方を含む可能性を企図するものと理解すべきであることも当業者には理解されるであろう。例えば、「AまたはB」という句は、「A」または「B」または「AおよびB」の可能性を含むものと理解されるであろう。
加えて、本開示の特徴または態様がマーカッシュグループとして記載される場合、本開示が、それによって、マーカッシュグループの任意の個々のメンバまたはメンバの下位グループとしても記載されるものであることを当業者は理解するであろう。
当業者には理解されるように、ありとあらゆる目的で、例えば明細書を提供することに関して、本明細書において開示されるあらゆる範囲は、そのありとあらゆる可能な下位範囲および下位範囲の組み合わせも包含するものである。あらゆる記載範囲は、その同じ範囲が、少なくとも2等分、3等分、4等分、5等分、10等分などに分割されることを十分に説明し、可能にするものとして容易に理解され得るものである。非限定的例を挙げると、本明細書で論じる各範囲は、下3分の1、中3分の1および上3分の1に容易に分割することができる。またやはり当業者には理解されるように、「最大〜まで(up to)」、「少なくとも(at least)」「〜より大(greater than)」「〜より小(less than)」などといったすべての表現は、記載される数を含み、後で前述の下位範囲に分割され得る範囲を指し示すものである。最後に、当業者には理解されるように、範囲は個々の各メンバを含む。よって例えば、1〜3個の要素を有するグループは、1個、2個、または3個の要素を有するグループを指す。同様に、1〜5個の要素を有するグループは、1個、2個、3個、4個または5個の要素を有するグループを指し、以下同様である。
本明細書では様々な態様および実施形態が開示されているが、当業者には他の態様および実施形態も明らかであろう。本明細書で開示する様々な態様および実施形態は例示のためのものであり、限定を意図するものではなく、その真の範囲および趣旨は添付の特許請求の範囲によって指示される。

Claims (18)

  1. 複数のプロセッサコアを有するマルチコアプロセッサ内で割込みを処理するための方法であって、
    割込みサービスルーチンと関連付けられた割込みを受け取るステップと、
    前記複数のプロセッサコアのそれぞれを、利用可能なプロセッサコアと利用不可能なプロセッサコアのどちらかとして指定するコア割込みマスクを評価して、前記複数のプロセッサコアの中から1つまたは複数の利用可能なプロセッサコアを識別するステップと、
    前記受け取った割込みと関連付けられた前記割込みサービスルーチンを、前記1つまたは複数の利用可能なプロセッサコアのうちの少なくとも1つに割り当てるステップと、
    前記複数のプロセッサコアを利用可能なプロセッサコアとして指定するように前記コア割込みマスクを初期設定するステップと、
    1つまたは複数の設定基準に基づいて、前記複数のプロセッサコアのうちの1つまたは複数を利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定するステップであって、前記複数のプロセッサコアのうちの1つまたは複数と関連付けられた1つまたは複数の個々のキャッシュが相当量のデータを含むときに、前記プロセッサコアのうちの前記1つまたは複数を利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定するステップ
    を含む、方法。
  2. 前記コア割込みマスクが複数のビットを有するレジスタを備え、前記複数のビットのそれぞれが前記複数のプロセッサコアのうちの個々の1つに対応し、前記複数のビットのそれぞれが第1の値と第2の値のどちらかを記憶し、前記第1の値が、前記複数のプロセッサコアのうちの前記対応する1つが前記利用可能なプロセッサコアのうちの1つであることを指定し、前記第2の値が、前記複数のプロセッサコアのうちの前記対応する1つが前記利用不可能なプロセッサコアのうちの1つであることを指定する、請求項1に記載の方法。
  3. 1つまたは複数の設定基準に基づいて、前記複数のプロセッサコアのうちの1つまたは複数を利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定するステップが、前記複数のプロセッサコアのうちの1つまたは複数が1つまたは複数の個々のバスに物理的に近接して位置決めされているときに、前記プロセッサコアのうちの前記1つまたは複数を利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定するステップを含む、請求項1に記載の方法。
  4. 1つまたは複数の設定基準に基づいて、前記複数のプロセッサコアのうちの1つまたは複数を利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定するステップが、前記複数のプロセッサコアのうちの複数が相互に協働し合うときに、前記複数のプロセッサコアのうちの前記複数を利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定するステップを含む、請求項1に記載の方法。
  5. 1つまたは複数の設定基準に基づいて、前記複数のプロセッサコアのうちの1つまたは複数を利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定するステップが、前記複数のプロセッサコアのうちの1つまたは複数がタスクを実行し始めているときに、前記複数のプロセッサコアのうちの前記1つまたは複数を利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定するステップを含む、請求項1に記載の方法。
  6. 前記コア割込みマスクによって指定される利用不可能なプロセッサコアの数を監視するステップと、
    利用不可能なプロセッサコアの数が閾値を超えるかどうか判定するステップと、
    利用不可能なプロセッサコアの前記数が前記閾値を超えると判定されるときに、前記コア割込みマスクによって指定される前記利用不可能なプロセッサコアの前記数を低減するステップと
    をさらに含む、請求項1に記載の方法。
  7. 複数のプロセッサコアを含むマルチコアプロセッサ内で割込みを処理するためのシステムであって、
    前記マルチコアプロセッサに割込み要求を伝えるように適合された割込み線と、
    前記複数のプロセッサコアのそれぞれと関連付けられた、利用可能なプロセッサコアと利用不可能なプロセッサコアのどちらかに対応する状況を指定するように適合されたコア割込みマスクであって、
    ‐前記複数のプロセッサコアのうちの1つまたは複数と関連付けられたキャッシュが相当量のデータを含む場合、
    ‐前記複数のプロセッサコアのうちの1つまたは複数が特定のバスに物理的に近接して位置決めされている場合、
    ‐前記複数のプロセッサコアのうちの複数が互いに協働している場合、若しくは
    ‐前記複数のプロセッサコアのうちの1つまたは複数がタスクを実行し始める場合
    のいずれかの場合に、それぞれの場合における、前記複数のプロセッサコアのうちの前記1つ又は複数、または、前記複数のプロセッサコアのうちの前記複数を、利用不可能と設定するように構成された、コア割込みマスクと、
    前記割込み線を介して割込み要求を受け取り、
    前記コア割込みマスクを評価して1つまたは複数の利用可能なプロセッサコアを識別し、
    前記割込み要求の処理を前記利用可能なプロセッサコアのうちの1つに割り当てるように構成された割込み制御器と
    を備える、システム。
  8. 前記割込み線から受け取られる割込み要求が前記割込み制御器によって無視されるかどうか指定するように適合されている割込みマスクレジスタをさらに備える、請求項7に記載のシステム。
  9. 前記割込み要求がマスク可能な割込みとマスク不可能な割込みとを含む、請求項7に記載のシステム。
  10. 前記コア割込みマスクが複数のビットを有するレジスタを備え、前記複数のビットのそれぞれが前記複数のプロセッサコアのうちの個々の1つに対応し、前記複数のビットのそれぞれが第1の値と第2の値のどちらかを記憶するように構成され、前記第1の値が、前記複数のプロセッサコアのうちの前記対応する1つが前記利用可能なプロセッサコアのうちの1つであることを指定するように構成され、前記第2の値が、前記複数のプロセッサコアのうちの前記対応する1つが前記利用不可能なプロセッサコアのうちの1つであることを指定するように構成された、請求項7に記載のシステム。
  11. 前記コア割込みマスク内の前記複数のビットを前記第1の値に初期設定し、
    1つまたは複数の設定基準に基づいて、前記複数のビットのうちの1つまたは複数を前記第1の値から前記第2の値に設定する
    ように構成された制御モジュールをさらに備える、請求項10に記載のシステム。
  12. 前記複数のプロセッサコアが、
    前記コア割込みマスク内の前記複数のビットを前記第1の値に初期設定し、
    1つまたは複数の設定基準に基づいて、前記複数のビットのうちの1つまたは複数を前記第1の値から前記第2の値に設定する
    ように構成されている、請求項10に記載のシステム。
  13. 前記複数のプロセッサコアが、
    前記コア割込みマスク内の前記複数のビットを前記第2の値に初期設定し、
    前記複数のビットのうちの1つまたは複数に対応する前記個々のプロセッサコアが利用可能であることを表明するときに、前記複数のビットのうちの前記1つまたは複数を前記第2の値から前記第1の値に設定する
    ように構成されている、請求項10に記載のシステム。
  14. 複数のプロセッサコアを備えるマルチコアプロセッサを含むコンピュータシステムによって実行されると、前記コンピュータシステムに、
    前記複数のプロセッサコアのそれぞれと関連付けられた、利用可能なプロセッサコアと利用不可能なプロセッサコアのどちらかに対応する状況を指定するようにコア割込みマスクを構成させ、ここでプロセッサコアが前記マルチコアプロセッサの他のプロセッサコアと関連付けられた他のキャッシュにおいてミラーリングされていないデータを含むキャッシュに関すると識別されるときに、前記コア割込みマスクが当該プロセッサコアを利用不可能なプロセッサコアと設定するように構成され、
    割込みサービスルーチンと関連付けられた割込み要求を受け取らせ、
    前記コア割込みマスクを評価して1つまたは複数の利用可能なプロセッサコアを識別させ、
    前記受け取った割込み要求と関連付けられた前記割込みサービスルーチンを前記利用可能なプロセッサコアのうちの少なくとも1つに割り当てさせる
    コンピュータ実行可能命令が記憶されているコンピュータ記憶媒体。
  15. 前記コア割込みマスクが複数のビットを有するレジスタを備え、前記複数のビットのそれぞれが前記複数のプロセッサコアのうちの個々の1つに対応し、前記複数のビットのそれぞれが第1の値と第2の値のどちらかを記憶するように構成され、前記第1の値が、前記複数のプロセッサコアのうちの前記対応する1つが前記利用可能なプロセッサコアのうちの1つであることを指定するように構成され、前記第2の値が、前記複数のプロセッサコアのうちの前記対応する1つが前記利用不可能なプロセッサコアのうちの1つであることを指定するように構成された、請求項14に記載のコンピュータ記憶媒体。
  16. 複数のプロセッサコアにおける利用可能なプロセッサコアと利用不可能なプロセッサコアとを指定するようにコア割込みマスクを構成するために、前記コンピュータ実行可能命令が前記コンピュータシステムにさらに、
    前記マルチコアプロセッサ内の他のプロセッサコアと関連付けられた他のキャッシュにおいてミラーリングされていないデータを含む関連付けられたキャッシュを有するプロセッサコアを識別させ、
    前記識別されたプロセッサコアを前記利用不可能なプロセッサコアのうちの1つとして指定するように前記コア割込みマスクを設定させる
    請求項14に記載のコンピュータ記憶媒体。
  17. 複数のプロセッサコアにおける利用可能なプロセッサコアと利用不可能なプロセッサコアとを指定するようにコア割込みマスクを構成するために、前記コンピュータ実行可能命令が前記コンピュータシステムに、
    前記マルチコアプロセッサ内の第2のプロセッサコアとの物理的近接性を有し、協働している第1のプロセッサコアを識別させ、
    前記識別された第1のプロセッサコアと前記第2のプロセッサコアとを前記利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定させる
    請求項14に記載のコンピュータ記憶媒体。
  18. 複数のプロセッサコアにおける利用可能なプロセッサコアと利用不可能なプロセッサコアとを指定するようにコア割込みマスクを構成するために、前記コンピュータ実行可能命令が前記コンピュータシステムに、
    前記マルチコアプロセッサ内の第1のプロセッサコアおよび第2のプロセッサコアであって、前記第1のプロセッサコアとバスの間の物理的近接性のほうが、前記第2のプロセッサコアと前記バスの間の物理的近接性よりも、より近いものである、前記第1のプロセッサコアおよび前記第2のプロセッサコアを識別させ、
    前記識別された第1のプロセッサコアを前記利用不可能なプロセッサコアのうちの1つとして指定し、前記識別された第2のプロセッサコアを利用可能なプロセッサコアのうちの1つとして指定するように前記コア割込みマスクを設定させる
    請求項14に記載のコンピュータ記憶媒体。
JP2012534273A 2009-10-13 2010-10-12 マルチコアプロセッサのための割込みマスク Active JP5492305B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/578,270 2009-10-13
US12/578,270 US8234431B2 (en) 2009-10-13 2009-10-13 Interrupt masking for multi-core processors
PCT/US2010/052244 WO2011046895A2 (en) 2009-10-13 2010-10-12 Interrupt masking for multi-core processors

Publications (2)

Publication Number Publication Date
JP2013507719A JP2013507719A (ja) 2013-03-04
JP5492305B2 true JP5492305B2 (ja) 2014-05-14

Family

ID=43855723

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012534273A Active JP5492305B2 (ja) 2009-10-13 2010-10-12 マルチコアプロセッサのための割込みマスク

Country Status (4)

Country Link
US (1) US8234431B2 (ja)
EP (1) EP2488953B1 (ja)
JP (1) JP5492305B2 (ja)
WO (1) WO2011046895A2 (ja)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2166457B1 (en) * 2008-09-12 2014-04-23 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Interrupt controller and methods of operation
US8260996B2 (en) * 2009-04-24 2012-09-04 Empire Technology Development Llc Interrupt optimization for multiprocessors
US8321614B2 (en) * 2009-04-24 2012-11-27 Empire Technology Development Llc Dynamic scheduling interrupt controller for multiprocessors
WO2011044398A2 (en) * 2009-10-07 2011-04-14 Qsigma, Inc. Computer for amdahl-compliant algorithms like matrix inversion
US8321615B2 (en) 2009-12-18 2012-11-27 Intel Corporation Source core interrupt steering
KR101717494B1 (ko) * 2010-10-08 2017-03-28 삼성전자주식회사 인터럽트 처리 장치 및 방법
WO2012155963A2 (de) * 2011-05-17 2012-11-22 Siemens Aktiengesellschaft Host-system
KR101867336B1 (ko) * 2011-07-11 2018-06-15 삼성전자주식회사 다중 프로세서를 지원하는 인터럽트 발생을 위한 장치 및 방법
KR20130021637A (ko) * 2011-08-23 2013-03-06 삼성전자주식회사 멀티 코어 시스템의 인터럽트 할당 방법 및 장치
CN106155265B (zh) 2011-09-06 2020-03-31 英特尔公司 有功率效率的处理器体系结构
US8972642B2 (en) * 2011-10-04 2015-03-03 Qualcomm Incorporated Low latency two-level interrupt controller interface to multi-threaded processor
TWI463406B (zh) * 2011-10-31 2014-12-01 Univ Nat Taiwan 具搶占功能的即時中斷處理系統及其方法
US9250682B2 (en) 2012-12-31 2016-02-02 Intel Corporation Distributed power management for multi-core processors
US9164935B2 (en) 2013-01-04 2015-10-20 International Business Machines Corporation Determining when to throttle interrupts to limit interrupt processing to an interrupt processing time period
KR102082859B1 (ko) * 2013-01-07 2020-02-28 삼성전자주식회사 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법
US9524195B2 (en) 2014-02-27 2016-12-20 International Business Machines Corporation Adaptive process for data sharing with selection of lock elision and locking
WO2015073009A1 (en) * 2013-11-14 2015-05-21 Hewlett-Packard Development Company, L.P. Mark cache entry
US9406015B2 (en) 2013-12-27 2016-08-02 International Business Machines Corporation Transform for a neurosynaptic core circuit
US9412063B2 (en) 2013-12-27 2016-08-09 International Business Machines Corporation Transform architecture for multiple neurosynaptic core circuits
US9361041B2 (en) 2014-02-27 2016-06-07 International Business Machines Corporation Hint instruction for managing transactional aborts in transactional memory computing environments
US9336097B2 (en) 2014-02-27 2016-05-10 International Business Machines Corporation Salvaging hardware transactions
US9645879B2 (en) 2014-02-27 2017-05-09 International Business Machines Corporation Salvaging hardware transactions with instructions
US9442853B2 (en) 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging lock elision transactions with instructions to change execution type
US9411729B2 (en) 2014-02-27 2016-08-09 International Business Machines Corporation Salvaging lock elision transactions
US9471371B2 (en) 2014-02-27 2016-10-18 International Business Machines Corporation Dynamic prediction of concurrent hardware transactions resource requirements and allocation
US9575890B2 (en) 2014-02-27 2017-02-21 International Business Machines Corporation Supporting atomic accumulation with an addressable accumulator
US9442775B2 (en) 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging hardware transactions with instructions to transfer transaction execution control
US9430273B2 (en) 2014-02-27 2016-08-30 International Business Machines Corporation Suppressing aborting a transaction beyond a threshold execution duration based on the predicted duration
US9311178B2 (en) 2014-02-27 2016-04-12 International Business Machines Corporation Salvaging hardware transactions with instructions
US9465673B2 (en) 2014-02-27 2016-10-11 International Business Machines Corporation Deferral instruction for managing transactional aborts in transactional memory computing environments to complete transaction by deferring disruptive events handling
US20150242216A1 (en) 2014-02-27 2015-08-27 International Business Machines Corporation Committing hardware transactions that are about to run out of resource
US9424072B2 (en) 2014-02-27 2016-08-23 International Business Machines Corporation Alerting hardware transactions that are about to run out of space
US9329946B2 (en) 2014-02-27 2016-05-03 International Business Machines Corporation Salvaging hardware transactions
US9262206B2 (en) 2014-02-27 2016-02-16 International Business Machines Corporation Using the transaction-begin instruction to manage transactional aborts in transactional memory computing environments
US9524187B2 (en) 2014-03-02 2016-12-20 International Business Machines Corporation Executing instruction with threshold indicating nearing of completion of transaction
US9665509B2 (en) * 2014-08-20 2017-05-30 Xilinx, Inc. Mechanism for inter-processor interrupts in a heterogeneous multiprocessor system
US20160188503A1 (en) * 2014-12-25 2016-06-30 Intel Corporation Virtual legacy wire
US10768984B2 (en) 2015-06-11 2020-09-08 Honeywell International Inc. Systems and methods for scheduling tasks using sliding time windows
US10013279B2 (en) 2015-07-28 2018-07-03 International Business Machines Corporation Processing interrupt requests
US9747139B1 (en) * 2016-10-19 2017-08-29 International Business Machines Corporation Performance-based multi-mode task dispatching in a multi-processor core system for high temperature avoidance
US10719902B2 (en) 2017-04-17 2020-07-21 Intel Corporation Thread serialization, distributed parallel programming, and runtime extensions of parallel computing platform
US11126474B1 (en) * 2017-06-14 2021-09-21 Amazon Technologies, Inc. Reducing resource lock time for a virtual processing unit
US10802831B2 (en) * 2017-06-30 2020-10-13 Sap Se Managing parallel processing
US10592281B1 (en) 2017-09-28 2020-03-17 Amazon Technologies, Inc. Wait optimizer for recording an order of first entry into a wait mode by a virtual central processing unit
US10423550B2 (en) * 2017-10-25 2019-09-24 International Business Machines Corporation Managing efficient selection of a particular processor thread for handling an interrupt
US10276251B1 (en) * 2017-12-21 2019-04-30 Sandisk Technologies Llc Partial memory die with masked verify
CN110119304B (zh) * 2018-02-07 2021-08-31 华为技术有限公司 一种中断处理方法、装置及服务器
EP4038535A1 (en) * 2019-10-23 2022-08-10 Huawei Technologies Co., Ltd. Secure peripheral component access
CN111209240B (zh) * 2019-12-23 2021-08-03 深圳优地科技有限公司 数据传输的方法、电子设备及存储介质
KR20220094601A (ko) 2020-12-29 2022-07-06 삼성전자주식회사 스토리지 장치 및 그 구동 방법
DE102022109559A1 (de) 2022-04-20 2023-10-26 Infineon Technologies Ag Verarbeitung von Interrupts

Family Cites Families (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5110742A (ja) * 1974-07-17 1976-01-28 Hitachi Ltd
US4047161A (en) 1976-04-30 1977-09-06 International Business Machines Corporation Task management apparatus
NL7907179A (nl) 1979-09-27 1981-03-31 Philips Nv Signaalprocessorinrichting met voorwaardelijke- -interrupteenheid en multiprocessorsysteem met deze signaalprocessorinrichtingen.
US4964040A (en) 1983-01-03 1990-10-16 United States Of America As Represented By The Secretary Of The Navy Computer hardware executive
US4779194A (en) 1985-10-15 1988-10-18 Unisys Corporation Event allocation mechanism for a large data processing system
JPS63184860A (ja) * 1987-01-27 1988-07-30 Fuji Electric Co Ltd マルチプロセツサシステムにおける割込要求制御方式
US5065310A (en) 1989-05-10 1991-11-12 International Business Machines Corporation Reducing cache-reload transient at a context swap
JP2831083B2 (ja) * 1990-03-08 1998-12-02 株式会社日立製作所 マルチプロセッサシステムおよび割り込み制御装置
US5179707A (en) 1990-06-01 1993-01-12 At&T Bell Laboratories Interrupt processing allocation in a multiprocessor system
US5452452A (en) 1990-06-11 1995-09-19 Cray Research, Inc. System having integrated dispatcher for self scheduling processors to execute multiple types of processes
US5555420A (en) 1990-12-21 1996-09-10 Intel Corporation Multiprocessor programmable interrupt controller system with separate interrupt bus and bus retry management
US5613128A (en) 1990-12-21 1997-03-18 Intel Corporation Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller
US5410710A (en) 1990-12-21 1995-04-25 Intel Corporation Multiprocessor programmable interrupt controller system adapted to functional redundancy checking processor systems
US5495615A (en) 1990-12-21 1996-02-27 Intel Corp Multiprocessor interrupt controller with remote reading of interrupt control registers
JP2855298B2 (ja) 1990-12-21 1999-02-10 インテル・コーポレーション 割込み要求の仲裁方法およびマルチプロセッサシステム
US6714559B1 (en) 1991-12-04 2004-03-30 Broadcom Corporation Redundant radio frequency network having a roaming terminal communication protocol
JPH0528114A (ja) * 1991-07-23 1993-02-05 Yokogawa Electric Corp マルチプロセツサ・システム
US5371872A (en) 1991-10-28 1994-12-06 International Business Machines Corporation Method and apparatus for controlling operation of a cache memory during an interrupt
US5313584A (en) 1991-11-25 1994-05-17 Unisys Corporation Multiple I/O processor system
JPH05324569A (ja) * 1992-05-21 1993-12-07 Mitsubishi Electric Corp 割り込み制御方式
EP0602858A1 (en) 1992-12-18 1994-06-22 International Business Machines Corporation Apparatus and method for servicing interrupts in a multiprocessor system
US5379428A (en) 1993-02-01 1995-01-03 Belobox Systems, Inc. Hardware process scheduler and processor interrupter for parallel processing computer systems
SG48803A1 (en) * 1993-04-19 1998-05-18 Intel Corp Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller
JPH0721045A (ja) * 1993-06-15 1995-01-24 Sony Corp 情報処理システム
US5442758A (en) 1993-07-19 1995-08-15 Sequent Computer Systems, Inc. Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring
JPH07114479A (ja) * 1993-10-19 1995-05-02 Hitachi Ltd 割り込み制御方式
JPH07160656A (ja) * 1993-12-13 1995-06-23 Nippon Telegr & Teleph Corp <Ntt> 外部割込み制御方法
EP0685798B1 (en) 1994-05-31 2003-07-16 Advanced Micro Devices, Inc. Interrupt controllers in symmetrical multiprocessing systems
US5564060A (en) 1994-05-31 1996-10-08 Advanced Micro Devices Interrupt handling mechanism to prevent spurious interrupts in a symmetrical multiprocessing system
US5646676A (en) 1995-05-30 1997-07-08 International Business Machines Corporation Scalable interactive multimedia server system for providing on demand data
US5944809A (en) 1996-08-20 1999-08-31 Compaq Computer Corporation Method and apparatus for distributing interrupts in a symmetric multiprocessor system
US5905897A (en) * 1997-03-20 1999-05-18 Industrial Technology Research Institute Method and apparatus for selecting a nonblocked interrupt request
US5918057A (en) 1997-03-20 1999-06-29 Industrial Technology Research Institute Method and apparatus for dispatching multiple interrupt requests simultaneously
US5889978A (en) 1997-04-18 1999-03-30 Intel Corporation Emulation of interrupt control mechanism in a multiprocessor system
JPH11338833A (ja) * 1998-05-22 1999-12-10 Hitachi Ltd マルチプロセッサ型コントローラ及びスケーラブルコントローラシステム
JP2000029719A (ja) 1998-07-14 2000-01-28 Nippon Signal Co Ltd:The 割込制御装置
US6189065B1 (en) * 1998-09-28 2001-02-13 International Business Machines Corporation Method and apparatus for interrupt load balancing for powerPC processors
GB2343269A (en) 1998-10-30 2000-05-03 Ericsson Telefon Ab L M Processing arrangements
US6148361A (en) 1998-12-17 2000-11-14 International Business Machines Corporation Interrupt architecture for a non-uniform memory access (NUMA) data processing system
US6418497B1 (en) 1998-12-21 2002-07-09 International Business Machines Corporation Method and system for interrupt handling using system pipelined packet transfers
US6205508B1 (en) 1999-02-16 2001-03-20 Advanced Micro Devices, Inc. Method for distributing interrupts in a multi-processor system
JP2001005676A (ja) 1999-06-18 2001-01-12 Mitsubishi Electric Corp 割り込み処理装置
US20040100982A1 (en) 1999-09-30 2004-05-27 Sivaram Balasubramanian Distributed real-time operating system
JP2001290660A (ja) 2000-04-10 2001-10-19 Mitsubishi Electric Corp 割込要因選択装置
US6983339B1 (en) 2000-09-29 2006-01-03 Intel Corporation Method and apparatus for processing interrupts of a bus
US7747757B2 (en) 2000-11-17 2010-06-29 Computer Associates Think, Inc. Distributed network query
US20020087775A1 (en) 2000-12-29 2002-07-04 Looi Lily P. Apparatus and method for interrupt delivery
JP3861625B2 (ja) * 2001-06-13 2006-12-20 ソニー株式会社 データ転送システム、データ転送装置、記録装置、データ転送方法
US6779065B2 (en) 2001-08-31 2004-08-17 Intel Corporation Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads
US6996745B1 (en) 2001-09-27 2006-02-07 Sun Microsystems, Inc. Process for shutting down a CPU in a SMP configuration
US7328294B2 (en) 2001-12-03 2008-02-05 Sun Microsystems, Inc. Methods and apparatus for distributing interrupts
US7039740B2 (en) 2002-07-19 2006-05-02 Newisys, Inc. Interrupt handling in systems having multiple multi-processor clusters
US7461215B2 (en) * 2002-10-08 2008-12-02 Rmi Corporation Advanced processor with implementation of memory ordering on a ring based data movement network
US7191349B2 (en) 2002-12-26 2007-03-13 Intel Corporation Mechanism for processor power state aware distribution of lowest priority interrupt
US7350005B2 (en) 2003-05-23 2008-03-25 Arm Limited Handling interrupts in a system having multiple data processing units
GB2403822B (en) * 2003-07-07 2006-05-10 Advanced Risc Mach Ltd Data processing apparatus and method for handling interrupts
US7117285B2 (en) 2003-08-29 2006-10-03 Sun Microsystems, Inc. Method and system for efficiently directing interrupts
US7003611B2 (en) 2003-09-30 2006-02-21 International Business Machines Corporation Method and apparatus for handling interrupts using a set of interrupts servers associated with presentation controllers
US7594234B1 (en) 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
JP2006243865A (ja) 2005-03-01 2006-09-14 Seiko Epson Corp プロセッサおよび情報処理方法
US7581052B1 (en) 2005-08-22 2009-08-25 Sun Microsystems, Inc. Approach for distributing multiple interrupts among multiple processors
US20070106827A1 (en) 2005-11-08 2007-05-10 Boatright Bryan D Centralized interrupt controller
EP1971924B1 (en) 2006-01-04 2011-08-03 Nxp B.V. Methods and system for interrupt distribution in a multiprocessor system
US20070256076A1 (en) 2006-04-27 2007-11-01 Thompson James W System and method for separating multiple workloads processing in a single computer operating environment
US7634642B2 (en) 2006-07-06 2009-12-15 International Business Machines Corporation Mechanism to save and restore cache and translation trace for fast context switch
JP5243711B2 (ja) 2006-11-10 2013-07-24 セイコーエプソン株式会社 プロセッサ
US7627706B2 (en) 2007-09-06 2009-12-01 Intel Corporation Creation of logical APIC ID with cluster ID and intra-cluster ID
US7962679B2 (en) 2007-09-28 2011-06-14 Intel Corporation Interrupt balancing for multi-core and power
US8359561B2 (en) 2007-12-06 2013-01-22 Onespin Solutions Gmbh Equivalence verification between transaction level models and RTL at the example to processors
US7685347B2 (en) 2007-12-11 2010-03-23 Xilinx, Inc. Interrupt controller for invoking service routines with associated priorities
DE102008005124A1 (de) * 2008-01-18 2009-07-23 Kuka Roboter Gmbh Computersystem, Steuerungsvorrichtung für eine Maschine, insbesondere für einen Industrieroboter, und Industrieroboter
CN101546276B (zh) 2008-03-26 2012-12-19 国际商业机器公司 多核环境下实现中断调度的方法及多核处理器
US20090320031A1 (en) * 2008-06-19 2009-12-24 Song Justin J Power state-aware thread scheduling mechanism
US20090327556A1 (en) 2008-06-27 2009-12-31 Microsoft Corporation Processor Interrupt Selection
US7996595B2 (en) 2009-04-14 2011-08-09 Lstar Technologies Llc Interrupt arbitration for multiprocessors
US8321614B2 (en) 2009-04-24 2012-11-27 Empire Technology Development Llc Dynamic scheduling interrupt controller for multiprocessors
US8260996B2 (en) * 2009-04-24 2012-09-04 Empire Technology Development Llc Interrupt optimization for multiprocessors

Also Published As

Publication number Publication date
US20110087815A1 (en) 2011-04-14
US8234431B2 (en) 2012-07-31
WO2011046895A3 (en) 2012-04-05
EP2488953A2 (en) 2012-08-22
WO2011046895A2 (en) 2011-04-21
EP2488953A4 (en) 2014-08-06
EP2488953B1 (en) 2016-11-30
JP2013507719A (ja) 2013-03-04

Similar Documents

Publication Publication Date Title
JP5492305B2 (ja) マルチコアプロセッサのための割込みマスク
US8321614B2 (en) Dynamic scheduling interrupt controller for multiprocessors
JP7313381B2 (ja) ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング
JP5963282B2 (ja) 割り込み分配スキーム
EP3155521B1 (en) Systems and methods of managing processor device power consumption
US8260996B2 (en) Interrupt optimization for multiprocessors
TWI397813B (zh) 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統
US20150006834A1 (en) Method and apparatus for store durability and ordering in a persistent memory architecture
KR101373978B1 (ko) 배치 스케줄링에 의한 스레드들의 스케줄링
US20160019168A1 (en) On-Demand Shareability Conversion In A Heterogeneous Shared Virtual Memory
TW201337771A (zh) 用於包括執行緒合併之能源效率及能源節約的方法、裝置及系統
KR102309327B1 (ko) 인터럽트들의 세트들을 구성하는 장치 및 방법
KR101844809B1 (ko) 클록 게이팅 제어를 위한 조기의 웨이크-경고
JP2011059777A (ja) タスクスケジューリング方法及びマルチコアシステム
US20150301858A1 (en) Multiprocessors systems and processes scheduling methods thereof
JP2021527892A (ja) 分岐命令のタイプに基づく先行分岐予測の選択的実行
EP2846217B1 (en) Controlling reduced power states using platform latency tolerance
US11061840B2 (en) Managing network interface controller-generated interrupts
CN117377943A (zh) 存算一体化并行处理系统和方法
CN108027726B (zh) 用于在远程处理器上实施原子动作的硬件机制
US9418024B2 (en) Apparatus and method for efficient handling of critical chunks
JP6227151B2 (ja) アドレスへの書き込みに対する監視命令を実行するスケーラブル機構
TWI544343B (zh) 伺服器及其方法、系統及其方法
US9460033B2 (en) Apparatus and method for interrupt collecting and reporting status and delivery information
WO2024027413A1 (zh) 一种协同调度方法和相关设备

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131021

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140116

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140228

R150 Certificate of patent or registration of utility model

Ref document number: 5492305

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250