(57)【要約】  システムは、第１の非対称コア、第２の非対称コア、およびコア切り替えモジュールを含む。第１の非対称コアは、システムが第１のモードで動作するときにアプリケーションを実行し、システムが第２のモードで動作するときに休止している。第２の非対称コアは、システムが第２のモードで動作しているときにアプリケーションを実行する。コア切り替えモジュールは、第１のモードと第２のモードとの間でシステムの動作を切り替える。コア切り替えモジュールは、第１の制御信号を受信した後、第１の非対称コアによるアプリケーションの処理を選択的に停止する。コア切り替えモジュールは、第１の非対称コアの第１の状態を、第２の非対称コアに転送する。第２の非対称コアは、第２のモードにおいて、アプリケーションの実行を再開する。【選択図】図３A
2010538371.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
前記システムが第１のモードで動作するときにアプリケーションを実行し、前記システムが第２のモードで動作するときに休止している、第１の非対称コアと、
前記システムが前記第２のモードで動作するときに前記アプリケーションを実行する第２の非対称コアと、
前記第１のモードと前記第２のモードとの間で前記システムの動作を切り替えるコア切り替えモジュールであって、第１の制御信号を受け取った後に前記第１の非対称コアによる前記アプリケーションの処理を選択的に停止し、前記第１の非対称コアの第１の状態を前記第２の非対称コアに転送する、コア切り替えモジュールとを備え、前記第２の非対称コアは、前記第２のモードにおいて前記アプリケーションの実行を再開する、システム。
【請求項２】
前記第１の制御信号は、割り込みが無効であることを示す、請求項１に記載のシステム。
【請求項３】
前記第２のモード中、前記第２の非対称コアが前記アプリケーションの実行を再開するときに、命令翻訳なしに命令が実行される、請求項１に記載のシステム。
【請求項４】
前記アプリケーションにサービスを提供するオペレーティングシステム（ＯＳ）をさらに備え、前記コア切り替えモジュールは、前記第１の非対称コアと前記第２の非対称コアとの間で、ＯＳに対して透過的に前記アプリケーションの実行を切り替える、請求項１に記載のシステム。
【請求項５】
前記第１の非対称コアの第１の最大速度は、前記第２の非対称コアの第２の最大速度より大きい、請求項１に記載のシステム。
【請求項６】
前記第１の非対称コアは、所定の周波数より高い周波数で動作し、前記第２の非対称コアは、前記所定の周波数よりも低い周波数で動作する、請求項１に記載のシステム。
【請求項７】
前記第１の非対称コアの第１の最大動作電力レベルは、前記第２の非対称コアの第２の最大動作電力レベルより大きい、請求項１に記載のシステム。
【請求項８】
前記第１の非対称コアは、第１の命令セットアーキテクチャ（第１のＩＳＡ）を使用し、前記第２の非対称コアは、第２のＩＳＡを使用し、前記第１のＩＳＡは、前記第２のＩＳＡと互換性を有する、請求項１に記載のシステム。
【請求項９】
前記第１のＩＳＡの命令の第１のセットは、前記第２のＩＳＡの命令の第２のセットのスーパーセットであり、前記第１のセットは、前記第２のセットより多くの命令を含む、請求項８に記載のシステム。
【請求項１０】
前記ＯＳは、カーネルを備え、前記コア切り替えモジュールは、前記カーネルのレベルより高位で実行される、請求項４に記載のシステム。
【請求項１１】
ハイパーバイザモジュールをさらに備え、前記コア切り替えモジュールは、前記ハイパーバイザモジュールと統合される、請求項１に記載のシステム。
【請求項１２】
前記コア切り替えモジュールは、前記コア切り替えモジュールが前記第１の非対称コアによる前記アプリケーションの処理を選択的に停止するときに、前記第１の状態を保存する、請求項１に記載のシステム。
【請求項１３】
前記コア切り替えモジュールは、前記第２の非対称コアを起動し、前記第１の状態を使用して前記第２の非対称コアを初期化する、請求項１２に記載のシステム。
【請求項１４】
前記割り込みは、前記第２の非対称コアが前記アプリケーションの実行を再開した後に有効化される、請求項２に記載のシステム。
【請求項１５】
前記コア切り替えモジュールは、前記第２の非対称コアが起動したときに前記第１の非対称コアを停止し、前記第１の非対称コアが停止した後は、前記第１の非対称コアに電力が供給されないか、または待機電力が供給される、請求項１３に記載のシステム。
【請求項１６】
前記第１の非対称コアと通信するレベル２キャッシュ（Ｌ２キャッシュ）をさらに備え、前記第１の非対称コアが停止した後は、前記Ｌ２キャッシュに電力が供給されないか、または待機電力が供給される、請求項１５に記載のシステム。
【請求項１７】
前記コア切り替えモジュールは、前記第２の非対称コアが起動できなかったときに前記第１の状態を使用して前記第１の非対称コアを初期化し、前記第１の非対称コアは、前記第１のモードにおいて前記アプリケーションの実行を再開し、割り込みが有効化される、請求項１３に記載のシステム。
【請求項１８】
前記コア切り替えモジュールは、前記第２のモードと前記第１のモードとの間で前記システムの動作を切り替え、前記第１の制御信号を受け取った後に前記第２の非対称コアによる前記アプリケーションの処理を選択的に停止し、また前記第２の非対称コアの第２の状態を前記第１の非対称コアに転送し、前記第１の非対称コアは、前記第１のモードにおいて前記アプリケーションの実行を再開し、前記第１の制御信号は、割り込みが無効であることを示す、請求項１に記載のシステム。
【請求項１９】
前記第１のモード中、前記第１の非対称コアが前記アプリケーションの実行を再開するときに、命令翻訳なしに命令が実行される、請求項１８に記載のシステム。
【請求項２０】
前記アプリケーションにサービスを提供するオペレーティングシステム（ＯＳ）をさらに備え、前記コア切り替えモジュールは、前記第２の非対称コアと前記第１の非対称コアとの間で、ＯＳに対して透過的に前記アプリケーションの実行を切り替える、請求項１８に記載のシステム。
【請求項２１】
前記コア切り替えモジュールは、前記コア切り替えモジュールが前記第２の非対称コアによる前記アプリケーションの処理を選択的に停止するときに、前記第２の状態を保存する、請求項１８に記載のシステム。
【請求項２２】
前記コア切り替えモジュールは、前記第１の非対称コアを起動し、前記第２の状態を使用して前記第１の非対称コアを初期化する、請求項２１に記載のシステム。
【請求項２３】
前記割り込みは、前記第１の非対称コアが前記アプリケーションの実行を再開した後に有効化される、請求項１８に記載のシステム。
【請求項２４】
前記第１の非対称コアと通信するレベル２キャッシュ（Ｌ２キャッシュ）をさらに備え、前記第１の非対称コアが起動した後に、前記Ｌ２キャッシュに電力が供給される、請求項２２に記載のシステム。
【請求項２５】
前記コア切り替えモジュールは、前記第１の非対称コアが起動したときに前記第２の非対称コアを停止し、前記第２の非対称コアが停止した後は、前記第２の非対称コアに電力が供給されないか、または待機電力が供給される、請求項２２に記載のシステム。
【請求項２６】
前記コア切り替えモジュールは、前記第１の非対称コアが起動できなかったときに前記第２の状態を使用して前記第２の非対称コアを初期化し、前記第２の非対称コアは、前記第２のモードにおいて前記アプリケーションの実行を再開し、前記割り込みが有効化される、請求項２２に記載のシステム。
【請求項２７】
前記アプリケーションのコア使用率、リソース使用率、および動作性能のうちの少なくとも１つに基づき第２の制御信号を生成するコアプロファイルモジュールをさらに備える、請求項１に記載のシステム。
【請求項２８】
前記第２の制御信号に基づきコア変更シーケンス（ＣＣＳ）を開始するＣＣＳモジュールをさらに備え、前記コア切り替えモジュールは、前記ＣＣＳに基づき、前記第１の非対称コアおよび前記第２の非対称コアのうちの一方と、前記第１の非対称コアおよび前記第２の非対称コアのうちの他方との間で前記アプリケーションの実行を切り替える、請求項２７に記載のシステム。
【請求項２９】
前記ＣＣＳモジュールは、
前記アプリケーションによる前記第２の非対称コアの前記コア使用率が、第１の所定の閾値以上である場合、
前記アプリケーションによる前記第２の非対称コアの前記コア使用率が、第１の所定の期間、第２の所定の閾値以上である場合、
前記第２の非対称コアの予想コア使用率であって、前記アプリケーションの種類および前記アプリケーションの実行の履歴のうちの少なくとも１つに基づき決定される前記予想コア使用率が、第３の所定の閾値以上である場合、
前記アプリケーションによる前記第１の非対称コアの前記コア使用率が、第４の所定の閾値以下である場合、および
前記アプリケーションによる前記第１の非対称コアの前記コア使用率が、第２の所定の期間、第５の所定の閾値以下である場合、のうちの少なくとも１つの場合に、前記ＣＣＳを開始する、請求項２８に記載のシステム。
【請求項３０】
前記ＣＣＳモジュールは、前記アプリケーションの種類、アプリケーションの数、および命令の種類のうちの少なくとも１つに基づき、前記ＣＣＳを開始する、請求項２８に記載のシステム。
【請求項３１】
前記コアプロファイルモジュールは、前記第１および第２の非対称コアのうちの一方と、前記第１および第２の非対称コアのうちの他方との間でアプリケーションの実行が切り替えられる回数に基づき、前記第２の制御信号を生成する、請求項２７に記載のシステム。
【請求項３２】
前記システムの電力消費を制御し、前記第２の制御信号および前記電力消費に基づき第３の制御信号を生成する、電力制御モジュールをさらに備える、請求項２７に記載のシステム。
【請求項３３】
前記第３の制御信号に基づきコア変更シーケンス（ＣＣＳ）を開始するＣＣＳモジュールをさらに備え、前記コア切り替えモジュールは、前記ＣＣＳに基づき、前記第１の非対称コアおよび前記第２の非対称コアのうちの一方と、前記第１の非対称コアおよび前記第２の非対称コアのうちの他方との間で前記アプリケーションの実行を切り替える、請求項３２に記載のシステム。
【請求項３４】
前記第２の制御信号に基づき周波数変更シーケンス（ＦＣＳ）を開始し、前記ＦＣＳに基づき前記第１および第２の非対称コアのうちの少なくとも１つの動作周波数を選択する、ＦＣＳモジュールをさらに備える、請求項２８に記載のシステム。
【請求項３５】
前記第２の制御信号に基づき電圧変更シーケンス（ＶＣＳ）を開始し、前記ＶＣＳに基づき前記第１および第２の非対称コアのうちの少なくとも１つの供給電圧を選択する、ＶＣＳモジュールをさらに備える、請求項２８に記載のシステム。
【請求項３６】
前記システムが前記第１のモードと前記第２のモードとの間で前記動作を切り替えるときに前記割り込みを無効化し、前記システムが前記第２のモードと前記第１のモードとの間で前記動作を切り替えるときに前記割り込みを無効化する、電力管理モジュールをさらに備える、請求項１８に記載のシステム。
【請求項３７】
複数の前記第１の非対称コアをさらに備え、前記コア切り替えモジュールは、前記システムが前記第１のモードで動作するときに、前記ＣＣＳに基づき、当該複数の前記第１の非対称コアのうちの２つ以上を選択的に動作状態および休止状態にする、請求項２８に記載のシステム。
【請求項３８】
前記コア切り替えモジュールと選択的に通信して、
割り込みを受け取り、
前記アプリケーションから第１の信号を受け取り、
前記割り込みおよび前記第１の信号を、前記コア切り替えモジュールにより動作状態にされた前記第１の非対称コアおよび前記第２の非対称コアのうちの一方にルーティングする、グルーロジックモジュールをさらに備える、請求項１に記載のシステム。
【請求項３９】
請求項１に記載のシステムを備える、システムオンチップ（ＳＯＣ）。
【請求項４０】
請求項１に記載のシステムを備える、システムインパッケージ（ＳＩＰ）。
【請求項４１】
コア切り替えシステムであって、
第１のモードと第２のモードとの間で動作を切り替えるための切り替え信号を受け取る、モード切り替えモジュールであって、
前記第１のモード中、アプリケーションに関連付けられた命令が第１の非対称コアにより実行され、第２の非対称コアは休止状態であり、
前記第２のモード中、前記命令が前記第２の非対称コアにより実行され、前記第１の非対称コアは休止状態である、モード切り替えモジュールと、
割り込みが無効化された後、前記第１の非対称コアによる前記アプリケーションの処理を停止する、コア動作化モジュールと、
前記第１の非対称コアの状態を前記第２の非対称コアに転送する、状態転送モジュールとを備え、
前記コア動作化モジュールは、前記第２の非対称コアに前記命令の実行を再開することを許可し、前記割り込みが有効化される、コア切り替えシステム。
【請求項４２】
前記第２のモード中、前記第２の非対称コアが前記命令の実行を再開するときに、命令翻訳なしに前記命令が実行される、請求項４１に記載のコア切り替えシステム。
【請求項４３】
前記第１の非対称コアの第１の最大速度および第１の最大動作電力レベルは、それぞれ、前記第２の非対称コアの第２の最大速度および第２の最大動作電力レベルより大きい、請求項４１に記載のコア切り替えシステム。
【請求項４４】
前記コア動作化モジュールは、前記第２の非対称コアが前記命令の実行を再開するときに、前記第１の非対称コアに電力を供給しないか、または待機電力を供給する、請求項４１に記載のコア切り替えシステム。
【請求項４５】
データキャッシュミス率、命令キャッシュミス率、および前記第１の非対称コアにより実行される周期毎の命令数のうちの少なくとも１つに基づき、前記アプリケーションを実行するための予測命令実行率を生成し、前記予測命令実行率に基づき前記切り替え信号を生成するコアプロファイルモジュールをさらに備える、請求項４１に記載のコア切り替えシステム。
【請求項４６】
前記切り替え信号に基づきコア変更シーケンス（ＣＣＳ）を生成するＣＣＳモジュールをさらに備え、前記コア動作化モジュールは、前記ＣＣＳに基づき、前記第１の非対称コアおよび前記第２の非対称コアのうちの一方を起動し、前記第１の非対称コアおよび前記第２の非対称コアのうちの他方を停止する、請求項４１に記載のコア切り替えシステム。
【請求項４７】
デバイスであって、
アプリケーションにサービスを提供するカーネルを含むオペレーティングシステム（ＯＳ）を格納するメモリと、
第１のモードと第２のモードとの間で動作を切り替えるコア切り替えモジュールであって、前記第１のモード中、前記アプリケーションに関連付けられた命令が第１の非対称コアにより実行され、第２の非対称コアは休止状態であり、前記第２のモード中、前記命令が前記第２の非対称コアにより実行され、前記第１の非対称コアは休止状態である、コア切り替えモジュールとを備え、
前記コア切り替えモジュールは、前記カーネルより高位のレベルで動作する、デバイス。
【請求項４８】
前記コア切り替えモジュールは、前記第１のモードと前記第２のモードとの間で、前記ＯＳに対して透過的に動作を切り替える、請求項４７に記載のデバイス。
【請求項４９】
前記コア切り替えモジュールは、
前記第１のモードと前記第２のモードとの間で動作を切り替えるための切り替え信号を受け取る、モード切り替えモジュールと、
割り込みが無効化された後、前記第１の非対称コアによる前記アプリケーションの処理を停止する、コア動作化モジュールと、
前記第１の非対称コアの状態を前記第２の非対称コアに転送する、状態転送モジュールとを備え、
前記コア動作化モジュールは、前記第２の非対称コアに前記命令の実行を再開することを許可し、前記割り込みを有効化する、請求項４７に記載のデバイス。
【請求項５０】
前記第２のモード中、前記第２の非対称コアが前記命令の実行を再開するときに、前記第２の非対称コアは命令翻訳なしに前記命令を実行する、請求項４７に記載のデバイス。
【請求項５１】
前記第１の非対称コアの第１の最大速度および第１の最大動作電力レベルは、それぞれ、前記第２の非対称コアの第２の最大速度および第２の最大動作電力レベルより大きい、請求項４７に記載のデバイス。
【請求項５２】
前記コア切り替えモジュールは、前記第２の非対称コアが前記命令の実行を再開するときに、前記第１の非対称コアに電力を供給しないか、または待機電力を供給する、請求項４７に記載のデバイス。
【請求項５３】
データキャッシュミス率、命令キャッシュミス率、および前記第１の非対称コアにより実行される周期毎の命令数のうちの少なくとも１つに基づき、前記アプリケーションを実行するための予測命令実行率を生成する、コアプロファイルモジュールをさらに備え、前記コア切り替えモジュールは、前記予測命令実行率に基づき、前記第１のモードおよび前記第２のモードのうちの一方と、前記第１のモードおよび前記第２のモードのうちの他方との間で動作を切り替える、請求項４７に記載のデバイス。
【請求項５４】
データキャッシュミス率、命令キャッシュミス率、および前記第１の非対称コアおよび前記第２の非対称コアのうちの一方により実行される周期毎の命令数のうちの少なくとも１つに基づきコア変更シーケンス（ＣＣＳ）を生成するＣＣＳモジュールをさらに備え、前記コア切り替えモジュールは、前記ＣＣＳに基づき、前記第１の非対称コアおよび前記第２の非対称コアのうちの一方を起動し、前記第１の非対称コアおよび前記第２の非対称コアのうちの他方を停止する、請求項４７に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２００８年６月２５日出願の米国特許出願第１２／１４５，６６０号、２００７年８月２７日出願の米国仮特許出願第６０／９６８，１４３号、２００７年１０月１０日出願の米国仮特許出願第６０／９７８，９３６号、２００７年１０月２２日出願の米国仮特許出願第６０／９８１，６０６号、２００８年１月２１日出願の米国仮特許出願第６１／０２２，４３１号、２００８年２月１８日出願の米国仮特許出願第６１／０２９，４７６号、２００８年５月１日出願の米国仮特許出願第６１／０４９，６４１号、および２００８年６月２日出願の米国仮特許出願第６１／０５８，０５０号の優先権を主張する。本出願は、２００６年９月１２日出願の米国仮特許出願第６０／８２５，３６８号、２００６年８月２４日出願の米国仮特許出願第６０／８２３，４５３号、および２００６年８月１０日出願の米国仮特許出願第６０／８２２，０１５号の利益を主張する、２００６年９月２０日出願の米国特許出願第１１／５２３，９９６号の一部継続出願である。上記出願の開示は、参照することにより本明細書にその全内容が組み入れられる。
【０００２】
本出願は、モバイルコンピューティングデバイスに関し、より具体的には、モバイルコンピューティングデバイスのマルチコア処理システムのコアの動的な切り替えに関する。
【背景技術】
【０００３】
本明細書に記載される背景的な説明は、開示の前後関係を概略的に提示することを目的としている。現在示されている発明者の研究は、この背景の項、および、その他出願の時点で先行技術として認定されない可能性のある説明の態様で説明されている範囲において、本開示に対する先行技術として明示的にも暗示的にも認められるものではない。
【０００４】
携帯電話、ＭＰ３プレーヤ、グローバルポジショニングシステム（ＧＰＳ）デバイス等のモバイルコンピューティングデバイスは、典型的には、電線電力および電池電力の両方を使用して電力供給される。モバイルコンピューティングデバイスは、典型的には、プロセッサ、メモリおよびディスプレイを含み、それらは、動作中電力を消費する。プロセッサは、一般に、より処理集中的でない単純なアプリケーション、およびより処理集中的な複雑なアプリケーションの両方を実行する。したがって、処理速度等のプロセッサの能力は、典型的には、実行される最も処理集中的なアプリケーションの性能要件に適合するように選択される。
【０００５】
モバイルコンピューティングデバイスの１つの大きな制限は、充電することなく電池を使用してデバイスが動作可能な時間に関連する。処理集中的アプリケーションの性能要件に適合する高速プロセッサの使用は、一般に電力消費を増加させ、これは比較的短い電池寿命となる。
【０００６】
図１Ａおよび１Ｂを参照すると、デスクトップ型およびラップトップ型コンピュータは、複数のプロセッサ集積回路（ＩＣ）、または複数のコアを備える単一のプロセッサＩＣを使用する。これらのシステムは、異なる種類のものであり得る。本明細書において使用される場合、プロセッサという用語は、１つ以上の処理コアを備えるＩＣを指すために使用される。マルチコアプロセッサは、２つ以上の処理コアを備えるＩＣ、システムオンチップ（ＳＯＣ）、またはシステムインパッケージ（ＳＩＰ）を指す。
【０００７】
図１Ａにおいて、主プロセッサ２および１つ以上の副プロセッサ３を備える非対称マルチプロセッサ（ＭＰ）システム１が示されている。非対称ＭＰシステム１はまた、主コアおよび副コアを備える単一のＩＣまたはＳＯＣとして実現することができる。主プロセッサ２は、副プロセッサ３とは異なる命令セットアーキテクチャ（ＩＳＡ）を有する。オペレーティングシステム（ＯＳ）は、主プロセッサ２上で動作することができる。アプリケーションは、副プロセッサ３上で動作することができる。副プロセッサ３は、ＯＳのスレッドを実行せず、ＯＳスケジューラに不可視となり得る。リアルタイムＯＳ（ＲＴＯＳ）に対するＯＳドライバインタフェースは、副プロセッサ３上で動作することができる。省力化および主プロセッサ２のデューティサイクルの低減のために、主要な機能を副プロセッサ３にオフロードすることができる。単なる一例として、非対称ＭＰシステム１は、特殊目的の処理（例えば、ビデオ、３Ｄグラフィック等）に使用することができる。副プロセッサ３は、アプリケーションが実行されるとき、主プロセッサ２に加えて追加的に動作し得るため、非対称ＭＰシステム１は、大量の電力を消費し得る。
【０００８】
図１Ｂにおいて、対称ＭＰシステム５は、Ｎ個の同一プロセッサを備えることができ、Ｎは１より大きい整数である。対称ＭＰシステム５もまた、Ｎ個の同一コアを備える単一のＩＣまたはＳＯＣとして実現することができる。Ｎは、ＭＰシステム５の処理負荷に比例し得る。Ｎ個のプロセッサは、同じＩＳＡを使用する。Ｎ個のプロセッサは、ＯＳスケジューラに可視となり得る。Ｎ個のプロセッサは、メモリおよび入力／出力（Ｉ／Ｏ）を含むシステムリソースへの透過的なアクセスを有することができる。処理負荷に依存して、Ｎ個のプロセッサのうちの１つ以上を使用してアプリケーションを実行することができる。対称ＭＰシステム５の高コストおよび高電力消費は、このアーキテクチャを、より低コストのモバイルデバイスには不適切とする傾向がある。
【発明の概要】
【０００９】
システムは、第１の非対称コア、第２の非対称コア、およびコア切り替えモジュールを備える。第１の非対称コアは、システムが第１のモードで動作するときにアプリケーションを実行し、システムが第２のモードで動作するときに休止する。第２の非対称コアは、システムが第２のモードで動作しているときにアプリケーションを実行する。コア切り替えモジュールは、第１のモードと第２のモードとの間でシステムの動作を切り替える。コア切り替えモジュールは、第１の制御信号を受信した後、第１の非対称コアによるアプリケーションの処理を選択的に停止する。コア切り替えモジュールは、第１の非対称コアの第１の状態を、第２の非対称コアに転送する。第２の非対称コアは、第２のモードにおいて、アプリケーションの実行を再開する。
【００１０】
別の特徴において、第１の制御信号は、割り込みが無効であることを示す。
【００１１】
別の特徴において、第２のモード中、第２の非対称コアがアプリケーションの実行を再開するときに、第２の非対称コアは命令翻訳なしに命令を実行する。
【００１２】
他の特徴において、該システムは、アプリケーションにサービスを提供するオペレーティングシステム（ＯＳ）をさらに備える。コア切り替えモジュールは、第１の非対称コアと第２の非対称コアとの間で、ＯＳに対して透過的にアプリケーションの実行を切り替える。
【００１３】
他の特徴において、第１の非対称コアの第１の最大速度は、第２の非対称コアの第２の最大速度より大きい。第１の非対称コアは、所定の周波数より高い周波数で動作する。第２の非対称コアは、所定の周波数より低い周波数で動作する。第１の非対称コアの第１の最大動作電力レベルは、第２の非対称コアの第２の最大動作電力レベルより大きい。
【００１４】
他の特徴において、第１の非対称コアは、第１の命令セットアーキテクチャ（ＩＳＡ）を使用する。第２の非対称コアは、第２のＩＳＡを使用する。第１のＩＳＡは、第２のＩＳＡと互換性を有する。第１のＩＳＡの命令の第１のセットは、第２のＩＳＡの命令の第２のセットのスーパーセットである。第１のセットは、第２のセットより多くの命令を含む。
【００１５】
別の特徴において、ＯＳは、カーネルを備える。コア切り替えモジュールは、カーネルのレベルより高位で実行される。
【００１６】
他の特徴において、該システムは、ハイパーバイザモジュールをさらに備える。コア切り替えモジュールは、ハイパーバイザモジュールと統合される。
【００１７】
他の特徴において、コア切り替えモジュールは、コア切り替えモジュールが第１の非対称コアによるアプリケーションの処理を選択的に停止するときに、第１の状態を保存する。コア切り替えモジュールは、第２の非対称コアを起動し、第１の状態を使用して第２の非対称コアを初期化する。割り込みは、第２の非対称コアがアプリケーションの実行を再開した後に有効化される。コア切り替えモジュールは、第２の非対称コアが起動したときに第１の非対称コアを停止する。第１の非対称コアが停止した後は、第１の非対称コアに電力が供給されないか、または待機電力が供給される。
【００１８】
他の特徴において、該システムは、第１の非対称コアと通信するレベル２（Ｌ２）キャッシュをさらに備える。第１の非対称コアが停止した後は、Ｌ２キャッシュに電力が供給されないか、または待機電力が供給される。
【００１９】
他の特徴において、コア切り替えモジュールは、第２の非対称コアが起動できなかったときに第１の状態を使用して第１の非対称コアを初期化する。第１の非対称コアは、第１のモードにおいて、アプリケーションの実行を再開し、割り込みが有効化される。
【００２０】
他の特徴において、コア切り替えモジュールは、第２のモードと第１のモードとの間でシステムの動作を切り替える。コア切り替えモジュールは、第１の制御信号を受信した後、第２の非対称コアによるアプリケーションの処理を選択的に停止する。コア切り替えモジュールは、第２の非対称コアの第２の状態を、第１の非対称コアに転送する。第１の非対称コアは、第１のモードにおいて、アプリケーションの実行を再開する。第１の制御信号は、割り込みが無効であることを示す。
【００２１】
別の特徴において、第１のモード中、第１の非対称コアがアプリケーションの実行を再開するときに、命令翻訳なしに命令が実行される。
【００２２】
他の特徴において、該システムは、アプリケーションにサービスを提供するオペレーティングシステム（ＯＳ）をさらに備える。コア切り替えモジュールは、第２の非対称コアと第１の非対称コアとの間で、ＯＳに対して透過的にアプリケーションの実行を切り替える。
【００２３】
他の特徴において、コア切り替えモジュールは、コア切り替えモジュールが第２の非対称コアによるアプリケーションの処理を選択的に停止するときに、第２の状態を保存する。コア切り替えモジュールは、第１の非対称コアを起動し、第２の状態を使用して第１の非対称コアを初期化する。割り込みは、第１の非対称コアがアプリケーションの実行を再開した後に有効化される。
【００２４】
他の特徴において、該システムは、第１の非対称コアと通信するレベル２（Ｌ２）キャッシュをさらに備える。第１の非対称コアが起動した後に、Ｌ２キャッシュに電力が供給される。
【００２５】
他の特徴において、コア切り替えモジュールは、第１の非対称コアが起動したときに第２の非対称コアを停止する。第２の非対称コアが停止した後は、第２の非対称コアに電力が供給されないか、または待機電力が供給される。
【００２６】
他の特徴において、コア切り替えモジュールは、第１の非対称コアが起動できなかったときに第２の状態を使用して第２の非対称コアを初期化する。第２の非対称コアは、第２のモードにおいて、アプリケーションの実行を再開し、割り込みが有効化される。
【００２７】
別の特徴において、該システムは、アプリケーションのコア使用率、リソース使用率、および動作性能のうちの少なくとも１つに基づき第２の制御信号を生成するコアプロファイルモジュールをさらに備える。
【００２８】
他の特徴において、該システムは、第２の制御信号に基づきコア変更シーケンス（ＣＣＳ）を開始するＣＣＳモジュールをさらに備える。コア切り替えモジュールは、ＣＣＳに基づき、第１および第２の非対称コアのうちの一方と、第１および第２の非対称コアのうちの他方との間でアプリケーションの実行を切り替える。
【００２９】
他の特徴において、ＣＣＳモジュールは、アプリケーションによる第２の非対称コアのコア使用率が、第１の所定の閾値以上である場合、ＣＣＳを開始する。ＣＣＳモジュールは、アプリケーションによる第２の非対称コアのコア使用率が、第１の所定の期間、第２の所定の閾値以上である場合、ＣＣＳを開始する。ＣＣＳモジュールは、第２の非対称コアの予想コア使用率が、第３の所定の閾値以上である場合、ＣＣＳを開始する。予想コア使用率は、アプリケーションの種類およびアプリケーションの実行の履歴のうちの少なくとも１つに基づき決定される。ＣＣＳモジュールは、アプリケーションによる第１の非対称コアのコア使用率が、第４の所定の閾値以下である場合、ＣＣＳを開始する。ＣＣＳモジュールは、アプリケーションによる第１の非対称コアのコア使用率が、第２の所定の期間、第５の所定の閾値以下である場合、ＣＣＳを開始する。
【００３０】
別の特徴において、ＣＣＳモジュールは、アプリケーションの種類、アプリケーションの数、ならびに第１および第２の非対称コアのうちの一方により実行される命令の種類のうちの少なくとも１つに基づき、前記ＣＣＳを開始する。
【００３１】
別の特徴において、コアプロファイルモジュールは、第１および第２の非対称コアのうちの一方と、第１および第２の非対称コアのうちの他方との間でアプリケーションの実行が切り替えられる回数に基づき、第２の制御信号を生成する。
【００３２】
他の特徴において、該システムは、システムの電力消費を制御し、第２の制御信号および電力消費に基づき第３の制御信号を生成する、電力制御モジュールをさらに備える。システムは、第３の制御信号に基づきコア変更シーケンス（ＣＣＳ）を開始するＣＣＳモジュールをさらに備える。コア切り替えモジュールは、ＣＣＳに基づき、第１および第２の非対称コアのうちの一方と、第１および第２の非対称コアのうちの他方との間でアプリケーションの実行を切り替える。
【００３３】
別の特徴において、該システムは、第２の制御信号に基づき周波数変更シーケンス（ＦＣＳ）を開始し、ＦＣＳに基づき第１および第２の非対称コアのうちの少なくとも１つの動作周波数を選択する、ＦＣＳモジュールをさらに備える。
【００３４】
別の特徴において、該システムは、第２の制御信号に基づき電圧変更シーケンス（ＶＣＳ）を開始し、ＶＣＳに基づき第１および第２の非対称コアのうちの少なくとも１つの供給電圧を選択する、ＶＣＳモジュールをさらに備える。
【００３５】
別の特徴において、該システムは、システムが第１のモードと第２のモードとの間で動作を切り替えるときに割り込みを無効化し、システムが第２のモードと第１のモードとの間で動作を切り替えるときに割り込みを無効化する、電力管理モジュールをさらに備える。
【００３６】
他の特徴において、該システムは、複数の第１の非対称コアをさらに備える。コア切り替えモジュールは、システムが第１のモードで動作するときに、ＣＣＳに基づき、複数の第１の非対称コアのうちの２つ以上を選択的に動作状態および休止状態にする。
【００３７】
別の特徴において、該システムは、コア切り替えモジュールと選択的に通信し、割り込みを受信し、アプリケーションから第１の信号を受信し、割り込みおよび第１の信号を、コア切り替えモジュールにより動作状態にされた第１および第２の非対称コアのうちの一方にルーティングする、グルーロジックモジュールをさらに備える。
【００３８】
別の特徴において、システムオンチップ（ＳＯＣ）が、システムを備える。
【００３９】
別の特徴において、システムインパッケージ（ＳＩＰ）が、システムを備える。
【００４０】
さらに他の特徴において、方法は、第１のモードで動作するときに第１の非対称コアを使用してアプリケーションを実行するステップを含む。第１の非対称コアは、第２のモードで動作するときに休止している。該方法は、コア切り替えモジュールを使用して、第１のモードと第２のモードとの間で動作を切り替えるステップをさらに含む。該方法は、第１の制御信号を受信した後、コア切り替えモジュールを使用して第１の非対称コアによるアプリケーションの処理を選択的に停止するステップをさらに含む。該方法は、コア切り替えモジュールを使用して、第１の非対称コアの第１の状態を第２の非対称コアに転送するステップと、第２の非対称コアを使用して、第２のモードにおいてアプリケーションの実行を再開するステップとをさらに含む。
【００４１】
別の特徴において、該方法は、割り込みを無効化するステップと、第１の制御信号を介して割り込みが無効であることを示すステップとをさらに含む。
【００４２】
別の特徴において、該方法は、第２のモード中、第２の非対称コアがアプリケーションの実行を再開するときに、命令翻訳なしに命令を実行するステップをさらに含む。
【００４３】
別の特徴において、該方法は、オペレーティングシステム（ＯＳ）を介してアプリケーションにサービスを提供するステップと、コア切り替えモジュールを使用して、第１の非対称コアと第２の非対称コアとの間で、ＯＳに対して透過的にアプリケーションの実行を切り替えるステップとをさらに含む。
【００４４】
他の特徴において、該方法は、第１の最大速度で第１の非対称コアを選択的に動作させるステップと、第２の最大速度で第２の非対称コアを選択的に動作させるステップとをさらに含む。第１の最大速度は、第２の最大速度よりも大きい。該方法は、第１の最大動作電力レベルで第１の非対称コアを選択的に動作させるステップと、第２の最大動作電力レベルで第２の非対称コアを選択的に動作させるステップとをさらに含む。第１の最大動作電力レベルは、第２の最大動作電力レベルよりも大きい。該方法は、所定の周波数より高い周波数で第１の非対称コアを選択的に動作させるステップと、所定の周波数より低い周波数で第２の非対称コアを選択的に動作させるステップとをさらに含む。
【００４５】
他の特徴において、該方法は、第１の命令セットアーキテクチャ（ＩＳＡ）を使用して第１の非対称コアを動作させるステップと、第２のＩＳＡを使用して第２の非対称コアを動作させるステップとをさらに含む。第１のＩＳＡは、第２のＩＳＡと互換性を有する。該方法は、第１のＩＳＡの命令の第１のセットを使用して第１の非対称コアを動作させるステップと、第２のＩＳＡの命令の第２のセットを使用して第２の非対称コアを動作させるステップとをさらに含む。第１のセットは、第２のセットのスーパーセットである。第１のセットは、第２のセットより多くの命令を含む。
【００４６】
別の特徴において、該方法は、ＯＳのカーネルを提供するステップと、カーネルのレベルより高位でコア切り替えモジュールを実行するステップとをさらに含む。
【００４７】
別の特徴において、該方法は、ハイパーバイザモジュールを提供するステップと、コア切り替えモジュールをハイパーバイザモジュールと統合するステップとをさらに含む。
【００４８】
他の特徴において、該方法は、コア切り替えモジュールが第１の非対称コアによるアプリケーションの処理を選択的に停止するときに、第１の状態を保存するステップをさらに含む。該方法は、第２の非対称コアを起動するステップと、第１の状態を使用して第２の非対称コアを初期化するステップとをさらに含む。該方法は、第２の非対称コアがアプリケーションの実行を再開した後に割り込みを有効化するステップをさらに含む。該方法は、第２の非対称コアが起動したときに第１の非対称コアを停止するステップと、第１の非対称コアが停止した後は、第１の非対称コアに電力を供給しないか、または待機電力を供給するステップとをさらに含む。
【００４９】
他の特徴において、該方法は、レベル２（Ｌ２）キャッシュを提供するステップをさらに含む。第１の非対称コアは、第１の非対称コアが動作状態であるときにＬ２キャッシュと通信する。該方法は、第１の非対称コアが停止した後は、Ｌ２キャッシュに電力を供給しないか、または待機電力を供給するステップをさらに含む。
【００５０】
別の特徴において、該方法は、第２の非対称コアが起動できなかったときに第１の状態を使用して第１の非対称コアを初期化するステップと、第１のモードにおいて第１の非対称コアを使用してアプリケーションの実行を再開するステップと、割り込みを有効化するステップとをさらに含む。
【００５１】
別の特徴において、該方法は、コア切り替えモジュールを使用して、第２のモードと第１のモードとの間で動作を切り替えるステップと、割り込みが無効であることを示す第１の制御信号を受信した後に、コア切り替えモジュールを使用して、第２の非対称コアによるアプリケーションの処理を選択的に停止するステップと、コア切り替えモジュールを使用して、第２の非対称コアの第２の状態を第１の非対称コアに転送するステップと、第１の非対称コアを使用して第１のモードにおいてアプリケーションの実行を再開するステップとをさらに含む。
【００５２】
別の特徴において、該方法は、第１のモード中、第１の非対称コアがアプリケーションの実行を再開するときに、命令翻訳なしに命令を実行するステップをさらに含む。
【００５３】
別の特徴において、該方法は、オペレーティングシステム（ＯＳ）を介してアプリケーションにサービスを提供するステップと、コア切り替えモジュールを使用して、第２の非対称コアと第１の非対称コアとの間で、ＯＳに対して透過的にアプリケーションの実行を切り替えるステップとをさらに含む。
【００５４】
他の特徴において、該方法は、コア切り替えモジュールが第２の非対称コアによるアプリケーションの処理を選択的に停止するときに、第２の状態を保存するステップをさらに含む。該方法は、第１の非対称コアを起動するステップと、第２の状態を使用して第１の非対称コアを初期化するステップとをさらに含む。該方法は、第１の非対称コアがアプリケーションの実行を再開した後に割り込みを有効化するステップをさらに含む。
【００５５】
他の特徴において、該方法は、レベル２（Ｌ２）キャッシュを提供するステップをさらに含む。第１の非対称コアは、第１の非対称コアが動作状態であるときにＬ２キャッシュと通信する。該方法は、第１の非対称コアが起動した後に、Ｌ２キャッシュに電力を供給するステップをさらに含む。
【００５６】
他の特徴において、該方法は、第１の非対称コアが起動したときに第２の非対称コアを停止するステップと、第２の非対称コアが停止した後は、第２の非対称コアに電力を供給しないか、または待機電力を供給するステップとをさらに含む。
【００５７】
別の特徴において、該方法は、第１の非対称コアが起動できなかったときに第２の状態を使用して第２の非対称コアを初期化するステップと、第２のモードにおいて第２の非対称コアを使用してアプリケーションの実行を再開するステップと、割り込みを有効化するステップとをさらに含む。
【００５８】
別の特徴において、該方法は、アプリケーションのコア使用率、リソース使用率、および動作性能のうちの少なくとも１つに基づき第２の制御信号を生成するステップをさらに含む。
【００５９】
別の特徴において、該方法は、第２の制御信号に基づきコア変更シーケンス（ＣＣＳ）を開始するステップと、コア切り替えモジュールを使用して、ＣＣＳに基づき、第１および第２の非対称コアのうちの一方と、第１および第２の非対称コアのうちの他方との間でアプリケーションの実行を切り替えるステップとをさらに含む。
【００６０】
他の特徴において、該方法は、アプリケーションによる第２の非対称コアのコア使用率が、第１の所定の閾値以上である場合、ＣＣＳを開始するステップをさらに含む。該方法は、アプリケーションによる第２の非対称コアのコア使用率が、第１の所定の期間、第２の所定の閾値以上である場合、ＣＣＳを開始するステップをさらに含む。該方法は、アプリケーションによる第１の非対称コアのコア使用率が、第３の所定の閾値以下である場合、ＣＣＳを開始するステップをさらに含む。該方法は、アプリケーションによる第１の非対称コアのコア使用率が、第１の所定の期間、第４の所定の閾値以下である場合、ＣＣＳを開始するステップをさらに含む。
【００６１】
別の特徴において、該方法は、アプリケーションの種類およびアプリケーションの実行の履歴のうちの少なくとも１つに基づき予測コア使用率を決定するステップと、第２の非対称コアの予測コア使用率が所定の閾値以上である場合、ＣＣＳを開始するステップとをさらに含む。
【００６２】
別の特徴において、該方法は、第１および第２の非対称コアのうちの一方により実行されるアプリケーションの数、第１および第２の非対称コアのうちの一方により実行されるアプリケーションの種類、ならびに第１および第２の非対称コアのうちの一方により実行される命令の種類のうちの少なくとも１つに基づき、ＣＣＳを開始するステップをさらに含む。
【００６３】
別の特徴において、該方法は、第１および第２の非対称コアのうちの一方と、第１および第２の非対称コアのうちの他方との間でアプリケーションの実行が切り替えられる回数に基づき、第２の制御信号を生成するステップをさらに含む。
【００６４】
別の特徴において、該方法は、電力消費を制御するステップと、第２の制御信号および電力消費に基づき第３の制御信号を生成するステップと、第３の制御信号に基づきコア変更シーケンス（ＣＣＳ）を開始するステップと、コア切り替えモジュールを使用して、ＣＣＳに基づき、第１および第２の非対称コアのうちの一方と、第１および第２の非対称コアのうちの他方との間でアプリケーションの実行を切り替えるステップとをさらに含む。
【００６５】
別の特徴において、該方法は、第２の制御信号に基づき周波数変更シーケンス（ＦＣＳ）を開始するステップと、ＦＣＳに基づき第１および第２の非対称コアのうちの少なくとも１つの動作周波数を選択するステップとをさらに含む。
【００６６】
別の特徴において、該方法は、第２の制御信号に基づき電圧変更シーケンス（ＶＣＳ）を開始するステップと、ＶＣＳに基づき第１および第２の非対称コアのうちの少なくとも１つの供給電圧を選択するステップとをさらに含む。
【００６７】
別の特徴において、該方法は、複数の第１の非対称コアを提供するステップと、コア切り替えモジュールを使用して、第１のモードで動作するときに、ＣＣＳに基づき、複数の第１の非対称コアのうちの２つ以上を選択的に動作状態および休止状態にするステップをさらに含む。
【００６８】
別の特徴において、該方法は、グルーロジックモジュールを提供するステップと、グルーロジックモジュールを使用してコア切り替えモジュールと選択的に通信するステップと、グルーロジックモジュールを介して割り込みを受信するステップと、グルーロジックモジュールを介してアプリケーションから第１の信号を受信するステップと、グルーロジックモジュールを使用して、割り込みおよび第１の信号を、コア切り替えモジュールにより動作状態にされた第１および第２の非対称コアのうちの一方にルーティングするステップとをさらに含む。
【００６９】
別の特徴において、該方法は、第１および第２の非対称コアならびにコア切り替えモジュールを、システムオンチップ（ＳＯＣ）およびシステムインパッケージ（ＳＩＰ）のうちの一方において提供するステップをさらに含む。
【００７０】
さらに他の特徴において、システムは、システムが第１のモードで動作するときにアプリケーションを実行するための第１のコア手段を備える。第１の非対称コア手段は、システムが第２のモードで動作するときに休止している。システムは、システムが第２のモードで動作するときにアプリケーションを実行するための第２の非対称コア手段をさらに備える。システムは、第１のモードと第２のモードとの間で動作を切り替えるためのコア切り替え手段をさらに備える。コア切り替え手段は、第１の制御信号を受信した後、第１の非対称コア手段によるアプリケーションの処理を選択的に停止する。コア切り替え手段は、第１の非対称コア手段の第１の状態を、第２の非対称コア手段に転送する。第２の非対称コア手段は、第２のモードにおいて、アプリケーションの実行を再開する。
【００７１】
別の特徴において、第１の制御信号は、割り込みが無効であることを示す。
【００７２】
別の特徴において、第２のモード中、第２の非対称コア手段がアプリケーションの実行を再開するときに、第２の非対称コア手段は命令翻訳なしに命令を実行する。
【００７３】
他の特徴において、該システムは、アプリケーションにサービスを提供するオペレーティングシステム（ＯＳ）をさらに備える。コア切り替えモジュールは、第１の非対称コア手段と第２の非対称コア手段との間で、ＯＳに対して透過的にアプリケーションの実行を切り替える。
【００７４】
他の特徴において、第１の非対称コア手段の第１の最大速度は、第２の非対称コア手段の第２の最大速度より大きい。第１の非対称コア手段は、所定の周波数より高い周波数で動作する。第２の非対称コア手段は、所定の周波数より低い周波数で動作する。第１の非対称コア手段の第１の最大動作電力レベルは、第２の非対称コア手段の第２の最大動作電力レベルより大きい。
【００７５】
他の特徴において、第１の非対称コア手段は、第１の命令セットアーキテクチャ（ＩＳＡ）を使用する。第２の非対称コア手段は、第２のＩＳＡを使用する。第１のＩＳＡは、第２のＩＳＡと互換性を有する。第１のＩＳＡの命令の第１のセットは、第２のＩＳＡの命令の第２のセットのスーパーセットである。第１のセットは、第２のセットより多くの命令を含む。
【００７６】
別の特徴において、ＯＳは、カーネルを備える。コア切り替え手段は、カーネルのレベルより高位で実行される。
【００７７】
他の特徴において、該システムは、コアを切り替えるためのハイパーバイザ手段をさらに備える。コア切り替え手段は、ハイパーバイザ手段と統合される。
【００７８】
他の特徴において、コア切り替え手段は、コア切り替え手段が第１の非対称コア手段によるアプリケーションの処理を選択的に停止するときに、第１の状態を保存する。コア切り替え手段は、第２の非対称コア手段を起動し、第１の状態を使用して第２の非対称コア手段を初期化する。割り込みは、第２の非対称コア手段がアプリケーションの実行を再開した後に有効化される。コア切り替え手段は、第２の非対称コア手段が起動したときに第１の非対称コア手段を停止する。第１の非対称コア手段が停止した後は、第１の非対称コア手段に電力が供給されないか、または待機電力が供給される。
【００７９】
他の特徴において、該システムは、第１の非対称コア手段の命令およびデータをキャッシュするためのレベル２（Ｌ２）キャッシュ手段をさらに備える。第１の非対称コア手段が停止した後は、Ｌ２キャッシュ手段に電力が供給されないか、または待機電力が供給される。
【００８０】
他の特徴において、コア切り替え手段は、第２の非対称コア手段が起動できなかったときに第１の状態を使用して第１の非対称コア手段を初期化する。第１の非対称コア手段は、第１のモードにおいて、アプリケーションの実行を再開し、割り込みが有効化される。
【００８１】
他の特徴において、コア切り替え手段は、第２のモードと第１のモードとの間でシステムの動作を切り替える。コア切り替え手段は、割り込みが無効であることを示す第１の制御信号を受信した後、第２の非対称コア手段によるアプリケーションの処理を選択的に停止する。コア切り替え手段は、第２の非対称コア手段の第２の状態を、第１の非対称コア手段に転送する。第１の非対称コア手段は、第１のモードにおいて、アプリケーションの実行を再開する。
【００８２】
別の特徴において、第１のモード中、第１の非対称コア手段がアプリケーションの実行を再開するときに、命令翻訳なしに命令が実行される。
【００８３】
他の特徴において、該システムは、アプリケーションにサービスを提供するオペレーティングシステム（ＯＳ）をさらに備える。コア切り替え手段は、第２の非対称コア手段と第１の非対称コア手段との間で、ＯＳに対して透過的にアプリケーションの実行を切り替える。
【００８４】
他の特徴において、コア切り替え手段は、コア切り替え手段が第２の非対称コア手段によるアプリケーションの処理を選択的に停止するときに、第２の状態を保存する。コア切り替え手段は、第１の非対称コア手段を起動し、第２の状態を使用して第１の非対称コア手段を初期化する。割り込みは、第１の非対称コア手段がアプリケーションの実行を再開した後に有効化される。
【００８５】
他の特徴において、該システムは、第１の非対称コア手段の命令およびデータをキャッシュするためのレベル２（Ｌ２）キャッシュ手段をさらに備える。第１の非対称コア手段が起動した後に、Ｌ２キャッシュ手段に電力が供給される。
【００８６】
他の特徴において、コア切り替え手段は、第１の非対称コア手段が起動したときに第２の非対称コア手段を停止する。第２の非対称コア手段が停止した後は、第２の非対称コア手段に電力が供給されないか、または待機電力が供給される。
【００８７】
他の特徴において、コア切り替え手段は、第１の非対称コア手段が起動できなかったときに第２の状態を使用して第２の非対称コア手段を初期化する。第２の非対称コア手段は、第２のモードにおいて、アプリケーションの実行を再開し、割り込みが有効化される。
【００８８】
別の特徴において、該システムは、アプリケーションのコア使用率、リソース使用率、および動作性能のうちの少なくとも１つに基づき第２の制御信号を生成するためのコアプロファイル手段をさらに備える。
【００８９】
他の特徴において、該システムは、第２の制御信号に基づきコア変更シーケンス（ＣＣＳ）を開始するためのＣＣＳ手段をさらに備える。コア切り替え手段は、ＣＣＳに基づき、第１および第２の非対称コア手段のうちの一方と、第１および第２の非対称コア手段のうちの他方との間でアプリケーションの実行を切り替える。
【００９０】
他の特徴において、ＣＣＳ手段は、アプリケーションによる第２の非対称コア手段のコア使用率が、第１の所定の閾値以上である場合、ＣＣＳを開始する。ＣＣＳ手段は、アプリケーションによる第２の非対称コア手段のコア使用率が、第１の所定の期間、第２の所定の閾値以上である場合、ＣＣＳを開始する。ＣＣＳ手段は、第２の非対称コア手段の予想コア使用率が、第３の所定の閾値以上である場合、ＣＣＳを開始する。予想コア使用率は、アプリケーションの種類およびアプリケーションの実行の履歴のうちの少なくとも１つに基づき決定される。ＣＣＳ手段は、アプリケーションによる第１の非対称コア手段のコア使用率が、第４の所定の閾値以下である場合、ＣＣＳを開始する。ＣＣＳ手段は、アプリケーションによる第１の非対称コア手段のコア使用率が、第２の所定の期間、第５の所定の閾値以下である場合、ＣＣＳを開始する。
【００９１】
別の特徴において、ＣＣＳ手段は、アプリケーションの種類、アプリケーションの数、ならびに第１および第２の非対称コア手段のうちの一方により実行される命令の種類のうちの少なくとも１つに基づき、前記ＣＣＳを開始する。
【００９２】
別の特徴において、コアプロファイル手段は、第１および第２の非対称コア手段のうちの一方と、第１および第２の非対称コア手段のうちの他方との間でアプリケーションの実行が切り替えられる回数に基づき、第２の制御信号を生成する。
【００９３】
他の特徴において、該システムは、システムの電力消費を制御し、第２の制御信号および電力消費に基づき第３の制御信号を生成するための、電力制御手段をさらに備える。該システムは、第３の制御信号に基づきコア変更シーケンス（ＣＣＳ）を開始するＣＣＳ手段をさらに備える。コア切り替え手段は、ＣＣＳに基づき、第１および第２の非対称コア手段のうちの一方と、第１および第２の非対称コア手段のうちの他方との間でアプリケーションの実行を切り替える。
【００９４】
別の特徴において、該システムは、第２の制御信号に基づき周波数変更シーケンス（ＦＣＳ）を開始し、ＦＣＳに基づき第１および第２の非対称コア手段のうちの少なくとも１つの動作周波数を選択するための、ＦＣＳ手段をさらに備える。
【００９５】
別の特徴において、該システムは、第２の制御信号に基づき電圧変更シーケンス（ＶＣＳ）を開始し、ＶＣＳに基づき第１および第２の非対称コア手段のうちの少なくとも１つの供給電圧を選択するための、ＶＣＳ手段をさらに備える。
【００９６】
別の特徴において、該システムは、システムが第１のモードと第２のモードとの間で動作を切り替えるときに割り込みを無効化し、システムが第２のモードと第１のモードとの間で動作を切り替えるときに割り込みを無効化するための、電力管理手段をさらに備える。
【００９７】
他の特徴において、該システムは、複数の第１の非対称コア手段をさらに備える。コア切り替えモジュールは、システムが第１のモードで動作するときに、ＣＣＳに基づき、複数の第１の非対称コア手段のうちの２つ以上を選択的に動作状態および休止状態にする。
【００９８】
他の特徴において、該システムは、コア切り替えモジュールと選択的に通信するためにグルーロジック手段をさらに備える。グルーロジック手段は、割り込みを受信し、アプリケーションから第１の信号を受信し、割り込みおよび第１の信号を、コア切り替えモジュールにより動作状態にされた第１および第２の非対称コア手段のうちの一方にルーティングする。
【００９９】
別の特徴において、システムオンチップ（ＳＯＣ）が、システムを備える。
【０１００】
別の特徴において、システムインパッケージ（ＳＩＰ）が、システムを備える。
【０１０１】
さらに他の特徴において、コンピュータが読取り可能な媒体に格納され、プロセッサにより実行されるコンピュータプログラムは、第１のモードで動作するときに第１の非対称コアを使用してアプリケーションを実行するステップを含む。第１の非対称コアは、第２のモードで動作するときに休止している。コンピュータプログラムは、コア切り替えモジュールを使用して、第１のモードと第２のモードとの間で動作を切り替えるステップをさらに含む。コンピュータプログラムは、第１の制御信号を受信した後、コア切り替えモジュールを使用して第１の非対称コアによるアプリケーションの処理を選択的に停止するステップをさらに含む。コンピュータプログラムは、コア切り替えモジュールを使用して、第１の非対称コアの第１の状態を第２の非対称コアに転送するステップと、第２の非対称コアを使用して、第２のモードにおいてアプリケーションの実行を再開するステップとをさらに含む。
【０１０２】
別の特徴において、コンピュータプログラムは、割り込みを無効化するステップと、第１の制御信号を介して割り込みが無効であることを示すステップとをさらに含む。
【０１０３】
別の特徴において、コンピュータプログラムは、第２のモード中、第２の非対称コアがアプリケーションの実行を再開するときに、命令翻訳なしに命令を実行するステップをさらに含む。
【０１０４】
別の特徴において、コンピュータプログラムは、オペレーティングシステム（ＯＳ）を介してアプリケーションにサービスを提供するステップと、コア切り替えモジュールを使用して、第１の非対称コアと第２の非対称コアとの間で、ＯＳに対して透過的にアプリケーションの実行を切り替えるステップとをさらに含む。
【０１０５】
他の特徴において、コンピュータプログラムは、第１の最大速度で第１の非対称コアを選択的に動作させるステップと、第２の最大速度で第２の非対称コアを選択的に動作させるステップとをさらに含む。第１の最大速度は、第２の最大速度よりも大きい。コンピュータプログラムは、第１の最大動作電力レベルで第１の非対称コアを選択的に動作させるステップと、第２の最大動作電力レベルで第２の非対称コアを選択的に動作させるステップとをさらに含む。第１の最大動作電力レベルは、第２の最大動作電力レベルよりも大きい。コンピュータプログラムは、所定の周波数より高い周波数で第１の非対称コアを選択的に動作させるステップと、所定の周波数より低い周波数で第２の非対称コアを選択的に動作させるステップとをさらに含む。
【０１０６】
他の特徴において、コンピュータプログラムは、第１の命令セットアーキテクチャ（ＩＳＡ）を使用して第１の非対称コアを動作させるステップと、第２のＩＳＡを使用して第２の非対称コアを動作させるステップとをさらに含む。第１のＩＳＡは、第２のＩＳＡと互換性を有する。コンピュータプログラムは、第１のＩＳＡの命令の第１のセットを使用して第１の非対称コアを動作させるステップと、第２のＩＳＡの命令の第２のセットを使用して第２の非対称コアを動作させるステップとをさらに含む。第１のセットは、第２のセットのスーパーセットである。第１のセットは、第２のセットより多くの命令を含む。
【０１０７】
別の特徴において、コンピュータプログラムは、ＯＳのカーネルを提供するステップと、カーネルのレベルより高位でコア切り替えモジュールを実行するステップとをさらに含む。
【０１０８】
別の特徴において、コンピュータプログラムは、ハイパーバイザモジュールを提供するステップと、コア切り替えモジュールをハイパーバイザモジュールと統合するステップとをさらに含む。
【０１０９】
他の特徴において、コンピュータプログラムは、コア切り替えモジュールが第１の非対称コアによるアプリケーションの処理を選択的に停止するときに、第１の状態を保存するステップをさらに含む。コンピュータプログラムは、第２の非対称コアを起動するステップと、第１の状態を使用して第２の非対称コアを初期化するステップとをさらに含む。コンピュータプログラムは、第２の非対称コアがアプリケーションの実行を再開した後に割り込みを有効化するステップをさらに含む。コンピュータプログラムは、第２の非対称コアが起動したときに第１の非対称コアを停止するステップと、第１の非対称コアが停止した後は、第１の非対称コアに電力を供給しないか、または待機電力を供給するステップとをさらに含む。
【０１１０】
他の特徴において、コンピュータプログラムは、レベル２（Ｌ２）キャッシュを提供するステップをさらに含む。第１の非対称コアは、第１の非対称コアが動作状態であるときにＬ２キャッシュと通信する。コンピュータプログラムは、第１の非対称コアが停止した後は、Ｌ２キャッシュに電力を供給しないか、または待機電力を供給するステップをさらに含む。
【０１１１】
別の特徴において、コンピュータプログラムは、第２の非対称コアが起動できなかったときに第１の状態を使用して初期化するステップと、第１のモードにおいて第１の非対称コアを用いてアプリケーションの実行を再開するステップと、割り込みを有効化するステップとをさらに含む。
【０１１２】
別の特徴において、コンピュータプログラムは、コア切り替えモジュールを使用して、第２のモードと第１のモードとの間で動作を切り替えるステップと、割り込みが無効であることを示す第１の制御信号を受信した後に、コア切り替えモジュールを使用して、第２の非対称コアによるアプリケーションの処理を選択的に停止するステップと、コア切り替えモジュールを使用して、第２の非対称コアの第２の状態を第１の非対称コアに転送するステップと、第１の非対称コアを使用して第１のモードにおいてアプリケーションの実行を再開するステップとをさらに含む。
【０１１３】
別の特徴において、コンピュータプログラムは、第１のモード中、第１の非対称コアがアプリケーションの実行を再開するときに、命令翻訳なしに命令を実行するステップをさらに含む。
【０１１４】
別の特徴において、コンピュータプログラムは、オペレーティングシステム（ＯＳ）を介してアプリケーションにサービスを提供するステップと、コア切り替えモジュールを使用して、第２の非対称コアと第１の非対称コアとの間で、ＯＳに対して透過的にアプリケーションの実行を切り替えるステップとをさらに含む。
【０１１５】
他の特徴において、コンピュータプログラムは、コア切り替えモジュールが第２の非対称コアによるアプリケーションの処理を選択的に停止するときに、第２の状態を保存するステップをさらに含む。コンピュータプログラムは、第１の非対称コアを起動するステップと、第２の状態を使用して第１の非対称コアを初期化するステップとをさらに含む。コンピュータプログラムは、第１の非対称コアがアプリケーションの実行を再開した後に割り込みを有効化するステップをさらに含む。
【０１１６】
他の特徴において、コンピュータプログラムは、レベル２（Ｌ２）キャッシュを提供するステップをさらに含む。第１の非対称コアは、第１の非対称コアが動作状態であるときにＬ２キャッシュと通信する。コンピュータプログラムは、第１の非対称コアが起動した後に、Ｌ２キャッシュに電力を供給するステップをさらに含む。
【０１１７】
他の特徴において、コンピュータプログラムは、第１の非対称コアが起動したときに第２の非対称コアを停止するステップと、第２の非対称コアが停止した後は、第２の非対称コアに電力を供給しないか、または待機電力を供給するステップとをさらに含む。
【０１１８】
別の特徴において、コンピュータプログラムは、第１の非対称コアが起動できなかったときに第２の状態を使用して第２の非対称コアを初期化するステップと、第２のモードにおいて第２の非対称コアを用いてアプリケーションの実行を再開するステップと、割り込みを有効化するステップとをさらに含む。
【０１１９】
別の特徴において、コンピュータプログラムは、アプリケーションのコア使用率、リソース使用率、および動作性能のうちの少なくとも１つに基づき第２の制御信号を生成するステップをさらに含む。
【０１２０】
別の特徴において、コンピュータプログラムは、第２の制御信号に基づきコア変更シーケンス（ＣＣＳ）を開始するステップと、コア切り替えモジュールを使用して、ＣＣＳに基づき、第１および第２の非対称コアのうちの一方と、第１および第２の非対称コアのうちの他方との間でアプリケーションの実行を切り替えるステップとをさらに含む。
【０１２１】
他の特徴において、コンピュータプログラムは、アプリケーションによる第２の非対称コアのコア使用率が、第１の所定の閾値以上である場合、ＣＣＳを開始するステップをさらに含む。コンピュータプログラムは、アプリケーションによる第２の非対称コアのコア使用率が、第１の所定の期間、第２の所定の閾値以上である場合、ＣＣＳを開始するステップをさらに含む。コンピュータプログラムは、アプリケーションによる第１の非対称コアのコア使用率が、第３の所定の閾値以下である場合、ＣＣＳを開始するステップをさらに含む。コンピュータプログラムは、アプリケーションによる第１の非対称コアのコア使用率が、第１の所定の期間、第４の所定の閾値以下である場合、ＣＣＳを開始するステップをさらに含む。
【０１２２】
別の特徴において、コンピュータプログラムは、アプリケーションの種類およびアプリケーションの実行の履歴のうちの少なくとも１つに基づき予測コア使用率を決定するステップと、第２の非対称コアの予測コア使用率が所定の閾値以上である場合、ＣＣＳを開始するステップとをさらに含む。
【０１２３】
別の特徴において、コンピュータプログラムは、第１および第２の非対称コアのうちの一方により実行されるアプリケーションの数、第１および第２の非対称コアのうちの一方により実行されるアプリケーションの種類、ならびに第１および第２の非対称コアのうちの一方により実行される命令の種類のうちの少なくとも１つに基づき、ＣＣＳを開始するステップをさらに含む。
【０１２４】
別の特徴において、コンピュータプログラムは、第１および第２の非対称コアのうちの一方と、第１および第２の非対称コアのうちの他方との間でアプリケーションの実行が切り替えられる回数に基づき、第２の制御信号を生成するステップをさらに含む。
【０１２５】
別の特徴において、コンピュータプログラムは、電力消費を制御するステップと、第２の制御信号および電力消費に基づき第３の制御信号を生成するステップと、第３の制御信号に基づきコア変更シーケンス（ＣＣＳ）を開始するステップと、コア切り替えモジュールを使用して、ＣＣＳに基づき、第１および第２の非対称コアのうちの一方と、第１および第２の非対称コアのうちの他方との間でアプリケーションの実行を切り替えるステップとをさらに含む。
【０１２６】
別の特徴において、コンピュータプログラムは、第２の制御信号に基づき周波数変更シーケンス（ＦＣＳ）を開始するステップと、ＦＣＳに基づき第１および第２の非対称コアのうちの少なくとも１つの動作周波数を選択するステップとをさらに含む。
【０１２７】
別の特徴において、コンピュータプログラムは、第２の制御信号に基づき電圧変更シーケンス（ＶＣＳ）を開始するステップと、ＶＣＳに基づき第１および第２の非対称コアのうちの少なくとも１つの供給電圧を選択するステップとをさらに含む。
【０１２８】
別の特徴において、コンピュータプログラムは、複数の第１の非対称コアを提供するステップと、コア切り替えモジュールを使用して、第１のモードで動作するときに、ＣＣＳに基づき、複数の第１の非対称コアのうちの２つ以上を選択的に動作状態および休止状態にするステップをさらに含む。
【０１２９】
別の特徴において、コンピュータプログラムは、グルーロジックモジュールを提供するステップと、グルーロジックモジュールを使用してコア切り替えモジュールと選択的に通信するステップと、グルーロジックモジュールを介して割り込みを受信するステップと、グルーロジックモジュールを介してアプリケーションから第１の信号を受信するステップと、グルーロジックモジュールを使用して、割り込みおよび第１の信号を、コア切り替えモジュールにより動作状態にされた第１および第２の非対称コアのうちの一方にルーティングするステップとをさらに含む。
【０１３０】
さらに他の特徴において、コア切り替えシステムは、モード切り替えモジュール、コア動作化モジュール、および状態転送モジュールを備える。モード切り替えモジュールは、切り替え信号を受信して、第１のモードと第２のモードとの間で動作を切り替える。第１のモード中、アプリケーションに関連付けられた命令が第１の非対称コアにより実行され、第２の非対称コアは休止状態である。第２のモード中、命令が第２の非対称コアにより実行され、第１の非対称コアは休止状態である。コア動作化モジュールは、割り込みが無効化された後、第１の非対称コアによるアプリケーションの処理を停止する。状態転送モジュールは、第１の非対称コアの状態を、第２の非対称コアに転送する。コア動作化モジュールは、第２の非対称コアに命令の実行を再開することを許可し、割り込みを有効化する。
【０１３１】
別の特徴において、第２のモード中、第２の非対称コアが命令の実行を再開するときに、第２の非対称コアは命令翻訳なしに命令を実行する。
【０１３２】
別の特徴において、第１の非対称コアの第１の最大速度および第１の最大動作電力レベルは、それぞれ、第２の非対称コアの第２の最大速度および第２の最大動作電力レベルより大きい。
【０１３３】
別の特徴において、コア動作化モジュールは、第２の非対称コアが命令の実行を再開するときに、第１の非対称コアに電力を供給しないか、または待機電力を供給する。
【０１３４】
他の特徴において、コア切り替えシステムは、データキャッシュミス率、命令キャッシュミス率、および第１の非対称コアにより実行される周期毎の命令数のうちの少なくとも１つに基づき、アプリケーションを実行するための予測命令実行率を生成するコアプロファイルモジュールをさらに備える。コアプロファイルモジュールは、予測命令実行率に基づき切り替え信号を生成する。
【０１３５】
他の特徴において、コア切り替えシステムは、切り替え信号に基づきコア変更シーケンス（ＣＣＳ）を生成するＣＣＳモジュールをさらに備える。コア動作化モジュールは、ＣＣＳに基づき、第１および第２の非対称コアのうちの一方を起動し、第１および第２の非対称コアのうちの他方を停止する。
【０１３６】
さらに他の特徴において、デバイスは、メモリおよびコア切り替えモジュールを備える。メモリは、アプリケーションにサービスを提供するカーネルを含むオペレーティングシステム（ＯＳ）を格納する。コア切り替えモジュールは、第１のモードと第２のモードとの間で動作を切り替える。第１のモード中、アプリケーションに関連付けられた命令が第１の非対称コアにより実行され、第２の非対称コアは休止状態である。第２のモード中、命令が第２の非対称コアにより実行され、第１の非対称コアは休止状態である。コア切り替えモジュールは、カーネルより高位のレベルで動作する。
【０１３７】
別の特徴において、コア切り替えモジュールは、第１のモードと第２のモードとの間を、ＯＳに対して透過的に切り替える。
【０１３８】
他の特徴において、コア切り替えモジュールは、モード切り替えモジュール、コア動作化モジュール、および状態転送モジュールを備える。モード切り替えモジュールは、切り替え信号を受信して、第１のモードと第２のモードとの間で動作を切り替える。コア動作化モジュールは、割り込みが無効化された後、第１の非対称コアによるアプリケーションの処理を停止する。状態転送モジュールは、第１の非対称コアの状態を、第２の非対称コアに転送する。コア動作化モジュールは、第２の非対称コアに命令の実行を再開することを許可し、割り込みを有効化する。
【０１３９】
別の特徴において、第２のモード中、第２の非対称コアが命令の実行を再開するときに、命令翻訳なしに命令が実行される。
【０１４０】
別の特徴において、第１の非対称コアの第１の最大速度および第１の最大動作電力レベルは、それぞれ、第２の非対称コアの第２の最大速度および第２の最大動作電力レベルより大きい。
【０１４１】
別の特徴において、コア切り替えモジュールは、第２の非対称コアが命令の実行を再開するときに、第１の非対称コアに電力を供給しないか、または待機電力を供給する。
【０１４２】
他の特徴において、コア切り替えシステムは、データキャッシュミス率、命令キャッシュミス率、および第１の非対称コアにより実行される周期毎の命令数のうちの少なくとも１つに基づき、アプリケーションを実行するための予測命令実行率を生成するコアプロファイルモジュールをさらに備える。コア切り替えモジュールは、予測命令実行率に基づき、第１および第２のモードのうちの一方と、第１および第２のモードのうちの他方との間で動作を切り替える。
【０１４３】
他の特徴において、コア切り替えシステムは、データキャッシュミス率、命令キャッシュミス率、および第１および第２の非対称コアのうちの一方により実行される周期毎の命令数のうちの少なくとも１つに基づき、コア変更シーケンス（ＣＣＡ）を生成するＣＣＳモジュールをさらに備える。コア切り替えモジュールは、ＣＣＳに基づき、第１および第２の非対称コアのうちの一方を起動し、第１および第２の非対称コアのうちの他方を停止する。
【０１４４】
さらに他の特徴において、方法は、第１のモード中、第２の非対称コアが休止状態であるときに、第１の非対称コアを使用してアプリケーションに関連付けられた命令を実行するステップと、第２のモード中、第１の非対称コアが休止状態であるときに、第２の非対称コアを使用して命令を実行するステップとを含む。該方法は、第１のモードと第２のモードとの間で動作を切り替えるための切り替え信号を受信するステップをさらに含む。該方法は、切り替え信号に基づき、第１のモード中、割り込みを無効化するステップをさらに含む。該方法は、割り込みが無効化された後、第１の非対称コアによるアプリケーションの処理を停止するステップをさらに含む。該方法は、第１の非対称コアの状態を第２の非対称コアに転送するステップと、第２の非対称コアに命令の実行を再開することを許可するステップと、割り込みを有効化するステップとをさらに含む。
【０１４５】
別の特徴において、該方法は、第２の非対称コアが命令の実行を再開するときに、命令翻訳なしに命令を実行するステップをさらに含む。
【０１４６】
他の特徴において、該方法は、第１の最大速度および第１の最大動作電力レベルを有する第１の非対称コアを提供するステップと、第２の最大速度および第２の最大動作電力レベルを有する第２の非対称コアを提供するステップとをさらに含む。第１の最大速度および第１の最大動作電力レベルは、それぞれ、第２の最大速度および第２の最大動作電力レベルより大きい。
【０１４７】
別の特徴において、該方法は、第２の非対称コアが命令の実行を再開するときに、第１の非対称コアに電力を供給しないか、または待機電力を供給するステップをさらに含む。
【０１４８】
他の特徴において、該方法は、データキャッシュミス率、命令キャッシュミス率、および第１の非対称コアにより実行される周期毎の命令数のうちの少なくとも１つに基づき、アプリケーションを実行するための予測命令実行率を生成するステップをさらに含む。該方法は、予測命令実行率に基づき切り替え信号を生成するステップをさらに含む。
【０１４９】
別の特徴において、該方法は、制御信号に基づきコア変更シーケンス（ＣＣＳ）を生成するステップと、ＣＣＳに基づき、第１および第２の非対称コアのうちの一方を起動するステップと、ＣＣＳに基づき、第１および第２の非対称コアのうちの他方を停止するステップとをさらに含む。
【０１５０】
さらに他の特徴において、方法は、アプリケーションにサービスを提供するカーネルを含むオペレーティングシステム（ＯＳ）を格納するステップと、第１のモード中、第２の非対称コアが休止状態であるときに、第１の非対称コアを使用してアプリケーションに関連付けられた命令を実行するステップとを含む。該方法は、第２のモード中、第１の非対称コアが休止状態であるときに、第２の非対称コアを使用して命令を実行するステップをさらに含む。該方法は、コア切り替えモジュールを使用して、第１のモードと第２のモードとの間で動作を切り替えるステップと、カーネルより高位のレベルでコア切り替えモジュールを実行するステップとをさらに含む。
【０１５１】
別の特徴において、該方法は、第１のモードと第２のモードとの間を、ＯＳに対して透過的に切り替えるステップをさらに含む。
【０１５２】
別の特徴において、該方法は、第１のモードと第２のモードとの間で動作を切り替えるための切り替え信号を受信するステップと、割り込みが無効化された後、第１の非対称コアによるアプリケーションの処理を停止するステップと、第１の非対称コアの状態を第２の非対称コアに転送するステップと、第２の非対称コアに命令の実行を再開することを許可するステップと、割り込みを有効化するステップとをさらに含む。
【０１５３】
別の特徴において、該方法は、第２のモード中、第２の非対称コアが命令の実行を再開するときに、命令翻訳なしに命令を実行するステップをさらに含む。
【０１５４】
他の特徴において、該方法は、第１の最大速度および第１の最大動作電力レベルを有する第１の非対称コアを提供するステップと、第２の最大速度および第２の最大動作電力レベルを有する第２の非対称コアを提供するステップとをさらに含む。第１の最大速度および第１の最大動作電力レベルは、それぞれ、第２の最大速度および第２の最大動作電力レベルより大きい。
【０１５５】
別の特徴において、該方法は、第２の非対称コアが命令の実行を再開するときに、第１の非対称コアに電力を供給しないか、または待機電力を供給するステップをさらに含む。
【０１５６】
他の特徴において、該方法は、データキャッシュミス率、命令キャッシュミス率、および第１の非対称コアにより実行される周期毎の命令数のうちの少なくとも１つに基づき、アプリケーションを実行するための予測命令実行率を生成するステップをさらに含む。該方法は、予測命令実行率に基づき、第１および第２のモードのうちの一方と、第１および第２のモードのうちの他方との間で動作を切り替えるステップをさらに含む。
【０１５７】
別の特徴において、該方法は、データキャッシュミス率、命令キャッシュミス率、および第１の非対称コアにより実行される周期毎の命令数のうちの少なくとも１つに基づきコア変更シーケンス（ＣＣＳ）を生成するステップと、ＣＣＳに基づき、第１および第２の非対称コアのうちの一方を起動し、ＣＣＳに基づき、第１および第２の非対称コアのうちの他方を停止するステップとをさらに含む。
【０１５８】
さらに他の特徴において、コア切り替えシステムは、動作モードを切り替えるためのモード切り替え手段を備える。モード切り替え手段は、切り替え信号を受信して、第１のモードと第２のモードとの間を切り替える。第１のモード中、アプリケーションに関連付けられた命令が、命令を実行するための第１の非対称コア手段により実行され、命令を実行するための第２の非対称コア手段は休止状態である。第２のモード中、命令が第２の非対称コア手段により実行され、第１の非対称コア手段は休止状態である。システムは、第１および第２の非対称コア手段を動作状態にするためのコア動作化手段をさらに備える。コア動作化手段は、割り込みが無効化された後、第１の非対称コア手段によるアプリケーションの処理を停止する。システムは、第１の非対称コア手段の状態を、第２の非対称コア手段に転送するための状態転送手段をさらに備える。コア動作化手段は、第２の非対称コア手段に命令の実行を再開することを許可し、割り込みを有効化する。
【０１５９】
別の特徴において、第２のモード中、第２の非対称コア手段が命令の実行を再開するときに、命令翻訳なしに命令が実行される。
【０１６０】
別の特徴において、第１の非対称コア手段の第１の最大速度および第１の最大動作電力レベルは、それぞれ、第２の非対称コア手段の第２の最大速度および第２の最大動作電力レベルより大きい。
【０１６１】
別の特徴において、コア動作化手段は、第２の非対称コア手段が命令の実行を再開するときに、第１の非対称コア手段に電力を供給しないか、または待機電力を供給する。
【０１６２】
別の特徴において、コア切り替えシステムは、データキャッシュミス率、命令キャッシュミス率、および第１の非対称コア手段により実行される周期毎の命令数のうちの少なくとも１つに基づき、アプリケーションを実行するための予測命令実行率を生成し、予測命令実行率に基づき切り替え信号を生成するためのコアプロファイル手段をさらに備える。
【０１６３】
他の特徴において、コア切り替えシステムは、切り替え信号に基づきコア変更シーケンス（ＣＣＳ）を生成するためのＣＣＳ手段をさらに備える。コア動作化手段は、ＣＣＳに基づき、第１および第２の非対称コア手段のうちの一方を起動し、第１および第２の非対称コアのうちの他方を停止する。
【０１６４】
さらに他の特徴において、デバイスは、アプリケーションにサービスを提供するカーネルを含むオペレーティングシステム（ＯＳ）を格納するメモリを備える。デバイスは、第１のモードと第２のモードとの間で動作を切り替えるためのコア切り替え手段をさらに備える。第１のモード中、アプリケーションに関連付けられた命令が、アプリケーションを実行するための第１の非対称コア手段により実行され、アプリケーションを実行するための第２の非対称コア手段は休止状態である。第２のモード中、命令が第２の非対称コア手段により実行され、第１の非対称コア手段は休止状態である。コア切り替え手段は、カーネルより高位のレベルで動作する。
【０１６５】
別の特徴において、コア切り替え手段は、第１のモードと第２のモードとの間を、ＯＳに対して透過的に切り替える。
【０１６６】
他の特徴において、コア切り替え手段は、切り替え信号を受信して、第１のモードと第２のモードとの間で動作を切り替えるためのモード切り替え手段を備える。コア切り替え手段は、割り込みが無効化された後、第１の非対称コア手段によるアプリケーションの処理を停止するためのコア動作化手段を備える。コア切り替え手段は、第１の非対称コア手段の状態を、第２の非対称コア手段に転送するための状態転送手段をさらに備える。コア動作化手段は、第２の非対称コア手段に命令の実行を再開することを許可し、割り込みを有効化する。
【０１６７】
別の特徴において、第２のモード中、第２の非対称コア手段が命令の実行を再開するときに、命令翻訳なしに命令が実行される。
【０１６８】
別の特徴において、第１の非対称コア手段の第１の最大速度および第１の最大動作電力レベルは、それぞれ、第２の非対称コア手段の第２の最大速度および第２の最大動作電力レベルより大きい。
【０１６９】
別の特徴において、コア切り替え手段は、第２の非対称コア手段が命令の実行を再開するときに、第１の非対称コア手段に電力を供給しないか、または待機電力を供給する。
【０１７０】
他の特徴において、デバイスは、データキャッシュミス率、命令キャッシュミス率、および第１の非対称コア手段により実行される周期毎の命令数のうちの少なくとも１つに基づき、アプリケーションを実行するための予測命令実行率を生成するためのコアプロファイル手段をさらに含む。コア切り替え手段は、予測命令実行率に基づき、第１および第２のモードのうちの一方と、第１および第２のモードのうちの他方との間を切り替える。
【０１７１】
他の特徴において、該デバイスは、データキャッシュミス率、命令キャッシュミス率、および第１の非対称コア手段により実行される周期毎の命令数のうちの少なくとも１つに基づき、コア変更シーケンス（ＣＣＳ）を生成するためのＣＣＳ手段をさらに備える。コア切り替え手段は、ＣＣＳに基づき、第１および第２の非対称コア手段のうちの一方を起動し、第１および第２の非対称コア手段のうちの他方を停止する。
【０１７２】
さらに他の特徴において、コンピュータが読取り可能な媒体に格納され、プロセッサにより実行されるコンピュータプログラムは、第１のモード中、第２の非対称コアが休止状態であるときに、第１の非対称コアを使用してアプリケーションに関連付けられた命令を実行するステップと、第２のモード中、第１の非対称コアが休止状態であるときに、第２の非対称コアを使用して命令を実行するステップとを含む。該方法は、切り替え信号を受信して、第１のモードと第２のモードとの間で動作を切り替えるステップをさらに含む。該方法は、切り替え信号に基づき、第１のモード中、割り込みを無効化するステップをさらに含む。該方法は、割り込みが無効化された後、第１の非対称コアによるアプリケーションの処理を停止するステップをさらに含む。該方法は、第１の非対称コアの状態を第２の非対称コアに転送するステップと、第２の非対称コアに命令の実行を再開することを許可するステップと、割り込みを有効化するステップとをさらに含む。
【０１７３】
別の特徴において、コンピュータプログラムは、第２のモード中、第２の非対称コアが命令の実行を再開するときに、命令翻訳を使用せずに命令を実行するステップをさらに含む。
【０１７４】
他の特徴において、コンピュータプログラムは、第１の最大速度および第１の最大動作電力レベルを有する第１の非対称コアを提供するステップと、第２の最大速度および第２の最大動作電力レベルを有する第２の非対称コアを提供するステップとをさらに含む。第１の最大速度および第１の最大動作電力レベルは、それぞれ、第２の最大速度および第２の最大動作電力レベルより大きい。
【０１７５】
別の特徴において、コンピュータプログラムは、第２の非対称コアが命令の実行を再開するときに、第１の非対称コアに電力を供給しないか、または待機電力を供給するステップをさらに含む。
【０１７６】
他の特徴において、コンピュータプログラムは、データキャッシュミス率、命令キャッシュミス率、および第１の非対称コアにより実行される周期毎の命令数のうちの少なくとも１つに基づき、アプリケーションを実行するための予測命令実行率を生成するステップをさらに含む。コンピュータプログラムは、予測命令実行率に基づき切り替え信号を生成するステップをさらに含む。
【０１７７】
別の特徴において、コンピュータプログラムは、制御信号に基づきコア変更シーケンス（ＣＣＳ）を生成するステップと、ＣＣＳに基づき、第１および第２の非対称コアのうちの一方を起動するステップと、ＣＣＳに基づき、第１および第２の非対称コアのうちの他方を停止するステップとをさらに含む。
【０１７８】
さらに他の特徴において、コンピュータが読取り可能な媒体に格納され、プロセッサにより実行されるコンピュータプログラムは、アプリケーションにサービスを提供するカーネルを含むオペレーティングシステム（ＯＳ）を格納するステップと、第１のモード中、第２の非対称コアが休止状態であるときに、第１の非対称コアを使用してアプリケーションに関連付けられた命令を実行するステップとを含む。該方法は、第２のモード中、第１の非対称コアが休止状態であるときに、第２の非対称コアを使用して命令を実行するステップをさらに含む。該方法は、コア切り替えモジュールを使用して、第１のモードと第２のモードとの間で動作を切り替えるステップと、カーネルより高位のレベルでコア切り替えモジュールを実行するステップとをさらに含む。
【０１７９】
別の特徴において、コンピュータプログラムは、第１のモードと第２のモードとの間を、ＯＳに対して透過的に切り替えるステップをさらに含む。
【０１８０】
別の特徴において、コンピュータプログラムは、第１のモードと第２のモードとの間で動作を切り替えるための切り替え信号を受信するステップと、割り込みが無効化された後、第１の非対称コアによるアプリケーションの処理を停止するステップと、第１の非対称コアの状態を第２の非対称コアに転送するステップと、第２の非対称コアに命令の実行を再開させるステップと、割り込みを有効化するステップとをさらに含む。
【０１８１】
別の特徴において、コンピュータプログラムは、第２のモード中、第２の非対称コアが命令の実行を再開するときに、命令翻訳なしに命令を実行するステップをさらに含む。
【０１８２】
他の特徴において、コンピュータプログラムは、第１の最大速度および第１の最大動作電力レベルを有する第１の非対称コアを提供するステップと、第２の最大速度および第２の最大動作電力レベルを有する第２の非対称コアを提供するステップとをさらに含む。第１の最大速度および第１の最大動作電力レベルは、それぞれ、第２の最大速度および第２の最大動作電力レベルより大きい。
【０１８３】
別の特徴において、コンピュータプログラムは、第２の非対称コアが命令の実行を再開するときに、第１の非対称コアに電力を供給しないか、または待機電力を供給するステップをさらに含む。
【０１８４】
他の特徴において、コンピュータプログラムは、データキャッシュミス率、命令キャッシュミス率、および第１の非対称コアにより実行される周期毎の命令数のうちの少なくとも１つに基づき、アプリケーションを実行するための予測命令実行率を生成するステップをさらに含む。コンピュータプログラムは、予測命令実行率に基づき、第１および第２のモードのうちの一方と、第１および第２のモードのうちの他方との間で動作を切り替えるステップをさらに含む。
【０１８５】
別の特徴において、コンピュータプログラムは、データキャッシュミス率、命令キャッシュミス率、および第１の非対称コアにより実行される周期毎の命令数のうちの少なくとも１つに基づきコア変更シーケンス（ＣＣＳ）を生成するステップと、ＣＣＳに基づき、第１および第２の非対称コアのうちの一方を起動し、ＣＣＳに基づき、第１および第２の非対称コアのうちの他方を停止するステップとをさらに含む。
【０１８６】
本開示のさらなる適用領域は、以降に記載する詳細な説明から明らかとなる。詳細な説明および具体例は、例示目的のみを意図し、本開示の範囲を限定することを意図しないことを理解されたい。
【図面の簡単な説明】
【０１８７】
本開示は、詳細な説明および添付の図面からより完全に理解される。
【０１８８】
【図１Ａ】先行技術による非対称多重処理（ＭＰ）システムの機能ブロック図である。
【０１８９】
【図１Ｂ】先行技術による対称ＭＰシステムの機能ブロック図である。
【０１９０】
【図２】本開示による対称ＭＰシステムの機能ブロック図である。
【０１９１】
【図３Ａ】本開示による高電力コアおよび低電力コアを含む例示的な処理システムの機能ブロック図である。
【図３Ｂ】本開示による高電力コアおよび低電力コアを含む例示的な処理システムの機能ブロック図である。
【０１９２】
【図３Ｃ】図２Ａおよび２Ｂの例示的な制御モジュールの機能ブロック図である。
【０１９３】
【図３Ｄ】図３Ａの例示的なコア使用率監視モジュールの機能ブロック図である。
【０１９４】
【図４】高電力および低電力コアを含む処理システムを動作させるための例示的な方法のフローチャートである。
【０１９５】
【図５】第１および第２のコアを有する別の例示的な制御モジュールの機能ブロック図である。
【０１９６】
【図６】図５の第１および第２のコアを動作させるための例示的な方法のフローチャートである。
【０１９７】
【図７】図５の第１および第２のコアを動作させるための別の例示的な方法のフローチャートである。
【０１９８】
【図８Ａ】本開示による例示的なコアモーフィングシステムの機能ブロック図である。
【図８Ｂ】本開示による例示的なコアモーフィングシステムの機能ブロック図である。
【０１９９】
【図９Ａ】本開示によるコアを動的に切り替える例示的な電力管理システムの機能ブロック図である。
【０２００】
【図９Ｂ】本開示によるコアを動的に切り替える別の例示的な電力管理システムの機能ブロック図である。
【０２０１】
【図９Ｃ】例示的なコア切り替えモジュールの機能ブロック図である。
【０２０２】
【図１０】本開示によるハイパーバイザモジュールと統合されたコア切り替えモジュールを使用してコアを切り替えるための例示的な方法のフローチャートである。
【０２０３】
【図１１Ａ】例示的携帯な電話の機能ブロック図である。
【０２０４】
【図１１Ｂ】基地局と通信する例示的な無線ハンドセットの機能ブロック図である。
【０２０５】
【図１１Ｃ】例示的なモバイルデバイスの機能ブロック図である。
【０２０６】
【図１１Ｄ】例示的グローバルポジショニングシステム（ＧＰＳ）の機能ブロック図である。
【０２０７】
【図１１Ｅ】デスクトップ型コンピュータおよび／またはサーバの機能ブロック図である。
【発明を実施するための形態】
【０２０８】
以下の説明は、本質的に例示的であるに過ぎず、本開示、その応用、または使用を制限することを意図するものではない。明確性のために、同様の要素を特定するために図面において同じ参照番号が使用される。本明細書で使用される場合、Ａ、Ｂ、およびＣのうちの少なくとも１つという語句は、非排他的論理和を使用した論理（ＡまたはＢまたはＣ）を意味すると解釈されたい。方法内のステップは、本開示の原理を改変することなく、異なる順番で実行され得ることを理解されたい。
【０２０９】
本明細書で使用される場合、モジュールという用語は、特定用途向け集積回路（ＡＳＩＣ）、電子回路、１つ以上のソフトウェアもしくはファーウェアプログラムを実行するプロセッサもしくはコア（共有、専用、またはグループ）およびメモリ、組み合わせ論理回路、ならびに／または、記載された機能性を提供する他の好適なコンポーネントを指す。
【０２１０】
ほとんどのモバイルコンピューティングデバイスは、異なるレベルの複雑性および／または処理要件を有するアプリケーションを実行する。単一コア低速プロセッサを使用して効率的に実行され得るアプリケーションもあれば、単一コア高速プロセッサを使用して効率的に実行され得るアプリケーションもある。単なる一例として、低速プロセッサは、５００メガヘルツ（ＭＨｚ）以下の速度で動作し得るが、高速プロセッサは、１ギガヘルツ（ＧＨｚ）以上の速度で動作し得る。他の速度閾値も使用することができる。
【０２１１】
ほとんどのモバイルコンピューティングデバイスは、現在、単一コアプロセッサを１つだけ使用する。単一コアプロセッサを使用してすべての種類のアプリケーションを実行するには、電力と性能のトレードオフが必要である。例えば、低速プロセッサは、単一コアを使用して、性能を犠牲にして省力化を増加させ、電池寿命を延ばすことができる。いくつかの処理集中的アプリケーションは、ゆっくりと動作するか、または全く動作しない場合がある。逆に、高速プロセッサは、必要な処理速度がより低いアプリケーションを実行する際でさえもより多くの電力を消費するため、高速プロセッサは、単一コアを使用して、性能を増加させることができるが電池寿命が短くなる。
【０２１２】
本開示によれば、低速低電力（ＬＰ）コアおよび高速高出力（ＨＰ）コアを有するマルチコア処理システムを使用して、モバイルデバイスにおいて省力化の増加および性能の増加の両方を達成することができる。ＬＰコアおよびＨＰコアは、同じＩＣもしくはＳＯＣ上に、またはシステムインパッケージ（ＳＩＰ）に組み合わされた別個のＩＣとして実装され得る。以降でより詳細に説明するように、マルチコア処理システムは、実行されているアプリケーションの種類、処理負荷、および／または本明細書に記載される他の因子に依存して、ＬＰおよびＨＰコアの間を動的に切り替える。
【０２１３】
ここで図２を参照すると、モバイルデバイスは、ＬＰコア１２およびＨＰコア１６を備える非対称多重処理（ＭＰ）システム１０を含むことができる。ＬＰコア１２の命令セットアーキテクチャ（ＩＳＡ）は、ＨＰコア１６のＩＳＡとは異なっていてもよい。例えば、ＨＰコア１６は、浮動小数点命令を実行することができるがＬＰコア１２は実行しない可能性がある。さらに、ＬＰおよびＨＰコア（以降コアと称する）１２および１６は、異なる性能および能力（例えば、異なる処理速度、電力消費等）を有する。代替として、両方が同じＩＳＡを使用してもよい。
【０２１４】
本開示によれば、非対称ＭＰシステム１０は、ＬＰコア１２およびＨＰコア１６の間の互換性を達成することにより、偽対称的に動作する。ＬＰおよびＨＰコア１２および１６の間の互換性は、多くの様式で達成することができる。例えば、ＬＰコア１２およびＨＰコア１６は、同じもしくは類似した主要コアレジスタ／インタフェースを使用することができ、ＬＰコア１２は、レジスタマッピングを使用することができ、ならびに／またはＬＰコア１２は、ＨＰコア１６の命令セットと同じ、もしくはそのサブセットである命令セットを使用することができる。
【０２１５】
したがって、オペレーティングシステム（ＯＳ）およびアプリケーションは、ＬＰコア１２およびＨＰコア１６の両方で動作することができる。非対称ＭＰシステム１０は、実行されているアプリケーションの処理負荷および種類に依存して、必要に応じてＬＰコア１２およびＨＰコア１６を動的に切り替え、省力化を増加させ性能を向上させることができる。非対称ＭＰシステム１０は、多目的処理（ＧＰＰ）に使用することができる。
【０２１６】
本開示は、コアモーフィングを使用して電力消費を最適化し性能を向上させる。コアモーフィングは、ＭＰシステムのコアの適応および動的切り替えを含む。具体的には、低電力および高電力コアが確実に、またＯＳおよび／またはアプリケーションに対して透過的に切り替えられる。換言すると、どのコアが現在処理負荷を実行しているかがＯＳおよびアプリケーションに認識されないことが可能である。
【０２１７】
コアモーフィングは、電池寿命および性能を最適化することができる。例えば、処理負荷が低い場合は、アプリケーションの実行にＬＰコアを使用することで、電池寿命を伸ばすことができる。一方、処理負荷が高い場合は、アプリケーションの実行にＨＰコアを使用することで、高性能を提供することができる。電力消費および性能は両方とも、必要に応じてＬＰおよびＨＰコアを動的に切り替えることにより最適化することができる。
【０２１８】
コアモーフィングにおいて、コアは、システム負荷に基づき、動的に有効化（すなわち動作状態に）または無効化（すなわち休止状態に）される。システム負荷は、一部、リソースの使用率およびアプリケーションにより要求される性能に基づき決定され得る。いくつかの実現形態において、一度にコアが１つだけ動作状態（すなわちアプリケーションを実行している）となり得る。１つのコアが動作状態にあるとき、電力を節約するために他のコアは無効（すなわち休止状態）となり得る。他のコアは、多くの手法で無効化され得る。例えば、他のコアを、他のコアのクロック周波数および／または供給電圧が、コアが動作状態であるときよりも低い値に減少され得る待機モードとすることができる。代替として、他のコアは、コアへの電力供給を断つことにより、完全に停止することができる。
【０２１９】
１つのコアから別のコアに実行が切り替えられると、動作状態にあるコアは、透過的にＯＳおよびアプリケーションを実行することができる。具体的には、１つのコアから別のコアに実行が切り替えられると、他のコアが翻訳なしに命令を実行する。したがって、コアの切り替えはＯＳおよびアプリケーションに透過的または不可視であり、ＯＳおよびアプリケーションは、システムが複数のコアではなく単一のコアを備えるかのように動作を続ける。コアモーフィングは、１つのＬＰコアおよび１つのＨＰコアを備えるマルチコアシステムにおいて使用することができる。アプリケーションがＨＰコアにより提供される性能よりもさらに高い性能を要求する場合、複数のＨＰコアを使用することができる。
【０２２０】
本開示を通して、一例としてモバイルコンピューティングデバイスを用いて動的コア切り替えを説明しているが、動的コア切り替えは、電力消費を削減するために、デスクトップ型コンピュータ、サーバ等を含む他のコンピュータシステムにおいて使用することができる。
【０２２１】
詳細な説明の前に、図の簡単な概要を示す。図３Ａおよび３Ｂは、ＬＰコアおよびＨＰコアを有するマルチコア処理システムを示す。図３Ｃは、マルチコア処理システムのコアを切り替える制御モジュールを示す。図３Ｄは、制御モジュールのコア使用率モジュールを示す。図４は、マルチコア処理システムを動作させるための方法を例示している。図５は、マルチコア処理システムのコアを切り替えるための別のシステムを示す。図６および７は、マルチコア処理システムを動作させるための方法を例示している。図８Ａおよび８Ｂは、コアモーフィング中コアが切り替えられるときに１つのコアを動作させるグルーロジックモジュールを示す。図９Ａは、コアを動的に切り替えるためにコア切り替えモジュールを使用する電力管理システムを示す。図９Ｂは、コアを動的に切り替えるためにコア切り替えモジュールを使用する電力管理システムを示す。図９Ｃは、例示的なコア切り替えモジュールを示す。図１０は、コア切り替えモジュールを使用してコアを動的に切り替えるための方法のステップを示す。
【０２２２】
ここで図３Ａを参照すると、本開示による処理システム２０が示されている。処理システム２０は、キャッシュ２６を有するＨＰコア２４と、キャッシュ３０を有するＬＰコア２８とを含む。処理システム２０は、必要に応じてＨＰコア２４およびＬＰコア２８の間を切り替え、電力消費を削減しながらも高速での処理を支持することができる。処理システム２０は、電池電力により動作するモバイルデバイスにおける電池寿命を延ばすのに有用となり得る。ＨＰコア２４およびＬＰコア２８は両方とも、同じオペレーティングシステムおよび／またはアプリケーションを実行することができる。さらに、ＨＰコア２４およびＬＰコア２８は両方とも、互いの命令、状態、および／またはスレッドを実行して処理を継続することができる。
【０２２３】
ＨＰモードにおいて、ＨＰコア２４が動作状態にあり、スレッドを処理する。ＬＰコア２８もまたＨＰモードにおいて動作し得る。換言すると、ＬＰコア２８は、ＨＰモードのすべてまたは一部の間、動作状態となり得る。しかし、電力を削減するために、ＨＰコア２４が動作状態にある間、ＬＰコア２８は休止状態で動作することができる。
【０２２４】
ＬＰモードにおいて、ＬＰコア２８は動作状態で動作してスレッドを処理し、ＨＰコア２４は休止状態にある。休止状態のコアは、完全にオフ（電力が供給されない）にされてもよい。代替として、動作状態へのより迅速な移行を可能とするために、休止状態において動作電力レベルより低い電力レベルを含む待機電力がコアに提供されてもよい。
【０２２５】
ＨＰコア２４およびＬＰコア２８は、同じまたは類似のオペレーティングシステムを使用することができる。ＬＰコア２８は、ＨＰコア２４のＩＳＡと同じ、またはそのサブセットであるＩＳＡを使用することができる。ＨＰコア２４およびＬＰコア２８は両方とも、異なる速度ではあるが同じコードおよび／またはアプリケーションを実行することができる。ＨＰコア２４およびＬＰコア２８は、同じまたは類似のアーキテクチャを有することができる。ＨＰコア２４は、ＬＰコア２８よりも多くの処理能力（例えば、パイプライン、ステージ等）を有することができる。ＨＰコア２４およびＬＰコア２８は、ＬＰモードからＨＰモード、およびＨＰモードからＬＰモードに移行する際、一時的に、同時に動作状態で動作することができる。
【０２２６】
揮発性および／または不揮発性メモリ等のメモリ４０は、第１のアプリケーション４２−１、４２−２、・・・、および４２−Ｐ（総称的に第１のアプリケーション４２）、第２のアプリケーション４４−１、４４−２、・・・、および４４−Ｑ（総称的に第２のアプリケーション４４）、ならびに／または第３のアプリケーション４６−１、４６−２、・・・、および４６−Ｒ（総称的に第３のアプリケーション４６）（Ｐ、ＱおよびＲはゼロより大きい整数である）を格納する。第１のアプリケーション４２は、動作中、比較的低い処理速度を必要とするアプリケーションを含むことができ、ＬＰまたはＨＰモード中に実行され得る。換言すると、第１のアプリケーション４２は、概してあまりプロセッサ集中的でないアプリケーションを含むことができる。しかしながら、十分な数の第１のアプリケーション４２が同時に実行されている場合、処理システム２０は、ＨＰモードへの移行および該モードでの動作を必要とし得る。
【０２２７】
第２のアプリケーション４４は、中間の（例えば、典型的には、平均して第１のアプリケーション４２より高く第３のアプリケーション４６よりも低い）処理速度を必要とするアプリケーションを含むことができる。状況に応じて、第２のアプリケーション４４は、低い、中間的、または高い処理速度を必要とし得る。第３のアプリケーション４６は、高い処理速度を必要とする傾向があるアプリケーションとなり得、ＨＰモードにおいて最善に動作し得る。ＨＰコア２４およびＬＰコア２８は両方とも、３種類すべてのアプリケーションを実行することができる。代替として、いくつかのアプリケーションは、ＨＰコア２４のみを使用しての動作に制限され得る。
【０２２８】
制御モジュール３４は、ＨＰおよびＬＰモードの間の移行を選択的に制御するために提供され得る。制御モジュール３４は、別のモジュールまたはデバイスから、モード変更要求信号を受信することができる。制御モジュール３４は、命令、状態、スレッド、および／または、転送に関連する情報の転送、例えばレジスタ、状態、チェックポイント、および／またはプログラムカウンタ等を監視することができる。転送が完了すると、制御モジュール３４は、ＨＰコア２４およびＬＰコア２８のうちの一方を休止状態に移行させることができる。
【０２２９】
処理システム２０は、様々な様式でパッケージされ得る。例えば、処理システム２０のＨＰコア２４およびＬＰコア２８の両方が、任意選択でシステムオンチップ（ＳＯＣ）として実装されてもよい。代替として、処理システム２０は、システムインパッケージ（ＳＩＰ）として配設された、またはプリント基板（ＰＣＢ）上に配設された複数のチップとしてパッケージされ得る。さらに他のパッケージング方法が企図される。
【０２３０】
ここで図３Ｂを参照すると、処理システム２０は、ＨＰコア２４、ＬＰコア２８、共有レジスタファイル１１２、および制御モジュール１１４を含む。ＨＰコア２４は、高リーク／高速プロセスを使用して製造することができる。ＬＰコア２８は、低リーク／低速プロセスを使用して製造することができる。ＨＰコア２４およびＬＰコア２８は、それぞれトランジスタ１０６および１１０を含む。ＨＰコア２４のトランジスタ１０６は、動作状態での動作中、ＬＰコア２８のトランジスタ１１０よりも大きな電力を消費する傾向がある。いくつかの実現形態において、トランジスタ１０６は、トランジスタ１１０よりも高いリーク電流を有し得る。トランジスタ１０６は、トランジスタ１１０のサイズより大きなサイズを有し得る。トランジスタ１０６のゲートは、トランジスタ１１０のゲートより大きくなり得る。ＨＰコア２４のゲート数は、ＬＰコア２８のゲート数より大きくなり得る。
【０２３１】
ＨＰコア２４は、ＬＰコア２８よりも複雑なアーキテクチャを有し得る。例えば、ＬＰコア２８は、ＨＰコア２４よりも小さな幅および／または深さを有し得る。幅は、平行パイプラインの数により定義され得る。ＨＰコア２４は、ＰＨＰ平行パイプライン１４２を含むことができ、ＬＰコア２８は、ＰＬＰ平行パイプライン１４６を含むことができる。いくつかの実現形態において、ＰＬＰはＰＨＰより小さくなり得る。ＰＬＰは、ゼロ以上の整数となり得る。ＰＬＰ＝０の場合、ＬＰコア２８は、いかなる平行パイプラインも含まない。深さは、ステージの数により定義され得る。ＨＰコア２４は、ＳＨＰステージ１４４を含むことができ、ＬＰコア２８は、ＳＬＰステージ１４８を含み得る。いくつかの実現形態において、ＳＬＰはＳＨＰより小さくなり得る。ＳＬＰは、１以上の整数となり得る。
【０２３２】
レジスタファイル１１２は、ＨＰコア２４とＬＰコア２８との間で共有され得る。代替として、ＨＰコア２４およびＬＰコア２８のそれぞれが、レジスタファイルを有し得る。レジスタファイル１１２の内容は、まもなく休止状態とされる動作状態のコアから、まもなく動作状態にされる休止状態のコアに転送され得る。レジスタファイル１１２は、レジスタ、チェックポイント、および／またはプログラムカウンタのために所定のアドレスの場所を使用することができる。例えば、それぞれＨＰおよび／またはＬＰコア２４および／または２８により使用されるレジスタ、チェックポイント、および／またはプログラムカウンタは、レジスタファイル１１２の同じ場所に格納され得る。したがって、ＨＰコア２４およびＬＰコア２８は、一方のコアから他方のコアに移行する際、特定のレジスタ、チェックポイント、および／またはプログラムカウンタを見つけることができる。レジスタファイル１１２は、ＨＰコア２４およびＬＰコア２８のそれぞれにおける各レジスタファイル（図示せず）に付加的であってもよい。スレッド処理は、単一スレッド処理および／またはマルチスレッド処理を含み得る。
【０２３３】
制御モジュール１１４は、ＨＰおよびＬＰモードの間の移行を選択的に制御することができる。制御モジュール１１４は、別のモジュールまたはデバイスから、モード変更要求信号を受信することができる。制御モジュール１１４は、命令、状態、スレッド、および／または、転送に関連する情報、例えばレジスタ、状態、チェックポイント、および／またはプログラムカウンタ等の転送を監視することができる。転送が完了すると、制御モジュール１１４は、ＨＰコア２４およびＬＰコア２８のうちの一方を休止状態に移行させることができる。ＨＰコア２４、ＬＰコア２８、レジスタファイル１１２、および／または制御モジュール１１４は、システムオンチップ（ＳＯＣ）１３０として実装することができる。
【０２３４】
ＨＰコア２４は、キャッシュ２６を含むことができ、ＬＰコア２８は、キャッシュ３０を含むことができる。キャッシュ２６のサイズは、キャッシュ３０より大きくなり得る。キャッシュ２６は、キャッシュ３０より多くの電力を消費し得る。単なる一例として、キャッシュ２６は４ウェイキャッシュを含むことができ、一方キャッシュ３０はダイレクトマップキャッシュを含むことができる。単なる一例として、ＨＰコア２４は、１ＧＨｚ以上の速度で動作することができ、一方ＬＰコア２８は、５００ＭＨｚ以下の速度で動作することができる。
【０２３５】
ここで図３Ｃを参照すると、制御モジュール１１４は、処理システムの動作を管理するために、以下のモジュールのうちの１つ以上を含むことができる。制御モジュール１１４は、性能プロファイルモジュール１１６、アイドルプロファイルモジュール１１８、コアプロファイルモジュール１２０、スレッド転送モジュール１２２、および／またはキャッシュ監視モジュール１２４を含むことができる。
【０２３６】
性能プロファイルモジュール１１６は、ＨＰコア２４およびＬＰコア２８により実行されているアプリケーションの動作性能を監視することができ、またシステム負荷のプロファイルを生成することができる。具体的には、性能プロファイルモジュール１１６は、作業負荷の種類（例えば、システム負荷がＣＰＵバウンドか、メモリバウンドか、またはその両方であるかどうか）を動的に検出することができる。さらに、性能プロファイルモジュール１１６は、ＨＰコア２４およびＬＰコア２８のクロック周波数および／または供給電圧が変化する際、動作性能のボトルネックを検出することができる。
【０２３７】
アイドルプロファイルモジュール１１８は、ＣＰＵ使用率を監視し、ＨＰコア２４およびＬＰコア２８を動作させるための最低限のクロック周波数および／または供給電圧を決定することができる。アイドルプロファイルモジュール１１８は、高いアイドルデューティサイクルを有する作業負荷の電力を節約しながら、作業負荷に基づき動作性能への影響を最小限化することができる。
【０２３８】
さらに、ＨＰコア２４およびＬＰコア２８が休止状態である場合、それぞれＨＰコア２４およびＬＰコア２８においてより低い電力レベルを維持することができるように、アイドルプロファイルモジュール１１８を使用することができる。例えば、アイドルプロファイルモジュール１１８は、動作状態の動作電力レベルより低く（そして電力ゼロより大きく）、また休止状態のコアを迅速に動作状態に移行させるのに十分な低電力レベルを供給するように、電源を動作させることができる。
【０２３９】
キャッシュ監視モジュール１２４は、ＨＰコア２４およびＬＰコア２８がアプリケーションを実行するときにキャッシュミス率を監視することができる。例えば、キャッシュ監視モジュール１２４は、ＨＰコア２４およびＬＰコア２８の命令キャッシュミス率およびデータキャッシュミス率を監視することができる。
【０２４０】
コアプロファイルモジュール１２０は、性能プロファイルモジュール１１６、アイドルプロファイルモジュール１１８、および／またはキャッシュ監視モジュール１２４により生成された情報を分析することができる。その情報に基づき、コアプロファイルモジュール１２０は、アプリケーションが実行されているとき、ＨＰコア２４およびＬＰコア２８のコア使用率を監視することができる。コアプロファイルモジュール１２０は、コア使用率がある所定の閾値以下にある時を示すことができる。コアプロファイルモジュール１２０は、電力消費および動作性能を最適化するためにＬＰモードからＨＰモードまたはＨＰモードからＬＰへの切り替えが必要であるとき、モード変更信号を生成することができる。電力管理システムは、要求に応じてモードを変更するかどうかの決定にモード変更信号を使用することができる。
【０２４１】
より具体的には、コアプロファイルモジュール１２０は、ＨＰコア２４およびＬＰコア２８の処理速度をそれぞれ監視することができる。ＨＰコア２４が第１の所定の閾値未満の第１の処理速度で動作し始めると、コアプロファイルモジュール１２０は、ＬＰコア２８に動作を切り替える必要性を示すことができる。ＬＰコア２８が第２の所定の閾値を超える第２の処理速度で動作し始めると、コアプロファイルモジュール１２０は、ＨＰコア２４に動作を切り替える必要性を示すことができる。
【０２４２】
第１および第２の所定の閾値は、同じであっても、（ヒステリシスを提供するために）同じでなくてもよい。換言すると、第１の所定の閾値は、第２の所定の閾値より低くてもよい。第１および第２の処理速度は、処理速度の瞬間的な変化の間の切り替えを防止するために、第１および第２の期間にわたり平均化されてもよい。第１および第２の期間は、異なる期間に設定して切り替えを促進または抑制することができる。第１の期間、第２の期間、第１の所定の閾値、および第２の所定の閾値は、プログラマによりプリセットされていてもよく、またはユーザにより定義されてもよい。そうすることで、ユーザは、処理システム２０を含むデバイスの電力散逸を制御することができる。スレッド転送モジュール１２２は、コアが切り替えられた際、ＨＰコア２４とＬＰコア２８との間のスレッドの転送を促進する。
【０２４３】
ここで図３Ｄを参照すると、コアプロファイルモジュール１２０は、システム負荷を監視することができる。例えば、ＨＰコア２４およびＬＰコア２８の１つ以上のパラメータを監視して、コア使用率の表示を提供することができる。例えば、コアプロファイルモジュール１２０は、処理速度、ページファイル使用量、入力／出力負荷、スレッド数、キャッシュ使用量、および／またはアプリケーションの種類を監視することができる。ＣＰＵ使用量は、コアの容量に対する単位時間あたりの動作数の比率を表し得る。ページファイル使用量は、ページファイルの最大数に対するページファイル数の比率を表し得る。スレッドカウントは、動作中のスレッドの数であり得る。
【０２４４】
コアプロファイルモジュール１２０は、単一の閾値を使用することができる。換言すると、ＨＰコア２４への移行は、ＬＰコア２８のＣＰＵ使用量が所定の期間中所定のパーセンテージを超える、ページファイル使用量が所定のページファイル数を超える、またはスレッド数が所定のスレッド数を超える場合に生じ得る。コアプロファイルモジュール１２０はまた、基準を組み合わせてより複雑な条件とすることができる。単なる一例として、コアプロファイルモジュール１２０は、ＬＰコア２８の処理速度が所定の期間中最大速度の所定のパーセンテージを超えること、および入力／出力負荷が所定の値を超えることを必要とし得る。ヒステリシスを使用することもできる。さらに他の組み合わせも企図される。
【０２４５】
ここで図４を参照すると、処理システム２０を動作させるための例示的方法３００が示されている。制御は、ブロック３０４から始まり、ブロック３０６に進む。ブロック３０６では、制御は現在の動作モードを判定する。ステップ３０６がＨＰと等しい場合、制御はステップ３０８へと続き、モード信号がＬＰモードに設定されているかどうかを判定する。ステップ３０８が真である場合、制御はステップ３１０へと続き、ＬＰコア２８およびキャッシュ３０への電力を増加させる。ステップ３１２において、制御は、ＬＰコア２８およびキャッシュ３０の準備ができているかどうかを判定する。ステップ３１８において、制御は、ＨＰコア２４上で実行されている命令、状態、スレッド等をＬＰコア２８に転送する。
【０２４６】
ステップ３０６がＬＰと等しい場合、制御はステップ３２８へと続き、モード信号がＨＰモードに設定されているかどうかを判定する。ステップ３２８が真である場合、制御はステップ３３０へと続き、ＨＰコア２４およびキャッシュ２６への電力を増加させる。ステップ３３２において、制御は、ＨＰコア２４およびキャッシュ２６の準備ができているかどうかを判定する。ステップ３３８において、制御は、ＬＰコア２８上で実行されている命令、状態、スレッド等をＨＰコア２４に転送する。
【０２４７】
ここで図５を参照すると、ＨＰおよびＬＰコアを備える別の例示的システムが示されている。システムは、レベル１（Ｌ１）キャッシュ２０２を含むＬＰコア２００と、Ｌ１キャッシュ２０６を含むＨＰコア２０４とを含む。ＬＰコア２００およびＨＰコア２０４は、バス２０５を介して通信することができる。高速メモリ２１０が提供されてもよい。高速メモリ２１０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）または他の好適な高速メモリを含み得る。ＬＰコア２００およびＨＰコア２０４は、別個のＩＣとして実装されてシステムインパッケージ（ＳＩＰ）として配設されてもよく、またはＩＣもしくはＳＯＣとして統合されてもよい。高速メモリ２１０はまた、ＬＰコア２００およびＨＰコア２０４のうちの一方または両方と統合されてもよい。
【０２４８】
ＬＰコア２００およびＨＰコア２０４はまた、本明細書に記載の属性の一部またはすべてを有することができる。ＬＰコア２００は、ＨＰコア２０４よりも小さいコアを有し得る。Ｌ１キャッシュ２０２および２０６に加えて、レベル２（Ｌ２）キャッシュ２０８もまた提供され得る。Ｌ１キャッシュ２０２および２０６は、それぞれ対応するＬＰコア２００およびＨＰコア２０４と統合され得る。Ｌ２キャッシュ２０８は、コア２００および２０４のうちの一方または両方により使用され得る。Ｌ２キャッシュ２０８は、一般に、高いリーク電流および／または電力消費を有する傾向があるため、望ましい場合は、Ｌ２の使用はＨＰコア２０４に制限することができる。いくつかの実現形態において、ＨＰコア２０４は、複数の同一コアを含んでもよい。
【０２４９】
ＬＰコア２００およびＨＰコア２０４は、異なるＩＳＡで同じオペレーティングシステム（ＯＳ）を実行してもよく、また同じコードを実行することができる。ＯＳのコンポーネントであるカーネルモジュール２２０は、システムリソースを管理する。単なる一例として、ＯＳは、Ｌｉｎｕｘ（登録商標）または他の好適なオペレーティングシステムを含み得る。カーネルモジュール２２０は、その機能を実行するときにアプリケーション２２４（例えば、アプリケーション２２４−１、２２４−２、・・・および２２４−Ｐ）が制御するリソース（例えば、高速メモリ２１０または主メモリ２２８、ＬＰコア２００およびＨＰコア２０４、ならびに入力／出力デバイス２３４）の最も低位の抽象化レイヤを提供する。カーネルモジュール２２０は、典型的には、プロセス間通信機構およびシステムコールを通して、アプリケーション２２４のプロセスにこれらのリソースを提供する。
【０２５０】
起動中、ブートローダは、典型的にはカーネルモジュール２２０の実行を開始する。カーネルモジュール２２０はそれ自体を初期化し、第１のプロセスを開始する。続いて、カーネルモジュール２２０は、一般に、カーネルモジュール２２０からサービスを要求するためにアプリケーション２２４により使用されるシステムコール等の外部イベントに応答して、またはカーネルモジュール２２０にイベントを通知するためにハードウェアコンポーネントにより使用される割り込みを介して動作する。カーネルモジュール２２０はまた、実行可能なプロセスがない場合、アイドルプロセスループを実行することができる。
【０２５１】
電力消費を管理し、監視されているシステム負荷に基づきシステム動作の変更を開始または制御するために、電力管理システム（ＰＭＳ）モジュール２４２を提供することができる。コアプロファイルモジュール２４０は、コア負荷、入力／出力負荷、アプリケーション負荷、および／または他のシステム動作パラメータに基づく負荷等のシステム負荷を監視することができる。
【０２５２】
例えば、ＰＭＳモジュール２４２は、要求に応じて、ＬＰコア２００の異なる動作周波数の間の切り替えを制御することができる。換言すると、ＰＭＳモジュール２４２は、システム負荷に基づき、ＬＰコア２００のＴ個（Ｔは１より大きい整数である）の異なる動作速度の間の移行を処理することができる。例えば、低い負荷条件下で、ＬＰコア２００は、最初は１００ＭＨｚ未満の速度で動作し得る。システム負荷が増加するにつれ、ＰＭＳモジュール２４２は、動作速度を２００ＭＨｚに増加させる必要が生じ得る。理解できるように、より高速度での動作はまた、より高い電力消費と関連し得る。速度の増加は、ＬＰコア２００および／または関連したクロッキング回路への供給電圧Ｖｄｄを上げることにより達成することができる。ＬＰコア２００の動作速度をその最大処理速度まで増加させるために、追加の速度ステップを用いることができる。
【０２５３】
ＬＰコア２００がその最高動作速度に達して追加的なシステム負荷が生じると、コアプロファイルモジュール２４０、ＰＭＳモジュール２４２、および／またはカーネルモジュール２２０は、割り込みを無効化し、ハイパーバイザモジュール２１３またはコア切り替えモジュール２１２へのシステムコールを生成して移行をトリガする。コア切り替えモジュール２１２は、スタンドアロン型であってもよく、またはハイパーバイザモジュール２１３と統合されてもよい。コア切り替えモジュール２１２は、システムコールに応答して、ＬＰコア２００からＨＰコア２０４に動作を移行させ（切り替え）、移行（切り替え）が完了した後にカーネルモジュール２２０に制御を戻すことができる。
【０２５４】
ハイパーバイザという用語は、一般に、ホストコンピュータ上で同時に複数のオペレーティングシステムを動作させるプラットフォームを指す。ハイパーバイザは、他のＯＳが動作している間、一方のＯＳの動作を安全に一時停止するために使用することができる。ハイパーバイザは、典型的には、カーネルより高位で動作する。代替として、ハイパーバイザは、カーネルより低位で動作し得る。
【０２５５】
本開示において、ハイパーバイザという用語は、ホストデバイスに、同じＯＳを使用して複数の非対称プロセッサを使用させる仮想化プラットフォームを指す。信頼できるゾーンにない他のユーザアプリケーションとは対照的に、ハイパーバイザは信頼できるゾーンで動作する。信頼できるゾーンは、外部割り込みなしにサービスがセキュアに実行され得る、コード分離を提供する安全な環境である。ハイパーバイザは、プロセッサ間の転送を管理し、他の非対称プロセッサが動作している間、一方の非対称プロセッサの動作を一時停止する。代替として、ハイパーバイザは、複数のＯＳを使用して、複数の非対称プロセッサを実行するために使用することができる。
【０２５６】
コア切り替えモジュール２１２がハイパーバイザモジュール２１３に統合されているかどうかに依存して、ハイパーバイザモジュール２１３またはコア切り替えモジュール２１２が、起動後にＲＡＭまたは他の記憶装置から高速メモリ２１０にロードされる。コア切り替えモジュール２１２は、信頼できるゾーンでコアを切り替える。ＰＭＳモジュール２４２は、一方のコアの動作が一時停止され別のコアに引き渡される際、ＬＰコア２００およびＨＰコア２０４のうちの一方に対する割り込みを無効化する。ハイパーバイザモジュール２１３および／またはコア切り替えモジュール２１２は、ＯＳおよびアプリケーションからコアを分離することによりハードウェア抽象化を提供し、コア切り替えを、ＯＳおよびアプリケーションに対して透過的とする。
【０２５７】
コア切り替えモジュール２１２は、カーネルモジュール２２０より高位のレベルで実行される。コア切り替えモジュール２１２は、ＯＳおよびアプリケーションに対して透過的にコアを切り替えるため、ＯＳおよびアプリケーションは、コア切り替えモジュール２１２がコアを切り替える際に改変されることなく動作し得る。
【０２５８】
ＰＭＳモジュール２４２により割り込みが無効化された後、コア切り替えモジュール２１２はＬＰコア２００の状態をコピーし、ＨＰコア２０４を動作状態にし、ＬＰコア２００の状態を使用してＨＰコア２０４を初期化する。ＨＰコア２０４が初期化された後、コア切り替えモジュール２１２はＬＰコア２００を休止状態にする。ＨＰコア２０４は、アプリケーションの実行を再開し、ＰＭＳモジュール２４２は割り込みを有効化する。
【０２５９】
ＨＰコア２０４を使用して命令を実行した後、システム負荷は最終的に減少し得る。システム負荷が所定の点までに減少すると、コア切り替えモジュール２１２は、ＨＰコア２０４からＬＰコア２００に動作を移行して戻すことができる。理解できるように、コア切り替えを使用するシステムは、必要な処理速度が比較的低い場合、ＬＰコア２００の低い電力消費の利益を得ることができる。高速処理が望ましい場合、ＨＰコア２０４が使用され、次いで処理負荷が十分減少したらオフにされ得る。
【０２６０】
ここで図６を参照すると、図５のＬＰコア２００およびＨＰコア２０４を動作させるための方法のステップが示されている。制御はステップ２５０から開始する。ステップ２５２において、コアプロファイルモジュール２４０は、ＬＰコア２００のシステム負荷を監視する。ステップ２５６において、コアプロファイルモジュール２４０は、ＨＰコア２０４への切り替えが必要かどうかを判定する。ステップ２５６が偽である場合、制御はステップ２５２に戻る。
【０２６１】
ステップ２５６が真である場合、制御メッセージがコア切り替えモジュール２１２に送信される。コア切り替えモジュール２１２は、ステップ２６０において、ＬＰコア２００の状態（ポインタ、レジスタ、オペコード、オペランド、プログラムカウンタ（ＰＣ）等）を読み出し、ＬＰコア２００の状態またはその状態を表す情報を、高速メモリ２１０にコピーする。ステップ２６４において、コア切り替えモジュール２１２は、ＨＰコア２０４を動作状態に移行させる。ステップ２６８において、コア切り替えモジュール２１２は、ＬＰコア２００の状態を高速メモリ２１０からＨＰコア２０４にロードする。ステップ２７２において、コア切り替えモジュール２１２は、ＬＰコア２００を休止状態に移行させる。ステップ２７６において、ＨＰコア２０４は、ＨＰコア２０４にロードされた状態で実行を再開する。換言すると、動作は、ＬＰコア２００が休止状態に入った際と同じプログラムカウンタ値で再開する。
【０２６２】
ステップ２８０において、ＬＰコア２００からロードされた命令の完了後、ＨＰコア２０４は、アプリケーションレベルで実行を開始することができる。ステップ２８８において、コアプロファイルモジュール２４０は、ＨＰコア２０４のシステム負荷を監視する。ステップ２９２において、コアプロファイルモジュール２４０は、ＬＰコア２００への切り替えが必要かどうかを判定する。
【０２６３】
ステップ２９２が偽である場合、制御はステップ２８８に戻る。あるいは、ステップ２９２が真である場合、ステップ２９６において、コア切り替えモジュール２１２は、ＨＰコア２０４の状態を読み出し、ＨＰコア２０４の状態またはその状態を表す情報を、高速メモリ２１０にコピーする。代替として、状態は、動作状態にされるコアに直接コピーされ得る。ステップ３００において、コア切り替えモジュール２１２は、ＬＰコア２００を動作状態に移行させる。ステップ３０６において、コア切り替えモジュール２１２は、ＨＰコア２０４の状態を高速メモリ２１０からＬＰコア２００にロードする。
【０２６４】
ステップ３１０において、ＨＰコア２０４は、休止状態に移行する。ステップ３２０において、ＬＰコア２００は、ロードされた状態で実行を再開する。ステップ３２４において、ロードされた命令の完了後、ＬＰコア２００はアプリケーションレベルで動作し、制御はステップ２５２に戻る。
【０２６５】
ここで図７を参照すると、図５のＬＰコア２００およびＨＰコア２０４を動作させるための別の方法のステップが示されている。制御はステップ３２８から開始する。ステップ３３０において、制御は、ＬＰコア２００が動作状態かどうかを判定する。ステップ３３０が真である場合、コアプロファイルモジュール２４０は、ＬＰコア２００のシステム負荷または速度を監視する。ステップ３３８において、コアプロファイルモジュール２４０は、実行されているアプリケーションの種類を監視する。ステップ３４２において、制御は、アプリケーションのいずれかがＨＰ型に指定されるかどうかを判定する。
【０２６６】
アプリケーションがＨＰ型アプリケーションとして指定される場合、アプリケーションが起動されるとすぐにＨＰコア２０４への移行が生じ得る。ＨＰ型アプリケーションは、プログラムされていてもよく、および／またはユーザにより指定されてもよい。代替として、ＨＰアプリケーションは、充電状態に基づき選択されてもよい。換言すると、アプリケーションは、電池残量が低い場合以外はＨＰコア動作が初期設定となり得る。電池残量が低い場合、アプリケーションは、より低い動作速度でＬＰコアで動作させられるか、または全く動作しない場合がある。さらに他のアプリケーションが、ＨＰコア２０４のみで実行され得る。
【０２６７】
ステップ３４２が偽である場合、制御は、ステップ３４８において、システム負荷が第１の閾値より大きいかどうかを決定する。ステップ３４８が偽である場合、制御はステップ３３０に戻る。ステップ３４８が真である場合、制御はステップ３５２へと続き、コア切り替えモジュール２１２を使用してＨＰコア２０４に移行する。ステップ３５６において、コアプロファイルモジュール２４０は、ＨＰコア２０４のシステム負荷を監視する。ステップ３６０において、制御は、システム負荷が第２の閾値未満であるかどうかを判定する。ステップ３６０が偽である場合、制御はステップ３５６に戻る。ステップ３６０が真である場合、制御はステップ３７６においてＬＰコア２００に移行し、制御はステップ３３０に戻る。
【０２６８】
ステップ３４２が真である場合、制御はステップ３６４へと続き、コア切り替えモジュール２１２を使用してＨＰコア２０４に移行する。ステップ３６８において、制御は、ＨＰ型アプリケーションが閉じられているか、または終了しているかどうかを判定する。ステップ３６８が偽である場合、ＨＰコア２０４は、ＨＰ型アプリケーションの実行を継続する。ステップ３６８が真である場合、制御はステップ３７２へと続き、ＨＰ型アプリケーションを閉じた後のシステム負荷が第２の速度閾値未満であるかどうかを判定する。ステップ３７２が偽である場合、制御はステップ３７２に戻る。ステップ３７２が真である場合、制御はステップ３７６においてＬＰコア２００に移行し、制御はステップ３３０に戻る。
【０２６９】
ＬＰコアが、モバイルコンピューティングデバイスのハードウェアおよびソフトウェアの残りの部分にとって、ＨＰコアに類似するかまたはそのように見えることができる場合、コア切り替えは、ＯＳおよびアプリケーションに対して透過的となることができる。ＬＰコアがＨＰコアに類似する場合、ＬＰコア用にスケジュールされたスレッドは、いかなる修正またはスレッドカラーリングもなく、ＨＰコア用にスケジュールすることができ、またその逆も可である。換言すると、アプリケーションは、どちらかのコアのスレッドの性質とは無関係に、どちらのコアによってでも実行され得る。したがって、コア切り替えは、ＯＳおよびアプリケーションに対して透過的となる。
【０２７０】
ＬＰおよびＨＰコアが同一または互換性のある主要コアレジスタおよびインタフェースを有する場合、ＬＰコアはＨＰコアと類似することができる。主要コアレジスタおよびインタフェースの例には、ＣＰＵＩＤレジスタ、デバッグレジスタ、キャッシュ編成および制御レジスタ、ＣＰレジスタ、トレースマクロ、メモリ管理ユニット（ＭＭＵ）、ならびに性能管理ユニット（ＰＭＵ）が含まれる。追加して、または代替として、ＬＰコアは、レジスタマッピングインタフェースおよび／またはマイクロシーケンサを実装して、ＨＰコアとの動的な互換性を達成することができる。代替として、または追加して、ＬＰコアの命令セットは、ＨＰコアの命令セットと同じ、またはそのサブセットであり得る。
【０２７１】
ここで、図８Ａおよび８Ｂを参照すると、グルーロジックモジュール３８０を使用して、コア切り替えモジュールによりコアが切り替えられているときに一度にコアを１つだけ有効化（すなわち動作状態に）することができる。図８Ａにおいて、グルーロジックモジュール３８０は、外部割り込み（例えば、ＩＲＱおよびＦＩＱ）および他の入力（例えば、トレースマクロおよびデバッグ）を、モバイルデバイスの他のハードウェアおよびソフトウェアから受け取ることができる。さらに、グルーロジックモジュール３８０は、ＬＰコア２００およびＨＰコア２０４が切り替えられているときに、ＬＰコア２００およびＨＰコア２０４からウェークアップ交換信号を受信することができる。ウェークアップ交換信号は、コア切り替え中、ＬＰコア２００およびＨＰコア２０４のうちの一方がウェークアップし、他方が停止する時を示す。ウェークアップ交換信号に基づき、グルーロジックモジュール３８０は、割り込みおよび他の入力を、コアが切り替えられた後に動作状態であるＬＰコア２００およびＨＰコア２０４の一方にルーティングすることができる。
【０２７２】
具体的には、図８Ｂにおいて、グルーロジックモジュール３８０は、割り込み制御および多重化装置３８２、トレースマクロおよびデバッグ多重化装置３８４、ならびに多重化制御モジュール３８６を備えることができる。割り込み制御および多重化装置３８２は、外部割込みを受け取ることができ、外部割り込みに基づき、ＬＰコア２００およびＨＰコア２０４に対するマスクされた割り込みおよび割り込み待ち（ＷＦＩ）信号を生成することができる。トレースマクロおよびデバッグ多重化装置３８４は、ＬＰコア２００およびＨＰコア２０４に対するトレースマクロおよびデバッグの入力を受け取ることができる。
【０２７３】
多重化制御モジュール３８６は、ウェークアップ交換信号を受け取ることができ、またウェークアップ交換信号に基づき多重化制御信号を生成することができる。多重化制御信号は、コア切り替えが完了した後の時点で、ＬＰコア２００およびＨＰコア２０４のうち、どちらが動作状態であるかを示すことができる。代替として、コア切り替えモジュールは、ウェークアップ交換信号に基づき、割り込み制御および多重化デバイス３８２ならびにトレースマクロおよびデバッグ多重化デバイス３８４を制御することができる。
【０２７４】
多重化制御信号に基づき、割り込み制御および多重化デバイス３８２は、マスクされた割り込みおよびＷＦＩ信号を、コアが切り替えられた後に動作状態にあるＬＰコア２００およびＨＰコア２０４のうちの一方にルーティングすることができる。トレースマクロおよびデバッグ多重化装置３８４は、トレースマクロおよび／またはデバッグ信号を、コアが切り替えられた後に動作状態にあるＬＰコア２００およびＨＰコア２０４のうちの一方にルーティングすることができる。したがって、一度にＬＰコア２００およびＨＰコア２０４のうちの一方のみが動作状態であり、アプリケーションを実行する。
【０２７５】
グルーロジックモジュール３８０が非対称的にＬＰコア２００およびＨＰコア２０４と通信するため、ＬＰコア２００およびＨＰコア２０４は、対称通信能力を有する。具体的には、割り込み制御および多重化デバイス３８２ならびにトレースマクロおよびデバッグ多重化デバイス３８４により生成された信号は、対称的にＬＰコア２００およびＨＰコア２０４に通信する。したがって、所与の時点でＬＰコア２００およびＨＰコア２０４のうちのどちらが動作状態であるかとは無関係に、ＬＰコア２００およびＨＰコア２０４のハードウェアインタフェース動作および信号伝達能力は類似している。これにより、モバイルデバイスの他のハードウェアは、どちらのコアが動作状態にあるかとは無関係に、またはどちらのコアが動作状態にあるかを特定することなく、どちらのコアとも通信することができる。
【０２７６】
さらに、対称的な通信に起因して、ＬＰコア２００およびＨＰコア２０４のプログラム可能性は類似している。具体的には、アプリケーションは、どちらのコアが動作状態にあるかとは無関係に、またはどちらのコアが動作状態にあるかを特定することなく、動作状態にあるＬＰコア２００またはＨＰコア２０４上で透過的に動作することができる。グルーロジック３８０により提供されるハードウェアおよびソフトウェア透過性または対称性によって、ハードウェアおよびソフトウェアの製造供給元は、コアが１つだけ存在するかのように、製品を普通に使用、修正、開発、および／または追加することができる。
【０２７７】
ＨＰコア２０４が複数の同一コアを備える場合、割り込み制御および多重化デバイス３８２は、それぞれのコアに対するマスクされた割り込みおよびＷＦＩ信号を生成することができる。さらに、トレースマクロおよびデバッグ多重化デバイス３８４は、トレースマクロおよびデバッグ信号を、それぞれのコアにルーティングすることができる。
【０２７８】
ここで図９Ａおよび９Ｂを参照すると、動的コア切り替えを使用してモバイルデバイスの電力消費を最適化する電力管理システム（ＰＭＳ）４００が示されている。図９Ａにおいて、ＰＭＳ４００は、ＰＭＳモジュール４０２、コアシーケンスモジュール４１３、コア切り替えモジュール４１４、およびグルーロジックモジュール３８０を備える。いくつかの実現形態において、コア切り替えモジュール４１４は、ハイパーバイザモジュール４１５と統合することができる。ＰＭＳモジュール４０２は、電力制御モジュール４０４、性能プロファイルモジュール４０６、アイドルプロファイルモジュール４０８、ＯＳタスクプロファイルモジュール４１０、およびコアプロファイルモジュール４１２を備える。ＰＭＳモジュール４０２は、ユーザプロファイル、実行されているアプリケーションの種類、ＯＳから受け取る入力、および、それぞれのデバイスドライバから受け取る各種ハードウェアデバイスの状態に基づき、電力消費を管理する。
【０２７９】
電力制御モジュール４０４は、ユーザプロファイルを介して、ユーザから電力／性能に関連する入力を受け取ることができる。例えば、ユーザは、必要となる電力消費とは無関係に、アプリケーションの動作性能レベルを特定することができる。さらに、電力制御モジュール４０４は、性能プロファイルモジュール４０６、アイドルプロファイルモジュール４０８、ＯＳタスクプロファイルモジュール４１０、およびコアプロファイルモジュール４１２からの入力を受け取ることができる。
【０２８０】
性能プロファイルモジュール４０６は、アプリケーションの現在の動作性能、および要求される、または望ましい動作性能を示す出力を生成することができる。例えば、性能プロファイルモジュール４０６は、電力制御モジュール４０４およびコアプロファイルモジュール４１２に、アプリケーションによる現在のコア使用率、キャッシュミス率、およびシステム負荷がメモリバウンドであるか、コアバウンドであるか、またはＩ／Ｏバウンドであるかどうかを含むパラメータを示すことができる。性能プロファイルモジュール４０６は、ＯＳサービスモジュール４１６、デバイスドライバモジュール４１８、およびコア４２０から受け取った入力に一部基づき、出力を生成することができる。コア４２０は、ＬＰおよび１つ以上のＨＰコアを備えることができる。
【０２８１】
ＯＳサービスモジュール４１６は、カーネル入力／出力制御（ＩＯＣＴＬ）モジュール４２２およびスケジューリングモジュール４２４を備えることができる。カーネルＩＯＣＴＬモジュール４２２は、現在のＩ／Ｏ使用量を電力制御モジュール４０４に報告することができる。スケジューリングモジュール４２４は、ＯＳタスクをスケジュールすることができる。ＯＳタスクの例には、タスクの数、プロセスの数、およびスレッド量が含まれる。ＯＳタスクのスケジュールは、ＯＳタスクプロファイルモジュール４１０により監視され、電力制御モジュール４０４に報告される。アイドルプロファイルモジュール４０８は、ＯＳサービスモジュール４１６からの入力を受け取ることができ、コア４２０がいつアイドル状態であるかを電力制御モジュール４０４に報告する。
【０２８２】
デバイスドライバモジュール４１８は、モバイルコンピューティングデバイスのハードウェアデバイスを制御するデバイスドライバを備えることができる。例えば、デバイスドライバモジュール４１８は、ＰＭＳモジュール４０２から受け取った信号に基づきモバイルコンピューティングデバイスの電池を制御する電池ドライバモジュール４２６を備えることができる。電池ドライバモジュール４２６は、電池の状態を電力制御モジュール４０４に報告することができる。
【０２８３】
さらに、デバイスドライバモジュール４１８は、ＰＭＳモジュール４０２から受け取った入力に基づきハードウェアデバイスにより消費される電力を制御する電力管理割り込み制御（ＰＭＩＣ）モジュール４２８を備えることができる。デバイスドライバモジュール４１８は、性能またはリソース使用パラメータを監視する性能監視ユニット（ＰＭＵ）モジュール４３０を備えることができる。リソース使用パラメータには、コア４２０により実行されているＯＳおよびアプリケーションによるメモリ使用量、キャッシュ使用量、バス使用量、Ｉ／Ｏ使用量、ならびにＣＰＵ使用量が含まれる。ＰＭＵモジュール４３０は、リソース使用パラメータを、性能プロファイルモジュール４０６に報告することができる。具体的には、ＰＭＵモジュール４３０は、アプリケーションがコア４２０のうちの１つにより実行される際に、各種リソース使用パラメータがそれぞれの所定の閾値をいつ交差する（すなわちそれを超えるかまたは下回る）かを報告することができる。閾値は、プログラム可能であり得る。
【０２８４】
デバイスドライバモジュール４１８は、ハードウェアデバイスの状態を監視する、デバイスタイムアウトおよび状態監視モジュール４３２をさらに備えることができる。デバイスタイムアウトおよび状態監視モジュール４３２は、要求されたタスクを実行するために利用可能な適正リソースの欠落のために、任意のデバイスがアイドル状態であるかまたはタイムアウトするときを、電力制御モジュール４０４に報告する。電力制御モジュール４０４は、電力を節約するために、アイドル状態のハードウェアデバイスを停止することができる。代替として、ハードウェアデバイスが、タイムアウトするのではなく要求されたタスクを完了することにより性能を発揮するように、電力制御モジュール４０４は追加のリソースを動作状態に（すなわち起動を開始）することができる。
【０２８５】
コアプロファイルモジュール４１２、コアシーケンスモジュール４１３、およびコア切り替えモジュール４１４は、コアモーフィングを可能にする。コアプロファイルモジュール４１２は、アプリケーションの履歴または記録に基づき電力／性能要求量を予測または予想することができる。例えば、コアプロファイルモジュール４１２は、データキャッシュミス率、命令キャッシュミス率、および／または、コア４２０のうち動作状態であるものにより実行されているサイクルあたりの命令に基づき、アプリケーションの数百万命令／秒（ＭＩＰＳ）の要求を予測することができる。コアプロファイルモジュール４１２は、性能プロファイルモジュール４０６、アイドルプロファイルモジュール４０８、およびＯＳタスクプロファイルモジュール４１０のうちの少なくとも１つから履歴を受け取ることができる。履歴に基づき、コアプロファイルモジュール４１２は、アプリケーションが要求し得る電力／性能を予測または予想することができる。
【０２８６】
コアプロファイルモジュール４１２は、電力／性能要求量が閾値より大きいまたは小さい値に変化するときにイベントを生成することができる。例えば、コアプロファイルモジュール４１２は、コア使用率またはキャッシュミス率がそれぞれの所定の閾値を超えるときにイベントを生成することができる。イベントは、電力／性能要求量の変化に従いコアを切り替える要求である。さらに、コアプロファイルモジュール４１２は、コア切り替えの頻度を監視し、スラッシング（すなわち、コア４２０の不要な切り替え）を最小限化するためにイベントを生成することができる。例えば、コアプロファイルモジュール４１２は、コア４２０が所定の期間において切り替えられる回数を監視することができる。コアプロファイルモジュール４１２は、数が動的にプログラム可能な閾値を超えるときにイベントを生成することができる。イベントが受け取られると、電力制御モジュール４０４は、そのイベントのみに基づいてコアの切り替えを決定することができる。代替として、電力制御モジュール４０４は、リソース使用率（過去、現在、および推定）を含む受け取ったすべての情報を分析し、コアを切り替えるかどうかを決定することができる。
【０２８７】
時折、電力制御モジュール４０４は、コアプロファイルモジュール４１２に優先して、そのイベントにもかかわらずコアを切り替えないように決定することができる。例えば、モバイルデバイスが電線電力により電力供給され、ＨＰコアが動作状態にあるコアである場合、電力制御モジュール４０４は、性能要件が低いことをイベントが示し得るにもかかわらず、コアを切り替えないようにすることが可能である。代替として、ＨＰコアが動作状態にあるコアであり、アプリケーションが高性能アプリケーションとして指定されている場合、電力制御モジュール４０４は、モバイルデバイスが電線電力により電力供給されておらず、イベントが低電池残量によりＬＰへの切り替えを要求しているにもかかわらず、コアを切り替えないようにすることが可能である。
【０２８８】
図９Ｂにおいて、コアシーケンスモジュール４１３は、周波数変更シーケンス（ＦＣＳ）モジュール４３４、電圧変更シーケンス（ＶＣＳ）モジュール４３６、およびコア変更シーケンス（ＣＣＳ）モジュール４３８を備えることができる。イベントがコアプロファイルモジュール４１２により発信されると、電力制御モジュール４０４は、カーネルＩＯＣＴＬモジュール４２２への３つのコール、すなわちＦＣＳコール、ＶＣＳコール、および／またはＣＣＳコールのうちの少なくとも１つを生成することができる。次いで、カーネルＩＯＣＴＬモジュール４２２は、３つのシーケンス、すなわち周波数変更シーケンス、電圧変更シーケンス、および／またはコア変更シーケンスのうちの少なくとも１つを生成することができる。
【０２８９】
受け取った周波数変更シーケンスに基づき、ＦＣＳモジュール４３４は、動作状態にあるコアのクロック周波数を変更する信号を生成することができる。受け取った電圧変更シーケンスに基づき、ＶＣＳモジュール４３６は、動作状態にあるコアの供給電圧を変更する信号を生成することができる。受け取ったコア変更シーケンスに基づき、ＣＣＳモジュール４３８は、コア４２０を切り替える信号を生成することができる。ＣＣＳモジュール４３８は、周波数および／または電圧変更シーケンスと連動してコア変更シーケンスを開始することができる。コア変更シーケンスは、システムオーバーヘッド、システム待ち時間、およびコア移行時間を減少させる。ここで、ＣＣＳモジュール４３８をより詳細に説明する。
【０２９０】
電力制御モジュール４０４がコアの切り替えを決定すると、ＰＭＳモジュール４０２は、割り込みを無効化し、ハイパーバイザモジュール４１５および／またはコア切り替えモジュール４１４へのシステムコールを生成してコア４２０を切り替える。システムコールに基づき、ＣＣＳモジュール４３８はコールを生成し、ハイパーバイザモジュール４１５および／またはコア切り替えモジュール４１４にコールを出力する。ハイパーバイザモジュール４１５および／またはコア切り替えモジュール４１４は、コア４２０を切り替える。コア４２０が切り替えられた後、ハイパーバイザモジュール４１５および／またはコア切り替えモジュール４１４は、カーネルＩＯＣＴＬモジュール４２２および／またはＯＳサービスモジュール４１６に制御を戻す。続いて、新たに動作状態となったコアが動作を再開し、ＰＭＳモジュール４０２は割り込みを有効化する。
【０２９１】
以下は、ＣＣＳモジュール４３８がコア変更シーケンスを開始することができる場合のいくつかの例である。ＣＣＳモジュール４３８は、ＬＰコアのコア使用率が所定の高閾値以上である場合、コア変更シーケンスを開始してＬＰコアからＨＰコアに切り替えることができる。単なる一例として、所定の高閾値は、８０％または９０％等のパーセンテージであり得る。ＣＣＳモジュール４３８は、ＬＰコアのコア使用率が、所定の期間、所定の高閾値以上である場合、コア変更シーケンスを開始することができる。所定の期間は、短くても長くてもよい。単なる一例として、所定の期間は、２秒、あるいは１０秒であり得る。所定の高閾値および所定の期間は、性能、電力を最適化し、不要である可能性のあるコア切り替えを最小限化するようにプログラムすることができる。
【０２９２】
ＣＣＳモジュール４３８は、ＬＰコアの予測コア使用率が、所定の高閾値以上である場合、コア変更シーケンスを開始することができる。予測コア使用率は、実行されているアプリケーションの種類、および／またはアプリケーションの実行履歴に基づき決定することができる。単なる一例として、ユーザにより高性能が必要とタグ付けされたアプリケーションは、ＬＰコアからＨＰコアへのコア切り替えを開始することができる。
【０２９３】
ＣＣＳモジュール４３８は、ＨＰコアのコア使用率が所定の低閾値以下である場合、コア変更シーケンスを開始してＨＰコアからＬＰコアに切り替えることができる。単なる一例として、所定の低閾値は、５％または１０％等のパーセンテージであり得る。ＣＣＳモジュール４３８は、ＨＰコアのコア使用率が、所定の期間、所定の高閾値以下である場合、コア変更シーケンスを開始することができる。所定の期間は、短くても長くてもよい。単なる一例として、所定の期間は、２秒、あるいは１０秒であり得る。所定の低閾値および所定の期間は、性能、電力を最適化し、不要である可能性のあるコア切り替えを最小限化するようにプログラムすることができる。
【０２９４】
ＣＣＳモジュール４３８は、ＬＰおよびＨＰコアのうちの一方により実行されているアプリケーションの数に基づき、コア変更シーケンスを開始することができる。単なる一例として、実行されているアプリケーションの数が１０以上である場合にはＬＰコアからＨＰコアにコアを切り替え、実行されているアプリケーションの数が１０以下である場合にはＨＰからＬＰにコアを切り替えることができる。ＣＣＳモジュール４３８は、アプリケーションの種類に基づきコア変更シーケンスを開始することができる。単なる一例として、実行されているアプリケーションが高性能を必要とすると指定されている場合、ＬＰコアからＨＰコアにコアを切り替えることができる。最後に、ＣＣＳモジュール４３８は、コアの一方による実行がスケジュールされている命令の種類に基づき、コア変更シーケンスを開始することができる。単なる一例として、ＬＰコアがアプリケーションを実行しており、実行がスケジュールされている命令がＬＰコアではなくＨＰコアにより実行され得る場合、コアをＬＰコアからＨＰコアに切り替えることができる。
【０２９５】
より具体的には、ＣＣＳモジュール４３８は、コア４２０を以下のように切り替える信号を生成することができる。ＣＣＳモジュール４３８がコア変更シーケンスを受信すると、ＣＣＳモジュール４３８は、ハイパーバイザモジュール４１５および／またはコア切り替えモジュール４１４にコールを出力する。コア切り替えモジュール４１４はコア変更シーケンスに従いコア４２０を切り替える。具体的には、コア切り替えモジュール４１４は、動作状態にあるコアの状態を休止状態にあるコアに転送し、動作状態にあるコアと休止状態にあるコア４２０との間のハンドシェーキングを実行し、以下のようにコア切り替えを実行する。
【０２９６】
コア切り替えモジュール４１４は、ＰＭＳモジュール４０２がコア４２０への割り込みを無効化すると、コア切り替えを開始する。コア切り替えモジュール４１４は、ＯＳおよびアプリケーションの実行を一時停止し、コア４２０をＯＳおよびアプリケーションから分離する。コア切り替えモジュール４１４は、コアレジスタ、ＣＰレジスタ、スタックポインタ、プログラムカウンタ、ＰＭＵイベント、およびＭＭＵ構成を含む、動作状態にあるコアの状態を保存することができる。コア切り替えモジュール４１４は、クロック、Ｌ２キャッシュ（例えば休止状態にあるコアがＨＰコアである場合）、および休止状態にあるコアへの電力供給をオンにするか、または増加させることにより、休止状態にあるコアを動作状態にする。
【０２９７】
休止状態にあるコアから受け取ったウェークアップ交換信号に基づき、コア切り替えモジュール４１４は、ウェークアップ信号が休止状態にあるコアに出力された後の所定の時間内に休止状態にあるコアがウェークアップ（すなわち起動）するかどうかを判定する。休止状態にあるコアが所定の時間内に肯定応答しない（すなわちウェークアップまたは起動しない）場合、コア切り替えモジュール４１４は動作状態にあるコアの状態をリロードする。コア切り替えモジュール４１４は、カーネルＩＯＣＴＬモジュール４２２および／またはＯＳサービスモジュール４１６に制御を戻す。動作状態にあるコアは、リロードされた状態に従いアプリケーションの実行を再開し、ＰＭＳモジュール４０２は、動作状態にあるコアへの割り込みを有効化する。
【０２９８】
代わりに、コア切り替えモジュール４１４が所定の時間内に休止状態にあるコアから肯定応答を受け取った場合、コア切り替えモジュール４１４は、それまで動作状態にあったコアの状態を、新たに動作状態となったコアに転送する。コア切り替えモジュール４１４は、それまで動作状態にあったコアの状態を使用して、新たに動作状態となったコアを初期化する。新たに動作状態となったコアが初期化された後、コア切り替えモジュール４１４は、クロック、Ｌ２キャッシュ（例えばそれまで動作状態にあったコアがＨＰコアである場合）、およびそれまで動作状態にあったコアをオフにするか、または電力供給を減少させることにより、それまで動作状態にあったコアを停止して休止状態にする。コア切り替えモジュール４１４は、カーネルＩＯＣＴＬモジュール４２２および／またはＯＳサービスモジュール４１６に制御を戻す。新たに動作状態となったコアは、ロードされた状態に従いアプリケーションの実行を再開する。ＰＭＳモジュール４０２は、動作状態にあるコアへの割り込みを有効化する。したがって、コア切り替えモジュール４１４は、セキュアに、またＯＳおよびアプリケーションから分離してコアを切り替え、コア切り替えをＯＳおよびアプリケーションに対して透過的とする。
【０２９９】
コア切り替えモジュール４１４がＬＰコアからＨＰコアに動作を切り替えると、ＯＳおよびアプリケーションは、増加した周波数および供給電圧で単一のコア上で実行を継続するかのように動作し続ける。一方、コア切り替えモジュール４１４がＨＰコアからＬＰコアに動作を切り替えると、ＯＳおよびアプリケーションは、減少した周波数および供給電圧で単一のコア上で実行を継続するかのように動作し続ける。
【０３００】
コア切り替えモジュール４１４および／またはハイパーバイザモジュール４１５は、グルーロジックモジュール３８０に、コア切り替え中にコア４２０により交換されたハンドシェーキング情報を通信することができる。ハンドシェーキング情報は、コア４２０のうちどれが動作状態にあるか、いつ割り込みが無効化／有効化されるか、等を示す信号を含み得る。ハンドシェーキング信号に基づき、グルーロジックモジュール３８０は、アプリケーションから、コア４２０のうち動作状態にあるものに、割り込みおよび他の信号をルーティングする。
【０３０１】
使用の際、コア１はＬＰコアであり得、コア２はＨＰコアであり得る。モバイルコンピューティングデバイスは、通常、コア１を使用してほとんどのアプリケーションを実行し得る。コア１は、周波数変更シーケンスおよび電圧変更シーケンスによりそれぞれ指定される周波数および電圧のレベルで動作することができる。周波数変更シーケンスは、必要に応じて動作状態にあるコアのクロック周波数を順次増加または減少させる制御信号を含むことができる。電圧変更シーケンスは、必要に応じて動作状態にあるコアの供給電圧を順次増加または減少させる制御信号を含むことができる。
【０３０２】
高性能が必要とされる場合（例えば、コア１の使用率が現在のクロック周波数および供給電圧で最大である場合）、ＦＣＳモジュール４３４は、コア１の最高および／または所望の動作周波数に達するまで、コア１に対し生成された周波数変更シーケンスに基づき、コア１のクロック周波数を周波数範囲内で低から高に変化させることができる。代替として、または追加して、ＶＣＳモジュール４３６は、コア１の最高および／または所望の動作供給電圧に達するまで、コア１に対して生成された電圧変更シーケンスに基づき、コア１の供給電圧を電圧範囲内で低から高に変更することができる。
【０３０３】
さらにより高い性能がアプリケーションにより要求される場合（すなわち、コア１の使用率が最高周波数および電圧で最大である場合）、コア切り替えモジュール４１４がコア切り替えを開始することができる。コア切り替えモジュール４１４は、コア２を動作状態にし、コア１の状態をコア２に引き渡し、コア１を停止するか、他の様式でコア１を休止状態とする。具体的には、コア切り替えモジュール４１４は、コア１を休止状態にしてコア１の状態をコピーすることができる。次いで、コア切り替えモジュール４１４はコア２を起動することができる。起動後コア２が初期化するとき、コア切り替えモジュール４１４は、コア１の状態をコア２に引き渡すことができる。すなわち、コア切り替えモジュール４１４は、コア１の状態を使用してコア２をリセットすることができる。その後、コア切り替えモジュール４１４は、コア１を停止することができる。コア２は、コア１の状態を使用して、コア１が休止状態に入ったところでアプリケーションの実行を再開することができる。ＰＭＳモジュール４０２は、割り込みを有効化することができる。スケジューリングモジュール４２４は、コア１により実行されるはずだったスレッドを、コア２による実行にスケジュールすることができる。
【０３０４】
まず、コア２は、周波数変更シーケンスおよび電圧変更シーケンスによりそれぞれ指定される周波数および電圧のレベルで動作することができる。続いて、ＦＣＳモジュール４３４は、アプリケーションにより要求される性能レベルに従い、周波数範囲内で低から高に、次いで高から低にコア２のクロック周波数を変更することができる。代替として、または追加して、ＶＣＳモジュール４３６は、アプリケーションにより要求される性能レベルに従い、電圧範囲内で低から高に、および高から低にコア２の供給電圧を変化させることができる。ＨＰコアが複数のコア２を備える場合、各追加のコア２は、アプリケーションにより要求される性能レベルが変化し続けるに従い動作状態および休止状態にされ得る。
【０３０５】
アプリケーションにより要求される性能レベルが、コア２が発揮する性能がもはや最適でない、効果的でない、望ましくない、および／または可能ではないレベルまで低下した場合、コア切り替えモジュール４１４はコアを切り替えることができる。コア切り替えモジュール４１４は、コア１を動作状態にし、コア２の状態をコア１に引き渡し、コア２を停止するか、他の様式でコア２を休止状態とする。具体的には、コア切り替えモジュール４１４は、コア２を休止状態にしてコア２の状態をコピーすることができる。次いで、コア切り替えモジュール４１４はコア１を起動することができる。起動後コア１が初期化するとき、コア切り替えモジュール４１４は、コア２の状態をコア１に引き渡すことができる。すなわち、コア切り替えモジュール４１４は、コア１の状態を使用してコア２をリセットすることができる。コア１は、コア２の状態を使用して、コア２が休止状態に入ったところでアプリケーションの実行を再開することができる。ＰＭＳモジュール４０２は、割り込みを有効化することができる。その後、コア切り替えモジュール４１４は、コア２を停止することができる。スケジューリングモジュール４２４は、コア２により実行されるはずだったスレッドを、コア１による実行にスケジュールすることができる。
【０３０６】
ここで図９Ｃを参照すると、例示的なコア切り替えモジュール４１４は、モード切り替えモジュール４１４−１、コア動作化モジュール４１４−２、および状態転送モジュール４１４−３を備えることができる。モード切り替えモジュール４１４−１は、動作がＬＰモードからＨＰモードに、またはＨＰモードからＬＰモードに切り替えられるべき時に制御信号を受信する。コア動作化モジュール４１４−２は、現在動作状態にあるコアへの割り込みが無効化された後、現在動作状態にあるコア（例えばコア１）により実行されているアプリケーションの処理を停止する。コア動作化モジュール４１４−２は、現在休止状態にあるコア（例えばコア２）を動作状態にし、現在休止状態にあるコアが起動するかどうかを監視する。新たに活性化されたコア（例えばコア２）が起動した後、状態転送モジュール４１４−３は、現在動作状態にあるコアの状態を新たに動作状態にされたコアに転送する。新たに動作状態にされたコアは、アプリケーションの命令の実行を再開し、コア動作化モジュール４１４−２は、新たに活性化されたコアへの割り込みを有効化する。コア動作化モジュール４１４−２は、コア１を停止する。
【０３０７】
したがって、コア切り替えモジュール４１４は、コア４２０を動的に切り替えて電力消費を減少させ、モバイルデバイスの動作性能を増加させる。さらに、コア切り替えモジュール４１４は、コア４２０が切り替えられる時に、１つのコアの状態を別のコアにセキュアに分離して受け渡すため、コア４２０の切り替えは、コア４２０上で動作しているＯＳおよびアプリケーションに対して透過的である。したがって、コア４２０は、既存の処理ハードウェアとプラグ互換性を持ち、いかなるハードウェア修正も必要なく既存の処理ハードウェアに置き換わることができる。
【０３０８】
ここで図１０を参照すると、コア切り替えモジュール４１４を使用してコア４２０を切り替えるための方法５００が示されている。制御はステップ５０２から開始する。制御は、ステップ５０４において、コアプロファイルモジュール４１２が（例えば動作状態にあるコアであるコア１から休止状態にあるコアであるコア２に）コア４２０を切り替えるためのイベントを生成したかどうかを判定する。ステップ５０４の結果が偽である場合、制御は、コアプロファイルモジュール４１２がコア４２０を切り替えるためのイベントを生成するまで待機する。ステップ５０４の結果が真である場合、電力制御モジュール４０４は、ステップ５０６において、現在および／または予測リソース使用率に基づきコア４２０が切り替えられ得るかどうかを判定する。ステップ５０６の結果が偽である場合、制御はイベントを無視してステップ５０４に戻る。ステップ５０６の結果が真である場合、制御はステップ５０８に進む。
【０３０９】
制御は、ステップ５０８において、割り込みを無効化する。コア１は、ステップ５１０において、コア１により実行されている任意の保留されている読取り／書込み（Ｒ／Ｗ）コマンドを完了する。制御は、ステップ５１２において、コア切り替えモジュール４１４へのシステム管理割り込み（ＳＭＩ）コールを生成し、コア４２０を切り替える（例えば動作状態にあるコアであるコア１を休止状態にし、休止状態にあるコアであるコア２を動作状態にする）。
【０３１０】
制御は、ステップ５１４において、動作状態にあるコアであるコア１の状態を保存する。制御は、ステップ５１６において、一貫性のためにコア１のＬ１キャッシュを消去する。制御は、ステップ５１８において、休止状態にあるコアであるコア２にイベントを送信する。制御は、ステップ５２０において、コア２が、起動することにより、および動作状態に移行することにより、イベントに対し肯定応答したかどうかを判定する。ステップ５２０の結果が真である場合、制御は、ステップ５２１において、コア１への電力をオフにするか、または他の様式で減少させる。制御は、ステップ５２２において、保存されたコア１の状態をコア２にロードする。コア２は、ステップ５２４において、コア１が中止したところでアプリケーションの実行を再開する。制御は、ステップ５２６において、割り込みを有効化する。制御はステップ５０４に戻る。
【０３１１】
しかしながら、ステップ５２０の結果が偽でる場合（すなわち、コア２がイベントに対し肯定応答せず起動しない場合）、制御は、ステップ５２８において、コア１の状態をコア１にリロードする。コア１は、ステップ５３０において、アプリケーションの実行を再開する。制御は、ステップ５３２において、割り込みを有効化する。制御はステップ５０４に戻る。
【０３１２】
図１１Ａ−１１Ｅに、本開示の教示を組み込んだ様々な例示的実現形態が示されている。図１１Ａにおいて、本開示の教示は、携帯電話８５８のマルチコア制御モジュールにおいて実現され得る。携帯電話８５８は、携帯電話制御モジュール８６０、電源８６２、メモリ８６４、記憶デバイス８６６、および、アンテナを含み得るセルラーネットワークインタフェース８６７を含む。携帯電話８５８は、ネットワークインタフェース８６８、マイクロホン８７０、スピーカおよび／または出力ジャック等の音声出力８７２、ディスプレイ８７４、ならびに、キーパッドおよび／またはポインティングデバイス等のユーザ入力デバイス８７６を含み得る。ネットワークインタフェース８６８が無線ローカルエリアネットワークインタフェースを含む場合、アンテナ８６９が含まれ得る。
【０３１３】
携帯電話制御モジュール８６０は、本開示の教示によるマルチコア制御モジュールを実装し得る。携帯電話制御モジュール８６０は、セルラーネットワークインタフェース８６７、ネットワークインタフェース８６８、マイクロホン８７０、および／またはユーザ入力デバイス８７６からの入力信号を受け取ることができる。携帯電話制御モジュール８６０は、符号化、復号化、フィルタリング、および／またはフォーマッティングを含む信号処理を行い、出力信号を生成することができる。出力信号は、メモリ８６４、記憶デバイス８６６、セルラーネットワークインタフェース８６７、ネットワークインタフェース８６８、および音声出力８７２のうちの１つ以上へ通信され得る。
【０３１４】
メモリ８６４は、ランダムアクセスメモリ（ＲＡＭ）および／または不揮発性メモリを含むことができる。不揮発性メモリは、フラッシュメモリ（ＮＡＮＤおよびＮＯＲフラッシュメモリを含む）、相変化メモリ、磁気ＲＡＭ、ならびに、各メモリセルが２つを超える状態を有する多状態メモリ等、任意の好適な種類の半導体または固体メモリを含み得る。記憶デバイス８６６は、ＤＶＤドライブ等の光学記憶デバイス、および／またはハードディスクドライブ（ＨＤＤ）を含み得る。電源８６２は、携帯電話８５８のコンポーネントに電力を提供する。
【０３１５】
図１１Ｂにおいて、本開示の教示は、無線ハンドセット９５８のマルチコア制御モジュールにおいて実現され得る。無線ハンドセット９５８は、電話制御モジュール９６０、電源９６２、メモリ９６４、記憶デバイス９６６、および、アンテナ（図示せず）を含み得る基地局インタフェース９６７を含む。無線ハンドセット９５８は、マイクロホン９７０、スピーカおよび／または出力ジャック等の音声出力９７２、ディスプレイ９７４、ならびに、キーパッドおよび／またはポインティングデバイス等のユーザ入力デバイス９７６を含み得る。
【０３１６】
ハンドセット制御モジュール９６０は、本開示の教示によるマルチコア制御モジュールを実装し得る。ハンドセット制御モジュール９６０は、基地局インタフェース９６７、ネットワークインタフェース９６８、マイクロホン９７０、および／またはユーザ入力デバイス９７６からの入力信号を受け取ることができる。ハンドセット制御モジュール９６０は、符号化、復号化、フィルタリング、および／またはフォーマッティングを含む信号処理を行い、出力信号を生成することができる。出力信号は、メモリ９６４、記憶デバイス９６６、基地局インタフェース９６７、および音声出力９７２のうちの１つ以上へ通信され得る。
【０３１７】
メモリ９６４は、ランダムアクセスメモリ（ＲＡＭ）および／または不揮発性メモリを含むことができる。不揮発性メモリは、フラッシュメモリ（ＮＡＮＤおよびＮＯＲフラッシュメモリを含む）、相変化メモリ、磁気ＲＡＭ、ならびに、各メモリセルが２つを超える状態を有する多状態メモリ等、任意の好適な種類の半導体または固体メモリを含み得る。記憶デバイス９６６は、ＤＶＤドライブ等の光学記憶デバイス、および／またはハードディスクドライブ（ＨＤＤ）を含み得る。電源９６２は、無線ハンドセット９５８のコンポーネントに電力を提供する。
【０３１８】
図１１Ｃにおいて、本開示の教示は、モバイルデバイス９８９のマルチコア制御モジュールにおいて実現され得る。モバイルデバイス９８９は、モバイルデバイス制御モジュール９９０、電源９９１、メモリ９９２、記憶デバイス９９３、ネットワークインタフェース９９４、および外部インタフェース９９９を備えることができる。ネットワークインタフェース９９４が無線ローカルエリアネットワークインタフェースを含む場合、アンテナ（図示せず）が含まれ得る。
【０３１９】
モバイルデバイス制御モジュール９９０は、本開示の教示によるマルチコア制御モジュールを実装し得る。モバイルデバイス制御モジュール９９０は、ネットワークインタフェース９９４および／または外部インタフェース９９９からの入力信号を受け取ることができる。外部インタフェース９９９は、ＵＳＢ、赤外線、および／またはイーサネット（登録商標）を含み得る。入力信号は、圧縮音声および／またはビデオを含むことができ、またＭＰ３フォーマットと互換性を有し得る。さらに、モバイルデバイス制御モジュール９９０は、キーパッド、タッチパッド、または個々のボタン等のユーザ入力９９６からの入力を受け取ることができる。モバイルデバイス制御モジュール９９０は、符号化、復号化、フィルタリング、および／またはフォーマッティングを含む入力信号処理を行い、出力信号を生成することができる。
【０３２０】
モバイルデバイス制御モジュール９９０は、音声信号を音声出力９９７に、およびビデオ信号をディスプレイ９９８に出力することができる。音声出力９９７は、スピーカおよび／または出力ジャックを含むことができる。ディスプレイ９９８は、メニュー、アイコン等を含み得るグラフィカルユーザインタフェースを提示することができる。電源９９１は、モバイルデバイス９８９のコンポーネントに電力を提供する。メモリ９９２は、ランダムアクセスメモリ（ＲＡＭ）および／または不揮発性メモリを含むことができる。
【０３２１】
不揮発性メモリは、フラッシュメモリ（ＮＡＮＤおよびＮＯＲフラッシュメモリを含む）、相変化メモリ、磁気ＲＡＭ、ならびに、各メモリセルが２つを超える状態を有する多状態メモリ等、任意の好適な種類の半導体または固体メモリを含み得る。記憶デバイス９９３は、ＤＶＤドライブ等の光学記憶デバイス、および／またはハードディスクドライブ（ＨＤＤ）を含み得る。モバイルデバイスは、携帯情報端末、メディアプレーヤ、ラップトップ型コンピュータ、ゲーム機、または他のモバイルコンピューティングデバイスを含み得る。
【０３２２】
図１１Ｄにおいて、本開示の教示は、グローバルポジショニングシステム（ＧＰＳ）１０８９のマルチコア制御モジュールにおいて実現され得る。ＧＰＳ１０８９は、ＧＰＳ制御モジュール１０９０、電源１０９１、メモリ１０９２、記憶デバイス１０９３、および外部インタフェース１０９９を含むことができる。
【０３２３】
ＧＰＳ制御モジュール１０９０は、本開示の教示によるマルチコア制御モジュールを実装し得る。ＧＰＳ制御モジュール１０９０は、外部インタフェース１０９９からの入力信号を受け取ることができる。外部インタフェース１０９９は、無線信号、ＵＳＢ、赤外線、および／またはイーサネット（登録商標）を含み得る。入力信号は、圧縮音声および／またはビデオを含むことができ、またＭＰ３フォーマットと互換性を有し得る。さらに、ＧＰＳ制御モジュール１０９０は、キーパッド、タッチパッド、または個々のボタン等のユーザ入力１０９６からの入力を受け取ることができる。ＧＰＳ制御モジュール１０９０は、符号化、復号化、フィルタリング、および／またはフォーマッティングを含む入力信号処理を行い、出力信号を生成することができる。
【０３２４】
ＧＰＳ制御モジュール１０９０は、音声信号を音声出力１０９７に、およびビデオ信号をディスプレイ１０９８に出力することができる。音声出力１０９７は、スピーカおよび／または出力ジャックを含むことができる。ディスプレイ１０９８は、メニュー、アイコン等を含み得るグラフィカルユーザインタフェースを提示することができる。電源１０９１は、モバイルデバイス１０８９のコンポーネントに電力を提供する。メモリ１０９２は、ランダムアクセスメモリ（ＲＡＭ）および／または不揮発性メモリを含むことができる。
【０３２５】
不揮発性メモリは、フラッシュメモリ（ＮＡＮＤおよびＮＯＲフラッシュメモリを含む）、相変化メモリ、磁気ＲＡＭ、ならびに、各メモリセルが２つを超える状態を有する多状態メモリ等、任意の好適な種類の半導体または固体メモリを含み得る。記憶デバイス１０９３は、ＤＶＤドライブ等の光学記憶デバイス、および／またはハードディスクドライブ（ＨＤＤ）を含み得る。モバイルデバイスは、携帯情報端末、メディアプレーヤ、ラップトップ型コンピュータ、ゲーム機、または他のモバイルコンピューティングデバイスを含み得る。
【０３２６】
図１１Ｅにおいて、本開示の教示は、デスクトップ型コンピュータおよび／またはサーバ１１００のマルチコア制御モジュール１１０３において実現され得る。デスクトップ型コンピュータおよび／またはサーバ１１００は、マルチコア制御モジュール１１０３を含むマルチコア処理システム１１０２を備えることができる。デスクトップ型コンピュータおよび／またはサーバ１１００は、Ｉ／Ｏコア１１０４、メモリ１１０６、およびＩ／Ｏデバイス１１０８をさらに備えることができる。デスクトップ型コンピュータおよび／またはサーバ１１００は、電源１１１２により電力供給され得る。
【０３２７】
マルチコア処理システム１１０２、Ｉ／Ｏコア１１０４、およびメモリ１１０６は、システムバス１１１０を介して通信することができる。Ｉ／Ｏデバイス１１０８は、ハードディスクドライブ（ＨＤＤ）、コンパクトディスク（ＣＤ）ドライブ、デジタル多用途ディスク（ＤＶＤ）ドライブ、ディスプレイ、キーボード、および他のＩ／Ｏデバイスを含むことができる。Ｉ／Ｏコア１１０４は、Ｉ／Ｏデバイス１１０８を制御するＩ／Ｏコントローラを備えることができる。マルチコア処理システム１１０２は、オペレーティングシステム（ＯＳ）、ならびにＨＤＤ、ＣＤドライブ、および／またはＤＶＤドライブに記憶されたアプリケーションを実行することができる。マルチコア制御モジュール１１０３は、マルチコア処理システム１１０２がアプリケーションを実行する際、向上した省力化および向上した性能を提供することができる。
【０３２８】
ここで、当業者は、上記説明から、本開示の幅広い教示が様々な形態で実現され得ることを理解することができる。したがって、本開示は具体的な実施例を含むが、当業者には、図面、明細書および以下の特許請求の範囲を吟味すれば他の修正が明らかとなるため、本開示の真の範囲はそのように制限されるべきではない。
【図１Ａ】
2010538371.tif 000003
【図１Ｂ】
2010538371.tif 000004
【図２】
2010538371.tif 000005
【図３Ａ】
2010538371.tif 000006
【図３Ｂ】
2010538371.tif 000007
【図３Ｃ】
2010538371.tif 000008
【図３Ｄ】
2010538371.tif 000009
【図４】
2010538371.tif 000010
【図５】
2010538371.tif 000011
【図６】
2010538371.tif 000012
【図７】
2010538371.tif 000013
【図８Ａ】
2010538371.tif 000014
【図８Ｂ】
2010538371.tif 000015
【図９Ａ】
2010538371.tif 000016
【図９Ｂ】
2010538371.tif 000017
【図９Ｃ】
2010538371.tif 000018
【図１０】
2010538371.tif 000019
【図１１Ａ】
2010538371.tif 000020
【図１１Ｂ】
2010538371.tif 000021
【図１１Ｃ】
2010538371.tif 000022
【図１１Ｄ】
2010538371.tif 000023
【図１１Ｅ】
2010538371.tif 000024
【国際調査報告】
2010538371.tif 000025
2010538371.tif 000026