JPH08101777A - 命令列最適化装置 - Google Patents

命令列最適化装置

Info

Publication number
JPH08101777A
JPH08101777A JP6261394A JP26139494A JPH08101777A JP H08101777 A JPH08101777 A JP H08101777A JP 6261394 A JP6261394 A JP 6261394A JP 26139494 A JP26139494 A JP 26139494A JP H08101777 A JPH08101777 A JP H08101777A
Authority
JP
Japan
Prior art keywords
instruction
program
instruction sequence
register
optimization
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
JP6261394A
Other languages
English (en)
Other versions
JP3392545B2 (ja
Inventor
Yukihiro Ide
出 進 博 井
Takashi Yoshida
田 尊 吉
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP26139494A priority Critical patent/JP3392545B2/ja
Priority to US08/536,180 priority patent/US5790874A/en
Publication of JPH08101777A publication Critical patent/JPH08101777A/ja
Application granted granted Critical
Publication of JP3392545B2 publication Critical patent/JP3392545B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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

  • Devices For Executing Special Programs (AREA)
  • Power Sources (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【目的】 情報処理装置用制御プログラムの作成段階で
消費電力を低減させるための最適化処理を行うことがで
きる、命令列最適化装置を提供する。 【構成】 プログラムを記憶するプログラムメモリとこ
のプログラムメモリから命令バスを介して前記プログラ
ムを取り込む演算処理部とを備えた情報処理装置が使用
するための前記プログラムを最適化する命令列最適化装
置において、前記プログラムを構成する各命令につい
て、相互の依存関係を解析する命令列解析手段と、この
命令列解析手段で解析された依存関係に影響を与えない
範囲で前記命令の順序を変更することによって、この命
令を前記プログラムメモリから前記演算処理部に転送す
る際に前記命令バスに現れるビット列間のハミング距離
を低減させる命令列変更手段とを備える。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、例えば情報処理装置の
制御プログラム等を最適化するための命令列最適化装置
に関するものである。
【0002】
【従来の技術】近年のマルチメディアの発展に伴って、
例えばブックコンピュータ、ノートコンピュータ、携帯
電話等の携帯型情報処理装置が大きな普及を見せてい
る。
【0003】このような携帯型情報処理装置の制御部の
概略構成を、図26に示す。同図に示したCPU(Centr
al Processing Unit) 2610において、実行ユニット
2611は、制御プログラムを構成する各命令を実行す
る。また、入出力部2612は、実行ユニット2611
が実行する命令のアドレスを順次アドレスバス2631
に出力するとともに、このアドレスに対応する命令を命
令バス2632から取り込む。レジスタ部2613は、
実行ユニット2611による命令の実行に伴って生じた
データを一時的に記憶する。
【0004】一方、プログラムメモリ2620におい
て、記憶部2621には、制御プログラムを構成する各
命令が予め記憶されている。また、入出力部2622
は、アドレスバスから入力されたアドレスに対応する命
令を記憶部2621から読み出して、命令バス2632
に出力する。
【0005】このような構成において、CPU2610
による制御を行う際には、まず、実行ユニット2611
が実行する命令のアドレスが、アドレスバス2631を
介して、CPU2610の入出力部2612からプログ
ラムメモリ2620の入出力部2622に送られる。こ
れにより、プログラムメモリ2620は、指定されたア
ドレスに対応する命令を記憶部2621から読み出し、
入出力部2622から出力する。CPU2610の入出
力部2612は、この命令を命令バス2632を介して
入力し、実行ユニット2611に送る。そして、実行ユ
ニット2611がこの命令を実行することによって、情
報処理装置の制御を行っている。
【0006】このようにして、実行ユニット2611が
命令の実行を行っているときに、一時的に記憶する必要
のあるデータが生じた場合、このデータはCPU261
0内のレジスタ部2613に格納されるとともに、必要
に応じて読み出される。
【0007】ここで、図26に示したような情報処理装
置に使用する制御プログラムは、予め作成されて、情報
処理装置の製造時に、プログラムメモリ2620に格納
される。かかる制御プログラムの開発においては、高級
言語或いはアセンブリ言語のコンパイル等を行って目的
プログラム(すなわちプログラムメモリ2620に格納
するプログラム)を作成する手段において、様々な最適
化処理が施される。この最適化処理としては、例えば、
制御プログラムの実行時間を短縮するための最適化処理
や、この制御プログラムの格納に使用されるメモリ領域
を低減させるための最適化処理などが、すでに知られて
いる。
【0008】
【発明が解決しようとする課題】上述したような情報処
理装置においては、従来より、消費電力の低減が要求さ
れている。特に、携帯型の情報処理装置では、連続使用
できる時間を向上させるために、消費電力の低減が要求
されている。また、携帯型以外の情報処理装置において
も、環境保全やエネルギー消費削減の観点から、消費電
力の低減が要求されている。
【0009】情報処理装置の内部回路の消費電力Pは、
以下のような式で表される。
【0010】P=α・C・Vdd2 ・n・f+Ps ここで、αは稼働率、Cは回路全体のキャパシタンス、
Vddは電源電圧、nは回路の素子数、fは動作周波数、
Ps は待機時の消費電力である。
【0011】従来は、これらの各パラメータの値が小さ
くなるようにハードウエアを構成することによって、消
費電力の低減が図られていた。
【0012】しかしながら、このようなハードウエア上
の措置だけでは、消費電力を十分に低減させることはで
きなかった。
【0013】本発明は、このような従来技術の欠点に鑑
みてなされたものであり、情報処理装置用制御プログラ
ムの作成段階で消費電力を低減させるための最適化処理
を行うことができる、命令列最適化装置を提供すること
を目的とする。
【0014】
【課題を解決するための手段】
(1)第1の発明に係わる命令列最適化装置は、プログ
ラムを記憶するプログラムメモリとこのプログラムメモ
リから命令バスを介して前記プログラムを取り込む演算
処理部とを備えた情報処理装置が使用するための前記プ
ログラムを最適化する命令列最適化装置において、前記
プログラムを構成する各命令について、相互の依存関係
を解析する命令列解析手段と、この命令列解析手段で解
析された依存関係に影響を与えない範囲で前記命令の順
序を変更することによって、この命令を前記プログラム
メモリから前記演算処理部に転送する際に前記命令バス
に現れるビット列間のハミング距離を低減させる命令列
変更手段と、を備えたことを特徴とする。 (2)第2の発明に係わる命令列最適化装置は、データ
を一時的に記憶する複数のレジスタと、プログラムを記
憶するプログラムメモリと、このプログラムメモリから
命令バスを介して取り込んだ命令にしたがって前記レジ
スタに対するデータの書き込み/読み出しを行う演算処
理部とを備えた情報処理装置が使用するためのプログラ
ムを最適化する命令列最適化装置において、前記プログ
ラムを構成する各命令中ののレジスタ番号を認識するレ
ジスタ番号認識手段と、このレジスタ番号認識手段で認
識された前記レジスタ番号の有効範囲を認識するレジス
タ有効範囲認識手段と、このレジスタ有効範囲認識手段
が認識した前記有効範囲に影響を与えない範囲で前記レ
ジスタ番号を変更することによって、このレジスタ番号
を含む命令を前記プログラムメモリから前記演算処理部
に転送する際に前記命令バスに現れるビット列間のハミ
ング距離を低減させる命令列変更手段と、を備えたこと
を特徴とする。 (3)第3の発明に係わる命令列最適化装置は、プログ
ラムを記憶するプログラムメモリとこのプログラムメモ
リから命令バスを介して前記プログラムを取り込む演算
処理部とを備えた情報処理装置が使用するための前記プ
ログラムを最適化する命令列最適化装置において、前記
プログラムを構成する各命令の一部または全部につい
て、同じ命令を意味する他のビットパターンを記憶する
記憶手段と、前記プログラム中の命令を前記記憶手段に
記憶されたビットパターンに置換えることによって、こ
の命令を前記プログラムメモリから前記演算処理部に転
送する際に前記命令バスに現れるビット列間のハミング
距離を低減させる命令列変更手段と、を備えたことを特
徴とする。 (4)第4の発明に係わる命令列最適化装置は、プログ
ラムを記憶するプログラムメモリとこのプログラムメモ
リから命令バスを介して前記プログラムを取り込む演算
処理部とを備えた情報処理装置が使用するための前記プ
ログラムを最適化する命令列最適化装置において、前記
プログラム中の命令または命令列について、同じ処理結
果を得ることができる他の命令または命令列を選定する
選定手段と、前記プログラム中の命令または命令列を前
記選定手段で選定された命令または命令列と置換えるこ
とによって、この命令または命令列を前記プログラムメ
モリから前記演算処理部に転送する際に前記命令バスに
現れるビット列間のハミング距離を低減させる命令列変
更手段と、を備えたことを特徴とする。 (5)第5の発明に係わる命令列最適化装置は、プログ
ラムを記憶するプログラムメモリとこのプログラムメモ
リから命令バスを介して前記プログラムを取り込む演算
処理部とを備えた情報処理装置が使用するための前記プ
ログラムを最適化する命令列最適化装置において、前記
プログラム中の命令または命令列について、同じ処理結
果を得ることができる他の命令または命令列を選定する
選定手段と、前記プログラム中の命令または命令列およ
び前記選定手段で選定された命令または命令列につい
て、これらの命令または命令列を前記プログラムメモリ
から前記演算処理部に転送する際の前記命令バスにおけ
る消費電力を、ハミング距離を考慮して試算する演算手
段と、前記プログラム中の命令または命令列を前記選定
手段で選定された命令または命令列と置換えることによ
って、前記演算手段が試算した消費電力を低減させる命
令列変更手段と、を備えたことを特徴とする。
【0015】
【作用】
(1)第1の発明に係わる命令列最適化装置によれば、
プログラムを構成する各命令について相互の依存関係を
解析し、この依存関係に影響を与えない範囲で命令の順
序を変更することによってこの命令をプログラムメモリ
から演算処理部に転送する際に命令バスに現れるビット
列間のハミング距離を低減させることとしたので、情報
処理装置の消費電力を低減させることができる。 (2)第2の発明に係わる命令列最適化装置によれば、
プログラムを構成する各命令のレジスタ番号を認識し、
続いて、このレジスタ番号の有効範囲を認識し、そし
て、この有効範囲に影響を与えない範囲でレジスタ番号
を変更することによって、このレジスタ番号を含む命令
が転送される際に命令バスに現れるビット列間のハミン
グ距離を低減させることとしたので、情報処理装置の消
費電力を低減させることができる。 (3)第3の発明に係わる命令列最適化装置によれば、
同じ命令を意味する他のビットパターンをプログラム中
の命令と置換えることによって、この命令をプログラム
メモリから演算処理部に転送する際に命令バスに現れる
ビット列間のハミング距離を低減させることとしたの
で、情報処理装置の消費電力を低減させることができ
る。 (4)第4の発明に係わる命令列最適化装置によれば、
同じ処理結果を得ることができる他の命令または命令列
をプログラム中の命令または命令列と置換えることによ
って、この命令または命令列をプログラムメモリから演
算処理部に転送する際に命令バスに現れるビット列間の
ハミング距離を低減させることとしたので、情報処理装
置の消費電力を低減させることができる。 (5)第5の発明に係わる命令列最適化装置によれば、
プログラム中の命令または命令列、および、この命令ま
たは命令列と同じ処理結果を得ることができる他の命令
または命令列の消費電力を試算し、この消費電力が小さ
い命令または命令列に置換することとしたので、情報処
理装置の消費電力を低減させることができる。
【0016】
【実施例】以下、本発明の実施例について、図面を用い
て説明する。
【0017】(実施例1)実施例1として、第1の発明
の一実施例(請求項1〜4に対応する)について説明す
る。
【0018】図1は、第1の発明(請求項1に対応す
る)の概念を概略的に示すフローチャートである。同図
に示したように、第1の発明においては、まず、プログ
ラムを構成する各命令について、命令列解析手段を用い
て、相互の依存関係を解析する(ステップS100)。
そして、この依存関係に影響を与えることなく命令バス
上に現れるビット列間のハミング距離が低減されるよう
に、命令の順序を変更する(ステップS101)。そし
て、この命令順序の変更により、命令バスにおける消費
電力の低減が実現される。
【0019】このステップS101では、まず、消費電
力低減化手段(第1の発明の「命令列変更手段」に相当
する)を用いて、命令順序の変更と、このときのハミン
グ距離の判定とを行う(ステップS102)。次に、判
定されたハミング距離を所定の基準値と比較する(ステ
ップS103)。ここで、基準値は、予め定められた値
でもよいし、それまでに消費電力低減化手段で判定され
たハミング距離の最低値であってもよい。そして、消費
電力低減化手段で判定されたハミング距離が基準値より
も小さい場合は、この命令の順序を最適化の結果として
出力し、この最適化処理を終了する(ステップS10
4)。一方、判定されたハミング距離が基準値よりも大
きい場合は、他の命令順序について、同様の処理(ステ
ップS102,S103)を繰り返す。
【0020】次に、図1を具体化した例(請求項1〜3
に対応する)について、図2のフローチャートを用いて
説明する。
【0021】なお、ここでは、実行ユニットおよび命令
バスがともに32ビットの情報処理装置(図14(a)
参照)で使用される制御プログラムの最適化に第1の発
明を適用した場合を例にとって説明する。
【0022】図2において、ステップS200では、制
御プログラムを、基本ブロックに分割する。ここで、基
本ブロックとは、例えば式や代入文の並びのような、途
中から外部への分岐が起こらず、また、外部から途中へ
の分岐も起こらないプログラムブロックをいう。基本ブ
ロックへの分割が終了すると、次に、この基本ブロック
内の各命令シーケンスに対して、それらの命令の依存関
係およびレジスタの依存関係を解析し、命令の入れ換え
によって処理の因果律を侵さない範囲を特定する。そし
て、このようにして特定された各範囲を識別するための
識別子をプログラムに付加する。
【0023】ステップ200における処理は、従来から
知られているような他の最適化処理においても利用され
る処理であるので、ここでは詳細の説明を省略する。こ
のような処理を開示した文献としては、例えば以下のよ
うなものがある。
【0024】Z.Li and P-C.Yew, ”Efficient Interpro
cedual Analysis fir Program Parallelization and Re
structuring,”Proc.ACM SIGPLAN PPEALS,pp85-97,198
8.S.Jain and C.Thompson,”An Efficient Approach to
Dataflow Analysis ina Multiple Pass Global Optimi
zer, ”Proc.SIGPLAN’88 Cof.on Prog.Lang.Design an
d Implementation(PLDI’88),pp.154-163,1988. 次に、ステップS201で、基本ブロックごとに最適化
処理を行う。以下、このステップS101の処理手順に
ついて説明する。
【0025】まず、ステップS202により、初期設定
を行う。図2において、変数LastComは、前回に
最適化処理を行った基本ブロックの最後の命令が代入さ
れている。初期設定においては、この変数LastCo
mに、デフォルト値(命令ビット列のひとつ)を代入す
る。このデフォルト値としては、どのような値を使用し
てもよく、例えば、全ビット“1”や全ビット“0”で
あってもよい。但し、現実的には、統計的に最も頻繁に
出現する命令や、最終的にリンクされるヘッダ・プログ
ラム(プロローグ・プログラム、すなわち、OSから目
的のユーザが作成したプログラムを起動させ、実行終了
後のOSに戻るためのプログラム)或いはランタイム・
ルーチンなどの最終命令などをデフォルト値とすること
が好ましい。
【0026】以降のステップS203〜S212では、
ハミング距離を最小にするための処理が行われる。ここ
で示す手順は、命令の順番を順次変更し、可能な全パタ
ーンを試行することによって最適化を行う、素朴且つ確
実な「しらみつぶし」による方法を用いている。なお、
複雑なデータ構造の基本ブロックの場合は、特別な手法
を用いて高速処理を行うことも有効であるが、本発明で
は特に限定されるものではない。
【0027】ステップS203においては、全ての処理
が終了したか否かの判定を行う。本実施例における最適
化処理は、基本ブロックごとに行われるので、すべての
基本ブロックに対する処理が終了した時点で終了する。
この判定の結果、処理を行っていない基本ブロックが残
っている場合には、ステップS204以降の処理を実行
する。
【0028】ステップS204では、基本ブロック内の
最適化処理が終了したか否かの判定を行う。この最適化
処理は、基本ブロック内の各命令の実行順序を置き換え
ることによって行われる。注目している基本ブロックに
対する処理は、命令の順序依存やレジスタ依存などに矛
盾を生じさせない全ての可能な置き換え方(順列)につ
いて試行し終わっている場合に終了し、ステップS21
3に進む。一方、全ても置き換え方の試行を終了してい
ない場合は、ステップS205以降の最適化処理を続行
する。
【0029】ステップS205では、ブロック内の最適
化に先立つ初期設定を行う。図2において、変数Hd_
sumは、注目している基本ブロック内での命令間のハ
ミング距離の総和を示し、変数Hd_bounは変数L
astComと注目している基本ブロックの先頭命令と
のハミング距離である。また、変数Hd_total
は、変数Hd_sumと変数Hd_bounとの和を示
し、変数Hd_minは、変数Hd_totalの最小
値を示している。この変数Hd_minに、初期設定と
して、“∞”を代入する。ここで、“∞”はいかなる数
字よりも大きい値であるものとする。
【0030】ステップS206では、注目している基本
ブロック内のハミング距離の総和を求め、変数Hd_s
umに代入する。この総和は、隣接する命令のビット・
パターンを比較し、対応する桁のビットの値が異なって
いる場合を“1”として累積加算することにより簡単に
求めることができる。
【0031】ステップS207では、ステップ206と
同様にして、前回処理した基本ブロックの最後の命令
(変数LastCom)と今回注目している基本ブロッ
クの先頭命令とのハミング距離を求め、変数Hd_bo
unに代入する。この操作を行うことによって、基本ブ
ロック間にまたがる最適化処理が可能となる。
【0032】ステップS208では、現在の命令シーケ
ンス・パターンにおける命令間のハミング距離の総和、
すなわち変数Hd_sumと変数Hd_bounとの和
を算出して、変数Hd_totalに代入する。
【0033】ステップS209では、ステップS208
で得られたHd_totalの値と、現在までの試行に
よって得られたHd_totalのうちの最小値である
Hd_minとが、比較される。そして、Hd_tot
al≧Hd_minの場合は、異なる命令シーケンス・
パターンについての試行をさらに行うべく、ステップS
212以降を実行する。一方、Hd_total<Hd
_minの場合は、ステップS210,S211を実行
した後、ステップS212以降を実行する。
【0034】ステップS210,S211では、変数の
更新を行う。まず、ステップS210においては、Hd
_totalの値をHd_minに代入する。また、ス
テップS211においては、このHd_minに対応す
る命令シーケンス・パターンを、変数MinHdSeq
uenceに記憶する。
【0035】ステップS212においては、命令シーケ
ンスの入れ換えを行う。ここでは、基本ブロック内の命
令の順番を入れ換えることにより、まだ試行していない
命令シーケンスを生成して、ステップS204に戻る。
この命令の入れ換えにおいては、ステップS200で行
った解析の結果に基づいて、因果律に矛盾が生じないよ
うにする。
【0036】以上説明したステップS203〜S212
からなる処理を反復して行うことにより、最適化を行う
ことができる。
【0037】すべての命令シーケンス・パターンについ
ての試行を終了すると(ステップS204)、続いて、
ステップS213を実行する。ステップS213では、
最適化された命令シーケンス(変数MinHdSequ
enceに記憶されている)を、最適化の結果として出
力する。
【0038】ステップS214では、変数LastCo
mの更新を行う。すなわち、この変数LastCom
に、変数MinHdSequenceに記憶された最後
の命令を代入する。
【0039】そして、以上の説明と同様にして、次の基
本ブロックについて、ステップS203以降の処理を実
行する。
【0040】次に、本実施例の最適化処理を実際に行う
場合について、図3に示したようなプログラムを用いる
場合を例にとって説明する。
【0041】図3のプログラムは、整数の内積演算を行
うためのプログラムであり、C言語で記述されている。
【0042】図4〜図7は、図3に示したプログラムを
“Sun SPARC Cコンパイラ”でコンパイルし
た場合のアセンブリ・ソース・プログラムリストを示し
ている。図4〜図7において、第1カラムはライン番
号、第2カラムはアドレス、第3カラムはオブジェクト
・コード、第4カラムはアセンブリ・ソースを、それぞ
れ示している。なお、C101〜C313およびB1〜
B6は、説明のための符号である。ここで、アセンブリ
文法やニーモニック等については、公知技術であるので
説明を省略するが、これらを開示した文献としては例え
ば以下のようなものがある。
【0043】SPARC International,Inc.,The SPARC Arc
hitecture Manual Version 8,Prectice-Hall,Inc.A Sim
on and Schuster Company Englewood Cliffs,New Lerse
y 07632. 本実施例の最適化処理装置に入力されるのは、図4〜図
7に示したようなアセンブリ・ソースである。そして、
このアセンブリ・ソースは、図2にステップS200に
よって基本ブロックが検索される。これにより、このプ
ログラムは、図4〜図7にB1〜B6で示したような6
個の基本ブロックに分割される。
【0044】さらに、各基本ブロック内の命令の依存関
係が解析される。図8および図9は、依存関係の解析結
果を示す有向グラフである。ここで、図8は基本ブロッ
クB1(図4参照)の有向グラフであり、図4のC10
1〜C104はそれぞれ図8のノードN101〜N10
4に対応している。同様に、図9は基本ブロックB3
(図5参照)の有向グラフであり、図5のC301〜C
313はそれぞれ図9のノードN301〜N313に対
応している。また、ノードN100,N300は有向グ
ラフのトップを表すダミー・ノードであり、ノードN1
05,N314は有向グラフのボトムを表すダミー・ノ
ードである。さらに、アークA101〜A105,A3
01〜A314は命令の依存関係を示し、矢印の逆の順
番に命令を実行してはならないことを示している。基本
ブロック内の命令の順序関係は、このような有向グラフ
を作成することによって管理する。
【0045】まず、第1の基本ブロックB1の最適化処
理について説明する。基本ブロックB1は、本プログラ
ムを実行するために内部状態を保存するためのプロロー
グ処理である。図8の有向グラフに示したように、4個
の命令C101〜C104は、この順番でしか実行でき
ないので、そのまま出力される。
【0046】第2の基本ブロックB2の最適化処理につ
いては説明を省略するが、この基本ブロックB2の処理
の終了時には、最後の命令C204としての“nop”
がLastComに記憶されている。
【0047】次に、第3の基本ブロックB3の最適化処
理を行う。基本ブロックB3においては、図9の有向グ
ラフに示したように、“C301”、“C302〜C3
04”、“C305”、“C306〜C308”相互間
で命令シーケンスの順序を入れ換えることは可能である
が、“C302〜C304”や“C306〜C308”
内で命令の順序を入れ換えることはできない。また、C
309〜C313は、この順番でしか実行できず、C3
01〜C308よりも先に実行することはできない。
【0048】まず、命令シーケンス・パターンを図5の
とおり、すなわちC301,C302・・・C313と
した場合について、図2に示したような最適化処理ステ
ップS205〜S211を行う。このとき、LastC
omには、上述したように、基本ブロックB2の最後の
命令C204としての“nop”が記憶されている。ま
た、最小ハミング距離Hd_minには、初期設定とし
て“∞”が代入されている。
【0049】図10は、基本ブロックB2の最後の命令
C204および基本ブロックB3の各命令C301〜C
313のビット・パターンを示している。このようなビ
ット・パターンについて、Hd_sum,Hd_bou
n,Hd_totalを算出すると(図2のステップS
206〜S208参照)、Hd_sum=161、Hd
_boun=13となり、したがってHd_total
=174となる。
【0050】ここで、最小ハミング距離Hd_min=
∞であるので、ステップS209(図2参照)での比較
の結果、Hd_minにはHd_total=174が
代入され(ステップS210)、さらに、図5に示した
ような命令シーケンスが変数MinHdSequenc
eに記憶される(ステップS211)。
【0051】次に、命令の順序を入れ換えた場合につい
て、同様の処理(ステップS205〜S211)を行
う。
【0052】そして、入れ換えが可能な命令シーケンス
のすべてについての試行が終了すると、変数MinHd
Sequenceに記憶されている命令シーケンスを、
命令シーケンスの最適化の結果として出力する(ステッ
プS213)。
【0053】ステップS213で出力された命令シーケ
ンスのビットパターンを図11に示す。また、参考例と
して、最悪の(すなわち、ハミング距離の総和が最大に
なる)ビットパターンを図12に示す。図11における
ハミング距離の総和Hd_totalは130となる。
また、図12におけるハミング距離の総和Hd_tot
alは196となる。すなわち、本実施例によれば、最
適化処理によって、基本ブロックB3を実行する際の命
令バスのスイッチング回数を最適化前の74.7%とす
ることができ、また、最悪の場合の66.3%とするこ
とができた。
【0054】以下、同様にして第4〜第6の基本ブロッ
クB4〜B6についての最適化処理を行うが、これらの
各ブロックB4〜B6内では命令の順番を入れ換えるこ
とはできないので、そのまま出力して処理を終了する。
【0055】次に、本実施例に係わる命令列最適化装置
の変形例(請求項4に対応する)について、図13を用
いて説明する。
【0056】プログラム中の命令によっては、命令フォ
ーマットの中に“do not care ”のビット、すなわち
“1”あるいは“0”のどちらであっても、その命令の
動作に影響を与えないビットを含む場合がある。例え
ば、上述の基本ブロックB3において、命令C303,
C304,C307,C308の12ビット目から6ビ
ット目(ビット〈11:5〉)は、“do not care ”の
ビットである(図10参照)。このようなビットの値を
適当に変更することによって、隣接する命令間でのハミ
ング距離を低減させることができる場合がある。
【0057】図13は、“do not care ”のビットの値
を変更することによってハミング距離を低減させるため
の処理の一例を示すフローチャートである。
【0058】図13に示したような処理を、図2のステ
ップS206に換えて実行することにより、“do not c
are ”のビットを考慮して、さらなるハミング距離の低
減を図ることができる。
【0059】同図において、ステップS1301では、
初期設定として、変数Hd_sumに初期値“∞”を代
入する。
【0060】次に、ステップS1302において、本処
理が終了したか否かの判定を行う。本処理においては、
“do not care ”の全ビットの値を変更しつつ、以下の
ような試行を行う。そして、“do not care ”のビット
の“1”,“0”の組み合わせについてのすべての試行
を終了すると、本処理を終了する。
【0061】ステップS1303では、現時点での“do
not care ”のビット・パターンについて、隣接する命
令間でのハミング距離の総和を求め、変数Hd_sum
_currentに代入する。
【0062】ステップS1304では、Hd_sumと
Hd_sum_currentとの大小比較を行う。こ
こで、Hd_sum≧Hd_sum_currentで
あれば、ステップS1305でHd_sumにHd_s
um_currentの値を代入したのち、ステップS
1306へ進む。一方、Hd_sum<Hd_sum_
currentであれば、ステップS1305を実行す
ることなく、そのままステップS1306へ進む。
【0063】ステップS1306では、“do not care
”のビット・パターンを、まだ試行していないビット
・パターンに変更する。
【0064】このような処理を、例えば基本ブロックB
3の最適化前のプログラム(図10参照)においては、
ハミング距離の総和Hd_sum,Hd_totalを
10だけ低減させることができる。
【0065】以上説明したようにして最適化を行った制
御プログラムを情報処理装置のプログラムメモリに格納
し、この制御プログラムを用いてCPU等の制御を行う
ことにより、命令バスにおける消費電力を低減させるこ
とが可能となる。
【0066】本実施例に示した手順は、最適化を入力デ
ータに対して順次実行する1パス方式のものである。そ
のため、最終的に得られた命令例は、ハミング距離が最
小でない場合もあり得る。これは、基本ブロックの境界
の最適化において、注目している基本ブロックの一つ前
の基本ブロックの最終命令しか考慮していないためであ
る。したがって、ハミング距離をさらに低減させるため
には、例えば、注目している基本ブロックの次の基本ブ
ロックやさらに次の基本ブロック等をも考慮する方法等
が考えられる。しかし、単純な処理で迅速に最適化を行
うためには、基本ブロックに分割して処理を行う方が望
ましい。
【0067】また、アセンブリ・ソースに対して本実施
例に係わる最適化処理と他の最適化処理(例えば、制御
プログラムの実行時間を短縮するための最適化処理や、
この制御プログラムの格納に使用されるメモリ領域を低
減させるための最適化処理など)を行う場合には、各最
適化処理を行う順番に係わらず、本実施例の効果を得る
ことができる。しかし、本実施例の効果を最も有効に得
るためには、本実施例に係わる最適化を最後に行うこと
が望ましい。ここで、本実施例の最適化処理を最後に行
う場合には、他の最適化処理の結果を変更してしまう場
合が考えられるが、このような不都合の防止は、ステッ
プS100(図1参照)の依存解析のフェイズにおいて
考慮すればよい。すなわち、図8、図9に示したような
有向グラフにおいて、他の最適化処理の結果を変更しな
いように制約の設定を行えばよい。
【0068】以上説明した本実施例では、実行ユニット
および命令バスがともに32ビットの情報処理装置で使
用される制御プログラムの最適化を例にとった。すなわ
ち、本実施例で最適化された制御プログラムは、図14
(a)に示したような、命令を一度に1個ずつ読み出し
て、フェッチ、発行、デコード、実行を行う情報処理装
置の制御に使用されることを前提としていた。したがっ
て、最適化処理において考慮すべきハミング距離は、図
15(a)に示すように、隣接する命令間のハミング距
離である。
【0069】しかしながら、図14(b)に示したよう
に、今日ではCPUの多くは一度に複数の命令の読み出
し、フェッチ、発行が行える構成となっている。このよ
うなCPUを用いる場合、最適化を行う際に考慮すべき
ハミング距離は、隣接する命令間のハミング距離ではな
く、命令バスの同じフィールド、同じビット位置に割り
当てられる命令間のハミング距離である。すなわち、図
14(b)に示したように、一度に2命令ずつ命令を読
み出すような構成のCPUの制御プログラムを最適化す
る場合は、図15(b)に示したように、1つおきの命
令間(例えば、C301とC303、C302とC30
4等)のハミング距離が低減されるように最適化を行え
ばよい。このような場合、2個づつの命令をビット結合
(コンカチネント)して得られたビット列を作成するこ
ととすれば、本実施例の最適化装置をそのまま用いて最
適化処理を行うことができる。
【0070】図16(a)は、一度に4命令ずつ命令を
読み出すような構成の装置を示している。このような場
合も、図16(b)に示したように、3つおきの命令間
(例えば、C301とC305、C302とC306
等)のハミング距離が低減されるように最適化を行えば
よい。そして、4個づつの命令をビット結合して得られ
たビット列を作成することとすれば、本実施例の最適化
装置をそのまま用いて最適化処理を行うことができる。
【0071】また、情報処理装置によっては、内部の命
令バスのバンド幅と外部の命令バスのバンド幅とが異な
る場合がある。図17は、内部の命令バスのバンド幅は
128ビットであるが、外部の命令バスのバンド幅は3
2ビットである場合を示している。このような場合に
は、内部バスについては3命令おきの命令間でハミング
距離の低減を行い、外部バスについては隣接する命令間
でハミング距離の低減を行えばよい。どちらを優先する
か、或いは互いに妥協するのかは、消費電力の低減に対
する関与の度合い等に応じて、適宜決定すればよい。
【0072】(実施例2)実施例2として、第2の発明
の一実施例(請求項5、6に対応する)について説明す
る。
【0073】なお、ここでは、実行ユニットおよび命令
バスがともに32ビットの場合を例にとって説明する。
【0074】本実施例の命令列最適化装置においては、
レジスタに割り当てられるべき変数に注目して、制御プ
ログラムの最適化を行う。すなわち、その変数が現れる
命令列のある区間でビットの変化量を見て、最小となる
レジスタ番号を割り当てていく。
【0075】本実施例では、c=a−b、c=a/b等
において、aをソース、bをターゲット、cをデスティ
ネーションとし、aの値を保持するレジスタをソース・
レジスタ、bの値を保持するレジスタをターゲット・レ
ジスタ、cの値を保持するデスティネーション・レジス
タと称することとする。そして、32ビットの命令のう
ち、左側MSBから数えて、1ビット目〜10ビット目
および21ビット目〜27ビット目を命令コードのフィ
ールドとし、11ビット目〜15ビット目をデスティネ
ーション・レジスタのフィールドとし、16ビット目〜
20ビット目をソース・レジスタのフィールドとし、2
7ビット目〜32ビット目をターゲットレジスタのフィ
ールドとする。
【0076】あるレジスタ番号に格納されるデータの有
効範囲は、このレジスタ番号がデスティネーションのレ
ジスタ番号として現れる命令によってデータがレジスタ
に格納されてから、この格納データが必要とされる命
令、すなわち、このレジスタ番号がソースレジスタ或い
はターゲットレジスタとして現れる命令までである。当
然ながら、一つのレジスタ番号は複数の変数或いはデー
タの一時記憶場所として使い回しをして効率化を図って
いる。したがって、プログラム中で、1個のレジスタ番
号がある一つのレジスタデータを保管している範囲を知
るには、コンパイラの最適化部でレジスタ番号を割り当
てる際に作られるレジスタ割当テーブルを解析し、有効
範囲テーブルを作製することが必要となる。
【0077】有効範囲テーブルは、レジスタ割当テーブ
ルから容易に作製することができる。通常、コンパイラ
では、ソースプログラムからデータフローグラフ或いは
依存グラフを生成する。そして、このグラフを用いて、
ある変数のデータまたは一時的な演算の中間結果を示す
データの保持のためにレジスタを割り当てていく。ここ
で、従来は、変数が現れるとレジスタを割り当てテーブ
ルに登録し、データフローグラフ或いは依存グラフから
不要になったと判断された変数についてはレジスタの割
当テーブルからエントリーを削除していた。そして、こ
れにより、あるレジスタ番号のレジスタに保持されてい
るデータが有効なアドレスの範囲、すなわち、あるいロ
ード命令或いは演算結果の書き込みにより有効なデータ
が書き込まれてからそのデータを必要とする最後の演算
命令或いはストア命令が出現するまでの有効期間を判断
していた。
【0078】レジスタ番号を割り当てる際に、例えば、 c=a+b c=c*d というソースプログラムがあった場合、 a:レジスタ0 b:レジスタ1 c:レジスタ2 d:レジスタ3 とし、コンパイル後のプログラムを (1) add r0,r1,r2 mul r2,r3,r2 としてもよいが、乗算結果としてのcのみをレジスタ5
に格納すること、すなわち、 (2) add r0,r1,r2 mul r2,r3,r5 としてもよい。この場合には、ソースプログラムの変数
cに対し、複数のレジスタ番号を割り当てることにな
る。従来は、上記プログラム(1)のように、例えばS
PARCのレジスタウインドウのグローバルレジスタの
ようにレジスタに特殊な意味または機能がある場合を除
いては、レジスタリソースの問題からレジスタからのデ
ータの退避が必要ないときには複数のレジスタ番号への
割り付けをできるだけ避けている。これに対して、本実
施例では、上記プログラム(2)のように、複数のレジ
スタへの割り当てを行うものとする。これにより、評価
対象の評価範囲を分割することができるので、評価範囲
が狭まり、評価対象を増加させることができる。一方、
上述のようにレジスタに特殊な意味・機能がある場合に
は、もともと割り当てられていたレジスタと同じ機能を
有するレジスタ以外には割り当てることができないの
で、選択範囲が狭くなり、注意が必要である。
【0079】有効範囲テーブルを作成した後は、注目す
るレジスタ番号についてハミング距離を求め、割り付け
可能な他のレジスタ番号の再割り当てを行う。この再割
り当てを行う際には、さらに複数のレジスタに割り当て
ることを試みることとして、評価範囲の分割を図ること
も可能である。
【0080】また、本実施例では、複数のレジスタ番号
について同時に評価することも可能である。同時に評価
を行うレジスタ番号を1つに限定すると、置き換えが可
能なレジスタ番号の数が限定されるが、複数のレジスタ
番号について同時に評価することにより、これらの複数
のレジスタ番号を互いに置き換えが可能なレジスタ番号
として置き換えの最適化を行うことができる。
【0081】さらに、レジスタファイルの再割り当てを
行う段階は、コンパイラでレジスタ割り当てを行うとき
でもよいし、一旦割り当てを行った後であってもよい。
【0082】次に、本実施例の命令列最適化装置の具体
的な例について、図18〜図20を用いて説明する。
【0083】図18は、本実施例の命令列最適化装置が
行う最適化処理の手順を説明するためのフローチャート
である。
【0084】まず、高級言語或いはアセンブリ言語で作
製されたソース・プログラムをコンパイルし、さらに他
の最適化処理を施すことにより、中間コード(アセンブ
リ・コード)を作製する(ステップS1801)。この
ようにして得られた中間コードのプログラム例を、図1
9(a)に示す。
【0085】次に、レジスタ割当テーブルを作製し、さ
らに、このレジスタ割当テーブルから有効範囲テーブル
を作製する(ステップS1802)。図19(a)に示
したプログラムの有効範囲テーブルを、図20に示す。
【0086】そして、今回の試行で注目するデータを選
択し(ステップS1803)、この注目データに割当ら
れたレジスタ番号を、ハミング距離が最低となるような
レジスタ番号と置き換える(ステップS1804)。こ
のとき、有効範囲の境界での命令のハミング距離も考慮
し、この境界におけるハミング距離も小さくなるような
最適化を行う。
【0087】ここで、レジスタ番号0x1cに割り当て
られていたデータが注目デ−タである場合について考え
る。このデータの有効範囲は、図20の有効範囲テーブ
ルより、アドレス0101からアドレス1000までで
あることがわかる。すなわち、かかるデータについて
は、アドレス0101〜1000について評価すればよ
い。なお、図19(a)のプログラムでは、アドレス1
101の命令でレジスタ番号0x1cに新たなデータが
格納されているが、評価対象外なので評価しない。
【0088】図19(a)のプログラムでは、レジスタ
番号0x1cの前後でのハミング距離の総和は14とな
っている。ここで、ハミング距離の総和を最小にする他
のレジスタ番号を探すと、レジスタ番号0,2に置き換
えることによってハミング距離の総和を8にできること
がわかる。ここでは、レジスタ番号2については有効範
囲が重複しているので、レジスタ番号0x1cをレジス
タ番号0に置き換えることとする。これにより、図19
(b)に示したようなプログラムを得ることができる。
【0089】プログラムの置き換えが終了すると、続い
て、すべてのデータについて最適化が終了したか否かを
判定する(ステップS1805)。そして、最適化が終
了していないデータが残っている場合には、そのデータ
についてステップS1803〜S1805を実行する。
一方、すべてのデータについて最適化が終了している場
合には、最適化処理後のプログラムを出力し、最適化処
理を終了する。
【0090】本実施例によれば、以上説明したようにし
て最適化を行った制御プログラムを情報処理装置のプロ
グラムメモリに格納し、この制御プログラムを用いてC
PU等の制御を行うことにより、命令バスにおける消費
電力を低減させることが可能となる。
【0091】なお、本実施例では、実行ユニットおよび
命令バスがともに32ビットの場合を例に採って説明し
たが、複数ワードのアドレスを同時に転送するような場
合にも、第2の発明を適用できることはもちろんであ
る。例えば4ワードバウンダリで転送する場合には、注
目する命令の4ワード前の命令および4ワード後の命令
とのハミング距離について評価を行えばよい。
【0092】(実施例3)次に、実施例3として、第3
の発明の一実施例(請求項7に対応する)について説明
する。
【0093】本実施例では、“add”命令に第3の発
明を適用した場合を例に採って説明する。
【0094】命令機能コードを作成するとき、例えばS
PARCの命令機能コードを参照すると、“add”命
令は“000000”であるが、この“add”命令等
は非常に出現頻度が高い命令であるので、本実施例で
は、“000000”に加えて“111111”も“a
dd”命令となるように、命令体系を作成する。すなわ
ち、本実施例の命令列最適化装置で最適化された制御プ
ログラムを使用する情報処理装置においては、“000
000”および“111111”を“add”命令であ
るとしてデコードするように、CPUの命令デコーダが
構成されるものとする。これにより、コンパイラは、オ
ブジェクト・コードを作製する際に、命令機能コードの
フィールドに“000000”または“111111”
のいずれかを割り当てることができる。ここで、“ad
d”命令の前後の命令の命令機能コードのフィールドが
“001110”および“110110”であったとす
ると、“add”命令の命令機能コードに“00000
0”を選択した場合のハミング距離は7であり、“ad
d”命令の命令機能コードに“111111”を選択し
た場合のハミング距離は5である。したがって、この場
合には、コンパイラは、add”命令の命令機能コード
に“111111”を選択する。
【0095】次に、本実施例の命令列最適化装置の具体
的な例について、図21および図22を用いて説明す
る。
【0096】図21は、本実施例の命令列最適化装置が
行う最適化処理の手順を説明するためのフローチャート
である。
【0097】まず、高級言語或いはアセンブリ言語で作
製されたソース・プログラムをコンパイルし、さらに他
の最適化処理を施すことにより、中間コード(アセンブ
リ・コード)を作製する(ステップS2101)。この
とき、“add”命令の命令機能コードは“00000
0”となっているものとする。
【0098】次に、各命令について、本実施例を適用す
る命令であるか否か、すなわち命令機能コードのフィー
ルドを複数割り当てられている命令(ここでは“ad
d”命令)であるか否かを、判断する(ステップS21
02)。
【0099】そして、本実施例を適用する命令であると
判断された場合は、この命令に対して、置換が可能なビ
ットパターン(ここでは“111111”)を選出する
(ステップS2103)。
【0100】さらに、この命令に対応するビットパター
ンのすべてについて、その前後の命令とのハミング距離
を算出し、互いに比較することによって、ハミング距離
が最低となるようなビットパターンを選択する(ステッ
プS2104)。図22に、“add”命令についての
最適化処理を行ったプログラムの例を示す。この例で
は、先に現れた“add”命令では命令機能コードを
“000000”とした方がハミング距離が小さいので
置換を行わず、後に現れた“add”命令では命令機能
コードを“111111”とした方がハミング距離が小
さいので置換を行っている。
【0101】プログラムの置換が終了すると、続いて、
すべてのデータについて最適化が終了したか否かを判定
する(ステップS2105)。そして、最適化が終了し
ていないデータが残っている場合には、そのデータにつ
いてステップS2103〜S2105を実行する。一
方、すべてのデータについて最適化が終了している場合
には、最適化処理後のプログラムを出力し、最適化処理
を終了する。
【0102】本実施例によれば、以上説明したようにし
て最適化を行った制御プログラムを情報処理装置のプロ
グラムメモリに格納し、この制御プログラムを用いてC
PU等の制御を行うことにより、命令バスにおける消費
電力を低減させることが可能となる。
【0103】(実施例4)次に、実施例4として、第4
の発明の一実施例(請求項8に対応する)について説明
する。
【0104】本実施例では、1種類の動作を行うための
実現方法が複数ある場合に、前後の命令とのハミング距
離が最も小さくなるように、その実現方法に係わる命令
を選択する。例えば、レジスタ0x0dにデータ“0”
を書き込む場合、SPARCのようにレジスタ番号0が
書き込みは意味がないが読み出しはデータ“0”を出力
する特別なレジスタとして定義されている場合、その実
現方法としては、以下のようなものがある。これらの実
現方法(すなわち命令)のうちで、前後の命令とのハミ
ング距離が最も小さくなるものを選択して、その命令を
置き換えることとする。
【0105】 mov r0,rd (0x0dにデータ“0”を移す命令) add r0,r0,rd (0+0を0x0dに格納させる命令) mul r?,r0,rd (ある値に0を掛けた値を0x0dに格納させる命令) mul r0,r?,rd (0にある値を掛けた値を0x0dに格納させる命令) xor r?,r?,rd (ある値と、これと同じ値との排他的論理和を取った結
果を0x0dに格納させる命令) sll r0.r?,rd (0をある値だけ右にシフトさせた値を0x0dに格納
させる命令) srl r0,r?,rd (0をある値だけ左にシフトさせた値を0x0dに格納
させる命令) また、他の具体例としては、イミディエイト加算命令に
よるものがある。イミディエイト加算に対して、イミデ
ィエイト部分を2の補数としたイミディエイト減算は、
演算機能としてはまったく同じである。例えば、 a=b+5 と、 a=b−(−5) とは、同じ演算として扱われる。ここで、イミディエイ
ト加算とイミディエイト減算とを置き換えた場合、イミ
ディエイトデータを表す命令のフィールドが反転するの
で、両式を置き換えることによってハミング距離を低減
することができる場合がある。
【0106】本実施例において、置き換えを行う候補を
選出するためには、例えば、いわゆるライブラリを予め
作製しておき、ある命令を評価するときにこのライブラ
リに置き換え候補が登録されているか否かを検索すれば
よい。検索の結果、置き換え候補が検索された場合に
は、この置き換え候補を採用した場合とハミング距離を
比較する。また、イミディエイト加算とイミディエイト
減算とを置き換えるためには、ライブラリに、イミディ
エイト加算の置き換え候補として、イミディエイト減算
を登録しておけばよい。このとき、イミディエイトデー
タを変換する方式或いは手順もライブラリに登録してお
けば、イミディエイト減算が検索されることによって変
換方式・手順も得られるようにすることができる。例え
ば、命令フィールドをイミディエイト減算に置き換える
とともに、イミディエイトデータを2の補間を取ったも
のに置き換えるといった手順を採用することができる。
そして、このような手順で得られた命令データを、ハミ
ング距離の比較対象として採用する。また、単にライブ
ラリの検索を行うのではなく、検索が可能であるか否か
を判断した後で、可能である場合には検索を行うことと
してもよい。
【0107】次に、本実施例の命令列最適化装置の具体
的な例について、図23および図24を用いて説明す
る。
【0108】図23は、本実施例の命令列最適化装置が
行う最適化処理の手順を説明するためのフローチャート
である。
【0109】まず、高級言語或いはアセンブリ言語で作
製されたソース・プログラムをコンパイルし、さらに他
の最適化処理を施すことにより、中間コード(アセンブ
リ・コード)を作製する(ステップS2301)。
【0110】次に、各命令について、本実施例を適用す
る命令であるか否か、すなわちライブラリに置き換え候
補が登録されている命令であるか否かを、判断する(ス
テップS2302)。
【0111】そして、本実施例を適用する命令であると
判断された場合は、ライブラリの検索を行って、置換が
可能な命令を選出する(ステップS2303)。また、
このとき、命令動作を解析して同等の命令を生成するこ
ととしてもよい。
【0112】さらに、本実施例を適用する命令およびラ
イブラリで検索された命令について、その前後の命令と
のハミング距離を算出する。そして、各算出結果を互い
に比較することによって、ハミング距離が最低となるよ
うな命令を選択する(ステップS2304)。図24に
おいて、(a)は本実施例による最適化を行う前のプロ
グラム例であり、(b)は最適化後のプログラム例であ
る。同図において“addi”命令(イミディエイト加
算命令)を“subi”命令(イミディエイト減算命
令)に置き換えることにより、その前後の命令との間の
ハミング距離を26から20に低減させることができ
た。
【0113】命令の置換が終了すると、続いて、すべて
のデータについて最適化が終了したか否かを判定する
(ステップS2305)。そして、最適化が終了してい
ないデータが残っている場合には、そのデータについて
ステップS2303〜S2305を実行する。一方、す
べてのデータについて最適化が終了している場合には、
最適化処理後のプログラムを出力し、最適化処理を終了
する。
【0114】本実施例によれば、以上説明したようにし
て最適化を行った制御プログラムを情報処理装置のプロ
グラムメモリに格納し、この制御プログラムを用いてC
PU等の制御を行うことにより、命令バスにおける消費
電力を低減させることが可能となる。
【0115】(実施例5)次に、実施例5として、第5
の発明の一実施例(請求項9に対応する)について説明
する。
【0116】本実施例では、1種類の動作を行うための
実現方法が複数ある場合に、作動する機能ブロックが小
さく、消費電力が小さくなるなるように、その実現方法
に係わる命令を置き換える。すなわち、データ線のばら
つき、使用する機能ブロックの消費電力などを考慮し、
総合的な消費電力が最小となるように、命令の置き換え
を行う。置き換えの方法としては、上述の実施例4の場
合と同様、ライブラリを使用することができる。例え
ば、レジスタ0x0dにデータ“0”を書き込む場合、
採用する命令と使用する機能ブロックとの関係は、表1
のようになる。これらの命令のうちで、消費電力が最も
小さくなるものを選択して、その命令を置き換えること
とする。
【0117】
【表1】 次に、本実施例の命令列最適化装置の具体的な例につい
て、図25を用いて説明する。
【0118】図25は、本実施例の命令列最適化装置が
行う最適化処理の手順を説明するためのフローチャート
である。
【0119】まず、高級言語或いはアセンブリ言語で作
製されたソース・プログラムをコンパイルし、さらに他
の最適化処理を施すことにより、中間コード(アセンブ
リ・コード)を作製する(ステップS2501)。
【0120】次に、各命令について、本実施例を適用す
る命令であるか否か、すなわちライブラリに置き換え候
補が登録されている命令であるか否かを、判断する(ス
テップS2502)。
【0121】そして、本実施例を適用する命令であると
判断された場合は、ライブラリの検索を行って、置換が
可能な命令を選出する(ステップS2503)。また、
このとき、命令動作を解析して同等の命令を生成するこ
ととしてもよい。
【0122】さらに、本実施例を適用する命令およびラ
イブラリで検索された命令について、消費電力を試算す
る。そして、各算出結果を互いに比較することによっ
て、消費電力が最低となるような命令を選択する(ステ
ップS2504)。
【0123】命令の置換が終了すると、続いて、すべて
のデータについて最適化が終了したか否かを判定する
(ステップS2505)。そして、最適化が終了してい
ないデータが残っている場合には、そのデータについて
ステップS2503〜S2505を実行する。一方、す
べてのデータについて最適化が終了している場合には、
最適化処理後のプログラムを出力し、最適化処理を終了
する。
【0124】本実施例によれば、以上説明したようにし
て最適化を行った制御プログラムを情報処理装置のプロ
グラムメモリに格納し、この制御プログラムを用いてC
PU等の制御を行うことにより、命令バスにおける消費
電力を低減させることが可能となる。
【0125】
【発明の効果】以上詳細に説明したように、本発明によ
れば、情報処理装置用制御プログラムの作成段階で消費
電力を低減させるための最適化処理を行うことができ
る、命令列最適化装置を提供することができる。
【図面の簡単な説明】
【図1】実施例1の概念を概略的に示すフローチャート
である。
【図2】図1を具体化した例を示すフローチャートであ
る。
【図3】実施例1に係わる命令列最適化装置で最適化さ
れるプログラムの一例を示す図である。
【図4】図3に示したプログラムをコンパイルしたアセ
ンブリ・ソース・プログラムリストを示す図である。
【図5】図3に示したプログラムをコンパイルしたアセ
ンブリ・ソース・プログラムリストを示す図である。
【図6】図3に示したプログラムをコンパイルしたアセ
ンブリ・ソース・プログラムリストを示す図である。
【図7】図3に示したプログラムをコンパイルしたアセ
ンブリ・ソース・プログラムリストを示す図である。
【図8】図3における基本ブロックの依存関係の解析結
果を示す有向グラフである。
【図9】図3における基本ブロックの依存関係の解析結
果を示す有向グラフである。
【図10】図3における基本ブロックのビット・パター
ンを示す図である。
【図11】実施例1による最適化処理後のビット・パタ
ーンを示す図である。
【図12】実施例1による最適化処理の効果を説明する
ためのビット・パターンを示す参考図である。
【図13】実施例1の変形例を説明するためのフローチ
ャートである。
【図14】(a)、(b)ともに、実施例1で最適化さ
れたプログラムを使用する装置の一構成例を示す概念図
である。
【図15】(a)、(b)ともに図14に示した装置で
使用するプログラムのビット・パターンを示す図であ
る。
【図16】(a)は実施例1で最適化されたプログラム
を使用する装置の一構成例を示す概念図、(b)は
(a)に示した装置で使用するプログラムのビット・パ
ターンを示す図である。
【図17】実施例1で最適化されたプログラムを使用す
る装置の一構成例を示す概念図である。
【図18】実施例2の命令列最適化装置が行う最適化処
理の手順を説明するためのフローチャートである。
【図19】(a)は実施例2の命令列最適化装置が行う
最適化処理で使用する中間コードのプログラム例を示す
図、(b)は(a)のプログラムを最適化した結果を示
す図である。
【図20】図19(a)に示したプログラムの有効範囲
テーブルを示す図である。
【図21】実施例3の命令列最適化装置が行う最適化処
理の手順を説明するためのフローチャートである。
【図22】実施例3の最適化処理を“add”命令につ
いて行ったプログラムを示す図である。
【図23】実施例4の命令列最適化装置が行う最適化処
理の手順を説明するためのフローチャートである。
【図24】(a)は実施例4による最適化を行う前のプ
ログラムの一例を示す図、(b)は(a)のプログラム
を最適化した後のプログラムを示す図である。
【図25】実施例5の命令列最適化装置が行う最適化処
理の手順を説明するためのフローチャートである。
【図26】携帯型情報処理装置の制御部の概略構成を示
すブロック図である。
【符号の説明】
2610 CPU 2611 実行ユニット 2612 入出力部 2613 レジスタ部 2620 プログラムメモリ 2621 記憶部 2631 アドレスバス 2632 命令バス

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】プログラムを記憶するプログラムメモリと
    このプログラムメモリから命令バスを介して前記プログ
    ラムを取り込む演算処理部とを備えた情報処理装置が使
    用するための前記プログラムを最適化する命令列最適化
    装置において、 前記プログラムを構成する各命令について、相互の依存
    関係を解析する命令列解析手段と、 この命令列解析手段で解析された依存関係に影響を与え
    ない範囲で前記命令の順序を変更することによって、こ
    の命令を前記プログラムメモリから前記演算処理部に転
    送する際に前記命令バスに現れるビット列間のハミング
    距離を低減させる命令列変更手段と、 を備えたことを特徴とする命令列最適化装置。
  2. 【請求項2】前記プログラムを基本ブロックに分割して
    分割後の基本ブロックを前記命令列解析手段に送るブロ
    ック分割手段をさらに備えたことを特徴とする請求項1
    記載の命令列最適化装置。
  3. 【請求項3】前記ブロック内命令列変更手段が、直前に
    命令順序決定処理を行った基本ブロックの最後の前記ビ
    ット列と今回命令順序決定処理を行う基本ブロックの最
    初の前記ビット列との間のハミング距離を考慮して、こ
    のブロック内での命令順序決定処理を行うことを特徴と
    する請求項2記載の命令列最適化装置。
  4. 【請求項4】前記命令が、前記演算処理部によって前記
    プログラムが実行される際に考慮されない前記ビット列
    を含む場合に、このビット列に前後するビット列とのハ
    ミング距離が低減されるように、このビット列の信号値
    を変更することを特徴とする請求項1〜3のいずれかに
    記載の命令列最適化装置。
  5. 【請求項5】データを一時的に記憶する複数のレジスタ
    と、プログラムを記憶するプログラムメモリと、このプ
    ログラムメモリから命令バスを介して取り込んだ命令に
    したがって前記レジスタに対するデータの書き込み/読
    み出しを行う演算処理部とを備えた情報処理装置が使用
    するためのプログラムを最適化する命令列最適化装置に
    おいて、 前記プログラムを構成する各命令中ののレジスタ番号を
    認識するレジスタ番号認識手段と、 このレジスタ番号認識手段で認識された前記レジスタ番
    号の有効範囲を認識するレジスタ有効範囲認識手段と、 このレジスタ有効範囲認識手段が認識した前記有効範囲
    に影響を与えない範囲で前記レジスタ番号を変更するこ
    とによって、このレジスタ番号を含む命令を前記プログ
    ラムメモリから前記演算処理部に転送する際に前記命令
    バスに現れるビット列間のハミング距離を低減させる命
    令列変更手段と、 を備えたことを特徴とする命令列最適化装置。
  6. 【請求項6】前記命令列変更手段が、 前記レジスタ番号認識手段が認識した各レジスタ番号に
    ついて、前記レジスタ有効範囲認識手段が認識した前記
    有効範囲に影響を与えることなく置き換えることができ
    るレジスタ番号を策定する策定手段と、 前記レジスタ番号認識手段が認識したレジスタ番号およ
    び前記策定手段が策定したレジスタ番号のうち、前記命
    令バスに現れるビット列間のハミング距離が最も小さく
    なるレジスタ番号を選択する選択手段と、 前記プログラム中のレジスタ番号を前記選択手段が選択
    したレジスタ番号と置き換える置換手段と、 を備えたことを特徴とする請求項5記載の命令列最適化
    装置。
  7. 【請求項7】プログラムを記憶するプログラムメモリと
    このプログラムメモリから命令バスを介して前記プログ
    ラムを取り込む演算処理部とを備えた情報処理装置が使
    用するための前記プログラムを最適化する命令列最適化
    装置において、 前記プログラムを構成する各命令の一部または全部につ
    いて、同じ命令を意味する他のビットパターンを記憶す
    る記憶手段と、 前記プログラム中の命令を前記記憶手段に記憶されたビ
    ットパターンに置換えることによって、この命令を前記
    プログラムメモリから前記演算処理部に転送する際に前
    記命令バスに現れるビット列間のハミング距離を低減さ
    せる命令列変更手段と、 を備えたことを特徴とする命令列最適化装置。
  8. 【請求項8】プログラムを記憶するプログラムメモリと
    このプログラムメモリから命令バスを介して前記プログ
    ラムを取り込む演算処理部とを備えた情報処理装置が使
    用するための前記プログラムを最適化する命令列最適化
    装置において、 前記プログラム中の命令または命令列について、同じ処
    理結果を得ることができる他の命令または命令列を選定
    する選定手段と、 前記プログラム中の命令または命令列を前記選定手段で
    選定された命令または命令列と置換えることによって、
    この命令または命令列を前記プログラムメモリから前記
    演算処理部に転送する際に前記命令バスに現れるビット
    列間のハミング距離を低減させる命令列変更手段と、 を備えたことを特徴とする命令列最適化装置。
  9. 【請求項9】プログラムを記憶するプログラムメモリと
    このプログラムメモリから命令バスを介して前記プログ
    ラムを取り込む演算処理部とを備えた情報処理装置が使
    用するための前記プログラムを最適化する命令列最適化
    装置において、 前記プログラム中の命令または命令列について、同じ処
    理結果を得ることができる他の命令または命令列を選定
    する選定手段と、 前記プログラム中の命令または命令列および前記選定手
    段で選定された命令または命令列について、これらの命
    令または命令列を前記プログラムメモリから前記演算処
    理部に転送する際の前記命令バスにおける消費電力を試
    算する演算手段と、 前記選定手段で選定された命令または命令列のうち、前
    記演算手段で試算された消費電力が前記プログラム中の
    命令または命令列よりも小さいものを、このプログラム
    中の命令または命令列と置換える命令列変更手段と、 を備えたことを特徴とする命令列最適化装置。
JP26139494A 1994-09-30 1994-09-30 命令列最適化装置 Expired - Fee Related JP3392545B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP26139494A JP3392545B2 (ja) 1994-09-30 1994-09-30 命令列最適化装置
US08/536,180 US5790874A (en) 1994-09-30 1995-09-29 Information processing apparatus for reducing power consumption by minimizing hamming distance between consecutive instruction

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP26139494A JP3392545B2 (ja) 1994-09-30 1994-09-30 命令列最適化装置

Publications (2)

Publication Number Publication Date
JPH08101777A true JPH08101777A (ja) 1996-04-16
JP3392545B2 JP3392545B2 (ja) 2003-03-31

Family

ID=17361259

Family Applications (1)

Application Number Title Priority Date Filing Date
JP26139494A Expired - Fee Related JP3392545B2 (ja) 1994-09-30 1994-09-30 命令列最適化装置

Country Status (1)

Country Link
JP (1) JP3392545B2 (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6725450B1 (en) 1999-06-21 2004-04-20 Matsushita Electric Industrial Co., Ltd. Program conversion apparatus, processor, and record medium
US6775787B2 (en) * 2002-01-02 2004-08-10 Intel Corporation Instruction scheduling based on power estimation
JP2005196729A (ja) * 2003-12-10 2005-07-21 Renesas Technology Corp コンパイラおよび命令コード出力装置
US6938248B2 (en) 2001-05-18 2005-08-30 Renesas Technology Corp. Program preparation apparatus
JP2006004123A (ja) * 2004-06-17 2006-01-05 Nec Electronics Corp 最適化装置、最適化方法及びプログラム
US7076775B2 (en) * 2001-07-28 2006-07-11 At&T Laboratories Cambridge Ltd. Power efficiency in microprocessor systems
US7107586B2 (en) 2000-08-07 2006-09-12 Matsushita Electric Industrial Co., Ltd. Intermediate object linking method and unit
US7111177B1 (en) * 1999-10-25 2006-09-19 Texas Instruments Incorporated System and method for executing tasks according to a selected scenario in response to probabilistic power consumption information of each scenario
JP2006286027A (ja) * 2006-07-28 2006-10-19 Matsushita Electric Ind Co Ltd コンパイラ装置およびコンパイル方法
US7386844B2 (en) 2003-01-28 2008-06-10 Matsushita Electric Industrial Co., Ltd. Compiler apparatus and method of optimizing a source program by reducing a hamming distance between two instructions
US9229507B1 (en) * 2012-03-20 2016-01-05 Google Inc. Managing data center power usage
JPWO2021255926A1 (ja) * 2020-06-19 2021-12-23

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6725450B1 (en) 1999-06-21 2004-04-20 Matsushita Electric Industrial Co., Ltd. Program conversion apparatus, processor, and record medium
US7111177B1 (en) * 1999-10-25 2006-09-19 Texas Instruments Incorporated System and method for executing tasks according to a selected scenario in response to probabilistic power consumption information of each scenario
US7107586B2 (en) 2000-08-07 2006-09-12 Matsushita Electric Industrial Co., Ltd. Intermediate object linking method and unit
US6938248B2 (en) 2001-05-18 2005-08-30 Renesas Technology Corp. Program preparation apparatus
US7076775B2 (en) * 2001-07-28 2006-07-11 At&T Laboratories Cambridge Ltd. Power efficiency in microprocessor systems
US6775787B2 (en) * 2002-01-02 2004-08-10 Intel Corporation Instruction scheduling based on power estimation
US7386844B2 (en) 2003-01-28 2008-06-10 Matsushita Electric Industrial Co., Ltd. Compiler apparatus and method of optimizing a source program by reducing a hamming distance between two instructions
JP2005196729A (ja) * 2003-12-10 2005-07-21 Renesas Technology Corp コンパイラおよび命令コード出力装置
JP2006004123A (ja) * 2004-06-17 2006-01-05 Nec Electronics Corp 最適化装置、最適化方法及びプログラム
JP2006286027A (ja) * 2006-07-28 2006-10-19 Matsushita Electric Ind Co Ltd コンパイラ装置およびコンパイル方法
JP4721975B2 (ja) * 2006-07-28 2011-07-13 パナソニック株式会社 コンパイラ装置およびコンパイル方法
US9229507B1 (en) * 2012-03-20 2016-01-05 Google Inc. Managing data center power usage
JPWO2021255926A1 (ja) * 2020-06-19 2021-12-23

Also Published As

Publication number Publication date
JP3392545B2 (ja) 2003-03-31

Similar Documents

Publication Publication Date Title
US5790874A (en) Information processing apparatus for reducing power consumption by minimizing hamming distance between consecutive instruction
JP4745341B2 (ja) 依存性チェーン処理のためのシステム、方法及び装置
JP3896087B2 (ja) コンパイラ装置およびコンパイル方法
JP3392545B2 (ja) 命令列最適化装置
JPH07234792A (ja) コンパイル処理装置
JPH04322329A (ja) 多機種対応型情報処理システム、および、方法
JP2005216177A (ja) コンフィグラブル・プロセッサの設計装置、設計方法、ライブラリの最適化方法、プロセッサ、及びプロセッサを備えた半導体装置の製造方法
Rawat et al. Resource conscious reuse-driven tiling for GPUs
JP2015201119A (ja) コンパイルプログラム、コンパイル方法およびコンパイル装置
JP5392689B2 (ja) バイ・エンディアンコンパイラを用いたコードの最適化
US8935512B2 (en) Instruction operation code generation system
Huang et al. The design of dynamically reconfigurable datapath coprocessors
GB2394085A (en) Generating code for a configurable microprocessor
Choi et al. Address assignment combined with scheduling in DSP code generation
US7120905B2 (en) System and method for transformation of assembly code for conditional execution
CN114546401A (zh) 基于循环折叠的二进制程序体积优化器
Chang et al. Efficient exploitation of instruction-level parallelism for superscalar processors by the conjugate register file scheme
Leupers et al. Retargetable compilers and architecture exploration for embedded processors
van Engelen et al. Automatic validation of code-improving transformations on low-level program representations
JP4721975B2 (ja) コンパイラ装置およびコンパイル方法
KR100829167B1 (ko) 소프트웨어 파이프라이닝의 데이터 의존도 완화 방법
JPH1196018A (ja) コンパイル装置及び方法並びにコンパイル実行プログラムを記録したコンピュータ読み取り可能な記録媒体
JP3542538B2 (ja) プログラム最適化処理装置及びプログラム最適化方法
JP2003067195A (ja) 最適化コンパイル方法及び最適化コンパイル装置
JP4006887B2 (ja) コンパイラ、プロセッサおよび記録媒体

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080124

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090124

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100124

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees