特許第6309623号(P6309623)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル・コーポレーションの特許一覧

特許6309623複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC)
<>
  • 特許6309623-複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC) 図000002
  • 特許6309623-複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC) 図000003
  • 特許6309623-複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC) 図000004
  • 特許6309623-複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC) 図000005
  • 特許6309623-複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC) 図000006
  • 特許6309623-複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC) 図000007
  • 特許6309623-複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC) 図000008
  • 特許6309623-複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC) 図000009
  • 特許6309623-複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC) 図000010
  • 特許6309623-複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC) 図000011
  • 特許6309623-複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC) 図000012
  • 特許6309623-複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC) 図000013
  • 特許6309623-複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC) 図000014
  • 特許6309623-複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC) 図000015
  • 特許6309623-複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC) 図000016
  • 特許6309623-複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC) 図000017
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6309623
(24)【登録日】2018年3月23日
(45)【発行日】2018年4月11日
(54)【発明の名称】複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC)
(51)【国際特許分類】
   G06F 15/78 20060101AFI20180402BHJP
   G06F 9/54 20060101ALI20180402BHJP
   G06F 9/46 20060101ALI20180402BHJP
【FI】
   G06F15/78 530
   G06F9/46 480F
   G06F9/46 350
   G06F15/78 512
【請求項の数】23
【全頁数】37
(21)【出願番号】特願2016-526923(P2016-526923)
(86)(22)【出願日】2013年12月23日
(65)【公表番号】特表2016-537717(P2016-537717A)
(43)【公表日】2016年12月1日
(86)【国際出願番号】CN2013090225
(87)【国際公開番号】WO2015096001
(87)【国際公開日】20150702
【審査請求日】2016年5月19日
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】チェン、フ タイガー
(72)【発明者】
【氏名】チェン、リアン
(72)【発明者】
【氏名】リン、チュンシャオ
(72)【発明者】
【氏名】ルオ、サイ
(72)【発明者】
【氏名】ティアン、ハイ ゲ
(72)【発明者】
【氏名】ワン、ルイ ガン
(72)【発明者】
【氏名】ガイ、ティン−フーク
【審査官】 清木 泰
(56)【参考文献】
【文献】 米国特許出願公開第2008/0059769(US,A1)
【文献】 米国特許出願公開第2012/0254588(US,A1)
【文献】 特開2008−140078(JP,A)
【文献】 特表2013−539121(JP,A)
【文献】 国際公開第2013/132647(WO,A1)
【文献】 国際公開第2011/061878(WO,A1)
【文献】 特表2010−538371(JP,A)
【文献】 特開2009−093439(JP,A)
【文献】 特開2001−022598(JP,A)
【文献】 特開平07−325788(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F15/78
G06F 9/46− 9/54
G06F15/16−15/177
G06F 9/30− 9/42
(57)【特許請求の範囲】
【請求項1】
第1の命令セットアーキテクチャ(第1のISA)にしたがって設計されている第1のコアを有する第1のプロセッサモジュールと、
第2のISAにしたがって設計されている第2のコア、および、前記第1のISAに対応する複数のメッセージと前記第2のISAに対応する複数のメッセージとの間の変換を行うバスブリッジを有する第2のプロセッサモジュールと、
前記第1のISAに従ってネイティブに通信するバスを有するシステムエージェント(SA)と
を備え、
前記第2のプロセッサモジュールは前記第1のプロセッサモジュールと同じダイに製造されており、
前記バスブリッジは、前記第2のコアのために前記第1のISAに対応する複数のメッセージを前記第2のISAに対応する複数のメッセージに変換することと、前記バスのために前記第2のISAに対応する複数のメッセージを前記第1のISAに対応する複数のメッセージに変換することとの少なくとも一方を実行する処理デバイス。
【請求項2】
前記バスは、前記第1のプロセッサモジュールおよび前記第2のプロセッサモジュールに通信可能に結合されてい請求項1に記載の処理デバイス。
【請求項3】
前記バスは、前記第1のコアとの間で複数のメッセージをネイティブ送受信する請求項2に記載の処理デバイス。
【請求項4】
前記SAはさらに、コンバータを有し、
前記コンバータを介して前記SAは複数の周辺機器に結合されている請求項1から3のいずれか一項に記載の処理デバイス。
【請求項5】
前記同じダイに製造されているシステムオンチップ(SoC)デバイスである請求項1からのいずれか一項に記載の処理デバイス。
【請求項6】
複数のオペレーティングシステムでポーティングされるコンピューティングデバイスの一部である請求項1からのいずれか一項に記載の処理デバイス。
【請求項7】
第1のオペレーティングシステムは、アクティブ化されると、前記第1のプロセッサモジュールで実行され、第2のオペレーティングシステムは、アクティブ化されると、前記第2のプロセッサモジュールで実行される請求項1からのいずれか一項に記載の処理デバイス。
【請求項8】
中央演算処理装置(CPU)であり、デュアルオペレーティングシステムでポーティングされるコンピューティングデバイスの一部である請求項1からのいずれか一項に記載の処理デバイス。
【請求項9】
前記第1のISAおよび前記第2のISAとは異なる第3の命令セットアーキテクチャ(第3のISA)にしたがって設計されている第3のコアを有する第3のプロセッサモジュールをさらに備える請求項1からのいずれか一項に記載の処理デバイス。
【請求項10】
前記第3のプロセッサモジュールは、前記第1のコアと前記第3のコアの間、および、前記第2のコア前記第3のコアの間の少なくとも一方で送信される複数のメッセージを変換する第3のバスブリッジを有する請求項に記載の処理デバイス。
【請求項11】
第1の命令セットアーキテクチャ(第1のISA)にしたがって設計されている第1のコアと、
第2のISAにしたがって設計されている第2のコアであって、前記第1のISAに対応する複数のメッセージと前記第2のISAに対応する複数のメッセージとの間の変換を行うバスブリッジに通信可能に結合されている第2のコアと、
前記第1のISAに従ってネイティブに通信するバスを有するシステムエージェント(SA)と
を備え、
単一のダイに製造されているシステムオンチップ(SoC)デバイスであり、
前記バスブリッジは、前記第2のコアのために前記第1のISAに対応する複数のメッセージを前記第2のISAに対応する複数のメッセージに変換することと、前記バスのために前記第2のISAに対応する複数のメッセージを前記第1のISAに対応する複数のメッセージに変換することとの少なくとも一方を実行するプロセッサ。
【請求項12】
前記バスは、前記第1のコアおよび前記第2のコアに通信可能に結合されており
前記バスは前記第1のコアとの間で複数のメッセージをネイティブ送受信する請求項1に記載のプロセッサ。
【請求項13】
前記SAはさらに、コンバータを有し、
前記コンバータを介して前記SAは複数の周辺機器に結合されている請求項11または12に記載のプロセッサ。
【請求項14】
第1のオペレーティングシステムは、アクティブ化されると、前記第1のコアで実行され、第2のオペレーティングシステムは、アクティブ化されると、前記第2のコアで実行される請求項1から1のいずれか一項に記載のプロセッサ。
【請求項15】
中央演算処理装置(CPU)であり、デュアルオペレーティングシステムでポーティングされるコンピューティングデバイスの一部である請求項1に記載のプロセッサ。
【請求項16】
前記第1のISAおよび前記第2のISAとは異なる第3の命令セットアーキテクチャ(第3のISA)にしたがって設計されている第3のコアをさらに備える請求項1から1のいずれか一項に記載のプロセッサ。
【請求項17】
前記第3のコアに結合されている第3のバスブリッジを更に備え、
前記第3のバスブリッジは、前記第1のコアと前記第3のコアの間、および、前記第2のコア前記第3のコアの間の少なくとも一方で送信される複数のメッセージを変換す請求項1に記載のプロセッサ。
【請求項18】
中央演算処理装置(CPU)においてフォアグラウンド状態で実行されている第1のオペレーティングシステム(第1のOS)から前記CPUにおいてバックグラウンド状態で実行されている第2のOSへと切り替えることを求める要求に応じて、前記CPUの第1のコアによって、前記第1のOSとのみ対応付けられている第1の群のデバイスを決定する段階と、
前記第1の群のデバイスを一時停止させる段階と、
前記第1のOSおよび前記第2のOSに限定されない第2の群のデバイスを決定する段階と、
前記第2の群のデバイスを前記第2のOS用に構成する段階と、
前記第2のOSを前記フォアグラウンド状態にし、前記第1のOSを前記バックグラウンド状態にするべく切り替える段階と
を備え、
前記第1のコアは、第1の種類の命令セットアーキテクチャ(ISA)にしたがって設計されており、
前記切り替える段階は、第2の種類のISAにしたがって設計されている前記CPUの第2のコアをアクティブ化させる段階と、前記第1のコアをアイドル状態にする段階とを有する方法。
【請求項19】
前記第2のOSに限定される第3の群のデバイスを決定する段階と、
前記第3の群のデバイスをイネーブルする段階と
をさらに備える請求項18に記載の方法。
【請求項20】
中央演算処理装置(CPU)で実行されることに応じて、前記CPUに方法を実行させるためのプログラムであって、
前記方法は、
前記CPUにおいてフォアグラウンド状態で実行されている第1のオペレーティングシステム(第1のOS)から前記CPUにおいてバックグラウンド状態で実行されている第2のOSへと切り替えることを求める要求に応じて、前記CPUの第1のコアによって、前記第1のOSとのみ対応付けられている第1の群のデバイスを決定する段階と、
前記第1の群のデバイスを一時停止させる段階と、
前記第1のOSおよび前記第2のOSに限定されない第2の群のデバイスを決定する段階と、
前記第2の群のデバイスを前記第2のOS用に構成する段階と、
前記第2のOSを前記フォアグラウンド状態にし、前記第1のOSを前記バックグラウンド状態にするべく切り替える段階とを備え、
前記第1のコアは、第1の種類の命令セットアーキテクチャ(第1のISA)にしたがって設計されており、
前記切り替える段階は、第2の種類のISAにしたがって設計されている前記CPUの第2のコアをアクティブ化させる段階と、前記第1のコアをアイドル状態にする段階とを有する
プログラム。
【請求項21】
前記方法はさらに、
前記第2のOSに限定される第3の群のデバイスを決定する段階と、
前記第3の群のデバイスをイネーブルする段階と
を備える請求項2に記載のプログラム。
【請求項22】
請求項18または19に記載の方法を実行する手段を有する装置。
【請求項23】
請求項2または2に記載のプログラムを格納しているコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、概して処理デバイスに関し、より具体的には複数の異なる命令セットアーキテクチャ(ISA)にしたがって設計されている複数の異種のコアを含むプロセッサを複数含むシステムオンチップに関する。
【背景技術】
【0002】
ラップトップコンピュータ、タブレットコンピュータまたはスマートフォン等の単一のコンピューティングデバイスを複数のエコシステムまたはオペレーティングシステム(OS)のうちいずれか1つにおいて選択的に動作させることを求めるエンドユーザが存在する。例えば、当該デバイスを、私用では第1のOS(Android(登録商標)等)で動作させ、ビジネス用では第2のOS(Windows(登録商標)等)で動作させることを望む場合がある。
【0003】
複数の異なる種類のOSを、複数の異なる命令セットアーキテクチャ(ISA)にしたがって設計されている複数のプロセッサ上に構築するとしてよい。例えば、Intel(登録商標)Architecture(IA)は、Windows(登録商標)OSを動作させるISAの一種であり、ARM(登録商標)はAndroid(登録商標)を動作させる別の種類のISAである。また、各ISAは、プロセッサ内部のコンポーネント間、または、プロセッサと周辺機器との間の通信インターフェースとして複数の異なる通信プロトコル群を利用する場合がある。現在、デバイスメーカー各社は、一の同じコンピューティングデバイス上で2つのエコシステムを実現するべく、2つの方法のうちいずれか1つを採用している。第1の方法では、デバイスメーカー各社は単に、一のコンピューティングデバイスに対して複数の異なるISAのプロセッサを設計する。例えば、デバイスメーカーは、一のコンピューティングデバイスにおいて一のIAプロセッサおよび一のARM(登録商標)プロセッサを実装して、Windows(登録商標)がフォアフロントOSである場合にWindows(登録商標)アプリケーションをIAプロセッサで実行させ、Android(登録商標)がフォアフロントOSである場合にAndroid(登録商標)アプリケーションをARM(登録商標)プロセッサ上で実行させるとしてよい。これに代えて、デバイスメーカーは、一のコンピューティングデバイスの同種の複数のISAプロセッサの上方で一の仮想マシンを実行させるとしてよい。仮想マシンは、同種の複数のISA命令から複数の異なるエコシステムをエミュレートすることができる。例えば、コンピューティングデバイスは、Windows(登録商標)仮想マシン上でWindows(登録商標)アプリケーションを実行し、Android(登録商標)仮想マシン上でAndroid(登録商標)アプリケーションを実行する一方、コンピューティングデバイスの複数のプロセッサは、複数のIAプロセッサのみ、または、複数のARM(登録商標)プロセッサのみであるとしてよい。
【図面の簡単な説明】
【0004】
本開示は、以下に記載する詳細な説明および本開示のさまざまな実施形態を示す添付図面からより完全に理解されるであろう。しかし、図面は、本開示を具体的な実施形態に限定するものととらえられるべきではなく、説明および理解を目的としたものに過ぎない。
【0005】
図1】一実施形態に係る処理デバイスを示す図である。
【0006】
図2A】一実施形態に係るバスブリッジを含む処理デバイスを示す図である。
【0007】
図2B】一実施形態に係るシステムエージェントコンバータを含む処理デバイスを示す図である。
【0008】
図2C】一実施形態に係る複数のプロセッサモジュールを含む処理デバイスを示す図である。
【0009】
図3A】一実施形態に係る処理デバイスの詳細な概略図である。
【0010】
図3B】別の実施形態に係る処理デバイスの詳細な概略図である。
【0011】
図4】一実施形態に係るデュアルOSコンピューティングデバイスにおいてOSを切り替える方法を示すブロック図である。
【0012】
図5A】本開示の一実施形態が利用されている異種のコアを含むプロセッサのマイクロアーキテクチャを示すブロック図である。
【0013】
図5B】本開示の少なくとも一の実施形態に応じて実装されるインオーダパイプラインおよびレジスタリネーミングステージ、アウトオブオーダ発行/実行パイプラインを示すブロック図である。
【0014】
図6】本開示の一の実施形態に応じたロジックを含むプロセッサのマイクロアーキテクチャを示すブロック図である。
【0015】
図7】本開示の一の実施形態が利用されているシステムを示すブロック図である。
【0016】
図8】本開示の一の実施形態が動作するシステムを示すブロック図である。
【0017】
図9】本開示の一の実施形態が動作するシステムを示すブロック図である。
【0018】
図10】本開示の一の実施形態に応じたシステムオンチップ(SoC)を示すブロック図である。
【0019】
図11】本開示に応じたSoC設計の実施形態を示すブロック図である。
【0020】
図12】コンピュータシステムの一実施形態を示すブロック図である。
【発明を実施するための形態】
【0021】
一の同じデバイス上で2つのエコシステムを実行させる方式は、複数の異なるISAにしたがって設計されている複数のプロセッサが冗長であるために、コストが高いが性能が低く消費電力が高いという問題がある。現在の方式が抱える別の問題点としては、複数の異なるISAマイクロシステムで実行されるバイナリコードの互換性が挙げられる。例えば、ARM(登録商標)プラットフォーム用にコンパイルされたアプリケーションは、ポーティングせずにIAプラットフォームで直接実行することはできない。これまでは、複数の異なる種類のISAにおける互換性の問題を解決するためにはバイナリ変換を利用してきた。しかし、この解決方法には、非ネイティブISA用に記述されたネイティブライブラリをネイティブISAに動的または静的に変換するランタイムソフトウェアが必要である。バイナリ変換では、残念ながら、性能が低下してしまい、全てのケースに対応できるわけではない。
【0022】
複数のエコシステムを実行しているコンピューティングデバイスのエンドユーザは、性能劣化、消費電力およびシステムフットプリントを最小限に抑えつつコンピューティングデバイス上で利用可能な複数の異なる種類のOS間の切り替えを素早く行いたいと考えている。
【0023】
一のコンピューティングデバイス上で複数のエコシステムを効率的に実現するべく、本開示の実施形態は、複数の異種のISAコアを含む中央演算処理装置(CPU)を少なくとも1つ含むシステムオンチップ(SoC)を実現する。異種のコアには、第1の種類のISAにしたがって設計されている少なくとも1つのコア、および、第2の種類のISAにしたがって設計されている少なくとも1つのコアが含まれるとしてよい。尚、第1および第2の種類のISAは異なる。例えば、CPUの第1のコアは複合命令セットコンピューティング(CISC)コアとして設計されるとしてよく、同じCPUの第2のコアは縮小命令セットコンピューティング(RISC)コアとして設計されるとしてよい。より具体的には、第1の種類のISAはIA(登録商標)であってよく、第2の種類のISAはARM(登録商標)であってよい。本願では便宜上ISAの2つの例としてIAおよびARMにしばしば言及するが、本願はこれら2つの具体例に限定されるものではないことに留意されたい。本願の原理は、PowerPC(登録商標)アーキテクチャ等の他の種類のISAにも等しく適用可能である。
【0024】
本開示の複数の実施形態は、一の同じダイに複数の異種のコアを集積化してSoCを形成し、高効率かつ高性能のマルチOS構成またはデュアルOS構成を一のコンピューティングデバイス上で構築するとしてよい。
【0025】
本開示の複数の実施形態は、コスト、消費電力およびフットプリントを低減しつつ、現在の技術に比べて高性能化を実現するという利点を持つ特徴的なアーキテクチャを提供する。
【0026】
以下に記載する実施形態は、コンピューティングプラットフォーム内またはマイクロプロセッサ等の具体的な集積回路を参照しつつ説明しているが、他の実施形態は他の種類の集積回路およびロジックデバイスに適用可能である。本明細書で説明する実施形態の教示内容および技術と同様のものは、他の種類の回路または半導体デバイスに適用され得る。例えば、開示した実施形態は、デスクトップ型のコンピュータシステムまたはUltrabook(商標)に限定されない。そして、手持ちデバイス、タブレット、他の薄型ノートブック、システムオンチップ(SoC)デバイス、および、埋め込みアプリケーション等、他のデバイスにおいても使用され得る。手持ちデバイスの一部の例には、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末(PDA)、および手持ちPCが含まれる。埋め込みアプリケーションは通常、マイクロコントローラ、デジタルシグナルプロセッサ(DSP)、システムオンチップ、ネットワークコンピュータ(NetPC)、セットトップボックス、ネットワークハブ、ワイドエリアネットワーク(WAN)スイッチ、または、以下で教示される機能および処理を実行し得る任意のその他のシステムを含む。
【0027】
以下に記載する複数の実施形態はプロセッサに基づいて説明されているが、他の実施形態は他の種類の集積回路およびロジックデバイスに適用可能である。本開示の実施形態と同様の技法および教示内容は、パイプラインスループットおよび性能を改善することで利益を受けることができる他の種類の回路または半導体デバイスに適用することができる。本開示の実施形態の教示内容は、データ操作を実行する任意のプロセッサまたは機械に適用可能である。本開示は、512ビット、256ビット、128ビット、64ビット、32ビットまたは16ビットのデータ演算を実行するプロセッサまたは機械に限定されるものではなく、データの操作または管理が実行される任意のプロセッサおよび機械に適用することができる。また、以下の説明は例を提供し、添付図面は例示の目的でさまざまな例を示している。しかしながら、これらの例は、本開示の実施形態の全ての可能な実施態様を網羅的に列挙したものではなく、単に本開示の実施形態の例を挙げることを意図したものにすぎないので、限定的に解釈されるべきではない。
【0028】
インターネット、テキスト、およびマルチメディアのアプリケーションにおいて用いられるコンピュータシステムが増加するにつれ、プロセッサのサポートも増加してきた。一実施形態によると、一の命令セットは、データの種類、命令、レジスタアーキテクチャ、アドレッシングモード、メモリアーキテクチャ、割り込みおよび例外ハンドリング、ならびに、外部の入力及び出力(I/O)を含む1または複数のコンピュータアーキテクチャに関連付けることができる。
【0029】
一実施形態によると、命令セットアーキテクチャ(ISA)は、1または複数の命令セットを実装するべく用いられるプロセッサロジックおよび回路を含む、1または複数のマイクロアーキテクチャによって実装されてよい。したがって、複数の異なるマイクロアーキテクチャを有する複数のプロセッサは、一の共通の命令セットの少なくとも一部を共有することができる。例えば、Intel(登録商標)Pentium(登録商標)4プロセッサ、Intel(登録商標)Core(商標)プロセッサおよびアドバンスド・マイクロ・デバイシーズ社(Advanced Micro Devices, Inc.、米国カリフォルニア州サニーベール)のプロセッサは、略同一バージョンのx86命令セット(最近のバージョンでは追加された拡張内容も含む)を実装しているが、内部設計は異なる。同様に、エーアールエム・ホールディングス社(ARM Holdings, Ltd.)、ミップス(MIPS)社、または、両社のライセンシーもしくは採用者等の他のプロセッサ開発企業によって設計されたプロセッサも、共通の命令セットの少なくとも一部を共有し得るが、異なるプロセッサ設計を持つ場合もある。例えば、ISAの同じレジスタアーキテクチャは、専用物理レジスタ、レジスタリネーミングメカニズムを用いた1または複数の動的に割り当てられた物理レジスタ等、新しい技術または公知の技術を用いて複数の異なるマイクロアーキテクチャにおいて複数の異なる方法で実装される場合がある(例えば、レジスタエイリアステーブル(RAT)、リオーダバッファー(ROB)およびリタイアメントレジスタファイルを利用)。一実施形態によると、レジスタには、ソフトウェアプログラマによってアドレス指定が可能または不可能な、1または複数のレジスタ、レジスタアーキテクチャ、レジスタファイル、または他のレジスタセットが含まれるとしてよい。
【0030】
一実施形態によると、命令は1または複数の命令フォーマットを持つとしてよい。一実施形態では、命令フォーマットは、他にも複数の項目があるが、実行される演算と、その演算の実行対象であるオペランドとを指定するさまざまなフィールド(ビット数、ビット位置等)を指すとしてよい。一部の命令フォーマットは、さらに細かく、命令テンプレート(または命令サブフォーマット)によって定義される場合がある。例えば、所与の命令フォーマットの命令テンプレートは、当該命令フォーマットの複数のフィールドの複数の異なるサブセットを含むものとして定義されるとしてもよいし、および/または、異なる解釈をされる所与のフィールドを含むものとして定義されるとしてもよい。一実施形態によると、命令は、命令フォーマットを用いて表され(定義される場合、その命令フォーマットの複数の命令テンプレートのうちの所与の1つにおいて表される)、演算および当該演算の対象のオペランドを指定または特定する。
【0031】
図1は、一実施形態に係る処理デバイス100を示す図である。処理デバイス100は、一の同じダイまたは一の同じ基板に設けられているSoCであってよく、当該SoC上に製造されている中央演算処理装置(CPU)を表すとしてよい。SoCは、一の同じ半導体製造プロセスを用いて高効率に製造された複数の集積回路を含むとしてよい。処理デバイス100は、図1に示すように、第1のプロセッサモジュール102、第2のプロセッサモジュール104、ならびに、バスおよび/または通信ファブリック106を備えるとしてよい。バスおよび/または通信ファブリック106は、プロセッサモジュール102と104との間、および、プロセッサモジュール102、104と、SoC上またはSoC外部の他のコンポーネント(不図示)との間の通信インターフェースを提供する。
【0032】
一実施形態では、プロセッサモジュール102は、第1の種類のISAにしたがって設計されている1または複数の処理コアを含むとしてよく、プロセッサモジュール104は、第2の種類のISAにしたがって設計されている1または複数の処理コアを含むとしてよい。尚、第2の種類は第1の種類とは異なる。ISAの種類には、CISCアーキテクチャまたはRISCアーキテクチャの複数の異なる種類が含まれるとしてよい。例えば、ISAは、IAアーキテクチャ、ARMアーキテクチャおよびPowerPCアーキテクチャのいずれかであってよい。一実施形態によると、プロセッサモジュール102は、Windows(登録商標)OSをサポートするのに特に適したIAにしたがって設計されている複数の処理コアを含むとしてよく、プロセッサモジュール104は、Android(登録商標)OSをサポートするのに特に適したARMにしたがって設計されている複数の処理コアを含むとしてよい。一実施形態によると、マルチエコシステムまたはデュアルエコシステムをサポートしているコンピューティングデバイスは、処理デバイス100を用いて構築されるとしてよい。コンピューティングデバイスがWindows(登録商標)デバイスに切り替えられる場合またはWindows(登録商標)デバイスとして起動される場合、プロセッサモジュール102は、Windows(登録商標)アプリケーションの実行をネイティブにサポートするべくフォアグラウンドでアクティブに実行される一方、プロセッサモジュール104はバックグラウンドで実行されるか、または、アイドル状態を維持するとしてよい。また、コンピューティングデバイスがAndroid(登録商標)デバイスに切り替えられる場合またはAndroid(登録商標)デバイスとして起動される場合、プロセッサモジュール104は、Android(登録商標)アプリケーションの実行をネイティブにサポートするべくフォアグラウンドで実行される一方、プロセッサモジュール102はバックグラウンドで実行されるか、または、アイドル状態を維持するとしてよい。このようにして高効率かつ高性能なデュアルエコシステム型コンピューティングデバイスを実現する。
【0033】
バス106は、データ通信および制御用の信号伝達のためのインターフェースを提供するべく、プロセッサモジュール102、104に結合されているとしてよい。実際には、バス106は、特定の種類のISAにしたがって設計されているとしてよい。このため、複数の異なる種類のISAにしたがって設計されているプロセッサモジュール102、104の間に通信チャネルを設けるためには、データおよびメッセージを変換するための別のモジュールが必要になるとしてもよい。図2Aは、一実施形態に係る、複数の異なるISAコア間の通信のための複数の回路モジュールを含む処理デバイス200を示す図である。図2Aに示すように、処理デバイス200は、図1に図示した処理デバイスと同様に、プロセッサモジュール102、104、ならびに、バスおよび/またはファブリック106を備えるとしてよい。処理デバイス200はさらに、プロセッサモジュール104とバス106との間に結合されているバスブリッジ202を備えるとしてよい。バス106は、プロセッサモジュール102と同種のISAにしたがって設計されているとしてよい。このため、異なる種類のISAのプロセッサモジュール104とは直接通信できないとしてよい。プロセッサモジュール104とバス106との間に結合されているバスブリッジ202は、プロセッサモジュール104からのメッセージを、バス106に適したフォーマットであり、プロセッサモジュール102が理解できるフォーマットに変換するとしてよい。逆に、バスブリッジ202は、バス106を介したプロセッサモジュール102からのメッセージを、プロセッサモジュール104に適したフォーマットに変換するとしてよい。
【0034】
一実施形態によると、プロセッサモジュール102はIA型のコアを有するとしてよく、バス106はIA型のコアからのメッセージを処理するように特に設計されているとしてよい。例えば、バス106は、Intel(登録商標)社のインダイインターコネクト(IDI)メッセージを処理するシステムエージェント(SA)であるとしてよい。プロセッサモジュール104は、IAとは異なる種類のコアを有するとしてよい。一実施形態によると、プロセッサモジュール104内の複数のコアは、ARM型であるとしてよく、アドバンスド・マイクロコントローラ・バス・アーキテクチャ(AMBA)プロトコルに応じたメッセージを通信するよう設計されているとしてよい。バスブリッジ202は、プロセッサモジュール102からのIDIメッセージを、プロセッサモジュール104が読めるようにAMBAメッセージに変換するとしてよく、または逆に、プロセッサモジュール104からのAMBAメッセージを、プロセッサモジュール102が読めるようにIDIメッセージに変換するとしてよい。
【0035】
別の実施形態によると、プロセッサモジュール102は、ARM型の複数のコアを有するとしてよく、バス106は、ARMコアからのメッセージを処理するよう特に設計されているとしてよい。例えば、バス106はAMBAメッセージを処理するSAであってよい。プロセッサモジュール104は、AMBAとは異なる種類のコアを有するとしてよい。一実施形態によると、プロセッサモジュール104内の複数のコアは、IA型であってよく、IDIメッセージに応じたメッセージを通信するよう設計されているとしてよい。バスブリッジ202は、プロセッサモジュール102からのAMBAメッセージを、プロセッサ104が読めるようにIDIメッセージに変換するとしてよく、または逆に、プロセッサモジュール104からのIDIメッセージをプロセッサモジュール102が読めるようにAMBAメッセージに変換するとしてよい。
【0036】
処理デバイス200の複数の異種のコアは、SoC外の周辺機器と通信するとしてよい。図2Bは、一実施形態に係る、コアと周辺機器との間の通信のための回路モジュールを備える処理デバイス200を示す図である。図2Aと比較すると、図2Bに図示した処理デバイス200は、さらにコンバータ204と、処理デバイス200と周辺機器208、210との間でメッセージおよび制御信号を通信するための周辺ブリッジ206とを備えるとしてよい。 コンバータ204は、システムエージェントの一部であってバス106に結合されているとしてよく、周辺ブリッジ206は、コンバータ204と周辺機器208、210との間に結合されているとしてよい。周辺機器208、210は、SoCの一部ではなく、異種の処理モジュール102、104によってまとめて制御されることにより、各周辺機器は処理モジュールのうちの任意の1つによってアドレス指定されるとしてよい。コンバータ204は、処理モジュール102、104内の異種のコアからの複数の異なる種類のメッセージおよび制御信号を周辺ブリッジ206が認識し得るフォーマットに変換するとしてよい。これによって、周辺ブリッジ206は、メッセージおよび制御信号を適切な周辺機器に渡すとしてよい。
【0037】
一実施形態によると、コンバータ204は、複数の異種のコアを含む他のSoCに結合されている周辺機器に対するコアを含むコアに対する/コアからの内部のコマンド/割り込みを処理するとしてよい。この点において、コンバータは第1の種類のコア用に設計された内部のコマンド/割り込みを、第2の種類のコアに合わせるとしてよい。例えば、コンバータ204は、ARMコアと通信するように、IAコア用に設計されているIntel(登録商標)社のオンチップシステムファブリック(IOSF)バスおよび周辺機器を適応させるとしてよい。別の実施形態において、コンバータ204は、コアと周辺機器との間の直接的なデータ接続を管理するとしてよい。例えば、コンバータ204は、周辺機器のメモリマップドI/O(MMIO)レジスタに制御コードを書き込むとしてよい。これによって、第1の種類のISA用に限定して設計された周辺機器は第2の種類のコアとトークをする(メッセージおよび割り込みを送信する)としてよく、第2の種類のISA用に限定して設計された周辺機器は、第1の種類のコアとトークをするとしてよい。
【0038】
図2Aおよび図2Bに示す実施形態は2種類のISAコアを含む処理デバイス200に関して説明しているが、本開示の複数の態様は容易に複数の種類のISAコアにまで拡張されるとしてよい。図2Cは、一実施形態に係る、複数のISAの複数のプロセッサモジュールを有する処理デバイスを示す図である。図2Bと比較すると、図2Cに図示している処理デバイス200はさらに、第3のプロセッサモジュール212および追加バスブリッジ214を備えるとしてよい。プロセッサモジュール212は、プロセッサモジュール102または104のISAとは異なる第3の種類のISAにしたがって設計されているコアを含むとしてよい。プロセッサモジュール212とバス106(プロセッサモジュール102のISAにしたがって設計されている)との間に結合されているバスブリッジ214は、プロセッサモジュール212とバス106との間でメッセージを変換するとしてよい。このため、処理デバイス200は、2種類よりも多い種類の異種のコアを備えるとしてよく、2つよりも多いエコシステムをサポートし得るコンピューティングデバイスに適応するよう設計されているとしてよい。
【0039】
図3Aは、一実施形態に係る処理デバイス300の詳細な概略図である。処理デバイスは、図3Aに示すように、第1のプロセッサモジュール302、第2のプロセッサモジュール304、および、IAシステムエージェント(SA)306を備えるとしてよい。IASA306はさらに、バス/ファブリック(不図示)およびSAコンバータ308を有するとしてよい。プロセッサモジュール302はさらに、1または複数の第1の種類のISAコア、つまり、ISA1コア(IAコア等)310、312、および、IAコア310、312用のデータを格納するために用いられ得るレベル2キャッシュ314を有するとしてよい。プロセッサモジュール304はさらに、1または複数の第2の種類のコア、つまり、ISA2コア(ARMコア等)316、318、レベル2キャッシュ320、バスブリッジ322を有するとしてよい。レベル2キャッシュ320は、ARMコア316、318およびバスブリッジ322用のデータを格納するために用いられるとしてよい。バスブリッジ322は、ARMコア316、318とSA306との間で送信されるメッセージを変換するとしてよい。
【0040】
処理デバイス300はさらに、プロセッサモジュール302、304およびSA306に結合されており、電力管理(PM)リンクを介してプロセッサモジュール302、304に供給される電力を管理する電力コントローラ324を備えるとしてよい。処理デバイス300はさらに、メモリインターフェース(MI)プロトコルを用いてSA306に結合されているメモリコントローラ326を備えるとしてよい。メモリコントローラ326は、メモリデバイス336(DDRメモリ等)へのデータの読み書きを制御するとしてよい。
【0041】
さらに、SA306はコンバータ308を介して周辺機器328−334に結合されるとしてよい。周辺機器は、IA限定、ARM限定、および、限定なしという3つのカテゴリのうち1つに属するとしてよい。IA限定周辺機器は、処理デバイス300がフォアグラウンドでプロセッサモジュール302をアクティブに実行している場合に限り動作する。AMR限定デバイスは、処理デバイス300がフォアグラウンドでプロセッサモジュール304をアクティブに実行している場合に限り動作する。限定なし周辺機器は、プロセッサモジュール302がフォアグラウンドにある場合、または、プロセッサモジュール304がフォアグラウンドにある場合のいずれかの場合で動作するとしてよい。コンバータ308と周辺機器328−334との間の通信は、Intel(登録商標)オンシステムファブリック(IOSF)プロトコルまたはファブリックインターフェース(FI)プロトコルに応じてバスを介して行うとしてよい。
【0042】
動作について説明すると、IAコア310、312は、IDIプロトコルに応じてSA306にメッセージを送信するとしてよい。バスブリッジ322は、IAコア310、312からのIDIメッセージを、ARMコア316、318が読むことが可能なフォーマットに変換するとしてよい。これとは逆に、バスブリッジ322は、ARMコア316、318からのAMBAメッセージを、IDIメッセージに変換して、IDIメッセージをSA306に送信するとしてよい。メッセージは、コアが開始するメモリ処理およびI/O処理、ならびに、エージェントが開始するスヌープおよび割り込み、そして、電力管理インターフェースを含むとしてよい。
【0043】
SA306は、その内部に設けられているIOSFバスを制御するとしてよい。IOSFバスは、SoC上の他のモジュールに結合されているとしてよい。SA306はさらに、複数の異種のコアに対する/複数の異種のコアからの内部のコマンドおよび/または割り込みを処理するとしてよい。SA306内のIOSFバスおよび他のデバイスをARMコア316、318に適応させるべく、SAコンバータ308は、ARMコア316、318用にIOSFバスプロトコルメッセージおよび内部のコマンド/割り込みを変換するとしてよい。
【0044】
一実施形態において、処理デバイス300は、IAコア310、312、および、ARMコア316、318をメモリ336の共有メモリ(SM)部分に直接リンキングするコア間通信トンネルを提供するとしてよい。これによって、複数の異種のコアは、高速でメモリにアクセスするとしてよい。
【0045】
電力コントローラ324は、SA306を介したFIプロトコルメッセージにより、プロセッサモジュール302、304と通信するとしてよい。例えば、電力コントローラは、現在実行中のオペレーティングシステム(OS)の切り替えを求める、フォアグラウンド状態のコアによって生成された要求を受信するとしてよい。この要求に応じて、電力コントローラは、PMリンクを通して、フォアグラウンドのアクティブなコアへの電力供給を低減してアイドル状態とすると同時に、バックグラウンドのコアへの電力供給を増大させてアクティブ状態にする命令を発行するとしてよい。例えば、処理デバイス300がアクティブにIAコア310、312を実行しておりARMコア316、318がアイドル状態である場合、切り替え要求に応じて、電力コントローラ324は、プロセッサモジュール302への電力供給を低減して、プロセッサモジュール304への電力供給を増大させるので、IAコア310、312がアイドル状態になり、ARMコア316,318がアクティブ状態になるとしてよい。
【0046】
処理デバイス300は、図3Aに図示しているように、IAシステムエージェント306を中心に構築される。これに代えて、処理デバイスは他の種類のシステムエージェントを中心として構築されるとしてもよい。図3Bは、一実施形態に係る、ARMシステムエージェントを中心として構築された処理デバイス340を示す図である。処理デバイス340は、図3Bに図示しているように、AMBA等のARM通信プロトコルにしたがって設計されているARMシステムエージェント(SA)346を備えるとしてよい。処理デバイス340はさらに、プロセッサモジュール342、344、電力コントローラ346、および、メモリコントローラ366を備えるとしてよい。プロセッサモジュール342はさらに、1または複数の第2の種類のISAコア、つまり、ISA2コア(ARMコア等)350、352と、レベル2キャッシュ354を有するとしてよく、プロセッサモジュール344はさらに、1または複数の第1の種類のISAコアまたはISA1コア(IAコア等)356、358、レベル2キャッシュ360、および、バスブリッジ362を有するとしてよい。SA346はさらに、ARMバス(不図示)およびコンバータ348を含むとしてよい。SA346はARMコアと協働するよう設計されているので、プロセッサモジュール342はAMBAプロトコルに応じてARM SA346と通信するとしてよい。これとは対照的に、IAコア356、358を含むプロセッサモジュール344は、バスブリッジ362を介してSA346と通信するとしてよい。バスブリッジ362が、IAコアメッセージをAMBAフォーマットに変換するか、または、その逆を行うことにより、プロセッサモジュール342はSA346を介してプロセッサモジュール344との間でメッセージをやり取りするとしてよい。同様に、コンバータ348は、IAコア356、358からのコマンドおよび/または割り込みを、IAデバイスとして設計されている周辺機器328−334用に変換するとしてよく、また、この逆を行うとしてよい。実際には、処理デバイス340は、図3Aに図示した処理デバイス300と同様に動作するとしてよい。
【0047】
デュアルOS型またはマルチOS型として構成されているコンピューティングデバイスは、ハードウェア共有アクセス可能モード、ソフトウェア共有アクセス可能モード、または、アクセス制限モードで動作するとしてよい。ハードウェア共有アクセス可能モードでは、コンピューティングデバイスは、複数のOS(例えば、Windows(登録商標)およびAndroid(登録商標)の両方)を同時にアクティブに動作させるとしてよい。ハードウェア共有アクセス可能モードを実現するためには、各処理モジュール(図3Aに示す302、304、または、図3Bに示す342、344等)には対応するドライバが設けられるとしてよい。コアと周辺機器との間におけるメッセージのやり取りおよびイベントのディスパッチを制御するSA308(または348)に埋め込まれているコンバータ308(または348)は、同時に実行されているOSのそれぞれに対する割り込みを多重化するとしてよい。
【0048】
ソフトウェア共有アクセス可能モードでは、コンピューティングデバイスは、複数のOSを仮想化によって同時にアクティブに動作させるとしてよい。複数の異種のコアの間において、OS間のメッセージを転送するべく、仮想ドライバを構築するとしてよい。ハードウェア共有アクセス可能モードおよびソフトウェア共有アクセス可能モードのどちらも同時に複数のOSを実行させるが、周辺機器に関して、OSのうちの1つはマスターであり、残りのOSはスレーブであるとしてよい。マスターであるOSが主に周辺機器を管理するか、マスターであるOSだけが周辺機器にアクセスするか、または、マスターであるOSはスレーブであるOSと共に周辺機器を共有するとしてよい。
【0049】
アクセス制限モードでは、コンピューティングデバイスは、フォアグラウンドにおいて1つのOSのみを実行するとしてよく、残りのOSはバックグラウンドまたはアイドル状態にするとしてよい。フォアグラウンドOSは、フォアグラウンドOSに対してネイティブなコアを含むプロセッサモジュール上で実行されるとしてよい。例えば、Windows(登録商標)およびそのアプリケーションは、フォアグラウンドにある場合、IAコアで実行されるとしてよく、Android(登録商標)およびそのアプリケーションは、フォアグラウンドにある場合、ARMコアで実行されるとしてよい。切り替え要求に応じて、フォアグラウンドOSおよびバックグラウンドOSを切り替えるとしてよい。
【0050】
図4は、一実施形態に係るデュアルOSコンピューティングデバイスにおいてOSを切り替える方法を示すブロック図である。方法400は、ハードウェア(例えば、回路、専用ロジック、プログラマブルロジック、マイクロコード等)、ソフトウェア(処理デバイス、汎用コンピュータシステムまたは専用マシンで実行される命令等)、ファームウェア、または、これらの組み合わせを含み得る処理ロジックによって実行されるとしてよい。一実施形態によると、方法400は、部分的に、図1、2A−2C、3A−3Bを参照しつつ上述したプロセッサモジュール102、104、212、302、304、342、344のいずれか1つの処理ロジックによって実行されるとしてよい。
【0051】
説明を簡略化するべく、方法400は一連の動作を含むものとして図示および説明する。しかし、本開示に係る動作は、順序を変えて、および/または、同時に実行することが可能であり、本明細書で説明および図示していない他の動作を含むとしてもよい。さらに、開示した主題に応じて方法400を実施する上で図示した動作の全てを実行しない場合もある。さらに、当業者であれば方法400は、上記に代えて、状態図により一連の相互に関連した状態として、または、一連のイベントとして表され得ることを、理解および確認するであろう。
【0052】
図4を参照すると、処理ロジックはOSを切り替えるよう求める要求を受信するとしてよい。当該要求は、コンピューティングデバイスのユーザが発行する命令に応じて、または、コンピューティングデバイス内のロジックによってトリガされたイベントに応じて、または、スケジュール(毎日または毎月の決まった時刻等)に応じて生成されるとしてよい。当該要求に応じて、402において、現在実行しているOSを実行している処理ロジックは、現在実行されているOSにおいてのみ動作するよう設計されている第1の群のデバイスを決定し、第1の群のデバイスを一時停止させる命令を発行するとしてよい。一実施形態によると、この決定は、デバイス群の識別情報と、これらのデバイスのカテゴリを特定しているテーブルとをマッチングさせることによって行われるとしてよい。404において、現在実行されているOSを実行している処理ロジックはさらに、上記のテーブルに問い合わせることによって、現在実行しているフォアグラウンドOSまたはバックグラウンドOSのいずれにも限定されない第2の群のデバイスを決定し、システムエージェント内のコンバータによって、第2の群のデバイスがバックグラウンドOSにおいて実行されるのに適切な状態になるよう第2の群のデバイスを再構成するとしてよい。この再構成は、これらのデバイスのMMIOレジスタに再書き込みを行うことを含むとしてよい。406において、現在実行されているフォアグラウンドOSを実行している処理ロジックは、テーブルに問い合わせることによって、バックグラウンドOSでのみ動作するように構成されているため現在アイドル状態である第3の群のデバイスを決定し、コンバータを用いて、第3の群のデバイスをイネーブル/再開するとしてよい。408において、現在実行しているOSを実行しているプロセッサは、バックグラウンドOSをフォアグラウンド状態になるようアクティブ化すると同時に、既に実行していたフォアグラウンドOSを非アクティブ化するとしてよい。OSを切り替えることでさらに、本開示の実施形態において示しているように、複数の異なるプロセッサモジュールにおける複数の異種のコアを切り替えるとしてよい。
【0053】
図5Aは、本開示の一実施形態に応じた複数の異種のコアを含む一の処理デバイスを実装するプロセッサ500のマイクロアーキテクチャを示すブロック図である。具体的には、プロセッサ500は、本開示の少なくとも1つの実施形態に応じたプロセッサに含まれるべき、インオーダアーキテクチャコアおよびレジスタリネーミングロジック、アウトオブオーダ発行/実行ロジックを図示する。
【0054】
プロセッサ500は、実行エンジンユニット550に結合されているフロントエンドユニット530を含む。両者は、メモリユニット570に結合されている。プロセッサ500は、縮小命令セットコンピューティング(RISC)コア、複合命令セットコンピューティング(CISC)コア、超長命令語(VLIW)コア、または、ハイブリッド型のコアあるいはその他の種類のコアを含むとしてよい。更に別の選択肢として、プロセッサ500は、特定用途コア、例えば、ネットワークコアまたは通信コア、圧縮エンジン、グラフィクスコア等を含むとしてよい。一実施形態によると、プロセッサ500は、マルチコアプロセッサであってもよいし、または、マルチプロセッサシステムの一部であってもよい。
【0055】
フロントエンドユニット530は、命令キャッシュ部534に結合されている分岐予測部532を含む。命令キャッシュ部534は、命令変換ルックアサイドバッファ(TLB)536に結合されている。TLB536は、命令フェッチ部538に結合されている。命令フェッチ部538は、デコード部540に結合されている。デコード部540(デコーダとしても知られている)は、命令をデコードして、出力として1または複数のマイクロ演算、マイクロコードエントリポイント、マイクロ命令、他の命令、または、他の制御信号を生成するとしてよい。 これらは、元の命令からデコードされているか、または、元の命令を他の方法で反映しているか、または、元の命令から導き出されたものである。デコーダ540は、さまざまな異なるメカニズムを用いて実装されるとしてよい。適切なメカニズムの例としては、これらに限定されないが、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ(PLA)、マイクロコードリードオンリーメモリ(ROM)等が挙げられる。命令キャッシュ部534はさらに、メモリユニット570に結合される。デコード部540は、実行エンジンユニット550内のリネーム/アロケータ部552に結合されている。
【0056】
実行エンジンユニット550は、リタイアメント部554および一群の1または複数のスケジューラ部556に結合されているリネーム/アロケータ部552を含む。スケジューラ部556は、任意の数の異なるスケジューラを表しており、リザベーションステーション(reservations stations:RS)、セントラルインストラクションウィンドウ(central instruction window)等を含む。スケジューラ部556は、物理レジスタファイル部558に結合されている。各物理レジスタファイル部558は、1または複数の物理レジスタファイルを表し、それぞれの物理レジスタファイルは、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点等、または、ステータス(例えば、次に実行すべき命令のアドレスである命令ポインタ)等の1または複数の異なる種類のデータを格納している。物理レジスタファイル部558は、レジスタリネーミングおよびアウトオブオーダ実行が実現され得るさまざまな方法(例えば、リオーダバッファおよびリタイアメントレジスタファイルを利用、フューチャーファイル、履歴バッファおよびリタイアメントレジスタファイルを利用、レジスタマップおよび一群のレジスタを利用等)を図示するべく、リタイアメント部554と重なるものとして図示されている。
【0057】
一実装例によると、プロセッサ500は、図1、2A−2C、3Aおよび3Bを参照しつつ説明したプロセッサ100、200、300および340と同じであってよい。
【0058】
一般的に、アーキテクチャレジスタは、プロセッサの外部から、または、プログラマから可視状態である。レジスタは、任意の公知の特定の種類の回路に限定されるものではない。本明細書で説明しているようにデータの格納および提供を行うことが可能である限り、さまざまな異なる種類のレジスタを適宜利用することができる。適切なレジスタの例としては、これらに限定されないが、専用物理レジスタ、レジスタリネーミングを利用した動的に割り当てられた物理レジスタ、専用物理レジスタおよび動的に割り当てられた物理レジスタの組み合わせ等が挙げられる。リタイアメント部554および物理レジスタファイル部558は、実行クラスタ560に結合されている。実行クラスタ560は、一群の1または複数の実行部562および一群の1または複数のメモリアクセス部564を含む。実行部562は、さまざまな演算(例えば、シフト、加算、減算、乗算)を実行し、さまざまな種類のデータ(例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点)に対して演算を行うとしてよい。
【0059】
一部の実施形態は特定の機能または特定の群の機能に特化した多くの実行部を含む一方で、他の実施形態が含む実行部は1つのみ、または、全てが全ての機能を実行する複数の実行部を含むとしてよい。スケジューラ部556、物理レジスタファイル部558および実行クラスタ560は、複数とすることが可能であるとして図示されている。これは、特定の実施形態では特定の種類のデータ/処理用に複数の別個のパイプラインを作成するためである(例えば、それぞれが自分用のスケジューラ部、物理レジスタファイル部および/または実行クラスタを有するスカラ整数パイプライン、スカラ浮動小数点/パックド整数/パックド浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、および/または、メモリアクセスパイプライン、メモリアクセスパイプラインを別個に作成する場合には、当該パイプラインの実行クラスタのみがメモリアクセス部564を持つ特定の実施形態が実現される)。また、複数の別個のパイプラインを利用する場合には、これらのパイプラインのうち1または複数はアウトオブオーダ発行/実行型であり、残りはインオーダ型であると理解されたい。
【0060】
一群のメモリアクセス部564がメモリユニット570に結合されている。メモリユニット570は、幾つかの例を挙げると、データプリフェッチ部580、データTLB部572、データキャッシュ部(DCU)574およびレベル2(L2)キャッシュ部576を含むとしてよい。一部の実施形態によると、DCU574は、レベル1データキャッシュ(L1キャッシュ)としても知られている。DCU574は、複数の未処理のキャッシュミスを処理して、入力されるストアおよびロードに対して対応し続けるとしてよい。DCU574はさらに、キャッシュコヒーレンシが維持されるようサポートする。データTLB部572は、仮想アドレス空間および物理アドレス空間をマッピングすることによって仮想アドレス変換速度を改善するために用いられるキャッシュである。一の実施形態例によると、メモリアクセス部564は、ロード部、ストアアドレス部、および、ストアデータ部を含むとしてよい。ロード部、ストアアドレス部、および、ストアデータ部はそれぞれ、メモリユニット570内のデータTLB部572に結合されている。L2キャッシュ部576は、キャッシュの1または複数の他のレベルに結合されているとしてよく、結果的にメインメモリに結合されているとしてよい。
【0061】
一実施形態によると、データプリフェッチ部580は、プログラムが消費しようとしているデータを自動的に予測することによって、DCU574に対してデータを投機的にロード/プリフェッチする。プリフェッチとは、メモリ階層のあるメモリ位置(例えば、低レベルキャッシュまたはメモリ)に格納されているデータを、プロセッサが実際に当該データを要求するより前に、プロセッサにより近い(例えば、アクセスレイテンシがより少ない)高レベルメモリ位置へと移動させることを意味するとしてよい。より具体的に説明すると、プリフェッチとは、戻されている途中の特定のデータへの要求をプロセッサが発行するより前に、低レベルキャッシュ/メモリの1つから、データキャッシュおよび/またはプリフェッチバッファへと、データを早めに取得することを意味するとしてよい。
【0062】
プロセッサ500は、1または複数の命令セット(例えば、x86命令セット(新規バージョンでは追加された拡張内容を含む))、ミップステクノロジーズ(MIPS Technologies)社(米国カリフォルニア州サニーベール)のMIPS命令セット、エーアールエムホールディングス(ARM Holdings)社(米国カリフォルニア州サニーベール)のARM命令セット(NEON等の任意の追加拡張内容を含む)をサポートするとしてよい。
【0063】
コアはマルチスレッディング(2またはそれ以上の群の演算またはスレッドを並列に実行する)をサポートし得るものであって、さまざまな方法でサポートし得ると理解されたい。例えば、タイムスライスマルチスレッディング、同時マルチスレッディング(一の物理コアが複数のスレッドのそれぞれについて一の論理コアを提供することで、当該物理コアが同時マルチスレッディングを行う)、または、これらの組み合わせ(例えば、Intel(登録商標)社のHyperthreading技術で採用されているようにタイムスライス型のフェッチおよびデコードを行った後で同時マルチスレッディングを行う)等の方法を含む。
【0064】
レジスタリネーミングはアウトオブオーダ実行に関連付けて説明しているが、レジスタリネーミングはインオーダアーキテクチャで利用され得ると理解されたい。図示したプロセッサの実施形態は一の別個の命令およびデータのキャッシュ部と共有L2キャッシュ部とをさらに備えるとしてもよいが、別の実施形態は命令およびデータの両方について、例えば、一のレベル1(L1)内部キャッシュ等の内部キャッシュを持つとしてもよいし、または、内部キャッシュの複数のレベルを持つとしてもよい。一部の実施形態によると、当該システムでは、内部キャッシュと、コアおよび/またはプロセッサに対して外部の外部キャッシュとを組み合わせるとしてよい。これに代えて、キャッシュは全てコアおよび/またはプロセッサに対して外部にあるとしてもよい。
【0065】
図5Bは、本開示の一部の実施形態に応じた、図5Aの処理デバイス500によって実装されるインオーダパイプラインと、レジスタリネーミングステージ、アウトオブオーダ発行/実行パイプラインとを示すブロック図である。図5Bにおいて実線で囲むボックスはインオーダパイプラインを示し、点線で囲むボックスはレジスタリネーミング、アウトオブオーダ発行/実行パイプラインを示す。図5Bにおいて、プロセッサパイプライン500は、フェッチステージ502、レングスデコードステージ504、デコードステージ506、割り当てステージ508、リネーミングステージ510、スケジューリング(ディスパッチまたは発行とも呼ばれる)ステージ512、レジスタ読み出し/メモリ読み出しステージ514、実行ステージ516、書き戻し/メモリ書き込みステージ518、例外ハンドリングステージ522、および、コミットステージ524を含む。一部の実施形態において、ステージ502−524の順序は、図示したものと異なるとしてもよく、図5Bに図示した特定の順序に限定されるものではない。
【0066】
図6は、本開示の一実施形態に応じた、複数のハイブリッドコアを含むプロセッサ600のマイクロアーキテクチャを示すブロック図である。一部の実施形態によると、一実施形態に係る命令は、バイト、ワード、ダブルワード、クワッドワード等のサイズを持つと同様に、単精度および倍精度の整数および浮動小数点(FP)のデータタイプ等のデータタイプであるデータ要素に対して演算を行うように実現され得る。一実施形態によると、インオーダフロントエンド601は、実行すべき命令をフェッチして、プロセッサパイプラインの後のステージで当該命令を利用するよう準備を整えるプロセッサ600の一部である。
【0067】
フロントエンド601は、複数の部を含むとしてよい。一実施形態によると、命令プリフェッチ部626は、メモリから命令をフェッチして、命令デコーダ628に供給し、命令デコーダ628が命令をデコードまたは解釈する。例えば、一実施形態によると、デコーダは、受信した命令を、「マイクロ命令」または「マイクロ処理」(micro opまたはμopとも呼ばれる)と呼ばれる機械が実行可能な1または複数の処理にデコードする。他の実施形態では、デコーダは命令をパーシングして、一実施形態に係る処理を実行するべくマイクロアーキテクチャによって利用される対応するデータおよび制御フィールド、ならびに、オペコードを得る。一実施形態によると、トレースキャッシュ630は、デコードされたμopを取得してアセンブルし、実行に備えてμopキュー634においてプログラムの順序付けられたシーケンスまたはトレース(program ordered sequences or traces)を作成する。トレースキャッシュ630が複雑な命令を発見すると、マイクロコードROM632が、当該処理を完了させるために必要なμopを提供する。
【0068】
一部の命令は一のmicro opに変換されるが、他の命令には、処理を完全に完了させるために複数のmicro opを必要とするものもある。一実施形態によると、命令を完了させるために必要なmicro opが4個を超える場合、当該命令を実行するためにデコーダ628はマイクロコードROM632にアクセスする。一実施形態について、命令デコーダ628で処理するべく、命令を少数のmicro opにデコードし得る。別の実施形態では、処理を完了させるために必要なmicro opが多数である場合には、命令をマイクロコードROM632に格納し得る。トレースキャッシュ630は、マイクロコードROM632から、一実施形態に係る1または複数の命令を完了させるべく、マイクロコードシーケンスを読み出すための正しいマイクロ命令ポインタを決定するべくエントリポイントプログラマブルロジックアレイ(PLA)を参照する。マイクロコードROM632が一の命令について複数のmicro opの順序決めを終了した後、機械のフロントエンド601はトレースキャッシュ630からmicro opのフェッチを再開する。
【0069】
アウトオブオーダ実行エンジン603は、実行に備えて命令を準備する場所である。アウトオブオーダ実行ロジックは、命令がパイプラインを進んでいき実行に向けてスケジューリングされるにあたって、性能を最適化するように命令の流れをスムーズにすると共にリオーダするべく多くのバッファを有している。アロケータロジックは、各μopが実行のために必要とする機械のバッファおよびリソースを割り当てる。レジスタリネーミングロジックは、ロジックレジスタをレジスタファイル内のエントリにリネームする。アロケータはさらに、メモリスケジューラ、高速スケジューラ602、低速/汎用浮動小数点スケジューラ604および単純浮動小数点スケジューラ606といった命令スケジューラの前に、1つがメモリ処理、1つが非メモリ処理用である2つのμopキューのうち一方において、各μopについてエントリを割り当てる。μopスケジューラ602、604、606は、これらのスケジューラに依存している入力レジスタオペランドソースの準備が整っているか否か、および、μopが処理を完了させるために必要とする実行リソースが利用可能であるか否かに基づいて、μopの実行の用意が整うタイミングを決定する。一実施形態に係る高速スケジューラ602はメインクロックサイクルの2分の1毎にスケジューリングすることができるが、他のスケジューラはメインプロセッサクロックサイクル毎にしかスケジューリングできない。スケジューラは、実行に向けてμopをスケジューリングするべく、ディスパッチポートをアービトレーションする。
【0070】
レジスタファイル608、610は、スケジューラ602、604、606の間に存在し、実行部612、614、616、618、620、622、624は実行ブロック611内に存在する。整数演算および浮動小数点演算のそれぞれについて別個のレジスタファイル608、610が設けられている。一実施形態に係るレジスタファイル608、610はそれぞれ、レジスタファイルにまだ書き込まれていない完了したばかりの結果を新しい依存性μopにバイパスまたは転送し得るバイパスネットワークをさらに含む。整数レジスタファイル608および浮動小数点レジスタファイル610はさらに、互いにデータを通信することが可能である。一実施形態において、整数レジスタファイル608を2つの別個のレジスタファイルに分割して、一方のレジスタファイルはデータの下位32ビット用に、もう一方のレジスタファイルはデータの上位32ビット用にする。一実施形態に係る浮動小数点レジスタファイル610は、浮動小数点命令は通常、オペランドのビット幅が64ビットから128ビットであるので、エントリのビット幅が128ビットである。
【0071】
実行ブロック611は、実行部612、614、616、618、620、622、624を含み、これらの実行部で命令を実際に実行する。この部分には、マイクロ命令が実行する必要がある整数および浮動小数点のデータのオペランドの値を格納しているレジスタファイル608、610が含まれる。一実施形態に係るプロセッサ600は、アドレス生成部(AGU)612、AGU614、高速ALU616、高速ALU618、低速ALU620、浮動小数点ALU622、浮動小数点移動部624といった複数の実行部を含む。一実施形態について、浮動小数点実行ブロック622、624は、浮動小数点演算、MMX演算、SIMD演算およびSSE演算ならびにその他の演算を実行する。一実施形態に係る浮動小数点ALU622は、除算、平方根、および、剰余のmicro opを実行する64ビット×64ビットの浮動小数点除算器を含む。本開示の実施形態について、浮動小数点値を含む命令は浮動小数点ハードウェアで処理されるとしてよい。
【0072】
一実施形態によると、ALU演算は高速ALU実行部616、618に渡される。一実施形態に係る高速ALU616、618は、実質的なレイテンシをクロックサイクルの半分として高速処理を実行することができる。一実施形態において、大半の複雑な整数演算は、低速ALU620に渡される。これは、低速ALU620はレイテンシが長い種類の演算のための整数実行ハードウェアである乗算器、シフト、フラグロジックおよび分岐処理等を含むためである。メモリのロード/ストア処理は、AGU612、614によって実行される。一実施形態において、整数ALU616、618、620は、64ビットのデータオペランドに対して整数演算を実行することに関連して説明する。別の実施形態では、ALU616、618、620は、16、32、128、256等、さまざまなデータビットをサポートするように実現されるとしてよい。同様に、浮動小数点ユニット622、624は、さまざまなビット幅を持つ多くのオペランドをサポートするように実現されるとしてよい。一実施形態によると、浮動小数点ユニット622、624は、SIMD命令およびマルチメディア命令と共に、128ビットの幅のパックドデータオペランドに対して演算を行うことができる。
【0073】
一実施形態によると、μopスケジューラ602、604、606は、親のロードが実行を終了する前に、依存性の処理をディスパッチする。プロセッサ600においてuopが投機的にスケジューリングされて実行されるので、プロセッサ600はさらにメモリミスを処理するロジックを含む。データロードミスがデータキャッシュにおいて発生すると、パイプラインにおいてインフライトの依存性の処理が発生し、スケジューラに一時的に正しくないデータが残ってしまう。リプレイメカニズムは、正しくないデータを利用した命令を追跡して再実行する。リプレイが必要なのは依存性の処理のみであり、非依存性の処理は完了させてよい。プロセッサの一実施形態に係るスケジューラおよびリプレイメカニズムはさらに、テキスト文字列比較処理について命令シーケンスを取得するよう設計されている。
【0074】
プロセッサ600はさらに、本開示の複数の実施形態によると、メモリディスアンビギュエーションのためにストアアドレス予測を実施するロジックを含む。一実施形態によると、プロセッサ600の実行ブロック611は、メモリディスアンビギュエーションのためのストアアドレス予測を実施するストアアドレス予測部(不図示)を含むとしてよい。
【0075】
「レジスタ」という用語は、オペランドを特定するべく命令の一部として用いられるオンボードプロセッサ格納位置を意味するとしてよい。言い換えると、レジスタは(プログラマから見て)プロセッサの外部から利用可能なものであってよい。しかし、一実施形態に係るレジスタの意味は、特定の種類の回路に限定されるべきではない。一実施形態に係るレジスタは、データの格納および提供が可能であり、本明細書に記載した機能を実行することが可能である。本明細書で説明するレジスタは、任意の数の異なる技術、例えば、専用物理レジスタ、レジスタリネーミングを利用する動的割り当て物理レジスタ、専用物理レジスタおよび動的割り当て物理レジスタの組み合わせ等を利用して、プロセッサ内の回路によって実現され得る。一実施形態において、整数レジスタは32ビットの整数データを格納している。一実施形態に係るレジスタファイルはさらに、パックドデータ用に8個のマルチメディアSIMDレジスタを含む。
【0076】
以下に記載する説明においては、レジスタとは、Intel Corporation社(米国カリフォルニア州サンタクララ)のMMX技術で実現可能なマイクロプロセッサにおいてパックドデータを保持するよう設計されているデータレジスタ、例えば、64ビット幅のMMXTMレジスタ(一部の例では「mm」レジスタとも呼ぶ)を意味すると理解されたい。これらのMMXレジスタは、整数形式および浮動小数点形式の両方があり、SIMD命令およびSSE命令を伴うパックドデータ要素で動作させることが可能である。同様に、SSE2、SSE3、SSE4またはそれ以上(「SSEx」と総称する)の技術に基づく128ビット幅のXMMレジスタもまた、このようなパックドデータオペランドを保持するために用いられ得る。一実施形態によると、パックドデータおよび整数データを格納する際、レジスタはこれら2種類のデータを区別する必要がない。一実施形態によると、整数および浮動小数点は、同じレジスタファイル内に含まれているか、または、複数の異なるレジスタファイル内に含まれている。さらに、一実施形態によると、浮動小数点データおよび整数データは、複数の異なるレジスタに格納されているとしてもよいし、または、同じ複数のレジスタに格納されているとしてもよい。
【0077】
ここで図7を参照すると、本開示の一実施形態が利用されるシステム700を示すブロック図が図示されている。図7に示すように、マルチプロセッサシステム700は、ポイントツーポイントインターコネクトシステムであり、第1のプロセッサ770および第2のプロセッサ780がポイントツーポイントインターコネクト750を介して結合されている。図示されているプロセッサは770、780の2つのみであるが、本開示の実施形態の範囲はこれに限定されないと理解されたい。他の実施形態では、1または複数のプロセッサがさらに所与のプロセッサに含まれるとしてよい。一実施形態によると、マルチプロセッサシステム700は本明細書で説明したように、複数のハイブリッドコアを実現するとしてよい。
【0078】
プロセッサ770および780はそれぞれ、統合メモリコントローラユニット772および782を含むものとして図示されている。プロセッサ770はさらに、バスコントローラユニットの一部として、ポイントツーポイント(P−P)インターフェース776および778を含む。同様に、第2のプロセッサ780は、P−Pインターフェース786および788を含む。プロセッサ770、780は、P−Pインターフェース回路778、788を用いてポイントツーポイント(P−P)インターフェース750を介して情報をやり取りするとしてよい。図7に図示しているように、IMC772および782は、プロセッサを対応するメモリ、つまり、メモリ732およびメモリ734に結合している。メモリ732およびメモリ734は、メインメモリのうちそれぞれのプロセッサにローカルに取り付けられている部分であるとしてよい。
【0079】
プロセッサ770、780はそれぞれ、個別のP−Pインターフェース752、754を介して、ポイントツーポイントインターフェース回路776、794、786、798を用いて、チップセット790との間で情報をやり取りするとしてよい。チップセット790はさらに、高性能グラフィクスインターフェース739を介して高性能グラフィクス回路738との間で情報をやり取りするとしてよい。
【0080】
共有キャッシュ(不図示)は、いずれかのプロセッサに含まれるとしてもよいし、または、両方のプロセッサの外部に設けられるとしてもよい。しかし、P−Pインターコネクトを介してプロセッサと接続されており、一方または両方のプロセッサのローカルキャッシュ情報は、プロセッサが低電力モードに入ると、共有キャッシュに格納されるとしてよい。
【0081】
チップセット790は、インターフェース796を介して第1のバス716に結合されているとしてよい。一実施形態によると、第1のバス716は、ペリフェラルコンポーネントインターコネクト(PCI)バスであってよく、または、PCI Expressバス、または、その他の第3世代I/Oインターコネクトバス等のバスであってもよい。しかし、本開示の範囲はこれに限定されない。
【0082】
図7に示すように、さまざまなI/Oデバイス714が、バスブリッジ718と同様に、第1のバス716に結合されているとしてよい。バスブリッジ718は第1のバス716を第2のバス720に結合している。一実施形態によると、第2のバス720は、低ピンカウント(LPC)バスであってよい。第2のバス720に結合されているさまざまなデバイスには、例えば、一実施形態によると、キーボードおよび/またはマウス722、通信デバイス727、および、命令/コードおよびデータ730を含み得る、ディスクドライブまたはその他の大容量ストレージデバイス等のストレージユニット728が含まれるとしてよい。さらに、オーディオI/O724が第2のバス720に結合されているとしてよい。尚、他のアーキテクチャも可能であることに留意されたい。例えば、図7に示すポイントツーポイントアーキテクチャに代えて、システムはマルチドロップバスまたはその他の同様のアーキテクチャを実現するとしてよい。
【0083】
ここで図8を参照すると、本開示の一実施形態が動作し得るシステム800を示すブロック図である。システム800は、1または複数のプロセッサ810、815を含むとしてよく、これらはグラフィクスメモリコントローラハブ(GMCH)820に結合される。プロセッサ815を追加するか否かは任意であるが、この特徴は図8において点線で表している。一実施形態によると、プロセッサ810、815は、本開示の複数の実施形態に係る複数のハイブリッドコアを実現する。
【0084】
プロセッサ810、815はそれぞれ、上述したように、回路、集積回路、プロセッサ、および/または、シリコン集積回路の何らかの変形であってよい。しかし、統合グラフィクスロジックおよび統合メモリ制御部がプロセッサ810、815内に存在する可能性は低いことに留意されたい。図8は、GMCH820がメモリ840に結合されている様子を図示している。メモリ840は、例えば、ダイナミックランダムアクセスメモリ(DRAM)であるとしてよい。DRAMは、少なくとも1つの実施形態において、不揮発性キャッシュと対応付けられているとしてよい。
【0085】
GMCH820は、チップセットであってもよく、または、チップセットの一部であってもよい。GMCH820は、プロセッサ810、815と通信するとしてよく、プロセッサ810、815とメモリ840との間のやり取りを制御する。GMCH820はさらに、プロセッサ810、815とシステム800の他の構成要素との間の加速バスインターフェースとして機能するとしてもよい。少なくとも1つの実施形態において、GMCH820は、フロントサイドバス(FSB)895等のマルチドロップバスを介してプロセッサ810、815と通信する。
【0086】
さらに、GMCH820は、ディスプレイ845(フラットパネルまたはタッチスクリーンディスプレイ等)に結合されている。GMCH820は、統合グラフィクスアクセラレータを含むとしてよい。GMCH820はさらに、入出力(I/O)コントローラハブ(ICH)850に結合されている。ICH850は、さまざまな周辺機器をシステム800に結合させるために用いられるとしてよい。図8の実施形態で例示されているものとして、外部グラフィクスデバイス860がある。外部グラフィクスデバイス860は、ディスクリートなグラフィクスデバイスであってよく、他の周辺機器870と共にICH850に結合されている。
【0087】
また、システム800には、プロセッサが追加されるとしてもよく、または、異なるプロセッサが設けられているとしてもよい。例えば、追加されるプロセッサ815には、プロセッサ810と同一の追加プロセッサ、プロセッサ810とは異種または非対称な追加プロセッサ、アクセラレータ(例えば、グラフィクスアクセラレータまたはデジタルシグナルプロセッシング(DSP)ユニット等)、フィールドプログラマブルゲートアレイ、または、任意のその他のプロセッサが含まれるとしてよい。プロセッサ810と815との間には、アーキテクチャ、マイクロアーキテクチャ、熱特性、消費電力特性等の広範囲にわたる特性のメトリックに関してさまざまな相違点が存在し得る。これらの相違点は実質的に、プロセッサ810、815の間の非対称性および異種性として現れるとしてよい。少なくとも1つの実施形態について、さまざまなプロセッサ810、815が一の同じダイパッケージ内に存在するとしてよい。
【0088】
ここで図9を参照すると、本開示の一実施形態が動作し得るシステム900を示すブロック図が図示されている。図9は、プロセッサ970、980を図示している。一実施形態によると、プロセッサ970、980は上述しているように複数のハイブリッドコアを実現するとしてよい。プロセッサ970、980はそれぞれ、統合メモリおよびI/O制御ロジック(CL)972および982を含むとしてよく、ポイントツーポイント(P−P)インターフェース978および988の間で、ポイントツーポイントインターコネクト950を介して互いに通信し合う。プロセッサ970、980はそれぞれ、図示されているように、ポイントツーポイントインターコネクト952および954を介して、それぞれのP−Pインターフェース976から994、P−Pインターフェース986から998を介して、チップセット990と通信する。少なくとも1つの実施形態において、CL972、982は、統合メモリコントローラユニットを含むとしてよい。CL972、982は、I/O制御ロジックを含むとしてよい。図示しているように、メモリ932、934がCL972、982に結合されており、I/Oデバイス914がさらに制御ロジック972、982に結合されている。レガシーI/Oデバイス915は、インターフェース996を介してチップセット990に結合されている。
【0089】
実施形態は、多くの異なる種類のシステムで実現されるとしてよい。図10は、本開示の一実施形態に係るSoC1000を示すブロック図である。点線で囲まれたボックスは、より進化したSoCにおいて任意で有する特徴である。図10において、インターコネクト部1012は、一群の1または複数のコア1002A−Nおよび共有キャッシュユニット1006を含むアプリケーションプロセッサ1020、システムエージェントユニット1010、バスコントローラユニット1016、統合メモリコントローラユニット1014、統合グラフィクスロジック1008、スチルカメラおよび/またはビデオカメラの機能を実現する画像プロセッサ1024、ハードウェアオーディオアクセラレーションを実現するオーディオプロセッサ1026およびビデオエンコード/デコードアクセラレーションを実現するビデオプロセッサ1028を含み得る一群または1または複数のメディアプロセッサ1018、スタティックランダムアクセスメモリ(SRAM)ユニット1030、ダイレクトメモリアクセス(DMA)ユニット1032、ならびに、1または複数の外部ディスプレイに結合されているディスプレイユニット1040に結合されている。一実施形態によると、メモリモジュールは統合メモリコントローラユニット1014に含まれるとしてよい。別の実施形態において、メモリモジュールは、メモリへのアクセスおよび/または制御に用いられるSoC1000の1または複数の他のコンポーネントに含まれているとしてもよい。アプリケーションプロセッサ1020は、本明細書において実施形態で説明しているように、ハイブリッドコアを実現するべくストアアドレス予測部を含むとしてよい。
【0090】
メモリ階層は、コア内の1または複数のレベルのキャッシュ、一群または1または複数の共有キャッシュユニット1006、および、一群の統合メモリコントローラユニット1014に結合されている外部メモリ(不図示)を含む。一群の共有キャッシュユニット1006は、1または複数の中間レベルキャッシュ、例えば、レベル2(L2)、レベル3(L3)、レベル4(L4)または他のレベルのキャッシュ、ラストレベルキャッシュ(LLC)、および/または、これらの組み合わせを含むとしてよい。
【0091】
一部の実施形態によると、コア1002A−Nのうち1または複数はマルチスレッディングが可能である。システムエージェント1010は、 コア1002A−Nを協働させると共に動作させるコンポーネントを含む。システムエージェントユニット1010は、例えば、電力制御ユニット(PCU)およびディスプレイユニットを含むとしてよい。PCUは、コア1002A−Nおよび統合グラフィクスロジック1008の電力状態を制御するために必要なロジックおよびコンポーネントであってもよいし、または、これらのロジックおよびコンポーネントを含むとしてもよい。ディスプレイユニットは、外部に接続されている1または複数のディスプレイを駆動させるためのユニットである。
【0092】
コア1002A−Nは、アーキテクチャおよび/または命令セットに関して、同種であってもよいし、または、異種であってもよい。例えば、コア1002A−Nの一部はインオーダ型であって、他はアウトオブオーダ型であってもよい。別の例を挙げると、コア1002A−Nのうち2つ以上は同じ命令セットを実行可能である一方、他のコアはその命令セットの一部分のみを実行可能であるか、または、別の命令セットを実行可能であるとしてよい。
【0093】
アプリケーションプロセッサ1020は、汎用プロセッサであってよく、例えばCore(商標)i3、i5、i7、コア2 Duoおよびコア2 Quad、Xeon(商標)、Itanium(商標)、Atom(商標)またはQuark(商標)プロセッサ、であってよい。これらは、Intel(登録商標)Corporation(米国カリフォルニア州サンタクララ)社製である。これに代えて、アプリケーションプロセッサ1020は、エー・アール・エム・ホールディングス(ARM Holdings(登録商標)Ltd,)社、ミップス(MIPS(商標))社等の別の会社製のものであってもよい。アプリケーションプロセッサ1020は、特定用途向けプロセッサであってよく、例えば、ネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、コプロセッサ、埋め込みプロセッサ等であってよい。アプリケーションプロセッサ1020は、1または複数のチップ上で実現されるとしてよい。アプリケーションプロセッサ1020は、例えばBiCMOS、CMOSまたはNMOS等の数多くの処理技術のいずれかを用いた1または複数の基板の一部であってよく、および/または、そのような1または複数の基板上で実現されるとしてもよい。
【0094】
図11は、本開示に係るシステムオンチップ(SoC)構成の実施形態を示すブロック図である。具体例を挙げると、SoC1100はユーザイクイップメント(UE)に含まれる。一実施形態によると、UEはエンドユーザが通信のために利用するデバイスであればどのようなデバイスであってもよく、例えば、手持ち型電話、スマートフォン、タブレット、超薄型ノートブック、ブロードバンドアダプタ付のノートブック、または、任意のその他の同様の通信デバイスであってよい。多くの場合、UEは基地局または基地ノードに接続されている。基地局または基地ノードは、GSM(登録商標)ネットワークにおける移動局(MS)に本質的に対応し得る。
【0095】
なお、SoC1100は、1106および1107という2つのコアを含む。コア1106および1107は、一の命令セットアーキテクチャに準拠しているとしてよい。例えば、Intel(登録商標)Architecture Core(商標)型のプロセッサ、アドバンスド・マイクロ・デバイシーズ(Advanced Micro Devices, Inc.(AMD))社製のプロセッサ、ミップス(MIPS)型のプロセッサ、ARM型のプロセッサ設計、または、その顧客、ならびに、ライセンシーもしくは採用者が提供するものであってよい。コア1106および1107は、システム1100の他の部分と通信するべく、バスインターフェースユニット1109およびL2キャッシュ1110に対応付けられているキャッシュ制御1108に結合されている。インターコネクト1110は、IOSF、AMBAまたはその他の上述したインターコネクト等であり、上述の開示内容の1または複数の態様を実現し得るオンチップインターコネクトを含む。一実施形態によると、コア1106、1107は、本明細書の実施形態において説明しているように、ハイブリッドコアを実現するとしてよい。
【0096】
インターコネクト1110は、他のコンポーネントに対する通信チャネルを提供する。他のコンポーネントには、例えば、サブスクライバ・アイデンティティ・モジュール(SIM)カードとやり取りを行うためのSIM1130、SoC1100を初期化してブートするべくコア1106および1107によって実行されるブートコードを保持するためのブートROM1135、外部メモリ(例えば、DRAM1160)とやり取りを行うためのSDRAMコントローラ1140、不揮発性メモリ(例えば、フラッシュ1165)とやり取りを行うためのフラッシュコントローラ1145、周辺機器とやり取りを行うための周辺機器制御(PC)1150(例えば、シリアルペリフェラルインターフェース)、入力(例えば、タッチによってイネーブルされる入力)を表示および受信するためのビデオコーデック1120およびビデオインターフェース1125、グラフィクス関連の算出処理を実行するGPU1115等が含まれる。これらのインターフェースのいずれかが本明細書に記載している開示内容の複数の態様を組み込んでいるとしてよい。また、システム1100は、Bluetooth(登録商標)モジュール1170、3Gモデム1175、GPS1180およびWiFi1185等、通信用の周辺機器を図示している。
【0097】
図12は、機械に本明細書で説明した方法のうち1または複数の方法を実行させるための一群の命令が実行され得るコンピュータシステム1200の形態の一例としての機械を示す図である。別の実施形態では、当該機械は、LAN、イントラネット、エクストラネットまたはインターネットにおいて、他の機械に接続されている(例えば、ネットワーク化)としてよい。機械は、クライアントサーバネットワーク環境においてサーバまたはクライアントデバイスの機能を持つものとして動作するとしてよい。または、ピアツーピア(または分散型)ネットワーク環境においてピアマシンとして動作するとしてよい。機械は、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、携帯電話、ウェブ機器、サーバ、ネットワークルーター、スイッチまたはブリッジ、あるいは、当該機械が行うべき動作を特定している一群の命令を(順次またはそれ以外の方式で)実行可能な任意の機械であってよい。また、図示されている機械は1つのみであるが、「機械」という用語は任意の機械の一群を含むものと解釈されるべきであり、このような一群の機械は個別または協働して一群(または複数の群の)命令を実行して本明細書で説明した方法のうち任意の1または複数の方法を実行する。
【0098】
コンピュータシステム1200は、処理デバイス1202、メインメモリ1204(例えば、リードオンリーメモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)(例えば、シンクロナスDRAM(SDRAM)またはDRAM(RDRAM)等)、スタティックメモリ1206(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)等)およびデータストレージデバイス1218を含む。これらは、バス1230を介して互いに通信する。
【0099】
処理デバイス1202は、1または複数の汎用処理デバイス、例えば、マイクロプロセッサ、中央演算処理装置等を表す。より具体的には、処理デバイスは、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピュータ(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサまたは他の命令セットを実装しているプロセッサ、あるいは、複数の命令セットの組み合わせを実装しているプロセッサであってよい。処理デバイス1202はさらに、1または複数の特定用途向け処理デバイス、例えば、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、または、ネットワークプロセッサ等であってよい。一実施形態によると、処理デバイス1202は1または複数の処理コアを含むとしてよい。処理デバイス1202は、本明細書で説明した演算およびステップを実行するべく処理ロジック1226を実行するよう構成されている。一実施形態において、処理デバイス1202は、本開示の複数の実施形態に基づき本明細書で説明したっハイブリッドコアを実現する、図1を参照しつつ説明したプロセッサアーキテクチャ100と同じである。
【0100】
コンピュータシステム1200はさらに、ネットワーク1220に通信可能に結合されているネットワークインターフェースデバイス1208を含むとしてよい。コンピュータシステム1200はさらに、ビデオディスプレイユニット1210(例えば、液晶ディスプレイ(LCD)または陰極線管(CRT))、英数字入力デバイス1212(例えば、キーボード)、カーソル制御デバイス1214(例えば、マウス)、および、信号生成デバイス1216(例えば、スピーカ)を含むとしてよい。さらに、コンピュータシステム1200は、グラフィクス処理ユニット1222、ビデオ処理ユニット1228、および、オーディオ処理ユニット1232を含むとしてよい。
【0101】
データストレージデバイス1218は、本明細書で説明した機能で構成される方法のうち任意の1または複数の方法を実現する、例えば、上述したようにメモリディスアンビギュエーションのためのストアアドレス予測を実行するソフトウェア1226が格納されている機械アクセス可能記憶媒体1224を含むとしてよい。ソフトウェア1226はさらに、全体的または少なくとも部分的に、メインメモリ1204内に命令1226として設けられているとしてよく、および/または、コンピュータシステム1200による実行時には処理ロジック1226として処理デバイス1202内に設けられているとしてよい。メインメモリ1204および処理デバイス1202もまた、機械アクセス可能記憶媒体を構成している。
【0102】
機械可読記憶媒体1224もまた、本開示の実施形態に基づき説明したようにハイブリッドコアのためのストアアドレス予測を実現する命令1226を格納するために用いられるとしてよい。機械アクセス可能記憶媒体1128は実施形態例において1つの媒体であるとして図示されているが、「機械アクセス可能記憶媒体」という用語は、1または複数の群の命令を格納する1または複数の媒体(例えば、中央集権型または分散型のデータベース、および/または、対応付けられたキャッシュおよびサーバ)を含むものと解釈されるべきである。「機械アクセス可能記憶媒体」という用語は、機械に実行させるべく一群の命令を格納、エンコードまたは保持することが可能であり、機械に本開示に係る方法のうち任意の1または複数の方法を実行させる任意の媒体を含むものとも解釈されたい。このため、「機械アクセス可能記憶媒体」という用語は、これらに限定されないが、ソリッドステートメモリ、光媒体および磁気媒体を含むものと解釈されたい。
【0103】
以下に記載する例はその他の実施形態に関する。例1は、第1の命令セットアーキテクチャ(ISA)にしたがって設計されている第1のコアを含む第1のプロセッサモジュールと、第2のISAにしたがって設計されている第2のコアを含む第2のプロセッサモジュールとを備える処理デバイスであって、第2のプロセッサモジュールは第1のプロセッサモジュールと同じダイ上に製造されている。
【0104】
例2では、例1の主題は任意で、第1および第2のプロセッサモジュールに通信可能に結合されているバスを含むシステムエージェント(SA)を含むとしてよい。
【0105】
例3において、例2の主題は任意で、バスが第1のコアとの間でメッセージをネイティブ送受信するよう設計されている特徴を持つとしてよい。
【0106】
例4において、例2および3のいずれか一方の主題は任意で、第2のプロセッサモジュールは第2のコアとバスとの間で送信されるメッセージを変換するバスブリッジを含むという特徴を持つとしてよい。
【0107】
例5において、例2および3のいずれか一方の主題は任意で、SAはさらにコンバータを含み、当該コンバータを介してSAは複数の周辺機器に結合されているという特徴を持つとしてよい。
【0108】
例6において、例1から3のいずれか1つの主題は任意で、処理デバイスは一の同じダイに製造されたシステムオンチップ(SoC)デバイスという特徴を持つとしてよい。
【0109】
例7において、例1から3のいずれか1つの主題は任意で、処理デバイスは、複数のオペレーティングシステムでポーティングされるコンピューティングデバイスの一部であるという特徴を持つとしてよい。
【0110】
例8において、例1から3のいずれか1つの主題は任意で、第1のオペレーティングシステムは、アクティブ化されると、第1のプロセッサモジュールで実行され、第2のオペレーティングシステムは、アクティブ化されると、第2のプロセッサモジュールで実行されるという特徴を持つとしてよい。
【0111】
例9において、例8の主題は任意で、処理デバイスは中央演算処理装置(CPU)であり、デュアルオペレーティングシステムでポーティングされたコンピューティングデバイスの一部であるという特徴を持つとしてよい。
【0112】
例10において、例1から3のいずれか1つの主題は任意でさらに、第1および第2のISAとは異なる第3の命令セット(ISA)にしたがって設計されている第3のコアを含む第3のプロセッサモジュールを含むとしてよい。
【0113】
例11において、例1から3のいずれか1つの主題は任意で、第3のプロセッサモジュールは、第1、第2および第3のコアの間で送信されるメッセージを変換する第3のバスブリッジを含むという特徴を持つとしてよい。
【0114】
例12は、第1の命令セットアーキテクチャ(ISA)にしたがって設計されている第1のコアと、第2のISAにしたがって設計されている第2のコアとを含むプロセッサである。当該プロセッサは、一のダイに製造されているシステムオンチップ(SoC)デバイスである。
【0115】
例13において、例13の主題は任意でさらに、第1および第2のコアに通信可能に結合されているバスを含むシステムエージェント(SA)を含むとしてよい。当該バスは、第1のコアとの間でメッセージをネイティブ送受信するよう設計されている。
【0116】
例14において、例12および13のいずれか1つの主題は任意でさらに、第2のコアと上記のバスとの間に結合されているバスブリッジを含むとしてよい。当該バスブリッジは、第2のコアとバスとの間で送信されるメッセージを変換する。
【0117】
例15において、例12から14のいずれか1つの主題は任意で、SAはさらにコンバータを有し、当該コンバータを介してSAは複数の周辺機器に結合されているという特徴を持つとしてよい。
【0118】
例16において、例12から14のいずれか1つの主題は任意で、第1のオペレーティングシステムは、アクティブ化されると、第1のプロセッサモジュールにおいて実行され、第2のオペレーティングシステムは、アクティブ化されると、第2のプロセッサモジュールで実行されるという特徴を持つとしてよい。
【0119】
例17において、例16の主題は任意で、処理デバイスは中央演算処理装置(CPU)であり、デュアルオペレーティングシステムでポーティングされたコンピューティングデバイスの一部であるという特徴を持つとしてよい。
【0120】
例18において、例12から14のいずれか1つの主題はさらに、第1および第2のISAとは異なる第3の命令セット(ISA)にしたがって設計されている第3のコアを含むとしてよい。
【0121】
例19において、例12から14のいずれか1つの主題は任意で、第3のコアは、第1、第2および第3のコアの間で送信されるメッセージを変換する第3のバスブリッジを含むという特徴を持つとしてよい。
【0122】
例20は、中央演算処理装置(CPU)においてフォアグラウンドで実行されている第1のオペレーティングシステム(OS)からCPUにおいてバックグラウンドで実行されている第2のOSへと切り替えることを求める要求に応じて、CPUの第1のコアによって、第1のOSとのみ対応付けられている第1の群のデバイスを決定する段階を含む方法である。第1のコアは、第1の種類の命令セットアーキテクチャ(ISA)にしたがって設計され、第1の群のデバイスは第1のOS用にのみ用いられる。当該方法はさらに、第1の群のデバイスを一時停止させる段階と、第1のOSおよび第2のOSに限定されない第2の群のデバイスを決定する段階と、第2の群のデバイスを第2のOS用に再構成する段階と、第2のOSをフォアグラウンド状態にし、第1のOSをバックグラウンド状態にするべく切り替える段階とを備え、切り替える段階は、第2の種類のISAにしたがって設計されているCPUの第2のコアをアクティブ化させることと、第1のコアをアイドル状態にすることとを含む。
【0123】
例21において、例20の主題は任意で、第2のOS専用の第3の群のデバイスを決定する段階と、第3の群のデバイスをイネーブルする段階とを含むとしてよい。
【0124】
例22は、中央演算処理装置(CPU)で実行されることに応じて当該CPUに方法を実行させる複数の命令を格納している非一時的コンピュータ可読媒体である。当該方法は、中央演算処理装置(CPU)においてフォアグラウンドで実行されている第1のオペレーティングシステム(OS)からCPUにおいてバックグラウンドで実行されている第2のOSへと切り替えることを求める要求に応じて、CPUの第1のコアによって、第1のOSとのみ対応付けられている第1の群のデバイスを決定する段階を含む方法である。第1のコアは、第1の種類の命令セットアーキテクチャ(ISA)にしたがって設計されており、第1の群のデバイスは第1のOS用にのみ用いられる。当該方法はさらに、第1の群のデバイスを一時停止させる段階と、第1のOSおよび第2のOSに限定されない第2の群のデバイスを決定する段階と、第2の群のデバイスを第2のOS用に再構成する段階と、第2のOSをフォアグラウンド状態にし、第1のOSをバックグラウンド状態にするべく切り替える段階とを備え、切り替える段階は、第2の種類のISAにしたがって設計されているCPUの第2のコアをアクティブ化させることと、第1のコアをアイドル状態にすることとを含む。
【0125】
例23において、例22の主題は任意でさらに、第2のOS専用の第3の群のデバイスを決定する段階と、第3の群のデバイスをイネーブルする段階とを含むとしてよい。
【0126】
例24は、中央演算処理装置(CPU)においてフォアグラウンドで実行されている第1のオペレーティングシステム(OS)からCPUにおいてバックグラウンドで実行されている第2のOSへと切り替えることを求める要求に応じて、第1のOSとのみ対応付けられている第1の群のデバイスを決定する手段を含む装置である。第1のコアは、第1の種類の命令セットアーキテクチャ(ISA)にしたがって設計されている。当該装置はさらに、第1の群のデバイスを一時停止させる手段と、第1のOSおよび第2のOSに限定されない第2の群のデバイスを決定する手段と、第2の群のデバイスを第2のOS用に構成する手段と、第2のOSをフォアグラウンド状態にし、第1のOSをバックグラウンド状態にするべく切り替える手段とを備え、切り替えることは、第2の種類のISAにしたがって設計されているCPUの第2のコアをアクティブ化させることと、第1のコアをアイドル状態にすることとを含む。
【0127】
例25において、例24の主題は任意でさらに、第2のOS専用の第3の群のデバイスを決定する手段と、第3の群のデバイスをイネーブルする手段とを含むとしてよい。
【0128】
本開示は限られた数の実施形態に基づいて説明してきたが、当業者であれば、上記の説明から数多くの変更および変形に想到するであろう。以下に記載する請求項はそのような変更および変形も全て本開示の真の意図および範囲に含むことを意図している。
【0129】
設計は、作成、シミュレーション、製造とさまざまな段階を経るとしてよい。設計内容を表すデータは、多くの方法で設計内容を表現するとしてよい。第1に、シミュレーションで有用性が高いが、ハードウェアはハードウェア記述言語またはその他の機能記述言語を用いて表現されるとしてよい。また、ロジックゲートおよび/またはトランジスタゲートによる回路レベルのモデルは、設計プロセスの一部の段階において生成されるとしてよい。さらに、多くの設計は、いずれかの段階において、ハードウェアモデルにおけるさまざまなデバイスの物理的配置を表すデータのレベルに到達する。従来の半導体製造技術が利用される場合、ハードウェアモデルを表すデータは、集積回路を製造するために用いられるマスクのための複数の異なるマスク層上にさまざまなフィーチャが存在するか、または、存在しないかを特定したデータであってよい。どのように設計を表現するにしても、データは任意の形態の機械可読媒体に格納されるとしてよい。メモリ、または、ディスク等の磁気ストレージあるいは光学ストレージが、機械可読媒体であってよい。当該媒体は、情報を送信するべく変調された、または、その他の方法で生成された光波または電波によって送信される当該情報を格納する。コードまたは設計内容を特定または搬送する搬送波である電波が送信されると、当該電気信号の複製、バッファリングまたは再送が実行される限りにおいて、新しい複製が作成される。このため、通信プロバイダまたはネットワークプロバイダは、有形の機械可読媒体に、少なくとも一時的に、本開示の実施形態に係る技術を具現化する情報であって、搬送波にエンコードされている情報等の物品を格納するとしてよい。
【0130】
本明細書で用いられる場合、「モジュール」は、ハードウェア、ソフトウェアおよび/またはファームウェアの任意の組み合わせを意味する。一例を挙げると、モジュールは、マイクロコントローラ等のハードウェアを含み、当該マイクロコントローラは、当該マイクロコントローラで実行されるように適応化されているコードを格納している非一時的媒体に対応付けられている。このため、モジュールという場合、一実施形態においては、非一時的媒体で保持されるコードを認識および/または実行するよう特に構成されているハードウェアを意味する。さらに、別の実施形態によると、モジュールと言及する場合、所定の処理を行うべくマイクロコントローラによって実行されるよう特に適応化されたコードを含む非一時的媒体を意味する。そして、推測され得るであろうが、さらに別の実施形態では、(本例において)「モジュール」という用語は、マイクロコントローラおよび非一時的媒体の組み合わせを意味するとしてよい。多くの場合、別個のものとして図示されているモジュールの境界は、一般的には異なっていたり、重なる可能性もある。例えば、第1および第2のモジュールは、ハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせを共有するとしてもよいし、独立したハードウェア、ソフトウェアまたはファームウェアを保持する場合もある。一実施形態によると、「ロジック」という用語を用いる場合、トランジスタ、レジスタ、または、プログラマブルロジックデバイス等の他のハードウェア等のハードウェアを含む。
【0131】
一実施形態において「するように構成されている」という表現を用いる場合、装置、ハードウェア、ロジックまたは素子を、指定または決定されたタスクを実行するように、配置、組み立て、製造、販売、輸入および/または設計することを意味する。本例において、装置またはその構成要素は、動作していなくても、指定されたタスクを実行するよう設計、結合および/または相互接続されているのであれば、指定されたタスクを実行する「ように構成されている」。純粋に一例として、ロジックゲートは、動作時に0または1を提供するとしてよい。しかし、クロックに対してイネーブル信号を提供する「よう構成されている」ロジックゲートは、1または0を提供する可能性のある全てのロジックゲートを含むものではない。そうではなく、ロジックゲートは、動作時に1または0の出力によってクロックをイネーブルするように何らかの方法で結合されているものである。繰り返しになるが、「ように構成されている」という表現を用いる場合、動作していることを要件とせず、装置、ハードウェアおよび/または素子の潜在的な状態に焦点を当てており、この潜在的な状態において、当該装置、ハードウェアおよび/または素子は、動作する場合には、特定のタスクを実行できるよう設計されていることに留意されたい。
【0132】
また、一実施形態において、「するべく(to)」、「することが可能な/できる(capable of/to)」および/または「するよう動作可能(operable to)」といった表現を用いる場合、所定の方法での利用を可能とするように設計されている何らかの装置、ロジック、ハードウェアおよび/または素子を意味する。上述したように、一実施形態において、「するべく(to)」、「できる(capable to)」または「するよう動作可能(operable to)」といった表現を用いる場合、装置、ロジック、ハードウェアおよび/または素子の潜在的な状態を意味することに留意されたい。当該装置、ロジック、ハードウェアおよび/または素子は、動作していないが、特定の方法で装置が利用できるように設計されている。
【0133】
本明細書で用いる場合、「値(value)」とは、数、状態、論理状態またはバイナリ論理状態の公知の表現方法を全て含む。多くの場合、論理レベル、論理値またはロジック値といった用語を用いる場合、「1」および「0」として言及することもあり、単にバイナリ論理状態を表す。例えば、1はHigh論理レベルを意味し、0はLow論理レベルを意味する。一実施形態において、トランジスタまたはフラッシュセル等のストレージセルは、一の論理値または複数の論理値を保持することが可能であるとしてよい。しかし、コンピュータシステムでは値は他の方法を用いても表現されてきた。例えば、10進数の10は、バイナリ値では910、16進数ではAで表されるとしてよい。このため、「値」は情報を意味し、コンピュータシステムで保持可能であればどのような方法で表現されるとしてもよい。
【0134】
さらに、状態は、値または値の一部で表現されるとしてよい。一例を挙げると、論理値「1」等の第1の値は、デフォルト状態または初期状態を表すとしてよく、論理値「0」等の第2の値は非デフォルト状態を表すとしてよい。また、「リセット」および「セット」という用語は、一実施形態において、デフォルトの値または状態、および、更新後の値または状態をそれぞれ意味する。例えば、デフォルト値は、High論理値、つまり、「リセット」を含み、一方で、更新後の値は、Low論理値、つまり、「セット」を含む。複数の値の任意の組み合わせを用いて任意の数の状態を表し得ることに留意されたい。
【0135】
上述した方法、ハードウェア、ソフトウェア、ファームウェアまたはコードの実施形態は、処理要素によって実行可能な機械アクセス可能媒体、機械可読媒体、コンピュータアクセス可能媒体またはコンピュータ可読媒体に格納されている命令またはコードによって実現されるとしてよい。非一時的機械アクセス可能/可読媒体は、コンピュータまたは電子システム等の機械によって読み出すことが可能な形態で情報を提供(つまり、格納および/または送信)する任意のメカニズムを含む。例えば、非一時的機械アクセス可能媒体は、スタティックRAM(SRAM)またはダイナミックRAM(DRAM)等のランダムアクセスメモリ(RAM)、ROM、磁気記憶媒体または光学記憶媒体、フラッシュメモリデバイス、電気ストレージデバイス、光学ストレージデバイス、音波ストレージデバイス、一時的な(搬送された)信号(例えば、搬送波、赤外線信号、デジタル信号)から受信した情報を保持するためのその他の形態のストレージデバイス等を含む。これらの一時的な信号は、自身から情報を受信する非一時的媒体とは区別される。
【0136】
本開示の実施形態を実行するためにロジックをプログラミングするために用いられる命令は、システム内のメモリ、例えば、DRAM、キャッシュ、フラッシュメモリまたはその他のストレージに格納されるとしてよい。さらに、命令は、ネットワークを介して、または、他のコンピュータ可読媒体を用いて、分配させることが可能である。このため、機械可読媒体は、機械(例えば、コンピュータ)が読み出すことが可能な形態で情報を格納または送信するための任意のメカニズムを含むとしてよい。これらに限定されないが、フロッピー(登録商標)ディスケット、光ディスク、コンパクトディスクリードオンリーメモリ(CD−ROM)、および、光磁気ディスク、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラム可能リードオンリーメモリ(EPROM)、電気的消去可能プログラム可能リードオンリーメモリ(EEPROM)、磁気カードまたは光カード、フラッシュメモリ、または、電気信号、光信号、音波信号またはその他の形態の伝搬信号(例えば、搬送波、赤外線信号、デジタル信号等)によるインターネットを介した情報の送信に用いられる有形の機械可読ストレージを含むとしてよい。このため、コンピュータ可読媒体は、機械(例えば、コンピュータ)が読み出し可能な形態で電子命令または情報を格納または送信するのに適した任意の種類の有形の機械可読媒体を含む。
【0137】
本明細書全体を通して、「一実施形態」または「実施形態」という場合、当該実施形態に関連付けて説明している特定の特徴、構造または特性は本開示の少なくとも1つの実施形態に含まれていることを意味する。このため、「一実施形態において」または「実施形態において」という表現は、本明細書全体で何度も登場するが、必ずしも全てが同じ実施形態を意味するものではない。また、特定の特徴、構造または特性は、1または複数の実施形態において任意の適切な方法で組み合わせるとしてよい。
【0138】
上述の明細書では、具体的な実施形態例に基づいて詳細に説明した。しかし、添付の請求項に記載している本開示のより広義の意図および範囲から逸脱することなく、さまざまな点で変更および変形が可能であることは明らかである。したがって、明細書および図面は、限定するものではなく例示を目的としたものと考えられたい。さらに、実施形態およびその他の例示を意味する用語を上記で用いているが、必ずしも同じ実施形態または同じ例を意味するものではなく、一の同じ実施形態を意味する場合もあるが、複数の異なる別個の実施形態を意味するとしてもよい。本明細書によれば、以下の各項目に記載の事項もまた開示される。
[項目1]
第1の命令セットアーキテクチャ(第1のISA)にしたがって設計されている第1のコアを有する第1のプロセッサモジュールと、
第2のISAにしたがって設計されている第2のコアを有する第2のプロセッサモジュールと
を備え、
前記第2のプロセッサモジュールは前記第1のプロセッサモジュールと同じダイに製造されている処理デバイス。
[項目2]
前記第1のプロセッサモジュールおよび前記第2のプロセッサモジュールに通信可能に結合されているバスを有するシステムエージェント(SA)をさらに備える項目1に記載の処理デバイス。
[項目3]
前記バスは、前記第1のコアとの間で複数のメッセージをネイティブ送受信する項目2に記載の処理デバイス。
[項目4]
前記第2のプロセッサモジュールは、前記第2のコアと前記バスとの間で送信される複数のメッセージを変換するバスブリッジを有する項目2または3に記載の処理デバイス。
[項目5]
前記SAはさらに、コンバータを有し、
前記コンバータを介して前記SAは複数の周辺機器に結合されている項目2または3に記載の処理デバイス。
[項目6]
前記同じダイに製造されているシステムオンチップ(SoC)デバイスである項目1から3のいずれか一項に記載の処理デバイス。
[項目7]
複数のオペレーティングシステムでポーティングされるコンピューティングデバイスの一部である項目1から3のいずれか一項に記載の処理デバイス。
[項目8]
第1のオペレーティングシステムは、アクティブ化されると、前記第1のプロセッサモジュールで実行され、第2のオペレーティングシステムは、アクティブ化されると、前記第2のプロセッサモジュールで実行される項目1から3のいずれか一項に記載の処理デバイス。
[項目9]
中央演算処理装置(CPU)であり、デュアルオペレーティングシステムでポーティングされるコンピューティングデバイスの一部である項目1から3のいずれか一項に記載の処理デバイス。
[項目10]
前記第1のISAおよび前記第2のISAとは異なる第3の命令セットアーキテクチャ(第3のISA)にしたがって設計されている第3のコアを有する第3のプロセッサモジュールをさらに備える項目1から3のいずれか一項に記載の処理デバイス。
[項目11]
前記第3のプロセッサモジュールは、前記第1のコア、前記第2のコアおよび前記第3のコアの間で送信される複数のメッセージを変換する第3のバスブリッジを有する項目10に記載の処理デバイス。
[項目12]
第1の命令セットアーキテクチャ(第1のISA)にしたがって設計されている第1のコアと、
第2のISAにしたがって設計されている第2のコアと
を備え、
単一のダイに製造されているシステムオンチップ(SoC)デバイスであるプロセッサ。
[項目13]
前記第1のコアおよび前記第2のコアに通信可能に結合されているバスを有するシステムエージェント(SA)をさらに備え、
前記バスは前記第1のコアとの間で複数のメッセージをネイティブ送受信する項目12に記載のプロセッサ。
[項目14]
前記第2のコアと前記バスとの間に結合されているバスブリッジをさらに備え、
前記バスブリッジは、前記第2のコアと前記バスとの間で送信される複数のメッセージを変換する項目12または13に記載のプロセッサ。
[項目15]
前記SAはさらに、コンバータを有し、
前記コンバータを介して前記SAは複数の周辺機器に結合されている項目12から14のいずれか一項に記載のプロセッサ。
[項目16]
第1のオペレーティングシステムは、アクティブ化されると、前記第1のプロセッサモジュールで実行され、第2のオペレーティングシステムは、アクティブ化されると、前記第2のプロセッサモジュールで実行される項目12から14のいずれか一項に記載のプロセッサ。
[項目17]
前記処理デバイスは、中央演算処理装置(CPU)であり、デュアルオペレーティングシステムでポーティングされるコンピューティングデバイスの一部である項目16に記載のプロセッサ。
[項目18]
前記第1のISAおよび前記第2のISAとは異なる第3の命令セットアーキテクチャ(第3のISA)にしたがって設計されている第3のコアをさらに備える項目12から14のいずれか一項に記載のプロセッサ。
[項目19]
前記第3のコアは、前記第1のコア、前記第2のコアおよび前記第3のコアの間で送信される複数のメッセージを変換する第3のバスブリッジを有する項目12から14のいずれか一項に記載のプロセッサ。
[項目20]
中央演算処理装置(CPU)においてフォアグラウンド状態で実行されている第1のオペレーティングシステム(第1のOS)から前記CPUにおいてバックグラウンド状態で実行されている第2のOSへと切り替えることを求める要求に応じて、前記CPUの第1のコアによって、前記第1のOSとのみ対応付けられている第1の群のデバイスを決定する段階と、
前記第1の群のデバイスを一時停止させる段階と、
前記第1のOSおよび前記第2のOSに限定されない第2の群のデバイスを決定する段階と、
前記第2の群のデバイスを前記第2のOS用に構成する段階と、
前記第2のOSを前記フォアグラウンド状態にし、前記第1のOSを前記バックグラウンド状態にするべく切り替える段階と
を備え、
前記第1のコアは、第1の種類の命令セットアーキテクチャ(ISA)にしたがって設計されており、
前記切り替える段階は、第2の種類のISAにしたがって設計されている前記CPUの第2のコアをアクティブ化させる段階と、前記第1のコアをアイドル状態にする段階とを有する方法。
[項目21]
前記第2のOSに限定される第3の群のデバイスを決定する段階と、
前記第3の群のデバイスをイネーブルする段階と
をさらに備える項目20に記載の方法。
[項目22]
中央演算処理装置(CPU)で実行されることに応じて、前記CPUに方法を実行させるための複数の命令を備える少なくとも1つの機械可読媒体であって、
前記方法は、
前記CPUにおいてフォアグラウンド状態で実行されている第1のオペレーティングシステム(第1のOS)から前記CPUにおいてバックグラウンド状態で実行されている第2のOSへと切り替えることを求める要求に応じて、前記CPUの第1のコアによって、前記第1のOSとのみ対応付けられている第1の群のデバイスを決定する段階と、
前記第1の群のデバイスを一時停止させる段階と、
前記第1のOSおよび前記第2のOSに限定されない第2の群のデバイスを決定する段階と、
前記第2の群のデバイスを前記第2のOS用に構成する段階と、
前記第2のOSを前記フォアグラウンド状態にし、前記第1のOSを前記バックグラウンド状態にするべく切り替える段階とを備え、
前記第1のコアは、第1の種類の命令セットアーキテクチャ(第1のISA)にしたがって設計されており、
前記切り替える段階は、第2の種類のISAにしたがって設計されている前記CPUの第2のコアをアクティブ化させる段階と、前記第1のコアをアイドル状態にする段階とを有する
少なくとも1つの機械可読媒体。
[項目23]
前記方法はさらに、
前記第2のOSに限定される第3の群のデバイスを決定する段階と、
前記第3の群のデバイスをイネーブルする段階と
を備える項目22に記載の少なくとも1つの機械可読媒体。
[項目24]
項目20または21に記載の方法を実行するための手段を備える装置。
図1
図2A
図2B
図2C
図3A
図3B
図4
図5A
図5B
図6
図7
図8
図9
図10
図11
図12