JP2016189049A - 半導体装置及びその制御方法 - Google Patents

半導体装置及びその制御方法 Download PDF

Info

Publication number
JP2016189049A
JP2016189049A JP2015067945A JP2015067945A JP2016189049A JP 2016189049 A JP2016189049 A JP 2016189049A JP 2015067945 A JP2015067945 A JP 2015067945A JP 2015067945 A JP2015067945 A JP 2015067945A JP 2016189049 A JP2016189049 A JP 2016189049A
Authority
JP
Japan
Prior art keywords
processor
program
circuit
register
external register
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.)
Granted
Application number
JP2015067945A
Other languages
English (en)
Other versions
JP6478762B2 (ja
Inventor
真琴 佐藤
Makoto Sato
真琴 佐藤
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 JP2015067945A priority Critical patent/JP6478762B2/ja
Priority to US15/076,422 priority patent/US10216679B2/en
Publication of JP2016189049A publication Critical patent/JP2016189049A/ja
Application granted granted Critical
Publication of JP6478762B2 publication Critical patent/JP6478762B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • 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/30098Register arrangements
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/3824Operand accessing
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Power Sources (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

【課題】複数のプロセッサ間におけるプログラムの実行主体の移行を、効率的に行うことができる。【解決手段】半導体装置1は、第1プロセッサ10及び第2プロセッサ20と、プロセッサの外部に設けられた外部レジスタ4とを有する。第1プロセッサ10は、制御回路12と、演算回路14と、第1プロセッサ10の内部に設けられた内部記憶回路16を有する。第2プロセッサ20は、制御回路22と、演算回路24と、第2プロセッサ20の内部に設けられた内部記憶回路26を有する。制御回路12,22は、プログラムの実行を制御する。演算回路14,24は、外部レジスタ4を用いてプログラムに関する演算を行う。外部レジスタ4は、演算回路14,24における演算に関する演算データを記憶する。内部記憶回路16,26は、プログラムの実行の状態に関する実行状態データを記憶する。【選択図】図1

Description

本発明は半導体装置及びその制御方法に関し、例えば複数のプロセッサを有する半導体装置及びその制御方法に関する。
1つのマイクロコンピュータ等の半導体装置に、複数のプロセッサが設けられることが多くなっている。この技術に関連し、特許文献1及び特許文献2には、2つの処理回路を有するデータ処理装置が開示されている。特許文献1及び特許文献2においては、一方の処理回路は、他方の処理回路よりも高い性能で動作する。一方、高性能の処理回路は、低性能の処理回路よりもエネルギー効率が低い。また、特許文献1及び特許文献2においては、2つの処理回路のうちの一方のみが作業負荷を処理する。そして、一方の処理回路で作業負荷を実行中に移転刺激が発生した場合に、作業効率又は電力消費効率を向上させるため、作業負荷が、一方の処理回路から他方の処理回路に移転する。また、非特許文献1にも、このような技術が開示されている。
特表2013−521556号公報 特表2013−521557号公報
Peter Greenhalgh, ARM、「Big.LITTLE Processing with ARM CortexTM−A15 & Cortex-A7」、September 2011
上述した文献においては、作業負荷(タスク)が一方の処理回路から他方の処理回路に移転する際に、作業負荷を実行中の処理回路内の状態が、作業負荷を実行中の処理回路から、他方の処理回路に移転される。具体的には、作業負荷を実行している処理回路は、自身が備えるローカルの記憶装置に記憶されているデータを全て、他方の処理回路に転送する。
一方、処理回路が多くのリソースを備える場合、処理回路が記憶しているデータ量が多くなる。この場合、作業負荷が一方の処理回路から他方の処理回路に移転する際に、転送されるデータが大量となる。したがって、作業負荷を実行している処理回路のローカルの記憶装置に記憶されているデータを他方の処理回路に転送するのに多くの時間を要する。これにより、作業負荷の実行に影響を及ぼすおそれがある。また、大量のデータを転送するため、電力消費量が大きくなるおそれがある。つまり、上述した文献においては、作業負荷が一方の処理回路から他方の処理回路に移転する際に、その移転が効率的に行われないおそれがあった。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態によれば、半導体装置は、それぞれプログラムを実行する複数のプロセッサと、前記プロセッサの外部に設けられ、前記複数のプロセッサそれぞれに接続された外部レジスタとを有し、前記複数のプロセッサのそれぞれは、前記プログラムの実行を制御する制御回路と、前記外部レジスタを用いて前記プログラムに関する演算を行う演算回路と、前記複数のプロセッサそれぞれの内部に設けられた少なくとも1つの内部記憶回路とを有し、前記外部レジスタは、前記演算回路における演算に関する演算データを記憶し、前記内部記憶回路は、前記プログラムの実行の状態に関する実行状態データであって、前記プログラムの実行途中に前記プログラムの実行主体が前記複数のプロセッサの間で移行するときに移行元の前記プロセッサから移行先の前記プロセッサへと転送される実行状態データを記憶する。
なお、上記実施の形態の装置を方法やシステムに置き換えて表現したもの、該装置または該装置の一部の処理をコンピュータに実行せしめるプログラム、該装置を備えた撮像装置なども、本実施の形態の態様としては有効である。
前記一実施の形態によれば、複数のプロセッサ間におけるプログラムの実行主体の移行を、効率的に行うことができる。
本実施の形態にかかる半導体装置の概要を示す図である。 実施の形態1にかかる半導体装置の構成を示す図である。 実施の形態1にかかる移行処理の手順を示すシーケンス図である。 実施の形態1にかかる演算処理の具体例を示す図である。 実施の形態1にかかる演算処理の具体例を示す図である。 図4及び図5に例示した演算処理におけるデータの移動の例を示す図である。 図4及び図5に例示した演算処理におけるデータの移動の例を示す図である。 図4及び図5に例示した演算処理におけるデータの移動の例を示す図である。 図4及び図5に例示した演算処理におけるデータの移動の例を示す図である。 実施の形態2にかかる半導体装置の構成を示す図である。 実施の形態3にかかる半導体装置の構成を示す図である。 変形例にかかる半導体装置を示す図である。
以下、実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
さらに、以下の実施の形態において、その構成要素(動作ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non−transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
(実施の形態の概要)
本実施の形態の説明に先立って、本実施の形態の概要について説明する。
図1は、本実施の形態にかかる半導体装置1の概要を示す図である。半導体装置1は、複数のプロセッサである第1プロセッサ10及び第2プロセッサ20と、外部レジスタ4とを有する。第1プロセッサ10と第2プロセッサ20とは、バス2を介して接続されている。外部レジスタ4は、第1プロセッサ10及び第2プロセッサ20の外部に設けられ、第1プロセッサ10及び第2プロセッサ20のそれぞれに接続されている。つまり、外部レジスタ4は、第1プロセッサ10及び第2プロセッサ20に共有されている。
第1プロセッサ10及び第2プロセッサ20は、それぞれ、プログラムを実行する。第1プロセッサ10は、制御回路12と、演算回路14と、第1プロセッサ10の内部に設けられた内部記憶回路16を有する。同様に、第2プロセッサ20は、制御回路22と、演算回路24と、第2プロセッサ20の内部に設けられた内部記憶回路26を有する。制御回路12及び制御回路22は、プログラムの実行を制御する。演算回路14及び演算回路24は、外部レジスタ4を用いてプログラムに関する演算を行う。なお、内部記憶回路16は、制御回路12の内部に設けられていてもよい。同様に、内部記憶回路26は、制御回路22の内部に設けられていてもよい。
外部レジスタ4は、演算回路14,24における演算に関する演算データを記憶する。一方、内部記憶回路16,26は、プログラムの実行の状態に関する実行状態データを記憶する。ここで、実行状態データは、プログラムの実行途中にプログラムの実行主体が第1プロセッサ10と第2プロセッサ20との間で移行するときに、移行元のプロセッサから移行先のプロセッサへと転送される。
本実施の形態にかかる半導体装置1は、プロセッサの外部に設けられた外部レジスタ4が演算データを記憶し、演算回路14,24は、この外部レジスタ4を用いて演算を行う。したがって、プログラムの実行主体が第1プロセッサ10と第2プロセッサ20との間で移行するときに、外部レジスタ4に記憶された演算データを転送する必要はない。したがって、プログラムの実行主体が第1プロセッサ10と第2プロセッサ20との間で移行するときに転送されるデータ量が削減される。これにより、本実施の形態においては、第1プロセッサ10と第2プロセッサ20との間におけるプログラムの実行主体の移行を、効率的に行うことができる。
(実施の形態1)
図2は、実施の形態1にかかる半導体装置50の構成を示す図である。半導体装置50は、メインメモリ70、割込コントローラ80、高性能プロセッサ100、低性能プロセッサ200及び外部レジスタ300を有する。
高性能プロセッサ100の処理性能(例えば処理速度等)は、低性能プロセッサ200の処理性能よりも高い。言い換えると、低性能プロセッサ200の処理性能は、高性能プロセッサ100の処理性能よりも低い。ここで、「高性能」とは、例えば処理速度が速いことであって、さらに具体的には、例えば、同時に動作するリソースが多いこと、又はクロック周波数が高いことをいう。
また、好ましくは、低性能プロセッサ200の消費電力は、高性能プロセッサ100の消費電力よりも低い。言い換えると、低性能プロセッサ200の電力効率は、高性能プロセッサ100の電力効率よりも高い。また、好ましくは、高性能プロセッサ100がプログラムを実行している間、低性能プロセッサ200は、動作を停止している。逆に、低性能プロセッサ200がプログラムを実行している間、高性能プロセッサ100は、動作を停止している。つまり、ある時間(後述する移行処理の間を除く)において、高性能プロセッサ100及び低性能プロセッサ200のうち、どちらか一方が、プログラムを実行することとなる。
ここで、高性能プロセッサ100のアーキテクチャは、低性能プロセッサ200のアーキテクチャと同じである。したがって、高性能プロセッサ100及び低性能プロセッサ200は、同じプログラム(命令セット)を実行することができる。そして、本実施の形態においては、高性能プロセッサ100がプログラムを実行している間に高性能プロセッサ100の処理負荷状態が低下した場合には、より電力効率の高い低性能プロセッサ200に、プログラムの実行主体を移行することが行われる。逆に、低性能プロセッサ200がプログラムを実行している間に低性能プロセッサ200の処理負荷状態が上昇した場合には、より高性能な高性能プロセッサ100に、プログラムの実行主体を移行することが行われる。
このように、プログラムの実行主体を移行元のプロセッサから移行先のプロセッサに移行することを、「マイグレーション(migration)」という。ここで、「実行主体」とは、プログラムを実行しているプロセッサのことである。そして、「プログラムの実行主体が移行する」とは、プログラムを実行しているプロセッサが、あるプロセッサから別のプロセッサに切り替わることである。例えば、「プログラムの実行主体が高性能プロセッサ100(第1のプロセッサ)から低性能プロセッサ200(第2のプロセッサ)に移行する」とは、高性能プロセッサ100(第1のプロセッサ)がプログラムを実行している途中で低性能プロセッサ200(第2のプロセッサ)がプログラムを実行するようになることである。また、例えば、「プログラムの実行主体が低性能プロセッサ200(第1のプロセッサ)から高性能プロセッサ100(第2のプロセッサ)に移行する」とは、低性能プロセッサ200(第1のプロセッサ)がプログラムを実行している途中で高性能プロセッサ100(第2のプロセッサ)がプログラムを実行するようになることである。また、移行のきっかけとなる事項を「移行刺激」という。本実施の形態においては、高性能プロセッサ100から低性能プロセッサ200への移行の場合の移行刺激は、「処理負荷状態の低下(又はこれに伴う電力値の低下)」である。一方、低性能プロセッサ200から高性能プロセッサ100への移行の場合の移行刺激は、「処理負荷状態の上昇(又はこれに伴う電力値の上昇)」である。しかしながら、移行刺激は、「処理負荷状態」に限られない。
高性能プロセッサ100は、制御回路120、電力算出部132、電力制御部134、演算回路140、レジスタアクセス制御回路150、内部レジスタ160及び内部メモリ170を有する。また、制御回路120は、汎用レジスタ122を有する。ここで、内部レジスタ160、内部メモリ170及び汎用レジスタ122は、高性能プロセッサ100の内部に設けられている内部記憶回路である。
同様に、低性能プロセッサ200は、制御回路220、電力算出部232、電力制御部234、演算回路240、レジスタアクセス制御回路250、内部レジスタ260及び内部メモリ270を有する。また、制御回路220は、汎用レジスタ222を有する。ここで、内部レジスタ260、内部メモリ270及び汎用レジスタ222は、低性能プロセッサ200の内部に設けられている内部記憶回路である。
ここで、制御回路220、電力算出部232、電力制御部234、演算回路240、レジスタアクセス制御回路250、内部レジスタ260及び内部メモリ270は、それぞれ、制御回路120、電力算出部132、電力制御部134、演算回路140、レジスタアクセス制御回路150、内部レジスタ160及び内部メモリ170に対応する。また、汎用レジスタ222は、汎用レジスタ122に対応する。したがって、以下、低性能プロセッサ200の内部構成の説明のうち、高性能プロセッサ100と共通の部分については、適宜、省略される。
メインメモリ70は、高性能プロセッサ100及び低性能プロセッサ200と、バス60を介して接続されている。メインメモリ70は、高性能プロセッサ100又は低性能プロセッサ200で実行されるプログラムを格納している。さらに、メインメモリ70は、高性能プロセッサ100又は低性能プロセッサ200における演算結果の集合を記憶し得る。
割込コントローラ80は、制御回路120又は制御回路220に対する割込みに関する制御を行う。詳しくは後述する。また、割込コントローラ80は、複数の割込みがあった場合に、どの割込みを優先するかを制御してもよい。
外部レジスタ300は、高性能プロセッサ100及び低性能プロセッサ200の外部に設けられている。外部レジスタ300は、高性能プロセッサ100とバス62を介して接続されている。また、外部レジスタ300は、低性能プロセッサ200とバス64を介して接続されている。外部レジスタ300は、演算回路140及び演算回路240における演算処理で用いられる。外部レジスタ300は、好ましくは、複数のレジスタ回路からなるレジスタ群である。また、外部レジスタ300は、複数の記憶領域を有する1つの記憶回路であってもよい。
制御回路120は、高性能プロセッサ100の内部で演算回路140と接続されている。レジスタアクセス制御回路150は、高性能プロセッサ100の内部で制御回路120及び演算回路140と接続されている。同様に、制御回路220は、低性能プロセッサ200の内部で演算回路240と接続されている。レジスタアクセス制御回路250は、低性能プロセッサ200の内部で制御回路220及び演算回路240と接続されている。さらに、レジスタアクセス制御回路150及びレジスタアクセス制御回路250は、それぞれ外部レジスタ300と接続されている。また、制御回路120及び制御回路220は、バス60及び割込コントローラ80を介して互いに接続されている。
内部レジスタ160は、高性能プロセッサ100の内部に設けられたレジスタである。また、内部メモリ170は、高性能プロセッサ100の内部に設けられたメモリである。したがって、内部レジスタ160及び内部メモリ170は、高性能プロセッサ100の内部に設けられた内部記憶回路である。
内部レジスタ160は、高性能プロセッサ100の各構成リソースの内部に設けられていてもよいし、各構成リソースの外部に設けられていてもよい。例えば、内部レジスタ160は、制御回路120又はレジスタアクセス制御回路150の内部に設けられていてもよい。ここで、内部レジスタ160は、例えば、プログラムカウンタ等の制御レジスタであってもよいが、これに限られない。また、好ましくは、内部レジスタ160は、演算回路140の内部には設けられていない。本実施の形態においては、演算回路140の内部にあるべきレジスタの役割は、外部レジスタ300が担う。
なお、内部レジスタ260及び内部メモリ270についても、それぞれ内部レジスタ160及び内部メモリ170と同様である。
制御回路120は、例えばCPU等である。制御回路120は、メインメモリ70に格納されたプログラムの実行を制御する。具体的には、制御回路120は、メインメモリ70からプログラムを読み取って、プログラムの命令セットに応じた制御を行う。また、制御回路120は、プログラムの実行の際に、高性能プロセッサ100の内部の構成リソースの動作を制御する。ここで、制御回路120は、プログラムの実行を制御する際に、例えば汎用レジスタ122に、プログラムの実行状態に関する実行状態データを記憶する。つまり、制御回路120は、汎用レジスタ122等の内部記憶回路に記憶された実行状態データを用いてプログラムの実行を制御している。
ここで、「実行状態」とは、例えば、プログラムの進行状態(例えばプログラムがどこまで進んだか、プログラムのどこを実行しているか等)を示すものであるが、これに限らない。また、実行状態データは、内部レジスタ160及び内部メモリ170にも記憶され得る。つまり、「実行状態データ」とは、汎用レジスタ122、内部レジスタ160及び内部メモリ170等の内部記憶回路に記憶され得る全てのデータである。さらに言い換えると、「実行状態データ」は、外部レジスタ300に記憶される演算データ(後述する)以外のデータである。
また、制御回路120は、DVFS(Dynamic Voltage and Frequency Scaling:動的電圧・周波数制御)の機能を有している。ここで、このDVFSは、プロセッサの負荷状態に応じて、電圧及び周波数を動的に変化させる機能である。制御回路120は、プログラムの実行における負荷状態を判断し、負荷状態に応じた電力状態を判定する。ここで、「電力状態」とは、プロセッサ(制御回路120であれば高性能プロセッサ100)の内部の全てのリソースの電力の状態を示すものである。電力状態は、例えば、「周波数を下げる」、「クロックの供給を停止」、及び「演算回路の電力を遮断」等がある。制御回路120は、制御している周波数、電圧、及び電力状態を示す情報を出力する。
なお、制御回路220についても、制御回路120と同様である。
電力算出部132は、制御回路120から出力された周波数、電圧、及び電力状態を示す情報を用いて、高性能プロセッサ100の電力値を算出(推定)する。ここで、この電力値は、DVFSの機能により、負荷状態が高くなるにつれて高くなるので、高性能プロセッサ100の負荷状態を示しているといえる。
電力算出部132は、算出された電力値が、規定時間の間、閾値以下である場合、制御回路120に対して割込みを行う。ここで、「規定時間」及び「閾値」は、それぞれ予め定められた値である。このとき、制御回路120は、プログラムの実行主体を、低性能プロセッサ200に移行するための処理を行う。つまり、制御回路120は、高性能プロセッサ100の負荷状態が予め定められた閾値(上記電力値の閾値に対応する値)以下に低下した場合に、低性能プロセッサ200への移行処理を行う。この移行処理の詳細については後述する。
電力算出部232は、制御回路220から出力された周波数、電圧、及び電力状態を示す情報を用いて、低性能プロセッサ200の電力値を算出(推定)する。ここで、この電力値は、DVFSの機能により、負荷状態が高くなるにつれて高くなるので、高性能プロセッサ100の場合と同様に、低性能プロセッサ200の負荷状態を示しているといえる。
電力算出部232は、算出された電力値が、規定時間の間、閾値以上である場合、制御回路220に対して割込みを行う。ここで、「規定時間」及び「閾値」は、それぞれ予め定められた値であるが、電力算出部132(高性能プロセッサ100)の場合と同じとは限らない。このとき、制御回路220は、プログラムの実行主体を、高性能プロセッサ100に移行するための処理を行う。つまり、制御回路220は、低性能プロセッサ200の負荷状態が予め定められた閾値(上記電力値の閾値に対応する値)以上に上昇した場合に、高性能プロセッサ100への移行処理を行う。この移行処理については、高性能プロセッサ100から低性能プロセッサ200への移行処理の逆の処理であるので、詳細については省略する。
電力制御部134は、制御回路120の制御に応じて、高性能プロセッサ100の内部の電力を制御する。具体的には、電力制御部134は、制御回路120から出力された周波数、電圧、及び電力状態を示す情報に応じて、高性能プロセッサ100の内部の電力を制御する。
なお、電力制御部234についても、電力制御部134と同様である。
演算回路140は、制御回路120の制御によって、制御回路120において制御されているプログラムに関する演算を実行するための回路である。ここで、演算回路140は、制御回路120よりも高速な演算処理が可能である。演算回路140は、例えばSIMD(Single Instruction Multiple Data)方式で、並列処理(ベクトル演算)を行うことが可能である。演算回路140は、例えば、画像処理又は物理演算のような、膨大なデータに対する演算を行い得る。
ここで、本実施の形態においては、演算回路140は、外部レジスタ300を用いて演算を行う。具体的には、演算回路140は、演算を行う際に、外部レジスタ300にアクセスする。そして、演算回路140は、外部レジスタ300に記憶された、演算に関するデータ(演算データ)を用いて演算を行う。そして、演算回路140は、演算結果を外部レジスタ300に記憶する。演算回路140における演算の具体例については後述する。
なお、演算回路240についても、演算回路140と同様である。
レジスタアクセス制御回路150は、演算回路140が外部レジスタ300にアクセスするために必要な処理を行う。例えば、レジスタアクセス制御回路150は、制御回路120によって、外部レジスタ300のアドレスを指定される。そして、レジスタアクセス制御回路150は、外部レジスタ300の指定されたアドレスに演算回路140がアクセスするための制御を行う。
なお、レジスタアクセス制御回路250についても、レジスタアクセス制御回路150と同様である。
図3は、実施の形態1にかかる移行処理の手順を示すシーケンス図である。図3には、実施の形態1にかかる半導体装置50の制御方法が示されている。図3においては、まず、高性能プロセッサ100においてプログラムが実行されており、その後、プログラムの実行主体が高性能プロセッサ100から低性能プロセッサ200に移行する例が示されている。
まず、高性能プロセッサ100が、プログラムを実行している(S100)。このとき、高性能プロセッサ100において、制御回路120は、汎用レジスタ122(又は、内部レジスタ160及び内部メモリ170)を用いてプログラムの実行を制御している。つまり、制御回路120は、汎用レジスタ122等の内部記憶回路に実行状態データを記憶し、汎用レジスタ122等の内部記憶回路に記憶された実行状態データを用いてプログラムの実行を制御している。一方、演算回路140は、外部レジスタ300を用いて、上記プログラムに関する演算を実行している。つまり、演算回路140は、外部レジスタ300に記憶された演算データを用いて演算を行い、演算結果を外部レジスタ300に記憶している。なお、制御回路120は、適宜、外部レジスタ300に記憶された演算結果の集合を、メインメモリ70に転送するように制御してもよい。
そして、高性能プロセッサ100における処理負荷が低下する(S102)。具体的には、高性能プロセッサ100におけるプログラムの処理負荷が低下し、DVFSの機能によって、高性能プロセッサ100における電圧及び周波数が低下する。したがって、このとき、電力算出部132によって算出される電力値が、閾値以下に低下する。つまり、このとき、高性能プロセッサ100において移行刺激があったことになる。
そして、高性能プロセッサ100は、プログラムの実行主体の移行処理を開始する(S104)。具体的には、上述したように、電力算出部132によって算出された電力値が閾値以下である状態が規定時間継続した場合に、電力算出部132は、制御回路120に対して割込みを行う。
制御回路120は、電力算出部132からの割込みに応じて、低性能プロセッサ200に対して起動割込みを行う(S106)。具体的には、制御回路120は、電力算出部132からの割込みを受けると、割込コントローラ80を介して、制御回路220に起動割込みを行う。さらに具体的には、制御回路120は、割込コントローラ80に起動割込みの要求を出力する。これにより、割込コントローラ80は、制御回路220に対して、起動割込みを行う。
低性能プロセッサ200の制御回路220は、起動割込みを受けると、低性能プロセッサ200が起動をするための起動処理(Power−on & Reset)を行う(S108)。例えば、起動処理は、低性能プロセッサ200内のキャッシュを無効にしたり、スヌープを有効にしたりする処理である。一方、高性能プロセッサ100は、後述する移行準備割込みを低性能プロセッサ200から受けるまで、通常の処理を継続する(S110)。
制御回路220は、起動後、制御回路120からの実行状態を受け付け可能になったときに、高性能プロセッサ100に対して、移行準備割込み(Ready for Task Migration)を行う(S112)。具体的には、制御回路220は、S106の処理と同様に、割込コントローラ80を介して、制御回路120に対して移行準備割込みを行う。
このとき、高性能プロセッサ100は、実行状態を低性能プロセッサ200に移行する(S114)。具体的には、制御回路120は、移行準備割込みを受けると、バス60を介して、高性能プロセッサ100の内部記憶回路に記憶されていた実行状態データを、低性能プロセッサ200に転送する。さらに具体的には、制御回路120は、汎用レジスタ122に記憶されていた実行状態データを汎用レジスタ222に転送するように制御する。また、制御回路120は、内部レジスタ160及び内部メモリ170に記憶されていた実行状態データを、それぞれ、内部レジスタ260及び内部メモリ270に転送するように制御する。これによって、高性能プロセッサ100における実行状態が、低性能プロセッサ200に移行する。
このとき、本実施の形態においては、演算回路140における演算に関する演算データは、高性能プロセッサ100及び低性能プロセッサ200に共有されている外部レジスタ300に記憶されている。ここで、外部レジスタ300は、演算回路240からもアクセス可能である。言い換えると、演算回路240は、外部レジスタ300を使用して演算を行い得る。したがって、外部レジスタ300に記憶されている演算データは、転送されない。
実行状態が移行されると、低性能プロセッサ200は、移行されたプログラムの実行を開始する(S116)。具体的には、制御回路220は、移行された実行状態データによって、実行状態を復元する。これによって、移行後、低性能プロセッサ200において、プログラムの実行を開始することが可能となる。このとき、制御回路220は、移行元のプロセッサである高性能プロセッサ100から転送された実行状態データを用いてプログラムの実行を制御することが可能となる。一方、移行後、低性能プロセッサ200の演算回路240は、移行前から外部レジスタ300に記憶されていた演算データを用いて、移行前に実行されていた演算を継続することが可能となる。
低性能プロセッサ200においてプログラムの実行が開始されると、低性能プロセッサ200は、高性能プロセッサ100に対して、停止割込みを行う(S118)。具体的には、このとき、制御回路220は、S112の処理と同様に、割込コントローラ80を介して、制御回路120に対して停止割込みを行う。
停止割込みを受けると、高性能プロセッサ100は、停止処理を行う(S120)。具体的には、制御回路120は、停止割込みを受けると、電力制御部134に対して、電力遮断状態にするように命令する。これによって、電力制御部134は、高性能プロセッサ100の電力を遮断するように制御する。なお、このとき、高性能プロセッサ100は、高性能プロセッサ100の内部のキャッシュを消去し、スヌープを無効にする処理を行ってもよい。
なお、プログラムの実行主体が低性能プロセッサ200から高性能プロセッサ100に移行する手順については、S102の「処理負荷の低下」を「処理負荷の上昇」とし、高性能プロセッサ100の処理と低性能プロセッサ200の処理とを入れ替えたものと実質的に同様である。したがって、低性能プロセッサ200から高性能プロセッサ100への移行処理については、説明を省略する。
(演算処理の具体例)
図4及び図5は、実施の形態1にかかる演算処理の具体例を示す図である。図4は、フィルタプログラムの例を示す図である。また、図5は、フィルタプログラムの計算を説明するための図である。なお、以下、高性能プロセッサ100において演算処理が実行される例について説明するが、低性能プロセッサ200においても同様である。
図4及び図5に例示した演算処理では、配列a[0]〜a[21]に演算対象の値が入力されて、演算結果である配列x[1]〜x[20]の値が計算される。例えば、画像処理の場合では、配列a[0]〜a[21]には画像処理前の画像データを示す値が入力されて、画像処理後の値である配列x[1]〜x[20]の値が計算される。
図4及び図5に例示した演算処理では、i=1からi=20について、以下の式1がそれぞれ計算される。
(式1)
x[i]=c0*a[i−1]+c1*a[i]+c2*a[i+1]
なお、c0、c1及びc2は定数である。これによって、配列x[1]〜x[20]の値が計算される。
例えば、i=0について、演算回路140は、配列a[0],a[1],a[2]に、それぞれc0,c1,c2を乗算して、乗算結果の和を計算する。これによって、演算回路140は、x[1]を算出する。演算回路140は、このような計算をi=20まで行い、x[20]まで算出する。ここで、演算回路140は、SIMD方式でベクトル演算を行うことが可能である。したがって、演算回路140は、例えばi=1〜10について一度に演算を行い、i=11〜20について一度に演算を行うことが可能である。
図6〜図9は、図4及び図5に例示した演算処理におけるデータの移動の例を示す図である。まず、図6に示すように、メインメモリ70には、配列a[0]〜a[21]、配列x[1]〜x[20]、定数c0,c1,c2が記憶されている。さらに、メインメモリ70には、インデックスの初期値i=1、及び配列x[i]の要素数i=20が記憶されている。なお、配列a[0]〜a[21]には演算対象のデータ(例えば画像処理の対象となる画像データ)の値が入力されている。一方、配列x[1]〜x[20]は演算結果が入力される配列であるので、初期状態において、配列x[1]〜x[20]には値が入力されていない(又は値0が入力されている)。なお、図6〜図9において、例えば配列x[i]について値が入力されていない場合は、「(x[i])」と示されている。
図4に示されたプログラムを実行するとき、まず、制御回路120は、図6に示すように、i=1〜10についての演算を行うように制御する。このとき、図6の矢印(A)に示すように、制御回路120は、メインメモリ70に記憶されている、演算対象のデータの値が入力された配列a[0]〜a[11]、配列x[1]〜x[10]、定数c0,c1,c2を、外部レジスタ300に記憶させる。また、矢印(B)に示すように、制御回路120は、インデックスの初期値i=1、及び配列x[i]の要素数i=20を、汎用レジスタ122に記憶させる。これにより、汎用レジスタ122の領域122aには初期値「1」が入力され、領域122bには要素数「20」が入力される。そして、演算回路140は、外部レジスタ300に記憶されたデータを用いて、i=1〜10について、式1の計算を行う。これによって、演算回路140は、配列x[1]〜x[10]の値を算出する。
図7に示すように、演算回路140によって算出された配列x[1]〜x[10]の値は、外部レジスタ300の配列x[1]〜x[10]に対応する領域に記憶される。このとき、制御回路120は、汎用レジスタ122の領域122aに、i=10まで演算が終了したことを示す「10」を入力する。また、矢印(C)に示すように、制御回路120は、配列x[1]〜x[10]の値をメインメモリ70に記憶させる。なお、外部レジスタ300には、i=11以降の演算で用いられるため、配列a[10],a[11]の値が記憶されている。一方、配列a[0]〜a[9]及び配列x[1]〜x[10]については、以降の配列のために消去されても(書き換えられても)よい。
次に、制御回路120は、図8に示すように、i=11〜20についての演算を行うように制御する。このとき、制御回路120は、汎用レジスタ122の領域122aに、i=11から演算を行うことを示す「11」を入力する。また、図8の矢印(D)に示すように、制御回路120は、メインメモリ70に記憶されている、演算対象のデータの値が入力された配列a[12]〜a[21]、配列x[11]〜x[20]を、外部レジスタ300に記憶させる。そして、演算回路140は、外部レジスタ300に記憶されたデータを用いて、i=11〜20について、式1の計算を行う。これによって、演算回路140は、配列x[11]〜x[20]の値を算出する。
図9に示すように、演算回路140によって算出された配列x[11]〜x[20]の値は、外部レジスタ300の配列x[11]〜x[20]に対応する領域に記憶される。このとき、制御回路120は、汎用レジスタ122の領域122aに、i=20まで演算が終了したことを示す「20」を入力する。また、矢印(E)に示すように、制御回路120は、配列x[11]〜x[20]の値をメインメモリ70に記憶させる。このとき、制御回路120は、領域122aの値と領域122bの値とが等しくなったので、この演算処理を終了するように制御する。この場合、制御回路120は、外部レジスタ300に記憶されている配列a[10]〜a[21]及び配列x[11]〜x[20]を消去してもよい。
なお、図7に示した状態のときに高性能プロセッサ100から低性能プロセッサ200へのプログラムの実行主体が移行する場合、上述したように、汎用レジスタ122に記憶されているデータ(領域122aに記憶された値「10」及び領域122bに記憶された値「20」)は、低性能プロセッサ200に転送される。一方、外部レジスタ300に記憶されている演算データは、転送されない。そして、低性能プロセッサ200の演算回路240は、外部レジスタ300に記憶されているデータ(図7に示す)を用いて、i=11からの演算を行う。
複数のプロセッサを有する半導体装置において、各プロセッサの演算回路によって使用される演算データを記憶するレジスタが各プロセッサに設けられている場合、一方のプロセッサから他方のプロセッサへの実行主体が移行するときに、実行状態データだけでなく、演算データも、移行元のプロセッサから移行先のプロセッサに転送される必要がある。この場合、特に演算データのデータ量が多いと、転送されるデータ量が多くなってしまう。
一方、本実施の形態にかかる半導体装置50は、高性能プロセッサ100及び低性能プロセッサ200の外部に設けられた外部レジスタ300が演算データを記憶し、演算回路140及び演算回路240は、この外部レジスタ300を用いて演算を行う。したがって、プログラムの実行主体が高性能プロセッサ100と低性能プロセッサ200との間で移行するときに、外部レジスタ300に記憶された演算データを転送する必要はない。したがって、プログラムの実行主体が高性能プロセッサ100と低性能プロセッサ200との間で移行するときに転送されるデータ量が削減される。したがって、実行主体の移行に要する時間が削減される。さらに転送されるデータ量が削減されるので、移行の際の半導体装置50における電力消費量を抑制することが可能となる。つまり、本実施の形態においては、高性能プロセッサ100と低性能プロセッサ200との間におけるプログラムの実行主体の移行を、効率的に行うことができる。
また、本実施の形態においては、制御回路120は、高性能プロセッサ100の内部に設けられた内部記憶回路(汎用レジスタ122等)に記憶されている実行状態データを用いて、プログラムの実行を制御する。言い換えると、実行状態データは、外部に設けられた記憶回路に記憶されない。このような構成によって、制御回路120は、プログラムの実行の際に、高性能プロセッサ100の内部の記憶回路にアクセスするのみでよい。したがって、実行状態データが外部の記憶回路に記憶される場合と比較して、制御回路120は、プログラムの実行の際の処理速度を速くすることが可能となる。なお、このことは、制御回路220についても同様である。
また、本実施の形態においては、プログラムの実行主体が例えば高性能プロセッサ100から低性能プロセッサ200へと移行した後、制御回路220は、高性能プロセッサ100から転送された実行状態データを用いてプログラムの実行を制御する。一方、移行後、演算回路240は、移行前から外部レジスタ300に記憶されていた演算データを用いて、移行前に実行されていた演算を行う。ここで、一般的に、図6〜図9に例示したように、実行状態データのデータ量は、演算データのデータ量と比較して少ない。したがって、プログラムの実行主体を移行する際に実行状態データを転送したとしても、それほど時間を要しない。一方、特に演算回路がSIMD方式によるベクトル演算を行う場合等に、演算データのデータ量は膨大となる。本実施の形態においては、上述した構成によって、このような膨大な演算データを移行の際に転送しなくても、移行後のプロセッサ(低性能プロセッサ200)の演算回路240において、引き続き演算を継続することが可能となる。
また、本実施の形態においては、外部レジスタ300は、複数のレジスタ回路からなるレジスタ群、又は、複数の記憶領域を有するレジスタ群を有する1つの記憶回路である。これによって、演算回路における演算がベクトル演算である場合に、複数の配列の値を一度に記憶することが可能となる。そして、外部レジスタ300に記憶された演算データは実行主体の移行の際に転送されないので、実行主体の移行の際に、これらレジスタ群に記憶された膨大な演算データ(配列の値)を転送することが不要となる。
また、本実施の形態にかかる半導体装置50は、高性能のプロセッサである高性能プロセッサ100と、低性能のプロセッサである低性能プロセッサ200とを有している。そして、低性能プロセッサ200の電力効率は、高性能プロセッサ100の電力効率よりも高い。したがって、本実施の形態にかかる半導体装置50は、高性能プロセッサ100と低性能プロセッサ200とを組み合わせて、低負荷のときの電力を抑えつつ高負荷のときに高いパフォーマンスを発揮させるようなシステムに対しても適用可能である。そして、本実施の形態においては、このようなシステムにおいても、プログラムの実行主体の移行を効率的に行うことが可能となる。
また、本実施の形態においては、メインメモリ70とは異なる外部レジスタ300が設けられている。したがって、本実施の形態においては、この、メインメモリ70とは異なる外部レジスタ300を、高性能プロセッサ100及び低性能プロセッサ200で共有するようにすることが可能となる。さらに、メインメモリ70は、共通バスを介して高性能プロセッサ100及び低性能プロセッサ200と接続されているが、外部レジスタ300は、高性能プロセッサ100及び低性能プロセッサ200のそれぞれと、互いに異なるバス62,64を介して接続されている。このため、メインメモリ70に演算データを記憶する場合と比較して、外部レジスタ300へのアクセス速度を向上させることが可能となる。
(実施の形態2)
次に、実施の形態2について説明する。
図10は、実施の形態2にかかる半導体装置50の構成を示す図である。実施の形態2は、外部レジスタ300が、第1の記憶領域である外部レジスタ記憶領域302と、第1の記憶領域のコピーである第2の記憶領域である外部レジスタ記憶領域コピー304とを有している点で、実施の形態1と異なる。その他の構成については、実施の形態1と実質的に同様であるので、説明を省略する。なお、外部レジスタ記憶領域302及び外部レジスタ記憶領域コピー304は、物理的に1つの記憶回路の内部における別個の記憶領域として実現してもよいし、それぞれ互いに別個の記憶回路として実現してもよい。
外部レジスタ記憶領域コピー304の例として、例えば、以下の2つの例が挙げられる。外部レジスタ記憶領域コピー304の第1の例は、割込みの際に外部レジスタ記憶領域302に記憶されたデータを退避しておくためのレジスタバンクとしての用途である。また、外部レジスタ記憶領域コピー304の第2の例は、仮想マシンで用いられるレジスタのコピーとしての用途である。
まず、第1の例(レジスタバンク)について説明する。外部レジスタ記憶領域302は、演算回路140(演算回路240についても同様。以下同じ)における通常の演算処理において、上述した実施の形態1と同様に使用される。つまり、演算回路140は、通常、外部レジスタ記憶領域302を用いて演算処理を行う。一方、外部レジスタ記憶領域コピー304は、演算回路140がある演算処理を行っているときに割込みがあった場合に、外部レジスタ記憶領域302に記憶されていたデータを退避するために使用される。
具体例を挙げて説明する。例えば、演算回路140が、外部レジスタ記憶領域302を用いて画像処理を行っていたとする。このとき、カメラに関する処理(カメラ処理)の割込みがあったとする。このとき、制御回路120(又は演算回路140)は、外部レジスタ記憶領域302に記憶されていた画像処理に関する演算データを、外部レジスタ記憶領域コピー304にコピー(退避)する。そして、演算回路140は、外部レジスタ記憶領域302を用いて、カメラ処理を行う。なお、内部記憶回路に記憶されていた実行状態データ(演算データ以外のデータ)については、それぞれの内部記憶回路に対応するレジスタバンクに退避され得る。
そして、カメラ処理が終了すると、制御回路120(又は演算回路140)は、外部レジスタ記憶領域コピー304に退避されていた画像処理に関する演算データを、外部レジスタ記憶領域302に戻す。そして、演算回路140は、外部レジスタ記憶領域302に戻された画像処理に関する演算データを用いて、画像処理を再開する。なお、演算回路140は、外部レジスタ記憶領域302に演算データを戻す代わりに、外部レジスタ記憶領域コピー304に記憶された(退避されていた)演算データをそのまま用いて、画像処理を再開してもよい。
次に、第1の例(仮想マシン)について説明する。この場合、高性能プロセッサ100及び低性能プロセッサ200のそれぞれは、複数の仮想マシンを実現しうる。そこで、本実施の形態においては、複数の仮想マシンそれぞれについて、外部レジスタ記憶領域コピー304を設けることとする。例えば、仮想マシンが1つであれば、外部レジスタ記憶領域302のみでよいが、仮想マシンが2つの場合は、外部レジスタ記憶領域302の他に、外部レジスタ記憶領域コピー304を1つ設ける。同様に、仮想マシンが3つの場合、外部レジスタ記憶領域302の他に、外部レジスタ記憶領域コピー304を2つ設けるようにしてもよい。これにより、各仮想マシンは、演算回路140が行うべき演算処理を、各外部レジスタ記憶領域302及び外部レジスタ記憶領域コピー304を用いて行う。
演算回路140及び演算回路240のためのレジスタをそれぞれ高性能プロセッサ100及び低性能プロセッサ200に設けるようにすると、上述したレジスタのコピーが必要となる場合に、高性能プロセッサ100及び低性能プロセッサ200それぞれについて、回路面積を増大させる必要がある。この場合、システム全体として回路面積が増大する。一方、実施の形態2においては、高性能プロセッサ100及び低性能プロセッサ200とで外部レジスタ300を共有しているので、レジスタのコピーが必要である場合でも、その共有されている外部レジスタ300の回路面積を増大させるだけでよい。したがって、システム全体の回路面積の増大を抑制することが可能となる。
(実施の形態3)
次に、実施の形態3について説明する。
図11は、実施の形態3にかかる半導体装置50の構成を示す図である。実施の形態3は、外部レジスタ300について、高性能プロセッサ100及び低性能プロセッサ200とは独立して電力制御を行うための構成が設けられている点で、実施の形態1とは異なる。その他の構成については、実施の形態1と実質的に同様であるので、説明を省略する。
外部レジスタ300は、外部レジスタ記憶領域302及び電力制御レジスタ310を有する。また、半導体装置50は、外部レジスタ300の電力を制御する電力制御回路400をさらに有する。電力制御レジスタ310は、外部レジスタ300の電力を制御するための情報を記憶する。例えば、電力制御レジスタ310は、制御すべき電力状態を示す情報(外部レジスタ電力状態情報)を記憶する。ここで、外部レジスタ電力状態情報とは、制御すべき外部レジスタ300の電力状態を示すものであり、例えば、「50%の電力状態に制御せよ」といったことを示す。
高性能プロセッサ100が動作しているときは、制御回路120が、この外部レジスタ電力状態を記憶する。つまり、制御回路120は、外部レジスタ300の電力を制御するための命令を行う。このとき、制御回路120は、外部レジスタ300の使用状態(負荷状態)に応じて、外部レジスタ電力状態情報を、電力制御レジスタ310に記憶する。例えば、外部レジスタ300を全く使用しないときは、制御回路120は、「0%の電力状態に制御せよ」といったことを示す外部レジスタ電力状態情報を、電力制御レジスタ310に記憶してもよい。
電力制御回路400は、電力制御レジスタ310に記憶された外部レジスタ電力状態情報に応じて、外部レジスタ300の電力を制御する。例えば、外部レジスタ電力状態情報が「50%の電力状態に制御せよ」といったことを示す場合、電力制御回路400は、電力状態が50%となるように、外部レジスタ300の電力を制御する。また、例えば、外部レジスタ電力状態情報が「0%の電力状態に制御せよ」といったことを示す場合、外部レジスタ300の電力を遮断してもよい。
外部レジスタ300の電力を高性能プロセッサ100及び低性能プロセッサ200の電力と別個に制御しない場合、外部レジスタ300の電力は、高性能プロセッサ100及び低性能プロセッサ200のうち動作している方のプロセッサに依存する可能性がある。ここで、各プロセッサ(高性能プロセッサ100及び低性能プロセッサ200)は、起動する際、一時的に、各プロセッサが制御する全てのリソース(外部レジスタ300も含む)の周波数を最大にする可能性がある。この場合、例えば低性能プロセッサ200を起動したとき、低性能プロセッサ200に合わせて外部レジスタ300も高い電力状態となってしまう。したがって、外部レジスタ300の消費電力量が増大する。このときに外部レジスタ300の使用状態が少なければ、外部レジスタ300は無駄な電力を消費することとなってしまう。
一方、実施の形態3においては、各プロセッサとは別個に外部レジスタ300の電力を制御するように構成されている。つまり、実施の形態3においては、電力制御レジスタ310及び電力制御回路400が設けられている。したがって、実施の形態3においては、各プロセッサの電力状態に依存することなく、外部レジスタ300の電力を制御することが可能となる。また、実施の形態3においては、電力制御レジスタ310に記憶される外部レジスタ電力状態情報を用いて、外部レジスタ300の電力を制御することが可能となる。したがって、外部レジスタ300の使用状態に応じて、外部レジスタ300の電力を制御することが可能となる。
(変形例)
なお、本実施の形態は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、以下に説明するように変更してもよい。
図12は、変形例にかかる半導体装置50を示す図である。上述した実施の形態においては、外部レジスタ300は、高性能プロセッサ100とはバス62を介して接続され、低性能プロセッサ200とはバス64を介して接続されている。つまり、上述した実施の形態においては、外部レジスタ300は、高性能プロセッサ100及び低性能プロセッサ200と異なるバスで接続されている。しかしながら、変形例にかかる半導体装置50のように、外部レジスタ300は、高性能プロセッサ100及び低性能プロセッサ200と、共通バス66を介して接続されてもよい。
なお、外部レジスタ300が共通バス66で高性能プロセッサ100及び低性能プロセッサ200と接続されることで、演算回路140及び演算回路240が外部レジスタ300にアクセスする速度が遅くなる。言い換えると、上述した実施の形態のように、外部レジスタ300が、高性能プロセッサ100及び低性能プロセッサ200のそれぞれと、互いに異なるバス62,64を介して接続されることによって、演算回路140及び演算回路240が外部レジスタ300にアクセスする速度が速くなる。したがって、演算回路140及び演算回路240の演算速度を速くすることが可能となる。
また、上述した説明では、実施の形態2と実施の形態3とを別に説明したが、このような構成に限られない。実施の形態2に実施の形態3を適用してもよい。つまり、外部レジスタ300が外部レジスタ記憶領域コピー304を有し、さらに電力制御レジスタ310を有してもよい。
また、上述した実施の形態においては、プログラムの実行主体が移行するきっかけとなる移行刺激が電力値の低下又は上昇である例について説明したが、移行刺激は電力値の低下又は上昇に限られない。例えば、動作中のプロセッサの温度の低下又は上昇であってもよい。
また、上述した実施の形態においては、高性能プロセッサ100及び低性能プロセッサ200と、外部レジスタ300との物理的な位置関係について言及していないが、外部レジスタ300は、物理的に高性能プロセッサ100の側にあってもよい。この場合、例えば、高性能プロセッサ100と外部レジスタ300との間のバス62は、比較的短い専用のバスであってもよく、低性能プロセッサ200と外部レジスタ300との間のバス64は、共通バスであってもよい。このように構成することによって、高性能プロセッサ100における演算回路140が外部レジスタ300にアクセスする速度が上昇するので、高性能プロセッサ100における演算回路140の演算速度を上げることが可能となる。
また、本実施の形態においては、プログラムに関する演算を行う回路は演算回路140及び演算回路240としたが、これに限られない。制御回路120及び制御回路220が、演算を行ってもよい。但し、上述したように、演算回路140及び演算回路240の方が、制御回路120及び制御回路220よりもより高速な演算処理が可能であるので、制御回路120及び制御回路220が行う演算は、ごく単純なものであり得る。
また、本実施の形態においては、「第1のプロセッサ」が「高性能プロセッサ100」に対応し、「第2のプロセッサ」が「低性能プロセッサ200」に対応する例について説明したが、このような構成に限られない。つまり、「第1のプロセッサ」が「低性能プロセッサ200」に対応し、「第2のプロセッサ」が「高性能プロセッサ100」に対応するとしてもよい。このことは、「第1の制御回路」及び「第2の制御回路」、「第1の演算回路」及び「第2の演算回路」、及び、「第1の内部記憶回路」及び「第2の内部記憶回路」についても同様である。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
なお、上記実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
それぞれプログラムを実行する複数のプロセッサと、
前記プロセッサの外部に設けられ、前記複数のプロセッサそれぞれに接続された外部レジスタと
を有し、
前記複数のプロセッサのそれぞれは、
前記プログラムの実行を制御する制御回路と、
前記外部レジスタを用いて前記プログラムに関する演算を行う演算回路と、
前記複数のプロセッサそれぞれの内部に設けられた少なくとも1つの内部記憶回路と
を有し、
前記外部レジスタは、前記演算回路における演算に関する演算データを記憶し、
前記内部記憶回路は、前記プログラムの実行の状態に関する実行状態データであって、前記複数のプロセッサのうちの第1のプロセッサが前記プログラムを実行している途中で前記複数のプロセッサのうちの第2のプロセッサが前記プログラムを実行するようになる場合に前記第1のプロセッサから前記第2のプロセッサへと転送される実行状態データを記憶する
半導体装置。
1 半導体装置
4 外部レジスタ
10 第1プロセッサ
12 制御回路
14 演算回路
16 内部記憶回路
20 第2プロセッサ
22 制御回路
24 演算回路
26 内部記憶回路
50 半導体装置
70 メインメモリ
80 割込コントローラ
100 高性能プロセッサ
120 制御回路
122 汎用レジスタ
132 電力算出部
134 電力制御部
140 演算回路
150 レジスタアクセス制御回路
160 内部レジスタ
170 内部メモリ
200 低性能プロセッサ
220 制御回路
222 汎用レジスタ
232 電力算出部
234 電力制御部
240 演算回路
250 レジスタアクセス制御回路
260 内部レジスタ
270 内部メモリ
300 外部レジスタ
302 外部レジスタ記憶領域
304 外部レジスタ記憶領域コピー
310 電力制御レジスタ
400 電力制御回路

Claims (13)

  1. それぞれプログラムを実行する複数のプロセッサと、
    前記プロセッサの外部に設けられ、前記複数のプロセッサそれぞれに接続された外部レジスタと
    を有し、
    前記複数のプロセッサのそれぞれは、
    前記プログラムの実行を制御する制御回路と、
    前記外部レジスタを用いて前記プログラムに関する演算を行う演算回路と、
    前記複数のプロセッサそれぞれの内部に設けられた少なくとも1つの内部記憶回路と
    を有し、
    前記外部レジスタは、前記演算回路における演算に関する演算データを記憶し、
    前記内部記憶回路は、前記プログラムの実行の状態に関する実行状態データであって、前記プログラムの実行途中に前記プログラムの実行主体が前記複数のプロセッサの間で移行するときに移行元の前記プロセッサから移行先の前記プロセッサへと転送される実行状態データを記憶する
    半導体装置。
  2. 前記制御回路は、少なくとも1つの前記内部記憶回路に記憶されている前記実行状態データを用いて、前記プログラムの実行を制御する
    請求項1に記載の半導体装置。
  3. 前記プログラムの実行主体が移行した後、
    前記移行先のプロセッサの前記制御回路は、前記移行元のプロセッサから転送された前記実行状態データを用いて前記プログラムの実行を制御し、
    前記移行先のプロセッサの前記演算回路は、前記外部レジスタに記憶されていた前記演算データを用いて演算を行う
    請求項2に記載の半導体装置。
  4. 前記外部レジスタは、複数のレジスタ回路、又は複数の記憶領域を有する1つの回路で構成されている
    請求項1に記載の半導体装置。
  5. 前記複数のプロセッサは、
    第1のプロセッサと、
    前記第1のプロセッサよりも処理性能が低く前記第1のプロセッサよりも電力効率が高い第2のプロセッサと
    を含む
    請求項1に記載の半導体装置。
  6. 前記外部レジスタは、第1の記憶領域と、前記第1の記憶領域のコピーである少なくとも1つの第2の記憶領域とを有する
    請求項1に記載の半導体装置。
  7. 前記外部レジスタは、前記外部レジスタの電力を制御するための情報を記憶するための電力制御レジスタを有し、
    前記電力制御レジスタに記憶された情報を用いて、前記外部レジスタの電力を制御する電力制御回路
    をさらに有する請求項1に記載の半導体装置。
  8. 前記電力制御回路は、前記外部レジスタの使用状態に応じて、前記外部レジスタの電力を制御する
    請求項7に記載の半導体装置。
  9. 前記複数のプロセッサそれぞれとバスを介して接続され、前記プログラムを少なくとも記憶するメインメモリ
    をさらに有する請求項1に記載の半導体装置。
  10. 前記外部レジスタは、前記複数のプロセッサのそれぞれと、互いに異なるバスを介して接続されている
    請求項1に記載の半導体装置。
  11. 複数のプロセッサのうちの第1のプロセッサがプログラムを実行しているときに、前記第1のプロセッサに設けられた第1の演算回路は、前記複数のプロセッサの外部に設けられ前記第1の演算回路における演算に関する演算データを記憶する外部レジスタを用いて前記プログラムに関する演算を行い、
    前記プログラムの実行主体が前記第1のプロセッサから前記複数のプロセッサのうちの第2のプロセッサに移行するときに、前記第1のプロセッサの内部に設けられた第1の内部記憶回路に記憶され前記プログラムの実行の状態に関する実行状態データを、前記第2のプロセッサに転送する
    半導体装置の制御方法。
  12. 前記第1のプロセッサが前記プログラムを実行しているときに、前記第1のプロセッサに設けられた第1の制御回路は、前記第1の内部記憶回路に記憶された前記実行状態データを用いて前記プログラムの実行を制御する
    請求項11に記載の半導体装置の制御方法。
  13. 前記プログラムの実行主体が前記第1のプロセッサから前記第2のプロセッサに移行した後、
    前記第2のプロセッサに設けられた第2の制御回路は、前記第1のプロセッサから転送された前記実行状態データを用いて前記プログラムの実行を制御し、
    前記第2のプロセッサに設けられた第2の演算回路は、前記外部レジスタに記憶されていた前記演算データを用いて演算を行う
    請求項12に記載の半導体装置の制御方法。
JP2015067945A 2015-03-30 2015-03-30 半導体装置及びその制御方法 Active JP6478762B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015067945A JP6478762B2 (ja) 2015-03-30 2015-03-30 半導体装置及びその制御方法
US15/076,422 US10216679B2 (en) 2015-03-30 2016-03-21 Semiconductor device and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015067945A JP6478762B2 (ja) 2015-03-30 2015-03-30 半導体装置及びその制御方法

Publications (2)

Publication Number Publication Date
JP2016189049A true JP2016189049A (ja) 2016-11-04
JP6478762B2 JP6478762B2 (ja) 2019-03-06

Family

ID=57017220

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015067945A Active JP6478762B2 (ja) 2015-03-30 2015-03-30 半導体装置及びその制御方法

Country Status (2)

Country Link
US (1) US10216679B2 (ja)
JP (1) JP6478762B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020013859A (ja) * 2018-07-17 2020-01-23 キヤノン株式会社 集積回路装置
WO2021166411A1 (ja) * 2020-02-21 2021-08-26 日立Astemo株式会社 車両制御装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10853125B2 (en) * 2016-08-19 2020-12-01 Oracle International Corporation Resource efficient acceleration of datastream analytics processing using an analytics accelerator
CN112912820A (zh) * 2018-10-26 2021-06-04 华为技术有限公司 Cpu调节器的能效调整

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009505306A (ja) * 2005-08-22 2009-02-05 インテル・コーポレーション 電力削減のための動的メモリサイジング
JP2014203185A (ja) * 2013-04-03 2014-10-27 ルネサスエレクトロニクス株式会社 情報処理装置および情報処理方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835925A (en) * 1996-03-13 1998-11-10 Cray Research, Inc. Using external registers to extend memory reference capabilities of a microprocessor
US7934121B2 (en) * 2006-11-21 2011-04-26 Microsoft Corporation Transparent replacement of a system processor
US9207990B2 (en) * 2007-09-28 2015-12-08 Hewlett-Packard Development Company, L.P. Method and system for migrating critical resources within computer systems
US8533505B2 (en) 2010-03-01 2013-09-10 Arm Limited Data processing apparatus and method for transferring workload between source and destination processing circuitry
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
US9355058B2 (en) * 2012-10-22 2016-05-31 Intel Corporation High performance interconnect physical layer

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009505306A (ja) * 2005-08-22 2009-02-05 インテル・コーポレーション 電力削減のための動的メモリサイジング
JP2014203185A (ja) * 2013-04-03 2014-10-27 ルネサスエレクトロニクス株式会社 情報処理装置および情報処理方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020013859A (ja) * 2018-07-17 2020-01-23 キヤノン株式会社 集積回路装置
JP7199860B2 (ja) 2018-07-17 2023-01-06 キヤノン株式会社 集積回路装置
WO2021166411A1 (ja) * 2020-02-21 2021-08-26 日立Astemo株式会社 車両制御装置
JP2021133700A (ja) * 2020-02-21 2021-09-13 日立Astemo株式会社 車両制御装置
JP7257981B2 (ja) 2020-02-21 2023-04-14 日立Astemo株式会社 車両制御装置

Also Published As

Publication number Publication date
US10216679B2 (en) 2019-02-26
JP6478762B2 (ja) 2019-03-06
US20160292120A1 (en) 2016-10-06

Similar Documents

Publication Publication Date Title
JP7313381B2 (ja) ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング
JP4413924B2 (ja) マルチコアプロセッサのパフォーマンス改善のための方法、システムおよび装置
TWI494850B (zh) 通透地提供給作業系統之非對稱多核心處理器系統
TWI564793B (zh) 在多核心處理器中的非對稱核心之間遷移執行緒
JP4938080B2 (ja) マルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路
US10671426B2 (en) Data processing
US10552212B2 (en) Data processing
JP6478762B2 (ja) 半導体装置及びその制御方法
JP2013521557A5 (ja)
US9715403B2 (en) Optimized extended context management for virtual machines
JP2012252576A (ja) 情報処理装置、起動方法およびプログラム
JPWO2011135759A1 (ja) 情報処理装置及びタスク切り替え方法
US10289306B1 (en) Data storage system with core-affined thread processing of data movement requests
JPS5955565A (ja) マルチフア−ムウエア方式
JP2014194671A (ja) 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム
JP5131269B2 (ja) マルチプロセッシングシステム
US9760145B2 (en) Saving the architectural state of a computing device using sectors
KR100994723B1 (ko) 시스템에서 초기 구동시간을 단축시키는 선택적 서스펜드 리쥼 방법 및 그 기록매체
JP6515771B2 (ja) 並列処理装置及び並列処理方法
JP5996110B2 (ja) 計算機システム及び制御方法
JP6207342B2 (ja) 情報処理システムおよび情報処理システムの制御方法
JP2010211506A (ja) 不均一メモリアクセス機構を備えるコンピュータ、コントローラ、及びデータ移動方法
KR20180069801A (ko) 임계 실행 경로를 시그널링 오프하는 태스크
JP2019191704A (ja) プロセッサ及び情報処理装置
WO2017013799A1 (ja) 計算機及び計算機の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171127

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180619

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180626

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180821

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190205

R150 Certificate of patent or registration of utility model

Ref document number: 6478762

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150