JPH09114676A - マイクロコンピュータ用プログラム変換方法及びそのプログラムを用いたマイクロコンピュータ - Google Patents

マイクロコンピュータ用プログラム変換方法及びそのプログラムを用いたマイクロコンピュータ

Info

Publication number
JPH09114676A
JPH09114676A JP7268912A JP26891295A JPH09114676A JP H09114676 A JPH09114676 A JP H09114676A JP 7268912 A JP7268912 A JP 7268912A JP 26891295 A JP26891295 A JP 26891295A JP H09114676 A JPH09114676 A JP H09114676A
Authority
JP
Japan
Prior art keywords
program
address
instruction
microcomputer
hamming distance
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
JP7268912A
Other languages
English (en)
Other versions
JP2738365B2 (ja
Inventor
Toshio Enomoto
敏雄 榎本
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP7268912A priority Critical patent/JP2738365B2/ja
Priority to US08/729,853 priority patent/US5854935A/en
Priority to KR1019960046585A priority patent/KR100248134B1/ko
Publication of JPH09114676A publication Critical patent/JPH09114676A/ja
Application granted granted Critical
Publication of JP2738365B2 publication Critical patent/JP2738365B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30156Special purpose encoding of instructions, e.g. Gray coding
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 シングルチップマイクロコンピュータシステ
ムにおける低ノイズや低消費電流に関するきびしい性能
要求を実現する。 【解決手段】 ステップS13で仮配置を行った後に、
最適化コンパイラはステップS14で仮配置したプログ
ラム列の各命令のアドレスと次実行アドレスとのハミン
グ距離を算出する。最適化コンパイラはステップS15
で仮配置されたプログラム列においてアドレス距離が予
め設定された所定数未満の局所が最適化されたか否かを
判定し、最適化されていなければステップS16でその
命令に対して分岐条件等の変更処理を行う。最適化コン
パイラはステップS17で仮配置されたプログラム列に
おいてアドレス距離が所定数以上の大所が最適化された
か否かを判定し、最適化されていなければ、ステップS
18でプログラムモジュールの配置換えを行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はマイクロコンピュー
タ用プログラム変換方法及びそのプログラムを用いたマ
イクロコンピュータに関し、特にグレイコードを用いた
アドレッシングに適したマイクロコンピュータ用プログ
ラムの変換方法及びそのプログラムを用いたマイクロコ
ンピュータに関する。
【0002】
【従来の技術】グレイコード(gray code)と
は相前後するデータの相違が1ビットのコードで、摺動
子を用いた位置デコーダ等に用いられている。これはコ
ードの切換りが1ビットの変化であるため、変移点近傍
のコードの表す値が変化の直前または直後の値のどちら
かで、それ以外の値をとらないという特長がある。
【0003】上記のグレイコードのマイクロコンピュー
タシステムへの適用例としては、グレイコードを汎用マ
イクロコンピュータの外部メモリへのアドレス信号に用
いる方法がある。この方法については、特開平5−25
0269号公報に詳述されている。
【0004】上記の方法では、メモリのアドレス信号に
ハミング距離(hamming’sdistance)
が「1」のグレイコードを用いてそのメモリへのアクセ
スを行っている。
【0005】この方法は、メモリの連続する番地をアク
セスする場合にアドレス信号の同時に変化するビット数
を少なくすることで、アドレス切換え時の電流変化に伴
う電源ノイズを低減し、信号線間のクロストーク(cr
osstalk)を低減している。
【0006】図14は従来のマイクロコンピュータの構
成を示す図である。マイクロコンピュータ2は、図に示
すように、バッファ21と、ALU(arithmet
icand logic unit)22と、レジスタ
群23と、アドレス出力部24と、命令レジスタ25
と、命令デコーダ26とから構成されている。
【0007】バッファ21はデータバス201で外部に
接続され、アドレス出力部24はアドレスバス202で
外部に接続され、命令デコーダ26はコントロールバス
200で外部に接続されている。
【0008】一方、マイクロコンピュータ2内部では内
部バス203によってバッファ21と、ALU22と、
レジスタ群23と、命令レジスタ25とが夫々相互に接
続されている。ここで、命令デコーダ26はコントロー
ルバス200を介して入力される命令や命令レジスタ2
5を介して入力される命令をデコードし、CPU(中央
処理装置)制御信号を出力している。
【0009】上記のメモリに対するアドレッシングで
は、アドレス出力部24からアドレスバス202を介し
て外部メモリ(図示せず)に出力されるアドレスにグレ
イコードが用いられており、そのアドレスによって外部
メモリへのアクセスが行われている。
【0010】
【発明が解決しようとする課題】上述した従来のマイク
ロコンピュータシステムでは、メモリのアドレッシング
を単にグレイコードにしているので、マイクロプロセッ
サ外の二次キャッシュへのアクセスや、さらにその外の
主記憶装置へのアクセス等の連続するアドレス空間に配
置されたデータへのアクセスに対して大きな効果があ
る。
【0011】しかしながら、その他の場合にはアドレス
が飛ぶので、つまり次に実行される命令の入っているア
ドレスとその直前の実行アドレスとの間に2ビット以上
のビット変化を伴う可能性が高いので、ビット変化によ
るクロストークや電源変化によるノイズの低減には十分
な効果がない。
【0012】さらに上記のマイクロコンピュータシステ
ムでは、マイクロプロセッサ内のメモリへのランダムア
クセスがLSI(大規模集積回路)内部に限定されるも
のとしてクロストークや電源ノイズの主原因でないとし
て容認している。
【0013】このマイクロコンピュータシステムでは、
マイクロプロセッサ内部に一次キャッシュを持ち、外部
に二次キャッシュや主記憶を持つようなマルチチップマ
イクロコンピュータだけでなく、マイクロプロセッサ内
部に主記憶やI/O(入出力)装置、システムクロック
発生回路をも取込んだシングルチップマイクロコンピュ
ータというシステムもある。
【0014】このシングルチップマイクロコンピュータ
システムでは1個の半導体チップ上に構成できる回路規
模の限界や製造コスト増のために、マルチチップマイク
ロコンピュータシステムで採られているメモリの階層化
を行うことができない。
【0015】また、一般に、マイクロコンピュータシス
テムの動作を記述しているプログラムの1/3は分岐命
令であることが知られており、これを考慮すると、シン
グルチップマイクロコンピュータシステムでは連続した
メモリブロックへのアクセスがほとんど起こらないと言
える。
【0016】上記のシングルチップマイクロコンピュー
タシステムはマルチチップマイクロコンピュータシステ
ムに比べて高速性が要求されることはないが、低ノイズ
や低消費電流に関する性能要求がマルチチップマイクロ
コンピュータシステムに比べて数十倍から数百倍もきび
しい。
【0017】そこで、本発明の目的は上記の問題点を解
消し、シングルチップマイクロコンピュータシステムに
おける低ノイズや低消費電流に関するきびしい性能要求
を実現することができるマイクロコンピュータ用プログ
ラム変換方法及びそのプログラムを用いたマイクロコン
ピュータを提供することにある。
【0018】
【課題を解決するための手段】本発明によるマイクロコ
ンピュータ用プログラム変換方法は、ソースプログラム
の構文解析の結果に応じて仮配置を行って実行すべきオ
ブジェクトプログラムに変換するマイクロコンピュータ
用プログラム変換方法であって、仮配置されたプログラ
ム列の各命令のアドレス相互のハミング距離を算出する
工程と、アドレス距離が予め設定された所定値未満の局
所に該当する命令の少なくとも分岐条件を変更して当該
命令のハミング距離を最適化する工程と、前記アドレス
距離が前記所定値以上の大所に該当する命令のプログラ
ムモジュールの配置換えを行って当該命令のハミング距
離を最適化する工程とを備えている。
【0019】本発明によるマイクロコンピュータは、ソ
ースプログラムの構文解析の結果に応じて仮配置を行っ
て変換されるオブジェクトプログラムを実行するマイク
ロコンピュータであって、仮配置されたプログラム列の
各命令のアドレス相互のハミング距離が最適化された前
記オブジェクトプログラムを格納する格納手段と、前記
オブジェクトプログラムの実行時に前記ハミング距離が
最適化されたアドレスを順次生成するアドレス生成手段
とを備えている。
【0020】
【発明の実施の形態】まず、本発明の作用について以下
に述べる。
【0021】最適化コンパイラでソースプログラムから
オブジェクトプログラムに変換する際に、ハミング距離
が大きくなっている部分のアドレス距離が所定値未満の
局所及びアドレス距離が所定値以上の大所においてハミ
ング距離「1」となるように最適化することによって、
変換されたオブジェクトプログラムでマイクロコンピュ
ータを動かす時にプログラムの実行が連続したアドレス
でなくとも、最小のハミング距離「1」で順次実行可能
となる。
【0022】よって、階層化されたメモリを持たないシ
ングルチップマイクロコンピュータにおいてもアドレス
信号の変化に伴う電源ノイズやクロストークを低減する
ことが可能となる。
【0023】さらに、グレイコードアドレッシングは2
進符号によるアドレッシングに比べて最も速く変化する
ビットの変化速度が1/2であるので、シングルチップ
マイクロコンピュータとしてきびしい性能が要求されて
いる不用輻射が減り、アドレス変化に伴う電荷移動量が
減るため、消費電流も減らすことが可能となる。
【0024】次に、本発明の一実施例について図面を参
照して説明する。図1〜図3は本発明の一実施例の動作
を示すフローチャートであり、図4は図3の分岐条件等
の変更処理を示すフローチャートである。これら図1〜
図4を用いて本発明の一実施例の動作について説明す
る。
【0025】本発明の一実施例による最適化コンパイラ
はソースプログラムを、中間コード変換と変数及びレー
ベル(label)の登録とを行うパスと、仮配置を行
うパスと、実アドレス確定及びオブジェクトコード生成
を行うパスとによってオブジェクトに変換する。
【0026】すなわち、最適化コンパイラはソースプロ
グラムを読込むと(図1ステップS1)、その読込み先
から1行文のデータを読出し(図1ステップS2)、そ
のデータに対して構文解析を行う(図1ステップS
3)。
【0027】最適化コンパイラは構文解析の結果に応じ
て場合分けを行い(図1ステップS4)、解析結果がコ
メントであればコメントデータを削除し(図1ステップ
S5)、解析結果がレーベルであればそのレーベル名を
レーベルテーブル(図示せず)に登録する(図1ステッ
プS6)。
【0028】また、最適化コンパイラは解析結果が命令
であればその命令を中間コードに変換し(図1ステップ
S7)、解析結果が変数であればその変数名を変数テー
ブル(図示せず)に登録する(図1ステップS8)。
【0029】最適化コンパイラはソースプログラムの読
込み先のデータがなくなるまで(図1ステップS9)、
上記のデータに対する構文解析と中間コード変換と変数
及びレーベルの登録とを繰返し行う(図1ステップS2
〜S8)。
【0030】最適化コンパイラはソースプログラムの読
込み先の全てのデータに対して構文解析と中間コード変
換と変数及びレーベルの登録とが終了すると、分岐命令
を抽出し(図2ステップS10)、変数テーブル参照及
びレーベルテーブル参照を行って(図2ステップS1
1,S12)、仮配置を行う(図2ステップS13)。
この後に、最適化コンパイラは仮配置したプログラム列
の各命令のアドレスと次実行アドレスとのハミング距離
を算出する(図2ステップS14)。
【0031】最適化コンパイラはハミング距離を算出す
ると、仮配置されたプログラム列において、そのアドレ
ス距離が予め設定された所定数未満の局所が最適化され
たか否かを判定する(図2ステップS15)。
【0032】局所が最適化されていなければ、最適化コ
ンパイラは局所に該当する命令に対して分岐条件等の変
更処理を行う(図2ステップS16)。すなわち、最適
化コンパイラはその局所において分岐条件の変更が終了
しているか否かを判定する(図4ステップS31)。
【0033】最適化コンパイラは分岐条件の変更が終了
していなければ、分岐条件を変更し(図4ステップS3
2)、ステップS13に戻って仮配置を行う。この場
合、例えば分岐条件が「A>B」であれば、「A=B」
というように分岐条件を変更する。
【0034】最適化コンパイラは分岐条件の変更が終了
していれば、その局所において構文の変更が終了してい
るか否かを判定する(図4ステップS33)。最適化コ
ンパイラは構文の変更が終了していなければ、構文を等
価な構文に変更し(図4ステップS34)、ステップS
13に戻って仮配置を行う。この場合、例えば構文が
「if then構文」であれば、それに等価な「wh
ile untill構文」に変更する。
【0035】最適化コンパイラは構文の変更が終了して
いれば、その局所において命令の挿入が終了しているか
否かを判定する(図4ステップS35)。最適化コンパ
イラは命令の挿入が終了していなければ、その局所に該
当する命令の後にNOP命令等を挿入し(図4ステップ
S36)、ステップS13に戻って仮配置を行う。
【0036】局所が最適化されると、最適化コンパイラ
は仮配置されたプログラム列において、そのアドレス距
離が予め設定された所定数以上の大所が最適化されたか
否かを判定する(図2ステップS17)。
【0037】大所が最適化されていなければ、最適化コ
ンパイラはプログラムモジュールの配置換えを行い(図
2ステップS18)、ステップS13に戻って仮配置を
行う。
【0038】大所が最適化されると、最適化コンパイラ
はすべての最適化が終了したかを判定し(図2ステップ
S19)、すべての最適化が終了していなければステッ
プS13に戻って仮配置を行う。
【0039】また、すべての最適化が終了していれば、
最適化コンパイラは変更内容を基にレーベルテーブルの
変更を行い(図3ステップS20)、実アドレスを算出
し(図3ステップS21)、中間コードからオブジェク
トコードを生成して出力する(図3ステップS22,S
23)。
【0040】上記のようにしてソースプログラムから変
換されたオブジェクトプログラムをマイクロコンピュー
タ(図示せず)で実行した場合、ハミング距離が大きく
なる分岐部分にハミング距離の最適化処理(ハミング距
離=1とする処理)が施してあるので、プログラムの実
行が連続したアドレスでなくとも最小のハミング距離で
順次実行することができる。
【0041】図5は本発明の一実施例によるマイクロコ
ンピュータの構成を示すブロック図である。図におい
て、マイクロコンピュータ1はROM(リードオンリメ
モリ)11と、命令デコーダ12と、グレイコードアド
レスカウンタ13と、システムコントローラ14と、A
LU(arithmetic and logic u
nit)15と、RAM(ランダムアクセスメモリ)1
6と、I/O(入出力回路)17とから構成されてい
る。
【0042】ROM11には上記の処理で変換されたオ
ブジェクトプログラムが格納されており、そのオブジェ
クトプログラムの各命令は命令バス103を介して命令
デコーダ12に出力される。
【0043】命令デコーダ12はROM11からの命令
をデコードし、デコーデッド信号をデコーデッド信号線
104を介してグレイコードアドレスカウンタ13とシ
ステムコントローラ14とALU15とに出力する。
【0044】グレイコードアドレスカウンタ13は命令
デコーダ12からのデコーデッド信号を基にグレーコー
ドを生成し、そのグレイコードでアドレスバス101を
介してROM11とRAM16とI/O17とを夫々ア
ドレッシングする。また、グレイコードアドレスカウン
タ13からのグレイコードはアドレスバス101を介し
てALU15に供給される。
【0045】システムコントローラ14は命令デコーダ
12からのデコーデッド信号を基にコントロール信号1
05〜107をグレイコードアドレスカウンタ13とA
LU15と他の回路(図示せず)とに夫々出力してシス
テムを制御する。
【0046】ALU15はグレイコードアドレスカウン
タ13からのグレイコードとシステムコントローラ14
からのコントロール信号とを基に演算を行い、演算結果
をアドレスバス101とデータバス102とを介してR
OM11とRAM16とI/O17とに夫々出力する。
【0047】RAM16はアドレスバス101上のアド
レスを基にデータバス102上のデータを記憶し、ある
いはアドレスバス101上のアドレスを基に読出した記
憶データをデータバス102上に出力する。
【0048】I/O17はアドレスバス101上のアド
レスを基にデータバス102上のデータを外部に出力
し、あるいはアドレスバス101上のアドレスを基に外
部から入力したデータをデータバス102上に出力す
る。つまり、I/O17は外部とのデータのやりとりを
行う。
【0049】上記の如く、マイクロコンピュータ1では
その動作がグレイコードアドレスカウンタ13で生成さ
れたグレーコードにしたがって動作するので、プログラ
ムの実行が連続したアドレスでなくとも最小のハミング
距離で順次実行することができる。
【0050】図6はグレイコードアドレッシングにおけ
るアドレスの変化を示す図であり、図7は2進符号によ
るアドレッシングにおけるアドレスの変化を示す図であ
る。ここで、これらの図において便宜的にアドレスの若
い方から順に番号をふり、その番号をシリアルアドレス
と呼ぶことにする。
【0051】グレイコードアドレッシングの場合、図6
に示すように、アドレスは「00000000」→「0
0010000」→「00110000」→「0010
0000」→「01100000」→「0111000
0」→「01010000」→「01000000」→
「11000000」→「11010000」→「11
110000」→「11100000」→「10100
000」→「10110000」→「1001000
0」→「10000000」と変化する。
【0052】これを10進数で見ると、アドレスは
「0」→「16」→「48」→「32」→「96」→
「112」→「80」→「64」→「192」→「20
8」→「240」→「224」→「160」→「17
6」→「144」→「128」と変化する。
【0053】上記の各アドレスとシリアルアドレス10
とのハミング距離は夫々、「4」,「3」,「2」,
「3」,「2」,「1」,「2」,「3」,「2」,
「1」,「0」,「1」,「2」,「1」,「2」,
「3」となる。
【0054】一方、2進符号によるアドレッシングの場
合、図7に示すように、アドレスは「0000000
0」→「00000001」→「00000010」→
「00000011」→「00000100」→「00
000101」→「00000110」→「00000
111」→「00001000」→「0000100
1」→「00001010」→「00001011」→
「00001100」→「00001101」→「00
001110」→「00001111」と変化する。
【0055】これを10進数で見ると、アドレスは
「0」→「1」→「2」→「3」→「4」→「5」→
「6」→「7」→「8」→「9」→「10」→「11」
→「12」→「13」→「14」→「15」と変化す
る。
【0056】上記の各アドレスとシリアルアドレス10
とのハミング距離は夫々、「2」,「3」,「1」,
「2」,「3」,「4」,「2」,「3」,「1」,
「2」,「0」,「1」,「2」,「3」,「1」,
「2」となる。
【0057】今、シリアルアドレス10の位置にいると
すると、グレイコードアドレッシングの場合、シリアル
アドレス10の位置からのハミング距離が遠いものは比
較的遠いシリアルアドレスにあることがわかる。例え
ば、ハミング距離が「4」のシリアルアドレス0はシリ
アルアドレス10から比較的遠いシリアルアドレスとな
る(図6のa参照)。
【0058】これに対して、2進符号によるアドレッシ
ングの場合、シリアルアドレス10の位置からのハミン
グ距離が遠いものでも比較的近いシリアルアドレスにあ
ることがわかる。例えば、ハミング距離が「4」のシリ
アルアドレス5はシリアルアドレス10から比較的近い
シリアルアドレスとなる(図7のb参照)。
【0059】図8はグレイコードアドレッシングにおけ
るシリアルアドレス10(「11110000」)と他
のシリアルアドレスとのハミング距離を示す図であり、
図9はグレイコードアドレッシングにおけるシリアルア
ドレス76(「10100110」)と他のシリアルア
ドレスとのハミング距離を示す図であり、図10はグレ
イコードアドレッシングにおけるシリアルアドレス23
0(「01011001」)と他のシリアルアドレスと
のハミング距離を示す図である。
【0060】図8において、シリアルアドレス10の近
傍は比較的ハミング距離が小さいが、遠くのシリアルア
ドレスにも比較的ハミング距離が小さいところがある。
図9及び図10においても、シリアルアドレス76,2
30の近傍は比較的ハミング距離が小さいが、遠くのシ
リアルアドレスにも比較的ハミング距離が小さいところ
がある。一般に、任意のシリアルアドレスに対しては上
記のような特徴があると言える。
【0061】本発明の一実施例によるマイクロコンピュ
ータ1の動作を記述しているソースプログラムから、実
際に実行するオブジェクトプログラムを生成する最適化
コンパイラにおいては、上述したように、上記のグレイ
コードのアドレスの特徴を十分に生かす処理を行ってい
る。
【0062】例えば、分岐命令がシリアルアドレス10
にある場合、その近傍への局所分岐ならば、ハミング距
離が「1」のシリアルアドレス5,9,11,13,2
0に分岐先が来るように実行順や条件分岐の条件評価を
構文の変更や分岐条件の変更で変更する。
【0063】また、シリアルアドレス10の遠方への大
所分岐ならば、ハミング距離が「1」のシリアルアドレ
ス53,117,245に分岐先が来るように、前後の
プログラムモジュールの配置換えを行う。
【0064】いずれの場合も、実行順や条件分岐の条件
評価の変更、あるいはプログラムモジュールの配置換え
で適当なアドレスに分岐先がこなければ、NOP命令等
をいれて他の適当な分岐先に定まるようにする。このよ
うにして、ハミング距離が「1」となるように最適化さ
れたオブジェクトプログラムはマイクロコンピュータ1
のROM11に書込まれる。
【0065】図11は本発明の一実施例による仮配置出
力のプログラム例を示す図であり、図12は図11のプ
ログラム例に対して局所最適化を行ったプログラムを示
す図であり、図13は図11のプログラム例に対して大
所最適化を行ったプログラムを示す図である。
【0066】これら図11〜図13を用いて本発明の一
実施例によるプログラムの最適化について説明する。
尚、図11〜図13の表記は理解しやすいようにアッセ
ンブラ表記としたが、実際は夫々のコンパイラで用いら
れる中間言語で処理される。このアッセンブラ表記でも
プログラムの最適化の本質は変わらない。
【0067】図11に示すプログラムは最適化以前の仮
配置のプログラムであり、このプログラムの各行毎にア
ドレスのハミング距離を計算したものを左端に示す。そ
のハミング距離を見ると、ブランチ(branch)命
令の部分でハミング距離が大きくなっていることが分か
る。尚、図12に示す局所最適化を行ったプログラム及
び図13に示す大所最適化を行ったプログラムの左端に
も夫々ハミング距離を示してある。
【0068】上記のプログラムに対する最適化処理は、
まずアドレス距離256バイト未満の局所において最適
化を行うために、ハミング距離の大きなブランチ命令の
ある部分に着目し、その処理内容を構文解析する。
【0069】その構文解析の結果、最適化以前の仮配置
のプログラムの前半部分の5行目のプログラムの「if
then」の処理をこれと等価な「while un
till」の処理の構文に置換してハミング距離を計算
し、少ない方(この場合、「while until
l」の処理)を採用している。
【0070】すなわち、 LOOP1: 0002 ADD M01,M01 ;mem01 <− mem01+mem01 0003 DEC M01,#01 ;mem00 <− mem00−#01 0004 SLTI M00,#01 ;if mem00 < #01 then skip 0005 BR LOOP1 ;branch LOOP1 0006 BR NEXT1 ;branch NEXT1 という「if then」の処理を、 LOOP1: 0002 DEC M00,#01 ;mem00 <− mem00−#01 0003 SGEI M00,#00 ;if mem00 ≧ #00 then skip 0004 BR NEXT1 ;branch NEXT1 0005 ADD M01,M01 ;mem01 <− mem01+mem01 0006 BR LOOP1 ;branch LOOP1 という「while untill」の処理に変更して
いる。
【0071】また、最適化以前の仮配置のプログラムの
後半部分はスキップ(skip)命令とブランチ命令と
の組合せ構文となっているが、この構文をそれと等価な
スキップ命令だけの構文に置き換えている。
【0072】すなわち、 NEXT1: 0200 SEGI M01,#10 ;if mem01 ≧ #10 then skip 0201 BR LBL1 ;branch LBL1 0202 OUT PB,#0FFH ;Port B <− #0FFH 0203 BR LBL2 ;branch LBL2 LBL1: 0204 OUT PB,#00H ;Port B <− #00H LBL2: 0205 MOV M01,#00 ;mem01 <− #00 という処理を、 NEXT1: 0200 SEGI M01,#10 ;if mem01 ≧ #10 then skip 0201 OUT PB,#00H ;Port B <− #00H 0202 STLI M01,#10 ;if mem01 < #10 then skip 0203 OUT PB,#0FFH ;Port B <− #0FFH 0204 MOV M01,#00 ;mem01 <− #00 という処理に変更している。
【0073】この場合、スキップ命令の直後の命令はス
キップ条件によりその命令そのものの動作もしくはNO
P動作となるため、アドレス変化のハミング距離「1」
は確保される。上記の変更によって得られるプログラム
が図12に示す局所が最適化されたプログラムである。
【0074】次に、アドレス距離が256バイト以上の
大所について最適化を行う。大所最適化の主な方法はモ
ジュール毎の再配置である。図12に示すプログラムで
ハミング距離が「2」となっていたNEXT1へのブラ
ンチを、NEXT1以下のモジュールをアドレス020
4Hから再配置することによってハミング距離「1」に
最適化している。
【0075】すなわち、 NEXT1: 0200 SEGI M01,#10 ;if mem01 ≧ #10 then skip 0201 OUT PB,#00H ;Port B <− #00H 0202 STLI M01,#10 ;if mem01 < #10 then skip 0203 OUT PB,#0FFH ;Port B <− #0FFH 0204 MOV M01,#00 ;mem01 <− #00 というモジュールを、 NEXT1: 0204 SEGI M01,#10 ;if mem01 ≧ #10 then skip 0205 OUT PB,#00H ;Port B <− #00H 0206 STLI M01,#10 ;if mem01 < #10 then skip 0207 OUT PB,#0FFH ;Port B <− #0FFH 0208 MOV M01,#00 ;mem01 <− #00 というように、アドレス0204Hから再配置してい
る。上記の変更によって得られるプログラムが図13に
示す大所が最適化されたプログラムである。
【0076】このように、最適化コンパイラでソースプ
ログラムからオブジェクトプログラムに変換する際に、
ハミング距離が大きくなっている部分のアドレス距離が
所定値未満の局所及びアドレス距離が所定値以上の大所
においてハミング距離「1」となるように最適化するこ
とによって、変換されたオブジェクトプログラムでマイ
クロコンピュータ1を動かす時にプログラムの実行が連
続したアドレスでなくとも、最小のハミング距離「1」
で順次実行することができる。
【0077】このため、階層化されたメモリを持たない
シングルチップマイクロコンピュータにおいてもアドレ
ス信号の変化に伴う電源ノイズやクロストークを低減す
ることができる。
【0078】さらに、グレイコードアドレッシングは2
進符号によるアドレッシングに比べて最も速く変化する
ビットの変化速度が1/2であるので、シングルチップ
マイクロコンピュータとしてきびしい性能が要求されて
いる不用輻射が減り、アドレス変化に伴う電荷移動量が
減るため、消費電流も減らすことができる。
【0079】
【発明の効果】以上説明したように本発明によれば、ソ
ースプログラムの構文解析の結果に応じて仮配置を行っ
て実行すべきオブジェクトプログラムに変換する際に、
仮配置されたプログラム列の各命令のアドレス相互のハ
ミング距離を算出し、アドレス距離が予め設定された所
定値未満の局所に該当する命令の少なくとも分岐条件を
変更して当該命令のハミング距離を最適化するととも
に、アドレス距離が所定値以上の大所に該当する命令の
プログラムモジュールの配置換えを行って当該命令のハ
ミング距離を最適化することによって、シングルチップ
マイクロコンピュータシステムにおける低ノイズや低消
費電流に関するきびしい性能要求を実現することができ
るという効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例の動作を示すフローチャート
である。
【図2】本発明の一実施例の動作を示すフローチャート
である。
【図3】本発明の一実施例の動作を示すフローチャート
である。
【図4】図3の分岐条件等の変更処理を示すフローチャ
ートである。
【図5】本発明の一実施例によるマイクロコンピュータ
の構成を示すブロック図である。
【図6】グレイコードアドレッシングにおけるアドレス
の変化を示す図である。
【図7】2進符号によるアドレッシングにおけるアドレ
スの変化を示す図である。
【図8】グレイコードアドレッシングにおけるシリアル
アドレス10と他のシリアルアドレスとのハミング距離
を示す図である。
【図9】グレイコードアドレッシングにおけるシリアル
アドレス76と他のシリアルアドレスとのハミング距離
を示す図である。
【図10】グレイコードアドレッシングにおけるシリア
ルアドレス230と他のシリアルアドレスとのハミング
距離を示す図である。
【図11】本発明の一実施例による仮配置出力のプログ
ラム例を示す図である。
【図12】図11のプログラム例に対して局所最適化を
行ったプログラムを示す図である。
【図13】図11のプログラム例に対して大所最適化を
行ったプログラムを示す図である。
【図14】従来例によるマイクロコンピュータの構成を
示すブロック図である。
【符号の説明】
1 マイクロコンピュータ 11 ROM 12 命令デコーダ 13 グレイコードアドレスカウンタ 14 システムコントローラ 15 ALU 16 RAM 17 I/O

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 ソースプログラムの構文解析の結果に応
    じて仮配置を行って実行すべきオブジェクトプログラム
    に変換するマイクロコンピュータ用プログラム変換方法
    であって、仮配置されたプログラム列の各命令のアドレ
    ス相互のハミング距離を算出する工程と、アドレス距離
    が予め設定された所定値未満の局所に該当する命令の少
    なくとも分岐条件を変更して当該命令のハミング距離を
    最適化する工程と、前記アドレス距離が前記所定値以上
    の大所に該当する命令のプログラムモジュールの配置換
    えを行って当該命令のハミング距離を最適化する工程と
    を有することを特徴とするマイクロコンピュータ用プロ
    グラム変換方法。
  2. 【請求項2】 前記ハミング距離の最適化は、前記分岐
    条件を変更する工程と、当該命令の構文をその構文に等
    価な構文に変更する工程と、当該命令の次に所定の命令
    を挿入する工程とのうち少なくとも一つの行程によって
    実行するよう構成したことを特徴とする請求項1記載の
    マイクロコンピュータ用プログラム変換方法。
  3. 【請求項3】 ソースプログラムの構文解析の結果に応
    じて仮配置を行って変換されるオブジェクトプログラム
    を実行するマイクロコンピュータであって、仮配置され
    たプログラム列の各命令のアドレス相互のハミング距離
    が最適化された前記オブジェクトプログラムを格納する
    格納手段と、前記オブジェクトプログラムの実行時に前
    記ハミング距離が最適化されたアドレスを順次生成する
    アドレス生成手段とを有することを特徴とするマイクロ
    コンピュータ。
JP7268912A 1995-10-18 1995-10-18 マイクロコンピュータ用プログラム変換方法及びそのプログラムを用いたマイクロコンピュータ Expired - Fee Related JP2738365B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP7268912A JP2738365B2 (ja) 1995-10-18 1995-10-18 マイクロコンピュータ用プログラム変換方法及びそのプログラムを用いたマイクロコンピュータ
US08/729,853 US5854935A (en) 1995-10-18 1996-10-15 Program transformation system for microcomputer and microcomputer employing transformed program
KR1019960046585A KR100248134B1 (ko) 1995-10-18 1996-10-17 마이크로 컴퓨터용 프로그램 변환장치 및 변환 프로그램을 이용하는 마이크로 컴퓨터

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7268912A JP2738365B2 (ja) 1995-10-18 1995-10-18 マイクロコンピュータ用プログラム変換方法及びそのプログラムを用いたマイクロコンピュータ

Publications (2)

Publication Number Publication Date
JPH09114676A true JPH09114676A (ja) 1997-05-02
JP2738365B2 JP2738365B2 (ja) 1998-04-08

Family

ID=17465003

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7268912A Expired - Fee Related JP2738365B2 (ja) 1995-10-18 1995-10-18 マイクロコンピュータ用プログラム変換方法及びそのプログラムを用いたマイクロコンピュータ

Country Status (3)

Country Link
US (1) US5854935A (ja)
JP (1) JP2738365B2 (ja)
KR (1) KR100248134B1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938248B2 (en) 2001-05-18 2005-08-30 Renesas Technology Corp. Program preparation apparatus

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3494489B2 (ja) * 1994-11-30 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
WO2000038054A1 (fr) * 1998-12-22 2000-06-29 Fujitsu Limited Appareil et procede de generation d'objet d'optimisation
US6665866B1 (en) * 1999-05-28 2003-12-16 Microsoft Corporation Extensible compiler utilizing a plurality of question handlers
JP2001005675A (ja) * 1999-06-21 2001-01-12 Matsushita Electric Ind Co Ltd プログラム変換装置及びプロセッサ
GB2366634B (en) * 2000-09-11 2003-03-12 Lucent Technologies Inc Memory addressing
GB2375695B (en) * 2001-05-19 2004-08-25 At & T Lab Cambridge Ltd Improved power efficency in microprocessors
GB2378538A (en) * 2001-08-10 2003-02-12 At & T Lab Cambridge Ltd Saving power in a pipelined processor/memory system by replacing discarded instructions following a branch by a duplicate of the branch instruction
GB2378537A (en) * 2001-08-10 2003-02-12 At & T Lab Cambridge Ltd Power reduction in microprocessor systems
JP3896087B2 (ja) * 2003-01-28 2007-03-22 松下電器産業株式会社 コンパイラ装置およびコンパイル方法
US20050033576A1 (en) * 2003-08-08 2005-02-10 International Business Machines Corporation Task specific code generation for speech recognition decoding
FR2961922B1 (fr) 2010-06-29 2013-12-13 Flexycore Procede de compilation selective, dispositif et produit programme d'ordinateur correspondant.
US8689200B1 (en) * 2011-01-12 2014-04-01 Google Inc. Method and system for optimizing an executable program by generating special operations for identical program entities
US8683455B1 (en) 2011-01-12 2014-03-25 Google Inc. Method and system for optimizing an executable program by selectively merging identical program entities

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05135187A (ja) * 1991-07-16 1993-06-01 Hitachi Ltd デイジタル信号処理装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05250269A (ja) * 1992-03-04 1993-09-28 Hitachi Ltd メモリアクセス方式および情報処理装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05135187A (ja) * 1991-07-16 1993-06-01 Hitachi Ltd デイジタル信号処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938248B2 (en) 2001-05-18 2005-08-30 Renesas Technology Corp. Program preparation apparatus

Also Published As

Publication number Publication date
KR100248134B1 (ko) 2000-03-15
KR970022741A (ko) 1997-05-30
JP2738365B2 (ja) 1998-04-08
US5854935A (en) 1998-12-29

Similar Documents

Publication Publication Date Title
US8832166B2 (en) Floating point multiplier circuit with optimized rounding calculation
JP2738365B2 (ja) マイクロコンピュータ用プログラム変換方法及びそのプログラムを用いたマイクロコンピュータ
US8738892B2 (en) Very long instruction word (VLIW) computer having efficient instruction code format
US7676783B2 (en) Apparatus for performing computational transformations as applied to in-memory processing of stateful, transaction oriented systems
US7313773B1 (en) Method and device for simulator generation based on semantic to behavioral translation
US8332831B1 (en) Software-to-hardware compiler with symbol set inference analysis
US20040154006A1 (en) Compiler apparatus and compilation method
JPH0778738B2 (ja) ディジタル・コンピュータ・システム
CN1332407A (zh) 用以执行多重指令组的数据处理装置
JPS59501684A (ja) 目的命令ストリ−ムへ殆んど実時間で插入するためのソ−スおよび目的命令ストリ−ムの外部における加速式命令写像
JPS6312029A (ja) 情報処理装置
US5577256A (en) Data driven type information processor including a combined program memory and memory for queuing operand data
US6324639B1 (en) Instruction converting apparatus using parallel execution code
Xie et al. A code decompression architecture for VLIW processors
US6367076B1 (en) Compiling method and memory storing the program code
US6496924B2 (en) Data processing apparatus including a plurality of pipeline processing mechanisms in which memory access instructions are carried out in a memory access pipeline
JPH11272546A (ja) 可変長レジスタ装置
US5504914A (en) Multi-level instruction boosting method using plurality of ordinary registers forming plurality of conjugate register pairs that are shadow registers to each other with different only in MSB
US5742842A (en) Data processing apparatus for executing a vector operation under control of a master processor
US6233732B1 (en) Compiling system using intermediate codes to store a plurality of values
US6230238B1 (en) Method and apparatus for accessing misaligned data from memory in an efficient manner
US6470374B1 (en) Carry look-ahead for bi-endian adder
US7133993B1 (en) Inferring size of a processor memory address based on pointer usage
US5457803A (en) Bit-field logic operation unit
US6430682B1 (en) Reliable branch predictions for real-time applications

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees