JP6359069B2 - オペレーティングシステムと切り離される異種計算 - Google Patents

オペレーティングシステムと切り離される異種計算 Download PDF

Info

Publication number
JP6359069B2
JP6359069B2 JP2016204255A JP2016204255A JP6359069B2 JP 6359069 B2 JP6359069 B2 JP 6359069B2 JP 2016204255 A JP2016204255 A JP 2016204255A JP 2016204255 A JP2016204255 A JP 2016204255A JP 6359069 B2 JP6359069 B2 JP 6359069B2
Authority
JP
Japan
Prior art keywords
operating system
cores
physical processing
thread
core
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
JP2016204255A
Other languages
English (en)
Other versions
JP2017033592A (ja
Inventor
アーシェイム,ジェレッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2017033592A publication Critical patent/JP2017033592A/ja
Application granted granted Critical
Publication of JP6359069B2 publication Critical patent/JP6359069B2/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/22Microcontrol or microprogram arrangements
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Feedback Control In General (AREA)

Description

本発明は、オペレーティングシステムと切り離される異種計算に関する。
エネルギー効率は、携帯電話からデータセンタにいたるまで、ますます重要な差別化要因になっている。消費者は、より長く続くモバイルデバイス経験に高い値段を払おうとするだけでなく、これらの同じデバイスからより向上した性能が得られることを望む。他方において、データセンタは、計算力をスケールアップし続けるが、効率的に冷却することが可能な温度制限に直面する。加えて、公衆は、エネルギー利用およびエネルギー使用の環境への影響についてますます意識を高めている。エネルギーの使用を効率的にすることは、したがって、多くのタイプのコンピューティングシステムにおいてより優先度の高い設計目標である。
これらの技術的に相反する課題、すなわち、より良い性能を供給するが、より少ない電力しか使用しないことは、単一のシステムまたはシリコンチップ内において「大きな」計算コアを「小さな」計算コアに密接に結合する、という異種設計を産業的に試すことになった。これは、本明細書において、異種のコアまたは処理と呼ばれる。大きなコアは、より大きな電力エンベロープで高い性能を提供するように設計され、一方、小さなコアは、より小さな電力エンベロープで低い性能を提供するように設計される。従来の考え方としては、オペレーティングシステムのスケジューラが、次いで、作業量に応じて、スレッドを大きなコアまたは小さなコアに対して選択的にスケジュールすることとなる。1日の少なくとも一部の時間帯の間、オペレーティングシステムは、大きなコアを全体的にターンオフし、小さなコアを少しずつ消費する電源に頼ることが可能である。
大きなコアおよび小さなコアは、同じ命令セットまたは特徴を共有しても、共有しなくてもよい。例えば、小さなコアは、減少した命令セットまたは他の差異を含み、この他の差異は、オペレーティングシステムにより、互換性のあるコアに対する処理をスケジュールさせる、さらなる決定を行うことを含む。従来の例の1つは、中央処理ユニット(CPU)およびグラフィックス処理ユニット(GPU)を含み、GPUを、アイドル状態または十分に活用されていないときにタスクを計算するのに使用できるシステムである。
既存および現在の解決策は、オペレーティングシステムに、大きなコアおよび小さなコアの存在を「知らせる」ためにオペレーティングシステムのカーネルを修正することと、その個々のコアの性能および電力特性と、オペレーティングシステムが、どのコアに対して特定のスレッドをスケジュールするかを決定するためにモニタリングするシステム内の装置設備(例えば、CPU性能カウンタ、キャッシュのミス/ヒットカウンタ、バスアクティビティカウンタなど)による。このアプローチは、いくつかの欠点を有する。すなわち、1)このアプローチは、サポートされるオペレーティングシステム全てについてカーネルを修正する必要があり、2)修正されたカーネルが、潜在的に異なるアーキテクチャ(例えば、N個の異なる実装をサポートすること)にわたって大きな/小さな設計における相違を理解することが必要であり、3)オペレーティングシステムカーネルのリリーススケジュールと、基礎となるコンピュータアーキテクチャを密に結合する。コンピュータアーキテクチャに対する変更は次いで、カーネルが新しいコアを商業的にサポートするまで、次にスケジュールされたオペレーティングシステムのリリース(すなわち、潜在的には数年またはそれ以上)を待つ必要がある(また、その逆もそうである)。
本明細書において、オペレーティングシステムの認識または関与を必要とせずに、エネルギー効率を向上させ、または他の処理目標に合致するため、オペレーティングシステムスレッドのスケジューリングを大きなコアおよび小さなコアにわたって自立的に制御するハイパーバイザーを提供する、異種処理システムを説明する。本システムは、仮想化された計算コアの有限のセットをオペレーティングシステムに提示し、本システムは、そのオペレーティングシステムに対して実行用のスレッドをスケジュールする。続いて、水面下で、ハイパーバイザーは、各スレッドを実行すべきコア、すなわち大きいコアまたは小さいコア、の物理的な割り当ておよび選択を賢く制御して、エネルギー使用または他の処理要件を管理する。ソフトウェアハイパーバイザーを使用して基礎となる大きなおよび小さなコンピュータアーキテクチャを抽象化することによって、コア間の性能および電力動作の相違は、オペレーティングシステムに対して不透明なままになる。また、固有の間接性は、新たな機能(能力)(capability)を有するハードウェアのリリースを、オペレーティングシステムのリリーススケジュールと切り離す。
この発明の概要は、以下の発明の詳細な説明においてさらに説明される概念の選択を、簡略化した形で紹介するために提供される。この発明の概要は、特許請求される主題の主要な特徴または本質的特徴を特定するようには意図されておらず、特許請求される主題の範囲を限定するのに用いられるようにも意図されていない。
一実施形態における異種処理システムのコンポーネントを示すブロック図である。 一実施形態において、異種処理コアを有するコンピューティングデバイスを、異種処理コアとオペレーティングシステムとの間のハイパーバイザーを用いて初期化する、異種処理システムの処理を示すフロー図である。 一実施形態において、異種処理コアを管理するハイパーバイザーを通じて1つまたは複数のオペレーティングシステムスレッドをスケジューリングする、異種処理システムの処理を示すフロー図である。 一実施形態における異種処理システムの動作環境を示すブロック図である。
本明細書において、オペレーティングシステムの認識または関与を必要とせずに、エネルギー効率を向上させ、または他の処理目標に合致するため、オペレーティングシステムスレッドのスケジューリングを大きなコアおよび小さなコアにわたって自立的に制御するハイパーバイザーを提供する、異種処理システムを説明する。本システムは、仮想化された計算コアの有限のセットをオペレーティングシステムに提示し、本システムは、そのオペレーティングシステムに対して実行用のスレッドをスケジューリングする。続いて、水面下で、ハイパーバイザーは、各スレッドを実行すべきコア、すなわち大きいコアまたは小さいコア、の物理的な割り当ておよび選択を賢く制御して、エネルギー使用または他の処理要件を管理する。ソフトウェアハイパーバイザーを使用して基礎となる大きなおよび小さなコンピュータアーキテクチャを抽象化することによって、コア間の性能および電力動作の相違は、オペレーティングシステムに対して不透明なままとなる。また、固有の間接性は、新たな機能を有するハードウェアのリリースを、オペレーティングシステムのリリーススケジュールと切り離す。ハードウェアのベンダは、更新されたハイパーバイザーをリリースし、新たなハードウェアが、そのベンダにより選ばれた任意のオペレーティングシステムのバージョンで機能できるようにすることができる。
ハイパーバイザーの実装は、基礎となるコンピュータアーキテクチャと密に結合され、利用可能なシステムフィードバック(例えば、CPU利用、バス/キャッシュアクティビティなど)を使用して、適切なコアを要求される作業量に自立的に割り当てる。このアプローチは、基礎となるコンピュータアーキテクチャが、ソフトウェアハイパーバイザーとの連携でしばしば変化し、この発展を、上記オペレーティングシステムから切り離すことを可能にする。異種処理システムは、オペレーティングシステムカーネル自体を変更することなく、簡単で粗粒な電力管理を提供する。したがって、異種処理システムは、より高速なハードウェア革新を可能にし、既存のデータセンタおよび他のインストールが今日、利用可能な異種処理ハードウェアからの利益を享受することを可能にする。
異種計算は、システムにおいて利用可能な異なるタイプの計算コア(例えば、CPU,GPU、アクセラレータなど)に基づいて作業量の実行を最適化する、という目標を有する産業の新興分野である。最適化は、性能、電力、待ち時間、または他の目標について可能である。異種処理システムは、これらのより一般的な場合に適用可能である一方で、一意の機能的等価性を有するが、異なる性能/電力動作特性を有するコアを用いるシステムも対象とすることができる。典型的に、これらのシステムは、1つまたは複数の大きなコアと、1つまたは複数の小さなコアを有する。大きなコアは典型的に、深いパイプライン、順序不順の実行ファイル、大きなキャッシュ、高いクロックスピードを有し、そして高い漏出処理量(例えば、40G)を使用して操作される。小さなコアは典型的に、短いパイプライン、小さなキャッシュ、低クロックスピード、様々な電力レベルを有し、そして低い漏出処理量(例えば、40LP)を使用して操作される。
一部の実施形態において、大きなコアおよび小さなコアは、アーキテクチャの等価物、マイクロアーキテクチャの等価物、グローバルインタラプトコントローラ、コヒーレンシー、および仮想化などを有する。アーキテクチャの等価物には、同じインストラクションセットアーキテクチャ(ISA:Instruction Set Architecture)、単一命令複数データ(SIMD:Single Instruction Multiple Data)、浮動小数点(FP:Floating Point)、コプロセッサの利用可能性、およびISA拡張などが含まれ得る。マイクロアーキテクチャの等価物は、性能における相違は有するが、同じ構成可能な特徴(例えば、キャッシュライン長)を含む。グローバルインタラプトコントローラは、全てのコアに対する中断を管理し、処理し、転送する能力を提供する。コヒーレンシーは、全てのコアが、必要に応じて転送して、他のコアからのデータにアクセス(キャッシュ)することができることを意味する。仮想化は、コアからの/コアへの作業量を切り替える/移行するためのものである。
一部の実施形態において、異種処理システムは、コア間のわずかな相違に対応することができる。例えば、ストリーミングSIMD拡張命令(SSE)(現在、4つの反復、SSE1、SSE2、SSE3、SSE4が存在する)をサポートしない小さなコアは、他のインテルのx86ベースのソフトウェアコードを扱うことができる。ハイパーバイザーは、命令ストリーム内のサポートされていない命令を検出し、そのようなストリームを割り当てる適切なコアを起動することができる。他の命令ストリームは、任意のコアにおいて正確に動作する。少数のサポートされていない命令のみが使用される場合など、一部の場合において、ハイパーバイザーは、なんらかのレベルのエミュレーションを含み、利用可能な命令セットにおいてサポートされていない命令をエミュレートする。例えば、ベクトル計算などの操作はしばしば分解されて、標準の計算命令を用いる低効率で実装される。
ソフトウェアハイパーバイザーは、デバイスのブートプロセスの間にオペレーティングシステム(OS)の初期化に先行して、ソフトウェアハイパーバイザー自身をインストールする。指定されたハードウェア構成が完了した後(すなわち、メモリを構成し、仮想化装置設備を初期化するなど)、ハイパーバイザーは、次いでコンピューティングデバイス内にインストールされた大きな処理コアおよび小さな処理コアを、ポリシーにより構成することができる。例えば、デバイスがモバイルデバイスである場合、ポリシーは、ハイパーバイザーがオペレーティングシステムを、バッテリの需要のために利用可能かつ最適な最小限の性能で開始するように指示することができ、ハイパーバイザーは続いて、オペレーティングシステムスレッドを1つまたは複数の小さなコアに対してスケジュールする。あるいは、デバイスが、データセンタブレードである場合、ポリシーは、ハイパーバイザーがオペレーティングシステムを利用可能な最大限の性能で開始して、エネルギー効率を犠牲にするように指示することができ、ハイパーバイザーは続いて、オペレーティングシステムスレッドを利用可能な大きなコアに対してスケジュールし、さらに場合によっては、利用可能な熱量に応じて小さなコアに対してもスケジュールすることもできる。初期化が完了した後、ソフトウェアハイパーバイザーは、オペレーティングシステムブートマネージャをロードし、このオペレーティングシステムブートマネージャが次いでオペレーティングシステムをロードする。
ランタイムの間、異種処理システムは、仮想化されたコアのセットをオペレーティングシステムに提示する。コア間の動作特性および相違は、オペレーティングシステムに対して不透明であり、ソフトウェアハイパーバイザーにより、定義された動作ポリシーに基づいて非公開で管理される。動作ポリシーは、システムの初期化中に設定されるか、またはランタイム中に動的に設定され得る。
ハイパーバイザーは、動作ポリシーを、利用可能なシステム装置設備(例えば、CPU性能カウンタ、キャッシュのミス/ヒットカウンタ、バスアクティビティカウンタなど)とともに使用し、どのコアをオペレーティングシステムスレッドにスケジュールすべきかを決定する。ハイパーバイザーは、この情報を使用して、CPUコアの利用、経時的な傾向、情報の局所性、および入出力(I/O)パターンを理解することができる。この情報から、ハイパーバイザーは、動的かつ投機的に、オペレーティングシステムスレッドを大きなコアおよび小さなコアにわたって適切に移行することができる。加えて、ハイパーバイザーは、ダイナミック周波数・電圧スケーリング(DFVS:dynamic frequency and voltage scaling)を、オペレーティングシステムの代わりにシステム実装に応じて制御することもできる。
ここに、ハイパーバイザーが制御することができる利用可能な動作ポリシーのサンプルを示す。最小電力(MiPo:Minimum Power)、最大性能(MaPe:Maximum Performance)、最小電力・オンデマンド性能(MiPoD:Minimal Power, Performance on Demand)、最大性能・アイドル状態電力低下(MaPel:Maximum Performance, Power Down on Idle)。これらはそれぞれ、以下の段落において説明する。しかしながら、任意の特定の実装によって選択されるように、付加的な、より進化した動作ポリシーを実装することができる。
最大電力(MiPo)は、スレッドをコアの最小のセットに対してスケジュールする。これは、典型的に、ハイパーバイザーが、スレッドを小さいコアに対してスケジュールし、必要に応じてDVFSを使用して、コア用の電力および性能動作ポイントを制御することができることを意味する。必要に応じて、追加の小さなコアに電力を供給して、スケジュールすることもできる。
最大性能(MaPe)は、スレッドをコアの最大のセットに対してスケジュールする。これは、典型的に、ハイパーバイザーが、スレッドを全ての利用可能なコア(大きなコアから開始する)に対してスケジュールして、必要に応じてDVFSを使用し、コア用の電力および性能動作ポイントを制御することを意味する。利用可能な熱量によって許容される程度に、小さなコアにも電力を供給してスケジュールする。
最小電力・オンデマンド性能(MiPoD)は、通常、利用可能な最小の電力状態(例えば、1つまたは複数の小さなコアにおいて)で動作するが、処理負荷の要求により性能を高める。これは一般に、動作の「ターボ」または「ブースト」モードと呼ばれ、大きなコアを動的に割り当ててスケジュールすることにより可能になる。作業量が完了すると、システムは最小の電力状態(例えば、1つの小さなコア)に戻る。
最大性能・アイドル状態電力低下(MaPel)は、通常、最大の利用可能な性能状態(例えば、1つまたは複数の大きなコア)で動作するが、アイドル閾値に達すると、低下した電力状態に従う。アイドル閾値はこの場合、典型的なほぼゼロのCPU利用ではないが、アイドル閾値は、何らかのドライストンMIPS(DMIPS)、またはポリシーによって定義されるCPU利用率において任意に定義することができる。アイドル状態になると、ハイパーバイザーは動的に、小さなコアを割り当ててスケジュールし、未使用の大きなコアをスタンバイ/保留状態に置く。ポリシーおよび/または将来の処理量は、システムが最大の利用可能な性能状態(例えば、大きなコア)に戻るときを決定する。
図1は、一実施形態における異種処理システムのコンポーネントを示すブロック図である。システム100は、1つまたは複数の中央処理ユニット110、オペレーティングシステムインタフェースコンポーネント120、仮想コア管理コンポーネント130、ポリシーエンジンコンポーネント140、ポリシーデータストア150、スケジューリングコンポーネント160、機能管理コンポーネント170、およびハードウェアインタフェースコンポーネント180を含む。これらのコンポーネントの各々を、ここでさらに詳細に説明する。以下のコンポーネントを、コンピューティングデバイスのオペレーティングシステムとハードウェアリソースとの間に存在するソフトウェアハイパーバイザー内で実装することができる。
1つまたは複数の中央処理ユニット110は、異種処理機能および電力プロファイルを有する1つまたは複数の処理コアを含む。典型的に、各CPU複合体は、単一のシリコン型上に配置され、CPU複合体の各コアは、シリコン型を共有する。ハードウェアを、様々なタイプのデバイス用の様々なパッケージで実装することができる。例えば、新しいモバイルデバイスおよびつい最近のデスクトッププロセッサは、相互間の効率的な通信と、より低い電力利用のために、同じチップ上にCPUとGPUを含む。各CPU複合体は1つまたは複数の大きなコアおよび小さなコアを含むことができる。あるいはまた、あるCPU複合体が大きなコア全てを含み、別のCPU複合体が小さなコアを全て含むこともある。ここで使用されるようなCPU複合体は、GPU、およびソフトウェア命令を実行することができる他のハードウェアに当てはまる。
オペレーティングシステムインタフェースコンポーネント120は、ハイパーバイザーとオペレーティングシステムとの間を通信し、ハードウェアリソースに配信してハードウェアリソースからの出力を受け取るための命令を受信する。オペレーティングシステムは、スレッドをスケジュールし、命令ストリーム(例えば、プログラムカウンタ(PC:program counter))へのポインタを提供し、命令をハードウェアに渡すメモリ領域への書き込みを行うことができる。オペレーティングシステムは典型的に、コンピューティングデバイス上のハードウェアと直接対話する。しかしながら、ハイパーバイザーは、様々な目的で、オペレーティングシステムとハードウェアとの間に間接的なレイヤを挿入する。しばしば、ハイパーバイザーを使用して仮想化を提供し、その結果、複数のオペレーティングシステムを同時に同じハードウェア上で実行することができる。ハイパーバイザーを使用して、コンピューティングシステムにインストールされた実際のハードウェアとは異なる仮想ハードウェアを、オペレーティングシステムに提示することもできる。異種処理システム100の場合、これは、大きなコアと小さなコアがオペレーティングシステムに対して同じに見えるようにすることを含み得る。システム100は、デバイスに実際に存在するものとは異なる数のコアを、オペレーティングに提示することもできる。
仮想コア管理コンポーネント130は、ハイパーバイザーがオペレーティングシステムに提示する1つまたは複数の仮想コアを管理する。仮想コアは、オペレーティングシステムに対してCPUコアのように見えるが、コンピューティングデバイスにおいて利用可能な物理的なハードウェアの特性とは異なるものとすることができる。例えば、仮想コアは、処理における相違または電力機能をオペレーティングシステムから隠すことができ、その結果、異種の大きなおよび小さなコアとともに機能するように設計されていないオペレーティングシステムが、そのように設計されたオペレーティングシステム用のやり方で動作することができる。このような場合、ハイパーバイザーは、異種計算環境を用いるのに必要な特別なプログラミングを提供することができ、したがってオペレーティングシステムを修正する必要がない。
ポリシーエンジンコンポーネント140は、オペレーティングシステムスレッドをスケジューリングし、利用可能な1つまたは複数の中央処理ユニットに基づいて仮想コアをオペレーティングシステムに提示するための、1つまたは複数のポリシーを管理する。ポリシーエンジンコンポーネント140は、特定のハイパーバイザーの実装に特有のハードコードされたポリシーを含むことができ、あるいは、特定のインストール目標に適合するように修正することができる管理者構成可能なポリシーを含むことができる。ポリシーは、どのコアを最初にスケジュールするか、電力利用と処理目標のトレードオフ、電力を抑えるためにコアをどのようにシャットオフおよび起動するか、仮想コアをどのようにオペレーティングシステムに提示するかなど、を決定することができる。
ポリシーデータストア150は、1つまたは複数のポリシーを、ブート時および実行時にハイパーバイザーに対してアクセス可能な記憶装置に格納する。ポリシーデータストア150は、1つまたは複数のファイル、ファイルシステム、ハードドライブ、データベース、またはシステム100の実行セッションにわたってデータを保持するための他の記憶装置を含む。一部の実施形態において、管理者は、システム100に、ハイパーバイザーによる使用のためのポリシーの初期のセットを格納する構成段階を行わせる、セットアップステップを実行する。
スケジューリングコンポーネント160は、オペレーティングシステムからスレッドとして受信される1つまたは複数の命令ストリームを、コンピューティングシステムにインストールされた中央処理ユニットの1つまたは複数に対してスケジュールする。スケジューリングコンポーネントは、仮想コア識別をオペレーティングシステムから受信する。仮想コア識別は、オペレーティングシステムがスレッドをスケジュールするよう要求する仮想コアを識別する。スケジューリングコンポーネント160は、スケジュール要求を検査し、実行すべきスレッドをスケジュールする物理的なコアを決定する。例えば、コンポーネント160は、電力または処理がスレッドにより関連するかどうかを決定し、それに応じて適切な小さいコアまたは大きなコアをスケジュールすることができる。一部の場合において、コンポーネント160は、スレッドをある特定のコアに対してスケジューリングすることを回避し、これらのコアがパワーダウンして電力を抑えることができるようにする。
機能管理コンポーネント170は、任意選択で、大きな処理コアと小さな処理コアとの間の1つまたは複数の相違を管理する。一部の場合において、システム100は、大きなコアと小さなコアが同じ機能を共有し、かつ機能管理コンポーネント170が必要はされない、処理ユニット上においてのみ動作することがある。別の場合において、システム100は、利用可能な処理コアの間の軽微な相違または主要な相違を扱う。例えば、システム100は、一部のコアによってサポートされない命令を観察し、対応するスレッドを、これらの命令をサポートするコアにおいてスケジュールすることができる。より高度な実装において、コンポーネント170は、電力目標または他のプロファイル目標を満たすように、大きなコアの機能を小さなコアにおいて(あるはその反対)仮想化またはエミュレートすることができる。
ハードウェアインタフェースコンポーネント180は、ハイパーバイザーと中央処理ユニットとの間を通信し、利用可能な物理的コア上で実行するソフトウェア命令をスケジュールすることができる。ハードウェアインタフェースコンポーネント180は、実際のメモリアドレス、あるいは実際のハードウェアにアクセスするための他の装置を含む。これらの他の装置は、他のコンポーネントから、特にハイパーバイザーによって管理されるゲストオペレーティングシステムから隠される。
異種処理システムが実装されるコンピューティングデバイスは、中央処理ユニット、メモリ、入力デバイス(例えば、キーボードおよびポインティングデバイス)、出力デバイス(例えば、ディスプレイデバイス)、ならびに記憶デバイス(例えば、ディスクドライブ、または他の非揮発性記憶媒体)を含むことができる。メモリおよび記憶デバイスは、システムを実装または可能にするコンピュータ実行可能命令(例えば、ソフトウェア)によりエンコードされる、コンピュータ読取可能記憶媒体である。さらに、データ構造およびメッセージ構造を、通信リンク上の信号などのデータ伝送媒体を介して格納または伝送することができる。様々な通信リンク、例えばインターネット、ローカルエリアネットワーク、広域ネットワーク、ポイントツーポイントダイアルアップ接続、携帯電話ネットワークなどを使用することができる。
本システムの諸実施形態を様々なオペレーティング環境において実装することができる。このようなオペレーティング環境には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドもしくはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能な家庭用電化製品、デジタルカメラ、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、ならびに、上記システムまたはデバイス、セットトップボックス、およびシステムオンチップ(SOC)のいずれかを含む分散コンピューティング環境などが含まれる。コンピュータシステムは、携帯電話、PDA、スマートフォン、パーソナルコンピュータ、プログラム可能な家庭用電化製品、デジタルカメラなどとすることができる。
本システムを、1つまたは複数のコンピュータまたは他のデバイスによって実行されるプログラムモジュールなど、コンピュータ実行可能命令の一般的なコンテキストにおいて説明することができる。一般に、プログラムモジュールは、特定のタスクを実行し、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。典型的に、プログラムモジュールの機能を、様々な実施形態の所望に応じて結合し、または分散することができる。
図2は、一実施形態において、異種処理コアを有するコンピューティングデバイスを、その異種処理コアとオペレーティングシステムとの間のハイパーバイザーを用いて初期化する、異種処理システムの処理を示すフロー図である。
ブロック210において開始し、システムは、起動要求を受信してコンピューティングデバイスを初期化する。例えば、基本入出力システム(BIOS)、拡張可能ファームウェアインタフェース(EFI)、ブートローダ、または他の初期化デバイスソフトウェアは、異種コンピューティングシステムを実装するハイパーバイザーをロードして起動することができる。一部の場合において、管理者が、ハイパーバイザーをコンピューティングデバイスにインストールするインストール段階を以前に実行したことがある場合も、システムは、ネットワークブート、および、コンピューティングデバイスに共通して供給される他の非インストールのシナリオをサポートすることもできる。
ブロック220に続くと、システムは、コンピューティングデバイスの2つまたはそれ以上の物理的な処理コアを列挙する。一部の実施形態において、少なくとも2つのコアが、異なる性能および電力利用特性を提供する。しかしながら、非対称性が存在しないシステムを使用することもできる。例えば、電力管理にソフトウェアハイパーバイザーを使用することは、オンダイのN個の物理的なCPUを有するが、K個のみを、気温、フォームファクタのエンクロージャ、利用可能な電力のコストなどの外部性に基づいて操作することができる、というシナリオにおいても適用可能である。ブートにおいて、ハイパーバイザーは、この「ポリシー」情報を使用して、K個のコアの仮想化されたセットをオペレーティングシステムに報告することができ、これは、各ブートサイクルにおいて異なる可能性がある。ハイパーバイザーは、このシナリオにおいて対称的なコアに対して同じタスクを実行しているであろう。システムは、BIOSまたは他の基礎となるレイヤを起動して、どれくらいの、およびどの種類のプロセッサをコンピューティングデバイスがインストールしたかを決定し、そして、CPUIDまたは他の同様の命令を実行して、プロセッサの処理機能に関する情報を決定することができる。一部の実施形態において、システムは拡張性インタフェースを含むことができ、この拡張性インタフェースを通じて、ドライバまたは他のハイパーバイザー拡張を実装して、ハイパーバイザー製造者または第三者によって追加することができ、必ずしもハイパーバイザー自体を更新する必要なく、新たな処理ハードウェアのサポートをハイパーバイザーに追加することができる。
ブロック230に続くと、システムは、それぞれの列挙された処理コアの機能を決定する。この機能は、各コアによって提供される1つまたは複数の電力プロファイル、各コアによってサポートされる1つまたは複数の命令セット、各コアの性能特性などを含むことができる。システムは、コア自体の情報のインタフェース(以前に言及されたCPUID命令など)、あるいはドライバまたは他の拡張によりハイパーバイザーに提供された情報を用いて、各コアの機能を決定することができる。システムは、決定された機能を使用して、コアと互換性のあるスレッドを各コアに割り当てて、受信したポリシーおよび処理目標と整合する方法でスケジューリングを実行する。
ブロック240に続くと、システムは、ハイパーバイザーが、列挙された物理的コアに関するアクセスおよびスケジューリングを管理することとなる、1つまたは複数のオペレーティングシステムを識別する。システムは、ハードドライブ、フラッシュドライブ、またはコンピューティングデバイスの他の記憶装置にアクセスして、ハイパーバイザーが初期化された後にどのオペレーティングシステムを起動すべきかを決定することができる。ハイパーバイザーは、様々なオペレーティングシステムに関する情報を用いて指定することができ、そして拡張性を含むことができるので、ハイパーバイザー自体を更新することなく、新たなオペレーティングシステムをサポートすることができる。各オペレーティングシステム、およびオペレーティングシステムバージョンは、異なるスケジューリングセマンティクスを有し、あるいはオペレーティングシステムが仮想化された処理リソース上で正しく実行できるようにハイパーバイザーが対処する他のニュアンスを有することがある。一部に場合において、ハイパーバイザーは、複数のオペレーティングシステムが、列挙された物理的な処理コアを共有できるようにするのに必要とされ、ポリシーは、そのような共有をどのように扱うかを指示することができる。
ブロック250に続くと、システムは、ハイパーバイザーポリシー情報にアクセスする。ハイパーバイザーポリシー情報は、列挙された物理的な処理コアにおいてオペレーティングシステムスレッドをスケジュールするめの1つまたは複数の目標を指定する。この目標には、性能目標、電力利用目標、またはどのコア(1つまたは複数)がオペレーティングシステムスレッドを実行すべきかを決定するための他の方針を含むことができる。ポリシーを、コンピューティングデバイスに関連付けられた記憶デバイスに格納するか、またはハイパーバイザーの実装にハードコードすることができる。ハイパーバイザーは、ポリシーに対する更新を、管理者によって提供される管理インタフェースを通じて受信することができる。
ブロック260に続くと、システムは、1つまたは複数の仮想コアを生成して、識別されたオペレーティングシステムに公開する。ここで、各仮想コアは、物理的な処理コア間における決定された機能の相違から、オペレーティングシステムを分離する。例えば、異種処理システムは、2つまたはそれ以上の大きなコアおよび小さなコアを、単一のタイプの統一仮想コアとしてオペレーティングシステムに提示することができる。仮想コアにおいてスレッドを実行するスケジューリング要求をオペレーティングシステムから受信すると、システムは、どの物理的コアをジョブ用に選択すべきかを、アクセスしたハイパーバイザーポリシーに基づいて決定する。ハイパーバイザーポリシーは、例えば、低電力供給コアを用いることが支持され、少なくとも1つの高電力供給コアをシームレスに電力低下させることを可能にすることを目標とするときなどに、ハイパーバイザーが物理的コアではなく異なる数の仮想コアを提示すべきことを指定する。あるいは、システムは、オペレーティングシステムが、そのコアを使用することを選択した場合、または低電力コアだけでは満たすことのできないコア品質を使用することを選択した場合、オペレーティングシステムが認識したコアの電力を低下させるが、これらのコアを起動させておく。
ブロック270に続くと、システムは、識別されたオペレーティングシステムを起動し、識別されたオペレーティングシステムを、列挙された物理的な処理コアから分離したまま、作成された仮想コアをオペレーティングシステムに提示する。オペレーティングシステムを起動することは、オペレーティングシステムローダを起動することと、ハイパーバイザーを通常のBIOSの代わりに、またはオペレーティングシステムを基礎とする他のレイヤの代わりに提示することとを含むことができる。オペレーティングシステムは、物理的なハードウェア上で直接稼動しているように動作するが、ハイパーバイザーは、オペレーティングシステムと、本明細書で説明されるオペレーティングシステムの知識を必要とせずにスケジューリングロジックを実行する、物理的なハードウェアとの間に存在する。ブロック270の後、これらのステップは終了する。
図3は、一実施形態において、1つまたは複数のオペレーティングシステムスレッドを、異種処理コアを管理するハイパーバイザーを通じてスケジュールする、異種処理システムの処理を示すフロー図である。
ブロック310において始まり、システムは、オペレーティングシステムからスレッドスケジューリング要求を受信して、ハイパーバイザーによって提示される、識別された仮想コアにおいてスレッドの命令を実行する。仮想コアは、コンピューティングデバイスに対してアクセス可能な2つまたはそれ以上の物理的な処理コアの間の1つまたは複数の機能上の相違から、オペレーティングシステムを分離する。オペレーティングシステムは、典型的に、各検出された処理コアに対するアイドルループを有し、オペレーティングシステムは、当該オペレーティングシステムがそのコアにおいて実行することを望む任意の命令をスケジュールし、配置することができる。オペレーティングシステムは、複数のアプリケーションスレッドを時間分割して、特定の処理コアにおいて実行することができる。オペレーティングシステムがスレッドの実行用に選択する特定の仮想コアに関わらず、ハイパーバイザーは、任意の特定の物理的な処理コアを選択して、1つまたは複数のハイパーバイザーポリシーに従ってスレッドを実行することができる。
ブロック320に続くと、システムは、受信したスケジューリング要求の処理ニーズを決定する。例えば、システムは、スケジュールされたスレッドによって使用される特定の命令セット(例えば、1つまたは複数の命令セットの拡張、コプロセッサ、または他の機能が要求されているかどうか)、スレッドの性能要求、追加の処理リソースが利用可能になるまでスレッドが遅滞し得るかどうかなどを決定することができる。システムは、特定のオペレーティングシステムに関する特有の知識、またはポリシーを通じて受信した命令を使用して、特定のスレッドの処理ニーズを決定することができる。例えば、システムは、オペレーティングシステムの内部動作に関するスレッド、アプリケーションスレッドなどを識別し、それぞれをポリシーに従って対処することができる。
ブロック330に続くと、システムは、デバイスを操作するための1つまたは複数の目標を指定するスケジューリングポリシーにアクセスする。例えば、ポリシーは、電力利用、性能、またはこれら2つの組み合わせの最適化を要求することがある。ポリシーは、デバイスに関連付けられたデータストアに格納されるか、ハイパーバイザーの特定の実装にハードコードされる。例えば、システムは、高性能のタスクを実行するスレッドがオペレーティングシステムによってスケジュールされるまで、小さな処理コアを支持する電力使用バージョンのハイパーバイザーを提示することできる。この時点で、システムは、高性能のタスクを大きなコアにおいてスケジュールし、次いで、タスクが完了した後は大きなコアをスリープに導くことができる。
ブロック340に続くと、システムは、受信したスケジューリング要求に関連付けられたスレッドを実行すべき物理的な処理コアを選択する。この選択は、アクセスされたスケジューリングポリシーに基づいて行うことができる。システムは、異なる機能、性能/電力特性の複数の利用可能なコアを有し、システムは、これらのコアに対してスレッドをスケジュールすることができる。システムのコアの選択に基づいて、コンピューティングデバイスは、より多くのまたはより少ない電力を使用して、より長いまたはより少ない時間でスレッドの実行を完了することとなる。ジョブまたはスケジューリングポリシーは、システムが、コンピューティングデバイスの性能、電力、または他の特性を管理するための1つまたは複数の目標を促進する手法で選択を行うのを可能にする。モバイルデバイスはより少ない電力使用を好むが、高性能なサーバは高性能を好む。一部の場合において、ポリシーは、時刻(例えば、電子的コストのピークと非ピーク)または他の考慮事項に基づいて異なるものとすることができ、その結果、ポリシーは、経時的に、または特定の条件に基づいて変化する。
ブロック350に続くと、システムは、任意選択で、スレッドと、選択された物理的処理コアとの間の全ての機能的相違に対処する。例えば、スレッドが、選択されたコアにおいて利用可能でない命令を含む場合、システムは、その命令をエミュレートし、またはその命令を、選択されたコアによってサポートされる1つまたは複数の等価な命令で置換することができる。機能的相違を管理することは、顕著な複雑性をシステムに与え、ハイパーバイザー実装者は、任意の特定の実装が、処理コア間の機能においてどのくらい多くまたは(必要に応じて)少ない相違をサポートするかを選択することができる。
ブロック360に続くと、システムは、選択された物理的な処理コアにおいて実行するスレッドをスケジュールすることができる。システムは、出力がオペレーティングシステムによりスレッドを割り当てられた仮想コアから来たように見えるように、出力を処理して、この出力をオペレーティングシステムに返す。したがって、オペレーティングシステムは、ハイパーバイザーによって管理されるコアのタイプおよび数を知らないままであり、オペレーティングシステムが通常通り、ハイパーバイザーおよび異種処理コアを用いないシステムに存在しているように、仮想コアのセットを使用することができる。ブロック360の後、これらのステップは終了する。
図4は、一実施形態における異種処理システムの動作環境を示すブロック図である。ゲストオペレーティングシステム410は、本明細書において説明される異種処理システムを実装するソフトウェアハイパーバイザー430によって提示される、1つまたは複数の仮想処理コア420を見る。ソフトウェアハイパーバイザー430は異種処理ハードウェア440を管理する。異種処理ハードウェア440は、グローバルインタラプトコントローラ450と、1つまたは複数の大きなコア460と、1つまたは複数の小さなコア470とを含む。例示の容易性のために、2つのコアタイプのみを示しているが(大きいものと、小さいもの)、システムは、任意の数の異なるコアで動作することができることに留意されたい。例えば、一部のプロセッサパッケージは、段々と電力利用および性能が減少する、いくつかの処理ストアを含むことができる。ソフトウェアハイパーバイザー430は、異種処理ハードウェア440を管理して、ゲストオペレーティングシステム410を、ハードウェア440を効果的に使用するのに必要ないずれの特別な知識または処理から分離することができる。したがって、ソフトウェアハイパーバイザー430は、ゲストオペレーティングシステム410などの未修正のレガシーオペレーティングシステムが、新たな異種処理ハードウェア440を利用できるようにする。オペレーティングシステム410が(より良い電力/性能特性は有するが)通常通りに動作し続けている間に、ハードウェア440の変更について行くようにハイパーバイザー430を修正することができる。
一部の実施形態において、異種処理システムは、スレッドが既に実行された後に、当該スレッドを、ある物理的処理コアから別のコアへ移行する。一部の場合において、ハイパーバイザーが、電力消費を低減する、性能を向上させる、あるいは他のポリシー目標を実行する、と決定すると、1つまたは複数のスレッドが既に実行中であることがある。コアがキャッシュストレージまたは他の装置設備を共有しているので、ハイパーバイザーは、スレッドのデータへのアクセスに影響を与えることなく、スレッドを別のコアに移行することができる。したがって、ハイパーバイザーは、スレッドの実行をインタラプトして、スレッドの命令ストリームを異なる物理的処理コアに移して、ターゲットコアにおいて実行を再開することができる。
一部の実施形態において、異種処理システムは、プロセッサ電圧および周波数修正を用いて、異なるコアを選択する前に、電力を低減させるか性能を閾値まで向上させる。例えば、システムは、大きなコアにおいて特定のスレッドの実行を開始し、次いで、大きなコアの電力使用を、当該コアの動作電圧を低減することによって元のスケールに戻し、最終的に、大きなコアの作業を小さなコアに移行することができる。これは、システムが電力使用を徐々に減らし、熱エンベロープを管理するか、またはポリシーによって指定された他の計算目標を満足することを可能にする。
一部の実施形態において、異種処理システムは、一部の処理タスクをクラウドコンピューティング装置設備に移行することを可能にする。システムは、クラウドコンピューティング装置設備を、単なる別の処理コアとして、スケジュールすべきタスクに提示する。適切なタスクのために、システムは、タスクをコンピューティングデバイスから全体的にオフロードし、後で、タスクの出力をゲストオペレーティングシステムに返すことができる。これは、システムが、コンピューティングデバイスにおいて低電力状態に入り、あるいは作業を、電力コストがピークのデータセンタから、電力コストのより低いデータセンタへ遷移するのを可能にする。
一部の実施形態において、異種処理システムは、競合状態に対処し、ソフトウェアロックパラダイムを用いてオペレーティングシステムの期待値を管理する。多くの場合において、オペレーティングシステムは、特定のスレッド間の相互依存性または依存性の欠如に基づいてスレッドをスケジュールする。ソフトウェアは、ロック、ミューテックス、セマフォ、または、スレッドを複数同時に実行する環境でソフトウェアコードが正しく動作できるようにオペレーティングシステムによって提供される、他の同期化プリミティブを用いることができる。異種コンピューティングシステムは、オペレーティングシステムのスレッドの安全性および他の同期化に関する保証事項が確実に満たされるようにし、また新たな競合条件または他の問題が導入されないことを保証するように追加のロックを導入するか、スレッドのスケジューリングを決定することができる。
一部の実施形態において、異種処理システムは、ハードウェアハイパーバイザーを含む。本明細書の諸実施例では、ソフトウェアハイパーバイザーを使用したが、コンピューティングタスクを実装するためのハードウェアまたはソフトウェアの選択はしばしば、性能または他の目標に合致するように切り替えることが可能な実装の詳細であることが当業者には認識されよう。したがって、本システムを、ハードウェアハイパーバイザーを用いて実装することができ、一部の処理ユニットは、処理ユニット自体に本システムを含むように生成されることもある。
以上のことから、本明細書では、例示の目的で、異種処理システムの特定の実施形態を説明してきたが、本発明の精神および範囲から逸脱することなく、様々な修正を行うことが可能であることが理解されよう。したがって、本発明は、添付の特許請求の範囲以外によって限定されることはない。

Claims (9)

  1. ハイパーバイザーを通じて異種計算を切り離したオペレーティングシステムを提供するためにコンピュータで実施される方法であって:
    コンピューティングデバイスに対してアクセス可能な2つ以上の物理的な処理コアの機能を決定するステップと
    前記物理的な処理コアにおいてオペレーティングシステムスレッドをスケジュールするための1つ以上の目標を指定するスケジューリングポリシーにアクセスするステップであって、前記目標のうちの少なくとも1つが電力利用に基づくステップと;
    1つ以上の仮想コアを生成してオペレーティングシステムに対して公開するステップであって、各仮想コアは、前記物理的な処理コアの間の前記機能の相違から前記オペレーティングシステムを分離する、ステップと;
    前記オペレーティングシステムを前記物理的な処理コアから分離している間に、前記オペレーティングシステムを起動して、前記1つ以上の仮想コアを前記オペレーティングシステムに提示するステップと;
    前記スケジューリングポリシーに基づいて、それぞれのオペレーティングシステムスレッドについて、スレッドを実行すべき物理的な処理コアを選択するステップと;
    前記選択された物理的な処理コアにおいて実行すべき前記スレッドをスケジュールするステップと;
    を具備する、方法。
  2. 前記ハイパーバイザーをアクティブ化するステップであって、前記ハイパーバイザーは、前記オペレーティングシステムと前記物理的な処理コアとの間をインタフェースする、ステップと;
    前記ハイパーバイザーがアクセスを管理することになる少なくとも1つのオペレーティングシステムを識別し、前記物理的な処理コアをスケジュールするステップと;
    を更に具備する、請求項1に記載の方法。
  3. 前記1つ以上の目標は、性能目標及び/又は電力利用目標のうちの1つ以上を含む、
    請求項1に記載の方法。
  4. 前記スケジューリングポリシーは、最小電力、最大性能、最小電力・オンデマンド性能及び/又は最大性能・アイドル状態電力低下のうちの1つ以上を含む、
    請求項1に記載の方法。
  5. 前記物理的な処理コアを選択するステップに先行して、識別された仮想コアにおいてスレッドを実行するためのスレッドスケジュール要求を、前記オペレーティングシステムから受け取るステップ;
    を更に具備する、請求項1に記載の方法。
  6. 前記物理的な処理コアの選択は、利用可能なシステム装置設備に更に基づく、
    請求項に記載の方法。
  7. コンピューティングデバイスにおいて、
    少なくとも1つのプロセッサと、メモリとを具備し、
    前記少なくとも1つのプロセッサは:
    当該コンピューティングデバイスに対してアクセス可能な2つ以上の物理的な処理コアの機能を決定する動作と
    前記物理的な処理コアにおいてオペレーティングシステムスレッドをスケジュールするための1つ以上の目標を指定するスケジューリングポリシーにアクセスする動作であって、前記目標のうちの少なくとも1つが電力利用に基づく動作と;
    1つ以上の仮想コアを生成して、オペレーティングシステムに対して公開する動作であって、各仮想コアが、前記物理的な処理コアの間の前記機能の相違から前記オペレーティングシステムを分離する、動作と;
    前記オペレーティングシステムを前記物理的な処理コアから分離している間に、前記オペレーティングシステムを起動して、前記1つ以上の仮想コアを前記オペレーティングシステムに提示する動作と;
    前記スケジューリングポリシーに基づいて、それぞれのオペレーティングシステムスレッドについて、スレッドを実行すべき物理的な処理コアを選択する動作と;
    前記選択された物理的な処理コアにおいて実行すべき前記スレッドをスケジュールする動作と;
    を実行するよう構成される、コンピューティングデバイス。
  8. 異種計算を切り離したオペレーティングシステムを提供するためのコンピュータシステムであって:
    2つ以上の物理的な処理コアと;
    メモリと;
    を備え、前記メモリは、
    オペレーティングシステムスレッドをスケジュールするための1つ以上の目標を指定するスケジューリングポリシーであって、少なくとも1つの目標が電力利用に基づく、スケジューリングポリシーと、
    オペレーティングシステムと前記2つ以上の物理的な処理コアとの間をインタフェースするハイパーバイザーと、
    を含み、前記ハイパーバイザーは、
    前記2つ以上の物理的な処理コアの機能を決定する動作と
    つ以上の仮想コアを生成してオペレーティングシステムに対して公開する動作であって、各仮想コアが、前記物理的な処理コアの間の前記機能の相違から前記オペレーティングシステムを分離する、動作と;
    前記オペレーティングシステムを前記物理的な処理コアから分離している間に、前記オペレーティングシステムを起動して、前記1つ以上の仮想コアを前記オペレーティングシステムに提示する動作と;
    前記スケジューリングポリシーに基づいて、それぞれのオペレーティングシステムスレッドについて、スレッドを実行すべき物理的な処理コアを選択する動作と;
    前記選択された物理的な処理コアにおいて実行すべき前記スレッドをスケジュールする動作と;
    を実行する、コンピュータシステム。
  9. 当該コンピュータシステムは更に、
    前記物理的な処理コアを選択することに先行して、識別された仮想コアにおいてスレッドを実行するためのスレッドスケジュール要求を、前記オペレーティングシステムから受け取る;
    ように構成される、請求項に記載のコンピュータシステム。
JP2016204255A 2011-06-08 2016-10-18 オペレーティングシステムと切り離される異種計算 Active JP6359069B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/155,387 US8793686B2 (en) 2011-06-08 2011-06-08 Operating system decoupled heterogeneous computing
US13/155,387 2011-06-08

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014514858A Division JP6029660B2 (ja) 2011-06-08 2012-06-07 オペレーティングシステムと切り離される異種計算

Publications (2)

Publication Number Publication Date
JP2017033592A JP2017033592A (ja) 2017-02-09
JP6359069B2 true JP6359069B2 (ja) 2018-07-18

Family

ID=47294262

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014514858A Active JP6029660B2 (ja) 2011-06-08 2012-06-07 オペレーティングシステムと切り離される異種計算
JP2016204255A Active JP6359069B2 (ja) 2011-06-08 2016-10-18 オペレーティングシステムと切り離される異種計算

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2014514858A Active JP6029660B2 (ja) 2011-06-08 2012-06-07 オペレーティングシステムと切り離される異種計算

Country Status (8)

Country Link
US (2) US8793686B2 (ja)
EP (1) EP2718813B1 (ja)
JP (2) JP6029660B2 (ja)
KR (1) KR101907564B1 (ja)
CN (1) CN103597449B (ja)
AR (1) AR086607A1 (ja)
TW (1) TWI536269B (ja)
WO (1) WO2012170746A2 (ja)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101858159B1 (ko) * 2012-05-08 2018-06-28 삼성전자주식회사 멀티-cpu 시스템과 이를 포함하는 컴퓨팅 시스템
US9026819B2 (en) 2012-10-01 2015-05-05 College Of William And Mary Method of conserving power based on electronic device's I/O pattern
US9329900B2 (en) 2012-12-28 2016-05-03 Intel Corporation Hetergeneous processor apparatus and method
US10162687B2 (en) * 2012-12-28 2018-12-25 Intel Corporation Selective migration of workloads between heterogeneous compute elements based on evaluation of migration performance benefit and available energy and thermal budgets
US9672046B2 (en) 2012-12-28 2017-06-06 Intel Corporation Apparatus and method for intelligently powering heterogeneous processor components
US9639372B2 (en) * 2012-12-28 2017-05-02 Intel Corporation Apparatus and method for heterogeneous processors mapping to virtual cores
US9448829B2 (en) 2012-12-28 2016-09-20 Intel Corporation Hetergeneous processor apparatus and method
US20140282584A1 (en) * 2013-03-14 2014-09-18 Silicon Graphics International Corp. Allocating Accelerators to Threads in a High Performance Computing System
US9727345B2 (en) 2013-03-15 2017-08-08 Intel Corporation Method for booting a heterogeneous system and presenting a symmetric core view
US10423216B2 (en) * 2013-03-26 2019-09-24 Via Technologies, Inc. Asymmetric multi-core processor with native switching mechanism
US9713064B2 (en) * 2013-03-31 2017-07-18 Hewlett Packard Enterprise Development Lp Schedule for access to shared wireless medium based on profile data
TWI625622B (zh) * 2013-10-31 2018-06-01 聯想企業解決方案(新加坡)有限公司 在多核心處理器系統與運作多核心處理器系統的電腦實施方法
US9825908B2 (en) 2013-12-11 2017-11-21 At&T Intellectual Property I, L.P. System and method to monitor and manage imperfect or compromised software
US9541985B2 (en) 2013-12-12 2017-01-10 International Business Machines Corporation Energy efficient optimization in multicore processors under quality of service (QoS)/performance constraints
US10261875B2 (en) 2013-12-18 2019-04-16 Qualcomm Incorporated Runtime optimization of multi-core system designs for increased operating life and maximized performance
US9606843B2 (en) 2013-12-18 2017-03-28 Qualcomm Incorporated Runtime optimization of multi-core system designs for increased operating life and maximized performance
US10114431B2 (en) 2013-12-31 2018-10-30 Microsoft Technology Licensing, Llc Nonhomogeneous server arrangement
KR102033434B1 (ko) * 2014-01-28 2019-10-17 한국전자통신연구원 동적 컨텍스트 스위칭 기반 멀티코어 에뮬레이션 장치 및 방법
US9413819B1 (en) * 2014-03-21 2016-08-09 Amazon Technologies, Inc. Operating system interface implementation using network-accessible services
US9694281B2 (en) 2014-06-30 2017-07-04 Microsoft Technology Licensing, Llc Data center management of multimode servers
US9424092B2 (en) 2014-09-26 2016-08-23 Microsoft Technology Licensing, Llc Heterogeneous thread scheduling
US9958932B2 (en) 2014-11-20 2018-05-01 Apple Inc. Processor including multiple dissimilar processor cores that implement different portions of instruction set architecture
US9898071B2 (en) 2014-11-20 2018-02-20 Apple Inc. Processor including multiple dissimilar processor cores
JP6447217B2 (ja) 2015-02-17 2019-01-09 富士通株式会社 実行情報通知プログラム、情報処理装置および情報処理システム
US10956571B2 (en) * 2015-05-15 2021-03-23 Intel Corporation Kernel runtime integrity using processor assists
US10628214B2 (en) 2015-06-01 2020-04-21 Samsung Electronics Co., Ltd. Method for scheduling entity in multicore processor system
US9952871B2 (en) * 2015-06-05 2018-04-24 Arm Limited Controlling execution of instructions for a processing pipeline having first out-of order execution circuitry and second execution circuitry
US9626295B2 (en) * 2015-07-23 2017-04-18 Qualcomm Incorporated Systems and methods for scheduling tasks in a heterogeneous processor cluster architecture using cache demand monitoring
US9928115B2 (en) 2015-09-03 2018-03-27 Apple Inc. Hardware migration between dissimilar cores
US9891926B2 (en) * 2015-09-30 2018-02-13 International Business Machines Corporation Heterogeneous core microarchitecture
US10372493B2 (en) * 2015-12-22 2019-08-06 Intel Corporation Thread and/or virtual machine scheduling for cores with diverse capabilities
US10073718B2 (en) 2016-01-15 2018-09-11 Intel Corporation Systems, methods and devices for determining work placement on processor cores
US10282226B2 (en) * 2016-12-20 2019-05-07 Vmware, Inc. Optimizing host CPU usage based on virtual machine guest OS power and performance management
CN108334405A (zh) * 2017-01-20 2018-07-27 阿里巴巴集团控股有限公司 频率异构cpu,频率异构实现方法、装置及任务调度方法
US10459517B2 (en) * 2017-03-31 2019-10-29 Qualcomm Incorporated System and methods for scheduling software tasks based on central processing unit power characteristics
US10509457B2 (en) * 2017-04-06 2019-12-17 International Business Machines Corporation Adaptive frequency optimization in processors
US11144085B2 (en) * 2017-06-23 2021-10-12 Intel Corporation Dynamic maximum frequency limit for processing core groups
US10884953B2 (en) 2017-08-31 2021-01-05 Hewlett Packard Enterprise Development Lp Capability enforcement processors
KR102552954B1 (ko) 2018-11-07 2023-07-06 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템의 동작 방법
KR20200097579A (ko) 2019-02-08 2020-08-19 삼성전자주식회사 프로세스 스케줄링을 위한 전자 장치, 저장 매체 및 방법
US11055094B2 (en) * 2019-06-26 2021-07-06 Intel Corporation Heterogeneous CPUID spoofing for remote processors
US11436118B2 (en) * 2019-12-27 2022-09-06 Intel Corporation Apparatus and method for adaptively scheduling work on heterogeneous processing resources
CN112835595B (zh) * 2021-02-03 2023-06-30 浪潮商用机器有限公司 一种小核架构上运行aix系统的方法、装置、设备及介质
WO2023063650A1 (en) * 2021-10-13 2023-04-20 Samsung Electronics Co., Ltd. Method and apparatus of reporting automatic repeat request status in a communication system
US20230161941A1 (en) * 2021-11-22 2023-05-25 Intel Corporation Application negotiable platform thermal aware scheduler

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6920587B2 (en) 2002-04-25 2005-07-19 International Business Machines Corporation Handling multiple operating system capabilities in a logical partition data processing system
US7177925B2 (en) * 2002-09-27 2007-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Event management system
US7007183B2 (en) 2002-12-09 2006-02-28 International Business Machines Corporation Power conservation by turning off power supply to unallocated resources in partitioned data processing systems
JP4090908B2 (ja) * 2003-02-21 2008-05-28 シャープ株式会社 画像処理装置および画像形成装置
US7257734B2 (en) 2003-07-17 2007-08-14 International Business Machines Corporation Method and apparatus for managing processors in a multi-processor data processing system
US7356665B2 (en) 2003-12-17 2008-04-08 International Business Machines Corporation Method and system for machine memory power and availability management in a processing system supporting multiple virtual machines
US7401240B2 (en) 2004-06-03 2008-07-15 International Business Machines Corporation Method for dynamically managing power in microprocessor chips according to present processing demands
US7543161B2 (en) * 2004-09-30 2009-06-02 International Business Machines Corporation Method and apparatus for tracking variable speed microprocessor performance caused by power management in a logically partitioned data processing system
US20060107262A1 (en) * 2004-11-03 2006-05-18 Intel Corporation Power consumption-based thread scheduling
US9063785B2 (en) * 2004-11-03 2015-06-23 Intel Corporation Temperature-based thread scheduling
US7814307B2 (en) 2006-03-16 2010-10-12 Microsoft Corporation Fast booting a computing device to a specialized experience
US7987464B2 (en) * 2006-07-25 2011-07-26 International Business Machines Corporation Logical partitioning and virtualization in a heterogeneous architecture
WO2008073618A2 (en) 2006-11-06 2008-06-19 Devicevm, Inc. Instant on platform
US8230425B2 (en) * 2007-07-30 2012-07-24 International Business Machines Corporation Assigning tasks to processors in heterogeneous multiprocessors
US8055822B2 (en) * 2007-08-21 2011-11-08 International Business Machines Corporation Multicore processor having storage for core-specific operational data
US8615647B2 (en) * 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
JP4751962B2 (ja) * 2008-09-17 2011-08-17 株式会社日立製作所 情報処理システムの運用管理方法
US9026824B2 (en) 2008-11-04 2015-05-05 Lenovo (Singapore) Pte. Ltd. Establishing power save mode in hypervisor system
US8190839B2 (en) 2009-03-11 2012-05-29 Applied Micro Circuits Corporation Using domains for physical address management in a multiprocessor system
US9135079B2 (en) 2009-10-21 2015-09-15 International Business Machines Corporation Dynamically assigning a portion of physical computing resource to logical partitions based on characteristics of executing logical partitions

Also Published As

Publication number Publication date
AR086607A1 (es) 2014-01-08
JP6029660B2 (ja) 2016-11-24
EP2718813B1 (en) 2021-03-10
TW201250599A (en) 2012-12-16
CN103597449A (zh) 2014-02-19
EP2718813A4 (en) 2014-10-29
KR20140033393A (ko) 2014-03-18
JP2014516192A (ja) 2014-07-07
WO2012170746A2 (en) 2012-12-13
US20120317568A1 (en) 2012-12-13
TWI536269B (zh) 2016-06-01
EP2718813A2 (en) 2014-04-16
KR101907564B1 (ko) 2018-10-12
JP2017033592A (ja) 2017-02-09
US20140325511A1 (en) 2014-10-30
WO2012170746A3 (en) 2013-03-14
US8793686B2 (en) 2014-07-29
CN103597449B (zh) 2017-06-20

Similar Documents

Publication Publication Date Title
JP6359069B2 (ja) オペレーティングシステムと切り離される異種計算
US9864627B2 (en) Power saving operating system for virtual environment
US10503517B2 (en) Method for booting a heterogeneous system and presenting a symmetric core view
US11181970B2 (en) System and method for performing distributed power management without power cycling hosts
JP6058541B2 (ja) コア単位電圧及び周波数制御の提供
US20110113426A1 (en) Apparatuses for switching the running of a virtual machine between multiple computer devices belonging to the same computer platform and the associated switching methods
US20110239015A1 (en) Allocating Computing System Power Levels Responsive to Service Level Agreements
US8589938B2 (en) Composite contention aware task scheduling
JP2009140157A (ja) 仮想計算機システム、仮想計算機の制御方法及びプログラム
TWI733743B (zh) 用以基於指令類型來調整最大時脈頻率的處理器、方法和系統
JP2017515202A (ja) コンピュータ内の複数のスレッドをエグジットするための方法、システム、およびコンピュータ・プログラム
WO2024000443A1 (en) Enforcement of maximum memory access latency for virtual machine instances
WO2023225991A1 (en) Dynamic establishment of polling periods for virtual machine switching operations
CN115269133A (zh) 处理设备、控制单元、电子设备、用于电子设备的方法、以及用于电子设备的计算机程序
Chuang et al. Modified Packing Algorithm for Dynamic Energy-Saving in Cloud Computing Servers
US8656375B2 (en) Cross-logical entity accelerators

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170823

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171204

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180619

R150 Certificate of patent or registration of utility model

Ref document number: 6359069

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