(57)【要約】ブート構成情報（１３０）は、低電力状態中、処理システム（１００）の揮発性メモリ（１０２）に記憶される。低電力状態からレジュームする際に、プロセッサ装置（１２６）は、不揮発性メモリ（１０４，１２４）からメモリコントローラ（１１４）に関する構成情報（１３８）にアクセスし、揮発性メモリ（１０２）にアクセスできるように構成情報（１３８）を用いてメモリコントローラ（１１４）を復元する。その後、プロセッサ装置（１２６）は、低電力状態中に揮発性メモリ（１０２）によって保持され、構成されたメモリコントローラ（１１４）を介してアクセスされるコア状態情報（１３４）を用いて、１つ以上のプロセッサコア（１０６）の最初のコンテキストを構成し、１つ以上のプロセッサコア（１０６）は、不揮発性メモリ（１０４）からブートコード（１３２）にアクセスするのではなく、低電力状態中に揮発性メモリ（１０２）によって保持され、構成されたメモリコントローラ（１１４）を介してアクセスされるレジュームブートコード（１３６）を実行することによって、ブートプロセスを完了する。【選択図】図１
2015523645.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ装置（１２６）がパワーダウンされている低電力状態からレジュームするという指示に応じて、前記低電力状態の間に揮発性メモリ（１０２）に記憶された第１のブート構成情報（１３２）を用いて、前記プロセッサ装置（１２６）を再初期化することを含む方法。
【請求項２】
前記プロセッサ装置（１２６）を再初期化することは、
不揮発性メモリ（１０４，１２４）に記憶されたメモリコントローラ構成情報（１３８）を用いて、前記プロセッサ装置（１２６）のメモリコントローラ（１１４）を構成することと、
前記構成されたメモリコントローラ（１１４）を介して前記揮発性メモリ（１０２）から前記第１のブート構成情報（１３２）にアクセスすることと、
を含む請求項１の方法。
【請求項３】
前記メモリコントローラ（１１４）を構成することは、タイミング情報およびアドレスマッピング情報のうち少なくとも一方を構成することを含む請求項２の方法。
【請求項４】
前記プロセッサ装置（１２６）を再初期化することは、
前記第１のブート構成情報（１３２）のコア状態情報（１３４）に基づいて、前記プロセッサ装置（１２６）のプロセッサコア（１０６）のコンテキストを構成することと、
前記プロセッサコア（１０６）を用いて、前記第１のブート構成情報（１３２）の第１のブートコード（１３６）を実行することと、
を含む請求項１の方法。
【請求項５】
前記プロセッサコア（１０６）のコンテキストを構成することは、前記プロセッサコア（１０６）の命令ポインタを、前記第１のブートコード（１３６）のリセットベクトルに設定することを含む請求項４の方法。
【請求項６】
前記プロセッサコア（１０６）のコンテキストを構成することは、前記コア状態情報（１３４）を用いて前記プロセッサコア（１０６）の１つ以上のレジスタ値を復元することと、前記コア状態情報（１３４）を用いて割込みコントローラ状態を復元することと、１つ以上の入力／出力（Ｉ／Ｏ）サブシステムを復元することと、のうち少なくとも１つをさらに含む請求項５の方法。
【請求項７】
前記プロセッサ装置（１２６）のパワーオンリセットに応じて、不揮発性メモリ（１０４）に記憶された第２のブートコード（１２８）を実行することによって、前記プロセッサ装置（１２６）を初期化することであって、前記コア状態情報（１３４）を前記揮発性メモリ（１０２）に記憶することを含む、ことと、
前記プロセッサ装置（１２６）の初期化に続いて前記プロセッサ装置（１２６）を前記低電力状態に置くことと、
をさらに含む請求項４の方法。
【請求項８】
前記プロセッサ装置（１２６）のパワーオンリセットに応じて、不揮発性メモリ（１０４）に記憶された第２のブート構成情報（１３０）を用いて前記プロセッサ装置（１２６）を初期化することと、
前記プロセッサ装置（１２６）の初期化に続いて前記プロセッサ装置（１２６）を前記低電力状態に置くことと、
をさらに含む請求項１の方法。
【請求項９】
前記プロセッサ装置（１２６）を初期化することは、前記第２のブート構成情報（１３０）のブートコード（１２８）を実行して、前記第１のブート情報のコピーを前記不揮発性メモリ（１０４）から前記揮発性メモリ（１０２）に転送することを含む請求項８の方法。
【請求項１０】
プロセッサ装置（１２６）を備えるシステムであって、
前記プロセッサ装置（１２６）は、
揮発性メモリ（１０２）に接続可能なメモリコントローラ（１１４）と、
前記メモリコントローラ（１１４）に接続されたリセットコントローラ（１１６）であって、前記プロセッサ装置（１２６）がパワーダウンされている低電力状態からレジュームするという指示に応じて、前記メモリコントローラ（１１４）を構成するリセットコントローラ（１１６）と、
前記メモリコントローラ（１１４）に接続されたプロセッサコア（１０６）であって、前記低電力状態からレジュームするという指示に応じて、前記メモリコントローラ（１１４）を介して前記揮発性メモリ（１０２）からアクセスされるブート構成情報（１３２）を用いて、前記プロセッサ装置（１２６）を再初期化するプロセッサコア（１０６）と、を備える、
システム。
【請求項１１】
前記ブート構成情報（１３２）は第１のブート構成情報を含み、前記プロセッサコアは、パワーオンリセットに応じて、不揮発性メモリ（１０４）からアクセスされる第２のブート構成情報（１３０）を用いて、前記プロセッサ装置（１２６）を初期化する請求項１０のシステム。
【請求項１２】
前記第２のブート構成情報（１３０）を記憶する不揮発性メモリ（１０４）をさらに備え、
前記第２のブート構成情報（１３０）はブートコード（１２８）を含み、ブートコード（１２８）が前記プロセッサコア（１０６）によって実行される場合に、前記第１のブート構成情報（１３２）の少なくとも一部を前記揮発性メモリ（１０２）に記憶するように前記プロセッサコア（１０６）を操作する請求項１１のシステム。
【請求項１３】
前記プロセッサコア（１０６）は、前記パワーオンリセットに応じて前記不揮発性メモリ（１０４）から前記ブートコード（１２８）を実行する請求項１２のシステム。
【請求項１４】
前記ブート構成情報（１３２）はブートコード（１３６）を含み、前記プロセッサコア（１０６）は、前記ブートコード（１３６）を実行することによって、前記プロセッサ装置（１２６）を再初期化する請求項１０のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して処理システムに関し、より詳細には、処理システムの電力状態の移行に関する。
【背景技術】
【０００２】
処理システムは、比較的不活性な期間における電力消費を低減するために、１つ以上のスリープ状態を実行することが多い。このようなスリープ状態のいくつかは、プロセッサ装置の１つ以上の構成要素またはプロセッサ装置全体の電力を除去することを含み、オペレーティングシステムが制御をレジュームする前にスリープ状態を終了する際に、プロセッサ装置の再初期化を必要とする。従来の再初期化は、パワーオンリセットからの初期化と同様に実行されており、プロセッサ装置の外部の不揮発性メモリからアクセスされる基本入力／出力システム（ＢＩＯＳ）コードの実行を含む「コールドブート」とも称されている。不揮発性メモリからＢＩＯＳコードへのアクセスは、比較的低速であるため、このようなスリープ状態を終了する際に従来の処理システムで見られる比較的長いウェークアップ時間（ｗａｋｅ−ｕｐ  ｌａｔｅｎｃｙ）の主な原因となる。
【０００３】
本開示は、添付図面を参照することによって理解を深めることができ、多くの特徴および利点が当業者にとって自明となるであろう。
【図面の簡単な説明】
【０００４】
【図１】本開示の少なくとも１つの実施形態に係る処理システムを示すブロック図である。
【図２】本開示の少なくとも１つの実施形態に係る処理システムの低電力状態を開始する方法を示すフローチャートである。
【図３】本開示の少なくとも１つの実施形態に係る処理システムを初期化および再初期化する方法を示すフローチャートである。
【図４】本開示の少なくとも１つの実施形態に係る集積回路（ＩＣ）デバイスを設計および製造する方法を示すフローチャートである。
【発明を実施するための形態】
【０００５】
異なる図面で用いられる同一の参照符号は、類似または同一の項目を示す。
【０００６】
図１〜４は、揮発性メモリへの電力が維持されている一方でプロセッサ装置がパワーダウンしている低電力状態から処理システムを効率的にレジューム（再開）するための技術の例を示す。一実施形態では、レジュームブート構成情報は、パワーオンリセットまたは他のコールドブート状態からの処理システムのブートプロセスの一部として、揮発性メモリに記憶されている。プロセッサ装置は、低電力状態を開始するというインジケータがアサートされると、揮発性メモリが記憶された情報を保持できるように少なくとも最低電圧が揮発性メモリに供給されている間、パワーダウンされる。プロセッサ装置のレジュームコントローラは、低電力状態を終了または再開するというインジケータを受信すると、不揮発性メモリからメモリコントローラに関する構成情報にアクセスするとともに、メモリコントローラを介して揮発性メモリにアクセスできるように、構成情報を用いてメモリコントローラを構成または他の方法で復元する。その後、プロセッサ装置は、低電力状態中に揮発性メモリによって保持されるコア状態情報であって、構成されたメモリコントローラを介してアクセスされるコア状態情報を用いて、１つ以上のプロセッサコアの最初のコンテキストまたは状態を構成することができる。１つ以上のプロセッサコアは、低電力状態中に揮発性メモリによって保持されるレジュームブートコードであって、構成されたメモリコントローラを介してアクセスされるレジュームブートコードを実行することによって、ブートプロセスを完了することができる。低電力状態からのレジュームプロセスの間、揮発性メモリからコア状態情報およびレジュームブートコードにアクセスすることによって、不揮発性メモリからアクセスされるブートコードおよび他のブート情報に依存する従来の初期化プロセスと比較して、ウェークアップ時間を大幅に短縮することができる。このウェークアップ時間の向上は、揮発性メモリと不揮発性メモリとの間で通常見られるアクセス時間およびスループットの差に少なくとも起因する。さらに、このプロセスは、不揮発性メモリにおけるブートコードの変更やスワップから生じる不正アクセスまたは構成を拒否するため、動作のセキュリティも向上させる。
【０００７】
以下の説明では、処理装置に関する「初期化」と「再初期化」とを区別している。処理装置の初期化は、パワーオンリセットまたは「コールドブート」に応じて行われる。これに対して、処理装置の再初期化は、処理装置がパワーダウンされている低電力状態からのレジュームもしくは復帰、または、「ウォームブート」に応じて行われる。ここで、「ブート」という用語は、様々な業界基準や独自のシステム初期化仕様またはプロセス、基本入力／出力システム（ＢＩＯＳ）、拡張可能ファームウェアインタフェース（ＥＦＩ）、統合ＥＦＩ（ＵＥＦＩ）などの何れも指すことができる。説明の簡潔を期するため、本開示の実施形態は、ＢＩＯＳのコンテキストを一例として説明する。しかしながら、本開示はＢＩＯＳに基づく実行に限定されず、ＢＩＯＳへの言及は、特に明示しない限り、他のシステム初期化仕様への言及も含む。
【０００８】
図１は、本開示の少なくとも１つの実施形態に係る、スリープからレジュームへの効率的なプロセスを実行する処理システム１００の一例を示す図である。処理システム１００は、例えば、デスクトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、サーバ、コンピュータ対応携帯電話、携帯情報端末などを含んでもよい。図に示した例では、処理システム１００は、揮発性メモリ１０２と、不揮発性メモリ１０４と、１つ以上のプロセッサコア１０６のセットと、ノースブリッジ１０８と、入力／出力（Ｉ／Ｏ）コントローラ１１０と、サウスブリッジ１１２と、メモリコントローラ１１４と、レジュームコントローラ１１６と、電力管理コントローラ１１８と、を含む。
【０００９】
説明の簡潔を期するため、本開示の技術の例では、非限定的な例示のコンテキストで説明する。揮発性メモリ１０４は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を含み、不揮発性メモリは、フラッシュメモリを含む。したがって、揮発性メモリ１０２および不揮発性メモリ１０４はそれぞれ、ＤＲＡＭ１０２およびフラッシュメモリ１０４とも称する。しかしながら、揮発性メモリ１０２は、ＤＲＡＭに限定されず、代わりに例えば、スタティックＲＡＭ（ＳＲＡＭ）、サイリスタＲＡＭ（Ｔ−ＲＡＭ）、ゼロ容量ＲＡＭなどであってもよい。同様に、不揮発性メモリ１０４は、フラッシュメモリに限定されず、代わりに例えば、読出し専用メモリ（ＲＯＭ）、強誘電体ＲＡＭ（Ｆ−ＲＡＭ）、磁気抵抗ＲＡＭ（Ｍ−ＲＡＭ）などの他の種類の不揮発性ＲＡＭであってもよい。
【００１０】
プロセッサコア１０６は、例えば、１つ以上の中央処理装置（ＣＰＵ）コア、１つ以上のグラフィックプロセッシングユニット（ＧＰＵ）コア、１つ以上のデジタル信号プロセッサ（ＤＳＰ）コア、または、これらの組み合わせを含んでもよい。一例として、処理システム１００は、１つ以上のＣＰＵコアと、１つ以上のＧＰＵコアとを備えるアクセラレーテッドプロセッシングユニット（ＡＰＵ）を含んでもよい。ノースブリッジ１０８は、プロセッサコア１０６のセットと、電力管理ユニット１１８と、Ｉ／Ｏコントローラ１１０とに接続されており、ＤＲＡＭ１０２に接続され又は接続可能となっている。ノースブリッジ１０８は、本明細書に記載するようなリセットおよびレジューム動作を制御するのに用いられる制御レジスタ１１９のセットを含むか、当該制御レジスタ１１９と関連付けられている。
【００１１】
Ｉ／Ｏコントローラ１１０は、サウスブリッジ１１２に接続され又は接続可能となっており、ノースブリッジ１０８とサウスブリッジ１１２と間のインタフェースとしての役割を果たす。Ｉ／Ｏコントローラ１１０は、周辺の構成要素に接続するための１つ以上の集積Ｉ／Ｏインタフェース（例えば、ディスプレイインタフェース（例えば、ディスプレイに接続するための高解像度マルチメディアインタフェース（ＨＤＭＩ（登録商標）））、ディスクリートＧＰＵ、拡張カード、他の周辺装置に接続するためのペリフェラルコンポーネントインタフェース−エクスプレス（ＰＣＩｅ）インタフェース、１つ以上の周辺装置に接続するためのユニバーサルシリアルバス（ＵＳＢ）インタフェースなど）をさらに含んでもよい。サウスブリッジ１１２は、フラッシュメモリ１０４に接続されており、Ｉ／Ｏコントローラ１１０とフラッシュメモリ１０４との間のインタフェースとしての役割を果たす。サウスブリッジ１１２は、周辺の構成要素に接続するための１以上の集積Ｉ／Ｏインタフェース（例えば、１つ以上のハードドライブに接続するためのシリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）インタフェース、ディスクリートＧＰＵ、拡張カード、他の周辺装置に接続するためのペリフェラルコンポーネントインタフェース−エクスプレス（ＰＣＩｅ）インタフェース、１つ以上の周辺装置に接続するためのユニバーサルシリアルバス（ＵＳＢ）インタフェースなど）をさらに含んでもよい。メモリコントローラ１１４は、ＤＲＡＭ１０２に接続され又は接続可能となっており、ＤＲＡＭ１０２用のインタフェースとしての役割を果たす。図に示した例では、メモリコントローラ１１４は、ノースブリッジ１０８の一部として示されている。
【００１２】
電力管理コントローラ１１８は、例えばアドバンストコンフィギュレーションアンドパワーインタフェース（ＡＣＰＩ）仕様などの１つ以上の電力状態仕様にしたがって、処理システム１００の特定の構成要素の電力状態を実行するように構成されている。一例として、電力管理コントローラ１１８は、オペレーティングシステム（ＯＳ）１２０または他の構成要素によってアサートされる電力状態を実行するために、１つ以上の構成要素に関するクロック周波数を変更すること、１つ以上の構成要素をパワーレール（ｐｏｗｅｒ  ｒａｉｌ）に接続もしくはパワーレールから遮断すること、１つ以上の構成要素に供給される電圧を変更すること、または、これらの組み合わせを実行することができる。
【００１３】
レジュームコントローラ１１６は、メモリコントローラ１１４と、メモリコントローラ１１４に関するメモリコントローラ（ＭＣ）構成情報が記憶される不揮発性メモリとに接続されている。不揮発性メモリは、例えば、フラッシュメモリ１０４、または、サウスブリッジ１１２等に実装されるＮＶＲＡＭ１２４を含んでもよい。後述するように、レジュームコントローラ１１６は、処理システム１０２をスリープ状態からレジュームするという指示に応じて、不揮発性メモリからＭＣ構成情報（ＭＣ状態イメージ１３８）にアクセスして、メモリコントローラ１１４を、メモリコントローラ１１４を介してＤＲＡＭ１０２にアクセスできるように構成する。レジュームコントローラ１１６は、ハードワイヤードロジックおよび他の回路として実装されており、マイクロコードを実行するマイクロコントローラ、他のファームウェアまたはこれらの組み合わせとして、本明細書に記載する機能を実行することができる。
【００１４】
少なくとも１つの実施形態では、処理システム１００は、特定の構成要素の回路が形成される１つ以上のダイまたは「チップ」を含むプロセッサ装置１２６を備えている。図に示した例では、プロセッサ装置１２６は、プロセッサコア１０６のセットと、ノースブリッジ１０８と、Ｉ／Ｏコントローラ１１０と、メモリコントローラ１１４と、レジュームコントローラ１１６と、電力管理コントローラ１１８と、を含む集積回路（ＩＣ）デバイスである。サウスブリッジ１１２と、ＤＲＡＭ１０２と、フラッシュメモリ１０４とは、例えばマザーボードを介してプロセッサ装置１２６に接続される外部装置として実装することができる。他の実施形態では、プロセッサ装置１２６は、サウスブリッジ１１２、ＤＲＡＭ１０２およびフラッシュメモリ１０４のうち何れか１つ以上を含んでもよい。
【００１５】
本開示に特に関連する処理システム１００の主な動作プロセスは、（１）パワーオンリセットまたは「コールドブート」プロセス、（２）スリープ状態Ｓ３へのサスペンドプロセス、（３）スリープ状態Ｓ３からのレジュームプロセス、である。パワーオンリセットプロセスにおいて、マイクロコードは、ブートストラッププロセッサ（ＢＳＰ）として動作する１つのプロセッサコア１０６によって実行されて、処理システム１００の予備初期化を実行する。その後、１つ以上のプロセッサコア１０６の各々の命令ポインタ（ＩＰ）は、フラッシュメモリ１０４に記憶されたリセットＢＩＯＳイメージ１３０のリセットブートコード１２８と関連付けられるリセットベクトルとともにロードされる。リセットＢＩＯＳイメージ１３０は、例えばリセットブートコード１２８および他のＢＩＯＳ情報などの、処理システム１００の初期化に用いられるリセットブート構成情報を含む。次に、プロセッサコア１０６は、リセットブートコード１２８を実行して処理システム１００の初期化を完了する。この時点で、制御がＯＳ１２０に移行する。
【００１６】
一実施形態では、リセットブートコード１２８は、フラッシュメモリ１０４からＤＲＡＭ１０２へレジュームＢＩＯＳイメージ１３２のコピーを転送するようにプロセッサ装置１２６を操作するコードを含む。これにより、レジュームＢＩＯＳイメージ１３２は、スリープ状態Ｓ３からのレジュームの際に処理システム１００を再初期化するのに用いられるレジュームブート構成情報を表す。このため、レジュームＢＩＯＳイメージ１３２は、１つ以上のコア状態イメージ１３４と、レジュームブートコード１３６とを含んでもよい。各コア状態イメージ１３４は、対応するプロセッサコア１０６のプロセッサ状態を表す情報（例えば、機械状態レジスタ（ＭＳＲ）、汎用レジスタ（ＧＰＲ）、浮動小数点（ＦＰ）レジスタなどの各種レジスタの値や、アドバンストプログラマブルインタラプトコントローラ（ＡＰＩＣ）状態、各種Ｉ／Ｏサブシステム状態情報などを含む）を有している。レジュームブートコード１３６は、プロセッサ装置１２６を操作して、プロセッサ装置１２６の再初期化を完了させるコードを含む。さらに、リセットブートコード１２８は、プロセッサ装置１２６を操作して、メモリコントローラ（ＭＣ）状態イメージ１３８を例えばＮＶＲＡＭ１２４などの他の不揮発性メモリに転送するコードを含んでもよい。また、ＭＣ状態イメージ１３８は、フラッシュメモリ１０４に保持される。ＭＣ状態イメージ１３８は、例えばタイミング情報やアドレスマッピング情報などのように、メモリコントローラ１１４を構成するのに用いられるＭＣ構成情報を含んでもよい。パワーオンリセットプロセスについて、図３を参照してより詳細に説明する。
【００１７】
動作中のいくつかの時点において、ＯＳ１２０は、電力管理コントローラ１１８がスリープ状態Ｓ３プロセスへのサスペンドを開始するのに応じて、スリープ状態Ｓ３の開始を信号で伝えることができる。このプロセス中、プロセッサ装置１２６はパワーダウンされ、ＤＲＡＭ１０２はセルフリフレッシュ状態に置かれる。セルフリフレッシュ状態では、ＤＲＡＭ１０２は、レジュームＢＩＯＳイメージ１３２に関連付けられるレジュームブート構成情報を保持する。このＳ３休止状態プロセスへのサスペンドについて、図２を参照してより詳細に説明する。
【００１８】
その後のいくつかの時点で、サウスブリッジ１１２は、例えばウェイクタイマの満了、周辺装置による割込みの生成、ユーザによる電源ボタンまたは他の「ウェイク」型ボタンの操作などのウェイクイベント（ｗａｋｅ  ｅｖｅｎｔ）に応じて、スリープ状態Ｓ３の終了を信号で伝えることができる。レジュームコントローラ１１６は、終了の信号に応じて、ＮＶＲＡＭ１２４（またはフラッシュメモリ１０４）からＭＣ状態イメージ１３８にアクセスして、メモリコントローラ１１４を、プロセッサ装置１２６がＤＲＡＭ１０２にアクセスできるように構成または他の方法で復元する。メモリコントローラ１１４が構成されると、１つ以上のプロセッサコア１０６の各々の命令ポインタが、レジュームブートコード１３６の対応するレジュームベクトルとともにロードされる。次に、プロセッサコア１０６は、解放されて、レジュームブートコード１３６の対応部分を実行し、処理システム１００の再初期化を完了させる。このＳ３スリープ状態からのレジュームプロセスは、図３を参照してより詳細に説明する。
【００１９】
図２は、本開示の少なくとも１つの実施形態に係る、Ｓ３スリープ状態へサスペンドする処理システムを準備する方法２００を示す図である。説明の簡潔を期するため、方法２００は、図１に示す処理システム１００の例示のコンテキストで説明する。最後のユーザ入力または他のスリープモード状態からの比較的長い静止に応じて、ブロック２０２において、ＯＳ１２０は、例えば、処理システム１００をＳ３スリープ状態に置く割込みハンドラを呼び出すシステム管理割込み（ＳＭＩ）などの割込みを信号で伝える。または、ＯＳ１２０は、ダイレクトＯＳ（ｄｉｒｅｃｔ  ＯＳ）または高位ソフトウェア命令によって、Ｓ３スリープ状態へのサスペンドを信号で伝える。
【００２０】
プロセッサ装置１２６は、フラグＳ３＿ＲＥＳＵＭＥ＿ＦＬＡＧを用いて、リセットからの復帰が、Ｓ３休止状態からのレジュームによるものであるのか、または、パワーオンリセットによるものであるのかを示す。したがって、ブロック２０４で、割込みハンドラまたはレジュームコントローラ１１６は、処理システム１００がＳ３状態にある間、引き続き電力が供給されている１つ以上のフロップまたは他の記憶素子に特定の値（例えば、「１」）を記憶させることによって、フラグＳ３＿ＲＥＳＵＭＥ＿ＦＬＡＧをアサートする。一実施形態では、フラグＳ３＿ＲＥＳＵＭＥ＿ＦＬＡＧは、最初にサウスブリッジ１１２のＮＶＲＡＭ１２４（Ｓ３スリープ状態の間、電力が供給されている）に記憶され、その後、レジュームコントローラ１１６は、Ｓ３スリープ状態からのレジュームプロセスの一部として、このフラグのコピーを、ノースブリッジ１０８の制御レジスタ１１９に移動させる。
【００２１】
ブロック２０６で、割込みハンドラまたはレジュームコントローラ１１６は、処理システム１００がＳ３状態の間ではＤＲＡＭ１０２に記憶された情報を維持するように、ＤＲＡＭ１０２をセルフリフレッシュモードに置く。ブロック２０８で、電力管理コントローラ１１８は、リセット信号をアサートする。リセット信号がアサートされている期間、プロセッサ装置１２６は、パワーダウン（電源が切断）される。本明細書で使用される「パワーダウン（電源が切断）」という用語は、レジスタ、キャッシュ、フロップ、他の記憶素子の状態が確実に保持されていない状態に置かれることを指す。これは、プロセッサ装置の構成要素の一部または全部に非動作電圧を提供する（すなわち、記憶素子の保持電圧よりも低い電圧を提供する）こと、プロセッサ装置の構成要素の一部または全部をクロックゲートすることなどによって、プロセッサ装置１２６の構成要素の一部または全部から電力を完全に遮断することで達成し得る。この時点では、処理システム１００は、Ｓ３スリープ状態にあると考えられる。
【００２２】
図３は、本開示の少なくとも１つの実施形態に係る、パワーオンリセットおよびＳ３スリープ状態からのレジュームの何れかからプロセッサ装置１２６を初期化する方法の一例３００を示す図である。方法３００は、ブロック３０２から開始され、プロセッサ装置１２６のリセット信号がデアサート（ｄｅａｓｓｅｒｔ）される。リセット信号のデアサートは、パワーオンリセットによってコールドブートを信号で伝えること、または、Ｓ３スリープ状態から動作状態へのレジュームを指示する信号を伝えることによって生じ得る。後者の場合には、例えば、処理システム１００がＳ３スリープ状態にある間に、ユーザの電源ボタンまたはユーザ入力装置の操作に応じてタイマを終了させることによって、信号が伝えられる。プロセッサ装置１２６は、フラグＷＡＩＴ＿ＢＯＯＴ＿ＩＮＩＴを用いて、プロセッサコア１０６がブートコードを実行するのを予備初期化が実行されるまで停止させる。このフラグは、ブロック３０２でＷＡＩＴ＿ＢＯＯＴ＿ＩＮＩＴを１に設定することによって、停止状態に初期化されてもよい。
【００２３】
ブロック３０４で、リセットのデアサートは、レジュームコントローラ１１６に伝達され、ブロック３０６でフラグＳ３＿ＲＥＳＵＭＥ＿ＦＬＡＧの状態をチェックすることによって、レジュームプロセスを開始する。レジュームコントローラ１１６が、Ｓ３＿ＲＥＳＵＭＥ＿ＦＬＡＧがアサートされた（例えば、１に等しい）と判定し、これにより、リセットのデアサートがＳ３状態からのレジュームの結果であると示す場合には、ブロック３０８で、レジュームコントローラ１１６は、ＤＲＡＭ１０２をセルフリフレッシュモードから終了させる。その後、レジュームコントローラ１１６は、Ｓ３スリープ状態中にＭＣ状態イメージ１３８が記憶されていたフラッシュメモリ１０４またはＮＶＲＡＭ１２４からＭＣ状態イメージ１３８にアクセスし、ＭＣ状態イメージ１３８に表されるコンテキスト情報を用いて、メモリコントローラ１１４の以前の状態を構成又は他の方法で復元する。この構成は、メモリコントローラ１１４に関するタイミング情報の復元と、以前のアドレスマッピング情報の復元（例えば、ページテーブルの構成）等を含んでもよい。
【００２４】
プロセッサ装置１２６は、フラグＳ３＿ＥＸＩＴ＿ＲＳＴを用いて、リセットからの復帰がＳ３状態からのレジュームであるか否かをＢＳＰに信号で伝える。メモリコントローラ１１４の構成後に、レジュームコントローラ１１６は、ブロック３１０でフラグＳ３＿ＥＸＩＴ＿ＲＳＴをアサートする。上述したように、プロセッサ装置１２６は、フラグＷＡＩＴ＿ＢＯＯＴ＿ＩＮＩＴを用いて、プロセッサコア１０６がブートコードを実行するのを、予備初期化が実行されるまで停止させる。したがって、メモリコントローラ１１４の復元と、フラグＳ３＿ＥＸＩＴ＿ＲＳＴのアサートとの後に、ブロック３１２で、レジュームコントローラ１１６は、フラグＷＡＩＴ＿ＢＯＯＴ＿ＩＮＩＴをデアサートすることによって、ＢＳＰおよびその他のプロセッサコア１０６を解放して、後述するような実行を開始させる。フラグＳ３＿ＥＸＩＴ＿ＲＳＴおよびＷＡＩＴ＿ＢＯＯＴ＿ＩＮＩＴは、例えばノースブリッジ１０８の１つ以上の制御レジスタ１１９に配置され得る。
【００２５】
ブロック３０６に戻り、レジュームコントローラ１１６が、Ｓ３＿ＲＥＳＵＭＥ＿ＦＬＡＧがアサートされていないと判定することによって、パワーオンリセット、または、Ｓ３スリープ状態以外の状態からの復帰であると示す場合には、フラグＳ３＿ＥＸＩＴ＿ＲＳＴはアサートされないままであり（例えば、「０」）、方法３００のフローは、ブロック３０６からブロック３１２にジャンプして、後述するようにフラグＷＡＩＴ＿ＢＯＯＴ＿ＩＮＩＴがデアサートされる。
【００２６】
ブロック３０４〜３１２のプロセスと並行して、ブロック３０２でのリセットのデアサートが、ブロック３１４でＢＳＰおよび他のプロセッサコア１０６に伝達される。それに応じて、ブロック３１６で、ＢＳＰは、リセットマイクロコードの実行を開始して、例えば、パワーオン自己テスト（ＰＯＳＴ）を実行すること、コア組込み自己診断テスト（ＢＩＳＴ）を実行すること、コアのヒューズを分配すること、初期化シーケンスの残りに備えるのに必要な内部コンテキストを初期化することによって、プロセッサ装置１２６を予備的に初期化する。予備初期化の完了後に、ブロック３１８で、プロセッサコア１０６は、フラグがデアサートされるまで制御レジスタ１１９に繰り返しフラグＷＡＩＴ＿ＢＯＯＴ＿ＩＮＩＴをポーリングすることによって、プロセッサコア１０６を解放して実行を開始させる。プロセッサコア１０６は、解放されると、ブロック３２０でフラグＳ３＿ＥＸＩＴ＿ＲＳＴにアクセスして、ブロック３０２でのリセットのデアサートがパワーオンリセットによるものなのか（Ｓ３＿ＥＸＩＴ＿ＲＳＴ＝０）、または、Ｓ３スリープ状態からのレジュームによるものなのか（Ｓ３＿ＥＸＩＴ＿ＲＳＴ＝１）を判定する。
【００２７】
フラグＳ３＿ＥＸＩＴ＿ＲＳＴがデアサートされる場合（例えば、「０」）には、方法３００のフローは、フラッシュメモリ１０４を用いて実行されるＢＩＯＳ初期化プロセスに向かう。したがって、ブロック３２２で、ＢＳＰは、リセットマイクロコードの実行を完了し、これにより、プロセッサ装置１２６の予備初期化を完了する。これに応じて、ブロック３２４で、ＢＳＰの命令ポインタは、コールドブートＢＩＯＳ初期化に用いられるデフォルトリセットベクトルに設定され、ブロック３２６で、ＢＳＰは、フラッシュメモリ１０４からのリセットＢＩＯＳイメージ１３０のリセットブートコード１２８の実行を開始して、システム初期化プロセスを完了する。一実施形態では、リセットブートコード１２８は、レジュームＢＩＯＳイメージ１３２のコピーをＤＲＡＭ１０２に記憶するようにＢＳＰを操作する命令を含み、これにより、リセットブートコード１２８の実行は、ブロック３２８でのフラッシュメモリ１０４からＤＲＡＭ１０２へのレジュームＢＩＯＳイメージ１３２のコピーの転送と、ブロック３２９でのフラッシュメモリ１０４からＮＶＲＡＭ１２４へのＭＣ状態イメージ１３８のコピーの転送と、を含んでもよい。リセットブートコード１２８の実行が完了すると、１つ以上のプロセッサコア１０６のＩＰがＯＳ１２０の最初のベクトルに設定され、ブロック３３０で処理システム１００の制御がＯＳ１２０に転送されることによって、処理システム１００の初期化が完了する。
【００２８】
ブロック３２０に戻り、フラグＳ３＿ＥＸＩＴ＿ＲＳＴがアサートされる場合（例えば、「１」）には、方法３００のフローは、フラッシュメモリ１０４ではなくＤＲＡＭ１０２に記憶されるレジュームブート構成情報を用いて実行されるＢＩＯＳ再初期化工程に向かう。したがって、ブロック３３２で、プロセッサコア１０６の一部または全部は、マイクロコードまたは他のファームウェアを実行して、復元されたメモリコントローラ１１４を介して、ＤＲＡＭ１０２から対応するコア状態イメージ１３４にアクセスする。次に、各プロセッサコア１０６は、対応するコア状態イメージ１３４に記憶されるコンテキスト情報に基づいて、コンテキストをロードする。各コア状態イメージ１３４は、レジュームＢＩＯＳイメージ１３２のレジュームブートコード１３６の対応するレジュームベクトルを含み、ブロック３３４で、このレジュームベクトルは、対応するプロセッサコア１０６の命令ポインタにロードされる。ブロック３３６で、プロセッサコア１０６は、ＤＲＡＭ１０２から個々のレジュームベクトルで始まるレジュームブートコード１３６の実行を開始して、処理システム１００の初期化を完了させる。レジュームブートコード１３６の実行が完了すると、１つのプロセッサコア１０６のＩＰがＯＳ１２０の最初のベクトルに設定され、ブロック３３０で処理システム１２０の制御がＯＳ１２０に転送されることによって、処理システム１００の再初期化が完了する。
【００２９】
少なくとも１つの実施形態では、上記の装置および技術が、図１に示すプロセッサ装置１２６などの１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージまたはマイクロチップと称される）を備えるシステムにおいて実現される。電子設計自動化（ＥＤＡ）とコンピュータ支援設計（ＣＡＤ）ソフトウェアツールを、これらのＩＣデバイスの設計と製造に使用することができる。通常、これらの設計ツールは、１つ以上のソフトウェアプログラムによって表される。１つ以上のソフトウェアプログラムは、プロセスの少なくとも一部を実行して、回路を製造する製造システムを設計または改造するように、コンピュータシステムによって実行可能なコードを含み、１つ以上のＩＣデバイスの回路を表すコードに基づき動作するようにコンピュータシステムを操作する。このコードは、命令、データ、または、命令およびデータの組み合わせを含んでもよい。設計ツールまたは製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶されている。同様に、ＩＣデバイスの設計または製造の１つ以上の段階を表すコードは、同一のコンピュータ可読記憶媒体または異なるコンピュータ可読記憶媒体に記憶され得るし、これらの媒体からアクセスされ得る。
【００３０】
コンピュータ可読記憶媒体は、使用中にコンピュータシステムによってアクセス可能であり、命令および／もしくはデータをコンピュータシステムに送る任意の記憶媒体または記憶媒体の組み合わせを含んでもよい。このような記憶媒体は、光学媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープまたは磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）またはキャッシュ）、不揮発性メモリ（例えば、読出し専用メモリ（ＲＯＭ）またはフラッシュメモリ）、または、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体を含んでもよいが、これらに限定されない。コンピュータ可読記憶媒体は、コンピューティングシステムに埋め込まれてもよく（例えば、システムＲＡＭまたはＲＯＭ）、コンピューティングシステムに固着されてもよく（例えば、磁気ハードドライブ）、コンピューティングシステムに脱着可能に装着されてもよく（例えば、光ディスクまたはユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、有線または無線ネットワークを介してコンピュータシステムに接続されてもよい（例えば、ネットワークアクセス可能ストレージ（ＮＡＳ））。
【００３１】
図４は、本開示の少なくとも１つの実施形態に係る本発明の１つ以上の態様を実現する、ＩＣデバイスを設計および製造する方法の例４００を示すフローチャートである。上述したように、以下の各プロセスで生成されるコードは、対応する設計ツールもしくは製造ツールによるアクセスと使用のためにコンピュータ可読記憶媒体に記憶され、または、他の方法で具体化される。
【００３２】
ブロック４０２で、ＩＣデバイスの機能仕様が生成される。機能仕様（マイクロアーキテクチャ仕様（ＭＡＳ）と称されることも多い）は、Ｃ、Ｃ＋＋、システムＣ、シミュリンク、もしくは、ＭＡＴＬＡＢなどの様々なプログラミング言語またはモデリング言語によって表すことができる。
【００３３】
ブロック４０４で、機能仕様が用いられ、ＩＣデバイスのハードウェアを表すハードウェア記述コードが生成される。少なくとも１つの実施形態では、ハードウェア記述コードは、ＩＣデバイスの回路の形式記述と設計のために、様々なコンピュータ言語、仕様言語またはモデリング言語を含む少なくとも１つのハードウェア記述言語（ＨＤＬ）によって表される。通常、生成されたＨＤＬコードは、ＩＣデバイスの回路の動作、回路の設計と構造、シミュレーションを通じてＩＣデバイスの正常動作を検証する試験を表す。ＨＤＬの例は、アナログＨＤＬ（ＡＨＤＬ）、ベリログＨＤＬ、システムベリログＨＤＬ、ＶＨＤＬなどである。同期デジタル回路を実現するＩＣデバイスの場合には、ハードウェア記述コードは、同期デジタル回路の動作の抽象的表示を提供するレジスタ転送レベル（ＲＴＬ）コードを含んでもよい。他の種類の回路の場合には、ハードウェア記述コードは、回路の動作の抽象的表示を提供する挙動レベルコードを含んでもよい。通常、ハードウェア記述コードによって表されるＨＤＬモデルは、設計検証をパスするために、１回以上の回数のシミュレーションとデバッギングとを受ける。
【００３４】
ハードウェア記述コードによって表される設計の検証後に、ブロック４０６で、合成ツールを用いてハードウェア記述コードを合成し、ＩＣデバイスの回路の最初の物理的実装を表示または定義するコードを生成する。一実施形態では、合成ツールは、回路素子要素（例えば、ゲート、トランジスタ、レジスタ、コンデンサ、インダクタ、ダイオードなど）と、回路素子要素間のネットまたは接続と、を含む１つ以上のネットリストを生成する。または、ネットリストの全部または一部は、合成ツールを用いずに手動で生成することができる。ハードウェア記述コードと同様に、ネットリストも、最後のセットの１つ以上のネットリストが生成される前に、１つ以上の試験および検証プロセスを受けることができる。
【００３５】
または、概要エディタツールを用いてＩＣデバイスの回路概要をドラフトした後に、概要捕捉ツールを使用して、結果としてできる回路図を捕捉し、構成要素と回路の接続を表す１つ以上のネットリスト（コンピュータ可読媒体に記憶されている）を生成することができる。その後、取得された回路図は、試験と検証のために、１つ以上の回数のシミュレーションを受けることができる。
【００３６】
ブロック４０８で、１つ以上のＥＤＡツールは、ブロック４０６で製造されたネットリストを用いて、ＩＣデバイスの回路の物理レイアウトを表すコードを生成する。このプロセスは、例えば、ＩＣデバイスの回路の各要素の位置を決定または固定するためのネットリストを用いる配置ツールを含んでもよい。さらに、ルーティングツールは、配置プロセスに基づき、ネットリストにしたがって回路素子を接続するのに必要な配線を追加し、経路を決定する。結果として生じるコードは、ＩＣデバイスの３次元モデルを表す。コードは、例えばグラフィックデータベースシステムＩＩ（ＧＤＳＩＩ）フォーマットなどのデータベースファイルフォーマットで表され得る。このフォーマットのデータは、通常、階層構造の回路レイアウトに関する幾何的形状、テキストラベルおよび他の情報を表す。
【００３７】
ブロック４１０で、物理レイアウトコード（例えば、ＧＤＳＩＩコード）は、物理レイアウトコードを用いる製造設備に提供され、製造設備の製造ツール（例えば、マスクワークを通じて）を構成または他の方法で改造して、ＩＣデバイスを製造する。すなわち、物理レイアウトコードは、１つ以上のコンピュータシステムに組み込まれた後に、製造設備のツールの作業、または、そこで実行される製造作業の一部または全部を制御することができる。
【００３８】
なお、概略的な説明で上述した行為または要素の全てが必須というわけではなく、特定の工程または装置の一部については不要であってもよく、上述のものに加えて、１つ以上の他の工程を実行してもよいし、１つ以上の他の要素を含んでもよい。さらに、工程の順番は、必ずしも上記の工程が実行された順番とは限らない。
【００３９】
また、コンセプトを具体的な実施形態を参照して説明した、しかし、当業者であれば、以下の請求項に記載される本開示の範囲を逸脱することなく様々な修正や変更を加えることができると理解するであろう。したがって、明細書及び図面は、限定的ではなく例示的であるとみなすべきであり、上記の全ての修正は、本開示の範囲に属するものと意図される。
【００４０】
具体的な実施形態を参照して、利益、他の利点、課題の解決策を説明した。しかしながら、利益と、利点と、課題の解決策と、任意の利益、利点、課題の解決策を生じさせ又は明確にすることのできる特徴とは、請求項の一部又は全部にとって極めて重要であり、必要であり又は必須であると解釈すべきではない。
【図１】
2015523645.tif 000003
【図２】
2015523645.tif 000004
【図３】
2015523645.tif 000005
【図４】
2015523645.tif 000006
【国際調査報告】
2015523645.tif 000007
2015523645.tif 000008