JP6838897B2 - Cpuの作動方法と、該cpuを含むシステムの作動方法 - Google Patents

Cpuの作動方法と、該cpuを含むシステムの作動方法 Download PDF

Info

Publication number
JP6838897B2
JP6838897B2 JP2016169324A JP2016169324A JP6838897B2 JP 6838897 B2 JP6838897 B2 JP 6838897B2 JP 2016169324 A JP2016169324 A JP 2016169324A JP 2016169324 A JP2016169324 A JP 2016169324A JP 6838897 B2 JP6838897 B2 JP 6838897B2
Authority
JP
Japan
Prior art keywords
idle
core
executing
worker
qos
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
JP2016169324A
Other languages
English (en)
Other versions
JP2017049999A (ja
Inventor
庚 澤 李
庚 澤 李
知 恩 朴
知 恩 朴
承 奎 金
承 奎 金
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2017049999A publication Critical patent/JP2017049999A/ja
Application granted granted Critical
Publication of JP6838897B2 publication Critical patent/JP6838897B2/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/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • 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/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/324Power saving characterised by the action undertaken by lowering clock frequency
    • 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/3243Power saving in microcontroller unit
    • 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
    • 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/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、CPU(Central Processing Unit)の作動方法に係り、特に、該CPUのQoS(Quality of Service)を調節することができる該CPUの作動方法と、該CPUを含むシステムの作動方法と、に関する。
マイクロプロセッサ、特に、モバイルアプリケーションプロセッサは、性能要求と低電力要求とをいずれも満足させるために、動的に作動周波数を変更する技術、例えば、DFS(Dynamic Frequency Scaling)技術またはDVFS(Dynamic Voltage and Frequency Scaling)技術を使用している。マイクロプロセッサは、作動クロック信号の周波数を調節するために、さまざまな施策を使う。
モバイル環境は、使える電力の量に制限があり、発熱に脆弱なので、前記施策は、マイクロプロセッサの性能を制約し、マイクロプロセッサは、消費電力と発熱とを最小化するように設計されている。従来のマイクロプロセッサで使われるDVFSのDVFSガバナ(governor)は、マイクロプロセッサでの消費電力に最適化されているので、或るタスク(task)が、マイクロプロセッサの可用な性能を引き続き最大に使うとしても、マイクロプロセッサに供給される作動周波数は、即座に最大作動周波数には増加しない。
米国特許出願公開第2013/0074085号明細書 米国特許第8560869号明細書 特開2007−334497号公報 米国特許第8381004号明細書 米国特許第8321614号明細書 米国特許第7882379号明細書 米国特許出願公開第2011/0145615号明細書 米国特許出願公開第2014/0173311号明細書 米国特許出願公開第2014/0115368号明細書 米国特許出願公開第2015/0106642号明細書
本発明が解決しようとする技術的な課題は、高性能が急に必要な場合を自動で感知し、該感知の結果によって、QoS最小値を自動で設定することができるCPUの作動方法と、該CPUを含むシステムの作動方法と、を提供することにある。
本発明の実施形態によると、第1ロードトラッカ及びブースタを保存する第1メモリと、前記第1ロードトラッカ及び前記ブースタを実行する第1コアと、を含むCPUの作動方法は、前記第1ロードトラッカが、前記第1コアで第1アイドルタスクが実行されるか否かを判断する段階と、前記第1ロードトラッカが、判断の結果に該当する第1イベントを生成する段階と、前記第1ロードトラッカが、生成された第1イベントを前記ブースタにブロードキャストする段階と、前記ブースタが、前記第1イベントに基づいて前記第1コアのQoS最小値を設定する段階と、を含む。
本発明の実施形態によると、第1ロードトラッカ、ブースタ、及びQoSコントローラを保存する第1メモリと、前記第1ロードトラッカ、前記ブースタ、及び前記QoSコントローラを実行する第1コアと、を含むCPU;クロック管理ユニット;及び電力管理ユニットを含むシステム・オン・チップの作動方法は、前記第1ロードトラッカが、前記第1コアで第1アイドルタスクが実行されるか否かを判断する段階と、前記第1ロードトラッカが、判断の結果に該当する第1イベントを生成する段階と、前記第1ロードトラッカが、生成された第1イベントを前記ブースタにブロードキャストする段階と、前記ブースタが、前記第1イベントに基づいて前記第1コアのQoS最小値を設定する段階と、前記QoSコントローラが、設定されたQoS最小値に基づいて周波数制御信号と電圧制御信号とを生成する段階と、前記クロック管理ユニットが、前記周波数制御信号に応答して、前記第1コアに供給される第1クロック信号の第1周波数を制御し、前記電力管理ユニットが、前記電圧制御信号に応答して、前記第1コアに第1作動電圧を供給するPMICを制御する制御信号を生成する段階と、を含む。
本発明の実施形態によると、第1ロードトラッカ、ブースタ、及びQoSコントローラを保存する第1メモリと、前記第1ロードトラッカ、前記ブースタ、及び前記QoSコントローラを実行する第1コアと、を含むCPU;クロック管理ユニット;電力管理ユニット;及び電力管理ICを含むコンピューティングシステムの作動方法は、前記第1ロードトラッカが、前記第1コアで第1アイドルタスクが実行されるか否かを判断する段階と、前記第1ロードトラッカが、判断の結果に該当する第1イベントを生成する段階と、前記第1ロードトラッカが、生成された第1イベントを前記ブースタにブロードキャストする段階と、前記ブースタが、前記第1イベントに基づいて前記第1コアのQoS最小値を設定する段階と、前記QoSコントローラが、設定されたQoS最小値に基づいて第1周波数制御信号と第1電圧制御信号とを生成する段階と、前記クロック管理ユニットが、前記第1周波数制御信号に応答して、前記第1コアに供給される第1クロック信号の第1周波数を制御する段階と、前記電力管理ユニットが、前記第1電圧制御信号に応答して、第1制御信号を前記電力管理ICに出力する段階と、前記電力管理ICが、前記第1制御信号に応答して、前記第1コアに供給される第1作動電圧を制御する段階と、を含む。
本発明の実施形態によるCPUの作動方法は、高性能が急に必要な場合を自動で感知し、該感知の結果によって、QoS最小値を自動で設定することができる。
本発明の実施形態によるCPUの作動方法は、CPUのロードを周期的にポーリング(polling)せずとも、ロードが発生した時、発生をインタラプト基盤で検出することができる。
本発明の実施形態によるコンピュータシステムのブロック図。 図1に示されたCPUの実施形態を示す図。 図1に示されたCPUによって実行されるソフトウェアコンポーネントを示す。図 本発明の実施形態によるブースティングを説明する概念図。 図3に示されたソフトウェアコンポーネントによって行われるQoS最小値を制御する方法を説明するフローチャート。 図3に示された本発明の実施形態によるソフトウェアコンポーネントによって行われるQoS最小値を制御する方法を説明するフローチャート。 図3に示された本発明の実施形態によるソフトウェアコンポーネントによって行われるQoS最小値を制御する方法を説明するフローチャート。 図3に示された本発明の実施形態によるソフトウェアコンポーネントによって行われるQoS最小値を制御する方法を説明するフローチャート。 図2に示されたQoSコントローラの実施形態を示す図。 図1に示されたCPUの実施形態を示す図。 図10に示されたCPUを用いて行われるブースティングレベルを制御する方法を説明する概念図。 図10に示されたCPUを用いて行われるブースティングレベルを制御する方法を説明する概念図。 図10に示されたCPUで実行されるソフトウェアコンポーネントを用いてQoS最小値を制御する方法を説明する概念図。 図10に示された本発明の実施形態によるCPUで実行されるソフトウェアコンポーネントを用いてQoS最小値を制御する方法を説明するフローチャート。 図10に示された本発明の実施形態によるCPUで実行されるソフトウェアコンポーネントを用いてQoS最小値を制御する方法を説明するフローチャート。 図10に示された本発明の実施形態によるCPUで実行されるソフトウェアコンポーネントを用いてQoS最小値を制御する方法を説明するフローチャート。 図3に示されたアイドルモジュールに、アイドルワーカーコールバックを登録する過程を説明するプログラムコードの実施形態を示す図。 図3に示されたアイドルモジュールに登録されたアイドルワーカーコールバックでアイドル開始ワーカーとアイドル終了ワーカーのスケジュールと取り消しとを説明するプログラムコードの実施形態を示す図。
本発明の実施形態は、CPUの性能(performance)を向上させる方法に関するものである。実施形態によると、CPUは、1つまたはそれ以上のコア(cores)を含みうる。実施形態によると、コアのそれぞれは、1つの半導体基板(または、1つの半導体チップ)を共有することもでき、互いに異なる半導体チップとして具現可能である。ここで、コアは、プロセッサまたはプロセッサコアを意味する。
本明細書で、アイドルタスク(idle task)の実行如何によって、CPUまたはCPUを含むコンピュータシステムのQoS最小値を設定するということは、CPUまたはコンピュータシステムの性能を高めるための作動を意味する。本明細書で、QoS最小値の設定は、CPUまたはCPUを含むコンピュータシステムのブースティングレベル(boosting level)の設定を含みうる。ここで、設定は、特定の値のプログラムまたは特定の値の変更を含みうる。スケジューラが呼び出さ(call)れた時、準備状態のタスクが1つもなければ、アイドルタスクが実行可能である。
ここで、QoSは、DVFSを意味し、QoS最小値は、DVFSの最小作動周波数と最小作動電圧とのうちの少なくとも1つを意味する。
DVFSガバナは、CPU(または、コア)の作動周波数を変更するモジュール(例えば、ソフトウェアまたはソフトウェアコンポーネント)であって、運用体制(Operating System;OS)によって実行可能である。ブースティングは、DVFSガバナの管理またはDVFSガバナの基本値を無視し、CPU(または、コア)の作動周波数及び/または作動電圧を急激に増加させる作動を意味する。したがって、ブーストされたコアは、DVFSの最大作動周波数(または、最大作動周波数に準する作動周波数)及び/または最大作動電圧(または、最大作動周波数に準する作動電圧)で作動することができる。例えば、CPUがベンチマークプログラムを実行する時、CPUに対するブースティングは必要である。
本明細書で、ブースティングは、スケジューラブースティングとHMP(Heterogeneous Multiprocessor architectures)ブースティングとを含みうる。スケジューラブースティングは、スケジューラのパラメータを変更してCPUの処理量(throughput)を最大化する作動を意味する。例えば、スケジューラの少なくとも1つのパラメータは、nice、balance interval、及びHZを含みうるが、これに限定されるものではない。例えば、niceは、修正されたスケジューリング優先権を有するプログラムを実行すること(run a program with modified scheduling priority)を意味し、balance intervalは、CPUまたはコアの間でタスク再割り当てを通じてロードバランシング(load balancing)を行う周期を意味し、HZは、秒当たりクロックティックスの個数(the number of clock ticks per second)を意味する。
HMPブースティングは、低電力コア(例えば、リトルコア(little core))に割り当てられたタスクを高性能コア(例えば、ビッグコア(big core))に強制に割り当てる作動を意味する。
本発明の実施形態によるブースタは、少なくとも1つのロードトラッカ(load tracker)から出力されたイベント(event)を受信し、該受信されたイベントに基づいてブースティング作動の開始と終了、ブースティングレベルの変更、及び/またはブーストに関連したプロセッサ(または、プロセッサで実行されるOS)に従属的な(dependent)作動を制御することができる。
本明細書で、スケジュール(schedule)は、ワークキュー(work queue)にタイムアウト値と開始アドレスをライト(write)する作動を意味し、スケジュールの取り消し(cancel)は、ワークキューにライトされたタイムアウト値と開始アドレスをイレーズ(erase)する作動を意味する。
図1は、本発明の実施形態によるコンピュータシステムのブロック図である。図1を参照すれば、コンピュータシステム100は、制御回路200、電力管理IC270、第1メモリ装置280、及び第2メモリ装置290を含みうる。
コンピュータシステム100は、PC(Personal Computer)またはモバイル装置として具現可能である。例えば、モバイル装置は、ラップトップコンピュータ、携帯電話、スマートフォン、タブレットPC、PDA(Personal Digital Assistant)、EDA(Enterprise Digital Assistant)、デジタルスチルカメラ(Digital Still Camera)、デジタルビデオカメラ(Digital Video Camera)、PMP(Portable Multimedia Player)、PND(Personal Navigation DeviceまたはPortable Navigation Device)、携帯用ゲームコンソール(handheld game console)、モバイルインターネット装置(Mobile Internet Device;MID)、ウェアラブル(wearable)コンピュータ、モノのインターネット(Internet of Things;IoT)装置、万物のインターネット(Internet of Everything;IoE)装置、ドローン(drone)、または電子ブック(e−book)として具現可能であるが、これに限定されるものではない。
制御回路200は、電力管理IC270、第1メモリ装置280、及び第2メモリ装置290の作動を制御することができる。制御回路200は、集積回路(IC)、マザーボード、システム・オン・チップ(System on Chip;SoC)、マイクロプロセッサ、アプリケーションプロセッサ(Application Processor;AP)、モバイルAP、チップセット(Chip Set)、または半導体チップのセットとして具現可能であるが、これに限定されるものではない。
制御回路200は、バス201、CPU210、クロック制御ユニット(Clock Control Unit;CMU)220、電力制御ユニット(Power Management Unit;PMU)230、グラフィックスプロセッシングユニット(Graphics Processing Unit;GPU)240、第1メモリインターフェース250、第2メモリインターフェース260、及び入出力インターフェース265を含みうる。
各構成要素210、240、250、260、及び265は、バス201を通じてデータを送受信することができる。バス201は、AMBA(Advanced Microcontroller Bus Architecture)、AHB(Advanced High−performance Bus)、APB(Advanced Peripheral Bus)、AXI(Advanced eXtensible Interface)、ASB(Advanced System Bus)、ACE(AXI Coherency Extensions)、またはこれらの結合として具現可能であるが、これに限定されるものではない。
CPU210は、1つまたはそれ以上のコアを含みうる。CPU210は、第1作動電圧PW1と第1クロック信号CLK1とを用いて作動することができる。CPU210は、本明細書で説明されるソフトウェアコンポーネント、例えば、ロードトラッカ、ブースタ、及びQoSコントローラを実行することができる。実施形態によると、ロードトラッカ、ブースタ、及びQoSコントローラは、ハードウェアコンポーネントとして具現可能である。実施形態によると、ロードトラッカ、ブースタ及びQoSコントローラは、CPU210のメモリ(例えば、命令キャッシュ(Instruction Cache))に保存することができる。
CPU210は、ソフトウェアコンポーネント(または、ハードウェアコンポーネント)を用いてクロック制御信号CTR_Cと電力制御信号CTR_Pとを生成し、クロック制御信号CTR_CをCMU220に出力し、電力制御信号CTR_PをPMU230に出力することができる。電力制御信号CTR_Pは、電圧制御信号とも呼ばれる。
CMU220は、クロック制御信号CTR_Cを用いて、各クロック信号CLK1〜CLK5の周波数を制御することができる。各クロック信号CLK1〜CLK5の周波数は、互いに同一または異なりうる。
PMU230は、電力制御信号CTR_Pを用いて制御信号CTRを生成し、制御信号CTRをPMIC270に出力することができる。PMIC270は、制御信号CTRを用いて、各作動電圧PW1〜PW6のレベルを制御することができる。各作動電圧PW1〜PW6のレベルは、互いに同一または異なりうる。PMIC270は、制御信号CTRを用いて、各構成要素200、280、及び290に供給される作動電圧のレベルを制御することができる。周波数の制御またはレベルの制御は、増加、保持、または減少を含みうる。各制御信号CTR_C、CTR_P、及びCTRは、1つまたはそれ以上の信号(例えば、アナログ信号またはデジタル信号)を含みうる。
CMU220とPMU230との制御によって、コンピュータシステム100に対するDVS(Dynamic Voltage Scaling)、DFS(Dynamic Frequency Scaling)またはDVFSは、遂行(または、制御)される。
GPU240は、第2作動電圧PW2と第2クロック信号CLK2とを用いて、グラフィックスデータを処理することができる。グラフィックスデータは、2Dグラフィックスデータまたは3Dグラフィックスデータを含みうる。
第1メモリインターフェース250は、第3作動電圧PW3と第3クロック信号CLK3とを用いて、バス201と第1メモリ装置280との間で送受信するデータを処理(または、インターフェース)することができる。第1メモリインターフェース250は、メモリコントローラの機能を行うことができる。第1メモリ装置280は、RAM(Random Access Memory)、DRAM(Dynamic RAM)またはSRAM(Static RAM)として具現可能であるが、これに限定されるものではない。
第2メモリインターフェース260は、第4作動電圧PW4と第4クロック信号CLK4とを用いて、バス201と第2メモリ装置290との間で送受信するデータを処理(または、インターフェース)することができる。第2メモリインターフェース260は、メモリコントローラの機能を行うことができる。第2メモリ装置290は、不揮発性メモリ装置として具現可能である。
不揮発性メモリ装置は、フラッシュベースストレージ(flash based storage)として具現可能であるが、これに限定されるものではない。例えば、フラッシュベースストレージは、SSD(Solid−State Drive or Solid−State Disk)、エンベデッドSSD(embedded SSD;eSSD)、ユニバーサルフラッシュストレージ(Universal Flash Storage;UFS)、マルチメディアカード(MultiMedia Card;MMC)、エンベデッドMMC(embedded MMC;eMMC)またはマネージド(managed)NANDとして具現可能であるが、これに限定されるものではない。
入出力インターフェース265は、第5作動電圧PW5と第5クロック信号CLK5とを用いて、外部装置とデータを送受信することができる。入出力インターフェース265は、SPI(Serial Peripheral Interface)、I2C(Inter Integrated Circuit Communications)、SATA(Serial Advanced Technology Attachment)、SATAe(SATA express)、SAS(Serial Attached Small Computer System Interface;SCSI)、PCIe(Peripheral Component Interconnect express)またはMIPI(登録商標)(Mobile Industry Processor Interface)を支援することができるインターフェースとして具現可能であるが、これに限定されるものではない。
図2は、CPUを示す。図2に示されたCPU210Aは、図1に示されたCPU210の実施形態を示す。図1に示されたCPU210の実施形態によるCPU210Aは、1つのコア211、第1メモリ装置213及び第2メモリ装置215を含みうる。コア211は、第1メモリ装置213と第2メモリ装置215のそれぞれの作動を制御することができる。第1メモリ装置213は、命令キャッシュ213を含み、第2メモリ装置215は、データキャッシュ(data cache)215を含みうる。たとえ、図2では、レベル−1キャッシュ213、215が示されているが、キャッシュ213、215のそれぞれは、レベル−2キャッシュとして具現可能である。
図2には、QoS制御モジュール300が示されている。本発明の実施形態によるQoS制御モジュール300は、ロードトラッカ310、ブースタ330及びQoSコントローラ340を含みうる。QoS制御モジュール300は、図3に示された構成要素337、350、及び380をさらに含みうる。
QoS制御モジュール300は、ベンチマークプログラムが実行されるときのように高性能が急激に必要な場合、ベンチマークプログラムの実行を自動で感知して、CPU210、制御回路200またはコンピュータシステム100の性能を高めて、パワー最適化されているDFS施策またはDVFS施策を修正せずとも、CPU210AのQoSを調節することができる。前記施策は、ガバナを意味する。
QoS制御モジュール300は、周期的なポーリングに依存せず、ロード(load)またはタスクの発生をインタラプト基盤で感知することができる。インタラプト(interrupt)は、コンピュータシステム100のユーザの入力、タイマの出力、及び他のコアから出力された信号に生成されうる。QoS制御モジュール300は、コア211が休まず、作動する時と休む時とをポーリングなしにインタラプト基盤で感知することができる。
図3は、図1に示されたCPUによって実行されるソフトウェアコンポーネントを示す。図1から図3を参照すれば、QoS制御モジュール300は、ロードトラッカ310、ブースタ330、及びQoSコントローラ340を含みうる。実施形態によって、QoS制御モジュール300は、QoS関連ファイルシステム337、アイドルモジュール350、及びワークキュー380をさらに含みうる。
ロードトラッカ310は、コア211でアイドルタスク370が実行されるか否かを判断し、該判断の結果に該当するイベントEVENT1またはEVENT2を生成し、イベントEVENT1またはEVENT2をブースタ330にブロードキャスト(broadcast)することができる。ブースタ330は、イベントEVENT1またはEVENT2に基づいてコア211のQoS最小値を設定することができる。
図4は、本発明の実施形態によるブースティングを説明する概念図である。図4を参照すれば、番号301は、ブースティングが必要ないタスクを意味し、番号303は、ブースティングが必要なタスクを意味する。ブースティングの観点から、STHは、ブースティング開始スレショルド時間(boosting start threshold time)を示し、ETHは、ブースティング終了スレショルド時間(boosting end threshold time)を示す。アイドルタスクの観点から、STHは、アイドル終了ワーカー(idle end worker)のタイムアウト時間またはアイドル終了ワーカーの満了時間(expire time)を示し、ETHは、アイドル開始ワーカー(idle start worker)のタイムアウト時間またはアイドル開始ワーカーの満了時間を示す。
図4に示したように、コア211が、ブースティングが必要ないタスクを実行する時、コア211はブースティングされない。しかし、コア211がアイドル(idle)に進入しても、アイドル時間が短い時(例えば、時間がSTHよりも短い時)、コア211のブースティングは保持されうる。すなわち、QoS制御モジュール300は、コア211がブースティングされる時、QoS最小値を設定することができる。
図5は、図3に示されたソフトウェアコンポーネントによって行われるQoS最小値を制御する方法を説明するフローチャートである。図3から図5を参照すれば、コア211によって実行されるQoS制御モジュール300、例えば、ロードトラッカ310は、アイドルタスク370が実行されるか否かを判断することができる(ステップS110)。
アイドルタスク370が実行されれば(図3の371またはステップS110のYES)、ロードトラッカ310は、ブースティング終了またはブースティングレベルの減少を指示する減少指示イベントEVENT1を生成することができる(ステップS112)。アイドルタスク370が実行されなければ(ステップS110のNO)、例えば、アイドルタスク370が終了すれば(図3の375)、ロードトラッカ310は、ブースティング開始またはブースティングレベルの増加を指示する増加指示イベントEVENT2を生成することができる(ステップS114)。
QoS制御モジュール300、例えば、ブースタ330は、減少指示イベントEVENT1または増加指示イベントEVENT2に応答して、ブースティング(または、ブースティングレベル)を制御するためのブースティング制御値またはQoS最小値を設定することができる(ステップS116)。すなわち、ブースタ330は、減少指示イベントEVENT1または増加指示イベントEVENT2をパージング(parsing)し、該パージングの結果に該当する値をQoS関連ファイルシステム337に保存することができる。QoSコントローラ340は、QoS関連ファイルシステム337に保存されたブースティング制御値またはQoS最小値に基づいて、ブースティング制御またはQoS最小値制御のための制御信号を生成することができる(ステップS118)。例えば、前記制御信号は、周波数制御信号CTR_Cと電力制御信号CTR_Pとを含みうる。QoS関連ファイルシステム337は、性能関連パラメータまたはパージングの結果に該当する値を保存するコンピュータファイル(computer file)を意味する。
図6は、図3に示されたソフトウェアコンポーネントによって行われるQoS最小値を制御する方法を説明するフローチャートである。図3と図6とを参照すれば、ロードトラッカ310は、アイドルタスク370が始まるか否かを判断することができる(ステップS210)。
アイドルタスク370が始まれば(図3の371またはステップS210のYES)、アイドルモジュール350に保存されたアイドル開始ワーカーコールバック351が、ワークキュー380に保存された以前(previous)アイドル終了ワーカーのスケジュール(または、タイマのタイムアウト時間または満了時間)を取り消すことができる(ステップS220)。しかし、ワークキュー380に以前アイドル終了ワーカーが存在しない時、過程(ステップS220)は省略(または、スキップ(skip))されうる。
アイドル開始ワーカーコールバック351は、アイドル開始ワーカー311をスケジュールすることができる(ステップS222)。したがって、ワークキュー380には、アイドル開始ワーカー311に該当するアイドル開始ワーカー381がスケジュールまたはキューイング(queuing)されうる。例えば、アイドル開始ワーカーコールバック351は、アイドル開始ワーカー311または381のタイマのタイムアウト時間または満了時間を設定することができる。
ワークキュー380は、アイドル開始ワーカー381に設定された満了時間が満了(または、経過)したか否かを判断することができる(ステップS224)。満了時間が満了していなければ(ステップS224のNO)、ワークキュー380は、過程(ステップS224)を繰り返すか、相次いで(continuously)実行することができる。しかし、満了時間が満了すれば(ステップS224のYES)、アイドル開始ワーカー311または381は、ブースティング終了またはブースティングレベルの減少を指示する減少指示イベントEVENT1を生成し、減少指示イベントEVENT1をブースタ330にブロードキャストすることができる(ステップS226)。
ブースタ330は、減少指示イベントEVENT1に応答して、ブースティング(または、ブースティングレベル)を制御するためのブースティング制御値またはQoS最小値を設定することができる(ステップS240)。すなわち、ブースタ330は、減少指示イベントEVENT1をパージングし、該パージングの結果に該当する値をQoS関連ファイルシステム337に保存することができる。QoSコントローラ340は、QoS関連ファイルシステム337に保存されたブースティング制御値またはQoS最小値に基づいて、ブースティング制御またはQoS最小値制御のための制御信号を生成することができる(ステップS242)。例えば、制御信号は、周波数制御信号CTR_Cと電力制御信号CTR_Pとを含みうる。
アイドル状態373のアイドルタスク370が終了すれば(図3の375またはステップS210のNO)、アイドルモジュール350に保存されたアイドル終了ワーカーコールバック353は、アイドル終了ワーカー313をスケジュールすることができる(ステップS230)。したがって、ワークキュー380には、アイドル終了ワーカー313に該当するアイドル終了ワーカー383がスケジュールまたはキューイングされうる。例えば、アイドル終了ワーカーコールバック353は、アイドル終了ワーカー383のタイマのタイムアウト時間または満了時間を設定することができる。
ワークキュー380は、アイドル終了ワーカー383に設定された満了時間が満了(または、経過)したか否かを判断することができる(ステップS232)。満了時間が満了していなければ(ステップS232のNO)、ワークキュー380は、過程(ステップS232)を繰り返すか、相次いで実行することができる。
しかし、満了時間が満了すれば(ステップS232のYES)、アイドル終了ワーカー311または383は、アイドル開始ワーカー311または381のスケジュール(または、タイマのタイムアウト値または満了時間)を取り消すことができる(ステップS234)。アイドル終了ワーカー313または383は、ブースティング開始またはブースティングレベルの増加を指示する増加指示イベントEVENT2を生成し、増加指示イベントEVENT2をブースタ330にブロードキャストすることができる(ステップS236)。
ブースタ330は、増加指示イベントEVENT2に応答して、ブースティング(または、ブースティングレベル)を制御するためのブースティング制御値またはQoS最小値を設定することができる(ステップS240)。すなわち、ブースタ330は、増加指示イベントEVENT2をパージングし、該パージングの結果に該当する値をQoS関連ファイルシステム337に保存することができる。QoSコントローラ340は、QoS関連ファイルシステム337に保存されたブースティング制御値またはQoS最小値に基づいて、ブースティング制御またはQoS最小値制御のための制御信号を生成することができる(ステップS242)。例えば、前記制御信号は、周波数制御信号CTR_Cと電力制御信号CTR_Pとを含みうる。
図7及び図8は、図3に示されたソフトウェアコンポーネントによって行われるQoS最小値を制御する方法を説明するフローチャートである。
図1、図3、図7、及び図8を参照すれば、コンピュータシステム100が初期化される時、またはブーティング(boot)時に(ステップS310)、ロードトラッカ310は、アイドルコールバック(例えば、アイドル開始ワーカーコールバック351とアイドル終了ワーカーコールバック353)をアイドルモジュール350に登録することができる(ステップS312)。ブーティング時に(ステップS310)、ロードトラッカ310は、アイドル開始ワーカー311とアイドル終了ワーカー313とを生成することができる。ブーティング時に(ステップS310)、ブースタ330は、ロードトラッカ310によって生成されたアイドル開始ワーカー311とアイドル終了ワーカー313のそれぞれのタイムアウト時間または満了時間を設定することができる。
アイドルタスク370が実行される時(図3の371または図7のステップS314)、アイドルモジュール350は、アイドルタスク370の実行371によって生成されたインタラプトINT1を感知し、アイドル開始ワーカーコールバック351を呼び出すことができる(ステップS316)。
アイドル開始ワーカーコールバック351は、ワークキュー380にキューされた(queued)アイドル終了ワーカーが存在する時、アイドル終了ワーカーのスケジュール(または、タイマに設定されたタイムアウト時間または満了時間)を取り消すか、削除することができる(ステップS318)。アイドル開始ワーカーコールバック351は、アイドル開始ワーカー311または381のスケジュール前提条件を判断し(ステップS320)、前提条件が満足される時、アイドル開始ワーカーコールバック351は、アイドル開始ワーカー311または381をスケジュールすることができる(ステップS322)。
例えば、(1)アイドル開始ワーカーがワークキュー380に係留(pending)されておらず、アイドル終了ワーカーがワークキュー380に係留されていない時、または(2)アイドル開始ワーカーがワークキュー380に係留されておらず、コア211がブーストされている時、アイドル開始ワーカーコールバック351は、アイドル開始ワーカー311または381をスケジュールすることができる(ステップS322)。
ワークキュー380は、アイドル開始ワーカー381に設定された満了時間が満了(または、経過)したか否かを判断することができる(ステップS324)。満了時間が満了していなければ(ステップS324のNO)、ワークキュー380は、過程(ステップS324)を繰り返すか、相次いで実行することができる。
しかし、満了時間が満了すれば(ステップS324のYES)、アイドル開始ワーカー311または381は、ブースティング終了またはブースティングレベルの減少を指示する減少指示イベントEVENT1を生成し、減少指示イベントEVENT1をブースタ330にブロードキャストすることができる(ステップS326)。
ブースタ330のイベント受信器331は、減少指示イベントEVENT1に応答してブースティングエンダ335を呼び出すことができる(ステップS328)。例えば、ブースタ330は、減少指示イベントEVENT1をパージングし、該パージングの結果によって、ブースティングエンダ335を呼び出すことができる(ステップS328)。ブースティングエンダ335は、予め定義されたとおりにQoSと関連したパラメータをQoS関連ファイルシステム337に設定することができる(ステップS330)。QoSコントローラ340は、QoS関連ファイルシステム337に保存されたブースティング制御値またはQoS最小値に基づいて、ブースティング制御またはQoS最小値制御のための制御信号を生成することができる(ステップS332)。例えば、制御信号は、周波数制御信号CTR_Cと電力制御信号CTR_Pとを含みうる。
アイドルタスク370が実行されることによって、コンピュータシステム100は、アイドル(または、アイドル状態)を保持することができる(図3の373)。アイドルタスク370が終了する時(図3の375または図7のステップS340)、アイドルモジュール350は、アイドルタスク370の終了(図3の375)によって生成されたインタラプトINT2を感知し、アイドル終了ワーカーコールバック353を呼び出すことができる(ステップS342)。
アイドル終了ワーカーコールバック353は、アイドル終了ワーカー313または383のスケジュール前提条件を判断し(ステップS344)、前提条件が満足される時、アイドル終了ワーカーコールバック353は、アイドル終了ワーカー313または383をスケジュールすることができる(ステップS346)。
例えば、(1)アイドル終了ワーカーがワークキュー380に係留されておらず、アイドル開始ワーカーがワークキュー380に係留されている時、または(2)アイドル終了ワーカーがワークキュー380に係留されておらず、コア211がブーストされない時、アイドル終了ワーカーコールバック353は、アイドル終了ワーカー313または383をスケジュールすることができる(ステップS346)。
ワークキュー380は、アイドル終了ワーカー383に設定された満了時間が満了(または、経過)したか否かを判断することができる(ステップS348)。満了時間が満了していなければ(ステップS348のNO)、ワークキュー380は、過程(ステップS348)を行うことができる。
しかし、満了時間が満了すれば(ステップS348のYES)、アイドル終了ワーカー313または383は、ワークキュー380にキューされたアイドル開始ワーカーが存在する時、アイドル開始ワーカーのスケジュール(または、タイマに設定されたタイムアウト時間または満了時間)を取り消すか、削除することができる(ステップS350)。アイドル終了ワーカー313は、ブースティング開始またはブースティングレベルの増加を指示する増加指示イベントEVENT2を生成し、増加指示イベントEVENT2をブースタ330にブロードキャストすることができる(ステップS352)。
ブースタ330のイベント受信器331は、増加指示イベントEVENT2に応答してブースティングスタータ333を呼び出すことができる(ステップS328)。例えば、ブースタ330は、増加指示イベントEVENT2をパージングし、該パージングの結果によって、ブースティングスタータ333を呼び出すことができる(ステップS328)。ブースティングスタータ333は、予め定義されたとおりにQoSと関連したパラメータをQoS関連ファイルシステム337に設定することができる(ステップS330)。QoSコントローラ340は、QoS関連ファイルシステム337に保存されたブースティング制御値またはQoS最小値に基づいて、ブースティング制御またはQoS最小値制御のための制御信号を生成することができる(ステップS332)。例えば、制御信号は、周波数制御信号CTR_Cと電力制御信号CTR_Pとを含みうる。
図9は、図2に示されたQoSコントローラの実施形態を示す。図2のQoSコントローラ340の実施形態によるQoSコントローラ340Aは、DVFSプログラムとして具現可能である。QoSコントローラ340Aは、DVFSガバナ341、CMUドライバ343、及びPMUドライバ345を含みうる。
DVFSガバナ341は、QoS関連システムファイル337からブースティング制御値またはQoS最小値をリード(read)し、解析し(analyze)、該解析の結果に該当する解析値をCMUドライバ343とPMUドライバ345とに伝送しうる。CMUドライバ343は、解析値に基づいて周波数制御信号CTR_Cを生成し、周波数制御信号CTR_CをCMU220に伝送しうる。PMUドライバ345は、解析値に基づいて電力制御信号CTR_Pを生成し、電力制御信号CTR_PをPMU230に伝送しうる。
図10は、図1に示されたCPUの実施形態を示す。図10を参照すれば、CPU210Bは、4個のコア、第1コア210−1、第2コア210−2、第3コア210−3及び第4コア210−4を含むと仮定する。しかし、本発明の技術的思想が、CPU210Bに含まれたコアの個数に限定されるものではない。CPU210Bは、各コア210−1、210−2、210−3、及び210−4に関連した命令キャッシュ(I−Cache)とデータキャッシュ(D−Cache)とを含むと仮定する。命令キャッシュ(I−Cache)とデータキャッシュ(D−Cache)は、CPU210Bのメモリを含みうる。
第1コア210−1は、第1ロードトラッカ310−1、ブースタ330、QoS関連システムファイル337、QoSコントローラ340、アイドルモジュール350−1、及びワークキュー380−1を含み(または、実行)うる。第1コア210−1は、クロック信号CLK1_1と作動電圧PW1_1とを用いて作動することができる。例えば、図10に示したように、各構成要素310−1、330、337、340、350−1、及び380−1は、第1コア210−1の命令キャッシュ(I−Cache)に保存され、各構成要素310−1、330、337、340、350−1、及び380−1は、第1コア210−1によって実行可能である。
コンピュータシステム100が初期化(または、ブーティング)される時、第1ロードトラッカ310−1は、第1コア210−1に対する第1アイドル開始ワーカーコールバックと第1アイドル終了ワーカーコールバックとを第1アイドルモジュール350−1に登録し、第1コア210−1に対する第1アイドル開始ワーカーと第1アイドル終了ワーカーとを生成することができる。コンピュータシステム100が初期化される時、ブースタ330は、第1アイドル開始ワーカーと第1アイドル終了ワーカーのそれぞれの満了時間を設定することができる。
第1コア210−1で第1アイドルタスクが実行される時、第1アイドルモジュール350−1は、第1アイドルモジュール350−1に登録された第1アイドル開始ワーカーコールバックを呼び出すことができる。第1コア210−1で第1アイドルタスクが実行されれば、第1アイドル開始ワーカーコールバックは、第1ワークキュー380−1に既に存在するアイドル開始ワーカーのスケジュールを取り消すことができる。
(1)第1ワークキュー380−1にアイドル開始ワーカーが係留中ではなく、第1ワークキュー380−1にアイドル終了ワーカーが係留中ではない時、または(2)第1ワークキュー380−1にアイドル開始ワーカーが係留中ではなく、第1コア210−1がブースティング中であれば、第1アイドル開始ワーカーコールバックは、第1アイドル開始ワーカーをスケジュールすることができる。
第1ワークキュー380−1は、第1アイドル開始ワーカーの満了時間が満了(または、経過)したか否かを判断することができる。第1アイドル開始ワーカーの満了時間が満了(または、経過)した後、第1アイドル開始ワーカーは、第1コア210−1に対するビジーコアカウントを1だけ減少させ、減少指示イベントEVENTAをブースタ330に伝送しうる。
第1コア210−1で第1アイドルタスクの実行が終了する時、第1アイドルモジュール350−1は、第1アイドルモジュール350−1に登録された第1アイドル終了ワーカーコールバックを呼び出すことができる。
(1)第1ワークキュー380−1にアイドル終了ワーカーが係留中ではなく、第1ワークキュー380−1にアイドル開始ワーカーが係留中である時、または(2)第1ワークキュー380−1にアイドル終了ワーカーが係留中ではなく、第1コア210−1がブースティング中ではない時、第1アイドル終了ワーカーコールバックは、第1アイドル終了ワーカーをスケジュールすることができる。
第1ワークキュー380−1は、第1アイドル終了ワーカーの満了時間が満了(または、経過)したか否かを判断することができる。第1アイドル終了ワーカーの満了時間が満了(または、経過)した後、第1アイドル終了ワーカーは、第1ワークキュー380−1にスケジュールされたアイドル開始ワーカーのスケジュールを取り消し、第1コア210−1に対するビジーコアカウントを1だけ増加させ、増加指示イベントEVENTAをブースタ330に伝送しうる。
第2コア210−2は、第2ロードトラッカ310−2、アイドルモジュール350−2、及びワークキュー380−2を含み(または、実行)うる。第2コア210−2は、クロック信号CLK1_2と作動電圧PW1_2とを用いて作動することができる。例えば、図10に示したように、各構成要素310−2、350−2、及び380−2は、第2コア210−2の命令キャッシュ(I−Cache)に保存され、各構成要素310−2、350−2、及び380−2は、第2コア210−2によって実行可能である。
コンピュータシステム100が初期化(または、ブーティング)される時、第2ロードトラッカ310−2は、第2コア210−2に対する第2アイドル開始ワーカーコールバックと第2アイドル終了ワーカーコールバックとを第2アイドルモジュール350−2に登録し、第2コア210−2に対する第2アイドル開始ワーカーと第2アイドル終了ワーカーとを生成することができる。コンピュータシステム100が初期化される時、第1コア210−1のブースタ330は、第2アイドル開始ワーカーと第2アイドル終了ワーカーのそれぞれの満了時間を設定することができる。
第2コア210−2で第2アイドルタスクが実行される時、第2アイドルモジュール350−2は、第2アイドルモジュール350−2に登録された第2アイドル開始ワーカーコールバックを呼び出すことができる。第2コア210−2で第2アイドルタスクが実行されれば、第2アイドル開始ワーカーコールバックは、第2ワークキュー380−2に既に存在するアイドル開始ワーカーのスケジュールを取り消すことができる。
(1)第2ワークキュー380−2にアイドル開始ワーカーが係留中ではなく、第2ワークキュー380−2にアイドル終了ワーカーが係留中ではない時、または(2)第2ワークキュー380−2にアイドル開始ワーカーが係留中ではなく、第2コア210−2がブースティング中であれば、第2アイドル開始ワーカーコールバックは、第2アイドル開始ワーカーをスケジュールすることができる。
第2ワークキュー380−2は、第2アイドル開始ワーカーの満了時間が満了(または、経過)したか否かを判断することができる。第2アイドル開始ワーカーの満了時間が満了(または、経過)した後、第2アイドル開始ワーカーは、第2コア210−2に対するビジーコアカウントを1だけ減少させ、減少指示イベントEVENTBをブースタ330に伝送しうる。
第2コア210−2で第2アイドルタスクの実行が終了する時、第2アイドルモジュール350−2は、第2アイドルモジュール350−2に登録された第2アイドル終了ワーカーコールバックを呼び出すことができる。
(1)第2ワークキュー380−2にアイドル終了ワーカーが係留中ではなく、第2ワークキュー380−2にアイドル開始ワーカーが係留中である時、または(2)第2ワークキュー380−2にアイドル終了ワーカーが係留中ではなく、第2コア210−2がブースティング中ではない時、第2アイドル終了ワーカーコールバックは、第2アイドル終了ワーカーをスケジュールすることができる。
第2ワークキュー380−2は、第2アイドル終了ワーカーの満了時間が満了(または、経過)したか否かを判断することができる。前記第2アイドル終了ワーカーの満了時間が満了(または、経過)した後、第2アイドル終了ワーカーは、第2ワークキュー380−2にスケジュールされたアイドル開始ワーカーのスケジュールを取り消し、第2コア210−2に対するビジーコアカウントを1だけ増加させ、増加指示イベントEVENTBをブースタ330に伝送しうる。
第3コア210−3は、第3ロードトラッカ310−3、アイドルモジュール350−3、及びワークキュー380−3を含み(または、実行)うる。第3コア210−3は、クロック信号CLK1_3と作動電圧PW1_3とを用いて作動することができる。例えば、図10に示したように、各構成要素310−3、350−3、及び380−3は、第3コア210−3の命令キャッシュ(I−Cache)に保存され、各構成要素310−3、350−3、及び380−3は、第3コア210−3によって実行可能である。
コンピュータシステム100が初期化(または、ブーティング)される時、第3ロードトラッカ310−3は、第3コア210−3に対する第3アイドル開始ワーカーコールバックと第3アイドル終了ワーカーコールバックとを第3アイドルモジュール350−3に登録し、第3コア210−3に対する第3アイドル開始ワーカーと第3アイドル終了ワーカーとを生成することができる。コンピュータシステム100が初期化される時、ブースタ330は、第3アイドル開始ワーカーと第3アイドル終了ワーカーのそれぞれの満了時間を設定することができる。
第3コア210−3で第3アイドルタスクが実行される時、第3アイドルモジュール350−3は、第3アイドルモジュール350−3に登録された第3アイドル開始ワーカーコールバックを呼び出すことができる。第3コア210−3で第3アイドルタスクが実行されれば、第3アイドル開始ワーカーコールバックは、第3ワークキュー380−3に既に存在するアイドル開始ワーカーのスケジュールを取り消すことができる。
(1)第3ワークキュー380−3にアイドル開始ワーカーが係留中ではなく、第3ワークキュー380−3にアイドル終了ワーカーが係留中ではない時、または(2)第3ワークキュー380−3にアイドル開始ワーカーが係留中ではなく、第3コア210−3がブースティング中であれば、第3アイドル開始ワーカーコールバックは、第3アイドル開始ワーカーをスケジュールすることができる。
第3ワークキュー380−3は、第3アイドル開始ワーカーの満了時間が満了(または、経過)したか否かを判断することができる。第3アイドル開始ワーカーの満了時間が満了(または、経過)した後、第3アイドル開始ワーカーは、第3コア210−3に対するビジーコアカウントを1だけ減少させ、減少指示イベントEVENTBをブースタ330に伝送しうる。
第3コア210−3で第3アイドルタスクの実行が終了する時、第3アイドルモジュール350−3は、第3アイドルモジュール350−3に登録された第3アイドル終了ワーカーコールバックを呼び出すことができる。
(1)第3ワークキュー380−3にアイドル終了ワーカーが係留中ではなく、第3ワークキュー380−3にアイドル開始ワーカーが係留中である時、または(2)第3ワークキュー380−3にアイドル終了ワーカーが係留中ではなく、第3コア210−3がブースティング中ではない時、第3アイドル終了ワーカーコールバックは、第3アイドル終了ワーカーをスケジュールすることができる。
第3ワークキュー380−3は、第3アイドル終了ワーカーの満了時間が満了(または、経過)したか否かを判断することができる。前記第3アイドル終了ワーカーの満了時間が満了(または、経過)した後、第3アイドル終了ワーカーは、第3ワークキュー380−3にスケジュールされたアイドル開始ワーカーのスケジュールを取り消し、第3コア210−3に対するビジーコアカウントを1だけ増加させ、増加指示イベントEVENTCをブースタ330に伝送しうる。
第4コア210−4は、第4ロードトラッカ310−4、アイドルモジュール350−4、及びワークキュー380−4を含み(または、実行)うる。第4コア210−4は、クロック信号CLK1_4と作動電圧PW1_4とを用いて作動することができる。例えば、図10に示したように、各構成要素310−4、350−4、及び380−4は、第4コア210−4の命令キャッシュ(I−Cache)に保存され、各構成要素310−4、350−4、及び380−4は、第4コア210−4によって実行可能である。
コンピュータシステム100が初期化(または、ブーティング)される時、第4ロードトラッカ310−4は、第4コア210−4に対する第4アイドル開始ワーカーコールバックと第4アイドル終了ワーカーコールバックとを第4アイドルモジュール350−4に登録し、第4コア210−4に対する第4アイドル開始ワーカーと第4アイドル終了ワーカーとを生成することができる。コンピュータシステム100が初期化される時、ブースタ330は、第4アイドル開始ワーカーと第4アイドル終了ワーカーのそれぞれの満了時間を設定することができる。
第4コア210−4で第4アイドルタスクが実行される時、第4アイドルモジュール350−4は、第4アイドルモジュール350−4に登録された第4アイドル開始ワーカーコールバックを呼び出すことができる。第4コア210−4で第4アイドルタスクが実行されれば、第4アイドル開始ワーカーコールバックは、第4ワークキュー380−4に既に存在するアイドル開始ワーカーのスケジュールを取り消すことができる。
(1)第4ワークキュー380−4にアイドル開始ワーカーが係留中ではなく、第4ワークキュー380−4にアイドル終了ワーカーが係留中ではない時、または(2)第4ワークキュー380−4にアイドル開始ワーカーが係留中ではなく、第4コア210−4がブースティング中であれば、第4アイドル開始ワーカーコールバックは、第4アイドル開始ワーカーをスケジュールすることができる。
第4ワークキュー380−4は、第4アイドル開始ワーカーの満了時間が満了(または、経過)したか否かを判断することができる。第4アイドル開始ワーカーの満了時間が満了(または、経過)した後、第4アイドル開始ワーカーは、第4コア210−4に対するビジーコアカウントを1だけ減少させ、減少指示イベントEVENTDをブースタ330に伝送しうる。
第4コア210−4で第4アイドルタスクの実行が終了する時、第4アイドルモジュール350−4は、第4アイドルモジュール350−4に登録された第4アイドル終了ワーカーコールバックを呼び出すことができる。
(1)第4ワークキュー380−4にアイドル終了ワーカーが係留中ではなく、第4ワークキュー380−4にアイドル開始ワーカーが係留中である時、または(2)第4ワークキュー380−4にアイドル終了ワーカーが係留中ではなく、第4コア210−4がブースティング中ではない時、第4アイドル終了ワーカーコールバックは、第4アイドル終了ワーカーをスケジュールすることができる。
第4ワークキュー380−4は、第4アイドル終了ワーカーの満了時間が満了(または、経過)したか否かを判断することができる。第4アイドル終了ワーカーの満了時間が満了(または、経過)した後、第4アイドル終了ワーカーは、第4ワークキュー380−4にスケジュールされたアイドル開始ワーカーのスケジュールを取り消し、第4コア210−2に対するビジーコアカウントを1だけ増加させ、増加指示イベントEVENTDをブースタ330に伝送しうる。
イベントEVENTA、EVENTB、EVENTC、及びEVENTDのうちの少なくとも1つがブースタ330にブロードキャストされれば、カーネルシステムコール(kernel system call)APIによって待機状態のスレッド(thread)がアウェイクし、ブースタ330は、受信された少なくとも1つのイベントをパージングすることができる。少なくとも1つのイベントがパージングされれば、ブースタ330は、各コア210−1、210−2、210−3、及び210−4に対するビジーコアカウントを確認(または、判断)することができる。ブースタ330は、確認の結果に該当する全体ビジーコアカウントに該当するQoS最小値をQoS関連システムファイル337に設定(または、ライト)することができる。QoSコントローラ340は、QoS関連システムファイル337から出力されたQoS最小値に基づいて、各コア210−1、210−2、210−3、及び210−4に対するQoS最小値を制御することができる制御信号CTR_C、CTR_Pを生成することができる。
第1クロック信号CLK1は、クロック信号CLK1_1〜CLK1_4を集合的(collectively)に表わし、第1作動電圧PW1は、作動電圧PW1_1〜PW1_4を集合的に表わす。しかし、CMU220は、周波数制御信号CTR_Cに基づいてクロック信号CLK1_1〜CLK1_4のそれぞれの周波数を制御することができる。また、PMU230は、電力制御信号CTR_Pに基づいて、作動電圧PW1_1〜PW1_4のそれぞれのレベルを制御することができる制御信号CTRを生成し、制御信号CTRをPMIC270に出力することができる。
各イベントEVENTA、EVENTB、EVENTC、及びEVENTDは、図3を参照して説明された減少指示イベントEVENT1または増加指示イベントEVENT2を表わすことができる。
各コア210−1、210−2、210−3、及び210−4の各ロードトラッカ310−1、310−2、310−3、及び310−4の構成と機能は、図3から図9を参照して説明されたロードトラッカ310の構造と機能と同一または類似している。各コア210−1、210−2、210−3、及び210−4の各アイドルモジュール350−1、350−2、350−3、及び350−4の構成と機能は、図3から図9を参照して説明されたアイドルモジュール350の機能と同一または類似している。各コア210−1、210−2、210−3、及び210−4の各ワークキュー380−1、380−2、380−3、及び380−4の構成と機能は、図3から図9を参照して説明されたワークキュー380の構成と機能と同一または類似している。
図11は、図10に示されたCPUを用いて行われるブースティングレベルを制御する方法を説明する概念図である。図10と図11とを参照すれば、各コア210−1、210−2、210−3、及び210−4のロードトラッカ310−1、310−2、310−3、及び310−4のアイドル開始ワーカーは、ビジーコアカウントを減少させる作動を行い、各ロードトラッカ310−1、310−2、310−3、及び310−4のアイドル終了ワーカーは、ビジーコアカウントを増加させる作動を行うことができる。ここで、ビジーコアカウントは、ブーストされるコアの個数を表わす。
例えば、各コア210−1、210−2、210−3、及び210−4でアイドルタスクが実行されれば、各コア210−1、210−2、210−3、及び210−4に対するビジーコアカウントは減少し、各コア210−1、210−2、210−3、及び210−4でアイドルタスクが終了すれば、各コア210−1、210−2、210−3、及び210−4に対するビジーコアカウントは増加する。
第1コア210−1で実行されるブースタ330は、各イベントEVENTA、EVENTB、EVENTC、及びEVENTDをパージングし、該パージングの結果によって、CPU210Bに対する全体ビジーコアカウントを計算することができる。
図11に示したように、第1時点T1で、第3コアCORE3210−3のみがブースティングが必要なタスクを行う時、第3コアCORE3210−3の第3ロードトラッカ310−3は、増加指示イベント(EVENTC=EVENT2)をブースタ330に伝送するので、ブースタ330によって計算された全体ビジーコアカウントは、1である。
第2時点T2で、第1コアCORE1210−1がブースティングが必要なタスクを行う時、第1コアCORE1210−1の第1ロードトラッカ310−1は、増加指示イベント(EVENTA=EVENT2)をブースタ330に伝送するので、ブースタ330によって計算された全体ビジーコアカウントは、2である。
第3時点T3で、第2コアCORE2210−2がブースティングが必要なタスクを行う時、第2コアCORE2210−2の第2ロードトラッカ310−2は、増加指示イベント(EVENTB=EVENT2)をブースタ330に伝送するので、ブースタ330によって計算された全体ビジーコアカウントは、3である。
第4時点T4で、ブースタ330によって計算された全体ビジーコアカウントは、3である。
第5時点T5で、第2コアCORE2210−2がブースティングが必要なタスクを終了しても、図4を参照して説明したように、ETHが満了しなければ、ブースタ330によって計算された全体ビジーコアカウントは、3を保持することができる。
第6時点T6で、ETHが満了した後に、第2コアCORE2210−2の第2ロードトラッカ310−2は、減少指示イベント(EVENTB=EVENT1)をブースタ330に伝送する。これにより、ブースタ330によって計算された全体ビジーコアカウントは、3から2に減少する。
第7時点T7で、すなわち、第3コアCORE3がブースティングが必要なタスクを終了し、ETHが経過した後、第3コアCORE3の第3ロードトラッカ310−3は、減少指示イベント(EVENTC=EVENT1)をブースタ330に伝送するので、ブースタ330によって計算された全体ビジーコアカウントは、2から1に減少する。
第8時点T8で、すなわち、第1コアCORE1がブースティングが必要なタスクを終了し、ETHが経過した後、第1コアCORE1の第1ロードトラッカ310−1は、減少指示イベント(EVENTA=EVENT1)をブースタ330に伝送するので、ブースタ330によって計算された全体ビジーコアカウントは、1から0に減少する。図11に示されたSTHとETHのそれぞれは、図4を参照して説明されたSTHとETHのそれぞれと同一である。
図12は、図10に示されたCPUを用いて行われるブースティングレベルを制御する方法を説明する概念図である。図4、図10、図11、及び図12を参照すれば、全体ビジーコアカウントが1または2である時のブースティングレベルは、レベル−1(LV1)であると仮定し、全体ビジーコアカウントが3または4である時のブースティングレベルは、レベル−2(LV2)であると仮定する。
図10に示された第1コア210−1と第2コア210−2のそれぞれは、リトルコアであり、第3コア210−3と第4コア210−4のそれぞれは、ビッグコアであると仮定する。MIFは、図1に示されたメモリインターフェース250、260のうちの少なくとも1つであり、INTは、図1に示された入出力インターフェース265であると仮定する。図10と図11とを参照して説明したように、第1コア210−1で実行されるブースタ330は、各コア210−1、210−2、210−3、及び210−4から出力された各イベントEVENTA、EVENTB、EVENTC、及びEVENTDに基づいて全体ビジーコアカウントを計算することができる。
第1コア210−1のブースタ330は、計算された全体ビジーコアカウントに基づいてQoS最小値をQoS関連システムファイル337に設定することができる。したがって、QoSコントローラ340は、QoS最小値を制御することができる制御信号CTR_C、CTR_Pを生成することができる。CMU220は、周波数制御信号CTR_Cに応答して、クロック信号CLK1_1、CLK1_2、CLK1_3、CLK1_4、CLK2、CLK3、CLK5、及びCLK5のうちの少なくとも1つのクロック信号の周波数を制御することができる。
例えば、ブースティングレベルがレベル−1(LV1)である時、CMU220は、ビッグコアに供給されるクロック信号の周波数を1.5GHzに調節し、リトルコアに供給されるクロック信号の周波数を1.5GHzに調節し、INTに供給されるクロック信号の周波数を500MHzに調節し、MIFに供給されるクロック信号の周波数を1.5GHzに調節し、HMPブーストをオン(on)させることができる。HMPブーストがオンになれば、リトルコアに割り当てられたタスクは、ビッグコアに強制に割り当てられる。
例えば、ブースティングレベルがレベル−2(VL2)である時、CMU220は、ビッグコアに供給されるクロック信号の周波数を2.0GHzに調節し、リトルコアに供給されるクロック信号の周波数を1.5GHzに調節し、INTに供給されるクロック信号の周波数を600MHzに調節し、MIFに供給されるクロック信号の周波数を1.6GHzに調節し、HMPブーストをオンさせることができる。
図13は、図10に示されたCPUで実行されるソフトウェアコンポーネントを用いてQoS最小値を制御する方法を説明する概念図であり、図14、図15、及び図16は、図10に示されたCPUで実行されるソフトウェアコンポーネントを用いてQoS最小値を制御する方法を説明するフローチャートである。
図1から図3、図10、及び図13から図16を参照すれば、コンピュータシステム100が初期化(または、ブーティング)される時(ステップS410)、ロードトラッカ310、310−1、310−2、310−3、または310−4(集合的に310A)は、当該コア211、210−1、210−2、210−3、または210−4に対するアイドルワーカーコールバック、例えば、アイドル開始ワーカーコールバック351とアイドル終了ワーカーコールバック353とをアイドルモジュール350、350−1、350−2、350−3、または350−4(集合的に350A)に登録することができる(ステップS412)。
ロードトラッカ310Aは、当該コア211、210−1、210−2、210−3、または210−4に対するアイドル開始ワーカー311とアイドル終了ワーカー313とを生成することができる(ステップS414)。
コンピュータシステム100が初期化される時、ブースタ330は、環境設定ファイル382を第2メモリ装置290からリードし(ステップS416)、ビジーコアカウント別に、または全体ビジーコアカウント別に、DVFS(または、DFS)及び/またはスケジューラ384に設定するパラメータ330−3をシステムファイル330−2を通じてメモリ装置215または280にロードすることができる(ステップS418)。例えば、環境設定ファイル382は、図12に例示的に示されたブースティングレベル環境設定であり得るが、これに限定されるものではない。図13に示されたブースタ330は、メインループ330−1を含み、メインループ330−1は、イベント受信器331、ブースティングスタータ333、及びブースティングエンダ335を含むブースタ330Aを含みうる。例えば、ブースタ330は、ブースタ330Aと共にデータフローを含むが、ブースタ330の機能は、ブースタ330Aの機能と同一であり得る。
ブースタ330は、ロードトラッカ310Aによって生成されたアイドル開始ワーカー311とアイドル終了ワーカー313のそれぞれの満了時間を設定することができる(ステップS420)。例えば、ブースタ330は、図4に示された満了時間STH、ETHのそれぞれを設定することができる。
ブースタ330は、カーネル(kernel)またはカーネル領域からイベントEVENT1、EVENT2、EVENTA、EVENTB、EVENTC、及び/またはEVENTD(集合的にEVENT)を受信または聴取(listening)するための通信応用プログラミングインターフェース(Application Programming Interface;API)をオープン(open)することができる(ステップS422)。通信APIは、ソケット(socket)を意味する。通信APIまたはソケットは、ビジーコアカウントを含むイベントEVENTを送受信する通信チャネル(communication channel)を意味する。
ブースタ330は、通信APIを開き、通信APIに対してカーネルシステムコールAPIを呼び出し、待機状態に進入することができる(ステップS424)。
アイドルタスク370が始まれば(ステップS510)、アイドルモジュール350Aは、アイドル開始ワーカーコールバック351を呼び出すことができる(ステップS512)。
アイドル開始ワーカーコールバック351は、ワークキュー380、380−1、380−2、380−3、及び/または380−4(集合的に380)に存在するアイドル終了ワーカーのスケジュール(または、タイマの満了時間)を取り消すことができる(ステップS514)。前述したように、取り消されるアイドル終了ワーカーがワークキュー380に存在しない時、過程(ステップS514)は、省略またはスキップされうる。
ワークキュー380にアイドル開始ワーカーが係留中ではなく、前記ワークキューにアイドル終了ワーカーが係留中ではない時、または(2)ワークキュー380にアイドル開始ワーカーが係留中ではなく、当該コア211、210−1、210−2、210−3、または210−4がブースティング中であれば(ステップS516)、アイドル開始ワーカーコールバック351は、アイドル開始ワーカー311をスケジュールすることができる(ステップS518)。
ワークキュー380は、アイドル開始ワーカーの満了時間が満了(または、経過)したか否かを判断することができる(ステップS520)。アイドル開始ワーカーの満了時間が満了(または、経過)すれば(ステップS520のYES)、アイドル開始ワーカー311は、当該コア211、210−1、210−2、210−3、または210−4に対するビジーコアカウントを1だけ減少させ、ブースティング終了またはブースティングレベルの減少を指示する減少指示イベントEVENTをブースタ330にブロードキャストすることができる(ステップS522)。
減少指示イベントEVENTがブースタ330にブロードキャストされれば、ブースタ330のカーネルシステムコールAPI(例えば、epoll)によって待機状態のスレッドがアウェイクすることができる(ステップS524)。例えば、メインループ330−1のイベント受信器331は、ロードトラッカ310Aから伝送された減少指示イベントEVENTを受信し、減少指示イベントEVENTをパージングし(ステップS526)、該パージングの結果によって、ブースティングエンダ335を呼び出すことができる。
ブースティングエンダ335は、パージングの結果によって、QoSと関連したシステムファイル337にQoS最小値に該当するパラメータをライトすることができる(ステップS528)。QoSコントローラ340は、QoSと関連したシステムファイル337からQoS最小値に該当するパラメータをリードし、パラメータを用いて当該コア211、210−1、210−2、210−3、または210−4のQoSと関連した制御信号CTR_C、CTR_Pを生成し、制御信号CTR_C、CTR_Pを出力することができる(ステップS530)。
制御回路200は、制御信号CTR_C、CTR_Pに基づいて作動するCMU220とPMU230との制御によって、制御回路200のQoSまたはQoS最小値を制御することができる(ステップS532)。すなわち、CMU220は、周波数制御信号CTR_Cに基づいて、クロック信号CLK1、CLK2、CLK3、CLK4、及びCLK5のうちの少なくとも1つの周波数を調節することができる。PMIC270は、電力制御信号CTR_Pと関連した制御信号CTRに基づいて、作動電圧PW1、PW2、PW3、PW4、PW5、及びPW6のうちの少なくとも1つのレベルを調節することができる。
図10を参照して説明したように、CMU220は、周波数制御信号CTR_Cに基づいて、クロック信号CLK1_1、CLK1_2、CLK1_3、及びCLK1_4のうちの少なくとも1つの周波数を調節することができる。PMIC270は、電力制御信号CTR_Pと関連した制御信号CTRに基づいて、作動電圧PW1_1、PW1_2、PW1_3、及びPW1_4のうちの少なくとも1つのレベルを調節することができる。
引き続き、図13、図14、及び図16を参照すれば、アイドルタスク370の実行が終了すれば(ステップS610)、アイドルモジュール350Aは、アイドル終了ワーカーコールバック353を呼び出すことができる(ステップS612)。
ワークキュー380にアイドル終了ワーカーが係留中ではなく、ワークキュー380にアイドル開始ワーカーが係留中である時、または(2)ワークキュー380にアイドル終了ワーカーが係留中ではなく、当該コア211、210−1、210−2、210−3、または210−4がブースティング中ではなければ(ステップS614)、アイドル終了ワーカーコールバック353は、アイドル終了ワーカー313をスケジュールすることができる(ステップS615)。
ワークキュー380は、アイドル終了ワーカー313の満了時間が満了(または、経過)したか否かを判断することができる(ステップS616)。アイドル終了ワーカー313の満了時間が満了(または、経過)すれば(ステップS616のYES)、アイドル終了ワーカー313は、当該コア211、210−1、210−2、210−3、または210−4に対するアイドル開始ワーカーのスケジュール(または、タイマの満了時間)を取り消しまたは削除することができる(ステップS618)。
アイドル終了ワーカー313は、当該コア211、210−1、210−2、210−3、または210−4に対するビジーコアカウントを1だけ増加させ、ブースティング開始またはブースティングレベルの増加を指示する増加指示イベントEVENTをブースタ330にブロードキャストすることができる(ステップS620)。
増加指示イベントEVENTがブースタ330にブロードキャストされれば、ブースタ330のカーネルシステムコールAPI(例えば、epoll)によって待機状態のスレッドがアウェイクすることができる(ステップS524)。例えば、メインループ330−1のイベント受信器331は、ロードトラッカ310Aから伝送された増加指示イベントEVENTを受信し、増加指示イベントEVENTをパージングし(ステップS526)、該パージングの結果によって、ブースティングスタータ333を呼び出すことができる。
ブースティングスタータ333は、パージングの結果によって、QoSと関連したシステムファイル337にQoS最小値に該当するパラメータをライトすることができる(ステップS528)。QoSコントローラ340は、QoSと関連したシステムファイル337からQoS最小値に該当するパラメータをリードし、パラメータを用いて当該コア211、210−1、210−2、210−3、または210−4のQoSと関連した制御信号CTR_C、CTR_Pを生成し、制御信号CTR_C、CTR_Pを出力することができる(ステップS530)。
制御回路200は、制御信号CTR_C、CTR_Pに基づいて作動するCMU220とPMU230との制御によって、制御回路200のQoSまたはQoS最小値を制御することができる(ステップS532)。すなわち、CMU220は、周波数制御信号CTR_Cに基づいて、クロック信号CLK1、CLK2、CLK3、CLK4、及びCLK5のうちの少なくとも1つの周波数を調節することができる。PMIC270は、電力制御信号CTR_Pと関連した制御信号CTRに基づいて、作動電圧PW1、PW2、PW3、PW4、PW5、及びPW6のうちの少なくとも1つのレベルを調節することができる。図10を参照して説明したように、CMU220は、周波数制御信号CTR_Cに基づいて、クロック信号CLK1_1、CLK1_2、CLK1_3、及びCLK1_4のうちの少なくとも1つの周波数を調節することができる。PMIC270は、電力制御信号CTR_Pと関連した制御信号CTRに基づいて、作動電圧PW1_1、PW1_2、PW1_3、及びPW1_4のうちの少なくとも1つのレベルを調節することができる。
図17は、図3に示されたアイドルモジュールに、アイドルワーカーコールバックを登録する過程を説明するプログラムコードの実施形態である。図17を参照すれば、図17に例示的に示されたプログラムコードは、アイドルモジュールにアイドルワーカーコールバック、例えば、アイドル開始ワーカーコールバックとアイドル終了ワーカーコールバックとを登録するためのコードの部分を示す。
図18は、図3に示されたアイドルモジュールに登録されたアイドルワーカーコールバックでアイドル開始ワーカーとアイドル終了ワーカーのスケジュールと取り消しとを説明するプログラムコードの実施形態である。図18を参照すれば、図18に例示的に示されたプログラムコードは、アイドル開始ワーカーコールバックがアイドル開始ワーカーをスケジュールし、取り消すコードの部分とアイドル終了ワーカーコールバックがアイドル終了ワーカーをスケジュールし、取り消すコードの部分とを示す。
図1から図18を参照して説明したように、コアが作動しない時、アイドルタスクが実行されるCPU210またはCPU210を含むコンピュータシステム100で、アイドルタスクが実行される時には、アイドル開始ワーカーがスケジュールされ、アイドルタスクの実行が終了する時には、アイドル終了ワーカーがスケジュールされる。
アイドルタスクが実行される時、アイドル終了ワーカーのスケジュールは取り消される。スケジュールされたアイドル開始ワーカーとスケジュールされたアイドル終了ワーカーのそれぞれのスケジュールが取り消されず、スケジュールされたアイドル開始ワーカーとスケジュールされたアイドル終了ワーカーのそれぞれの満了時間が経てば、スケジュールされたアイドル開始ワーカーとスケジュールされたアイドル終了ワーカーのそれぞれに指定された作動が行われる。
アイドル開始ワーカーに指定された作動は、ブースティングレベルを低めよとのイベントをブースタ330にブロードキャストすることであり、アイドル終了ワーカーに指定された作動は、ブースティングレベルを高めよとのイベントをブースタ330にブロードキャストすることである。ブースタ300は、イベンドをリアルタイムで聴取している。ブースタ300が、イベントを受信した時、ブースタ300は、受信されたイベントに対して既に定義された作動を行う。既に定義された作動は、ブースティングの開始、ブースティングの終了、ブースティングレベルの変更、ブースティングに関連した周辺装置240、260、260、及び265のうちの少なくとも1つの作動の制御、及び/またはコンピュータシステム100で実行されるOSに従属的な作動を含みうる。
本発明は、第1ロードトラッカ及びブースタを保存する第1メモリと、該第1ロードトラッカ及び該ブースタを実行する第1コアと、を含むCPUに利用可能である。
100:コンピュータシステム
200:制御回路
210:CPU
220:クロック管理ユニット
230:電力管理ユニット
240:グラフィックスプロセッシングユニット
250:第1メモリインターフェース
260:第2メモリインターフェース
265:入出力インターフェース
270:電力管理IC
280:第1メモリ装置
290:第2メモリ装置
300:QoS制御モジュール
310、310A、310−1、310−2、310−3、及び340−4:ロードトラッカ
330、330B:ブースタ(booster)
337:QoS関連システムファイル
340:QoSコントローラ
350、350−1、350−2、350−3、及び350−4:アイドルモジュール
380、380−1、380−2、380−3、及び380−4:ワークキュー

Claims (20)

  1. 第1ロードトラッカ及びブースタを保存する第1メモリと、前記第1ロードトラッカ及び前記ブースタを実行する第1コアと、を含むCPUの作動方法であって、
    前記第1ロードトラッカを実行することによって、前記第1コアで第1アイドルタスクが実行されるか否かを判断する段階と、
    前記第1ロードトラッカを実行することによって前記判断の結果に該当する第1イベントを生成する段階と、
    前記第1ロードトラッカを実行することによって前記生成された第1イベントを前記ブースタに通知する段階と、
    前記ブースタを実行することによって、前記第1イベントに基づいて前記第1コアのQoS最小値を設定する段階と、
    を含むCPUの作動方法。
  2. 前記CPUの作動方法は、
    前記CPUが初期化される時、前記第1ロードトラッカを実行することによって、アイドル開始ワーカーコールバックとアイドル終了ワーカーコールバックとをアイドルモジュールに登録する段階と、
    前記CPUが初期化される時、前記第1ロードトラッカを実行することによって、アイドル開始ワーカーとアイドル終了ワーカーとを生成する段階と、
    をさらに含む請求項1に記載のCPUの作動方法。
  3. 前記CPUの作動方法は、前記CPUが初期化される時、前記ブースタを実行することによって、前記アイドル開始ワーカーの第1満了時間と前記アイドル終了ワーカーの第2満了時間とを設定する段階をさらに含む請求項2に記載のCPUの作動方法。
  4. 前記第1アイドルタスクが実行される時、前記アイドルモジュールを実行することによって、前記アイドル開始ワーカーコールバックを呼び出す段階と、
    前記第1アイドルタスクが終了する時、前記アイドルモジュールを実行することによって、前記アイドル終了ワーカーコールバックを呼び出す段階と、
    をさらに含む請求項3に記載のCPUの作動方法。
  5. 前記第1アイドルタスクが実行される時、前記アイドル開始ワーカーコールバックを実行することによって、前記アイドル開始ワーカーをスケジュールする段階と、
    前記第1アイドルタスクが終了する時、前記アイドル終了ワーカーコールバックを実行することによって、前記アイドル終了ワーカーをスケジュールする段階と、
    をさらに含む請求項4に記載のCPUの作動方法。
  6. 前記第1アイドルタスクが実行される時、前記アイドル開始ワーカーコールバックを実行することによって、ワークキューに存在する以前アイドル終了ワーカーのスケジュールを取り消す段階をさらに含む請求項5に記載のCPUの作動方法。
  7. 前記第1ロードトラッカを実行することによって、前記判断の結果に対応する前記第1イベントを生成する段階は、
    前記第1満了時間が満了すれば、前記アイドル開始ワーカーを実行することによって、前記QoS最小値の減少を指示する前記第1イベントを生成する段階と、
    前記第2満了時間が満了すれば、前記アイドル終了ワーカーを実行することによって、前記アイドル開始ワーカーのスケジュールを取り消し、前記QoS最小値の増加を指示する前記第1イベントを生成する段階と、のうち何れか1つを含む請求項5に記載のCPUの作動方法。
  8. 前記CPUの作動方法は、
    前記ブースタを実行することによって、設定されたQoS最小値に基づいて、前記第1コアのDVFSのための制御信号をQoSコントローラに出力する段階と、
    前記QoSコントローラを実行することによって、前記制御信号に応答して、前記第1コアの作動クロック信号の周波数の制御に関連した周波数制御信号と前記第1コアの作動電圧のレベルの制御に関連した電圧制御信号とを生成する段階と、
    をさらに含む請求項1に記載のCPUの作動方法。
  9. 前記CPUは、第2ロードトラッカを保存する第2メモリと、前記第2ロードトラッカを実行する第2コアと、をさらに含み、前記CPUの作動方法は、
    前記第2ロードトラッカを実行することによって、前記第2コアで第2アイドルタスクが実行されるか否かを判断する段階と、
    前記第2ロードトラッカを実行することによって前記判断の結果に該当する第2イベントを生成する段階と、
    前記第2ロードトラッカを実行することによって前記生成された第2イベントを前記第1コアで実行される前記ブースタに通知する段階と、
    前記ブースタを実行することによって、前記第1イベントと前記第2イベントとに基づいて、前記第1コアのQoS最小値と前記第2コアのQoS最小値とを設定する段階と、
    をさらに含む請求項1に記載のCPUの作動方法。
  10. 前記CPUの作動方法は、前記ブースタを実行することによって、設定された第1コアのQoS最小値と設定された第2コアのQoS最小値とに基づいて、前記第1コアに割り当てられたタスクを前記第2コアに強制に割り当てる段階をさらに含む請求項9に記載のCPUの作動方法。
  11. 第1ロードトラッカ、ブースタ、及びQoSコントローラを保存する第1メモリと、前記第1ロードトラッカ、前記ブースタ、及び前記QoSコントローラを実行する第1コアと、を含むCPU;クロック管理ユニット;及び電力管理ユニットを含むシステム・オン・チップの作動方法であって、
    前記第1ロードトラッカを実行することによって、前記第1コアで第1アイドルタスクが実行されるか否かを判断する段階と、
    前記第1ロードトラッカを実行することによって前記判断の結果に該当する第1イベントを生成する段階と、
    前記第1ロードトラッカを実行することによって前記生成された第1イベントを前記ブースタに通知する段階と、
    前記ブースタを実行することによって、前記第1イベントに基づいて前記第1コアのQoS最小値を設定する段階と、
    前記QoSコントローラを実行することによって、設定されたQoS最小値に基づいて周波数制御信号と電圧制御信号とを生成する段階と、
    前記クロック管理ユニットが、前記周波数制御信号に応答して、前記第1コアに供給される第1クロック信号の第1周波数を制御し、前記電力管理ユニットが、前記電圧制御信号に応答して、前記第1コアに第1作動電圧を供給する電力管理ICを制御する制御信号を生成する段階と、
    を含むシステム・オン・チップの作動方法。
  12. 前記システム・オン・チップの作動方法は、
    前記CPUが初期化される時、前記第1ロードトラッカを実行することによって、アイドル開始ワーカーコールバックとアイドル終了ワーカーコールバックとをアイドルモジュールに登録する段階と、
    前記CPUが初期化される時、前記第1ロードトラッカを実行することによって、アイドル開始ワーカーとアイドル終了ワーカーとを生成する段階と、
    をさらに含む請求項11に記載のシステム・オン・チップの作動方法。
  13. 前記第1アイドルタスクが実行される時、前記アイドルモジュールを実行することによって、前記アイドル開始ワーカーコールバックを呼び出す段階と、
    前記第1アイドルタスクが終了する時、前記アイドルモジュールを実行することによって、前記アイドル終了ワーカーコールバックを呼び出す段階と、
    をさらに含む請求項12に記載のシステム・オン・チップの作動方法。
  14. 前記第1アイドルタスクが実行される時、前記アイドル開始ワーカーコールバックを実行することによって、ワークキューに存在する以前アイドル終了ワーカーのスケジュールを取り消す段階と、
    前記アイドル開始ワーカーコールバックを実行することによって、前記アイドル開始ワーカーのスケジュール前提条件を判断する段階と、
    前記スケジュール前提条件が満足される時、前記アイドル開始ワーカーコールバックを実行することによって、前記アイドル開始ワーカーをスケジュールする段階と、
    をさらに含む請求項13に記載のシステム・オン・チップの作動方法。
  15. 前記スケジュール前提条件は、前記アイドル開始ワーカーと前記アイドル終了ワーカーがいずれも係留中ではない場合と、前記アイドル開始ワーカーが係留中ではなく、前記第1コアがブーストされている場合と、を含む請求項14に記載のシステム・オン・チップの作動方法。
  16. 前記第1アイドルタスクが終了する時、前記アイドル終了ワーカーコールバックを実行することによって、前記アイドル終了ワーカーのスケジュール前提条件を判断する段階と、
    前記スケジュール前提条件が満足される時、前記アイドル終了ワーカーコールバックを実行することによって、前記アイドル終了ワーカーをスケジュールする段階と、
    をさらに含む請求項13に記載のシステム・オン・チップの作動方法。
  17. 前記スケジュール前提条件は、前記アイドル終了ワーカーが係留中ではなく、前記アイドル開始ワーカーが係留中である場合と、前記アイドル終了ワーカーが係留中ではなく、前記第1コアがブーストされていない場合と、を含む請求項16に記載のシステム・オン・チップの作動方法。
  18. 前記システム・オン・チップの作動方法は、前記アイドル終了ワーカーの満了時間が満了すれば、前記アイドル終了ワーカーを実行することによって、前記アイドル開始ワーカーのスケジュールを取り消す段階をさらに含む請求項16に記載のシステム・オン・チップの作動方法。
  19. 前記CPUは、第2ロードトラッカを保存する第2メモリと、前記第2ロードトラッカを実行する第2コアと、をさらに含み、前記システム・オン・チップの作動方法は、
    前記第2ロードトラッカを実行することによって、前記第2コアで第2アイドルタスクが実行されるか否かを判断する段階と、
    前記第2ロードトラッカを実行することによって前記判断の結果に該当する第2イベントを生成する段階と、
    前記第2ロードトラッカを実行することによって前記生成された第2イベントを前記第1コアで実行される前記ブースタに通知する段階と、
    前記ブースタを実行することによって、前記第1イベントと前記第2イベントとに基づいて、前記第1コアの設定QoS最小値と前記第2コアの設定QoS最小値とを設定する段階と、
    前記QoSコントローラを実行することによって、前記第1コアの設定QoS最小値と前記第2コアの設定QoS最小値とに基づいて、前記周波数制御信号と前記電圧制御信号とを生成する段階と、
    前記クロック管理ユニットが、前記周波数制御信号に応答して、前記第1コアに供給される前記第1クロック信号の第1周波数と前記第2コアに供給される第2クロック信号の第2周波数とを制御する段階と、
    前記電力管理ユニットが、前記電圧制御信号に応答して、前記第1コアに第1作動電圧と前記第2コアに第2作動電圧とを供給する前記電力管理ICを制御する前記制御信号を生成する段階と、
    を含む請求項11に記載のシステム・オン・チップの作動方法。
  20. 第1ロードトラッカ、ブースタ、及びQoSコントローラを保存する第1メモリと、前記第1ロードトラッカ、前記ブースタ、及び前記QoSコントローラを実行する第1コアと、を含むCPU;クロック管理ユニット;電力管理ユニット;及び電力管理ICを含むコンピューティングシステムの作動方法であって、
    前記第1ロードトラッカを実行することによって、前記第1コアで第1アイドルタスクが実行されるか否かを判断する段階と、
    前記第1ロードトラッカを実行することによって前記判断の結果に該当する第1イベントを生成する段階と、
    前記第1ロードトラッカを実行することによって前記生成された第1イベントを前記ブースタに通知する段階と、
    前記ブースタを実行することによって、前記第1イベントに基づいて前記第1コアのQoS最小値を設定する段階と、
    前記QoSコントローラを実行することによって、設定されたQoS最小値に基づいて第1周波数制御信号と第1電圧制御信号とを生成する段階と、
    前記クロック管理ユニットが、前記第1周波数制御信号に応答して、前記第1コアに供給される第1クロック信号の第1周波数を制御する段階と、
    前記電力管理ユニットが、前記第1電圧制御信号に応答して、第1制御信号を前記電力管理ICに出力する段階と、
    前記電力管理ICが、前記第1制御信号に応答して、前記第1コアに供給される第1作動電圧を制御する段階と、
    を含むコンピューティングシステムの作動方法。
JP2016169324A 2015-08-31 2016-08-31 Cpuの作動方法と、該cpuを含むシステムの作動方法 Active JP6838897B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020150122353A KR102375925B1 (ko) 2015-08-31 2015-08-31 Cpu의 작동 방법과 상기 cpu를 포함하는 시스템의 작동 방법
KR10-2015-0122353 2015-08-31

Publications (2)

Publication Number Publication Date
JP2017049999A JP2017049999A (ja) 2017-03-09
JP6838897B2 true JP6838897B2 (ja) 2021-03-03

Family

ID=58011595

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016169324A Active JP6838897B2 (ja) 2015-08-31 2016-08-31 Cpuの作動方法と、該cpuを含むシステムの作動方法

Country Status (6)

Country Link
US (1) US10496149B2 (ja)
JP (1) JP6838897B2 (ja)
KR (1) KR102375925B1 (ja)
CN (1) CN106484527B (ja)
DE (1) DE102016116158A1 (ja)
TW (1) TWI724021B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10656701B2 (en) * 2016-12-16 2020-05-19 Red Hat, Inc. Managing processor frequencies
KR20180076631A (ko) * 2016-12-28 2018-07-06 삼성전자주식회사 반도체 장치의 성능 부스팅 방법 및 시스템
CN107423135B (zh) * 2017-08-07 2020-05-12 上海兆芯集成电路有限公司 均衡装置以及均衡方法
US10732694B2 (en) * 2017-09-22 2020-08-04 Qualcomm Incorporated Power state control of a mobile device
CN109992314B (zh) * 2019-04-09 2022-03-29 Oppo广东移动通信有限公司 数据上报方法、装置、终端和存储介质
CN115373506A (zh) 2021-05-21 2022-11-22 三星电子株式会社 集成电路、动态电压和频率缩放调节器及包括其的系统

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414860A (en) * 1991-01-29 1995-05-09 International Business Machines Incorporated Power management initialization for a computer operable under a plurality of operating systems
US6154821A (en) * 1998-03-10 2000-11-28 Rambus Inc. Method and apparatus for initializing dynamic random access memory (DRAM) devices by levelizing a read domain
US6298448B1 (en) 1998-12-21 2001-10-02 Siemens Information And Communication Networks, Inc. Apparatus and method for automatic CPU speed control based on application-specific criteria
KR100390645B1 (ko) * 2001-07-27 2003-07-07 삼성전자주식회사 이동통신단말기 시스템에서 소모전류를 줄이기 위한 방법
JP2007334497A (ja) 2006-06-13 2007-12-27 Renesas Technology Corp 情報処理装置の省電力化方法、プログラム、およびプログラム実行システム
US7882379B2 (en) 2006-09-22 2011-02-01 Sony Computer Entertainment Inc. Power consumption reduction in a multiprocessor system
US7900069B2 (en) 2007-03-29 2011-03-01 Intel Corporation Dynamic power reduction
CN101067758B (zh) * 2007-06-14 2010-05-19 华南理工大学 一种嵌入式系统的能耗管理方法
CN101493761B (zh) * 2008-01-25 2013-05-29 国际商业机器公司 处理器流水线处理指令的方法及相应的处理器
JP2010176742A (ja) * 2009-01-29 2010-08-12 Elpida Memory Inc 半導体装置及びデータ処理システム
US8321614B2 (en) 2009-04-24 2012-11-27 Empire Technology Development Llc Dynamic scheduling interrupt controller for multiprocessors
US9672132B2 (en) * 2009-11-19 2017-06-06 Qualcomm Incorporated Methods and apparatus for measuring performance of a multi-thread processor
US9563250B2 (en) 2009-12-16 2017-02-07 Qualcomm Incorporated System and method for controlling central processing unit power based on inferred workload parallelism
US9104411B2 (en) 2009-12-16 2015-08-11 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
JP2011216004A (ja) 2010-04-01 2011-10-27 Toyota Motor Corp マイクロプロセッサ、電子制御ユニット、実行比率切り替え方法
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
US20120042313A1 (en) * 2010-08-13 2012-02-16 Weng-Hang Tam System having tunable performance, and associated method
US8942932B2 (en) * 2010-08-31 2015-01-27 Advanced Micro Devices, Inc. Determining transistor leakage for an integrated circuit
JP2012113558A (ja) 2010-11-25 2012-06-14 Panasonic Corp 割込み制御装置、割込み制御方法及び集積回路
TWI454905B (zh) 2011-09-30 2014-10-01 Intel Corp 在多核心平台中之受限制的啓動技術
KR102005765B1 (ko) 2012-12-17 2019-07-31 삼성전자주식회사 시스템-온 칩과, 이의 동작 방법
US9395784B2 (en) * 2013-04-25 2016-07-19 Intel Corporation Independently controlling frequency of plurality of power domains in a processor system
US9483092B2 (en) 2013-10-14 2016-11-01 Advanced Micro Devices, Inc. Performance state boost for multi-core integrated circuit
KR20150050135A (ko) * 2013-10-31 2015-05-08 삼성전자주식회사 복수의 이종 코어들을 포함하는 전자 시스템 및 이의 동작 방법
KR20150122353A (ko) 2014-04-23 2015-11-02 스타 제너레이션 리미티드 타이완 브랜치 골성장분말/생의학적필러를 회전식으로 밀어주는 구조를 지닌 임플란트
US9378536B2 (en) * 2014-04-30 2016-06-28 Qualcomm Incorporated CPU/GPU DCVS co-optimization for reducing power consumption in graphics frame processing
US10203746B2 (en) * 2014-05-30 2019-02-12 Apple Inc. Thermal mitigation using selective task modulation
US9904612B2 (en) * 2015-07-08 2018-02-27 Futurewei Technologies, Inc. Dynamic voltage/frequency scaling for multi-processors using end user experience metrics
US9952651B2 (en) * 2015-07-31 2018-04-24 International Business Machines Corporation Deterministic current based frequency optimization of processor chip

Also Published As

Publication number Publication date
DE102016116158A1 (de) 2017-03-02
KR102375925B1 (ko) 2022-03-17
US10496149B2 (en) 2019-12-03
CN106484527B (zh) 2022-04-12
TW201710914A (zh) 2017-03-16
US20170060222A1 (en) 2017-03-02
JP2017049999A (ja) 2017-03-09
TWI724021B (zh) 2021-04-11
KR20170025625A (ko) 2017-03-08
CN106484527A (zh) 2017-03-08

Similar Documents

Publication Publication Date Title
JP6838897B2 (ja) Cpuの作動方法と、該cpuを含むシステムの作動方法
US8726055B2 (en) Multi-core power management
US10649935B2 (en) Deferred inter-processor interrupts
CN105183128B (zh) 强制处理器进入低功率状态
US9600059B2 (en) Facilitating power management in a multi-core processor
US8181047B2 (en) Apparatus and method for controlling power management by comparing tick idle time data to power management state resume time data
US7152169B2 (en) Method for providing power management on multi-threaded processor by using SMM mode to place a physical processor into lower power state
TWI233545B (en) Mechanism for processor power state aware distribution of lowest priority interrupts
CN103842933B (zh) 多核平台中的受约束引导技术
JP5982588B2 (ja) 保証された過渡期限とともに中央処理装置の電力を制御するためのシステムおよび方法
JP7547368B2 (ja) プロセッサの処理回路の電流消費を動的に制御するためのシステム、装置及び方法
US10990153B2 (en) Application processor and system on chip
US20200166985A1 (en) Multi-tiered low power states
US9507641B1 (en) System and method for dynamic granularity control of parallelized work in a portable computing device (PCD)
KR20150112660A (ko) 시스템 온 칩, 이의 작동 방법, 및 이를 포함하는 장치
KR20210017054A (ko) 멀티-코어 시스템 및 그 동작 제어 방법
JP2016505913A (ja) 保証された過渡期限とともに中央処理装置の電力を制御するためのシステムおよび方法
US20230185623A1 (en) Method of task transition between heterogenous processors
JP2010140151A (ja) マルチプロセッサおよびその状態制御方法
KR20210022850A (ko) 반도체 장치의 성능 부스팅 제어 방법 및 이를 수행하는 반도체 장치

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20161222

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20161228

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190731

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201224

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: 20210202

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210212

R150 Certificate of patent or registration of utility model

Ref document number: 6838897

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250