(58)【調査した分野】(Int.Cl.,DB名)
前記第1の命令セットおよび前記第1の消費電力レベルを有する第3の物理コアをさらに備え、前記V−Pマッピング回路は第1の仮想コアを前記第1の物理コアに対してマッピングし、第2の仮想コアを前記第3の物理コアにマッピングして、一組のスレッドを前記第1の物理コアおよび前記第3の物理コアの間で並列に実行可能とする請求項1に記載のプロセッサ。
実行されている前記一組のスレッドに関連して検出された特性に応じて、前記V−Pマッピング回路は、前記ファームウェアインタフェースにトランスペアレントに、前記第2の仮想コアを前記第2の物理コアにマッピングする請求項2に記載のプロセッサ。
前記V−Pマッピング回路が前記第1の仮想コアおよび前記第2の仮想コアの1つ以上を前記第2の物理コアにマッピングすることによって、前記第2の物理コアはソフトウェアにアクセス可能となる請求項5に記載のプロセッサ。
スレッドを大きな物理プロセッサコアで実行可能とするべく、前記スレッドを第1の小さな物理プロセッサコアから前記大きな物理プロセッサコアに動的にスワップする段階をさらに備え、前記スワップする段階は、前記スレッドに対してトランスペアレントである請求項10に記載の方法。
前記少なくとも1つの大きな物理プロセッサコアは、前記システムファームウェアインタフェースから隠されており、1つ以上の仮想プロセッサコアを前記少なくとも1つの大きな物理プロセッサコアに対してトランスペアレントにマッピングすることによってオペレーティングシステムにアクセス可能となる請求項13に記載の方法。
前記少なくとも1つの大きな物理プロセッサコアは、複数の命令セットを有するプロセッサコアに対するサポートを有するオペレーティングシステムにとって可視である請求項14に記載の方法。
前記V−Pマッピング論理は、各仮想コアを前記一組の小さな物理プロセッサコア内の物理プロセッサコアにマッピングして、第1の組のスレッドを前記一組の小さな物理プロセッサコア間で並列に実行可能とする請求項16に記載のシステム。
前記少なくとも1つの大きな物理プロセッサコアはマスクされたアイドル状態を含み、前記少なくとも1つの大きな物理プロセッサコアが前記マスクされたアイドル状態にある場合、前記少なくとも1つの大きな物理プロセッサコアが仮想コアにマッピングされない請求項18に記載のシステム。
前記V−Pマッピング回路によって前記第1の仮想コアおよび前記第2の仮想コアのうちの1つ以上を前記第2の物理コアにマッピングすることによって、前記第2の物理コアがソフトウェアにアクセス可能とする請求項20に記載のプロセッサ。
【発明を実施するための形態】
【0018】
例示を目的として、以下で説明する本発明の実施形態の十分な理解を実現するため、以下の記載において数多くの特定の詳細を述べる。ただし、本発明の実施形態はそれらの特定の詳細の一部がなくても実現可能であることは、当業者にとって明らかであろう。他の例では、本発明の実施形態の基本原理を曖昧にすることを避けるため、周知の構造および装置をブロック図の形態で示す。
【0019】
<例示のプロセッサアーキテクチャおよびデータタイプ>
図1Aは、発明の実施形態による例示のインオーダーパイプラインと例示のレジスタリネーミング、アウトオブオーダー発行/実行パイプラインとの両方を示すブロック図である。
図1Bは、本発明の実施形態による、インオーダーアーキテクチャコアと、プロセッサ内に含まれる例示のレジスタリネーミング、アウトオブオーダー発行/実行アーキテクチャコアの例示の実施形態との両方を示すブロック図である。
図1A〜1Bの実線のボックスはインオーダーパイプラインとインオーダーコアを示し、任意で追加された点線の四角はレジスタリネーム、アウトオブオーダー発行/実行のパイプラインとコアを示す。インオーダー態様がアウトオブオーダー態様のサブセットであるとして、アウトオブオーダー態様を説明する。
【0020】
図1Aにおいて、プロセッサパイプライン100は、フェッチステージ102、長デコードステージ104、デコードステージ106、割付けステージ108、リネームステージ110、スケジューリング(ディスパッチまたは発行として知られる)ステージ112、レジスタリード/メモリリードステージ114、実行ステージ116、ライトバック/メモリライトステージ118、例外処理ステージ122、およびコミットステージ124を含む。
【0021】
図1Bは、実行エンジン部150に接続されたフロントエンド部130を含むプロセッサコア190を示す。フロントエンド部130および実行エンジン部150は、ともにメモリ部170に接続される。コア190は、縮小命令セットコンピューティング(RISC)コア、複合命令セットコンピューティング(CISC)コア、超長命令語(VLIW)コア、または混合または代替のコアタイプでもよい。さらに別の選択肢として、コア190は例えばネットワークまたは通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティンググラフィックス演算ユニット(GPGPU)コア、グラフィックスコアなどの特定用途のコアでもよい。
【0022】
フロントエンド部130は、命令キャッシュ部134に接続された分岐予測部132を含む。命令キャッシュ部134は命令トランスレーションルックアサイドバッファ(TLB)136に接続され、命令TLB136は命令フェッチ部138に接続され、命令フェッチ部138はデコード部140に接続される。デコード部140(またはデコーダ)は命令をデコードし、出力として1つ以上のマイクロ操作、マイクロコードエントリポイント、マイクロ命令、その他の命令、またはその他の制御信号を作成するとしてよい。これらは元の命令からデコードされるか、または元の命令を反映するか、または元の命令から導出される。デコード部140(またはデコーダ)は、様々な異なる機構を使用して実現されてもよい。適した機構の例は、ルックアップテーブル、ハードウェア実装、プログラマブル論理アレイ(PLA)、マイクロコード読出専用メモリ(ROM)等を含むが、それに限らない。一実施形態において、コア190は、特定のマクロ命令に対するマイクロコードを格納するマイクロコードROMなどの媒体を(例えばデコード部140またはフロントエンド部130に)含む。デコード部140は、実行エンジン部150のリネーム/アロケータ部152に接続される。
【0023】
実行エンジン部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つ以上はアウトオブオーダー発行/実行でもよく、残りはインオーダーでもよい。
【0024】
一組のメモリアクセス部164は、メモリ部170に接続される。メモリ部170は、データキャッシュ部174に接続されるデータTLB部172を含み、データキャッシュ部174はレベル2(L2)キャッシュ部176に接続される。一実施例において、メモリアクセス部164はロード部、アドレス格納部、データ格納部を含んでもよく、それぞれはメモリ部170のデータTLB部172に接続される。命令キャッシュ部134は、メモリ部170内のレベル2(L2)キャッシュ部176にさらに接続される。L2キャッシュ部176は、1つ以上の他のレベルのキャッシュに接続され、最終的に主メモリに接続される。
【0025】
例として、レジスタリネーミング、アウトオブオーダー発行/実行コアアーキテクチャの一例は、以下のパイプライン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を実行する。
【0026】
コア190は、上述した命令を含む1つ以上の命令セットに対応してもよい(例えば、x86命令セット(新しいバージョンではいくつかの拡張版が追加された)、カリフォルニア州SunnyvaleのMIPS Technologies社のMIPS命令セット、カリフォルニア州SunnyvaleのARM Holdings社のARM命令セット(NEONなど、オプション追加の拡張版がある)など)。一実施形態において、コア190は、パックデータ命令セットの拡張版をサポートする論理を含み(例えば後述するAVX1、AVX2、および/または汎用的なベクトルと親和性のある命令フォーマット(U=0および/またはU=1)の一部の形態)、それによって多くのマルチメディアアプリケーションによって使用される演算がパックデータを使用して実行可能となる。
【0027】
なお、コアはマルチスレッディング(演算またはスレッドの2つ以上の並列組の実行)をサポートしてもよく、時間スライスマルチスレッディング、同時マルチスレッディング(単一の物理コアは、物理コアが同時マルチスレッディングを実行するスレッドのそれぞれに対して論理コアを設ける)、またはその組み合わせ(例えば、Intel(登録商標)Hyperthreading技術でも見られる、時間スライスフェッチおよびデコード後に同時マルチスレッディングなど)を含む様々な方法でマルチスレッディングサポートするとしてよいと理解されたい。
【0028】
レジスタリネームはアウトオブオーダー実行のコンテキストで説明されているが、レジスタリネームはインオーダーアーキテクチャにおいて使用されてもよい。プロセッサの実施例は、さらに、個別の命令およびデータキャッシュ部134/174および共有L2キャッシュ部176を含むが、代替実施形態は、例えば、レベル1(L1)内部キャッシュ、または複数のレベルの内部キャッシュなど、命令およびデータの両方に対して単一の内部キャッシュを有してもよい。いくつかの実施形態において、本システムは内部キャッシュと、コアおよび/またはプロセッサの外部のキャッシュとの組み合わせを含んでもよい。もしくは、キャッシュのすべてがコアおよび/またはプロセッサの外部にあってもよい。
【0029】
図2は、本発明の実施形態による、複数のコア、統合メモリコントローラ、および統合グラフィックスを含んでもよいプロセッサ200のブロック図である。
図2の実線のボックスは単一コア202Aを有するプロセッサ200、システムエージェント210、一組の1つ以上のバスコントローラ部216を示し、任意で追加された点線のボックスは、複数のコア202A〜Nを有する代替のプロセッサ200、システムエージェント部210内の一組の1つ以上の統合メモリコントローラ部214、および特定用途論理208を表わす。
【0030】
したがって、プロセッサ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つ以上の基板の一部でもよく、および/またはその基板上に実装されてもよい。
【0031】
メモリ階層は、コア内の1つ以上のレベルのキャッシュと、一組の1つ以上の共有キャッシュ部206と、一組の統合メモリコントローラ部214に接続された外部メモリ(不図示)とを含む。一組の共有キャッシュ部206は、レベル2(L2)、レベル3(L3)、レベル4(L4)、またはその他のレベルのキャッシュなどの1つ以上の中間レベルキャッシュと、ラストレベルキャッシュ(LLC)と、および/またはその組み合わせとを含んでもよい。一実施形態において、リングをベースとする相互接続部212は、統合グラフィックス論理208と、一組の共有キャッシュ部206と、システムエージェント部210/統合メモリコントローラ部214とを相互接続するが、代替の実施形態はそのような構成要素の相互接続に対して任意の数の周知技術を使用してもよい。一実施形態において、1つ以上のキャッシュ部206とコア202A〜Nとの間で整合性は維持される。
【0032】
いくつかの実施形態において、コア202A〜Nの1つ以上は、マルチスレッディングを実行可能である。システムエージェント210は、コア202A〜Nを調整して動作させるコンポーネントを含む。システムエージェント部210は、例えば電力調整装置(PCU)および表示部を含んでもよい。PCUは、コア202A〜Nおよび統合グラフィックス論理208の電力状態を調整するために必要な論理およびコンポーネントでもよく、またはそれらを含んでもよい。表示部は、1つ以上の外部接続ディスプレイを駆動するためのものである。
【0033】
コア202A〜Nはアーキテクチャ命令セットにおいて同種でも異種でもよい。すなわち、コア202A〜Nの2つ以上は同じ命令セットを実行可能でもよく、残りは命令セットまたは異なる命令セットのサブセットのみを実行可能でもよい。一実施形態において、コア202A〜Nは異種であり、後述する「小さな」コアおよび「大きな」コアを含む。
【0034】
図3〜6は、例示のコンピュータアーキテクチャのブロック図である。ノート型PC、デスクトップPC、ハンドヘルドPC、携帯用情報端末(PDA)、エンジニアリングワークステーション、サーバ、ネットワーク装置、ネットワークハブ、スイッチ、埋込型プロセッサ、デジタル信号プロセッサ(DSP)、グラフィックス装置、ビデオゲーム機器、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレーヤー、ハンドヘルド機器、その他の様々な電子装置に対する当業界において既知の他のシステム設計および構成も適している。一般に、本明細書で開示されているようなプロセッサおよび/または他の実行論理を取り入れることが可能な多種多様なシステムまたは電子装置が通常適している。
【0035】
図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に対して直接接続される。
【0036】
追加のプロセッサ315の任意の特性を、
図3にて点線で示す。各プロセッサ310、315は、本明細書で説明する処理コアの1つ以上を含んでもよく、プロセッサ200のいずれかバージョンでもよい。
【0037】
メモリ340は、例えば、ダイナミックランダムアクセスメモリ(DRAM)、相変化メモリ(PCM)、またはその2つの組み合わせでもよい。少なくとも1つの実施形態において、コントローラハブ320は、フロントサイドバス(FSB)などのマルチドロップバス、QuickPathインターコネクト(QPI)などのポイントツーポイントインタフェース、または同様の接続395を介してプロセッサ310、315と通信を行う。
【0038】
一実施形態において、コプロセッサ345は、例えば、高スループットMICプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、埋込み型プロセッサ等の特定用途のプロセッサである。一実施形態において、コントローラハブ320は、統合グラフィックスアクセラレータを含んでもよい。
【0039】
アーキテクチャ、マイクロアーキテクチャ、熱特性、消費電力特性などを含む様々なメトリックに関して、物理リソース310、315間には大幅な違いがあってもよい。
【0040】
一実施形態において、プロセッサ310は、一般的な種類のデータ処理演算を制御する命令を実行する。命令内に埋込まれているのは、コプロセッサ命令でもよい。プロセッサ310は、それらのコプロセッサ命令を、付随のコプロセッサ345によって実行されるべき種類のものとして認識する。したがって、プロセッサ310は、コプロセッサ345に対して、コプロセッサバスまたはその他の相互接続上でコプロセッサ命令(コプロセッサ命令を表わす制御信号)を発行する。コプロセッサ345は、受信されたコプロセッサ命令を受け付けて実行する。
【0041】
図4は、本発明の一実施形態による、第1のより具体的な例示のシステム400のブロック図を示す。
図4に示すように、マルチプロセッサシステム400はポイントツ−ポイント相互接続システムであり、ポイントツ−ポイント相互接続450を介して接続される第1のプロセッサ470および第2のプロセッサ480を含む。プロセッサ470および480のそれぞれは、プロセッサ200のいずれかのバージョンでもよい。本発明の一実施形態において、プロセッサ470および480は、それぞれ、プロセッサ310および315であり、コプロセッサ438はコプロセッサ345である。別の実施形態において、プロセッサ470および480は、それぞれ、プロセッサ310およびコプロセッサ345である。
【0042】
図示したプロセッサ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は、それぞれのプロセッサにローカルで取り付けられた主メモリの一部でもよい。
【0043】
プロセッサ470、480は、P−Pインタフェース回路476、494、486、498を使用して、個々のP−Pインタフェース452、454を介してチップセット490と情報を交換してもよい。任意で、チップセット490は、高性能インタフェース439を介してコプロセッサ438と情報を交換してもよい。一実施形態において、コプロセッサ438は、例えば、高スループットMICプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、埋込み型プロセッサ等の特定用途のプロセッサである。
【0044】
共有キャッシュ(不図示)は、プロセッサが低電力モードにされると、一方または両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納されるようにするために、いずれかのプロセッサ内に含まれてもよく、またはポイントツーポイント相互接続を介して各プロセッサと接続して両プロセッサの外部に配置されるとしてもよい。
【0045】
チップセット490は、インタフェース496を介して第1のバス416に対して接続されてもよい。一実施形態において、第1のバス416はペリフェラルコンポーネントインターコネクト(PCI)バスでもよく、またはPCI Expressバスなどのバスまたは他の第三世代の入出力相互接続バスでもよい。ただし、本発明の範囲はそれに限定されない。
【0046】
図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のポイントツーポーンとアーキテクチャの代わりに、例えば、システムがマルチドロップバスまたは他の同様のアーキテクチャを実現してもよい。
【0047】
図5は、本発明の一実施形態によるより具体的な例示の第2のシステム500のブロック図を示す。
図4および
図5に示す同様のものには同様の参照番号を付し、
図5の他の態様を曖昧にすることを避けるため、
図4の特定の態様を
図5にて省略した。
【0048】
図5は、プロセッサ470、480がそれぞれ統合メモリおよび入出力制御論理(「CL」)472および482を含むことができることを図示する。したがって、CL472、482は、統合メモリコントローラ部を含み、さらに入出力制御論理も含んでもよい。
図5は、メモリ432、434がCL472、482に対して接続されるだけでなく、入出力装置514も制御論理472、482に対して接続されることを示す。レガシー入出力装置515は、チップセット490に対して接続される。
【0049】
図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プロセッサ、埋込み型プロセッサ等の特定用途のプロセッサを含む。
【0050】
本明細書において開示されている機構の実施形態は、ハードウェア、ソフトウェア、ファームウェア、またはそのような実装形態の組み合わせによって実装されてもよい。本発明の実施形態は、少なくとも1つのプロセッサと、格納システム(揮発性および不揮発性メモリおよび/または格納要素を含む)と、少なくとも1つの入力装置と、少なくとも1つの出力装置とを備えるプログラミング可能なシステム上で実行されるコンピュータプログラムまたはプログラムコードとして実装されてもよい。
【0051】
図4に示すコード430などのプログラムコードは、本明細書に記載の機能を実行し出力情報を生成する入力命令に対して適用されてもよい。出力情報は、既知の方法において、1つ以上の出力装置に対して適用されてもよい。この用途を目的として、処理システムは、例えばデジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、またはマイクロプロセッサなどのプロセッサを有する任意のシステムを含む。
【0052】
上記プログラムコードは、処理システムとの通信のために上位プロシージャ言語またはオブジェクト指向プログラミング言語で実装されてもよい。また、プログラムコードは必要に応じてアセンブリ言語または機械言語で実装されてもよい。実際に、本明細書において記載された各機構は任意の特定のプログラミング言語に範囲が限定されるものではない。いずれの場合も、言語はコンパイラ形式言語またはインタプリタ形式の言語でよい。
【0053】
少なくとも1つの実施形態の1つ以上の態様は、機械可読媒体に格納されプロセッサ内の様々な論理を表現する代表命令によって実装されてもよく、機械によって読み出されると、その機械に本明細書に記載の技術を実行する論理を作成させる。そのような「IPコア」として知られる表現は、有形の機械可読媒体に格納され、様々な消費者または製造設備に供給され、論理またはプロセッサを実際に作成する製造機械に対してロードされてもよい。
【0054】
そのような機械可読記憶媒体は、機械または装置によって製造または形成される物の非一時的な有形の構成を含んでもよく、これらに限定されないが、ハードディスクなどの記憶媒体や、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスク読取専用メモリ(CD−ROM)、書き換え可能なコンパクトディスク(CD−RW)、光磁気ディスクなどの他の種類のディスク、読取専用メモリ(ROM)などの半導体装置、ランダムアクセスメモリ(RAM)、例えば、動的ランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、消去可能プログラマブル読取専用メモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラマブル読取専用メモリ(EEPROM)、相変化メモリ(PCM)、磁気または光カード、またはその他の電子命令の格納に適した種類の媒体を含んでもよい。
【0055】
したがって、本発明の実施形態は、さらに、本明細書に記載の構造、回路、装置、プロセッサおよび/またはシステムの特徴を定義するハードウェア記述言語(HDL)などの命令または設計データを含む非一時的な有形の機械可読媒体を含む。そのような実施形態は、プログラム製品と呼ばれる場合もある。
【0056】
いくつかの場合において、命令コンバータを使用して、ソース命令セットからターゲット命令セットへ命令を変換してもよい。例えば、命令コンバータは、命令をコアによって処理される1つ以上の他の命令にトランスレート(例えば、静的バイナリトランスレーション、動的コンパイルを含む動的バイナリトランスレーションを使用)、モーフィング、エミュレート、もしくは変換してもよい。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、またはその組み合わせにおいて実装されてもよい。命令コンバータは、プロセッサ上、プロセッサ外、または部分的にプロセッサ上および部分的にプロセッサ外としてもよい。
【0057】
図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を実行できるようにする。
【0058】
<システムに対してトランスペアレントな異種コンピューティング>
以下に記載する本発明の実施形態は、システムから全体的に隠し、プロセッサ内のすべての異種性を意識した論理および発見的方法を統合することによって、システムファームウェアインタフェースおよびオペレーティングシステム(OS)における異種性に対するサポートの欠如を克服するものである。一方、従来のCPUでは、各タスクのコアに対する割り当ては、ソフトウェア(典型的にOS)によってのみ行われていた。本発明の一実施形態においては、この割り当てを2つの部分に分割する。ソフトウェアは露出された同種のコアに対するソフトウェア処理のスケジューリングを継続するが、ハードウェアは露出されたコアと隠された異種コアとの間のスレッドを動的にスワップする。
【0059】
システムに対して同種の演算要素のみを露出することによって、ハードウェアの異種性がシステムファームウェアインタフェース(例えばBIOS、EFI、またはUEFI)、OSおよび可能なアプリケーションレベルのソフトウェアのほぼすべてを含むソフトウェアから全体的に隠される。したがって、システムは同種のコアのみを有するプロセッサ上で動作しているかのようにブートして動作する。本実施形態のプロセッサハードウェアは、ソフトウェアに対して露出された演算要素を、使用可能な隠された物理演算要素の1つ以上に対して動的にマッピングする論理を含む。さらに、この論理は、各種のプロセッサにおける動作の整合性および様々なコアタイプ間で作業を移行する機能を保つ。ハードウェアが動的に物理演算要素を選択する特定の機構は、システムに対して透過的である。
【0060】
異種選択された演算要素を含むことによって、プロセッサハードウェアは、非常に異なる種類の演算タスクに関して、非常に異なる動作条件においても非常に効率よく動作する。例えば、電力効率の良い小さなコアと、高性能の大きなコアの両方を含むCPUを使用して、電力が制限されている(性能は重要ではない)時間、さらに高性能が必要とされている(ただし電力は制限されていない)時間にソフトウェアを効率よく動作させることができる。ハードウェア内における演算要素の異なる組み合わせを選択する際は、そのシステム上でどの種類のタスクをどのような条件で動作させる必要があるのかに関する設計要件に基づく。
【0061】
異種システムには、プロセッサコア、グラフィックスプロセッサユニット(GPU)、および固定機能アクセラレータ(例えばソートおよびループなどの一般的な関数の加速)などの異なる種類の演算要素を含んでもよい。以下に記載する本発明の実施形態において、異種システムは、少ない数の性能の高いコアと多数の電力効率のよい小さなコアなど、異なる種類のプロセッサコアを有する。ただし、本発明の基本的原理は、他の種類の演算要素を用いて使用されてもよい。
【0062】
図8は、明細書において「Hetero−UP」800と呼ぶ異種コアコンピューティングアーキテクチャの一実施形態を示す。Hetero−UP800構成において、電力効率のよい小さなコア802はソフトウェアに対して露出される。アプリケーション806によって追加の処理能力が必要とされる場合、さらに十分な電力バジェットを使用可能な場合、仮想コアから物理コアへのマッピングは、電力効率のよい小さなコア802から高性能の大きな物理コア804に対してスレッドをトランスペアレントにスワップして、小さなコアの代わりに動作させることができる。一実施形態において、パッケージユニット805は異種プロセッサコア群を管理して、どのプロセッサコアをイネーブルとし、どのプロセッサコアをディセーブルとするかを電力プロファイルおよび必要な演算スループットに基づいて決定する。以下で異種コアコンピューティングの実装のブート方法を説明するために、Hetero−UP800実施形態を例として述べるが、それに限定されない。
【0063】
Hetero−UP800実施形態において、ファームウェアインタフェースは、各プラットフォームプロセッサを小さなコアとしてのみ列挙することができる。大きなコアはソフトウェアから隠され、CPUIDなどの従来の列挙方法では列挙されることができない。ただし、高性能の大きな物理コア804が可視で電力効率のよい小さなコア802が隠されているHetero−Down構成などの異種コアコンピューティング実装の他の実施形態は可能である。この場合、ファームウェアインタフェースは大きなコアプロセッサを列挙する。
【0064】
一実施形態において、プロセッサデバッグツールなどの特殊ソフトウェアツールは、ファームウェアインタフェースおよびOSが異種処理システムを意識していない場合でも、使用可能な物理コアの種類を識別可能である。特殊ソフトウェアツールはコア間の切替機能をディセーブルまたはイネーブルとすることができ、あるコアタイプから別のコアタイプへのスレッドの強制切替などの動作を実行できる。
【0065】
トランスペアレントな異種コンピューティングによってプロセッサハードウェアの設計および開発における複雑度は増すが、ファームウェアインタフェースおよびOS開発者におっては多くの利点をもたらす。第1に、ファームウェアインタフェース、OS、またはアプリケーションソフトウェアは、CPUが異種コア(またはその他の演算要素)を有することを意識する必要がなく、すなわちオペレーティングシステムを含むレガシーソフトウェアが上述したハードウェアとの協働を継続できる。同様に、将来的なオペレーティングシステムおよびソフトウェアアプリケーションは、異種性の種類をハードウェアの各バージョンに反映するために定期的にアップデートする必要がなくなるであろう。
【0066】
第2に、仮想コアから物理コアへのマッピング論理によって実装される発見的方法のすべては、ハードウェア内に含まれるか、またはハードウェアとともにバンドルされるソフトウェアまたはファームウェア内に含まれるか、もしくはプロセッサベンダによって提供される。その結果、変更の全範囲がソフトウェアから隠され、ソフトウェア更新を必要としないため、将来的なハードウェア設計はさらに積極的かつ革新的な演算要素の選択肢が実現される可能性がある。
【0067】
<トランスペアレントな異種コンピューティングに対するブートのフロー>
現在の異種コンピューティングソリューションは、ファームウェアインタフェースおよびオペレーティングシステム(OS)の両方が関連するソフトウェア複雑度とともに異種コアを意識する必要がある場合がある。しかしながら、ファームウェアインタフェースおよびOSが実際には1つ以上の異種コアで実行している時に単一の種類のコアで実行しているように動作するようなプロセッサインタフェースを提供することが可能である。1つ方法は、他の種類のコアのふるまいを「エミュレート」するマイクロコード層を使用することである。さらなる方法は、専用のマイクロコードおよびパッケージレベルハードウェアの支援を使用して、実行スレッドを適切な実行コア(例えば低電力または高性能)に移行することである。
【0068】
システム起動時、システムに対して露出されているコアの種類によって、ファームウェアインタフェースによって実行されるブートフローが決定される。ファームウェアインタフェースの初期化中、隠されたコアは休止状態で、特化したマイクロコードルーチンを使用する以外、システムによる使用はできない。OSが初期化されると、その他のコアタイプを使用して、必要な初期化フローが実行可能である。OSが異種処理システムを意識している場合、異種プロセッサコアはOSに対して可視となり、異なるプロセッサコアタイプのそれぞれに対して直接タスクをスケジューリング可能である。一実施形態において、異種を意識したOSは、エミュレーションまたは仮想プロセッサを介して、OS上で動作しているソフトウェアに対してプロセッサの異種性を抽象化し、それによって実行ソフトウェアに対して同種の抽象化レイヤーを提供する。
【0069】
OSが異種処理システムを意識していない場合、隠されたコアは動的なコアスワッピング機能を用いて使用可能である。それによって異種プロセッサは様々なコア間で実行スレッドを動的にスワップ可能となる。この方法を使用すると、どのコア上でソフトウェアが実際に実行しているかにかかわらず、ソフトウェアに可視のタイプのコア上でソフトウェアが実行していると信じる。システムの透過性をさらに促進するために、新たな「マスクされたC6」プロセッサ状態が実現される。この状態において、プロセッサコアは低電力状態となり、プロセッサコアの消費電力はほぼゼロとなり、プロセッサコアがシステムソフトウェアに対して不可視となる。マスクされたC6状態のプロセッサコアに対して、標準のシステムトリガはアクセスできず、そのかわり専用のマイクロコードルーチンを介してアクセス可能となっている。
【0070】
以下の説明を簡略化するためにHetero−UP800システムを使用して例示のブートフローを説明する。システムに可視のコアは、省電力の小さなコア802で、高性能の大きな物理コア804のサブセットを実装し、より少ない量の電力を消費する。ただし、実施形態は限定されず、コアタイプ、プロセッサ上に存在する数、ファームウェアインタフェースおよびOSにとって可視のタイプに関して以下の説明は独断的でない。
【0071】
図9Aおよび9Bは、一実施形態によるHetero−UP構成上のシステムブートフローの概略的なフロー図である。まず、
図9Aにおいて、901では、プラットフォームコントローラハブ(PCH)は、ファームウェアインタフェースコードを、ユニバーサルフラッシュストレージ(UFS)などのマイクロコードがアクセス可能なメモリ空間またはその他のプロセッサが実行可能なメモリ空間に対してコピーすることによって、システムブートに備える。902で、パッケージハードウェアユニット(例えば
図8のパッケージユニット805)は、リセット脱出時にすべての小さなコアを取り出し、小さなコアのそれぞれをシステムファームウェアインタフェースにとって可視とし、ブートストラッププロセッサ(BSP)となる省電力の小さなコアの1つを選択する。904で、BSPとなるように選択された小さなコアプロセッサは、マイクロコードを更新および実行する。BSPマイクロコードは、アプリケーションプロセッサとして使用される追加の小さなコアプロセッサをイネーブルとする命令を含む。
【0072】
BSPマイクロコードは、第1のブート工程時にBSPがロードするファームウェアインタフェース起動モジュールを含んでもよい。BSPは、プロセッサ間割込み(IPI)の使用によって他のプロセッサと通信する。任意で、910a、910b、および910では、BSPはプロセッサ間割込み(IPI)を使用して、使用可能なプリブートマイクロコードをロードするように各小さなコアのAPをトリガする。912a、912b、および912cに示すように、各小さなコアのAPは、それぞれのアプリケーションプロセッサのプリブートマイクロコードを実行する。それにはマシンチェックのサポートの初期化を含む。一実施形態において、小さなコアのAPが処理していない、以前のマシンチェックのイベントはログ記録されており、マシンチェックのサポートがイネーブルになると、新たなマシンチェックのイベントが処理される。914a、914b、および914cでは、各小さなコアのAPがアイドル状態に入り、BSPからの起動IPI(SIPI)を待つ。
【0073】
小さなコアのアプリケーションプロセッサの初期化と同時に、908で示すように、小さなコアのアプリケーションプロセッサの上位セットを有する大きなコアのアプリケーションプロセッサは、パッケージユニットによってイネーブルとされ、初期化される。一実施形態において、1つ以上の大きなコアはハードウェアにおいて使用可能であるが、内部融合によってディセーブルとされる。その場合、大きなコアは初期化されない。
【0074】
916では、BSPが高性能の大きなコアAPの起動のための準備をする。これには、大きなコアのプリブートマイクロコードに対するアップデートパッチの任意のロードを含む。918では、大きなコアは、命令実行のためにコアを準備するプリブートマイクロコードを実行する。920では、大きなコアプロセッサは、そのプリブートシーケンスを完了し、準備されたプロセッサコンテキストを保存する。928では、大きなコアが、BSPに対して、大きなコアの初期化シーケンスが完了し、マスクされたC6状態に入ることを通知する。この時点で、ブロック930で示すように、BSCはファームウェアインタフェースブートを完了し、OS起動の準備をする。これを
図9Bにおいても示す。
【0075】
図9Bにおいて、934で示すように、BSP上で実行しているシステムファームウェアインタフェースモジュールは完了すると、BSPはマイクロコードの更新のロードを完了していなかった小さなコアのAPを待つ。936では、BSPがSIPIイベントを小さなコアのAPのそれぞれに対して送信する。938では、小さなコアのAPがそれぞれのリセットサイクルを完了し、標準C6状態に入る。この時点において、小さなコアのブートストラッププロセッサおよび小さなコアのアプリケーションプロセッサは使用可能であり、それぞれがシステムにとって可視となる。一方、大きなコアはマスクされたC6状態のままである。940では、BSPはパッケージユニットを異種イネーブルモードに設定し、それによってプロセッサは隠された異種コアに対してスレッドを動的にスワップできるようになる。
【0076】
ファームウェアインタフェースの初期化が完了すると、OS初期化ルーチンを開始できる。OSが異種プロセッサシステムをサポートしていない場合、OSは小さなコアのAP上でのタスクをスケジューリングしてもよく、さらにプロセッサハードウェアは小さなコアのAPのうちの1つから大きなコアのAPに対してタスクを自動的にスワップ可能である。ソフトウェアからみると、システムは完全に異種状態で動作している。隠された大きなコアはマスクされ、システム上で可視状態にあるソフトウェアを露出しない。例えば、異種プロセッサシステムをサポートしないOS上では、隠された大きなコアは、可視の高度なプログラム可能割り込みコントローラーIDを有さず、直接的なソフトウェアによって開始されたプロセッサ間割込みを許容せず、大きなコアとしてマシンチェックのイベントを処理する。一実施形態において、異種処理システムの1つ以上の隠されたコアは、可視の同種コアの命令セットをエミュレートすることによって異種を意識しないOSに対して露出される。このOSが異種プロセッサシステムをサポートする場合、OSは様々なコアタイプのそれぞれをソフトウェアに対して露出でき、様々なコアタイプに関してソフトウェアタスクをスケジューリングできる。さらに、異種を意識したOSは、コア間でのスレッドのスワップのために使用されるハードウェア機構を制御できる。
【0077】
図10は、異種処理システムのブートシーケンスの一実施形態のファームウェアとマイクロコードエレメントとの間でやり取りされるデータおよびメッセージを示すシーケンス図である。一実施形態において、1002に示すように、パッケージユニットファームウェア1000によって実行される1組のファームウェアインタフェース命令は、初期化ブートストラッププロセッサ(BSP)メッセージを、BSP1020になるように選択された小さなコアプロセッサに対して送信する。パッケージユニット1000は、BSP1020に対してマイクロコード更新およびロード1004をトリガして、システムにとって可視となるであろう残りの小さなコアのアプリケーションプロセッサ1040をイネーブルとするように処理を進める。マイクロコード更新を含む初期化ランデブシーケンス1024は、システムにとって可視の小さなコアのアプリケーションプロセッサ1040のそれぞれに対して送信され、それによって各小さなコアのAPはランデブ状態となる。
【0078】
ランデブ状態において、マルチコアまたはマルチプロセッサシステムの各プロセッサコアは、初期化を管理する単一コアまたはプロセッサに対する制御を放棄するか、もしくはシステム内の全プロセッサに対してエラー処理を実行する。BSP1020からの初期化ランデブシーケンス2024の受信に応じて、可視の小さなコアのアプリケーションプロセッサ1040はマイクロコード更新ランデブシーケンス1046に入り、各プロセッサに対してマイクロコードをロードして実行する。初期化されると、各小さなコアのAP1040は、通知メッセージ1035をBSP1020に対して送信し、その後システムが可視のアイドル状態1048(例えば標準C6モード)に入る。
【0079】
小さなコアのアプリケーションプロセッサの初期化と同時に、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の指示がなくても、異種処理システムはトランスペアレントに大きなコアのアプリケーションプロセッサの使用をイネーブルとする。
【0080】
図11A〜11Bは、どのように本発明の一実施形態が必要に応じてトランスペアレントに小さなコアを大きなコアとスワップするかを示す。一実施形態において、システムファームウェアインタフェースから異種性を隠し、プロセッサ内のすべての異種性を意識した論理および発見的方法を統合することによって、異種性に対するトランスペアレントなサポートが可能となる。従来のCPUにおいて、コアに対するタスクの割り当てはソフトウェア(典型的にOS)によってのみ行われる。ただし、一実施形態において、この割り当ては2つの部分に分割される。ソフトウェアはプロセッサによって露出された同種の「仮想コア」に対するソフトウェア処理のスケジューリングを継続するが、ハードウェアは、どの物理コアタイプが所与の仮想コアを実装するかを動的に選択する。スループット、性能、またはその他のメトリックの最大化が意図されたソフトウェアスケジューリングアルゴリズムは作業を継続するが、ハードウェアは最適化の他の(トランスペアレントな)レイヤーを実行する。このレイヤーにおいて、各仮想コアで動作する処理/スレッドは、その仮想コア上で動作している作業負荷の種類に最適ないずれかの物理コアに送られる。
【0081】
図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によって実行してもよい。
【0082】
一実施形態において、仮想コア1106と小さなコアPC0〜PC3との間には、デフォルトの1:1マッピングが存在する。したがって、小さなコアPC0〜PC3は、ソフトウェアベースのスケジューラにとって効果的に可視となる。一実施形態において、システムの使用率が低い(特定の閾値未満)の場合、および/または大部分の小さなコアが使用中の場合(例えば、特定の閾値を上回る高処理負荷を有する場合)、このデフォルトマッピングが維持される。例えば、一実施形態において、システムの使用率が低い(例えば60%稼働を上回るコアがない)場合、または大部分の小さなコアが使用中(例えば全使用可能コアの75%よりも多いコアが60%よりも高い使用率)の場合、このデフォルトマッピングが維持される。
【0083】
ただし、一実施形態において、システムが多数のアイドル状態のコア(例えば全使用可能コアの50%よりも多いコア)を有する場合、さらに少数の(1つ以上の)コアが高負荷で使用率が非常に高いコアの場合、マッピング決定論理1109によって実装された発見的方法は、
図11Bに示すようにマッピングを自動的に変更する。ここでは、仮想コアVC1およびVC2に対して、2つのスレッド1101のみがスケジューラ1110によってスケジューリングされており、その仮想コアの少なくとも1つ(本例のVC2)が特定の閾値よりも高い使用率を有する。したがって、本例において、V−Pコアマッピング論理1130はマッピング決定論理1109によって実行されたマッピング決定に応じて、仮想コアVC2を小さな物理コアPC2から大きな物理コアPC4に対して再マッピングを行う。
【0084】
本明細書にて記載するように、命令とは、特定の動作を実行するように構成された、または所定の機能を有する、特定用途向けIC(ASIC)などのハードウェアの特定の構成、または非一時的なコンピュータ可読媒体において実現されたメモリに格納されたソフトウェア命令を指してもよい。したがって、図面に示す各技術は、1つ以上の電子装置(例えばエンドステーション、ネットワーク要素など)において格納および実行されるコードおよびデータを使用して実現可能である。そのような電子装置は、非一時的なコンピュータまたは機械読取可能格納媒体(例えば磁気ディスク、光ディスク、ランダムアクセスメモリ、読取専用メモリ、フラッシュメモリ装置、相変化メモリ)および一時的なコンピュータまたは機械読取可能通信媒体(例えば搬送波、赤外線信号、デジタル信号など、電気、光学、音響、その他の形態の伝播信号)などのコンピュータまたは機械読取可能媒体を使用して(装置内において、および/またはネットワークを介して他の電子装置と)コードおよびデータを格納および通信する。
【0085】
さらに、そのような電子装置は、典型的に、1つ以上の格納装置(非一時的機械可読格納媒体)、ユーザ入出力装置(例えばキーボード、タッチスクリーン、および/またはディスプレイ)、およびネットワーク接続などの1つ以上の他の構成要素に対して接続された一組の1つ以上のプロセッサを含む。一組のプロセッサと他の構成要素との接続は、典型的に、1つ以上のバスおよびブリッジ(バスコントローラとも呼ばれる)を介する。ネットワークトラフィックを有する格納装置および信号は、それぞれ、1つ以上の機械可読格納媒体および機械可読通信媒体を表わす。
【0086】
したがって、所与の電子装置の格納装置は、典型的に、その電子装置の一組の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に記載のプロセッサ。