JP5945292B2 - 異種システムをブートし、コアの対称的なビューを表示する方法 - Google Patents

異種システムをブートし、コアの対称的なビューを表示する方法 Download PDF

Info

Publication number
JP5945292B2
JP5945292B2 JP2014052039A JP2014052039A JP5945292B2 JP 5945292 B2 JP5945292 B2 JP 5945292B2 JP 2014052039 A JP2014052039 A JP 2014052039A JP 2014052039 A JP2014052039 A JP 2014052039A JP 5945292 B2 JP5945292 B2 JP 5945292B2
Authority
JP
Japan
Prior art keywords
core
physical
processor
virtual
cores
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.)
Expired - Fee Related
Application number
JP2014052039A
Other languages
English (en)
Other versions
JP2014225242A (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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2014225242A publication Critical patent/JP2014225242A/ja
Application granted granted Critical
Publication of JP5945292B2 publication Critical patent/JP5945292B2/ja
Expired - Fee Related 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems
    • 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/4401Bootstrapping
    • 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/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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
    • 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)
  • Computer Security & Cryptography (AREA)
  • Advance Control (AREA)
  • Power Sources (AREA)
  • Stored Programmes (AREA)
  • Microcomputers (AREA)
  • Multi Processors (AREA)

Description

関連出願の相互参照
本出願は、本明細書において援用される2013年3月15日に出願された仮出願番号第61/801615の利点に関しおよび利点を主張するものである。
本発明は、一般に、コンピュータプロセッサの分野に関する。より詳細には、本発明は異種プロセッサの初期化およびブートを行う装置および方法に関する。
最近のハンドヘルド装置は、その小さなサイズのため、消費電力および熱放散の両方に関する制約を有するが、消費者はさらに高度の演算能力を必要とするさらに高度な機能を期待している。消費電力の削減と演算資源の増加の両方を実現するために、異種プロセッサを利用可能である。複数の種類の演算要素を使用して演算タスクを実行可能であるため、異種コンピューティングアーキテクチャは同種アーキテクチャを上回るような独自の利点を提供しており、それによって低強度の演算タスクは省電力の演算要素によって実行可能となり、高強度の演算タスクはより高性能の演算要素上で実行される。
異種コンピューティングアーキテクチャの周知の利点にもかかわらず、現実にはCPUコア用の異種コンピューティングの例は少ない。そのようなアーキテクチャは、どのように各CPUコアタイプに対して適切にタスクのスケジューリングを行うかを意識するソフトウェアが必要である(この場合、演算要素はCPUコアである)。ハードウェアが進化しコアタイプが変化しているため、ソフトウェア(例えばオペレーティングシステム)が使用可能な異なる種類のCPUコアを把握してどのように異種性を効果的に利用するかを把握するのが非常に難しい。
以下の図面を参照した以下の詳細な説明により、本発明のより深い理解が得られる。
本発明の実施形態による例示のインオーダーパイプラインと例示のレジスタリネーミング、アウトオブオーダー発行/実行パイプラインとの両方を示すブロック図である。
本発明の実施形態による、インオーダーアーキテクチャコアと、プロセッサ内に含まれる例示のレジスタリネーミング、アウトオブオーダー発行/実行アーキテクチャコアの例示の実施形態との両方を示すブロック図である。
本発明の実施形態による、単一コアプロセッサと、統合メモリコントローラおよびグラフィックスを有するマルチコアプロセッサのブロック図である。
本発明の一実施形態によるシステムのブロック図を示す。
本発明の一実施形態による第2のシステムのブロック図を示す。
本発明の一実施形態による第3のシステムのブロック図を示す。
本発明の一実施形態によるシステムオンチップ(SoC)のブロック図を示す。
本発明の実施形態による、ソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するソフトウェア命令コンバータの使用を比較するブロック図を示す。
異種コアコンピューティングアーキテクチャの一実施形態を示す。
一実施形態によるシステムブートフローの全体を示すフロー図である。 一実施形態によるシステムブートフローの全体を示すフロー図である。
一実施形態による、ファームウェアとマイクロコードエレメントとの間で送信されるデータおよびメッセージを示すシーケンス図である。
隠された大きなコアおよび複数の可視の小さなコアを有するシステムの一実施形態を示す。 隠された大きなコアおよび複数の可視の小さなコアを有するシステムの一実施形態を示す。
例示を目的として、以下で説明する本発明の実施形態の十分な理解を実現するため、以下の記載において数多くの特定の詳細を述べる。ただし、本発明の実施形態はそれらの特定の詳細の一部がなくても実現可能であることは、当業者にとって明らかであろう。他の例では、本発明の実施形態の基本原理を曖昧にすることを避けるため、周知の構造および装置をブロック図の形態で示す。
<例示のプロセッサアーキテクチャおよびデータタイプ>
図1Aは、発明の実施形態による例示のインオーダーパイプラインと例示のレジスタリネーミング、アウトオブオーダー発行/実行パイプラインとの両方を示すブロック図である。図1Bは、本発明の実施形態による、インオーダーアーキテクチャコアと、プロセッサ内に含まれる例示のレジスタリネーミング、アウトオブオーダー発行/実行アーキテクチャコアの例示の実施形態との両方を示すブロック図である。図1A〜1Bの実線のボックスはインオーダーパイプラインとインオーダーコアを示し、任意で追加された点線の四角はレジスタリネーム、アウトオブオーダー発行/実行のパイプラインとコアを示す。インオーダー態様がアウトオブオーダー態様のサブセットであるとして、アウトオブオーダー態様を説明する。
図1Aにおいて、プロセッサパイプライン100は、フェッチステージ102、長デコードステージ104、デコードステージ106、割付けステージ108、リネームステージ110、スケジューリング(ディスパッチまたは発行として知られる)ステージ112、レジスタリード/メモリリードステージ114、実行ステージ116、ライトバック/メモリライトステージ118、例外処理ステージ122、およびコミットステージ124を含む。
図1Bは、実行エンジン部150に接続されたフロントエンド部130を含むプロセッサコア190を示す。フロントエンド部130および実行エンジン部150は、ともにメモリ部170に接続される。コア190は、縮小命令セットコンピューティング(RISC)コア、複合命令セットコンピューティング(CISC)コア、超長命令語(VLIW)コア、または混合または代替のコアタイプでもよい。さらに別の選択肢として、コア190は例えばネットワークまたは通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティンググラフィックス演算ユニット(GPGPU)コア、グラフィックスコアなどの特定用途のコアでもよい。
フロントエンド部130は、命令キャッシュ部134に接続された分岐予測部132を含む。命令キャッシュ部134は命令トランスレーションルックアサイドバッファ(TLB)136に接続され、命令TLB136は命令フェッチ部138に接続され、命令フェッチ部138はデコード部140に接続される。デコード部140(またはデコーダ)は命令をデコードし、出力として1つ以上のマイクロ操作、マイクロコードエントリポイント、マイクロ命令、その他の命令、またはその他の制御信号を作成するとしてよい。これらは元の命令からデコードされるか、または元の命令を反映するか、または元の命令から導出される。デコード部140(またはデコーダ)は、様々な異なる機構を使用して実現されてもよい。適した機構の例は、ルックアップテーブル、ハードウェア実装、プログラマブル論理アレイ(PLA)、マイクロコード読出専用メモリ(ROM)等を含むが、それに限らない。一実施形態において、コア190は、特定のマクロ命令に対するマイクロコードを格納するマイクロコードROMなどの媒体を(例えばデコード部140またはフロントエンド部130に)含む。デコード部140は、実行エンジン部150のリネーム/アロケータ部152に接続される。
実行エンジン部150は、リタイアメント部154に接続されたリネーム/アロケータ部152と、一組の1つ以上のスケジューラ部156とを含む。スケジューラ部156は、リザベーションステーション、中央命令ウィンドウ等を含む任意の数の異なるスケジューラを表すものである。スケジューラ部156は、物理レジスタファイル部158に接続される。物理レジスタファイル部158のそれぞれは1つ以上の物理レジスタファイルを表し、それぞれは、スカラ整数、スカラ浮動小数点、パック整数、パック浮動小数点、ベクトル整数、ベクトル浮動小数点等、ステータス(例えば次に実行される命令のアドレスである命令ポインタ)等の1つ以上の異なるデータタイプを格納する。一実施形態において、物理レジスタファイル部158は、ベクトルレジスタ部、書き込みマスクレジスタ部、スカラレジスタ部を含む。これらのレジスタ部は、アーキテクチャベクトルレジスタ、ベクトルマスクレジスタ、および汎用レジスタを提供してもよい。物理レジスタファイル部158は、レジスタリネーミングおよびアウトオブオーダー実行が実行される様々な方法(例えば、リオーダーバッファおよびリタイアメントレジスタファイルを使用、フューチャファイル、ヒストリバッファ、およびリタイアメントレジスタファイルを使用、レジスタマップおよびレジスタのプールを使用等)を図示するためにリタイアメント部154と重なっている。リタイアメント部154および物理レジスタファイル部158は、実行クラスタ160に接続される。実行クラスタ160は、一組の1つ以上の実行部162と、一組の1つ以上のメモリアクセス部164を含む。実行部162は、様々なタイプのデータ(例えば、スカラ浮動小数点、パック整数、パック浮動小数点、ベクトル整数、ベクトル浮動小数点等)に対して様々な演算(例えば、シフト、加算、減算、乗算)を実行してもよい。いくつかの実施形態は特定の機能または一組の機能に専用の実行ユニットを多数含んでもよいが、他の実施形態は全機能をすべてが実行する1つの実行ユニットのみまたは複数の実行ユニットを含んでもよい。特定の実施形態は特定のタイプのデータ/演算に対して個別のパイプラインを作成するため、スケジューラ部156、物理レジスタファイル部158、および実行クラスタ160は複数の可能性があるように示されている(例えば、それぞれがそれ自体のスケジューラ部、物理レジスタファイル部および/または実行クラスタを有するスカラ整数パイプライン、スカラ浮動小数点/パック整数/パック浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、および/またはメモリアクセスパイプライン。個別のメモリアクセスパイプラインの場合、このパイプラインの実行クラスタのみがメモリアクセス部164を有する特定の実施形態が実現される)。なお、個別のパイプラインが使用される場合、そのようなパイプラインの1つ以上はアウトオブオーダー発行/実行でもよく、残りはインオーダーでもよい。
一組のメモリアクセス部164は、メモリ部170に接続される。メモリ部170は、データキャッシュ部174に接続されるデータTLB部172を含み、データキャッシュ部174はレベル2(L2)キャッシュ部176に接続される。一実施例において、メモリアクセス部164はロード部、アドレス格納部、データ格納部を含んでもよく、それぞれはメモリ部170のデータTLB部172に接続される。命令キャッシュ部134は、メモリ部170内のレベル2(L2)キャッシュ部176にさらに接続される。L2キャッシュ部176は、1つ以上の他のレベルのキャッシュに接続され、最終的に主メモリに接続される。
例として、レジスタリネーミング、アウトオブオーダー発行/実行コアアーキテクチャの一例は、以下のパイプライン100を実現してもよい。1)命令フェッチ138は、フェッチおよび長デコードステージ102および104を実行し、2)デコード部140はデコードステージ106を実行し、3)リネーム/アロケータ部152は割付けステージ108およびリネームステージ110を実行し、4)スケジューラ部156はスケジュールステージ112を実行し、5)物理レジスタファイル部158およびメモリ部170はレジスタリード/メモリリードステージ114を実行し、実行クラスタ160は実行ステージ116を実行し、6)メモリ部170および物理レジスタファイル部158はライトバック/メモリライトステージ118を実行し、7)様々な処理部が例外処理ステージ122に関与してもよく、8)リタイアメント部154および物理レジスタファイル部158はコミットステージ124を実行する。
コア190は、上述した命令を含む1つ以上の命令セットに対応してもよい(例えば、x86命令セット(新しいバージョンではいくつかの拡張版が追加された)、カリフォルニア州SunnyvaleのMIPS Technologies社のMIPS命令セット、カリフォルニア州SunnyvaleのARM Holdings社のARM命令セット(NEONなど、オプション追加の拡張版がある)など)。一実施形態において、コア190は、パックデータ命令セットの拡張版をサポートする論理を含み(例えば後述するAVX1、AVX2、および/または汎用的なベクトルと親和性のある命令フォーマット(U=0および/またはU=1)の一部の形態)、それによって多くのマルチメディアアプリケーションによって使用される演算がパックデータを使用して実行可能となる。
なお、コアはマルチスレッディング(演算またはスレッドの2つ以上の並列組の実行)をサポートしてもよく、時間スライスマルチスレッディング、同時マルチスレッディング(単一の物理コアは、物理コアが同時マルチスレッディングを実行するスレッドのそれぞれに対して論理コアを設ける)、またはその組み合わせ(例えば、Intel(登録商標)Hyperthreading技術でも見られる、時間スライスフェッチおよびデコード後に同時マルチスレッディングなど)を含む様々な方法でマルチスレッディングサポートするとしてよいと理解されたい。
レジスタリネームはアウトオブオーダー実行のコンテキストで説明されているが、レジスタリネームはインオーダーアーキテクチャにおいて使用されてもよい。プロセッサの実施例は、さらに、個別の命令およびデータキャッシュ部134/174および共有L2キャッシュ部176を含むが、代替実施形態は、例えば、レベル1(L1)内部キャッシュ、または複数のレベルの内部キャッシュなど、命令およびデータの両方に対して単一の内部キャッシュを有してもよい。いくつかの実施形態において、本システムは内部キャッシュと、コアおよび/またはプロセッサの外部のキャッシュとの組み合わせを含んでもよい。もしくは、キャッシュのすべてがコアおよび/またはプロセッサの外部にあってもよい。
図2は、本発明の実施形態による、複数のコア、統合メモリコントローラ、および統合グラフィックスを含んでもよいプロセッサ200のブロック図である。図2の実線のボックスは単一コア202Aを有するプロセッサ200、システムエージェント210、一組の1つ以上のバスコントローラ部216を示し、任意で追加された点線のボックスは、複数のコア202A〜Nを有する代替のプロセッサ200、システムエージェント部210内の一組の1つ以上の統合メモリコントローラ部214、および特定用途論理208を表わす。
したがって、プロセッサ200の異なる実装は、1)統合グラフィックスおよび/または科学的(スループット)論理(1つ以上のコアを含む)である特定用途の論理208と、1つ以上の汎用コア(例えば汎用インオーダーコア、汎用アウトオブオーダーコア、その2つの組み合わせ)であるコア202A〜Nとを有するCPUと、2)主にグラフィックスおよび/または科学的(スループット)を意図した多数の特定用途のコアであるコア202A〜Nを有するコプロセッサと、3)多数の汎用インオーダーコアであるコア202A〜Nを有するコプロセッサとを含む。したがって、プロセッサ200は、例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU(汎用グラフィックス演算ユニット)、高スループットのmany integrated core(MIC)コプロセッサ(30以上のコアを含む)、埋込み型プロセッサなどの汎用プロセッサ、コプロセッサまたは特定用途のプロセッサでもよい。プロセッサは、1つ以上のチップ上に実装されてもよい。プロセッサ200は、例えば、BiCMOS、CMOS、またはNMOSなどの多くの処理技術のいずれかを使用して1つ以上の基板の一部でもよく、および/またはその基板上に実装されてもよい。
メモリ階層は、コア内の1つ以上のレベルのキャッシュと、一組の1つ以上の共有キャッシュ部206と、一組の統合メモリコントローラ部214に接続された外部メモリ(不図示)とを含む。一組の共有キャッシュ部206は、レベル2(L2)、レベル3(L3)、レベル4(L4)、またはその他のレベルのキャッシュなどの1つ以上の中間レベルキャッシュと、ラストレベルキャッシュ(LLC)と、および/またはその組み合わせとを含んでもよい。一実施形態において、リングをベースとする相互接続部212は、統合グラフィックス論理208と、一組の共有キャッシュ部206と、システムエージェント部210/統合メモリコントローラ部214とを相互接続するが、代替の実施形態はそのような構成要素の相互接続に対して任意の数の周知技術を使用してもよい。一実施形態において、1つ以上のキャッシュ部206とコア202A〜Nとの間で整合性は維持される。
いくつかの実施形態において、コア202A〜Nの1つ以上は、マルチスレッディングを実行可能である。システムエージェント210は、コア202A〜Nを調整して動作させるコンポーネントを含む。システムエージェント部210は、例えば電力調整装置(PCU)および表示部を含んでもよい。PCUは、コア202A〜Nおよび統合グラフィックス論理208の電力状態を調整するために必要な論理およびコンポーネントでもよく、またはそれらを含んでもよい。表示部は、1つ以上の外部接続ディスプレイを駆動するためのものである。
コア202A〜Nはアーキテクチャ命令セットにおいて同種でも異種でもよい。すなわち、コア202A〜Nの2つ以上は同じ命令セットを実行可能でもよく、残りは命令セットまたは異なる命令セットのサブセットのみを実行可能でもよい。一実施形態において、コア202A〜Nは異種であり、後述する「小さな」コアおよび「大きな」コアを含む。
図3〜6は、例示のコンピュータアーキテクチャのブロック図である。ノート型PC、デスクトップPC、ハンドヘルドPC、携帯用情報端末(PDA)、エンジニアリングワークステーション、サーバ、ネットワーク装置、ネットワークハブ、スイッチ、埋込型プロセッサ、デジタル信号プロセッサ(DSP)、グラフィックス装置、ビデオゲーム機器、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレーヤー、ハンドヘルド機器、その他の様々な電子装置に対する当業界において既知の他のシステム設計および構成も適している。一般に、本明細書で開示されているようなプロセッサおよび/または他の実行論理を取り入れることが可能な多種多様なシステムまたは電子装置が通常適している。
図3は、本発明の一実施形態によるシステム300のブロック図を示す。システム300は、コントローラハブ320に接続される1つ以上のプロセッサ310、315を含んでもよい。一実施形態において、コントローラハブ320は、グラフィックスメモリコントローラハブ(GMCH)390および入出力ハブ(IOH)350(別のチップ上にあってもよい)を含み、GMCH390はメモリ340およびコプロセッサ345に接続されるメモリコントローラおよびグラフィックスコントローラを含み、IOH350は、入出力(I/O)装置360をGMCH390に対して接続する。もしくは、メモリコントローラとグラフィックスコントローラの一方または両方がプロセッサ内に統合され(本明細書で説明する通り)、メモリ340およびコプロセッサ345がIOH350を有する単一のチップ内のプロセッサ310およびコントローラハブ320に対して直接接続される。
追加のプロセッサ315の任意の特性を、図3にて点線で示す。各プロセッサ310、315は、本明細書で説明する処理コアの1つ以上を含んでもよく、プロセッサ200のいずれかバージョンでもよい。
メモリ340は、例えば、ダイナミックランダムアクセスメモリ(DRAM)、相変化メモリ(PCM)、またはその2つの組み合わせでもよい。少なくとも1つの実施形態において、コントローラハブ320は、フロントサイドバス(FSB)などのマルチドロップバス、QuickPathインターコネクト(QPI)などのポイントツーポイントインタフェース、または同様の接続395を介してプロセッサ310、315と通信を行う。
一実施形態において、コプロセッサ345は、例えば、高スループットMICプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、埋込み型プロセッサ等の特定用途のプロセッサである。一実施形態において、コントローラハブ320は、統合グラフィックスアクセラレータを含んでもよい。
アーキテクチャ、マイクロアーキテクチャ、熱特性、消費電力特性などを含む様々なメトリックに関して、物理リソース310、315間には大幅な違いがあってもよい。
一実施形態において、プロセッサ310は、一般的な種類のデータ処理演算を制御する命令を実行する。命令内に埋込まれているのは、コプロセッサ命令でもよい。プロセッサ310は、それらのコプロセッサ命令を、付随のコプロセッサ345によって実行されるべき種類のものとして認識する。したがって、プロセッサ310は、コプロセッサ345に対して、コプロセッサバスまたはその他の相互接続上でコプロセッサ命令(コプロセッサ命令を表わす制御信号)を発行する。コプロセッサ345は、受信されたコプロセッサ命令を受け付けて実行する。
図4は、本発明の一実施形態による、第1のより具体的な例示のシステム400のブロック図を示す。図4に示すように、マルチプロセッサシステム400はポイントツ−ポイント相互接続システムであり、ポイントツ−ポイント相互接続450を介して接続される第1のプロセッサ470および第2のプロセッサ480を含む。プロセッサ470および480のそれぞれは、プロセッサ200のいずれかのバージョンでもよい。本発明の一実施形態において、プロセッサ470および480は、それぞれ、プロセッサ310および315であり、コプロセッサ438はコプロセッサ345である。別の実施形態において、プロセッサ470および480は、それぞれ、プロセッサ310およびコプロセッサ345である。
図示したプロセッサ470および480は、統合メモリコントローラ(IMC)部472および482をそれぞれ含む。プロセッサ470は、さらに、ポイントツーポイント(P−P)インタフェース476および478をバスコントローラ部の一部として含む。同様に、第2のプロセッサ480はP−Pインタフェース486および488を含む。プロセッサ470、480は、P−Pインタフェース回路478、488を使用してP−Pインタフェース450を介して情報を交換してもよい。図4に示すように、IMC472および482は各プロセッサをそれぞれのメモリ、すなわちメモリ432およびメモリ434に接続する。メモリ432およびメモリ434は、それぞれのプロセッサにローカルで取り付けられた主メモリの一部でもよい。
プロセッサ470、480は、P−Pインタフェース回路476、494、486、498を使用して、個々のP−Pインタフェース452、454を介してチップセット490と情報を交換してもよい。任意で、チップセット490は、高性能インタフェース439を介してコプロセッサ438と情報を交換してもよい。一実施形態において、コプロセッサ438は、例えば、高スループットMICプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、埋込み型プロセッサ等の特定用途のプロセッサである。
共有キャッシュ(不図示)は、プロセッサが低電力モードにされると、一方または両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納されるようにするために、いずれかのプロセッサ内に含まれてもよく、またはポイントツーポイント相互接続を介して各プロセッサと接続して両プロセッサの外部に配置されるとしてもよい。
チップセット490は、インタフェース496を介して第1のバス416に対して接続されてもよい。一実施形態において、第1のバス416はペリフェラルコンポーネントインターコネクト(PCI)バスでもよく、またはPCI Expressバスなどのバスまたは他の第三世代の入出力相互接続バスでもよい。ただし、本発明の範囲はそれに限定されない。
図4に示すように、様々な入出力装置414は、第1のバス416を第2のバス420に対して接続するバスブリッジ418とともに第1のバス416に対して接続されてもよい。一実施形態において、コプロセッサ、高スループットMICプロセッサ、GPGPU、アクセラレータ(例えばグラフィックスアクセラレータまたはデジタル信号処理(DSP)部など)、フィールドブログラマブルゲートアレイ、またはその他のプロセッサなどの1つ以上の追加のプロセッサ415が第1のバス416に対して接続されているとしてもよい。一実施形態において、第2のバス420はLow Pin Count (LPC)バスでもよい。一実施形態において、例えば、キーボードおよび/またはマウス422、通信装置427、さらに命令/コードおよびデータ430を含むことが可能なディスクドライブや他の大容量格納装置などの格納部428を含む様々な装置が、第2のバス420に対して接続されてもよい。さらに、音声I/O424が、第2のバス420に接続されてもよい。なお、その他のアーキテクチャも可能である。図4のポイントツーポーンとアーキテクチャの代わりに、例えば、システムがマルチドロップバスまたは他の同様のアーキテクチャを実現してもよい。
図5は、本発明の一実施形態によるより具体的な例示の第2のシステム500のブロック図を示す。図4および図5に示す同様のものには同様の参照番号を付し、図5の他の態様を曖昧にすることを避けるため、図4の特定の態様を図5にて省略した。
図5は、プロセッサ470、480がそれぞれ統合メモリおよび入出力制御論理(「CL」)472および482を含むことができることを図示する。したがって、CL472、482は、統合メモリコントローラ部を含み、さらに入出力制御論理も含んでもよい。図5は、メモリ432、434がCL472、482に対して接続されるだけでなく、入出力装置514も制御論理472、482に対して接続されることを示す。レガシー入出力装置515は、チップセット490に対して接続される。
図6は、本発明の一実施形態によるSoC600のブロック図を示す。図2と同様の要素には同様の参照番号を付す。また、点線のボックスは最先端SoCに関する任意の特徴である。図6において、相互接続部602は、一組の1つ以上のコア202A〜Nおよび共有キャッシュ部206を含むアプリケーションプロセッサ610と、システムエージェント部210と、バスコントローラ部216と、統合メモリコントローラ部214と、統合グラフィックス論理、画像処理プロセッサ、音声プロセッサ、映像プロセッサを含んでもよい一組の1つ以上のコプロセッサ620と、スタティックランダムアクセスメモリ(SRAM)部630と、ダイレクトメモリアクセス(DMA)部632と、1つ以上の外部ディスプレイに対して接続するための表示部640とに対して接続される。一実施形態において、コプロセッサ620は、例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、GPGPU、高スループットMICプロセッサ、埋込み型プロセッサ等の特定用途のプロセッサを含む。
本明細書において開示されている機構の実施形態は、ハードウェア、ソフトウェア、ファームウェア、またはそのような実装形態の組み合わせによって実装されてもよい。本発明の実施形態は、少なくとも1つのプロセッサと、格納システム(揮発性および不揮発性メモリおよび/または格納要素を含む)と、少なくとも1つの入力装置と、少なくとも1つの出力装置とを備えるプログラミング可能なシステム上で実行されるコンピュータプログラムまたはプログラムコードとして実装されてもよい。
図4に示すコード430などのプログラムコードは、本明細書に記載の機能を実行し出力情報を生成する入力命令に対して適用されてもよい。出力情報は、既知の方法において、1つ以上の出力装置に対して適用されてもよい。この用途を目的として、処理システムは、例えばデジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、またはマイクロプロセッサなどのプロセッサを有する任意のシステムを含む。
上記プログラムコードは、処理システムとの通信のために上位プロシージャ言語またはオブジェクト指向プログラミング言語で実装されてもよい。また、プログラムコードは必要に応じてアセンブリ言語または機械言語で実装されてもよい。実際に、本明細書において記載された各機構は任意の特定のプログラミング言語に範囲が限定されるものではない。いずれの場合も、言語はコンパイラ形式言語またはインタプリタ形式の言語でよい。
少なくとも1つの実施形態の1つ以上の態様は、機械可読媒体に格納されプロセッサ内の様々な論理を表現する代表命令によって実装されてもよく、機械によって読み出されると、その機械に本明細書に記載の技術を実行する論理を作成させる。そのような「IPコア」として知られる表現は、有形の機械可読媒体に格納され、様々な消費者または製造設備に供給され、論理またはプロセッサを実際に作成する製造機械に対してロードされてもよい。
そのような機械可読記憶媒体は、機械または装置によって製造または形成される物の非一時的な有形の構成を含んでもよく、これらに限定されないが、ハードディスクなどの記憶媒体や、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスク読取専用メモリ(CD−ROM)、書き換え可能なコンパクトディスク(CD−RW)、光磁気ディスクなどの他の種類のディスク、読取専用メモリ(ROM)などの半導体装置、ランダムアクセスメモリ(RAM)、例えば、動的ランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、消去可能プログラマブル読取専用メモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラマブル読取専用メモリ(EEPROM)、相変化メモリ(PCM)、磁気または光カード、またはその他の電子命令の格納に適した種類の媒体を含んでもよい。
したがって、本発明の実施形態は、さらに、本明細書に記載の構造、回路、装置、プロセッサおよび/またはシステムの特徴を定義するハードウェア記述言語(HDL)などの命令または設計データを含む非一時的な有形の機械可読媒体を含む。そのような実施形態は、プログラム製品と呼ばれる場合もある。
いくつかの場合において、命令コンバータを使用して、ソース命令セットからターゲット命令セットへ命令を変換してもよい。例えば、命令コンバータは、命令をコアによって処理される1つ以上の他の命令にトランスレート(例えば、静的バイナリトランスレーション、動的コンパイルを含む動的バイナリトランスレーションを使用)、モーフィング、エミュレート、もしくは変換してもよい。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、またはその組み合わせにおいて実装されてもよい。命令コンバータは、プロセッサ上、プロセッサ外、または部分的にプロセッサ上および部分的にプロセッサ外としてもよい。
図7は、本発明の実施形態による、ソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するソフトウェア命令コンバータの使用を比較するブロック図である。図示した実施形態において、命令コンバータはソフトウェア命令コンバータである。ただし、代替として、命令コンバータはソフトウェア、ファームウェア、ハードウェア、またはその様々な組み合わせにおいて実装されてもよい。図7は、高級言語702のプログラムがx86コンパイラ704を使用してコンパイルされて少なくとも1つx86命令セットコアを有するプロセッサ716によってネイティブで実行可能なx86バイナリコード706を作成できることを示す。少なくとも1つのx86命令セットコアを有するプロセッサ716は、少なくとも1つのx86命令セットコアを有するインテル社製プロセッサとほぼ同じ結果を得られるように、(1)インテル社製x86命令セットコアの命令セットの大部分または(2)少なくとも1つのx86命令セットコアを有するインテル社製プロセッサ上での動作を目的としたアプリケーションまたはその他のソフトウェアのオブジェクトコードバージョンを互換性のある状態を保って実行もしくは処理することによって少なくとも1つのx86命令セットコアを有するインテル社製プロセッサとほぼ同じ機能を実行できる任意のプロセッサを表わす。x86コンパイラ704は、追加の連携処理を施して、もしくは施さずに、少なくとも1つのx86命令セットコアを有するプロセッサ716上で実行することが可能なx86バイナリコード706(例えばオブジェクトコードなど)を作成するように動作可能なコンパイラを表わす。同様に、図7は、高級言語702のプログラムが代替の命令セットコンパイラ708を使用してコンパイルされて、少なくとも1つのx86命令セットコアを有さないプロセッサ714(例えば、カリフォルニア州SunnyvaleのMIPS Technologies社のMIPS命令セットを実行する、および/または英国ケンブリッジのARM Holdings社のARM命令セットを実行するコアを有するプロセッサ)によってネイティブで実行可能な代替の命令セットバイナリコード710を作成することを示す。命令コンバータ712は、x86バイナリコード706を、x86命令セットコアを有さないプロセッサ714によってネイティブで実行可能なコードに変換するために使用される。この変換されたコードは代替の命令セットバイナリコード710と同じには簡単にはならない。これをできる命令コンバータは作成が難しいためである。ただし、変換されたコードは通常の演算を実現し、代替の命令セットからの命令からなることが可能である。したがって、命令コンバータ712はエミュレーション、シミュレーションまたはその他の方法によって、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせを表わし、x86命令セットプロセッサまたはコアを有さないプロセッサまたはその他の電子装置がx86バイナリコード706を実行できるようにする。
<システムに対してトランスペアレントな異種コンピューティング>
以下に記載する本発明の実施形態は、システムから全体的に隠し、プロセッサ内のすべての異種性を意識した論理および発見的方法を統合することによって、システムファームウェアインタフェースおよびオペレーティングシステム(OS)における異種性に対するサポートの欠如を克服するものである。一方、従来のCPUでは、各タスクのコアに対する割り当ては、ソフトウェア(典型的にOS)によってのみ行われていた。本発明の一実施形態においては、この割り当てを2つの部分に分割する。ソフトウェアは露出された同種のコアに対するソフトウェア処理のスケジューリングを継続するが、ハードウェアは露出されたコアと隠された異種コアとの間のスレッドを動的にスワップする。
システムに対して同種の演算要素のみを露出することによって、ハードウェアの異種性がシステムファームウェアインタフェース(例えばBIOS、EFI、またはUEFI)、OSおよび可能なアプリケーションレベルのソフトウェアのほぼすべてを含むソフトウェアから全体的に隠される。したがって、システムは同種のコアのみを有するプロセッサ上で動作しているかのようにブートして動作する。本実施形態のプロセッサハードウェアは、ソフトウェアに対して露出された演算要素を、使用可能な隠された物理演算要素の1つ以上に対して動的にマッピングする論理を含む。さらに、この論理は、各種のプロセッサにおける動作の整合性および様々なコアタイプ間で作業を移行する機能を保つ。ハードウェアが動的に物理演算要素を選択する特定の機構は、システムに対して透過的である。
異種選択された演算要素を含むことによって、プロセッサハードウェアは、非常に異なる種類の演算タスクに関して、非常に異なる動作条件においても非常に効率よく動作する。例えば、電力効率の良い小さなコアと、高性能の大きなコアの両方を含むCPUを使用して、電力が制限されている(性能は重要ではない)時間、さらに高性能が必要とされている(ただし電力は制限されていない)時間にソフトウェアを効率よく動作させることができる。ハードウェア内における演算要素の異なる組み合わせを選択する際は、そのシステム上でどの種類のタスクをどのような条件で動作させる必要があるのかに関する設計要件に基づく。
異種システムには、プロセッサコア、グラフィックスプロセッサユニット(GPU)、および固定機能アクセラレータ(例えばソートおよびループなどの一般的な関数の加速)などの異なる種類の演算要素を含んでもよい。以下に記載する本発明の実施形態において、異種システムは、少ない数の性能の高いコアと多数の電力効率のよい小さなコアなど、異なる種類のプロセッサコアを有する。ただし、本発明の基本的原理は、他の種類の演算要素を用いて使用されてもよい。
図8は、明細書において「Hetero−UP」800と呼ぶ異種コアコンピューティングアーキテクチャの一実施形態を示す。Hetero−UP800構成において、電力効率のよい小さなコア802はソフトウェアに対して露出される。アプリケーション806によって追加の処理能力が必要とされる場合、さらに十分な電力バジェットを使用可能な場合、仮想コアから物理コアへのマッピングは、電力効率のよい小さなコア802から高性能の大きな物理コア804に対してスレッドをトランスペアレントにスワップして、小さなコアの代わりに動作させることができる。一実施形態において、パッケージユニット805は異種プロセッサコア群を管理して、どのプロセッサコアをイネーブルとし、どのプロセッサコアをディセーブルとするかを電力プロファイルおよび必要な演算スループットに基づいて決定する。以下で異種コアコンピューティングの実装のブート方法を説明するために、Hetero−UP800実施形態を例として述べるが、それに限定されない。
Hetero−UP800実施形態において、ファームウェアインタフェースは、各プラットフォームプロセッサを小さなコアとしてのみ列挙することができる。大きなコアはソフトウェアから隠され、CPUIDなどの従来の列挙方法では列挙されることができない。ただし、高性能の大きな物理コア804が可視で電力効率のよい小さなコア802が隠されているHetero−Down構成などの異種コアコンピューティング実装の他の実施形態は可能である。この場合、ファームウェアインタフェースは大きなコアプロセッサを列挙する。
一実施形態において、プロセッサデバッグツールなどの特殊ソフトウェアツールは、ファームウェアインタフェースおよびOSが異種処理システムを意識していない場合でも、使用可能な物理コアの種類を識別可能である。特殊ソフトウェアツールはコア間の切替機能をディセーブルまたはイネーブルとすることができ、あるコアタイプから別のコアタイプへのスレッドの強制切替などの動作を実行できる。
トランスペアレントな異種コンピューティングによってプロセッサハードウェアの設計および開発における複雑度は増すが、ファームウェアインタフェースおよびOS開発者におっては多くの利点をもたらす。第1に、ファームウェアインタフェース、OS、またはアプリケーションソフトウェアは、CPUが異種コア(またはその他の演算要素)を有することを意識する必要がなく、すなわちオペレーティングシステムを含むレガシーソフトウェアが上述したハードウェアとの協働を継続できる。同様に、将来的なオペレーティングシステムおよびソフトウェアアプリケーションは、異種性の種類をハードウェアの各バージョンに反映するために定期的にアップデートする必要がなくなるであろう。
第2に、仮想コアから物理コアへのマッピング論理によって実装される発見的方法のすべては、ハードウェア内に含まれるか、またはハードウェアとともにバンドルされるソフトウェアまたはファームウェア内に含まれるか、もしくはプロセッサベンダによって提供される。その結果、変更の全範囲がソフトウェアから隠され、ソフトウェア更新を必要としないため、将来的なハードウェア設計はさらに積極的かつ革新的な演算要素の選択肢が実現される可能性がある。
<トランスペアレントな異種コンピューティングに対するブートのフロー>
現在の異種コンピューティングソリューションは、ファームウェアインタフェースおよびオペレーティングシステム(OS)の両方が関連するソフトウェア複雑度とともに異種コアを意識する必要がある場合がある。しかしながら、ファームウェアインタフェースおよびOSが実際には1つ以上の異種コアで実行している時に単一の種類のコアで実行しているように動作するようなプロセッサインタフェースを提供することが可能である。1つ方法は、他の種類のコアのふるまいを「エミュレート」するマイクロコード層を使用することである。さらなる方法は、専用のマイクロコードおよびパッケージレベルハードウェアの支援を使用して、実行スレッドを適切な実行コア(例えば低電力または高性能)に移行することである。
システム起動時、システムに対して露出されているコアの種類によって、ファームウェアインタフェースによって実行されるブートフローが決定される。ファームウェアインタフェースの初期化中、隠されたコアは休止状態で、特化したマイクロコードルーチンを使用する以外、システムによる使用はできない。OSが初期化されると、その他のコアタイプを使用して、必要な初期化フローが実行可能である。OSが異種処理システムを意識している場合、異種プロセッサコアはOSに対して可視となり、異なるプロセッサコアタイプのそれぞれに対して直接タスクをスケジューリング可能である。一実施形態において、異種を意識したOSは、エミュレーションまたは仮想プロセッサを介して、OS上で動作しているソフトウェアに対してプロセッサの異種性を抽象化し、それによって実行ソフトウェアに対して同種の抽象化レイヤーを提供する。
OSが異種処理システムを意識していない場合、隠されたコアは動的なコアスワッピング機能を用いて使用可能である。それによって異種プロセッサは様々なコア間で実行スレッドを動的にスワップ可能となる。この方法を使用すると、どのコア上でソフトウェアが実際に実行しているかにかかわらず、ソフトウェアに可視のタイプのコア上でソフトウェアが実行していると信じる。システムの透過性をさらに促進するために、新たな「マスクされたC6」プロセッサ状態が実現される。この状態において、プロセッサコアは低電力状態となり、プロセッサコアの消費電力はほぼゼロとなり、プロセッサコアがシステムソフトウェアに対して不可視となる。マスクされたC6状態のプロセッサコアに対して、標準のシステムトリガはアクセスできず、そのかわり専用のマイクロコードルーチンを介してアクセス可能となっている。
以下の説明を簡略化するためにHetero−UP800システムを使用して例示のブートフローを説明する。システムに可視のコアは、省電力の小さなコア802で、高性能の大きな物理コア804のサブセットを実装し、より少ない量の電力を消費する。ただし、実施形態は限定されず、コアタイプ、プロセッサ上に存在する数、ファームウェアインタフェースおよびOSにとって可視のタイプに関して以下の説明は独断的でない。
図9Aおよび9Bは、一実施形態によるHetero−UP構成上のシステムブートフローの概略的なフロー図である。まず、図9Aにおいて、901では、プラットフォームコントローラハブ(PCH)は、ファームウェアインタフェースコードを、ユニバーサルフラッシュストレージ(UFS)などのマイクロコードがアクセス可能なメモリ空間またはその他のプロセッサが実行可能なメモリ空間に対してコピーすることによって、システムブートに備える。902で、パッケージハードウェアユニット(例えば図8のパッケージユニット805)は、リセット脱出時にすべての小さなコアを取り出し、小さなコアのそれぞれをシステムファームウェアインタフェースにとって可視とし、ブートストラッププロセッサ(BSP)となる省電力の小さなコアの1つを選択する。904で、BSPとなるように選択された小さなコアプロセッサは、マイクロコードを更新および実行する。BSPマイクロコードは、アプリケーションプロセッサとして使用される追加の小さなコアプロセッサをイネーブルとする命令を含む。
BSPマイクロコードは、第1のブート工程時にBSPがロードするファームウェアインタフェース起動モジュールを含んでもよい。BSPは、プロセッサ間割込み(IPI)の使用によって他のプロセッサと通信する。任意で、910a、910b、および910では、BSPはプロセッサ間割込み(IPI)を使用して、使用可能なプリブートマイクロコードをロードするように各小さなコアのAPをトリガする。912a、912b、および912cに示すように、各小さなコアのAPは、それぞれのアプリケーションプロセッサのプリブートマイクロコードを実行する。それにはマシンチェックのサポートの初期化を含む。一実施形態において、小さなコアのAPが処理していない、以前のマシンチェックのイベントはログ記録されており、マシンチェックのサポートがイネーブルになると、新たなマシンチェックのイベントが処理される。914a、914b、および914cでは、各小さなコアのAPがアイドル状態に入り、BSPからの起動IPI(SIPI)を待つ。
小さなコアのアプリケーションプロセッサの初期化と同時に、908で示すように、小さなコアのアプリケーションプロセッサの上位セットを有する大きなコアのアプリケーションプロセッサは、パッケージユニットによってイネーブルとされ、初期化される。一実施形態において、1つ以上の大きなコアはハードウェアにおいて使用可能であるが、内部融合によってディセーブルとされる。その場合、大きなコアは初期化されない。
916では、BSPが高性能の大きなコアAPの起動のための準備をする。これには、大きなコアのプリブートマイクロコードに対するアップデートパッチの任意のロードを含む。918では、大きなコアは、命令実行のためにコアを準備するプリブートマイクロコードを実行する。920では、大きなコアプロセッサは、そのプリブートシーケンスを完了し、準備されたプロセッサコンテキストを保存する。928では、大きなコアが、BSPに対して、大きなコアの初期化シーケンスが完了し、マスクされたC6状態に入ることを通知する。この時点で、ブロック930で示すように、BSCはファームウェアインタフェースブートを完了し、OS起動の準備をする。これを図9Bにおいても示す。
図9Bにおいて、934で示すように、BSP上で実行しているシステムファームウェアインタフェースモジュールは完了すると、BSPはマイクロコードの更新のロードを完了していなかった小さなコアのAPを待つ。936では、BSPがSIPIイベントを小さなコアのAPのそれぞれに対して送信する。938では、小さなコアのAPがそれぞれのリセットサイクルを完了し、標準C6状態に入る。この時点において、小さなコアのブートストラッププロセッサおよび小さなコアのアプリケーションプロセッサは使用可能であり、それぞれがシステムにとって可視となる。一方、大きなコアはマスクされたC6状態のままである。940では、BSPはパッケージユニットを異種イネーブルモードに設定し、それによってプロセッサは隠された異種コアに対してスレッドを動的にスワップできるようになる。
ファームウェアインタフェースの初期化が完了すると、OS初期化ルーチンを開始できる。OSが異種プロセッサシステムをサポートしていない場合、OSは小さなコアのAP上でのタスクをスケジューリングしてもよく、さらにプロセッサハードウェアは小さなコアのAPのうちの1つから大きなコアのAPに対してタスクを自動的にスワップ可能である。ソフトウェアからみると、システムは完全に異種状態で動作している。隠された大きなコアはマスクされ、システム上で可視状態にあるソフトウェアを露出しない。例えば、異種プロセッサシステムをサポートしないOS上では、隠された大きなコアは、可視の高度なプログラム可能割り込みコントローラーIDを有さず、直接的なソフトウェアによって開始されたプロセッサ間割込みを許容せず、大きなコアとしてマシンチェックのイベントを処理する。一実施形態において、異種処理システムの1つ以上の隠されたコアは、可視の同種コアの命令セットをエミュレートすることによって異種を意識しないOSに対して露出される。このOSが異種プロセッサシステムをサポートする場合、OSは様々なコアタイプのそれぞれをソフトウェアに対して露出でき、様々なコアタイプに関してソフトウェアタスクをスケジューリングできる。さらに、異種を意識したOSは、コア間でのスレッドのスワップのために使用されるハードウェア機構を制御できる。
図10は、異種処理システムのブートシーケンスの一実施形態のファームウェアとマイクロコードエレメントとの間でやり取りされるデータおよびメッセージを示すシーケンス図である。一実施形態において、1002に示すように、パッケージユニットファームウェア1000によって実行される1組のファームウェアインタフェース命令は、初期化ブートストラッププロセッサ(BSP)メッセージを、BSP1020になるように選択された小さなコアプロセッサに対して送信する。パッケージユニット1000は、BSP1020に対してマイクロコード更新およびロード1004をトリガして、システムにとって可視となるであろう残りの小さなコアのアプリケーションプロセッサ1040をイネーブルとするように処理を進める。マイクロコード更新を含む初期化ランデブシーケンス1024は、システムにとって可視の小さなコアのアプリケーションプロセッサ1040のそれぞれに対して送信され、それによって各小さなコアのAPはランデブ状態となる。
ランデブ状態において、マルチコアまたはマルチプロセッサシステムの各プロセッサコアは、初期化を管理する単一コアまたはプロセッサに対する制御を放棄するか、もしくはシステム内の全プロセッサに対してエラー処理を実行する。BSP1020からの初期化ランデブシーケンス2024の受信に応じて、可視の小さなコアのアプリケーションプロセッサ1040はマイクロコード更新ランデブシーケンス1046に入り、各プロセッサに対してマイクロコードをロードして実行する。初期化されると、各小さなコアのAP1040は、通知メッセージ1035をBSP1020に対して送信し、その後システムが可視のアイドル状態1048(例えば標準C6モード)に入る。
小さなコアのアプリケーションプロセッサの初期化と同時に、BSP1020は、初期化ランデブシーケンス1026を、1つ以上の隠された大きなコアのアプリケーションプロセッサ1060に対して送信する。1つ以上の大きなコアのアプリケーションプロセッサ1060は、マイクロコード更新ランデブ状態1068に入り、各大きなコア1060に対してマイクロコードをロードする。完了時に、1つ以上の大きなコアのアプリケーションプロセッサ1060は通知メッセージ1055をBSP1020に対して送信し、マスクされたC6アイドル状態1070に入る。この状態において、大きなコアのアプリケーションプロセッサ1060はファームウェアインタフェースおよびOSにとって不可視である。すべてのコアが初期化されると、BSP1020は、すべてのコアが初期化されたこと(1010)をパッケージユニット1000に対して通知し、システムはOSをロードするように準備する。一実施形態において、このOSは異種処理システムを意識しており、OS初期化時において、大きなコアのアプリケーションプロセッサ1060はOSにとって可視となり、小さなコアのアプリケーションプロセッサ1040とともに、コア切替動作のために使用可能となる。一実施形態において、このOSは異種処理システムを意識しておらず、OSの指示がなくても、異種処理システムはトランスペアレントに大きなコアのアプリケーションプロセッサの使用をイネーブルとする。
図11A〜11Bは、どのように本発明の一実施形態が必要に応じてトランスペアレントに小さなコアを大きなコアとスワップするかを示す。一実施形態において、システムファームウェアインタフェースから異種性を隠し、プロセッサ内のすべての異種性を意識した論理および発見的方法を統合することによって、異種性に対するトランスペアレントなサポートが可能となる。従来のCPUにおいて、コアに対するタスクの割り当てはソフトウェア(典型的にOS)によってのみ行われる。ただし、一実施形態において、この割り当ては2つの部分に分割される。ソフトウェアはプロセッサによって露出された同種の「仮想コア」に対するソフトウェア処理のスケジューリングを継続するが、ハードウェアは、どの物理コアタイプが所与の仮想コアを実装するかを動的に選択する。スループット、性能、またはその他のメトリックの最大化が意図されたソフトウェアスケジューリングアルゴリズムは作業を継続するが、ハードウェアは最適化の他の(トランスペアレントな)レイヤーを実行する。このレイヤーにおいて、各仮想コアで動作する処理/スレッドは、その仮想コア上で動作している作業負荷の種類に最適ないずれかの物理コアに送られる。
図11Aに示すように、プロセッサハードウェアは複数の異種物理コアPC0〜PC4 1150を含む。この異種物理コアPC0〜PC4 1150は、1組の小さなコアPC0〜PC3および1つの大きなコアPC4を含む。本実施形態において、同種の仮想コアVC0〜VC3 1106はソフトウェアに対して露出されている。システム内の様々な物理コアタイプにかかわらず、仮想コアは単一の種類のコア(この場合は小さなコアタイプ)としてそれぞれ表わされる。その結果、ソフトウェアベースのスケジューラ1110(OSの一部でもよい)が、真の同種のマルチコアプロセッサまたはマルチプロセッサシステムにあるように、露出された同種の仮想コア1106上で実行するように、スレッド1101のスケジューリングを行う。仮想−物理(V−P)マッピング論理1130は、1組のマッピングルール1140に従って、そして検出された現在の状況1141に基づいて、各仮想コア1106を1つ以上の適切な物理コア1150にマッピングする。上述したように、マッピングの決定は、ソフトウェア、ハードウェア、ファームウェア、またはその任意の組み合わせにおいて実現可能なマッピング決定論理1109によって実行してもよい。
一実施形態において、仮想コア1106と小さなコアPC0〜PC3との間には、デフォルトの1:1マッピングが存在する。したがって、小さなコアPC0〜PC3は、ソフトウェアベースのスケジューラにとって効果的に可視となる。一実施形態において、システムの使用率が低い(特定の閾値未満)の場合、および/または大部分の小さなコアが使用中の場合(例えば、特定の閾値を上回る高処理負荷を有する場合)、このデフォルトマッピングが維持される。例えば、一実施形態において、システムの使用率が低い(例えば60%稼働を上回るコアがない)場合、または大部分の小さなコアが使用中(例えば全使用可能コアの75%よりも多いコアが60%よりも高い使用率)の場合、このデフォルトマッピングが維持される。
ただし、一実施形態において、システムが多数のアイドル状態のコア(例えば全使用可能コアの50%よりも多いコア)を有する場合、さらに少数の(1つ以上の)コアが高負荷で使用率が非常に高いコアの場合、マッピング決定論理1109によって実装された発見的方法は、図11Bに示すようにマッピングを自動的に変更する。ここでは、仮想コアVC1およびVC2に対して、2つのスレッド1101のみがスケジューラ1110によってスケジューリングされており、その仮想コアの少なくとも1つ(本例のVC2)が特定の閾値よりも高い使用率を有する。したがって、本例において、V−Pコアマッピング論理1130はマッピング決定論理1109によって実行されたマッピング決定に応じて、仮想コアVC2を小さな物理コアPC2から大きな物理コアPC4に対して再マッピングを行う。
本明細書にて記載するように、命令とは、特定の動作を実行するように構成された、または所定の機能を有する、特定用途向けIC(ASIC)などのハードウェアの特定の構成、または非一時的なコンピュータ可読媒体において実現されたメモリに格納されたソフトウェア命令を指してもよい。したがって、図面に示す各技術は、1つ以上の電子装置(例えばエンドステーション、ネットワーク要素など)において格納および実行されるコードおよびデータを使用して実現可能である。そのような電子装置は、非一時的なコンピュータまたは機械読取可能格納媒体(例えば磁気ディスク、光ディスク、ランダムアクセスメモリ、読取専用メモリ、フラッシュメモリ装置、相変化メモリ)および一時的なコンピュータまたは機械読取可能通信媒体(例えば搬送波、赤外線信号、デジタル信号など、電気、光学、音響、その他の形態の伝播信号)などのコンピュータまたは機械読取可能媒体を使用して(装置内において、および/またはネットワークを介して他の電子装置と)コードおよびデータを格納および通信する。
さらに、そのような電子装置は、典型的に、1つ以上の格納装置(非一時的機械可読格納媒体)、ユーザ入出力装置(例えばキーボード、タッチスクリーン、および/またはディスプレイ)、およびネットワーク接続などの1つ以上の他の構成要素に対して接続された一組の1つ以上のプロセッサを含む。一組のプロセッサと他の構成要素との接続は、典型的に、1つ以上のバスおよびブリッジ(バスコントローラとも呼ばれる)を介する。ネットワークトラフィックを有する格納装置および信号は、それぞれ、1つ以上の機械可読格納媒体および機械可読通信媒体を表わす。
したがって、所与の電子装置の格納装置は、典型的に、その電子装置の一組の1つ以上のプロセッサ上で実行されるコードおよび/またはデータを格納する。本発明の一実施形態の1つ以上の部分は、ソフトウェア、ファームウェア、および/またはハードウェアの異なる組み合わせを用いて実現されてもよいことは明らかである。この詳細な説明全体において、本発明の十分な理解を実現するために、数多く特定の詳細を記載したが、それらは説明目的に過ぎない。ただし、本発明がそのような特定の詳細の一部がなくても実現可能であることは当業者にとって明らかであろう。特定の例において、本発明の主題を曖昧にすることを回避するため、周知の構造および機能についてさらに詳細に説明しなかった。したがって、本発明の範囲および主旨は、添付の発明の範囲によって判断されるべきである。
本実施形態の例を下記の各項目として示す。
[項目1]
第1の命令セットおよび第1の消費電力レベルを有し、第1の性能レベルでスレッドを実行する第1の物理コアと、
第2の命令セットおよび第2の消費電力レベルを有し、第2の性能レベルでスレッドを実行する第2の物理コアと、
前記第1の物理コアおよび前記第2の物理コアに対して接続され、前記第1の物理コアを仮想コアを介してシステムファームウェアインタフェースにマッピングし、前記第2の物理コアを前記システムファームウェアインタフェースから隠す仮想−物理マッピング回路(V−Pマッピング回路)と
を備え、
前記第1の物理コアおよび前記第2の物理コアは動的なマルチコアユニット内に存在する
プロセッサ。
[項目2]
前記第1の命令セットおよび前記第1の消費電力レベルを有する第3の物理コアをさらに備え、前記V−Pマッピング回路は第1の仮想コアを前記第1の物理コアに対してマッピングし、第2の仮想コアを前記第3の物理コアにマッピングして、一組のスレッドを前記第1の物理コアおよび前記第3の物理コアの間で並列に実行可能とする項目1に記載のプロセッサ。
[項目3]
実行されている前記一組のスレッドに関連して検出された特性に応じて、前記V−Pマッピング回路は、前記ファームウェアインタフェースにトランスペアレントに、前記第2の仮想コアを前記第2の物理コアにマッピングする項目2に記載のプロセッサ。
[項目4]
前記第1の消費電力レベルは前記第2の消費電力レベルよりも低い項目3に記載のプロセッサ。
[項目5]
前記第2の性能レベルは前記第1の性能レベルよりも高い項目4に記載のプロセッサ。
[項目6]
前記V−Pマッピング回路が前記第1の仮想コアおよび前記第2の仮想コアの1つ以上を前記第2の物理コアにマッピングすることによって、前記第2の物理コアはソフトウェアにアクセス可能となる項目5に記載のプロセッサ。
[項目7]
単一の物理コアがブートストラッププロセッサとして動作する項目1〜6のいずれか一項に記載のプロセッサ。
[項目8]
前記第1の物理コアは前記ブートストラッププロセッサとして動作する項目7に記載のプロセッサ。
[項目9]
前記ブートストラッププロセッサは前記第2の物理コアを初期化する項目8に記載のプロセッサ。
[項目10]
一組の1つ以上の小さな物理プロセッサコアを提供する段階と、
前記一組の1つ以上の小さな物理プロセッサコアと比べて比較的高性能な処理能力および比較的高い電力使用を有する少なくとも1つの大きな物理プロセッサコアを提供する段階と、
一組の2つ以上の小さな物理プロセッサコアをシステムファームウェアインタフェースに対して露出する段階と、
前記少なくとも1つの大きな物理プロセッサコアを前記システムファームウェアインタフェースから隠す段階と
を備える方法。
[項目11]
スレッドを大きな物理プロセッサコアで実行可能とするべく、前記スレッドを第1の小さな物理プロセッサコアから前記大きな物理プロセッサコアに動的にスワップする段階をさらに備え、前記スワップする段階は、前記スレッドに対してトランスペアレントである項目10に記載の方法。
[項目12]
前記一組の1つ以上の小さな物理プロセッサコアのうちの一の小さな物理プロセッサコアをブートストラッププロセッサとして指定する段階と、
前記ブートストラッププロセッサによって、前記一組の1つ以上の小さな物理プロセッサコア内の各物理プロセッサコアを初期化する段階と、
前記ブートストラッププロセッサによって、前記少なくとも1つの大きな物理プロセッサコアを初期化する段階と
をさらに含む項目10に記載の方法。
[項目13]
仮想プロセッサコアと小さな物理プロセッサコアとの間のデフォルトマッピングによって、前記一組の1つ以上の小さな物理プロセッサコアはソフトウェアに対して露出される項目12に記載の方法。
[項目14]
前記少なくとも1つの大きな物理プロセッサコアは、前記システムファームウェアインタフェースから隠されており、1つ以上の仮想プロセッサコアを前記少なくとも1つの大きな物理プロセッサコアに対してトランスペアレントにマッピングすることによってオペレーティングシステムにアクセス可能となる項目13に記載の方法。
[項目15]
前記少なくとも1つの大きな物理プロセッサコアは、複数の命令セットを有するプロセッサコアに対するサポートを有するオペレーティングシステムにとって可視である項目14に記載の方法。
[項目16]
一組の小さな物理プロセッサコアと、
前記一組の小さな物理プロセッサコアと比べて比較的高性能な処理能力および比較的高い電力使用を有する少なくとも1つの大きな物理プロセッサコアと、
対応する一組の仮想プロセッサコアを介して、前記一組の小さな物理プロセッサコアをシステムファームウェアインタフェースに対して露出し、前記少なくとも1つの大きな物理プロセッサコアを前記システムファームウェアインタフェースから隠す仮想−物理マッピング論理(V−Pマッピング論理)と、
前記一組の小さな物理プロセッサコアから選択されたブートストラッププロセッサを指定および初期化するパッケージユニットと
を備えるシステム。
[項目17]
前記V−Pマッピング論理は、各仮想コアを前記一組の小さな物理プロセッサコア内の物理プロセッサコアにマッピングして、第1の組のスレッドを前記一組の小さな物理プロセッサコア間で並列に実行可能とする項目16に記載のシステム。
[項目18]
前記一組の物理プロセッサコアから選択された一のブートストラッププロセッサをさらに備え、前記ブートストラッププロセッサは、
前記一組の小さな物理プロセッサコア内の各物理プロセッサコアを初期化し、
前記少なくとも1つの大きな物理コアを初期化する、項目17に記載のシステム。
[項目19]
前記少なくとも1つの大きな物理プロセッサコアはマスクされたアイドル状態を含み、前記少なくとも1つの大きな物理プロセッサコアが前記マスクされたアイドル状態にある場合、前記少なくとも1つの大きな物理プロセッサコアが仮想コアにマッピングされない項目18に記載のシステム。
[項目20]
第1の命令セットおよび第1の消費電力レベルを有し、第1の性能レベルでスレッドを実行する第1の物理コアと、
第2の命令セットおよび第2の消費電力レベルを有し、第2の性能レベルでスレッドを実行する第2の物理コアと、
前記第1の命令セットおよび前記第1の消費電力レベルを有し、前記第1の性能レベルでスレッドを実行する第3の物理コアと、
前記第1の物理コア、前記第2の物理コア、および前記第3の物理コアに対して接続される仮想−物理マッピング回路(V−Pマッピング回路)と
を備え、前記V−Pマッピング回路は、
第1の仮想コアを介して前記第1の物理コアをシステムファームウェアインタフェースにマッピングし、
前記第2の物理コアを前記システムファームウェアインタフェースから隠し、
第2の仮想コアを介して前記第3の物理コアを前記システムファームウェアインタフェースにマッピングして、一組のスレッドが前記第1の物理コアおよび前記第3の物理コアの間で並列に実行可能とし、
実行されている前記一組のスレッドに関連して検出された特性に応じて、前記システムファームウェアインタフェースに対してトランスペアレントに前記第2の仮想コアを前記第2の物理コアにマッピングし、
前記第1の物理コア、前記第2の物理コア、および前記第3の物理コアは動的なマルチコアユニット内に存在するプロセッサ。
[項目21]
前記第1の消費電力レベルは前記第2の消費電力レベルよりも低く、前記第2の性能レベルは前記第1の性能レベルよりも高い項目20に記載のプロセッサ。
[項目22]
前記V−Pマッピング回路によって前記第1の仮想コアおよび前記第2の仮想コアのうちの1つ以上を前記第2の物理コアにマッピングすることによって、前記第2の物理コアがソフトウェアにアクセス可能とする項目20に記載のプロセッサ。
[項目23]
前記プロセッサの単一の物理コアはブートストラッププロセッサとして動作する項目22に記載のプロセッサ。
[項目24]
前記第1の物理コアは前記ブートストラッププロセッサとして動作する項目23に記載のプロセッサ。

Claims (25)

  1. 第1の命令セットおよび第1の消費電力レベルを有し、第1の性能レベルでスレッドを実行する第1の物理コアと、
    第2の命令セットおよび第2の消費電力レベルを有し、第2の性能レベルでスレッドを実行する第2の物理コアと、
    前記第1の物理コアおよび前記第2の物理コアに対して接続され、前記第1の物理コアを仮想コアを介してシステムファームウェアインタフェースに露出し、前記第2の物理コアを前記システムファームウェアインタフェースから隠す仮想−物理マッピング回路(V−Pマッピング回路)と
    を備え、
    前記第1の物理コアおよび前記第2の物理コアは動的なマルチコアユニット内に存在し、
    前記システムファームウェアインタフェースは、前記第1の物理コアを列挙し、前記第2の物理コアを列挙せず、
    前記V−Pマッピング回路は、実行されているスレッドに関連して検出された特性に応じて、仮想コアを前記第2の物理コアにマッピングする
    プロセッサ。
  2. 前記第1の命令セットおよび前記第1の消費電力レベルを有する第3の物理コアをさらに備え、前記V−Pマッピング回路は第1の仮想コアを前記第1の物理コアに対してマッピングし、第2の仮想コアを前記第3の物理コアにマッピングして、一組のスレッドを前記第1の物理コアおよび前記第3の物理コアの間で並列に実行可能とする請求項1に記載のプロセッサ。
  3. 実行されている前記一組のスレッドに関連して検出された特性に応じて、前記V−Pマッピング回路は、前記ファームウェアインタフェースにトランスペアレントに、前記第2の仮想コアを前記第2の物理コアにマッピングする請求項2に記載のプロセッサ。
  4. 前記第1の消費電力レベルは前記第2の消費電力レベルよりも低い請求項3に記載のプロセッサ。
  5. 前記第2の性能レベルは前記第1の性能レベルよりも高い請求項4に記載のプロセッサ。
  6. 前記V−Pマッピング回路が前記第1の仮想コアおよび前記第2の仮想コアの1つ以上を前記第2の物理コアにマッピングすることによって、前記第2の物理コアはソフトウェアにアクセス可能となる請求項5に記載のプロセッサ。
  7. 単一の物理コアがブートストラッププロセッサとして動作する請求項1〜6のいずれか一項に記載のプロセッサ。
  8. 前記第1の物理コアは前記ブートストラッププロセッサとして動作する請求項7に記載のプロセッサ。
  9. 前記ブートストラッププロセッサは前記第2の物理コアを初期化する請求項8に記載のプロセッサ。
  10. 組の2つ以上の小さな物理プロセッサコアをシステムファームウェアインタフェースに対して露出する段階と、
    なくとも1つの大きな物理プロセッサコアを前記システムファームウェアインタフェースから隠す段階と
    を備え
    前記少なくとも1つの大きな物理プロセッサコアは、前記一組の2つ以上の小さな物理プロセッサコアと比べて比較的高性能な処理能力および比較的高い電力使用を有し、
    前記システムファームウェアインタフェースは、前記一組の2つ以上の小さな物理プロセッサコアを列挙し、前記少なくとも1つの大きな物理プロセッサコアを列挙せず、
    実行されているスレッドに関連して検出された特性に応じて、仮想プロセッサコアを前記少なくとも1つの大きな物理プロセッサコアにマッピングする
    方法。
  11. スレッドを大きな物理プロセッサコアで実行可能とするべく、前記スレッドを第1の小さな物理プロセッサコアから前記大きな物理プロセッサコアに動的にスワップする段階をさらに備え、前記スワップする段階は、前記スレッドに対してトランスペアレントである請求項10に記載の方法。
  12. 前記一組のつ以上の小さな物理プロセッサコアのうちの一の小さな物理プロセッサコアをブートストラッププロセッサとして指定する段階と、
    前記ブートストラッププロセッサによって、前記一組のつ以上の小さな物理プロセッサコア内の各物理プロセッサコアを初期化する段階と、
    前記ブートストラッププロセッサによって、前記少なくとも1つの大きな物理プロセッサコアを初期化する段階と
    をさらに含む請求項10に記載の方法。
  13. 仮想プロセッサコアと小さな物理プロセッサコアとの間のデフォルトマッピングによって、前記一組のつ以上の小さな物理プロセッサコアはソフトウェアに対して露出される請求項12に記載の方法。
  14. 前記少なくとも1つの大きな物理プロセッサコアは、前記システムファームウェアインタフェースから隠されており、1つ以上の仮想プロセッサコアを前記少なくとも1つの大きな物理プロセッサコアに対してトランスペアレントにマッピングすることによってオペレーティングシステムにアクセス可能となる請求項13に記載の方法。
  15. 前記少なくとも1つの大きな物理プロセッサコアは、複数の命令セットを有するプロセッサコアに対するサポートを有するオペレーティングシステムにとって可視である請求項14に記載の方法。
  16. 一組の小さな物理プロセッサコアと、
    前記一組の小さな物理プロセッサコアと比べて比較的高性能な処理能力および比較的高い電力使用を有する少なくとも1つの大きな物理プロセッサコアと、
    対応する一組の仮想プロセッサコアを介して、前記一組の小さな物理プロセッサコアをシステムファームウェアインタフェースに対して露出し、前記少なくとも1つの大きな物理プロセッサコアを前記システムファームウェアインタフェースから隠す仮想−物理マッピング論理(V−Pマッピング論理)と、
    前記一組の小さな物理プロセッサコアから選択されたブートストラッププロセッサを指定および初期化するパッケージユニットと
    を備え
    前記システムファームウェアインタフェースは、前記一組の小さな物理プロセッサコアを列挙し、前記少なくとも1つの大きな物理プロセッサコアを列挙せず、
    前記V−Pマッピング論理は、実行されているスレッドに関連して検出された特性に応じて、仮想プロセッサコアを前記少なくとも1つの大きな物理プロセッサコアにマッピングする
    システム。
  17. 前記V−Pマッピング論理は、各仮想コアを前記一組の小さな物理プロセッサコア内の物理プロセッサコアにマッピングして、第1の組のスレッドを前記一組の小さな物理プロセッサコア間で並列に実行可能とする請求項16に記載のシステム。
  18. 前記一組の物理プロセッサコアから選択された一のブートストラッププロセッサをさらに備え、前記ブートストラッププロセッサは、
    前記一組の小さな物理プロセッサコア内の各物理プロセッサコアを初期化し、
    前記少なくとも1つの大きな物理コアを初期化する、請求項17に記載のシステム。
  19. 前記少なくとも1つの大きな物理プロセッサコアはマスクされたアイドル状態を含み、前記少なくとも1つの大きな物理プロセッサコアが前記マスクされたアイドル状態にある場合、前記少なくとも1つの大きな物理プロセッサコアが仮想コアにマッピングされない請求項18に記載のシステム。
  20. 第1の命令セットおよび第1の消費電力レベルを有し、第1の性能レベルでスレッドを実行する第1の物理コアと、
    第2の命令セットおよび第2の消費電力レベルを有し、第2の性能レベルでスレッドを実行する第2の物理コアと、
    前記第1の命令セットおよび前記第1の消費電力レベルを有し、前記第1の性能レベルでスレッドを実行する第3の物理コアと、
    前記第1の物理コア、前記第2の物理コア、および前記第3の物理コアに対して接続される仮想−物理マッピング回路(V−Pマッピング回路)と
    を備え、
    前記V−Pマッピング回路は、
    第1の仮想コアを介して前記第1の物理コアをシステムファームウェアインタフェースに露出し、
    前記第2の物理コアを前記システムファームウェアインタフェースから隠し、
    第2の仮想コアを介して前記第3の物理コアを前記システムファームウェアインタフェースに露出して、一組のスレッドが前記第1の物理コアおよび前記第3の物理コアの間で並列に実行可能とし、
    前記システムファームウェアインタフェースは、前記第1の物理コアを列挙し、前記第2の物理コアを列挙せず、
    実行されている前記一組のスレッドに関連して検出された特性に応じて、前記システムファームウェアインタフェースに対してトランスペアレントに前記第2の仮想コアを前記第2の物理コアにマッピングし、
    前記第1の物理コア、前記第2の物理コア、および前記第3の物理コアは動的なマルチコアユニット内に存在するプロセッサ。
  21. 前記第1の消費電力レベルは前記第2の消費電力レベルよりも低く、前記第2の性能レベルは前記第1の性能レベルよりも高い請求項20に記載のプロセッサ。
  22. 前記V−Pマッピング回路によって前記第1の仮想コアおよび前記第2の仮想コアのうちの1つ以上を前記第2の物理コアにマッピングすることによって、前記第2の物理コアがソフトウェアにアクセス可能とする請求項20に記載のプロセッサ。
  23. 前記プロセッサの単一の物理コアはブートストラッププロセッサとして動作する請求項22に記載のプロセッサ。
  24. 前記第1の物理コアは前記ブートストラッププロセッサとして動作する請求項23に記載のプロセッサ。
  25. 前記第2の物理コアは、前記システムファームウェアインタフェース及びオペレーティングシステムから隠され、前記システムファームウェアインタフェースは、BIOS、EFI、またはUEFIである請求項1〜9のいずれか一項に記載のプロセッサ。
JP2014052039A 2013-03-15 2014-03-14 異種システムをブートし、コアの対称的なビューを表示する方法 Expired - Fee Related JP5945292B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361801615P 2013-03-15 2013-03-15
US61/801,615 2013-03-15
US13/854,001 US9727345B2 (en) 2013-03-15 2013-03-29 Method for booting a heterogeneous system and presenting a symmetric core view
US13/854,001 2013-03-29

Publications (2)

Publication Number Publication Date
JP2014225242A JP2014225242A (ja) 2014-12-04
JP5945292B2 true JP5945292B2 (ja) 2016-07-05

Family

ID=51534015

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014052039A Expired - Fee Related JP5945292B2 (ja) 2013-03-15 2014-03-14 異種システムをブートし、コアの対称的なビューを表示する方法

Country Status (7)

Country Link
US (2) US9727345B2 (ja)
JP (1) JP5945292B2 (ja)
KR (1) KR101773229B1 (ja)
CN (1) CN104503830B (ja)
BR (1) BR102014006299A8 (ja)
DE (1) DE102014003798B4 (ja)
GB (2) GB2547769B (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9792112B2 (en) 2013-08-28 2017-10-17 Via Technologies, Inc. Propagation of microcode patches to multiple cores in multicore microprocessor
US9465432B2 (en) 2013-08-28 2016-10-11 Via Technologies, Inc. Multi-core synchronization mechanism
US10198269B2 (en) 2013-08-28 2019-02-05 Via Technologies, Inc. Dynamic reconfiguration of multi-core processor
US9600551B2 (en) * 2013-10-24 2017-03-21 Sap Se Coexistence of message-passing-like algorithms and procedural coding
US9507649B2 (en) * 2014-05-29 2016-11-29 Apple Inc. Web browser for spoofing supported features
CN107250985B (zh) * 2015-02-27 2020-10-16 华为技术有限公司 用于异构计算应用编程接口(api)的系统和方法
US20170052799A1 (en) * 2015-08-21 2017-02-23 Microchip Technology Incorporated Integrated Circuit Device With Selectable Processor Core
US20170160782A1 (en) * 2015-12-07 2017-06-08 Mediatek Inc. Share power source mechanism in a multicore processor system
US10354033B2 (en) * 2016-10-18 2019-07-16 Intel Corporation Mapping application functional blocks to multi-core processors
CN108460282A (zh) * 2017-02-22 2018-08-28 北京大学 一种基于异构多核芯片的计算机安全启动方法
US10599442B2 (en) * 2017-03-02 2020-03-24 Qualcomm Incorporated Selectable boot CPU
US10510133B2 (en) * 2017-06-20 2019-12-17 Think Silicon Sa Asymmetric multi-core heterogeneous parallel processing system
US20190004816A1 (en) * 2017-06-29 2019-01-03 Dell Products L.P. Systems and methods for heterogeneous system on a chip servers
US11288010B2 (en) * 2017-09-25 2022-03-29 Intel Corporation Efficiently storing computer processor data structures in computer memory
US11354135B2 (en) * 2017-12-25 2022-06-07 Intel Corporation Pre-memory initialization multithread parallel computing platform
CN108228189B (zh) * 2018-01-15 2020-07-28 西安交通大学 一种隐藏异构编程多线程的关联结构及基于其的映射方法
CN109947569B (zh) * 2019-03-15 2021-04-06 Oppo广东移动通信有限公司 绑定核心的方法、装置、终端及存储介质
US11842202B2 (en) * 2019-10-25 2023-12-12 Intel Corporation Apparatus and method for dynamic selection of an optimal processor core for power-up and/or sleep modes
US20220058029A1 (en) * 2020-08-24 2022-02-24 Intel Corporation Energy-efficient core voltage selection apparatus and method

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4377000A (en) * 1980-05-05 1983-03-15 Westinghouse Electric Corp. Automatic fault detection and recovery system which provides stability and continuity of operation in an industrial multiprocessor control
US5440752A (en) 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
US5642506A (en) 1994-12-14 1997-06-24 International Business Machines Corporation Method and apparatus for initializing a multiprocessor system
AU5722296A (en) 1995-05-01 1996-11-21 Apple Computer, Inc. A modular system utilizing interchangeable printed circuit b oard processor cards
JP3005499B2 (ja) 1997-06-26 2000-01-31 日本電気アイシーマイコンシステム株式会社 図形処理装置及び図形処理方法
JP3497988B2 (ja) 1998-04-15 2004-02-16 株式会社ルネサステクノロジ 図形処理装置及び図形処理方法
US6341347B1 (en) 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6970992B2 (en) 1999-10-04 2005-11-29 Intel Corporation Apparatus to map virtual pages to disparate-sized, non-contiguous real pages and methods relating thereto
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US7996839B2 (en) 2003-07-16 2011-08-09 Hewlett-Packard Development Company, L.P. Heterogeneous processor core systems for improved throughput
US7873776B2 (en) 2004-06-30 2011-01-18 Oracle America, Inc. Multiple-core processor with support for multiple virtual processors
US9264384B1 (en) 2004-07-22 2016-02-16 Oracle International Corporation Resource virtualization mechanism including virtual host bus adapters
US7437581B2 (en) 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US9058292B2 (en) 2004-12-29 2015-06-16 Intel Corporation System and method for one step address translation of graphics addresses in virtualization
US7353410B2 (en) 2005-01-11 2008-04-01 International Business Machines Corporation Method, system and calibration technique for power measurement and management over multiple time frames
US7600135B2 (en) 2005-04-14 2009-10-06 Mips Technologies, Inc. Apparatus and method for software specified power management performance using low power virtual threads
US7490254B2 (en) 2005-08-02 2009-02-10 Advanced Micro Devices, Inc. Increasing workload performance of one or more cores on multiple core processors
US7461275B2 (en) 2005-09-30 2008-12-02 Intel Corporation Dynamic core swapping
US7516301B1 (en) 2005-12-16 2009-04-07 Nvidia Corporation Multiprocessor computing systems with heterogeneous processors
US7802073B1 (en) 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US7272517B1 (en) 2006-04-25 2007-09-18 International Business Machines Corporation Method and system for providing performance estimations for a specified power budget
US7822941B2 (en) 2006-06-05 2010-10-26 Oracle America, Inc. Function-based virtual-to-physical address translation
US7904676B2 (en) * 2007-04-30 2011-03-08 Hewlett-Packard Development Company, L.P. Method and system for achieving varying manners of memory access
US8225315B1 (en) * 2007-07-23 2012-07-17 Oracle America, Inc. Virtual core management
US7818500B2 (en) * 2007-11-01 2010-10-19 Pubali Ray Apparatus and method for using one core for RAID control in multi-core CPU
US8010822B2 (en) * 2008-03-28 2011-08-30 Microsoft Corporation Power-aware thread scheduling and dynamic use of processors
US20090309243A1 (en) 2008-06-11 2009-12-17 Nvidia Corporation Multi-core integrated circuits having asymmetric performance between cores
US8214675B2 (en) * 2008-12-08 2012-07-03 Lenovo (Singapore) Pte. Ltd. Apparatus, system, and method for power management utilizing multiple processor types
US9507640B2 (en) 2008-12-16 2016-11-29 International Business Machines Corporation Multicore processor and method of use that configures core functions based on executing instructions
US8122269B2 (en) * 2009-01-07 2012-02-21 International Business Machines Corporation Regulating power consumption in a multi-core processor by dynamically distributing power and processing requests by a managing core to a configuration of processing cores
US8930953B2 (en) 2009-01-16 2015-01-06 International Business Machines Corporation Dynamic checking of hardware resources for virtual environments
US8386747B2 (en) 2009-06-11 2013-02-26 Freescale Semiconductor, Inc. Processor and method for dynamic and selective alteration of address translation
US8400458B2 (en) 2009-09-09 2013-03-19 Hewlett-Packard Development Company, L.P. Method and system for blocking data on a GPU
US8650426B2 (en) * 2009-12-16 2014-02-11 Qualcomm Incorporated System and method for controlling central processing unit power in a virtualized system
US8386749B2 (en) 2010-03-16 2013-02-26 Advanced Micro Devices, Inc. Address mapping in virtualized processing system
US8898664B2 (en) * 2010-06-01 2014-11-25 Microsoft Corporation Exposure of virtual cache topology to a guest operating system
US8869164B2 (en) 2010-09-02 2014-10-21 International Business Machines Corporation Scheduling a parallel job in a system of virtual containers
US8943334B2 (en) 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
US9268611B2 (en) 2010-09-25 2016-02-23 Intel Corporation Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores
US8418177B2 (en) 2010-10-01 2013-04-09 Microsoft Corporation Virtual machine and/or multi-level scheduling support on systems with asymmetric processor cores
US9092219B2 (en) 2010-11-02 2015-07-28 Advanced Micro Devices, Inc. Method and system of sampling to automatically scale digital power estimates with frequency
US8861434B2 (en) 2010-11-29 2014-10-14 Alcatel Lucent Method and system for improved multi-cell support on a single modem board
US9286257B2 (en) 2011-01-28 2016-03-15 Qualcomm Incorporated Bus clock frequency scaling for a bus interconnect and related devices, systems, and methods
WO2012134431A1 (en) 2011-03-25 2012-10-04 Research In Motion Limited Dynamic power management of cache memory in a multi-core processing system
US8793686B2 (en) 2011-06-08 2014-07-29 Microsoft Corporation Operating system decoupled heterogeneous computing
KR101624061B1 (ko) 2011-09-06 2016-05-24 인텔 코포레이션 전력 효율적 프로세서 아키텍처
TW201319827A (zh) * 2011-11-04 2013-05-16 Inventec Corp 執行多重作業系統的方法及電子裝置
US9442773B2 (en) 2011-11-21 2016-09-13 Qualcomm Incorporated Thermally driven workload scheduling in a heterogeneous multi-processor system on a chip
US20130155081A1 (en) 2011-12-15 2013-06-20 Ati Technologies Ulc Power management in multiple processor system
US9372524B2 (en) 2011-12-15 2016-06-21 Intel Corporation Dynamically modifying a power/performance tradeoff based on processor utilization
US9304570B2 (en) 2011-12-15 2016-04-05 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including power and performance workload-based balancing between multiple processing elements
US20130160003A1 (en) 2011-12-19 2013-06-20 Vmware, Inc. Managing resource utilization within a cluster of computing devices
US9720730B2 (en) 2011-12-30 2017-08-01 Intel Corporation Providing an asymmetric multicore processor system transparently to an operating system
WO2013162589A1 (en) 2012-04-27 2013-10-31 Intel Corporation Migrating tasks between asymmetric computing elements of a multi-core processor
US9009508B2 (en) * 2012-08-28 2015-04-14 Advanced Micro Devices, Inc. Mechanism for reducing interrupt latency and power consumption using heterogeneous cores
US9524012B2 (en) 2012-10-05 2016-12-20 Dell Products L.P. Power system utilizing processor core performance state control
US9672046B2 (en) * 2012-12-28 2017-06-06 Intel Corporation Apparatus and method for intelligently powering heterogeneous processor components
US9329900B2 (en) 2012-12-28 2016-05-03 Intel Corporation Hetergeneous processor apparatus and method
US9448829B2 (en) * 2012-12-28 2016-09-20 Intel Corporation Hetergeneous processor apparatus and method
US9639372B2 (en) * 2012-12-28 2017-05-02 Intel Corporation Apparatus and method for heterogeneous processors mapping to virtual cores
KR102055622B1 (ko) 2013-01-10 2020-01-23 삼성디스플레이 주식회사 평판 표시 장치 및 평판 표시 장치의 구동 방법

Also Published As

Publication number Publication date
KR101773229B1 (ko) 2017-08-31
GB2547769B (en) 2018-04-25
GB2514236A (en) 2014-11-19
JP2014225242A (ja) 2014-12-04
US20140281457A1 (en) 2014-09-18
BR102014006299A8 (pt) 2018-05-29
CN104503830B (zh) 2018-05-22
US10503517B2 (en) 2019-12-10
GB201700245D0 (en) 2017-02-22
US9727345B2 (en) 2017-08-08
GB2547769A (en) 2017-08-30
CN104503830A (zh) 2015-04-08
GB201404549D0 (en) 2014-04-30
DE102014003798B4 (de) 2023-07-13
US20180060078A1 (en) 2018-03-01
KR20140113600A (ko) 2014-09-24
DE102014003798A1 (de) 2014-09-18
GB2514236B (en) 2017-02-15
BR102014006299A2 (pt) 2015-11-03

Similar Documents

Publication Publication Date Title
JP5945292B2 (ja) 異種システムをブートし、コアの対称的なビューを表示する方法
CN107408036B (zh) 用户级分叉与结合处理器、方法、系统和指令
JP6507435B2 (ja) 命令エミュレーションプロセッサ、方法、およびシステム
KR101673435B1 (ko) 공동 설계 프로세서에서 격리된 실행 환경의 생성
KR101738212B1 (ko) 명령어 에뮬레이션 프로세서, 방법, 및 시스템
KR102262176B1 (ko) 예외로부터 리턴할 때 마스크 불가능 인터럽트의 조기 인에이블링의 회피
KR102187912B1 (ko) 인터럽트들의 세트들을 구성하는 장치 및 방법
CN104205042A (zh) 用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制
US20190205061A1 (en) Processor, method, and system for reducing latency in accessing remote registers
US11941409B2 (en) Methods, systems, and apparatuses for a multiprocessor boot flow for a faster boot process
US10223149B2 (en) Implementing device models for virtual machines with reconfigurable hardware
US10771554B2 (en) Cloud scaling with non-blocking non-spinning cross-domain event synchronization and data communication
EP3901768A1 (en) Methods, systems, and apparatuses for a multiprocessor boot flow for a faster boot process
Asri et al. The Non-Uniform Compute Device (NUCD) Architecture for Lightweight Accelerator Offload
US20180349137A1 (en) Reconfiguring a processor without a system reset

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150317

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150616

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150716

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150814

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150917

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160427

R155 Notification before disposition of declining of application

Free format text: JAPANESE INTERMEDIATE CODE: R155

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160527

R150 Certificate of patent or registration of utility model

Ref document number: 5945292

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

LAPS Cancellation because of no payment of annual fees