(58)【調査した分野】(Int.Cl.,DB名)
前記アクセスフラグのハードウェアマネージメントが、アドレストランスレーションのステージのために有効になっている場合には、アクセスフラグフォールトは、トランスレーションに応じるために生成されない、請求項5のコンピュータシステム。
【発明を実施するための形態】
【0019】
本発明は、新規のアトミックテスト[0]、OR及びマスクを介したハードウェアでのページテーブルアクセス及びダーティビットマネージメントを提供する。また、本発明は、ACEをCCIにトランスレーション可能なガスケットを提供する。さらに、このガスケットは、ACE及びCCI間のトランスレータの要求、ビクティム及びプローブ衝突のためのデッドロック回避、ARMバリアハンドリング、並びに、電力管理相互作用を提供する。また、本発明は、統合ノースブリッジをデッドロックするARMビクティム/プローブ衝突を処理するためのソリューションを提供する。これらのソリューションは、専用のライトバック仮想チャネル、4ホップのプロトコルを使用するIO要求のためのプローブ、及び、ビクティムが要求をパスするようにデータを用いて古いリクエストを更新するMCTでのWrBack並べ替え機能を含む。
【0020】
図1は、一つ以上の開示された実施形態が実装され得る例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含んでもよい。デバイス100は、プロセッサ102と、メモリ104と、ストレージ106と、1つ以上のインプットデバイス108と、1つ以上のアウトプットデバイス110と、を含む。デバイス100は、必要に応じてインプットドライバ112及びアウトプットドライバ114を含んでもよい。デバイス100は、
図1に示されていない付加的な構成要素を含んでもよいことが理解されるであろう。
【0021】
プロセッサ102は、中央処理ユニット(CPU102)、グラフィックス処理ユニット(GPU)、同一のダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含んでもよい。各プロセッサコアは、CPU又はGPUであってもよい。メモリ104は、プロセッサ102と同一のダイ上に配置されてもよいし、プロセッサ102とは別個に配置されてもよい。メモリ104は、揮発性又は不揮発性メモリ104(例えば、ランダムアクセスメモリ104(RAM)、ダイナミックRAM又はキャッシュ)を含んでもよい。
【0022】
ストレージ106は、固定又はリムーバブルストレージ(例えば、ハードディスクドライブ、ソリッド状態ドライブ、光ディスク又はフラッシュドライブ)を含んでもよい。インプットデバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックスキャナ又はネットワーク接続(例えば、ワイアレス14E802シグナルの送信及び/又は受信のためのワイアレスローカルエリアネットワークカード)を含んでもよい。アウトプットデバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ又はネットワーク接続(例えば、ワイアレス14E802シグナルの送信及び/又は受信のためのワイアレスローカルエリアネットワークカード)を含んでもよい。
【0023】
インプットドライバ112は、プロセッサ102及びインプットデバイス108と通信し、プロセッサ102が、インプットデバイス108からの入力を受けることを許容する。アウトプットドライバ114は、プロセッサ102及びアウトプットデバイス110と通信し、プロセッサ102が、アウトプットデバイス110に出力を送ることを許容する。インプットドライバ112及びアウトプットドライバ114は、任意のコンポーネントであり、デバイス100は、インプットドライバ112及びアウトプットドライバ114が存在しない場合には、同様に動作することに留意する。
【0024】
ページテーブル内のテーブルエントリのアクセスにおいて、ハードウェアは、アクセスビットを1に設定してもよい。Test[0]andORアトミック(又は全て1のOp2を有するTest[0]SetandClr)が使用されてもよく、レジスタによって有効にされてもよい。ダーティビットメカニズムは、有益となり得る。例えば、要求が書き込み権限を必要とし、AP[2]が1’b1である場合には、ハードウェアは、DBMビット(ラストページテーブル記述子のビット51)をチェックし、ダーティビットが1’b1に設定されている場合には、AP[2]を1’b0に設定してもよい。Test[0]SetandClrアトミック(アトミックopの32b及び64bバージョンの両方がサポートされている)は、このステップで使用されてもよい。
【0025】
例えば、次のオペレーションは、ページテーブルを管理するハードウェアの機能として使用されてもよい。
Mem[Addr]=Mem[Addr][0]?((Mem[Addr]|Op1)&Op2):Mem[Addr]; (式1)
【0026】
式1は、設定がオペレーションを実行している場合であって、ビット0=テストビットである場合に、メモリ1(Mem[Addr])を変更することを提供し、そうでなければ何もしない(Mem[Addr][0])。オペレーションは、メモリアドレス上のオペランドOp1及びOp2のオペレーティングである。例えば、メモリアドレスは、Op1及びOp2に基づくADDRで設定され及びクリアされてもよい。これは、ページテーブルを管理するハードウェアでの機能を提供する。
【0027】
アクセスビットのメカニズムが有効になっている場合、ダーティビットメカニズムが有効であってもよい。代わりにダーティビットメカニズムとともに、式2は、AP[2]が、ページがダーティかクリーンであるかをに示すことを許容する。
AP[2]=1 − ページクリーン:AP[2]=0 − ページダーティ (式2)
【0028】
アクセスビット及びAP[2]ビットの両方は、単一のTest[0]SetandClrアトミックオペレーションの同じブロック/ページトランスレーションテーブルエントリからアップデートされてもよい。
【0029】
アクセスフラグを管理するためのハードウェアを使用することは有益である。例えば、セキュア及び非セキュアのPL1&0のステージ1トランスレーションのために、実装では、アクセスフラグのハードウェアマネージメントを提供してもよい。この場合、0に設定されたアクセスフラグを有するトランスレーションテーブルエントリが、トランスレーションルックアサイドバッファ(TLB)に読み込まれている場合、ハードウェアは、メモリ内のトランスレーションテーブルエントリのアクセスフラグビットに1を書き込む。セキュアのためのアクセスフラグ及び非セキュアのPL1&0のステージ1トランスレーションのハードウェア管理の提供をする実装では、ハードウェアアクセスフラグフィールドID_MMFR2[31:28]を使用してもよく、この実装の選択を示すためには、アクセスフラグのハードウェア管理を有効にするビットを1に設定することによって、SCTLR.HAビットを実装してもよい。
【0030】
ショート記述トランスレーションテーブル形式を使用する場合に、両方のSCTLR.AFEが、アクセスフラグの使用を可能にするために1に設定されている場合には、アクセスフラグのハードウェアマネージメントが行われ、SCTLR.HAは、アクセスフラグのハードウェアマネージメントを可能にするために1に設定される。SCTLRのバンキングは、ビットが、セキュア/非セキュアビットのための異なる決定を許容するセキュア及び非セキュアアドレストランスレーションのために独立して定義されるのを可能にする。アクセスフラグのハードウェアマネージメントが、アドレストランスレーションのステージのために有効になっている場合には、アクセスフラグフォールトは、対応するトランスレーションのために生成されない。これは、1つのアトミックアップデートでアップデートを可能にし、ハードウェアで管理されていない場合には起きることがない。
【0031】
本発明は、中央処理装置(CPU102)のシンクロナイザとコアクラスタとの間のクロックドメインに置かれる「ガスケット」の実施形態に関する。ガスケットは、キャッシュコーヒーレントインターコネクト(CCI)へのトランザクションと、スヌープへのシステムプローブのトランザクションとのトランスレーションを提供してもよい。また、ガスケットは、メモリマップ、転送サイズ、及び、統合ノースブリッジ(UNB)/コヒーレントハイパートランスポート(cHT)環境と相互作用するコアクラスタに必要な他の機能を変換してもよい。
【0032】
図2を参照すると、統合ノースブリッジ280とアトラスクラスタ290との間のトランザクションのトランスレーションを提供するガスケット210を含む例示的なシステム200が示されている。
図2に示すように、アトラスクラスタ290は、アトラスバスインタフェースのいくつかのチャネル220を含む。これらのチャネル220は、ACEリードレスポンスチャネル220aと、ACEリードアドレスチャネル220b1と、ACEライトアドレスチャネル220b2と、ACEライトデータチャネル220cと、ACEライトレスポンスチャネル220dと、ACEスヌープレスポンスチャネル220eと、ACEスヌープアドレスチャネル220fと、を含んでもよい。チャネル220は、アトラスクラスタ290の各ガスケット210を使用して、CCI230を介して統合ノースブリッジ280に変換されてもよい。例えば、チャネル220aは、CCIリードレスポンス230aに変換されてもよく、チャネル220bl,220b2(まとめて220b)は、CCIリクエスト230bに変換されてもよく、チャネル220cは、CCIライトデータ230cに変換されてもよく、チャネル220dは、CCIライトリード230d1及びCCIライトバッファリリース230d2(まとめて230d)に変換されてもよく、チャネル220eは、CCIプローブレスポンス230eに変換されてもよく、チャネル220fは、CCIプローブ230fに変換されてもよい。
【0033】
ローレイテンシシンクロナイザ270は、本明細書でさらに説明するように、CCIバス230から統合ノースブリッジ280に使用されてもよい。
【0034】
CPU102からの要求は、アドバンスドイクステンシブルインタフェース(AXI)コヒーレンシエクステンション(ACE)コマンドから同等のCCIコマンドに変換される必要がある。一般的に、各アームの要求タイプは、特定のCCI要求タイプにマップする。ARMコマンドタイプは、読み取り及び書き込みアドレスチャネルのAxDomain及びAxSnoopに符号化される。ガスケット210の特定のトランスレーションは、多くの異なる形態にしてもよい。例えば、CCIリードレスポンス230aからACEリードレスポンスチャネル220aへのトランスレーションにおいて、リードデータキュー235が実施されてもよい。
【0035】
ACEリードアドレスチャネル220b1及びACEライトアドレスチャネル220b2からのトランスレーションでは、例えばマルチプレクサ237を使用する等して組み合わされてもよく、それからリクエスト/メモリトランスレータ240に入力されて、ガスケットリクエストキュー245を介してCCIリクエストジェネレータ250に入力される。
【0036】
CCIプローブ230fからの変換において、ガスケットは、キュー259に出力するプローブ/スヌープトランスレータ260を含む。キュー259は、ACEスヌープアドレスチャネル220fに出力するために、プローブ/レスポンスインターロック265からの入力情報を受信する。
【0037】
CCIライトデータ及びCCIリードデータ230dからACEライトレスポンスチャネル220dへのトランスレーションにおいて、ガスケット210のライトプロセッサ255が使用されてもよい。ACEスヌープレスポンスチャネル220eは、キュー257に入力され、キュー257は、ライトプロセッサ255からの入力を受信している間、マルチプレクサ254及びCCIプローブレスポンス230eにデータを提供する。ACEライトデータチャネル220cは、キュー252に入力され、キュー252は、ライトプロセッサ255からの入力を受信している間、マルチプレクサ254に出力する。マルチプレクサ254は、CCIライトデータ230cに出力する。
【0038】
表1に示される次のトランザクションが使用されてもよい。
【表1】
【0039】
表1には、
図2のパスaで行われるトランスレーションが示されている。ACEトランスレーションが左側に示され、CCIトランスレーションが上部に示されている。好ましいトランスレーションがグリーン(暗い影)で示され、代替のトランスレーションがピーチ(薄い影)で示されている。
【0040】
バスコネクションは、CCIがビット47を介してアドレスアップをサポートしながら、ビット43までのアドレスをサポートしてもよい。さらに、プロセッサは、完全なアドレス空間を使用できないかもしれず、そして上位4ビットのうちの1つ以上が使用されず、ゼロであると想定してもよい。そうでなければ、非稼働の上位ビットは、ゼロとして稼働され、又は、ACE属性を移動するオーバーロードであってもよい。
【0041】
ビット[44]を含む、現在定義されているオーバーロードは、AxPROT[1]を移動し、AxPROT[1]は、「セキュア」又は「非セキュア」アクセス(それぞれ0又は1)を示す。これは、バンクレジスタアクセスのための汎用インタラプトコントローラ(GIC)によって使用される。このビットは、他の目的地に転送する前にSRIロジックによってゼロにされてもよい。
【0042】
ガスケット210は、記載されているような要求を変換することに加えて、ACEタグをCCIタグに変換するのに必要とされてもよいし、されなくてもよい。ACEタグ空間がCCIタグ空間内に収まる場合には、その後のタグは、ガスケット210を変更せずにパスされてもよい。けれども、ACEプロトコルは、2つ以上のトランザクションを順に保持することを示すために同じタグの再使用を許容し、統合スブリッジ280は、一般的に順序を維持しない。結果として、同じタグ/idを共有するACE要求は、統合ブリッジ280に達することから、重複タグとのトランザクションを防止するガスケット210内にシリアル化されてもよい。
【0043】
リクエスト/プローブの組合せの統合テーブルは、表2で提供されている。
【表2】
【0044】
表2では、リクエスト/プローブの組合せの統合テーブルが示されている。それらは、生成されたIDスヌープであるARMトランザクションを含んでもよい。グリーンスヌープ(濃い色のボックス)が好ましく、一方、ピーチスヌープ(明るい色のボックス)は代替のスヌープである。
【0045】
CCIエンコードされたプローブ230fは、プローブ/スヌープトランスレータ260を介して同等のACEスヌープトランザクションに変換されてもよい。ACEプロトコルは、スヌープチャネル上の通常のリードコマンドと、専用のキャッシュメンテナンスコマンドと、の組み合わせで使用する。表3のトランスレーションが使用されてもよい。
【表3】
【0046】
表は、使用され得るトランスレーションを提供する。トランスレーションは、ACEスヌープに基づくCCIプローブ生成仕様を定義する。
【0047】
単一のCPU102クラスタが使用される場合において、ガスケット210によって受信したプローブは、上記の場合に限定した要求のIO/グラフィックスプロセッシングユニット(GPU)の結果であってもよい。
【0048】
ガスケット210がCCIインタフェースからリードレスポンス230aを受信する場合、クラスタ290への同等の応答をACEバス220aで生成する必要がある。特定の状況において、ガスケット210は、データの全てのビートがCCIインタフェース230aから受信されるまで、ACEレスポンス220aの起動を遅延させてもよい。これを必要とするいくつかの同一の状況がある。バーストの順序が異なっていてもよい。RdBlkXトランスレーションは、ACEバス220によって期待されるラッピングバースト順にデータを提供する。エラーチェッキングコレクション(ECC)エラーは、レスポンスの再生をもたらしてもよい(例えば、CCIリードデータが不完全でもよい)。
【0049】
システムメモリ104のマップは、インタラプトコントローラデコード等の目的でDRAM対IOを識別するために使用されなければならない。ARM環境は、非DRAMアドレスからDRAMを区別し、非DRAM空間をさらにサブ分割するためにARMメモリマップを使用する。cHT環境は、アドレス領域の種類を示すための明確なI/O及び他のシグナルを使用する。ガスケット210は、SRIへの各要求とともに送信される期待された補助アドレスタイプシグナルを生成するために、メモリマップを使用してもよい。メモリマップは、ARMトランザクションをcHTに変換するために使用されてもよい。アドレスベースレジスタは、GICベースアドレスレジスタ(Reqlo及びReqApicを設定するため)、拡張コンフィグベース(ReqExtCfgを設定するため)、及び、DRAMベース(ReqNonCacheを設定するため)を含む。
【0050】
ARMベースシステムは、cHTベースシステムよりも異なるライトバックのCPU102を有するプローブ/スヌープの競合状態を処理する。cHTベースシステムにおいて、CPU102は、いかなる依存関係なしにプローブレスポンスを常に提供するために要求される。プローブがCPU102ビクティムにヒットした場合、CPU102は、ビクティムが既に送信されたか否かを示し(後にキャンセルされるであろう)、プローブレスポンスでライトバックデータを供給する。ビクティムがまだ設定されていない場合には、その状態は、プローブの種類に応じてダウングレードされる。ARMシステムにおいて、CPU102は、ブロックし、さらには、ライトバックが完了するまでプローブレスポンスを提供しない。これは、CPU102/クラスタ内でキューに入れられたプローブのために発生してもよく、未だ発せられていない。
【0051】
ARMプロセッサのデッドロックを回避するために、ライトバックは、DRAMに排出するためのライトバックを許容する、独立した仮想チャネルへのアクセスを有してもよい。MCTの中で、これらのライトバックは、通常依存していたかもしれない同じアドレスに対して、より古い読み出しをパスしなければならない。これを実装するために必要とされる具体的な変更点は、ガスケット210を横断するライトバックのための非ブロッキングパス、SRQを横断するライトバックのための非ブロッキングパス、及び、クロスバーを介する非ブロッキングパスである。ライトバックは、MCTに到着するとき、以前の要求の依存関係を確立する必要がないが、むしろパスすることを許可される。また、最も古い読み取りは、ライトバックに依存してマークされ、ライトバックが完了した後に、既にに発せられた任意のDRAMリードオペレーションを再発行することを強制してもよい。
【0052】
プローブが完了していない、又は、ソースの実施が受信されていた場合、より以前の読み取りは、同じアドレスへのライトバック到着による「インタラプテッド」としてもよい。リードレスポンスがソースに発行され、且つ、ライトバックが到達する場合、プローブが応答される又はされないを知らせることができなくてもよい。これは、CPU102にプローブレスポンスが与えられ、その後にライトバックが発せられた可能性がある。しかしながら、この場合に、ソースは、データを有するプローブレスポンスを受信してもよい。これが起きた場合、レスポンスは、再度発せられる必要がなくてもよい。MCTは、これを予測できないかもしれない。MCTが、ライトバックを並べ替えし、DRAMへの読み取りを再発している場合、MCTは、新しいデータでレスポンスを再発するとよい。レスポンスが、ターゲット実施の前/ターゲット実施とともに存在している限り、新しいデータは、任意の事前のレスポンスに上書きするであろう。
【0053】
ガスケット210と同様に、メモリ104へのパスは、CPU102がライトバックを発することができないように満たされている別の潜在的デッドロックのシナリオがある。プローブが、既に発行されたライトバック(内部でのバッファ)と一致して受信され、CPU102がプローブを停止した場合に、デッドロックは、ライトバックが独自の仮想チャネルを有している場合であっても起きてよい。CPU102/クラスタは、ライトバックと非ライトバック書き込みとをインターリーブしないことにより、この状況を回避する。したがって、発行されていないライトバックでのプローブ依存性がある場合、ライトバックタイプの書き込みがガスケット210に存在することができ、これらのライトバックが排出してもよく、発行される(及びドレインされる)ブロッキングライトバックを許容することである。発行された非ライトバックの書き込みがある場合、クラスタは、プローブに依存性がある任意のライトバック(未発のライトバックでさえも)を生成しなくてもよい。
【0054】
ガスケット210は、統合ノースブリッジ280ドメインのSRIによって期待される5クロック分離に従う有効なデータを書き込むコマンドの書き込みを保証することの可能な予測されたFIFOの使用を含む、ドライビングのためのシンクロナイザ270スキップクロックロジックを観測し、シンクロナイザ270からのシグナルを受信する必要があるかもしれない。インカミングレスポンスは、5クロック分離に従ってもよい。ガスケット210は、ACEタイミングとともにCPU102へのレスポンスを転送してもよい。シンクロナイザ270は、シンクロナイザ270FIFOがリーディング/ライティングを10クロック後に有効にするか否かを示す信号を提供する。リーディング及びライティングを可能にするために別個のシグナルがある。ドライビングドメイン内のロジックは、シグナルがシンクロナイザ270の出力で受信されたとき、要求されたタイミングリレーションシップが観測されるようなシンクロナイザ270にシグナルを送信してもよい。ライトデータの場合において、これは、適切なリレーションシップと統合ノースブリッジ280によって観測されるCPU_NbDatValの後に、ガスケット210が、CPU_NbDat5の有効なクロックを駆動しなければならないことを意味する。同様に、ガスケット210は、NB_SysDatValアサーション後の正確な5つの可能なクロックのNB_SysDat上の有効なリードデータをサンプリングすることを期待すべきである。
【0055】
ARMライト(write)は、CCI許可よりも、サイズ及び/又はバイトの組み合わせでより多くの柔軟性を有する。したがって、特定のACEライトが複数のCCIライトで破損する可能性がある。リクエストキュー245及び/又はライトバッファは、特定のバイトを追跡する必要があってもよく、すなわち、転送された及び適切なコマンドを生成する必要があり、全ての「サブライト」が完了し及びリリースされたときに、エントリ及びバッファを唯一割り当てる。
【0056】
CCI/cHTは、バイトが、プレフィックスデータビート等のデータストリームに沿って可能になるように提供する。残りのデータビートのための有効な情報のバイトの全ては、単一のプレフィックスデータビートで提供される。有効なバイトは、アドレスとカウントフィールドとの文脈で解釈される。
【0057】
サポートされているサイズの説明は、ダブルワード(4バイト)オペレーションを含み、それは、64バイトアラインブロック内の連続した完全なダブルワードの任意の数を転送する。カウントフィールドは、転送され得るダブルワードデータ要素の数の符号化を、指定されたアドレスから始まり昇順に行う。0から15のカウントコードの各々は、転送される1〜16のデータ要素を表す。64バイト境界を越える要求は、アドレスの昇順に発せられた複数のトランザクションに分割されてもよい。
【0058】
バイトライトは、ナチュラリーアラインド32バイトアドレスレジョンのバイトの任意の組み合わせで転送されてもよい。アラインド32バイトバウンダリを横切る転送は、アセンディングアドレスオーダーに発せられたマルチプルHyperTransportトランザクションに分割されてもよい。
【0059】
CPU_CMD_WRBYTE:5’b01010(整列32バイトブロック内の1から32のキャッシュ不可書き込み、潜在的な非連続バイト。ライト1又は2データビート。アクセス最下位バイトがバイト4から7である場合、ReqAddr[2]=1。)
【0060】
CPU_CMD_WRDWORD:5’b01011(64バイトブロックのうち1から16の連続するダブルワードのノンキャッシュアブルライト。ライト1から4ビート。)
【0061】
ACEプロトコルは、データの各ビートと一緒にできるバイトを提供する。バイトイネーブルは、アドレス又は長さ情報と無関係に対応するデータバイトに適用する。任意の「サイズ」のACEの書き込みについて、バイトの任意の組み合わせの可能性が許可される。結果として、バイトライト(非連続、非ダブルワード整列、又は、複数のサイズの非ダブルワード)は、32バイト境界にまたがり、及び複数の転送を要求してもよい。任意のACEライトは、最大2CCIタイプのバイトライトに変換されてもよい。
【0062】
CPU102/クラスタ内での組み合わせライトは、16バイト転送になってもよい。複数のCPU102で16バイトライトが組み合わされているとしても、結果としてのバッファは、常に単一のCCIDWORDライトに変換されることができる。任意の時間のライトは、無効な任意のバイトストローブとともに受信され、そのバッファは、シングルバイトライトトランザクション及び全ての他のバッファとともに直ぐにフラッシュされてもよく、複数のライトを組み合わせるかどうかにかかわらず、単一のDWORDライトで書き込まれてもよい。
【0063】
ここに記載のプロセッサコアは、ある程度のライト結合を提供する。しかしながら、プロセッサは、ライトデータの16バイトを結合することのみ可能であってもよい。いくつかの用途のために、フルキャッシュラインまでのライト結合のためのかなりの利点があってもよい。ガスケット210に実装されたライトバッファの数は、ライトリクエストエントリの数より少なくてもよい。ライトデータは、SRIによってバッファから引き出されるまで保持されるのみであってもよく、一方で、ライトリクエストは、レスポンスがCPU102に送信されるまで(SRIバッファリリースベースオフのターゲット終了の後である)保持される必要がある。いくつかの又はこれらの全てにおいて、ライトバッファは、ライト結合能力を有してもよい。
【0064】
ライト結合能力の追加は、バッファをフラッシュすることが必要である。いくつかの可能なアルゴリズムがあり、構成モード及び並列の何れかの複数を実装する必要性があってもよい。ポッシブルバッファフラッシュトリガは、いつでも完全に有効なバッファであるマンダトリフラッシュと、いつでも未送信バッファが枯渇されているマンダトリフラッシュと、いつでもCPU102ライトがCPU102に既にオープンなバッファにヒットしないことと、いつでもオープンバッファの数のプログラムの制限が達成されていることと、及び、バッファを示す他のヒューリスティックがもはや書き込まれないことと、を含む。バッファフラッシュの制限は、正確なキャッシュ能力属性(バッファラブル)とともにライトを結合するときのみに含まれていてもよく、バリアのためにすべてのバッファをフラッシュする必要があり、ある実施形態において、DvmSyncのためのすべてのバッファをフラッシュする必要があってもよい。
【0065】
バリアトランザクションは、そうでなければARMプログラミング/一貫性モデルが提供されない特定の順序保証を提供するために使用されてもよい。ACEプロトコルは、セパレートリード及びライトトランザクションチャネルを提供し、従って、バリアトランザクションは、リード/ライトペアとして発せられてもよい。両方のトランザクションが完了したら、それは、バリアの後に発せられたトランザクションが、バリアの前のトランザクションの後にオーダーされると想定しても安全である。ACEプロトコルは、バリアの2つのタイプ、メモリと同期を定義する。
【0066】
メモリバリアは、適切なドメイン内の別のマスターが、バリアの前に発せられた全てのトランザクションを観測することができた場合、保証するためにマスターによって発せられてもよい。メモリバリアは、メモリベースの通信のために使用されてもよい。例えば、メモリ104へのデータの配列を書き込むとき、マスターコンポーネントは、配列が可能であることを示すために、メモリフラグを設定する前にメモリバリアを発してもよい。フラグを観測することができる任意の他のマスターコンポーネントは、アレイに書き込むトランザクションを観測しなければならない。
【0067】
同期バリアは、バリアの前に発せられたトランザクションが、バリアが完了したときに適切なドメイン内のすべてのマスターによって観測可能であることを保証するために、マスターによって発せられてもよい。システムドメインの同期バリアは、バリアトランザクションの前に発せられたトランザクションが、バリアが完了する前に宛てられているエンドポイントスレーブに達していなければならない追加の要求を有する。同期バリアは、サイドバンドシグナリング通信の様々な形態で使用されてもよい。例えば、メモリ104へのデータの配列を書き込むとき、マスターコンポーネントは、アレイが可能であることを示すために、インタラプトを生成する前に同期バリアを使用してもよい。同期バリアが完了するとき、更新された配列は、ドメイン内のすべてのマスターコンポーネントによって観測されることを保証される。
【0068】
cHTプロトコルは、後の書き込みの観測が先の書き込みの観測を意味するような書き込み順序を提供する。これらの必要性は、メモリと同期バリア命令の処理の間にいかなる区別もない。両方は、全ての先のリクエストがCPU102に完了したことを示す前にSRIにガスケット210によって発せられていることを単に確実にすることにより、ガスケット210内で完全に処理されてもよい。より古いリクエストが発せられたら(又は、より保守的に完了)、ガスケット210は、CPU102にバリアトランザクションバックのレスポンスを送信してもよい。
【0069】
ACEは、リード及びライトリクエストチャネルの許可を提供するARPROT[2:0]及びAWPROT[2:0]を提供する。これらのビットは、次のとおり定義される。
【0070】
AxPROT[0]:0/1 非特権/特権アクセス
【0071】
AxPROT[1]:0/1 セキュア/非セキュアアクセス
【0072】
AxPROT[2]:0/1 データ/命令アクセス
【0073】
唯一の非特権/特権ビットは、SRIを介してパスされる。これは、SRIが、GICディストリビュータにプログラミングインタフェースを提供するために計画されているように必要であり、一部のレジスタは、仮想化をサポートするときに特権レベルに基づいてバンクされる。アドレス統合ノースブリッジ280のサポートされているアドレス空間は、コアのそれよりも大きいので、上位アドレスビットは、特権インジケータでオーバーロードにされてもよく、転送される必要があってもよい任意の追加のアクセス許可ビットのために同様なことを行ってもよい。
【0074】
ガスケット210は、電源マネージメントオペレーションへの関与のいくつかの度合を有している。ガスケット210は、クラスタによって提供される様々なイベントのカウントに必要なCACレジスタを実装し、パワーマネージメント状態を変更するための「静止」機能を提供することによって相互作用をしてもよい。ガスケット210は、入力シグナルを介してパワーマネージメントの要求によりさらにCCIリクエストをブロックするように相互作用してもよく、優れたCCIリクエストの完了を待つことで、その後にインタフェースがアイドルであることを示す出力シグナルを駆動する。
【0075】
パワーマネージメントの目的のために、サイクルカウントは、周波数に基づいて重み付けされてもよい。クラスタは、周波数情報へアクセスを有しない。周波数は、所望のP状態のレジスタのソフトウェアプログラミングの結果として統合ノースブリッジ280によって設定される。パワーマネージメントソフトウェア(PEP)は、ガスケット210の周波数変化が発生する毎に重みを更新するSMUをシグナルとしてもよい。他の方法として、P状態周波数テーブルは、ガスケット210に複製してもよく、現在のP状態の更新ライトは、ガスケット210によって観測され、重みで透過的に更新されてもよい。
【0076】
上記の方法に限定されるものではなく、カウンタのいくつかの数は、興味を起こさせると考えられるPMUイベントシグナルのいくつかをカウントしプログラムされるように供給されてもよい。各カウンタは、どのPMUイベント(バスリード/ライトの指示又はクロックイベント)がカウントされるのを示すかがプログラムされてもよい。例えば、サイクルの構成は、アクティブサイクルをカウントするイベント/インタラプト(WFE/WFI)シグナルのために待ちでカウントする。POR及びSMUは、これらのカウンタのそれぞれに重みを提供してもよい。
【0077】
パワーマネージメントは、ソフトウェア及びインタラプトコントローラとインタフェースで接続している。1つの実施において、ソフトウェアコンポーネントはマイクロコードであり、インタラプトコントローラはAPICである。ARMアーキテクチャにおいて、マイクロコードを実装するための規定はなく、インタラプトコントローラは、GICである。
【0078】
パワーマネージメントは、実装固有のものである。SOCの特定のハードウェアは、OSには確認できない。OSは、各実装がベンダー固有のソフトウェアの後ろに隠している具体的に定義されたインタフェースを介して電源マネージメントハードウェアにアクセスする。C状態とP状態は、ACPIコールを介してOSに通知され、OSはマイクロコードによって捕捉され処理されるリクエストを生成する。ARMにおいて、コードのこの層は、Windows(登録商標)及びAndroid(登録商標)の両方に供給されてもよい。Windows(登録商標)RTにおいて知られているこのコードは、プラットフォームエンジンプラグイン(PEP)及びAndroid(登録商標)で、パワーマネジメントドライバコードがカーネルに直接コンパイルされてもよい。これらは、C状態のためのCPUidle及びP状態変更のためのCPUfreqの形式で入ってくる。パワーマネージメントハードウェアへのインタフェースは、ユーコードインタフェースに類似しており、PEP又はカーネルドライバで行われてもよい。簡単にするために、リファレンスは、ARMの実装を説明しながらAndroid(登録商標)カーネルドライバに提供されるであろう。PEPは、OSソフトウェアスタックで異なる名前と構成であり、Android(登録商標)カーネルドライバ又はマイクロコードとしてOSにマイクロアーキテクチャを抽象化するのと同じ役割を果たしている。1つは、Android(登録商標)の電源マネージメントカーネルドライバアーキテクチャを取ることができ、ここでの記載に基づいてマイクロソフトプラットフォームにそれを適用する。
【0079】
APIC又はGICは、マイクロコード(ユーコード)又は電源マネージメントハードウェアのカーネルドライバインタフェースとは異なり、OSに対してアーキテクチャビジブルである。SOCハードウェアは、アーキテクチャに対応するインタラプトコントローラを実装してもよい。したがって、一般的な電源マネージメントハードウェアは、両方のインタフェースを収容してもよい。
【0080】
GICv2の仕様が実装されてもよい。GICv3と異なり、レガシーGIC−400は、8コアまでサポートするために1つのハードワイヤードコンポーネントで配布及び配信(CPU102インタフェース)の両方を実装する。CPU102インタフェースの出力は、FIQ/IRQピン毎のコアと仮想化対応である。このアーキテクチャは、APICに似ており、エッジは、C状態を終了する起動リクエストを生成するとともに、ソフトウェア(CC_INT_MASK)とハードウェアの両方を使用してマスクされてもよい。
【0081】
パワーマネージメントは、ソフトウエアサポートの要求でフローする。インタラプトは、最初にユーコードによって傍受され、これらのユーアーチインタラプトを内部でサービスし、それからOSにアーキテクチュラリビジブルの1つを転送する。uarchインタラプトは、ストップクロック(StpClk)及びスタートクロック(StartClk)を含む。ARMコアはユーコードを実装していないので、GICインタラプトはOSに表示される。ARM上のStpClk及びStartClkをサポートするために、ベンダー固有のインタラプトハンドラは、OSによってデバイスとして扱われ得る統合ノースブリッジ280のために登録されてもよい。
【0082】
APICインタラプトの配信は、リモートライト(外部インタラプトのために)及びローカルインタラプトピンの何れかを介して行われてもよい。ローカルインタラプトの実施例は、APIC330である。これは、リクエストパーフォーマンス状態がサーマルイベントにより絞られ又は復元されているOSに意味するように使用されている。GICインタラプト配信は、APICリモートライトに似たデータファブリックへのAXIインタフェースを介したものと、共有ペリフェラルインタラプト(SPI)又はプライベートペリフェラルインタラプト(PPI)の形でローカルインタラプトピンを介したものとの両方である。各SPIは、単一のコアをターゲットとするようにプログラムされてもよい。SPIを使用することにより、統合ノースブリッジ280は、ファブリック及びインタラプトをリクエストするGICにAXIメッセージを生成する必要がない。APIC330において単一SPIが採用されてもよい。マルチコアをターゲットにしたインタラプトのために、StpClk、StartClk、DbReq及びDbReq2等の統合ノースブリッジ280は、インタラプトタイプ毎にコア毎に1つのSPI idを確保し、コアをターゲットにするSW構成の要求であってもよい。4つのみのコアがある場合には、StpClk、StartClk及びDbReqの実装により、最大16のSPIが使用されてもよい。
【0083】
代替としては、nLEGACYIRQ[n]/nLEGACYFIQ[n]ピンに統合ノースブリッジ280マルチターゲットインタラプトをフックすることであり、PPIからGIC−400として可能とされる。ステータスレジスタは、同じピンに符号化されたサブタイプを決定するためのインタラプトハンドラのために供給されてもよい。これは、従来のピンと共有するインタラプトが、同じ優先度を共有することを要求してもよいが、StpClk、StartClk及びDbReqが最高の優先度に設定されてもよい。
【0084】
現在、APICは、nbcor440(例えばNBAPC_Intr)にインタラプトエッジを駆動し、それからコア(例えばNBCOR_IntrEdge)にレベルインタラプトピンを設定する。ユーコードは、それから保守を行うときにSprClrlnt(F3xB4)を介してそれをクリアにする。GICv2は、レベルピン(例えばIRQ/FIQからnbcor440)を駆動する。しかし、これらは、コアがインタラプトを確認した後、これらの代わりに、GIC410自体でクリアされてもよい。これは、アーキテクチャ定義されたGIC410ピンのためのSprClrIntを実施する必要性を最小限にする。nbcor440の中のIRQ/FIQピンが、トリガ起動などのIntrEdgeとして変化し、使用されてもよい。
【0085】
既存のuArchインタラプトは、GIC410の中で駆動され、FIQ上に出てくる。また、StpClkEdge、StartClkEdge及びDbReqEdgeを含み、これらのインタラプトの殆どのためにnbcor440のレベルインタラプトピンを実装する必要は、もはやない。既存のピンは、レベルからエッジに変換され、nb−>コアからnb−>GICに再ターゲットされてもよい。2つの別々のレベルのインタラプト状態をクリアするインタラプトハンドラのための理由はない。上記の3つの使用される唯一のレベル表示は、StartClkEdgeであり、それは、通常とisocヒステリシスカウンターとの間で切り替えるために使用される。使用は、StartClkが行われるまでのスワップを遅らせるのみであり、起こるシナリオはCleの周りであり、これは我々が安全に無視することができる。唯一の例外はDbReqであり、それは、キャンセルを生成するためにそのレベル表示を使用し、そうして我々は、DbReq2が取られ及びそうしてそのポイントを超えるキャンセルを回避することを表示するSprClrlntを介してシグナルにSWを必要とする。これは、DbReq2のためにFIQエッジをクリーニングに追加している。
【0086】
現在、統合ノースブリッジ280C状態は、外部インタラプトをカバーするInbWakeで終了する。また、コアを起動する必要のあるローカルソースインタラプトのために、それらがAPIC IntrEdge及びDbReqからマップにすることのできるタイプは、キーオフにされてもよい。GICのために、ローカルインタラプトが処理されてもよい。ローカルSPIからGICへの入力がフリーランニングクロックである場合には、ローカル入力がFIQ/IRQ又はエラーや仮想化対応でそれを行うことを想定し、そうして我々は単に終了をアイドルにして再マップする。入力がGICに入る前にゲートされたロジックを通過する場合には、これらのインタラプトのソースは終了をアイドルにしてもよい。
【0087】
x86/ACPI上にプロセッサのアイドルをヒットした場合に、OSのリクエストは、停止命令を介して停止し、又は、IOは、ACPIによってC状態アドバタイズドオフセットを設定した後に読み込む。停止又はIOリードは、マイクロコードでトラップされ、それから統合ノースブリッジ280に停止特殊ブロードキャストサイクル(SBC)を発し、ファブリックが静止するのを待ち、それから、ConnectMaskサイドバンドを無効にする。ラストコアエンタリングC状態からSBCは、全てのコアのC状態の開始をシグナルするFCHに下流システムマネージメントコマンドを生じさせる。これは、より深いC状態にアップグレードを管理するモニターを駆動するために使用されてもよい。ConnectMaskサイドバンドは、パワーマネージメントを開始するために使用される。
【0088】
ARM/Android(登録商標)において、OSは、事前に定義されたAPIを介して供給されるCPUidleカーネルドライバのコードを呼び出す。CPUidleは、メモリ104のマップされたアドレスを介して停止SBCをNBに発してもよい。x86において、これはFDF91ベースでマップされている。これは、統合ノースブリッジ280にハードコードされており、そうしてARMコアは、そのアドレスにメモリ104リクエストを生成できるようにする必要があってもよい。これは、モニタートレーニングと同様にFCH通信を満たす。CPUidleは、それからSTANDBYWFIサイドバンドをアサートするWFI命令を発する。STANDBYWFIは、反転され、それから統合ノースブリッジ280の内部でConnectMask内として扱われる。
【0089】
特定のコアにおいて、ConnectMaskをみることは、停止中、デアサートであってもよく、又は、HTC SBC(P状態用)は、CKに差し迫ったクロッキングリクエストのためのデータファブリックを用意するためのハードウェアを開始してもよい。実際のクロッキングリクエスト発生に進む前に、以下の処理が完了してもよい。
【0090】
1.ブロックプローブは、全てのコアを発し、それらのプローブレスポンス及び/又は完了するデータ移動のために待つことによって影響を受けたコアから全てのペンディングプローブを排出する。これは、CPCが全てフラッシュされる場合には適用されない。
【0091】
2.それらのNbBusyをドロップして影響を受けたコアを待つ。NbBusyはローパワー状態(例えばスクラビングの間)でのコアの抵抗である。
【0092】
3.NBSYN FIFOへのラウンドトリップ遅延をカバーするのに十分な時間を無条件に待つ。FIFOの中でインフライトトラフィックによってトリガされた新しいイベントは、反対を提起するのに十分な時間を有してもよい。
【0093】
4.ペンディングAPMのためのブロック及びウエイトが、返答又は応答されるCacインタフェースに要求する。
【0094】
5.パワーダウンのためのヒステリシスを満足する。ヒステリシスは、プローブの到着率(通常)及びインターリクエストプローブギャップ(isoc)の両方のために実装される。CPCは全てフラッシュされる場合に適用されない。
【0095】
パワーマネージメントは、ConnectMaskデアサーションの存在下で無効にされてもよい。EnaCPUDiv1LowPwr?=0を有するdiv−1にクロック除数を設定することは、ローパワーエントリをスキップしてもよく、CKにクロッキングリクエストをもたらさなくてもよい。
【0096】
統合ノースブリッジ280は、有効なプローブ(プローブ有効CC1として参照)を有するゲートされたコアクロックと、無効なプローブ(プローブ無効CC1として参照)を有するゲートされたコアクロックと、フラッシュされたキャッシュ(キャッシュフラッシュオンホールトCFOHとして参照)を有するゲートされたコアクロックと、リテンションモード(RCC3)と、を含むクロッキングリクエストタイプをCKに生成してもよい。
【0097】
有効なプローブ(プローブ有効CC1として参照)を有するゲートされたコアクロックのために、CKは、ターゲットコアに全てのクロックゲートをデアサートしてもよく、それからプローブに関連したゲートを再度有効にする。L2は、再有効プローブゲートを無視しコアを残し、自身のクロックがプローブの存在下でランプアップ/ダウンを行うことに留意する。他のコアは、WFIを送信するときのゲートそれ自体をクロックしてもよく、CKによりクロックゲートすることをさらに必要としない。CC1は、CCRからEnaCPUDiv1LowPwr?=0を有するdiv−1の設定によって単に無効なパワーマネージメントとしてコア上で実装されてもよい。
【0098】
無効なプローブ(プローブ無効CC1として参照)を有するゲートされたコアクロックに関して、プローブゲートが再有効になっていない以外は、プローブ可能な場合と同様である。このモードは、いくつかのコアで使用されておらず、チキン(chicken)ビットとしてのみ存在する。プローブの存在下において、パワーマネージメントは、ヒステリシスを保証する準備ロジックとともに、C状態の終了及び再入力を要求するために必要とされる。
【0099】
フラッシュされたキャッシュ(キャッシュフラッシュオンホールトCFOHとして参照)を有するゲートされたコアクロックのために、このモードは、無効なプローブ及び入ってくるプローブをサービスするために立ち上げることなしに、ゲートされた状態のクロックへの存在を可能にする。このモードは、全てのCPCがフラッシュされているときにのみ有益である。
【0100】
保持モード(RCC3)に関して、これはプローブ無効CC1の深いバージョンであり、コア電圧が、パワーゲーティング(PG)ヘッダーを調整しフィードバック回路を介してその電圧を維持することによって低減される。遅延特性は、プローブ無効CC1に似ているが、より多くの電力を節約している。RCC3は、フラッシング又はフラッシングなしで適用されてもよく、フラッシングが、それをより良いCFOHモードにする。
【0101】
いくつかのコアは、保持モードを可能にするために、パワーコントローラとQチャネルハンドシェイクとを必要とすることで、このモードを実施してもよい。このハンドシェイクを行うことなしに、クラスタは、コアに自動的にクロックゲートし、プローブにサービスするため、及び、ファブリックの介入なしにインタラプト上のWFIから終了するために、自動的にクロックをランプする。このハンドシェイクを行った後、クラスタは、何れかのタスクを完了するようにローパワー状態からの終了を可能にするために、ハンドシェイクの完了に依存してもよい。保持モードは、ハンドシェイクによって許可されたとき、ファブリック内の電力コントローラの制御下で入力/終了とされる。このように、WFIにおいて、クラスタは、第1のアサート有効STANDBYWFIでもよく、そのクロックをゲートオフしてもよい。いくらかの後に、保持ハンドシェイクが許可されていることを示すCPUQACTIVEをデアサートにするだろう。パワーコントローラは、保持を要求するCPUQREQをアサートにしてもよい。クラスタは、CPUQACCEPT又はCPUQDENYをアサートにすることにより、3ウェイハンドシェイクの3番目の部分を介して許可又は拒否してもよい。それ以前に、インタラプトは、自動的にコアを目覚めさせ、ハンドシェイクの場合にCPUQDENYを生じる。CPUQACCEPTを発見した後、保持エントリはコミットされたとみなされ、クラスタは、保持を終了するパワーコントローラに依存し、それからクロックゲーティング又はWFIを終了する前にCPUQACCEPTをデアサートにする。
【0102】
コアC状態コミットポイントは、統合ノースブリッジ280の中でSetCPULowPwrである。この機能をサポートするために、ハンドシェイクが完了する必要があってもよい。ハンドシェイクの開始をトリガする最高の場所は、CPULowPwrReqアサーションであり、これは、STANDBYWFIアサーションを占めており、それからCPUWACCEPTアサーションまでVceLowPwrRdyをブロックする。これは、コアがコミットしている保証となる。
【0103】
GIC−400は、CPU102インタフェースからFIQ/IRQピンで直接インタラプト入力を公開する。これらのインタラプトは、PwrMgtOrStpGntCC6MaskIntCPUによってコアからマスクされてもよく、RCC3(又はCC6の中)にコアの常駐をカバーする。FIQ/IRQエッジは、RCC3からの終了をトリガし得るIobcOrHaltをクリアするために、既存のロジックを使用して起動イベント(CoreWakeUpInt)を生成するのに使用されてもよい。終了が完了すると、PwrMgtOrStpGntCC6MaskIntCPUをデアサートにすることができ、全てのインタラプトが送られてもよい。インタラプト配信は、CPUQACTIVEをデアサートにトリガしてもよく、統合ノースブリッジ280が、CPUQREQをデアサートすることによって保持ハンドシェイクを終えてもよい。
【0104】
CPUQACTIVEは、保持におけるコアをターゲットとするプローブにデアサートとしてもよく、RCC3は、キャッシュフラッシュの後に有効にしてもよい。このようにして、プローブは起動状態にならない。L2は、l2_snp_activeがck_CPU_logicを起動するL1のためのスヌープフィルタを実装する。これは、L1フラッシュコアがL2からのプローブを参照できないことを意味し、システムプローブに入ってくる保持の終了がないことを保証すべきである。
【0105】
さらに、コアは、仮想メモリ104(DVM)の操作の分散を受けたCPUQACTIVEをデアサートする。DVM操作は、TLBシュートダウン、BTB無効化及びiキャッシュ無効化を含み、コアは、CPUECTLR SMPビットをクリアすることにより、非対称マルチプロセッシング(AMP)モードに対称(SMP)から切り替えることによって、コヒーレンシ(例えばそのパワーダウンシーケンス)で取り出されていない限り、プロトコルにおけるコアの関与を必要とする。CC6フローにおいて、パワーダウンは、DVMターゲットのための無効化として機能する。しかし、保持のために、終了時のリセットは、引き出されなくてもよく、DVM操作のサービス又は構造を無効にするランプアップの何れかであり、TLB及びBTBを含み、前の保持へのエントリが発生してもよい。iキャッシュは、キャッシュフラッシュシーケンスで無効化されていてもよい。DVM操作は、プローブとは異なり、非インタラプトソースからの保持の終了をサポートするために稀であると仮定してもよく、DVMのトリガされた終了は、コアが非プローバブルC1状態である間にプローブに沿った終了パスに類似していてもよい。以下のコードは、プローブパスを処理してもよい。
ClrCPULowPwrPre_ml[i]=(〜CPULowPwrReq[i]|SrqCPUPrbReq[i]|EarlyIntrReq[i])&CPULowPwrActive[i]&〜WaitClrCPULowPwr[i]&〜ClrCPULowPwrFound;
SrqCPUPrbReq[i]=((AnySrqPrbVal_dl|SrqAnyCPUPrbRsp)&〜SrqMaskPrbWakeUpCPU[i])|CkExitToPstate_dl。
【0106】
DVM検出のローパワーからの終了が発生してもよく、IobcOrHaltの変更なしで終了が一度完了すると、エントリが発生してもよい。iキャッシュがフラッシュされていても、SMPモードでのコアは、iキャッシュ無効化DVMに応答する必要があってもよく、DVM操作のCPUQACTIVEデアサートを表示してもよい。
【0107】
コアサイドのQチャネルのロジックは、コアが保持している間に処理されてもよい。これは、動作電圧が所定の位置であり、保証された低いdi/dtそのものであることを意味する。これは、NB AltVidと同じ制約である。バックアップのため及び潜在的に低い保持電圧のために、モードは、ソフトウェアでのTLB及びBTBを無効化するようサポートしてもよく、それからSMPビットをオフにしてもよい。このモードにおいて、Qチャネルハンドシェイクのアンワインド(unwind)は、終了の唯一のソースとしてインタラプトを仮定することにより矮小化してもよいし、共にQチャネルハンドシェイクを無効にしてもよい。後者は、簡単なアーキテクチャであるが、予想外の方法でコアへのインタフェースのリスクを伴う。
【0108】
統合ノースブリッジ280からCKへのRCC3シグナリングにおいて、XVコンピュータユニット内のコアは、例えば非コア毎のC状態で、RCC3の全てを一度に入り、このように、RCC3エントリとともにnbsynパワーオフに常に結合する。これは、RCC3(対プローブ可能C1)及びnbsyn電源オフの両方のシグナルへのNB_PwrMgtReqPrbEn==0を許容する。RCC3の1つの実装の間、これらは、分離される必要がなくてもよく、RCC3はコア毎であり、nbsyn電源オフはCPC又はクラスタ毎である。nbsyn電源オフは、別々のNB−>CKインタフェースシグナルに分離されてもよく、NB_PwrMgtReqCciEnとしてそれを参照し、これはRCC3又はCC6に入るラストコアがクリアされるのみである。
【0109】
CC6を入力するために、統合ノースブリッジ280は、CKに対してクロッキングリクエストのパワー切り替えを要求してもよい。CC6は、キャッシュとコア状態がフラッシュされたときにのみ許可される。CC6は、RCC3対追加の電力節約を提供するが、終了時に状態の復元を要求して、終了待ち時間が増加する。L2からの復元のときのCC6終了は、L2がCC6(別名XC6)の中であることを含む全てのCPCである場合にDRAMから、〜20μsから〜40μs及び〜80μsのときである。RCC3終了は〜lμsである。CC6終了は、CC1又はRCC3より異なっていないトリガであり、それは、IobcOrHaltをクリアする保留中のAPICインタラプトエッジを使用するのに用いられ、したがって終了条件を生じる。
【0110】
GIC−400は、プロセッサスリープビットを実装していない。ハードウェアの実装は、GIC−400でのディストリビュータと共通の配置のCPU102インタフェースからのアウトプットで動作することが期待される。GIC−400は、3つのモードでそのCPU102インタフェースでのFIQ/IRQの動作をプログラムしてもよい。これらは、
(1)GICからのnIRQCPU[n]/nFIQCPU[n]ピンが全ての状況で駆動される通常モード、
(2)レガシーFIQ/IRQピンを有するGICアウトプットをオーバーライドするバイパスモード、及び
(3)低電力終了のためのタイプのインタラプトの存在下での電力コントローラにnIRQOUT[n]/nFIQOUT[n]ピンを代わりにドライブし、コアにIRQ/FIQピンをマスクするバイパス無効モード、を含む。
【0111】
実施例の方法として、通常モードは、実施され及び存在する統合ノースブリッジマスキング及びインタラプト起動メカニズムが使用されてもよい。GICは、全ての状況にアップしていると仮定し、電源マネージメントは、エッジがコアによって表示されていないケースの周りに配信することを保留してもよい。これは、アラウンドC6(RC3及びC6のために使用され、存在するC状態インタラプトマスキング)を意味し、CC1のための無効は、ハードウェアマスクを形成してもよい。C6において、マスク(C6終了リセット)をクリアすることは、ソフトウェアによって実行されてもよい。全てのStpClkマスクは、アラウンドC6で行われてもよい。C6マスクは、GIC−400フローのソフトウェアの代わりにハードウェアによって設定されているので、別個の統合ノースブリッジのマスクは、StpClkイベントの周りのエッジをフィルタすることを要求されない。統合ノースブリッジハードウェアは、IobcOrHaltステータス及びSTANDBYWFIアサーションに基づいてStpClkマスクを内部で決定してもよい。StpClkマスキングは、これがStpClkを取るための保持からコアを終了してもよいように、RC3コアに設定されない。
【0112】
C6終了において、対象とされるコアがリセットしてもよく、例外ベクトルからコードのフェッチングを開始してもよく、ピンストラップカミングアウトのリセットを介して、0、FFFF0000又は別のアドレスで固定されるアドレスに配置される。このアドレスは、ブートROMに通常マップされる。例外ベクトルは、リセットハンドラがエントリであるインサイドのジャンプテーブルに実装する。リセットエントリにジャンプし、それからリセットハンドラを発生する。このコードは、リセットが、ワーム/コールドリセット対C6終了のために引き出されたかどうかを判断するために、C6ExitReset SPRをチェックしてもよい。C6終了は、それからC6ハンドラにジャンプしてもよく、ワーム/コールドリセットがブートコードにジャンプしてもよい。統合ノースブリッジ280が、例外ベクトルが配置されているアドレスを指定する選択を有していることを与えられると、統合ノースブリッジ280は、効果的なuniquify C6終了対ワーム/リセットのブート後にベクトルを再配置することを選択してもよく、そのためリセットハンドラはタイプをチェックする必要がない。これは、異なるメモリ104の領域に配置されるC6ハンドラを可能にしてもよく、このため、C6終了のROMから最初のフェッチを回避するためにブートROMの代わりにより速いDRAMが配置されてもよい。これを可能にするために、ガスケット210は、例外ベクトル配置のソフトウェアのプログラマビリティを実現してもよく、このため、BIOSがリセットフローを完了した後、BIOSは、将来のC6終了の他のオフセットにそれを設定してもよい。例外ベクトルのメモリ104のマッピングは、ブート結果の確保を有することに注意し、その場合には、PSPは、DRAMを初期化し、ガスケット210にクレジットを送る前にそこに安全なブートコードをデポジットし、効果的にDRAMにマップされるブートコードを可能にする。安全ではないブートは、ヒューズ構成されたアドレスとしてブートROMに配置されてもよい。C6終了又は安全なブートは、DRAMでFDF7レンジにあるC6領域のアドレスに例外ベクトルをピンストラップしてもよい。ガスケット210は、それから、ヒューズ又はC6ExitResetCCIシグナリングに基づくこれらのレンジの間で選択する。
【0113】
コアは、implicitXC6を実行する。これは、CC6に入っている最後のコアの上のXC6に自動的に入ることを意味する。RXC3は、最終的な結果としてのクラスタ状態が全てのRCC3又はRCC3とCC6コアとの混合であるC状態に入っている最後のコア上でL2の保持を必要とすることによって実行されてもよい。RXC3は、キャッシュフラッシュの後に一般的に使用されてもよい。
【0114】
L2は、フラッシュされずに(L2休止中モード)残っていてもよく、RXC3からサービスプローブに強化する。最後のコアは、最後のキャッシュフラッシュ(潜在的なXC6要求の一部)としてマークされなくてもよく、プローブは、それをその状態に返す前にそのL1がフラッシュされているにもかかわらずRXC3からの強化によって取り扱われてもよい。RCC3は、キャッシュフラッシュの後のみの存在を許すのに使用されてもよく、モニターによって後退される。
【0115】
RXC3モードは、およそ80usであることを期待されたDRAMセーブ/リストアペナルティに起因して、より高いXC6終了遅延時間の危険性を減少する。RXC3は、これを〜lμsに減らす。これは、プローブのための長い遅延時間である。しかし、インタラプトのために短い。クラスタは、XC6とRXC3(CC6とRCC3とともに)との間でダイナミックに再構成するSMUに応じてもよい。RXC3サポートは、RCC3の拡張であってもよい。RCC3に入ることを要求している最後のコアにおいて、統合ノースブリッジ280は、コアの側のL2とともにQチャネルハンドシェイクを実行してもよい。
【0116】
一般的にXC状態のサポートに対し、L2スタンバイハンドシェイク(ACINACTM/STANDBYWFIL2)が実行されてもよい。これは、NbBusy要求を満たし、それは、アーキテクチャ的なアイドルであるにもかかわらず、それがパワーマネージメントの準備ができていないシグナリングのCPCの方法である。ARMにおいて、ACINACTM及びSTANDBYWFIL2のためのコミットポイントは、プローブドレイン及びNbBusyから異なる。したがって、ハンドシェイクは、ローパワーに委ねる前に実行されてもよく、それからプロトコルにより、L2は、統合ノースブリッジ280が欲するものに関係なく、STANDBYWFIL2を見ることを禁ずることが許される。コミットメントの後にドレインし、L2は、ハングアップを防ぐNbBusyをドロップすることを保証する。したがって、XC状態のために、ACINACTM/STANDBYWFIL2は、RCC3又はCC6に入っている最後のコア上で実行されてもよく、そのハンドシェイクは、RXC3のためにL2 L2QACTIVE/L2QREQnハンドシェイクと平行に進行してもよい。XCハンドシェイクプラス、ラストコアのRCC3ハンドシェイクの両方が完了しているとき、SetCPULowPwrは、進行することを許されてもよい。
【0117】
RCC3と同様に、RXC3は、TLB、BTB無効、SMPモード無効(XC6と同様)又はSMPモードの下で残された非フラッシュの何れかが許可されてもよい。単一のクラスタの実行において、一度そのクラスタがRXC3に入ったら、システムのコアは、DVMを出さなくてもよく、L2QACTIVEデアサーションは、帰属されなくてもよい。キャッシュがフラッシュされ、インタラプトがGIC−400でマスクされることで、L2QACTIVEデアサーションのために他のいかなる条件もあってはならず、L2 Qchannelインタフェースは、CPU102の1つのように些細であってもよい。クリーンアップは、保持からの最初の終了を一度実行されてもよく、インタラプト配信が起こる。マルチクラスタSOCとともに、クラスタがSMPモードから無効であった場合には、DVMブロードキャストハンドリングを扱うことが実行されてもよい。この状況において、L2は、保持電圧をL2QACTIVEに下げる間に処理を残してもよく、終了を指定されたコア上でL2QACTIVEデアサーションからIobcOrHaltクリーニングを生成してもよい。
【0118】
複雑なパワーゲート(登録商標)モード(XC6)が使用されてもよい。XC6エントリは、RXC3とちょうど同じようなACINACTM/STANDBYWFIL2ハンドシェイクを使用してもよい。XC6の間、ガスケット210がパワーオフとなり、全てのクレジットが統合ノースブリッジ280によりリリースされるまで、ガスケット210は統合ノースブリッジ280と通信することができない。このように、ガスケット210は、クレジットを受け取る準備があるとき、ResetUcodeGoをドライブする責任があってもよく、これは、デアサーションのリセットの後にすぐにありそうである。ガスケット210は、全てのコアのデアサートのためにResetUcodeGoをSTANDBYWFIL2及びSTANDBYWFIに結び付けることができてもよい。STANDBYシグナルは、パワーゲート(登録商標)の間に1に隔離し、それから0にリセットする。0は、隔離がCPLによってリリースされるまで、ガスケット210に露出されなくてもよい。その場合、ガスケット210は、アサーティングResetUcodeGoによってクレジットを受け取る準備をしてもよい。このシーケンスは、ブートとしてXC6終了のために同じであってもよい。後者のために、統合ノースブリッジ280は、ブート理由の確保のためにResetUcodeGoアサーションのクレジットのリリースを延ばしてもよい。これは、CC6終了の場合でなくてもよい。
【0119】
キャッシュ/ステートフラッシュが実行されてもよい。存在する統合ノースブリッジ280モニターは、最初の停止エントリで深いC状態滞留を予測することを試みる。この成功のどちらの結果も即時のフラッシュリクエスト又は失敗を許容し、これは、浅いC状態(CC1)を残す。このように、ショートC状態インターバルにおいて、失敗が予測されてもよく、インタラプトの起動は、低い遅延時間であるCC1から移行の必要があってもよい。このモニターは、タイムアウトの後、より深いC状態への移行に予測された失敗を許容する第2の待ちメカニズムにより、予測できないこと又はワークロードの変化をカバーすることによって、支持されている。CC6+状態は、これらのモニターによって支持され、RCC3は、浅い(プリフレッシュ)及び深い(ポストフラッシュ)の何れかで考慮されてもよい。また、コア(CC)状態毎及びCPC(XC)毎のモニターカバーの2つの異なるレベルがある。
【0120】
モニター及び待ちメカニズムの何れかによって発生するフラッシュリクエストにおいて、StpClkは、目標とされたコアに送られてもよい。コアは、キャッシュ(及び/又はRCC3対CC6に従う状態)をフラッシュしてもよく、統合ノースブリッジ280にフラッシュされた状態のシグナルに適切なビットをマークし、それから類似しているプリフラッシュに停止を再び入れる。統合ノースブリッジ280は、停止とともにフラッシュ状態を観測してもよく、CKにクロッキング/パワーリクエストを引き起こす場合により深いC状態に進んでもよい。
【0121】
クラスタは、ハードウェアL2フラッシュウィジェットを実装し、通常明白なXC6で使用され、コアは、フラッシュを開始するために利用することができない。潜在的なXC6は、コア上で実行されるので、コアは、基礎的なソフトウェア及びx86のコアと同一のインタフェースのハードウェアにするようなフラッシュを開始してもよい。
【0122】
コアは、L2FLUSHREQがアサートされ得る前にWFIであってもよい。コアは、SPRを通してフラッシュリクエスト開始することに使用されなくてもよく、完成を待っている。このように、統合ノースブリッジ280のフローは、低パワーで入っているラストコア上のL2フラッシュリクエストを含まなくてもよいので、ソフトウェアは、キャッシュメンテナンスオペレーションを用いたL2フラッシュを実行してもよい。このアプローチで、スペシャルロジックは、フラッシュングL2のために統合ノースブリッジ280を要求しなくてもよく、統合ノースブリッジ280は、L2が、低パワーに入るラストコアが観測されるための要求のときにフラッシュされることを想定してもよい。
【0123】
x86ユーコードにおいて、APICインタラプトは、スリープでないとき、自動的にマスクされる。長い期間のサービスルーチン、例えばキャッシュ及び/又は状態フラッシュのために無中断のコードの長い範囲を避け、ユーコードは、インタラプトチェック(intchk)において散在し、ペンディングインタラプトのためにコアのインタラプトエッジを試し、存在するならばフラッシュを中止する。クラスタは、同じソフトウェア機能をサポートしない。その代わりに、インタラプトは、以下に記す
図3の全部のC6エントリフロー300を通してマスクされることになる。ステップ310で、適切なシステムコントロールレジスタCビット、データ、又は、統合キャッシュの有効は、追加のデータキャッシュアロケーションを防ぐためにクリアとなってもよい。ステップ315で、L2プリフェッチは、CPU拡張コントロールレジスタのビット[38,36:35,33:32]にゼロを書くことによって無効にしてもよい。ISB命令は、CPU拡張コントロールレジスタ書き込みが完了していることを確実にして、ステップ320で実行されてもよい。DSB命令は、任意の前のプリフェッチリクエストの完成を確実にするために、ステップ325で実行されてもよい。ステップ330で、L1データキャッシュからの全てのデータは、クリーンになり無効にされてもよい。このプロセッサのためのL2デュープリケートスヌープラグRAMは、空であってもよい。これは、このプロセッサに発せられたマルチプロセッサの中の他のプロセッサから、いかなる新しいデータキャッシュスヌープ又はデータキャッシュメンテナンスオペレーションを妨ぐ。ステップ335で、CPUECTLR.SMPENビットがクリアされてもよい。SMPENビットでこれをクリアすることは、マルチプロセッサの他のプロセッサによって、キャッシュ命令、TLB又はBTBメインテナンスオペレーションブロードキャストからプロセッサを防ぐことにより、コヒーレンシとなることを可能とする。ステップ340で、システムは、インタラプトがパワーダウンしているプロセッサに送信されないことを確実にする。DBGOSDLR.DLKダブルロックコントロールビットは、デバッグインタフェースに静止していることを強いるステップ345でセットされる。ISB命令は、コミットされた前のステップからシステムレジスタの変更の全てを確実にするためにステップ350で実行される。DSB命令は、クリアされたSMPENビットが完了する前に、マルチプロセッサの中のどのプロセッサによっても出される、全てのキャッシュ命令、TLB及びブランチ予想メインテナンスオペレーションを確実にするステップ355で実行される。WFI命令は、実行され、プロセッサがアイドル及びWFIローパワー状態であることを示すステップ360において、アウトプットのためにモニターされるSTANDBYWFIアウトプットである。プロセッサ102アウトプットクランプは、ステップ365で活動的にされる。パワーは、ステップ370でプロセッサ102のパワードメインを取り除く。
【0124】
インタラプトマスキングは、ステップ310の前にCPSR.I/Fビットを設定することによって行われる。ステップ310は、プロセッサをノンコヒーレントにしてもよく、このように、ハンドラがこれを知り、入ることでインタラプトを要求しなくてもよい。
【0125】
Intchkは、実行される必要がなくてもよい。なぜならば、
(1)ハードウェアL2フラッシュウィジェットを実装することによって、唯一のソフトウェアキャッシュフラッシュ要求がL1であり、これは、C6エントリがシングルディジットマイクロセコンドレンジのみであるキャッシュフラッシュオーバーヘッドを意味する5000サイクルのみ受け取ることであることと、
(2)クラスタは、インタラプトが例えCPSR.I/F及び次の命令を行うことを進めることによってマスクされた場合であっても、IRQ/FIQアサーション上のWFIを終了してもよいからである。
これは、C6エントリの中止メカニズムとして用いられてもよく、ここで、パワーコントローラが、CPU102によって要求されたパワーダウンを介して次のことを避ける選択をする。これは、ステップ310の前にCPSR.I/Fマスキングで始まる途中停止不可全体シーケンスを有効にするステップ340で提示されるフロー300のオプションの態様であってもよい。
【0126】
キャッシュフラッシュは、SOCのロングポールではないキャッシュフラッシュの非インタラプトの間隔で、最悪のケースC6インタラプト潜在性のためにC6 entry+exitに増加されなくてもよい。フローは、最後のコアに入っているCC6、別名XC6状態への提案されたフローから変化し、A15のそれに類似したソフトウェアフローを用いたL2をフラッシュする必要がある。理由は、黙示のXC6が実装されるからである。ソフトウェアL2フラッシュは、より長くとるようにしてもよい。合理的なインタラプトサービス潜在性を保証するために、intchkは、パフォーマンスのために、x86による同一性のために含まれてもよい。intchkは、CCI_INT_EDGEレジスタ(F3x2F0)を介してFIQ/IRQ状態によって統合ノースブリッジ28サイドに実装されてもよい。このように、キャッシュフラッシュルーチンにおいて、ソフトウェアは、CPSR.I/Fビットを設定してもよく、それから、キャッシュフラッシュのチャンク(chunk)でプレマスクされた端部のポーリングをインターリーブしてもよい。チャンクサイズは、例えばまれにフラッシ帯域幅に影響を及ぼさないintchkとし、効率間の妥協で決定されてもよく、無中断の間隔に、開始と終了の待機時間の状態に対して取るに足らないようにされてもよく、RCC3のために〜2μs及びCC6のために〜25μsである。エッジが、ステップ350でキャッシュフラッシュの間にレジスタの中に見られる場合、フラッシュルーチンは、キャッシュの割り当て(ステップ310)とL2プリフェッチ(ステップ315)を再有効化することによってコヒーレンスを再度有効にしてもよく、それからインタラプトをとるCPSR.I/Fをクリアにする。
【0127】
シーケンスが、CPUECTLR.SMPENを無効にするステップ335に進行した場合、ステップ360まで実行する(ステップ340をスキップする)。これらのステップの間に、統合ノースブリッジ280がFIQ/IRQを対象にする場合、次の命令のWFIイン及びアウトのステップ、キャッシュアロケーション、L2プリフェッチ及びSMPが再有効される。そうでないない場合、システムはC6をコミットする。統合ノースブリッジ280は、C状態にコミットしながら適切にインタラプトをマスクすることを行ってもよく、ステップ340は不要であってもよい。ステップ340は、パワーコントローラ無効インタラプト及びC6エントリへ通信することの間のハザートを避けるために要求されてもよく、ステップは、統合ノースブリッジ280がサポートする。この実装は、パワーコントローラでソフトウェアを無効にセットするステップ340を要求し、そして、エントリをシグナルするWFIを続行する前に、ACKバックシグナリングの適当なマスキング及び全てのペンディングIRQ/FIQデリバリを静止することを要求する。実施は、インタラプト無効の要望を伝達するステップ360を使用してもよく、インタラプト及びコミットの間のハードウェアインターロックに応じてもよい。
【0128】
1つのコアのみは、コアがCC6を出るときにL2をフラッシュしてもよく、これは、アボートされるL2フラッシュを許可することによって難しくなる。L2Iコントロールビットは、最後のコアを上へ示し、マルチプルコアの完了の存在では、L1はフラッシュし、L2の登録取り消す。これは、1つのコアが最後になること及びL2フラッシュを行うことをコアに強いることを許可する。これを行う1つの方法は、コアがベクタを設定する最後のコアであることを確認するメモリ104で、別々のキャッシュフラッシュドベクタでアトミックアクセスを実行することである。L2フラッシュを行うコアは、アボートのために任意のPwrStatusLo(F5xF0)CC6ビットクリーニングをポールしてもよい。
【0129】
コアは、SMUブロック内部でDAPコントローラを実施してもよい。これは、CoreSightデバッグ実施の一部である。スタンダードデバッグは、JTAG及びBPピンの何れかを介してのDAPへのインタフェースの道具である。DAPは、クラスタのパワー状態を知ることなく、クラスタ又はシステムリクエストを生成してもよい。DAPリクエストは、KDSMと呼ばれているVDDドメインに存在するCoreSightロジックとされてもよい。KDSMは、ACPポートを介してのリクエストをクラスタにデバッグし、システムは、ガスケット210へのAXIバスを介して要求する。クラスタ及びシステムの何れかにアクセスするDAPのために、VDDは、PC6から傾斜をつけられる必要がある。さらに、ガスケット210を介してシステムにリクエストするために、RXC3又はXC6が出される必要があってもよく、再びnbsynスピニングを得て、後者の場合、UcodeRsetGo及びクレジットリリースを要求する。暗黙のXC6の実施のために、1つ以上のコアはCC6から現れてもよい。
【0130】
デバッグリクエストをサービスするローパワー状態から適切なロジックを得ることは、DAPが、パワーマネジメントロジックでCSYSPWRREQ/CSYSPWRACKインタフェースを実施する。デバッグリクエストを挿入する前に、DAPは、CSYSPWRREQを最初にアサートしてもよい。DbReqインタラプトは、クラスタがRXC3及びXC6の何れかである間にCSYSPWRREQがアサートされる場合に、シグナルされてもよい。DbReqは、全てのコアを起動させてもよく、インタラプトハンドラは、NB_MISCを介してDbRdyをシグナルしてもよい。DbRdyは、CSYSPWRACKにシグナルされてもよい。これは、リクエストするDAPを許可する。終了において、DAPは、CSYSPWRREQをデアサートしてもよい。コアを許可するために、ローパワーに再入力するC状態から、CSYSPWRREQは、DbReqハンドラをポールするためにSPR上で露出されてもよい。デアサーションを見ることにおいて、ハンドラは、DbRdyをクリアしてもよく、このようにCSYSPWRACKデアサートしてもよく、インタラプトから戻る。OSアイドルのルーチンは、引き継いでもよく、WFIリエントリを許可し、それからC状態エントリプロセスを再開する。これは、PDMモードに似ている。しかし、クラスタは、SBI_IAIにHDT2インタフェースを実装しておらず、これは、SBI_IAIを介してシグナルされた終了を有する代わりに必要とされてもよい終了のためのポールを意味する。
【0131】
x86において、P状態は、ACPIコールを介してOSに露出されてもよい。OSは、事前に定義されたMSRを呼び出すことによってP状態変化を要求し、ユーコードが、統合ノースブリッジ280のCofVidCtlレジスタにP状態 idを捕らえ、書きこむ。P状態 idは、プログラムされた周波数(FID/DID)と電圧(VID)セッティングとを有するP状態テーブルエントリにマッピングする。電流と、要求された周波数と、電圧セッティングとの間で異なるかどうかによって、周波数及び/又は電圧の変化が要求されてもよい。統合ノースブリッジ280は、内部で2つの要求まで生成されてもよく、電圧の増加は、電圧の低下を前もって命令されている周波数の変化の前であるような要求を命令してもよい。電圧変化は、コアとの相互作用なしで統合ノースブリッジ280とCPLとの間の内部で満足されている。周波数変化は、コアの相互作用を要求する。統合ノースブリッジ280は、他のCU/CPCによって、又は、電圧変化、外部StpClk若しくはキャッシュフラッシュ等の他のパワーマネージメントリクエストに沿った統合ノースブリッジ280によって要求されたこれらの周波数変化を命令する。周波数変化が選択されるとき、統合ノースブリッジ280は、CU/CPUのnon−CC6コア及び終了からのブロックCC6コアの有効な全てのStpClkを目標にする。コアは、StpClkを取り、周波数変化、静止の全ての未処理のトラフィックを認識するためにHTC SBCシステムマネージメントブロードキャストに送り、それからConnectMaskをドロップする。一度StpClkの目標とされた全てのコアは、これらのステップを完了し、これらペンディングCC6は、エントリを完了し、統合ノースブリッジ280は、CPLに周波数変化リクエストをしてもよい。完了において、統合ノースブリッジ280は、CU/CPCにStartClkエッジを発生させ、その静止を終了しOSに戻しユーコードを促す。
【0132】
ARM実装において、ACPIコールの代わりに、OSは、CPUfreqカーネルドライバを呼び出す。これは、C状態のためのCPUidleルーチンのそれと似ているアンドロイドにベンダー中立APIインタフェースを実装する。Android(登録商標)のために、CPUfreqインタフェースは、最大のパーセンテージによって示されるパーフォーマンスレベルのそれである。CPUfreqルーチンは、our 8 discreatP状態レベルの1つをパーセンテージレベルのマップとしてもよく、統合ノースブリッジ280のCofVidCtlレジスタの中に要求してもよい。その時点から、周波数変化の同様なフローが期待されてもよく、ピッカー選択、静止、周波数リクエスト及び非静止を必要とする。静止及び非静止部分は、実装において異なっているものである。ここで、以下に述べられている
図5及び
図6で示されている2つの方法は、プロトコル/ハードウェアの複雑性及び性能の形式で提示されるリスクを軽減するために、個々に又は纏めて実施されてもよい。一般に、これらの方法は、WFI又はWFE状態で定義されたARMのプロセッサを配置するGICを用いてCPUに割り込んでもよい。何れかの状態は、さらに命令を実行すること、及び、クロックドメインの境界を越えて新しいトランザクションの開始をすることからCPU420を防止してもよい。
図5及び
図6については、以下詳細にインタフェース/フローを提供する。静止の両方のタイプは、リスク軽減のために実装されてもよく、コンフィグによって1つを有効にしてもよい。インタラプトベースの1つは、S3のために実施される必要があってもよく、ガスケット210ベースの1つと置き換えられなくてもよく、P状態をサポートする付加するコストは、ゼロの近くであってもよい。ガスケット210ベースの1つは、より良い性能を有してもよいが、プロトコル及びcross−IP検証リスクを伝える。
【0133】
既存のP状態ロジックに接続の実施例のダイアグラム400は、
図4に示されている。
図4は、既存のP状態ロジックを示す。
図4に示すように、インタラプトを提供する一般化されたARMインタラプトコントローラであるGIC410がある。GIC410は、統合ノースブリッジ280の中に配置されていてよい。また、CPU420も示されている。CPU420は、アトラスクラスタ290の一部であってもよい。ガスケット430は、
図4に示されており、ガスケット210の一部であってもよい。また、NBCOR440が示されている。NBCOR440は、既に議論されているCCIプロトコルを含む統合ノースブリッジ280の一部であってもよい。GIC410及びCPU420の各々に見られるように、ガスケット430は、NBCOR440と通信してもよい。これらの通信及び信号の各々は、下記において説明されるであろう。
【0134】
インタラプトベースの静止又は非静止は、P状態がFIQにStpClkをフッキングすることによってStpClkベースの静止を行うことである最小ハードウェアコストのアプローチを提供してもよい。FIQは、セキュアインタラプトとして使用されてもよい。信頼ゾーンは、コアとGIC410に実装されていない場合、FIQは可能であってもよく、StpClkは、簡単で、性能に殆どリスクを提供しなくもよい。通常のインタラプト(IRQへ有線)のために、ソフトウェアの規則では、IRQ例外ベクタ上の非再入である。これは、優先順位の高いIRQインタラプトが到着した場合、優先順位の高いインタラプトが、現在コアによってサービスされたインタラプト優先順位の低いIRQをプリエンプトすることは許されないことを意味する。パフォーマンス上の理由からAndroid(登録商標)は、上下の半分のインタラプトサービスルーチンを破る。上半分では、半分がインタラプトできない。コンベンションは、コールを返すこと、及び、インタラプトコードを返すことの前に、単にインタラプトをとることであり、行われるのに必要なことを把握し、それから実際の仕事を行うOSで下半分をスケジュールする。下半分は、それから実際の仕事を行うことである。
【0135】
しかし、全体的な異なる例外タイプでは、ハードウェアは、例えば、スタックポインタ、コールリターンのために使われるリンクレジスタ及びステータスレジスタ等のバンキングクリチカルコントロールフローレジスタによって完全にプリエンプト可能であることを保証する。慣例によると、IRQは、FIQをマスクしない、これによりIRQハンドラのとき後者がとられてもよい。非セキュアシステムにおいて、StpClkは、少しの待ち時間でもよく、P状態の変化のために必要とされ、与えられたコアは、静止された状態につぎ込まれる通常の作業が取り出される。しかし、信頼ゾーンが実装されている場合、FIQインタラプトは、セキュリティモニタのフレームワークに落とし込む必要があってもよい。P状態変化は、登録されてもよく、他のStpClkソースは、安全なサービスとして供給する。FIQピンは、他のサービスと共有されてもよい。これを行う1つの方法は、慣例に従って最小限であるとFIQルーチンの上半分に依存することであるが、システム全体のパフォーマンスに影響を与える信頼されるサービスに不正な動作をするリスクがある。StpClkは、バリア同期静止として行われてもよく、そして遅く着いたスレッドは、ひどく並列化されたプログラムとして扱われる。代替は、FIQ例外ハンドラの再入をすることである。真の他のアーキテクチャと同様の再入の代わりに、返信アドレスがスタックにプッシュされ、リンクレジスタは、かかる一つの例外のために再入を可能にし、各例外モードにバンクされ、リターンアドレスのため、バンクされたリンクレジスタバンクを用いてスーパーバイザモード(SVC)への切り替えを行うこと、そうして、例外ベクタへの別のエントリのためにFIQリンクレジスタを解放することである。これは、FIQへの再入の2つの場合を許容してもよい。他の信頼されたサービスのStpClkのプリエンプションをサポートするために、その後、StpClkを除いた他の信頼されたサービスのためにマスクされたインタラプトを残しながら、FIQ例外ハンドラは、SVCモードに切り替える必要がある。
【0136】
P状態StpClkのサービスにおいて、コードは、統合ノースブリッジ280にHTC SBCシステムマネージメントブロードキャストを送ってもよく、データ同期バリア(DSB)によって全ての顕著なトラフィックを静止し、インタラプトのための待ち(WFI/WFE)の信号を送る。この場合のDSB命令は、静かな待ちとして機能する。未処理の要求への全ての応答のための静かな待ち時間は、トークンと同様にリリースするが、DSBは応答を待つのみである。有効であり/用意ができているインタフェースのACE実装が与えられ、反応を見ることは、静止のために十分であってもよい。トークンベースSDPインタフェースを用いての実装は、SOC15が必要であれば、静止シナリオのために本当の静かな待ちを必要としてもよい。WFI/WFEは、統合ノースブリッジ280への周波数変化のための準備の信号を単に送ることだけである。
【0137】
統合ノースブリッジ280がP状態変化のためにWFIのフォームでのコアの準備を見て、統合ノースブリッジ280は、クラスタへのプローブが選択されることから遮断することによってクラスタへのプローブを静止してもよく、既に選んだプローブの自由なそのパイプラインを排出してもよく、クラスタがそれらを完了すると、それらのバッファを解放する顕著なプローブを待ってもよい。一度プローブが排出されると、統合ノースブリッジ280は、CPLでP状態変更をスケジュールする前にクラスタと追加ACINACTM/STANDBYFIL2を行う必要がある。ACINACTMは、SrqCPUProbesDrained及びSTANDBYWFLIL2ハンドシェイクがSetCPULowPwrピッカーで準備をブロックする追加の用語であってもよいものである。このL2ハンドシェイクは、P状態の場合を除いて、RXC3及びXC6のために実行されるものと似ており、それはキャッシュフラッシュで些細なものでなく、プローブは活発にドレインされる。プローブドレインの命令は、x86で実行されてもよいことの逆であり、コミットはドレインの前に起き、クラスタのために、ドレインはコミットの前の最初にあるとよい。統合ノースブリッジ280は、EnDrainPrbOnHtStpClkを介してこのモードをサポートし、コミットの前にプローブドレインを開始する。コアのために、EnDrainPrbOnHtcStpClk=1は、インタラプトベースの静止が有効であるときに要求されてもよい。
【0138】
StartClkのWFI変形は、クラスタがP状態変化の最中にある間、含んでもよく、クラスタは、インタラプトをせず又はシステム要求をしなくてもよい。インタラプトエッジは、パワーマネジメントイベントの間にx86のAPICエッジでされているように統合ノースブリッジ280によってマスクされている。しかし、ソフトウエアは、統合ノースブリッジ280への要求を必要とするので、既に記述されたintchkを実行しなくてもよい。このように、intchkの代わりに、統合ノースブリッジ280は、一度CPLがP状態変化を完了して静止からコアを起動してもよい。これは、StartClkインタラプトで行われてもよい。しかし、StartClkインタラプトは、StpClkがプリエンプトされる必要があることを意味する。FIQ再入がStpClkの間に許容される場合、信用ゾーンが再入を既に要求している場合、3レベルまで加わる。他の安全なサービスは、非再入にされてもよいし、StpClkを超えた非スタンダードインタラプト再入を実行にしてもよい。StpClkがStartClkである中でのインタラプトに好ましい唯一のインタラプトが与えられ、ショートカットが、スタックを押す代わりに多目的レジスタでリンクレジスターアドレスを除く等が行われてもよい。後者は、最も高いFIQ優先度を有するようにStartClkの構成を必要とし、信用ゾーンの与えられたベンダーサポートを可能としなければならない。
【0139】
WFI500を用いたP状態のシーケンスの例示的な図は、
図5に示されている。WFI500を用いたP状態シーケンスは、ステップ510においてドライバリクエストP状態を含んでもよい。ステップ520において、全てのコアへのStpClk送信は、実行され、それからSTANDBYWFIのための待ちがなされる。ステップ520とほぼ同時に、ステップ530は、nFIQ上で見られるStpClk及びソフトウェアがFIQインタラプトハンドラルーチンを入力することを提供する。ステップ540において、FIQインタラプトハンドラは、HTC SBCブロードキャストDSB(静止)及びWFI命令を起動する。ステップ550において、プローブは、ドレインされ/静止され及びACINACTM/STANDBYWFIL2ハンドシェイクが始められる。ステップ560において、コアFID/DID/VIDが変化し、StartClkはSPIを介して送られる。ステップ570において、nFIQは、WFIからコアを起動し、インタラプトハンドラにジャンプし、StartClkインタラプトをクリアする。
【0140】
StpClkからの起動のもう1つの方法は、静止の後のWFIの代わりにWFEを使用することである。WFEの起動は、EVENTIピンを介してインタラプト及びイベントの何れかで動作できる。このように、全てのインタラプト、IRQ及びFIQは、マスクオフされてもよく、EVENTI上でまだ起動でき、StartClkの目的に基本的に役に立つ。WFE StartClkを有効にするために、STANDBYWFEは、全てのP状態(HtcStpClkActiveCoreに基づく)及び他の全ての状況のためのSTANDBYWFIのために〜ConnectMaskに多重送信されてもよい。StartClkは、それから終了を始動するこのモードでEVENTIに接続されてもよい。コアがWFEから終了すると、まだStpClkハンドラにあってもよく、インタラプトと終了をアンマスクとするであろう。
【0141】
複数のクラスタをサポートするために、他の全ての状況でP状態及びEVENTOを行うとき、StartClkエッジは、EVENTIに多重送信されてもよい。通常モードにおいて、全てのEVENTOは一緒にORedとなり、EVENTIに追いやられる。いくつかのEVENTOがないかもしれないので、それらは交換されてもよく、内部のStartClkエッジがEVENTIにマップされてもよい。
【0142】
コアのために、configによるStartClk変形の何れも有効であってよい。既存のStartClkEdgeは、EVENTO及びStartClkに割り当てられたGIC410のディストリビュータSPIピンの両方に送られてもよい。WFE StartClkモードが有効であるとき、ConnectMask及びEVENTIは適切なWFEシグナリングを選択してもよく、StartClkと関連したSPI idは無効であってもよい。WFI StpClkモードのために、StartClk SPI idのGIC400のプログラミングは、引き受けてよい。
【0143】
コアは、StpClkサービスのときにおいて、SEV命令を実行してよいユーザーコードであってもよい。異なるコアは、異なる時間にインタラプトをしてもよく、もう一つのコアがStpClkをする前にSEVを実行する間、1つのコアが、StpClkハンドラでWFEを既に実行したかもしれない任意のソフトウェアの保証なしで可能である。適切なこのフローのサービスのために、StpClkハンドラは、WFEを実行する前に、ソフトウェアの同期を行ってもよい。統合ノースブリッジ280は、ハードウェア手旗信号及びスクラッチレジスタを提供する。StpClkハンドラは、WFEに進むためにPwrStatusLoレジスタからCC6状態を利用するとともに、ハンドラで各々のコアの存在をアトミカリーに更新するためにハードウェアメカニズムを使用してもよい。
【0144】
L2は、STANDBYWFEL2インタフェースを実装しなくてもよい。WFEの前の提供で、コアがDSB命令を実行してもよく、全ての未解決リクエストを静止し、L2へのペンディングリクエスト又は割り当てがあってはならない。これは、L2プリフェッチ又はDRAMへのビクティムがあってはならないことを保証してもよい。このような場合には、保証するために、ソフトウェアはDSBの後にWFEを遅延してもよく、それによってP状態変化にコミットすることから統合ノースブリッジ280が遅れ、STANDBYWFIL2を待たずに発生する必要がある。
【0145】
WFE600を用いたP状態静止の例示的な図が、
図6に示されている。静止600は、ステップ610においてP状態を要求するドライバを含む。ステップ620において、StpClkは、全てのコアに送られ、システムは、STANDBYWFEのために待つ。ほぼ同時に、StpClkはnFIに見られてもよく、ソフトウェアはステップ630でFIQインタラプトハンドラルーチンに入る。ステップ640において、FIQインタラプトハンドラが準備され、HTC SBCが放送され、コア間のソフトウェアの同期は(SEV用)、DSB(静止)で発生し、L2の静止のためのソフトウェアの遅延は、WFE命令で発生する。ステップ650においてプローブは、ドレインされ/静止されることである。ステップ660において、コアFID/DID/VIDは変化し、StartClkはEVENTIを介して送られる。ステップ670において、EVENTIはWFEからコアを起動させ、StpClkハンドラー(nFIQ)に戻る。
【0146】
静止に基づくStpClk/StartClkは、既存の統合ノースブリッジ280から最少の付加される論理を必要とする。しかし、パフォーマンスでのリスクであり、信用ゾーンのインタラプトがコアの内部で取り扱われる必要がある場合、更なるソフトウェアの複雑さが加わる。これらのリスクを減らすために、静止の代わりのモードは、ガスケット210で実装され、クラスタに見えなくなることを許可される。動作し続けるためにクラスタとガスケット210との間のACEインタラプトのハイレベルにおいて、NBSYNの何れかの端部でのCCIインタフェースを静止する。ガスケット210は、新しいリクエストをブロックし、コアの代わりに未解決な応答を待ってもよい。これは、ガスケット210で主に追加のハードウェアと上記のリスクを引きかえており、プロトコル依存性はこの実装に付属している。主なプロトコル依存性は、プローブとライトバックとの間にある。ACEにおいて、ライトバック(ビクティムリクエスト)は、他の依存性のないDRAMに対し前に進む通常の要求から別の仮想チャネル上に配置されている。クラスタは、これらのライトバックが完了するまでブロックするライトバックにヒットしているプローブの許可によってこれを頼る。したがって、プローブを静止する統合ノースブリッジ280のために、コアはライトバックを完了することを許されなければならない。
図8に示される方法800は、ガスケット210と統合ノースブリッジ280との間で、NBSYN全体の全てのインフライトトラフィックのドレインを保証することを提供される。ステップ810において、P状態変更要求を提供する方法800は、統合ノースブリッジ280がStpClkとしての働きを静止している側波帯を通してガスケット210に信号を送る。ステップ820において、ガスケット210は、統合ノースブリッジ280に送られることから新しい非ライトバックリクエストをブロックし、全ての未解決なものをドレインする。行われたとき、ガスケット210は、統合ノースブリッジ280への「静止された」レスポンスの信号を送る。これは、HTC SBCシステムマネージメントコマンドのように動作する。ステップ830において、統合ノースブリッジ280は、選択されることから新しいプローブをブロックし、そのプローブバッファクレジットをチェックすることで完了する未解決なプローブのために待つ。ステップ840において、ガスケット210は、プローブが統合ノースブリッジ280から未解決のときのみライトバックをブロックする。ペンディングのライトバックが統合ノースブリッジ280にある限り、ガスケット210はNbBusyを駆動してもよい。ステップ850において、統合ノースブリッジ280は、全てのプローブバッファが戻され、ガスケット210がNbBusyアサートでないとき、P状態変更のみ開始することを許可されてもよい。
【0147】
非静止部分は、統合ノースブリッジ280を不活性化することにより、及び、「静止された」レスポンスを再移動することにより、ガスケット210の応答をすることで実行されてもよい。統合ノースブリッジ280は、新しいリクエストを開始する前に、ACK(レスポンス)が、以前のハンドシェイクからデアサートされていることを保証する必要がある。このように、統合ノースブリッジ280への変更は、静止のためにガスケット210へのサイドバンドリクエスト/ACKであってもよく、P状態のためのStpClkの使用が非活動的であってもよい。これは単純でなければならない、現在のデザイン中の既にある両方の状態を駆動し沈めるからである。しかし、これは更なる働きをガスケット210に加えてもよい。それらはキャッシュフラッシュ及びS3のために必要としてもよいものとして一緒にStpClkを排除することはない。キャッシュフラッシュのために、intchkが使用されてもよく、S3は重いOSであり及び関係するBIOSである。
【0148】
ガスケット静止700を用いたP状態シーケンスの例示的な図が、
図7に示されている。このP状態の変化は、2本の境界の間に配置するガスケット210のインタフェーストランザクションプログレスの行き詰まりを通して起きてもよい。シーケンス700に示されるように、ステップ710においてP状態の要求しているドライバを含む。ステップ720において、NB−QuiesceReqは、ガスケット210に送られる。ほぼ同時に、ステップ730において、NB−QuiesceReqは、ガスケット210によって見られる。ステップ740において、統合ノースブリッジは、選択されることから新しいプローブ及びレスポンスをブロックし、デアサートへのNbBusyのために待つ。ステップ750において、コアFID/DID/VIDは変化し、NB−QuiesceReqは、トラッフィクを再開するためにガスケット210に告げるようにデアサートされる。ステップ760において、ドライバは、新しい周波数でのユーザーコードを続ける。
【0149】
統合ノースブリッジP状態は、CPU P状態としての同じメカニズムから実行されてもよい。マルチクラスタシステムのために、全てのクラスタは、CPU P状態によってちょうど目標とされるシングルクラスタと対称となるように静止されることが必要である。統合ノースブリッジC状態は、不変で維持されてもよい。
【0150】
S3開始は、OSとBIOSとの間で協同によって実行されてもよい。StpClkサポートは、全てのデバイスがD3に置かれたあと、FCHへのIOリードによって開始されてもよい。FCHは、それから外部のStpClkフローを開始する。ARM StpClkフローは、全てのコアのGIC410へのSPIを介してStpClkに信号を送ることを提供するように使用されてもよい。インタラプトハンドラは、インタラプトをマスクしてもよく、それから統合ノースブリッジ280にStpGnt SBCを送ってもよい。その時、コアは、パワーオフまでStpGntでマスクされたインタラプトを維持してもよい。インタラプトハンドラは、StartClkを考慮する必要がないが、後者が静止ベースのインタラプトをサポートすることを提供するP状態変化のコードを共有する場合、そのように行ってもよい。P状態変化対ソフトウェアデルタは、特別なブロードキャストサイクルのちょうど符号化されたタイプである。統合ノースブリッジ280は、DRAMセルフリフレッシュへのエントリを開始するために全てのコアでStpGnt状態を使用してもよい。FCHがStpGntを受信した後、FCHは、時限待機を開始し、ウォームリセットを引き、VDDNBをランプダウンしてもよい。終了時に、S3は、コールドリセットに類似していてもよく、S3終了対ブートを識別するためのソフトウェアに依存してもよい。
【0151】
CSフローは、主に終了の加速安全を助けるためのS3上の別のソフトウェア層である。ハードウェアは、保存及び再開プロセスの間のその状態の追跡を保つソフトウェアのためのいくつかのCSの特定レジスタフィールドをサポートする。
【0152】
CACは、コアCACマネージャ(別名DPM)において統合ノースブリッジ280との間をインタフェースし、クラスタ内に存在しなくてもよい。DPMは、ガスケット210に実装されてもよい。DPMは、FU要求/応答インタフェースを介して統合ノースブリッジ280と通信してもよい。DPMは、クラスタパフォーマンスモニタアウトプットを使用してもよく、CACの重みを割り当ててもよい。それが実装されている場合、双方向アプリケーションのパワーマネージメント(BAPM)は、サポートされてもよい。それが実装されていない場合、BAPMは、温度ベースであってもよく、したがって、正確性が低く及びエネルギーの蓄積が無効にされてもよい。しかし、何れの場合も、SMUは、既存SmuP状態Limitを介してBAPM P状態制限を通信してもよい。
【0153】
インテリジェントP状態(iP状態)の1つの実施例は、FP調整である。これは、x86コアのHDT2インタフェースで実装される。クラスタは、CoreSightと呼ばれる似たインタフェースを有する。CPLに要求するiP状態サポートは、コアサイトにHDT2をマップすることを変化する。iP状態は、AVFS機能と共有される統合ノースブリッジ280でSMU P状態のハードウェアメカニズムを使用してもよい。SMU P状態のためのSMUと統合ノースブリッジ280との間のインタフェースは、同じことの維持を期待されている。
【0154】
C状態ブーストは、残りのコアがCC6であるとき、潜在的により高い電圧でFmaxにブーストされるようにコアのサブセットを許容する。C状態ブーストは、SMUの相互作用なしで、統合ノースブリッジ280ハードウェアで完全に処理される。なぜならば、それは、P状態変化とCC6のバックエンドで動作するので、P状態とC状態をサポートするために必要とされた変化の増加がない。
【0155】
専用のライトバックチャネルは、デッドロックを回避するために使用されてもよい。1つのハードトークンは、CPU102からVicBlk要求のためにXCS/SPBC/SPBD/MCQ/MPBDが加えられてもよい。コアは、未解決ビクティムとの衝突においてプローブに応答しない。ビクティムチャネルは、ドレインするために使用されてもよく、ビクティムコマンドが実行された後、コアはミスとしてプローブに応答してもよい。CPU102ビクティムは、保証の方法でMCTに到達することができる。
【0156】
デッドロック900のフローを示す
図9を参照する。リード(Rd)は、ステップ910においてMCTに到着する。プローブは、ステップ920において起動され、プローブは、930においてCPU102でビクティムにヒットする。CPU102は、MCTに達するステップ940でWrVicBlkを発する。しかし、それからMCTのアドレスベースの順序付けロジックは、キックし、元のRdがステップ950で完了するまでDCTに発され取得するWrBlkを許容できない。Rdは、プローブレスポンスがステップ960においてコアから受信されるまで完了しないであろう。WrVicBlkが、ステップ970においてコアに送り返されるためのTargetDoneまで、Rdのためのプローブのミスで応答しないであろう。これは、デッドロックコンディションである。
【0157】
CPU102は、ガスケット210にライトデータチャネル上でデータをプッシュしてもよい。CPU102は、CPU102が競合プローブに応答する前に、ライトバックが完了したことを示す書き込み応答を待っている。これは、ノースブリッジ280がガスケット210からデータを引き出し、ガスケット210がライトバッファリリースによって通信が行われた対象を受信した後に、提供されてもよい。CPU102がライトバックを発した場合、ガスケット210とSRIは、メモリ104にライトバックを届けてもよい。CPU102へのプローブを介して以前の読み取りからのデッドロック900は、ライトバックが完了するのを待っている。ライトバックは、このように直ちに、例えば、プローブに応答すること及びビクティム状態をダウングレードすることを含むコヒーレントを維持するための責任をガスケット210にとらせることで、ガスケット210のCPU102から承認されてもよい。ガスケット210は満たされていてもよく、ブロッキングライトバックは、CPU102の内部にあってもよく、未だプローブをブロックしていてもよい。デッドロック900は、発されたライトバックによって要因となってもよく、これらは、内部CPU102がプローブをブロックするキューを要求することである。CPU102からMCTへの仮想チャネルは、ライトバックが古い要求を通過させるMCTで作成されてもよい。
【0158】
ガスケット210は、非ライトバックの書き込みで満たされてもよい。しかしながら、これらは既に前に進むように生成することが保証されており、プローブのデッドロックを起こす内部にキューされたCPU102ライトバックをブロックすることから完全なガスケット210を防ぐインターリービングライトバック及び非ライトバックのCPU102の制限がある。
【0159】
キャッシュでダーティラインをヒットするプローブは、ビクティムが実際にDRAMにドレインされるまで反応しなくてもよい。それゆえに、デッドロックフリーシステムを生成するために、新しいライトバックチャネルが加えられなければならない。この新しいライトバックチャネルの専用のバッファは、XCS/SPBC/SPBD/MCQ/MCDに割り当てられてもよく、そのため、保証されて前に進むことが、ビクティムのために用意されてもよい。SRQは、コアからのビクティム/ライトバックのための専用の固い割当られたトークンを必要としてもよい。このライトバックチャネルは、ガスケット210の後ろに広がってもよく、ガスケット210のトークンアロケーションスキームは、ビクティムがコアからSRQに向かって進んで生成されること、及び、SRQが常にビクティムのために可能なトークンを有するであろうことを確実にしてもよい。
【0160】
デッドロックを防止するために、4ホッププロトコルは、プローブがPrbTgtフレーバーを発することが強制されてもよい。1つのCPU102クラスタのみがあることにより、CPU102からの要求のみが、GPUにプローブを送信しなければならず、それらの応答はMCTに行く。同様に、GPUから要求するRdBlkSは、CZのPrbTgt上のみであってもよく、応答はMCTに戻る。I/Oリクエストは、MCTに戻るプローブレスポンスを受信することを強いられてもよく、それからMCTは、ダーティ又はクリーンデータで最終的な応答を送信してもよい。これは、再びDRAMを読むことのスキームの実装を許容してもよい。プローブ/ビクティムの衝突は、プローブレスポンスが失速すること、及び、前に進むようにビクティムに期待することにより処理される。
【0161】
ビクティムが完了したら、プローブレスポンスミスを発してもよい。これは、MCTで古いリクエストをパスするビクティムのための許容量を専用のライトバックチャネルに要求し、ホストブリッジのためのプローブターゲットを発するMCTのために、代わりに、プローブソースを読み取る。プローブターゲットを発することは、プローブレスポンス、DRAMリードデータ及び可能性のあるビクティム通過のケースを統合することと、SRIに戻りシングルリードレスポンス(または変換ケースでのTgtDn)を発することと、をMCTに許容してもよい。
【0162】
XBAR−>MCTリクエストは、より若いパッシングビクティムからのプローブダーティデータ又はデータを受け入れるためのMCDのエントリを今割り当てる。他のXBAR―>MCTがMcdLoとMcdHiの両方を要求するようにトークンが保存される。データ(例えばCPU102読み込み)を搬送していないことを要求する非ホストブリッジは、直ちにmp1でこれらのトークンを解放する。ホストブリッジ(HB)は、mp1(新しい用語Hb4HopMcdLoBufAvail/Hb4HopMcdHiBufAvail)でリリースされている未使用のチャネルのためのトークンを読み込む。前のコマンドのみが、MCDトークンに割り当てられたデータを有する。データコマンドのためのMCDトークンマネージメントロジックは、変更されない。
【0163】
ライトバックとプローブとの間のデッドロックを解決するために、仮想チャネルは、ライトバックのために加えられてもよい。この機能の一部は、それが一度MCTに達するとライトバックに前もって古い読み取りの並べ替えをすることの許容を伴う。これは、このバイパスが発生したときに以前のDRAMの読み取りを再発行するようなかなりの数の変更を伴う。CPU102は、プローブされたブロックがビクティムされるプロセスである場合、プローブレスポンスに返さなくてもよい。その代わりに、CPU102は、単にビクティムを送信する。取られる手法は、ビクティムが効果的なプローブレスポンスであること、及び、そのように処理されてもよいことを検出することである。
【0164】
ビクティムが着いたとき、より古いopsでアドレス一致のためにチェックされてもよい。一致が発見された場合、ビクティムは、以下の基準を満たしているかどうかがチェックされてもよい。
【0165】
プローブレスポンスを待っている読み込み(プリフェッチではない)に対する一致。
【0166】
プローブレスポンスを待っている書き込みに対する一致。
【0167】
複数のアドレスの一致が発見された場合、最も古い1つが選択される。これは、最も古いopが、引退する前のopのために待つことのない原則を用いたMCAで現在保存されているMCQWaitOpRetフラッグのコピーによって確認される。
【0168】
そうしてビクティムが着いたとき、それは、以下の3つのフローの1つに続いてもよい。
【0169】
1.ビクティムは、レスポンスを探している前のopに一致しない場合、過去に存在していたように扱われる。
【0170】
2.ビクティムがレスポンスのために待っているライトに一致した場合、ビクティムは、プローブレスポンスとして扱われ、先のライトのMCDエントリにマージされる。ビクティムが割り当てられた新しいMCDエントリがリリースされる。ビクティムのこのタイプは、自身のMCDエントリを有していないから、進められたデータのソースであると考えられることができない。このビクティムは、DRAMにライトされない(これは、ビクティムがマージするライトによって扱われる)。これは、MCQエントリ自身に割り当てられ、それが行われたときTgtDnに送ってもよい。
【0171】
3.ビクティムがレスポンスのために待っているリードに一致した場合、ビクティムがDRAMに送られる必要があるので、ビクティムは、リードのMCDエントリとマージして、自身のMCDエントリに書き込まれる。新しいMCDエントリのビクティムデータは、ノーマルビクティムとして扱われ、DRAMに書き込まれてから転送されてもよく、完了したときTgtDnに送る。第2のMCDライトポートは、新しいMCDエントリに書き込むためにフロー#3(victim−matches−read)に必要とされてもよい。
【0172】
(実施形態)
1.入出力メモリマップユニット(IOMMU)を備え、IOMMUは、アクセスビットメカニズムを有し、ページテーブルエントリにアクセスする場合に、アクセスビットを設定するように構成されている、プロセッサ。
【0173】
2.前記アクセスビットメカニズムは、レジスタによって有効になる、実施形態1のプロセッサ。
【0174】
3.前記IOMMUは、ダーティビットメカニズムをさらに有する、実施形態1又は2のプロセッサ。
【0175】
4.前記ダーティビットメカニズムは、前記アクセスビットメカニズムが有効な場合のみ有効である、実施形態3のプロセッサ。
【0176】
5.ある程度のAP[2]ビットは、ページがダーティ又はクリーンかどうかを示す、実施形態3又は4のプロセッサ。
【0177】
6.アクセスビット及びAP[2]ビットは、同じページトランスレーションテーブルエントリから更新される、実施形態3〜5の何れか1つのプロセッサ。
【0178】
7.前記アクセスビット及びAP[2]ビットは、シングルアトミックオペレーションで更新される、実施形態6のプロセッサ。
【0179】
8.前記シングルアトミックオペレーションは、test−0−logicalORオペレーションを含む、実施形態7のプロセッサ。
【0180】
9.前記シングルアトミックオペレーションは、test−set−clearオペレーションを含む、実施形態7のプロセッサ。
【0181】
10.前記アクセスフラグは、ハードウェアメカニズムによって管理される、実施形態1〜9の何れか1つのプロセッサ。
【0182】
11.0に設定されたアクセスフラグを有するトランスレーションテーブルエントリが、トランスレーションルッカサイドバッファ(TLB)に読み込まれる場合に、前記ハードウェアメカニズムは、前記トランスレーションテーブルエントリの前記アクセスフラグビットに1を書き込む、実施形態10のプロセッサ。
【0183】
12.ハードウェアアクセスフラグのフィールドは、この実装の選択を示すことに用いられる、実施形態10又は11のプロセッサ。
【0184】
13.SCTLR.HAビットは、前記アクセスフラグのハードウェアマネージメントを有効にするために用いられる、実施形態10〜12の何れか1つのプロセッサ。
【0185】
14.短い記述トランスレーションテーブルフォーマットを使用する場合、前記アクセスフラグのハードウェアマネージメントは、前記アクセスフラグの使用を可能にするためにSCTLR.AFEビットがセットされ、且つ、前記アクセスフラグのハードウェアマネージメントを可能にするために前記SCTLR.HAビットがセットされる場合に、実行される、実施形態10〜13の何れか1つのプロセッサ。
【0186】
15.SCTLRのバンキングは、前記SCTLR.AFE及び前記SCTLR.HAビットが安全及び安全でないアドレストランスレーションのために単独で定義されている、実施形態14のプロセッサ。
【0187】
16.前記アクセスフラグのハードウェアマネージメントが、アドレストランスレーションのステージのために許可される場合に、アクセスフラグの結果は、対応するトランスレーションのために発生することがない、実施形態10〜15の何れか1つのプロセッサ。
【0188】
17.前記IOMMUは、仮想メモリ(DVM)無効の配布を実行するメカニズムをさらに有する、実施形態1〜16の何れか1つのプロセッサ。
【0189】
18.前記DVM無効メカニズムは、ホストISOCポステッドインタフェースを用いることを含む、実施形態17のプロセッサ。
【0190】
19.ISOCポステッドライトメッセージは、解読され、プロセッサリクエストを命じる相似する無効フォーマットに変更される、実施形態18のプロセッサ。
【0191】
20.前記無効メッセージは、中央演算処理装置(CPU)から前記ホストISOCポステッドライトチャネルの前記IOMMUレベル2への無効メッセージを含む、実施形態17〜19の何れか1つのプロセッサ。
【0192】
21.前記無効メッセージは、無効入出力TLBで使用される、実施形態20のプロセッサ。
【0193】
22.前記無効メッセージは、中央演算処理装置(CPU)から前記ホストISOCポステッドライトチャネルのIOMMUレベル2への同期メッセージを含む、実施形態17〜19の何れか1つのプロセッサ。
【0194】
23.前記同期メッセージは、完成待ち命令と類似している、実施形態22のプロセッサ。
【0195】
24.前記IOMMUレベル2は、完成メッセージに戻る、実施形態22又は23のプロセッサ。
【0196】
25.前記無効メッセージは、前記IOMMUレベル2からORB又は統合ノースブリッジまでのダイレクトメモリアクセス(DMA)ISOCポステッドライトである完成メッセージを含む、実施形態17〜19の何れか1つのプロセッサ。
【0197】
26.前記完成メッセージは、命令パイプラインがフラッシュされ、全てのアウトスタンディング入出力TLBが完了した場合に送られる、実施形態25のプロセッサ。
【0198】
27.前記DVMオペレーションは、CPU、IOMMU及びATCのエントリが無効になるように使用される、実施形態17〜26の何れか1つのプロセッサ。
【0199】
28.前記IOMMUレベル2は、前記DVM無効コマンドを受ける際にグラフィックス処理単位(GPU)ATCに無効コマンドを生成する、実施形態17〜27の何れか1つのプロセッサ。
【0200】
29.前記IOMMUレベル2は、前記メッセージタイプに基づき前記DVM無効コマンドを処理する、実施形態28のプロセッサ。
【0201】
30.前記IOMMUレベル2は、関連したオペレーションを前記GPU ATCに向かうようにする、実施形態28又は29のプロセッサ。
【0202】
31.前記IOMMUレベル2は、前記GPUに適用できないオペレーションを取り除くために前記オペレーションをフィルタに通す、実施形態30のプロセッサ。
【0203】
32.前記IOMMUは、ドメインID及びPASIDの前記GPU使用法の経過を追うようにさらに構成されている、実施形態28〜31の何れか1つのプロセッサ。
【0204】
33.前記IOMMUは、DVM無効の間に使用される1つ以上のレジスタをさらに有する、実施形態17〜32の何れか1つのプロセッサ。
【0205】
34.前記1つ以上のレジスタは、インターナルグラフィックのために有効なASIDを確認するために用いられる前後のシャドウレジスタを含む、実施形態33のプロセッサ。
【0206】
35.前記1つ以上のレジスタは、インターナルグラフィックデバイスのREQIDを含むレジスタを有する、実施形態33又は34のプロセッサ。
【0207】
36.前記1つ以上のレジスタは、queueID毎の未処理のATS無効の最大の数を含むレジスタを有する、実施形態33〜35の何れか1つのプロセッサ。
【0208】
37.前記1つ以上のレジスタは、ATS TLB無効のqueueIDを含むレジスタを有する、実施形態33〜36の何れか1つのプロセッサ。
【0209】
38.前記1つ以上のレジスタは、前記無効がインターナルグラフィックスデバイスの目標であることを確認するのに用いられる前記インターナルグラフフィクスデバイスのドメインIDを含むレジスタを有する、実施形態33〜37の何れか1つのプロセッサ。
【0210】
39.前記レジスタからの価値は、前記ATSコマンドに挿入される、実施形態33〜38の何れか1つのプロセッサ。
【0211】
40.前記IOMMUは、16のPASIDMAPレジスタをさらに有する、実施形態17〜39の何れか1つのプロセッサ。
【0212】
41.前記PASIDMAPレジスタは、SRBMインタフェースを介してアクセス可能である、実施形態40のプロセッサ。
【0213】
42.ライトがPASIDMAPレジスタで生成される場合に、同じデータがIOMMUに書き込まれる、実施形態40又は41のプロセッサ。
【0214】
43.前記IOMMUへのアクセスは、リードの実行によってフラッシュされる、実施形態42のプロセッサ。
【0215】
44.前記IOMMUのPASID有効レジスタは、PASIDがもはや必要でないときにクリアされる、実施形態40〜43の何れか1つのプロセッサ。
【0216】
45.前記ATCは、前記VMIDが再配置されるちょうど前に、VMIDによって無効にされる、実施形態44のプロセッサ。
【0217】
46.ディストリブーテッド仮想メモリ(DVM)メッセージを処理するように構成された回路を有するノースブリッジを含む、プロセッサ。
【0218】
47.前記ノースブリッジは、トランスレーションロッカブルバッファ(TLB)エントリを実行するようにさらに構成された回路を有する、実施形態46のプロセッサ。
【0219】
48.前記DVMメッセージは、入出力コントロール(IOC)ブロックに送られる、実施形態46又は47のプロセッサ。
【0220】
49.DVMオペレーションは、ガスケットからWrDwordとして送られ、ガスケットは、統合ノースブリッジ(UNB)と前記プロセッサとの間を通信するデバイスを含む、実施形態46〜48の何れか1つのプロセッサ。
【0221】
50.前記WrDwordは、128ビットデータペイロードを含む、実施形態49のプロセッサ。
【0222】
51.異なるアドレスは、DVMオペレーションの異なるタイプのために使用される、実施形態46〜50の何れか1つのプロセッサ。
【0223】
52.WaitSpuSecureBootInitがゼロに等しくなるまで、前記プロセッサにトークンリリースを停止させるように構成された回路をさらに有する、実施形態46〜51の何れか1つのプロセッサ。
【0224】
53.前記プロセッサは、DramValid又はHtInitStatusValidビットを引くことがない、実施形態52のプロセッサ。
【0225】
54.前記プロセッサが安全なブートモードにある場合に、プロセススタックポインタ(PSP)は、前記ノースブリッジレジスタ及び前記ダイナミックランダムアクセスメモリ(DRAM)の全てをセットアップする、実施形態52又は53のプロセッサ。
【0226】
55.前記DVMメッセージは、無効又はSyncOpメッセージを含む、実施形態46〜54の何れか1つのプロセッサ。
【0227】
56.前記DVMメッセージは、無効であるSMMUエントリを結果とする、実施形態55のプロセッサ。
【0228】
57.前記DVMメッセージは、完了メッセージが送られる前に未処理のリクエストをページに完了しなければならない、実施形態55又は56のプロセッサ。
【0229】
58.デバイスから前記UNBへの同時性ポステッドクレジットをリリースするように構成された回路をさらに有する、実施形態55〜57の何れか1つのプロセッサ。
【0230】
59.デバイスから前記UNBへの同時性ポステッドライトを受け入れるように構成された回路をさらに有する、実施形態55〜58の何れか1つのプロセッサ。
【0231】
60.新しいレジスタに新しいチャネルをトークンに割り当てることによって有効になる前記チャネルをさらに有する、実施形態55〜59の何れか1つのプロセッサ。
【0232】
61.前記新しいチャネルは、DVM Op及びDVM Syncリクエストによって使用される、実施形態60のプロセッサ。
【0233】
62.グローバルタイムスタンプカウンタをさらに有する、実施形態46〜61の何れか1つのプロセッサ。
【0234】
63.前記グローバルタイムスタンプカウンタは、キューを介してプロセッサインタフェースに供給される、実施形態62のプロセッサ。
【0235】
64.前記キューは、ファーストインファーストアウトキューである、実施形態63のプロセッサ。
【0236】
65.セマフォオペレーションへのアトミックアクセスをサポートするアドレスへ排他的なアクセスを供給するように構成された回路を有する、実施形態46〜64の何れか1つのプロセッサ。
【0237】
66.前記回路は、排他的なロードがMCTにおいて見られる場合に作動する、実施形態65のプロセッサ。
【0238】
67.前記プロセッサからのVicBlkリクエストのためのハードトークンをさらに有する、実施形態46〜66の何れか1つのプロセッサ。
【0239】
68.前記プロセッサは、ライトデータチャネルのデータを前記ガスケットにプッシュするようにさらに構成されている、実施形態67のプロセッサ。
【0240】
69.前記データは、前記ノースブリッジが前記ガスケットから前記データを引き出し、前記ガスケットがターゲットダンシグナルを受けた後に、前記ライトデータチャネルの前記データでプッシュされる、実施形態68のプロセッサ。
【0241】
70.前記ターゲットダンシグナルは、ライトバッファリリースシグナルによって通信される、実施形態69のプロセッサ。
【0242】
71.前記プロセッサがライトバックを発する場合、前記ガスケット及び前記SRIは、メモリに前記ライトバックを届ける、実施形態67〜70の何れか1つのプロセッサ。
【0243】
72.デッドロックコンディションは、前記プロセッサが完了するライトバックを待つ間に存在する、実施形態71のプロセッサ。
【0244】
73.前記プロセッサから前記MCTへの仮想チャネルをさらに有し、前記MCTでは、より古いリクエストをパスするライトバックを許容する、実施形態67〜72の何れか1つのプロセッサ。
【0245】
74.追加のライトバックチャネル及び前記追加のライトバックチャネルのための専用バッファをさらに有する、実施形態67〜73の何れか1つのプロセッサ。
【0246】
75.前記プロセッサからの前記ビクティム/ライトバックのための前記SRQのためにトークンが割り当てられた専用ハードをさらに有する、実施形態74のプロセッサ。
【0247】
76.前記SRQは、ビクティムのための可能なトークンを常に有するであろう、実施形態75のプロセッサ。
【0248】
77.ホストブリッジリードのためにプローブターゲットを発する前記MCTのための回路をさらに有する、実施形態46〜76の何れか1つのプロセッサ。
【0249】
78.前記プローブターゲットを発することは、堅実なプローブレスポンス、DRAMリードデータ、可能なビクティムパッシングケース、及び、SRIにシングルリードレスポンスバックを発することを前記MCTに許容する、実施形態77のプロセッサ。
【0250】
79.MCTリクエストへの全てのXBARは、より若いパッシングビクティムからプローブダーティデータ又はデータを受け入れるMCDエントリを割り当てる、実施形態77又は78のプロセッサ。
【0251】
80.McdLo及びMcdHiトークンを確保することをさらに有する、実施形態79のプロセッサ。
【0252】
81.ホストブリッジリードを実行するように構成された回路をさらに有する、実施形態46〜80の何れか1つのプロセッサ。
【0253】
82.前記ホストブリッジリードは、MCDエントリの割り当て及びMcaDatPtrを有効に設定する、実施形態81のプロセッサ。
【0254】
83.前記ホストブリッジリードは、クリーニングMCDバイトマスクをさらに含む、実施形態82のプロセッサ。
【0255】
84.前記ホストブリッジリードは、ホストブリッジリクエストのためのディセーブリングデータフォワーディングをさらに含む、実施形態83のプロセッサ。
【0256】
85.前記ホストビリッジリードは、プローブターゲットを発することをさらに含む、実施形態84のプロセッサ。
【0257】
86.前記ホストブリッジリードは、ホストブリッジRdSzリクエストを介してMCQRdRspWaitSysビットを設定することをさらに含む、実施形態85のプロセッサ。
【0258】
87.前記ホストブリッジリードは、前記プロセッサプローブがペンディングすること及び前記プローブがダーティデータを返却することの何れかの間に前記DCTリードレスポンスが着いた場合に、ウエイトビットとしてのMCQWaitG5CanDetのオーバーローディングをさらに含む、実施形態86のプロセッサ。
【0259】
88.前記ホストブリッジリードは、MPDBへの前記DCTデータライトが一度完了してXBAR rdレスポンスを送ることをさらに含む、実施形態87のプロセッサ。
【0260】
89.前記ホストブリッジリードは、MCQRdRspWaitSysをクリーニングし、プローブミスで起こる際の続くXBAR RdRSP pickを許容することをさらに含む、実施形態87又は88のプロセッサ。
【0261】
90.前記ホストブリッジリードは、DCTレスポンスがプロセッサプローブレスポンスのミスの後に到着した場合に、XBARリードレスポンスを発することをさらに含む、実施形態87〜89の何れか1つのプロセッサ。
【0262】
91.2つの安全なメモリレンジは、SMMタイプ機能を安全なメモリ領域で使用するために登録することをさらに有する、実施形態46〜90の何れか1つのプロセッサ。
【0263】
92.前記安全なメモリ領域へのアクセスは、PSPを除く全てのデバイスから無効である、実施形態91のプロセッサ。
【0264】
93.前記プロセッサは、安全モードの場合のみ、前記安全なメモリ領域にアクセスできる、実施形態91又は92のプロセッサ。
【0265】
94.前記安全なメモリ領域へのリード/ライトアクセスは、レジスタのリードイネーブル(RE)/ライトイネーブル(WE)ビットを介して制限されてもよい、実施形態91〜93の何れか1つのプロセッサ。
【0266】
95.前記プロセッサが前記安全なメモリ領域にアクセスできる場合に、決定する要求とともにNSビットを送ることをさらに有する、実施形態91〜94の何れか1つのプロセッサ。
【0267】
96.coreSightアクセスは、DRAMへの通常のライトのようにこれらのアクセスによる前記ガスケットによって処理される、実施形態46〜96の何れか1つのプロセッサ。
【0268】
97.GNBとNBとの間のインタラプトワイヤをさらに有する、実施形態46〜96の何れか1つのプロセッサ。
【0269】
98.前記インタラプトワイヤは、レベルインタラプトである、実施形態97のプロセッサ。
【0270】
99.無損失CCIトランスポートを保証するためにPLL再ロックを始動する前に前記プロセッサとノースブリッジとのインタフェースを静止するように構成された回路をさらに有する、実施形態46〜98の何れか1つのプロセッサ。
【0271】
100.前記静止することは、StpClk/StartClkハンドシェイクメカニズムを用いることを含む、実施形態99のプロセッサ。
【0272】
101.前記ノースブリッジと前記ガスケットとの間のサイドバンドを生成することをさらに有する、実施形態99又は100のプロセッサ。
【0273】
102.前記静止することは、前記StpClkハンドラでWFEを使用することを含む、実施形態100又は101のプロセッサ。
【0274】
103.XC6のためにアディングインタラプトレートモニタサポートをさらに有する、実施形態46〜102の何れか1つのプロセッサ。
【0275】
104.XC6エントリ決定に直面している間に漸減率が低下することをさらに有する、実施形態103のプロセッサ。
【0276】
105.L2ミスのトラッキング及びバスアクセスのために追加のカウンタをさらに有する、実施形態46〜104の何れか1つのプロセッサ。
【0277】
106.ライトバックとプローブとの間のデッドロックを解決するライトバックのための仮想チャネルをさらに有する、実施形態46〜105の何れか1つのプロセッサ。
【0278】
107.ライトバックは、それらが一度MCTに達すると古いリードの前に再整理されてもよい、実施形態106のプロセッサ。
【0279】
108.前記再整理は、初期のDRAMリードを再発することを含む、実施形態107のプロセッサ。
【0280】
109.ビクティムが達した場合に、より古いオペレーションでアドレス一致のための前記ビクティムをチェックすることをさらに有する、実施形態106〜108の何れか1つのプロセッサ。
【0281】
110.アドレス一致が起きた場合に、前記一致が、プローブレスポンスを待っているリード又はプローブレスポンスを待っているライトに対してであるかどうかをチェックする、実施形態109のプロセッサ。
【0282】
111.複数のアドレス一致が検出された場合に、最も古いアドレスマッチが選ばれる、実施形態109又は110のプロセッサ。
【0283】
112.前記ビクティムがレスポンスのために待っているライトに一致する場合に、前記ビクティムは、プローブレスポンスとして扱われ、以前のライトのMCDエントリにマージされる、実施形態109〜111の何れか1つのプロセッサ。
【0284】
113.前記ビクティムに割り当てられたMCDエントリをリリースすることをさらに有する、実施形態112のプロセッサ。
【0285】
114.前記ビクティムがレスポンスのために待っているリードに一致する場合に、前記ビクティムは、前記リードのMCDエントリにマージされ、そのMCDエントリ自身に書き込まれる、実施形態109〜111の何れか1つのプロセッサ。
【0286】
115.前記ビクティムは、第2のMCDライトポートを介してMCDエントリ自身に書き込まれる、実施形態114のプロセッサ。
【0287】
116.インビジブルフレームバッファ(IVFB)をさらに有する、実施形態46〜115の何れか1つのプロセッサ。
【0288】
117.前記IVFBは、前記PSPによって設定され、任意のサイズに設定される、実施形態116のプロセッサ。
【0289】
118.前記IVFBへのリードアクセスが制限されている、実施形態116又は117のプロセッサ。
【0290】
119.任意のホストは、前記IVFBに書き込むことができる、実施形態116〜118の何れか1つのプロセッサ。
【0291】
120.送られるベクタを除くfdf7の安全を強いる場合に、決定されるSecureEnableのためのシグナルアクセスCCIをさらに有する、実施形態46〜119の何れか1つのプロセッサ。
【0292】
121.前記ガスケットは、SMNインタフェースでコンフィグレジスタを実行するように構成されている、実施形態46〜120の何れか1つのプロセッサ。
【0293】
122.前記状態は、そのXC6キャッシュ/状態フラッシュルーチンの間、前記プロセッサによって保存される、実施形態121のプロセッサ。
【0294】
123.前記状態は、前記C6リセットハンドラを介して前記プロセッサによってリストアされる、実施形態122のプロセッサ。
【0295】
124.前記プロセッサは、ラップオーダーとして知られているバーストオーダーをサポートし、前記ラップオーダーは、データが送信され又は受信されることを期待されるオーダーである、実施形態46〜123の何れか1つのプロセッサ。
【0296】
125.MPBD又はSRDから戻されるデータは、ラップオーダーに戻される、実施形態124のプロセッサ。
【0297】
126.ラップオーダーの中でMPBDから読み込まれるデータは、期待されるバーストオーダーの中でSRDに書き込まれてもよい、実施形態124又は125のプロセッサ。
【0298】
127.SRDは、前記プロセッサにデータを戻すためにラップオーダーで読み込まれるであろう、実施形態126のプロセッサ。
【0299】
128.前記CC6領域が構成可能である、実施形態46〜127の何れか1つのプロセッサ。
【0300】
129.ビットは、前記CC6領域の再構成可能性を示すセキュアブートレジスタで設定される、実施形態128のプロセッサ。
【0301】
130.前記ビットは、セキュアブートプロセスの間、前記PSPによって書き込まれる、実施形態129のプロセッサ。
【0302】
131.統合ノースブリッジ(UNB)と前記プロセッサとの間で通信されるガスケットをさらに有する、実施形態46〜130の何れか1つのプロセッサ。
【0303】
132.前記ガスケットは、前記プロセッサクロックドメインに存在する、実施形態131のプロセッサ。
【0304】
133.前記ガスケットは、キャッシュコーヒレントインターコネクト(CCI)にトランザクションを変換するように構成されている、実施形態131又は132のプロセッサ。
【0305】
134.前記ガスケットは、システムプローブをスヌープに変換するように構成されている、実施形態131〜133の何れか1つのプロセッサ。
【0306】
135.統合ノースブリッジ(UNB)/コーヒレントHyperTransport(cHT)環境とともにメモリマップをインターオペレートに変換するように構成されている、実施形態131〜134の何れか1つのプロセッサ。
【0307】
136.前記ガスケットは、転送サイズをUNB/cHT環境とともにインターオペレートに変換するように構成されている、実施形態131〜135の何れか1つのプロセッサ。
【0308】
137.前記ガスケットは、アドバンスイクステンシブルインタフェース(AXI)コーヒレンシイクステンション(ACE)コマンドから、同等CCIコマンドへのプロセッサからのリクエストを変換するように構成されている、実施形態131〜136の何れか1つのプロセッサ。
【0309】
138.前記プロセッサからの各リクエストは、特別なCCIリクエストタイプにマップする、実施形態137のプロセッサ。
【0310】
139.前記プロセッサからのリクエストのタイプは、リード及びライトアドレスチャネルのAxDomain及びAxSnoopフィールドにエンコードされる、実施形態137〜138の何れか1つのプロセッサ。
【0311】
140.前記バスのビットは、ACE属性を伝えるためにオーバーロードになり得る、実施形態137〜139の何れか1つのプロセッサ。
【0312】
141.前記ガスケットは、ACEタグをCCIタグに変換するように構成されている、実施形態137〜140の何れか1つのプロセッサ。
【0313】
142.同じタグをシェアするACEリクエストは、前記ガスケットの中で順番とされる、実施形態141のプロセッサ。
【0314】
143.前記ガスケットは、同等のACEスヌープトランザクションへのSRIからCCIエンコーデッドプローブに変換されるように構成されている、実施形態137〜142の何れか1つのプロセッサ。
【0315】
144.前記ガスケットが前記CCIインタフェースからリードレスポンスを受信した場合に、クラスタへのACEバスに同等のレスポンスを生成する、実施形態137〜143の何れか1つのプロセッサ。
【0316】
145.前記ガスケットは、データの全てのビートが前記CCIインタフェースから受信されるまで前記ACEレスポンスの起動を遅延するように構成されている、実施形態144のプロセッサ。
【0317】
146.前記ガスケットは、SRIへの各リクエストとともに送られる前記期待された補助アドレスタイプシグナルを生成するメモリマップを使用するように構成されている、実施形態137〜145の何れか1つのプロセッサ。
【0318】
147.前記ガスケットは、cHTにトランザクションを変換する前記メモリマップを使用するように構成されている、実施形態146のプロセッサ。
【0319】
148.ライトバックによりアクセスされる独立した仮想チャネルをさらに有し、前記ライトバックは、ダイナミックランダムアクセスメモリ(DRAM)にドレインできる、実施形態46〜147の何れか1つのプロセッサ。
【0320】
149.前記ガスケットを横断する前記ライトバックのためのノンブロッキングパスをさらに有する、実施形態148のプロセッサ。
【0321】
150.SRQを横断するライトバックのためのノンブロッキングパスをさらに有する、実施形態149のプロセッサ。
【0322】
151.クロスバーを介するノンブロッキングパスをさらに有する、実施形態150のプロセッサ。
【0323】
152.MCTに到着した場合に、前記ライトバックは、他のリクエストにパスする、実施形態148〜151の何れか1つのプロセッサ。
【0324】
153.最も古いリードは、前記ライトバックに依存してマークされる、実施形態152のプロセッサ。
【0325】
154.前記ライトバックは、ノンライトバックライトにインターリーブされない、実施形態148〜153の何れか1つのプロセッサ。
【0326】
155.前記ガスケットは、シンクロナイザからシグナルを駆動及び受信するためにスキップクロックロジックを観測するように構成されている、実施形態131〜154の何れか1つのプロセッサ。
【0327】
156.前記ガスケットは、ライトコマンドが5クロック分離に従うことを確実に予想したファーストインファーストアウト(FIFO)キューを使用するように構成されている、実施形態155のプロセッサ。
【0328】
157.前記ガスケットは、前記ACEタイミングとともに前記プロセッサへレスポンスを向かわせるように構成されている、実施形態155又は156のプロセッサ。
【0329】
158.前記シンクロナイザは、前記シンクロナイザFIFOが後で10クロックをリーディング/ライティングするために可能となるかどうかを示すシグナルを前記ガスケットに提供する、実施形態155〜157の何れか1つのプロセッサ。
【0330】
159.前記ガスケットは、マルチプルCCIライトにACEライトを分割するように構成されている、実施形態137〜158の何れか1つのプロセッサ。
【0331】
160.キュー及び/又はライトバッファは、転送されることを必要とする前記特定のバイトを追跡するように、適切なコマンドを生成するように構成されている、実施形態159のプロセッサ。
【0332】
161.エントリは、前記複数のライトの全てが完了され及びリリースされた場合に、割り当てを取り消される、実施形態159又は160のプロセッサ。
【0333】
162.ライトは、キャッシュラインを満たすように結合される、実施形態137〜161の何れか1つのプロセッサ。
【0334】
163.前記ガスケットは、ライトリクエストエントリの数よりも少ないライトを含む、実施形態162のプロセッサ。
【0335】
164.前記ライトデータは、前記SRIによって前記バッファから引かれるまで保持される、実施形態162又は163のプロセッサ。
【0336】
165.前記ライトリクエストは、前記レスポンスが前記プロセッサに送られることができるまでオープンを保つ、実施形態162〜164の何れか1つのプロセッサ。
【0337】
166.前記レスポンスは、ターゲット完了信号のオフに基づくSRIバッファリリースの後に前記プロセッサに送られ得る、実施形態165のプロセッサ。
【0338】
167.前記ガスケットは、前記バッファをフラッシュするようにさらに構成されている、実施形態162〜166の何れか1つのプロセッサ。
【0339】
168.前記バッファは、バッファフラッシュトリガに基づいてフラッシュされる、実施形態167のプロセッサ。
【0340】
169.前記バッファフラッシュトリガは、いつでも前記バッファが完全に有効である、実施形態168のプロセッサ。
【0341】
170.前記バッファフラッシュトリガは、いつでも前記未送信バッファが使い果たされている、実施形態168のプロセッサ。
【0342】
171.前記バッファフラッシュトリガは、いつでもプロセッサライトが、プロセッサに対して既にオープンなバッファにヒットしない、実施形態168のプロセッサ。
【0343】
172.前記バッファフラッシュトリガは、いつでもオープンバッファの数のプログラムの限界に達している、実施形態168のプロセッサ。
【0344】
173.前記バッファフラッシュトリガは、前記バッファがもはや書き込まれないことを示している、実施形態168のプロセッサ。
【0345】
174.正しいキャッシュ可能性の属性のみのライトが結合され得る、実施形態167〜173の何れか1つのプロセッサ。
【0346】
175.バリアのための全てのバッファがフラッシュされる、実施形態167〜174の何れか1つのプロセッサ。
【0347】
176.全てのバッファがDvmSyncのためにフラッシュされる、実施形態167〜175の何れか1つのプロセッサ。
【0348】
177.前記ガスケットは、トランザクションのオーダーが維持されるバリアトランザクションを実行するように構成されている、実施形態137〜176の何れか1つのプロセッサ。
【0349】
178.前記バリアトランザクションはメモリバリアを含む、実施形態177のプロセッサ。
【0350】
179.前記メモリバリアは、マスターコンポーネントが前記バリアの前に発せられた全てのトランザクションを観測することができる前記バリアの後に、前記コンポーネントが任意のトランザクションの問題を観測できるかどうかを保証する、実施形態178のプロセッサ。
【0351】
180.前記バリアトランザクションはシンクロナイゼーションバリアを含む、実施形態177のプロセッサ。
【0352】
181.前記シンクロナイゼーションバリアは、前記バリアが完了するときの前記適切なドメインの全てのマスターコンポーネントによって前記バリアが観測できる前に発せられた全てのトランザクションを保証するマスターコンポーネントによって発せられる、実施形態180のプロセッサ。
【0353】
182.前記シンクロナイゼーションバリアは、サイドバンドシグナリンコミュニケーションで使用される、実施形態180又は181のプロセッサ。
【0354】
183.前記バリアトランザクションは、全てのより以前のリクエストが、前記プロセッサの完了を示す前に前記SRIへの前記ガスケットによって発せられていることを確認することにより、前記ガスケットによって処理される、実施形態177〜182の何れか1つのプロセッサ。
【0355】
184.前記ガスケットは、全てのより古いリクエストが発せられた前記プロセッサへの前記バリアトランザクションのための前記レスポンスを送る、実施形態183のプロセッサ。
【0356】
185.前記ガスケットはジェネリックインタラプトコントローラ(GIC)を含む、実施形態131〜184の何れか1つのプロセッサ。
【0357】
186.前記GICは、プロセッサインタフェース、ディストリビュータ及びインタラプトトランスレーションサービス(ITS)を含む、実施形態185のプロセッサ。
【0358】
187.前記ディストリビュータは、ローカルSRIによって受信するであろうMSIパケットを介してソースからインタラプトを受信するように構成されている、実施形態186のプロセッサ。
【0359】
188.前記プロセッサは、前記IOMMUにアップデートするページテーブルと通信するディストリブテッドバーチャルメモリ(DVM)トランザクションを発するように構成されている、実施形態1〜187の何れか1つのプロセッサ。
【0360】
189.前記DVMトランザクションはポステッドライトに変換される、実施形態188のプロセッサ。
【0361】
190.前記DVMコマンドは、前記DVMベースアドレスからオフセットするアドレスの一部によって同一視される、実施形態188又は189のプロセッサ。
【0362】
191.前記プロセッサは、リードチャネルでの1つ以上のDVMオペレーション(DvmOp)のシーケンスを発する実施形態188〜190の何れか1つのプロセッサ。
【0363】
192.前記ガスケットは、DWORDライトオペレーションでの各DvmOpを変換するように構成されている、実施形態191のプロセッサ。
【0364】
193.前記ライトデータは、前記DvmOpからの必要なインフォメーションを含む、実施形態192のプロセッサ。
【0365】
194.前記プロセッサは、任意の前のDvmOpをプッシュし、それらが完了することを確認する前記リードチャネルのDvmSyncオペレーションを発するように構成されている、実施形態188〜193の何れか1つのプロセッサ。
【0366】
195.DvmSyncオペレーションを受信する各エージェントは、全てのペンディングDvmOp及びDvmSyncを完了している自身のDvmCompletionオペレーションを発する、実施形態194のプロセッサ。
【0367】
196.前記IOMMUは、任意の前のオペレーションをプッシュする前記ホストブリッジにFENCE/FLUSHコマンドを発する、実施形態195のプロセッサ。
【0368】
197.前記IOMMUは、全てのDvmOp及びアイソクロナウスポステッドBYTEライトを介したDvmSyncの完了を信号で送る、実施形態196のプロセッサ。
【0369】
198.前記DvmSync opsは連続的に処理され得る、実施形態194〜197の何れか1つのプロセッサ。
【0370】
199.前記ガスケットは、前記DvmSync opsを連続的に処理するように構成されている、実施形態198のプロセッサ。
【0371】
200.前記ガスケットは、マルチパートDvmOpの一部を合成し得るプロセッサ毎の1つのDVMバッファを含む、実施形態199のプロセッサ。
【0372】
201.前記ガスケットは、プロセッサリード及びライトアドレスチャネルを合成するようにさらに構成されている、実施形態137〜200の何れか1つのプロセッサ。
【0373】
202.インプット及びシグナルシェアードキューで結合されている前記リード及び前記ライトアドレスチャネルが実装されている、実施形態201のプロセッサ。
【0374】
203.マルチプレクサは、前記単一のシェアードキューに関連付けられ、2つのインプットの1つを選択するために使用される、実施形態202のプロセッサ。
【0375】
204.別々のキューは、前記リード及び前記ライトアドレスチャネルのために実装され、前記キューはアウトプットに結合される、実施形態201のプロセッサ。
【0376】
205.DSMホックは、前記ガスケットの前記ACEサイドにモニターされるように構成されている、実施形態137〜204の何れか1つのプロセッサ。
【0377】
206.前記ガスケットはレジスタの構成を含む、実施形態131〜205の何れか1つのプロセッサ。
【0378】
207.前記ガスケットはアドレスレジスタベースのレジスタを含む、実施形態206のプロセッサ。
【0379】
208.前記ガスケットは実行状態リセットベクタアドレスレジスタを含む、実施形態206又は207のプロセッサ。
【0380】
209.前記ガスケットはGICアドレススペースレジスタを含む、実施形態206〜208の何れか1つのプロセッサ。
【0381】
210.前記ガスケットは、ペリフェラルコンポーネントインターコネクト(PCI)コンフィグレーションベースアドレスレジスタを含む、実施形態206〜209の何れか1つのプロセッサ。
【0382】
211.前記ガスケットは、コンフィグレーション及びコントロールビットレジスタを含む、実施形態206〜210の何れか1つのプロセッサ。
【0383】
212.前記コンフィグレーション及びコントロールビットレジスタは、セットリクエストキューサイズの指示を含む、実施形態211のプロセッサ。
【0384】
213.前記コンフィグレーション及びコントロールビットレジスタは、特殊なトランザクションが順番にされるかどうかの指示を含む、実施形態211又は212のプロセッサ。
【0385】
214.前記コンフィグレーション及びコントロールビットレジスタは、CCIリクエストマッピングの代替ACEが利用されるかどうかの指示を含む、実施形態211〜213の何れか1つのプロセッサ。
【0386】
215.前記コンフィグレーション及びコントロールビットレジスタは、ACEスヌープマッピングの代替CCIプローブが利用されるかどうかの指示を含む、実施形態211〜214の何れか1つのプロセッサ。
【0387】
216.前記コンフィグレーション及びコントロールビットレジスタは、ガスケット静止無効指示を含む、実施形態211〜215の何れか1つのプロセッサ。
【0388】
217.前記コンフィグレーション及びコントロールビットレジスタは、ライトバック順序無効指示を含む、実施形態211〜216の何れか1つのプロセッサ。
【0389】
218.前記コンフィグレーション及びコントロールビットレジスタは、全てのマルチトランザクションパーシャルライトのためのバイトライト強制の指示を含む、実施形態211〜217の何れか1つのプロセッサ。
【0390】
219.前記コンフィグレーション及びコントロールビットレジスタは、DvmSyncオペレーションの強制順序の指示を含む、実施形態211〜218の何れか1つのプロセッサ。
【0391】
220.前記ガスケットは、レジスタに関連したCACを含む、実施形態206〜219の何れか1つのプロセッサ。
【0392】
221.SMNスレーブインタフェースは、ガスケットレジスタにアクセスするために提供される、実施形態206〜220の何れか1つのプロセッサ。
【0393】
222.前記SMNスレーブインタフェースは、リセットの間、任意の必要なレジスタをロードするように構成されている、実施形態221のプロセッサ。
【0394】
223.前記SMNスレーブインタフェースは、CACに関連するレジスタにパワーマネージメントアクセスを提供するように構成されている、実施形態221又は222のプロセッサ。
【0395】
224.前記SMNスレーブインタフェースは、チキン(chicken)ビットへのソフトウエアアクセスを提供するように構成されている、実施形態221〜223の何れか1つのプロセッサ。
【0396】
225.前記SMNスレーブインタフェースは、パッケージCC6状態を入力及び離れる場合に前記レジスタの内容を保存及び復元する手段を提供するように構成されている、実施形態221〜224の何れか1つのプロセッサ。
【0397】
226.前記ガスケットはシングルトークンプールを含み、トークンは、SRIへの要求を送るために使用される、実施形態131〜225の何れか1つのプロセッサ。
【0398】
227.前記ガスケットは、パワーマネージメントに関与するように構成されている、実施形態131〜226の何れか1つのプロセッサ。
【0399】
228.前記ガスケットは、前記プロセッサが配置されている中のクラスタによってさらに提供される種々のイベントをカウントする前記必要なCACレジスタを実行するように構成されている、実施形態227のプロセッサ。
【0400】
229.前記ガスケットは、パワーマネージメント状態の変更のために静止機能を提供するように構成されている、実施形態227又は228のプロセッサ。
【0401】
230.前記静止機能は、CCIリクエストをさらにブロックする、実施形態229のプロセッサ。
【0402】
231.前記ガスケットは、周波数に基づき重み付けされたサイクルカウントを保存するように構成されている、実施形態227〜231の何れか1つのプロセッサ。
【0403】
232.前記GICは、パワーマネージメントインタフェースに相互作用するように構成されている、実施形態185〜231の何れか1つのプロセッサ。
【0404】
233.全てのインタラプトは、マイクロアーキテクチャインタラプトをサービスし、任意のアーキテクチャビジブルインタラプトをオペレーティングシステム(OS)で進めるマイクロコードによって遮られる、実施形態232のプロセッサ。
【0405】
234.前記マイクロアーキテクチャインタラプトは、ストップクロック(StpClk)及びスタートクロック(StartClk)を含む、実施形態233のプロセッサ。
【0406】
235.インタラプトは、ローカルインタラプトピンを介して、又は、リモートライトによって届けられる、実施形態232〜234の何れか1つのプロセッサ。
【0407】
236.GICインタラプトは、データファブリックにAXIインタフェースを通して、シェアードペリフェラルインタラプト(SPI)又はプライベートペリフェラルインタラプト(PPI)を含むローカルインタラプトピンを介して届けられる、実施形態232〜235の何れか1つのプロセッサ。
【0408】
237.全てのノースブリッジマルチターゲットインタラプトタイプは、PPIとして生成され得る、実施形態236のプロセッサ。
【0409】
238.インタラプトハンドラのための追加のステータスレジスタをさらに有する、実施形態237のプロセッサ。
【0410】
239.前記GICへのローカルSPIインプットが全てフリーランニングクロックである場合に、終了をアイドルにして前記SPIインプットを再マップする、実施形態236のプロセッサ。
【0411】
240.クロッキングリクエストは、停止状態又はHTC SBC状態の間、ConnecMaskシグナルがデアサートのときに生成される、実施形態1〜239の何れか1つのプロセッサ。
【0412】
241.全てのコアに発するプローブがブロックされる、実施形態240のプロセッサ。
【0413】
242.全てのペンディングプローブは、完了するこれらのプローブレスポンス及び/又はデータムーブメントのために待つことによって、任意の影響したコアからドレインされる、実施形態241のプロセッサ。
【0414】
243.前記プロセッサは、NbBusyシグナルをドロップする全ての影響したコアのために待つ、実施形態242のプロセッサ。
【0415】
244.前記プロセッサは、NBSYNファーストインファーストアウト(FIFO)キューへのラウンドトリップをカバーする十分な時間で無制限に待ち、前記FIFOキューのインフライトトラッフィクによってトリガされる新しいイベントが対象を提起する十分な時間を有する、実施形態243のプロセッサ。
【0416】
245.前記プロセッサは、ブロックし、応答され又は認識される前記CACインタフェースのペンディングAPMリクエストのために待つ、実施形態244のプロセッサ。
【0417】
246.前記プロセッサは、パワーダウンのためのヒステリシスを満たしている、実施形態245のプロセッサ。
【0418】
247.対象とされたコアへの全てのクロックゲートは、デアサートされ、それからプローブに関連するクロックゲートが再度可能になる、実施形態240〜246の何れか1つのプロセッサ。
【0419】
248.コア電圧は、アジャスティングパワーゲーティング(PG)ヘッダーによって減少し、フィードバック回路を介してその電圧を維持する、実施形態240〜247の何れか1つのプロセッサ。
【0420】
249.調整すること及び維持することは、フラッシング又はフラッシングなしで適用される、実施形態248のプロセッサ。
【0421】
250.Qチャネルハンドシェイクは、前記調整すること及び維持することを許可するパワーコントローラとともに使用される、実施形態248又は249のプロセッサ。
【0422】
251.前記Qチャネルハンドシェイクの完了においてローパワー状態が終了し得る、実施形態250のプロセッサ。
【0423】
252.前記Qチャネルハンドシェイクの完了の後にコアC状態コミットポイントが存在し得る、実施形態250又は251のプロセッサ。
【0424】
253.前記Qチャネルハンドシェイクは、CPU LowPwrReqアサーションを開始される、実施形態252のプロセッサ。
【0425】
254.VceLowPrwRdyは、前記コアがコミットしたことを示しているCPU QACCEPTアサーションまでブロックされている、実施形態253のプロセッサ。
【0426】
255.ファストインタラプトリクエスト(FIQ)/インタラプトリクエスト(IRQ)エッジは、起動イベントを生成するために使用される、実施形態240〜254の何れか1つのプロセッサ。
【0427】
256.前記起動イベントは、RCC3リテンションモードからの終了をトリガする、実施形態255のプロセッサ。
【0428】
257.RCC3リテンションモードからの終了の際に全てののインタラプトが届けられる、実施形態256のプロセッサ。
【0429】
258.前記プロセッサは、受信するDvmOpのCPU QACTIVEをデアサートする、実施形態1〜257の何れか1つのプロセッサ。
【0430】
259.CC6フローにおいて、パワーダウンは、全てのDVMターゲットのために無効として行動する、実施形態258のプロセッサ。
【0431】
260.前記プロセッサは、DVMディテクションのローパワーモードから終了するように構成されている、実施形態258又は259のプロセッサ。
【0432】
261.前記プロセッサは、パワーゲーティングモード(CC6モード)を使用するように構成されている、実施形態1〜260の何れか1つのプロセッサ。
【0433】
262.前記CC6モードに入るために、前記ノースブリッジは、クロックにクロッキングリクエストでパワートグルを要求する、実施形態261のプロセッサ。
【0434】
263.前記プロセッサは、キャッシュ及びコア状態がフラッシュされているとき、前記CC6モードに入ることができる、実施形態262のプロセッサ。
【0435】
264.前記CC6モードの終了の際に、状態の復元が必要とされる、実施形態261〜263の何れか1つのプロセッサ。
【0436】
265.前記GICは、いくつかのモードの1つでプロセッサインタフェースにおいてFIQ/IRQの動作をプログラムする、実施形態261〜264の何れか1つのプロセッサ。
【0437】
266.いくつかのモードの1つは、ノーマルモードを含み、前記GICからのnIRQCPU[n]/nFIQCPU[n]ピンは、全ての状況でドライブされる、実施形態265のプロセッサ。
【0438】
267.いくつかのモードの1つは、レガシーFIQ/IRQピンと前記GICインプットをオーバーライドするバイパスモードを含む、実施形態265のプロセッサ。
【0439】
268.いくつかのモードの1つは、コアにIRQ/FIQピンを生成するバイパス無効モードを含み、ローパワー終了のためのタイプのインタラプトの存在でのパワーコントローラにnIRQOUT[n]/nFIQOUT[n]をドライブする、実施形態265のプロセッサ。
【0440】
269.前記CC6モードの終了において、対象となるコアは、リセットがかかり、例外ベクタからコードのフェッチを開始する、実施形態261〜268の何れか1つのプロセッサ。
【0441】
270.前記例外ベクタは、ジャンプテーブルでのハンドラリセットを含む、実施形態269のプロセッサ。
【0442】
271.前記プロセッサは、ラストコアエンタリングC状態のL2リテンションの要求によって複雑なリテンションモード(RXC3)が入るように構成されている、実施形態1〜270の何れか1つのプロセッサ。
【0443】
272.前記RXC3モードは、L2スタンドバイハンドシェイクを実装することを含む、実施形態271のプロセッサ。
【0444】
273.前記L2スタンドバイハンドシェイクは、前記RCC3モード及び前記CC6モードの何れかに入るラストコアで実行される、実施形態272のプロセッサ。
【0445】
274.前記プロセッサは、複雑なパワーゲイティングモード(XC6)に入るように構成されている、実施形態1〜273の何れか1つのプロセッサ。
【0446】
275.前記XC6モードの間、前記ガスケットはパワーオフとなる、実施形態274のプロセッサ。
【0447】
276.前記ガスケットは、全てのクレジットがノースブリッジによってリリースされるまで、前記ノースブリッジに通信できない、実施形態275のプロセッサ。
【0448】
277.前記ガスケットは、クレジットを受け入れられる用意があるときに、ResetUcodeGoをドライブする、実施形態275又は276のプロセッサ。
【0449】
278.モニター及びウエイトメカニズムの何れかによって生成されたフラッシュリクエストにおいて、StpClkシグナルは、前記対象とされたコアに送られる、実施形態1〜277の何れか1つのプロセッサ。
【0450】
279.前記対象とされたコアは、前記キャッシュをフラッシュし、前記ノースブリッジにフラッシュされた状態をシグナルする適切なビットをマークする、実施形態278のプロセッサ。
【0451】
280.前記ノースブリッジは、クロックにクロッキング/パワーリクエストを生成するとき、より深いC状態に移行する、実施形態279のプロセッサ。
【0452】
281.CPU freq routineは、ディスクリートP状態レベルにパーフォーマンスレベルパーセンテージをマップする、実施形態1〜280の何れか1つのプロセッサ。
【0453】
282.前記ディスクリートP状態レベルは、前記ノースブリッジにCofVidCtlを介して要求される、実施形態281のプロセッサ。
【0454】
283.インタラプトベースの静止及び非静止ルーチンが実装される、実施形態281又は282のプロセッサ。
【0455】
284.前記静止ルーチンは、StpClkベース静止ルーチンを含む、実施形態283のプロセッサ。
【0456】
285.StpClkは、セキュアインタラプトとして使用されるFIQにフックされる、実施形態284のプロセッサ。
【0457】
286.トラストゾーンが実装された場合、P状態が変化し、StpClkソースがセキュアとして登録される、実施形態284又は285のプロセッサ。
【0458】
287.スーパーバイザモードは、バンクされたリンクレジスタで使用するために使用され、これにより、FIQへのリエントリの2つの例を許容する、実施形態286のプロセッサ。
【0459】
288.FIQの例外ハンドラは、他の信頼されたサービスのStpClkプリエンプションをサポートするために前記スーパーバイザモードに切り替わる、実施形態の287プロセッサ。
【0460】
289.P状態StpClkのサービスにおいて、HTC SBCシステムマネージメントブロードキャストは、ノースブリッジに送られる、実施形態284〜288の何れか1つのプロセッサ。
【0461】
290.全ての未処理のトラッフィクは、データシンクロナイゼーションバリア(DSB)命令を介して静止される、実施形態289のプロセッサ。
【0462】
291.インタラプトのための待ち(WFI)は、信号で送られる、実施形態290のプロセッサ。
【0463】
292.前記WFIを受信する際に、前記ノースブリッジは、選択されることからブロックすることによって、前記クラスタに対するプローブを静止する、実施形態291のプロセッサ。
【0464】
293.前記ノースブリッジは、既に選択されたプローブの前記ノースブリッジのパイプラインに自由にドレインする、実施形態292のプロセッサ。
【0465】
294.ノースブリッジは、クラスタが未処理のプローブを完了するようにそれらのバッファを解除する当該未処理のプローブのために待つ、実施形態293のプロセッサ。
【0466】
295.前記プローブがドレインされて、前記ノースブリッジが、前記P状態変化をスケジュールする前に前記クラスタとともにACINACTM/STANDBYWFIL2ハンドシェイクを実行する、実施形態293又は294のプロセッサ。
【0467】
296.クラスタがP状態変化の間、前記クラスタは、インタラプトを取らなくてもよく、ステムリクエストをしなくてもよい、実施形態281〜295の何れか1つのプロセッサ。
【0468】
297.インタラプトエッジは、前記ノースブリッジによってマスクされる、実施形態296のプロセッサ。
【0469】
298.前記P状態変化が完了すると、前記ノースブリッジは、静止からコアを起動する、実施形態296又は297のプロセッサ。
【0470】
299.前記ノースブリッジは、StartClkを介してコアを起動する、実施形態298のプロセッサ。
【0471】
300.前記StartClkは、最も高いFIQプライオリティを有する、実施形態299のプロセッサ。
【0472】
301.前記ノースブリッジは、イベント(WFE)のために待ちを介して前記コアを起動する、実施形態298のプロセッサ。
【0473】
302.前記WFEは、インタラプト又はEVENTIピンを介したイベントからトリガされる、実施形態301のプロセッサ。
【0474】
303.前記コアがWFEから終了するとき、インタラプト及び終了のアンマスクする前記StpClkハンドラの中に存在する、実施形態301又は302のプロセッサ。
【0475】
304.前記ガスケットは前記静止を実装する、実施形態281〜303のプロセッサ。
【0476】
305.前記クラスタと前記ガスケットとの間の前記ACEインタフェースが動作を継続し、NBSYNの何れかの端部の前記CCIインタフェースが静止される、実施形態304のプロセッサ。
【0477】
306.前記ガスケットは、新しいリクエストをブロックし、未処理の応答を待つ、実施形態304又は305のプロセッサ。
【0478】
307.P状態変化リクエストにおいて、前記ノースブリッジは、静止するサイドバンドを通して前記ガスケットに通知する、実施形態304〜306の何れか1つのプロセッサ。
【0479】
308.前記ガスケットは、前記ノースブリッジに送られることからノンライトバックリクエストをブロックし、全ての未処理のライトバックをドレインする、実施形態307のプロセッサ。
【0480】
309.前記ガスケットは、全ての未処理のライトバックがドレインされたとき、静止されたレスポンスをノースブリッジに信号で送る、実施形態308のプロセッサ。
【0481】
310.前記ノースブリッジは、選択されてからの新しいプローブをブロックし、完成する未処理のプローブのために待つ、実施形態309のプロセッサ。
【0482】
311.前記ガスケットは、プローブが前記ノースブリッジから未処理でないときのみ、ライトバックをブロックする、実施形態310のプロセッサ。
【0483】
312.前記ガスケットは、前記ノースブリッジにペンディングのライトバックがある限り、NbBusyを起動する、実施形態311のプロセッサ。
【0484】
313.全てのプローブバッファが返され、前記ガスケットがNbBusyアサートでないときのみ、P状態変化を開始することを許される、実施形態312のプロセッサ。
【0485】
314.前記非静止は、前記静止リクエストを活動していない前記ノースブリッジによって実行され、前記ガスケットは、前記静止されたレスポンスを取り除くことによって応答する、実施形態304〜313の何れか1つのプロセッサ。
【0486】
315.前記ノースブリッジは、前記リクエストが新しいリクエストの開始の前に以前のハンドシェイクからデアサートされたことを保証する、実施形態314のプロセッサ。
【0487】
多くのバリエーションが、ここで開示されていることに基づいて可能であることを理解すべきである。特徴と要素は、特に組合せにより上述されているが、各々の特徴と要素は、他の特徴と要素なしに単独で、又は、他の特徴と要素の有無に関わらない様々な組合せで使用されてもよい。
【0488】
提供される方法は、多目的コンピュータ、プロセッサ又はプロセッサコアで実装されてもよい。適切なプロセッサは、例として、汎用プロセッサ、特別な目的プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連した1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他のタイプのいかなる集積回路(IC)、及び/又は、状態マシンを含む。このようなプロセッサは、処理されたハードウェア説明言語(HDL)命令の結果、及び、ネットリスト(コンピュータ可読媒体に記憶され得る命令)を含む他の中間的なデータを用いた製造プロセスで構成することによって製造されてもよい。そのような処理の結果は、実施形態の範囲を実施するプロセッサを製造するための半導体製造プロセスで使われるマスクワークであってもよい。
【0489】
ここで提供されている方法又はフローチャートは、多目的コンピュータ又はプロセッサによる実行のための非一時的なコンピュータ可読記憶媒体に取り入れられるコンピュータープログラム、ソフトウェア又はファームウェアで実施されてもよい。非一時的なコンピュータ可読記憶媒体の例は、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体記憶装置、磁気媒体内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学メディア、並びに、CD−ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体を含む。