JP5257711B2 - 動的コア切り替え - Google Patents

動的コア切り替え Download PDF

Info

Publication number
JP5257711B2
JP5257711B2 JP2010523107A JP2010523107A JP5257711B2 JP 5257711 B2 JP5257711 B2 JP 5257711B2 JP 2010523107 A JP2010523107 A JP 2010523107A JP 2010523107 A JP2010523107 A JP 2010523107A JP 5257711 B2 JP5257711 B2 JP 5257711B2
Authority
JP
Japan
Prior art keywords
core
asymmetric
module
application
mode
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010523107A
Other languages
English (en)
Other versions
JP2010538371A5 (ja
JP2010538371A (ja
Inventor
スタルジャ、サハット
チェン、ホン−イ
サカルダ、プレマナンド
エヌ. フラートン、マーク
ヒーブ、ジェイ
Original Assignee
マーベル ワールド トレード リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by マーベル ワールド トレード リミテッド filed Critical マーベル ワールド トレード リミテッド
Publication of JP2010538371A publication Critical patent/JP2010538371A/ja
Publication of JP2010538371A5 publication Critical patent/JP2010538371A5/ja
Application granted granted Critical
Publication of JP5257711B2 publication Critical patent/JP5257711B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Power Sources (AREA)
  • Telephone Function (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

関連出願の相互参照
本出願は、2008年6月25日出願の米国特許出願第12/145,660号、2007年8月27日出願の米国仮特許出願第60/968,143号、2007年10月10日出願の米国仮特許出願第60/978,936号、2007年10月22日出願の米国仮特許出願第60/981,606号、2008年1月21日出願の米国仮特許出願第61/022,431号、2008年2月18日出願の米国仮特許出願第61/029,476号、2008年5月1日出願の米国仮特許出願第61/049,641号、および2008年6月2日出願の米国仮特許出願第61/058,050号の優先権を主張する。本出願は、2006年9月12日出願の米国仮特許出願第60/825,368号、2006年8月24日出願の米国仮特許出願第60/823,453号、および2006年8月10日出願の米国仮特許出願第60/822,015号の利益を主張する、2006年9月20日出願の米国特許出願第11/523,996号の一部継続出願である。上記出願の開示は、参照することにより本明細書にその全内容が組み入れられる。
本出願は、モバイルコンピューティングデバイスに関し、より具体的には、モバイルコンピューティングデバイスのマルチコア処理システムのコアの動的な切り替えに関する。
本明細書に記載される背景的な説明は、開示の前後関係を概略的に提示することを目的としている。現在示されている発明者の研究は、この背景の項、および、その他出願の時点で先行技術として認定されない可能性のある説明の態様で説明されている範囲において、本開示に対する先行技術として明示的にも暗示的にも認められるものではない。
携帯電話、MP3プレーヤ、グローバルポジショニングシステム(GPS)デバイス等のモバイルコンピューティングデバイスは、典型的には、電線電力および電池電力の両方を使用して電力供給される。モバイルコンピューティングデバイスは、典型的には、プロセッサ、メモリおよびディスプレイを含み、それらは、動作中電力を消費する。プロセッサは、一般に、より処理集中的でない単純なアプリケーション、およびより処理集中的な複雑なアプリケーションの両方を実行する。したがって、処理速度等のプロセッサの能力は、典型的には、実行される最も処理集中的なアプリケーションの性能要件に適合するように選択される。
モバイルコンピューティングデバイスの1つの大きな制限は、充電することなく電池を使用してデバイスが動作可能な時間に関連する。処理集中的アプリケーションの性能要件に適合する高速プロセッサの使用は、一般に電力消費を増加させ、これは比較的短い電池寿命となる。
図1Aおよび1Bを参照すると、デスクトップ型およびラップトップ型コンピュータは、複数のプロセッサ集積回路(IC)、または複数のコアを備える単一のプロセッサICを使用する。これらのシステムは、異なる種類のものであり得る。本明細書において使用される場合、プロセッサという用語は、1つ以上の処理コアを備えるICを指すために使用される。マルチコアプロセッサは、2つ以上の処理コアを備えるIC、システムオンチップ(SOC)、またはシステムインパッケージ(SIP)を指す。
図1Aにおいて、主プロセッサ2および1つ以上の副プロセッサ3を備える非対称マルチプロセッサ(MP)システム1が示されている。非対称MPシステム1はまた、主コアおよび副コアを備える単一のICまたはSOCとして実現することができる。主プロセッサ2は、副プロセッサ3とは異なる命令セットアーキテクチャ(ISA)を有する。オペレーティングシステム(OS)は、主プロセッサ2上で動作することができる。アプリケーションは、副プロセッサ3上で動作することができる。副プロセッサ3は、OSのスレッドを実行せず、OSスケジューラに不可視となり得る。リアルタイムOS(RTOS)に対するOSドライバインタフェースは、副プロセッサ3上で動作することができる。省力化および主プロセッサ2のデューティサイクルの低減のために、主要な機能を副プロセッサ3にオフロードすることができる。単なる一例として、非対称MPシステム1は、特殊目的の処理(例えば、ビデオ、3Dグラフィック等)に使用することができる。副プロセッサ3は、アプリケーションが実行されるとき、主プロセッサ2に加えて追加的に動作し得るため、非対称MPシステム1は、大量の電力を消費し得る。
図1Bにおいて、対称MPシステム5は、N個の同一プロセッサを備えることができ、Nは1より大きい整数である。対称MPシステム5もまた、N個の同一コアを備える単一のICまたはSOCとして実現することができる。Nは、MPシステム5の処理負荷に比例し得る。N個のプロセッサは、同じISAを使用する。N個のプロセッサは、OSスケジューラに可視となり得る。N個のプロセッサは、メモリおよび入力/出力(I/O)を含むシステムリソースへの透過的なアクセスを有することができる。処理負荷に依存して、N個のプロセッサのうちの1つ以上を使用してアプリケーションを実行することができる。対称MPシステム5の高コストおよび高電力消費は、このアーキテクチャを、より低コストのモバイルデバイスには不適切とする傾向がある。
システムは、第1の非対称コア、第2の非対称コア、およびコア切り替えモジュールを備える。第1の非対称コアは、システムが第1のモードで動作するときにアプリケーションを実行し、システムが第2のモードで動作するときに休止する。第2の非対称コアは、システムが第2のモードで動作しているときにアプリケーションを実行する。コア切り替えモジュールは、第1のモードと第2のモードとの間でシステムの動作を切り替える。コア切り替えモジュールは、第1の制御信号を受信した後、第1の非対称コアによるアプリケーションの処理を選択的に停止する。コア切り替えモジュールは、第1の非対称コアの第1の状態を、第2の非対称コアに転送する。第2の非対称コアは、第2のモードにおいて、アプリケーションの実行を再開する。
別の特徴において、第1の制御信号は、割り込みが無効であることを示す。
別の特徴において、第2のモード中、第2の非対称コアがアプリケーションの実行を再開するときに、第2の非対称コアは命令翻訳なしに命令を実行する。
他の特徴において、該システムは、アプリケーションにサービスを提供するオペレーティングシステム(OS)をさらに備える。コア切り替えモジュールは、第1の非対称コアと第2の非対称コアとの間で、OSに対して透過的にアプリケーションの実行を切り替える。
他の特徴において、第1の非対称コアの第1の最大速度は、第2の非対称コアの第2の最大速度より大きい。第1の非対称コアは、所定の周波数より高い周波数で動作する。第2の非対称コアは、所定の周波数より低い周波数で動作する。第1の非対称コアの第1の最大動作電力レベルは、第2の非対称コアの第2の最大動作電力レベルより大きい。
他の特徴において、第1の非対称コアは、第1の命令セットアーキテクチャ(ISA)を使用する。第2の非対称コアは、第2のISAを使用する。第1のISAは、第2のISAと互換性を有する。第1のISAの命令の第1のセットは、第2のISAの命令の第2のセットのスーパーセットである。第1のセットは、第2のセットより多くの命令を含む。
別の特徴において、OSは、カーネルを備える。コア切り替えモジュールは、カーネルのレベルより高位で実行される。
他の特徴において、該システムは、ハイパーバイザモジュールをさらに備える。コア切り替えモジュールは、ハイパーバイザモジュールと統合される。
他の特徴において、コア切り替えモジュールは、コア切り替えモジュールが第1の非対称コアによるアプリケーションの処理を選択的に停止するときに、第1の状態を保存する。コア切り替えモジュールは、第2の非対称コアを起動し、第1の状態を使用して第2の非対称コアを初期化する。割り込みは、第2の非対称コアがアプリケーションの実行を再開した後に有効化される。コア切り替えモジュールは、第2の非対称コアが起動したときに第1の非対称コアを停止する。第1の非対称コアが停止した後は、第1の非対称コアに電力が供給されないか、または待機電力が供給される。
他の特徴において、該システムは、第1の非対称コアと通信するレベル2(L2)キャッシュをさらに備える。第1の非対称コアが停止した後は、L2キャッシュに電力が供給されないか、または待機電力が供給される。
他の特徴において、コア切り替えモジュールは、第2の非対称コアが起動できなかったときに第1の状態を使用して第1の非対称コアを初期化する。第1の非対称コアは、第1のモードにおいて、アプリケーションの実行を再開し、割り込みが有効化される。
他の特徴において、コア切り替えモジュールは、第2のモードと第1のモードとの間でシステムの動作を切り替える。コア切り替えモジュールは、第1の制御信号を受信した後、第2の非対称コアによるアプリケーションの処理を選択的に停止する。コア切り替えモジュールは、第2の非対称コアの第2の状態を、第1の非対称コアに転送する。第1の非対称コアは、第1のモードにおいて、アプリケーションの実行を再開する。第1の制御信号は、割り込みが無効であることを示す。
別の特徴において、第1のモード中、第1の非対称コアがアプリケーションの実行を再開するときに、命令翻訳なしに命令が実行される。
他の特徴において、該システムは、アプリケーションにサービスを提供するオペレーティングシステム(OS)をさらに備える。コア切り替えモジュールは、第2の非対称コアと第1の非対称コアとの間で、OSに対して透過的にアプリケーションの実行を切り替える。
他の特徴において、コア切り替えモジュールは、コア切り替えモジュールが第2の非対称コアによるアプリケーションの処理を選択的に停止するときに、第2の状態を保存する。コア切り替えモジュールは、第1の非対称コアを起動し、第2の状態を使用して第1の非対称コアを初期化する。割り込みは、第1の非対称コアがアプリケーションの実行を再開した後に有効化される。
他の特徴において、該システムは、第1の非対称コアと通信するレベル2(L2)キャッシュをさらに備える。第1の非対称コアが起動した後に、L2キャッシュに電力が供給される。
他の特徴において、コア切り替えモジュールは、第1の非対称コアが起動したときに第2の非対称コアを停止する。第2の非対称コアが停止した後は、第2の非対称コアに電力が供給されないか、または待機電力が供給される。
他の特徴において、コア切り替えモジュールは、第1の非対称コアが起動できなかったときに第2の状態を使用して第2の非対称コアを初期化する。第2の非対称コアは、第2のモードにおいて、アプリケーションの実行を再開し、割り込みが有効化される。
別の特徴において、該システムは、アプリケーションのコア使用率、リソース使用率、および動作性能のうちの少なくとも1つに基づき第2の制御信号を生成するコアプロファイルモジュールをさらに備える。
他の特徴において、該システムは、第2の制御信号に基づきコア変更シーケンス(CCS)を開始するCCSモジュールをさらに備える。コア切り替えモジュールは、CCSに基づき、第1および第2の非対称コアのうちの一方と、第1および第2の非対称コアのうちの他方との間でアプリケーションの実行を切り替える。
他の特徴において、CCSモジュールは、アプリケーションによる第2の非対称コアのコア使用率が、第1の所定の閾値以上である場合、CCSを開始する。CCSモジュールは、アプリケーションによる第2の非対称コアのコア使用率が、第1の所定の期間、第2の所定の閾値以上である場合、CCSを開始する。CCSモジュールは、第2の非対称コアの予想コア使用率が、第3の所定の閾値以上である場合、CCSを開始する。予想コア使用率は、アプリケーションの種類およびアプリケーションの実行の履歴のうちの少なくとも1つに基づき決定される。CCSモジュールは、アプリケーションによる第1の非対称コアのコア使用率が、第4の所定の閾値以下である場合、CCSを開始する。CCSモジュールは、アプリケーションによる第1の非対称コアのコア使用率が、第2の所定の期間、第5の所定の閾値以下である場合、CCSを開始する。
別の特徴において、CCSモジュールは、アプリケーションの種類、アプリケーションの数、ならびに第1および第2の非対称コアのうちの一方により実行される命令の種類のうちの少なくとも1つに基づき、前記CCSを開始する。
別の特徴において、コアプロファイルモジュールは、第1および第2の非対称コアのうちの一方と、第1および第2の非対称コアのうちの他方との間でアプリケーションの実行が切り替えられる回数に基づき、第2の制御信号を生成する。
他の特徴において、該システムは、システムの電力消費を制御し、第2の制御信号および電力消費に基づき第3の制御信号を生成する、電力制御モジュールをさらに備える。システムは、第3の制御信号に基づきコア変更シーケンス(CCS)を開始するCCSモジュールをさらに備える。コア切り替えモジュールは、CCSに基づき、第1および第2の非対称コアのうちの一方と、第1および第2の非対称コアのうちの他方との間でアプリケーションの実行を切り替える。
別の特徴において、該システムは、第2の制御信号に基づき周波数変更シーケンス(FCS)を開始し、FCSに基づき第1および第2の非対称コアのうちの少なくとも1つの動作周波数を選択する、FCSモジュールをさらに備える。
別の特徴において、該システムは、第2の制御信号に基づき電圧変更シーケンス(VCS)を開始し、VCSに基づき第1および第2の非対称コアのうちの少なくとも1つの供給電圧を選択する、VCSモジュールをさらに備える。
別の特徴において、該システムは、システムが第1のモードと第2のモードとの間で動作を切り替えるときに割り込みを無効化し、システムが第2のモードと第1のモードとの間で動作を切り替えるときに割り込みを無効化する、電力管理モジュールをさらに備える。
他の特徴において、該システムは、複数の第1の非対称コアをさらに備える。コア切り替えモジュールは、システムが第1のモードで動作するときに、CCSに基づき、複数の第1の非対称コアのうちの2つ以上を選択的に動作状態および休止状態にする。
別の特徴において、該システムは、コア切り替えモジュールと選択的に通信し、割り込みを受信し、アプリケーションから第1の信号を受信し、割り込みおよび第1の信号を、コア切り替えモジュールにより動作状態にされた第1および第2の非対称コアのうちの一方にルーティングする、グルーロジックモジュールをさらに備える。
別の特徴において、システムオンチップ(SOC)が、システムを備える。
別の特徴において、システムインパッケージ(SIP)が、システムを備える。
さらに他の特徴において、方法は、第1のモードで動作するときに第1の非対称コアを使用してアプリケーションを実行するステップを含む。第1の非対称コアは、第2のモードで動作するときに休止している。該方法は、コア切り替えモジュールを使用して、第1のモードと第2のモードとの間で動作を切り替えるステップをさらに含む。該方法は、第1の制御信号を受信した後、コア切り替えモジュールを使用して第1の非対称コアによるアプリケーションの処理を選択的に停止するステップをさらに含む。該方法は、コア切り替えモジュールを使用して、第1の非対称コアの第1の状態を第2の非対称コアに転送するステップと、第2の非対称コアを使用して、第2のモードにおいてアプリケーションの実行を再開するステップとをさらに含む。
別の特徴において、該方法は、割り込みを無効化するステップと、第1の制御信号を介して割り込みが無効であることを示すステップとをさらに含む。
別の特徴において、該方法は、第2のモード中、第2の非対称コアがアプリケーションの実行を再開するときに、命令翻訳なしに命令を実行するステップをさらに含む。
別の特徴において、該方法は、オペレーティングシステム(OS)を介してアプリケーションにサービスを提供するステップと、コア切り替えモジュールを使用して、第1の非対称コアと第2の非対称コアとの間で、OSに対して透過的にアプリケーションの実行を切り替えるステップとをさらに含む。
他の特徴において、該方法は、第1の最大速度で第1の非対称コアを選択的に動作させるステップと、第2の最大速度で第2の非対称コアを選択的に動作させるステップとをさらに含む。第1の最大速度は、第2の最大速度よりも大きい。該方法は、第1の最大動作電力レベルで第1の非対称コアを選択的に動作させるステップと、第2の最大動作電力レベルで第2の非対称コアを選択的に動作させるステップとをさらに含む。第1の最大動作電力レベルは、第2の最大動作電力レベルよりも大きい。該方法は、所定の周波数より高い周波数で第1の非対称コアを選択的に動作させるステップと、所定の周波数より低い周波数で第2の非対称コアを選択的に動作させるステップとをさらに含む。
他の特徴において、該方法は、第1の命令セットアーキテクチャ(ISA)を使用して第1の非対称コアを動作させるステップと、第2のISAを使用して第2の非対称コアを動作させるステップとをさらに含む。第1のISAは、第2のISAと互換性を有する。該方法は、第1のISAの命令の第1のセットを使用して第1の非対称コアを動作させるステップと、第2のISAの命令の第2のセットを使用して第2の非対称コアを動作させるステップとをさらに含む。第1のセットは、第2のセットのスーパーセットである。第1のセットは、第2のセットより多くの命令を含む。
別の特徴において、該方法は、OSのカーネルを提供するステップと、カーネルのレベルより高位でコア切り替えモジュールを実行するステップとをさらに含む。
別の特徴において、該方法は、ハイパーバイザモジュールを提供するステップと、コア切り替えモジュールをハイパーバイザモジュールと統合するステップとをさらに含む。
他の特徴において、該方法は、コア切り替えモジュールが第1の非対称コアによるアプリケーションの処理を選択的に停止するときに、第1の状態を保存するステップをさらに含む。該方法は、第2の非対称コアを起動するステップと、第1の状態を使用して第2の非対称コアを初期化するステップとをさらに含む。該方法は、第2の非対称コアがアプリケーションの実行を再開した後に割り込みを有効化するステップをさらに含む。該方法は、第2の非対称コアが起動したときに第1の非対称コアを停止するステップと、第1の非対称コアが停止した後は、第1の非対称コアに電力を供給しないか、または待機電力を供給するステップとをさらに含む。
他の特徴において、該方法は、レベル2(L2)キャッシュを提供するステップをさらに含む。第1の非対称コアは、第1の非対称コアが動作状態であるときにL2キャッシュと通信する。該方法は、第1の非対称コアが停止した後は、L2キャッシュに電力を供給しないか、または待機電力を供給するステップをさらに含む。
別の特徴において、該方法は、第2の非対称コアが起動できなかったときに第1の状態を使用して第1の非対称コアを初期化するステップと、第1のモードにおいて第1の非対称コアを使用してアプリケーションの実行を再開するステップと、割り込みを有効化するステップとをさらに含む。
別の特徴において、該方法は、コア切り替えモジュールを使用して、第2のモードと第1のモードとの間で動作を切り替えるステップと、割り込みが無効であることを示す第1の制御信号を受信した後に、コア切り替えモジュールを使用して、第2の非対称コアによるアプリケーションの処理を選択的に停止するステップと、コア切り替えモジュールを使用して、第2の非対称コアの第2の状態を第1の非対称コアに転送するステップと、第1の非対称コアを使用して第1のモードにおいてアプリケーションの実行を再開するステップとをさらに含む。
別の特徴において、該方法は、第1のモード中、第1の非対称コアがアプリケーションの実行を再開するときに、命令翻訳なしに命令を実行するステップをさらに含む。
別の特徴において、該方法は、オペレーティングシステム(OS)を介してアプリケーションにサービスを提供するステップと、コア切り替えモジュールを使用して、第2の非対称コアと第1の非対称コアとの間で、OSに対して透過的にアプリケーションの実行を切り替えるステップとをさらに含む。
他の特徴において、該方法は、コア切り替えモジュールが第2の非対称コアによるアプリケーションの処理を選択的に停止するときに、第2の状態を保存するステップをさらに含む。該方法は、第1の非対称コアを起動するステップと、第2の状態を使用して第1の非対称コアを初期化するステップとをさらに含む。該方法は、第1の非対称コアがアプリケーションの実行を再開した後に割り込みを有効化するステップをさらに含む。
他の特徴において、該方法は、レベル2(L2)キャッシュを提供するステップをさらに含む。第1の非対称コアは、第1の非対称コアが動作状態であるときにL2キャッシュと通信する。該方法は、第1の非対称コアが起動した後に、L2キャッシュに電力を供給するステップをさらに含む。
他の特徴において、該方法は、第1の非対称コアが起動したときに第2の非対称コアを停止するステップと、第2の非対称コアが停止した後は、第2の非対称コアに電力を供給しないか、または待機電力を供給するステップとをさらに含む。
別の特徴において、該方法は、第1の非対称コアが起動できなかったときに第2の状態を使用して第2の非対称コアを初期化するステップと、第2のモードにおいて第2の非対称コアを使用してアプリケーションの実行を再開するステップと、割り込みを有効化するステップとをさらに含む。
別の特徴において、該方法は、アプリケーションのコア使用率、リソース使用率、および動作性能のうちの少なくとも1つに基づき第2の制御信号を生成するステップをさらに含む。
別の特徴において、該方法は、第2の制御信号に基づきコア変更シーケンス(CCS)を開始するステップと、コア切り替えモジュールを使用して、CCSに基づき、第1および第2の非対称コアのうちの一方と、第1および第2の非対称コアのうちの他方との間でアプリケーションの実行を切り替えるステップとをさらに含む。
他の特徴において、該方法は、アプリケーションによる第2の非対称コアのコア使用率が、第1の所定の閾値以上である場合、CCSを開始するステップをさらに含む。該方法は、アプリケーションによる第2の非対称コアのコア使用率が、第1の所定の期間、第2の所定の閾値以上である場合、CCSを開始するステップをさらに含む。該方法は、アプリケーションによる第1の非対称コアのコア使用率が、第3の所定の閾値以下である場合、CCSを開始するステップをさらに含む。該方法は、アプリケーションによる第1の非対称コアのコア使用率が、第1の所定の期間、第4の所定の閾値以下である場合、CCSを開始するステップをさらに含む。
別の特徴において、該方法は、アプリケーションの種類およびアプリケーションの実行の履歴のうちの少なくとも1つに基づき予測コア使用率を決定するステップと、第2の非対称コアの予測コア使用率が所定の閾値以上である場合、CCSを開始するステップとをさらに含む。
別の特徴において、該方法は、第1および第2の非対称コアのうちの一方により実行されるアプリケーションの数、第1および第2の非対称コアのうちの一方により実行されるアプリケーションの種類、ならびに第1および第2の非対称コアのうちの一方により実行される命令の種類のうちの少なくとも1つに基づき、CCSを開始するステップをさらに含む。
別の特徴において、該方法は、第1および第2の非対称コアのうちの一方と、第1および第2の非対称コアのうちの他方との間でアプリケーションの実行が切り替えられる回数に基づき、第2の制御信号を生成するステップをさらに含む。
別の特徴において、該方法は、電力消費を制御するステップと、第2の制御信号および電力消費に基づき第3の制御信号を生成するステップと、第3の制御信号に基づきコア変更シーケンス(CCS)を開始するステップと、コア切り替えモジュールを使用して、CCSに基づき、第1および第2の非対称コアのうちの一方と、第1および第2の非対称コアのうちの他方との間でアプリケーションの実行を切り替えるステップとをさらに含む。
別の特徴において、該方法は、第2の制御信号に基づき周波数変更シーケンス(FCS)を開始するステップと、FCSに基づき第1および第2の非対称コアのうちの少なくとも1つの動作周波数を選択するステップとをさらに含む。
別の特徴において、該方法は、第2の制御信号に基づき電圧変更シーケンス(VCS)を開始するステップと、VCSに基づき第1および第2の非対称コアのうちの少なくとも1つの供給電圧を選択するステップとをさらに含む。
別の特徴において、該方法は、複数の第1の非対称コアを提供するステップと、コア切り替えモジュールを使用して、第1のモードで動作するときに、CCSに基づき、複数の第1の非対称コアのうちの2つ以上を選択的に動作状態および休止状態にするステップをさらに含む。
別の特徴において、該方法は、グルーロジックモジュールを提供するステップと、グルーロジックモジュールを使用してコア切り替えモジュールと選択的に通信するステップと、グルーロジックモジュールを介して割り込みを受信するステップと、グルーロジックモジュールを介してアプリケーションから第1の信号を受信するステップと、グルーロジックモジュールを使用して、割り込みおよび第1の信号を、コア切り替えモジュールにより動作状態にされた第1および第2の非対称コアのうちの一方にルーティングするステップとをさらに含む。
別の特徴において、該方法は、第1および第2の非対称コアならびにコア切り替えモジュールを、システムオンチップ(SOC)およびシステムインパッケージ(SIP)のうちの一方において提供するステップをさらに含む。
さらに他の特徴において、システムは、システムが第1のモードで動作するときにアプリケーションを実行するための第1のコア手段を備える。第1の非対称コア手段は、システムが第2のモードで動作するときに休止している。システムは、システムが第2のモードで動作するときにアプリケーションを実行するための第2の非対称コア手段をさらに備える。システムは、第1のモードと第2のモードとの間で動作を切り替えるためのコア切り替え手段をさらに備える。コア切り替え手段は、第1の制御信号を受信した後、第1の非対称コア手段によるアプリケーションの処理を選択的に停止する。コア切り替え手段は、第1の非対称コア手段の第1の状態を、第2の非対称コア手段に転送する。第2の非対称コア手段は、第2のモードにおいて、アプリケーションの実行を再開する。
別の特徴において、第1の制御信号は、割り込みが無効であることを示す。
別の特徴において、第2のモード中、第2の非対称コア手段がアプリケーションの実行を再開するときに、第2の非対称コア手段は命令翻訳なしに命令を実行する。
他の特徴において、該システムは、アプリケーションにサービスを提供するオペレーティングシステム(OS)をさらに備える。コア切り替えモジュールは、第1の非対称コア手段と第2の非対称コア手段との間で、OSに対して透過的にアプリケーションの実行を切り替える。
他の特徴において、第1の非対称コア手段の第1の最大速度は、第2の非対称コア手段の第2の最大速度より大きい。第1の非対称コア手段は、所定の周波数より高い周波数で動作する。第2の非対称コア手段は、所定の周波数より低い周波数で動作する。第1の非対称コア手段の第1の最大動作電力レベルは、第2の非対称コア手段の第2の最大動作電力レベルより大きい。
他の特徴において、第1の非対称コア手段は、第1の命令セットアーキテクチャ(ISA)を使用する。第2の非対称コア手段は、第2のISAを使用する。第1のISAは、第2のISAと互換性を有する。第1のISAの命令の第1のセットは、第2のISAの命令の第2のセットのスーパーセットである。第1のセットは、第2のセットより多くの命令を含む。
別の特徴において、OSは、カーネルを備える。コア切り替え手段は、カーネルのレベルより高位で実行される。
他の特徴において、該システムは、コアを切り替えるためのハイパーバイザ手段をさらに備える。コア切り替え手段は、ハイパーバイザ手段と統合される。
他の特徴において、コア切り替え手段は、コア切り替え手段が第1の非対称コア手段によるアプリケーションの処理を選択的に停止するときに、第1の状態を保存する。コア切り替え手段は、第2の非対称コア手段を起動し、第1の状態を使用して第2の非対称コア手段を初期化する。割り込みは、第2の非対称コア手段がアプリケーションの実行を再開した後に有効化される。コア切り替え手段は、第2の非対称コア手段が起動したときに第1の非対称コア手段を停止する。第1の非対称コア手段が停止した後は、第1の非対称コア手段に電力が供給されないか、または待機電力が供給される。
他の特徴において、該システムは、第1の非対称コア手段の命令およびデータをキャッシュするためのレベル2(L2)キャッシュ手段をさらに備える。第1の非対称コア手段が停止した後は、L2キャッシュ手段に電力が供給されないか、または待機電力が供給される。
他の特徴において、コア切り替え手段は、第2の非対称コア手段が起動できなかったときに第1の状態を使用して第1の非対称コア手段を初期化する。第1の非対称コア手段は、第1のモードにおいて、アプリケーションの実行を再開し、割り込みが有効化される。
他の特徴において、コア切り替え手段は、第2のモードと第1のモードとの間でシステムの動作を切り替える。コア切り替え手段は、割り込みが無効であることを示す第1の制御信号を受信した後、第2の非対称コア手段によるアプリケーションの処理を選択的に停止する。コア切り替え手段は、第2の非対称コア手段の第2の状態を、第1の非対称コア手段に転送する。第1の非対称コア手段は、第1のモードにおいて、アプリケーションの実行を再開する。
別の特徴において、第1のモード中、第1の非対称コア手段がアプリケーションの実行を再開するときに、命令翻訳なしに命令が実行される。
他の特徴において、該システムは、アプリケーションにサービスを提供するオペレーティングシステム(OS)をさらに備える。コア切り替え手段は、第2の非対称コア手段と第1の非対称コア手段との間で、OSに対して透過的にアプリケーションの実行を切り替える。
他の特徴において、コア切り替え手段は、コア切り替え手段が第2の非対称コア手段によるアプリケーションの処理を選択的に停止するときに、第2の状態を保存する。コア切り替え手段は、第1の非対称コア手段を起動し、第2の状態を使用して第1の非対称コア手段を初期化する。割り込みは、第1の非対称コア手段がアプリケーションの実行を再開した後に有効化される。
他の特徴において、該システムは、第1の非対称コア手段の命令およびデータをキャッシュするためのレベル2(L2)キャッシュ手段をさらに備える。第1の非対称コア手段が起動した後に、L2キャッシュ手段に電力が供給される。
他の特徴において、コア切り替え手段は、第1の非対称コア手段が起動したときに第2の非対称コア手段を停止する。第2の非対称コア手段が停止した後は、第2の非対称コア手段に電力が供給されないか、または待機電力が供給される。
他の特徴において、コア切り替え手段は、第1の非対称コア手段が起動できなかったときに第2の状態を使用して第2の非対称コア手段を初期化する。第2の非対称コア手段は、第2のモードにおいて、アプリケーションの実行を再開し、割り込みが有効化される。
別の特徴において、該システムは、アプリケーションのコア使用率、リソース使用率、および動作性能のうちの少なくとも1つに基づき第2の制御信号を生成するためのコアプロファイル手段をさらに備える。
他の特徴において、該システムは、第2の制御信号に基づきコア変更シーケンス(CCS)を開始するためのCCS手段をさらに備える。コア切り替え手段は、CCSに基づき、第1および第2の非対称コア手段のうちの一方と、第1および第2の非対称コア手段のうちの他方との間でアプリケーションの実行を切り替える。
他の特徴において、CCS手段は、アプリケーションによる第2の非対称コア手段のコア使用率が、第1の所定の閾値以上である場合、CCSを開始する。CCS手段は、アプリケーションによる第2の非対称コア手段のコア使用率が、第1の所定の期間、第2の所定の閾値以上である場合、CCSを開始する。CCS手段は、第2の非対称コア手段の予想コア使用率が、第3の所定の閾値以上である場合、CCSを開始する。予想コア使用率は、アプリケーションの種類およびアプリケーションの実行の履歴のうちの少なくとも1つに基づき決定される。CCS手段は、アプリケーションによる第1の非対称コア手段のコア使用率が、第4の所定の閾値以下である場合、CCSを開始する。CCS手段は、アプリケーションによる第1の非対称コア手段のコア使用率が、第2の所定の期間、第5の所定の閾値以下である場合、CCSを開始する。
別の特徴において、CCS手段は、アプリケーションの種類、アプリケーションの数、ならびに第1および第2の非対称コア手段のうちの一方により実行される命令の種類のうちの少なくとも1つに基づき、前記CCSを開始する。
別の特徴において、コアプロファイル手段は、第1および第2の非対称コア手段のうちの一方と、第1および第2の非対称コア手段のうちの他方との間でアプリケーションの実行が切り替えられる回数に基づき、第2の制御信号を生成する。
他の特徴において、該システムは、システムの電力消費を制御し、第2の制御信号および電力消費に基づき第3の制御信号を生成するための、電力制御手段をさらに備える。該システムは、第3の制御信号に基づきコア変更シーケンス(CCS)を開始するCCS手段をさらに備える。コア切り替え手段は、CCSに基づき、第1および第2の非対称コア手段のうちの一方と、第1および第2の非対称コア手段のうちの他方との間でアプリケーションの実行を切り替える。
別の特徴において、該システムは、第2の制御信号に基づき周波数変更シーケンス(FCS)を開始し、FCSに基づき第1および第2の非対称コア手段のうちの少なくとも1つの動作周波数を選択するための、FCS手段をさらに備える。
別の特徴において、該システムは、第2の制御信号に基づき電圧変更シーケンス(VCS)を開始し、VCSに基づき第1および第2の非対称コア手段のうちの少なくとも1つの供給電圧を選択するための、VCS手段をさらに備える。
別の特徴において、該システムは、システムが第1のモードと第2のモードとの間で動作を切り替えるときに割り込みを無効化し、システムが第2のモードと第1のモードとの間で動作を切り替えるときに割り込みを無効化するための、電力管理手段をさらに備える。
他の特徴において、該システムは、複数の第1の非対称コア手段をさらに備える。コア切り替えモジュールは、システムが第1のモードで動作するときに、CCSに基づき、複数の第1の非対称コア手段のうちの2つ以上を選択的に動作状態および休止状態にする。
他の特徴において、該システムは、コア切り替えモジュールと選択的に通信するためにグルーロジック手段をさらに備える。グルーロジック手段は、割り込みを受信し、アプリケーションから第1の信号を受信し、割り込みおよび第1の信号を、コア切り替えモジュールにより動作状態にされた第1および第2の非対称コア手段のうちの一方にルーティングする。
別の特徴において、システムオンチップ(SOC)が、システムを備える。
別の特徴において、システムインパッケージ(SIP)が、システムを備える。
さらに他の特徴において、コンピュータが読取り可能な媒体に格納され、プロセッサにより実行されるコンピュータプログラムは、第1のモードで動作するときに第1の非対称コアを使用してアプリケーションを実行するステップを含む。第1の非対称コアは、第2のモードで動作するときに休止している。コンピュータプログラムは、コア切り替えモジュールを使用して、第1のモードと第2のモードとの間で動作を切り替えるステップをさらに含む。コンピュータプログラムは、第1の制御信号を受信した後、コア切り替えモジュールを使用して第1の非対称コアによるアプリケーションの処理を選択的に停止するステップをさらに含む。コンピュータプログラムは、コア切り替えモジュールを使用して、第1の非対称コアの第1の状態を第2の非対称コアに転送するステップと、第2の非対称コアを使用して、第2のモードにおいてアプリケーションの実行を再開するステップとをさらに含む。
別の特徴において、コンピュータプログラムは、割り込みを無効化するステップと、第1の制御信号を介して割り込みが無効であることを示すステップとをさらに含む。
別の特徴において、コンピュータプログラムは、第2のモード中、第2の非対称コアがアプリケーションの実行を再開するときに、命令翻訳なしに命令を実行するステップをさらに含む。
別の特徴において、コンピュータプログラムは、オペレーティングシステム(OS)を介してアプリケーションにサービスを提供するステップと、コア切り替えモジュールを使用して、第1の非対称コアと第2の非対称コアとの間で、OSに対して透過的にアプリケーションの実行を切り替えるステップとをさらに含む。
他の特徴において、コンピュータプログラムは、第1の最大速度で第1の非対称コアを選択的に動作させるステップと、第2の最大速度で第2の非対称コアを選択的に動作させるステップとをさらに含む。第1の最大速度は、第2の最大速度よりも大きい。コンピュータプログラムは、第1の最大動作電力レベルで第1の非対称コアを選択的に動作させるステップと、第2の最大動作電力レベルで第2の非対称コアを選択的に動作させるステップとをさらに含む。第1の最大動作電力レベルは、第2の最大動作電力レベルよりも大きい。コンピュータプログラムは、所定の周波数より高い周波数で第1の非対称コアを選択的に動作させるステップと、所定の周波数より低い周波数で第2の非対称コアを選択的に動作させるステップとをさらに含む。
他の特徴において、コンピュータプログラムは、第1の命令セットアーキテクチャ(ISA)を使用して第1の非対称コアを動作させるステップと、第2のISAを使用して第2の非対称コアを動作させるステップとをさらに含む。第1のISAは、第2のISAと互換性を有する。コンピュータプログラムは、第1のISAの命令の第1のセットを使用して第1の非対称コアを動作させるステップと、第2のISAの命令の第2のセットを使用して第2の非対称コアを動作させるステップとをさらに含む。第1のセットは、第2のセットのスーパーセットである。第1のセットは、第2のセットより多くの命令を含む。
別の特徴において、コンピュータプログラムは、OSのカーネルを提供するステップと、カーネルのレベルより高位でコア切り替えモジュールを実行するステップとをさらに含む。
別の特徴において、コンピュータプログラムは、ハイパーバイザモジュールを提供するステップと、コア切り替えモジュールをハイパーバイザモジュールと統合するステップとをさらに含む。
他の特徴において、コンピュータプログラムは、コア切り替えモジュールが第1の非対称コアによるアプリケーションの処理を選択的に停止するときに、第1の状態を保存するステップをさらに含む。コンピュータプログラムは、第2の非対称コアを起動するステップと、第1の状態を使用して第2の非対称コアを初期化するステップとをさらに含む。コンピュータプログラムは、第2の非対称コアがアプリケーションの実行を再開した後に割り込みを有効化するステップをさらに含む。コンピュータプログラムは、第2の非対称コアが起動したときに第1の非対称コアを停止するステップと、第1の非対称コアが停止した後は、第1の非対称コアに電力を供給しないか、または待機電力を供給するステップとをさらに含む。
他の特徴において、コンピュータプログラムは、レベル2(L2)キャッシュを提供するステップをさらに含む。第1の非対称コアは、第1の非対称コアが動作状態であるときにL2キャッシュと通信する。コンピュータプログラムは、第1の非対称コアが停止した後は、L2キャッシュに電力を供給しないか、または待機電力を供給するステップをさらに含む。
別の特徴において、コンピュータプログラムは、第2の非対称コアが起動できなかったときに第1の状態を使用して初期化するステップと、第1のモードにおいて第1の非対称コアを用いてアプリケーションの実行を再開するステップと、割り込みを有効化するステップとをさらに含む。
別の特徴において、コンピュータプログラムは、コア切り替えモジュールを使用して、第2のモードと第1のモードとの間で動作を切り替えるステップと、割り込みが無効であることを示す第1の制御信号を受信した後に、コア切り替えモジュールを使用して、第2の非対称コアによるアプリケーションの処理を選択的に停止するステップと、コア切り替えモジュールを使用して、第2の非対称コアの第2の状態を第1の非対称コアに転送するステップと、第1の非対称コアを使用して第1のモードにおいてアプリケーションの実行を再開するステップとをさらに含む。
別の特徴において、コンピュータプログラムは、第1のモード中、第1の非対称コアがアプリケーションの実行を再開するときに、命令翻訳なしに命令を実行するステップをさらに含む。
別の特徴において、コンピュータプログラムは、オペレーティングシステム(OS)を介してアプリケーションにサービスを提供するステップと、コア切り替えモジュールを使用して、第2の非対称コアと第1の非対称コアとの間で、OSに対して透過的にアプリケーションの実行を切り替えるステップとをさらに含む。
他の特徴において、コンピュータプログラムは、コア切り替えモジュールが第2の非対称コアによるアプリケーションの処理を選択的に停止するときに、第2の状態を保存するステップをさらに含む。コンピュータプログラムは、第1の非対称コアを起動するステップと、第2の状態を使用して第1の非対称コアを初期化するステップとをさらに含む。コンピュータプログラムは、第1の非対称コアがアプリケーションの実行を再開した後に割り込みを有効化するステップをさらに含む。
他の特徴において、コンピュータプログラムは、レベル2(L2)キャッシュを提供するステップをさらに含む。第1の非対称コアは、第1の非対称コアが動作状態であるときにL2キャッシュと通信する。コンピュータプログラムは、第1の非対称コアが起動した後に、L2キャッシュに電力を供給するステップをさらに含む。
他の特徴において、コンピュータプログラムは、第1の非対称コアが起動したときに第2の非対称コアを停止するステップと、第2の非対称コアが停止した後は、第2の非対称コアに電力を供給しないか、または待機電力を供給するステップとをさらに含む。
別の特徴において、コンピュータプログラムは、第1の非対称コアが起動できなかったときに第2の状態を使用して第2の非対称コアを初期化するステップと、第2のモードにおいて第2の非対称コアを用いてアプリケーションの実行を再開するステップと、割り込みを有効化するステップとをさらに含む。
別の特徴において、コンピュータプログラムは、アプリケーションのコア使用率、リソース使用率、および動作性能のうちの少なくとも1つに基づき第2の制御信号を生成するステップをさらに含む。
別の特徴において、コンピュータプログラムは、第2の制御信号に基づきコア変更シーケンス(CCS)を開始するステップと、コア切り替えモジュールを使用して、CCSに基づき、第1および第2の非対称コアのうちの一方と、第1および第2の非対称コアのうちの他方との間でアプリケーションの実行を切り替えるステップとをさらに含む。
他の特徴において、コンピュータプログラムは、アプリケーションによる第2の非対称コアのコア使用率が、第1の所定の閾値以上である場合、CCSを開始するステップをさらに含む。コンピュータプログラムは、アプリケーションによる第2の非対称コアのコア使用率が、第1の所定の期間、第2の所定の閾値以上である場合、CCSを開始するステップをさらに含む。コンピュータプログラムは、アプリケーションによる第1の非対称コアのコア使用率が、第3の所定の閾値以下である場合、CCSを開始するステップをさらに含む。コンピュータプログラムは、アプリケーションによる第1の非対称コアのコア使用率が、第1の所定の期間、第4の所定の閾値以下である場合、CCSを開始するステップをさらに含む。
別の特徴において、コンピュータプログラムは、アプリケーションの種類およびアプリケーションの実行の履歴のうちの少なくとも1つに基づき予測コア使用率を決定するステップと、第2の非対称コアの予測コア使用率が所定の閾値以上である場合、CCSを開始するステップとをさらに含む。
別の特徴において、コンピュータプログラムは、第1および第2の非対称コアのうちの一方により実行されるアプリケーションの数、第1および第2の非対称コアのうちの一方により実行されるアプリケーションの種類、ならびに第1および第2の非対称コアのうちの一方により実行される命令の種類のうちの少なくとも1つに基づき、CCSを開始するステップをさらに含む。
別の特徴において、コンピュータプログラムは、第1および第2の非対称コアのうちの一方と、第1および第2の非対称コアのうちの他方との間でアプリケーションの実行が切り替えられる回数に基づき、第2の制御信号を生成するステップをさらに含む。
別の特徴において、コンピュータプログラムは、電力消費を制御するステップと、第2の制御信号および電力消費に基づき第3の制御信号を生成するステップと、第3の制御信号に基づきコア変更シーケンス(CCS)を開始するステップと、コア切り替えモジュールを使用して、CCSに基づき、第1および第2の非対称コアのうちの一方と、第1および第2の非対称コアのうちの他方との間でアプリケーションの実行を切り替えるステップとをさらに含む。
別の特徴において、コンピュータプログラムは、第2の制御信号に基づき周波数変更シーケンス(FCS)を開始するステップと、FCSに基づき第1および第2の非対称コアのうちの少なくとも1つの動作周波数を選択するステップとをさらに含む。
別の特徴において、コンピュータプログラムは、第2の制御信号に基づき電圧変更シーケンス(VCS)を開始するステップと、VCSに基づき第1および第2の非対称コアのうちの少なくとも1つの供給電圧を選択するステップとをさらに含む。
別の特徴において、コンピュータプログラムは、複数の第1の非対称コアを提供するステップと、コア切り替えモジュールを使用して、第1のモードで動作するときに、CCSに基づき、複数の第1の非対称コアのうちの2つ以上を選択的に動作状態および休止状態にするステップをさらに含む。
別の特徴において、コンピュータプログラムは、グルーロジックモジュールを提供するステップと、グルーロジックモジュールを使用してコア切り替えモジュールと選択的に通信するステップと、グルーロジックモジュールを介して割り込みを受信するステップと、グルーロジックモジュールを介してアプリケーションから第1の信号を受信するステップと、グルーロジックモジュールを使用して、割り込みおよび第1の信号を、コア切り替えモジュールにより動作状態にされた第1および第2の非対称コアのうちの一方にルーティングするステップとをさらに含む。
さらに他の特徴において、コア切り替えシステムは、モード切り替えモジュール、コア動作化モジュール、および状態転送モジュールを備える。モード切り替えモジュールは、切り替え信号を受信して、第1のモードと第2のモードとの間で動作を切り替える。第1のモード中、アプリケーションに関連付けられた命令が第1の非対称コアにより実行され、第2の非対称コアは休止状態である。第2のモード中、命令が第2の非対称コアにより実行され、第1の非対称コアは休止状態である。コア動作化モジュールは、割り込みが無効化された後、第1の非対称コアによるアプリケーションの処理を停止する。状態転送モジュールは、第1の非対称コアの状態を、第2の非対称コアに転送する。コア動作化モジュールは、第2の非対称コアに命令の実行を再開することを許可し、割り込みを有効化する。
別の特徴において、第2のモード中、第2の非対称コアが命令の実行を再開するときに、第2の非対称コアは命令翻訳なしに命令を実行する。
別の特徴において、第1の非対称コアの第1の最大速度および第1の最大動作電力レベルは、それぞれ、第2の非対称コアの第2の最大速度および第2の最大動作電力レベルより大きい。
別の特徴において、コア動作化モジュールは、第2の非対称コアが命令の実行を再開するときに、第1の非対称コアに電力を供給しないか、または待機電力を供給する。
他の特徴において、コア切り替えシステムは、データキャッシュミス率、命令キャッシュミス率、および第1の非対称コアにより実行される周期毎の命令数のうちの少なくとも1つに基づき、アプリケーションを実行するための予測命令実行率を生成するコアプロファイルモジュールをさらに備える。コアプロファイルモジュールは、予測命令実行率に基づき切り替え信号を生成する。
他の特徴において、コア切り替えシステムは、切り替え信号に基づきコア変更シーケンス(CCS)を生成するCCSモジュールをさらに備える。コア動作化モジュールは、CCSに基づき、第1および第2の非対称コアのうちの一方を起動し、第1および第2の非対称コアのうちの他方を停止する。
さらに他の特徴において、デバイスは、メモリおよびコア切り替えモジュールを備える。メモリは、アプリケーションにサービスを提供するカーネルを含むオペレーティングシステム(OS)を格納する。コア切り替えモジュールは、第1のモードと第2のモードとの間で動作を切り替える。第1のモード中、アプリケーションに関連付けられた命令が第1の非対称コアにより実行され、第2の非対称コアは休止状態である。第2のモード中、命令が第2の非対称コアにより実行され、第1の非対称コアは休止状態である。コア切り替えモジュールは、カーネルより高位のレベルで動作する。
別の特徴において、コア切り替えモジュールは、第1のモードと第2のモードとの間を、OSに対して透過的に切り替える。
他の特徴において、コア切り替えモジュールは、モード切り替えモジュール、コア動作化モジュール、および状態転送モジュールを備える。モード切り替えモジュールは、切り替え信号を受信して、第1のモードと第2のモードとの間で動作を切り替える。コア動作化モジュールは、割り込みが無効化された後、第1の非対称コアによるアプリケーションの処理を停止する。状態転送モジュールは、第1の非対称コアの状態を、第2の非対称コアに転送する。コア動作化モジュールは、第2の非対称コアに命令の実行を再開することを許可し、割り込みを有効化する。
別の特徴において、第2のモード中、第2の非対称コアが命令の実行を再開するときに、命令翻訳なしに命令が実行される。
別の特徴において、第1の非対称コアの第1の最大速度および第1の最大動作電力レベルは、それぞれ、第2の非対称コアの第2の最大速度および第2の最大動作電力レベルより大きい。
別の特徴において、コア切り替えモジュールは、第2の非対称コアが命令の実行を再開するときに、第1の非対称コアに電力を供給しないか、または待機電力を供給する。
他の特徴において、コア切り替えシステムは、データキャッシュミス率、命令キャッシュミス率、および第1の非対称コアにより実行される周期毎の命令数のうちの少なくとも1つに基づき、アプリケーションを実行するための予測命令実行率を生成するコアプロファイルモジュールをさらに備える。コア切り替えモジュールは、予測命令実行率に基づき、第1および第2のモードのうちの一方と、第1および第2のモードのうちの他方との間で動作を切り替える。
他の特徴において、コア切り替えシステムは、データキャッシュミス率、命令キャッシュミス率、および第1および第2の非対称コアのうちの一方により実行される周期毎の命令数のうちの少なくとも1つに基づき、コア変更シーケンス(CCA)を生成するCCSモジュールをさらに備える。コア切り替えモジュールは、CCSに基づき、第1および第2の非対称コアのうちの一方を起動し、第1および第2の非対称コアのうちの他方を停止する。
さらに他の特徴において、方法は、第1のモード中、第2の非対称コアが休止状態であるときに、第1の非対称コアを使用してアプリケーションに関連付けられた命令を実行するステップと、第2のモード中、第1の非対称コアが休止状態であるときに、第2の非対称コアを使用して命令を実行するステップとを含む。該方法は、第1のモードと第2のモードとの間で動作を切り替えるための切り替え信号を受信するステップをさらに含む。該方法は、切り替え信号に基づき、第1のモード中、割り込みを無効化するステップをさらに含む。該方法は、割り込みが無効化された後、第1の非対称コアによるアプリケーションの処理を停止するステップをさらに含む。該方法は、第1の非対称コアの状態を第2の非対称コアに転送するステップと、第2の非対称コアに命令の実行を再開することを許可するステップと、割り込みを有効化するステップとをさらに含む。
別の特徴において、該方法は、第2の非対称コアが命令の実行を再開するときに、命令翻訳なしに命令を実行するステップをさらに含む。
他の特徴において、該方法は、第1の最大速度および第1の最大動作電力レベルを有する第1の非対称コアを提供するステップと、第2の最大速度および第2の最大動作電力レベルを有する第2の非対称コアを提供するステップとをさらに含む。第1の最大速度および第1の最大動作電力レベルは、それぞれ、第2の最大速度および第2の最大動作電力レベルより大きい。
別の特徴において、該方法は、第2の非対称コアが命令の実行を再開するときに、第1の非対称コアに電力を供給しないか、または待機電力を供給するステップをさらに含む。
他の特徴において、該方法は、データキャッシュミス率、命令キャッシュミス率、および第1の非対称コアにより実行される周期毎の命令数のうちの少なくとも1つに基づき、アプリケーションを実行するための予測命令実行率を生成するステップをさらに含む。該方法は、予測命令実行率に基づき切り替え信号を生成するステップをさらに含む。
別の特徴において、該方法は、制御信号に基づきコア変更シーケンス(CCS)を生成するステップと、CCSに基づき、第1および第2の非対称コアのうちの一方を起動するステップと、CCSに基づき、第1および第2の非対称コアのうちの他方を停止するステップとをさらに含む。
さらに他の特徴において、方法は、アプリケーションにサービスを提供するカーネルを含むオペレーティングシステム(OS)を格納するステップと、第1のモード中、第2の非対称コアが休止状態であるときに、第1の非対称コアを使用してアプリケーションに関連付けられた命令を実行するステップとを含む。該方法は、第2のモード中、第1の非対称コアが休止状態であるときに、第2の非対称コアを使用して命令を実行するステップをさらに含む。該方法は、コア切り替えモジュールを使用して、第1のモードと第2のモードとの間で動作を切り替えるステップと、カーネルより高位のレベルでコア切り替えモジュールを実行するステップとをさらに含む。
別の特徴において、該方法は、第1のモードと第2のモードとの間を、OSに対して透過的に切り替えるステップをさらに含む。
別の特徴において、該方法は、第1のモードと第2のモードとの間で動作を切り替えるための切り替え信号を受信するステップと、割り込みが無効化された後、第1の非対称コアによるアプリケーションの処理を停止するステップと、第1の非対称コアの状態を第2の非対称コアに転送するステップと、第2の非対称コアに命令の実行を再開することを許可するステップと、割り込みを有効化するステップとをさらに含む。
別の特徴において、該方法は、第2のモード中、第2の非対称コアが命令の実行を再開するときに、命令翻訳なしに命令を実行するステップをさらに含む。
他の特徴において、該方法は、第1の最大速度および第1の最大動作電力レベルを有する第1の非対称コアを提供するステップと、第2の最大速度および第2の最大動作電力レベルを有する第2の非対称コアを提供するステップとをさらに含む。第1の最大速度および第1の最大動作電力レベルは、それぞれ、第2の最大速度および第2の最大動作電力レベルより大きい。
別の特徴において、該方法は、第2の非対称コアが命令の実行を再開するときに、第1の非対称コアに電力を供給しないか、または待機電力を供給するステップをさらに含む。
他の特徴において、該方法は、データキャッシュミス率、命令キャッシュミス率、および第1の非対称コアにより実行される周期毎の命令数のうちの少なくとも1つに基づき、アプリケーションを実行するための予測命令実行率を生成するステップをさらに含む。該方法は、予測命令実行率に基づき、第1および第2のモードのうちの一方と、第1および第2のモードのうちの他方との間で動作を切り替えるステップをさらに含む。
別の特徴において、該方法は、データキャッシュミス率、命令キャッシュミス率、および第1の非対称コアにより実行される周期毎の命令数のうちの少なくとも1つに基づきコア変更シーケンス(CCS)を生成するステップと、CCSに基づき、第1および第2の非対称コアのうちの一方を起動し、CCSに基づき、第1および第2の非対称コアのうちの他方を停止するステップとをさらに含む。
さらに他の特徴において、コア切り替えシステムは、動作モードを切り替えるためのモード切り替え手段を備える。モード切り替え手段は、切り替え信号を受信して、第1のモードと第2のモードとの間を切り替える。第1のモード中、アプリケーションに関連付けられた命令が、命令を実行するための第1の非対称コア手段により実行され、命令を実行するための第2の非対称コア手段は休止状態である。第2のモード中、命令が第2の非対称コア手段により実行され、第1の非対称コア手段は休止状態である。システムは、第1および第2の非対称コア手段を動作状態にするためのコア動作化手段をさらに備える。コア動作化手段は、割り込みが無効化された後、第1の非対称コア手段によるアプリケーションの処理を停止する。システムは、第1の非対称コア手段の状態を、第2の非対称コア手段に転送するための状態転送手段をさらに備える。コア動作化手段は、第2の非対称コア手段に命令の実行を再開することを許可し、割り込みを有効化する。
別の特徴において、第2のモード中、第2の非対称コア手段が命令の実行を再開するときに、命令翻訳なしに命令が実行される。
別の特徴において、第1の非対称コア手段の第1の最大速度および第1の最大動作電力レベルは、それぞれ、第2の非対称コア手段の第2の最大速度および第2の最大動作電力レベルより大きい。
別の特徴において、コア動作化手段は、第2の非対称コア手段が命令の実行を再開するときに、第1の非対称コア手段に電力を供給しないか、または待機電力を供給する。
別の特徴において、コア切り替えシステムは、データキャッシュミス率、命令キャッシュミス率、および第1の非対称コア手段により実行される周期毎の命令数のうちの少なくとも1つに基づき、アプリケーションを実行するための予測命令実行率を生成し、予測命令実行率に基づき切り替え信号を生成するためのコアプロファイル手段をさらに備える。
他の特徴において、コア切り替えシステムは、切り替え信号に基づきコア変更シーケンス(CCS)を生成するためのCCS手段をさらに備える。コア動作化手段は、CCSに基づき、第1および第2の非対称コア手段のうちの一方を起動し、第1および第2の非対称コアのうちの他方を停止する。
さらに他の特徴において、デバイスは、アプリケーションにサービスを提供するカーネルを含むオペレーティングシステム(OS)を格納するメモリを備える。デバイスは、第1のモードと第2のモードとの間で動作を切り替えるためのコア切り替え手段をさらに備える。第1のモード中、アプリケーションに関連付けられた命令が、アプリケーションを実行するための第1の非対称コア手段により実行され、アプリケーションを実行するための第2の非対称コア手段は休止状態である。第2のモード中、命令が第2の非対称コア手段により実行され、第1の非対称コア手段は休止状態である。コア切り替え手段は、カーネルより高位のレベルで動作する。
別の特徴において、コア切り替え手段は、第1のモードと第2のモードとの間を、OSに対して透過的に切り替える。
他の特徴において、コア切り替え手段は、切り替え信号を受信して、第1のモードと第2のモードとの間で動作を切り替えるためのモード切り替え手段を備える。コア切り替え手段は、割り込みが無効化された後、第1の非対称コア手段によるアプリケーションの処理を停止するためのコア動作化手段を備える。コア切り替え手段は、第1の非対称コア手段の状態を、第2の非対称コア手段に転送するための状態転送手段をさらに備える。コア動作化手段は、第2の非対称コア手段に命令の実行を再開することを許可し、割り込みを有効化する。
別の特徴において、第2のモード中、第2の非対称コア手段が命令の実行を再開するときに、命令翻訳なしに命令が実行される。
別の特徴において、第1の非対称コア手段の第1の最大速度および第1の最大動作電力レベルは、それぞれ、第2の非対称コア手段の第2の最大速度および第2の最大動作電力レベルより大きい。
別の特徴において、コア切り替え手段は、第2の非対称コア手段が命令の実行を再開するときに、第1の非対称コア手段に電力を供給しないか、または待機電力を供給する。
他の特徴において、デバイスは、データキャッシュミス率、命令キャッシュミス率、および第1の非対称コア手段により実行される周期毎の命令数のうちの少なくとも1つに基づき、アプリケーションを実行するための予測命令実行率を生成するためのコアプロファイル手段をさらに含む。コア切り替え手段は、予測命令実行率に基づき、第1および第2のモードのうちの一方と、第1および第2のモードのうちの他方との間を切り替える。
他の特徴において、該デバイスは、データキャッシュミス率、命令キャッシュミス率、および第1の非対称コア手段により実行される周期毎の命令数のうちの少なくとも1つに基づき、コア変更シーケンス(CCS)を生成するためのCCS手段をさらに備える。コア切り替え手段は、CCSに基づき、第1および第2の非対称コア手段のうちの一方を起動し、第1および第2の非対称コア手段のうちの他方を停止する。
さらに他の特徴において、コンピュータが読取り可能な媒体に格納され、プロセッサにより実行されるコンピュータプログラムは、第1のモード中、第2の非対称コアが休止状態であるときに、第1の非対称コアを使用してアプリケーションに関連付けられた命令を実行するステップと、第2のモード中、第1の非対称コアが休止状態であるときに、第2の非対称コアを使用して命令を実行するステップとを含む。該方法は、切り替え信号を受信して、第1のモードと第2のモードとの間で動作を切り替えるステップをさらに含む。該方法は、切り替え信号に基づき、第1のモード中、割り込みを無効化するステップをさらに含む。該方法は、割り込みが無効化された後、第1の非対称コアによるアプリケーションの処理を停止するステップをさらに含む。該方法は、第1の非対称コアの状態を第2の非対称コアに転送するステップと、第2の非対称コアに命令の実行を再開することを許可するステップと、割り込みを有効化するステップとをさらに含む。
別の特徴において、コンピュータプログラムは、第2のモード中、第2の非対称コアが命令の実行を再開するときに、命令翻訳を使用せずに命令を実行するステップをさらに含む。
他の特徴において、コンピュータプログラムは、第1の最大速度および第1の最大動作電力レベルを有する第1の非対称コアを提供するステップと、第2の最大速度および第2の最大動作電力レベルを有する第2の非対称コアを提供するステップとをさらに含む。第1の最大速度および第1の最大動作電力レベルは、それぞれ、第2の最大速度および第2の最大動作電力レベルより大きい。
別の特徴において、コンピュータプログラムは、第2の非対称コアが命令の実行を再開するときに、第1の非対称コアに電力を供給しないか、または待機電力を供給するステップをさらに含む。
他の特徴において、コンピュータプログラムは、データキャッシュミス率、命令キャッシュミス率、および第1の非対称コアにより実行される周期毎の命令数のうちの少なくとも1つに基づき、アプリケーションを実行するための予測命令実行率を生成するステップをさらに含む。コンピュータプログラムは、予測命令実行率に基づき切り替え信号を生成するステップをさらに含む。
別の特徴において、コンピュータプログラムは、制御信号に基づきコア変更シーケンス(CCS)を生成するステップと、CCSに基づき、第1および第2の非対称コアのうちの一方を起動するステップと、CCSに基づき、第1および第2の非対称コアのうちの他方を停止するステップとをさらに含む。
さらに他の特徴において、コンピュータが読取り可能な媒体に格納され、プロセッサにより実行されるコンピュータプログラムは、アプリケーションにサービスを提供するカーネルを含むオペレーティングシステム(OS)を格納するステップと、第1のモード中、第2の非対称コアが休止状態であるときに、第1の非対称コアを使用してアプリケーションに関連付けられた命令を実行するステップとを含む。該方法は、第2のモード中、第1の非対称コアが休止状態であるときに、第2の非対称コアを使用して命令を実行するステップをさらに含む。該方法は、コア切り替えモジュールを使用して、第1のモードと第2のモードとの間で動作を切り替えるステップと、カーネルより高位のレベルでコア切り替えモジュールを実行するステップとをさらに含む。
別の特徴において、コンピュータプログラムは、第1のモードと第2のモードとの間を、OSに対して透過的に切り替えるステップをさらに含む。
別の特徴において、コンピュータプログラムは、第1のモードと第2のモードとの間で動作を切り替えるための切り替え信号を受信するステップと、割り込みが無効化された後、第1の非対称コアによるアプリケーションの処理を停止するステップと、第1の非対称コアの状態を第2の非対称コアに転送するステップと、第2の非対称コアに命令の実行を再開させるステップと、割り込みを有効化するステップとをさらに含む。
別の特徴において、コンピュータプログラムは、第2のモード中、第2の非対称コアが命令の実行を再開するときに、命令翻訳なしに命令を実行するステップをさらに含む。
他の特徴において、コンピュータプログラムは、第1の最大速度および第1の最大動作電力レベルを有する第1の非対称コアを提供するステップと、第2の最大速度および第2の最大動作電力レベルを有する第2の非対称コアを提供するステップとをさらに含む。第1の最大速度および第1の最大動作電力レベルは、それぞれ、第2の最大速度および第2の最大動作電力レベルより大きい。
別の特徴において、コンピュータプログラムは、第2の非対称コアが命令の実行を再開するときに、第1の非対称コアに電力を供給しないか、または待機電力を供給するステップをさらに含む。
他の特徴において、コンピュータプログラムは、データキャッシュミス率、命令キャッシュミス率、および第1の非対称コアにより実行される周期毎の命令数のうちの少なくとも1つに基づき、アプリケーションを実行するための予測命令実行率を生成するステップをさらに含む。コンピュータプログラムは、予測命令実行率に基づき、第1および第2のモードのうちの一方と、第1および第2のモードのうちの他方との間で動作を切り替えるステップをさらに含む。
別の特徴において、コンピュータプログラムは、データキャッシュミス率、命令キャッシュミス率、および第1の非対称コアにより実行される周期毎の命令数のうちの少なくとも1つに基づきコア変更シーケンス(CCS)を生成するステップと、CCSに基づき、第1および第2の非対称コアのうちの一方を起動し、CCSに基づき、第1および第2の非対称コアのうちの他方を停止するステップとをさらに含む。
本開示のさらなる適用領域は、以降に記載する詳細な説明から明らかとなる。詳細な説明および具体例は、例示目的のみを意図し、本開示の範囲を限定することを意図しないことを理解されたい。
本開示は、詳細な説明および添付の図面からより完全に理解される。
先行技術による非対称多重処理(MP)システムの機能ブロック図である。
先行技術による対称MPシステムの機能ブロック図である。
本開示による対称MPシステムの機能ブロック図である。
本開示による高電力コアおよび低電力コアを含む例示的な処理システムの機能ブロック図である。 本開示による高電力コアおよび低電力コアを含む例示的な処理システムの機能ブロック図である。
図2Aおよび2Bの例示的な制御モジュールの機能ブロック図である。
図3Aの例示的なコア使用率監視モジュールの機能ブロック図である。
高電力および低電力コアを含む処理システムを動作させるための例示的な方法のフローチャートである。
第1および第2のコアを有する別の例示的な制御モジュールの機能ブロック図である。
図5の第1および第2のコアを動作させるための例示的な方法のフローチャートである。
図5の第1および第2のコアを動作させるための別の例示的な方法のフローチャートである。
本開示による例示的なコアモーフィングシステムの機能ブロック図である。 本開示による例示的なコアモーフィングシステムの機能ブロック図である。
本開示によるコアを動的に切り替える例示的な電力管理システムの機能ブロック図である。
本開示によるコアを動的に切り替える別の例示的な電力管理システムの機能ブロック図である。
例示的なコア切り替えモジュールの機能ブロック図である。
本開示によるハイパーバイザモジュールと統合されたコア切り替えモジュールを使用してコアを切り替えるための例示的な方法のフローチャートである。
例示的携帯な電話の機能ブロック図である。
基地局と通信する例示的な無線ハンドセットの機能ブロック図である。
例示的なモバイルデバイスの機能ブロック図である。
例示的グローバルポジショニングシステム(GPS)の機能ブロック図である。
デスクトップ型コンピュータおよび/またはサーバの機能ブロック図である。
以下の説明は、本質的に例示的であるに過ぎず、本開示、その応用、または使用を制限することを意図するものではない。明確性のために、同様の要素を特定するために図面において同じ参照番号が使用される。本明細書で使用される場合、A、B、およびCのうちの少なくとも1つという語句は、非排他的論理和を使用した論理(AまたはBまたはC)を意味すると解釈されたい。方法内のステップは、本開示の原理を改変することなく、異なる順番で実行され得ることを理解されたい。
本明細書で使用される場合、モジュールという用語は、特定用途向け集積回路(ASIC)、電子回路、1つ以上のソフトウェアもしくはファーウェアプログラムを実行するプロセッサもしくはコア(共有、専用、またはグループ)およびメモリ、組み合わせ論理回路、ならびに/または、記載された機能性を提供する他の好適なコンポーネントを指す。
ほとんどのモバイルコンピューティングデバイスは、異なるレベルの複雑性および/または処理要件を有するアプリケーションを実行する。単一コア低速プロセッサを使用して効率的に実行され得るアプリケーションもあれば、単一コア高速プロセッサを使用して効率的に実行され得るアプリケーションもある。単なる一例として、低速プロセッサは、500メガヘルツ(MHz)以下の速度で動作し得るが、高速プロセッサは、1ギガヘルツ(GHz)以上の速度で動作し得る。他の速度閾値も使用することができる。
ほとんどのモバイルコンピューティングデバイスは、現在、単一コアプロセッサを1つだけ使用する。単一コアプロセッサを使用してすべての種類のアプリケーションを実行するには、電力と性能のトレードオフが必要である。例えば、低速プロセッサは、単一コアを使用して、性能を犠牲にして省力化を増加させ、電池寿命を延ばすことができる。いくつかの処理集中的アプリケーションは、ゆっくりと動作するか、または全く動作しない場合がある。逆に、高速プロセッサは、必要な処理速度がより低いアプリケーションを実行する際でさえもより多くの電力を消費するため、高速プロセッサは、単一コアを使用して、性能を増加させることができるが電池寿命が短くなる。
本開示によれば、低速低電力(LP)コアおよび高速高出力(HP)コアを有するマルチコア処理システムを使用して、モバイルデバイスにおいて省力化の増加および性能の増加の両方を達成することができる。LPコアおよびHPコアは、同じICもしくはSOC上に、またはシステムインパッケージ(SIP)に組み合わされた別個のICとして実装され得る。以降でより詳細に説明するように、マルチコア処理システムは、実行されているアプリケーションの種類、処理負荷、および/または本明細書に記載される他の因子に依存して、LPおよびHPコアの間を動的に切り替える。
ここで図2を参照すると、モバイルデバイスは、LPコア12およびHPコア16を備える非対称多重処理(MP)システム10を含むことができる。LPコア12の命令セットアーキテクチャ(ISA)は、HPコア16のISAとは異なっていてもよい。例えば、HPコア16は、浮動小数点命令を実行することができるがLPコア12は実行しない可能性がある。さらに、LPおよびHPコア(以降コアと称する)12および16は、異なる性能および能力(例えば、異なる処理速度、電力消費等)を有する。代替として、両方が同じISAを使用してもよい。
本開示によれば、非対称MPシステム10は、LPコア12およびHPコア16の間の互換性を達成することにより、偽対称的に動作する。LPおよびHPコア12および16の間の互換性は、多くの様式で達成することができる。例えば、LPコア12およびHPコア16は、同じもしくは類似した主要コアレジスタ/インタフェースを使用することができ、LPコア12は、レジスタマッピングを使用することができ、ならびに/またはLPコア12は、HPコア16の命令セットと同じ、もしくはそのサブセットである命令セットを使用することができる。
したがって、オペレーティングシステム(OS)およびアプリケーションは、LPコア12およびHPコア16の両方で動作することができる。非対称MPシステム10は、実行されているアプリケーションの処理負荷および種類に依存して、必要に応じてLPコア12およびHPコア16を動的に切り替え、省力化を増加させ性能を向上させることができる。非対称MPシステム10は、多目的処理(GPP)に使用することができる。
本開示は、コアモーフィングを使用して電力消費を最適化し性能を向上させる。コアモーフィングは、MPシステムのコアの適応および動的切り替えを含む。具体的には、低電力および高電力コアが確実に、またOSおよび/またはアプリケーションに対して透過的に切り替えられる。換言すると、どのコアが現在処理負荷を実行しているかがOSおよびアプリケーションに認識されないことが可能である。
コアモーフィングは、電池寿命および性能を最適化することができる。例えば、処理負荷が低い場合は、アプリケーションの実行にLPコアを使用することで、電池寿命を伸ばすことができる。一方、処理負荷が高い場合は、アプリケーションの実行にHPコアを使用することで、高性能を提供することができる。電力消費および性能は両方とも、必要に応じてLPおよびHPコアを動的に切り替えることにより最適化することができる。
コアモーフィングにおいて、コアは、システム負荷に基づき、動的に有効化(すなわち動作状態に)または無効化(すなわち休止状態に)される。システム負荷は、一部、リソースの使用率およびアプリケーションにより要求される性能に基づき決定され得る。いくつかの実現形態において、一度にコアが1つだけ動作状態(すなわちアプリケーションを実行している)となり得る。1つのコアが動作状態にあるとき、電力を節約するために他のコアは無効(すなわち休止状態)となり得る。他のコアは、多くの手法で無効化され得る。例えば、他のコアを、他のコアのクロック周波数および/または供給電圧が、コアが動作状態であるときよりも低い値に減少され得る待機モードとすることができる。代替として、他のコアは、コアへの電力供給を断つことにより、完全に停止することができる。
1つのコアから別のコアに実行が切り替えられると、動作状態にあるコアは、透過的にOSおよびアプリケーションを実行することができる。具体的には、1つのコアから別のコアに実行が切り替えられると、他のコアが翻訳なしに命令を実行する。したがって、コアの切り替えはOSおよびアプリケーションに透過的または不可視であり、OSおよびアプリケーションは、システムが複数のコアではなく単一のコアを備えるかのように動作を続ける。コアモーフィングは、1つのLPコアおよび1つのHPコアを備えるマルチコアシステムにおいて使用することができる。アプリケーションがHPコアにより提供される性能よりもさらに高い性能を要求する場合、複数のHPコアを使用することができる。
本開示を通して、一例としてモバイルコンピューティングデバイスを用いて動的コア切り替えを説明しているが、動的コア切り替えは、電力消費を削減するために、デスクトップ型コンピュータ、サーバ等を含む他のコンピュータシステムにおいて使用することができる。
詳細な説明の前に、図の簡単な概要を示す。図3Aおよび3Bは、LPコアおよびHPコアを有するマルチコア処理システムを示す。図3Cは、マルチコア処理システムのコアを切り替える制御モジュールを示す。図3Dは、制御モジュールのコア使用率モジュールを示す。図4は、マルチコア処理システムを動作させるための方法を例示している。図5は、マルチコア処理システムのコアを切り替えるための別のシステムを示す。図6および7は、マルチコア処理システムを動作させるための方法を例示している。図8Aおよび8Bは、コアモーフィング中コアが切り替えられるときに1つのコアを動作させるグルーロジックモジュールを示す。図9Aは、コアを動的に切り替えるためにコア切り替えモジュールを使用する電力管理システムを示す。図9Bは、コアを動的に切り替えるためにコア切り替えモジュールを使用する電力管理システムを示す。図9Cは、例示的なコア切り替えモジュールを示す。図10は、コア切り替えモジュールを使用してコアを動的に切り替えるための方法のステップを示す。
ここで図3Aを参照すると、本開示による処理システム20が示されている。処理システム20は、キャッシュ26を有するHPコア24と、キャッシュ30を有するLPコア28とを含む。処理システム20は、必要に応じてHPコア24およびLPコア28の間を切り替え、電力消費を削減しながらも高速での処理を支持することができる。処理システム20は、電池電力により動作するモバイルデバイスにおける電池寿命を延ばすのに有用となり得る。HPコア24およびLPコア28は両方とも、同じオペレーティングシステムおよび/またはアプリケーションを実行することができる。さらに、HPコア24およびLPコア28は両方とも、互いの命令、状態、および/またはスレッドを実行して処理を継続することができる。
HPモードにおいて、HPコア24が動作状態にあり、スレッドを処理する。LPコア28もまたHPモードにおいて動作し得る。換言すると、LPコア28は、HPモードのすべてまたは一部の間、動作状態となり得る。しかし、電力を削減するために、HPコア24が動作状態にある間、LPコア28は休止状態で動作することができる。
LPモードにおいて、LPコア28は動作状態で動作してスレッドを処理し、HPコア24は休止状態にある。休止状態のコアは、完全にオフ(電力が供給されない)にされてもよい。代替として、動作状態へのより迅速な移行を可能とするために、休止状態において動作電力レベルより低い電力レベルを含む待機電力がコアに提供されてもよい。
HPコア24およびLPコア28は、同じまたは類似のオペレーティングシステムを使用することができる。LPコア28は、HPコア24のISAと同じ、またはそのサブセットであるISAを使用することができる。HPコア24およびLPコア28は両方とも、異なる速度ではあるが同じコードおよび/またはアプリケーションを実行することができる。HPコア24およびLPコア28は、同じまたは類似のアーキテクチャを有することができる。HPコア24は、LPコア28よりも多くの処理能力(例えば、パイプライン、ステージ等)を有することができる。HPコア24およびLPコア28は、LPモードからHPモード、およびHPモードからLPモードに移行する際、一時的に、同時に動作状態で動作することができる。
揮発性および/または不揮発性メモリ等のメモリ40は、第1のアプリケーション42−1、42−2、・・・、および42−P(総称的に第1のアプリケーション42)、第2のアプリケーション44−1、44−2、・・・、および44−Q(総称的に第2のアプリケーション44)、ならびに/または第3のアプリケーション46−1、46−2、・・・、および46−R(総称的に第3のアプリケーション46)(P、QおよびRはゼロより大きい整数である)を格納する。第1のアプリケーション42は、動作中、比較的低い処理速度を必要とするアプリケーションを含むことができ、LPまたはHPモード中に実行され得る。換言すると、第1のアプリケーション42は、概してあまりプロセッサ集中的でないアプリケーションを含むことができる。しかしながら、十分な数の第1のアプリケーション42が同時に実行されている場合、処理システム20は、HPモードへの移行および該モードでの動作を必要とし得る。
第2のアプリケーション44は、中間の(例えば、典型的には、平均して第1のアプリケーション42より高く第3のアプリケーション46よりも低い)処理速度を必要とするアプリケーションを含むことができる。状況に応じて、第2のアプリケーション44は、低い、中間的、または高い処理速度を必要とし得る。第3のアプリケーション46は、高い処理速度を必要とする傾向があるアプリケーションとなり得、HPモードにおいて最善に動作し得る。HPコア24およびLPコア28は両方とも、3種類すべてのアプリケーションを実行することができる。代替として、いくつかのアプリケーションは、HPコア24のみを使用しての動作に制限され得る。
制御モジュール34は、HPおよびLPモードの間の移行を選択的に制御するために提供され得る。制御モジュール34は、別のモジュールまたはデバイスから、モード変更要求信号を受信することができる。制御モジュール34は、命令、状態、スレッド、および/または、転送に関連する情報の転送、例えばレジスタ、状態、チェックポイント、および/またはプログラムカウンタ等を監視することができる。転送が完了すると、制御モジュール34は、HPコア24およびLPコア28のうちの一方を休止状態に移行させることができる。
処理システム20は、様々な様式でパッケージされ得る。例えば、処理システム20のHPコア24およびLPコア28の両方が、任意選択でシステムオンチップ(SOC)として実装されてもよい。代替として、処理システム20は、システムインパッケージ(SIP)として配設された、またはプリント基板(PCB)上に配設された複数のチップとしてパッケージされ得る。さらに他のパッケージング方法が企図される。
ここで図3Bを参照すると、処理システム20は、HPコア24、LPコア28、共有レジスタファイル112、および制御モジュール114を含む。HPコア24は、高リーク/高速プロセスを使用して製造することができる。LPコア28は、低リーク/低速プロセスを使用して製造することができる。HPコア24およびLPコア28は、それぞれトランジスタ106および110を含む。HPコア24のトランジスタ106は、動作状態での動作中、LPコア28のトランジスタ110よりも大きな電力を消費する傾向がある。いくつかの実現形態において、トランジスタ106は、トランジスタ110よりも高いリーク電流を有し得る。トランジスタ106は、トランジスタ110のサイズより大きなサイズを有し得る。トランジスタ106のゲートは、トランジスタ110のゲートより大きくなり得る。HPコア24のゲート数は、LPコア28のゲート数より大きくなり得る。
HPコア24は、LPコア28よりも複雑なアーキテクチャを有し得る。例えば、LPコア28は、HPコア24よりも小さな幅および/または深さを有し得る。幅は、平行パイプラインの数により定義され得る。HPコア24は、PHP平行パイプライン142を含むことができ、LPコア28は、PLP平行パイプライン146を含むことができる。いくつかの実現形態において、PLPはPHPより小さくなり得る。PLPは、ゼロ以上の整数となり得る。PLP=0の場合、LPコア28は、いかなる平行パイプラインも含まない。深さは、ステージの数により定義され得る。HPコア24は、SHPステージ144を含むことができ、LPコア28は、SLPステージ148を含み得る。いくつかの実現形態において、SLPはSHPより小さくなり得る。SLPは、1以上の整数となり得る。
レジスタファイル112は、HPコア24とLPコア28との間で共有され得る。代替として、HPコア24およびLPコア28のそれぞれが、レジスタファイルを有し得る。レジスタファイル112の内容は、まもなく休止状態とされる動作状態のコアから、まもなく動作状態にされる休止状態のコアに転送され得る。レジスタファイル112は、レジスタ、チェックポイント、および/またはプログラムカウンタのために所定のアドレスの場所を使用することができる。例えば、それぞれHPおよび/またはLPコア24および/または28により使用されるレジスタ、チェックポイント、および/またはプログラムカウンタは、レジスタファイル112の同じ場所に格納され得る。したがって、HPコア24およびLPコア28は、一方のコアから他方のコアに移行する際、特定のレジスタ、チェックポイント、および/またはプログラムカウンタを見つけることができる。レジスタファイル112は、HPコア24およびLPコア28のそれぞれにおける各レジスタファイル(図示せず)に付加的であってもよい。スレッド処理は、単一スレッド処理および/またはマルチスレッド処理を含み得る。
制御モジュール114は、HPおよびLPモードの間の移行を選択的に制御することができる。制御モジュール114は、別のモジュールまたはデバイスから、モード変更要求信号を受信することができる。制御モジュール114は、命令、状態、スレッド、および/または、転送に関連する情報、例えばレジスタ、状態、チェックポイント、および/またはプログラムカウンタ等の転送を監視することができる。転送が完了すると、制御モジュール114は、HPコア24およびLPコア28のうちの一方を休止状態に移行させることができる。HPコア24、LPコア28、レジスタファイル112、および/または制御モジュール114は、システムオンチップ(SOC)130として実装することができる。
HPコア24は、キャッシュ26を含むことができ、LPコア28は、キャッシュ30を含むことができる。キャッシュ26のサイズは、キャッシュ30より大きくなり得る。キャッシュ26は、キャッシュ30より多くの電力を消費し得る。単なる一例として、キャッシュ26は4ウェイキャッシュを含むことができ、一方キャッシュ30はダイレクトマップキャッシュを含むことができる。単なる一例として、HPコア24は、1GHz以上の速度で動作することができ、一方LPコア28は、500MHz以下の速度で動作することができる。
ここで図3Cを参照すると、制御モジュール114は、処理システムの動作を管理するために、以下のモジュールのうちの1つ以上を含むことができる。制御モジュール114は、性能プロファイルモジュール116、アイドルプロファイルモジュール118、コアプロファイルモジュール120、スレッド転送モジュール122、および/またはキャッシュ監視モジュール124を含むことができる。
性能プロファイルモジュール116は、HPコア24およびLPコア28により実行されているアプリケーションの動作性能を監視することができ、またシステム負荷のプロファイルを生成することができる。具体的には、性能プロファイルモジュール116は、作業負荷の種類(例えば、システム負荷がCPUバウンドか、メモリバウンドか、またはその両方であるかどうか)を動的に検出することができる。さらに、性能プロファイルモジュール116は、HPコア24およびLPコア28のクロック周波数および/または供給電圧が変化する際、動作性能のボトルネックを検出することができる。
アイドルプロファイルモジュール118は、CPU使用率を監視し、HPコア24およびLPコア28を動作させるための最低限のクロック周波数および/または供給電圧を決定することができる。アイドルプロファイルモジュール118は、高いアイドルデューティサイクルを有する作業負荷の電力を節約しながら、作業負荷に基づき動作性能への影響を最小限化することができる。
さらに、HPコア24およびLPコア28が休止状態である場合、それぞれHPコア24およびLPコア28においてより低い電力レベルを維持することができるように、アイドルプロファイルモジュール118を使用することができる。例えば、アイドルプロファイルモジュール118は、動作状態の動作電力レベルより低く(そして電力ゼロより大きく)、また休止状態のコアを迅速に動作状態に移行させるのに十分な低電力レベルを供給するように、電源を動作させることができる。
キャッシュ監視モジュール124は、HPコア24およびLPコア28がアプリケーションを実行するときにキャッシュミス率を監視することができる。例えば、キャッシュ監視モジュール124は、HPコア24およびLPコア28の命令キャッシュミス率およびデータキャッシュミス率を監視することができる。
コアプロファイルモジュール120は、性能プロファイルモジュール116、アイドルプロファイルモジュール118、および/またはキャッシュ監視モジュール124により生成された情報を分析することができる。その情報に基づき、コアプロファイルモジュール120は、アプリケーションが実行されているとき、HPコア24およびLPコア28のコア使用率を監視することができる。コアプロファイルモジュール120は、コア使用率がある所定の閾値以下にある時を示すことができる。コアプロファイルモジュール120は、電力消費および動作性能を最適化するためにLPモードからHPモードまたはHPモードからLPへの切り替えが必要であるとき、モード変更信号を生成することができる。電力管理システムは、要求に応じてモードを変更するかどうかの決定にモード変更信号を使用することができる。
より具体的には、コアプロファイルモジュール120は、HPコア24およびLPコア28の処理速度をそれぞれ監視することができる。HPコア24が第1の所定の閾値未満の第1の処理速度で動作し始めると、コアプロファイルモジュール120は、LPコア28に動作を切り替える必要性を示すことができる。LPコア28が第2の所定の閾値を超える第2の処理速度で動作し始めると、コアプロファイルモジュール120は、HPコア24に動作を切り替える必要性を示すことができる。
第1および第2の所定の閾値は、同じであっても、(ヒステリシスを提供するために)同じでなくてもよい。換言すると、第1の所定の閾値は、第2の所定の閾値より低くてもよい。第1および第2の処理速度は、処理速度の瞬間的な変化の間の切り替えを防止するために、第1および第2の期間にわたり平均化されてもよい。第1および第2の期間は、異なる期間に設定して切り替えを促進または抑制することができる。第1の期間、第2の期間、第1の所定の閾値、および第2の所定の閾値は、プログラマによりプリセットされていてもよく、またはユーザにより定義されてもよい。そうすることで、ユーザは、処理システム20を含むデバイスの電力散逸を制御することができる。スレッド転送モジュール122は、コアが切り替えられた際、HPコア24とLPコア28との間のスレッドの転送を促進する。
ここで図3Dを参照すると、コアプロファイルモジュール120は、システム負荷を監視することができる。例えば、HPコア24およびLPコア28の1つ以上のパラメータを監視して、コア使用率の表示を提供することができる。例えば、コアプロファイルモジュール120は、処理速度、ページファイル使用量、入力/出力負荷、スレッド数、キャッシュ使用量、および/またはアプリケーションの種類を監視することができる。CPU使用量は、コアの容量に対する単位時間あたりの動作数の比率を表し得る。ページファイル使用量は、ページファイルの最大数に対するページファイル数の比率を表し得る。スレッドカウントは、動作中のスレッドの数であり得る。
コアプロファイルモジュール120は、単一の閾値を使用することができる。換言すると、HPコア24への移行は、LPコア28のCPU使用量が所定の期間中所定のパーセンテージを超える、ページファイル使用量が所定のページファイル数を超える、またはスレッド数が所定のスレッド数を超える場合に生じ得る。コアプロファイルモジュール120はまた、基準を組み合わせてより複雑な条件とすることができる。単なる一例として、コアプロファイルモジュール120は、LPコア28の処理速度が所定の期間中最大速度の所定のパーセンテージを超えること、および入力/出力負荷が所定の値を超えることを必要とし得る。ヒステリシスを使用することもできる。さらに他の組み合わせも企図される。
ここで図4を参照すると、処理システム20を動作させるための例示的方法300が示されている。制御は、ブロック304から始まり、ブロック306に進む。ブロック306では、制御は現在の動作モードを判定する。ステップ306がHPと等しい場合、制御はステップ308へと続き、モード信号がLPモードに設定されているかどうかを判定する。ステップ308が真である場合、制御はステップ310へと続き、LPコア28およびキャッシュ30への電力を増加させる。ステップ312において、制御は、LPコア28およびキャッシュ30の準備ができているかどうかを判定する。ステップ318において、制御は、HPコア24上で実行されている命令、状態、スレッド等をLPコア28に転送する。
ステップ306がLPと等しい場合、制御はステップ328へと続き、モード信号がHPモードに設定されているかどうかを判定する。ステップ328が真である場合、制御はステップ330へと続き、HPコア24およびキャッシュ26への電力を増加させる。ステップ332において、制御は、HPコア24およびキャッシュ26の準備ができているかどうかを判定する。ステップ338において、制御は、LPコア28上で実行されている命令、状態、スレッド等をHPコア24に転送する。
ここで図5を参照すると、HPおよびLPコアを備える別の例示的システムが示されている。システムは、レベル1(L1)キャッシュ202を含むLPコア200と、L1キャッシュ206を含むHPコア204とを含む。LPコア200およびHPコア204は、バス205を介して通信することができる。高速メモリ210が提供されてもよい。高速メモリ210は、スタティックランダムアクセスメモリ(SRAM)または他の好適な高速メモリを含み得る。LPコア200およびHPコア204は、別個のICとして実装されてシステムインパッケージ(SIP)として配設されてもよく、またはICもしくはSOCとして統合されてもよい。高速メモリ210はまた、LPコア200およびHPコア204のうちの一方または両方と統合されてもよい。
LPコア200およびHPコア204はまた、本明細書に記載の属性の一部またはすべてを有することができる。LPコア200は、HPコア204よりも小さいコアを有し得る。L1キャッシュ202および206に加えて、レベル2(L2)キャッシュ208もまた提供され得る。L1キャッシュ202および206は、それぞれ対応するLPコア200およびHPコア204と統合され得る。L2キャッシュ208は、コア200および204のうちの一方または両方により使用され得る。L2キャッシュ208は、一般に、高いリーク電流および/または電力消費を有する傾向があるため、望ましい場合は、L2の使用はHPコア204に制限することができる。いくつかの実現形態において、HPコア204は、複数の同一コアを含んでもよい。
LPコア200およびHPコア204は、異なるISAで同じオペレーティングシステム(OS)を実行してもよく、また同じコードを実行することができる。OSのコンポーネントであるカーネルモジュール220は、システムリソースを管理する。単なる一例として、OSは、Linux(登録商標)または他の好適なオペレーティングシステムを含み得る。カーネルモジュール220は、その機能を実行するときにアプリケーション224(例えば、アプリケーション224−1、224−2、・・・および224−P)が制御するリソース(例えば、高速メモリ210または主メモリ228、LPコア200およびHPコア204、ならびに入力/出力デバイス234)の最も低位の抽象化レイヤを提供する。カーネルモジュール220は、典型的には、プロセス間通信機構およびシステムコールを通して、アプリケーション224のプロセスにこれらのリソースを提供する。
起動中、ブートローダは、典型的にはカーネルモジュール220の実行を開始する。カーネルモジュール220はそれ自体を初期化し、第1のプロセスを開始する。続いて、カーネルモジュール220は、一般に、カーネルモジュール220からサービスを要求するためにアプリケーション224により使用されるシステムコール等の外部イベントに応答して、またはカーネルモジュール220にイベントを通知するためにハードウェアコンポーネントにより使用される割り込みを介して動作する。カーネルモジュール220はまた、実行可能なプロセスがない場合、アイドルプロセスループを実行することができる。
電力消費を管理し、監視されているシステム負荷に基づきシステム動作の変更を開始または制御するために、電力管理システム(PMS)モジュール242を提供することができる。コアプロファイルモジュール240は、コア負荷、入力/出力負荷、アプリケーション負荷、および/または他のシステム動作パラメータに基づく負荷等のシステム負荷を監視することができる。
例えば、PMSモジュール242は、要求に応じて、LPコア200の異なる動作周波数の間の切り替えを制御することができる。換言すると、PMSモジュール242は、システム負荷に基づき、LPコア200のT個(Tは1より大きい整数である)の異なる動作速度の間の移行を処理することができる。例えば、低い負荷条件下で、LPコア200は、最初は100MHz未満の速度で動作し得る。システム負荷が増加するにつれ、PMSモジュール242は、動作速度を200MHzに増加させる必要が生じ得る。理解できるように、より高速度での動作はまた、より高い電力消費と関連し得る。速度の増加は、LPコア200および/または関連したクロッキング回路への供給電圧Vddを上げることにより達成することができる。LPコア200の動作速度をその最大処理速度まで増加させるために、追加の速度ステップを用いることができる。
LPコア200がその最高動作速度に達して追加的なシステム負荷が生じると、コアプロファイルモジュール240、PMSモジュール242、および/またはカーネルモジュール220は、割り込みを無効化し、ハイパーバイザモジュール213またはコア切り替えモジュール212へのシステムコールを生成して移行をトリガする。コア切り替えモジュール212は、スタンドアロン型であってもよく、またはハイパーバイザモジュール213と統合されてもよい。コア切り替えモジュール212は、システムコールに応答して、LPコア200からHPコア204に動作を移行させ(切り替え)、移行(切り替え)が完了した後にカーネルモジュール220に制御を戻すことができる。
ハイパーバイザという用語は、一般に、ホストコンピュータ上で同時に複数のオペレーティングシステムを動作させるプラットフォームを指す。ハイパーバイザは、他のOSが動作している間、一方のOSの動作を安全に一時停止するために使用することができる。ハイパーバイザは、典型的には、カーネルより高位で動作する。代替として、ハイパーバイザは、カーネルより低位で動作し得る。
本開示において、ハイパーバイザという用語は、ホストデバイスに、同じOSを使用して複数の非対称プロセッサを使用させる仮想化プラットフォームを指す。信頼できるゾーンにない他のユーザアプリケーションとは対照的に、ハイパーバイザは信頼できるゾーンで動作する。信頼できるゾーンは、外部割り込みなしにサービスがセキュアに実行され得る、コード分離を提供する安全な環境である。ハイパーバイザは、プロセッサ間の転送を管理し、他の非対称プロセッサが動作している間、一方の非対称プロセッサの動作を一時停止する。代替として、ハイパーバイザは、複数のOSを使用して、複数の非対称プロセッサを実行するために使用することができる。
コア切り替えモジュール212がハイパーバイザモジュール213に統合されているかどうかに依存して、ハイパーバイザモジュール213またはコア切り替えモジュール212が、起動後にRAMまたは他の記憶装置から高速メモリ210にロードされる。コア切り替えモジュール212は、信頼できるゾーンでコアを切り替える。PMSモジュール242は、一方のコアの動作が一時停止され別のコアに引き渡される際、LPコア200およびHPコア204のうちの一方に対する割り込みを無効化する。ハイパーバイザモジュール213および/またはコア切り替えモジュール212は、OSおよびアプリケーションからコアを分離することによりハードウェア抽象化を提供し、コア切り替えを、OSおよびアプリケーションに対して透過的とする。
コア切り替えモジュール212は、カーネルモジュール220より高位のレベルで実行される。コア切り替えモジュール212は、OSおよびアプリケーションに対して透過的にコアを切り替えるため、OSおよびアプリケーションは、コア切り替えモジュール212がコアを切り替える際に改変されることなく動作し得る。
PMSモジュール242により割り込みが無効化された後、コア切り替えモジュール212はLPコア200の状態をコピーし、HPコア204を動作状態にし、LPコア200の状態を使用してHPコア204を初期化する。HPコア204が初期化された後、コア切り替えモジュール212はLPコア200を休止状態にする。HPコア204は、アプリケーションの実行を再開し、PMSモジュール242は割り込みを有効化する。
HPコア204を使用して命令を実行した後、システム負荷は最終的に減少し得る。システム負荷が所定の点までに減少すると、コア切り替えモジュール212は、HPコア204からLPコア200に動作を移行して戻すことができる。理解できるように、コア切り替えを使用するシステムは、必要な処理速度が比較的低い場合、LPコア200の低い電力消費の利益を得ることができる。高速処理が望ましい場合、HPコア204が使用され、次いで処理負荷が十分減少したらオフにされ得る。
ここで図6を参照すると、図5のLPコア200およびHPコア204を動作させるための方法のステップが示されている。制御はステップ250から開始する。ステップ252において、コアプロファイルモジュール240は、LPコア200のシステム負荷を監視する。ステップ256において、コアプロファイルモジュール240は、HPコア204への切り替えが必要かどうかを判定する。ステップ256が偽である場合、制御はステップ252に戻る。
ステップ256が真である場合、制御メッセージがコア切り替えモジュール212に送信される。コア切り替えモジュール212は、ステップ260において、LPコア200の状態(ポインタ、レジスタ、オペコード、オペランド、プログラムカウンタ(PC)等)を読み出し、LPコア200の状態またはその状態を表す情報を、高速メモリ210にコピーする。ステップ264において、コア切り替えモジュール212は、HPコア204を動作状態に移行させる。ステップ268において、コア切り替えモジュール212は、LPコア200の状態を高速メモリ210からHPコア204にロードする。ステップ272において、コア切り替えモジュール212は、LPコア200を休止状態に移行させる。ステップ276において、HPコア204は、HPコア204にロードされた状態で実行を再開する。換言すると、動作は、LPコア200が休止状態に入った際と同じプログラムカウンタ値で再開する。
ステップ280において、LPコア200からロードされた命令の完了後、HPコア204は、アプリケーションレベルで実行を開始することができる。ステップ288において、コアプロファイルモジュール240は、HPコア204のシステム負荷を監視する。ステップ292において、コアプロファイルモジュール240は、LPコア200への切り替えが必要かどうかを判定する。
ステップ292が偽である場合、制御はステップ288に戻る。あるいは、ステップ292が真である場合、ステップ296において、コア切り替えモジュール212は、HPコア204の状態を読み出し、HPコア204の状態またはその状態を表す情報を、高速メモリ210にコピーする。代替として、状態は、動作状態にされるコアに直接コピーされ得る。ステップ300において、コア切り替えモジュール212は、LPコア200を動作状態に移行させる。ステップ306において、コア切り替えモジュール212は、HPコア204の状態を高速メモリ210からLPコア200にロードする。
ステップ310において、HPコア204は、休止状態に移行する。ステップ320において、LPコア200は、ロードされた状態で実行を再開する。ステップ324において、ロードされた命令の完了後、LPコア200はアプリケーションレベルで動作し、制御はステップ252に戻る。
ここで図7を参照すると、図5のLPコア200およびHPコア204を動作させるための別の方法のステップが示されている。制御はステップ328から開始する。ステップ330において、制御は、LPコア200が動作状態かどうかを判定する。ステップ330が真である場合、コアプロファイルモジュール240は、LPコア200のシステム負荷または速度を監視する。ステップ338において、コアプロファイルモジュール240は、実行されているアプリケーションの種類を監視する。ステップ342において、制御は、アプリケーションのいずれかがHP型に指定されるかどうかを判定する。
アプリケーションがHP型アプリケーションとして指定される場合、アプリケーションが起動されるとすぐにHPコア204への移行が生じ得る。HP型アプリケーションは、プログラムされていてもよく、および/またはユーザにより指定されてもよい。代替として、HPアプリケーションは、充電状態に基づき選択されてもよい。換言すると、アプリケーションは、電池残量が低い場合以外はHPコア動作が初期設定となり得る。電池残量が低い場合、アプリケーションは、より低い動作速度でLPコアで動作させられるか、または全く動作しない場合がある。さらに他のアプリケーションが、HPコア204のみで実行され得る。
ステップ342が偽である場合、制御は、ステップ348において、システム負荷が第1の閾値より大きいかどうかを決定する。ステップ348が偽である場合、制御はステップ330に戻る。ステップ348が真である場合、制御はステップ352へと続き、コア切り替えモジュール212を使用してHPコア204に移行する。ステップ356において、コアプロファイルモジュール240は、HPコア204のシステム負荷を監視する。ステップ360において、制御は、システム負荷が第2の閾値未満であるかどうかを判定する。ステップ360が偽である場合、制御はステップ356に戻る。ステップ360が真である場合、制御はステップ376においてLPコア200に移行し、制御はステップ330に戻る。
ステップ342が真である場合、制御はステップ364へと続き、コア切り替えモジュール212を使用してHPコア204に移行する。ステップ368において、制御は、HP型アプリケーションが閉じられているか、または終了しているかどうかを判定する。ステップ368が偽である場合、HPコア204は、HP型アプリケーションの実行を継続する。ステップ368が真である場合、制御はステップ372へと続き、HP型アプリケーションを閉じた後のシステム負荷が第2の速度閾値未満であるかどうかを判定する。ステップ372が偽である場合、制御はステップ372に戻る。ステップ372が真である場合、制御はステップ376においてLPコア200に移行し、制御はステップ330に戻る。
LPコアが、モバイルコンピューティングデバイスのハードウェアおよびソフトウェアの残りの部分にとって、HPコアに類似するかまたはそのように見えることができる場合、コア切り替えは、OSおよびアプリケーションに対して透過的となることができる。LPコアがHPコアに類似する場合、LPコア用にスケジュールされたスレッドは、いかなる修正またはスレッドカラーリングもなく、HPコア用にスケジュールすることができ、またその逆も可である。換言すると、アプリケーションは、どちらかのコアのスレッドの性質とは無関係に、どちらのコアによってでも実行され得る。したがって、コア切り替えは、OSおよびアプリケーションに対して透過的となる。
LPおよびHPコアが同一または互換性のある主要コアレジスタおよびインタフェースを有する場合、LPコアはHPコアと類似することができる。主要コアレジスタおよびインタフェースの例には、CPUIDレジスタ、デバッグレジスタ、キャッシュ編成および制御レジスタ、CPレジスタ、トレースマクロ、メモリ管理ユニット(MMU)、ならびに性能管理ユニット(PMU)が含まれる。追加して、または代替として、LPコアは、レジスタマッピングインタフェースおよび/またはマイクロシーケンサを実装して、HPコアとの動的な互換性を達成することができる。代替として、または追加して、LPコアの命令セットは、HPコアの命令セットと同じ、またはそのサブセットであり得る。
ここで、図8Aおよび8Bを参照すると、グルーロジックモジュール380を使用して、コア切り替えモジュールによりコアが切り替えられているときに一度にコアを1つだけ有効化(すなわち動作状態に)することができる。図8Aにおいて、グルーロジックモジュール380は、外部割り込み(例えば、IRQおよびFIQ)および他の入力(例えば、トレースマクロおよびデバッグ)を、モバイルデバイスの他のハードウェアおよびソフトウェアから受け取ることができる。さらに、グルーロジックモジュール380は、LPコア200およびHPコア204が切り替えられているときに、LPコア200およびHPコア204からウェークアップ交換信号を受信することができる。ウェークアップ交換信号は、コア切り替え中、LPコア200およびHPコア204のうちの一方がウェークアップし、他方が停止する時を示す。ウェークアップ交換信号に基づき、グルーロジックモジュール380は、割り込みおよび他の入力を、コアが切り替えられた後に動作状態であるLPコア200およびHPコア204の一方にルーティングすることができる。
具体的には、図8Bにおいて、グルーロジックモジュール380は、割り込み制御および多重化装置382、トレースマクロおよびデバッグ多重化装置384、ならびに多重化制御モジュール386を備えることができる。割り込み制御および多重化装置382は、外部割込みを受け取ることができ、外部割り込みに基づき、LPコア200およびHPコア204に対するマスクされた割り込みおよび割り込み待ち(WFI)信号を生成することができる。トレースマクロおよびデバッグ多重化装置384は、LPコア200およびHPコア204に対するトレースマクロおよびデバッグの入力を受け取ることができる。
多重化制御モジュール386は、ウェークアップ交換信号を受け取ることができ、またウェークアップ交換信号に基づき多重化制御信号を生成することができる。多重化制御信号は、コア切り替えが完了した後の時点で、LPコア200およびHPコア204のうち、どちらが動作状態であるかを示すことができる。代替として、コア切り替えモジュールは、ウェークアップ交換信号に基づき、割り込み制御および多重化デバイス382ならびにトレースマクロおよびデバッグ多重化デバイス384を制御することができる。
多重化制御信号に基づき、割り込み制御および多重化デバイス382は、マスクされた割り込みおよびWFI信号を、コアが切り替えられた後に動作状態にあるLPコア200およびHPコア204のうちの一方にルーティングすることができる。トレースマクロおよびデバッグ多重化装置384は、トレースマクロおよび/またはデバッグ信号を、コアが切り替えられた後に動作状態にあるLPコア200およびHPコア204のうちの一方にルーティングすることができる。したがって、一度にLPコア200およびHPコア204のうちの一方のみが動作状態であり、アプリケーションを実行する。
グルーロジックモジュール380が非対称的にLPコア200およびHPコア204と通信するため、LPコア200およびHPコア204は、対称通信能力を有する。具体的には、割り込み制御および多重化デバイス382ならびにトレースマクロおよびデバッグ多重化デバイス384により生成された信号は、対称的にLPコア200およびHPコア204に通信する。したがって、所与の時点でLPコア200およびHPコア204のうちのどちらが動作状態であるかとは無関係に、LPコア200およびHPコア204のハードウェアインタフェース動作および信号伝達能力は類似している。これにより、モバイルデバイスの他のハードウェアは、どちらのコアが動作状態にあるかとは無関係に、またはどちらのコアが動作状態にあるかを特定することなく、どちらのコアとも通信することができる。
さらに、対称的な通信に起因して、LPコア200およびHPコア204のプログラム可能性は類似している。具体的には、アプリケーションは、どちらのコアが動作状態にあるかとは無関係に、またはどちらのコアが動作状態にあるかを特定することなく、動作状態にあるLPコア200またはHPコア204上で透過的に動作することができる。グルーロジック380により提供されるハードウェアおよびソフトウェア透過性または対称性によって、ハードウェアおよびソフトウェアの製造供給元は、コアが1つだけ存在するかのように、製品を普通に使用、修正、開発、および/または追加することができる。
HPコア204が複数の同一コアを備える場合、割り込み制御および多重化デバイス382は、それぞれのコアに対するマスクされた割り込みおよびWFI信号を生成することができる。さらに、トレースマクロおよびデバッグ多重化デバイス384は、トレースマクロおよびデバッグ信号を、それぞれのコアにルーティングすることができる。
ここで図9Aおよび9Bを参照すると、動的コア切り替えを使用してモバイルデバイスの電力消費を最適化する電力管理システム(PMS)400が示されている。図9Aにおいて、PMS400は、PMSモジュール402、コアシーケンスモジュール413、コア切り替えモジュール414、およびグルーロジックモジュール380を備える。いくつかの実現形態において、コア切り替えモジュール414は、ハイパーバイザモジュール415と統合することができる。PMSモジュール402は、電力制御モジュール404、性能プロファイルモジュール406、アイドルプロファイルモジュール408、OSタスクプロファイルモジュール410、およびコアプロファイルモジュール412を備える。PMSモジュール402は、ユーザプロファイル、実行されているアプリケーションの種類、OSから受け取る入力、および、それぞれのデバイスドライバから受け取る各種ハードウェアデバイスの状態に基づき、電力消費を管理する。
電力制御モジュール404は、ユーザプロファイルを介して、ユーザから電力/性能に関連する入力を受け取ることができる。例えば、ユーザは、必要となる電力消費とは無関係に、アプリケーションの動作性能レベルを特定することができる。さらに、電力制御モジュール404は、性能プロファイルモジュール406、アイドルプロファイルモジュール408、OSタスクプロファイルモジュール410、およびコアプロファイルモジュール412からの入力を受け取ることができる。
性能プロファイルモジュール406は、アプリケーションの現在の動作性能、および要求される、または望ましい動作性能を示す出力を生成することができる。例えば、性能プロファイルモジュール406は、電力制御モジュール404およびコアプロファイルモジュール412に、アプリケーションによる現在のコア使用率、キャッシュミス率、およびシステム負荷がメモリバウンドであるか、コアバウンドであるか、またはI/Oバウンドであるかどうかを含むパラメータを示すことができる。性能プロファイルモジュール406は、OSサービスモジュール416、デバイスドライバモジュール418、およびコア420から受け取った入力に一部基づき、出力を生成することができる。コア420は、LPおよび1つ以上のHPコアを備えることができる。
OSサービスモジュール416は、カーネル入力/出力制御(IOCTL)モジュール422およびスケジューリングモジュール424を備えることができる。カーネルIOCTLモジュール422は、現在のI/O使用量を電力制御モジュール404に報告することができる。スケジューリングモジュール424は、OSタスクをスケジュールすることができる。OSタスクの例には、タスクの数、プロセスの数、およびスレッド量が含まれる。OSタスクのスケジュールは、OSタスクプロファイルモジュール410により監視され、電力制御モジュール404に報告される。アイドルプロファイルモジュール408は、OSサービスモジュール416からの入力を受け取ることができ、コア420がいつアイドル状態であるかを電力制御モジュール404に報告する。
デバイスドライバモジュール418は、モバイルコンピューティングデバイスのハードウェアデバイスを制御するデバイスドライバを備えることができる。例えば、デバイスドライバモジュール418は、PMSモジュール402から受け取った信号に基づきモバイルコンピューティングデバイスの電池を制御する電池ドライバモジュール426を備えることができる。電池ドライバモジュール426は、電池の状態を電力制御モジュール404に報告することができる。
さらに、デバイスドライバモジュール418は、PMSモジュール402から受け取った入力に基づきハードウェアデバイスにより消費される電力を制御する電力管理割り込み制御(PMIC)モジュール428を備えることができる。デバイスドライバモジュール418は、性能またはリソース使用パラメータを監視する性能監視ユニット(PMU)モジュール430を備えることができる。リソース使用パラメータには、コア420により実行されているOSおよびアプリケーションによるメモリ使用量、キャッシュ使用量、バス使用量、I/O使用量、ならびにCPU使用量が含まれる。PMUモジュール430は、リソース使用パラメータを、性能プロファイルモジュール406に報告することができる。具体的には、PMUモジュール430は、アプリケーションがコア420のうちの1つにより実行される際に、各種リソース使用パラメータがそれぞれの所定の閾値をいつ交差する(すなわちそれを超えるかまたは下回る)かを報告することができる。閾値は、プログラム可能であり得る。
デバイスドライバモジュール418は、ハードウェアデバイスの状態を監視する、デバイスタイムアウトおよび状態監視モジュール432をさらに備えることができる。デバイスタイムアウトおよび状態監視モジュール432は、要求されたタスクを実行するために利用可能な適正リソースの欠落のために、任意のデバイスがアイドル状態であるかまたはタイムアウトするときを、電力制御モジュール404に報告する。電力制御モジュール404は、電力を節約するために、アイドル状態のハードウェアデバイスを停止することができる。代替として、ハードウェアデバイスが、タイムアウトするのではなく要求されたタスクを完了することにより性能を発揮するように、電力制御モジュール404は追加のリソースを動作状態に(すなわち起動を開始)することができる。
コアプロファイルモジュール412、コアシーケンスモジュール413、およびコア切り替えモジュール414は、コアモーフィングを可能にする。コアプロファイルモジュール412は、アプリケーションの履歴または記録に基づき電力/性能要求量を予測または予想することができる。例えば、コアプロファイルモジュール412は、データキャッシュミス率、命令キャッシュミス率、および/または、コア420のうち動作状態であるものにより実行されているサイクルあたりの命令に基づき、アプリケーションの数百万命令/秒(MIPS)の要求を予測することができる。コアプロファイルモジュール412は、性能プロファイルモジュール406、アイドルプロファイルモジュール408、およびOSタスクプロファイルモジュール410のうちの少なくとも1つから履歴を受け取ることができる。履歴に基づき、コアプロファイルモジュール412は、アプリケーションが要求し得る電力/性能を予測または予想することができる。
コアプロファイルモジュール412は、電力/性能要求量が閾値より大きいまたは小さい値に変化するときにイベントを生成することができる。例えば、コアプロファイルモジュール412は、コア使用率またはキャッシュミス率がそれぞれの所定の閾値を超えるときにイベントを生成することができる。イベントは、電力/性能要求量の変化に従いコアを切り替える要求である。さらに、コアプロファイルモジュール412は、コア切り替えの頻度を監視し、スラッシング(すなわち、コア420の不要な切り替え)を最小限化するためにイベントを生成することができる。例えば、コアプロファイルモジュール412は、コア420が所定の期間において切り替えられる回数を監視することができる。コアプロファイルモジュール412は、数が動的にプログラム可能な閾値を超えるときにイベントを生成することができる。イベントが受け取られると、電力制御モジュール404は、そのイベントのみに基づいてコアの切り替えを決定することができる。代替として、電力制御モジュール404は、リソース使用率(過去、現在、および推定)を含む受け取ったすべての情報を分析し、コアを切り替えるかどうかを決定することができる。
時折、電力制御モジュール404は、コアプロファイルモジュール412に優先して、そのイベントにもかかわらずコアを切り替えないように決定することができる。例えば、モバイルデバイスが電線電力により電力供給され、HPコアが動作状態にあるコアである場合、電力制御モジュール404は、性能要件が低いことをイベントが示し得るにもかかわらず、コアを切り替えないようにすることが可能である。代替として、HPコアが動作状態にあるコアであり、アプリケーションが高性能アプリケーションとして指定されている場合、電力制御モジュール404は、モバイルデバイスが電線電力により電力供給されておらず、イベントが低電池残量によりLPへの切り替えを要求しているにもかかわらず、コアを切り替えないようにすることが可能である。
図9Bにおいて、コアシーケンスモジュール413は、周波数変更シーケンス(FCS)モジュール434、電圧変更シーケンス(VCS)モジュール436、およびコア変更シーケンス(CCS)モジュール438を備えることができる。イベントがコアプロファイルモジュール412により発信されると、電力制御モジュール404は、カーネルIOCTLモジュール422への3つのコール、すなわちFCSコール、VCSコール、および/またはCCSコールのうちの少なくとも1つを生成することができる。次いで、カーネルIOCTLモジュール422は、3つのシーケンス、すなわち周波数変更シーケンス、電圧変更シーケンス、および/またはコア変更シーケンスのうちの少なくとも1つを生成することができる。
受け取った周波数変更シーケンスに基づき、FCSモジュール434は、動作状態にあるコアのクロック周波数を変更する信号を生成することができる。受け取った電圧変更シーケンスに基づき、VCSモジュール436は、動作状態にあるコアの供給電圧を変更する信号を生成することができる。受け取ったコア変更シーケンスに基づき、CCSモジュール438は、コア420を切り替える信号を生成することができる。CCSモジュール438は、周波数および/または電圧変更シーケンスと連動してコア変更シーケンスを開始することができる。コア変更シーケンスは、システムオーバーヘッド、システム待ち時間、およびコア移行時間を減少させる。ここで、CCSモジュール438をより詳細に説明する。
電力制御モジュール404がコアの切り替えを決定すると、PMSモジュール402は、割り込みを無効化し、ハイパーバイザモジュール415および/またはコア切り替えモジュール414へのシステムコールを生成してコア420を切り替える。システムコールに基づき、CCSモジュール438はコールを生成し、ハイパーバイザモジュール415および/またはコア切り替えモジュール414にコールを出力する。ハイパーバイザモジュール415および/またはコア切り替えモジュール414は、コア420を切り替える。コア420が切り替えられた後、ハイパーバイザモジュール415および/またはコア切り替えモジュール414は、カーネルIOCTLモジュール422および/またはOSサービスモジュール416に制御を戻す。続いて、新たに動作状態となったコアが動作を再開し、PMSモジュール402は割り込みを有効化する。
以下は、CCSモジュール438がコア変更シーケンスを開始することができる場合のいくつかの例である。CCSモジュール438は、LPコアのコア使用率が所定の高閾値以上である場合、コア変更シーケンスを開始してLPコアからHPコアに切り替えることができる。単なる一例として、所定の高閾値は、80%または90%等のパーセンテージであり得る。CCSモジュール438は、LPコアのコア使用率が、所定の期間、所定の高閾値以上である場合、コア変更シーケンスを開始することができる。所定の期間は、短くても長くてもよい。単なる一例として、所定の期間は、2秒、あるいは10秒であり得る。所定の高閾値および所定の期間は、性能、電力を最適化し、不要である可能性のあるコア切り替えを最小限化するようにプログラムすることができる。
CCSモジュール438は、LPコアの予測コア使用率が、所定の高閾値以上である場合、コア変更シーケンスを開始することができる。予測コア使用率は、実行されているアプリケーションの種類、および/またはアプリケーションの実行履歴に基づき決定することができる。単なる一例として、ユーザにより高性能が必要とタグ付けされたアプリケーションは、LPコアからHPコアへのコア切り替えを開始することができる。
CCSモジュール438は、HPコアのコア使用率が所定の低閾値以下である場合、コア変更シーケンスを開始してHPコアからLPコアに切り替えることができる。単なる一例として、所定の低閾値は、5%または10%等のパーセンテージであり得る。CCSモジュール438は、HPコアのコア使用率が、所定の期間、所定の高閾値以下である場合、コア変更シーケンスを開始することができる。所定の期間は、短くても長くてもよい。単なる一例として、所定の期間は、2秒、あるいは10秒であり得る。所定の低閾値および所定の期間は、性能、電力を最適化し、不要である可能性のあるコア切り替えを最小限化するようにプログラムすることができる。
CCSモジュール438は、LPおよびHPコアのうちの一方により実行されているアプリケーションの数に基づき、コア変更シーケンスを開始することができる。単なる一例として、実行されているアプリケーションの数が10以上である場合にはLPコアからHPコアにコアを切り替え、実行されているアプリケーションの数が10以下である場合にはHPからLPにコアを切り替えることができる。CCSモジュール438は、アプリケーションの種類に基づきコア変更シーケンスを開始することができる。単なる一例として、実行されているアプリケーションが高性能を必要とすると指定されている場合、LPコアからHPコアにコアを切り替えることができる。最後に、CCSモジュール438は、コアの一方による実行がスケジュールされている命令の種類に基づき、コア変更シーケンスを開始することができる。単なる一例として、LPコアがアプリケーションを実行しており、実行がスケジュールされている命令がLPコアではなくHPコアにより実行され得る場合、コアをLPコアからHPコアに切り替えることができる。
より具体的には、CCSモジュール438は、コア420を以下のように切り替える信号を生成することができる。CCSモジュール438がコア変更シーケンスを受信すると、CCSモジュール438は、ハイパーバイザモジュール415および/またはコア切り替えモジュール414にコールを出力する。コア切り替えモジュール414はコア変更シーケンスに従いコア420を切り替える。具体的には、コア切り替えモジュール414は、動作状態にあるコアの状態を休止状態にあるコアに転送し、動作状態にあるコアと休止状態にあるコア420との間のハンドシェーキングを実行し、以下のようにコア切り替えを実行する。
コア切り替えモジュール414は、PMSモジュール402がコア420への割り込みを無効化すると、コア切り替えを開始する。コア切り替えモジュール414は、OSおよびアプリケーションの実行を一時停止し、コア420をOSおよびアプリケーションから分離する。コア切り替えモジュール414は、コアレジスタ、CPレジスタ、スタックポインタ、プログラムカウンタ、PMUイベント、およびMMU構成を含む、動作状態にあるコアの状態を保存することができる。コア切り替えモジュール414は、クロック、L2キャッシュ(例えば休止状態にあるコアがHPコアである場合)、および休止状態にあるコアへの電力供給をオンにするか、または増加させることにより、休止状態にあるコアを動作状態にする。
休止状態にあるコアから受け取ったウェークアップ交換信号に基づき、コア切り替えモジュール414は、ウェークアップ信号が休止状態にあるコアに出力された後の所定の時間内に休止状態にあるコアがウェークアップ(すなわち起動)するかどうかを判定する。休止状態にあるコアが所定の時間内に肯定応答しない(すなわちウェークアップまたは起動しない)場合、コア切り替えモジュール414は動作状態にあるコアの状態をリロードする。コア切り替えモジュール414は、カーネルIOCTLモジュール422および/またはOSサービスモジュール416に制御を戻す。動作状態にあるコアは、リロードされた状態に従いアプリケーションの実行を再開し、PMSモジュール402は、動作状態にあるコアへの割り込みを有効化する。
代わりに、コア切り替えモジュール414が所定の時間内に休止状態にあるコアから肯定応答を受け取った場合、コア切り替えモジュール414は、それまで動作状態にあったコアの状態を、新たに動作状態となったコアに転送する。コア切り替えモジュール414は、それまで動作状態にあったコアの状態を使用して、新たに動作状態となったコアを初期化する。新たに動作状態となったコアが初期化された後、コア切り替えモジュール414は、クロック、L2キャッシュ(例えばそれまで動作状態にあったコアがHPコアである場合)、およびそれまで動作状態にあったコアをオフにするか、または電力供給を減少させることにより、それまで動作状態にあったコアを停止して休止状態にする。コア切り替えモジュール414は、カーネルIOCTLモジュール422および/またはOSサービスモジュール416に制御を戻す。新たに動作状態となったコアは、ロードされた状態に従いアプリケーションの実行を再開する。PMSモジュール402は、動作状態にあるコアへの割り込みを有効化する。したがって、コア切り替えモジュール414は、セキュアに、またOSおよびアプリケーションから分離してコアを切り替え、コア切り替えをOSおよびアプリケーションに対して透過的とする。
コア切り替えモジュール414がLPコアからHPコアに動作を切り替えると、OSおよびアプリケーションは、増加した周波数および供給電圧で単一のコア上で実行を継続するかのように動作し続ける。一方、コア切り替えモジュール414がHPコアからLPコアに動作を切り替えると、OSおよびアプリケーションは、減少した周波数および供給電圧で単一のコア上で実行を継続するかのように動作し続ける。
コア切り替えモジュール414および/またはハイパーバイザモジュール415は、グルーロジックモジュール380に、コア切り替え中にコア420により交換されたハンドシェーキング情報を通信することができる。ハンドシェーキング情報は、コア420のうちどれが動作状態にあるか、いつ割り込みが無効化/有効化されるか、等を示す信号を含み得る。ハンドシェーキング信号に基づき、グルーロジックモジュール380は、アプリケーションから、コア420のうち動作状態にあるものに、割り込みおよび他の信号をルーティングする。
使用の際、コア1はLPコアであり得、コア2はHPコアであり得る。モバイルコンピューティングデバイスは、通常、コア1を使用してほとんどのアプリケーションを実行し得る。コア1は、周波数変更シーケンスおよび電圧変更シーケンスによりそれぞれ指定される周波数および電圧のレベルで動作することができる。周波数変更シーケンスは、必要に応じて動作状態にあるコアのクロック周波数を順次増加または減少させる制御信号を含むことができる。電圧変更シーケンスは、必要に応じて動作状態にあるコアの供給電圧を順次増加または減少させる制御信号を含むことができる。
高性能が必要とされる場合(例えば、コア1の使用率が現在のクロック周波数および供給電圧で最大である場合)、FCSモジュール434は、コア1の最高および/または所望の動作周波数に達するまで、コア1に対し生成された周波数変更シーケンスに基づき、コア1のクロック周波数を周波数範囲内で低から高に変化させることができる。代替として、または追加して、VCSモジュール436は、コア1の最高および/または所望の動作供給電圧に達するまで、コア1に対して生成された電圧変更シーケンスに基づき、コア1の供給電圧を電圧範囲内で低から高に変更することができる。
さらにより高い性能がアプリケーションにより要求される場合(すなわち、コア1の使用率が最高周波数および電圧で最大である場合)、コア切り替えモジュール414がコア切り替えを開始することができる。コア切り替えモジュール414は、コア2を動作状態にし、コア1の状態をコア2に引き渡し、コア1を停止するか、他の様式でコア1を休止状態とする。具体的には、コア切り替えモジュール414は、コア1を休止状態にしてコア1の状態をコピーすることができる。次いで、コア切り替えモジュール414はコア2を起動することができる。起動後コア2が初期化するとき、コア切り替えモジュール414は、コア1の状態をコア2に引き渡すことができる。すなわち、コア切り替えモジュール414は、コア1の状態を使用してコア2をリセットすることができる。その後、コア切り替えモジュール414は、コア1を停止することができる。コア2は、コア1の状態を使用して、コア1が休止状態に入ったところでアプリケーションの実行を再開することができる。PMSモジュール402は、割り込みを有効化することができる。スケジューリングモジュール424は、コア1により実行されるはずだったスレッドを、コア2による実行にスケジュールすることができる。
まず、コア2は、周波数変更シーケンスおよび電圧変更シーケンスによりそれぞれ指定される周波数および電圧のレベルで動作することができる。続いて、FCSモジュール434は、アプリケーションにより要求される性能レベルに従い、周波数範囲内で低から高に、次いで高から低にコア2のクロック周波数を変更することができる。代替として、または追加して、VCSモジュール436は、アプリケーションにより要求される性能レベルに従い、電圧範囲内で低から高に、および高から低にコア2の供給電圧を変化させることができる。HPコアが複数のコア2を備える場合、各追加のコア2は、アプリケーションにより要求される性能レベルが変化し続けるに従い動作状態および休止状態にされ得る。
アプリケーションにより要求される性能レベルが、コア2が発揮する性能がもはや最適でない、効果的でない、望ましくない、および/または可能ではないレベルまで低下した場合、コア切り替えモジュール414はコアを切り替えることができる。コア切り替えモジュール414は、コア1を動作状態にし、コア2の状態をコア1に引き渡し、コア2を停止するか、他の様式でコア2を休止状態とする。具体的には、コア切り替えモジュール414は、コア2を休止状態にしてコア2の状態をコピーすることができる。次いで、コア切り替えモジュール414はコア1を起動することができる。起動後コア1が初期化するとき、コア切り替えモジュール414は、コア2の状態をコア1に引き渡すことができる。すなわち、コア切り替えモジュール414は、コア1の状態を使用してコア2をリセットすることができる。コア1は、コア2の状態を使用して、コア2が休止状態に入ったところでアプリケーションの実行を再開することができる。PMSモジュール402は、割り込みを有効化することができる。その後、コア切り替えモジュール414は、コア2を停止することができる。スケジューリングモジュール424は、コア2により実行されるはずだったスレッドを、コア1による実行にスケジュールすることができる。
ここで図9Cを参照すると、例示的なコア切り替えモジュール414は、モード切り替えモジュール414−1、コア動作化モジュール414−2、および状態転送モジュール414−3を備えることができる。モード切り替えモジュール414−1は、動作がLPモードからHPモードに、またはHPモードからLPモードに切り替えられるべき時に制御信号を受信する。コア動作化モジュール414−2は、現在動作状態にあるコアへの割り込みが無効化された後、現在動作状態にあるコア(例えばコア1)により実行されているアプリケーションの処理を停止する。コア動作化モジュール414−2は、現在休止状態にあるコア(例えばコア2)を動作状態にし、現在休止状態にあるコアが起動するかどうかを監視する。新たに活性化されたコア(例えばコア2)が起動した後、状態転送モジュール414−3は、現在動作状態にあるコアの状態を新たに動作状態にされたコアに転送する。新たに動作状態にされたコアは、アプリケーションの命令の実行を再開し、コア動作化モジュール414−2は、新たに活性化されたコアへの割り込みを有効化する。コア動作化モジュール414−2は、コア1を停止する。
したがって、コア切り替えモジュール414は、コア420を動的に切り替えて電力消費を減少させ、モバイルデバイスの動作性能を増加させる。さらに、コア切り替えモジュール414は、コア420が切り替えられる時に、1つのコアの状態を別のコアにセキュアに分離して受け渡すため、コア420の切り替えは、コア420上で動作しているOSおよびアプリケーションに対して透過的である。したがって、コア420は、既存の処理ハードウェアとプラグ互換性を持ち、いかなるハードウェア修正も必要なく既存の処理ハードウェアに置き換わることができる。
ここで図10を参照すると、コア切り替えモジュール414を使用してコア420を切り替えるための方法500が示されている。制御はステップ502から開始する。制御は、ステップ504において、コアプロファイルモジュール412が(例えば動作状態にあるコアであるコア1から休止状態にあるコアであるコア2に)コア420を切り替えるためのイベントを生成したかどうかを判定する。ステップ504の結果が偽である場合、制御は、コアプロファイルモジュール412がコア420を切り替えるためのイベントを生成するまで待機する。ステップ504の結果が真である場合、電力制御モジュール404は、ステップ506において、現在および/または予測リソース使用率に基づきコア420が切り替えられ得るかどうかを判定する。ステップ506の結果が偽である場合、制御はイベントを無視してステップ504に戻る。ステップ506の結果が真である場合、制御はステップ508に進む。
制御は、ステップ508において、割り込みを無効化する。コア1は、ステップ510において、コア1により実行されている任意の保留されている読取り/書込み(R/W)コマンドを完了する。制御は、ステップ512において、コア切り替えモジュール414へのシステム管理割り込み(SMI)コールを生成し、コア420を切り替える(例えば動作状態にあるコアであるコア1を休止状態にし、休止状態にあるコアであるコア2を動作状態にする)。
制御は、ステップ514において、動作状態にあるコアであるコア1の状態を保存する。制御は、ステップ516において、一貫性のためにコア1のL1キャッシュを消去する。制御は、ステップ518において、休止状態にあるコアであるコア2にイベントを送信する。制御は、ステップ520において、コア2が、起動することにより、および動作状態に移行することにより、イベントに対し肯定応答したかどうかを判定する。ステップ520の結果が真である場合、制御は、ステップ521において、コア1への電力をオフにするか、または他の様式で減少させる。制御は、ステップ522において、保存されたコア1の状態をコア2にロードする。コア2は、ステップ524において、コア1が中止したところでアプリケーションの実行を再開する。制御は、ステップ526において、割り込みを有効化する。制御はステップ504に戻る。
しかしながら、ステップ520の結果が偽でる場合(すなわち、コア2がイベントに対し肯定応答せず起動しない場合)、制御は、ステップ528において、コア1の状態をコア1にリロードする。コア1は、ステップ530において、アプリケーションの実行を再開する。制御は、ステップ532において、割り込みを有効化する。制御はステップ504に戻る。
図11A−11Eに、本開示の教示を組み込んだ様々な例示的実現形態が示されている。図11Aにおいて、本開示の教示は、携帯電話858のマルチコア制御モジュールにおいて実現され得る。携帯電話858は、携帯電話制御モジュール860、電源862、メモリ864、記憶デバイス866、および、アンテナを含み得るセルラーネットワークインタフェース867を含む。携帯電話858は、ネットワークインタフェース868、マイクロホン870、スピーカおよび/または出力ジャック等の音声出力872、ディスプレイ874、ならびに、キーパッドおよび/またはポインティングデバイス等のユーザ入力デバイス876を含み得る。ネットワークインタフェース868が無線ローカルエリアネットワークインタフェースを含む場合、アンテナ869が含まれ得る。
携帯電話制御モジュール860は、本開示の教示によるマルチコア制御モジュールを実装し得る。携帯電話制御モジュール860は、セルラーネットワークインタフェース867、ネットワークインタフェース868、マイクロホン870、および/またはユーザ入力デバイス876からの入力信号を受け取ることができる。携帯電話制御モジュール860は、符号化、復号化、フィルタリング、および/またはフォーマッティングを含む信号処理を行い、出力信号を生成することができる。出力信号は、メモリ864、記憶デバイス866、セルラーネットワークインタフェース867、ネットワークインタフェース868、および音声出力872のうちの1つ以上へ通信され得る。
メモリ864は、ランダムアクセスメモリ(RAM)および/または不揮発性メモリを含むことができる。不揮発性メモリは、フラッシュメモリ(NANDおよびNORフラッシュメモリを含む)、相変化メモリ、磁気RAM、ならびに、各メモリセルが2つを超える状態を有する多状態メモリ等、任意の好適な種類の半導体または固体メモリを含み得る。記憶デバイス866は、DVDドライブ等の光学記憶デバイス、および/またはハードディスクドライブ(HDD)を含み得る。電源862は、携帯電話858のコンポーネントに電力を提供する。
図11Bにおいて、本開示の教示は、無線ハンドセット958のマルチコア制御モジュールにおいて実現され得る。無線ハンドセット958は、電話制御モジュール960、電源962、メモリ964、記憶デバイス966、および、アンテナ(図示せず)を含み得る基地局インタフェース967を含む。無線ハンドセット958は、マイクロホン970、スピーカおよび/または出力ジャック等の音声出力972、ディスプレイ974、ならびに、キーパッドおよび/またはポインティングデバイス等のユーザ入力デバイス976を含み得る。
ハンドセット制御モジュール960は、本開示の教示によるマルチコア制御モジュールを実装し得る。ハンドセット制御モジュール960は、基地局インタフェース967、ネットワークインタフェース968、マイクロホン970、および/またはユーザ入力デバイス976からの入力信号を受け取ることができる。ハンドセット制御モジュール960は、符号化、復号化、フィルタリング、および/またはフォーマッティングを含む信号処理を行い、出力信号を生成することができる。出力信号は、メモリ964、記憶デバイス966、基地局インタフェース967、および音声出力972のうちの1つ以上へ通信され得る。
メモリ964は、ランダムアクセスメモリ(RAM)および/または不揮発性メモリを含むことができる。不揮発性メモリは、フラッシュメモリ(NANDおよびNORフラッシュメモリを含む)、相変化メモリ、磁気RAM、ならびに、各メモリセルが2つを超える状態を有する多状態メモリ等、任意の好適な種類の半導体または固体メモリを含み得る。記憶デバイス966は、DVDドライブ等の光学記憶デバイス、および/またはハードディスクドライブ(HDD)を含み得る。電源962は、無線ハンドセット958のコンポーネントに電力を提供する。
図11Cにおいて、本開示の教示は、モバイルデバイス989のマルチコア制御モジュールにおいて実現され得る。モバイルデバイス989は、モバイルデバイス制御モジュール990、電源991、メモリ992、記憶デバイス993、ネットワークインタフェース994、および外部インタフェース999を備えることができる。ネットワークインタフェース994が無線ローカルエリアネットワークインタフェースを含む場合、アンテナ(図示せず)が含まれ得る。
モバイルデバイス制御モジュール990は、本開示の教示によるマルチコア制御モジュールを実装し得る。モバイルデバイス制御モジュール990は、ネットワークインタフェース994および/または外部インタフェース999からの入力信号を受け取ることができる。外部インタフェース999は、USB、赤外線、および/またはイーサネット(登録商標)を含み得る。入力信号は、圧縮音声および/またはビデオを含むことができ、またMP3フォーマットと互換性を有し得る。さらに、モバイルデバイス制御モジュール990は、キーパッド、タッチパッド、または個々のボタン等のユーザ入力996からの入力を受け取ることができる。モバイルデバイス制御モジュール990は、符号化、復号化、フィルタリング、および/またはフォーマッティングを含む入力信号処理を行い、出力信号を生成することができる。
モバイルデバイス制御モジュール990は、音声信号を音声出力997に、およびビデオ信号をディスプレイ998に出力することができる。音声出力997は、スピーカおよび/または出力ジャックを含むことができる。ディスプレイ998は、メニュー、アイコン等を含み得るグラフィカルユーザインタフェースを提示することができる。電源991は、モバイルデバイス989のコンポーネントに電力を提供する。メモリ992は、ランダムアクセスメモリ(RAM)および/または不揮発性メモリを含むことができる。
不揮発性メモリは、フラッシュメモリ(NANDおよびNORフラッシュメモリを含む)、相変化メモリ、磁気RAM、ならびに、各メモリセルが2つを超える状態を有する多状態メモリ等、任意の好適な種類の半導体または固体メモリを含み得る。記憶デバイス993は、DVDドライブ等の光学記憶デバイス、および/またはハードディスクドライブ(HDD)を含み得る。モバイルデバイスは、携帯情報端末、メディアプレーヤ、ラップトップ型コンピュータ、ゲーム機、または他のモバイルコンピューティングデバイスを含み得る。
図11Dにおいて、本開示の教示は、グローバルポジショニングシステム(GPS)1089のマルチコア制御モジュールにおいて実現され得る。GPS1089は、GPS制御モジュール1090、電源1091、メモリ1092、記憶デバイス1093、および外部インタフェース1099を含むことができる。
GPS制御モジュール1090は、本開示の教示によるマルチコア制御モジュールを実装し得る。GPS制御モジュール1090は、外部インタフェース1099からの入力信号を受け取ることができる。外部インタフェース1099は、無線信号、USB、赤外線、および/またはイーサネット(登録商標)を含み得る。入力信号は、圧縮音声および/またはビデオを含むことができ、またMP3フォーマットと互換性を有し得る。さらに、GPS制御モジュール1090は、キーパッド、タッチパッド、または個々のボタン等のユーザ入力1096からの入力を受け取ることができる。GPS制御モジュール1090は、符号化、復号化、フィルタリング、および/またはフォーマッティングを含む入力信号処理を行い、出力信号を生成することができる。
GPS制御モジュール1090は、音声信号を音声出力1097に、およびビデオ信号をディスプレイ1098に出力することができる。音声出力1097は、スピーカおよび/または出力ジャックを含むことができる。ディスプレイ1098は、メニュー、アイコン等を含み得るグラフィカルユーザインタフェースを提示することができる。電源1091は、モバイルデバイス1089のコンポーネントに電力を提供する。メモリ1092は、ランダムアクセスメモリ(RAM)および/または不揮発性メモリを含むことができる。
不揮発性メモリは、フラッシュメモリ(NANDおよびNORフラッシュメモリを含む)、相変化メモリ、磁気RAM、ならびに、各メモリセルが2つを超える状態を有する多状態メモリ等、任意の好適な種類の半導体または固体メモリを含み得る。記憶デバイス1093は、DVDドライブ等の光学記憶デバイス、および/またはハードディスクドライブ(HDD)を含み得る。モバイルデバイスは、携帯情報端末、メディアプレーヤ、ラップトップ型コンピュータ、ゲーム機、または他のモバイルコンピューティングデバイスを含み得る。
図11Eにおいて、本開示の教示は、デスクトップ型コンピュータおよび/またはサーバ1100のマルチコア制御モジュール1103において実現され得る。デスクトップ型コンピュータおよび/またはサーバ1100は、マルチコア制御モジュール1103を含むマルチコア処理システム1102を備えることができる。デスクトップ型コンピュータおよび/またはサーバ1100は、I/Oコア1104、メモリ1106、およびI/Oデバイス1108をさらに備えることができる。デスクトップ型コンピュータおよび/またはサーバ1100は、電源1112により電力供給され得る。
マルチコア処理システム1102、I/Oコア1104、およびメモリ1106は、システムバス1110を介して通信することができる。I/Oデバイス1108は、ハードディスクドライブ(HDD)、コンパクトディスク(CD)ドライブ、デジタル多用途ディスク(DVD)ドライブ、ディスプレイ、キーボード、および他のI/Oデバイスを含むことができる。I/Oコア1104は、I/Oデバイス1108を制御するI/Oコントローラを備えることができる。マルチコア処理システム1102は、オペレーティングシステム(OS)、ならびにHDD、CDドライブ、および/またはDVDドライブに記憶されたアプリケーションを実行することができる。マルチコア制御モジュール1103は、マルチコア処理システム1102がアプリケーションを実行する際、向上した省力化および向上した性能を提供することができる。
ここで、当業者は、上記説明から、本開示の幅広い教示が様々な形態で実現され得ることを理解することができる。したがって、本開示は具体的な実施例を含むが、当業者には、図面、明細書および以下の特許請求の範囲を吟味すれば他の修正が明らかとなるため、本開示の真の範囲はそのように制限されるべきではない。

Claims (18)

  1. システムであって、
    前記システムが第1のモードで動作するときにアプリケーションを実行し、前記システムが第2のモードで動作するときに休止している、第1の非対称コアと、
    前記システムが前記第2のモードで動作するときに前記アプリケーションを実行する第2の非対称コアと、
    キャッシュミス率が所定の閾値を超えるときに、イベントを生成するコアプロファイルモジュールと、
    前記イベントに基づいて前記第1のモードと前記第2のモードとの間で前記システムの動作を切り替えるコア切り替えモジュールであって、第1の制御信号を受け取った後に前記第1の非対称コアによる前記アプリケーションの処理を選択的に停止し、前記第1の非対称コアの第1の状態を前記第2の非対称コアに転送する、コア切り替えモジュールと
    を備え、
    前記第2の非対称コアは、前記第2のモードにおいて前記アプリケーションの実行を再開し、
    前記コアプロファイルモジュールは、前記コア切り換えの頻度を監視し、前記コア切り換えの頻度が閾値を超えるときに、スラッシングを最小化するイベントを生成する、システム。
  2. 前記第2のモード中、前記第2の非対称コアが前記アプリケーションの実行を再開するときに、命令翻訳なしに命令が実行される、請求項1に記載のシステム。
  3. 前記コア切り替えモジュールは、前記コア切り替えモジュールが前記第1の非対称コアによる前記アプリケーションの処理を選択的に停止するときに、前記第1の状態を保存するとともに前記第2の非対称コアを起動し、前記第1の状態を使用して前記第2の非対称コアを初期化する、請求項1または2に記載のシステム。
  4. 前記コア切り替えモジュールは、前記第2の非対称コアが起動したときに前記第1の非対称コアを停止し、前記第1の非対称コアが停止した後は、前記第1の非対称コアに電力が供給されないか、または待機電力が供給される、請求項3に記載のシステム。
  5. 前記コア切り替えモジュールは、前記第2のモードと前記第1のモードとの間で前記システムの動作を切り替え、前記第1の制御信号を受け取った後に前記第2の非対称コアによる前記アプリケーションの処理を選択的に停止し、また前記第2の非対称コアの第2の状態を前記第1の非対称コアに転送し、前記第1の非対称コアは、前記第1のモードにおいて前記アプリケーションの実行を再開し、前記第1の制御信号は、割り込みが無効であることを示す、請求項1から4のいずれか一項に記載のシステム。
  6. 前記第1のモード中、前記第1の非対称コアが前記アプリケーションの実行を再開するときに、命令翻訳なしに命令が実行される、請求項5に記載のシステム。
  7. 前記コア切り替えモジュールは、前記コア切り替えモジュールが前記第2の非対称コアによる前記アプリケーションの処理を選択的に停止するときに、前記第2の状態を保存するとともに前記第1の非対称コアを起動し、前記第2の状態を使用して前記第1の非対称コアを初期化する、請求項5または6に記載のシステム。
  8. 前記コア切り替えモジュールは、前記第1の非対称コアが起動したときに前記第2の非対称コアを停止し、前記第2の非対称コアが停止した後は、前記第2の非対称コアに電力が供給されないか、または待機電力が供給される、請求項7に記載のシステム。
  9. 前記コア切り替えモジュールは、前記第1の非対称コアが起動できなかったときに前記第2の状態を使用して前記第2の非対称コアを初期化し、前記第2の非対称コアは、前記第2のモードにおいて前記アプリケーションの実行を再開し、前記割り込みが有効化される、請求項7または8に記載のシステム。
  10. 前記コアプロファイルモジュールは、前記アプリケーションのコア使用率、リソース使用率、および動作性能のうちの少なくとも1つに基づき第2の制御信号を生成する、請求項1から9のいずれか一項に記載のシステム。
  11. 前記第2の制御信号に基づきコア変更シーケンス(CCS)を開始するCCSモジュール
    をさらに備え、
    前記コア切り替えモジュールは、前記CCSに基づき、前記第1の非対称コアおよび前記第2の非対称コアのうちの一方と、前記第1の非対称コアおよび前記第2の非対称コアのうちの他方との間で前記アプリケーションの実行を切り替える、請求項10に記載のシステム。
  12. 前記システムの電力消費を制御し、前記第2の制御信号および前記電力消費に基づき第3の制御信号を生成する、電力制御モジュール
    をさらに備える、請求項10に記載のシステム。
  13. 前記第3の制御信号に基づきコア変更シーケンス(CCS)を開始するCCSモジュール
    をさらに備え、
    前記コア切り替えモジュールは、前記CCSに基づき、前記第1の非対称コアおよび前記第2の非対称コアのうちの一方と、前記第1の非対称コアおよび前記第2の非対称コアのうちの他方との間で前記アプリケーションの実行を切り替える、請求項12に記載のシステム。
  14. 前記第2の制御信号に基づき周波数変更シーケンス(FCS)を開始し、前記FCSに基づき前記第1および第2の非対称コアのうちの少なくとも1つの動作周波数を選択する、FCSモジュール
    をさらに備える、請求項11に記載のシステム。
  15. 前記第2の制御信号に基づき電圧変更シーケンス(VCS)を開始し、前記VCSに基づき前記第1および第2の非対称コアのうちの少なくとも1つの供給電圧を選択する、VCSモジュールをさらに備える、請求項11に記載のシステム。
  16. 複数の前記第1の非対称コア
    をさらに備え、
    前記コア切り替えモジュールは、前記システムが前記第1のモードで動作するときに、前記CCSに基づき、当該複数の前記第1の非対称コアのうちの2つ以上を選択的に動作状態および休止状態にする、請求項11、14または15に記載のシステム。
  17. 前記コア切り替えモジュールと選択的に通信して、
    割り込みを受け取り、
    前記アプリケーションから第1の信号を受け取り、
    前記割り込みおよび前記第1の信号を、前記コア切り替えモジュールにより動作状態にされた前記第1の非対称コアおよび前記第2の非対称コアのうちの一方にルーティングする、グルーロジックモジュール
    をさらに備える、請求項1から16のいずれか一項に記載のシステム。
  18. 前記コアプロファイルモジュールは、データキャッシュミス率、命令キャッシュミス率、および前記第1の非対称コアにより実行される周期毎の命令数のうちの少なくとも1つに基づき、前記アプリケーションを実行するための予測命令実行率を生成し、
    前記コア切り替えモジュールは、前記予測命令実行率に基づき、前記第1のモードと前記第2のモードとの間で動作を切り替える
    請求項1から17のいずれか一項に記載のシステム。
JP2010523107A 2007-08-27 2008-08-27 動的コア切り替え Active JP5257711B2 (ja)

Applications Claiming Priority (17)

Application Number Priority Date Filing Date Title
US96814307P 2007-08-27 2007-08-27
US60/968,143 2007-08-27
US97893607P 2007-10-10 2007-10-10
US60/978,936 2007-10-10
US98160607P 2007-10-22 2007-10-22
US60/981,606 2007-10-22
US2243108P 2008-01-21 2008-01-21
US61/022,431 2008-01-21
US2947608P 2008-02-18 2008-02-18
US61/029,476 2008-02-18
US4964108P 2008-05-01 2008-05-01
US61/049,641 2008-05-01
US5805008P 2008-06-02 2008-06-02
US61/058,050 2008-06-02
US12/145,660 2008-06-25
US12/145,660 US20080263324A1 (en) 2006-08-10 2008-06-25 Dynamic core switching
PCT/US2008/074416 WO2009029643A2 (en) 2007-08-27 2008-08-27 Dynamic core switching

Publications (3)

Publication Number Publication Date
JP2010538371A JP2010538371A (ja) 2010-12-09
JP2010538371A5 JP2010538371A5 (ja) 2011-10-13
JP5257711B2 true JP5257711B2 (ja) 2013-08-07

Family

ID=40388111

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010523107A Active JP5257711B2 (ja) 2007-08-27 2008-08-27 動的コア切り替え

Country Status (6)

Country Link
US (3) US20080263324A1 (ja)
EP (1) EP2193419B1 (ja)
JP (1) JP5257711B2 (ja)
CN (1) CN101790709A (ja)
TW (1) TWI484329B (ja)
WO (1) WO2009029643A2 (ja)

Families Citing this family (140)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8886917B1 (en) * 2007-04-25 2014-11-11 Hewlett-Packard Development Company, L.P. Switching to core executing OS like codes upon system call reading greater than predetermined amount of data
US9442758B1 (en) 2008-01-21 2016-09-13 Marvell International Ltd. Dynamic processor core switching
US8615647B2 (en) 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US8037350B1 (en) * 2008-04-30 2011-10-11 Hewlett-Packard Development Company, L.P. Altering a degree of redundancy used during execution of an application
US20110213950A1 (en) * 2008-06-11 2011-09-01 John George Mathieson System and Method for Power Optimization
US20110213947A1 (en) * 2008-06-11 2011-09-01 John George Mathieson System and Method for Power Optimization
US20090309243A1 (en) * 2008-06-11 2009-12-17 Nvidia Corporation Multi-core integrated circuits having asymmetric performance between cores
US20110213998A1 (en) * 2008-06-11 2011-09-01 John George Mathieson System and Method for Power Optimization
US9672019B2 (en) * 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9189049B2 (en) * 2008-12-24 2015-11-17 Stmicroelectronics International N.V. Power management in a device
US8122269B2 (en) * 2009-01-07 2012-02-21 International Business Machines Corporation Regulating power consumption in a multi-core processor by dynamically distributing power and processing requests by a managing core to a configuration of processing cores
JP4970479B2 (ja) * 2009-03-03 2012-07-04 ソニー株式会社 情報処理システム
US8364857B2 (en) * 2009-08-31 2013-01-29 Qualcomm Incorporated Wireless modem with CPU and auxiliary processor that shifts control between processors when in low power state while maintaining communication link to wireless network
US8839012B2 (en) * 2009-09-08 2014-09-16 Advanced Micro Devices, Inc. Power management in multi-GPU systems
US8619911B2 (en) 2009-12-15 2013-12-31 Stmicroelectronics International N.V. Quadrature signal decoding using a driver
US8654895B2 (en) * 2009-12-15 2014-02-18 Stmicroelectronics International N.V. Frequency modulated signal decoding using a driver
US8650629B2 (en) * 2009-12-16 2014-02-11 Intel Corporation Interface logic for a multi-core system-on-a-chip (SoC)
US8832483B1 (en) * 2009-12-16 2014-09-09 Applied Micro Cicuits Corporation System-on-chip with power-save mode processor
KR101651871B1 (ko) * 2009-12-28 2016-09-09 삼성전자주식회사 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
KR101640848B1 (ko) * 2009-12-28 2016-07-29 삼성전자주식회사 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
US8418187B2 (en) 2010-03-01 2013-04-09 Arm Limited Virtualization software migrating workload between processing circuitries while making architectural states available transparent to operating system
US8533505B2 (en) 2010-03-01 2013-09-10 Arm Limited Data processing apparatus and method for transferring workload between source and destination processing circuitry
US20110216078A1 (en) * 2010-03-04 2011-09-08 Paul Blinzer Method, System, and Apparatus for Processing Video and/or Graphics Data Using Multiple Processors Without Losing State Information
US8484495B2 (en) * 2010-03-25 2013-07-09 International Business Machines Corporation Power management in a multi-processor computer system
EP2555112A4 (en) * 2010-03-31 2014-08-13 Fujitsu Ltd MULTI-CYCLE PROCESSOR SYSTEM, POWER CONTROL METHOD AND PERFORMANCE CONTROL METHOD
US9811385B2 (en) * 2010-04-28 2017-11-07 Wind River Systems, Inc. Optimizing task management
US8751833B2 (en) * 2010-04-30 2014-06-10 Arm Limited Data processing system
US8381004B2 (en) 2010-05-26 2013-02-19 International Business Machines Corporation Optimizing energy consumption and application performance in a multi-core multi-threaded processor system
WO2011155047A1 (ja) * 2010-06-10 2011-12-15 富士通株式会社 マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム
GB2481232A (en) * 2010-06-16 2011-12-21 Advanced Risc Mach Ltd Cache for a multiprocessor system which can treat a local access operation as a shared access operation
US20110320766A1 (en) * 2010-06-29 2011-12-29 Youfeng Wu Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type
WO2012011901A1 (en) * 2010-07-21 2012-01-26 Hewlett-Packard Development Company, L.P. Accessing a local storage device using an auxiliary processor
CA2716646C (en) 2010-10-14 2020-04-07 Ibm Canada Limited - Ibm Canada Limitee Coordinated approach between middleware application and sub-systems
WO2012051972A2 (de) * 2010-10-19 2012-04-26 Conti Temic Microelectronic Gmbh Verfahren, zur effizienten nutzung eines zwei- oder mehrkernprozessors durch ein betriebssystem
TWI416843B (zh) * 2010-12-29 2013-11-21 Univ Nat Taiwan 動態電源排程與即時監控系統及其方法
WO2012120654A1 (ja) * 2011-03-08 2012-09-13 富士通株式会社 タスクスケジューリング方法およびマルチコアシステム
US8683243B2 (en) * 2011-03-11 2014-03-25 Intel Corporation Dynamic core selection for heterogeneous multi-core systems
US9645628B1 (en) * 2011-05-09 2017-05-09 EMC IP Holding Company LLC Combined data storage and computing appliance that provides scalable storage in a clustered computing environment
CN102759983A (zh) * 2011-05-10 2012-10-31 任少华 具有多个工作模式的计算机及其操作系统
GB2491915A (en) * 2011-06-08 2012-12-19 Inst Information Industry Super operating system for a heterogeneous computer system
CN106020424B (zh) * 2011-09-06 2019-08-06 英特尔公司 有功率效率的处理器体系结构
CN106095046A (zh) * 2011-09-06 2016-11-09 英特尔公司 有功率效率的处理器体系结构
US9069553B2 (en) * 2011-09-06 2015-06-30 Marvell World Trade Ltd. Switching tasks between heterogeneous cores
KR101873935B1 (ko) * 2011-09-06 2018-07-04 인텔 코포레이션 전력 효율적 프로세서 아키텍처
WO2013048468A1 (en) 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation
US8839429B2 (en) * 2011-11-07 2014-09-16 Qualcomm Incorporated Methods, devices, and systems for detecting return-oriented programming exploits
WO2013079988A1 (en) * 2011-11-28 2013-06-06 Freescale Semiconductor, Inc. Integrated circuit device, asymmetric multi-core processing module, electronic device and method of managing execution of computer program code therefor
US20130155081A1 (en) * 2011-12-15 2013-06-20 Ati Technologies Ulc Power management in multiple processor system
WO2013095411A1 (en) * 2011-12-21 2013-06-27 Intel Corporation INCORPORATING ACCESS CONTROL FUNCTIONALITY INTO A SYSTEM ON A CHIP (SoC)
US9569278B2 (en) 2011-12-22 2017-02-14 Intel Corporation Asymmetric performance multicore architecture with same instruction set architecture
WO2013100996A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Binary translation in asymmetric multiprocessor system
US9348594B2 (en) * 2011-12-29 2016-05-24 Intel Corporation Core switching acceleration in asymmetric multiprocessor system
US9727388B2 (en) * 2011-12-29 2017-08-08 Intel Corporation Migrating threads between asymmetric cores in a multiple core processor
WO2013101139A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Providing an asymmetric multicore processor system transparently to an operating system
KR101842200B1 (ko) 2012-01-31 2018-03-26 엘지전자 주식회사 이동 단말기 및 그 제어방법
KR101880452B1 (ko) 2012-02-06 2018-08-17 삼성전자주식회사 커널 수행 순서 스케줄링 방법 및 장치
KR101930752B1 (ko) * 2012-02-24 2018-12-19 삼성전자 주식회사 멀티 코어를 포함하는 전자 기기의 전력 제어 방법 및 장치
WO2013154539A1 (en) * 2012-04-10 2013-10-17 Empire Technology Development Llc Balanced processing using heterogeneous cores
US8954797B2 (en) * 2012-04-16 2015-02-10 International Business Machines Corporation Reconfigurable recovery modes in high availability processors
CN102789306A (zh) * 2012-06-11 2012-11-21 任少华 多模式智能计算机系统
US8799710B2 (en) * 2012-06-28 2014-08-05 International Business Machines Corporation 3-D stacked multiprocessor structures and methods to enable reliable operation of processors at speeds above specified limits
US9286116B2 (en) 2012-07-06 2016-03-15 Microsoft Technology Licensing, Llc Multiple core real-time task execution
US9354903B2 (en) * 2012-07-24 2016-05-31 Beijing Lenovo Software Ltd. Control method and electronic device
US9569279B2 (en) 2012-07-31 2017-02-14 Nvidia Corporation Heterogeneous multiprocessor design for power-efficient and area-efficient computing
US8766710B1 (en) 2012-08-10 2014-07-01 Cambridge Silicon Radio Limited Integrated circuit
US9471395B2 (en) * 2012-08-23 2016-10-18 Nvidia Corporation Processor cluster migration techniques
US9009508B2 (en) * 2012-08-28 2015-04-14 Advanced Micro Devices, Inc. Mechanism for reducing interrupt latency and power consumption using heterogeneous cores
US10554505B2 (en) 2012-09-28 2020-02-04 Intel Corporation Managing data center resources to achieve a quality of service
US9619284B2 (en) * 2012-10-04 2017-04-11 Intel Corporation Dynamically switching a workload between heterogeneous cores of a processor
CN102929713A (zh) * 2012-10-08 2013-02-13 清华大学 支持多操作系统并行的松散耦合异质多核处理系统
US8996902B2 (en) * 2012-10-23 2015-03-31 Qualcomm Incorporated Modal workload scheduling in a heterogeneous multi-processor system on a chip
CN102999151B (zh) * 2012-10-30 2016-09-28 惠州Tcl移动通信有限公司 降低电子设备功耗的方法以及电子设备
KR102005765B1 (ko) 2012-12-17 2019-07-31 삼성전자주식회사 시스템-온 칩과, 이의 동작 방법
CN103914121B (zh) * 2013-01-04 2017-04-19 华为技术有限公司 多机系统、用于优化多机系统功耗的方法及装置
US20150106601A1 (en) * 2013-01-10 2015-04-16 Huizhou Tcl Mobile Communication Co., Ltd Method for Automatically Adapting Application to Suitable Multicore Processing Mode and Mobile Device
US9367357B2 (en) * 2013-01-18 2016-06-14 Nec Corporation Simultaneous scheduling of processes and offloading computation on many-core coprocessors
US9086925B2 (en) * 2013-01-18 2015-07-21 Nec Laboratories America, Inc. Methods of processing core selection for applications on manycore processors
JP6042217B2 (ja) * 2013-01-28 2016-12-14 ルネサスエレクトロニクス株式会社 半導体装置、電子装置、及び半導体装置の制御方法
TWI507991B (zh) * 2013-02-27 2015-11-11 Rdc Semiconductor Co Ltd 多核心處理器及其相關控制方法與電腦系統
US10423216B2 (en) 2013-03-26 2019-09-24 Via Technologies, Inc. Asymmetric multi-core processor with native switching mechanism
JP6321325B2 (ja) 2013-04-03 2018-05-09 ルネサスエレクトロニクス株式会社 情報処理装置および情報処理方法
KR102110812B1 (ko) * 2013-05-30 2020-05-14 삼성전자 주식회사 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법
WO2014209401A1 (en) * 2013-06-28 2014-12-31 Intel Corporation Techniques to aggregate compute, memory and input/output resources across devices
JP2015035073A (ja) * 2013-08-08 2015-02-19 ルネサスエレクトロニクス株式会社 半導体装置及び半導体装置の制御方法
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
KR102114109B1 (ko) * 2013-10-17 2020-05-22 에스케이하이닉스 주식회사 데이터 저장 장치
CN103593036B (zh) * 2013-11-05 2016-05-11 三星半导体(中国)研究开发有限公司 动态调整电压/时钟频率的片上系统
US9563457B2 (en) 2013-11-18 2017-02-07 Bitdefender IPR Management Ltd. Enabling a secure environment through operating system switching
US9965279B2 (en) * 2013-11-29 2018-05-08 The Regents Of The University Of Michigan Recording performance metrics to predict future execution of large instruction sequences on either high or low performance execution circuitry
WO2015096001A1 (en) 2013-12-23 2015-07-02 Intel Corporation System-on-a-chip (soc) including hybrid processor cores
US20150200667A1 (en) * 2014-01-15 2015-07-16 Qualcomm Incorporated Collapsible glue logic systems and methods
CN106462212B (zh) * 2014-03-06 2022-03-04 博能电子公司 腕表、锻炼期间的设备省电方法及计算机可读的分布介质
US10146297B2 (en) 2014-03-06 2018-12-04 Polar Electro Oy Device power saving during exercise
KR102326945B1 (ko) 2014-03-14 2021-11-16 삼성전자 주식회사 태스크 마이그레이션 방법 및 장치
US9419905B2 (en) 2014-04-04 2016-08-16 International Business Machines Corporation Data streaming scheduler for dual chipset architectures that includes a high performance chipset and a low performance chipset
KR20150136345A (ko) * 2014-05-27 2015-12-07 삼성전자주식회사 태스크 그룹 전달 방법 및 이를 제공하는 전자 장치
KR20160004152A (ko) 2014-07-02 2016-01-12 삼성전자주식회사 멀티 프로세서의 태스크(task) 우선순위 결정 방법 및 이를 구현하는 전자장치
US9870226B2 (en) 2014-07-03 2018-01-16 The Regents Of The University Of Michigan Control of switching between executed mechanisms
CN104142729B (zh) * 2014-08-11 2019-04-23 联想(北京)有限公司 一种处理器的控制方法、装置和电子设备
CN104281243B (zh) * 2014-09-29 2017-11-10 大唐移动通信设备有限公司 一种射频远端设备的处理器及处理器复位方法
US20160116954A1 (en) * 2014-10-28 2016-04-28 Linkedln Corporation Dynamic adjustment of cpu operating frequency
US9582052B2 (en) * 2014-10-30 2017-02-28 Qualcomm Incorporated Thermal mitigation of multi-core processor
US10015006B2 (en) * 2014-11-05 2018-07-03 Georgia Tech Research Corporation Systems and methods for measuring side-channel signals for instruction-level events
US9891964B2 (en) 2014-11-19 2018-02-13 International Business Machines Corporation Network traffic processing
US9958932B2 (en) 2014-11-20 2018-05-01 Apple Inc. Processor including multiple dissimilar processor cores that implement different portions of instruction set architecture
US9898071B2 (en) 2014-11-20 2018-02-20 Apple Inc. Processor including multiple dissimilar processor cores
US9563431B2 (en) 2014-12-26 2017-02-07 Intel Corporation Techniques for cooperative execution between asymmetric processor cores
JP6481378B2 (ja) * 2015-01-15 2019-03-13 コニカミノルタ株式会社 画像形成装置、同装置におけるタスク制御方法及びタスク制御プログラム
US9690708B2 (en) 2015-05-19 2017-06-27 Qualcomm Incorporated Real-time cache behavior forecast using hypothetical cache
US9626295B2 (en) * 2015-07-23 2017-04-18 Qualcomm Incorporated Systems and methods for scheduling tasks in a heterogeneous processor cluster architecture using cache demand monitoring
US20170031724A1 (en) * 2015-07-31 2017-02-02 Futurewei Technologies, Inc. Apparatus, method, and computer program for utilizing secondary threads to assist primary threads in performing application tasks
JP2017046084A (ja) * 2015-08-25 2017-03-02 コニカミノルタ株式会社 画像処理装置、制御タスクの割り当て方法及び割り当てプログラム
JP6578824B2 (ja) * 2015-08-31 2019-09-25 コニカミノルタ株式会社 画像形成装置、同装置におけるタスク制御方法及びタスク制御プログラム
US9928115B2 (en) 2015-09-03 2018-03-27 Apple Inc. Hardware migration between dissimilar cores
JP6500707B2 (ja) * 2015-09-03 2019-04-17 コニカミノルタ株式会社 画像形成装置、同装置におけるタスク制御方法及びタスク制御プログラム
US9977488B1 (en) * 2016-03-10 2018-05-22 Changming Kong Electronic device with smart power management system
JP2016212907A (ja) * 2016-08-04 2016-12-15 インテル・コーポレーション 電力効率の優れたプロセッサアーキテクチャ
JP6409218B2 (ja) * 2016-08-04 2018-10-24 インテル・コーポレーション 電力効率の優れたプロセッサアーキテクチャ
FR3054902B1 (fr) * 2016-08-04 2019-06-21 Thales Procede et dispositif de distribution de partitions sur un processeur multi-coeurs
JP2017021811A (ja) * 2016-08-04 2017-01-26 インテル・コーポレーション 電力効率の優れたプロセッサアーキテクチャ
US10903665B2 (en) 2016-11-01 2021-01-26 Microsoft Technology Licensing, Llc Usage data based battery charge or discharge time determination
US11656666B2 (en) 2016-11-16 2023-05-23 Microsoft Technology Licensing, Llc Dynamic power source selection, charging, and discharging
US10488905B2 (en) 2016-11-16 2019-11-26 Microsoft Technology Licensing, Llc Dynamic energy storage device discharging
US10599481B2 (en) 2017-06-04 2020-03-24 Apple Inc. Scheduler for amp architecture using a closed loop performance controller and deferred inter-processor interrupts
US10725529B2 (en) 2017-06-26 2020-07-28 Microsoft Technology Licensing, Llc Target based power management
WO2019005093A1 (en) * 2017-06-30 2019-01-03 Intel Corporation MODIFYING THE PROCESSOR FREQUENCY BASED ON AN INTERRUPTION FREQUENCY
US10210923B2 (en) * 2017-07-12 2019-02-19 International Business Machines Corporation Activation of memory core circuits in an integrated circuit
US10698472B2 (en) * 2017-10-27 2020-06-30 Advanced Micro Devices, Inc. Instruction subset implementation for low power operation
US10713075B2 (en) 2017-11-30 2020-07-14 International Business Machines Corporation Workload manager control of dynamic thread mode switch
US11562288B2 (en) 2018-09-28 2023-01-24 Amazon Technologies, Inc. Pre-warming scheme to load machine learning models
US11436524B2 (en) * 2018-09-28 2022-09-06 Amazon Technologies, Inc. Hosting machine learning models
KR102692869B1 (ko) 2019-08-05 2024-08-08 삼성전자주식회사 프로세서의 주파수를 제어하는 전자 장치와 이의 동작 방법
CN112987986B (zh) * 2019-12-02 2022-08-16 Oppo广东移动通信有限公司 实现游戏应用的方法、装置、存储介质及电子设备
DE102019135293A1 (de) * 2019-12-19 2021-06-24 Endress+Hauser Process Solutions Ag Überwachungseinheit und Verfahren zur Überwachung der von Treibern einer Gerätezugriffseinrichtung belegten Ressourcen
KR102166644B1 (ko) * 2020-06-08 2020-10-16 삼성전자주식회사 복수의 이종 코어들을 포함하는 전자 시스템 및 이의 동작 방법
CN111694402B (zh) * 2020-06-11 2021-10-01 翱捷科技股份有限公司 单芯片异构系统的控制方法和可穿戴设备
TWI764759B (zh) * 2021-06-11 2022-05-11 円星科技股份有限公司 具備可靠容限設定的電路模組
CN115936080A (zh) * 2021-10-01 2023-04-07 三星电子株式会社 用于大规模计算的设备和方法
CN115509342B (zh) * 2022-10-31 2023-03-10 南京芯驰半导体科技有限公司 一种多核集群之间的切换方法及系统

Family Cites Families (131)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US650199A (en) * 1900-03-02 1900-05-22 Fred C Shellito Nut-lock.
US4425615A (en) * 1980-11-14 1984-01-10 Sperry Corporation Hierarchical memory system having cache/disk subsystem with command queues for plural disks
US5150465A (en) 1988-11-30 1992-09-22 Compaq Computer Corporation Mode-selectable integrated disk drive for computer
US5293500A (en) 1989-02-10 1994-03-08 Mitsubishi Denki K.K. Parallel processing method and apparatus
DE69033262T2 (de) * 1989-04-13 2000-02-24 Sandisk Corp., Santa Clara EEPROM-Karte mit Austauch von fehlerhaften Speicherzellen und Zwischenspeicher
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
US5455913A (en) 1990-05-14 1995-10-03 At&T Global Information Solutions Company System and method for transferring data between independent busses
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5502838A (en) 1994-04-28 1996-03-26 Consilium Overseas Limited Temperature management for integrated circuits
GB2286267A (en) 1994-02-03 1995-08-09 Ibm Energy-saving cache control system
EP0667579A1 (en) 1994-02-09 1995-08-16 Ballard Synergy Corporation Cache for optical storage device
JPH07271513A (ja) 1994-03-29 1995-10-20 Fujitsu Ltd ディスク制御方法及びディスク制御装置
US5596708A (en) * 1994-04-04 1997-01-21 At&T Global Information Solutions Company Method and apparatus for the protection of write data in a disk array
US5581736A (en) 1994-07-18 1996-12-03 Microsoft Corporation Method and system for dynamically sharing RAM between virtual memory and disk cache
US5659718A (en) * 1994-08-19 1997-08-19 Xlnt Designs, Inc. Synchronous bus and bus interface device
JPH0883148A (ja) 1994-09-13 1996-03-26 Nec Corp 磁気ディスク装置
GB9419246D0 (en) 1994-09-23 1994-11-09 Cambridge Consultants Data processing circuits and interfaces
US5815726A (en) * 1994-11-04 1998-09-29 Altera Corporation Coarse-grained look-up table architecture
US5768164A (en) * 1996-04-15 1998-06-16 Hewlett-Packard Company Spontaneous use display for a computing system
US6006320A (en) 1996-07-01 1999-12-21 Sun Microsystems, Inc. Processor architecture with independent OS resources
US5937423A (en) * 1996-12-26 1999-08-10 Intel Corporation Register interface for flash EEPROM memory arrays
JP3266029B2 (ja) 1997-01-23 2002-03-18 日本電気株式会社 マルチプロセッサシステムにおけるディスパッチング方式、ディスパッチング方法およびディスパッチングプログラムを記録した記録媒体
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6035408A (en) * 1998-01-06 2000-03-07 Magnex Corp. Portable computer with dual switchable processors for selectable power consumption
US6058414A (en) * 1998-01-07 2000-05-02 International Business Machines Corporation System and method for dynamic resource access in an asymmetric resource multiple processor computer system
US6219742B1 (en) * 1998-04-29 2001-04-17 Compaq Computer Corporation Method and apparatus for artificially generating general purpose events in an ACPI environment
JP3573957B2 (ja) * 1998-05-20 2004-10-06 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ内のプロセッサの動作速度制御方法及びコンピュータ
JP4324276B2 (ja) 1998-06-03 2009-09-02 株式会社日立グローバルストレージテクノロジーズ 磁気ディスク誤り訂正方法及び装置
SG83684A1 (en) * 1998-07-07 2001-10-16 Compaq Computer Corp Computer system performing machine specific tasks before going to a low power state
EP0974908A2 (en) * 1998-07-24 2000-01-26 Interuniversitair Microelektronica Centrum Vzw Optimized virtual memory management for dynamic data types
US6282614B1 (en) * 1999-04-15 2001-08-28 National Semiconductor Corporation Apparatus and method for reducing the power consumption of a microprocessor with multiple levels of caches
US6732280B1 (en) * 1999-07-26 2004-05-04 Hewlett-Packard Development Company, L.P. Computer system performing machine specific tasks before going to a low power state
US6457135B1 (en) * 1999-08-10 2002-09-24 Intel Corporation System and method for managing a plurality of processor performance states
US6624816B1 (en) 1999-09-10 2003-09-23 Intel Corporation Method and apparatus for scalable image processing
US6735708B2 (en) 1999-10-08 2004-05-11 Dell Usa, L.P. Apparatus and method for a combination personal digital assistant and network portable device
US6501999B1 (en) 1999-12-22 2002-12-31 Intel Corporation Multi-processor mobile computer system having one processor integrated with a chipset
US6631474B1 (en) * 1999-12-31 2003-10-07 Intel Corporation System to coordinate switching between first and second processors and to coordinate cache coherency between first and second processors during switching
US6496915B1 (en) * 1999-12-31 2002-12-17 Ilife Solutions, Inc. Apparatus and method for reducing power consumption in an electronic data storage system
AU2001235012A1 (en) 2000-02-15 2001-08-27 O2 Micro, Inc. Audio controller for portable electronic devices
US6594724B1 (en) * 2000-03-30 2003-07-15 Hitachi Global Storage Technologies Netherlands B.V. Enhanced DASD with smaller supplementary DASD
US6633445B1 (en) 2000-06-09 2003-10-14 Iomega Corporation Method and apparatus for electrically coupling components in a removable cartridge
US6968469B1 (en) * 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
JP2002007373A (ja) 2000-06-20 2002-01-11 Fujitsu Ltd 半導体装置
US6785829B1 (en) 2000-06-30 2004-08-31 Intel Corporation Multiple operating frequencies in a processor
US6628469B1 (en) * 2000-07-11 2003-09-30 International Business Machines Corporation Apparatus and method for low power HDD storage architecture
US6631469B1 (en) * 2000-07-17 2003-10-07 Intel Corporation Method and apparatus for periodic low power data exchange
JP2002073497A (ja) 2000-09-04 2002-03-12 Sharp Corp 情報処理装置及び情報処理方法
KR100353731B1 (ko) * 2000-11-01 2002-09-28 (주)니트 젠 일회성 지문템플릿을 이용한 사용자 인증시스템 및 방법
US7036138B1 (en) 2000-11-08 2006-04-25 Digeo, Inc. Method and apparatus for scheduling broadcast information
US6735663B2 (en) 2000-12-18 2004-05-11 Dell Products L.P. Combination personal data assistant and personal computing device
US6785767B2 (en) 2000-12-26 2004-08-31 Intel Corporation Hybrid mass storage system and method with two different types of storage medium
US20020086719A1 (en) 2000-12-29 2002-07-04 Pankaj Kedia Low power subsystem for portable computers
US6986066B2 (en) * 2001-01-05 2006-01-10 International Business Machines Corporation Computer system having low energy consumption
US7197584B2 (en) 2001-01-26 2007-03-27 Dell Products L.P. Removable personal digital assistant in a dual personal computer/personal digital assistant computer architecture
US20020129288A1 (en) * 2001-03-08 2002-09-12 Loh Weng Wah Computing device having a low power secondary processor coupled to a keyboard controller
US6976180B2 (en) * 2001-03-16 2005-12-13 Dualcor Technologies, Inc. Personal electronics device
US7184003B2 (en) * 2001-03-16 2007-02-27 Dualcor Technologies, Inc. Personal electronics device with display switching
US7231531B2 (en) * 2001-03-16 2007-06-12 Dualcor Technologies, Inc. Personal electronics device with a dual core processor
US20030153354A1 (en) 2001-03-16 2003-08-14 Cupps Bryan T. Novel personal electronics device with keypad application
US6725336B2 (en) 2001-04-20 2004-04-20 Sun Microsystems, Inc. Dynamically allocated cache memory for a multi-processor unit
KR20040044182A (ko) 2001-06-04 2004-05-27 엔시티 그룹, 인코포레이티드 통신네트워크의 유효 대역폭 증가 시스템 및 방법
US6901485B2 (en) * 2001-06-21 2005-05-31 International Business Machines Corporation Memory directory management in a multi-node computer system
US6925529B2 (en) * 2001-07-12 2005-08-02 International Business Machines Corporation Data storage on a multi-tiered disk system
US6996745B1 (en) * 2001-09-27 2006-02-07 Sun Microsystems, Inc. Process for shutting down a CPU in a SMP configuration
US7248585B2 (en) * 2001-10-22 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a packet classifier
US6859856B2 (en) * 2001-10-23 2005-02-22 Flex P Industries Sdn. Bhd Method and system for a compact flash memory controller
US8181118B2 (en) * 2001-11-28 2012-05-15 Intel Corporation Personal information device on a mobile computing platform
JP2003167656A (ja) 2001-11-29 2003-06-13 Sony Corp 携帯型情報機器
US6804632B2 (en) 2001-12-06 2004-10-12 Intel Corporation Distribution of processing activity across processing hardware based on power consumption considerations
US6639827B2 (en) * 2002-03-12 2003-10-28 Intel Corporation Low standby power using shadow storage
US7424623B2 (en) 2002-03-28 2008-09-09 O2 Micro International Limited Personal computer integrated with personal digital assistant
JP2003323417A (ja) 2002-04-30 2003-11-14 Matsushita Electric Ind Co Ltd 半導体集積回路装置
KR100441608B1 (ko) * 2002-05-31 2004-07-23 삼성전자주식회사 낸드 플래시 메모리 인터페이스 장치
US7269752B2 (en) 2002-06-04 2007-09-11 Lucent Technologies Inc. Dynamically controlling power consumption within a network node
US7100060B2 (en) * 2002-06-26 2006-08-29 Intel Corporation Techniques for utilization of asymmetric secondary processing resources
US7082495B2 (en) * 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
KR100448905B1 (ko) 2002-07-29 2004-09-16 삼성전자주식회사 낸드플래쉬메모리를 시스템구동 및 저장용으로 사용하는장치
JP2005539309A (ja) 2002-09-16 2005-12-22 ティギ・コーポレイション 記憶システムアーキテクチャおよび多重キャッシュ装置
US6922754B2 (en) 2002-12-09 2005-07-26 Infabric Technologies, Inc. Data-aware data flow manager
US7080242B2 (en) * 2002-12-19 2006-07-18 Hewlett-Packard Development Company, L.P. Instruction set reconciliation for heterogeneous symmetric-multiprocessor systems
US6775180B2 (en) * 2002-12-23 2004-08-10 Intel Corporation Low power state retention
US6839801B2 (en) 2003-01-06 2005-01-04 International Business Machines Corporation Deferred writing of data to be synchronized on magnetic tape employing a non-volatile store
US7254730B2 (en) * 2003-02-14 2007-08-07 Intel Corporation Method and apparatus for a user to interface with a mobile computing device
US7080271B2 (en) 2003-02-14 2006-07-18 Intel Corporation Non main CPU/OS based operational environment
AU2003900764A0 (en) * 2003-02-20 2003-03-06 Secure Systems Limited Bus bridge security system and method for computers
EP1616331A1 (en) 2003-04-14 2006-01-18 Koninklijke Philips Electronics N.V. Format mapping scheme for universal drive device
US7093147B2 (en) 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
US7221331B2 (en) * 2003-05-05 2007-05-22 Microsoft Corporation Method and system for auxiliary display of information for a computing device
US7240228B2 (en) 2003-05-05 2007-07-03 Microsoft Corporation Method and system for standby auxiliary processing of information for a computing device
US7069388B1 (en) * 2003-07-10 2006-06-27 Analog Devices, Inc. Cache memory data replacement strategy
US7047387B2 (en) 2003-07-16 2006-05-16 Microsoft Corporation Block cache size management via virtual memory manager feedback
US7925298B2 (en) * 2003-09-18 2011-04-12 Vulcan Portals Inc. User interface for a secondary display module of a mobile electronic device
US20050066209A1 (en) * 2003-09-18 2005-03-24 Kee Martin J. Portable electronic device having high and low power processors operable in a low power mode
US7500127B2 (en) 2003-09-18 2009-03-03 Vulcan Portals Inc. Method and apparatus for operating an electronic device in a low power mode
JP2005134820A (ja) 2003-10-31 2005-05-26 Canon Inc 自動焦点調整装置及びプログラム
US7017059B2 (en) 2003-12-12 2006-03-21 Cray Canada Inc. Methods and apparatus for replacing cooling systems in operating computers
US20050132239A1 (en) * 2003-12-16 2005-06-16 Athas William C. Almost-symmetric multiprocessor that supports high-performance and energy-efficient execution
AU2003295260A1 (en) * 2003-12-16 2005-07-05 Real Enterprise Solutions Development B.V. Memory management in a computer system using different swapping criteria
US20050152670A1 (en) 2004-01-14 2005-07-14 Quantum Corporation Auxiliary memory in a tape cartridge
US7334142B2 (en) * 2004-01-22 2008-02-19 International Business Machines Corporation Reducing power consumption in a logically partitioned data processing system with operating system call that indicates a selected processor is unneeded for a period of time
US7136973B2 (en) 2004-02-04 2006-11-14 Sandisk Corporation Dual media storage device
US7421602B2 (en) 2004-02-13 2008-09-02 Marvell World Trade Ltd. Computer with low-power secondary processor and secondary display
US20060050429A1 (en) 2004-02-19 2006-03-09 Gunderson Neal F Flex spring for sealed connections
US20070094444A1 (en) * 2004-06-10 2007-04-26 Sehat Sutardja System with high power and low power processors and thread transfer
US7788427B1 (en) 2005-05-05 2010-08-31 Marvell International Ltd. Flash memory interface for disk drive
US7634615B2 (en) 2004-06-10 2009-12-15 Marvell World Trade Ltd. Adaptive storage system
US7730335B2 (en) 2004-06-10 2010-06-01 Marvell World Trade Ltd. Low power computer with main and auxiliary processors
US7617359B2 (en) 2004-06-10 2009-11-10 Marvell World Trade Ltd. Adaptive storage system including hard disk drive with flash interface
US20070083785A1 (en) * 2004-06-10 2007-04-12 Sehat Sutardja System with high power and low power processors and thread transfer
US7702848B2 (en) 2004-06-10 2010-04-20 Marvell World Trade Ltd. Adaptive storage system including hard disk drive with flash interface
US7574541B2 (en) 2004-08-03 2009-08-11 Lsi Logic Corporation FIFO sub-system with in-line correction
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US20060069848A1 (en) * 2004-09-30 2006-03-30 Nalawadi Rajeev K Flash emulation using hard disk
US20060075185A1 (en) * 2004-10-06 2006-04-06 Dell Products L.P. Method for caching data and power conservation in an information handling system
US7472222B2 (en) 2004-10-12 2008-12-30 Hitachi Global Storage Technologies Netherlands B.V. HDD having both DRAM and flash memory
US7346787B2 (en) * 2004-12-07 2008-03-18 Intel Corporation System and method for adaptive power management
US7882299B2 (en) 2004-12-21 2011-02-01 Sandisk Corporation System and method for use of on-chip non-volatile memory write cache
JP2006266511A (ja) 2005-03-22 2006-10-05 Matsushita Electric Ind Co Ltd 製氷装置
US20060218324A1 (en) 2005-03-25 2006-09-28 Matsushita Electrical Industrial Co., Ltd Systems and methods for flexible data transfers in SDIO and/or MMC
US20060230226A1 (en) 2005-04-12 2006-10-12 M-Systems Flash Disk Pioneers, Ltd. Hard disk drive with optional cache memory
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US7461275B2 (en) * 2005-09-30 2008-12-02 Intel Corporation Dynamic core swapping
EP1996993B1 (en) 2006-01-10 2015-03-11 Cupp Computing As Dual mode power-saving computing system
US7492368B1 (en) 2006-01-24 2009-02-17 Nvidia Corporation Apparatus, system, and method for coalescing parallel memory requests
US7814307B2 (en) * 2006-03-16 2010-10-12 Microsoft Corporation Fast booting a computing device to a specialized experience
EP1855181A2 (en) * 2006-05-10 2007-11-14 Marvell World Trade Ltd. System with high power and low power processors and thread transfer
US20080005462A1 (en) 2006-06-30 2008-01-03 Mosaid Technologies Incorporated Method of configuring non-volatile memory for a hybrid disk drive
US7717350B2 (en) * 2006-06-30 2010-05-18 Advanced Micro Devices, Inc. Portable computing platform having multiple operating modes and heterogeneous processors
EP2058725A3 (en) * 2007-06-11 2015-07-22 Mediatek Inc. Method of and apparatus for reducing power consumption within an integrated circuit
JP2011045406A (ja) 2009-08-25 2011-03-10 Hamanaka Kk まきぐるみ手芸方法及び該方法により製作された造形物
JP5289267B2 (ja) 2009-10-14 2013-09-11 大光電気株式会社 リードスイッチ制御装置

Also Published As

Publication number Publication date
WO2009029643A2 (en) 2009-03-05
EP2193419B1 (en) 2018-10-31
TW200915061A (en) 2009-04-01
US9158355B2 (en) 2015-10-13
US20080288748A1 (en) 2008-11-20
US20160034022A1 (en) 2016-02-04
CN101790709A (zh) 2010-07-28
US20080263324A1 (en) 2008-10-23
TWI484329B (zh) 2015-05-11
EP2193419A2 (en) 2010-06-09
JP2010538371A (ja) 2010-12-09
WO2009029643A3 (en) 2009-12-30

Similar Documents

Publication Publication Date Title
JP5257711B2 (ja) 動的コア切り替え
US11366511B2 (en) Distribution of tasks among asymmetric processing elements
US10775875B2 (en) Devices and methods for switching and communication among multiple operating systems and application management methods thereof
US8650426B2 (en) System and method for controlling central processing unit power in a virtualized system
US9894605B2 (en) Low-power wearable devices and methods for switching and communication among multiple operating systems and application management methods thereof
US20030061383A1 (en) Predicting processor inactivity for a controlled transition of power states
JP5312478B2 (ja) データ・プロセッサのパフォーマンス予測
CN106155265B (zh) 有功率效率的处理器体系结构
US9411390B2 (en) Integrated circuit device having power domains and partitions based on use case power optimization
US6016548A (en) Apparatus for controlling duty ratio of power saving of CPU
US8782454B2 (en) System and method for managing clock speed based on task urgency
US20090204835A1 (en) Use methods for power optimization using an integrated circuit having power domains and partitions
JPH09138716A (ja) 電子計算機
JPH0850523A (ja) コンピュータシステムにおける消費電力管理方法及び装置
JP2005528664A (ja) Cpuのパワーダウン方法及びそのための装置
US8717371B1 (en) Transitioning between operational modes in a hybrid graphics system
US8717372B1 (en) Transitioning between operational modes in a hybrid graphics system
JP2023505459A (ja) 異種プロセッサ間のタスク遷移の方法
US20160216756A1 (en) Power management in computing devices
JP2003345474A (ja) コンピュータシステムおよびデータ転送制御方法
Arakawa et al. Development of processor cores for digital consumer appliances
Cohen et al. The Low-Power Design of Android Application and Intel Graphics Performance Analyzers (Intel GPA): Assisted Power Optimization

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110826

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130201

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130326

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130410

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160502

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5257711

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250