JP2008040734A - 実行コードの生成方法及びプログラム - Google Patents

実行コードの生成方法及びプログラム Download PDF

Info

Publication number
JP2008040734A
JP2008040734A JP2006213342A JP2006213342A JP2008040734A JP 2008040734 A JP2008040734 A JP 2008040734A JP 2006213342 A JP2006213342 A JP 2006213342A JP 2006213342 A JP2006213342 A JP 2006213342A JP 2008040734 A JP2008040734 A JP 2008040734A
Authority
JP
Japan
Prior art keywords
code
cpu
cache memory
amount
access
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
JP2006213342A
Other languages
English (en)
Other versions
JP4231516B2 (ja
Inventor
Koichi Takayama
恒一 高山
Naonobu Sukegawa
直伸 助川
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2006213342A priority Critical patent/JP4231516B2/ja
Priority to US11/707,146 priority patent/US7739530B2/en
Publication of JP2008040734A publication Critical patent/JP2008040734A/ja
Application granted granted Critical
Publication of JP4231516B2 publication Critical patent/JP4231516B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4432Reducing the energy consumption
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Devices For Executing Special Programs (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Power Sources (AREA)

Abstract

【課題】ソースコードのコンパイルから出力コードの実行までを迅速にしながらも、計算機の消費電力を確実に低減させる。
【解決手段】予め設定したコードを読み込んで、当該コードからCPUの演算量と、キャッシュメモリのアクセス量を解析する手順と、前記演算量とアクセス量に基づいて、前記CPUの実行比率と前記キャッシュメモリのアクセス実行比率を求める手順(S20)と、前記コードのうち、キャッシュメモリのアクセス実行比率が前記CPUの実行比率に比して高い領域を判定する手順(S22)と、前記キャッシュメモリのアクセス実行比率が高い領域に、前記低電力化機能を有効にするコードを付加する手順(S24)と、前記コードから前記計算機で実行可能な実行コードを生成する手順と、を含む。
【選択図】図10

Description

本発明は、複数のCPUを効率よく動作させる技術に関し、特に、並列処理を行うプログラムを生成するコンパイラに関する。
近年、半導体製造技術の進歩による素子の微細化により、膨大な数のトランジスタを集積することが可能となっている。この進歩によってCPU(プロセッサ)の高周波数化も進んだが、CPUの消費電力の増加や、リーク電流に起因する待機時電力の増加により、消費電力を低減しながらCPUの処理能力を向上させることが検討されている。
特に、数十ないし数百のCPUを用いて並列処理を行う大規模な並列計算機などでは、多大な電力を必要とし、また、電力に応じた計算機からの多大な発熱に対処する必要が生じている。
CPUの消費電力を低減させるべく、近年ではCPUの動作周波数と動作電圧を動的に変更可能にする省電力機構(低電力化機能)を備えたCPUが普及しつつある。この種のCPUでは、アイドル時には動作周波数と動作電圧を最低値に切り替え、高負荷時にのみ動作周波数と動作電圧を最大値に切り替える。また、負荷の状況に応じて動作周波数と動作電圧を段階的に切り替えるCPUも知られている。動作周波数と動作電圧の切替は、OSまたはOSを介したアプリケーションからCPUに対して所定のコマンドを発行することで制御することができる。
このような省電力機構を備えたCPUを備えた計算機で実行するプログラムでは、ソースコードを実行コードに変換するコンパイルの際に、省電力機構を機能させるコードを埋め込む手法が知られている(例えば、特許文献1)。
これらは、まず、ユーザプログラム(ソースコード)に対して予めパラメータを設定してコンパイラへ入力し、コンパイラは暫定コード(アセンブラ)を出力する。次に、暫定コードを実行し、実行中の状態をプロファイルとして記憶させる。
そして、暫定コードの実行によって得られたプロファイルを参照しながらユーザプログラムをコンパイルして目的とする出力コードを生成する。コンパイラは、プロファイルを参照することで計算機のリソースの利用状態などからCPUの発熱を考慮した最適な出力コード(ロードモジュール)を生成する。
特開2003−44289号
しかしながら、上記従来例ではソースコードを1回コンパイルした暫定コードを実行させて実行時のプロファイルを取得しておき、2回目のコンパイル時にプロファイルを用いて消費電力を抑制する最適化を行って出力コードを生成する構成となっている。このため、プロファイルを取得するための暫定コードの実行と、本来の目的である演算結果を得るための出力コードの実行とを行うため、同一の演算を2回行わねばならない。したがって、目的とする出力コードを実行させるまでに多大な時間を要することになって、ソースコードの入力から出力コードの実行を迅速に行うことができない、という問題があった。
また、暫定コードを実行させる演算では、消費電力の低減のためのプロファイルを取得するために出力コードの実行時と同様の演算を行うので、ひとつの出力コードを得るまでに多大な電力が必要になる、という問題があった。
さらに、上記従来例による出力コードでは、プロファイルを取得した条件と同一の条件で出力コードを実行する必要があり、同一の条件で実行できない場合には、プロファイルに基づく電力の低減を実現できない場合があった。
例えば、並列計算機を用いて並列処理を行うようなシミュレーションの出力コードでは、ループ演算の長さ(ループ長)やループ演算の実行回数を変更して出力コードの実行を行う場合がある。この場合では、プロファイルの取得時とループ長が異なるため、予定していた電力の低減を実現することができない。
また、並列計算機では並列処理を実行するノード数(またはCPU数あるいはコア数)を変更する場合がある。この場合では、ノード数の変化によってCPUの2次キャッシュメモリなどのヒット率が変化するため、プロファイルの取得時とはCPUの動作条件が異なるため、予定していた電力の低減を実現することができない、という問題があった。
そこで本発明は、上記問題点に鑑みてなされたもので、ソースコードのコンパイルから出力コードの実行までを迅速にしながらも、計算機の消費電力を確実に低減させることを目的とする。
本発明は、低電力化機能を有するCPUと、キャッシュメモリ及び主記憶を含む計算機で実行する実行コードに、前記CPUの低電力化機能を有効にするコードを付加する実行コードの生成する方法であって、
予め設定したコードを読み込んで、当該コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析する手順と、前記演算量とアクセス量に基づいて、前記CPUの実行比率と前記キャッシュメモリのアクセス実行比率を求める手順と、前記コードのうち、キャッシュメモリのアクセス実行比率が前記CPUの実行比率に比して高い領域を判定する手順と、前記キャッシュメモリのアクセス実行比率が高い領域に、前記低電力化機能を有効にするコードを付加する手順と、前記コードから前記計算機で実行可能な実行コードを生成する手順と、を含む。
また、前記計算機は、前記実行コードを並列的に実行する複数のノードを備え、前記予め設定したコードを読み込んで、当該コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析する手順は、前記コードからループ演算領域を分割する手順を分割する手順と、前記分割した領域毎にCPUの演算量とキャッシュメモリのアクセス量を解析する手順と、前記実行コードの並列実行数に応じて変化する前記ループ演算領域の演算ループ長を前記コードから求める手順と、を含み、前記演算ループ長に応じて前記CPUの演算量とキャッシュメモリのアクセス量を解析する手順と、を含む。
したがって、本発明は、メモリアクセスの実行比率が所定値を超えてCPUの実行比率よりも高い領域では、CPUの省電力機構を機能させて動作周波数または動作電圧を低減して、CPUの消費電力を確実に低減させることができる。
そして、本発明によれば、一回の処理で実行コードを作成することができ、また、生成した実行コードは、実行するノード数の変化に係わらず実行可能であるため、前記従来例のように、最初にコンパイルしたロードモジュールを実行させてプロファイルを取得し、プロファイルに基づいて再度コンパイルする場合に比して、極めて迅速に実行コードを得ることができるのである。
以下、本発明の一実施形態を添付図面に基づいて説明する。
図1は、本発明の第1の実施形態を示す計算機システムのブロック図である。並列処理を実行する計算機1は、ソースプログラム、ロードモジュール(実行コード)、コンパイラまたはデータを格納するストレージ装置2に接続される。
計算機1は、ネットワーク5を介して複数のユーザ端末(クライアント)3に接続され、複数のユーザが計算機1を利用可能となっている。なお、各ユーザ端末3にはストレージ装置4が接続され、データやソースプログラムを格納することができる。各ユーザ端末3のユーザは、計算機1にソースプログラムのコンパイルを指令したり、コンパイルで生成されたロードモジュールを実行させて演算結果を利用することができる。
図2は計算機1の構成を示すブロック図である。計算機1は複数のノード10−1〜nと、各ノード10−1〜nを接続するスイッチ16とを備える。なお、スイッチ16は図示しないネットワークインターフェースに接続されており、各ノード10−1〜nをネットワーク5に接続する。また、スイッチ16は図示しないファイバチャネルアダプタにも接続され、計算機1とストレージ装置4とを接続する。
各ノード10−1〜nは同様に構成され、演算処理を行うCPU11とデータやロードモジュールを格納する主記憶15を含んで構成される。なお、各ノード10−1〜nとスイッチ16は、各ノード10−1〜nに備えた図示しないブリッジ(例えば、チップセット)等を介して接続される。
CPU11は、1つのCPUに複数のコアを備えたもので、複数の演算器(演算ユニット)12−1,12−2はそれぞれ1次(L1)キャッシュメモリ13−1,13−2を有し、演算器12−1と12−2で共有する2次キャッシュメモリ14から構成される。
演算器12−1、12−2は、主記憶15から読み込んだデータまたは実行コードを2次キャッシュメモリ14へ一旦格納する。そして、各演算器12−1と12−2は、実行に必要な2次キャッシュメモリ14の情報をそれぞれの演算器に接続した1次キャッシュメモリ13−1または13−2へ読み込んでから演算器12−1、12−2で実行する。なお、図2において、主記憶15は各ノード10−1〜nに設けたが、図示はしないが各ノード10−1〜nからアクセス可能な共有メモリで構成しても良い。また、CPU11は単一のコアで構成されても良く、各ノード10−1〜nで並列処理を実行できればよい。
CPU11は、OSなどから所定のコマンド(低電力化コード)を受け付けると、動作周波数の変更(動作周波数の増大または減少)や動作電圧の変更(動作電圧の上昇または降下)を行う省電力機構を備えている。
また、計算機1には並列処理を効率よく行うために図示しないバリア同期機構を設けても良い。
図3、図4は計算機1で実行されるソフトウエアの概略を示すブロック図で、図3はソースプログラム(ソースコード)50をコンパイルする際のブロック図を示し、図4はコンパイルによって得られたロードモジュール500を実行する際のブロック図を示す。
図3は、ユーザ端末3が選択した任意のノード(例えばノード10−1)でコンパイルを行う例を示す。各ノード10−1〜nではOS100がそれぞれ実行されており、ノード10−1には、ユーザ端末3からの指令によって最適化コード300を出力するコンパイラ200と、最適化コード300を解析してCPU11の省電力機構を制御する低電力化コード生成モジュール400と、がロードされている。
ノード10−1は、ユーザ端末3からの指示に基づいて、コンパイラ200を実行する。コンパイラ200はストレージ装置2からユーザ端末3が指定したソースプログラム50を読み込んで、最適化コード300を出力する。最適化コード300は、例えば、中間コードやオブジェクトコード(実行コード)で構成される。そして、コンパイラ200は最適化コード300をストレージ装置2へ格納する。
次に、ユーザ端末3からの指令に基づいて、低電力化コード生成モジュール400をノード10−1で起動する。低電力化コード生成モジュール400は、最適化コード300を読み込んで、プログラムの内容を解析してCPU11の駆動周波数の切り換えや駆動電圧の切り換えを行う省電力機構を制御するための低電力化コードを最適化コード300に付加し、ロードモジュール(実行コード)500として出力する。なお、低電力化コード生成モジュール400はロードモジュール500をストレージ装置2へ格納する。
本実施形態では、ソースプログラム50は科学技術計算などのシミュレーションを行うもので、大量のループ演算を実行するため並列処理を行うものである。
図4は、コンパイラ200と低電力化コード生成モジュール400で生成されたロードモジュール500を、ユーザ端末3からの指示に基づくノード数で実行する例を示す。図4では、3つのノード10−1〜10−3でそれぞれロードモジュール500を読み込んで、実行する例を示す。各ノードのロードモジュール500は、ユーザ端末3で指定されたデータをストレージ装置2などから読み込んで、それぞれ並列して実行される。ロードモジュール500は、シミュレーションの演算結果をユーザ端末3やファイルとして出力する。
図5は、コンパイラ200と低電力化コード生成モジュール400の構成の一例を示すブロック図である。
コンパイラ200は、周知のコンパイラと同様に構成されており、入力されたソースプログラム50を解析するソース解析部210と、ソースプログラム50の解析結果に基づいて、周知の最適化法を用い、ソースプログラム50のステートメントの順序や演算順序の変更などを行って、実行効率の良い処理の最適化を行う最適化法適用部220と、実行効率の良い中間コードまたは実行コードを生成し、出力する最適化コード生成部230とを備える。
なお、コンパイラ200は、前記従来例のように、ロードモジュール500の実行状態(実行プロフィール)などを参照せずに、ソースプログラム50とユーザ端末3からの指定などに基づいてコンパイルを実行する。
低電力化コード生成モジュール400は、コンパイラ200の出力結果である最適化コードを読み込んで、CPU11の省電力機構を制御する低電力化コードを付加したロードモジュール500を生成し、出力する。
低電力化コード生成モジュール400は、最適化コード300を読み込んで、並列処理の領域(対象領域)毎に解析を行い、対象領域毎にデータ再利用テーブル430を作成し、このデータ再利用テーブル430に基づいて低電力化コードの付加の適否を決定する低電力化解析部410と、ロードモジュール500を実行する計算機1の設定(または構成)に関する情報を入力する設定入力部440と、上記決定と設定情報に基づいて低電力化コードを付加したロードモジュール500を生成するコード生成部420と、を含んで構成される。コード生成部420は、さらに、対象領域の大きさ(ループ長)に応じて低電力化コードを実行するか否かの条件分岐をロードモジュール500に付加することができる。
図6は、低電力化コード生成モジュール400で実行される処理の一例を示すフローチャートである。この処理は、ユーザ端末3からの指示に基づいて計算機1の任意のノード10−1〜nで実行される。
まず、ステップS1では使用する計算機1の設定や構成に関する情報(設定情報)をユーザ端末3から受け付ける。設定情報としては、計算機1のキャッシュの容量(2次キャッシュメモリ14の容量)や構成、動作周波数の切り換えに要する時間や駆動電圧の切り換えに要する時間などを入力する。この他、計算機1の利用するノード10−1〜nの基準となる動作周波数や、動作周波数や駆動電圧の切り換え条件(低電力化コード付加の条件分岐)を手動にて設定するようにしてもよい。
次に、ステップS2では、コンパイラ200が出力した最適化コード300を読み込む。次に、ステップS3では、最適化コード300を解析してループ演算の範囲を対象領域として抽出する。そして、CPU11の2次キャッシュメモリ14に利用するデータが収まるように対象領域を演算領域毎に分割する。
例えば、図7に示すように、最適化コード300に、X(i)を求めるループ演算と、X(i)を用いて、Y(i)を求めるループ演算を含む場合、データの依存性に基づいてこれらの2つのループ演算を対象領域310として抽出する。そして、ロードモジュール500の実行時に指定されるループ指標(ループ回数)nと並列指標(ノード数)pから複数の対象領域310−1〜310−Pに分割する。ただし、この時点で、ループ指標nと並列指標pは未定であるので、条件式として分割しておく。この例では、P個の対象領域に分割したものとする。
次に、ステップS4では、各対象領域310−1〜P毎にCPU11の演算量と、2次キャッシュメモリ14のメモリアクセス量を算出する。CPU11の演算量は、分割した対象領域310−1〜P内の演算子毎に、計算機1が演算処理を行うサイクル数を予め設定しておき、各対象領域310−1〜Pのサイクル数を演算する。例えば、図7の例では、Y(i)+Z(i)×aであるので、加算と乗算に要するサイクル数を求める。
メモリアクセス量は、各対象領域310−1〜P毎に主記憶15と2次キャッシュメモリ14の間で行われるアクセス(ロード命令またはプリフェッチ命令あるいはストア命令)の数と、データ量からアクセス量をバイト数などで算出する。
上記演算量はCPU11の利用率(実行比率)の指標となり、メモリアクセス量はS1で設定した2次キャッシュメモリ14の容量から、2次キャッシュメモリ14が実際に主記憶15との間で読み書きを行う時間の指標であるメモリアクセス実行比率を示す。
つまり、各対象領域310−1〜P毎に、演算量とメモリアクセス量(またはCPU11の実行比率とメモリアクセス実行比率)を比較することで、対象領域を処理する際に、2次キャッシュメモリ14の容量に対象領域の演算に必要なデータが収まらず、主記憶15からの読み込みが多発してCPU11の利用率が低下すると場合には、後述するようにCPU11の省電力機構を機能させることができる。逆に、メモリアクセス量が2次キャッシュメモリ14の容量以下であれば、全てのデータを主記憶15からの読み込みを行うことなくCPU11の利用率は高くなるので、後述するように省電力機構を機能させず、最大の動作周波数と最高の駆動電圧で処理することで並列処理の高速化を図ることができる。
次に、ステップS5では、各対象領域310−1〜Pからループ長(総演算回数)を決定する指標を抽出する。図7の例では、分割後の対象領域310−1〜Pのループ指標nをノードの数を示す並列指標pで除したn/pをループ長決定指標として抽出される。つまり、各対象領域310−1〜P毎の総ループ数を求める指標を抽出し、所定の変数へ代入する。
次に、ステップS6では、2次キャッシュメモリ14上のデータを再利用する時間間隔を示す指標としてループ長(n/p)を求めて所定の変数へ代入する。図7の分割した対象領域310−1〜Pでは、2×n/pがループ長となる。
次に、ステップS7では、並列処理数に依存する指標を各対象領域310−1〜Pから抽出する。図7の例では、実行するノード数を示す並列指標pを抽出する。ステップS8では、対象領域310−1〜P毎に2次キャッシュメモリ14へ読み込んだデータの再利用回数を演算する。この再利用回数は、変数の数と再利用した回数で構成される。図7の例では、2回目のループ演算でx(i−1)とZ(i)が1回目のデータを再利用しているため、再利用性は、(1回、2変数)となる。
ステップS9では、CPU11のキャッシュメモリ14の容量と、再利用するデータ量を比較するため、再利用するデータ量と、再利用するまでに2次キャッシュメモリ14へ読み込まれる他のデータ量(再利用までの他のデータ量)を求める。
S10では、上記S8で求めた再利用回数と、S9で求めた再利用までの他のデータ量と、S4〜S7で求めた演算量と、ループ長決定指標n/pと、並列指標pをデータ再利用テーブル430に格納する。
ここで、データ再利用テーブル430は、図8で示すように構成され、各対象領域310−1〜P毎に生成される。データ再利用テーブル430には、分割後の対象領域における変数名、データの性質(連続したデータまたはストライド)、データの引用間隔(バイト数)、データの引用間隔を決定する間隔制御変数、データ再利用回数、再利用までの他のデータ量、他のデータ量(バイト数)、演算量から構成される。なお、データの性質は、連続またはストライド(飛び飛び)のいずれかを設定するもので、2次キャッシュメモリ14へ読み込むデータから低電力化コード生成モジュール400が決定しても良いし、ユーザ端末3から設定するようにしてもよい。ストライドの判定は、2次キャッシュメモリ14のキャッシュラインへ読み込んだデータのうち、ひとつまたは一部のみを利用する場合をストライドと判定することができる。
なお、図8のデータ再利用テーブル430の内容は、図9に示す分割した対象領域310’の内容に基づくものである。
次に、S11では、上記データ再利用テーブル430と設定情報に基づいて、低電力化コードを付加したロードモジュール500を生成する。
図10は、上記S11で行われる低電力化コード付加のサブルーチンを示すフローチャートで、各対象領域310−1〜P毎に実行される。
まず、ステップS20では、上記S4で求めたメモリアクセス量と演算量の比率(Byte/Cycle)から対象領域のループ長n/pに依存したCPU負荷を求める。つまり、対象領域の処理が完了するまでの時間と、CPU11の実際の実行時間との比率をCPU11の実行比率とし、対象領域の処理が完了するまでの時間と、2次キャッシュメモリ14がデータの転送に要する時間との比率をメモリアクセス実行比率とし、CPU11の実行比率と2次キャッシュメモリ14のメモリアクセス実行比率の比率をCPU負荷とする。
次に、ステップ21では、各対象領域310−1〜P毎にS20で求めたCPU負荷をCPU11の平均負荷比率(以下、CPU負荷比率)とする。
なお、上記S4では、演算量をサイクル数で求め、メモリアクセス量をバイト数で求めたので、メモリアクセス量をサイクル数に変換し、
CPU負荷比率=メモリアクセス量(サイクル数)/演算量
としてもよい。なお、メモリアクセス量のサイクル数への変換は、主記憶15の転送レートからメモリアクセス量(バイト数)に応じた時間を求め、この時間をCPU11の最大動作周波数からサイクル数へ変換すればよい。
ステップ22では、CPU負荷比率を所定の切り換え条件と比較して低電力化コードの付加の有無を判定する。所定の切り換え条件は、予め低電力化コード生成モジュール400に設定した値(例えば、70%)または図6のS1で入力した周波数/電圧切り換えの条件である。CPU負荷比率が切り換え条件を超えていれば、演算器12−1,2は効率よく(ストールを起こさず)実行できるので、ステップ25に進んで低電力化コードは付加せず(または、最大の動作周波数よ最高の動作電圧を設定)に最大の動作周波数でCPU11を駆動する。
一方、CPU負荷比率が切り換え条件以下であれば、この対象領域ではメモリアクセスの時間が長く、CPU11がストールを起こす可能性が大きいため、ステップ23でCPU負荷比率に応じた低電力化コードを設定する。なお、CPU11の動作周波数と動作電圧が段階的に変更可能であれば、CPU負荷比率が小さくなるにつれて、動作周波数と動作電圧を段階的に小さくなるような低電力化コードを求める。
なお、除算命令のように1命令のサイクル数が大きい命令を含む場合では、2次キャッシュメモリ14のメモリアクセス量が多くても演算量が多くなり、CPU負荷比率は切り換え条件を超えて最大の動作周波数で駆動されることになる。このため、対象領域内のCPU11の演算時間とメモリアクセスの時間の比率を平均CPU負荷比率として演算することで、メモリアクセス量が多くても演算量が多い場合には、動作周波数や動作電圧を低下させることなく、高速な処理を実現できるのである。
そして、ステップ24では、S23で求めた低電力化コードを最適化コード300に付加し、ロードモジュール500として出力する。なお、S1で低電力化コード実行の条件分岐が設定されていれば、各対象領域310−1〜P毎に低電力化コードを実行するか否かを判定する条件分岐を付加する。なお、最適化コード300が中間コードの場合には、上記S24またはS25で計算機1の実行コードに変換してロードモジュール500を得る。
上記ステップS24で低電力化コードを付加したロードモジュール500に相当するプログラムの例を図11に示す。各対象領域310−1〜Pには、上記ステップ1で設定した条件分岐「if(n/p*3*B>M) 」が設定され、この条件分岐に設定された条件(n/p*3*B>M)を満たしたときに、低電力化コード(周波数低下指令A1)が実行される。そして、一つの対象領域が終了すると、条件分岐の設定条件を満たしていた場合には、通常の動作周波数へ戻す指令A2が実行されるようにロードモジュール500が生成される。なお、低電力化コードを実行する条件分岐は、例えば、ループ長(n/p)が長く、データ量(B)が2次キャッシュメモリ14の容量(M)に比して大きいときに実行するようにする。つまり、ロードモジュール500を実行するノード数が多いときには、各対象領域310−1〜Pのループ長は短く、データ量も少なくなってCPU負荷比率が高くなるので、演算器(演算パイプライン)12−1,2はストールすることなく低電力化コードを実行する必要はない。一方、ロードモジュール500を実行するノード数が少ないときには、各対象領域310−1〜Pのループ長は長く、データ量も多くなってCPU負荷比率が低くなるので、演算器(演算パイプライン)12−1,2はストールを起こす可能性が高いので、低電力化コードを実行させることで演算器の無駄な電力消費を防いで、計算機1の消費電力の低減を実現でき、かつ演算処理の遅延を防ぐことができる。したがって、低電力化コードを実行するか否かの判定を行う条件分岐は、ロードモジュール500の実行時のループ長に応じて行うようにすればよい。
以上のような処理により生成されたロードモジュール500を、図4で示したように計算機1にループ指標nと並列処理の指標Pを設定して所望のノード10−1〜nで実行させると、メモリアクセスの実行比率が所定値を超えてCPU実行比率よりも高い対象領域310−1〜Pでは、CPU11の省電力機構を機能して動作周波数または動作電圧を低減して、CPU11の消費電力を確実に低減させることができる。メモリアクセスの実行比率が高いときには、CPU11の演算器12−1,2は主記憶15からのデータを待ってストールしやすいため、動作周波数または動作電圧を低減させても実行コードの実行速度は低下することはない。
そして、本発明によれば、コンパイラ200と低電力化コード生成モジュール400は、1回の処理でロードモジュール500を得ることができるので、前記従来例のように、最初にコンパイルしたロードモジュールを実行させてプロファイルを取得し、プロファイルに基づいて再度コンパイルする場合に比して、極めて迅速にロードモジュール500を得ることができるのである。
さらに、ロードモジュール500は並列指標pを変更することで、実行させるノード数を任意に設定できるので、前記従来例のように再コンパイルの必要はなくなって、科学技術などのシミュレーション演算を効率よく行うことができるのである。
なお、上記第1の実施形態ではCPU11をデュアルコアで構成した例を示したが、シングルコアやクワッドコアで構成しても良い。
また、本実施形態では、低電力化コード生成モジュール400が中間コードを受け付けるようにしたため、コンパイラ200に既存のものを用いることが可能となって、低コストで低電力化コードを付加することができる。
<第2実施形態>
図12、図13は第2の実施形態を示し、前記第1実施形態のCPU11が3次キャッシュメモリ17を備える例を示す。
図12において、CPU11の2次キャッシュメモリ14は、主記憶15側に3次キャッシュメモリ14を備える。その他の構成は前記第1実施形態と同様である。
図13は、低電力化コード生成モジュール400の上記ステップS11で実行されるサブルーチンを示す。
図13において、ステップS20〜S22及びS25は、前記第1実施形態の図10と同様であり、低電力化コードを付加するステップS30以降が第1実施形態とは異なる。
ステップS22の判定で、CPU負荷比率が切り換え条件以下であれば、この対象領域ではメモリアクセスの時間が長く、CPU11がストールを起こす可能性が大きいため、ステップS31以降で低電力化コードを付加する。
ステップS31では、対象領域の演算に必要なデータの読み込み時点であれば、読み込むデータが2次キャッシュメモリ14に存在するかを判定する。2次キャッシュメモリ14に読み込むデータが存在すれば、S36へ進んでCPU負荷比率に応じた動作周波数と動作電圧を算出し、S37でS36で決定した動作周波数と動作電圧に対応する低電力化コードを付加する。
一方、2次キャッシュメモリ14に読み込むデータが存在しない場合には、S32へ進む。
ステップS32では、対象領域の演算に必要なデータの読み込み時点であれば、読み込むデータが3次キャッシュメモリ17に存在するかを判定する。3次キャッシュメモリ17に読み込むデータが存在すれば、S38へ進んで2次キャッシュメモリ14のキャッシュミスによるレイテンシとCPU負荷比率に応じた動作周波数と動作電圧を算出し、S39でS38で決定した動作周波数と動作電圧に対応する低電力化コードを付加する。
ステップS32の判定で、3次キャッシュメモリ17にも読み込むデータが存在しない場合には、S33へ進む。
ステップS33では、3次キャッシュメモリ17のキャッシュミスによるレイテンシ(主記憶15から読み込むレイテンシ)とCPU負荷比率に応じた動作周波数と動作電圧を算出し、S34ではS33で決定した動作周波数と動作電圧に対応する低電力化コードを付加する。
このように、2次キャッシュメモリ14と3次キャッシュメモリ17を備える場合では、キャッシュミスが発生した位置から、データが存在する位置に応じてレイテンシを変更し、動作周波数と動作電圧を変更すればよい。なお、レイテンシは、主記憶15や3次キャッシュメモリ17のデータ転送レートから予め設定しておけばよい。
なお、3次キャッシュメモリ17は、主記憶15側に設けた例を示したが、図示はしないがバックサイドバスに設けても良い。
<第3実施形態>
図14は、第3の実施形態を示し、前記第1実施形態の低電力化コード生成モジュール400をコンパイラに組み込んだもので、その他の構成は前記第1実施形態と同様である。
コンパイラ200Aの最適化コード生成部230は、最適化コードを低電力化コード生成モジュール400へ出力する。低電力化コード生成モジュール400は、最適化コードを解析し、前記第1実施形態と同様に低電力化コードを付加したロードモジュール500を出力する。
この例では、中間コードを出力する必要がないので、ロードモジュール500をさらに迅速に得ることができる。
なお、上記第1実施形態ないし第3実施形態では、低電力化コードを付加する対象領域を、読み込んだ最適化コードの演算領域からループ演算を選択したが、これに限定されるものではなく、予め設定したプログラム構造であればよく、サブルーチンなどに適用しても良い。
以上のように、本発明では、1回のコンパイルと低電力化コード生成モジュールの実行で、並列処理に適したロードモジュールに低電力化コードを付加することができ、並列処理に適したコンパイラまたはロードモジュール生成プログラムに適用することができる。
第1の実施形態を示す計算機システムのブロック図である。 計算機の構成を示すブロック図である。 ソースプログラムをコンパイルする際の計算機システムのブロック図を示す。 コンパイルによって得られたロードモジュールを実行する際の計算機システムのブロック図を示す。 コンパイラと低電力化コード生成モジュールの構成の一例を示すブロック図である。 低電力化コード生成モジュール400で実行される処理の一例を示すフローチャートである。 対象領域の分割の様子を示す説明図である。 データ再利用テーブルの一例を示す説明図である。 対象領域の一例を示す説明図である。 図6のS11で行われる低電力化コード付加のサブルーチンを示すフローチャート 低電力化コードを付加したロードモジュールに相当するプログラムの一例を示す説明図である。 は第2の実施形態を示し、CPUのブロック図である。 低電力化コード生成モジュール400の上記図6のステップS11で実行されるサブルーチンの他の例を示す。 第3の実施形態を示し、コンパイラのブロック図である。
符号の説明
1 計算機
14 2次キャッシュメモリ14
50 ソースプログラム
200 コンパイラ
300 最適化コード
400 低電力化コード生成モジュール
500 ロードモジュール

Claims (18)

  1. 低電力化機能を有するCPUと、キャッシュメモリ及び主記憶を含む計算機で実行する実行コードに、前記CPUの低電力化機能を有効にするコードを付加する実行コードの生成する方法であって、
    予め設定したコードを読み込んで、当該コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析する手順と、
    前記演算量とアクセス量に基づいて、前記CPUの実行比率と前記キャッシュメモリのアクセス実行比率を求める手順と、
    前記コードのうち、キャッシュメモリのアクセス実行比率が前記CPUの実行比率に比して高い領域を判定する手順と、
    前記キャッシュメモリのアクセス実行比率が高い領域に、前記低電力化機能を有効にするコードを付加する手順と、
    前記コードから前記計算機で実行可能な実行コードを生成する手順と、
    を含むことを特徴とする実行コードの生成方法。
  2. 前記低電力化機能を有効にするコードを付加する手順は、
    前記CPUの負荷に比例してCPUの動作周波数または動作電圧を決定する手順と、
    前記決定した動作周波数または動作電圧を設定するコードを付加する手順と、
    を含むことを特徴とする請求項1に記載の実行コードの生成方法。
  3. 前記予め設定したコードを読み込んで、当該コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析する手順は、
    予め設定した中間コードを読み込んで、当該中間コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析することを特徴とする請求項1に記載の実行コードの生成方法。
  4. 前記予め設定したコードを読み込んで、当該コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析する手順は、
    予め設定したソースコードを読み込んで、当該ソースコードから最適化された中間コードを生成する手順と、
    前記中間コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析することを特徴とする請求項1に記載の実行コードの生成方法。
  5. 前記予め設定したコードを読み込んで、当該コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析する手順は、
    前記コードから予め設定した演算領域を分割する手順と、
    前記分割した領域毎にCPUの演算量とキャッシュメモリのアクセス量を解析する手順と、
    を含むことを特徴とする請求項1に記載の実行コードの生成方法。
  6. 前記コードから予め設定した演算領域を分割する手順は、
    前記コードからループ演算領域を分割する手順と、を含み、
    前記分割したループ演算領域毎にCPUの演算量とキャッシュメモリのアクセス量を解析することを特徴とする請求項5に記載の実行コードの生成方法。
  7. 前記計算機は、前記実行コードを並列的に実行する複数のノードを備え、
    前記予め設定したコードを読み込んで、当該コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析する手順は、
    前記コードからループ演算領域を分割する手順を分割する手順と、
    前記分割した領域毎にCPUの演算量とキャッシュメモリのアクセス量を解析する手順と、
    前記実行コードの並列実行数に応じて変化する前記ループ演算領域の演算ループ長を前記コードから求める手順と、を含み、
    前記演算ループ長に応じて前記CPUの演算量とキャッシュメモリのアクセス量を解析する手順と、
    を含むことを特徴とする請求項1に記載の実行コードの生成方法。
  8. 前記低電力化機能を有効にするコードを付加する手順は、
    前記実行コードの実行時に、前記演算ループ長に応じて低電力化機能を有効にするコードを実行するか否かを判定する条件分岐命令を付加する手順を含むことを特徴とする請求項7に記載の実行コードの生成方法。
  9. 前記計算機のキャッシュメモリの容量を設定する手順をさらに含み、
    前記予め設定したコードを読み込んで、当該コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析する手順は、
    前記キャッシュメモリの容量に基づいて、キャッシュメモリと前記主記憶との間で転送されるデータ量から前記アクセス量を演算することを特徴とする請求項1に記載の実行コードの生成方法。
  10. 低電力化機能を有するCPUと、キャッシュメモリ及び主記憶を含む計算機で実行する実行コードに、前記CPUの低電力化機能を有効にするコードを付加するプログラムであって、
    予め設定したコードを読み込んで、当該コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析する処理と、
    前記演算量とアクセス量に基づいて、前記CPUの実行比率と前記キャッシュメモリのアクセス実行比率を求める処理と、
    前記コードのうち、キャッシュメモリのアクセス実行比率が前記CPUの実行比率に比して高い領域を判定する処理と、
    前記キャッシュメモリのアクセス実行比率が高い領域に、前記低電力化機能を有効にするコードを付加する処理と、
    前記コードから前記計算機で実行可能な実行コードを生成する処理と、
    を計算機に機能させることを特徴とするプログラム。
  11. 前記低電力化機能を有効にするコードを付加する処理は、
    前記CPUの負荷に比例してCPUの動作周波数または動作電圧を決定する処理と、
    前記決定した動作周波数または動作電圧を設定するコードを付加する処理と、
    を含むことを特徴とする請求項10に記載のプログラム。
  12. 前記予め設定したコードを読み込んで、当該コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析する処理は、
    予め設定した中間コードを読み込んで、当該中間コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析することを特徴とする請求項10に記載のプログラム。
  13. 前記予め設定したコードを読み込んで、当該コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析する処理は、
    予め設定したソースコードを読み込んで、当該ソースコードから最適化された中間コードを生成する処理と、
    前記中間コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析することを特徴とする請求項10に記載のプログラム。
  14. 前記予め設定したコードを読み込んで、当該コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析する処理は、
    前記コードから予め設定した演算領域を分割する処理と、
    前記分割した領域毎にCPUの演算量とキャッシュメモリのアクセス量を解析する処理と、
    を含むことを特徴とする請求項10に記載のプログラム。
  15. 前記コードから予め設定した演算領域を分割する処理は、
    前記コードからループ演算領域を分割する処理と、を含み、
    前記分割したループ演算領域毎にCPUの演算量とキャッシュメモリのアクセス量を解析することを特徴とする請求項14に記載のプログラム。
  16. 前記計算機は、前記実行コードを並列的に実行する複数のノードを備え、
    前記予め設定したコードを読み込んで、当該コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析する処理は、
    前記コードからループ演算領域を分割する処理を分割する処理と、
    前記分割した領域毎にCPUの演算量とキャッシュメモリのアクセス量を解析する処理と、
    前記実行コードの並列実行数に応じて変化する前記ループ演算領域の演算ループ長を前記コードから求める処理と、を含み、
    前記演算ループ長に応じて前記CPUの演算量とキャッシュメモリのアクセス量を解析する処理と、
    を含むことを特徴とする請求項10に記載のプログラム。
  17. 前記低電力化機能を有効にするコードを付加する処理は、
    前記実行コードの実行時に、前記演算ループ長に応じて低電力化機能を有効にするコードを実行するか否かを判定する条件分岐命令を付加する処理を含むことを特徴とする請求項16に記載のプログラム。
  18. 前記計算機のキャッシュメモリの容量を設定する処理をさらに含み、
    前記予め設定したコードを読み込んで、当該コードから前記CPUの演算量と、キャッシュメモリのアクセス量を解析する処理は、
    前記キャッシュメモリの容量に基づいて、キャッシュメモリと前記主記憶との間で転送されるデータ量から前記アクセス量を演算することを特徴とする請求項10に記載のプログラム。
JP2006213342A 2006-08-04 2006-08-04 実行コードの生成方法及びプログラム Expired - Fee Related JP4231516B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006213342A JP4231516B2 (ja) 2006-08-04 2006-08-04 実行コードの生成方法及びプログラム
US11/707,146 US7739530B2 (en) 2006-08-04 2007-02-16 Method and program for generating execution code for performing parallel processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006213342A JP4231516B2 (ja) 2006-08-04 2006-08-04 実行コードの生成方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2008040734A true JP2008040734A (ja) 2008-02-21
JP4231516B2 JP4231516B2 (ja) 2009-03-04

Family

ID=39030670

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006213342A Expired - Fee Related JP4231516B2 (ja) 2006-08-04 2006-08-04 実行コードの生成方法及びプログラム

Country Status (2)

Country Link
US (1) US7739530B2 (ja)
JP (1) JP4231516B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010231306A (ja) * 2009-03-26 2010-10-14 Nec Corp コンピュータシステム、ハードウェアリソース制御方法及びそのプログラム
JP2017021831A (ja) * 2010-09-23 2017-01-26 インテル コーポレイション コア単位電圧及び周波数制御の提供
JP2017532686A (ja) * 2014-10-16 2017-11-02 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 新規な低コスト、低電力高性能smp/asmpマルチプロセッサシステム
US10025368B2 (en) 2015-08-05 2018-07-17 Fujitsu Limited Computation apparatus and frequency determination method
JP2021018585A (ja) * 2019-07-19 2021-02-15 富士通株式会社 情報処理装置及び情報処理方法
US10948969B2 (en) 2014-10-16 2021-03-16 Futurewei Technologies, Inc. Fast SMP/ASMP mode-switching hardware apparatus for a low-cost low-power high performance multiple processor system
DE112020007310T5 (de) 2020-06-08 2023-06-15 Mitsubishi Electric Corporation Informations-verarbeitungssystem und steuerungsverfahren für eininformations-verarbeitungssystem
JP7436192B2 (ja) 2019-12-05 2024-02-21 ファナック株式会社 制御装置及び産業機械

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2073119A1 (en) * 2007-04-09 2009-06-24 Panasonic Corporation Multiprocessor control unit, its control method, and integrated circuit
WO2009037731A1 (ja) * 2007-09-21 2009-03-26 Fujitsu Limited 翻訳装置と翻訳方法および翻訳プログラムとプロセッサコアの制御方法およびプロセッサ
JP4339907B2 (ja) * 2007-10-24 2009-10-07 株式会社日立製作所 マルチプロセッサ向け最適コード生成方法及びコンパイル装置
US8312442B2 (en) * 2008-12-10 2012-11-13 Oracle America, Inc. Method and system for interprocedural prefetching
KR101155202B1 (ko) * 2009-12-24 2012-06-13 포항공과대학교 산학협력단 멀티 코어 프로세서의 전력 관리 방법, 멀티 코어 프로세서의 전력 관리 방법이 기록된 기록매체 및 이를 실행하는 멀티 코어 프로세서 시스템
JP5574816B2 (ja) * 2010-05-14 2014-08-20 キヤノン株式会社 データ処理装置及びデータ処理方法
JP5618670B2 (ja) 2010-07-21 2014-11-05 キヤノン株式会社 データ処理装置及びその制御方法
JP5505522B2 (ja) * 2011-02-01 2014-05-28 富士通株式会社 プログラム実行方法
JP5794010B2 (ja) * 2011-07-19 2015-10-14 富士通株式会社 情報処理装置、制御プログラムおよび制御方法
US8799693B2 (en) * 2011-09-20 2014-08-05 Qualcomm Incorporated Dynamic power optimization for computing devices
US9098309B2 (en) 2011-09-23 2015-08-04 Qualcomm Incorporated Power consumption optimized translation of object code partitioned for hardware component based on identified operations
GB2503743B (en) * 2012-07-06 2015-08-19 Samsung Electronics Co Ltd Processing unit power management
JP6042170B2 (ja) * 2012-10-19 2016-12-14 ルネサスエレクトロニクス株式会社 キャッシュ制御装置及びキャッシュ制御方法
CN103853307A (zh) * 2012-12-04 2014-06-11 鸿富锦精密工业(深圳)有限公司 电子装置及降低处理器系统功耗的方法
US10133557B1 (en) * 2013-01-11 2018-11-20 Mentor Graphics Corporation Modifying code to reduce redundant or unnecessary power usage
US9594560B2 (en) * 2013-09-27 2017-03-14 Intel Corporation Estimating scalability value for a specific domain of a multicore processor based on active state residency of the domain, stall duration of the domain, memory bandwidth of the domain, and a plurality of coefficients based on a workload to execute on the domain
US9829957B2 (en) * 2014-03-26 2017-11-28 Intel Corporation Performance scalability prediction
KR101860248B1 (ko) * 2014-03-27 2018-05-21 인텔 코포레이션 그래픽 처리 유닛 주파수의 동적 조절을 지원하는 방법 및 장치
US10180828B2 (en) * 2014-04-29 2019-01-15 Significs And Elements, Llc Systems and methods for power optimization of processors
KR101668564B1 (ko) * 2015-09-02 2016-10-21 충북대학교 산학협력단 소프트웨어 코드 리팩토링 방법 및 이를 기록한 기록매체

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030014742A1 (en) * 2001-07-09 2003-01-16 Sasken Communication Technologies Limited Technique for compiling computer code to reduce energy consumption while executing the code
JP4131909B2 (ja) 2001-07-26 2008-08-13 株式会社東芝 コンパイル方法
US6795781B2 (en) * 2002-06-27 2004-09-21 Intel Corporation Method and apparatus for compiler assisted power management
US7185215B2 (en) * 2003-02-24 2007-02-27 International Business Machines Corporation Machine code builder derived power consumption reduction
US7334143B2 (en) * 2004-04-19 2008-02-19 Hewlett-Packard Development Company, L.P. Computer power conservation apparatus and method that enables less speculative execution during light processor load based on a branch confidence threshold value
WO2006024325A1 (en) * 2004-08-31 2006-03-09 Freescale Semiconductor, Inc. Method for estimating power consumption
US7386739B2 (en) * 2005-05-03 2008-06-10 International Business Machines Corporation Scheduling processor voltages and frequencies based on performance prediction and power constraints
KR100806274B1 (ko) * 2005-12-06 2008-02-22 한국전자통신연구원 멀티 쓰레디드 프로세서 기반의 병렬 시스템을 위한 적응형실행 방법
US7861068B2 (en) * 2006-03-07 2010-12-28 Intel Corporation Method and apparatus for using dynamic workload characteristics to control CPU frequency and voltage scaling
US9582060B2 (en) * 2006-08-31 2017-02-28 Advanced Silicon Technologies Llc Battery-powered device with reduced power consumption based on an application profile data
US7853812B2 (en) * 2007-02-07 2010-12-14 International Business Machines Corporation Reducing power usage in a software application

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010231306A (ja) * 2009-03-26 2010-10-14 Nec Corp コンピュータシステム、ハードウェアリソース制御方法及びそのプログラム
JP2017021831A (ja) * 2010-09-23 2017-01-26 インテル コーポレイション コア単位電圧及び周波数制御の提供
JP2017532686A (ja) * 2014-10-16 2017-11-02 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 新規な低コスト、低電力高性能smp/asmpマルチプロセッサシステム
US10928882B2 (en) 2014-10-16 2021-02-23 Futurewei Technologies, Inc. Low cost, low power high performance SMP/ASMP multiple-processor system
US10948969B2 (en) 2014-10-16 2021-03-16 Futurewei Technologies, Inc. Fast SMP/ASMP mode-switching hardware apparatus for a low-cost low-power high performance multiple processor system
US10025368B2 (en) 2015-08-05 2018-07-17 Fujitsu Limited Computation apparatus and frequency determination method
JP2021018585A (ja) * 2019-07-19 2021-02-15 富士通株式会社 情報処理装置及び情報処理方法
JP7230719B2 (ja) 2019-07-19 2023-03-01 富士通株式会社 情報処理装置及び情報処理方法
JP7436192B2 (ja) 2019-12-05 2024-02-21 ファナック株式会社 制御装置及び産業機械
DE112020007310T5 (de) 2020-06-08 2023-06-15 Mitsubishi Electric Corporation Informations-verarbeitungssystem und steuerungsverfahren für eininformations-verarbeitungssystem

Also Published As

Publication number Publication date
US7739530B2 (en) 2010-06-15
US20080034236A1 (en) 2008-02-07
JP4231516B2 (ja) 2009-03-04

Similar Documents

Publication Publication Date Title
JP4231516B2 (ja) 実行コードの生成方法及びプログラム
CN108268278B (zh) 具有可配置空间加速器的处理器、方法和系统
US8296746B2 (en) Optimum code generation method and compiler device for multiprocessor
US9977664B2 (en) Information processing device and information processing method in heterogenous multi-cores having different architectures
US20190101952A1 (en) Processors and methods for configurable clock gating in a spatial array
JP4496255B2 (ja) マシン・コード・ビルダによって得られる電力消費低減
US5966534A (en) Method for compiling high level programming languages into an integrated processor with reconfigurable logic
US8543993B2 (en) Compiler, compile method, and processor core control method and processor
US20180189063A1 (en) Processors, methods, and systems with a configurable spatial accelerator
US8893104B2 (en) Method and apparatus for register spill minimization
US20220100680A1 (en) Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits
US20140189708A1 (en) Terminal and method for executing application in same
Araujo et al. Challenges in code generation for embedded processors
CN110852930B (zh) 一种基于OpenCL的FPGA图处理加速方法和系统
CN104346132A (zh) 应用于智能卡虚拟机运行的控制装置及智能卡虚拟机
CN103838616A (zh) 基于树型程序分支的计算机程序即时编译方法
CN103019774A (zh) 一种dsp处理器的动态重载方法
US8775147B1 (en) Algorithm and architecture for multi-argument associative operations that minimizes the number of components using a latency of the components
CN115878188B (zh) 一种基于sve指令集的池化层函数的高性能实现方法
JP2023527227A (ja) プロセッサ、処理方法、および関連デバイス
Bernabé et al. Auto-tuning techniques for linear algebra routines on hybrid platforms
Haaß et al. Automatic custom instruction identification in memory streaming algorithms
US20230116546A1 (en) Method for compilation, electronic device and storage medium
JP4158458B2 (ja) 情報処理装置、その情報処理方法
US11455272B2 (en) Energy efficient microprocessor with index selected hardware architecture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080520

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080715

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080812

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081014

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4231516

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111212

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121212

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20131212

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees