JP2005128937A - プロセッサシステム、命令列最適化装置、および命令列最適化プログラム - Google Patents

プロセッサシステム、命令列最適化装置、および命令列最適化プログラム Download PDF

Info

Publication number
JP2005128937A
JP2005128937A JP2003366042A JP2003366042A JP2005128937A JP 2005128937 A JP2005128937 A JP 2005128937A JP 2003366042 A JP2003366042 A JP 2003366042A JP 2003366042 A JP2003366042 A JP 2003366042A JP 2005128937 A JP2005128937 A JP 2005128937A
Authority
JP
Japan
Prior art keywords
instruction
processor
power supply
clock
supply voltage
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
JP2003366042A
Other languages
English (en)
Other versions
JP4549652B2 (ja
JP2005128937A5 (ja
Inventor
Osamu Taketoshi
修 竹歳
Isao Tanaka
功 田中
Toru Wada
亨 和田
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2003366042A priority Critical patent/JP4549652B2/ja
Priority to US10/971,122 priority patent/US7624295B2/en
Priority to CNB2004100871066A priority patent/CN1322397C/zh
Publication of JP2005128937A publication Critical patent/JP2005128937A/ja
Publication of JP2005128937A5 publication Critical patent/JP2005128937A5/ja
Application granted granted Critical
Publication of JP4549652B2 publication Critical patent/JP4549652B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)
  • Advance Control (AREA)

Abstract

【課題】 複数のプロセッサを備えたプロセッサシステムの消費電力を処理能力を低下させることなく低減する。
【解決手段】 CPU910は命令コードに付加されたモード設定情報を検出し、クロック制御部916および電源電圧制御部917にクロック制御信号および電源電圧制御信号を出力する。そこで、複数の処理エンジン911〜914が並列して命令を実行する際に、所定の基準の周波数よりも低い周波数のクロック信号、および所定の基準電圧よりも低い電源電圧が供給される。これにより、消費電力が低減されるとともに、並列実行によって処理能力が確保される。
【選択図】 図29

Description

本発明は、例えば中央処理装置(CPU)や、ハードウェア演算エンジン(HWE)、コプロセッサ、DSP(digital signal processor)などと称される演算処理装置等の同種または異種の複数のプロセッサを備え、並列に演算処理が可能なプロセッサシステムにおける消費電力の低減に関する技術に属するものである。
従来より、CPUの消費電力を低減するために、CPUの処理負荷が軽いときにクロック信号の周波数を低下させる技術が知られている(例えば、特許文献1参照)。また、CPUやコプロセッサなどの複数のユニットを有するプロセッサシステムにおいて、デコードされた命令がno-operationであるときに、対応するユニットの電源をオフとすることにより、システム全体の消費電力や発熱量の低減を図る技術も知られている(例えば、特許文献2参照)。
さらに、処理の付加や動作環境の設定に応じて、同時に動作するCPUの数を制御することにより、処理能力を高くしたり消費電力を小さくしたりできるようにする技術も知られている(例えば、特許文献3参照)。
特開平9−34599号公報 特開2000−112756号公報 特開平9−138716号公報
しかしながら、上記のように単にクロック信号の周波数を低下させる手法は、処理負荷が軽いときには用いることができるものの、高い処理能力が必要とされる場合には適用することができないため、システム全体として必ずしも大幅に消費電力を低減させることはできない。
また、処理を行わないユニットの電源をオフにする手法では、処理が行われる際の消費電力自体は低減されないため、やはり、必ずしも大幅に消費電力を低減させることはできない。
さらに、同時に動作するCPUの数を制御する手法では、高い処理能力を必要とする場合の消費電力を低減することはできず、処理能力と消費電力との両立を図ることはできない。
上記の問題点に鑑み、本発明は、特に複数のプロセッサを備えたプロセッサシステムの消費電力を大幅に低減することができ、しかも、処理能力と消費電力との両立を図ることも可能にすることを課題とする。
上記の課題を解決するために、請求項1の発明が講じた解決手段は、
複数のプロセッサを備えたプロセッサシステムであって、
上記プロセッサに実行させる命令を読み込んで、上記命令が実行される上記プロセッサの割り当てを制御する割り当て制御手段と、
上記割り当てにより各上記プロセッサに実行される上記命令に応じて、上記各プロセッサに供給するクロック信号の周波数を制御するクロック制御手段と、
上記クロック制御手段による上記クロック信号の周波数の制御に対応して、上記各プロセッサに供給する電源電圧、および上記各プロセッサを構成するトランジスタの基板ノードに供給する基板電圧のうちの少なくとも何れか1つを制御する電圧制御手段とを備え、
上記クロック制御手段、および電圧制御手段は、上記割り当て制御手段によって複数のプロセッサに並列して命令を実行させる際に、それぞれ、所定の基準の周波数よりも低い周波数のクロック信号、および所定の基準電圧よりも低い電源電圧または所定の基準の閾値電圧よりも高い閾値電圧を与える基板電圧を供給するように構成されていることを特徴とする。
これにより、所定の基準の周波数よりも低い周波数のクロック信号を供給することによって、回路遅延マージンが大きくなるので所定の基準電圧よりも低い電源電圧または所定の基準の閾値電圧よりも高い閾値電圧を与える基板電圧を供給して動作させることができ、消費電力を低減することができる一方、複数のプロセッサに並列して命令を実行させることによって、処理能力を確保することができる。
また、請求項2の発明は、
請求項1のプロセッサシステムであって、
上記割り当て制御手段、クロック制御手段、および電圧制御手段は、上記命令に含まれる制御情報に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を制御するように構成されていることを特徴とする。
また、請求項3の発明は、
請求項2のプロセッサシステムであって、
上記制御情報は、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧の複数種類の組み合わせのうちの何れかを示す情報であることを特徴とする。
これらにより、命令に含まれる制御情報に基づいてプロセッサの割り当て等が制御され、割り当て等のために命令の解析回路等を設ける必要がないので、小さな回路規模で消費電力を低減することができる。
また、請求項4の発明は、
請求項1のプロセッサシステムであって、
さらに、上記命令が、複数のプロセッサによって並列に実行可能かどうかを解析する命令解析手段を備え、
上記割り当て制御手段、クロック制御手段、および電圧制御手段は、上記命令解析手段の解析結果に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を制御するように構成されていることを特徴とする。
また、請求項5の発明は、
請求項4のプロセッサシステムであって、
上記命令解析手段は、さらに、上記命令による処理が所定の高負荷処理であるかどうかを解析するように構成されていることを特徴とする。
また、請求項6の発明は、
請求項5のプロセッサシステムであって、
上記所定の高負荷処理は、所定回数以上のループ処理を含むことを特徴とする。
これらにより、命令の解析に基づいてプロセッサの割り当て等が決定されるので、特にプロセッサの割り当て等を示す情報が含まれていないような命令コードの命令を実行させる場合でも、消費電力を低減し得る一方、回数の多いループ処理などを高速に行わせ得るように割り当て等を制御することができる。また、プログラム開発者等が具体的なクロック信号の周波数などを意識することなく、消費電力または処理能力などを指示するだけで、容易に消費電力の低減や処理速度の向上を図ることができる。
ここで、上記解析の際に参照する命令の数が多いほど、多少複雑な繰り返し処理などでも並列処理が可能になり、より確実に消費電力が低減されるようにすることが容易にできるが、一方上記命令の数を多くすることは、解析をする回路の規模を増大させることになるので、プロセッサシステムに必要とされる処理能力や消費電力などに応じた数の命令が解析の対象となるようにすればよい。また、プロセッサに割り当てる命令の単位は、1命令ごとに限らず、例えばまとまりを持った処理内容の一連の命令が何れかのプロセッサで高いクロック効率で実行できる場合などには、そのような一連の命令を単位として割り当てするようにしてもよい。
また、請求項7の発明は、
請求項2および請求項4のうちの何れか1項のプロセッサシステムであって、
上記複数のプロセッサは、所定の上記基板電圧に対して、第1の閾値電圧を有するトランジスタを含むプロセッサと、上記第1の閾値電圧よりも高い第2の閾値電圧を有するトランジスタを含むプロセッサとを含み、
上記割り当て制御手段、クロック制御手段、および電圧制御手段は、上記命令に含まれる制御情報または上記命令解析手段の解析結果、および各プロセッサに含まれるトランジスタの閾値電圧に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を制御するように構成されていることを特徴とする。
これにより、低閾値電圧のトランジスタを含むプロセッサを動作させることによって処理能力を確保することができる一方、高閾値電圧のトランジスタを含むプロセッサを動作させることによって、アクティブリーク電流を低減し、一層、消費電力を小さく抑えることが容易にできる。
また、請求項8の発明は、
請求項1のプロセッサシステムであって、
上記電圧制御手段は、上記割り当て制御手段によって命令の実行を割り当てられないプロセッサへの電源電圧の供給を停止させるように構成されていることを特徴とする。
これにより、動作していないプロセッサのリーク電流が生じないようにして、やはり、一層、消費電力を小さく抑えることができる。
また、請求項9の発明は、
請求項1のプロセッサシステムであって、
さらに、上記各プロセッサが正常に動作するかどうかを示す情報を保持する故障情報保持手段を備え、
上記割り当て制御手段は、正常に動作するプロセッサにだけ、命令の実行を割り当てるように構成されていることを特徴とする。
また、請求項10の発明は、
請求項9のプロセッサシステムであって、
さらに、上記各プロセッサにテスト動作をさせて各プロセッサが正常に動作するかどうかを検出する故障検出手段を備えたことを特徴とする。
また、請求項11の発明は、
請求項10のプロセッサシステムであって、
上記故障検出手段は、各プロセッサに所定のテストプログラムを実行させ、その実行結果に基づいて、正常に動作するかどうかを検出するように構成されていることを特徴とする。
これらにより、故障していないプロセッサのクロック周波数や電源電圧が制御されることによって、処理能力を保証するとともに、消費電力を低減することができる。
また、請求項12の発明は、
複数のプロセッサを備えたプロセッサシステムによって実行される命令列を最適化する命令列最適化装置であって、
上記命令列における各命令が、複数のプロセッサによって実行可能かどうかを解析する命令解析手段と、
上記命令解析手段の解析結果、および消費電力または処理能力を指示する情報に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を示す制御情報を上記命令列に付加する制御情報付加手段と、
を備えたことを特徴とする。
また、請求項14の発明は、
複数のプロセッサを備えたプロセッサシステムによって実行される命令列を最適化する命令列最適化プログラムであって、
上記命令列における各命令が、複数のプロセッサによって実行可能かどうかを解析する命令解析ステップと、
上記命令解析ステップによる解析結果、および消費電力または処理能力を指示する情報に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を示す制御情報を上記命令列に付加する制御情報付加ステップと、
をコンピュータに実行させることを特徴とする。
これらにより、前記請求項2について説明したような、小さな回路規模でプロセッサの割り当てを制御し、消費電力を低減し得るプロセッサシステムによって実行可能な命令列を容易に生成することができる。
また、請求項13の発明は、
請求項12の命令列最適化装置であって、
上記制御情報付加手段は、さらに、1つのプロセッサによって実行されることを示す命令を、複数のプロセッサによって並列に実行されることを示す命令に置き換えるように構成されていることを特徴とする。
また、請求項15の発明は、
請求項14の命令列最適化プログラムであって、
上記制御情報付加ステップは、さらに、1つのプロセッサによって実行されることを示す命令を、複数のプロセッサによって並列に実行されることを示す命令に置き換えることを特徴とする。
これらにより、複数のプロセッサに並列に処理を行わせることが容易にできる。
以上のように本発明によると、プロセッサごとに、実行される命令に応じてクロック周波数を制御することにより、処理能力を低下させることなく、消費電力を低減することができる。さらに、上記クロック周波数の制御と対応させて、各プロセッサに供給される電源電圧や基板電圧を制御することにより、一層、消費電力を低減することができる。
以下、本発明の実施形態を図面に基づいて詳細に説明する。
《本発明の概要、および消費電力等とクロック周波数等との関係》
まず、本発明によって消費電力が低減されるメカニズムに関連する消費電力等とクロック周波数等との関係について説明する。
(消費電力と、クロック周波数、電源電圧との関係)
CMOSトランジスタ回路の消費電力と、クロック周波数および電源電圧との間には、リーク電流を無視すれば、概ね次のような関係がある。
P ∝ K×C×Vdd2×f (1)
ここで、
P :消費電力
K :トランジスタのスイッチング確率
C :駆動される負荷容量
Vdd:電源電圧
f :クロック周波数(トランジスタの動作周波数)である。
上式から解るように、電源電圧やクロック周波数を低くすることによって、消費電力を小さくすることができる。すなわち、一定の処理(処理内容とデータとの組み合わせによる処理)を行うために必要な実行サイクル数は一定なので、所定の時間内において、あるクロック周波数での実行サイクル数が上記一定の処理に必要な実行サイクル数よりも多い場合には、無駄なトランジスタのトグル(オン、オフスイッチング)が行われることになる。そこで、クロック周波数を低くして上記所定の時間内での実行サイクル数を少なくすることにより、無駄なトグル回数を減らして消費電力を低減することができる。
しかも、クロック周波数を低くすると、回路遅延マージンが大きくなるため、以下に説明するように電源電圧を低下させることができ、したがって消費電力(上記のように電源電圧の2乗に比例する)を一層小さく抑えることができる。また、例えば一定の処理を2つのプロセッサに分散して並列に実行させる際に、クロック周波数を1/2にすれば、処理能力は同等でも、やはり、電源電圧を低下させることができるので消費電力を小さく抑えることができる。
(回路の遅延時間と、電源電圧、トランジスタの閾値電圧との関係、およびリーク電流と閾値電圧との関係)
回路の遅延時間(ゲート遅延時間)と、電源電圧およびトランジスタの閾値電圧との間には、次のような関係がある。
td ∝ Vdd×C/(Vdd−Vt)2 (2)
ここで、
td :回路の遅延時間
C :駆動される負荷容量
Vdd:電源電圧
Vt :トランジスタの閾値電圧である。
すなわち、遅延時間は、駆動される負荷容量が一定だとすれば、電源電圧と閾値電圧とによって定まる。具体的には、例えば、閾値電圧が0.4Vの場合、
電源電圧が2.5 Vのときの遅延時間をtd1、
電源電圧が1.75Vのときの遅延時間をtd2とすると、
td2/td1≒1.69となる。つまり、電源電圧が2.5Vから1.75Vに低下すると、遅延時間は約1.69倍になる。そこで、電源電圧が2.5Vでクロック周波数がfのときに適切に動作する回路は、電源電圧が1.75Vに低下しても、クロック周波数が約f/1.69≒0.59×f以下であれば動作させることができ、逆に、約0.59×fのクロック周波数で動作させる場合には、電源電圧を1.75Vまで低下させることができる。したがって、前記式(1)に示したように、クロック周波数を低くすることによって、そのこと自体による消費電力の低減効果に加えて、電源電圧を低下させることによる消費電力の低減効果が得られる。
また、クロック周波数を低くすることによって回路遅延マージンが大きくなると、上記のように電源電圧を低くできるのと同様に、閾値電圧を高くすることことによってリーク電流を小さくすることができる。すなわち、リーク電流と閾値との間には、次のような関係がある。
Ileak ∝ exp{−Vt/(S×ln10)} (3)
ここで、
Ileak :リーク電流
S :Sファクタである。
具体的には、例えば、電源電圧が2.5Vの場合に閾値電圧を0.3Vから0.6Vにしたとすると、上記式(2)によれば遅延時間は1.34倍になる(クロック周波数が0.75×f以下なら動作させることができる)が、このとき、Sファクタを100mVとすると、リーク電流は27%程度にすることができる。したがって、やはり、クロック周波数を低くすることによって、リーク電流を小さくすることによる消費電力の低減効果も得ることができる。
すなわち、近年の半導体プロセスにおける回路の微細化に伴って、閾値電圧を低く(スケーリング)することや、大容量のメモリを半導体チップ内に搭載することによる回路規模の増大などに応じてリーク電流の増大が顕在化しがちであるのに対して、逆に、クロック周波数を低くして遅延時間の増大を許容し得るようにすることにより、閾値電圧が高くなるように基板電圧を制御したりして消費電力を低減することができる。
ここで、上記のような閾値電圧は、固定的に設定する場合には、例えば不純物濃度を設定することなどによって行うことができる。また、動的に設定する場合には、例えば半導体基板電圧を制御することによって、すなわち、トランジスタの基板ノード(ウェルが形成されている場合には、そのウェル)とソースノードとに対して逆バイアス電圧を印加することによって行うことができる。
本発明においては、上記のようなクロック周波数、電源電圧、および閾値電圧と、消費電力との関係を利用して、複数のプロセッサにそれぞれ実行される命令を割り当てるとともに、各プロセッサの処理内容(実行される命令の処理時間)に応じて、プロセッサに供給するクロック周波数等を制御することにより、全体の処理能力の低下を招くことなく、大幅な低消費電力化が実現される。
以下、本発明の具体的な実施形態について説明する。
《発明の実施形態1》
実施形態1として、半導体集積回路で構成されたプロセッサシステムにおいて、命令に付加されたフラグに基づいて、命令をCPUとハードウェアエンジン(HWE)との何れのモジュール(機能ブロック)に実行させるかの割り当て、およびクロック周波数の制御が行われる例について説明する。
図1は、プロセッサシステムの要部の構成を示すブロック図である。このプロセッサシステムは、記憶部100と、フラグ検出部101と、命令割り当て制御部102と、CPU103と、HWE104と、SRAM105と、クロック制御部106と、バス107とを備えている。(上記フラグ検出部101と命令割り当て制御部102によって割り当て制御手段が構成され、フラグ検出部101とクロック制御部106によってクロック制御手段が構成される。)
上記記憶部100は、実行される命令の命令コードが格納されるもので、例えばあらかじめ命令コードが記憶されたROMや、ハードディスクに記憶された命令コードがロードされるRAMなどによって構成される。上記命令コードには、CPU103およびHWE104のクロック周波数に関する動作モードを示す情報が含まれている。具体的には、例えば図2に示すように、命令コードは、命令の内容を示す命令コード本体に、その命令がCPU103またはHWE104の何れで実行されるかを示す割り当て制御フラグと、CPU103またはHWE104をそれぞれ動作させるクロック信号の周波数を示すクロック制御フラグとが付加されて成っている。上記クロック制御フラグは、より詳しくは、例えば図3に示すように、上位2ビットがCPU103に供給されるクロック信号の周波数を示し、下位2ビットがHWE104に供給されるクロック信号の周波数を示すようになっている。このようなフラグは、例えばプログラム設計者が付加することなどもできるが、後述する命令列最適化装置によって自動的に付加させることもできる。なお、必ずしも上記のようにCPU103とHWE104とで独立に全てのクロック周波数を指定し得るようにするのに限らず、所定のクロック周波数の組み合わせを指定し得るようにしてもよい。また、特にクロック周波数の指定がない場合に、最高のクロック周波数になるようにしてもよい。
フラグ検出部101は、記憶部100から読み出された命令コードと、その命令コードに含まれる割り当て制御フラグに基づいた割り当て制御信号とを命令割り当て制御部102に出力するとともに、クロック制御フラグに基づくクロック制御信号をクロック制御部106に出力するようになっている。
命令割り当て制御部102は、上記フラグ検出部101から出力された割り当て制御信号に応じて、CPU103またはHWE104に命令コードを転送するようになっている。なお、上記フラグ検出部101および命令割り当て制御部102は、ハードウェアによって構成されるようにしてもよいが、CPU103等よりも上位のプロセッサなどによって構成されるようにしてもよい。また、CPU103やHWE104への命令コードの転送は直接行われるのに限らず、バス107を介して行われるようにしてもよい。
CPU103は、内部に有する演算リソースやSRAM105等を用いて、一般的な種々の命令を実行する汎用のプロセッサである。(なお、このCPU103には半導体集積回路全体の種々の動作を制御する機能を持たせるようにしてもよい。)
一方、HWE104は、例えば、1つのまたは一連の命令による、MPEG−4演算や、ビタビ復号演算、積和演算などの特定の演算処理(定型処理)を高速に(少ない処理サイクル数で)、かつ、CPU103の処理とは独立して(いわゆる突き放しで)行うプロセッサである。(ここでは説明の簡単のために、例えば図2に示すアドレス0000〜0003のようなループ処理を高速に行えるとして説明する。)
SRAM105は、バス107を介してCPU103およびHWE104と接続され、CPU103やHWE104の処理における一時的なデータなどが格納される共有メモリである。なお、このようなメモリとしては、通常、高速な動作が可能なSRAM(Static RAM)が用いられるが、これに限るものではない。
クロック制御部106は、前記フラグ検出部101から出力されるクロック制御信号に応じた周波数のクロック信号を、CPU103、HWE104、およびSRAM105に供給するものである。このクロック制御部106は、具体的には例えば図4に示すように、所定の周波数のクロック信号を生成するクロックジェネレータ106aと、上記クロック信号を所定の分周比で分周する分周器106bと、フラグ検出部101から出力されるクロック制御信号を保持する周波数制御レジスタ106cと、CPU103、HWE104、およびSRAM105に、上記周波数制御レジスタ106cの保持内容に応じた周波数のクロック信号を選択的に出力するセレクタ106dとを備えて構成されている。
次に、上記のように構成されたプロセッサシステムの動作について説明する。図5は、記憶部100に格納された命令が実行されるときの制御動作を示すフローチャートである。なお、同図は、プロセッサシステムの制御動作を模式的に示すもので、実際には、必ずしも同図に示す各ステップが順に行われるのではなく、通常、前記各部の動作が並行して行われる。
(S100) フラグ検出部101は、記憶部100に記憶されている命令コード(または命令コード群)を先読みし、その命令コードに含まれる割り当て制御フラグ、およびクロック制御フラグを検出する。
(S101)〜(S103) フラグ検出部101は、次に、上記割り当て制御フラグの検出結果に基づいたCPU103またはHWE104を示す割り当て制御信号と、上記命令コードとを命令割り当て制御部102に出力する。ここで、上記命令コードは、上記フラグが付加されたままでもよいし、またはフラグを除去してもよい。
(S104) さらに、フラグ検出部101は、クロック制御フラグの検出結果に基づいて、クロック制御信号をクロック制御部106に出力する。
(S105) クロック制御部106は、上記クロック制御信号に応じて、CPU103、およびHWE104に出力するクロック信号の周波数を切り替える。具体的には、図2のプログラムの例では、HWE104には、アドレス0000〜0004の命令コードが実行される際に周波数fのクロック信号が供給される。一方、CPU103には、アドレス0005〜0008の命令コードが実行される際に周波数f/2のクロック信号が供給され、アドレス0009の命令コードが実行される際に周波数fのクロック信号が供給される。また、SRAM105へは、CPU103またはHWE104に供給されるクロック信号の周波数のうち、高い方の周波数のクロック信号が供給される。
(S106) 命令割り当て制御部102は、上記フラグ検出部101から出力された割り当て制御信号に応じて、命令コードをCPU103またはHWE104に転送する。例えば図2に示したプログラムの例では、アドレス0000〜0004の命令コードはHWE104に転送されて実行され、アドレス0005〜0009の命令コードはCPU103に転送されて実行される。
ここで、図2に示したプログラム例の内容について簡単に説明すると、アドレス0000〜0003の命令コードは、アドレス0001〜0002の命令コードの実行が4回繰り返されるループ演算が行われることを示している。アドレス0004の命令コードは、上記ループ演算が行われた結果、HWE104のレジスタ(A)に保持されたデータが、SRAM105におけるアドレスxxxxの領域に格納されることを示している。また、アドレス0009の命令コードは、CPU103によってアドレス0005〜0008の処理が行われた後、レジスタ(A)に保持されているデータに、上記HWE104によってSRAM105に格納されたデータが加算されることを示している。
このようなプログラムが実行される場合、図6に示すように、まず、アドレス0000〜0004の命令コードがHWE104に転送され、実行される。一方、アドレス0005〜0008の命令コードは、上記HWE104による実行と並行して、順次転送されながら実行される。
そこで、例えば、HWE104によるアドレス0000〜0003の命令コード(ループ演算)の実行がCPU103の2倍の効率で1ループあたり2クロックで行われ、アドレス0004の命令コードの実行が1クロックで行われるとすると、合計で2クロック×4ループ+1クロックで9クロック要することになる。一方、CPU103によるアドレス0005〜0008の命令コードの実行が4クロックで行われるとすると、この所要クロック数は上記HWE104によるループ演算の所要クロック数の約1/2にあたることになる。
そこで、もし、CPU103およびHWE104に同じ周波数fのクロック信号が供給されるとすると、CPU103はHWE104の約1/2の時間でアドレス0008までの命令コードの実行を完了することになる。そして、この場合、次のアドレス0009の命令コードは、HWE104によるループ演算の演算結果を参照しているので、上記ループ演算が終了するまで実行することができず、その間、CPU103では無駄に電力が消費されることになってしまう。すなわち、CPU103とHWE104の処理内容の統合が必要な場合には、どちらかが(相対的に過剰な演算処理性能を有し処理能力が高いなどのために)処理を早く完了したとしても、他方の演算結果が出るまでの間、内部状態を維持したまま待つ必要があり、その間アイドル状態で動作して不要なトグルによる電力を消費し続けることになる。
ところが、本実施形態のプロセッサシステムでは、前記のように、CPU103でアドレス0005〜0009の命令コードが実行される際には、クロック制御フラグに基づいて、f/2の周波数のクロック信号がCPU103に供給される。このため、CPU103の消費電力を約1/2に抑えられるとともに、CPU103の処理は、周波数fのクロック信号が供給されるHWE104の処理とほぼ同時に終了する(処理時間が等価になる)ので、プロセッサシステム全体の処理能力の低下を招くことがない。すなわち、処理能力と消費電力とを両立させ得るクロック周波数の組み合わせを最適化した動作モードで種々の処理を行わせることができる。しかも、上記のように命令コードに付加されたフラグに基づいて、プロセッサの割り当てやクロック周波数の制御をすることにより、複雑なデコード回路等を設ける必要がないので、回路規模を小さく抑えることもできる。
なお、命令の所要クロック数と供給可能な周波数によっては、必ずしも待ち時間が全くなくならなくても、最高周波数より低い周波数にして少しでも待ち時間が短くなれば、処理能力を低下させることなく消費電力を低減できることになる。
また、CPU103またはHWE104の一方が動作しないとき、すなわち実行する命令が割り当てられないときや、各プロセッサで実行される命令の終了タイミングが正確には一致せずに多少の待ち時間が生じるときなどには、クロック信号の供給を停止(または入力されるクロック信号をディスエイブル状態に)するようにしてもよい。
《発明の実施形態2》
次に、上記のような、各プロセッサの割り当ておよびクロック周波数を制御するためのフラグが付加された命令コードを生成する命令列最適化装置の例について説明する。
この命令列最適化装置は、例えば、コンパイラやオプティマイザなどと称されるプログラムが実行されるコンピュータによって構成され、機能的な構成としては、図7に示すような構成を有している。
同図において、記憶装置201は、フラグが付加される前後のソースプログラムおよびオブジェクトプログラムを記憶するものである。上記ソースプログラムとしては、例えば命令コード列から成る実行形式の機械語プログラムや、アセンブラプログラム、また、抽象度の高いC言語プログラムなどを用いることができる。ここで、アセンブラプログラムやC言語プログラムなどの場合には、機械語プログラムへの展開が行われるとともにフラグが付加されるようにしてもよいし、一旦、命令コードの付加を示す情報が埋め込まれた中間プログラムが生成された後に、フラグが付加された機械語プログラムが生成されるようにしてもよい。
命令解析部202(命令解析手段)は、ソースプログラムを解析し、ソースプログラムに含まれる各命令(一連の命令から成る命令群を含む)が、何れのプロセッサで実行可能かや、並列に実行可能かを判定するとともに、各命令の相互関係(処理内容の依存関係)、すなわち、例えばある命令I1の実行結果が他の命令I2の実行にあたって参照される場合には、命令I1の実行が完了しなければ命令I2は実行できないなどの実行タイミングの制約を判定するようになっている。
標準実行時間推定部203(実行時間推定手段)は、各命令が各プロセッサによって所定の基準のクロック周波数(例えば最高周波数:以下、「標準クロック周波数」と呼ぶ。)で実行される場合の標準実行時間を推定するようになっている。上記標準実行時間は、具体的には、例えば、各プロセッサごとに種々の命令の実行に要する所要クロック数が登録されたテーブルを参照し、これに標準クロック周波数の逆数(1/f)を乗算することによって得ることができる。なお、上記所要クロック数に関しては、何れかの基準とするプロセッサによって実行される際の所要クロック数を上記のようにして求め、これに他のプロセッサで実行される場合の効率(基準とするプロセッサとの処理能力の比)を乗算することによって、他のプロセッサによって実行される場合の所要クロック数を簡易に推定することもできる。また、プログラム中にループ演算や条件分岐が含まれている場合などには、必ずしも正確な所要クロック数を求められるとは限らないが、そのような場合には、例えばサンプルデータを用いたシミュレーションやプログラム設計者による指定などによってループ回数や分岐条件等を設定することにより、妥当な推定値や最悪値を所要クロック数として求めることなどができる。
換算実行時間算出部204は、各命令が各プロセッサによって種々のクロック周波数で実行される場合に要する換算実行時間を算出するようになっている。具体的には、標準実行時間×(標準クロック周波数/各クロック周波数)によって換算実行時間が求められる。なお、例えば、標準実行時間と種々のクロック周波数との組み合わせに対応して、あらかじめ上記換算実行時間が登録されたテーブルを参照することによって求めるなどしてもよい。
ここで、上記標準実行時間や換算実行時間としては、文字通り時間の単位の値を用いてもよいが、クロック数を用いるようにしてもよい。すなわち、標準実行時間として所要クロック数を用い、各クロック周波数に応じた換算実行時間として、所要クロック数×(標準クロック周波数/各クロック周波数)を用いるなどしてもよい。
割り当て・クロック周波数決定部205(割り当て決定手段、クロック周波数決定手段)は、上記命令解析部202によって判定された、各命令を実行可能なプロセッサおよび実行タイミングの制約を示す情報と、換算実行時間算出部204によって算出された各命令の換算実行時間とに基づいて、消費電力が最も小さくなるように、各命令を実行させるプロセッサの割り当て、および各命令が実行される際に供給するクロック信号の周波数を決定するようになっている。具体的には、例えば、図8(a)(b)に示すように、命令a、bがプロセッサA、Bによって実行される場合において、クロック周波数がfのときに、命令aはプロセッサA、Bの何れで実行されても実行時間が同じである一方、命令bがプロセッサAで実行される実行時間はプロセッサBで実行される実行時間の1/2であるとし、また、命令a、bの実行が共に完了した後でなければ次の命令の実行が可能でないとした場合、命令bがプロセッサAによって実行されるようにすれば、プロセッサAの処理には余裕があることになる。そこで、プロセッサAのクロック周波数をf/2にすることにより、全体の処理時間に影響を与えることなく、消費電力を低減することができる。
フラグ付加部206(割り当て制御情報付加手段、クロック制御情報付加手段)は、上記割り当て・クロック周波数決定部205によって決定された割り当て、および周波数に基づいて、前記図2に示したように、各命令の命令コードに割り当て制御フラグおよびクロック制御フラグを付加するようになっている。なお、割り当て制御フラグを付加するのに代えて、または付加するとともに、CPU103とHWE104とで並列に実行させることが可能な1つまたは一連の命令コードを並列演算命令に置き換えるようにしてもよい。
次に、上記命令列最適化装置の動作について、図9に基づいて説明する。
(S1000) まず、ソースプログラムが解析され、各命令を実行可能なプロセッサが判別される。また、複数の命令が並行して実行される場合に、何れの命令も実行が完了しなければ他の命令が実行できないような命令などの実行タイミングの制約が検出される。
(S1001) 次に、ソースプログラムに含まれる全ての命令が、ある1つのプロセッサだけによって実行可能であるかどうかが判定され、判定結果がYesであれば、上記全ての命令は上記1つのプロセッサによって例えば最高クロック周波数で実行させればよいので、処理は後述する(S1006)に移行する。
(S1002) 上記(S1001)の判定結果がNoであれば、各命令が各プロセッサによって標準クロック周波数で実行される場合の標準実行時間が推定される。
(S1003) さらに、各命令が各プロセッサによって種々のクロック周波数で実行される場合に要する換算実行時間が算出される。
(S1004) 上記のようにして算出された換算実行時間、および(S1000)で検出された命令間の相互関係(命令の実行タイミングの制約)に基づいて、消費電力が最も小さくなるように、各命令を実行させるプロセッサの割り当て、および各命令の実行時に供給するクロック信号の周波数が決定される。
具体的には、例えば、まず各命令を実行可能なプロセッサへの割り当ての全ての組み合わせに対して、それぞれ、前記図8で説明したように、全てのプロセッサを例えば標準クロック周波数で動作させたときに処理に余裕のあるプロセッサ、すなわち、他のプロセッサの処理が終了するまで待ちが生じるプロセッサを求める。次に、上記余裕のあるプロセッサに対する、全体の処理時間に影響を与えることがない最も低いクロック周波数、つまり、後続する命令によって演算結果を参照される演算処理が、他のプロセッサによる演算処理よりも遅くなることなく終了し得る最も低い周波数(またはそのような周波数と標準クロック周波数との比など)を求める。(なお、実際には、標準実行時間と各換算実行時間とを比較して、標準実行時間以下の換算実行時間のうちで最も長い換算実行時間に対応する周波数を求めるなどしてもよい。)
これによって、各割り当ての組み合わせごとに、各プロセッサによる各命令の実行に対して、その実行の際のクロック周波数が対応付けられるので、各割り当ての組み合わせについての消費電力(実際には各命令の実行に必要なクロック数の合計などでもよい)がそれぞれ求められる。
そこで、上記消費電力が最も小さい割り当ての組み合わせを求めれば、処理能力を低下させることなく消費電力を低減できる各命令の割り当て、およびクロック周波数が決定される。
(S1005) 上記命令の割り当て、およびクロック周波数の決定に基づいた割り当て制御フラグとクロック制御フラグとが、ソースプログラムに含まれる命令の命令コードに付加され、オブジェクトプログラムとして記憶装置201に格納される。
(S1006) 一方、前記(S1001)で、ソースプログラムに含まれる全ての命令が、ある1つのプロセッサだけによって実行可能であると判定された場合には、前記のように全ての命令は上記1つのプロセッサによって例えば最高クロック周波数で実行させればよいので、ソースプログラムに含まれる命令の命令コードに、そのプロセッサへの割り当てを示す割り当てフラグと、最高クロック周波数を示すクロック制御フラグとが付加される。
(S1007) ソースプログラムの全ての命令についての処理が終わるまで、上記(S1002)〜(S1005)の処理が繰り返される。
上記のようにして割り当て制御フラグおよびクロック制御フラグが付加された命令コードを生成することによって、前記実施形態1に示したような複数のプロセッサを有するプロセッサシステムで、処理能力を低下させることなく大幅に小さな消費電力で実行させることのできるプログラムが得られる。
なお、上記(S1004)において、全ての割り当ての組み合わせの数が多くなるなどの場合には、少数のプロセッサに極端に多くの命令が割り当てられるような組み合わせについての考慮を省略することによって、最適化装置の処理負荷を軽減し得るようにしてもよい。すなわち、例えば、プロセッサの割り当てが決定される際に、図7、9に破線で示すように、あらかじめ設定された処理比率設定情報などに基づいて各プロセッサによる処理量(処理時間や所要クロック数の合計)の比率を所定の範囲に制限し(処理比率設定手段)、その範囲の割り当ての組み合わせのうちで消費電力が最も小さい組み合わせを求めるようにすることにより、上記のようなフラグの付加を高速に行わせることができる。この場合、各プロセッサによる命令実行の並列度も高くなるので命令全体の実行速度が速くなることにもなる。特に上記処理比率を種々設定し得るようにすることにより、プロセッサシステムの消費電力および命令実行速度と、最適化装置によるフラグ付加処理の負荷とをプロセッサシステムの使用目的などに応じて調整することなどもできる。また、上記のような処理を、ソースプログラムの全ての命令について一括して行わず、所定の一連の命令ごとに行うなどしてもよい。この場合でも、上記一連の命令の長さを適切に設定して局所的な消費電力を小さくすれば、全体の消費電力も大幅に低減することができるとともに、割り当ての組み合わせの数が少なく抑えられるので、やはり、最適化装置の処理負荷を軽減することができる。
また、上記消費電力を算出する際には、各プロセッサにおける消費電力の相違を考慮して所定の係数をかけるなどして、より確実に消費電力を低減し得るようにしてもよい。
また、上記の例では、処理に余裕のあるプロセッサや、全体の処理時間に影響を与えない最低クロック周波数を求める際に換算実行時間を用いる例を示したが、これに限らず、標準実行時間を用いるようにしてもよい。すなわち、例えば標準実行時間の差によって余裕の有無を判別したり、標準実行時間の比などに基づいて、上記最低クロック周波数等を求めるなどしてもよい。
《発明の実施形態2の変形例》
上記実施形態2の命令列最適化装置と同様に、命令コードにフラグを付加する、他の命令列最適化装置について説明する。なお、以下、前記実施形態1、2等と同様の機能を有する構成要素については同一の符号を付して説明を省略する。
この命令列最適化装置は、複数のプロセッサによって実行可能な命令が標準実行時間の最も短いプロセッサによって実行されるようにプロセッサへの命令の割り当てを決定し、その割り当てのもとに、消費電力が小さくなるようにクロック周波数が決定されるようになっている。具体的には、この装置は、例えば図10に示すように、前記実施形態2(図7)と比べて、割り当て・クロック周波数決定部205に代えて割り当て決定部311とクロック周波数決定部312とを備えている点が異なる。
上記割り当て決定部311は、複数のプロセッサによって実行可能な命令が、標準実行時間推定部203によって算出された標準実行時間の最も短い(所要クロック数が最も少ない)プロセッサによって実行されるように、割り当てを決定するようになっている。
また、クロック周波数決定部312は、上記のように決定された割り当てに対して、全てのプロセッサを標準クロック周波数で動作させたときに処理に余裕のあるプロセッサを、全体の処理時間に影響を与えることがない最も低いクロック周波数で動作させるように(待ち時間が最も短くなるように)、クロック周波数を決定するようになっている。
上記のように構成された命令列最適化装置の動作は、図11に示すように、実施形態2(図9)と以下の点が異なっている。
(S1151) 標準実行時間の算出(S1002)がなされた後、複数のプロセッサによって実行可能な命令が、それぞれ最も標準実行時間の短いプロセッサで実行されるように、プロセッサの割り当てが決定される。
(S1104) 図9の(S1004)と異なり、クロック周波数の決定だけがなされる。すなわち、各命令が上記(S1151)で割り当てられたプロセッサによって標準クロック周波数で実行される際に、他のプロセッサの処理が終了するまで待ち時間が生じる(余裕がある)プロセッサに対して、上記待ち時間が短くなり、かつ、全体の処理時間に影響を与えることがない最も低い周波数のクロック信号が供給されるように決定される。これによって、上記のようなプロセッサの割り当ての範囲内で、プロセッサシステムの処理能力を低下させることなく、消費電力を低減することができる。
上記のようにしてプロセッサの割り当ておよびクロック周波数が決定されると、実施形態2と同様に(S1005)で上記決定に応じた割り当て制御フラグおよびクロック制御フラグが命令コードに付加される。
上記のように、各命令が標準実行時間の最も短いプロセッサによって実行されるようにすることにより、命令コードの実行効率を高くして合計の所要クロック数を低減することができるうえ、やはり、実行時間に余裕のあるプロセッサに供給されるクロック信号の周波数を低くすることによって、無駄なトランジスタのトグルを減少させることができるので、大幅に消費電力を低減することができる。しかも、クロック周波数の決定処理は、1組のプロセッサの割り当ての組み合わせに対してなされるだけなので、最適化装置の処理負荷を軽減し、高速にフラグの付加を行わせるようにすることもできる。
なお、上記のように各命令が標準実行時間の最も短いプロセッサで実行されるように割り当てられる場合、同種の命令が多く含まれるプログラムなどの場合には、単一の、または少数のプロセッサへの割り当てが集中することも考えられる。この場合、消費電力は小さく抑えられるが、各プロセッサによる処理の並列度が低下して、プログラム全体の実行に要する時間が長くかかることになる。そこで、消費電力が多少増えてもプログラム全体の実行時間を短く抑えるためには、実施形態2で説明したのと同様、図10、11に破線で示すように、処理比率設定情報などに基づいて、各プロセッサによる処理量の比率を所定の範囲に制限するなどすればよい。
また、各命令を最も標準実行時間の短いプロセッサで実行されるように割り当てるのに代えて、例えば全てのプロセッサが標準クロック周波数で動作する場合にプログラム全体(または所定の一連の命令列全体)の実行時間が最も短くなるように、プロセッサを割り当てるようにしてもよい。すなわち、複数のプロセッサで実行可能な命令については、標準実行時間が最も短いプロセッサでなくても、そのプロセッサと並行して実行させ得る他のプロセッサに割り当て、各プロセッサによる処理の並列度を高くすることによって、プログラム全体の実行時間等を短くすることができる。そして、その場合でも、実行時間に余裕のあるプロセッサに供給されるクロック信号の周波数を低くすることによって、無駄なトランジスタのトグルを減少させて消費電力を低減することができる。また、この場合にも、前記のように各プロセッサによる処理量の比率を所定の範囲に制限するなどして、その範囲内で、実行時間が短くなるように割り当てを決定するようにすれば、最適化装置の処理負荷を軽減することもできる。
また、さらに、例えば、割り当て決定部311(並べ替え手段)でプロセッサの割り当てが決定される際に命令の実行順序の並べ替えが行われるようにしてもよい。すなわち、例えば図12に示すように、前記図11の各ステップに加えて、(S1251)で命令の並べ替え処理が行われるようにしてもよい。
具体的には、例えば図13(a)に示すような命令a〜dがソースプログラムに記述されている場合において、命令a、cは、それぞれプロセッサAで4クロックで逐次実行可能である一方、命令bはプロセッサBに転送後、プロセッサAの動作とは独立して12クロックで実行可能であり、これらの命令a〜cの実行終了後に命令dの実行が可能であるとすると、ソースプログラムに記述された通りの順序で演算処理がなされる場合には、図13(b)および以下に示すように各命令が実行されることになる。
(1) 命令aが、プロセッサAに順次転送されながら、クロック周波数f、所要クロック数4クロックで実行される。
(2) 命令aの終了後、命令bが、プロセッサBにまとめて転送された後、クロック周波数f、所要クロック数12クロックで実行される。
(3) 上記命令bの実行と並行して、命令cが、順次転送されながら、クロック周波数f/3、所要クロック数4クロック(クロック周波数がfとした場合の換算実行時間は12クロック分)で実行される。
これに対して、命令の順序が図13(c)に示すように並べ替えられる場合には、図13(d)および以下に示すように実行させることができる。
(1) 命令bが、プロセッサBにまとめて転送された後、クロック周波数f×3/4、所要クロック数12クロック(換算実行時間は16クロック分)で実行される。
(2) 上記命令bの実行と並行して、命令aが、プロセッサAに順次転送されながら、クロック周波数f/2、所要クロック数4クロック(換算実行時間は8クロック分)で実行される。
(3) 続いて、命令cも、クロック周波数f/2、所要クロック数4クロック(換算実行時間は8クロック分)で実行される。
つまり、命令の実行順序を入れ替えることによって、プロセッサによる処理の並列度を高くして実行時間の余裕を大きくすることができる。それゆえ、命令a〜cの何れも低いクロック周波数で実行させることができ、消費電力を大幅に低減することができる。また、クロック周波数を低くすると、後述するように電源電圧も低くすることなどによってさらに消費電力を低減することもできるが、元の実行順序で命令cについてだけクロック周波数をf/3にするよりも、並べ替え後のように命令a、cについて共にf/2にする方が、より大きな消費電力低減効果を得ることができる。なお、上記のように命令の実行順序を並べ替えた場合でも、図13(e)に示すように、命令bはクロック周波数fで実行させ、命令a、bはf×2/3で実行させるようにしてもよい。この場合には、全体の処理速度を向上させることができるとともに、消費電力も、命令の実行順序を並べ替える前よりは小さくすることができる。
《発明の実施形態3》
次に、前記実施形態1のように命令コードに付加されたフラグに基づいてクロック周波数等を制御するのではなく、フラグを有しない通常の命令コードを用いても、同様に消費電力を低減できるプロセッサシステムの例を説明する。すなわち、このプロセッサシステムは、命令コードに付加されたフラグを検出する代わりに、実施形態2の命令列最適化装置のような命令の割り当ておよびクロック周波数を決定する機能を持たせて、その決定に基づいて、命令の割り当ておよびクロック周波数を制御するようになっている。
具体的には、例えば図14に示すように、実施形態1(図1)のフラグ検出部101に代えて、命令解析部402(命令解析手段)、標準実行時間推定部403(実行時間推定手段)、換算実行時間算出部404、および割り当て・クロック周波数決定部405(割り当て決定手段、クロック周波数決定手段)が設けられている。これらの各部は、それぞれ、実施形態2(図7)の命令解析部202、標準実行時間推定部203、換算実行時間算出部204、または割り当て・クロック周波数決定部205と同じような機能を有するものである。ただし、通常、実施形態2のような命令列最適化装置ではソフトウェアとコンピュータによって上記のような機能がもたらされるのに対し、本実施形態のプロセッサシステムは、CPU103やHWE104による命令の実行速度に応じたタイミングで制御を行うためにハードウェアによって構成される。(ただし、これに限るものではなく、例えばCPU103等よりも上位のプロセッサなどによって制御されるようにしてもよい。)
このプロセッサシステムの動作は、図15に示すように、概ね実施形態1、2(図5、9)の動作を組み合わせたものと同様である。
(S1300) まず、命令解析部402が、記憶部100に記憶されている所定量の一連の命令コードを先読みし、命令コードが解析される。この命令コードの解析の内容は、基本的に実施形態2の(S1000)で行われるものと同様であるが、命令解析部402がハードウェアによって構成される場合には、必ずしも全ての命令コードについてまとめて解析されずに、そのハードウェア規模に応じた上記所定量の一連の命令コードごとに解析が行われるようにしてもよい。
(S1301) 次に、上記先読みされた一連の命令コード中に含まれる各命令が、何れも同一の一方のCPU103またはHWE104の一方でだけ実行可能なものであり、かつ、その実行可能な方のCPU103またはHWE104が動作状態(他の命令の実行を完了しない状態)である場合には、後述する(S1306)に移行して、上記各命令が実行可能なCPU103またはHWE104を示す割り当て信号と、例えば最高クロック周波数を示すクロック制御信号とが出力される。すなわち、上記のような場合にはCPU103とHWE104とで並列処理を行うことができず、したがって上記一連の全体の処理能力は各命令の実行時間に依存することになるので、割り当ておよびクロック周波数は上記のように設定されればよい。
(S1002)〜(S1004) 一方、一連の命令コード中に含まれる各命令が、CPU103またはHWE104のうち互いに異なる方で実行可能である場合や、他の命令を実行中ではない方のCPU103またはHWE104で実行可能である場合には、並列処理を行わせることができるので、実施形態2(図9)で説明したのと同じように、標準実行時間の推定、換算実行時間の算出がなされた後、先読みされた一連の命令コードの範囲内での実行に関して消費電力が最小になるようにプロセッサの割り当ておよびクロック周波数の決定がなされる。
(S1305) 上記命令の割り当て、およびクロック周波数の決定に基づいた割り当て制御信号とクロック制御信号とが、命令割り当て制御部102およびクロック制御部106に出力される。
(S1306) 一方、前記(S1301)で説明したように、先読みされた一連の命令コード中に含まれる各命令が、何れも同一の一方のCPU103またはHWE104でだけ実行可能なものであり、かつ、その実行可能なCPU103またはHWE104が他の命令の実行を完了しない状態であると判定された場合には、上記各命令が実行可能なCPU103またはHWE104を示す割り当て信号と、最高クロック周波数を示すクロック制御信号とが出力される。
(S105)〜(S106) クロック制御部106は、上記クロック制御信号に応じて、CPU103、HWE104、およびSRAM105に出力するクロック信号の周波数を切り替え、命令割り当て制御部102は、上記割り当て制御信号に応じて、命令コードをCPU103またはHWE104に転送し、命令の実行がなされる。
上記のように、実行時に命令コードを解析してプロセッサの割り当ておよびクロック周波数を決定するようにすることによって、フラグが付加されていないような通常の命令コードが用いられる場合であっても、消費電力を低減することができる。
なお、本実施形態のプロセッサシステムにおいても、図14、15に破線で示すように、処理比率設定情報などに基づき、各プロセッサによる処理量の比率を所定の範囲に制限するなどして(処理比率設定手段)、その範囲の割り当ての組み合わせのうちで消費電力が最も小さい組み合わせを求めるようにすることにより、消費電力が最小となる割り当ての組み合わせを求めるためのハードウェア規模の低減を図ったり、CPU103およびHWE104の処理の並列度を高めて一連の命令全体の実行速度を速くしたりすることができる。
《発明の実施形態3変形例》
上記実施形態3のプロセッサシステムと同様に、フラグを有しない通常の命令コードを用いても消費電力を低減できる、他のプロセッサシステムについて説明する。
このプロセッサシステムは、前記実施形態3のプロセッサシステム(図14)が実施形態2の命令列最適化装置(図7)のような命令の割り当ておよびクロック周波数の決定機能を有するのに対し、実施形態2の変形例(図10)と同様の機能を有して命令の割り当ておよびクロック周波数を制御するようにしたものである。すなわち、CPU103またはHWE104の何れのプロセッサによっても実行可能な命令が、標準実行時間の短い方のプロセッサによって実行されるように命令の割り当てを決定し、その割り当てのもとに、消費電力が小さくなるようにクロック周波数を決定して、割り当ておよび周波数の制御を行うようになっている。より具体的には、例えば図16に示すように、実施形態3(図14)と比べて、割り当て・クロック周波数決定部405に代えて、割り当て決定部511とクロック周波数決定部512とを備えている点が異なる。
上記割り当て決定部511およびクロック周波数決定部512は、それぞれ、実施形態2の変形例(図10)の割り当て決定部311またはクロック周波数決定部312と同様の機能を有するものである。すなわち、割り当て決定部511は、各命令が、双方のプロセッサによって実行可能な場合、標準実行時間推定部403によって算出された標準実行時間に基づいて、上記標準実行時間が短い(所要クロック数が少ない)方のプロセッサによって実行されるように、割り当てを決定するようになっている。
また、クロック周波数決定部512は、上記のように決定された割り当てに対して、両方のプロセッサを例えば標準クロック周波数で動作させたときに処理に余裕のある方のプロセッサを、全体の処理時間に影響を与えることがない最も低いクロック周波数で動作させるように、クロック周波数を決定するようになっている。
上記のように構成されたプロセッサシステムの動作は、図17に示すように、実施形態3(図15)と以下の点が異なっている。(この相違点は、実施形態2の命令列最適化装置の動作(図9)に対する、その変形例の動作(図11)の相違点と同様である。)
(S1151) 標準実行時間の算出(S1002)がなされた後、上記標準実行時間に基づいて、双方のプロセッサによって実行可能な命令が、それぞれ標準実行時間の短い方のプロセッサで実行されるように、割り当てが決定される。
(S1104) 図15の(S1004)と異なり、クロック周波数の決定だけがなされる。すなわち、各命令が上記(S1151)で割り当てられたプロセッサによって標準クロック周波数で実行される際に、他のプロセッサの処理が終了するまで待ち時間が生じる(余裕がある)プロセッサに対して、上記待ち時間が短くなり、かつ、全体の処理時間に影響を与えることがない最も低い周波数のクロック信号が供給されるように決定される。これによって、上記のようなプロセッサの割り当ての範囲内で、プロセッサシステムの処理能力を低下させることなく、消費電力を低減することができる。
上記のようにしてプロセッサの割り当て、およびクロック周波数が決定されると、実施形態3と同様に(S1305)で上記決定に応じた割り当て制御信号とクロック制御信号とが、命令割り当て制御部102およびクロック制御部106に出力され、(S105)〜(S106)で、クロック制御部106によるCPU103、HWE104、およびSRAM105に出力するクロック信号の周波数の切り替え、および命令割り当て制御部102による命令コードのCPU103またはHWE104への転送がなされ、これらの命令が実行される。
上記のように、各命令が標準実行時間の短い方のプロセッサによって実行されるようにすることにより、命令コードの実行効率を高くして合計の所要クロック数を低減することができるうえ、実行時間に余裕のあるプロセッサに供給されるクロック信号の周波数を低くすることによって、無駄なトランジスタのトグルを減少させることができるので、やはり、大幅に消費電力を低減することができる。しかも、実施形態3のように種々の割り当ての組み合わせのうちで消費電力が最も小さい組み合わせを求めるのに比べて、標準実行時間の短いプロセッサを求める方が処理は単純であり、また、クロック周波数の決定は、1組のプロセッサの割り当ての組み合わせに対してなされるだけなので、割り当て決定部511およびクロック周波数決定部512の回路規模を小さく抑えることもできる。
なお、本実施形態3の変形例においても、標準実行時間の短いプロセッサを求めるためのハードウェア規模の低減を図ったり、消費電力が多少増えても各プロセッサによる処理の並列度を高めて一連の命令コード全体の実行時間を短く抑えたりするためには、図16、17に破線で示すように、処理比率設定情報などに基づいて、各プロセッサによる処理量の比率を所定の範囲に制限するなどすればよい。
また、やはり、各命令が最も標準実行時間の短いプロセッサで実行されるように割り当てるのに代えて、例えば全てのプロセッサが標準クロック周波数で動作する場合に全体の実行時間が最も短くなるように、プロセッサを割り当てるようにすることもできる。さらに、各プロセッサによる処理量の比率を所定の範囲に制限するなどし、その範囲内で実行時間が短くなるように割り当てを決定するようにして、プロセッサの割り当てを決定するためのハードウェアの規模を低減することもできる。
《発明の実施形態4》
前記実施形態1では、プロセッサの割り当て、およびクロック周波数の制御が共に命令コードに付加されたフラグに基づいて行われる一方、実施形態3では、共にプロセッサシステムによる命令コードの解析に基づいて行われる例を示したが、プロセッサの割り当てだけをフラグに基づいて行い、クロック周波数の制御は解析に基づいて行うようにしてもよい。
本実施形態のプロセッサシステムは、例えば図18に示すように、実施形態3(図14)の命令解析部402、および割り当て・クロック周波数決定部405に代えて、フラグ検出部601、命令解析部602、およびクロック周波数決定部512を備えている点が異なっている。
上記フラグ検出部601は、命令コード含まれる割り当て制御フラグだけを検出する点が実施形態1(図1)のフラグ検出部101と異なり、記憶部100から読み出された命令コードを命令割り当て制御部102に出力するとともに、割り当て制御フラグを検出して、これに応じた割り当て制御信号を命令割り当て制御部102およびクロック周波数決定部512に出力するようになっている。
また、命令解析部602は、実施形態2の変形例(図10)の命令解析部202が有する機能のうち、クロック周波数の決定に必要な内容、すなわち各命令の相互関係(処理内容の依存関係)や実行タイミングの制約を解析するようになっている。
クロック周波数決定部512は、実施形態3の変形例(図16)と同じもので、フラグ検出部601から出力される割り当て制御信号に基づいて、CPU103およびHWE104を例えば標準クロック周波数で動作させたときに処理に余裕のある方のプロセッサを、全体の処理時間に影響を与えることがない最も低いクロック周波数で動作させるように、クロック周波数を決定するようになっている。
以下、上記のように構成されたプロセッサシステムの動作について、図19に基づいて説明する。
(S1400) フラグ検出部601は、記憶部100に記憶されている命令コード(または命令コード群)を先読みし、その命令コードに含まれる割り当て制御フラグを検出する。また、命令解析部602は、先読みされた命令コードにおける実行タイミングの制約等を解析する。
(S101)〜(S103) フラグ検出部601は、次に、上記割り当て制御フラグの検出結果に基づいて、CPU103またはHWE104を示す割り当て制御信号を命令割り当て制御部102に出力する。また、上記命令コードを、上記フラグが付加されたまま、またはフラグを除去して、命令割り当て制御部102に出力する。
(S1002) 標準実行時間推定部403は、各命令が各プロセッサによって標準クロック周波数で実行される場合の標準実行時間を推定する。
(S1003) 換算実行時間算出部404は、各命令が各プロセッサによって種々のクロック周波数で実行される場合に要する換算実行時間を算出する。
(S1404) クロック周波数決定部512は、フラグ検出部601から出力される、割り当て制御フラグに応じた割り当て制御信号に基づいて、各プロセッサに供給されるクロック信号の周波数を決定する。すなわち、各命令が上記フラグに応じたプロセッサによって標準クロック周波数で実行される際に、他のプロセッサの処理が終了するまで待ち時間が生じる(余裕がある)プロセッサに対して、上記待ち時間が短くなり、かつ、全体の処理時間に影響を与えることがない最も低い周波数のクロック信号が供給されるように決定される。これによって、上記のようなプロセッサの割り当ての範囲内で、プロセッサシステムの処理能力を低下させることなく、消費電力を低減することができる。
(S1405) クロック周波数決定部512は、上記クロック周波数の決定に基づいたクロック制御信号をクロック制御部106に出力する。
(S105)〜(S106) クロック制御部106は、上記クロック制御信号に応じて、CPU103、HWE104、およびSRAM105に出力するクロック信号の周波数を切り替え、命令割り当て制御部102は、上記割り当て制御信号に応じて、命令コードをCPU103またはHWE104に転送し、命令の実行がなされる。
上記のようにプロセッサの割り当て、およびクロック周波数の制御がなされることにより、やはり、処理能力の低下を招くことなく消費電力を低減することができる。しかも、プロセッサの割り当ては割り当て制御フラグに基づいて行われるので、命令解析部602はクロック周波数の決定に必要な実行タイミングの制約等を解析するだけでよく、また、クロック周波数決定部512は1組のプロセッサの割り当ての組み合わせに対してクロック周波数を決定するだけでよいので、実施形態3のプロセッサシステムに比べて、命令解析部602およびクロック周波数決定部512の回路規模を小さく抑えることができる。
《発明の実施形態5》
上記実施形態4のような、各プロセッサの割り当てを制御するためのフラグだけが付加された命令コードは、例えば図20に示すような命令列最適化装置によって生成することができる。
すなわち、実施形態2の変形例(図10)の命令列最適化装置に対して、割り当て制御フラグの付加に必要な機能だけを持たせたもので、フラグ付加部706は、割り当て決定部311の決定に応じて割り当て制御フラグだけを命令コードに付加するようになっている。
この命令列最適化装置の動作は、図21に示すように、実施形態2の変形例(図11)と比べて、クロック周波数を決定するための動作(S1003)(S1104)が実行されない点と、(S1505)(S1506)で割り当て制御フラグの付加だけが行われる点のみ異なる。
なお、本実施形態においても、実施形態2の変形例で説明したのと同様、図20、21に破線で示すように、処理比率設定情報などに基づいて各プロセッサによる処理量の比率を所定の範囲に制限するようにしたり、一連の全体の実行時間が最も短くなるようにプロセッサを割り当てるようにしたり、また、命令の実行順序を並べ替えるようにしたりしてもよい。
《発明の実施形態6》
上記のようにクロック周波数が制御されるとともに、さらに、CPU103等に供給される電源電圧が制御されるプロセッサシステムの例について説明する。すなわち、クロック周波数が低くなると、回路の遅延マージンが大きくなるため、回路の遅延時間を長くすることができ、したがって、電源電圧を低くすることができる。そして、消費電力は電源電圧の2乗に比例するので、大幅な低消費電力化が可能になる。
具体的には、本実施形態のプロセッサシステムでは、例えば図22に示すように、実施形態1(図1)の構成に加えて、電源電圧制御部701(電圧制御手段)が設けられている。上記電源電圧制御部701は、フラグ検出部101から出力されるクロック制御信号に応じて、あらかじめクロック周波数と対応させて設定された電源電圧、すなわち、クロック周波数が低いほど、定格電圧よりも低い電源電圧をCPU103、HWE104、およびSRAM105に供給するようになっている。電源電圧制御部701は、より詳しくは、例えば図23に示すように、フラグ検出部101から出力されるクロック制御信号を電源電圧制御信号として保持する電源電圧制御レジスタ701aと、例えばDC−DCコンバータや電源ICにより構成され、CPU103、HWE104、およびSRAM105に、それぞれ上記電源電圧制御レジスタ701aの保持内容に応じた電圧を出力する電源701bとを備えている。
このプロセッサシステムの動作は、クロック制御部106によりクロック周波数が切り替えられるのに応じて、電源電圧制御部701から出力される電源電圧が切り替えられる点を除いて、実施形態1(図5)と同じである。このようにクロック周波数を低くするとともに電源電圧を低くすることにより、プロセッサシステムの動作や処理能力に影響を与えることなく、一層、消費電力を小さくすることができる。
なお、上記のようにしてCPU103等に供給される電源電圧は、同じクロック周波数に対して互いに同一である必要はなく、各回路特性等に応じて設定するようにしてもよい。
また、電源電圧を高く切り替えるタイミングは、クロック周波数を高く切り替えるタイミングよりも早くなるようにして、クロック周波数切り替え時の回路遅延マージンが十分に確保されるようにしてもよい。
また、実施形態1で説明したように、クロック信号の供給を停止してCPU103またはHWE104の動作を停止させる際には、電源電圧の供給も停止させる(接地電圧を供給する)ようにして、リーク電流による待機電力が完全に抑えられるようにしてもよいし、例えばHWE104に対してだけ、そのような電源電圧の供給停止がなされるようにしてもよい。また、停止された電源電圧の供給が開始されるタイミングも、クロック信号の供給開始タイミングよりも早くなるようにしてもよい。さらに、プロセッサシステム全体への電源投入時やリセット時などに、最初の命令コードがプリフェッチされてフラグの検出がなされるまでの間は、定格電圧が供給されるようにして、上記最初の命令コードを実行するプロセッサの確実な動作を容易に確保できるようにしてもよい。
さらに、例えば図24、図25に示すように、電源電圧制御レジスタ701aに保持されたクロック信号供給の有無を示す信号をスタンバイ/アクティブ制御信号としてCPU103およびHWE104に出力し、クロック信号の供給を停止する際に電源電圧の供給を停止するのとともに、または電源電圧の供給を停止するのに代えて、CPU103やHWE104をスタンバイ状態(バス107から切り離されて待機状態になり、内部状態は固定される。)にするようにしてもよい。さらに、クロック信号の供給は常に行われる一方、電源電圧の供給だけが停止されるようにしてもよい。
《発明の実施形態7》
上記のように電源電圧を制御するのに代えて、CPU103等が形成される半導体基板の基板電圧を制御するようにしてもよい。すなわち、半導体基板上に形成されたトランジスタの閾値電圧が高くなるように基板電圧を制御すると、回路の遅延時間は長くなる一方、トランジスタのリーク電流が小さくなる。そこで、クロック周波数が低くなって回路の遅延マージンが大きくなる際には、これに応じて閾値電圧が高くなるように基板電圧を制御することによって消費電力を低減することができる。
具体的には、本実施形態のプロセッサシステムでは、例えば図26に示すように、実施形態1(図1)の構成に加えて、基板電圧制御部801(電圧制御手段)が設けられている。上記基板電圧制御部801は、フラグ検出部101から出力されるクロック制御信号に応じて、あらかじめクロック周波数と対応させて設定された基板電圧、すなわち、クロック周波数が低いほど、閾値電圧が高くなるような基板電圧(逆バイアス電圧)をCPU103等に供給するようになっている。
このプロセッサシステムの動作は、クロック制御部106によりクロック周波数が切り替えられるのに応じて、基板電圧制御部801から出力される基板電圧が切り替えられる点を除いて、実施形態1(図5)と同じである。
上記のようにクロック周波数を低くするとともに基板電圧を制御することにより、やはり、プロセッサシステムの動作や処理能力に影響を与えることなく、一層、消費電力を小さくすることができる。
なお、上記基板電圧に関しても、実施形態6で電源電圧について説明したのと同様に、CPU103等に供給される基板電圧を互いに異ならせるようにしたりしてもよい。また、クロック信号の供給が停止される際には、例えば電源電圧と同レベルの電圧を基板電圧として印加するなどしてもよい。
《発明の実施形態8》
また、例えば図27に示すように、電源電圧制御部701と基板電圧制御部801とを両方とも設けて、電源電圧および基板電圧を共にクロック周波数に応じて制御するようにしてもよい。この場合、電源電圧制御部701および基板電圧制御部801にクロック周波数と対応して設定される電源電圧と基板電圧との組み合わせを半導体集積回路の特性等に応じて最適化することができる。
具体的には、例えば、クロック周波数が標準クロック周波数よりも低い場合に、リーク電流が比較的大きい場合には、クロック周波数に応じて許容される遅延時間の範囲内で電源電圧を低くするとともに閾値電圧が高くなるように基板に逆バイアス電圧を印加して(何れも遅延時間は長くなり、消費電力は小さくなる)、両者による消費電力の低減効果が得られるようにしてもよい。一方、リーク電流が比較的小さい場合には、電源電圧を大幅に低くする(遅延時間は長くなり、消費電力は小さくなる)一方、閾値電圧は低くなるように基板に順バイアス電圧を印加して(遅延時間は短くなり、リーク電流は大きくなる)、総じてクロック周波数に応じて許容される遅延時間を満足し、かつ、電源電圧を低くすることによる消費電力の低減効果が大きく得られるようにしてもよい。
なお、本実施形態においても、実施形態6、7で説明したように、CPU103等に供給される電源電圧や基板電圧をそれぞれ互いに異ならせるようにしたりしてもよい。また、クロック信号の供給が停止されても電源電圧は供給される場合には、例えば電源電圧と同レベルの電圧を基板電圧として印加するなどしてもよい。さらに、クロック信号の供給が停止されて電源電圧の供給も停止される際には基板電圧の供給も停止されるようにしたりしてもよい。
《発明の実施形態9》
上記のようにクロック周波数が決定されると、消費電力およびプロセッサシステムの発熱量もほぼ定まることになる。そこで、例えば、図28に示すように半導体集積回路900を冷却する冷却ファンなどを有するクーリング装置901(冷却手段、冷却制御手段)をクロック制御信号に基づいて制御するようにしてもよい。より詳しくは、上記クーリング装置901は、例えばクロック周波数と対応させて所定の制御値が登録されたテーブルを参照して、冷却ファンの回転速度を制御することにより、クロック周波数、電源電圧(これは上記のようにクロック周波数に応じて決定される。)、およびリーク電流(これはクロック周波数に応じて決定された基板電圧によって定まる。)に応じた冷却能力で半導体集積回路900を冷却するようになっている。これにより、半導体集積回路900の熱暴走を確実に防止し、かつ、冷却のために要する消費電力を小さく抑えることができる。
《発明の実施形態10》
上記の例では、複数のプロセッサ(CPU103およびHWE104)のうちの何れかを例えば最高クロック周波数で動作させる一方、他を上記最高クロック周波数よりも低いクロック周波数で動作させることによって、処理能力を低下させることなく消費電力を低減する例を示したが、複数のプロセッサに最高クロック周波数よりも低い周波数のクロック信号、および定格電圧よりも低い電源電圧を供給して並列に動作させることにより、やはり消費電力を低減するとともに、処理能力と消費電力との関係を柔軟に設定することができる。
図29は、本実施形態のプロセッサシステムの要部の構成を示すブロック図である。この例では、前記実施形態6(図22)のフラグ検出部101および命令割り当て制御部102に代えて、CPU910が設けられている。また、CPU103およびHWE104に代えて(またはこれらと伴に)、4つのプロセッサである処理エンジン911〜914が設けられている。さらに、クロック制御部106および電源電圧制御部701に代えて、クロック制御部916および電源電圧制御部917が設けられている。
上記CPU910は、上位プロセッサとしてシステム全体を制御するとともに、各命令コードに付加された、動作モードを示すモード設定情報(例えば図30に示すようなプロセッサの割り当てと電源電圧とクロック周波数との組み合わせを示す情報)を検出し、電源電圧制御信号、およびクロック制御信号を出力するようになっている。なお、モード設定情報を検出するのに代えて、前記実施形態1で説明したのと同じように、プロセッサの割り当て、電源電圧、およびクロック周波数をそれぞれ示す情報を検出するようにしてもよい。また、プロセッサの割り当てに代えて並列数を示す情報を検出し、これに基づいてプロセッサの割り当てを行うようにしてもよい。さらに、クロック周波数と電源電圧とが常に対応している場合には、何れか一方を示す情報を検出するだけでもよい。
処理エンジン911〜914は、説明の簡単化のために互いに同じ機能(例えば積和演算機能)を有しているとして説明する。上記CPU910または記憶部100と、処理エンジン911〜914との間での命令コードの転送は、バス107を介して行われるようになっている(なお、実施形態1と同様にCPU910等から直接転送されるようにしてもよい。)。
クロック制御部916は、例えば図31に示すように、実施形態1(図4)のクロック制御部106と比べて、分周器106bが1つだけ設けられている点と、セレクタ106dに代えて、周波数制御レジスタ106cの保持内容に応じた周波数のクロック信号を各処理エンジン911〜914に共通に出力するセレクタ916dを備えている点が異なっている。上記周波数制御レジスタ106cは、例えば図32に示すように周波数制御ビット106c0に0または1の値がセットされることにより、セレクタ916dに周波数がfまたはf/2のクロック信号を選択させるようになっている。
また、電源電圧制御部917は、例えば図33に示すように、実施形態6(図23)の電源電圧制御部701と同様の電源電圧制御レジスタ701aと電源701bとを備えているが、電源701bが、電源電圧制御レジスタ701aの保持内容に応じた電圧を各処理エンジン911〜914に共通に出力するようになっている点と、電源電圧制御レジスタ701aの保持内容に応じて、各処理エンジン911〜914に、それぞれスタンバイ/アクティブ制御信号を出力するようになっている点とが異なっている。より詳しくは、上記電源電圧制御レジスタ701aは、例えば図34に示すようにアクティブ制御ビット701a0〜701a3に0または1の値がセットされることにより、処理エンジン911〜914をそれぞれスタンバイ状態またはアクティブ状態にするスタンバイ/アクティブ制御信号を出力する一方、電源電圧制御ビット701a4に0または1の値がセットされることにより、電源701bに電圧がVddまたはVdd/2の電源電圧を出力させるようになっている。(なお、上記電源電圧制御レジスタ701aに保持される値に基づいて、処理エンジン911〜914をスタンバイ状態またはアクティブ状態にするのに代えて、電源電圧の供給を停止し、リーク電流を完全に遮断し得るようにしてもよい。)
上記のように構成されたプロセッサシステムでは、CPU910が命令コードに付加されたモード設定情報を検出し、電源電圧制御レジスタ701aおよび周波数制御レジスタ106cに図30に示すような値を設定することにより、動的に動作モードが変更され、各動作モードに応じた処理エンジン911〜914の割り当て、クロック周波数、および電源電圧で命令の実行がなされる。
具体的には、例えば次のような4つの動作モードにそれぞれ対応した電源電圧およびクロック周波数に制御されて演算処理が行われる。ここで、以下では説明の簡単化のために、処理エンジン911〜914は、電源電圧=Vddの場合にはクロック周波数=fで動作可能で、電源電圧=Vdd/2の場合にはクロック周波数=f/2で動作可能だとして説明する。すなわち、正確には、前記式(2)によれば電源電圧=Vdd/2、クロック周波数=f/2で動作可能になる(遅延時間tdが電源電圧がVddのときの2倍になる)ためには、閾値電圧Vtが0でなければならないことになるので、実際にはクロック周波数f/2で動作させるための電源電圧はVdd/2よりも若干高くする必要があるが、この点を考慮に入れても、大幅な消費電力の低減を図ることは可能である。
(1)Normalモード(シングルプロセッシング)では、処理エンジン911だけが、電源電圧Vdd、クロック周波数fで動作し、他の処理エンジン912〜914は、ほとんど電力を消費しないスタンバイ状態となるように、電源電圧制御レジスタ701aおよび周波数制御レジスタ106cが設定される。すなわち、複数のプロセッサで並列に実行させることができないような命令は、このNormalモードによって確実に実行させることができる。
(2)低消費モードで(並列数2)は、2つの処理エンジン911・912が、電源電圧Vdd/2、クロック周波数f/2で動作するように、電源電圧制御レジスタ701aおよび周波数制御レジスタ106cが設定される。この場合には、クロック周波数がf/2なので各処理エンジン911・912単独の処理能力はNormalモードの1/2になるが、2つの処理エンジン911・912が並列に動作することにより、全体としてNormalモードと同じ処理能力が得られる。一方、消費電力は、前記式(1)に示したように、電源電圧の2乗およびクロック周波数に比例し、また、動作するプロセッサの数に比例するので、Normalモードに比べて、(1/2)2×(1/2)×2=1/4に抑えられる。すなわち、命令コードが2つの処理エンジン911・912によって並列に実行可能である場合には、処理能力を低下させることなく、消費電力を大幅に低減することができる。
(3)Highパフォーマンスモード(並列数4)では、全ての処理エンジン911〜914が、電源電圧Vdd/2、クロック周波数f/2で動作するように、電源電圧制御レジスタ701aおよび周波数制御レジスタ106cが設定される。この場合には、各処理エンジン911〜914単独の処理能力はNormalモードの1/2になるが、4つの処理エンジン911〜914が並列に動作することにより、全体としてNormalモードの2倍の処理能力が得られるとともに、消費電力は、Normalモードに比べて、(1/2)2×(1/2)×4=1/2に抑えられる。すなわち、Normalモードよりも高い処理能力で、しかも消費電力は小さく抑えることができる。それゆえ、上記Highパフォーマンスモードは、例えば画像処理等、負荷の大きな処理を行わせるのに適している。
(4)超低消費モード(シングルプロセッシング)では、処理エンジン911だけが、電源電圧Vdd/2、クロック周波数f/2で動作するように、電源電圧制御レジスタ701aおよび周波数制御レジスタ106cが設定される。この場合には、処理能力はNormalモードの1/2になるが、消費電力は(1/2)2×(1/2)=1/8にすることができる。すなわち、高い処理能力が必要とされないような場合には、大幅に消費電力を低減することができる。
上記のように、低い電源電圧、クロック周波数で並列処理させることによって、Normalモードと同等またはそれ以上の処理能力で、かつ、消費電力を低減したり、Normalモードよりも低い処理能力だが消費電力を大幅に低減したりすることができる。しかも、並列数や、電源電圧、クロック周波数が動的に切り替えられることによって、例えば負荷の大きな処理やリアルタイム処理など高速な処理が必要な場合には高い処理能力を得るとともに消費電力を低減する一方、高速な処理が必要でない場合にはさらに大幅に消費電力を低減することができる。
なお、上記のようなモード設定情報は、各命令コードごとに付加されるのに限らず、動作モードが変化する命令コード、またはその前後の命令コードなどに付加されるだけでもよい。
また、CPU910が命令コードに付加されたモード設定情報を検出する例を示したが、実施形態1のフラグ検出部と同様のハードウェアによって検出されるようにしてもよい。
さらに、モード設定情報として、周波数制御レジスタ106cおよび電源電圧制御レジスタ701aに所定の値を保持させる命令をプログラム中に含め、その命令がCPU910に実行されることによって動作モードが設定されるようにしてもよい。この場合でも、動作モード設定のための命令の実行が他の命令の実行と並列に行われるようにすれば、実質的な処理能力の低下は招かないようにすることができる。また、上記周波数制御レジスタ106cや電源電圧制御レジスタ701aへの値の設定はバス107を介して行われるようにしてもよい。
また、上記の例では、各処理エンジン911〜914に共通の電源電圧およびクロック信号が供給される例を示したが、前記実施形態1等のように個別に供給されるようにして、独立に電源電圧やクロック周波数を制御できるようにしてもよい。
また、処理エンジン911〜914は4つに限らず、複数であればよく、また、必ずしも同じ機能を有するものでなくてもよい。
さらに、実施形態7、8で説明したのと同様に、電源電圧の制御に代えて、または電源電圧の制御と伴に閾値電圧も制御されるようにしてもよい。すなわち、クロック周波数を低くすると遅延マージンが大きくなるのに対応して電源電圧を低くすることによる消費電力低減効果と閾値電圧を高くしてリーク電流を減少させることによる消費電力低減効果との合計で最も消費電力が小さくなるようにすることができる。
《発明の実施形態11》
上記実施形態10で説明したようなモード設定情報が付加された命令コードの生成方法は特に限定されず、例えばプログラム設計者がソースプログラム中に並列演算命令や単一プロセッサ演算命令などのアセンブラ命令とともに動作モードを指示する情報を記述し、これに基づいてコンパイラ等が生成するようにしてもよいが、プログラム設計者が、プログラム全体や所定の単位のプログラムモジュール等ごとに、高い処理能力を優先させるか、または低消費電力を優先させるかを指定するだけで、その指定に基づいて生成されるようにしてもよい。以下、そのような命令コードを生成する命令列最適化装置について説明する。
この命令列最適化装置は、実施形態2で説明したのと同様に、例えばコンパイラやオプティマイザなどと称されるプログラムが実行されるコンピュータによって構成され、ソースプログラムのコンパイルが行われる際などに、図35および次のような動作によって、モード設定情報が付加された命令コードを生成するようになっている。
(S1600) まず、ソースプログラム、またはこれがコンパイルされたオブジェクトプログラム等が解析され、処理エンジン911〜914によって実行されるべき各命令または一連の(例えば10命令程度の)命令の組み合わせが並列処理可能かどうか、すなわち複数の処理エンジン911〜914に振り分けて同時に実行させことが可能かどうか、またはシングルプロセッシングだけが可能かが判別される。具体的には、例えば積和演算の繰り返しのような処理などが並列処理可能と判定される。
(S1601) 上記解析の結果、並列処理が可能であれば、Highパフォーマンスモード、または低消費モードの何れで動作させるかを決定するために(S1602)に移行する一方、並列処理が可能でなければ、超低消費モード、またはNormalモードの何れで動作させるかを決定するために(S1605)に移行する。
(S1602〜S1604) 並列処理が可能であれば、例えばコンパイル時のオプション指定などとして、処理速度を優先させる指示がなされているかどうかを判定し、処理速度優先指示がなされていれば、Highパフォーマンスモードで動作させることが決定される(S1603)一方、処理速度優先指示がなされていなければ、低消費モードで動作させることが決定される(S1604)。(さらに、並列数4で処理することが可能かどうかも判定して、可能でない場合には低消費モードが指定されるようにしてもよい。)
(S1605〜S1607) また、上記(S1601)の判定で並列処理が可能でなければ、例えばコンパイル時のオプション指定などとして、低消費電力を優先させる指示がなされているかどうかを判定し、低消費電力指示がなされていれば、超低消費モードで動作させることが決定される(S1606)一方、低消費電力指示がなされていなければ、Normalモードで動作させることが決定される(S1607)。なお、上記処理速度優先指示と低消費電力指示とは、択一的に指示されるものなので、実際には例えば処理速度優先指示がなされることによって低消費電力指示はなされていないと判定したり、処理速度優先指示がなされていないことによって低消費電力指示はなされていると判定したりするようにしてもよい。さらに、例えば高負荷処理であることを示す情報(従って処理速度が優先されるべきことが示される)など、実質的に処理速度や消費電力に対応する指示に応じて、上記のような判定がなされればよい。また、プロセッサシステムの仕様等に応じて、通常は(特に指示がない場合には)低消費モードが指定されるようにしたりしてもよい。
(S1608) 上記決定に応じたモード設定情報が命令コードに付加される。また、必要に応じて、1つまたは一連の命令コードが、並列演算命令に置き換えられる。なお、このような置き換えは、(S1601)で並列処理の可能なことが判別された後、何れの時点で行われるようにしてもよい。具体的には、例えば上記(S1603)等でモードが決定された時点で、各処理の動作モードを示すモード設定情報テーブルを作成し、解析が完了した後に、上記テーブルに基づいて、モード設定情報の付加や並列演算命令への置き換えが行われるようにしてもよい。また、実施形態10の変形例で説明したようにCPU910による命令の実行によって周波数制御レジスタ106cおよび電源電圧制御レジスタ701aに所定の値が保持されるようにするためには、そのような命令をプログラム中に追加するようにすればよい。
(S1609) ソースプログラムの全ての命令についての処理が終わるまで、上記(S1600)〜(S1608)の処理が繰り返される。
上記のようにしてモード設定情報の付加された命令コードが生成されることにより、プログラム設計者等が特に動作モードを意識することなく、処理速度と消費電力の何れを優先させるかを指定するだけで、高速な動作を行わせたり消費電力を大幅に低減したりするプログラムを得ることが容易にできる。
《発明の実施形態12》
前記実施形態3のプロセッサシステムと同様に、モード設定情報が付加されていない通常の命令コードを用いても、同様に消費電力を低減できるプロセッサシステムの例を説明する。
このプロセッサシステムのハードウェア構成は、前記実施形態10(図29)と同じで、CPU910によって実行されるプログラム(CPU910による動作モード制御のための動作)が異なる。すなわち、CPU910は、図36に示すように、動作モードの制御に関しては実施形態11の命令列最適化装置と似たような動作をするようになっている。
(S1700) まず、CPU910は、通常のCPUが処理の高速化のために先読みするのと同様に、記憶部100に記憶されている命令コードを数命令分に(例えば10命令分程度)先読みし、各命令または一連の命令の組み合わせが並列処理可能かどうかが判別される。基本的な解析動作自体は、実施形態11(図35)の(S1600)と同様である。ここで、先読みする命令数は特に限定されないが、多ければ、多少複雑な繰り返し処理などでも並列処理が可能になる一方、解析に要する時間が長くなったり、ハードウェアによって解析される場合には回路規模が大きくなったりするので、これらのバランスで設定されればよい。
(S1601、S1607) 上記解析の結果、並列処理が可能かどうかを判定し、並列処理が可能でなければ、(S1607)に移行して、Normalモードで動作させることを決定する一方、並列処理が可能であれば、Highパフォーマンスモード、または低消費モードの何れで動作させるかを決定するために(S1702)に移行する。
(S1702) 並列処理が可能であれば、命令コードによって示される処理が高負荷処理であるかどうかを判定する。具体的には、例えばループ処理(特に多重ループ)が含まれるかどうかや、ループ回数が所定以上であるかなどが判定される。
(S1603、S1604) 上記(S1702)の判定に応じて、高負荷処理であれば、Highパフォーマンスモードで動作させることが決定される(S1603)一方、高負荷処理でなければ、低消費モードで動作させることが決定される(S1604)。
(S1708) 上記決定に応じたクロック制御信号、および電源電圧制御信号がクロック制御部916および電源電圧制御部917に出力され、周波数制御レジスタ106cおよび電源電圧制御レジスタ701aに保持されることによって、動作モードが設定されるとともに、必要に応じて、1つまたは一連の命令コードが、並列演算命令に置き換えられる。
(S1709) 設定された動作モードで命令の実行が行われ、以下、(S1700)以降の動作が繰り返される。
上記のように、モード設定情報が付加されていないプログラムであっても、実行時に処理負荷等に応じて自動的に動作モードが決定され、クロック周波数や電源電圧が設定されたり並列演算命令への置き換えがなされたりするので、一般的なコンパイラによって生成された命令コードを実行させる場合であっても、高速な動作を行わせたり消費電力を大幅に低減したりするなど、最適な動作モードで実行させることが容易にできる。
なお、上記のようにプロセッサシステムによってだけ動作モードが決定されるのに限らず、(プログラム開発者の指示などに基づく)モード設定情報や、高処理能力と低消費電力との何れを優先させるかの指定が検出された場合には、これらに応じて動作モードが決定されるようにしたり、並列処理が可能かどうかだけはプロセッサシステムが判定して動作モードが決定されるようにしたりしてもよい。
《発明の実施形態13》
それぞれのプロセッサを構成するトランジスタの閾値が互いに異なるプロセッサシステムの例を説明する。このプロセッサシステムは、図37に示すように、前記実施形態10(図29)の処理エンジン913・914に代えて、処理エンジン923・924を備えている。また、電源電圧制御部917に代えて、電源電圧制御部927を備えている。
上記処理エンジン923・924は、処理エンジン911・912と同一の機能を有しているが、構成するトランジスタの閾値(例えば0.6V)が、処理エンジン911・912を構成するトランジスタの閾値(例えば0.3V)よりも高く設定されている。なお、このような閾値の設定は、例えば実施形態7で説明したように半導体基板電圧を制御することにより動的に行うこともできるが、ここでは、不純物濃度を設定することなどによって固定的に行われているとして説明する。また、各処理エンジン911・912・923・924は、それぞれ上記のような高閾値または低閾値のトランジスタだけによって構成されるようにしてもよいが、これに限るものではない。
また、電源電圧制御部927は、各処理エンジン911・912・923・924への電源電圧供給の有無、および供給電圧を独立に制御し得るようになっている。具体的には、例えば図38および図39に示すように、電源701bが、電源電圧制御レジスタ701aの電源遮断制御ビット701a0〜701a3に保持された値によって電源減圧供給の有無を制御され、電源電圧制御ビット701a4〜701a7に保持された値によって供給電圧を制御されるようになっている。
上記電源電圧制御レジスタ701a、およびクロック制御部916の周波数制御レジスタ106cへの各動作モードに応じた値の設定は、前記実施形態10、12と同様に、命令コードに付加されたモード設定情報、または命令コードの解析結果に基づいたCPU910の動作によって行われる。そこで、これらのレジスタに例えば図40に示すような値が設定されることにより、動的に動作モードが変更され、各動作モードに応じた処理エンジン911・912・923・924の割り当て、クロック周波数、および電源電圧で命令の実行がなされる。
具体的には、例えば次のように、3つの動作モードにそれぞれ対応した電源電圧およびクロック周波数に制御されて演算処理が行われる。なお、実施形態10と同様の超低消費モードでの動作も行われるようにしてもよい。(すなわち、どのような動作モードが決定され得るかは、プロセッサシステムに必要とされる消費電力や処理能力などに応じて設定されればよい。)ここで、以下では、上記高閾値のトランジスタ小よって構成されている処理エンジン923・924は、例えば電源電圧がVddのときにf/2のクロック周波数で動作が可能だとして説明する。
(1)Normalモード(シングルプロセッシング)では、低閾値のトランジスタを用いた処理エンジン911だけが、電源電圧Vdd、クロック周波数fで動作し、他の処理エンジン912・923・924は、電源電圧の供給が停止されるように、電源電圧制御レジスタ701aおよび周波数制御レジスタ106cが設定される。これによって、処理エンジン912・923・924ではリーク電流による待機電力の消費は生じない。
(2)低リークモードで(並列数2)は、高閾値のトランジスタを用いた2つの処理エンジン923・924が、電源電圧Vdd、クロック周波数f/2で動作するように、電源電圧制御レジスタ701aおよび周波数制御レジスタ106cが設定される。この場合には、2つの処理エンジン923・924がf/2のクロック周波数で動作することにより、全体としてNormalモードと同じ処理能力が得られる。一方、消費電力は、リーク電流を考慮しなければ、2つの処理エンジン923・924がf/2のクロック周波数で動作するので、合計でNormalモードと同じになるが、これらの処理エンジン923・924の動作中のリーク電流(アクティブリーク電流)は、高閾値トランジスタが用いられていることによって、低閾値トランジスタが用いられる場合に比べ、各処理エンジン923・924あたり例えば27%程度になり、その分、全体の消費電力が小さく抑えられる。
(3)Highパフォーマンスモード(並列数4)では、処理エンジン911・912の電源電圧はVdd/2、処理エンジン923・924の電源電圧はVdd、クロック周波数は何れもf/2となるように、電源電圧制御レジスタ701aおよび周波数制御レジスタ106cが設定される。この場合には、並列数が4、クロック周波数がf/2であることによって、全体でNormalモードの2倍の処理能力が得られる。一方、消費電力は、処理エンジン911・912については、Vdd/2の電源電圧、f/2のクロック周波数で並列に動作することによって、Normalモードに比べて、(1/2)2×(1/2)×2=1/4になる。また、処理エンジン923・924については、上記低リークモードの場合と同じく、高閾値電圧のトランジスタが用いられるとともに、Vddの電源電圧、f/2のクロック周波数で並列に動作することによって、アクティブリーク電流が大幅に低減される。したがって、全体の消費電力が小さく抑えられる。
上記のように、高閾値トランジスタを用いて構成された処理エンジン923・924を設け、低いクロック周波数で並列に動作させることによってアクティブリーク電流を小さくすることができるので、特に、アクティブリーク電流の影響が大きい場合には、大幅に消費電力を低減することが容易にできる。また、高負荷処理に対しては低閾値トランジスタを用いて構成された処理エンジン911・912も用い、電源電圧、周波数を下げることで消費電力を抑えつつ、性能を向上させることができる。しかも、並列処理ができない場合でも、処理エンジン911が低閾値トランジスタを用いて構成され、Vdd、fの電源電圧、クロック周波数で動作することによって、処理性能を確保することができる。
《発明の実施形態14》
複数の処理エンジンのうちの何れかに故障がある場合でも、処理能力を確保するとともに消費電力を低減できるプロセッサシステムについて説明する。
このプロセッサシステムは、図41に示すように、実施形態10(図29)の電源電圧制御部917に代えて、実施形態13(図38)と同じ電源電圧制御部927を備え、処理エンジン911〜914への電源電圧供給の有無、および供給電圧を独立に制御し得るようになっている。また、クロック制御部916に代えて、クロック制御部936を備え、さらに、書き込み可能な不揮発性メモリであるフラッシュメモリ931(故障情報保持手段)を備えている。
上記クロック制御部936は、電源電圧制御部927と同様に各処理エンジン911〜914に供給するクロック信号の周波数を独立に制御し得るようになっている。具体的には、例えば図42、図43に示すように、セレクタ936dが、周波数制御レジスタ106cの各周波数制御ビット106c0〜106c3に保持される値に応じた周波数のクロック信号を各処理エンジン911〜914に供給するようになっている。
また、フラッシュメモリ931は、各処理エンジン911〜914が、それぞれ正常に動作(完動)するか、または故障があるかを示す故障情報を記憶するようになっている。すなわち、例えば製造時に、LSIテスタを用いた初期評価などによって各処理エンジン911〜914の動作が検査され、その結果が保持される。なお、フラッシュメモリに限らず、例えばFeRAMなど、他の種々の不揮発性メモリを用いてもよい。
このプロセッサシステムでは、前記実施形態10、12と同様に、命令コードに付加されたモード設定情報、または命令コードの解析結果に基づいたCPU910の動作により、電源電圧制御部927の電源電圧制御レジスタ701aおよびクロック制御部936の周波数制御レジスタ106cに所定の値が設定されて動的に動作モードが変更され、各動作モードに応じた処理エンジン911〜914の割り当て、電源電圧、およびクロック周波数で命令の実行がなされる。ここで、上記処理エンジン911〜914の割り当てにあたっては、フラッシュメモリ931に保持された故障情報が参照され、故障している処理エンジンには割り当てられないようになっている。
具体的には、例えば前記実施形態10で説明したような4つの動作モードで動作する場合、処理エンジン911が故障していたとすると、Normalモードや超低消費モードにする際には、処理エンジン912〜914のうちの何れか1つに、電圧Vdd、周波数f、または電圧Vdd/2、周波数f/2の電源電圧およびクロック信号が供給され、他の処理エンジン(少なくとも処理エンジン911)への電源電圧の供給は停止される(故障したエンジンが切り離される)。また、低消費モードにする際には、同様に処理エンジン912〜914のうちの何れか2つに、電圧Vdd/2、周波数f/2の電源電圧およびクロック信号が供給され、やはり少なくとも処理エンジン911への電源電圧の供給は停止される。
また、Highパフォーマンスモードにする際には、例えば処理エンジン912を電源電圧Vdd、クロック周波数fで動作させ、処理エンジン913・914を電源電圧Vdd/2、クロック周波数f/2で動作させるとともに処理エンジン911への電源電圧の供給を停止させることにより、すなわち、電源電圧制御部927の電源電圧制御レジスタ701a、およびクロック制御部936の周波数制御レジスタ106cに、それぞれb’11001110またはb’1100(「b’」は続く値が2進表記であることを示す。)を設定することにより、消費電力はNormalモードの1.25倍になるが、Normalモードの2倍の処理能力を保証することができる。(また、3つの処理エンジン912〜914を共に電源電圧Vdd/2、クロック周波数f/2で動作させて、処理能力は1.5倍になるが消費電力は0.75倍に抑えられるようにする(低消費電力を優先させる)ことなどもできる。この場合には、必ずしも電源電圧やクロック信号周波数の制御を各処理エンジン911〜914で独立に制御できるようにしなくてもよい。)
上記のように、故障している処理エンジンがあっても、それを補償する並列動作を行わせることにより、プロセッサシステムの性能を保証するとともに消費電力をある程度低減することができ、製造歩留まりを向上させることができる。
なお、上記の例では1つの処理エンジンだけが故障している場合の例を示したが、2つ故障している場合でも、Normalモードや超低消費モード、低消費モードに関しては、やはり同様に処理能力および低消費電力を確保することができる。また、Highパフォーマンスモードに関しては、正常に動作する2つの処理エンジンを電源電圧Vdd、クロック周波数fで動作させて処理能力を確保するようにしても良いし、一方だけをVdd/2、f/2にしたり、Highパフォーマンスモードを有しないプロセッサシステムとしたりしてもよい。
また、故障している処理エンジンについては電源電圧を遮断する例を示したが、実施形態10で説明したようにスタンバイ状態にするようにしてもよい。ただし、電源ラインがショートするような故障を考慮する場合には、電源電圧を遮断することがシステムの安定性などの点で好ましい。また、クロック信号ラインがショートするような故障も考慮して、クロック信号の供給も停止し得るようにしてもよい。
《発明の実施形態15》
上記のように製造時などにだけテストするのに限らず、電源がONになるごとなどに、プロセッサシステム自体で処理エンジンの動作不良を検出して、故障している処理エンジンに演算処理が割り当てられないようにしてもよい。このプロセッサシステムには、例えば図44に示すように、実施形態14のフラッシュメモリ931に代えて故障レジスタ941(故障情報保持手段)が設けられるとともに、さらに、パターン発生器942と、比較回路943(故障検出手段)とが設けられている。
上記故障レジスタ941は、実施形態14のフラッシュメモリ931と同じく、各処理エンジン911〜914が、それぞれ正常に動作(完動)するか、または故障があるかを示す故障情報を記憶するものであるが、不揮発性メモリである必要はない。なお、この故障レジスタ941はバス107に接続されるのに限らず、CPU910から読み出し得るようになっていれば、電源電圧制御部927やクロック制御部936の内部に設けられるなどしてもよい。上記故障レジスタ941は、具体的には、例えば図45に示すように、各処理エンジン911〜914に対応する故障ビットを有し、それぞれの故障ビットに各処理エンジン911の故障の有無に応じた値が保持されるようになっている。
パターン発生器942は、処理エンジン911〜914のテスト動作時に、ランダムテストパターン、すなわち、ビットパターンおよびその時間的変化がランダムな信号をバス107に出力するようになっている。
比較回路943は、上記ランダムテストパターンが各処理エンジン911〜914に入力されたときに、各処理エンジン911〜914から出力される信号、例えば処理エンジン911〜914内部の所定のテストポイントの信号や、バス107またはI/Oバス等
に出力される信号などを比較し、これらが一致するかどうかにより故障している処理エンジン911〜914を検出して、故障情報を故障レジスタ941に保持させるようになっている。
処理エンジン911〜914の検査は、具体的には、例えば電源が投入された直後の初期化時や、処理エンジン911〜914による演算処理が行われる合間の待機中にOSによるシステム処理が行われる際などに、以下のようにして行われる。すなわち、例えば電圧Vdd、周波数fの電源電圧およびクロック信号が各処理エンジン911〜914に供給された状態でパターン発生器942がランダムテストパターンをバス107に出力する。比較回路943は、例えば、処理エンジン911・912、処理エンジン913・914、処理エンジン911・913、および処理エンジン912・914のそれぞれの組について出力信号を比較し、比較結果が一致する組と一致しない組との組み合わせによって、故障している処理エンジン911〜914を検出し、検出結果を故障レジスタ941に保持させる。ここで、処理エンジン911・914などについても比較して、2つ以上の故障を検出できるようにし、実施形態14で説明したように2つ以上の処理エンジンが故障している場合にHighパフォーマンスモードを有しないプロセッサシステムが構成されるようにしたりしてもよい。さらに、クロック周波数fで動作しなくても、f/2でなら動作するかなども検査するようにしてもよい。(例えば1つの処理エンジンがf/2でだけ動作可能な場合であれば、その処理エンジンをNormalモードにさえ割り当てなければ、Highパフォーマンスモードでの動作も、実施形態10と同じように行わせることができる。)
なお、テストパターンはランダムに発生させるものに限らず、あらかじめ設定されたテストパターンと、そのテストパターンが処理エンジン911〜914に入力された場合に出力されるべき出力パターン(期待値)とをフラッシュメモリなどの不揮発性メモリに記憶させておき、上記期待値と実際の出力パターンとを比較して、故障している処理エンジン911〜914を検出するようにしてもよい。また、上記のようなランダムテストパターン等がプロセッサシステムの外部から与えられるようにするなどしてもよい。さらに、所定のテストプログラムを実行させて、その演算結果で動作不良を検出するなどしてもよい。
上記のようにして得られた故障情報に基づく処理エンジン911〜914の割り当て、電源電圧、およびクロック周波数の制御は、前記実施形態14で説明したのと同じである。このように、プロセッサシステム自体で処理エンジンの故障を検出できるようにすることによって、初期不良だけでなく経時変化による故障などに対してもシステムの安定性、信頼性を向上させて性能を保証することができる。
なお、上記実施形態1〜9では、それぞれ1つずつのCPU103とHWE104とが設けられ、また、実施形態10〜15では同一の機能を有する処理エンジン911〜914が設けられる例を示したが、これらに限らず、それぞれ、同一のまたは異なる機能を有するプロセッサが複数設けられるなど、種々の複数のプロセッサが設けられる場合でも同様の効果を得ることができる。
また、実施形態1等においては、命令コードにおけるプロセッサの割り当てやクロック周波数を示す情報として命令コードに付加されたフラグやモード設定情報が用いられる例を示したが、これに限らず、例えば、命令コード自体によってCPU103またはHWE104の何れで実行される命令かや動作モードなどが判別されるようにするなど、実質的にプロセッサの割り当て等を示す情報がプログラム中に含まれていればよい。
また、上記実施形態6〜9ではクロック制御信号に基づいて直接電源電圧制御部701等が制御される例を示したが、これに限らず、クロック周波数に対応して電源電圧等を適切に設定し得る制御信号に基づいて制御されるように構成されていればよい。
また、電源電圧やクロック周波数のレベルは上記のように2段階または3段階(供給を停止する場合も含めると3段階または4段階)に限らず、種々に設定することができ、段階を多くすれば、動作モードの組み合わせをより多くしたりして、より細かい動作条件の設定をすることができる。
また、上記各実施形態で説明した各構成要素は、論理的に可能な範囲で種々組み合わせてもよい。具体的には、例えば、実施形態6〜15で説明したような電源電圧や基板電圧を制御する構成や、冷却手段を制御する構成は、他の実施形態のプロセッサシステムに適用するなどしてもよい。また、例えば、実施形態1(図1)のフラグ検出部101と実施形態3(図14)の命令解析部402等を共に設けて各実施形態の機能を併せ持つようにし、実行する命令のフラグ等の有無に係らず、プロセッサの割り当てやクロック周波数の制御を行えるようにしてもよい。
本発明にかかるプロセッサシステム、命令列最適化装置、および命令列最適化プログラムは、プロセッサごとに、実行される命令に応じてクロック周波数を制御することにより、処理能力を低下させることなく、消費電力を低減することができ、さらに、上記クロック周波数の制御と対応させて、各プロセッサに供給される電源電圧や基板電圧を制御することにより、一層、消費電力を低減することができるという効果を有し、例えば中央処理装置(CPU)や、ハードウェア演算エンジン(HWE)、コプロセッサ、DSP(digital signal processor)などと称される演算処理装置等の同種または異種の複数のプロセッサを備え、並列に演算処理が可能なプロセッサシステム等として有用である。
実施形態1のプロセッサシステムの要部の構成を示すブロック図である。 命令コードの例を示す説明図である。 命令コードに付加されたクロック制御フラグの例を示す説明図である。 実施形態1のクロック制御部106の具体的な構成を示すブロック図である。 実施形態1のプロセッサシステムの動作を示すフローチャートである。 実施形態1のプロセッサシステムの動作状態を示す説明図である。 実施形態2の命令列最適化装置の構成を示すブロック図である。 図8(a)(b)は、実施形態2の命令列最適化装置によるプロセッサへの命令への割り当てとクロック周波数と実行時間との関係の例を示す説明図である。 実施形態2の命令列最適化装置の動作を示すフローチャートである。 実施形態2の変形例の命令列最適化装置の構成を示すブロック図である。 実施形態2の変形例の命令列最適化装置の動作を示すフローチャートである。 実施形態2の他の変形例の命令列最適化装置の動作を示すフローチャートである。 図12(a)〜(e)は、命令の実行順序とクロック周波数と実行時間との関係の例を示す説明図である。 実施形態3のプロセッサシステムの要部の構成を示すブロック図である。 実施形態3のプロセッサシステムの動作を示すフローチャートである。 実施形態3の変形例のプロセッサシステムの要部の構成を示すブロック図である。 実施形態3の変形例のプロセッサシステムの動作を示すフローチャートである。 実施形態4のプロセッサシステムの要部の構成を示すブロック図である。 実施形態4のプロセッサシステムの動作を示すフローチャートである。 実施形態5の命令列最適化装置の構成を示すブロック図である。 実施形態5の命令列最適化装置の動作を示すフローチャートである。 実施形態6のプロセッサシステムの要部の構成を示すブロック図である。 実施形態6の電源電圧制御部701の具体的な構成を示すブロック図である。 実施形態6の変形例のプロセッサシステムの要部の構成を示すブロック図である。 実施形態6の変形例の電源電圧制御部701の具体的な構成を示すブロック図である。 実施形態7のプロセッサシステムの要部の構成を示すブロック図である。 実施形態8のプロセッサシステムの要部の構成を示すブロック図である。 実施形態9のプロセッサシステムの要部の構成を示すブロック図である。 実施形態10のプロセッサシステムの要部の構成を示すブロック図である。 実施形態10の動作モードと、プロセッサの割り当て、電源電圧、およびクロック周波数との対応を示す説明図である。 実施形態10のクロック制御部916の具体的な構成を示すブロック図である。 実施形態10の周波数制御レジスタ106cの構成を示す説明図である。 実施形態10の電源電圧制御部917の具体的な構成を示すブロック図である。 実施形態10の電源電圧制御レジスタ701aの構成を示す説明図である。 実施形態11の命令列最適化装置の動作を示すフローチャートである。 実施形態12のプロセッサシステムの動作を示すフローチャートである。 実施形態13のプロセッサシステムの要部の構成を示すブロック図である。 実施形態13の電源電圧制御部927の具体的な構成を示すブロック図である。 実施形態13の電源電圧制御レジスタ701aの構成を示す説明図である。 実施形態13の動作モードと、プロセッサの割り当て、電源電圧、およびクロック周波数との対応を示す説明図である。 実施形態14のプロセッサシステムの要部の構成を示すブロック図である。 実施形態14のクロック制御部936の具体的な構成を示すブロック図である。 実施形態14の周波数制御レジスタ106cの構成を示す説明図である。 実施形態15のプロセッサシステムの要部の構成を示すブロック図である。 実施形態15の故障レジスタ941の構成を示す説明図である。
符号の説明
100 記憶部
101 フラグ検出部
102 命令割り当て制御部
103 CPU
104 HWE
105 SRAM
106 クロック制御部
106a クロックジェネレータ
106b 分周器
106c 周波数制御レジスタ
106c0〜106c3 周波数制御ビット
106d セレクタ
107 バス
201 記憶装置
202 命令解析部
203 標準実行時間推定部
204 換算実行時間算出部
205 割り当て・クロック周波数決定部
206 フラグ付加部
311 割り当て決定部
312 クロック周波数決定部
402 命令解析部
403 標準実行時間推定部
404 換算実行時間算出部
405 割り当て・クロック周波数決定部
511 割り当て決定部
512 クロック周波数決定部
601 フラグ検出部
602 命令解析部
701 電源電圧制御部
701a 電源電圧制御レジスタ
701a0〜701a3 アクティブ制御ビット、電源遮断制御ビット
701a4〜701a7 電源電圧制御ビット
701b 電源
706 フラグ付加部
801 基板電圧制御部
900 半導体集積回路
901 クーリング装置
910 CPU
911〜914 処理エンジン
916 クロック制御部
916d セレクタ
917 電源電圧制御部
923・924 処理エンジン
927 電源電圧制御部
931 フラッシュメモリ
936 クロック制御部
936d セレクタ
941 故障レジスタ
942 パターン発生器
943 比較回路

Claims (15)

  1. 複数のプロセッサを備えたプロセッサシステムであって、
    上記プロセッサに実行させる命令を読み込んで、上記命令が実行される上記プロセッサの割り当てを制御する割り当て制御手段と、
    上記割り当てにより各上記プロセッサに実行される上記命令に応じて、上記各プロセッサに供給するクロック信号の周波数を制御するクロック制御手段と、
    上記クロック制御手段による上記クロック信号の周波数の制御に対応して、上記各プロセッサに供給する電源電圧、および上記各プロセッサを構成するトランジスタの基板ノードに供給する基板電圧のうちの少なくとも何れか1つを制御する電圧制御手段とを備え、
    上記クロック制御手段、および電圧制御手段は、上記割り当て制御手段によって複数のプロセッサに並列して命令を実行させる際に、それぞれ、所定の基準の周波数よりも低い周波数のクロック信号、および所定の基準電圧よりも低い電源電圧または所定の基準の閾値電圧よりも高い閾値電圧を与える基板電圧を供給するように構成されていることを特徴とするプロセッサシステム。
  2. 請求項1のプロセッサシステムであって、
    上記割り当て制御手段、クロック制御手段、および電圧制御手段は、上記命令に含まれる制御情報に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を制御するように構成されていることを特徴とするプロセッサシステム。
  3. 請求項2のプロセッサシステムであって、
    上記制御情報は、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧の複数種類の組み合わせのうちの何れかを示す情報であることを特徴とするプロセッサシステム。
  4. 請求項1のプロセッサシステムであって、
    さらに、上記命令が、複数のプロセッサによって並列に実行可能かどうかを解析する命令解析手段を備え、
    上記割り当て制御手段、クロック制御手段、および電圧制御手段は、上記命令解析手段の解析結果に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を制御するように構成されていることを特徴とするプロセッサシステム。
  5. 請求項4のプロセッサシステムであって、
    上記命令解析手段は、さらに、上記命令による処理が所定の高負荷処理であるかどうかを解析するように構成されていることを特徴とするプロセッサシステム。
  6. 請求項5のプロセッサシステムであって、
    上記所定の高負荷処理は、所定回数以上のループ処理を含むことを特徴とするプロセッサシステム。
  7. 請求項2および請求項4のうちの何れか1項のプロセッサシステムであって、
    上記複数のプロセッサは、所定の上記基板電圧に対して、第1の閾値電圧を有するトランジスタを含むプロセッサと、上記第1の閾値電圧よりも高い第2の閾値電圧を有するトランジスタを含むプロセッサとを含み、
    上記割り当て制御手段、クロック制御手段、および電圧制御手段は、上記命令に含まれる制御情報または上記命令解析手段の解析結果、および各プロセッサに含まれるトランジスタの閾値電圧に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を制御するように構成されていることを特徴とするプロセッサシステム。
  8. 請求項1のプロセッサシステムであって、
    上記電圧制御手段は、上記割り当て制御手段によって命令の実行を割り当てられないプロセッサへの電源電圧の供給を停止させるように構成されていることを特徴とするプロセッサシステム。
  9. 請求項1のプロセッサシステムであって、
    さらに、上記各プロセッサが正常に動作するかどうかを示す情報を保持する故障情報保持手段を備え、
    上記割り当て制御手段は、正常に動作するプロセッサにだけ、命令の実行を割り当てるように構成されていることを特徴とするプロセッサシステム。
  10. 請求項9のプロセッサシステムであって、
    さらに、上記各プロセッサにテスト動作をさせて各プロセッサが正常に動作するかどうかを検出する故障検出手段を備えたことを特徴とするプロセッサシステム。
  11. 請求項10のプロセッサシステムであって、
    上記故障検出手段は、各プロセッサに所定のテストプログラムを実行させ、その実行結果に基づいて、正常に動作するかどうかを検出するように構成されていることを特徴とするプロセッサシステム。
  12. 複数のプロセッサを備えたプロセッサシステムによって実行される命令列を最適化する命令列最適化装置であって、
    上記命令列における各命令が、複数のプロセッサによって実行可能かどうかを解析する命令解析手段と、
    上記命令解析手段の解析結果、および消費電力または処理能力を指示する情報に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を示す制御情報を上記命令列に付加する制御情報付加手段と、
    を備えたことを特徴とする命令列最適化装置。
  13. 請求項12の命令列最適化装置であって、
    上記制御情報付加手段は、さらに、1つのプロセッサによって実行されることを示す命令を、複数のプロセッサによって並列に実行されることを示す命令に置き換えるように構成されていることを特徴とする命令列最適化装置。
  14. 複数のプロセッサを備えたプロセッサシステムによって実行される命令列を最適化する命令列最適化プログラムであって、
    上記命令列における各命令が、複数のプロセッサによって実行可能かどうかを解析する命令解析ステップと、
    上記命令解析ステップによる解析結果、および消費電力または処理能力を指示する情報に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を示す制御情報を上記命令列に付加する制御情報付加ステップと、
    をコンピュータに実行させることを特徴とする命令列最適化プログラム。
  15. 請求項14の命令列最適化プログラムであって、
    上記制御情報付加ステップは、さらに、1つのプロセッサによって実行されることを示す命令を、複数のプロセッサによって並列に実行されることを示す命令に置き換えることを特徴とする命令列最適化プログラム。
JP2003366042A 2003-10-27 2003-10-27 プロセッサシステム Expired - Fee Related JP4549652B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2003366042A JP4549652B2 (ja) 2003-10-27 2003-10-27 プロセッサシステム
US10/971,122 US7624295B2 (en) 2003-10-27 2004-10-25 Processor system, instruction sequence optimization device, and instruction sequence optimization program
CNB2004100871066A CN1322397C (zh) 2003-10-27 2004-10-27 处理器系统、指令序列优化装置和指令序列优化程序

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003366042A JP4549652B2 (ja) 2003-10-27 2003-10-27 プロセッサシステム

Publications (3)

Publication Number Publication Date
JP2005128937A true JP2005128937A (ja) 2005-05-19
JP2005128937A5 JP2005128937A5 (ja) 2006-10-12
JP4549652B2 JP4549652B2 (ja) 2010-09-22

Family

ID=34543761

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003366042A Expired - Fee Related JP4549652B2 (ja) 2003-10-27 2003-10-27 プロセッサシステム

Country Status (3)

Country Link
US (1) US7624295B2 (ja)
JP (1) JP4549652B2 (ja)
CN (1) CN1322397C (ja)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007219759A (ja) * 2006-02-15 2007-08-30 Fujitsu Ltd マルチプロセッシングシステム
JP2008059054A (ja) * 2006-08-29 2008-03-13 Matsushita Electric Ind Co Ltd プロセッサシステム
JP2008123531A (ja) * 2007-11-21 2008-05-29 Matsushita Electric Ind Co Ltd 半導体集積回路装置
JP2009003946A (ja) * 2005-07-29 2009-01-08 Sony Computer Entertainment Inc タスク共有方法およびマルチプロセッサシステム
JP2009503728A (ja) * 2005-08-02 2009-01-29 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド マルチプルコアプロセッサの1以上のコアのワークロードパフォーマンスの増加
JP2009110385A (ja) * 2007-10-31 2009-05-21 Hitachi Ltd データ処理システム
WO2010073463A1 (ja) * 2008-12-25 2010-07-01 パナソニック株式会社 プログラム変換装置およびプログラム変換方法
US7757062B2 (en) 2006-03-13 2010-07-13 Panasonic Corporation Semiconductor integrated circuit apparatus
JP2010529548A (ja) * 2007-06-04 2010-08-26 エヌエックスピー ビー ヴィ 電源管理集積回路
JP2012027952A (ja) * 2011-11-07 2012-02-09 Fujitsu Semiconductor Ltd シミュレーション装置
WO2012090376A1 (ja) * 2010-12-27 2012-07-05 パナソニック株式会社 マルチチップシステム、通信機器、映像音声装置および自動車
JP2012150815A (ja) * 2011-01-14 2012-08-09 Apple Inc 複数の回路における性能パラメータの整合
CN102656539A (zh) * 2009-12-16 2012-09-05 高通股份有限公司 用于基于所推断的工作负载并行性控制中央处理单元功率的系统和方法
JP2013513898A (ja) * 2009-12-16 2013-04-22 クアルコム,インコーポレイテッド 温度に基づいてマルチコア中央処理装置内の複数のコアを動的に制御するためのシステムおよび方法
US8650426B2 (en) 2009-12-16 2014-02-11 Qualcomm Incorporated System and method for controlling central processing unit power in a virtualized system
US8689037B2 (en) 2009-12-16 2014-04-01 Qualcomm Incorporated System and method for asynchronously and independently controlling core clocks in a multicore central processing unit
US8909962B2 (en) 2009-12-16 2014-12-09 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
JP2015138281A (ja) * 2014-01-20 2015-07-30 キヤノン株式会社 情報処理装置及び情報処理装置の制御方法
US9104411B2 (en) 2009-12-16 2015-08-11 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US9128705B2 (en) 2009-12-16 2015-09-08 Qualcomm Incorporated System and method for controlling central processing unit power with reduced frequency oscillations
US9176572B2 (en) 2009-12-16 2015-11-03 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
JP2017515230A (ja) * 2014-04-30 2017-06-08 クアルコム,インコーポレイテッド グラフィックスフレーム処理において電力消費を低減させるためのcpu/gpu dcvs相互最適化

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005102047A (ja) * 2003-09-26 2005-04-14 Renesas Technology Corp クロック入力回路
CN100428114C (zh) * 2005-09-15 2008-10-22 中芯国际集成电路制造(上海)有限公司 降低功耗的自适应电源系统与方法
KR101282139B1 (ko) 2006-09-11 2013-07-04 삼성전자주식회사 별도 버튼을 이용하여 성능모드 변경이 가능한컴퓨터시스템 및 그 제어방법
JP4894915B2 (ja) * 2007-03-29 2012-03-14 富士通株式会社 情報処理装置設計方法、情報処理装置設計プログラム
US20100287393A1 (en) * 2007-04-23 2010-11-11 Artur T Burchard Electronic device and method of performing a power management in an electronic device
JP4975544B2 (ja) * 2007-07-20 2012-07-11 富士通セミコンダクター株式会社 シミュレーション装置及びプログラム
JP5459207B2 (ja) * 2008-06-30 2014-04-02 富士通株式会社 情報処理装置の性能調整装置及び方法
US8516293B2 (en) * 2009-11-05 2013-08-20 Novell, Inc. System and method for implementing a cloud computer
US8255010B2 (en) * 2008-09-17 2012-08-28 Qualcomm Incorporated Methods and systems for state-driven power savings for WiMAX
US8028181B2 (en) * 2008-09-19 2011-09-27 Intel Corporation Processor power consumption control and voltage drop via micro-architectural bandwidth throttling
US8289981B1 (en) * 2009-04-29 2012-10-16 Trend Micro Incorporated Apparatus and method for high-performance network content processing
US9529864B2 (en) * 2009-08-28 2016-12-27 Microsoft Technology Licensing, Llc Data mining electronic communications
US20110145559A1 (en) * 2009-12-16 2011-06-16 Thomson Steven S System and method for controlling central processing unit power with guaranteed steady state deadlines
US8627021B2 (en) * 2011-08-31 2014-01-07 Qualcomm Incorporated Method and apparatus for load-based prefetch access
EP2775395B1 (en) * 2013-03-07 2020-11-25 Nxp B.V. Integrated circuit, electronic device and instruction scheduling method
EP2927806B1 (en) * 2014-04-01 2018-12-26 Nxp B.V. Integrated circuit, electronic device and ic operation method
US9678529B2 (en) * 2014-09-02 2017-06-13 Nvidia Corporation Efficiency-based clock frequency adjustment
CN105653004A (zh) * 2014-11-12 2016-06-08 鸿富锦精密工业(深圳)有限公司 电源控制装置
JP6072090B2 (ja) * 2015-01-16 2017-02-01 京セラドキュメントソリューションズ株式会社 情報処理装置、データ処理方法
GB2539189B (en) * 2015-06-05 2019-03-13 Advanced Risc Mach Ltd Determining a predicted behaviour for processing of instructions
US10579125B2 (en) * 2016-02-27 2020-03-03 Intel Corporation Processors, methods, and systems to adjust maximum clock frequencies based on instruction type
JP6823251B2 (ja) * 2016-10-13 2021-02-03 富士通株式会社 情報処理装置、情報処理方法及びプログラム
JP7166884B2 (ja) * 2018-11-14 2022-11-08 キヤノン株式会社 ソフトウェアの改ざんを検知することが可能な情報処理装置
US11355005B2 (en) * 2019-07-22 2022-06-07 Battelle Memorial Institute Aquatic organism tracking devices, systems and associated methods
CN114222084B (zh) * 2021-12-01 2023-05-23 联想(北京)有限公司 一种控制方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002169790A (ja) * 2000-12-01 2002-06-14 Sharp Corp 半導体集積回路
JP2003131873A (ja) * 1995-05-02 2003-05-09 Hitachi Ltd マイクロコンピュータ
JP2003263311A (ja) * 2002-03-07 2003-09-19 Seiko Epson Corp 並列演算処理装置及び並列演算処理用の命令コードのデータ構造、並びに並列演算処理用の命令コードの生成方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3648253A (en) * 1969-12-10 1972-03-07 Ibm Program scheduler for processing systems
US5452401A (en) * 1992-03-31 1995-09-19 Seiko Epson Corporation Selective power-down for high performance CPU/system
US5867726A (en) 1995-05-02 1999-02-02 Hitachi, Ltd. Microcomputer
JP3520611B2 (ja) * 1995-07-06 2004-04-19 株式会社日立製作所 プロセッサの制御方法
JPH0934599A (ja) 1995-07-21 1997-02-07 Toshiba Corp プロセッサシステム
JPH09138716A (ja) 1995-11-14 1997-05-27 Toshiba Corp 電子計算機
US5630110A (en) * 1996-03-01 1997-05-13 Samsung Electronics Co., Ltd. Method and apparatus for enhancing performance of a processor
TW382670B (en) * 1996-11-21 2000-02-21 Hitachi Ltd Low power processor
US5889947A (en) * 1996-12-16 1999-03-30 International Business Machines Corporation Apparatus and method for executing instructions that select a storage location for output values in response to an operation count
US6463550B1 (en) * 1998-06-04 2002-10-08 Compaq Information Technologies Group, L.P. Computer system implementing fault detection and isolation using unique identification codes stored in non-volatile memory
JP2000112756A (ja) 1998-10-08 2000-04-21 Toshiba Corp Cpu動作制御装置および方法
WO2000079405A1 (fr) * 1999-06-21 2000-12-28 Hitachi, Ltd. Processeur de donnees
US6611918B1 (en) * 1999-12-21 2003-08-26 Intel Corporation Method and apparatus for changing bias levels to reduce CMOS leakage of a real time clock when switching to a battery mode of operation
JP3850234B2 (ja) 2000-06-13 2006-11-29 旭化成ケミカルズ株式会社 エアバッグ用基布およびエアバッグ
EP1330699B1 (en) * 2000-10-31 2010-12-22 Millennial Net, Inc Networked processing system with optimized power efficiency
JP3877518B2 (ja) * 2000-12-13 2007-02-07 松下電器産業株式会社 プロセッサの電力制御装置
US6993669B2 (en) * 2001-04-18 2006-01-31 Gallitzin Allegheny Llc Low power clocking systems and methods
JP3685401B2 (ja) * 2001-12-26 2005-08-17 インターナショナル・ビジネス・マシーンズ・コーポレーション Cpu制御方法、これを用いたコンピュータ装置及びcpu並びにプログラム
US7191350B2 (en) * 2002-01-30 2007-03-13 Matsushita Electric Industrial Co., Ltd. Instruction conversion apparatus and instruction conversion method providing power control information, program and circuit for implementing the instruction conversion, and microprocessor for executing the converted instruction
EP1351117A1 (en) * 2002-04-03 2003-10-08 Hewlett-Packard Company Data processing system and method
US7634668B2 (en) * 2002-08-22 2009-12-15 Nvidia Corporation Method and apparatus for adaptive power consumption
JP2004288025A (ja) * 2003-03-24 2004-10-14 Fuji Xerox Co Ltd サービス処理装置、サービス処理システム、サービス処理システムの元データ保管方法、及びサービス処理プログラム
US7334142B2 (en) * 2004-01-22 2008-02-19 International Business Machines Corporation Reducing power consumption in a logically partitioned data processing system with operating system call that indicates a selected processor is unneeded for a period of time
US7206950B2 (en) * 2004-06-16 2007-04-17 Matsushita Electric Industrial Co., Ltd. Processor system, instruction sequence optimization device, and instruction sequence optimization program

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003131873A (ja) * 1995-05-02 2003-05-09 Hitachi Ltd マイクロコンピュータ
JP2002169790A (ja) * 2000-12-01 2002-06-14 Sharp Corp 半導体集積回路
JP2003263311A (ja) * 2002-03-07 2003-09-19 Seiko Epson Corp 並列演算処理装置及び並列演算処理用の命令コードのデータ構造、並びに並列演算処理用の命令コードの生成方法

Cited By (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009003946A (ja) * 2005-07-29 2009-01-08 Sony Computer Entertainment Inc タスク共有方法およびマルチプロセッサシステム
JP2009503728A (ja) * 2005-08-02 2009-01-29 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド マルチプルコアプロセッサの1以上のコアのワークロードパフォーマンスの増加
KR101310044B1 (ko) * 2005-08-02 2013-09-17 어드밴스드 마이크로 디바이시즈, 인코포레이티드 복수의 코어 프로세서들에서의 하나 이상의 코어들의 워크로드 성능을 증가시키는 방법
JP4937260B2 (ja) * 2005-08-02 2012-05-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド マルチプルコアプロセッサの1以上のコアのワークロードパフォーマンスの増加
JP2007219759A (ja) * 2006-02-15 2007-08-30 Fujitsu Ltd マルチプロセッシングシステム
US8086814B2 (en) 2006-03-13 2011-12-27 Panasonic Corporation Semiconductor integrated circuit apparatus
US7757062B2 (en) 2006-03-13 2010-07-13 Panasonic Corporation Semiconductor integrated circuit apparatus
US7840823B2 (en) 2006-08-29 2010-11-23 Panasonic Corporation Processor system for varying clock frequency and voltage in response to a comparison of instruction execution rate to a reference value
JP2008059054A (ja) * 2006-08-29 2008-03-13 Matsushita Electric Ind Co Ltd プロセッサシステム
US9052892B2 (en) 2007-06-04 2015-06-09 Ericsson Modems, SA Power supply management integrated circuit
US9423851B2 (en) 2007-06-04 2016-08-23 Telefonaktiebolaget Lm Ericsson (Publ) Power supply management integrated circuit having multiple independent power source circuits each controlled by configuration data
JP2010529548A (ja) * 2007-06-04 2010-08-26 エヌエックスピー ビー ヴィ 電源管理集積回路
JP2009110385A (ja) * 2007-10-31 2009-05-21 Hitachi Ltd データ処理システム
JP4667443B2 (ja) * 2007-11-21 2011-04-13 パナソニック株式会社 半導体集積回路装置
JP2008123531A (ja) * 2007-11-21 2008-05-29 Matsushita Electric Ind Co Ltd 半導体集積回路装置
JP2010152762A (ja) * 2008-12-25 2010-07-08 Panasonic Corp プログラム変換装置およびプログラム変換方法
WO2010073463A1 (ja) * 2008-12-25 2010-07-01 パナソニック株式会社 プログラム変換装置およびプログラム変換方法
US8612958B2 (en) 2008-12-25 2013-12-17 Panasonic Corporation Program converting apparatus and program conversion method
US9081558B2 (en) 2009-12-16 2015-07-14 Qualcomm Incorporated System and method for dynamically controlling a plurality of cores in a multicore central processing unit based on tempature
US9128705B2 (en) 2009-12-16 2015-09-08 Qualcomm Incorporated System and method for controlling central processing unit power with reduced frequency oscillations
CN102656539A (zh) * 2009-12-16 2012-09-05 高通股份有限公司 用于基于所推断的工作负载并行性控制中央处理单元功率的系统和方法
US8650426B2 (en) 2009-12-16 2014-02-11 Qualcomm Incorporated System and method for controlling central processing unit power in a virtualized system
US8689037B2 (en) 2009-12-16 2014-04-01 Qualcomm Incorporated System and method for asynchronously and independently controlling core clocks in a multicore central processing unit
KR101409141B1 (ko) * 2009-12-16 2014-06-17 퀄컴 인코포레이티드 멀티코어 중앙 프로세싱 유닛에서의 복수의 코어들을 온도에 기초하여 동적으로 제어하는 시스템 및 방법
KR101409055B1 (ko) * 2009-12-16 2014-07-02 퀄컴 인코포레이티드 추론된 작업부하 병렬성에 기초하여 중앙 처리 장치 전력을 제어하는 시스템 및 방법
US8775830B2 (en) 2009-12-16 2014-07-08 Qualcomm Incorporated System and method for dynamically controlling a plurality of cores in a multicore central processing unit based on temperature
US8909962B2 (en) 2009-12-16 2014-12-09 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US9563250B2 (en) 2009-12-16 2017-02-07 Qualcomm Incorporated System and method for controlling central processing unit power based on inferred workload parallelism
US9176572B2 (en) 2009-12-16 2015-11-03 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
CN102656539B (zh) * 2009-12-16 2015-09-09 高通股份有限公司 用于基于所推断的工作负载并行性控制中央处理单元功率的系统和方法
US9104411B2 (en) 2009-12-16 2015-08-11 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
JP2013513898A (ja) * 2009-12-16 2013-04-22 クアルコム,インコーポレイテッド 温度に基づいてマルチコア中央処理装置内の複数のコアを動的に制御するためのシステムおよび方法
WO2012090376A1 (ja) * 2010-12-27 2012-07-05 パナソニック株式会社 マルチチップシステム、通信機器、映像音声装置および自動車
JP2012150815A (ja) * 2011-01-14 2012-08-09 Apple Inc 複数の回路における性能パラメータの整合
JP2012027952A (ja) * 2011-11-07 2012-02-09 Fujitsu Semiconductor Ltd シミュレーション装置
JP2015138281A (ja) * 2014-01-20 2015-07-30 キヤノン株式会社 情報処理装置及び情報処理装置の制御方法
JP2017515230A (ja) * 2014-04-30 2017-06-08 クアルコム,インコーポレイテッド グラフィックスフレーム処理において電力消費を低減させるためのcpu/gpu dcvs相互最適化

Also Published As

Publication number Publication date
CN1322397C (zh) 2007-06-20
JP4549652B2 (ja) 2010-09-22
US7624295B2 (en) 2009-11-24
US20050102560A1 (en) 2005-05-12
CN1612088A (zh) 2005-05-04

Similar Documents

Publication Publication Date Title
JP4549652B2 (ja) プロセッサシステム
US7571342B2 (en) Processor system, instruction sequence optimization device, and instruction sequence optimization program
JP4082706B2 (ja) マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
US8051412B2 (en) Global compiler for controlling heterogeneous multiprocessor
US7539879B2 (en) Register file gating to reduce microprocessor power dissipation
US7500126B2 (en) Arrangement and method for controlling power modes of hardware resources
JP4764026B2 (ja) ダイナミック電圧スケーリングによる低消費電力集積回路装置
US20100268862A1 (en) Reconfigurable processor and method of reconfiguring the same
US20130205126A1 (en) Core-level dynamic voltage and frequency scaling in a chip multiprocessor
US20170269629A1 (en) Multiprocessor systems having processors with different processing capabilities connecting to a clock generator
JP2004199139A (ja) プロセッサシステム、命令列最適化装置、および命令列最適化プログラム
US20020112193A1 (en) Power control of a processor using hardware structures controlled by a compiler with an accumulated instruction profile
JP2007305148A (ja) マルチプロセッサシステム
JP2011129147A (ja) プロセッサシステム、命令列最適化装置、および命令列最適化プログラム
US9389914B2 (en) Information processing apparatus and control method thereof
WO2003090055A1 (en) Power control of a processor using hardware structures controlled by a compiler with an accumulated instruction profile
JP2014052918A (ja) 演算装置およびその制御方法
JP5247037B2 (ja) 半導体集積回路及びその制御方法
JP2004199630A (ja) データ処理装置
JP2004334641A (ja) 情報処理装置および記録媒体、並びにプロセッサ
CN105988548B (zh) 用于集成电路的初始操作模式
JP2009193243A (ja) プロセッサ、プロセッサの実行制御方法及びそのプロセッサのためのプログラム生成装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060830

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090324

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090522

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100707

R150 Certificate of patent or registration of utility model

Ref document number: 4549652

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130716

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees