(57)【特許請求の範囲】
【請求項１】
第１の命令セットアーキテクチャ（第１のＩＳＡ）にしたがって設計されている第１のコアを有する第１のプロセッサモジュールと、
第２のＩＳＡにしたがって設計されている第２のコア、および、前記第１のＩＳＡに対応する複数のメッセージと前記第２のＩＳＡに対応する複数のメッセージとの間の変換を行うバスブリッジを有する第２のプロセッサモジュールと、
前記第１のＩＳＡに従ってネイティブに通信するバスを有するシステムエージェント（ＳＡ）と
を備え、
前記第２のプロセッサモジュールは前記第１のプロセッサモジュールと同じダイに製造されており、
前記バスブリッジは、前記第２のコアのために前記第１のＩＳＡに対応する複数のメッセージを前記第２のＩＳＡに対応する複数のメッセージに変換することと、前記バスのために前記第２のＩＳＡに対応する複数のメッセージを前記第１のＩＳＡに対応する複数のメッセージに変換することとの少なくとも一方を実行する処理デバイス。
【請求項２】
前記バスは、前記第１のプロセッサモジュールおよび前記第２のプロセッサモジュールに通信可能に結合されている請求項１に記載の処理デバイス。
【請求項３】
前記バスは、前記第１のコアとの間で複数のメッセージをネイティブ送受信する請求項２に記載の処理デバイス。
【請求項４】
前記ＳＡはさらに、コンバータを有し、
前記コンバータを介して前記ＳＡは複数の周辺機器に結合されている請求項１から３のいずれか一項に記載の処理デバイス。
【請求項５】
前記同じダイに製造されているシステムオンチップ（ＳｏＣ）デバイスである請求項１から４のいずれか一項に記載の処理デバイス。
【請求項６】
複数のオペレーティングシステムでポーティングされるコンピューティングデバイスの一部である請求項１から５のいずれか一項に記載の処理デバイス。
【請求項７】
第１のオペレーティングシステムは、アクティブ化されると、前記第１のプロセッサモジュールで実行され、第２のオペレーティングシステムは、アクティブ化されると、前記第２のプロセッサモジュールで実行される請求項１から６のいずれか一項に記載の処理デバイス。
【請求項８】
中央演算処理装置（ＣＰＵ）であり、デュアルオペレーティングシステムでポーティングされるコンピューティングデバイスの一部である請求項１から７のいずれか一項に記載の処理デバイス。
【請求項９】
前記第１のＩＳＡおよび前記第２のＩＳＡとは異なる第３の命令セットアーキテクチャ（第３のＩＳＡ）にしたがって設計されている第３のコアを有する第３のプロセッサモジュールをさらに備える請求項１から８のいずれか一項に記載の処理デバイス。
【請求項１０】
前記第３のプロセッサモジュールは、前記第１のコアと前記第３のコアの間、および、前記第２のコアと前記第３のコアの間の少なくとも一方で送信される複数のメッセージを変換する第３のバスブリッジを有する請求項９に記載の処理デバイス。
【請求項１１】
第１の命令セットアーキテクチャ（第１のＩＳＡ）にしたがって設計されている第１のコアと、
第２のＩＳＡにしたがって設計されている第２のコアであって、前記第１のＩＳＡに対応する複数のメッセージと前記第２のＩＳＡに対応する複数のメッセージとの間の変換を行うバスブリッジに通信可能に結合されている第２のコアと、
前記第１のＩＳＡに従ってネイティブに通信するバスを有するシステムエージェント（ＳＡ）と
を備え、
単一のダイに製造されているシステムオンチップ（ＳｏＣ）デバイスであり、
前記バスブリッジは、前記第２のコアのために前記第１のＩＳＡに対応する複数のメッセージを前記第２のＩＳＡに対応する複数のメッセージに変換することと、前記バスのために前記第２のＩＳＡに対応する複数のメッセージを前記第１のＩＳＡに対応する複数のメッセージに変換することとの少なくとも一方を実行するプロセッサ。
【請求項１２】
前記バスは、前記第１のコアおよび前記第２のコアに通信可能に結合されており、
前記バスは前記第１のコアとの間で複数のメッセージをネイティブ送受信する請求項１１に記載のプロセッサ。
【請求項１３】
前記ＳＡはさらに、コンバータを有し、
前記コンバータを介して前記ＳＡは複数の周辺機器に結合されている請求項１１または１２に記載のプロセッサ。
【請求項１４】
第１のオペレーティングシステムは、アクティブ化されると、前記第１のコアで実行され、第２のオペレーティングシステムは、アクティブ化されると、前記第２のコアで実行される請求項１１から１３のいずれか一項に記載のプロセッサ。
【請求項１５】
中央演算処理装置（ＣＰＵ）であり、デュアルオペレーティングシステムでポーティングされるコンピューティングデバイスの一部である請求項１４に記載のプロセッサ。
【請求項１６】
前記第１のＩＳＡおよび前記第２のＩＳＡとは異なる第３の命令セットアーキテクチャ（第３のＩＳＡ）にしたがって設計されている第３のコアをさらに備える請求項１１から１５のいずれか一項に記載のプロセッサ。
【請求項１７】
前記第３のコアに結合されている第３のバスブリッジを更に備え、
前記第３のバスブリッジは、前記第１のコアと前記第３のコアの間、および、前記第２のコアと前記第３のコアの間の少なくとも一方で送信される複数のメッセージを変換する請求項１６に記載のプロセッサ。
【請求項１８】
中央演算処理装置（ＣＰＵ）においてフォアグラウンド状態で実行されている第１のオペレーティングシステム（第１のＯＳ）から前記ＣＰＵにおいてバックグラウンド状態で実行されている第２のＯＳへと切り替えることを求める要求に応じて、前記ＣＰＵの第１のコアによって、前記第１のＯＳとのみ対応付けられている第１の群のデバイスを決定する段階と、
前記第１の群のデバイスを一時停止させる段階と、
前記第１のＯＳおよび前記第２のＯＳに限定されない第２の群のデバイスを決定する段階と、
前記第２の群のデバイスを前記第２のＯＳ用に構成する段階と、
前記第２のＯＳを前記フォアグラウンド状態にし、前記第１のＯＳを前記バックグラウンド状態にするべく切り替える段階と
を備え、
前記第１のコアは、第１の種類の命令セットアーキテクチャ（ＩＳＡ）にしたがって設計されており、
前記切り替える段階は、第２の種類のＩＳＡにしたがって設計されている前記ＣＰＵの第２のコアをアクティブ化させる段階と、前記第１のコアをアイドル状態にする段階とを有する方法。
【請求項１９】
前記第２のＯＳに限定される第３の群のデバイスを決定する段階と、
前記第３の群のデバイスをイネーブルする段階と
をさらに備える請求項１８に記載の方法。
【請求項２０】
中央演算処理装置（ＣＰＵ）で実行されることに応じて、前記ＣＰＵに方法を実行させるためのプログラムであって、
前記方法は、
前記ＣＰＵにおいてフォアグラウンド状態で実行されている第１のオペレーティングシステム（第１のＯＳ）から前記ＣＰＵにおいてバックグラウンド状態で実行されている第２のＯＳへと切り替えることを求める要求に応じて、前記ＣＰＵの第１のコアによって、前記第１のＯＳとのみ対応付けられている第１の群のデバイスを決定する段階と、
前記第１の群のデバイスを一時停止させる段階と、
前記第１のＯＳおよび前記第２のＯＳに限定されない第２の群のデバイスを決定する段階と、
前記第２の群のデバイスを前記第２のＯＳ用に構成する段階と、
前記第２のＯＳを前記フォアグラウンド状態にし、前記第１のＯＳを前記バックグラウンド状態にするべく切り替える段階とを備え、
前記第１のコアは、第１の種類の命令セットアーキテクチャ（第１のＩＳＡ）にしたがって設計されており、
前記切り替える段階は、第２の種類のＩＳＡにしたがって設計されている前記ＣＰＵの第２のコアをアクティブ化させる段階と、前記第１のコアをアイドル状態にする段階とを有する
プログラム。
【請求項２１】
前記方法はさらに、
前記第２のＯＳに限定される第３の群のデバイスを決定する段階と、
前記第３の群のデバイスをイネーブルする段階と
を備える請求項２０に記載のプログラム。
【請求項２２】
請求項１８または１９に記載の方法を実行する手段を有する装置。
【請求項２３】
請求項２０または２１に記載のプログラムを格納しているコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、概して処理デバイスに関し、より具体的には複数の異なる命令セットアーキテクチャ（ＩＳＡ）にしたがって設計されている複数の異種のコアを含むプロセッサを複数含むシステムオンチップに関する。
【背景技術】
【０００２】
ラップトップコンピュータ、タブレットコンピュータまたはスマートフォン等の単一のコンピューティングデバイスを複数のエコシステムまたはオペレーティングシステム（ＯＳ）のうちいずれか１つにおいて選択的に動作させることを求めるエンドユーザが存在する。例えば、当該デバイスを、私用では第１のＯＳ（Ａｎｄｒｏｉｄ（登録商標）等）で動作させ、ビジネス用では第２のＯＳ（Ｗｉｎｄｏｗｓ（登録商標）等）で動作させることを望む場合がある。
【０００３】
複数の異なる種類のＯＳを、複数の異なる命令セットアーキテクチャ（ＩＳＡ）にしたがって設計されている複数のプロセッサ上に構築するとしてよい。例えば、Ｉｎｔｅｌ（登録商標）Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＡ）は、Ｗｉｎｄｏｗｓ（登録商標）ＯＳを動作させるＩＳＡの一種であり、ＡＲＭ（登録商標）はＡｎｄｒｏｉｄ（登録商標）を動作させる別の種類のＩＳＡである。また、各ＩＳＡは、プロセッサ内部のコンポーネント間、または、プロセッサと周辺機器との間の通信インターフェースとして複数の異なる通信プロトコル群を利用する場合がある。現在、デバイスメーカー各社は、一の同じコンピューティングデバイス上で２つのエコシステムを実現するべく、２つの方法のうちいずれか１つを採用している。第１の方法では、デバイスメーカー各社は単に、一のコンピューティングデバイスに対して複数の異なるＩＳＡのプロセッサを設計する。例えば、デバイスメーカーは、一のコンピューティングデバイスにおいて一のＩＡプロセッサおよび一のＡＲＭ（登録商標）プロセッサを実装して、Ｗｉｎｄｏｗｓ（登録商標）がフォアフロントＯＳである場合にＷｉｎｄｏｗｓ（登録商標）アプリケーションをＩＡプロセッサで実行させ、Ａｎｄｒｏｉｄ（登録商標）がフォアフロントＯＳである場合にＡｎｄｒｏｉｄ（登録商標）アプリケーションをＡＲＭ（登録商標）プロセッサ上で実行させるとしてよい。これに代えて、デバイスメーカーは、一のコンピューティングデバイスの同種の複数のＩＳＡプロセッサの上方で一の仮想マシンを実行させるとしてよい。仮想マシンは、同種の複数のＩＳＡ命令から複数の異なるエコシステムをエミュレートすることができる。例えば、コンピューティングデバイスは、Ｗｉｎｄｏｗｓ（登録商標）仮想マシン上でＷｉｎｄｏｗｓ（登録商標）アプリケーションを実行し、Ａｎｄｒｏｉｄ（登録商標）仮想マシン上でＡｎｄｒｏｉｄ（登録商標）アプリケーションを実行する一方、コンピューティングデバイスの複数のプロセッサは、複数のＩＡプロセッサのみ、または、複数のＡＲＭ（登録商標）プロセッサのみであるとしてよい。
【図面の簡単な説明】
【０００４】
本開示は、以下に記載する詳細な説明および本開示のさまざまな実施形態を示す添付図面からより完全に理解されるであろう。しかし、図面は、本開示を具体的な実施形態に限定するものととらえられるべきではなく、説明および理解を目的としたものに過ぎない。
【０００５】
【図１】一実施形態に係る処理デバイスを示す図である。
【０００６】
【図２Ａ】一実施形態に係るバスブリッジを含む処理デバイスを示す図である。
【０００７】
【図２Ｂ】一実施形態に係るシステムエージェントコンバータを含む処理デバイスを示す図である。
【０００８】
【図２Ｃ】一実施形態に係る複数のプロセッサモジュールを含む処理デバイスを示す図である。
【０００９】
【図３Ａ】一実施形態に係る処理デバイスの詳細な概略図である。
【００１０】
【図３Ｂ】別の実施形態に係る処理デバイスの詳細な概略図である。
【００１１】
【図４】一実施形態に係るデュアルＯＳコンピューティングデバイスにおいてＯＳを切り替える方法を示すブロック図である。
【００１２】
【図５Ａ】本開示の一実施形態が利用されている異種のコアを含むプロセッサのマイクロアーキテクチャを示すブロック図である。
【００１３】
【図５Ｂ】本開示の少なくとも一の実施形態に応じて実装されるインオーダパイプラインおよびレジスタリネーミングステージ、アウトオブオーダ発行／実行パイプラインを示すブロック図である。
【００１４】
【図６】本開示の一の実施形態に応じたロジックを含むプロセッサのマイクロアーキテクチャを示すブロック図である。
【００１５】
【図７】本開示の一の実施形態が利用されているシステムを示すブロック図である。
【００１６】
【図８】本開示の一の実施形態が動作するシステムを示すブロック図である。
【００１７】
【図９】本開示の一の実施形態が動作するシステムを示すブロック図である。
【００１８】
【図１０】本開示の一の実施形態に応じたシステムオンチップ（ＳｏＣ）を示すブロック図である。
【００１９】
【図１１】本開示に応じたＳｏＣ設計の実施形態を示すブロック図である。
【００２０】
【図１２】コンピュータシステムの一実施形態を示すブロック図である。
【発明を実施するための形態】
【００２１】
一の同じデバイス上で２つのエコシステムを実行させる方式は、複数の異なるＩＳＡにしたがって設計されている複数のプロセッサが冗長であるために、コストが高いが性能が低く消費電力が高いという問題がある。現在の方式が抱える別の問題点としては、複数の異なるＩＳＡマイクロシステムで実行されるバイナリコードの互換性が挙げられる。例えば、ＡＲＭ（登録商標）プラットフォーム用にコンパイルされたアプリケーションは、ポーティングせずにＩＡプラットフォームで直接実行することはできない。これまでは、複数の異なる種類のＩＳＡにおける互換性の問題を解決するためにはバイナリ変換を利用してきた。しかし、この解決方法には、非ネイティブＩＳＡ用に記述されたネイティブライブラリをネイティブＩＳＡに動的または静的に変換するランタイムソフトウェアが必要である。バイナリ変換では、残念ながら、性能が低下してしまい、全てのケースに対応できるわけではない。
【００２２】
複数のエコシステムを実行しているコンピューティングデバイスのエンドユーザは、性能劣化、消費電力およびシステムフットプリントを最小限に抑えつつコンピューティングデバイス上で利用可能な複数の異なる種類のＯＳ間の切り替えを素早く行いたいと考えている。
【００２３】
一のコンピューティングデバイス上で複数のエコシステムを効率的に実現するべく、本開示の実施形態は、複数の異種のＩＳＡコアを含む中央演算処理装置（ＣＰＵ）を少なくとも１つ含むシステムオンチップ（ＳｏＣ）を実現する。異種のコアには、第１の種類のＩＳＡにしたがって設計されている少なくとも１つのコア、および、第２の種類のＩＳＡにしたがって設計されている少なくとも１つのコアが含まれるとしてよい。尚、第１および第２の種類のＩＳＡは異なる。例えば、ＣＰＵの第１のコアは複合命令セットコンピューティング（ＣＩＳＣ）コアとして設計されるとしてよく、同じＣＰＵの第２のコアは縮小命令セットコンピューティング（ＲＩＳＣ）コアとして設計されるとしてよい。より具体的には、第１の種類のＩＳＡはＩＡ（登録商標）であってよく、第２の種類のＩＳＡはＡＲＭ（登録商標）であってよい。本願では便宜上ＩＳＡの２つの例としてＩＡおよびＡＲＭにしばしば言及するが、本願はこれら２つの具体例に限定されるものではないことに留意されたい。本願の原理は、ＰｏｗｅｒＰＣ（登録商標）アーキテクチャ等の他の種類のＩＳＡにも等しく適用可能である。
【００２４】
本開示の複数の実施形態は、一の同じダイに複数の異種のコアを集積化してＳｏＣを形成し、高効率かつ高性能のマルチＯＳ構成またはデュアルＯＳ構成を一のコンピューティングデバイス上で構築するとしてよい。
【００２５】
本開示の複数の実施形態は、コスト、消費電力およびフットプリントを低減しつつ、現在の技術に比べて高性能化を実現するという利点を持つ特徴的なアーキテクチャを提供する。
【００２６】
以下に記載する実施形態は、コンピューティングプラットフォーム内またはマイクロプロセッサ等の具体的な集積回路を参照しつつ説明しているが、他の実施形態は他の種類の集積回路およびロジックデバイスに適用可能である。本明細書で説明する実施形態の教示内容および技術と同様のものは、他の種類の回路または半導体デバイスに適用され得る。例えば、開示した実施形態は、デスクトップ型のコンピュータシステムまたはＵｌｔｒａｂｏｏｋ（商標）に限定されない。そして、手持ちデバイス、タブレット、他の薄型ノートブック、システムオンチップ（ＳｏＣ）デバイス、および、埋め込みアプリケーション等、他のデバイスにおいても使用され得る。手持ちデバイスの一部の例には、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末（ＰＤＡ）、および手持ちＰＣが含まれる。埋め込みアプリケーションは通常、マイクロコントローラ、デジタルシグナルプロセッサ（ＤＳＰ）、システムオンチップ、ネットワークコンピュータ（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、ワイドエリアネットワーク（ＷＡＮ）スイッチ、または、以下で教示される機能および処理を実行し得る任意のその他のシステムを含む。
【００２７】
以下に記載する複数の実施形態はプロセッサに基づいて説明されているが、他の実施形態は他の種類の集積回路およびロジックデバイスに適用可能である。本開示の実施形態と同様の技法および教示内容は、パイプラインスループットおよび性能を改善することで利益を受けることができる他の種類の回路または半導体デバイスに適用することができる。本開示の実施形態の教示内容は、データ操作を実行する任意のプロセッサまたは機械に適用可能である。本開示は、５１２ビット、２５６ビット、１２８ビット、６４ビット、３２ビットまたは１６ビットのデータ演算を実行するプロセッサまたは機械に限定されるものではなく、データの操作または管理が実行される任意のプロセッサおよび機械に適用することができる。また、以下の説明は例を提供し、添付図面は例示の目的でさまざまな例を示している。しかしながら、これらの例は、本開示の実施形態の全ての可能な実施態様を網羅的に列挙したものではなく、単に本開示の実施形態の例を挙げることを意図したものにすぎないので、限定的に解釈されるべきではない。
【００２８】
インターネット、テキスト、およびマルチメディアのアプリケーションにおいて用いられるコンピュータシステムが増加するにつれ、プロセッサのサポートも増加してきた。一実施形態によると、一の命令セットは、データの種類、命令、レジスタアーキテクチャ、アドレッシングモード、メモリアーキテクチャ、割り込みおよび例外ハンドリング、ならびに、外部の入力及び出力（Ｉ／Ｏ）を含む１または複数のコンピュータアーキテクチャに関連付けることができる。
【００２９】
一実施形態によると、命令セットアーキテクチャ（ＩＳＡ）は、１または複数の命令セットを実装するべく用いられるプロセッサロジックおよび回路を含む、１または複数のマイクロアーキテクチャによって実装されてよい。したがって、複数の異なるマイクロアーキテクチャを有する複数のプロセッサは、一の共通の命令セットの少なくとも一部を共有することができる。例えば、Ｉｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）４プロセッサ、Ｉｎｔｅｌ（登録商標）Ｃｏｒｅ（商標）プロセッサおよびアドバンスド・マイクロ・デバイシーズ社（Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．、米国カリフォルニア州サニーベール）のプロセッサは、略同一バージョンのｘ８６命令セット（最近のバージョンでは追加された拡張内容も含む）を実装しているが、内部設計は異なる。同様に、エーアールエム・ホールディングス社（ＡＲＭ  Ｈｏｌｄｉｎｇｓ，  Ｌｔｄ．）、ミップス（ＭＩＰＳ）社、または、両社のライセンシーもしくは採用者等の他のプロセッサ開発企業によって設計されたプロセッサも、共通の命令セットの少なくとも一部を共有し得るが、異なるプロセッサ設計を持つ場合もある。例えば、ＩＳＡの同じレジスタアーキテクチャは、専用物理レジスタ、レジスタリネーミングメカニズムを用いた１または複数の動的に割り当てられた物理レジスタ等、新しい技術または公知の技術を用いて複数の異なるマイクロアーキテクチャにおいて複数の異なる方法で実装される場合がある（例えば、レジスタエイリアステーブル（ＲＡＴ）、リオーダバッファー（ＲＯＢ）およびリタイアメントレジスタファイルを利用）。一実施形態によると、レジスタには、ソフトウェアプログラマによってアドレス指定が可能または不可能な、１または複数のレジスタ、レジスタアーキテクチャ、レジスタファイル、または他のレジスタセットが含まれるとしてよい。
【００３０】
一実施形態によると、命令は１または複数の命令フォーマットを持つとしてよい。一実施形態では、命令フォーマットは、他にも複数の項目があるが、実行される演算と、その演算の実行対象であるオペランドとを指定するさまざまなフィールド（ビット数、ビット位置等）を指すとしてよい。一部の命令フォーマットは、さらに細かく、命令テンプレート（または命令サブフォーマット）によって定義される場合がある。例えば、所与の命令フォーマットの命令テンプレートは、当該命令フォーマットの複数のフィールドの複数の異なるサブセットを含むものとして定義されるとしてもよいし、および／または、異なる解釈をされる所与のフィールドを含むものとして定義されるとしてもよい。一実施形態によると、命令は、命令フォーマットを用いて表され（定義される場合、その命令フォーマットの複数の命令テンプレートのうちの所与の１つにおいて表される）、演算および当該演算の対象のオペランドを指定または特定する。
【００３１】
図１は、一実施形態に係る処理デバイス１００を示す図である。処理デバイス１００は、一の同じダイまたは一の同じ基板に設けられているＳｏＣであってよく、当該ＳｏＣ上に製造されている中央演算処理装置（ＣＰＵ）を表すとしてよい。ＳｏＣは、一の同じ半導体製造プロセスを用いて高効率に製造された複数の集積回路を含むとしてよい。処理デバイス１００は、図１に示すように、第１のプロセッサモジュール１０２、第２のプロセッサモジュール１０４、ならびに、バスおよび／または通信ファブリック１０６を備えるとしてよい。バスおよび／または通信ファブリック１０６は、プロセッサモジュール１０２と１０４との間、および、プロセッサモジュール１０２、１０４と、ＳｏＣ上またはＳｏＣ外部の他のコンポーネント（不図示）との間の通信インターフェースを提供する。
【００３２】
一実施形態では、プロセッサモジュール１０２は、第１の種類のＩＳＡにしたがって設計されている１または複数の処理コアを含むとしてよく、プロセッサモジュール１０４は、第２の種類のＩＳＡにしたがって設計されている１または複数の処理コアを含むとしてよい。尚、第２の種類は第１の種類とは異なる。ＩＳＡの種類には、ＣＩＳＣアーキテクチャまたはＲＩＳＣアーキテクチャの複数の異なる種類が含まれるとしてよい。例えば、ＩＳＡは、ＩＡアーキテクチャ、ＡＲＭアーキテクチャおよびＰｏｗｅｒＰＣアーキテクチャのいずれかであってよい。一実施形態によると、プロセッサモジュール１０２は、Ｗｉｎｄｏｗｓ（登録商標）ＯＳをサポートするのに特に適したＩＡにしたがって設計されている複数の処理コアを含むとしてよく、プロセッサモジュール１０４は、Ａｎｄｒｏｉｄ（登録商標）ＯＳをサポートするのに特に適したＡＲＭにしたがって設計されている複数の処理コアを含むとしてよい。一実施形態によると、マルチエコシステムまたはデュアルエコシステムをサポートしているコンピューティングデバイスは、処理デバイス１００を用いて構築されるとしてよい。コンピューティングデバイスがＷｉｎｄｏｗｓ（登録商標）デバイスに切り替えられる場合またはＷｉｎｄｏｗｓ（登録商標）デバイスとして起動される場合、プロセッサモジュール１０２は、Ｗｉｎｄｏｗｓ（登録商標）アプリケーションの実行をネイティブにサポートするべくフォアグラウンドでアクティブに実行される一方、プロセッサモジュール１０４はバックグラウンドで実行されるか、または、アイドル状態を維持するとしてよい。また、コンピューティングデバイスがＡｎｄｒｏｉｄ（登録商標）デバイスに切り替えられる場合またはＡｎｄｒｏｉｄ（登録商標）デバイスとして起動される場合、プロセッサモジュール１０４は、Ａｎｄｒｏｉｄ（登録商標）アプリケーションの実行をネイティブにサポートするべくフォアグラウンドで実行される一方、プロセッサモジュール１０２はバックグラウンドで実行されるか、または、アイドル状態を維持するとしてよい。このようにして高効率かつ高性能なデュアルエコシステム型コンピューティングデバイスを実現する。
【００３３】
バス１０６は、データ通信および制御用の信号伝達のためのインターフェースを提供するべく、プロセッサモジュール１０２、１０４に結合されているとしてよい。実際には、バス１０６は、特定の種類のＩＳＡにしたがって設計されているとしてよい。このため、複数の異なる種類のＩＳＡにしたがって設計されているプロセッサモジュール１０２、１０４の間に通信チャネルを設けるためには、データおよびメッセージを変換するための別のモジュールが必要になるとしてもよい。図２Ａは、一実施形態に係る、複数の異なるＩＳＡコア間の通信のための複数の回路モジュールを含む処理デバイス２００を示す図である。図２Ａに示すように、処理デバイス２００は、図１に図示した処理デバイスと同様に、プロセッサモジュール１０２、１０４、ならびに、バスおよび／またはファブリック１０６を備えるとしてよい。処理デバイス２００はさらに、プロセッサモジュール１０４とバス１０６との間に結合されているバスブリッジ２０２を備えるとしてよい。バス１０６は、プロセッサモジュール１０２と同種のＩＳＡにしたがって設計されているとしてよい。このため、異なる種類のＩＳＡのプロセッサモジュール１０４とは直接通信できないとしてよい。プロセッサモジュール１０４とバス１０６との間に結合されているバスブリッジ２０２は、プロセッサモジュール１０４からのメッセージを、バス１０６に適したフォーマットであり、プロセッサモジュール１０２が理解できるフォーマットに変換するとしてよい。逆に、バスブリッジ２０２は、バス１０６を介したプロセッサモジュール１０２からのメッセージを、プロセッサモジュール１０４に適したフォーマットに変換するとしてよい。
【００３４】
一実施形態によると、プロセッサモジュール１０２はＩＡ型のコアを有するとしてよく、バス１０６はＩＡ型のコアからのメッセージを処理するように特に設計されているとしてよい。例えば、バス１０６は、Ｉｎｔｅｌ（登録商標）社のインダイインターコネクト（ＩＤＩ）メッセージを処理するシステムエージェント（ＳＡ）であるとしてよい。プロセッサモジュール１０４は、ＩＡとは異なる種類のコアを有するとしてよい。一実施形態によると、プロセッサモジュール１０４内の複数のコアは、ＡＲＭ型であるとしてよく、アドバンスド・マイクロコントローラ・バス・アーキテクチャ（ＡＭＢＡ）プロトコルに応じたメッセージを通信するよう設計されているとしてよい。バスブリッジ２０２は、プロセッサモジュール１０２からのＩＤＩメッセージを、プロセッサモジュール１０４が読めるようにＡＭＢＡメッセージに変換するとしてよく、または逆に、プロセッサモジュール１０４からのＡＭＢＡメッセージを、プロセッサモジュール１０２が読めるようにＩＤＩメッセージに変換するとしてよい。
【００３５】
別の実施形態によると、プロセッサモジュール１０２は、ＡＲＭ型の複数のコアを有するとしてよく、バス１０６は、ＡＲＭコアからのメッセージを処理するよう特に設計されているとしてよい。例えば、バス１０６はＡＭＢＡメッセージを処理するＳＡであってよい。プロセッサモジュール１０４は、ＡＭＢＡとは異なる種類のコアを有するとしてよい。一実施形態によると、プロセッサモジュール１０４内の複数のコアは、ＩＡ型であってよく、ＩＤＩメッセージに応じたメッセージを通信するよう設計されているとしてよい。バスブリッジ２０２は、プロセッサモジュール１０２からのＡＭＢＡメッセージを、プロセッサ１０４が読めるようにＩＤＩメッセージに変換するとしてよく、または逆に、プロセッサモジュール１０４からのＩＤＩメッセージをプロセッサモジュール１０２が読めるようにＡＭＢＡメッセージに変換するとしてよい。
【００３６】
処理デバイス２００の複数の異種のコアは、ＳｏＣ外の周辺機器と通信するとしてよい。図２Ｂは、一実施形態に係る、コアと周辺機器との間の通信のための回路モジュールを備える処理デバイス２００を示す図である。図２Ａと比較すると、図２Ｂに図示した処理デバイス２００は、さらにコンバータ２０４と、処理デバイス２００と周辺機器２０８、２１０との間でメッセージおよび制御信号を通信するための周辺ブリッジ２０６とを備えるとしてよい。 コンバータ２０４は、システムエージェントの一部であってバス１０６に結合されているとしてよく、周辺ブリッジ２０６は、コンバータ２０４と周辺機器２０８、２１０との間に結合されているとしてよい。周辺機器２０８、２１０は、ＳｏＣの一部ではなく、異種の処理モジュール１０２、１０４によってまとめて制御されることにより、各周辺機器は処理モジュールのうちの任意の１つによってアドレス指定されるとしてよい。コンバータ２０４は、処理モジュール１０２、１０４内の異種のコアからの複数の異なる種類のメッセージおよび制御信号を周辺ブリッジ２０６が認識し得るフォーマットに変換するとしてよい。これによって、周辺ブリッジ２０６は、メッセージおよび制御信号を適切な周辺機器に渡すとしてよい。
【００３７】
一実施形態によると、コンバータ２０４は、複数の異種のコアを含む他のＳｏＣに結合されている周辺機器に対するコアを含むコアに対する／コアからの内部のコマンド／割り込みを処理するとしてよい。この点において、コンバータは第１の種類のコア用に設計された内部のコマンド／割り込みを、第２の種類のコアに合わせるとしてよい。例えば、コンバータ２０４は、ＡＲＭコアと通信するように、ＩＡコア用に設計されているＩｎｔｅｌ（登録商標）社のオンチップシステムファブリック（ＩＯＳＦ）バスおよび周辺機器を適応させるとしてよい。別の実施形態において、コンバータ２０４は、コアと周辺機器との間の直接的なデータ接続を管理するとしてよい。例えば、コンバータ２０４は、周辺機器のメモリマップドＩ／Ｏ（ＭＭＩＯ）レジスタに制御コードを書き込むとしてよい。これによって、第１の種類のＩＳＡ用に限定して設計された周辺機器は第２の種類のコアとトークをする（メッセージおよび割り込みを送信する）としてよく、第２の種類のＩＳＡ用に限定して設計された周辺機器は、第１の種類のコアとトークをするとしてよい。
【００３８】
図２Ａおよび図２Ｂに示す実施形態は２種類のＩＳＡコアを含む処理デバイス２００に関して説明しているが、本開示の複数の態様は容易に複数の種類のＩＳＡコアにまで拡張されるとしてよい。図２Ｃは、一実施形態に係る、複数のＩＳＡの複数のプロセッサモジュールを有する処理デバイスを示す図である。図２Ｂと比較すると、図２Ｃに図示している処理デバイス２００はさらに、第３のプロセッサモジュール２１２および追加バスブリッジ２１４を備えるとしてよい。プロセッサモジュール２１２は、プロセッサモジュール１０２または１０４のＩＳＡとは異なる第３の種類のＩＳＡにしたがって設計されているコアを含むとしてよい。プロセッサモジュール２１２とバス１０６（プロセッサモジュール１０２のＩＳＡにしたがって設計されている）との間に結合されているバスブリッジ２１４は、プロセッサモジュール２１２とバス１０６との間でメッセージを変換するとしてよい。このため、処理デバイス２００は、２種類よりも多い種類の異種のコアを備えるとしてよく、２つよりも多いエコシステムをサポートし得るコンピューティングデバイスに適応するよう設計されているとしてよい。
【００３９】
図３Ａは、一実施形態に係る処理デバイス３００の詳細な概略図である。処理デバイスは、図３Ａに示すように、第１のプロセッサモジュール３０２、第２のプロセッサモジュール３０４、および、ＩＡシステムエージェント（ＳＡ）３０６を備えるとしてよい。ＩＡＳＡ３０６はさらに、バス／ファブリック（不図示）およびＳＡコンバータ３０８を有するとしてよい。プロセッサモジュール３０２はさらに、１または複数の第１の種類のＩＳＡコア、つまり、ＩＳＡ１コア（ＩＡコア等）３１０、３１２、および、ＩＡコア３１０、３１２用のデータを格納するために用いられ得るレベル２キャッシュ３１４を有するとしてよい。プロセッサモジュール３０４はさらに、１または複数の第２の種類のコア、つまり、ＩＳＡ２コア（ＡＲＭコア等）３１６、３１８、レベル２キャッシュ３２０、バスブリッジ３２２を有するとしてよい。レベル２キャッシュ３２０は、ＡＲＭコア３１６、３１８およびバスブリッジ３２２用のデータを格納するために用いられるとしてよい。バスブリッジ３２２は、ＡＲＭコア３１６、３１８とＳＡ３０６との間で送信されるメッセージを変換するとしてよい。
【００４０】
処理デバイス３００はさらに、プロセッサモジュール３０２、３０４およびＳＡ３０６に結合されており、電力管理（ＰＭ）リンクを介してプロセッサモジュール３０２、３０４に供給される電力を管理する電力コントローラ３２４を備えるとしてよい。処理デバイス３００はさらに、メモリインターフェース（ＭＩ）プロトコルを用いてＳＡ３０６に結合されているメモリコントローラ３２６を備えるとしてよい。メモリコントローラ３２６は、メモリデバイス３３６（ＤＤＲメモリ等）へのデータの読み書きを制御するとしてよい。
【００４１】
さらに、ＳＡ３０６はコンバータ３０８を介して周辺機器３２８−３３４に結合されるとしてよい。周辺機器は、ＩＡ限定、ＡＲＭ限定、および、限定なしという３つのカテゴリのうち１つに属するとしてよい。ＩＡ限定周辺機器は、処理デバイス３００がフォアグラウンドでプロセッサモジュール３０２をアクティブに実行している場合に限り動作する。ＡＭＲ限定デバイスは、処理デバイス３００がフォアグラウンドでプロセッサモジュール３０４をアクティブに実行している場合に限り動作する。限定なし周辺機器は、プロセッサモジュール３０２がフォアグラウンドにある場合、または、プロセッサモジュール３０４がフォアグラウンドにある場合のいずれかの場合で動作するとしてよい。コンバータ３０８と周辺機器３２８−３３４との間の通信は、Ｉｎｔｅｌ（登録商標）オンシステムファブリック（ＩＯＳＦ）プロトコルまたはファブリックインターフェース（ＦＩ）プロトコルに応じてバスを介して行うとしてよい。
【００４２】
動作について説明すると、ＩＡコア３１０、３１２は、ＩＤＩプロトコルに応じてＳＡ３０６にメッセージを送信するとしてよい。バスブリッジ３２２は、ＩＡコア３１０、３１２からのＩＤＩメッセージを、ＡＲＭコア３１６、３１８が読むことが可能なフォーマットに変換するとしてよい。これとは逆に、バスブリッジ３２２は、ＡＲＭコア３１６、３１８からのＡＭＢＡメッセージを、ＩＤＩメッセージに変換して、ＩＤＩメッセージをＳＡ３０６に送信するとしてよい。メッセージは、コアが開始するメモリ処理およびＩ／Ｏ処理、ならびに、エージェントが開始するスヌープおよび割り込み、そして、電力管理インターフェースを含むとしてよい。
【００４３】
ＳＡ３０６は、その内部に設けられているＩＯＳＦバスを制御するとしてよい。ＩＯＳＦバスは、ＳｏＣ上の他のモジュールに結合されているとしてよい。ＳＡ３０６はさらに、複数の異種のコアに対する／複数の異種のコアからの内部のコマンドおよび／または割り込みを処理するとしてよい。ＳＡ３０６内のＩＯＳＦバスおよび他のデバイスをＡＲＭコア３１６、３１８に適応させるべく、ＳＡコンバータ３０８は、ＡＲＭコア３１６、３１８用にＩＯＳＦバスプロトコルメッセージおよび内部のコマンド／割り込みを変換するとしてよい。
【００４４】
一実施形態において、処理デバイス３００は、ＩＡコア３１０、３１２、および、ＡＲＭコア３１６、３１８をメモリ３３６の共有メモリ（ＳＭ）部分に直接リンキングするコア間通信トンネルを提供するとしてよい。これによって、複数の異種のコアは、高速でメモリにアクセスするとしてよい。
【００４５】
電力コントローラ３２４は、ＳＡ３０６を介したＦＩプロトコルメッセージにより、プロセッサモジュール３０２、３０４と通信するとしてよい。例えば、電力コントローラは、現在実行中のオペレーティングシステム（ＯＳ）の切り替えを求める、フォアグラウンド状態のコアによって生成された要求を受信するとしてよい。この要求に応じて、電力コントローラは、ＰＭリンクを通して、フォアグラウンドのアクティブなコアへの電力供給を低減してアイドル状態とすると同時に、バックグラウンドのコアへの電力供給を増大させてアクティブ状態にする命令を発行するとしてよい。例えば、処理デバイス３００がアクティブにＩＡコア３１０、３１２を実行しておりＡＲＭコア３１６、３１８がアイドル状態である場合、切り替え要求に応じて、電力コントローラ３２４は、プロセッサモジュール３０２への電力供給を低減して、プロセッサモジュール３０４への電力供給を増大させるので、ＩＡコア３１０、３１２がアイドル状態になり、ＡＲＭコア３１６，３１８がアクティブ状態になるとしてよい。
【００４６】
処理デバイス３００は、図３Ａに図示しているように、ＩＡシステムエージェント３０６を中心に構築される。これに代えて、処理デバイスは他の種類のシステムエージェントを中心として構築されるとしてもよい。図３Ｂは、一実施形態に係る、ＡＲＭシステムエージェントを中心として構築された処理デバイス３４０を示す図である。処理デバイス３４０は、図３Ｂに図示しているように、ＡＭＢＡ等のＡＲＭ通信プロトコルにしたがって設計されているＡＲＭシステムエージェント（ＳＡ）３４６を備えるとしてよい。処理デバイス３４０はさらに、プロセッサモジュール３４２、３４４、電力コントローラ３４６、および、メモリコントローラ３６６を備えるとしてよい。プロセッサモジュール３４２はさらに、１または複数の第２の種類のＩＳＡコア、つまり、ＩＳＡ２コア（ＡＲＭコア等）３５０、３５２と、レベル２キャッシュ３５４を有するとしてよく、プロセッサモジュール３４４はさらに、１または複数の第１の種類のＩＳＡコアまたはＩＳＡ１コア（ＩＡコア等）３５６、３５８、レベル２キャッシュ３６０、および、バスブリッジ３６２を有するとしてよい。ＳＡ３４６はさらに、ＡＲＭバス（不図示）およびコンバータ３４８を含むとしてよい。ＳＡ３４６はＡＲＭコアと協働するよう設計されているので、プロセッサモジュール３４２はＡＭＢＡプロトコルに応じてＡＲＭ  ＳＡ３４６と通信するとしてよい。これとは対照的に、ＩＡコア３５６、３５８を含むプロセッサモジュール３４４は、バスブリッジ３６２を介してＳＡ３４６と通信するとしてよい。バスブリッジ３６２が、ＩＡコアメッセージをＡＭＢＡフォーマットに変換するか、または、その逆を行うことにより、プロセッサモジュール３４２はＳＡ３４６を介してプロセッサモジュール３４４との間でメッセージをやり取りするとしてよい。同様に、コンバータ３４８は、ＩＡコア３５６、３５８からのコマンドおよび／または割り込みを、ＩＡデバイスとして設計されている周辺機器３２８−３３４用に変換するとしてよく、また、この逆を行うとしてよい。実際には、処理デバイス３４０は、図３Ａに図示した処理デバイス３００と同様に動作するとしてよい。
【００４７】
デュアルＯＳ型またはマルチＯＳ型として構成されているコンピューティングデバイスは、ハードウェア共有アクセス可能モード、ソフトウェア共有アクセス可能モード、または、アクセス制限モードで動作するとしてよい。ハードウェア共有アクセス可能モードでは、コンピューティングデバイスは、複数のＯＳ（例えば、Ｗｉｎｄｏｗｓ（登録商標）およびＡｎｄｒｏｉｄ（登録商標）の両方）を同時にアクティブに動作させるとしてよい。ハードウェア共有アクセス可能モードを実現するためには、各処理モジュール（図３Ａに示す３０２、３０４、または、図３Ｂに示す３４２、３４４等）には対応するドライバが設けられるとしてよい。コアと周辺機器との間におけるメッセージのやり取りおよびイベントのディスパッチを制御するＳＡ３０８（または３４８）に埋め込まれているコンバータ３０８（または３４８）は、同時に実行されているＯＳのそれぞれに対する割り込みを多重化するとしてよい。
【００４８】
ソフトウェア共有アクセス可能モードでは、コンピューティングデバイスは、複数のＯＳを仮想化によって同時にアクティブに動作させるとしてよい。複数の異種のコアの間において、ＯＳ間のメッセージを転送するべく、仮想ドライバを構築するとしてよい。ハードウェア共有アクセス可能モードおよびソフトウェア共有アクセス可能モードのどちらも同時に複数のＯＳを実行させるが、周辺機器に関して、ＯＳのうちの１つはマスターであり、残りのＯＳはスレーブであるとしてよい。マスターであるＯＳが主に周辺機器を管理するか、マスターであるＯＳだけが周辺機器にアクセスするか、または、マスターであるＯＳはスレーブであるＯＳと共に周辺機器を共有するとしてよい。
【００４９】
アクセス制限モードでは、コンピューティングデバイスは、フォアグラウンドにおいて１つのＯＳのみを実行するとしてよく、残りのＯＳはバックグラウンドまたはアイドル状態にするとしてよい。フォアグラウンドＯＳは、フォアグラウンドＯＳに対してネイティブなコアを含むプロセッサモジュール上で実行されるとしてよい。例えば、Ｗｉｎｄｏｗｓ（登録商標）およびそのアプリケーションは、フォアグラウンドにある場合、ＩＡコアで実行されるとしてよく、Ａｎｄｒｏｉｄ（登録商標）およびそのアプリケーションは、フォアグラウンドにある場合、ＡＲＭコアで実行されるとしてよい。切り替え要求に応じて、フォアグラウンドＯＳおよびバックグラウンドＯＳを切り替えるとしてよい。
【００５０】
図４は、一実施形態に係るデュアルＯＳコンピューティングデバイスにおいてＯＳを切り替える方法を示すブロック図である。方法４００は、ハードウェア（例えば、回路、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（処理デバイス、汎用コンピュータシステムまたは専用マシンで実行される命令等）、ファームウェア、または、これらの組み合わせを含み得る処理ロジックによって実行されるとしてよい。一実施形態によると、方法４００は、部分的に、図１、２Ａ−２Ｃ、３Ａ−３Ｂを参照しつつ上述したプロセッサモジュール１０２、１０４、２１２、３０２、３０４、３４２、３４４のいずれか１つの処理ロジックによって実行されるとしてよい。
【００５１】
説明を簡略化するべく、方法４００は一連の動作を含むものとして図示および説明する。しかし、本開示に係る動作は、順序を変えて、および／または、同時に実行することが可能であり、本明細書で説明および図示していない他の動作を含むとしてもよい。さらに、開示した主題に応じて方法４００を実施する上で図示した動作の全てを実行しない場合もある。さらに、当業者であれば方法４００は、上記に代えて、状態図により一連の相互に関連した状態として、または、一連のイベントとして表され得ることを、理解および確認するであろう。
【００５２】
図４を参照すると、処理ロジックはＯＳを切り替えるよう求める要求を受信するとしてよい。当該要求は、コンピューティングデバイスのユーザが発行する命令に応じて、または、コンピューティングデバイス内のロジックによってトリガされたイベントに応じて、または、スケジュール（毎日または毎月の決まった時刻等）に応じて生成されるとしてよい。当該要求に応じて、４０２において、現在実行しているＯＳを実行している処理ロジックは、現在実行されているＯＳにおいてのみ動作するよう設計されている第１の群のデバイスを決定し、第１の群のデバイスを一時停止させる命令を発行するとしてよい。一実施形態によると、この決定は、デバイス群の識別情報と、これらのデバイスのカテゴリを特定しているテーブルとをマッチングさせることによって行われるとしてよい。４０４において、現在実行されているＯＳを実行している処理ロジックはさらに、上記のテーブルに問い合わせることによって、現在実行しているフォアグラウンドＯＳまたはバックグラウンドＯＳのいずれにも限定されない第２の群のデバイスを決定し、システムエージェント内のコンバータによって、第２の群のデバイスがバックグラウンドＯＳにおいて実行されるのに適切な状態になるよう第２の群のデバイスを再構成するとしてよい。この再構成は、これらのデバイスのＭＭＩＯレジスタに再書き込みを行うことを含むとしてよい。４０６において、現在実行されているフォアグラウンドＯＳを実行している処理ロジックは、テーブルに問い合わせることによって、バックグラウンドＯＳでのみ動作するように構成されているため現在アイドル状態である第３の群のデバイスを決定し、コンバータを用いて、第３の群のデバイスをイネーブル／再開するとしてよい。４０８において、現在実行しているＯＳを実行しているプロセッサは、バックグラウンドＯＳをフォアグラウンド状態になるようアクティブ化すると同時に、既に実行していたフォアグラウンドＯＳを非アクティブ化するとしてよい。ＯＳを切り替えることでさらに、本開示の実施形態において示しているように、複数の異なるプロセッサモジュールにおける複数の異種のコアを切り替えるとしてよい。
【００５３】
図５Ａは、本開示の一実施形態に応じた複数の異種のコアを含む一の処理デバイスを実装するプロセッサ５００のマイクロアーキテクチャを示すブロック図である。具体的には、プロセッサ５００は、本開示の少なくとも１つの実施形態に応じたプロセッサに含まれるべき、インオーダアーキテクチャコアおよびレジスタリネーミングロジック、アウトオブオーダ発行／実行ロジックを図示する。
【００５４】
プロセッサ５００は、実行エンジンユニット５５０に結合されているフロントエンドユニット５３０を含む。両者は、メモリユニット５７０に結合されている。プロセッサ５００は、縮小命令セットコンピューティング（ＲＩＳＣ）コア、複合命令セットコンピューティング（ＣＩＳＣ）コア、超長命令語（ＶＬＩＷ）コア、または、ハイブリッド型のコアあるいはその他の種類のコアを含むとしてよい。更に別の選択肢として、プロセッサ５００は、特定用途コア、例えば、ネットワークコアまたは通信コア、圧縮エンジン、グラフィクスコア等を含むとしてよい。一実施形態によると、プロセッサ５００は、マルチコアプロセッサであってもよいし、または、マルチプロセッサシステムの一部であってもよい。
【００５５】
フロントエンドユニット５３０は、命令キャッシュ部５３４に結合されている分岐予測部５３２を含む。命令キャッシュ部５３４は、命令変換ルックアサイドバッファ（ＴＬＢ）５３６に結合されている。ＴＬＢ５３６は、命令フェッチ部５３８に結合されている。命令フェッチ部５３８は、デコード部５４０に結合されている。デコード部５４０（デコーダとしても知られている）は、命令をデコードして、出力として１または複数のマイクロ演算、マイクロコードエントリポイント、マイクロ命令、他の命令、または、他の制御信号を生成するとしてよい。 これらは、元の命令からデコードされているか、または、元の命令を他の方法で反映しているか、または、元の命令から導き出されたものである。デコーダ５４０は、さまざまな異なるメカニズムを用いて実装されるとしてよい。適切なメカニズムの例としては、これらに限定されないが、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ（ＰＬＡ）、マイクロコードリードオンリーメモリ（ＲＯＭ）等が挙げられる。命令キャッシュ部５３４はさらに、メモリユニット５７０に結合される。デコード部５４０は、実行エンジンユニット５５０内のリネーム／アロケータ部５５２に結合されている。
【００５６】
実行エンジンユニット５５０は、リタイアメント部５５４および一群の１または複数のスケジューラ部５５６に結合されているリネーム／アロケータ部５５２を含む。スケジューラ部５５６は、任意の数の異なるスケジューラを表しており、リザベーションステーション（ｒｅｓｅｒｖａｔｉｏｎｓ  ｓｔａｔｉｏｎｓ：ＲＳ）、セントラルインストラクションウィンドウ（ｃｅｎｔｒａｌ  ｉｎｓｔｒｕｃｔｉｏｎ  ｗｉｎｄｏｗ）等を含む。スケジューラ部５５６は、物理レジスタファイル部５５８に結合されている。各物理レジスタファイル部５５８は、１または複数の物理レジスタファイルを表し、それぞれの物理レジスタファイルは、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点等、または、ステータス（例えば、次に実行すべき命令のアドレスである命令ポインタ）等の１または複数の異なる種類のデータを格納している。物理レジスタファイル部５５８は、レジスタリネーミングおよびアウトオブオーダ実行が実現され得るさまざまな方法（例えば、リオーダバッファおよびリタイアメントレジスタファイルを利用、フューチャーファイル、履歴バッファおよびリタイアメントレジスタファイルを利用、レジスタマップおよび一群のレジスタを利用等）を図示するべく、リタイアメント部５５４と重なるものとして図示されている。
【００５７】
一実装例によると、プロセッサ５００は、図１、２Ａ−２Ｃ、３Ａおよび３Ｂを参照しつつ説明したプロセッサ１００、２００、３００および３４０と同じであってよい。 
【００５８】
一般的に、アーキテクチャレジスタは、プロセッサの外部から、または、プログラマから可視状態である。レジスタは、任意の公知の特定の種類の回路に限定されるものではない。本明細書で説明しているようにデータの格納および提供を行うことが可能である限り、さまざまな異なる種類のレジスタを適宜利用することができる。適切なレジスタの例としては、これらに限定されないが、専用物理レジスタ、レジスタリネーミングを利用した動的に割り当てられた物理レジスタ、専用物理レジスタおよび動的に割り当てられた物理レジスタの組み合わせ等が挙げられる。リタイアメント部５５４および物理レジスタファイル部５５８は、実行クラスタ５６０に結合されている。実行クラスタ５６０は、一群の１または複数の実行部５６２および一群の１または複数のメモリアクセス部５６４を含む。実行部５６２は、さまざまな演算（例えば、シフト、加算、減算、乗算）を実行し、さまざまな種類のデータ（例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点）に対して演算を行うとしてよい。
【００５９】
一部の実施形態は特定の機能または特定の群の機能に特化した多くの実行部を含む一方で、他の実施形態が含む実行部は１つのみ、または、全てが全ての機能を実行する複数の実行部を含むとしてよい。スケジューラ部５５６、物理レジスタファイル部５５８および実行クラスタ５６０は、複数とすることが可能であるとして図示されている。これは、特定の実施形態では特定の種類のデータ／処理用に複数の別個のパイプラインを作成するためである（例えば、それぞれが自分用のスケジューラ部、物理レジスタファイル部および／または実行クラスタを有するスカラ整数パイプライン、スカラ浮動小数点／パックド整数／パックド浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、および／または、メモリアクセスパイプライン、メモリアクセスパイプラインを別個に作成する場合には、当該パイプラインの実行クラスタのみがメモリアクセス部５６４を持つ特定の実施形態が実現される）。また、複数の別個のパイプラインを利用する場合には、これらのパイプラインのうち１または複数はアウトオブオーダ発行／実行型であり、残りはインオーダ型であると理解されたい。
【００６０】
一群のメモリアクセス部５６４がメモリユニット５７０に結合されている。メモリユニット５７０は、幾つかの例を挙げると、データプリフェッチ部５８０、データＴＬＢ部５７２、データキャッシュ部（ＤＣＵ）５７４およびレベル２（Ｌ２）キャッシュ部５７６を含むとしてよい。一部の実施形態によると、ＤＣＵ５７４は、レベル１データキャッシュ（Ｌ１キャッシュ）としても知られている。ＤＣＵ５７４は、複数の未処理のキャッシュミスを処理して、入力されるストアおよびロードに対して対応し続けるとしてよい。ＤＣＵ５７４はさらに、キャッシュコヒーレンシが維持されるようサポートする。データＴＬＢ部５７２は、仮想アドレス空間および物理アドレス空間をマッピングすることによって仮想アドレス変換速度を改善するために用いられるキャッシュである。一の実施形態例によると、メモリアクセス部５６４は、ロード部、ストアアドレス部、および、ストアデータ部を含むとしてよい。ロード部、ストアアドレス部、および、ストアデータ部はそれぞれ、メモリユニット５７０内のデータＴＬＢ部５７２に結合されている。Ｌ２キャッシュ部５７６は、キャッシュの１または複数の他のレベルに結合されているとしてよく、結果的にメインメモリに結合されているとしてよい。
【００６１】
一実施形態によると、データプリフェッチ部５８０は、プログラムが消費しようとしているデータを自動的に予測することによって、ＤＣＵ５７４に対してデータを投機的にロード／プリフェッチする。プリフェッチとは、メモリ階層のあるメモリ位置（例えば、低レベルキャッシュまたはメモリ）に格納されているデータを、プロセッサが実際に当該データを要求するより前に、プロセッサにより近い（例えば、アクセスレイテンシがより少ない）高レベルメモリ位置へと移動させることを意味するとしてよい。より具体的に説明すると、プリフェッチとは、戻されている途中の特定のデータへの要求をプロセッサが発行するより前に、低レベルキャッシュ／メモリの１つから、データキャッシュおよび／またはプリフェッチバッファへと、データを早めに取得することを意味するとしてよい。
【００６２】
プロセッサ５００は、１または複数の命令セット（例えば、ｘ８６命令セット（新規バージョンでは追加された拡張内容を含む））、ミップステクノロジーズ（ＭＩＰＳ  Ｔｅｃｈｎｏｌｏｇｉｅｓ）社（米国カリフォルニア州サニーベール）のＭＩＰＳ命令セット、エーアールエムホールディングス（ＡＲＭ  Ｈｏｌｄｉｎｇｓ）社（米国カリフォルニア州サニーベール）のＡＲＭ命令セット（ＮＥＯＮ等の任意の追加拡張内容を含む）をサポートするとしてよい。
【００６３】
コアはマルチスレッディング（２またはそれ以上の群の演算またはスレッドを並列に実行する）をサポートし得るものであって、さまざまな方法でサポートし得ると理解されたい。例えば、タイムスライスマルチスレッディング、同時マルチスレッディング（一の物理コアが複数のスレッドのそれぞれについて一の論理コアを提供することで、当該物理コアが同時マルチスレッディングを行う）、または、これらの組み合わせ（例えば、Ｉｎｔｅｌ（登録商標）社のＨｙｐｅｒｔｈｒｅａｄｉｎｇ技術で採用されているようにタイムスライス型のフェッチおよびデコードを行った後で同時マルチスレッディングを行う）等の方法を含む。
【００６４】
レジスタリネーミングはアウトオブオーダ実行に関連付けて説明しているが、レジスタリネーミングはインオーダアーキテクチャで利用され得ると理解されたい。図示したプロセッサの実施形態は一の別個の命令およびデータのキャッシュ部と共有Ｌ２キャッシュ部とをさらに備えるとしてもよいが、別の実施形態は命令およびデータの両方について、例えば、一のレベル１（Ｌ１）内部キャッシュ等の内部キャッシュを持つとしてもよいし、または、内部キャッシュの複数のレベルを持つとしてもよい。一部の実施形態によると、当該システムでは、内部キャッシュと、コアおよび／またはプロセッサに対して外部の外部キャッシュとを組み合わせるとしてよい。これに代えて、キャッシュは全てコアおよび／またはプロセッサに対して外部にあるとしてもよい。
【００６５】
図５Ｂは、本開示の一部の実施形態に応じた、図５Ａの処理デバイス５００によって実装されるインオーダパイプラインと、レジスタリネーミングステージ、アウトオブオーダ発行／実行パイプラインとを示すブロック図である。図５Ｂにおいて実線で囲むボックスはインオーダパイプラインを示し、点線で囲むボックスはレジスタリネーミング、アウトオブオーダ発行／実行パイプラインを示す。図５Ｂにおいて、プロセッサパイプライン５００は、フェッチステージ５０２、レングスデコードステージ５０４、デコードステージ５０６、割り当てステージ５０８、リネーミングステージ５１０、スケジューリング（ディスパッチまたは発行とも呼ばれる）ステージ５１２、レジスタ読み出し／メモリ読み出しステージ５１４、実行ステージ５１６、書き戻し／メモリ書き込みステージ５１８、例外ハンドリングステージ５２２、および、コミットステージ５２４を含む。一部の実施形態において、ステージ５０２−５２４の順序は、図示したものと異なるとしてもよく、図５Ｂに図示した特定の順序に限定されるものではない。
【００６６】
図６は、本開示の一実施形態に応じた、複数のハイブリッドコアを含むプロセッサ６００のマイクロアーキテクチャを示すブロック図である。一部の実施形態によると、一実施形態に係る命令は、バイト、ワード、ダブルワード、クワッドワード等のサイズを持つと同様に、単精度および倍精度の整数および浮動小数点（ＦＰ）のデータタイプ等のデータタイプであるデータ要素に対して演算を行うように実現され得る。一実施形態によると、インオーダフロントエンド６０１は、実行すべき命令をフェッチして、プロセッサパイプラインの後のステージで当該命令を利用するよう準備を整えるプロセッサ６００の一部である。
【００６７】
フロントエンド６０１は、複数の部を含むとしてよい。一実施形態によると、命令プリフェッチ部６２６は、メモリから命令をフェッチして、命令デコーダ６２８に供給し、命令デコーダ６２８が命令をデコードまたは解釈する。例えば、一実施形態によると、デコーダは、受信した命令を、「マイクロ命令」または「マイクロ処理」（ｍｉｃｒｏ  ｏｐまたはμｏｐとも呼ばれる）と呼ばれる機械が実行可能な１または複数の処理にデコードする。他の実施形態では、デコーダは命令をパーシングして、一実施形態に係る処理を実行するべくマイクロアーキテクチャによって利用される対応するデータおよび制御フィールド、ならびに、オペコードを得る。一実施形態によると、トレースキャッシュ６３０は、デコードされたμｏｐを取得してアセンブルし、実行に備えてμｏｐキュー６３４においてプログラムの順序付けられたシーケンスまたはトレース（ｐｒｏｇｒａｍ  ｏｒｄｅｒｅｄ  ｓｅｑｕｅｎｃｅｓ  ｏｒ  ｔｒａｃｅｓ）を作成する。トレースキャッシュ６３０が複雑な命令を発見すると、マイクロコードＲＯＭ６３２が、当該処理を完了させるために必要なμｏｐを提供する。
【００６８】
一部の命令は一のｍｉｃｒｏ  ｏｐに変換されるが、他の命令には、処理を完全に完了させるために複数のｍｉｃｒｏ  ｏｐを必要とするものもある。一実施形態によると、命令を完了させるために必要なｍｉｃｒｏ  ｏｐが４個を超える場合、当該命令を実行するためにデコーダ６２８はマイクロコードＲＯＭ６３２にアクセスする。一実施形態について、命令デコーダ６２８で処理するべく、命令を少数のｍｉｃｒｏ  ｏｐにデコードし得る。別の実施形態では、処理を完了させるために必要なｍｉｃｒｏ  ｏｐが多数である場合には、命令をマイクロコードＲＯＭ６３２に格納し得る。トレースキャッシュ６３０は、マイクロコードＲＯＭ６３２から、一実施形態に係る１または複数の命令を完了させるべく、マイクロコードシーケンスを読み出すための正しいマイクロ命令ポインタを決定するべくエントリポイントプログラマブルロジックアレイ（ＰＬＡ）を参照する。マイクロコードＲＯＭ６３２が一の命令について複数のｍｉｃｒｏ  ｏｐの順序決めを終了した後、機械のフロントエンド６０１はトレースキャッシュ６３０からｍｉｃｒｏ  ｏｐのフェッチを再開する。
【００６９】
アウトオブオーダ実行エンジン６０３は、実行に備えて命令を準備する場所である。アウトオブオーダ実行ロジックは、命令がパイプラインを進んでいき実行に向けてスケジューリングされるにあたって、性能を最適化するように命令の流れをスムーズにすると共にリオーダするべく多くのバッファを有している。アロケータロジックは、各μｏｐが実行のために必要とする機械のバッファおよびリソースを割り当てる。レジスタリネーミングロジックは、ロジックレジスタをレジスタファイル内のエントリにリネームする。アロケータはさらに、メモリスケジューラ、高速スケジューラ６０２、低速／汎用浮動小数点スケジューラ６０４および単純浮動小数点スケジューラ６０６といった命令スケジューラの前に、１つがメモリ処理、１つが非メモリ処理用である２つのμｏｐキューのうち一方において、各μｏｐについてエントリを割り当てる。μｏｐスケジューラ６０２、６０４、６０６は、これらのスケジューラに依存している入力レジスタオペランドソースの準備が整っているか否か、および、μｏｐが処理を完了させるために必要とする実行リソースが利用可能であるか否かに基づいて、μｏｐの実行の用意が整うタイミングを決定する。一実施形態に係る高速スケジューラ６０２はメインクロックサイクルの２分の１毎にスケジューリングすることができるが、他のスケジューラはメインプロセッサクロックサイクル毎にしかスケジューリングできない。スケジューラは、実行に向けてμｏｐをスケジューリングするべく、ディスパッチポートをアービトレーションする。
【００７０】
レジスタファイル６０８、６１０は、スケジューラ６０２、６０４、６０６の間に存在し、実行部６１２、６１４、６１６、６１８、６２０、６２２、６２４は実行ブロック６１１内に存在する。整数演算および浮動小数点演算のそれぞれについて別個のレジスタファイル６０８、６１０が設けられている。一実施形態に係るレジスタファイル６０８、６１０はそれぞれ、レジスタファイルにまだ書き込まれていない完了したばかりの結果を新しい依存性μｏｐにバイパスまたは転送し得るバイパスネットワークをさらに含む。整数レジスタファイル６０８および浮動小数点レジスタファイル６１０はさらに、互いにデータを通信することが可能である。一実施形態において、整数レジスタファイル６０８を２つの別個のレジスタファイルに分割して、一方のレジスタファイルはデータの下位３２ビット用に、もう一方のレジスタファイルはデータの上位３２ビット用にする。一実施形態に係る浮動小数点レジスタファイル６１０は、浮動小数点命令は通常、オペランドのビット幅が６４ビットから１２８ビットであるので、エントリのビット幅が１２８ビットである。
【００７１】
実行ブロック６１１は、実行部６１２、６１４、６１６、６１８、６２０、６２２、６２４を含み、これらの実行部で命令を実際に実行する。この部分には、マイクロ命令が実行する必要がある整数および浮動小数点のデータのオペランドの値を格納しているレジスタファイル６０８、６１０が含まれる。一実施形態に係るプロセッサ６００は、アドレス生成部（ＡＧＵ）６１２、ＡＧＵ６１４、高速ＡＬＵ６１６、高速ＡＬＵ６１８、低速ＡＬＵ６２０、浮動小数点ＡＬＵ６２２、浮動小数点移動部６２４といった複数の実行部を含む。一実施形態について、浮動小数点実行ブロック６２２、６２４は、浮動小数点演算、ＭＭＸ演算、ＳＩＭＤ演算およびＳＳＥ演算ならびにその他の演算を実行する。一実施形態に係る浮動小数点ＡＬＵ６２２は、除算、平方根、および、剰余のｍｉｃｒｏ  ｏｐを実行する６４ビット×６４ビットの浮動小数点除算器を含む。本開示の実施形態について、浮動小数点値を含む命令は浮動小数点ハードウェアで処理されるとしてよい。
【００７２】
一実施形態によると、ＡＬＵ演算は高速ＡＬＵ実行部６１６、６１８に渡される。一実施形態に係る高速ＡＬＵ６１６、６１８は、実質的なレイテンシをクロックサイクルの半分として高速処理を実行することができる。一実施形態において、大半の複雑な整数演算は、低速ＡＬＵ６２０に渡される。これは、低速ＡＬＵ６２０はレイテンシが長い種類の演算のための整数実行ハードウェアである乗算器、シフト、フラグロジックおよび分岐処理等を含むためである。メモリのロード／ストア処理は、ＡＧＵ６１２、６１４によって実行される。一実施形態において、整数ＡＬＵ６１６、６１８、６２０は、６４ビットのデータオペランドに対して整数演算を実行することに関連して説明する。別の実施形態では、ＡＬＵ６１６、６１８、６２０は、１６、３２、１２８、２５６等、さまざまなデータビットをサポートするように実現されるとしてよい。同様に、浮動小数点ユニット６２２、６２４は、さまざまなビット幅を持つ多くのオペランドをサポートするように実現されるとしてよい。一実施形態によると、浮動小数点ユニット６２２、６２４は、ＳＩＭＤ命令およびマルチメディア命令と共に、１２８ビットの幅のパックドデータオペランドに対して演算を行うことができる。
【００７３】
一実施形態によると、μｏｐスケジューラ６０２、６０４、６０６は、親のロードが実行を終了する前に、依存性の処理をディスパッチする。プロセッサ６００においてｕｏｐが投機的にスケジューリングされて実行されるので、プロセッサ６００はさらにメモリミスを処理するロジックを含む。データロードミスがデータキャッシュにおいて発生すると、パイプラインにおいてインフライトの依存性の処理が発生し、スケジューラに一時的に正しくないデータが残ってしまう。リプレイメカニズムは、正しくないデータを利用した命令を追跡して再実行する。リプレイが必要なのは依存性の処理のみであり、非依存性の処理は完了させてよい。プロセッサの一実施形態に係るスケジューラおよびリプレイメカニズムはさらに、テキスト文字列比較処理について命令シーケンスを取得するよう設計されている。
【００７４】
プロセッサ６００はさらに、本開示の複数の実施形態によると、メモリディスアンビギュエーションのためにストアアドレス予測を実施するロジックを含む。一実施形態によると、プロセッサ６００の実行ブロック６１１は、メモリディスアンビギュエーションのためのストアアドレス予測を実施するストアアドレス予測部（不図示）を含むとしてよい。
【００７５】
「レジスタ」という用語は、オペランドを特定するべく命令の一部として用いられるオンボードプロセッサ格納位置を意味するとしてよい。言い換えると、レジスタは（プログラマから見て）プロセッサの外部から利用可能なものであってよい。しかし、一実施形態に係るレジスタの意味は、特定の種類の回路に限定されるべきではない。一実施形態に係るレジスタは、データの格納および提供が可能であり、本明細書に記載した機能を実行することが可能である。本明細書で説明するレジスタは、任意の数の異なる技術、例えば、専用物理レジスタ、レジスタリネーミングを利用する動的割り当て物理レジスタ、専用物理レジスタおよび動的割り当て物理レジスタの組み合わせ等を利用して、プロセッサ内の回路によって実現され得る。一実施形態において、整数レジスタは３２ビットの整数データを格納している。一実施形態に係るレジスタファイルはさらに、パックドデータ用に８個のマルチメディアＳＩＭＤレジスタを含む。
【００７６】
以下に記載する説明においては、レジスタとは、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ社（米国カリフォルニア州サンタクララ）のＭＭＸ技術で実現可能なマイクロプロセッサにおいてパックドデータを保持するよう設計されているデータレジスタ、例えば、６４ビット幅のＭＭＸＴＭレジスタ（一部の例では「ｍｍ」レジスタとも呼ぶ）を意味すると理解されたい。これらのＭＭＸレジスタは、整数形式および浮動小数点形式の両方があり、ＳＩＭＤ命令およびＳＳＥ命令を伴うパックドデータ要素で動作させることが可能である。同様に、ＳＳＥ２、ＳＳＥ３、ＳＳＥ４またはそれ以上（「ＳＳＥｘ」と総称する）の技術に基づく１２８ビット幅のＸＭＭレジスタもまた、このようなパックドデータオペランドを保持するために用いられ得る。一実施形態によると、パックドデータおよび整数データを格納する際、レジスタはこれら２種類のデータを区別する必要がない。一実施形態によると、整数および浮動小数点は、同じレジスタファイル内に含まれているか、または、複数の異なるレジスタファイル内に含まれている。さらに、一実施形態によると、浮動小数点データおよび整数データは、複数の異なるレジスタに格納されているとしてもよいし、または、同じ複数のレジスタに格納されているとしてもよい。
【００７７】
ここで図７を参照すると、本開示の一実施形態が利用されるシステム７００を示すブロック図が図示されている。図７に示すように、マルチプロセッサシステム７００は、ポイントツーポイントインターコネクトシステムであり、第１のプロセッサ７７０および第２のプロセッサ７８０がポイントツーポイントインターコネクト７５０を介して結合されている。図示されているプロセッサは７７０、７８０の２つのみであるが、本開示の実施形態の範囲はこれに限定されないと理解されたい。他の実施形態では、１または複数のプロセッサがさらに所与のプロセッサに含まれるとしてよい。一実施形態によると、マルチプロセッサシステム７００は本明細書で説明したように、複数のハイブリッドコアを実現するとしてよい。
【００７８】
プロセッサ７７０および７８０はそれぞれ、統合メモリコントローラユニット７７２および７８２を含むものとして図示されている。プロセッサ７７０はさらに、バスコントローラユニットの一部として、ポイントツーポイント（Ｐ−Ｐ）インターフェース７７６および７７８を含む。同様に、第２のプロセッサ７８０は、Ｐ−Ｐインターフェース７８６および７８８を含む。プロセッサ７７０、７８０は、Ｐ−Ｐインターフェース回路７７８、７８８を用いてポイントツーポイント（Ｐ−Ｐ）インターフェース７５０を介して情報をやり取りするとしてよい。図７に図示しているように、ＩＭＣ７７２および７８２は、プロセッサを対応するメモリ、つまり、メモリ７３２およびメモリ７３４に結合している。メモリ７３２およびメモリ７３４は、メインメモリのうちそれぞれのプロセッサにローカルに取り付けられている部分であるとしてよい。
【００７９】
プロセッサ７７０、７８０はそれぞれ、個別のＰ−Ｐインターフェース７５２、７５４を介して、ポイントツーポイントインターフェース回路７７６、７９４、７８６、７９８を用いて、チップセット７９０との間で情報をやり取りするとしてよい。チップセット７９０はさらに、高性能グラフィクスインターフェース７３９を介して高性能グラフィクス回路７３８との間で情報をやり取りするとしてよい。
【００８０】
共有キャッシュ（不図示）は、いずれかのプロセッサに含まれるとしてもよいし、または、両方のプロセッサの外部に設けられるとしてもよい。しかし、Ｐ−Ｐインターコネクトを介してプロセッサと接続されており、一方または両方のプロセッサのローカルキャッシュ情報は、プロセッサが低電力モードに入ると、共有キャッシュに格納されるとしてよい。
【００８１】
チップセット７９０は、インターフェース７９６を介して第１のバス７１６に結合されているとしてよい。一実施形態によると、第１のバス７１６は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バスであってよく、または、ＰＣＩ  Ｅｘｐｒｅｓｓバス、または、その他の第３世代Ｉ／Ｏインターコネクトバス等のバスであってもよい。しかし、本開示の範囲はこれに限定されない。
【００８２】
図７に示すように、さまざまなＩ／Ｏデバイス７１４が、バスブリッジ７１８と同様に、第１のバス７１６に結合されているとしてよい。バスブリッジ７１８は第１のバス７１６を第２のバス７２０に結合している。一実施形態によると、第２のバス７２０は、低ピンカウント（ＬＰＣ）バスであってよい。第２のバス７２０に結合されているさまざまなデバイスには、例えば、一実施形態によると、キーボードおよび／またはマウス７２２、通信デバイス７２７、および、命令／コードおよびデータ７３０を含み得る、ディスクドライブまたはその他の大容量ストレージデバイス等のストレージユニット７２８が含まれるとしてよい。さらに、オーディオＩ／Ｏ７２４が第２のバス７２０に結合されているとしてよい。尚、他のアーキテクチャも可能であることに留意されたい。例えば、図７に示すポイントツーポイントアーキテクチャに代えて、システムはマルチドロップバスまたはその他の同様のアーキテクチャを実現するとしてよい。
【００８３】
ここで図８を参照すると、本開示の一実施形態が動作し得るシステム８００を示すブロック図である。システム８００は、１または複数のプロセッサ８１０、８１５を含むとしてよく、これらはグラフィクスメモリコントローラハブ（ＧＭＣＨ）８２０に結合される。プロセッサ８１５を追加するか否かは任意であるが、この特徴は図８において点線で表している。一実施形態によると、プロセッサ８１０、８１５は、本開示の複数の実施形態に係る複数のハイブリッドコアを実現する。
【００８４】
プロセッサ８１０、８１５はそれぞれ、上述したように、回路、集積回路、プロセッサ、および／または、シリコン集積回路の何らかの変形であってよい。しかし、統合グラフィクスロジックおよび統合メモリ制御部がプロセッサ８１０、８１５内に存在する可能性は低いことに留意されたい。図８は、ＧＭＣＨ８２０がメモリ８４０に結合されている様子を図示している。メモリ８４０は、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）であるとしてよい。ＤＲＡＭは、少なくとも１つの実施形態において、不揮発性キャッシュと対応付けられているとしてよい。
【００８５】
ＧＭＣＨ８２０は、チップセットであってもよく、または、チップセットの一部であってもよい。ＧＭＣＨ８２０は、プロセッサ８１０、８１５と通信するとしてよく、プロセッサ８１０、８１５とメモリ８４０との間のやり取りを制御する。ＧＭＣＨ８２０はさらに、プロセッサ８１０、８１５とシステム８００の他の構成要素との間の加速バスインターフェースとして機能するとしてもよい。少なくとも１つの実施形態において、ＧＭＣＨ８２０は、フロントサイドバス（ＦＳＢ）８９５等のマルチドロップバスを介してプロセッサ８１０、８１５と通信する。
【００８６】
さらに、ＧＭＣＨ８２０は、ディスプレイ８４５（フラットパネルまたはタッチスクリーンディスプレイ等）に結合されている。ＧＭＣＨ８２０は、統合グラフィクスアクセラレータを含むとしてよい。ＧＭＣＨ８２０はさらに、入出力（Ｉ／Ｏ）コントローラハブ（ＩＣＨ）８５０に結合されている。ＩＣＨ８５０は、さまざまな周辺機器をシステム８００に結合させるために用いられるとしてよい。図８の実施形態で例示されているものとして、外部グラフィクスデバイス８６０がある。外部グラフィクスデバイス８６０は、ディスクリートなグラフィクスデバイスであってよく、他の周辺機器８７０と共にＩＣＨ８５０に結合されている。
【００８７】
また、システム８００には、プロセッサが追加されるとしてもよく、または、異なるプロセッサが設けられているとしてもよい。例えば、追加されるプロセッサ８１５には、プロセッサ８１０と同一の追加プロセッサ、プロセッサ８１０とは異種または非対称な追加プロセッサ、アクセラレータ（例えば、グラフィクスアクセラレータまたはデジタルシグナルプロセッシング（ＤＳＰ）ユニット等）、フィールドプログラマブルゲートアレイ、または、任意のその他のプロセッサが含まれるとしてよい。プロセッサ８１０と８１５との間には、アーキテクチャ、マイクロアーキテクチャ、熱特性、消費電力特性等の広範囲にわたる特性のメトリックに関してさまざまな相違点が存在し得る。これらの相違点は実質的に、プロセッサ８１０、８１５の間の非対称性および異種性として現れるとしてよい。少なくとも１つの実施形態について、さまざまなプロセッサ８１０、８１５が一の同じダイパッケージ内に存在するとしてよい。
【００８８】
ここで図９を参照すると、本開示の一実施形態が動作し得るシステム９００を示すブロック図が図示されている。図９は、プロセッサ９７０、９８０を図示している。一実施形態によると、プロセッサ９７０、９８０は上述しているように複数のハイブリッドコアを実現するとしてよい。プロセッサ９７０、９８０はそれぞれ、統合メモリおよびＩ／Ｏ制御ロジック（ＣＬ）９７２および９８２を含むとしてよく、ポイントツーポイント（Ｐ−Ｐ）インターフェース９７８および９８８の間で、ポイントツーポイントインターコネクト９５０を介して互いに通信し合う。プロセッサ９７０、９８０はそれぞれ、図示されているように、ポイントツーポイントインターコネクト９５２および９５４を介して、それぞれのＰ−Ｐインターフェース９７６から９９４、Ｐ−Ｐインターフェース９８６から９９８を介して、チップセット９９０と通信する。少なくとも１つの実施形態において、ＣＬ９７２、９８２は、統合メモリコントローラユニットを含むとしてよい。ＣＬ９７２、９８２は、Ｉ／Ｏ制御ロジックを含むとしてよい。図示しているように、メモリ９３２、９３４がＣＬ９７２、９８２に結合されており、Ｉ／Ｏデバイス９１４がさらに制御ロジック９７２、９８２に結合されている。レガシーＩ／Ｏデバイス９１５は、インターフェース９９６を介してチップセット９９０に結合されている。
【００８９】
実施形態は、多くの異なる種類のシステムで実現されるとしてよい。図１０は、本開示の一実施形態に係るＳｏＣ１０００を示すブロック図である。点線で囲まれたボックスは、より進化したＳｏＣにおいて任意で有する特徴である。図１０において、インターコネクト部１０１２は、一群の１または複数のコア１００２Ａ−Ｎおよび共有キャッシュユニット１００６を含むアプリケーションプロセッサ１０２０、システムエージェントユニット１０１０、バスコントローラユニット１０１６、統合メモリコントローラユニット１０１４、統合グラフィクスロジック１００８、スチルカメラおよび／またはビデオカメラの機能を実現する画像プロセッサ１０２４、ハードウェアオーディオアクセラレーションを実現するオーディオプロセッサ１０２６およびビデオエンコード／デコードアクセラレーションを実現するビデオプロセッサ１０２８を含み得る一群または１または複数のメディアプロセッサ１０１８、スタティックランダムアクセスメモリ（ＳＲＡＭ）ユニット１０３０、ダイレクトメモリアクセス（ＤＭＡ）ユニット１０３２、ならびに、１または複数の外部ディスプレイに結合されているディスプレイユニット１０４０に結合されている。一実施形態によると、メモリモジュールは統合メモリコントローラユニット１０１４に含まれるとしてよい。別の実施形態において、メモリモジュールは、メモリへのアクセスおよび／または制御に用いられるＳｏＣ１０００の１または複数の他のコンポーネントに含まれているとしてもよい。アプリケーションプロセッサ１０２０は、本明細書において実施形態で説明しているように、ハイブリッドコアを実現するべくストアアドレス予測部を含むとしてよい。
【００９０】
メモリ階層は、コア内の１または複数のレベルのキャッシュ、一群または１または複数の共有キャッシュユニット１００６、および、一群の統合メモリコントローラユニット１０１４に結合されている外部メモリ（不図示）を含む。一群の共有キャッシュユニット１００６は、１または複数の中間レベルキャッシュ、例えば、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）または他のレベルのキャッシュ、ラストレベルキャッシュ（ＬＬＣ）、および／または、これらの組み合わせを含むとしてよい。
【００９１】
一部の実施形態によると、コア１００２Ａ−Ｎのうち１または複数はマルチスレッディングが可能である。システムエージェント１０１０は、 コア１００２Ａ−Ｎを協働させると共に動作させるコンポーネントを含む。システムエージェントユニット１０１０は、例えば、電力制御ユニット（ＰＣＵ）およびディスプレイユニットを含むとしてよい。ＰＣＵは、コア１００２Ａ−Ｎおよび統合グラフィクスロジック１００８の電力状態を制御するために必要なロジックおよびコンポーネントであってもよいし、または、これらのロジックおよびコンポーネントを含むとしてもよい。ディスプレイユニットは、外部に接続されている１または複数のディスプレイを駆動させるためのユニットである。
【００９２】
コア１００２Ａ−Ｎは、アーキテクチャおよび／または命令セットに関して、同種であってもよいし、または、異種であってもよい。例えば、コア１００２Ａ−Ｎの一部はインオーダ型であって、他はアウトオブオーダ型であってもよい。別の例を挙げると、コア１００２Ａ−Ｎのうち２つ以上は同じ命令セットを実行可能である一方、他のコアはその命令セットの一部分のみを実行可能であるか、または、別の命令セットを実行可能であるとしてよい。
【００９３】
アプリケーションプロセッサ１０２０は、汎用プロセッサであってよく、例えばＣｏｒｅ（商標）ｉ３、ｉ５、ｉ７、コア２  Ｄｕｏおよびコア２  Ｑｕａｄ、Ｘｅｏｎ（商標）、Ｉｔａｎｉｕｍ（商標）、Ａｔｏｍ（商標）またはＱｕａｒｋ（商標）プロセッサ、であってよい。これらは、Ｉｎｔｅｌ（登録商標）Ｃｏｒｐｏｒａｔｉｏｎ（米国カリフォルニア州サンタクララ）社製である。これに代えて、アプリケーションプロセッサ１０２０は、エー・アール・エム・ホールディングス（ＡＲＭ  Ｈｏｌｄｉｎｇｓ（登録商標）Ｌｔｄ，）社、ミップス（ＭＩＰＳ（商標））社等の別の会社製のものであってもよい。アプリケーションプロセッサ１０２０は、特定用途向けプロセッサであってよく、例えば、ネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、コプロセッサ、埋め込みプロセッサ等であってよい。アプリケーションプロセッサ１０２０は、１または複数のチップ上で実現されるとしてよい。アプリケーションプロセッサ１０２０は、例えばＢｉＣＭＯＳ、ＣＭＯＳまたはＮＭＯＳ等の数多くの処理技術のいずれかを用いた１または複数の基板の一部であってよく、および／または、そのような１または複数の基板上で実現されるとしてもよい。
【００９４】
図１１は、本開示に係るシステムオンチップ（ＳｏＣ）構成の実施形態を示すブロック図である。具体例を挙げると、ＳｏＣ１１００はユーザイクイップメント（ＵＥ）に含まれる。一実施形態によると、ＵＥはエンドユーザが通信のために利用するデバイスであればどのようなデバイスであってもよく、例えば、手持ち型電話、スマートフォン、タブレット、超薄型ノートブック、ブロードバンドアダプタ付のノートブック、または、任意のその他の同様の通信デバイスであってよい。多くの場合、ＵＥは基地局または基地ノードに接続されている。基地局または基地ノードは、ＧＳＭ（登録商標）ネットワークにおける移動局（ＭＳ）に本質的に対応し得る。
【００９５】
なお、ＳｏＣ１１００は、１１０６および１１０７という２つのコアを含む。コア１１０６および１１０７は、一の命令セットアーキテクチャに準拠しているとしてよい。例えば、Ｉｎｔｅｌ（登録商標）Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｃｏｒｅ（商標）型のプロセッサ、アドバンスド・マイクロ・デバイシーズ（Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．（ＡＭＤ））社製のプロセッサ、ミップス（ＭＩＰＳ）型のプロセッサ、ＡＲＭ型のプロセッサ設計、または、その顧客、ならびに、ライセンシーもしくは採用者が提供するものであってよい。コア１１０６および１１０７は、システム１１００の他の部分と通信するべく、バスインターフェースユニット１１０９およびＬ２キャッシュ１１１０に対応付けられているキャッシュ制御１１０８に結合されている。インターコネクト１１１０は、ＩＯＳＦ、ＡＭＢＡまたはその他の上述したインターコネクト等であり、上述の開示内容の１または複数の態様を実現し得るオンチップインターコネクトを含む。一実施形態によると、コア１１０６、１１０７は、本明細書の実施形態において説明しているように、ハイブリッドコアを実現するとしてよい。
【００９６】
インターコネクト１１１０は、他のコンポーネントに対する通信チャネルを提供する。他のコンポーネントには、例えば、サブスクライバ・アイデンティティ・モジュール（ＳＩＭ）カードとやり取りを行うためのＳＩＭ１１３０、ＳｏＣ１１００を初期化してブートするべくコア１１０６および１１０７によって実行されるブートコードを保持するためのブートＲＯＭ１１３５、外部メモリ（例えば、ＤＲＡＭ１１６０）とやり取りを行うためのＳＤＲＡＭコントローラ１１４０、不揮発性メモリ（例えば、フラッシュ１１６５）とやり取りを行うためのフラッシュコントローラ１１４５、周辺機器とやり取りを行うための周辺機器制御（ＰＣ）１１５０（例えば、シリアルペリフェラルインターフェース）、入力（例えば、タッチによってイネーブルされる入力）を表示および受信するためのビデオコーデック１１２０およびビデオインターフェース１１２５、グラフィクス関連の算出処理を実行するＧＰＵ１１１５等が含まれる。これらのインターフェースのいずれかが本明細書に記載している開示内容の複数の態様を組み込んでいるとしてよい。また、システム１１００は、Ｂｌｕｅｔｏｏｔｈ（登録商標）モジュール１１７０、３Ｇモデム１１７５、ＧＰＳ１１８０およびＷｉＦｉ１１８５等、通信用の周辺機器を図示している。
【００９７】
図１２は、機械に本明細書で説明した方法のうち１または複数の方法を実行させるための一群の命令が実行され得るコンピュータシステム１２００の形態の一例としての機械を示す図である。別の実施形態では、当該機械は、ＬＡＮ、イントラネット、エクストラネットまたはインターネットにおいて、他の機械に接続されている（例えば、ネットワーク化）としてよい。機械は、クライアントサーバネットワーク環境においてサーバまたはクライアントデバイスの機能を持つものとして動作するとしてよい。または、ピアツーピア（または分散型）ネットワーク環境においてピアマシンとして動作するとしてよい。機械は、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、携帯情報端末（ＰＤＡ）、携帯電話、ウェブ機器、サーバ、ネットワークルーター、スイッチまたはブリッジ、あるいは、当該機械が行うべき動作を特定している一群の命令を（順次またはそれ以外の方式で）実行可能な任意の機械であってよい。また、図示されている機械は１つのみであるが、「機械」という用語は任意の機械の一群を含むものと解釈されるべきであり、このような一群の機械は個別または協働して一群（または複数の群の）命令を実行して本明細書で説明した方法のうち任意の１または複数の方法を実行する。
【００９８】
コンピュータシステム１２００は、処理デバイス１２０２、メインメモリ１２０４（例えば、リードオンリーメモリ（ＲＯＭ）、フラッシュメモリ、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）（例えば、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）またはＤＲＡＭ（ＲＤＲＡＭ）等）、スタティックメモリ１２０６（例えば、フラッシュメモリ、スタティックランダムアクセスメモリ（ＳＲＡＭ）等）およびデータストレージデバイス１２１８を含む。これらは、バス１２３０を介して互いに通信する。
【００９９】
処理デバイス１２０２は、１または複数の汎用処理デバイス、例えば、マイクロプロセッサ、中央演算処理装置等を表す。より具体的には、処理デバイスは、複合命令セットコンピューティング（ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピュータ（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサまたは他の命令セットを実装しているプロセッサ、あるいは、複数の命令セットの組み合わせを実装しているプロセッサであってよい。処理デバイス１２０２はさらに、１または複数の特定用途向け処理デバイス、例えば、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタルシグナルプロセッサ（ＤＳＰ）、または、ネットワークプロセッサ等であってよい。一実施形態によると、処理デバイス１２０２は１または複数の処理コアを含むとしてよい。処理デバイス１２０２は、本明細書で説明した演算およびステップを実行するべく処理ロジック１２２６を実行するよう構成されている。一実施形態において、処理デバイス１２０２は、本開示の複数の実施形態に基づき本明細書で説明したっハイブリッドコアを実現する、図１を参照しつつ説明したプロセッサアーキテクチャ１００と同じである。
【０１００】
コンピュータシステム１２００はさらに、ネットワーク１２２０に通信可能に結合されているネットワークインターフェースデバイス１２０８を含むとしてよい。コンピュータシステム１２００はさらに、ビデオディスプレイユニット１２１０（例えば、液晶ディスプレイ（ＬＣＤ）または陰極線管（ＣＲＴ））、英数字入力デバイス１２１２（例えば、キーボード）、カーソル制御デバイス１２１４（例えば、マウス）、および、信号生成デバイス１２１６（例えば、スピーカ）を含むとしてよい。さらに、コンピュータシステム１２００は、グラフィクス処理ユニット１２２２、ビデオ処理ユニット１２２８、および、オーディオ処理ユニット１２３２を含むとしてよい。
【０１０１】
データストレージデバイス１２１８は、本明細書で説明した機能で構成される方法のうち任意の１または複数の方法を実現する、例えば、上述したようにメモリディスアンビギュエーションのためのストアアドレス予測を実行するソフトウェア１２２６が格納されている機械アクセス可能記憶媒体１２２４を含むとしてよい。ソフトウェア１２２６はさらに、全体的または少なくとも部分的に、メインメモリ１２０４内に命令１２２６として設けられているとしてよく、および／または、コンピュータシステム１２００による実行時には処理ロジック１２２６として処理デバイス１２０２内に設けられているとしてよい。メインメモリ１２０４および処理デバイス１２０２もまた、機械アクセス可能記憶媒体を構成している。
【０１０２】
機械可読記憶媒体１２２４もまた、本開示の実施形態に基づき説明したようにハイブリッドコアのためのストアアドレス予測を実現する命令１２２６を格納するために用いられるとしてよい。機械アクセス可能記憶媒体１１２８は実施形態例において１つの媒体であるとして図示されているが、「機械アクセス可能記憶媒体」という用語は、１または複数の群の命令を格納する１または複数の媒体（例えば、中央集権型または分散型のデータベース、および／または、対応付けられたキャッシュおよびサーバ）を含むものと解釈されるべきである。「機械アクセス可能記憶媒体」という用語は、機械に実行させるべく一群の命令を格納、エンコードまたは保持することが可能であり、機械に本開示に係る方法のうち任意の１または複数の方法を実行させる任意の媒体を含むものとも解釈されたい。このため、「機械アクセス可能記憶媒体」という用語は、これらに限定されないが、ソリッドステートメモリ、光媒体および磁気媒体を含むものと解釈されたい。
【０１０３】
以下に記載する例はその他の実施形態に関する。例１は、第１の命令セットアーキテクチャ（ＩＳＡ）にしたがって設計されている第１のコアを含む第１のプロセッサモジュールと、第２のＩＳＡにしたがって設計されている第２のコアを含む第２のプロセッサモジュールとを備える処理デバイスであって、第２のプロセッサモジュールは第１のプロセッサモジュールと同じダイ上に製造されている。
【０１０４】
例２では、例１の主題は任意で、第１および第２のプロセッサモジュールに通信可能に結合されているバスを含むシステムエージェント（ＳＡ）を含むとしてよい。
【０１０５】
例３において、例２の主題は任意で、バスが第１のコアとの間でメッセージをネイティブ送受信するよう設計されている特徴を持つとしてよい。
【０１０６】
例４において、例２および３のいずれか一方の主題は任意で、第２のプロセッサモジュールは第２のコアとバスとの間で送信されるメッセージを変換するバスブリッジを含むという特徴を持つとしてよい。
【０１０７】
例５において、例２および３のいずれか一方の主題は任意で、ＳＡはさらにコンバータを含み、当該コンバータを介してＳＡは複数の周辺機器に結合されているという特徴を持つとしてよい。
【０１０８】
例６において、例１から３のいずれか１つの主題は任意で、処理デバイスは一の同じダイに製造されたシステムオンチップ（ＳｏＣ）デバイスという特徴を持つとしてよい。
【０１０９】
例７において、例１から３のいずれか１つの主題は任意で、処理デバイスは、複数のオペレーティングシステムでポーティングされるコンピューティングデバイスの一部であるという特徴を持つとしてよい。
【０１１０】
例８において、例１から３のいずれか１つの主題は任意で、第１のオペレーティングシステムは、アクティブ化されると、第１のプロセッサモジュールで実行され、第２のオペレーティングシステムは、アクティブ化されると、第２のプロセッサモジュールで実行されるという特徴を持つとしてよい。
【０１１１】
例９において、例８の主題は任意で、処理デバイスは中央演算処理装置（ＣＰＵ）であり、デュアルオペレーティングシステムでポーティングされたコンピューティングデバイスの一部であるという特徴を持つとしてよい。
【０１１２】
例１０において、例１から３のいずれか１つの主題は任意でさらに、第１および第２のＩＳＡとは異なる第３の命令セット（ＩＳＡ）にしたがって設計されている第３のコアを含む第３のプロセッサモジュールを含むとしてよい。
【０１１３】
例１１において、例１から３のいずれか１つの主題は任意で、第３のプロセッサモジュールは、第１、第２および第３のコアの間で送信されるメッセージを変換する第３のバスブリッジを含むという特徴を持つとしてよい。
【０１１４】
例１２は、第１の命令セットアーキテクチャ（ＩＳＡ）にしたがって設計されている第１のコアと、第２のＩＳＡにしたがって設計されている第２のコアとを含むプロセッサである。当該プロセッサは、一のダイに製造されているシステムオンチップ（ＳｏＣ）デバイスである。
【０１１５】
例１３において、例１３の主題は任意でさらに、第１および第２のコアに通信可能に結合されているバスを含むシステムエージェント（ＳＡ）を含むとしてよい。当該バスは、第１のコアとの間でメッセージをネイティブ送受信するよう設計されている。
【０１１６】
例１４において、例１２および１３のいずれか１つの主題は任意でさらに、第２のコアと上記のバスとの間に結合されているバスブリッジを含むとしてよい。当該バスブリッジは、第２のコアとバスとの間で送信されるメッセージを変換する。
【０１１７】
例１５において、例１２から１４のいずれか１つの主題は任意で、ＳＡはさらにコンバータを有し、当該コンバータを介してＳＡは複数の周辺機器に結合されているという特徴を持つとしてよい。
【０１１８】
例１６において、例１２から１４のいずれか１つの主題は任意で、第１のオペレーティングシステムは、アクティブ化されると、第１のプロセッサモジュールにおいて実行され、第２のオペレーティングシステムは、アクティブ化されると、第２のプロセッサモジュールで実行されるという特徴を持つとしてよい。
【０１１９】
例１７において、例１６の主題は任意で、処理デバイスは中央演算処理装置（ＣＰＵ）であり、デュアルオペレーティングシステムでポーティングされたコンピューティングデバイスの一部であるという特徴を持つとしてよい。
【０１２０】
例１８において、例１２から１４のいずれか１つの主題はさらに、第１および第２のＩＳＡとは異なる第３の命令セット（ＩＳＡ）にしたがって設計されている第３のコアを含むとしてよい。
【０１２１】
例１９において、例１２から１４のいずれか１つの主題は任意で、第３のコアは、第１、第２および第３のコアの間で送信されるメッセージを変換する第３のバスブリッジを含むという特徴を持つとしてよい。
【０１２２】
例２０は、中央演算処理装置（ＣＰＵ）においてフォアグラウンドで実行されている第１のオペレーティングシステム（ＯＳ）からＣＰＵにおいてバックグラウンドで実行されている第２のＯＳへと切り替えることを求める要求に応じて、ＣＰＵの第１のコアによって、第１のＯＳとのみ対応付けられている第１の群のデバイスを決定する段階を含む方法である。第１のコアは、第１の種類の命令セットアーキテクチャ（ＩＳＡ）にしたがって設計され、第１の群のデバイスは第１のＯＳ用にのみ用いられる。当該方法はさらに、第１の群のデバイスを一時停止させる段階と、第１のＯＳおよび第２のＯＳに限定されない第２の群のデバイスを決定する段階と、第２の群のデバイスを第２のＯＳ用に再構成する段階と、第２のＯＳをフォアグラウンド状態にし、第１のＯＳをバックグラウンド状態にするべく切り替える段階とを備え、切り替える段階は、第２の種類のＩＳＡにしたがって設計されているＣＰＵの第２のコアをアクティブ化させることと、第１のコアをアイドル状態にすることとを含む。
【０１２３】
例２１において、例２０の主題は任意で、第２のＯＳ専用の第３の群のデバイスを決定する段階と、第３の群のデバイスをイネーブルする段階とを含むとしてよい。
【０１２４】
例２２は、中央演算処理装置（ＣＰＵ）で実行されることに応じて当該ＣＰＵに方法を実行させる複数の命令を格納している非一時的コンピュータ可読媒体である。当該方法は、中央演算処理装置（ＣＰＵ）においてフォアグラウンドで実行されている第１のオペレーティングシステム（ＯＳ）からＣＰＵにおいてバックグラウンドで実行されている第２のＯＳへと切り替えることを求める要求に応じて、ＣＰＵの第１のコアによって、第１のＯＳとのみ対応付けられている第１の群のデバイスを決定する段階を含む方法である。第１のコアは、第１の種類の命令セットアーキテクチャ（ＩＳＡ）にしたがって設計されており、第１の群のデバイスは第１のＯＳ用にのみ用いられる。当該方法はさらに、第１の群のデバイスを一時停止させる段階と、第１のＯＳおよび第２のＯＳに限定されない第２の群のデバイスを決定する段階と、第２の群のデバイスを第２のＯＳ用に再構成する段階と、第２のＯＳをフォアグラウンド状態にし、第１のＯＳをバックグラウンド状態にするべく切り替える段階とを備え、切り替える段階は、第２の種類のＩＳＡにしたがって設計されているＣＰＵの第２のコアをアクティブ化させることと、第１のコアをアイドル状態にすることとを含む。
【０１２５】
例２３において、例２２の主題は任意でさらに、第２のＯＳ専用の第３の群のデバイスを決定する段階と、第３の群のデバイスをイネーブルする段階とを含むとしてよい。
【０１２６】
例２４は、中央演算処理装置（ＣＰＵ）においてフォアグラウンドで実行されている第１のオペレーティングシステム（ＯＳ）からＣＰＵにおいてバックグラウンドで実行されている第２のＯＳへと切り替えることを求める要求に応じて、第１のＯＳとのみ対応付けられている第１の群のデバイスを決定する手段を含む装置である。第１のコアは、第１の種類の命令セットアーキテクチャ（ＩＳＡ）にしたがって設計されている。当該装置はさらに、第１の群のデバイスを一時停止させる手段と、第１のＯＳおよび第２のＯＳに限定されない第２の群のデバイスを決定する手段と、第２の群のデバイスを第２のＯＳ用に構成する手段と、第２のＯＳをフォアグラウンド状態にし、第１のＯＳをバックグラウンド状態にするべく切り替える手段とを備え、切り替えることは、第２の種類のＩＳＡにしたがって設計されているＣＰＵの第２のコアをアクティブ化させることと、第１のコアをアイドル状態にすることとを含む。
【０１２７】
例２５において、例２４の主題は任意でさらに、第２のＯＳ専用の第３の群のデバイスを決定する手段と、第３の群のデバイスをイネーブルする手段とを含むとしてよい。
【０１２８】
本開示は限られた数の実施形態に基づいて説明してきたが、当業者であれば、上記の説明から数多くの変更および変形に想到するであろう。以下に記載する請求項はそのような変更および変形も全て本開示の真の意図および範囲に含むことを意図している。
【０１２９】
設計は、作成、シミュレーション、製造とさまざまな段階を経るとしてよい。設計内容を表すデータは、多くの方法で設計内容を表現するとしてよい。第１に、シミュレーションで有用性が高いが、ハードウェアはハードウェア記述言語またはその他の機能記述言語を用いて表現されるとしてよい。また、ロジックゲートおよび／またはトランジスタゲートによる回路レベルのモデルは、設計プロセスの一部の段階において生成されるとしてよい。さらに、多くの設計は、いずれかの段階において、ハードウェアモデルにおけるさまざまなデバイスの物理的配置を表すデータのレベルに到達する。従来の半導体製造技術が利用される場合、ハードウェアモデルを表すデータは、集積回路を製造するために用いられるマスクのための複数の異なるマスク層上にさまざまなフィーチャが存在するか、または、存在しないかを特定したデータであってよい。どのように設計を表現するにしても、データは任意の形態の機械可読媒体に格納されるとしてよい。メモリ、または、ディスク等の磁気ストレージあるいは光学ストレージが、機械可読媒体であってよい。当該媒体は、情報を送信するべく変調された、または、その他の方法で生成された光波または電波によって送信される当該情報を格納する。コードまたは設計内容を特定または搬送する搬送波である電波が送信されると、当該電気信号の複製、バッファリングまたは再送が実行される限りにおいて、新しい複製が作成される。このため、通信プロバイダまたはネットワークプロバイダは、有形の機械可読媒体に、少なくとも一時的に、本開示の実施形態に係る技術を具現化する情報であって、搬送波にエンコードされている情報等の物品を格納するとしてよい。
【０１３０】
本明細書で用いられる場合、「モジュール」は、ハードウェア、ソフトウェアおよび／またはファームウェアの任意の組み合わせを意味する。一例を挙げると、モジュールは、マイクロコントローラ等のハードウェアを含み、当該マイクロコントローラは、当該マイクロコントローラで実行されるように適応化されているコードを格納している非一時的媒体に対応付けられている。このため、モジュールという場合、一実施形態においては、非一時的媒体で保持されるコードを認識および／または実行するよう特に構成されているハードウェアを意味する。さらに、別の実施形態によると、モジュールと言及する場合、所定の処理を行うべくマイクロコントローラによって実行されるよう特に適応化されたコードを含む非一時的媒体を意味する。そして、推測され得るであろうが、さらに別の実施形態では、（本例において）「モジュール」という用語は、マイクロコントローラおよび非一時的媒体の組み合わせを意味するとしてよい。多くの場合、別個のものとして図示されているモジュールの境界は、一般的には異なっていたり、重なる可能性もある。例えば、第１および第２のモジュールは、ハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせを共有するとしてもよいし、独立したハードウェア、ソフトウェアまたはファームウェアを保持する場合もある。一実施形態によると、「ロジック」という用語を用いる場合、トランジスタ、レジスタ、または、プログラマブルロジックデバイス等の他のハードウェア等のハードウェアを含む。
【０１３１】
一実施形態において「するように構成されている」という表現を用いる場合、装置、ハードウェア、ロジックまたは素子を、指定または決定されたタスクを実行するように、配置、組み立て、製造、販売、輸入および／または設計することを意味する。本例において、装置またはその構成要素は、動作していなくても、指定されたタスクを実行するよう設計、結合および／または相互接続されているのであれば、指定されたタスクを実行する「ように構成されている」。純粋に一例として、ロジックゲートは、動作時に０または１を提供するとしてよい。しかし、クロックに対してイネーブル信号を提供する「よう構成されている」ロジックゲートは、１または０を提供する可能性のある全てのロジックゲートを含むものではない。そうではなく、ロジックゲートは、動作時に１または０の出力によってクロックをイネーブルするように何らかの方法で結合されているものである。繰り返しになるが、「ように構成されている」という表現を用いる場合、動作していることを要件とせず、装置、ハードウェアおよび／または素子の潜在的な状態に焦点を当てており、この潜在的な状態において、当該装置、ハードウェアおよび／または素子は、動作する場合には、特定のタスクを実行できるよう設計されていることに留意されたい。
【０１３２】
また、一実施形態において、「するべく（ｔｏ）」、「することが可能な／できる（ｃａｐａｂｌｅ  ｏｆ／ｔｏ）」および／または「するよう動作可能（ｏｐｅｒａｂｌｅ  ｔｏ）」といった表現を用いる場合、所定の方法での利用を可能とするように設計されている何らかの装置、ロジック、ハードウェアおよび／または素子を意味する。上述したように、一実施形態において、「するべく（ｔｏ）」、「できる（ｃａｐａｂｌｅ  ｔｏ）」または「するよう動作可能（ｏｐｅｒａｂｌｅ  ｔｏ）」といった表現を用いる場合、装置、ロジック、ハードウェアおよび／または素子の潜在的な状態を意味することに留意されたい。当該装置、ロジック、ハードウェアおよび／または素子は、動作していないが、特定の方法で装置が利用できるように設計されている。
【０１３３】
本明細書で用いる場合、「値（ｖａｌｕｅ）」とは、数、状態、論理状態またはバイナリ論理状態の公知の表現方法を全て含む。多くの場合、論理レベル、論理値またはロジック値といった用語を用いる場合、「１」および「０」として言及することもあり、単にバイナリ論理状態を表す。例えば、１はＨｉｇｈ論理レベルを意味し、０はＬｏｗ論理レベルを意味する。一実施形態において、トランジスタまたはフラッシュセル等のストレージセルは、一の論理値または複数の論理値を保持することが可能であるとしてよい。しかし、コンピュータシステムでは値は他の方法を用いても表現されてきた。例えば、１０進数の１０は、バイナリ値では９１０、１６進数ではＡで表されるとしてよい。このため、「値」は情報を意味し、コンピュータシステムで保持可能であればどのような方法で表現されるとしてもよい。
【０１３４】
さらに、状態は、値または値の一部で表現されるとしてよい。一例を挙げると、論理値「１」等の第１の値は、デフォルト状態または初期状態を表すとしてよく、論理値「０」等の第２の値は非デフォルト状態を表すとしてよい。また、「リセット」および「セット」という用語は、一実施形態において、デフォルトの値または状態、および、更新後の値または状態をそれぞれ意味する。例えば、デフォルト値は、Ｈｉｇｈ論理値、つまり、「リセット」を含み、一方で、更新後の値は、Ｌｏｗ論理値、つまり、「セット」を含む。複数の値の任意の組み合わせを用いて任意の数の状態を表し得ることに留意されたい。
【０１３５】
上述した方法、ハードウェア、ソフトウェア、ファームウェアまたはコードの実施形態は、処理要素によって実行可能な機械アクセス可能媒体、機械可読媒体、コンピュータアクセス可能媒体またはコンピュータ可読媒体に格納されている命令またはコードによって実現されるとしてよい。非一時的機械アクセス可能／可読媒体は、コンピュータまたは電子システム等の機械によって読み出すことが可能な形態で情報を提供（つまり、格納および／または送信）する任意のメカニズムを含む。例えば、非一時的機械アクセス可能媒体は、スタティックＲＡＭ（ＳＲＡＭ）またはダイナミックＲＡＭ（ＤＲＡＭ）等のランダムアクセスメモリ（ＲＡＭ）、ＲＯＭ、磁気記憶媒体または光学記憶媒体、フラッシュメモリデバイス、電気ストレージデバイス、光学ストレージデバイス、音波ストレージデバイス、一時的な（搬送された）信号（例えば、搬送波、赤外線信号、デジタル信号）から受信した情報を保持するためのその他の形態のストレージデバイス等を含む。これらの一時的な信号は、自身から情報を受信する非一時的媒体とは区別される。
【０１３６】
本開示の実施形態を実行するためにロジックをプログラミングするために用いられる命令は、システム内のメモリ、例えば、ＤＲＡＭ、キャッシュ、フラッシュメモリまたはその他のストレージに格納されるとしてよい。さらに、命令は、ネットワークを介して、または、他のコンピュータ可読媒体を用いて、分配させることが可能である。このため、機械可読媒体は、機械（例えば、コンピュータ）が読み出すことが可能な形態で情報を格納または送信するための任意のメカニズムを含むとしてよい。これらに限定されないが、フロッピー（登録商標）ディスケット、光ディスク、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、および、光磁気ディスク、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラム可能リードオンリーメモリ（ＥＰＲＯＭ）、電気的消去可能プログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）、磁気カードまたは光カード、フラッシュメモリ、または、電気信号、光信号、音波信号またはその他の形態の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号等）によるインターネットを介した情報の送信に用いられる有形の機械可読ストレージを含むとしてよい。このため、コンピュータ可読媒体は、機械（例えば、コンピュータ）が読み出し可能な形態で電子命令または情報を格納または送信するのに適した任意の種類の有形の機械可読媒体を含む。
【０１３７】
本明細書全体を通して、「一実施形態」または「実施形態」という場合、当該実施形態に関連付けて説明している特定の特徴、構造または特性は本開示の少なくとも１つの実施形態に含まれていることを意味する。このため、「一実施形態において」または「実施形態において」という表現は、本明細書全体で何度も登場するが、必ずしも全てが同じ実施形態を意味するものではない。また、特定の特徴、構造または特性は、１または複数の実施形態において任意の適切な方法で組み合わせるとしてよい。
【０１３８】
上述の明細書では、具体的な実施形態例に基づいて詳細に説明した。しかし、添付の請求項に記載している本開示のより広義の意図および範囲から逸脱することなく、さまざまな点で変更および変形が可能であることは明らかである。したがって、明細書および図面は、限定するものではなく例示を目的としたものと考えられたい。さらに、実施形態およびその他の例示を意味する用語を上記で用いているが、必ずしも同じ実施形態または同じ例を意味するものではなく、一の同じ実施形態を意味する場合もあるが、複数の異なる別個の実施形態を意味するとしてもよい。本明細書によれば、以下の各項目に記載の事項もまた開示される。
［項目１］
第１の命令セットアーキテクチャ（第１のＩＳＡ）にしたがって設計されている第１のコアを有する第１のプロセッサモジュールと、
第２のＩＳＡにしたがって設計されている第２のコアを有する第２のプロセッサモジュールと
を備え、
前記第２のプロセッサモジュールは前記第１のプロセッサモジュールと同じダイに製造されている処理デバイス。
［項目２］
前記第１のプロセッサモジュールおよび前記第２のプロセッサモジュールに通信可能に結合されているバスを有するシステムエージェント（ＳＡ）をさらに備える項目１に記載の処理デバイス。
［項目３］
前記バスは、前記第１のコアとの間で複数のメッセージをネイティブ送受信する項目２に記載の処理デバイス。
［項目４］
前記第２のプロセッサモジュールは、前記第２のコアと前記バスとの間で送信される複数のメッセージを変換するバスブリッジを有する項目２または３に記載の処理デバイス。
［項目５］
前記ＳＡはさらに、コンバータを有し、
前記コンバータを介して前記ＳＡは複数の周辺機器に結合されている項目２または３に記載の処理デバイス。
［項目６］
前記同じダイに製造されているシステムオンチップ（ＳｏＣ）デバイスである項目１から３のいずれか一項に記載の処理デバイス。
［項目７］
複数のオペレーティングシステムでポーティングされるコンピューティングデバイスの一部である項目１から３のいずれか一項に記載の処理デバイス。
［項目８］
第１のオペレーティングシステムは、アクティブ化されると、前記第１のプロセッサモジュールで実行され、第２のオペレーティングシステムは、アクティブ化されると、前記第２のプロセッサモジュールで実行される項目１から３のいずれか一項に記載の処理デバイス。
［項目９］
中央演算処理装置（ＣＰＵ）であり、デュアルオペレーティングシステムでポーティングされるコンピューティングデバイスの一部である項目１から３のいずれか一項に記載の処理デバイス。
［項目１０］
前記第１のＩＳＡおよび前記第２のＩＳＡとは異なる第３の命令セットアーキテクチャ（第３のＩＳＡ）にしたがって設計されている第３のコアを有する第３のプロセッサモジュールをさらに備える項目１から３のいずれか一項に記載の処理デバイス。
［項目１１］
前記第３のプロセッサモジュールは、前記第１のコア、前記第２のコアおよび前記第３のコアの間で送信される複数のメッセージを変換する第３のバスブリッジを有する項目１０に記載の処理デバイス。
［項目１２］
第１の命令セットアーキテクチャ（第１のＩＳＡ）にしたがって設計されている第１のコアと、
第２のＩＳＡにしたがって設計されている第２のコアと
を備え、
単一のダイに製造されているシステムオンチップ（ＳｏＣ）デバイスであるプロセッサ。
［項目１３］
前記第１のコアおよび前記第２のコアに通信可能に結合されているバスを有するシステムエージェント（ＳＡ）をさらに備え、
前記バスは前記第１のコアとの間で複数のメッセージをネイティブ送受信する項目１２に記載のプロセッサ。
［項目１４］
前記第２のコアと前記バスとの間に結合されているバスブリッジをさらに備え、
前記バスブリッジは、前記第２のコアと前記バスとの間で送信される複数のメッセージを変換する項目１２または１３に記載のプロセッサ。
［項目１５］
前記ＳＡはさらに、コンバータを有し、
前記コンバータを介して前記ＳＡは複数の周辺機器に結合されている項目１２から１４のいずれか一項に記載のプロセッサ。
［項目１６］
第１のオペレーティングシステムは、アクティブ化されると、前記第１のプロセッサモジュールで実行され、第２のオペレーティングシステムは、アクティブ化されると、前記第２のプロセッサモジュールで実行される項目１２から１４のいずれか一項に記載のプロセッサ。
［項目１７］
前記処理デバイスは、中央演算処理装置（ＣＰＵ）であり、デュアルオペレーティングシステムでポーティングされるコンピューティングデバイスの一部である項目１６に記載のプロセッサ。
［項目１８］
前記第１のＩＳＡおよび前記第２のＩＳＡとは異なる第３の命令セットアーキテクチャ（第３のＩＳＡ）にしたがって設計されている第３のコアをさらに備える項目１２から１４のいずれか一項に記載のプロセッサ。
［項目１９］
前記第３のコアは、前記第１のコア、前記第２のコアおよび前記第３のコアの間で送信される複数のメッセージを変換する第３のバスブリッジを有する項目１２から１４のいずれか一項に記載のプロセッサ。
［項目２０］
中央演算処理装置（ＣＰＵ）においてフォアグラウンド状態で実行されている第１のオペレーティングシステム（第１のＯＳ）から前記ＣＰＵにおいてバックグラウンド状態で実行されている第２のＯＳへと切り替えることを求める要求に応じて、前記ＣＰＵの第１のコアによって、前記第１のＯＳとのみ対応付けられている第１の群のデバイスを決定する段階と、
前記第１の群のデバイスを一時停止させる段階と、
前記第１のＯＳおよび前記第２のＯＳに限定されない第２の群のデバイスを決定する段階と、
前記第２の群のデバイスを前記第２のＯＳ用に構成する段階と、
前記第２のＯＳを前記フォアグラウンド状態にし、前記第１のＯＳを前記バックグラウンド状態にするべく切り替える段階と
を備え、
前記第１のコアは、第１の種類の命令セットアーキテクチャ（ＩＳＡ）にしたがって設計されており、
前記切り替える段階は、第２の種類のＩＳＡにしたがって設計されている前記ＣＰＵの第２のコアをアクティブ化させる段階と、前記第１のコアをアイドル状態にする段階とを有する方法。
［項目２１］
前記第２のＯＳに限定される第３の群のデバイスを決定する段階と、
前記第３の群のデバイスをイネーブルする段階と
をさらに備える項目２０に記載の方法。
［項目２２］
中央演算処理装置（ＣＰＵ）で実行されることに応じて、前記ＣＰＵに方法を実行させるための複数の命令を備える少なくとも１つの機械可読媒体であって、
前記方法は、
前記ＣＰＵにおいてフォアグラウンド状態で実行されている第１のオペレーティングシステム（第１のＯＳ）から前記ＣＰＵにおいてバックグラウンド状態で実行されている第２のＯＳへと切り替えることを求める要求に応じて、前記ＣＰＵの第１のコアによって、前記第１のＯＳとのみ対応付けられている第１の群のデバイスを決定する段階と、
前記第１の群のデバイスを一時停止させる段階と、
前記第１のＯＳおよび前記第２のＯＳに限定されない第２の群のデバイスを決定する段階と、
前記第２の群のデバイスを前記第２のＯＳ用に構成する段階と、
前記第２のＯＳを前記フォアグラウンド状態にし、前記第１のＯＳを前記バックグラウンド状態にするべく切り替える段階とを備え、
前記第１のコアは、第１の種類の命令セットアーキテクチャ（第１のＩＳＡ）にしたがって設計されており、
前記切り替える段階は、第２の種類のＩＳＡにしたがって設計されている前記ＣＰＵの第２のコアをアクティブ化させる段階と、前記第１のコアをアイドル状態にする段階とを有する
少なくとも１つの機械可読媒体。
［項目２３］
前記方法はさらに、
前記第２のＯＳに限定される第３の群のデバイスを決定する段階と、
前記第３の群のデバイスをイネーブルする段階と
を備える項目２２に記載の少なくとも１つの機械可読媒体。
［項目２４］
項目２０または２１に記載の方法を実行するための手段を備える装置。
【図１】
0006309623.tif 000002
【図２Ａ】
0006309623.tif 000003
【図２Ｂ】
0006309623.tif 000004
【図２Ｃ】
0006309623.tif 000005
【図３Ａ】
0006309623.tif 000006
【図３Ｂ】
0006309623.tif 000007
【図４】
0006309623.tif 000008
【図５Ａ】
0006309623.tif 000009
【図５Ｂ】
0006309623.tif 000010
【図６】
0006309623.tif 000011
【図７】
0006309623.tif 000012
【図８】
0006309623.tif 000013
【図９】
0006309623.tif 000014
【図１０】
0006309623.tif 000015
【図１１】
0006309623.tif 000016
【図１２】
0006309623.tif 000017