JP4082706B2 - マルチプロセッサシステム及びマルチグレイン並列化コンパイラ - Google Patents

マルチプロセッサシステム及びマルチグレイン並列化コンパイラ Download PDF

Info

Publication number
JP4082706B2
JP4082706B2 JP2005114842A JP2005114842A JP4082706B2 JP 4082706 B2 JP4082706 B2 JP 4082706B2 JP 2005114842 A JP2005114842 A JP 2005114842A JP 2005114842 A JP2005114842 A JP 2005114842A JP 4082706 B2 JP4082706 B2 JP 4082706B2
Authority
JP
Japan
Prior art keywords
processing
processor unit
control
unit
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2005114842A
Other languages
English (en)
Other versions
JP2006293768A (ja
JP2006293768A5 (ja
Inventor
博徳 笠原
啓二 木村
準 白子
雅樹 伊藤
裕明 鹿野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Waseda University
Original Assignee
Waseda University
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
Priority to JP2005114842A priority Critical patent/JP4082706B2/ja
Application filed by Waseda University filed Critical Waseda University
Priority to CNB2006800006660A priority patent/CN100514253C/zh
Priority to PCT/JP2006/308161 priority patent/WO2006109887A1/ja
Priority to US11/660,104 priority patent/US7895453B2/en
Priority to EP06732068A priority patent/EP1870792A4/en
Priority to EP13176745.1A priority patent/EP2657839B1/en
Priority to KR20077003527A priority patent/KR100861631B1/ko
Priority to CN2009101466440A priority patent/CN101571745B/zh
Priority to CN2009100075365A priority patent/CN101504619B/zh
Priority to EP13161131.1A priority patent/EP2620840B1/en
Publication of JP2006293768A publication Critical patent/JP2006293768A/ja
Publication of JP2006293768A5 publication Critical patent/JP2006293768A5/ja
Application granted granted Critical
Publication of JP4082706B2 publication Critical patent/JP4082706B2/ja
Priority to US12/654,956 priority patent/US8812880B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

本発明は、複数のプロセッサユニットで構成されるマルチプロセッサシステムにおいて、当該複数プロセッサユニットを効率よく動作させることを可能とするマルチプロセッサシステムのハードウェア構成及びプログラムを生成するコンパイラに関する。
半導体製造技術の進歩による素子の微細化により、膨大な数のトランジスタを集積することが可能となっている。それと同時にプロセッサの高周波数化も進むが、動作時電力の増加、またリーク電流に起因する待機時電力の増加により、従来のプロセッサが歩んできた動作周波数の向上と論理方式の改善により達成してきた性能向上に限界が見え始めている。
そこで現在、性能改善と低電力化を実現する手段として、従来のCPU、DSPといったプロセッサユニット(以下、PUとする)を複数個オンチップで搭載し、処理を並列で行うことで、動作周波数を向上させなくとも、高い演算性能を得ることが可能な、マルチプロセッサシステム(シングルチップ・マルチプロセッサシステム)が有望となっている。将来、微細化がさらに進むことで、PUをオンチップで100個〜1000個積載することも可能となると予測される。
このようなマルチプロセッサシステムにおいて、PUの数に比例した演算性能を得るためには、搭載されたPUを同時に稼動させプログラムを処理する必要がある。しかしながら、通常の入力プログラムは処理が時系列で逐次的に記述されているため、複数のPUを搭載するにも拘わらず、当該複数PUに比例して期待される演算性能を得ることができない。
この問題点を解決するための一つの方法として、プログラム開発者が自らプログラムの並列性を考慮し、当該プログラムを実行させるマルチプロセッサシステムの構成に基づいて、当該プログラムを複数のPUで実行させるための並列化コードを付加する必要がある。しかしながら、本手法はPUが数個のシステムにおいては有効であるが、将来の数十〜数千といった数のPUが積載されたシステムにおいては、また特にPUが異種で構成される場合は、開発時間、実効性能の点で実用的ではない。
そこで、構成及び演算性能が同種の複数PUで構成されたマルチプロセッサシステムにおいて、入力プログラムを解析し、当該プログラム中から並列に動作可能な部分を抽出し、当該部分を複数のPUに割り当て同時に実行することを可能とする、自動並列化コンパイラの研究がすでに行われている。例えば、入力ソースプログラムを解析し、当該プログラムをサブルーチンやループなどさまざまな粒度のブロック(タスク)に分割し、当該複数タスク間の並列性を解析すると共に、タスクとそれらがアクセスするデータをキャッシュあるいはローカルメモリに適合するサイズに分割し、それらを各PUに対して当該タスクを最適割り当てすることによって、マルチプロセッサシステムを効率よく動かす目的プログラムを生成するコンパイル方式が、特許文献1に開示されている。またマルチグレイン並列処理の機能をサポートするチップマルチプロセッサのアーキテクチャとしては、特許文献2に開示されている。
また、電力消費の低減及び排熱の低減のため、マルチプロセッサシステムにおいて各PUの低電力化が必須となるが、個別のプロセッサに関して低電力化する手法に関し、様々な提案が行われている。例えば、リアルタイム処理制約内でプロセッサの動作クロックを低減させ、そのクロック周波数に応じた電圧プロセッサに供給する、という周波数・電圧を動的に制御すことにより低電力化を達成する手法が、特許文献3、4で開示されている。
また、画像処理など予め処理の手順が判明しているアプリケーションにおいて、各処理の特性に合わせてCPUやDSPなどの種類の異なる複数のプロセッサを組み合わせ、当該プロセッサ上での処理時間や消費電力情報を予め測定し与えておくことで、当該情報により動的に一連の処理を当該各プロセッサに割り当てる手法が、特許文献5に開示されている。
特開2004−252728号 特開2001−175619号 特許第3138737号 特開2004−234126号 特開2004−252900号
現在、自動車のナビゲーションシステム、携帯電話、デジタルテレビなどといった、画像、音声、データベース情報など多様なデータを同時に扱う新アプリケーションが生まれる中で、様々な種類の入力データを、当該データ夫々に最適な方法で同時に処理をするために、プロセッサは複数種類のPUを搭載することになると考えられる。従来のマルチプロセッサシステムでは、上記特許文献1で開示されているように同じ構成のPUを複数搭載したホモジニアスなプロセッサシステムであった。
しかしながらこのように、多様なアプリケーションが同時に多種のPU上で処理される将来のヘテロジニアスマルチプロセッサシステムにおいて、搭載するPUの種類と数に比例して処理性能を得るためには、PUの種類を考慮したプログラムの並列化と配置が必須となるという問題がある。
また従来、複数のPU上でプログラムを効率よく実行するためには、小規模なプログラムや処理シーケンスが常に固定的に実行できる場合、スケジューリングを行うための実行時間などのスケジュール情報を得るために、一度プログラムを当該システム上で実行して処理時間などを測定することが必要となり、当該測定値を元に開発者が予め当該スケジュール情報を手動で生成する必要があり、多大な労力と時間が必要となる。
この場合、事前に処理の内容やシーケンスが不明な一般のプログラムの場合、特に規模が大きなプログラムの場合は、当該情報を事前に手動で生成することが困難となる。またPUの種類や数が増加した場合も同じく、当該情報を手動で生成することが困難となる。
また、多数のPUが搭載されるシステムでは、プロセッサ全体の消費電力増大が懸念されるため、特に携帯電話などのモバイル機器や、家庭で使用されるデジタルテレビなどに適用することを考慮すると、従来のOSによるFV(動作周波数と駆動電圧)制御のみならず、各アプリケーションプログラム内でのソフトウェアによる各PUの処理状況によりきめ細かい電源管理や動作周波数制御が必要となると。
特に、処理性能を落とさずに消費電力を低減する必要がある。また、実時間処理を要求するプログラムを実行するに際しても、時間制約を遵守しつつ、電力を低減する必要がある。
そこで本発明は、多様な種類のPUを搭載するマルチプロセッサシステムにおいて、処理対象となる入力プログラムから自動的に並列性を持つタスクを抽出し、各PUの特性に合わせて当該タスクを配置することで当該PUを効率よく動かし、さらに当該PUの処理量を見積もることで動作周波数や電源電圧を最適化するコードを生成し、目的プログラムに付加するコンパイラ及びその最適化を可能とするマルチプロセッサシステムを提供することを目的とする。
本発明は、単一または複数種類のプロセッサユニットを複数個有するマルチプロセッサシステムに実行させる目的プログラムを生成するコンパイラであって、前記プロセッサユニットは、特定用途プロセッサユニットと汎用プロセッサユニットとを含み、入力プログラムを読み込む処理と前記入力プログラムを解析し、前記入力プログラムを複数の粒度の単位ブロックに分割する処理と、前記単位ブロック間の制御依存性、及びデータ依存性を解析し、前記単位ブロックの並列性を抽出する処理と、前記マルチプロセッサシステムが具備する各プロセッサユニットで前記単位ブロックを処理するために必要な演算サイクル時間をコスト情報として求める処理と、前記コスト情報に基づいて前記入力プログラムの処理時間が最小となるように、前記単位ブロックを処理するのに必要な前記特定用途プロセッサユニットを選択し、さらに少なくともひとつの汎用プロセッサユニットを選択し、これら特定用途プロセッサユニットと汎用プロセッサユニットを1つのグループとして前記単位ブロックを割り当てるスケジューリングコードを生成する処理と、前記スケジューリングコードを入力プログラムに付加し、前記各プロセッサユニット毎の実行コードを生成し、目的コードとして出力する処理と、を計算機に実行させる。
また、単一または複数種類のプロセッサユニットを複数個有するマルチプロセッサシステムに実行させる目的プログラムを生成するコンパイラであって、前記プロセッサユニットは、特定用途プロセッサユニットと汎用プロセッサユニットとを含み、入力プログラムを読み込む処理と、前記入力プログラムを解析し、前記入力プログラムを複数の粒度の単位ブロックに分割する処理と、前記単位ブロック間の制御依存性、及びデータ依存性を解析し、前記単位ブロックの並列性を抽出する処理と、前記マルチプロセッサシステムが具備する各プロセッサユニットで前記単位ブロックを処理するために必要な電力をコスト情報として求める処理と、前記コスト情報に基づいて前記入力プログラムの処理時間が最小となるように、前記単位ブロックを処理するのに必要な前記特定用途プロセッサユニットを選択し、さらに少なくともひとつの汎用プロセッサユニットを選択し、これら特定用途プロセッサユニットと汎用プロセッサユニットを1つのグループとして前記単位ブロックを割り当てるスケジューリングコードを生成する処理と、前記スケジューリングコードを入力プログラムに付加し、前記各プロセッサユニット毎の実行コードを生成し、目的コードとして出力する処理と、を計算機に実行させる。
したがって、本発明により、入力プログラムをコンパイルする際に、プロセッサユニットの構成に基づきコンパイラが予め事前の処理時間を見積もり、コンパイル時に処理順序を静的に決定できる部分に関しては事前に処理手順を決定しておき、また実行時にならないと処理順序が決定できない部分に関しては、コンパイラが実行時間を含んだ処理情報に基づいたスケジューリングを動的に行うプログラムを生成することで、一般のプログラムを多種のプロセッサユニットで構成されるマルチプロセッサシステム上で効率よく処理できる。
また、入力プログラムをコンパイラが解析し、事前に処理手順を決定した後に処理時間を見積もり、時間制約に対する当該処理時間の余裕度を見てプロセッサユニット毎に電源管理や周波数制御をきめ細かく行うことで、電力を大きく低減できる。
また、異種のプロセッサユニットで構成されるマルチプロセッサにおいて、実行時間最小となるよう入力プログラムを並列化しスケジューリングした後、各プロセッサユニット間で処理時間が最小となるよう、プロセッサユニット毎にきめ細かく動作周波数制御及び電源管理を行うことで、性能を損なわずに電力を最適化できる。
以下、本発明の一実施形態を添付図面に基づいて説明する。
<実施形態の全体構成>
図1は、本発明の一実施形態であるマルチプロセッサシステムの構成を示す。図1において、マルチプロセッサシステムは、複数の異種のプロセッサユニット(以下、PUとする)10〜17と、これら共有メモリ(以下、SMとする)18を主体にして構成される。当該各PU10〜17は、それぞれのバスインタフェース(BIF)27を介し、ローカルバス(LBUSとする)19に接続される。また、SM18はLBUS19に接続され、各PU10〜17からアクセするすることができる。当該各PU10〜17は、当該PUに対し電源電圧及び動作クロックを供給する電源電圧生成回路(DCGEN)20、及びクロック生成回路(CLKGEN)21が接続されている。なお、本マルチプロセッサシステムは、異種のプロセッサユニットで構成されたヘテロジニアスマルチプロセッサシステムの例を示す。
本実施形態ではPUの種類と個数を、2個の汎用処理プロセッサ(以下、CPU)10、11と、2個の信号処理プロセッサ(以下、DSP)14、15と、2個の動的再構成可能プロセッサ(以下、DRP)16、17と、及び2個のビット演算処理プロセッサ(以下、BMP)12、13で構成した例を示す。なお、上記PUの種類や数は本実施形態で示した限りではなく、さまざまな構成を取り得る。また、従来の同種のPUのみによる構成(例えばCPUのみ4個で構成)としても良い。また、本実施形態では、DSP(0、1)14、15と、DRP(0、1)16、17と、BMP(0、1)12、13を特定用途プロセッサユニットとし、CPU(0、1)10、11を汎用プロセッサユニットとする。
また、動的再構成可能プロセッサ16、17は、処理回路を動的に再構成することが可能なプロセッサを指し、限られたコア内で仮想的に回路を変更することができる。
上記各PU10〜17は、各PUで処理されるプログラムやデータを一時的に保存するローカルメモリ(またはキャッシュ)(LM)24及び、当該PUに対する供給電圧(VL)や動作周波数(FL)を決定する周波数・電源電圧(FV)制御、及びPU間の同期制御を行うためのシステム制御レジスタ(R)25を具備する。なお、ローカルメモリ(LM)24は、他のPU及び当該LMを持つ自PUからアクセス可能なグローバルアドレスがマッピングされている領域と、当該自PUのみアクセス可能なプライベートアドレスがマッピングされている領域に分割される。なお、LBUS19に接続された共有メモリ(SM)18はグローバルアドレスがマッピングされており、複数のPUからアクセス可能である。なお、以上は本発明における適用構成の一例に過ぎず、実施の形態としてはこの限りでない。例えば図1では表現されていないが、LBUS19には入出力処理、割り込み処理、タイマ、デバッグ回路、等の周辺回路を必要に応じて接続することとなる。また、バスブリッジを介して、同種類または異種類のバスを階層的に接続してもよい。
また、各PU10〜17で共有されるSM18には、SM18に供給する供給電圧(VL)や動作周波数(FL)を設定して、周波数・電源電圧(FV)制御を行うためのシステム制御レジスタ(R)181を具備する。また、前記PU及び前記SMを相互に接続するローカルバスLBUS19には、LBUS19に供給するVLやFLを設定して、FV制御を行うためのシステム制御レジスタR191を具備する。なお、このシステム制御レジスタ(R)181に代わって、各PU10〜17のシステム制御レジスタ(R)25のそれぞれに、SM18及びLBUS19のFV制御用のレジスタを設けても良い。また、システム制御レジスタ(R)181は、PU10〜17のいずれか一つによって設定される。
なお、上記PU10〜17は、一つのチップ(LSI)上に構成された場合を示すが、PU10〜17を構成する複数のLSIを結合し、一つのチップまたはモジュールとしたものであっても良い。
また、SM18は、プロセッサの種類毎(CPU、DSP、DRP、BMP毎)に共有するようにしても良く、例えば、後述する図10のように、SM18の領域をバンクに分割し、各バンクをプロセッサの種類毎に共有することもできる。あるいは、SM18の一部を複数のPUで共有するようにいしても良い。
<電圧・周波数可変回路>
次に、各PUに接続された電源電圧生成回路(DCGEN)20及びクロック生成回路(CLKGEN)21の構成について説明する。
図2は、DCGEN20の構成を示す。DCGEN20は外部より供給された通常の電源電圧(VD)22を予め指定した複数の供給電圧(VL)205に降圧(または昇圧)する回路(DCCNV)206、生成した複数の当該供給電圧よりPUへ供給する電圧を選択する供給電圧選択回路(VDSEL)203、及び電源電圧を遮断する回路(後述)で構成する。
なお降圧(または昇圧)回路(DCCNV)206は、複数の電圧降下部を含み、例えば、図2のように、電源電圧VDをそのまま供給する回路22’と、電源電圧VDを3/4に低下する降圧回路(LVCNV)201と、電源電圧VDを1/2に低下する降圧回路(LVCNV)202とから構成される。
各PU10〜17は、当該PUが持つシステム制御レジスタ(R)25内のFV制御レジスタに設定されたFV(駆動周波数及び駆動電圧)モードにより制御線(DCCL)204を介して供給電圧選択回路(VDSEL)203を制御することで、降圧回路(DCCNV)206で生成された複数の電圧のうちいずれかひとつを選択し、当該選択された供給電圧VLが対応するPU10〜17に供給される。なお、FV制御レジスタはシステム制御レジスタ25の内の所定の領域に設定されるものである。
電源電圧を降圧する回路(LVCNV)の構成の一例を図3に示す。上記図2の降圧回路LVCNV201、202は、供給電圧(3/4VD)を決定する参照電圧生成回路(VREF)207、及び参照電圧で指定した電圧まで降圧しPUに対し電流を供給する電源生成回路(VGEN)208で構成され、電源生成回路208の出力が図2の供給電圧選択回路203に入力される。
降圧回路LVCNVの出力電圧(VCNV)は、参照電圧を決定する参照電圧生成回路(VREF)207内のnMOSFETの段数により決まり、FV制御レジスタで指定する電圧を供給するよう、LVCNVの構成は決定される。以上の回路で降圧した複数の電圧から、PUからの制御線204により指定された電圧を選択し、各PU10〜17へ出力(205)する。
図4は、供給電圧選択回路(VDSEL)203の構成の一例を示す。供給電圧選択回路(VDSEL)203は制御信号デコード部2031と電圧選択スイッチ2032で構成する。また、PUのソース電圧供給部にしきい値の高いnMOSFET209を挿入することで、当該PUの電源遮断時に流れるリーク電流を低減することができる。なお、図3、図4の構成は、降圧回路LVCNVの機能を実現するための一つの構成に過ぎず、他の様々な電源電圧生成回路方式を適用しても良い。
続いて図5に、クロック生成回路(CLKGEN)21の構成の一例について説明する。CLKGEN21は、内部クロックFC(23)を当該内部クロックの1/2、1/4など内部クロックFCを整数分の1に低減する分周回路212、213、及び分周生成した複数のクロックから、当該PUへ供給するクロック(FL)216を選択する、クロックパルス選択器(CLKSEL)214で構成する。なお、内部クロックFC(23)は、PLL(Phase Locked Loop)回路211にて、外部から入力されたシステムクロックを、指定した逓倍率で逓倍することで生成される。
クロックパルス選択器(CLKSEL)214の構成の一例を図6に示す。CLKSEL214は入力制御信号CKCLのデコード部2171と、クロック信号選択部2172で構成する。各PUは、当該PUが持つFV制御レジスタのモードにより制御線(CKCL)215を介してDCSEL214を制御することで、生成された複数のクロックより指定されたFLが選択され、当該クロックFL216の供給を受ける。
なお、上記図1に示した構成の他にも図7に示すように、電源電圧、クロックパルスを変換する回路(DCCNV206、CLKCNV217)を複数PU(またはPU全体)に対し各1個付加し、各PU側に生成した複数種類の電源電圧及びクロックパルスを選択する回路(VDSEL203、CLKSEL214)を付加する構成としても良い。図7の例では、2組の電源電圧生成回路206とクロック生成回路217が、それぞれ4つのPUに電力とクロックを供給する場合を示す。
このように、電源電圧及びクロックパルスを生成、供給する回路は様々な構成を取り得ることができ、その構成は以上に示した限りではない。例えば、電源電圧を変換する回路DCCNV206を複数PU(またはPU全体)に対し1個付加し、クロックパルスを生成する回路CLKCNV217はPU側にPU毎に付加する構成とすることもできる。また、例えば、クロックパルスを生成する回路CLKCNV217を複数PU(またはPU全体)に対し1個付加し、電源電圧を変換する回路DCCNV206はPU側にPU毎に付加する構成とすることもできる。また、例えばチップ内にDCCNV206を搭載せず、チップ外部にて生成した複数種類の電源電圧を入力し、VDSELにて所望の供給電圧VL205を選択供給する構成としてもよい。
また、FV制御モードを設定する手段として、図1や図7に示した各PUが当該PUのFV制御を行うFV制御レジスタ(システム制御レジスタ(R)25)を持つ構成とする他に、図8に示すように各各PU10〜17のFV制御モードを一括して保持するFV制御テーブル(FVTBL)26をLBUS19に接続する構成としてもよい。図8においては、図1においてシステム制御レジスタ25に含まれていたFV制御レジスタを、ローカルバスLBUS19に接続されたFV制御テーブル26とし、集約したものである。
FV制御テーブル(FVTBL)26は各PU10〜17からアクセス可能であって、共有メモリSMの一部に設定されてもよいし、共有メモリSMから独立したメモリ(またはレジスタ)で構成されても良い。
<バスIF>
以上のように、各PU10〜17は電源電圧を個別に設定することが可能なため、当該PUと接続されたLBUS19間においては、信号の電圧レベルが異なることになる。そこで、PU10〜17とLBUS19間に接続されたバスインタフェース(BIF)27は信号レベル変換回路(図示省略)を具備し、バスLBUS19とPU10〜17間の信号レベル変換を行う。
<PUに対する電圧・周波数モードの与え方>
次に、電源電圧生成回路(DCGEN)20及びクロック生成回路(CLKGEN)21で生成する電源電圧(VL)205及び動作クロック(FL)216を決定するハードウェア機構について説明する。
電源電圧生成回路DCGEN20及びクロック生成回路CLKGEN21の動作モード(供給するVL、FL値)は設計時に予め決定されており、各PUは前記回路に対し当該PUが具備するFV制御レジスタの値によって制御線DCCL、CKCLを介して指定する。VL、FLの設定方法の詳細に関しては後述するが、コンパイラがFV制御レジスタをセットする制御コードを生成し、当該コードを実行する汎用プロセッサCPU0またはCPU1が、メモリマップされたFV制御レジスタにアクセスして値を書き換える。
本実施形態におけるPU10〜17のFVモードは、VL、FLの組み合わせを4段階(FV制御レジスタ内の2ビット)として設定する。図9にPU10〜17の動作モード一覧を示す。つまり、FV制御レジスタの2ビットの値が“00”においてはVL=0、FL=0の電圧・周波数遮断となるOFFモードに設定され、上記レジスタ値が“11”においては、VL=VDでシステムの電源電圧と等価、FL=FCでシステムの動作周波数と等価とするFULLモードが設定される。
またレジスタ値が“01”ではVL=(1/2)VD、FL=(1/4)FCとなるLOWモードに設定され、レジスタ値が“10”ではVL=(3/4)VD、FL=(1/2)FとなるMIDDLEに設定される。なお、VL・FLモードの数、またVL値・FL値は、構築するシステムの形態やアプリケーション、使用するプロセス技術、等により、決定される。
<PU内の部分的なFV制御>
以上ではFV制御を対象とする範囲をPU全体とし、一括でFV制御モードを設定するとして説明したが、PU10〜17に搭載するローカルメモリ(LM)やFV制御レジスタ、また他のプロセッサ周辺回路に対し、夫々異なるFV制御モード設定を行っても良い。これは、FV制御レジスタのビットフィールドを拡張し、被FV制御部に対応したFV制御モードを設定するフィールドを持たせることで実現できる。例えば、ローカルメモリLMまたはシステム制御レジスタ(R)25といったデータ保持が必要な回路部に対しては、独立にFL、VLを設定する機構とすることが考えられる。つまりローカルメモリLMやFV制御レジスタに対し独立してFV制御を行うことで、前記PUのFVが遮断状態としても、当該LM及びRのデータが保持され、また対象PUが遮断状態においても、他のPUから当該PUのLMに対しアクセスすることも可能となる。
またさらに、ローカルメモリLMの構成によりFV制御対象を複数設定することができる。図10にローカルメモリLMに対するFV制御方式を示す。
例えば、図10(a)に示す通りローカルメモリLMをバンク構成とし、各バンク毎(Bank0〜Bank3)に対してそれぞれFV制御を実施する。このため、各Bank0〜3にはそれぞれ供給電圧選択回路(VDSEL)203が接続される。
つまり、データの保持が必要なバンクのみ通常電圧、またはデータ保持に必要な最低限の電圧を供給し、当該バンク以外の他のバンクは電源を遮断することで電力を削減すると共に、データの退避処理を行う必要がなくなるためPUの電源遮断時から通常動作時への復帰を高速に行うことが可能となる。
またさらには、図10(b)に示す通り、ローカルメモリLMのアドレス空間を一定の連続したアドレス区間(Area1〜Area4)で分割し、当該区間単位でFV制御を行うことで、不要なアドレス区間(記憶領域)に対する電源を遮断することで電力を削減できる。
このため、ローカルメモリLMの各アドレス区間(Area1〜Area4)毎に供給電圧選択回路(VDSEL)203が接続される。
また、図10(c)に示す通り、ローカルメモリLMがバンク構成としたとき、各バンク(Bank0〜3)に跨る一定の連続したアドレス区間(Area1〜Area4)で分割した単位でFV制御を行う。
このため、ローカルメモリLMの各Bank0〜3に跨る各アドレス区間(Area1〜Area4)毎に供給電圧選択回路(VDSEL)203が接続される。この構成により、バンク構成を活用しメモリアクセスを高速化するメモリインタリーブを実現しつつ低電力化が可能となる。
なお、ローカルメモリLMは、機能的に当該LMを搭載するPUのみからアクセスできる部分(非共有メモリ)と、当該PUのみならず他のPUからもアクセス可能な部分(分散共有メモリ)に分割して実装してもよく、以上の2つのメモリ機能単位別でFV制御を行うことも考えられる。このため、図示はしないが、上記非共有メモリと分散共有メモリの領域毎にそれぞれ供給電圧選択回路(VDSEL)が接続される。
また、図10に示したメモリ分割手法は、前記メモリ機能単位、また共有メモリSMなど、システムが搭載する様々なメモリや機能部位単位に対しても、同様に適用することが可能である。例えばPU外に配置した共有メモリSMに対しても複数バンク構成とし、各バンクに対するアクセス頻度やシステム状態(スタンバイ、スリープなど)に対応して、別途FV制御を行うようにしてもよい。
例えば、図10(a)の構成をローカルメモリLMに代わって共有メモリSM18に適用し、共有メモリSM18をバンク(Bank0〜3)に分割して、各バンク毎に供給電圧選択回路(VDSEL)203を接続することでバンク単位で電力制御を行うことができる。また、図10(b)の構成をローカルメモリLMに代わって共有メモリSM18に適用し、共有メモリSM18のアドレス空間を一定の連続したアドレス区間(Area1〜Area4)で分割し、当該区間単位でFV制御を行うことで、不要なアドレス区間(記憶領域)に対する電源を遮断することで電力を削減できる。また、図10(c)の構成をローカルメモリLMに代わって共有メモリSM18に適用し、各バンク(Bank0〜3)に跨る一定の連続したアドレス区間(Area1〜Area4)で分割した単位でFV制御(電力制御)を行うことも可能である。なお、図10(a)〜(c)を共有メモリSM18に適用する場合には、図中「LM」を「SM」と読み替えるものとする。
<ローカルメモリLMに対するFV制御モード>
FV制御対象をPU内の複数部分(機能部分)とする例として、ローカルメモリLMに対してPUとは独立してFV制御を行う方法を以下に説明する。本例ではローカルメモリLMは図10(a)で示したように4バンク(Bank0〜3)で構成し、FV制御対象はPU及びLMバンク毎とする。
PUのFV制御モードは上記図9に示した通りである。図13にローカルメモリLMのFV制御モードの一覧を示す。LMの動作モードに関しては対象がメモリとなるため、本実施形態では通常メモリアクセス及びデータ保持が可能である通常動作モード(VL=VD、FL=FC、レジスタ値“11”)と、メモリアクセスは不可であるがデータを保持可能なデータ保持モード(VL=1/2VD、FL=0、レジスタ値“01”)と、データ保持を行わず完全に電源を遮断する、電源遮断モード(VL=0、FL=0、レジスタ値“00”)の3モードとする。
続いて、ローカルメモリLMを図10(a)または図10(c)のように複数のバンクで構成し、バンク毎のFV制御に対応したFV制御レジスタのフォーマットを図14(a)に示す。本例では、各PU10〜17毎に、FV制御レジスタ1250を一メモリアドレスにマップし、そのフィールド(マップしたアドレス)で制御対象毎にFV制御モードを決定する。1フィールドが図示のように32ビットの場合、つまりビット1、0をPUのFV制御モード(PUFV)、ビット3、2をLMバンク0(Bank0)のFV制御モード(LM0FV)、ビット5、4をLMバンク1(Bank1)のFV制御モード(LM1FV)、ビット7、6をLMバンク2(Bank2)のFV制御モード(LM2FV)、ビット9、8をLMバンク3(Bank3)のFV制御モード(LM3FV)として、所望のフィールドをアクセスし、図13のテーブルからローカルメモリLMの動作モードを決定し、FV制御を行う。なお、PUの動作モードは、図9のテーブルに基づいて決定する。
FV制御レジスタ1250の設定例を図14(b)に示す。本例では、PUのモードは図14(a)のPUFVにMIDDLE(”1、0”)が設定され、ローカルメモリLMのバンク0のみを活性化し通常動作させるようLM0FVには”1、1”が設定され、LMのバンク1はデータ保持モードとなるようにLM1FVには”1、0”が設定され、バンク2及びバンク3はLM2FV、LM3FVに”0、0”を設定し電源遮断としている。
また、上記の他にもFV制御レジスタに対し、制御対象毎にアドレスを割り振る構成としても良い。例えば、図14(c)で示すようにFV制御対象毎にレジスタをメモリアドレスにマップしたFV制御レジスタのフォーマットを示す。図14(c)では、アドレスの順にPUのFV制御モードとLMのFV制御モードを示すPUFV、LM0FV〜LM3FVが格納され。
上記図14(a)で示したように、FV制御レジスタのビットフィールドで制御対象のFV制御モードを切り替える場合、当該フィールドの値を設定するためのビット演算が必要となるが、図14(c)の構成では直接当該制御対象レジスタがマップされたアドレスに直接アクセスすれば良く、FV制御レジスタの設定に関する命令数を削減することができる。しかしその反面、アドレスリソースが図14(a)と比較し多く必要となる。
以上では、各PUが持つFV制御レジスタを設定することで、PUやLMのFV制御モードを設定する例として説明したが、図8で説明したように各PU10〜17のFV制御モードを示すFV制御レジスタを、ローカルバスLBUS19に接続されたFV制御テーブル(FVTBL)26として持たせる場合では、図15に示すように当該FVTBLを構成する。
図15は、図8で示したFV制御テーブルFVTBLのフォーマットを示す。当該FVTBLの1ラインは、PU番号(PUN250)、当該PUのFV制御モード(PUFV251)、LMのFV制御モード(LM0FV252、LM1FV253、LM2FV254、LM3FV255)、後述するローカルバスLBUSのFV制御モード(BUSFV)に対応し、任意のPUに対する当該PU、LM、LBUSのFV動作モードを決定できる。
そして、CPU0等がこのFV制御テーブルFVTBLを読み込んで、各PU10〜17毎にPUとローカルメモリLM(各バンク毎)及びローカルバスのFV制御モードを決定し、電圧生成回路(DCGEN)20及びクロック生成回路(CLKGEN)21を制御する。
<バスに対する電源制御>
また、各PU10〜17を接続するローカルバス(LBUS)19に対しても、マルチプロセッサシステムの機能部位単位のFV制御として、部分的に電源制御(電源遮断)することができる。
例えば、PU10〜17の何れかが非動作時で電源遮断されている場合、該当するPUのバスインタフェース(BIF)はアクセスされないため、当該BIFの電源遮断を行うことができ、その結果リーク電流を削減することができる。また、バス構成をクロスバとした場合、当該PUに接続するバスを決定するスイッチ部の電源を制御し遮断することもできる。
図11に、クロスバ構成のバスに対する電源制御の概念を示す。例えば、DSP0(14)を電源遮断状態としDSP0に対する通信トラフィックが無いとすると、DSP0に付随するBIF(27)、及びDSP0に対し他のPU及び共有メモリSMからのバスネットワークを接続するスイッチ群(192)、に対する電源も遮断する。
これにより、非動作状態となったDSP0のスイッチ群192の電力消費を削減できる。
図12に、クロスバネットワークに対する電源制御を実現するための回路構成を示す。なお本図では、CPU0、DSP0、DSP1及び共有メモリSMを、クロスバネットワークで構成されたローカルバスLBUS19に接続した構成を示す。本回路は、各PU10〜17が送出したパケットデータを解析し、図11に示したスイッチ群192の制御を行うネットワーク制御部NWCRLと、当該パケットデータの送出元と送出先のネットワークを接続するネットワークスイッチ部(NWSW)で構成する。
ネットワーク制御部NWCRLは、PU10〜17が送出したパケットを解析しパケット処理の優先度を決定するSHCTL195と、SHCTL195により優先度決定された当該パケットを選択するセレクタ(SELC)196と、当該パケットを一時的に保持するキュー197と、当該パケットを解析し送出先及び送出元のネットワークを接続するセレクタスイッチ191〜194を制御するSWCTL198から構成される。
また、ネットワークスイッチNWSWは各PU間のネットワークを接続するセレクタスイッチ(SEL)191〜194で構成する。
各PU10〜17とネットワーク制御部NWCRLには、電源生成回路DCGENと選択的に接続するスイッチ(DCSEL)199がそれぞれ設けられる。そして、スイッチ(DCSEL)199から各PU10〜17及びBIF27と、当該PUが接続されるセレクタスイッチ191〜194に対し電源供給を行う。
例えばDSP0を電源遮断状態とし、DSP0に対する通信トラフィックが発生しないとすると、DSP0に付加したスイッチDCSEL199は、当該DSP0のみならず当該DSP0に接続されたBIF27及び、当該DSP0へのネットワークを選択するセレクタスイッチSEL1(192)に対する電源を遮断する。これにより、電源遮断状態としたDSP0のみならず、周辺の回路への電力を遮断することで電力消費をさらに削減できる。なお、ネットワーク全体を待機状態、つまり電源遮断状態とするときは、NWCRLに対しても当該NWCRLへ電源供給するスイッチDCSEL199により、電源遮断を行う。
<FV制御レジスタの設定方法>
次に、FV制御レジスタ1250を設定する具体的な方法について説明する。なお以下では、レジスタフォーマットを図14(a)の構成として説明する。
各PUのFV制御レジスタ25には、全PUから一意にアクセス可能なグローバルアドレスがそれぞれ割り振られ、コンパイラが予め決定したタスク管理用のPU(つまり、スケジューラまたはOSを実行するPU)が当該アドレスにアクセスし、当該レジスタ値を変更することでFV制御モードを設定する。
図16にマルチプロセッサシステム全体のグローバルアドレス空間マップを示す。本実施形態では、先頭アドレスより所定のアドレスまでPU自身のローカルリソース(LM、FV制御レジスタ1250を含むシステム設定レジスタ)が見える領域、ブロードキャスト(BC)領域を定義する。BC領域に関しては後述する。そして、BC領域の後に各PU毎のアドレス空間を割り振り、さらに各PU内のアドレス空間にローカルメモリLMアドレス、及びシステム設定レジスタアドレスを割り振る。FV制御レジスタは、前記システム設定レジスタアドレス内の1アドレスを持ち、当該アドレスをアクセスすることでFV制御モードを設定できる。なお図16では、CPU0、CPU1、DSP0、DSP1、の順に先頭空間よりアドレスがマップされ、例えばDSP0のFV制御レジスタを設定する際は、アドレス“DSP0_FVREG_ADRS”をアクセスすることとなる。また、当該空間の各PU領域の後には共有メモリSMのアドレスを割り振る。
FV制御レジスタの設定は、コンパイラが決定したタスク管理用のPUがレジスタアクセス用のオブジェクトコードを実行し、ローカルバスLBUS19を介して制御先PUのFV制御レジスタをアクセスすることで行う。コンパイラが当該オブジェクトコードを生成する具体的な方法に関しては後述するが以下簡単に説明すると、コンパイラがタスクを複数PUに割り当てる際、当該複数のPUをグループ化し、グループ内のタスクの起動や同期処理を行うタスク管理PUを決定する。コンパイラは、当該管理PU上でFV制御を行うコードを生成し、当該管理PUは当該コードを実行することで、グループ内のPUのFV制御を行う。なお、上記コンパイラは図示しない計算機上で実行されるものである。
図17(a)にFV制御レジスタを設定する例を示す。コンパイラがCPU0、DSP0、DSP1をグループ化し、CPU0がタスク管理を行い、当該CPU0がDSP0に対しFV制御を行うとする。CPU0は、コンパイラが生成したFV設定を行うオブジェクトコードを実行することで、DSP0のFV制御モードを設定する。
図17(b)にDSP0のFV制御モードを設定するオブジェクトコードの例を示す。本例ではDSP0内のFV制御レジスタのアドレスを予め定義しておき、CPU0内の汎用レジスタに当該FV制御レジスタのアドレス、及びFV設定値を転送し、当該設定値を当該アドレスで指定されたレジスタに書き込むことで、設定を完了する。
なお、FV設定を行う方法として、タスク管理PUがレジスタを直接アクセスするオブジェクトコードを実行するとしたが、例えば、図17(c)に示すように、OSが各PUのFV動作モードを管理するとした場合では、OSのFV制御用APIをコールすることで、OSの管理下でPUのFV制御モード設定を行うことができる。
なお、システム全体のFV制御用レジスタを設け、このレジスタ内にすべてのPU10〜17のFV制御モードを設定するレジスタを設けて、各レジスタにモードを設定すると、全PU10〜17のFVモードが自動で設定される機構を持たせても良い。例えば、図8のFV制御テーブル26のように全PU10〜17で共有するレジスタを設け、当該レジスタを更新することで、全PU10〜17のFV制御モードを変更することが可能となる。
また、当該システム全体の制御用レジスタに汎用処理PU群(CPU)、専用処理PU群(DSP、DRP、BMP)など、プロセッサの種類に対応して、当該種類ごとのPUについてFVモードを同期して設定する複数のFV制御レジスタを設けるようにしても良い。この場合、図8のFV制御テーブル26にプロセッサの種類毎にFV制御レジスタを設け、各CPU、DSP、DRP、BMP毎にFV制御レジスタを共有することにより、一つのレジスタを変更することにより、プロセッサの種類毎にFV制御モードを変更することができる。
<BC領域>
続いて、上記図16で示したメモリマップの先頭領域に設けたブロードキャスト(BC)領域について、以下に説明する。当該BC領域は書き込み専用の領域であり、一PUが当該BC領域の一アドレスに対しデータの書き込みを行うと、当該アドレスに予め対応させた全PUの各LMエントリに当該データを、ローカルバスLBUS19を介して同時に書き込む。これにより、全PUで共有するデータを同時に各PUのローカルメモリLMが持つこととなり、各PU10〜17は共有メモリSMにアクセスしなくとも高速にLM上の当該データにアクセスすることが可能となる。
また、FV制御などのシステム制御を行うに際しても、当該ブロードキャストを行うことで全PUに対し一斉に制御情報を送信することが可能となる。また、PU範囲を指定するマスク情報を併せてブロードキャスト送信することで、PUの範囲を限定してデータや制御情報を送信するマルチキャスト機能を実現することも可能である。この結果、例えばコンパイラが、あるタスクを並列処理する複数PUで構成するPUグループを定義する場合、当該PUグループ内で一斉にタスク処理を開始したり、FV制御を実行したりすることが可能となり、システム全体のスループットが向上する。
<タスク処理時のFV制御概念>
次に、図18を用いて各PU10〜17におけるタスク処理時の電源電圧、動作周波数(FV)制御方法の概念について説明する。各PUで実行するタスク(プログラム)は、後述するコンパイラによって入力プログラムから生成される。つまり、当該入力プログラムは、まず後述するコンパイルにより、当該プログラムの構造を解析することで、代入文のみからなるベーシックブロック(BB)、繰り返しブロック(RB)、サブルーチン(SB)といった粒度が大きなステートメント・ブロックをマクロタスク(MT)として分割する。本例では、3個のマクロタスクMT301〜303に分割されるとする。ここで、マクロタスクは、入力プログラム(ソースコード)を複数の粒度の単位ブロックに分割したものである。つまり、マクロタスクに分割することで、サブルーチン等の粗粒度タスク間の並列処理を利用するマクロデータフロー処理、ループレベルの並列処理である中粒度並列処理に、基本ブロック内部のステートメントレベルの並列性を利用する近細粒度並列処理とを階層的に組み合わせて並列処理を行うマルチグレイン並列処理を行う。また、本実施形態では、プログラムの構成要素をマクロタスクとし、マクロタスクの構成要素をタスクとし、タスクをPU10〜17に割り当てるものとする。
続いて、当該マクロタスクMTの任意のPUにおける演算コスト等の特性情報を算出することで、当該マクロタスクMTをどのPU上で実行するかを決定し、また当該マクロタスクMT間のデータ依存性や制御依存性を解析することで、タスクの実行順序を決定する。
図18(a)は、タスク間の並列実行依存性を示したマクロタスクグラフである。本グラフは、マクロタスクMT1(301)とマクロタスクMT2(302)は同時に実行できることを示し、さらにマクロタスクMT3(303)は、マクロタスクMT1(301)及びMT2(302)の実行が終了後に、実行できることを示している。また本例では、マクロタスクMT1はPU10(CPU0)に、マクロタスクMT2はPU12(BMP0)12に、マクロタスクMT3はPU10(CPU0)に配置される。
以上のようにスケジューリングされたマクロタスクを通常処理(電圧・周波数制御なし)したときの処理ガントチャートを図18(b)に示す。
図18(b)において、マクロタスクMT1とMT2は並列実行可能なため、MT1はCPU(CPU0)にて(305)、MT2はBMP(BMP0)にて(306)同時に処理が開始される。通常処理時はCPU、BMP共に供給される電圧は通常のVD、また動作周波数も通常のFCが供給されている。本例では、CPUにおけるマクロタスクMT1の処理サイクル数は、BMPにおけるマクロタスクMT2の処理サイクル数より小さいため、CPUにおけるマクロタスクMT1の処理(305)が、BMPにおけるMT2の処理(306)に先行して終了する。
CPUはマクロタスクMT1の処理(305)を終了したため、次にマクロタスクMT3を処理(307)することになるが、マクロタスクMT間の依存関係からBMPにおけるMT2の処理(306)が終了するまでは、CPUにおいて次に処理すべきマクロタスクMT3を実行することができない。そのため、CPUはBMPでのマクロタスクMT2の処理が終了するまでアイドル状態となる。当該アイドル状態においても、CPUに対しては通常の電源電圧VD及びクロックFCが供給されているため、余分な電力を消費することになる。
そこで以上を解決する一方法として、CPUにおいてマクロタスクMT1を実行する際に、BMPがマクロタスクMT2の処理に必要とする時間と、CPUで実行するマクロタスクMT1の処理時間が等しくなるよう、CPUの動作周波数を通常時(FULLモード)よりも低減させるLOWモード(図9の1/4FCを供給するモード)で駆動する(308)。つまり、BMPを通常時のFV制御モード(FULL)で駆動する一方、CPUのFV制御モードをLOWモードとし、処理が早く終了する方のPUの動作周波数及び低減し、並列処理を行うPU間でFV制御モードが異なるようにFV制御レジスタの設定を行う。本手法によるFV制御適用時のガントチャートを図18(c)に示す。コンパイラは、CPU(CPU0)におけるマクロタスクMT1の処理サイクル数及び、BMP(BMP0)におけるマクロタスクMT2の処理サイクル数を見積もることで、双方の処理時間が等しくなるようCPUの動作周波数を決定する。この結果、CPUの動作周波数が低減されるため、当該PUに対する電源電圧VLも低減することが可能となり、消費電力を最適化できる。
つまりこの例では、マクロタスクMT1について、CPUのFV制御モードを図9の「LOWモード」に設定し、並列的に処理が行われるBMPのFV制御モードを「FULL」に設定する。
また、上記図18(b)のCPUアイドル状態を解決する別の方法として、CPUにおけるマクロタスクMT1の処理(309)が終了した時点で、CPUの電源電圧及び動作クロックの供給を遮断し待機状態とする(310)。つまり、CPUがマクロタスクMT1の処理を完了すると、CPUのFV制御モードを図9の「OFF」に設定する。そして、マクロタスクMT3の開始時に、FV制御モードを「FULL」に設定し、処理を再開する。本手法によるFV制御適用時のガントチャートを図18(d)に示す。
図18(d)において、CPUによるマクロタスクMT1の処理はBMPにおけるマクロタスクMT2(306)より先行して終了するが、当該終了時点でCPUを待機状態(OFF)とし、BMPがマクロタスクMT2の処理(306)が終了した時点で再びCPUを通常の電源電圧及び動作クロックを供給することで通常状態に復帰させ、マクロタスクMT3の処理(307)を開始する。この結果、CPUをアイドルさせることなく動作が停止するため、消費電力を低減できる。
このように、プログラム(タスク)をコンパイルする時、PUの構成に基づきコンパイラが予め事前の処理時間を見積もり、コンパイル時に処理順序を静的に決定できる部分に関しては事前に処理手順を決定し、PU毎にきめ細かく動作周波数制御及び電源管理を行うことで、マルチプロセッサシステムの性能を損なわずに電力を最適化することが可能となるのである。
<タスク処理時(リアルタイム制約時)のFV制御概念>
以上では、マクロタスク(MT)の実行条件が他のマクロタスクMTに依存する場合のFV制御方法を説明したが、他にもタスクがある一定時間内に処理すべき制約を持つ、すなわち図19(a)で図示するような、当該タスクの処理期限(許容時間)が決定されているリアルタイム処理タスクを対象としたFV制御方法も考えることができる。
図19(a)で例示したマクロタスク(MT1)311では、「FULL」モード、つまり通常の電源電圧及びクロック周波数で動作するCPUで処理した場合、処理期限(Deadline)よりも先行して処理が終了する。この場合、処理が終了した時点でCPUはアイドル状態となるが、本来の処理期限に対して余裕があるため、処理期限制約内でCPUの動作周波数を低減させる(312)ことが可能となる。
本手法によるFV制御適用時のガントチャートを図19(b)に示す。コンパイラは処理期限までに処理を完了可能な動作周波数を見積もり、図示のようにCPUのFV制御モードを「LOW」モードに決定する。その結果、供給電圧VLも低減することができ、消費電力を最適化できる。
また、同様にマクロタスクMT1の処理(313)が終了した時点でCPUの電源及び動作クロックを遮断する(314)ことで、消費電力を低減するようにしてもよい。本手法によるFV制御適用時のガントチャートを図19(c)に示す。この場合、CPUは「FULL」モードでマクロタスクMT1を処理し、処理期限前に処理を完了することになるが、マクロタスクMT1の完了時に動作モードを「OFF」とすることで、無駄な電力消費を回避することができる。
<コンパイラの処理フロー>
次に前述したマルチプロセッサ・アーキテクチャ上で、プロセッサユニット(PU)の特性に合わせたスケジューリングと電圧・周波数の動的変化による消費電力の最適制御を行うコードを生成するコンパイル方法と、当該手法を実装したコンパイラの処理について以下順を追って説明していく。図20に本手法を実装したコンパイラ40の処理フローを示す。
<マクロタスクの生成>
CやFortran等の高級言語で記述された逐次構造の入力プログラム400は、まず、当該プログラム構造を解析することで、繰り返しブロック(RB:Repetition Block)、サブルーチン(SB:Sub Routine)、擬似代入文ブロック(BPA:Block of Pseudo Assignment statements)の3種類の粒度が大きなマクロタスク(MT)に分割し、各マクロタスクを生成する(401)。RBはループブロックで各階層での最も外側のループであり、BPAはスケジューリングオーバーヘッドあるいは並列性を考慮し、代入文からなる複数の基本ブロックを融合あるいは分割したブロックである。図21に、上記のような入力プログラム(ソースプログラム400)の一例を示す。
<Directive指定>
なお、当該ソースプログラム400中には、予めPUの割り当てを記述することが可能であり、例えばあるサブルーチンをDSPに、またあるサブルーチンをCPUに割り当てることを明示的に指定することも可能である。その結果、当該DSPサブルーチンはコンパイラ40によりさらに並列性の解析が行われ、例えばDSPが4個ある場合、当該4個のDSPに対してコンパイラ40は並列化スケジューリングを実施する。
<データ依存・制御フロー解析>
続いて、分割生成された当該マクロタスク間の制御フロー及びデータ依存性を解析し、マクロタスクMTの実行順序関係を抽出する(402)。図21の入力プログラム400は、逐次的に記述されているため、通常のコンパイラ40によって生成される実行コードは、当該プログラムの構造と同様に逐次的な順序で実行されるが、マクロタスクMT間で見ると必ずしも記述された順序で実行する必要がないことが多い。
つまり、マクロタスクMT間において、制御またはデータ参照の依存性がない場合、特にマルチプロセッサシステムにおいては、複数のPUに複数のマクロタスクMTを配置して同時に、または順序を変更して、全体の実行時間が短くなるようスケジューリングすることが重要となる。
このようなスケジューリングを行うためには、MT間の並列性を解析する必要がある。そこで、この解析に向けた準備として、データ依存・制御フロー解析処理402により、マクロタスクMT間の実行順序関係を抽出する。
<ループレベル並列性解析>
続いて、マクロタスクMT内の中粒度レベルの並列性解析として、ループレベルの並列化を行う(403)。ループレベル並列化403では、ループの繰り返し(イタレーション)単位間のデータ依存性を解析して、各イタレーションが独立に処理できるかを判断し、可能な場合は各イタレーションを複数のPUに割り当てて並列処理を行う。
また、単一のループを複数のループに分割して並列性を高めたり、データのコピーや配列変数の拡張により、各ループ間のデータ依存性を削除することで並列化したり、また複数のループを単一のループに融合することでループ制御に必要なオーバーヘッドを軽減したり、といった様々な手法によりループの並列化を実現する。
<処理コスト解析>
次に、上記生成されたマクロタスクMTを各PUで実行した際に必要となる処理サイクルを見積もる、処理コスト解析を行う(404)。処理コスト(演算コスト)の見積もり方法としては、例えばCPUなどに関しては、乗算や加算など命令レベルで必要とするサイクル数を処理コストテーブル420にプロファイリング情報として保持しておき、当該テーブル420を参照することで、マクロタスクMTを当該PUで実行する際の逐次処理サイクル数を見積もることができる。
また、DRPやDSPなど、プログラム中から表現される命令レベルでのサイクル数の見積もりが困難な場合は、一度当該ブロックのプログラムをDRPやDSP用の実行コードを生成する夫々のローカルコンパイラを呼び出し、変換した実行コードを元にプロファイリングを行い、処理コストを求める(413)。なお、ローカルコンパイラは、PUの種類に応じて予め設定され、例えば、DSPであればDSPのローカルコンパイラプロファイリング情報を、DRPであればDRPのローカルコンパイラプロファイリング情報を用いる。
また、例えば分岐を含む場合、あるいはループのサイズや配列のサイズが、マクロタスクMTの実行前では定まらないような場合においは、ローカルなコンパイラで一度プロファイリングすることにより、精度を高めた処理コストの算出を行うこともできる。なお、本プロファイリングを行わずマクロタスクMTが分岐を含む場合は、分岐確率を50%としてコスト算出を行う。また、同じくプロファイリングを行わずループや配列のサイズが定まらない場合は、例えばループを固定回数とし、また配列宣言時の最大サイズとする、等の方法を適用する。
以上では処理コストを、処理サイクル数(時間)として定義したが、他にコストを電力として定義することで、電力が最小となるようなスケジューリングを行うことも可能である。例えば、処理サイクル数とマクロタスクMTを完了すべき処理期限から、設定可能なFV制御モード(周波数、動作電圧)のうち処理期限内で最小の消費電力となる動作モードを選択する。あるいは、PUの消費電力は、
消費電力=動作電圧2×駆動周波数
と見積もることができるので、処理期限内で消費電力が最小となるFV制御モードの組み合わせを選択し、スケジューリングすればよい。例えば、図19(b)のようにLOWモードのみで、処理を実行する場合や、図19(c)のように複数のFV制御モードを組み合わせる。あるいは、処理時間が最小かつ消費電力が最小となるFV制御モードの組み合わせを選択することもできる。
<マクロタスク間並列性解析=最早実行条件解析>
コンパイラ40はマクロタスクMTの処理コストが決定した後、データ依存・制御フロー解析処理402で抽出したマクロタスクMT間の制御フローと、データ依存性を同時に解析した結果から、マクロタスクMT間の並列性、つまり各マクロタスクMTの実行を最も早く実行してよい条件(最早実行条件)を決定する(405)。
この最早実行条件をグラフで可視的に示したものがマクロタスクグラフ(MTG)である。図21の入力プログラムを解析し生成されたMTGを、図22に示す。なお、マクロタスク間並列性解析結果は、マクロタスクグラフテーブル421として外部記憶装置に保持され、後段のコンパイル処理で使用される。なお、この外部記憶装置は、コンパイラ40を実行する図示しない計算機のものを指す。
<マクロタスクグラフの説明>
以下、図22を参照しながら、マクロタスクグラフMTGについて説明する。本グラフ中の各ノードはマクロタスクMTを示し、ノード間の実線はマクロタスク間のデータ依存関係を、ノード間の破線はマクロタスク間の制御依存関係を、ノード内の小円が条件分岐を表している。例えば、マクロタスクMT1_1(501)からMT1_2(502)及びMT1_3(503)に対して実線が伸びているが、これは粒度の大きいマクロタスクMT1_2及びMT1_3がMT1_1を実行した結果生じたデータを入力データとして用い、処理を実行しているという依存関係があることを示している。そのため、実行順序として、MT1_2及びMT1_3はMT1_1の終了後、実行できることを示す。
また、入力プログラム400から求めたマクロタスクMT1_2(502)は、複数のループやサブルーチンで構成された粒度の大きいブロックなので、コンパイラ40は当該マクロタスクMTをさらに複数のマクロタスクMTに階層的に分割する。よって、当該マクロタスクグラフMTGではMT1_2中に、別階層でさらにマクロタスクグラフMTG1_2を構成する。マクロタスクMT1_3(503)も同様に別階層のマクロタスクグラフMTGMTG1_3を構成する。
マクロタスクMT1_2(502)内のマクロタスクグラフMTG1_2(510)を見ると、タスクMT1_2_1(511)からはタスクMT1_2_2(512)、タスクMT1_2_4(514)、タスクMT1_2_5(515)に実線が延びているため、MT1_2_1(511)終了後、同時にこれら3つのタスク512、514、515を実行することが可能である。
また、タスクMT1_2_2(512)はさらにタスクMT1_2_3(513)へ依存があるが、これはMT1_2_2(512)のタスクが終了後、MT1_2_3(513)のタスクを実行すればよい。また、タスクMT1_2_4(514)及びMT1_2_5(515)からタスクMT1_2_6(516)に対して実線が延びているため、タスクMT1_2_4(514)及びタスクMT1_2_5(515)双方の実行が終了した時点でMT1_2_6(516)が実行できる。
以上のように、マクロタスクMT1_2は実行前に並列順序関係は確定されており、あらかじめ固定的(静的)にタスクをスケジューリング可能である。
続いて、マクロタスクMT1_3(503)内のマクロタスクグラフMTG(520)を見ると、マクロタスクMT1_3_1(521)には小円が存在するが、これはタスクMT1_3_1(521)が条件分岐を含むことを示している。小円からタスクMT1_3_2(522)、MT1_3_5(525)へは矢印のある破線が伸びており、また制御依存のOR条件を表す点線のアーク529が重なっているため、当該条件がタスクMT1_3_2またはMT_1_3_5の何れかに分岐することを示している。
また、タスクMT1_3_3(523)へは矢印のない破線が延びており、タスクMT1_3_3(522)への矢印のない当該破線と、タスクMT1_3_2(523)に接続される破線上には、制御依存のAND条件を表す実線のアーク528が重なっている。これは、もし当該条件で、矢印で指されているタスクMT1_3_2の方向に分岐すると、同一の分岐に制御依存しているタスクMT1_3_3が同時に実行可能なことを示している。なお、図中破線はタスクの実行が確定される制御依存関係と、データ依存しているタスクが実行されない場合の条件を表している。また、矢印がついた破線は、データ依存・制御フロー解析(402)で求めた制御フローと同一(つまり、オリジナル)であることを表す。
なお、タスクMT1_3_1(521)の条件分岐は、当該タスクMT1_3_1を実行しないと分岐方向が確定しないため、実行時の状況に応じたスケジューリングを行う必要がある。当該条件分岐が確定し、タスクMT1_3_2(522)及びタスクMT1_3_3(523)方向に分岐した場合、タスクMT1_3_2(522)及びタスクMT1_3_3(523)からタスクMT1_3_4(524)にデータ依存関係を示す実線があるため、双方のタスクMT(522、523)処理の実行が終了した時点で、タスクMT1_3_4(524)の処理を実行できる。
また、タスクMT1_3_5(525)方向に分岐した場合、同様にデータ依存関係から当該タスク525が終了した時点で、タスクMT1_3_6(526)及びタスクMT1_3_7(527)の処理を実行できる。
<プロセッサグルーピング>
次にコンパイラ40は、生成されたマクロタスクグラフMTGテーブル421を参照し、マクロタスクグラフの形状や並列性に応じた、またはユーザからの指定に応じたプロセッサのグループ化を行う(406)。
つまり、マクロタスクグラフMTGで表現された上位階層のマクロタスクMT、例えばマクロタスクMT1_2(502)、MT1_3(503)の形状、並列性を解析し、当該マクロタスクMTの処理に必要となるPU10〜17をグループ化し、当該グループに対してタスクMTを割り当てる。なお、1つのグループは、当該グループ内の特定用途プロセッサ(DSP、DRP、BMP)を制御するための汎用プロセッサ(CPU)を少なくとも一つ含む集合となる。具体的には、マクロタスクグラフMTGの構成によりにコンパイル時に適切なプロセッサPUのグループ構成が判断できる場合、コンパイラ40は特定用途プロセッサを含めたグルーピングを行う。
また、マクロタスクグラフMTGの構成によりコンパイル時にプロセッサグルーピングができない場合、つまり特殊用途プロセッサが使用すべきタスクが多階層に存在し、グルーピングが適切に行えない場合では、コンパイル時にコンパイラ40、または実行時にスケジューラとしての役割を果たす汎用プロセッサが、タスクを特定用途プロセッサグループに対し割り当てる。この際、特定用途プロセッサへの負荷が大きい場合、汎用プロセッサで処理を代行する。なお、決定したグルーピング情報は、プロセッサグルーピングテーブル422として外部記憶装置に保持され、後段の処理で使用される。
本実施形態では、図22 のマクロタスクグラフMTG1(500)においてマクロタスクMT1_2(502)とMT1_3(503)の処理コストが同等であり、これらマクロタスク内部のマクロタスクグラフMTG1_2(510)、MTG1_3(520)の実行には汎用プロセッサによる特定用途プロセッサの制御が必要であるため、2個のプロセッサグループを定義する。
次に、マクロタスクMT1_2、MT1_3の各PUに対する処理コストや並列性に応じ、各プロセッサグループ内で必要とされる特定用途プロセッサの構成を決定する。本実施形態においては、必要とされるプロセッサ構成がマクロタスクグラフMTG1上の利用可能なリソースで実現できるため、プロセッサグループを、CPU0、DSP0、DRP0、DRP1、及びCPU1、DSP1、BMP0、BMP1とコンパイル時に決定する。
<スタティックスケジュールとダイナミックスケジュール>
コンパイラ40は次にスケジューリング方法として、スタティックスケジュールかダイナミックスケジュールかを判断する(407)。夫々のスケジューリング方法の詳細は後述するが、以下簡単に説明する。まず、もし、タスクMTに条件分岐がなく最早実行条件が予め決定できるMTフローであれば、前者のスタティックスケジュールを適用し、コンパイラ40が予めタスクMTのスケジューリングを行い、同期コード及びFV制御コード(スケジューリングコード)をタスク間に挿入する。
また、もし、タスクMTに条件分岐がある、あるいはタスクMTの処理時間が実行時に変動するなど、コンパイル時に予測できないMTフローであれば、後者のダイナミックスケジュールを適用し、コンパイラ40は、分岐などの状況に応じた制御を実行時に行うスケジューリングプログラムを生成する。コンパイラ40がスケジューリングプログラム(スケジューリングコード)を生成する利点は、従来のマルチプロセッサのようにOSあるいはライブラリに祖粒度タスクの生成、スケジューリングを依頼すると、数千から数万クロックのオーバーヘッドが生じてしまう可能性があり、それを避けるためである。
<スタティックスケジューリング>
まず、スタティックスケジューリングの処理フローについて説明する。スタティックスケジューリングでは、コンパイル時にタスクMTの割り当てと実行順序がすでに決定しているため、まず、マクロタスクスケジューリング処理408により、マクロタスクテーブル421及びプロセッサグルーピングテーブル422情報を参照し、PU間における実行タスク間の同期や他タスクの起動等を行う制御情報を生成し、当該制御情報の挿入箇所を決定する。
また、さらに、タスクプログラムまたはタスクが必要とするデータを、他PUのローカルメモリLMや共有メモリSMより当該PUのローカルメモリLMにロードするといったデータ転送情報も併せて生成する。このような、データローカライゼーション手法により、ローカルメモリLMを有効に活用し、データの転送量を最小化する。以上の処理により生成されたスケジュール情報は、マクロタスクスケジュールテーブル423として、外部記憶装置に保持される。
続いて、コンパイラ40は、スタティックFVスケジューリング処理409を行う。本処理では、図18で説明したタスク並列処理実行時のFV制御概念に基づき、マクロタスクスケジューリング408で生成されたスケジュール情報(マクロタスクスケジュールテーブル)より、タスクの処理コスト及びスケジュール期限(処理期限)で決定される余裕度を判定し、当該余裕度に応じた動作周波数・供給電圧を決定するPU動作モードを設定するため、FV制御情報を生成する。当該FV制御情報は、電源・FV制御スケジュールテーブル424として、外部記憶装置に保持される。なお、余裕度は、例えば、実行開始から実行完了までの処理時間と、処理期限までの時間から求まるものであり、各PU10〜17の性能上の余裕の度合いを示す。例えば、図19(a)のように、CPU0の実行完了から処理期限までの時間が長い場合には余裕度が大きいと判定し、逆に実行完了から処理期限までの時間が短い場合には余裕度が小さいと判定できる。
また、処理期限(許容時間)は、入力プログラムに記述したり、コンパイラ40の処理時に図示しないコンソールから入力してもよい。
<ダイナミックスケジューリング>
次に、ダイナミックスケジューリングの処理フローについて説明する。ダイナミックスケジューリング時は、タスクMT内の条件分岐等の不確定要素によりコンパイル時にスケジューリング内容を決定することができない。このためコンパイラ40は、タスクMTの処理結果に基づき、プログラム実行時に動的にスケジューリングを行うスケジューリングプログラムを生成する(410)。本プログラムは、処理結果に基づきタスクMTの起動や同期、及び当該MTが必要とするデータのロードを行う。また、さらに図18で説明したタスク並列処理実行時のFV制御概念に基づき、PUの動作周波数・供給電圧を決定する動作モード(FV制御モード)を設定する。生成したスケジューリングプログラムは、電源・FV制御スケジュールテーブル424として、外部記憶装置に保持される。
<スケジューリングコードの生成>
コンパイラ40は以上の処理により、入力プログラム400のPU10〜17へのスケジューリングを完了する。これまでの処理で生成したスケジューリング情報は外部記憶装置にテーブル(421〜424)として保持されている。コンパイラ40は、当該テーブル(421〜424)にアクセスし、タスクの実行順序やデータ転送情報、及びFV制御情報を読み込み、入力プログラムに対してスタティックスケジュール部には制御コード(スケジューリングコード)を、またダイナミックスケジュール部にはスケジューリングプログラムを付加する(411)。制御コードは、例えば分散メモリ型並列計算機における並列プログラミング標準インタフェースであるMPI(Message Passing Interface)などを用いて生成する。当該コードが付加された入力プログラムは、さらに各PUの種類毎に用意されたローカルコンパイラで処理することにより、当該PUにおける実行バイナリコードに変換される(412)。なお、ローカルコンパイラは、上述のようにCPU、DSP、DRP、BMPのPUの種類毎に予め用意され、コンパイラ40から各PUの種類に応じたローカルコンパイラを呼び出して実行バイナリコードを生成するものである。
<スケジューリングの結果>
本スケジューリング結果の例を図23に示す。図23は、MTのスケジューリング結果をPU毎に時間軸で示している。本例ではCPU0がタスクの起動や同期、FV制御などの管理を行うため、最初にCPU0上にコンパイラ40が生成した制御コード550がロードされる。当該制御コード550は、各PUのFV制御を行うコード、及びCPU0においてマクロタスクMT1_1を起動するコードで表現されている。つまりCPU0は、マクロタスクMT1_1を実行するCPU0に対し動作モードをFULLにするようFV制御レジスタの値を“3”に設定する。また、他のPUに対しては処理すべきMTがないため、動作モードをOFFにするようFV制御レジスタの値を“0”に設定する。次に、CPU0は自CPU0にてマクロタスクMT1_1の処理を開始する。
CPU0でマクロタスクMT1_1処理終了後、コンパイラ40が生成した制御コード551を実行し、FV制御モードの設定を行う。次に処理すべきタスクは、マクロタスクMT1_2及びMT1_3の下位層のマクロタスクグラフMTGで指定されたタスクMT1_2_1及びタスクMT1_3_1であり、前者はCPU0にて、後者はCPU1にて実行される。
従ってCPU0はタスクMT1_3_1を処理するCPU1のFV制御レジスタを通常モード(FULL)に設定する。またCPU0に関しても、すでにFV制御モードは通常モードであるが、引き続きMT1_2_1を処理するため通常モード(FULL)としておく。
このとき、前記タスクMT1_2_1及び前記タスクMT1_3_1の処理中は、他のPU上での処理タスクは存在しないため、当該他のPUは引き続き動作モードをOFFとしておく。続いてCPU0は、自CPU0においてタスクMT1_2_1を、またCPU1においてタスクMT1_3_1の処理を開始する。
なお前述した通り、マクロタスクMTG1_2は条件分岐を含まないためコンパイル時ですでにスケジューリングが行われており(スタティックスケジューリング)、CPU0、DSP0、DRP0、DP1グループへタスクMTを割り振る。またマクロタスクMTG1_3は条件分岐を含むため、実行時にスケジューリングを行うプログラムを付加し、実行結果によってCPU1、DSP1、BMP0、BMP1のグループへタスクMTを割り振る。
続いてマクロタスクグラフMTG1_2のタスクMTグループのスケジューリングについて説明する。タスクMT1_2_1の実行がCPU0において終了すると、CPU0は制御コード552を実行し、タスクMT1_2_2を処理するためにDSP0を通常動作モードFULLとするよう、FV制御レジスタを“3”に設定する。またタスクMT1_2_4及びMT1_2_5はコンパイル時のFVスケジューリングによるタスクの余裕度判定によりDRP0、DRP1を低電力動作モードMIDDLEとするよう、FV制御レジスタを“2”に設定する。また、CPU0においては実行すべきMTはないが、スケジューラを実行しDSP0、DRP0、及びDRP1のタスクの同期管理を行っているため、スケジューラはCPU0に対して低電力動作モードLOWとするよう、FV制御レジスタを“1”に設定する。そして、タスクMT1_2_2、タスクMT1_2_4、及びタスクMT1_2_5の処理を開始する。なお、タスクMT1_2_2は当該MT処理終了後、同じくDSP0においてタスクMT1_2_3を実行することとなるため、この時点でタスクMT1_2_2終了後にタスクMT1_2_3を起動するようタスクの起動予約(タスクレディキューへのタスクの登録)をしておく。
次に前記タスクMT1_2_4及びタスクMT1_2_5の処理が双方とも終了したことをCPU0が判定すると、当該CPU0は制御コード553を実行し、CPU0はタスクMT1_2_6を処理する自CPU0の動作モードをMIDDLEに、またDRP0及びDRP1は処理すべきタスクが存在しないため、動作モードをOFFに設定し、通常よりも電圧と動作周波数を低減した状態で前記タスクMT1_2_6の処理を開始する。前記タスクMT1_2_6の処理が終了すると、CPU0は制御コード554を実行しタスクMT1_2_3の処理終了を判定すると、MTG1_2グループ内のタスク処理が完了したため、CPU0はDSP0の動作モードをOFFに設定する。
続いてMTG1_3のタスクMTグループについて説明する。マクロタスクMT1_3は内部に分岐を持つため、タスクを実行しないと分岐方向がわからない。従って、実行時の状況によりタスク、データのロード、タスクの起動、同期及びFV制御コードの管理を行うダイナミックスケジューラ555を、CPU1において実行する。当該スケジューラ555は、まずタスクMT1_3_1を実行するためCPU1の動作モードをFULLに設定し、タスクMT1_3_1を起動する。タスクMT1_3_1実行終了後、スケジューラ556は分岐方向を判定し、次に起動するタスクを判断する。
図23に示したスケジューリングでは、タスクMT1_3_2がDSP1にて、タスクMT1_3_3がBMP0にて処理される。当該処理の起動前に、スケジューラ556はFVスケジューリング結果に従いDSP1の動作モードをFULLに、またBMP0の動作モードをLOWに設定する。CPU1においては、実行すべきタスクMTはないが、スケジューラ556を実行しDSP1及びBMP0のタスク管理を行っているため、スケジューラ556はCPU1の動作モードを低電力モードLOWに設定する。
次に、CPU0上のダイナミックスケジューラ557は、前記タスクMT1_3_2及びタスクMT1_3_3の双方の処理終了を判定すると、次にタスクMT1_3_4を処理する自CPU0の動作モード(FV制御モード)をFULLに、また実行すべきタスクが存在しないDSP1及びBMP0の動作モードをOFFに設定する。そして、自CPU0において、前記タスクMT1_3_4を実行する。
以上により、異種のPU10〜17で構成されるマルチプロセッサにおいて、マルチグレイン並列処理により、実行時間が最小となるよう入力プログラムを並列化しスケジューリングした後、各PU間で処理時間が均一となるよう、PU毎にきめ細かく動作周波数制御及び電源管理を行うことで、最小の実行時間で性能を損なわずに消費電力の低減を図ることが可能となるのである。
<コンパイラが生成する目的プログラム>
コンパイラ40により、以上で説明したようなスケジュールを行うスケジューリングコードを、入力プログラム400に付加しPU毎に出力した出力プログラム(目的コード)の一例を図24及び図25に示す。図24、図25は、上記図23で示した処理を記述したもので、図24はマクロタスクMTG1_2を処理するプロセッサのグループとしてCPU0、DSP0、DRP0、DRP1の各PU用の実行コードを示す。また、図25は、マクロタスクMTG1_3を処理するプロセッサのグループとしてCPU1、DSP1、BMP0、1の各PU用の実行コードを示す。コンパイラ40の生成コードは擬似コードで表現されているが、前述したように実際はMPI等のインタフェース規格に従って表現される。
<まとめ>
以上のように、本発明によれば、多種のプロセッサユニットPUを集積するマルチプロセッサシステムにおいて、当該PUを効率よく動作させるプログラムの分割配置および制御コードを生成するコンパイラ40により、当該プロセッサシステムの性能を最大限活用しつつ、最小限の処理時間内に低電力にて効率よく処理することが可能となる。また、さらにはソフトウェア開発者がプロセッサの構成を意識することなく、短時間で極めて効率の良いプログラム作成が可能となる。
<補足>
なお、上記実施形態においては、一つのチップに複数のPU10〜17を備えたマルチプロセッサシステムに本発明を適用した例を示したが、図1に示したチップを複数備えた並列計算機に適用することも可能であり、上記と同様の作用効果を得ることができる。
また、請求項14、請求項22、請求項30において、前記プロセッサユニット毎に設定されたプロファイリング情報に基づいて前記単位ブロックを処理する処理サイクル数を求め、当該処理サイクルから前記演算サイクル時間を求めることを特徴とするマルチグレイン並列化コンパイラ。
また、請求項14、請求項22、請求項30において、前記演算サイクル時間は、前記プロセッサユニット毎に設定されたローカルコンパイラにより前記単位ブロックを実行コードに変換し、前記プロセッサユニット毎に設定されたプロファイリング情報に基づいて前記単位ブロックを処理する処理サイクル数を求め、当該処理サイクル数に基づいて前記演算サイクル時間を求めることを特徴とするマルチグレイン並列化コンパイラ。
また、請求項15、請求項23、請求項31において、前記プロセッサユニット毎に設定されたプロファイリング情報に基づいて前記単位ブロックを処理する処理サイクル数を求め、当該処理サイクルから前記電力を求めることを特徴とするマルチグレイン並列化コンパイラ。
また、請求項15、請求項23、請求項31において、前記演算サイクル時間は、前記プロセッサユニット毎に設定されたローカルコンパイラにより前記単位ブロックを実行コードに変換し、前記プロセッサユニット毎に設定されたプロファイリング情報に基づいて前記単位ブロックを処理する処理サイクル数を求め、当該処理サイクル数に基づいて前記電力を求めることを特徴とするマルチグレイン並列化コンパイラ。
また、請求項13、請求項21、請求項29において、前記単位ブロックの並列性を抽出する処理は、前記抽出した単位ブロックをマクロタスクグラフテーブルに格納し、前記単位ブロックを処理するのに必要なプロセッサユニットをグループ化してプロセッサグルーピングテーブルに格納する処理とを含み、
前記スケジューリングコードを生成する処理は、前記マクロタスクグラフテーブルとプロセッサグルーピングテーブル及びコスト情報を参照してプロセッサユニットの制御コードを生成する処理と、前記単位ブロックの実行順序に応じて前記制御コードを挿入する処理を含むことを特徴とするマルチグレイン並列化コンパイラ。
また、請求項13、請求項21、請求項29において、前記単位ブロックの並列性を抽出する処理は、前記抽出した単位ブロックをマクロタスクグラフテーブルに格納し、前記単位ブロックを処理するのに必要なプロセッサユニットをグループ化してプロセッサグルーピングテーブルに格納する処理とを含み、
前記スケジューリングコードを生成する処理は、前記マクロタスクグラフテーブルとプロセッサグルーピングテーブル及びコスト情報を参照して、動的に前記単位ブロックのスケジューリングを行うスケジューリングプログラムを生成する処理と、前記単位ブロックの実行順序に応じて前記スケジューリングプログラムを挿入する処理を含むことを特徴とするマルチグレイン並列化コンパイラ。
以上のように、本発明は、多様なPUを集積するマルチプロセッサシステムにおいて、当該PUを効率よく動作させるプログラムの分割配置および制御コードを生成するコンパイラにより、当該プロセッサシステムの性能を最大限活用しつつ、低電力にて効率よく処理することが可能となる。また、さらにはソフトウェア開発者がプロセッサの構成を意識することなく、短時間で効率良いプログラム作成が可能となる。その結果、高い演算性能を持ちかつ低電力に処理することが強く望まれる、カーナビゲーションシステムや携帯電話、情報家電向けのLSIに本発明を適用することができ、高品質の動画像や音声処理、また画像認識や音声認識といった機能を実現することが可能となる。また、自動車における情報系、制御系システム向けLSIに対しても適用することができ、自動運転や安全運転システム等を実現することが可能となる。またさらには、将来非常に高い演算性能を有しつつ低電力化が必須となる、スーパーコンピュータへの適用も可能である。
本発明の一実施形態を示すマルチプロセッサシステムのブロック図。 電源電圧生成回路のブロック図。 降圧回路のブロック図。 供給電圧選択回路のブロック図。 クロック生成回路のブロック図。 クロックパルス選択器のブロック図。 マルチプロセッサシステムの他の例を示し、電源電圧生成回路とクロック生成回路を集約したマルチプロセッサシステムのブロック図。 マルチプロセッサシステムの他の例を示し、各プロセッサユニットのFV制御レジスタを集約したFV制御テーブルを有するマルチプロセッサシステムのブロック図。 FV制御によるプロセッサユニットの動作モードを示す説明図。 ローカルメモリのFV制御を示す説明図で、(a)はローカルメモリLMを複数バンクで構成してバンク毎にFV制御を行う例を示し、(b)はローカルメモリLMを複数のアドレス区間毎にFV制御を行う例を示し、(c)複数バンクに設定したアドレス区間毎にFV制御を行う例を示す。 ローカルバスLBUSをクロスバで構成した場合の電源制御の説明図。 図11に示したローカルバスLBUSの構成図。 FV制御によるローカルメモリLMの動作モードを示す説明図。 FV制御レジスタフォーマットを示す説明図で、(a)はローカルメモリLMを4バンクで構成した場合のレジスタフォーマットを示し、(b)は同じくレジスタの設定例を示し、(c)は他のレジスタフォーマットを示す。 図8に示したFV設定テーブルのフォーマットの例を示す説明図。 FV制御レジスタのマッピングを示すマルチプロセッサシステム全体のメモリマップ。 FV制御レジスタアクセスの例を示す説明図で、(a)はCPU0がDSP0のFV制御レジスタにアクセスする例を示し、(b)はCPU0がDSP0のFV制御レジスタにアクセスする場合のオブジェクトコードを示し、(c)はOSのAPIを用いてFV制御レジスタを操作する場合のオブジェクトコードを示す。 タスクを並列処理する場合のFV制御の概念を示し、(a)はマクロタスクの並列実行依存性を示すマクロタスクグラフで、(b)はFV制御を行わない場合(FULLモード)のガントチャートを示し、(c)はCPUを継続して動作させる場合のFV制御の例を示すガントチャートで、(d)はCPUを一時的に停止させる場合のFV制御の例を示すガントチャート。 リアルタイム制約時のFV制御を示し、(a)は通常処理によるリアルタイム処理のガントチャート、(b)はCPUを継続して動作させる場合のFV制御の例を示すガントチャートで、(d)はCPUを一時的に停止させる場合のFV制御の例を示すガントチャート。 コンパイラの処理を示すフローチャート。 入力プログラムの一例を示すソースコード。 コンパイラが生成したタスク間の依存関係図。 タスク・FV制御スケジューリング結果を示す時系列的なチャート。 コンパイラが生成するコードの例を示し、CPU0、 DSP0、 DRP0、 BRP1向けのコード。 同じくコンパイラが生成するコードの例を示し、CPU1、 DSP1、 BMP0、 BMP1向けのコード。
符号の説明
10、11 CPU(プロセッサユニット)
12、13 BMP(プロセッサユニット)
14、15 DSP(プロセッサユニット)
16、17 DRP(プロセッサユニット)
18 共有メモリSM
19 ローカルバス
20 電源電圧生成回路(DCGEN)
21 クロック生成回路(CLKGEN)
24 ローカルメモリ(LM)
25 システム制御レジスタ

Claims (6)

  1. 単一または複数種類のプロセッサユニットを複数個有するマルチプロセッサシステムに実行させる目的プログラムを生成するコンパイラであって、
    前記プロセッサユニットは、特定用途プロセッサユニットと汎用プロセッサユニットとを含み、
    入力プログラムを読み込む処理と
    前記入力プログラムを解析し、前記入力プログラムを複数の粒度の単位ブロックに分割する処理と、
    前記単位ブロック間の制御依存性、及びデータ依存性を解析し、前記単位ブロックの並列性を抽出する処理と、
    前記マルチプロセッサシステムが具備する各プロセッサユニットで前記単位ブロックを処理するために必要な演算サイクル時間をコスト情報として求める処理と、
    前記コスト情報に基づいて前記入力プログラムの処理時間が最小となるように、前記単位ブロックを処理するのに必要な前記特定用途プロセッサユニットを選択し、さらに少なくともひとつの汎用プロセッサユニットを選択し、これら特定用途プロセッサユニットと汎用プロセッサユニットを1つのグループとして前記単位ブロックを割り当てるスケジューリングコードを生成する処理と、
    前記スケジューリングコードを入力プログラムに付加し、前記各プロセッサユニット毎の実行コードを生成し、目的コードとして出力する処理と、
    を計算機に実行させることを特徴とするマルチグレイン並列化コンパイラ。
  2. 単一または複数種類のプロセッサユニットを複数個有するマルチプロセッサシステムに実行させる目的プログラムを生成するコンパイラであって、
    前記プロセッサユニットは、特定用途プロセッサユニットと汎用プロセッサユニットとを含み、
    入力プログラムを読み込む処理と、
    前記入力プログラムを解析し、前記入力プログラムを複数の粒度の単位ブロックに分割する処理と、
    前記単位ブロック間の制御依存性、及びデータ依存性を解析し、前記単位ブロックの並列性を抽出する処理と、
    前記マルチプロセッサシステムが具備する各プロセッサユニットで前記単位ブロックを処理するために必要な電力をコスト情報として求める処理と、
    前記コスト情報に基づいて前記入力プログラムの処理時間が最小となるように、前記単位ブロックを処理するのに必要な前記特定用途プロセッサユニットを選択し、さらに少なくともひとつの汎用プロセッサユニットを選択し、これら特定用途プロセッサユニットと汎用プロセッサユニットを1つのグループとして前記単位ブロックを割り当てるスケジューリングコードを生成する処理と、
    前記スケジューリングコードを入力プログラムに付加し、前記各プロセッサユニット毎の実行コードを生成し、目的コードとして出力する処理と、
    を計算機に実行させることを特徴とするマルチグレイン並列化コンパイラ。
  3. 前記スケジューリングコードを生成する処理は、
    前記単位ブロックをスケジューリングによって割り当てられたプロセッサユニットで演算した際に、前記演算に必要とする時間が前記スケジューリングで許容された時間内であった場合は、
    前記プロセッサユニットの演算に際して消費する電力を低減するためプロセッサユニットに与える動作電圧及び動作クロックを変化または遮断するための制御コードを生成する処理を含むことを特徴とする請求項1または請求項2に記載のマルチグレイン並列化コンパイラ。
  4. 前記スケジューリングコードを生成する処理は、
    前記単位ブロックをスケジューリングによって割り当てられたプロセッサユニット以外のプロセッサユニットについて、動作クロック及び動作電源の供給を遮断するための制御コードを生成することを特徴とする請求項1または請求項2に記載のマルチグレイン並列化コンパイラ。
  5. 前記実行コードを生成し、目的コードとして出力する処理は、
    前記各プロセッサユニットの種類に応じたローカルコンパイラを用いて前記実行コードを生成することを特徴とする請求項1または請求項2に記載のマルチグレイン並列化コンパイラ。
  6. 前記マルチプロセッサシステムは、前記プロセッサユニットに複数のクロック周波数の内の一つを動作クロックとして供給するクロック供給部と、前記プロセッサユニットに複数の電圧の内の一つを動作電圧として供給する供給する電力供給部と、前記クロック供給部及び電力供給部がプロセッサユニットに供給する動作クロックと動作電圧とを設定するシステム制御レジスタを有し、
    前記スケジューリングコードを生成する処理は、
    前記単位ブロックをスケジューリングによって割り当てられたプロセッサユニットで演算した際に、前記演算に必要とする時間が前記スケジューリングで許容された時間内であった場合は、
    前記プロセッサユニットの演算に際して消費する電力を低減するため前記システム制御レジスタに設定する値を変更する制御コードを生成する処理を含むことを特徴とする請求項1または請求項2に記載のマルチグレイン並列化コンパイラ。
JP2005114842A 2005-04-12 2005-04-12 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ Active JP4082706B2 (ja)

Priority Applications (11)

Application Number Priority Date Filing Date Title
JP2005114842A JP4082706B2 (ja) 2005-04-12 2005-04-12 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
CN2009100075365A CN101504619B (zh) 2005-04-12 2006-04-12 多粒度并行化编译方法
US11/660,104 US7895453B2 (en) 2005-04-12 2006-04-12 Multiprocessor system and multigrain parallelizing compiler
EP06732068A EP1870792A4 (en) 2005-04-12 2006-04-12 MULTIPROCESSOR AND COMPILER SYSTEM WITH MULTIGRAIN PARALLELISM
EP13176745.1A EP2657839B1 (en) 2005-04-12 2006-04-12 Multiprocessor system and multigrain parallelizing compiler
KR20077003527A KR100861631B1 (ko) 2005-04-12 2006-04-12 멀티프로세서 시스템 및 멀티그레인 병렬화 컴파일러를 기록한 컴퓨터 판독 가능 매체
CNB2006800006660A CN100514253C (zh) 2005-04-12 2006-04-12 多处理器系统
PCT/JP2006/308161 WO2006109887A1 (ja) 2005-04-12 2006-04-12 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
EP13161131.1A EP2620840B1 (en) 2005-04-12 2006-04-12 Multiprocessor system
CN2009101466440A CN101571745B (zh) 2005-04-12 2006-04-12 多处理器系统
US12/654,956 US8812880B2 (en) 2005-04-12 2010-01-11 Multiprocessor system and multigrain parallelizing compiler

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005114842A JP4082706B2 (ja) 2005-04-12 2005-04-12 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2007166280A Division JP2007305148A (ja) 2007-06-25 2007-06-25 マルチプロセッサシステム

Publications (3)

Publication Number Publication Date
JP2006293768A JP2006293768A (ja) 2006-10-26
JP2006293768A5 JP2006293768A5 (ja) 2007-04-19
JP4082706B2 true JP4082706B2 (ja) 2008-04-30

Family

ID=37087143

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005114842A Active JP4082706B2 (ja) 2005-04-12 2005-04-12 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ

Country Status (6)

Country Link
US (2) US7895453B2 (ja)
EP (3) EP1870792A4 (ja)
JP (1) JP4082706B2 (ja)
KR (1) KR100861631B1 (ja)
CN (3) CN100514253C (ja)
WO (1) WO2006109887A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3343351A1 (en) 2016-12-28 2018-07-04 Waseda University Parallel program generating method and parallelization compiling apparatus
DE112019006739T5 (de) 2019-02-26 2021-11-04 Mitsubishi Electric Corporation Informationsverarbeitungsvorrichtung, informationsverarbeitungsverfahren und informationsverarbeitungsprogramm

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4784827B2 (ja) * 2006-06-06 2011-10-05 学校法人早稲田大学 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
JP4697805B2 (ja) * 2006-10-24 2011-06-08 ルネサスエレクトロニクス株式会社 データ処理装置
US7949887B2 (en) 2006-11-01 2011-05-24 Intel Corporation Independent power control of processing cores
JP4945410B2 (ja) * 2006-12-06 2012-06-06 株式会社東芝 情報処理装置及び情報処理方法
US7917784B2 (en) * 2007-01-07 2011-03-29 Apple Inc. Methods and systems for power management in a data processing system
JP4957729B2 (ja) * 2007-01-25 2012-06-20 日本電気株式会社 プログラム並列化方法、プログラム並列化装置及びプログラム
US8291197B2 (en) 2007-02-12 2012-10-16 Oracle America, Inc. Aggressive loop parallelization using speculative execution mechanisms
JP2007305148A (ja) * 2007-06-25 2007-11-22 Univ Waseda マルチプロセッサシステム
WO2009019788A1 (ja) * 2007-08-09 2009-02-12 Fujitsu Limited 半導体集積回路
WO2009021539A1 (de) * 2007-08-16 2009-02-19 Siemens Aktiengesellschaft Kompilieren von computerprogrammen für multicore-prozessoren und deren ausführung
JP2009064340A (ja) * 2007-09-07 2009-03-26 Murata Mach Ltd データ転送システム
JP2009069921A (ja) 2007-09-11 2009-04-02 Hitachi Ltd マルチプロセッサシステム
JP5067425B2 (ja) * 2007-09-21 2012-11-07 富士通株式会社 翻訳装置と翻訳方法および翻訳プログラムとプロセッサコアの制御方法およびプロセッサ
JP2009140304A (ja) 2007-12-07 2009-06-25 Sony Corp 半導体チップ
KR100957060B1 (ko) * 2007-12-12 2010-05-13 엠텍비젼 주식회사 명령어 병렬 스케줄러, 방법 및 그 기록매체
JP4823209B2 (ja) * 2007-12-13 2011-11-24 アラクサラネットワークス株式会社 パケット転送装置
JP2009146243A (ja) * 2007-12-17 2009-07-02 Hitachi Ltd 基板バイアス制御を活用する電力性能最適化コンパイラ及びプロセッサシステム
US8301928B2 (en) * 2008-01-18 2012-10-30 Texas Instruments Incorporated Automatic wakeup handling on access in shared memory controller
JP5214262B2 (ja) * 2008-01-30 2013-06-19 株式会社東芝 半導体集積回路及び電源制御方法
KR101418969B1 (ko) * 2008-02-27 2014-08-13 삼성전자주식회사 프로세서 및 컴파일 방법
JP4996519B2 (ja) * 2008-03-27 2012-08-08 パナソニック株式会社 仮想マルチプロセッサ、システムlsi、携帯電話機器、及び仮想マルチプロセッサの制御方法
US8176341B2 (en) * 2008-03-31 2012-05-08 Intel Corporation Platform power management based on latency guidance
US20100058086A1 (en) * 2008-08-28 2010-03-04 Industry Academic Cooperation Foundation, Hallym University Energy-efficient multi-core processor
JP5245722B2 (ja) * 2008-10-29 2013-07-24 富士通株式会社 スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム
EP2359237A4 (en) * 2008-11-28 2012-04-25 Siemens Ag AUTOMATIC CONTROL SYSTEM AND METHOD FOR PARALLELLY EXECUTING A CONTROL PROGRAM
US9323306B2 (en) * 2008-12-03 2016-04-26 Telefonaktiebolaget Lm Ericsson (Publ) Energy based time scheduler for parallel computing system
US8495342B2 (en) * 2008-12-16 2013-07-23 International Business Machines Corporation Configuring plural cores to perform an instruction having a multi-core characteristic
JP5007838B2 (ja) * 2009-03-05 2012-08-22 富士ゼロックス株式会社 情報処理装置および情報処理プログラム
JP5293289B2 (ja) * 2009-03-11 2013-09-18 富士通株式会社 マルチコアプロセッサ及びその制御方法
JP4621786B2 (ja) * 2009-04-28 2011-01-26 株式会社東芝 情報処理装置、並列処理最適化方法およびプログラム
EP2437170A4 (en) * 2009-05-25 2013-03-13 Panasonic Corp MULTIPROCESSOR SYSTEM, MULTIPROCESSOR CONTROL METHOD AND INTEGRATED MULTIPROCESSOR CIRCUIT
US8230410B2 (en) * 2009-10-26 2012-07-24 International Business Machines Corporation Utilizing a bidding model in a microparallel processor architecture to allocate additional registers and execution units for short to intermediate stretches of code identified as opportunities for microparallelization
CN101714103B (zh) * 2009-12-15 2012-11-28 中国华录·松下电子信息有限公司 基于可编程逻辑器件的任务调度器
US9176572B2 (en) 2009-12-16 2015-11-03 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US9104411B2 (en) 2009-12-16 2015-08-11 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US8909962B2 (en) 2009-12-16 2014-12-09 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
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
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
US8650426B2 (en) 2009-12-16 2014-02-11 Qualcomm Incorporated System and method for controlling central processing unit power in a virtualized system
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
US9563250B2 (en) * 2009-12-16 2017-02-07 Qualcomm Incorporated System and method for controlling central processing unit power based on inferred workload parallelism
KR101155202B1 (ko) 2009-12-24 2012-06-13 포항공과대학교 산학협력단 멀티 코어 프로세서의 전력 관리 방법, 멀티 코어 프로세서의 전력 관리 방법이 기록된 기록매체 및 이를 실행하는 멀티 코어 프로세서 시스템
WO2011079424A1 (zh) * 2009-12-31 2011-07-07 西门子公司 并行化自动控制程序的方法及编译器
US20140223439A1 (en) * 2010-02-22 2014-08-07 Analog Devices, Inc. Superscalar control for a probability computer
JP4809497B2 (ja) 2010-02-25 2011-11-09 ファナック株式会社 複数の独立したシーケンスプログラムを並列実行するプログラマブルコントローラ
US8723877B2 (en) * 2010-05-20 2014-05-13 Apple Inc. Subbuffer objects
JP5382220B2 (ja) * 2010-06-30 2014-01-08 富士通株式会社 データ復元プログラム、データ復元装置およびデータ復元方法
US8943334B2 (en) * 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
JP5581960B2 (ja) * 2010-10-14 2014-09-03 凸版印刷株式会社 半導体装置
CN101989192A (zh) * 2010-11-04 2011-03-23 浙江大学 一种程序自动并行化的方法
EP2657840A4 (en) 2010-12-22 2016-09-28 Fujitsu Ltd MULTIC UR PROCESSOR SYSTEM AND POWER CONTROL METHOD
WO2012093498A1 (en) * 2011-01-07 2012-07-12 Nec Corporation Energy-efficient resource management system and method for heterogeneous multicore processors
US8468373B2 (en) * 2011-01-14 2013-06-18 Apple Inc. Modifying performance parameters in multiple circuits according to a performance state table upon receiving a request to change a performance state
KR101754998B1 (ko) * 2011-01-27 2017-07-06 삼성전자주식회사 멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법
CN107256077A (zh) * 2011-02-10 2017-10-17 富士通株式会社 调度方法、设计辅助方法以及系统
US8799880B2 (en) * 2011-04-08 2014-08-05 Siemens Aktiengesellschaft Parallelization of PLC programs for operation in multi-processor environments
CN102207892B (zh) * 2011-05-27 2013-03-27 清华大学 一种动态可重构处理器内子单元间进行同步的方法
US8494477B2 (en) * 2011-06-24 2013-07-23 Intel Corporation Power management for an electronic device
KR20130002046A (ko) 2011-06-28 2013-01-07 삼성전자주식회사 멀티 코어를 포함하는 저장 장치의 전력 관리 방법
JP5653315B2 (ja) * 2011-07-28 2015-01-14 株式会社東芝 情報処理装置
US8918770B2 (en) * 2011-08-25 2014-12-23 Nec Laboratories America, Inc. Compiler for X86-based many-core coprocessors
JP6103647B2 (ja) * 2011-11-04 2017-04-05 学校法人早稲田大学 プロセッサシステム及びアクセラレータ
KR101893982B1 (ko) * 2012-04-09 2018-10-05 삼성전자 주식회사 분산 처리 시스템, 분산 처리 시스템의 스케줄러 노드 및 스케줄 방법, 및 이를 위한 프로그램 생성 장치
FR2989797B1 (fr) * 2012-04-24 2014-12-26 Kalray Reduction de la consommation electrique d'une matrice de processeurs
RU2012127581A (ru) * 2012-07-02 2014-01-10 ЭлЭсАй Корпорейшн Генератор исходного кода для разработки и тестирования программного обеспечения для многопроцессорных сред
RU2012127578A (ru) 2012-07-02 2014-01-10 ЭлЭсАй Корпорейшн Анализатор применимости программного модуля для разработки и тестирования программного обеспечения для многопроцессорных сред
US9619282B2 (en) 2012-08-21 2017-04-11 Lenovo (Singapore) Pte. Ltd. Task scheduling in big and little cores
US20140068581A1 (en) * 2012-08-30 2014-03-06 International Business Machines Corporation Optimized division of work among processors in a heterogeneous processing system
US9110734B2 (en) * 2012-11-12 2015-08-18 International Business Machines Corporation Power-constrained compiler code generation and scheduling of work in a heterogeneous processing system
EP2950211B1 (en) * 2013-01-23 2021-07-07 Waseda University Parallelism extraction method and method for making program
US9442559B2 (en) 2013-03-14 2016-09-13 Intel Corporation Exploiting process variation in a multicore processor
CN103257892B (zh) * 2013-05-27 2016-03-23 北京世纪瑞尔技术股份有限公司 一种基于宏组合的多任务调度方法及系统
JP6018022B2 (ja) 2013-06-14 2016-11-02 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
JP2015014833A (ja) * 2013-07-03 2015-01-22 スパンション エルエルシー 再構築可能なlsi
KR102114453B1 (ko) 2013-07-19 2020-06-05 삼성전자주식회사 모바일 장치 및 그것의 제어 방법
CN104424156A (zh) * 2013-09-09 2015-03-18 中兴通讯股份有限公司 处理器的核处理方法、装置及终端
KR101770234B1 (ko) 2013-10-03 2017-09-05 후아웨이 테크놀러지 컴퍼니 리미티드 소프트웨어 프로그램의 연산 블록을 멀티-프로세서 시스템의 코어에 할당하는 방법 및 시스템
JP6387626B2 (ja) * 2014-03-04 2018-09-12 日本電気株式会社 情報処理システム、情報処理方法、および、スケジューリングプログラム
US10180828B2 (en) * 2014-04-29 2019-01-15 Significs And Elements, Llc Systems and methods for power optimization of processors
JP6372331B2 (ja) 2014-12-05 2018-08-15 富士通株式会社 並列演算装置、並列演算システム、および並列演算プログラム
JP6072090B2 (ja) 2015-01-16 2017-02-01 京セラドキュメントソリューションズ株式会社 情報処理装置、データ処理方法
US9400685B1 (en) * 2015-01-30 2016-07-26 Huawei Technologies Co., Ltd. Dividing, scheduling, and parallel processing compiled sub-tasks on an asynchronous multi-core processor
CN105005547B (zh) * 2015-06-25 2017-08-25 浪潮电子信息产业股份有限公司 一种基于numa的多路服务器完全物理分区方法
EP3121714B1 (en) * 2015-07-23 2018-02-21 Karlsruher Institut für Technologie Computer system and method for multi-processor communication
JP6439623B2 (ja) 2015-08-05 2018-12-19 富士通株式会社 計算機、動作周波数決定プログラム及び動作周波数決定方法
CN108141648B (zh) * 2015-10-13 2021-10-26 富士通株式会社 控制系统和控制方法
US10073718B2 (en) 2016-01-15 2018-09-11 Intel Corporation Systems, methods and devices for determining work placement on processor cores
US10877816B2 (en) * 2016-04-20 2020-12-29 Samsung Electronics Co., Ltd. Optimal task scheduler
JP6808414B2 (ja) * 2016-09-21 2021-01-06 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
US10386909B1 (en) * 2016-09-28 2019-08-20 Cadence Design Systems, Inc. Method and system to mitigate large power load steps due to intermittent execution in a computation system
US10459817B2 (en) * 2017-01-18 2019-10-29 International Business Machines Corporation Evaluating performance improvement of executing instructions in a first processor over execution on a second processor
KR102475892B1 (ko) * 2017-07-26 2022-12-08 삼성전자주식회사 집적 회로, 집적 회로에게 전력을 공급하는 방법 및 시스템
JP6933052B2 (ja) * 2017-08-23 2021-09-08 富士通株式会社 情報処理装置、コンパイル方法及びコンパイルプログラム
JP7031930B2 (ja) * 2018-03-19 2022-03-08 Necプラットフォームズ株式会社 プログラム生成部、情報処理装置、プログラム生成方法、及びプログラム
JP2019179418A (ja) * 2018-03-30 2019-10-17 株式会社デンソー スケジューリング方法、スケジューリング装置
RU2685018C1 (ru) * 2018-04-24 2019-04-16 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ распараллеливания программ в вычислительной системе
RU2691860C1 (ru) * 2018-06-25 2019-06-18 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ распараллеливания программ в среде логического программирования в вычислительной системе
GB2575290B (en) * 2018-07-04 2020-12-02 Graphcore Ltd Gateway Fabric Ports
JP7087752B2 (ja) * 2018-07-11 2022-06-21 株式会社デンソー 電子装置
US10831535B2 (en) 2019-01-01 2020-11-10 International Business Machines Corporation Reducing minimum operating voltage through heterogeneous codes
RU2704533C1 (ru) * 2019-01-28 2019-10-29 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ распараллеливания программ в среде агентно-ориентированного программирования в вычислительной системе
CN111913743B (zh) * 2019-05-09 2023-04-14 杭州海康威视数字技术股份有限公司 数据处理方法及装置
JP7259656B2 (ja) 2019-09-04 2023-04-18 トヨタ自動車株式会社 車両の制御装置、車両の制御方法及び制御プログラム
JP7316902B2 (ja) 2019-10-16 2023-07-28 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
KR20210132862A (ko) * 2020-04-28 2021-11-05 삼성전자주식회사 클록 제어 방법 및 이를 위한 전자 장치
CN112257362B (zh) * 2020-10-27 2023-01-31 海光信息技术股份有限公司 逻辑代码的验证方法、验证装置以及存储介质

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1013070B (zh) * 1988-01-09 1991-07-03 北京信通电脑技术公司 直接处理接近数学公式的″机器表达式″的计算机系统
JPH0786787B2 (ja) * 1988-04-12 1995-09-20 日本電気株式会社 マイクロコンピュータ
JP3343346B2 (ja) * 1990-11-28 2002-11-11 株式会社日立製作所 消費電力制御方式、情報処理装置および複合部品
US5461266A (en) * 1990-11-27 1995-10-24 Hitachi, Ltd. Power consumption control system
US5392430A (en) * 1992-10-30 1995-02-21 International Business Machines Hierarchical scheduling method for processing tasks having precedence constraints on a parallel processing system
JP3433970B2 (ja) * 1993-05-25 2003-08-04 シャープ株式会社 デジタル電子機器用電力制御装置、該電力制御装置により電力が制御される処理装置、及び該電力制御装置を備えたデジタル電子機器用電力管理システム
JP3718251B2 (ja) * 1994-02-28 2005-11-24 株式会社ルネサステクノロジ データ処理装置
US5778237A (en) * 1995-01-10 1998-07-07 Hitachi, Ltd. Data processor and single-chip microcomputer with changing clock frequency and operating voltage
US5815715A (en) * 1995-06-05 1998-09-29 Motorola, Inc. Method for designing a product having hardware and software components and product therefor
US5996083A (en) * 1995-08-11 1999-11-30 Hewlett-Packard Company Microprocessor having software controllable power consumption
US5630110A (en) * 1996-03-01 1997-05-13 Samsung Electronics Co., Ltd. Method and apparatus for enhancing performance of a processor
JPH11272490A (ja) 1998-03-20 1999-10-08 Mitsubishi Electric Corp 診断制御システム
US6205519B1 (en) * 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
JP2000003225A (ja) * 1998-06-16 2000-01-07 Hitachi Ltd データ処理装置及びデータ処理システム
FI117523B (fi) * 1998-10-07 2006-11-15 Nokia Corp Menetelmä tehonkulutuksen säätämiseksi
US6477654B1 (en) * 1999-04-06 2002-11-05 International Business Machines Corporation Managing VT for reduced power using power setting commands in the instruction stream
JP3138737B1 (ja) 1999-10-22 2001-02-26 東京大学長 パワー制御装置及び方法並びにパワー制御プログラムを記録した記録媒体
JP4784792B2 (ja) 1999-12-22 2011-10-05 学校法人早稲田大学 マルチプロセッサ
US6587737B2 (en) * 2000-09-14 2003-07-01 Sulzer Makert And Technology Ag Method for the monitoring of a plant
JP2002215597A (ja) * 2001-01-15 2002-08-02 Mitsubishi Electric Corp マルチプロセッサ装置
JP2003099148A (ja) * 2001-09-19 2003-04-04 Sanyo Electric Co Ltd データ処理装置とこれに利用可能なシステム制御装置およびデータ変換方法
US7111178B2 (en) * 2001-09-28 2006-09-19 Intel Corporation Method and apparatus for adjusting the voltage and frequency to minimize power dissipation in a multiprocessor system
JP3794312B2 (ja) * 2001-11-08 2006-07-05 ソニー株式会社 電源電圧周波数制御回路
AU2002257172A1 (en) * 2002-04-19 2003-11-03 International Business Machines Corporation Power control of a processor using hardware structures controlled by a compiler with an accumulated instruction profile
JP3485558B1 (ja) * 2002-05-28 2004-01-13 沖電気工業株式会社 半導体集積回路
JP2004038642A (ja) 2002-07-04 2004-02-05 Renesas Technology Corp マルチプロセッサ
JP2004199139A (ja) * 2002-12-16 2004-07-15 Matsushita Electric Ind Co Ltd プロセッサシステム、命令列最適化装置、および命令列最適化プログラム
JP2004234116A (ja) 2003-01-28 2004-08-19 Hitachi Information Technology Co Ltd 電力供給課金システム及び電力供給課金方法
JP3896087B2 (ja) 2003-01-28 2007-03-22 松下電器産業株式会社 コンパイラ装置およびコンパイル方法
JP4177681B2 (ja) 2003-02-20 2008-11-05 学校法人早稲田大学 コンパイル方法、コンパイラ、およびコンパイル装置
JP4090908B2 (ja) 2003-02-21 2008-05-28 シャープ株式会社 画像処理装置および画像形成装置
US7185215B2 (en) * 2003-02-24 2007-02-27 International Business Machines Corporation Machine code builder derived power consumption reduction
US7009363B2 (en) * 2003-03-26 2006-03-07 Pathfinder Energy Services, Inc. Optimized battery life in multiple battery applications
US7134031B2 (en) * 2003-08-04 2006-11-07 Arm Limited Performance control within a multi-processor system
JP4025260B2 (ja) * 2003-08-14 2007-12-19 株式会社東芝 スケジューリング方法および情報処理システム
US6956579B1 (en) * 2003-08-18 2005-10-18 Nvidia Corporation Private addressing in a multi-processor graphics processing system
US8190863B2 (en) * 2004-07-02 2012-05-29 Intel Corporation Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
US7930539B2 (en) * 2004-08-03 2011-04-19 Hewlett-Packard Development Company, L.P. Computer system resource access control
JP4557803B2 (ja) * 2005-05-27 2010-10-06 富士通株式会社 ネットワークシステム及び通信方法
JP4457047B2 (ja) * 2005-06-22 2010-04-28 株式会社ルネサステクノロジ マルチプロセッサシステム
US7464280B2 (en) * 2005-06-22 2008-12-09 Hewlett-Packard Development Company, L.P. Power module for a plurality of processors
US7870400B2 (en) * 2007-01-02 2011-01-11 Freescale Semiconductor, Inc. System having a memory voltage controller which varies an operating voltage of a memory and method therefor

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3343351A1 (en) 2016-12-28 2018-07-04 Waseda University Parallel program generating method and parallelization compiling apparatus
DE112019006739T5 (de) 2019-02-26 2021-11-04 Mitsubishi Electric Corporation Informationsverarbeitungsvorrichtung, informationsverarbeitungsverfahren und informationsverarbeitungsprogramm
DE112019006739B4 (de) 2019-02-26 2023-04-06 Mitsubishi Electric Corporation Informationsverarbeitungsvorrichtung, informationsverarbeitungsverfahren und informationsverarbeitungsprogramm

Also Published As

Publication number Publication date
EP2657839A3 (en) 2014-08-20
KR20070061795A (ko) 2007-06-14
KR100861631B1 (ko) 2008-10-07
EP2657839B1 (en) 2020-06-03
CN101504619A (zh) 2009-08-12
EP1870792A1 (en) 2007-12-26
JP2006293768A (ja) 2006-10-26
US20070255929A1 (en) 2007-11-01
WO2006109887A1 (ja) 2006-10-19
EP2657839A2 (en) 2013-10-30
EP2620840A1 (en) 2013-07-31
US8812880B2 (en) 2014-08-19
US7895453B2 (en) 2011-02-22
CN101571745B (zh) 2012-04-04
EP2620840B1 (en) 2016-02-03
CN100514253C (zh) 2009-07-15
CN101571745A (zh) 2009-11-04
EP1870792A4 (en) 2010-11-03
CN101019084A (zh) 2007-08-15
CN101504619B (zh) 2012-08-08
US20100146310A1 (en) 2010-06-10

Similar Documents

Publication Publication Date Title
JP4082706B2 (ja) マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
US8051412B2 (en) Global compiler for controlling heterogeneous multiprocessor
JP4936517B2 (ja) ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
JP6018022B2 (ja) 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
US8438359B2 (en) Memory management method, information processing device, program creation method, and program
JP6319880B2 (ja) 並列性の抽出方法及びプログラムの作成方法
JP2007305148A (ja) マルチプロセッサシステム
JP2010079622A (ja) マルチコアプロセッサシステム、および、そのタスク制御方法
US20140137123A1 (en) Microcomputer for low power efficient baseband processing
JP2016192153A (ja) 並列化コンパイル方法、並列化コンパイラ、及び車載装置
Leupers et al. Cool mpsoc programming
Abbas et al. Run-time parallelization switching for resource optimization on an MPSoC platform
Wada et al. A parallelizing compiler cooperative heterogeneous multicore processor architecture
Aust et al. Energy-aware mpsoc for real-time applications with space-sharing, adaptive and selective clocking and software-first design
CN116303226A (zh) 粗粒度可重构阵列数据流处理器的高效执行方法及系统

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070302

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070302

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20070302

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20070326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070814

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071015

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080115

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080121

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080208

R150 Certificate of patent or registration of utility model

Ref document number: 4082706

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110222

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120222

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20150222

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S201 Request for registration of exclusive licence

Free format text: JAPANESE INTERMEDIATE CODE: R314201

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S804 Written request for registration of cancellation of exclusive licence

Free format text: JAPANESE INTERMEDIATE CODE: R314803

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