JP2015520429A - 効率的な消費電力管理のための動的インタラプト再コンフィグレーション - Google Patents

効率的な消費電力管理のための動的インタラプト再コンフィグレーション Download PDF

Info

Publication number
JP2015520429A
JP2015520429A JP2015501653A JP2015501653A JP2015520429A JP 2015520429 A JP2015520429 A JP 2015520429A JP 2015501653 A JP2015501653 A JP 2015501653A JP 2015501653 A JP2015501653 A JP 2015501653A JP 2015520429 A JP2015520429 A JP 2015520429A
Authority
JP
Japan
Prior art keywords
interrupt
core
processor
processor core
vectors
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015501653A
Other languages
English (en)
Other versions
JP5981020B2 (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 JP2015520429A publication Critical patent/JP2015520429A/ja
Application granted granted Critical
Publication of JP5981020B2 publication Critical patent/JP5981020B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Power Sources (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)

Abstract

インタラプトの動的な再コンフィグレーションを通じて効率的な消費電力管理を促進するための方法、装置、および、システムである。インタラプトベクトルは、マルチコアプロセッサの中の種々のプロセスに対してマップされ、プロセッサコア上のワークロードがモニタされる。所与のプロセッサに対するインタラプトワークロードが閾値以下に低下したことを検出した場合に、インタラプトベクトルは、プロセッサコアに現在マップされているインタラプトベクトルを少なくとも一つの他のプロセッサコアに再マッピングすることによって、インタラプトベクトルが動的に再コンフィグレーションされる。再コンフィグレーションの後では、プロセッサコアにマップされたインタラプトベクトルが存在しないようにである。そして、コアを、より深いアイドル状態の中に置くことができる。類似のオペレーションを追加のプロセッサコアに対して適用することができ、インタラプトベクトルをより少ないプロセッサコア上に納めることをもたらす。アイドル状態から出てくるコアの検出に応じて、ベクトルの一部をこれらのコアに対して再マップすることにより、インタラプトベクトルの再コンフィグレーションが実行されて、アクティブなコアに渡るベクトルの割り当てが再びバランスされる。

Description

本発明は、一般的にコンピュータシステムに関する。より特定的には、限定するものではなく、マルチコアプロセッサにおける消費電力の削減に関する。
インタラプトは、デバイスからのCPU(中央処理ユニット、つまりプロセッサ)に対するハードウェア信号であり、デバイスがアテンション(attention)を必要としていることをCPUに知らせ、かつ、CPUは現在の処理を停止してデバイスに応答すべきことをシグナルしている。CPUがインタラプトの優先度より低い優先度のタスクを実行している場合に、CPUは現行のスレッド(thread)をサスペンドする。CPUは、次に、インタラプト信号を送付したデバイスに対するインタラプトハンドラを呼び出す。インタラプトハンドラは、デバイスに対してサービスし、インタラプトハンドラが戻ってくると、CPUは、そのインタラプトが発生した以前に行っていた処理を再開する。
古いバス技術におけるインタラプトは、「レガシー(”legacy))」または「ラインベース(”line−based”)」インタラプトとして参照される。こうした技術を用いて、インタラプトは、バスの主ラインから分離して配線された一つまたはそれ以上の外部ピンを使用してシグナルされる。「アウトバンド(”out of band”)」として知られているプロセスである。PCIe(ペリフェラルコンポーネントインターコネクトエクスプレス)といった、より新しい技術では、インバンド(in−band)メカニズムを通じてレガシーインタラプトをエミュレートすることによって、ソフトウェアのコンパチビリティを維持している。これらのエミュレートされたインタラプトは、ホストオペレーティングシステムによってレガシーインタラプトとして扱われる。PCI規格によって定義されるラインベースインタラプトは、たった4つのラインに限定されており、複数のデバイスがしばしば共有されているために、レイテンシ(lantency)の増加を生じている。
PCI2.2規格は、従来のラインベースインタラプトの代替として、MSI(メッセージシグナルインタラプト)を導入した。インタラプトをトリガするために専用のピンを使用する代わりに、MSIは、特定のアドレスに対して所定の値を書き込むことによって、デバイスがインタラプトをトリガできるようにする。メッセージ宛て先アドレスおよびメッセージデータは、MSI「ベクトル(”vector”)」として参照される。PCI3.0は、MSI−Xと呼ばれる、MSIの拡張形式を定義しており、MSIの制限された機能を取り扱っている。例えば、MSIにはアダプタ機能ごとに32個のMSIメッセージという制限があるが、MSI−Xは、メッセージの数を2048個まで増加している。別の例として、MSIは、全てのメッセージが同一のグループのプロセッサを対象とするように、一つのMSIメッセージアドレス値しか提供しない。MSI−Xは、唯一のアドレスとそれぞれのメッセージに対するデータペアを提供することによって、この問題を克服している。
アドバンストプログラマブルインタラプトコントローラ(APIC)が、1997年にインテル(登録商標)によって導入された。APICは、本来は対称型マルチプロセッサ(SMP)アーキテクチャを使用しているシステムにおいてインタラプトを管理することを目的としていた。マイクロソフト(登録商標)は、SMPシステム上でのAPICの利益を観察して、オペレーティングシステムの中にユニプロセッサ(uni−processor)上でのAPICに対するサポートをデザインした。今日、APICは、実質的に全てのx86ベースのコンピュータにおいて採用されている。CPUの内部、及び/又は、IOチップの外部におけるコンポーネントのいずれかとしてである。
消費電力管理は、コンピュータを含む、電子デバイスの機能であり、アイドル時間(inacitivity)が存在するときに、電源オフ(”turn off”)し、または、デバイスに係る所定の又は全ての領域をある低消費電力状態に置くように、試みる。マイクロプロセッサによって消費されるエネルギーを管理することは、バッテリーの寿命を延ばし、冷却のリクエストを削減し、電気的ノイズを削減し、かつ、オペレーション費用を削減する。モバイルコンピューティングが、よりユビキタス(ubiquitous)になってきているので、モバイル電子機器においては消費電力管理がより重要になってきている。ラップトップ、携帯電話、および、パーソナルデジタルアシスタント、といったものである。消費電力管理は、また、サーバ展開(例えば、サーバファームおよびデータセンタ)にも有利であり、デスクトップコンピュータに対しても同様である。
マイクロプロセッサおよびコンピュータシステムに対する消費電力管理の規格は、アドバンストコンフィグレーションアンドパワーインターフェイス(ACPI)であって、ヒューレットパッカード(登録商標)、インテル、マイクロソフト、フェニックス(登録商標)、および、東芝(登録商標)によって共同開発されたオープンインダストリー規格である。ACPIは、OS指向のコンフィグレーション、消費電力管理、および、モバイル、デスクトップ、そしてサーバプラットフォームの温度管理、ができるようにする業界規格インターフェイスを確立している。1996年に最初に発行されたときに、ACPIは、既存の、消費電力管理BIOSコード、アドバンストパワーマメネジメント(APM)アプリケーションプログラミングインターフェイス(APIs)、PNPBIOS APIs、および、マルチプロセッサ仕様(MPS)テーブル、の集まりを、上手く定義された消費電力およびコンフィグレーションインターフェイス仕様へと発展させた。ACPI仕様書は、新たな消費電力管理技術が、一緒に動作し続けることを保証しながら、オペレーティングシステムおよびハードウェアにおいて独立して発展することを可能にしている。
インタラプトの動的な再コンフィグレーションを通じて効率的な消費電力管理を促進するための方法、装置、および、システムである。
インタラプトベクトルは、マルチコアプロセッサの中の種々のプロセスに対してマップされ、プロセッサコア上のワークロードがモニタされる。所与のプロセッサに対するインタラプトワークロードが閾値以下に低下したことを検出した場合に、インタラプトベクトルは、プロセッサコアに現在マップされているインタラプトベクトルを少なくとも一つの他のプロセッサコアに再マッピングすることによって、インタラプトベクトルが動的に再コンフィグレーションされる。再コンフィグレーションの後では、プロセッサコアにマップされたインタラプトベクトルが存在しないようにである。そして、コアを、より深いアイドル状態の中に置くことができる。類似のオペレーションを追加のプロセッサコアに対して適用することができ、インタラプトベクトルをより少ないプロセッサコア上に納めることをもたらす。アイドル状態から出てくるコアの検出に応じて、ベクトルの一部をこれらのコアに対して再マップすることにより、インタラプトベクトルの再コンフィグレーションが実行されて、アクティブなコアに渡るベクトルの割り当てが再びバランスされる。
上述の態様および本発明に付随する多くの有利な点は、以降の詳細な説明を参照することによって、添付の図面を考慮した場合に、より容易に理解され、同様により良く理解される。ここで、別に指定がない場合は、種々のビューを通じて、類似の参照番号は類似のパーツを参照するものである。
図1は、一つの実施例に従って、効率的な消費電力管理のためのインタラプトの動的な再コンフィグレーションをサポートするように構成されたコンピュータシステムに係る模式的なブロックダイヤグラムである。 図2は、一つの実施例に従って、効果的な動的インタラプトコンフィグレーションおよびインタラプトリクエストバランスのための選択的なソフトウェアコンポーネントを示すブロックダイヤグラムである。 図3は、一つの実施例に従って、効率的な消費電力管理のためのインタラプトの動的な再コンフィグレーションに対するオペレーションとロジックを説明するフローチャートである。 図4aは、インタラプトベクトルが第1のプロセッサコアから再マップされる状況下で、インタラプトベクトルの動的な再コンフィグレーションの第1の実施例を説明している。 図4bは、インタラプトベクトルが第1のプロセッサコアから再マップされる状況下で、インタラプトベクトルの動的な再コンフィグレーションの第1の実施例を説明している。 図4cは、インタラプトベクトルが第1のプロセッサコアから再マップされる状況下で、インタラプトベクトルの動的な再コンフィグレーションの第1の実施例を説明している。 図5aは、インタラプトベクトルが第1のプロセッサコアから再マップされる状況下で、インタラプトベクトルの動的な再コンフィグレーションの第2の実施例を説明している。 図5bは、インタラプトベクトルが第1のプロセッサコアから再マップされる状況下で、インタラプトベクトルの動的な再コンフィグレーションの第2の実施例を説明している。 図5cは、インタラプトベクトルが第1のプロセッサコアから再マップされる状況下で、インタラプトベクトルの動的な再コンフィグレーションの第2の実施例を説明している。 図6aは、第1のコアがアクティブ状態に戻されて、全てのアクティブなコアに渡りロードバランスをもたらすようにンタラプトベクトルが再マップされる状況下で、インタラプトベクトルの動的な再コンフィグレーションの第3の実施例を説明している。 図6bは、第1のコアがアクティブ状態に戻されて、全てのアクティブなコアに渡りロードバランスをもたらすようにンタラプトベクトルが再マップされる状況下で、インタラプトベクトルの動的な再コンフィグレーションの第3の実施例を説明している。 図6cは、第1のコアがアクティブ状態に戻されて、全てのアクティブなコアに渡りロードバランスをもたらすようにンタラプトベクトルが再マップされる状況下で、インタラプトベクトルの動的な再コンフィグレーションの第3の実施例を説明している。 図7aは、第1のコアがアクティブ状態に戻されて、全てのアクティブなコアに渡りロードバランスをもたらすようにンタラプトベクトルが再マップされる状況下で、インタラプトベクトルの動的な再コンフィグレーションの第4の実施例を説明している。 図7bは、第1のコアがアクティブ状態に戻されて、全てのアクティブなコアに渡りロードバランスをもたらすようにンタラプトベクトルが再マップされる状況下で、インタラプトベクトルの動的な再コンフィグレーションの第4の実施例を説明している。 図7cは、第1のコアがアクティブ状態に戻されて、全てのアクティブなコアに渡りロードバランスをもたらすようにンタラプトベクトルが再マップされる状況下で、インタラプトベクトルの動的な再コンフィグレーションの第4の実施例を説明している。 図8aは、コアをアイドル状態の置くことができるようにインタラプトベクトルがより少ないコア上に納められる状況下で、インタラプトファンイン(fan in)シーケンスに応じたインタラプトベクトルの動的な再コンフィグレーションの第5の実施例を説明している。 図8bは、コアをアイドル状態の置くことができるようにインタラプトベクトルがより少ないコア上に納められる状況下で、インタラプトファンイン(fan in)シーケンスに応じたインタラプトベクトルの動的な再コンフィグレーションの第5の実施例を説明している。 図8cは、コアをアイドル状態の置くことができるようにインタラプトベクトルがより少ないコア上に納められる状況下で、インタラプトイン(fan in)シーケンスに応じたインタラプトベクトルの動的な再コンフィグレーションの第5の実施例を説明している。 図9aは、コアがアイドル状態からアクティブ状態に戻された際にインタラプトベクトルが新たに利用可能なプロセッサコアに再マップされる状況下で、インタラプトファンアウト(fan out)シーケンスに応じたインタラプトベクトルの動的な再コンフィグレーションの第6の実施例を説明している。 図9bは、コアがアイドル状態からアクティブ状態に戻された際にインタラプトベクトルが新たに利用可能なプロセッサコアに再マップされる状況下で、インタラプトファンアウト(fan out)シーケンスに応じたインタラプトベクトルの動的な再コンフィグレーションの第6の実施例を説明している。 図9cは、コアがアイドル状態からアクティブ状態に戻された際にインタラプトベクトルが新たに利用可能なプロセッサコアに再マップされる状況下で、インタラプトファンアウト(fan out)シーケンスに応じたインタラプトベクトルの動的な再コンフィグレーションの第6の実施例を説明している。
ここにおいて、効率的な消費電力管理のための動的インタラプト再コンフィグレーションを実施する方法、装置、および、システムに係る実施例が説明される。以降の説明においては、本発明開示に係る実施例のより完全な説明を提供するために数多くの詳細が説明される(PCIeおよびMSIベクトルの使用といったもの)。しかしながら、当業者にとっては、これら一つまたはそれ以上の特定の詳細がなくても、もしくは、他の方法、コンポーネント、材料、等を使用して、本発明を実行することができることが理解できよう。他のインスタンスにおいて、よく知られた構成、材料、またはオペレーションは、示されないか、または、詳細には説明されない。本発明の態様が不明瞭となるのを避けるためである。
この明細書の全体に渡る「一つの実施例」または「実施例」に対する言及は、実施例に関して説明された所定の特徴、構成、または、特性は、本願発明の少なくとも一つのの実施例に含まれる。従って、「一つの実施例において」または「実施例において」というフレーズがこの明細書の全体に渡って現れるが、必ずしもすべてが同一の実施例を参照するものではない。さらに、所定の特徴、構成、または、特性は、一つまたはそれ以上の実施例において、あらゆる好適なやり方で組み合わせることができる。
明確化のために、ここにおける図面の中のそれぞれのコンポーネントは、また、所定の参照番号より、むしろ、図面におけるラベルによって参照されてもよい。加えて、所定のタイプのコンポーネント(所定のコンポーネントとは対照的なものとして)を参照する参照番号は、後ろに「(TYP)」が続く参照番号を用いて示され、「典型的」であることを意味している。これらのコンポーネントの構成は、簡素化または明確化のために図面には示されていないが実際には存在するような典型的な類似のコンポーネントであることが理解されよう。
図1は、一つの実施例に従って、効率的な消費電力管理のための動的なインタラプトの再コンフィグレーションを実施するための典型的なコンポーネントを示しているブロックレベルのダイヤグラムである。オペレーティングシステム(OS)と、種々のアプリケーション及びOSサービスは、コア1−nとラベル付けされた複数のプロセッサコア102を含むCPU100上で実行される。一般的に、コアの数量nは、2から上の範囲であってよく、これらに限定されるわけではないが、2、4、6、8、10、12、16、20、24、48、64、128、等を含んでいる。CPU100は、また、APIC104および電力制御ユニット(PCU)105を含んでいる。ダイヤグラムの中央は、NIC(ネットワークインターフェイスコントローラ)であり、物理ポートのペア108と110、および、複数の論理ポート112−1から112−mを含んでいる。。ここで、mは、一つの実施例において、2048以下である。それぞれの論理ポートは、一つまたはそれ以上の関連する入力キュー(queue)114と出力キュー115を有している。NIC106は、一つまたはそれ以上のPCIeリンクを介してCPU100と通信するようにリンクされている。リンクは、説明のために、一つの幅広い両端矢印として示されている。一つまたはそれ以上のPCIeリンクは、現在又は将来のPCIe仕様に従って種々のレーン幅を有してよい。これらに限定されるわけではないが、1×、2×、4×、8×、16×、および、32×といったものである。
オペレーションの最中に、種々のアプリケーションおよびサービスは、NIC116を介して、および、通信リンク122と124に渡って、ネットワーク120と通信するようにリモートホスト118にリンクされている。一般的に、ネットワーク120は、種々のタイプのネットワークを表しており、LAN、WAN、インターネット、および、イントラネットを含んでいる。通信リンク122と124は、有線および無線リンクの両方を表しており、これらに限定されるわけではないが、イーサネット(登録商標)、802.11x、WiMAX、および、モバイルデータキャリアリンク(例えば、GSM(登録商標)、UMTS、CDMA、WCDMA(登録商標),LTE、等で実行されるデータサービス)を含んでいる。
実行時間オペレーションの最中に、種々のアプリケーションおよびOSサービスは、ホスト118のうち一つと接続するといった、種々の目的のためにネットワーク接続を確立する。例えば、ウェブブラウザといったアプリケーションは、ウェブサーバを含むホスト118とのHTTP接続をオープンする。ホストに対するそれぞれの接続は、物理リンクとポートおよび関連するインフラストラクチャに渡るものである。しかしながら、複数の同時通信リンクをサポートするために、NIC106および関連するファームウェアおよびソフトウェアリソースは、仮想ポートおよびキューの動的な配分(allocaion)をサポートしている。それぞれの物理リンクインスタンスが、対応する仮想ポートおよび対応する入力および出力キューと関連するようにである。このことは、部分的に、PCIeの使用を通じて促進される。PCIeは、発信元アドレスと宛先アドレスおよびペイロードデータを含む、種々のパケット構成を使用する、パケットベースのメッセージング(messaging)を採用している。さらに、NIC106に関する非同期性のオペレーションおよびサービスリクエストをサポートするために、PCIeは、MSIベクトルを採用して、対応するプロセッサインタラプトを呼び出す。図1においてMSI V1−mとラベル付けされた、MSIベクトル126によって示されるようにである。それぞれのMSIベクトルは、PCIeメッセージを含んでおり、PCIeメッセージは、適用可能なアドレス情報およびMSIベクトルであることを特定するヘッダー表示を含んでいる。
MSIベクトルを好適な処理リソースにマッピングするためのコーディネイションは、APIC104および関連するデータ構造およびドライバと調整してOSによって管理される。OSは、処理スレッドをCPUリソースに配分することに責任がある。CPUリソースは、CPUハードウェア上で実行される場合は、物理的にCPUコアを含んでおり、または、CPUハードウェア上で実行される仮想マシンマネージャ(VMM)や類似のものによってホストされる仮想マシン上で実行される場合には、仮想コアまたはプロセッサを含んでよい。いくつかのインスタンスにおいて、物理的コアは、論理的コアとしてOSにさらされる。まるでCPUがマルチスレッドコア(例えば、インテル製CPUはハイパースレッド(Hyperthreading)をサポートしている)を使用しているようにといったものである。明確化および簡素化のために、物理的コアの割り当てがここにおいて説明される。しかしながら、当業者によれば、類似の技術が、論理的コアとVMM実施を用いて実施し得ることが理解されよう。
現代のオペレーティングシステムは、マルチスレッドアーキテクチャを採用しており、一つまたはそれ以上の実行スレッドがそれぞれのアプリケーションまたはサービスに配分され、それぞれの処理リソースに対して割り当てられる。スレッドは、タイムスライス(time−slicing)スキームを使用してプロセッサコア上で実行される。ここで、所与のスレッドは実行のために対応するタイムスライスに対して配分され、コンテクストスイッチと続いて起こるタイムスライスの最中の別のスレッドの実施が後に続く。このことは、進行ベースで継続される。
何年もの間、プロセッサは単一のプロセッサコアを採用し、そのため、マルチスレッドOSのスレッドは、単一のプロセッサコアだけに対して配分されるだろう。いくつかのアーキテクチャも、また、インタラプトピンを使用して(MSIおよびMSI−Xといった、より最近のインタラプトスキームとして)ハードウェア信号ベースのインタラプトをサポートしていた。その下で、物理的CPUピン上の電気的信号の使用を通じてインタラプト信号が呼び出され、CPUハードウェアは、OSとは独立したやり方でハードウェアファシリティを介してインタラプトのサービスをスケジュールすることによってインタラプトに対応する(もしくは、マスク不能なインタラプト(NMI)である場合には直ちにインタラプトをサービスする)。
マルチコアプロセッサ、APIC、および、MASI/MSI−Xの出現は、インタラプト処理の新たなパラダイムを導入した。最初に、実行スレッドを単一のプロセッサコアに対して配分することに代わって、スレッドは複数のプロセッサコアに渡って配分される。典型的には、ラウンドロビン(round−robin)配分スキームや類似のものを使用したものである。このことは、プロセッサコアの使用が、ロードバランスされることを保証して、CPUの処理スループットを最大化している。しかしながら、複数の実行ユニット(つまり、プロセッサコア)があるからには、インタラプトに対してサービスするためにインタラプトされる一つ以上の単一の実行ユニットが存在する。結果として、マッピングインタラプトリクエストをプロセッサコアに対してマップするためのメカニズムが採用された。このメカニズムは、APICの使用を介して有効化され、ベクトルマッピング情報を含んでいる。図1におけるAPICベクトルマップによって図示されるように、それぞれのMSIベクトルを対応するプロセッサコアにマップする情報であり、進行中のオペレーションの最中に、IRQバランサ130の使用を通じて動的に更新される。以下のさらに詳細が説明されるようにである。
MSI/MSI−Xインタラプトリクエスト(IRQ)は、以下のやり方でサービスされる。最初に、インタラプトソースデバイスのPCIeインターフェイスにおいてPCIeメッセージが生成される。この実施例においては、NIC106である。より、特定的には、PCIeメッセージは、適用可能なアドレス情報を含んでいるMSIベクトルとして構成されており、インタラプトのサービスに関するデータを含んでいるデータペイロードも同様である。アドレス情報は、MSIベクトルを特定するために使用され、次に、サービスのためにIRQを好適なコアに対してマップするために使用される。
IRQのマッピングに加えて、APICは、また、それぞれのプロセッサコアに対しするIRQのキューイングと優先度付けのための機能を提供する。IRQはAPIC104によって受け取られるので、それらは好適なプロセッサコアに対してマップされ、優先度ベースでキューされる。それぞれのコアが自身のキューを有し、かつ、他のプロセッサコアに対するIRQに関して非同期的にIRQに応答するようにである。
マルチコアプロセッサの顕著な利点が、プロセッサのパフォーマンスを増加させている。マルチコアプロセッサが導入される以前、CPUアーキテクチャは、パフォーマンスの壁に衝突していた。利用可能なファブリケーション(fabrication)技術を使用している利用可能な削減されたライン幅が、実質的な終点に到達してしまったからである。そして、より高いクロックレートを通じたパフォーマンス増加は、物理的な限界を表していた。信号スキュー(skew)の限界および温度の限界を超えているといったものである。マルチコアの使用によって、ライン幅の減少またはクロックレートの増加なしに、プロセッサのスループットを拡大することができた。しかしながら、典型的なCPUワークロードの下にある場合にプロセッサ回路の多くの部分がアクティブであるので、マルチコアプロセッサは、単一コアの対応物よりも、多くの電力を消費し、多くの熱を発生する。結果として、マルチコアプロセッサは、しばしば、コアとCPUダイの温度を削減するために、(同様な生産技術を使用している単一コアのプロセッサと比較して)より低いクロックレートにおいてオペレーションされている。
マルチコアの態様は、また、一つまたはそれ以上のコアを節電または「アイドル(”idle”)」状態に置くことによって電力を削減する機会を表している。典型的に、マルチコアCPUは、それぞれのコアの消費電力管理を有効化するための消費電力管理ロジックを含んでいる。オペレーションモードの積極性に依存して、コアは選択的に「保留(”park”)」され、また、そうでなければ、全体的なCPU消費電力を削減するために節電状態に置かれる(一方で、また、熱発生も削減し、かつ、ダイ温度も下げている)。
インテル製プロセッサは、マイクロプロセッサ、CPUパッケージ、および、システム全体に対する4つの消費電力管理状態をサポートしている。表1は、種々の消費電力管理状態の名前を、簡潔な説明と供に、提供している。
Figure 2015520429
マイクロプロセッサパフォーマンス状態(P状態)は、CPUがアクティブな場合に、マイクロプロセッサが動作することができる周波数と電圧の既定のセットである。マイクロプロセッサは、マイクロプロセッサによってサポートされている種々のP状態を実施するために、動的周波数スケーリング(DFS)と動的電圧スケーリング(DVS)を使用する。DFSとDVSは、現在の動作条件に基づいて、マイクロプロセッサコアの動作周波数と動作電圧を動的に変化させる技術である。マイクロプロセッサの現在のP状態は、オペレーティングシステムによって決定される。一つのP状態から別のP状態へ変化するのに要する時間は、比較的に短い。オペレーティングシステムは、P状態を動的に変化させる場合には、この時間を考慮に入れる。OSは、マイクロプロセッサによる消費電力とマイクロプロセッサのパフォーマンスとの間のトレードオフを管理する。
C状態は、アイドル状態として定義される。何も役に立つものが実行されていない場合には、エネルギーを節約するために、マイクロプロセッサの種々の部分が電源オフされる。C状態には、3つの分類がある。スレッド(論理的)C状態、マイクロプロセッサコアC状態、および、マイクロプロセッサパッケージC状態である。C状態の3つ全ての分類のうち、いくつかの態様は類似している。それらは全て、プロセッサスレッド、プロセッサコア、または、プロセッサパッケージのアイドル状態のいくつかの形式を表しているからである。しかしながら、C状態は、また、実質的なやり方において相違する。
スレッド(論理的)C状態は、スレッドレベルにおいて、マイクロプロセッサの現在のC状態のオペレーティングシステムの見解を表している。アプリケーションがプロセッサコアのC状態をリクエストするとき、アプリケーションは、「論理的コア(”logical core”)」のC状態を受け取る。論理的コアとは、アプリケーションの個々のスレッドがコアであると理解するものである。スレッドは、特定のコアの完全なオーナーシップを有すると理解するからである。実施例として、物理的コアごとに2つの論理的コアを採用しているCPU(ハイパースレッドをサポートしているインテル製CPUといったもの)に対して、論理的コア0(コア0上で実行されているスレッド0)は、所定のアイドル状態にあってよく、一方で、論理的コア1(コア0上のスレッド1)は、別のアイドル状態にあってよい。オペレーティングシステムは、所与のスレッドに対して、あらゆるC状態をリクエストすることができる。
コアC状態は、ハードウェア特有のC状態である。一つの実施例の下では、CPUパッケージの中に存在しているマルチコアCPUのあらゆるコアは、特定のC状態に居ることができる。従って、全てのコアが、同一のC状態に居ることはリクエストされない。コアC状態は、コアのアイドル状態ごとに相互に排他的なものである。
パッケージC状態は、CPUパッケージの中の全てのコアに適用するアイドル状態である。CPUのパッケージC状態は、個々のコアC状態に関連する。CPUは、全てのコアが同一のコアC状態に入る準備ができている場合にだけ、CPUは低消費電力パッケージC状態に入ることができる。従って、全てのコアが同一のより低い消費電力コアC状態に入る準備ができている場合に、パッケージは、同等なより低消費電力のパッケージC状態の中に安全に移行することができる。
一つの実施例においては、4つのC状態(アイドル状態)があり、アイドル状態C0、アイドル状態C1、アイドル状態C3、および、アイドル状態C6を含んでいる。C状態が高いだけ、アイドルのレベルがより高く、かつ、消費電力削減もより大きい。アイドル状態C0から開始するが、コアに対する通常のアクティブオペレーションに対応するものである。例えば、アイドル状態C6に居る間、コアのPLL(フェーズロックループ)は電源オフされ、コアのキャッシュはフラッシュされ、コア状態がラストレベルキャッシュ(LLC)に保管される。パワーゲートトランジスタは、およそゼロワット(Watt)まで特定のコアに対して消費電力を削減するようにアクティブ化される。アイドル状態C6に居るコアは、アクティブ化されていないコアであると考えられる。アイドル状態C6に居るコアのウェークアップタイムが最も長い。ウェークアップイベントに応じて、コア状態がLLCから回復され、コアPLLが再びロックされ、パワーゲートが非アクティブ化され、そして、コアクロックが再び電源オンされる。
C6は最も深いC状態なので、この状態へ又はこの状態からの以降に対するエネルギーコストは最も高い。深いC状態に頻繁に出たり入ったりすることは、正味のエネルギー損失を結果として生じ得る。これを防ぐために、いくつかの実施例は、インテリジェントなヒューリスティクス(heuristics)を使用する自動降格機能を含んでおり、アイドル期間の節約が、深いC状態への移行および次にC0へ戻る移行のエネルギーコストに見合うのがいつかを判断する。もし、C6への移行が十分に見合わなければ、消費電力管理ロジックは、OSのC状態リクエストをC3に格下げする。
現行のアプローチの下で、OSは、オペレーティングシステム指向コンフィグレーション及び消費電力管理(OSPM)を使用してCPUに対する消費電力管理機能とインターフェイスすることができる。OSPMは、ACPIを実施するシステムを説明しており、従って、システムBIOSからデバイス管理を取り外して、オペレーティングシステムのコントロールの下に置いている。これにより、OSは、マルチコアプロセッサにおけるコアのC状態を(大幅に)コントロールすることができる。さらに、OSが、実行に渡りスレッドからコア(thread−to−core)の割り当てのコントロールを有しているので、OSは、実行スレッドを、より大きな消費電力節約のために、より少ないコア上に結合する能力を有している。
上記に説明したように、C状態、特にアイドル状態C−3およびC−6、からコアを目覚めさせることは、著しいエネルギ消費を結果として生じる。コアを目覚めさせる一つのオペレーションは、IRQを扱うことである。結果として、IRQをサービスするためにコアが使用されウェイク場合には、低アイドル状態であることはできず、従って、IRQを断続的にサービスしているだけの場合ですら、より多くの電力を消費する。
ここにおいて開示される実施例に従えば、この問題は、新規なコンポーネントとデータ構造の使用を通じて取り扱われる。インタラプトベクトルをアイドルコア(または、アイドル状態に入りそうな対象)から離れて再マッピングすることによって動的に再コンフィグレーションできるようにするものであり、それにより、IRQをサービスさせることからアイドルコアを防ぎ、インタラプトすることなく、より深いアイドル状態に留まることができるようにしている。このことは、結果として、著しい消費電力節減のポテンシャルを生じている。
一つの実施例において、インタラプトベクトルの再マッピングは、IRQバランサ130の使用を介して有効化される。システムのオペレーションの最中に、IRQバランサは、OSドライバと共同して、OSとAPIC104との間のブリッジとして動作し、ファイルまたはOSが利用可能な他のデータ構造における対応するデータを通じて、ベクトルマップ128に対する変更を、OS(または、別のソフトウェアエンティティ)が有効化できるようにしている。IRQバランサにおけるロジックも、また、IRQバランスをサポートするために実施される。効果的な消費電力管理をサポートするために、インタラプトベクトルのインテリジェントな再マッピングも同様に実施される。
図2は、リナックス(登録商標)(Linux(登録商標))オペレーティングシステムを採用している動的なインタラプト再コンフィグレーションの典型的な実施を伴う使用のために構成された、選択されたコンポーネントを説明するブロックダイヤグラムである。ダイヤグラムは、OSネットワークスタック200の選択されたコンポーネントを示しており、ソケット、レイヤ4およびレイヤ3(L4/L3)、レイヤ2(L2)のフレーミング(framing)およびフィルタリングを含むコアネットワーキングレイヤ、および、ベースドライバ202を含んでいる。当業者によって理解されるように、ベースドライバ202は、OSスタックと根柢の物理的ネットワークハードウェアとの間の抽象化インターフェイスとして使用されるOSドライバを含んでおり、この実施例においてはNIC106に対応している。ダイヤグラムの右側は、スタック204であり、擬似ファイルシステム206、IRQ記述子206、および、APIC104を含んでいる。ダイヤグラムは、また、OSのユーザ空間において動作しているIRQバランサ130も含んでいる。
図3は、一つの実施例に従って、IRQバランサ130の態様を実施するためのロジックおよびオペレーションを説明するフローチャート300である。フローチャートの最上部は、IRQバランサ開始/終了ブロック302である。開始すると、プロセッサコアのインタラプトワークロードが、既定の又はブロック304において計算された閾値に対してモニタされ、いつワークロード閾値を通過したかが判断される。コアのワークロードのための種々のデータは、OS及び/又はCPU機能によって典型的には維持される。例えば、現代のオペレーティングシステムは、典型的にはコアの利用率を示す統計値を保持している。それぞれのコアに対して割り当てられたプロセス(つまり、実行スレッド)の数も同様に保持している。加えて、PCUを採用しているCPUは、コアの利用率に関する無数の統計値を維持しており、OSを含む他のシステムエンティティにアクセス可能である。
一つの実施例において、閾値はインタラプトの頻度に基づいている。IO(入力/出力)インタラプトの頻度といったものである。この情報は、OSまたはCPUコンポーネントによって直ちにモニタされ得る。任意的に、インタラプトに対する応答に関するコアのワークロードは、インタラプトワークロード閾値として使用されてよく、または、インタラプト頻度とインタラプトコアワークロードの重み付けされた組み合わせが使用されてよい。他の実施例において、コア利用率の情報は、単独又はインタラプト頻度データと一緒のいずれかで使用され、いつワークロード閾値を通過したかを判断する。例えば、ここにおいて開示される消費電力管理技術の態様は、コアがより深いC状態に入れるようにするためのIRQからコア(IRQ−to−core)のマッピングを再コンフィグレーションすることを含んでいるので、顕著なレベルで現在使用されているコアにとってそうすることはほとんど意味をなさないであろう。他のシステムロジック(PCUによって採用といったもの)は、マップされたインタラプトベクトルの数にかかわらず、より深いC状態へ置くことから、コアを防いでいる。例えば、第1のコアは、IOに関係ない(従って、IOインタラプトに対応するものでない)まさに計算集約的なアプリケーション、および、頻繁でないIOインタラプトを伴う別のバックグラウンドサービスが実行されていてよい。一方で、第2のコアは、著しい量のネットワークトラフィックおよび関連するIOインタラプトを伴うウェブサービスをホストしてよい。このインスタンスにおいては、バックグラウンドサービスのために、IRQを第1のコアから第2のコアへ再マッピングすることに利点はない。第1のコアの利用率レベルが、より深いC状態に入ることからコアを防いでいるからである。
インタラプトワークロード閾値を通過したとき、ロジックは判断ブロック306に進み、閾値がワークロード増加又はワークロード減少のいずれに対応するかを判断する。ワークロード減少である場合、ブロック308において、CPUのIO構成を複数のコアの中に展開するか否かについて判断が行われる。もし、そうであれば、コアに対するIOインタラプトを一つまたはそれ以上の他のコアに対して再マップする機会が存在する。そのことにより、次に、コアはより深いアイドル状態に入ることができる。従って、ブロック310において、インタラプトは、適用可能なMSIベクトルを再マッピングすることによって、より少ない数のコア上に「納められる(”collapsed”)」。そして、コア「保留(”parking”)」プロセスが開始される。コア保留は、コアがより深いアイドル状態(典型的にはC−3またはC−6)の中に置かれていることを示すために使用される一般的な用語である。インタラプトが現在は展開されていない場合(少なくともある程度で、IRQからコアへのマッピングが既に納められていることを意味している)、ロジックはブロック312に進む。ここにおいて、納められたインタラプトモデルが一つまたはそれ以上のコアを保留するのに十分であるか否かの検証が行われる。
判断ブロック306に戻ると、プロセッサ利用率及び/又はIOインタラプトアクティビティが閾値を上方に向かって通過したという状況に対応して、インタラプトワークロードが増加する。この場合、インタラプトを複数のコアの中で展開する、または、そうでなければ分散することが有利でる。従って、ブロック314において、現在のIRQからコアへのマッピングを展開するか否かの判断がなされる。インタラプトが既に展開されている場合は、ブロック316において、より最適な展開コンフィグレーションが利用可能かであるかを判断するための検査が行われ、もし、そうであれば、IRQコアのマッピングは、より最適な展開コンフィグレーションのために再コンフィグレーションされる。判断ブロック306に戻ると、インタラプトが現在は展開されていない場合、ロジックはブロック318に進み、ワークロードを正規化するために、IRQが適用可能なコアに渡り展開される。
一つの実施例においては、それぞれのコアに割り当てられたIOインタラプトが(少なくともある程度は)バランスされているように、コアロードバランシング(balancing)考慮がなされる。つまり、ロードバランシングを使用してインタラプトを展開することは、インタラプトを「ファンアウト(”fan out”)」するものとして参照される。一方で、インタラプトをより少ないコアにまとめることは、インタラプトを「ファンイン(”fan in”)」するものとして参照される。このことは、図4a−4cから図9a−9cにおいて示されるような、図解を通じてより容易に理解される。
より詳細には、図4a−4cから図9a−9cでは、MSIベクトルを図示するために矢印が使用されており、それぞれの矢印のラインタイプがMSIベクトルに関するインタラプト頻度を表している。図示されているように、実線は安定したインタラプト頻度に対応しており、一方、破線は断続的なインタラプト頻度に対応し、かつ、点線は希発なインタラプト頻度に対応している。矢印を通るクネクネは、MSIベクトルがもはや存在しないことを意味している(対応するMSIベクトルが配分された対応するアプリケーションまたはサービスが、停止されたか、または、そうでなければ、完了したことを意味している)。
図4a−4cは、インタラプトを納めること及びシーケンスを再コンフィグレーションの実施例を説明する。図4aは、オリジナルのコンフィグレーションを示しており、その下では3つのMSIベクトル126がコア1−4のそれぞれに対してマップされている。それぞれのMSIベクトルの頻度は、MSIベクトル126−1と126−2を除いて安定状態であり、MSIベクトル126−1と126−2は希発である。一つの実施例において、ワークロード閾値は、それぞれのコアに対する結合されたインタラプトの頻度に基づいている。頻度は、例えば、移動平均または類似の技法を使用して、上記に説明した方法の一つによって判断され得る。あまりに頻繁に再コンフィグレーションを実行することは避けるのが望ましい。そのため、いくつかのヒステリシス(hysteresis)がインタラプト頻度の計算の中に取込まれている。
典型的な用途を仮定する。頻度の閾値が1.1であり、安定した頻度のMSIが1の値を有し、断続的な頻度が安定した頻度の半分(値=0.5)であり、一方、希発の頻度が安定した頻度の4分の1(値=0.25)であるとする。図4bでは、閾値イベントが表されており、結合されたインタラプトの頻度は1.1以下である。図示されているように、MSIベクトル126−3は停止され、値が0.5であるMSIベクトル126−1と126−2の結合されたMSIベクトルインタラプト頻度が残っている。従って、閾値条件に応じて、ベクトル納めと再コンフィグレーションのプロセスが開始され、初期的にコア1にマップされたMSIベクトルが他のコアに対して再マップされる。図示された実施例において、MSIベクトル126−1はコア2に再マップされ、MSIベクトル126−2はコア3に再マップされる。MSIベクトルがコア1から再マップされると、コア1が保留の候補であるか否かを判断するためのオペレーションが実行され、そうであれば、アイドルC状態をより高い値(例えば、C−3またはC−6)に変更することによって、コアが保留される。一般的に、コアが保留されるか否か、および、どのC状態が適用されるかの判断は、OSによって、PCUによって、または、2つの組み合わせによって決定されてよい。
図5a−5cには、インタラプトを納めること及びシーケンスを再コンフィグレーションの第2の実施例が示されている。図5aに図示されたオリジナルのコンフィグレーションの下で、4つのコアそれぞれは、3つのMSIベクトルを受け取る。ここにおいて、MSIベクトル126−4を除くすべてのベクトルは安定状態である。上記のように、閾値は1.1に設定されている。図5bでは、閾値イベントが表されており、MSIベクトル126−5と126−5は停止されている。従って、残っているMSIベクトルのコア1に対する頻度は1.1以下であり、図5cに示される結果を用いて、MSIベクトルの納めと再コンフィグレーションのプロセスを設定する。図5cは、また、ロードバランシング状況を示しており、再マップされたMSIベクトル126−4は、コア3に対して再度向けられる。コア3は以前にインタラプトワークロードが最少であったものである。
MSIベクトルの納めに加えて、MSIベクトルを正規化または「ファンアウト」するための再コンフィグレーションのオペレーションが実行され得る。利用可能なアクティブなコアの数が増加するときに(例えば、アイドルのコアがアクティブ状態に戻ったとき)、MSIベクトルをサービスするコアの数を増加するようにである。このプロセスの2つの実施例が、図6a−6cと図7a−7cにおいて示されている。
図6aにおけるオリジナルコンフィグレーションの下で、コア1は保留されており、一方、コア2−4は3つのMSIベクトルを受け取っている。この実施例における閾値は3であり、ワークロード納めの閾値とワークロード拡張の閾値は一致する必要がないことに留意する。そして、上記に説明したように、閾値は、進行中のオペレーションの最中に動的に調整され得る(例えば、リアルタイムのワークロード測定及び/又は他の考慮に基づくものである)。図6bは、また、コア1が保留状態からアクティブ状態へと移行することを示している。コーディネイトされた消費電力管理アプローチに従って、MSIベクトルは、アクティブなコアに対してだけマップされる(初期的な割り当て又は再コンフィグレーションのいずれかによるものである)。図6bに示されたコンフィグレーションの下では、また、新たなMSIベクトル126−7と126−8がコア2とコア3に対して割り当てられ、一方、コア1は保留されている。コア1がアクティブ状態に再び入ったことを検出すると、コアワークロード閾値が再び開始され、コア2とコア3のそれぞれに対するインタラプト頻度が閾値の3を超えているとの判断に至る。結果として、再コンフィグレーションのオペレーションが実行され、図6cに示された結果となる。この実施例においては、MSIベクトルのファンアウトが実行され、新たなMSIベクトル126−7と126−8がコア1に対して再マップされる。このことは、また、MSIベクトルワークロードを再バランスしたものである。
図7a−7cに示した実施例の下では、初期のコンフィグレーションは、コア2−4のそれぞれに割り当てられた2つのMSIベクトルを有しており、コア1が保留されている。図7aに示すようにである。上記のように閾値は3である。図7bにおいて、コア4には3つの新たなMSIベクトル126−9、126−10、および、126−11が割り当てられ、一方で、コア1は保留されている。その後、コア1は移行されてアクティブ状態に戻る。このことは、ワークロード閾値評価を再び開始する。コア1−3が追加のMSIベクトルを受け取り、かつ、コア1には現在割り当てられたMSIベクトルが無い間は、コア3がオーバーロードであることを示している。結果として、ファンアウトと再コンフィグレーションのオペレーションが実行され、図7cに示された結果となる。この実施例において、MSIベクトル126−9と126−10はコア1に対して再マップされ、一方、MSIベクトル126−11はコア2に対して再マップされる。上記のように、このことは、また、全てのアクティブなコアに渡るMSIベクトルのワークロードの再バランシングをもたらす。
図8a−8cは、複数の再コンフィグレーションプロセスを示しており、4つから2つのコアへMSIベクトルのマッピングを納めることを、結果として生じている。一方、図9a−9cは、一つのコアを使用して開始され、4つ全てのコアに渡り配分されたMSIベクトルを伴って終了するファンアウトシーケンスを示している。図8bと8cは、コア1が保留されている下での第1の再コンフィグレーションのベクトルコンフィグレーション、および、コア1とコア2が保留されている下での第2の再コンフィグレーションのベクトルコンフィグレーションの後でのベクトルコンフィグレーションをそれぞれ示している。上記のように、ファンアウト又は「正規化」シーケンスの最中、一つまたはそれ以上のコアが保留されている間に追加のMSIベクトルが受け取られる。そして、追加のコードが利用可能になると、再バランシングが実行される。複数のアクティブなコアを使用している所与の進行中のコンフィグレーションの下で、新たなMSIベクトルが、ロードバランスを維持するやり方で、既存のアクティブなコアに追加されることにも、留意すべきである。
本発明の実施例は、種々のシステムエンティティと協調して、インタラプトベクトルの動的な再コンフィグレーションを通じて効果的な消費電力管理を促進している。進行中のオペレーションの最中に、インタラプトベクトルは、マルチコアプロセッサの中の種々のプロセスに対してマップされ、プロセッサコア上のワークロードがモニタされる。所与のプロセッサに対するインタラプトワークロードが閾値以下に低下したことを検出した場合には、そのコアはより深いアイドル状態に置く候補であり、このように、著しく電力を節約している。このことを促進するために、インタラプトベクトルは、プロセッサコア(ワークロード閾値イベントが検出されたもの)に現在マップされているインタラプトベクトルを少なくとも一つの他のプロセッサコアに再マッピングすることによって、インタラプトベクトルが動的に再コンフィグレーションされる。再コンフィグレーションの後では、プロセッサコアにマップされたインタラプトベクトルが存在しないようにである。このように、プロセッサコアは、より深いアイドル状態の中に置かれ、インタラプトリクエストをサービスするために目覚める必要なく、その状態に留まることができる。類似のオペレーションを追加のプロセッサコアに対して適用することができ、反復プロセッサを介してといったように、インタラプトベクトルをより少ないプロセッサコア上に納めることをもたらし、より大きな節電に至る。
インタラプトベクトルをより少ないプロセッサコア上に納めることに加えて、正規化または「ファンアウト」オペレーティングシステムが、プロセッサコアがアクティブ状態に戻る際に、使用され得る。例えば、アクティブ状態に戻るコアに応じて、ワークロード閾値検出オペレーションが実行され、プロセッサコアに対するワークロードが超過しているか否かを判断する。例えば、ワークロード閾値は、超過したインタラプト頻度に基づいてよい。この閾値イベントの検出に応じて、このコアからのインタラプトが、アクティブ状態に戻っているコアに対して再マップされてよい。同時に、この再コンフィグレーションは、コアに対するインタラプトベクトルの割り当ての再バランシングをもたらす。
ここにおいて開示された実施例の態様は、CPUまたはCPU上で実行されている仮想マシン上でのインストラクションの実行を通じて、もたらされ得る。従って、本発明の実施例は、プロセッサコアのいくつかのフォーム上で実行され、または、そうでなければ、マシンで読取り可能な媒体上又は中で実施もしくは実行されるインストラクションとして、または、インストラクションをサポートするために、使用され得る。マシンで読取り可能な媒体は、マシン(例えば、コンピュータ)によって読取り可能な形式において情報を保管し、または、伝送するためのあらゆるメカニズムを含んでいる。例えば、マシンで読取り可能な媒体は、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記録媒体、光記録媒体、および、フラッシュデバイス、等を含んでいる。
要約において記載されているものを含み、図示された本発明の実施例に係る上記の説明は、網羅的であること、または、本発明を開示されたまさにその形式に限定することを意図するものではない。本発明の所定の実施例、および例示、が説明目的のためにここにおいて開示されている一方で、当業者であれば理解するように、本発明の範囲内で種々の均等な変形が可能である。
こうした変形は、上記の詳細な説明に照らして本発明に対して成し得るものである。添付の特許請求の範囲において使用される用語は、本発明を明細書及び図面に開示された所定の実施例に限定するものと理解されるべきではない。むしろ、本発明の範囲は、添付の特許請求の範囲によって全体的に決定されるべきものであり、請求項解釈の確立された方策に従って解釈されるべきものである。

Claims (22)

  1. 複数のプロセッサコアを有するマルチコアプロセッサを使用しているコンピュータシステムにおいてインタラプトをコンフィグレーションするための方法であって:
    前記複数のプロセッサコアに対してインタラプトベクトルをマップするステップと、
    第1のプロセッサコアのインタラプトワークロードが、閾値以下に低下したことを検出するステップと、
    前記の検出に応じて、
    前記第1のプロセッサコアに対してマップされていた前記インタラプトベクトルのそれぞれを、前記第1のプロセッサコア以外のプロセッサコアに対して再マップすされるように、再コンフィグレーションするステップと、
    を含む、方法。
  2. 前記インタラプトベクトルの再コンフィグレーションは、少なくとも部分的に、オペレーティングシステムの使用を通じて行われる、
    請求項1に記載の方法。
  3. 前記オペレーティングシステムは、リナックス(Linux)オペレーティングシステムである、
    請求項2に記載の方法。
  4. 前記オペレーティングシステムは、前記マルチコアプロセッサ上のインタラプトコントローラとインタラクションするデバイスドライバの使用を通じて、インタラプトベクトルの再コンフィグレーションを行う、
    請求項2に記載の方法。
  5. 前記デバイスドライバは、前記オペレーティングシステムによってアクセスされた、再コンフィグレーションファイルまたはデータ構造のうち一つにおけるデータを読み出す、
    請求項4に記載の方法。
  6. 前記方法は、さらに、
    前記複数のプロセッサコアに対する、ロードバランシングのインタラプトベクトル割り当て、を含む、
    請求項1乃至5いずれか一項に記載の方法。
  7. 前記方法は、さらに、
    第2のプロセッサコアのインタラプトワークロードが閾値以下に低下したことを検出するステップと、
    前記の検出に応じて、
    前記第2のプロセッサに対してマップされていた前記インタラプトベクトルのそれぞれを、前記第1のプロセッサコアおよび前記第2のプロセッサコア以外のプロセッサコアに対して再マップされるように、再コンフィグレーションするステップと、
    を含む、
    請求項1乃至6いずれか一項に記載の方法。
  8. 前記第2のプロセッサコアは、前記第2のプロセッサコアの前記ワークロードが前記閾値以下に低下する以前に、第1のオペレーション状態において動作しており、
    前記方法は、さらに、
    前記第2のプロセッサコアに対してマップされた前記インタラプトベクトルが再コンフィグレーションされた後で、前記第2のプロセッサコアを、前記第1のオペレーション状態より深いアイドル状態の中に置くステップと、を含む、
    請求項7に記載の方法。
  9. 前記インタラプトワークロードの閾値は、インタラプト頻度のレベルに基づいている、
    請求項1乃至8いずれか一項に記載の方法。
  10. 前記第1のプロセッサコアは、前記第1のプロセッサコアの前記インタラプトワークロードが前記閾値以下に低下する以前に、第1のアイドル状態において動作しており、
    前記方法は、さらに、
    前記第1のプロセッサに対してマップされた前記インタラプトベクトルが再コンフィグレーションされた後で、前記第1のプロセッサコアを、より深いアイドル状態の中に置くステップと、を含む、
    請求項1乃至9いずれか一項に記載の方法。
  11. 前記方法は、さらに、
    前記第1のプロセッサコアが、前記第1のアイドル上に戻ったことを検出するステップと、
    第3のプロセッサコア上のインタラプトワークロードが、閾値を越えたことを検出するステップと、を含み、
    前記の検出に応じて、
    少なくとも一つのインタラプトベクトルを、前記第3のプロセッサコアから前記第1のプロセッサコアへ再マッピングする、
    請求項10に記載の方法。
  12. 前記方法は、さらに、
    インタラプトベクトルのロードバランシングを行うように、前記インタラプトベクトルの一部を他のプロセッサコアに対して選択的に再マッピングすることによってインタラプトベクトルを再コンフィグレーションするステップと、を含む、
    請求項11に記載の方法。
  13. 前記方法は、さらに、
    少なくとも一つのインタラプトワークロードの閾値を動的に調整するステップと、を含む、
    請求項11に記載の方法。
  14. 前記インタラプトワークロードの閾値は、インタラプト頻度に基づいている、
    請求項11に記載の方法。
  15. 前記インタラプトベクトルは、メッセージシグナルインタラプト(MSI)ベクトルを含む、
    請求項1乃至14いずれか一項に記載の方法。
  16. 前記インタラプトベクトルは、IOデバイスにによって生成される入力/出力(IO)インタラプトベクトルを含む、
    請求項1乃至15いずれか一項に記載の方法。
  17. マルチコアプロセッサを有し、かつ、請求項1乃至16いずれか一項に記載の方法を実行するように構成されている、
    コンピュータシステム。
  18. 前記マルチコアプロセッサは、入ってくるインタラプトベクトルを対応するプロセッサコアに向けるために使用されるインタラプトベクトルのマッピングデータを保管するように構成されているアドバンストプログラマブルインタラプトコントローラ(APIC)、を含む、
    請求項17に記載のコンピュータシステム。
  19. 前記マルチコアプロセッサは、さらに、
    前記複数のプロセッサコアそれぞれのオペレーション状態の変更を有効化するために使用される電力制御ユニット(PCU)、を含む、
    請求項17に記載のコンピュータシステム。
  20. 前記コンピュータシステムは、さらに、入ってくるネットワーク通信に応じて、インタラプトベクトルを生成するように構成されたネットワークインターフェイスコントローラ(NIC)、を含む、
    請求項17に記載のコンピュータシステム。
  21. 前記NICは、PCIeデバイスを含む、
    請求項20に記載のコンピュータシステム。
  22. コンピュータデバイス上で実行されると、前記コンピュータデバイスに請求項1乃至16いずれか一項に記載の方法を実施させる、複数のインストラクションを含む、少なくとも一つのマシンで読み出し可能な媒体。
JP2015501653A 2012-04-24 2012-04-24 効率的な消費電力管理のための動的インタラプト再コンフィグレーション Active JP5981020B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/034814 WO2013162523A1 (en) 2012-04-24 2012-04-24 Dynamic interrupt reconfiguration for effective power management

Publications (2)

Publication Number Publication Date
JP2015520429A true JP2015520429A (ja) 2015-07-16
JP5981020B2 JP5981020B2 (ja) 2016-08-31

Family

ID=49483633

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015501653A Active JP5981020B2 (ja) 2012-04-24 2012-04-24 効率的な消費電力管理のための動的インタラプト再コンフィグレーション

Country Status (4)

Country Link
US (1) US10990407B2 (ja)
JP (1) JP5981020B2 (ja)
CN (1) CN104169879B (ja)
WO (1) WO2013162523A1 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5981020B2 (ja) 2012-04-24 2016-08-31 インテル コーポレイション 効率的な消費電力管理のための動的インタラプト再コンフィグレーション
WO2015072992A1 (en) * 2013-11-14 2015-05-21 Intel Corporation Techniques for processing custom events
CN104714846B (zh) * 2013-12-17 2018-06-05 华为技术有限公司 资源处理方法、操作系统及设备
US9563585B2 (en) 2014-02-19 2017-02-07 Futurewei Technologies, Inc. System and method for isolating I/O execution via compiler and OS support
WO2016048669A1 (en) * 2014-09-26 2016-03-31 Intel Corporation Apparatus and method for configuring sets of interrupts
US10101786B2 (en) 2014-12-22 2018-10-16 Intel Corporation Holistic global performance and power management
US10620687B2 (en) 2014-12-22 2020-04-14 Intel Corporation Hybrid power management approach
US9811143B2 (en) 2014-12-23 2017-11-07 Intel Corporation Systems and methods for dynamic spatial power steering
US9753526B2 (en) 2014-12-23 2017-09-05 Intel Corporation Systems and methods for synergistic software-hardware power budget management
US9829902B2 (en) 2014-12-23 2017-11-28 Intel Corporation Systems and methods for dynamic temporal power steering
US9880953B2 (en) * 2015-01-05 2018-01-30 Tuxera Corporation Systems and methods for network I/O based interrupt steering
US9842082B2 (en) * 2015-02-27 2017-12-12 Intel Corporation Dynamically updating logical identifiers of cores of a processor
CN107408056B (zh) * 2015-03-26 2021-01-05 华为技术有限公司 用于动态循环-处理器映射的调度设备和方法
US10037292B2 (en) * 2015-05-21 2018-07-31 Red Hat Israel, Ltd. Sharing message-signaled interrupt vectors in multi-processor computer systems
US9910700B2 (en) * 2015-08-26 2018-03-06 Netapp, Inc. Migration between CPU cores
US9942631B2 (en) * 2015-09-25 2018-04-10 Intel Corporation Out-of-band platform tuning and configuration
CN107015931A (zh) * 2016-01-27 2017-08-04 三星电子株式会社 用于中断处理的方法和加速器单元
US10802998B2 (en) * 2016-03-29 2020-10-13 Intel Corporation Technologies for processor core soft-offlining
KR102649324B1 (ko) 2016-05-19 2024-03-20 삼성전자주식회사 적응 인터럽트 제어를 수행하는 컴퓨터 시스템 및 그것의 인터럽트 제어 방법
US10715424B2 (en) * 2016-12-06 2020-07-14 Microsoft Technology Licensing, Llc Network traffic management with queues affinitized to one or more cores
US10826841B2 (en) 2016-12-06 2020-11-03 Microsoft Technology Licensing, Llc Modification of queue affinity to cores based on utilization
US10554554B2 (en) 2016-12-06 2020-02-04 Microsoft Technology Licensing, Llc Hybrid network processing load distribution in computing systems
CN107870818B (zh) * 2017-10-19 2021-03-02 瑞芯微电子股份有限公司 多核处理器中断动态响应方法及存储介质
US11113216B2 (en) * 2019-03-20 2021-09-07 Mediatek Inc. Dispatching interrupts in a multi-processor system based on power and performance factors
US11054891B2 (en) 2019-05-09 2021-07-06 Google Llc Resonance aware performance management
CN112346739A (zh) * 2019-08-06 2021-02-09 珠海格力电器股份有限公司 中断向量表的重映射方法、装置、微处理器及电子装置
US20200210359A1 (en) * 2020-03-10 2020-07-02 Intel Corporation Dynamic interrupt provisioning
US20210294641A1 (en) * 2021-06-08 2021-09-23 Intel Corporation Dynamic interrupt steering and processor unit idle state demotion

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060212677A1 (en) * 2005-03-15 2006-09-21 Intel Corporation Multicore processor having active and inactive execution cores
US20080162762A1 (en) * 2006-12-29 2008-07-03 Gilbert Neiger Interrupt remapping based on requestor identification
JP2010061644A (ja) * 2008-07-29 2010-03-18 Nvidia Corp プラットフォームベースのアイドルタイム処理
US20100274939A1 (en) * 2009-04-22 2010-10-28 Bernhard Egger Reconfigurable processor and interrupt handling method
WO2012014285A1 (ja) * 2010-07-27 2012-02-02 富士通株式会社 割込制御方法、マルチコアプロセッサシステム、および割込制御プログラム
WO2012027074A1 (en) * 2010-08-26 2012-03-01 Intel Corporation Power-optimized interrupt delivery
US20120166764A1 (en) * 2010-12-22 2012-06-28 Via Technologies, Inc. Dynamic and selective core disablement and reconfiguration in a multi-core processor

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3008896B2 (ja) * 1997-06-16 2000-02-14 日本電気株式会社 共有バス型マルチプロセッサシステムの割り込み負荷分散システム
US6631422B1 (en) * 1999-08-26 2003-10-07 International Business Machines Corporation Network adapter utilizing a hashing function for distributing packets to multiple processors for parallel processing
US6813665B2 (en) * 2001-09-21 2004-11-02 Intel Corporation Interrupt method, system and medium
KR100456630B1 (ko) * 2001-12-11 2004-11-10 한국전자통신연구원 프로세서간 통신을 위한 인터럽트 중계 장치 및 방법
US7581052B1 (en) * 2005-08-22 2009-08-25 Sun Microsystems, Inc. Approach for distributing multiple interrupts among multiple processors
US9032127B2 (en) * 2006-09-14 2015-05-12 Hewlett-Packard Development Company, L.P. Method of balancing I/O device interrupt service loading in a computer system
US7873770B2 (en) * 2006-11-13 2011-01-18 Globalfoundries Inc. Filtering and remapping interrupts
US7962679B2 (en) * 2007-09-28 2011-06-14 Intel Corporation Interrupt balancing for multi-core and power
US7962771B2 (en) * 2007-12-31 2011-06-14 Intel Corporation Method, system, and apparatus for rerouting interrupts in a multi-core processor
US8112648B2 (en) * 2008-03-11 2012-02-07 Globalfoundries Inc. Enhanced control of CPU parking and thread rescheduling for maximizing the benefits of low-power state
US20090320031A1 (en) * 2008-06-19 2009-12-24 Song Justin J Power state-aware thread scheduling mechanism
US8892916B2 (en) * 2008-08-06 2014-11-18 International Business Machines Corporation Dynamic core pool management
CN101354664B (zh) * 2008-08-19 2011-12-28 中兴通讯股份有限公司 多核处理器中断负载均衡方法和装置
US20100169673A1 (en) * 2008-12-31 2010-07-01 Ramakrishna Saripalli Efficient remapping engine utilization
US8479026B2 (en) * 2009-12-09 2013-07-02 Texas Instruments Incorporated Processor power management
US8312175B2 (en) * 2010-01-21 2012-11-13 Vmware, Inc. Virtual machine access to storage via a multi-queue IO storage adapter with optimized cache affinity and PCPU load balancing
US8601194B2 (en) * 2011-02-08 2013-12-03 Red Hat Israel, Ltd. On-demand interrupt vector allocation based on activity detection
US9069555B2 (en) * 2011-03-21 2015-06-30 Intel Corporation Managing power consumption in a multi-core processor
US8688883B2 (en) * 2011-09-08 2014-04-01 Intel Corporation Increasing turbo mode residency of a processor
JP5981020B2 (ja) 2012-04-24 2016-08-31 インテル コーポレイション 効率的な消費電力管理のための動的インタラプト再コンフィグレーション
CN104380257B (zh) * 2012-05-09 2020-11-13 英特尔公司 在处理器核之间调度任务
US9424212B2 (en) * 2013-06-13 2016-08-23 Microsoft Technology Licensing, Llc Operating system-managed interrupt steering in multiprocessor systems

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060212677A1 (en) * 2005-03-15 2006-09-21 Intel Corporation Multicore processor having active and inactive execution cores
US20080162762A1 (en) * 2006-12-29 2008-07-03 Gilbert Neiger Interrupt remapping based on requestor identification
JP2010061644A (ja) * 2008-07-29 2010-03-18 Nvidia Corp プラットフォームベースのアイドルタイム処理
US20100274939A1 (en) * 2009-04-22 2010-10-28 Bernhard Egger Reconfigurable processor and interrupt handling method
WO2012014285A1 (ja) * 2010-07-27 2012-02-02 富士通株式会社 割込制御方法、マルチコアプロセッサシステム、および割込制御プログラム
WO2012027074A1 (en) * 2010-08-26 2012-03-01 Intel Corporation Power-optimized interrupt delivery
US20120166764A1 (en) * 2010-12-22 2012-06-28 Via Technologies, Inc. Dynamic and selective core disablement and reconfiguration in a multi-core processor

Also Published As

Publication number Publication date
WO2013162523A1 (en) 2013-10-31
US10990407B2 (en) 2021-04-27
CN104169879B (zh) 2019-01-04
US20130318334A1 (en) 2013-11-28
CN104169879A (zh) 2014-11-26
JP5981020B2 (ja) 2016-08-31

Similar Documents

Publication Publication Date Title
JP5981020B2 (ja) 効率的な消費電力管理のための動的インタラプト再コンフィグレーション
US10223162B2 (en) Mechanism for resource utilization metering in a computer system
US11181970B2 (en) System and method for performing distributed power management without power cycling hosts
US8489904B2 (en) Allocating computing system power levels responsive to service level agreements
US8484495B2 (en) Power management in a multi-processor computer system
US20110265095A1 (en) Resource Affinity via Dynamic Reconfiguration for Multi-Queue Network Adapters
US8341628B2 (en) Controlling depth and latency of exit of a virtual processor's idle state in a power management environment
US9811346B2 (en) Dynamic reconfiguration of queue pairs
US20120239952A1 (en) Information processing apparatus, power control method, and recording medium
US8595721B2 (en) Preserving a dedicated temporary allocation virtualization function in a power management environment
US10579416B2 (en) Thread interrupt offload re-prioritization
WO2023071508A1 (zh) 线程间中断信号发送
US11640305B2 (en) Wake-up and timer for scheduling of functions with context hints
CN107636563B (zh) 用于通过腾空cpu和存储器的子集来降低功率的方法和系统
Zhang et al. NVMe-over-RPMsg: A virtual storage device model applied to heterogeneous multi-core SoCs
US8904208B2 (en) Run-time task-level dynamic energy management
US20220350639A1 (en) Processing device, control unit, electronic device, method for the electronic device, and computer program for the electronic device
EP4359928A1 (en) Techniques to enable quality of service control for an accelerator device

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160513

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160727

R150 Certificate of patent or registration of utility model

Ref document number: 5981020

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