JP2019219931A - 半導体集積回路、cpuの割り当て方法、およびプログラム - Google Patents

半導体集積回路、cpuの割り当て方法、およびプログラム Download PDF

Info

Publication number
JP2019219931A
JP2019219931A JP2018117087A JP2018117087A JP2019219931A JP 2019219931 A JP2019219931 A JP 2019219931A JP 2018117087 A JP2018117087 A JP 2018117087A JP 2018117087 A JP2018117087 A JP 2018117087A JP 2019219931 A JP2019219931 A JP 2019219931A
Authority
JP
Japan
Prior art keywords
cpu
performance
functional block
cpus
integrated circuit
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.)
Pending
Application number
JP2018117087A
Other languages
English (en)
Inventor
敬太 小林
Keita Kobayashi
敬太 小林
賢彦 五味
Masahiko Gomi
賢彦 五味
龍 長澤
Ryu Nagasawa
龍 長澤
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2018117087A priority Critical patent/JP2019219931A/ja
Priority to US16/411,942 priority patent/US20190391846A1/en
Publication of JP2019219931A publication Critical patent/JP2019219931A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/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/505Allocation 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 the load
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microcomputers (AREA)

Abstract

【課題】性能が異なる複数のCPUで構成されたシステムの性能を維持あるいは向上させる。【解決手段】半導体集積回路100は、異なる性能を有する複数のCPU(big CPUおよびLITTLE CPU)を備える。半導体集積回路は、複数の機能ブロックと複数のCPUのうちのいずれかのCPUとの関係を定義したデバイステーブル2に従って、複数の機能ブロックのうちの少なくとも1つの機能ブロックにより実現されるタスクに割り当てられる実効CPUを判定する。【選択図】図2

Description

本発明は、半導体集積回路、CPUの割り当て方法、およびプログラムに関し、たとえば複数のCPUを含む半導体集積回路に関する。
高性能な処理を低消費電力でプロセッサに実行させるために、複数のプロセッサを並列に動作させるマルチプロセッサシステムが提案されている。マルチプロセッサシステムには、対称型マルチプロセッサ(SMP:Symmetric Multiple Processor)システムと、非対称型マルチプロセッサ(ASMP:Asymmetric Multiple Processor)システムとがある。SMPは、同じ性能を有する複数のプロセッサにより構成される。一方、ASMPは、異なる性能を有する複数のプロセッサの組み合わせによって構成される。
たとえば、特許文献1はSMPの例を開示する。非特許文献1および特許文献2は、ASMPの例を開示する。非特許文献1は、高い性能を有するCPU(Central Processing Unit)コア(big)と、低消費電力のCPUコア(LITTLE)とを組み合わせた技術(big.LITTLE)を提案する。big.LITTLEは、モバイルなどのバッテリ駆動の端末装置において、高性能と低消費電力との両方を実現するための技術である。big.LITTLEでは、タスクのCPU負荷に応じて、そのタスクを処理すべきCPUを、bigとLITTLEとの間で動的に割り当てる。これにより、処理すべきタスクごとに最適なCPUが割り当てられる。
特許文献2は、CPUの種類と個数の組み合わせの複数の形態を定義する定義情報を有するマルチCPUシステムを開示する。定義情報において、全体的なデータ処理性能と電力消費量の最大値が多段階に相違するように、複数の形態が定義される。マルチCPUシステムは、データ処理の環境に応じて、定義情報から選択した形態で特定されるCPUにデータ処理を割り当てる。
特開2006−338184号公報 国際公開第2014/188561号
"big.LITTLE Technology: The Future of Mobile"、[online]、2013年、ARM Limited、[2018年2月23日検索]、インターネット<URL:https://www.arm.com/files/pdf/big_LITTLE_Technology_the_Futue_of_Mobile.pdf>
たとえば、性能と消費電力との両方の要求に応えるため、非特許文献1に開示されたようなbig.LITTLE構成が必要となる場合がある。一般的なbig.LITTLEでは、CPU負荷のみに基づいてbig CPUおよびLITTLE CPUのどちらかが割り当てられる。CPUおよび関連する機能ブロックを含むシステム全体の負荷が高いにもかかわらず、CPU負荷が低いタスクには、低性能CPUが割り当てられる。CPU負荷のみに基づいてタスクを動作させるCPUを決定した場合、要求される処理性能を達成できない。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施形態による半導体集積回路は、異なる性能を有する複数のCPUを備える。半導体集積回路は、複数の機能ブロックと複数のCPUのうちのいずれかのCPUとの関係を定義した定義情報に従って、複数の機能ブロックのうちの少なくとも1つの機能ブロックにより実現されるタスクに割り当てられる実効CPUを判定する。
一実施形態によるCPUの割り当て方法は、異なる性能を有する複数のCPUと複数の機能ブロックとを備えた半導体集積回路における、CPUの割り当て方法である。方法は、複数の機能ブロックと複数のCPUのうちのいずれかのCPUとの関係を定義した定義情報に従って、複数の機能ブロックのうちの少なくとも1つの機能ブロックにより実現されるタスクに割り当てられる実効CPUを判定するステップを備える。
一実施形態によるプログラムは、異なる性能を有する複数のCPUと複数の機能ブロックとを備えた半導体集積回路によって実行されるプログラムである。プログラムは、複数の機能ブロックと複数のCPUのうちのいずれかのCPUとの関係を定義した定義情報に従って、複数の機能ブロックのうちの少なくとも1つの機能ブロックにより実現されるタスクに割り当てられる実効CPUを判定するステップを、複数のCPUのうちの少なくとも1つに実行させる。
一実施の形態によれば、性能が異なる複数のCPUで構成されたシステムの性能を維持あるいは向上させることができる。
実施の形態1に係る半導体集積回路の構成例を示したブロック図である。 図1に示した半導体集積回路のハードウェアおよびソフトウェアの構成を階層的に例示した図である。 実施の形態1に係る定義情報のデータ構造を示した図である。 実施の形態1に係るCPU割当判定部(ガバナ)の概要を説明した概略図である。 非対称型マルチプロセッサシステムにおける、CPU処理時間のみに基づいたスケジューリングを模式的に示した図である。 非対称型マルチプロセッサシステムにおいて、LITTLE CPUにタスクが割り当てられることによる性能の低下の例を示した模式図である。 実施の形態1に係るCPU割当判定部(ガバナ)の動作フローを説明するフローチャートである。 実施の形態2に係る半導体集積回路のハードウェアおよびソフトウェアの構成を階層的に例示した図である。 実施の形態2に係る定義情報のデータ構造を示した図である。 実施の形態2に係るCPU割当判定部(ガバナ)の概要を説明した概略図である。 実施の形態2に係るCPU割当判定部(ガバナ)の動作フローを説明するフローチャートである。 実施の形態3に係る半導体集積回路のハードウェアおよびソフトウェアの構成を階層的に例示した図である。 実施の形態3に係る定義情報のデータ構造を示した図である。 実施の形態3に係るCPU割当判定部(ガバナ)の動作フローを説明するフローチャートである。
以下、各実施形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰返さない。
<実施形態1>
図1は、実施の形態1に係る半導体集積回路の構成例を示したブロック図である。図1に示すように、半導体集積回路100は、データ処理性能の異なる複数のCPUを搭載した非対称マルチプロセッサとして構成される。半導体集積回路100はシングルチップにより構成されてもよく、あるいはマルチチップにより構成されてもよい。一実施形態では、半導体集積回路100は、車載情報システムを構成する。このシステムは、SoC(System-On-a-Chip)の形態で半導体集積回路100に実現することができる。
半導体集積回路100は、バス102を介して周辺デバイス101に接続されている。周辺デバイス101は、たとえばディスプレイ101A、USBデバイス101B、SDカード101C、通信デバイス(たとえばI2C IC101D)等を含み得る。
半導体集積回路100は、データ処理性能が高くかつ消費電力の大きい第1のCPUグループ(big CPU)8と、データ処理性能が低くかつ消費電力の小さい第2のCPUグループ(LITTLE CPU)9とを含む。第1のCPUグループ8は、「CPU0」、「CPU1」、「CPU2」、「CPU3」とそれぞれ表記されたCPU8A,8B,8C,8Dを含む。CPU8A,8B,8C,8Dの各々は、高性能CPUである。第2のCPUグループ9は、「CPU0」、「CPU1」、「CPU2」、「CPU3」とそれぞれ表記されたCPU9A,9B,9C,9Dを含む。CPU9A,9B,9C,9Dの各々は、低性能CPUである。各CPUグループに含まれるCPUの数は特に制限されるものではない。
第1のCPUグループ8のCPU8A〜8D、および第2のCPUグループ9のCP9A〜9Dは、バス10を介して、メモリ11、入出力インタフェース回路(I/O)12、および機能ブロック群13に接続される。さらに、第1のCPUグループ8のCPU8A〜8D、および第2のCPUグループ9のCPU9A〜9Dは、内部クロックバス14を介して、クロックパルス発振器(CPG)6に接続される。
入出力インタフェース回路12は、バス102を介して周辺デバイス101に接続される。機能ブロック群13は、各種の機能を実現する複数の機能ブロックを含む。本明細書では、「機能ブロック」とは、回路すなわちハードウェアによって構成される。以下において「デバイス」との名称は、機能ブロックを指す。限定されないが、機能ブロック群13は、VCP(Video Coding Processor)113A、GPU(Graphic Processing Unit)113B、USBコントローラ113C、SDホストコントローラ113D、I2Cコントローラ113E、クロック制御器113F等を含んでもよい。機能ブロック群13の各機能ブロックは、周辺クロックバス15を介してクロックパルス発振器6に接続される。
クロックパルス発振器6は、水晶発振器105からの源クロックを受けて、内部クロックおよび周辺クロックを生成する。クロックパルス発振器6は、内部クロックバス14を介して、第1のCPUグループ8および第2のCPUグループ9に内部クロックを供給する。さらに、クロックパルス発振器6は、周辺クロックバス15を介して、機能ブロック群13の各機能ブロックに周辺クロックを供給する。
電源106は、半導体集積回路100に電源電圧を供給する。タスクが実行状態に移行するときに、そのタスクを実現するための機能ブロックの電源がオンされる。さらに、機能ブロックには周辺クロックが供給される。これにより機能ブロックが稼働状態となる。クロック制御器113Fは、各機能ブロックへのクロックの供給を管理する。したがって、クロック制御器113Fは、各機能ブロックのオン状態およびオフ状態を把握することができる。
第1のCPUグループ8および第2のCPUグループ9はプログラムを実行する。「プログラム」とは、オペレーティングシステム(OS)およびアプリケーションプログラムである。各CPUによりオペレーティングシステムと、アプリケーションプログラムとが実行される。
図2は、図1に示した半導体集積回路100のハードウェアおよびソフトウェアの構成を階層的に例示した図である。図2に示すように、半導体集積回路100のハードウェアおよびソフトウェアの構成を、ハードウェア層(Hardware)121、ソフトウェア層(So122およびユーザスペース層(Userspace)123の3つの階層によって表すことができる。
上述のように、ハードウェア層121は、第1のCPUグループ8、第2のCPUグループ9、および機能ブロック群13を含む。機能ブロック群13は、各機能ブロックへのクロックの供給状況(クロックON/クロックOFF)を管理するクロック制御器113Fを含む。
ソフトウェア層122は、CPU上で動作するオペレーティングシステムである。オペレーティングシステムとして、たとえばLinux(登録商標)を挙げることができる。ソフトウェア層122は、スケジューラ(Scheduler)4およびデバイスドライバ(Device Driver)5の各機能を実現する。スケジューラ4は、タスク管理に用いられる機能であり、タスクをCPUに割当てるスケジューリングあるいはディスパッチを行う。デバイスドライバ5は、機能ブロック群13に含まれる各機能ブロックを制御する。さらにデバイスドライバ5は、各機能ブロックへのクロックの供給に関する情報をクロック制御器113Fから受けて、その機能ブロックがオンおよびオフのいずれの状況にあるかを検知する。なお、デバイスドライバは機能ブロックごとに存在する。図示を簡単にするため、図2および以下に説明する図では、複数のデバイスドライバを一括してデバイスドライバ5と表す。
ユーザー層123は、CPU上で動作するアプリケーションプログラムである。ガバナ(Governor)1は、タスクをbig CPU(CPU8A〜8D)およびLittle CPU(CPU9A〜9D)のどちらに割り当てるかを判定する。すなわちガバナ1はCPU割当判定部として機能する。
デバイステーブル(Device Table)2は、複数の機能ブロック(デバイス)と複数のCPUとの間の対応関係を定義した定義情報を保持する。すなわちデバイステーブル2は、タスクの動作に割り当てられる実効CPUに関する情報(実効CPU情報)を有する。複数の機能ブロックの各々に割り当てられるCPUは、機能ブロックの処理時間に応じて予め定義される。
デバイステーブル2に含まれる定義情報は、たとえばシステムのプロファイリングを実行することによって事前に定義される。デバイステーブル2は、たとえば、不揮発性メモリに記憶される。デバイステーブル2は、プログラムの実行時にCPUによって不揮発性メモリから呼び出されて、CPU内部の揮発性メモリに一時的に格納される。
ガバナ1は、実効CPU指定部1Aと実効CPU計算部1Bとを有する。実効CPU指定部1Aは、デバイスドライバ5から、各機能ブロックの状況(オンまたはオフ)に関する情報を受けるとともにデバイステーブル2を参照して、第1のCPUグループ8および第2のCPUグループ9の中から、実行状態のタスクを割り当てるべきCPUグループを決定する。あるいは、実効CPU指定部1Aは、実効CPU計算部1Bによって計算されたCPUの処理時間に基づいて、第1のCPUグループ8および第2のCPUグループ9の中から、実行状態のタスクを割り当てるべきCPUグループを決定する。実効CPU指定部1Aは、決定されたCPUグループをスケジューラ4にインプットする。これにより、実行状態のタスクを指定されたCPUグループのCPUにて動作させる。図2には、実行状態のタスクとして「TASK0」、「TASK1」とそれぞれ表されるタスク20,21を示す。なお、1つのタスクは1つの機能ブロックを制御する。
図2は、複数のタスクがほぼ同時に実行状態にあることを表す。CPUを割り当てる処理はタスクごとに実行されるので、複数のタスクにそれぞれCPUを割り当てるための複数の処理が並列して実行される。
実効CPU計算部1Bは、第1のCPUグループ8および第2のCPUグループ9の各CPUの処理時間あるいは使用率を計算する。たとえば実効CPU計算部1Bは、スケジューラ4からCPU負荷に関する情報(CPU Load)を取得して、CPUの処理時間あるいは使用率を計算する。スケジューラ4は、big CPUまたはLittle CPUの負荷に関する情報を生成して、ガバナ1にその情報を送る。CPUの負荷に関する情報とは、上述したCPUの処理時間、またはCPUの使用率である。
ガバナ1およびスケジューラ4は、第1のCPUグループ8(big CPU)および第2のCPUグループ9(Little CPU)のどちらで実行されてもよい。これらのCPUの負荷状況に応じて、ガバナ1およびスケジューラ4を、big CPUおよびLittle CPUのどちらで実行するかを決定してもよい。デバイスドライバ5は、タスクに割り当てられるCPUと同じCPUにより実行されてもよい。
図3は、実施の形態1に係る定義情報のデータ構造を示した図である。図3に示すように、定義情報では、複数の機能ブロック(VCP,USBコントローラ、GPU、SDホストコントローラ、I2Cコントローラ等)と、複数のCPU(big CPUまたはLITTLE CPU)との間の対応関係が定義付けられる。図3の例において、VCP、USBコントローラ、GPUの各々の機能ブロックはbig CPUに対応付けられている。これらの機能ブロックは、高性能CPUを必要とする(高い処理性能を必要とする)機能ブロックである。一方、SDホストコントローラ、I2CコントローラはLITTLE CPUに対応付けられている。これらの機能ブロックは、高性能CPUを必ずしも必要としない(LITTLE CPUでタスクを動作させてもシステム全体の性能への影響が少ない)ブロックである。
図4は、実施の形態1に係るCPU割当判定部(ガバナ1)の概要を説明した概略図である。図4を参照して、CPU割当判定部(ガバナ1)は、実行状態のタスクごとに、各機能ブロックの状況(オンまたはオフ)に関する情報を取得する。
ガバナ1は、さらにデバイステーブル2を参照する。稼働状態にある機能ブロックがデバイステーブル2に登録された機能ブロックである場合、デバイステーブル2から実効CPU情報が得られる。ガバナ1は、実効CPU情報に基づいて、実行状態のタスクに割り当てられるCPU(実効CPU)を決定する。図2に示すように、複数のタスクが同時に実行状態に遷移している場合には、ガバナ1は、タスクごとに、そのタスクに割り当てられる実効CPUがbig CPUおよびLITTLE CPUのいずれであるかを判定する。複数のタスクが同時に実行状態に遷移している場合、複数のタスクでそれぞれ制御されるべき複数の機能ブロックが同時に稼働状態にある。実施形態1では、ガバナ1は各機能ブロックが稼働状態にあるかどうかを確認するものの、稼働状態にある機能ブロックとタスクとの関係は確認しない。稼働状態にある機能ブロックの中に、big CPUに対応付けられた機能ブロックが含まれる場合、ガバナ1は、そのタスクにbig CPUを割り当てる。一方、稼働状態にある機能ブロックの中にbig CPUに対応付けられた機能ブロックが存在しない場合、ガバナ1は、タスクにLITTLE CPUを割り当てる。
複数のタスクが実行状態であるものの、デバイステーブル2に登録された機能ブロックのいずれも非稼働状態である場合(すなわち、デバイステーブル2に登録されていない機能ブロックが稼働する場合)、CPU割当判定部(ガバナ1)は、CPU負荷に基づいて、実効CPUを判定する。たとえば、ガバナ1は、CPU処理時間に基づいて、実効CPUを判定する。CPU処理時間が長い(CPU負荷が大きい)場合には、big CPUが割り当てられ、CPU処理時間が短い(CPU負荷が小さい)場合には、LITTLE CPUが割り当てられる。CPU処理時間に代えてCPU使用率を実効CPUの判定に用いることができる。
対称型マルチプロセッサ(SMP)システムの場合、システムは複数の同一種類のCPUにより構成されるので、それらCPUの処理性能は、基本的に同じである。したがってSMPでは、CPU処理時間のみに基づいて実効CPUを決定したとしても性能低下の問題は顕著には表れない。一方、本実施の形態では、非対称型マルチプロセッサシステム(ASMP)が適用される。ASMPにおいて、CPU負荷(たとえばCPU処理時間)のみに基づいて実効CPUを決定した場合、動作するユースケースによっては、システムの性能を維持あるいは向上したい場合においても、性能が低下するように制御が実行される可能性がある。
図5は、非対称型マルチプロセッサシステムにおける、CPU処理時間のみに基づいたスケジューリングを模式的に示した図である。図5に示すように、たとえば2つのタスク(「タスク1」および「タスク2」)を仮定する。「CPU負荷」は、CPUが処理するタスクの重さを表す。タスク1のほうがタスク2よりもCPU負荷が大きい。
CPU負荷のみに基づいてCPUが割り当てられるようにスケジューリングを実行するものとする。この場合、タスク1にはbig CPUが割り当てられ、タスク2にLITTLE CPUが割り当てられる。しかしながら、ユースケースは、CPUだけで成立するのではなく、CPUおよびCPUと関わる機能ブロックを含むシステム全体によって成立する。したがって、システム全体の負荷は、CPUの負荷およびハードウェア(HW)の負荷から成り立つ。アプリケーションが必要とする性能(スループット/ローレイテンシ)を実現するためにはCPU処理時間だけでなく、機能ブロックの負荷(たとえば機能ブロックの処理時間)も考慮して実効CPUを選択する必要がある。たとえばタスク2をLITTLEで動作させることにより、システムの性能が低下する可能性がある。
図6は、非対称型マルチプロセッサシステムにおいて、LITTLE CPUにタスクが割り当てられることによる性能の低下の例を示した模式図である。図6では、一例として、CPU(big またはLITTLE)およびGPU(HW Device)による描画処理が示される。なお、以下に記載した数値は説明のために用いた例であって、この実施の形態を限定するものではない。
big CPUによりタスクを動作させることによって処理時間が短くなるため、GPUの処理時間を確保できる。この場合には、全体の処理時間が短くなるので、より高いフレームレートを実現できる。一方、LITTLE CPUによりタスクを動作させることによって、処理時間が長くなる。この場合、処理がある一定の時間内に終わらないことが考えられる。したがって、全体の処理時間が長くなる。すなわちフレームレートが低下する。big CPUとGPUとの組み合わせでは、フレームレートがたとえば60fps(1フレームの描画時間が16.6ms)である。一方、LITTLE CPUとGPUとの組み合わせでは、フレームレートがたとえば50fps(1フレームの描画時間が20.0ms)となる。
この実施の形態では、デバイステーブル2に記憶された定義情報によって、実効CPUを決定する。定義情報は、機能ブロックと実効CPUとの対応関係の情報である。この対応関係は、タスクのCPU処理時間だけでなく機能ブロックの処理時間も考慮した上で設定される。定義情報に従って、タスクに対して割り当てられる実効CPUを決定する。これにより、性能が異なる複数のCPUで構成されたシステムにおいて、システムの性能の低下を防ぐことができる。
図7は、実施の形態1に係るCPU割当判定部(ガバナ1)の動作フローを説明するフローチャートである。big CPUまたはLITTLE CPUにより、このフローチャートに示す処理が実行される。図7のフローチャートは、1つのタスクに対するCPUの割り当て処理を示している。以下、複数のタスクが同時に実行状態にある場合について説明する。この場合、図7に示すフローチャートの処理が、タスクの数だけ並列に実行される。
図7を参照して、あるタスクが実行可能状態から実行状態へと移行する。ステップS1において、ガバナ1は、各機能ブロックのオンまたはオフの状況に関する情報を取得する。具体的には、クロック制御器113Fが、各機能ブロックへのクロックの供給状況に関する情報をデバイスドライバ5に送信する。デバイスドライバ5は、その情報に基づいて、各機能ブロックがオンまたはオフのいずれかであることを示す情報を生成する。デバイスドライバ5は、その情報をガバナ1に送信する。すなわち、ガバナ1は、複数の機能ブロックの各々への電源の供給の状況を取得して、各機能ブロックの稼働状態を判定する。より具体的には、ガバナ1は、クロックが供給されている機能ブロックが稼働状態の機能ブロックであると判定する。機能ブロックのクロックを管理することによって、その機能ブロックが稼働状態であるかどうかを容易に判別することができる。したがって、その機能ブロックに電源が供給されているかどうかも容易に判別できる。実施の形態1では、比較的簡易な方法により、機能ブロックが稼働状態であるかどうかを容易に判別することができる。
ステップS2において、ガバナ1は、テーブル判定処理を実行する。ガバナ1は、稼働状態にある複数の機能ブロックの各々について、その機能ブロックがデバイステーブル2において指定された機能ブロックであるかどうかを判定する。稼働状態にある複数の機能ブロックの中に、デバイステーブル2において指定された機能ブロックが少なくとも1つ含まれる場合(ステップS2において、「指定あり」の場合)、ステップS3においてガバナ1は、実効CPU判定処理を実行する。
ステップS3の判定処理において、稼働状態にある複数の機能ブロックの中に、デバイステーブル2において、big CPUと対応付けられた機能ブロックが少なくとも1つ含まれる場合、ガバナ1は、タスクに割り当てられる実効CPUがbig CPUであると判定する。ステップS4において、ガバナ1は、big CPUを実効CPUに設定する。ガバナ1は、スケジューラ4に実効CPU(big CPU)をインプットする。一方、稼働状態にある複数の機能ブロックの中に、デバイステーブル2に登録された機能ブロックが含まれるものの、その登録された機能ブロックにはbig CPUが対応づけられていない(言い換えるとLITTLE CPUが対応付けられている)場合、ガバナ1は、タスクに割り当てられる実効CPUがbig CPUであると判定する。ステップS5において、ガバナ1は、LITTLE CPUを実効CPUに設定する。ステップS4と同じく、ガバナ1は、スケジューラ4に実効CPU(LITTLE CPU)をインプットする。ステップS4またはステップS5において実効CPUがスケジューラ4にインプットされると、実効CPUの割り当て処理は終了する。以後、そのタスクの動作のためのソフトウェア処理が実行される。
複数のタスクが実行状態に遷移している場合、各タスクの実効CPUを判定するタイミングがほぼ同じになる。稼働状態にある複数の機能ブロックの中に、big CPUと対応付けられた少なくとも1つの機能ブロックが含まれる場合には、全タスクをbig CPUで実行させるように実効CPUが設定される。図3を参照して、たとえば、VCP113Aと、GPU113Bと、SDホストコントローラ113Dとが稼働状態である場合、それらの機能ブロックにより実現されるすべてのタスクをbig CPUで動作させる。したがって、システムの性能が低下することが防がれる。一方、ステップS3において、稼働状態にある複数の機能ブロックがすべてLITTLE CPUに対応付けられている場合、すべての実行状態のタスクをLITTLE CPUで動作させるように実効CPUが設定される。図3を参照して、たとえば、SDホストコントローラ113DとI2Cコントローラ113Eとが稼働状態である。big CPUに関連付けられたすべての機能ブロックは非稼働状態である。この場合、稼働状態にある複数の機能ブロックにより実現されるすべてのタスクをLITTLE CPUで動作させる。高性能が要求されない処理をLITTLE CPUによって実行することにより、システムの消費電力を低減することができる。
稼働状態にある複数の機能ブロックのいずれもデバイステーブル2において指定されていない場合(ステップS2において「指定なし」の場合)、ガバナ1は、タスクを動作させるためのCPU負荷に関する情報に従って、その機能ブロックによって実現されるタスクに割り当てられる実効CPUを判定する。「ステップS2において「指定なし」の場合」とは、デバイステーブル2に登録された機能ブロックがすべて非稼働状態である場合に相当する。詳細には、ガバナ1は、スケジューラ4によるスケジューリングに基づいてCPU処理時間を取得する(ステップS6)。次にCPU処理時間が判定される(ステップS7)。ステップS6,S7の処理は、実効CPU計算部1Bによって実行される。
ステップS7において、実効CPU計算部1Bは、CPU処理時間が予め設定された基準時間より長いかどうかを判定する。CPU処理時間が基準時間よりも長いと判定された場合、処理はステップS4に進む。したがって、big CPUが実効CPUに設定される。一方、CPU処理時間が基準時間よりも短いと判定された場合、処理はステップS5に進み、LITTLE CPUが実効CPUに設定される。CPUの負荷に応じて実効CPUを設定するので、高い処理性能が要求される場合には、高性能CPUによりタスクを動作させることによって要求される性能を満たすことができる。一方、高い処理性能が必ずしも要求されない場合には、低性能CPUによりタスクを動作させることによって、消費電力を低減することができる。
ステップS7の処理では、CPU処理時間に代えてCPU使用率が用いられてもよい。この場合、CPU使用率が基準の使用率と比較される。CPU使用率が基準の使用率を上回る場合、ステップS4においてbig CPUが実効CPUに設定される。CPU使用率が基準の使用率を下回る場合、ステップS5においてLITTLE CPUが実効CPUに設定される。
ステップS7からステップS4またはステップS5に処理が進み、実効CPUがスケジューラ4にインプットされると、実効CPUの割り当て処理は終了する。以後、そのタスクの動作のためのソフトウェア処理が実行される。
タスクに関連付けられる機能ブロックが不明な場合(たとえば全く新規のタスクが実行状態に移行した場合)には、ガバナ1は、実効CPUに関する情報を有していない。この場合、ガバナ1は、big CPUを実効CPUに設定する。これにより、システムの性能を維持することができる。機能ブロックが不明な場合には、機能ブロックが判明した後に、稼働状況に応じてガバナ1が実効CPUを設定してもよい。
実施の形態1では、デバイステーブル2によって、機能ブロックと実効CPUとが対応付けられる。ガバナ1はデバイステーブル2を参照して、実効CPUを判定する。システム(機能ブロックと実効CPUとの組み合わせ)に高い処理性能が要求される場合には、デバイステーブル2において、その機能ブロックと高性能のCPUとが対応付けられる。CPUの負荷が低いタスクであっても、デバイステーブル2に従って、そのタスクに高性能のCPUを割り当てることができる。特に、稼働状態にある複数の機能ブロックの中に、big CPUと対応付けられた少なくとも1つの機能ブロックが含まれる場合には、動作中の全タスクをbig CPUで一括して実行させるように実効CPUが設定される。これにより、システムの処理性能を維持あるいは向上することができる。一方、稼働状態にある複数の機能ブロックがすべてLITTLE CPUに対応付けられている場合、すべての実行状態のタスクをLITTLE CPUで動作させるように実効CPUが設定される。必ずしも高い性能が要求されない場合には、低性能のCPUがタスクを動作させることによって、システムの消費電力を低減できる。
たとえば近年の車載情報システムにおいては、複数のアプリケーションを同時に動作させながら操作レスポンスを向上させるといった、性能に関する強い要求が求められている。そのため、たとえば車載情報システムにおいては、複数の処理を並列的に処理するためにマルチプロセッサが求められている。一方で、ハードウェア(ダイ)のサイズの制限等の理由によって、複数の高性能CPUをシステムに搭載することが技術的に難しいことが多い。したがって、車載情報システムにおいては、高性能なCPUだけでなく、チップ面積の点で有利な低性能CPUも必要とされる。実施の形態1では、定義情報あるいはCPU処理時間に基づいて、タスクを適切なCPUに割り当てることができる。したがって異なる性能を有する複数のCPUから構成されたシステムにおいて、性能低下を防ぎつつ、並列処理の性能を向上することができる。
また、実施の形態1によれば、デバイステーブル2の設定により、実効CPUを割り当てることができる。実施の形態1に係る実効CPUの割り当ては、システムに容易に実装可能であるという点において有利である。
<実施の形態2>
実施の形態2に係る半導体集積回路の構成は、図1に示した半導体集積回路100の構成と基本的に同じであるので以後の説明は繰り返さない。図8は、実施の形態2に係る半導体集積回路100のハードウェアおよびソフトウェアの構成を階層的に例示した図である。
図8を参照して、実施の形態2では、ガバナ1は、デバイスドライバ5から、機能ブロックの処理時間を取得する。図8では、機能ブロック群13に含まれる機能ブロック131,132が例示される。機能ブロック131,132の種類は特に限定されず、たとえば図1に示した、VCP113A、GPU113B、USBコントローラ113C、SDホストコントローラ113D、I2Cコントローラ113E等であってもよい。
デバイスドライバ5は、対応の機能ブロックの処理時間をモニタする。モニタされた処理時間の値は、デバイスドライバ5からガバナ1へと送られる。
図9は、実施の形態2に係る定義情報のデータ構造を示した図である。図9に示すように、実施の形態2では、実効CPUに加えて処理時間の閾値が、機能ブロックに対応付けられる。図9において、「A」、「B」、「C」、「D」、「E」は、それぞれ、VCP113A、GPU113B、USBコントローラ113C、SDホストコントローラ113D、およびI2Cコントローラ113Eの処理時間の閾値を表す。たとえば、事前にユースケースの稼働率をプロファイリングすることによって、各機能ブロックに対して閾値を設定することができる。なお、LITTLE CPUに対応付けられた機能ブロックに割り当てられた処理時間閾値は、デバイステーブル2を構成するために必要とされるものであり、実効CPUの割り当てに必須のものではない。
図10は、実施の形態2に係るCPU割当判定部(ガバナ1)の概要を説明した概略図である。図10を参照して、実施の形態2では、CPU割当判定部(ガバナ1)は、タスクのCPU処理時間に加えて、機能ブロックの処理時間をモニタする。ガバナ1は、デバイステーブル2を参照して、アプリケーションの実行のための機能ブロックがデバイステーブル2に登録されているかどうかを判定する。ガバナ1は、CPU処理時間、および、機能ブロックの処理時間とからタスクを動作させるCPUグループを決定する。
図8に示すように複数のタスクが同時に実行状態に遷移している場合には、ガバナ1は、タスクごとに、そのタスクに割り当てられる実効CPUがbig CPUおよびLITTLE CPUのいずれであるかを判定する。複数のタスクでそれぞれ制御されるべき複数の機能ブロックが同時に稼働状態にある。実施形態1と同様に、ガバナ1は各機能ブロックが稼働状態にあるかどうかを確認するものの、稼働状態にある機能ブロックとタスクとの関係は確認しない。稼働状態にある機能ブロックの中に、big CPUに対応付けられた機能ブロックが含まれており、かつ、その機能ブロックの処理時間が閾値を超える場合、ガバナ1は、そのタスクにbig CPUを割り当てる。実効CPUを判定するタイミングが複数のタスクの間でほぼ同じであるので、複数のタスクの全てにbig CPUが割り当てられる。
図11は、実施の形態2に係るCPU割当判定部(ガバナ1)の動作フローを説明するフローチャートである。このフローチャートに示す処理は、big CPUまたはLITTLE CPUにより実行される。図7に示すフローチャートと同じく、図11のフローチャートは、1つのタスクに対するCPUの割り当て処理を示している。したがって、複数のタスクが同時に実行状態にある場合、図11に示すフローチャートの処理が、タスクの数だけ並列に実行される。図11を参照して、タスクが実行可能状態から実行状態へと移行する。
次に、図7に示すステップS1の処理に替えてステップS11の処理が実行される。ステップS11では、CPU割当判定部(ガバナ1)が、稼働状態にある機能ブロックの処理時間をデバイスドライバ5から取得する。
次に、ステップS2の処理が実行される。ガバナ1は、デバイステーブル2を参照して、稼働状態にある機能ブロックの中に、デバイステーブル2において指定された機能ブロックが含まれているかどうかを判定する。稼働状態にある機能ブロックの中に、デバイステーブル2において指定された機能ブロックが含まれる場合(ステップS2において、「指定あり」の場合)、ステップS3Aにおいて、ガバナ1は、実効CPU判定処理を実行する。
稼働状態にある機能ブロックの中に、big CPUと対応付けられた機能ブロックがあり、かつ、その機能ブロックの処理時間が閾値を超える場合には、処理はステップS4に進む。この場合、タスクをbig CPUで実行させるように実効CPUが設定される。
稼働状態にある機能ブロックの中にbig CPUと対応付けられた機能ブロックが含まれるものの、その機能ブロックの処理時間が閾値未満である場合、あるいは、稼働状態にある機能ブロックがいずれもLITTLE CPUと対応付けられている場合には、処理はステップS5に進む。ガバナ1は、タスクに対する実効CPUをLITTLE CPUに設定する。
実施の形態1と同様に、デバイステーブル2に登録された機能ブロックのすべてが稼働してない場合には、処理がステップS2,S6,S7の順に進む。ステップS4またはステップS5において、CPU処理時間に基づいてタスクを動作させる実効CPUが決定される。
USBを例とすると、USBデバイスには、USBマウスのような、タスクを動作させるときのCPUの負荷が比較的小さいデバイスがある。一方、USBデバイスには、USBメモリのように、CPUの負荷が比較的大きいデバイスもある。実施の形態1によれば、USBデバイスにbig CPUが割り当てられるようにデバイステーブル2に定義されているので、USBデバイスの種類によらずbig CPUが実効CPUに設定される。したがって、実施の形態1では、USBマウスの操作のように、高性能のCPUを必ずしも必要とされないタスクが複数のタスクの中に含まれていたとしても、デバイステーブル2に定義された情報に基づき、そのタスク(USBマウス操作)にbig CPUが割り当てられる。実施の形態1では、複数のタスクが同時に実行状態にあり、その複数のタスクの中にUSBマウスの操作というタスクが含まれる場合には、複数のタスクのすべてにbig CPUが割り当てられる。
実施の形態2において、ガバナ1は、CPU処理時間に加えて、機能ブロックの処理時間を把握する。さらに、デバイステーブル2には、機能ブロックと実効CPUとが対応付けられるだけでなく、その機能ブロックの処理時間の閾値も登録される。実施の形態2によれば、複数の機能ブロックの中に、big CPUと対応付けられた機能ブロックが含まれる場合であっても、その機能ブロックの処理時間が閾値未満であれば、動作中の全タスクがLITTLE CPUに割り当てられる。
たとえばUSBメモリ、SDカードおよびI2C ICを使用する場合、機能ブロックとしてUSBコントローラ、SDホストコントローラおよびI2Cコントローラが用いられる。図9に示すように、デバイステーブル2において、USBコントローラとbig CPUとが対応付けられ、SDホストコントローラおよびI2CコントローラがLITTLE CPUに対応付けられる。USBコントローラ、SDホストコントローラ、およびI2Cコントローラによってそれぞれ実現される複数のタスクが同時に実行状態にあり、USBコントローラの処理時間が閾値Bを上回る場合には、複数のタスクのすべてに対してbig CPUが割り当てられる。次に、USBマウス、SDカードおよびI2C ICを使用する場合を説明する。この場合に使用される機能ブロックは、上述の例において説明した機能ブロックと同じである。しかしUSBコントローラ、SDホストコントローラ、およびI2Cコントローラによってそれぞれ実現される複数のタスクが同時に実行状態にあり、USBコントローラの処理時間が閾値Bを下回る場合、複数のタスクのすべてに対してLITTLE CPUが割り当てられる。実施の形態2では、同じ機能ブロックを使用する場合であっても、処理時間および消費電力の観点から、より適切なCPUにタスクを割り当てることができる。したがって異なる性能を有する複数のCPUを備えたシステムにおいて、並列処理性能を向上することができる。
<実施の形態3>
実施の形態3に係る半導体集積回路の構成は、図1に示した半導体集積回路100の構成と基本的に同じであるので以後の説明は繰り返さない。図12は、実施の形態3に係る半導体集積回路100のハードウェアおよびソフトウェアの構成を階層的に例示した図である。
図12を参照して、実施の形態3では、ガバナ1は、使用ブロック確認部1Cをさらに含む点において、図8に示した構成と相違する。使用ブロック確認部1Cは、実行状態に移行したタスクが使用している機能ブロックを判別する。使用ブロック確認部1Cは、実行状態に移行したタスクを実行するためのアプリケーションを特定し、アプリケーションテーブル3を用いて、その特定されたアプリケーションソフトから、使用される機能ブロックを特定してもよい。図12に示した構成のうち、使用ブロック確認部1C以外の部分は、図8に示された対応する部分の構成と同じであるので以後の説明は繰り返さない。
アプリケーションテーブル3は、アプリケーションの実行に用いられる機能ブロックが登録されたテーブルである。たとえば、アプリケーションが一度実行されると、そのアプリケーションのために使用された機能ブロックがアプリケーションテーブル3に登録される。そのアプリケーションの2回目以後の実行時には、アプリケーションテーブル3に登録された情報から、使用される機能ブロックを特定することができる。しかしながらアプリケーションと機能ブロックとを紐づけるための手段および方法は、上述の方法に限定されるものではない。
図13は、実施の形態3に係る定義情報のデータ構造を示した図である。図13に示したデータ構造は、基本的に図9に示した定義情報のデータ構造と同じである。実施の形態2との区別のため、図13では、VCP113A、GPU113B、USBコントローラ113C、SDホストコントローラ113D、およびI2Cコントローラ113Eの処理時間の閾値を、それぞれ「a」、「b」、「c」、「d」、「e」と表す。
図14は、実施の形態3に係るCPU割当判定部(ガバナ1)の動作フローを説明するフローチャートである。このフローチャートに示す処理は、big CPUまたはLITTLE CPUがプログラムを実行することにより実行される。図7および図11に示すフローチャートと同じく、図14のフローチャートは、1つのタスクに対するCPUの割り当て処理を示している。したがって、複数のタスクが同時に実行状態にある場合、図14に示すフローチャートの処理が、タスクの数だけ並列に実行される。
図14を参照して、タスクが実行可能状態から実行状態へと移行すると、ステップS10の処理が実行される。ステップS10において、ガバナ1(使用ブロック確認部1C)は、タスクが処理に使用する機能ブロックを確認する。ステップS11において、CPU割当判定部(ガバナ1)がデバイスドライバ5からタスクに関する機能ブロックの処理時間を取得する。次に、ステップS2の処理が実行される。ガバナ1は、デバイステーブル2を参照して、実行状態のタスクに関連する機能ブロックが、デバイステーブル2において指定された機能ブロックであるかどうかを判定する。判定の対象となる機能ブロックがデバイステーブル2において指定されている場合(ステップS2において、「指定あり」の場合)、ステップS3Bにおいて、ガバナ1は、実効CPU判定処理を実行する。
ステップS3Bにおいて、ガバナ1は、機能ブロックに対応付けられた実効CPUおよび閾値の情報を、デバイステーブル2から取得する。big CPUと対応付けられた機能ブロックの処理時間が閾値を超えている場合、ガバナ1は、ステップS4において、タスクをbig CPUで実行させるように実効CPUを設定する。したがって、システムの性能が低下することが防がれる。一方、指定された機能ブロックに対応する実効CPUがbig CPUであっても機能ブロックの処理時間が閾値未満の場合、あるいは、指定された機能ブロックに対応する実効CPUとしてLITTLE CPUが登録されている場合、処理はステップS5に進む。ガバナ1は、タスクに対する実効CPUをLITTLE CPUに設定する。これによりシステムの消費電力を低減することができる。
実施の形態3では、実効状態のタスクごとに機能ブロックの処理時間を把握して処理性能を必要とするタスクを特定する。ガバナ1は、そのタスクを動作させる実効CPUにbig CPUを割り当てる。これによって、システムの性能劣化を避けることが可能となる。一方、処理性能を必要としないタスクを特定して、そのタスクを動作させる実効CPUにLITTLE CPUを割り当てる。これにより消費電力を低減することができる。同時に実行状態にある複数のタスクを、要求される処理性能の点から、big CPUおよびLITTLE CPUに分担させることができるので、消費電力の増大を抑えつつ並列処理性能を向上させることができる。さらに、実施の形態3では、ガバナ1が、使用される機能ブロックを確認する。これにより、ガバナ1は、その機能ブロックが、デバイステーブル2に登録された機能ブロックであるかどうかを確実に判定することができる。これにより、big CPUおよびLITTLE CPUの中から最適なCPUをタスクの動作のために割り当てることができる。
なお、上記の各実施の形態によれば、半導体集積回路100は、性能が互いに異なる2つのCPUのグループを有する。しかし本実施の形態は、このように限定されない。半導体集積回路100は、性能が互いに異なる3以上のCPUのグループを有してもよい。
また、上記各実施の形態に係る半導体集積回路は車載システムに適用されるように限定されるものではない。たとえばサーバシステムにも上記各実施の形態に係る半導体集積回路を適用することが可能である。サーバシステムには高い性能が要求される一方で、発熱を抑制することも求められる。上記各実施の形態によれば、処理性能が要求される一方でCPU負荷が低いタスクを動作させる際に高性能CPUを割り当てることができる。したがってサーバシステムの処理性能を維持または向上することができる。一方で、上記の各実施の形態によれば、高い処理性能を必ずしも必要としないタスクを動作させる際に低性能CPUを割り当てることができる。この場合には、サーバシステムの発熱を抑制することができる。
なお、複数のタスクが1つずつ順番に実行される場合には、稼働中の機能デバイスの数は1つである。したがって、実施の形態1および実施の形態2でも稼働中の機能デバイスを特定することができる。このような場合、実効CPUの割り当てに関する処理は、実施形態2と実施形態3との間で実質的に同じである。また、実施形態1における実効CPUの割り当ては、big CPUと対応付けられた機能ブロックの処理時間を閾値と比較する処理が省略される点で、実施形態2および実施形態3における実効CPUの割り当てと異なっている。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
1 ガバナ、1A 実効CPU指定部、1B 実効CPU計算部、1C 使用ブロック確認部、2 デバイステーブル、3 アプリケーションテーブル、4 スケジューラ、5 デバイスドライバ、6 クロックパルス発振器、8 第1のCPUグループ、9 第2のCPUグループ、11 メモリ、12 入出力インタフェース回路、13 機能ブロック群、14 内部クロックバス、15 周辺クロックバス、100 半導体集積回路、101 周辺デバイス、101A ディスプレイ、101B USBデバイス、101C SDカード、102,110 バス、105 水晶発振器、106 電源、111A VCP、113B GPU、113C USBコントローラ、113D SDホストコントローラ、113E I2Cコントローラ、113F クロック制御器、121 ハードウェア層、122 ソフトウェア層、123 ユーザー層、131,132 機能ブロック、S1〜S7,S3A,S3B,S10,S11 ステップ。

Claims (18)

  1. 異なる性能を有する複数のCPUと、
    複数の機能ブロックと、
    前記複数の機能ブロックと前記複数のCPUのうちのいずれかのCPUとの関係を定義した定義情報に従って、前記複数の機能ブロックのうちの少なくとも1つの機能ブロックにより実現されるタスクに割り当てられる実効CPUを判定する割当判定部とを備える、半導体集積回路。
  2. 前記割当判定部は、前記複数の機能ブロックの中から稼働状態にある機能ブロックを判定して、前記稼働状態の機能ブロックにより実現される前記タスクに割り当てられる前記実効CPUを判定する、請求項1に記載の半導体集積回路。
  3. 前記割当判定部は、前記複数の機能ブロックの各々への電源の供給の状況を取得して、前記稼働状態を判定する、請求項2に記載の半導体集積回路。
  4. 前記割当判定部は、クロックが供給されている機能ブロックが前記稼働状態の機能ブロックであると判定する、請求項3に記載の半導体集積回路。
  5. 前記複数の機能ブロックは、
    前記定義情報によって前記複数のCPUのうち高い性能を有する高性能CPUに対応付けられた第1の機能ブロックと、
    前記定義情報によって前記複数のCPUのうち低い性能を有する低性能CPUに対応付けられた第2の機能ブロックとを含み、
    前記第1の機能ブロックと前記第2の機能ブロックとが前記稼働状態である場合に、前記割当判定部は、前記高性能CPUが、前記第1の機能ブロックにより実現されるタスクおよび前記第2の機能ブロックにより実現されるタスクに割り当てられる前記実効CPUであると判定する、請求項2に記載の半導体集積回路。
  6. 前記第1の機能ブロックが非稼働状態であり、かつ前記第2の機能ブロックが稼働状態である場合に、前記割当判定部は、前記低性能CPUが、前記第2の機能ブロックにより実現されるタスクに割り当てられる前記実効CPUであると判定する、請求項5に記載の半導体集積回路。
  7. 前記割当判定部は、
    前記複数の機能ブロックのいずれも非稼働状態である場合には、前記タスクを動作させるためのCPU負荷に関する情報に従って、前記実効CPUを判定する、請求項1に記載の半導体集積回路。
  8. 前記割当判定部は、
    前記CPU負荷が大きい場合には、前記複数のCPUのうち高い性能を有する高性能CPUが前記実効CPUであると判定し、
    前記CPU負荷が小さい場合には、前記複数のCPUのうち低い性能を有する低性能CPUが前記実効CPUであると判定する、請求項7に記載の半導体集積回路。
  9. 前記割当判定部は、
    前記CPU負荷に関する前記情報が取得できない場合には、前記複数のCPUのうち高い性能を有するCPUが前記実効CPUであると判定する、請求項7に記載の半導体集積回路。
  10. 前記定義情報は、さらに、前記複数の機能ブロックの各々の処理時間の閾値を含み、
    前記割当判定部は、前記機能ブロックの前記処理時間に関する情報を取得し、
    前記複数の機能ブロックは、
    前記定義情報によって前記複数のCPUのうち高い性能を有する高性能CPUに対応付けられた少なくとも1つの第1の機能ブロックを含み、
    前記少なくとも1つの第1の機能ブロックの前記処理時間が前記閾値を超える場合に、前記割当判定部は、前記高性能CPUが、前記少なくとも第1の機能ブロックにより実現されるタスクに割り当てられる前記実効CPUであると判定する、請求項1に記載の半導体集積回路。
  11. 前記複数の機能ブロックは、
    前記定義情報によって前記複数のCPUのうち低い性能を有する低性能CPUに対応付けられた少なくとも1つの第2の機能ブロックをさらに含み、
    前記少なくとも1つの第1の機能ブロックが非稼働状態であり、かつ、前記少なくとも1つの第2の機能ブロックが稼働状態である場合、前記割当判定部は、前記低性能CPUが、前記少なくとも1つの第2の機能ブロックにより実現されるタスクに割り当てられる前記実効CPUであると判定する、請求項10に記載の半導体集積回路。
  12. 前記割当判定部は、前記複数の機能ブロックのうち、実行状態に遷移したタスクに使用される機能ブロックを判別して、前記使用される機能ブロックが前記定義情報に定義されているか否かを判定する、請求項1に記載の半導体集積回路。
  13. 前記定義情報は、さらに、前記複数の機能ブロックの各々の処理時間の閾値を含み、
    前記割当判定部は、前記機能ブロックの前記処理時間に関する情報を取得し、
    前記複数の機能ブロックは、
    前記定義情報によって前記複数のCPUのうち高い性能を有する高性能CPUに対応付けられた少なくとも1つの第1の機能ブロックを含み、
    前記少なくとも1つの第1の機能ブロックの前記処理時間が前記閾値を超える場合に、前記割当判定部は、前記高性能CPUが、前記少なくとも1つの第1の機能ブロックにより実現されるタスクに割り当てられる前記実効CPUであると判定する、請求項12に記載の半導体集積回路。
  14. 前記複数の機能ブロックは、
    前記定義情報によって前記複数のCPUのうち低い性能を有する低性能CPUに対応付けられた少なくとも1つの第2の機能ブロックをさらに含み、
    前記少なくとも1つの第1の機能ブロックが非稼働状態であり、かつ、前記少なくとも1つの第2の機能ブロックが稼働状態である場合、前記割当判定部は、前記低性能CPUが、前記少なくとも1つの第2の機能ブロックにより実現されるタスクに割り当てられる前記実効CPUであると判定する、請求項13に記載の半導体集積回路。
  15. 異なる性能を有する複数のCPUと複数の機能ブロックとを備えた半導体集積回路における、CPUの割り当て方法であって、
    前記複数の機能ブロックと前記複数のCPUのうちのいずれかのCPUとの関係を定義した定義情報に従って、前記複数の機能ブロックのうちの少なくとも1つの機能ブロックにより実現されるタスクに割り当てられる実効CPUを判定するステップを備える、CPUの割り当て方法。
  16. 前記複数の機能ブロックのいずれも非稼働状態である場合には、前記タスクを動作させるためのCPU負荷に関する情報に従って、前記実効CPUを判定するステップをさらに備える、請求項15に記載のCPUの割り当て方法。
  17. 前記複数の機能ブロックは、
    前記定義情報によって前記複数のCPUのうち高い性能を有する高性能CPUに対応付けられた第1の機能ブロックと、
    前記定義情報によって前記複数のCPUのうち低い性能を有する低性能CPUに対応付けられた第2の機能ブロックとを含み、
    前記実効CPUを判定するステップは、
    前記高性能CPUが、前記第1の機能ブロックにより実現されるタスクおよび前記第2の機能ブロックにより実現されるタスクに割り当てられる前記実効CPUであると判定するステップを含む、請求項15に記載のCPUの割り当て方法。
  18. 異なる性能を有する複数のCPUと複数の機能ブロックとを備えた半導体集積回路によって実行されるプログラムであって、
    前記複数の機能ブロックと前記複数のCPUのうちのいずれかのCPUとの関係を定義した定義情報に従って、前記複数の機能ブロックのうちの少なくとも1つの機能ブロックにより実現されるタスクに割り当てられる実効CPUを判定するステップを、前記複数のCPUのうちの少なくとも1つに実行させる、プログラム。
JP2018117087A 2018-06-20 2018-06-20 半導体集積回路、cpuの割り当て方法、およびプログラム Pending JP2019219931A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018117087A JP2019219931A (ja) 2018-06-20 2018-06-20 半導体集積回路、cpuの割り当て方法、およびプログラム
US16/411,942 US20190391846A1 (en) 2018-06-20 2019-05-14 Semiconductor integrated circuit, cpu allocation method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018117087A JP2019219931A (ja) 2018-06-20 2018-06-20 半導体集積回路、cpuの割り当て方法、およびプログラム

Publications (1)

Publication Number Publication Date
JP2019219931A true JP2019219931A (ja) 2019-12-26

Family

ID=68981871

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018117087A Pending JP2019219931A (ja) 2018-06-20 2018-06-20 半導体集積回路、cpuの割り当て方法、およびプログラム

Country Status (2)

Country Link
US (1) US20190391846A1 (ja)
JP (1) JP2019219931A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11663021B2 (en) * 2020-11-24 2023-05-30 Dell Products L.P. System and method for providing granular processor performance control

Also Published As

Publication number Publication date
US20190391846A1 (en) 2019-12-26

Similar Documents

Publication Publication Date Title
US10831551B2 (en) Computing session workload scheduling and management of parent-child tasks using a blocking yield API to block and unblock the parent task
US8788672B2 (en) Microprocessor with software control over allocation of shared resources among multiple virtual servers
GB2544609B (en) Granular quality of service for computing resources
CN109997112B (zh) 数据处理
US10191759B2 (en) Apparatus and method for scheduling graphics processing unit workloads from virtual machines
US9513974B2 (en) Task scheduler mechanism, operating system, and multiprocessor system
JP4705051B2 (ja) 計算機システム
US7398378B2 (en) Allocating lower priority interrupt for processing to slave processor via master processor currently processing higher priority interrupt through special interrupt among processors
US11169846B2 (en) System and method for managing tasks and task workload items between address spaces and logical partitions
US8892819B2 (en) Multi-core system and external input/output bus control method
KR20110046719A (ko) 복수 코어 장치 및 그의 로드 조정 방법
US20130311751A1 (en) System and data loading method
CN118210735A (zh) 用于分配缓存资源的方法和系统
JP2014170363A (ja) 情報処理装置、ジョブスケジューリング方法およびジョブスケジューリングプログラム
WO2016202153A1 (zh) 一种gpu资源的分配方法及系统
Zhang et al. Performance & energy tradeoffs for dependent distributed applications under system-wide power caps
US20130298132A1 (en) Multi-core processor system and scheduling method
US9740530B2 (en) Decreasing the priority of a user based on an allocation ratio
JP2016126426A (ja) マルチコアシステム、マルチコアプロセッサ、並列処理方法及び並列処理制御プログラム
US9170839B2 (en) Method for job scheduling with prediction of upcoming job combinations
JP2019219931A (ja) 半導体集積回路、cpuの割り当て方法、およびプログラム
CN112527451A (zh) 容器资源池的管理方法、装置、设备以及存储介质
US8881163B2 (en) Kernel processor grouping
KR20210007417A (ko) 멀티-코어 시스템 및 그 동작 제어 방법
Rodrigo Álvarez et al. A2l2: An application aware flexible hpc scheduling model for low-latency allocation